इंटेल की हैसवेल चिप एफपी गुणन को दो गुना तेजी से जोड़ने की अनुमति क्यों देती है?


35

मैं स्टैक ओवरफ्लो पर यह बहुत दिलचस्प सवाल पढ़ रहा था:

क्या पूर्णांक गुणन वास्तव में एक आधुनिक सीपीयू पर एक ही गति से किया जाता है?

टिप्पणियों में से एक ने कहा:

"यह कुछ भी नहीं लायक है कि हैसवेल पर, एफपी मल्टीप्ले थ्रूपुट एफपी ऐड का दोगुना है। ऐसा इसलिए है क्योंकि पोर्ट 0 और 1 दोनों का उपयोग मल्टीप्ल के लिए किया जा सकता है, लेकिन केवल पोर्ट 1 का उपयोग इसके अलावा किया जा सकता है। उन्होंने कहा, आप फ्यूज्ड के साथ धोखा कर सकते हैं। -Multiply कहते हैं क्योंकि दोनों बंदरगाहों उन्हें कर सकते हैं।

ऐसा क्यों है कि वे इसके अलावा दो बार एक साथ कई गुणा अनुमति देते हैं?


3
धन्यवाद @DKNguyen! लेकिन गुणन में इसके अलावा अधिक इलेक्ट्रॉनिक्स शामिल हैं (वास्तव में इसके अलावा गुणन का अंतिम चरण है, इसलिए गुणन के लिए जो भी सर्किटरी की आवश्यकता होती है, उसमें जोड़ के लिए जो भी आवश्यक होगा) शामिल है, इसलिए मैं यह नहीं देखता कि यह कम मर क्षेत्र कैसे ले सकता है!
user1271772

5
एफपी गुणा है इसके अलावा। लघुगणक देखें।
जंका

9
@Janka जबकि एफपी गुणन को एक्सपट्र्स के अतिरिक्त की आवश्यकता होती है, यह वास्तव में मंटिस को गुणा करने के लिए आवश्यक है। संग्रहीत मंटिसा एक लघुगणक नहीं है।
इलियट एल्डरसन

6
स्काईलेक में एफडब्ल्यूआईडब्ल्यू "शुद्ध जोड़" थ्रूपुट को दोगुना कर दिया गया था, इसलिए यह हैसवेल / ब्रॉडवेल युग से एक जिज्ञासा है और कुछ प्रकार की अंतर्निहित चीज नहीं है।
हेरोल्ड

4
@ user1271772 हाँ, वे एक ही पोर्ट हैं, हालांकि: पोर्ट 0 और 1 के अलावा, और पोर्ट्स 0 पर भी गुणन 0 और 1. स्काइलेक से पहले केवल पोर्ट 1 शुद्ध जोड़ सकता है। यह भी कुछ अतिरिक्त-जैसे कार्य के लिए प्रदान अर्थात् न्यूनतम / अधिकतम / एक रूपांतरण है कि वास्तविक परिवर्तित करता है के μop तुलना (वहाँ अक्सर वहाँ में एक फेरबदल या लोड μop भी है)
हेरोल्ड

जवाबों:


37

यह संभवतः प्रश्न के शीर्षक का उत्तर देता है, यदि शरीर नहीं:

फ़्लोटिंग पॉइंट के अलावा उन्हें जोड़ने से पहले दो मंटिसा को संरेखित करने की आवश्यकता होती है (दो घातांकों के बीच अंतर के आधार पर), संभावित रूप से योजक से पहले बदलाव की एक बड़ी चर राशि की आवश्यकता होती है। फिर मंटिसा जोड़ के परिणाम को फिर से आकार देने की आवश्यकता हो सकती है, संभावित रूप से अस्थायी बिंदु परिणाम को ठीक से प्रारूपित करने के लिए पारी की एक और बड़ी चर राशि की आवश्यकता होती है। इस प्रकार दो मंटिसा बैरल शिफ्टर्स को संभावित रूप से अधिक गेट देरी, अधिक तार विलंब या अतिरिक्त चक्र की आवश्यकता होती है जो कि एक अच्छी तरह से कॉम्पैक्ट कैरी-सेव-एड-ट्री मल्टीप्लायर फ्रंट एंड के विलंब से अधिक हो।

