مجموعة تعليمات بنية الحاسب

من ويكيبيديا، الموسوعة الحرة

فهرست

[تحرير] تعريف بتقنية CISC و تقنية RISC

[تحرير] 1- تعريف CISC

وهي اختصار للجملة Complex Instruction Set Computer . أغلب الكمبيوترات الشخصية تستخدم معمارية CISC والتي تدعم مجموعة أوامر Instruction Set قد يصل عددها إلى 3000 أمر أو أكثر في بعض الأحيان . الدافع الأساسي وراء هذه التقنية (CISC) هو تخفيض التكلفة العامة للكمبيوترات وذلك عن طريق جعل البرمجة -وهي العنصر الأكثر تكلفة في أي نظام كمبيوتر- أكثر سهولة وبالتالي أقل تكلفة. و يتلخص جميع ذلك بتطبيق مبدأ بسيط وهو نقل التعقيد من عالم البرمجيات إلى عالم العتاد.

[تحرير] 2- تعريف RISC

وهي اختصار للجملة Reduced Instruction Set Computer. وهي نوع من المعالجات التي تتعرف على محدود نسبياً من الأوامر Small Instruction Set حوالي (200) أمر. من ميزات أوامر هذا النوع أنها قصيرة ومبسطة مما يسرع في عملية التنفيذ ، وميزة أخرى قد تكون أكثر أهمية وهي أنه لبساطة أوامر هذا النوع فقد أصبح بالإمكان التقليل من عدد الترانزستورات مما سيؤدي بالضرورة إلى خفض تكلفة التصنيع .

ملاحظة

طقم التعليمات الذي يدعمه أي معالج هو عبارة عن مجموعة أوامر كل أمر منها يمثل تسلسل من الـ Bytes يستطيع المعالج التعرف عليها مباشرة ومن ثم يستجيب لمحتوى ذلك الأمر.

اعتمدت CISC على التالي : كل ما زاد عدد الأوامر زادت سهولة البرمجة بشكل كبير لكن بالمقابل يزيد التعقيد في بناء المعالج حيث ستحتاج إلى وحدة ترجمة معقدة داخل نفس المعالج للتعرف على كم الأوامر الكبير و سيستغرق الأمر وقتا إضافيا داخل وحدة الترجمة MicrocodeUnit حتى يتم تفسيره مما يعني تباطؤاً في الأداء اعتماداً على تعقيد الأمر المدخل.

اعتمدت RISC على التالي: أوامر بدائية جدا لا تحتاج لوحدة ترجمة (NO Microcode Unit) تنفذ الأوامر تنفيذا سريعا وكل أمر يستغرق دورة معالجة وحيدة أو أقل وكل الأوامر موحدة الطول 4 بايت فقط .

ونظراً لسهولة الأوامر كما ذكرنا وتوحيد الطول أصبحت الحاجة لقوة المعالجة أقل مما يعني إمكانية الحصول على معالج RISC بنفس أداء معالج CISC ولكن بعدد ترانزستورات أقل بكثير و أيضا تم إلغاء وحدة الترجمة مما يعني تخفيضا كبيرا في تكاليف التصنيع وفي حجم المعالج أيضا مما مكن من إضافة المزيد من المسجلات الداخلية والتي بدورها وفرت مخزناً واسعاً لتخزين البيانات والأوامر ذات الاستخدام المتكرر ضمن المعالج مما يعني وصولا سريعا جدا لها بدلا من الحاجة للخروج خارج المعالج لجلبها من الذاكرة RAM الرئيسية وعملية الخروج من المعالج أثناء التنفيذ لعملية ما تعني تباطؤاً لا يستهان به خصوصاً إذا نظرنا إلى سرعة النواقل والتي تعتبر بطيئة جدا مقارنة بسرعة المعالج الداخلية .

ولكن العيب هنا ما وصل إليه المبرمجون من ناحية التعقيد وتحديداً في برمجة البرامج المترجمة Compilers وهي البرامج التي تحول البرامج المكتوبة بلغات عالية المستوى مثل Cو JAVA إلى لغة الآلة و الصعوبة هذه سببها قلة و بدائية الأوامر المتوفرة.

لنأخذ مثالاً لتوضيح قصة الصعوبة والسهولة في البرمجة استناداً لحجم وعدد الأوامر المتاحة هناك (طفل 1) عنده مكعبات للبناء وهي بدائية أي عبارة عن مكعبات فقط وهناك (طفل 2) عنده مكعبات بأشكال متنوعة من مستطيلات ومثلثات إلى أشكال جاهزة من سيارات و بشر إلى ما هنالك.


طلب من الطفلين بناء منزل مثلا فمن سيعاني أكثر في البناء؟؟؟ أكيد الطفل الأول لأنه سيحتاج لتكوين كل العناصر بنفسه من الأشكال البدائية جداً بينما الطفل الثاني لن يستغرق وقتا يذكر بل وسيجد وقتاً إضافيا في إضافة الأشكال الجمالية, هذه فلسفة تقنية CISC.

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

