From ab32075d7b2d8415cff3fb02364c524e5bd9fcfb Mon Sep 17 00:00:00 2001 From: GaoChao Date: Thu, 16 Sep 2021 20:49:46 +0800 Subject: [PATCH] Main dysche design doc for the step 1. Signed-off-by: GaoChao --- images/dysche-main.svg | 1 + images/virtual-gic.svg | 1 + meta/main.md | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100755 images/dysche-main.svg create mode 100755 images/virtual-gic.svg create mode 100644 meta/main.md diff --git a/images/dysche-main.svg b/images/dysche-main.svg new file mode 100755 index 0000000..3a74d6f --- /dev/null +++ b/images/dysche-main.svg @@ -0,0 +1 @@ +CPUCPUCPUCPUCPUCPUCPUCPUCPUCPUCPUCPUMemoryMaster OSSlave OS 1Slave OS 2GICVirtual GICVirtual GIC \ No newline at end of file diff --git a/images/virtual-gic.svg b/images/virtual-gic.svg new file mode 100755 index 0000000..554a076 --- /dev/null +++ b/images/virtual-gic.svg @@ -0,0 +1 @@ +Virtual GICRing Buffer for virtual gic commandCPUCPU1. write gic command to virtual gic2. send ipi to master osReal GIC3. read gic command from source4. apply gic command to real gic \ No newline at end of file diff --git a/meta/main.md b/meta/main.md new file mode 100644 index 0000000..39b5d15 --- /dev/null +++ b/meta/main.md @@ -0,0 +1,36 @@ +Dysche整体框架 +--- + +Dysche本质上是一种部分虚拟化的策略。相较于当前虚拟化中,将全部硬件虚拟化,分配给多个OS使用。Dysche仅将一些无法直接供给多个OS使用的硬件进行虚拟化,其他硬件则不做虚拟化。从运行效率来说,Dysche有天然的优势。 + +为了支持相关策略,MasterOS需要拥有如下基本能力 +1. Master OS 预留出对应硬件资源 +2. Master OS 拥有能力从剩余的硬件中拉起其他二进制系统 + +这里,将Linux作为基础的Master OS,需要添加相关的能力到Linux。整个其中最基本的CPU和内存资源可以逻辑划分,几个OS独立使用。但是对于一般架构的很多设备,设备操作是有上下文的,不能交予每个OS独立使用,需要适度的虚拟化。因此,对于每个OS,会有部分硬件资源为真实硬件资源,另外一部分为虚拟资源。 + +![总体设计](../images/dysche-main.svg) + +Dysche最终目标为支持运行所有类型设备,当然这个愿景是长期的,不能一蹴而就。 + +以下是从产出可视化的角度,规划几个阶段的任务: + +# Slave分区——支持纯计算业务 + +为了维持纯计算业务的正常运行,仅需要CPU,内存,中断控制器正常工作。其中CPU和内存使用真实硬件,为最基本的运行条件,(CPU运行级别保持和Master OS一致);中断相关涉及两个方面的工作,中断配置和中断route及处理,Slave中需要有一个虚拟的中断控制器,完成对时钟中断的配置,而中断route则由真实的中断控制器直接route到真实CPU,交由Slave中系统处理。 + +该阶段,主要有如下工作: +1. Master资源预留(必须) +2. Master OS拉起Slave OS(必须) +4. Slave OS中虚拟中断控制器(必须) +3. Slave OS独立硬件视图,使用ACPI或者DTB的形式(便于管理,便于后续) +5. Slave OS虚拟串口(便于使用) + +PS: 对于虚拟中断控制器,实现时可先不支持MSI中断,设计时应考虑后续扩展支持MSI的可能性。 +![virtual gic](../images/virtual-gic.svg) + +开发原则 +1. 尽量减少对个系统耦合,避免侵入式修改 + +# Slave分区——支持设备操作 + -- Gitee