Thực thi ngoài thứ tự
Thực thi ngoài thứ tự cho phép bộ xử lý thực hiện các lệnh ngay khi toán hạng của chúng sẵn sàng thay vì tuân thủ nghiêm ngặt thứ tự chương trình, sử dụng việc đổi tên thanh ghi và bộ đệm để phơi bày tính song song trong khi vẫn tạo ra kết quả theo thứ tự.
Definition
Thực thi ngoài thứ tự là một kỹ thuật vi kiến trúc trong đó bộ xử lý tự động sắp xếp lại việc thực thi lệnh để chạy các lệnh độc lập bất cứ khi nào toán hạng của chúng có sẵn, đồng thời sử dụng bộ đệm và đổi tên để duy trì vẻ ngoài hoàn thành tuần tự, theo thứ tự.
Scope
Chủ đề này bao gồm lập lịch động: các trạm dự trữ, đổi tên thanh ghi để loại bỏ các phụ thuộc giả, bộ đệm sắp xếp lại để đảm bảo cam kết theo thứ tự, và phục hồi thực thi suy đoán. Nó được xây dựng trực tiếp dựa trên thuật toán của Tomasulo. Nó không bao gồm việc dự đoán hướng rẽ nhánh (dự đoán rẽ nhánh) và khái niệm rộng hơn về mức độ song song tồn tại (tính song song cấp lệnh), mà tập trung vào chính cơ chế sắp xếp lại.
Core questions
- Làm thế nào một bộ xử lý có thể thực thi các lệnh ngoài thứ tự chương trình nhưng vẫn tạo ra kết quả chính xác, theo thứ tự?
- Việc đổi tên thanh ghi loại bỏ các phụ thuộc ghi sau đọc và ghi sau ghi như thế nào?
- Các trạm dự trữ và bộ đệm sắp xếp lại đóng góp gì?
- Làm thế nào các ngoại lệ và dự đoán sai được phục hồi chính xác trong một lõi thực thi ngoài thứ tự?
Key concepts
- lập lịch động
- trạm dự trữ
- đổi tên thanh ghi
- bus dữ liệu chung
- bộ đệm sắp xếp lại
- cam kết theo thứ tự
- ngoại lệ chính xác
- phục hồi thực thi suy đoán
Key theories
- Thuật toán của Tomasulo
- Sơ đồ của Tomasulo sử dụng các trạm dự trữ và một bus dữ liệu chung để đổi tên các thanh ghi và gửi các lệnh đến các đơn vị chức năng khi toán hạng của chúng có sẵn, cho phép thực thi ngoài thứ tự chỉ tuân thủ các phụ thuộc dữ liệu thực sự.
- Các ngoại lệ chính xác thông qua cam kết theo thứ tự
- Một bộ đệm sắp xếp lại giữ các kết quả của các lệnh ngoài thứ tự và cam kết chúng theo thứ tự chương trình, để các ngoại lệ và dự đoán sai có thể được xử lý chính xác như thể việc thực thi đã hoàn toàn tuần tự.
Mechanisms
Các lệnh đã được giải mã được đổi tên thành các thanh ghi vật lý và đặt vào các trạm dự trữ hoặc hàng đợi phát lệnh, nơi chúng chờ toán hạng được truyền trên bus kết quả. Khi sẵn sàng, chúng thực thi trên các đơn vị chức năng có sẵn theo bất kỳ thứ tự nào. Một bộ đệm sắp xếp lại theo dõi thứ tự chương trình gốc và cam kết kết quả tuần tự, loại bỏ các kết quả suy đoán khi có dự đoán sai hoặc ngoại lệ để trạng thái kiến trúc luôn chính xác.
Clinical relevance
Thực thi ngoài thứ tự là động cơ cốt lõi của các CPU hiệu năng cao, che giấu độ trễ bộ nhớ và thực thi bằng cách tìm kiếm công việc độc lập để thực hiện. Nó cũng có ý nghĩa về bảo mật: vì công việc suy đoán, ngoài thứ tự có thể truy cập dữ liệu tạm thời trước khi bị hủy bỏ, nó đã tạo điều kiện cho các lớp tấn công kênh bên vi kiến trúc Spectre và Meltdown.
History
Tomasulo đã giới thiệu lập lịch động trong IBM System/360 Model 91 vào năm 1967. Sự kết hợp với bộ đệm sắp xếp lại cho các ngoại lệ chính xác, được phát triển vào những năm 1980, đã làm cho việc thực thi ngoài thứ tự trở nên khả thi cho các bộ xử lý đa năng, và nó trở thành tiêu chuẩn trong các thiết kế hiệu năng cao từ giữa những năm 1990 trở đi.
Debates
- Hiệu suất so với độ phức tạp, năng lượng và bảo mật
- Thực thi ngoài thứ tự mang lại hiệu suất đơn luồng mạnh mẽ nhưng với chi phí đáng kể về độ phức tạp phần cứng và năng lượng, và sự suy đoán của nó đã được chứng minh là có thể bị khai thác; điều này thúc đẩy tranh luận về mức độ tích cực suy đoán so với việc ưu tiên các thiết kế đơn giản hơn, hiệu quả hơn hoặc an toàn hơn.
Key figures
- Robert Tomasulo
- Yale Patt
- James E. Smith
- John L. Hennessy
Related topics
Seminal works
- tomasulo1967
- hennessy2019
Frequently asked questions
- Nếu các lệnh thực thi ngoài thứ tự, làm thế nào chương trình vẫn đúng?
- Bộ xử lý chỉ sắp xếp lại việc thực thi, không phải kết quả. Việc đổi tên thanh ghi đảm bảo nó tuân thủ các phụ thuộc dữ liệu thực sự, và một bộ đệm sắp xếp lại cam kết kết quả theo thứ tự chương trình gốc, do đó trạng thái kiến trúc hiển thị chính xác là những gì việc thực thi tuần tự sẽ tạo ra.
- Đổi tên thanh ghi là gì?
- Đổi tên thanh ghi ánh xạ các thanh ghi kiến trúc được đặt tên trong các lệnh vào một nhóm lớn hơn các thanh ghi vật lý. Điều này loại bỏ các phụ thuộc giả (tên) phát sinh từ việc tái sử dụng tên thanh ghi, cho phép nhiều lệnh độc lập thực thi song song mà không xung đột về lưu trữ thanh ghi.