المعلوماتية > عام

معماريّتا CISC وRISC والفرق بينهما

عند التكلم عن الحواسيب أو الأجهزة الالكترونية الذكية فإننا لا ننسى ذكر المعالج الذي يمثل العقل المركزي الذي تُنجَز فيه المحاكمة المنطقية لمجموعة تعليمات تعطي نتائج تتحول إلى مخرجات مفيدة، ولكن؛ كيف يُصمَّم المعالج لكي يستطيع التعامل والتعرف إلى هذه التعليمات ؟!

يكون ذلك عن طريق معمارية مجموعة التعليمات (instruction set architecture (ISA، وهي جزء من معمارية الحاسب؛ إذ تُعرَّف بأنها الواجهة الفاصلة بين البرامج والعتاد، وهي تُعرف صيغة العمليات وأنواعها التي تقبلها وحدة المعالجة المركزية (CPU)، إضافةً إلى أنواع المعاملات وأنماط العنونة والعناوين الذاكرية التي يمكن الوصول إليها (1).

من وجهة نظر معمارية الحاسب، يمكن تصنيف المعالجات المصغرة إلى فئتين: CISC (اختصارًا لـ Complex Instruction Set Computer؛ أي حاسوب مجموعة التعليمات المعقدة)، وRISC (اختصارًا لـ Reduced Instruction Set Computer؛ أي حاسوب مجموعة التعليمات المتدنية)، وفي كلتا الحالتين الهدف هو تحسين أداء النظام (2).

معمارية CISC

هي -كما يشير اسمها- تستند إلى مجموعة تعليمات معقدة (complex instruction set)؛ إذ تُنفَّذ التعليمات عن طريق برامج صغيرة Microcode تحوي عددًا من التعليمات المعقدة، ويؤدي هذا إلى استغراقها وقتًا طويلًا عند تنفيذها المَهمّات (2).

إنّ الدافع لهكذا تصميم معقد هو توفير مجموعة التعليمات التي تدعم على نحو وثيق العمليات وهياكل البيانات المستخدمة من قبل اللغات العالية المستوى (High Level Languages)، ومن ثم تسهيل عملية الترجمة (Compiling (2.

أصبحت معمارية CISC سائدة في المعالجات خلال حقبة الستينيات؛ إذ أصبح كل معالج يملك تعقيدًا أكبر بالعتاد ومجموعة التعليمات مقارنةً بسابقه، وأشهر الأمثلة على ذلك معالجات Intel 80 86، وPentium MMX، وحتى Pentium III.(2)

معمارية RISC 

نوع من معمارية المعالجات الذي يستخدم مجموعة التعليمات ذات الحجم الصغير والمحسّنة على نحو كبير، فضلًا عن وجود القدرة على تخصيص مجموعة التعليمات (2).

جاءت مشاريع المعالجات بمعمارية RISC الأولى من شركة IBM، وجامعة ستانفورد Stanford، وجامعة كاليفورنيا في بيركلي UC-Berkeley في أواخر السبعينيات وأوائل الثمانينيات، وهي على التوالي: IBM 801، وStanford MIPS، وBerkeley RISC 1، وقد اشتركوا جميعهم بالفلسفة نفسها؛ RISC.

(2)

الفرق بين CISC وRISC

عمومًا، يمكن تحديد الوقت الذي يستغرقه المعالج لإكمال البرنامج عن طريق ثلاثة عوامل: 

  1. عدد التعليمات في البرنامج
  2. متوسط ​​عدد دورات الساعة المطلوبة لتنفيذ التعليمات 
  3. وقت دورة الساعة. 
يقلل نهج تصميم CISC من عدد التعليمات في البرنامج عن طريق توفير تعليمات خاصة قادرة على أداء عمليات معقدة، في المقابل؛ يقلل نهج التصميم RISC من متوسط ​​عدد دورات الساعة المطلوبة لتنفيذ تعليمة واحدة. وعلى حد سواء؛ يستفيد نهج CISC وRISC من التطورات في تكنولوجيا الرقائق لتقليل زمن دورة ساعة المعالج (2).

وبسبب بساطة التعليمات، يرتبط أداء بنية RISC بكفاءة المترجم (Compiler)، كذلك بسبب كثرة عدد مجموعة المسجلات (Register Set)؛ مما يؤدي إلى الزيادة من تعقيد المترجم، ولذلك، إنّ العيب الرئيس لبنية RISC هو ضرورة كتابة مترجم جيد (2).

عمومًا، إن وقت تطوير أنظمة البرامج الخاصة بجهاز يملك العمارية RISC أطول من وقت تطوير CISC.(2)

عيبٌ آخر هو أنّ بعض تعليمات CISC تعادل اثنين أو ربما ثلاث تعليمات من RISC؛ مما يتسبب في كون شيفرة برنامج RISC أطول في بعض الأحيان.

ولكن، تتميز معالجات RISC بأن كل تعليمة تأخذ دورة واحدة من دورات المعالج، ويرجع هذا إلى تحسين كل تعليمة على المعالج واستخدام تقنية Pipelining التي تسمح بالتنفيذ المتزامن لأجزاء أو مراحل للتعليمات لتحقيق أكبر كفاءة عند معالجتها (4).

كذلك تستخدم معالجات RISC عددًا أكبر من المسجلات لمنع الطلب المتكرر للذاكرة (2).

وبالمحصلة، بالنظر إلى النقاط الجيدة لكل من معماريات RISC و CISC؛ يمكن تحسين تصميم المعالج القائم على RISC عن طريق توظيف بعض مبادئ CISC التي طُوِّرت وحُسِّنت على مر السنين (3).

مثال عملي 

سوف نستعرض طريقة ضرب عددين في الذاكرة، وذلك لتوضيح الفرق بين المعماريتين CISC وRISC: 

إن الذاكرة الرئيسية مقسمة إلى المواقع مرقمة من (صف) 1: (عمود) 1 إلى (صف) 6: (عمود) 4. 

ووحدة التنفيذ (Execution Unit) مسؤولة عن تنفيذ جميع الحسابات، وعلى الرغم من ذلك؛ يمكن لوحدة التنفيذ أن تعمل فقط على البيانات التي حُمِّلت في أحد المسجلات الستة (A، B، C، D، E، F). 

لنفترض أننا نريد العثور على حاصل ضرب رقمين (أحدهما مُخزَّن في الموقع 2:3 والآخر مخزن في الموقع 5:2)، ثم نخزّن الناتج مرة أخرى في الموقع 2:3 (4).

الشكل 1

تمثيل لمخطط التخزين في الحاسب

- طريقة CISC: 

الهدف الأساسي لبنية CISC هو إكمال المهمة في أقل عدد ممكن من الشيفرات البرمجية (4)، ويُنجَز ذلك ببناء معالج قادر على فهم سلسلة من العمليات وتنفيذها. لهذه المهمة بالذات، سيأتي معالج CISC مُجهزًا بتعليمات (مثل "MUL"):

- طريقة RISC :

تستخدم معالجات RISC فقط تعليمات بسيطة تُنفَّذ خلال دورة ساعة واحدة، وهكذا؛ يمكن تقسيم الأمر "MUL" المذكور أعلاه إلى ثلاثة أوامر منفصلة:

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

وعلى الرغم من ذلك، تجلب إستراتيجية RISC بعضًا من المزايا. لمّا كانت كل تعليمة تتطلب دورة واحدة فقط من ساعة المعالج للتنفيذ؛ سيُنفَّذ البرنامج بأكمله تقريبًا بمقدار الوقت ذاته الذي يستغرقه الأمر المتعدد الدورات "MUL"، وتتطلب هذه "التعليمات المخفضة" في طريقة RISC عددًا أقل من الترانزستورات، ومن ثم مساحة أقل عتاديًا مقارنةً بالتعليمات المعقدة؛ مما يترك مساحة أكبر لوجود مسجلات للأغراض العامة أكثر في المعالج (4).

ختامًا، لا تزال بنية الحاسب في تطور مستمر؛ إذ نرى محاولات لتطوير معمارية معالجات أقوى مثل المعمارية (CRISC (Complex-Reduce Instruction Set Computers التي تُعدّ مزيجًا بين المعماريات السابقة، وتهدف للوصول إلى معالجات أكثر كفاءة وسرعة (2). 

المصادر:

1. Li Y. Instruction Set Architecture and ALU Design [Internet]. Wiley Online Library. 2015 [cited 23 October 2020]. Available from: هنا

2. Fida El-Din A, Krad H. A New Trend for CISC and RISC Architectures [Internet]. 2007 [cited 23 October 2020]. Available from: هنا

3. Hou W. CS401 Computer Architecture [Internet]. www2.cs.siu.edu. [cited 23 October 2020]. Available from: هنا

4. Masood F. RISC and CISC [Internet]. arXiv.org. 2011 [cited 23 October 2020]. Available from: هنا