پرش به محتوا

رایانه کم دستور

از ویکی‌پدیا، دانشنامهٔ آزاد
(تغییرمسیر از معماری ریسک)
پردازنده رایانه کم دستور

رایانه کم دستور (به انگلیسی: Reduced instruction set computer) با کوته‌نوشت ریسک (به انگلیسی: RISC، /rɪsk/)، یک نوع معماری ساخت ریزپردازنده است. یک رایانه RISC به جای مجموعه بزرگی از دستورالعمل‌های پیچیده و تخصصی، مجموعه ای کوچک از دستورالعمل‌های ساده و عمومی دارد. وجه تمایز اصلی معماری RISC این است که مجموعه دستورالعمل با استفاده از تعداد زیادی رجیستر و یک خط لوله دستورالعمل بسیار منظم بهینه شده‌است که این امر باعث می‌شود تا تعداد کمی سیکل ساعت به ازای هر دستورالعمل (به انگلیسی: CPI) داشته باشیم. یکی دیگر از ویژگی‌های معمول RISC، معماری بارگیری/ذخیره (به انگلیسی: load/store) است، که در آن از طریق دستورالعمل‌های خاص و نه به عنوان بخشی از اکثر دستورالعمل‌ها، به حافظه دسترسی پیدا می‌کنیم.

انواع مختلفی از طرح‌های RISC شامل ARC, Alpha, Am29000، ARM، Atmel AVR, Blackfin, i860، i960، M88000، MIPS, PA-RISC, Power ISA (شامل PowerPC) , RISC-V، SuperH و SPARC است. استفاده از پردازنده‌های معماری ARM در تلفن‌های هوشمند و رایانه‌های لوحی مانند iPad و دستگاه‌های Android زمینه کاربری گسترده‌ای را برای سیستم‌های مبتنی بر RISC فراهم کرده‌است. همچنین از پردازنده‌های RISC در ابر رایانه‌هایی مانند Summit استفاده می‌شود که از ژانویه سال ۲۰۲۰ سریعترین ابر رایانه جهان است که در پروژه TOP500 رتبه‌بندی شده‌است.

دانشمند رایانه دیوید پترسون در سال ۲۰۱۷ به همراه جان هنسی، جایزه تورینگ را برای کار مشترکشان در توسعه‌دادن معماری رایانه کم‌دستور (ریسک/RISC) دریافت کردند.

یک رایانهٔ کم‌دستور (RISC) نوعی معماری پردازنده است که بر ساده‌سازی و کوچک‌کردن مجموعه دستورالعمل‌های CPU تمرکز دارد. در این معماری، هر دستورالعمل معمولاً یک کار بسیار ساده را انجام می‌دهد و پیچیدگی به جای سخت‌افزار، بیشتر به نرم‌افزار سپرده می‌شود. به همین دلیل ممکن است برای انجام یک عملیات، تعداد دستورالعمل بیشتری نسبت به پردازنده‌های پیچیده‌تر از نوع CISC نیاز باشد، اما هر دستورالعمل با سرعت بیشتری اجرا می‌شود و اجرای خط لوله‌ای نیز با سادگی بیشتری ممکن می‌شود.

ویژگی مهم در RISC این است که دستورالعمل‌ها تنها روی رجیسترها عمل می‌کنند و ارتباط با حافظه صرفاً به وسیلهٔ دستورهای بارگیری و ذخیره انجام می‌شود. در این معماری معمولاً تعداد زیادی رجیستر سریع در نظر گرفته می‌شود و حالت‌های آدرس‌دهی نیز محدود و قابل پیش‌بینی هستند؛ موضوعی که طراحی پردازنده و کل سامانه را ساده‌تر می‌کند.

خاستگاه ایده‌های RISC به پروژهٔ مشهور IBM 801 در اواخر دههٔ ۱۹۷۰ بازمی‌گردد. این طرح هرچند ابتدا جنبهٔ آزمایشی داشت، اما الهام‌بخش دو پروژهٔ مهم دانشگاهی در کالیفرنیا شد: طرح MIPS در دانشگاه استنفورد و طرح RISC در دانشگاه برکلی. این دو پروژه در نهایت به پردازنده‌های تجاری MIPS و SPARC در دههٔ ۱۹۸۰ انجامیدند. در سال‌های بعد، شرکت IBM نیز معماری‌های POWER و PowerPC را بر پایهٔ همین مفاهیم توسعه داد و به تدریج معماری‌های دیگری مانند ARM، PA-RISC و Alpha نیز معرفی شدند که نقش مهمی در بازار ایستگاه‌های کاری، رایانه‌های تعبیه‌شده و بعدها دستگاه‌های همراه ایفا کردند.

ویژگی‌ها

[ویرایش]

معماری RISC بر مجموعه‌ای از اصول ساده و مشخص استوار است که هدف آن کاهش پیچیدگی پردازنده و افزایش سرعت اجرای دستورالعمل‌هاست. مهم‌ترین ویژگی این معماری آن است که هر دستورالعمل تنها یک کار مشخص و ساده را انجام می‌دهد. این روش باعث می‌شود زمان اجرای دستورالعمل‌ها قابل پیش‌بینی باشد و بتوان آن‌ها را با کارایی بیشتری در خط لوله پردازنده قرار داد.

