سؤال كيف تعرف وحدة المعالجة المركزية ما الأوامر والتعليمات التي تعني في الواقع؟


كيف يعرف المعالج ما تعنيه الأوامر المختلفة؟

أفكر في أوامر مستوى التجمع مثل MOV ، PUSH ، CALL ، الخ ...


71
2017-07-06 14:44


الأصل


هذا مفيد للغاية ، ولكن ما أتطلع إليه هو ما الذي يسمح لوحدة المعالجة المركزية بالاستلام وإرسال الأوامر؟
لا أفهم هذا التعليق. وحدة المعالجة المركزية "يتلقى" تعليمات من الذاكرة ، من خلال طلب منهم عن طريق العنوان. الأوامر الوحيدة التي ترسلها وحدة المعالجة المركزية (في العرض التبسيطي ، على الأقل) هي أوامر إلى الذاكرة لتسليم البيانات ، والأوامر على حافلات I / O ، لتشغيل أجهزة الإدخال / الإخراج. - Daniel R Hicks
في قلب أي وحدة المعالجة المركزية بعض المنطق الذي هو (حرفيا) ماثلة لتشغيل إجراء بسيط: خذ القيمة من عنوان مسجل التعليمة، وإرساله إلى الذاكرة، واسترداد التعليمات التي يعود الذاكرة، ومن ثم مربى قبل أن تتحول إلى حد ما أكثر تعقيدا للمنطق hardwired أن "يفهم" ما يعنيه التعليمة وكيفية تنفيذه. أوه ، وفي مكان ما على طول هناك زيادة التسجيل عنوان التعليمات. - Daniel R Hicks
قد يكون القراء مهتمين بالسؤال كيف يعمل الكمبيوتر؟ على علوم الكمبيوتر. - Raphael


الأجوبة:


عندما يفسر جهاز كمبيوتر المجسم مستوى التعليمات ، يتم تشغيل هذه التعليمات في مكافئاتها الثنائية لكي تتمكّن وحدة المعالجة المركزية من القراءة. عندما تقوم وحدة المعالجة المركزية بتنفيذ التعليمات ، فإنها تفسر جزء شفرة التعليمة البرمجية في "microprograms" الفردية ، التي تحتوي على الرمز الصغير حكمه. فقط لكي تعرف ، تتكون تعليمات التجميع الكاملة من رمز تشغيل وأي بيانات تنطبق عليها ، إذا تطلب الأمر ذلك (مثل أسماء التسجيل وعناوين الذاكرة).

تعليمات Microcode هي منخفضة للغاية (أكثر من التجمع ثم) ، والتحكم في الإشارات الرقمية الفعلية التي تتحكم في تدفق المنطق في المعالج. على سبيل المثال ، يمكن أن يقوم أحد تعليمات الرمز الصغير بتحديث سجل رمز الشرط علم بقيمة جديدة ، أو توصيل وحدة المعالجة المركزية تسجيل مع واحد من ALU وحدة. من الممكن القيام بمهام أكثر تعقيدا ، ولكن هذا يظهر لك الفكرة العامة ماذا الرمز الصغير يستخدم ل.

التدفق العام من التجميع إلى التنفيذ كما يلي. يتم تجميع تعليمات التجميع (يتم تحويلها إلى صفر مكافئ لها و 1 ثانية ، أو من الآن فصاعداً ، إشارات منطقية). يتم تفسير هذه الإشارات المنطقية من قبل وحدة المعالجة المركزية وتحويلها إلى المزيد من الإشارات المنطقية منخفضة المستوى التي توجه تدفق وحدة المعالجة المركزية لتنفيذ التعليمات الخاصة. يمكن أن يستغرق ذلك دورة واحدة أو أكثر من دورات الساعة ، اعتمادًا على بنية المعالج وتصميمه (تشير معظم أدلة المرجع للمعالج إلى عدد دورات الساعة التي يستغرقها تنفيذ تعليمة معينة ، هذا مثل واحد، على سبيل المثال).

كل هذا يتم مع microcode برمجية صلبة (جسديا جزءا لا يتجزأ من داخل المعالج في نوع من ذاكرة للقراءة فقط، أثناء التصنيع) ، والتي توجه التدفق من خلال المستوى المنخفض الفعلي بوابات المنطق، بوابات منطقية. يوفر هذا واجهة بين تعليمات التجميع المجرد والمنطق الكهربائي الفعلي في المعالج.


