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

محتوای حذف‌شده محتوای افزوده‌شده
خط ۱۱۲:
 
=== طول دستورالعمل ===
اندازه یا طول یک دستورالعمل می تواند بسیار متفاوت باشد؛ از یک مقدار چهار بیتی در برخی [[ریزکنترل‌گر|میکروکنترلرها]] تا چند صد بیت در برخی سیستم های VLIW. پردازنده های مورد استفاده در رایانه‌های شخصی، رایانه های بزرگ و ابر رایانه ها، دارای اندازه دستورالعمل بین ۸ و ۶۴ بیت هستند. حداکثر اندازه ممکن برای دستورالعمل در x86  برابر با ۱۵ بایت (۱۲۰ بیت) است.<ref>{{cite web|title=Intel® 64 and IA-32 Architectures Software Developer's Manual|url=http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html/|publisher=Intel Corporation|access-date=12 July 2012}}</ref> Within an instruction set, different instructions may have different در داخل یک مجموعه دستورالعمل، دستورالعمل های مختلف، ممکن است طول متفاوت داشته باشند. در برخی معماری ها، نظیر اکثر RISC ها، دستورالعمل ها دارای طول ثابتی هستند که معمولاً مطابق با اندازه ی [[کلمه (معماری رایانه)|کلمه]] آن معماری می باشند. در معماری های دیگر، دستورالعمل ها دارای طول متغیر هستند، که معمولاً مضرب های صحیح از یک بایت یا یک نیم کلمه هستند. برخی معماری ها نظیر ARM با Thumb-extension، دارای کدگذاری متغیر ترکیبی است که دو کدگذاری ثابت، معمولاً ۳۲ بیت و ۱۶ بیت است، که در آن، دستورالعمل ها را نمی توان به شکل آزادانه با هم ترکیب کرد، و باید در یک انشعاب (یا محدوده استثنا در ARMv8)، بین آنها تعویض انجام شود.<ref name=weaver>{{cite conference|last1=Weaver|first1=Vincent M.|last2=McKee|first2=Sally A.|title=Code density concerns for new architectures|year=2009|conference=IEEE International Conference on Computer Design|doi=10.1109/ICCD.2009.5413117|citeseerx=10.1.1.398.1967}}</ref>
 
یک مجموعه دستورالعمل [[رایانه کم دستور|RISC]]، معمولاً دارای طول دستورالعمل ثابتی است (معمولاً چهار بایت که معادل ۳۲ بیت است)، در حالیکه مجموعه دستورالعمل [[رایانه با دستورهای پیچیده|CISC]] ممکن است دارای دستورالعمل هایی با طول بسیار متغیر باشند( ۱ تا ۱۵ بایت برای x86). مدیریت دستورالعمل های دارای طول ثابت در مقایسه با دستورالعمل های با طول متغیر، به دلایل مختلفی پیچیدگی کمتری دارد (برای مثال، لازم نیست که چک کنیم که آیا یک دستورالعمل از یک خط حافظه پنهان یا محدوده ی صفحه حافظه مجازی عبور کرده است یا خیر)، و بنابراین برای بهینه سازی، تا حدودی سرعت آسان تر هستند.