در پردازنده‌های RISC معمولاً تعداد زیادی رجیستر پرسرعت در نظر گرفته می‌شود تا بیشتر عملیات محاسباتی به‌جای حافظه، روی این رجیسترها انجام گیرد. در این معماری، تنها دستورهایی که برای بارگیری و ذخیره‌سازی طراحی شده‌اند با حافظه در ارتباط هستند و سایر دستورالعمل‌ها فقط روی رجیسترها عمل می‌کنند. این ساختار که به «معماری بارگیری/ذخیره» معروف است، پیچیدگی واحد کنترل و مسیر داده را به‌طور چشمگیری کاهش می‌دهد.

همچنین پردازنده‌های RISC معمولاً از حالت‌های آدرس‌دهی محدود و ساده استفاده می‌کنند. این محدودیت نه‌تنها طراحی سخت‌افزار را آسان‌تر می‌کند، بلکه به زمان اجرای ثابت‌تر و قابل پیش‌بینی‌تر برای دستورالعمل‌ها منجر می‌شود. وجود چنین ساختاری زمینه را برای اجرای خط لوله‌ای عمیق و کارآمد فراهم می‌کند و امکان می‌دهد پردازنده در هر چرخهٔ ساعت چند دستورالعمل را به‌طور هم‌زمان پردازش کند.

در مجموع، کاهش پیچیدگی دستورالعمل‌ها، استفادهٔ گسترده از رجیسترها، معماری بارگیری/ذخیره و زمان اجرای منظم دستورها از اصول اصلی است که باعث شده RISC به یکی از مهم‌ترین رویکردها در طراحی پردازنده‌های مدرن تبدیل شود.

تاریخچه و توسعه

[ویرایش]

طراحی موتور محاسبات اتوماتیک (ACE) آلن تورینگ در سال ۱۹۴۶ بسیاری از ویژگی‌های معماری RISC را داشت. تعدادی از سیستم‌ها، که به دهه ۱۹۶۰ بازمی‌گردد، به عنوان اولین معماری RISC شناخته شده‌اند، که بخشی از آن بر اساس استفاده از رویکرد بار / فروشگاه است. اصطلاح RISC توسط دیوید پترسون از پروژه Berkeley RISC ابداع شده‌است، اگرچه قبلاً مفاهیم تقریباً مشابهی ظاهر شده بودند.

از سال ۲۰۱۰، معماری مجموعه جدید منبع باز (ISA) , RISC-V، در دانشگاه کالیفرنیا، برکلی، برای اهداف تحقیقاتی و به عنوان یک جایگزین رایگان برای ISAهای اختصاصی در دست توسعه است. از سال ۲۰۱۴، نسخه ۲ فضای کاربر ISA ثابت است. ISA به گونه ای طراحی شده‌است که از یک هسته barebones قابل استفاده باشد و برای یک پردازنده کوچک تعبیه شده تا استفاده از رایانه‌های رایانه ای و ابری با استفاده از پسوندهای تعریف شده و پردازنده‌های تعریف شده و تراشه‌ها، قابل استفاده باشد. این آزمایش در طراحی سیلیکون با ROCKET SoC انجام شده‌است که به عنوان یک ژنراتور پردازنده منبع باز به زبان CHISEL نیز موجود است.

اولین پروژه مبتنی بر معماری ریسک در اواخر دهه ۷۰ و اوایل دهه ۸۰ میلادی توسط شرکت آی‌بی‌ام، دانشگاه استانفورد و دانشگاه برکلی آغاز شد. در آن دوره معماری میپس[۱] از دانشگاه استانفورد و نسخه‌های ۱ و ۲ پروژه ریسک از دانشگاه برکلی، همگی بر پایهٔ یک فلسفه بنا شده بودند که بعداً به عنوان معماری ریسک شناخته شد و در خواص زیر مشترک بودند:

پس از شکل‌گیری نخستین پروژه‌های RISC در استنفورد، برکلی و IBM، جریان طراحی پردازنده‌ها در دههٔ ۱۹۸۰ و ۱۹۹۰ به‌سرعت به سمت معماری‌های کم‌دستور حرکت کرد. شرکت‌هایی مانند MIPS Computer Systems و Sun Microsystems نتایج پروژه‌های دانشگاهی را وارد صنعت کردند و پردازنده‌های تجاری مانند خانوادهٔ MIPS و SPARC را عرضه نمودند. این پردازنده‌ها با تکیه بر مجموعه دستورالعمل‌های ساده و قابلیت اجرای خط لوله‌ای عمیق، کارایی بالایی در ایستگاه‌های کاری و سامانه‌های یونیکس از خود نشان دادند.

