組成原理(十三):指令流水


學習重點

  1. 並行等級
  2. 指令流水原理
    • 指令二級流水
    • 指令六級流水
  3. 影響流水線性能的因素
    • 結構相關:資源沖突
    • 數據相關:指令重排序
    • 控制相關:轉移指令
  4. 流水線能指標:
    • 吞吐率
    • 加速比
    • 效率
  5. 流水線多發技術:
    • 超標量技術
    • 超流水技術
    • 超長指令字
  6. 流水線結構:
    • 指令流水結構
    • 運算流水結構
    • 鎖存器

1.提高機器速度

1.1 提高訪存速度

高速芯片;Cache;多體並行

1.2 提高IO和主機之間的傳送速度

中斷, DMA, 通道, IO處理機, 多總線

1.3 提高運算器速度

高速芯片; 改進算法; 快速進位鏈

1.4 提高整機處理能力

高速器件;改進系統結構,開發系統並行性


2.系統的並行性

1.並行的概念:

  • 並發:兩個或兩個以上事件在同一事件段發生
  • 同時(並行):兩個或兩個以上事件在同一時刻發生,時間上相互重疊

2.並行性的等級

  • 過程級(程序、進程):粗粒度 ,軟件實現
  • 指令級(指令之間,內部):細粒度,硬件實現

3.指令流水原理

3.1 串行指令與二級流水

指令的串行執行

指令的二級流水

3.2 影響指令流水效率加倍的因素

  1. 執行時間 > 取指時間
    通過指令部件緩沖區解決:

  2. 條件轉移指令 對指令流水的影響

    • 必須等上條指令執行結束才能確定下條指令的地址,等待時間
    • 分支預測法:猜測法

3.3 指令六級流水

  • FI:取指令
  • DI:指令譯碼
  • CO:形成操作數
  • FO:取操作數
  • EI:執行
  • WO:結果寫回(寄存器或內存)

4.影響指令流水線性能的因素

4.1 結構相關

不同指令爭用同一功能部件產生資源沖突:FI,FO,WO

對寄存器,運算器的訪問也會發生沖突

解決:

  • 停頓:加入氣泡,往后移
  • 分立緩存:指令存儲器和數據存儲器分開,half結構
  • 指令預取:取指部件利用空閑時間將指令取到緩沖隊列

4.2 數據相關

不同指令因重疊操作,可能改變操作數的 讀/寫 訪問順序

  1. 寫后讀:(RAW)
  2. 讀后寫:(WAR)
  3. 寫后寫:(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 超長指令字技術

  1. 由編譯程序 將多條能並行操作的指令組合成一條
  2. 具有多個操作碼字段超長指令字 (幾百位)

7.流水線結構

7.1 指令流水

完成一條指令分為6段,每段需要一個時鍾周期(不同CPU不同)

每段之間需要加上鎖存器,理想情況下提高6倍速度

7.2 運算流水

完成 浮點加減運算,大致可分為對階,尾數求和,規格化三個階段



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM