lOMoARcPSD| 59994889
Bài 07: Thiết kế b x
Phạm Tuấn Sơn
ptson@fit.hcmus.edu.vn
lOMoARcPSD| 59994889
2
Quan
đ
i
m v
c
u t
o CPU
Registers
ALU
CU
Internal bus
M
c tiêu: hi
u
đư
c c
u t
o và ho
t
độ
ng c
a CPU
Patterson & Hennessy
Datapath
Control
M
c tiêu: thi
ế
t k
ế
CPU
lOMoARcPSD| 59994889
Các bước thiết kế mt CPU
1. Phân tích kiến trúc b lnh (ISA)
các yêu cu v datapath
Trình bày tng lệnh dưi dng register transfers language
(RTL) để thấy rõ ý nghĩa các các lệnh
datapath phi có thành phần lưu trữ (b nh chính / cache) cho
các thanh ghi trong kiến trúc b lnh
datapath phi h tr thc thi tt c các lnh
2. La chn các khi mch cn thiết đ xây dng datapath
Khi mch t hp
Khi mch tun t
3. Lp ráp các khi mạch đáp ứng yêu cu b lnh
4. Phân tích mi lệnh để xác định các tín hiệu điu khin
cn thiết
5. Thiết kế mch cho các tín hiệu điều khin
lOMoARcPSD| 59994889
Vn đề thiết kế datapath
Vấn đ: xây dng mt khi datapath phc tp để
x lý mt lnh (np lnh thc thi lnh …)
s khó khăn và không hiu qu
Gii pháp: chia nh quá trình x mt lnh thành
các công đon nh (stages), xây dng khi x
cho từng công đoạn ri lp ráp thành datapath
Các công đoạn nh d thiết kế
D thay đổi, tối ưu một công đoạn mà ít ảnh hưởng ti
các công đoạn khác
B x lý MIPS thu gn gm 9 lnh
Thi
ế
t k
ế
b
x
lý MIPS thu g
n
lOMoARcPSD| 59994889
add $1, $2, $3
sub $1, $2, $3
and $1, $2, $3
or $1, $2, $3
lw $1, 0($2)
sw $1, 0($2)
beq $1, $2, NHAN
slt $1, $2, $3
NHAN Tại sao 9 lnh
này ?
5
lOMoARcPSD| 59994889
R-type
I-type
J-type
Tt c các lệnh MIPS đều dài 32 bit. Có 3 cu trúc
31 26 21 16 11 6 0
0
0
6 bits 26 bits
Các trường
op (“opcode”): mã thao tác của lệnh, xác định lnh làm
funct: kết hp vi op (nếu cần) để c định lnh làm gì
rs, rt, rd: đa ch các thanh ghi nguồn và đích
shamt: s bit dch
op
rs
rt rd
shamt funct
31
6 bits
26
5 bits
21
5 bits 5 bits 16
5 bits 6 bits
op
rs
rt
address/immediate
6 bits
5 bits
5 bits
16 bits
31
26
op
target address
Nh
c l
i: Các c
u trúc l
nh c
a MIPS
lOMoARcPSD| 59994889
address / immediate: đa ch hoc hng snh toán
target address: đa ch cn nhy ti
op
target address
op
rs
rt
rd shamt
funct
6 bits
5 bits
5 bits
5 bits 5 bits
6 bits
31 26
21
16
op
rs
rt
immediate
lOMoARcPSD| 59994889
Cu trúc các lnh trong CPU
MIPS thu gn
add, sub, and, or, slt
add rd,rs,rt
sub rd,rs,rt
and rd,rs,rt
or rd,rs,rt
slt rd,rs,rt
lw, sw, beq
lw rt,imm16(rs)
sw rt,imm16(rs)
beq rs,rt,imm16
j
j addr26
31
26
21
16
11
0
6
0
bits
5
bits
16
bits
6
bits
5
31
26
0
6
bits
26
bits
lOMoARcPSD| 59994889
Các công đon lnh (1/3)
Công đoạn 1: Np lnh (Instruction Fetch)
Np lnh 32 bit t b nh tại địa ch trong thanh ghi PC
vào thanh ghi lệnh. Công đoạn này như nhau cho tt c
các lnh
Sau đó, tăng PC để chun b np lnh kế tiếp sau khi x
lý xong lnh này (PC = PC + 4)
Công đoạn 2: Gii mã lnh (Instruction Decode)
Phân tích các trường trong lnh
Xác định opcode để biết loi lnh và v trí của các trường khác
Sau đó, đọc các thanh ghi nguồn để chun b thc hin công đoạn
tiếp theo Ví d
Lnh add, đc 2 thanh ghi ngun
lOMoARcPSD| 59994889
Lnh lw, đc 1 thanh ghi ngun
Các công đon lnh (2/3)
Công đoạn 3: Tính toán (ALU Arithmetic-Logic
Unit)
Công vic chính ca hu hết các lnh thc hin ti công
đon này: tính toán s hc (+, -), lun (&, |), so sánh
(beq,slt)
Lnh beq tính v trí cn nhy ti
Còn lnh lw sw làm gì trong công đoạn này ?
•lw $t0, 40($t1)
Đa ch ca vùng nh cn truy xut = giá tr ca $t1 CNG 40
Do đó, thực hin phép cộng trong công đoạn này
lOMoARcPSD| 59994889
Các công đon lnh (3/3)
Công đoạn 4: Truy xut b nh (Memory Access)
Thc s ch lnh lw sw thc hiện công đoạn lnh
này
Do công vic truy xut b nh mt thời gian tương đối
nhiu nên cn một công đoạn riêng
Công đoạn 5: Ghi kết qu vào thanh ghi (Register
Write)
Hu hết các lệnh đều ghi kết qu tính toán vào mt thanh
ghi như tính toán số hc, lun lý, lw, slt Còn các
lnh sw, lnh nhy ?
Không ghi kết qu gì vào thanh ghi
Do đó, các lệnh này không làm gì tại công đoạn lnh này
lOMoARcPSD| 59994889
Ti sao lại 5 công đoạn ?
Ch có lnh lw thc hin c 5 công đon. Vy ti
sao MIPS lại chia làm 5 công đon ?
Đó là sự t hợp đầy đ cho tt c các thao tác cn thiết
ca tt c các lnh
Thi gian thc hin mỗi công đoạn không quá chênh
lch nhau
• Có thể có nhiu công đoạn lệnh hơn không ?
Có, các kiến trúc khác như x86
lOMoARcPSD| 59994889
K
thu
t thi
ế
t k
ế
CPU 1 chu k
Thi
ế
t k
ế
CPU 1 chu k
:
T
t c
các công
đ
o
n
c
a 1 l
nh
đư
c x
lý trong 1 chu k
đồ
ng h
Chu k
đồ
ng h
ph
i
đủ
lâu
để
có th
hoàn thành x
lý m
i l
nh
1
. Instruction
Fetch
2
. Decode/
Register
Read
. Execute
3
4
. Memory
5
. Reg.
Write
lOMoARcPSD| 59994889
c 1: Biu din các lệnh dưi dng
RTL
Lệnh Register Transfers
Nạp {op , rs , rt , rd , shamt , funct} MEM[ PC ] lệnh
{op , rs , rt , Imm16} MEM[ PC ]
add R[rd] R[rs] + R[rt]; PC PC + 4 sub R[rd] R[rs] R[rt]; PC PC +
4 and R[rd] R[rs] & R[rt]; PC PC + 4 or R[rd] R[rs] | R[rt]; PC
PC + 4 lw R[rt] MEM[ R[rs] + sign_ext(imm16)]; PC PC + 4
sw MEM[ R[rs] + sign_ext(imm16) ] R[rt]; PC PC + 4
beq if ( R[rs] == R[rt] ) then PC PC + 4 + (sign_ext(imm16) << 2)
else PC PC + 4
slt if ( R[rs] < R[rt] ) then R[rd] 1; PC PC + 4
j PC = {PC[31:28],Addr26 << 2}
lOMoARcPSD| 59994889
B
ướ
c 1: Các kh
i m
ch c
n thi
ế
t
B
nh
(MEM)
L
nh + D
li
u
Thanh ghi (32 x 32)
Đọ
c RS
Đọ
c RT
Ghi RT / RD
Thanh ghi PC (Program Counter)
Sign Extender
Đơ
n v
th
c hi
n các phép tính
add/sub/and/or
trên
các thanh ghi ho
c h
ng s
Đơ
n v
th
c hi
n (PC + 4)
So sánh thanh ghi ? (l
nh
beq,slt
)
B
ướ
c 2: Các thành ph
n c
a datapath
Các kh
i m
ch t
h
p
Các kh
i l
ư
u tr
lOMoARcPSD| 59994889
Các kh
i m
ch t
h
p
Adder
Shift left 2
MUX
Extender
ALU
32
32
A
B
32
Sum
CarryOut
32
32
A
B
32
Result
OP
32
A
B
32
Y
32
Select
CarryIn
32
16
imm16
Shift
left 2
lOMoARcPSD| 59994889
Kh
i l
ư
u tr
:
B
nh
B
nh
M
t
đư
ng d
li
u vào
Data In
M
t
đư
ng d
li
u ra
Data Out
Đư
ng
đị
a ch
(address)
để
xác
đị
nh t
nh
nào
đư
c truy xu
t
Tính hi
u Write Enable = 1: xác
đị
nh d
li
u có
đư
c
ghi vào b
nh
qua
đư
ng vào d
li
u hay không
Data In
Write Enable
32
32
DataOut
Address
lOMoARcPSD| 59994889
Khối lưu trữ: Thanh ghi
Xây dng da trên các mch lật (như mạch lt D)
N bit đầu vào (Data In)
Write
Enable
N bit đầu ra (Data Out) Tín hiu
Write Enable
Giá tr 0: d liệu trong thanh ghi không thay đổi
Giá tr 1: cho phép ghi d liu t Data In vào thanh ghi
Tp thanh ghi gm 32 thanh ghi
RWRA RB
2 đường truyn d liu ra 32 bit busA và busB
Một đường truyn d liu vào busW
Data In
N
N
Data Out
lOMoARcPSD| 59994889
Thanh ghi được la chn
như sau
RA la chọn thanh ghi để
đưa dữ liu ra busA
RB la chọn thanh ghi để
đưa dữ liu ra busB RB
RW la chọn thanh ghi để ghi d liu t busW vào khi
Write Enable = 1
busW
Write Enable
32
32
busA
32
busB
5
5
5
32
32-bit
Registers
lOMoARcPSD| 59994889
B
ướ
c 3 : L
p ráp các kh
i m
ch
thành datapath
a.
Công
đ
o
n 1: N
p l
nh
b.
Công
đ
o
n 2: Gi
i mã l
nh
c.
Công
đ
o
n 3: Th
c thi l
nh
d.
Công
đ
o
n 4: Truy xu
t b
nh
e.
Công
đ
o
n 5: Ghi k
ế
t qu
vào thanh ghi

