19 poin oleh xguru 2020-12-21 | 8 komentar | Bagikan ke WhatsApp

"M1 akan membantu RISC-V sebagai awal dari sebuah pergeseran paradigma, tetapi mungkin bukan dengan cara yang Anda bayangkan"

Tulisan lanjutan dari engineer yang menulis "Mengapa chip M1 begitu cepat?". Memprediksi masa depan RISC-V dari sudut pandang yang menarik.

Faktor performa M1 adalah

  1. Banyak decoder dan eksekusi out-of-order (OoO)

  2. Banyak chip khusus seperti GPU, NPU, DSP

Tulisan ini membahas poin nomor 2, yaitu komputasi heterogeneous (heterogen), dengan lebih rinci.

Chip khusus ini bisa disebut dengan berbagai nama, tetapi di sini semuanya akan disebut sebagai coprocessor (prosesor pendamping) secara umum (atau bisa juga disebut accelerator).

  • Coprocessor bukan tren yang sepenuhnya baru

  • Amiga 1000 yang dirilis pada 1985 juga memiliki coprocessor untuk audio/grafis, dan GPU juga merupakan coprocessor,

TPU (Tensor Processing Unit) milik Google juga merupakan coprocessor yang dioptimalkan untuk machine learning

[ Apa itu coprocessor ]

  • Tidak seperti CPU, coprocessor tidak bisa berdiri sendiri. Menambahkan coprocessor saja tidak membuat sebuah komputer, melainkan hanya prosesor tujuan khusus yang unggul pada tugas tertentu

  • Contoh awalnya adalah 8087 Floating Point Unit (FPU) dari Intel. Intel 8086 unggul dalam perhitungan integer, tetapi kurang baik dalam operasi floating point

  • Operasi floating point bisa diemulasikan dengan perhitungan integer, tetapi lambat. Ini mirip seperti mikroprosesor awal yang hanya bisa melakukan penjumlahan/pengurangan dan tidak bisa melakukan perkalian, sehingga perkalian harus diproses dengan pengulangan penjumlahan beberapa kali

  • Artinya, "perhitungan matematika yang kompleks bisa diproses dengan mengulang hal-hal yang sederhana"

  • Semua coprocessor pada dasarnya melakukan hal yang sama. CPU sebenarnya bisa melakukan pekerjaan coprocessor. Cukup dengan mengulang operasi sederhana

  • Alasan GPU dibutuhkan pada awalnya adalah karena mengulang perhitungan yang sama pada jutaan poligon/piksel membutuhkan waktu sangat lama jika dilakukan CPU

[ Bagaimana data masuk/keluar dari coprocessor ]

  • Semua coprocessor, termasuk mouse/keyboard/screen, GPU/FPU/Neural Engine, pada dasarnya membaca dan menulis data dengan mengakses memori tertentu

  • Pekerjaan ini ditangani oleh device driver sehingga developer software biasa tidak perlu melihatnya

→ Pekerjaan seperti ini dilakukan oleh DMA (Direct Memory Access) controller dan sejenisnya

  • Pada era DOS, di C/C++ dimungkinkan untuk mengakses langsung alamat video memory lewat pointer dan mengubah piksel

  • Coprocessor bekerja dengan cara seperti ini; NPU, GPU, T1, dan lainnya masing-masing memiliki alamat untuk berkomunikasi dengan mereka, dan komunikasi asinkron dimungkinkan

  • CPU lebih dulu menuliskan seluruh perintah yang akan dikirim ke Neural Engine atau GPU ke memori, lalu memberi tahu alamatnya ke Neural Engine/GPU

  • CPU tidak perlu menunggu selama coprocessor memproses perintah dan data tersebut, sehingga interrupt menjadi diperlukan di sini

[ Cara kerja interrupt ]

  • Kartu grafis/network dipasang ke PC dan memiliki interrupt line yang ditetapkan

  • Ini bekerja seperti jalur yang terhubung langsung ke CPU, sehingga saat aktif, CPU menghentikan pekerjaan lain dan menangani interrupt

  • Dalam praktiknya, posisi saat ini dan register disimpan ke memori agar bisa kembali nanti

  • Setelah itu, CPU mencari pekerjaan yang harus dijalankan di interrupt table. Tabel tersebut berisi alamat program yang dijalankan saat interrupt dipicu

  • Bagi programmer, hal ini tidak terlihat dan tampak seperti callback function yang didaftarkan pada event tertentu. Device driver menangani proses tingkat rendah ini

  • Alasan penjelasan ini diberikan adalah karena untuk menggunakan coprocessor, kita perlu memahami apa yang sebenarnya terjadi agar tahu apa saja yang terlibat dalam komunikasi nyata

  • Dengan menggunakan interrupt, banyak hal bisa terjadi secara paralel.

→ Saat CPU terinterupsi oleh mouse, aplikasi bisa mengambil gambar dari kartu jaringan; setelah mouse dipindahkan, CPU mendapatkan koordinat baru dan mengirimkannya ke GPU untuk menggambar kursor mouse di posisi baru. Ketika GPU menggambar kursor mouse, CPU mulai memproses gambar yang diambil dari jaringan

  • Dengan interrupt seperti ini, tugas machine learning yang kompleks bisa dikirim ke Neural Engine pada M1 untuk mengenali wajah dari WebCam. Karena Neural Engine memproses data gambar, komputer dan CPU tetap bisa melakukan pekerjaan lain sambil merespons pengguna