ओपी के लिए जोड़ा गया: ध्यान दें कि 2 मिलीमीटर और 2 किलोमीटर की लंबाई जोड़ने पर 4 में से कोई भी इकाई नहीं है। इसकी वजह यह है कि एक या दूसरे माप को एक ही पैमाने या इकाई प्रतिनिधित्व में बदलने की आवश्यकता है। उस रूपांतरण को आवश्यक रूप से 10. की कुछ शक्ति द्वारा गुणा की आवश्यकता होती है। एक ही बात आमतौर पर फ़्लोटिंग पॉइंट जोड़ के दौरान होने की आवश्यकता होती है, क्योंकि फ़्लोटिंग पॉइंट संख्याएं वैरिएबल स्केल किए गए पूर्णांकों का एक रूप हैं (उदाहरण के लिए एक इकाई या स्केल फैक्टर है, एक घातांक, जिसके साथ संबद्ध है) प्रत्येक संख्या)। तो आपको एक ही यूनिट या स्केल का प्रतिनिधित्व करने के लिए कच्चे मंटिसा बिट्स जोड़ने से पहले 2 की शक्ति से संख्याओं में से एक को स्केल करने की आवश्यकता हो सकती है। यह स्केलिंग अनिवार्य रूप से 2 की शक्ति से गुणा का सरल रूप है। इस प्रकार, फ्लोटिंग पॉइंट जोड़ को गुणा की आवश्यकता होती है(जो कि 2 की शक्ति होने के नाते, एक चर बिट शिफ्ट या बैरल शिफ्टर के साथ किया जा सकता है, जिसे ट्रांजिस्टर आकारों के संबंध में अपेक्षाकृत लंबे तारों की आवश्यकता हो सकती है, जो कि गहरे उप-माइक्रोन-लिथोग्राफी सर्किट में अपेक्षाकृत धीमी हो सकती है)। यदि दो संख्याएं अधिकतर रद्द हो जाती हैं (क्योंकि एक दूसरे के लगभग नकारात्मक है), तो परिणाम के परिणाम के साथ-साथ परिणाम को उपयुक्त रूप से प्रारूपित करने की आवश्यकता हो सकती है। इसके अलावा धीमी गति से किया जा सकता है अगर इसके लिए 2 गुना (पूर्व और बाद) चरणों की आवश्यकता होती है, जो कच्चे या निश्चित (परिमित) बाइनरी जोड़ के बराबर होते हैं, जो मंटिसा बिट्स की संख्या के बराबर इकाइयों या पैमाने का प्रतिनिधित्व करते हैं, संख्या स्वरूप (IEEE फ़्लोटिंग पॉइंट) की प्रकृति के कारण )।

# 2 जोड़ा गया: इसके अलावा, कई बेंचमार्क वजन FMACS (गुणा-संचित) से अधिक नंगे कहते हैं। एक जुड़े हुए मैक में, परिशिष्ट के संरेखण (शिफ्ट) को अक्सर बहु ​​के साथ समानांतर में किया जा सकता है, और अंतिम कैरी प्रसार से पहले मंटिसा ऐड को अक्सर CSA ट्री में शामिल किया जा सकता है।


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है । किसी भी निष्कर्ष पर पहुंचे प्रश्न और / या किसी भी उत्तर में वापस संपादित किया जाना चाहिए।
डेव ट्वीड

3
मैं बीएस को फोन कर रहा हूं। निश्चित रूप से एफपी में वास्तविक गुणा गुणा ऑपरेशन संभवतः दो बैरल पारियों की तुलना में कठिन नहीं हो सकता है।
user253751

5
"कठिन", संभावित रूप से तेज़, और योग्य अनुकूलन, दिए गए प्रोजेक्ट की कमी और लक्ष्य, 4 अलग-अलग चीजें हैं।
हॉटपावर

3
@ मिनीबिस: हसवेल से पहले, इंटेल सीपीयू में 1 SIMD FP ऐड यूनिट (3 चक्र विलंबता), और 1 SIMD FP मूल इकाई (5 चक्र विलंबता) थी। इसलिए ऐड गुणा से ज्यादा तेज है। (यही कारण है कि एससीएल जैसी एफएमए इकाई पर चलने के बजाय एफएमए ने एफएमए और एमएफएल के लिए 2x एफएमए इकाइयों को जोड़ते हुए एक अलग एफपी ऐड यूनिट को रखा है)। इसके अलावा, SIMD-int शिफ्ट्स 1c लेटेंसी, बनाम SIMD-int mul के साथ 5c लेटेंसी (एक FMA इकाई में महत्वपूर्ण गुणक पर piggybacking) के साथ चलती है। तो हाँ, शिफ्ट गुणा की तुलना में बहुत सस्ता है। ऐड और मुल दोनों पूरी तरह से पाइपलाइज्ड हैं, इसलिए आउटपुट को सामान्य करने के लिए दोनों को एक अलग बैरल शिफ्टर की जरूरत होती है।
पीटर कॉर्ड्स

22

एफपी गुणा में, घातांक प्रसंस्करण सरल जोड़ निकला (ठीक उसी कारण से जो लॉग डोमेन में गुणन मात्र है)। तुम लकड़हारे के पास आए हो, मुझे आशा है।

अब विचार करें कि लघुगणक रूप में दो संख्याओं को जोड़ना कितना कठिन है ...

