Selama bertahun-tahun narasi yang beredar soal prosesor adalah stagnasi. Setiap generasi hanya naik belasan persen, arsitekturnya tidak berubah banyak, dan peningkatan utamanya datang dari litografi. Daniel Lemire menguji narasi itu dengan membandingkan tiga prosesor AMD Ryzen 7 yang sebanding: 5800X3D dari keluarga Zen 3, 7800X3D dari Zen 4, dan 9800X3D dari Zen 5. Ketiganya delapan inti dengan 3D V-Cache. Rentang waktunya sekitar dua tahun. Pertanyaannya sederhana: ke mana saja transistor tambahan itu pergi, dan apa efeknya.
TL;DR
- Daniel Lemire membandingkan tiga prosesor AMD Ryzen 7 sekelas, 5800X3D (Zen 3), 7800X3D (Zen 4), dan 9800X3D (Zen 5), yang semuanya punya delapan inti dan 3D V-Cache dalam rentang waktu sekitar dua tahun.
- Jumlah transistor naik sekitar 50 persen, dari sekitar 11 miliar menjadi 16 miliar, dan sebagian besar transistor ekstra masuk ke inti, bukan ke cache.
- Lebar dispatch naik dari 6 instruksi per siklus di Zen 3 menjadi 8 di Zen 5, sementara reorder buffer tumbuh dari 256 menjadi 448 entri.
- L2 cache per inti naik dua kali lipat dari 512 KB menjadi 1 MB, L1 data cache naik dari 32 KB menjadi 48 KB, dan unit integer ALU bertambah dari 4 menjadi 6.
- Perubahan terbesar ada di jalur SIMD: Zen 5 punya empat unit 512 bit dibanding empat unit 256 bit pada Zen 3 dan Zen 4, sehingga keuntungan performa sangat bergantung pada jenis beban kerja.
Jawaban singkatnya: lompatan terbesar bukan di frekuensi, tapi di lebar mesin. Prosesor ini memang jadi sekitar 50 persen lebih cepat, dan penyebabnya bisa dilacak satu per satu ke keputusan desain yang cukup spesifik.
Tiga Keping yang Dibandingkan
Perbandingan ini rapi karena ketiga keping berada di kelas yang sama. Semuanya Ryzen 7 dengan delapan inti dan 3D V-Cache, jadi perbedaan performa tidak bisa dilempar ke jumlah inti atau ke cache tambahan yang eksklusif di satu model. Yang berubah adalah generasi arsitekturnya, dari Zen 3 ke Zen 4 lalu ke Zen 5.
Perbandingan spesifikasi AMD Ryzen 7 5800X3D (Zen 3), 7800X3D (Zen 4),
| Aspek | Zen 3 (5800X3D) | Zen 4 (7800X3D) | Zen 5 (9800X3D) |
|---|---|---|---|
| Inti | 8 inti | 8 inti | 8 inti |
| Cache | 3D V-Cache | 3D V-Cache | 3D V-Cache |
| Transistor | sekitar 11 miliar | tidak disebutkan | sekitar 16 miliar |
| Lebar dispatch | 6 instruksi per siklus | tidak disebutkan | 8 instruksi per siklus |
| Reorder buffer | 256 entri | tidak disebutkan | 448 entri |
| L2 cache per inti | 512 KB | tidak disebutkan | 1 MB |
| L1 data cache | 32 KB | tidak disebutkan | 48 KB |
| Unit integer ALU | 4 | tidak disebutkan | 6 |
| Unit SIMD | empat unit 256 bit | empat unit 256 bit | empat unit 512 bit |
| Load/store SIMD | tidak disebutkan | tidak disebutkan | dua load dan satu store 512 bit per siklus |
Angka transistor memberi gambaran pertama. Jumlahnya naik sekitar 50 persen, dari kira-kira 11 miliar menjadi 16 miliar. Yang menarik bukan besarnya kenaikan, tapi distribusinya: sebagian besar transistor ekstra itu masuk ke inti, bukan ke cache. Ini keputusan yang berlawanan dengan cara mudah menaikkan angka benchmark, karena menambah cache biasanya lebih murah dan hasilnya lebih mudah diprediksi.
Melebarkan Bagian Depan Prosesor
Perubahan pertama terlihat di lebar dispatch. Prosesor mendispatch maksimum 6 instruksi per siklus di Zen 3, dan naik menjadi 8 di Zen 5. Dispatch adalah gerbang masuk instruksi ke mesin eksekusi, jadi melebarkan bagian ini berarti lebih banyak pekerjaan bisa masuk ke pipeline per siklus.
Melebarkan gerbang masuk tidak ada gunanya kalau tempat penampung di belakangnya tidak ikut besar. Karena itu reorder buffer juga tumbuh, dari 256 entri menjadi 448 entri. Reorder buffer adalah tempat instruksi menunggu sambil menunggu dependensinya selesai. Buffer yang lebih besar berarti prosesor bisa menyimpan lebih banyak instruksi dalam penerbangan dan menjadwalkannya dengan lebih baik, sehingga lebih tahan terhadap stall akibat satu instruksi yang lambat.
Kombinasi dua perubahan ini menjelaskan sebagian besar peningkatan performa per siklus. Ini jenis peningkatan yang tidak muncul di brosur karena tidak ada angka gigahertz yang bisa dipajang, tapi efeknya terasa di beban kerja yang penuh dependensi dan branch.
Cache dan Unit Integer Bertambah
Perubahan berikutnya ada di hierarki memori dan unit eksekusi integer.
- L2 cache per inti naik dua kali lipat, dari 512 KB menjadi 1 MB.
- L1 data cache naik dari 32 KB menjadi 48 KB.
- Unit integer ALU bertambah dari 4 menjadi 6.
Pola yang terlihat konsisten: semua sumber daya yang sering menjadi bottleneck ikut dilebarkan. Menambah L1 data cache dari 32 KB ke 48 KB mengurangi jumlah akses yang harus turun ke L2, dan menambah ALU dari 4 ke 6 menaikkan throughput untuk kode yang kaya operasi integer. Ditambah reorder buffer yang hampir dua kali lebih besar, mesin ini memang dirancang untuk memproses lebih banyak instruksi secara paralel, bukan sekadar berjalan lebih cepat secara sekuensial.
Zen 5 sebagai Mesin yang Berbeda untuk SIMD
Perubahan paling besar justru ada di jalur data paralel atau SIMD, dan di sini Zen 5 layak disebut mesin yang berbeda, bukan sekadar penyempurnaan.
Zen 3 dan Zen 4 memiliki empat unit aritmetika SIMD berukuran 256 bit. Zen 5 memiliki empat unit berukuran 512 bit. Jalur load dan store melebar dengan cara yang sama: dua load 512 bit per siklus dan satu store 512 bit.
Perbedaan ini penting untuk beban kerja tertentu. Kode yang memproses array besar, kompresi, penyandian, operasi matriks, atau pemrosesan sinyal bisa memanfaatkan lebar 512 bit secara langsung. Untuk kode yang sifatnya skalar dan penuh percabangan, tambahan lebar itu tidak banyak membantu. Artinya, keuntungan generasi ini tidak terdistribusi rata, dan itu penjelasan yang lebih jujur daripada mengklaim semua beban kerja naik 50 persen.
Kesimpulan praktisnya untuk pengembang: kalau pekerjaan kamu berisi loop atas data besar, peningkatan dari Zen 3 ke Zen 5 akan terasa jauh lebih besar daripada yang dijanjikan angka benchmark rata-rata. Sebaliknya, kalau pekerjaan kamu didominasi kode dengan banyak branch dan dependensi berantai, keuntungannya lebih banyak datang dari reorder buffer dan lebar dispatch yang lebih besar, bukan dari SIMD 512 bit.
Kenapa Ini Penting untuk Keputusan Teknis
Ada dua pelajaran yang bisa diambil dari perbandingan ini, dan keduanya berguna di luar konteks memilih CPU.
Pertama, stagnasi sering disimpulkan dari metrik yang salah. Kalau yang dilihat hanya frekuensi clock, prosesor memang terlihat jalan di tempat selama bertahun-tahun. Begitu yang diperiksa adalah lebar dispatch, ukuran reorder buffer, jumlah ALU, dan lebar unit SIMD, gambarannya berubah total. Ini contoh klasik dari masalah metrik proxy: angka yang mudah diukur bergerak lambat, sementara kapabilitas yang sebenarnya berubah cepat. Pelajaran yang sama berlaku di banyak bidang lain, termasuk saat menilai performa perangkat lunak. Waktu eksekusi total bukan satu-satunya sinyal; yang perlu diperiksa adalah di bagian mana waktu itu habis.
Kedua, keuntungan performa hampir selalu bergantung pada beban kerja. Klaim bahwa satu generasi 50 persen lebih cepat hanya bermakna kalau beban kerjanya disebutkan. Untuk kode SIMD dan array besar, keuntungannya bisa besar. Untuk kode yang terikat latensi memori atau I/O, perbedaannya bisa nyaris tidak terasa. Karena itu, sebelum memutuskan upgrade berdasarkan benchmark publik, jalankan beban kerja sendiri dan ukur bagian yang benar-benar menjadi bottleneck. Ini sejalan dengan prinsip yang sama di dunia perangkat lunak: diagnosis dulu di mana batasannya, baru pilih solusinya.
💬 Komentar (0)
Belum ada komentar. Jadilah yang pertama! 💬