یادگیری امروزم از معماری کامپیوتر موریس مانو (۲)

این پست درباره‌ی تفاوت های ساده‌ی معماری سیسک و ریسک است.

خب دیروز نشد که پست معماری کامپیوتر رو بنویسم. امروز سعی می‌کنم دوتا پست راجع به معماری کامپیوتر موریس مانو بنویسم.

این پست درباره‌ی تفاوت های ساده‌ی معماری سیسک و ریسک هست.

در حالت خیلی ساده به کامپیوتر هایی که تعداد زیادی دستورات پیچیده دارن میگن Complex Instruction Set Computer یا CISC.

ایده‌ی RISC از اینجا اومد که اوایل دهه هشتاد یه سری طراحای کامپیوتر اومدن گفتن بیاین کامپیوتری داشته باشیم که تعداد دستورات کمتر و با ساختارساده تری داشته باشه. پس اسم این سری کامپیوتر هارو گذاشتن Reduced Instruction Set Computer یا RISC.

معماری CISC

یکی از اهداف این معماری، ساده کردن کامپایل از زبان های سطح بالا به زبان ماشینه. بنابراین این معماری تعداد دستورات زیادی داره.

درواقع سعی شده statement هایی که به زبان های سطح بالا نوشته میشن یه معادل مستقیم توی دستوراتِ این معماری داشته باشند.

یکی دیگه از ویژگی های این معماری، variable-length بودن قالب دستوراتشه. یعنی دستورات طول یکسانی ندارند(طول دستورات یعنی معادل باینری یک instruction)؛ یک دستور ممکنه ۵ بایت جا بگیره و یک دستور دیگه ممکنه ۲ بایت جا بگیره. بنابراین به عنوان مثال در یک سیستم با کلمه های ۳۲ بیتی (32bit words) یک دستور ممکنه نصف یک کلمه جا بگیره و دستور دیگه ممکنه یک کلمه به علاوه‌ی یک بایت از کلمه‌ی بعدی رو اشغال کنه. در این معماری یک بار باید عمل decode برای مشخص کردن طول دستور انجام بشه و یکبار هم برای پردازشِ خودِ دستور(مثل مشخص کردن opcode و …).

خلاصه ویژگی های این معماری به این صورته:

  • تعداد دستورات زیاد
  • مد های آدرس دهی بسیار وسیع
  • variable-length بودن دستور ها
  • امکان manipulate کردن مستقیم در مموری فراهمه

معماری RISC

این معماری بیشتر روی ساده تر بودن دستورات تاکید داره

ویژگی های این معماری به این صورته:

  • تعداد دستورات نسبتا کمی داره
  • تعداد مد های آدرس‌دهی نسبتا کمی داره
  • دستورات توی یک سیکل اجرا میشن
  • طول دستورات یکسانه
  • تعداد رجیسترهای بیشتری داره
  • مثل اینکه پایپلاین ها موثر تر هستن(چراش رو نمیدونم)

ثابت بودن طول دستور ها این امکان رو فراهم میکنه که کدگشایی دستورات خیلی راحت تر و سریعتر صورت بگیره و از اونجایی که دسترسی به حافظه محدوده،پردازش ها در رجیستر ها انجام میشن(که خیلی سریعتر از حافظه‌ست) و صرفا ازحافظه برای دریافت operand ها و یا قرار دادن نتایج استفاده میشه.

در آخر

حجم کدها توی ریسک بیشتر از سیسکه، کمتر از حافظه و بیشتر از رجیستر ها استفاده میشه و مصرف حافظه کمتر و سرعت بالاتری داره.