در همین دوره، IBM نیز با توسعهٔ معماری‌های POWER و سپس PowerPC نقش مهمی در گسترش استفادهٔ صنعتی از RISC داشت. معماری‌های دیگری مانند PA-RISC از شرکت HP، Alpha از DEC و SuperH نیز در دهه‌های بعد معرفی شدند و باعث گسترش حضور RISC در سرورها، سیستم‌های تعبیه‌شده و تجهیزات شبکه شدند.

در دههٔ ۲۰۱۰ نسل جدیدی از معماری‌های کم‌دستور با هدف ایجاد یک ISA کاملاً آزاد و قابل توسعه مطرح شد. مهم‌ترین نمونهٔ این جریان RISC-V است که در دانشگاه کالیفرنیا، برکلی طراحی شد. این معماری به‌صورت متن‌باز توسعه یافته و هدف آن فراهم کردن یک زیرساخت رایگان برای ساخت پردازنده‌هایی از مقیاس کوچک تعبیه‌شده تا سامانه‌های بزرگ و پردازش ابری است. پیاده‌سازی‌هایی مانند هستهٔ ROCKET و ابزارهای توسعهٔ CHISEL، امکان آزمایش و ساخت تراشه‌های مبتنی بر RISC-V را برای پژوهشگران و شرکت‌ها فراهم کرده‌اند و به‌تدریج این معماری را به یکی از مهم‌ترین ISAهای مدرن تبدیل کرده‌اند.

گسترش تجاری

[ویرایش]

پس از شکل‌گیری معماری‌های اولیهٔ RISC در دانشگاه‌ها و آزمایشگاه‌های تحقیقاتی، این رویکرد به‌تدریج وارد عرصهٔ تجاری شد و شرکت‌های مختلفی به توسعهٔ پردازنده‌های مبتنی بر RISC روی آوردند. در دههٔ ۱۹۸۰ و اوایل دههٔ ۱۹۹۰، چندین معماری RISC موفق مانند **SPARC** از شرکت سان، **MIPS** از شرکت MIPS Computer Systems و **PA-RISC** از شرکت HP وارد بازار شدند و در ایستگاه‌های کاری و سرورها مورد استفاده قرار گرفتند.

همچنین، معماری **Power** و بعدتر **PowerPC** که توسط همکاری IBM، موتورولا و اپل توسعه یافت، یکی از مهم‌ترین نمونه‌های گسترش تجاری RISC در رایانه‌های رومیزی و صنعتی محسوب می‌شود. در همین دوران، RISC به‌ویژه در حوزه‌های تخصصی مانند ایستگاه‌های کاری گرافیکی، مراکز دادهٔ اولیه و سامانه‌های نهفته جایگاه مهمی به‌دست آورد.

در اواخر دههٔ ۱۹۹۰ و اوایل ۲۰۰۰، معماری **ARM** که برای مصرف انرژی پایین طراحی شده بود، به‌سرعت در دستگاه‌های قابل‌حمل گسترش یافت و رفته‌رفته تبدیل به یکی از موفق‌ترین معماری‌های مبتنی بر RISC در جهان شد. استفادهٔ گستردهٔ ARM در گوشی‌های هوشمند، تبلت‌ها و سامانه‌های توکار باعث شد معماری RISC جایگاهی بی‌رقیب در حوزهٔ دستگاه‌های کم‌مصرف پیدا کند.

گسترش تجاری معماری RISC نه‌تنها نشان‌دهندهٔ کارایی و سادگی طراحی آن است، بلکه بیانگر توانایی این معماری در سازگاری با نیازهای متفاوت بازار، از دستگاه‌های کوچک تا سامانه‌های با کارایی بالا است.

مقایسه با سایر معماری‌ها

[ویرایش]

برخی از CPUها به‌طور خاص طراحی شده‌اند تا مجموعه ای از دستورالعمل‌های بسیار کمی داشته باشند - اما این طراحی‌ها با طرح‌های کلاسیک RISC بسیار متفاوت است، بنابراین به آنها اسامی دیگری از قبیل رایانه تنظیم حداقل دستورالعمل (MISC) یا معماری محرک (TTA) داده شده‌است.

معماری RISC به‌طور سنتی در بازارهای رایانه رومیزی و سرورهای کالا، موفقیت‌های کمی داشته‌است، جایی که سیستم عامل‌های مبتنی بر x86 همچنان معماری اصلی پردازنده هستند. با این حال، ممکن است این تغییر کند، زیرا پردازنده‌های مبتنی بر ARM برای سیستم‌های با کارایی بالاتر تولید می‌شوند. تولیدکنندگانی از جمله Cavium , AMD و Qualcomm پردازنده‌های سرور را بر اساس معماری ARM منتشر کرده‌اند. ARM همچنین در سال ۲۰۱۷ با Cray در تولید ابر رایانه مستقر در ARM همکاری می‌کند. مایکروسافت در دسک تاپ اعلام کرد که قصد دارد از نسخه رایانه شخصی ویندوز ۱۰ در دستگاه‌های مبتنی بر کوالکام اسنپ دراگون در سال ۲۰۱۷ به عنوان بخشی از همکاری این شرکت با کوالکام پشتیبانی کند. این دستگاه‌ها از طریق یک شبیه‌ساز پردازنده x86 از نرم‌افزار Win32 مبتنی بر x86 پشتیبانی می‌کنند.

