(一)有序處理器
早期的處理器為有序處理器(In-order processors),有序處理器處理指令通常有以下幾步:
- 指令獲取
- 如果指令的輸入操作對象(input operands)可用(例如已經在寄存器中了),則將此指令分發到適當的功能單元中。如果一個或者多個操作對象不可用(通常是由于需要從內存中獲取),則處理器會等待直到它們可用
- 指令被適當的功能單元執行
- 功能單元將結果寫回寄存器堆(Register file,一個 CPU 中的一組寄存器)
(一)亂序處理器
亂序處理器(Out-of-order processors)處理指令通常有以下幾步:
- 指令獲取
- 指令被分發到指令隊列
- 指令在指令隊列中等待,直到輸入操作對象可用(一旦輸入操作對象可用,指令就可以離開隊列,即便更早的指令未被執行)
- 指令被分配到適當的功能單元并執行
- 執行結果被放入隊列(而不立即寫入寄存器堆)
- 只有所有更早請求執行的指令的執行結果被寫入寄存器堆后,指令執行的結果才被寫入寄存器堆(執行結果重排序,讓執行看起來是有序的)