رایانش موازی صریح دستورالعمل‌ها

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

رایانش موازی صریح دستور العمل‌ها (Explicitly parallel instruction computing یا EPIC) واژه‌ای است که در سال ۱۹۹۷ توسط اتحاد اچ‌پی و اینتل برای توصیف شیوه‌ای از محاسبات که محققان از اوایل ۱۹۸۰ راجع به آن تحقیق می‌کردند، ابداع شد. به این شیوه معماری‌های مستقل هم گفته می‌شود. این شیوه پایه‌ای برای توسعه معماری Itanium توسط اچ‌پی و اینتل بود، و اچ‌پی بعدها اظهار داشت که EPIC تنها نامی قدیمی برای معماری Itanium بوده‌است.

رایانش موازی صریح دستورالعمل‌ها به ریزپردازنده‌ها اجازه می‌دهد دستورالعمل‌های نرم‌افزار را به جای استفاده از مدارهای پیچیده روی تراشه برای کنترل اجرای موازی، به کمک کامپایلر به صورت موازی اجرا کند. هدف از ابداع آن، ایجاد امکان مقیاس پذیری ساده عملکرد، بدون به کارگیری فرکانس کلاک بالاتر بود.

ریشه در VLIW[ویرایش]

در سال ۱۹۸۹، محققان اچ‌پی به این نتیجه رسیدند که معماری RISC دارد به محدودیت یک دستورالعمل در هر سیکل فرکانس می‌رسد. آنها آغاز به تحقیق درباره معماری جدید کردند که بعدها EPIC نامیده شد.

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

VLIW (دست کم نسخه‌های اولیه آن) کمبودهای زیادی دارد که مانع گسترش پیدا کردن آن می‌شوند:

  • مجموعه دستورالعمل‌های VLIW در پیاده‌سازی‌های مختلف با نسخه‌های قدیمی سازگار نیست. وقتی پیاده‌سازی‌های گسترده تر (با واحدهای اجرایی بیشتر) ساخته می‌شوند، مجموعه دستورالعمل آن‌ها با ماشین‌های قدیمی تر و کوچک تر سازگار نیست.
  • پاسخ دستور بار کردن در یک حافظه سلسله مراتبی که شامل حافظه نهان پردازنده یا DRAM باشد، تأخیر قطعی ندارد. این مسئله برنامه ریزی ایستا توسط کامپایلر برای دستورهای بار کردن را بسیار دشوار می‌کند.

معماری EPIC از معماری VLIW مشتق شده‌است و در عین حال مفاهیم زیادی از معماری سوپراسکالر را در بر دارد.

فراتر از VLIW[ویرایش]

معماری EPIC برای جبران کاستی‌های VLIW ویژگی‌های بسیاری دارد:

  • هر دسته چندتایی از دستورات نرم‌افزاری یک bundle نامیده می‌شوند.هر کدام از این باندل‌ها یک بیت توقف دارد که مشخص می‌کند آیا دسته‌های بعدی به این دسته از دستورالعمل‌ها وابسته‌اند یا خیر. با وجود این ویژگی می‌توان نسخه‌های بعدی را طوری پیاده سازی کرد که بتوانند چند باندل را به صورت موازی اجرا کنند. اطلاعات وابستگی توسط کامپایلر محاسبه می‌شوند و نیازی نیست که سخت افزار رویهٔ بررسی وابستگی عملوند را انجام دهد.
  • یک دستور پیش‌واکشی نرم‌افزاری به عنوان نوعی از پیش‌واکشی داده به کار می‌رود. این پیش‌واکشی احتمال موفقیت در مراجعه به حافظه نهان برای دستورات بار کردن را افزایش می‌دهد و می‌تواند درجه محلی بودن زمانی را که در سطوح مختلف حافظه نهان مورد نیاز است، تعیین کند.
  • از یک دستور بار کردن حدسی برای بار کردن داده به صورت حدسی، پیش از این که مشخص شود استفاده خواهد شد (با عبور از وابستگی‌های کنترلی)، یا قبل از استفاده تغییر خواهد کرد (با عبور از وابستگی‌های داده‌ای) استفاده می‌شود.
  • یک دستور بررسی بار کردن به بار کردن حدسی کمک می‌کند تا بررسی کند که آیا آن بار کردن حدسی به دستور ذخیره‌سازی جلوتری وابسته بوده‌است یا خیر، و بدین ترتیب مشخص می‌شود که باید دوبار بار کردن انجام شود یا نه.

معماری EPIC مجموعه‌ای از مفاهیم معماری را نیز برای افزایش موازی سازی در سطح دستورالعمل در بر دارد:

  • از اجرای پیش بینی شده برای کاهش رخ دادن پرش و افزایش اجرای حدسی دستورالعمل‌ها استفاده می‌شود. در این ویژگی حالات پرش به ثبات‌های پیش بینی تبدیل می‌شوند که برای از بین بردن نتایج اجرای دستورالعمل‌هایی به کار می‌رود که پرش به آن‌ها انجام نشده‌است.
  • استفاده از استثناهای با تأخیر، با به کارگیری NaT برای ثبات‌های همه منظوره، این امکان را می‌دهد که اجرای حدسی درگیر استثناهای قابل گذر نشود.
  • فایل‌های ثبات بسیار بزرگ از ضرورت تغییر نام ثبات‌ها جلوگیری می‌کنند.
  • دستورالعمل‌های پرش چند مسیره با ترکیب چند پرش که یکی از آن‌ها اجرا خواهد شد، پیش بینی پرش را بهبود می‌بخشند.

معماری Itanium تغییر نام ثبات و فایل‌های ثبات چرخشی را نیز به این موارد افزوده‌است، که ابزاری مفید برای خط لوله نرم‌افزاری می‌باشد زیرا اجبار انجام دستی بازکردن حلقه‌ها و تغییر نام ثبات‌ها را از بین می‌برد.

منابع[ویرایش]

۱.^ Schlansker and Rau (February ۲۰۰۰). «EPIC: An Architecture for Instruction-Level Parallel Processors» (PDF). HP Laboratories Palo Alto, HPL-۱۹۹۹-۱۱۱. http://www.hpl.hp.com/techreports/1999/HPL-1999-111.pdf. Retrieved ۲۰۰۸-۰۵-۰۸. ۲.^ US ۴۸۴۷۷۵۵ ۳.^ a b «Inventing Itanium: How HP Labs Helped Create the Next-Generation Chip Architecture». HP Labs. June ۲۰۰۱. http://www.hpl.hp.com/news/2001/apr-jun/itanium.html. Retrieved ۲۰۰۷-۱۲-۱۴. ۴.^ a b De Gelas, Johan (November ۹, ۲۰۰۵). «Itanium–Is there light at the end of the tunnel?». AnandTech. http://www.anandtech.com/cpuchipsets/showdoc.aspx?i=2598. Retrieved ۲۰۰۸-۰۵-۰۸.