لذلك ، باختصار ، يتم تجميع تعليمات المعالج وتحميلها من قبل المعالج. سيستخدم المعالج بعد ذلك هذه التعليمات للبحث عن برمجية ميكروية (في شكل رمز صغير) تتوافق مع تلك التعليمة المعينة ، وهو ما يقوم "فعليًا" بتنفيذ التعليمات. بمجرد أن يتم تنفيذ microcodes للتعليمات الخاصة (التي يمكن أن تستغرق دورة ساعة واحدة أو أكثر) ، يقوم المعالج بتنفيذ الرمز الصغير لجلب التعليمات التالية ، وتتكرر الدورة.


88
2017-07-06 14:48



حسنا ، يمكنني الحصول عليه ، وأعتقد :) لذا فإن تبديل الأوامر تبديل "مفاتيح" من شأنها أن تجعل المعالج تفعل أشياء معينة مع البيانات التي يتلقاها؟ - Simon Verbeke
Simon Verbeke ، صحيح بالضبط. انهم مجرد تبديل التبديل لتوجيه تدفق الإشارات الكهربائية في المعالج (والتي يمكن أيضا توجيهها إلى إعادة تحميل المزيد من الأوامر!). تشبيه التبديل هو جيد ، لأن كل شيء رقمي (إما منطق 1/0 ، أو صح / خطأ). فقط حتى تعرف ، مستوى المنطق هو الجهد الفعلي. والامر متروك للمهندس لتحديد ما هو 0 أو 1 (على سبيل المثال ، يمكن تحديد منطق 1 على أنه أكثر من 2 فولت). - Breakthrough
تسمى "تعليمات المكافئ الثنائية" التي يُغني المجمع أو المجمِّع بها كل شيء إلى الأسفل ، opcodes. إذا ألقيت نظرة على بنية شفرة تشغيل بنية RISC مثل MIPS أو ARM ، فيمكنك أن ترى كيف أن البتات المتنوعة في خريطة opcode لعمليات محددة. إنتل نظرا لطول العمر والميل إلى أن يتم تمديد الوقت والمرة مرة أخرى لم يعد لديها بنية بسيطة لرسم الخرائط. - LawrenceC
لا، كنت أقول بسبب طول العمر والوقت والوقت مرة أخرى التمديد للبنية x86 و رسم الخرائط البتات الفردية في أكواد العمليات إلى عمليات الصغرى ليست قص وجافة نظيفة كما هي في MIPS أو ARM إلى درجة (انظر d.umn.edu/~gshute/spimsal/talref.htmlعلى سبيل المثال ، لا تشبه opcodes Intel مثل هذا). لا أعتقد أن هناك الكثير من فكرة "RISC" عندما قدمت إنتل x86 وحدات المعالجة المركزية في عام 1978. - LawrenceC
لا ينبغي أن يلاحظ ذلك فقط بعض يتم microcoded وحدات المعالجة المركزية. تعمل بعض (الأجهزة الأصغر في الغالب) مباشرة خارج opcodes التجميع. ذلك يعتمد على الهندسة المعمارية. - Fake Name


المعالج لا "يعرف" ما هي الاوامر. الأوامر هي مجرد أنماط ثنائية تجعل المعالج يقوم بما نرجمه للأوامر.

