Song song cấp lệnh
Song song cấp lệnh (ILP) là tiềm năng thực thi đồng thời nhiều lệnh từ một chương trình duy nhất, được khai thác bởi các bộ xử lý siêu vô hướng (superscalar) và VLIW (very long instruction word) có khả năng phát hành và hoàn thành một số lệnh mỗi chu kỳ.
Definition
Song song cấp lệnh là mức độ mà các lệnh của một chương trình duy nhất có thể được thực thi song song; các bộ xử lý khai thác nó bằng cách phát hành, thực thi và hoàn thành nhiều hơn một lệnh mỗi chu kỳ xung nhịp, tùy thuộc vào các phụ thuộc dữ liệu và điều khiển.
Scope
Chủ đề này bao gồm tính song song có sẵn trong một luồng lệnh và cách phần cứng và trình biên dịch trích xuất nó: phát hành siêu vô hướng nhiều lệnh mỗi chu kỳ, thiết kế từ lệnh rất dài (VLIW), phân tích phụ thuộc, đổi tên thanh ghi và suy đoán. Nó cũng bao gồm các giới hạn về ILP khả dụng. Nó không bao gồm tính song song cấp luồng và cấp dữ liệu trên các lõi và làn (kiến trúc song song và đa lõi) và đường ống phát hành đơn cơ bản (đường ống và các nguy cơ).
Core questions
- Có bao nhiêu tính song song vốn có sẵn giữa các lệnh của một chương trình điển hình?
- Các bộ xử lý siêu vô hướng quyết định lệnh nào có thể phát hành cùng nhau như thế nào?
- Các thiết kế VLIW chuyển gánh nặng tìm kiếm tính song song cho trình biên dịch như thế nào?
- Những phụ thuộc và nguy cơ nào giới hạn mức độ ILP có thể thực hiện được?
Key concepts
- phát hành siêu vô hướng
- từ lệnh rất dài (VLIW)
- phụ thuộc dữ liệu và tên
- đổi tên thanh ghi
- nhiều đơn vị chức năng
- suy đoán
- giới hạn ILP
- lệnh mỗi chu kỳ (IPC)
Key theories
- Lập lịch lệnh động
- Phần cứng có thể khám phá và khai thác ILP trong thời gian chạy bằng cách theo dõi các phụ thuộc và lập lịch các lệnh sẵn sàng cho nhiều đơn vị chức năng; thuật toán của Tomasulo, với các trạm đặt chỗ và đổi tên thanh ghi, là cơ chế chuẩn cho phép phát hành ngoài thứ tự, song song.
Mechanisms
Các bộ xử lý siêu vô hướng tìm nạp và giải mã một số lệnh mỗi chu kỳ, kiểm tra các phụ thuộc của chúng, đổi tên thanh ghi để loại bỏ các phụ thuộc sai, và phát hành các lệnh độc lập đến nhiều đơn vị chức năng. Các thiết kế VLIW thay vào đó dựa vào trình biên dịch để đóng gói các thao tác độc lập vào các từ lệnh rộng. Các phụ thuộc dữ liệu thực và luồng điều khiển đặt ra giới hạn trên cho tính song song có thể thực hiện được, mà suy đoán và các cửa sổ lệnh lớn hơn cố gắng mở rộng.
Clinical relevance
Các kỹ thuật ILP đã thúc đẩy sự tăng trưởng hiệu suất đơn luồng trong nhiều thập kỷ và vẫn là trung tâm của các lõi CPU hiệu suất cao. Sự giảm dần lợi nhuận của chúng — khi các giới hạn về tính song song và độ phức tạp khả dụng đã đạt đến — là một lý do chính khiến ngành công nghiệp chuyển sang đa lõi và tính song song rõ ràng để mở rộng quy mô hơn nữa.
History
Nhiều đơn vị chức năng và lập lịch động xuất hiện trong CDC 6600 và IBM System/360 Model 91 vào những năm 1960. Các thiết kế siêu vô hướng trở nên phổ biến vào những năm 1990, và các kiến trúc VLIW như Intel Itanium theo đuổi tính song song do trình biên dịch điều khiển. Các nghiên cứu về giới hạn của ILP vào đầu những năm 1990 đã làm rõ lý do tại sao tính song song trong một luồng duy nhất bị giới hạn.
Debates
- ILP do phần cứng điều khiển so với ILP do trình biên dịch điều khiển
- Phần cứng siêu vô hướng ngoài thứ tự tìm kiếm tính song song một cách động với chi phí phức tạp và năng lượng, trong khi VLIW dựa vào trình biên dịch để lập lịch tính song song một cách tĩnh; kinh nghiệm cho thấy các phương pháp tiếp cận động mạnh mẽ hơn trên các khối lượng công việc, trong khi các phương pháp tiếp cận tĩnh vẫn hấp dẫn đối với các thiết kế có thể dự đoán được, công suất thấp.
Key figures
- Robert Tomasulo
- Yale Patt
- John L. Hennessy
- Joseph A. Fisher
- James E. Smith
Related topics
Seminal works
- hennessy2019
- tomasulo1967
Frequently asked questions
- Sự khác biệt giữa siêu vô hướng và VLIW là gì?
- Cả hai đều thực thi nhiều thao tác mỗi chu kỳ. Bộ xử lý siêu vô hướng quyết định trong phần cứng, trong thời gian chạy, lệnh nào có thể phát hành cùng nhau; bộ xử lý VLIW dựa vào trình biên dịch để nhóm các thao tác độc lập thành các lệnh rộng trước thời gian, đơn giản hóa phần cứng nhưng đòi hỏi nhiều hơn từ trình biên dịch.
- Tại sao có giới hạn đối với tính song song cấp lệnh?
- Các chương trình thực tế có các phụ thuộc dữ liệu thực và các nhánh thường xuyên hạn chế số lượng lệnh có thể chạy song song. Vượt quá một cửa sổ nhất định, tính song song có thể đạt được sẽ bão hòa, do đó việc trích xuất thêm ILP mang lại lợi nhuận giảm dần so với độ phức tạp phần cứng và năng lượng tăng thêm.