作者:罗宇哲,中国科学院软件研究所智能软件研究中心
上一期中我们介绍了ARMv8-A架构中的异常级别,从这一期开始的接下来四期我们将介绍ARMv8-A的存储模型。第一期我们将介绍存储模型中地址转换和访存控制的一般概念,第二期我们将介绍缓存相关的基本概念,最后两期我们将介绍ARMv8-A架构中的地址转换、访存控制和缓存机制。本期中我们介绍处理器中地址转换机制和访问控制的一般概念。
一、处理器的地址转换和访问控制
处理器运行程序时,需要从物理存储器中取得所需的指令和数据。对于处理器中的地址转换,输入数据为应用程序空间中的地址(指令地址或数据地址),输出为数据总线上的地址。前者称为逻辑地址,后者称为物理地址。处理器需要将逻辑地址转换为物理地址。
处理器所能访问的物理存储空间分配的方式主要有连续分配和离散分配两种方式。连续分配指运行在处理器上的进程将其使用的数据和指令保存在内存中的连续区域里面,这种方式不够灵活,可能会产生大量内存碎片,整合内存碎片的开销比较大。离散分配方式将进程使用的存储空间离散地分布在内存里,常用的分配方式有段式、页式和段页式。
段式分配方式通过分段机制将程序划分为不同的程序段,如代码段、数据段等。分段机制通过将段基址与偏移量相加得到对应的物理地址,偏移量不能超过段长,否则会产生越界中断。在分段机制中,访问控制由段描述符实现。段描述符保存了段基址、段长和访问段的最低特权等级等信息,只有当前访问段描述符的进程有足够的特权等级才能访问该段的段描述符。
页式分配方式通过分页机制将逻辑地址空间划分为固定大小的页,将物理地址空间划分为固定大小的页框,页框和页的大小是一样的。分页机制将逻辑地址空间中的页离散地映射为物理地址空间中的页框,从而完成从逻辑地址到物理地址的转换。页和段的区别在于页的大小是固