計算機組成原理之機器:存儲器之高速緩沖存儲器
筆記來源:哈爾濱工業(yè)大學計算機組成原理(哈工大劉宏偉)
Chapter3:存儲器之高速緩沖存儲器
3.1 概述
3.1.1 為什么用cache?
角度一:I/O設備向主存請求的級別高于CPU訪存,這就出現(xiàn)了CPU等待I/O設備訪存的現(xiàn)象,致使CPU空等一段時間,降低CPU工作效率。為避免CPU與I/O設備爭搶訪存,可在CPU與主存之間加一級緩存,這樣主存可將CPU要取的信息提前送至緩存,一旦主存在與I/O設備交換時,CPU可直接從緩存中讀取所需信息,不必空等而影響效率?!浴队嬎銠C組成原理》唐朔飛
角度二:主存速度提高始終跟不上CPU的發(fā)展。希望由高速緩存cache來解決主存與CPU速度不匹配的問題—引自《計算機組成原理》唐朔飛
局部性原理是指CPU訪問存儲器時,無論是存取指令還是存取數(shù)據(jù),所訪問的存儲單元都趨于聚集在一個較小的連續(xù)區(qū)域中。
時間局部性:程序中的某條指令一旦執(zhí)行,不久后該指令可能再次執(zhí)行
空間局部性:一旦程序訪問了某個存儲單元,不久后其附近的存儲單元也將被訪問
3.1.2 cache的工作原理
主存和緩存的編址
為了與cache映射,將主存與緩存都分成若干塊,每塊內(nèi)又包含若干個字,并使它們的塊大小相同(即塊內(nèi)的字數(shù)相同)
命中與未命中
任何時刻都有一些主存塊處在緩存塊中。
CPU欲讀取主存某字時,有兩種可能:
命中:一種是所需要的字已在緩存中,即可直接訪問Cache(CPU與Cache之間通常一次傳送一個字);
未命中:另一種是所需的字不在Cache內(nèi),此時需將該字所在的主存整個字塊一次調(diào)入Cache中(Cache與
主存之間是字塊傳送)。如果主存塊已調(diào)入緩存塊,則稱該主存塊與緩存塊建立了對應關(guān)系。
—引自《計算機組成原理》唐朔飛
cache的命中率
我們都希望CPU對主存的訪問盡可能都轉(zhuǎn)化為對緩存的訪問,也就是說我們希望命中率越高越好
cache-主存系統(tǒng)的效率
3.1.3 cache的基本結(jié)構(gòu)
cache和主存之間是以塊為單位進行數(shù)據(jù)傳送的,cache和主存的塊內(nèi)地址一致,再看塊號,根據(jù)映射規(guī)則,檢查是否命中(CPU所訪問的數(shù)據(jù)在cache中是否存在),如果命中,則形成cache的塊號。如果未命中,則檢查當前cache是否仍可裝入塊,若可裝入,則將要訪問的塊裝入cache,若沒有空間裝入,則將某一塊與要訪問的塊進行替換,也就是將要訪問的塊從內(nèi)存中調(diào)入,把cache中暫時不訪問的塊換下
主存與cache映射就是主存中的塊應該放在cache的哪個位置
主存與cache變換就是主存的地址轉(zhuǎn)換為cache的地址,在cache中找到相對應的主存塊
主存與cache之間有直接通路,它完成了兩者之間的信息交換
3.1.4 cache的讀寫操作
寫操作可能會造成主存和cache數(shù)據(jù)的不一致,例如只對主存寫而沒有對cache寫
3.1.5 cache的改進
(1)增加cache級數(shù)
CPU內(nèi)部裝cache、CPU外部裝cache
(2)統(tǒng)一緩存和分立緩存
統(tǒng)一緩存:把指令和數(shù)據(jù)統(tǒng)一放在一個cache中
分立緩存:將指令和數(shù)據(jù)分別放在不同cache中
3.2 cache-主存的地址映射
3.2.1 直接映射(固定的映射關(guān)系)
主存當中任意一個給定的塊只能裝載到某一個指定的cache的塊當中
每個區(qū)的第0塊放到cache中字塊0中,每個區(qū)的第1塊放到cache中字塊1中以此類推
主存地址分為兩部分:低c位指cache的字塊地址、高t位指主存字塊標記,它被記錄在建立了對應關(guān)系的緩存的“標記”位中。
當緩存接到CPU送來的主存地址后,只需根據(jù)中間c位字段找到cache字塊(如c位字段為00……01找到cache字塊1),然后根據(jù)字塊的“標記”是否與主存地址的高t位相符來判斷。
每個緩存塊可以和若干個主存塊對應
每個主存塊只能和一個緩存塊對應
3.2.2 全相聯(lián)映射(靈活性大的映射關(guān)系)
主存的任何一個字塊可放到任何一個cache字塊中
3.2.3 組相聯(lián)映射(上述兩種映射的折中)
主存中每個區(qū)的第0塊可以放到cache中第0組兩個字塊的任意一個文章來源:http://www.zghlxwxcb.cn/news/detail-838090.html
3.3 替換算法
當cache中已滿且CPU要訪問的數(shù)據(jù)不在其中,這時就需要將cache中某個塊與主存中CPU要訪問的塊進行替換
先進先出(FIFO)算法
最先被放入cache中的塊被替換
近期最少使用(LRU)算法
在cache中選擇最?時間沒有被CPU訪問的塊進行置
換,也就是說,該算法假設已經(jīng)很久沒有使用的塊很有可能在未來較長的?段時間內(nèi)仍然不會被使?文章來源地址http://www.zghlxwxcb.cn/news/detail-838090.html
到了這里,關(guān)于計算機組成原理之機器:存儲器之高速緩沖存儲器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!