چرخه دستورالعمل

**چرخه دستورالعمل** (همچنین به عنوان **چرخه** **واکشی-رمزگشایی-اجرا**، یا به سادگی **چرخه** **واکشی-اجرایی** شناخته می‌شود) چرخه ای است که واحد پردازش مرکزی (CPU) برای راه اندازی دستورالعمل‌ها از زمان راه اندازی تا خاموش شدن رایانه دنبال می‌کند. این پروسه از سه مرحله اصلی تشکیل شده‌است: مرحله واکشی، مرحله رمزگشایی و مرحله اجرا.
بندانگشتی| این یک نمودار ساده است که مراحل جداگانه چرخه واکشی-رمزگشایی-اجرا را نشان می‌دهد.
در پردازنده‌های ساده‌تر، چرخه دستورالعمل به ترتیب اجرا می‌شود، هر دستورالعمل قبل از شروع دستورالعمل بعدی پردازش می‌شود. در بیشتر پردازنده‌های مدرن، چرخه‌های دستورالعمل همزمان و غالباً به طور موازی از طریق خط لوله دستورالعمل اجرا می‌شوند: پردازش دستورالعمل بعدی قبل از پایان دستورالعمل قبلی شروع می‌شود. این امکان وجود دارد زیرا چرخه به مراحل جداگانه تقسیم می‌شود.

## نقش اجزا
شمارنده برنامه (PC) یک رجیستر ویژه است که آدرس حافظه دستورالعمل بعدی را برای اجرا در خود نگه می‌دارد. در مرحله واکشی، آدرس ذخیره شده در رایانه در رجیستر آدرس حافظه (MAR) کپی می‌شود و سپس PC برای اشاره به آدرس حافظه دستورالعمل بعدی که اجرا می‌شود، آپدیت می‌شود. سپس CPU دستورالعمل‌ها را در آدرس حافظه توصیف شده توسط MAR گرفته و آن را در رجیستر داده حافظه (MDR) کپی می‌کند. MDR همچنین به عنوان یک رجیستر دو طرفه عمل می‌کند که داده‌های واکشی شده از حافظه یا داده‌هایی را که منتظر ذخیره شدن در حافظه هستند را نگه می‌دارد (به همین دلیل به عنوان رجیستر بافر حافظه (MBR) نیز شناخته می‌شود). سرانجام، دستورالعمل موجود در MDR در ثبت دستورالعمل فعلی (CIR) کپی می‌شود که به عنوان محل نگهداری موقت دستورالعمل تازه‌وارد شده از حافظه عمل می‌کند.

در مرحله رمزگشایی، واحد کنترل (CU) دستورالعمل را در CIR رمزگشایی می‌کند. سپس CU سیگنالهایی را به سایر اجزای CPU مانند واحد منطق حساب (ALU) و واحد شناور FPU) ارسال می‌کند. ALU عملیات‌های حسابی مانند جمع و تفریق و همچنین ضرب را طریق جمع‌های مکرر و تقسیم را از طریق تفریق‌های مکرر را انجام می‌دهد. همچنین عملیات‌های منطقی مانند AND، OR، NOT و شیفت‌های باینری را نیز انجام می‌دهد. FPU برای انجام محاسبات ممیز شناور محفوظ است.

## خلاصه مراحل
پردازنده هر رایانه براساس مجموعه دستورالعمل‌های مختلف می‌تواند چرخه‌های مختلفی داشته باشد، اما مراحل همه پردازنده‌ها مشابه چرخه زیر خواهند بود:
# **مرحله واکشی**: دستورالعمل بعدی از آدرس حافظه ای که در حال حاضر در پیشخوان برنامه ذخیره شده و در رجیستر دستورالعمل ذخیره می‌شود، دریافت می‌شود. در پایان عملیات واکشی، PC به دستورالعمل بعدی اشاره می‌کند که در چرخه بعدی خوانده می‌شود.
# **مرحله رمزگشایی**: در این مرحله، دستورالعمل رمزگذاری شده در رجیستر، رمزگشایی می‌شود.
#* **آدرس مؤثر**: در دستورالعمل مربوط به حافظه (مستقیم یا غیرمستقیم)، مرحله اجرا در طی پالس ساعت بعدی خواهد بود. اگر دستورالعمل دارای آدرس غیر مستقیم باشد، آدرس مؤثر از حافظه اصلی خوانده می‌شود و هرگونه داده مورد نیاز از حافظه اصلی برای پردازش دریافت می‌شود و سپس در رجیسترهای داده قرار می‌گیرد (پالس ساعت: T 3). اگر دستورالعمل مستقیم باشد، در طی این پالس ساعت کاری انجام نمی‌شود. اگر این یک دستورالعمل I / O یا یک دستور رجیستر باشد، عملیات در طول پالس ساعت انجام می‌شود.
# **مرحله اجرا**: واحد کنترل پردازنده اطلاعات رمزگشایی شده را به عنوان دنباله ای از سیگنال‌های کنترل به واحدهای مرتبط پردازنده منتقل می‌کند تا اقدامات مورد نیاز دستورالعمل مانند خواندن مقادیر از رجیسترها ، انتقال آنها به ALU برای انجام توابع ریاضی یا منطقی بر روی آنها و نوشتن نتیجه به یک رجیستر انجام شوند. اگر ALU درگیر باشد، یک سیگنال شرطی را به CU ارسال می‌کند. نتیجه تولید شده توسط این عملیات در حافظه اصلی ذخیره می‌شود یا برای دستگاه خروجی ارسال می‌شود. بر اساس بازخورد دریافت شده از ALU، ممکن است PC به نشانی دیگری که دستورالعمل بعدی از آن دریافت می‌شود، آپدیت شود.
# **تکرار چرخه**

