Xung đột dữ liệu
23
Kỹ thuật forwarding có thể hỗ trợ giải quyết xung đột dữ liệu hiệu
quả, tuy nhiên nó không thể ngăn chặn tất cả các trường hợp chu kỳ
rỗi
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
Kỹ thuật ống dẫn (pipeline)
Xung đột dữ liệu
Tóm lại, với kỹ thuật forwarding có:
24
Hình 1.
Hình 2.
ü
ALU-ALU forwarding hay EX-EX
forwarding (hình 1)
ü
MEM-ALU forwarding hay MEM-EX
forwarding (hình 2)
03/2017
Kỹ thuật ống dẫn (pipeline)
Xung đột điều khiển
v
Một số lệnh nhảy có điều kiện và không điều kiện trong MIPS
(branches, jumps) tạo ra xung đột điều kiển này
Ví dụ xét đoạn chương trình sau:
add $4, $5, $6
beq $1, $2, label
lw $3, 300($s0)
Nếu áp dụng pipeline thông thường, tại chu kỳ thứ ba của pipeline,
khi beq đang thực thi công đoạn ID thì lệnh lw sẽ được nạp vào.
Nhưng nếu điều kiện bằng của lệnh beq xảy ra thì lệnh thực hiệp tiếp
sau đó không phải là lw mà là lệnh được gán nhãn ‘label’, lúc này
xảy ra xung đột điều khiển.
25
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
Kỹ thuật ống dẫn (pipeline)
Xung đột điều khiển
v
Các giải pháp giải quyết xung đột điều khiển cho lệnh nhảy có điều kiện,
ví dụ với
beq:
ü
Cơ bản nhất là chờ cho tới khi điều kiện bằng được tính toán thì lệnh
tiếp theo mới được nạp vào. Luôn lãng phí một chu kỳ xung clock để
chờ điều kiện bằng xảy ra.
ü
Cải tiến hơn, có thể dùng phương pháp dự đoán. Có hai cách dự đoán:
dự đoán điều kiện bằng sẽ xảy ra (tức nhánh nhảy tới sẽ được lấy);
hoặc dự đoán điều kiện bằng sẽ không xảy ra (tức nhánh nhảy tới sẽ
không được lấy). Nếu dự đoán đúng, chương trình sẽ không lãng phí
chu kỳ xung clock nào; còn nếu dự đoán sai, lệnh đúng sẽ được nạp lại
và lãng phí một chu kỳ xung clock.
v
Các giải pháp giải quyết xung đột điều khiển (tham khảo thêm mục 4.8,
sách tham khảo chính)
26
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
Kỹ thuật ống dẫn (pipeline)
Ví dụ giải quyết xung đột điều khiển theo kiểu dự đoán điều kiện bằng sẽ
không xảy ra, tức nhánh nhảy tới sẽ không được lấy (Predict Not Taken):
27
Dự đoán
đúng
Dự đoán
sai
03/2017
Kỹ thuật ống dẫn (pipeline)
28
Tổng kết:
§
Hiểu kỹ thuật ống dẫn là gì
§
Ba xung đột mà kỹ thuật ống dẫn có thể gây ra:
ü
Xung đột cấu trúc
ü
Xung đột dữ liệu
ü
Xung đột điều khiển
§
Cách giải quyết khi xảy ra các xung đột trên
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.
Kỹ thuật ống dẫn (pipeline)
v
Lý thuyết: Đọc sách tham khảo
•
Mục: 4.5
•
Sách:
Computer Organization and Design:
The Hardware/Software Interface,
Patterson, D. A., and J. L. Hennessy,
Morgan Kaufman, Revised Fourth Edition,
2011.
v
Bài tập: file đính kèm
29
03/2017
Copyrights 2017 CE-UIT. All Rights Reserved.