這種情況隨著計(jì)算機(jī)構(gòu)造的固化和各子系統(tǒng)的優(yōu)化慢慢地發(fā)生了改變。其中一些組件的性能開始落后,成為系統(tǒng)的瓶頸。特別是大容量存儲(chǔ)和內(nèi)存子系統(tǒng),由于代價(jià)的原因,它們的發(fā)展嚴(yán)重滯后了。
大容量存儲(chǔ)的性能問題往往靠軟件來改善: 操作系統(tǒng)將常用(且最有可能被用)的數(shù)據(jù)放在主存中,因?yàn)楹笳叩乃俣纫焐蠋讉€(gè)數(shù)量級(jí)?;蛘邔⒕彺婕尤氪鎯?chǔ)設(shè)備中,這樣就可以在不修改操作系統(tǒng)的前提下提升性能。{然而,為了在使用緩存時(shí)保證數(shù)據(jù)的完整性,仍然要作出一些修改。}這些內(nèi)容不在本文的談?wù)摲秶畠?nèi),就不作贅述了。
而解決內(nèi)存的瓶頸更為困難,它與大容量存儲(chǔ)不同,幾乎每種方案都需要對硬件作出修改。目前,這些變更主要有以下這些方式:
RAM的硬件設(shè)計(jì)(速度與并發(fā)度)
內(nèi)存控制器的設(shè)計(jì)
CPU緩存
設(shè)備的直接內(nèi)存訪問(DMA)
本文主要關(guān)心的是CPU緩存和內(nèi)存控制器的設(shè)計(jì)。在討論這些主題的過程中,我們還會(huì)研究DMA。不過,我們首先會(huì)從當(dāng)今商用硬件的設(shè)計(jì)談起。這有助于我們理解目前在使用內(nèi)存子系統(tǒng)時(shí)可能遇到的問題和限制。我們還會(huì)詳細(xì)介紹RAM的分類,說明為什么會(huì)存在這么多不同類型的內(nèi)存。
本文不會(huì)包括所有內(nèi)容,也不會(huì)包括最終性質(zhì)的內(nèi)容。我們的討論范圍僅止于商用硬件,而且只限于其中的一小部分。另外,本文中的許多論題,我們只會(huì)點(diǎn)到為止,以達(dá)到本文目標(biāo)為標(biāo)準(zhǔn)。對于這些論題,大家可以閱讀其它文檔,獲得更詳細(xì)的說明。
當(dāng)本文提到操作系統(tǒng)特定的細(xì)節(jié)和解決方案時(shí),針對的都是Linux。無論何時(shí)都不會(huì)包含別的操作系統(tǒng)的任何信息,作者無意討論其他操作系統(tǒng)的情況。如果讀者認(rèn)為他/她不得不使用別的操作系統(tǒng),那么必須去要求供應(yīng)商提供其操作系統(tǒng)類似于本文的文檔。
在開始之前最后的一點(diǎn)說明,本文包含大量出現(xiàn)的術(shù)語“經(jīng)常”和別的類似的限定詞。這里討論的技術(shù)在現(xiàn)實(shí)中存在于很多不同的實(shí)現(xiàn),所以本文只闡述使用得最廣泛最主流的版本。在闡述中很少有地方能用到絕對的限定詞。