1 poin oleh GN⁺ 2024-07-28 | 1 komentar | Bagikan ke WhatsApp

Unit Branch Predictor 2-Ahead di Zen 5: bagaimana ide berusia 30 tahun memungkinkan trik baru

  • Pendahuluan

    • Arsitektur Zen 5 milik AMD merupakan perombakan total dari arsitektur Zen sebelumnya
    • Salah satu perubahan terpenting adalah Unit Branch Predictor 2-Ahead yang baru
    • Ide ini berasal dari makalah 30 tahun lalu
  • Pentingnya Branch Predictor

    • Komputer menyimpan program di memori lalu mengeksekusinya
    • Prosesor dibagi menjadi frontend yang mengambil dan mengeksekusi instruksi serta backend
    • Lompatan bersyarat adalah tantangan besar dalam mengisi pipeline
    • Prediksi yang salah memaksa pipeline di-flush dan dimulai ulang
    • Karena itu, prosesor harus memprediksi urutan instruksi program seakurat mungkin
  • Kemunculan Branch Predictor 2-Ahead

    • Ini adalah ide yang telah diusulkan sejak awal 1990-an
    • Metode yang lebih efisien seperti predictor TAGE telah dikembangkan
    • Namun, untuk meningkatkan performa single-core, Branch Predictor 2-Ahead kembali mendapat perhatian
  • Keunggulan arsitektur x86

    • x86 memperoleh manfaat lebih besar dari prediksi branch 2-Ahead dibanding ISA lain dengan instruksi panjang tetap
    • x86 memerlukan pemrosesan yang lebih kompleks untuk menentukan batas instruksi
    • Zen 5 menggunakan dua fetch pipe 32-byte dan cluster decode 4-wide
  • Implementasi makalah Seznec

    • Makalah Seznec menjelaskan cara mengimplementasikan Branch Predictor 2-Ahead
    • Zen 5 mengikuti rekomendasi dari makalah tersebut
    • Zen 5 menggunakan dua fetch pipe 32-byte dan op cache dual-port 6-wide
    • Zen 5 memakai L1 BTB dan L2 BTB untuk meningkatkan akurasi prediksi
  • Kesimpulan

    • Branch Predictor 2-Ahead di Zen 5 merupakan perubahan penting dalam arsitektur Zen
    • Predictor baru ini akan sangat membantu pengembangan core Zen di masa depan

Ringkasan GN⁺

  • Branch Predictor 2-Ahead di Zen 5 adalah reinterpretasi modern dari ide yang muncul 30 tahun lalu
  • Teknologi ini meningkatkan akurasi prediksi instruksi prosesor sehingga performa ikut naik
  • Teknologi ini sangat berguna terutama untuk mengatasi kompleksitas arsitektur x86
  • Artikel ini bermanfaat bagi orang yang tertarik pada arsitektur CPU dan optimisasi performa
  • Proyek lain dengan fungsi serupa adalah arsitektur Golden Cove milik Intel

1 komentar

 
GN⁺ 2024-07-28
Komentar Hacker News
  • Ada penjelasan yang sangat bagus tentang branch prediction
  • Performa SMT tampaknya akan menarik; Zen5c menawarkan 192 Core atau 384 vCPU. Pada Zen 6c, kita bisa mengharapkan 256 Core. Ada kemungkinan 512 Core dan 1024 vCPU pada server Dual Socket 1U
    • Masalah penskalaan aplikasi web tahun 2014 bisa diselesaikan dengan satu server, asalkan masalah pendinginan bisa diatasi
    • Dengan 1 RPS per vCPU, bisa mencapai 1000 RPS, di luar cache hit
    • Bahkan halaman depan HN pun tidak melampaui 1000 page view per second
  • Menarik ketika makalah yang sudah berusia puluhan tahun menjadi "state of the art" berkat kemajuan hardware
    • Contoh: Z-buffer, digunakan dalam video game 3D
    • Saat pertama kali dipublikasikan dalam makalah, itu bukan topik utama karena kebutuhan memorinya besar
    • Beberapa dekade kemudian, ketika megabyte menjadi murah, semua renderer 3D real-time mulai memakainya
  • Prediktor spekulatif rentan terhadap berbagai serangan yang membocorkan data pribadi. Banyak ISA umum juga rentan, jadi saya penasaran apakah ada langkah yang diambil untuk mengurangi dampak serangan ini
  • Sebagai pemula di bidang ini, saya masih tidak jelas apa itu 2-ahead branch predictor
  • Sepertinya kita membutuhkan lebih banyak branch hints
    • Cold, warm, warmer, dan hot dihilangkan sebagai default? Saya penasaran apakah menetapkan semua branch sebagai cold lalu mengecualikan satu saja adalah ide yang buruk
    • Jika ada branch kondisional, saya penasaran kenapa sulit untuk mengambil dan menyiapkan kedua kemungkinan branch sekaligus lalu membuang yang salah
  • Kita membutuhkan bandwidth memori yang lebih besar; dua kanal memori pada soket AM5 konsumen terasa kurang dibanding performanya
    • Saya pindah ke M2 Max, dan peningkatan bandwidth memori mempercepat pekerjaan data. Bahkan saat multitasking berat, pipa memori yang sempit pada konfigurasi Zen sering menjadi bottleneck
  • Pada Zen 5, decode cluster dan fetch pipe pendampingnya dibagi secara statis saat dua thread diaktifkan
    • Ini tampaknya bisa memberi peningkatan besar pada performa hyper-threading. Di Zen1, HT memberi peningkatan sekitar 25%. Saya penasaran apakah ada yang sudah mengujinya di model terbaru
  • Saya masih belum tahu apa itu 2-ahead branch predictor