CN115220864A - 虚拟模式执行管理器 - Google Patents
虚拟模式执行管理器 Download PDFInfo
- Publication number
- CN115220864A CN115220864A CN202210412237.5A CN202210412237A CN115220864A CN 115220864 A CN115220864 A CN 115220864A CN 202210412237 A CN202210412237 A CN 202210412237A CN 115220864 A CN115220864 A CN 115220864A
- Authority
- CN
- China
- Prior art keywords
- execution mode
- virtual machine
- virtual
- subset
- mode
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
- G06F9/4856—Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45575—Starting, stopping, suspending or resuming virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Microcomputers (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本文涉及虚拟模式执行管理器,公开了用于简化改变虚拟机及其相关资源的执行模式的处理的硬件。通过采用硬件,可以自动方式触发执行模式的改变,而无需软件干预,也不会干扰其他虚拟机的执行。此外,在虚拟机出现错误并被检测到的情况下,硬件可用于禁用与该虚拟机相关的资源,并向其他硬件生成完成此操作的通知,这将完成虚拟机的重置。通过采用硬件,执行模式的改变得到了简化,并为运行多个虚拟机的系统提供了可配置性和灵活性。
Description
技术领域
本发明涉及计算环境中的虚拟机领域,并且具体涉及用于在不执行资源和/或外围设备的全局重置或全局暂停的情况下执行虚拟机的模式改变的基于硬件的技术。
背景技术
新一代的微控制器(诸如那些用于汽车领域的微控制器)变得越来越复杂。例如,这种复杂性的增加是由于越来越多的所需功能(新协议、新特征等)以及执行条件的严格限制(例如,较低的功耗、增加的计算能力和速度、较短的启动时间等)。在复杂性增长的同时,还期望微控制器配置的灵活性,以便为以前需要多个微控制器的产品提供单微控制器解决方案。因此,虚拟化功能正日益成为为汽车市场开发的微控制器的一部分。
虚拟化涉及在同一微控制器上运行的不同应用程序,每个应用程序使用的资源具有限定的分离,目的是避免一个虚拟应用程序(通常称为“虚拟机”)访问分配给另一个虚拟应用程序的资源。
虚拟化可以是物理的,也可以是逻辑的。当多个中央处理单元(CPU)或具有多个内核的CPU包含在一个微控制器中并且这些CPU被静态地分配给不同的虚拟机时,就存在物理虚拟化。在这种情况下,每个虚拟机都与特定的CPU或内核相关联,并且其应用程序软件仅限于在该特定的CPU或内核上运行。因此,物理虚拟化意味着每个虚拟机并行运行,因为每个虚拟机使用单独的CPU或内核。
当一组CPU(或CPU内的一组内核)不是静态划分并分配给不同的虚拟机,而是将多个虚拟机分配给单个CPU或内核时,就存在逻辑虚拟化。逻辑虚拟化意味着每个虚拟机都以分时模式运行,因为软件层(称为虚拟机监控程序)会根据预定义的策略一次一个地激活和去激活每个虚拟机。
还需要注意,也可能存在物理和逻辑虚拟化混合的情况,例如,多个CPU或内核实施物理虚拟化,而其他CPU或内核实施逻辑虚拟化。
虚拟化涉及的CPU或内核实施三种执行模式,即:用户(User)、特权(Privilege,也称为操作系统或OS模式)和虚拟机监控程序(Hypervisor)。
特权模式被分配给操作系统,其将应用程序运行时间划分为任务(或进程),每个任务(或进程)在预设时间内执行特定的限定功能。
操作系统的任务是一次激活一个任务,并执行该任务,直到下一个任务被激活,这可能发生在特定时间过后,或者因为发生了异步事件(如中断)。
操作系统以特权级别来执行,而任务(或进程)以用户级别来执行。当操作系统或任务正在运行时,执行级别由CPU或内核分配,并且这种执行级别的知识可作为边带信号而被硬件获得。
这使得可以使用专用逻辑硬件(可称为存储器保护单元(MPU))来调节对系统资源的访问。事实上,MPU可被编程来实施各种系统资源的访问规则。例如,当需要访问资源时,MPU将CPU或内核用于执行任务的执行级别与目标资源被请求的执行级别进行比较。基于比较,可以允许或阻止对该资源的访问。通过这种方式,可以将对某些资源的访问限制为特权执行级别。除执行级别之外,操作系统还可以为每个不同的任务分配任务(或进程)标识(ID)值。该信息(如果也可用作设备内分发的信号)也可由系统资源保护硬件或软件用于进一步调节对系统资源的访问。
虚拟化以类似的方式工作:专用软件层(称为虚拟机监控程序)根据特定策略(例如,分时等)激活各种虚拟机的执行。虚拟机监控程序以虚拟机监控程序级别运行,并且执行任务的级别可由CPU或内核来设置。因此,MPU可根据以下三个可能的级别来调节对各种系统资源的访问:虚拟机监控程序、特权(也称为OS)和用户级别。
此外,与上述操作系统对任务所做的类似,虚拟机监控程序为每个虚拟机分配唯一的标识符。该信息通常也可用作微控制器内分布的硬件(HW)边带信号,因此可被MPU使用来允许访问一个特定虚拟机的特定系统资源,并阻止其他虚拟机的访问。
因此,综上所述,通过使用存储器保护单元,系统资源(如外围设备(例如,与CPU相同的片上系统内的其他硬件设备)和相关功能)可通过配置可访问该资源的虚拟机标识(ID)而被单独分配给该特定虚拟机。
此外,可以对外围设备进行配置,使其不属于特定的虚拟机,并且可以仅以虚拟机监控程序级别对其进行访问。
记住虚拟机的这一背景,可能期望改变虚拟机的执行模式,并且这种执行模式的改变可能特别复杂,因为特定资源可在不同的虚拟机之间共享。更进一步,一些模式改变涉及系统的重置,诸如在特定基于ARM的内核的情况,在这些情况下,期望在CPU或内核可被重置之前完成由CPU或内核生成的未完成事务,否则系统可能进入死锁状态。此外,由于阻碍虚拟机执行的设备或软件故障,可能需要重置虚拟机。
因此,软件被卡住的虚拟机的重置不能由虚拟机本身执行,而是由另一虚拟机或虚拟机监控程序软件本身执行。因此可以理解,当仅在软件中执行时,整个机制可能会相当困难和耗时。
故障虚拟机的重置可分为以下几个阶段:
1.由系统故障收集器向专用于处理设备故障的虚拟机通知给定虚拟机发生故障;
2.出现故障的虚拟机不应答请求,并且被认为阻塞且需要重置;
3.分配给故障虚拟机的外围设备和资源用于完成未完成的事务或任务;以及
4.此后,将对分配给故障虚拟机的CPU或内核应用重置。
专用于处理模式改变的现有技术以虚拟机监控程序级别来执行,在模式改变之前,所有外围设备或资源都必须完成未完成的事务或任务。这带来各种不太理想的效果。因此,需要进一步开发虚拟机的模式改变。
发明内容
本文公开了一种微控制器,包括执行多个虚拟机的微处理器和多个外围设备,多个虚拟机中的不同虚拟机在以不同模式执行期间使用多个外围设备的不同子集。微控制器包括模式改变逻辑电路装置,被配置为:从微处理器接收模式改变请求,模式改变请求指示多个虚拟机中的哪些将改变执行模式以及这些虚拟机将要改变为何种执行模式;以及向虚拟执行模式管理器电路装置发送模式改变请求。
微控制器还包括虚拟执行模式管理器电路装置,被配置为:对于其执行模式被改变的每个虚拟机,向与虚拟机将要改变为的执行模式相对应的多个外围设备的子集发送时钟选通请求。
响应于时钟选通请求,多个外围设备的子集被配置为完成其当前操作,进入时钟选通状态,并向虚拟执行模式管理器发送时钟选通确认信号。虚拟执行模式管理器电路装置还被配置为:对于其执行模式被改变的每个虚拟机,向模式输入逻辑电路装置发送模式改变确认,指示该虚拟机的执行模式已经准备好被改变。其中模式改变逻辑电路装置进一步被配置为:对于执行模式被改变的每个虚拟机,将该虚拟机改变为其将要改变为的执行模式,并向虚拟执行模式管理器电路装置发送模式改变完成指示。虚拟执行模式管理器还被配置为:对于其执行模式已经被改变的每个虚拟机,生成中断并将该中断发送给微处理器。微处理器可包含多个内核,哪个内核接收中断是可配置的;接收中断的内核可以是执行其执行模式发生改变的相关虚拟机的内核,或者在一些情况下可以是不同的内核。
微控制器可以在虚拟执行模式管理器中为每个虚拟机包括寄存器集合,用于存储多个外围设备的哪个子集在何种执行模式下使用的指示,并且其中虚拟执行模式管理器可被配置为:对于其执行模式被改变的每个虚拟机,读取与该虚拟机将被改变为的执行模式相对应的寄存器,以便获知向多个外围设备中的哪个子集发送时钟选通请求。
寄存器集合可位于每个虚拟机的模式改变逻辑电路装置内,存储多个外围设备的哪个子集在何种执行模式下使用的指示,并且模式改变逻辑电路装置可被配置为:对于其执行模式被改变的每个虚拟机,读取与虚拟机将被改变为的执行模式相对应的寄存器,并将数据从这些寄存器发送到虚拟执行模式管理器,使得虚拟执行模式管理器获知向多个外围设备中的哪个子集发送时钟选通请求。
模式输入逻辑电路装置可被配置为:在将虚拟机改变为其将被改变为的执行模式期间,重新启动与这些执行模式相对应的外围设备的子集,使得它们从时钟选通状态切换回操作状态。
多个虚拟机可在微处理器的单个内核上执行。
虚拟执行模式管理器电路装置还可以被配置为:对于其执行模式被改变的每个虚拟机,向与虚拟机当前处于的执行模式相对应的多个外围设备的子集发送时钟选通请求,同时,向与虚拟机将要切换到的执行模式相对应的多个外围设备的子集发送时钟选通请求。此外,响应于发送的时钟选通请求,多个外围设备的子集可被配置为完成其当前操作,进入时钟选通状态,并向虚拟执行模式管理器发送时钟选通确认信号。
本文还公开了一种方法方面。该方法包括:以第一执行模式执行第一虚拟机,处于第一执行模式的第一虚拟机使用多个外围设备的第一子集;以第二执行模式执行第二虚拟机,处于第二执行模式的第二虚拟机使用多个外围设备的第二子集;向模式输入逻辑电路装置发送指示,用于指示第一虚拟机将被改变为以第三执行模式执行,第三执行模式使用多个外围设备的第三子集;从模式输入逻辑电路装置向虚拟执行模式管理器发送模式改变请求,用于指示第一虚拟机将要将模式改变为第三执行模式;从虚拟执行模式管理器向多个外围设备的第三子集发送时钟选通请求;响应于多个外围设备的第三子集完成当前任务,将第三子集置于时钟选通模式,并将时钟选通确认发送回虚拟执行模式管理器;从虚拟执行模式管理器向模式输入逻辑电路装置发送模式改变确认,用于指示第一虚拟机准备被改变为第三执行模式;将第一虚拟机改变为第三执行模式;从模式输入逻辑电路装置向虚拟执行模式管理器发送模式改变完成指示,以指示模式改变被完成;以及响应于接收到模式改变完成指示而生成中断。第一和第二虚拟机可在同一微处理器的不同内核上执行。在一些情况下,执行第一虚拟机的内核可接收中断,但在其他情况下,执行第二虚拟机的内核可代替的接收中断。哪个内核接收中断是可配置的。
该方法可进一步包括:在向多个外围设备的第三子集发送时钟选通请求的同时,从虚拟执行管理器向多个外围设备的第一子集发送时钟选通请求,并且响应于多个外围设备的第一子集完成当前任务,将第一子集置于时钟选通模式,以及在发送模式改变确认之前,将时钟选通确认发送回虚拟执行管理器。
该方法还可以包括:在虚拟执行模式管理器内的寄存器集合中存储多个外围设备的哪个子集将在何种执行模式下使用的指示,并且对于其执行模式改变的每个虚拟机,读取与该虚拟机将被改变为的执行模式相对应的寄存器,以便获知向多个外围设备的哪个子集发送时钟选通请求。
该方法还可以包括:在模式输入逻辑电路装置内的寄存器集合中存储多个外围设备的哪个子集将在何种执行模式下使用的指示,并且对于其执行模式改变的每个虚拟机,读取与虚拟机将被改变为的执行模式相对应的寄存器,并将数据从这些寄存器发送到虚拟执行模式管理器,使得虚拟执行模式管理器获知向多个外围设备中的哪个子集发送时钟选通请求。
该方法还可以包括:在将虚拟机改变为其将被改变为的执行模式期间,重新启动与这些执行模式相对应的外围设备的子集,使得它们从时钟选通状态切换回操作状态。
附图说明
图1是如本文所述集成了本文所述的虚拟执行模式管理器和模式输入硬件块的片上系统的框图,其能够切换虚拟机的执行模式。
图2是如本文所述包含在虚拟执行模式管理器或模式输入硬件块内的寄存器的框图,其用于存储关于哪些外围设备将被使能用于什么执行模式的数据。
具体实施方式
以下公开使本领域技术人员能够制造和使用本文公开的主题。本文所述的一般原理可应用于除以上详述之外的实施例和应用,而不脱离本发明的精神和范围。本公开不限于所示的实施例,而是被赋予与本文公开或建议的原理和特征一致的最广泛范围。
本文公开了硬件(诸如可实施到片上系统或其他微控制器中),其能够单独地改变各个虚拟机的执行模式,而不影响那些执行模式发生改变的虚拟机未使用的外围设备或资源。这通过允许识别在不同虚拟机的何种执行模式中使用哪些外围设备或资源来执行。这又会允许在重置虚拟机时进行部分系统重置而不是全局重置,并且还允许在不需要时禁用一些外围设备和资源来节省电源。
现在给出硬件和操作技术的细节。首先参考图1,描述了片上系统(SOC)100。SOC100包括微处理器101,诸如基于多核ARM的微处理器。微处理器101执行多个虚拟机以及用于管理这些虚拟机使用的资源的虚拟机监控程序。例如,微处理器101的每个内核可执行多个虚拟机。
SOC 100包括与微处理器101双向通信的易失性存储器(例如,随机存取存储器)102和非易失性存储器(例如,闪存RAM)103。SOC 100还包括多个外围设备Per_1、Per_2、…、Per_n,其中“n”是任意整数。这些外围设备Per_1、Per_2、…、Per_n可以是结合到SOC中的任何合适的设备。模式输入逻辑电路105(例如,执行状态机的硬件)被耦合到微处理器101,以从微处理器101接收模式改变指令(用于改变由微处理器101执行的一个或多个虚拟机的执行模式),并且虚拟执行模式管理器(VEMM)104(例如,执行状态机的硬件)被耦合到微处理器101以生成对微处理器的中断。模式输入逻辑电路105和VEMM 104彼此进行双向通信,与VEMM 104和外围设备Per_1、Per_2、…、Per_n一样。
图2所示为寄存器集合110_1、110_2、110_3、…、110_m和111_1、111_2、111_3、…、111_m被组织成组,每一组被用于由微处理器101执行的各个虚拟机(例如,VM_1、…、VM_x)。这些寄存器可包含在模式输入逻辑电路105内或VEMM 104内。寄存器中存储的是针对每个虚拟机执行模式的每个虚拟机可用的每个外围设备的状态定义。例如,寄存器110_1可指示当虚拟机VM_1处于第一执行模式Exec_Mode_1时,外围设备或资源的一个集合将被激活并可用,以及寄存器110_2可指示当虚拟机VM_1处于第二执行模式Exec_Mode_2时,外围设备或资源的不同集合将被激活并可用。类似地,寄存器111_1可指示当虚拟机VM_x处于第一执行模式Exec_Mode_1时,外围设备或资源的一个集合将被激活并可用,以及寄存器111_2可指示当虚拟机VM_x处于第二执行模式Exec_Mode_2时,外围设备或资源的不同集合将被激活并可用。
鉴于上述情况,现在描述由模式输入逻辑电路105和VEMM 104使能的模式切换操作。
最初,虚拟机(在微处理器101的一个或多个内核上执行)每个都处于启动模式,记住每个虚拟机的启动模式可以不同。然后,微处理器101(例如,在微处理器101中运行的虚拟机监控程序)向模式输入逻辑电路105发送模式改变指令,请求至少一个虚拟机从其启动模式改变为另一模式。模式改变指令包括哪个或哪些虚拟机将要改变模式的标识以及这些虚拟机要改变到的特定模式的标识,并且可以存储在模式输入逻辑电路105内的单独寄存器中。
然后,模式输入逻辑电路105向VEMM 104发送一个或多个模式改变请求Mode_Change_Req和一个或多个目标模式Target_Mode,指定哪个或哪些虚拟机要改变模式以及这些虚拟机要改变为何种模式,所有这些都可以存储在VEMM 104内的单独寄存器中。
在寄存器110_1、110_2、110_3、…、110_m和111_1,111_2,111_3、…、111_m是模式输入逻辑电路105的一部分的情况下,模式输入逻辑电路105还向VEMM 104发送来自寄存器100_1、110_2、110_3、…、110_m和111_1、111_2、111_3、…、111_m的相关寄存器的内容,以针对其模式改变的每个虚拟机指示哪些外围设备Per_1、Per_2、…、Per_n或资源当前被该虚拟机使用以及哪些外围设备或资源将在虚拟机改变为的执行模式下被该虚拟机使用。在寄存器110_1、110_2、110_3、…、110_m和111_1、111_2、111_3、…、111_m是VEMM 104的一部分的情况下,VEMM 104可利用相关寄存器的内容。
为了改变虚拟机的模式,首先停止当前被该虚拟机使用的外围设备Per_1、Per_2、…、Per_n或资源,通过将它们置于重置状态或冻结(时钟选通)状态来进行。从虚拟机的角度来看,重置状态和冻结状态之间的主要区别在于:当外围设备或资源被时钟选通时,它会停止,但不会丢失其配置,而当它被重置时,它会丢失其配置。因此,这里将使用时钟选通状态。
因此,一旦接收到一个或多个模式改变请求Mode_Change_Req和一个或多个目标模式Target_Mode,对于其模式改变的每个虚拟机,VEMM 104将时钟选通请求发送给当前模式下被该虚拟机当前使用的外围设备Per_1、Per_2、…、Per_n或资源以及将在改变为的模式下被该虚拟机使用的外围设备Per_1、Per_2、…、Per_n或资源。例如,如果外围设备Per_1当前正在被其模式改变的虚拟机使用,并且外围设备Per_2将在被改变为的模式下被虚拟机使用,则VEMM 104向外围设备Per_1和外围设备Per_2发送时钟选通请求信号Clock_Gate_Req_1和Clock_Gate_Req_2。一旦接收到时钟选通请求信号Clock_Gate_Req_1和Clock_Gate_Req_2,外围设备Per_1和Per_2完成它们当前未完成的操作(例如,它们已开始执行但尚未完成的操作或指令),将它们自身置于时钟选通状态,并将确认Clock_Gate_Ack_1和Clock_Gate_Ack_2发送回VEMM 104,以指示它们现在处于时钟选通状态。
一旦从每个外围设备或资源接收到将要置于时钟选通状态的确认,对于状态改变的每个虚拟机,VEMM 104向模式输入逻辑电路105发送模式改变确认信号Mode_Change_Ack,指示该虚拟机准备好改变其模式,并且模式输入逻辑电路105依次实现每个这样的虚拟机的模式改变。如下文将详细解释的,一旦模式改变完成,VEMM 104生成并发送中断。应注意,每个虚拟机的模式改变可涉及将该虚拟机在新执行模式下使用的时钟选通资源或外围设备重新启动(而不是重置)到正常操作状态,对于未停止且允许继续其操作的资源或外围设备,不执行此操作。
在模式改变完成之后,通过模式输入逻辑电路105向VEMM 104发送模式改变完成信号Mode_Change_Completed,然后VEMM 104又确认中断,为该模式改变选择的虚拟机通知执行模式改变的完成。该中断可发送到分配给该虚拟机的微处理器101的一个或多个内核,或者也可以发送到另一个虚拟机或虚拟机监控程序。
如上所述,在某些情况下,接收中断的微处理器内核可以不是执行经历了模式改变的虚拟机的微处理器。例如,模式改变可以是因为经历模式改变的虚拟机已锁定或出现故障而启动的,因此运行虚拟机监控程序的另一个微处理器内核被指示重置锁定或出现故障的虚拟机。如此,来自模式输入逻辑电路105的模式改变完成信号Mode_Change_Completed可指示哪个虚拟机(或虚拟机监控程序)将接收中断。
应注意,上述硬件和技术能够结合到任何片上系统或任何微控制器中,而不仅仅是那些用于汽车应用的。
虽然已经针对有限数量的实施例描述了本发明,但本领域技术人员将理解,受益于本公开,可设想其他不偏离本文所公开的本发明范围的实施例。因此,本公开的范围仅受所附权利要求的限制。
Claims (22)
1.一种微控制器,包括:
微处理器,执行多个虚拟机;
多个外围设备,所述多个虚拟机中的不同虚拟机在以不同模式执行期间使用所述多个外围设备的不同子集;
模式改变逻辑电路装置,被配置为:
从所述微处理器接收模式改变请求,所述模式改变请求指示所述多个虚拟机中的将改变执行模式的部分虚拟机以及所述部分虚拟机将要改变为的执行模式;并且
向虚拟执行模式管理器电路装置发送所述模式改变请求;以及
所述虚拟执行模式管理器电路装置,被配置为:对于执行模式被改变的每个虚拟机,向与虚拟机将要改变为的执行模式相对应的所述多个外围设备的子集发送时钟选通请求,
其中响应于所述时钟选通请求,所述多个外围设备的子集被配置为完成所述子集的当前操作,进入时钟选通状态,并向所述虚拟执行模式管理器发送时钟选通确认信号,
其中所述虚拟执行模式管理器电路装置还被配置为:对于执行模式被改变的每个虚拟机,向所述模式输入逻辑电路装置发送模式改变确认,指示该虚拟机的执行模式已经准备好被改变;
其中所述模式改变逻辑电路装置还被配置为:对于执行模式被改变的每个虚拟机,将该虚拟机改变为其将要改变为的执行模式,并向所述虚拟执行模式管理器电路装置发送模式改变完成指示;并且
其中所述虚拟执行模式管理器还被配置为:对于执行模式已经被改变的每个虚拟机,生成中断并将所述中断发送给所述微处理器。
2.根据权利要求1所述的微控制器,还包括位于所述虚拟执行模式管理器中的针对每个虚拟机的寄存器集合,用于存储所述多个外围设备的哪个子集在何种执行模式下使用的指示;并且其中所述虚拟执行模式管理器被配置为:对于其执行模式被改变的每个虚拟机,读取与该虚拟机将被改变为的执行模式相对应的寄存器,以便获知向所述多个外围设备中的哪个子集发送所述时钟选通请求。
3.根据权利要求1所述的微控制器,还包括位于所述模式改变逻辑电路装置中的针对每个虚拟机的寄存器集合,用于存储所述多个外围设备的哪个子集在何种执行模式下使用的指示;并且其中所述模式改变逻辑电路装置被配置为:对于其执行模式被改变的每个虚拟机,读取与该虚拟机将被改变为的执行模式相对应的寄存器,并将数据从这些寄存器发送到所述虚拟执行模式管理器,使得所述虚拟执行模式管理器获知向所述多个外围设备中的哪个子集发送所述时钟选通请求。
4.根据权利要求1所述的微控制器,其中所述模式输入逻辑电路装置被配置为:在将虚拟机改变为其将被改变为的执行模式期间,重新启动与这些执行模式相对应的所述外围设备的子集,使得所述子集从所述时钟选通状态切换回操作状态。
5.根据权利要求1所述的微控制器,其中所述多个虚拟机中的至少一些在所述微处理器的单个内核上执行。
6.根据权利要求1所述的微控制器,其中所述虚拟执行模式管理器电路装置进一步被配置为:对于其执行模式被改变的每个虚拟机,向与该虚拟机当前处于的执行模式相对应的所述多个外围设备的子集发送时钟选通请求,同时,向与该虚拟机将要切换到的执行模式相对应的所述多个外围设备的子集发送所述时钟选通请求;并且其中响应于发送的所述时钟选通请求,所述多个外围设备的子集被配置为完成所述子集的当前操作,进入时钟选通状态,并向所述虚拟执行模式管理器发送时钟选通确认信号。
7.根据权利要求1所述的微控制器,其中所述微处理器包括多个内核,不同的内核执行所述多个虚拟机中的不同虚拟机;并且其中对于其执行模式已经被改变的至少一个虚拟机,所述虚拟执行模式管理器电路装置向执行该虚拟机的内核发送生成的所述中断。
8.根据权利要求1所述的微控制器,其中所述微处理器包括多个内核,不同的内核执行所述多个虚拟机中的不同虚拟机;并且其中对于其执行模式已经被改变的至少一个虚拟机,所述虚拟执行模式管理器电路装置向没有执行该虚拟机的内核发送生成的所述中断。
9.一种方法,包括:
以第一执行模式执行第一虚拟机,处于所述第一执行模式的所述第一虚拟机使用多个外围设备的第一子集;
以第二执行模式执行第二虚拟机,处于所述第二执行模式的所述第二虚拟机使用所述多个外围设备的第二子集;
向模式输入逻辑电路装置发送指示,用于指示所述第一虚拟机将被改变为以第三执行模式执行,所述第三执行模式使用所述多个外围设备的第三子集;
从所述模式输入逻辑电路装置向虚拟执行模式管理器发送模式改变请求,用于指示所述第一虚拟机将要将模式改变为所述第三执行模式;
从所述虚拟执行模式管理器向所述多个外围设备的第三子集发送时钟选通请求;
响应于所述多个外围设备的第三子集完成当前任务,将所述第三子集置于时钟选通模式,并将时钟选通确认发送回所述虚拟执行模式管理器;
从所述虚拟执行模式管理器向所述模式输入逻辑电路装置发送模式改变确认,用于指示所述第一虚拟机准备被改变为所述第三执行模式;
将所述第一虚拟机改变为所述第三执行模式;
从所述模式输入逻辑电路装置向所述虚拟执行模式管理器发送模式改变完成指示,以指示模式改变被完成;以及
响应于接收到所述模式改变完成指示,生成中断。
10.根据权利要求9所述的方法,还包括:
在向所述多个外围设备的第三子集发送所述时钟选通请求的同时,从所述虚拟执行管理器向所述多个外围设备的第一子集发送所述时钟选通请求;以及
响应于所述多个外围设备的第一子集完成当前任务,将所述第一子集置于时钟选通模式,并且在发送所述模式改变确认之前,将所述时钟选通确认发送回所述虚拟执行管理器。
11.根据权利要求9所述的方法,还包括:在所述虚拟执行模式管理器内的寄存器集合中存储所述多个外围设备的哪个子集将在何种执行模式下使用的指示,并且对于其执行模式改变的每个虚拟机,读取与该虚拟机将被改变为的执行模式相对应的寄存器,以便获知向所述多个外围设备的哪个子集发送所述时钟选通请求。
12.根据权利要求9所述的方法,还包括:在所述模式输入逻辑电路装置内的寄存器集合中存储所述多个外围设备的哪个子集将在何种执行模式下使用的指示,并且对于其执行模式改变的每个虚拟机,读取与该虚拟机将被改变为的执行模式相对应的寄存器,并将数据从这些寄存器发送到所述虚拟执行模式管理器,使得所述虚拟执行模式管理器获知向所述多个外围设备中的哪个子集发送所述时钟选通请求。
13.根据权利要求9所述的方法,还包括:在将虚拟机改变为其将被改变为的执行模式期间,重新启动与这些执行模式相对应的外围设备的子集,使得所述子集从所述时钟选通状态切换回操作状态。
14.根据权利要求9所述的方法,其中所述第一虚拟机和所述第二虚拟机在同一微处理器的不同内核上执行,并且执行所述第一虚拟机的内核接收所述中断。
15.根据权利要求9所述的方法,其中所述第一虚拟机和所述第二虚拟机在同一微处理器的不同内核上执行,并且执行所述第二虚拟机的内核接收所述中断。
16.一种微控制器,包括:
微处理器,执行多个虚拟机;
多个外围设备,所述多个虚拟机中的不同虚拟机在以不同模式执行期间使用所述多个外围设备的不同子集;
模式改变逻辑电路装置,被配置为:
从所述微处理器接收模式改变请求,所述模式改变请求指示所述多个虚拟机中的将改变执行模式的部分虚拟机;并且
向虚拟执行模式管理器电路装置发送所述模式改变请求;以及
所述虚拟执行模式管理器电路装置,被配置为:对于执行模式被改变的每个虚拟机,向与该虚拟机相对应的所述多个外围设备的子集发送时钟选通请求,
其中响应于所述时钟选通请求,所述多个外围设备的子集被配置为完成所述子集的当前操作,进入时钟选通状态,并向所述虚拟执行模式管理器发送时钟选通确认信号,
其中所述虚拟执行模式管理器电路装置还被配置为:对于执行模式被改变的每个虚拟机,向所述模式输入逻辑电路装置发送模式改变确认,指示该虚拟机的执行模式已经准备好被改变;
其中所述模式改变逻辑电路装置还被配置为:对于执行模式被改变的每个虚拟机,改变该虚拟机的执行模式,并向所述虚拟执行模式管理器电路装置发送模式改变完成指示;并且
其中所述虚拟执行模式管理器还被配置为:对于执行模式已经被改变的每个虚拟机,生成中断。
17.根据权利要求16所述的微控制器,还包括位于所述虚拟执行模式管理器中的针对每个虚拟机的寄存器集合,用于存储所述多个外围设备的哪个子集在何种执行模式下使用的指示;并且其中所述虚拟执行模式管理器被配置为:对于其执行模式被改变的每个虚拟机,读取相对应的寄存器。
18.根据权利要求16所述的微控制器,其中所述模式输入逻辑电路装置被配置为:在改变虚拟机的执行模式期间,重新启动与这些虚拟机相对应的所述外围设备的子集,使得所述子集从所述时钟选通状态切换回操作状态。
19.根据权利要求16所述的微控制器,其中所述多个虚拟机中的至少一些在所述微处理器的单个内核上执行。
20.根据权利要求16所述的微控制器,其中所述虚拟执行模式管理器电路装置进一步被配置为:对于其执行模式被改变的每个虚拟机,向与该虚拟机当前处于的执行模式相对应的所述多个外围设备的子集发送时钟选通请求,同时,向与该虚拟机将要切换到的执行模式相对应的所述多个外围设备的子集发送所述时钟选通请求;并且其中响应于发送的所述时钟选通请求,所述多个外围设备的子集被配置为完成所述子集的当前操作,进入时钟选通状态,并向所述虚拟执行模式管理器发送时钟选通确认信号。
21.根据权利要求16所述的微控制器,其中所述微处理器包括多个内核,不同的内核执行所述多个虚拟机中的不同虚拟机;并且其中对于其执行模式已经被改变的至少一个虚拟机,所述虚拟执行模式管理器电路装置向执行该虚拟机的内核发送生成的所述中断。
22.根据权利要求16所述的微控制器,其中所述微处理器包括多个内核,不同的内核执行所述多个虚拟机中的不同虚拟机;并且其中对于其执行模式已经被改变的至少一个虚拟机,所述虚拟执行模式管理器电路装置向没有执行该虚拟机的内核发送生成的所述中断。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/235,206 US20220334862A1 (en) | 2021-04-20 | 2021-04-20 | Virtual mode execution manager |
US17/235,206 | 2021-04-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115220864A true CN115220864A (zh) | 2022-10-21 |
Family
ID=80937141
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210412237.5A Pending CN115220864A (zh) | 2021-04-20 | 2022-04-19 | 虚拟模式执行管理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20220334862A1 (zh) |
EP (1) | EP4080361A1 (zh) |
CN (1) | CN115220864A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11733729B2 (en) * | 2021-09-27 | 2023-08-22 | International Business Machines Corporation | Centralized imposing of multi-cloud clock speeds |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7945436B2 (en) * | 2007-11-06 | 2011-05-17 | Vmware, Inc. | Pass-through and emulation in a virtual machine environment |
US8146082B2 (en) * | 2009-03-25 | 2012-03-27 | Vmware, Inc. | Migrating virtual machines configured with pass-through devices |
US10095295B2 (en) * | 2011-12-14 | 2018-10-09 | Advanced Micro Devices, Inc. | Method and apparatus for power management of a graphics processing core in a virtual environment |
US9720712B2 (en) * | 2013-06-03 | 2017-08-01 | Red Hat Israel, Ltd. | Physical/virtual device failover with a shared backend |
US9569243B2 (en) * | 2014-12-05 | 2017-02-14 | International Business Machines Corporation | Offloading and parallelizing translation table operations |
JP7346401B2 (ja) * | 2017-11-10 | 2023-09-19 | エヌビディア コーポレーション | 安全で信頼できる自動運転車両のためのシステム及び方法 |
-
2021
- 2021-04-20 US US17/235,206 patent/US20220334862A1/en active Pending
-
2022
- 2022-03-22 EP EP22163572.5A patent/EP4080361A1/en active Pending
- 2022-04-19 CN CN202210412237.5A patent/CN115220864A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4080361A1 (en) | 2022-10-26 |
US20220334862A1 (en) | 2022-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180121366A1 (en) | Read/write request processing method and apparatus | |
US5867703A (en) | Common reset ROM | |
US20030101440A1 (en) | Multiple virtual machine environment management system | |
US20110296406A1 (en) | Hypervisor scheduler | |
EP4050477A1 (en) | Virtual machine migration techniques | |
US9690719B2 (en) | Mechanism for managing access to at least one shared integrated peripheral of a processing unit and a method of operating thereof | |
US9639486B2 (en) | Method of controlling virtualization software on a multicore processor | |
US9372702B2 (en) | Non-disruptive code update of a single processor in a multi-processor computing system | |
JPH1097490A (ja) | スケーラブル対称型マルチプロセッサにおいてバス幅またはバス・プロトコルを変更せずに割り込みを分散する方法および装置 | |
US11099884B2 (en) | Dynamic control of halt polling based on receiving a monitoring instruction executed by a guest | |
US10459771B2 (en) | Lightweight thread synchronization using shared memory state | |
US9436495B2 (en) | Protection against interrupts in virtual machine functions | |
US10698713B2 (en) | Virtual processor state switching virtual machine functions | |
US11640305B2 (en) | Wake-up and timer for scheduling of functions with context hints | |
CN115220864A (zh) | 虚拟模式执行管理器 | |
US9720722B2 (en) | Hypervisor driven gradual balloon inflation | |
EP3889771A1 (en) | Hypervisor removal | |
US20210132979A1 (en) | Goal-directed software-defined numa working set management | |
EP3036629B1 (en) | Handling time intensive instructions | |
US20150339178A1 (en) | Processing system and method of operating a processing system | |
US9477509B2 (en) | Protection against interrupts in virtual machine functions | |
JP6679419B2 (ja) | メモリ保護ユニット、メモリ管理ユニット、及びマイクロコントローラ | |
KR102285084B1 (ko) | 이종의 멀티 cpu를 운용하는 시스템-온-칩 및 그 동작 방법 | |
US20240134669A1 (en) | Paravirtual pause loops in guest user space | |
KR20240062498A (ko) | 독립적으로 운용되는 계층적인 구조의 도메인들에 대한 에러 처리를 수행하는 시스템온칩 및 그 동작 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |