Bài giảng Kiến trúc máy tính - Chương 3a: CPU pipeline - Hoàng Xuân Dậu

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG  
BÀI GIẢNG MÔN  
KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
Giảng viên:  
TS. Hoàng Xuân Dậu  
Điện thoại/E-mail:  
Bộ môn:  
Khoa học máy tính - Khoa CNTT1  
Học kỳ/Năm biên soạn: Học kỳ 2 năm học 2009-2010  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
NỘI DUNG  
1. Giới thiệu về CPU pipeline  
2. Các vấn đề của pipeline  
3. Giải quyết vấn đề xung đột tài nguyên  
4. Giải quyết vấn đề xung đột dữ liệu  
5. Quản lý rẽ nhánh trong pipeline  
6. Giới thiệu pipeline của một số CPU  
7. Siêu pipeline  
8. Câu hỏi ôn tập  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 2  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.1 Giới thiệu CPU pipeline – Dây chuyền lắp ráp ôtô  
• Mỗi dây chuyền lắp  
ráp được chia thành  
nhiều công đoạn;  
• Nhiều ôtô cùng  
được lắp ráp trên một  
dây chuyền;  
• Tại mỗi công đoạn,  
một phần việc được  
hoàn thành;  
• Sau mỗi nhịp thời  
gian một ôtô hoàn  
thiện ở cuối dây  
chuyền và một ôtô bắt  
đầu hình thành ở đầu  
dây chuyền.  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 3  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.1 Giới thiệu CPU pipeline – Nguyên lý  
Không pipeline  
Có pipeline  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 4  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.1 Giới thiệu CPU pipeline – Nguyên lý  
Việc thực hiện lệnh được chia nhỏ thành các giai đoạn  
5 giai đoạn của một hệ thống load-store:  
. Instruction Fetch - IF: Đọc lệnh từ bộ nhớ (hoặc cache)  
. Instruction Decode - ID: giải mã lệnh và đọc các toán hạng  
. Execute - EX: thực hiện lệnh; nếu là lệnh truy nhập bộ nhớ: tính  
toán địa chỉ bộ nhớ  
. Memory Access - MEM: Đọc/ghi bộ nhớ; no-op nếu không  
truy nhập bộ nhớ  
. Write Back - WB: Ghi kết quả vào các thanh ghi.  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 5  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.1 Giới thiệu CPU pipeline – Nguyên lý  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 6  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.1 Giới thiệu CPU pipeline – Đặc điểm  
Là dạng xử lý song song ở mức lệnh (instruction level  
parallelism (ILP));  
Một pipeline là đầy đủ (fully pipelined) khi nó luôn tiếp nhận  
một lệnh mới tại mỗi chu kỳ đồng hồ;  
Ngược lại, một pipeline là không đầy đủ khi có một số chu  
kỳ trễ trong tiến trình thực hiện;  
Số lượng các giai đoạn (stages) trong pipeline phụ thuộc  
vào thiết kế vi xử lý:  
. 2,3, 5 giai đoạn (pipeline đơn giản)  
. 14 giai đoạn (PII, PIII)  
. 20-31 giai đoạn (P4)  
. 12-15 giai đoạn (Core)  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 7  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.1 Giới thiệu CPU pipeline – P6 (PIII, M)  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 8  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.1 Giới thiệu CPU pipeline – Số lượng stages  
Thời gian thực hiện mỗi giai đoạn  
. Các stages nên có thời gian t/h bằng nhau  
. Các stages chậm cần được tách nhỏ  
Các vấn đề liên quan đến tài nguyên  
. Điều gì xảy ra khi hai giai đoạn đọc lệnh và đọc toán hạng đều  
truy nhập bộ nhớ?  
. Điều gì xảy ra khi hai giai đoạn đọc lệnh và thực hiện lệnh (tính  
địa chỉ bộ nhớ) đều truy nhập PC?  
Pipeline dài bao nhiêu là tốt?  
. Về nguyên tắc: càng nhiều stages, hiệu quả càng cao  
. Pipeline dài nếu bị trống rỗng vì một lý do nào đó sẽ tốn nhiều  
thời gian để điền đầy.  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 9  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.2 Các vấn đề của pipeline – Logic gate hazard  
Logic Gate Hazard  
Giá trị ra mong đợi (theo thiết kế) luôn là 0 (false)  
Tuy nhiên, trong một số thời điểm giá trị ra là 1 (true)   
Hazard (không theo thiết kế).  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 10  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.2 Các vấn đề của pipeline  
Vấn đề xung đột tài nguyên (resource conflicts)  
. Xung đột truy nhập bộ nhớ  
. Xung đột truy nhập các thanh ghi  
Tranh chấp dữ liệu (Data hazards):  
. Vấn đề read after write hazard (RAW)  
Các lệnh rẽ nhánh (Branch instructions)  
. Không điều kiện  
. Có điều kiện  
. Gọi thực hiện và trở về từ chương trình con  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 11  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.3 Xung đột tài nguyên  
Không đủ tài nguyên phục vụ CPU;  
Ví dụ: nếu bộ nhớ chỉ hỗ trợ một truy nhập tại mỗi thời điểm  
và nếu tại cùng một thời điểm, pipeline yêu cầu hai truy  
nhập bộ nhớ (đọc lệnh – tại giai đoạn IF và đọc dữ liệu – tại  
giai đoạn ID) nảy sinh xung đột.  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 12  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.3 Xung đột tài nguyên  
Giải pháp: Thêm tài  
nguyên hoặc nâng cao  
năng lực phục vụ của tài  
nguyên:  
. Memory/Cache: hỗ trợ  
nhiều truy nhập tại một  
thời điểm;  
. Chia cache thành 2 phần:  
I-Cache và D-Cache để  
cải thiện khả năng truy  
nhập.  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 13  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.4 Xung đột dữ liệu RAW  
Xem xét hai lệnh:  
ADD R1, R1, R3 ;R1 = R1+R3  
SUB R4, R1, R2 ;R4 = R1-R2  
Lệnh SUB sử dụng kết quả của ADD – có sự phụ thuộc dữ  
liệu giữa hai lệnh  
SUB đọc R1 trong giai đoạn 2 (ID), còn ADD ghi kết quả  
trong giai đoạn 5 (WB)  
. SUB đọc giá trị cũ của R1 trước khi ADD lưu giá trị mới của  
R1.  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 14  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.4 Xung đột dữ liệu RAW  
. ADD R1, R1, R3 ;R1 R1+R3  
. SUB R4, R1, R2 ;R4 R1-R2  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 15  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.4 Xung đột dữ liệu RAW – Hướng khắc phục  
Nhận dạng RAW hazard khi nó diễn ra  
Khi RAW hazard xảy ra, tạm dừng (stall) pipeline cho đến  
khi lệnh phía trước hoàn tất giai đoạn WB.  
Có thể sử dụng compiler để nhận dạng RAW và:  
. Chèn thêm các lệnh NO-OP vào giữa các lệnh có thể gây ra  
RAW;  
. Thay đổi trật tự các lệnh trong chương trình và chèn các lệnh  
độc lập vào giữa các lệnh có thể gây ra RAW;  
Sử dụng phần cứng để nhận dạng RAW và dự đoán trước  
giá trị dữ liệu phụ thuộc.  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 16  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.4 Xung đột dữ liệu RAW – Hướng khắc phục  
Lùi thời điểm thực hiện SUB bằng cách chèn thêm 3 lệnh  
NO-OP  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 17  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.4 Xung đột dữ liệu RAW – Hướng khắc phục  
Chèn thêm 3 lệnh độc lập dữ liệu vào  
giữa 2 lệnh ADD và SUB có thể sinh ra RAW  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 18  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.5 Quản lý rẽ nhánh trong pipeline  
Tỷ lệ các lệnh rẽ nhánh trong chương trình khoảng 10-30%.  
Lệnh rẽ nhánh gây ra:  
. Ngắt quãng quá trình thực hiện bình thường của chương trình;  
. Làm cho pipeline trống rỗng nếu không có biện pháp phòng  
ngừa/ngăn chặn.  
Với các VXL có pipeline dài như P4 (31 stages) và nhiều  
pipeline chạy song song, vấn đề lệnh rẽ nhánh càng trở nên  
phức tạp:  
. Phải đẩy toàn bộ các lệnh đang thực hiện ở các ống khi gặp  
lệnh rẽ nhánh;  
. Nạp mới các lệnh từ địa chỉ rẽ nhánh vào pipeline. Tiêu tốn  
nhiều thời gian để điền đầy pipeline.  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 19  
BÀI GIẢNG MÔN KIẾN TRÚC MÁY TÍNH  
CHƯƠNG 3a – CPU PIPELINE  
3a.5 Quản lý rẽ nhánh trong pipeline  
Khi gặp lệnh rẽ nhánh, các lệnh kế tiếp đã nạp bị đẩy ra khỏi  
pipeline và sau đó các lệnh từ địa chỉ đích được nạp vào  
GIẢNG VIÊN: TS. HOÀNG XUÂN DẬU  
BỘ MÔN: KHOA HỌC MÁY TÍNH - KHOA CNTT1  
Trang 20  
Tải về để xem bản đầy đủ
pdf 40 trang yennguyen 12/04/2022 5500
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 3a: CPU pipeline - Hoàng Xuân Dậu", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_3a_cpu_pipeline_hoang_xu.pdf