OOO Execution May Not Be Cost-Effective on Processors Featuring SMT
Out-Of-Order Execution May Not Be Cost-Effective on Processors Featuring Simultaneous Multithreading
摘要:
- SMT是一種有前景的方法,能夠用來在超標量流水線中實現高吞吐量
- 在一個四線程的SMT處理器中,亂序執行相對于按序執行而言,能夠帶來的性能優勢很小
- 在某些相對于關注單應用性能,更關注吞吐量的應用領域,SMT+INO可能會比亂序超標量或者亂序SMT更具有成本效益
Motivation:
- 為了提高單線程的性能,出現了更加復雜,激進的技術。硬件的設計復雜性逐漸增加,同時硬件的設計和測試周期都有可能會增加
- 更多的多線程應用出現
- 之前沒有工作比較過SMT在按序和亂序執行中所帶來的性能
論文內容:
-
按序執行模型:每個線程都有一個32個表項的指令隊列。在每個周期,隊列會選擇指令發射到功能部件。線程之間的選擇通過優先級來決定。當選擇一個線程中,指令會一直從當前隊列中按序發射出去,直到出現了資源沖突,數據相關或者是分支。然后根據優先級選擇下一個線程。每個線程都可以訪問32個整數和32個浮點寄存器。
-
亂序執行模型:在譯碼之后,指令會在保留站中等待直到操作數可用,并且功能部件空閑。每個周期,任何指令都有可能被發射。亂序執行需要重命名,因此每個線程會有64個整數和浮點數寄存器。每個RS有16個表項
-
論文實驗:比較了在按序執行和亂序執行情況下,SMT的線程個數,存儲層次和分支預測對性能的影響
-
亂序執行在單線程上相對于按序執行的性能優勢會由于SMT提供的更多的線程數而減弱。因為在按序流水線中,由于更多的線程并行執行,將會出現更多非相關指令可使用。而在亂序執行中,由于執行某些可能會被取消的指令所占用的硬件資源,會影響從其他線程中執行有效指令所需要使用的資源
-
當線程數變多時,分支預測錯誤所帶來的影響將會減弱
- 因為有更多來自不同線程的有效指令可用,推測執行將會變少
- 當分支預測錯誤時,可以使用其它線程的指令繼續填充流水線
-
當線程數增多時,存儲層次對性能的影響更加重要。因為一個cache miss,會使得所有線程都受到影響,因為它占用了帶寬,同時延遲了所有其它線程的之后的cache miss
論文結論:
- 當時鐘頻率相同,流水線級數相同時,單線程情況下,按序相對于亂序的性能差距46%,在四線程SMT的情況下,性能差距15%。(一般情況下,按序流水線的頻率會更高事實上)
- 多線程的情況下,分支預測錯誤的影響會減小(收到影響的指令會變少),但是會增加對存儲系統的壓力,會產生更多的cache miss和memory traffic
總結
以上是生活随笔為你收集整理的OOO Execution May Not Be Cost-Effective on Processors Featuring SMT的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: m分别使用BP神经网络和GRNN网络进行
- 下一篇: MySQL MVCC机制解析