汽车ECU的虚拟化技术初探(三)--U2A虚拟化辅助功能分析1

目录

1.基本概述

1.1 U2A虚拟化辅助功能

1.2 U2A虚拟化使能和资源分配

2. U2A架构概述 

3. CPU运行模式

3.1 虚拟化模式

3.2 限制运行模式

 3.3 权限运行模式

3.4 CPU运行模式小结

4.小结


1.基本概述

1.1 U2A虚拟化辅助功能

       在汽车ECU的虚拟化技术初探(二)-CSDN博客中我们聊到,U2A硬件本身的虚拟化辅助功能只能称为半虚拟化,该芯片主要是提供了一种叫做分区功能(partiton function)用于实现虚拟化辅助,该功能对运行在该CPU的软件做了硬件限制,从而将CPU的资源隔离开来;那么运行在虚拟机上的ECU就感觉不到虚拟机的存在,还是像以前一样部署OS即可使用。

1.2 U2A虚拟化使能和资源分配

        U2A虚拟化辅助功能是由CPU提供,通过指令LDSR设置系统寄存器HVCFG.HVE,如下:

        打开虚拟化功能之后,此时CPU就又出现了两种运行模式,Host Mode和Guest Mode。

         Host Mode可以使用CPU的所有资源,但是Guest Mode就不能使用CPU虚拟化相关的资源,同时也受Host Mode的限制。

        具体的资源分配主要由虚拟化软件来指定,但是软件分配好后,这种资源隔离机制由CPU提供,值得注意是CPU对通用寄存器没有隔离机制,因此需要在VM上下文切换时做好保存。CPU可以访问的主要资源如下:

隔离机制简介如下:

MPU:用于限制访问的地址空间

Guard Mechanism:产品指定的特殊访问限制机制,后面再聊

Partial Multiplexing:系统寄存器在Host/Guest Mode下多路复用

INTC:中断控制器特定的中断通道隔离机制

*5:Host指定是否使用Guest Mode

        可以看到,这里面光memory就有三种:Flash、Local、Cluster;同时CPU也分为了Outside和Inside,隔离机制由MPU和Guard Mechanism构成;这是以前MCU都没有的概念,因此今天着重分析上述内容。

2. U2A架构概述 

         首先我们来看U2A-EVA 516的CPU子系统架构框图:

        可以看到,瑞萨将4个核均分给了Cluster#0和#1,Cluster2和3仅包含了Cluster RAM;C#0和C#1里均有两个4MB的CodeFlash和一个64KB的LRAM。与之前RH850-P1x/F1KM系列,缺少了Global RAM,转为了Cluster RAM,这很有意思,为什么要改这个名字呢?后面看到再说。

        回过头来,我们根据这个图,就可以判断在上面资源分配所谓的Outside CPU其实就是指的当前这个资源是CPU子系统里的还是外面的,以Flash为例,CPU0访问FLI0必须通过Local FLASH Bus,因此它是CPU外部资源,采用MPU+Guard机制进行资源隔离。

        在第二篇文章中,我们知道虚拟化开启后,CPU新增了一种特权模式,叫做hypervisor privilege;不同的权限也对应不同的功能,所以我们来看看当虚拟化开启后,整个系统功能有哪些不一样。如下:

CPU功能区别描述
CPU运行模式Host/Guest Mode
访问权限在虚拟化开启后新增HV特权
系统寄存器访问权限有所变化,因为新增了HV
指令执行权限有所变化,因为新增了HV
异常处理地址

Host模式,限制使用表引用异常

Guest模式,限制使用异常基地址使用

异常根因如RESET\FENMI..等等可以隔离机制来清晰分辨vCPU
异常接收条件基于异常根因设置接收条件
内部memory保护Host Mode下设置MPU,在Guest Mode无法修改
虚拟化相关系统寄存器仅在虚拟化模式下可以使用虚拟化相关寄存器
Host上下文寄存器Host和Guest切换时复用上下文系统寄存器以节省资源、提升效率
Guest上下文寄存器
MPU系统寄存器实现隔离机制
虚拟化辅助指令仅在虚拟化模式支持指令

        所以,可以初步得出一个结论,U2A提供的虚拟化辅助功能主要还是从CPU角度出发,分别对CPU运行模式、虚拟化模式的异常处理、内存隔离、存储隔离、指令增加以及特权变化做了硬件机制上的新增。

3. CPU运行模式

        在第二篇虚拟化描述中,我们简单把CPU模式的框图描述了下,今天再详细说明模式的跳转、功能限制等。

        U2A基于RISC自行设计的G4MH2内核,它支持3种独立的模式:虚拟化模式、有限制运行模式和权限模式。

