汽车MCU虚拟化--对中断虚拟化的思考(2)

目录

1.引入

2.TC4xx如何实现中断虚拟化

3.小结


1.引入

其实不管内核怎么变,针对中断虚拟化无非就是上面两种,要么透传给VM,要么由Hypervisor统一分发。汽车MCU虚拟化--对中断虚拟化的思考(1)-CSDN博客

那么,作为车规MCU龙头的英飞凌在TC4xx是如何考虑中断虚拟化的呢?

2.TC4xx如何实现中断虚拟化

TC4xx的内核为TC1.8,支持虚拟化功能,

每个核有三套独立硬件资源HRHV、HRA、HRB,可支持最大8个VM,其中VM0运行hypervisor,VM1运行实时虚拟机,VM2-7运行其他VM,如下图所示:

图 15

  • HRVH – Hypervisor hardware resource(VM0)
  • HRA – Real time virtual machine hardware resource (VM1)
  • HRB – Other virtual machine hardware resource (VM2-7)

上面提到,既然每个核支持最大8个VM,那么针对中断的处理也有对应8套资源,这里我们回到开头那几个问题:

  • 假设被分配到的VM此时还没有运行怎么办?
  • 假设被分配到的VM此时正在处理中断怎么办?

首先来看图说话,如下:

正常时间片为2000us,VM1占用500us,VM2占用1000us,VM3占用500us;

当VM2正在运行时,此时来了一个VM1的中断,该中断可以抢占VM2的时间,所以此时Hyperviosr需要将VM2的上下文保存,并切换到VM1,让其完成ISR处理,然后恢复现场VM2继续运行;

当VM3正在运行时,此时来了一个VM2的中断,但它不可抢占VM3的时间,所以需要VM3运行完毕后切换到VM2的ISR进行处理,当然这里也挤压了VM1的时间。

TC4xx是如何实现上述功能的呢?

在他们的设计中,每个中断SRN都可以被拓展分配给1个VM;每个VM都有自己独立的中断状态控制寄存器,包括当前VM中断系统是否使能(简称VMIE)、当前VM的优先级(简称VMCP)、Pending中断优先级(简称VMPIP);

为了实现运行VM在收到其他VM中断时可被抢占,新增了抢占阈值寄存器,简称THR,好玩的就来了。

假设当前正在运行VM1,此时来了一个VM0的中断,如果此时进来的Pending中断优先级高于VM0配置的抢占阈值,同时高于VM0的当前优先级,那么Hypervisor就需要进行上下文切换,返回到VM0处理中断,伪代码如下:

