الكود الصغير
| Program execution |
|---|
| General concepts |
| Types of code |
|
| Compilation strategies |
| Notable runtimes |
|
| Notable compilers & toolchains |
|
في تصميم المعالج ، يعمل الكود الدقيق كطبقة وسيطة تقع بين أجهزة وحدة المعالجة المركزية (CPU) وهندسة مجموعة التعليمات المرئية للمبرمج لجهاز الكمبيوتر، والمعروفة أيضًا باسم كود الآلة . [1] [ الصفحة المطلوبة ] يتكون من مجموعة من التعليمات على مستوى الأجهزة التي تنفذ تعليمات كود الآلة ذات المستوى الأعلى أو تتحكم في تسلسل الآلة ذات الحالة المحدودة الداخلية في العديد من مكونات المعالجة الرقمية . بينما يتم استخدام الكود الدقيق في وحدات المعالجة المركزية للأغراض العامة من Intel و AMD في أجهزة الكمبيوتر المكتبية وأجهزة الكمبيوتر المحمولة المعاصرة، فإنه يعمل فقط كمسار احتياطي للسيناريوهات التي لا تستطيع وحدة التحكم السلكية الأسرع إدارتها. [2]
تُترجم التعليمات البرمجية الدقيقة الموجودة في ذاكرة عالية السرعة خاصة تعليمات الآلة أو بيانات آلة الحالة أو غيرها من المدخلات إلى تسلسلات من العمليات التفصيلية على مستوى الدائرة. وهي تفصل تعليمات الآلة عن الإلكترونيات الأساسية ، مما يتيح مرونة أكبر في تصميم التعليمات وتعديلها. وعلاوة على ذلك، فهي تسهل بناء تعليمات معقدة متعددة الخطوات، وفي الوقت نفسه تقلل من تعقيد الدوائر الحاسوبية. غالبًا ما يشار إلى فعل كتابة التعليمات البرمجية الدقيقة بالبرمجة الدقيقة ، ويُطلق أحيانًا على التعليمات البرمجية الدقيقة في تنفيذ معالج معين مصطلح برنامج دقيق .
من خلال البرمجة الدقيقة الشاملة، يمكن للهندسة المعمارية الدقيقة ذات الحجم الأصغر والبساطة محاكاة الهندسة المعمارية الأكثر قوة ذات أطوال الكلمات الأوسع ووحدات التنفيذ الإضافية وما إلى ذلك. يوفر هذا النهج طريقة مباشرة نسبيًا لضمان توافق البرامج بين المنتجات المختلفة ضمن عائلة المعالج.
يستخدم بعض بائعي الأجهزة، ولا سيما IBM و Lenovo ، مصطلح microcode بالتبادل مع firmware . في هذا السياق، يُطلق على كل التعليمات البرمجية داخل الجهاز مصطلح microcode، سواء كانت microcode أو code machine. على سبيل المثال، غالبًا ما تتضمن التحديثات التي تطرأ على microcode لمحرك الأقراص الصلبة تحديثات لكل من microcode والبرامج الثابتة. [3]
ملخص
مجموعات التعليمات
على مستوى الأجهزة، تحتوي المعالجات على عدد من المناطق المنفصلة من الدوائر، أو "الوحدات"، التي تؤدي مهام مختلفة. تشمل الوحدات الشائعة وحدة المنطق الحسابي (ALU) التي تؤدي تعليمات مثل الجمع أو مقارنة رقمين، ودوائر لقراءة البيانات وكتابتها في الذاكرة الخارجية، ومساحات صغيرة من الذاكرة المدمجة لتخزين هذه القيم أثناء معالجتها. في معظم التصميمات، يتم استخدام ذاكرة إضافية عالية الأداء، ملف السجل ، لتخزين القيم المؤقتة، وليس فقط تلك المطلوبة بواسطة التعليمات الحالية. [4]
لتنفيذ تعليمات بشكل صحيح، يجب تنشيط الدوائر المختلفة بالترتيب. على سبيل المثال، ليس من الممكن إضافة رقمين إذا لم يتم تحميلهما من الذاكرة بعد. في تصميمات RISC ، فإن الترتيب الصحيح لهذه التعليمات يعتمد إلى حد كبير على المبرمج، أو على الأقل على مترجم لغة البرمجة التي يستخدمونها. لذلك لإضافة رقمين، على سبيل المثال، قد يقوم المترجم بإخراج تعليمات لتحميل إحدى القيم في سجل واحد، والثانية في سجل آخر، واستدعاء دالة الجمع في وحدة الحساب والمنطق، ثم كتابة النتيجة مرة أخرى في الذاكرة. [4]
نظرًا لأن تسلسل التعليمات اللازمة لإكمال هذا المفهوم الأعلى مستوى، "إضافة هذين الرقمين في الذاكرة"، قد يتطلب تعليمات متعددة، فقد يمثل هذا عنق زجاجة للأداء إذا تم تخزين هذه التعليمات في الذاكرة الرئيسية . إن قراءة هذه التعليمات واحدة تلو الأخرى تستغرق وقتًا يمكن استخدامه لقراءة وكتابة البيانات الفعلية. لهذا السبب، من الشائع أن تحتوي التصميمات غير RISC على العديد من التعليمات المختلفة التي تختلف إلى حد كبير في مكان تخزين البيانات. على سبيل المثال، يحتوي MOS 6502 على ثمانية أشكال مختلفة من تعليمات الإضافة، ADC، والتي تختلف فقط في المكان الذي تبحث فيه عن المتعاملين. [5]
إن استخدام تنويع التعليمات أو " الرمز التشغيلي " الذي يتطابق بشكل وثيق مع العملية النهائية يمكن أن يقلل من عدد التعليمات إلى واحدة، مما يوفر الذاكرة المستخدمة بواسطة رمز البرنامج ويحسن الأداء من خلال ترك ناقل البيانات مفتوحًا لعمليات أخرى. ومع ذلك، داخليًا، لا تعد هذه التعليمات عمليات منفصلة، بل هي تسلسلات من العمليات التي تقوم بها الوحدات بالفعل. إن تحويل تعليمة واحدة مقروءة من الذاكرة إلى تسلسل من الإجراءات الداخلية هو مهمة وحدة التحكم ، وهي وحدة أخرى داخل المعالج. [6]
الكود الصغير
الفكرة الأساسية وراء التعليمات البرمجية الدقيقة هي استبدال منطق الأجهزة المخصص الذي ينفذ تسلسل التعليمات بسلسلة من التعليمات البسيطة التي يتم تشغيلها في "محرك التعليمات البرمجية الدقيقة" في المعالج. في حين أن نظام المنطق المخصص قد يحتوي على سلسلة من الثنائيات والبوابات التي تخرج سلسلة من الفولتات على خطوط تحكم مختلفة، فإن محرك التعليمات البرمجية الدقيقة متصل بهذه الخطوط بدلاً من ذلك، ويتم تشغيلها وإيقاف تشغيلها أثناء قراءة المحرك لتعليمات التعليمات البرمجية الدقيقة بالتسلسل. غالبًا ما تكون تعليمات التعليمات البرمجية الدقيقة مشفرة بتات إلى تلك الخطوط، على سبيل المثال، إذا كان البت 8 صحيحًا، فقد يعني ذلك أنه يجب إيقاف وحدة الحساب والمنطق مؤقتًا في انتظار البيانات. في هذا الصدد، يشبه التعليمات البرمجية الدقيقة إلى حد ما لفات الورق في البيانو الآلي ، حيث تمثل الفتحات المفتاح الذي يجب الضغط عليه.
قد يبدو الاختلاف بين المنطق المخصص والميكروكود صغيرًا، حيث يستخدم أحدهما نمطًا من الثنائيات والبوابات لفك تشفير التعليمات وإنتاج سلسلة من الإشارات، بينما يقوم الآخر بتشفير الإشارات كتعليمات دقيقة يتم قراءتها بالتسلسل لإنتاج نفس النتائج. والفرق الحاسم هو أنه في تصميم المنطق المخصص، تتطلب التغييرات في الخطوات الفردية إعادة تصميم الأجهزة. باستخدام الميكروكود، كل ما يتغير هو الكود المخزن في الذاكرة التي تحتوي على الميكروكود. وهذا يجعل من السهل جدًا إصلاح المشكلات في نظام الميكروكود. وهذا يعني أيضًا أنه لا يوجد حد فعال لتعقيد التعليمات، فهو محدود فقط بكمية الذاكرة التي يرغب المرء في استخدامها.
إن الطبقة الأدنى في مجموعة برامج الكمبيوتر هي تعليمات برمجية آلية خام للمعالج. وفي المعالجات التي تحتوي على تعليمات برمجية دقيقة، يمكن جلب هذه التعليمات وفك تشفيرها وتنفيذها عن طريق التعليمات البرمجية الدقيقة. ولتجنب الارتباك، يتم التمييز بين كل عنصر مرتبط بالبرنامج الدقيق من خلال البادئة الدقيقة : التعليمات الدقيقة، والمجمع الدقيق، والمبرمج الدقيق، وما إلى ذلك [7]
قد تستخدم المعالجات الرقمية المعقدة أيضًا أكثر من وحدة تحكم (ربما تعتمد على التعليمات البرمجية الدقيقة) من أجل تفويض المهام الفرعية التي يجب إجراؤها بشكل غير متزامن بشكل أساسي بالتوازي. على سبيل المثال، يحتوي جهاز VAX 9000 على وحدة IBox سلكية لجلب التعليمات وفك شفرتها، والتي يتم تسليمها إلى وحدة EBox مشفرة بدقة لتنفيذها، [8] ويحتوي جهاز VAX 8800 على كل من IBox مشفرة بدقة وEBox مشفرة بدقة. [9]
لا يرى المبرمج رفيع المستوى، أو حتى مبرمج لغة التجميع ، عادةً التعليمات البرمجية الدقيقة أو يغيرها. وعلى عكس التعليمات البرمجية الآلية، التي غالبًا ما تحتفظ ببعض التوافق العكسي بين المعالجات المختلفة في نفس العائلة، تعمل التعليمات البرمجية الدقيقة فقط على الدوائر الإلكترونية الدقيقة التي صُممت من أجلها، حيث إنها تشكل جزءًا لا يتجزأ من تصميم المعالج نفسه.
تصميم
يكتب المهندسون عادةً التعليمات البرمجية الدقيقة أثناء مرحلة تصميم المعالج، ويخزنونها في ذاكرة للقراءة فقط (ROM) أو بنية مصفوفة منطقية قابلة للبرمجة (PLA) [10] ، أو في مزيج من الاثنين. [11] ومع ذلك، توجد أيضًا آلات تحتوي على بعض التعليمات البرمجية الدقيقة أو كلها مخزنة في ذاكرة وصول عشوائي ثابتة (SRAM) أو ذاكرة فلاش . يُشار إلى ذلك تقليديًا باسم مخزن التحكم القابل للكتابة في سياق أجهزة الكمبيوتر، والذي يمكن أن يكون إما ذاكرة للقراءة فقط أو ذاكرة للقراءة والكتابة . في الحالة الأخيرة، تقوم عملية تهيئة وحدة المعالجة المركزية بتحميل التعليمات البرمجية الدقيقة في مخزن التحكم من وسيط تخزين آخر، مع إمكانية تغيير التعليمات البرمجية الدقيقة لتصحيح الأخطاء في مجموعة التعليمات، أو لتنفيذ تعليمات آلة جديدة.
البرامج الدقيقة
تتكون البرامج الدقيقة من سلسلة من التعليمات الدقيقة، التي تتحكم في وحدة المعالجة المركزية على مستوى أساسي للغاية من الدوائر الإلكترونية. على سبيل المثال، قد تحدد تعليمات دقيقة أفقية نموذجية واحدة العمليات التالية:
- قم بتوصيل السجل 1 بالجانب A من وحدة الحساب والمنطق
- قم بتوصيل السجل 7 بالجانب B من وحدة الحساب والمنطق
- ضبط وحدة الحساب والمنطق لأداء عملية الجمع التكميلية الثنائية
- ضبط إدخال الحمل الخاص بوحدة الحساب والمنطق على الصفر
- قم بتخزين قيمة النتيجة في السجل 8
- تحديث أكواد الحالة من علامات حالة وحدة الحساب والمنطق ( سلبية ، صفر ، فيضان ، وحمل )
- القفز الصغير إلى عنوان μPC معين للتعليمات الصغيرة التالية
للتحكم في جميع ميزات المعالج في دورة واحدة، غالبًا ما تكون التعليمات الدقيقة أوسع من 50 بت؛ على سبيل المثال، 128 بت على 360/85 مع ميزة المحاكاة. يتم تصميم البرامج الدقيقة بعناية وتحسينها لتحقيق أسرع تنفيذ ممكن، حيث أن البرنامج الدقيق البطيء من شأنه أن يؤدي إلى تعليمات آلية بطيئة وأداء متدهور لبرامج التطبيقات ذات الصلة التي تستخدم مثل هذه التعليمات.
التبرير
تم تطوير التعليمات البرمجية الدقيقة في الأصل كطريقة أبسط لتطوير منطق التحكم لجهاز كمبيوتر. في البداية، كانت مجموعات تعليمات وحدة المعالجة المركزية مترابطة . تم التحكم في كل خطوة مطلوبة لجلب وفك تشفير وتنفيذ تعليمات الجهاز (بما في ذلك أي حسابات لعناوين المتعامل والقراءات والكتابة) بشكل مباشر من خلال المنطق التركيبي ودوائر آلة الحالة المتسلسلة البسيطة إلى حد ما . في حين كانت مثل هذه المعالجات المترابطة فعالة للغاية، فإن الحاجة إلى مجموعات تعليمات قوية مع عنونة متعددة الخطوات وعمليات معقدة ( انظر أدناه ) جعلت من الصعب تصميمها وتصحيح أخطائها؛ يمكن أن تساهم التعليمات المشفرة للغاية والمتنوعة الطول في ذلك أيضًا، خاصةً عند استخدام ترميزات غير منتظمة للغاية.
لقد عمل الكود الدقيق على تبسيط المهمة من خلال السماح بتعريف الكثير من سلوك المعالج ونموذج البرمجة من خلال روتينات البرامج الدقيقة بدلاً من الدوائر المخصصة. وحتى في مرحلة متأخرة من عملية التصميم، كان من الممكن تغيير الكود الدقيق بسهولة، في حين كان تغيير تصميمات وحدة المعالجة المركزية السلكية مرهقًا للغاية. وبالتالي، فقد سهّل هذا تصميم وحدة المعالجة المركزية إلى حد كبير.
من أربعينيات القرن العشرين إلى أواخر سبعينياته، كان جزء كبير من البرمجة يتم بلغة التجميع ؛ حيث تعني التعليمات ذات المستوى الأعلى إنتاجية أكبر للمبرمج، لذا كانت الميزة المهمة للميكروكود هي السهولة النسبية التي يمكن من خلالها تعريف تعليمات الآلة القوية. الامتداد النهائي لهذا هو تصميمات "لغة عالية المستوى قابلة للتنفيذ مباشرة"، حيث يتم تنفيذ كل بيان من لغة عالية المستوى مثل PL/I بالكامل وبشكل مباشر بواسطة الميكروكود، دون تجميع. مشروع IBM Future Systems ومعالج Data General Fountainhead من الأمثلة على ذلك. خلال سبعينيات القرن العشرين، نمت سرعات وحدة المعالجة المركزية بشكل أسرع من سرعات الذاكرة وتم استخدام العديد من التقنيات مثل نقل كتلة الذاكرة وجلب الذاكرة المسبق وذاكرة التخزين المؤقت متعددة المستويات للتخفيف من ذلك. ساعدت تعليمات الآلة عالية المستوى، التي أصبحت ممكنة بواسطة الميكروكود، بشكل أكبر، حيث يتطلب عدد أقل من تعليمات الآلة الأكثر تعقيدًا نطاق ترددي أقل للذاكرة. على سبيل المثال، يمكن إجراء عملية على سلسلة أحرف كتعليمة آلة واحدة، وبالتالي تجنب جلب تعليمات متعددة.
تشمل الهندسة المعمارية التي تحتوي على مجموعات تعليمات يتم تنفيذها بواسطة برامج دقيقة معقدة نظام IBM System/360 و Digital Equipment Corporation VAX . تم تسمية نهج مجموعات التعليمات التي يتم تنفيذها بواسطة التعليمات البرمجية الدقيقة المعقدة بشكل متزايد لاحقًا باسم حاسوب مجموعة التعليمات المعقدة (CISC). النهج البديل المستخدم في العديد من المعالجات الدقيقة هو استخدام مجموعة منطقية قابلة للبرمجة (PLA) واحدة أو أكثر أو ذاكرة للقراءة فقط (ROM) (بدلاً من المنطق التركيبي) بشكل أساسي لفك تشفير التعليمات، والسماح لآلة حالة بسيطة (بدون الكثير من التعليمات البرمجية الدقيقة أو أي منها) بالقيام بمعظم التسلسل. يعد MOS Technology 6502 مثالاً على معالج دقيق يستخدم PLA لفك تشفير التعليمات وتسلسلها. يمكن رؤية PLA في الصور المجهرية الضوئية للشريحة، [12] ويمكن رؤية تشغيله في محاكاة مستوى الترانزستور .
لا تزال البرمجة الدقيقة مستخدمة في تصميمات وحدات المعالجة المركزية الحديثة. في بعض الحالات، بعد تصحيح أخطاء التعليمات البرمجية الدقيقة في المحاكاة، يتم استبدال الوظائف المنطقية بمتجر التحكم. [ بحاجة لمصدر ] غالبًا ما تكون الوظائف المنطقية أسرع وأقل تكلفة من ذاكرة البرامج الدقيقة المكافئة.
فوائد
تعمل البرامج الدقيقة للمعالج على بنية أكثر بدائية ومختلفة تمامًا وأكثر توجهًا نحو الأجهزة من تعليمات التجميع المرئية للمبرمجين العاديين. بالتنسيق مع الأجهزة، تنفذ التعليمات البرمجية الدقيقة البنية المرئية للمبرمج. لا يلزم أن يكون للأجهزة الأساسية علاقة ثابتة بالبنية المرئية. وهذا يجعل من الأسهل تنفيذ بنية مجموعة تعليمات معينة على مجموعة واسعة من البنيات الدقيقة للأجهزة الأساسية.
يحتوي نظام IBM System/360 على بنية 32 بت مع 16 سجلًا للأغراض العامة، ولكن معظم تطبيقات System/360 تستخدم أجهزة تنفذ بنية دقيقة أساسية أبسط كثيرًا؛ على سبيل المثال، يحتوي طراز System/360 30 على مسارات بيانات 8 بت إلى وحدة المنطق الحسابي (ALU) والذاكرة الرئيسية ونفذ السجلات للأغراض العامة في وحدة خاصة من ذاكرة أساسية عالية السرعة ، ويحتوي طراز System/360 40 على مسارات بيانات 8 بت إلى وحدة المنطق الحسابي ومسارات بيانات 16 بت إلى الذاكرة الرئيسية ونفذ أيضًا السجلات للأغراض العامة في وحدة خاصة من ذاكرة أساسية عالية السرعة. يحتوي الطراز 50 على مسارات بيانات كاملة 32 بت وينفذ السجلات للأغراض العامة في وحدة خاصة من ذاكرة أساسية عالية السرعة. [13] تحتوي الطرازات من 65 إلى الطراز 195 على مسارات بيانات أكبر وتنفذ السجلات للأغراض العامة في دوائر ترانزستور أسرع. [ بحاجة لمصدر ] بهذه الطريقة، مكنت البرمجة الدقيقة شركة IBM من تصميم العديد من نماذج System/360 بأجهزة مختلفة بشكل كبير وتغطي نطاقًا واسعًا من التكلفة والأداء، مع جعلها جميعًا متوافقة من الناحية المعمارية. وهذا يقلل بشكل كبير من عدد برامج النظام الفريدة التي يجب كتابتها لكل نموذج.
استخدمت شركة Digital Equipment Corporation (DEC) نهجًا مشابهًا في عائلة أجهزة الكمبيوتر VAX الخاصة بها. ونتيجة لذلك، تستخدم معالجات VAX المختلفة هياكل دقيقة مختلفة، إلا أن البنية المرئية للمبرمج لا تتغير.
كما تعمل البرمجة الدقيقة على تقليل تكلفة التغييرات الميدانية لتصحيح العيوب ( الأخطاء ) في المعالج؛ ويمكن غالبًا إصلاح الخلل عن طريق استبدال جزء من البرمجة الدقيقة بدلاً من إجراء تغييرات على منطق الأجهزة والأسلاك.
تاريخ
أمثلة مبكرة
في عام 1947، قدم تصميم MIT Whirlwind مفهوم مخزن التحكم كوسيلة لتبسيط تصميم الكمبيوتر والتحرك إلى ما هو أبعد من الأساليب المخصصة . مخزن التحكم عبارة عن مصفوفة ثنائية : شبكة ثنائية الأبعاد، حيث يقبل أحد الأبعاد "نبضات وقت التحكم" من ساعة وحدة المعالجة المركزية الداخلية، ويتصل البعد الآخر بإشارات التحكم على البوابات والدوائر الأخرى. يأخذ "موزع النبضات" النبضات التي تولدها ساعة وحدة المعالجة المركزية ويقسمها إلى ثماني نبضات زمنية منفصلة، كل منها ينشط صفًا مختلفًا من الشبكة. عندما يتم تنشيط الصف، فإنه ينشط إشارات التحكم المتصلة به. [14]
في عام 1951، عزز موريس ويلكس [15] هذا المفهوم بإضافة التنفيذ الشرطي ، وهو مفهوم يشبه الشرط في برامج الكمبيوتر. يتكون تنفيذه الأولي من زوج من المصفوفات: الأولى تولد إشارات على غرار مخزن التحكم Whirlwind، بينما تختار المصفوفة الثانية أي صف من الإشارات (كلمة تعليمات البرنامج المصغر، إذا جاز التعبير) لاستدعائها في الدورة التالية. تم تنفيذ الشرطيات من خلال توفير طريقة يمكن من خلالها لسطر واحد في مخزن التحكم الاختيار من بين البدائل في المصفوفة الثانية. هذا جعل إشارات التحكم مشروطة بالإشارة الداخلية المكتشفة. صاغ ويلكس مصطلح البرمجة الدقيقة لوصف هذه الميزة وتمييزها عن مخزن التحكم البسيط.
360
ظلت التعليمات البرمجية الدقيقة نادرة نسبيًا في تصميم الكمبيوتر حيث لم تكن تكلفة ذاكرة القراءة فقط اللازمة لتخزين التعليمات البرمجية مختلفة بشكل كبير عن استخدام مخزن التحكم المخصص. تغير هذا خلال أوائل الستينيات مع تقديم ذاكرة أساسية مُنتجة بكميات كبيرة وحبل أساسي ، والتي كانت أقل تكلفة بكثير من المنطق المخصص القائم على مصفوفات الصمامات الثنائية أو الحلول المماثلة. كانت شركة IBM أول من استفاد حقًا من هذا في سلسلة System/360 لعام 1964. سمح هذا للأجهزة بالحصول على مجموعة تعليمات معقدة للغاية، بما في ذلك العمليات التي تطابق بنيات اللغة عالية المستوى مثل تنسيق القيم الثنائية كسلاسل عشرية، وتخزين سلسلة التعليمات المعقدة اللازمة لهذه المهمة في ذاكرة منخفضة التكلفة. [16]
لكن القيمة الحقيقية في خط 360 كانت أنه يمكن للمرء بناء سلسلة من الآلات التي كانت مختلفة تمامًا داخليًا، ومع ذلك تعمل بنفس ISA. بالنسبة لجهاز منخفض المستوى، قد يستخدم المرء وحدة حسابية منطقية مكونة من 8 بت تتطلب دورات متعددة لإكمال إضافة واحدة مكونة من 32 بت، بينما قد يكون لجهاز أعلى مستوى وحدة حسابية منطقية مكونة من 32 بت تؤدي نفس الإضافة في دورة واحدة. يمكن تنفيذ هذه الاختلافات في منطق التحكم، لكن تكلفة تنفيذ فك تشفير مختلف تمامًا لكل جهاز ستكون باهظة. يعني استخدام التعليمات البرمجية الدقيقة أن كل ما تغير هو التعليمات البرمجية الموجودة في ROM. على سبيل المثال، قد تتضمن إحدى الآلات وحدة فاصلة عائمة وبالتالي قد يكون التعليمات البرمجية الدقيقة الخاصة بها لضرب رقمين عبارة عن بضعة أسطر فقط، بينما على نفس الجهاز بدون وحدة النقطة العائمة سيكون هذا برنامجًا يفعل الشيء نفسه باستخدام إضافات متعددة، وكل ما تغير هو ROM. [16]
كانت نتيجة هذا التصميم أن العملاء يمكنهم استخدام نموذج منخفض التكلفة من العائلة لتطوير برامجهم، مع العلم أنه إذا كانت هناك حاجة إلى أداء أكبر، فيمكنهم الانتقال إلى إصدار أسرع ولن يتغير أي شيء آخر. أدى هذا إلى خفض حاجز الدخول وحقق 360 نجاحًا هائلاً. وبحلول نهاية العقد، أصبح استخدام التعليمات البرمجية الدقيقة أمرًا ضروريًا في جميع أنحاء صناعة الحواسيب المركزية.
التحرك نحو الأعلى على طول الخط
كانت أجهزة الكمبيوتر الصغيرة المبكرة بسيطة للغاية بحيث لا تتطلب تعليمات برمجية دقيقة، وكانت أكثر تشابهًا مع أجهزة الكمبيوتر الكبيرة السابقة من حيث مجموعات التعليمات الخاصة بها وطريقة فك شفرتها. ولكن لم يمض وقت طويل قبل أن يبدأ مصمموها في استخدام دوائر متكاملة أكثر قوة سمحت بأجهزة ISA أكثر تعقيدًا. بحلول منتصف سبعينيات القرن العشرين، كانت معظم أجهزة الكمبيوتر الصغيرة وأجهزة الكمبيوتر العملاقة الجديدة تستخدم التعليمات البرمجية الدقيقة أيضًا، مثل معظم نماذج PDP-11 ، والأهم من ذلك، معظم نماذج VAX ، والتي تضمنت تعليمات عالية المستوى لا تختلف عن تلك الموجودة في 360. [17]
حدث نفس التطور الأساسي مع المعالجات الدقيقة أيضًا. كانت التصميمات المبكرة بسيطة للغاية، وحتى التصميمات الأقوى المكونة من 8 بتات في منتصف السبعينيات مثل Zilog Z80 كانت تحتوي على مجموعات تعليمات كانت بسيطة بما يكفي ليتم تنفيذها في منطق مخصص. بحلول هذا الوقت، يمكن تصميم منطق التحكم في نفس القالب مثل وحدة المعالجة المركزية، مما يجعل الفرق في التكلفة بين ROM والمنطق أقل مشكلة. ومع ذلك، لم يمض وقت طويل قبل أن تواجه هذه الشركات أيضًا مشكلة تقديم تصميمات ذات أداء أعلى ولكنها لا تزال ترغب في تقديم التوافق مع الإصدارات السابقة . من بين الأمثلة المبكرة للرمز الدقيق في المعالجات الدقيقة كان Intel 8086. [6 ]
من بين التطبيقات النهائية للميكروكود في المعالجات الدقيقة هو موتورولا 68000. وقد قدم هذا مجموعة تعليمات متعامدة للغاية مع مجموعة واسعة من أوضاع العنونة ، وكلها منفذة في الميكروكود. لم يكن هذا بدون تكلفة، فوفقًا للمقالات المبكرة، فإن حوالي 20٪ من مساحة سطح الشريحة (وبالتالي التكلفة) هي نظام الميكروكود. [18] وتشير التقديرات اللاحقة إلى أن ما يقرب من 23000 من بوابات الأنظمة البالغ عددها 68000 كانت جزءًا من نظام الميكروكود.
تدخل RISC
بينما استمرت الشركات في التنافس على تعقيد مجموعات التعليمات الخاصة بها، وكان استخدام التعليمات البرمجية الدقيقة لتنفيذها أمرًا لا جدال فيه، في منتصف السبعينيات، أثار مشروع داخلي في شركة آي بي إم أسئلة جدية حول المفهوم بأكمله. كجزء من مشروع لتطوير مفتاح هاتف رقمي بالكامل عالي الأداء ، بدأ فريق بقيادة جون كوك في فحص كميات هائلة من بيانات الأداء من برامج 360 (و System/370 ) الخاصة بعملائهم . قادهم هذا إلى ملاحظة نمط غريب: عندما قدمت ISA إصدارات متعددة من التعليمات، استخدم المترجم دائمًا أبسطها، بدلاً من الإصدار الأكثر تمثيلًا للكود بشكل مباشر. لقد تعلموا أن هذا كان لأن هذه التعليمات كانت تُنفذ دائمًا في الأجهزة، وبالتالي تعمل بشكل أسرع. قد يوفر استخدام التعليمات الأخرى أداءً أعلى على بعض الأجهزة، ولكن لم تكن هناك طريقة لمعرفة الجهاز الذي كانوا يعملون عليه. أحبط هذا الغرض من استخدام التعليمات البرمجية الدقيقة في المقام الأول، والذي كان لإخفاء هذه التمييزات. [19]
توصل الفريق إلى استنتاج جذري: "إن فرض التعليمات البرمجية الدقيقة بين الكمبيوتر ومستخدميه يفرض تكلفة باهظة في تنفيذ التعليمات الأكثر تنفيذًا." [19]
كانت نتيجة هذا الاكتشاف ما يُعرف اليوم بمفهوم RISC . يتم تقليل محرك التعليمات البرمجية الدقيقة المعقد وذاكرة القراءة فقط المرتبطة به أو التخلص منها تمامًا، ويتم تخصيص هذه الدوائر بدلاً من ذلك لأشياء مثل السجلات الإضافية أو وحدة حسابية منطقية أوسع، مما يزيد من أداء كل برنامج. عندما تكون هناك حاجة إلى تسلسلات معقدة من التعليمات، يُترك ذلك للمترجم، وهو الغرض الكامل من استخدام المترجم في المقام الأول. سرعان ما تبنى الباحثون الجامعيون في كاليفورنيا المفهوم الأساسي، حيث اقترحت عمليات المحاكاة أن مثل هذه التصميمات ستتفوق بشكل تافه حتى على أسرع التصميمات التقليدية. كان أحد هذه المشاريع، في جامعة كاليفورنيا، بيركلي ، هو الذي قدم مصطلح RISC.
استجابت الصناعة لمفهوم RISC بالارتباك والعداء، بما في ذلك مقالة رافضة شهيرة كتبها فريق VAX في Digital. [20] كانت إحدى نقاط الخلاف الرئيسية هي أن تنفيذ التعليمات خارج المعالج يعني أنه سيقضي وقتًا أطول بكثير في قراءة تلك التعليمات من الذاكرة، وبالتالي إبطاء الأداء العام بغض النظر عن سرعة تشغيل وحدة المعالجة المركزية نفسها. [20] أشار المؤيدون إلى أن المحاكاة أظهرت بوضوح أن عدد التعليمات لم يكن أكبر كثيرًا، خاصة عند النظر في الكود المترجم. [19]
احتدم النقاش حتى ظهرت أول تصميمات RISC التجارية في النصف الثاني من ثمانينيات القرن العشرين، والتي تفوقت بسهولة على أكثر التصميمات تعقيدًا من الشركات الأخرى. وبحلول أواخر الثمانينيات، انتهى الأمر؛ حتى أن شركة DEC تخلت عن التعليمات البرمجية الدقيقة لتصميمات DEC Alpha الخاصة بها ، وتحولت معالجات CISC إلى استخدام الدوائر الإلكترونية السلكية، بدلاً من التعليمات البرمجية الدقيقة، لأداء العديد من الوظائف. على سبيل المثال، يستخدم Intel 80486 الدوائر الإلكترونية السلكية لجلب التعليمات وفك تشفيرها، باستخدام التعليمات البرمجية الدقيقة فقط لتنفيذ التعليمات؛ تتطلب تعليمات نقل السجل-السجل والتعليمات الحسابية تعليمة دقيقة واحدة فقط، مما يسمح بإكمالها في دورة ساعة واحدة. [21] تقوم أجهزة الجلب وفك التشفير في Pentium Pro بجلب التعليمات وفك تشفيرها في سلسلة من العمليات الدقيقة التي يتم تمريرها إلى وحدة التنفيذ، والتي تقوم بجدولة العمليات الدقيقة وتنفيذها، وربما تفعل ذلك خارج الترتيب . يتم تنفيذ التعليمات المعقدة بواسطة التعليمات البرمجية الدقيقة التي تتكون من تسلسلات محددة مسبقًا من العمليات الدقيقة. [22]
تستخدم بعض تصميمات المعالجات كودًا آليًا يعمل في وضع خاص، مع تعليمات خاصة، متوفرة فقط في هذا الوضع، والتي يمكنها الوصول إلى الأجهزة المعتمدة على المعالج، لتنفيذ بعض الميزات منخفضة المستوى لمجموعة التعليمات. استخدم DEC Alpha، وهو تصميم RISC نقي، PALcode لتنفيذ ميزات مثل معالجة أخطاء المخزن المؤقت للترجمة (TLB) ومعالجة المقاطعات، [23] بالإضافة إلى توفير تعليمات، للأنظمة القائمة على Alpha التي تعمل بنظام OpenVMS ، تتطلب وصولاً متشابكًا إلى الذاكرة والتي تشبه التعليمات التي توفرها بنية VAX . [23] تستخدم وحدات المعالجة المركزية CMOS IBM System/390 ، بدءًا من معالج G4، ووحدات المعالجة المركزية z/Architecture ، الملي كود لتنفيذ بعض التعليمات. [24]
أمثلة
- يستخدم المحرك التحليلي الذي تصوره تشارلز باباج أوتادًا يتم إدخالها في براميل دوارة لتخزين إجراءاتها الداخلية.
- يقال أن جهاز EMIDEC 1100 [25] يستخدم مخزن تحكم سلكي يتكون من أسلاك مترابطة عبر نوى الفريت، والمعروفة باسم "الأربطة".
- معظم نماذج سلسلة IBM System/360 مبرمجة بشكل دقيق:
- يعد الطراز 25 فريدًا من بين طرز System/360 في استخدام 16 كيلوبايت من أعلى بايت من مساحة التخزين الأساسية لحمل مساحة تخزين التحكم للبرنامج الصغير. يستخدم الطراز 2025 بنية دقيقة مكونة من 16 بتًا مع سبع كلمات تحكم (أو تعليمات دقيقة). بعد صيانة النظام أو عند تغيير وضع التشغيل، يتم تحميل التعليمات البرمجية الدقيقة من قارئ البطاقات أو الشريط أو جهاز آخر. [26] يتم تحميل محاكاة IBM 1410 لهذا الطراز بهذه الطريقة.
- يستخدم الطراز 30 بنية دقيقة مكونة من 8 بتات مع عدد قليل فقط من سجلات الأجهزة؛ حيث يتم محاكاة كل ما رآه المبرمج بواسطة البرنامج الدقيق. كما يتم حفظ الكود الدقيق لهذا الطراز على بطاقات مثقبة خاصة، يتم تخزينها داخل الجهاز في قارئ مخصص لكل بطاقة، تسمى وحدات "CROS" (وحدة تخزين القراءة فقط للمكثف). [27] : 2–5 تتم إضافة وحدة CROS أخرى للأجهزة المطلوبة بمحاكاة 1401/1440/1460 [27] : 4–29 وللأجهزة المطلوبة بمحاكاة 1620. [27] : 4–75
- يستخدم الطراز 40 كلمات تحكم مكونة من 56 بت. وينفذ صندوق 2040 كلاً من المعالج الرئيسي System/360 وقناة الإرسال المتعدد (معالج الإدخال/الإخراج). يستخدم هذا الطراز أجهزة قراءة مخصصة TROS مشابهة لوحدات CROS ، ولكن مع التقاط استقرائي (مخزن القراءة فقط للمحول).
- يحتوي الطراز 50 على مسارين داخليين للبيانات يعملان بالتوازي: مسار بيانات بطول 32 بتًا يستخدم في العمليات الحسابية، ومسار بيانات بطول 8 بتات يستخدم في بعض العمليات المنطقية. يستخدم مخزن التحكم تعليمات دقيقة بطول 90 بتًا.
- يحتوي الطراز 85 على جلب تعليمات (وحدة I) وتنفيذها (وحدة E) بشكل منفصل لتوفير أداء عالي. يتم التحكم في وحدة I بواسطة الأجهزة. يتم برمجة وحدة E بشكل دقيق؛ يبلغ عرض كلمات التحكم 108 بت على جهاز 360/85 الأساسي وأعرض إذا تم تثبيت ميزة المحاكي.
- تم برمجة NCR 315 بشكل دقيق باستخدام نوى فيريتية سلكية يدوية ( ROM ) يتم تشغيلها بواسطة جهاز تسلسل مع تنفيذ مشروط. يتم تمكين الأسلاك التي يتم توجيهها عبر النوى لعناصر البيانات والمنطق المختلفة في المعالج.
- معالج PDP-9 من شركة Digital Equipment Corporation ، ومعالجات PDP-10 من طراز KL10 وKS10، ومعالجات PDP-11 باستثناء PDP-11/20، مبرمجة بشكل دقيق. [28]
- معظم أجهزة الكمبيوتر الصغيرة Data General Eclipse مبرمجة بشكل دقيق. تم تفصيل مهمة كتابة التعليمات البرمجية الدقيقة لجهاز Eclipse MV/8000 في الكتاب الحائز على جائزة بوليتسر بعنوان The Soul of a New Machine .
- تمت برمجة العديد من أنظمة بوروز بشكل دقيق:
- يقوم "المعالج الدقيق" B700 بتنفيذ التعليمات البرمجية على مستوى التطبيق باستخدام تسلسلات من التعليمات الدقيقة المكونة من 16 بتًا والمخزنة في الذاكرة الرئيسية؛ وكل منها عبارة عن عملية تحميل سجل أو مرتبطة بتعليمات "نانو كود" مكونة من 56 بتًا مخزنة في ذاكرة للقراءة فقط. وهذا يسمح للأجهزة البسيطة نسبيًا بالعمل إما كوحدة تحكم محيطية للإطار الرئيسي أو أن يتم تعبئتها كجهاز كمبيوتر مستقل.
- تم تنفيذ B1700 باستخدام أجهزة مختلفة جذريًا بما في ذلك الذاكرة الرئيسية القابلة للعنونة بالبتات ولكنها تتمتع بتنظيم متعدد الطبقات مماثل. يقوم نظام التشغيل بتحميل المترجم مسبقًا لأي لغة مطلوبة. تقدم هذه المترجمات آلات افتراضية مختلفة للغات COBOL و Fortran وما إلى ذلك.
- أنتجت شركة Microdata أجهزة كمبيوتر يمكن للمستخدم الوصول إلى التعليمات البرمجية الدقيقة فيها؛ وهذا يسمح بإنشاء تعليمات مخصصة على مستوى التجميع. ويستخدم تصميم نظام التشغيل Reality من Microdata هذه الإمكانية على نطاق واسع.
- استخدمت محطة عمل Xerox Alto تصميمًا مبرمجًا بدقة متناهية، ولكن على عكس العديد من أجهزة الكمبيوتر، لا يتم إخفاء محرك الميكروكود عن المبرمج في تصميم متعدد الطبقات. تستفيد التطبيقات من هذا لتسريع الأداء.
- يُوصَف نظام IBM System/38 بأنه يحتوي على شفرة دقيقة أفقية ورأسية . [29] في الممارسة العملية، ينفذ المعالج بنية مجموعة التعليمات المسماة واجهة البرمجة الدقيقة الداخلية (IMPI) باستخدام تنسيق شفرة دقيقة أفقية. تنفذ طبقة الشفرة الدقيقة الرأسية المزعومة مجموعة تعليمات واجهة الآلة المستقلة عن الأجهزة (MI) لنظام System/38 من خلال ترجمة شفرة MI إلى شفرة IMPI وتنفيذها. قبل تقديم خط معالج IBM RS64 ، استخدمت أنظمة IBM AS/400 المبكرة نفس البنية. [30]
- يستخدم معالج الواقع المساعد (RCP) الخاص بجهاز Nintendo 64 ، والذي يعمل كوحدة معالجة رسوميات ومعالج صوتي للجهاز ، التعليمات البرمجية الدقيقة؛ ومن الممكن تنفيذ تأثيرات جديدة أو تعديل المعالج لتحقيق الناتج المطلوب. تتضمن بعض الأمثلة البارزة على التعليمات البرمجية الدقيقة المخصصة لمعالج الواقع المساعد (RCP) الرسومات عالية الدقة ومحركات الجسيمات ومسافات الرسم غير المحدودة الموجودة في Indiana Jones and the Infernal Machine و Star Wars: Rogue Squadron و Star Wars: Battle for Naboo من Factor 5 ؛ [31] [32] وتشغيل الفيديو بالحركة الكاملة الموجود في Resident Evil 2 من Angel Studios . [33]
- وحدات المتجهات VU0 وVU1 في جهاز Sony PlayStation 2 قابلة للبرمجة الدقيقة؛ في الواقع، لا يمكن الوصول إلى VU1 إلا عبر التعليمات البرمجية الدقيقة للأجيال العديدة الأولى من SDK.
- تُعد MicroCore Labs MCL86 Archived 2016-11-03 at the Wayback Machine وMCL51 Archived 2017-02-02 at the Wayback Machine وMCL65 Archived 2018-12-21 at the Wayback Machine أمثلة على تنفيذات التسلسل الدقيق "العمودي" عالي التشفير من Intel 8086/8088 و8051 وMOS 6502.
- كان نظام الكمبيوتر Meta 4 Series 16 من شركة Digital Scientific Corp. عبارة عن نظام قابل للبرمجة الدقيقة من قبل المستخدم، وكان متاحًا لأول مرة في عام 1970. كان للرمز الدقيق نمط عمودي في المقام الأول مع تعليمات دقيقة مكونة من 32 بت. [34] تم تخزين التعليمات على لوحات برامج قابلة للاستبدال بشبكة من مواضع البتات. تم تمثيل بت واحد (1) بمربعات معدنية صغيرة تم استشعارها بواسطة مكبرات الصوت، وصفر (0) بت بسبب غياب المربعات. [35] يمكن تكوين النظام بما يصل إلى 4K كلمة مكونة من 16 بت من microstore . كان أحد منتجات Digital Scientific عبارة عن محاكي لجهاز IBM 1130. [36] [37]
- MCP -1600 هو معالج دقيق صنعته شركة Western Digital من عام 1975 وحتى أوائل الثمانينيات. وقد تم استخدامه لتنفيذ ثلاث بنيات حاسوبية مختلفة في التعليمات البرمجية الدقيقة: Pascal MicroEngine و WD16 و DEC LSI-11 ، وهو معالج PDP-11 مخفض التكلفة. [38]
- كانت معالجات x86 السابقة مبرمجة بالكامل. وقد نفذت معالجات x86 برمجية دقيقة قابلة للتصحيح (تصحيح بواسطة BIOS أو نظام التشغيل ) منذ معمارية Intel P6 الدقيقة ومعمارية AMD K7 الدقيقة . وقد نفذت مثل هذه المعالجات برمجية دقيقة لذاكرة القراءة فقط وذاكرة SRAM الدقيقة في السيليكون الخاص بها.
- تطبق بعض بطاقات الفيديو ووحدات التحكم في واجهة الشبكة اللاسلكية تعليمات برمجية دقيقة قابلة للتصحيح (تصحيح بواسطة نظام التشغيل). يتم تصحيح مثل هذه التعليمات البرمجية الدقيقة إلى ذاكرة الوصول العشوائي الساكنة (SRAM) أو ذاكرة الوصول العشوائي الديناميكية (DRAM) للجهاز ، على سبيل المثال، ذاكرة الوصول العشوائي الديناميكية (GDDR SDRAM) لبطاقة الفيديو.
تطبيق
توفر كل تعليمة دقيقة في برنامج دقيق البتات التي تتحكم في العناصر الوظيفية التي تشكل داخليًا وحدة المعالجة المركزية. والميزة التي تتمتع بها وحدة المعالجة المركزية مقارنة بوحدة المعالجة المركزية التقليدية هي أن التحكم الداخلي في وحدة المعالجة المركزية يصبح شكلًا متخصصًا من أشكال برامج الكمبيوتر. وبالتالي يحول الكود الدقيق تحدي التصميم الإلكتروني المعقد (التحكم في وحدة المعالجة المركزية) إلى تحدي برمجة أقل تعقيدًا. وللاستفادة من ذلك، يتم تقسيم وحدة المعالجة المركزية إلى عدة أجزاء:
- يمكن لوحدة I فك تشفير التعليمات الموجودة في الأجهزة وتحديد عنوان التعليمات البرمجية الدقيقة لمعالجة التعليمات بالتوازي مع وحدة E.
- يقوم جهاز التسلسل الدقيق باختيار الكلمة التالية من مخزن التحكم. جهاز التسلسل هو في الأساس عداد، ولكن عادة ما يكون لديه أيضًا طريقة للانتقال إلى جزء مختلف من مخزن التحكم اعتمادًا على بعض البيانات، وعادة ما تكون بيانات من سجل التعليمات ودائمًا جزء من مخزن التحكم. أبسط جهاز تسلسل هو مجرد سجل محمل من عدد قليل من بتات مخزن التحكم.
- مجموعة السجلات هي ذاكرة سريعة تحتوي على بيانات وحدة المعالجة المركزية. وقد تتضمن سجلات مرئية لبرامج التطبيق، مثل السجلات العامة وعداد البرنامج ، وقد تتضمن أيضًا سجلات أخرى لا يمكن لمبرمج التطبيق الوصول إليها بسهولة. غالبًا ما تكون مجموعة السجلات عبارة عن ملف سجل ثلاثي المنافذ ؛ أي أنه يمكن قراءة سجلين وكتابة سجل ثالث في نفس الوقت.
- وحدة الحساب والمنطق تقوم بإجراء العمليات الحسابية، عادةً الجمع والنفي المنطقي والتحويل إلى اليمين وAND المنطقية. وغالبًا ما تقوم بوظائف أخرى أيضًا.
قد يكون هناك أيضًا سجل عناوين ذاكرة وسجل بيانات ذاكرة ، يستخدمان للوصول إلى وحدة تخزين الكمبيوتر الرئيسية . معًا، تشكل هذه العناصر " وحدة تنفيذ ". تحتوي معظم وحدات المعالجة المركزية الحديثة على عدة وحدات تنفيذ. حتى أجهزة الكمبيوتر البسيطة عادةً ما تحتوي على وحدة واحدة لقراءة وكتابة الذاكرة، ووحدة أخرى لتنفيذ كود المستخدم. غالبًا ما يمكن تجميع هذه العناصر معًا كشريحة واحدة. تأتي هذه الشريحة بعرض ثابت من شأنه أن يشكل "شريحة" عبر وحدة التنفيذ. تُعرف هذه باسم شرائح " شريحة البت ". تعد عائلة AMD Am2900 واحدة من أفضل الأمثلة المعروفة لعناصر شريحة البت. [39] ترتبط أجزاء وحدات التنفيذ ووحدات التنفيذ بالكامل بحزمة من الأسلاك تسمى الناقل .
يقوم المبرمجون بتطوير برامج دقيقة باستخدام أدوات برمجية أساسية. يسمح المجمع الدقيق للمبرمج بتحديد جدول البتات رمزيًا. نظرًا لعلاقته الوثيقة بالهندسة المعمارية الأساسية، فإن "الكود الدقيق يحتوي على العديد من الخصائص التي تجعل من الصعب إنشاؤه باستخدام المترجم". [1] يهدف برنامج المحاكاة إلى تنفيذ البتات بنفس الطريقة التي يتم بها تنفيذ الإلكترونيات، ويسمح بحرية أكبر بكثير لتصحيح أخطاء البرنامج الدقيق. بعد الانتهاء من البرنامج الدقيق واختباره على نطاق واسع، يتم استخدامه أحيانًا كمدخل لبرنامج كمبيوتر يبني المنطق لإنتاج نفس البيانات. [ بحاجة لمصدر ] هذا البرنامج مشابه لتلك المستخدمة لتحسين مجموعة منطقية قابلة للبرمجة . حتى بدون منطق مثالي تمامًا، يمكن للمنطق المحسن بشكل استدلالي تقليل عدد الترانزستورات بشكل كبير من العدد المطلوب لمخزن التحكم في الذاكرة للقراءة فقط (ROM). يقلل هذا من تكلفة الإنتاج والكهرباء المستخدمة بواسطة وحدة المعالجة المركزية.
يمكن وصف التعليمات البرمجية الدقيقة بأنها أفقية أو عمودية ، في إشارة أساسية إلى ما إذا كانت كل تعليمة دقيقة تتحكم في عناصر وحدة المعالجة المركزية بقليل من فك التشفير أو بدونه (تعليمات دقيقة أفقية) [أ] أو تتطلب فك تشفير مكثفًا بالمنطق التوافقي قبل القيام بذلك (تعليمات دقيقة عمودية). وبالتالي، تكون كل تعليمة دقيقة أفقية أوسع (تحتوي على المزيد من البتات) وتشغل مساحة تخزين أكبر من التعليمة الدقيقة العمودية.
الميكروكود الأفقي
"يحتوي الكود الدقيق الأفقي على العديد من العمليات الدقيقة المنفصلة التي يتم دمجها في تعليمة دقيقة واحدة للتشغيل المتزامن." [1] عادةً ما يتم تضمين الكود الدقيق الأفقي في مخزن تحكم واسع إلى حد ما؛ ليس من غير المألوف أن تكون كل كلمة 108 بت أو أكثر. في كل نقرة من دقات ساعة التسلسل، تتم قراءة كلمة دقيقة وفك تشفيرها واستخدامها للتحكم في العناصر الوظيفية التي تشكل وحدة المعالجة المركزية.
في التنفيذ النموذجي، تتألف كلمة البرنامج الصغير الأفقية من مجموعات محددة بدقة من البتات. على سبيل المثال، قد يكون أحد الترتيبات البسيطة على النحو التالي:
| سجل المصدر أ | سجل المصدر ب | سجل الوجهة | عملية وحدة الحساب والمنطق | نوع القفزة | عنوان القفز |
لكي تتمكن هذه النوعية من الآلات الدقيقة من تنفيذ تعليمة JUMP مع العنوان الذي يتبع التعليمات البرمجية، فقد تتطلب التعليمات البرمجية الدقيقة دقتين للساعة. وسوف يكتب المهندس الذي يصممها التعليمات البرمجية المصدرية للمجمع الدقيق على النحو التالي:
# أي سطر يبدأ بعلامة عددية هو تعليق
# هذا مجرد تسمية، الطريقة العادية التي تمثل بها المجمعات رمزيًا عنوان الذاكرة.
InstructionJUMP : # للتحضير للتعليمة التالية، يكون الكود الدقيق لفك تشفير التعليمات قد # نقل عداد البرنامج إلى سجل عنوان الذاكرة. تقوم هذه التعليمات بجلب # عنوان الهدف لتعليمة القفز من كلمة الذاكرة التي تلي # رمز عملية القفز، عن طريق النسخ من سجل بيانات الذاكرة إلى سجل عنوان الذاكرة. # يمنح هذا نظام الذاكرة دقتين للساعة لجلب # التعليمة التالية إلى سجل بيانات الذاكرة لاستخدامها بواسطة فك تشفير التعليمات. # تعني تعليمات التسلسل "التالي" إضافة 1 فقط إلى عنوان كلمة التحكم.
MDR ، NONE ، MAR ، COPY ، NEXT ، NONE
# يضع هذا عنوان التعليمات التالية في الكمبيوتر الشخصي. # يمنح هذا نظام الذاكرة دقتين للساعة لإنهاء عملية الجلب التي بدأت في # التعليمة الدقيقة السابقة. # تعليمة التسلسل هي القفز إلى بداية فك تشفير التعليمات.
MAR ، 1 ، PC ، ADD ، JMP ، InstructionDecode
# لا يتم عرض فك شفرة التعليمات، لأنه عادة ما يكون فوضويًا، وخاصًا جدًا بالمعالج الدقيق الذي يتم محاكاته. حتى هذا المثال مبسط. # تحتوي العديد من وحدات المعالجة المركزية على عدة طرق لحساب العنوان، بدلاً من مجرد جلبه من الكلمة التي تلي التعليمات البرمجية. لذلك، بدلاً من تعليمة قفزة واحدة فقط، تحتوي وحدات المعالجة المركزية هذه على مجموعة من تعليمات القفز ذات الصلة.
بالنسبة لكل نقرة، من الشائع أن نجد أن بعض أجزاء وحدة المعالجة المركزية فقط هي المستخدمة، مع كون المجموعات المتبقية من البتات في التعليمات الدقيقة عمليات خالية من العمليات. من خلال التصميم الدقيق للأجهزة والبرمجيات الدقيقة، يمكن استغلال هذه الخاصية لتشغيل العمليات بالتوازي والتي تستخدم مناطق مختلفة من وحدة المعالجة المركزية؛ على سبيل المثال، في الحالة أعلاه، لا تكون وحدة الحساب والمنطق مطلوبة أثناء النقرة الأولى، لذا يمكن استخدامها لإكمال تعليمة حسابية سابقة.
الميكروكود العمودي
في التعليمات البرمجية الدقيقة الرأسية، يتم ترميز كل تعليمة دقيقة بشكل كبير، أي أن حقول البتات تمر عمومًا عبر منطق تركيبي وسيط يقوم بدوره بتوليد إشارات التحكم والتسلسل لعناصر وحدة المعالجة المركزية الداخلية (وحدة الحساب والمنطق والسجلات وما إلى ذلك). وهذا على النقيض من التعليمات البرمجية الدقيقة الأفقية، حيث تنتج حقول البتات إشارات التحكم والتسلسل بشكل مباشر أو يتم ترميزها بشكل ضئيل فقط. وبالتالي، تتطلب التعليمات البرمجية الدقيقة الرأسية أطوال تعليمات أصغر وتخزينًا أقل، ولكنها تتطلب وقتًا أطول لفك التشفير، مما يؤدي إلى تباطؤ ساعة وحدة المعالجة المركزية. [40]
بعض التعليمات البرمجية الدقيقة الرأسية هي مجرد لغة تجميع لجهاز كمبيوتر تقليدي بسيط يحاكي جهاز كمبيوتر أكثر تعقيدًا. تستخدم بعض المعالجات، مثل معالجات DEC Alpha ومعالجات CMOS الدقيقة على أجهزة الكمبيوتر المركزية IBM الأحدث System/390 و z/Architecture ، التعليمات البرمجية الآلية، التي تعمل في وضع خاص يمنحها إمكانية الوصول إلى تعليمات خاصة وسجلات خاصة وموارد أجهزة أخرى غير متاحة للتعليمات البرمجية الآلية العادية، لتنفيذ بعض التعليمات والوظائف الأخرى، [41] [42] مثل التنقل في جدول الصفحات على معالجات Alpha. [43] يُطلق على هذا اسم PALcode على معالجات Alpha و millicode على معالجات الكمبيوتر المركزية IBM.
شكل آخر من أشكال التعليمات البرمجية الدقيقة العمودية يحتوي على حقلين:
| اختيار الحقل | قيمة الحقل |
يحدد حقل التحديد الجزء من وحدة المعالجة المركزية الذي سيتم التحكم فيه بواسطة هذه الكلمة من مخزن التحكم. تتحكم قيمة الحقل في ذلك الجزء من وحدة المعالجة المركزية. باستخدام هذا النوع من التعليمات البرمجية الدقيقة، يختار المصمم صراحةً إنشاء وحدة معالجة مركزية أبطأ لتوفير المال عن طريق تقليل البتات غير المستخدمة في مخزن التحكم؛ ومع ذلك، قد يؤدي التعقيد المنخفض إلى زيادة تردد ساعة وحدة المعالجة المركزية، مما يقلل من تأثير زيادة عدد الدورات لكل تعليمة.
مع انخفاض أسعار الترانزستورات، أصبح الميكروكود الأفقي يهيمن على تصميم وحدات المعالجة المركزية التي تستخدم الميكروكود، مع استخدام الميكروكود العمودي بشكل أقل.
عند استخدام كل من الكود الدقيق الرأسي والأفقي، يمكن الإشارة إلى الكود الدقيق الأفقي باسم الكود النانوي أو الكود البيكو . [44]
مخزن التحكم القابل للكتابة
تم بناء عدد قليل من أجهزة الكمبيوتر باستخدام التعليمات البرمجية الدقيقة القابلة للكتابة . في هذا التصميم، بدلاً من تخزين التعليمات البرمجية الدقيقة في ذاكرة القراءة فقط أو المنطق الثابت، يتم تخزين التعليمات البرمجية الدقيقة في ذاكرة وصول عشوائي تسمى مخزن التحكم القابل للكتابة أو WCS . يُطلق على مثل هذا الكمبيوتر أحيانًا اسم كمبيوتر مجموعة التعليمات القابلة للكتابة (WISC). [45]
تستخدم العديد من نماذج أجهزة الكمبيوتر التجريبية مخازن تحكم قابلة للكتابة؛ وهناك أيضًا آلات تجارية تستخدم أكوادًا دقيقة قابلة للكتابة، مثل أنظمة Burroughs Small Systems ، ومحطات عمل Xerox المبكرة ، وعائلة DEC VAX 8800 ( Nautilus )، وأجهزة Symbolics L وG، وعدد من تطبيقات IBM System/360 و System/370 ، وبعض أجهزة DEC PDP-10 ، [46] و Data General Eclipse MV/8000 . [47]
يتضمن نظام IBM System/370 مرفقًا يسمى تحميل البرنامج الأولي ( IML أو IMPL ) [48] والذي يمكن استدعاؤه من وحدة التحكم، كجزء من إعادة تعيين التشغيل ( POR ) أو من معالج آخر في مجمع متعدد المعالجات مقترن بإحكام .
تحتوي بعض الأجهزة التجارية، على سبيل المثال IBM 360/85، [49] [50] على وحدة تخزين للقراءة فقط ووحدة تخزين تحكم قابلة للكتابة للرمز الدقيق.
يوفر نظام WCS العديد من المزايا بما في ذلك سهولة تصحيح البرنامج الصغير، وبالنسبة لأجيال معينة من الأجهزة، الوصول بشكل أسرع مما توفره ذاكرة القراءة فقط. يسمح نظام WCS القابل للبرمجة من قبل المستخدم للمستخدم بتحسين الجهاز لأغراض محددة.
بدءًا من Pentium Pro في عام 1995، تحتوي العديد من وحدات المعالجة المركزية x86 على تعليمات برمجية دقيقة قابلة للكتابة من Intel . [51] [52] وقد سمح هذا، على سبيل المثال، بإصلاح الأخطاء في التعليمات البرمجية الدقيقة لـ Intel Core 2 وIntel Xeon عن طريق تصحيح برامجها الدقيقة، بدلاً من مطالبة الرقائق بالكامل بالاستبدال. ومن الأمثلة البارزة الثانية مجموعة تصحيحات التعليمات البرمجية الدقيقة التي قدمتها Intel لبعض بنيات المعالجات التي يصل عمرها إلى 10 سنوات، في محاولة لمواجهة الثغرات الأمنية المكتشفة في تصميماتها - Spectre و Meltdown - والتي تم طرحها للجمهور في بداية عام 2018. [53] [54] يمكن تثبيت تحديث التعليمات البرمجية الدقيقة بواسطة Linux، [55] FreeBSD ، [56] Microsoft Windows، [57] أو BIOS اللوحة الأم. [58]
تقدم بعض الأجهزة مخازن تحكم قابلة للكتابة والبرمجة من قبل المستخدم كخيار، بما في ذلك أجهزة الكمبيوتر الصغيرة HP 2100 وDEC PDP-11/60 و TI-990 /12، [59] [60] وسلسلة أجهزة الكمبيوتر الصغيرة V-70 من Varian Data Machines .
مقارنة مع VLIW وRISC
This section does not cite any sources. (August 2023) |
This section needs to be updated. The reason given is: Many CISC processors now do instruction fetch and decode in hardware, and execute most if not all instructions in hardware, and both RISC and CISC processors execute several operations per clock cycle. (December 2023) |
بدأ اتجاه التصميم نحو المعالجات التي تعتمد على تعليمات دقيقة للغاية ومعقدة في أوائل الستينيات واستمر حتى منتصف الثمانينيات تقريبًا. وفي تلك المرحلة بدأت فلسفة تصميم RISC تصبح أكثر بروزًا.
عادةً ما تستغرق وحدة المعالجة المركزية التي تستخدم التعليمات البرمجية الدقيقة عدة دورات ساعة لتنفيذ تعليمة واحدة، دورة ساعة واحدة لكل خطوة في البرنامج الدقيق لتلك التعليمات. تتضمن بعض معالجات CISC تعليمات قد يستغرق تنفيذها وقتًا طويلاً للغاية. تتداخل مثل هذه الاختلافات مع كل من زمن انتقال المقاطعة ، والأهم من ذلك بكثير في الأنظمة الحديثة، خطوط الأنابيب .
عند تصميم معالج جديد، يتمتع RISC للتحكم السلكي بالمزايا التالية مقارنة بـ CISC المبرمجة بدقة:
- لقد ابتعدت البرمجة إلى حد كبير عن مستوى التجميع، لذا لم يعد من المفيد تقديم تعليمات معقدة لأسباب تتعلق بالإنتاجية.
- تسمح مجموعات التعليمات الأكثر بساطة بالتنفيذ المباشر بواسطة الأجهزة، مما يتجنب عقوبة الأداء الناجمة عن التنفيذ المبرمج بدقة.
- يُظهر التحليل أن التعليمات المعقدة نادراً ما تُستخدم، وبالتالي فإن موارد الآلة المخصصة لها تُهدر إلى حد كبير.
- إن موارد الآلة المخصصة للتعليمات المعقدة التي نادراً ما تستخدم يتم استخدامها بشكل أفضل لتسريع أداء التعليمات الأكثر بساطة واستخداماً.
- قد تتطلب التعليمات المعقدة المبرمجة بدقة العديد من دورات الساعة التي تختلف، وقد يصعب توصيلها لتحسين الأداء.
هناك نقاط مضادة أيضًا:
- قد لا تستهلك التعليمات المعقدة في التطبيقات التي تعتمد على ترميز دقيق الكثير من موارد الجهاز الإضافية، باستثناء مساحة الترميز الدقيق. على سبيل المثال، غالبًا ما تُستخدم نفس وحدة الحساب والمنطق لحساب عنوان فعال وحساب النتيجة من المتغيرات، على سبيل المثال، Z80 الأصلية و 8086 وغيرها.
- تُستخدم التعليمات البسيطة غير RISC (أي التي تتضمن متغيرات ذاكرة مباشرة ) بشكل متكرر بواسطة المترجمين الحديثين. حتى العمليات الحسابية المباشرة للتكديس (أي نتيجة الذاكرة) تُستخدم بشكل شائع. على الرغم من أن مثل هذه العمليات المتعلقة بالذاكرة، والتي غالبًا ما تكون ذات ترميزات بطول متفاوت، يصعب توصيلها عبر خط أنابيب، إلا أنه لا يزال من الممكن تمامًا القيام بذلك - كما يتضح بوضوح من i486 و AMD K5 و Cyrix 6x86 و Motorola 68040 وما إلى ذلك.
- تؤدي التعليمات غير RISC بطبيعتها المزيد من العمل لكل تعليمة (في المتوسط)، كما أنها عادةً ما تكون مشفرة بدرجة عالية، وبالتالي فهي تتيح حجمًا إجماليًا أصغر لنفس البرنامج، وبالتالي استخدامًا أفضل لذاكرة التخزين المؤقت المحدودة.
تم تصميم العديد من معالجات RISC و VLIW لتنفيذ كل تعليمة (طالما كانت في ذاكرة التخزين المؤقت) في دورة واحدة. وهذا يشبه إلى حد كبير الطريقة التي تنفذ بها وحدات المعالجة المركزية ذات التعليمات البرمجية الدقيقة تعليمة دقيقة واحدة لكل دورة. تحتوي معالجات VLIW على تعليمات تتصرف بشكل مشابه للتعليمات البرمجية الدقيقة الأفقية العريضة للغاية، على الرغم من عدم وجود مثل هذا التحكم الدقيق في الأجهزة كما هو الحال مع التعليمات البرمجية الدقيقة. تكون تعليمات RISC أحيانًا مشابهة للتعليمات البرمجية الدقيقة الرأسية الضيقة.
اكتسبت الميكروكود شعبية كبيرة في المعالجات المخصصة للتطبيقات مثل معالجات الشبكة ، ومعالجات الإشارات الرقمية ، ووحدات تحكم القنوات ، ووحدات تحكم الأقراص ، ووحدات تحكم واجهة الشبكة ، ووحدات تحكم ذاكرة الفلاش ، ووحدات معالجة الرسومات ، وفي الأجهزة الأخرى.
العمليات الدقيقة
تقوم تطبيقات CISC الحديثة، مثل عائلة x86 التي تبدأ بـ NexGen Nx586 وIntel Pentium Pro و AMD K5 ، بفك تشفير التعليمات إلى عمليات دقيقة مخزنة ديناميكيًا باستخدام ترميز تعليمات مشابه لـ RISC أو التعليمات البرمجية الدقيقة التقليدية. تصدر وحدة فك تشفير التعليمات المبرمجة بشكل ثابت عمليات دقيقة مباشرة لتعليمات x86 الشائعة، لكنها تعود إلى ذاكرة قراءة فقط للرموز الدقيقة التقليدية تحتوي على عمليات دقيقة للتعليمات الأكثر تعقيدًا أو التي نادرًا ما تستخدم. [2]
على سبيل المثال، قد يبحث x86 عن عمليات دقيقة من التعليمات البرمجية الدقيقة للتعامل مع العمليات المعقدة متعددة الخطوات مثل تعليمات الحلقة أو السلسلة، أو وظائف الوحدة العائمة المتسامية أو القيم غير العادية مثل الأرقام غير الطبيعية ، والتعليمات ذات الأغراض الخاصة مثل CPUID .
انظر أيضا
ملحوظات
- ^ تحتوي معالجات IBM المبرمجة أفقياً على أوامر دقيقة متعددة وحقول اختيار مسجلة تتطلب فك التشفير.
مراجع
- ^ abc Kent, Allen; Williams, James G. (April 5, 1993). موسوعة علوم وتكنولوجيا الكمبيوتر: المجلد 28 - الملحق 13. نيويورك: Marcel Dekker, Inc. ISBN 0-8247-2281-7. مؤرشف من الأصل في 20 نوفمبر 2016 . استرجاع 17 يناير 2016 .
- ^ ab Fog, Agner (2017-05-02). The microarchitecture of Intel, AMD and VIA CPUs (PDF) (تقرير). جامعة الدنمارك التقنية. مؤرشف (PDF) من الأصل في 2017-03-28 . تم الاسترجاع في 2024-08-21 .
- ^ "IBM pSeries Servers - Microcode Update for Ultrastar 73LZX (US73) 18/36 GB". IBM . مؤرشف من الأصل في 19 أبريل 2019 . تم الاسترجاع في 22 يناير 2015 .
- ^ ab Both, David (23 يوليو 2020). "وحدة المعالجة المركزية (CPU): مكوناتها ووظائفها". Red Hat .
- ^ بيكينز، جون. "رموز العمليات NMOS 6502". 6502.org .
- ^ ab Shirriff, Ken. "كيف يعمل محرك التعليمات البرمجية الدقيقة لمعالج 8086". مدونة Ken Shirriff .
- ^ "ISO/IEC/IEEE 24765:2017(en) هندسة النظم والبرمجيات - المفردات". www.iso.org . تم الاسترجاع في 2024-06-23 .
- ^ الوصف الفني لنظام VAX 9000 (PDF) . شركة Digital Equipment Corporation . مايو 1990. ص 3-5-32. EK-KA90S-TD-001.
- ^ وصف النظام الفني VAX 8800 المجلد 2 (PDF) . شركة Digital Equipment Corporation . يوليو 1986. EK-KA882-TD-PRE.
- ^ Manning, BM; Mitby, JS; Nicholson, JO (November 1979). "Microprogrammed Processor Having PLA Control Store". IBM Technical Disclosure Bulletin . 22 (6). مؤرشف من الأصل في 2012-10-01 . تم الاسترجاع في 2011-07-10 .
- ^ غالبًا ما يُشار إليه باسم مخزن التحكم ROM/PLA في سياق الاستخدام في وحدة المعالجة المركزية؛ Supnik, Bob (24 فبراير 2008). "J-11: تصميم المعالج الدقيق الرابع والأخير PDP-11 من DEC ... يتميز ... بمخزن التحكم ROM/PLA". مؤرشف من الأصل في 2011-07-09 . تم الاسترجاع في 2011-07-10 .
- ^ "6502 صورة". مؤرشف من الأصل في 4 مارس 2016. اطلع عليه بتاريخ 22 يناير 2015 .
- ^ IBM System/360 Model 50 Functional Characteristics (PDF) . IBM . 1967. p. 7. A22-6898-1 . تم الاسترجاع في 29 أكتوبر 2021 .
- ^ Everett, RR; Swain, FE (1947). Whirlwind I Computer Block Diagrams (PDF) (تقرير فني). MIT Servomechanisms Laboratory. R-127. مؤرشف من الأصل (PDF) في 17 يونيو 2012. تم الاسترجاع في 21 يونيو 2006 .
- ^
- ويلكس، موريس (1951). أفضل طريقة لتصميم آلة حاسبة آلية (تقرير فني). جامعة مانشستر .
- ويلكس، موريس (1989). "أفضل طريقة لتصميم آلة حاسبة آلية" (PDF) . في كامبل كيلي، م. (المحرر). مؤتمرات الكمبيوتر البريطانية المبكرة . مطبعة معهد ماساتشوستس للتكنولوجيا. ص 182-184. رقم ISBN 978-0-262-23136-7.
- ^ ab Shirriff, Ken. "محاكاة الحاسوب المركزي IBM 360/50 من التعليمات البرمجية الدقيقة الخاصة به". مدونة Ken Shirriff .
- ^ Supnik, Bob (مايو 1988). VLSI VAX Micro-Architecture (PDF) . Digital Equipment.
- ^ ستارنز، توماس (أبريل 1983). "فلسفة التصميم وراء MC68000 من موتورولا". بايت .
- ^ abc Cocke, John; Markstein, Victoria (January 1990). "The evolution of RISC technology at IBM" (PDF) . مجلة IBM للبحث والتطوير . 34 (1): 4–11. doi :10.1147/rd.341.0004.
- ^ ab Clark, Douglas; Strecker, William (سبتمبر 1980). "تعليقات على "حالة استخدام الكمبيوتر ذي التعليمات المخفضة"". ACM . 8 (6): 34–38. doi :10.1145/641914.641918. S2CID 14939489.
- ^ "خط أنابيب التنفيذ لوحدة المعالجة المركزية Intel i486". ملخص الأوراق البحثية Compcon Spring '90. المؤتمر الدولي الخامس والثلاثون لجمعية الكمبيوتر IEEE حول الاستغلال الفكري . سان فرانسيسكو، كاليفورنيا: IEEE . doi :10.1109/CMPCON.1990.63682. ISBN 0-8186-2028-5.
- ^ "معالج Pentium Pro بترددات 150 و166 و180 و200 ميجاهرتز" (PDF) (ورقة بيانات). Intel . نوفمبر 1995.
- ^ "الجزء الأول / الهندسة المعمارية المشتركة، الفصل السادس من الهندسة المعمارية المشتركة لبرنامج PALcode". دليل مرجعي لهندسة Alpha AXP (PDF) (الطبعة الثانية). Digital Press . 1995. ISBN 1-55558-145-5.
- ^ Rogers, Bob (Sep–Oct 2012). "The What and Why of zEnterprise Millicode". مجلة IBM Systems . مؤرشف من الأصل في 9 أكتوبر 2012.
- ^ "جهاز كمبيوتر EMIDEC 1100". Emidec.org.uk. مؤرشف من الأصل في 12 يونيو 2010. تم الاسترجاع في 26 أبريل 2010 .
- ^ IBM System/360 Model 25 Functional Characteristics (PDF) . IBM. يناير 1968. ص. 22. A24-3510-0 . تم الاسترجاع في 29 أكتوبر 2021 .
- ^ نظرية تشغيل هندسة المجال abc ، وحدة معالجة 2030، نموذج النظام/360 30 (PDF) (الطبعة الأولى). IBM. يونيو 1967. Y24-3360-1. مؤرشف (PDF) من الأصل في 2020-04-01 . تم الاسترجاع في 2019-11-09 .
- ^ إدوارد أ. سنو؛ دانيال ب. سييويوريك (1982). "تنفيذ وتقييم أداء عائلة PDP-11". في دانيال ب. سييويوريك ؛ سي. جوردون بيل ؛ ألين نيويل (المحررون). هياكل الكمبيوتر: المبادئ والأمثلة . نيويورك، نيويورك : شركة ماكجرو هيل للكتب . ص. 671. رقم ISBN 0-07-057302-6.
- ^ سولتيس، فرانك (سبتمبر 1981). "تصميم نظام معالجة بيانات الأعمال الصغيرة". IEEE Computer . 14 : 77–93. doi :10.1109/CM.1981.220610. S2CID 398484.
- ^ فرانك ج. سولتيس (1997). داخل AS/400، الطبعة الثانية. دار نشر ديوك. رقم ISBN 978-1882419661.
- ^ "مقابلة: معركة نينتندو 64 (نابو)". IGN64. 10 نوفمبر 2000. مؤرشف من الأصل في 13 سبتمبر 2007. تم الاسترجاع في 27 مارس 2008 .
- ^ "إنديانا جونز والآلة الجهنمية". IGN . 12 ديسمبر 2000. مؤرشف من الأصل في 27 سبتمبر 2013. تم الاسترجاع في 24 سبتمبر 2013 .
- ^ Meynink, Todd (28 يوليو 2000). "Postmortem: Angel Studios' Resident Evil 2 (N64 Version)". Gamasutra . United Business Media LLC . مؤرشف من الأصل في 21 أكتوبر 2012 . تم الاسترجاع في 18 أكتوبر 2010 .
- ^ Digital Scientific Meta 4 Series 16 Computer System Reference Manual (PDF) . Digital Scientific Corporation. مايو 1971. 7032MO. مؤرشف من الأصل (PDF) في 2020-01-14 . تم الاسترجاع في 2020-01-14 .
- ^ دليل مرجعي لذاكرة القراءة فقط (ROM) لنظام الكمبيوتر Digital Scientific Meta 4 (PDF) . شركة Digital Scientific Corporation. مارس 1970. 7024MO. مؤرشف من الأصل (PDF) في 2019-09-23 . تم استرجاعه في 2020-01-14 .
- ^ دليل النظام الأولي لنظام الكمبيوتر Digital Scientific Meta 4 Series 16 (PDF) . شركة Digital Scientific Corporation. يونيو 1970. 7006MO. مؤرشف من الأصل (PDF) في 2019-09-23 . تم الاسترجاع في 2020-01-14 .
- ^ Digital Scientific Meta 4 Computer System Typical ROM Pattern Listing and Program To Simulate The IBM 1130 Instruction Set (PDF) . Digital Scientific Corporation. January 1970. M4/005P-170. مؤرشف من الأصل (PDF) في 2020-03-24 . تم الاسترجاع في 2020-01-14 .
- ^ "Western Digital 1600". AntiqueTech. مؤرشف من الأصل في 3 يناير 2017. تم الاسترجاع 5 يناير 2017 .
- ^ هايز، جون ب. (1978). بنية الحاسوب وتنظيمه . ماكجرو هيل. ص. 300. ISBN 0-07-027363-4.
- ^ نيل هارمان؛ آندي جيمبليت (2009-10-12). "CS-323: High Performance Microprocessors – Chapter 1. Microprogramming". mat.uson.mx . مؤرشف من الأصل في 2015-04-19 . تم الاسترجاع في 2015-08-08 .
- ^ فوبل، روبرت (2013). التوافر العالي وقابلية التوسع لبيئات الحاسبات المركزية باستخدام نظام z وz/OS كمثال. KIT Scientific. ص. 26. ISBN 978-3-7315-0022-3.
- ^ Rogers, Bob (سبتمبر-أكتوبر 2012). "ما هو zEnterprise Millicode ولماذا". مجلة IBM Systems . مؤرشف من الأصل في 2013-10-16 . تم الاسترجاع في 2013-11-07 .
- ^ "دليل تصميم نظام PALcode لمعالجات ألفا الدقيقة" (PDF) . شركة ديجيتال إكويبمنت . مايو 1996. مؤرشف من الأصل (PDF) في 15 أغسطس 2011. تم الاسترجاع في 7 نوفمبر 2013 .
- ^ Spruth, Wilhelm (ديسمبر 2012). تصميم المعالج الدقيق. Springer Science & Business Media. ص. 31. ISBN 978-3-642-74916-2. مؤرشف من الأصل في 20 نوفمبر 2016 . استرجاع 18 يناير 2015 .
- ^ كوبمان، فيليب الابن (1987). "مجموعة التعليمات القابلة للكتابة، أجهزة الكمبيوتر الموجهة للمكدس: مفهوم WISC" (PDF) . مجلة فورث للتطبيق والبحث : 49-71. مؤرشف (PDF) من الأصل في 2008-05-11.
- ^ سميث، إيريك (3 سبتمبر 2002). "رد: ما هو حجم التعليمات البرمجية الدقيقة في مختلف الآلات". مجموعة الأخبار : alt.folklore.computers. Usenet: qhn0qyveyu.fsf@ruckus.brouhaha.com. مؤرشف من الأصل في 26 يناير 2009. تم الاسترجاع في 18 ديسمبر 2008 .
- ^ Smotherman, Mark. "CPSC 3300 / The Soul of a New Machine" . تم الاسترجاع في 2023-10-27 .
4096 x 75-bit SRAM writable control store: 74-bit microinstruction with 1 parity bit (18 field)
- ^ مبادئ تشغيل نظام IBM/370 (PDF) . الطبعة الرابعة. IBM. سبتمبر 1974. ص 98، 245. GA22-7000-4. مؤرشف (PDF) من الأصل في 2012-02-29 . تم الاسترجاع في 2012-08-27 .
- ^ IBM System/360 Model 85 Functional Characteristics (PDF) . الطبعة الثانية. IBM. يونيو 1968. A22-6916-1 . تم الاسترجاع في 29 أكتوبر 2021 .
- ^ وصف الميزة الخاصة لنظام IBM/360 709/7090/7094 ميزة التوافق لنظام IBM/360 الطراز 85. الطبعة الأولى. IBM. مارس 1969. GA27-2733-0.
- ^ ستيلر ، أندرياس. بول ماتياس ر. (12/05/1996). "Prozessorgeflüster". ج't - مجلة لتقنية الكمبيوتر . الاتجاهات والأخبار (باللغة الألمانية). هيز فيرلاغ . مؤرشفة من الأصلي بتاريخ 28-08-2017 . تم الاسترجاع 2017/08/28 .
- ^ "9.11: مرافق تحديث التعليمات البرمجية الدقيقة". دليل مطوري برامج Intel 64 وIA-32 Architectures، المجلد 3A: دليل برمجة النظام، الجزء 1 (PDF) . Intel . سبتمبر 2016.
- ^ قامت شركة Intel بإصلاح جميع وحدات المعالجة المركزية الحديثة، ووعدت بإصلاحات الأجهزة للشرائح القادمة من الجيل الثامن بقلم بول ألكورن في 15 مارس 2018
- ^ "تنزيل ملف بيانات التعليمات البرمجية الدقيقة لمعالج Linux*". مؤرشف من الأصل في 2018-03-19 . تم الاسترجاع في 2018-03-21 .
- ^ "Intel Microcode Update Utility for Linux". مؤرشف من الأصل في 2012-02-26.
- ^ "[ports] Index of /head/sysutils/cpupdate". Freebsd.org. مؤرشف من الأصل في 2020-04-01 . تم الاسترجاع في 2020-01-16 .
- ^ "تحديث موثوقية التعليمات البرمجية الدقيقة متاح لتحسين موثوقية الأنظمة التي تستخدم معالجات Intel". مؤرشف من الأصل في 2008-02-23 . تم الاسترجاع في 2008-02-25 .
- ^ "منتجات الخادم - يلزم تحديث BIOS عند رؤية رسالة مفقودة من التعليمات البرمجية الدقيقة أثناء اختبار POST". Intel . 24 يناير 2013. مؤرشف من الأصل في 1 سبتمبر 2014.
- ^ "دليل صيانة وإصلاح مستودع الكمبيوتر طراز 990/12 LR" (PDF) . Bitsavers.org . Texas Instruments . تم الاسترجاع في 15 فبراير 2024 .
- ^ دليل مبرمج نظام تطوير التعليمات البرمجية الدقيقة MDS-990 لجهاز كمبيوتر طراز 990 من Texas Instruments (طبعة 15 أغسطس 1979). أرشيفات Texas Instruments، RG-20 accession 94-08، الصندوق 10، 45C. مكتبة DeGolyer، جامعة Southern Methodist، دالاس، تكساس، الولايات المتحدة الأمريكية.
{{cite book}}: CS1 maint: location (link)
قراءة إضافية
- سميث، ريتشارد إي. (1988). "نظرة تاريخية عامة على بنية الحاسوب". حوليات تاريخ الحوسبة . 10 (4): 277-303. doi :10.1109/MAHC.1988.10039. S2CID 16405547. تم الاسترجاع في 21 يونيو 2006 .
- Smotherman, Mark (أكتوبر 2022). "تاريخ موجز للبرمجة الدقيقة" . تم الاسترجاع في 27 أكتوبر 2023 .
- Wilkes, MV (1986). "نشأة البرمجة الدقيقة". حوليات تاريخ الحوسبة . 8 (2): 116–126. doi :10.1109/MAHC.1986.10035. S2CID 1978847. تم الاسترجاع في 7 أغسطس 2006 .
- Wilkes, MV ; Stringer, JB (April 1953). "Microprogramming and the Design of the Control Circuits in an Electronic Digital Computer". Proceedings of the Cambridge Philosophical Society . 49 (pt. 2): 230–238. Bibcode :1953PCPS...49..230W. doi :10.1017/S0305004100028322. S2CID 62230627. تم الاسترجاع في 23 أغسطس 2006 .
- هوسون، إس إس (1970). مبادئ وممارسات البرمجة الدقيقة . برنتيس هول. رقم ISBN 0-13-581454-5.
- Tucker, SG (1967). "Microprogram control for SYSTEM/360". IBM Systems Journal . 6 (4): 222–241. doi :10.1147/sj.64.0222.
- شيريف، كين (ديسمبر 2022). "كيف يعمل محرك التعليمات البرمجية الدقيقة للمعالج 8086".
روابط خارجية
This article's use of external links may not follow Wikipedia's policies or guidelines. (February 2017) |
- مجموعة تعليمات قابلة للكتابة في الكمبيوتر
- مخزن المكثفات للقراءة فقط
- متجر Transformer للقراءة فقط
- نبذة مختصرة عن البرمجة الدقيقة
- تحديث أمان التعليمات البرمجية الدقيقة لمعالج Intel (يصلح المشكلات عند تشغيل الآلات الافتراضية ذات 32 بت في وضع PAE)
- ملاحظات حول تحديثات Intel Microcode، مارس 2013، بقلم Ben Hawkes، مؤرشفة من الأصل في 7 سبتمبر 2015
- ثغرة في ميزة اكتشاف الأخطاء التي تقدمها شركة Intel، EE Times ، 2002، بقلم ألكسندر وولف، مؤرشف من الأصل في 9 مارس 2003
- Opteron Exposed: الهندسة العكسية لتحديثات AMD K8 Microcode، 26 يوليو 2004
- WepSIM: محاكي تعليمي تفاعلي عبر الإنترنت يدمج التصميم الدقيق والبرمجة الدقيقة وبرمجة لغة التجميع، 26 يوليو 2022
