引用:
作者cheny
同樣的工作,用平行處理的方式,因為可以共用電晶體,所以電晶體的變化次數會比序列處理的次數低,產生的熱量也可能比較少。就好像一輛車子同時載兩人到兩個目的地,因為路線可能重複,會比一次載一個所走的路線短,耗油量會比較少。
|
你還是活在七嘴八舌區教化人心就好了,來這胡說八道就不必了。最好平行處理能共用電晶體啦。
回到正題,HT其實有兩個大問題,一個不嚴重,一個很嚴重但還好Intel有改良。
比較不嚴重的是HT無法判定具有IDLE指令的程式,例如UD或SETI@HOME這類的程式擺在有HT的電腦中使用,UD這類程式會站掉大部分的資源,因為HT會笨笨的讓這個程式和其他程式平行一起處理,偏偏UD又很佔CPU資源,結果所有程式效能都被影響而降低很多,包括UD,有INTEL 含HT技術CPU的人可以試試看。
我舉個例,壓DivX邊開UD,在AMD系統幾乎沒影響,但Intel HT系統下,兩個程式都只剩下約40-50%的效能,違背UD這種程式的本意。
比較嚴重,Intel也承認的問題,是在P4E出來之前,其實含HT的Intel處理器,是有問題的,因為Prescott增加了HT專用的暫存器,以及對記憶體控管的改良(以往的P4 3.06G、P4C處理器啟動HT超執行緒,由兩顆模擬出來的邏輯CPU,各自執行兩個執行緒(Thread),如果這兩個執行緒的存取變數、號誌(Semaphore),恰好不是擊中在同一個64KB之內的記憶體的位置(64KB Address Aliasing),一旦發生了則會造成記憶體存取相互衝突,須等待排程微核心協調的情形(因為畢竟只有一顆實體的CPU、一組L1、L2快取控制電路);多出來的時間延遲,會遠低於關掉HT功能的單一實體CPU執行兩個Thread的執行表現。)
最早英特爾是藉由編譯器以及程式最佳化手冊的說明,盡可能要求軟體將各執行緒的變數集中在相同的64KB記憶體區域內(但絕大部分程式想當然爾,都沒有這樣最佳化 ),Prescott核心,則把執行緒的記憶體對齊要求提升到4MB(4M Address Aliasing),以往的存取變數、號誌集中要求的限制已經大幅度解除。