You are on page 1of 58

om

Bộ xử lý đường ống

.c
ng
co
an
th
o ng
Processor Pipelining
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Nội dung

om
.c
ng
• So sánh tốc độ xử lý
– Single ‐ cycle datapath (from the previous lecture)

co
– Multi‐cycle

an
– Pipelining

th
• Kỹ thuật đường ống
– Kỹ thuật đường ống là gì?
ng
– Tại sao lại sử dụng kỹ thuật đường ống?
o
• Xây dựng bộ xử lý đường ống
du

– Chia cắt từ bộ xử lý đơn xung nhịp


u

– Hoạt động của MIPS pipeline


cu

– Điều khiển Pipeline

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tốc độ xử lý

om
.c
ng
(What limits our clock?)

co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Thời gian thực thi đơn xung nhịp

om
.c
ng
co
an
th
o ng
du
u
cu

• Lệnh thực thi chậm nhất là lệnh có thời gian thực thi
bằng 1 chu kỳ
• Lãng phí thời gian

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Giải pháp: Bộ xử lý đa xung nhịp

om
.c
ng
co
an
th
o ng
du
u
cu

• Lệnh nhanh nhất xác định tương ứng với 1 chu kỳ


• Lệnh chậm hơn sẽ chiếm nhiều chu kỳ

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Cách nào tốt hơn?

om
.c
ng
• Chia lệnh thành các giai đoạn khác nhau

co
• Giai đoạn dài nhất sẽ xác định tốc độ xử lý

an
th …Cần nhiều chu kỳ
ng
cho một lệnh!
o
du
u
cu

Chia thành 5 parts → đồng hồ nhanh hơn 5x lần → nhưng cần nhiều hơn 5x chu kỳ cho một lệnh

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ MIPS: 5 giai đoạn đường ống

om
.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Kỹ thuật này có tốt hơn không?

om
.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hoạt động trong đường ống

om
.c
ng
co
an
Đây là điều chúng ta cần từ đường

th
ống: sử dụng tất cả các phần của bộ
xử lý đối với các lệnh khác nhau tại
ng
cùng một thời điểm
o
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Kỹ thuật đường ống là gì?
Một số ví dụ trong đời sống

om
.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Kỹ thuật đường ống 1: quy trình
giặt là (serial - pipeline)

om
.c
• 4 hoạt động cho một tải:
– Wash (1h), Dry (1h), Fold

ng
(1h), Put away (1h)
• 4 tải mất bao lâu?

co
– Wash + Dray + Fold + Put

an
away = 4h
– 4 loads * 4h/load = 16h

th
Q: Bao nhiêu phần trăm ng
tài nguyên đã sử dụng?1.
100%
o
2. 50%
du

3. 25%
u
cu

A: 25%
Chỉ sử dụng một pha:
wash, dry, fold, và put away ở How can pipelining help?
mỗi thời điểm. Còn 3 pha khác
là nhàn rỗi.

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ: Quy trình giặt là
(pipelined)

om
.c
• Hãy thử xếp chồng các hoạt động

ng
• Bao lâu cho 4 lần tải?
– 4 lần tải trong 7 giờ (mỗi

co
lần tải trong 4h)
– 7h vs. 16h nhanh hơn 2.3x!

an
Q: Cần bao nhiêu người để
th
ng
Đạt được hiệu xuất cao
thực hiện 4 hoạt động trong hơn. Khi cần 4 tải tại một
o
cùng một thời điểm ? thời điểm sử dụng toàn
du

1. 1 bộ tài nguyên.
2. 2
u

3. 4
cu

A: 4
Để thực hiện 4 thao tác
một lúc cần 4 người.
Tương đương với việc cần Đường ống hóa giúp cho việc sử dụng tất cả các tài nguyên tại
điều khiển logic cho 4 lệnh cùng một thời điểm khi thực hiện nhiều hoạt động khác nhau.
tại một thời điểm.
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ về kỹ thuật đường ống 2:
lắp ráp xe (serial)

om
.c
ng
• Công nghệ của Henry Ford

co
• Sản xuất theo đường ống

an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Pipelining example 2: car assembly (serial)

