مجموعة العمارة تعليمات
كود الآلة |
---|
المفاهيم العامة |
تعليمات |
في علوم الكمبيوتر ، و الهندسة المعمارية مجموعة التعليمات ( ISA )، كما دعا هندسة الكمبيوتر ، هو نموذج مجردة من الكمبيوتر . يُطلق على الجهاز الذي ينفذ التعليمات الموضحة بواسطة ISA ، مثل وحدة المعالجة المركزية (CPU) ، اسم تنفيذ .
بشكل عام ، تحدد ISA أنواع البيانات المدعومة ، والسجلات ، ودعم الأجهزة لإدارة الذاكرة الرئيسية ، والميزات الأساسية (مثل تناسق الذاكرة ، وأنماط العنونة ، والذاكرة الافتراضية ) ، ونموذج الإدخال / الإخراج لمجموعة تطبيقات ISA.
تحدد ISA سلوك رمز الآلة الذي يعمل على تطبيقات ISA بطريقة لا تعتمد على خصائص هذا التطبيق ، مما يوفر توافقًا ثنائيًا بين عمليات التنفيذ. يتيح ذلك إمكانية تنفيذ العديد من معايير ISA التي تختلف في الأداء والحجم المادي والتكلفة المالية (من بين أشياء أخرى) ، ولكنها قادرة على تشغيل نفس رمز الجهاز ، بحيث يمكن استبدال آلة منخفضة الأداء ومنخفضة التكلفة بـ آلة عالية التكلفة وذات أداء أعلى دون الحاجة إلى استبدال البرامج. كما أنها تمكن من تطور البنى الدقيقة من تطبيقات ISA ، بحيث يمكن لتطبيق أحدث وعالي الأداء لـ ISA تشغيل برنامج يعمل على الأجيال السابقة من التطبيقات.
إذا احتفظ نظام التشغيل بواجهة تطبيق ثنائية قياسية ومتوافقة (ABI) من أجل ISA معين ، فسيتم تشغيل رمز الجهاز لـ ISA ونظام التشغيل هذا على عمليات التنفيذ المستقبلية لـ ISA والإصدارات الأحدث من نظام التشغيل هذا. ومع ذلك ، إذا كان ISA يدعم تشغيل أنظمة تشغيل متعددة ، فإنه لا يضمن أن رمز الجهاز لنظام تشغيل واحد سيعمل على نظام تشغيل آخر ، إلا إذا كان نظام التشغيل الأول يدعم تشغيل رمز الجهاز المصمم لنظام التشغيل الآخر.
يمكن توسيع ISA بإضافة تعليمات أو إمكانيات أخرى ، أو إضافة دعم لعناوين أكبر وقيم بيانات ؛ سيظل تطبيق ISA الموسع قادرًا على تنفيذ كود الآلة لإصدارات ISA بدون هذه الامتدادات. سيتم تشغيل كود الآلة باستخدام هذه الامتدادات فقط على عمليات التنفيذ التي تدعم تلك الامتدادات.
التوافق الثنائي الذي توفره يجعل ISAs واحدة من التجريدات الأساسية في الحوسبة .
نظرة عامة
تتميز بنية مجموعة التعليمات عن الهندسة المعمارية الدقيقة ، وهي مجموعة تقنيات تصميم المعالج المستخدمة ، في معالج معين ، لتنفيذ مجموعة التعليمات. يمكن للمعالجات ذات البنى الدقيقة المختلفة أن تشترك في مجموعة تعليمات مشتركة. على سبيل المثال ، تقوم Intel Pentium و Advanced Micro Devices Athlon بتنفيذ إصدارات متطابقة تقريبًا من مجموعة تعليمات x86 ، ولكن لها تصميمات داخلية مختلفة اختلافًا جذريًا.
تم تطوير مفهوم العمارة ، المتميز عن تصميم آلة معينة ، بواسطة Fred Brooks في IBM أثناء مرحلة تصميم System / 360 .
قبل NPL [System / 360] ، كان مصممو أجهزة الكمبيوتر في الشركة يتمتعون بالحرية في الوفاء بأهداف التكلفة ليس فقط من خلال اختيار التقنيات ولكن أيضًا من خلال صياغة التحسينات الوظيفية والمعمارية. على النقيض من ذلك ، فإن هدف التوافق مع SPREAD افترض بنية واحدة لسلسلة من خمسة معالجات تغطي نطاقًا واسعًا من التكلفة والأداء. لا يمكن لأي من فرق التصميم الهندسي الخمسة الاعتماد على القدرة على إجراء تعديلات في المواصفات المعمارية كطريقة لتخفيف الصعوبات في تحقيق أهداف التكلفة والأداء. [1] : ص 137
Some virtual machines that support bytecode as their ISA such as Smalltalk, the Java virtual machine, and Microsoft's Common Language Runtime, implement this by translating the bytecode for commonly used code paths into native machine code. In addition, these virtual machines execute less frequently used code paths by interpretation (see: Just-in-time compilation). Transmeta implemented the x86 instruction set atop VLIW processors in this fashion.
Classification of ISAs
يمكن تصنيف معيار ISA بعدة طرق مختلفة. التصنيف الشائع هو التعقيد المعماري . يحتوي كمبيوتر مجموعة التعليمات المعقدة (CISC) على العديد من الإرشادات المتخصصة ، والتي قد لا يتم استخدام بعضها إلا نادرًا في البرامج العملية. يعمل كمبيوتر مجموعة التعليمات المختصرة (RISC) على تبسيط المعالج من خلال التنفيذ الفعال فقط للتعليمات التي يتم استخدامها بشكل متكرر في البرامج ، بينما يتم تنفيذ العمليات الأقل شيوعًا كإجراءات فرعية ، مع تعويض وقت تنفيذ المعالج الإضافي الناتج عن الاستخدام غير المتكرر. [2]
تتضمن الأنواع الأخرى معماريات كلمة تعليمات طويلة جدًا (VLIW) ، وكلمة التعليمات الطويلة وثيقة الصلة (LIW) وبنى حوسبة التعليمات المتوازية (EPIC). تسعى هذه الأبنية إلى استغلال التوازي على مستوى التعليمات مع أجهزة أقل من RISC و CISC من خلال جعل المترجم مسؤولاً عن إصدار التعليمات والجدولة.
تمت دراسة البنى مع أقل تعقيدًا ، مثل كمبيوتر مجموعة التعليمات الأدنى (MISC) وجهاز كمبيوتر واحد لمجموعة التعليمات (OISC). هذه أنواع مهمة من الناحية النظرية ، لكن لم يتم تسويقها.
تعليمات
يتم بناء لغة الآلة من عبارات أو تعليمات منفصلة . في بنية المعالجة ، قد تحدد تعليمات معينة ما يلي:
- كود التشغيل (التعليمات المراد تنفيذها) على سبيل المثال الإضافة والنسخ والاختبار
- أي معاملات صريحة:
- السجلات
- القيم الحرفية / الثابتة
- طرق العنونة المستخدمة للوصول إلى الذاكرة
يتم إنشاء عمليات أكثر تعقيدًا من خلال الجمع بين هذه التعليمات البسيطة ، والتي يتم تنفيذها بالتتابع ، أو وفقًا لتوجيهات التحكم في التدفق .
أنواع التعليمات
تتضمن أمثلة العمليات الشائعة للعديد من مجموعات التعليمات ما يلي:
معالجة البيانات وعمليات الذاكرة
- تعيين في السجل إلى قيمة ثابتة ثابتة.
- انسخ البيانات من موقع ذاكرة أو سجل إلى موقع ذاكرة أو سجل (غالبًا ما يُطلق على تعليمات الآلة اسم نقل ؛ ومع ذلك ، فإن المصطلح مضلل). تُستخدم لتخزين محتويات السجل ، نتيجة عملية حسابية ، أو لاسترداد البيانات المخزنة لإجراء عملية حسابية عليها لاحقًا. غالبًا ما تسمى عمليات التحميل والتخزين .
- قراءة و كتابة البيانات من الأجهزة.
العمليات الحسابية والمنطقية
- Add, subtract, multiply, or divide the values of two registers, placing the result in a register, possibly setting one or more condition codes in a status register.
- increment, decrement in some ISAs, saving operand fetch in trivial cases.
- Perform bitwise operations, e.g., taking the conjunction and disjunction of corresponding bits in a pair of registers, taking the negation of each bit in a register.
- Compare two values in registers (for example, to see if one is less, or if they are equal).
- تعليمات الفاصلة العائمة لياليلالحسابية على أرقام الفاصلة العائمة.
عمليات تدفق التحكم
- التفرع إلى موقع آخر في البرنامج وتنفيذ التعليمات هناك.
- التفرع المشروط إلى موقع آخر إذا كان هناك شرط معين.
- فرع غير مباشر إلى مكان آخر.
- اتصل بمجموعة أخرى من التعليمات البرمجية ، مع حفظ موقع التعليمات التالية كنقطة للعودة إليها.
تعليمات المعالج المساعد
- تحميل / تخزين البيانات من وإلى المعالج الثانوي أو تبادلها مع سجلات وحدة المعالجة المركزية.
- قم بإجراء عمليات المعالج المساعد.
تعليمات معقدة
قد تتضمن المعالجات تعليمات "معقدة" في مجموعة التعليمات الخاصة بهم. تقوم تعليمات واحدة "معقدة" بشيء قد يتطلب العديد من الإرشادات على أجهزة الكمبيوتر الأخرى. [ بحاجة لمصدر ] يتم تمييز هذه التعليمات من خلال التعليمات التي تتخذ خطوات متعددة ، وتتحكم في وحدات وظيفية متعددة ، أو تظهر بطريقة أخرى على نطاق أكبر من الجزء الأكبر من التعليمات البسيطة التي ينفذها المعالج المحدد. تتضمن بعض أمثلة التعليمات "المعقدة" ما يلي:
- نقل سجلات متعددة إلى الذاكرة أو منها (خاصة المكدس ) مرة واحدة
- نقل كتل كبيرة من الذاكرة (على سبيل المثال ، نسخ سلسلة أو نقل DMA )
- صحيح معقدة والحساب الفاصلة العائمة (مثل الجذر التربيعي ، أو وظائف فائقة مثل اللوغاريتم ، جيب ، جيب التمام ، وما إلى ذلك)
- SIMD تعليمات الصورة، تعليمة واحدة تنفيذ عملية على العديد من القيم متجانسة في موازاة ذلك، ربما في مخصصةسجلات SIMD
- القيام بتعليمات اختبار وضبط ذرية أو تعليمات ذرية أخرى للقراءة والتعديل والكتابة
- التعليمات التي تؤدي عمليات ALU باستخدام معامل من الذاكرة بدلاً من السجل
Complex instructions are more common in CISC instruction sets than in RISC instruction sets, but RISC instruction sets may include them as well. RISC instruction sets generally do not include ALU operations with memory operands, or instructions to move large blocks of memory, but most RISC instruction sets include SIMD or vector instructions that perform the same arithmetic operation on multiple pieces of data at the same time. SIMD instructions have the ability of manipulating large vectors and matrices in minimal time. SIMD instructions allow easy parallelization of algorithms commonly involved in sound, image, and video processing. Various SIMD implementations have been brought to market under trade names such as MMX, 3D الآن! ، و AltiVec .
ترميز التعليمات
في البنى التقليدية ، تتضمن التعليمات كود التشغيل الذي يحدد العملية المطلوب إجراؤها ، مثل إضافة محتويات الذاكرة للتسجيل - وصفر أو أكثر من محددات المعامل ، والتي قد تحدد السجلات أو مواقع الذاكرة أو البيانات الحرفية. قد يكون لمحددات المعامل أوضاع عنونة تحدد معناها أو قد تكون في حقول ثابتة. في معماريات كلمة تعليمات طويلة جدًا (VLIW) ، والتي تتضمن العديد من أبنية الكود الصغير ، يتم تحديد العديد من أكواد التشغيل والمعاملات المتزامنة في تعليمة واحدة.
لا تحتوي بعض مجموعات التعليمات الغريبة على حقل كود التشغيل ، مثل البنى المشغلة للنقل (TTA) ، المعامل (المعاملات) فقط.
على الجهاز الظاهري الرابع وغيرها " 0-المعامل " مجموعات التعليمات تفتقر إلى أية حقول محدد المعامل، مثل بعض الآلات كومة بما في ذلك NOSC. [3] [ مطلوب مصدر أفضل ]
غالبًا ما تحتوي التعليمات الشرطية على حقل أصلي - عدد قليل من البتات التي تشفر الشرط المحدد للتسبب في إجراء عملية بدلاً من عدم إجرائها. على سبيل المثال ، ستنقل تعليمات الفرع الشرطي التحكم إذا كان الشرط صحيحًا ، بحيث يستمر التنفيذ إلى جزء مختلف من البرنامج ، ولا ينقل التحكم إذا كان الشرط خاطئًا ، بحيث يستمر التنفيذ بالتتابع. تحتوي بعض مجموعات التعليمات أيضًا على تحركات شرطية ، بحيث يتم تنفيذ النقل ، ويتم تخزين البيانات في الموقع المستهدف ، إذا كان الشرط صحيحًا ، ولم يتم تنفيذه ، ولم يتم تعديل الموقع المستهدف ، إذا كان الشرط خاطئًا. وبالمثل ، يحتوي IBM z / Architecture على تعليمات تخزين مشروطة. تتضمن بعض مجموعات التعليمات حقلاً أصليًا في كل تعليمات ؛ هذا يسميتحديد الفرع .
عدد المعاملات
يمكن تصنيف مجموعات التعليمات من خلال الحد الأقصى لعدد المعاملات المحددة صراحة في التعليمات.
(في الأمثلة التالية ، a و b و c هي عناوين (مباشرة أو محسوبة) تشير إلى خلايا الذاكرة ، بينما يشير reg1 وما إلى ذلك إلى سجلات الجهاز.)
ج = أ + ب
- 0 معامل ( آلات ذات عنوان صفري ) ، ما يسمى بآلات المكدس : تتم جميع العمليات الحسابية باستخدام الموضع الأول أو الموضعين العلويين في المكدس:
push a
،push b
،add
،pop c
.C = A+B
needs four instructions. For stack machines, the terms "0-operand" and "zero-address" apply to arithmetic instructions, but not to all instructions, as 1-operand push and pop instructions are used to access memory.
- 1-operand (one-address machines), so called accumulator machines, include early computers and many small microcontrollers: most instructions specify a single right operand (that is, constant, a register, or a memory location), with the implicit accumulator as the left operand (and the destination if there is one):
load a
,add b
,store c
.C = A+B
needs three instructions.
- 2-operand — many CISC and RISC machines fall under this category:
- CISC —
move A
to C; thenadd B
to C.C = A+B
needs two instructions. This effectively 'stores' the result without an explicit store instruction.
- CISC — Often machines are limited to one memory operand per instruction:
load a,reg1
;add b,reg1
;store reg1,c
; This requires a load/store pair for any memory movement regardless of whether theadd
result is an augmentation stored to a different place, as inC = A+B
, or the same memory location:A = A+B
.C = A+B
needs three instructions.
- RISC — Requiring explicit memory loads, the instructions would be:
load a,reg1
;load b,reg2
;add reg1,reg2
;store reg2,c
.C = A+B
needs four instructions.
- CISC —
- 3-operand, allowing better reuse of data:[4]
- CISC — It becomes either a single instruction:
add a,b,c
C = A+B
needs one instruction.
- CISC — Or, on machines limited to two memory operands per instruction,
move a,reg1
;add reg1,b,c
;C = A+B
needs two instructions.
- RISC — arithmetic instructions use registers only, so explicit 2-operand load/store instructions are needed:
load a,reg1
;load b,reg2
;add reg1+reg2->reg3
;store reg3,c
;C = A+B
needs four instructions.- Unlike 2-operand or 1-operand, this leaves all three values a, b, and c in registers available for further reuse.[4]
- CISC — It becomes either a single instruction:
- المزيد من المعاملات — تسمح بعض أجهزة CISC بمجموعة متنوعة من أوضاع العنونة التي تسمح بأكثر من 3 معاملات (مسجلات أو وصول إلى الذاكرة) ، مثل تعليمات التقييم متعدد الحدود VAX "POLY".
نظرًا للعدد الكبير من البتات اللازمة لتشفير السجلات الثلاثة لتعليمات ذات 3 معاملات ، فإن معماريات RISC التي تحتوي على تعليمات 16 بت هي دائمًا تصميمات ثنائية المعامل ، مثل Atmel AVR و TI MSP430 وبعض إصدارات ARM Thumb . عادة ما تكون معماريات RISC التي تحتوي على تعليمات 32 بت عبارة عن تصميمات ذات 3 معاملات ، مثل معماريات ARM و AVR32 و MIPS و Power ISA و SPARC .
تحدد كل تعليمة عددًا من المعاملات (السجلات ، مواقع الذاكرة ، أو القيم الفورية) بشكل صريح . تعطي بعض التعليمات أحد المعاملين أو كليهما ضمنيًا ، مثل تخزينها أعلى المكدس أو في سجل ضمني. إذا تم إعطاء بعض المعاملات ضمنيًا ، فيجب تحديد عدد أقل من المعاملات في التعليمات. عندما يحدد "مُعامل الوجهة" الوجهة بوضوح ، يجب توفير مُعامل إضافي. وبالتالي ، قد يختلف عدد المعاملات المشفرة في التعليمات عن العدد الضروري رياضيًا من الوسائط لعملية منطقية أو حسابية ( arity ). يتم إما ترميز المعاملات في تمثيل "كود التشغيل" للتعليمات ، أو يتم تقديمها كقيم أو عناوين بعد رمز التشغيل.
تسجيل الضغط
يقيس ضغط التسجيل مدى توفر السجلات المجانية في أي وقت أثناء تنفيذ البرنامج. يكون ضغط التسجيل مرتفعًا عند استخدام عدد كبير من السجلات المتاحة ؛ وبالتالي ، كلما زاد ضغط التسجيل ، زاد عدد مرات سكب محتويات السجل في الذاكرة. تؤدي زيادة عدد السجلات في بنية إلى تقليل ضغط التسجيل ولكنها تزيد من التكلفة. [5]
في حين أن مجموعات التعليمات المضمنة مثل الإبهام تعاني من ضغط تسجيل مرتفع للغاية لأن لديها مجموعات تسجيل صغيرة ، فإن RISC ISAs للأغراض العامة مثل MIPS و Alpha تتمتع بضغط تسجيل منخفض. تقدم ISAs CISC مثل x86-64 ضغط تسجيل منخفض على الرغم من وجود مجموعات تسجيل أصغر. ويرجع ذلك إلى العديد من أوضاع العنونة والتحسينات (مثل عنونة السجل الفرعي ، ومعاملات الذاكرة في تعليمات ALU ، والعنونة المطلقة ، والعنونة النسبية للكمبيوتر الشخصي ، والتسجيل من أجل انسكابات التسجيل) التي توفرها ISA لـ CISC. [6]
طول التعليمات
The size or length of an instruction varies widely, from as little as four bits in some microcontrollers to many hundreds of bits in some VLIW systems. Processors used in personal computers, mainframes, and supercomputers have instruction sizes between 8 and 64 bits. The longest possible instruction on x86 is 15 bytes (120 bits).[7] Within an instruction set, different instructions may have different lengths. In some architectures, notably most reduced instruction set computers (RISC), التعليمات ذات طول ثابت ، يتوافق عادةً مع حجم كلمة تلك العمارة. في أبنية أخرى، تعليمات لها طول متغير، مضاعفات عادة لا يتجزأ من البايت أو halfword . يحتوي البعض ، مثل ARM مع ملحق الإبهام ، علىتشفير متغير مختلط ، وهما ترميزان ثابتان ، عادةً 32 بت و 16 بت ، حيث لا يمكن خلط التعليمات بحرية ولكن يجب التبديل بينهما على فرع (أو حد الاستثناء في ARMv8 ).
عادةً ما تحتوي مجموعة تعليمات RISC على طول تعليمات ثابت (غالبًا 4 بايت = 32 بت) ، في حين أن مجموعة تعليمات CISC النموذجية قد تحتوي على تعليمات ذات طول متنوع على نطاق واسع (من 1 إلى 15 بايت لـ x86). تعتبر التعليمات ذات الطول الثابت أقل تعقيدًا في التعامل معها من الإرشادات ذات الطول المتغير لعدة أسباب (عدم الاضطرار إلى التحقق مما إذا كانت التعليمات تتداخل مع سطر ذاكرة التخزين المؤقت أو حدود صفحة الذاكرة الظاهرية ، [4] على سبيل المثال) ، وبالتالي يسهل تحسينها إلى حد ما من أجل سرعة.
كثافة الكود
في أجهزة الكمبيوتر في أوائل الستينيات ، كانت الذاكرة الرئيسية باهظة الثمن ومحدودة للغاية ، حتى على أجهزة الكمبيوتر المركزية. غالبًا ما كان تصغير حجم البرنامج للتأكد من ملاءمته للذاكرة المحدودة أمرًا أساسيًا. وبالتالي ، كان الحجم المشترك لجميع التعليمات اللازمة لأداء مهمة معينة ، كثافة الكود ، سمة مهمة لأي مجموعة تعليمات. ظلت مهمة في الذكريات الصغيرة في البداية للحواسيب الصغيرة ثم المعالجات الدقيقة. لا تزال الكثافة مهمة اليوم ، لتطبيقات الهواتف الذكية ، والتطبيقات التي يتم تنزيلها في المتصفحات عبر اتصالات الإنترنت البطيئة ، وفي ذاكرة القراءة فقط للتطبيقات المضمنة. الميزة الأكثر عمومية لزيادة الكثافة هي تحسين فعالية ذاكرات التخزين المؤقت والجلب المسبق للتعليمات.
غالبًا ما تحتوي أجهزة الكمبيوتر ذات كثافة التعليمات البرمجية العالية على تعليمات معقدة لإدخال الإجراء ، والإرجاع ذات المعلمات ، والحلقات ، وما إلى ذلك (لذلك يُسمى بأثر رجعي أجهزة كمبيوتر مجموعة التعليمات المعقدة ، CISC ). ومع ذلك ، فإن تعليمات "CISC" الأكثر شيوعًا ، أو الأكثر تكرارًا ، تجمع فقط عملية ALU أساسية ، مثل "add" ، مع الوصول إلى واحد أو أكثر من المعاملات في الذاكرة (باستخدام أوضاع عنونة مثل المباشر ، وغير المباشر ، والمفهرس ، وما إلى ذلك) . قد تسمح معماريات معينة بوجود اثنين أو ثلاثة معاملات (بما في ذلك النتيجة) مباشرة في الذاكرة أو قد تكون قادرة على أداء وظائف مثل زيادة المؤشر تلقائيًا ، وما إلى ذلك. قد تحتوي مجموعات التعليمات المنفذة بواسطة البرامج على تعليمات أكثر تعقيدًا وفعالية.
تم تطبيق أجهزة الكمبيوتر ذات التعليمات المخفضة ، RISC ، على نطاق واسع لأول مرة خلال فترة نظم الذاكرة الفرعية سريعة النمو. إنهم يضحون بكثافة الكود لتبسيط دارات التنفيذ ، ويحاولون زيادة الأداء عبر ترددات ساعة أعلى وسجلات أكثر. عادةً ما ينفذ تعليمة RISC واحدة عملية واحدة فقط ، مثل "إضافة" من السجلات أو "تحميل" من موقع ذاكرة إلى السجل. عادةً ما يكون لمجموعة تعليمات RISC طول تعليمات ثابت ، بينما تحتوي مجموعة تعليمات CISC النموذجية على تعليمات ذات طول متباين على نطاق واسع. ومع ذلك ، نظرًا لأن أجهزة الكمبيوتر RISC تتطلب عادةً تعليمات أكثر وأكثر في كثير من الأحيان لتنفيذ مهمة معينة ، فإنها بطبيعتها تستخدم أقل استخدامًا مثاليًا لعرض النطاق الترددي للحافلة وذاكرة التخزين المؤقت.
عادةً ما تظهر بعض ISA المضمنة RISC مثل Thumb و AVR32 كثافة عالية جدًا بسبب تقنية تسمى ضغط الكود. تقوم هذه التقنية بحزم تعليمتين من 16 بت في كلمة واحدة 32 بت ، والتي يتم تفريغها بعد ذلك في مرحلة فك التشفير وتنفيذها كتعليمين. [8]
الحد الأدنى من أجهزة الكمبيوتر لمجموعة التعليمات (MISC) هي شكل من أشكال آلة المكدس ، حيث يوجد القليل من التعليمات المنفصلة (16-64) ، بحيث يمكن ملاءمة التعليمات المتعددة في كلمة آلة واحدة. غالبًا ما تستغرق هذه الأنواع من النوى القليل من السيليكون لتنفيذها ، لذلك يمكن تحقيقها بسهولة في FPGA أو في شكل متعدد النواة . كثافة رمز MISC مماثلة لكثافة رمز RISC ؛ يتم تعويض كثافة التعليمات المتزايدة عن طريق طلب المزيد من التعليمات البدائية للقيام بمهمة ما. [ بحاجة لمصدر ]
كان هناك بحث حول الضغط القابل للتنفيذ كآلية لتحسين كثافة الشفرة. تصف رياضيات تعقيد كولموغوروف تحديات وحدود ذلك.
التمثيل
نادرًا ما يتم تحديد التعليمات التي تشكل برنامجًا باستخدام شكلها الرقمي الداخلي ( رمز الآلة ) ؛ قد يتم تحديدها من قبل المبرمجين الذين يستخدمون لغة التجميع أو ، بشكل أكثر شيوعًا ، يمكن إنشاؤها من لغات البرمجة بواسطة المترجمين .
تصميم
يعد تصميم مجموعات التعليمات مشكلة معقدة. كانت هناك مرحلتان في التاريخ للمعالج الدقيق. الأول كان CISC (كمبيوتر مجموعة التعليمات المعقدة) ، والذي كان يحتوي على العديد من التعليمات المختلفة. ومع ذلك ، في السبعينيات من القرن الماضي ، أجرت أماكن مثل IBM أبحاثًا ووجدت أنه يمكن التخلص من العديد من التعليمات الموجودة في المجموعة. وكانت النتيجة هي RISC (كمبيوتر مجموعة التعليمات المخفضة) ، وهي بنية تستخدم مجموعة أصغر من التعليمات. قد توفر مجموعة تعليمات أبسط إمكانية الحصول على سرعات أعلى وتقليل حجم المعالج وتقليل استهلاك الطاقة. ومع ذلك ، قد تعمل مجموعة أكثر تعقيدًا على تحسين العمليات الشائعة وتحسين كفاءة الذاكرة وذاكرة التخزين المؤقت أو تبسيط البرمجة.
Some instruction set designers reserve one or more opcodes for some kind of system call or software interrupt. For example, MOS Technology 6502 uses 00H, Zilog Z80 uses the eight codes C7,CF,D7,DF,E7,EF,F7,FFH[9] while Motorola 68000 use codes in the range A000..AFFFH.
Fast virtual machines are much easier to implement if an instruction set meets the Popek and Goldberg virtualization requirements.[clarification needed]
إن شريحة NOP المستخدمة في البرمجة المدركة للمناعة أسهل بكثير في التنفيذ إذا تم تفسير الحالة "غير المبرمجة" للذاكرة على أنها NOP . [ مشكوك فيه ]
في الأنظمة ذات المعالجات المتعددة ، تكون خوارزميات المزامنة غير المحظورة أسهل بكثير في التنفيذ [ بحاجة لمصدر ] إذا كانت مجموعة التعليمات تتضمن دعمًا لشيء مثل " الجلب والإضافة " ، " رابط التحميل / المتجر المشروط " (LL / SC) ، أو " المقارنة والمبادلة الذرية ".
تنفيذ مجموعة التعليمات
يمكن تنفيذ أي مجموعة تعليمات معينة بعدة طرق. توفر جميع طرق تنفيذ مجموعة تعليمات معينة نفس نموذج البرمجة ، وجميع تطبيقات مجموعة التعليمات هذه قادرة على تشغيل نفس الملفات التنفيذية. توفر الطرق المختلفة لتنفيذ مجموعة التعليمات مفاضلات مختلفة بين التكلفة والأداء واستهلاك الطاقة والحجم وما إلى ذلك.
When designing the microarchitecture of a processor, engineers use blocks of "hard-wired" electronic circuitry (often designed separately) such as adders, multiplexers, counters, registers, ALUs, etc. Some kind of register transfer language is then often used to describe the decoding and sequencing of each instruction of an ISA using this physical microarchitecture. There are two basic ways to build a control unit to implement this description (although many designs use middle ways or compromises):
- Some computer designs "hardwire" the complete instruction set decoding and sequencing (just like the rest of the microarchitecture).
- غيرها من التصاميم توظيف الرمز الصغير الروتينية أو جداول (أو كليهما) للقيام بذلك، وعادة ما على رقاقة مدمجة أو إعلانات قائمة المنتجات أو كليهما (على الرغم من المنضمة حديثا ومنفصلة المدمجة استخدمت تاريخيا). يعد Western Digital MCP-1600 مثالًا قديمًا ، يستخدم ROM مخصصًا ومنفصلًا للرمز الصغير.
تستخدم بعض التصميمات مزيجًا من التصميم السلكي والرمز الصغير لوحدة التحكم.
تستخدم بعض تصميمات وحدة المعالجة المركزية مخزنًا للتحكم قابلًا للكتابة - فهي تجمع مجموعة التعليمات إلى ذاكرة وصول عشوائي قابلة للكتابة أو فلاش داخل وحدة المعالجة المركزية (مثل معالج Rekursiv و Imsys Cjip ) ، [10] أو FPGA ( حوسبة قابلة لإعادة التكوين ).
يمكن أيضًا محاكاة ISA في البرنامج بواسطة مترجم . وبطبيعة الحال ، بسبب الحمل الزائد للتفسير ، يكون هذا أبطأ من تشغيل البرامج مباشرة على الأجهزة التي تمت محاكاتها ، إلا إذا كانت الأجهزة التي تشغل المحاكي أسرع من حيث الحجم. اليوم ، من الممارسات الشائعة لبائعي ISA الجديدة أو البنى الدقيقة جعل برامج محاكاة البرامج متاحة لمطوري البرامج قبل أن يصبح تنفيذ الأجهزة جاهزًا.
غالبًا ما يكون لتفاصيل التنفيذ تأثير قوي على التعليمات المحددة المختارة لمجموعة التعليمات. على سبيل المثال ، تسمح العديد من تطبيقات خط أنابيب التعليمات فقط بتحميل ذاكرة واحدة أو تخزين ذاكرة لكل تعليمة ، مما يؤدي إلى بنية تحميل مخزن (RISC). كمثال آخر ، أدت بعض الطرق المبكرة لتنفيذ خط أنابيب التعليمات إلى فجوة تأخير .
لقد دفعت متطلبات معالجة الإشارات الرقمية عالية السرعة في الاتجاه المعاكس - مما أجبر التعليمات على التنفيذ بطريقة معينة. على سبيل المثال ، لأداء المرشحات الرقمية بسرعة كافية ، يجب أن تستخدم تعليمات MAC في معالج الإشارات الرقمية النموذجي (DSP) نوعًا من هندسة Harvard التي يمكنها جلب تعليمة وكلمتين من البيانات في وقت واحد ، وتتطلب دورة واحدة مضاعفة - تتراكم مضاعف .
انظر أيضا
- مقارنة بين أبنية مجموعة التعليمات
- هندسة الحاسوب
- تصميم وحدة المعالجة المركزية
- محاكي
- محاكي
- قائمة مجموعات التعليمات
- محاكاة مجموعة التعليمات
- يوفر محاكي الأنظمة الكاملة OVPsim القدرة على إنشاء / نموذج / محاكاة أي مجموعة تعليمات باستخدام C و APIs القياسية
- تسجيل لغة التحويل (RTL)
- عملية دقيقة
المراجع
- ^ Pugh ، Emerson W. ؛ جونسون ، لايل ر. بالمر ، جون هـ. (1991). أنظمة آي بي إم 360 وأوائل 370 . مطبعة معهد ماساتشوستس للتكنولوجيا. رقم ISBN 0-262-16123-0.
- ^ كريستال تشن جريج نوفيك كيرك شيمانو (16 ديسمبر 2006). "هندسة RISC: RISC مقابل CISC" . cs.stanford.edu . تم الاسترجاع 21 فبراير ، 2015 .
- ^ "الموارد الرابعة: أرشيف قائمة بريد NOSC" . strangegizmo.com . مؤرشفة من الأصلي في 20 مايو 2014 . تم الاسترجاع 2014/07/25 .
- ^ a b c The evolution of RISC technology at IBM by John Cocke – IBM Journal of R&D, Volume 44, Numbers 1/2, p.48 (2000)
- ^ Page, Daniel (2009). "11. Compilers". A Practical Introduction to Computer Architecture. Springer. p. 464. Bibcode:2009pica.book.....P. ISBN 978-1-84882-255-9.
- ^ Venkat, Ashish; Tullsen, Dean M. (2014). Harnessing ISA Diversity: Design of a Heterogeneous-ISA Chip Multiprocessor. 41st Annual International Symposium on Computer Architecture.
- ^ "دليل مطوري برامج معمارية Intel® 64 و IA-32" . شركة إنتل . تم الاسترجاع 12 يوليو 2012 .
- ^ ويفر ، فنسنت م. ماكي ، سالي أ. (2009). مخاوف كثافة الكود للبنى الجديدة . مؤتمر IEEE الدولي لتصميم الكمبيوتر. CiteSeerX 10.1.1.398.1967 . دوى : 10.1109 / ICCD.2009.5413117 .
- ^ جانسل ، جاك (26 فبراير 2001). "التصحيح الاستباقي" . embedded.com .
- ^ "المعالجات الدقيقة العظيمة في الماضي والحاضر (V 13.4.0)" . cpushack.net . تم الاسترجاع 2014/07/25 .
قراءات إضافية
- بوين ، جوناثان ب. (يوليو-أغسطس 1985). "بطاقات برمجة المعالجات الدقيقة القياسية". المعالجات الدقيقة والأنظمة الدقيقة . 9 (6): 274 - 290. دوى : 10.1016 / 0141-9331 (85) 90116-4 .
روابط خارجية
وسائل الإعلام المتعلقة بهياكل مجموعة التعليمات في ويكيميديا كومنز
- برمجة المنسوجات: بطاقات ملخص تعليمات بوين
- صفحة تصاميم الكمبيوتر التاريخية لمارك سموثرمان