موضوع مقاله: موازی‌سازی در سطح دستورالعمل | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # موازی‌سازی در سطح دستورالعمل | مقدمه: از طرف دیگر، همزمانی، تخصیص رشته‌های یک یا چند فرایند مختلف به هسته پردازنده در یک تغییر دقیق یا در موازی سازی واقعی را دربرمی‌گیرد .اگر هسته‌های پردازنده کافی باشد، در بهترین و ایده‌آل‌ترین حالت یک هسته برای هر رشته در حال اجرا درگیر می‌باشد. | ## بخش 1: موازی‌سازی در سطح دستورالعمل | سطح سخت‌افزار بر پایه موازی سازی پویا کار می‌کند، در حالی که سطح نرم‌افزار بر پایه موازی سازی استاتیک یا ایستا کار می‌کند. موازی سازی پویا به این معنی است که پردازنده در زمان اجرا تصمیم می‌گیرد که کدام دستورالعمل‌ها را به‌طور موازی اجرا کند، در حالی که موازی سازی ایستا به این معنی است که کامپایلر تصمیم می‌گیرد که کدام دستورالعمل‌ها را به‌طور موازی اجرا کند. پردازنده پنتیوم روی توالی دینامیکی اجرای موازی کار می‌کند، اما پردازنده ایتانیوم روی موازی‌سازی سطح استاتیک یا ایستا کار می‌کند. برنامه زیر را در نظر بگیرید:e = a + b f = c + d m = e * fعملیات ۳ به نتایج عملیات‌های ۱ و ۲ بستگی دارد، بنابراین تا زمانی که هر دو به اتمام نرسند نمی‌توان آن را محاسبه کرد. با این حال، عملیات ۱ و ۲ به هیچ عملیات دیگری بستگی ندارند، بنابراین می‌توان آنها را به‌طور همزمان محاسبه کرد. اگر فرض کنیم که هر عملیات می‌تواند در یک واحد زمان به اتمام برسد، این سه دستورالعمل را می‌توان در مجموع، در دو واحد زمان انجام داد، در نتیجه در یک ILP 3/2 انجام می‌شود. هدف طراحان کامپایلر و پردازنده شناسایی و استفاده حداکثری از ILP تا حد امکان است. برنامه‌های معمولی معمولاً تحت یک مدل اجرای متوالی نوشته می‌شوند که دستورالعمل‌ها یکی پس از دیگری و به ترتیب مشخص شده توسط برنامه‌نویس اجرا می‌شوند. ILP به کامپایلر و پردازنده اجازه می‌دهد تا اجرای چندین دستورالعمل ، با یکدیگر را همپوشانی کند یا حتی ترتیب اجرای آن‌ها را تغییر دهد. | ## بخش 2: موازی‌سازی در سطح دستورالعمل | در زمینه‌های خاص، مانند گرافیک و محاسبات علمی، مقدار آن می‌تواند بسیار زیاد باشد. با این حال، ممکن است ظرفیت‌های کاری مانند رمزنگاری موازی‌سازی بسیار کمتری را از خود نشان دهند. تکنیک‌های معماری خرد که برای بهره‌برداری از ILP استفاده می‌شود شامل موارد زیر است: خط لوله که در آن اجرای چندین دستورالعمل می‌تواند تا حدی با هم تداخل داشته باشد. اجرای سوپراسکالر، VLIW و مفاهیم رایانش موازی صریح دستورالعمل‌ها که در آن چندین واحد اجرایی برای اجرای چند دستورالعمل به‌طور موازی استفاده می‌شود. اجرای خارج از نوبت که دستورالعمل‌ها با هر نظمی که وابستگی به داده‌ها را نقض نکند، اجرا می‌شوند. توجه داشته باشید که این روش هم از خط لوله گذاری و هم از اجرای فوق مقیاس مستقل است. پیاده‌سازی‌های فعلی اجرای خارج از دستور به صورت پویا (یعنی در حالی که برنامه در حال اجرا است و بدون هیچ کمکی از کامپایلر) ILP را از برنامه‌های معمولی استخراج می‌کند. یک گزینه جایگزین استخراج این موازی کاری در زمان کامپایل و به نوعی انتقال این اطلاعات به سخت‌افزار است. به دلیل پیچیدگی مقیاس گذاری روش اجرای خارج از سفارش، این صنعت مجموعه دستورالعمل‌هایی را که صریحاً چندین عملیات مستقل را در هر دستورالعمل رمزگذاری می‌کند، مورد بررسی مجدد قرار داده‌است. | ## بخش 3: موازی‌سازی در سطح دستورالعمل | تغییر نام ثبات ها که به تکنیکی گفته می‌شود که برای جلوگیری از سریال سازی غیرضروری عملیات برنامه اعمال شده توسط استفاده مجدد از ثبات‌ها توسط آن عملیات، برای امکان اجرای خارج از دستور استفاده می‌شود. پیش‌بینی کننده شاخه که برای جلوگیری از متوقف شدن برای رفع وابستگی‌های کنترل استفاده می‌شود. مشهور است که ILP توسط کامپایلر و پشتیبانی سخت‌افزاری مورد سوءاستفاده قرار می‌گیرد اما کامپایلر همچنین با بهره از بهینه‌سازی تلفیقی، ILP ذاتی و ضمنی را در برنامه‌ها به سخت‌افزار ارائه می‌دهد. برخی از تکنیک‌های بهینه‌سازی برای استخراج ILP موجود در برنامه‌ها شامل برنامه‌ریزی، تخصیص / ثبت نام / تغییر نام و بهینه‌سازی دسترسی حافظه است. معماری‌های جریان داده کلاس دیگری از معماری‌ها هستند که ILP به‌طور واضح مشخص شده‌است، برای مثال اخیر معماری TRIPS را ببینید. در سال‌های اخیر، از تکنیک‌های ILP برای بهبود عملکرد، علی‌رغم اختلاف روزافزون بین فرکانس‌های عملکرد پردازنده و زمان دسترسی به حافظه، استفاده شده‌است .(طرح‌های اولیه ILP مانند IBM System / 360 Model 91 از تکنیک‌های ILP برای غلبه بر محدودیت‌های اعمال شده توسط یک فایل ثباتی نسبتاً کوچک استفاده می‌کردند). در حال حاضر، یک حافظه پنهان گمشده برای حافظه اصلی، صدها چرخه پردازنده هزینه دربردارد. علاوه بر این، پیچیدگی و اغلب تأخیر در ساختارهای سخت‌افزاری زمینه ای منجر به کاهش فرکانس عملکرد می‌شود و باعث کاهش بیشتر مزایا نیز می‌شود. | ## جمع‌بندی | از این رو، تکنیک‌های ذکر شده برای جلوگیری از متوقف شدن پردازنده برای داده‌های خارج از تراشه ناکافی هستند.