6

我正在尝试解决一个客观类型的问题,参加考试。我实际上不知道正确的答案,也不知道如何得到它,需要你的帮助。谢谢你 。

问题: 在某个系统中,主存访问时间为 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
4

3 回答 3

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
于 2016-03-28T09:50:13.043 回答
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

**您不能假设写入的命中率与读取的命中率相同。对于写请求(直写),无论是什么情况,您都必须在内存中写回。所以写访问时间将等于内存访问时间。

于 2014-05-19T14:45:47.810 回答
0

在 write through 策略的情况下,当发生缓存未命中时直接从主内存中读取数据时,

Tavg(for write)=Hw*Tm +(1-Hw)*Tm = Tm

Hw=写入命中率,Tm=访问主存的时间

在这个公式中,在缓存命中和未命中的两种情况下,我们都可以在 Tm 时间内同时更新和读取数据,因为通常是 Tm>>Tc。所以读取的 Tc 可以忽略不计。

因此,您不需要知道为这个问题写的命中率。答案是 29.62ns

于 2013-07-08T11:46:27.820 回答