Transcript Document

Department of Computer and IT Engineering
University of Kurdistan
Computer Architecture
Microprogrammed
Control
By: Dr. Alireza Abdollahpouri
‫وظایف واحد کنترل‬
‫• تنظیم مسیرهای الزم جهت اجرای دستورالعملها‬
‫• متغیرهای کنترلی‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫تنظیم گذرگاه مشترک‬
‫پایه های رجیسترها‬
‫انتخاب مولتی پلکسرها‬
‫تعیین نوع عمل ‪ALU‬‬
‫‪...‬‬
‫• در هرلحظه گروههایی از بیتهای کنترلی در وضعیت‪ SET‬یا‬
‫‪ RESET‬قرار دارند‬
‫• ایجاد یک سری مراحل متوالی جهت اجرای ریزعمل ها‬
‫‪2‬‬
‫بالک دیاگرام واحدکنترل‬
INSTRUCTION
CONTROL UNIT
CONTROL WORD
3
‫روشهای طراحی واحد کنترل‬
‫• کنترل سیم بندی شده‬
‫(‪)HardWired‬‬
‫– خروجی واحد کنترل ‪ ،‬متغیرهای کنترلی سخت افزاری است که مسیرهای داده را در‬
‫داخل ‪ CPU‬تعیین می کنند‪.‬‬
‫– با تغییر دستورالعمل ها این مدارات باید از نو طراحي شوند‪.‬‬
‫• کنترل ریزبرنامه نویسی شده (‪)MICROPROGRAM‬‬
‫– کلمات کنترلی در یک حافظه ذخیره میشوند‪(.‬معوال از نوع ‪ ROM‬یا ‪)EPROM‬‬
‫– برای اجرای یک دستورالعمل‪ ،‬به ترتیب سیگنالهای کنترلی که از قبل در حافظه ذخیره‬
‫شده اند تولید میشوند‪.‬‬
‫– با تغییردستورالعملها فقط محتویات این حافظه تغییر خواهد کرد‪.‬‬
‫– كامپیوتري كه از واحد كنترل ریزبرنامه نویسي استفاده میكند‪ ،‬دو حافظه مجزا خواهد‬
‫داشت‪ :‬حافظه اصلي و حافظه كنترلي‪.‬‬
‫– حافظه اصلي براي ذخیره برنامه ها و داده ها در اختیار كاربر است‪.‬‬
‫‪4‬‬
‫کنترل ریزبرنامه نویسی شده‬
‫كلمه كنترلي‬
‫رجیسترداده‬
‫کنترل‬
‫‪CDR‬‬
‫حافظه‬
‫کنترل‬
‫‪ROM‬‬
‫رجیسترآدرس‬
‫کنترل‬
‫‪CAR‬‬
‫اطالعات آدرس بعدي‬
‫‪5‬‬
‫ورودي خارجي‬
‫مولد آدرس‬
‫بعدی‬
‫)‪Control Address Register (CAR‬‬
‫• رجیسترآدرس کنترل حاوی آدرس ریز اعمالی است که جهت اجرای دستورالعمل‬
‫نیاز است‪.‬‬
‫رجیسترآدرس کنترل‬
‫‪CAR‬‬
‫حافظه کنترل‬
‫‪ROM‬‬
‫• هنگام روشن شدن كامپیوتر‪ ،‬آدرس اولیه در ‪ CAR‬بار میشود كه به زیربرنامه‬
‫‪ Fetch‬اشاره میكند‪(.‬یا پرش به زیربرنامه ‪)Fetch‬‬
‫‪6‬‬
‫حافظه کنترل‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫ریزعملیاتهاي(‪ )Micro-operation‬الزم جهت اجرای یک دستورالعمل را ذخیره‬
‫می کند‪.‬‬
‫از نوع ‪ ROM‬است‪.‬‬
‫‪ ROM‬یک مدار ترکیبی بوده و نیاز به کالک ندارد و همچنین سیگنال خواندن الزم‬
‫نیست‪.‬‬
‫تا زمانی که آدرس ثابت باقی بماند خروجی ‪ ROM‬تغییر نمی کند‪.‬‬
‫خروجی این حافظه ‪ ،‬کلمه کنترل (‪ ) Control Word‬است‪.‬‬
‫‪7‬‬
‫)‪Control Data Register (CDR‬‬
‫• رجیسترداده کنترل حاوی سیگنالهای کنترلی مربوط به‬
‫ریزعملی است که از حافظه کنترل انتخاب شده است‪.‬‬
‫• ایجاد خروجی های الزم برای ریزعمل فعلی‪.‬‬
‫• تعیین ریزعمل بعدی‬
‫‪ CONTROL WORD‬رجیسترداده‬
‫ادامه دستورالعمل قبلی‬
‫واکشی دستورالعمل بعدی‬
‫اجرای زیربرنامه‬
‫انشعاب به بخش دیگری از حافظه کنترل‬
‫–‬
‫–‬
‫–‬
‫–‬
‫• میتوان ‪ CDR‬را حذف كرد و كلمه‬
‫كنترلي و اطالعات آدرس بعدي را مستقیما‬
‫از خروجي ‪ ROM‬گرفت‪.‬‬
‫‪8‬‬
‫کنترل‬
‫‪CDR‬‬
‫اطالعات آدرس بعدي‬
‫حافظه کنترل‬
‫‪ROM‬‬
‫روال اجرای دستورالعمل‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪9‬‬
‫واکشی ( ‪) FETCH‬‬
‫دیکد (‪) DECODE‬‬
‫محاسبه آدرس غیر مستقیم (‪)Indirect address‬‬
‫اجرا ( ‪) EXECUTE‬‬
‫ریز عملهای تکراری‬
‫• واکشی (‪)Fetch‬‬
‫• دیکد (‪)Decode‬‬
‫• محاسبه آدرس غیر مستقیم(‪)Indirect‬‬
‫• روال هایی برای تولید سیگنالهای مربوط به واکشی ‪ ،‬دیکد و آدرس‬
‫وجود دارد‪.‬‬
‫• این روالها برای تمام دستورالعملها مشترک خواهند بود‪.‬‬
‫‪10‬‬
‫ریزعملهای اختصاصی‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫اجرا ‪EXECUTE‬‬
‫برای ایجاد سیگنال های کنترلی الزم بطور متوالی نیاز به ریز دستورالعمل های‬
‫اختصاصی داریم‬
‫برای هر دستورالعمل‪ ،‬روالی تعریف میشود که مولد سیگنالهای کنترلی الزم‬
‫است‬
‫تعداد این روال ها برابر با تعداد دستورات است‪.‬‬
‫بعد از تکمیل هر روال‪ ،‬کنترل به روال واکشی (‪)Fetch‬منتقل میشود‪.‬‬
‫‪11‬‬
‫ریز عملهای شرطی‬
‫• آدرس غیر مستقیم‬
‫• با توجه به بیت های خاصی در دستورالعمل ممکن است این روال‬
‫اجرا شود ‪.‬‬
‫• در صورت اجرای این روال سیگنالهای کنترلی الزم جهت تولید‬
‫آدرس غیرمستقیم تولید میشود‪.‬‬
‫‪12‬‬
I OP-code
Instruction Code
MAPPING
LOGIC
‫بیتهاي وضعیت‬
BRANCH
LOGIC
MUX
SUBROUTINE
REGISTER
(SBR)
CONTROL
ADDRESS
REGISTER
(CAR)
INCREAMENT
CONTROL MEMORY
ROM
MICRO OPERATIONS
‫آدرس انشعاب‬
13
.‫تصمیمات پرش از روي بیتهاي وضعیت و آدرس انشعاب گرفته میشود‬
‫نگاشت (‪)Mapping‬‬
‫‪ADDRESS‬‬
‫‪OPCODE‬‬
‫‪0110‬‬
‫•تبديل بيتهاي ‪ op-code‬به يك آدرس در حافظه‬
‫كنترل كه روال مربوطه در آن قرار دارد نگاشت‬
‫يا ‪ mapping‬ناميده ميشود‪.‬‬
‫‪MAPPING‬‬
‫‪LOGIC‬‬
‫‪0 XXXX 00‬‬
‫‪CONTROL‬‬
‫‪MEMORY‬‬
‫‪ 128‬كلمه‬
‫‪ 7‬بیت‬
‫‪ADDRESS‬‬
‫‪14‬‬
‫‪CAR‬‬
‫‪0 1100 00‬‬
‫نگاشت (‪)Mapping‬‬
‫• هر دستورالعمل می تواند ‪ 4‬سلول حافظه را استفاده کند‬
‫• دستورالعملهای طوالنی میتوانند از قسمت های باالیی حافظه‬
‫استفاده کنند‬
‫‪0 0000 00‬‬
‫‪0000‬‬
‫‪CONTROL‬‬
‫‪MEMORY‬‬
‫‪128 WORD‬‬
‫‪MAPPING‬‬
‫‪0 1111 00‬‬
‫‪10000000‬‬
‫‪1 1111 11‬‬
‫‪15‬‬
‫‪OPCODE‬‬
‫‪1111‬‬
‫حافظه کنترل‬
‫• هر دستورالعمل ‪ 4‬خانه حافظه‬
‫• تعداد دستورالعملها = ‪16‬‬
‫• اندازه حافظه کنترل = ‪64‬‬
‫• درصورتی که از ‪ 128‬سلول‬
‫حافظه استفاده شود ‪ 64‬سلول‬
‫انتهایی خالی خواهد بود‬
‫‪16‬‬
‫‪MAIN‬‬
‫‪EXTRA‬‬
‫‪64‬‬
‫‪64‬‬
4
4
ADD :--------------------------BRANCH:------------
4
STORE:-----------------
4
EXCHANGE:------------
4
ADD M
MAP
SUB:---------…..
17
MUX
11
AR
PC
Address
RAM
2048*16
11
16
MUX
SBR
CAR
DR
‫حافظه كنترلي‬
ROM 128*20
ALU
AC
18
16
‫• ‪ 4‬رجيستر در واحد پردازنده (‪ DR‬و ‪ 16 AC‬بيتي و ‪ AR‬و ‪ 11 PC‬بيتي) و‬
‫‪ 2‬رجيستر در واحد كنترل(‪ CAR‬و ‪ SBR‬هفت بيتي) وجود دارند‪.‬‬
‫• در اين كامپيوتر براي انتقال بين رجيسترها بجاي ‪BUS‬از ‪ MUX‬استفاده‬
‫ميشود‪.‬‬
‫• ‪ DR‬ميتواند از حافظه‪ PC ،‬و يا ‪ AC‬اطالعات بگيرد‪.‬‬
‫• داده ورودي به حافظه از ‪ DR‬مي آيد و داده خروجي تنها در ‪ DR‬ريخته‬
‫ميشود‪.‬‬
‫‪19‬‬
‫فرمت دستورالعمل ها در حافظه اصلي (‪)RAM‬‬
‫‪11 BIT‬‬
‫‪ADDRESS‬‬
‫‪ 211=2048‬سلول حافظه‬
‫‪20‬‬
‫‪4 BIT‬‬
‫‪OP-CODE‬‬
‫‪ 16‬دستورالعمل‬
‫‪I‬‬
‫نحوه آدرس دهی‬
‫چند دستورالعمل اولیه‬
AC←AC + M[EA]
0000
ADD
If )AC<0( then )PC←EA(
0001
BRANCH
M[EA] ←AC
0010
STORE
AC←M[EA],M[EA] ←AC
0011
EXCHANGE
21
‫فرمت ریزدستورالعملها در حافظه كنترلي (‪)ROM‬‬
‫‪2‬‬
‫‪2‬‬
‫‪3‬‬
‫‪3‬‬
‫‪3‬‬
‫‪7‬‬
‫‪AD‬‬
‫‪BR‬‬
‫‪CD‬‬
‫‪F3‬‬
‫‪F2‬‬
‫‪F1‬‬
‫‪ADDRESS‬‬
‫‪BRANCH‬‬
‫‪FIELD 2 FIELD 3‬‬
‫‪FIELD 1‬‬
‫‪CONDITION‬‬
‫‪ F1,F2‬و ‪ F3‬می توانند همزمان اجرا شوند‬
‫مثال ‪ 000100101‬به معناي انجام دو عملیات‬
‫همزمان به صورت روبرو است‪:‬‬
‫‪22‬‬
‫]‪DR←M[AR‬‬
‫‪F2=100‬‬
‫‪PC←PC+1‬‬
‫‪F3=101‬‬
F1 ‫ریز عملیاتهای‬
000
NOTHING
NOP
001
AC←AC+DR
ADD
010
AC←0
CLRAC
011
AC←AC+1
INCAC
100
AC←DR
DRTAC
101
AR←DR)0-10)
DRTAR
110
AR←PC
PCTAR
111
M[AR] ←DR
WRITE
23
F2 ‫ریز عملياتهای‬
000
NOTHING
NOP
001
AC←AC-DR
SUB
010
AC←AC or DR
OR
011
AC←AC and DR
AND
100
DR←M[AR]
READ
101
AR←AC
ACTAR
110
DR←DR+1
INCDR
111
DR(0-10( ←PC
PCTDR
24
F3 ‫ریز عملياتهای‬
000
NOTHING
NOP
001
AC xor DR
XOR
010
AC←AC’
COM
011
AC← shl AC
SHL
100
AC← shr AC
SHR
101
PC←PC+1
INCPC
110
PC←AR
ARTPC
111
Reserved
--------
25
CONDITION
CD
‫شرط‬
‫سمبل‬
‫نوع انشعاب‬
00
1
U
Unconditional
Branch
01
DR(15)
I
Indirect
Addressing
10
AC(15)
S
Sign bit
11
AC=0
Z
Zero bit
26
BRANCH
T : CAR←AD
F: CAR←CAR+1
T:CAR←AD,SBR←CAR+1
F: CAR←CAR+1
00
JMP
01
CALL
10
RET
CAR←SBR
11
MAP
CAR(2-5( ←DR)11-14( ,CAR)0,1,6( ←0
27
)FETCH( ‫واکشی دستورالعمل‬
AR←PC
DR←M[AR],PC←PC+1
AR←DR)0-10),CAR(2-5( ←DR)11-14), CAR(0,1,6( ←0
.‫ قرار میگیرند‬66‫و‬65‫و‬64 ‫داراي سه ریزعملیات است كه در آدرسهاي‬
ORG 64
FETCH : PCTAR
READ,INCPC
DRTAR
U
U
U
JMP NEXT
JMP NEXT
MAP
28
‫واکش ی دستورالعمل (‪)FETCH‬‬
‫ترجمه برنامه میکروپروگرام به کد باینری‬
‫‪AD‬‬
‫‪BR‬‬
‫‪CD‬‬
‫‪F3‬‬
‫‪F2‬‬
‫‪F1‬‬
‫آدرس باینری‬
‫‪10000001‬‬
‫‪00‬‬
‫‪00‬‬
‫‪000‬‬
‫‪000‬‬
‫‪110‬‬
‫‪1000000‬‬
‫‪10000010‬‬
‫‪00‬‬
‫‪00‬‬
‫‪101‬‬
‫‪100‬‬
‫‪000‬‬
‫‪1000001‬‬
‫‪00000000‬‬
‫‪11‬‬
‫‪00‬‬
‫‪000‬‬
‫‪000‬‬
‫‪101‬‬
‫‪1000010‬‬
‫‪29‬‬
ADD
ORG 0
ADD:
NOP
READ
ADD
I CALL
U JMP
U JMP
INDIRECT
NEXT
FETCH
30
BRANCH
ORG 4
BRANCH :
OVER:
NOP
S
NOP
U
NOP
I
ARTPC U
JMP OVER
JMP FETCH
CALL INDIRECT
JMP FETCH
31
STORE
ORG 8
STORE :
NOP
ACTDR
WRITE
I
U
U
CALL
JMP
JMP
INDIRECT
NEXT
FETCH
32
EXCHANGE
ORG 12
EXCHANGE :
NOP
I CALL INDIRECT
READ
U JMP NEXT
ACTDR,DRTAC U JMP NEXT
WRITE
U JMP
FETCH
33
FETCH & INDIRECT
ORG 64
FETCH :
PCTAR
READ,INCPC
DRTAR
INDIRECT : READ
DRTAR
U
U
U
U
U
JMP
JMP
MAP
JMP
RET
NEXT
NEXT
NEXT
34
ADD:
BRANCH :
OVER:
STORE :
EXCHANGE :
NOP
READ
ADD
I
U
U
CALL INDIRECT
JMP
NEXT
JMP
FETCH
NOP
NOP
NOP
ARTPC
S
U
I
U
JMP
JMP
CALL
JMP
NOP
ACTDR
WRITE
I
U
U
CALL
JMP
JMP
NOP
READ
ACTDR,DRTAC
WRITE
I
U
U
U
ADD X
OVER
FETCH
INDIRECT
FETCH
INDIRECT
NEXT
FETCH
CALL
JMP
NEXT
JMP
INDIRECT
NEXT
MAP
FETCH
FETCH :
PCTAR
READ,INCPC
DRTAR
U
U
U
JMP
JMP
MAP
NEXT
NEXT
INDIRECT :
READ
DRTAR
U
U
JMP
RET
NEXT
.‫ نوشته میشود‬Fetch ‫ در خانه هایي كه استفاده نمیشوند دستور پرش به روتین‬:‫نكته‬
35
MAP
SELECT
CAR
1
I
S
Z
SBR
MUX
INC
MUX
CONTROL MEMORY
MICRO-OP
CD
BR
AD
36
‫طراحي واحد كنترل‬
‫• براي هركدام از فيلدهاي ‪ F1‬و ‪ F2‬و ‪ F3‬يك ديكودر قرار ميدهيم تا‬
‫ريزعملياتها را از يكديگر تشخيص دهيم‪.‬‬
‫• هر يك از خروجيهاي ديكودرها به قسمت مشخص ي از پردازنده وارد ميشود‪.‬‬
‫به عنوان مثال براي ‪ F1=101‬يا ‪ DRTAR‬و ‪ F1=110‬يا‬
‫‪ PCTAR‬بايد خط لود ‪ AR‬فعال شود‪.‬‬
‫• تمام خروجيهاي سه ديكودر كه به نوعي به ‪ AC‬مربوط ميشوند بايد به مدار‬
‫‪ ALU‬منقل گردد‪.‬‬
‫‪37‬‬
F1
F2
DEC3*8
F3
DEC3*8
DEC3*8
AND
ADD
DRTAC
ALU
PC
DRTAR
DR
MUX
PCTAR
LD
LD
AC
AR
38
‫مدار كلي‬
‫‪39‬‬
‫نحوه تعيين آدرس بعدي در حافظه كنترلي‬
‫• هدف طراحي مداري است كه خطوط انتخاب ‪ MUX‬اصلي و همچنين خط لود‬
‫‪ SBR‬را توليد ميكند‪.‬‬
‫• ميتوان بجاي رجيستر ‪ SBR‬از ‪ Stack‬براي ذخيره آدرس برگشت در رفتن به روتينها‬
‫استفاده نمود‪.‬‬
‫‪40‬‬
‫نحوه تعيين آدرس بعدي در حافظه كنترلي‬
‫‪I0‬‬
‫‪I1‬‬
‫)بسته به ‪JMP ( T‬‬
‫‪0‬‬
‫‪0‬‬
‫)بسته به ‪CALL ( T‬‬
‫‪1‬‬
‫‪0‬‬
‫‪RET‬‬
‫‪0‬‬
‫‪1‬‬
‫‪L = I’1I0T‬‬
‫‪MAP‬‬
‫‪1‬‬
‫‪1‬‬
‫‪S1=I1‬‬
‫‪S0 = I1I0 + I’1T‬‬
‫‪41‬‬
‫حافظه كنترلي دو سطحی (استفاده از نانو حافظه)‬
‫اگر در یک سیستم نیاز باشد که تعداد بسیار زیادی سیگنال کنترلی تولید شود و نیز تعداد سیگنالهای کنترلی مجزا‬
‫محدود و تعداد کمی باشند‪ ،‬به جای قرار دادن تمامی این سیگنالها در حافظه میکرو‪ ،‬فقط سیگنالهای مستقل را در یک‬
‫حافظه تحت عنوان حافظه نانو قرار داده و در حافظه میکرو آدرس این سیگنالها(کلمات) کنترلی را مشخص میکنیم‪.‬‬
‫در این حالت‪ ،‬ما دیگر تعداد زیاد و تکراری کلمات کنترلی را در حافظه میکرو نداریم و به جای آن آدرسهای‬
‫تکراری که حافظه کمتری اشغال میکنند را داریم‪.‬‬
‫‪.‬‬
‫مثال ‪1‬‬
‫‪42‬‬
‫مثال ‪2‬‬
‫حافظه كنترلي دو سطحی (استفاده از نانو حافظه)‬
‫مثال‪ :‬فرض کنید که در یک سیستم تعداد ‪ 300‬کلمه کنترلی را داریم‪ .‬از این ‪ 300‬تا تعداد‬
‫‪ 60‬کلمه مستقل هستند(‪ 240‬تا تکراری هستند)‪ .‬اگر طول کلمات کنترلی ‪ 150‬بیت‬
‫باشد(تعداد سیگنالهای کنترلی ‪ 150‬باشد) خواهیم داشت‪:‬‬
‫‪ -1‬در حالت معمول و بدون استفاده از حافظه نانو‪ ،‬حجم حافظه میکرو برابر ‪150*300‬‬
‫است‪.‬‬
‫‪ -2‬در صورت استفاده از حافظه نانو ‪ ،‬حجم این حافظه برابر ‪ 150*60‬است‪ .‬زیرا در این‬
‫حافظه فقط قرار است که کلمات کنترلی مستقل و غیر تکراری قرار گیرند‪.‬‬
‫در حالت دوم‪ ،‬حافظه میکرو فقط باید آدرس ‪ 300‬تا کلمه کنترلی مورد نیاز را از حافظه‬
‫نانو مشخص نماید‪ .‬برای مشخص کردن (آدرس دهی) ‪ 60‬کلمه کنترلی‪ ،‬به ‪ 6‬بیت‬
‫احتیاج داریم‪ .‬چون سیستم به ‪ 300‬سیگنال کنترلی نیاز دارد‪ ،‬پس در این حالت حجم‬
‫‪.6*300‬‬
‫حافظه میکرو برابر است با‪:‬‬
‫میزان صرفه جویی‪:‬‬
‫‪43‬‬
‫‪)150*300(-)60*150 + 6*300( = 34200bits‬‬
‫حافظه كنترلي دو سطحی (استفاده از نانو حافظه)‬
‫یک پردازنده دارای ‪ ۱۷۵‬سیگنال کنترلی و ‪ ۲۵۰‬ریزدستور است‪ .‬اگر‪ ۲۰۰‬ریزدستور متفاوت‬
‫در این پردازنده وجود داشته باشد‪ ،‬حجم کل حافظه واحد کنترل در صورت استفاده از‬
‫حافظه نانو چقدر است؟‬
‫الف‪۲۸۰۰۰ -‬بیت‬
‫‪۳۲۰۰۰‬بیت‬
‫ب‪-‬‬
‫‪۲۴۰۰۰‬بیت‬
‫ج‪-‬‬
‫‪۳۷۰۰۰‬بیت‬
‫د‪-‬‬
‫‪44‬‬