संचायक (कंप्यूटिंग)

कंप्यूटर की सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) में, संचायक एक प्रोसेसर रजिस्टर होता है जिसमें मध्यवर्ती अंकगणितीय तर्क इकाई के परिणाम संग्रहीत होते हैं।

संचायक जैसे रजिस्टर के बिना, मुख्य मेमोरी में प्रत्येक गणना (जोड़, गुणा, बिटवाइज़ ऑपरेशन # बिट शिफ्ट, आदि) के परिणाम को लिखना आवश्यक होगा, शायद अगले ऑपरेशन में उपयोग के लिए केवल फिर से पढ़ने के लिए.

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

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

मूल अवधारणा
गणितीय संक्रियाएं अक्सर चरणबद्ध ढंग से होती हैं, एक संक्रिया के परिणामों को दूसरे के इनपुट के रूप में उपयोग करते हुए। उदाहरण के लिए, किसी कर्मचारी के साप्ताहिक पेरोल की मैन्युअल गणना कुछ इस तरह दिख सकती है:


 * 1) कर्मचारी के टाइम कार्ड से काम किए गए घंटों की संख्या देखें
 * 2) तालिका से उस कर्मचारी के वेतन की दर देखें
 * 3) उनका मूल साप्ताहिक वेतन पाने के लिए घंटों को वेतन दर से गुणा करें
 * 4) आयकर के खाते में उनके मूल वेतन को एक निश्चित प्रतिशत से गुणा करें
 * 5) टैक्स के बाद उनका साप्ताहिक वेतन पाने के लिए उस संख्या को उनके मूल वेतन से घटाएं
 * 6) सेवानिवृत्ति योजनाओं के खाते में उस परिणाम को एक और निश्चित प्रतिशत से गुणा करें
 * 7) सभी कटौतियों के बाद उनका साप्ताहिक वेतन पाने के लिए उस संख्या को उनके मूल वेतन से घटाएं

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

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

संचायक मशीनें
एक एक्युमुलेटर मशीन, जिसे इंस्ट्रक्शन_सेट_आर्किटेक्चर#Number_of_operands|1-ऑपरेंड मशीन भी कहा जाता है, या 'संचायक-आधारित आर्किटेक्चर' वाला एक सीपीयू, एक प्रकार का सीपीयू है, हालांकि इसमें कई रजिस्टर हो सकते हैं, सीपीयू ज्यादातर के परिणामों को संग्रहीत करता है एक विशेष रजिस्टर में गणना, जिसे आमतौर पर संचायक कहा जाता है। लगभग सभी कंप्यूटर संचायक मशीन थे जिनमें केवल उच्च-प्रदर्शन वाले सुपर कंप्यूटर होते थे जिनमें कई रजिस्टर होते थे। फिर जब मेनफ़्रेम कंप्यूटर सिस्टम ने माइक्रो कंप्यूटर को रास्ता दिया, संचायक आर्किटेक्चर एमओएस टेक्नोलॉजी 6502 के साथ एक उल्लेखनीय उदाहरण के रूप में फिर से लोकप्रिय हो गए। कई तस्वीर [[microcontroller]] जो अभी भी 2014 तक लोकप्रिय हैं, जैसे कि PIC माइक्रोकंट्रोलर और Intel 8051, संचायक-आधारित मशीनें हैं।

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

विशेषता जो एक रजिस्टर को एक कंप्यूटर आर्किटेक्चर के संचायक के रूप में अलग करती है, वह यह है कि संचायक (यदि आर्किटेक्चर में एक होता है) अंकगणितीय निर्देश (कंप्यूटर विज्ञान) के लिए एक अंतर्निहित ओपेरंड के रूप में उपयोग किया जाएगा। उदाहरण के लिए, एक सीपीयू में एक निर्देश हो सकता है जैसे:  जो मेमोरी लोकेशन मेमड्रेस से पढ़े गए मान को संचायक में मान में जोड़ता है, परिणाम को संचायक में वापस रखता है। संचायक को एक रजिस्टर संख्या द्वारा निर्देश में पहचाना नहीं गया है; यह एड्रेसिंग_मोड # निर्देश में निहित है और निर्देश में कोई अन्य रजिस्टर निर्दिष्ट नहीं किया जा सकता है। कुछ आर्किटेक्चर कुछ निर्देशों में संचायक के रूप में एक विशेष रजिस्टर का उपयोग करते हैं, लेकिन अन्य निर्देश स्पष्ट ऑपरेंड विनिर्देश के लिए रजिस्टर संख्या का उपयोग करते हैं।

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


 * हमारे अंकगणितीय अंग का पहला भाग ... एक समानांतर भंडारण अंग होना चाहिए जो एक संख्या प्राप्त कर सकता है और इसे पहले से ही इसमें जोड़ सकता है, जो इसकी सामग्री को भी साफ़ करने में सक्षम है और जो इसमें शामिल है उसे संग्रहीत कर सकता है। ऐसे अंग को हम Accumulator कहेंगे। यह अतीत और वर्तमान में सबसे विविध प्रकार की कंप्यूटिंग मशीनों में सैद्धांतिक रूप से काफी पारंपरिक है, उदा। डेस्क गुणक, मानक IBM काउंटर, अधिक आधुनिक रिले मशीनें, ENIAC (गोल्डस्टाइन और वॉन न्यूमैन, 1946; बेल और नेवेल 1971 में पृष्ठ 98)।