[تحرير] -2نماذج أولية لكل من CISC & RISC:

في هذه النقطة سنعرض بعض المعالجات الأولى من كل نوع حيث يمكننا ملاحظة عدم وجود وحدة الترجمة في معالجات RISC وكذلك أن طول الأوامر موحد بـ 4 بايت و أيضاً تجد أن عدد الأوامر أقل من معالجات CISC بمعدل النصف على الأقل .

يوضح الجدول التالي هذه المقولة :

التسلسل معالجات CISC معالجات RISC

1

النــــــــــــــــوع IBM.

سنــــة التصنيـــــع 1973

عدد الأوامــــــــر 208

حجم وحدة الترجمة 54k

حجم الأوامــــــــــر 2-6 بايت

النــــــــــــــــوع 801 IBM

سنــــة التصنيـــــع 1980

عدد الأوامــــــــر 120

حجم وحدة الترجمة 0

حجم الأوامــــــــــر 4 بايت

2

النــــــــــــــــوع VAX

سنــــة التصنيـــــع 1978

عدد الأوامــــــــر 303

حجم وحدة الترجمة 61k

حجم الأوامــــــــــر 2-57 بايت

النــــــــــــــــوع Berkeley

سنــــة التصنيـــــع 1981

عدد الأوامــــــــر 3

حجم وحدة الترجمة 0

حجم الأوامــــــــــر 4 بايت

3

النــــــــــــــــوع Xerox

سنــــة التصنيـــــع 1978

عدد الأوامــــــــر 270

حجم وحدة الترجمة 17k

حجم الأوامــــــــــر 1-3 بايت

النــــــــــــــــوع Stanford

سنــــة التصنيـــــع 1983

عدد الأوامـــــــر 55

حجم وحدة الترجمة 0

حجم الأوامــــــــــر 4 بايت

[تحرير] 3- توضيح آلية إجراء عملية في كل من CISC & RISC

[تحرير] أولا: في حالة الـ RISC

مثلاًً في لغــة التجميــــع Assembly للقيـــام بعمليــــة ضــرب عدديـــن (Multiplication) فإننـــا سنحتـــاج للتالي : 1- تحميل العدد الأول من الذاكرة في المسجل A . أي ( LOAD A ، 2 : 3 ), حيث "3:2" يمثل الموقع في الذاكرة وطبعا A اسم للمسجل الذي سنخزن فيه القيمة.

2- ويتم تحميل العدد الثاني بنفس الطريقة في المسجل B .

3 -إجراء عملية الضرب: PROD A ، B .

4- تخزين الناتج الذاكرة: STORE 2 : 3 ، A .

حيث سيخزن الناتج بعد الضرب أوتوماتيكيا في المسجل A وسنقوم بنقل القيمة التي بداخله للموقع الذاكري المحدد "2:3" .

[تحرير] ثانيا: في حالة الـ CISC:

أمــــــا بالنسـبة لعملية الضرب في CISC فإنها تتم بنفس خطوات الأسلوب الســابق فعلياً ولكـــن الذي يظهر لك كمبرمج أمــر واحــد فقــط MULT 2 : 3 ، 5 : 2 . لاحظ البساطة في استخدام الأمر فقد قام مباشرة بعملية الضرب للقيم من الموقعين (2 : 3 ، 5 : 2) في الذاكرة و من ثم التخزين في الموقع ( 2 : 3 ).

ملاحظة :

قد يبدو من خلال المثالين السابقين أن عملية الضرب كمثال على ذلك في معالجات RISC أعقد مما هي عليه في معالجات CISC . ولكن عند التمعن في أوامر المعالجين نجد أن : أمر ( MULT ) في الـ CISC يتضمن بداخله على (LOAD – STORE – PROD ). فهو في "CISC" قد وفر عليك جزء كبير من المجهود وألقاه على عاتق وحدة ترجمة ( Microcode Unit) و التي تحتوي على كود مخزن لفك الأوامر المركبة إلى مكوناتها الأولية.

لابد أنك قد لاحظت أن CISC تولي الاهتمام الأكبر بالمبرمج لتسهل عمله و بالتالي تقلل من تكلفة برمجته ، بينما RISC تولي الاهتمام الأكبر لتقديم الأوامر بأبسط صورة ممكنة للمعالج ليعطي الأداء الأمثل .

[تحرير] 4 - CISC VS RISC

التسلسل معالجات CISC معالجات RISC

1

أوامر معقدة قد تستغرق أكثر من دورة للمعالج

أوامر بسيطة تستغرق دورة معالج وحيدة لإتمام التنفيذ

2

أي أمر ممكن أن يحتاج للوصول إلى الذاكرة أثناء تنفيذه.

