对于高速缓存命中的读取操作,存储器访问时间为1纳秒;对于高速缓存未命中的读取操作,存储器访问时间为5纳秒;对于高速缓存命中的写入操作为2纳秒,对于写入操作为10纳秒缓存中的错过。执行指令序列涉及100个指令获取操作,60个存储器操作数读操作和40个存储器操作数写操作。缓存命中率为0.9。平均内存访问时间
答案 0 :(得分:2)
问题是要找时间, “100次读取操作和60次操作数红色操作和40次内存操作数写入操作”/“指令总数”。
指令总数= 100 + 60 + 40 = 200
100次获取操作所需的时间(fetch = read)
= 100 *((0.9 * 1)+(0.1 * 5))// 1对应于缓存命中时读取的时间
= 140 ns //0.9是缓存命中率
60次读取操作所需的时间
= 60 *((0.9 * 1)+(0.1 * 5))
= 84ns
40次写入操作所需的时间
= 40 *((0.9 * 2)+(0.1 * 10))= 112 ns
//这里2和10分别是缓存命中和没有cahce命中时写入的时间
因此,200次操作所需的总时间为= 140 + 84 + 112 = 336ns
平均所用时间=每次操作所用的时间= 336/200 = 1.68 ns