上一章LZ給各位展示了一下hello程序的簡單執(zhí)行過程,可以看出在這一過程當(dāng)中,系統(tǒng)在數(shù)據(jù)的傳輸上花費了大量的時間。硬件開發(fā)商為了減少這種數(shù)據(jù)傳輸?shù)臅r間成本,采用一種高速緩存的技術(shù)去減少這種時間成本。
高速緩存被置放于處理器當(dāng)中,與處理器中的寄存器文件直接進(jìn)行數(shù)據(jù)交換,這樣大大減少了數(shù)據(jù)傳輸?shù)臅r間成本,使得程序的運行速度可以得到數(shù)倍的提升。而作為一個程序猿,如果可以適當(dāng)?shù)睦酶咚倬彺嫒ゴ娣乓恍┏绦蜻\行過程中可能會經(jīng)常使用的數(shù)據(jù),可以將程序的運行速度提高數(shù)倍甚至數(shù)個數(shù)量級。
由此就可見高速緩存的重要性,下圖展示了硬件分布中,高速緩存的位置。
存儲設(shè)備的金字塔
當(dāng)今的計算機系統(tǒng)當(dāng)中,基本上全部都置入了各種各樣的存儲設(shè)備,這些存儲設(shè)備呈明顯的層次結(jié)構(gòu),它們的特點是容量越大,速度越慢。因此如果按照容量和速度將它們以圖示的方式呈現(xiàn)的話,則看起來就像是一個金字塔,如下所示。(非常感謝群里的猿友【夕惕若厲無咎】提供的英文電子版,這下LZ可以省去很多畫圖的功夫了)
不過這個圖是英文版的,LZ稍微解釋下,有些特別明顯的LZ就不解釋了,如果有哪位猿友實在不明白,可以到LZ的群里提問。
左邊的意思是更小更快更貴的存儲設(shè)備,包括寄存器以及L1-L3的高速緩存,以及更大更慢更便宜的存儲設(shè)備,包括主存、本地磁盤以及遠(yuǎn)程存儲設(shè)備。通常意義下,我們將上一層的存儲設(shè)備作為當(dāng)前存儲設(shè)備的高速緩存,比如L1的高速緩存是寄存器,L2的高速緩存是L1,以此類推。