علوم الحاسب

معماريات المعالجات الصغرية: ما هو الفرق بين معمارية CISC ومعمارية RISC؟

في مقالٍ سابق لنا، قمنا بتسليط الضوء على مفهوم “معمارية المعالج الحاسوبي”، وهي الطريقة التي يتم بناء المعالج وعناصره وفقاً لها، والطريقة التي تُحدد كيفية عمل المُعالج وجلبه للبيانات ومعالجتها. يتم اختيار المِعمارية المُناسبة لكل حاسوب وفقاً لعددٍ من المعايير والخطوات. أولاً، حسب تصميم مَجموعة التّعليمات Instruction Set Architecture، حيث قد تكون المعمارية مُعقدة أو بسيطة، ومن ثم إيجاد وتصميم عتاد الأجهزة المُناسب الذي يتناسب مع مجموعة التّعليمات المُختارة.

يوجد نوعين أساسين من تصاميم المعماريات المبنية وفقاً لمجموعة التّعليمات وهما CISC و RISC. ضمن هذا المقال، سنّطلع على كلٍ منهما ونجري مُقارنة بسيطة في هذا المقال التعريفي.

(إطلع على مقالنا معماريات المعالجات الصغرية: ماهو الفرق بين معمارية فون نيومان ومعمارية هارفرد؟)

معمارية CISC

أتت تسمية معمارية CISC كاختصار لـ “Complex Instruction Set Computer”، وهي تتواجد في المُعالجات الصغرية التي تحوي مجموعة كبيرة من التعليمات المُعقدة، ويكمن الهدف الأساسي من هذه المعمارية في مثل هكذا نوع من الحواسيب في إمكانية إنهاء المهمة بأقل عدد من التّعليمات والسطور في لغة التجميع Assembly Language. يتم ذلك بتصميم أجهزة قادرة على فهم وتطبيق سلسلة من العمليات من خلال قراءة تعليمة واحدة. لنفرض على سبيل المثال تعليمة نرمز لها بكلمة MULT. لنفرض أن هذه التعليمة تعمل على عملية ضرب قيمتين.

MULT 0x100, 0x101

 عندما سيتم تطبيق هذه التعليمة، سيتم تحميل قيمتين على مُسجلين مُختلفين، حيث تكون القيمتين مُخزنتين في العنوانين 0x100 و  0x101 في ذاكرة البيانات، ومن ثم ستقوم بضرب معامليهما أي قيمتيهما. وكخطوةٍ أخيرة، تُحفظ النتيجة في مُسجلٍ مناسب. فنكون حققنا عملية ضرب عددين بواسطة تعليمة واحدة “مُعقدة” فقط.

أحد أهم مزايا استخدام هذا النظام هو تخفيف العمل على المترجم Compiler بسبب قلة عدد السطور في لغة التجميع لأي شيفرة نظراً لشمولية وتعقيد التعليمة الواحدة. أيضاً، وبسبب صغر البرنامج، تحتاج إلى ذاكرة صغيرة لحفظ التعليمات. لكن ما تحتاجه هذه المعمارية هو تعليمات مُعقدة وعتاد أجهزة مُعقد يستطيع فهمها.

كانت منهجية CISC في الحوسبة الوحيدة المتواجدة إلى حدّ سنة 1975 عندما قامت IBM بتجريب فكرة جديدة مغايرة تماماً لمبدأ CISC والتي سوف تُدعى فيما بعد بمعمارية RISC. في الحقيقة مشروع IBM لم يكن الوحيد في تلك الفترة حيث كان يوجد مشروعين مماثلين تقريباً في جامعة ستانفورد وجامعة بيركلي كلاهما في الولايات المتحدة لكن ينسب الفضل كأول آلة RISC لحاسوب IBM 801.

معمارية RISC

كلمة RISC هي اختصار لـ “Reduced Instruction Set Computer”. وبعكس الحواسيب المبنية على معمارية CISC، فإن الحواسيب المبنية على معمارية RISC تتميز بعددٍ مَحدود من التعليمات، أي أن البرنامج سيحتاج إلى عددٍ من التعليمات البسيطة لتطبيق مهمته. لنأخذ مثالنا السابق، مهمة الحاسوب هو ضرب قيمتين لكن التعلية المُعقدة السابقة غير ممكن توافرها في هذا النوع من المِعماريات. سنحتاج إذاً إلى عدة تعليمات بسيطة للوصول إلى النتيجة المَرغوبة. لنفرض أولاً تعليمة load لتحميل المُسجلات بالقيم المطلوبة، وتعليمة mul لتطبيق عملية ضرب المعاملين و تعليمة mov لنقل النتيجة إلى المُسجل المرغوب. سيصبح البرنامج السابق على الشكل التالي:

load RegA, 0x100

load RegB, 0x101

 mul  RegA, RegB

mov  RegA, RegC

حيث تعمل تعليمة mul على ضرب القيمتين وتخزين الناتج في المُسجل RegA أي ما يوافق في لغة C التعليمة التالية: RegA = RegA*RegB. ومن ثم تنقل تعليمة mov النتيجة المُخزّنة في RegA إلى المُسجل المرغوب في هذه الحالة، وهو المُسجل RegC.

كنظرةٍ أولى، قد تعتقد أن هذا النهج لا يتّميز بالكفاءة المُناسبة لمُعالجة المهمات، حيث بسبب بساطة التّعليمات سنحتاج إلى عددٍ كبير منها لتطبيق المَهمات المُعقدة وهذا ما يسبب الحاجة لتواجد ذاكرة برنامج أكبر من التي في حواسيب CISC لحفظ التعليمات المتعددة. أيضاً سيكون دور المترجم أكبر لتحويل البرامج إلى لغة تجميع بسبب زيادة عدد سطور كلّ شيفرة. لكن وبسبب بساطة التعليمات سيتم تطبيق البرنامج بشكلٍ أسرع، حيث أن كُل تعليمة تحتاج إلى دورة واحدة فقط من ساعة المُعالج “1 clock cycle” للتطبيق. أيضاً، وبسبب تلك البساطة، سيكون تصميم الأجهزة أبسط بكثير فسيحتاج المُعالج عدداً أقل من الترانزيستورات، مما سيترك مجالاً أكبر للعمل على تطوير أمور أساسية أخرى كزيادة عدد المُسجلات وحجم الذواكر.

إلى الآن تجري مناقشات حول هوية المعمارية الأفضل. حيث أنه يوجد تفضيل واضح لنهج RISC من قبل غالبية المُصنّعين وذلك لسببين أساسين، سرعته العالية وكلفته المنخفضة (بسبب قلة عدد الترانزيستورات كما ذكرنا).

الخلاصة

لو أردنا أن نلخص عرضنا السابق على شكل جدولٍ بسيط يقارن بين المعماريتين، فإنه سيكون على الشكل التالي:

RISC

CISC

يشدد العمل على البرنامج

يشدد العمل على عتاد الأجهزة

تردد أحادي “Single Clock”

تردد متعدد “Multi Clock”

تعليمات بسيطة فقط

تعليمات معقدة فقط

عدد صغير من الدورات في الثانية

حجم البرنامج كبير

عدد كبير من الدورات في الثانية

حجم البرنامج صغير

توظيف عدد أكبر من الترانزيستورات على مسجلات الذواكر

توظيف عدد أكبر من الترانزيستورات لتخزين التعليمات المعقدة

تعرف على طريق عمل المعالجات الصغرية بشكل كامل هنا

المصادر: هنا و هنا

Michel Aractingi

طالب هندسة كهرباء في جامعة البلمند

مقالات ذات صلة

زر الذهاب إلى الأعلى