موضوع مقاله: کلمه دستورالعمل بسیار طولانی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # کلمه دستورالعمل بسیار طولانی | مقدمه: کلمه دستورالعملی بسیار طولانی به معماری واحد پردازنده مرکزی اشاره می‌کند که برای بهره‌برداری از فواید توازی در سطح دستورالعمل (ILP) طراحی شده‌است. | ## بخش 1: کلمه دستورالعمل بسیار طولانی | برای بهبود بیشتر می‌توان دستورالعملها را با نظمی متفاوت از آنچه در برنامه نشان داده شده‌اند اجرا کرد. در اغلب پیاده‌سازی‌ها این سه تکنیک هزینه‌ای دربردارند و آن افزایش پیچیده گی سخت‌افزار است. قبل از اجرای هر دستور به صورت موازی پردازشگر باید بررسی کند که بین دستورالعمل‌ها وابستگی وجود نداشته باشد. واضح است که چنین دستورالعملهایی نمی‌توانند در یک زمان اجرا شوند و همچنین دستورالعمل دوم نمی‌تواند مثل اولی اجرا شود. پردازشگرهای خارج از نظم مدرن سخت‌افزاری که وظیفه برنامه‌ریزی دستورالعملها و مشخص نمودن وابستگی بین آن‌ها را بر عهده دارند، افزایش داده‌اند. از طرف دیگر VLIW اعمال موازی را بر اساس برنامه‌ای ثابت که در زمان کامپایل برنامه معین شده اجرا می‌کند. از آن‌ها که مشخص کردند نظم اجرای اعمال به وسیلهٔ کامپایلر انجام می‌شود، پردازشگر به سخت‌افزار برنامه‌ریزی که سه تکنیک معرفی شده در بالا به آن احتیاج دارند، نیازی ندارند. در حقیقت تعدادی از دستورالعمل‌های خاص منظوره موجود که باعث تسهیل اعمال پیچیده می‌شود. اگر کامپایلرها نتوانند ساختارهای کد سنج مربوطه را بشناسند و نتوانند که هدف را که معمولاً از پیشنهادهای پیشرفته CPU استفاده می‌کند نمایش دهند، بلا استفاده می‌شوند؛ بنابراین برنامه نویسان باید بتواند الگوریتم‌های خودشان را به شیوه‌ای که کار برای کامپایلرها آسان‌تر شود، ارائه دهند. برای مثال؛ اگر یک وسیله VLIW پنج واحد اجرایی داشته باشد، یک دستورالعمل VLIW برای آن وسیله می‌تواند پنج فیلد عمل داشته باشد که هر فیلد معین می‌کند که کدام عمل باید در واحد اجرایی مربوطه اجرا شود. برای سازگار سازی این فیلدها دستورالعملهای VLIW معمولاً حداقل ۶۴ بیت پهنا داشته و در برخی معماری‌ها بیشتر از این نیز پهنا دارند. در یک دوره؛ این دستورالعمل ضرب همین شناور، یک جمع همین شناور و دوبارگذاری افزایش خودکار را انجام می‌دهد. از آنجایی که پیچیدگی برنامه‌ریزی دستورالعمل بر دوش کامپایلر گذاشته شده، پیچیدگی سخت‌افزار اساساً می‌تواند کاسته شود. هنگامی که نتیجه یک دستورالعمل با شکل اجرای موازی به عنوان ورودی یک شاخه مورد استفاده قرار گیرد، اغلب مشکل مشابهی اتفاق می‌افتد.CPUهای مدرن قبل از اینکه محاسبات کامل شود حدس می‌زنند که کدام شاخه انتخاب خواهد شد. | ## بخش 2: کلمه دستورالعمل بسیار طولانی | این عمل بدین منظور انجام می‌شود که CPUها بتوانند دستورالعمل‌ها را برای شاخه بارگذاری کنند یا حتی به شکل گمانی شروع به محاسبه کنند. اگر CPU اشتباه حدس بزند همه دستورالعمل‌ها و متن آن‌ها لازم است که پاکسازی شود و دستورالعمل‌های درست جایگزین شوند که باعث اتلاف زمان می‌شود. این امر منجر به منطق‌گیری دستورالعمل پیچیده‌ای می‌شود که تلاش می‌کند به درستی حدس بزند و سادگی طرح‌های اصلی (RISC) را نیز تخریب می‌کند.VLIW این منطق را ندارد و بنابراین مصرف توان این منطق، کمبودهای احتمالی طراحی و بقیه ویژگی‌های منفی آن را ندارد. در یک VLIW کامپایلر برای جهت‌یابی یک شاخه، از اطلاعات کاوشی یا شرح حال استفاده می‌کند. این ویژگی این امکان را به VLIW می‌دهد تا حرکت کرده و اعمال را قبل از انتخاب شاخه به شکل گمانی پیش برنامه‌ریزی کند. اگر شاخه به راهی غیرمنتظره برود، کامپایلر قبلاً کد جبرانی را تولید کرده تا نتایج بر اساس گمان کنار گذاشته شود تا معناشناسی برنامه حفظ شود. مجموعه دستورالعمل یک CPU که برای بارگذاری یا کپی یک تعداد مقدار حرف به حرف از یک کد ماشین بر روی یک RAM روی برد یا دیکد روی CPUهای با مدت بالاتر طراحی شده‌است. گسترش اولیه برنامه‌ریزی ردیابی به عنوان مجموعه‌ای از تکنیک‌ها برای VLIW وقتی او از دانشگاه نیویورک فارغ‌التحصیل بود گسترش یافت. قبل از VLIW، ایده کلی واحدهای تابعی بین برنامه‌ریزی و توازی سطح دستورالعمل در نرم‌افزار در گسترش ریز کد افقی بنیان نهاده شد. ابداعات فیشر پیرامون گسترش کامپایلری بود که بتواند ریز کد افقی را از کد نوشته شده توسط برنامه نویسان در زبان‌های برنامه‌نویسی معمولی تمیز دهد. او متوجه شد برای داشتن عملکرد بهتر، رسیدن به یک ماشین کامل لازم است، توازی را در یک بلاک عمومی پیاده‌سازی کند. وی تکنیک‌های برنامه‌ریزی ناحیه‌ای را برای پیاده‌سازی توازی در بین بلاک‌های پایه گسترش داد. برنامه‌ریزی، راه چنین تکنیکی است و ابتدا با مسیرهای بلاک پایه‌ای که شبیه تر هستند کار می‌کند. بدین صورت که کد جبرانی را برای سر و کار داشتن با حرکات بر اساس حدس در برنامه قرار می‌دهند، برنامه‌ریزی دومین مسیر شبیه و… تا زمانی که برنامه‌ریزی به پایان برسد. | ## بخش 3: کلمه دستورالعمل بسیار طولانی | ایده دوم فیشر از این ایده نشات گرفت که معماری CPU هدف، باید برای کامپایل منطقی باشد. بخشی از این ایده از آنجا الهام گرفت که فیشر در دانشگاه Yale برای کامپایل سیستم‌های ممیز شناور دچار مشکلاتی شده بود. این سیستم‌های معماری مجموعه دستورالعمل‌های پیچیده‌ای داشتند (CISC) که دستورالعمل آغازین را از دستورالعمل‌هایی که نتایج را ذخیره کرده‌اند که الگوریتم‌های برنامه‌ریزی خیلی پیچیده‌ای نیاز دارند، جدا کردند. فیشر مجموعه‌ای از قواعد را که ویژگی‌های طراحی یک VLIW مناسب مثل پایپلاین‌های خود تخلیه کن، فایل‌های رجیستری چند پورته و معماری حافظه ارائه داد. این تکنیک وقتی به جمع کردن تمام اجزای مدار پردازش گر به روی یک Chip به صرفه تر شناخته شد از چشم بنیان‌گذاران افتاد. کمپانی‌های نیمه هادی ارزش تکنولوژی Multiflow را در این زمینه دریافتند و متعاقباً کامپایلر و معماری آن را تحت لیسانس خود درآوردند. همچنین، حدوداً در همان سال (۱۹۸۹–۱۹۹۰)، اینتل VLIW را در Intel i۸۶۰ پیاده‌سازی کردکه اولین ریز پردازنده ۶۴ بیتی آن‌ها بود، i۸۶۰ همچنین اولین پردازنده‌ای بود که VLIW را روی یک چیپ تنها پیاده‌سازی کرد. در حالت VLIW پردازنده همیشه دو دستورالعمل را واکشی می‌کرد و فرض می‌کرد که یکی صحیح و دیگری اعشاری (ممیز شناور) باشد.» حالت VLIW در i۸۶۰، به‌طور گسترده در برنامه‌های جاسازی شده DSP استفاده می‌شد. کامپایلرها رشته دستورالعمل اولیه را برای CPUهای VLIW تقریباً شبیه همان روشی که آن‌ها برای CPUهای قدیمی انجام می‌دادند، تولید می‌کنند. این CPUهای VLIW اصولاً به عنوان پردازنده‌های جاسازی شده برای وسایل الکترونیکی مصرف‌کننده موفق هستند. ویژگی‌های VLIW همچنین به هسته‌های پردازندهٔ قابل پیکربندی برای طراحی‌های SoC، اضافه شده‌است. سازگاری وارونه وقتی که تکنولوژی سیلیکون مجاز شد تا برای پیاده‌سازی گسترده‌تر (با واحدهای اجرایی بیش تر) ساخته شود، برنامه‌های کامپایل شده برای تولید اولیه نمی‌توانند روی پیاده‌سازی‌های گستر ده تر اجرا شوند. معماری Itanium اینتل، (در بین دیگر معماری‌ها) مشکل سازگاری وارونه را با یک مکانیزم خیلی عادی حل کرد. | ## جمع‌بندی | از آن جایی که تعداد ترانزیستورهای روی یک چیپ در حال افزایش است، اشکالات VLIW کاهش یافته‌است.