om
.c
Q: Hiệu xuất hoạt động sẽ
như thế nào nếu đường ống

ng
không đầy?
1. Goes up

co
2. Stays the same
3. Goes down Đường ống đầy.

an
Hiệu năng tối ưu
A: Goes down bởi vì tất cả tài

th
nguyên đều được
Nếu đường ống không sử dụng trong
đầy, sẽ không sử dụng
ng
cùng một khoảng
hết tài nguyên làm thời gian..
o
hiệu năng giảm xuống.
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tại sao lại sử dụng Pipeline
?

om
(Hint: performance)

.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tại sao lựa chọn pipeline?

om
.c
• Nếu có thể giữ cho đường ống luôn đầy sẽ có throughput (số công việc
thực hiện được trong một khoảng thời gian) tốt hơn.

ng
– Laundry: 1 load of laundry/hour

co
– Car: 1 car/hour

an
– MIPS: 1 instruction/cycle
• Xuất hiện trễ (total time per)

th
– Laundry: 4 giờ cho mỗi lần giặt là
ng
– Car: 4 giờ cho một xe ô tô
o
– MIPS: 5 chu kỳ cho mỗi lệnh
du

• Pipelining nhanh hơn bởi vì sử dụng tất cả tài nguyên tại cùng một thời điểm
– Laundry: máy giặt, máy sấy, gập, cất vào tủ
u
cu

– Car: lắp đế, lắp giáp động cơ, lắp lốp, lắp buồng lái
– MIPS: Nạp lệnh, đọc thanh ghi, ALU, Truy cập bộ nhớ và
ghi vào thanh ghi. (Instruction fetch, register read, ALU, memory, and
register write).

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hiệu năng đường ống hóa trong
bộ xử lý

om
.c
• Chương trình tải 3 lệnh mỗi lệnh cần

ng
800ps (0.8ns)
• Nếu đường ống hóa và xếp chồng sẽ

co
sử dụng được tất cả tài nguyên một
cách song song và thực hiện 3 lệnh

an
trên nhanh hơn.

th
Q: Thông lượng tăng lên bao
nhiêu lần trong đường ống 5 giai
ng
đoạn?
1. 1.7lần
o
2. 4lần
du

3. 5lần
u

A: 1.7 lần
cu

Đối với đường ống, throughput là một


lênh trong mỗi 200ps và 800ps không có
không đường ống hóa. Tuy nhiên phải
tăng độ trễ lênh tới 1000ps trên một
lệnh để cân bằng 5 pha đường ống. Tốc
độ tuyệt đối cho 3 lệnh riêng biệt là 1.7x
(1400ps/2400ps).

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các thanh ghi Pipeline và mào

om
đầu (phí tổn điều khiển)

.c
ng
co
an
th
o ng
du
u

• Mỗi trạng thái đường ống là một tổ hơp logic (ALU, sign extension)
cu

• Cần lưu trữ trạng thái các pha (which instruction)

• Cần các thanh ghi pipeline giữa các pha để lưu trữ lệnh cho các pha.

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đồng hồ trong bộ xử lý Pipeline

om
.c
ng
• Tốc độ đồng hồ xác định bởi register → stage → register
– Clock dịch chuyển dữ liệu đi đến thanh ghi đầu tiên

co
– Dữ liệu tính toán trong các trạng thái (combinational: think an adder)
– Dữ liệu cần đến thanh ghi tiếp theo đúng giờ tương ứng với xung đồng hồ tiếp theo

an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Hiệu năng của việc đường ống
hóa MIPS

om
.c
ng
co
an
th
o ng
du

• Thiết kế đơn xung nhịp (Single‐cycle):


u

– Đồng hồ đặt cho lệnh chậm nhất: 800ps clock time


cu

• Thiết kế đường ống hóa Pipelined:


– Đồng hồ được đặt cho pha chậm nhất: 200ps
• Chú ý rằng một vài lệnh không sử dụng hết các pha.
– Cần điều khiển để chắc chắn rằng các pha hoạt động đồng bộ

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Xây dựng bộ xử lý đường ống

om
Cắt ra từ bộ xử lý đơn xung nhịp

.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Làm thế nào để chia các lệnh MIPS?

