计算最坏情况时间以在内存中找到变量 x

calculate worst case time to find variable x in memory

我有考试问题但我不明白解决方案,有人可以为我解释解决方案吗?

内存访问时间=2.5*10^-7 sec

秒记忆时间=3*10^-6

TLB时间=10^-8

给定虚拟地址、值 x 和 3 级页面 table,在最坏情况下从内存中读取 x 值需要多少时间?

解决方案是:10^-8 + 2.5*10^-7 + 3*(3*10^-6 + 2*2.5*10^-7) + 10^-8 = 1076*10^-7

据我所知,没有公式可以计算内存访问的最佳和最差时间。但是,影响它的因素有很多:

  • 访问的宽度。在 32 位 x86 上,8 位和 32 位访问往往比 16 位更快。
  • 访问是否对齐。未对齐的访问往往比对齐的访问慢。
  • 访问的内存是否缓存。访问缓存内存比访问非缓存内存更快。
  • 访问内存的NUMA域。访问属于近 NUMA 域的内存比访问属于远 NUMA 域的内存更快。
  • 是否启用分页。启用分页时访问内存涉及遍历分页结构,因此速度较慢。
  • 内存类型。例如,写入显存比写入 "normal" 内存慢。分别地,从视频内存中读取比从 "normal" 内存中读取要慢得多。
  • 其他我忘了说的因素。很难全部记住。

此外,每个因素的影响都取决于底层硬件,因此即使发明一个计算内存访问最佳和最差时间的近似公式也非常困难。

很明显,该解决方案正在执行 2 次 TLB 查找、7 次内存访问和 3 次辅助内存访问。

过程中的步骤如下:

1) CPU访问TLB寻找虚拟地址映射到的内存位置。

2) CPU访问主内存寻找虚拟地址。此步骤失败。

3)CPU访问页面文件(1次内存访问获取页面文件,1次访问页面文件入口)。

4) CPU 从辅助内存读取以获取页面文件中引用的页面。

5) 对页面中的每个级别重复步骤 3 和 4 table。