مجموعة التعليمات
مجموعة التعليمات او الاوامر هي قائمة بجميع الأوامر المتاحة بمختلف أشكالها التي يمكن لمعالج ما (وحدة معالجة مركزية) أن يقوم بتنفيذها.
تتضمن هذه التعليمات:
إن بنية مجموعة التعليمات (instruction set architecture) هي القسم من بنية الحاسب المرتبط بالبرمجة باستخدام هذه التعليمات ويشمل ذلك أنماط المعطيات المدعومة بشكل مباشر، التعليمات، السـّـِـجــِـلاّت، أنماط العنونة، تنظيم الذاكرة، المقاطعات ومعالجة الاستثناءات والدخل/الخرج مع الوسط الخارجي.
وبنية مجموعة التعليمات تتضمن تفصيل لمجموعة من شيفرات التعليمات (Op-codes) وهي الأوامر الأصلية المنفذة من قبل تصميم معالجات محدد.
إن بنية مجموعة التعليمات تختلف عن البنية الميكروية (microarchitecture) والتي هي عبارة عن مجموعة من تقنيات تصميم المعالجات والمستخدمة لإنجاز وتحقيق مجموعة التعليمات. فحواسب ببنى ميكروية مختلفة يمكن أن تتشارك بمجموعة تعليمات مشتركة. على سبيل المثال معالج بنتيوم (Pentium) من إنتاج شركة إنتل (Intel) ومعالج AMD Athlon ينفذان نسختين متشابهتين إلى حد كبير من مجموعة التعليمات المسماة x86 ولكن يملكان بنية ميكروية مختلفة بشكل كبير.
عند تصميم البنى الميكروية، يستخدم المهندسون لغة مستوى نقل السجلات RTL لتعريف عمل كل تعليمة من بنية مجموعة التعليمات.
تاريخياً كان هناك أربع طرق لتخزين ذلك التوصيف داخل المعالج، منها:
مجموعة التعليمات يمكن أيضاً أن تحاكى بواسطة البرمجيات باستخدام برنامج يدعى بالمفسر. ونظراً للترجمة الإضافية المطلوبة للمحاكاة فهذه العملية تكون عادة أبطأ من تنفيذ البرامج بشكل مباشر على العتاد الذي يحقق مجموعة التعليمات تلك.
في الوقت الراهن من الشائع لمصنعي بنى مجموعة تعليمات جديدة أو بنى ميكروية جديدة أن ينتجوا برامج محاكاة واتاحتها لمطوري البرمجيات قبل أن يجهز التحقيق المادي لهذه البنية.
في الحواسب الأولى ذاكرة تخزين البرنامج كانت باهظة ومحدودة، وتصغير حجم ذاكرة البرنامج كان أمراً مهماً، أي إن كثافة الشيفرة (الحجم الكلي للتعليمات المطلوبة من أجل تنفيذ مهمة محددة) كانت صفة هامة لمجموعة التعليمات.
مجموعات التعليمات التي تملك كثافة شيفرة مرتفعة توظف تعليمات قوية التي تقوم ضمنياً بالعديد من العلميات دفعة واحدة.
إن بنى حواسب مجموعة التعليمات المعقدة CISC تملك تعليمات تجمع عملية بسيطة أو اثنتين (مثل الجمع والضرب واستدعاء التوابع الفرعية) مع تعليمات ضمنية للوصول إلى الذاكرة أو زيادة قيم السجلات بعد الاستخدام، تتبع المواقع المؤشر إليها والمخزنة في المجسلات أو الذاكرة (الوصول غير المباشر للمعاملات).
في المقابل فإن بنى حواسب مجموعة التعليمات المختزلة RISC فقد استخدمت مجموعة تعليمات أبسط وأسرع على حساب الخفض من كثافة الشيفرة (بمعنى استخدام مساحة ذاكرة أكبر للبرنامج الذي ينفذ مهمة ما).
حواسب مجموعة التعليمات الأقل MISC هي شكل من آلات المكدس، والتي يوجد فيها عدد قليل من التعليمات المستقلة وبالتالي يمكن لكلمة واحدة من كلمات الآلة أن تتسع عدة تعليمات معاً. وهذه الأنماط من النوى تستهلك القليل من السيليكون لتنفيذها لذا يمكن بسهولة وضعها في مصفوفة بوابات منطقية قابلة للبرمجة FPGA أو بشكل متعدد النوى. وهنا تكون كثافة الشيفرة مشابهة لحالة حواسب التعليمات المختزلة RISC.
يمكن تصنيف مجموعة التعليمات وفق عدد المعاملات الموجودة في أعقد تعليماتها، وللتوضيح نقدم هنا بعض الأمثلة، في الأمثلة التالية نعتبر a وb وc عناوين ذاكرة، وreg1 وreg2 وreg3 تشير إلى ســِـجــِـلاّت داخل المعالج.
push a، push b، add، pop c
فلجمع عددين نستخدم التعليمات:
load a، add b، store c
load a, reg1، load b, reg2، add reg1, reg2، store reg2, b
move a, reg1، add reg1, b, c
وفي حواسب مجموعة التعليمات المختزلة RISC فالمعاملات الثلاثة تكون عادة ســِـجــِـلاّت لذا نحتاج إلى تعليمات تحميل/تخزين صريحة
إن تشفير ثلاثة ســِـجــِـلاّت في مجموعة تعليمة تحوي 32 ســِـجــِـلاّ ً يحتاج إلى 15 خانة ثنائية لذا فإن هذا النظام عادة يكون محدودا لمجموعات التعليمات ذات طول 32 خانة ثنائية أو أكثر.إن لغة الآلة مبنية من تعليمات أو عبارات منفصلة، وبحسب بنية المعالجة فإن مجموعة تعليمات معينة يمكن أن تحدد:
الأعمال الأكثر تعقيداً تبنى بدمج هذه التعليمات البسيطة والتي تنفذ بشكل متسلسل (في بنية فان نيومان) أو تقاد بتعليمات التحكم بسير البرنامج.
بعض العمليات المتاحة في معظم مجموعات التعليمات تتضمن:
بعض الحواسب تتضمن تعليمات معقدة في مجموعة تعليماتها. وتعليمة معقدة واحدة تنجز شيئاً يمكن أن يحتاج عدة تعليمات في الحواسب الأخرى. هذه التعليمات تتجسد بالتعليمات التي تأخذ خطوات عدبدة أو تتحكم بعدة وحدات وظيفية أو تبدو أوسع من معظم التعليمات البسيطة لمعالج معين، بعض الأمثلة على هذه العمليات المعقدة يتضمن:
نمط من أنماط التعليمات المعقدة والذي أصبح منتشراً بشكل كبير مؤخراً هو SIMD أو العمليات الشعاعية، وهي عملية تنجز نفس العملية الحسابية على عدة قيم من المعطيات في نفس الوقت. وهي تملك القدرة على معالجة أشعة كبيرة ومصفوفات في وقت أصغري وتسمح بالمعالجة التفرعية للخوارزميات المتضمنة في معالجة الصوت والصور والفيديو. العديد من التحقيقات لتقنية العمليات وحيدة التعليمات متعددة المعطيات قد ظهرت في الأسواق تحت أسماء تجارية مثل MMX و3DNow! وAltiVec
إن تصميم مجموعات التعليمة قضية معقدة. وقد كانت هناك مرحلتين في تاريخ المعالجات. إحداها تستخدم بنية حواسب مجموعة التعليمات المعقدة CISC حيث تم تحقيق العديد من التعليمات. في السبعينات من القرن الماضي تم إجراء العديد من الأبحاث والوصول إلى أن العديد من التعليمات المستخدمة يمكن الاستغناء عنها. والنتيجة كانت بنية حواسب مجموعة التعليمات المختزلة RISC، بنية تستخدم مجموعة أصغر من التعليمات.
إن مجموعة التعليمات الأبسط يمكن أن تساهم في تغطية الحاجة الملحة لسرعات متزايدة وحجم معالجات أصغر واستهلاك طاقة أقل. في حين أن مجموعة تعليمات الأعقد قد تحسن أداء العمليات الشائعة وتحسن أداء الذاكرة و أو تبسط البرمجة.