उच्च-स्तरीय भाषा कंप्यूटर संरचना: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
एक उच्च-स्तरीय भाषा [[कंप्यूटर आर्किटेक्चर]] (एचएलएलसीए) एक कंप्यूटर आर्किटेक्चर है जिसे एक विशिष्ट उच्च-स्तरीय प्रोग्रामिंग भाषा (एचएलएल) द्वारा लक्षित करने के लिए डिज़ाइन किया गया है, न कि आर्किटेक्चर को हार्डवेयर विचारों से निर्धारित किया जा रहा है। तदनुसार इसे भाषा-निर्देशित कंप्यूटर डिज़ाइन भी कहा जाता है, जिसे गढ़ा गया है {{harvtxt| | एक उच्च-स्तरीय भाषा [[कंप्यूटर आर्किटेक्चर]] (एचएलएलसीए) एक कंप्यूटर आर्किटेक्चर है जिसे एक विशिष्ट उच्च-स्तरीय प्रोग्रामिंग भाषा (एचएलएल) द्वारा लक्षित करने के लिए डिज़ाइन किया गया है, न कि आर्किटेक्चर को हार्डवेयर विचारों से निर्धारित किया जा रहा है। तदनुसार इसे भाषा-निर्देशित कंप्यूटर डिज़ाइन भी कहा जाता है, जिसे गढ़ा गया है {{harvtxt|मौककीमन|1967}} और मुख्य रूप से 1960 और 1970 के दशक में उपयोग किया जाता था। एचएलएलसीए 1960 और 1970 के दशक में लोकप्रिय थे, किन्तु 1980 के दशक में बड़े पैमाने पर गायब हो गए। इसके बाद [[इंटेल 432]] (1981) की नाटकीय विफलता और [[अनुकूलन संकलक]] और [[अल्प निर्देश सेट कंप्यूटर]] (आरआईएससी) आर्किटेक्चर और आरआईएससी जैसे [[जटिल निर्देश सेट कंप्यूटर]] (CISC) आर्किटेक्चर का उदय हुआ, और बाद में [[समय-समय पर संकलन|समय-समय पर कंपाइलर]] विकास हुआ। एचएलएल के लिए कंपाइलर (जेआईटी)। एक विस्तृत सर्वेक्षण और समालोचना में पाया जा सकता है {{harvtxt|डिट्जल|पैटरसन|1980}}. | ||
एचएलएल सीए की तारीख लगभग एचएलएलs की प्रारंभ तक है, [[बरोज़ लार्ज सिस्टम्स]] (1961) में, जिन्हें [[ALGOL 60|एलगोल 60]] (1960) के लिए डिज़ाइन किया गया था, जो पहले एचएलएल (HLL) में से एक था। भाषा [[लिस्प (प्रोग्रामिंग भाषा)]] (1959) के लिए सबसे प्रसिद्ध एचएलएलसीए 1970 और 1980 के दशक की [[लिस्प मशीन]] हो सकती हैं। वर्तमान में भाषा [[जावा (प्रोग्रामिंग भाषा)]] (1995) के लिए सबसे लोकप्रिय एचएलएलसीए [[जावा प्रोसेसर]] हैं, और ये एक योग्य सफलता हैं, जिनका उपयोग कुछ अनुप्रयोगों के लिए किया जा रहा है। इस नस में एक वर्तमानिया आर्किटेक्चर [[विषम प्रणाली वास्तुकला]] (2012) है, जो [[एचएसए इंटरमीडिएट परत]] (एचएसएआईएल) एचएलएल सुविधाओं जैसे अपवादों और आभासी कार्यों के लिए निर्देश सेट समर्थन प्रदान करता है; यह प्रदर्शन सुनिश्चित करने के लिए JIT का उपयोग करता है। | |||
== परिभाषा == | == परिभाषा == | ||
इस शीर्षक के तहत कई प्रकार की प्रणालियाँ हैं। सबसे चरम उदाहरण प्रत्यक्ष रूप से निष्पादित भाषा है, जहां कंप्यूटर का निर्देश सेट आर्किटेक्चर (आईएसए) एचएलएल के निर्देशों के बराबर होता है, और स्रोत कोड न्यूनतम प्रसंस्करण के साथ सीधे निष्पादन योग्य होता है। अत्यधिक | इस शीर्षक के तहत कई प्रकार की प्रणालियाँ हैं। सबसे चरम उदाहरण प्रत्यक्ष रूप से निष्पादित भाषा है, जहां कंप्यूटर का निर्देश सेट आर्किटेक्चर (आईएसए) एचएलएल के निर्देशों के बराबर होता है, और स्रोत कोड न्यूनतम प्रसंस्करण के साथ सीधे निष्पादन योग्य होता है। अत्यधिक स्थितियों में, केवल कंपाइलर की आवश्यकता स्रोत कोड को टोकन कर रही है और सीधे प्रोसेसर को टोकन खिला रही है; यह [[स्टैक मशीन]] पर चलने वाली [[स्टैक-उन्मुख प्रोग्रामिंग भाषा]] में पाया जाता है। अधिक पारंपरिक भाषाओं के लिए, एचएलएल स्टेटमेंट्स को निर्देश + [[पैरामीटर (कंप्यूटर प्रोग्रामिंग)]] में समूहीकृत किया जाता है, और [[इंफिक्स नोटेशन]] ऑर्डर को [[सबस्ट्रिंग]] या [[रिवर्स पोलिश नोटेशन]] ऑर्डर में बदल दिया जाता है। डीईएल सामान्यतः केवल काल्पनिक हैं, चूंकि 1970 के दशक में उनकी वकालत की गई थी।<ref>See Yaohan Chu references.</ref> | ||
कम चरम उदाहरणों में, स्रोत कोड को पहले [[बाईटकोड]] में पार्स किया जाता है, जो तब [[मशीन कोड]] होता है जो प्रोसेसर को पास किया जाता है। इन | कम चरम उदाहरणों में, स्रोत कोड को पहले [[बाईटकोड]] में पार्स किया जाता है, जो तब [[मशीन कोड]] होता है जो प्रोसेसर को पास किया जाता है। इन स्थितियों में, सिस्टम में सामान्यतः एक असेंबली भाषा का अभाव होता है, क्योंकि [[संकलक]] को पर्याप्त माना जाता है, चूंकि कुछ स्थितियों में (जैसे जावा), असेंबलरों का उपयोग कानूनी बायटेकोड बनाने के लिए किया जाता है जो कंपाइलर द्वारा आउटपुट नहीं होगा। यह दृष्टिकोण [[पास्कल माइक्रोइंजिन]] (1979) में पाया गया था, और वर्तमान में जावा प्रोसेसर द्वारा उपयोग किया जाता है। | ||
अधिक ढीले ढंग से, एक एचएलएलसीए केवल एक सामान्य उद्देश्य वाला कंप्यूटर आर्किटेक्चर हो सकता है जिसमें कुछ विशेषताएं विशेष रूप से किसी दिए गए एचएलएल या कई एचएलएल का समर्थन करने के लिए होती हैं। यह 1970 के दशक से लिस्प मशीनों में पाया गया था, जो विशेष रूप से लिस्प का समर्थन करने के लिए डिज़ाइन किए गए संचालन के साथ सामान्य-उद्देश्य वाले प्रोसेसर को बढ़ाता था। | अधिक ढीले ढंग से, एक एचएलएलसीए केवल एक सामान्य उद्देश्य वाला कंप्यूटर आर्किटेक्चर हो सकता है जिसमें कुछ विशेषताएं विशेष रूप से किसी दिए गए एचएलएल या कई एचएलएल का समर्थन करने के लिए होती हैं। यह 1970 के दशक से लिस्प मशीनों में पाया गया था, जो विशेष रूप से लिस्प का समर्थन करने के लिए डिज़ाइन किए गए संचालन के साथ सामान्य-उद्देश्य वाले प्रोसेसर को बढ़ाता था। | ||
== उदाहरण == | == उदाहरण == | ||
{{see also| | {{see also|स्टैक मशीन # वाणिज्यिक स्टैक मशीनें}} | ||
[[बरोज़ लार्ज सिस्टम्स]] (1961) पहला | [[बरोज़ लार्ज सिस्टम्स]] (1961) पहला एचएलएलCA था, जिसे एलगोल (1959) का समर्थन करने के लिए डिज़ाइन किया गया था, जो कि प्रारंभी एचएलएल में से एक था। इसे उस समय भाषा-निर्देशित डिजाइन के रूप में संदर्भित किया गया था। [[बरोज़ मीडियम सिस्टम्स]] (1966) को व्यावसायिक अनुप्रयोगों के लिए [[COBOL|कोबोल]] का समर्थन करने के लिए डिज़ाइन किया गया था। [[बरोज़ स्मॉल सिस्टम्स]] (1970 के दशक के मध्य में, 1960 के दशक के अंत से डिजाइन किए गए) को एक लेखन योग्य नियंत्रण स्टोर द्वारा कई एचएलएल का समर्थन करने के लिए डिज़ाइन किया गया था। ये सभी मेनफ्रेम थे। | ||
[[वांग 2200]] (1973) श्रृंखला को माइक्रो-कोड में एक [[बुनियादी]] दुभाषिया के साथ डिजाइन किया गया था। | [[वांग 2200]] (1973) श्रृंखला को माइक्रो-कोड में एक [[बुनियादी]] दुभाषिया के साथ डिजाइन किया गया था। | ||
पास्कल माइक्रोइंजिन (1979) को [[पास्कल (प्रोग्रामिंग भाषा)]] के [[यूसीएसडी पास्कल]] फॉर्म के लिए डिजाइन किया गया था, और इसके मशीन कोड के रूप में [[पी-कोड मशीन]] | पी-कोड (पास्कल कंपाइलर बायटेकोड) का | पास्कल माइक्रोइंजिन (1979) को [[पास्कल (प्रोग्रामिंग भाषा)]] के [[यूसीएसडी पास्कल]] फॉर्म के लिए डिजाइन किया गया था, और इसके मशीन कोड के रूप में [[पी-कोड मशीन]] | पी-कोड (पास्कल कंपाइलर बायटेकोड) का उपयोग किया गया था। यह जावा और जावा मशीनों के बाद के विकास पर प्रभावशाली था। | ||
लिस्प मशीनें (1970 और 1980 के दशक) एचएलएलसीए के एक प्रसिद्ध और प्रभावशाली समूह थे। | लिस्प मशीनें (1970 और 1980 के दशक) एचएलएलसीए के एक प्रसिद्ध और प्रभावशाली समूह थे। | ||
[[Intel iAPX 432]] (1981) को Ada को सपोर्ट करने के लिए डिज़ाइन किया गया था। यह इंटेल का पहला 32-बिट प्रोसेसर डिज़ाइन था, और 1980 के दशक के लिए इंटेल का मुख्य प्रोसेसर परिवार होने का इरादा था, | [[Intel iAPX 432|इंटेल iAPX 432]] (1981) को Ada को सपोर्ट करने के लिए डिज़ाइन किया गया था। यह इंटेल का पहला 32-बिट प्रोसेसर डिज़ाइन था, और 1980 के दशक के लिए इंटेल का मुख्य प्रोसेसर परिवार होने का इरादा था, किन्तु व्यावसायिक रूप से विफल रहा। | ||
[[Rekursiv]] (1980 के दशक के मध्य) एक छोटी प्रणाली थी, जिसे [[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] और लिंगो (प्रोग्रामिंग लैंग्वेज) # अन्य भाषाओं की प्रोग्रामिंग लैंग्वेज को हार्डवेयर में सपोर्ट करने के लिए डिज़ाइन किया गया था, और निर्देश सेट स्तर पर [[प्रत्यावर्तन]] का समर्थन किया, इसलिए नाम। | [[Rekursiv]] (1980 के दशक के मध्य) एक छोटी प्रणाली थी, जिसे [[ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग]] और लिंगो (प्रोग्रामिंग लैंग्वेज) # अन्य भाषाओं की प्रोग्रामिंग लैंग्वेज को हार्डवेयर में सपोर्ट करने के लिए डिज़ाइन किया गया था, और निर्देश सेट स्तर पर [[प्रत्यावर्तन]] का समर्थन किया, इसलिए नाम। | ||
[http://www.eecs.berkeley.edu/Pubs/TechRpts/1991/6379.html बर्कले वीएलएसआई-पीएलएम सहित, 1980 के दशक के अंत और 1990 के दशक की | [http://www.eecs.berkeley.edu/Pubs/TechRpts/1991/6379.html बर्कले वीएलएसआई-पीएलएम सहित, 1980 के दशक के अंत और 1990 के दशक की प्रारंभ में] , इसके उत्तराधिकारी ([http://portal.acm.org/citation.cfm?id=74948 PLUM]), और एक [http://www.eecs.berkeley.edu/Pubs/TechRpts/1988/5870 .html संबंधित माइक्रोकोड कार्यान्वयन]। ऐसे कई सिम्युलेटेड डिज़ाइन भी थे जो हार्डवेयर के रूप में नहीं बनाए गए थे [http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=380918 प्रोलॉग प्रोसेसर डिज़ाइन करने के लिए एक VHDL-आधारित पद्धति], [http:/ /ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=183879 सुपरकंडक्टर के लिए एक प्रोलॉग कोप्रोसेसर]। लिस्प की तरह, प्रोलॉग का अभिकलन का मूल मॉडल मानक अनिवार्य डिजाइनों से मौलिक रूप से भिन्न है, और कंप्यूटर वैज्ञानिक और इलेक्ट्रिकल इंजीनियर अपने अंतर्निहित मॉडलों का अनुकरण करने के कारण होने वाली बाधाओं से बचने के लिए उत्सुक थे। | ||
[[निकोलस विर्थ]] की [[लिलिथ (कंप्यूटर)]] परियोजना में [[मॉड्यूल-2]] भाषा की ओर एक कस्टम सीपीयू सम्मलित था।<ref>{{cite web |url=http://pascal.hansotten.com/index.php?page=history-of-lilith |title=Pascal for Small Machines – History of Lilith |publisher=Pascal.hansotten.com |date=28 September 2010 |access-date=12 November 2011 |archive-date=20 March 2012 |archive-url=https://web.archive.org/web/20120320091110/http://pascal.hansotten.com/index.php?page=history-of-lilith |url-status=dead }}</ref> | |||
आईएनएमओएस [[ट्रांसप्यूटर]] को [[ओकैम (प्रोग्रामिंग भाषा)]] का उपयोग करके समवर्ती प्रोग्रामिंग का समर्थन करने के लिए डिज़ाइन किया गया था। | आईएनएमओएस [[ट्रांसप्यूटर]] को [[ओकैम (प्रोग्रामिंग भाषा)]] का उपयोग करके समवर्ती प्रोग्रामिंग का समर्थन करने के लिए डिज़ाइन किया गया था। | ||
एटी एंड टी हॉबिट प्रोसेसर, सीआरआईएसपी (सी-लैंग्वेज रिड्यूस्ड इंस्ट्रक्शन सेट प्रोसेसर) नामक डिजाइन से उत्पन्न हुआ, [[सी (प्रोग्रामिंग भाषा)]] कोड चलाने के लिए अनुकूलित किया गया था। | एटी एंड टी हॉबिट प्रोसेसर, सीआरआईएसपी (सी-लैंग्वेज रिड्यूस्ड इंस्ट्रक्शन सेट प्रोसेसर) नामक डिजाइन से उत्पन्न हुआ, [[सी (प्रोग्रामिंग भाषा)]] कोड चलाने के लिए अनुकूलित किया गया था। | ||
1990 के दशक के अंत में, [[सन माइक्रोसिस्टम्स]] और अन्य कंपनियों द्वारा सीपीयू बनाने की योजना थी जो स्टैक-आधारित जावा (प्रोग्रामिंग लैंग्वेज) [[जावा वर्चुअल मशीन]] को सीधे (या | 1990 के दशक के अंत में, [[सन माइक्रोसिस्टम्स]] और अन्य कंपनियों द्वारा सीपीयू बनाने की योजना थी जो स्टैक-आधारित जावा (प्रोग्रामिंग लैंग्वेज) [[जावा वर्चुअल मशीन]] को सीधे (या ध्यान में रखते हुए) कार्यान्वित करती थी। नतीजतन, कई जावा प्रोसेसर बनाए और उपयोग किए गए हैं। | ||
[[एरिक्सन]] ने | [[एरिक्सन]] ने ईकाॅम्प विकसित किया, जो [[Erlang (प्रोग्रामिंग भाषा)|इर लैंग (प्रोग्रामिंग भाषा)]] चलाने के लिए डिज़ाइन किया गया एक प्रोसेसर है।<ref>{{Cite web |url=http://www.erlang.se/euc/00/processor.ppt |title=ECOMP - an Erlang Processor |access-date=2022-12-01 |archive-url=https://web.archive.org/web/20210424115257/http://www.erlang.se/euc/00/processor.ppt |archive-date=2021-04-24 |url-status=dead }}</ref> इसका व्यावसायिक उत्पादन कभी नहीं हुआ। | ||
हेटेरोजेनस सिस्टम आर्किटेक्चर (2012) का एचएसए इंटरमीडिएट लेयर (एचएसएआईएल) अंतर्निहित आईएसए से अलग करने के लिए एक आभासी निर्देश सेट प्रदान करता है, और एचएलएल सुविधाओं जैसे अपवादों और आभासी कार्यों के लिए समर्थन करता है, और डिबगिंग समर्थन | हेटेरोजेनस सिस्टम आर्किटेक्चर (2012) का एचएसए इंटरमीडिएट लेयर (एचएसएआईएल) अंतर्निहित आईएसए से अलग करने के लिए एक आभासी निर्देश सेट प्रदान करता है, और एचएलएल सुविधाओं जैसे अपवादों और आभासी कार्यों के लिए समर्थन करता है, और डिबगिंग समर्थन सम्मलित करता है। | ||
== कार्यान्वयन == | == कार्यान्वयन == | ||
एचएलएलCA को प्रायः स्टैक मशीन (बरोज लार्ज सिस्टम्स और इंटेल 432 के रूप में) के माध्यम से कार्यान्वित किया जाता है, और प्रोसेसर में [[माइक्रोकोड]] के माध्यम से एचएलएल को लागू किया जाता है (जैसा कि बरोज़ स्मॉल सिस्टम्स और पास्कल माइक्रोइंजिन में)। टैग किए [[टैग की गई वास्तुकला]] प्रायः प्रकारों का समर्थन करने के लिए उपयोग किए जाते हैं (जैसा कि बरोज़ लार्ज सिस्टम्स और लिस्प मशीनों में)। अधिक कट्टरपंथी उदाहरण एक [[गैर-वॉन न्यूमैन वास्तुकला]] का उपयोग करते हैं, चूंकि ये सामान्यतः केवल काल्पनिक प्रस्ताव हैं, वास्तविक कार्यान्वयन नहीं। | |||
== आवेदन == | == आवेदन == | ||
कुछ एचएलएलसी विशेष रूप से डेवलपर मशीन (वर्कस्टेशन) के रूप में लोकप्रिय रहे हैं, क्योंकि तेजी से | कुछ एचएलएलसी विशेष रूप से डेवलपर मशीन (वर्कस्टेशन) के रूप में लोकप्रिय रहे हैं, क्योंकि तेजी से कंपाइलर और उच्च-स्तरीय भाषा के साथ सिस्टम का निम्न-स्तरीय नियंत्रण है। Pascal MicroEngine और Lisp मशीन इसके अच्छे उदाहरण हैं। | ||
एचएलएलसीए की | एचएलएलसीए की प्रायः वकालत की जाती है जब एक एचएलएल के पास अनिवार्य प्रोग्रामिंग (जो सामान्य प्रोसेसर के लिए अपेक्षाकृत अच्छा मेल है) की तुलना में गणना का एक मौलिक अलग मॉडल है, विशेष रूप से कार्यात्मक प्रोग्रामिंग (लिस्प) और तर्क प्रोग्रामिंग (प्रोलॉग) के लिए। | ||
== प्रेरणा == | == प्रेरणा == | ||
संभावित लाभों की एक विस्तृत सूची में दी गई है {{harvtxt| | संभावित लाभों की एक विस्तृत सूची में दी गई है {{harvtxt|डिट्जल|पैटरसन|1980}}. | ||
एचएलएलसीए सहज रूप से आकर्षक हैं, क्योंकि सिद्धांत रूप में कंप्यूटर भाषा के लिए अनुकूलित किया जा सकता है, भाषा के लिए इष्टतम समर्थन की अनुमति देता है, और संकलक लेखन को सरल बनाता है। यह केवल माइक्रोकोड बदलकर मूल रूप से कई भाषाओं का समर्थन कर सकता है। डेवलपर्स के लिए मुख्य लाभ हैं: तेजी से | एचएलएलसीए सहज रूप से आकर्षक हैं, क्योंकि सिद्धांत रूप में कंप्यूटर भाषा के लिए अनुकूलित किया जा सकता है, भाषा के लिए इष्टतम समर्थन की अनुमति देता है, और संकलक लेखन को सरल बनाता है। यह केवल माइक्रोकोड बदलकर मूल रूप से कई भाषाओं का समर्थन कर सकता है। डेवलपर्स के लिए मुख्य लाभ हैं: तेजी से कंपाइलर और मशीन से विस्तृत [[प्रतीकात्मक डिबगिंग]]। | ||
एक और फायदा यह है कि एक भाषा कार्यान्वयन को माइक्रोकोड ([[फर्मवेयर]]) को अपडेट करके अपडेट किया जा सकता है, बिना पूरे सिस्टम के | एक और फायदा यह है कि एक भाषा कार्यान्वयन को माइक्रोकोड ([[फर्मवेयर]]) को अपडेट करके अपडेट किया जा सकता है, बिना पूरे सिस्टम के पुनर्कंपाइलर की आवश्यकता के। यह व्याख्या की गई भाषा के लिए दुभाषिया को अद्यतन करने के समान है। | ||
एक लाभ जो 2000 के बाद फिर से प्रकट हो रहा है वह सुरक्षा या संरक्षा है। अधिकांश अनुप्रयोगों के लिए मेनस्ट्रीम आईटी | एक लाभ जो 2000 के बाद फिर से प्रकट हो रहा है वह सुरक्षा या संरक्षा है। अधिकांश अनुप्रयोगों के लिए मेनस्ट्रीम आईटी अधिक सीमा तक टाइप और/या मेमोरी सुरक्षा वाली भाषाओं में स्थानांतरित हो गया है। ओएस से वर्चुअल मशीन तक, जो सॉफ़्टवेयर निर्भर करते हैं, वे बिना किसी सुरक्षा के देशी कोड का लाभ उठाते हैं। ऐसे कोड में कई कमजोरियां पाई गई हैं। एक समाधान सुरक्षित उच्च स्तरीय भाषा या कम से कम समझने वाले प्रकारों को निष्पादित करने के लिए निर्मित प्रोसेसर कस्टम का उपयोग करना है। प्रोसेसर शब्द स्तर पर सुरक्षा अटैकर्स के कार्य को निम्न स्तर की मशीनों की तुलना में कठिन बना देती है जो स्केलर डेटा, सरणियों, पॉइंटर्स या कोड के बीच कोई अंतर नहीं देखते हैं। शिक्षाविद समान गुणों वाली भाषाएँ भी विकसित कर रहे हैं जो भविष्य में उच्च स्तरीय प्रोसेसर के साथ एकीकृत हो सकती हैं। इन दोनों प्रवृत्तियों का एक उदाहरण सेफ है<ref>{{Cite web |url=http://www.crash-safe.org/ |title=SAFE Project |access-date=2022-07-09 |archive-date=2019-10-22 |archive-url=https://web.archive.org/web/20191022221212/http://www.crash-safe.org/ |url-status=dead }}</ref> परियोजना। भाषा-आधारित प्रणालियों की तुलना करें, जहां सॉफ्टवेयर (विशेष रूप से ऑपरेटिंग सिस्टम) एक सुरक्षित, उच्च-स्तरीय भाषा के आसपास आधारित है, चूंकि हार्डवेयर की आवश्यकता नहीं है: विश्वसनीय आधार अभी भी निम्न स्तर की भाषा में हो सकता है। | ||
== नुकसान == | == नुकसान == | ||
में विस्तृत समालोचना दी गई है {{harvtxt| | में विस्तृत समालोचना दी गई है {{harvtxt|डिट्जल|पैटरसन|1980}}. | ||
एचएलएल सीए की सफलता की कमी का सबसे सरल कारण यह है कि 1980 से अनुकूलन करने वाले कंपाइलरों के परिणामस्वरूप बहुत तेज़ कोड हो गया और माइक्रोकोड में भाषा को लागू करने की तुलना में इसे विकसित करना आसान था। कई संकलक अनुकूलन के लिए कोड के जटिल विश्लेषण और पुनर्व्यवस्था की आवश्यकता होती है, इसलिए मशीन कोड मूल स्रोत कोड से बहुत अलग होता है। जटिलता और ओवरहेड के कारण ये अनुकूलन माइक्रोकोड में लागू करने के लिए या तो असंभव या अव्यवहारिक हैं। समान प्रदर्शन समस्याओं का व्याख्यात्मक भाषाओं के साथ एक लंबा इतिहास है (लिस्प (1958) के लिए डेटिंग), केवल समय-समय पर कंपाइलर द्वारा व्यावहारिक उपयोग के लिए पर्याप्त रूप से हल किया जा रहा है, स्व (प्रोग्रामिंग भाषा) में अग्रणी और [[हॉटस्पॉट (वर्चुअल मशीन)]] में व्यावसायीकरण जावा वर्चुअल मशीन (1999)। | |||
मूलभूत समस्या यह है कि एचएलएलसीए केवल संकलक के [[कोड जनरेशन (संकलक)]] चरण को सरल करता है, जो | मूलभूत समस्या यह है कि एचएलएलसीए केवल संकलक के [[कोड जनरेशन (संकलक)]] चरण को सरल करता है, जो सामान्यतः कंपाइलर का एक अपेक्षाकृत छोटा हिस्सा है, और कंप्यूटिंग शक्ति (ट्रांजिस्टर और माइक्रोकोड) का एक संदिग्ध उपयोग है। कम से कम टोकेनाइजेशन की जरूरत है, और सामान्यतः सिंटैक्टिक एनालिसिस और बेसिक सिमेंटिक चेक (अनबाउंड वेरिएबल्स) अभी भी किए जाएंगे - इसलिए फ्रंट एंड को कोई फायदा नहीं है - और ऑप्टिमाइज़ेशन के लिए आगे के विश्लेषण की आवश्यकता होती है - इसलिए इसका कोई फायदा नहीं है मध्य छोर। | ||
एक गहरी समस्या, अभी भी विकास का एक सक्रिय क्षेत्र है | एक गहरी समस्या, अभी भी विकास का एक सक्रिय क्षेत्र है ,<ref>See [[LLVM]] and the Clang compiler.</ref> यह है कि मशीन कोड से एचएलएल डिबगिंग जानकारी प्रदान करना अधिक कठिन है, मूल रूप से डीबगिंग जानकारी के ओवरहेड के कारण, और अधिक संक्षेप में क्योंकि कंपाइलर (विशेष रूप से अनुकूलन) मशीन निर्देश के लिए मूल स्रोत का निर्धारण अधिक सम्मलित करता है। इस प्रकार एचएलएलसीए के एक अनिवार्य भाग के रूप में प्रदान की गई डिबगिंग जानकारी या तो कार्यान्वयन को गंभीर रूप से सीमित करती है या सामान्य उपयोग में महत्वपूर्ण ओवरहेड जोड़ती है। | ||
इसके | इसके अतिरिक्त, एचएलएलसीए को सामान्यतः एक भाषा के लिए अनुकूलित किया जाता है, जो अन्य भाषाओं का अधिक खराब तरीके से समर्थन करता है। इसी तरह के मुद्दे बहु-भाषा वर्चुअल मशीनों में उत्पन्न होते हैं, विशेष रूप से जावा वर्चुअल मशीन (जावा के लिए डिज़ाइन किया गया) और .NET [[सामान्य भाषा रनटाइम]] (सी शार्प (प्रोग्रामिंग लैंग्वेज) | सी # के लिए डिज़ाइन किया गया), जहाँ अन्य भाषाएँ द्वितीय श्रेणी के नागरिक हैं, और शब्दार्थ में प्रायः मुख्य भाषा के करीब होना चाहिए। इस कारण से निचले स्तर के आईएसए कई भाषाओं को अच्छी तरह से समर्थित होने की अनुमति देते हैं, संकलक समर्थन दिया जाता है। चूंकि, एक समान समस्या कई स्पष्ट रूप से भाषा-तटस्थ प्रोसेसर के लिए भी उत्पन्न होती है, जो भाषा C (प्रोग्रामिंग भाषा) द्वारा अच्छी तरह से समर्थित हैं, और जहाँ स्रोत-से-स्रोत संकलक C के लिए (हार्डवेयर को सीधे लक्षित करने के बजाय) कुशल कार्यक्रम उत्पन्न करता है। और सरल संकलक। | ||
एचएलएलसीए के लाभ वैकल्पिक रूप से एचएलएल कंप्यूटर सिस्टम्स (भाषा-आधारित सिस्टम) में वैकल्पिक तरीकों से प्राप्त किए जा सकते हैं, मुख्य रूप से कंपाइलर्स या दुभाषियों के माध्यम से: सिस्टम अभी भी एचएलएल में लिखा गया है, | एचएलएलसीए के लाभ वैकल्पिक रूप से एचएलएल कंप्यूटर सिस्टम्स (भाषा-आधारित सिस्टम) में वैकल्पिक तरीकों से प्राप्त किए जा सकते हैं, मुख्य रूप से कंपाइलर्स या दुभाषियों के माध्यम से: सिस्टम अभी भी एचएलएल में लिखा गया है, किन्तु निम्न पर चलने वाले सॉफ़्टवेयर में एक विश्वसनीय आधार है- स्तर की वास्तुकला। लगभग 1980 के बाद से इस दृष्टिकोण का पालन किया गया है: उदाहरण के लिए, एक जावा सिस्टम जहां रनटाइम पर्यावरण स्वयं सी में लिखा गया है, किन्तु ऑपरेटिंग सिस्टम और एप्लिकेशन जावा में लिखे गए हैं। | ||
== विकल्प == | == विकल्प == | ||
1980 के दशक के बाद से सामान्य-उद्देश्य वाले कंप्यूटर आर्किटेक्चर में अनुसंधान और कार्यान्वयन का ध्यान मुख्य रूप से आरआईएससी-जैसे आर्किटेक्चर में रहा है, | 1980 के दशक के बाद से सामान्य-उद्देश्य वाले कंप्यूटर आर्किटेक्चर में अनुसंधान और कार्यान्वयन का ध्यान मुख्य रूप से आरआईएससी-जैसे आर्किटेक्चर में रहा है, सामान्यतः आंतरिक रूप से रजिस्टर-समृद्ध लोड-स्टोर आर्किटेक्चर, बल्कि स्थिर, गैर-भाषा-विशिष्ट आईएसए के साथ, जिसमें कई रजिस्टर, पाइपलाइनिंग सम्मलित हैं। , और वर्तमान ही में भाषा-विशिष्ट ISA के बजाय मल्टीकोर सिस्टम। भाषा समर्थन ने कम प्रत्यक्ष हार्डवेयर समर्थन के साथ संकलक और उनके रनटाइम, और दुभाषियों और उनकी आभासी मशीनों (विशेष रूप से JIT'ing वाले) पर ध्यान केंद्रित किया है। उदाहरण के लिए, आईओएस के लिए वर्तमान [[उद्देश्य सी]] रनटाइम टैग किए गए पॉइंटर्स को लागू करता है, जो हार्डवेयर टैग किए गए आर्किटेक्चर नहीं होने के बावजूद टाइप-चेकिंग और कचरा संग्रह के लिए उपयोग करता है। | ||
कंप्यूटर आर्किटेक्चर में, RISC दृष्टिकोण इसके बजाय बहुत लोकप्रिय और सफल साबित हुआ है, और | कंप्यूटर आर्किटेक्चर में, आरआईएससी(RISC) दृष्टिकोण इसके बजाय बहुत लोकप्रिय और सफल साबित हुआ है, और एचएलएल सीए के विपरीत है, एक बहुत ही सरल निर्देश सेट आर्किटेक्चर पर जोर देता है। चूंकि, 1980 के दशक में आरआईएससी कंप्यूटरों की गति का लाभ मुख्य रूप से आरआईएससी के आंतरिक लाभों के बजाय [[ऑन-चिप कैश]] और बड़े रजिस्टरों के लिए कमरे को अपनाने के कारण था।. | ||
== यह भी देखें == | == यह भी देखें == | ||
Line 76: | Line 77: | ||
* भाषा आधारित प्रणाली | * भाषा आधारित प्रणाली | ||
* लिस्प मशीन | * लिस्प मशीन | ||
* प्रोलॉग | * प्रोलॉग हार्डवेयर में कार्यान्वयन | ||
* [[सिलिकॉन संकलक]] | * [[सिलिकॉन संकलक]] | ||
Revision as of 22:33, 23 February 2023
एक उच्च-स्तरीय भाषा कंप्यूटर आर्किटेक्चर (एचएलएलसीए) एक कंप्यूटर आर्किटेक्चर है जिसे एक विशिष्ट उच्च-स्तरीय प्रोग्रामिंग भाषा (एचएलएल) द्वारा लक्षित करने के लिए डिज़ाइन किया गया है, न कि आर्किटेक्चर को हार्डवेयर विचारों से निर्धारित किया जा रहा है। तदनुसार इसे भाषा-निर्देशित कंप्यूटर डिज़ाइन भी कहा जाता है, जिसे गढ़ा गया है मौककीमन (1967) और मुख्य रूप से 1960 और 1970 के दशक में उपयोग किया जाता था। एचएलएलसीए 1960 और 1970 के दशक में लोकप्रिय थे, किन्तु 1980 के दशक में बड़े पैमाने पर गायब हो गए। इसके बाद इंटेल 432 (1981) की नाटकीय विफलता और अनुकूलन संकलक और अल्प निर्देश सेट कंप्यूटर (आरआईएससी) आर्किटेक्चर और आरआईएससी जैसे जटिल निर्देश सेट कंप्यूटर (CISC) आर्किटेक्चर का उदय हुआ, और बाद में समय-समय पर कंपाइलर विकास हुआ। एचएलएल के लिए कंपाइलर (जेआईटी)। एक विस्तृत सर्वेक्षण और समालोचना में पाया जा सकता है डिट्जल & पैटरसन (1980) .
एचएलएल सीए की तारीख लगभग एचएलएलs की प्रारंभ तक है, बरोज़ लार्ज सिस्टम्स (1961) में, जिन्हें एलगोल 60 (1960) के लिए डिज़ाइन किया गया था, जो पहले एचएलएल (HLL) में से एक था। भाषा लिस्प (प्रोग्रामिंग भाषा) (1959) के लिए सबसे प्रसिद्ध एचएलएलसीए 1970 और 1980 के दशक की लिस्प मशीन हो सकती हैं। वर्तमान में भाषा जावा (प्रोग्रामिंग भाषा) (1995) के लिए सबसे लोकप्रिय एचएलएलसीए जावा प्रोसेसर हैं, और ये एक योग्य सफलता हैं, जिनका उपयोग कुछ अनुप्रयोगों के लिए किया जा रहा है। इस नस में एक वर्तमानिया आर्किटेक्चर विषम प्रणाली वास्तुकला (2012) है, जो एचएसए इंटरमीडिएट परत (एचएसएआईएल) एचएलएल सुविधाओं जैसे अपवादों और आभासी कार्यों के लिए निर्देश सेट समर्थन प्रदान करता है; यह प्रदर्शन सुनिश्चित करने के लिए JIT का उपयोग करता है।
परिभाषा
इस शीर्षक के तहत कई प्रकार की प्रणालियाँ हैं। सबसे चरम उदाहरण प्रत्यक्ष रूप से निष्पादित भाषा है, जहां कंप्यूटर का निर्देश सेट आर्किटेक्चर (आईएसए) एचएलएल के निर्देशों के बराबर होता है, और स्रोत कोड न्यूनतम प्रसंस्करण के साथ सीधे निष्पादन योग्य होता है। अत्यधिक स्थितियों में, केवल कंपाइलर की आवश्यकता स्रोत कोड को टोकन कर रही है और सीधे प्रोसेसर को टोकन खिला रही है; यह स्टैक मशीन पर चलने वाली स्टैक-उन्मुख प्रोग्रामिंग भाषा में पाया जाता है। अधिक पारंपरिक भाषाओं के लिए, एचएलएल स्टेटमेंट्स को निर्देश + पैरामीटर (कंप्यूटर प्रोग्रामिंग) में समूहीकृत किया जाता है, और इंफिक्स नोटेशन ऑर्डर को सबस्ट्रिंग या रिवर्स पोलिश नोटेशन ऑर्डर में बदल दिया जाता है। डीईएल सामान्यतः केवल काल्पनिक हैं, चूंकि 1970 के दशक में उनकी वकालत की गई थी।[1] कम चरम उदाहरणों में, स्रोत कोड को पहले बाईटकोड में पार्स किया जाता है, जो तब मशीन कोड होता है जो प्रोसेसर को पास किया जाता है। इन स्थितियों में, सिस्टम में सामान्यतः एक असेंबली भाषा का अभाव होता है, क्योंकि संकलक को पर्याप्त माना जाता है, चूंकि कुछ स्थितियों में (जैसे जावा), असेंबलरों का उपयोग कानूनी बायटेकोड बनाने के लिए किया जाता है जो कंपाइलर द्वारा आउटपुट नहीं होगा। यह दृष्टिकोण पास्कल माइक्रोइंजिन (1979) में पाया गया था, और वर्तमान में जावा प्रोसेसर द्वारा उपयोग किया जाता है।
अधिक ढीले ढंग से, एक एचएलएलसीए केवल एक सामान्य उद्देश्य वाला कंप्यूटर आर्किटेक्चर हो सकता है जिसमें कुछ विशेषताएं विशेष रूप से किसी दिए गए एचएलएल या कई एचएलएल का समर्थन करने के लिए होती हैं। यह 1970 के दशक से लिस्प मशीनों में पाया गया था, जो विशेष रूप से लिस्प का समर्थन करने के लिए डिज़ाइन किए गए संचालन के साथ सामान्य-उद्देश्य वाले प्रोसेसर को बढ़ाता था।
उदाहरण
बरोज़ लार्ज सिस्टम्स (1961) पहला एचएलएलCA था, जिसे एलगोल (1959) का समर्थन करने के लिए डिज़ाइन किया गया था, जो कि प्रारंभी एचएलएल में से एक था। इसे उस समय भाषा-निर्देशित डिजाइन के रूप में संदर्भित किया गया था। बरोज़ मीडियम सिस्टम्स (1966) को व्यावसायिक अनुप्रयोगों के लिए कोबोल का समर्थन करने के लिए डिज़ाइन किया गया था। बरोज़ स्मॉल सिस्टम्स (1970 के दशक के मध्य में, 1960 के दशक के अंत से डिजाइन किए गए) को एक लेखन योग्य नियंत्रण स्टोर द्वारा कई एचएलएल का समर्थन करने के लिए डिज़ाइन किया गया था। ये सभी मेनफ्रेम थे।
वांग 2200 (1973) श्रृंखला को माइक्रो-कोड में एक बुनियादी दुभाषिया के साथ डिजाइन किया गया था।
पास्कल माइक्रोइंजिन (1979) को पास्कल (प्रोग्रामिंग भाषा) के यूसीएसडी पास्कल फॉर्म के लिए डिजाइन किया गया था, और इसके मशीन कोड के रूप में पी-कोड मशीन | पी-कोड (पास्कल कंपाइलर बायटेकोड) का उपयोग किया गया था। यह जावा और जावा मशीनों के बाद के विकास पर प्रभावशाली था।
लिस्प मशीनें (1970 और 1980 के दशक) एचएलएलसीए के एक प्रसिद्ध और प्रभावशाली समूह थे।
इंटेल iAPX 432 (1981) को Ada को सपोर्ट करने के लिए डिज़ाइन किया गया था। यह इंटेल का पहला 32-बिट प्रोसेसर डिज़ाइन था, और 1980 के दशक के लिए इंटेल का मुख्य प्रोसेसर परिवार होने का इरादा था, किन्तु व्यावसायिक रूप से विफल रहा।
Rekursiv (1980 के दशक के मध्य) एक छोटी प्रणाली थी, जिसे ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग और लिंगो (प्रोग्रामिंग लैंग्वेज) # अन्य भाषाओं की प्रोग्रामिंग लैंग्वेज को हार्डवेयर में सपोर्ट करने के लिए डिज़ाइन किया गया था, और निर्देश सेट स्तर पर प्रत्यावर्तन का समर्थन किया, इसलिए नाम।
बर्कले वीएलएसआई-पीएलएम सहित, 1980 के दशक के अंत और 1990 के दशक की प्रारंभ में , इसके उत्तराधिकारी (PLUM), और एक .html संबंधित माइक्रोकोड कार्यान्वयन। ऐसे कई सिम्युलेटेड डिज़ाइन भी थे जो हार्डवेयर के रूप में नहीं बनाए गए थे प्रोलॉग प्रोसेसर डिज़ाइन करने के लिए एक VHDL-आधारित पद्धति, [http:/ /ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=183879 सुपरकंडक्टर के लिए एक प्रोलॉग कोप्रोसेसर]। लिस्प की तरह, प्रोलॉग का अभिकलन का मूल मॉडल मानक अनिवार्य डिजाइनों से मौलिक रूप से भिन्न है, और कंप्यूटर वैज्ञानिक और इलेक्ट्रिकल इंजीनियर अपने अंतर्निहित मॉडलों का अनुकरण करने के कारण होने वाली बाधाओं से बचने के लिए उत्सुक थे।
निकोलस विर्थ की लिलिथ (कंप्यूटर) परियोजना में मॉड्यूल-2 भाषा की ओर एक कस्टम सीपीयू सम्मलित था।[2]
आईएनएमओएस ट्रांसप्यूटर को ओकैम (प्रोग्रामिंग भाषा) का उपयोग करके समवर्ती प्रोग्रामिंग का समर्थन करने के लिए डिज़ाइन किया गया था।
एटी एंड टी हॉबिट प्रोसेसर, सीआरआईएसपी (सी-लैंग्वेज रिड्यूस्ड इंस्ट्रक्शन सेट प्रोसेसर) नामक डिजाइन से उत्पन्न हुआ, सी (प्रोग्रामिंग भाषा) कोड चलाने के लिए अनुकूलित किया गया था।
1990 के दशक के अंत में, सन माइक्रोसिस्टम्स और अन्य कंपनियों द्वारा सीपीयू बनाने की योजना थी जो स्टैक-आधारित जावा (प्रोग्रामिंग लैंग्वेज) जावा वर्चुअल मशीन को सीधे (या ध्यान में रखते हुए) कार्यान्वित करती थी। नतीजतन, कई जावा प्रोसेसर बनाए और उपयोग किए गए हैं।
एरिक्सन ने ईकाॅम्प विकसित किया, जो इर लैंग (प्रोग्रामिंग भाषा) चलाने के लिए डिज़ाइन किया गया एक प्रोसेसर है।[3] इसका व्यावसायिक उत्पादन कभी नहीं हुआ।
हेटेरोजेनस सिस्टम आर्किटेक्चर (2012) का एचएसए इंटरमीडिएट लेयर (एचएसएआईएल) अंतर्निहित आईएसए से अलग करने के लिए एक आभासी निर्देश सेट प्रदान करता है, और एचएलएल सुविधाओं जैसे अपवादों और आभासी कार्यों के लिए समर्थन करता है, और डिबगिंग समर्थन सम्मलित करता है।
कार्यान्वयन
एचएलएलCA को प्रायः स्टैक मशीन (बरोज लार्ज सिस्टम्स और इंटेल 432 के रूप में) के माध्यम से कार्यान्वित किया जाता है, और प्रोसेसर में माइक्रोकोड के माध्यम से एचएलएल को लागू किया जाता है (जैसा कि बरोज़ स्मॉल सिस्टम्स और पास्कल माइक्रोइंजिन में)। टैग किए टैग की गई वास्तुकला प्रायः प्रकारों का समर्थन करने के लिए उपयोग किए जाते हैं (जैसा कि बरोज़ लार्ज सिस्टम्स और लिस्प मशीनों में)। अधिक कट्टरपंथी उदाहरण एक गैर-वॉन न्यूमैन वास्तुकला का उपयोग करते हैं, चूंकि ये सामान्यतः केवल काल्पनिक प्रस्ताव हैं, वास्तविक कार्यान्वयन नहीं।
आवेदन
कुछ एचएलएलसी विशेष रूप से डेवलपर मशीन (वर्कस्टेशन) के रूप में लोकप्रिय रहे हैं, क्योंकि तेजी से कंपाइलर और उच्च-स्तरीय भाषा के साथ सिस्टम का निम्न-स्तरीय नियंत्रण है। Pascal MicroEngine और Lisp मशीन इसके अच्छे उदाहरण हैं।
एचएलएलसीए की प्रायः वकालत की जाती है जब एक एचएलएल के पास अनिवार्य प्रोग्रामिंग (जो सामान्य प्रोसेसर के लिए अपेक्षाकृत अच्छा मेल है) की तुलना में गणना का एक मौलिक अलग मॉडल है, विशेष रूप से कार्यात्मक प्रोग्रामिंग (लिस्प) और तर्क प्रोग्रामिंग (प्रोलॉग) के लिए।
प्रेरणा
संभावित लाभों की एक विस्तृत सूची में दी गई है डिट्जल & पैटरसन (1980) .
एचएलएलसीए सहज रूप से आकर्षक हैं, क्योंकि सिद्धांत रूप में कंप्यूटर भाषा के लिए अनुकूलित किया जा सकता है, भाषा के लिए इष्टतम समर्थन की अनुमति देता है, और संकलक लेखन को सरल बनाता है। यह केवल माइक्रोकोड बदलकर मूल रूप से कई भाषाओं का समर्थन कर सकता है। डेवलपर्स के लिए मुख्य लाभ हैं: तेजी से कंपाइलर और मशीन से विस्तृत प्रतीकात्मक डिबगिंग।
एक और फायदा यह है कि एक भाषा कार्यान्वयन को माइक्रोकोड (फर्मवेयर) को अपडेट करके अपडेट किया जा सकता है, बिना पूरे सिस्टम के पुनर्कंपाइलर की आवश्यकता के। यह व्याख्या की गई भाषा के लिए दुभाषिया को अद्यतन करने के समान है।
एक लाभ जो 2000 के बाद फिर से प्रकट हो रहा है वह सुरक्षा या संरक्षा है। अधिकांश अनुप्रयोगों के लिए मेनस्ट्रीम आईटी अधिक सीमा तक टाइप और/या मेमोरी सुरक्षा वाली भाषाओं में स्थानांतरित हो गया है। ओएस से वर्चुअल मशीन तक, जो सॉफ़्टवेयर निर्भर करते हैं, वे बिना किसी सुरक्षा के देशी कोड का लाभ उठाते हैं। ऐसे कोड में कई कमजोरियां पाई गई हैं। एक समाधान सुरक्षित उच्च स्तरीय भाषा या कम से कम समझने वाले प्रकारों को निष्पादित करने के लिए निर्मित प्रोसेसर कस्टम का उपयोग करना है। प्रोसेसर शब्द स्तर पर सुरक्षा अटैकर्स के कार्य को निम्न स्तर की मशीनों की तुलना में कठिन बना देती है जो स्केलर डेटा, सरणियों, पॉइंटर्स या कोड के बीच कोई अंतर नहीं देखते हैं। शिक्षाविद समान गुणों वाली भाषाएँ भी विकसित कर रहे हैं जो भविष्य में उच्च स्तरीय प्रोसेसर के साथ एकीकृत हो सकती हैं। इन दोनों प्रवृत्तियों का एक उदाहरण सेफ है[4] परियोजना। भाषा-आधारित प्रणालियों की तुलना करें, जहां सॉफ्टवेयर (विशेष रूप से ऑपरेटिंग सिस्टम) एक सुरक्षित, उच्च-स्तरीय भाषा के आसपास आधारित है, चूंकि हार्डवेयर की आवश्यकता नहीं है: विश्वसनीय आधार अभी भी निम्न स्तर की भाषा में हो सकता है।
नुकसान
में विस्तृत समालोचना दी गई है डिट्जल & पैटरसन (1980) .
एचएलएल सीए की सफलता की कमी का सबसे सरल कारण यह है कि 1980 से अनुकूलन करने वाले कंपाइलरों के परिणामस्वरूप बहुत तेज़ कोड हो गया और माइक्रोकोड में भाषा को लागू करने की तुलना में इसे विकसित करना आसान था। कई संकलक अनुकूलन के लिए कोड के जटिल विश्लेषण और पुनर्व्यवस्था की आवश्यकता होती है, इसलिए मशीन कोड मूल स्रोत कोड से बहुत अलग होता है। जटिलता और ओवरहेड के कारण ये अनुकूलन माइक्रोकोड में लागू करने के लिए या तो असंभव या अव्यवहारिक हैं। समान प्रदर्शन समस्याओं का व्याख्यात्मक भाषाओं के साथ एक लंबा इतिहास है (लिस्प (1958) के लिए डेटिंग), केवल समय-समय पर कंपाइलर द्वारा व्यावहारिक उपयोग के लिए पर्याप्त रूप से हल किया जा रहा है, स्व (प्रोग्रामिंग भाषा) में अग्रणी और हॉटस्पॉट (वर्चुअल मशीन) में व्यावसायीकरण जावा वर्चुअल मशीन (1999)।
मूलभूत समस्या यह है कि एचएलएलसीए केवल संकलक के कोड जनरेशन (संकलक) चरण को सरल करता है, जो सामान्यतः कंपाइलर का एक अपेक्षाकृत छोटा हिस्सा है, और कंप्यूटिंग शक्ति (ट्रांजिस्टर और माइक्रोकोड) का एक संदिग्ध उपयोग है। कम से कम टोकेनाइजेशन की जरूरत है, और सामान्यतः सिंटैक्टिक एनालिसिस और बेसिक सिमेंटिक चेक (अनबाउंड वेरिएबल्स) अभी भी किए जाएंगे - इसलिए फ्रंट एंड को कोई फायदा नहीं है - और ऑप्टिमाइज़ेशन के लिए आगे के विश्लेषण की आवश्यकता होती है - इसलिए इसका कोई फायदा नहीं है मध्य छोर।
एक गहरी समस्या, अभी भी विकास का एक सक्रिय क्षेत्र है ,[5] यह है कि मशीन कोड से एचएलएल डिबगिंग जानकारी प्रदान करना अधिक कठिन है, मूल रूप से डीबगिंग जानकारी के ओवरहेड के कारण, और अधिक संक्षेप में क्योंकि कंपाइलर (विशेष रूप से अनुकूलन) मशीन निर्देश के लिए मूल स्रोत का निर्धारण अधिक सम्मलित करता है। इस प्रकार एचएलएलसीए के एक अनिवार्य भाग के रूप में प्रदान की गई डिबगिंग जानकारी या तो कार्यान्वयन को गंभीर रूप से सीमित करती है या सामान्य उपयोग में महत्वपूर्ण ओवरहेड जोड़ती है।
इसके अतिरिक्त, एचएलएलसीए को सामान्यतः एक भाषा के लिए अनुकूलित किया जाता है, जो अन्य भाषाओं का अधिक खराब तरीके से समर्थन करता है। इसी तरह के मुद्दे बहु-भाषा वर्चुअल मशीनों में उत्पन्न होते हैं, विशेष रूप से जावा वर्चुअल मशीन (जावा के लिए डिज़ाइन किया गया) और .NET सामान्य भाषा रनटाइम (सी शार्प (प्रोग्रामिंग लैंग्वेज) | सी # के लिए डिज़ाइन किया गया), जहाँ अन्य भाषाएँ द्वितीय श्रेणी के नागरिक हैं, और शब्दार्थ में प्रायः मुख्य भाषा के करीब होना चाहिए। इस कारण से निचले स्तर के आईएसए कई भाषाओं को अच्छी तरह से समर्थित होने की अनुमति देते हैं, संकलक समर्थन दिया जाता है। चूंकि, एक समान समस्या कई स्पष्ट रूप से भाषा-तटस्थ प्रोसेसर के लिए भी उत्पन्न होती है, जो भाषा C (प्रोग्रामिंग भाषा) द्वारा अच्छी तरह से समर्थित हैं, और जहाँ स्रोत-से-स्रोत संकलक C के लिए (हार्डवेयर को सीधे लक्षित करने के बजाय) कुशल कार्यक्रम उत्पन्न करता है। और सरल संकलक।
एचएलएलसीए के लाभ वैकल्पिक रूप से एचएलएल कंप्यूटर सिस्टम्स (भाषा-आधारित सिस्टम) में वैकल्पिक तरीकों से प्राप्त किए जा सकते हैं, मुख्य रूप से कंपाइलर्स या दुभाषियों के माध्यम से: सिस्टम अभी भी एचएलएल में लिखा गया है, किन्तु निम्न पर चलने वाले सॉफ़्टवेयर में एक विश्वसनीय आधार है- स्तर की वास्तुकला। लगभग 1980 के बाद से इस दृष्टिकोण का पालन किया गया है: उदाहरण के लिए, एक जावा सिस्टम जहां रनटाइम पर्यावरण स्वयं सी में लिखा गया है, किन्तु ऑपरेटिंग सिस्टम और एप्लिकेशन जावा में लिखे गए हैं।
विकल्प
1980 के दशक के बाद से सामान्य-उद्देश्य वाले कंप्यूटर आर्किटेक्चर में अनुसंधान और कार्यान्वयन का ध्यान मुख्य रूप से आरआईएससी-जैसे आर्किटेक्चर में रहा है, सामान्यतः आंतरिक रूप से रजिस्टर-समृद्ध लोड-स्टोर आर्किटेक्चर, बल्कि स्थिर, गैर-भाषा-विशिष्ट आईएसए के साथ, जिसमें कई रजिस्टर, पाइपलाइनिंग सम्मलित हैं। , और वर्तमान ही में भाषा-विशिष्ट ISA के बजाय मल्टीकोर सिस्टम। भाषा समर्थन ने कम प्रत्यक्ष हार्डवेयर समर्थन के साथ संकलक और उनके रनटाइम, और दुभाषियों और उनकी आभासी मशीनों (विशेष रूप से JIT'ing वाले) पर ध्यान केंद्रित किया है। उदाहरण के लिए, आईओएस के लिए वर्तमान उद्देश्य सी रनटाइम टैग किए गए पॉइंटर्स को लागू करता है, जो हार्डवेयर टैग किए गए आर्किटेक्चर नहीं होने के बावजूद टाइप-चेकिंग और कचरा संग्रह के लिए उपयोग करता है।
कंप्यूटर आर्किटेक्चर में, आरआईएससी(RISC) दृष्टिकोण इसके बजाय बहुत लोकप्रिय और सफल साबित हुआ है, और एचएलएल सीए के विपरीत है, एक बहुत ही सरल निर्देश सेट आर्किटेक्चर पर जोर देता है। चूंकि, 1980 के दशक में आरआईएससी कंप्यूटरों की गति का लाभ मुख्य रूप से आरआईएससी के आंतरिक लाभों के बजाय ऑन-चिप कैश और बड़े रजिस्टरों के लिए कमरे को अपनाने के कारण था।.
यह भी देखें
- विशिष्ट एकीकृत परिपथ आवेदन
- जावा प्रोसेसर
- भाषा आधारित प्रणाली
- लिस्प मशीन
- प्रोलॉग हार्डवेयर में कार्यान्वयन
- सिलिकॉन संकलक
संदर्भ
- ↑ See Yaohan Chu references.
- ↑ "Pascal for Small Machines – History of Lilith". Pascal.hansotten.com. 28 September 2010. Archived from the original on 20 March 2012. Retrieved 12 November 2011.
- ↑ "ECOMP - an Erlang Processor". Archived from the original on 2021-04-24. Retrieved 2022-12-01.
- ↑ "SAFE Project". Archived from the original on 2019-10-22. Retrieved 2022-07-09.
- ↑ See LLVM and the Clang compiler.
- McKeeman, William M. (November 14–16, 1967). Language directed computer design (PDF). AFIPS '67 (Fall) Proceedings of the November 14–16, 1967, Fall Joint Computer Conference. Vol. 31.
- Keirstead, Ralph E. (March 1968). "R68-8 Language Directed Computer Design" (PDF). IEEE Transactions on Computers. 17 (3): 298. doi:10.1109/TC.1968.229106. S2CID 41983403. – review
- Ditzel, David R.; Patterson, David A. (1980). "Retrospective on High-Level Language Computer Architecture" (PDF). Proceedings of the 7th annual symposium on Computer Architecture - ISCA '80. ISCA '80 Proceedings of the 7th annual symposium on Computer Architecture. ACM. pp. 97–104. doi:10.1145/800053.801914. Retrieved 2014-11-18.
- A Baker’s Dozen: Fallacies and Pitfalls in Processor Design Grant Martin & Steve Leibson, Tensilica (early 2000s), slides 6–9
अग्रिम पठन
- Wortman, David Barkley (1972). A Study of Language Directed Computer Design (PhD). Department of Computer Science, Stanford University.
- Hoevel, L.W. (August 1974). ""Ideal" Directly Executed Languages: An Analytical Argument for Emulation" (PDF). IEEE Transactions on Computers. IEEE. 23 (8): 759–767. doi:10.1109/T-C.1974.224032. S2CID 29921112.
- Chu, Yaohan (December 1975). "Concepts of high-level-language computer architecture". ACM SIGMICRO Newsletter. 6 (4): 9–16. doi:10.1145/1217196.1217197. S2CID 9545539.
- Chu, Yaohan (1975). "Concepts of high-level-language computer architecture". Proceedings of the 1975 annual conference on - ACM 75. ACM '75 Proceedings of the 1975 annual conference. pp. 6–13. doi:10.1145/800181.810257.
- Chu, Yaohan; Cannon, R. (June 1976). "Interactive High-Level Language Direct-Execution Microprocessor System". IEEE Transactions on Software Engineering. 2 (2): 126–134. doi:10.1109/TSE.1976.233802. S2CID 9076898.
- Chu, Yaohan (December 1977). "Direct-execution computer architecture". ACM SIGARCH Computer Architecture News. 6 (5): 18–23. doi:10.1145/859412.859415. S2CID 10241380.
- Chu, Yaohan (1978). "Direct Execution In A High-Level Computer Architecture". Proceedings of the 1978 annual conference on - ACM 78. ACM '78 Proceedings of the 1978 annual conference. pp. 289–300. doi:10.1145/800127.804116. ISBN 0897910001.
- Chu, Yaohan; Abrams, M. (July 1981). "Programming Languages and Direct-Execution Computer Architecture". Computer. 14 (7): 22–32. doi:10.1109/C-M.1981.220525. S2CID 3373193.