om
.c
(You’ve already seen it…)

ng
1. IF: Instruction fetch from memory
2. ID: Instruction decode and register read

co
3. EX: Execute operation or calculate address
4. MEM: Access memory

an
5. WB: Write result back to register

th
ng
Q: Thiếu cái gì trong hình vẽ?
1. Balanced stages
o
2. Pipeline registers
du

3. Write back for the RF


u

A: Pipeline registers
cu

Cần chúng để lưu trạng thái (lệnh và kết


quả) giữa các pha.

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Các thanh ghi pipeline.

om
.c
ng
co
an
th
o ng
du
u
cu

Clock

• Các thanh ghi lưu giữ thông tin thủ tục giữa các pha.

• Dịch chuyển dữ liệu đến các pha tiếp kế tiếp theo xung đồng hồ

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Chiều chuyển động của đường

om
ống trong MIPS.

.c
ng
co
an
th
o ng
du
u
cu

• Làm thế nào để tải lệnh đi trong pipeline


• Chú ý:
– Cái gì kết nối trong mỗi giai đoạn?(combinational)
– Cái gì được lưu trữ trong thanh ghi? (state)

CuuDuongThanCong.com https://fb.com/tailieudientucntt
IF for load

om
.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
ID for load

om
.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
EX for load

om
.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
MEM for load

om
.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
WB for load

om
.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Fixing the WB stage

om
.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Đường dữ liệu MIPS pipeline
IF:IFetch ID:Dec EX:Execute MEM: WB:

om
MemAccess WriteBack

.c
ng
IF/ID ID/EX EX/MEM

co
Add
Add MEM/WB

an
4 Shift
left 2

th
Read Addr 1
Instruction Read Data
Register
Memory
ng Memory
Read Addr 2 Data 1
Read File
PC

Read
o
Address ALU Address
Write Addr Data
du

Read
Data 2 Write Data
Write Data
u
cu

Sign
16 Extend 32

System Clock
 Thanh ghi trạng
HUST-FET, thái giữa các giai đoạn thực hiện lệnh để phân cách
14/01/2021 34
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Điều khiển logic trong Pipeline
(Làm thế nào để giải mã các lệnh

om
trong đường ống?)

.c
ng
co
an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Điều khiển Pipeline

om
.c
ng
• Có cần toàn bộ thanh ghi lệnh trong các giai đường ống ?

co
• Không, chỉ cần một vài bit cho mỗi pha.

an
th
o ng
du
u
cu

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Điều khiển MIPS pipeline

om
PCSrc
ID/EX
EX/MEM

.c
Control
IF/ID

ng
co
Add
Branch MEM/WB
RegWrite Shift Add
4

an
left 2
Read Addr 1
Instruction

th
Register Read Data
Memory Memory
Read Addr 2 Data 1 MemtoReg
ng
Read ALUSrc
File
PC

Read
Address ALU Address
Write Addr Data
o
Read
du

Data 2 Write Data


Write Data
ALU
u

 Các tín hiệu điều cntrl


cu

MemRead
khiển được xác Sign
định trong giai đoạn 16 Extend 32 ALUOp
giải mã và được
lưu trong các thanh
ghi trạng thái giữa
các giai đoạn RegDst
pipeline
HUST-FET, 14/01/2021 39
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Xung đột Pipeline

om
.c
 Xung đột cấu trúc: yêu cầu sử dụng cùng một tài nguyên cho 2 lệnh khác

ng
nhau tại cùng 1 thời điểm

co
 Xung đột dữ liệu: yêu cầu sử dụng dữ liệu trước khi nó sẵn sàng

an
Các toán hạng nguồn của 1 lệnh được tạo ra bởi lệnh phía trước vẫn đang

th
nằm trong pipeline ng
 Xung đột điều khiển: yêu cầu quyết định điều khiển dòng chương trình trước
khi điều kiện rẽ nhánh và giá trị PC mới được tính toán
o
du

Các lệnh rẽ nhánh, nhảy và ngắt


u

 Giải quyết xung đột bằng cách chờ đợi


cu

Khối điều khiển pipeline cần phát hiện xung đột


Và hành động để giải quyết xung đột