3.1 虚拟化模式

        该模式主要用于表征CPU虚拟化辅助功能的使用状态,使用系统寄存器HVCFG.HVE进行切换,如下:

        传统模式就是ECU直接运行在裸机上面,因此不能使用虚拟化相关功能或者指令,否则会触发RIE(reserved instruction exception)。

3.2 限制运行模式

         如上图所示CPU切换到虚拟化模式后,首先会进入到虚拟化模式中的限制运行子模式Host Mode,如下图所示:

        Host Mode:该模式下不能使用隔离机制(partition function);

        Guest Mode:可以使用隔离机制。

        因此,我们这里做一些总结,在CPU最初情况下,有两种运行模式可以选择:conventional和virtualized,当选择virtualized模式之后,会进入该模式下的子状态:Host Mode。Host可以通过寄存器PSWH进入到Guest Mode,如下:

        当虚拟化使能后(HVCFG.HV = 1),PSW寄存器编程了扩展性寄存器,如下:

        这里有一个很关键的点,GM这一bit是只读的,因此如何使得CPU从Host跳转至Guest模式呢?根据描述需要使用return指令,例如EIRET,

         所以我们看到上图,有一个xxPSWH,可以实际举例为EIPSWH,如下:

 3.3 权限运行模式

        权限运行模式主要针对软件的操作权限,分为Supervisor Mode(SV)和User Mode,这些权限通俗讲就是用于操作某些寄存器(寄存器受不同权限保护)。很明显,不管是在3.1、3.2哪种模式,软件权限划分都要分SV和UM。例如在传统运行模式中,通知App是运行在UM里,OS才有SV权限去完全调度CPU资源,因此我们可以把这些权限全部贴进上述模式中,如下:

        而在Host Mode下,有一种独有权限,叫做HV(Hypervisor privilege) ,用于操作受HV保护的寄存器。

3.4 CPU运行模式小结

        有了上述基本概念,我们再回过头来看瑞萨提供的这张图就清晰了,如下:

  1. CPU运行后,首先在Conventional Mode运行,如果不使用虚拟化,那么软件就可以在SV/UM权限去操作不同的寄存器或者资源;
  2. 使能虚拟化后,CPU进入到Virtualized Mode,并且此时软件处在HV特权下;同时Hypervisor的软件也可以在HV\UM跳转;
  3. 当真正运行虚拟机之后,进入到Guest Mode,并且与传统模式一样拥有SV和UM权限

        那么具体模式之间跳转后的PC、上下文以及对应寄存器有哪些呢?先来一个Host Mode 寄存器模型大图:

         这里暂时不提,不然大伙儿就没兴趣看了。

4.小结

        今天讲清楚了CPU的运行模式,以及各种模式的切换方式。接下来,我们要继续深度研究每个模式下的寄存器、内存管理机制、中断虚拟化等内容。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/159828.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Boolean源码解剖学

原创/朱季谦 有天突发其想,想看一下Boolean底层都做了些什么,故而去看了一番Boolean的源码,基于一些思考的基础上,输出了这篇文章。 一.类继承 Boolean的源码类定义部分如下: 1 public final class Boolean implemen…

初学Redis(Redis的启动以及字符串String)

首先使用在Windows PowerShell中输入指令来启动Redis: redis-server.exe 然后通过指令连接Redis: redis-cli 上图的127.0.0.1是计算机的回送地址 ,6379是默认端口 上述代码中创建了两个键,注意Redis中严格区分大小写&#xff0…

策略模式在数据接收和发送场景的应用(升级版)

1.背景 在数据接收和发送场景打算使用了 if else 进行判断: if("A".equals(system)){ASystem.sync("向A同步数据"); } if("B".equals(system)){BSystem.sync("向B同步数据"); } ... 非常麻烦,需求多了很臃肿&…

phpStorm Xdebug调试 加FireFox浏览器

步骤1: [Xdebug] zend_extension“D:\phpstudy_pro\Extensions\php\php5.4.45nts\ext\php_xdebug.dll” xdebug.collect_params1 xdebug.collect_return1 xdebug.remote_enableOn xdebug.remote_hostlocalhost xdebug.remote_port9001 xdebug.remote_handlerdbgp ;…

什么是Sectigo SSL证书

Sectigo SSL证书是由全球领先的网络安全公司Comodo和Symantec合并后成立的Sectigo公司所提供的一种数字证书。它能够为您的网站提供一个强大的安全套接字层(SSL)加密,确保您的网站与用户的数据传输过程中的安全性。 为什么选择Sectigo SSL证…

Django学习日志07

