《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.11 高速缓存的性能...
本節(jié)書摘來自異步社區(qū)《現(xiàn)代體系結(jié)構(gòu)上的UNIX系統(tǒng):內(nèi)核程序員的對稱多處理和緩存技術(shù)(修訂版)》一書中的第2章,第2.11節(jié),作者:【美】Curt Schimmel著,更多章節(jié)內(nèi)容可以訪問云棲社區(qū)“異步社區(qū)”公眾號查看
2.11 高速緩存的性能
雖然全面討論高速緩存的性能超出了本書的范圍,但還是可以做以下一些觀察。首先,高速緩存的性能不僅取決于高速緩存的設(shè)計(jì),而且取決于應(yīng)用程序的引用模式。因此,必須謹(jǐn)慎地通過測試基準(zhǔn)程序來判定高速緩存的性能以及一般化測試結(jié)果。雖然很容易編寫一個獲得100%命中率的基準(zhǔn)程序,但是把它們運(yùn)用到實(shí)際應(yīng)用中的時候,這樣的結(jié)果是毫無意義的。例如,下面的程序會獲得100%的高速緩存命中率:
while (1);循環(huán)執(zhí)行一次之后,所有的指令引用都會在高速緩存中命中。相反,下面的代碼片段給一個數(shù)組中的每個元素都乘以常數(shù)c,因而會得到相當(dāng)?shù)偷母咚倬彺婷新?#xff08;假定數(shù)組要比高速緩存大)。
for ( j=0; j < YMAX; j++)for ( i=0; i < XMAX; i++)matrix[i][j] *= c;因?yàn)樵贑語言中,數(shù)組是按行來保存的,在使用高速緩存的時候,如果數(shù)組中一行的大小超過了高速緩存行的長度(假定一開始數(shù)組沒有被高速緩存),那么每次執(zhí)行最里面的語句就會出現(xiàn)一次缺失。這樣的情形尤其糟糕,因?yàn)樾泻荛L的高速緩存會讀取大量從來都不會用到的數(shù)據(jù)。互換兩層for循環(huán)會因?yàn)榭臻g局部性而提高性能。即使每個元素只讀取一次,高速緩存每次都要讀取整整一行的事實(shí)也意味著引用連續(xù)的元素可能會產(chǎn)生一次命中。例外的情況是那些行很小的高速緩存,像MIPS R2000/R3000,它們的每個高速緩存行只有4字節(jié)。如果數(shù)組matrix的每個元素也是4字節(jié),那么就沒有空間局部性的好處了。
即使高速緩存的性能是依賴于應(yīng)用的,在直覺上還是可以有下面的結(jié)論(雖然對于所有應(yīng)用來說,它們并不一定都對,但是對于包括典型UNIX命令在內(nèi)的許多應(yīng)用來說,它們都是正確的)。首先,寫回策略比寫直通策略更可取,因?yàn)槌绦蛞话銜驗(yàn)闀r間局部性而多次修改變量。即使它們沒有多次修改變量,寫回高速緩存機(jī)制也往往不會增加任何性能開銷,因?yàn)閷懼蓖ㄒ恍谢蛘咴谝院筇鎿Q行的時候再寫回都要花費(fèi)一個存儲器周期。為每一行維護(hù)一個修改位并處理寫回雖然增加了復(fù)雜性,但這樣做是值得的。在最差的情況下,沒有時間或者空間局部性可言,有寫分配能力的寫回策略只會多讀一次高速緩存行。完全沒有局部性的情形是非常少見的,所以它們不會對性能造成明顯的影響。
接下來,增加組的大小一般也會有幫助。對于小規(guī)模的高速緩存(1 KB或者更小)來說這樣的做法特別有用,因?yàn)榧幢愣鄠€地址產(chǎn)生了相同的索引,它也能利用更多的高速緩存。對于非常大的高速緩存(1 MB或者更多)來說,增加組的大小就沒那么重要了,因?yàn)殡S著行數(shù)的增加,出現(xiàn)一段數(shù)據(jù)替換現(xiàn)有的高速緩存數(shù)據(jù)的可能性也逐漸減小。
由于空間局部性,增加高速緩存行的大小一般也會對高速緩存性能有幫助。高速緩存行太長的缺點(diǎn)是在缺失處理期間讀取數(shù)據(jù)需要開銷。在小規(guī)模高速緩存的組織結(jié)構(gòu)中找不到很長的高速緩存行,因?yàn)檫@就意味著高速緩存中的行數(shù)會更少。因此出現(xiàn)替換的頻率就更高了。
高速緩存的性能也會受到操作系統(tǒng)的影響。不同的高速緩存組織結(jié)構(gòu)需要不同情況的沖洗機(jī)制。有若干種技術(shù)可以用來減少必須發(fā)生的沖洗量。這很重要,因?yàn)轭l繁的沖洗很花時間,并且減少了有用的數(shù)據(jù)被高速緩存的時間。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的《现代体系结构上的UNIX系统:内核程序员的对称多处理和缓存技术(修订版)》——2.11 高速缓存的性能...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《数据分析变革:大数据时代精准决策之道》
- 下一篇: pac (PAC(Proxy Auto