على سبيل المثال ، تؤدي عملية ADD-R1-in-R2 إلى حدوث قيم تسجيل 1 و 2 للوصول إلى وحدة حسابية (ALU) (وحدة حسابية ومنطقية) ، مما يؤدي إلى استخدام ALU لإخراج المصباح بدلاً من الأشياء الأخرى المختلفة ، ويتسبب في إخراج ALU لاستبدال القيمة في السجل 2. هناك دوائر منطقية بسيطة لتحقيق كل هذه الأشياء (المضاعف، الجامع، عداد، ... على الرغم من أن المعالجات الحقيقية تستخدم تحسينات معقدة للغاية.

انها نوع ما مثل تسأل كيف سيارة لإبطاء عند الضغط على الفرامل. لا تعرف السيارة ، فإن دواسة الفرامل تحدث فقط للتحكم غير المباشر في كيفية الضغط على الأقراص الصلبة ضد العجلات.


37
2017-07-06 16:40



تشابه لطيف مع دواسة كسر السيارة. - rjmunro


خذ على سبيل المثال ، التعليمات   يخبر معالج x86 / IA-32 إلى   نقل قيمة 8 بت فورية إلى   تسجيل. الرمز الثنائي لهذا   التعليمات هي 10110 تليها أ   معرف 3 بت الذي التسجيل إلى   استعمال. معرف AL   التسجيل هو 000 ، لذلك ما يلي   رمز الجهاز بتحميل سجل AL   مع البيانات 01100001.

10110000 01100001 

هذا ثنائي   يمكن جعل رمز الكمبيوتر أكثر   يمكن قراءتها عن طريق التعبير عن الانسان   ست عشري على النحو التالي

B0 61

هنا ، B0 تعني "نقل نسخة   من القيمة التالية في AL 'و   61 عبارة عن تمثيل سداسي عشري لـ   القيمة 01100001 ، وهي 97 في   عدد عشري. لغة التجميع إنتل   يوفر وسيلة نقل ذاكري (أ   اختصار الحركة) للحصول على التعليمات   مثل هذا ، وبالتالي فإن رمز الجهاز   أعلاه يمكن كتابتها على النحو التالي   لغة التجميع ، كاملة مع   تعليق توضيحي إذا لزم الأمر ، بعد   الفاصلة المنقوطة. هذا أسهل بكثير   قراءة وتذكر.

http://en.wikipedia.org/wiki/Assembler_language

بعبارة أخرى ، عندما تقوم 'بتجميع' برنامج التجميع الخاص بك ، فإن التعليمات الخاصة بك مثل

MOV AL, 61h

يتم تحويلها إلى أرقام ، والتي تربط وحدة المعالجة المركزية بمعنى خاص ثم تعمل وفقًا لذلك.


10
2017-07-06 14:56



تجدر الإشارة أيضا إلى أن تعيين رمز "ذهن" رمز ذاكري إلى هذا النمط بت معين كان تماما اعتباطيا. يمكنني من حيث المبدأ أن أكتب مجمعا يسمى هذا التعليمة "oof" ، وسيعمل بشكل جيد أيضا ، بصرف النظر عن صعوبة تذكره. - dmckee


واقترح ريدينج:

راجع أيضًا ملاحظات الدورة التدريبية من CS152: هندسة وهندسة الكمبيوتر في جامعة كاليفورنيا في بيركلي ، وهي دورة يقوم فيها الطلاب بتنفيذ وحدة المعالجة المركزية.

إذا كنت غوغل ل "وحدة المعالجة المركزية التي بنيت في المنزل" سوف تجد العديد من الأشياء الجيدة.


6
2017-07-06 18:45





في أقصى مستوى أقصى أقصى ، يمكن لجميع وحدة المعالجة المركزية القيام به هو إضافة. بالإضافة إلى ذلك ، يمكنه طرح الكلمات وضربها وتقسيمها (انظر أنها مجرد إضافة بطريقة مختلفة). تستخدم وحدة المعالجة المركزية هذا لنقل البيانات في الذاكرة من خلال تطبيق الإضافات على عناوين الذاكرة.

ضع في اعتبارك أن هذا في أدنى مستوى ممكن. وحدة المعالجة المركزية في الواقع "فهم" بعض الأوامر ، في شكل microcode. انظر إجابة الاختراق ، إنها مكتوبة بشكل جيد.


4
2017-07-06 14:52



العمليات المنطقية مثل AND و OR و NOT ، بالإضافة إلى bitshifting أكثر أهمية من إضافة. بالإمكان التعبير عن الإضافة بالفعل من حيث هذه العمليات. هناك في الواقع ICs منفصلة (سلسلة تكساس إنسترومنتس LS) التي لا تفعل سوى تنفيذ هذه العمليات ، ومن الممكن بناء وحدة المعالجة المركزية من الأنواع منها. جوجل "بونغ التخطيطي" لرؤية كيف يتم إجراء لعبة ، على سبيل المثال ، من دون وحدة المعالجة المركزية. - LawrenceC
كنت أعني من وجهة نظر برنامج أكثر :) نعم الأجهزة / المنطق الحكمة لديك كمية مجنون من بوابات NAND و NOR. نقطة جيدة. - n0pe


لقد تلقيت إجابة ذات صلة على programmers.stackexchange.com ، راجع كيف تعمل أجهزة الكمبيوتر؟ حيث سرت لفترة وجيزة حول كل شيء من الألف إلى الياء حول كيفية قيام أجهزة الكمبيوتر بتفسير التعليمات لتحريك الإلكترونات.


2
2017-07-06 20:45