کلمه دستورالعمل بسیار طولانی: تفاوت میان نسخه‌ها

محتوای حذف‌شده محتوای افزوده‌شده
Rezabot (بحث | مشارکت‌ها)
ابرابزار
خط ۷:
از طرف دیگر VLIW اعمال موازی را بر اساس برنامه‌ای ثابت که در زمان کامپایل برنامه معین شده اجرا می‌کند. از آن‌ها که مشخص کردند نظم اجرای اعمال به وسیلهٔ کامپایلر انجام می‌شود، پردازشگر به سخت‌افزار برنامه‌ریزی که سه تکنیک معرفی شده در بالا به آن احتیاج دارند، نیازی ندارند. در نتیجه CPUهای VLIW توان محاسباتی مهم با پیچیدگی سخت‌افزاری کمتر (اما پیچیدگی [[کامپایلر]] بیشتر) از چیزی که بیشتر به پردازنده Superscalar نسبت داده می‌شود ارائه می‌دهد.
 
درست مثل هر روش معماری نوین؛ ایده تا جایی که اجازه دهد کارایی دارد. در حقیقت تعدادی از دستورالعمل‌های خاص منظوره موجود که باعث تسهیل اعمال پیچیده می‌شود. اگر کامپایلرها نتوانند ساختارهای کد سنج مربوطه را بشناسند و نتوانند که هدف را که معمولاً از پیشنهادهای پیشرفته CPU استفاده می‌کند نمایش دهند، بلا استفاده می‌شوند؛ بنابراین برنامه نویسان باید بتواند الگوریتم‌های خودشان را به شیوه‌ای که کار برای کامپایلرها آسان ترآسان‌تر شود، ارائه دهند.
 
== طراحی ==
خط ۱۵:
برای مثال؛ مثالی که در ادامه آورده شده یک دستورالعمل SHARC می‌باشد. در یک دوره؛ این دستورالعمل ضرب همین شناور، یک جمع همین شناور و دوبارگذاری افزایش خودکار را انجام می‌دهد. همه اینها در یک دستورالعمل ۴۸ بیتی جور شده‌اند.
 
f12=f۰*f4, f8=f8+f۱۲،f12, f0=dm(i0,m۳)، f4=pm(i8,m۹)
 
از روزهای آغازین [[معماری]] کامپیوتر برخی CPUها بسیاری واحدهای منطقی محاسباتی (ALU) برای اجرای موازی به معماری اضافه کرده‌اند. CPUهای Superscalar برای اینکه تصمیم بگیرند کدام اعمال می‌توانند به شکل موازی اجرا شوند از سخت‌افزار استفاده می‌کنند.CPUهای VLIW برای اینک په تصمیم بگیرند کدام اعمال می‌توانند به شکل موازی اجرا شوند از نرم‌افزار (کامپایلر) استفاده می‌کنند. از آنجایی که پیچیدگی برنامه‌ریزی دستورالعمل بر دوش کامپایلر گذاشته شده، پیچیدگی سخت‌افزار اساساً می‌تواند کاسته شود.
خط ۲۳:
این امر منجر به منطق‌گیری دستورالعمل پیچیده‌ای می‌شود که تلاش می‌کند به درستی حدس بزند و سادگی طرح‌های اصلی (RISC) را نیز تخریب می‌کند.VLIW این منطق را ندارد و بنابراین مصرف توان این منطق، کمبودهای احتمالی طراحی و بقیه ویژگی‌های منفی آن را ندارد.
 
در یک VLIW کامپایلر برای جهت یابیجهت‌یابی یک شاخه، از اطلاعات کاوشی یا شرح حال استفاده می‌کند. این ویژگی این امکان را به VLIW می‌دهد تا حرکت کرده و اعمال را قبل از انتخاب شاخه به شکل گمانی پیش برنامه‌ریزی کند. بدین شکل که شبیه‌ترین راه را در شاخه علامت گذاری می‌کند. اگر شاخه به راهی غیرمنتظره برود، کامپایلر قبلاً کد جبرانی را تولید کرده تا نتایج بر اساس گمان کنار گذاشته شود تا معناشناسی برنامه حفظ شود.
 
