निर्देश सेट सिम्युलेटर: Difference between revisions
No edit summary |
No edit summary |
||
Line 3: | Line 3: | ||
निर्देश अनुकरण कई संभावित कारणों में से एक के लिए नियोजित एक पद्धति है | | निर्देश अनुकरण कई संभावित कारणों में से एक के लिए नियोजित एक पद्धति है | | ||
* ऊपर की ओर [[संगतता मोड (सॉफ्टवेयर)]] के लिए किसी अन्य हार्डवेयर उपकरण या पूरे कंप्यूटर के [[मशीन कोड]] का अनुकरण करने के लिए | * ऊपर की ओर [[संगतता मोड (सॉफ्टवेयर)]] के लिए किसी अन्य हार्डवेयर उपकरण या पूरे कंप्यूटर के [[मशीन कोड]] का अनुकरण करने के लिए [[पूर्ण प्रणाली सिम्युलेटर]] में सामान्यतः निर्देश समुच्चय सिम्युलेटर सम्मिलित होता है। | ||
:: उदाहरण के लिए, [[IBM 1401]] को [[माइक्रोकोड]] [[एम्यूलेटर]] के उपयोग के माध्यम से बाद के IBM/360 पर अनुकरण किया गया था। | :: उदाहरण के लिए, [[IBM 1401]] को [[माइक्रोकोड]] [[एम्यूलेटर]] के उपयोग के माध्यम से बाद के IBM/360 पर अनुकरण किया गया था। | ||
* परीक्षण और डिबगिंग उद्देश्यों के लिए एक ही हार्डवेयर पर मशीन कोड निर्देशों (किन्तु | * परीक्षण और डिबगिंग उद्देश्यों के लिए एक ही हार्डवेयर पर मशीन कोड निर्देशों (किन्तु इनपुट स्ट्रीम के रूप में माना जाता है) की निगरानी और निष्पादन करने के लिए, उदाहरण मेमोरी सुरक्षा के साथ (जो आकस्मिक या जानबूझकर [[ बफ़र अधिकता |बफ़र अधिकता]] से बचाता है)। | ||
* गति के प्रदर्शन में सुधार करने के लिए धीमी [[चक्र-सटीक सिम्युलेटर|चक्र-स्पष्ट सिम्युलेटर]] की तुलना में प्रोसेसर कोर से जुड़े अनुकरण के जहां प्रोसेसर स्वयं सत्यापित होने वाले तत्वों में से एक नहीं है | [[ Verilog |वेरिलॉग]] का उपयोग करते हुए [[हार्डवेयर विवरण भाषा]] रचना में जहां आईएसएस जैसे उपकरणों के साथ अनुकरण को वेरिलॉग प्रोग्राम लैंग्वेज इंटरफेस .28PLI.29 के माध्यम से तेजी से चलाया जा सकता है (PL/1 के साथ भ्रमित नहीं होना चाहिए, जो | * गति के प्रदर्शन में सुधार करने के लिए धीमी [[चक्र-सटीक सिम्युलेटर|चक्र-स्पष्ट सिम्युलेटर]] की तुलना में प्रोसेसर कोर से जुड़े अनुकरण के जहां प्रोसेसर स्वयं सत्यापित होने वाले तत्वों में से एक नहीं है | [[ Verilog |वेरिलॉग]] का उपयोग करते हुए [[हार्डवेयर विवरण भाषा]] रचना में जहां आईएसएस जैसे उपकरणों के साथ अनुकरण को वेरिलॉग प्रोग्राम लैंग्वेज इंटरफेस .28PLI.29 के माध्यम से तेजी से चलाया जा सकता है (PL/1 के साथ भ्रमित नहीं होना चाहिए, जो [[प्रोग्रामिंग भाषा]] है)। | ||
*'''इनमें से कुछ सॉफ़्टवेयर सिमुलेटरों का असेंबली लैंग्वेज और इंस्ट्रक्शन समुच्चय आर्किटेक्चर शिक्षण के लिए उपकरणों के रूप में | *'''इनमें से कुछ सॉफ़्टवेयर सिमुलेटरों का असेंबली लैंग्वेज और इंस्ट्रक्शन समुच्चय आर्किटेक्चर शिक्षण के लिए उपकरणों के रूप में''' | ||
== कार्यान्वयन == | == कार्यान्वयन == | ||
लक्ष्य हार्डवेयर प्राप्त करने से पहले प्रोग्राम को डीबग करने के लिए सॉफ़्टवेयर इंजीनियरिंग/[[प्रोग्रामर]] के लिए | लक्ष्य हार्डवेयर प्राप्त करने से पहले प्रोग्राम को डीबग करने के लिए सॉफ़्टवेयर इंजीनियरिंग/[[प्रोग्रामर]] के लिए आईएसएस अधिकांशतः [[ डिबगर | डिबगर]] (या स्वयं) प्रदान किया जाता है। [[जीडीबी]] डीबगर है जिसमें संकलित आईएसएस है। [[ microcontroller |माइक्रो नियंत्रक]] के व्यवहार की नकल करने के लिए इसे कभी-कभी सिम्युलेटेड परिधीय परिपथ जैसे [[ घड़ी |घड़ी]] , [[ बाधा डालना |बाधा डालना]] , [[ आनुक्रमिक द्वार |आनुक्रमिक द्वार]] , सामान्य I/O पोर्ट आदि के साथ एकीकृत किया जाता है। | ||
मूल निर्देश अनुकरण विधि उद्देश्य की परवाह किए बिना समान है: पहले | मूल निर्देश अनुकरण विधि उद्देश्य की परवाह किए बिना समान है: पहले अतिरिक्त इनपुट मापदंड के रूप में लक्ष्य कार्यक्रम के नाम से गुजरने वाले निगरानी कार्यक्रम को निष्पादित करें। | ||
लक्ष्य कार्यक्रम को तब मेमोरी में लोड किया जाता है, किन्तु कोड को नियंत्रण कभी नहीं दिया जाता है। इसके अतिरिक्त, लोड किए गए प्रोग्राम के अन्दर [[प्रवेश बिंदु]] की गणना की जाती है | और इस स्थान पर छद्म प्रोग्राम स्थिति शब्द (पीएसडब्ल्यू) समुच्चय किया जाता है। स्यूडो प्रोसेसर रजिस्टर का | लक्ष्य कार्यक्रम को तब मेमोरी में लोड किया जाता है, किन्तु कोड को नियंत्रण कभी नहीं दिया जाता है। इसके अतिरिक्त, लोड किए गए प्रोग्राम के अन्दर [[प्रवेश बिंदु]] की गणना की जाती है | और इस स्थान पर छद्म प्रोग्राम स्थिति शब्द (पीएसडब्ल्यू) समुच्चय किया जाता है। स्यूडो प्रोसेसर रजिस्टर का समुच्चय इस बात पर समुच्चय होता है कि यदि प्रोग्राम को सीधे नियंत्रण दिया गया होता तो उसमें क्या होता। | ||
हार्डवेयर और ऑपरेटिंग प्रणाली के आधार पर अन्य छद्म नियंत्रण ब्लॉकों को संकेत करने के लिए इनमें से कुछ में संशोधन करना आवश्यक हो सकता है। पहले जोड़े गए प्रोग्राम नाम मापदंड को 'स्ट्रिप आउट' करने के लिए मूल मापदंड सूची को रीसेट करना भी आवश्यक हो सकता है। | हार्डवेयर और ऑपरेटिंग प्रणाली के आधार पर अन्य छद्म नियंत्रण ब्लॉकों को संकेत करने के लिए इनमें से कुछ में संशोधन करना आवश्यक हो सकता है। पहले जोड़े गए प्रोग्राम नाम मापदंड को 'स्ट्रिप आउट' करने के लिए मूल मापदंड सूची को रीसेट करना भी आवश्यक हो सकता है। | ||
Line 23: | Line 23: | ||
# छद्म पीएसडब्ल्यू स्थान पर निर्देश की लंबाई निर्धारित करें (प्रारंभ में लक्ष्य कार्यक्रम में पहला निर्देश)। यदि यह निर्देश प्रोग्राम के अन्दर पहले दिए गए पॉज़ पॉइंट्स के समुच्चय से मेल खाता है, तो पॉज़ कारण समुच्चय करें, 7 पर जाएँ। | # छद्म पीएसडब्ल्यू स्थान पर निर्देश की लंबाई निर्धारित करें (प्रारंभ में लक्ष्य कार्यक्रम में पहला निर्देश)। यदि यह निर्देश प्रोग्राम के अन्दर पहले दिए गए पॉज़ पॉइंट्स के समुच्चय से मेल खाता है, तो पॉज़ कारण समुच्चय करें, 7 पर जाएँ। | ||
# मॉनिटर की मेमोरी में निर्देश को उसके मूल स्थान (यदि आवश्यक हो) से प्राप्त करें। यदि ट्रेस उपलब्ध है और चालू है, तो प्रोग्राम का नाम, निर्देश ऑफ़सेट और कोई अन्य मान संग्रहीत करें। | # मॉनिटर की मेमोरी में निर्देश को उसके मूल स्थान (यदि आवश्यक हो) से प्राप्त करें। यदि ट्रेस उपलब्ध है और चालू है, तो प्रोग्राम का नाम, निर्देश ऑफ़सेट और कोई अन्य मान संग्रहीत करें। | ||
# निर्देश प्रकार के आधार पर, पूर्व-निष्पादन जांच करें और निष्पादित करें। यदि निर्देश किसी भी कारण से आगे नहीं बढ़ सकता है (अमान्य निर्देश, गलत मोड इत्यादि) 7 पर जाएं। यदि निर्देश स्मृति को बदलने वाला है,| तो स्मृति गंतव्य की जांच करें (इस थ्रेड (कंप्यूटर विज्ञान) के लिए) और पर्याप्त रूप से बड़ा है। यदि ठीक है, अस्थायी वास्तविक रजिस्टरों में उचित छद्म रजिस्टरों को लोड करें, वास्तविक रजिस्टरों के साथ समकक्ष चाल करें,| ट्रेस चालू होने पर पता और परिवर्तित भंडारण की लंबाई को बचाएं और 4 पर जाएं। यदि निर्देश | # निर्देश प्रकार के आधार पर, पूर्व-निष्पादन जांच करें और निष्पादित करें। यदि निर्देश किसी भी कारण से आगे नहीं बढ़ सकता है (अमान्य निर्देश, गलत मोड इत्यादि) 7 पर जाएं। यदि निर्देश स्मृति को बदलने वाला है,| तो स्मृति गंतव्य की जांच करें (इस थ्रेड (कंप्यूटर विज्ञान) के लिए) और पर्याप्त रूप से बड़ा है। यदि ठीक है, अस्थायी वास्तविक रजिस्टरों में उचित छद्म रजिस्टरों को लोड करें, वास्तविक रजिस्टरों के साथ समकक्ष चाल करें,| ट्रेस चालू होने पर पता और परिवर्तित भंडारण की लंबाई को बचाएं और 4 पर जाएं। यदि निर्देश रजिस्टर-टू-रजिस्टर ऑपरेशन है, छद्म लोड करें मॉनिटर के वास्तविक रजिस्टरों में रजिस्टर करता है,| ऑपरेशन करता है, संबंधित छद्म रजिस्टरों में वापस स्टोर करता है,| 4 पर जाता है। यदि निर्देश सशर्त शाखा है, तो निर्धारित करें कि क्या स्थिति संतुष्ट है: यदि 4 पर नहीं जाते हैं, यदि स्थिति संतुष्ट है, तो पता करने के लिए शाखा की गणना करें , निर्धारित करें कि क्या मान्य है (यदि नहीं, तो त्रुटि = [[जंगली शाखा]] समुच्चय करें और 7 पर जाएं।) यदि ठीक है, तो 5 पर जाएं। यदि निर्देश ऑपरेटिंग प्रणाली कॉल है, तो मॉनिटरिंग प्रोग्राम से वास्तविक कॉल करें, फेक पतों से प्रोग्राम की निगरानी के लिए नियंत्रण लौटाएं और फिर कॉल को प्रतिबिंबित करने के लिए छद्म रजिस्टरों को रीसेट करें; 4 पर जाएं। | ||
# वर्तमान छद्म पीएसडब्ल्यू मान में निर्देश की लंबाई जोड़ें। | # वर्तमान छद्म पीएसडब्ल्यू मान में निर्देश की लंबाई जोड़ें। | ||
# छद्म पीएसडब्ल्यू में अगला पता स्टोर करें। | # छद्म पीएसडब्ल्यू में अगला पता स्टोर करें। | ||
Line 29: | Line 29: | ||
#निष्पादन रोकें। | #निष्पादन रोकें। | ||
परीक्षण और डिबगिंग उद्देश्यों के लिए, निगरानी कार्यक्रम रजिस्टरों, मेमोरी को देखने और बदलने की सुविधा प्रदान कर सकता है और स्थान को फिर से प्रारंभ कर सकता है या वर्तमान डेटा मूल्यों के साथ | परीक्षण और डिबगिंग उद्देश्यों के लिए, निगरानी कार्यक्रम रजिस्टरों, मेमोरी को देखने और बदलने की सुविधा प्रदान कर सकता है और स्थान को फिर से प्रारंभ कर सकता है या वर्तमान डेटा मूल्यों के साथ मिनी [[कोर निपात]] या प्रिंट प्रतीकात्मक प्रोग्राम नाम प्राप्त कर सकता है। यह नए सशर्त विराम स्थानों की अनुमति दे सकता है,| अवांछित विरामों को हटा सकता है और इसी तरह। | ||
निर्देश अनुकरण निष्पादन से पहले त्रुटियों का पता लगाने का अवसर प्रदान करता है | जिसका अर्थ है कि स्थितियां अभी भी वैसी ही हैं जैसी वे थीं और त्रुटि से नष्ट नहीं हुईं। [[IBM]] S/360 दुनिया का | निर्देश अनुकरण निष्पादन से पहले त्रुटियों का पता लगाने का अवसर प्रदान करता है | जिसका अर्थ है कि स्थितियां अभी भी वैसी ही हैं जैसी वे थीं और त्रुटि से नष्ट नहीं हुईं। [[IBM]] S/360 दुनिया का बहुत अच्छा उदाहरण निम्नलिखित निर्देश अनुक्रम है | जो निर्देश अनुकरण मॉनिटर के बिना डिबगिंग में कठिनाई उत्पन्न कर सकता है। | ||
LM R14,R12,12(R13) जहां r13 गलत तरीके से X 00 s की स्ट्रिंग को संकेत करता है | LM R14,R12,12(R13) जहां r13 गलत तरीके से X 00 s की स्ट्रिंग को संकेत करता है | ||
Line 41: | Line 41: | ||
=== ओवरहेड === | === ओवरहेड === | ||
उपरोक्त मूल लूप (नए पते को प्राप्त/निष्पादित/गणना) करने के लिए निर्देशों की संख्या हार्डवेयर पर निर्भर करती है | किन्तु इसे IBM S/360/370/390/ES9000 स्तर की मशीनों पर कई निर्देशों के लिए लगभग 12 या 13 निर्देशों में पूरा किया जा सकता है। | उपरोक्त मूल लूप (नए पते को प्राप्त/निष्पादित/गणना) करने के लिए निर्देशों की संख्या हार्डवेयर पर निर्भर करती है | किन्तु इसे IBM S/360/370/390/ES9000 स्तर की मशीनों पर कई निर्देशों के लिए लगभग 12 या 13 निर्देशों में पूरा किया जा सकता है। वैध स्मृति स्थानों या सशर्त ठहराव के लिए जाँच ओवरहेड में अधिक वृद्धि करती है | किन्तु अनुकूलन विधि इसे स्वीकार्य स्तर तक कम कर सकती है। परीक्षण उद्देश्यों के लिए यह सामान्य रूप से अधिक स्वीकार्य है | क्योंकि निर्देश चरण, ट्रेस और परीक्षण त्रुटि दिनचर्या (जब कोई वास्तविक त्रुटि नहीं है) के लिए जानबूझकर कूद सहित शक्तिशाली डीबगिंग क्षमताएं प्रदान की जाती हैं। इसके अतिरिक्त, वास्तविक (निष्पादित) [[ कोड कवरेज़ |कोड कवरेज़]] का परीक्षण करने के लिए पूर्ण निर्देश ट्रेस का उपयोग किया जा सकता है। | ||
=== अतिरिक्त लाभ === | === अतिरिक्त लाभ === | ||
Line 47: | Line 47: | ||
कभी-कभी, लक्ष्य कार्यक्रम के निष्पादन की निगरानी यादृच्छिक त्रुटियों को उजागर करने में सहायता कर सकती है | जो निगरानी के समय दिखाई देती हैं (या कभी-कभी गायब हो जाती हैं) किन्तु वास्तविक निष्पादन में नहीं है। यह तब हो सकता है जब एक ही पता स्थान में निगरानी कार्यक्रम की भौतिक उपस्थिति के कारण लक्ष्य कार्यक्रम सामान्य से भिन्न स्थान पर लोड हो सकता है। | कभी-कभी, लक्ष्य कार्यक्रम के निष्पादन की निगरानी यादृच्छिक त्रुटियों को उजागर करने में सहायता कर सकती है | जो निगरानी के समय दिखाई देती हैं (या कभी-कभी गायब हो जाती हैं) किन्तु वास्तविक निष्पादन में नहीं है। यह तब हो सकता है जब एक ही पता स्थान में निगरानी कार्यक्रम की भौतिक उपस्थिति के कारण लक्ष्य कार्यक्रम सामान्य से भिन्न स्थान पर लोड हो सकता है। | ||
यदि लक्ष्य प्रोग्राम स्मृति में | यदि लक्ष्य प्रोग्राम स्मृति में यादृच्छिक स्थान से मूल्य उठाता है (सामान्यतः यह 'स्वयं' नहीं होता है), उदाहरण के लिए यह लगभग हर सामान्य स्थिति में शून्य (एक्स 00) हो सकता है और कार्यक्रम ठीक काम करता है। यदि निगरानी कार्यक्रम लोड बिंदु को स्थानांतरित करता है, तो यह X FF कह सकता है और तर्क तुलना ऑपरेशन के समय अलग-अलग परिणाम देगा। वैकल्पिक रूप से, यदि निगरानी कार्यक्रम अब उस स्थान पर कब्जा कर रहा है | जहां से मूल्य उठाया जा रहा है, तो समान परिणाम हो सकते हैं। | ||
पुन: प्रवेश बग: डायनेमिक थ्रेड मेमोरी के अतिरिक्त स्थिर चर का आकस्मिक उपयोग कई स्थितियों में पुन: प्रवेश की समस्या उत्पन्न कर सकता है। | पुन: प्रवेश बग: डायनेमिक थ्रेड मेमोरी के अतिरिक्त स्थिर चर का आकस्मिक उपयोग कई स्थितियों में पुन: प्रवेश की समस्या उत्पन्न कर सकता है। मॉनिटरिंग प्रोग्राम का उपयोग [[स्टोरेज प्रोटेक्ट की]] के बिना भी इनका पता लगा सकता है। | ||
अवैध संचालन: कुछ ऑपरेटिंग प्रणाली (या हार्डवेयर) को ऑपरेटिंग प्रणाली पर कुछ कॉल के लिए एप्लिकेशन प्रोग्राम को सही मोड में रखने की आवश्यकता होती है। निर्देश अनुकरण निष्पादन से पहले इन स्थितियों का पता लगा सकता है। | अवैध संचालन: कुछ ऑपरेटिंग प्रणाली (या हार्डवेयर) को ऑपरेटिंग प्रणाली पर कुछ कॉल के लिए एप्लिकेशन प्रोग्राम को सही मोड में रखने की आवश्यकता होती है। निर्देश अनुकरण निष्पादन से पहले इन स्थितियों का पता लगा सकता है। | ||
अनुकरण के समय निष्पादित निर्देशों की गणना करके हॉट स्पॉट विश्लेषण और निर्देश उपयोग (जो वास्तविक प्रोसेसर या गैर-निगरानी निष्पादन पर निष्पादित संख्या से मेल खाएगा), सिम्युलेटर एल्गोरिदम के विभिन्न संस्करणों के बीच सापेक्ष प्रदर्शन का माप प्रदान कर सकता है और इसका पता लगाने के लिए भी उपयोग किया जा सकता है। हॉट स्पॉट जहां ऑप्टिमाइज़ेशन (कंप्यूटर साइंस) को प्रोग्रामर द्वारा लक्षित किया जा सकता है। इस भूमिका में इसे प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग) का | अनुकरण के समय निष्पादित निर्देशों की गणना करके हॉट स्पॉट विश्लेषण और निर्देश उपयोग (जो वास्तविक प्रोसेसर या गैर-निगरानी निष्पादन पर निष्पादित संख्या से मेल खाएगा), सिम्युलेटर एल्गोरिदम के विभिन्न संस्करणों के बीच सापेक्ष प्रदर्शन का माप प्रदान कर सकता है और इसका पता लगाने के लिए भी उपयोग किया जा सकता है। हॉट स्पॉट जहां ऑप्टिमाइज़ेशन (कंप्यूटर साइंस) को प्रोग्रामर द्वारा लक्षित किया जा सकता है। इस भूमिका में इसे प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग) का रूप माना जा सकता है | क्योंकि इन आँकड़ों को सामान्य निष्पादन के अनुसार प्राप्त करना आसान नहीं है और यह उच्च स्तरीय भाषा कार्यक्रमों के लिए विशेष रूप से सच है जो मशीन कोड निर्देशों की सीमा को प्रभावी ढंग से भेज देते हैं। | ||
== शैक्षिक उद्देश्य == | == शैक्षिक उद्देश्य == | ||
इनमें से कुछ सॉफ़्टवेयर सिमुलेटरों का असेंबली लैंग्वेज और इंस्ट्रक्शन समुच्चय आर्किटेक्चर शिक्षण के लिए उपकरणों के रूप में उपयोग किया जाना बाकी है, कुछ को विशेष रूप से कई अनुकरण परतों और आईएसए से आईएसए अनुकरण का उपयोग करके रचना किया गया है | यहां तक कि आईएसए को रचना करने और उन्हें अनुकरण करने की क्षमता के साथ होता है।<ref name=":0">Almasri, I., Abandah, G., Shhadeh, A., Shahrour, A. (2011, December). Universal ISA simulator with soft processor FPGA implementation. In Applied Electrical Engineering and Computing Technologies (AEECT), 2011 IEEE Jordan Conference on (pp. 1–6). IEEE.</ref> | इनमें से कुछ सॉफ़्टवेयर सिमुलेटरों का असेंबली लैंग्वेज और इंस्ट्रक्शन समुच्चय आर्किटेक्चर शिक्षण के लिए उपकरणों के रूप में उपयोग किया जाना बाकी है, कुछ को विशेष रूप से कई अनुकरण परतों और आईएसए से आईएसए अनुकरण का उपयोग करके रचना किया गया है | यहां तक कि आईएसए को रचना करने और उन्हें अनुकरण करने की क्षमता के साथ होता है।<ref name=":0">Almasri, I., Abandah, G., Shhadeh, A., Shahrour, A. (2011, December). Universal ISA simulator with soft processor FPGA implementation. In Applied Electrical Engineering and Computing Technologies (AEECT), 2011 IEEE Jordan Conference on (pp. 1–6). IEEE.</ref> | ||
== आलोचना == | == आलोचना == | ||
[[कंप्यूटर प्रोग्रामिंग की कला]] के पहले खंड में, [[डोनाल्ड नुथ]] ने लिखा: लेखक की राय में, ऐसे मशीन भाषा सिमुलेटरों को लिखने में पूरी तरह से बहुत अधिक प्रोग्रामर का समय व्यतीत किया गया है और उनका उपयोग करने में पूरी तरह से बहुत अधिक कंप्यूटर समय बर्बाद किया गया है।<ref>“The Art of Computer Programming”, [[Donald Knuth]], 1997, Volume 1, 3rd edition, Page 202.</ref> चूँकि, निम्नलिखित खंड में, लेखक उदाहरण देता है कि कैसे ऐसे सिमुलेटर डिबगिंग उद्देश्यों के लिए ट्रेस या मॉनिटर रूटीन के रूप में उपयोगी होते हैं। | [[कंप्यूटर प्रोग्रामिंग की कला]] के पहले खंड में, [[डोनाल्ड नुथ]] ने लिखा: लेखक की राय में, ऐसे मशीन भाषा सिमुलेटरों को लिखने में पूरी तरह से बहुत अधिक प्रोग्रामर का समय व्यतीत किया गया है और उनका उपयोग करने में पूरी तरह से बहुत अधिक कंप्यूटर समय बर्बाद किया गया है।<ref>“The Art of Computer Programming”, [[Donald Knuth]], 1997, Volume 1, 3rd edition, Page 202.</ref> चूँकि, निम्नलिखित खंड में, लेखक उदाहरण देता है कि कैसे ऐसे सिमुलेटर डिबगिंग उद्देश्यों के लिए ट्रेस या मॉनिटर रूटीन के रूप में उपयोगी होते हैं। | ||
Line 77: | Line 75: | ||
== यह भी देखें == | == यह भी देखें == | ||
[[सिम|सिमुलेटर]] | [[सिम|सिमुलेटर]] | ||
* [[ARMulator|एआरएममुलेटर]] - [[एआरएम वास्तुकला]] के लिए सीपीयू सिमुलेटर,एआरएम द्वारा स्वयं | * [[ARMulator|एआरएममुलेटर]] - [[एआरएम वास्तुकला]] के लिए सीपीयू सिमुलेटर,एआरएम द्वारा स्वयं संदर्भ और सॉफ्टवेयर विकास वाहन दोनों के रूप में प्रदान किया गया है। | ||
* [[कंप्यूटर आर्किटेक्चर सिम्युलेटर]] | * [[कंप्यूटर आर्किटेक्चर सिम्युलेटर]] | ||
* [[सीपीयू सिम]] - जावा-आधारित प्रोग्राम जो उपयोगकर्ता को निर्देश समुच्चय को रचना करने और बनाने की अनुमति देता है और फिर समुच्चय से अनुकरण के माध्यम से निर्देशों के प्रोग्राम चलाता है | | * [[सीपीयू सिम]] - जावा-आधारित प्रोग्राम जो उपयोगकर्ता को निर्देश समुच्चय को रचना करने और बनाने की अनुमति देता है और फिर समुच्चय से अनुकरण के माध्यम से निर्देशों के प्रोग्राम चलाता है | | ||
Line 83: | Line 81: | ||
* इंटरप/8 - इंटेल 8008 और इंटरप/80 इंटेल8080 के लिए। | * इंटरप/8 - इंटेल 8008 और इंटरप/80 इंटेल8080 के लिए। | ||
* [[छोटा आदमी कंप्यूटर]] - निर्देश समुच्चय सिम्युलेटर का सरल जावा-आधारित उदाहरण है | | * [[छोटा आदमी कंप्यूटर]] - निर्देश समुच्चय सिम्युलेटर का सरल जावा-आधारित उदाहरण है | | ||
* [[ माइक्रो सिम ]] - सीपीयू सिम्युलेटर, शैक्षिक उपयोग के लिए माइक्रोकोड स्तर पर निर्देश समुच्चय परिभाषा की अनुमति देता है | | * [[ माइक्रो सिम | माइक्रो सिम]] - सीपीयू सिम्युलेटर, शैक्षिक उपयोग के लिए माइक्रोकोड स्तर पर निर्देश समुच्चय परिभाषा की अनुमति देता है | | ||
*:डी:वर्चुएलर_इन्फो_2-प्रोज़ेसर - सीपीयू सिम्युलेटर, शैक्षिक उपयोग के लिए माइक्रोकोड स्तर पर निर्देश समुच्चय परिभाषा की अनुमति देता है | *:डी:वर्चुएलर_इन्फो_2-प्रोज़ेसर - सीपीयू सिम्युलेटर, शैक्षिक उपयोग के लिए माइक्रोकोड स्तर पर निर्देश समुच्चय परिभाषा की अनुमति देता है | ||
* [[OVPsim|ओवीपीसिम]] - सीपीयू और पूर्ण प्रणाली सिम्युलेटर, प्रोसेसर के 170 से अधिक निर्देश स्पष्ट मॉडल प्रदान करते हैं। उपयोगकर्ता परिभाषित निर्देश समुच्चय की अनुमति देता है। | * [[OVPsim|ओवीपीसिम]] - सीपीयू और पूर्ण प्रणाली सिम्युलेटर, प्रोसेसर के 170 से अधिक निर्देश स्पष्ट मॉडल प्रदान करते हैं। उपयोगकर्ता परिभाषित निर्देश समुच्चय की अनुमति देता है। |
Revision as of 16:38, 29 April 2023
निर्देश समुच्चय सिम्युलेटर (आईएसएस) एक अनुकरण मॉडल (सार) है | जिसे सामान्यतः एक उच्च-स्तरीय प्रोग्रामिंग भाषा में कोडित किया जाता है | जो निर्देशों को पढ़कर और प्रोसेसर के प्रोसेसर रजिस्टर का प्रतिनिधित्व करने वाले आंतरिक चर को बनाए रखते हुए मेनफ्रेम या माइक्रोप्रोसेसर के व्यवहार की नकल करता है।
निर्देश अनुकरण कई संभावित कारणों में से एक के लिए नियोजित एक पद्धति है |
- ऊपर की ओर संगतता मोड (सॉफ्टवेयर) के लिए किसी अन्य हार्डवेयर उपकरण या पूरे कंप्यूटर के मशीन कोड का अनुकरण करने के लिए पूर्ण प्रणाली सिम्युलेटर में सामान्यतः निर्देश समुच्चय सिम्युलेटर सम्मिलित होता है।
- उदाहरण के लिए, IBM 1401 को माइक्रोकोड एम्यूलेटर के उपयोग के माध्यम से बाद के IBM/360 पर अनुकरण किया गया था।
- परीक्षण और डिबगिंग उद्देश्यों के लिए एक ही हार्डवेयर पर मशीन कोड निर्देशों (किन्तु इनपुट स्ट्रीम के रूप में माना जाता है) की निगरानी और निष्पादन करने के लिए, उदाहरण मेमोरी सुरक्षा के साथ (जो आकस्मिक या जानबूझकर बफ़र अधिकता से बचाता है)।
- गति के प्रदर्शन में सुधार करने के लिए धीमी चक्र-स्पष्ट सिम्युलेटर की तुलना में प्रोसेसर कोर से जुड़े अनुकरण के जहां प्रोसेसर स्वयं सत्यापित होने वाले तत्वों में से एक नहीं है | वेरिलॉग का उपयोग करते हुए हार्डवेयर विवरण भाषा रचना में जहां आईएसएस जैसे उपकरणों के साथ अनुकरण को वेरिलॉग प्रोग्राम लैंग्वेज इंटरफेस .28PLI.29 के माध्यम से तेजी से चलाया जा सकता है (PL/1 के साथ भ्रमित नहीं होना चाहिए, जो प्रोग्रामिंग भाषा है)।
- इनमें से कुछ सॉफ़्टवेयर सिमुलेटरों का असेंबली लैंग्वेज और इंस्ट्रक्शन समुच्चय आर्किटेक्चर शिक्षण के लिए उपकरणों के रूप में
कार्यान्वयन
लक्ष्य हार्डवेयर प्राप्त करने से पहले प्रोग्राम को डीबग करने के लिए सॉफ़्टवेयर इंजीनियरिंग/प्रोग्रामर के लिए आईएसएस अधिकांशतः डिबगर (या स्वयं) प्रदान किया जाता है। जीडीबी डीबगर है जिसमें संकलित आईएसएस है। माइक्रो नियंत्रक के व्यवहार की नकल करने के लिए इसे कभी-कभी सिम्युलेटेड परिधीय परिपथ जैसे घड़ी , बाधा डालना , आनुक्रमिक द्वार , सामान्य I/O पोर्ट आदि के साथ एकीकृत किया जाता है।
मूल निर्देश अनुकरण विधि उद्देश्य की परवाह किए बिना समान है: पहले अतिरिक्त इनपुट मापदंड के रूप में लक्ष्य कार्यक्रम के नाम से गुजरने वाले निगरानी कार्यक्रम को निष्पादित करें।
लक्ष्य कार्यक्रम को तब मेमोरी में लोड किया जाता है, किन्तु कोड को नियंत्रण कभी नहीं दिया जाता है। इसके अतिरिक्त, लोड किए गए प्रोग्राम के अन्दर प्रवेश बिंदु की गणना की जाती है | और इस स्थान पर छद्म प्रोग्राम स्थिति शब्द (पीएसडब्ल्यू) समुच्चय किया जाता है। स्यूडो प्रोसेसर रजिस्टर का समुच्चय इस बात पर समुच्चय होता है कि यदि प्रोग्राम को सीधे नियंत्रण दिया गया होता तो उसमें क्या होता।
हार्डवेयर और ऑपरेटिंग प्रणाली के आधार पर अन्य छद्म नियंत्रण ब्लॉकों को संकेत करने के लिए इनमें से कुछ में संशोधन करना आवश्यक हो सकता है। पहले जोड़े गए प्रोग्राम नाम मापदंड को 'स्ट्रिप आउट' करने के लिए मूल मापदंड सूची को रीसेट करना भी आवश्यक हो सकता है।
इसके बाद, निष्पादन आगे बढ़ता है |
- छद्म पीएसडब्ल्यू स्थान पर निर्देश की लंबाई निर्धारित करें (प्रारंभ में लक्ष्य कार्यक्रम में पहला निर्देश)। यदि यह निर्देश प्रोग्राम के अन्दर पहले दिए गए पॉज़ पॉइंट्स के समुच्चय से मेल खाता है, तो पॉज़ कारण समुच्चय करें, 7 पर जाएँ।
- मॉनिटर की मेमोरी में निर्देश को उसके मूल स्थान (यदि आवश्यक हो) से प्राप्त करें। यदि ट्रेस उपलब्ध है और चालू है, तो प्रोग्राम का नाम, निर्देश ऑफ़सेट और कोई अन्य मान संग्रहीत करें।
- निर्देश प्रकार के आधार पर, पूर्व-निष्पादन जांच करें और निष्पादित करें। यदि निर्देश किसी भी कारण से आगे नहीं बढ़ सकता है (अमान्य निर्देश, गलत मोड इत्यादि) 7 पर जाएं। यदि निर्देश स्मृति को बदलने वाला है,| तो स्मृति गंतव्य की जांच करें (इस थ्रेड (कंप्यूटर विज्ञान) के लिए) और पर्याप्त रूप से बड़ा है। यदि ठीक है, अस्थायी वास्तविक रजिस्टरों में उचित छद्म रजिस्टरों को लोड करें, वास्तविक रजिस्टरों के साथ समकक्ष चाल करें,| ट्रेस चालू होने पर पता और परिवर्तित भंडारण की लंबाई को बचाएं और 4 पर जाएं। यदि निर्देश रजिस्टर-टू-रजिस्टर ऑपरेशन है, छद्म लोड करें मॉनिटर के वास्तविक रजिस्टरों में रजिस्टर करता है,| ऑपरेशन करता है, संबंधित छद्म रजिस्टरों में वापस स्टोर करता है,| 4 पर जाता है। यदि निर्देश सशर्त शाखा है, तो निर्धारित करें कि क्या स्थिति संतुष्ट है: यदि 4 पर नहीं जाते हैं, यदि स्थिति संतुष्ट है, तो पता करने के लिए शाखा की गणना करें , निर्धारित करें कि क्या मान्य है (यदि नहीं, तो त्रुटि = जंगली शाखा समुच्चय करें और 7 पर जाएं।) यदि ठीक है, तो 5 पर जाएं। यदि निर्देश ऑपरेटिंग प्रणाली कॉल है, तो मॉनिटरिंग प्रोग्राम से वास्तविक कॉल करें, फेक पतों से प्रोग्राम की निगरानी के लिए नियंत्रण लौटाएं और फिर कॉल को प्रतिबिंबित करने के लिए छद्म रजिस्टरों को रीसेट करें; 4 पर जाएं।
- वर्तमान छद्म पीएसडब्ल्यू मान में निर्देश की लंबाई जोड़ें।
- छद्म पीएसडब्ल्यू में अगला पता स्टोर करें।
- 1 पर जाएं।
- निष्पादन रोकें।
परीक्षण और डिबगिंग उद्देश्यों के लिए, निगरानी कार्यक्रम रजिस्टरों, मेमोरी को देखने और बदलने की सुविधा प्रदान कर सकता है और स्थान को फिर से प्रारंभ कर सकता है या वर्तमान डेटा मूल्यों के साथ मिनी कोर निपात या प्रिंट प्रतीकात्मक प्रोग्राम नाम प्राप्त कर सकता है। यह नए सशर्त विराम स्थानों की अनुमति दे सकता है,| अवांछित विरामों को हटा सकता है और इसी तरह।
निर्देश अनुकरण निष्पादन से पहले त्रुटियों का पता लगाने का अवसर प्रदान करता है | जिसका अर्थ है कि स्थितियां अभी भी वैसी ही हैं जैसी वे थीं और त्रुटि से नष्ट नहीं हुईं। IBM S/360 दुनिया का बहुत अच्छा उदाहरण निम्नलिखित निर्देश अनुक्रम है | जो निर्देश अनुकरण मॉनिटर के बिना डिबगिंग में कठिनाई उत्पन्न कर सकता है।
LM R14,R12,12(R13) जहां r13 गलत तरीके से X 00 s की स्ट्रिंग को संकेत करता है BR R14 प्रोग्राम चेक ऑपरेशन अपवाद के साथ पीएसडब्ल्यू को X 0000002 सम्मिलित करने का कारण बनता है * त्रुटि पर सभी रजिस्टरों में नल होते हैं।
परिणाम
ओवरहेड
उपरोक्त मूल लूप (नए पते को प्राप्त/निष्पादित/गणना) करने के लिए निर्देशों की संख्या हार्डवेयर पर निर्भर करती है | किन्तु इसे IBM S/360/370/390/ES9000 स्तर की मशीनों पर कई निर्देशों के लिए लगभग 12 या 13 निर्देशों में पूरा किया जा सकता है। वैध स्मृति स्थानों या सशर्त ठहराव के लिए जाँच ओवरहेड में अधिक वृद्धि करती है | किन्तु अनुकूलन विधि इसे स्वीकार्य स्तर तक कम कर सकती है। परीक्षण उद्देश्यों के लिए यह सामान्य रूप से अधिक स्वीकार्य है | क्योंकि निर्देश चरण, ट्रेस और परीक्षण त्रुटि दिनचर्या (जब कोई वास्तविक त्रुटि नहीं है) के लिए जानबूझकर कूद सहित शक्तिशाली डीबगिंग क्षमताएं प्रदान की जाती हैं। इसके अतिरिक्त, वास्तविक (निष्पादित) कोड कवरेज़ का परीक्षण करने के लिए पूर्ण निर्देश ट्रेस का उपयोग किया जा सकता है।
अतिरिक्त लाभ
कभी-कभी, लक्ष्य कार्यक्रम के निष्पादन की निगरानी यादृच्छिक त्रुटियों को उजागर करने में सहायता कर सकती है | जो निगरानी के समय दिखाई देती हैं (या कभी-कभी गायब हो जाती हैं) किन्तु वास्तविक निष्पादन में नहीं है। यह तब हो सकता है जब एक ही पता स्थान में निगरानी कार्यक्रम की भौतिक उपस्थिति के कारण लक्ष्य कार्यक्रम सामान्य से भिन्न स्थान पर लोड हो सकता है।
यदि लक्ष्य प्रोग्राम स्मृति में यादृच्छिक स्थान से मूल्य उठाता है (सामान्यतः यह 'स्वयं' नहीं होता है), उदाहरण के लिए यह लगभग हर सामान्य स्थिति में शून्य (एक्स 00) हो सकता है और कार्यक्रम ठीक काम करता है। यदि निगरानी कार्यक्रम लोड बिंदु को स्थानांतरित करता है, तो यह X FF कह सकता है और तर्क तुलना ऑपरेशन के समय अलग-अलग परिणाम देगा। वैकल्पिक रूप से, यदि निगरानी कार्यक्रम अब उस स्थान पर कब्जा कर रहा है | जहां से मूल्य उठाया जा रहा है, तो समान परिणाम हो सकते हैं।
पुन: प्रवेश बग: डायनेमिक थ्रेड मेमोरी के अतिरिक्त स्थिर चर का आकस्मिक उपयोग कई स्थितियों में पुन: प्रवेश की समस्या उत्पन्न कर सकता है। मॉनिटरिंग प्रोग्राम का उपयोग स्टोरेज प्रोटेक्ट की के बिना भी इनका पता लगा सकता है।
अवैध संचालन: कुछ ऑपरेटिंग प्रणाली (या हार्डवेयर) को ऑपरेटिंग प्रणाली पर कुछ कॉल के लिए एप्लिकेशन प्रोग्राम को सही मोड में रखने की आवश्यकता होती है। निर्देश अनुकरण निष्पादन से पहले इन स्थितियों का पता लगा सकता है।
अनुकरण के समय निष्पादित निर्देशों की गणना करके हॉट स्पॉट विश्लेषण और निर्देश उपयोग (जो वास्तविक प्रोसेसर या गैर-निगरानी निष्पादन पर निष्पादित संख्या से मेल खाएगा), सिम्युलेटर एल्गोरिदम के विभिन्न संस्करणों के बीच सापेक्ष प्रदर्शन का माप प्रदान कर सकता है और इसका पता लगाने के लिए भी उपयोग किया जा सकता है। हॉट स्पॉट जहां ऑप्टिमाइज़ेशन (कंप्यूटर साइंस) को प्रोग्रामर द्वारा लक्षित किया जा सकता है। इस भूमिका में इसे प्रोफाइलिंग (कंप्यूटर प्रोग्रामिंग) का रूप माना जा सकता है | क्योंकि इन आँकड़ों को सामान्य निष्पादन के अनुसार प्राप्त करना आसान नहीं है और यह उच्च स्तरीय भाषा कार्यक्रमों के लिए विशेष रूप से सच है जो मशीन कोड निर्देशों की सीमा को प्रभावी ढंग से भेज देते हैं।
शैक्षिक उद्देश्य
इनमें से कुछ सॉफ़्टवेयर सिमुलेटरों का असेंबली लैंग्वेज और इंस्ट्रक्शन समुच्चय आर्किटेक्चर शिक्षण के लिए उपकरणों के रूप में उपयोग किया जाना बाकी है, कुछ को विशेष रूप से कई अनुकरण परतों और आईएसए से आईएसए अनुकरण का उपयोग करके रचना किया गया है | यहां तक कि आईएसए को रचना करने और उन्हें अनुकरण करने की क्षमता के साथ होता है।[1]
आलोचना
कंप्यूटर प्रोग्रामिंग की कला के पहले खंड में, डोनाल्ड नुथ ने लिखा: लेखक की राय में, ऐसे मशीन भाषा सिमुलेटरों को लिखने में पूरी तरह से बहुत अधिक प्रोग्रामर का समय व्यतीत किया गया है और उनका उपयोग करने में पूरी तरह से बहुत अधिक कंप्यूटर समय बर्बाद किया गया है।[2] चूँकि, निम्नलिखित खंड में, लेखक उदाहरण देता है कि कैसे ऐसे सिमुलेटर डिबगिंग उद्देश्यों के लिए ट्रेस या मॉनिटर रूटीन के रूप में उपयोगी होते हैं।
उदाहरण
परीक्षण और डिबगिंग के लिए उपयोग किए जाने वाले मॉनिटरिंग प्रोग्राम द्वारा अनुकरण से विशिष्ट ट्रेस आउटपुट देता है |
प्रोग्राम ऑफसेट निर्देश डिस-असेंबल रजिस्टर/स्टोरेज (निष्पादन के बाद) TEST001 000000 X'05C0' BALR R12,0 R12=002CE00A 000002 X'47F0C00E' ई.पू. 15,X'00C'(R12) 00000E X'98ECD00C' STM R14,R12,X'00C'(R13) X'002E0008' ==> X'00004CE,002CE008,..etc...' 000012 X'45E0C122' बाल R14,X'122'(R12) R14=002C0016 SUB1 000124 X'50E0C28A' ST R14,X'28A'(R12) X'002CE294' ==> X'002C0016' वगैरह...
यह भी देखें
- एआरएममुलेटर - एआरएम वास्तुकला के लिए सीपीयू सिमुलेटर,एआरएम द्वारा स्वयं संदर्भ और सॉफ्टवेयर विकास वाहन दोनों के रूप में प्रदान किया गया है।
- कंप्यूटर आर्किटेक्चर सिम्युलेटर
- सीपीयू सिम - जावा-आधारित प्रोग्राम जो उपयोगकर्ता को निर्देश समुच्चय को रचना करने और बनाने की अनुमति देता है और फिर समुच्चय से अनुकरण के माध्यम से निर्देशों के प्रोग्राम चलाता है |
- जीपीएसआईएम - तस्वीर माइक्रोकंट्रोलर सिम्युलेटर
- इंटरप/8 - इंटेल 8008 और इंटरप/80 इंटेल8080 के लिए।
- छोटा आदमी कंप्यूटर - निर्देश समुच्चय सिम्युलेटर का सरल जावा-आधारित उदाहरण है |
- माइक्रो सिम - सीपीयू सिम्युलेटर, शैक्षिक उपयोग के लिए माइक्रोकोड स्तर पर निर्देश समुच्चय परिभाषा की अनुमति देता है |
- डी:वर्चुएलर_इन्फो_2-प्रोज़ेसर - सीपीयू सिम्युलेटर, शैक्षिक उपयोग के लिए माइक्रोकोड स्तर पर निर्देश समुच्चय परिभाषा की अनुमति देता है
- ओवीपीसिम - सीपीयू और पूर्ण प्रणाली सिम्युलेटर, प्रोसेसर के 170 से अधिक निर्देश स्पष्ट मॉडल प्रदान करते हैं। उपयोगकर्ता परिभाषित निर्देश समुच्चय की अनुमति देता है।
- शनि ग्रह , 2003-2015 के बीच एआरएम-आधारित प्रोसेसर एचपी रेखांकन कैलकुलेटर की तुलना की नई तुलना पर आरपीएल (प्रोग्रामिंग भाषा) चलाने के लिए उन्नत सैटर्न सीपीयू और प्रणाली सिम्युलेटर होते है |
- सिमिक्स - सीपीयू और फुल प्रणाली सिम्युलेटर फ्रेमवर्क, जटिल आधुनिक हार्डवेयर के पूर्ण मॉडल का निर्माण।
- सिम - 1960 के दशक से I/O के साथ पूर्ण PDP-11 प्रणाली सहित 50+ ऐतिहासिक कंप्यूटरों का अनुकरण।
- सीपीयू-ओएस सिम्युलेटर - एकीकृत आरआईएससी प्रकार सीपीयू और मल्टीथ्रेडिंग ऑपरेटिंग प्रणाली शैक्षिक सिमुलेटर।
अन्य
- इंस्ट्रुमेंटेशन (कंप्यूटर प्रोग्रामिंग)
- मेटाप्रोग्रामिंग
संदर्भ
- ↑ Almasri, I., Abandah, G., Shhadeh, A., Shahrour, A. (2011, December). Universal ISA simulator with soft processor FPGA implementation. In Applied Electrical Engineering and Computing Technologies (AEECT), 2011 IEEE Jordan Conference on (pp. 1–6). IEEE.
- ↑ “The Art of Computer Programming”, Donald Knuth, 1997, Volume 1, 3rd edition, Page 202.
बाहरी संबंध
- "Mikrocodesimulator MikroSim 2010". 0/1-SimWare. Retrieved 2010-12-06.
- "Instruction-Level Simulation And Tracing"
- Imperas Archived 2019-12-01 at the Wayback Machine provide an आईएसएस for over 170 processor variants forएआरएम, ARMv8, MIPS, MIPS64, PowerPC, RISC-V, ARC, Nios-II, MicroBlaze आईएसए.