基本信息
背景知識
基本原理
CMOS邏輯電路緩衝器任何程式或數據要為CPU所使用,必須先放到主存儲器(記憶體)中,即CPU只與主存交換數據,所以主存的速度在很大程度上決定了系統的運行速度。程式在運行期間,在一個較短的時間間隔內,由程式產生的地址往往集中在存儲器的一個很小範圍的地址空間內。指令地址本來就是連續分布的,再加上循環程式段和子程式段要多次重複執行,因此對這些地址中的內容的訪問就自然的具有時間集中分布的傾向。數據分布的集中傾向不如程式這么明顯,但對數組的存儲和訪問以及工作單元的選擇可以使存儲器地址相對地集中。這種對局部範圍的存儲器地址頻繁訪問,而對此範圍外的地址訪問甚少的現象被稱為程式訪問的局部化(Locality of Reference)性質。由此性質可知,在這個局部範圍內被訪問的信息集合隨時間的變化是很緩慢的,如果把在一段時間內一定地址範圍被頻繁訪問的信息集合成批地從主存中讀到一個能高速存取的小容量存儲器中存放起來,供程式在這段時間內隨時採用而減少或不再去訪問速度較慢的主存,就可以加快程式的運行速度。這個介於CPU和主存之間的高速小容量存儲器就稱之為高速緩衝存儲器,簡稱Cache。不難看出,程式訪問的局部化性質是Cache得以實現的原理基礎。同理,構造磁碟高速緩衝存儲器(簡稱磁碟Cache),也將提高系統的整體運行速度。CPU一般設有一級快取(L1 Cache)和二級快取(L2 Cache)。一級快取是由CPU製造商直接做在CPU內部的,其速度極快,但容量較小,一般只有十幾K。PⅡ以前的PC一般都是將二級快取做在主機板上,並且可以人為升級,其容量從256KB到1MB不等,而PⅡ CPU則採用了全新的封裝方式,把CPU核心與二級快取一起封裝在一隻金屬盒內,並且不可以升級。二級快取一般比一級快取大一個數量級以上,另外,在CPU中,已經出現了帶有三級快取的情況。Cache的基本操作有讀和寫,其衡量指標為命中率,即在有Cache高速緩衝存儲器:
CMOS邏輯電路緩衝器上面介紹的基本都是常說的記憶體的方方面面,下面我們來認識一下高速緩衝存儲器,即Cache。我們知道,任何程式或數據要為CPU所使用,必須先放到主存儲器(記憶體)中,即CPU只與主存交換數據,所以主存的速度在很大程度上決定了系統的運行速度。程式在運行期間,在一個較短的時間間隔內,由程式產生的地址往往集中在存儲器的一個很小範圍的地址空間內。指令地址本來就是連續分布的,再加上循環程式段和子程式段要多次重複執行,因此對這些地址中的內容的訪問就自然的具有時間集中分布的傾向。數據分布的集中傾向不如程式這么明顯,但對數組的存儲和訪問以及工作單元的選擇可以使存儲器地址相對地集中。這種對局部範圍的存儲器地址頻繁訪問,而對此範圍外的地址訪問甚少的現象被稱為程式訪問的局部化(Locality of Reference)性質。由此性質可知,在這個局部範圍內被訪問的信息集合隨時間的變化是很緩慢的,如果把在一段時間內一定地址範圍被頻繁訪問的信息集合成批地從主的系統中,CPU訪問數據時,在Cache中能直接找到的機率,它是Cache的一個重要指標,與Cache的大小、替換算法、程式特性等因素有關。增加Cache後,CPU訪問主存的速度是可以預算的,64KB的Cache可以緩衝4MB的主存,且命中率都在90%以上。以主頻為100MHz的CPU(時鐘周期約為10ns)、20ns的Cache、70ns的RAM、命中率為90%計算,CPU訪問主存的周期為:有Cache時,20×0.9+70×0.1=34ns;無Cache時,70×1=70ns。由此可見,加了Cache後,CPU訪問主存的速度大大提高了,但有一點需注意,加Cache只是加快了CPU訪問主存的速度,而CPU訪問主存只是計算機整個操作的一部分,所以增加Cache對系統整體速度只能提高10~20%左右。