我們的CPU,一般都被叫做超大規模集成電路(Very-Large-Scale Integration,VLSI)。這些電路,實際上都是一個個晶體管組合而成的。CPU在計算,其實就是讓晶體管里面的“開關”不斷地去“打開”和“關閉”,來組合完成各種運算和功能。
想要計算的快,一方面,我們要在CPU里,同樣的面積里面,多放一些晶體管,也就是增加密度;另一方面,我們要讓晶體管“打開”和“關閉”得更快一點,也就是提升主頻。而這兩者,都會增加功耗,帶來耗電和散熱的問題。
在CPU里面,能夠放下的晶體管數量和晶體管的“開關”頻率也都是有限的。一個CPU的功率,可以用這樣一個公式來表示:
功耗 = 1/2 * 負載電容 * 電壓的平方 * 開關頻率 * 晶體管數量
因此可以通過提升“制程”,(即縮短晶體管,增加晶體管數量)方面的優化和降低電壓來降低功耗。
並行優化,阿姆達爾定律
這個定律說的是,對於一個程序進行優化之后,處理器並行運算之后效率提升的情況。具體可以用這樣一個公式來表示:
優化后的執行時間 = 受優化影響的執行時間 / 加速倍數 + 不受影響的執行時間。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我們可以看到,無論簡單地通過提升主頻,還是增加更多的CPU核心數量,通過並行來提升性能,都會遇到相應的瓶頸。僅僅簡單地通過“堆硬件”的方式,在今天已經不能很好地滿足我們對於程序性能的期望了。於是,工程師們需要從其他方面開始下功夫了。
在計算機組成層面,還有這樣幾個原則性的性能提升方法:
1.加速大概率事件。
2.通過流水線提高性能。
3.通過預測提高性能。