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