Pipelining: Kiến trúc, Ưu điểm & Nhược điểm

Hãy Thử Công Cụ CủA Chúng Tôi Để LoạI Bỏ Các VấN Đề





Tăng tốc độ thực thi chương trình do đó làm tăng tốc độ của bộ xử lý. Có nhiều cách được phát minh, cả triển khai phần cứng và kiến ​​trúc phần mềm, để tăng tốc độ thực thi. Người ta quan sát thấy rằng bằng cách thực hiện các lệnh đồng thời, thời gian cần thiết để thực hiện có thể được giảm bớt. Khái niệm Song song trong lập trình đã được đề xuất. Theo đó, nhiều hơn một lệnh có thể được thực hiện trên mỗi chu kỳ đồng hồ. Khái niệm này có thể được thực hành bởi một lập trình viên thông qua các kỹ thuật khác nhau như Pipelining, Nhiều đơn vị thực thi và nhiều lõi . Trong số tất cả các phương pháp song song này, pipelining được thực hành phổ biến nhất. Vậy làm thế nào để một lệnh có thể được thực thi trong phương thức pipelining? Làm thế nào để nó tăng tốc độ thực thi?

Pipelining là gì?

Để nắm bắt được khái niệm về pipelining, chúng ta hãy nhìn vào cấp độ gốc của chương trình được thực thi như thế nào. Lệnh là gói thực thi nhỏ nhất của một chương trình. Mỗi lệnh chứa một hoặc nhiều thao tác. Các bộ xử lý vô hướng đơn giản thực hiện một hoặc nhiều lệnh trên mỗi chu kỳ đồng hồ, với mỗi lệnh chỉ chứa một thao tác. Các hướng dẫn được thực hiện như một chuỗi các giai đoạn, để tạo ra kết quả mong đợi. Trình tự này được đưa ra dưới đây




Trình tự thực hiện lệnh

Trình tự thực hiện lệnh

  • IF: Tìm nạp lệnh vào thanh ghi lệnh.
  • ID: Giải mã lệnh, giải mã lệnh cho opcode.
  • AG: Trình tạo địa chỉ, tạo địa chỉ.
  • DF: Tìm nạp dữ liệu, tìm nạp các toán hạng vào thanh ghi dữ liệu.
  • EX: Thực thi, thực hiện hoạt động được chỉ định.
  • WB: Viết lại, viết lại kết quả cho sổ đăng ký.

Không phải tất cả các hướng dẫn đều yêu cầu tất cả các bước trên nhưng hầu hết đều có. Các bước này sử dụng các chức năng phần cứng khác nhau. Trong đường ống, các giai đoạn khác nhau này được thực hiện đồng thời. Trong đường ống, các giai đoạn này được coi là độc lập giữa các hoạt động khác nhau và có thể được chồng lên nhau. Do đó, nhiều hoạt động có thể được thực hiện đồng thời với mỗi hoạt động ở trong giai đoạn độc lập của riêng nó.



Hướng dẫn Pipelining

Hãy để chúng tôi xem cách hướng dẫn được xử lý trong pipelining. Điều này có thể dễ dàng hiểu được bằng sơ đồ dưới đây.

Hướng dẫn Pipelining

Hướng dẫn Pipelining

Giả sử rằng các hướng dẫn là độc lập. Trong bộ xử lý đường ống đơn giản, tại một thời điểm nhất định, chỉ có một hoạt động trong mỗi pha. Pha ban đầu là pha IF. Vì vậy, ở chu kỳ đồng hồ đầu tiên, một hoạt động được tìm nạp. Khi xung đồng hồ tiếp theo đến, hoạt động đầu tiên đi vào pha ID để lại pha IF trống. Bây giờ, giai đoạn trống này được phân bổ cho hoạt động tiếp theo. Vì vậy, trong xung clock thứ hai hoạt động đầu tiên là trong pha ID và hoạt động thứ hai là trong giai đoạn IF.

Đối với chu kỳ thứ ba, hoạt động đầu tiên sẽ ở giai đoạn AG, hoạt động thứ hai sẽ ở giai đoạn ID và hoạt động thứ ba sẽ ở giai đoạn IF. Bằng cách này, các lệnh được thực hiện đồng thời và sau sáu chu kỳ, bộ xử lý sẽ xuất ra một lệnh được thực thi hoàn chỉnh trên mỗi chu kỳ đồng hồ.


Lệnh này có được thực thi tuần tự không, ban đầu lệnh đầu tiên phải trải qua tất cả các giai đoạn sau đó lệnh tiếp theo sẽ được tìm nạp? Vì vậy, để thực hiện mỗi lệnh, bộ xử lý sẽ yêu cầu sáu chu kỳ đồng hồ. Nhưng trong một bộ xử lý pipelined vì việc thực hiện các lệnh diễn ra đồng thời, chỉ lệnh ban đầu yêu cầu sáu chu kỳ và tất cả các lệnh còn lại được thực hiện như một chu kỳ mỗi chu kỳ, do đó giảm thời gian thực thi và tăng tốc độ của bộ xử lý.

Kiến trúc đường ống

