उच्च-स्तरीय भाषा कंप्यूटर संरचना

एक उच्च-स्तरीय भाषा कंप्यूटर आर्किटेक्चर (एचएलएलसीए) एक कंप्यूटर आर्किटेक्चर है जिसे एक विशिष्ट उच्च-स्तरीय प्रोग्रामिंग भाषा (एचएलएल) द्वारा लक्षित करने के लिए डिज़ाइन किया गया है, न कि आर्किटेक्चर को हार्डवेयर विचारों से निर्धारित किया जा रहा है। तदनुसार इसे भाषा-निर्देशित कंप्यूटर डिज़ाइन भी कहा जाता है, जिसे गढ़ा गया है और मुख्य रूप से 1960 और 1970 के दशक में उपयोग किया जाता था। एचएलएलसीए 1960 और 1970 के दशक में लोकप्रिय थे, लेकिन 1980 के दशक में बड़े पैमाने पर गायब हो गए। इसके बाद इंटेल 432 (1981) की नाटकीय विफलता और अनुकूलन संकलक और अल्प निर्देश सेट कंप्यूटर (RISC) आर्किटेक्चर और RISC जैसे जटिल निर्देश सेट कंप्यूटर (CISC) आर्किटेक्चर का उदय हुआ, और बाद में समय-समय पर संकलन विकास हुआ। एचएलएल के लिए संकलन (जेआईटी)। एक विस्तृत सर्वेक्षण और समालोचना में पाया जा सकता है.

HLLCAs की तारीख लगभग HLLs की शुरुआत तक है, बरोज़ लार्ज सिस्टम्स (1961) में, जिन्हें ALGOL 60 (1960) के लिए डिज़ाइन किया गया था, जो पहले HLL में से एक था। भाषा लिस्प (प्रोग्रामिंग भाषा) (1959) के लिए सबसे प्रसिद्ध एचएलएलसीए 1970 और 1980 के दशक की लिस्प मशीनें हो सकती हैं। वर्तमान में भाषा जावा (प्रोग्रामिंग भाषा) (1995) के लिए सबसे लोकप्रिय एचएलएलसीए जावा प्रोसेसर हैं, और ये एक योग्य सफलता हैं, जिनका उपयोग कुछ अनुप्रयोगों के लिए किया जा रहा है। इस नस में एक हालिया आर्किटेक्चर विषम प्रणाली वास्तुकला (2012) है, जो एचएसए इंटरमीडिएट परत (एचएसएआईएल) एचएलएल सुविधाओं जैसे अपवादों और आभासी कार्यों के लिए निर्देश सेट समर्थन प्रदान करता है; यह प्रदर्शन सुनिश्चित करने के लिए JIT का उपयोग करता है।

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

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

उदाहरण
बरोज़ लार्ज सिस्टम्स (1961) पहला HLLCA था, जिसे ALGOL (1959) का समर्थन करने के लिए डिज़ाइन किया गया था, जो कि शुरुआती HLL में से एक था। इसे उस समय भाषा-निर्देशित डिजाइन के रूप में संदर्भित किया गया था। बरोज़ मीडियम सिस्टम्स (1966) को व्यावसायिक अनुप्रयोगों के लिए COBOL का समर्थन करने के लिए डिज़ाइन किया गया था। बरोज़ स्मॉल सिस्टम्स (1970 के दशक के मध्य में, 1960 के दशक के अंत से डिजाइन किए गए) को एक लेखन योग्य नियंत्रण स्टोर द्वारा कई एचएलएल का समर्थन करने के लिए डिज़ाइन किया गया था। ये सभी मेनफ्रेम थे।

वांग 2200 (1973) श्रृंखला को माइक्रो-कोड में एक बुनियादी दुभाषिया के साथ डिजाइन किया गया था।

पास्कल माइक्रोइंजिन (1979) को पास्कल (प्रोग्रामिंग भाषा) के यूसीएसडी पास्कल फॉर्म के लिए डिजाइन किया गया था, और इसके मशीन कोड के रूप में पी-कोड मशीन | पी-कोड (पास्कल कंपाइलर बायटेकोड) का इस्तेमाल किया गया था। यह जावा और जावा मशीनों के बाद के विकास पर प्रभावशाली था।

लिस्प मशीनें (1970 और 1980 के दशक) एचएलएलसीए के एक प्रसिद्ध और प्रभावशाली समूह थे।

Intel iAPX 432 (1981) को Ada को सपोर्ट करने के लिए डिज़ाइन किया गया था। यह इंटेल का पहला 32-बिट प्रोसेसर डिज़ाइन था, और 1980 के दशक के लिए इंटेल का मुख्य प्रोसेसर परिवार होने का इरादा था, लेकिन व्यावसायिक रूप से विफल रहा।

