Mengapa chip Apple M1 begitu cepat?
(erik-engheim.medium.com)- M1 bukan satu CPU, melainkan keseluruhan sistem yang menempatkan beberapa chip dalam satu paket silikon besar. CPU hanyalah salah satunya
→ SoC (System on a Chip) yang menggabungkan CPU, GPU, memori, controller I/O, dan lain-lain
- Alih-alih memasukkan banyak core serbaguna, M1 memasukkan chip yang dioptimalkan untuk tugas tertentu
→ CPU: menjalankan OS dan aplikasi
→ GPU: menangani pekerjaan grafis, UI aplikasi, game 2D/3D, dan sebagainya
→ ISP (Image Processing Unit): meningkatkan kecepatan pemrosesan gambar
→ DSP (Digital Signal Processor): menangani fungsi yang lebih intensif secara matematis daripada CPU, seperti dekompresi file musik
→ NPU (Neural Processing Unit): mempercepat machine learning, pengenalan suara, pemrosesan kamera, dan sebagainya
→ Video Encoder/Decoder: memproses file/format video dengan daya rendah
→ Secure Enclave - enkripsi, autentikasi, keamanan
→ UMA (Unified Memory Architecture): memungkinkan CPU, GPU, dan core lain saling bertukar informasi dengan cepat
Inilah alasan chip-chip semacam ini sangat unggul untuk pengeditan gambar/video dan encoding video berukuran besar
- Apa yang istimewa dari Unified Memory Architecture (UMA)?
→ Chip terpadu CPU/GPU generasi sebelumnya lambat
Keduanya menggunakan area memori yang berbeda dengan cara yang berbeda pula.
Selain itu, karena GPU menghasilkan panas tinggi, kartu besar dengan kipas pendingin besar biasanya menunjukkan performa tinggi
Namun akibatnya, banyak data harus disalin antar-keduanya sehingga dibutuhkan bus seperti PCIe
→ Unified Memory tidak dialokasikan terpisah untuk CPU/GPU, melainkan dipakai bersama.
Berbeda dari Shared Memory, CPU dan GPU bisa mengaksesnya secara bersamaan, dan cukup bertukar informasi lokasi untuk mengakses data sehingga tidak perlu penyalinan
- Kalau pendekatan SoC ini bagus, kenapa produsen lain tidak melakukannya?
→ Sebenarnya sudah. AMD mulai membuat bentuk APU yang menempatkan CPU/GPU pada die silikon yang sama
→ Namun implementasinya sulit. SoC berarti seluruh komputer diletakkan dalam satu chip, sehingga lebih cocok untuk produsen komputer seperti HP atau Dell
→ Model bisnis Intel dan AMD berbasis CPU serbaguna yang dipasang orang ke motherboard PC,
sedangkan pasar SoC yang baru bukan soal merakit produk fisik dari vendor berbeda, melainkan merakit IP (Intellectual Property)
→ Lalu, apakah Intel, AMD, Nvidia bisa melisensikan IP mereka ke Dell atau HP?
→ Tentu Intel dan AMD bisa menjual SoC jadi, tetapi bisa timbul benturan kepentingan antara pembuat CPU/pembuat PC/MS (misalnya soal apa yang harus dimasukkan)
→ Bagi Apple, ini isu yang sederhana. Mereka membuat semuanya sendiri. "They control the whole widget"
- Tantangan paling mendasar dalam membuat CPU cepat
→ Core CPU serbaguna cepat milik M1, Firestorm, memang benar-benar cepat. Inilah perbedaan ARM lama yang dulu lebih lambat dibanding AMD/Intel
→ Firestorm mengalahkan sebagian besar core Intel/AMD Ryzen dalam hal kecepatan, sesuatu yang secara intuisi terasa tidak mungkin terjadi.
→ Lalu apa strategi membuat CPU cepat?
-
Mengeksekusi instruksi berurutan dengan lebih cepat
-
Mengeksekusi banyak instruksi secara paralel
Pada era 80-an hal ini mudah. Cukup naikkan frekuensi clock, maka instruksi berjalan lebih cepat.
Komputer mengerjakan sesuatu di setiap siklus clock, dan "sesuatu" ini sangat kecil, sehingga satu instruksi kadang membutuhkan beberapa siklus clock
Namun di era modern, ada batas dalam menaikkan frekuensi clock.
"Akhir Hukum Moore"
Karena itu, sekarang yang penting adalah menjalankan sebanyak mungkin instruksi secara paralel
- Multi-core atau Out-of-Order processors?
→ Ada dua pendekatan untuk eksekusi paralel
- Menambahkan lebih banyak core CPU (dari sudut pandang developer, menambahkan lebih banyak thread)
Secara teori, core prosesor dapat menjalankan banyak thread (software thread)
Ini dieksekusi dengan berpindah antar-thread, sehingga berguna saat menunggu sesuatu dari I/O atau jaringan
Hardware thread memang mempercepat, tetapi developer harus menulis kode agar bisa memanfaatkannya.
Model ini cocok untuk server/cloud.
Itulah sebabnya perusahaan seperti Ampere membuat CPU ARM untuk cloud seperti Altra Max yang memiliki 128 core.
Apple justru kebalikannya. Apple adalah perusahaan yang membuat perangkat untuk pengguna tunggal
Sebagian besar software desktop tidak dibuat untuk memanfaatkan banyak core.
Game mungkin mendapat peningkatan performa di 8 core, tetapi 128 core hanya pemborosan.
Karena itu, yang dibutuhkan adalah lebih sedikit core tetapi lebih kuat
- Eksekusi out-of-order (Out-of-Order Execution, OoO) menjalankan lebih banyak instruksi secara paralel tanpa perlu digunakan secara eksplisit seperti multithreading
Dari sudut pandang developer, ini hanya terlihat seperti setiap core bekerja lebih cepat
Mengambil data dari lokasi memori tertentu itu lambat
Tetapi, mengambil 1 byte atau 128 byte tidak memiliki perbedaan delay
Data bergerak melalui data bus, dan jika bus ini lebar, beberapa byte bisa dibaca sekaligus
Saat berjalan, CPU mengeksekusi beberapa kelompok instruksi sekaligus, walaupun instruksi tersebut ditulis untuk dieksekusi secara berurutan
Mikroprosesor modern melakukan eksekusi Out-Of-Order.
Artinya, mereka menganalisis banyak instruksi untuk mencari apakah ada dependensi di antaranya.
01: mul r1, r2, r3 // r1 ← r2 × r3
02: add r4, r1, 5 // r4 ← r1 + 5
03: add r6, r2, 1 // r6 ← r2 + 1
Pada instruksi di atas, 1 dan 2 saling bergantung, tetapi instruksi 3 sama sekali tidak terkait dengan sebelumnya.
Dalam situasi ini, prosesor Out-of-Order dapat mengeksekusi instruksi 3 secara paralel karena tidak memiliki dependensi.
Dalam praktiknya, CPU bisa mendeteksi dependensi bukan hanya untuk satu dua instruksi, tetapi ratusan instruksi.
CPU menghubungkan instruksi dalam graph node, lalu menganalisisnya untuk menemukan instruksi yang bisa dijalankan paralel dan titik yang harus menunggu hasil sebelum dieksekusi.
Alasan core Firestorm pada M1 bisa menghasilkan kecepatan luar biasa adalah karena ia melakukan eksekusi Out-of-Order yang sangat hebat.
Kemungkinan lebih unggul daripada siapa pun lain di pasar utama, termasuk Intel/AMD.
- Kenapa eksekusi Out-of-Order AMD dan Intel lebih lambat daripada M1?
→ Yang dibahas sebelumnya sebenarnya disebut ROB (Reorder Buffer), dan itu bukan instruksi machine code biasa (yang diambil CPU dari memori untuk dijalankan)
Instruksi-instruksi itu disebut CPU Instruction Set Architecture (ISA), yaitu yang kita kenal sebagai x86, ARM, PowerPC.
→ Di dalamnya, CPU berjalan dengan set instruksi yang benar-benar berbeda dan tidak terlihat oleh programmer, yaitu micro-operations (instruksi mikro, micro-ops atau μops), dan ROB dipenuhi oleh micro-ops ini
→ Anggap saja instruksi ARM/x86 sebagai API publik, sedangkan micro-ops adalah API privat.
→ CISC harus memakai micro-ops karena instruksinya besar dan kompleks, sedangkan RISC bisa memilih untuk memakainya atau tidak.
(Misalnya, CPU ARM kecil bisa saja tidak memakai micro-ops. Itu bukan berarti ia tidak bisa melakukan OoO)
→ Kenapa ini penting? Karena "kecepatan ditentukan oleh seberapa cepat dan seberapa banyak ROB bisa diisi"
→ Semakin cepat ROB terisi, semakin banyak peluang untuk mengeksekusi lebih banyak instruksi secara paralel, sehingga performa meningkat
→ Machine code dipecah menjadi micro-ops oleh decoder.
→ Core Intel/AMD memiliki 4 decoder,
sedangkan Apple punya 8 decoder yang "gila", dan ROB-nya 3 kali lebih besar sehingga pada dasarnya dapat menampung 3 kali lebih banyak instruksi
- Lalu kenapa Intel dan AMD tidak menambahkan lebih banyak decoder instruksi?
→ Di sinilah serangan balik RISC dimulai. Penting bahwa core M1 Firestorm memakai ARM RISC.
→ Panjang instruksi x86 adalah 1~15 byte, sedangkan RISC berukuran tetap
→ Jika semua instruksi punya panjang yang sama, tinggal potong dan lempar ke 8 decoder yang berbeda
→ Namun pada x86, kita tidak tahu kapan instruksi berikutnya dimulai, sehingga satu-satunya cara adalah benar-benar menganalisis setiap instruksi
→ Intel dan AMD menangani masalah ini dengan brute force, yaitu melakukan decoding pada setiap kemungkinan awal instruksi
Artinya, tebakan yang salah atau error harus terus dibuang.
Karena itu sulit menambah lebih banyak decoder, sedangkan bagi Apple hal ini jauh lebih mudah
→ Inilah yang pada dasarnya memungkinkan CPU Apple memproses dua kali lebih banyak instruksi dibanding CPU AMD/Intel pada frekuensi clock yang sama
→ Di dunia nyata, x86 memang jarang memakai instruksi CISC yang kompleks dan lebih sering memakai instruksi pendek seperti RISC, tetapi karena tetap harus menangani instruksi 15 byte tersebut, kompleksitasnya tetap ada.
- Tapi bukannya core Zen3 AMD masih lebih cepat?
→ Dalam benchmark, Zen3 memang lebih cepat daripada Firestorm, tetapi Zen3 berjalan di 5Ghz sementara Firestorm di 3.2Ghz
→ Apple tidak menaikkan frekuensi clock karena chip akan menjadi panas.
→ Pada dasarnya core Firestorm lebih unggul daripada Zen3
→ Zen3 bisa dipakai untuk game dengan konsumsi daya dan panas yang lebih tinggi, tetapi "Apple memilih untuk tidak melakukan itu"
→ Jika Apple menginginkan performa lebih tinggi, mereka akan menambah lebih banyak core. Dengan cara ini, mereka bisa mendapatkan performa lebih tinggi dengan daya lebih rendah
- Masa depan
→ AMD/Intel telah mendorong diri mereka sendiri ke sudut pada dua aspek
-
Tidak punya model bisnis yang mendorong heterogeneous computing dan desain SoC
-
Instruksi x86 CISC yang kompleks telah menjadi legacy sehingga sulit meningkatkan performa OoO
→ Tentu ini belum game over. Mereka masih bisa menaikkan clock, menambah pendinginan, memakai lebih banyak core, dan seterusnya
→ Intel berada di posisi yang lebih buruk. Kecepatan core-nya sudah kalah dari Firestorm, dan GPU yang dimasukkan ke SoC juga lemah.
→ Banyak core tentu bagus untuk server, tetapi Amazon dan Ampere sedang menyerang dengan 128 core. Intel/AMD harus bertarung di kedua sisi
→ Untungnya bagi AMD/Intel, berbeda dari mereka, Apple tidak menjual chip ke pasar
→ Mungkin tidak langsung sekarang, tetapi pengguna PC akan perlahan berpindah ke Apple, dan Apple akan mengambil porsi yang lebih besar di pasar PC
17 komentar
Tulisannya benar-benar bagus.
Terima kasih banyak sudah merangkum dan menjelaskannya dengan sangat mudah dipahami. Mantap!
Terima kasih atas kontennya yang bagus.
Terima kasih!!
Saya ingin membeli perangkat M1, ternyata yang harus dibeli malah sahamnya..
Terima kasih atas tulisannya yang bagus!
Saya juga setuju bahwa saham Apple memiliki nilai masa depan yang tinggi.
Suatu saat nanti, sepertinya Apple Car benar-benar akan diluncurkan.
Model memori lemah tampaknya makin penting.. Apple sekarang benar-benar menjadi perusahaan tertutup yang bisa membuat semuanya sendiri, mulai dari chip, perakitan, hardware, OS, hingga aplikasi (seperti yang diimpikan Jobs).
Saya juga sedang mempertimbangkan perangkat berikutnya berupa Mac mini M1 atau MacBook Air..
Saya juga dari MacBook Pro 2015 ke M1.. Katanya datangnya akhir tahun ini atau awal tahun depan!
Saya cek hari ini, ternyata sudah dirilis di Korea!
Wah! Guru benar-benar yang terbaik!!
Terima kasih ;)
Di dalam tulisan itu ada juga perbandingan RISC/CISC yang ditulis penulis, dan itu benar-benar sangat saya rekomendasikan. Penjelasannya menguraikan dengan lancar soal pertanyaan, "kenapa bisa memiliki struktur instruksi seperti itu?"
Pada dasarnya, sepertinya dia memang orang yang pandai menulis. Tulisan ini juga cukup panjang, tetapi tetap enak dibaca.
Wah, kontennya bagus, terima kasih.
Terima kasih!
Rasanya seperti mengulang kelas arsitektur komputer lagi, haha
Pada akhirnya, Apple memang punya struktur yang membuatnya terus bisa menjadi semakin baik dalam hal yang paling dikuasainya.
Intel dan AMD sekarang harus bagaimana..
Di episode 16 podcast GeekNews yang diunggah hari ini, sempat diperkenalkan secara singkat tentang trik Memory-Order pada chip M1, dan tulisan ini menjelaskannya lebih detail dari sudut yang berbeda.
Sepertinya minggu depan juga akan dibahas lagi di podcast ^^;