موضوع مقاله: رایانش موازی صریح دستورالعمل‌ها | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # رایانش موازی صریح دستورالعمل‌ها | مقدمه: رایانش موازی صریح دستورالعمل‌ها به ریزپردازنده‌ها اجازه می‌دهد دستورالعمل‌های نرم‌افزار را به جای استفاده از مدارهای پیچیده روی تراشه برای کنترل اجرای موازی، به کمک کامپایلر به صورت موازی اجرا کند. | ## بخش 1: رایانش موازی صریح دستورالعمل‌ها | هدف از ابداع آن، ایجاد امکان مقیاس پذیری ساده عملکرد، بدون به‌کارگیری فرکانس کلاک بالاتر بود. ریشه در VLIW در سال ۱۹۸۹، محققان اچ‌پی به این نتیجه رسیدند که معماری RISC دارد به محدودیت یک دستورالعمل در هر سیکل فرکانس می‌رسد. در VLIW چند عملیات درون هر دستورالعمل کد می‌شوند و سپس توسط واحدهای اجرای متعدد پردازش می‌شوند. یکی از اهداف EPIC این بود که پیچیدگی زمان‌بندی دستور العمل‌ها را از سخت‌افزار پردازنده به کامپایلر نرم‌افزار انتقال دهد، که می‌تواند این زمان‌بندی را به صورت استاتیک انجام دهد (با کمک ردیابی اطلاعات بازخورد). هدف دیگری که به همان اندازه اهمیت داشت این بود که از موازی‌سازی در سطح دستورالعمل (ILP) بهره‌برداری بیشتری شود. این امر با به‌کارگیری کامپایلر برای یافتن و استفادهٔ بیشتر از فرصت‌هایی افزون بر قبل برای اجرای موازی انجام می‌شود. VLIW (دست کم نسخه‌های اولیه آن) کمبودهای زیادی دارد که مانع گسترش پیدا کردن آن می‌شوند: مجموعه دستورالعمل‌های VLIW در پیاده‌سازی‌های مختلف با نسخه‌های قدیمی سازگار نیست. | ## بخش 2: رایانش موازی صریح دستورالعمل‌ها | وقتی پیاده‌سازی‌های گسترده‌تر (با واحدهای اجرایی بیشتر) ساخته می‌شوند، مجموعه دستورالعمل آن‌ها با ماشین‌های قدیمی تر و کوچک‌تر سازگار نیست. پاسخ دستور بار کردن در یک حافظه سلسله مراتبی که شامل حافظه نهان پردازنده یا DRAM باشد، تأخیر قطعی ندارد. این مسئله برنامه‌ریزی ایستا توسط کامپایلر برای دستورهای بار کردن را بسیار دشوار می‌کند. هر کدام از این باندل‌ها یک بیت توقف دارد که مشخص می‌کند آیا دسته‌های بعدی به این دسته از دستورالعمل‌ها وابسته‌اند یا خیر. با وجود این ویژگی می‌توان نسخه‌های بعدی را طوری پیاده‌سازی کرد که بتوانند چند باندل را به صورت موازی اجرا کنند. اطلاعات وابستگی توسط کامپایلر محاسبه می‌شوند و نیازی نیست که سخت‌افزار رویهٔ بررسی وابستگی عملوند را انجام دهد. این پیش‌واکشی احتمال موفقیت در مراجعه به حافظه نهان برای دستورها بار کردن را افزایش می‌دهد و می‌تواند درجه محلی بودن زمانی را که در سطوح مختلف حافظه نهان مورد نیاز است، تعیین کند. | ## بخش 3: رایانش موازی صریح دستورالعمل‌ها | از یک دستور بار کردن حدسی برای بار کردن داده به صورت حدسی، پیش از این که مشخص شود استفاده خواهد شد (با عبور از وابستگی‌های کنترلی)، یا قبل از استفاده تغییر خواهد کرد (با عبور از وابستگی‌های داده‌ای) استفاده می‌شود. یک دستور بررسی بار کردن به بار کردن حدسی کمک می‌کند تا بررسی کند که آیا آن بار کردن حدسی به دستور ذخیره‌سازی جلوتری وابسته بوده‌است یا خیر، و بدین ترتیب مشخص می‌شود که باید دو بار بار کردن انجام شود یا نه. معماری EPIC مجموعه‌ای از مفاهیم معماری را نیز برای افزایش موازی‌سازی در سطح دستورالعمل دربردارد: از اجرای پیش‌بینی شده برای کاهش رخ دادن پرش و افزایش اجرای حدسی دستورالعمل‌ها استفاده می‌شود. در این ویژگی حالات پرش به ثبات‌های پیش‌بینی تبدیل می‌شوند که برای از بین بردن نتایج اجرای دستورالعمل‌هایی به کار می‌رود که پرش به آن‌ها انجام نشده‌است. استفاده از استثناهای با تأخیر، با به‌کارگیری NaT برای ثبات‌های همه منظوره، این امکان را می‌دهد که اجرای حدسی درگیر استثناهای قابل گذر نشود. دستورالعمل‌های پرش چند مسیره با ترکیب چند پرش که یکی از آن‌ها اجرا خواهد شد، پیش‌بینی پرش را بهبود می‌بخشند. | ## جمع‌بندی | معماری Itanium تغییر نام ثبات و فایل‌های ثبات چرخشی را نیز به این موارد افزوده‌است، که ابزاری مفید برای خط لوله نرم‌افزاری می‌باشد زیرا اجبار انجام دستی بازکردن حلقه‌ها و تغییر نام ثبات‌ها را از بین می‌برد.