[ Kebangkitan RISC-V ]

  • Pada 2010, laboratorium parallel computing di UC Berkeley berkembang ke arah penggunaan coprocessor yang lebih banyak.

  • Mereka melihat akhir Hukum Moore dari kenyataan bahwa performa tidak lagi bisa ditingkatkan dengan mudah hanya dengan memeras core CPU serbaguna

→ Dibutuhkan coprocessor sebagai hardware khusus

  • Frekuensi clock tidak mudah dinaikkan karena panas dan konsumsi daya

→ Salah satu cara adalah menggunakan banyak decoder dan eksekusi out-of-order (OoO)

→ Lihat tulisan "Mengapa chip M1 begitu cepat?" https://id.news.hada.io/topic?id=3315

[ Anggaran transistor: dipakai untuk core CPU atau untuk coprocessor? ]

  • Menambah hingga 128 core tidak otomatis membuat sistem desktop menjadi lebih efisien

  • Pada awal 1980-an, saat ada anggaran 20.000 transistor, cukup menggunakan 15.000 di antaranya untuk membuat CPU

  • Misalnya CPU melakukan 100 tugas berbeda. Jika membuat coprocessor untuk satu tugas saja membutuhkan 1.000 transistor, maka membuat coprocessor untuk semua tugas akan membutuhkan 100.000 transistor dan melampaui anggaran

[ Strategi berubah ketika transistor menjadi jauh lebih banyak ]

  • Dalam desain awal, fokus harus diberikan pada komputasi serbaguna, tetapi sekarang transistor yang tersedia sangat banyak hingga kita tidak tahu harus digunakan untuk apa semuanya

  • Karena itu, merancang coprocessor menjadi hal besar. Banyak riset dilakukan untuk membuat beragam coprocessor baru

  • Dalam banyak kasus, riset ini harus membangun semuanya dari dasar, dari tahap accelerator yang masih sangat sederhana

  • Tidak seperti CPU, accelerator seperti ini tidak membaca dan memproses semua tahap instruksi, sehingga tidak tahu cara mengakses atau menata memori

  • Solusinya sederhana: menggunakan CPU sederhana sebagai controller

  • Dengan kata lain, seluruh coprocessor disusun sebagai rangkaian accelerator khusus yang dikendalikan oleh CPU sederhana untuk mempercepat tugas tertentu

→ Misalnya, chip seperti Neural Engine/Tensor Processing Unit dapat memanipulasi register besar yang bisa menyimpan matriks

[ RISC-V dibuat khusus untuk mengendalikan accelerator ]

  • Itulah tujuan RISC-V dirancang

  • Ia memiliki set instruksi minimum sekitar 40~50 instruksi untuk tugas CPU umum

→ CPU x86 memiliki 1500 instruksi dalam instruction set-nya

  • Alih-alih instruction set besar yang tetap, RISC-V dirancang dengan konsep extension sebagai pusatnya

  • Karena semua coprocessor berbeda, RISC-V dapat dikonfigurasi dengan core instruction set serta extension instruction set yang dibutuhkan coprocessor

Inilah hal yang ingin dijelaskan tulisan ini

  • M1 dari Apple akan mendorong seluruh industri menuju masa depan yang didominasi coprocessor

  • Dan untuk membuat coprocessor itu, "RISC-V akan menjadi bagian penting dari teka-teki"

[ Keuntungan membuat coprocessor dengan RISC-V ]

  • Membuat chip adalah pekerjaan yang rumit dan mahal

  • Dibutuhkan banyak upaya, mulai dari membangun alat untuk verifikasi chip, menjalankan program pengujian, diagnosis, dan banyak hal lainnya

  • Inilah salah satu nilai menggunakan ARM saat ini. Karena ada ekosistem besar, desain bisa diverifikasi dan diuji

  • Karena itu, memiliki instruction set sendiri bukan ide yang baik

  • RISC-V memiliki standar yang memungkinkan banyak perusahaan membuat alat, sehingga terbentuk ekosistem dan bebannya bisa dibagi antarperusahaan

  • Mengapa tidak memakai ARM yang sudah ada? Karena ARM dibuat sebagai CPU tujuan umum dan memiliki instruction set besar yang tetap

  • Karena permintaan pelanggan dan persaingan dengan RISC-V, ARM juga merilis extension instruction set pada 2019

  • Tetapi masalahnya tetap sama: ARM tidak dirancang untuk tujuan ini sejak awal

→ Seluruh toolchain ARM mengasumsikan implementasi instruction set ARM yang besar

→ Namun coprocessor tidak menginginkan atau membutuhkan instruction set yang besar

→ Coprocessor menginginkan ekosistem alat yang dibangun di atas gagasan set instruksi dasar minimum yang tetap dengan kemampuan extension

  • Mengapa ini bermanfaat bisa dilihat dari penggunaan RISC-V oleh Nvidia

