Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin
Trang 2Sách Computer Org and Design, 3rd Ed., Patterson &Hennessy, ©2007
Digital Design and Computer Architecture, David Money Harris
Thí QJKLӋP 3 bài
Bài WұS Theo FKѭѫQJ, ÿӅ bài xem trên trang web
Trang 4/ӏFK KӑF
7KӡL gian:
7ӯ 14h00 ÿӃQ 17h20
Lý WKX\ӃW: 11 EXәL x 135 phút / 1 EXәL
Bài WұS: 4 EXәL x 135 phút / 1 EXәL
Thay ÿәL OӏFK (QJKӍ, KӑF bù) VӁ ÿѭӧF thông báo trên website WUѭӟF 2 ngày
Trang 5.ӃW OXұQ FKѭѫQJ 2
'ӳ OLӋX và FKӍ WKӏ cho máy tính ÿѭӧF ELӇX GLӉQ EҵQJ các FKXӛL bit
SKѭѫQJ pháp mã hóa
7KLӃW NӃ NLӃQ trúc WұS OӋQK:
Kích WKѭӟF và NLӇX Gӳ OLӋX
Phép toán: ORҥL nào ÿѭӧF Kӛ WUӧ
ĈӏQK GҥQJ và mã hóa FKӍ WKӏ: &KӍ WKӏ ÿѭӧF JLҧL mã WKӃ nào?
9ӏ trí toán KҥQJ và NӃW TXҧ
¾ 6ӕ OѭӧQJ toán KҥQJ?
¾ Giá WUӏ toán KҥQJ ÿѭӧF OѭX ӣÿkX?
¾ ӃW TXҧ ÿѭӧF OѭX ӣYӏ trí nào?
¾ Các toán KҥQJ Eӝ QKӟ ÿѭӧF ÿӏQK Yӏ WKӃ nào?
LӃQ trúc WұS OӋQK MIPS(RISC) ÿѭӧF WKLӃW NӃ GӵD trên 4 nguyên
WҳF Fѫ EҧQ
%ӝ FӝQJ WUӯ nhân chia ÿѭӧF WULӇQ khai EҵQJ các SKҫQ WӱORJLFKD\
EҵQJ WKXұW toán
Trang 6Nguyên WҳF WKLӃW NӃ MIPS (RISC)
Tính ÿѫQ JLҧQ quan WUӑQJ KѫQ tính quy WҳF(Simplicity favors regularity)
7ăQJ WӕF các WUѭӡQJ KӧS thông GөQJ
Các toán KҥQJ Vӕ KӑF Oҩ\ Wӯ thanh ghi (máy tính GӵD trên Fѫ FKӃ store)
load- Các FKӍ WKӏ có WKӇ FKӭD toán KҥQJ WUӵF WLӃS
7KLӃW NӃ WӕW ÿzL KӓL Vӵ WKӓD KLӋS
3 ORҥL ÿӏQK GҥQJ FKӍ WKӏ
Trang 8ĈӑF OӋQK Wӯ Eӝ QKӟ, và FұS QKұW giá WUӏ PC
Instruction Fetch
Instruction Decode
Operand Fetch Execute
Result Store
Next Instruction
Fetch
PC = PC+4
Decode Exec,
Store
Trang 97KLӃW NӃ ÿӗQJ Eӝ theo ÿӗQJ Kӗ
SKҫQ WӱWUҥQJ thái là KӧS OӋ và әQ ÿӏQK ÿѭӧF quy ÿӏQK EӣL
State element 1
State element 2
Combinational logic
clock
one clock cycle
ÿӗQJ Kӗ 1ӃX không: FҫQ tín KLӋX ÿLӅX NKLӇQ YLӋF ghi
Trang 10Instruction Memory Add
PC
4
z PC ÿѭӧF FұS QKұW ӣPӑL chu NǤ Î không FҫQ tín KLӋX ÿLӅX NKLӇQ ghi PC.
z ĈӑF Wӯ Eӝ QKӟ OӋQK ÿѭӧF WKӵF KLӋQ EҵQJ logic Wә KӧS
clock
Fetch
PC = PC+4
Decode Exec,
Store
Trang 11File
Read Data 1
Read Data 2
Control Unit
z ĈӑF 2 giá WUӏ toán KҥQJ QJXӗQ Wӯ WӋS thanh ghi
Fetch
PC = PC+4
Decode Exec,
Store
Trang 127KӵF KLӋQ OӋQK ORҥL R
Register
File
Read Data 1
Read Data 2
ALU
overflow zero
ALU control RegWrite
Trang 137KӵF KLӋQ OӋQK ÿӑF ghi Eӝ QKӟ
z ghi (sw) giá WUӏ (ÿѭӧF ÿӑF Wӯ WӋS thanh ghi khi JLҧL mã OӋQK) vào Eӝ
Register
File
Read Data 1
Read Data 2
ALU
overflow zero
ALU control RegWrite
Data Memory
Address
Write Data
Read Data
Sign Extend
MemWrite
MemRead
Trang 147KӵF KLӋQ OӋQK UӁ nhánh có ÿLӅX NLӋQ
WUѭӡQJ offset 16 bit ÿm ÿѭӧF Pӣ UӝQJ GҩX
Instruction
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
ALU
zero ALU control
Sign Extend
Shift left 2
Add
PC
Branch target address
(to branch control logic)
Trang 157KӵF KLӋQ OӋQK QKҧ\ không ÿLӅX NLӋQ
Read Address Instruction
Instruction Memory Add
PC
4
Shift left 2
Jump address
26
4
28
Trang 16ĈѭӡQJ Gӳ OLӋX
KLӋX ÿLӅX NKLӇQ và Eӝ ghép (multiplexors)
GөQJ cho cùng 1 OӋQK, PӝW Vӕ tài nguyên SKҧL nhân ÿ{L (VD., EӝQKӟ OӋQK và Gӳ OLӋX riêng ELӋW, PӝW vài Eӝ FӝQJ)
z Eӝ ghép ÿѭӧF dùng ӣÿҫX vào FӫD các tài nguyên dùng chung vàÿѭӧF ÿLӅX NKLӇQ EҵQJ tín KLӋX ÿLӅX NKLӇQ
QKҩW
Trang 174
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
ALU
ovf zero
ALU control RegWrite
Data Memory
Address
Write Data
Read Data MemWrite
MemRead
Sign Extend
ALUSrc
Trang 184
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
ALU
ovf
zero RegWrite
Data Memory
MemtoReg ALUSrc
Shift left 2
Add
PCSrc
RegDst
ALU control
1
1 1
Control Unit
Instr[31-26]
Branch
Trang 194
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
ALU
ovf
zero RegWrite
Data Memory
MemtoReg ALUSrc
Shift left 2
Add
PCSrc
RegDst
ALU control
1
1 1
Control Unit
Instr[31-26]
Branch
Trang 204
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
ALU
ovf
zero RegWrite
Data Memory
MemtoReg ALUSrc
Shift left 2
Add
PCSrc
RegDst
ALU control
1
1 1
Control Unit
Instr[31-26]
Branch
Trang 21BXL ÿѫQ xung QKӏS ± Thêm OӋQK QKҧ\
Read
Address Instr[31-0]
Instruction Memory Add
PC
4
Write Data
Read Addr 1 Read Addr 2 Write Addr
Register
File
Read Data 1
Read Data 2
ALU
ovf
zero RegWrite
Data Memory
MemtoReg ALUSrc
Shift left 2
Add
PCSrc
RegDst
ALU control
1
1 1
Control Unit
Instr[31-26]
Branch
Shift left 2
0 1
Trang 22GӏFK 2, dây GүQ, WKӡL gian WKLӃW OұS và JLӳ Cho ELӃW ÿӝ WUӉ:
Trang 23Not used
Not used
Not used
Not used
Not used
Not used
Not used
Not used
Trang 25So sánh ÿiQK giá WKLӃW NӃ ÿѫQ xung QKӏS
So sánh YӟL các Eӝ [ӱ lý trên WKӏ WUѭӡQJ:
0ӝW Eӝ [ӱ lý 2.5 GHz YӟL 20 giai ÿRҥQ pipeline có ÿӝ WUӉ NKRҧQJ:
/ѭXOѭӧQJFӫDEӝ[ӱOêFySLSHOLQHWӕWKѫQUҩWQKLӅX
7ӕWKѫQWӟLOҫQYӟLFiFEӝ[ӱOêSKiWKjQKÿѫQOӋQK
7ӕWKѫQWӟLOҫQYӟLFiFEӝ[ӱOêSKiWKjQKÿDOӋQK
Trang 26o Các NKӕL FKӭF QăQJ ÿѭӧF chia Vҿ JLӳD các pha khác nhau FӫD OӋQK do
PӝW NKӕL FKӭF QăQJ Fө WKӇ không FҫQ trong toàn Eӝ các pha WKӵF KLӋQ FӫD OӋQK
Clock
Clock
Time saved
Instr 1 Instr 2 Instr 3 Instr 4
Trang 27Not used
Not used
Not used
Not used
Not used
Not used
Not used
Not used
Trang 28So sánh ÿiQK giá WKLӃW NӃ ÿD xung QKӏS
R-type 44% 4 cycles Load 24% 5 cycles Store 12% 4 cycles Branch 18% 3 cycles Jump 2% 3 cycles
Contribution to CPI
R-type 0.44 u4 = 1.76
Load 0.24 u5 = 1.20 Store 0.12 u4 = 0.48 Branch 0.18 u3 = 0.54 Jump 0.02 u3 = 0.06
SKiWKjQKÿDOӋQK
Trang 29Next addr
Reg file
16
Register input
Data out
Trang 302
Trang 32Dây FKX\ӅQ VҧQ [XҩW trong nhà máy
Trang 337ăQJ KLӋX QăQJ (WӕF ÿӝ) EҵQJ cách nào?
WҥL NӃW thúc:
KLӋQ ÿҥL
WăQJ WӕF ÿӝ EҵQJ Vӕ giai ÿRҥQ ÿѭӡQJ ӕQJ ĈѭӡQJ ӕQJ 5 giai ÿRҥQ
Trang 345 giai ÿRҥQ ÿѭӡQJ ӕQJ FӫD OӋQK lw
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
lw
Trang 35ĈѭӡQJ ӕQJ trong MIPS
NKRҧQJ WKӡL gian
z ÿӝ WUӉ OӋQK (WKӡL gian WKӵF KLӋQ, WKӡL gian ÿiS ӭQJ ± WKӡL gian Wӯ
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
lw
Cycle 7 Cycle 6 Cycle 8
¾ chu NǤ ÿӗQJ Kӗ (WKӡL gian 1 giai ÿRҥQ ÿѭӡQJ ӕQJ) TX\ӃW ÿӏQK EӣL giai ÿRҥQ FKұP QKҩW
¾ PӝW Vӕ giai ÿRҥQ không dùng toàn Eӝ chu NǤ ÿӗQJ Kӗ (VD., WB)
¾ PӝW Vӕ OӋQK, có các giai ÿRҥQ là chu NǤ lãng phí ( QJKƭD là, không WKӵF KLӋQ gì trong chu NǤ ÿy YӟL OӋQK ÿy)
Trang 36Ví Gө 3.3 ± Pipeline vs ĈѫQ xung QKӏS
lw IFetch Dec Exec Mem W B
7ULӇQ khai pipeline (Tc = 200 ps):
IFetch Dec Exec Mem WB sw
IFetch Dec Exec Mem W B
sao?
400 ps
Trang 37.ӻ WKXұW ÿѭӡQJ ӕQJ cho MIPS(RISC) ISA
Î Có WKӇ QҥS OӋQK trong giai ÿRҥQ 1 st và JLҧL mã OӋQK trong giai ÿRҥQ
2 nd
- Có WKӇ ÿӑF thanh ghi ӣgiai ÿRҥQ 2 nd
- Có WKӇ tính ÿӏD FKӍ Eӝ QKӟ ӣgiai ÿRҥQ EX ( WKӵF KLӋQ OӋQK )
FKX\ӇQ Gӳ OLӋX FKӍ FҫQ 1 OҫQ truy FұS Eӝ QKӟ
Trang 38ĈѭӡQJ Gӳ OLӋX MIPS pipeline
Thanh ghi WUҥQJ thái JLӳD các giai ÿRҥQ WKӵF KLӋQ OӋQK ÿӇ phân cách
MemAccess
WB: WriteBack
Register File
Read Data 1
Read Data 2
ALU
Shift left 2
Add
Data Memory
Address Write Data
Read Data
IF/ID
Sign Extend
ID/EX EX/MEM
MEM/WB
Trang 39ĈLӅX NKLӇQ MIPS pipeline
Các tín KLӋX ÿLӅX NKLӇQ ÿѭӧF xác ÿӏQK trong giai ÿRҥQ JLҧL mã và ÿѭӧF OѭX
trong các thanh ghi WUҥQJ thái JLӳD các giai ÿRҥQ pipeline
Read
Address
Instruction Memory
Register File
Read Data 1
Read Data 2
ALU
Shift left 2
Add
Data Memory
Address Write Data
Read Data
IF/ID
Sign Extend
Trang 40Mô Wҧ KRҥW ÿӝQJ pipeline
z ĈR KLӋX QăQJ: &ҫQ bao nhiêu chu NǤ ÿӅ WKӵF KLӋQ ÿRҥQ mã?
z Phân tích KRҥW ÿӝQJ: ALU làm gì ӣchu NǤ 4?
z &ҧL WLӃQCó [ҧ\ ra hazard không? 7ҥL sao? Dùng cách nào ÿӇNKҳF SKөF?
Trang 411 chu NǤ
Î CPI = 1
7KӡL gian ÿLӅQ ÿҫ\ pipeline
Trang 42Xung ÿӝW Pipeline
Xung ÿӝW FҩX trúc : yêu FҫX Vӱ GөQJ cùng PӝW tài nguyên
Xung ÿӝW Gӳ OLӋX : yêu FҫX VӱGөQJ Gӳ OLӋX WUѭӟF khi nó VҹQ sàng
Xung ÿӝW ÿLӅX NKLӇQ : yêu FҫX TX\ӃW ÿӏQK ÿLӅX NKLӇQ dòng FKѭѫQJ trình WUѭӟF khi ÿLӅX NLӋQ UӁ nhánh và giá WUӏ PC PӟL ÿѭӧF tính toán
z .KӕL ÿLӅX NKLӇQ pipeline FҫQ phát KLӋQ xung ÿӝW
Trang 43ĈӑF OӋQK Wӯ Eӝ QKӟ
Trang 44Xung ÿӝW FҩX trúc khi truy FұS WӋS thanh ghi
EҵQJ cách ÿӑFtrong QӱD ÿҫX chu
Trang 456ӱGөQJ thanh ghi: Xung ÿӝW Gӳ OLӋX
Xung ÿӝW ÿ ӑF WUѭӟF khi ghi (Read before write)
Trang 466ӱGөQJ thanh ghi: Xung ÿӝW Gӳ OLӋX
Xung ÿӝW ÿ ӑF WUѭӟF khi ghi (Read before write)
Trang 47ĈӑF Wӯ Eӝ QKӟ: Gây xung ÿӝW Gӳ OLӋX
Load-use data hazard
Trang 50Tóm WҳW 1
QKҩW
Trang 53*LҧL TX\ӃW xung ÿӝW: &KX\ӇQ WLӃS Gӳ OLӋX
Trang 54&KX\ӇQ WLӃS Gӳ OLӋX
QăQJ (VD ALU) mà FҫQ NӃW TXҧ WҥL chu NǤ ÿӗQJ Kӗ ÿy
Fҧ 2 thanh ghi pipeline Rs và Rt WKXӝF giai ÿRҥQ EX
Trang 55Minh KӑD WULӇQ khai FKX\ӇQ WLӃS
Trang 56Xung ÿӝW Gӳ OLӋX khi FKX\ӇQ WLӃS
ÿӝW JLӳD NӃW TXҧ FӫD OӋQK ÿDQJ ӣgiai ÿRҥQ WB và OӋQK ÿDQJ ӣgiai ÿRҥQ MEM ± NӃW TXҧ nào FҫQ ÿѭӧF FKX\ӇQ WLӃS?
Trang 57Xung ÿӝW Gӳ OLӋX khi có OӋQK lw
Trang 58Xung ÿӝW ÿLӅX NKLӇQ
[XҩW KLӋQ khi có các OӋQK thay ÿәL dòng FKѭѫQJ trình
Trang 59FҫQ PӝW OӋQK xóa (flush)
z ĈӇ xóa, ÿһW WUѭӡQJ mã OӋQK FӫD thanh ghi pipeline IF/ID
EҵQJ 0 (làm nó WUӣ thành 1 OӋQK noop)
*LҧL TX\ӃW xung ÿӝW OӋQK QKҧ\ EҵQJ cách FKӡ ± flush
Trang 60Xung ÿӝW ÿLӅX NKLӇQ OӋQK UӁ nhánh
Trang 61*LҧL TX\ӃW xung ÿӝW ÿLӅX NKLӇQ OӋQK UӁ nhánh
flush ±
QKѭQJ ҧQK KѭӣQJ CPI
Trang 62*LҧL TX\ӃW xung ÿӝW ÿLӅX NKLӇQ OӋQK UӁ nhánh
Trang 635Ӂ nhánh FKұP
WLӃS nó
KѭӣQJ EӣL OӋQK UӁ nhánh) WӟL sau OӋQK UӁ nhánh (vào khe WUӉ) Vì
QKLӅX OӋQK ÿѭӧF chèn vào sau OӋQK UӁ nhánh
WӕQ kém KѫQ QKѭQJ PӅP GҿR (ÿӝQJ) KѫQ QKѭ Gӵ ÿRiQ UӁ nhánh
KѫQ
Trang 646ҳS [ӃS OӋQK trong UӁ nhánh FKұP
add $1,$2,$3
if $1=0 then sub $4,$5,$6
Trang 65'ӵ ÿRiQ UӁ nhánh WƭQK
1. ĈRiQ không UӁ nhánh ± luôn JLҧ VӱOӋQK không UӁ nhánh,
WLӃS WөF QҥS các OӋQK NӃ WLӃS, FKӍ khi có UӁ nhánh thì FҫQ
GӯQJ pipeline
- trong giai ÿRҥQ IF, ID, và EX QӃX Eӝ tính UӁ nhánh ӣMEM ± ba GӯQJ
- trong giai ÿRҥQ IF và ID QӃX Eӝ tính UӁ nhánh ӣEX ± hai GӯQJ
- trong giai ÿRҥQ IF QӃX Eӝ tính UӁ nhánh ӣID ± môt GӯQJ
máy
Trang 66Xóa khi Gӵ ÿRiQ sai
Trang 67Xóa khi Gӵ ÿRiQ sai (ĈRiQ không UӁ nhánh)
EҵQJ 0 (làm nó WUӣ thành 1 OӋQK noop)
Trang 68'ӵ ÿRiQ UӁ nhánh
UӁ nhánh ӣgiai ÿRҥQ ID)
ÿtFK??
KLӋX QăQJ 9ӟL QKLӅX SKҫQ FӭQJ KѫQ, có WKӇ WKӱ Gӵ
WKӵF KLӋQ
Trang 69'ӵ ÿRiQ UӁ nhánh ÿӝQJ EҵQJ 1 bit
ӣFXӕL vòng OһS
ÿRiQ ÿ~QJ
Loop: 1 st loop instr
2 nd loop instr
.
last loop instr bne $1,$2,Loop fall out instr
Trang 70'ӵ ÿRiQ UӁ nhánh ÿӝQJ EҵQJ 2 bit
ÿRiQ sai 2 OҫQ thì bit Gӵ ÿRiQ PӟL thay ÿәL
Predict Taken
Predict Not Taken
Predict Taken
Predict Not Taken
last loop instr bne $1,$2,Loop fall out instr
Trang 72Hai ORҥL exceptions
trình
NKLӇQ cho hàm [ӱ lý Eү\ FӫD OS
ÿѭӧF WLӃS WөF
Trang 73Exception có WKӇ [XҩW KLӋQ ӣÿkX trong pipeline
Trang 74Exception có WKӇ [XҩW KLӋQ ӣÿkX trong pipeline
PͱW chu NǤ ÿӗQJ Kӗ
ID
IF, MEM any
Trang 76I$ page fault
Trang 777әQJ NӃW
KLӋX VXҩW (CPI=1 và ÿӗQJ Kӗ nhanh - fc OӟQ)
FKұP QKҩW ± WKLӃW NӃ pipeline cân EҵQJ là UҩW quan WUӑQJ
- 'ӯQJ (ҧQK KѭӣQJ CPI)
- &KX\ӇQ WLӃS (FҫQ SKҫQ FӭQJ Kӛ WUӧ)
WUҥQJ thái ÿҫX trong pipeline
- 'ӯQJ (ҧQK KѭӣQJ CPI)
- 5Ӂ nhánh FKұP (FҫQ Kӛ WUӧ FӫD trình GӏFK)
- 'ӵ ÿRiQ UӁ nhánh WƭQK và ÿӝQJ (FҫQ SKҫQ FӭQJ Kӛ WUӧ)