HUST-FET, 14/01/2021 41
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Bộ nhớ đơn: Xung đột cấu trúc
Time (clock cycles)

Đọc dữ liệu từ bộ

om
lw

ALU
Mem Reg Mem Reg
I nhớ

.c
n
s

ng
ALU
t Inst 1 Mem Reg Mem Reg

co
r.

an
ALU
O Inst 2 Mem Reg Mem Reg

th
r ng
d

ALU
Inst 3 Mem Reg Mem Reg
o
e
du

r
u

ALU
cu

Inst 4 Mem Reg Mem Reg


Đọc lệnh từ bộ nhớ

 Sửa: Bộ nhớ dữ liệu và lệnh riêng rẽ(Instr. and Data )


HUST-FET, 14/01/2021 42
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Truy cập tệp thanh ghi
Sửa xung đột truy
add $1,

ALU
I IM Reg DM Reg cập tệp thanh ghhi

om
n bằng cách đọc
s trong nửa đầu chu

.c
ALU
t Inst 1 IM Reg DM Reg
kỳ và ghi trong nửa

ng
r. sau chu kỳ

co
ALU
O Inst 2 IM Reg DM Reg

an
r

th
d

ALU
e add $2,$1, IM Reg DM Reg
ng
r
o
du
u
cu

Sườn đồng hồ điều Sườn đồng hồ điều


khiển ghi khiển đọc

HUST-FET, 14/01/2021 43
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Sử dụng thanh ghi: Xung đột dữ liệu

om
add $1,

ALU
IM Reg DM Reg

.c
I
n

ng
s
sub $4,$1,$5

ALU
co
t IM Reg DM Reg
r.

an

ALU
th
O and $6,$1,$7 ng IM Reg DM Reg
r
d
o

ALU
or $8,$1,$9
du

e IM Reg DM Reg
r
u
cu

ALU
xor $4,$1,$5 IM Reg DM Reg

 Xung đột đọc trước khi ghi (Read before write)


 Phụ thuộc
HUST-FET, dữ liệu ngược theo thời gian gây ra xung
14/01/2021 44 đột
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Sử dụng thanh ghi: Xung đột
dữ liệu

om
add $1,

ALU
IM Reg DM Reg

.c
I
n

ng
s
sub $4,$1,$5

ALU
co
t IM Reg DM Reg
r.

an

ALU
th
O and $6,$1,$7 ng IM Reg DM Reg
r
d
o

ALU
or $8,$1,$9
du

e IM Reg DM Reg
r
u
cu

ALU
xor $4,$1,$5 IM Reg DM Reg

 Xung đột đọc trước khi ghi (Read before write)


 Phụ thuộc dữ liệu ngược theo thời gian gây ra xung
HUST-FET, 14/01/2021
CuuDuongThanCong.com
45
đột https://fb.com/tailieudientucntt
Đọc từ bộ nhớ gây xung đột dữ liệu

om
beq

ALU
IM Reg DM Reg

.c
I
n

ng
s

ALU
lw

co
t IM Reg DM Reg
r.

an
th

ALU
O Inst 3 ng IM Reg DM Reg
r
d
o

ALU
du

e Inst 4 IM Reg DM Reg


r
u
cu

 Dependencies backward in time cause hazards


HUST-FET, 14/01/2021 46
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Giải quyết xung đột: Tạm dừng
Có thể giải

om
add $1, quyết xung đột

ALU
I IM Reg DM Reg
dữ liệu bằng

.c
n
dừng chờ– stall
s

ng
t stall – ảnh hưởng
tới CPI

co
r.

an
O stall

th
r ng
d
sub $4,$1,$5

ALU
o
e IM Reg DM Reg
du

r
u

ALU
cu

and $6,$1,$7 IM Reg DM Reg

HUST-FET, 14/01/2021 47
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Ví dụ:
1: addi $s0, $zero, 10
2: addi $s1, $zero, 0
L1:
3: add $t0, $t0, $s1
4: addi $s1, $s1, 1

om
Tính CPI cho chương trình
5: bne $s1, $s0, L1

.c
1 2 3 4 5 6 7 8 9 10 11 12

ng
1 IF ID EX MEM WB

