ریز عمل

بندانگشتی|400x400px|چگونگی تجزیه شدن یک دستورالعمل ماشین به ریزعمل‌ها هنگام چرخه دستورالعمل

در واحد پردازش مرکزی کامپیوتر، **ریزعمل‌**ها یا **ریز عملیات‌**ها (به انگلیسی: micro-operation یا micro-ops یا μops و به صورت تاریخی با نام micro-actions شناخته می‌شوند)، دستورهای دقیق سطح پایینی هستند که در بعضی طرح‌ها برای پیاده‌سازی دستورهای یک ماشین پیچیده استفاده می‌شوند (بعضی اوقات ماکرو دستور نیز نامیده می‌شوند).

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

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

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

بهینه‌سازی در اجرا از این فراتر نیز می‌رود. پردازنده‌ها علاوه بر اینکه بسیاری از دستورالعمل‌های ماشین را به یک سری از ریزعمل‌ها ترجمه می‌کنند، در صورت نیاز برعکس این کار را نیز انجام می‌دهند. آن‌ها بعضی از سری‌های دستورالعمل‌های ماشین را (مانند مقایسه در یک پرش شرطی) به ریزعمل‌های پیچیده‌تر که مطابقت بیشتری با مدل اجرایی دارند، ترکیب می‌کنند. این مسئله باعث می‌شود اجرا در زمان کمتری یا با استفاده کمتری از منابع ماشین انجام شود. از این موضوع با نام ادغام درشت‌عمل‌ها یاد می‌شود.

راه دیگر برای بهبود عملکرد این است که ریزعمل‌های رمزگشایی شده را در حافظه نهان ریزعمل‌ها قرار دهیم، پس اگر یک ماکرو دستور دوباره اجرا شود، پردازنده می‌تواند به جای اینکه دوباره رمزگشایی کند مستقیماً به ریزعمل‌های رمزگشایی شده در حافظه نهان دسترسی پیدا کند. اثر حافظه نهان را می‌توان در ریزمعماری NetBrust اینتل(پنتیوم ۴) که نمونه‌ای از این تکنیک است مشاهده کرد. اندازه این حافظه نهان ممکن است بر حسب هزاران (ضریب ۱۰۲۴) ریزعملی که توانایی ذخیره آن‌ها را دارد بیان شود.

## منابع
* 

# "Computer Organization and Architecture, Chapter 15, Control Unit Operation" (به انگلیسی)
# "FM1600B Microcircuit Computer Ferranti Digital Systems" (به انگلیسی)
# "The microarchitecture of Intel, AMD and VIA CPUs: An optimization guide for assembly programmers and compiler makers" (به انگلیسی)
# "The Architecture of the Nehalem Processor and Nehalem-EP SMP Platforms" (به انگلیسی)
# "Intel Pentium 4 1.4GHz & 1.5GHz"
# "Micro-Operation Cache: A Power Aware Frontend for Variable Instruction Length ISA" (به انگلیسی)

رده:مقاله‌های ایجادشده توسط ایجادگر
رده:واحد پردازشگر مرکزی
رده:پردازش دستورها