با این وجود، در خارج از عرصه دسک تاپ، معماری ARM RISC در تلفن‌های هوشمند، تبلت‌ها و اشکال بسیاری از دستگاه تعبیه شده کاربرد گسترده‌ای دارد. همچنین این مورد وجود دارد که از زمان پنتیوم پرو (P6)، اینتل از هسته پردازنده داخلی RISC برای پردازنده‌های خود استفاده کرده‌است.

در حالی که طرحهای اولیه RISC با طرحهای CISC معاصر تفاوت چشمگیری داشتند، تا سال 2000 CPUهای با بالاترین عملکرد در خط RISC تقریباً از بالاترین عملکرد پردازنده‌های خط CISC غیرقابل تشخیص بودند.

مزایا و معایب

[ویرایش]

معماری RISC به دلیل طراحی ساده و تمرکز بر مجموعه‌ای کوچک از دستورالعمل‌ها، در بسیاری از کاربردهای رایانشی عملکرد مطلوبی دارد. یکی از مهم‌ترین مزایای این معماری، کاهش پیچیدگی سخت‌افزار است؛ زیرا پردازنده مجبور نیست تعداد زیادی دستورالعمل متفاوت را پشتیبانی کند. این سادگی موجب می‌شود طراحی خط لوله آسان‌تر باشد و پردازنده بتواند با فرکانس بالاتری کار کند. مصرف توان پایین نیز از دیگر ویژگی‌های مهم این معماری است، به همین دلیل پردازنده‌های مبتنی بر RISC – مانند خانوادهٔ ARM – در دستگاه‌های قابل‌حمل، تلفن‌های هوشمند، تبلت‌ها و بسیاری از سامانه‌های نهفته کاربرد گسترده‌ای دارند. افزون بر این، وجود تعداد بیشتری ثبات عمومی باعث می‌شود بسیاری از عملیات بدون نیاز به دسترسی مکرر به حافظه انجام شوند که این موضوع به افزایش کارایی منجر می‌شود.

با وجود این مزایا، معماری RISC محدودیت‌هایی نیز دارد. از آنجا که دستورالعمل‌ها ساده‌تر هستند، معمولاً برای انجام یک کار مشخص به تعداد بیشتری دستور احتیاج است و این مسئله می‌تواند اندازهٔ کد ماشین را افزایش دهد. همچنین در برخی وظایف پیچیده، پردازنده‌های مبتنی بر معماری CISC همچنان عملکرد بهتری ارائه می‌دهند؛ زیرا برخی از دستورالعمل‌های آن‌ها می‌تواند کارهای پیچیده را با تعداد دستور کم‌تری انجام دهد. در بازار رایانه‌های رومیزی نیز معماری RISC کمتر مورد استفاده قرار گرفته‌است، هرچند با گسترش پردازنده‌های ARM در سال‌های اخیر این وضعیت در حال تغییر است.

استفاده از معماری RISC

[ویرایش]
تصویری از پردازنده‌ی PowerPC601 PPC601FD-080-2

معماری RISC هم‌اکنون در طیف وسیعی از سیستم عامل‌ها استفاده می‌شود، از تلفن‌های هوشمند و رایانه‌های لوحی گرفته تا برخی از سریعترین تصتابر رایانه‌های جهان مانند Summit، سریعترین در لیست TOP500 تا نوامبر ۲۰۱۸.

سیستم‌های کم مصرف و موبایل

[ویرایش]

با آغاز قرن بیست و یکم، اکثر سیستم‌های کم مصرف و موبایل به معماری RISC اعتماد داشتند. مثالها عبارتند از:

معماری ARM بر بازار سیستم‌های جاسازی شده کم مصرف و کم هزینه (به‌طور معمول ۲۰۰–۱۸۰۰ مگاهرتز در سال ۲۰۱۴) حاکم است. در تعدادی سیستم مانند اکثر سیستم‌های مبتنی بر Android , Apple iPhone و iPad , Microsoft Windows Phone (Windows Mobile سابق)، دستگاه‌های RIM , Nintendo Game Boy Advance , DS، 3DS و Switch , Raspberry Pi و غیره استفاده می‌شود.

از PowerPC IBM در کنسول‌های بازی GameCube , Wii , PlayStation 3، Xbox 360 و Wii U استفاده شده‌است.

خط MIPS (در یک مقطع مورد استفاده در بسیاری از رایانه‌های SGI) در کنسول‌های بازی پلی استیشن، پلی استیشن ۲، نینتندو ۶۴، پلی استیشن قابل حمل و دروازه‌های مسکونی مانند سری‌های Linksys WRT54G مورد استفاده قرار گرفت.

