Cơ chế ống lệnh (pipeline) hay còn gọi là cơ chế thực hiện xen kẽ các lệnh của chƣơng trình là một phƣơng pháp thực hiện lệnh tiên tiến, cho phép đồng thời thực hiện nhiều lệnh, giảm thời gian trung bình thực hiện mỗi lệnh và nhƣ vậy tăng đƣợc hiệu năng xử lý lệnh của CPU. Việc thực hiện lệnh đƣợc chia thành một số giai đoạn và mỗi giai đoạn đƣợc thực thi bởi một đơn vị chức năng khác nhau của CPU. Nhờ vậy CPU có thể tận dụng tối đa năng lực xử lý của các đơn vị chức năng của mình, giảm thời gian chờ cho từng đơn vị chức năng.
Hình 25 Thực hiện lệnh (a) không pipeline và (b) có pipeline
Hình 25 minh hoạ cơ chế thực hiện lệnh (a) không pipeline và (b) có pipeline. Trong đó, việc thực hiện lệnh đƣợc chia thành 5 giai đoạn:
Instruction Fetch - IF: Đọc lệnh từ bộ nhớ (hoặc cache); Instruction Decode - ID: giải mã lệnh và đọc các toán hạng;
Execute - EX: thực hiện lệnh; nếu là lệnh truy nhập bộ nhớ: tính toán địa chỉ bộ nhớ; Memory Access - MEM: Đọc/ghi bộ nhớ; no-op nếu không truy nhập bộ nhớ; no-op là
giai đoạn chờ, tiêu tốn thời gian CPU, nhƣng không thực hiện thao tác có nghĩa; Write Back - WB: Ghi kết quả vào các thanh ghi.
Có thể thấy, với cơ chế thực hiện không pipeline, tại mỗi thời điểm chỉ có một lệnh đƣợc thực hiện và chỉ có một đơn vị chức năng của CPU làm việc, các đơn vị chức năng khác trong trạng thái chờ. Ngƣợc lại, với cơ chế thực hiện có pipeline, có nhiều lệnh đồng thời đƣợc thực hiện gối nhau trong CPU và hầu hết các đơn vị chức năng của CPU liên tục tham gia vào quá trình xử lý lệnh. Số lƣợng lệnh đƣợc xử lý đồng thời đúng bằng số giai đoạn thực hiện lệnh. Với 5 giai đoạn thực hiện lệnh, để xử lý 5 lệnh, CPU cần 9 nhịp đồng hồ với cơ chế thực hiện có pipeline, trong khi CPU cần đến 25 nhịp đồng hồ để thực hiện 5 lệnh với cơ chế thực hiện không pipeline. Hình 26 minh hoạ việc các đơn vị chức năng của CPU phối hợp thực hiện lệnh trong cơ chế pipeline.
(a) Không pipeline
Chương 3- Tập lệnh máy tính
31
Việc lựa chọn số giai đoạn thực hiện lệnh sao cho phù hợp là một trong các vấn đề quan trọng của cơ chế ống lệnh. Về mặt lý thuyết, thời gian thực hiện lệnh trung bình sẽ giảm khi tăng số giai đoạn thực hiện lệnh. Cho đến hiện nay, không có câu trả lời chính xác về số giai đoạn thực hiện lệnh tối ƣu mà nó phụ thuộc nhiều vào thiết kế của CPU. Với các CPU cũ (họ Intel 80x86 và tƣơng đƣơng) số giai đoạn là 3 đến 5. Với các CPU Intel Pentium III và Pentium M, Core Duo, Core 2 Duo số giai đoạn là khoảng 10 đến 15. Riêng họ Intel Pentium IV có số giai đoạn vào khoảng 20 và cá biệt phiên bản Intel Pentium IV Prescott chia việc thực hiện lệnh thành 31 giai đoạn.
Hình 26 Thực hiện lệnh theo cơ chế pipeline với các đơn vị chức năng của CPU