根据架构概述文档,Aarch64支持4k和64k页面。一些CPU也支持16k页。查看地址转换方案的详细信息,我得出的结论是,这些CPU 不支持同时存在不同大小的页面(与允许的x86_64不同)。我是对的吗?
答案 0 :(得分:6)
你在这里混淆了两个不同的,虽然相关的东西 - 页面大小与粒度。
在AArch64中,您有3种可能的翻译粒度可供选择,每种会产生不同的页面大小:
翻译颗粒通常定义了翻译方式的各种属性,因此它适用于整组表格,并且您在表格中不能混合和匹配颗粒的意义上是正确的,尽管它非常好同时为不同的表使用不同的颗粒(例如,在不同的异常级别)。
相比之下,x86总是具有4KB粒度,但提供的页面大小范围因模式而异:
在这两种情况下,大于基本粒度的页面大小表示中间表级别的块条目。换句话说,使用常见的4KB颗粒,3级 * ,例如:
*根据实际的地址空间大小,在此之上可能存在零级表,但这两种架构都不允许在该级别进行块条目(无论如何它们都是不切实际的)。对于AArch64,较大的颗粒仅支持2级和3级的块/页面条目,而64KB的颗粒根本不支持0级。