Trik-trik CPU Apple - reordering memori, dukungan JS, dan ref counting
(threadreaderapp.com)-
Kecepatan eksekusi kode Intel milik Apple yang tampak seperti sihir hitam pada dasarnya berasal dari perpaduan arsitektur Arm dan Intel
-
Kedua CPU pada dasarnya memiliki "memory ordering" yang berbeda, sehingga emulasi menjadi lambat. Salah satu solusi Apple adalah memasukkan cara Intel juga. Saat menjalankan kode x86, dibuat agar mengikuti memory ordering milik Intel
-
Dengan menambahkan instruksi yang dioptimalkan untuk JavaScript dan menggandakan L1 cache, Apple membuat penjelajahan web menjadi lebih cepat dan baterai bertahan lebih lama
-
Dual-core pada Intel MacBook Air berjalan di 3.8Ghz saat kencang, dan di 1.2Ghz dalam mode lambat untuk menghemat daya, tetapi Intel tidak dirancang untuk berjalan dalam kondisi downclock.
Apple mengoptimalkan dengan memasukkan masing-masing 4 prosesor untuk performa dan efisiensi. Dalam mode hemat daya, 4 prosesor performa dimatikan dan sistem berjalan hanya dengan prosesor efisiensi.
Saat melakukan pekerjaan seperti kompilasi, keempat prosesor dimanfaatkan sepenuhnya sehingga benar-benar cepat.
-
Intel tertinggal 3 tahun dari Hukum Moore. Apple Silicon menggunakan proses 5nm terbaru dari TSMC, sementara Intel menggunakan proses 10nm/7nm, dan bahkan banyak produk Intel masih memakai proses 14/10nm yang lebih lama.
-
Bahasa Swift menggunakan "reference counting" alih-alih "garbage collection" seperti di Android. Apple telah melakukan sesuatu pada CPU untuk menggandakan kecepatan reference counting.
5 komentar
Kenapa ada instruksi di chip ARM yang diberi nama JavaScript? https://id.news.hada.io/topic?id=3057
Reference counting adalah dasar dari garbage collection... maksudnya apa... tiba-tiba tingkat kepercayaannya langsung turun drastis...
Terkait hal ini, ada pembahasan seperti berikut.
https://twitter.com/catfish_man/status/1326238434235568128?s=21
Kecepatan murni untuk melakukan Retain/Release pada NSObject sederhana itu sendiri disebut 5 kali lebih cepat.
Tampaknya instruksi untuk melakukan reference counting juga berjalan lebih cepat karena perbedaan struktur memory ordering.
Di Java, biasanya digunakan gaya garbage collection lain seperti Mark-and-Sweep, bukan Reference Counting.
Oh? Tadinya saya sempat berpikir... kalau begitu garbage collection juga bakal secepat itu, ya.. wkwk