1 पॉइंट द्वारा GN⁺ 2024-07-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें

Zen 5 का 2-Ahead Branch Predictor Unit: 30 साल पुराना आइडिया नए ट्रिक्स को कैसे संभव बनाता है

  • परिचय

    • AMD की Zen 5 आर्किटेक्चर मौजूदा Zen आर्किटेक्चर का पूरी तरह से पुनःडिज़ाइन किया गया रूप है
    • सबसे महत्वपूर्ण बदलावों में से एक नया 2-Ahead Branch Predictor Unit है
    • यह आइडिया 30 साल पहले के एक शोधपत्र से आया है
  • Branch Predictor का महत्व

    • कंप्यूटर प्रोग्राम को मेमोरी में स्टोर करते हैं और उसे चलाते हैं
    • प्रोसेसर को instructions लाने और execute करने वाले front-end और back-end में बाँटा जाता है
    • conditional jump पाइपलाइन को भरने में एक बड़ी चुनौती है
    • गलत prediction होने पर पाइपलाइन को flush करके फिर से शुरू करना पड़ता है
    • इसलिए प्रोसेसर को प्रोग्राम की instruction sequence का जितना संभव हो उतना सटीक prediction करना होता है
  • 2-Ahead Branch Predictor का आगमन

    • यह 1990 के शुरुआती दशक से प्रस्तावित एक आइडिया है
    • TAGE predictor जैसे अधिक efficient तरीके विकसित किए गए थे
    • लेकिन single-core performance बेहतर बनाने के लिए 2-Ahead Branch Predictor फिर से ध्यान आकर्षित कर रहा है
  • x86 आर्किटेक्चर के फायदे

    • x86 को fixed-length instructions वाली अन्य ISA की तुलना में 2-Ahead Branch Prediction से अधिक फायदा मिलता है
    • x86 में instruction boundaries तय करने के लिए अधिक जटिल प्रोसेसिंग की जरूरत होती है
    • Zen 5 दो 32-byte fetch pipes और 4-wide decode cluster का उपयोग करता है
  • Seznec शोधपत्र का implementation

    • Seznec शोधपत्र 2-Ahead Branch Predictor को implement करने का तरीका बताता है
    • Zen 5 इस शोधपत्र की सिफारिशों का पालन करता है
    • यह दो 32-byte fetch pipes और 6-wide dual-port op cache का उपयोग करता है
    • prediction accuracy बढ़ाने के लिए L1 BTB और L2 BTB का उपयोग किया जाता है
  • निष्कर्ष

    • Zen 5 का 2-Ahead Branch Predictor Zen आर्किटेक्चर में एक महत्वपूर्ण बदलाव है
    • यह नया predictor भविष्य के Zen core development में बहुत मददगार होगा

GN⁺ का सार

  • Zen 5 का 2-Ahead Branch Predictor 30 साल पुराने आइडिया की आधुनिक पुनर्व्याख्या है
  • यह तकनीक प्रोसेसर की instruction prediction accuracy बढ़ाकर performance बेहतर करती है
  • x86 आर्किटेक्चर की जटिलताओं को संभालने में यह खास तौर पर उपयोगी है
  • यह लेख CPU आर्किटेक्चर और performance optimization में रुचि रखने वालों के लिए उपयोगी है
  • समान विशेषताओं वाले अन्य प्रोजेक्ट्स में Intel की Golden Cove आर्किटेक्चर शामिल है

1 टिप्पणियां

 
GN⁺ 2024-07-28
Hacker News राय
  • branch prediction के बारे में शानदार व्याख्या है
  • SMT performance दिलचस्प हो सकती है; Zen5c में 192 Core या 384 vCPU मिलते हैं। Zen 6c में 256 Core की उम्मीद की जा सकती है। Dual Socket 1U Server में 512 Core और 1024 vCPU की संभावना है
    • 2014 के web app scaling की समस्याएँ एक single server से हल की जा सकती हैं, बस cooling की समस्या सुलझानी होगी
    • 1 RPS per vCPU पर 1000 RPS संभव है, cache hit को छोड़कर
    • HN front page भी 1000 page view per second से ऊपर नहीं जाता
  • यह दिलचस्प है कि दशकों पुराने paper hardware की प्रगति के कारण "state of the art" बन जाते हैं
    • उदाहरण: Z-buffer, जो 3D video game में इस्तेमाल होता है
    • जब इसे पहली बार paper में पेश किया गया था, तब यह मुख्य विषय नहीं था, क्योंकि इसकी memory requirement बहुत अधिक थी
    • कुछ दशकों बाद megabyte सस्ते हो गए, और तब हर real-time 3D renderer ने इसका उपयोग करना शुरू कर दिया
  • speculative predictor निजी डेटा लीक करने वाले कई हमलों के प्रति संवेदनशील हैं। कई सामान्य ISA भी असुरक्षित हैं; सोच रहा हूँ कि क्या इन हमलों के प्रभाव को कम करने के लिए कदम उठाए जा रहे हैं
  • इस क्षेत्र में नए व्यक्ति के रूप में, यह स्पष्ट नहीं है कि 2-ahead branch predictor क्या है
  • लगता है और अधिक branch hints की जरूरत है
    • Cold, warm, warmer, और default के रूप में hot को छोड़ देना? सोच रहा हूँ कि क्या सभी branches को cold सेट करके सिर्फ एक को छोड़ देना बुरा विचार होगा
    • जब conditional branch हो, तब दोनों संभावित branches को fetch करके तैयार रखना और गलत वाले को फेंक देना कठिन क्यों है, यह जानना चाहता हूँ
  • और अधिक memory bandwidth की जरूरत है; consumer AM5 socket के दो memory channel इसकी performance के मुकाबले कम पड़ते हैं
    • मैंने M2 Max पर स्विच किया, और memory bandwidth में सुधार ने data work को तेज कर दिया। भारी multitasking में भी Zen setup की संकरी memory pipe अक्सर रुक जाती है
  • जब Zen 5 में दो threads सक्रिय होते हैं, तब decode cluster और उससे जुड़ी fetch pipe को statically split किया जाता है
    • लगता है इससे hyper-threading performance में बड़ा सुधार हो सकता है। Zen1 में HT से लगभग 25% तेजी मिली थी। सोच रहा हूँ कि क्या किसी ने इसे नए मॉडलों पर test किया है
  • अब भी समझ नहीं आया कि 2-ahead branch predictor क्या है