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

时间:2016-10-23 10:29:22

标签: memory memory-management operating-system tlb

我对考试有疑问,但我不理解解决方案,有人可以为我解释解决方案吗?

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

第二次记忆时间= 3*10^-6

TLB时间= 10^-8

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

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

2 个答案:

答案 0 :(得分:0)

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

  • 访问的宽度。在32位x86上,8位和32位访问往往比16位访问快。
  • 访问是否对齐。未对齐的访问往往比对齐的访问慢。
  • 是否缓存已访问的内存。访问缓存的内存比访问未缓存的内存要快。
  • 被访问内存的NUMA域。访问属于关闭NUMA域的内存比访问属于远NUMA域的内存要快。
  • 是否启用了分页功能。启用分页时访问内存涉及遍历分页结构,因此速度较慢。
  • 记忆的类型。例如,写入视频内存比写入“普通”内存要慢。从视频内存中读取比从“普通”内存中读取要慢得多。
  • 我忘记提及的其他因素。很难记住它们。

此外,这些因素的影响取决于底层硬件,因此即使是计算内存访问最佳和最差时间的近似公式也很难发明。

答案 1 :(得分:0)

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

以下是此过程中的步骤:

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

2)CPU访问主存储器以查找虚拟地址。这一步失败了。

3)CPU访问页面文件(1个内存访问获取页面文件,1个访问页面文件条目)。

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

5)重复步骤3&页面表中的每个级别都有4个。