如何理解图示ARMv8 AArch64 MMU表描述符格式?
问题解答
你对ARMv8-A地址翻译描述符的分类和约束的理解完全正确,你提到的图中的矛盾点属于《ARMv8-A Programmer's Guide》的排版笔误,具体说明如下:
- 不存在适用于L1/L2的第二类Table描述符,图里高亮条目的表头文字标注错误,该条目实际是Block描述符的定义行,错把“Block”写成了“Table”
- 条目中的
Output block address字段也验证了这一点:Block描述符的对应位段存储的是块映射的输出物理地址,和Table描述符存储的「下一级转换表基地址」完全不同 - 该定义和ARM ARM官方文档的描述完全对齐:4KB granule场景下,L1的Block描述符映射1GB大小的内存块,L2的Block描述符映射2MB大小的内存块,仅允许出现在L1、L2转换表中,符合你提到的所有约束条件
你看到的图里的条目行正确的对应关系应为:
- 标注适用L0/L1/L2的Table条目:对应
D_Table描述符,定义正确 - 高亮的标注L1/L2的Table条目:实际对应
D_Block描述符,仅表头标注错误 - 标注L3的Page条目:对应
D_Page描述符,定义正确
内容的提问来源于stack exchange,提问作者bruin
相关产品推荐
相关产品推荐