## شروع
چرخه به محض ورود انرژی به سیستم، با مقدار اولیه PC که توسط معماری سیستم از پیش تعریف شده‌است (به عنوان مثال، در پردازنده‌های Intel IA-32، مقدار PC از پیش تعریف شده `0xfffffff0`  است). به‌طور معمول، این آدرس به مجموعه ای از دستورالعمل‌ها در حافظه فقط خواندنی (ROM) اشاره می‌کند که روند بارگیری (یا *[[راه‌اندازی (رایانه)|راه اندازی]]*) سیستم عامل را آغاز می‌کند.

## مرحله واکشی
مرحله واکشی برای هر دستورالعمل یکسان است:
# CPU محتویات PC را به MAR می‌فرستد و یک دستور خواندن را روی گذرگاه آدرس می‌فرستد.
# در پاسخ به دستور (با آدرس برابر PC)، حافظه، داده‌های ذخیره شده در محل حافظه نشان داده شده توسط PC در گذرگاه داده را برمی‌گرداند.
# CPU داده‌ها را از گذرگاه داده در MDR خود کپی می‌کند. (همچنین به عنوان MBR شناخته می‌شود؛ بخش نقش اجزای بالا را ببینید)
# کمی بعد، CPU داده‌ها را از MDR به رجیستر دستورالعمل‌ها برای رمزگشایی کپی می‌کند.
# PC آپدیت می‌شود به طوری که به دستورالعمل بعدی اشاره می‌کند. این مرحله پردازنده را برای چرخه بعدی آماده می‌کند.

واحد کنترل آدرس دستورالعمل را از واحد حافظه واکشی می‌کند.

## مرحله رمزگشایی
فرایند رمزگشایی به CPU اجازه می‌دهد تا تعیین کند چه دستورالعملی باید اجرا شود تا CPU بتواند تعداد عملیاتی که برای انجام دستورالعمل لازم است را بدست آورد. کد گرفته شده از حافظه برای مراحل بعدی رمزگشایی و به رجیسترهای مناسب منتقل می‌شود. رمزگشایی توسط واحد کنترل پردازنده انجام می‌شود.

### خواندن آدرس مؤثر
این مرحله ارزیابی می‌کند که کدام نوع عملیات انجام شود. اگر این یک عملیات حافظه باشد، کامپیوتر بررسی می‌کند که آیا این یک عملکرد حافظه مستقیم است یا غیرمستقیم:
* **عملکرد حافظه مستقیم** - هیچ کاری انجام نمی‌شود.
* **عملکرد حافظه غیر مستقیم** - آدرس مؤثر از حافظه خوانده می‌شود.

اگر دستورالعمل I / O یا رجیستر باشد، رایانه نوع آن را بررسی می‌کند و دستورالعمل را اجرا می‌کند.

## مرحله اجرا
عملکرد دستورالعمل انجام می‌شود. اگر دستورالعمل شامل حساب یا منطق باشد، از ALU استفاده می‌شود. این تنها مرحله از چرخه دستورالعمل است که از دید کاربر مفید است.

## جستارهای وابسته
* برش زمان، واحد زمان‌بندی سیستم عامل
* خط لوله کلاسیک RISC
* چرخه در هر دستورالعمل

## منابع

رده:پردازش دستورها