Đề cương KTMT

9 - Cơ chế ống lệnh

Cơ chế ống lệnh (pipeline) hay còn gọi là cơ chế thực hiện xen kẽ các lệnh của chương trình là một phương pháp thực hiện lệnh tiên tiến, cho phép đồng thời thực hiện nhiều lệnh, giảm thời gian trung bình thực hiện mỗi lệnh và như vậy tăng được hiệu năng xử lý lệnh của CPU. Vấn đề của cơ chế ống lệnh và hướng giải quyết - Vấn đề xung đột tài nguyên xảy ra khi hệ thống không cung cấp đủ tài nguyên phần cứng phục vụ CPU thực hiện đồng thời nhiều lệnh trong cơ chế ống lệnh. Hai xung đột tài nguyên thường gặp nhất là xung đột truy cập bộ nhớ và xung đột truy cập các thanh ghi. Giả sử bộ nhớ chỉ hỗ trợ một truy cập tại mỗi thời điểm và nếu tại cùng một thời điểm, có hai yêu cầu truy cập bộ nhớ đồng thời từ 2 lệnh được thực hiện trong ống lệnh sẽ nảy sinh xung đột. Điều tương tự cũng có thể xảy ra với các thanh ghi khi có 2 hay nhiều lệnh đang thực hiện đồng yêu cầu đọc/ghi cùng một thanh ghi. Giải pháp tối ưu cho vấn đề xung đột tài nguyên là nâng cao năng lực phục vụ của các tài nguyên phần cứng. Với xung đột truy cập bộ nhớ có thể sử dụng hệ thống nhớ hỗ trợ nhiều lệnh đọc ghi đồng thời, hoặc sử dụng các bộ nhớ tiên tiến như bộ nhớ cache. Với xung đột truy cập các thanh ghi, giải pháp là tăng số lợng thanh ghi vật lý và có cơ chế cấp phát thanh ghi linh hoạt khi thực hiện các lệnh. - Tranh chấp dữ liệu cũng là một trong các vấn đề lớn của cơ chế ống lệnh và tranh chấp dữ liệu kiểu đọc sau khi ghi (RAW) là dạng xung đột dữ liệu hay gặp nhất. Để hiểu rõ tranh chấp dữ liệu kiểu RAW, ta xem xét hai lệnh sau: ADD R1, R2, R3; R1 R2 + R3 (1) SUB R4, R1, R2; R4 R1 + R2 (2) Có thể thấy lệnh SUB sử dụng kết quả của lệnh ADD (thanh ghi R1 là kết quả của ADD và là đầu vào cho SUB) và như vậy hai lệnh có sự phụ thuộc dữ liệu. Tuy nhiên, lệnh SUB đọc thanh ghi R1 tại giai đoạn giải mã (ID), trước khi lệnh ADD ghi kết quả vào thanh ghi R1 ở giai đoạn lưu kết quả (WB). Nh vậy, giá trị SUB đọc được từ thanh ghi R1 là giá trị cũ, không phải là kết quả tạo ra bởi ADD. Để SUB đọc được giá trị mới nhất của R1, giai đoạn ID của SUB phải lùi 3 nhịp, đến vị trí giai đoạn WB của ADD kết thúc. Có một số giải pháp cho vấn đề tranh chấp dữ liệu kiểu RAW. Cụ thể: 1. Nhận dạng tranh chấp RAW khi nó diễn ra; 2. Khi tranh chấp RAW xảy ra, tạm dừng (stall) ống lệnh cho đến khi lệnh phía trước hoàn tất giai đoạn WB; 3. Có thể sử dụng trình biên dịch để nhận dạng tranh chấp RAW và thực hiện: Chèn thêm các lệnh NO-OP vào giữa các lệnh có thể gây ra tranh chấp RAW; NO-OP là lệnh rỗng, không thực hiện tác vụ hữu ích mà chỉ tiêu tốn thời gian CPU. 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 tranh chấp RAW; Mục đích của cả hai phương pháp kể trên là lùi việc thực hiện lệnh gây tranh chấp dữ liệu cho đến khi lệnh trước nó hoàn tất việc lưu kết quả. 4. Sử dụng phần cứng để nhận dạng tranh chấp RAW và dự đoán trước giá trị dữ liệu phụ thuộc. - Theo thống kê, tỷ lệ các lệnh rẽ nhánh trong chương trình khoảng 10-30%. Do lệnh rẽ nhánh thay đổi nội dung của bộ đếm chương trình, chúng có thể phá vỡ tiến trình thực hiện tuần tự các lệnh trong ống lệnh vì lệnh được thực hiện sau lệnh rẽ nhánh có thể không phải là lệnh liền sau nó mà là một lệnh ở vị trí khác. Như vậy, do kiểu thực hiện gối đầu, các lệnh liền sau lệnh rẽ nhánh đã được nạp và thực hiện dở dang trong trong ống lệnh sẽ bị đẩy ra làm cho ống lệnh bị trống rỗng và hệ thống phải bắt đầu nạp mới các lệnh từ địa chỉ đích rẽ nhánh. Có nhiều giải pháp khắc phục các vấn đề nảy sinh do các lệnh rẽ nhánh, như sử dụng đích rẽ nhánh, làm chậm rẽ nhánh và dự đoán rẽ nhánh. Ý tưởng chính của phương pháp làm chậm rẽ nhánh là lệnh rẽ nhánh sẽ không gây ra sự rẽ nhánh tức thì mà được làm “trễ” một số chu kỳ, phụ thuộc vào chiều dài của ống lệnh. Phương pháp này cho hiệu quả khá tốt với các ống lệnh ngắn, thường là 2 giai đoạn và với ràng buộc lệnh ngay sau lệnh rẽ nhánh luôn được thực hiện, không phụ thuộc vào kết quả của lệnh rẽ nhánh. Cách thực hiện của phương pháp chậm rẽ nhánh là chèn thêm một lệnh NO-OP hoặc một lệnh độc lập vào ngay sau lệnh rẽ nhánh.

Back to posts

The Soda Pop