Khi nào các mối nguy cấu trúc xảy ra trong các kiến ​​trúc đường ống?


8

Tôi đang tìm kiếm một số ví dụ tương đối đơn giản khi các mối nguy hiểm về cấu trúc xảy ra trong một kiến ​​trúc đường ống.

Kịch bản duy nhất tôi có thể nghĩ đến là khi bộ nhớ cần được truy cập trong các giai đoạn khác nhau của đường ống (nghĩa là giai đoạn tìm nạp lệnh ban đầu và giai đoạn đọc / ghi bộ nhớ sau).

Tôi nghĩ rằng có nhiều mối nguy hiểm về cấu trúc hơn trong các kiến ​​trúc phức tạp hơn, chẳng hạn như siêu khối. Có phải lớp này là một mối nguy hiểm cấu trúc khi một lệnh được gửi đến một đơn vị thực thi nhưng được xếp hàng vì đơn vị này đang được sử dụng?

Nếu đây là đặc thù kiến ​​trúc cao, thì chỉ cần giả sử MIPS hoặc một cái gì đó tương tự.

Câu trả lời:


6

Trong triển khai vô hướng, mối nguy cấu trúc có thể tồn tại nếu phần cứng thực thi cụ thể không được cung cấp đầy đủ. Đối với một số hoạt động (ví dụ: nhân và đặc biệt là phân chia), chi phí thực hiện toàn bộ đường ống có thể không được coi là đáng giá cho tần suất dự kiến ​​của hoạt động.

Trong một triển khai siêu khối, một mối nguy cấu trúc có thể tồn tại bởi vì không phải mọi đơn vị thực hiện đều có thể thực hiện mọi hoạt động. Ví dụ, hỗ trợ bắt đầu thực hiện bốn thao tác bộ nhớ hoặc bốn phép nhân mỗi chu kỳ sẽ tương đối tốn kém khi giới hạn ở vấn đề bốn chiều với điều kiện là có thể có một loại hoạt động khác.

Đăng ký tập tin đọc và ghi giới hạn cổng cũng có thể giới thiệu các mối nguy cấu trúc. Mặc dù có thể cung cấp đủ các cổng đọc và ghi để hỗ trợ cho trường hợp xấu nhất, nhưng chi phí của các cổng tệp đăng ký để đáp ứng trường hợp xấu nhất (ngay cả với lợi ích trong thiết kế phức tạp của việc không phải xử lý các trường hợp đặc biệt) có thể được coi là không đáng những lợi ích khi các trường hợp xấu là đủ hiếm hoặc không quan trọng. Ví dụ, một số triển khai không theo thứ tự sử dụng bắt toán hạng (lấy các toán hạng trở nên khả dụng giữa thời gian thao tác đi vào lịch trình và thời gian được lên lịch để thực hiện) và cung cấp ít cổng đọc đăng ký hơn yêu cầu cho hoạt động toàn chiều rộng (cho dù là toán hạng có sẵn trước đó được đọc khi hoạt động vào bộ lập lịch hoặc khi hoạt động được lên lịch để thực hiện).

(Ngay cả đối với việc triển khai theo thứ tự, chuyển tiếp kết quả và sử dụng các hoạt động với một toán hạng nguồn đăng ký duy nhất có thể làm cho việc hỗ trợ bốn cổng đọc đăng ký cho vấn đề hai chiều ít cần thiết hơn.)

Tương tự, ngân hàng thường được sử dụng cho bộ nhớ cache (và đã được đề xuất cho các tệp đăng ký). Ví dụ, trong trường hợp phổ biến, hai truy cập không có khả năng ánh xạ tới cùng một ngân hàng trong số 16 ngân hàng. Lưu trữ ngân hàng về cơ bản ít tốn kém hơn so với việc thêm các cổng truy cập. Khả năng xảy ra xung đột ngân hàng đại diện cho một mối nguy cơ cấu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.