2
下面是由James Antonakos撰寫的「英特爾微處理器系列」的無序管道示例。故障紫外線管道
考慮這個指令序列。爲這個例子製作分配給每條指令的時鐘週期數。
1: MOV AL, 2 ; 1 cycle
2: MOV DL, [SI] ; 3 cycles
3: MUL DL ; 2 cycles
4: INC SI ; 1 cycle
5: SUB BX, 4 ; 1 cycle
6: ADD AX, BX ; 1 cycle
7: MOV CX, 2000 ; 1 cycle
調度指令爲了兩條管線之間:(我知道的這個基本概念。)
Clock Cycle Pipeline # 1 Pipeline # 2
1 MOV AL, 5 MOV DL, [SI]
2 idle busy
3 idle busy
4 MUL DL INC SI
5 busy SUB BX, 4
6 ADD AX, BX MOV CX, 2000
調度指令無序兩條管線之間:
Clock Cycle Pipeline # 1 Pipeline # 2
1 MOV AL, 5 MOV DL, [SI]
2 INC SI SUB BX, 4
3 MOV CX, 2000 busy
4 MUL DL idle
5 ADD AX, BX idle
有人可以向我解釋如何處理亂序管道?謝謝!
有一個單元分析即將發生的代碼,並計算出各個指令之間的依賴關係。如果(比如說)一個內存負載出現,會暫停管道一段時間,那麼CPU會嘗試在加載操作之前/之後調度一些其他獨立指令,以便它們可以在加載等待內存系統響應。正在操作相同的指令,但以較少的週期運行,因爲您在等待其他事情時浪費週期。 – 2014-09-02 16:54:32
我明白了。另一個問題。當我們被要求繪製紫外線管道時,NOP被用作佔位符。流水線中的繁忙和閒置之間有什麼區別? – ellekaie 2014-09-02 17:18:50
忙意味着流水線仍在完成指令(因爲某些指令需要超過1個週期)。閒置意味着管道無所事事。 – jliv902 2014-09-02 19:27:46