最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

【知乎】 CPU 單核性能為什么難以提升?

2023-07-18 13:28 作者:小林家的垃圾王R  | 我要投稿

?CPU 單核性能為什么難以提升?


木頭龍


中央處理器 (CPU)等 3 個話題下的優(yōu)秀答主

1,332 人也贊同了該回答

0202年的今天,提升單核性能真的很難


單說x86的話,從第一代的8086發(fā)布以來,提升單核性能的方法幾乎都用過了,但除了提高頻率以外,其它方法都有其適用范圍和限制。


先說提高頻率的難度。提高頻率會碰到功耗問題。CPU是無數(shù)晶體管構成的,每個晶體管的可以視為電容,整個CPU功耗是?P=αCU2f?。其中α是工作晶體管的比例,特定的CPU運行特定的代碼,這個比例是固定的;C是整個CPU所有晶體管等效電容之和,對于特定的CPU,也是固定的;f是CPU工作頻率;U是CPU的工作電壓。


有超頻經驗的都知道,CPU頻率高了會不穩(wěn)定,需要提高電壓。這是因為電容充放電速度跟不上頻率,要充放電更快就要更高的電壓。打個比方,你要更快放滿一桶水,就要把水龍頭開更大。因此f越高,U也越高。上面的公式可以改為?P=αCβ2f3?,其中β為電壓~頻率系數(shù)。所以,提高頻率,功耗會以頻率三次方的比例提高。半導體工藝的提升,可以有降低電容C,降低β的值。結果就是同樣架構,新制程的CPU同頻率下功耗可以更低,或者同樣的功耗頻率可以更高——但每一代新工藝的研發(fā)、投產都需要解決一系列的問題,以及大量的資金投入。最近幾代CPU廠家的架構優(yōu)化,主要是讓不參與運算的晶體管關閉或者低速運行,降低α的值,但現(xiàn)在基本上已經降得差不多了,再優(yōu)化也不會有太大的效果。事實上Intel在十五年前已經有可以運行在3.8GHz的奔騰4,而十五年后的今天,經過多次制程提升后,單核睿頻最高頻率不過5.0GHz。


在頻率無法繼續(xù)大幅提高提升的現(xiàn)在,要提升CPU單核性能,也不是沒有其它手段。以IPC(Instructions Per Cycle/Clock,每時鐘周期指令數(shù),衡量CPU在相同頻率下性能的一個重要指標)來說,CPU歷史上出現(xiàn)過的比較有效的提升IPC方法有:

1、減少執(zhí)行單個指令需要的時鐘周期。限制是很多常用指令本身就只需要一個時鐘周期,不可能再少了。即使是還需要多個時鐘周期執(zhí)行的指令,最常用的傳統(tǒng)指令經過這么多年來的優(yōu)化,也基本沒有優(yōu)化空間了。


2、指令流水線。現(xiàn)代工廠流水線生產可以提高效率,CPU也一樣。指令數(shù)據從內存加載到正式執(zhí)行,要經過一系列的處理如解碼、指令分解、指令合并、數(shù)據準備等。用類似工廠流水線方式來處理,可以有效提高指令執(zhí)行效率。限制是如果出現(xiàn)跳轉指令(匯編里面的各種JMP、高級語言里的if/循環(huán)等),需要清空流水線重新加載指令。流水線級數(shù)越多,效率越高,但清空流水線導致的性能損失越大。為了降低這個問題的影響,現(xiàn)代CPU通常有分支預測機制。但分支預測既然是預測,總有預測錯誤的時候,并不能完全消除性能損失。


3、指令并發(fā)。使用多個相同或者不同的運算單元,可以同時運行,使得單個時鐘周期可以執(zhí)行更多指令。限制則是很多應用中,指令之間是有前后順序的,執(zhí)行后面的指令需要等待前面指令的運算結果。說句題外話,這是超線程技術工作的前提之一:應用不能有效利用上多個運算單元,閑置的運算單元可以用來處理另外一個線程的代碼。


4、增加新指令,這個具體分兩種情況:

