việc gì, chỉ để trì hoãn thời gian) hoặc hoãn việc nạp (fetch) sang lệnh kế (trong 2 chu kỳ clock). Nhược điểm: Điều kiện rẽ nhánh phải làm đến 3.[r]
(1)KIẾN TRÚC MÁY TÍNH & HỢP NGỮ
(2)Cải thiện tốc độ?
2
Có cách tiếp cận phổ biến:
Latency: Thời gian hồn thành cơng việc nhất
định
Ví dụ: Thời gian để đọc sector từ đĩa gọi disk
access time disk latency
(3)Giải pháp giặt ủi
(4)Pipeline
4
Pipeline giải pháp giúp tăng tốc theo kiểu
Latency, mà Throughput toàn công việc giao
Trên lượng tài nguyên không đổi, công việc tiến hành song song thay tuần tự, cơng việc chạy pipepline (đường ống)
Pipelining kỹ thuật thực lệnh lệnh
(5)Pipeline
5
Khả tăng tốc phụ thuộc vào số lượng đường
ống (pipeline) sử dụng
Thời gian chảy đầy (fill) đường ống và
Thời gian để làm khô (drain) làm giảm khả năng tăng tốc
Ví dụ giặt ủi khơng tính thời gian fill drain
(6)Pipeline
6
Giả sử máy giặt giặt 20 phút, gấp đồ 20 phút Vậy dùng giải pháp pipeline nhanh bình thường bao nhiêu?
Tổng thời gian cho giải pháp pipeline bị giới hạn thời gian thực thi đường ống chậm
(7)Các bước thực thi lệnh MIPS
7
IFtch: Instruction Fetch, Increment PC (Nạp lệnh)
Dcd: Instruction Decode, Read Registers (Giải mã lệnh) Exec: (Thực thi)
Mem-ref: Calculate Address (Tính tốn địa tốn hạng) Arith-log: Perform Operation (Tính tốn số học, luận lý)
Mem: (Lưu chuyển với nhớ)
Load: Read Data from Memory Store: Write Data to Memory
(8)(9)Ý tưởng Pipeline
(10)(11)Các trở ngại (Hazards) pipeline
11
Structural hazards: nhiều lệnh dùng chung tài nguyên thời điểm
Data hazard: lệnh sau sử dụng liệu kết lệnh trước
Control hazard: rẽ nhánh gây ra, lệnh sau phải đợi kết rẽ nhánh lệnh trước
Gây tượng “stalls” “bubbles”
(12)(13)Structural hazards #1: Single memory
13
Giải pháp:
Tạo nhớ đệm Cache Level trên CPU
L1 Instruction Cache L1 Data Cache
Càn phần cứng phức tạp để điều
(14)(15)Structural hazards #2: Registers
15
Có giải pháp khác dùng:
RegFile có tốc độ truy cập nhanh (thường ít
hơn nửa thời gian thực thi ALU tính chu kỳ clock)
Write vào RegFile suốt nửa đầu chu kỳ clock Read từ RegFile nửa chu kỳ clock lại
(16)(17)Control hazard: Rẽ nhánh
17
Chúng ta phải đặt điều kiện rẽ nhánh vào ALU
Do có lệnh sau phần rẽ nhánh
fetch, điều kiện rẽ nhánh có thực hay khơng
Nếu không thực rẽ nhánh Cứ thực thi theo trình tự bình thường
(18)Control hazard: Rẽ nhánh
18
Giải pháp ban đầu: Trì hỗn (stall) khi
điều kiện rẽ nhánh thực hiện
Chèn lệnh rác “no-op” (chẳng thực hiện
việc gì, để trì hỗn thời gian) hoặc hỗn việc nạp (fetch) sang lệnh kế (trong chu kỳ clock)
(19)Control hazard: Optimization 1
19
Giải pháp tối ưu hoá 1:
Chèn thêm phép so sánh rẽ nhánh đặc biệt
Stage (decode)
Ngay sau lệnh decode, định
giá trị cho ghi PC
Lợi ích: Bởi điều kiện rẽ nhánh làm xong
stage 2, nên có lệnh khơng cần thiết nạp
(20)(21)Minh hoạ
(22)(23)Control hazard: Optimization 2
23
Giải pháp tối ưu hoá 2: Tái định nghĩa rẽ nhánh
Định nghĩa cũ: Nếu thực rẽ nhánh
khơng có lệnh sau lệnh rẽ nhánh làm cách “vơ tình” (khơng mong muốn)
Định nghĩa mới: Bất thực rẽ nhánh,
lệnh sau lệnh rẽ nhánh thực thi (gọi branch-delay slot)
Ý nghĩa: Chúng ta thực thi lệnh phía sau lệnh
(24)Control hazard: Optimization 2
24
Lưu ý Branch-Delay Slot:
Trường hợp xấu nhất: ln phải đặt lệnh no-op
vào branch-delay slot
Trường hợp tốt hơn: tìm lệnh trước lệnh rẽ
nhánh để đặt branch-delay slot mà không làm ảnh hưởng chương trình
Thủ cơng: Tái cấu trúc thứ tự lệnh cách làm phổ biến
(25)Nondelayed vs Delayed
(26)Data hazards
26
Xem xét dãy lệnh sau:
(27)Data hazards
(28)(29)Forwarding không giải được…
29
Giải pháp: Phải trì hỗn lệnh sub lại (stall) sau
(30)(31)Data hazards: Loads
31
Vị trí lệnh (instruction slot) sau load gọi
là “load delay slot”
Nếu lệnh dùng kết load, hardware
interlock hỗn (stall) chu kỳ clock
Nếu sau load lệnh không liên quan, khơng
(32)(33)Homework
33