TL: DR: विभिन्न पथ वास्तव में अलग नहीं हैं। डिकोडिंग के बाद का बड़ा अंतर FP / SIMD बनाम इंटेगर है, जो अलग-अलग शेड्यूलर में चलते हैं, भले ही दोनों में DirectPath निर्देश हों।
यह भी देखें डेविड कैंटर का बार्सिलोना (AMD Fam10h) माइक्रोआर्किटेक्चर राइट-अप । K10 / K8 / Core2 में फ्रंट-एंड का उनका आरेख अत्यधिक प्रासंगिक है:
इस तरह से सामान के लिए और अधिक लिंक के लिए, देखें एसओ पर x86 टैग विकी
एग्नर फॉग के माइक्रो गाइड से ( http://agner.org/optimize/ ), K8 / K10 अध्याय:
17.3 प्रेडकोडिंग और निर्देश लंबाई डिकोडिंग
एक निर्देश में 1 से 15 बाइट्स तक की कोई भी लंबाई हो सकती है। निर्देश सीमाएँ हैं
कोड कैश में चिह्नित किया गया और स्तर -2 कैश में कॉपी किया गया। निर्देश की लंबाई डिकोडिंग है
इसलिए शायद ही कभी एक अड़चन हो, भले ही निर्देश लंबाई डिकोडर केवल संभाल सकता है
एक निर्देश प्रति घड़ी चक्र ।
यह अन्य पूर्व-डिकोड जानकारी को उत्पन्न करने से अलग हो सकता है, क्योंकि एग्नेर का कहना है कि निर्देश-लंबाई की जानकारी L2 कैश में भी संग्रहीत है, लेकिन L2 से L1I में लाने पर अन्य पूर्व-डिकोड जानकारी को फिर से प्राप्त करना होगा।
लेवल -1 कोड कैश में काफी मात्रा में पूर्व सूचना होती है। इस
जिसमें प्रत्येक निर्देश समाप्त होता है, जहां ओपोड बाइट है, साथ ही साथ जानकारी भी शामिल है
जैसा एकल, डबल और वेक्टर पथ निर्देशों के बीच अंतर और की पहचान
कूदता है और कॉल करता है। इस जानकारी में से कुछ को स्तर -2 कैश में कॉपी किया जाता है, लेकिन सभी को नहीं। कम
स्तर -2 कैश से आने वाले निर्देशों के लिए बैंडविड्थ की प्रक्रिया के कारण हो सकता है
अधिक पूर्व सूचनाओं को जोड़ना।
अतिरिक्त डेटा के लिए संग्रहण प्रारूप का वास्तविक विवरण ज्ञात नहीं है। संभवतः L1I कैश की प्रत्येक पंक्ति में कुछ अतिरिक्त प्रारूप में स्मृति सामग्री के 64B से परे डेटा सरणी में कुछ अतिरिक्त बाइट्स हैं। ऐसा लगता है कि कोने के मामले को संभालने के लिए महत्वपूर्ण अतिरिक्त स्थान ले जाएगा जहां हर निर्देश एक बाइट था।
ये अलग-अलग प्रवाह वास्तव में सभी नहीं हैं उस अलग। तीन डिकोडर हैं, और वे या तो अप-टू-थ्री डायरेक्टपैथ निर्देश (अप-टू-थ्री मैक्रो-ऑप्स) को डीकोड कर सकते हैं, या एक वेक्टरपैथ निर्देश को डिकोड किया जा सकता है।
Agner Fog कहते हैं:
वेक्टर पथ निर्देश एकल या डबल की तुलना में कम कुशल हैं
निर्देश क्योंकि उन्हें डिकोडर्स के लिए विशेष पहुंच की आवश्यकता होती है और
पाइपलाइनों और हमेशा आशा के अनुरूप नहीं है। उदाहरण के लिए:
; Example 17.1. AMD instruction breakdown
xchg eax, ebx ; Vector path, 3 ops
nop ; Direct path, 1 op
xchg ecx, edx ; Vector path, 3 ops
nop ; Direct path, 1 op
यह अनुक्रम वेक्टर पथ के कारण डिकोड होने में 4 घड़ी चक्र लेता है
निर्देशों को अकेले डिकोड करना चाहिए।
(वह उदाहरण K8 के लिए है। K10 रन xchg r,r
एक 2 मीटर सेशन निर्देश के रूप में। Agner का कहना है कि केवल K8 के पास DirectPath डबल निर्देश हैं (और K10 में केवल एकल बनाम वेक्टर है), लेकिन वह डेविड कैंटर के आरेख को दर्शाता है। यह प्रति घड़ी 3 मी-ऑप्स (उर्फ उफ़) के थ्रूपुट के साथ एक पैक बफर दिखाता है, लेकिन इसमें खिलाने वाले डिकोडर प्रति चक्र 1 या 2 उफ का उत्पादन कर सकते हैं।
बुलडोजर परिवार के पास दोहरे निर्देश भी होते हैं, और इसके डिकोडर प्रति घड़ी 4 मीटर तक उत्पादन कर सकते हैं। तो यह एक एकल वेक्टरपैथ निर्देश, या 1-1-1-1 (चार डायरेक्टपथ एकल निर्देश), या 2-1-1 को डीकोड कर सकता है। इसका अर्थ है कि केवल पहला डिकोडर ही दोहरे निर्देशों को संभाल सकता है।
Piledriver और बाद में 2-2 पैटर्न (दो लगातार DirectPath डबल निर्देश) को भी डीकोड कर सकते हैं।
Ryzen में डिकोड किए गए निर्देशों के लिए एक यूओपी कैश है। यह प्रति आउट-आर्डर कोर में प्रति घड़ी 5 DirectPath सिंगल निर्देश जारी कर सकता है। लेकिन यदि कोई भी निर्देश डबल निर्देश हैं, तो यह प्रति घड़ी 6 यूपीएस चला सकता है। (इसलिए AVX / AVX2 को Ryzen पर इसके लायक बनाया जा सकता है, भले ही यह दो उफ़ के रूप में 256b निर्देश चलाता हो।
इंटेल की रणनीति काफी अलग है :
वे लंबाई पूर्व-डिकोड करते हैं, लेकिन इसे कहीं भी लंबे समय तक संग्रहीत नहीं करते हैं। डिकोडर डिकोडिंग का प्रयास करते हैं, और यदि एक निर्देश एक साधारण डिकोडर में काम नहीं करता है, तो यह एक मल्टी-यूओपी निर्देश है और इसे संभालने के लिए जटिल डिकोडर के लिए अगले घड़ी चक्र की प्रतीक्षा करनी होगी।
जटिल डिकोडर सीधे 4 यूओपी तक के निर्देशों को संभाल सकता है, अन्यथा यूओपी को माइक्रोकोड से आना पड़ता है।