document: update HLD for hypervisor overview

updated this chapter based on latest master
some part still need update:
- vSBL need be replaced by OVMF after removed all vSBL stuff

Tracked-On: #3882
Signed-off-by: Jason Chen CJ <jason.cj.chen@intel.com>
This commit is contained in:
Jason Chen CJ 2019-10-24 19:03:57 +08:00 committed by wenlingz
parent 5583c864b2
commit 4586acd49a
3 changed files with 69 additions and 16 deletions

View File

@ -4,10 +4,11 @@ ACRN high-level design overview
############################### ###############################
ACRN is an open source reference hypervisor (HV) running on top of Intel ACRN is an open source reference hypervisor (HV) running on top of Intel
Apollo Lake platforms for Software Defined Cockpit (SDC) or In-Vehicle platforms(APL, KBL etc) for heterogeneous scenarios - like Software Defined
Experience (IVE) solutions. ACRN provides embedded hypervisor vendors Cockpit (SDC) or In-Vehicle Experience (IVE) for automotive, HMI & Real-Time
with a reference I/O mediation solution with a permissive license and OS for industry . ACRN provides embedded hypervisor vendors with a reference
provides auto makers a reference software stack for in-vehicle use. I/O mediation solution with a permissive license and provides auto makers and
industry users a reference software stack for corresponding use.
ACRN Supported Use Cases ACRN Supported Use Cases
************************ ************************
@ -46,6 +47,26 @@ ACRN supports guest OSes of Clear Linux OS and Android. OEMs can use the ACRN
hypervisor and Linux or Android guest OS reference code to implement their own hypervisor and Linux or Android guest OS reference code to implement their own
VMs for a customized IC/IVI/RSE. VMs for a customized IC/IVI/RSE.
Industry Usage
==============
A typical industry usage would include one windows HMI + one RT VM:
- windows HMI as a guest OS with display to provide Human Machine Interface
- RT VM which running specific RTOS on it to provide capability of handling
real-time workloads like PLC control
ACRN supports guest OS of Windows, at the meantime, ACRN added/is adding a
series features to enhance its real-time performance then meet hard-RT KPI
for its RT VM:
- CAT (Cache Allocation Technology)
- LAPIC pass-thru
- Polling mode driver
- ART (always running timer)
- other TCC feautres like split lock detection, Pseudo locking for cache
Hardware Requirements Hardware Requirements
********************* *********************
@ -64,12 +85,17 @@ ACRN Architecture
***************** *****************
ACRN is a type-I hypervisor, running on top of bare metal. It supports ACRN is a type-I hypervisor, running on top of bare metal. It supports
Intel Apollo Lake platforms and can be easily extended to support future Intel APL & KBL platforms and can be easily extended to support future
platforms. ACRN implements a hybrid VMM architecture, using a privileged platforms. ACRN implements a hybrid VMM architecture, using a privileged
service VM running the service OS (SOS) to manage I/O devices and service VM running the service OS (SOS) to manage I/O devices and
provide I/O mediation. Multiple user VMs can be supported, running Clear provide I/O mediation. Multiple user VMs can be supported, running Clear
Linux OS or Android OS as the user OS (UOS). Linux OS or Android OS as the user OS (UOS).
ACRN 1.0
========
ACRN 1.0 is designed mainly for auto use case - like SDC & IVI.
Instrument cluster applications are critical in the Software Defined Instrument cluster applications are critical in the Software Defined
Cockpit (SDC) use case, and may require functional safety certification Cockpit (SDC) use case, and may require functional safety certification
in the future. Running the IC system in a separate VM can isolate it from in the future. Running the IC system in a separate VM can isolate it from
@ -80,19 +106,45 @@ Some country regulations requires an IVE system to show a rear-view
camera (RVC) within 2 seconds, which is difficult to achieve if a camera (RVC) within 2 seconds, which is difficult to achieve if a
separate instrument cluster VM is started after the SOS is booted. separate instrument cluster VM is started after the SOS is booted.
:numref:`overview-arch` shows the architecture of ACRN together with IC VM and :numref:`overview-arch1.0` shows the architecture of ACRN 1.0 together with
service VM. As shown, SOS owns most of platform devices and provides I/O IC VM and service VM. As shown, SOS owns most of platform devices and
mediation to VMs. Some of the PCIe devices function as pass-through mode provides I/O mediation to VMs. Some of the PCIe devices function as
to UOSs according to VM configuration. In addition, the SOS could run pass-through mode to UOSs according to VM configuration. In addition,
the IC applications and HV helper applications such as the Device Model, the SOS could run the IC applications and HV helper applications such
VM manager, etc. where the VM manager is responsible for VM as the Device Model, VM manager, etc. where the VM manager is responsible
start/stop/pause, virtual CPU pause/resume,etc. for VM start/stop/pause, virtual CPU pause/resume,etc.
.. figure:: images/over-image34.png .. figure:: images/over-image34.png
:align: center :align: center
:name: overview-arch :name: overview-arch1.0
ACRN Architecture ACRN 1.0 Architecture
ACRN 2.0
========
ACRN 2.0 is extending ACRN to support pre-launched VM (mainly for safety VM)
and Real Time VM.
:numref:`overview-arch2.0` shows the architecture of ACRN 2.0, the main difference
compare to ACRN 1.0 is that:
- a pre-launched VM is supported in ACRN 2.0, with isolated resource including
CPU, memory and HW devices etc
- add a few necessary device emulation in hypervisor like vPCI, vUART to avoid
interference between different VMs
- support RT VM for a post-launched User VM, with assistant features like LAPIC
pass-thru, PMD virtio driver
ACRN 2.0 is still WIP, and some of its features already merged in the master.
.. figure:: images/over-image35.png
:align: center
:name: overview-arch2.0
ACRN 2.0 Architecture
.. _intro-io-emulation: .. _intro-io-emulation:
@ -405,7 +457,8 @@ the following mechanisms:
- Each physical CPU is dedicated to one vCPU. - Each physical CPU is dedicated to one vCPU.
Sharing a physical CPU among multiple vCPUs gives rise to multiple CPU sharing is in the TODO list, but talking about inter-VM interference,
sharing a physical CPU among multiple vCPUs gives rise to multiple
sources of interference such as the vCPU of one VM flushing the sources of interference such as the vCPU of one VM flushing the
L1 & L2 cache for another, or tremendous interrupts for one VM L1 & L2 cache for another, or tremendous interrupts for one VM
delaying the execution of another. It also requires vCPU delaying the execution of another. It also requires vCPU
@ -413,7 +466,7 @@ the following mechanisms:
scheduling latency and vCPU priority, exposing more opportunities scheduling latency and vCPU priority, exposing more opportunities
for one VM to interfere another. for one VM to interfere another.
To prevent such interference, ACRN hypervisor adopts static To prevent such interference, ACRN hypervisor could adopts static
core partitioning by dedicating each physical CPU to one vCPU. The core partitioning by dedicating each physical CPU to one vCPU. The
physical CPU loops in idle when the vCPU is paused by I/O physical CPU loops in idle when the vCPU is paused by I/O
emulation. This makes the vCPU scheduling deterministic and physical emulation. This makes the vCPU scheduling deterministic and physical

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB