0% found this document useful (0 votes)
21 views42 pages

CE118 Project Part 1

Uploaded by

buiphucdat03
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
21 views42 pages

CE118 Project Part 1

Uploaded by

buiphucdat03
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 42

OC R1 R2 R3 Func Assembly-Code Format Meaning

• RRR 3 3 3 3 4
000 Rs1 Rs2 Rd 0000 add add Rs1, Rs2, Rd Reg[Rd]  Reg[Rs1] + Reg[Rs2]
000 Rs1 Rs2 Rd 0001 sub sub Rs1, Rs2, Rd Reg[Rd]  Reg[Rs1] - Reg[Rs2]
000 Rs1 000 Rd 0010 inc inc Rs1, Rd Reg[Rd]  Reg[Rs1] + 1
000 Rs1 000 Rd 0011 dec dec Rs1, Rd Reg[Rd]  Reg[Rs1] - 1
000 Rs1 Rs2 Rd 0100 and and Rs1, Rs2, Rd Reg[Rd]  Reg[Rs1] and Reg[Rs2]
000 Rs1 Rs2 Rd 0101 or or Rs1, Rs2, Rd Reg[Rd]  Reg[Rs1] or Reg[Rs2]
000 Rs1 Rs2 Rd 0110 xor xor Rs1, Rs2, Rd Reg[Rd]  Reg[Rs1] xor Reg[Rs2]
000 Rs1 Rs2 Rd 0111 nand nand Rs1, Rs2, Rd Reg[Rd]  Reg[Rs1] nand Reg[Rs2]
000 Rs1 000 Rd 1000 shfl shfl Rs1, Rd Reg[Rd]  Reg[Rs1] << 1
000 Rs1 000 Rd 1001 shfr shfr Rs1, Rd Reg[Rd]  Reg[Rs1] >> 1
000 Rs1 000 Rd 1010 shll shll Rs1, Rd Reg[Rd]  Reg[Rs1] << 2
000 Rs1 000 Rd 1011 shrr shrr Rs1, Rd Reg[Rd]  Reg[Rs1] >> 2
000 Rs1 000 Rd 1100 slll slll Rs1, Rd Reg[Rd]  Reg[Rs1] << 3
000 Rs1 000 Rd 1101 srrr srrr Rs1, Rd Reg[Rd]  Reg[Rs1] >> 3
000 Rs1 Rs2 Rd 1110 (mul) mul Rs1, Rs2, Rd Reg[Rd]  Reg[Rs1] x Reg[Rs2]
000 Rs1 Rs2 Rd 1111 (div) div Rs1, Rs2, Rd Reg[Rd]  Reg[Rs1] ÷ Reg[Rs2]
51
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
• RRI OC R1 R2 Imm Assembly-Code Format Meaning
3 3 3 7
001 Rs1 Rd Imm addi addi Rs1, Rd, Imm Reg[Rd]  Reg[Rs1] + Imm
010 Rs1 Rd Imm subi subi Rs1, Rd, Imm Reg[Rd]  Reg[Rs1] – Imm
011 Rs1 Rs2 Imm beq beq Rs1, Rs2, Imm PC = Reg[Rs1] == Reg[Rs2] ? Imm : PC + 1

• RI OC R1 Imm Assembly-Code Format Meaning


3 3 9
100 Rd Imm lw lw Rd, Imm Reg[Rd]  Mem[Imm]
101 Rd Imm sw sw Rd, Imm Reg[Rd]  Mem[Imm]
110 Rd Imm jpnz jpnz Rd, Imm PC = Reg[Rd] != 0 ? Imm : PC + 1
111 Rd Imm li li Rd, Imm Reg[Rd]  Imm

• Extend 001 Rs1 Rs1 0000000 nop nop (addi)


000 Rs1 Rs1 Rd 0111 not not Rs1, Rd (nand)
101 Rs1 Rs1 Imm jmp jmp Imm (beq)
000 Rs1 Rs1 Rd 0100 mov mov Rs1, Rd (and)

52
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
53

IR  Imem(PC)

Type
2 1 0
Register instruction

Branch instruction Memory


Type
instruction 3 2 1 0

OpCode L/S
1 0 1 0 RF(Rd)  Op RF(Rs1)
PC  PC + 1

Dmem[Imm]  RF[Rd] RF(Rd)  RF(Rs1) Op RF(Rs2)


PC  PC + 1 PC  PC + 1

RF[Rs1] ?= RF[Rs2] RF[Rs1] ?= 0


1 0 1 0 RF[Imm]  Dmem[Rd] RF(Rd)  RF(Rs1) Op Imm
PC  PC +1 PC  PC + 1

PC  PC + 1 PC  Imm PC  Imm PC  PC + 1 RF[Rd]  Imm


PC  PC +1
54

IR  Imem(PC)

Type
2 1 0
Register instruction

Branch instruction Memory


Type
instruction 3 2 1 0

OpCode L/S
1 0 1 0 RF(Rd)  Op RF(Rs1)
PC  PC + 1

Dmem[Imm]  RF[Rd] RF(Rd)  RF(Rs1) Op RF(Rs2)


PC  PC + 1 PC  PC + 1

RF[Rs1] ?= RF[Rs2] RF[Rs1] ?= 0


1 0 1 0 RF[Imm]  Dmem[Rd] RF(Rd)  RF(Rs1) Op Imm
PC  PC +1 PC  PC + 1

PC  PC + 1 PC  Imm PC  Imm PC  PC + 1 RF[Rd]  Imm


PC  PC +1
55

IR  Imem(PC)

Type
2 1 0
Register instruction

Branch instruction Memory


Type
instruction 3 2 1 0

OpCode L/S
1 0 1 0 RF(Rd)  Op RF(Rs1)
PC  PC + 1

Dmem[Imm]  RF[Rd] RF(Rd)  RF(Rs1) Op RF(Rs2)


PC  PC + 1 PC  PC + 1

RF[Rs1] ?= RF[Rs2] RF[Rs1] ?= 0


1 0 1 0 RF[Imm]  Dmem[Rd] RF(Rd)  RF(Rs1) Op Imm
PC  PC +1 PC  PC + 1

PC  PC + 1 PC  Imm PC  Imm PC  PC + 1 RF[Rd]  Imm


PC  PC +1
56

IR  Imem(PC)

Type
2 1 0
Register instruction

Branch instruction Memory


Type
instruction 3 2 1 0

OpCode L/S
1 0 1 0 RF(Rd)  Op RF(Rs1)
PC  PC + 1

Dmem[Imm]  RF[Rd] RF(Rd)  RF(Rs1) Op RF(Rs2)


PC  PC + 1 PC  PC + 1

RF[Rs1] ?= RF[Rs2] RF[Rs1] ?= 0


1 0 1 0 RF[Imm]  Dmem[Rd] RF(Rd)  RF(Rs1) Op Imm
PC  PC +1 PC  PC + 1

PC  PC + 1 PC  Imm PC  Imm PC  PC + 1 RF[Rd]  Imm


PC  PC +1
Datapath: 64 x 16 Imem
Imm. Ext.
RF 32 x 16 Dmem
Imm. def
Data Address Decoder (DAD)
Address
def ALU I/O controller
Op. & 8 x 16 Register file
Func. def
Shifter ALU
Instr.
Decoder PC DAD Shifter
Control unit Datapath Program counter (PC)
Processor
Control Unit: Instruction decoder
IBUS DBUS
Opcode + Function define
Address define
I/O Immediate define
IMem DMem
controller
57
Immediate extend
58

Instr. Fetch and Decode

Reg. Access

Execution

Mem. Access

Write back to Reg.


 Sơ đồ có được bằng cách kết nối các thành phần của bộ xử
lý theo biểu đồ ASM, nghĩa là, thêm đường kết nối khi có dữ
liệu hoặc lệnh được chuyển từ thành phần này sang thành
phần khác.
 Các thành phần có nhiều kết nối tại cùng một cổng đầu vào
59
yêu cầu bộ chọn cho cổng đầu vào cụ thể đó.
Instr. Shi
RF ALU DMem
Decoder fter
IMem
DAD
I/O
PC controller

KQ=Op RF(Rs1)
RF(Rd)
IRImem(PC) RF(Rs1) KQ=RF(Rs1) Op RF(Rs2)

PCPC+1 RF(Rs2) KQ=RF(Rs1) Op Imm
60 KQ
KQ=Imm
Instr. Shi
RF ALU DMem
Decoder fter
IMem
DAD
I/O
PC controller

IRImem(PC)
RF(Rd) Dmem(Imm)  RF(Rd)
PCPC+1
61
Instr. Shi
RF ALU DMem
Decoder fter
IMem
DAD
I/O
PC controller

RF(Rd)
IRImem(PC)
 KQ=Dmem(Imm)
PCPC+1
62 KQ
Instr. Shi
RF ALU DMem
Decoder fter
IMem
DAD
I/O
PC controller

IRImem(PC) RF(Rs1) J=RF(Rs1)?=RF(Rs2)


PCJ?PC+1/Imm RF(Rs2) J=RF(Rs1)?=0
63
Instr. Shi
RF ALU DMem
Decoder fter
IMem
DAD
I/O
PC controller
J=RF(Rs1)?=RF(Rs2)
J=RF(Rs1)?=0

IRImem(PC) KQ=Op RF(Rs1)


RF(Rs1) RF(Rd) Dmem(Imm)  RF(Rd)
PCPC+1 KQ=RF(Rs1) Op RF(Rs2)
RF(Rs2)  KQ=Dmem(Imm)
PCJ?PC+1/Imm KQ=RF(Rs1) Op Imm
64 RF(Rd) KQ
KQ=Imm
CONTROL
DATA
ADDRESS
DATA

ADDRESS

Address
def RF

Instr. Imm. Imm.


Decoder def Ext.

Op. & ALU


IMem DMem
Func. def
Control unit
Shifter
1

Adder
DAD

I/O
PC controller

Datapath
IBUS Processor DBUS
65
Register instruction

CONTROL
DATA
ADDRESS
DATA

ADDRESS

Address
def RF

Instr. Imm. Imm.


Decoder def Ext.

Op. & ALU


IMem DMem
Func. def
Control unit
Shifter
1

Adder
DAD

I/O
PC controller

Datapath
66
IBUS Processor DBUS
Branch instruction

CONTROL
ADDRESS

DATA
DATA

ADDRESS

Address
def RF

Instr. Imm. Imm.


Decoder def Ext.

Op. & ALU


IMem DMem
Func. def
Control unit
Shifter
1

Adder
DAD

I/O
PC controller

Datapath
67
IBUS Processor DBUS
Memory instruction

CONTROL
ADDRESS

DATA
DATA

ADDRESS

Address
def RF

Instr. Imm. Imm.


Decoder def Ext.

Op. & ALU


IMem DMem
Func. def
Control unit
Shifter
1

Adder
DAD

I/O
PC controller

Datapath
68
IBUS Processor DBUS
 RF:
 Read Enable A
 Read Enable B
 Read Address A
 Read AddressB
 Write Enable
 Write Address
 DMEM{I/O control}:
 Read/Write
 (Address) – (Imm)
 Enable
 Mux 1(ALU):  Mux 2(PC):
 ALUSrc: 0 – RF ; 1 – Imm  1: PC  Imm
 Branch không jpnz, Zero-flag ALU = 1
 ALU:  Branch và jpnz, Zero-flag ALU = 0
 ALUOp  0: PC  PC + 1
 Shifter:  Mux 3(Write back):
69
 Shift  0 – Ex result ; 1 – Imm ; 2 – Mem
OC R1 R2 R3 Func REA RAA REB RAB WE WA R/W En ALUS ALUO Shif PCBr Jpnz WrB
3 3 3 3 4
000 Rs1 Rs2 Rd 0000 add 1 Rs1 1 Rs2 1 Rd X 0 0 0 0 0 0 1
000 Rs1 Rs2 Rd 0001 sub 1 Rs1 1 Rs2 1 Rd X 0 0 2 0 0 0 1
000 Rs1 000 Rd 0010 inc 1 Rs1 1 Rs1 1 Rd X 0 0 1 0 0 0 1
000 Rs1 000 Rd 0011 dec 1 Rs1 1 Rs1 1 Rd X 0 0 3 0 0 0 1
000 Rs1 Rs2 Rd 0100 and 1 Rs1 1 Rs2 1 Rd X 0 0 4 0 0 0 1
000 Rs1 Rs2 Rd 0101 or 1 Rs1 1 Rs2 1 Rd X 0 0 5 0 0 0 1
000 Rs1 Rs2 Rd 0110 xor 1 Rs1 1 Rs2 1 Rd X 0 0 6 0 0 0 1
000 Rs1 Rs2 Rd 0111 nand 1 Rs1 1 Rs2 1 Rd X 0 0 7 0 0 0 1
000 Rs1 000 Rd 1000 shfl 1 Rs1 1 Rs1 1 Rd X 0 0 4 1 0 0 1
000 Rs1 000 Rd 1001 shfr 1 Rs1 1 Rs1 1 Rd X 0 0 4 4 0 0 1
000 Rs1 000 Rd 1010 shll 1 Rs1 1 Rs1 1 Rd X 0 0 4 2 0 0 1
000 Rs1 000 Rd 1011 shrr 1 Rs1 1 Rs1 1 Rd X 0 0 4 5 0 0 1
000 Rs1 000 Rd 1100 slll 1 Rs1 1 Rs1 1 Rd X 0 0 4 3 0 0 1
000 Rs1 000 Rd 1101 srrr 1 Rs1 1 Rs1 1 Rd X 0 0 4 6 0 0 1
000 Rs1 Rs2 Rd 1110 (mul)
000 Rs1 Rs2 Rd 1111 (div)

