映射方式有全相聯(lián)方式、直接方式和組相聯(lián)方式三種。直接映射可以將一個主存塊存儲到唯一的一個Cache行;全相聯(lián)映射可以將一個主存塊存儲到任意一個Cache行;組相聯(lián)映射可以將一個主存塊存儲到唯一的一個Cache組中任意一個行。
本教程操作環(huán)境:windows10系統(tǒng)、Dell G3電腦。
cache是一種高速緩沖寄存器,是為解決CPU和主存之間速度不匹配而采用的一項(xiàng)重要技術(shù)。
CPU對存儲器的訪問,通常是一次讀寫一個字單元。當(dāng)CPU訪Cache不命中時,需將存儲在主存中的字單元連同其后若干個字一同調(diào)入Cache中,之所以這樣做,是為了使其后的訪存能在Cache中命中。
因此,主存和Cache之間一次交換的數(shù)據(jù)單位應(yīng)該是一個數(shù)據(jù)塊。數(shù)據(jù)塊的大小是固定的,由若干個字組成,且主存和Cache的數(shù)據(jù)塊大小是相同的。
從Cache-主存層次實(shí)現(xiàn)的目標(biāo)看,一方面既要使CPU的訪存速度接近于訪Cache的速度,另一方面為用戶程序提供的運(yùn)行空間應(yīng)保持為主存容量大小的存儲空間。
在采用Cache-主存層次的系統(tǒng)中,Cache對用戶程序而言是透明的,也就是說,用戶程序可以不需要知道Cache的存在。因此,CPU每次訪存時,依然和未使用Cache的情況一樣,給出的是一個主存地址。但在Cache-主存層次中,CPU首先訪問的是Cache,并不是主存。
為此,需要一種機(jī)制將CPU的訪主存地址轉(zhuǎn)換成訪Cache地址。而主存地址與Cache地址之間的轉(zhuǎn)換是與主存塊與Cache塊之間的映射關(guān)系緊密聯(lián)系的,也就是說,當(dāng)CPU訪Cache未命中時,需要將欲訪問的字所在主存中的塊調(diào)入Cache中,按什么樣的策略調(diào)入,直接影響到主存地址與Cache地址的對應(yīng)關(guān)系,這也就是本小節(jié)要解決的主存與Cache的地址映射問題。
主存與cache的地址映射方式有全相聯(lián)方式、直接方式和組相聯(lián)方式三種。
-
直接映射(directmapping)
將一個主存塊存儲到唯一的一個Cache行。
-
全相聯(lián)映射(fullyassociative mapping)
可以將一個主存塊存儲到任意一個Cache行。
-
組相聯(lián)映射(setassociative mapping)
可以將一個主存塊存儲到唯一的一個Cache組中任意一個行。
直接映射
多對一的映射關(guān)系,但一個主存塊只能拷貝到cache的一個特定行位置上去。
cache的行號i和主存的塊號j有如下函數(shù)關(guān)系:i=j mod m ?。╩為cache中的總行數(shù))
優(yōu)點(diǎn):硬件簡單,容易實(shí)現(xiàn)
缺點(diǎn):命中率低, Cache的存儲空間利用率低
全相聯(lián)映射
主存的一個塊直接拷貝到cache中的任意一行上
優(yōu)點(diǎn):命中率較高,Cache的存儲空間利用率高
缺點(diǎn):線路復(fù)雜,成本高,速度低
組相聯(lián)映射
將cache分成u組,每組v行,主存塊存放到哪個組是固定的,至于存到該組哪一行是靈活的,即有如下函數(shù)關(guān)系:cache總行數(shù)m=u×v 組號q=j(luò) mod u
組間采用直接映射,組內(nèi)為全相聯(lián)
硬件較簡單,速度較快,命中率較高