我正在尝试解决一个客观类型的问题,来检查。我实际上不知道正确的答案,也不知道如何得到它,需要你的帮助。谢谢。
问题: 在某个系统中,主存储器访问时间为100 ns。缓存比主内存快10倍,并使用写入协议。如果读取请求的命中率是0.92,并且CPU生成的内存请求的85%用于读取,则剩余的用于写入;那么考虑读写请求的平均时间是
a)14.62ns
b)348.47ns
c)29.62ns
d)296.2ns
我的工作::::
好吧,内存访问时间= 100ns
缓存访问时间= 10 ns(快10倍)
In order to find avg time we have a formula
Tavg = hc+(1-h)M
where h = hit rate
(1-h) = miss rate
c = time to access information from cache
M = miss penalty (time to access main memory)
直写操作:缓存位置和主存储器位置同时更新。
假设CPU生成的85%请求是读请求,15%是写请求。
Tavg = 0.85(avg time for read request)+ 0.15(avg time for write request)
= 0.85(0.92*10+0.08*100)+0.15(avg time for write request)
// * 0.92是读取请求的命中率,但是没有给出写入请求的命中率?
如果我认为写请求的命中率与读请求的命中率相同,那么
= 0.85(0.92*10+0.08*100)+0.15(0.92*(10+100)+0.08*100)
=31 ns
如果我认为写入请求的命中率为0%,那么,
= 0.85(0.92*10+0.08*100)+0.15(0*110+1*100)
=29.62 ns
答案 0 :(得分:3)
你的第二个假设是正确的。
使用直写高速缓存,它会立即将修改后的块写入内存,然后写入磁盘。由于没有给出磁盘访问时间,因此从等式中消除。我的注释略有不同,但我将以这种方式发布给未来的读者。我使用了 William Stallings 操作系统:内部和设计原则中给出的符号。
鉴于:
Tm = 100ns
Tc = 10ns /* 10x faster than Tm */
Hr = 0.92 /* Hit rate reading */
85% reading => 15% of the time writing
<强>解决方案:强>
The effective access time for reading:
Te_r = Hr * Tc + (1-Hr)Tm = 0.92*10 + (1 - 0.92)100 = 9.2 + 8 = 17.2
The effective access time for writing, is determined from the Hit rate Hw,
which is always 0, because the data must be immediately written onto the
memory.
Te_w = Hw * Tc + (1-Hw)Tm = 0*10 + (1 - 0)100 = 100
Taking into account the percentage:
0.85*17.2 + 0.15*100 = 14.62 + 15 = 29.62
Q.E.D
答案 1 :(得分:2)
平均访问时间仅考虑读取= 0.92 * 10 + 0.08 * 100 = 17.2 ns。
平均访问时间仅考虑写入= 100 ns(因为在写入时你必须返回内存才能更新,即使它是命中或未命中。如果你假设命中率= 0.5且未命中= 0.5则为0.5 * 100 + 0.5 * 100 = 1 * 100)
因此,读写的总访问时间为 - 0.85 * 17.2 + 0.15 * 100 = 14.62 + 15 = 29.62 ns
**你不能假设写入的命中率与读取的命中率相同。对于写请求(直写)无论如何,你必须在内存中写回。所以写访问时间将等于内存访问时间。
答案 2 :(得分:0)
在写入策略的情况下以及在发生高速缓存未命中时直接从主存储器读取数据时,
Tavg(for write)=Hw*Tm +(1-Hw)*Tm = Tm
Hw =写入命中率,Tm =访问主存储器的时间
在此公式中,在缓存命中和缓存两种情况下我们可以在Tm时间内同时更新和读取数据,因为通常Tm> Tc。所以读取的Tc可以忽略不计。
因此,您不需要知道此问题的写入命中率。答案是29.62ns