目錄
學習重點
- 並行等級
- 指令流水原理
- 指令二級流水
- 指令六級流水
- 影響流水線性能的因素
- 結構相關:資源沖突
- 數據相關:指令重排序
- 控制相關:轉移指令
- 流水線能指標:
- 吞吐率
- 加速比
- 效率
- 流水線多發技術:
- 超標量技術
- 超流水技術
- 超長指令字
- 流水線結構:
- 指令流水結構
- 運算流水結構
- 鎖存器
1.提高機器速度
1.1 提高訪存速度
高速芯片;Cache;多體並行
1.2 提高IO和主機之間的傳送速度
中斷, DMA, 通道, IO處理機, 多總線
1.3 提高運算器速度
高速芯片; 改進算法; 快速進位鏈
1.4 提高整機處理能力
高速器件;改進系統結構,開發系統並行性
2.系統的並行性
1.並行的概念:
- 並發:兩個或兩個以上事件在同一事件段發生
- 同時(並行):兩個或兩個以上事件在同一時刻發生,時間上相互重疊
2.並行性的等級
- 過程級(程序、進程):粗粒度 ,軟件實現
- 指令級(指令之間,內部):細粒度,硬件實現
3.指令流水原理
3.1 串行指令與二級流水
指令的串行執行:
指令的二級流水:
3.2 影響指令流水效率加倍的因素
-
執行時間 > 取指時間
通過指令部件緩沖區解決:
-
條件轉移指令 對指令流水的影響
- 必須等上條指令執行結束才能確定下條指令的地址,等待時間
- 分支預測法:猜測法
3.3 指令六級流水
- FI:取指令
- DI:指令譯碼
- CO:形成操作數
- FO:取操作數
- EI:執行
- WO:結果寫回(寄存器或內存)
4.影響指令流水線性能的因素
4.1 結構相關
不同指令爭用同一功能部件產生資源沖突:FI,FO,WO
對寄存器,運算器的訪問也會發生沖突
解決:
- 停頓:加入氣泡,往后移
- 分立緩存:指令存儲器和數據存儲器分開,half結構
- 指令預取:取指部件利用空閑時間將指令取到緩沖隊列
4.2 數據相關
不同指令因重疊操作,可能改變操作數的 讀/寫 訪問順序
- 寫后讀:(RAW)
- 讀后寫:(WAR)
- 寫后寫:(WAW)
解決方法:
- 后推法:推后指令的讀或寫,等到另一個指令的操作執行完畢再執行
- 旁路技術(前向通道):前一個指令執行完后,不寫回主存或寄存器,直接送入第二個指令
4.3 控制相關
條件轉移指令引起:
示例:第三條指令是轉移指令
- 指令3 執行(EI)時,直接轉移到指令15
- 導致中間 4~15 的指令全都不執行,造成損失
5.流水線性能(指標)
5.1 吞吐率
單位時間內 流水線 所完成指令 或 輸出結果 的數量
m*Δt
:第一條流水線執行完畢時間- 之后每個時間段都有一條指令執行完畢
- 示意圖見5.3
5.2 加速比
阿姆達爾定律
加速比=未用指令流水時間/使用了指令流水時間
示意圖見5.3
5.3 效率
流水線各功能段的利用率
6.流水線多發技術
6.1 超標量技術
- 每個時鍾周期內可並發多條獨立指令,配置多個功能部件
- 不能調整指令的執行順序:通過編譯優化技術,把可並行執行的指令搭配起來
示意圖:
6.2 超流水技術
一個時鍾周期內再分段(3段)
一個時鍾周期內一個功能部件使用多次(3次)
不能調整指令的執行順序:靠編譯程序解決優化問題
每個時鍾之間都有鎖存器:
- 保存前一階段結果
- 為下一階段提供操作數據和信號
6.4 超長指令字技術
- 由編譯程序 將多條能並行操作的指令組合成一條
- 具有多個操作碼字段的 超長指令字 (幾百位)
7.流水線結構
7.1 指令流水
完成一條指令分為6段,每段需要一個時鍾周期(不同CPU不同)
每段之間需要加上鎖存器,理想情況下提高6倍速度
7.2 運算流水
完成 浮點加減運算,大致可分為對階,尾數求和,規格化三個階段