计算机原理 4.11 高速缓冲存储器例题选讲

例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只有一个变量,空间局部性差!

原文地址:https://www.cnblogs.com/fate-/p/13172737.html