自編教材分享:第一章—程序性能優(yōu)化的意義(二)



本次主要從存儲結(jié)構(gòu)的發(fā)展、編譯器能力的局限、編程模型的局限三個方面分享程序性能優(yōu)化的意義。
存儲結(jié)構(gòu)的發(fā)展
在過去的幾十年中,處理器性能以每年50%至100%的速度平穩(wěn)增長,而存儲器的性能卻只以每年7%左右的速度增長,可以斷言的是未來處理器與存儲器之間的速度差異將會越來越大。一般進行乘法運算大約需要6個時鐘周期,除法運算大約是20個時鐘周期。一次內(nèi)存訪問就需要200個時鐘周期,計算與訪存之間的延遲非常大。所以存儲系統(tǒng)仍將是影響整個計算系統(tǒng)性能的一個關(guān)鍵瓶頸。

現(xiàn)代處理器采用了多層次的、容量和性能不同的緩存,其中上一級緩存容量比下一級緩存小,但是延遲更小、帶寬更大。如圖展示了越靠近 CPU 的存儲器速度越快,容量越小,每比特價格越高;而越遠離CPU的存儲器速度越慢,容量越大,每比特價格越低。如何讓處理器的訪問盡可能地發(fā)生在距處理器較近、訪問時間較短的存儲層次中是減少處理器訪問延遲的關(guān)鍵。

距離處理器不同遠近的存儲層次的性能指標統(tǒng)計。

編譯器能力的局限
編譯器作為人機語言交互的橋梁,其功能是將程序員編寫的高級語言程序翻譯成面向目標機器的可執(zhí)行程序。一個編譯器的好壞取決于他的優(yōu)化能力,它需要根據(jù)指令集的特點將代碼盡可能的優(yōu)化,以得到更快的執(zhí)行速度
并行化編譯系統(tǒng)已成為高性能計算機系統(tǒng)中重要的組成部分,該編譯系統(tǒng)通過自動檢測程序中潛在并行性,將原始的串行語法成分自動地轉(zhuǎn)變?yōu)榈葍r的并行語句,極大地減少了程序員改寫并行程序的工作量。

影響編譯器效果的原因
影響編譯器效果的原因概括為如下:
編譯器采用的程序靜態(tài)分析技術(shù)自身有能力的局限。
編譯策略的保守性原則制約了編譯優(yōu)化的能力。
編譯器要在通用性和高效性之間保持微妙的平衡。
編譯器采用何種優(yōu)化策略還要考慮用戶對編譯時間的容忍度。
體系結(jié)構(gòu)與計算器件的快速升級與迭代對編譯器充滿挑戰(zhàn)。
編程模型的局限
并行編程模型通過抽象并行計算機體系結(jié)構(gòu),提供給程序員一種方便與算法結(jié)合的編程邏輯,常見的編程模型如CUDA、OpenACC、OpenCL、OpenMP、MPI等。但是當前的并行編程模型也有其局限性,如OpenMP主要針對于共享存儲結(jié)構(gòu),MPI主要針對與分布存儲結(jié)構(gòu)。
為了減輕程序員的編碼負擔,編程模型傾向于隱藏底層設備的細節(jié),但也意味著可能會限制了程序與底層硬件的深度結(jié)合,而使程序失去了獲得更高性能的機會,表現(xiàn)在以下三個方面:
編程模型無法充分表達程序的理想性能。
編程模型無法充分發(fā)揮硬件的計算性能。
編程模型對硬件支持的局限性也會引起程序性能的降低。
參考資料
[1]李明亮.面向多核和眾核的跨架構(gòu)程序移植關(guān)鍵技術(shù)研究[D].戰(zhàn)略支援部隊信息工程大學,2021.DOl:10.27188/d.cnki.gzjxu.2021.000074.
[2]鄧豹,孫靖國.國產(chǎn)嵌入式處理器發(fā)展綜述[J].航空計算技術(shù),2021,51(01):120-124.
課程書籍


