440 likes | 664 Views
Department of Computer and IT Engineering University of Kurdistan Computer Architecture Microprogrammed Control By: Dr. Alireza Abdollahpouri. وظایف واحد کنترل. تنظیم مسیرهای لازم جهت اجرای دستورالعملها متغیرهای کنترلی تنظیم گذرگاه مشترک پایه های رجیسترها انتخاب مولتی پلکسرها
E N D
Department of Computer and IT Engineering University of Kurdistan Computer Architecture Microprogrammed Control By: Dr. AlirezaAbdollahpouri
وظایف واحد کنترل • تنظیم مسیرهای لازم جهت اجرای دستورالعملها • متغیرهای کنترلی • تنظیم گذرگاه مشترک • پایه های رجیسترها • انتخاب مولتی پلکسرها • تعیین نوع عمل ALU • ... • در هرلحظه گروههایی از بیتهای کنترلی در وضعیتSET یا RESET قرار دارند • ایجاد یک سری مراحل متوالی جهت اجرای ریزعمل ها
بلاک دیاگرام واحدکنترل INSTRUCTION CONTROL UNIT CONTROL WORD
روشهای طراحی واحد کنترل • کنترل سیم بندی شده (HardWired) • خروجی واحد کنترل ، متغیرهای کنترلی سخت افزاری است که مسیرهای داده را در داخل CPU تعیین می کنند. • با تغییر دستورالعمل ها این مدارات بايد از نو طراحي شوند. • کنترل ریزبرنامه نویسی شده (MICROPROGRAM) • کلمات کنترلی در یک حافظه ذخیره ميشوند.(معولا از نوع ROM يا EPROM) • برای اجرای یک دستورالعمل، به ترتیب سیگنالهای کنترلی که از قبل در حافظه ذخیره شده اند تولید ميشوند. • با تغییردستورالعملها فقط محتویات این حافظه تغییر خواهد کرد. • كامپيوتري كه از واحد كنترل ريزبرنامه نويسي استفاده ميكند، دو حافظه مجزا خواهد داشت: حافظه اصلي و حافظه كنترلي. • حافظه اصلي براي ذخيره برنامه ها و داده ها در اختيار كاربر است.
کنترل ریزبرنامه نویسی شده مولد آدرس بعدی رجيسترآدرس کنترل CAR حافظه کنترل ROM رجيسترداده کنترل CDR ورودي خارجي كلمه كنترلي اطلاعات آدرس بعدي
Control Address Register (CAR) • رجيسترآدرس کنترل حاوی آدرس ریز اعمالی است که جهت اجرای دستورالعمل نیاز است. • هنگام روشن شدن كامپيوتر، آدرس اوليه در CAR بار ميشود كه به زيربرنامه Fetch اشاره ميكند.(يا پرش به زيربرنامه Fetch) حافظه کنترل ROM رجيسترآدرس کنترل CAR
حافظه کنترل • ریزعملياتهاي(Micro-operation) لازم جهت اجرای یک دستورالعمل را ذخیره می کند. • از نوع ROM است. • ROM یک مدار ترکیبی بوده و نیاز به کلاک ندارد و همچنين سيگنال خواندن لازم نيست. • تا زمانی که آدرس ثابت باقی بماند خروجی ROM تغییر نمی کند. • خروجی این حافظه ، کلمه کنترل (Control Word ) است.
Control Data Register (CDR) • رجيسترداده کنترل حاوی سیگنالهای کنترلی مربوط به ریزعملی است که از حافظه کنترل انتخاب شده است. • ایجاد خروجی های لازم برای ریزعمل فعلی. • تعیین ریزعمل بعدی • ادامه دستورالعمل قبلی • واکشی دستورالعمل بعدی • اجرای زیربرنامه • انشعاب به بخش دیگری از حافظه کنترل • ميتوان CDR را حذف كرد و كلمه كنترلي و اطلاعات آدرس بعدي را مستقيما از خروجي ROM گرفت. حافظه کنترل ROM CONTROL WORD رجيسترداده کنترل CDR اطلاعات آدرس بعدي
روال اجرای دستورالعمل • واکشی ( FETCH ) • دیکد (DECODE ) • محاسبه آدرس غير مستقيم (Indirect address) • اجرا ( EXECUTE )
ریز عملهای تکراری • واکشی (Fetch) • دیکد(Decode) • محاسبه آدرس غير مستقيم(Indirect) • روال هایی برای تولید سیگنالهای مربوط به واکشی ، دیکد و آدرس وجود دارد. • این روالها برای تمام دستورالعملها مشترک خواهند بود.
ریزعملهای اختصاصی • اجرا EXECUTE • برای ایجاد سیگنال های کنترلی لازم بطور متوالی نیاز به ریز دستورالعمل های اختصاصی داریم • برای هر دستورالعمل،روالی تعریف میشود که مولد سیگنالهای کنترلی لازم است • تعداد این روال ها برابر با تعداد دستورات است. • بعد از تکمیل هر روال، کنترل به روال واکشی (Fetch)منتقل میشود.
ریز عملهای شرطی • آدرس غیر مستقیم • با توجه به بیت های خاصی در دستورالعمل ممکن است این روال اجرا شود . • در صورت اجرای این روال سیگنالهای کنترلی لازم جهت تولید آدرس غیرمستقیم تولید میشود.
I OP-code Instruction Code MAPPING LOGIC BRANCH LOGIC بيتهاي وضعيت MUX SUBROUTINE REGISTER (SBR) CONTROL ADDRESS REGISTER (CAR) INCREAMENT CONTROL MEMORY ROM MICRO OPERATIONS آدرس انشعاب تصميمات پرش از روي بيتهاي وضعيت و آدرس انشعاب گرفته ميشود.
نگاشت (Mapping) OPCODE ADDRESS 0110 • تبديل بيتهاي op-code به يك آدرس در حافظه • كنترل كه روال مربوطه در آن قرار دارد نگاشت • يا mapping ناميده ميشود. MAPPING LOGIC 0 XXXX 00 CONTROL MEMORY 128 كلمه CAR 7 بيت ADDRESS 0 1100 00
هر دستورالعمل می تواند 4 سلول حافظه را استفاده کند دستورالعملهای طولانی ميتوانند از قسمت های بالایی حافظه استفاده کنند نگاشت (Mapping) CONTROL MEMORY 128 WORD 0 0000 00 MAPPING 0000 OPCODE 0 1111 00 1111 10000000 1 1111 11
حافظه کنترل MAIN • هر دستورالعمل 4 خانه حافظه • تعداد دستورالعملها = 16 • اندازه حافظه کنترل = 64 • درصورتی که از 128 سلول حافظه استفاده شود 64 سلول انتهایی خالی خواهد بود 64 EXTRA 64
ADD :------ ----------- ------------ ADD M 4 BRANCH:----- -------- 4 MAP STORE:----- ---- ---------- 4 EXCHANGE:---- --------- 4 SUB:-- --------- 4 …..
MUX RAM 2048*16 11 AR Address PC 11 16 MUX DR SBR CAR ROM 128*20 حافظه كنترلي ALU AC 16
4 رجيستر در واحد پردازنده (DR و AC 16 بيتي و AR و PC 11 بيتي) و 2 رجيستر در واحد كنترل(CAR و SBR هفت بيتي) وجود دارند. • در اين كامپيوتر براي انتقال بين رجيسترها بجاي BUS از MUX استفاده ميشود. • DR ميتواند از حافظه، PC و يا AC اطلاعات بگيرد. • داده ورودي به حافظه از DR مي آيد و داده خروجي تنها در DR ريخته ميشود.
فرمت دستورالعمل ها در حافظه اصلي (RAM) 11 BIT 4 BIT I OP-CODE ADDRESS 16 دستورالعمل نحوه آدرسدهی 211=2048 سلول حافظه
فرمت ریزدستورالعملها در حافظه كنترلي (ROM) 3 3 3 2 2 7 F1 F2 F3 CD BR AD BRANCH FIELD 1 FIELD 2 FIELD 3 ADDRESS CONDITION F1,F2 وF3 می توانند همزمان اجرا شوند مثلا 000100101 به معناي انجام دو عمليات همزمان به صورت روبرو است: F2=100 DR←M[AR] F3=101 PC←PC+1
CONDITION CD
واکشی دستورالعمل (FETCH) AR←PC DR←M[AR],PC←PC+1 AR←DR(0-10),CAR(2-5) ←DR(11-14), CAR(0,1,6) ←0 داراي سه ريزعمليات است كه در آدرسهاي 64و65و66 قرار ميگيرند. ORG 64 FETCH : PCTAR U JMP NEXT READ,INCPC U JMP NEXT DRTAR U MAP
واکشی دستورالعمل (FETCH) ترجمه برنامه میکروپروگرام به کد باینری
ADD ORG 0 ADD: NOP I CALL INDIRECT READ U JMP NEXT ADD U JMP FETCH
BRANCH ORG 4 BRANCH : NOP S JMP OVER NOP U JMP FETCH OVER: NOP I CALL INDIRECT ARTPC U JMP FETCH
STORE ORG 8 STORE : NOP I CALL INDIRECT ACTDR U JMP NEXT WRITE U JMP FETCH
EXCHANGE ORG 12 EXCHANGE : NOP I CALL INDIRECT READ U JMP NEXT ACTDR,DRTAC U JMP NEXT WRITE U JMP FETCH
FETCH & INDIRECT ORG 64 FETCH : PCTAR U JMP NEXT READ,INCPC U JMP NEXT DRTAR U MAP INDIRECT : READ U JMP NEXT DRTAR U RET
ADD: NOP I CALL INDIRECT READ U JMP NEXT ADD U JMP FETCH ADD X BRANCH : NOP S JMP OVER NOP U JMP FETCHOVER: NOP I CALL INDIRECT ARTPC U JMP FETCH STORE : NOP I CALL INDIRECT ACTDR U JMP NEXT WRITE U JMP FETCH MAP EXCHANGE : NOP I CALL INDIRECT READ U JMP NEXT ACTDR,DRTAC U NEXT WRITE U JMP FETCH FETCH : PCTAR U JMP NEXT READ,INCPC U JMP NEXT DRTAR U MAP INDIRECT : READ U JMP NEXT DRTAR U RET نكته: در خانه هايي كه استفاده نميشوند دستور پرش به روتين Fetch نوشته ميشود.
MAP MUX SELECT SBR CAR INC 1 MUX I S Z CONTROL MEMORY MICRO-OP CD BR AD
طراحي واحد كنترل • براي هركدام از فيلدهاي F1 و F2 و F3 يك ديكودر قرار ميدهيم تا ريزعملياتها را از يكديگر تشخيص دهيم. • هر يك از خروجيهاي ديكودرها به قسمت مشخصي از پردازنده وارد ميشود. به عنوان مثال براي F1=101 يا DRTAR و F1=110 يا PCTAR بايد خط لود AR فعال شود. • تمام خروجيهاي سه ديكودر كه به نوعي به AC مربوط ميشوند بايد به مدار ALU منقل گردد.
F1 F2 F3 DEC3*8 DEC3*8 DEC3*8 AND ALU ADD DRTAC PC DR MUX DRTAR AC PCTAR LD LD AR
نحوه تعيين آدرس بعدي در حافظه كنترلي • هدف طراحي مداري است كه خطوط انتخاب MUX اصلي و همچنين خط لود SBR را توليد ميكند. • ميتوان بجاي رجيستر SBR از Stack براي ذخيره آدرس برگشت در رفتن به روتينها استفاده نمود.
نحوه تعيين آدرس بعدي در حافظه كنترلي L = I’1I0T S1=I1 S0 = I1I0 + I’1T
حافظه كنترلي دو سطحی (استفاده از نانو حافظه) اگر در یک سیستم نیاز باشد که تعداد بسیار زیادی سیگنال کنترلی تولید شود و نیز تعداد سیگنالهای کنترلی مجزا محدود و تعداد کمی باشند، به جای قرار دادن تمامی این سیگنالها در حافظه میکرو، فقط سیگنالهای مستقل را در یک حافظه تحت عنوان حافظه نانو قرار داده و در حافظه میکرو آدرس این سیگنالها(کلمات) کنترلی را مشخص میکنیم. در این حالت، ما دیگر تعداد زیاد و تکراری کلمات کنترلی را در حافظه میکرو نداریم و به جای آن آدرسهای تکراری که حافظه کمتری اشغال میکنند را داریم. . مثال 2 مثال 1
حافظه كنترلي دو سطحی (استفاده از نانو حافظه) مثال: فرض کنید که در یک سیستم تعداد 300 کلمه کنترلی را داریم. از این 300 تا تعداد 60 کلمه مستقل هستند(240 تا تکراری هستند). اگر طول کلمات کنترلی 150 بیت باشد(تعداد سیگنالهای کنترلی 150 باشد) خواهیم داشت: 1- در حالت معمول و بدون استفاده از حافظه نانو، حجم حافظه میکرو برابر 300*150 است. 2- در صورت استفاده از حافظه نانو ، حجم این حافظه برابر 60*150 است. زیرا در این حافظه فقط قرار است که کلمات کنترلی مستقل و غیر تکراری قرار گیرند. در حالت دوم، حافظه میکرو فقط باید آدرس 300 تا کلمه کنترلی مورد نیاز را از حافظه نانو مشخص نماید. برای مشخص کردن (آدرس دهی) 60 کلمه کنترلی، به 6 بیت احتیاج داریم. چون سیستم به 300 سیگنال کنترلی نیاز دارد، پس در این حالت حجم حافظه میکرو برابر است با: 300*6. میزان صرفه جویی: bits 34200 = (300*6 + 150*60)-(300*150)
حافظه كنترلي دو سطحی (استفاده از نانو حافظه) یک پردازنده دارای ۱۷۵ سیگنال کنترلی و ۲۵۰ ریزدستور است. اگر۲۰۰ ریزدستور متفاوت در این پردازنده وجود داشته باشد، حجم کل حافظه واحد کنترل در صورت استفاده از حافظه نانو چقدر است؟ الف- ۲۸۰۰۰بیتب- ۳۲۰۰۰بیتج- ۲۴۰۰۰بیتد- ۳۷۰۰۰بیت