SuperH Hitachi، در اصل در Sega Super 32X , Saturn و Dreamcast مورد استفاده گسترده قرار گرفته بود، هم‌اکنون توسط Renesas به عنوان SH4 تولید و فروخته شده‌است.

Atmel AVR در محصولات مختلفی از کنترلرهای دستی Xbox و سکوی میکروکنترلر منبع باز آردوینو گرفته تا خودروهای BMW استفاده می‌شود.

RISC-V، پنجمین منبع باز برکلی RISC ISA، دارای فضای آدرس ۳۲ یا ۶۴ بیتی، یک مجموعه دستورالعمل کوچک عدد صحیح هسته و یک ISA آزمایشی «فشرده» برای تراکم کد و برای پسوندهای استاندارد و خاص طراحی شده‌است.

رایانه‌های رومیزی و لپ‌تاپ‌ها

[ویرایش]

در سال‌های اخیر پردازنده‌های مبتنی بر RISC وارد حوزهٔ رایانه‌های شخصی و لپ‌تاپ‌ها نیز شده‌اند.

مهم‌ترین نمونهٔ این روند مهاجرت شرکت اپل از معماری x86 به معماری ARM با معرفی تراشه‌های Apple Silicon است. این پردازنده‌ها نشان دادند که معماری‌های RISC می‌توانند در کنار مصرف انرژی کمتر، عملکردی قابل رقابت با پردازنده‌های سنتی دسکتاپ ارائه دهند.

افزون بر اپل، شرکت‌های دیگری نیز به توسعهٔ پردازنده‌های مبتنی بر ARM برای رایانه‌های شخصی روی آورده‌اند و نسخه‌های جدید سیستم‌عامل‌ها پشتیبانی بهتری از اجرای بومی روی معماری‌های RISC فراهم کرده‌اند.

ایستگاه‌های کاری، سرورها و ابر رایانه‌ها

[ویرایش]

MIPS توسط Silicon Graphics (ساخت سیستم‌های مبتنی بر MIPS در سال ۲۰۰۶ متوقف شد).

SPARC، توسط اوراکل (سان مایکروسیستمز سابق) و فوجیتسو بودند.

IBM's IBM POWER مجموعه معماری، PowerPC و Power ISA را که مشهورترین کاربرد آن در بسیاری از مدل‌های رایانه ای Macintosh است تا اواخر سال ۲۰۰۵ و در بسیاری از ابر رایانه‌های IBM، سرورهای میان رده و ایستگاه‌های کاری مشهور است.

PA-RISCهای Hewlett-Packard، همچنین با عنوان HP-PA شناخته می‌شود (در پایان سال ۲۰۰۸ قطع شد).

آلفا، در رایانه‌های تک بورد، ایستگاه‌های کاری، سرورها و ابر رایانه‌های شرکت تجهیزات دیجیتال، سپس Compaq و سرانجام HP (که از سال ۲۰۰۷ قطع شد) استفاده می‌شود.

RISC-V، منبع باز پنجم برکلی RISC ISA، دارای فضای آدرس ۶۴- یا ۱۲۸ بیتی، و هسته عدد صحیح با نقطه شناور، اتمی و پردازش بردار گسترش یافته و طراحی شده‌است که با دستورالعمل‌های مربوط به شبکه، I / O، گسترش می‌یابد. و پردازش داده‌ها یک طرح فوق‌العاده ۶۴ بیتی با عنوان «موشک» برای بارگیری در دسترس است.

معماری‌های متن‌باز، استاندارد یا کاربردهای نوین

[ویرایش]

معماری متن‌باز RISC-V یکی از مهم‌ترین پیشرفت‌های سال‌های اخیر در طراحی پردازنده‌ها به‌شمار می‌رود.

این معماری بدون نیاز به پرداخت حق امتیاز ارائه می‌شود و امکان توسعه، پیاده‌سازی و گسترش آزادانه را برای پژوهشگران و شرکت‌ها فراهم می‌کند.

RISC-V در سامانه‌های نهفته، اینترنت اشیا، دستگاه‌های کم‌مصرف، کنترلرهای ذخیره‌سازی و حتی پروژه‌های مرتبط با مراکز داده و شتاب‌دهنده‌های سخت‌افزاری مورد استفاده قرار گرفته‌است.

به‌دلیل انعطاف‌پذیری بالا و قابلیت سفارشی‌سازی، انتظار می‌رود نقش این معماری در آیندهٔ صنعت نیمه‌هادی افزایش یابد.

طراحی خط لوله در معماری RISC

[ویرایش]

یکی از ویژگی‌های اصلی معماری RISC، امکان پیاده‌سازی ساده‌تر و مؤثرتر خط لوله (Pipeline) در پردازنده است. خط لوله روشی است که در آن اجرای دستورالعمل‌ها به چند مرحلهٔ جداگانه تقسیم می‌شود و پردازنده می‌تواند به‌طور هم‌زمان چندین دستور را در مراحل مختلف اجرا کند. این روش باعث افزایش چشمگیر کارایی و توان عملیاتی پردازنده می‌شود.

