बाइनरी गुणक: Difference between revisions
(Created page with "{{Short description|Electronic circuit used to multiply binary numbers}} {{Sidebar arithmetic logic circuits|expand=Components|expand-components=Multiplier}} एक बाइ...") |
No edit summary |
||
(10 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Short description|Electronic circuit used to multiply binary numbers}} | {{Short description|Electronic circuit used to multiply binary numbers}} | ||
'''बाइनरी गुणक''' एक [[Index.php?title=विद्युत परिपथ|विद्युत परिपथ]] है जिसका उपयोग [[Index.php?title=अंकीय इलेक्ट्रॉनिकी|अंकीय इलेक्ट्रॉनिकी]] में किया जाता है, जैसे कि [[Index.php?title= संगणक|संगणक]], दो [[Index.php?title= द्विआधारी संख्या|बाइनरी संख्या]] को [[गुणा]] करने के लिए है। | |||
विभिन्न प्रकार | विभिन्न प्रकार कि श्रेणी: संगणक अंकगणितीय तकनीकों का उपयोग अंकीय गुणांक को लागू करने के लिए किया जा सकता है। अधिकांश तकनीकों में ''आंशिक उत्पादों'' के सेट की गणना करना सम्मलित है, जिन्हें बाद में [[Index.php?title=द्विआधारी योजक|बाइनरी योजक]] का उपयोग करके एक साथ जोड़ दिया जाता है। यह प्रक्रिया दीर्घ गुणन के समान है, सिवाय इसके कि यह आधार-2 (बाइनरी [[अंक प्रणाली]]) अंक प्रणाली का उपयोग करता है। | ||
== इतिहास == | == इतिहास == | ||
1947 और 1949 के बीच आर्थर एलेक रॉबिन्सन ने एक छात्र प्रशिक्षु के रूप में और फिर एक विकास | 1947 और 1949 के बीच आर्थर एलेक रॉबिन्सन ने एक छात्र प्रशिक्षु के रूप में और फिर एक विकास अभियंता के रूप में इंग्लिश विद्युत लिमिटेड के लिए काम किया। महत्वपूर्ण रूप से इस अवधि में उन्होंने मैनचेस्टर विश्वविद्यालय में पीएचडी की डिग्री के लिए अध्ययन किया, जहाँ उन्होंने प्रारंभिक [[मैनचेस्टर मार्क 1]] के लिए यंत्रोपवस्तु गुणक के प्रारुप पर काम किया। | ||
चूंकि, 1970 के दशक के अंत तक, अधिकांश [[Index.php?title=छोटे संगणक|छोटे संगणक]] में गुणा निर्देश नहीं था, और इसलिए क्रमादेशक विभिन्न रूटीन का उपयोग करते थे।<ref>{{cite book |last1=Rather |first1=Elizabeth D. |last2=Colburn |first2=Donald R. |last3=Moore |first3=Charles H. |chapter=The Evolution of Forth |chapter-url=http://www.forth.com/resources/evolution/index.html |editor-first=Thomas J. |editor-last=Bergin |editor2-first=Richard G. |editor2-last=Gibson |title=History of Programming Languages—II |publisher=Association for Computing Machinery |date=1996 |isbn=0201895021 |pages=625–670 |doi=10.1145/234286.1057832 |orig-year=1993}}</ref><ref>{{cite journal |doi=10.1016/0308-5953(77)90004-6 |title=Interfacing a hardware multiplier to a general-purpose microprocessor |first1=A.C. |last1=Davies |first2=Y.T. |last2=Fung |journal=Microprocessors | |||
|volume=1 |issue=7 |year=1977 |pages=425–432 |url=https://dx.doi.org/10.1016/0308-5953%2877%2990004-6 }}</ref><ref>{{cite book | |volume=1 |issue=7 |year=1977 |pages=425–432 |url=https://dx.doi.org/10.1016/0308-5953%2877%2990004-6 }}</ref><ref>{{cite book | ||
| title = Fundamentals of Digital Logic and Microcomputer Design | | title = Fundamentals of Digital Logic and Microcomputer Design | ||
Line 16: | Line 15: | ||
| isbn = 978-0-47173349-2 |chapter=§2.5.1 Binary Arithmetic: Multiplication of Unsigned Binary Numbers | | isbn = 978-0-47173349-2 |chapter=§2.5.1 Binary Arithmetic: Multiplication of Unsigned Binary Numbers | ||
| chapter-url = {{GBurl|1QZEawDm9uAC|p=46}}}}</ref> | | chapter-url = {{GBurl|1QZEawDm9uAC|p=46}}}}</ref> | ||
जो बार-बार गुणन | जो बार-बार गुणन कलन विधि और आंशिक परिणाम जोड़ते थे, | ||
अधिकांशत: [[Index.php?title= पाश अकुंडलन|पाश अकुंडलन]] का उपयोग करके लिखा जाता था। [[Index.php?title=बृहत् कंप्यूटर|बृहत् कंप्यूटर]] में विभिन्न निर्देश होते थे, लेकिन वे एक ही तरह के बदलाव करते थे और एक विभिन्न रूटीन के रूप में जोड़ते थे। | |||
प्रारंभिक [[Index.php?title= सूक्ष्म संसाधित्र|सूक्ष्म संसाधित्र]] के पास भी कोई गुणा निर्देश नहीं था। चूंकि 16-बिट पीढ़ी के साथ गुणा निर्देश सामान्य: हो गया था,<ref>{{harvnb|Rafiquzzaman|2005|loc=[{{GBurl|1QZEawDm9uAC|p=251}} §7.3.3 Addition, Subtraction, Multiplication and Division of Signed and Unsigned Numbers p. 251]}}</ref> | |||
कम से कम दो 8-बिट | कम से कम दो 8-बिट संसाधित्र के लिए एक गुणा निर्देश है: [[मोटोरोला 6809]], जिसे 1978 में पेश किया गया था,<ref>{{cite book | ||
| title = Microprocessors and Microcontrollers: Architecture, Programming and System Design 8085, 8086, 8051, 8096 | | title = Microprocessors and Microcontrollers: Architecture, Programming and System Design 8085, 8086, 8051, 8096 | ||
| first = Krishna |last=Kant | | first = Krishna |last=Kant | ||
Line 28: | Line 27: | ||
| isbn = 9788120331914 |chapter=§2.11.2 16-Bit Microprocessors | | isbn = 9788120331914 |chapter=§2.11.2 16-Bit Microprocessors | ||
| chapter-url = {{GBurl|P-n3kelycHQC|p=57}} | | chapter-url = {{GBurl|P-n3kelycHQC|p=57}} | ||
}}</ref> और [[ | }}</ref> और [[Index.php?title=इंटेल एमसीएस-51|इंटेल एमसीएस-51]] परिवार, 1980 में विकसित हुआ, और बाद में एटीएमगा, एटीटिनी और एटीएक्समेगा सूक्ष्म नियंत्रक में सम्मलित आधुनिक [[Index.php?title=एटमेल एवीआर|एटमेल एवीआर]] 8-बिट [[Index.php?title= सूक्ष्म संसाधित्र|सूक्ष्म संसाधित्र]]। | ||
जैसे-जैसे बड़े पैमाने पर एकीकरण के कारण अधिक [[ट्रांजिस्टर की गिनती]] उपलब्ध होती गई, एक बार में प्रत्येक आंशिक उत्पाद को संभालने के लिए एकल योजक का पुन: उपयोग करने के | जैसे-जैसे बड़े पैमाने पर एकीकरण के कारण अधिक [[ट्रांजिस्टर की गिनती]] उपलब्ध होती गई, एक बार में प्रत्येक आंशिक उत्पाद को संभालने के लिए एकल योजक का पुन: उपयोग करने के अतिरिक्त, सभी आंशिक उत्पादों को एक साथ जोड़ने के लिए एक ही चिप पर पर्याप्त योजक लगाना संभव हो गया है। | ||
क्योंकि कुछ सामान्य [[अंकीय संकेत प्रक्रिया]] | क्योंकि कुछ सामान्य [[अंकीय संकेत प्रक्रिया]] कलन विधि अपना अधिकांश समय गुणा करने में व्यतीत करते थे, [[Index.php?title= अंकीय संकेत संसाधित्र|अंकीय संकेत संसाधित्र]] प्रारुपर जितना संभव हो उतना तीव्रता से गुणा करने के लिए काफी चिप क्षेत्र का त्याग करते हैं; एक एकल-चक्र गुणा-संचय इकाई अधिकांशत: प्रारंभिक डीएसपी के अधिकांश चिप क्षेत्र का उपयोग करती थी। | ||
{{Anchor|Multiplication basics}} | {{Anchor|Multiplication basics}} | ||
Line 38: | Line 37: | ||
== बाइनरी लंबी गुणा == | == बाइनरी लंबी गुणा == | ||
स्कूल में दशमलव संख्याओं को गुणा करने की विधि आंशिक गुणनफल की गणना करने, उन्हें बाईं ओर स्थानांतरित करने और फिर उन्हें एक साथ जोड़ने पर आधारित है। सबसे कठिन हिस्सा आंशिक उत्पाद प्राप्त करना है, क्योंकि इसमें एक लंबी संख्या को एक अंक (0 से 9 तक) से गुणा करना | स्कूल में दशमलव संख्याओं को गुणा करने की विधि आंशिक गुणनफल की गणना करने, उन्हें बाईं ओर स्थानांतरित करने और फिर उन्हें एक साथ जोड़ने पर आधारित है। सबसे कठिन हिस्सा आंशिक उत्पाद प्राप्त करना है, क्योंकि इसमें एक लंबी संख्या को एक अंक (0 से 9 तक) से गुणा करना सम्मलित है: | ||
123 | |||
x 456 | |||
===== | |||
738 (यह 123 x 6 है) | |||
615 (यह 123 x 5 है, एक स्थिति को बाईं ओर स्थानांतरित कर दिया गया है) | |||
+ 492 (यह 123 x 4 है, बाईं ओर दो स्थिति बदली गई है) | |||
===== | |||
56088 | |||
एक बाइनरी | एक बाइनरी संगणक ठीक वैसा ही गुणा करता है जैसा कि दशमलव संख्याएँ करती हैं, लेकिन बाइनरी संख्याओं के साथ। बाइनरी कूटलेखन में प्रत्येक लंबी संख्या को एक अंक (या तो 0 या 1) से गुणा किया जाता है, और यह दशमलव की तुलना में बहुत आसान है, क्योंकि 0 या 1 का गुणनफल केवल 0 या समान संख्या है। इसलिए, दो बाइनरी नंबरों का गुणन आंशिक उत्पादों (जो 0 या पहली संख्या है) की गणना करने के लिए नीचे आता है, तार्किक रूप से उन्हें छोड़ दिया जाता है, और फिर उन्हें एक साथ जोड़ दिया जाता है (निश्चित रूप से एक बाइनरी जोड़): | ||
1011 (यह दशमलव 11 के लिए बाइनरी है) | 1011 (यह दशमलव 11 के लिए बाइनरी है) | ||
x 1110 (यह दशमलव 14 के लिए बाइनरी है) | x 1110 (यह दशमलव 14 के लिए बाइनरी है) | ||
====== | |||
0000 (यह 1011 x 0 है) | |||
1011 (यह 1011 x 1, एक स्थिति को बाईं ओर स्थानांतरित कर दिया) | |||
1011 (यह 1011 x 1, बाईं ओर दो स्थान स्थानांतरित कर दिया) | |||
+ 1011 (यह 1011 x 1, बाईं ओर तीन स्थान स्थानांतरित कर दिया) | |||
========= | |||
10011010 (यह दशमलव 154 के लिए बाइनरी है) | |||
जहाँ <nowiki>{8{a[0]}}</nowiki> का अर्थ है a[0] (a का 0वां बिट) को 8 बार दोहराना ([[Index.php?title=वेरिलॉग|वेरिलॉग]] नोटेशन)। | |||
जहाँ <nowiki>{8{a[0]}}</nowiki> का अर्थ है a[0] (a का 0वां बिट) को 8 बार दोहराना ([[ | |||
अपना उत्पाद प्राप्त करने के लिए, हमें अपने सभी आठ आंशिक उत्पादों को जोड़ने की आवश्यकता है, जैसा कि यहां दिखाया गया है: | अपना उत्पाद प्राप्त करने के लिए, हमें अपने सभी आठ आंशिक उत्पादों को जोड़ने की आवश्यकता है, जैसा कि यहां दिखाया गया है: | ||
p0[7] p0[6] p0[5] p0[4] p0[3] p0[2] p0[1] p0[0] | |||
+ p1[7] p1[6] p1[5] p1[4] p1[3] p1[2] p1[1] p1[0] 0 | + p1[7] p1[6] p1[5] p1[4] p1[3] p1[2] p1[1] p1[0] 0 | ||
+ | + p2[7] p2[6] p2[5] p2[4] p2[3] p2[2] p2[1] p2[0] 0 0 | ||
+ p3[7] p3[6] p3[5] p3[4] p3[3] p3[2] p3[1] p3[0] 0 0 0 | + p3[7] p3[6] p3[5] p3[4] p3[3] p3[2] p3[1] p3[0] 0 0 0 | ||
+ p4[7] p4[6] p4[5] p4[4] p4[3] p4[2] p4[1] p4[0] 0 0 0 0 | + p4[7] p4[6] p4[5] p4[4] p4[3] p4[2] p4[1] p4[0] 0 0 0 0 | ||
Line 77: | Line 72: | ||
+ p7[7] p7[6] p7[5] p7[4] p7[3] p7[2] p7[1] p7[0] 0 0 0 0 0 0 0 | + p7[7] p7[6] p7[5] p7[4] p7[3] p7[2] p7[1] p7[0] 0 0 0 0 0 0 0 | ||
--------------------------------------------------- ---------------------------------------------------------------------- | --------------------------------------------------- ---------------------------------------------------------------------- | ||
p[15] p[14] p[13] p[12] p[11] p[10] p[9] p[8] p[7] p[6] p[5] p[4] p[ 3] p[2] p[1] p[0] | |||
दूसरे शब्दों में, P[15:0] हमारे अंतिम अहस्ताक्षरित 16-बिट उत्पाद का उत्पादन करने के लिए, p0, p1 << 1, p2 << 2, और इसी तरह के योग द्वारा निर्मित होता है। | दूसरे शब्दों में, P[15:0] हमारे अंतिम अहस्ताक्षरित 16-बिट उत्पाद का उत्पादन करने के लिए, p0, p1 << 1, p2 << 2, और इसी तरह के योग द्वारा निर्मित होता है। | ||
== हस्ताक्षरित पूर्णांक == | == हस्ताक्षरित पूर्णांक == | ||
यदि b एक हस्ताक्षरित पूर्णांक के | |||
यदि ''b'' एक हस्ताक्षरित पूर्णांक के अतिरिक्त एक अहस्ताक्षरित पूर्णांक होता, तो आंशिक उत्पादों के योग से पहले उत्पाद की चौड़ाई तक चिहन-विस्तारित करने की आवश्यकता होती। यदि ''a'' एक हस्ताक्षरित पूर्णांक होता, तो आंशिक उत्पाद ''p7'' को इसमें जोड़े जाने के अतिरिक्त अंतिम योग से घटाया जाना चाहिए। | |||
उपरोक्त सरणी गुणक को कई उत्पाद शर्तों को उलट कर और पहले आंशिक उत्पाद शब्द के बाईं ओर एक सम्मिलित करके दो के पूरक संकेतन हस्ताक्षरित संख्याओं का समर्थन करने के लिए संशोधित किया जा सकता है: | उपरोक्त सरणी गुणक को कई उत्पाद शर्तों को उलट कर और पहले आंशिक उत्पाद शब्द के बाईं ओर एक सम्मिलित करके दो के पूरक संकेतन हस्ताक्षरित संख्याओं का समर्थन करने के लिए संशोधित किया जा सकता है: | ||
Line 95: | Line 105: | ||
1 +p7[7] ~p7[6] ~p7[5] ~p7[4] ~p7[3] ~p7[2] ~p7[1] ~p7[0] 0 0 0 0 0 0 0 | 1 +p7[7] ~p7[6] ~p7[5] ~p7[4] ~p7[3] ~p7[2] ~p7[1] ~p7[0] 0 0 0 0 0 0 0 | ||
--------------------------------------------------- --------------------------------------------------- -------- | --------------------------------------------------- --------------------------------------------------- -------- | ||
p[15] p[14] p[13] p[12] p[11] p[10] p[9] p[8] p[7] p[6] p[5] p[4] p[ 3] p[2] p[1] p[0] | |||
जहाँ ~p, p के पूरक (विपरीत मान) को दर्शाता है। | जहाँ ~p, p के पूरक (विपरीत मान) को दर्शाता है। | ||
उपरोक्त बिट सरणी में कई सरलीकरण हैं जो दिखाए नहीं गए हैं और स्पष्ट नहीं हैं। एक पूरक बिट के अनुक्रम के बाद गैर-पूरक बिट्स | उपरोक्त बिट सरणी में कई सरलीकरण हैं जो दिखाए नहीं गए हैं और स्पष्ट नहीं हैं। एक पूरक बिट के अनुक्रम के बाद गैर-पूरक बिट्स चिहन विस्तार से बचने के लिए दो पूरक चाल को लागू कर रहे हैं। ''p7'' का अनुक्रम (सभी पूरक बिट्स के बाद गैर-पूरक बिट) इसलिए है क्योंकि हम इस शब्द को घटा रहे हैं, इसलिए वे सभी को आरंभ करने के लिए नकार दिया गया था (और 1 को कम से कम महत्वपूर्ण स्थिति में जोड़ा गया था)। दोनों प्रकार के अनुक्रमों के लिए, अंतिम बिट को पलटा जाता है और एक अंतर्निहित -1 सीधे एमएसबी के नीचे जोड़ा जाना चाहिए। जब बिट स्थिति 0 (एलएसबी) में ''p7'' के लिए दो के पूरक निषेध से +1 और बिट पंक्ति 7 से 14 (जहां प्रत्येक एमएसबी स्थित हैं) में सभी -1 को एक साथ जोड़ा जाता है, तो उन्हें एकल 1 में सरल बनाया जा सकता है वह जादुई रूप से बाईं ओर तैर रहा है। एमएसबी को पलटने से हमें चिहन विस्तार की आवश्यक्ता क्यों होती है, इसकी व्याख्या और प्रमाण के लिए, एक संगणक अंकगणितीय पुस्तक देखें।<ref>{{cite book |last=Parhami |first=Behrooz |title=Computer Arithmetic: Algorithms and Hardware Designs |publisher=[[Oxford University Press]] |year=2000 |isbn=0-19-512583-5}}</ref> | ||
== | == चल बिन्दु संख्या == | ||
एक बाइनरी | एक बाइनरी चल बिन्दु संख्या में एक प्रतीक बिट, महत्वपूर्ण बिट्स (महत्व के रूप में जाना जाता है) और चरघातांक बिट्स (सरलता के लिए, हम आधार और संयोजन फ़ील्ड पर विचार नहीं करते हैं) सम्मलित हैं। उत्तर का चिह्न प्राप्त करने के लिए प्रत्येक संकार्य के चिह्न बिट एक्सओआरडी होते हैं। फिर, परिणाम का घातांक प्राप्त करने के लिए दो घातांकों को जोड़ा जाता है। अंत में, प्रत्येक संकार्य के महत्व का गुणन परिणाम के महत्व को वापस कर देगा। चूंकि, यदि बाइनरी गुणन का परिणाम एक विशिष्ट परिशुद्धता (जैसे 32, 64, 128) के लिए बिट्स की कुल संख्या से अधिक है, तो निकटन की आवश्यकता होती है और घातांकों को उचित रूप से बदल दिया जाता है। | ||
== | == यंत्रोपवस्तु कार्यान्वयन == | ||
गुणन की प्रक्रिया को 3 चरणों में विभाजित किया जा सकता है:<ref name="rouholamini" > | गुणन की प्रक्रिया को 3 चरणों में विभाजित किया जा सकता है:<ref name="rouholamini" > | ||
Line 116: | Line 126: | ||
* आंशिक उत्पाद बनाना | * आंशिक उत्पाद बनाना | ||
* आंशिक उत्पाद को कम करना | * आंशिक उत्पाद को कम करना | ||
* | * संगणन अंतिम उत्पाद | ||
पुराने | पुराने गुणक संरचना ने प्रत्येक आंशिक उत्पाद को योग करने के लिए एक शिफ्टर और संचायक को नियोजित किया, अधिकांशत: प्रति चक्र एक आंशिक उत्पाद, सांचे वाले क्षेत्र के लिए गति से लेन देन करना। आधुनिक गुणक संरचना (संशोधित) बॉघ-वूली कलन विधि का उपयोग करते हैं,<ref name="Baugh-Wooley_1973"/><ref name="Hatamian-Cash_1986"/><ref name="Gebali_2003"/><ref name="ULVD_2015"/>[[Index.php?title=वालेस का ट्री|वालेस का ट्री]], या [[Index.php?title=दद्दा गुणक|दद्दा गुणक]] आंशिक उत्पादों को एक ही चक्र में एक साथ जोड़ने के लिए। वालेस ट्री कार्यान्वयन के प्रदर्शन को कभी-कभी संशोधित [[Index.php?title=बूथ कूटलेखन|बूथ कूटलेखन]] द्वारा दो गुणकों में से एक में सुधार किया जाता है, जो आंशिक उत्पादों की संख्या को कम करता है जिन्हें योग किया जाना चाहिए। | ||
गति के लिए, शिफ्ट | गति के लिए, शिफ्ट और गुणक जोड़ें को एक तीव्ऱ योजक (रिपल-कैरी से कुछ तीव्र) की आवश्यकता होती है।<ref name="chang" /> | ||
एक एकल चक्र गुणक (या | एक एकल चक्र गुणक (या तीव्र गुणक ) शुद्ध संयोजी तर्क है। | ||
तीव्र गुणक में, | |||
आंशिक-उत्पाद कमी प्रक्रिया | आंशिक-उत्पाद कमी प्रक्रिया सामान्यत: पर गुणक के विलंब, शक्ति और क्षेत्र में सबसे अधिक योगदान देती है।<ref name="rouholamini" />गति के लिए, कम आंशिक उत्पाद चरणों को सामान्यत: पर संपीडित्र से बने [[कैरी-सेव योजक]] के रूप में लागू किया जाता है और गणना अंतिम उत्पाद चरण को एक तीव्र योजक (रिपल-कैरी की तुलना में कुछ तीव्र) के रूप में लागू किया जाता है। | ||
कई | कई तीव्र गुणक स्थिर [[सीएमओएस]] में कार्यान्वित संपीडित्र (3:2 संपीडित्र) के रूप में पूर्ण योजक का उपयोग करते हैं। | ||
एक ही क्षेत्र में बेहतर प्रदर्शन या एक छोटे क्षेत्र में समान प्रदर्शन प्राप्त करने के लिए | एक ही क्षेत्र में बेहतर प्रदर्शन या एक छोटे क्षेत्र में समान प्रदर्शन प्राप्त करने के लिए गुणकप्रारुप उच्च क्रम के संपीडित्र जैसे 7:3 संपीडित्र का उपयोग कर सकते हैं;<ref name="leong" /><ref name="rouholamini" />संपीडित्र को तीव्र गणितीय तर्क में लागू करें (जैसे ट्रांसमिशन गेट तर्क, पास ट्रांजिस्टर तर्क, [[डोमिनोज़ लॉजिक|डोमिनोज़ तर्क]]);<ref name="chang"> | ||
Peng Chang. | Peng Chang. | ||
[https://scholar.uwindsor.ca/cgi/viewcontent.cgi?article=8801&context=etd "A Reconfigurable Digital Multiplier and 4:2 Compressor Cells Design"]. | [https://scholar.uwindsor.ca/cgi/viewcontent.cgi?article=8801&context=etd "A Reconfigurable Digital Multiplier and 4:2 Compressor Cells Design"]. | ||
2008. | 2008. | ||
</ref> | </ref> | ||
संपीडित्र को एक अलग पैटर्न में जोड करें; या कुछ संयोजन है। | |||
== उदाहरण | == उदाहरण परिपथ == | ||
[[Image:Binary multiplier.svg|center|thumb|500px| | [[Image:Binary multiplier.svg|center|thumb|500px|आईईईई एसटीडी 91/91a-1991 यूएस चिन्ह।]] | ||
== यह भी देखें == | == यह भी देखें == | ||
{{div col}} | {{div col}} | ||
* बूथ गुणन | * बूथ गुणन कलन विधि | ||
* जुड़े हुए गुणा-जोड़ें | * जुड़े हुए गुणा-जोड़ें | ||
* वालेस ट्री | * वालेस ट्री | ||
* जटिल लघुगणक और घातांक के लिए [[ | * जटिल लघुगणक और घातांक के लिए [[कलन विधि कितना है?]] | ||
* [[ | * [[मापांक अंकगणितीय]] गुणन के लिए कोचनस्की गुणन | ||
* तार्किक बदलाव बाकी | * तार्किक बदलाव बाकी | ||
{{div col end}} | {{div col end}} | ||
Line 163: | Line 173: | ||
* [http://www.fullchipdesign.com/binary_multiplier_digital.htm Binary Multiplier circuit using Half -Adders and digital gates.] | * [http://www.fullchipdesign.com/binary_multiplier_digital.htm Binary Multiplier circuit using Half -Adders and digital gates.] | ||
{{DEFAULTSORT:Binary Multiplier}} | {{DEFAULTSORT:Binary Multiplier}} | ||
[[Category: Machine Translated Page]] | [[Category:Created On 13/02/2023|Binary Multiplier]] | ||
[[Category: | [[Category:Lua-based templates|Binary Multiplier]] | ||
[[Category:Machine Translated Page|Binary Multiplier]] | |||
[[Category:Multi-column templates|Binary Multiplier]] | |||
[[Category:Pages using collapsible list without both background and text-align in titlestyle|margin:0;padding:0;text-align:center;width:100% ]] | |||
[[Category:Pages using div col with small parameter|Binary Multiplier]] | |||
[[Category:Pages using sidebar with the child parameter|Binary Multiplier]] | |||
[[Category:Pages with script errors|Binary Multiplier]] | |||
[[Category:Short description with empty Wikidata description|Binary Multiplier]] | |||
[[Category:Template documentation pages|Short description/doc]] | |||
[[Category:Templates Translated in Hindi|Binary Multiplier]] | |||
[[Category:Templates Vigyan Ready|Binary Multiplier]] | |||
[[Category:Templates that add a tracking category|Binary Multiplier]] | |||
[[Category:Templates that generate short descriptions|Binary Multiplier]] | |||
[[Category:Templates using TemplateData|Binary Multiplier]] | |||
[[Category:Templates using under-protected Lua modules|Binary Multiplier]] | |||
[[Category:Wikipedia fully protected templates|Div col]] | |||
[[Category:अंकगणितीय तर्क सर्किट|Binary Multiplier]] | |||
[[Category:गुणा|Binary Multiplier]] | |||
[[Category:डिजिटल सर्किट|Binary Multiplier]] | |||
[[Category:बाइनरी अंकगणित|Binary Multiplier]] |
Latest revision as of 18:01, 20 February 2023
बाइनरी गुणक एक विद्युत परिपथ है जिसका उपयोग अंकीय इलेक्ट्रॉनिकी में किया जाता है, जैसे कि संगणक, दो बाइनरी संख्या को गुणा करने के लिए है।
विभिन्न प्रकार कि श्रेणी: संगणक अंकगणितीय तकनीकों का उपयोग अंकीय गुणांक को लागू करने के लिए किया जा सकता है। अधिकांश तकनीकों में आंशिक उत्पादों के सेट की गणना करना सम्मलित है, जिन्हें बाद में बाइनरी योजक का उपयोग करके एक साथ जोड़ दिया जाता है। यह प्रक्रिया दीर्घ गुणन के समान है, सिवाय इसके कि यह आधार-2 (बाइनरी अंक प्रणाली) अंक प्रणाली का उपयोग करता है।
इतिहास
1947 और 1949 के बीच आर्थर एलेक रॉबिन्सन ने एक छात्र प्रशिक्षु के रूप में और फिर एक विकास अभियंता के रूप में इंग्लिश विद्युत लिमिटेड के लिए काम किया। महत्वपूर्ण रूप से इस अवधि में उन्होंने मैनचेस्टर विश्वविद्यालय में पीएचडी की डिग्री के लिए अध्ययन किया, जहाँ उन्होंने प्रारंभिक मैनचेस्टर मार्क 1 के लिए यंत्रोपवस्तु गुणक के प्रारुप पर काम किया। चूंकि, 1970 के दशक के अंत तक, अधिकांश छोटे संगणक में गुणा निर्देश नहीं था, और इसलिए क्रमादेशक विभिन्न रूटीन का उपयोग करते थे।[1][2][3] जो बार-बार गुणन कलन विधि और आंशिक परिणाम जोड़ते थे, अधिकांशत: पाश अकुंडलन का उपयोग करके लिखा जाता था। बृहत् कंप्यूटर में विभिन्न निर्देश होते थे, लेकिन वे एक ही तरह के बदलाव करते थे और एक विभिन्न रूटीन के रूप में जोड़ते थे।
प्रारंभिक सूक्ष्म संसाधित्र के पास भी कोई गुणा निर्देश नहीं था। चूंकि 16-बिट पीढ़ी के साथ गुणा निर्देश सामान्य: हो गया था,[4] कम से कम दो 8-बिट संसाधित्र के लिए एक गुणा निर्देश है: मोटोरोला 6809, जिसे 1978 में पेश किया गया था,[5] और इंटेल एमसीएस-51 परिवार, 1980 में विकसित हुआ, और बाद में एटीएमगा, एटीटिनी और एटीएक्समेगा सूक्ष्म नियंत्रक में सम्मलित आधुनिक एटमेल एवीआर 8-बिट सूक्ष्म संसाधित्र।
जैसे-जैसे बड़े पैमाने पर एकीकरण के कारण अधिक ट्रांजिस्टर की गिनती उपलब्ध होती गई, एक बार में प्रत्येक आंशिक उत्पाद को संभालने के लिए एकल योजक का पुन: उपयोग करने के अतिरिक्त, सभी आंशिक उत्पादों को एक साथ जोड़ने के लिए एक ही चिप पर पर्याप्त योजक लगाना संभव हो गया है।
क्योंकि कुछ सामान्य अंकीय संकेत प्रक्रिया कलन विधि अपना अधिकांश समय गुणा करने में व्यतीत करते थे, अंकीय संकेत संसाधित्र प्रारुपर जितना संभव हो उतना तीव्रता से गुणा करने के लिए काफी चिप क्षेत्र का त्याग करते हैं; एक एकल-चक्र गुणा-संचय इकाई अधिकांशत: प्रारंभिक डीएसपी के अधिकांश चिप क्षेत्र का उपयोग करती थी।
बाइनरी लंबी गुणा
स्कूल में दशमलव संख्याओं को गुणा करने की विधि आंशिक गुणनफल की गणना करने, उन्हें बाईं ओर स्थानांतरित करने और फिर उन्हें एक साथ जोड़ने पर आधारित है। सबसे कठिन हिस्सा आंशिक उत्पाद प्राप्त करना है, क्योंकि इसमें एक लंबी संख्या को एक अंक (0 से 9 तक) से गुणा करना सम्मलित है:
123 x 456 ===== 738 (यह 123 x 6 है) 615 (यह 123 x 5 है, एक स्थिति को बाईं ओर स्थानांतरित कर दिया गया है) + 492 (यह 123 x 4 है, बाईं ओर दो स्थिति बदली गई है) ===== 56088
एक बाइनरी संगणक ठीक वैसा ही गुणा करता है जैसा कि दशमलव संख्याएँ करती हैं, लेकिन बाइनरी संख्याओं के साथ। बाइनरी कूटलेखन में प्रत्येक लंबी संख्या को एक अंक (या तो 0 या 1) से गुणा किया जाता है, और यह दशमलव की तुलना में बहुत आसान है, क्योंकि 0 या 1 का गुणनफल केवल 0 या समान संख्या है। इसलिए, दो बाइनरी नंबरों का गुणन आंशिक उत्पादों (जो 0 या पहली संख्या है) की गणना करने के लिए नीचे आता है, तार्किक रूप से उन्हें छोड़ दिया जाता है, और फिर उन्हें एक साथ जोड़ दिया जाता है (निश्चित रूप से एक बाइनरी जोड़):
1011 (यह दशमलव 11 के लिए बाइनरी है) x 1110 (यह दशमलव 14 के लिए बाइनरी है) ====== 0000 (यह 1011 x 0 है) 1011 (यह 1011 x 1, एक स्थिति को बाईं ओर स्थानांतरित कर दिया) 1011 (यह 1011 x 1, बाईं ओर दो स्थान स्थानांतरित कर दिया) + 1011 (यह 1011 x 1, बाईं ओर तीन स्थान स्थानांतरित कर दिया) ========= 10011010 (यह दशमलव 154 के लिए बाइनरी है)
जहाँ {8{a[0]}} का अर्थ है a[0] (a का 0वां बिट) को 8 बार दोहराना (वेरिलॉग नोटेशन)।
अपना उत्पाद प्राप्त करने के लिए, हमें अपने सभी आठ आंशिक उत्पादों को जोड़ने की आवश्यकता है, जैसा कि यहां दिखाया गया है:
p0[7] p0[6] p0[5] p0[4] p0[3] p0[2] p0[1] p0[0] + p1[7] p1[6] p1[5] p1[4] p1[3] p1[2] p1[1] p1[0] 0 + p2[7] p2[6] p2[5] p2[4] p2[3] p2[2] p2[1] p2[0] 0 0 + p3[7] p3[6] p3[5] p3[4] p3[3] p3[2] p3[1] p3[0] 0 0 0 + p4[7] p4[6] p4[5] p4[4] p4[3] p4[2] p4[1] p4[0] 0 0 0 0 + p5[7] p5[6] p5[5] p5[4] p5[3] p5[2] p5[1] p5[0] 0 0 0 0 0 + p6[7] p6[6] p6[5] p6[4] p6[3] p6[2] p6[1] p6[0] 0 0 0 0 0 0 + p7[7] p7[6] p7[5] p7[4] p7[3] p7[2] p7[1] p7[0] 0 0 0 0 0 0 0 --------------------------------------------------- ---------------------------------------------------------------------- p[15] p[14] p[13] p[12] p[11] p[10] p[9] p[8] p[7] p[6] p[5] p[4] p[ 3] p[2] p[1] p[0]
दूसरे शब्दों में, P[15:0] हमारे अंतिम अहस्ताक्षरित 16-बिट उत्पाद का उत्पादन करने के लिए, p0, p1 << 1, p2 << 2, और इसी तरह के योग द्वारा निर्मित होता है।
हस्ताक्षरित पूर्णांक
यदि b एक हस्ताक्षरित पूर्णांक के अतिरिक्त एक अहस्ताक्षरित पूर्णांक होता, तो आंशिक उत्पादों के योग से पहले उत्पाद की चौड़ाई तक चिहन-विस्तारित करने की आवश्यकता होती। यदि a एक हस्ताक्षरित पूर्णांक होता, तो आंशिक उत्पाद p7 को इसमें जोड़े जाने के अतिरिक्त अंतिम योग से घटाया जाना चाहिए।
उपरोक्त सरणी गुणक को कई उत्पाद शर्तों को उलट कर और पहले आंशिक उत्पाद शब्द के बाईं ओर एक सम्मिलित करके दो के पूरक संकेतन हस्ताक्षरित संख्याओं का समर्थन करने के लिए संशोधित किया जा सकता है:
1 ~p0[7] p0[6] p0[5] p0[4] p0[3] p0[2] p0[1] p0[0] ~p1[7] +p1[6] +p1[5] +p1[4] +p1[3] +p1[2] +p1[1] +p1[0] 0 ~p2[7] +p2[6] +p2[5] +p2[4] +p2[3] +p2[2] +p2[1] +p2[0] 0 0 ~p3[7] +p3[6] +p3[5] +p3[4] +p3[3] +p3[2] +p3[1] +p3[0] 0 0 0 ~p4[7] +p4[6] +p4[5] +p4[4] +p4[3] +p4[2] +p4[1] +p4[0] 0 0 0 0 ~p5[7] +p5[6] +p5[5] +p5[4] +p5[3] +p5[2] +p5[1] +p5[0] 0 0 0 0 0 ~p6[7] +p6[6] +p6[5] +p6[4] +p6[3] +p6[2] +p6[1] +p6[0] 0 0 0 0 0 0 1 +p7[7] ~p7[6] ~p7[5] ~p7[4] ~p7[3] ~p7[2] ~p7[1] ~p7[0] 0 0 0 0 0 0 0 --------------------------------------------------- --------------------------------------------------- -------- p[15] p[14] p[13] p[12] p[11] p[10] p[9] p[8] p[7] p[6] p[5] p[4] p[ 3] p[2] p[1] p[0]
जहाँ ~p, p के पूरक (विपरीत मान) को दर्शाता है।
उपरोक्त बिट सरणी में कई सरलीकरण हैं जो दिखाए नहीं गए हैं और स्पष्ट नहीं हैं। एक पूरक बिट के अनुक्रम के बाद गैर-पूरक बिट्स चिहन विस्तार से बचने के लिए दो पूरक चाल को लागू कर रहे हैं। p7 का अनुक्रम (सभी पूरक बिट्स के बाद गैर-पूरक बिट) इसलिए है क्योंकि हम इस शब्द को घटा रहे हैं, इसलिए वे सभी को आरंभ करने के लिए नकार दिया गया था (और 1 को कम से कम महत्वपूर्ण स्थिति में जोड़ा गया था)। दोनों प्रकार के अनुक्रमों के लिए, अंतिम बिट को पलटा जाता है और एक अंतर्निहित -1 सीधे एमएसबी के नीचे जोड़ा जाना चाहिए। जब बिट स्थिति 0 (एलएसबी) में p7 के लिए दो के पूरक निषेध से +1 और बिट पंक्ति 7 से 14 (जहां प्रत्येक एमएसबी स्थित हैं) में सभी -1 को एक साथ जोड़ा जाता है, तो उन्हें एकल 1 में सरल बनाया जा सकता है वह जादुई रूप से बाईं ओर तैर रहा है। एमएसबी को पलटने से हमें चिहन विस्तार की आवश्यक्ता क्यों होती है, इसकी व्याख्या और प्रमाण के लिए, एक संगणक अंकगणितीय पुस्तक देखें।[6]
चल बिन्दु संख्या
एक बाइनरी चल बिन्दु संख्या में एक प्रतीक बिट, महत्वपूर्ण बिट्स (महत्व के रूप में जाना जाता है) और चरघातांक बिट्स (सरलता के लिए, हम आधार और संयोजन फ़ील्ड पर विचार नहीं करते हैं) सम्मलित हैं। उत्तर का चिह्न प्राप्त करने के लिए प्रत्येक संकार्य के चिह्न बिट एक्सओआरडी होते हैं। फिर, परिणाम का घातांक प्राप्त करने के लिए दो घातांकों को जोड़ा जाता है। अंत में, प्रत्येक संकार्य के महत्व का गुणन परिणाम के महत्व को वापस कर देगा। चूंकि, यदि बाइनरी गुणन का परिणाम एक विशिष्ट परिशुद्धता (जैसे 32, 64, 128) के लिए बिट्स की कुल संख्या से अधिक है, तो निकटन की आवश्यकता होती है और घातांकों को उचित रूप से बदल दिया जाता है।
यंत्रोपवस्तु कार्यान्वयन
गुणन की प्रक्रिया को 3 चरणों में विभाजित किया जा सकता है:[7][8]
- आंशिक उत्पाद बनाना
- आंशिक उत्पाद को कम करना
- संगणन अंतिम उत्पाद
पुराने गुणक संरचना ने प्रत्येक आंशिक उत्पाद को योग करने के लिए एक शिफ्टर और संचायक को नियोजित किया, अधिकांशत: प्रति चक्र एक आंशिक उत्पाद, सांचे वाले क्षेत्र के लिए गति से लेन देन करना। आधुनिक गुणक संरचना (संशोधित) बॉघ-वूली कलन विधि का उपयोग करते हैं,[9][10][11][12]वालेस का ट्री, या दद्दा गुणक आंशिक उत्पादों को एक ही चक्र में एक साथ जोड़ने के लिए। वालेस ट्री कार्यान्वयन के प्रदर्शन को कभी-कभी संशोधित बूथ कूटलेखन द्वारा दो गुणकों में से एक में सुधार किया जाता है, जो आंशिक उत्पादों की संख्या को कम करता है जिन्हें योग किया जाना चाहिए।
गति के लिए, शिफ्ट और गुणक जोड़ें को एक तीव्ऱ योजक (रिपल-कैरी से कुछ तीव्र) की आवश्यकता होती है।[13]
एक एकल चक्र गुणक (या तीव्र गुणक ) शुद्ध संयोजी तर्क है।
तीव्र गुणक में, आंशिक-उत्पाद कमी प्रक्रिया सामान्यत: पर गुणक के विलंब, शक्ति और क्षेत्र में सबसे अधिक योगदान देती है।[7]गति के लिए, कम आंशिक उत्पाद चरणों को सामान्यत: पर संपीडित्र से बने कैरी-सेव योजक के रूप में लागू किया जाता है और गणना अंतिम उत्पाद चरण को एक तीव्र योजक (रिपल-कैरी की तुलना में कुछ तीव्र) के रूप में लागू किया जाता है।
कई तीव्र गुणक स्थिर सीएमओएस में कार्यान्वित संपीडित्र (3:2 संपीडित्र) के रूप में पूर्ण योजक का उपयोग करते हैं। एक ही क्षेत्र में बेहतर प्रदर्शन या एक छोटे क्षेत्र में समान प्रदर्शन प्राप्त करने के लिए गुणकप्रारुप उच्च क्रम के संपीडित्र जैसे 7:3 संपीडित्र का उपयोग कर सकते हैं;[8][7]संपीडित्र को तीव्र गणितीय तर्क में लागू करें (जैसे ट्रांसमिशन गेट तर्क, पास ट्रांजिस्टर तर्क, डोमिनोज़ तर्क);[13] संपीडित्र को एक अलग पैटर्न में जोड करें; या कुछ संयोजन है।
उदाहरण परिपथ
यह भी देखें
- बूथ गुणन कलन विधि
- जुड़े हुए गुणा-जोड़ें
- वालेस ट्री
- जटिल लघुगणक और घातांक के लिए कलन विधि कितना है?
- मापांक अंकगणितीय गुणन के लिए कोचनस्की गुणन
- तार्किक बदलाव बाकी
संदर्भ
- ↑ Rather, Elizabeth D.; Colburn, Donald R.; Moore, Charles H. (1996) [1993]. "The Evolution of Forth". In Bergin, Thomas J.; Gibson, Richard G. (eds.). History of Programming Languages—II. Association for Computing Machinery. pp. 625–670. doi:10.1145/234286.1057832. ISBN 0201895021.
- ↑ Davies, A.C.; Fung, Y.T. (1977). "Interfacing a hardware multiplier to a general-purpose microprocessor". Microprocessors. 1 (7): 425–432. doi:10.1016/0308-5953(77)90004-6.
- ↑ Rafiquzzaman, M. (2005). "§2.5.1 Binary Arithmetic: Multiplication of Unsigned Binary Numbers". Fundamentals of Digital Logic and Microcomputer Design. Wiley. p. 46. ISBN 978-0-47173349-2.
- ↑ Rafiquzzaman 2005, §7.3.3 Addition, Subtraction, Multiplication and Division of Signed and Unsigned Numbers p. 251
- ↑ Kant, Krishna (2007). "§2.11.2 16-Bit Microprocessors". Microprocessors and Microcontrollers: Architecture, Programming and System Design 8085, 8086, 8051, 8096. PHI Learning. p. 57. ISBN 9788120331914.
- ↑ Parhami, Behrooz (2000). Computer Arithmetic: Algorithms and Hardware Designs. Oxford University Press. ISBN 0-19-512583-5.
- ↑ 7.0 7.1 7.2 Rouholamini, Mahnoush; Kavehie, Omid; Mirbaha, Amir-Pasha; Jasbi, Somaye Jafarali; Navi, Keivan. "A New Design for 7:2 Compressors" (PDF).
- ↑ 8.0 8.1 Leong, Yuhao; Lo, HaiHiung; Drieberg, Michael; Sayuti, Abu Bakar; Sebastian, Patrick. "Performance Comparison Review of 8-3 compressor on FPGA".
- ↑ Baugh, Charles Richmond; Wooley, Bruce A. (December 1973). "A Two's Complement Parallel Array Multiplication Algorithm". IEEE Transactions on Computers. C-22 (12): 1045–1047. doi:10.1109/T-C.1973.223648. S2CID 7473784.
- ↑ Hatamian, Mehdi; Cash, Glenn (1986). "A 70-MHz 8-bit×8-bit parallel pipelined multiplier in 2.5-μm CMOS". IEEE Journal of Solid-State Circuits. 21 (4): 505–513. Bibcode:1986IJSSC..21..505H. doi:10.1109/jssc.1986.1052564.
- ↑ Gebali, Fayez (2003). "Baugh–Wooley Multiplier" (PDF). University of Victoria, CENG 465 Lab 2. Archived (PDF) from the original on 2018-04-14. Retrieved 2018-04-14.
- ↑ Reynders, Nele; Dehaene, Wim (2015). Ultra-Low-Voltage Design of Energy-Efficient Digital Circuits. doi:10.1007/978-3-319-16136-5. ISBN 978-3-319-16135-8. ISSN 1872-082X. LCCN 2015935431.
{{cite book}}
:|journal=
ignored (help) - ↑ 13.0 13.1 Peng Chang. "A Reconfigurable Digital Multiplier and 4:2 Compressor Cells Design". 2008.
- Hennessy, John L.; Patterson, David A. (1990). "Section A.2, section A.9". Computer Architecture: A quantitative Approach. Morgan Kaufmann. pp. A–3..A–6, A–39..A–49. ISBN 978-0-12383872-8.