المعلوماتية > عام
معماريّتا 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
عمومًا، يمكن تحديد الوقت الذي يستغرقه المعالج لإكمال البرنامج عن طريق ثلاثة عوامل:
- عدد التعليمات في البرنامج
- متوسط عدد دورات الساعة المطلوبة لتنفيذ التعليمات
- وقت دورة الساعة.
وبسبب بساطة التعليمات، يرتبط أداء بنية 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"):
- عند التنفيذ، تحمّل هذه التعليمات القيمتين في مسجلين منفصلين، وتُضرَب المعاملات في وحدة التنفيذ، ثم يُخزَّن الناتج في المسجل المناسب (4).
- وبذلك؛ يمكن إكمال مهمة ضرب رقمين بالكامل بتعليمة واحدة "معقدة":
MUL 2:3, 5:2
- نلاحظ أنها تعمل بالكامل في بنوك الذاكرة، ولا تتطلب عمليات تحميل أو تخزين.
- إحدى المزايا الأساسية لهذه الطريقة هي أنّ المترجم يجب أن يقلل من العمل لترجمة شيفرة اللغة العالية المستوى إلى لغة التجميع، ونظرًا إلى أنّ طول الشيفرة قصير نسبيًّا؛ فإن ذاكرة الوصول العشوائي (RAM) المطلوبة لتخزين التعليمات قليلة جدًّا (4).
- "LOAD" تنقل البيانات من بنك الذاكرة إلى المسجل.
- "PROD" يوجِد ناتجَ ضرب عاملين موجودين داخل المسجلات.
- "STORE" التي تنقل البيانات من المسجل إلى أحد بنوك الذاكرة.
LOAD A, 2:3
LOAD B, 5:2
PROD A, B
STORE 2:3, A
للوهلة الأولى، قد يبدو هذا وكأنه طريقة أقل كفاءة لتنفيذ العملية نظرًا إلى وجود المزيد من أسطر التعليمات البرمجية، وهناك حاجة إلى مزيد من الذاكرة لتخزين التعليمات في مستوى لغة التجميع.
وعلى الرغم من ذلك، تجلب إستراتيجية RISC بعضًا من المزايا. لمّا كانت كل تعليمة تتطلب دورة واحدة فقط من ساعة المعالج للتنفيذ؛ سيُنفَّذ البرنامج بأكمله تقريبًا بمقدار الوقت ذاته الذي يستغرقه الأمر المتعدد الدورات "MUL"، وتتطلب هذه "التعليمات المخفضة" في طريقة RISC عددًا أقل من الترانزستورات، ومن ثم مساحة أقل عتاديًا مقارنةً بالتعليمات المعقدة؛ مما يترك مساحة أكبر لوجود مسجلات للأغراض العامة أكثر في المعالج (4).
ختامًا، لا تزال بنية الحاسب في تطور مستمر؛ إذ نرى محاولات لتطوير معمارية معالجات أقوى مثل المعمارية (CRISC (Complex-Reduce Instruction Set Computers التي تُعدّ مزيجًا بين المعماريات السابقة، وتهدف للوصول إلى معالجات أكثر كفاءة وسرعة (2).
المصادر:
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: هنا