Là một phương pháp đơn giản, hãy xem xét phân chia xử lý lệnh thành hai
giai đoạn: lấy hướng dẫn và thực hiện các hướng dẫn. Có lần trong khi thực hiện
các hướng dẫn một khi bộ nhớ chính là không được truy cập.
Lần này có thể được
sử dụng để lấy các lệnh tiếp theo trong song song với việc thực hiện của một hiện tại.
Hình 12.9a mô tả cách tiếp cận này. Các đường ống dẫn có hai giai đoạn độc lập. Các
giai đoạn đầu tiên tìm nạp lệnh và bộ đệm nó. Khi giai đoạn thứ hai là miễn phí, đầu tiên
giai đoạn chuyển cho nó hướng dẫn đệm. Trong khi giai đoạn thứ hai là thực hiện các hướng dẫn,
các giai đoạn đầu tiên có lợi thế của bất kỳ chu kỳ bộ nhớ không sử dụng để lấy và
đệm các hướng dẫn tiếp theo. Điều này được gọi là hướng dẫn prefetch hoặc lấy chồng chéo lên nhau. Lưu ý
rằng phương pháp này, trong đó bao gồm hướng dẫn đệm, đòi hỏi phải đăng ký nhiều hơn. Trong
nói chung, pipelining đòi hỏi phải đăng ký để lưu trữ dữ liệu giữa các giai đoạn.
Nó nên được rõ ràng rằng quá trình này sẽ tăng tốc độ thực hiện chỉ thị. Nếu
lấy và thực hiện các giai đoạn là của thời gian bằng nhau, thời gian hướng dẫn chu kỳ sẽ được
giảm đi một nửa. Tuy nhiên, nếu chúng ta nhìn kỹ hơn vào đường ống này (hình 12.9b), chúng ta sẽ thấy
rằng tăng gấp đôi này tỷ lệ thực hiện là khó xảy ra vì hai lý do:
1. Thời gian thực hiện thường sẽ lâu hơn thời gian lấy. Thực hiện sẽ
liên quan đến việc đọc và toán hạng lưu trữ và hiệu suất của một số hoạt động.
Vì vậy, lấy giai đoạn có thể phải chờ một thời gian trước khi nó có thể trống rỗng của nó
đệm.
2. Một lệnh rẽ nhánh có điều kiện làm cho địa chỉ của lệnh kế tiếp để
được lấy không rõ. Như vậy, lấy sân khấu phải chờ đợi cho đến khi nó nhận được tới
địa chỉ hướng dẫn từ thi sân khấu. Sau đó thực hiện giai đoạn có thể phải
chờ đợi trong khi các lệnh tiếp theo là lấy.
đang được dịch, vui lòng đợi..