در معماری RISC، به دلیل یکنواخت بودن طول دستورالعمل‌ها و ساده‌تر بودن عملیات هر دستور، هماهنگ‌سازی مراحل خط لوله بسیار آسان‌تر است. معمولاً پردازنده‌های RISC دارای مراحل مشخصی مانند واکشی، رمزگشایی، اجرا، دسترسی به حافظه و بازگرداندن نتیجه هستند، که این موضوع طراحی سخت‌افزار را ساده‌تر و قابل پیش‌بینی‌تر می‌کند.

معماری RISC همچنین از تعداد زیادی ثبات عمومی استفاده می‌کند که باعث کاهش نیاز به دسترسی به حافظه در هنگام اجرای دستورات می‌شود. این ویژگی باعث می‌شود وقفه‌های ناشی از تأخیر حافظه کمتر شود و خط لوله عملکرد پایدارتری داشته باشد.

با وجود این، پیاده‌سازی خط لوله در RISC همچنان با چالش‌هایی مواجه است. مشکلاتی مانند برخوردهای داده (data hazards)، برخوردهای کنترلی (branch hazards) و برخوردهای ساختاری (structural hazards) نیازمند روش‌هایی برای پیش‌بینی انشعاب، فورواردینگ و زمان‌بندی دقیق هستند. با این حال در اکثر پیاده‌سازی‌ها، سادگی مجموعه دستورالعمل RISC باعث شده این مشکلات نسبت به معماری‌های پیچیده‌تر آسان‌تر مدیریت شوند.

در مجموع، طراحی خط لوله یکی از دلایل اصلی برتری معماری RISC در زمینهٔ کارایی و مصرف انرژی است و نقش مهمی در استفاده گستردهٔ آن در دستگاه‌های قابل‌حمل و سامانه‌های تعبیه‌شده ایفا می‌کند.

ویژگی‌ها و فلسفهٔ طراحی

[ویرایش]

فلسفهٔ مجموعه‌دستورات

[ویرایش]

یک برداشت نادرست رایج از عبارت «رایانه با مجموعه‌دستورات کاهش‌یافته» (RISC) این است که گویی تنها با حذف تعدادی دستور، مجموعه‌دستورات کوچک‌تر می‌شود. در واقع، طی سال‌ها مجموعه‌دستورات RISC رشد کرده‌اند و امروزه بسیاری از آن‌ها حتی بزرگ‌تر از مجموعه‌دستورات برخی پردازنده‌های CISC هستند. برای نمونه، برخی پردازنده‌های RISC مانند PowerPC مجموعه‌دستوراتی به بزرگی IBM System/370 دارند؛ در حالی که پردازنده‌ای مانند DEC PDP-8 ـ که بی‌تردید یک معماری CISC است چون بسیاری از دستورهایش چندین بار به حافظه دسترسی می‌کنند ـ تنها ۸ دستور اصلی و چند دستور توسعه‌یافته دارد.

منظور از «کاهش‌یافته» در RISC این است که مقدار کاری که هر دستور انجام می‌دهد کاهش یافته است؛ یعنی هر دستور در بیشترین حالت تنها یک چرخهٔ دسترسی به حافظهٔ داده دارد. این در مقابل دستورهای پیچیدهٔ CISC است که ممکن است برای اجرای تنها یک دستور، ده‌ها چرخهٔ دسترسی به حافظه نیاز داشته باشند.

برای اشاره به این مفهوم گاهی اصطلاح «معماری بارگذاری–ذخیره» به‌کار برده می‌شود.

از دیدگاهی دیگر در بحث RISC/CISC می‌توان به این توجه کرد که چه چیزهایی برای کامپایلر «آشکار» می‌شود. در یک پردازندهٔ CISC، سخت‌افزار ممکن است برای اجرای یک دستور پیچیده مانند STRING MOVE به‌طور داخلی از ثبات‌ها و بیت‌های پرچم استفاده کند، اما این جزئیات از دید کامپایلر پنهان می‌مانند. در مقابل، عملیات داخلی یک پردازندهٔ RISC مستقیماً برای کامپایلر قابل مشاهده است و همین موضوع سبب شکل‌گیری تعبیر «واگذاری کارهای جالب به کامپایلر» شده است.

قالب‌بندی دستورات

[ویرایش]

بیشتر معماری‌های RISC از دستورهای با طول ثابت و شیوهٔ رمزگذاری ساده استفاده می‌کنند؛ موضوعی که منطق واکشی، رمزگشایی و صدور دستور را بسیار ساده‌تر می‌کند و یکی از اهداف اصلی طراحی RISC به شمار می‌رود.

