查ICP網:全新的綜合網站備案信息查詢網
Copyright ? 2008-2028 www.mshuangcha.com [ 查icp] All Rights Reserved.
主存與cache的地址映射方式有哪幾種?cache是一種高速緩沖寄存器,是為解決CPU和主存之間速度不匹配而采用的一項重要技術。
CPU對存儲器的訪問,通常是一次讀寫一個字單元。當CPU訪Cache不命中時,需將存儲在主存中的字單元連同其后若干個字一同調入Cache中,之所以這樣做,是為了使其后的訪存能在Cache中命中。
因此,主存和Cache之間一次交換的數據單位應該是一個數據塊。數據塊的大小是固定的,由若干個字組成,且主存和Cache的數據塊大小是相同的。
從Cache-主存層次實現的目標看,一方面既要使CPU的訪存速度接近于訪Cache的速度,另一方面為用戶程序提供的運行空間應保持為主存容量大小的存儲空間。
在采用Cache-主存層次的系統中,Cache對用戶程序而言是透明的,也就是說,用戶程序可以不需要知道Cache的存在。因此,CPU每次訪存時,依然和未使用Cache的情況一樣,給出的是一個主存地址。但在Cache-主存層次中,CPU首先訪問的是Cache,并不是主存。
為此,需要一種機制將CPU的訪主存地址轉換成訪Cache地址。而主存地址與Cache地址之間的轉換是與主存塊與Cache塊之間的映射關系緊密聯系的,也就是說,當CPU訪Cache未命中時,需要將欲訪問的字所在主存中的塊調入Cache中,按什么樣的策略調入,直接影響到主存地址與Cache地址的對應關系,這也就是本小節要解決的主存與Cache的地址映射問題。
主存與cache的地址映射方式有全相聯方式、直接方式和組相聯方式三種。
直接映射(directmapping)
將一個主存塊存儲到唯一的一個Cache行。
全相聯映射(fullyassociative mapping)
可以將一個主存塊存儲到任意一個Cache行。
組相聯映射(setassociative mapping)
可以將一個主存塊存儲到唯一的一個Cache組中任意一個行。
直接映射
多對一的映射關系,但一個主存塊只能拷貝到cache的一個特定行位置上去。
cache的行號i和主存的塊號j有如下函數關系:i=j mod m (m為cache中的總行數)
優點:硬件簡單,容易實現
缺點:命中率低, Cache的存儲空間利用率低
全相聯映射
主存的一個塊直接拷貝到cache中的任意一行上
優點:命中率較高,Cache的存儲空間利用率高
缺點:線路復雜,成本高,速度低
組相聯映射
將cache分成u組,每組v行,主存塊存放到哪個組是固定的,至于存到該組哪一行是靈活的,即有如下函數關系:cache總行數m=u×v 組號q=j mod u
組間采用直接映射,組內為全相聯
硬件較簡單,速度較快,命中率較高