फ़्लोटिंग पॉइंट दोनों के पहलुओं के साथ रैखिक और लॉग डोमेन के बीच एक ग्रे क्षेत्र का निवास करता है। प्रत्येक एफपी नंबर में एक मंटिसा (जो रैखिक है) और एक (लघुगणक) प्रतिपादक शामिल है। मंटिसा में प्रत्येक बिट का अर्थ निर्धारित करने के लिए, आपको सबसे पहले घातांक (जो सिर्फ एक स्केल फैक्टर है) को देखना होगा।

एफपी के अलावा, सामान्य मामले में प्रतिपादक प्रसंस्करण के लिए, प्रति बैरल दो बार मंटिसा शिफ्टिंग की आवश्यकता होती है, जहां प्रत्येक बैरल शिफ्ट प्रभावी रूप से थोड़ा सरलीकृत गुणा का एक विशेष मामला है।

(पहली पारी दोनों इनपुट्स को 2 की एक ही शक्ति पर संरेखित करती है, ताकि प्रत्येक ऑपरेंड में एक मंटिसा बिट का बाइनरी वजन समान हो।

एक दशमलव उदाहरण पर्याप्त होगा (हालांकि बाइनरी स्पष्ट रूप से उपयोग किया जाता है) ...

(3103)+(1101)=(3103)+(0.0001103)

दूसरा फिर से उत्पादन तराजू ...

1100+(0.999100)=0.001100=1103

इसलिए विरोधाभासी रूप से, एक एफपी जोड़ में दो गुणाओं की तरह बहुत कुछ शामिल होता है, जिन्हें क्रमिक रूप से प्रदर्शन करना पड़ता है, उनके बीच मेंटाइसा जोड़ होता है। उस प्रकाश में, रिपोर्ट किया गया प्रदर्शन इतना आश्चर्यजनक नहीं है।


8
"विचार करें कि लघुगणक रूप में दो संख्याओं को जोड़ना कितना कठिन है" बहुत ज्ञानवर्धक था।
पीटर - मोनिका

1
हालांकि सौभाग्य से, फ्लोटिंग पॉइंट एक्सपेंटर सिर्फ पूर्णांक हैं, इसलिए आपको 1.3 + 2.3 = 2.34 की तरह कुछ भी जोड़ना नहीं है, यह सिर्फ मंत्रों का स्थानांतरण है।
इलकाचु 16

1
आप प्रति चक्र में दो गुणा कर सकते हैं इसका कारण यह है कि दो गुणा इकाइयाँ हैं, इसलिए नहीं कि गुणा इकाई जोड़ इकाई की तुलना में तेज़ है (देखें pjc50 के उत्तर में आरेख)। आप इस प्रश्न का उत्तर यह बताकर नहीं दे सकते हैं कि आपको क्यों लगता है कि एक अतिरिक्त इकाई एक गुणा इकाई से धीमी है। इसके अलावा, अन्य उत्तर अब तक कहते हैं कि जोड़ इकाई में विलंबता कम है, यह सुझाव देता है कि जोड़ सरल ऑपरेशन है।
user253751

2
@ मिनीबिस: आपका अवलोकन सही है। लेकिन सवाल यह है कि "यह मामला क्यों है?" की तर्ज पर दो अतिरिक्त इकाइयाँ नहीं दी गई हैं, यह देखते हुए कि इसके अलावा इतना आसान / सस्ता है कि खस्ता है? उत्तर का एक हिस्सा है, "एफपी में, यह वास्तव में सरल नहीं है"। बाकी अर्थशास्त्र में नीचे आता है: वास्तविक खर्च, और अपेक्षित कार्यभार का बहुत अधिक अध्ययन, दूसरे योजक ने अपनी जगह को सही नहीं ठहराया। सिलिकॉन। मैं उस हिस्से पर विस्तार करने के लिए अन्य उत्तर छोड़ दूंगा।
ब्रायन ड्रममंड

कुछ कंप्यूटर वैज्ञानिक (जैसे कहन (IEEE754 FP के वास्तुकार) और नूथ) का तर्क है कि "मंटिसा" गलत शब्द है क्योंकि यह रैखिक (लघुगणक नहीं) है। पसंदीदा आधुनिक शब्द महत्व है। en.wikipedia.org/wiki/Significand#Use_of_%22mantissa%22 । "मंटिसा" कम सिलेबल्स के साथ एक कूलर-दिखने वाला शब्द है, हालांकि।
पीटर कॉर्ड्स

16

टीएल: डीआर : क्योंकि इंटेल ने सोचा था कि एसएसई / एवीएक्स एफपी जोड़ विलंबता थ्रूपुट की तुलना में अधिक महत्वपूर्ण था, उन्होंने इसे हसवेल / ब्रॉडवेल में एफएमए इकाइयों पर नहीं चलाने के लिए चुना।


हैसवेल रन (SIMD) एफपीए को एफएमए ( फ्यूज्ड मल्टीप्ली-ऐड ) के रूप में एक ही निष्पादन इकाइयों पर गुणा करता है , जिनमें से यह दो है क्योंकि कुछ एफपी-गहन कोड ज्यादातर एफएमए का उपयोग प्रति निर्देश 2 एफएलओपी करने के लिए कर सकते हैं। FMA के रूप में समान 5 चक्र विलंबता, और mulpsपहले के CPU (Sandybridge / IvyBridge) पर। हसवेल को 2 एफएमए इकाइयाँ चाहिए थीं, और इसमें कोई कमी नहीं होने दी गई, क्योंकि वे पहले से ही सीपीयू में समर्पित मल्टीप्ल यूनिट के समान लेटेंसी हैं।

लेकिन यह पहले के सीपीयू से अभी भी चलने के लिए addps/ addpd3 चक्र विलंबता के साथ समर्पित SIMD FP ऐड यूनिट रखता है। मैंने पढ़ा है कि संभावित तर्क वह कोड हो सकता है जो बहुत से एफपी को जोड़ देता है, अपने विलंबता पर टोंटी को जोड़ देता है, थ्रूपुट के माध्यम से नहीं। यह केवल एक (वेक्टर) संचायक के साथ एक सरणी के एक भोले योग के लिए निश्चित रूप से सच है, जैसे कि आप अक्सर जीसीसी ऑटो-वेक्टरिंग से प्राप्त करते हैं। लेकिन मुझे नहीं पता कि इंटेल ने सार्वजनिक रूप से पुष्टि की है कि उनका तर्क था।

ब्रॉडवेल एक ही है ( लेकिन sped mulps/mulpd 3c विलंबता तक जबकि FMA 5c पर रहा)। शायद वे एफएमए इकाई को शार्टकट करने में सक्षम थे और डमी ऐड करने से पहले गुणा परिणाम निकाल सकते थे 0.0, या शायद कुछ पूरी तरह से अलग हो और इस तरह बहुत सरल भी हो। BDW ज्यादातर बदलावों के मामूली होने के साथ HSW का डाई-सिकोड़ना है।

Skylake में सब कुछ FP (जोड़ सहित) FMA इकाई पर 4 चक्र विलंबता और 0.5c थ्रूपुट के साथ चलता है, बेशक div / sqrt और बिटवाइज बूलियन्स (जैसे निरपेक्ष मूल्य या नकार के लिए)। इंटेल ने स्पष्ट रूप से फैसला किया कि यह लोअर-लेटेंसी एफपी ऐड के लिए अतिरिक्त सिलिकॉन के लायक नहीं था, या असंतुलित addpsथ्रूपुट समस्याग्रस्त था। और अक्षांशों के मानकीकरण से राइट-बैक टकराव (जब एक ही चक्र में 2 परिणाम तैयार होते हैं) से बचने के लिए यूरेनियम शेड्यूलिंग से बचना आसान हो जाता है। यानी शेड्यूलिंग और / या पूर्ण पोर्ट को सरल करता है।

तो हाँ, इंटेल ने इसे अपने अगले प्रमुख माइक्रोआर्किटेक्चर संशोधन (स्काईलेक) में बदल दिया। एफएमए विलंबता को 1 चक्र से कम करने से उन मामलों के लिए एक समर्पित SIMD FP ऐड यूनिट का लाभ बहुत कम हो गया जो विलंबता से बंधे थे।

Skylake भी AVX512 के लिए इंटेल के तैयार होने के संकेत दिखाता है, जहां एक अलग SIMD-FP योजक को 512 बिट्स तक चौड़ा करने से अधिक मर क्षेत्र हो सकता है। Skylake-X (AVX512 के साथ) कथित तौर पर नियमित रूप से Skylake- क्लाइंट के लिए लगभग समान-समान कोर है, बड़े L2 कैश को छोड़कर और (कुछ मॉडल में) एक अतिरिक्त 512-बिट FMA इकाई "पोर्ट 5 के लिए" पर बोल्ट किया गया।

SKX ने पोर्ट 1 SIMD ALU को बंद कर दिया जब 512-बिट उड्स उड़ान में हैं, लेकिन इसे vaddps xmm/ymm/zmmकिसी भी बिंदु पर निष्पादित करने का एक तरीका चाहिए । इससे पोर्ट 1 पर एक समर्पित FP ADD इकाई की समस्या हो गई, और मौजूदा कोड के प्रदर्शन से बदलाव के लिए एक अलग प्रेरणा है।

मजेदार तथ्य: स्काईलेक, काबलेक, कॉफी लेक और यहां तक ​​कि कैस्केड झील का सब कुछ स्काईलेक के लिए सूक्ष्म रूप से समान है, सिवाय कैस्केड झील के कुछ नए AVX512 निर्देशों को जोड़ने के लिए। IPC अन्यथा नहीं बदला है। नए CPU में बेहतर iGPU होते हैं, हालांकि। आइस लेक (सनी कोव माइक्रोआर्किटेक्चर) कई वर्षों में पहली बार हुआ है कि हमने एक वास्तविक नया माइक्रोआर्किटेक्चर देखा है (कभी-व्यापक रूप से जारी की गई तोप झील को छोड़कर)।


एफएमएडी इकाई बनाम एफएडीडी इकाई की जटिलता पर आधारित तर्क दिलचस्प हैं लेकिन इस मामले में प्रासंगिक नहीं हैं । एक FMA इकाई में FMA 1 के भाग के रूप में FP जोड़ के अलावा सभी आवश्यक शिफ्टिंग हार्डवेयर शामिल हैं ।

नोट: मेरा मतलब x87 fmulनिर्देश नहीं है , मेरा मतलब है कि एक SSE / AVX SIMD / स्केलर FP का गुणा ALU है जो 32-बिट एकल-परिशुद्धता / floatऔर 64-बिट doubleपरिशुद्धता (53-बिट महत्व का उर्फ ​​मंटिसा) का समर्थन करता है। जैसे निर्देश mulpsया mulsd। वास्तविक 80-बिट x87fmul अभी भी पोर्ट 0 पर हैसवेल पर केवल 1 / क्लॉक थ्रूपुट है।

आधुनिक सीपीयू के पास समस्याओं को फेंकने के लिए पर्याप्त ट्रांजिस्टर से अधिक है जब यह इसके लायक है , और जब यह भौतिक-दूरी प्रसार देरी की समस्याओं का कारण नहीं बनता है। विशेष रूप से निष्पादन इकाइयों के लिए जो केवल कुछ समय में सक्रिय हैं। Https://en.wikipedia.org/wiki/Dark_silicon और यह 2011 सम्मेलन का पेपर देखें डार्क सिलिकॉन और मल्टीकोर स्केलिंग का अंत:। यह सीपीयू के लिए बड़े पैमाने पर एफपीयू थ्रूपुट और बड़े पैमाने पर पूर्णांक थ्रूपुट के लिए संभव बनाता है, लेकिन एक ही समय में दोनों नहीं (क्योंकि उन विभिन्न निष्पादन इकाइयां एक ही प्रेषण बंदरगाहों पर हैं ताकि वे एक-दूसरे के साथ प्रतिस्पर्धा करें)। बहुत सावधानी से ट्यून किए गए कोड में जो कि मेम बैंडविड्थ पर अड़चन नहीं डालता है, यह बैक-एंड एक्ज़ीक्यूशन इकाइयाँ नहीं हैं जो सीमित कारक हैं, बल्कि फ्रंट-एंड इंस्ट्रक्शन थ्रूपुट हैं। )। Http://www.lighterra.com/papers/modernmicroprocessors/ भी देखें


हसवेल से पहले

HSW से पहले , Nehalem और Sandybridge जैसे Intel CPU में पोर्ट 0 पर SIMD FP गुणा और पोर्ट 1 पर SIMD FP ऐड था। इसलिए अलग निष्पादन इकाइयाँ थीं और थ्रूपुट संतुलित था। ( https://stackoverflow.com/questions/8389648/how-do-i-achieve-the-theoretical-maximum-of-4-flops-per-cycle

हैसवेल ने इंटेल सीपीयू में एफएमए समर्थन पेश किया (एएमडी ने बुलडोजर में एफएमए 4 पेश करने के कुछ साल बाद, इंटेल ने उन्हें देर से इंतजार करने के बाद बाहर निकाल दिया क्योंकि वे इसे सार्वजनिक कर सकते थे कि वे 3-ऑपरेंड एफएमए लागू करने जा रहे थे, 4-ऑपरेंड नॉन -destructive- गंतव्य FMA4)। मजेदार तथ्य: जून 2013 में हसवेल से करीब एक साल पहले एएमडी पाइलड्राइवर एफएमए 3 वाला पहला एक्स 86 सीपीयू था

यह भी 3 आदानों के साथ एक एकल का समर्थन करने के लिए आंतरिक की कुछ प्रमुख हैकिंग की आवश्यकता है। लेकिन वैसे भी, इंटेल सभी में चला गया और दो-256 बिट SIMD FMA इकाइयों में डालने के लिए कभी-सिकुड़ते ट्रांजिस्टर का लाभ उठाया, जिससे एफपी गणित के लिए हसवेल (और उसके उत्तराधिकारी) जानवर बन गए।

एक प्रदर्शन लक्ष्य इंटेल के दिमाग में हो सकता है था BLAS घने मैटमूल और वेक्टर डॉट उत्पाद। उन दोनों को ज्यादातर FMA का उपयोग कर सकते हैं और बस जोड़ने की जरूरत नहीं है ।

जैसा कि मैंने पहले उल्लेख किया है, कुछ वर्कलोड जो ज्यादातर या सिर्फ एफपी जोड़ते हैं, जोड़ विलंबता पर अड़चन डालते हैं, (ज्यादातर) थ्रूपुट के माध्यम से।


फुटनोट 1 : और एक गुणक के साथ 1.0, एफएमए का शाब्दिक रूप से जोड़ के लिए उपयोग किया जा सकता है, लेकिन एक addpsनिर्देश से बदतर विलंबता के साथ । यह संभावित रूप से वर्कलोड के लिए उपयोगी है जैसे कि L1d कैश में गर्म होने वाली सरणी को समेटना, जहां एफपी विलंबता से अधिक थ्रूपुट मामलों को जोड़ता है। यह केवल तभी मदद करता है जब आप विलंबता को छुपाने के लिए कई वेक्टर संचायक का उपयोग करते हैं, और निश्चित रूप से एफपी निष्पादन इकाइयों (5c विलंबता / 0.5c थ्रूपुट = 10 संचालन विलंबता * बैंडविड्थ उत्पाद) में उड़ान में १० एफएमए संचालन रखते हैं। आपको वेक्टर डॉट उत्पाद के लिए FMA का उपयोग करते समय भी ऐसा करने की आवश्यकता है

देखें डेविड कान्टर का सैंडिब्रिज माइक्रोआर्किटेक्चर का लेखन जिसमें एक ब्लॉक आरेख है जिसमें यूरोपीय संघ, एनएचएम, एसएनबी और एएमडी बुलडोजर-परिवार के लिए बंदरगाह है। ( एग्नर फॉग के इंस्ट्रक्शन टेबल और एएसएम ऑप्टिमाइजेशन गाइड गाइड भी देखें और https://uops.info/ भी देखें जिसमें Intel माइक्रोआर्किटेक्चर की कई पीढ़ियों पर लगभग हर निर्देश के uops, पोर्ट्स, और लेटेंसी / थ्रूपुट का प्रायोगिक परीक्षण किया गया है।)

इसके अलावा संबंधित: https://stackoverflow.com/questions/8389648/how-do-i-achieve-the-theoretical-maximum-of-4-flops-per-cycle


1
मामले में आप क्या यह के लिए मेरे शब्द लेने के लिए के बारे में सोच रहे हैं: स्टैक ओवरफ़्लो पर, मैं सहित सोने बैज [cpu-architecture], [performance], [x86-64], [assembly], और [sse]। मैंने हाथ से लिखे विधानसभा की तुलना में Collatz अनुमान को तेजी से जांचने के लिए C ++ कोड पर एक उत्तर लिखा - क्यों? बहुत सारे लोग सोचते हैं कि यह अच्छा है। इसके अलावा इस OOO के बारे में निष्पादन pipelined।
पीटर कॉर्ड्स

"BDW ज्यादातर बदलावों के मामूली होने के साथ HSW का डाई-सिकोड़ना है।" ऐसा लगता है कि वे जानबूझकर कुछ अनुकूलन छोड़ गए हैं, संभवतः पहले वित्तीय कारणों से।
jpaugh

2
@jpaugh: en.wikipedia.org/wiki/Tick%E2%80%93tock_model देखें - 2006 से इंटेल की योजना (जब तक कि वे 10nm पर एक सड़क को नहीं मारते) तब तक मामूली बदलाव के साथ एक नई प्रक्रिया पर मर चुका था, फिर नया आर्किटेक्चर पहले से ही परीक्षण प्रक्रिया पर। याद रखें कि विकास उड़ान में कई भविष्य के डिजाइन के साथ वर्षों के लिए पाइपलाइन में है: वे अगले पर शुरू करने से पहले एक को खत्म नहीं करते हैं। ब्रॉडवेल का इरादा हमेशा स्काईलेक "टॉक" से पहले सिर्फ एक "टिक" होना था, जिसने उनकी 14nm विनिर्माण प्रक्रिया का पूरा फायदा उठाया और प्रक्रिया को डिबग करने के बारे में चिंता करने की ज़रूरत नहीं थी, बस डिज़ाइन
पीटर कॉर्ड्स

मैं लिंक की सराहना करता हूं। आपने अनिवार्य रूप से मेरी भावना को प्रतिध्वनित किया है, भले ही मैं जितना भी कर सकता हूं, उससे कहीं अधिक सटीकता के साथ।
jpaugh

8

मैं इस भाग को देखने जा रहा हूं:
"ऐसा क्यों है कि वे अनुमति देते हैं " ...
टीएल; डीआर - क्योंकि उन्होंने इसे इस तरह से डिजाइन किया था। यह एक प्रबंधन निर्णय है। निश्चित रूप से मंटिसा और बिट शिफ्टर्स के उत्तर हैं, लेकिन ये ऐसी चीजें हैं जो प्रबंधन के फैसले में जाती हैं।

उन्होंने इसे इस तरह से क्यों डिजाइन किया? इसका उत्तर यह है कि ऐनक कुछ लक्ष्यों को पूरा करने के लिए बनाई गई है। उन लक्ष्यों में प्रदर्शन और लागत शामिल हैं। प्रदर्शन को संचालन की ओर नहीं बल्कि Crysis में FLOPS या FPS जैसे एक बेंचमार्क के रूप में देखा जाता है।
इन बेंचमार्क में कार्यों का मिश्रण होगा, उनमें से कुछ को एक ही समय में संसाधित किया जा सकता है।
यदि डिज़ाइनर यह पता लगाते हैं कि विजेट A के दो फ़ंक्शन होने के बजाय विजेट A के दो फ़ंक्शन बहुत तेज़ हैं, तो वे विजेट A के साथ जाएंगे और A के दो और B के दो को लागू करने में अधिक खर्च आएगा।

पीछे देखते हुए जब सुपर चिप्स और सुपर पाइपलाइन (मल्टी-कोर से पहले) पहली बार कमर्शियल चिप्स पर आम हो गए, ये प्रदर्शन बढ़ाने के लिए थे। पेंटियम में दो पाइप होते हैं, और कोई वेक्टर एकजुट नहीं होता है। हैसवेल में अधिक पाइप, वेक्टर इकाइयां, एक गहरा पाइप, समर्पित फ़ंक्शन और बहुत कुछ है। वहाँ सब कुछ के दो क्यों नहीं हैं? क्योंकि उन्होंने इसे इस तरह से डिजाइन किया था।


एक अधिक प्रासंगिक प्रदर्शन लक्ष्य BLAS सघन मैटमूल और वेक्टर डॉट उत्पाद हो सकता है। उन दोनों को ज्यादातर FMA का उपयोग कर सकते हैं और बस जोड़ने की जरूरत नहीं है।
पीटर कॉर्ड्स

मैंने कभी किसी उत्पाद बॉक्स पर BLAS घने मैटमूल और वेक्टर डॉट उत्पाद नहीं देखे हैं। इन्हें विज्ञापनों में नहीं देखा गया। उत्पाद समीक्षा में इन्हें नहीं देखा गया। (निश्चित रूप से वे महत्वपूर्ण हैं, लेकिन इंजीनियरिंग प्रबंधन का अनुसरण करता है, प्रबंधन विपणन का अनुसरण करता है, विपणन बिक्री का अनुसरण करता है। बिक्री नियमित लोगों द्वारा खरीदी जाती है।
पूर्व

1
मैंने सीपीयू समीक्षाएँ देखी हैं जिसमें लिनपैक जैसे बेंचमार्क शामिल हैं। लेकिन वैसे भी, जैसा कि आप कहते हैं (सैद्धांतिक अधिकतम) FLOPS को विज्ञापित किया जाता है, और यह मूल रूप से matmul प्रदर्शन के लिए एक प्रॉक्सी है अगर कैश रख सकते हैं। मुझे यकीन नहीं है कि अगर कोई स्पस्टफैप बेंचमार्क एचएसडब्ल्यू या एसकेएल दोनों एफएमए इकाइयों को संतृप्त करने के करीब आता है, लेकिन स्पेसिफिक बेंचमार्क बहुत मायने रखता है। सभी बिक्री खुदरा एक-एक-समय बिक्री नहीं हैं; कुछ परिष्कृत खरीदारों जैसे सुपरकंप्यूटर क्लस्टर खरीदार अपग्रेड या कॉर्पोरेट सर्वर फार्मों के लिए निर्णय लेते हैं। उन बिक्री पर मार्जिन अधिक है, मुझे भी लगता है।
पीटर कॉर्ड्स

6

इंटेल से यह आरेख मदद कर सकता है:

Haswell Execution Unit Overview

ऐसा प्रतीत होता है कि उन्होंने प्रत्येक इकाई को एक FMA (बहु-रूप से जोड़ा हुआ) और साथ ही एक एकल और एक एकल योजक दिया है। वे नीचे हार्डवेयर को साझा या नहीं कर सकते हैं।

के सवाल क्यों प्रोसेसर मानक का एक सेट, वास्तविक उपयोग के मामलों से व्युत्पन्न को लक्षित किया जाएगा: आंतरिक डिजाइन रेश्नल्स बिना एक बहुत जवाब करने के लिए कठिन है, लेकिन बैंगनी बॉक्स में पाठ हमें "युगल शिखर फ्लॉप" के साथ एक संकेत देता है। FMA इनमें बहुत लोकप्रिय है क्योंकि यह मैट्रिक्स गुणन की मूल इकाई है। बेयर जोड़ कम लोकप्रिय है।

जैसा कि बताया गया है, दोनों बंदरगाहों का उपयोग एफएमए अनुदेश के साथ करने के लिए कर सकते हैं जहां गुणन पैरामीटर 1 है, कंप्यूटिंग (ए एक्स 1) + बी। यह नंगे जोड़ की तुलना में थोड़ा धीमा होगा।


एफपी गुणा एफएमए इकाई पर चलता है। FP केवल पोर्ट 1 पर समर्पित SIMD FP ऐड यूनिट पर कम विलंबता के साथ चलता है। यह संभव है कि यह उस बंदरगाह पर FMA इकाई के साथ कुछ ट्रांजिस्टर साझा करता है, लेकिन मैंने जो पढ़ा है उससे मुझे यह धारणा मिली है कि इसे प्रदान करने के लिए महत्वपूर्ण अतिरिक्त क्षेत्र लगता है।
पीटर कॉर्ड्स

अधिक विवरण के साथ एक उत्तर पोस्ट किया ।
पीटर कॉर्ड्स

4

आइए समय लेने वाले चरणों पर एक नज़र डालें:

जोड़: घातांक संरेखित करें (एक बड़े पैमाने पर बदलाव ऑपरेशन हो सकता है)। एक 53 बिट योजक। सामान्यीकरण (53 बिट तक)।

गुणन: दो १०६ बिट संख्या के योग में ५३ x ५३ एक बिट उत्पादों को कम करने के लिए एक विशाल योजक नेटवर्क। एक 106 बिट योजक। सामान्यीकरण। मैं कहूंगा कि बिट उत्पादों को दो संख्याओं तक कम करने से अंतिम योजक के रूप में तेजी से किया जा सकता है।

यदि आप गुणन चर समय बना सकते हैं तो आपको यह फायदा होगा कि सामान्यीकरण केवल अधिकांश समय एक बिट से शिफ्ट होगा, और आप अन्य मामलों का बहुत जल्दी (असामान्य इनपुट, या घातांक का योग बहुत छोटा है) का पता लगा सकते हैं।

इसके अलावा, सामान्यीकरण चरणों की आवश्यकता बहुत आम है (संख्याओं को जोड़ना जो समान आकार के नहीं हैं, संख्याओं को घटाना जो पास हैं)। तो गुणा के लिए आप एक तेज़ रास्ता तय कर सकते हैं और धीमे रास्ते के लिए बड़े पैमाने पर हिट कर सकते हैं; इसके अलावा आप नहीं कर सकते।

पुनश्च। टिप्पणियों को पढ़ना: यह समझ में आता है कि असामान्य संख्याओं को जोड़ने से जुर्माना नहीं लगता है: इसका मतलब केवल यह है कि बिट्स के बीच जो एक्सप्लर्स को संरेखित करने के लिए स्थानांतरित किए जाते हैं, कई शून्य हैं। और असामान्य परिणाम का मतलब है कि आप अग्रणी शून्य को हटाने के लिए शिफ्टिंग बंद कर देते हैं यदि वह घातांक को बहुत छोटा कर देगा।


इंटेल सीपीयू वास्तव में एक माइक्रोकोड सहायता के माध्यम से उप-असामान्य गुणा (इनपुट या आउटपुट) संभालते हैं; यानी नियमित FPU इस मामले के लिए एक अतिरिक्त पाइपलाइन चरण होने के बजाय एक अपवाद का संकेत देता है। एगनर फॉग फिर से कहता है: सैंडब्रिज मेरे परीक्षणों में, अंडरफ्लो और डेमॉन्सेबल नंबरों के मामलों को केवल सामान्य फ्लोटिंग पॉइंट नंबरों के रूप में तेजी से संभाला गया था, लेकिन गुणन के लिए नहीं। यही कारण है कि -ffast-mathएफटीजेड / डीएजेड (फ्लश डिनर्मल्स को शून्य करने के लिए) सेट के साथ संकलन करने के बजाय एफपी सहायता लेने के लिए।
पीटर कॉर्ड्स

एग्नर के माइक्रो गाइड में , वे कहते हैं कि हमेशा एक जुर्माना होता है जब सामान्य इनपुट के साथ ऑपरेशन एक उप-असामान्य आउटपुट का उत्पादन करते हैं। लेकिन सामान्य + सबनॉर्मल जोड़ने पर कोई जुर्माना नहीं लगता है। ताकि सारांश समीक्षा गलत हो सकती है, या यूआरके गाइड गलत है। एगनर का कहना है कि नाइट की लैंडिंग (ज़ीओन फी) के पास मौल / ऐड पर किसी भी सबऑर्मल के लिए कोई जुर्माना नहीं है, केवल विभाजित करें। लेकिन KNL में मुख्यधारा हैसवेल (5c) / SKL (4C) की तुलना में उच्च विलंबता जोड़ / mul / FMA (6c) है। दिलचस्प बात यह है कि एएमडी रायज़ेन पर केवल कुछ चक्रों का जुर्माना है, बनाम बुलडोजर-परिवार पर एक बड़ा जुर्माना।
पीटर कॉर्ड्स

तनातनी के कारण, GPU सभी विलंब के बारे में हैं, विलंबता के बारे में नहीं, इसलिए उन्होंने आमतौर पर सबमर्सल के लिए भी सभी मामलों के लिए विलंबता निर्धारित की है। माइक्रोकोड में फंसना शायद उस तरह की नंगे हड्डियों की पाइपलाइन का विकल्प भी नहीं है।
पीटर कॉर्ड्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.