بنية مجموعة التعليمات
بنية مجموعة التعليمات ( ISA ) هي نموذج مجرد يُحدد واجهة البرمجة لوحدة المعالجة المركزية (CPU) في الحاسوب، ويُحدد كيفية تفاعل البرمجيات مع المكونات المادية. [ 1 ] يُعتبر الجهاز (أي وحدة المعالجة المركزية) الذي يُفسر التعليمات الموصوفة في بنية مجموعة التعليمات تطبيقًا لتلك البنية. وعمومًا، تُستخدم نفس بنية مجموعة التعليمات لمجموعة من وحدات المعالجة المركزية ذات الصلة.
بشكل عام، تحدد بنية مجموعة التعليمات (ISA) التعليمات وأنواع البيانات والسجلات وواجهة البرمجة لإدارة الذاكرة الرئيسية ، مثل أنماط العنونة والذاكرة الافتراضية وآليات اتساق الذاكرة . كما تتضمن بنية مجموعة التعليمات نموذج الإدخال/الإخراج للواجهة القابلة للبرمجة.
تحدد بنية مجموعة التعليمات (ISA) السلوك المتوقع من كود الآلة الذي يعمل على تطبيق لتلك البنية، بطريقة لا تعتمد على خصائص ذلك التطبيق، مما يوفر توافقًا ثنائيًا بين التطبيقات. وهذا يُمكّن من وجود تطبيقات متعددة لبنية مجموعة التعليمات تختلف في خصائص مثل الأداء والحجم المادي والتكلفة (وغيرها)، ولكنها قادرة على تشغيل نفس كود الآلة، بحيث يمكن استبدال جهاز ذي أداء وتكلفة أقل بجهاز ذي أداء وتكلفة أعلى دون الحاجة إلى استبدال البرمجيات. كما يُمكّن من تطوير البنى الدقيقة لتطبيقات بنية مجموعة التعليمات، بحيث يمكن لتطبيق أحدث وأعلى أداءً تشغيل برمجيات تعمل على أجيال سابقة من التطبيقات.
إذا كان نظام التشغيل يحتفظ بواجهة ثنائية قياسية ومتوافقة للتطبيقات (ABI) لمجموعة تعليمات معينة (ISA)، فسيعمل رمز الآلة على الإصدارات المستقبلية لتلك المجموعة ونظام التشغيل. مع ذلك، إذا كانت مجموعة التعليمات تدعم تشغيل أنظمة تشغيل متعددة، فهذا لا يضمن تشغيل رمز الآلة الخاص بنظام تشغيل على نظام تشغيل آخر، إلا إذا كان نظام التشغيل الأول يدعم تشغيل رمز الآلة المصمم لنظام التشغيل الآخر.
يمكن توسيع بنية مجموعة التعليمات (ISA) بإضافة تعليمات أو إمكانيات أخرى، أو بإضافة دعم لعناوين وقيم بيانات أكبر؛ وسيظل بإمكان تطبيق بنية مجموعة التعليمات الموسعة تنفيذ تعليمات الآلة لإصدارات بنية مجموعة التعليمات التي لا تحتوي على هذه التوسعات. أما تعليمات الآلة التي تستخدم هذه التوسعات، فلن تعمل إلا على التطبيقات التي تدعمها.
إن التوافق الثنائي الذي توفره هذه المجموعات يجعل من مجموعات تعليمات المعالجات واحدة من أكثر المفاهيم التجريدية الأساسية في مجال الحوسبة .
ملخص
يُفرَّق بين بنية مجموعة التعليمات والبنية الدقيقة ، وهي مجموعة تقنيات تصميم المعالج المستخدمة في معالج معين لتنفيذ مجموعة التعليمات. يمكن للمعالجات ذات البنى الدقيقة المختلفة أن تشترك في مجموعة تعليمات واحدة. على سبيل المثال، يُنفِّذ معالجا إنتل بنتيوم وإيه إم دي أثلون إصدارات متطابقة تقريبًا من مجموعة تعليمات x86 ، لكنهما يختلفان اختلافًا جذريًا في تصميمهما الداخلي.
تم تطوير مفهوم البنية ، وهو مفهوم يختلف عن تصميم آلة معينة، بواسطة فريد بروكس في شركة IBM خلال مرحلة تصميم نظام System/360 .
قبل مشروع NPL [System/360]، كان مصممو الحواسيب في الشركة يتمتعون بحرية تحقيق أهداف التكلفة ليس فقط من خلال اختيار التقنيات، بل أيضًا من خلال إدخال تحسينات وظيفية ومعمارية. في المقابل، افترض هدف التوافق SPREAD بنيةً واحدةً لسلسلة من خمسة معالجات تغطي نطاقًا واسعًا من التكلفة والأداء. لم يكن بإمكان أي من فرق التصميم الهندسي الخمسة الاعتماد على إمكانية إجراء تعديلات على المواصفات المعمارية كوسيلة لتخفيف الصعوبات في تحقيق أهداف التكلفة والأداء. [ 2 ] : ص 137
تُنفّذ بعض الآلات الافتراضية التي تدعم بايت كود كمجموعة تعليمات لها ، مثل Smalltalk وآلة Java الافتراضية وبيئة تشغيل اللغة المشتركة من Microsoft ، هذه الميزة عن طريق ترجمة بايت كود مسارات التعليمات البرمجية الشائعة الاستخدام إلى لغة الآلة الأصلية. إضافةً إلى ذلك، تُنفّذ هذه الآلات الافتراضية مسارات التعليمات البرمجية الأقل استخدامًا عن طريق التفسير (انظر: الترجمة الفورية ). وقد طبّقت شركة Transmeta مجموعة تعليمات x86 على معالجات ذات كلمات تعليمات طويلة جدًا (VLIW) بهذه الطريقة.
تصنيف ISAs
يمكن تصنيف مجموعة تعليمات المعالج (ISA) بعدة طرق مختلفة. أحد التصنيفات الشائعة هو التصنيف حسب التعقيد المعماري . يحتوي الحاسوب ذو مجموعة التعليمات المعقدة (CISC) على العديد من التعليمات المتخصصة، والتي قد لا يُستخدم بعضها إلا نادرًا في البرامج العملية. أما الحاسوب ذو مجموعة التعليمات المختصرة (RISC) فيُبسط المعالج من خلال تنفيذ التعليمات الأكثر استخدامًا في البرامج بكفاءة، بينما تُنفذ العمليات الأقل شيوعًا كإجراءات فرعية، مما يُعوض وقت التنفيذ الإضافي الناتج عن استخدامها غير المتكرر. [ 3 ]
تشمل الأنواع الأخرى معمارية VLIW ، ومعمارية الكلمة الطويلة للتعليمات (LIW) ومعمارية الحوسبة المتوازية الصريحة للتعليمات (EPIC) المرتبطة بها ارتباطًا وثيقًا. تسعى هذه المعماريات إلى استغلال التوازي على مستوى التعليمات باستخدام موارد أقل من RISC وCISC، وذلك بجعل المُصرّف مسؤولاً عن إصدار التعليمات وجدولتها. [ 4 ]
تمت دراسة بنى معمارية ذات تعقيد أقل، مثل حاسوب مجموعة التعليمات الدنيا (MISC) وحاسوب مجموعة التعليمات الواحدة (OISC). تُعد هذه البنى مهمة من الناحية النظرية، لكنها لم تُطرح تجاريًا بعد. [ 5 ] [ 6 ]
تعليمات
تتكون لغة الآلة من عبارات أو تعليمات منفصلة . في بنية المعالجة، قد تحدد تعليمة معينة ما يلي:
- رمز العملية (التعليمات المراد تنفيذها) على سبيل المثال: الجمع، النسخ، الاختبار
- أي معاملات صريحة:
- السجلات
- القيم الحرفية/الثابتة
- أنماط العنونة المستخدمة للوصول إلى الذاكرة
يتم بناء العمليات الأكثر تعقيدًا من خلال الجمع بين هذه التعليمات البسيطة، والتي يتم تنفيذها بالتسلسل، أو وفقًا لتوجيهات تعليمات تدفق التحكم .
أنواع التعليمات
تتضمن أمثلة العمليات الشائعة في العديد من مجموعات التعليمات ما يلي:
معالجة البيانات وعمليات الذاكرة
- قم بتعيين قيمة ثابتة لمسجل أو ذاكرة .
- نسخ البيانات من مكان إلى آخر. تُسمى هذه العملية غالبًا بالتحميل أو التخزين . على الرغم من أن تعليمة الآلة تُسمى غالبًا بالنقل ، إلا أن هذا المصطلح مُضلل لأن المصدر يبقى دون تغيير. تُستخدم هذه العمليات لتخزين محتويات سجل، أو محتويات موقع ذاكرة آخر، أو نتيجة عملية حسابية، أو لاسترجاع البيانات المخزنة لإجراء عملية حسابية لاحقًا.
- قراءة أو كتابة البيانات من الأجهزة المادية.
العمليات الحسابية والمنطقية
- جمع أو طرح أو ضرب أو قسمة قيم سجلين، ووضع النتيجة في سجل، وربما تعيين رمز حالة واحد أو أكثر في سجل الحالة . [ 7 ]
- زيادة ،التناقص في بعض مجموعات التعليمات البرمجية، مما يوفر جلب المعامل في الحالات البسيطة.
- قم بإجراء عمليات على مستوى البت ، على سبيل المثال، أخذ الاقتران والفصل للبتات المتناظرة في زوج من السجلات، وأخذ نفي كل بت في سجل.
- قارن قيمتين في السجلات (على سبيل المثال، لمعرفة ما إذا كانت إحداهما أقل، أو ما إذا كانتا متساويتين).
- تعليمات الفاصلة العائمة لإجراء العمليات الحسابية على أعداد الفاصلة العائمة. [ 7 ]
عمليات التحكم في التدفق
- انتقل إلى موقع آخر في البرنامج ونفذ التعليمات هناك.
- انتقل إلى موقع آخر بشكل مشروط إذا تحقق شرط معين.
- التفرع بشكل غير مباشر إلى موقع آخر.
- تخطي تعليمة واحدة أو أكثر، حسب الشروط (التفرع الشرطي هو عدد ثابت من التعليمات للأمام).
- يؤدي Trap بشكل صريح إلى حدوث مقاطعة برمجية ، سواء بشكل مشروط أو غير مشروط.
- قم باستدعاء كتلة أخرى من التعليمات البرمجية، مع حفظ موقع التعليمات التالية كنقطة للعودة إليها.
- العودة من مكالمة سابقة عن طريق استرجاع الموقع المحفوظ.
تعليمات المعالج المساعد
- تحميل/تخزين البيانات من وإلى المعالج المساعد أو تبادلها مع سجلات وحدة المعالجة المركزية.
- تنفيذ عمليات المعالج المساعد.
- تتضمن بعض الأمثلة على تعليمات المعالج المساعد تلك الخاصة بمرفق IBM 3090 Vector و Intel 8087 .
تعليمات مفصلة
قد تتضمن المعالجات تعليمات مُفصّلة ضمن مجموعة تعليماتها. تُنفّذ تعليمة مُفصّلة واحدة مهمةً قد تتطلب العديد من التعليمات أو روتينًا فرعيًا على أجهزة حاسوب أخرى. تتميز هذه التعليمات بأنها تتضمن خطوات متعددة، أو تتحكم في وحدات وظيفية متعددة، أو تظهر على نطاق أوسع من معظم التعليمات البسيطة التي يُنفذها المعالج. من أمثلة التعليمات المُفصّلة:
- نقل سجلات متعددة من وإلى الذاكرة (وخاصة المكدس ) في وقت واحد
- نقل كتل كبيرة من الذاكرة (مثل نسخ السلاسل النصية أو نقل البيانات عبر DMA )
- البحث عن سلاسل نصية للعثور على تطابقات أو اختلافات
- العمليات الحسابية على سلاسل BCD
- العمليات الحسابية المعقدة للأعداد الصحيحة والأعداد العشرية (مثل الجذر التربيعي ، أو الدوال المتسامية مثل اللوغاريتم ، والجيب ، وجيب التمام ، وما إلى ذلك).
- تعليمات SIMD ،وهي تعليمات واحدة تقوم بتنفيذ عملية على العديد من القيم المتجانسة بالتوازي، ربما فيسجلات SIMD
تُعدّ التعليمات المُفصّلة أكثر شيوعًا في مجموعات تعليمات CISC مقارنةً بمجموعات تعليمات RISC، ولكن قد تتضمنها مجموعات تعليمات RISC أيضًا. لا تتضمن مجموعات تعليمات RISC عمومًا عمليات وحدة الحساب والمنطق (ALU) مع معاملات الذاكرة، أو تعليمات لنقل كتل كبيرة من الذاكرة، ولكن معظمها يتضمن تعليمات SIMD أو تعليمات المتجهات التي تُنفّذ نفس العملية الحسابية على أجزاء متعددة من البيانات في الوقت نفسه. تتميز تعليمات SIMD بقدرتها على معالجة المتجهات والمصفوفات الكبيرة في أقل وقت ممكن. كما تُتيح تعليمات SIMD سهولة موازاة الخوارزميات الشائعة الاستخدام في معالجة الصوت والصورة والفيديو. وقد طُرحت تطبيقات SIMD المختلفة في السوق تحت أسماء تجارية مثل MMX و 3DNow! و AltiVec .
ترميز التعليمات

