الشفرة المصغرة
في هندسة الحاسوب ، تُعدّ الشفرة الدقيقة طبقةً من بيانات التحكم أو التعليمات منخفضة المستوى، تُستخدم لتنفيذ بنية مجموعة تعليمات المعالج أو تسلسلات التحكم الداخلية. [ 1 ] وهي تتألف من عمليات على مستوى العتاد تُنفّذ تعليمات لغة الآلة عالية المستوى أو تُوجّه التسلسل الداخلي في العديد من المكونات الرقمية. في العديد من معالجات Intel و AMD الحديثة للأغراض العامة، تُفكّ شفرة التعليمات الشائعة مباشرةً إلى عمليات دقيقة داخلية، بينما تُستخدم الشفرة الدقيقة بشكل أساسي للتعليمات الأكثر تعقيدًا، والحالات الخاصة، وتحديثات المعالج. [ 2 ]
يُخزَّن الكود البرمجي الدقيق في ذاكرة خاصة عالية السرعة، حيث يُترجم تعليمات الآلة، وبيانات آلة الحالة ، أو أي مدخلات أخرى إلى تسلسلات من العمليات التفصيلية على مستوى الدوائر. وهو يفصل تعليمات الآلة عن الإلكترونيات الأساسية ، مما يتيح مرونة أكبر في تصميم التعليمات وتعديلها. علاوة على ذلك، يُسهِّل بناء تعليمات معقدة متعددة الخطوات، مع تقليل تعقيد دوائر الحاسوب في الوقت نفسه. يُشار إلى عملية كتابة الكود البرمجي الدقيق غالبًا باسم البرمجة الدقيقة ، ويُطلق على الكود البرمجي الدقيق في تطبيق معالج معين أحيانًا اسم البرنامج الدقيق .
بفضل البرمجة الدقيقة المكثفة، يمكن للبنى الدقيقة ذات الحجم الأصغر والبساطة محاكاة بنى أكثر قوة ذات أطوال كلمات أوسع ووحدات تنفيذ إضافية ، وما إلى ذلك. يوفر هذا النهج طريقة مباشرة نسبيًا لضمان توافق البرامج بين المنتجات المختلفة ضمن عائلة المعالجات.
ملخص
مجموعات التعليمات
على مستوى المكونات المادية، تحتوي المعالجات على عدد من الدوائر الإلكترونية المنفصلة، أو "الوحدات"، التي تؤدي مهامًا مختلفة. تشمل الوحدات الشائعة وحدة الحساب والمنطق (ALU) التي تنفذ تعليمات مثل الجمع أو مقارنة عددين، ودوائر لقراءة البيانات وكتابتها إلى الذاكرة الخارجية، ومساحات صغيرة من الذاكرة الداخلية لتخزين هذه القيم أثناء معالجتها. في معظم التصاميم، تُستخدم ذاكرة إضافية عالية الأداء، وهي ملف السجلات ، لتخزين القيم المؤقتة، وليس فقط تلك التي تحتاجها التعليمات الحالية. [ 3 ]
لتنفيذ أي تعليمة بشكل صحيح، يجب تفعيل الدوائر المختلفة بالتسلسل. على سبيل المثال، لا يمكن جمع عددين إذا لم يتم تحميلهما من الذاكرة. في تصميمات RISC ، يعتمد ترتيب هذه التعليمات بشكل كبير على المبرمج، أو على الأقل على مُصرّف لغة البرمجة المستخدمة . لذا، لجمع عددين في الذاكرة وتخزين النتيجة فيها، على سبيل المثال، قد يُخرج المُصرّف تعليمات لتحميل أحد العددين في سجل، والآخر في سجل آخر، ثم تنفيذ عملية الجمع في وحدة الحساب والمنطق (ALU)، ووضع النتيجة في سجل، ثم تخزين هذا السجل في الذاكرة. [ 3 ]
بما أن تسلسل التعليمات اللازمة لإتمام هذا المفهوم عالي المستوى، "جمع هذين العددين في الذاكرة"، قد يتطلب عدة تعليمات، فقد يُمثل ذلك عنق زجاجة في الأداء إذا تم تخزين هذه التعليمات في الذاكرة الرئيسية . فقراءة هذه التعليمات واحدة تلو الأخرى تستغرق وقتًا كان من الممكن استغلاله لقراءة البيانات الفعلية وكتابتها. لهذا السبب، من الشائع في تصميمات المعالجات غير القائمة على معمارية RISC أن تحتوي على العديد من التعليمات المختلفة التي تختلف اختلافًا كبيرًا في مكان تخزين البيانات. على سبيل المثال، يحتوي معالج MOS 6502 على ثمانية أنواع مختلفة من تعليمة الجمع، ADCوالتي تختلف فقط في مكان البحث عن المعاملين. [ 4 ]
يمكن تقليل عدد التعليمات إلى تعليمة واحدة باستخدام صيغة مختلفة من التعليمات، أو ما يُعرف بـ " رمز العملية "، والتي تُطابق العملية النهائية بشكلٍ أدق، مما يوفر مساحة الذاكرة التي يستخدمها البرنامج ويُحسّن الأداء من خلال إبقاء ناقل البيانات مفتوحًا لعمليات أخرى. مع ذلك، داخليًا، لا تُمثل هذه التعليمات عمليات منفصلة، بل هي تسلسلات للعمليات التي تُنفذها الوحدات فعليًا. وتتولى وحدة التحكم ، وهي وحدة أخرى داخل المعالج، مهمة تحويل تعليمة واحدة تُقرأ من الذاكرة إلى تسلسل من الإجراءات الداخلية . [ 5 ]
الشفرة المصغرة
تعتمد الفكرة الأساسية وراء البرمجة المصغرة على استبدال منطق الأجهزة المخصص المسؤول عن تنفيذ تسلسل التعليمات بسلسلة من التعليمات البسيطة التي تُنفذ في "محرك البرمجة المصغرة" داخل المعالج. فبينما قد يحتوي نظام المنطق المخصص على سلسلة من الثنائيات والبوابات التي تُخرج سلسلة من الفولتيات على خطوط تحكم مختلفة، يتصل محرك البرمجة المصغرة بهذه الخطوط مباشرةً، ويتم تشغيلها وإيقافها أثناء قراءة المحرك لتعليمات البرمجة المصغرة بالتسلسل. غالبًا ما تُشفّر تعليمات البرمجة المصغرة على هذه الخطوط باستخدام ترميز البتات، فعلى سبيل المثال، إذا كانت البتة 8 صحيحة، فقد يعني ذلك أنه يجب إيقاف وحدة الحساب والمنطق مؤقتًا في انتظار البيانات. وبهذا المعنى، تُشبه البرمجة المصغرة إلى حد ما لفائف الورق في البيانو الآلي ، حيث تُمثل الثقوب المفتاح الذي يجب الضغط عليه.
قد يبدو الفرق بين المنطق المخصص والبرمجة الدقيقة بسيطًا؛ فالأول يستخدم نمطًا من الثنائيات والبوابات لفك تشفير التعليمات وإنتاج سلسلة من الإشارات، بينما يقوم الثاني بتشفير الإشارات كتعليمات دقيقة تُقرأ بالتسلسل لإنتاج النتائج نفسها. يكمن الاختلاف الجوهري في أن تغييرات الخطوات الفردية في تصميم المنطق المخصص تتطلب إعادة تصميم المكونات المادية. أما باستخدام البرمجة الدقيقة، فكل ما يتغير هو الكود المخزن في الذاكرة التي تحتوي على البرمجة الدقيقة أو جهاز التخزين الذي تُحمّل منه البرمجة الدقيقة إلى وحدة التحكم. هذا يُسهّل كثيرًا إصلاح المشكلات في نظام البرمجة الدقيقة. كما يعني أيضًا أنه لا يوجد حد فعلي لتعقيد التعليمات، فهو محدود فقط بكمية الذاكرة المُتاحة للاستخدام.
تُعدّ تعليمات لغة الآلة الخام للمعالج الطبقةَ الأدنى في بنية برمجيات الحاسوب . في المعالجات المُبرمجة بالبرامج الدقيقة، قد يتم جلب هذه التعليمات وفك تشفيرها وتنفيذها بواسطة هذه البرامج. ولتجنب الالتباس، يُفرّق بين كل عنصر متعلق بالبرامج الدقيقة باستخدام البادئة "micro" : التعليمات الدقيقة، والمُجمّع الدقيق، والمبرمج الدقيق، إلخ. [ 6 ]
قد تستخدم المعالجات الرقمية المعقدة أكثر من وحدة تحكم واحدة (ربما تعتمد على الشفرة الدقيقة) لتفويض المهام الفرعية التي يجب تنفيذها بشكل غير متزامن بالتوازي. على سبيل المثال، يحتوي جهاز VAX 9000 على وحدة IBox مدمجة لجلب التعليمات وفك تشفيرها، والتي تُسلّمها إلى وحدة EBox مُبرمجة بدقة لتنفيذها، [ 7 ] بينما يحتوي جهاز VAX 8800 على كلٍ من وحدتي IBox وEBox مُبرمجتين بدقة. [ 8 ]
لا يقوم المبرمجون ذوو المستوى العالي، أو حتى مبرمجو لغة التجميع ، عادةً برؤية أو تعديل الشفرة الدقيقة. على عكس شفرة الآلة، التي غالباً ما تحتفظ ببعض التوافق مع الإصدارات السابقة بين المعالجات المختلفة ضمن نفس العائلة، فإن الشفرة الدقيقة تعمل فقط على الدوائر الإلكترونية المصممة خصيصاً لها، لأنها تشكل جزءاً لا يتجزأ من تصميم المعالج نفسه.
تصميم
يكتب المهندسون عادةً الشفرة الدقيقة خلال مرحلة تصميم المعالج، ويخزنونها في ذاكرة للقراءة فقط (ROM) أو مصفوفة منطقية قابلة للبرمجة (PLA) [ 9 ] ، أو في مزيج منهما. [ 10 ] مع ذلك، توجد أيضًا أجهزة تُخزن فيها بعض أو كل الشفرة الدقيقة في ذاكرة الوصول العشوائي الثابتة (SRAM) أو ذاكرة الفلاش . يُشار إلى هذا تقليديًا باسم مخزن التحكم القابل للكتابة في سياق الحواسيب، والذي يمكن أن يكون إما ذاكرة للقراءة فقط أو ذاكرة للقراءة والكتابة . في الحالة الأخيرة، تقوم عملية تهيئة وحدة المعالجة المركزية بتحميل الشفرة الدقيقة إلى مخزن التحكم من وسيط تخزين آخر، مع إمكانية تعديل الشفرة الدقيقة لتصحيح الأخطاء في مجموعة التعليمات، أو لتنفيذ تعليمات جديدة للجهاز.
البرامج المصغرة
تتألف البرامج المصغرة من سلسلة من التعليمات المصغرة، التي تتحكم في وحدة المعالجة المركزية على مستوى أساسي للغاية من دوائر الأجهزة. على سبيل المثال، قد تحدد تعليمة مصغرة أفقية نموذجية واحدة العمليات التالية في وقت واحد:
- قم بتوصيل المسجل 1 بالجانب A من وحدة الحساب والمنطق (ALU).
- قم بتوصيل المسجل 7 بالجانب B من وحدة الحساب والمنطق (ALU).
- اضبط وحدة الحساب والمنطق (ALU) لإجراء عملية جمع باستخدام نظام المتمم الثنائي
- اضبط مدخل الحمل لوحدة الحساب والمنطق على الصفر
- قم بتوصيل مخرج وحدة الحساب والمنطق (ALU) بالمسجل رقم 8
- قم بتحديث رموز الحالة من علامات حالة وحدة الحساب والمنطق ( سالبة ، صفر ، تجاوز السعة ، وحمل )
- انتقل إلى عنوان محدد في وحدة التحكم الدقيقة (μPC) لتنفيذ التعليمات الدقيقة التالية
للتحكم في جميع وظائف المعالج في دورة واحدة، غالبًا ما يتجاوز عرض التعليمات الدقيقة 50 بتًا؛ على سبيل المثال، 128 بتًا في جهاز 360/85 المزود بخاصية المحاكاة. تُصمم البرامج الدقيقة بعناية وتُحسّن لتحقيق أسرع تنفيذ ممكن، إذ أن بطء البرنامج الدقيق يؤدي إلى بطء تنفيذ تعليمات الجهاز وتراجع أداء برامج التطبيقات المرتبطة التي تستخدم هذه التعليمات.
التبرير
طُوِّرت الشفرة المصغرة في الأصل كطريقة أبسط لتطوير منطق التحكم في الحاسوب. في البداية، كانت مجموعات تعليمات وحدة المعالجة المركزية مُدمجة بشكل ثابت . وكانت كل خطوة لازمة لجلب تعليمات الآلة وفك تشفيرها وتنفيذها (بما في ذلك أي حسابات لعناوين المعاملات، وعمليات القراءة والكتابة) تُتحكم بها مباشرةً بواسطة منطق توافقي ودائرة آلة حالة تسلسلية بسيطة نسبيًا . ورغم كفاءة هذه المعالجات المُدمجة بشكل ثابت، إلا أن الحاجة إلى مجموعات تعليمات قوية ذات عنونة متعددة الخطوات وعمليات معقدة ( انظر أدناه ) جعلت تصميمها وتصحيح أخطائها أمرًا صعبًا؛ كما أن التعليمات عالية التشفير ومتفاوتة الطول تُسهم في ذلك أيضًا، خاصةً عند استخدام تشفيرات غير منتظمة.
سهّلت البرمجة الدقيقة عملية تصميم المعالج، إذ سمحت بتحديد جزء كبير من سلوك المعالج ونموذج برمجته عبر إجراءات برمجية دقيقة بدلاً من الدوائر المخصصة. حتى في المراحل المتأخرة من عملية التصميم، كان من السهل تغيير البرمجة الدقيقة، بينما كان تغيير تصميمات وحدة المعالجة المركزية ذات الدوائر الثابتة أمراً بالغ الصعوبة. وبالتالي، سهّل ذلك تصميم وحدة المعالجة المركزية بشكل كبير.
منذ أربعينيات القرن العشرين وحتى أواخر سبعينياته، كان جزء كبير من البرمجة يُنفذ بلغة التجميع ؛ ولأن التعليمات عالية المستوى تعني إنتاجية أعلى للمبرمج، فقد كانت إحدى أهم مزايا الشفرة المصغرة هي سهولة تعريف تعليمات الآلة القوية. ويُعدّ تصميم "لغة عالية المستوى قابلة للتنفيذ المباشر" امتدادًا لهذا النهج، حيث تُنفذ كل عبارة من لغة عالية المستوى مثل PL/I بالكامل وبشكل مباشر بواسطة الشفرة المصغرة، دون الحاجة إلى تجميع. ويُعدّ مشروع أنظمة IBM المستقبلية ومعالج Data General Fountainhead مثالين على ذلك. خلال سبعينيات القرن العشرين، نمت سرعات وحدة المعالجة المركزية بوتيرة أسرع من سرعات الذاكرة، واستُخدمت تقنيات عديدة مثل نقل كتل الذاكرة ، وجلب البيانات المسبق من الذاكرة ، وذاكرة التخزين المؤقت متعددة المستويات للتخفيف من هذه المشكلة. وقد ساهمت تعليمات الآلة عالية المستوى، التي أصبحت ممكنة بفضل الشفرة المصغرة، في تحسين الأداء بشكل أكبر، حيث تتطلب عدد أقل من تعليمات الآلة الأكثر تعقيدًا نطاقًا تردديًا أقل للذاكرة. على سبيل المثال، يمكن تنفيذ عملية على سلسلة نصية كتعليمة آلة واحدة، مما يُجنّب عمليات جلب التعليمات المتعددة.
تضمنت البنى التي تستخدم مجموعات تعليمات مُنفذة بواسطة برامج دقيقة معقدة نظام IBM System/360 ومعالج Digital Equipment Corporation VAX . وقد أُطلق على نهج مجموعات التعليمات المُنفذة بواسطة برامج دقيقة متزايدة التعقيد اسم حاسوب مجموعة التعليمات المعقدة (CISC). ويتمثل نهج بديل، يُستخدم في العديد من المعالجات الدقيقة ، في استخدام مصفوفة منطقية قابلة للبرمجة (PLA) أو ذاكرة للقراءة فقط (ROM) (بدلاً من المنطق التوافقي) بشكل أساسي لفك تشفير التعليمات، وترك آلة حالة بسيطة (بدون الكثير من البرامج الدقيقة، أو بدونها) تقوم بمعظم عملية التسلسل. ويُعد معالج MOS Technology 6502 مثالاً على معالج دقيق يستخدم مصفوفة منطقية قابلة للبرمجة لفك تشفير التعليمات وتسلسلها. ويمكن رؤية المصفوفة المنطقية القابلة للبرمجة في الصور المجهرية للشريحة، [ 11 ] ويمكن رؤية طريقة عملها في محاكاة على مستوى الترانزستور .
لا تزال البرمجة الدقيقة مستخدمة في تصميمات المعالجات المركزية الحديثة. في بعض الحالات، بعد تصحيح الأخطاء في الشفرة الدقيقة أثناء المحاكاة، تُستبدل وظائف المنطق بذاكرة التحكم. غالبًا ما تكون وظائف المنطق أسرع وأقل تكلفة من ذاكرة البرمجة الدقيقة المكافئة.
فوائد
تعمل البرامج المصغرة للمعالج على بنية أكثر بدائية، ومختلفة تمامًا، وأكثر ارتباطًا بالأجهزة من تعليمات التجميع التي يراها المبرمجون العاديون. وبالتنسيق مع الأجهزة، تُنفذ الشفرة المصغرة البنية التي يراها المبرمج. ولا يشترط أن تكون هناك علاقة ثابتة بين الأجهزة الأساسية والبنية المرئية. وهذا يُسهّل تنفيذ بنية مجموعة تعليمات معينة على نطاق واسع من البنى المصغرة للأجهزة الأساسية.
يتميز نظام IBM System/360 ببنية 32 بت مع 16 مسجلاً للأغراض العامة، إلا أن معظم تطبيقات System/360 تستخدم مكونات مادية تُنفذ بنية دقيقة أساسية أبسط بكثير؛ فعلى سبيل المثال، يحتوي طراز System/360 30 على مسارات بيانات 8 بت إلى وحدة الحساب والمنطق (ALU) والذاكرة الرئيسية، ويُنفذ المسجلات للأغراض العامة في وحدة خاصة من ذاكرة أساسية عالية السرعة . أما طراز System/360 40، فيحتوي على مسارات بيانات 8 بت إلى وحدة الحساب والمنطق ومسارات بيانات 16 بت إلى الذاكرة الرئيسية، ويُنفذ المسجلات للأغراض العامة أيضًا في وحدة خاصة من ذاكرة أساسية عالية السرعة. بينما يحتوي الطراز 50 على مسارات بيانات كاملة 32 بت، ويُنفذ المسجلات للأغراض العامة في وحدة خاصة من ذاكرة أساسية عالية السرعة. [ 12 ] أما الطرازات من 65 إلى 195، فتتميز بمسارات بيانات أكبر، وتُنفذ المسجلات للأغراض العامة في دوائر ترانزستور أسرع. وبهذه الطريقة، مكّنت البرمجة الدقيقة شركة IBM من تصميم العديد من نماذج System/360 ذات مكونات مادية مختلفة بشكل كبير، وتغطي نطاقًا واسعًا من التكلفة والأداء، مع ضمان توافقها جميعًا من الناحية المعمارية. وهذا يقلل بشكل كبير من عدد برامج النظام الفريدة التي يجب كتابتها لكل نموذج.
يُعدّ جهاز PDP-11 من شركة Digital Equipment Corporation جهازًا ذا بنية 16 بت، مزودًا بثمانية سجلات للأغراض العامة. طُرح في عام 1970، وظلّت بنيته الأساسية دون تغيير طوال التسعينيات. الجهاز الأصلي فقط من هذه السلسلة لم يكن مُبرمجًا ببرنامج دقيق. بين عامي 1972 و1976، تراوح عرض البرنامج الدقيق الأساسي لجهاز PDP-11 بين 22 و64 بتًا. وتراوح طول البرنامج الدقيق بين 256 و1024 كلمة، حيث يرتبط طول البرنامج الدقيق الأكبر عمومًا بعرض أضيق. [ 13 ] يشير هذا التنوع في عروض البرامج الدقيقة إلى وجود سبعة تطبيقات مختلفة على الأقل لجهاز PDP-11 في غضون أربع سنوات فقط.
استخدمت شركة ديجيتال إكويبمنت نهجًا مشابهًا في عائلة حواسيب VAX. ونتيجةً لذلك، تستخدم معالجات VAX المختلفة بنى دقيقة مختلفة، إلا أن البنية الظاهرة للمبرمج لا تتغير.
كما أن البرمجة الدقيقة تقلل من تكلفة التغييرات الميدانية لتصحيح العيوب ( الأخطاء ) في المعالج؛ ويمكن في كثير من الأحيان إصلاح الخطأ عن طريق استبدال جزء من البرنامج الدقيق بدلاً من إجراء تغييرات على منطق الأجهزة والأسلاك.
تاريخ
أمثلة مبكرة
استخدم حاسوب ACE، الذي صممه آلان تورينج عام 1946، البرمجة الدقيقة. [ 14 ]
في عام 1947، قدّم تصميم حاسوب MIT Whirlwind مفهوم مخزن التحكم كوسيلة لتبسيط تصميم الحواسيب وتجاوز الأساليب المخصصة . مخزن التحكم عبارة عن مصفوفة ثنائية : شبكة ثنائية الأبعاد، حيث يستقبل أحد أبعادها "نبضات التحكم الزمنية" من الساعة الداخلية لوحدة المعالجة المركزية، بينما يتصل البعد الآخر بإشارات التحكم على البوابات والدوائر الأخرى. يقوم "موزع النبضات" بأخذ النبضات المولدة من ساعة وحدة المعالجة المركزية وتقسيمها إلى ثماني نبضات زمنية منفصلة، تُفعّل كل منها صفًا مختلفًا من الشبكة. عند تفعيل الصف، يتم تفعيل إشارات التحكم المتصلة به. [ 15 ]
في عام ١٩٥١، طوّر موريس ويلكس [ ١٦ ] هذا المفهوم بإضافة التنفيذ المشروط ، وهو مفهوم مشابه للشرط في برمجيات الحاسوب. تكوّن تطبيقه الأولي من مصفوفتين: الأولى تُولّد إشارات على غرار مخزن التحكم Whirlwind، بينما تُحدّد الثانية صف الإشارات (كلمة تعليمات البرنامج المصغر، إن صح التعبير) الذي سيتم استدعاؤه في الدورة التالية. تم تطبيق الشروط من خلال توفير آلية تُمكّن سطرًا واحدًا في مخزن التحكم من الاختيار من بين البدائل في المصفوفة الثانية. هذا جعل إشارات التحكم مشروطة بالإشارة الداخلية المُكتشفة. وقد صاغ ويلكس مصطلح البرمجة المصغرة لوصف هذه الخاصية وتمييزها عن مخزن التحكم البسيط.
ذا 360
ظلّت البرمجة الدقيقة نادرة نسبيًا في تصميم الحواسيب، إذ لم تكن تكلفة ذاكرة القراءة فقط (ROM) اللازمة لتخزين الشفرة تختلف اختلافًا كبيرًا عن تكلفة منطق التحكم المخصص. تغيّر هذا الوضع في أوائل الستينيات مع طرح ذاكرة النواة (core memory) ووحدة النواة (core rope) المنتجة بكميات كبيرة، والتي كانت أقل تكلفة بكثير من المنطق المخصص القائم على مصفوفات الثنائيات أو حلول مماثلة. وكانت شركة IBM أول من استفاد من ذلك فعليًا في سلسلة System/360 عام 1964. وقد مكّن هذا الأجهزة من امتلاك مجموعة تعليمات معقدة للغاية، بما في ذلك عمليات تُطابق بنيات لغات البرمجة عالية المستوى، مثل تنسيق القيم الثنائية كسلاسل عشرية، وتشفير سلسلة الخطوات الداخلية المعقدة اللازمة لهذه المهمة في ذاكرة منخفضة التكلفة. [ 17 ]
لكن القيمة الحقيقية لسلسلة 360 تكمن في إمكانية بناء سلسلة من الأجهزة ذات مكونات داخلية مختلفة تمامًا، ومع ذلك تعمل بنفس بنية مجموعة التعليمات (ISA). ففي جهاز منخفض المواصفات، قد يُستخدم مُعالج حساب ومنطق (ALU) ذو 8 بتات يتطلب دورات متعددة لإتمام عملية جمع واحدة لعدد 32 بت، بينما قد يحتوي جهاز عالي المواصفات على مُعالج حساب ومنطق كامل ذو 32 بت يُجري عملية الجمع نفسها في دورة واحدة. يمكن تطبيق هذه الاختلافات في منطق التحكم، لكن تكلفة تنفيذ مُفكِّك شفرة مختلف تمامًا لكل جهاز ستكون باهظة. استخدام الشفرة الدقيقة يعني أن التغيير الوحيد هو في الشفرة الموجودة في ذاكرة القراءة فقط (ROM). على سبيل المثال، قد يحتوي جهاز ما على وحدة حساب الفاصلة العائمة ، وبالتالي قد تكون شفرته الدقيقة لضرب عددين بضعة أسطر فقط، بينما في نفس الجهاز بدون وحدة حساب الفاصلة العائمة، سيكون هذا برنامجًا يُجري العملية نفسها باستخدام عمليات جمع متعددة، والتغيير الوحيد هو في ذاكرة القراءة فقط. [ 17 ]
كانت نتيجة هذا التصميم تمكين العملاء من استخدام نموذج منخفض التكلفة من هذه العائلة لتطوير برامجهم، مع العلم أنه في حال الحاجة إلى أداء أفضل، يمكنهم الترقية إلى إصدار أسرع دون أي تغييرات أخرى. وقد ساهم ذلك في خفض تكلفة الدخول إلى السوق، وحقق جهاز 360 نجاحًا باهرًا. وبحلول نهاية العقد، أصبح استخدام الشفرة المصغرة أمرًا لا غنى عنه في صناعة الحواسيب المركزية.
التقدم في الخط
كانت الحواسيب الصغيرة المبكرة بسيطة للغاية لدرجة أنها لم تتطلب استخدام الشفرة الدقيقة، وكانت أقرب إلى الحواسيب المركزية القديمة من حيث مجموعات التعليمات وطريقة فك تشفيرها. ولكن سرعان ما بدأ مصمموها باستخدام دوائر متكاملة أكثر قوة سمحت بإنشاء مجموعات تعليمات أكثر تعقيدًا. وبحلول منتصف سبعينيات القرن العشرين، كانت معظم الحواسيب الصغيرة والحواسيب فائقة الصغر الجديدة تستخدم الشفرة الدقيقة أيضًا، مثل معظم طرازات PDP-11 ، والأهم من ذلك، معظم طرازات VAX ، التي تضمنت تعليمات عالية المستوى لا تختلف كثيرًا عن تلك الموجودة في جهاز 360. [ 18 ]
شهدت المعالجات الدقيقة تطورًا أساسيًا مماثلًا . كانت التصاميم المبكرة بسيطة للغاية، حتى أن التصاميم الأقوى ذات 8 بت في منتصف سبعينيات القرن الماضي، مثل Zilog Z80، احتوت على مجموعات تعليمات بسيطة بما يكفي لتنفيذها في منطق مخصص. في ذلك الوقت، أصبح من الممكن دمج منطق التحكم في نفس شريحة المعالج، مما قلل من أهمية فرق التكلفة بين ذاكرة القراءة فقط (ROM) والمنطق. مع ذلك، لم يمضِ وقت طويل حتى واجهت هذه الشركات مشكلة تقديم تصاميم ذات أداء أعلى مع الحفاظ على التوافق مع الإصدارات السابقة . من بين الأمثلة المبكرة على استخدام الشفرة المصغرة في المعالجات الدقيقة معالج Intel 8086. [ 5 ]
يُعدّ معالج موتورولا 68000 من أبرز تطبيقات البرمجة الدقيقة في المعالجات الدقيقة . فقد وفّر مجموعة تعليمات متعامدة للغاية مع مجموعة واسعة من أنماط العنونة ، وكلها مُنفّذة باستخدام البرمجة الدقيقة. لكن هذا لم يأتِ دون ثمن، فبحسب مقالات سابقة، يُشكّل نظام البرمجة الدقيقة حوالي 20% من مساحة سطح الشريحة (وبالتالي تكلفتها) [ 19 ] ، وتشير تقديرات لاحقة إلى أن حوالي 23000 من ترانزستورات المعالج البالغ عددها 68000 كانت جزءًا من نظام البرمجة الدقيقة.
يدخل RISC
بينما استمرت الشركات في التنافس على تعقيد مجموعات التعليمات الخاصة بها، ولم يكن استخدام الشفرة المصغرة لتنفيذها موضع شك، في منتصف سبعينيات القرن الماضي، أثار مشروع داخلي في شركة IBM تساؤلات جدية حول المفهوم برمته. ففي إطار مشروع لتطوير مقسم هاتف رقمي عالي الأداء ، بدأ فريق بقيادة جون كوك بدراسة كميات هائلة من بيانات الأداء من برامج عميلهم 360 (و System/370 ). قادهم هذا إلى ملاحظة نمط غريب: عندما تُقدم مجموعة تعليمات المعالج (ISA) إصدارات متعددة من تعليمة ما، كان المُترجم يستخدم دائمًا الإصدار الأبسط، بدلًا من الإصدار الذي يُمثل الشفرة بشكل مباشر. اكتشفوا أن السبب في ذلك هو أن هذه التعليمات تُنفذ دائمًا في الأجهزة، وبالتالي تعمل بأسرع ما يمكن. قد يُوفر استخدام التعليمة الأخرى أداءً أفضل على بعض الأجهزة، ولكن لم تكن هناك طريقة لمعرفة الجهاز الذي تُنفذ عليه. هذا يُفقد استخدام الشفرة المصغرة جدواه الأساسية، وهي إخفاء هذه الفروقات. [ 20 ]
توصل الفريق إلى استنتاج جذري: "إن فرض التعليمات البرمجية الدقيقة بين الكمبيوتر ومستخدميه يفرض تكلفة إضافية باهظة في تنفيذ التعليمات الأكثر تكرارًا." [ 20 ]
أسفر هذا الاكتشاف عن ما يُعرف اليوم بمفهوم RISC . يتم تقليص حجم محرك التعليمات البرمجية الدقيقة المعقد وذاكرة القراءة فقط (ROM) المرتبطة به، أو حتى إلغاؤه تمامًا، وتُخصص هذه الدوائر بدلاً من ذلك لوظائف مثل سجلات إضافية أو وحدة حساب ومنطق (ALU) أوسع، مما يُحسّن أداء كل برنامج. عند الحاجة إلى تسلسلات معقدة من التعليمات، يُترك ذلك للمُترجم، وهو الغرض الأساسي من استخدام المُترجم. سرعان ما تبنى باحثون جامعيون في كاليفورنيا هذا المفهوم الأساسي، حيث أشارت المحاكاة إلى أن هذه التصاميم ستتفوق بسهولة حتى على أسرع التصاميم التقليدية. وكان أحد هذه المشاريع، في جامعة كاليفورنيا، بيركلي ، هو الذي قدم مصطلح RISC.
استقبلت الصناعة مفهوم RISC بالحيرة والعداء، بما في ذلك مقالٌ شهيرٌ استهزأ به فريق VAX في شركة Digital. [ 21 ] تمحورت إحدى نقاط الخلاف الرئيسية حول أن تنفيذ التعليمات خارج المعالج يعني قضاء وقتٍ أطول بكثير في قراءة تلك التعليمات من الذاكرة، مما يُبطئ الأداء العام بغض النظر عن سرعة وحدة المعالجة المركزية نفسها. [ 21 ] وأشار المؤيدون إلى أن عمليات المحاكاة أظهرت بوضوح أن عدد التعليمات لم يكن أكبر بكثير، خاصةً عند النظر إلى الكود المُترجم. [ 20 ]
استمر الجدل محتدمًا حتى ظهور أولى تصميمات RISC التجارية في النصف الثاني من ثمانينيات القرن العشرين، والتي تفوقت بسهولة على أكثر التصميمات تعقيدًا من الشركات الأخرى. وبحلول أواخر الثمانينيات، انتهى الجدل؛ حتى شركة DEC تخلت عن استخدام الشفرة الدقيقة في تصميمات DEC Alpha ، وتحولت معالجات CISC إلى استخدام الدوائر الإلكترونية الثابتة، بدلًا من الشفرة الدقيقة، لأداء العديد من الوظائف. على سبيل المثال، يستخدم معالج Intel 80486 الدوائر الإلكترونية الثابتة لجلب التعليمات وفك تشفيرها، ويستخدم الشفرة الدقيقة فقط لتنفيذ التعليمات؛ إذ تتطلب تعليمات نقل البيانات بين المسجلات والعمليات الحسابية تعليمة دقيقة واحدة فقط، مما يسمح بإكمالها في دورة ساعة واحدة. [ 22 ] أما في معالج Pentium Pro ، فتقوم وحدة جلب التعليمات وفك تشفيرها بجلب التعليمات وفك تشفيرها إلى سلسلة من العمليات الدقيقة التي تُمرر إلى وحدة التنفيذ، التي بدورها تُجدول هذه العمليات وتنفذها، وقد تفعل ذلك بترتيب غير متسلسل . تُنفذ التعليمات المعقدة بواسطة شفرة دقيقة تتكون من تسلسلات محددة مسبقًا من العمليات الدقيقة. [ 23 ]
تستخدم بعض تصميمات المعالجات لغة الآلة التي تعمل في وضع خاص، مع تعليمات خاصة متاحة فقط في هذا الوضع، والتي تتمتع بإمكانية الوصول إلى مكونات مادية خاصة بالمعالج، وذلك لتنفيذ بعض الميزات الأساسية لمجموعة التعليمات. استخدم معالج DEC Alpha، وهو تصميم RISC خالص، لغة PALcode لتنفيذ ميزات مثل معالجة أخطاء مخزن الترجمة المؤقت (TLB) ومعالجة المقاطعات، [ 24 ] بالإضافة إلى توفير تعليمات لأنظمة Alpha التي تعمل بنظام OpenVMS ، تتطلب الوصول إلى الذاكرة المتشابكة، وهي تعليمات مشابهة لتلك التي توفرها بنية VAX . [ 24 ] تستخدم وحدات المعالجة المركزية CMOS IBM System/390 ، بدءًا من معالج G4، ووحدات المعالجة المركزية z/Architecture لغة millicode لتنفيذ بعض التعليمات. [ 25 ]
أمثلة
- يستخدم المحرك التحليلي الذي تصوره تشارلز باباج أوتادًا يتم إدخالها في أسطوانات دوارة لتخزين إجراءاته الداخلية.
- يُقال أن جهاز EMIDEC 1100 [ 26 ] يستخدم مخزن تحكم سلكي يتكون من أسلاك تمر عبر نوى الفريت، والمعروفة باسم "الأربطة".
- معظم طرازات سلسلة IBM System/360 مبرمجة برمجياً دقيقاً:
- يتميز طراز 25 عن غيره من طرازات System/360 باستخدامه أول 16 كيلوبايت من الذاكرة الأساسية لتخزين بيانات التحكم الخاصة بالبرنامج المصغر. يستخدم طراز 2025 بنية دقيقة 16 بت مع سبع كلمات تحكم (أو تعليمات دقيقة). بعد صيانة النظام أو عند تغيير وضع التشغيل، يتم تحميل الشفرة الدقيقة من قارئ البطاقات أو الشريط أو أي جهاز آخر. [ 27 ] يتم تحميل محاكاة IBM 1410 لهذا الطراز بهذه الطريقة.
- يستخدم الطراز 30 بنية دقيقة 8 بت مع عدد قليل من سجلات الأجهزة؛ حيث تتم محاكاة كل ما يراه المبرمج بواسطة البرنامج المصغر. كما يُخزَّن الكود المصغر لهذا الطراز على بطاقات مثقبة خاصة، تُخزَّن داخل الجهاز في قارئ مخصص لكل بطاقة، يُسمى وحدات "CROS" (وحدة تخزين للقراءة فقط بالمكثف). [ 28 ] : 2-5. تُضاف وحدة CROS أخرى للأجهزة المطلوبة مع محاكاة 1401/1440/1460 [ 28 ] : 4-29 وللأجهزة المطلوبة مع محاكاة 1620. [ 28 ] : 4-75
- يستخدم الطراز 40 كلمات تحكم 56 بت. يُنفذ صندوق 2040 كلاً من المعالج الرئيسي لنظام System/360 وقناة الإرسال المتعدد (معالج الإدخال/الإخراج). يستخدم هذا الطراز قارئات TROS مخصصة مشابهة لوحدات CROS ، ولكن مع لاقط حثي (وحدة تخزين للقراءة فقط باستخدام المحول).
- يحتوي الطراز 50 على مسارين داخليين للبيانات يعملان بالتوازي: مسار بيانات 32 بت يُستخدم للعمليات الحسابية، ومسار بيانات 8 بت يُستخدم في بعض العمليات المنطقية. ويستخدم مخزن التحكم تعليمات دقيقة 90 بت.
- يتميز جهاز Model 85 بوحدة جلب التعليمات (I-unit) ووحدة التنفيذ (E-unit) منفصلتين لتوفير أداء عالٍ. يتم التحكم في وحدة جلب التعليمات بواسطة مكونات مادية، بينما يتم برمجة وحدة التنفيذ بواسطة برامج دقيقة؛ ويبلغ عرض كلمات التحكم 108 بت في جهاز 360/85 الأساسي، ويزداد هذا العرض في حال تثبيت ميزة المحاكاة.
- يتم برمجة جهاز NCR 315 باستخدام نوى الفريت الموصولة يدويًا ( ذاكرة قراءة فقط ) والتي يتم نبضها بواسطة جهاز تسلسل مع تنفيذ مشروط. يتم تمكين الأسلاك الموجهة عبر النوى لعناصر البيانات والمنطق المختلفة في المعالج.
- معالج PDP-9 من شركة Digital Equipment Corporation ، ومعالجات KL10 وKS10 من PDP-10 ، ومعالجات PDP-11 باستثناء PDP-11/20، كلها مبرمجة برمجياً دقيقاً. [ 29 ]
- معظم الحواسيب الصغيرة من نوع Data General Eclipse مُبرمجة ببرمجة دقيقة. وقد تم تفصيل مهمة كتابة الشفرة الدقيقة لجهاز Eclipse MV/8000 في كتاب "روح آلة جديدة" الحائز على جائزة بوليتزر .
- العديد من أنظمة شركة بوروز مبرمجة برمجياً دقيقاً:
- يقوم المعالج الدقيق B700 بتنفيذ تعليمات التطبيق باستخدام تسلسلات من التعليمات الدقيقة ذات 16 بت المخزنة في الذاكرة الرئيسية؛ كل منها إما عملية تحميل سجل أو مُرتبط بتعليمات "نانو كود" واحدة ذات 56 بت مخزنة في ذاكرة القراءة فقط. هذا يسمح لأجهزة بسيطة نسبيًا بالعمل إما كوحدة تحكم طرفية للحاسوب المركزي أو أن تُغلف كحاسوب مستقل.
- يُنفذ جهاز B1700 بمكونات مادية مختلفة جذريًا، بما في ذلك ذاكرة رئيسية قابلة للعنونة على مستوى البت ، ولكنه يتميز ببنية متعددة الطبقات مماثلة. يقوم نظام التشغيل بتحميل المفسر مسبقًا للغة المطلوبة. توفر هذه المفسرات آلات افتراضية مختلفة للغات مثل كوبول وفورتران وغيرها.
- أنتجت شركة مايكروداتا حواسيب يمكن للمستخدم الوصول إلى شفرتها البرمجية الدقيقة، مما يسمح بإنشاء تعليمات مخصصة على مستوى لغة التجميع. ويستفيد نظام التشغيل "رياليتي" من مايكروداتا بشكل كبير من هذه الإمكانية.
- استخدمت محطة عمل زيروكس ألتو تصميمًا يعتمد على البرمجة الدقيقة، ولكن على عكس العديد من أجهزة الكمبيوتر، فإن محرك البرمجة الدقيقة ليس مخفيًا عن المبرمج في تصميم متعدد الطبقات. تستفيد التطبيقات من ذلك لتسريع الأداء.
- يُوصَف نظام IBM System/38 بأنه يحتوي على كلٍّ من الشفرة الدقيقة الأفقية والرأسية . [ 30 ] عمليًا، يُنفِّذ المعالج بنية مجموعة تعليمات تُسمى واجهة البرمجة الدقيقة الداخلية (IMPI) باستخدام تنسيق الشفرة الدقيقة الأفقية. أما طبقة الشفرة الدقيقة الرأسية، فتُنفِّذ مجموعة تعليمات واجهة الآلة (MI) المستقلة عن العتاد في نظام System/38، وذلك بترجمة شفرة MI إلى شفرة IMPI وتنفيذها. قبل طرح سلسلة معالجات IBM RS64 ، استخدمت أنظمة IBM AS/400 المبكرة البنية نفسها. [ 31 ]
- يستخدم معالج الواقع المساعد (RCP) في جهاز نينتندو 64 ، والذي يعمل كوحدة معالجة الرسومات والصوت، الشفرة البرمجية الدقيقة؛ حيث يُمكن إضافة تأثيرات جديدة أو تعديل المعالج لتحقيق المخرجات المطلوبة. من الأمثلة البارزة على الشفرة البرمجية الدقيقة المُخصصة لمعالج الواقع المساعد: الرسومات عالية الدقة، ومحركات الجسيمات، ومسافات العرض غير المحدودة الموجودة في ألعاب إنديانا جونز والآلة الجهنمية ، وحرب النجوم: سرب المارقين ، وحرب النجوم: معركة نابو من تطوير فاكتور 5 ؛ [ 32 ] [ 33 ] وتشغيل الفيديو كامل الحركة الموجود في لعبة ريزدنت إيفل 2 من تطوير أنجيل ستوديوز . [ 34 ]
- وحدات المتجهات VU0 و VU1 في جهاز سوني بلاي ستيشن 2 قابلة للبرمجة الدقيقة؛ في الواقع، لا يمكن الوصول إلى VU1 إلا من خلال التعليمات البرمجية الدقيقة للأجيال القليلة الأولى من SDK.
- تُعد أجهزة MicroCore Labs MCL86 (المؤرشفة في 3 نوفمبر 2016 ) و MCL51 (المؤرشفة في 2 فبراير 2017 ) و MCL65 (المؤرشفة في 21 ديسمبر 2018 ) أمثلة على تطبيقات التسلسل الدقيق "الرأسي" عالي التشفير لأجهزة Intel 8086/8088 و8051 وMOS 6502.
- كان نظام الحاسوب Meta 4 Series 16 من شركة Digital Scientific Corporation نظامًا قابلًا للبرمجة الدقيقة من قِبل المستخدم، وقد طُرح لأول مرة عام 1970. تميزت الشفرة الدقيقة بنمط رأسي في الغالب، مع تعليمات دقيقة من 32 بت. [ 35 ] كانت التعليمات تُخزن على لوحات برمجة قابلة للاستبدال، مزودة بشبكة من مواقع البتات. كانت البتات التي قيمتها 1 (واحد) تُمثل بمربعات معدنية صغيرة تستشعرها مكبرات الصوت، بينما كانت البتات التي قيمتها صفر (صفر) تُمثل بغياب هذه المربعات. [ 36 ] كان بالإمكان تهيئة النظام بسعة تخزين دقيقة تصل إلى 4 كيلوبايت، كل كلمة منها 16 بت. ومن بين منتجات Digital Scientific، كان هناك محاكي لجهاز IBM 1130. [ 37 ] [ 38 ]
- المعالج الدقيق MCP -1600 هو معالج دقيق صنعته شركة ويسترن ديجيتال من عام 1975 وحتى أوائل الثمانينيات. وقد تم استخدامه لتنفيذ ثلاثة بنى حاسوبية مختلفة في الشفرة الدقيقة: Pascal MicroEngine و WD16 و DEC LSI-11 ، وهو نسخة مخفضة التكلفة من PDP-11. [ 39 ]
- معظم معالجات x86 مُبرمجة ببرمجة دقيقة، حيث تُستخدم هذه البرمجة لتنفيذ بعض أو كل العمليات. [ 40 ] [ 41 ] وقد طبقت معالجات x86 برمجة دقيقة قابلة للتصحيح (عبر BIOS أو نظام التشغيل ) منذ معمارية Intel P6 الدقيقة ، ومعمارية AMD K8 الدقيقة ، ومعمارية Via Isaiah الدقيقة . [ 42 ] تدعم معمارية AMD K7 الدقيقة تحميل تصحيحات البرمجة الدقيقة، إلا أن AMD لم تُصدر هذه التصحيحات رسميًا، كما أنها غير مدعومة رسميًا بسبب نقص الاختبارات في BIST . [ 43 ] وقد طبقت هذه المعالجات ذاكرة ROM للبرمجة الدقيقة وذاكرة SRAM لتصحيحات البرمجة الدقيقة في رقائقها.
- تعتمد العديد من محولات الرسومات ووحدات التحكم في واجهة الشبكة ومحولات المضيف على البرمجة الدقيقة. عادةً ما تكون بطاقات التوسعة ISA القديمة مبرمجة بشكل ثابت؛ ومع ظهور ناقلات PCI و AGP و PCIe اللاحقة، يمكن لبطاقات التوسعة الأحدث تنفيذ برمجة دقيقة قابلة للتحديث .
تطبيق
تُوفّر كل تعليمة دقيقة في البرنامج المصغر البتات التي تتحكم في العناصر الوظيفية التي تُكوّن وحدة المعالجة المركزية داخليًا. وتكمن ميزة هذا البرنامج على وحدة المعالجة المركزية التقليدية في أن التحكم الداخلي في وحدة المعالجة المركزية يُصبح شكلًا متخصصًا من أشكال برامج الحاسوب. وبذلك، يُحوّل البرنامج المصغر تحديًا معقدًا في التصميم الإلكتروني (التحكم في وحدة المعالجة المركزية) إلى تحدٍ برمجي أقل تعقيدًا. وللاستفادة من ذلك، تُقسّم وحدة المعالجة المركزية إلى عدة أجزاء:
- قد تقوم وحدة I بفك تشفير التعليمات في الأجهزة وتحديد عنوان الشفرة الدقيقة لمعالجة التعليمات بالتوازي مع وحدة E.
- يختار المُسلسل الصغير الكلمة التالية من مخزن التحكم. أما المُسلسل فهو في الأساس عداد، ولكنه عادةً ما يمتلك آلية للانتقال إلى جزء مختلف من مخزن التحكم بناءً على بيانات معينة، عادةً ما تكون من سجل التعليمات ، ودائمًا ما تكون جزءًا من مخزن التحكم. أبسط أنواع المُسلسل هو مجرد سجل مُحمّل من بضعة بتات من مخزن التحكم.
- مجموعة السجلات هي ذاكرة سريعة تحتوي على بيانات وحدة المعالجة المركزية. قد تتضمن سجلات مرئية لبرامج التطبيقات، مثل سجلات الأغراض العامة وعداد البرنامج ، وقد تتضمن أيضًا سجلات أخرى يصعب على مبرمج التطبيق الوصول إليها. غالبًا ما تكون مجموعة السجلات ملف سجلات ثلاثي المنافذ ؛ أي أنه يمكن قراءة سجلين وكتابة سجل ثالث في الوقت نفسه.
- تقوم وحدة الحساب والمنطق بإجراء العمليات الحسابية، وعادةً ما تشمل الجمع والنفي المنطقي والإزاحة إلى اليمين وعملية AND المنطقية. كما أنها غالباً ما تؤدي وظائف أخرى أيضاً.
قد يحتوي المعالج أيضًا على سجل عناوين الذاكرة وسجل بيانات الذاكرة ، يُستخدمان للوصول إلى وحدة التخزين الرئيسية للحاسوب . تُشكل هذه العناصر معًا " وحدة تنفيذ ". تحتوي معظم وحدات المعالجة المركزية الحديثة على عدة وحدات تنفيذ. حتى الحواسيب البسيطة عادةً ما تحتوي على وحدة لقراءة وكتابة الذاكرة، وأخرى لتنفيذ تعليمات المستخدم البرمجية. غالبًا ما تُجمع هذه العناصر في شريحة واحدة. تأتي هذه الشريحة بعرض ثابت يُشكل "شريحة" عبر وحدة التنفيذ. تُعرف هذه الشرائح باسم شرائح " شريحة البت ". تُعد عائلة AMD Am2900 من أشهر الأمثلة على عناصر شريحة البت. [ 44 ] ترتبط أجزاء وحدات التنفيذ ووحدات التنفيذ ككل بواسطة حزمة من الأسلاك تُسمى ناقل البيانات .
يُطوّر المبرمجون البرامج المصغّرة باستخدام أدوات برمجية أساسية. يسمح المُجمِّع المصغّر للمبرمج بتعريف جدول البتات رمزياً. ونظراً لارتباطه الوثيق بالبنية الأساسية، فإنّ "البرنامج المصغّر له خصائص عديدة تجعل توليده باستخدام المُترجم أمراً صعباً". [ 1 ] يهدف برنامج المحاكاة إلى تنفيذ البتات بنفس طريقة عمل الدوائر الإلكترونية، مما يتيح حرية أكبر بكثير لتصحيح أخطاء البرنامج المصغّر. بعد الانتهاء من البرنامج المصغّر واختباره بشكل مكثف، يُستخدم أحياناً كمدخل لبرنامج حاسوبي يُنشئ منطقاً لإنتاج البيانات نفسها. يُشبه هذا البرنامج البرامج المستخدمة لتحسين مصفوفة منطقية قابلة للبرمجة . حتى بدون منطق مثالي تماماً، يُمكن للمنطق المُحسَّن تجريبياً أن يُقلل بشكل كبير من عدد الترانزستورات اللازمة لوحدة تخزين تحكم ذاكرة القراءة فقط (ROM). هذا يُقلل من تكلفة الإنتاج واستهلاك الطاقة الكهربائية لوحدة المعالجة المركزية (CPU).
يمكن تصنيف الشفرة المصغرة إلى أفقية أو رأسية ، ويشير ذلك أساسًا إلى ما إذا كانت كل تعليمة مصغرة تتحكم في عناصر وحدة المعالجة المركزية مع فك تشفير بسيط أو بدون فك تشفير (شفرة مصغرة أفقية) [ أ ] أو تتطلب فك تشفير مكثفًا بواسطة المنطق التوافقي قبل القيام بذلك (شفرة مصغرة رأسية). ونتيجة لذلك، تكون كل تعليمة مصغرة أفقية أعرض (تحتوي على عدد أكبر من البتات) وتشغل مساحة تخزين أكبر من التعليمة المصغرة الرأسية.
الشفرة المصغرة الأفقية
تتضمن الشفرة الدقيقة الأفقية عدة عمليات دقيقة منفصلة تُدمج في تعليمة دقيقة واحدة للتنفيذ المتزامن. [ 1 ] عادةً ما تُخزَّن الشفرة الدقيقة الأفقية في ذاكرة تحكم واسعة نسبيًا؛ فليس من النادر أن يصل طول كل كلمة إلى 108 بت أو أكثر. مع كل نبضة من ساعة التسلسل، تُقرأ كلمة من الشفرة الدقيقة، وتُفك شفرتها، وتُستخدم للتحكم في العناصر الوظيفية التي تُشكِّل وحدة المعالجة المركزية.
في تطبيق نموذجي، تتألف كلمة البرنامج المصغر الأفقي من مجموعات محددة بدقة من البتات. على سبيل المثال، قد يكون أحد الترتيبات البسيطة كما يلي:
| سجل المصدر أ | سجل المصدر ب | سجل الوجهة | عمليات الوحدة الحسابية والمنطقية | نوع القفزة | عنوان الانتقال |
لكي تُنفّذ هذه الآلة الدقيقة تعليمة القفز (JUMP) مع العنوان الذي يلي رمز العملية (opcode)، قد يتطلب الكود البرمجي الدقيق نبضتين من نبضات الساعة. سيكتب المهندس المصمم لها كودًا برمجيًا باستخدام لغة التجميع الدقيقة (microassembler) على النحو التالي:
# أي سطر يبدأ بعلامة رقم هو تعليق. # هذه مجرد تسمية، وهي الطريقة المعتادة التي تمثل بها المجمعات عنوان الذاكرة بشكل رمزي. # InstructionJUMP : # للاستعداد للتعليمات التالية، قام برنامج فك تشفير التعليمات المصغر بنقل عداد البرنامج إلى سجل عنوان الذاكرة. # تجلب هذه التعليمات عنوان الهدف لتعليمات القفز من كلمة الذاكرة التي تلي رمز عملية القفز، عن طريق النسخ من سجل بيانات الذاكرة إلى سجل عنوان الذاكرة. # هذا يعطي نظام الذاكرة نبضتين ساعة لجلب التعليمات التالية إلى سجل بيانات الذاكرة لاستخدامها في فك تشفير التعليمات. # تعني تعليمة التسلسل "next" إضافة 1 إلى عنوان كلمة التحكم. MDR ، NONE ، MAR ، COPY ، NEXT ، NONE # يضع هذا عنوان التعليمات التالية في عداد البرنامج. # هذا يعطي نظام الذاكرة نبضة ساعة لإنهاء عملية الجلب التي بدأت في # التعليمات المصغرة السابقة. # تعليمة التسلسل هي القفز إلى بداية فك تشفير التعليمات. MAR ، 1 ، PC ، ADD ، JMP ، InstructionDecode # لم يتم عرض فك تشفير التعليمات، لأنه عادةً ما يكون معقدًا للغاية، ويعتمد بشكل كبير # على المعالج المحدد الذي تتم محاكاته. حتى هذا المثال مبسط. # لدى العديد من وحدات المعالجة المركزية عدة طرق لحساب العنوان، بدلاً من مجرد جلبه # من الكلمة التي تلي رمز العملية. لذلك، بدلاً من مجرد # تعليمة قفز واحدة، تحتوي وحدات المعالجة المركزية هذه على مجموعة من تعليمات القفز ذات الصلة.في كل دورة معالجة، من الشائع ملاحظة استخدام أجزاء محددة فقط من وحدة المعالجة المركزية، بينما تبقى مجموعات البتات المتبقية في التعليمات الدقيقة غير مُفعّلة. مع التصميم الدقيق للأجهزة والبرامج الدقيقة، يمكن استغلال هذه الخاصية لتنفيذ عمليات موازية تستخدم مناطق مختلفة من وحدة المعالجة المركزية؛ على سبيل المثال، في الحالة المذكورة أعلاه، لا تُطلب وحدة الحساب والمنطق خلال دورة المعالجة الأولى، لذا يُمكن استخدامها لإكمال تعليمات حسابية سابقة.
الشفرة المصغرة العمودية
في البرمجة الدقيقة العمودية، تُشفّر كل تعليمة دقيقة بشكل كبير، أي أن حقول البتات تمر عادةً عبر منطق توافقي وسيط، والذي بدوره يُولّد إشارات التحكم والتسلسل لعناصر وحدة المعالجة المركزية الداخلية (وحدة الحساب والمنطق، المسجلات، إلخ). وهذا يختلف عن البرمجة الدقيقة الأفقية، حيث تُنتج حقول البتات إشارات التحكم والتسلسل مباشرةً أو تُشفّر بشكل طفيف فقط. ونتيجةً لذلك، تتطلب البرمجة الدقيقة العمودية تعليمات أقصر ومساحة تخزين أقل، ولكنها تتطلب وقتًا أطول لفك التشفير، مما يؤدي إلى انخفاض سرعة ساعة وحدة المعالجة المركزية. [ 45 ]
بعض الشفرات الدقيقة العمودية هي مجرد لغة تجميع لحاسوب تقليدي بسيط يحاكي حاسوبًا أكثر تعقيدًا. تستخدم بعض المعالجات، مثل معالجات DEC Alpha ومعالجات CMOS الدقيقة في أجهزة IBM الرئيسية اللاحقة System/390 و z/Architecture ، شفرة الآلة، التي تعمل في وضع خاص يتيح لها الوصول إلى تعليمات وسجلات خاصة وموارد أجهزة أخرى غير متاحة لشفرة الآلة العادية، لتنفيذ بعض التعليمات والوظائف الأخرى، [ 46 ] [ 47 ] مثل عمليات البحث في جداول الصفحات على معالجات Alpha. [ 48 ] يُطلق على هذا اسم PALcode على معالجات Alpha و millicode على معالجات IBM الرئيسية.
يوجد شكل آخر من أشكال الشفرة المصغرة العمودية يحتوي على حقلين:
| تحديد الحقل | قيمة الحقل |
يُحدد حقل الاختيار أي جزء من وحدة المعالجة المركزية سيتم التحكم فيه بواسطة هذه الكلمة من مخزن التحكم. ويتحكم حقل القيمة في ذلك الجزء من وحدة المعالجة المركزية. مع هذا النوع من التعليمات البرمجية الدقيقة، يختار المصمم صراحةً تصميم وحدة معالجة مركزية أبطأ لتوفير التكاليف عن طريق تقليل البتات غير المستخدمة في مخزن التحكم؛ ومع ذلك، قد يؤدي انخفاض التعقيد إلى زيادة تردد ساعة وحدة المعالجة المركزية، مما يقلل من تأثير زيادة عدد الدورات لكل تعليمة.
مع انخفاض تكلفة الترانزستورات، أصبحت الشفرة الدقيقة الأفقية هي المهيمنة على تصميم وحدات المعالجة المركزية باستخدام الشفرة الدقيقة، بينما أصبح استخدام الشفرة الدقيقة الرأسية أقل شيوعًا.
عند استخدام كل من الشفرة الدقيقة الرأسية والأفقية، يمكن الإشارة إلى الشفرة الدقيقة الأفقية باسم الشفرة النانوية أو الشفرة البيكو . [ 49 ]
مخزن تحكم قابل للكتابة
تم بناء عدد قليل من الحواسيب باستخدام الشفرة الدقيقة القابلة للكتابة . في هذا التصميم، بدلاً من تخزين الشفرة الدقيقة في ذاكرة القراءة فقط (ROM) أو منطق مُدمج، تُخزن الشفرة الدقيقة في ذاكرة الوصول العشوائي (RAM) تُسمى مخزن التحكم القابل للكتابة ( WCS ). يُطلق على هذا النوع من الحواسيب أحيانًا اسم حاسوب مجموعة التعليمات القابلة للكتابة (WISC). [ 50 ]
تستخدم العديد من أجهزة الكمبيوتر التجريبية النموذجية مخازن تحكم قابلة للكتابة ؛ وهناك أيضًا أجهزة تجارية تستخدم التعليمات البرمجية الدقيقة القابلة للكتابة، مثل أنظمة Burroughs الصغيرة ، ومحطات عمل Xerox المبكرة ، وعائلة DEC VAX 8800 ( Nautilus )، وأجهزة Symbolics L و G، وعدد من تطبيقات IBM System/360 و System/370 ، وبعض أجهزة DEC PDP-10 ، [ 51 ] و Data General Eclipse MV/8000 . [ 52 ]
يتضمن نظام IBM System/370 مرفقًا يسمى التحميل الأولي للبرامج المصغرة ( IML أو IMPL ) [ 53 ] والذي يمكن استدعاؤه من وحدة التحكم، كجزء من إعادة التشغيل عند التشغيل ( POR ) أو من معالج آخر في مجمع معالجات متعددة مترابطة بإحكام .
تحتوي بعض الآلات التجارية، على سبيل المثال IBM 360/85، [ 54 ] [ 55 ] على كل من وحدة تخزين للقراءة فقط ووحدة تخزين تحكم قابلة للكتابة للتعليمات البرمجية المصغرة.
يوفر نظام WCS العديد من المزايا، بما في ذلك سهولة تعديل البرنامج المصغر، وبالنسبة لبعض أجيال الأجهزة، يوفر وصولاً أسرع من ذاكرة القراءة فقط (ROM). كما يتيح نظام WCS القابل للبرمجة للمستخدم تحسين أداء الجهاز لأغراض محددة.
بدءًا من معالج بنتيوم برو عام 1995، احتوت العديد من وحدات المعالجة المركزية x86 على شفرة Intel الدقيقة القابلة للكتابة . [ 56 ] [ 57 ] وقد سمح هذا، على سبيل المثال، بإصلاح الأخطاء في شفرات Intel Core 2 وIntel Xeon الدقيقة عن طريق ترقيع برامجها المصغرة، بدلاً من استبدال الرقائق بالكامل. ومن الأمثلة البارزة الأخرى مجموعة ترقيعات الشفرة الدقيقة التي قدمتها Intel لبعض معمارية معالجاتها التي يصل عمرها إلى 10 سنوات، في محاولة لمواجهة الثغرات الأمنية المكتشفة في تصميماتها - Spectre و Meltdown - والتي تم الكشف عنها في بداية عام 2018. [ 58 ] [ 59 ] ويمكن تثبيت تحديث الشفرة الدقيقة بواسطة Linux، [ 60 ] أو FreeBSD ، [ 61 ] أو Microsoft Windows، [ 62 ] أو BIOS اللوحة الأم. [ 63 ]
تُتيح بعض الأجهزة خيار تخزين بيانات تحكم قابلة للكتابة وقابلة للبرمجة من قِبل المستخدم، بما في ذلك HP 2100 وDEC PDP-11/60 و TI-990 /12، [ 64 ] [ 65 ] وسلسلة الحواسيب الصغيرة Varian Data Machines V-70 . وقد امتدت خيارات تخزين بيانات التحكم القابلة للكتابة لتشمل المعالجات الدقيقة أيضًا. يحتوي معالج DEC LSI-11 على خيار يسمح ببرمجة المعالج الدقيق الداخلي ذي 8 بت لإنشاء امتدادات خاصة بالتطبيقات لمجموعة التعليمات. [ 66 ]
تحتوي بعض الأجهزة الطرفية والمحولات التي تدعم التعليمات البرمجية الدقيقة على تعليمات برمجية دقيقة قابلة للكتابة، والتي يتم تحميلها عادةً بواسطة برنامج تشغيل الجهاز الخاص بنظام التشغيل. يتم تحميل هذه التعليمات البرمجية الدقيقة إلى ذاكرة الوصول العشوائي الثابتة (SRAM) أو ذاكرة الوصول العشوائي الديناميكية (DRAM) الخاصة بالجهاز ، على سبيل المثال، ذاكرة الوصول العشوائي الديناميكية ذات التأخير العالمي (GDDR SDRAM) الخاصة ببطاقة الفيديو.
مقارنة مع VLIW و RISC
بدأ الاتجاه التصميمي نحو المعالجات ذات التعليمات المعقدة والمشفرة بشكل مكثف في أوائل الستينيات واستمر حتى منتصف الثمانينيات تقريبًا. عند هذه النقطة، بدأت فلسفة تصميم 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 الشائعة، ولكنها تعود إلى ذاكرة قراءة فقط (ROM) للشفرة الدقيقة التقليدية التي تحتوي على العمليات الدقيقة للتعليمات الأكثر تعقيدًا أو الأقل استخدامًا. [ 2 ]
على سبيل المثال، قد يبحث معالج x86 عن العمليات الدقيقة من التعليمات البرمجية الدقيقة للتعامل مع العمليات المعقدة متعددة الخطوات مثل تعليمات الحلقة أو السلسلة، أو وظائف الوحدة المتسامية ذات الفاصلة العائمة أو القيم غير العادية مثل الأرقام غير الطبيعية ، والتعليمات ذات الأغراض الخاصة مثل CPUID .
معانٍ بديلة لمصطلح "البرنامج المصغر"
PDP-8
يُعدّ PDP -8 عائلة من الحواسيب الصغيرة ذات 12 بت، أطلقتها شركة Digital Equipment Corporation عام 1965. كانت تعليمات OPR (معدل التشغيل) تُوصف بأنها "مُشفّرة بدقة". لم يكن هذا المصطلح يحمل المعنى الشائع اليوم، بل كان يعني أن كل بت من كلمة التعليمات يُحدد إجراءً مُعينًا، وأن المُبرمج يستطيع تنفيذ عدة إجراءات في دورة تعليمات واحدة عن طريق ضبط بتات مُتعددة. من أمثلة هذه الإجراءات: مسح المُراكم، وتكميل المُراكم، والتدوير إلى اليمين، والتدوير إلى اليمين مرتين، وتبديل البايتات.
البرامج الثابتة المدمجة
يستخدم بعض موردي الأجهزة، ولا سيما IBM و Lenovo ، مصطلح "البرنامج المصغر" (microcode) كمرادف لمصطلح " البرنامج الثابت المدمج" (embedded firmware ). في هذا السياق، يُطلق مصطلح "البرنامج المصغر" على جميع التعليمات البرمجية داخل الجهاز، سواء كانت تعليمات برمجية مصغرة أو تعليمات برمجية آلية. على سبيل المثال، قد تشمل تحديثات البرنامج المصغر لمحرك الأقراص الصلبة تحديثات لكل من البرنامج المصغر والبرنامج الثابت. [ 67 ] وقد شاع استخدام البرامج الثابتة المدمجة في المعالجات الخاصة بتطبيقات محددة، مثل معالجات الشبكات ، ومعالجات الإشارات الرقمية ، ووحدات التحكم في القنوات ، ووحدات التحكم في الأقراص ، ووحدات التحكم في واجهات الشبكة ، ووحدات التحكم في ذاكرة الفلاش ، ووحدات معالجة الرسومات ، وفي أجهزة أخرى.
انظر أيضاً
ملحوظات
- ↑ كانت معالجات IBM ذات الترميز الدقيق الأفقي تحتوي على أوامر دقيقة متعددة وحقول اختيار السجلات التي تتطلب فك التشفير.
مراجع
- 1 2 3 كينت، ألين؛ ويليامز، جيمس ج. (5 أبريل 1993). موسوعة علوم وتكنولوجيا الحاسوب: المجلد 28 - الملحق 13. نيويورك: مارسيل ديكر، ص 34. ISBN 978-0-8247-2281-4أُرشف من المصدر الأصلي بتاريخ ٢٠ نوفمبر ٢٠١٦. تم الاطلاع عليه بتاريخ ١٧ يناير ٢٠١٦ .
- 1 2 فوغ، أغنر (2017-05-02). البنية الدقيقة لوحدات المعالجة المركزية من إنتل، وإيه إم دي، وفيا (ملف PDF) (تقرير). الجامعة التقنية في الدنمارك. مؤرشف (PDF) من الأصل بتاريخ 2017-03-28 . تم الاطلاع عليه بتاريخ 2024-08-21 .
- 1 2 بوث، ديفيد (23 يوليو 2020). "وحدة المعالجة المركزية (CPU): مكوناتها ووظائفها" . ريد هات .
- ↑ بيكنز، جون. "رموز NMOS 6502" . 6502.org .
- 1 2 شريف، كين. "كيف يعمل محرك الشفرة الدقيقة لمعالج 8086" . مدونة كين شريف .
- ↑ "ISO/IEC/IEEE 24765:2017(en) هندسة النظم والبرمجيات - المصطلحات" . www.iso.org . تاريخ الاسترجاع: 23-06-2024 .
- ↑ الوصف الفني لنظام VAX 9000 (ملف PDF) . شركة ديجيتال إكويبمنت . مايو 1990. الصفحات 3-5 – 3-32 . EK-KA90S-TD-001.
- ↑ الوصف الفني لنظام VAX 8800، المجلد 2 (ملف PDF) . شركة ديجيتال إكويبمنت . يوليو 1986. EK-KA882-TD-PRE.
- ↑ مانينغ، بي إم؛ ميتبي، جيه إس؛ نيكلسون، جيه أو (نوفمبر 1979). "معالج مبرمج دقيقًا مزود بوحدة تخزين تحكم PLA" . نشرة الإفصاح الفني لشركة IBM . 22 (6). مؤرشف من الأصل في 1 أكتوبر 2012. تم الاسترجاع في 10 يوليو 2011 .
- ↑ يُشار إليها غالبًا باسم وحدة تخزين التحكم ROM/PLA في سياق استخدامها في وحدة المعالجة المركزية؛ سوبنيك، بوب (24 فبراير 2008). "J-11: تصميم معالج PDP-11 الرابع والأخير من شركة DEC ... يتميز بـ ... وحدة تخزين التحكم ROM/PLA" . مؤرشف من الأصل في 9 يوليو 2011. تم الاطلاع عليه في 10 يوليو 2011 .
- ↑ "6502 صورة" . مؤرشفة من الأصل في 4 مارس 2016. تم الاطلاع عليها في 22 يناير 2015 .
- ↑ الخصائص الوظيفية لنظام IBM System/360 موديل 50 (ملف PDF) . شركة IBM . 1967. صفحة 7. A22-6898-1 . تاريخ الاطلاع: 29 أكتوبر 2021 .
- ↑ بيل، غوردون ؛ ستريكر، دبليو دي. ما تعلمناه من جهاز PDP-11 – ما تعلمناه من جهازي VAX و Alpha (ملف PDF) (تقرير). ص 30. تاريخ الاسترجاع: 26-06-2025 .
- ↑ الرياضيات الحديثة . إنفوبيس. 2006. ISBN 978-0-7910-9720-5.
- ↑ إيفريت، آر آر؛ سوين، إف إي (1947). مخططات كتل حاسوب ويرل ويند 1 (ملف PDF) (تقرير فني). مختبر أنظمة التحكم المؤازر في معهد ماساتشوستس للتكنولوجيا. R-127. مؤرشف من الأصل (ملف PDF) في 17 يونيو 2012. تم الاطلاع عليه في 21 يونيو 2006 .
- ↑
- ويلكس، موريس (1951). أفضل طريقة لتصميم آلة حاسبة أوتوماتيكية (تقرير فني). جامعة مانشستر .
- ويلكس، موريس (1989). "أفضل طريقة لتصميم آلة حاسبة أوتوماتيكية" (ملف PDF) . في كامبل-كيلي، م. (محرر). مؤتمرات الحاسوب البريطانية المبكرة . مطبعة معهد ماساتشوستس للتكنولوجيا. الصفحات 182-184 . ISBN 978-0-262-23136-7.
- 1 2 شريف، كين. "محاكاة الحاسوب المركزي IBM 360/50 من خلال شفرته المصغرة" . مدونة كين شريف .
- ↑ سوبنيك، بوب (مايو 1988). بنية VLSI VAX الدقيقة (ملف PDF) . المعدات الرقمية.
- ↑ ستارنز، توماس (أبريل 1983). "فلسفة التصميم وراء معالج موتورولا MC68000" . بايت .
- 1 2 3 كوك، جون؛ ماركشتاين، فيكتوريا (يناير 1990). "تطور تقنية RISC في شركة IBM" (ملف PDF) . مجلة IBM للبحوث والتطوير . 34 (1): 4-11 . doi : 10.1147/rd.341.0004 .
- 1 2 كلارك، دوغلاس؛ ستريكر، ويليام (سبتمبر 1980). "تعليقات على "حجة الحاسوب ذي مجموعة التعليمات المختصرة"، بقلم باترسون وديتزل" . أخبار هندسة الحاسوب ACM SIGARCH . 8 (6): 34-38 . doi : 10.1145/641914.641918 . S2CID 14939489 .
- ↑ "خط أنابيب التنفيذ لوحدة المعالجة المركزية Intel i486". ملخص أوراق مؤتمر Compcon ربيع 1990. المؤتمر الدولي الخامس والثلاثون لجمعية IEEE للحاسبات حول الاستفادة الفكرية . سان فرانسيسكو، كاليفورنيا: IEEE . doi : 10.1109/CMPCON.1990.63682 . ISBN 978-0-8186-2028-7.
- ↑ "معالج بنتيوم برو بترددات 150 و166 و180 و200 ميجاهرتز" (ملف PDF) (ورقة بيانات). إنتل . نوفمبر 1995.
- 1 2 "الجزء الأول / البنية المشتركة، الفصل 6 بنية PALcode المشتركة". دليل مرجعي لبنية Alpha AXP (ملف PDF) (الطبعة الثانية ). دار النشر الرقمية . 1995. ISBN 978-1-55558-145-9.
- ↑ روجرز، بوب (سبتمبر-أكتوبر 2012). "ما هو نظام zEnterprise Millicode ولماذا يُستخدم؟" . مجلة أنظمة IBM . مؤرشف من الأصل في 9 أكتوبر 2012.
- ↑ "حاسوب EMIDEC 1100" . Emidec.org.uk. مؤرشف من الأصل في 12 يونيو 2010. تم الاطلاع عليه في 26 أبريل 2010 .
- ↑ الخصائص الوظيفية لنظام IBM System/360 موديل 25 (ملف PDF) . شركة IBM. يناير 1968. صفحة 22. A24-3510-0 . تاريخ الاطلاع: 29 أكتوبر 2021 .
- ١ ٢ ٣ نظرية تشغيل هندسة المجال، وحدة المعالجة ٢٠٣٠، نظام/٣٦٠ طراز ٣٠ (ملف PDF) (الطبعة الأولى ). آي بي إم. يونيو ١٩٦٧. Y٢٤-٣٣٦٠-١. مؤرشف (ملف PDF) من الأصل بتاريخ ٢٠٢٠-٠٤-٠١ . تم الاطلاع عليه بتاريخ ٢٠١٩-١١-٠٩ .
- ↑ إدوارد أ. سنو؛ دانيال ب. سيوريك (1982). "تنفيذ وتقييم أداء عائلة PDP-11" . في دانيال ب. سيوريك ؛ سي. جوردون بيل ؛ ألين نيويل (محررون). هياكل الحاسوب: المبادئ والأمثلة . نيويورك، نيويورك : شركة ماكجرو هيل للنشر . ص 671. ISBN 978-0-07-057302-4.
- ↑ سولتيس، فرانك (سبتمبر 1981). "تصميم نظام لمعالجة بيانات الشركات الصغيرة" . مجلة IEEE Computer . 14 : 77-93 . doi : 10.1109/CM.1981.220610 . S2CID 398484 .
- ↑ فرانك ج. سولتيس (1997). داخل نظام AS/400، الطبعة الثانية . دار نشر ديوك. رقم ISBN 978-1-882419-66-1.
- ↑ "مقابلة: مواجهة جهاز نينتندو 64 (نابو)" . IGN64. 10 نوفمبر 2000. مؤرشف من الأصل في 13 سبتمبر 2007. تم الاطلاع عليه في 27 مارس 2008 .
- ↑ "إنديانا جونز والآلة الجهنمية" . IGN . 12 ديسمبر 2000. مؤرشف من الأصل في 27 سبتمبر 2013. تم الاطلاع عليه في 24 سبتمبر 2013 .
- ↑ مايِنك، تود (28 يوليو 2000). "تحليل ما بعد الإصدار: لعبة Resident Evil 2 من إنتاج استوديوهات أنجل (نسخة N64)" . غاماسوترا . يونايتد بيزنس ميديا ذ.م.م. مؤرشف من الأصل في 21 أكتوبر 2012. تم الاطلاع عليه في 18 أكتوبر 2010 .
- ↑ دليل مرجعي لنظام الكمبيوتر Digital Scientific Meta 4 Series 16 (ملف PDF) . شركة Digital Scientific. مايو 1971. 7032MO. مؤرشف (ملف PDF) من الأصل بتاريخ 14 يناير 2020. تم الاطلاع عليه بتاريخ 14 يناير 2020 .
- ↑ دليل مرجعي لذاكرة القراءة فقط (ROM) لنظام الكمبيوتر Digital Scientific Meta 4 (ملف PDF) . شركة Digital Scientific. مارس 1970. 7024MO. مؤرشف (ملف PDF) من الأصل بتاريخ 23 سبتمبر 2019. تم الاطلاع عليه بتاريخ 14 يناير 2020 .
- ↑ دليل النظام الأولي لنظام الحاسوب Digital Scientific Meta 4 Series 16 (ملف PDF) . شركة Digital Scientific. يونيو 1970. 7006MO. مؤرشف (ملف PDF) من الأصل بتاريخ 23 سبتمبر 2019. تم الاطلاع عليه بتاريخ 14 يناير 2020 .
- ↑ نظام حاسوب ديجيتال ساينتيفيك ميتا 4: قائمة أنماط ذاكرة القراءة فقط (ROM) النموذجية وبرنامج لمحاكاة مجموعة تعليمات IBM 1130 (ملف PDF) . شركة ديجيتال ساينتيفيك. يناير 1970. M4/005P-170. مؤرشف (ملف PDF) من الأصل بتاريخ 24 مارس 2020. تم الاطلاع عليه بتاريخ 14 يناير 2020 .
- ↑ "Western Digital 1600" . AntiqueTech. مؤرشف من الأصل في 3 يناير 2017. تم الاطلاع عليه في 5 يناير 2017 .
- ↑ "فك شفرة المعالج 8086 الدقيقة « مدونة رينين" . تم الاطلاع عليه بتاريخ 30-06-2026 .
- ↑ "فك شفرة المعالج 80386 الدقيقة « مدونة رينين" . تم الاطلاع عليه بتاريخ 23-05-2026 .
- ↑ "AMD Microcode" .
- ↑ "وحدات المعالجة المركزية الأخرى x86 - عبر - أخرى" .
- ↑ هايز، جون ب. (1978). هندسة الحاسوب وتنظيمه . ماكجرو هيل. ص 300. ISBN 978-0-07-027363-4.
- ↑ نيل هارمان؛ آندي جيمبليت (12 أكتوبر 2009). "CS-323: المعالجات الدقيقة عالية الأداء - الفصل 1. البرمجة الدقيقة" . mat.uson.mx. مؤرشف من الأصل بتاريخ 19 أبريل 2015. تم الاطلاع عليه بتاريخ 8 أغسطس 2015 .
- ↑ فوبل، روبرت (2013). التوافر العالي وقابلية التوسع لبيئات الحواسيب المركزية باستخدام نظامي التشغيل z و z/OS كمثال . KIT Scientific. ص 26. ISBN 978-3-7315-0022-3.
- ↑ روجرز، بوب (سبتمبر-أكتوبر 2012). "ما هو نظام zEnterprise Millicode ولماذا يُستخدم؟" . مجلة أنظمة IBM . مؤرشف من الأصل بتاريخ 16 أكتوبر 2013. تم الاطلاع عليه بتاريخ 7 نوفمبر 2013 .
- ↑ "دليل تصميم نظام PALcode لمعالجات Alpha الدقيقة" (ملف PDF) . شركة Digital Equipment Corporation . مايو 1996. مؤرشف (ملف PDF) من الأصل في 15 أغسطس 2011. تم الاطلاع عليه في 7 نوفمبر 2013 .
- ↑ سبروث، فيلهلم (ديسمبر 2012). تصميم المعالج الدقيق . سبرينغر ساينس آند بيزنس ميديا. ص 31. ISBN 978-3-642-74916-2أُرشف من الأصل في 20 نوفمبر 2016. تم الاطلاع عليه في 18 يناير 2015 .
- ↑ كوبمان، فيليب الابن (1987). "حواسيب ذات مجموعة تعليمات قابلة للكتابة وموجهة نحو المكدس: مفهوم WISC" (ملف PDF) . مجلة تطبيقات وبحوث لغة فورث : 49-71 . مؤرشف (ملف PDF) من النسخة الأصلية بتاريخ 11-05-2008.
- ↑ سميث، إريك (3 سبتمبر 2002). "ردًا على: ما هو حجم الشفرة المصغرة في مختلف الأجهزة؟" . مجموعة الأخبار : alt.folklore.computers . يوزنت: qhn0qyveyu.fsf@ruckus.brouhaha.com . مؤرشف من الأصل في 26 يناير 2009. تم الاطلاع عليه في 18 ديسمبر 2008 .
- ↑ سموثرمان، مارك. "CPSC 3300 / روح آلة جديدة" . تم الاطلاع عليه بتاريخ 27-10-2023 .
ذاكرة تحكم قابلة للكتابة من نوع SRAM بحجم 4096 × 75 بت: تعليمات دقيقة بحجم 74 بت مع بت تكافؤ واحد (18 حقلاً).
- ↑ مبادئ تشغيل نظام IBM System/370 (ملف PDF) . الطبعة الرابعة. IBM. سبتمبر 1974. الصفحات 98، 245. GA22-7000-4. مؤرشف (ملف PDF) من الأصل بتاريخ 29 فبراير 2012. تم الاطلاع عليه بتاريخ 27 أغسطس 2012 .
- ↑ الخصائص الوظيفية لنظام IBM System/360 موديل 85 (ملف PDF) . الطبعة الثانية. IBM. يونيو 1968. A22-6916-1 . تم الاطلاع عليه بتاريخ 29 أكتوبر 2021 .
- ↑ وصف الميزة الخاصة لنظام IBM System/360 709/7090/7094 ميزة التوافق مع نظام IBM System/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، المجلد 3A: دليل برمجة النظام، الجزء 1 (PDF) . Intel . سبتمبر 2016.
- ↑ إنتل تُصدر تحديثات لجميع وحدات المعالجة المركزية الحديثة، وتعد بإصلاحات للأجهزة لرقائق الجيل الثامن القادمة بقلم بول ألكورن في 15 مارس 2018
- ↑ "تنزيل ملف بيانات الشفرة الدقيقة لمعالج لينكس*" . مؤرشف من الأصل بتاريخ 19-03-2018 . تم الاطلاع عليه بتاريخ 21-03-2018 .
- ↑ "أداة تحديث البرامج الثابتة من إنتل لنظام لينكس" . مؤرشفة من الأصل بتاريخ 26-02-2012.
- ↑ " [ المنافذ ] فهرس /head/sysutils/cpupdate" . Freebsd.org. مؤرشف من الأصل بتاريخ 2020-04-01 . تم الاطلاع عليه بتاريخ 2020-01-16 .
- ↑ يتوفر تحديث موثوقية للبرنامج الثابت يُحسّن موثوقية الأنظمة التي تستخدم معالجات إنتل . مؤرشف من الأصل بتاريخ ٢٣ فبراير ٢٠٠٨. تم الاطلاع عليه بتاريخ ٢٥ فبراير ٢٠٠٨ .
- ↑ "منتجات الخوادم - يلزم تحديث BIOS عند ظهور رسالة "Missing Microcode" أثناء اختبار POST" . إنتل . 24 يناير 2013. مؤرشف من الأصل في 1 سبتمبر 2014.
- ↑ "دليل صيانة وإصلاح جهاز الكمبيوتر موديل 990/12 LR" (ملف PDF) . Bitsavers.org . شركة تكساس إنسترومنتس . تاريخ الاطلاع: 15 فبراير 2024 .
- ↑ دليل مبرمج نظام تطوير الشفرة الدقيقة MDS-990 من شركة تكساس إنسترومنتس (إصدار 15 أغسطس 1979 ). أرشيفات تكساس إنسترومنتس، RG-20 رقم الوصول 94-08، الصندوق 10، 45C. مكتبة ديغولير، جامعة ساوثرن ميثوديست، دالاس، تكساس، الولايات المتحدة الأمريكية.
{{cite book}}: CS1 maint: location ( link ) - ↑ دليل مستخدم LSI-11 WCS (ملف PDF) (الطبعة الأولى ). شركة ديجيتال إكويبمنت. يونيو 1978. مؤرشف (ملف PDF) من الأصل في 23 فبراير 2023. تم الاطلاع عليه في 7 يناير 2023 .
- ↑ "خوادم IBM من سلسلة p - تحديث الشفرة الدقيقة لـ Ultrastar 73LZX (US73) بسعة 18/36 جيجابايت" . IBM . مؤرشف من الأصل في 19 أبريل 2019. تم الاطلاع عليه في 22 يناير 2015 .
للمزيد من القراءة
- سميث، ريتشارد إي. (1988). "نظرة تاريخية عامة على هندسة الحاسوب" . حوليات تاريخ الحوسبة . 10 (4): 277-303 . رمز Bibcode : 1988IAHC...10d.277S . doi : 10.1109/MAHC.1988.10039 . S2CID 16405547. تاريخ الاسترجاع: 21 يونيو 2006 .
- سموثرمان، مارك (أكتوبر 2022). "تاريخ موجز للبرمجة المصغرة" . تم الاسترجاع في 27 أكتوبر 2023 .
- ويلكس، إم. في. (1986). "نشأة البرمجة المصغرة" . حوليات تاريخ الحوسبة . 8 (2): 116-126 . رمز Bibcode : 1986IAHC....8b.116M . doi : 10.1109/MAHC.1986.10035 . S2CID 1978847. تاريخ الاسترجاع: 7 أغسطس 2006 .
- ويلكس، إم. في .؛ سترينجر، جيه. بي. (أبريل 1953). "البرمجة الدقيقة وتصميم دوائر التحكم في الحاسوب الرقمي الإلكتروني" . وقائع الجمعية الفلسفية في كامبريدج . 49 (2): 230-238 . رمز Bibcode : 1953PCPS...49..230W . doi : 10.1017/S0305004100028322 . S2CID 62230627. تاريخ الاسترجاع: 23 أغسطس 2006 .
- هوسون، إس إس (1970). مبادئ وممارسات البرمجة المصغرة . برنتيس هول. ISBN 978-0-13-581454-3.
- تاكر، إس جي (1967). "التحكم بالبرامج المصغرة لنظام SYSTEM/360" (ملف PDF) . مجلة أنظمة IBM . 6 (4): 222-241 . doi : 10.1147/sj.64.0222 . تاريخ الاسترجاع: 2026-02-06 .
- شريف، كين (ديسمبر 2022). "كيف يعمل محرك الشفرة الدقيقة لمعالج 8086" .
روابط خارجية
- معالجة التعليمات
- البرامج الثابتة
- وحدات المعالجة المركزية
- نظام الإدخال والإخراج الأساسي (BIOS)
- برامج تشغيل الأجهزة
