面向实时物联网的ACRN-RT体系设计

2018-12-12 16:23:24爱云资讯

ACRN作为一个专为物联网而设计的hypervisor,需要面向广泛和多样化的应用场景,很多的应用场景都需要很高的实时性要求,甚至是“硬实时”的要求。比如目前物联网项目应用最多的工业领域,一个典型的工业应用场景包含人机交互界面系统(Windows或Linux)和实时控制系统(RT-Linux、vxWorks、zephyr等), 通过ACRN虚拟化可以实现HMI和实时控制系统的整合。实时性和功能安全是ACRN体系结构设计的两大出发点,本文以典型工业物联网应用场景介绍ACRN-RT的体系结构设计。

ACRN-RT体系结构设计的主要前提和设计原则包括:

- ACRN的不同场景应用将使用整体体系结构设计,并共用同一个code base;

- 硬件支持Cache Allocation Technology (CAT);

- 实时客户机只支持MSI-capable PCI设备的直通;

- 设计优先满足硬实时需求;

- 可扩展支持多种RTOS,包括vxWorks, rt-linux, zephyr等;

- 实时客户机的实时任务只访问实时IO设备的访问。

在面向工业场景的ACRN体系结构中,我们引入一种新型的Privileged VM,支持需要实时性要求的客户机,运行RT OS,根据实际的实时性需求,可以是软实时的RT-Linux或者是硬实时的vxWorks,之上运行具体场景的实时应用。而对于原先支持的普通客户机,我们称之为Normal VM,一般运行Windows或者图形化的Linux,作为运行人接交互系统的客户机。

ACRN-RT 工业场景体系结构

和Normal VM类似,Privileged VM仍然由SOS上的acrn-dm创建和启动,不同的是,在privileged VM启动之后,正常执行过程中不会发生vmexit,从而保证其上运行的RT OS可以达到在裸机上运行时相同的实时性能。为了达到vmexit-less的目标,privileged VM主要采用了下面几种设计, 后面会对4种设计做简单的展开介绍:

- LAPIC pass-through

- Cache isolation (CAT)

- Device Sharing & Passthrough

LAPIC pass-through

在privileged VM中,我们基于x2apic mode实现LAPIC的pass-through,禁用外部中断vmexit,并允许privileged VM直接访问除了ICR之外的所有MSR,避免中断导致的vmexit。但对于ICR,从安全的角度考虑,仍然需要trap到hypervisor来防止恶意的inter-VM IPI。

Cache isolation (CAT)

Cache Allocation Technology (CAT) 可以通过设置给不同的CPU core分配不同的cache way,做到cache资源隔离。CAT使得Last Level Cache (LLC)变成了一种支持QoS(Quality of Service)的资源,使用CAT给privileged VM分配专用的cache way,可以隔离其他CPU core对cache的使用对privileged VM访存延时的影响,从而使privileged VM的访存延时更加可预测,有助于提高privileged VM的实时性能。

除hypervisor使用CAT对LLC进行分配管理以外,ACRN还将支持CAT virtualization, 在privileged VM中支持pseudo locking, RTOS针对实时任务进行更细粒度的分配管理。

CAT and virtual CAT

Device Sharing & Passthrough

Privileged VM 对设备的支持进行了以下限制:

- 对于模拟设备,privileged VM支持只在启动阶段访问的模拟设备,比如virtual RTC。不支持在运行时需要访问的模拟设备,比如virtual UART, virtual HPET等。

- 对于半虚拟化设备, privileged VM只支持polling mode的virtio设备。除了VIRTIO_PCI_ISR和VIRTIO_PCI_QUEUE_NOTIFY以外,其他寄存器都只会在设备初始化阶段访问。对于VIRTIO_PCI_ISR,privileged mode不支持INTx中断类型的设备,而对于VIRTIO_PCI_QUEUE_NOTIFY,可以通过后端声明VRING_USED_F_NO_NOTIFY,前端使用polling mode方式工作来避免运行时的访问。

- 对于直通设备,只支持MSI/MSIx capable的PCI设备的直通。对于PCI设备CFG space的访问,因为只在设备驱动初始化阶段访问,可以使用trap&emulation的方式支持;对于BAR/PBA space, 直接pass-through 给privileged VM;对于MSI-X table,将通过trap & fixup的方式支持,同时要求设备驱动握手来避免运行时mask/unmask某个vector导致的运行时访问。

相关文章
热门文章
头条文章
重点文章
推荐文章
热点文章
关于我们|联系我们|免责声明|会展频道
冀ICP备2022007386号-1 冀公网安备 13108202000871号 爱云资讯 Copyright©2018-2023