微软做网站软件,网站内页可以做关键词优化吗,如何自己制作微网站,猎趣网站目录
1.引入
2.TC4xx如何实现中断虚拟化
3.小结 1.引入
其实不管内核怎么变#xff0c;针对中断虚拟化无非就是上面两种#xff0c;要么透传给VM#xff0c;要么由Hypervisor统一分发。汽车MCU虚拟化--对中断虚拟化的思考(1)-CSDN博客
那么#xff0c;作为车规MCU龙头…目录
1.引入
2.TC4xx如何实现中断虚拟化
3.小结 1.引入
其实不管内核怎么变针对中断虚拟化无非就是上面两种要么透传给VM要么由Hypervisor统一分发。汽车MCU虚拟化--对中断虚拟化的思考(1)-CSDN博客
那么作为车规MCU龙头的英飞凌在TC4xx是如何考虑中断虚拟化的呢
2.TC4xx如何实现中断虚拟化
TC4xx的内核为TC1.8支持虚拟化功能
每个核有三套独立硬件资源HRHV、HRA、HRB可支持最大8个VM其中VM0运行hypervisorVM1运行实时虚拟机VM2-7运行其他VM如下图所示 图 15
HRVH – Hypervisor hardware resourceVM0HRA – Real time virtual machine hardware resource (VM1)HRB – Other virtual machine hardware resource (VM2-7)
上面提到既然每个核支持最大8个VM那么针对中断的处理也有对应8套资源这里我们回到开头那几个问题
假设被分配到的VM此时还没有运行怎么办假设被分配到的VM此时正在处理中断怎么办
首先来看图说话如下
正常时间片为2000usVM1占用500usVM2占用1000usVM3占用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应该是有借鉴意义。