تا الان پستام خیلی سمت مموری بود گفتم یه کوچولو هم بریم سمت CPU :)
کتاب Operating Systems: Internal and Design principles از William Stallings که میخوندم به یه بخش بامزه رسیدم.
میخام از کانسپت Instruction execution (اجرای دستور العمل ها) بگم.اینکه دقیقا تو پایین ترین لایه cpu دستور العمل هایی که یا اسمبلی هستن یا ماشین کد دقیقا چجوری اجرا میشن.
همونطور که میدونید تو cpu ما چند تا Register (ثبات) داریم. قبلا تو یه پست (( برای خواندن کلیک کن )) درباره رجیستر ها گفتم میتونید بریم بخونید.
البته این رجیستر ها دستته بندی متفاوتی دارن که خودش میتونه یه پست جداگانه باشه ولی ما با رجیستر های دسته SPRs (Special Purpose Registers) ها کار داریم.
دو تا از اصلی ترین رجیستر های این دسته PC (Program Counter)و IR (Instruction Register)هستن.
مراحلی که برای اجرا شدن یه دستور العمل طی میشه رو Instruction Cycle میگن که کلا از ۲ مرحله خیلی ساده تشکیل شده به نام Fetch stage و Execution stage!
برای شروع ما اول نیاز یه توالی از دستور العمل های لود شده تو مموری داریم.(فرض میگیریم از آدرس ۱۰۰ توی حافظه شروع شده).
اینجا CPU میاد و اولین اینستراکشن رو از مموری میخونه یا اصطلاحا Fetch میکنه(به قول ایرانیا واکشی میکنه :/ )
حالا اینستراکشن فچ شده تو رجیستر IR یا همون (Instruction Register) ذخیره میکنه و تو رجیستر PC هم آدرس دستورالعمل بعدی رو ذخیره میکنه. (مثلا اگه اینستراکشن ۱۰۰ فچ شده آدرس اینستراکشن بعدی که ۱۰۱ هستش رو تو PC ذخیره میکنه)
راستی یادم رفت کامل تر رجستر ها رو معرفی و توضیح بدم.
رجسیتر IR که مشخصه دستور العمل فچ شده از مموری توش ذخیره میشه.
و اما PC! وظیفه این رجیستر نگه داری آدرس اینستراکشن ها تو مموری هستش.اصن CPU با استفاده از مقدار موجود تو این رجیستر اینستراکشن رو فچ میکنه. هر وقتم یه دستورالعمل فچ میشه مقدار PC با آدرس اینستراکشن بعدی جایگزین میشه.
(البته مراحل دیگه ای هم مثل decode و store هم تو مراحل اجرا وجود دارن که چون جزو دو مرحله اصلی instruction cycle نبود و تو کتاب استالینگز هم اشاره ای بهش نشده بود منم چیزی درموردش ننوشتم ولی در کل مرحله decode همون رمزگشایی دستور العمل رمزنگاری شده قبل از مرحله execute هستش. مرحله store هم ذخیره مقادیر جدید و پردازش شده cpu توی مموری هستش(ولی شما اصل ماجرا رو بفهمید کافیه :) ))
Instruction ها دقیقا به همین راحتی و طی مراحل Instruction Cycle اجرا میشن :)