→ GPU besar membutuhkan semacam CPU serbaguna untuk dipakai sebagai controller

→ Mereka membuat dan menggunakan chip bernama FALCON: FAst Logic CONtroller

→ Berbiaya rendah dan efisien

  • Karena RISC-V memiliki instruction set yang kecil dan sederhana, ia mengungguli semua pesaing termasuk ARM

  • Dengan memilih RISC-V, Nvidia dapat membuat chip yang lebih kecil dengan konsumsi daya minimal

  • Dengan mekanisme extension, hanya instruksi yang sesuai kebutuhan kerja yang perlu ditambahkan

[ ARM akan menjadi x86 yang baru ]

  • Ironisnya, kita mungkin akan melihat masa depan di mana Mac dan PC dijalankan oleh ARM

  • Namun hardware kustom di sekitarnya akan diisi oleh coprocessor yang didominasi RISC-V

  • Saat coprocessor semakin umum, jumlah chip RISC-V di atas SoC akan menjadi lebih banyak daripada ARM

  • Masa depan bukan ARM or RISC-V, melainkan ARM and RISC-V

[ ARM akan memimpin pasukan coprocessor RISC-V ]

  • Prosesor ARM serbaguna akan tetap berada di pusat bersama pasukan coprocessor RISC-V yang menangani grafis, kriptografi, kompresi video, machine learning, dan pemrosesan sinyal

  • Profesor David Patterson dari UC Berkeley dan timnya melihat masa depan ini akan datang, lalu menyesuaikan RISC-V agar sangat cocok untuk itu

  • Segala jenis hardware khusus dan microcontroller menunjukkan minat besar pada RISC-V, dan banyak area yang saat ini didominasi ARM pada akhirnya akan menjadi wilayah RISC-V

[ Mengapa tidak memakai RISC-V sebagai CPU utama saja? ]

  • Banyak orang bertanya bagaimana jika ARM diganti sepenuhnya dengan RISC-V

  • Sebagian orang berpendapat instruction set RISC-V yang terlalu sederhana tidak akan mampu memberikan performa tinggi seperti ARM dan x86

  • Tetapi RISC-V sepenuhnya bisa dipakai sebagai prosesor utama, dan performa bukan masalah

→ Hanya saja, dibutuhkan pihak yang mau membuat RISC-V berperforma tinggi seperti ARM

→ Artinya ini mungkin dilakukan, tetapi masalahnya adalah momentum. MacOS dan Windows sudah berjalan di ARM

→ Dalam jangka pendek, Microsoft maupun Apple tidak akan lagi berupaya melakukan transisi hardware lain

8 komentar

 
functor 2020-12-21

Menarik. Terima kasih atas ringkasannya yang bagus.

Sekarang tampaknya akan tiba hari ketika bahkan di sekolah, kelas arsitektur diajarkan berdasarkan ARM atau RISC-V, bukan x86 atau amd64..

 
kunggom 2020-12-21

Dulu pernah ada unggahan di sini tentang kritik terhadap RISC-V dari seorang insinyur yang berasal dari ARM.

https://id.news.hada.io/topic?id=3137

Kalau mengikuti isi di atas, berarti meningkatnya keragaman chip yang mengadopsi RISC-V memang sesuatu yang disengaja.

 
jwstyle 2020-12-21

Ini makin menarik.

Saya jadi penasaran bagaimana Intel dan AMD akan merespons.

 
cloverhearts 2020-12-21

Setahu saya, Tiongkok sepertinya hampir all-in pada RISC-V.. Benar-benar tidak bisa membayangkan bagaimana masa depannya nanti

 
xguru 2020-12-21

Saya juga langsung terpikir soal Tiongkok. Kalau Huawei yang terus mendapat tekanan dari AS maju ke depan dan mencoba membuatnya sebagai CPU utama, kira-kira akan jadi bagaimana ya, hehe

 
kbumsik 2020-12-21

Huawei bukan hanya tidak bisa memakai ARM, tetapi juga tidak bisa memakai TSMC, jadi pada akhirnya rasanya wajar jika pengembangan CPU berkinerja tinggi itu sendiri bisa dibilang sudah gagal. Mungkin lain ceritanya jika untuk perangkat jaringan milik mereka sendiri yang tuntutan performanya tidak setinggi itu.

Namun, karena banyak perusahaan lain menggunakan RISC-V, sepertinya hasil akan muncul dari perusahaan-perusahaan tersebut.

 
xguru 2020-12-22

Ah, saya tidak kepikiran kalau TSMC sendiri yang terhambat. Sepertinya memang akan sulit kecuali SMIC bisa melampaui 7 nm dan membuat proses hingga 5 nm.

 
xguru 2020-12-21

Orang ini benar-benar menulis dengan sangat baik. Saya juga membaca yang ini dengan sangat menarik.

Sudah banyak perkiraan bahwa RISC-V akan menjadi alternatif lain,

namun saya belum pernah memikirkannya dari sudut pandang bahwa dengan cara seperti ini, ia bisa menjadi chip terbaik untuk prosesor pendamping.