ARM虚拟化扩展–简介(第1部分)

抱歉,我再次中断,我在Calxeda的工作使我很忙。 最近,我与朋友阿里·侯赛因Ali Hussain)讨论了ARM的虚拟化支持(是的,那是我们有趣的晚餐对话的想法),发现了一些非常有趣的事实。 我请阿里在有关该主题的博客文章系列中分享他的知识,所以就到这里。 Ali在ARM的性能建模团队中任职,自2008年以来一直致力于ARM内核。

这篇博客文章的想法源于与人们的印象,即给人以为ARM的虚拟化支持(即使Cortex-A15中具有虚拟化扩展)也很有限。 我打算写几篇探讨虚拟化的文章,以及在ARM和x86 ISA中对虚拟化的支持。 这篇文章将极大地借鉴我对ARM体系结构和操作系统的理解。

什么是虚拟化?

在研究虚拟化之前,我们需要定义一些关键的东西。 首先是虚拟化本身。 虚拟化通常是在软件中创建一个环境来模拟物理环境。 更具体地说,当我们谈论硬件虚拟化时,它是在沙盒虚拟机(VM)上运行操作系统,而不是访问物理硬件。 这是通过管理程序来实现的,该管理程序以与操作系统管理应用程序相同的方式管理来宾操作系统。

ARM虚拟化扩展–简介(第1部分)

虚拟化不需要硬件支持。 可以完全在软件中执行。 可以对现有操作系统进行修补,使其以较低的特​​权级别工作并捕获到管理程序。 这称为半虚拟化 硬件支持的优势在于简化了虚拟机管理程序的软件工作并提供了性能改进。 对于本文,我想讨论硬件如何帮助虚拟机管理程序执行其功能。 那些对准虚拟化感兴趣的人会发现有关VMWare的关于在ARM上实现准虚拟化时面临的问题的讨论: http : //labs.vmware.com/academic/arm-core-virtualization让我们探讨一下虚拟机管理程序的一些职责以及硬件如何使他们能够更好地了解硬件辅助的虚拟化。

管理有特权

要对操作系统进行沙箱管理,虚拟机监控程序必须具有比来宾操作系统更高的特权级别。 例如,ARM创建了一个更高的特权级别,称为管理程序模式。 系统管理程序模式可以访问其自己的系统寄存器集,该组系统寄存器类似于系统模式下存在的寄存器。 例如,就像OS使用地址空间标识符(ASID是TTBR的一部分)来跟踪进程ID一样,管理程序也使用VMID(是VTTBR的一部分)来跟踪当前VM。

ARM虚拟化扩展–简介(第1部分)

ARM TTBR位字段

ARM虚拟化扩展–简介(第1部分)

ARM VTTBR位字段

管理程序还具有与管理程序模式相似的访问控制。 此外,系统管理程序可以读取和写入OS的系统控制寄存器。 具有两层访问控制的确创建了许多有趣的场景,其中虚拟机管理程序和来宾OS竞争陷阱。 ARM秉承这样的理念:优秀的经理是尽可能少地介入您的工作的经理。 因此,如果发生异常,通常会为来宾OS提供一个在系统管理程序之前对其进行服务的机会,因为该OS具有更好的能力来处理应用程序的需求。 让我用一个例子解释一下。 OS和管理程序都提供了相似的功能,分别使用CPACR(协处理器访问控制寄存器)和HCPTR(管理程序协处理器陷阱寄存器)来禁用对浮点和SIMD单元的访问。 如果CPACR和HCPTR均禁止在来宾操作系统中运行的应用程序访问,则CPACR具有优先权。

这是一个有趣的设计选择。 它有两个优点。 首先,它改善了异常的响应时间。 其次,它允许操作系统正常运行。 但是,这也使得提供某些功能极其困难,例如,使浮点单元对客人不可见。 下周,我将添加另一篇文章,讨论虚拟机管理程序中的内存管理和中断处理。

免责声明:

  • 此处表达的所有观点仅代表我个人,而非ARM或任何其他实体。
  • 我自己尚未实现虚拟机管理程序或操作系统,因此我很想听听该领域专家的意见。

资源:

参考:Future Chips》博客中我们JCG合作伙伴 Aater Suleman的 ARM虚拟化扩展-简介》(第1部分)

翻译自: https://www.javacodegeeks.com/2013/03/arm-virtualization-extensions-introduction-part-1.html