कुछ निर्देश हैं, उदाहरण के लिए (कुछ आधुनिक व्याख्या के साथ):
 * संचायक को साफ़ करें और मेमोरी स्थान X से संख्या जोड़ें
 * संचायक को साफ़ करें और मेमोरी स्थान X से संख्या घटाएँ
 * संचायक की सामग्री में मेमोरी स्थान X से कॉपी की गई संख्या जोड़ें
 * संचायक की सामग्री से मेमोरी लोकेशन X से कॉपी की गई संख्या घटाएं
 * संचायक को साफ़ करें और रजिस्टर की सामग्री को संचायक में स्थानांतरित करें

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

उल्लेखनीय संचायक-आधारित कंप्यूटर
ENIAC के 1945 के विन्यास में 20 संचायक थे, जो समानांतर में काम कर सकते थे। प्रत्येक एक आठ दशमलव अंकों की संख्या को संग्रहीत कर सकता है और उसमें प्राप्त संख्या को जोड़ सकता है (या उसमें से घटा सकता है)।  1952 में वैक्यूम ट्यूब आईबीएम 701 के साथ शुरुआत करने वाले आईबीएम के अधिकांश शुरुआती बाइनरी वैज्ञानिक कंप्यूटर, लंबे परिणामों के साथ संचालन को संभालने के लिए एक अलग गुणक / भागफल रजिस्टर के साथ एक 36-बिट संचायक का उपयोग करते थे। आईबीएम 650, एक दशमलव मशीन, में एक 10 अंकों का वितरक और दो दस अंकों का संचायक था; आईबीएम 7070, एक बाद की, ट्रांजिस्टरीकृत दशमलव मशीन में तीन संचायक थे। IBM सिस्टम/360 और डिजिटल उपकरण निगम के PDP-6 में 16 सामान्य उद्देश्य रजिस्टर थे, हालाँकि PDP-6 और इसके उत्तराधिकारी, PDP-10, उन्हें संचायक कहते हैं।

12-बिट PDP-8 संचायक का उपयोग करने वाले पहले मिनी कंप्यूटरों में से एक था, और बाद की कई मशीनों को प्रेरित किया। PDP-8 में केवल एक संचायक था। एचपी 2100 और दिनांक जनरल नोवा में 2 और 4 एक्युमुलेटर थे। नोवा तब बनाया गया था जब PDP-8 के इस फॉलो-ऑन को PDP-11 बनने के पक्ष में खारिज कर दिया गया था। नोवा ने चार संचायक, AC0-AC3 प्रदान किए, हालांकि AC2 और AC3 का उपयोग ऑफ़सेट पते प्रदान करने के लिए भी किया जा सकता है, जो रजिस्टरों के उपयोग की अधिक सामान्यता की ओर प्रवृत्त होता है। PDP-11 में सिस्टम/360 और PDP-10 की तर्ज पर 8 सामान्य प्रयोजन रजिस्टर थे; सबसे बाद में CISC और RISC मशीनों ने कई सामान्य प्रयोजन रजिस्टर प्रदान किए। शुरुआती 4-बिट और 8-बिट माइक्रोप्रोसेसर जैसे इंटेल 4004, इंटेल 8008 और कई अन्य, आमतौर पर एकल संचायक थे। Intel 8051 माइक्रोकंट्रोलर में दो, एक प्राथमिक संचायक और एक द्वितीयक संचायक होता है, जहां दूसरे का उपयोग निर्देशों द्वारा केवल गुणा करने (MUL AB) या विभाजित करने (DIV AB) के दौरान किया जाता है; पूर्व दो 8-बिट संचायक के बीच 16-बिट परिणाम को विभाजित करता है, जबकि बाद वाला भागफल को प्राथमिक संचायक A पर और शेष को द्वितीयक संचायक B में संग्रहीत करता है। 8008, Intel 8080, और के प्रत्यक्ष वंशज के रूप में इंटेल 80[[86]], आधुनिक सर्वव्यापी x86 प्रोसेसर अभी भी बड़ी संख्या के गुणन और विभाजन के लिए प्राथमिक संचायक EAX और द्वितीयक संचायक EDX का उपयोग करता है। उदाहरण के लिए, एमयूएल ईसीएक्स 32-बिट रजिस्टर ईसीएक्स और ईएक्स को गुणा करेगा और 64-बिट परिणाम को ईएक्स और ईडीएक्स के बीच विभाजित करेगा। हालाँकि, MUL और DIV विशेष मामले हैं; अन्य अंकगणितीय-तार्किक निर्देश (ADD, SUB, CMP, AND, OR, XOR, TEST) संचायक के रूप में आठ रजिस्टरों EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI में से किसी को भी निर्दिष्ट कर सकते हैं (अर्थात बाएं संकार्य और गंतव्य)। यह गुणा के लिए भी समर्थित है यदि परिणाम के ऊपरी आधे हिस्से की आवश्यकता नहीं है। इस प्रकार x86 एक संचायक मॉडल पर आधारित होने के बावजूद काफी सामान्य रजिस्टर आर्किटेक्चर है। x86, x86-64 के 64-बिट विस्तार को आगे 8 सामान्य रजिस्टरों के बजाय 16 तक सामान्यीकृत किया गया है।

संदर्भ

 * Goldstine, Herman H., and von Neumann, John, "Planning and Coding of the Problems for an Electronic Computing Instrument", Rep. 1947, Institute for Advanced Study, Princeton. Reprinted on pp. 92–119 in Bell, C. Gordon and Newell, Allen (1971), Computer Structures: Readings and Examples, McGraw-Hill Book Company, New York. ISBN 0-07-004357-4}. A veritable treasure-trove of detailed descriptions of ancient machines including photos.