SIMD(Single Instruction Multi Data,單指令多數(shù)據),x86的SSE、AVX指令都是這類指令。最新的AVX512指令,一條指令對8個64位浮點數(shù)進行相同的處理,相當于性能提升了8倍。限制在于一是應用要對這樣的指令進行優(yōu)化且優(yōu)化后的代碼無法在之前的CPU上執(zhí)行;二是僅適用于一批數(shù)據都進行相同處理的場景,即使是海量數(shù)據處理的應用,這樣的代碼占比也很少很高。例如H265視頻編碼應用x265,數(shù)據量足夠海量了,但從AVX512得益很小。此外,大部分可以對AVX512優(yōu)化的計算,用GPU處理能獲得更好的性能。


新增等效于某種常見指令組合的指令。原來多個指令執(zhí)行需要多個時鐘周期,合并后的單條指令可以在一個時鐘周期執(zhí)行完成。例如FMA指令,就是一條指令計算A×B+C,而無需分兩個時鐘周期計算。這種指令一般來說現(xiàn)有程序直接就能用上,無需優(yōu)化。限制在于只對特定代碼有效,還是以FMA為例,更普遍的普通加法、乘法運算都不能從中獲益。


5、減少等待時間。CPU比內存速度快得多,經常需要等待來自內存的指令或者數(shù)據,這個時間通常高達數(shù)十上百個時鐘周期。提高內存性能是根本方法,但一方面內存容量越來越大,需要更多時鐘周期進行尋址;另一方面內存性能總無法和CPU比?,F(xiàn)在CPU采用了幾個方法來降低指令/數(shù)據的等待時間:

多級CPU內部緩存。在數(shù)據使用前加載到CPU內更快的緩存中,最快的一級緩存等待時間是1~3個時鐘周期。限制在于對于不在緩存中的數(shù)據,還是要等待數(shù)十上百個周期——按50周期算的話,不考慮并發(fā)和指令執(zhí)行時間,緩存命中率達到98%,才能發(fā)揮一半的理論性能。然而實際情況中,大部分應用都無法達到這個命中率。


亂序執(zhí)行。就是某個指令需要的數(shù)據需要從內存加載的時候,一邊加載數(shù)據,一邊先執(zhí)行后面的指令。限制和指令并發(fā)類似,很多后續(xù)指令是需要前面指令的執(zhí)行結果才能正確執(zhí)行的。


集成主存控制器。最早的CPU是沒有單獨的內存控制器的,隨著CPU頻率越來越高,低速的內存成為CPU提升頻率的阻礙,因此CPU廠家使用了前端總線,CPU通過高速的前端總線和主板的北橋芯片連接,北橋上有內存控制器用來訪問內存。但北橋本身會帶來更高的延遲。從AMD K8開始,CPU集成內存控制器,有效降低了訪問內存的延遲。


上述這些技術,除了指令優(yōu)化外,每個首次應用的時候都能給CPU性能帶來大幅提升,然而這些基本上都是二十年前已經出現(xiàn)了,也就集成內存控制器稍微晚點,也有十七八年了。換句話說,近十多二十年來,并沒有新的可以大幅提升CPU單核性能的技術出現(xiàn)。不管是AMD還是Intel,都只能是對這些技術做小幅優(yōu)化。尤其是最常見的傳統(tǒng)代碼,幾乎是已經沒有優(yōu)化空間了,Intel最新的Icelake架構,雖然說是綜合IPC提高18%,但事實上,對于傳統(tǒng)x86/x87指令,提升幅度很小不到10%,甚至某些應用中反而是有輕微下降。


編輯于 2020-06-05 16:29


【知乎】 CPU 單核性能為什么難以提升?的評論 (共 條)

分享到微博請遵守國家法律
沿河| 平阳县| 马关县| 利津县| 文山县| 恩平市| 介休市| 勃利县| 呼图壁县| 临潭县| 葵青区| 博客| 调兵山市| 桦甸市| 鄂伦春自治旗| 云林县| 沐川县| 灌云县| 满洲里市| 宁国市| 忻城县| 枣阳市| 镇宁| 原平市| 天台县| 富顺县| 沾化县| 家居| 嘉祥县| 中方县| 彩票| 丘北县| 广昌县| 韶山市| 宜兰县| 论坛| 车险| 庆元县| 尖扎县| 柳州市| 万全县|