设计应用

基于ARMv7-A架构的虚拟存储系统技术研究

0 引言

    随着微电子技术和计算机技术的发展,嵌入式设备的性能越来越高,功能越来越复杂,机载电子设备的复杂程度也越来越高,需要有更多的传感器,集成更多的信号处理模块和其他各种应用模块。电子设备综合化将多个功能单元集成到一块电路板上,以减少设备的尺寸、重量,实现低功耗、体积小、低成本、高集成度等目标[1]

    新型嵌入式设备采用高性能通用处理器,综合化的机载设备则支持不同安全关键级别的应用软件共享同一套硬件资源,并提供一种安全性机制保证应用程序之间互相隔离,这就要求系统不仅应具备高性能计算能力和扩展能力,还有具备安全、可靠、低成本和低功耗的特点。通常,在航空航天领域的嵌入式设备较多采用PowerPC系列处理器或DSP等微处理器,但随着ARM处理器架构的升级,除性能越来越强悍外, 在内核中实现了一些额外增加的扩展,其中安全扩展虚拟化扩展技术以满足嵌入式设备对安全性和可靠性的技术要求,并以其强大的计算能力和高度集成的硬件设计为航电电子产品的研制带来更多可能性。

    本文以ARMV7A中的虚拟存储系统架构(VMSA)为研究对象,对引入安全扩展、虚拟化扩展、大物理地址扩展(LPAE)后VMSA架构的MMU技术实现进行了解析,并对基于该处理器的虚拟化应用进行研究与展望。

1 VMSA简介

1.1 VMSA存储管理简介

    ARM处理器进行存储访问时的地址转换为映射一个地址到另外一个地址的过程,如映射VA到IPA,或映射VA到PA。在ARMv7体系结构中,共定义了两种存储管理体系架构,其中对于ARMv7-A架构系列,使用VMSA存储架构,而对于ARMv7-R系列,则使用PMSA(Protected Memory System Architecture)[2]

    ARMv7通过转换表定义地址转换的机制,转换表基地址寄存器表示了转换表的开始位置[3]。使用系统控制协处理器进行存储管理,实现虚拟存储空间到物理存储空间的映射、及存储空间访问权限、缓冲特性的分配,其实现方式主要是通过内存中的页表描述符,在系统控制协处理器中保存该页表的基地址,当MMU使能时,处理器发起的所有访问操作均需通过MMU,地址转换过程如图1所示。

wdz2-t1.gif

    在VMSAv7中,包括安全扩展、多处理器扩展、大物理地址扩展、以及虚拟化扩展等扩展。在引入这些扩展的VMSA中,将处理器模式划分为两部分:安全态(Secure State)和非安全态(Non-Secure State),处理器内核可在普通区域和安全区域中执行代码,并在安全模式下增加了一种处理器状态:监控模式(Monitor Mode),可在监控模式进行安全态或非安全态的切换。在包含虚拟化扩展的实现中,处理器的特权被分为3个级别,分别为PL0、PL1以及PL2,如图2所示。在复杂系统中要求安全性、稳定性和高度可配置性的电子系统都需要这种嵌入式虚拟机技术,航空电子也需要利用虚拟机监控程序来隔离程度,提高可靠性。

wdz2-t2.gif

1.2 扩展VMSA的地址转换机制

    在扩展的VMSAv7中,包含虚拟化扩展必包括大物理地址扩展(LPAE)以支持40位物理地址,此时支持两个阶段地址转换。在安全状态或非安全的PL2只支持一阶段的地址转换;在非安全状态,程序执行在PL1 或PL0时,可达到两个阶段的地址转换, 如图3所示为不同状态下地址转换机制及完成转换使用的寄存器。客户操作系统使用虚拟地址,通过操作系统提供的页表将虚拟地址转换为中间物理地址(IPA)完成第一阶段的转换,再将IPA地址使用第二阶段页表才能转换为真正的物理地址,第二阶段地址转换过程及页表对客户操作系统是不可见的,由虚拟机管理器控制。

wdz2-t3.gif

2 VMSA扩展功能研究

2.1 大物理地址扩展的地址转换

    在包含大物理地址扩展的ARMv7 VMSA实现中,存在两种格式的描述符,即32位的短描述符表格式和64位的长描述符表格式,如表1所示。

wdz2-b1.gif

2.2 虚拟化扩展后的地址转换

    虚拟化技术是嵌入式系统的最新发展方向之一,通过虚拟化技术可以使得同一处理器执行多个虚拟机(Virtual Machine,VM), 允许多个操作系统存于同一硬件平台,并具有系统安全防护的特性[4]。ARM 处理器的ARMv7和ARMv8架构引入了硬件虚拟化扩展,硬件辅助的全虚拟化解决方案使得 ARM 平台上的虚拟机性能得到了显著的提高,可通过虚拟机管理程序(hypervisor)提供的有限接口实现隔离,控制系统的行为,并设置安全策略对关键数据对象和内核执行流程进行保护,其权限高于客户操作系统的权限,可有效发现防御客户操作系统内核中的恶意行为。

    在ARMv7A体系结构中,增加了虚拟化模式(hyp mode),该模式拥有比操作系统的管理模式(svc mode)更高的权限。因此,在管理模式中执行的全部特权指令会被自动捕获,并且控制权被转移到虚拟化模式中的虚拟机监视器中。同时,管理模式中寄存器的状态会被保存,以便在返回的时候读取。

    在ARMv7-A不再使用快速上下文切换机制(FCSE),该机制不适合多核处理器的存储管理。VMSA 在ASID的基础上,地址转换表增加了虚拟机ID(VMID),以保证在进行虚拟机切换时或线程切换时,Cache的一致性问题,因此每次上下文切换处理器只需保存某些模式特定的寄存器,可在保证性能的基础上也会更加灵活。

    为了更好地支持虚拟化的应用,在包含虚拟化扩展的MMU实现中,提供两个阶段的地址转换机制。第一阶段的转换由虚拟机操作系统实现,虚拟机操作系统定义其虚拟地址到内部物理地址(IPA)的转换,第二阶段的地址转换由虚拟机管理器实现,将虚拟机的内部物理地址转换为物理地址,也可以通过配置第2阶段转换页表项中的属性控制位来实现客户操作系统对内存的访问控制。通过该机制,虚拟机管理器可以重映射虚拟机的地址映射,将客户物理地址映射为机器物理地址,第二阶段的转换对虚拟机操作系统不可见。在包含虚拟化扩展的VMSA中,存储管理主要有如下特性:

    (1)为减少TLB维护操作,VMSA区分全局页和线程相关页,ASID表示与特定线程相关的页,在线程切换时不需要TLB维护操作;

    (2)VMID与特定虚拟机关联,TLB入口包含了VMID信息,即更改虚拟机不需要刷新TLB,对于阶段2的转换,所有转换均与VMID相关,而无全局页的概念。

