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

From Vigyanwiki
Revision as of 23:40, 23 February 2023 by alpha>Ashirvad Verma

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

एचएलएल सीए का समय काल लगभग एचएलएल के प्रारंभिक समय तक है, इस प्रकार 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) को एडीए को सपोर्ट करने के लिए डिज़ाइन किया गया था। यह इंटेल का पहला 32-बिट प्रोसेसर डिज़ाइन था, और इस प्रकार 1980 के दशक के लिए इंटेल का मुख्य प्रोसेसर समूह होने का आशय था, किन्तु व्यावसायिक रूप से विफल रहा हैं।

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

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

निकोलस विर्थ की लिलिथ (कंप्यूटर) परियोजना में मॉड्यूल-2 भाषा की ओर कस्टम सीपीयू सम्मलित था।[2]

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

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

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

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

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

कार्यान्वयन

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

आवेदन

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

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

प्रेरणा

इससे संभावित लाभों की विस्तृत सूची में डिट्जल & पैटरसन (1980) द्वारा दी गई है।

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

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

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

हानि

डिट्जल & पैटरसन (1980) में विस्तृत समालोचना दी गई है।

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

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

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

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

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

विकल्प

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

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

यह भी देखें

संदर्भ

  1. See Yaohan Chu references.
  2. "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.
  3. "ECOMP - an Erlang Processor". Archived from the original on 2021-04-24. Retrieved 2022-12-01.
  4. "SAFE Project". Archived from the original on 2019-10-22. Retrieved 2022-07-09.
  5. See LLVM and the Clang compiler.


अग्रिम पठन