اصول و فنون مهندسی کامپیوتر مدرن
معماری پیشرفته پردازنده
فراتر از سرعت کلاک: موازیسازی در سطح دستورالعمل
سرعت کلاک پردازنده تنها بخشی از داستان کارایی است. یک پردازنده با کلاک ۴ گیگاهرتز لزوماً دو برابر سریعتر از یک پردازنده ۲ گیگاهرتزی نیست. تفاوت اصلی در معماری داخلی و توانایی پردازنده برای انجام کارهای بیشتر در هر چرخه کلاک نهفته است. این ایده، که به عنوان موازیسازی در سطح دستورالعمل (ILP) شناخته میشود، هسته اصلی طراحی پردازندههای مدرن است.
به جای اجرای دستورالعملها به صورت کاملاً متوالی، پردازندههای پیشرفته از تکنیکهایی مانند خط لوله (pipelining) برای همپوشانی اجرای چندین دستورالعمل استفاده میکنند. این مانند یک خط مونتاژ کارخانه است: به جای ساختن یک ماشین کامل و سپس شروع ماشین بعدی، هر ایستگاه (واکشی، رمزگشایی، اجرا) به طور همزمان روی یک ماشین متفاوت کار میکند. این کار توان عملیاتی کل سیستم را بدون نیاز به سریعتر کار کردن هر ایستگاه، به شدت افزایش میدهد.
اما خط لوله کامل نیست. وابستگیهای بین دستورالعملها میتواند باعث ایجاد «مخاطره» (Hazard) شود. یک مخاطره داده (Data Hazard) زمانی رخ میدهد که یک دستورالعمل به نتیجه دستورالعمل قبلی که هنوز کامل نشده، نیاز دارد. مخاطره کنترلی (Control Hazard) با دستورات انشعاب (branch) به وجود میآید، زیرا پردازنده نمیداند کدام مسیر را باید واکشی کند تا زمانی که شرط انشعاب ارزیابی شود. برای حل این مشکلات، پردازندهها از تکنیکهایی مانند «پیشفرستی» (Forwarding) برای به اشتراکگذاری نتایج بین مراحل خط لوله و برای حدس زدن مسیر بعدی برنامه استفاده میکنند.
اجرای موازی واقعی
خط لوله دستورالعملها را همپوشانی میکند، اما در هر لحظه تنها یک دستورالعمل در مرحله اجرا قرار دارد. معماری سوپراسکالر این محدودیت را با داشتن چندین واحد اجرایی (مانند چند واحد محاسبه و منطق یا ALU) از بین میبرد. این به پردازنده اجازه میدهد تا چندین دستورالعمل را به طور همزمان در یک چرخه کلاک رمزگشایی و اجرا کند.
برای استفاده کامل از این قابلیت، پردازندهها از «اجرای خارج از نوبت» (Out-of-Order Execution) استفاده میکنند. به جای اجرای دستورالعملها به ترتیبی که در برنامه نوشته شدهاند، پردازنده دستورالعملها را تحلیل کرده و آنهایی را که آماده هستند (یعنی وابستگی دادهای ندارند) زودتر اجرا میکند، حتی اگر در برنامه دیرتر آمده باشند. این کار واحدهای اجرایی را مشغول نگه میدارد و از توقفهای غیرضروری جلوگیری میکند.
با این حال، این تکنیکها بدون چالش نیستند. ، که اغلب با پیشبینی شاخه همراه است، به پردازنده اجازه میدهد تا کار را بر اساس یک حدس شروع کند. اگر حدس درست باشد، زمان ذخیره میشود. اگر اشتباه باشد، تمام نتایج کارهای انجام شده باید با دقت دور ریخته شوند تا از صحت عملکرد برنامه اطمینان حاصل شود. این فرآیند نیازمند سختافزار پیچیدهای برای ردیابی وضعیت و بازگرداندن تغییرات است.
فلسفههای طراحی: RISC-V در مقابل ARM
امروزه دو معماری مجموعه دستورالعمل (ISA) برجسته بر پایه فلسفه RISC (کامپیوتر با مجموعه دستورالعملهای کاهشیافته) وجود دارند: ARM و هر دو بر سادگی دستورالعملها تأکید دارند که به طراحی سختافزاری سادهتر و کارآمدتر منجر میشود.
معماری ARM، که در اکثر گوشیهای هوشمند و دستگاههای تعبیهشده یافت میشود، یک مدل تجاری مبتنی بر مجوز (licensing) دارد. شرکتها برای طراحی و ساخت تراشههای مبتنی بر ARM هزینه پرداخت میکنند. این اکوسیستم بالغ و بهینهسازی شده است و ابزارها و پشتیبانی گستردهای را ارائه میدهد.
از سوی دیگر، RISC-V یک استاندارد باز و رایگان است. هر کسی میتواند بدون پرداخت هزینه، پردازندههای سازگار با RISC-V را طراحی، تولید و بفروشد. این باز بودن باعث نوآوری سریع شده و به شرکتها اجازه میدهد تا پردازندههایی بسیار سفارشی برای نیازهای خاص خود بسازند.
| ویژگی | ARM | RISC-V |
|---|---|---|
| مدل کسبوکار | مبتنی بر مجوز (تجاری) | متنباز و رایگان |
| اکوسیستم | بسیار بالغ و گسترده | در حال رشد سریع |
| انعطافپذیری | محدود به گزینههای مجوز | بسیار بالا، کاملاً قابل تنظیم |
| مجموعه دستورالعمل | ثابت با افزونههای استاندارد | پایه کوچک با افزونههای اختیاری |
| کاربرد اصلی | موبایل، دستگاههای تعبیهشده | همه چیز از میکروکنترلرها تا ابرکامپیوترها |
انتخاب بین این دو اغلب به سبکسنگین کردن بین یک اکوسیستم اثباتشده (ARM) و انعطافپذیری و آزادی یک استاندارد باز (RISC-V) بستگی دارد. هر دو معماری نشان میدهند که چگونه طراحی هوشمندانه در سطح سختافزار میتواند به کارایی بالاتر و مصرف انرژی کمتر منجر شود.
کدام تکنیک به پردازنده اجازه میدهد تا اجرای چندین دستورالعمل را برای افزایش توان عملیاتی (throughput) همپوشانی کند، شبیه به یک خط مونتاژ؟
هنگامی که یک دستورالعمل به نتیجه دستورالعمل قبلی نیاز دارد که هنوز کامل نشده است، چه نوع مشکلی در خط لوله رخ میدهد؟
این تکنیکهای پیچیده با هم کار میکنند تا اطمینان حاصل شود که پردازندههای مدرن تا حد ممکن کارآمد هستند و از هر چرخه کلاک برای پیشبرد محاسبات استفاده میکنند.
