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