设某计算机字长为32位,主存容量为64MB,Cache的容量为8KB,每个Cache数据块的大小为 32B。设计一个四路组相联映像的Cache组织(即Cache的每个组包含4个Cache行)。
(1)画出主存地址中各字段的位数,并说明每一个Cache行的标记有多少位。(10分)
(2)设Cache初态为空,CPU依次从主存0,4,8,……,996号单元中读出250个字(主存一次读出一个字),并重复此次序10次,问命中率是多少?(15分)
(3)若Cache速度是主存速度的5倍,试问有Cache和无 Cache相比,速度提高多少倍?(15分)
(1)(1)
组相连Cache映射的地址可分为:
主存块标记地址 块号 块内地址
假设按字编址!
主存64MB 共有 2^24个字,有24位地址码
Cache容量为8KB,一个数据块为32B所以Cache被分为 8KB ÷ 32B = 2^8块 2^8 ÷ 4 = 2^6 = 64组,共需要6位组号
32B大小的数据块有 8个字,因此需要3位的块内地址
因此主存地址按字段可分为:
主存字块标记 : 24-6-3 = 14
组地址:6位
块内标记 3位
(2)
首先判定会不会发生替换现象
0 – 996 即 40 -> 4249号单元中读出,按照8个字为1块的规律可分为 0 –> 124共125块。并且按照有序置放,125÷64 = 1.953 <4,所以不发生替换现象!
根据Cache的访问机理,当访问主存时,如果所找的目标单元不在Cache中,需要将目标单元所在的块整体复制到Cache中,而题干中所给的是一个重复访问的过程,因此我们只需要计算计算出CPU共访问了多少次主存即可
第一遍访问,当访问0号单元时会将0-7这8个字组成的块整体复制到Cache中的第0组第0个块中去。而访问4号单元时就不需要再访问主存了,所以第一遍访问的250次中有125次需要去访问主存。
而对于之后的访问,我们不需要这些块已经全都放在Cache中了
总访问次数 = 250 * 10 = 2500
访问主存数 = 125;
因此命中率等于 = 1- (125/2500) = 95%
(3)
设主存访问时间为5t,则Cache访问时间为t
若无Cache访问时间T1 = 2500t;
有Cache访问时间T2 = 125t +(2500-125)*5t = 12000t
速度提高 T2/T1 = 4.8倍