Song song có thể đạt được với các kỹ thuật Phần cứng, Trình biên dịch và phần mềm. Để khai thác khái niệm pipelining trong kiến trúc máy tính nhiều bộ xử lý được kết nối với nhau và được hoạt động đồng thời. Trong kiến ​​trúc bộ xử lý pipelined, có các đơn vị xử lý riêng biệt được cung cấp cho số nguyên và lệnh dấu phẩy động. Trong khi trong kiến ​​trúc tuần tự, một đơn vị chức năng duy nhất được cung cấp.

Bộ xử lý đường ống

Bộ xử lý đường ống

Trong đường ống tĩnh, bộ xử lý phải chuyển lệnh qua tất cả các giai đoạn của đường ống bất kể yêu cầu của lệnh. Trong bộ xử lý đường ống động, một lệnh có thể bỏ qua các giai đoạn tùy thuộc vào yêu cầu của nó nhưng phải di chuyển theo thứ tự tuần tự. Trong một bộ xử lý đường ống động phức tạp, lệnh có thể bỏ qua các pha cũng như chọn các pha không theo thứ tự.

Pipelining trong bộ xử lý RISC

Phổ biến nhất Kiến trúc RISC Bộ xử lý ARM đi theo đường ống 3 giai đoạn và 5 giai đoạn. Trong pipelining 3 giai đoạn, các giai đoạn là: Tìm nạp, Giải mã và Thực thi. Pipelining này có độ trễ 3 chu kỳ, vì một lệnh riêng lẻ cần 3 chu kỳ đồng hồ để hoàn thành.

ARM 3 giai đoạn Pipelining

ARM 3 giai đoạn Pipelining

Để thực hiện đúng kiến ​​trúc phần cứng cũng nên được nâng cấp. Phần cứng cho đường ống 3 giai đoạn bao gồm một ngân hàng thanh ghi, ALU, Bộ dịch chuyển thùng, Bộ tạo địa chỉ, một bộ tăng, Bộ giải mã lệnh và các thanh ghi dữ liệu.

Đường dẫn dữ liệu Pipelining 3 giai đoạn ARM

Đường dẫn dữ liệu Pipelining 3 giai đoạn ARM

Trong 5 giai đoạn tổng hợp các giai đoạn là: Tìm nạp, Giải mã, Thực thi, Bộ đệm / dữ liệu và Ghi lại.

Mối nguy đường ống

Trong một chương trình máy tính điển hình bên cạnh các lệnh đơn giản còn có các lệnh rẽ nhánh, các thao tác ngắt, các lệnh đọc và ghi. Pipelining không phù hợp với tất cả các loại hướng dẫn. Khi một số hướng dẫn được thực hiện trong pipelining, chúng có thể làm ngưng trệ đường ống hoặc xả nó hoàn toàn. Loại sự cố này gây ra trong quá trình đường ống được gọi là Mối nguy đường ống.

Trong hầu hết các chương trình máy tính, kết quả từ một lệnh được sử dụng như một toán hạng của lệnh kia. Khi các lệnh như vậy được thực thi trong pipelining, sự phá vỡ xảy ra do kết quả của lệnh đầu tiên không khả dụng khi lệnh hai bắt đầu thu các toán hạng. Vì vậy, lệnh hai phải dừng cho đến khi lệnh một được thực thi và kết quả được tạo ra. Loại nguy hiểm này được gọi là nguy cơ đường ống đọc – sau-ghi.

Đọc sau khi viết Mối nguy hiểm trong đường ống

Đọc sau khi viết Mối nguy hiểm trong đường ống

Việc thực hiện các lệnh rẽ nhánh cũng gây ra nguy cơ nối ống. Các lệnh rẽ nhánh trong khi thực thi trong pipelining ảnh hưởng đến các giai đoạn tìm nạp của các hướng dẫn tiếp theo.

Hành vi nhánh của Pipelined

Hành vi nhánh của Pipelined

Ưu điểm của Pipelining

  • Thông lượng lệnh tăng lên.
  • Việc tăng số lượng các giai đoạn đường ống làm tăng số lượng các lệnh được thực thi đồng thời.
  • ALU nhanh hơn có thể được thiết kế khi sử dụng pipelining.
  • Pipelined CPU của hoạt động ở tần số xung nhịp cao hơn so với RAM.
  • Pipelining làm tăng hiệu suất tổng thể của CPU.

Nhược điểm của Pipelining

  • Việc thiết kế bộ xử lý pipelined rất phức tạp.
  • Độ trễ của lệnh tăng lên trong bộ xử lý pipelined.
  • Thông lượng của một bộ xử lý pipelined rất khó dự đoán.
  • Đường ống càng dài, vấn đề nguy hiểm cho các hướng dẫn nhánh càng tồi tệ hơn.

Pipelining mang lại lợi ích cho tất cả các hướng dẫn tuân theo trình tự các bước tương tự để thực hiện. Các bộ xử lý có các lệnh phức tạp trong đó mọi lệnh hoạt động khác với lệnh khác rất khó để chuyển hóa. Các nhà chế biến có các thiết bị hợp lý với 3 hoặc 5 giai đoạn của đường ống vì khi độ sâu của đường ống tăng lên thì các mối nguy liên quan đến nó sẽ tăng lên. Kể tên một số bộ xử lý pipelined với giai đoạn đường ống của chúng?