Rekursiv (1980 के दशक के मध्य) एक छोटी प्रणाली थी, जिसे ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग और लिंगो (प्रोग्रामिंग लैंग्वेज) # अन्य भाषाओं की प्रोग्रामिंग लैंग्वेज को हार्डवेयर में सपोर्ट करने के लिए डिज़ाइन किया गया था, और निर्देश सेट स्तर पर प्रत्यावर्तन का समर्थन किया, इसलिए नाम।

बर्कले वीएलएसआई-पीएलएम सहित, 1980 के दशक के अंत और 1990 के दशक की शुरुआत में [[प्रोलॉग] को और अधिक सीधे लागू करने के इरादे से कई प्रोसेसर और सहसंसाधक तैयार किए गए थे। ], इसके उत्तराधिकारी (PLUM), और एक .html संबंधित माइक्रोकोड कार्यान्वयन। ऐसे कई सिम्युलेटेड डिज़ाइन भी थे जो हार्डवेयर के रूप में नहीं बनाए गए थे प्रोलॉग प्रोसेसर डिज़ाइन करने के लिए एक VHDL-आधारित पद्धति, [http:/ /ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=183879 सुपरकंडक्टर के लिए एक प्रोलॉग कोप्रोसेसर]। लिस्प की तरह, प्रोलॉग का अभिकलन का मूल मॉडल मानक अनिवार्य डिजाइनों से मौलिक रूप से भिन्न है, और कंप्यूटर वैज्ञानिक और इलेक्ट्रिकल इंजीनियर अपने अंतर्निहित मॉडलों का अनुकरण करने के कारण होने वाली बाधाओं से बचने के लिए उत्सुक थे।

निकोलस विर्थ की लिलिथ (कंप्यूटर) परियोजना में मॉड्यूल-2 भाषा की ओर एक कस्टम सीपीयू शामिल था। आईएनएमओएस ट्रांसप्यूटर को ओकैम (प्रोग्रामिंग भाषा) का उपयोग करके समवर्ती प्रोग्रामिंग का समर्थन करने के लिए डिज़ाइन किया गया था।

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

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

एरिक्सन ने ECOMP विकसित किया, जो Erlang (प्रोग्रामिंग भाषा) चलाने के लिए डिज़ाइन किया गया एक प्रोसेसर है। इसका व्यावसायिक उत्पादन कभी नहीं हुआ।

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

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

आवेदन
कुछ एचएलएलसी विशेष रूप से डेवलपर मशीन (वर्कस्टेशन) के रूप में लोकप्रिय रहे हैं, क्योंकि तेजी से संकलन और उच्च-स्तरीय भाषा के साथ सिस्टम का निम्न-स्तरीय नियंत्रण है। Pascal MicroEngine और Lisp मशीन इसके अच्छे उदाहरण हैं।

एचएलएलसीए की अक्सर वकालत की जाती है जब एक एचएलएल के पास अनिवार्य प्रोग्रामिंग (जो सामान्य प्रोसेसर के लिए अपेक्षाकृत अच्छा मेल है) की तुलना में गणना का एक मौलिक अलग मॉडल है, विशेष रूप से कार्यात्मक प्रोग्रामिंग (लिस्प) और तर्क प्रोग्रामिंग (प्रोलॉग) के लिए।

प्रेरणा
संभावित लाभों की एक विस्तृत सूची में दी गई है.

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

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

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

नुकसान
में विस्तृत समालोचना दी गई है.

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

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

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

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

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

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

कंप्यूटर आर्किटेक्चर में, RISC दृष्टिकोण इसके बजाय बहुत लोकप्रिय और सफल साबित हुआ है, और HLLCAs के विपरीत है, एक बहुत ही सरल निर्देश सेट आर्किटेक्चर पर जोर देता है। हालाँकि, 1980 के दशक में RISC कंप्यूटरों की गति का लाभ मुख्य रूप से RISC के आंतरिक लाभों के बजाय ऑन-चिप कैश और बड़े रजिस्टरों के लिए कमरे को अपनाने के कारण था।.

यह भी देखें

 * विशिष्ट एकीकृत परिपथ आवेदन
 * जावा प्रोसेसर
 * भाषा आधारित प्रणाली
 * लिस्प मशीन
 * प्रोलॉग # हार्डवेयर में कार्यान्वयन
 * सिलिकॉन संकलक

संदर्भ

 * – review
 * A Baker’s Dozen: Fallacies and Pitfalls in Processor Design Grant Martin & Steve Leibson, Tensilica (early 2000s), slides 6–9
 * A Baker’s Dozen: Fallacies and Pitfalls in Processor Design Grant Martin & Steve Leibson, Tensilica (early 2000s), slides 6–9
 * A Baker’s Dozen: Fallacies and Pitfalls in Processor Design Grant Martin & Steve Leibson, Tensilica (early 2000s), slides 6–9