संशोधित हार्वर्ड वास्तुकला
संशोधित हार्वर्ड वास्तुकला हार्वर्ड वास्तुकला का एक रूपांतर है, जो शुद्ध हार्वर्ड वास्तुकला के विपरीत, निर्देश स्मृति की सामग्री को डेटा के रूप में एक्सेस करने की अनुमति देता है। अधिकांश आधुनिक कंप्यूटर जिन्हें हार्वर्ड वास्तुकला के रूप में प्रलेखित किया गया है, वास्तव में संशोधित हार्वर्ड वास्तुकला हैं।
हार्वर्ड वास्तुकला
मूल हार्वर्ड वास्तुकला कंप्यूटर, हार्वर्ड मार्क I, ने निर्देशों और डेटा को स्टोर करने के लिए पूरी तरह से अलग मेमोरी सिस्टम का उपयोग किया। CPU ने अगला निर्देश प्राप्त किया और स्वतंत्र रूप से डेटा को एक साथ लोड या संग्रहीत किया[citation needed]। यह एक वॉन न्यूमैन वास्तुकला कंप्यूटर के विपरीत है, जिसमें निर्देश और डेटा दोनों एक ही मेमोरी सिस्टम में संग्रहीत होते हैं और (सीपीयू कैश की जटिलता के बिना) इसे बारी-बारी से एक्सेस किया जाना चाहिए।
निर्देश और डेटा मेमोरी के भौतिक पृथक्करण को कभी-कभी आधुनिक हार्वर्ड वास्तुकला कंप्यूटरों की विशिष्ट विशेषता माना जाता है। माइक्रोकंट्रोलर (सिंगल चिप्स पर एकीकृत संपूर्ण कंप्यूटर सिस्टम) के साथ, वॉन न्यूमैन मशीनों में निर्देशों (जैसे फ्लैश मेमोरी) और डेटा (सामान्यतः रीड-राइट मेमोरी) के लिए विभिन्न मेमोरी तकनीकों का उपयोग लोकप्रिय हो रहा है। हार्वर्ड मशीन का सही अंतर यह है कि निर्देश और डेटा मेमोरी अलग-अलग एड्रेस स्पेस पर कब्जा कर लेते हैं। दूसरे शब्दों में, एक स्मृति एड्रेस विशिष्ट रूप से भंडारण स्पेस की पहचान नहीं करता है (जैसा कि यह वॉन न्यूमैन मशीन में होता है); मेमोरी स्पेस (निर्देश या डेटा) को जानना भी आवश्यक है जिससे एड्रेस संबंधित है।
वॉन न्यूमैन वास्तुकला
वॉन न्यूमैन वास्तुकला वाले कंप्यूटर का शुद्ध हार्वर्ड मशीनों पर लाभ होता है, उस कोड को भी एक्सेस किया जा सकता है और इसके विपरीत डेटा के समान व्यवहार किया जा सकता है। उदाहरण के लिए, डेटा को डिस्क भंडारण से मेमोरी में पढ़ा जा सकता है और फिर कोड के रूप में निष्पादित किया जा सकता है, या मशीन कोड को अपनी मेमोरी में लिखने के लिए समय-समय पर संकलन जैसी तकनीकों का उपयोग करके स्व-अनुकूलन सॉफ्टवेयर सिस्टम और फिर बाद में इसे निष्पादित किया जा सकता है। एक अन्य उदाहरण स्व-संशोधित कोड है, जो एक प्रोग्राम को स्वयं को संशोधित करने की अनुमति देता है।
इन विधियों का एक नुकसान निष्पादन योग्य स्पेस सुरक्षा के प्रकरण हैं, जो मैलवेयर और सॉफ़्टवेयर दोषों से समस्या बढ़ाते हैं। इसके अलावा, इन प्रणालियों में कोड प्रवाह का दस्तावेजीकरण करना बेहद कठिन है, और डिबगिंग को और अधिक कठिन बना सकता है।
संशोधित हार्वर्ड वास्तुकला
तदनुसार, कुछ शुद्ध हार्वर्ड मशीनें विशिष्ट उत्पाद हैं। इसके बजाय अधिकांश आधुनिक कंप्यूटर संशोधित हार्वर्ड वास्तुकला को लागू करते हैं। वे संशोधन कोड और डेटा के बीच सख्त अलगाव को ढीला करने के विभिन्न तरीके हैं, जबकि अभी भी उच्च प्रदर्शन समवर्ती डेटा और हार्वर्ड वास्तुकला के निर्देश पहुंच का समर्थन करते हैं।
स्प्लिट-कैश (या लगभग-वॉन-न्यूमैन) वास्तुकला
सबसे साधारण संशोधन पदानुक्रम के निचले स्तरों पर निर्देशों और डेटा के लिए अलग सीपीयू कैश के साथ मेमोरी पदानुक्रम बनाता है। वॉन न्यूमैन मॉडल प्रदान करने वाले निर्देशों और डेटा के लिए एक एकल एड्रेस स्पेस है, लेकिन सीपीयू निर्देश कैश से निर्देश प्राप्त करता है और डेटा कैश से डेटा प्राप्त करता है।[citation needed] अधिकांश प्रोग्रामर को इस तथ्य से अवगत होने की आवश्यकता नहीं है कि प्रोसेसर कोर एक (संशोधित) हार्वर्ड वास्तुकला को लागू करता है, हालांकि वे इसकी गति के फायदे से लाभान्वित होते हैं। स्मृति में निर्देशों को उत्पन्न और संग्रहीत करने वाले केवल प्रोग्रामर को कैश सुसंगतता जैसे मुद्दों से अवगत होने की आवश्यकता होती है, यदि स्टोर निर्देश कैश में निर्देश की कैश्ड कॉपी को संशोधित या अमान्य नहीं करता है।
निर्देश-मेमोरी-एज़-डेटा वास्तुकला
एक अन्य परिवर्तन हार्वर्ड मशीन की अलग एड्रेस स्पेस प्रकृति को संरक्षित करता है, लेकिन निर्देश स्मृति की सामग्री को डेटा के रूप में एक्सेस करने के लिए विशेष मशीन संचालन प्रदान करता है। क्योंकि डेटा सीधे निर्देशों के रूप में निष्पादन योग्य नहीं है, ऐसी मशीनों को सदैव संशोधित हार्वर्ड वास्तुकला के रूप में नहीं देखा जाता है:
- रीड एक्सेस: प्रोग्राम प्रारम्भ होने पर प्रारम्भिक डेटा वैल्यू को इंस्ट्रक्शन मेमोरी से डेटा मेमोरी में अनुकरणीय किया जा सकता है या, यदि डेटा को संशोधित नहीं किया जाना है (यह एक स्थिर मान हो सकता है, जैसे कि पाई, या एक स्ट्रिंग (कंप्यूटर विज्ञान)), तो इसे डेटा मेमोरी में जगह लिए बिना सीधे चल रहे प्रोग्राम द्वारा इंस्ट्रक्शन मेमोरी से एक्सेस किया जा सकता है। (जो प्रायः प्रीमियम पर होता है)।
- राइट एक्सेस: रीप्रोग्रामिंग के लिए एक क्षमता की आवश्यकता होती है; कुछ कंप्यूटर विशुद्ध रूप से केवल पढ़ने के लिये मेमोरी -आधारित होते हैं। उदाहरण के लिए, एक माइक्रोकंट्रोलर के पास सामान्यतः इसके निर्देश रखने के लिए उपयोग की जाने वाली फ्लैश मेमोरी को लिखने के लिए ऑपरेशन होते हैं।[1] इस क्षमता का उपयोग सॉफ़्टवेयर अपडेट सहित उद्देश्यों के लिए किया जा सकता है। EEPROM/PROM प्रतिस्थापन एक वैकल्पिक तरीका है।
डेटा-मेमोरी-ए-इंस्ट्रक्शन वास्तुकला
कुछ हार्वर्ड वास्तुकला प्रोसेसर, जैसे मैक्सिम इंटीग्रेटेड MAXQ, किसी भी मेमोरी सेगमेंट से प्राप्त निर्देशों को निष्पादित कर सकते हैं - मूल हार्वर्ड प्रोसेसर के विपरीत, जो केवल प्रोग्राम मेमोरी सेगमेंट से प्राप्त निर्देशों को निष्पादित कर सकता है।
इस तरह के प्रोसेसर, अन्य हार्वर्ड वास्तुकला प्रोसेसर की तरह - और शुद्ध वॉन न्यूमैन वास्तुकला के विपरीत - एक निर्देश पढ़ सकते हैं और डेटा मान को एक साथ पढ़ सकते हैं, अगर वे अलग-अलग मेमोरी सेगमेंट में हैं, क्योंकि प्रोसेसर में (कम से कम) स्वतंत्र के साथ दो अलग-अलग मेमोरी सेगमेंट हैं। इस तरह के संशोधित हार्वर्ड वास्तुकला और शुद्ध वॉन न्यूमैन वास्तुकला के बीच सबसे स्पष्ट प्रोग्रामर-दिखाई देने वाला अंतर यह है कि - एक मेमोरी सेगमेंट से निर्देश निष्पादित करते समय - एक ही मेमोरी सेगमेंट को एक साथ डेटा के रूप में एक्सेस नहीं किया जा सकता है।[2][3]
तुलना
संशोधित हार्वर्ड मशीनों को शुद्ध हार्वर्ड और वॉन न्यूमैन मशीनों से अलग करने के लिए तीन विशेषताओं का उपयोग किया जा सकता है:
- निर्देश और डेटा अलग-अलग एड्रेस, स्पेस घेरती हैं
शुद्ध हार्वर्ड मशीनों के लिए, निर्देश स्पेस में एक एड्रेस शून्य होता है जो निर्देश भंडारण स्पेस को संदर्भित करता है और डेटा स्पेस में एक अलग एड्रेस शून्य होता है जो एक विशिष्ट डेटा संग्रहण स्पेस को संदर्भित करता है। इसके विपरीत, वॉन न्यूमैन और स्प्लिट-कैश संशोधित हार्वर्ड मशीनें एक ही एड्रेस स्पेस में निर्देश और डेटा दोनों को स्टोर करती हैं, इसलिए एड्रेस जीरो केवल एक स्पेस को संदर्भित करता है और क्या उस स्पेस में बाइनरी पैटर्न को एक निर्देश के रूप में व्याख्या किया जाता है या डेटा को कैसे परिभाषित किया जाता है कार्यक्रम लिखा है। हालाँकि, शुद्ध हार्वर्ड मशीनों की तरह, निर्देश-मेमोरी-एज़-डेटा संशोधित हार्वर्ड मशीनों में अलग-अलग एड्रेस स्पेस होते हैं, इसलिए निर्देश और डेटा स्पेस के लिए अलग-अलग पते शून्य होते हैं, इसलिए यह उस प्रकार की संशोधित हार्वर्ड मशीनों को शुद्ध हार्वर्ड मशीनों से अलग नहीं करता है।
- निर्देश और डेटा मेमोरी में सेंट्रल प्रोसेसिंग यूनिट (सीपीयू) के लिए अलग-अलग हार्डवेयर
यह शुद्ध या संशोधित हार्वर्ड मशीनों का बिंदु है, और वे अधिक लचीले और सामान्य वॉन न्यूमैन वास्तुकला के साथ सह-अस्तित्व में क्यों हैं: सीपीयू के लिए अलग-अलग मेमोरी पाथवे एक ही समय में निर्देशों को प्राप्त करने और डेटा तक पहुंचने की अनुमति देते हैं, जिससे थ्रूपुट में सुधार होता है। शुद्ध हार्वर्ड मशीनों में अलग-अलग एड्रेस स्पेस के साथ अलग-अलग रास्ते होते हैं। स्प्लिट-कैश संशोधित हार्वर्ड मशीनों में सीपीयू कैश या अन्य कसकर युग्मित यादों के लिए अलग-अलग पहुंच पथ हैं, लेकिन एक एकीकृत पहुंच पथ शेष मेमोरी पदानुक्रम को कवर करता है। एक वॉन न्यूमैन प्रोसेसर में केवल वही एकीकृत पहुंच पथ होता है। एक प्रोग्रामर के दृष्टिकोण से, एक संशोधित हार्वर्ड प्रोसेसर जिसमें निर्देश और डेटा यादें एक एड्रेस स्पेस साझा करती हैं, को सामान्यतः वॉन न्यूमैन मशीन के रूप में माना जाता है जब तक कि कैश सुसंगतता एक समस्या नहीं बन जाती, जैसा कि स्व-संशोधित कोड और प्रोग्राम लोडिंग के साथ होता है। यह भ्रमित करने वाला हो सकता है, लेकिन ऐसे प्रकरण सामान्यतः केवल सिस्टम प्रोग्रामिंग और सिस्टम एकीकरण को ही दिखाई देते हैं।[clarification needed] अन्य संशोधित हार्वर्ड मशीनें इस संबंध में शुद्ध हार्वर्ड मशीनों की तरह हैं।
- निर्देश और डेटा मेमोरी को विभिन्न तरीकों से एक्सेस किया जा सकता है
मूल हार्वर्ड मशीन, हार्वर्ड मार्क I, इलेक्ट्रो-मैकेनिकल काउंटरों में एक छिद्रित टेप और डेटा पर निर्देश संग्रहीत करता है। हालाँकि, यह पूरी तरह से उस समय उपलब्ध प्रौद्योगिकी की सीमाओं के कारण था। आज एक हार्वर्ड मशीन जैसे कि तस्वीर माइक्रोकंट्रोलर निर्देशों के लिए 12-बिट वाइड फ्लैश मेमोरी और डेटा के लिए 8-बिट वाइड स्टेटिक रैंडम एक्सेस मेमोरी का उपयोग कर सकता है। इसके विपरीत, एक वॉन न्यूमैन माइक्रोकंट्रोलर जैसे ARM7TDMI, या एक संशोधित हार्वर्ड ARM9 कोर, आवश्यक रूप से फ्लैश मेमोरी और SRAM (उन मामलों में 8 बिट बाइट्स के रूप में) तक समान पहुंच प्रदान करता है।
संशोधित हार्वर्ड वास्तुकला के आधुनिक उपयोग
अनुप्रयोगों के बाहर जहां कैशलेस डिजिटल सिग्नल प्रोसेसर या माइक्रोकंट्रोलर की आवश्यकता होती है, अधिकांश आधुनिक प्रोसेसर में सीपीयू कैश होता है जो निर्देश और डेटा को विभाजित करता है।
ऐसे प्रोसेसर भी हैं जो सबसे कठोर परिभाषा के अनुसार हार्वर्ड मशीन हैं (वह प्रोग्राम और डेटा मेमोरी अलग-अलग एड्रेस स्पेस पर कब्जा कर लेते हैं), और केवल कमजोर अर्थों में संशोधित किए जाते हैं कि डेटा के रूप में प्रोग्राम मेमोरी को पढ़ने और/या लिखने के लिए ऑपरेशन होते हैं। उदाहरण के लिए, Atmel AVR में LPM (लोड प्रोग्राम मेमोरी) और SPM (स्टोर प्रोग्राम मेमोरी) निर्देश इस तरह के संशोधन को लागू करते हैं। इसी तरह के समाधान अन्य माइक्रोकंट्रोलर्स जैसे PIC माइक्रोकंट्रोलर और Z8Encore!, टेक्सास इंस्ट्रूमेंट्स TMS320 जैसे डिजिटल सिग्नल प्रोसेसर के कई परिवारों में पाए जाते हैं। क्योंकि निर्देश निष्पादन अभी भी प्रोग्राम एड्रेस स्पेस तक ही सीमित है, ये प्रोसेसर वॉन न्यूमैन मशीनों के बहुत विपरीत हैं। बाहरी वायरिंग भी सख्ती से हार्वर्ड सीपीयू कोर को एक संशोधित हार्वर्ड में परिवर्तित कर सकती है, उदाहरण के लिए केवल `PSEN#` (प्रोग्राम स्पेस रीड) और `RD#` (एक्सटर्नल डेटा स्पेस रीड) के संयोजन से इंटेल पर AND गेट के माध्यम से बाहरी रूप से सिग्नल मिलते हैं। 8051 फैमिली माइक्रोकंट्रोलर, माइक्रोकंट्रोलर को वॉन न्यूमैन कनेक्टेड कहा जाता है, क्योंकि बाहरी डेटा और प्रोग्राम एड्रेस स्पेस एकीकृत हो जाते हैं।
अलग एड्रेस स्पेस होने से उच्च-स्तरीय भाषाओं के साथ प्रोग्रामिंग में कुछ कठिनाइयाँ पैदा होती हैं जो सीधे तौर पर इस धारणा का समर्थन नहीं करती हैं कि रीड-ओनली डेटा की तालिकाएँ सामान्य लिखने योग्य डेटा से भिन्न एड्रेस स्पेस में हो सकती हैं (और इस प्रकार विभिन्न निर्देशों का उपयोग करके पढ़ने की आवश्यकता है) सी प्रोग्रामिंग भाषा या तो गैर-मानक एक्सटेंशन के माध्यम से [lower-alpha 1]या अब मानकीकृत एंबेडेड सी के माध्यम से कई एड्रेस स्पेस का समर्थन कर सकती है।
इन विधियों का एक नुकसान निष्पादन योग्य स्पेस सुरक्षा के प्रकरण हैं, जो मैलवेयर और सॉफ़्टवेयर दोषों से समस्या बढ़ाते हैं। इसके अलावा, इन प्रणालियों में कोड प्रवाह का दस्तावेजीकरण करना बेहद कठिन है, और डिबगिंग को और अधिक कठिन बना सकता है।
यह भी देखें
- हार्वर्ड वास्तुकला
- वॉन न्यूमैन वास्तुकला
टिप्पणियाँ
- ↑ The maintainers of the standard C library for the GCC port to the Atmel AVR microcontroller, which has separate address spaces for code and data, state in Data in Program Space that separate address spaces imply a Harvard architecture. They go on to explain that the C language only has one pointer address space, and thus was not designed for Harvard architecture machines. They then describe the non-standard extensions adopted by GCC for the AVR and the AVR C library to allow access to data stored in instruction (program) memory. They even explain why the const keyword cannot be pressed into service to distinguish data objects to be placed in instruction memory.
संदर्भ
- ↑ "AVR109: Self Programming" (PDF) (Application note). Atmel. June 2004. Retrieved 29 January 2015.
- ↑ "MAXQ परिवार उपयोगकर्ता गाइड". Maxim Integrated. September 2008. Sections 1.2 "Harvard Memory Architecture" and 2.5 "Pseudo-Von Neumann Memory Access".
- ↑ Konark Goel et al. About MAXQ GCC port.