co
2 IF ID EX MEM WB

an
3 IF ID EX MEM WB

th
4 IF ID EX MEM WB
5 IF ID EX MEM WB
ng
3 * IF ID EX MEM WB
o
du

4 IF ID EX MEM WB
5 IF ID EX ME W
u

M B
cu

HUST-FET, 14/01/2021 48
CuuDuongThanCong.com https://fb.com/tailieudientucntt
om
.c
1 2 3 4 5 6 7 8 9 10 11 12 13 1 1
4 5

ng
1 IF ID EX MEM WB

co
2 IF ID EX MEM WB

an
3 * * IF ID EX MEM WB

th
4 IF
ng ID EX MEM WB
5 * * IF ID EX ME W
M B
o
3 * * * * I I
du

F D
u

4 I
cu

F
5

CuuDuongThanCong.com https://fb.com/tailieudientucntt
Chuyển tiếp dữ liệu

om
.c
 Lấy kết quả ở thời điểm nó xuất hiện sớm nhất trong bất kỳ thanh ghi pipeline nào, và

ng
chuyển tiếp nó đến khối chức năng (VD. ALU) mà cần kết quả tại chu kỳ đồng hồ đó

co
 Với khối chức năng ALU: đầu vào có thể từ bất kỳ thanh ghi pipeline nào chứ không
cần từ ID/EX bằng cách

an
 Thêm bộ chọn vào trước đầu vào của ALU

th
 Nối dữ liệu ghi Rd ở EX/MEM hoặc MEM/WB tới một trong 2 hoăc cả 2 thanh ghi
ng
pipeline Rs và Rt thuộc giai đoạn EX.
o
 Thêm phần điều khiển phần cứng để điều khiển bộ chọn
du

 Các khối chức năng khác cũng cần được thêm tương tự (VD. DM)
u

 Với chuyển tiếp có thể đạt được CPI = 1 ngay khi có sự phụ thuộc dữ liệu
cu

HUST-FET, 14/01/2021 50
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Giải quyết xung đột: Chuyển tiếp
dữ liệu Giải quyết xung
add $1, đột dữ liệu bằng

ALU

om
I IM Reg DM Reg
chuyển tiếp kết
n

.c
quả ngay khi
s
chúng sẵn sàng

ALU
ng
t sub $4,$1,$5 IM Reg DM Reg
tới nơi cần
r.

co
an
O

ALU
IM Reg DM Reg
and $6,$1,$7
th
r
d
ng
e
o

ALU
r or $8,$1,$9
du

IM Reg DM Reg
u
cu

ALU
xor $4,$1,$5 IM Reg DM Reg

HUST-FET, 14/01/2021 51
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Giải quyết xung đột: Chuyển tiếp dữ liệu
Giải quyết xung
đột dữ liệu bằng

ALU

om
I add $1, IM Reg DM Reg
chuyển tiếp kết

.c
n quả ngay khi
s chúng sẵn sàng

ALU
ng
IM Reg DM Reg
t sub $4,$1,$5 tới nơi cần

co
r.

an
O

ALU
IM Reg DM Reg

th
r and $6,$1,$7 ng
d
e
o

ALU
du

r IM Reg DM Reg
or $8,$1,$9
u
cu

ALU
IM Reg DM Reg
xor $4,$1,$5

HUST-FET, 14/01/2021 52
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Minh họa triển khai chuyển tiếp

om
add $1,

ALU
I IM Reg DM Reg

.c
n
s

ng
ALU
t sub $4,$1,$5 IM Reg DM Reg

co
r.

an
O

ALU
th
IM Reg DM Reg
r and $6,$7,$1 ng
d
e
o
du

r
u

EX forwarding MEM forwarding


cu

HUST-FET, 14/01/2021 53
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Xung đột dữ liệu khi chuyển
tiếp

om
 Một loại xung đột dữ liệu xuất hiện khi chuyển tiếp: Xung đột giữa kết quả

.c
của lệnh đang ở giai đoạn WB và lệnh đang ở giai đoạn MEM – kết quả nào
cần được chuyển tiếp?

ng
co
an
I
add $1,$1,$2

ALU
IM Reg DM Reg
n

