1

下图摘自 ARMv8-A Programmer's Guide:

Armv8-A 程序员指南

我对突出显示的条目类型有点困惑。让我首先陈述我目前的理解(假设在 EL3 中进行阶段 1 翻译的场景,粒度为 4KB)。

首先,在这种情况下,名称“条目”和“描述符”似乎是可以互换的。

然后,根据 ARM ARM doc(例如图 D5-6),似乎有 3 种类型的有效描述符:

  • D_Table 描述符,它是指向下一级转换表的入口。达到这种类型的描述符意味着翻译行走还没有完成。
  • D_Block 描述符,它是指向大于颗粒大小(“页”)的内存“区域”的条目。这是翻译遍历完成的两种情况之一。
  • D_Page 描述符,它指向一个粒度大小的内存“页”。这是翻译遍历完成的第二种情况。

还有几个约束(wrt有效的描述符),即:

  • L0 表只能包含 D_Table 描述符,不能包含其他两种类型(D_Block、D_Page)。
  • L3 只能包含 D_Page 描述符。
  • D_Block 只能出现在 L1/L2 转换表中。

所以回到上图,我不明白为什么L1和L2还有另一个Table entry?因为图中的第一行已经描述了 L0/L1/L2 的表描述符。那么,即使这是另一种表描述符类型,为什么中间内容被标记为“输出块地址”(而不是“下一级表地址”)?

4

0 回答 0