Selama acara Scary Fast Apple, satu fitur menarik perhatian saya yang berbeda dari yang lain adalah Caching Dinamis. Mungkin seperti kebanyakan orang yang menonton presentasi, akan bertanya bagaimana alokasi memori meningkatkan kinerja?
Apple mendasarkan debut chip M3 barunya pada fitur landasan yang disebut Caching Dinamis untuk GPU. Penjelasan Apple yang disederhanakan tidak menjelaskan secara pasti apa yang dilakukan Dynamic Caching, apalagi bagaimana hal ini meningkatkan kinerja GPU pada M3.
Saya menggali lebih dalam tentang arsitektur GPU pada umumnya dan mengirimkan beberapa pertanyaan langsung untuk mencari tahu apa sebenarnya Dynamic Caching itu. Inilah pemahaman terbaik saya tentang fitur yang tidak diragukan lagi merupakan fitur paling padat secara teknis yang pernah digunakan Apple pada suatu merek.
Apa sebenarnya Caching Dinamis itu?
Caching Dinamis adalah fitur yang memungkinkan chip M3 hanya menggunakan jumlah memori yang dibutuhkan untuk tugas tertentu. Caching Dinamis tidak seperti GPU tradisional, mengalokasikan penggunaan memori lokal di perangkat keras secara real-time.
Dengan Caching Dinamis, hanya jumlah memori yang diperlukan yang digunakan untuk setiap tugas. Ini adalah yang pertama di industri, transparan bagi pengembang, dan merupakan landasan arsitektur GPU baru. Hal ini secara dramatis meningkatkan pemanfaatan rata-rata GPU yang secara signifikan meningkatkan kinerja untuk aplikasi dan game profesional yang paling menuntut.
Dalam gaya khas Apple, banyak aspek teknis yang sengaja dikaburkan untuk fokus pada hasil. Cukup untuk mendapatkan intisarinya tanpa membocorkan rahasianya atau membingungkan penonton dengan jargon teknis. Namun kesimpulan umumnya adalah bahwa Dynamic Caching memungkinkan GPU memiliki alokasi memori yang lebih efisien. Cukup sederhana bukan? tapi masih belum jelas bagaimana alokasi memori meningkatkan pemanfaatan rata-rata atau meningkatkan kinerja secara signifikan.
Untuk mencoba memahami Caching Dinamis kita harus mundur untuk memeriksa cara kerja GPU. Tidak seperti CPU, GPU unggul dalam menangani beban kerja besar secara paralel. Beban kerja ini disebut shader, yaitu program yang dijalankan GPU. Untuk memanfaatkan GPU secara efektif, program perlu menjalankan banyak shader sekaligus.
Banyak shader yang dieksekusi sekaligus, lalu terjadi penurunan pemanfaatan sementara lebih banyak shader dikirim untuk dieksekusi pada thread atau lebih tepatnya blok thread pada GPU. Efek ini tercermin dalam presentasi Apple ketika menjelaskan Dynamic Caching ketika penggunaan GPU melonjak sebelum mencapai titik terendah.
Bagaimana hal ini masuk ke dalam memori? Fungsi pada GPU adalah membaca instruksi dari memori dan menulis output fungsi tersebut ke memori. Banyak fungsi juga perlu mengakses memori beberapa kali saat dijalankan. Berbeda dengan CPU yang latensi memori melalui RAM dan cache sangat penting karena rendahnya tingkat fungsi paralel, latensi memori pada GPU lebih mudah disembunyikan. Ini adalah prosesor yang sangat paralel, jadi jika beberapa fungsi ada di memori, fungsi lain dapat dijalankan.
Ini berfungsi jika semua shader mudah dijalankan, namun beban kerja yang berat akan memiliki shader yang sangat kompleks. Ketika shader ini dijadwalkan untuk dieksekusi, memori yang diperlukan untuk mengeksekusinya akan dialokasikan, meskipun tidak diperlukan. GPU mempartisi banyak sumber dayanya untuk satu tugas kompleks, meskipun sumber daya tersebut akan terbuang percuma.
Tampaknya Caching Dinamis adalah upaya Apple untuk memanfaatkan sumber daya yang tersedia untuk GPU secara lebih efektif, memastikan bahwa tugas-tugas kompleks ini hanya mengambil apa yang mereka perlukan. Secara teori, hal ini seharusnya meningkatkan pemanfaatan rata-rata GPU dengan memungkinkan lebih banyak tugas dijalankan secara bersamaan dibandingkan dengan serangkaian tugas yang lebih kecil dan menuntut yang menghabiskan semua sumber daya yang tersedia untuk GPU.
Penjelasan Apple berfokus pada memori terlebih dahulu, sehingga seolah-olah alokasi memori saja yang meningkatkan kinerja. Dari pemahaman saya, tampaknya alokasi yang efisien memungkinkan lebih banyak shader untuk dieksekusi sekaligus yang kemudian akan meningkatkan pemanfaatan dan kinerja.
Digunakan vs dialokasikan
Salah satu aspek utama yang merupakan kunci untuk memahami upaya saya dalam menjelaskan Caching Dinamis adalah bagaimana shader bercabang. Program yang dijalankan GPU tidak selalu statis. Mereka dapat berubah tergantung pada kondisi yang berbeda, terutama pada shader yang besar dan kompleks seperti yang diperlukan untuk ray tracing. Peneduh bersyarat ini perlu mengalokasikan sumber daya untuk skenario terburuk yang mungkin terjadi yang berarti sebagian sumber daya dapat terbuang percuma.
Untuk semua jenis percabangan dinamis, GPU harus mengalokasikan ruang register untuk kasus terburuk. Jika salah satu cabang jauh lebih mahal dibandingkan yang lain, ini berarti GPU membuang-buang ruang register. Hal ini dapat menyebabkan lebih sedikit pemanggilan program shader secara paralel sehingga mengurangi kinerja.
Tampaknya Apple menargetkan jenis percabangan ini dengan Dynamic Caching yang memungkinkan GPU hanya menggunakan sumber daya yang diperlukan dan tidak membuang-buangnya. Mungkin saja fitur ini mempunyai implikasi di tempat lain, namun tidak jelas di mana dan kapan Caching Dinamis diaktifkan saat GPU menjalankan tugasnya.
Masih misteri
Tentu saja, saya perlu mencatat bahwa semua ini hanyalah pemahaman saya yang disusun berdasarkan cara kerja GPU secara tradisional dan apa yang dinyatakan secara resmi oleh Apple. Apple mungkin akan merilis lebih banyak informasi tentang cara kerjanya pada akhirnya, tetapi pada akhirnya, detail teknis dari Dynamic Caching tidak menjadi masalah jika Apple memang mampu meningkatkan pemanfaatan dan kinerja GPU.
Pada akhirnya, Caching Dinamis adalah istilah yang dapat dipasarkan untuk fitur yang tertanam jauh di dalam arsitektur GPU. Mencoba memahami bahwa tanpa menjadi seseorang yang mendesain GPU pasti akan menimbulkan kesalahpahaman dan penjelasan yang reduktif. Secara teori, Apple bisa saja mengubah brandingnya dan membiarkan arsitekturnya berbicara sendiri.
Jika ingin mengetahui lebih dalam tentang apa yang dapat dilakukan Dynamic Caching di GPU M3, kini mungkin memiliki sedikit penjelasan. Namun berdasarkan klaim performa dan demo yang kami lihat sejauh ini, hal ini memang terlihat menjanjikan.