في البنى التقليدية، تتضمن التعليمات رمز عملية يحدد العملية المراد تنفيذها، مثل إضافة محتويات الذاكرة إلى سجل ، بالإضافة إلى صفر أو أكثر من مُحدِّدات المعاملات ، التي قد تُحدد السجلات أو مواقع الذاكرة أو البيانات الحرفية. قد تعتمد مُحدِّدات المعاملات على أنماط عنونة تُحدد معناها، أو قد تكون موجودة في حقول ثابتة. أما في بنى الكلمات التعليمية الطويلة جدًا (VLIW)، والتي تشمل العديد من بنى التعليمات البرمجية الدقيقة ، فيتم تحديد رموز عمليات ومعاملات متعددة في تعليمة واحدة.
بعض مجموعات التعليمات الغريبة لا تحتوي على حقل رمز العملية، مثل البنى التي يتم تشغيلها بواسطة النقل (TTA)، بل تحتوي فقط على المعامل (المعاملات).
تعتمد معظم آلات المكدس على مجموعات تعليمات " بدون معاملات "، حيث تخلو العمليات الحسابية والمنطقية من أي حقول لتحديد المعاملات؛ فقط التعليمات التي تدفع المعاملات إلى مكدس التقييم أو التي تسحبها منه إلى متغيرات هي التي تحتوي على محددات المعاملات. تُنفذ مجموعة التعليمات معظم عمليات وحدة الحساب والمنطق باستخدام تدوين لاحق ( تدوين بولندي معكوس ) يعمل فقط على مكدس التعبيرات ، وليس على سجلات البيانات أو خلايا الذاكرة الرئيسية. يُعد هذا الأمر ملائمًا جدًا لترجمة لغات البرمجة عالية المستوى، لأن معظم التعبيرات الحسابية يُمكن ترجمتها بسهولة إلى التدوين اللاحق. [ 8 ]
تعليمات مشروطة
تحتوي التعليمات الشرطية غالبًا على حقل مُسند - وهو عبارة عن بضعة بتات تُشفّر الشرط المحدد لتنفيذ عملية ما بدلًا من عدم تنفيذها. على سبيل المثال، تنقل تعليمة التفرع الشرطي التحكم إذا كان الشرط صحيحًا، بحيث ينتقل التنفيذ إلى جزء مختلف من البرنامج، ولا تنقل التحكم إذا كان الشرط خاطئًا، بحيث يستمر التنفيذ بشكل تسلسلي. تحتوي بعض مجموعات التعليمات أيضًا على عمليات نقل شرطية، بحيث يتم تنفيذ عملية النقل وتخزين البيانات في الموقع المستهدف إذا كان الشرط صحيحًا، ولا يتم تنفيذها ولا يتم تعديل الموقع المستهدف إذا كان الشرط خاطئًا. وبالمثل، تحتوي بنية IBM z/Architecture على تعليمة تخزين شرطية. تتضمن بعض مجموعات التعليمات حقل مُسند في كل تعليمة. يُطلق على وجود مُسندات في التعليمات اسم التنبؤ ، ويمكن أن يشمل ذلك التفرعات الشرطية، كما هو الحال bfفي SuperH . [ 9 ]
تعليمات التحكم في الحلقة
تتضمن العديد من البنى المعمارية تعليمات التفرع الشرطي المصممة للتحكم في الحلقات. وعادةً ما تقوم هذه التعليمات بتحديث واختبار سجل معين. ومن الأمثلة على ذلك:
- آي بي إم 7070
- كلمة فهرس الفرع المتناقصة (BDX)
- كلمة فهرس التفرع المتزايدة (BIX)
- آي بي إم 7090
- التحويل على المؤشر (TIX)
- التحويل عند ارتفاع المؤشر (TXH)
- التحويل عند انخفاض المؤشر أو مساويته (TXL)
- نظام IBM/360
- الفرع عند العد (BCT، BCTR)
- فرع على أعلى مؤشر (BXH)
- الفرع عند انخفاض المؤشر أو مساويته (BXLE)
عدد المعاملات
يمكن تصنيف مجموعات التعليمات حسب الحد الأقصى لعدد المعاملات المحددة صراحةً في التعليمات.
(في الأمثلة التالية، a و b و c هي عناوين (مباشرة أو محسوبة) تشير إلى خلايا الذاكرة، بينما reg1 وما إلى ذلك تشير إلى سجلات الجهاز.)
ج = أ + ب
- آلات ذات معامل صفري ( آلات ذات عنوان صفري )، ما يسمى بآلات المكدس : تتم جميع العمليات الحسابية باستخدام الموضع العلوي أو الموضعين العلويين على المكدس: [ 10 ]
push a،push b،add،pop c.C = A+Bيحتاج إلى أربع تعليمات . [ 11 ] بالنسبة لآلات المكدس، فإن مصطلحي "المعامل 0" و"العنوان الصفري" ينطبقان على التعليمات الحسابية، ولكن ليس على جميع التعليمات، حيث يتم استخدام تعليمات الدفع والسحب ذات المعامل 1 للوصول إلى الذاكرة.
- تشمل آلات المعامل الواحد ( آلات العنوان الواحد )، والتي تسمى آلات المُراكم ، أجهزة الكمبيوتر المبكرة والعديد من وحدات التحكم الدقيقة الصغيرة : تحدد معظم التعليمات معاملًا أيمنًا واحدًا (أي ثابتًا أو سجلًا أو موقعًا في الذاكرة)، مع المُراكم الضمني كمعامل أيسر (والوجهة إن وجدت):
load a،add b،store c.C = A+Bيحتاج إلى ثلاث تعليمات . [ 11 ]
- معاملان — تندرج العديد من أجهزة CISC و RISC تحت هذه الفئة:
- CISC —
move Aإلى C ; ثمadd Bإلى C .C = A+Bيتطلب ذلك تعليمتين . وهذا في الواقع "يخزن" النتيجة دون الحاجة إلى تعليمة تخزين صريحة .
- CISC — غالبًا ما تقتصر الآلات على معامل ذاكرة واحد لكل تعليمة:
load a,reg1;add b,reg1;store reg1,c; يتطلب هذا زوج تحميل/تخزين لأي حركة ذاكرة بغض النظر عما إذا كانتaddالنتيجة عبارة عن زيادة مخزنة في مكان مختلف، كما فيC = A+B، أو نفس موقع الذاكرة:A = A+B.C = A+Bيحتاج إلى ثلاث تعليمات .
- RISC — تتطلب هذه التعليمات عمليات تحميل صريحة للذاكرة، وستكون كالتالي:
load a,reg1;load b,reg2;add reg1,reg2;store reg2,c.C = A+Bيحتاج إلى أربع تعليمات .
- CISC —
- 3-معامل، مما يسمح بإعادة استخدام البيانات بشكل أفضل: [ 12 ]
- CISC — يصبح إما تعليمة واحدة:
add a,b,cC = A+Bيحتاج إلى تعليمات واحدة .
- CISC — أو، على الأجهزة التي تقتصر على معاملين للذاكرة لكل تعليمة،
move a,reg1؛add reg1,b,c؛C = A+Bيحتاج إلى تعليماتين .
- تستخدم تعليمات RISC الحسابية السجلات فقط، لذا يلزم وجود تعليمات تحميل/تخزين صريحة ذات معاملين:
load a,reg1;load b,reg2;add reg1+reg2->reg3;store reg3,c;C = A+Bيحتاج إلى أربع تعليمات .- على عكس المعاملات الثنائية أو المعاملات الأحادية، فإن هذا يترك القيم الثلاث a و b و c في السجلات متاحة لإعادة استخدامها لاحقًا. [ 12 ]
- CISC — يصبح إما تعليمة واحدة:
- المزيد من المعاملات - تسمح بعض أجهزة CISC بمجموعة متنوعة من أوضاع العنونة التي تسمح بأكثر من 3 معاملات (سجلات أو عمليات الوصول إلى الذاكرة)، مثل تعليمات تقييم كثير الحدود VAX "POLY".
نظراً للعدد الكبير من البتات اللازمة لترميز السجلات الثلاثة لتعليمات ذات ثلاثة معاملات، فإن معمارية RISC التي تحتوي على تعليمات 16 بت هي في الغالب تصميمات ذات معاملين، مثل Atmel AVR و TI MSP430 وبعض إصدارات ARM Thumb . أما معمارية RISC التي تحتوي على تعليمات 32 بت فهي عادةً تصميمات ذات ثلاثة معاملات، مثل معمارية ARM و AVR32 و MIPS و Power ISA و SPARC . مع ذلك، حتى معمارية RISC ذات الثلاثة معاملات ستتضمن، بتكلفة باهظة، تعليمات ضرب وجمع مدمجة ذات أربعة معاملات، وذلك لضرورة تحسين الدقة. ومن الأمثلة الحديثة على ذلك Power ISA و RISC-V .
تُحدد كل تعليمة عددًا من المعاملات (سجلات، مواقع ذاكرة، أو قيم فورية) بشكل صريح . تُعطي بعض التعليمات أحد المعاملين أو كليهما ضمنيًا، كما في حالة تخزينهما أعلى المكدس أو في سجل ضمني. إذا تم إعطاء بعض المعاملات ضمنيًا، فسيقل عدد المعاملات المطلوبة في التعليمة. عندما يُحدد "معامل الوجهة" الوجهة صراحةً، يجب توفير معامل إضافي. بالتالي، قد يختلف عدد المعاملات المُشفّرة في التعليمة عن العدد اللازم رياضيًا للوسائط لعملية منطقية أو حسابية (عدد المعاملات ) . تُشفّر المعاملات إما في تمثيل "رمز العملية" للتعليمة، أو تُعطى كقيم أو عناوين بعد رمز العملية.
ضغط الدم المسجل
يقيس ضغط المسجلات مدى توفر المسجلات الحرة في أي لحظة أثناء تنفيذ البرنامج. يرتفع ضغط المسجلات عندما يكون عدد كبير من المسجلات المتاحة قيد الاستخدام. وبالتالي، كلما زاد ضغط المسجلات، زادت الحاجة إلى تخزين محتويات المسجلات في الذاكرة المؤقتة أو الذاكرة الرئيسية، وهو ما يُكلف الكثير نظرًا لبطء سرعتهما. يؤدي زيادة عدد المسجلات في بنية النظام إلى تقليل ضغط المسجلات، ولكنه يزيد التكلفة. [ 13 ]
بينما تعاني مجموعات التعليمات المضمنة مثل Thumb من ضغط مرتفع للغاية على المسجلات نظرًا لصغر حجمها، تتمتع مجموعات تعليمات RISC للأغراض العامة مثل MIPS و Alpha بضغط منخفض على المسجلات. كما توفر مجموعات تعليمات CISC مثل x86-64 ضغطًا منخفضًا على المسجلات على الرغم من صغر حجمها. ويعود ذلك إلى تعدد أنماط العنونة والتحسينات (مثل عنونة المسجلات الفرعية، ومعاملات الذاكرة في تعليمات وحدة الحساب والمنطق، والعنونة المطلقة، والعنونة النسبية لعداد البرنامج، وتجاوزات المسجلات) التي توفرها مجموعات تعليمات CISC. [ 14 ]
طول التعليمات
يتفاوت حجم أو طول التعليمات بشكل كبير، من أربعة بتات فقط في بعض المتحكمات الدقيقة إلى مئات البتات في بعض أنظمة VLIW . تتراوح أحجام التعليمات الدنيا في المعالجات المستخدمة في الحواسيب الشخصية والحواسيب المركزية والحواسيب العملاقة بين 8 و64 بتًا. أطول تعليمة ممكنة على معالجات x86 هي 15 بايت (120 بتًا). [ 15 ] ضمن مجموعة التعليمات الواحدة، قد تختلف أطوال التعليمات المختلفة. في بعض البنى، ولا سيما معظم حواسيب مجموعة التعليمات المختصرة (RISC)،تكون التعليمات ذات طول ثابت ، يتوافق عادةً مع حجم الكلمة في تلك البنية. في بنى أخرى، تكون التعليمات ذات طول متغير ، وعادةً ما تكون مضاعفات صحيحة للبايت أو نصف الكلمة . بعض البنى، مثل ARM مع امتداد Thumb، تستخدم ترميزًا متغيرًا مختلطًا ، أي ترميزين ثابتين، عادةً 32 بت و16 بت، حيث لا يمكن مزج التعليمات بحرية، بل يجب التبديل بينهما عند نقطة تفرع (أو حد استثناء في ARMv8).
تعتبر التعليمات ذات الطول الثابت أقل تعقيدًا في التعامل معها من التعليمات ذات الطول المتغير لعدة أسباب (عدم الحاجة إلى التحقق مما إذا كانت التعليمات تمتد على خط ذاكرة التخزين المؤقت أو حدود صفحة الذاكرة الافتراضية، [ 12 ] على سبيل المثال)، وبالتالي يسهل تحسينها من أجل السرعة.
كثافة الكود
في أوائل الستينيات، كانت الذاكرة الرئيسية للحواسيب باهظة الثمن ومحدودة للغاية، حتى في الحواسيب المركزية. وكان تقليل حجم البرنامج لضمان ملاءمته للذاكرة المحدودة أمرًا بالغ الأهمية. ولذلك، كان حجم التعليمات اللازمة لأداء مهمة معينة، أي كثافة التعليمات البرمجية ، سمةً أساسيةً لأي مجموعة تعليمات. وظلت هذه السمة مهمةً في الذاكرات الصغيرة للحواسيب الصغيرة، ثم في المعالجات الدقيقة. ولا تزال الكثافة مهمةً حتى اليوم، لتطبيقات الهواتف الذكية، والتطبيقات التي يتم تنزيلها في المتصفحات عبر اتصالات الإنترنت البطيئة، وفي ذاكرة القراءة فقط (ROM) للتطبيقات المدمجة. ومن المزايا العامة لزيادة الكثافة تحسين فعالية ذاكرة التخزين المؤقت وجلب التعليمات المسبق.
غالبًا ما تحتوي الحواسيب ذات الكثافة البرمجية العالية على تعليمات معقدة لإدخال الإجراءات، والإرجاع المُعامل، والحلقات، وما إلى ذلك (لذلك سُميت لاحقًا بحواسيب مجموعة التعليمات المعقدة ، CISC ). مع ذلك، فإن تعليمات CISC الأكثر شيوعًا تجمع ببساطة عملية حسابية منطقية أساسية، مثل "الجمع"، مع الوصول إلى مُعامل واحد أو أكثر في الذاكرة (باستخدام أنماط عنونة مثل المباشرة، وغير المباشرة، والمفهرسة، وما إلى ذلك). قد تسمح بعض البنى بمعاملين أو ثلاثة (بما في ذلك النتيجة) مباشرةً في الذاكرة، أو قد تكون قادرة على أداء وظائف مثل الزيادة التلقائية للمؤشر، وما إلى ذلك. قد تحتوي مجموعات التعليمات المُنفذة برمجياً على تعليمات أكثر تعقيدًا وقوة.
ظهرت معالجات RISC ( المعالجات ذات مجموعة التعليمات المختصرة ) على نطاق واسع خلال فترة النمو السريع لأنظمة الذاكرة الفرعية. تُضحي هذه المعالجات بكثافة التعليمات البرمجية لتبسيط دوائر التنفيذ، وتسعى إلى تحسين الأداء من خلال زيادة ترددات الساعة وعدد المسجلات. عادةً ما تُنفذ تعليمة RISC عملية واحدة فقط، مثل "جمع" المسجلات أو "تحميل" البيانات من موقع في الذاكرة إلى مسجل. تتميز مجموعة تعليمات RISC بطول ثابت ، بينما تتفاوت أطوال تعليمات CISC بشكل كبير. ومع ذلك، نظرًا لأن معالجات RISC تتطلب عادةً عددًا أكبر من التعليمات، وغالبًا ما تكون أطول، لتنفيذ مهمة معينة، فإنها بطبيعتها لا تستخدم عرض نطاق ناقل البيانات وذاكرة التخزين المؤقت على النحو الأمثل.
تتميز بعض مجموعات تعليمات RISC المدمجة، مثل Thumb و AVR32، بكثافة عالية جدًا بفضل تقنية تُسمى ضغط التعليمات البرمجية. تقوم هذه التقنية بتجميع تعليمتين من 16 بت في كلمة واحدة من 32 بت، ثم يتم فك ضغطها في مرحلة فك التشفير وتنفيذها كتعليمتين منفصلتين. [ 16 ]
تُعدّ الحواسيب ذات مجموعة التعليمات الدنيا (MISC) عادةً نوعًا من الحواسيب المكدسية ، حيث تحتوي على عدد قليل من التعليمات المنفصلة (8-32)، مما يسمح بتضمين عدة تعليمات في كلمة واحدة. غالبًا ما تتطلب هذه الأنواع من النوى مساحة صغيرة من السيليكون لتنفيذها، لذا يُمكن تحقيقها بسهولة في مصفوفة البوابات المنطقية القابلة للبرمجة (FPGA ) أو في شكل متعدد النوى . تتشابه كثافة التعليمات في MISC مع كثافة التعليمات في RISC؛ ويتم تعويض زيادة كثافة التعليمات من خلال الحاجة إلى المزيد من التعليمات الأساسية لإنجاز مهمة ما. [ 17 ]
أُجريت أبحاث حول ضغط الملفات التنفيذية كآلية لتحسين كثافة التعليمات البرمجية. وتصف رياضيات تعقيد كولموغوروف التحديات والحدود التي تواجه هذا الأمر.
عمليًا، تعتمد كثافة الكود أيضًا على المُصرّف . تحتوي معظم المُصرّفات المُحسّنة على خيارات تتحكم في ما إذا كان ينبغي تحسين توليد الكود لسرعة التنفيذ أو لكثافة الكود. على سبيل المثال، يتيح مُصرّف GCC خيار -Osالتحسين لتقليل حجم كود الآلة، -O3والتحسين لسرعة التنفيذ على حساب زيادة حجم كود الآلة.
التمثيل
نادراً ما يتم تحديد التعليمات التي تشكل برنامجًا باستخدام شكلها الرقمي الداخلي ( رمز الآلة )؛ فقد يتم تحديدها بواسطة المبرمجين باستخدام لغة التجميع ، أو بشكل أكثر شيوعًا، قد يتم إنشاؤها من لغات البرمجة عالية المستوى بواسطة المترجمات . [ 18 ]
تصميم
يُعدّ تصميم مجموعات التعليمات مسألة معقدة. مرّ المعالج الدقيق بمرحلتين تاريخيتين. الأولى كانت حاسوب CISC (حاسوب مجموعة التعليمات المعقدة)، الذي احتوى على العديد من التعليمات المختلفة. ولكن في سبعينيات القرن الماضي، أجرت شركات مثل IBM أبحاثًا واكتشفت إمكانية حذف العديد من التعليمات من المجموعة. وكانت النتيجة حاسوب RISC (حاسوب مجموعة التعليمات المختصرة)، وهو بنية تستخدم مجموعة أصغر من التعليمات. قد توفر مجموعة التعليمات الأبسط إمكانية سرعات أعلى، وحجم معالج أصغر، واستهلاك طاقة أقل. مع ذلك، قد تُحسّن مجموعة التعليمات الأكثر تعقيدًا العمليات الشائعة، وتُحسّن كفاءة الذاكرة والتخزين المؤقت ، أو تُبسّط البرمجة.
يخصص بعض مصممي مجموعات التعليمات رمزًا واحدًا أو أكثر من رموز العمليات لنوع معين من استدعاءات النظام أو مقاطعات البرامج . على سبيل المثال، يستخدم معالج MOS Technology 6502 الرمز 00 H ، بينما يستخدم معالج Zilog Z80 الرموز الثمانية C7، CF، D7، DF، E7، EF، F7، FF H [ 19 ] ، في حين يستخدم معالج Motorola 68000 رموزًا في النطاق من 4E40 H إلى 4E4F H [ 20 ] .
تُصبح الآلات الافتراضية السريعة أسهل بكثير في التنفيذ إذا كانت مجموعة التعليمات تفي بمتطلبات بوبك وغولدبيرغ للمحاكاة الافتراضية .
إن شريحة NOP المستخدمة في البرمجة الواعية بالمناعة أسهل بكثير في التنفيذ إذا تم تفسير حالة الذاكرة "غير المبرمجة" على أنها NOP .
في الأنظمة التي تحتوي على معالجات متعددة، تكون خوارزميات التزامن غير الحظرية أسهل بكثير في التنفيذ إذا كانت مجموعة التعليمات تتضمن دعمًا لشيء مثل " جلب وإضافة " أو " تحميل وربط/تخزين مشروط " (LL/SC) أو " مقارنة وتبديل ذري ".
تنفيذ مجموعة التعليمات
يمكن تنفيذ مجموعة تعليمات معينة بطرق متنوعة. جميع طرق تنفيذ مجموعة تعليمات محددة توفر نفس نموذج البرمجة ، وجميع تطبيقات تلك المجموعة قادرة على تشغيل نفس الملفات التنفيذية. وتؤدي الطرق المختلفة لتنفيذ مجموعة التعليمات إلى مفاضلات مختلفة بين التكلفة والأداء واستهلاك الطاقة والحجم، وما إلى ذلك.
عند تصميم البنية الدقيقة للمعالج، يستخدم المهندسون وحدات من الدوائر الإلكترونية "المُثبّتة" (والتي غالبًا ما تُصمّم بشكل منفصل) مثل الجامعات، والمُضاعِفات، والعدادات، والمسجلات، ووحدات الحساب والمنطق، وما إلى ذلك. ثم تُستخدم لغة نقل سجلات لوصف فك تشفير وتسلسل كل تعليمة من تعليمات مجموعة التعليمات باستخدام هذه البنية الدقيقة المادية. هناك طريقتان أساسيتان لبناء وحدة تحكم لتنفيذ هذا الوصف (مع أن العديد من التصاميم تستخدم طرقًا وسطية أو حلولًا وسطية):
- تقوم بعض تصميمات الكمبيوتر "بتوصيل" مجموعة التعليمات الكاملة وفك تشفيرها وتسلسلها (تمامًا مثل بقية البنية الدقيقة).
- تستخدم تصميمات أخرى إجراءات أو جداول التعليمات البرمجية الدقيقة (أو كليهما) للقيام بذلك، باستخدام ذاكرة القراءة فقط أو ذاكرة الوصول العشوائي القابلة للكتابة ( مخزن التحكم القابل للكتابة )، أو مصفوفات المنطق القابلة للبرمجة ، أو كليهما.
تستخدم بعض تصميمات وحدات المعالجة المركزية ذات الترميز الدقيق مع مخزن تحكم قابل للكتابة هذه الخاصية للسماح بتغيير مجموعة التعليمات (على سبيل المثال، معالج Rekursiv ومعالج Imsys Cjip ). [ 21 ]
قد تستخدم وحدات المعالجة المركزية المصممة للحوسبة القابلة لإعادة التكوين مصفوفات البوابات القابلة للبرمجة الميدانية (FPGAs).
يمكن أيضًا محاكاة بنية مجموعة التعليمات (ISA) برمجيًا باستخدام مترجم . وبطبيعة الحال، نظرًا لتكاليف الترجمة الإضافية، فإن هذه الطريقة أبطأ من تشغيل البرامج مباشرةً على الجهاز المُحاكى، إلا إذا كان الجهاز الذي يُشغّل المُحاكي أسرع بعشرة أضعاف. واليوم، من الممارسات الشائعة لدى مُصنّعي بنى مجموعات التعليمات أو البنى الدقيقة الجديدة توفير برامج محاكاة لمطوري البرامج قبل أن يكون التنفيذ على الأجهزة جاهزًا.
غالبًا ما تؤثر تفاصيل التنفيذ تأثيرًا كبيرًا على التعليمات المختارة لمجموعة التعليمات. على سبيل المثال، تسمح العديد من تطبيقات خط أنابيب التعليمات بتحميل أو تخزين واحد فقط في الذاكرة لكل تعليمة، مما يؤدي إلى بنية التحميل والتخزين (RISC). مثال آخر، أدت بعض الطرق المبكرة لتنفيذ خط أنابيب التعليمات إلى ظهور خانة تأخير .
دفعت متطلبات معالجة الإشارات الرقمية عالية السرعة في الاتجاه المعاكس، مما أجبر على تنفيذ التعليمات بطريقة محددة. على سبيل المثال، لتنفيذ المرشحات الرقمية بسرعة كافية، يجب أن تستخدم تعليمة MAC في معالج الإشارات الرقمية (DSP) النموذجي نوعًا من بنية هارفارد التي يمكنها جلب تعليمة وكلمتين من البيانات في وقت واحد، وتتطلب مضاعف ضرب-تجميع أحادي الدورة .
انظر أيضاً
- مقارنة بين بنى مجموعات التعليمات
- مجموعة التعليمات المضغوطة
- هندسة الحاسوب
- منافس
- محاكي مجموعة التعليمات
- العمليات الدقيقة
- الحوسبة بدون مجموعة تعليمات
- OVPsim – محاكي أنظمة كامل يوفر القدرة على إنشاء/نمذجة/محاكاة أي مجموعة تعليمات باستخدام لغة C وواجهات برمجة التطبيقات القياسية
- تصميم المعالج
- محاكاة
- لغة نقل التسجيل (RTL)
مراجع
- ↑ "مسرد المصطلحات: بنية مجموعة التعليمات (ISA)" . arm.com . مؤرشف من الأصل بتاريخ 11-11-2023 . تم الاطلاع عليه بتاريخ 03-02-2024 .
- ↑ بو، إيمرسون دبليو؛ جونسون، لايل آر؛ بالمر، جون إتش (1991). أنظمة IBM 360 وأنظمة 370 المبكرة . مطبعة معهد ماساتشوستس للتكنولوجيا. ISBN 0-262-16123-0.
- ↑ تشين، كريستال؛ نوفيك، جريج؛ شيمانو، كيرك (16 ديسمبر 2006). "معمارية RISC: RISC مقابل CISC" . cs.stanford.edu . مؤرشف من الأصل في 21 فبراير 2015. تم الاطلاع عليه في 21 فبراير 2015 .
- ↑ شلانسكر، مايكل س.؛ راو، ب. راماكريشنا (فبراير 2000). "EPIC: الحوسبة المتوازية الصريحة للتعليمات". مجلة الكمبيوتر . 33 (2): 37-45 . doi : 10.1109/2.820037 .
- ↑ شاوت، عدنان؛ إلدوس، تيسير (صيف 2003). "حول تصنيف بنية الحاسوب" . المجلة الدولية للعلوم والتكنولوجيا . 14 : 3. تاريخ الاسترجاع: 2 مارس 2023 .
- ↑ جيلريث، ويليام ف.؛ لابلانت، فيليب أ. (6 ديسمبر 2012). هندسة الحاسوب: منظور تبسيطي . سبرينغر ساينس + بيزنس ميديا . ISBN 978-1-4615-0237-1.
- 1 2 هينيسي وباترسون 2003 ، ص. 108.
- ↑ دوراند، بول. "بنية مجموعة التعليمات (ISA)" . مقدمة في علوم الحاسوب CS 0 .
- ↑ "ملخص مجموعة تعليمات رينيساس SH" . Shared-ptr.com . تم الاطلاع عليه في 16 يونيو 2026 .
- ↑ هينيسي وباترسون 2003 ، ص 92.
- 1 2 هينيسي وباترسون 2003 ، ص. 93.
- ١ ٢ ٣ كوك، جون؛ ماركشتاين، فيكتوريا (يناير ١٩٩٠). "تطور تقنية RISC في شركة IBM" (ملف PDF) . مجلة IBM للبحوث والتطوير . ٣٤ (١): ٤-١١ . doi : 10.1147/rd.341.0004 . تاريخ الاسترجاع : ٢٠٢٦-٠٢-٠٦ .
- ↑ بيج، دانيال (2009). "11. المترجمات". مقدمة عملية في هندسة الحاسوب . سبرينغر. ص 464. Bibcode : 2009pica.book.....P . ISBN 978-1-84882-255-9.
- ↑ فينكات، أشيش؛ تولسن، دين م. (2014). تسخير تنوع بنية مجموعة التعليمات: تصميم معالج متعدد الشرائح غير متجانس بنية مجموعة التعليمات . الندوة الدولية السنوية الحادية والأربعون حول هندسة الحاسوب.
- ↑ "دليل مطوري البرامج لبنيتي Intel® 64 و IA-32" . شركة Intel . تم الاطلاع عليه بتاريخ 5 أكتوبر 2022 .
- ↑ ويفر، فينسنت م.؛ ماكي، سالي أ. (2009). اعتبارات كثافة الشيفرة للهياكل الجديدة . المؤتمر الدولي لهندسة الحاسوب التابع لمعهد مهندسي الكهرباء والإلكترونيات. CiteSeerX 10.1.1.398.1967 . doi : 10.1109/ICCD.2009.5413117 .
- ↑ "RISC مقابل CISC" . cs.stanford.edu . تم الاطلاع عليه بتاريخ 18-12-2021 .
- ↑ هينيسي وباترسون 2003 ، ص 120.
- ↑ جانسل، جاك (26 فبراير 2001). "التصحيح الاستباقي" . embedded.com .
- ↑ دليل مستخدم المعالجات الدقيقة M68000 ذات 8/16/32 بت ( الطبعة التاسعة). TRAP: موتورولا. 1993. ص 4-188.
- ↑ "أعظم المعالجات الدقيقة في الماضي والحاضر (الإصدار 13.4.0)" . cpushack.net . تم الاطلاع عليه بتاريخ 25 يوليو 2014 .
للمزيد من القراءة
- بوين، جوناثان ب. (يوليو-أغسطس 1985). "بطاقات برمجة المعالجات الدقيقة القياسية". المعالجات الدقيقة والأنظمة الدقيقة . 9 (6): 274-290 . doi : 10.1016/0141-9331(85)90116-4 .
- هينيسي، جون ل .؛ باترسون، ديفيد أ. (2003). هندسة الحاسوب: منهج كمي ( الطبعة الثالثة). دار مورغان كوفمان للنشر . ISBN 1-55860-724-2تم الاطلاع عليه بتاريخ 2023-03-04 .
روابط خارجية
الوسائط المتعلقة ببنية مجموعات التعليمات على ويكيميديا كومنز- برمجة الملفات النصية: بطاقات ملخص تعليمات بوين
- صفحة مارك سموثرمان للتصاميم الحاسوبية التاريخية
- وحدات المعالجة المركزية
- معالجة التعليمات
- بنى مجموعات التعليمات
- المعالجات الدقيقة
