एक प्रोसेसर कैसे जानता है 'अलग-अलग कमांड का क्या मतलब है?
मैं विधानसभा स्तर के आदेशों जैसे MOV, PUSH, CALL, आदि के बारे में सोच रहा हूँ ...
एक प्रोसेसर कैसे जानता है 'अलग-अलग कमांड का क्या मतलब है?
मैं विधानसभा स्तर के आदेशों जैसे MOV, PUSH, CALL, आदि के बारे में सोच रहा हूँ ...
जवाबों:
जब कोई कंप्यूटर असेंबली स्तर के निर्देशों की व्याख्या करता है , तो ये निर्देश सीपीयू को पढ़ने के लिए उनके बाइनरी समकक्ष में बदल जाते हैं। जब सीपीयू निर्देशों को निष्पादित करता है, तो यह निर्देश के ओपोड भाग को व्यक्तिगत रूप से "माइक्रोप्रोग्राम" में व्याख्या करता है, जिसमें उनके माइक्रोकोड समकक्ष होते हैं। बस आपको पता है, एक पूर्ण असेंबली इंस्ट्रक्शन में एक ओपकोड और कोई भी लागू डेटा होता है जो इसके साथ जाता है, यदि आवश्यक हो (उदाहरण के लिए नाम, स्मृति पते पंजीकृत करें)।
माइक्रोकोड निर्देश बेहद निम्न-स्तर (अधिक तो विधानसभा) हैं, और वास्तविक डिजिटल संकेतों को नियंत्रित करते हैं जो माइक्रोप्रोसेसर में तर्क के प्रवाह को नियंत्रित करते हैं। उदाहरण के लिए, एक माइक्रोकोड निर्देश एक नए मूल्य के साथ एक शर्त कोड रजिस्टर ध्वज को अपडेट कर सकता है , या एएलयू इकाइयों में से एक के साथ सीपीयू रजिस्टर कनेक्ट कर सकता है । अधिक जटिल कार्य संभव हैं, लेकिन यह आपको सामान्य विचार दिखाता है कि माइक्रोकोड का उपयोग किस लिए किया जाता है।
संकलन से निष्पादन तक का सामान्य प्रवाह निम्नानुसार है। असेंबली निर्देशों को इकट्ठा किया जाता है (उनके बाइनरी समतुल्य 0s और 1s, या अब से, तर्क संकेतों में बदल जाता है)। ये लॉजिक सिग्नल सीपीयू द्वारा बारी-बारी से व्याख्या किए जाते हैं, और अधिक निम्न-स्तरीय लॉजिक सिग्नल में बदल जाते हैं, जो विशेष निर्देश को निष्पादित करने के लिए सीपीयू के प्रवाह को निर्देशित करते हैं। यह प्रोसेसर की वास्तुकला और डिजाइन के आधार पर एक या अधिक घड़ी चक्र ले सकता है (अधिकांश प्रोसेसर संदर्भ मैनुअल आपको बताते हैं कि किसी विशेष निर्देश को निष्पादित करने के लिए कितने घड़ी चक्र लगते हैं, उदाहरण के लिए यह एक तरह से )।
यह सब हार्ड-प्रोग्राम्ड माइक्रोकोड के साथ किया जाता है (भौतिक रूप से प्रोसेसर के भीतर किसी प्रकार के ROM में , विनिर्माण के दौरान सेट किया गया है), जो वास्तविक निम्न-स्तरीय लॉजिक गेट्स के माध्यम से प्रवाह को निर्देशित करता है । यह अमूर्त असेंबली निर्देशों और प्रोसेसर में भौतिक विद्युत तर्क के बीच एक इंटरफ़ेस प्रदान करता है।
तो, सारांश में, प्रोसेसर निर्देश इकट्ठे और प्रोसेसर द्वारा लोड किए जाते हैं। प्रोसेसर इन निर्देशों का उपयोग उस विशेष निर्देश के अनुरूप माइक्रोप्रोग्राम (माइक्रोकोड के रूप में) को देखने के लिए करेगा, जो कि "वास्तव में" निर्देश को निष्पादित करता है। एक बार विशेष निर्देश के माइक्रोकोड को निष्पादित किया गया है (जो एक या अधिक घड़ी चक्र ले सकता है), प्रोसेसर अगले निर्देश को लाने के लिए माइक्रोकोड को निष्पादित करता है, और चक्र दोहराता है।
प्रोसेसर वास्तव में 'नहीं जानता' कि कमांड क्या हैं। कमांड केवल बाइनरी पैटर्न हैं जो प्रोसेसर को ऐसा करने का कारण बनते हैं जो हम कमांड का मतलब बताते हैं।
उदाहरण के लिए, एक ADD-R1-in-R2 ऑपरेशन ALU (अंकगणित और तर्क इकाई) तक पहुंचने के लिए 1 और 2 के रजिस्टरों का कारण होगा, ALU विभिन्न अन्य सामानों के बजाय योजक के आउटपुट का उपयोग करने का कारण बनता है, और कारण ALU का आउटपुट रजिस्टर 2 में मूल्य को बदलने के लिए। इन सभी चीजों को प्राप्त करने के लिए सरल तर्क सर्किट हैं ( मल्टीप्लेक्स , योजक , काउंटर , ...), हालांकि असली प्रोसेसर बहुत जटिल अनुकूलन का उपयोग करते हैं।
यह आप जैसे पूछ रहे हैं कि जब आप ब्रेक दबाते हैं तो एक कार को धीमा करना जानता है। कार को पता नहीं है, ब्रेक पैडल सिर्फ अप्रत्यक्ष रूप से नियंत्रित करने के लिए होता है कि पहियों के खिलाफ हार्ड पैड कैसे दबाए जाते हैं।
उदाहरण के लिए, एक निर्देश जो x86 / IA-32 प्रोसेसर को तत्काल 8-बिट मान को एक रजिस्टर में स्थानांतरित करने के लिए कहता है। इस निर्देश के लिए बाइनरी कोड 10110 है जिसके बाद 3-बिट आइडेंटिफायर है जिसके लिए रजिस्टर का उपयोग करना है। AL रजिस्टर के लिए पहचानकर्ता 000 है, इसलिए निम्न मशीन कोड AL रजिस्टर को 01100001 डेटा के साथ लोड करता है।
10110000 01100001
इस बाइनरी कंप्यूटर कोड को हेक्साडेसिमल में निम्नानुसार व्यक्त करके अधिक मानव-पठनीय बनाया जा सकता है
B0 61
यहां, B0 का अर्थ है 'AL में निम्नलिखित मान की एक प्रति ले जाएं', और 61 मान 01100001 का एक हेक्साडेसिमल प्रतिनिधित्व है, जो दशमलव में 97 है। इंटेल असेंबली लैंग्वेज इस तरह के निर्देशों के लिए mnemonic MOV (चाल का एक संक्षिप्त नाम) प्रदान करती है, इसलिए उपरोक्त मशीन कोड विधानसभा भाषा में निम्नानुसार लिखा जा सकता है, यदि आवश्यक हो तो एक व्याख्यात्मक टिप्पणी के साथ अर्धविराम के बाद। यह पढ़ना और याद रखना बहुत आसान है।
http://en.wikipedia.org/wiki/Assembler_language
दूसरे शब्दों में, जब आप अपने असेंबली प्रोग्राम को 'असेंबल' करते हैं, जैसे कि आपके निर्देश
MOV AL, 61h
उन संख्याओं में परिवर्तित हो जाते हैं, जिन्हें CPU एक विशेष अर्थ में जोड़ता है और फिर उसी के अनुसार कार्य करता है।
सुझाए गए पढ़ने:
CS152 से पाठ्यक्रम नोट भी देखें: यूसी बर्कले में कंप्यूटर आर्किटेक्चर एंड इंजीनियरिंग , एक कोर्स जिसमें छात्र सीपीयू लागू करते हैं।
यदि आप "घर-निर्मित सीपीयू" के लिए Google करते हैं, तो आपको कई उपहार मिलेंगे।
चरम सबसे न्यूनतम स्तर पर, सभी सीपीयू जोड़ सकते हैं। इसके अलावा, यह घटाना, गुणा और भाग कर सकता है (जैसे कि ये एक अलग तरीके से जोड़ रहे हैं)। सीपीयू इसका उपयोग मेमोरी ऐड्रेस में परिवर्धन लागू करके मेमोरी में डेटा को स्थानांतरित करने के लिए करता है।
हालांकि ध्यान रखें कि यह सबसे कम संभव स्तर पर है। CPU वास्तव में माइक्रोकोड के रूप में कुछ कमांड्स को "समझता" है। ब्रेकथ्रू का उत्तर देखें, यह बहुत अच्छी तरह से लिखा गया है।
मैंने programmers.stackexchange.com पर संबंधित उत्तर दिया है, देखें कि कंप्यूटर कैसे काम करते हैं? जहाँ मैं कंप्यूटर के बारे में संक्षेप में सब कुछ जमीन से ऊपर चला गया कि कैसे कंप्यूटर इलेक्ट्रॉनों को स्थानांतरित करने के निर्देशों की व्याख्या करता है।