Preview text:

lOMoAR cPSD| 59994889
Bài 07: Thiết kế bộ xử lý Phạm Tuấn Sơn ptson@fit.hcmus.edu.vn lOMoAR cPSD| 59994889 Quan đ ể ề ấ ạ i m v c u t o CPU • William Stallings – Registers – ALU – CU – Internal bus Mụ ể đượ ấ ạ ạ độ ủ c tiêu: hi u c c u t o và ho t ng c a CPU • Patterson & Hennessy – Datapath – Control Mụ ế ế c tiêu: thi t k CPU 2 lOMoAR cPSD| 59994889
Các bước thiết kế một CPU
1. Phân tích kiến trúc bộ lệnh (ISA)
⇒ các yêu cầu về datapath
– Trình bày từng lệnh dưới dạng register transfers language
(RTL) để thấy rõ ý nghĩa các các lệnh
– datapath phải có thành phần lưu trữ (bộ nhớ chính / cache) cho
các thanh ghi trong kiến trúc bộ lệnh
– datapath phải hỗ trợ thực thi tất cả các lệnh
2. Lựa chọn các khối mạch cần thiết để xây dựng datapath – Khối mạch tổ hợp – Khối mạch tuần tự
3. Lắp ráp các khối mạch đáp ứng yêu cầu bộ lệnh
4. Phân tích mỗi lệnh để xác định các tín hiệu điều khiển cần thiết
5. Thiết kế mạch cho các tín hiệu điều khiển lOMoAR cPSD| 59994889
Vấn đề thiết kế datapath
• Vấn đề: xây dựng một khối datapath phức tạp để
xử lý một lệnh (nạp lệnh thực thi lệnh …)
sẽ khó khăn và không hiệu quả
• Giải pháp: chia nhỏ quá trình xử lý một lệnh thành
các công đoạn nhỏ (stages), xây dựng khối xử lý
cho từng công đoạn rồi lắp ráp thành datapath Thiế ế ộ ử ọ t k b x lý MIPS thu g n
– Các công đoạn nhỏ dễ thiết kế
– Dễ thay đổi, tối ưu một công đoạn mà ít ảnh hưởng tới các công đoạn khác
• Bộ xử lý MIPS thu gọn gồm 9 lệnh lOMoAR cPSD| 59994889 –add $1, $2, $3 –sub $1, $2, $3 –and $1, $2, $3 –or $1, $2, $3 –lw $1, 0($2) –sw $1, 0($2) –beq $1, $2, NHAN –slt $1, $2, $3
NHAN • Tại sao là 9 lệnh này ? 5 lOMoAR cPSD| 59994889 Nhắ ạ ấ ệ ủ
c l i: Các c u trúc l nh c a MIPS – R-type
• Tất cả các lệnh MIPS đều dài 32 bit. Có 3 cấu trúc – 31 26 21 16 11 6 0 I-type op rs rt rd shamt funct 6 bits 5 bits 5 bits 6 bits – J-type 0 31 26 21 5 bits 5 bits 16 op rs rt address/immediate 6 bits 5 bits 5 bits 16 bits 31 26 0 op target address 6 bits 26 bits • Các trường
– op (“opcode”): mã thao tác của lệnh, xác định lệnh làm gì
– funct: kết hợp với op (nếu cần) để xác định lệnh làm gì
– rs, rt, rd: địa chỉ các thanh ghi nguồn và đích – shamt: số bit dịch lOMoAR cPSD| 59994889
– address / immediate: địa chỉ hoặc hằng số tính toán
– target address: địa chỉ cần nhảy tới op rs rt rd shamt funct 6 bits 5 bits 5 bits 5 bits 5 bits 6 bits 31 26 21 16 op rs rt immediate op target address lOMoAR cPSD| 59994889
Cấu trúc các lệnh trong CPU MIPS thu gọn • add, sub, and, or, slt – add rd,rs,rt – sub rd,rs,rt 31 26 21 16 11 6 0 – and rd,rs,rt – or rd,rs,rt – slt rd,rs,rt 0 • lw, sw, beq – 6 bits 5 bits 5 bits 16 bits lw rt,imm16(rs) – sw rt,imm16(rs) – beq rs,rt,imm16 • j 31 26 0 – j addr26 6 bits 26 bits lOMoAR cPSD| 59994889
Các công đoạn lệnh (1/3)
• Công đoạn 1: Nạp lệnh (Instruction Fetch)
– Nạp lệnh 32 bit từ bộ nhớ tại địa chỉ trong thanh ghi PC
vào thanh ghi lệnh. Công đoạn này như nhau cho tất cả các lệnh
– Sau đó, tăng PC để chuẩn bị nạp lệnh kế tiếp sau khi xử
lý xong lệnh này (PC = PC + 4)
• Công đoạn 2: Giải mã lệnh (Instruction Decode)
– Phân tích các trường trong lệnh
• Xác định opcode để biết loại lệnh và vị trí của các trường khác
• Sau đó, đọc các thanh ghi nguồn để chuẩn bị thực hiện công đoạn tiếp theo Ví dụ
– Lệnh add, đọc 2 thanh ghi nguồn lOMoAR cPSD| 59994889
– Lệnh lw, đọc 1 thanh ghi nguồn
Các công đoạn lệnh (2/3)
• Công đoạn 3: Tính toán (ALU – Arithmetic-Logic Unit)
– Công việc chính của hầu hết các lệnh thực hiện tại công
đoạn này: tính toán số học (+, -), luận lý (&, |), so sánh (beq,slt)
– Lệnh beq tính vị trí cần nhảy tới
– Còn lệnh lw và sw làm gì trong công đoạn này ? •lw $t0, 40($t1)
• Địa chỉ của vùng nhớ cần truy xuất = giá trị của $t1 CỘNG 40
• Do đó, thực hiện phép cộng trong công đoạn này lOMoAR cPSD| 59994889
Các công đoạn lệnh (3/3)
• Công đoạn 4: Truy xuất bộ nhớ (Memory Access)
– Thực sự chỉ có lệnh lw và sw thực hiện công đoạn lệnh này
– Do công việc truy xuất bộ nhớ mất thời gian tương đối
nhiều nên cần một công đoạn riêng
• Công đoạn 5: Ghi kết quả vào thanh ghi (Register Write)
– Hầu hết các lệnh đều ghi kết quả tính toán vào một thanh
ghi như tính toán số học, luận lý, lw, slt – Còn các lệnh sw, lệnh nhảy ?
• Không ghi kết quả gì vào thanh ghi
• Do đó, các lệnh này không làm gì tại công đoạn lệnh này lOMoAR cPSD| 59994889
Tại sao lại 5 công đoạn ?
• Chỉ có lệnh lw thực hiện cả 5 công đoạn. Vậy tại
sao MIPS lại chia làm 5 công đoạn ?
– Đó là sự tổ hợp đầy đủ cho tất cả các thao tác cần thiết của tất cả các lệnh
– Thời gian thực hiện mỗi công đoạn không quá chênh lệch nhau
• Có thể có nhiều công đoạn lệnh hơn không ?
– Có, các kiến trúc khác như x86 lOMoAR cPSD| 59994889 Kỹ ậ ế ế ỳ thu t thi t k CPU 1 chu k • ế ế ỳ ấ ả đ ạ
Thi t k CPU 1 chu k : T t c các công o n củ ệ đượ ử ỳ đồ ồ a 1 l nh c x lý trong 1 chu k ng h – ỳ đồ ồ ả đủ để ể ử Chu k ng h ph i lâu có th hoàn thành x lý mọ ệ i l nh 1 . Instruction 2 . Decode/ 5 . Reg. . 3 Execute 4 . Memory Fetch Register Write Read lOMoAR cPSD| 59994889
Bước 1: Biểu diễn các lệnh dưới dạng RTL Lệnh Register Transfers Nạp
{op , rs , rt , rd , shamt , funct} ← MEM[ PC ] lệnh
{op , rs , rt , Imm16} ← MEM[ PC ]
add R[rd] ←R[rs] + R[rt]; PC ← PC + 4 sub R[rd] ←R[rs] – R[rt]; PC ← PC +
4 and R[rd] ←R[rs] & R[rt];
PC ← PC + 4 or R[rd] ←R[rs] | R[rt]; PC ← PC + 4 lw
R[rt] ← MEM[ R[rs] + sign_ext(imm16)]; PC ← PC + 4
sw MEM[ R[rs] + sign_ext(imm16) ] ←R[rt]; PC ← PC + 4 beq
if ( R[rs] == R[rt] ) then PC ← PC + 4 + (sign_ext(imm16) << 2) else PC ← PC + 4
slt if ( R[rs] < R[rt] ) then R[rd] ← 1; PC ← PC + 4 j
PC = {PC[31:28],Addr26 << 2} lOMoAR cPSD| 59994889 Bướ ầ ủ Bư ớ c 2: Các thàn ố h ph ạ n c ầ a da ế c 1: Các kh i m ch c n thi ta t path • ộ ớ B nh (MEM ố ) • ạ ổ ợ Các kh i m ch t h p – ệ ữ ệ L nh + D li u ố ư ữ •• Các kh i l u tr Thanh ghi (32 x 32) – Đọ c RS – Đọ c RT – Ghi RT / RD
• Thanh ghi PC (Program Counter) • Sign Extender • Đơ ị ự ệ
n v th c hi n các phép tính add/sub/and/or trên các thanh ghi hoặ ằ ố c h ng s • Đơ ị ự ệ n v th c hi n (PC + 4) • ệ
So sánh thanh ghi ? (l nh beq,slt ) lOMoAR cPSD| 59994889 Các khố ạ ổ ợ i m ch t h p • CarryIn Adder A 32 Sum Shift left 2 32 B CarryOut 32 Shift left 2 Select A MUX 32 Y 32 B 32 Extender OP imm16 A 32 16 32 Result 32 ALU B 32 lOMoAR cPSD| 59994889 Khố ư ữ ộ ớ i l u tr : B nh • ộ ớ
Write Enable Address B nh – ộ đườ ữ ệ M t ng d li u vào Data In DataOut • Data In 32 32 – ộ đườ ữ ệ M t ng d li u ra • Data Out – Đườ đị ỉ để đị ừ ớ ng a ch (address) xác nh t nh nào đượ ấ c truy xu t – ệ đị ữ ệ đượ
Tính hi u Write Enable = 1: xác nh d li u có c ghi vào bộ ớ đườ ữ ệ nh qua ng vào d li u hay không lOMoAR cPSD| 59994889 Khối lưu trữ: Thanh ghi
• Xây dựng dựa trên các mạch lật (như mạch lật D) – Write N bit đầu vào (Data In) Enable Data In Data Out
– N bit đầu ra (Data Out) – Tín hiệu N N Write Enable
• Giá trị 0: dữ liệu trong thanh ghi không thay đổi
• Giá trị 1: cho phép ghi dữ liệu từ Data In vào thanh ghi
• Tập thanh ghi gồm 32 thanh ghi RWRA RB
– 2 đường truyền dữ liệu ra 32 bit busA và busB
– Một đường truyền dữ liệu vào busW lOMoAR cPSD| 59994889
• Thanh ghi được lựa chọn Write Enable 5 5 5 như sau busA
– RA lựa chọn thanh ghi để busW 32 32 32-bit đưa dữ liệu ra busA 32 Registers busB
– RB lựa chọn thanh ghi để 32 đưa dữ liệu ra busB RB
– RW lựa chọn thanh ghi để ghi dữ liệu từ busW vào khi Write Enable = 1 lOMoAR cPSD| 59994889 Bướ ắ ố ạ c 3 : L p ráp các kh i m ch thành datapath a. đ ạ ạ ệ Công o n 1: N p l nh b. đ ạ ả ệ Công o n 2: Gi i mã l nh c. đ ạ ự ệ Công o n 3: Th c thi l nh d. đ ạ ấ ộ ớ Công o n 4: Truy xu t b nh e. đ ạ ế ả
Công o n 5: Ghi k t qu vào thanh ghi