کلمه VLIWمی‌تواند مخفف کلمه دستورالعمل با طول متغیر (Variable Length Instruction Word) نیز باشد. مجموعه دستورالعمل یک CPU که برای بارگذاری یا کپی یک تعداد مقدار حرف به حرف از یک کد ماشین بر روی یک RAM روی برد یا دیکد روی CPUهای با مدت بالاتر طراحی شده‌است.
خط ۳۰:
واژه VLIW و خود ایده معماری VLIW توسط جاش فیشر در تحقیقات گروهی در دانشگاه Yale در اوایل ۱۹۸۰ ابداع شد. گسترش اولیه برنامه‌ریزی ردیابی به عنوان مجموعه‌ای از تکنیک‌ها برای VLIW وقتی او از دانشگاه نیویورک فارغ‌التحصیل بود گسترش یافت. قبل از VLIW، ایده کلی واحدهای تابعی بین برنامه‌ریزی و توازی سطح دستورالعمل در نرم‌افزار در گسترش ریز کد افقی بنیان نهاده شد. ابداعات فیشر پیرامون گسترش کامپایلری بود که بتواند ریز کد افقی را از کد نوشته شده توسط برنامه نویسان در زبان‌های برنامه‌نویسی معمولی تمیز دهد. او متوجه شد برای داشتن عملکرد بهتر، رسیدن به یک ماشین کامل لازم است، توازی را در یک بلاک عمومی پیاده‌سازی کند. وی تکنیک‌های برنامه‌ریزی ناحیه‌ای را برای پیاده‌سازی توازی در بین بلاک‌های پایه گسترش داد. برنامه‌ریزی، راه چنین تکنیکی است و ابتدا با مسیرهای بلاک پایه‌ای که شبیه تر هستند کار می‌کند. بدین صورت که کد جبرانی را برای سر و کار داشتن با حرکات بر اساس حدس در برنامه قرار می‌دهند، برنامه‌ریزی دومین مسیر شبیه و… تا زمانی که برنامه‌ریزی به پایان برسد.
 
ایده دوم فیشر از این ایده نشات گرفت که معماری CPU هدف، باید برای کامپایل منطقی باشد. کامپایلر و معماری VLIW باید با یکدیگر طراحی شوند. بخشی از این ایده از آنجا الهام گرفت که فیشر در دانشگاه Yale برای کامپایل سیستم‌های ممیز شناور دچار مشکلاتی شده بود. این سیستم‌های معماری مجموعه دستورالعمل‌های پیچیده‌ای داشتند (CISC) که دستورالعمل آغازین را از دستورالعمل‌هایی که نتایج را ذخیره کرده‌اند که الگوریتم‌های برنامه‌ریزی خیلی پیچیده‌ای نیاز دارند، جدا کردند. فیشر مجموعه‌ای از قواعد را که ویژگی‌های طراحی یک VLIW مناسب مثل پایپلاین‌های خود تخلیه کن، فایل‌های رجیستری چند پورته و معماری حافظه ارائه داد. این قواعد نوشتن کدهای سریع را برای کامپایل‌ها آسان ترآسان‌تر می‌کند.
اولین کامپایلر VLIW در مقطع Ph.D به وسیلهٔ جان الیس زیر نظر جان فیشر تشریح شد، کامپایلرBulldog نامگذاری شد. جان روتنبرگ الگوریتم‌های مهمی معین را برای برنامه‌ریزی ارائه داد.
 
خط ۶۷:
* [http://www.hpl.hp.com/news/2005/jul-sep/VLIW_retrospective.pdf ISCA "Best Papers" Retrospective On Paper That Introduced VLIWs]
* [http://www.vliw.org/ VLIW and Embedded Processing]
* [http://www.rustyspigot.com/Computer_Science/Comparative%20Architectures2.html#vliw VLIW Example Code] {{Webarchive|url=https://web.archive.org/web/20090207185137/http://www.rustyspigot.com/Computer_Science/Comparative%20Architectures2.html#vliw |date=7۷ فوریه 2009۲۰۰۹}}
* [https://web.archive.org/web/20080818033118/http://www.fujitsu.com/downloads/MAG/vol36-1/paper06.pdf FR500 VLIW-architecture High-performance Embedded Microprocessor]