[A-18]ARMv8/ARMv9-Memory-内存空间的属性(Attributes & Properties)

[复制链接]
发表于 2025-12-25 13:45:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
ver0.1
[看前序文章有惊喜,关注“众多架构师”,可以解锁全部文章]
媒介

在宏伟的ARM的内存天下中VMSA中,属性这个议题算不上最亮的星,就和屏幕前的你和我一样,平常的活在这个茫茫然的人间间。纵使“丈夫贫践应未足,本日邂逅无酒钱。”,也不要灰心面临生存,由于“山重水复疑无路,柳暗花明又一村”。这个期间锻炼着每一个人,磨练着每一个人的意志力,只要对峙走下去,“莫愁前路无知己,天下谁人不识君”。本文成文的朝晨,发生了一些遗憾的变乱,谨以此文鼓励一下每一个屏幕前奋斗的码农,每一个为家庭岑寂付出的人。内存的属性固然平常,但是仍旧充足紧张,由于它们是构成这个VMSA体系一些特性的基石,前面的文章我们也穿插讨论了一些,比方内存的范例、内存的共享属性等等,本文我们会对其他一些内存属性举行讨论。
正文

内存的属性实在不太正确,正确的说法应该是内存空间的属性。前面的文章我们已经相识到了,CPU是工作在假造所在空间的,它要访问物理所在空间的时间须要依靠MMU做一下翻译的工作。而整个的SOC体系也是通过内存空间构造在一起的,不管是数据的交互、照旧CPU指令的发出都要依靠内存空间。内存空间基天职类就是device和Normal,它们就工作在差异的业务场景下。直观的表现就是表现出来的活动就不一样,一个外设的寄存器会被映射在装备范例空间,那么它肯定是不盼望被cache的,由于它的值随时都大概被改变,但是它又没有好的机制包管和CPU看到的数据的划一性。Normal范例的数据为了可以大概淘汰访问外存的时钟周期,多数是要被缓存的,而且CPU在出厂的时间,会有完备的Cache划一性机制和更换计谋包管数据的划一性。雷同种种情况,团结ARM的架构,都须要对内存空间做进一步的细分,应用层的OS大概Firmware在申请内存的时间,趁便把内存的属性添补好,如许CPU工作的时间让小弟遍历这些属性就能正确的控制整个体系的活动。查抄通过,就继承工作,查抄失败就抛非常,启动非常处理惩罚机制举行“处罚”。既然属性是内存空间的属性,那么起首就要对内存空间有最少的相识。
1.1 内存空间

我们前面有一篇专门的文章讨论过内存空间:[A-09]ARMv8/ARMv9-Memory-内存空间(Address Spaces and Translation Regimes),还没有看过的同伴可以先已往看一下。我们这里带各人简朴回顾一下到底啥是内存空间(如果对这一节比力熟悉,可以直接跳过)。
ARM的体系下构建了一个假造的内存天下:AArch64 Virtual Memory System Architecture (VMSA)。顾名思义,ARM的内存天下是一个假造的天下,ARM通过编译器全部在上面运行的软件都编上了一个同一的所在。软件代码在编译和实行的过程中,看到的也都是假造的所在。单CPU拿到一个假造所在后,他须要做的一件变乱就是要把这个假造的所在VA分配一个真实的物理PA所在与之对应,如许整个VMSA架构体系就运转了起来。
随着操纵体系的发展,以及在工程实践中的履历积聚,人们发现盘算机的天下须要品级、须要调控。否则就会产生紊乱,比如体系上就一个喇叭能发声,A应用想发声,B应用也想发声,怎么办?得有更高权限的模块处理惩罚这些变乱,并定下规则,于是ARM的非常模子诞生了,如图1-1所示。

   图1-1 ARM非常品级  关于非常模子可以参考前序文章: [V-05] 假造化底子-非常模子(Exception model)(基于AArch64) 这里不睁开做具体讨论了。
非常的品级越高,权限越大,实在就是控制资源的权限越高。盘算机的天下在有了秩序之后玩命的卷了起来,不管是假造化技能、操纵体系技能、尚有各种各样的应用技能都在飞快的发展。陪伴着欣欣向荣的情况,别的一些需求也随之产生,那就是安全。和现实的天下一样,总有一些包藏祸心的人通过各种本领窥伺别人的隐私信息,比如一个公钥、一个证书、大概一个生物(指纹)信息。安全无小事,ARM架构在迭代的过程中也引入了安全状态,也开始了对ARM天下的第二次赛马圈地。

   图1-2 安全状态  “星星照旧谁人星星,玉轮照旧谁人玉轮”,CPU照旧谁人CPU,内存照旧谁人内存。如果这个天下不停就是如许的话,怎么能表现Non-Secure安全状态下Hypervisor的职位、怎么表现出Secure状态下Trusted OS的身份…。ARM的架构下就是靠内存天下的分别加以区别,也就是CPU照旧谁人CPU,但是内存却不是谁人内存了,由于ARM把假造内存的空间做了细分。
   The architecture defines all of the following translation regimes:
• Non-secure EL1&0 translation regime.
• Secure EL1&0 translation regime.
• Realm EL1&0 translation regime.
• Non-secure EL2&0 translation regime.
• Secure EL2&0 translation regime.
• Realm EL2&0 translation regime.
• Non-secure EL2 translation regime.
• Secure EL2 translation regime.
• Realm EL2 translation regime.
• EL
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表