当前位置:  开发笔记 > 编程语言 > 正文

在Aarch64上同时存在不同大小的页面

如何解决《在Aarch64上同时存在不同大小的页面》经验,为你挑选了1个好方法。

根据架构概述文档,Aarch64支持4k和64k页面.一些CPU也支持16k页.查看地址转换方案的详细信息,我得出的结论是,这些CPU 不支持同时存在不同大小的页面(与允许的x86_64不同).我对吗?



1> Notlikethat..:

你在这里混淆了两个不同的,虽然相关的东西 - 页面大小与粒度.

在AArch64中,您有3种可供选择的翻译粒度,每种粒度都会产生不同的页面大小:

4KB颗粒:4KB,2MB和1GB页面.

16KB颗粒:16KB和32MB页面.

64KB颗粒:64KB和512MB页面.

翻译颗粒通常定义了翻译方案的各种属性,因此它适用于整组表格,并且您在表格中不能混合和匹配颗粒的意义上是正确的,尽管使用不同的颗粒是完全正确的.同时用于不同的表(例如,在不同的异常级别).

相比之下,x86总是具有4KB粒度,但提供的页面大小范围取决于模式:

32位:4KB和4MB页面.

PAE:4KB和2MB页面.

64位:4KB,2MB和(如果支持)1GB页面.

在这两种情况下,大于基本粒度的页面大小表示中间表级别的块条目.换句话说,使用常见的4KB颗粒,3级*,例如:

第一级表中的每个有效条目都指向一个自然对齐的1GB内存区域,或一个描述该1GB地址空间的二级表.

第二级表中的每个有效条目指向自然对齐的2MB内存区域,或指向描述该2MB地址空间的第三级表.

第三级表中的每个有效条目都指向一个自然对齐的4KB内存区域.

*根据实际的地址空间大小,在此之上可能存在零级表,但这两种架构都不允许在该级别进行块条目(无论如何它们都是不切实际的).对于AArch64,较大的颗粒仅支持2级和3级的块/页面条目,而64KB的颗粒根本不支持0级.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有