if (INT.VM_coming == current VM)
{if ((VMPIP > VM_coming.VMCP) && (VM_coming.IE ){isr_routine();}else{Keep INT Pending}
}
else (INT.vm_coming == VM0 )
{if ((VMPIP > VM0.VMCP) && (VMPIP > VM0.THR){Switch to HRHV    isr_routine();}else{Keep INT Pending}
}

同理,如果当前VM0、VM1、VM2同时运行,也需要执行上述步骤,只是在VM2如果要抢占VM1时,需要在Hypervisor模式下首先保存VM1的上下文到HRA,然后切换到HRB,让VM2进行中断处理。

本质上,这样的机制和透传很像,只是我们可以通过Hypervisor配置每个VM的中断状态控制器寄存器、抢占阈值寄存器来实现中断实时性的控制, 例如:

当我们把阈值配置为最大时,此时谁也无法进行抢占(Trap除外),只能得到时间片走完;如果阈值配置为最小,那就是直接透传,这时候性能最优。

3.小结

上面几节内容,记录了我对于中断虚拟化的思考过程。

其实在车载领域,特别是座舱域,仪表和中控是肯定要跑虚拟化的,目前用的最多是QNX Hypervisor,它关于CPU虚拟化、内存虚拟化、中断虚拟化、虚拟机通信等的视线对于目前MCU上Hypervisor应该是有借鉴意义。

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

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

相关文章

Docker基础篇之将本地镜像发布到私有库

文章目录 1. Docker Registry简介2. 将本地镜像推送到私有库 1. Docker Registry简介 Docker Registry是官方提供的工具,可以用于构建私有镜像仓库。 2. 将本地镜像推送到私有库 下载Docker Registry docker pull registry现在我们可以从镜像中看到下载的Regist…

Go语言垃圾回收(GC原理)

1. GC回收机制 1.1 V1.3标记清除法 (1)概述 1.STW暂停 STW(暂停业务逻辑,找出可达和不可达对象) 2.对可达对象做上标记 标记完成之后,对象5和对象6不可达,被GC清除.之后STW结束. (2).缺点 STW :让程序暂停,程序出现卡顿.标记需要扫描整个heap.清除数据会产生heap碎片. 1.…

【 0 基础 Docker 极速入门】镜像、容器、常用命令总结

Docker Images(镜像)生命周期 Docker 是一个用于创建、部署和运行应用容器的平台。为了更好地理解 Docker 的生命周期,以下是相关概念的介绍,并说明它们如何相互关联: Docker: Docker 是一个开源平台&#…

JAVA基础|File,IO流

File类只能对文件本身进行操作,不能读写文件里面存储的数据 IO流就是对文件进行读写的 一. File类 (一)创建对象 import java.io.File;public class FileTest1 {public static void main(String[] args) {// 1. 创建一个File对象&#xff…

Parallels Desktop for Mac 19.4.0更新了哪些内容?有什么改进?

带来了重新设计的共享 Mac 文件夹版本,这些文件夹现在是符号链接,像指针一样指向您的 Mac 文件夹中的文件,同时仍然显示在 Windows 的本地磁盘上。 修复了由于共享文件夹问题导致 NinjaTrader 无法正常启动的问题。 修复了由于共享文件夹问…

Linux VSCode和Debug相关的备忘

在使用Linux时,总是会遇到一些意想不到的困难。而且似乎无穷无尽。这里打算写一个笔记,以后逐步来完善。特别是:调试的技能,总是占程序员的主要部分。在设置可视化调试环境过程中,常会同样陷入困境,有时深感…

小猪APP分发:如何轻松进行在线封装APP

你是否曾经因为需要封装一个新版本的APP而感到头疼?传统的封装过程往往繁琐且耗时。但是,别担心,现在有了“小猪APP分发”,一切变得如此简单。 小猪APP分发www.appzhu.net是一个专门提供在线APP封装服务的平台。无论你是开发者还…

Assignement5: Multi-threaded Producer Consumer Pipeline

Assignement5: Multi-threaded Producer Consumer Pipeline. 一起来打卡学习!

NetApp 面向医疗保健行业的解决方案

NetApp 面向医疗保健行业的解决方案 旨在为您提供令人惊叹的临床应用程序性能,并通过内置的安全性和监控功能,由无中断的运营连续性提供支持。 为护理而设计 对于专注于整个医疗保健产业链(包括提供商、付款方、生命科学)的创新能…

跟着AI学AI_02, 时域频域和MFCC

AI:ChatGPT4o 时域和频域是信号处理中的两个基本概念,用于描述信号的不同特性。 时域 时域(Time Domain) 是对信号随时间变化的描述。在时域中,信号是作为时间的函数来表示的。 时域表示:例如&#xff0…

【热点】老黄粉碎摩尔定律被,量产Blackwell解决ChatGPT耗电难题

6月3日,老黄又高调向全世界秀了一把:已经量产的Blackwell,8年内将把1.8万亿参数GPT-4的训练能耗狂砍到1/350; 英伟达惊人的产品迭代,直接原地冲破摩尔定律;Blackwell的后三代路线图,也一口气被…

【康耐视国产案例】智能AI相机联合OSARO为Zenni眼镜实现订单履约自动化

在电商潮流下,Zenni眼镜作为全球领先的在线眼镜零售商,每年销售超过600万副眼镜,却面临着一个独特而复杂的问题——需要通过扫描眼镜盒内的条形码来处理订单。传统手动处理已经到达流程瓶颈,急需一种更加自动化、可扩展的方法。为…

Pikachu靶场下载、配置

目录 下载 配置 新版小蓝皮 搭建网站 搭建数据库 初始化靶场 旧版小绿皮 配置数据库 配置网站 下载 GitHub下载地址: 百度网盘:https://pan.baidu.com/s/1j2WpdLvwAbmpAH76d_yitw?pwdwf8j 提取码:wf8j 迅雷链接:http…

【STL深入浅出】之从零到精通:vector使用与模拟

📃博客主页: 小镇敲码人 💚代码仓库,欢迎访问 🚀 欢迎关注:👍点赞 👂🏽留言 😍收藏 🌏 任尔江湖满血骨,我自踏雪寻梅香。 万千浮云遮碧…

thinkphp6 queue队列的maxTries自定义

前景需求:在我们用队列的时候发现maxtries的个数时255次,这个太影响其他队列任务 我目前使用的thinkphp版本是6.1 第一部定义一个新的类 CustomDataBase(我用的mysql数据库存放的队列) 重写__make 和createPlainPayload方法 …

每日两题 / 34. 在排序数组中查找元素的第一个和最后一个位置 33. 搜索旋转排序数组(LeetCode热题100)

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣&#xff08;LeetCode&#xff09; 根据二分函数&#xff0c;得到>target和<target的两个&#xff0c;分别是答案的l和r class Solution { public:vector<int> searchRange(vector<int>& nums,…

【Uniapp小程序】自定义导航栏uni-nav-bar滚动渐变色

效果图 新建activityScrollTop.js作为mixins export default {data() {return {navBgColor: "rgba(0,0,0,0)", // 初始背景颜色为完全透明navTextColor: "rgba(0,0,0,1)", // 初始文字颜色};},onPageScroll(e) {// 设置背景const newAlpha Math.min((e.s…

小学数学出题器-Word插件-大珩助手

Word大珩助手是一款功能丰富的Office Word插件&#xff0c;旨在提高用户在处理文档时的效率。它具有多种实用的功能&#xff0c;能够帮助用户轻松修改、优化和管理Word文件&#xff0c;从而打造出专业而精美的文档。 【新功能】小学数学出题器 1、实现了难度设定&#xff1b;…

HCIP-Datacom-ARST自选题库__MAC【14道题】

一、单选题 1.缺省情况下&#xff0c;以下哪种安全MAC地址类型在设备重启后表项会丢失? 黑洞MAC地址 Sticky MAC地址 安全动态MAC地址 安全静态MAC地址 2.华为交换机MAC地址表中的动态sticky MAC地址的默认老化时间是多少秒? 300 不会老化 400 500 3.华为交换机MA…

Golang | Leetcode Golang题解之第129题求根节点到叶节点数字之和

题目&#xff1a; 题解&#xff1a; type pair struct {node *TreeNodenum int }func sumNumbers(root *TreeNode) (sum int) {if root nil {return}queue : []pair{{root, root.Val}}for len(queue) > 0 {p : queue[0]queue queue[1:]left, right, num : p.node.Left, …