汽车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的运行模式,以及各种模式的切换方式。接下来,我们要继续深度研究每个模式下的寄存器、内存管理机制、中断虚拟化等内容。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文心一言 VS 讯飞星火 VS chatgpt (139)-- 算法导论11.4 3题

三、用go语言,考虑一个采用均匀散列的开放寻址散列表。当装载因子为 3/4 和 7/8 时,试分别给出一次不成功查找和一次成功查找的探查期望数上界。 文心一言: 在开放寻址法中,当散列表的装载因子超过其阈值时,会触发重…

15.ORACLE11g的归档方式和日志文件的相关操作

ORACLE11g的归档方式和日志文件的相关操作 一、什么是日志文件1、在线日志文件2、归档日志文件 二、Oracle 11g 归档方式:1、归档方式状态2、归档日志方式下数据库的工作原理3、配置归档日志方式3.1 开启归档模式3.2 日志文件相关操作: 4、oracle11g联机…

前台查看日志功能

前台 <template><div id="logContent"><div class="onlinlog"><div class="left"><div class="number">显示字符数:<span><el-selectv-model="strNumber"placeholder="50000…

七、文件包含漏洞

一、文件包含漏洞 解释&#xff1a;文件包含漏洞是一种注入型漏洞&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务端执行&#xff1b;其还能够使得服务器上的源代码被读取&#xff0c;在PHP里面我们把可重复使用的函数写入到单个文件中&#x…

【Linux】线程互斥

文章目录 线程互斥互斥量 mutex初始化互斥量加锁与解锁 可重入和线程安全常见的线程安全情况常见的线程安全的情况常见的不可重入情况常见的可重入情况可重入与线程安全联系可重入与线程安全区别 死锁死锁的四个必要条件避免死锁 线程互斥 进程线程间的互斥相关背景概念 临界…

深度学习:欠拟合与过拟合

1 定义 1.1 模型欠拟合 AI模型的欠拟合&#xff08;Underfitting&#xff09;发生在模型未能充分学习训练数据中的模式和结构时&#xff0c;导致它在训练集和验证集上都表现不佳。欠拟合通常是由于模型太过简单&#xff0c;没有足够的能力捕捉到数据的复杂性和细节。 1.2 模型…

前端 CSS 经典:省略号

1. 单行省略 .ellipsis {overflow: hidden;white-space: nowrap;text-overflow: ellipsis; } 2. 双行省略&#xff08;webkit 内核&#xff09; .ellipsis {display: -webkit-box; /* 显示多行文本容器 */-webkit-box-orient: vertical;-webkit-line-clamp: 2; /*显示行数*/…

API接口测试工具为什么尤其重要

在现代软件开发中&#xff0c;API接口测试工具扮演着关键的角色&#xff0c;连接不同的软件组件&#xff0c;实现数据传递和功能调用。为确保API的可靠性、安全性和性能&#xff0c;此工具成为不可或缺的一部分。本文将介绍API接口测试工具的重要性! 1. 自动化测试的效率 API接…

2023数维杯数学建模C题完整版本

已经完成全部版本&#xff0c;获取请查看文末下方名片 摘要 随着人工智能在多个领域的快速发展&#xff0c;其在文本生成上的应用引起了广泛关注。本研究聚焦于辨识人工智能&#xff08;AI&#xff09;生成文本的基本规则&#xff0c;并探究AI文本的检测及其与人类文本的区分…

哪些软件可以监控电脑(保姆级教程!值得收藏!)

今天了解到了一个软件&#xff0c;真的把我吓到了。 我才知道原来我上班时摸鱼时多么愚蠢的一件事情。原来老板可以通过一些软件轻而易举的知道你用电脑做的所有事情&#xff0c;怪不得我每次摸鱼时老板看我的眼神都不对…… 安装好域之盾软件以后&#xff0c;打开就能监控你使…

Typescript 的 class 类

介绍 1. 类介绍 传统的JavaScript通过函数和基于原型的继承来创建可重用的组件&#xff0c;从ES6开始&#xff0c;JavaScript程序员也可以使用面向对象的方法来创建对象。例如&#xff0c;下列通过class关键词&#xff0c;来声明了一个类&#xff1a;Greeter class Greeter …

【maven】手动指定jar推送

说明 为了推送第三方的jar&#xff0c;有时需要指定对应的jar推送到私有仓库。 示例 mvn deploy:deploy-file --settings /home/xxx/.m2/settings.xml -DgroupIdgroupId的值 -DartifactIdartifactId的值 -Dversionjar包的版本号 -Dpackagingjar -Dfilejar的路径 -Durlhttp:/…

forEach/map中使用await报错或没有拿到实际的返回参数解决方法

arr.forEach(async item > {const res await fetch(item)console.log(res)})在forEach/map中使用await会报错 &#xff0c;或者并没有拿到实际的返回参数。 原因&#xff1a; https://juejin.cn/post/6844903824453271559#heading-10 https://juejin.cn/post/6999795230…

SystemV共享内存

一、原理 申请&#xff1a;与共享库类似&#xff0c;OS先在共享区开辟/申请一段共享内存&#xff0c;然后通过页表映射&#xff0c;挂接到进程地址空间&#xff0c;返回这块内存的首地址&#xff0c;使得不同进程能访问同一份资源。 释放&#xff1a;去关联释放共享内存 一个进…

DSP2335的按键输入key工程笔记

配置输入 时钟 方向 下拉 本文使用的是矩阵按键 12 13 14 为物理上拉输入&#xff0c;48 49 50为输出&#xff1b; 可以考虑输入AQ滤波&#xff1b;里面没有加&#xff1b; /** key.c** Created on: 2023年11月19日* Author: peng*/ #include"key.h" #in…

MySQL Select 语句执行顺序

一条 SQL 查询语句结构如下&#xff1a; SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_conditio…

Java智慧工地SaaS管理平台源码:AI/云计算/物联网

智慧工地是指运用信息化手段&#xff0c;围绕施工过程管理&#xff0c;建立互联协同、智能生产、科学管理的施工项目信息化生态圈&#xff0c;并将此数据在虚拟现实环境下与物联网采集到的工程信息进行数据挖掘分析&#xff0c;提供过程趋势预测及专家预案&#xff0c;实现工程…

【Linux】常用系统工作命令

一、Linux文档目录结构 在Linux系统中&#xff0c;目录、字符设备、套接字、硬盘、光驱、打印机等都被抽象成文件形式&#xff0c;“Linux系统中一切都是文件”。Linux系统中的一切文件都是从"根"目录&#xff08;/&#xff09;开始的&#xff0c;并按照文件系统层次…

CSS 文本属性篇

文字颜色 属性名&#xff1a;color作用&#xff1a;控制文字的颜色可选值&#xff1a; 1.颜色名 color: blue; 2.rgb或rgba color:rgb(132, 220, 254); color:rgba(132, 220, 254,0.5); 3.hex或hexa&#xff08;十六进制&#xff09; color:#0078d4; color:#0078d48b; 4.hsl或h…

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

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