الوصول للذاكرة (لسحب/ لتخزين) المعلومات فقط . وخلال التنفيذ تكون كل متطلبات الأمر جاهزة داخل المسجلات في المعالج.

3

لا تستخدم تقنية الأنابيب pipelining أو تستخدمه بشكل أقل مقارنة مع RISC

استخدام تقنية الأنابيب pipelining بشكل موسع

4

الأوامر تتم ترجمتها في وحدة Microcode Unit والتي توجد ضمن المعالج كخطوة تسبق التنفيذ.

تنفيذ الأوامر يكون مباشرة دون ترجمة (أي أنها عبارة عن أوامر بسيطة )

5

الأوامر تتفاوت في الحجم والتعقيد

الأوامر بسيطة و موحدة الطول (4 بايت )

6

عدد كبير من الأوامر(?3000) ووضعيات التشغيل. "Safe ،Protected, Vertual"

يعدد قليل من الأوامر (?200)

7

التعقيد في مستوى العتاد تحديدا في وحدة Microcode Unit

compilersالتعقيد في مستوى البرمجيات تحديدا في الـ

8

مجموعة مسجلات واحدة فقط One Register Set

العديد من مجاميع المسجلات Many Register Sets

[تحرير] 5- خلاصة القول حول كل من التقنيتين CISC & RISC:

حتى منتصف الثمانينات في القرن السابق كان التوجه السائد في عالم صناعة المعالجات CPUs هو بناء معالجات ذات أوامر أعقد و أكثر عدداً مما يجعل البرمجة أمرا أسهل ولكن في تلك الأثناء ظهر توجه آخر معاكس تماماً وهو السعي لبناء معالجات ذات أوامر بسيطة جداً ومحدودة العدد مما سيمكن من تنفيذها بسرعات عالية جداً وغير مسبوقة إلى جانب السرعة في التنفيذ هناك جانب إيجابي يعتقد البعض أنه أكثر أهمية وهو أنه طالما أن الأوامر بسيطة فإن عدد الترانزستورات اللازمة سيكون أقل وتعقيد التصميم للـ CPUs صار أقل مما يعني كلفة أقل في الإنتاج والتطوير مع ظهور ذلك الجيل ذو الأوامر المحدودة و الذي تمت تسميته RISC .

في الحقيقة تم تسمية التوجه القديم ذو الأوامر الأكثر عددا وتعقيداً بـ CISC وذلك لتمييزها عن الجيل الجديد.

من باب ذكر الشيء في موضعه يجب أن نذكر أن تقنية CISC كانت ولا تزال ذات شعبية عارمة نظرا لأنها تسهل مهمة المبرمجين عموماً مما يمكن من تطوير البرامج بسرعة أعلى وكلفة أقل وهذا في الحقيقة مكمن القوة الأكبر لهذه التقنية.

التوجه القديم أفضل أم الجديد موضع جدل ونقاش بين الكثيرين, الكثير قالوا طالما أن تقنية RISC تعني معالجات أسرع وأرخص إذن هي ستكون معالجات المستقبل ومسألة بقاء معالجات CISC ما هي إلا مسألة وقت. لكن ذلك لم يحدث... لماذا...؟؟؟ نعود ونتذكر نقطة قوة CISC وهي مسألة لا يستهان بها بل وتعتبر نقطة ضعف كبرى في الـ RISC إذ وجد الكثيرون أن تكلفة تطوير البرامج لها و العناء المبذول فيها أكبر بكثير من CISC . بل وحتى مسألة السرعة فإن معالجات الـ CISC كانت في تطور دائم نحو الأفضل وذلك لأنها بدأت "CISC " تطبق الكثير من تقنيات الـRISC مثل الـ Pipelining & SuperScaling مما يعني أن هامش الأداء تناقص بشكل كبير بين التقنيتين ، حتى أن معالجات RISC بدأت أعداد الأوامر فيها بالازدياد.

الخلاصة أن كلا التقنيتين بدأتا في أخذ الصفات الجيدة من الأخرى محاولة تقليل الضعف فيها مما حدى بالكثيرين للقول أنهما في تقارب دائم من ناحية الأداء والواقع أن كلا منهما مستمر في شريحته الخاصة .

[تحرير] وصلات خارجية

http://cse.stanford.edu/class/sophomore-college/projects-00/risc/risccisc/

http://www.cstp.umkc.edu/~mullinsj/cs282/DifferenceBetweenRISCandCISC.htm

[تحرير] وصلات داخلية

تقنية حاسب مجموعة التعليمات المعقدة

http://en.wikipedia.org/wiki/RISC

http://en.wikipedia.org/wiki/Computer_architecture

[تحرير] المراجع

  • كتاب : How Computer Work
  • كتاب : بنيان الحاسب
  • كتاب : Microprocessor Architectures and Systems