dce
2017
COMPUTER ARCHITECTURE
CSE 2015
BK
TP.HCM
Faculty of Computer Science and
Engineering
Department of Computer Engineering
Vo Tan Phuong
/>
dce
2017
Chapter 4.2
Thiết kế bộ xử lý đường ống
(Pipelined Processor Design)
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
2
dce
Nội dung
2017
Thực thi theo kiểu đường ống so với tuần tự
Datapath & Control theo kiểu đường ống
Rủi ro (Hazard) trong hiện thực đường ống
Rủi ro về dữ liệu và phương pháp xúc tiến sớm
Chờ trong lệnh “Load”, phát hiện rủi ro và khựng
Rủi ro về điều khiển
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
3
dce
Ví dụ cơ chế đường ống
2017
Dịch vụ giặt đồ: 3 bước
1. Giặt
2. Sấy
3. Gấp
Mỗi bước thực hiện trong 30 phút
Có 4 mẻ
Computer Architecture – Chapter 4.2
A
B
C
D
©Fall 2017, CSE
4
dce
Phương pháp tuần tự
2017
6 PM
Time 30
7
30
8
30
30
9
30
30
10
30
30
11
30
30
12 AM
30
30
A
B
C
D
Cần 6 tiếng để hoàn thành 4 mẻ
Dễ thấy cách làm này cịn có thể được cải thiện
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
5
dce
Áp dụng cơ chế đường ống
2017
6 PM
30
7
30
30
8
30
30
30
30
30
30
9 PM
Time
30
30
30
A
Cần 3 tiếng cho 4 mẻ
B
Hiệu quả hơn 2 lần cho
4 mẻ
C
Thời gian xử lý một mẻ
không đổi (90 phút)
D
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
6
dce
Hiệu suất của cơ chế đường ống
2017
Mỗi công việc cần k công đoạn
Với ti = thời gian của mỗi công đoạn Si
Chu kỳ xung nhịp t = max(ti) là thời gian của công đoạn dài nhất
Tần số xung nhịp f = 1/t = 1/max(ti)
Thời gian xử lý n công việc = (k + n – 1)*t
k chu kỳ để hồn thành cơng việc đầu tiên
n – 1 chu kỳ cịn lại hồn thành n – 1 công việc
Speed up trong trường hợp lý tưởng
Số chu kỳ cho cách tuần tự
Sk =
Số chu lỳ cho cách pipeline
Computer Architecture – Chapter 4.2
nk
=
k+n–1
Sk → k khi n lớn
©Fall 2017, CSE
7
dce
2017
Bộ xử lý MIPS theo cơ chế Pipeline
Gồm 5 công đoạn, mỗi công đoạn là một chu kỳ
1. IF: Instruction Fetch (nạp lệnh)
2. ID: Instruction Decode (giải mã lệnh)
3. EX: Execute (thực thi phép toán)
4. MEM: Memory access (truy xuất bộ nhớ dữ liệu)
5. WB: Write Back (ghi kết quả vào thanh ghi đích)
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
8
dce
2017
So sánh Single-Cycle với Pipelined
Giả sử 5 công đoạn trong q trình thực thi lệnh có thời
gian như sau:
Nạp lệnh (IF) = ALU thực thi (ALU) = truy xuất bộ nhớ dữ liệu
(MEM) = 200 ps
Đọc thanh ghi (RegR) = ghi thanh ghi (RegW) = 150 ps
Tính chu kỳ của bộ xử lý đơn chu kỳ (Ts)?
Tính chu kỳ của bộ xử lý đơn đường ống (Tp)?
Tính speedup?
Lời giải:
Ts = 200+150+200+200+150 = 900 ps
IF
Reg
ALU
MEM
Reg
900 ps
IF
Reg
ALU
MEM
Reg
900 ps
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
9
dce
So sánh (tiếp theo)
2017
Tp =
max(200, 150) = 200 ps
IF
Reg
200
IF
200
ALU
Reg
IF
200
MEM
Reg
ALU
MEM
Reg
ALU
MEM
200
200
Reg
200
CPI cho bộ xử lý pipeline =
Reg
200
1
Xét trường hợp số lượng lệnh lớn
Speedup của bộ xử lý pipeline = 900 ps / 200 ps = 4.5
IC và CPI bằng nhau cho cả hai trường hợp
Speedup nhỏ hơn 5 (số công đoạn)
Do thời gian các công đoạn khơng cân bằng
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
10
dce
2017
Tiếp theo…
Thực thi theo kiểu đường ống so với tuần tự
Datapath & Control theo kiểu đường ống
Rủi ro (Hazard) trong hiện thực đường ống
Rủi ro về dữ liệu và phương pháp xúc tiến sớm
Chờ trong lệnh “Load”, phát hiện rủi ro và khựng
Rủi ro về điều khiển
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
11
dce
Datapath đơn chu kỳ
2017
Hình bên dưới là datapath của bộ xử lý đơn chu kỳ
Thay đổi datapath như thế nào để trở thành pipelined?
Trả lời: Thêm thanh ghi vào cuối những công đoạn
IF = Instruction Fetch
ID = Decode &
Register Read
Jump or Branch Target Address
EX = Execute
MEM = Memory
Access
J
Next
PC
Beq
Bne
30
00
30
Instruction
Memory
Instruction
PC
0
1
ALU result
Imm26
+1
PCSrc
Rs 5
32
Rt 5
Address
Rd
Imm16
zero
32
BusA
RA
Registers
RB
BusB
0
0
1
WB =
Write
Back
RW
BusW
E
32
A
L
U
32
Data
Memory
Address
Data_out
Data_in
1
0
32
32
1
32
RegDst
clk
Reg
Write
ExtOp ALUSrc ALUCtrl
Computer Architecture – Chapter 4.2
Mem Mem
Read Write
Mem
toReg
©Fall 2017, CSE
12
dce
Datapath đường ống
2017
Các thanh ghi thêm vào có màu xanh, bao gồm PC
Cùng chung tín hiệu xung nhịp với bộ thanh ghi và bộ nhớ
dữ liệu (cho lệnh store)
1
Address
RB
0
1
Rd
RW
32
Imm
E
BusB
BusW
32
zero
A
L
U
1
Data
Memory
ALUout
RA
ALU result
Imm16
A
NPC
Rt 5
BusA
Next
PC
32
Data_out
0
32
32
0
Address
1
WB Data
PC
0
Rs 5
B
Instruction
Imm26
Register File
Instruction
Memory
Instruction
+1
MEM = Memory
Access
WB = Write Back
EX = Execute
D
ID = Decode &
Register Read
NPC2
IF = Instruction Fetch
Data_in
32
clk
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
13
dce
Vấn đề với thanh ghi đích (RW)
2017
Có vấn đề với địa chỉ thanh ghi đích?
Các giá trị RA, RB, RW trong công đoạn ID khác với công đoạn WB
Address
RB
0
1
Rd
RW
ALU result
Imm16
E
BusB
BusW
32
zero
32
A
Imm
Next
PC
A
L
U
1
Data
Memory
ALUout
Rt 5
RA
BusA
MEM =
Memory Access
32
32
32
0
Address
Data_out
0
D
1
PC
0
Rs 5
B
Instruction
Imm26
Register File
Instruction
Memory
Instruction
+1
NPC
NPC2
EX = Execute
1
WB Data
ID = Decode &
Register Read
IF = Instruction Fetch
WB = Write Back
Địa chỉ thanh ghi đích RW khi WB khơng phải là giá trị đúng cần ghi
vào
Data_in
32
clk
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
14
dce
2017
Thêm đường ống cho địa chỉ thanh ghi đích
Địa chỉ thanh ghi đích cần thêm vào đường ống
Địa chỉ thanh ghi đích truyền từ cơng đoạn ID sang WB
Lúc này cơng đoạn WB có giá trị đúng của địa chỉ thanh ghi đích
ID
EX
RW
BusB
BusW
0
1
32
A
L
U
1
Data
Memory
ALUout
Imm
A
32
E
32
zero
32
Data_out
0
32
32
0
Address
1
WB Data
Rd
ALU result
Imm16
Data_in
Rd4
RB
WB
Next
PC
D
RA
B
Address
Rt 5
BusA
MEM
Rd3
1
PC
0
Rs 5
Rd2
Instruction
Imm26
Register File
Instruction
Memory
Instruction
+1
NPC
NPC2
IF
clk
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
15
dce
2017
Giảng đồ thực thi lệnh theo đường ống
Diễn tả quá trình thực thi lệnh theo chu kỳ xung nhịp
Lệnh được liệt kê theo thứ tự từ trên xuống
Xung nhịp theo thứ tự từ trái qua phải
Program Execution Order
Mô tả chi tiết công đoạn của từng lệnh, tài nguyên sử dụng theo
chu kỳ xung nhịp
Time (in cycles)
CC1
CC2
CC3
CC4
CC5
lw $t6, 8($s5)
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
add $s1, $s2, $s3
ori $s4, $t3, 7
sub $t5, $s2, $t3
sw $s2, 10($t3)
Computer Architecture – Chapter 4.2
CC6
CC7
CC8
©Fall 2017, CSE
16
dce
Giảng đồ tóm lược
2017
Giảng đồ tóm lược mơ tả:
Công đoạn thực thi của từng lệnh theo chu kỳ xung nhịp
Các lệnh đi qua đường ống gồm 5 trạng thái
Các lệnh ALU bỏ qua
công đoạn truy xuất bộ
nhớ dữ liệu
Lệnh Store bỏ qua
cơng đoạn WB
Instruction Order
Tối đa có 5 lệnh tham gia vào
đường ống tại một thời điểm
Instruction Level Parallelism (ILP)
lw
$t7, 8($s3)
lw
$t6, 8($s5)
IF
ID
EX MEM WB
IF
ID
EX MEM WB
IF
ID
EX
–
WB
IF
ID
EX
–
IF
ID
ori $t4, $s3, 7
sub $s5, $s2, $t3
sw
$s2, 10($s3)
CC1
WB
EX MEM
–
CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9
Computer Architecture – Chapter 4.2
Time
©Fall 2017, CSE
17
dce
Tín hiệu điều khiển
ID
EX
RW
Imm16
BusB
1
32
Data
Memory
32
32
32
0
Address
Data_out
0
BusW
0
1
A
L
U
ALUout
E
32
zero
32
A
Imm
ALU result
1
WB Data
Rd
Bne
Data_in
Rd4
Address
RB
Beq
Rd3
1
PC
0
Rt 5
RA
BusA
WB
J
Next
PC
B
Instruction
Rs 5
MEM
Rd2
Instruction
Memory
Imm26
Register File
PCSrc
Instruction
+1
NPC
NPC2
IF
D
2017
clk
Reg
Dst
Reg
Write
Ext
Op
ALU
Src
ALU
Ctrl
Mem Mem
Read Write
Mem
toReg
Các tín hiệu điều khiển giống như bộ xử lý đơn chu kỳ
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
18
dce
Điều khiển theo kiểu đường ống
32
0
1
32
Data_out
0
BusW
32
32
0
Address
1
WB Data
1
Data
Memory
ALUout
A
Imm
BusB
A
L
U
Data_in
Rd4
RW
32
E
32
zero
D
Rd
Op
1
Address
RB
Bne
Rd3
PC
0
Rt 5
RA
BusA
Beq
ALU result
Imm16
B
Instruction
Rs 5
J
Next
PC
Rd2
Instruction
Memory
Imm26
Register File
PCSrc
Instruction
+1
NPC
NPC2
2017
Main
& ALU
Control
Computer Architecture – Chapter 4.2
Ext
Op
ALU
Src
J
ALU Beq
Ctrl Bne
Mem Mem
Read Write
Mem
toReg
WB
Reg
Write
MEM
Reg
Dst
EX
Phân phối tín
hiệu điều khiển
theo cơng đoạn
như datapath
func
clk
©Fall 2017, CSE
19
dce
2017
Tiếp theo…
Thực thi theo kiểu đường ống so với tuần tự
Datapath & Control theo kiểu đường ống
Rủi ro (Hazard) trong hiện thực đường ống
Rủi ro về dữ liệu và phương pháp xúc tiến sớm
Chờ trong lệnh “Load”, phát hiện rủi ro và khựng
Rủi ro về điều khiển
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
20
dce
2017
Các rủi ro (hazards) với thiết kế pipeline
Hazards: Tình huống làm q trình thực thi khơng đúng
theo thứ tự pipeline bình thường
1. Rủi ro về mặt cấu trúc
Tài nguyên (khối chức năng) được dùng bởi hai lệnh cùng một
thời điểm
2. Rủi ro về mặt dữ liệu
Một lệnh tính ra kết quả được sử dụng bởi các lệnh kế
Phần cứng có thể phát hiện sự phụ thuộc này giữa các lệnh
3. Rủi ro về mặt điều khiển
Sinh ra bởi lệnh thay đổi dòng thực thi (nhảy/rẽ nhánh)
Rủi ro làm thiết kế pipeline thêm phức tạp và giảm hiệu
suất.
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
21
dce
Rủi ro về mặt điều khiển
2017
Vấn đề
Tranh chấp sử dụng một khối chức năng bởi hai lệnh khác nhau
vào cùng một chu kỳ xung nhịp
Ví dụ
Structural Hazard
Hai lệnh cùng ghi
kết quả vào thanh
bộ thanh ghi
Ghi lại kết quả ALU trong công đoạn 4
Đụng độ với ghi kết quả ô nhớ trong
Instructions
công đoạn 5
lw
$t6, 8($s5)
IF
ori $t4, $s3, 7
ID
EX MEM WB
IF
ID
EX
WB
IF
ID
EX
WB
IF
ID
EX MEM
sub $t5, $s2, $s3
sw
$s2, 10($s3)
CC1
CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9
Computer Architecture – Chapter 4.2
Time
©Fall 2017, CSE
22
dce
2017
Tiếp theo…
Thực thi theo kiểu đường ống so với tuần tự
Datapath & Control theo kiểu đường ống
Rủi ro (Hazard) trong hiện thực đường ống
Rủi ro về dữ liệu và phương pháp xúc tiến sớm
Chờ trong lệnh “Load”, phát hiện rủi ro và khựng
Rủi ro về điều khiển
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
23
dce
2017
Rủi ro về mặt dữ liệu
Phụ thuộc dữ liệu giữa các lệnh tạo ra rủi ro loại này
Các lệnh phụ thuộc dữ liệu nằm kề với nhau
Read After Write – Rủi ro RAW
Cho 2 lệnh I và J, với I được thực thi trước lệnh J
Lệnh J cần (đọc) toán hạn được ghi bởi lệnh I
Gọi là một phụ thuộc dữ liệu
I: add $s1, $s2, $s3
# $s1 is written
J: sub $s4, $s1, $s3
# $s1 is read
Rủi ro xảy ra khi lệnh J đọc toán hạn $s1 trước khi lệnh I cập
nhật lại giá trị mới nhất
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
24
dce
2017
Ví dụ về rủi ro loại RAW
Program Execution Order
Time (cycles)
value of $s2
sub $s2, $t1, $t3
CC1
CC2
CC3
CC4
CC5
CC6
CC7
CC8
10
10
10
10
10
20
20
20
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
Reg
IM
Reg
ALU
DM
add $s4, $s2, $t5
or $s6, $t3, $s2
and $s7, $t4, $s2
sw $t8, 10($s2)
Kết quả của lệnh sub cần bởi lệnh add, or, and, & sw
Lệnh add & or sẽ đọc giá trị cũ của $s2 từ bộ thanh ghi
Trong CC5, $s2 được ghi giá trị mới vào cuối chu kỳ
Computer Architecture – Chapter 4.2
©Fall 2017, CSE
25