1.这里主要讲计算,Cache的效率:e=(访问Cache的时间/平均访问时间)*100%
比如cpu执行某一个代码时,共访问Cache命中2000次,访问主存50次。已知Cache的存储周期为50ns,主存的主存周期为200ns.
求Cache的命中率:为2000/(2000+50)=0.97
平均访问时间为 :50ns*0.97+200ns*(1-0.97)=54.5ns (没有命中就是命中主存的概率是1-0.97)
设访问Cache的时间为t,访问主存的时间为4t,访问效率为e (他们的时间之比1:4)
效率:e=(t/(0.97*t+(1-0.97)*4t))*100%=91.7% (效率是时间之比)
2.Cache--主存地址映射
1.直接映射
就是Cache和主存直接相连,当cpu从Cache中读不出数据时才会从主存中读数据。主存地址里面有三部分,一块叫主存字块标记,也被称t位,一块Cache字块地址,也被称为c位,还有一块叫字块内地址。
2.全相联映射
3.组相联映射
废话不多说,直接做题吧,因为这个全靠我自己理解,老师在哪里讲计算还跟讲文科一样。
比如主存容量为512kB,Cache的容量为4KB,每个字块为16个字,每个字32位。
求Cache地址有多少位 : 2的12次方,所以是12位
可容纳多少块:4KB/4B 为1K字 1k/16 =64块
主存地址也是这样求的
然后让你求主存字块标记,缓存字块地址,字块内地址
其实就是我上面说的,主存字块标记可以用主存地址长度-Cache地址长度 这里是19-12=7位
缓存字块地址:按照容纳多少块来算的,就比如说这里是64块 ,也就是2的6次方 所以是6位。
字块内地址:这里我是按照主存地址长度- t位-c位-字块内地址 也就是19-7-6=6;(这个是按访存地址计算)32位/8=4字节 4*16=64字节 64是2的6次方 所以是6位 (教材又不讲是按照字节还是字)按照答案是这样的。所以题目上应该是每个字块为16个字节。
当然也有别的求法。可以尽管说。