计算机组成原理cache例题

设某计算机的cache采用4路组相联映像,已知cache容量为16KB,主存容量为2MB,每个字块有8个字,每个字有32位,请回答:
(1) 主存地址多少位(按字节编址),各字段如何划分?
(2) 设cache起始为空,CPU从主存单元0,1,…,100依次读出101个字(主存一次读出一个字),并按此次序数读11次,问命中率为多少?若cache速度是主存速度的5倍,问采用cache和无cache比较速度提高多少倍?

(1)主存字段划分为区号,组号,块号和块内地址,cache字段没有区号。
主存容量为2MB,为2²¹,所以主存地址有21位。
4路组相连说明有4块,所以块号有2位。
8个字*32位=256位,256/8=32字节,因为按字节编址,所以每个字块有32个字节,所以块内地址有5位。
cache容量为16KB,是2¹⁴字节,即为2¹⁴B。一组有四块(4路组相连嘛),一块有2⁵字节,所以一组有2⁷字节,可得cache一共2¹⁴/2⁷=2⁷组,所以组号占7位。
主存大小为2MB,cache大小为16KB,所以一共有2MB/16KB=2⁷个cache区,所以区号占7位。
结果就是区号7组号7块号2块内地址5
也有其他方法,比如知道了主存和cache的位数,求出其中某几个,剩下最后一个一减就求出来了
(2)第一次CPU读cache,cache为空,将主存的数据放到cache,然后再读,所以第1次没命中,剩下10次命中,命中率10/11=0.91。
设读一次cache的时间为t,若有cache,第一次需要读一次cache,读一次主存(第一次没命中,要到主存里取数放到cache里),时间为t+5t=6t,剩下10次用了10t,共16t。
若没有cache,则需要11×5t=55t。
速度提高55/16=3.4375倍。

第一次码字,有些手忙脚乱,不对之处还请纠正