Tóm lại, vâng. Điều đó sẽ khiến bộ xử lý bị đình trệ trong khi nó chờ lệnh đó hoàn thành và dữ liệu sẽ có sẵn trước khi có thể chạy lệnh tiếp theo. Không có cách nào để dễ dàng dự đoán dữ liệu nào sẽ đến và vì vậy inc
hướng dẫn đơn giản là không thể chạy cho đến khi mov
hoàn tất.
Đó có thể không phải là một vấn đề lớn mặc dù bộ xử lý có thể có khả năng lên lịch các hướng dẫn không phụ thuộc vào kết quả của điều đó mov
hướng dẫn để giữ cho lõi hoạt động.
Điều này được gọi là Thực hiện không theo thứ tự và nó có thể giúp giảm thiểu chi phí của các quầy xử lý khi chờ các hướng dẫn dài như những hướng dẫn này.
Làm rõ thêm ...
Tôi nên đọc ví dụ của bạn tốt hơn, tôi không tin rằng mov [rcx], rax
hướng dẫn sẽ gây ra một gian hàng trên inc rax
hướng dẫn, nhưng sẽ gây ra bất cứ điều gì phụ thuộc vào rcx
để gian hàng
Trang bạn đã liên kết liệt kê thông lượng qua lại, theo đó có thể ban hành một hướng dẫn khác thuộc loại đó. Cụ thể tôi sẽ giả sử trong khoảng thời gian đó bất kì hướng dẫn với các phụ thuộc tương tự có thể được ban hành.
Vì vậy, tôi cho rằng thanh ghi RAX là một trong hai đổi tên khi lệnh được gửi để thực thi hoặc được mã hóa trong u-op cho lệnh. Lệnh tiếp theo có thể hoạt động trên thanh ghi đó miễn là nó không phụ thuộc vào kết quả của thao tác trước đó được lưu trữ trong mà đăng ký.
Vì vậy, trong câu hỏi của bạn ví dụ những gì tôi tin Nên xảy ra là CPU thực sự có hai lệnh mà phụ thuộc duy nhất là giá trị hiện tại của thanh ghi RAX và giá trị trong nó chỉ được sửa đổi bởi lệnh thứ hai. Hướng dẫn đầu tiên nên được gửi đi và thực hiện gần như ngay lập tức có thể bắt đầu vào lần thứ hai ( inc
) chỉ dẫn.