क्या कंप्यूटर वास्तव में कैरी-लुकहेड योजक का उपयोग करते हैं?


12

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

मेरा सवाल यह है कि क्या कोई विशिष्ट स्थान / कार्यान्वयन कैरी लुकहेड योजक का उपयोग किया जाता है? या वे वास्तविक दुनिया के लिए अप्रासंगिक हैं?


1
उच्च प्रदर्शन प्रोसेसर और उनके एकल चक्र का चक्र समय विलंबता को निश्चित रूप से रिपल-कैरी (लेकिन यह कैरी-चयन की अनुमति देता है) का उपयोग नहीं करता है। यहां तक ​​कि इंटेल की 22nm प्रक्रिया के लिए, 300 बिट से कम में 64 बिट्स के माध्यम से चीरना असंभव हो सकता है।
पॉल ए। क्लेटन

@ PaulA.Clayton मुझे कुछ डेटाशीट के माध्यम से देखने से आभास होता है कि कैरी-सिलेक्ट या डिकोडर जैसे ऐड का उपयोग किया जाता है।
20

जवाबों:


16

यह बहुत ही जटिल उत्तर के साथ एक सीधा सवाल है।

सबसे पहले, कुछ पृष्ठभूमि।

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

दूसरे, आपको एक परियोजना के पूरे जीवन-चक्र पर विचार करना होगा। एक योजक जो वीएलएसआई अहसास के लिए उपयुक्त है, एक एफपीजीए अहसास के लिए उपयुक्त नहीं हो सकता है। यदि डिजाइन एक FPGA पर परीक्षण किए जा रहे चरण से गुजरने वाला है ... तो आपको तस्वीर मिल जाएगी।

तीसरा, प्रत्येक योजक को समान नहीं बनाया जाता है। एक विशिष्ट सीपीयू पर, बहुत सारे योजक लटकाए जाते हैं, जो अलग-अलग कार्य करते हैं; वहाँ शायद कई पूर्णांक ALUs हैं, एक अस्थायी बिंदु mantissa योजक, एक योजक जो पता गणना करता है, एक योजक जो शाखा लक्ष्यों की गणना करता है, और इसी तरह। यह कैरी-सेव एडर्स की गिनती नहीं है जो आपको आधुनिक गुणन इकाइयों में मिलते हैं। प्रत्येक की अपनी ख़ासियतें और अड़चनें हैं।

उदाहरण के लिए, शाखा लक्ष्य गणना में आम तौर पर एक पूर्ण शब्द के साथ एक छोटा सा स्थिरांक शामिल होता है, जो एक से एक अलग योजक डिजाइन का सुझाव देता है, जो एक साथ दो पूर्ण जोड़ देता है। इसी तरह, फ्लोटिंग पॉइंट एडिशन के लिए एक पोस्ट-अतिरिक्त राउंडिंग चरण की आवश्यकता होती है, जो एक चक्र से कम हो सकता है, इसलिए ऐसा कोई कारण नहीं है कि आप अतिरिक्त चक्र को समाप्त करने के लिए बाकी चोरी नहीं कर सके।

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

कहा कि, कुछ चीजें हैं जो हम जानते हैं।

आपको महसूस करने के लिए महत्वपूर्ण बात यह है कि कैरी-लुकहेड विधियां ब्लॉक का निर्माण कर रही हैं, और जरूरी नहीं कि वे अपने आप में विधियां हों। एक सादृश्य यहाँ क्रम में हो सकता है।

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

जीएनयू सी ++ मानक पुस्तकालय से सॉर्ट एल्गोरिथ्म, उदाहरण के लिए, त्वरित सॉर्ट का उपयोग करता है, जब अंतराल काफी छोटा हो जाता है। हालांकि, अगर कुछ पास होने के बाद ऐसा लगता है कि त्वरित प्रकार के विभाजन ने पैथोलॉजिकल व्यवहार को प्रभावित किया है, तो यह वापस छंटनी करने के लिए गिरता है। यह एक औद्योगिक ताकत बनाने के लिए तीन अलग-अलग प्रकार के एल्गोरिदम हैं।

योजक सर्किट का भी यही हाल है। यह ज्ञात है, उदाहरण के लिए, पेंटियम 4 पूर्णांक इकाई ने हान-कार्लसन योजक का उपयोग किया, जो कोगे-स्टोन और ब्रेंट-कुंग का मिश्रण है। (हान-कार्लसन विशेष रूप से दिलचस्प है, क्योंकि यह प्रसार में देरी और डाई क्षेत्र के बीच व्यापार में एक "मीठा स्थान" है, जो काफी शक्ति-कुशल भी है।) यह अक्सर कई तरीकों के मिश्रण का उपयोग करने के लिए भुगतान करता है।

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

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