2.3 安全模式扩展的地址转换

    综合化的机载嵌入式设备只需部分应用处理一些关键数据,需考虑设备的安全问题,ARM公司提出了相应的解决方案,即 TrustZone 技术,可抵御许多的特定攻击,提升系统的安全可靠性[5]。在包含安全扩展的实现中,将地址空间分为安全或非安全的地址空间,处理器运行模式也相应划分为即安全环境(Secure world)和普通环境(Normal)。航空电子设备在关键任务系统中使用可信计算技术,使得安全环境中的关键任务不能被普通环境的组件所访问。

    在处理器中引入安全扩展后,VMSA的安全扩展则提供了两个物理地址空间:安全物理地址空间和非安全物理地址空间。对PL1&0阶段1的地址转换,转换表基地址寄存器TTBR0、TTBR1及TTBCR在安全和非安全状态是分组的。处理器在安全状态时,存储访问选择对应状态的寄存器,使用独立的安全和非安全转换表的版本,转换表查找在对安全状态对应的转换表地址空间进行。

3 扩展VMSA应用研究

    随着ARM处理器硬件体系结构的升级,扩展的VMSA提供虚拟化扩展、安全扩展、大物理地址扩展,为基于硬件的虚拟化提供了不同的应用,主要可展开如下的应用。

3.1 多虚拟机的标准通用处理模块

    基于ARM虚拟化扩展及安全扩展的支持下,将硬件虚拟化技术和系统安全问题结合起来,通过虚拟机管理程序可以对多个虚拟操作系统进行有效的管理,在标准处理硬件模块,实现多个虚拟操作系统对标准底层硬件的共享访问,有利于多种不同设备的功能整合、减少整机功耗,提供系统的可靠性。

    虚拟化可实现以下几种应用:

    (1)在通用的处理器平台管理多个虚拟机,同时运行多个操作系统,实现多个模块的快速整合[6]

    (2)把多种负荷较小的系统,通过虚拟化移植到其他统一的硬件平台;

    (3)基于安全性考虑,把容易受到安全攻击的服务和内核隔离,提供保护;

    (4)把不同功能的操作系统运行在一起,由不同的操作系统提供不同的服务。

3.2 基于标准通用处理模块分区操作系统

    随着综合模块化航空电子体系结构的应用与发展,其软件结构采用了分区的软件架构概念,符合ARINC 653标准,该标准要求操作系统的各个分区在空间上保证相互隔离,当一个分区出现问题时,不会影响其他分区。

    在扩展VMSA架构的标准通用模块上,将虚拟化和分区操作系统相结合,利用统一的硬件平台,实现分区操作系统,充分利用VMSA提供的虚拟化机制,将ARINC 653分区对应于一个基于虚拟化处理器模块中运行的虚拟机, 并可以保证分区切换时的性能以及Cache一致性,降低应用软件的耦合度[7]

4 结束语

    嵌入式设备综合化发展的需求,需要利用ARMv7-A 架构MMU中增加的扩展功能,以实现设备的综合化和安全隔离。本文首先对VMSA的地址转换机制进行研究,在此基础上对包含安全扩展、虚拟化扩展及大物理地址扩展后的地址转换机制进行分析,最后对利用VMSA的特征在设备综合化应用进行了分析。对后续基于ARM平台的嵌入式设备的设计研发具有一定的应用价值。

参考文献

[1] 左宗玉,王强.一种基于ARM的通用飞行器控制系统设计[J].航空科学技术,2016,27(4):64-68.

[2] ARM Architecture Reference Manual[EB/OL],ARM ltd,2011.

[3] 杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.

[4] 顾峰.在ARM虚拟化环境中实现ARINC653分区的研究[D].武汉:华中科技大学,2015.

[5] 李舟军,沈东,苏晓菁,等.基于ARM虚拟化扩展的安全防护技术[J].软件学报,2017,28(9):2229-2247.

[6] 汪卓.基于ARM TrustZone的嵌入式虚拟机研究和应用[D].武汉:华中科技大学,2013.

[7] 郝继锋.嵌入式虚拟机管理器内存虚拟化方法研究[J].航空计算技术,2017,49(2):125-130.



作者信息:

曹朋朋1,2,陈  佳1,2,张少锋1,2

(1.中航工业西安航空计算技术研究所,陕西 西安710068;

2.集成电路与微系统设计航空科技重点实验室,陕西 西安710068)

ARMv7 VMSA 虚拟化 安全扩展