بخشی از این امکان، نتیجهٔ گذار به قالب‌های ۳۲ بیتی است. برای مثال، در یک برنامهٔ معمولی بیش از ۳۰٪ مقادیر ثابت برابر ۰ یا ۱ هستند، ۹۵٪ آن‌ها در یک بایت جا می‌شوند و ۹۹٪ در ۱۶ بیت. در معماری‌های ۸ یا ۱۶ بیتی دشوار بود که یک مقدار ثابت را همراه با opcode در یک کلمهٔ حافظه جا دهند؛ اما در معماری ۳۲ بیتی فضای کافی برای این کار وجود دارد و این موضوع نیاز به یک خواندن اضافی از حافظه را از بین می‌برد. به همین دلیل بسیاری از پردازنده‌های RISC امکان قرار دادن ثابت‌های ۱۲ یا ۱۳ بیتی را در خود دستور فراهم می‌کنند.

با فرض یک ناحیهٔ ثابت ۱۳ بیتی (مثلاً در معماری MIPS و RISC)، ۱۹ بیت باقی‌مانده برای رمزگذاری دستور کافی است. این مقدار فضا اجازهٔ تعیین opcode و یک یا دو ثبات را می‌دهد. عملیات ثبات‌به‌ثبات معمولاً سه عملوند دارند؛ بنابراین سه شمارهٔ ثبات لازم است. اگر پردازنده ۳۲ ثبات داشته باشد، هر کدام ۵ بیت نیاز دارند (جمعاً ۱۵ بیت). اگر یکی از این ثبات‌ها با یک مقدار ثابت جایگزین شود، همچنان فضای کافی برای دو ثبات دیگر و opcode وجود دارد. دستورهایی مانند INC یا DEC که در معماری‌های قدیمی برای کاهش تعداد کلمات خوانده‌شده از حافظه استفاده می‌شدند، در RISC ضروری نیستند چون با یک ثبات و مقدار ثابت ۱ قابل انجام‌اند.

قالب اصلی RISC-I یک نمونهٔ کلاسیک است: ۷ بیت برای opcode، یک بیت برای پرچم شرطی، ۵ بیت برای ثبات مقصد، ۵ بیت برای نخستین عملوند، و ۱۴ بیت باقی‌مانده برای مقدار ثابت یا شمارهٔ ثبات دوم. نمونهٔ پیچیده‌تر، رمزگذاری MIPS است که ۶ بیت opcode دارد و پس از آن دو ثبات ۵ بیتی قرار می‌گیرند. ۱۶ بیت پایانی نیز بسته به نوع دستور می‌تواند مقدار ثابت ۱۶ بیتی یا ترکیبی از بیت‌های شیفت و کد کامل‌کنندهٔ opcode باشد.

یکی از کاستی‌های دستورهای ۳۲ بیتی، کاهش چگالی کد است؛ موضوعی که برای سامانه‌های نهفته مهم‌تر از ایستگاه‌های کاری و سرورهاست. برای حل این مشکل، برخی معماری‌ها مجموعه‌دستورات فشردهٔ اختیاری ارائه می‌کنند؛ مانند SuperH، ARM Thumb، MIPS16e، Power VLE، RISC-V و Epiphany. این دستورها معمولاً تعداد ثبات‌های در دسترس و اندازهٔ ثابت‌ها را کاهش می‌دهند و اغلب از قالب دو عملوندی استفاده می‌کنند.

بهره‌برداری از سخت‌افزار

[ویرایش]

بارزترین ویژگی RISC، اجرای دست‌کم یک دستور در هر چرخه است. اجرای تک‌چرخه‌ای به معنای «اجرای سریع عملیات ساده‌ای است که بخش عمدهٔ جریان دستورات را تشکیل می‌دهند»، هدفی که به میانگین کارایی نزدیک به یک دستور در هر چرخه منجر می‌شود.

سایر ویژگی‌های معماری‌های RISC عبارت‌اند از:

  • تعداد بسیار کمتر ترانزیستورهای اختصاص‌یافته به منطق اصلی، که در نسل‌های اولیه امکان افزودن تعداد زیادی ثبات و افزایش موازی‌سازی داخلی را می‌داد.
  • قالب‌بندی یکنواخت دستورها، با طول ثابت و قرارگیری opcode در محل‌های یکسان برای ساده‌سازی رمزگشایی.
  • امکان استفادهٔ برابر تمامی ثبات‌های عمومی در همهٔ دستورها، که طراحی کامپایلر را ساده‌تر می‌کند.
  • حالت‌های آدرس‌دهی ساده، با محول‌کردن آدرس‌دهی پیچیده به دنباله‌هایی از دستورهای ساده.
  • تعداد اندک انواع دادهٔ پشتیبانی‌شده در سخت‌افزار (مثلاً بدون پشتیبانی از رشتهٔ بایتی یا BCD).

طراحی‌های RISC اغلب از مدل حافظهٔ هاروارد پیروی می‌کنند که جریان دستور و داده را از هم جدا می‌سازد. این ویژگی سبب می‌شود تغییر حافظهٔ دستور تا زمانی که دستور همگام‌سازی خاصی اجرا نشود، الزاماً تأثیری بر اجرای CPU نداشته باشد. در مقابل، بسیاری از پردازنده‌های CISC به‌طور خودکار میان کش دستور و داده سازگاری برقرار می‌کنند.

