【问题标题】:Hit and miss ration in cache and average time calculation缓存中的命中率和未命中率以及平均时间计算
【发布时间】:2013-04-30 05:06:40
【问题描述】:

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

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

【问题讨论】:

    标签: memory computer-science cpu-usage computer-architecture


    【解决方案1】:

    您的第二个假设是正确的。

    使用直写缓存,它会立即将修改后的块写入内存,然后再写入磁盘。由于没有给出磁盘访问时间,因此将其从等式中消除。我的符号略有不同,但我会以这种方式发布给未来的读者。我使用了 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
    

    【讨论】:

    • 你为什么提到磁盘?这个问题并没有说内存是由磁盘支持的,所以你应该假设它不是。例如MAP_PRIVATE(如可执行文件的数据部分)或MAP_ANONYMOUS(malloc,或 bss 部分)映射。除非存在内存压力,否则普通操作系统不会将脏匿名页面写入交换,即使它们保留了足够的交换以避免过度使用。
    • @PeterCordes 好吧,我就是这么假设的。然而,直写式缓存写入后备存储,我认为“内存”是指内置主内存,它是易失的。这就是为什么作为普通的后备存储,我想到了磁盘。但我仍然没有在解决方案中假设它。
    【解决方案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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2014-07-29
        • 2021-03-17
        • 2019-07-04
        • 1970-01-01
        • 2018-07-22
        • 2014-06-26
        • 2017-04-23
        • 2012-05-23
        • 1970-01-01
        相关资源
        最近更新 更多