th
s
ng
t
o
r. add $1,$1,$3

ALU
du

IM Reg DM Reg

O
u
cu

r
add $1,$1,$4
ALU
d IM Reg DM Reg
e
r

HUST-FET, 14/01/2021 54
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Xung đột dữ liệu khi có lệnh lw

ALU
I lw $1,4($2)IM Reg DM Reg

om
n
s

ALU

.c
t sub $4,$1,$5 IM Reg DM Reg

ng
r.

ALU
co
IM Reg DM Reg
O and $6,$1,$7

an
r

th

ALU
d IM Reg DM Reg
e or $8,$1,$9 ng
r
o
du

ALU
IM DM Reg
xor $4,$1,$5 Reg
u
cu

ALU
IM Reg DM

HUST-FET, 14/01/2021 55
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Xung đột dữ liệu khi có lệnh lw

ALU
I lw $1,4($2)IM Reg DM Reg

om
n
s

ALU
IM Reg DM Reg

.c
t stall
r.

ng
ALU
sub $4,$1,$5 IM Reg DM Reg

co
O

an
r

ALU
d
and $6,$1,$7
th
IM Reg DM Reg
e
ng
r
o
or $8,$1,$9

ALU
du

IM Reg DM Reg
u
cu

xor $4,$1,$5

ALU
IM Reg DM

 Sẽ vẫn cần một chu kỳ chờ ngay cả khi có chuyển tiếp


HUST-FET, 14/01/2021 56
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Xung đột điều khiển

om
.c
 Khi địa chỉ các lệnh không tuần tự (i.e., PC = PC + 4); xuất hiện khi có các

ng
lệnh thay đổi dòng chương trình

co
 Lệnh rẽ nhánh không điều kiện (j, jal, jr)
 Lệnh rẽ nhánh có điều kiện (beq, bne)

an
 Ngắt, Exceptions
Giải pháp
th
ng

 Tạm dừng (ảnh hưởng CPI)
o
du

 Tín toán điều kiện rẽ nhánh càng sớm càng tốt trong giai đoạn pipeline
giảm số chu kỳ phải dừng
u
cu

 Rẽ nhánh chậm (Delayed branches - Cần hỗ trợ của trình dịch)


 Dự đoán và hy vọng điều tốt nhất!

 Xung đột điều khiển ít xảy ra, nhưng không có giải pháp giải quyết hiệu quả
như chuyển tiếp đối với xung đột dữ liệu
HUST-FET, 14/01/2021 57
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Lệnh nhảy: Cần một chu kỳ
dừng

om
.c
ng
j Giải quyết

ALU
I IM Reg DM Reg
xung đột

co
n
s lệnh nhảy

an
t bằng cách

ALU
flush
th
IM Reg DM Reg
r. ng chờ – flush
O

ALU
o
j target IM Reg DM Reg
du

r
d
u

e
cu

 Lệnh nhảy không được giải mã cho đến giai đoạn ID, cần một lệnh xóa (flush)
 Để xóa, đặt trường mã lệnh của thanh ghi pipeline IF/ID bằng 0 (làm nó trở thành 1
lệnh noop)
 Lệnh nhảy14/01/2021
HUST-FET, rất ít xuất hiện – chỉ chiếm 3% số lệnh trong SPECint 58
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Xung đột điều khiển lệnh rẽ
nhánh

om
beq

ALU
IM Reg DM Reg

.c
I
n

ng
s

ALU
lw

co
t IM Reg DM Reg
r.

an
th

ALU
O Inst 3 ng IM Reg DM Reg
r
d
o

ALU
du

e Inst 4 IM Reg DM Reg


r
u
cu

HUST-FET, 14/01/2021 59
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Giải quyết xung đột điều khiển lệnh rẽ nhánh
Giải quyết
beq

ALU
I IM Reg DM Reg xung đột
n bằng chờ–

om
s flush –

ALU
flush

.c
t IM Reg DM Reg
nhưng ảnh
r.
hưởng CPI

ng
ALU
IM Reg DM Reg

co
O flush
r

an

ALU
d IM Reg DM Reg

th
e flush ng
r

ALU
o
IM Reg DM Reg
beq target
du
u

