🌱 Kỹ thuật Pipeline - "Ống dẫn"
Đây là một kỹ thuật làm cho các giai đoạn khác nhau của nhiều lệnh được thi hành cùng một lúc.
Tức là bắt đầu thực hiện một lệnh khác trong quá trình thực hiện một lệnh. Điều này làm cho rút ngắn thời gian thực thi lệnh của bộ xử lý.
🌱 Kỹ thuật tuần tự
Các giai đoạn thực hiện một lệnh là:
- Lấy lệnh (IF: Instruction Fetch),
- Giải mã (ID: Instruction Decode),
- Thực thi (EX: Execute),
- Truy cập bộ nhớ (MEM: Memory Access),
- Lưu trữ kết quả (RS: Result Storing).
Giả sử mỗi giai đoạn thực hiện trong 1 chu kỳ xung nhịp thì theo cơ chế tuần tự thông thường - tức là thực hiện từng giai đoạn và từng lệnh một:
👉 Mỗi lệnh hết 5 chu kỳ xung nhịp.
👉 5 lệnh phải mất 25 chu kỳ xung nhịp.
🌱 Pipeline giúp tăng tốc độ so với tuần tự
Với kỹ thuật tuần tự, các lệnh giống như đi trong 1 đường ống, phải nối đuôi nhau, vì vậy, đi rất chậm.
Còn pipeline là đi trong nhiều đường ống thông nhau, tức là trong quá trình thực hiện 1 lệnh, 1 lệnh khác có thể bắt đầu mà không cần phải chờ lệnh trước thực hiện xong.
👉 Tốc độ thực thi lệnh của pipeline nhanh hơn khá nhiều so với tuần tự. <Các chip vi xử lý của ARM đều dùng pipeline>
👉 Với ví dụ thực hiện 5 lệnh ở trên:
- Tuần tự mất 25 chu kỳ cho 5 lệnh.
- Pipeline chỉ mất 9 chu kỳ cho 5 lệnh
🌱 Pipeline trong ARM
ARM Processor là bộ xử lý RISC điển hình sử dụng kỹ thuật Pipeline để tăng tốc độ thực thi lệnh.
Đối với ARM 7
ARM 7 sử dụng 3-stage pipeline, tức là có thể hoàn thành một process trong 3 chu kỳ máy.
Đối với ARM 9
Pipeline trong ARM 9 gần giống ARM 7 nhưng là 5-stage pipeline.
- Fetch – lấy lệnh từ bộ nhớ.
- Decode – Giải mã các lệnh đã được lấy trong chu kỳ đầu tiên.
- Execute – ALU thực hiện lệnh đã được giải mã ở giai đoạn trước.
- Memory (LS1) – Tải/Lưu trữ dữ liệu được chỉ định bởi lệnh Load hoặc Store.
- Write (LS2) – Trích xuất (số không hoặc dấu) mở rộng dữ liệu được tải bằng lệnh load byte hoặc half-word.
Với 5-stage pipeline, ARM 9 sẽ tăng hiệu suất khoảng 10-13% so với ARM 7, và tần số clock của Core từ đó cũng có thể tăng lên.
Đối với ARM 10
Pipeline trong ARM 10 là 6-stage pipeline.
Ví dụ 6-stage pipeline
Tương tự như ARM 9 nhưng thêm "issue" stage nhằm mục đích kiểm tra xem lệnh đã sẵn sàng để decode hay chưa.
🌱 Một số ràng buộc của Pipeline
Do kỹ thuật này mang lại tốc độ nhanh hơn, nên nó cũng yêu cầu phức tạp hơn về mặt thiết kế.
- Cần có một mạch điện để thực thi mỗi giai đoạn của lệnh (ở đây là 5)
- Phải có nhiều thanh ghi khác nhau để xử lý các tác vụ đọc/ghi
- Cần có nhiều thanh ghi lệnh để lưu giữ lệnh cho mỗi giai đoạn
- Một khó khăn nữa là nếu kết quả của lệnh trước được dùng cho lệnh sau thì sao???
- ....