70
OC R1 R2 Imm REA RAA REB RAB WE WA R/W En ALUS ALUO Shif PCBr Jpnz WrB
3 3 3 7
001 Rs1 Rd Imm addi 1 Rs1 1 Rs2 1 Rd X 0 1 0 0 0 0 1
010 Rs1 Rd Imm subi 1 Rs1 1 Rs2 1 Rd X 0 1 2 0 0 0 1
011 Rs1 Rs2 Imm beq 1 Rs1 1 Rs2 0 X X 0 0 2 0 1 0 0
OC R1 Imm
3 3 9
100 Rd Imm lw 0 X 0 X 1 Rd 1 1 0 4 0 0 0 2
101 Rd Imm sw 1 Rd 1 Rd 0 X 0 1 0 4 0 0 0 0
110 Rd Imm jpnz 1 Rd 1 Rd 0 X X 0 0 4 0 1 1 0
111 Rd Imm li 0 X 0 X 1 Rd X 0 0 0 0 0 0 1

71
C ASM
#include <stdio.h> mov ax,10
Int main(void) mov bx, 2 Hex
{ compiler sub ax,1 compiler 0000 900a
9402 5001
loader
print(“Hello world”); 2n: IMem
} toolchain mult bx, 2 ISA 6402 5001
e004 f000
debugger
sub ax, 1
jmpp 2n
halt manual manual
CPU must follow standard manual
architecture or engineer
must design its own compiler
This project focus

Xây dựng code ASM các chương trình ứng dụng, kiểm tra
 Biên dịch ra hex hoặc bin
72
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
Nạp code  Mô phỏng waveform  Kiểm tra chức năng

73
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
Tổng hợp  Report tài nguyên  Kiểm tra tài nguyên

74
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
Tổng hợp  Phân tích đình thời Report định thời
 Kiểm tra định thời

75
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
Nạp code  Mô phỏng waveform định thời mức cổng
 Kiểm tra định thời

76
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
Nạp code  Mô phỏng waveform định thời mức cổng với Fmax
 Kiểm tra thời gian hoàn thành

77
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
Tổng hợp  Phân tích công suất Report công suất
 Kiểm tra công suất

78
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
Your design Other design
(recommend)
Tài nguyên

Tần số tối đa
Định thời

Công suất

Hiệu năng (testbench: )
79
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
CONTROL
DATA
ADDRESS
DATA

ADDRESS

Address
def RF

Instr. Imm. Imm.


Decoder def Ext.

Op. & ALU


IMem DMem
Func. def
Control unit
Shifter
1

Adder
DAD

I/O
PC controller

Datapath
IBUS Processor DBUS
80
KQ=Op RF(Rs1)
KQ=RF(Rs1) Op RF(Rs2)
IRImem(PC) RF(Rs1) RF(Rd)
KQ=RF(Rs1) Op Imm Dmem(Imm)  RF(Rd)
PCPC+1 RF(Rs2) 
KQ=Imm KQ=Dmem(Imm)
PCJ?PC+1/Imm RF(Rd) KQ
J=RF(Rs1)?=RF(Rs2)
J=RF(Rs1)?=0

81
CONTROL
DATA
ADDRESS
Instr.
DATA

ADDRESS

Decoder
Address
def

Imm.
def

Imm.
Shi
Ext. RF ALU
fter
IMem DMem
Op. &
Func. def

1
D
Adder A
D

I/O
controller
PC

IBUS Processor DBUS

82 Ifetch Reg Exec WrB Mem


83
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
CONTROL
DATA
ADDRESS
Instr.

MEM/WB
DATA

ADDRESS

Decoder
Address
def

Imm.
def

EX/MEM
REG/EX
IF/REG
Imm.
Shi
Ext. RF ALU
fter
IMem DMem
Op. &
Func. def

1
D
Adder A
D

I/O
controller
PC

IBUS Processor DBUS

84 Ifetch Reg Exec WrB Mem


85
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
86
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
87
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
88
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
Control hazard
Solution

Branch prediction?
89
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
90
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
• Báo full project 10/12/2024 (Lớp thực hành)
• Báo cáo final:
• Trình bày slide, demo, thuyết trình kết quả
• Hỏi đáp

• Báo cáo tiến độ:


• 19/11/2024: Report xử lý tập lệnh, xác định các thành phần cần có trong
datapath
• 03/12/2024: Report thiết kế datapath, controller, bộ phần mềm kiểm thử

• Nộp báo cáo tiến độ + full trên courses.


91
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM
92
Thực hiện bởi Trường Đại học Công nghệ Thông tin, ĐHQG-HCM

You might also like