4.7.2 [5] <§4.4> What is the latency of an R-type instruction (i.e., how long must
the clock period be to ensure that this instruction works correctly)?
یادداشت: سوال از ما زمان تاخیر دستورات از نوع R-type را میخواهد. همان طور که میدانیم دستورات نوع R در پردازنده برای محاسبات ریاضی جمع و ضرب و... استفاده میشوند.
در ادامه به حل تشریحی این سوال میپردازیم.
راه حل:
با توجه به نمونه ساده پردازنده که در تصویرپایین آمده است، یک دستور از نوع R مانند ADD x1, x2, x3 باید مراحل زیر را بگذراند تا کاملا اجرا شود و پردازنده به سراغ دستور بعدی برود.
توجه: شماره گذاری لزوما بر اساس ترتیب انجام کارها در پردازنده نیست. توجه کنید که ملاک اصلی انجام هر مرحله رسیدن کامل جریان الکتریکی به قطعات و گیتهای منطقی آن مرحله است.
1. An instruction is fetched from the Instruction memory(I-Mem) = 250ps
دستور فعلی از مخزن دستورات برداشت میشود. این کار 250 پیکو ثانیه به طول می انجامد.
2.1 Control Unit + ALU Control Unit = 100sp
واحدهای کنترل که شامل مداراتی منطقی هستند با توجه به دستور جدید خروجی های جدید را بیرون میدهند تا در واحد های دیگر مانند واحد ALU مورد استفاده قرار گیرند.
2.2 Adder calculate PC+4 (PC is incremented) = 150ps
یک جمع کننده شمارنده برنامه را با 4 جمع میکند. با این کار شمارنده برنامه (PC) آدرس دستور بعدی را در خود دارد.
2.3 MUX choose PC = 25ps
از آنجا که دستور ما از نوع R است و از دستورات ارجاع یا Branch نیست پس مولتی پلکسر نیز همان شمارنده اصلی برنامه که آدرس دستور بعدی را در خود جای داده است را برای ذخیره در ثبات شمارنده انتخاب میکند.
2.4 PC Register Read = 30ps
از آنجا که ثبات شمارنده پس از ذخیره شدن باید سریع در خروجی ظاهر شود تا دستور بعدی را اجرا کند، این زمان را به طور کلی خواندن ثبات می نامند که فقط برای ثبات PC است.
3. turn on Register file = 150ps
دسترسی به داده های ثباتها در فایل ثبات میسر می شود. و مدت زمان 150 پیکو ثانیه میکشد تا به داده های ثباتی که در دستور آمده دسترسی پیدا کنیم.
4. MUX choose read data 2 = 25ps
از آنجا که دستورات نوع R از دو ثبات استفاده میکنند پس مولتی پلکسر نیز از واحد کنترل مطلع میشود که باید داده ثبات شماره دو را برای ورودی واحد پردازی (ALU) ارسال کند.
5. ALU operates on the data from the register file = 200ps
خب حالا که دو داده برای واحد پردازش از فایل ثباتها آماده شده است، او میتواند پردازش خود را بر روی داده های ورودی شروع کند؛ پردازش واحد کنترل 200 پیکو ثانیه طول میکشد.
6. MUX choose ALU result = 25ps
به دلیل اینکه دستورات نوع R به حافظه داده (Data memory) نیازی ندارند و واحد کنترل نیز این را تشخیص داده و برای مولتی پلکسر ارسال میکند. مولتی پلکسر داده خروجی از واحد پردازش را انتخاب میکند و داده به سمت فایل ثباتها میرود.
7. register’s data input must be stable before the rising edge of the clock (Register Setup) = 20ps
داده ورودی فایل ثبات باید کمی منتظر بماند تا لبه کلاک بالا برود و داده برای نوشته شدن به داخل فایل ثبات برود.
نتیجه: این چرخه در پردازنده به همین صورت برای دستورات مختلف درحال جریان است؛ قطعات استفاده شده در پردازنده ها با کلاک زمانبندی شده اند، یعنی برای پردازش و رفتن به مرحله بعدی منتظر لبه بالارونده کلاک هستند. با هر کلاک جریان الکتریکی به مدارات ترکیبی که در درس مدار منطقی آمده اند رفته و با کلاک بعدی به خروجی یا مرحله بعدی (مدار ترکیبی بعدی) میروند.
منبع سوال: کتاب Computer Organization and Design ARM® EDITION