處理器對程序性能的影響

處理器可以進行指令級的並行,及多條指令同時進行運算,且是亂序的,即指令執行的順序不一定與機器代碼的順序一致。主要由指令控制單元與執行單元構成,前者是對指令進行譯碼,並將指令傳到執行單元與按順序通過隊列傳到退役單元,在執行單元,指令的運算式亂序的,可同時處理大量指令,但不同數據間的數據相關限制了執行順序,這種限制形成了關鍵路徑。我們可以根據這個特徵來提高程序的表現。
循環展開,可以在每次循環中,增加迭代的數量。
提高並行性也是提高程序性能的較好途徑,它通過將運算分解位兩個互不影響的運算組合從而減少主要路徑上的運算。重新結合交換也是通過減少主要路徑上的運算來提高程序性能,但這兩個方法都要考慮到浮點運算並不支持結合律。
另外還存在一些限制因素,比如寄存器溢出,並行計算所需寄存器超出處理器所能提供的時候,會將數據保存到內存中,大大降低了程序性能。分支預測錯誤及其懲罰,雖然對有規律的模式與長期的趨勢具有分辨能力,但對與分支不具規律時處理器使用投機猜測前往哪個分支,若猜測錯誤就會清楚所有已經計算的數據,重新在需求的分支上執行指令,這對處理器性能影響較大,所以最好用條件控制轉移,可以提高程序表現。
存儲器也有數據相關,load指令會讀取store中的表項,若有與load指令相匹配的地址,則load指令需等store指令完成才能進行,這會使程序性能降低。所以要考慮到儲存的數據相關

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章