需求分页:计算有效内存访问时间

ehs*_*ian 4 paging caching memory-management tlb

我无法理解这个问题的答案:

考虑使用TLB寄存器的一级分页的OS.如果页面错误率为10%,并且在需要时应重新加载脏页面,请在以下情况下计算有效访问时间:

  • TLB查找= 20 ns
  • TLB命中率= 80%
  • 内存访问时间= 75 ns
  • 交换页面时间= 500,000 ns
  • 50%的页面都很脏.

回答:

T = 0.8(TLB + MEM)+ 0.2 ( 0.9 [TLB + MEM + MEM] + 0.1 [TLB + MEM + 0.5(盘)+ 0.5(2Disk + MEM)] ) = 15,110 ns

你能解释一下原因吗?

Jan*_*dec 9

在这种情况下,"有效"时间意味着"预期"或"平均"时间.因此,您需要花费在个别情况下访问页面所需的时间,并将每个案例的概率相乘.通过分成几个级别的案例,表达式有些复杂.案例是:

  • 80%的时间物理地址在TLB缓存中.这使我们有80%的时间访问TLB寄存器以及访问页面本身:0.8(TLB + MEM)
  • 剩下20%的时间它不在TLB缓存中.分裂成更多的情况,所以它给了我们0.2(loooong expression)(表达式实际上没有那个括号,但我会把它作为一个错字,因为没有它,系数不会加1,如果他们没有意义别).案例是:
    • 页面仍被映射90%(20%),但地址从缓存中掉出来,因此我们必须从页面映射中读取额外的内存.因此,90%的时间访问TLB寄存器以及访问页面表以及访问页面本身:0.9(TLB + MEM + MEM).提到了单级分页,因此这里只有1个额外的内存访问,但实际的实现通常具有两级分页,因此将有2个额外的内存访问.
    • 页面需要从磁盘加载的时间为10%(20%;表达式表明这一点,但问题尚不清楚,而且表明它总体上是10%).这使得对TLB寄存器(失败)访问(失败)访问页表的次数增加了10%,并且需要加载页面.要加载它,它必须为它腾出空间,因此它必须删除另一页.这分为两个选项:
      • 要删除的页面的50%是干净的,因此系统只需要阅读新内容:0.5(Disk).
      • 要丢弃的页面的50%是脏的,因此系统需要将其写入磁盘(MEM+Disk)并读入新内容(Disk),然后给出0.5(2Disk + MEM)

我认为在最后两个(交换)情况下应该包括一些额外的内存访问,因为需要两次访问来标记上一页不可用和页面表中可用的新页面.

这也是非常不现实的,因为在实际系统中,当需要在页面中阅读的空间时,系统总是选择一个干净的页面来替换.为了确保它具有干净的页面,有一个后台进程遍历脏页并将其写出.它需要一些计算资源,因此它应该实际上计入内存访问量,但更少,因为页面错误不需要等待写入完成.

表达式实际上是错误的.它应该是

T = 0.8(TLB + MEM)+ 0.2 ((0.9(TLB + MEM + MEM))+ 0.1(TLB + MEM + 0.5(盘)+ 0.5(2Disk + MEM)))

如果页面错误是TLB未命中的10%或

T = 0.8(TLB + MEM)+ 0.1(TLB + MEM + MEM)+ 0.1(TLB + MEM + 0.5(盘)+ 0.5(2Disk + MEM))

如果页面错误占所有访问的10%.你不明确有关,但我会假设以后如果公式不包括0.2*0.9,这表明前者.