بسیاری از طراحی‌های نخستین RISC یک «حفرهٔ تأخیر شاخه» داشتند؛ یعنی دستور بلافاصله پس از یک پرش یا شاخه، بدون توجه به نتیجهٔ شاخه اجرا می‌شد. این کار باعث مشغول ماندن واحد ALU در زمان لازم برای پردازش شاخه می‌شد. امروزه این ویژگی بیشتر یک اثر جانبی نامطلوب تلقی می‌شود و در طراحی‌های مدرن حذف شده است.

برخی ایده‌های آغازین RISC به این موضوع اشاره داشت که کامپایلرهای آن زمان به دلیل محدودیت حافظه قادر نبودند از ویژگی‌های پیچیدهٔ معماری‌های CISC بهترین بهره را ببرند و حالت‌های آدرس‌دهی پیشرفته، چرخه‌های زیادی مصرف می‌کردند. در نتیجه، استدلال شد که انجام این عملیات با دنباله‌هایی از دستورهای ساده‌تر ـ در صورت امکان افزایش تعداد ثبات‌ها ـ می‌تواند کاراتر باشد. سادگی این دستورها امکان متعادل‌سازی بهتر مراحل پایپ‌لاین و دستیابی به فرکانس بالاتر را فراهم می‌کرد.

اندازه‌گیری‌های عملی روی برنامه‌های واقعی نیز نشان دادند که بیشتر ثابت‌های مورد نیاز در ۱۳ بیت جای می‌گیرند، در حالی که بسیاری از پردازنده‌ها ۱۶ یا ۳۲ بیت به آن‌ها اختصاص می‌دادند. بنابراین می‌توان ثابت‌ها را در فضای خالی یک دستور ۳۲ بیتی جای داد و از دسترسی‌های اضافی به حافظه جلوگیری کرد.

چون بسیاری از برنامه‌ها زمان زیادی را صرف اجرای عملیات ساده می‌کنند، طراحان به افزایش سرعت همین عملیات تمرکز کردند. نرخ کلاک یک CPU معمولاً به کندترین زیرعملیات وابسته است؛ بنابراین ساده‌سازی دستورها می‌تواند کل چرخه را کوتاه‌تر کند. هدف RISC ایجاد دستورهایی به‌قدری ساده بود که بتوانند به‌راحتی پایپ‌لاین شوند و به یک دستور در هر چرخه برسند؛ در مقابل معماری‌های CISC که عملیات پیچیدهٔ حسابی و انتقال ثباتی آن‌ها پایپ‌لاین‌کردن را دشوار می‌کند.

در نهایت، محدودیت دسترسی به حافظهٔ خارجی تنها از طریق دستورهای load و store یکی از مهم‌ترین ویژگی‌های RISC به‌شمار می‌آید. این ویژگی سبب شد طراحی دستورها ثابت‌طول، پایپ‌لاین‌ها ساده‌تر و منطق مدیریت تأخیر حافظه (مثل خطاهای کش) تنها در دو نوع دستور متمرکز شود. از همین ویژگی اصطلاح «معماری بارگذاری–ذخیره» نیز ریشه گرفته است.

نتیجه‌گیری

[ویرایش]

در مجموع، معماری‌های RISC با تمرکز بر ساده‌سازی دستورها، افزایش تعداد ثبات‌ها، ثابت‌طول‌کردن قالب دستورات و جداسازی عملیات حافظه از عملیات محاسباتی، تلاش می‌کنند کارایی بالاتری به‌ویژه در پایپ‌لاین و فرکانس کاری به دست آورند. این معماری‌ها با وجود اینکه در ابتدا برای ایستگاه‌های کاری و کاربردهای علمی مطرح شدند، امروزه در حوزه‌های گسترده‌ای از جمله رایانش نهفته، تلفن‌های همراه، رایانش ابری و حتی ابررایانه‌ها به‌کار گرفته می‌شوند. بسیاری از معماری‌های مدرن ـ از جمله ARM، MIPS، SPARC و RISC-V ـ اصول بنیادین RISC را دنبال می‌کنند، هرچند هرکدام بسته به نیاز بازار و فناوری‌های جدید تغییراتی در آن ایجاد کرده‌اند. مفهوم RISC اکنون بیشتر به مجموعه‌ای از اصول طراحی اشاره دارد تا یک مجموعه‌دستورات خاص، و بسیاری از پردازنده‌های امروزی ترکیبی از ویژگی‌های RISC و CISC را در خود دارند.

جستارهای وابست

[ویرایش]

پانویس

[ویرایش]
  1. MIPS

منابع

[ویرایش]
  • «وبگاه دانشکده علوم کامپیوتر دانشگاه استانفورد». بایگانی‌شده از اصلی در ۱۰ ژوئن ۲۰۰۷. دریافت‌شده در ۲۲ شهریور ۱۳۸۷.
  • «مقاله Risc در وبگاه ویکی‌پدیای انگلیسی». دریافت‌شده در ۱۴ خرداد ۱۳۹۹.