ALU
cu

IM Reg DM
Inst 3

HUST-FET, 14/01/2021 60
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Giải quyết xung đột điều khiển lệnh rẽ nhánh

om
.c
ALU
beq IM Reg DM Reg Fix branch
I
hazard by

ng
n
s waiting –

co
ALU
t flush IM Reg DM Reg flush

an
r.

th

ALU
O IM Reg DM Reg
ng
r beq target
o
d
du

ALU
e IM Reg DM
Inst 3
u

r
cu

 Tính toán điều kiện rẽ nhánh càng sớm càng tốt, tức là trong giai đoạn
giải mã  chỉ cần 1 chu kỳ chờ
HUST-FET, 14/01/2021 61
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Rẽ nhánh chậm

om
.c
 Nếu phần cứng cho rẽ nhánh nằm ở giai đoạn ID, ta có thể loại bỏ các chu
kỳ chờ rẽ nhánh bằng cách sử dụng rẽ nhánh chậm (delayed branches) –

ng
luôn thực hiện lệnh theo sau lệnh lệnh rẽ nhánh – rẽ nhánh có tác dụng

co
sau lệnh kế tiếp nó
 Trình dịch MIPS compiler chuyển 1 lệnh an toàn (không bị ảnh hưởng

an
bởi lệnh rẽ nhánh) tới sau lệnh rẽ nhánh (vào khe trễ). Vì vậy sẽ dấu

th
được sự rẽ nhánh chậm ng
 Với pipeline sâu (nhiều giai đoạn), trễ rẽ nhánh tăng cần nhiều lệnh được
o
chèn vào sau lệnh rẽ nhánh
du

 Rẽ nhánh chậm đang được thay thế bởi các phương pháp khác tốn
u

kém hơn nhưng mềm dẻo (động) hơn như dự đoán rẽ nhánh
cu

 Sự phát triển của IC cho phép có bộ dự đoán rẽ nhánh ít tốn kém hơn

HUST-FET, 14/01/2021 62
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Sắp xếp lệnh trong rẽ nhánh chậm
A. Từ trước lệnh rẽ nhánh B. Từ đích lệnh rẽ nhánh C. Từ nhánh sai
add $1,$2,$3 add $1,$2,$3
sub $4,$5,$6 if $1=0 then
if $2=0 then

om
delay slot delay slot
add $1,$2,$3

.c
if $1=0 then

ng
delay slot sub $4,$5,$6

co
becomes becomes becomes

an
add $1,$2,$3

th
if $2=0 then ng if $1=0 then
add $1,$2,$3 sub $4,$5,$6
add $1,$2,$3
o
if $1=0 then
du

sub $4,$5,$6
u
cu

 TH A là lựa chọn tốt nhất, điền được khe trễ và giảm I


 TH B , lệnh sub cần sao chép lại, tăng I
 TH B và C, phải đảm bảo thực hiện lệnh sub không ảnh hưởng khi
không rẽ 14/01/2021
HUST-FET, nhánh 63
CuuDuongThanCong.com https://fb.com/tailieudientucntt
Tóm tắt

om
.c
 Các bộ xử lý hiện đại đều dùng kỹ thuật pipeline

ng
 Pipelining không làm giảm độ trễ của 1 nhiệm vụ đơn lẻ, nó giúp tăng thông

co
lượng của toàn bộ

an
 Tăng tốc tiềm năng: CPI = 1 và đồng hồ nhanh, Tc nhỏ

th
 Tốc độ đồng hồ bị hạn chế bởi giai đoạn pipeline chậm nhất
ng
 Các giai đoạn pipeline không cân bằng làm giảm hiệu suất
o
Thời gian “làm đầy” pipeline và thời gian “làm trống” pipeline ảnh hưởng
du


đến độ tăng tốc khi pipeline sâu (nhiều giai đoạn) và đoạn mã ngắn
u

Cần phát hiện và giải quyết xung đột


cu

 Dừng ảnh hưởng xấu tới CPI (làm CPI lớn hơn giá trị lý tưởng 1)

HUST-FET, 14/01/2021 67
CuuDuongThanCong.com https://fb.com/tailieudientucntt

You might also like