18 / 24 · Khái niệm
Phụ thuộc, xung đột tài nguyên và chuyển tiếp
So sánh dừng với chuyển tiếp khi phép toán cần kết quả trước đó.
Bài học miễn phí. Đăng ký để lưu tiến độ học tập.
Chồng lấp đòi hỏi nhiều hơn giữ thứ tự
Các phép tính luồng độc lập không đọc kết quả trước, nên giao dịch có thể chồng lấp an toàn. Ngược lại, bộ phép toán dùng tập thanh ghi có thể cần kết quả của phép toán trước. Đọc thanh ghi trước khi phép ghi cũ hơn sẵn có tạo xung đột dữ liệu đọc sau ghi. Phép toán số học có thể đúng trong khi toán hạng được lấy mẫu quá sớm.
Bắt đầu với R1=4. Cho I0 thực hiện R1←R1+3 và I1 thực hiện R2←R1×2. Trong ví dụ này, I0 ghi nhận toán hạng 4 tại cạnh 0, tính 7 trong chu kỳ sau và ghi R1 tại cạnh 1. I1 lấy mẫu R1 tại cạnh 1 có thể thấy giá trị cũ 4, tạo R2=8. Thực thi tuần tự đòi hỏi R2=14. Xác định rõ hành vi đọc/ghi tập thanh ghi tại cùng cạnh.
| Giải pháp | Toán hạng I1 thấy | Yêu cầu |
|---|---|---|
| Đọc R1 cũ | 4 | Sai trong trường hợp này |
| Dừng đến cạnh 2 | 7 | Giữ phép toán và các trường đi kèm |
| Chuyển tiếp kết quả thực thi | 7 ngay trước cạnh 1 | Kết quả sẵn có và đường đáp ứng thời gian |
Chuyển tiếp chọn kết quả đã tính trước khi nó đến nơi lưu trữ kiến trúc. Khớp số thanh ghi đích là chưa đủ: bên tạo phải hợp lệ, thực sự ghi thanh ghi và có kết quả sẵn sàng. Khi nhiều bên tạo khớp, chọn phép toán cũ hơn gần nhất. Không chuyển tiếp ô trống hay phép toán đã bị xóa luồng.
Phép tải mà phản hồi chưa đến không thể sửa bằng chuyển tiếp dữ liệu chưa sẵn có. Dừng bên dùng đồng thời giữ mã phép toán, định danh nguồn và thẻ. Quyết định các tầng độc lập khác có được tiếp tục không.
Xung đột cấu trúc xuất hiện khi hai tầng cần một cổng bộ nhớ cùng lúc. Cần phân xử hoặc tài nguyên bổ sung ngay cả khi không phụ thuộc dữ liệu. Lệnh rẽ nhánh tạo xung đột điều khiển, cần hủy công việc trên đường sai. Phân tích mỗi phép toán chờ gì và trạng thái nào phải giữ. Dự án tổng kết của chúng ta vẫn là luồng độc lập; vượt qua nó không phải bằng chứng xử lý phụ thuộc CPU.
Tự thử
Với R1=4, I0 cộng ba và I1 nhân đôi kết quả. So sánh kết quả I1 khi đọc lưu trữ cũ và khi chuyển tiếp đúng. Nếu I0 là phép tải mà dữ liệu chưa sẵn có thì sao?
Đọc giải thích
Đọc 4 cũ cho 8; chuyển tiếp 7 cho 14. Kết quả tải chưa sẵn có đòi hỏi dừng bên dùng và giữ phép toán, thẻ của nó. Khớp đích không đủ để chuyển tiếp dữ liệu chưa hoàn thành.