例1
假定主存和Cache之間采用直接映射方式,塊大小為16B。Cache數據區容量為64KB,主存地址為32位,按字節編址。要求
1)給出直接映射方式下主存地址划分
2)完成Cache訪問的硬件實現
3)計算Cache容量
解:
1)由題目條件知:
數據塊大小16B--------》塊內偏移地址4位
Cache數據區容量為64KB---------》64KB/16B=4096行Cache--------》index字段12位
Tag字段的位數為---------》32-12-4=16位(Tag)
2)

3)計算Cache容量(假定Cache中除數據和標記外還包含一位有效位)
第一問的解答可知:Tag為16bit
由題目條件及Cache的工作原理知:
Cache每行數據存儲體容量為16*8=128bit
Cache每行的總存儲容量為:1+16+128=145bit
Cache總容量為4096 x 145=580Kbit
例2 設某機內容容量為16MB,Cache的容量16KB,每塊8個字,每個字32位,設計一個四路組相聯映射(即Cache內每組包含4個字塊)的Cache組織方式
1)求滿足組相聯映射的主存地址字段中各字段的位數
2)設Cache的初態為空,CPU從主存第0號單元開始連續訪問100個字(主存一次讀出一個字),重復此次序讀8次,求存儲訪問的命中率
3)若Cache的速度是主存速度的6倍,求存儲系統訪問加速比
解:
1)每塊8*32位=32B-----》塊內偏移地址5位
也可堆出Cache行數為16KB/32B=512行
Cache的組數為----》512/4=128組-----》index字段7位
Tag字段為:24-5-7=12位
數據字長總字數為24位呢?
因為內容容量為16MB,把它化為字節,就是16 x 1024 x 1024=224,所以數據字長為24位,一般都是默認按字節編址。
2)

主存100個單元分13塊,處於主存0組,而Cache有128組,故訪問主存前100號單元不發生頁面調度
初態為空,每塊第一次不命中,后7次訪問均命中
100號單元對應13塊,第一輪訪問13次不命中,后七輪訪問均命中
循環8次的總命中率為:
(100*8-13)/(8*100)=98.375%
3)設Cache的存取周期為t,則主存存取周期為6t
直接從內存讀取所有數據所需時間為:
T1=800*6t=4800t
通過Cache訪問800個數據的時間為:
T2=13*6t+(800-13)*t=865t
存儲系統訪問的加速比
S=T1/T2=(4800t/865t)=5.5
例3 局部性分析,以下程序A和B中,哪一個對數組A[2048][2048]引用的空間局部性更好?時間局部性呢?變量sum的空間局部性和時間局部性如何?


程序段A:
數組訪問順序與存放順序一致,空間局部性好!
數組雖在循環體中,但每個元素只用一次,時間局部性差!
變量sum在循環體中,時間局部性好!
變量sum只有一個變量,空間局部性差!
程序段B:
數組訪問順序與存放順序不一致,空間局部性差!
數組雖在循環體中,但每個元素只用一次,時間局部性差!
變量sum在循環體中,時間局部性好!
變量sum只有一個變量,空間局部性差!
