هندسة مجموعة التعليمات
هندسة مجموعة التعليمات (ISA) هي الواجهة المجردة بين الأجهزة والبرمجيات: وهي مجموعة التعليمات، والسجلات، وأنواع البيانات، وأنماط العنونة، ونموذج الذاكرة التي يعرضها المعالج للمبرمج والمترجم.
Definition
هندسة مجموعة التعليمات هي العقد الذي يحدد العمليات التي يمكن للمعالج تنفيذها، والمعاملات والتخزين الذي تعمل عليه، والترميز الثنائي للبرامج، بحيث يقوم أي تطبيق يلتزم بالعقد بتشغيل نفس الشفرة الآلية.
Scope
يغطي هذا المجال ما تفعله الآلة من جانب البرمجيات، بغض النظر عن كيفية تنفيذ الأجهزة لذلك. ويشمل فئات التعليمات (الحسابية، المنطقية، نقل البيانات، التحكم)، وتنسيقات التعليمات وترميزها، وتنظيم السجلات، وأنماط العنونة، ونموذج الذاكرة وترتيب البايتات (endianness)، والاستثناءات وواجهة استدعاء النظام، والفلسفات المتناقضة لـ RISC و CISC. ويستثني هذا المجال التحقيق المعماري الدقيق (microarchitectural realization) لـ ISA — خطوط الأنابيب (pipelines)، وذاكرات التخزين المؤقت (caches)، ومحركات التنفيذ خارج الترتيب (out-of-order engines) — والتي تُعالج ضمن الهندسة المعمارية الدقيقة للمعالج.
Sub-topics
Core questions
- ما هي العمليات وأنواع المعاملات والسجلات التي يجب أن تعرضها هندسة مجموعة التعليمات لتكون هدفًا برمجيًا كاملاً؟
- كيف تُرمّز التعليمات إلى ثنائي، وكيف يوازن الترميز بين كثافة الشفرة وبساطة فك الترميز؟
- كيف تحدد أنماط العنونة مكان وجود المعاملات في السجلات والذاكرة؟
- ما الذي يميز فلسفة RISC للتعليمات البسيطة ذات التنسيق الثابت عن فلسفة CISC للتعليمات الغنية ذات الطول المتغير؟
- كيف تُحافظ على استقرار هندسة مجموعة التعليمات كعقد توافق مع استمرار توسيعها على مدى عقود؟
Key concepts
- تنسيقات التعليمات ورموز التشغيل
- ملف السجلات للأغراض العامة
- أنماط العنونة
- هندسة التحميل والتخزين
- RISC مقابل CISC
- ترتيب البايتات والمحاذاة
- التوافق الثنائي
- الاستثناءات واستدعاءات النظام
- امتدادات مجموعة التعليمات
Key theories
- الفصل بين الهندسة المعمارية والتنفيذ
- تُفصل هندسة مجموعة التعليمات (ISA) عمدًا عن الهندسة المعمارية الدقيقة (microarchitecture) بحيث يمكن تنفيذ نفس مجموعة التعليمات بواسطة العديد من تنظيمات الأجهزة المختلفة عبر الأجيال، مما يحافظ على التوافق الثنائي مع السماح بتحسين الأداء.
- مبادئ تصميم RISC
- تفيد حجة مجموعة التعليمات المخفضة بأن مجموعة صغيرة من التعليمات البسيطة ذات الطول الثابت ومن سجل إلى سجل يمكن أن تُنفذ بكفاءة عبر خطوط الأنابيب وتُترجم جيدًا، وغالبًا ما تتفوق في الأداء على مجموعات التعليمات المعقدة على الرغم من تنفيذ المزيد من التعليمات.
Clinical relevance
تُعد هندسة مجموعة التعليمات (ISA) الأصل طويل الأمد لمنصة الحوسبة: فكل من x86 و ARM و RISC-V ترتكز عليها أنظمة بيئية برمجية واسعة، وتحدد القرارات المتعلقة بمجموعة التعليمات المترجمات وأنظمة التشغيل والثنائيات التي يمكن تشغيلها. تسمح هندسة مجموعة التعليمات المستقرة بتطور الأجهزة تحت برمجيات غير متغيرة، بينما أعادت هندسة مجموعة التعليمات المفتوحة مثل RISC-V تشكيل تصميم المعالجات والتعليم.
History
عرضت الآلات المبكرة مجموعات تعليمات غريبة؛ وقد كانت IBM System/360 (1964) رائدة في فكرة هندسة مجموعة تعليمات واحدة تُنفذ عبر عائلة من الآلات. شهدت سبعينيات القرن الماضي مجموعات تعليمات معقدة بشكل متزايد (CISC)، مما أثار رد فعل RISC في أوائل الثمانينيات المرتبط بباترسون في بيركلي وهينيسي في ستانفورد. وقد أحيت هندسة مجموعة التعليمات المفتوحة RISC-V، التي بدأت في بيركلي حوالي عام 2010، الاهتمام بتصميم مجموعات تعليمات نظيفة وقابلة للتوسيع.
Debates
- RISC مقابل CISC
- لا يزال الجدل قائمًا حول ما إذا كانت مجموعات التعليمات البسيطة ذات التنسيق الثابت متفوقة بطبيعتها على تلك المعقدة ذات الطول المتغير؛ ففي الممارسة العملية، تقوم تطبيقات CISC الحديثة عالية الأداء بترجمة التعليمات المعقدة إلى عمليات دقيقة شبيهة بـ RISC داخليًا، مما يطمس التمييز الأصلي.
Key figures
- David A. Patterson
- John L. Hennessy
- Gene Amdahl
- Seymour Cray
- Krste Asanović
Related topics
Seminal works
- hennessy2019
- patterson2020
- patterson1980risc
Frequently asked questions
- ما الفرق بين هندسة مجموعة التعليمات والهندسة المعمارية الدقيقة؟
- هندسة مجموعة التعليمات (ISA) هي الواجهة المرئية — التعليمات والسجلات التي يستخدمها البرنامج — بينما الهندسة المعمارية الدقيقة (microarchitecture) هي التنظيم الداخلي للأجهزة (خط الأنابيب، وذاكرات التخزين المؤقت، ووحدات التنفيذ) التي تنفذ تلك الواجهة. يمكن للعديد من الهندسات المعمارية الدقيقة تنفيذ نفس هندسة مجموعة التعليمات.
- لماذا يُعد التوافق الثنائي مهمًا جدًا؟
- نظرًا لأن البرامج تُترجم إلى هندسة مجموعة تعليمات محددة، فإن الحفاظ على استقرار هندسة مجموعة التعليمات يسمح للمستخدمين بتشغيل البرامج الموجودة على معالجات جديدة دون إعادة ترجمة، مما يحمي استثمارات هائلة في البرمجيات بينما تتحسن الأجهزة تحتها.