HW4_CA.pdf

‫تمرین سری چهارم درس معماری کامپیوتر‬
‫دکتر سربازی آزاد‬
‫هدف تمرین‬
‫مهلت تحویل‬
‫نحوه تحویل‬
‫سواالت‬
‫طراحی پردازنده‬
‫‪ 24‬خرداد ‪ ،3131‬ساعت ‪21:33‬‬
‫تمامی فایلهای طراحیتان را به ایمیل درس ارسال نمایید‪.‬‬
‫سواالت خود را از طریق پیاتزا مطرح نمایید‪.‬‬
:‫ این پردازنده دارای دستورات زیر است‬.‫ را پیادهسازی کنید‬Kasraa ‫پردازنده خیالی‬
:‫دستورات محاسباتی و منطقی‬
Opcode
31
30
29
28
Destination Reg
27
26
25
24
23
22
Source Reg 1
21
20
19
18
Source Reg 2
17
16
15
14
13
S/R Amount
12
11
10
9
8
X (Unused)
7
6
5
4
Opcode
Instruction
Description
00000
00001
00010
00011
00100
00101
00110
00111
01000
01001
01010
01011
01100
01101
01110
01111
ADD
SUB
MUL
DIV
MOD
MAX
MIN
NOT
NAND
NOR
XNOR
SHL
SHRA
SHRL
ROL
ROR
DST ← SRC1 + SRC2
DST ← SRC1 – SRC2
DST ← SRC1 × SRC2
DST ← SRC1 ÷ SRC2
DST ← SRC1 % SRC2
DST ← MAX (SRC1, SRC2)
DST ← MIN (SRC1, SRC2)
DST ← ~SRC1
DST ← SRC1 ~& SRC2
DST ← SRC1 ~| SRC2
DST ← SRC1 ~^ SRC2
DST ← SRC1 << S/R AMOUNT
DST ← SRC1 >>> S/R AMOUNT
DST ← SRC1 >> S/R AMOUNT
DST ← ROTATE LEFT (SRC1, S/R AMOUNT)
DST ← ROTATE RIGHT (SRC1, S/R AMOUNT)
3
2
1
0
:‫دستورات با عملوند صریح‬
Opcode
31
30
29
28
Destination Reg
27
26
25
24
23
22
Source Reg
21
20
19
18
Immediate Data
17
16
15
14
13
12
11
10
9
8
Opcode
Instruction
Description
10000
10001
10010
10011
10100
10101
10110
10111
LDI
ADDI
SUBI
MULI
DIVI
NANDI
NORI
XNORI
DST ← IMM
DST ← SRC + IMM
DST ← SRC – IMM
DST ← SRC × IMM
DST ← SRC ÷ IMM
DST ← SRC ~& IMM
DST ← SRC ~| IMM
DST ← SRC ~^ IMM
7
x
6
5
4
3
2
1
0
3
2
1
0
:‫دستورات جابجایی‬
Opcode
31
30
29
28
Reg 1
27
26
25
24
Reg 2
23
22
21
20
19
X
18
17
16
15
14
13
12
11
10
9
Opcode
Instruction
Description
11000
11001
MOV
SWP
REG1 ← REG2
REG1 ↔ REG2
8
7
6
5
4
:‫دستورات دسترسی به حافظه‬
Opcode
31
30
29
28
Value Reg
27
26
25
24
23
Address Reg
22
21
20
19
18
X
17
16
15
14
13
12
11
10
9
8
7
Opcode
Instruction
Description
11010
11011
LD
STR
VAL ← MEM [ADDRSS]
MEM [ADDRSS] ← VAL
6
5
4
3
2
1
0
3
2
1
0
:)‫دستورات ثبات آدرس (پرش و توقف‬
Opcode
31
30
29
28
Reg 1
27
26
25
24
Reg 2
23
22
21
20
19
Address
18
17
16
15
14
13
12
X
11
10
9
8
7
6
Opcode
Instruction
Description
11100
11101
11110
11111
JMP
BEQ
BLT
HLT
PC ← ADDRSS
REG1 == REG2: PC ← ADDRSS
REG1 < REG2: PC ← ADDRSS
STOP PC
5
4
‫توضیحات‬
‫‪‬‬
‫در پردازندهای که طراحی میکنید‪ ،‬حـتما باید از ‪ Register File ،ALU‬و ‪ Memory‬که در اخـتیارتـان قرار گرفتـه است‬
‫استفاده کنید‪ .‬همچنین مجاز به تغییر آنها نیستید (البته این بدان معناست که در مدار تحویلی نهاییتان این سه ماژول‬
‫نباید تغییر کرده باشند‪ ،‬وگرنه برای آزمایش مدارتان میتوانید آنها را تغییر داده و سپس به حالت اولیه بازگردانید)‪.‬‬
‫‪‬‬
‫در مسیرداده‪ 3‬مدارتان مجاز به استفاده از هیچ مدار ترکیبیای به جز ‪-ALU‬ای که در اختیارتان قرار گرفته‪ ،‬مالتیپلکسر‬
‫و بافر سهحالته نیستید و تمامی عملیات منطقی را باید با استفاده از همین مدارها انجام دهید‪.‬‬
‫‪‬‬
‫در مسیرداده مجاز به استفاده از هر تعداد ثبات که نیاز دارید (‪ IR ،PC‬و ‪ )...‬هستید و محدودیتی در این مورد ندارید‪.‬‬
‫‪‬‬
‫تمام ثباتهای شما (اعم از ‪ IR ،PC‬و ‪ )...‬میبایست یک درگاه ریست ناهمگام‪ 2‬داشته باشند که به سیگنال ریست‬
‫پردازنده متصل باشند‪ .‬با یک شدن این سیگنال محتوای این ثباتها صفر میشود‪.‬‬
‫‪‬‬
‫عمـلکرد ماژول حـافظهای که در اخـتیـارتـان قـرار گرفـتـه اسـت به این تـرتیب اسـت که خروجی ‪ DATA_OUT‬آن‬
‫همواره درایهای از حافظه است که ورودی ‪ ADDRESS_READ‬آن مشخص میکند (یعنی برای خواندن از حافظه نیازی‬
‫به لبه مثبت کالک نیست)‪ .‬همچنـین در لـبه مثبـت کالک‪ ،‬در صورت فعال بودن ورودی ‪ ،WRITE_ENABLE‬مـقدار‬
‫موجود در ورودی ‪ DATA_IN‬در درایه متناظر با ورودی ‪ ADDRESS_WRITE‬قرار میگیرد‪ .‬ریست این ماژول باید به‬
‫ریست پردازنده متصل باشد‪.‬‬
‫‪‬‬
‫بانک ثباتی که در اختیارتان قرار گرفته است‪ ،‬به مانند تمرین قبلیتان بوده و فقط تعداد ثباتها و اندازه ثباتها تغییر‬
‫کرده است (میتوانید با مراجعه به کُد زبان توصیف سختافزار آن‪ ،‬به راحتی عملکرد مدار را تشخیص دهید)‪.‬‬
‫‪‬‬
‫ماژول ‪-ALU‬ای که در اخـتیـارتان قـرار گـرفـته اسـت‪ ،‬به مانند تمرین قبلیتان بوده ولی تعداد عملیات آن و همچنین‬
‫ترتیب آنها تغییر کرده است (میتوانید با مراجعه به کُد زبان توصیف سختافزار آن‪ ،‬به راحتی عملکرد مدار را تشخیص‬
‫دهید)‪.‬‬
‫‪‬‬
‫در تمامی دستورات با عملگر ضرب‪ 12 ،‬بیت کمارزش نتیجه‪ ،‬در ثبات مقصد قرار میگیرد‪.‬‬
‫‪Data Path‬‬
‫‪Asynchronous‬‬
‫‪1‬‬
‫‪2‬‬
‫‪‬‬
‫در دستورات دسترسی به حافظه‪ ،‬باید ‪ 8‬بیت کمارزش ثبات‪ ،‬به عنوان ورودی آدرس حافظه در نظر گرفته شود‪.‬‬
‫‪‬‬
‫در دستور ‪ BLT‬مقایسه مقدار دو ثبات به صورت بیعالمت‪ 1‬انجام میشود‪.‬‬
‫‪‬‬
‫در دستور ‪ LDI‬مقدار ‪ Immediate‬در ‪ 31‬بیت کمارزش ثبات مقصد قرار میگیرد‪.‬‬
‫‪‬‬
‫دستور ‪ HLT‬را میتوان به روشهای مختلفی پیادهسازی کرد‪ .‬چنانچه مقدار ثبات ‪ PC‬را در مرحله واکشی افزایش‬
‫میدهید‪ ،‬کافیست در مرحله اجرای این دستور ‪ 3‬واحد از آن کم کنید‪ .‬همچنین اگر مقدار ‪ PC‬را پس از کدگشایی‬
‫دستور افزایش میدهید‪ ،‬میبایست در اجرای این دستور‪ ،‬مقدار ‪ PC‬را افزایش ندهید‪.‬‬
‫‪Unsigned‬‬
‫‪3‬‬