多表查询(跨表查询) 子查询:分步查询 链表查询:把多个有关系的表拼接成一个大表(虚拟表) inner join left join 展示左表所有数据数据,右表展示符合查询条件的数据,查询不到的用null填充 …

Flume学习笔记(2)—— Flume进阶

Flume进阶 Flume 事务 事务处理流程如下: Put doPut:将批数据先写入临时缓冲区putListdoCommit:检查channel内存队列是否足够合并。doRollback:channel内存队列空间不足,回滚数据 Take doTake:将数据取…

笔记54:门控循环单元 GRU

本地笔记地址:D:\work_file\DeepLearning_Learning\03_个人笔记\3.循环神经网络\第9章:动手学深度学习~现代循环神经网络 a a a a a a a

802.1Qbb

[TOC] 802.1Qbb 802.1Qbb是什么? 802.1Qbb(基于优先级的流控制,PFC)是以太网数据中心中一项重要的标准,用于提供无丢包的网络环境。这项标准是IEEE 802.1Q标准的一部分,旨在解决以太网数据中心网络中的拥…

基于共生生物算法优化概率神经网络PNN的分类预测 - 附代码

基于共生生物算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于共生生物算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于共生生物优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

C++语言的由来与发展历程

C语言的由来与发展历程可以追溯到1978年,当时美国电话电报公司(AT&T)的贝尔实验室发明了C语言,以满足UNIX操作系统的开发需求。在C语言的基础上,Bjarne Stroustrup于1983年创立了C编程语言,作为C语言的…

Linux 安装多版本 JDK 详细过程

背景说明 服务器已安装jdk1.8,但随着spring全家桶的升级换代,已不满足使用,先要用高版本jdk,暂时不想卸载旧的版本,故安装两个版本,jdk1.8和jdk17,jdk1.8的已经安装过了,所以此次只安装jdk17,以及配置jdk切…

homeassiant主题

下载主题 https://github.com/maartenpaauw/home-assistant-community-themes.git 使用file editor到homeassiant路径下,新建文件夹themes文件夹,用terminal新建也可以。 使用file editor上传文件 使用Terminal解压 mkdir themes unzip home-assistan…

振弦传感器表面钢筋计与振弦采集仪形成岩土工程监测的案例

振弦传感器表面钢筋计与振弦采集仪形成岩土工程监测的案例 振弦传感器和表面钢筋计是岩土工程监测中常用的仪器设备,可用于测量结构物的振动和变形情况,以及土体的变形和应力状态等。 以下是一个振弦传感器和表面钢筋计结合使用的案例: 在一…

【Python入门五】第三方库(包)介绍

Python第三方库/包介绍 前言安装方法 2 数据分析和处理netCDF4numpyxarray 3参考 前言 Python 的库分为2类。 标准库:不需要安装,需要导入。第三库:需要安装、需要导入。 Python的标准库中提供了许多有用的模块和功能,如字符串…

OpenCV技术应用(4)— 如何改变图像的透明度

前言:Hello大家好,我是小哥谈。本节课就手把手教你如何改变图像的透明度,希望大家学习之后能够有所收获~!🌈 目录 🚀1.技术介绍 🚀2.实现代码 🚀1.技术介绍 改变图像透明度的实…

Flink(六)【DataFrame 转换算子(下)】

前言 今天学习剩下的转换算子。 1、物理分区算子 常见的物理分区策略有随机分配(Random)、轮询分配(Round-Robin)、重缩放(Rescale)和广播(Broadcast),下边我们分别来做…

【TEC100TAI-KIT】青翼科技基于复微青龙JFMQL100TAI的全国产化智能异构计算平台

板卡概述 TEC100TAI-KIT是我司自主研制的一款基于上海复旦微电子复微青龙100TAI的全国产智能异构计算平台开发套件,该套件包含1个复微青龙100TAI核心板和1个PCIE规格的扩展底板。 该套件的核心板集成了100TAI的最小系统,包含一颗JFMQL100TAI900片上系统…

《网络协议》08. 概念补充

title: 《网络协议》08. 概念补充 date: 2022-10-06 18:33:04 updated: 2023-11-17 10:35:52 categories: 学习记录:网络协议 excerpt: 代理、VPN、CDN、网络爬虫、无线网络、缓存、Cookie & Session、RESTful。 comments: false tags: top_image: /images/back…

网络规模与性能优化的一篇随笔

本周写篇轻松的话题,注意信息传输的尺度和缩放比例,写篇随笔。 控制面和数据面随规模缩放的影响,举几个例子就能说明白。 CSMA/CD,控制面和数据面在一起,控制信息交互时延和数据面时延在同一尺度时,就到了…