क्योंकि आप जानते हैं कि धीमी गति से दो चक्र लगेंगे, डिजाइनर अधिक स्थान और शक्ति-कुशल पद्धति का उपयोग कर सकते हैं, भले ही यह सामान्य उपयोग के लिए बहुत धीमा हो।


6

हां, कई कंप्यूटर कैरी-लुकहेड योजक का उपयोग करते हैं। मैंने कुछ पुराने माइक्रोप्रोसेसरों को रिवर्स-इंजीनियर किया है और मैं कुछ उदाहरण दे सकता हूं।

Intel 8008 (उनके पहले 8-बिट प्रोसेसर) पर ALU में डायनामिक लॉजिक के साथ कार्यान्वित एक बड़ा कैरी-लुकहेड सर्किट शामिल था। इस सर्किट ने ALU के रूप में लगभग मरने के स्थान के रूप में लिया। कैरी लुकहेड को 8008 डेटशीट पर दिखाया गया है , आकृति 3. मैंने ALU के लिए कैरी-लुकहेड के साथ 1970 के किसी भी अन्य प्रोसेसर को नहीं देखा है, इसलिए 8008 इस संबंध में थोड़ा असामान्य है।

6502 प्रोग्राम काउंटर (पीसी) इंक्रीमेंटर के लिए आदिम कैरी-लुकहेड का उपयोग करता है। यह पता लगाता है कि पीसी की निचली बाइट से कोई कैरी होगा और ऊपरी बाइट को बढ़ाने के लिए इसका उपयोग करता है। यह संभावित 16 बिट्स से 8 बिट्स तक रिपल कैरी को कम करता है। 6502 का ALU रिपल कैरी का उपयोग करता है, हालांकि कैरी लॉजिक को वैकल्पिक बिट्स के लिए उलटा किया जाता है, जो कि एक इन्वर्टर को रास्ते से काट देता है और इसे थोड़ा तेज कर देता है।

Z-80 में 16-बिट इन्क्रीमेंटर / डिक्रीमर है जिसका उपयोग पीसी अपडेट, इंक / डीके निर्देशों और लूप काउंटर के लिए किया जाता है। यह कैरी-स्किप स्ट्रक्चर का उपयोग करता है इसलिए दो बिट्स के समूहों के लिए कैर्री की गणना की जाती है। इसके अलावा, यह बिट्स 0-4, 7-11 और 12-14 से कैरी उत्पन्न करने के लिए कुछ कैरी-लुकहेड का उपयोग करता है। अन्य कैरी की गणना रिपल कैरी ( विवरण ) के साथ की जाती है । Z-80 का ALU, आश्चर्यजनक रूप से, 4 बिट्स है, इसलिए प्रत्येक 8-बिट ऑपरेशन ALU से दो गुजरता है।

दूसरी ओर, 8085 अपने 16-बिट इंक्रीमेंटर / डिक्रीमेंटर के लिए रिपल कैरी का उपयोग करता है। लेकिन 6502 की तरह, यह बारी-बारी से बिट्स में कैरी लॉजिक को इन्वर्ट करके स्पीडअप को थोड़ा बढ़ा देता है।

एआरएम -1 कोई कैरी-अग्रदर्शी, बस लहर कैरी के साथ एक 32-बिट ALU है। यह बारी-बारी से बिट्स में ले जाने के लिए चाल की चाल का भी उपयोग करता है।

मिनीकंप्यूटर की दुनिया में, कई प्रोसेसर प्रसिद्ध 74181 4-बिट एएलयू चिप से बनाए गए थे, जिसमें आंतरिक कैरी लुकहेड था। उदाहरणों में डेटा जनरल नोवा, ज़ेरॉक्स ऑल्टो, वैक्स -11 / 780 और टीआई -990 शामिल हैं। (लम्बी विकिपीडिया सूची देखें ।) इनमें से कुछ इस्तेमाल किए गए रिपल प्रत्येक 4-बिट चिप के बीच होते हैं और कुछ पूर्ण रूप से देखने के लिए 74182 कैरी लुकहेड चिप का उपयोग करते हैं।

सारांशित करने के लिए, विभिन्न माइक्रोप्रोसेसर अपने प्रदर्शन लक्ष्यों के आधार पर विभिन्न तकनीकों का उपयोग करते हैं और महत्वपूर्ण पथ पर क्या संचालन होते हैं। ALU पूर्ण कैरी लुकहेड (8008 की तरह) का उपयोग कर सकता है या यहां तक ​​कि आधा आकार (जेड -80 की तरह) भी हो सकता है। वृद्धिशील प्रदर्शन की समस्या हो सकती है क्योंकि यह 8-बिट प्रोसेसर में आमतौर पर 16 बिट्स होता है, जिसके परिणामस्वरूप दो बार की देरी होती है। इंक्रीमेंटर में रिपल कैरी (8085), वन कैरी लुकहेड (6502) या कई कैरी लुकहेड स्टेज (जेड -80) हो सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.