【问题标题】:What fields are there in virtual and physical addresses?虚拟地址和物理地址有哪些字段?
【发布时间】:2021-01-17 20:21:29
【问题描述】:

在学习虚拟内存概念时,我了解到虚拟地址(由处理器生成以访问内存位置)包含页码和页偏移量。我们使用页表来获取这个页码对应的物理地址(本质上是帧号)。

现在,如果这些地址(物理/虚拟)以页/帧的形式运行,处理器如何访问以块/线为单位的高速缓存?

另外,如果虚拟地址只包含页码和页偏移量,那么用于检查缓存集(由索引/集位指定)是否包含所需数据的标记位来自哪里?

【问题讨论】:

  • 同一个地址的不同用途可能会以不同的方式分解它。如果您坚持将其视为具有固定字段的 C 数据结构,请将其视为多个不同结构的 union {}
  • @PeterCordes 你能解释一下如何使用相同的位来访问两种不同的寻址方案吗?这两种地址的重叠到底在哪里?类型1:PageNumber + PageOffset 类型2:Tag + Set/Index + Offset
  • Virtually indexed physically tagged cache Synonym 展示了一个系统以 2 种不同方式分解地址的示例,用于分页(页码/页偏移)和缓存(标记/索引/偏移)
  • @PeterCordes 假设缓存和 RAM 之间的数据传输以块为单位,而 RAM 和磁盘之间的传输以页为单位,是否安全?再问一个问题,当 CPU 发出内存访问请求时,它试图操作的数据单元是什么?字节/字或块或页?我假设它只是试图访问一个字节/单词。

标签: caching memory-management cpu-architecture memory-address virtual-memory


【解决方案1】:

我想出了这个问题的答案。

  1. 可以使用/解释相同的地址来访问两种不同的寻址方案。 (感谢@PeterCordes 指出这一点)

    • 方案 1(访问 TLB):PageNumber + PageOffset
    • 方案2(访问缓存):Tag + Set/Index + Offset
  2. 通常在 VIPT 缓存中,页码来自高位 TAG 位,页偏移量来自低位 TAG 位以及 SET 和 OFFSET 位。为了防止混叠(多个虚拟地址映射到相同的物理地址),SET/INDEX 位完全来自页面偏移,这一点很重要。此限制限制了缓存的大小。

【讨论】:

  • 在大多数现代系统中,L1d 缓存索引和偏移位仅来自页面偏移量,从而允许 VIPT 速度以及对 PIPT 别名的免疫。 (您可以拥有使用虚拟标签的缓存,但现在这种情况很少见,因为它们通常必须在上下文切换时刷新。)How does the VIPT to PIPT conversion work on L1->L2 eviction
  • 但也可以有一个 VIPT 缓存,其中索引包含页码中的一些位,如Virtually indexed physically tagged cache Synonym 中操作系统可能使用页面着色来避免同义词。在这样的系统中,缓存标记包含也是索引一部分的位(即整个页号)也是正常的,因此将脏行回写到 L2 可以生成完整的物理地址,而无需TLB 翻译来自虚拟地址的索引位。 (见之前评论中的链接)
  • 所以说页偏移量必须包含任何标签位,或者说页码不能包含任何索引位是不准确的。尤其是当我们谈论 PIPT 缓存(就像 L2 和其他外部缓存的正常情况一样)时,“页面”的整个概念不再那么重要了。此外,即使 L1d 标签通常也是物理地址(VIPT 缓存),所以说标签来自与页码相同的地址位是不准确的。页码通常意味着虚拟,但如果标签是物理的,那么它们是页面 frame 编号的(一部分)。
  • 通常在 VIPT 缓存中,页码来自高阶 TAG 位 - 不,这与我所说的相反。物理标记意味着标签是物理地址。实际的标记位来自将页码转换为页框号的结果。 (如果缓存很小,还有一些不需要翻译的页偏移位。)只有在虚拟标记的缓存中,任何标记都来自虚拟页号。
  • Physically tagged 意味着标签是物理地址。 - 是的,但要明白,虚拟地址只能包含页面信息,不能包含框架信息。物理标记意味着标记来自物理地址,并且此物理地址(帧号等)来自 TLB 查找之后。当我说 '页码来自高阶 TAG 位' 时,我的意思是虚拟地址中的 TAG 位。本质上,虚拟地址的高位 TAG 位包含 PAGE 编号,物理地址中的 TAG 位包含 FRAME 编号。
猜你喜欢
  • 2015-05-04
  • 2013-05-05
  • 1970-01-01
  • 2014-03-15
  • 1970-01-01
  • 2014-09-14
  • 1970-01-01
  • 1970-01-01
  • 2017-07-07
相关资源
最近更新 更多