【问题标题】:Calculating sizes of page table parameters计算页表参数的大小
【发布时间】:2019-01-07 21:06:27
【问题描述】:

我得到了一个具有 64 位虚拟地址空间的系统。页面大小为 2KB。 此外,物理内存的大小为 16GB。

我需要计算以下参数: 页条目数(页表中的行数),页偏移量需要多少位,虚拟页号(VPN)需要多少位,物理页号需要多少位( PPN)。

所以,首先我得出结论,虚拟内存的大小是 2^64 字节,这意味着页表中有 2^53 个条目。

从页面的大小我得出的结论是页面偏移需要 11 位。

从这里我不太确定。

由于每个虚拟地址的大小为 64 it,因此 VPN 的大小为 64 - 11 = 53 位。

由于物理内存大小为 2^34 字节,因此物理地址为 34 位。这意味着 PPN 的大小为 34 - 11 = 23 位。

我的计算是否正确?还有我的想法对吗?

我们将不胜感激

【问题讨论】:

  • 你的计算对我来说看起来不错。
  • 好的,谢谢!我只想再澄清一件事:vpn 的大小(以位为单位)是否总是与页表中的条目数相同? (当表格不是多级时)
  • 不一定,尤其是当 TLB 未命中由操作系统而非硬件处理时。可以设计页表,以便多个 VPN 可以映射到页表中的同一条目。然后,一个条目将包含它映射的 VPN。本质上,该表的工作方式类似于直接映射缓存。但如果 TLB 未命中由硬件处理,那么通常是的,页表中的每个条目都对应一个唯一的 VPN。

标签: memory paging cpu-architecture


【解决方案1】:

您的某些结果是正确的。 PPN 是 23 位,VPN 是 53 位。 但是所有关于页表的东西都是错误的。

页表包含一组物理页地址。因此,由于 PPN 是 23 位,因此需要 4 个字节(23 的 2 次方)来描述 PP。如果页面是 2k 字节,则可以存储 2^9 个 PP 地址 par page。

由于VPN是53bits,每张表可以解析9bits,所以可以通过6张连续的表来进行翻译。 如果您不熟悉多级页面,这里有很多很好的教程。例如见https://en.wikipedia.org/wiki/Page_table

可以确定的是 PT 大小不是 2^53!!首先因为 2^55 是一个疯狂的内存量(~10^16)。第二,因为PP的总数是2^23,所以为什么要使用10亿倍的表……(这也是我们使用多级页表的原因)

【讨论】:

  • 如果这个问题只是理论上的,而且说表格不是多级的,我还是错了吗?
  • @GabiG:那么是的,假设一个平面单级页表,其中 VPN 按位置隐含并存储 PPN,您将需要一个完全荒谬的存储量来覆盖全部 64-位地址空间。所以它说明了为什么这是不切实际的。顺便说一句,理论上一个 PTE 可能只有 24 位,而不是填充到 32; 1 位存在/不存在,以及 23 位 PPN。 (用a + (1<<a) 乘以 3 以在任何查找逻辑或软件中进行索引是不这样做的一个重要原因,但它仍然是可能的。也许它是具有 24 位字的字可寻址机器?)
猜你喜欢
  • 2013-04-25
  • 2014-07-28
  • 2023-03-22
  • 2012-05-28
  • 1970-01-01
  • 2015-07-20
  • 2011-12-16
  • 1970-01-01
相关资源
最近更新 更多