CN115309678A - 处理系统、相关集成电路、设备及方法 - Google Patents

处理系统、相关集成电路、设备及方法 Download PDF

Info

Publication number
CN115309678A
CN115309678A CN202210481246.XA CN202210481246A CN115309678A CN 115309678 A CN115309678 A CN 115309678A CN 202210481246 A CN202210481246 A CN 202210481246A CN 115309678 A CN115309678 A CN 115309678A
Authority
CN
China
Prior art keywords
virtual machine
register
read
circuit
request
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
Application number
CN202210481246.XA
Other languages
English (en)
Inventor
B·维托雷利
S·巴特拉
V·K·索德
D·巴兰瓦尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STMICROELECTRONICS INTERNATIONAL NV
STMicroelectronics Application GmbH
Original Assignee
STMICROELECTRONICS INTERNATIONAL NV
STMicroelectronics Application GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US17/736,590 external-priority patent/US20220357973A1/en
Application filed by STMICROELECTRONICS INTERNATIONAL NV, STMicroelectronics Application GmbH filed Critical STMICROELECTRONICS INTERNATIONAL NV
Publication of CN115309678A publication Critical patent/CN115309678A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

一种通信系统将多个处理核心耦合在一起,每个处理核心具有存储虚拟机ID的关联寄存器,该虚拟机ID被插入到由相应处理核心发送的请求中。主电路关联了主接口电路,其中该主接口电路关联了用于存储第二虚拟机ID的寄存器,该第二虚拟机ID被插入到由主电路发送的请求中。从电路关联了从接口电路,该从接口电路被配置为选择性地转发寻址到地址子范围的读取或写入请求。从接口电路关联了存储与地址子范围相关联的第三虚拟机ID的第三寄存器,并且被配置为接收寻址到地址子范围的请求,从请求中提取虚拟机ID,确定所提取的虚拟机ID是否对应于第三虚拟机ID,然后转发或拒绝该请求。

Description

处理系统、相关集成电路、设备及方法
技术领域
本公开的实施例涉及包括多个微处理器的处理系统,特别是被配置为执行虚拟机的处理系统。
背景技术
图1示出了典型的电子系统,诸如具有引擎35的车辆30的电子系统,包括多个处理系统10,诸如嵌入式系统或集成电路,例如现场可编程门阵列(FPGA)、数字信号处理器(DSP)或微控制器(例如专用于汽车市场)。
例如,在图1中示出了通过适当的通信系统20而连接的三个处理系统(PS)101、102和103。例如,通信系统可以包括车辆控制总线(诸如控制器局域网(CAN)总线和/或以太网)以及经由网关被连接到车辆控制总线的可能的多媒体总线(诸如面向媒体的系统传输(MOST)总线)。通常,处理系统10位于车辆的不同位置,并且可以包括例如引擎控制单元、变速箱控制单元(TCU),防抱死制动系统(ABS)、车身控制模块(BCM)、和/或导航和/或多媒体音频系统。因此,处理系统10中的一个或多个处理系统也可以实现实时控制和调节功能。这些处理系统通常被标识为电子控制单元。
图2示出了可以用作图1的任何处理系统10的示例性数字处理系统10(诸如微控制器)的框图。
在所考虑的示例中,处理系统10包括经由软件指令而编程的微处理器102(通常是中央处理单元(CPU))。通常,由微处理器102执行的软件被存储在非易失性程序存储器104(诸如闪存或EPROM)中。因此,存储器104被配置为存储处理单元102的固件,其中该固件包括将由微处理器102执行的软件指令。一般来说,非易失性存储器104还可以用于存储其它数据,诸如配置数据,例如校准数据。
微处理器102通常还与易失性存储器104b相关联,诸如随机存取存储器(RAM)。例如,存储器104b可以用于存储临时数据。
如图2所示,通常经由一个或多个存储器控制器100来执行与存储器104和/或104b的通信。(多个)存储器控制器100可以被集成在微处理器102中或经由通信信道(诸如,处理系统10的系统总线)被连接到微处理器102。类似地,存储器104和/或104b可以与微处理器102被集成在单个集成电路中,或者存储器104和/或104b可以采用单独的集成电路的形式并且例如经由印刷电路板的迹线被连接到微处理器102。
在所考虑的示例中,微处理器102可以与例如从包括以下项的组合中选择的一个或多个(硬件)资源106相关联:
一个或多个通信接口IF,例如用于经由通信系统20交换数据,诸如通用异步接收器/发送器(UART),串行外围接口总线(SPI),内部集成电路(I2C),控制器局域网(CAN)总线,和/或以太网接口,和/或调试接口;和/或
一个或多个模数转换器AD和/或数模转换器DA;和/或
一个或多个专用数字组件DC,诸如硬件定时器和/或计数器,或密码协处理器;和/或
一个或多个模拟组件AC,诸如比较器,传感器,诸如温度传感器等;和/或
一个或多个混合信号分量MSC,诸如PWM(脉宽调制)驱动器。
通常,专用数字组件DC也可以与被集成在处理系统10中的FPGA相对应。例如,在这种情况下,存储器104还可以包括用于这种FPGA的程序数据。
因此,数字处理系统10可以支持不同的功能性。例如,(多个)微处理器102的行为由被存储在存储器104中的固件(例如由微控制器10的微处理器102执行的软件指令)确定。因此,通过安装不同的固件,相同的硬件(微控制器)可以用于不同的应用。
在这方面,预期未来一代的这种处理系统10(例如,适于在汽车应用中使用的微控制器)表现出复杂性的增加,这主要是由于所请求的功能性(新协议,新特征等)的数目的增加以及执行条件的严格约束(例如,较低的功耗,增加的计算能力和速度等)。
例如,最近提出了更复杂的多核处理系统10。例如,这样的多核处理系统可以用于(并行地)执行图1所示的处理系统10中的若干,诸如车辆的若干处理系统。
图3示出了多核处理系统10的示例。具体地,在所考虑的示例中,处理系统10包括被连接到(片上)通信系统114的n个处理核心1021至102n。例如,在实时控制系统的上下文中,处理核心1021至102n可以是
Figure BDA0003627560100000031
核心。通常,通信系统114可以包括例如基于高级可扩展接口(AXI)和/或片上网络(NoC)的一个或多个总线系统。
例如,如处理核心1021的示例所示,每个处理核心102可以包括微处理器P 1020和通信接口IF 1022,该通信接口IF 1022被配置为管理微处理器1020与通信系统114之间的通信。通常,接口1022是主接口,被配置为:将给定(读取或写入)请求从微处理器1020转发到通信系统114,并且将可选响应从通信系统114转发到微处理器1020。然而,每个微处理器1020还可以与从接口IF 1024相关联。例如,以这种方式,第一微处理器1020可以(经由第一微处理器的主接口1022、通信系统114和第二微处理器的从接口1024)向第二微处理器1020发送请求。
通常,每个处理核心1021至102n还可以包括其它本地资源,诸如一个或多个本地存储器M 1026,通常被标识为紧耦合存储器(Tightly Coupled Memory,TCM)。
如前所述,典型地,处理核心1021至102n被布置为与非易失性存储器104和/或易失性存储器104b交换数据。在多核处理系统10中,这些存储器通常是例如为处理核心1021至102n共享的系统存储器。然而,如上所述,每个处理核心1021至102n可以包括一个或多个附加的本地存储器1026。
例如,如图3所示,处理系统10可以包括一个或多个存储器控制器100,该一个或多个存储器控制器100被配置为将至少一个非易失性存储器104和至少一个易失性存储器104b连接到通信系统114。如前所述,存储器104和/或104b中的一个或多个可以被集成在处理系统10的集成电路中或被外部连接到集成电路。例如,处理系统10可以包括:
第一易失性存储器104b,被集成在处理系统10的集成电路中,并且经由第一存储器控制器100被连接到通信系统114,以及
第二易失性存储器104b,在处理系统10的集成电路外部,并且经由第二存储器控制器100被连接到通信系统114。
如前所述,处理系统10可以包括一个或多个资源106,诸如一个或多个通信接口或协处理器(例如,密码协处理器)。
资源106通常经由相应的从通信接口IF 1064被连接到通信系统114。例如,以这种方式,处理核心102可以向资源106发送请求,并且该资源返回给定数据。通常,资源106中的一个或多个资源还可以包括相应的主接口1062。例如,在资源必须开始通信以便经由(读取和/或写入)请求与被连接到通信系统114的另一电路(诸如资源106或处理核心102)交换数据的情况下,这样的主接口1062可能是有用的。例如,为此目的,通信系统114实际上可以包括高级微控制器总线体系结构(AMBA)高性能总线(AHB)、以及用于将资源/外围设备106连接到AMBA AHB总线的高级外围总线(APB)。
通常,这种处理系统还包括一个或多个直接存储器访问(DMA)控制器110。具体地,DMA控制器110包括被连接到资源106的至少一个功能信道。通常,还可以根据配置数据来选择与给定信道相关联的资源106。具体地,信道是读取或写入信道(也可以是可编程的)并且通常关联了配置数据,该配置数据指示:
在读取信道的情况下,DMA控制器应从其读取数据的存储器地址范围;以及
在写入信道的情况下,DMA控制器应将数据写入到其的存储器地址范围。
例如,以此方式,通信接口IF可以经由两个信道被连接到DMA控制器110:
读取信道,被配置为自主地读取待从存储器104b中的第一存储器范围传输的数据,并且将该已读取的数据提供给通信接口IF(该通信接口IF然后传输相应的数据);以及
写入信道,被配置为接收已从通信接口IF接收的数据,并且将这些数据自主地写入到存储器104b中的第二存储器范围。
因此,DMA控制器110通常关联了:
从接口1104,用于从通信系统114接收配置数据,该配置数据用于配置DMA控制器110的信道,诸如与每个信道相关联的地址范围;以及
主接口1102,用于经由通信系统114向存储器控制器100传输读取或写入请求。
因此,从硬件的观点来看,图3所示的处理系统10包括被连接到通信系统114的多个处理核心102和其它电路,诸如资源106和存储器控制器100。
在这方面,处理系统10可以执行若干软件任务,例如通过在同一处理核心102上依次执行任务和/或在多个处理核心102上并行执行任务。然而,这样的任务可以执行相当不同的操作。因此,从安全和/或安全性的角度来看,每个任务应当仅具有给定的访问权限。
例如,在许多处理系统10中,通过使用软件和/或硬件地址范围保护来解决该问题。
例如,如图4所示,通常通过将软件任务分成操作系统OS的任务和由操作系统OS执行的应用APP的任务来实现这种地址范围保护。在这种情况下,操作系统OS可以管理针对每个应用APP的(例如,虚拟)地址范围。
具体地,在软件保护机制中,应用APP的所有读取和写入请求必须通过操作系统OS,该操作系统OS因此可以确定给定请求是否属于与该应用相关联的(虚拟)地址范围。
相反地,在硬件地址保护中,(例如,虚拟)地址范围被直接传送到硬件层,该硬件层因此可以确定给定软件任务是否可以访问给定地址。
例如,在ARM AArch64体系结构中,操作系统OS可以配置多个虚拟地址范围,该多个虚拟地址范围经由地址空间ID(ASID)来标识。例如,以这种方式,操作系统OS可以例如:
针对应用APP配置单个虚拟地址范围,其中该地址范围与由操作系统OS使用的地址范围分开;或
针对每个应用APP配置相应的虚拟地址范围。
实质上,在操作系统OS配置多个虚拟地址范围的情况下,操作系统OS在应用之间切换时设置相应的ASID。例如,以这种方式,应用APP可以与操作系统OS分开开发。例如,每个应用开发团队可以关联了相应的应用地址范围。
例如,在ARM AArch64体系结构中,为此目的使用所谓的转换表(TTB)。具体地,转换表允许将给定的虚拟地址映射到相应的物理地址或另外的虚拟地址。例如,在ARMAArch64体系结构中,两个转换表可以被指定:
第一转换表,将操作系统OS的给定虚拟地址范围映射到物理地址;以及
第二表,将一个或多个虚拟应用地址映射到操作系统的虚拟地址。
因此,虚拟应用地址可以首先被映射到虚拟操作系统地址,然后被映射到相应的物理地址。例如,在ARM AArch64体系结构中,典型地,OS转换表在异常级别EL1中实现,而应用转换表在异常级别EL0中实现。
具体而言,在ARM AArch64体系结构中,通信系统114的虚拟地址(VA)到物理地址(PA)的此映射直接在处理核心102的存储器管理单元(MMU)内实现。由于通信系统114的物理地址范围与存储器104和/或104b中的存储器范围以及资源106相关联,因此可以将给定应用APP或操作系统OS的读取和写入访问权限限制到给定存储器范围和/或资源106。
因此,ARM AArch64体系结构基于虚拟存储器系统体系结构(VMSA)。相反,ARMAArch32通常使用受保护存储器系统体系结构(PMSA)而非VMSA。具体地,在具有PMSA的AArch32的情况(通常是针对
Figure BDA0003627560100000071
处理器的情况)下,处理系统10不执行地址转换。
例如,在这种情况下,操作OS(通常是实时操作系统(RTOS),诸如OSEK(“OffeneSysteme und deren Schnittstellen für die Elektronik in Kraftfahrzeugen”)或Autosar-OS)可以被配置为使用直接物理地址来向任务组限定多个静态分配区域。如前所述,在AArch32 PMSA体系结构中,处理系统10不包括存储器管理单元(MMU),该MMU执行虚拟地址转换。相反,在这种情况下,处理系统10包括存储器保护单元(MPU)。具体地,代替定义虚拟地址到物理地址的映射,MPU允许例如经由表指定物理地址空间中的一个或多个存储器区域,并且允许指定相应的访问权限和存储器属性。例如,OS和应用APP的该访问权限表可以在异常级别EL1中实现。
此外,图5示出了最近已经提出执行虚拟化,其中超级管理程序(hypervisor)HYP由处理系统10执行。具体地,超级管理程序HYP通常与特定操作系统相对应,该特定操作系统允许对m个虚拟机VM1至VMm的配置,其中每个虚拟机VM可以执行相应的操作系统OS和一个或多个相应的应用APP。
因此,当使用VMSA体系结构时,每个虚拟机VM1…VMm可能已关联了相应的虚拟地址范围,即所谓的中间物理地址(IPA)。例如,在ARM AArch64体系结构中,典型地虚拟机转换表在异常级别EL2中实现。例如,在ARM AArch64体系结构中,值虚拟机ID(VMID)标识给定ID的编号。使用该值,因为给定的处理核心102未必与给定的相应虚拟机单义地相关联。例如,多个虚拟机可以在同一处理核心102上执行(经由时间调度方案),或者给定的虚拟机可以由多个处理核心102执行(并行地或循序地)。实质上,当从一个虚拟机切换到另一虚拟机时,超级管理程序HYP设置给定处理核心102的相应VMID。
类似地,当使用PMSA体系结构时,每个虚拟机VM1…VMm可能关联了相应的物理地址范围。例如,在ARM AArch32 PMSA体系结构中,典型地虚拟机访问权限表在异常级别EL2中实现。典型地,异常级别EL2中的相应访问权限表再次经由VMID来标识,该VMID由超级管理程序HYP针对每个处理核心102来设置。因此,同样在ARM AArch32 PMSA体系结构中,存储器空间由2级保护覆盖,一个由设置虚拟机VM的地址范围边界的超级管理程序HYP在异常级EL2中控制,而底层异常级EL1在设置每个任务的访问权限的操作系统OS的控制下。显然,这意味着每个软件任务(OS或APP)必须事先知道它可以访问的各种资源106的物理地址。
在这方面,图6示出了在具有超级管理程序HYP的ARM AArch64体系结构中的转换表的可能映射。
具体而言,考虑到物理地址范围包括与被连接到通信系统114的处理系统10的各种电路(诸如存储器104和104b,资源106,DMA控制器110和处理核心102)相关联的地址,被传输到通信系统114的给定请求必须指示物理地址PA。如上所述,在ARM AArch64体系结构中,这些物理地址PA可以经由转换表被映射到经由每个处理核心102的MMU的虚拟地址,该表被配置在处理核心102的MMU内。例如,这可能意味着当在不同虚拟机VM之间切换时,超级管理程序HYP必须重新配置这些表。
例如,在图6中使用以下转换表:
表TTBR_EL2,用于将超级管理程序HYP的虚拟地址范围映射到物理地址PA;
表VTTBR_EL2,针对每个虚拟机VM(或至少针对当前由给定处理核心102执行的虚拟机VM),用于将相应虚拟机VM的中间物理地址IPA映射到物理地址范围PA;
表TTBR_EL1,针对由给定虚拟机VM执行的操作系统OS,用于将虚拟操作系统地址VA_OS映射到中间物理地址范围IPA;以及
一个或多个表TBR_EL0,用于针对给定操作系统OS限定用于将虚拟应用地址VA_APP映射到虚拟操作系统地址VA_OS的相应应用地址范围。
通常,表TTBR_EL2纯粹是可选的,因为在可信的超级管理程序HYP的情况下,超级管理程序也可以访问整个存储空间。
实质上,在ARM AArch32 PMSA体系结构中,转换表VTTBR_EL2、TTBR_EL2和TTBR_EL2将利用直接指定对给定物理地址范围的访问权限的表来替换。实际上,在这种情况下,处理核心102将直接提供物理地址(而不是如在VMSA体系结构中的虚拟地址),并且处理核心102的MPU被配置为验证是否可以基于针对由处理核心102提供的VMID和可选的ASID而指定的访问权限来执行处理核心102的请求。
因此,ARM AArch64体系结构中的转换表或ARM AArch32PMSA体系结构中的访问权限表在经由超级管理程序HYP以及可选地经由操作系统OS以适当方式被管理时,提供了用于将对一个虚拟机VM(以及可选地由虚拟机执行的应用APP)的访问权限与对另一虚拟机VM的访问权限分开的有效解决方案。例如,以这种方式,一个或多个专用物理地址范围PA可以与每个虚拟机VM相关联,并且可选地与超级管理程序HYP相关联。
然而,如上所述,其它总线主设备也可以被连接到通信接口114,诸如DMA控制器的总线主设备1102或另一资源106的总线主设备1062。因此,这些总线主设备将能够访问通信系统114的完整物理存储器范围PA。
在ARM AArch64体系结构中,通过提供一个或多个系统存储器管理单元(SMMU)来解决此问题,该一个或多个系统存储器管理单元允许针对处理系统10的其它总线主设备定义转换表。因此,类似于前述的转换表,超级管理程序HYP还可以针对其它总线主设备配置转换表。类似地,在ARM AArch32 PMSA体系结构中,处理系统10可以包括一个或多个系统存储器保护单元(SMPU)或类似的地址空间保护电路,其允许针对处理系统10的其它总线主设备定义访问权限表。
例如,以这种方式,可以管理对资源106的访问。例如,假设处理系统10运行两个虚拟机VM,这两个虚拟机必须经由SPI总线进行通信。在这种情况下,超级管理程序HYP可以配置转换/访问权限表以便:
在处理系统10包括至少两个SPI接口106的情况下,将与第一SPI接口相关联的地址范围分配给第一虚拟机VM,并且将与第二SPI接口相关联的地址范围分配给第一虚拟机VM;或
在处理系统10包括一个SPI接口106的情况下,将与SPI接口相关联的地址范围分配给超级管理程序HYP,然后超级管理程序HYP可以管理两个虚拟(软件)SPI接口。
因此,ARM AArch64和AArch32体系结构通过针对由任何总线主设备(处理核心102或另一总线主设备)发送到通信系统114的请求配置转换或访问权限表来提供用于配置虚拟机的完整解决方案。然而,在实时控制系统的上下文中,对这种转换或访问权限表的使用可能相当低效。
具体地,如前所述,访问控制在处理核心102的存储器管理单元或存储器保护单元中实现,并且(对于其它总线主设备)在系统存储器管理单元/系统存储器保护单元中实现。然而,不是所有的处理核心/处理系统都包括存储器管理单元或存储器保护单元,诸如ARM
Figure BDA0003627560100000111
处理核心。事实上,这样的存储器管理单元或存储器保护单元是复杂的,因此增加了处理系统的成本和功耗。因此,存储器管理单元或存储器保护单元在低成本和低功率解决方案中几乎不可行。
此外,在ARM AArch64和AARch32体系结构中,通过将相应数据存储到易失性存储器104b来配置这种转换或访问权限表,并且每个存储器管理单元或存储器保护单元必须高速缓存这些数据。然而,在高速缓存缺失的情况下,与存储器管理单元或存储器保护单元相关联的高速缓存控制器必须获得缺失的数据,这引入了显著的时延。
发明内容
如上所述,本公开的各种实施例涉及诸如集成电路的处理系统。具体地,该处理系统包括具有给定物理地址范围的通信系统以及多个处理核心,其中每个处理核心包括至少一个微处理器,该至少一个微处理器被配置为执行软件指令。具体地,每个微处理器关联了(第一)主接口电路,(第一)主接口电路被配置为将读取或写入请求从微处理器转发到通信系统,其中读取或写入请求包括通信系统的物理地址范围中的物理地址。
在各种实施例中,处理系统包括第一/从电路,诸如资源/外围设备或存储器控制器,已经关联了从接口电路,该从接口电路被配置为选择性地将寻址到给定地址子范围的读取或写入请求从通信系统转发到第一电路。
在各种实施例中,除了微处理器之外,处理系统还包括至少一个附加主电路,第二/主电路关联了(第二)主接口电路,该(第二)主接口电路被配置为将读取或写入请求从第二电路转发到通信系统。
具体地,微处理器的主接口电路关联了第一寄存器,该第一寄存器用于存储相应的第一虚拟机ID。具体地,在各种实施例中,微处理器的主接口电路被配置为从第一寄存器读取第一虚拟机ID,并将第一虚拟机ID插入到从微处理器被转发到通信系统的读取或写入请求中,虚拟机ID与请求一起被传输。
然而,在各种实施例中,第二主接口电路还关联了用于存储第二虚拟机ID的第二寄存器,并且被配置为从第二寄存器读取第二虚拟机ID,并且将第二虚拟机ID插入到从第二电路被转发到通信系统的读取或写入请求中。例如,在各种实施例中,第二电路是DMA控制器,其中可以针对每个DMA信道存储相应的虚拟机ID。
因此,除了目标地址之外,由总线主设备发送的请求还包括标识发送方的虚拟机ID。可选地,该请求还可以包括地址空间ID。
因此,在各种实施例中,从接口电路可以确定请求是否被授权。具体地,为此目的,在各种实施例中,从接口电路关联了寄存器,该寄存器用于存储与给定的第一地址子范围相关联的第三虚拟机ID。具体地,在这种情况下,从接口电路可以被配置为从通信系统接收寻址到给定地址子范围的读取或写入请求,从所接收的请求提取虚拟机ID,从第三寄存器读取第三虚拟机ID,以及确定从所接收的请求提取的虚拟机ID是否对应于第三虚拟机ID。例如,响应于确定从所接收的请求中提取的虚拟机ID对应于第三虚拟机ID,从接口电路可以将读取或写入请求转发到第一电路。相反,响应于确定从所接收的请求中提取的虚拟机ID不对应于第三虚拟机ID,从接口电路可以禁止向第一电路转发读取或写入请求,例如拒绝读取或写入请求。
通常,从接口还可以管理单独的读取和写入访问权限。为此目的,第三寄存器可以被配置为存储读取虚拟机ID和写入虚拟机ID。在这种情况下,从接口电路可以确定所接收的请求是读取请求还是写入请求,并且响应于确定所接收的请求是读取请求,确定从所接收的请求中提取的虚拟机ID是否对应于读取虚拟机ID。相反,响应于确定所接收的请求是写入请求,从接口电路可以确定从所接收的请求中提取的虚拟机ID是否对应于写入虚拟机ID。
因此,第一寄存器、第二寄存器和第三寄存器可以用于限定微处理器、第一(从)电路和第二(主)电路是否属于同一虚拟机。为此目的,第一寄存器、第二寄存器和第三寄存器能够通过由微处理器执行的软件指令来编程。具体地,在各种实施例中,虚拟机ID的配置可以仅经由超级管理程序来执行。具体地,在这种情况下,处理系统可以被配置为在多个处理核心上执行超级管理程序和一个或多个虚拟机,其中每个虚拟机与相应的虚拟机ID相关联,并且其中处理系统被配置为使得第一寄存器、第二寄存器和第三寄存器能够经由超级管理程序来编程而不能够经由一个或多个虚拟机来编程。
例如,这样的超级管理程序可以被配置为:将第一虚拟机ID值存储到与第一处理核心的主接口电路相关联的第一寄存器,将第二虚拟机ID值存储到与第二处理核心的主接口电路相关联的第一寄存器,以及将第一虚拟机ID值存储到(第一/从电路的)第二寄存器和(第二/主电路的)第三寄存器。接下来,超级管理程序可以在第一处理核心上开启第一虚拟机和在第二处理核心上开启第二虚拟机。因此,在这种情况下,从接口电路将被配置为将从第一虚拟机/第一处理核心和第二电路接收的读取和/或写入请求转发到第一电路,但是禁止对从第二虚拟机/第二处理核心接收的读取和/或写入请求的转发。
因此,在各种实施例中,该请求还应当标识由超级管理程序发送的请求。例如,为此目的,当处理核心正在执行超级管理程序时,相应的第一主接口电路可以被配置为将与超级管理程序相关联的给定虚拟机ID和/或指示特权信息的一个或多个位插入到从相应的微处理器被转发到通信系统的读取或写入请求中。例如,为了设置微处理器的虚拟机ID,超级管理程序可以经由通信系统或专用协处理器总线发送请求。从接口电路的虚拟机ID可以通过向同一从接口电路或向一个或多个专用从接口电路发送请求来编程。类似地,主接口电路的虚拟机ID可以通过向与主接口电路单义地相关联的从接口电路或向一个或多个专用从接口电路发送请求来编程。因此,这样的从接口电路可以被配置为接收寻址到相应的地址子范围的读取或写入请求,从所接收的请求中提取虚拟机ID和/或特权信息,并且响应于确定从所接收的请求中提取的虚拟机ID对应于所确定的虚拟机ID和/或特权信息具有给定值,将读取或写入请求转发到相应的寄存器。所确定的虚拟机ID可以是预定的。
在实施例中,处理系统包括具有物理地址范围的通信系统。多个处理核心被耦合到通信系统。每个处理核心包括:微处理器,该微处理器在操作中执行软件指令;以及与处理核心相关联的第一主接口电路,其中第一主接口电路在操作中将来自所述微处理器的读取或写入请求转发到所述通信系统,所述读取或写入请求包括所述物理地址范围中的物理地址。处理系统包括:第一电路;与第一电路相关联的第一从接口电路,其中第一从接口电路在操作中选择性地将寻址到所述物理地址范围的地址子范围的读取或写入请求从所述通信系统转发到所述第一电路;第二电路;与第二电路相关联的第二主接口电路,其中第二主接口电路在操作中将来自所述第二电路的读取或写入请求转发到所述通信系统;第一寄存器,与第一主接口电路相关联,其中第一寄存器在操作中存储第一虚拟机ID;第二寄存器,与第二主接口电路相关联,其中第二寄存器在操作中存储第二虚拟机ID;以及第三寄存器,与第一从接口电路相关联,其中第三寄存器在操作中存储第三虚拟机ID。所述第一寄存器、所述第二寄存器和所述第三寄存器能够通过由所述微处理器执行的软件指令来编程。在操作中,第一主接口电路从所述第一寄存器读取所述第一虚拟机ID,并且将所述第一虚拟机ID插入到从所述微处理器被转发到所述通信系统的所述读取或写入请求中。在操作中,第二主接口电路从所述第二寄存器读取所述第二虚拟机ID,并且将所述第二虚拟机ID插入到从所述第二电路被转发到所述通信系统的所述读取或写入请求中。在操作中,第一从接口电路通过以下操作来对从通信系统接收的并且寻址到物理地址范围的地址子范围中的地址的读取或写入请求进行响应:从接收到的所述请求中提取虚拟机ID;从所述第三寄存器读取所述第三虚拟机ID;确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID;响应于确定从接收到的所述请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将所述读取或写入请求转发到所述第一电路;以及响应于确定从接收到的所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述读取或写入请求。
在实施例中,一种设备包括:多个处理系统;以及通信总线,该通信总线在操作中将多个处理系统耦合在一起,多个处理系统中的每个处理系统包括:具有物理地址范围的通信系统;被耦合到通信系统的多个处理核心,每个处理核心包括:微处理器,该微处理器在操作中执行软件指令;以及与处理核心相关联的第一主接口电路,其中第一主接口电路在操作中将来自所述微处理器的读取或写入请求转发给所述通信系统,所述读取或写入请求包括所述物理地址范围中的物理地址;第一电路;与第一电路相关联的第一从接口电路,其中第一从接口电路在操作中选择性地将寻址到物理地址范围的地址子范围的读取或写入请求从所述通信系统转发到所述第一电路;第二电路;与第二电路相关联的第二主接口电路,其中第二主接口电路在操作中将读取或写入请求从所述第二电路转发到所述通信系统;第一寄存器,与第一主接口电路相关联,其中第一寄存器在操作中存储第一虚拟机ID;第二寄存器,与第二主接口电路相关联,其中第二寄存器在操作中存储第二虚拟机ID;以及第三寄存器,与第一从接口电路相关联,其中第三寄存器在操作中存储第三虚拟机ID,其中所述第一寄存器、所述第二寄存器和所述第三寄存器能够通过由所述微处理器执行的软件指令来编程;在操作中,所述第一主接口电路从所述第一寄存器读取所述第一虚拟机ID,并且将所述第一虚拟机ID插入到从所述微处理器被转发到所述通信系统的所述读取或写入请求中;在操作中,所述第二主接口电路从所述第二寄存器读取所述第二虚拟机ID,并且将所述第二虚拟机ID插入到从所述第二电路被转发到所述通信系统的所述读取或写入请求中;以及在操作中,所述第一从接口电路通过以下操作来对从通信系统接收到的并且寻址到物理地址范围的地址子范围中的地址的读取或写入请求进行响应:从接收到的所述请求中提取虚拟机ID;从所述第三寄存器读取所述第三虚拟机ID;确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID;响应于确定从接收到的所述请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将所述读取或写入请求转发到所述第一电路;以及响应于确定从接收到的所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述读取或写入请求。
在实施例中,一种方法包括:控制在具有物理地址范围的通信系统上的通信,以及将处理核心、第一电路和第二电路耦合在一起。该控制包括:在处理核心的微处理器上开启超级管理程序;在超级管理程序的控制下,将第一虚拟机ID值存储到与第一主接口电路相关联的第一寄存器,该第一主接口电路与微处理器相关联;在超级管理程序的控制下,将第二虚拟机ID值存储到与第二主接口电路相关联的第二寄存器,该第二主接口电路与第二电路相关联;在第一处理核心上执行的超级管理程序的控制下,将第三虚拟机ID值存储到第三寄存器;由第一主接口电路将被存储的第一虚拟机ID插入到从第一处理核心被转发到通信系统的读取或写入请求中;由第二主接口电路将被存储的第二虚拟机ID插入到从第二电路被转发到通信系统的读取或写入请求中;以及在与第一电路相关联的从接口电路的控制下,选择性地将寻址到物理地址范围的地址子范围的读取或写入请求从通信系统转发到第一电路。该选择性地转发包括:从寻址到地址子范围的请求中提取虚拟机ID;从第三寄存器读取第三虚拟机ID;确定从该请求中提取的虚拟机ID是否对应于所述第三虚拟机ID;响应于确定从该请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将该请求转发到所述第一电路;以及响应于确定从所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述请求。
在实施例中,非瞬态计算机可读介质的内容将计算系统配置为控制在具有物理地址范围的通信系统上的通信,该通信系统将处理核心、第一电路和第二电路耦合在一起。该通信控制包括:在处理核心的微处理器上开启超级管理程序;在超级管理程序的控制下,将第一虚拟机ID值存储到与第一主接口电路相关联的第一寄存器,该第一主接口电路与微处理器相关联;在超级管理程序的控制下,将第二虚拟机ID值存储到与第二主接口电路相关联的第二寄存器,该第二主接口电路与第二电路相关联;在第一处理核心上执行的超级管理程序的控制下,将第三虚拟机ID值存储到第三寄存器;由第一主接口电路将被存储的第一虚拟机ID插入到从第一处理核心被转发到通信系统的读取或写入请求中;由第二主接口电路将被存储的第二虚拟机ID插入到从第二电路被转发到通信系统的读取或写入请求中;以及在与第一电路相关联的从接口电路的控制下,选择性地将寻址到物理地址范围的地址子范围的读取或写入请求从通信系统转发到第一电路。该选择性地转发包括:从寻址到地址子范围的请求中提取虚拟机ID;从第三寄存器读取第三虚拟机ID;确定从该请求中提取的虚拟机ID是否对应于所述第三虚拟机ID;响应于确定从该请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将该请求转发到所述第一电路;以及响应于确定从所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述请求。
附图说明
现在将参照附图描述本公开的实施例,附图仅通过非限制性示例的方式来提供,其中:
图1示出了包括多个处理系统的电子系统的示例;
图2示出了诸如微控制器的处理系统的示例;
图3示出了多核处理系统的示例;
图4示出了由处理系统执行的软件的示例,其中该软件被分成操作系统和应用;
图5示出了由处理系统执行的软件的示例,其中该软件被划分成超级管理程序和多个虚拟机;
图6示出了用于配置图5的虚拟机的虚拟地址的转换表的配置的示例;
图7示出了根据本公开的多核处理系统的实施例,
图8示出了根据本公开的处理核心的实施例;
图9示出了包括使用防火墙配置数据的从接口的资源的实施例;
图10示出了包括主接口和从接口的资源的实施例;
图11示出了由处理系统执行的软件的实施例,其中该软件被划分成超级管理程序和多个虚拟机;
图12示出了对图12的虚拟机的访问权限的配置的实施例;
图13示出了用于图12所示的处理系统的防火墙配置数据的实施例;
图14示出了通用主接口和从接口的实施例;
图15示出了包括多个功能信道的总线主设备的实施例;
图16示出了总线主设备、特别是DMA控制器的实施例;
图17示出了用于图16的处理系统的安全配置的实施例。
具体实施方式
在以下描述中,给出了许多具体细节以提供对实施例的透彻理解。可以在没有一个或若干具体细节的情况下(或者利用其它方法、组件、材料等)实践实施例。在其它实例中,未示出或详细描述公知的结构、材料或操作,以避免使实施例的各方面模糊。
在整个说明书中对“一个实施例”或“实施例”的引用意味着结合实施例所描述的特定特征、结构或特性被包括在至少一个实施例中。因此,在本说明书中各处出现的短语“在一个实施例中”或“在实施例中”不一定都指同一实施例。此外,特定特征、结构或特性可以以任何合适的方式被组合在一个或多个实施例中。
本文中所提供的标题仅仅是为了方便,并不解释实施例的范围或含义。
在下面的图7至图17中,已经参考图1和图6所描述的部件、元素或组件可以由先前在这些图中使用的相同附图标记表示;为了不使本发明的详细描述负担过重,下面将不再重复对这些先前描述的元素的描述。
如上所述,本公开的各种实施例涉及用于管理多核处理系统中的访问权限的解决方案。
例如,图7示出了根据本公开的处理系统10a的实施例。具体地,处理系统10a的一般体系结构与关于图3所描述的体系结构相对应。
具体地,同样在这种情况下,处理系统10a包括:
通信系统114a,诸如总线或NoC;
多个处理核心102a,诸如处理核心102a1至102an,其中每个处理核心102包括软件可编程微处理器1020a、主接口1022a和从接口1024a;以及
至少一个资源106,具有从接口1064a。
通常,从接口关联了相应的物理地址或地址范围。例如,这在图8和图9中示出,其中处理核心102a的从接口1024a关联了相应的物理地址或地址范围PA_102,并且其中资源106a的从接口1064a关联了相应的物理地址或地址范围PA_106。通常,每个从接口关联了在在通信系统114a的物理地址范围内的不同且单义的地址或地址范围。例如,处理核心102a1至102an和资源106的各种从接口1024a和1064a关联了非重叠的地址或地址范围PA_102和PA_106。
因此,主接口被配置为向通信系统114a发送读取或写入请求REQ,并且最终从通信系统114a接收对该请求的相应响应。例如,这在图8中示出,其中处理102a的主接口1022a被配置为向通信系统114a发送请求REQ。具体地,这样的读取或写入请求REQ将包括与请求REQ应该被发送到的从接口相关联的物理地址PA。
因此,以此方式,微处理器可以通过在请求REQ中包括与资源106的从接口1064a相关联的物理地址来将写入或读取请求REQ发送到给定资源106。例如,典型地,从接口管理多个地址,因为地址可以被映射到不同的功能,诸如配置寄存器、包含待传输的数据或接收到的数据的寄存器等。
然而,第一微处理器1020a也可以通过在请求REQ中包括与第二微处理器的从接口1024a相关联的物理地址PA_106来将请求REQ发送给第二微处理器。
通常,虽然各种电路的主接口和从接口被示为分离的逻辑块,但是实际上这些接口可以重新使用相同的物理接口以用于与通信系统114a的通信。
如图7所示,在各种实施例中,处理系统10a还包括存储器控制器100a,该存储器控制器100a被配置为连接到内部和/或外部易失性存储器104b和/或非易失性存储器104。例如,如前所述,存储器104可以被配置为存储要由处理核心102a执行的软件指令,并且存储器104b可以用于存储临时处理结果。
在各种实施例中,处理系统10a还可以包括DMA控制器110a。
具体地,如图8所示,在各种实施例中,每个处理核心102a包括用于存储虚拟机ID(VMID)的寄存器并且可选地包括用于存储地址空间ID(ASID)的寄存器。
如图8中所示,在各种实施例中,寄存器VMID能够经由相应处理核心102a的从接口1024a来编程。通常,虽然图8示出了从接口被连接到通信系统114a,但是实际上除了系统总线或NoC之外,通信系统114a还可以包括附加的协处理器总线,该附加的协处理器总线例如连接同一处理核心102a或所有处理核心102a的微处理器1020a。例如,在ARM核心中,用于存储VMID的相应寄存器被称为VSCTLR。
具体地,图11示出了由处理系统10a执行的软件的典型场景。具体地,在所考虑的实施例中,软件包括超级管理程序HYPa和多个虚拟机VM,诸如三个虚拟机VM1、VM2和VM3。例如,处理系统10a可以包括四个处理核心102a,其中:
虚拟机VM1可以是复杂的电子控制单元(ECU);
虚拟机VM2和VM3可以分别涉及多媒体系统和导航系统。
例如,由于多媒体系统和导航系统可以使用相同的显示设备,因此在给定时刻可以仅执行这些机器中的一个机器。例如,在这种情况下,超级管理程序HYPa可以在第一处理核心102a上执行,并且超级管理程序HYPa可以在第二和第三处理核心102a上开启虚拟机VM1,并在第四处理核心102a上开启虚拟机VM2。此外,当从虚拟机VM2接收给定命令时,超级管理程序HYPa可以在第四处理核心102a上停止虚拟机VM2并开启虚拟机VM3。
通常,处理核心102a的数目和虚拟机VM的数目可以取决于应用需要。例如,典型地,实时控制系统应当被分配给一个或多个专用处理核心,而其它虚拟机以及甚至超级管理程序HYP可以基于类似于由操作系统OS管理的软件任务的时间调度机制来执行。
如前所述,寄存器VMID应包括由相应处理核心102a执行的虚拟机的ID。例如,考虑图11的示例性场景,可以使用以下VMID:用于超级管理程序HYPa的VMID0(例如,0)以及用于虚拟机VM1至VM3的VMID1至VMID3(例如,1至3)。因此,在这种情况下,启动加载器将在第一处理核心102a上开启超级管理程序HYPa,并且超级管理程序HYPa可以对其它处理核心102a的VMID进行编程,然后在其它处理核心上开启相应的虚拟机,例如,
对用于第二和第三处理核心102a的值VMID1进行编程;以及
对用于第四处理核心102a的值VMID2进行编程。
相反,当由处理核心102a执行的超级管理程序HYPa确定处理核心102a(例如,第四处理)应从给定的第一虚拟机(例如,VM2)切换到给定的第二虚拟机(例如,VM3)时,超级管理程序HYPa可以:
停止第一虚拟机,并且在实施例中,还存储与第一虚拟机相关联的处理核心的上下文信息;
对处理核心102a的寄存器VMID进行重新编程并且将第二虚拟机VM2的VMID存储到寄存器VMID,在实施例中,还重新存储与第二虚拟机相关联的处理核心的上下文信息;以及
开启或恢复第二虚拟机VM1的操作。
相反地,当被支持时,寄存器ASID能够经由处理核心102的相应微处理器1020a来直接或间接地编程。具体地,如下面将更详细地描述的,地址空间ID可以用于将被分配给给定虚拟机VM的地址组织在较小子集中。例如,可以将第一地址空间ID分配给由处理核心102a执行的虚拟机VM的操作系统OS,并且可以将一个或多个附加地址空间ID分配给由处理核心102a执行的虚拟机VM的应用APP。因此,在各种实施例中,寄存器ASID能够通过由给定处理核心102执行的虚拟机VM的操作系统来编程。
具体地,在ARM AArch64或AArch32体系结构中提供了类似的寄存器。具体地,这些寄存器用于经由转换表和处理核心的存储器管理单元来执行地址转换,或者经由存储器保护单元来直接执行对物理地址的访问控制。相反,在本公开的各种实施例中,处理核心102a的主接口1022a被配置为不仅将与目标从客户端相关联的物理地址PA、而且将寄存器VMID和寄存器ASID的内容(当使用时)与请求REQ一起传输。
因此,关于图9,资源106a的从接口1064a将接收请求REQ,该请求REQ包括与从接口1064a相关联的物理地址PA_106。然而,该请求还包括已发送请求REQ的处理核心102a的数据VMID和可选的ASID。
因此,在各种实施例中,从接口1064a包括防火墙,该防火墙被配置为将被包括在请求REQ中的数据VMID和可选的ASID与防火墙配置数据1066进行比较,该防火墙配置数据1066限定了给定的VMID(或VMID和ASID的组合)是否可以向从接口1064a发送请求。
在各种实施例中,这些防火墙配置数据1066还可以单独指定给定VMID(或VMID和ASID的组合)是否可以发送读取请求和/或可以发送写入请求。例如,在从接口1064a仅管理单个地址或地址范围PA_106的情况下,配置数据可以包括:
第一字段,用于存储可以发送读取请求的VMID(或VMID和ASID的组合);以及
第二字段,用于存储可以发送写入请求的VMID(或VMID和ASID的组合)。
因此,在给定虚拟机(或由VMID和ASID的组合标识的进程)对给定地址范围具有读取和写入访问的情况下,相同的VMID(或VMID和ASID的组合)将被存储到第一字段和第二字段。
相反,为了在不同的虚拟机或进程之间交换数据,即所谓的进程间通信(IPC),可以将第一VMID(或VMID和ASID的组合)存储到第一字段,并且可以将第二VMID存储到第二字段,由此第一VMID可以从地址范围读取数据,并且第二VMID可以将数据写入到地址范围(对等通信)。
在各种实施例中,第一字段还可以用于存储标识“通配符”的值,该“通配符”指示所有VMID或进程可以从相应地址范围读取数据。例如,这允许实现从一个虚拟机到所有其它虚拟机的广播通信。
类似地,在从接口1064a被配置为管理多个地址范围PA_106的情况下,针对每个被管理的地址范围,配置数据可以包括:
用于存储可以发送读取请求的VMID(或VMID和ASID的组合)的相应第一字段;以及
用于存储可以发送写入请求的VMID(或VMID和ASID的组合)的相应第二字段。
因此,在接口1064a的防火墙确定被包括在请求REQ中的VMID和可选的ASID可以访问接口1064a的情况下,防火墙将相应的请求转发到资源106。相反,在接口1064a的防火墙确定被包括在请求REQ中的VMID和可选的ASID不能访问接口1064a的情况下,防火墙/从接口可以:
忽略请求REQ;或
向已发送请求REQ的处理核心102发送错误和/或向例如与错误监测模块或执行超级管理程序HYPa的处理核心102的从接口相关联的确定地址发送错误,和/或直接向负责收集和处理系统错误的模块发送错误。所确定的地址可以是预先确定的。
因此,在实施例中,主接口与从接口之间的通信的安全配置包括:
主接口的安全配置数据SECM,包括在请求REQ中包括的数据VMID和可选的ASID;以及
从接口的安全配置SECS,包括防火墙配置数据1066,该防火墙配置数据1066基于被包括在请求REQ中的数据VMID和可选的ASID来限定对从接口(特别是由从接口管理的物理地址范围)的访问权限。
因此,在图7至图9所示的实施例中,处理核心102a不包括存储器管理单元(被配置为执行地址转换操作)或存储器管理单元(被配置为验证访问权限),但是每个处理核心102a可以向通信系统114a发送请求REQ,其中该请求可以包括与通信系统114a相关联的完整地址范围中的物理地址。相反,访问保护经由目标资源106a的从接口1064a内的防火墙来实现。然而,通常,处理核心102a还可以包括附加的MMU或MPU。
通常,主接口1022a和从接口1064a的上述操作也可以在其它主接口和从接口中实现。
例如,在各种实施例中,诸如处理核心102a的从接口1024a和存储器控制器100a的从接口1004a的每个从接口可以包括允许对VMID(或VMID和ASID的组合)的配置的防火墙,该VMID(或VMID和ASID的组合)可以向相应的从接口发送读取和/或写入请求。
类似地,其它主接口(诸如资源106a或其它总线主设备的主接口1062a)也可以包括用于设置VMID和可选地设置ASID的寄存器。总体而言,发明人已经观察到,其它主接口仅包括寄存器VMID通常是足够的,因为其它总线主设备通常不知道应用/进程,并且可以省略寄存器ASID。然而,一般来说,资源106a(或另一总线主设备)的主接口还可以包括用于存储地址空间ID的寄存器ASID。
例如,图10示出了还包括主接口1062a的资源106a的实施例。具体地,在所考虑的实施例中,资源106包括用于存储虚拟机ID的寄存器VMID。具体地,类似于处理核心102a,通过发送包含与寄存器VMID相关联的地址PA_106的写入请求REQ,寄存器VMID的内容是可编程的。例如,以这种方式,由处理核心102a执行的超级管理程序HYPa可以发送用于对资源106a的寄存器VMID进行编程的请求REQ。
因此,通过对管理给定物理地址的从接口的防火墙进行配置,从接口的防火墙可以确定请求是否是从被允许的VMID(或VMID和ASID的组合)发送的。
通常,包括各种总线主设备的安全配置数据SECM(特别是寄存器VMID)的编程和从接口的安全配置数据SECS(特别是防火墙配置数据1066)的设置的虚拟机VM的配置可以仅由超级管理程序HYPa执行。出于此目的,在各种实施例中,给定电路的每个从接口管理至少两个地址范围:
与安全配置数据相关联的地址范围,该安全配置数据包括:
从接口的安全配置数据SECS(防火墙配置数据1066),以及
在电路还包括主接口的情况下,主接口的安全配置数据SECM(寄存器VMID和可选的寄存器ASID);
用于控制电路操作的一个或多个地址范围。
一般地,代替在从接口中实现防火墙,防火墙也可以在通信系统114a中实现,特别是在通信系统114a的将通信系统114a连接到相应从接口的每个接口处实现。例如,这具有以下优势:不需要修改处理核心102a和资源106a的常规IP块,而是可以在常规通信系统114a和被连接到通信系统114a的各种电路之间添加附加的防火墙电路。因此,相应的防火墙电路也可以位于每个从电路与通信系统114a的相应接口之间。实际上,在各种实施例中,每个防火墙电路被配置为监测(和可能拒绝)从通信系统114a被转发到从接口的请求,而不是监测从主接口被转发到通信系统114a的请求,如将至多执行MMU或MPU。
因此,一般而言,术语“从接口电路”必须在该意义上被解释为:该电路涉及电路的从接口到通信系统114a的接口的连接点,并且可以包括该电路的从接口和/或通信系统114a的相应接口。因此,一般而言,这些从接口电路中的每个从接口电路关联了地址范围(与一个或多个相应的配置寄存器相关联),该地址范围用于存储相应从接口电路的安全配置数据SECS(防火墙配置数据1066)。例如,当在通信系统114a中实现防火墙时,通信系统114a本身可以包括允许配置各种安全配置数据SECS的从接口。
类似地,代替实现将VMID和可选的ASID添加到电路的主接口中的请求REQ的机制,可以在主接口与通信系统114a的相应接口之间提供电路。
因此,一般而言,术语“主接口电路”可以在该意义上被解释为该电路涉及电路的主接口到通信系统114a的接口的连接点,并且可以包括该电路的主接口和/或通信系统114a的相应接口。因此,一般而言,这些主接口电路中的每个主接口电路关联了地址范围(与一个或多个相应的配置寄存器相关联),该地址范围用于存储相应主接口电路的安全配置数据SECM(寄存器VMID和可选的寄存器ASID)。例如,同样在这种情况下,通信系统114本身可以包括允许配置各种安全配置数据SECM的从接口。
在各种实施例中,防火墙配置数据1066被配置为针对由从接口电路管理的一个或多个地址范围中的每个存储至少一个VMID(以及可选的一个或多个ASID),该至少一个VMID(以及可选的一个或多个ASID)指示哪个VMID(以及可选的ASID)可以访问相应的地址范围。因此,从接口电路被配置为从请求REQ中提取地址和VMID(以及可选的ASID),针对所提取的地址确定相应的防火墙配置数据1066,并且将针对所确定的防火墙配置而存储的VMID(以及可选的ASID)与从该请求中提取的VMID(以及可选地ASID)进行比较。
例如,图12示出了一个实施例,其中处理系统10a的硬件层HW包括两个接口IF1和IF2以及管理对存储器(诸如易失性存储器104b)的访问的存储器控制器100a。具体地,在所考虑的实施例中,处理系统10a再次执行超级管理程序和三个虚拟机VM1、VM2和VM3,其中:
虚拟机VM1应具有对接口IF1的独占访问。
超级管理程序HYPa应具有对接口IF2的独占访问,但是管理两个虚拟/软件接口IF2a和IF2b,该两个虚拟/软件接口IF2a和IF2b由虚拟机VM2和VM3可访问;以及
超级管理程序HYPa和每个虚拟机应具有对由存储器控制器100a管理的相应存储器范围的访问。
在这方面,图13示出了在两个接口IF1和IF2以及存储器控制器110a的情况下与通信系统114a相关联的物理地址范围PA的可能组织。具体地,在所考虑的实施例中,存储器控制器110a被配置为管理针对多个存储器块(诸如,八个块MEM_01至MEM_08)的存取权限。例如,考虑2048K字节的存储器,每个存储器块可以对应于相应的256K字节的存储器。在这种情况下,地址范围可以包括:
与第一接口IF1的从接口电路的安全配置IF1_SEC相关联的物理地址范围PA1;
与第一接口IF1的寄存器接口IF1_REG相关联的物理地址范围PA2;
与第二接口IF2的从接口电路的安全配置IF2_SEC相关联的物理地址范围PA3;
与第二接口IF2的寄存器接口IF2_REG相关联的物理地址范围PA4;
与存储器控制器100a的从接口电路的安全配置MEM_SEC相关联的物理地址范围PA5;以及
与由存储器控制器管理的存储器块MEM_01至MEM_08相关联的物理地址范围PA6至PA13。
通常,虽然图13中未示出,但在各种实施例中,与处理核心102a相关联的地址范围也包括至少两个物理地址范围:与处理核心的从接口电路和主接口电路的安全配置数据相关联的第一地址范围(要被包括在由处理核心发送的请求REQ中的VMID/ASID和防火墙配置数据)以及用于与微处理器1020交换数据的一个或多个地址范围。
如上所述,安全配置数据SECS/SECM应仅能够由超级管理程序HYPa编程,例如,地址范围PA1、PA3和PA5应仅能够经由超级管理程序HYPa编程。
例如,在各种实施例中,执行超级管理程序HYPa和n个虚拟机VM1至VMn的处理系统被配置为使用:
针对超级管理程序HYPa的第一VMID,以及
针对n个虚拟机VM1至VMn中的每个的相应VMID。
例如,在各种实施例中,值VMID可以包括8位,这允许使用256个不同的VMID。
因此,可以通过针对超级管理程序HYPa使用与防火墙配置数据1066的重置值(例如,零)相对应的VMID来确保对安全配置数据的访问。通常,与安全配置数据相关联的防火墙配置数据(例如PA1、PA3和PA5)也可以是固定的和硬连线的。例如,仅VMID=0可以对各种安全配置数据进行编程。
附加地或备选地,经由通信系统10a交换的通信的专用位可以指示由超级管理程序HYPa发送的请求REQ。例如,在通常基于AXI协议的通信系统或ARM Cortex-R52的情况下,可以使用AXI协议的特权信息,例如AXI协议的位ARPROTM[0]和AWPROTM[0]。
因此,在这种情况下,管理对给定安全配置数据(例如IF1_SEC,IF2_SEC,MEM_SEC)的访问的防火墙可以仅在正确的VMID和/或特权信息被设置时才允许对这些数据的访问。
如上所述,与各种从和/或主接口电路相关联的安全配置数据SECM和/或SECS也可以通过向一个或多个专用从接口发送请求来编程。例如,在安全配置数据(例如,IF1_SEC,IF2_SEC,MEM_SEC)在通信系统114a内被管理的情况下,管理与这些安全配置数据相关联的地址范围(例如,PA1,PA3和PA5)的从接口的防火墙可以仅允许请求REQ,该请求REQ与VMID(与管理程序HYPa相关联)一起和/或当特权信息被设置时被发送。
因此,在这种情况下,超级管理程序HYPa可以对各种安全配置数据SECS(防火墙配置数据1066)进行编程以便设置对由相应电路管理的一个或多个地址范围的访问权限,并且在该电路还包括主接口的情况下,对安全配置数据SECM(寄存器VMID和可选的寄存器ASID)进行编程。
例如,安全配置数据IF1_SEC可以用于设置(多个)VMID(以及可选的(多个)ASID),该(多个)VMID(以及可选的(多个)ASID)对被分配给寄存器接口IF1_REG的物理地址范围PA2具有访问,安全配置数据IF2_SEC可以用于设置(多个)VMID(以及可选的(多个)ASID),该(多个)VMID(以及可选的(多个)ASID)对被分配给寄存器接口IF2_REG的物理地址范围PA2具有访问,并且安全配置数据MEC_SEC可以用于设置(多个)VMID(以及可选的(多个)ASID)对被分配给存储器块MEM_01至MEM_08的物理地址范围PA6至PA13具有访问。
例如,在图13所示的实施例中,超级管理程序HYPa配置各种从接口,使得:
与虚拟机VM1相关联的VMID可以访问与第一接口IF1的寄存器接口IF1_REG相关联的物理地址范围PA2;
与超级管理程序HYPa相关联的VMID可以访问与第二接口IF2的寄存器接口IF2_REG相关联的物理地址范围PA4;
与超级管理程序HYPa相关联的VMID可以访问与存储器块MEM_01和MEM_02相关联的物理地址范围PA6和PA7;以及
与虚拟机VM1、VM2和VM3相关联的每个VMID可以访问物理地址范围。
如前所述,在电路还包括主接口电路的情况下,安全配置数据还包括数据SECM(至少寄存器VMID的内容)。例如,资源106a的主接口1062a还将资源106a的寄存器VMID(以及可选的寄存器ASID)的内容与每个读取或写入请求一起传输。在该配置中,可以通过将另外的VMID分配给每个资源106a并且对从接口的防火墙配置数据1066的相应访问权限进行编程来获得对各种资源106a的分离。然而,发明人已经观察到,每个资源106a或者是与特定虚拟机VM相关联的专用资源,或者是共享资源并因此被分配给超级管理程序HYPa。因此,管理另外的VMID可能是相当无用的,但是将该电路被分配给其的虚拟机VM(或超级管理程序HYPa)的VMID存储到给定电路的寄存器VMID是足够的。实际上,对从接口的防火墙的配置意味着给定从接口以相同的方式处理包含相同VMID的请求。
如上所述,其它总线主设备也可以支持寄存器ASID。例如,当虚拟机使用字段ASID以便标识由操作系统OS发送的请求(例如,经由第一ASID来标识)和由应用APP发送的请求(例如,经由一个或多个另外的ASID来标识)时,这可能是有用的。例如,如关于图13所描述的,存储器控制器100a的从接口电路可以允许针对多个地址范围(例如,地址范围PA6至PA13)中的每个地址范围配置存取权限。
在这种情况下,超级管理程序HYPa可以对防火墙配置数据1066进行编程,以便指示给定ASID是否也可以访问所分配的存储器范围。例如,关于图13,防火墙配置数据(被包括在安全配置数据MEM_SEC中)可以指示给定虚拟机的操作系统OS可以访问被分配给相应VMID的两个存储块,而应用程序(经由给定ASID标识)可以仅访问被分配给相应VMID的第二存储块。
因此,在此处所描述的实施例中,地址范围保护直接在目标从接口电路中实现,例如:
对物理地址范围PA1和PA2的访问由接口IF1的从接口电路的防火墙管理;
对物理地址范围PA3和PA4的访问由接口IF2的从接口电路的防火墙管理;
对物理地址范围PA5至PA13的访问由存储器控制器100a的从接口电路的防火墙管理。
因此,每个从接口电路的防火墙必须仅验证针对由相应从接口电路管理的物理地址的访问权限。然而,这也意味着各种软件任务必须事先知道被分配给相应软件任务的物理存储器范围(经由VMID和可选地经由ASID)。例如,如上所述,处理核心102a直接发送包含物理地址PA的请求。因此,由给定虚拟机执行的软件必须知道被分配给虚拟机的物理地址范围,因为不执行地址转换。例如,为此,由虚拟机VM1执行的软件必须事先知道它仅可以访问物理存储器范围PA2、PA8和PA9。例如,必须向被分配来开发第一虚拟机VM1的软件的软件开发团队提供该规范。实际上,如前所述,这种虚拟存储器映射函数可能与实时控制系统不兼容。然而,在任何情况下,例如,对于不执行实时控制功能的虚拟机,给定虚拟机的操作系统OS仍可以管理针对应用层的虚拟地址转换表。
此外,如关于图13所描述的,可以通过将所管理的地址范围划分成地址子范围的一个或多个子集并且针对每个子集提供配置寄存器(或者在不同地处理读取和写入请求的情况下为两个)来实现保护,该配置寄存器用于存储(多个)VMID(以及可选的(多个)ASID),该(多个)VMID(以及可选的(多个)ASID)可以访问相应的子范围。例如,在各种实施例中,每个防火墙可以被配置为管理4、8、16或32个地址范围。
因此,在各种实施例中,防火墙内的验证操作可以利用快速和低复杂度的组合逻辑电路来实现,该组合逻辑电路仅需要确定请求的地址子范围(基于被包括在请求中的物理地址),并且将被包括在请求中的VMID(以及可选的ASID)与被存储在与地址子范围相关联的防火墙配置寄存器中的(多个)VMID(以及可选的(多个)ASID)进行比较。因此,该操作不会引入显著的时延,因此适合于实时控制系统。
在各种实施例中,主接口电路和/或从接口电路也可以管理多个电路。
例如,图14示出了实施例,其中主接口电路MIF1管理至少两个主电路M1和M2。如前所述,主接口电路可以发起在通信系统114a上的通信。因此,主接口MIF1使用通信系统114a的通信协议以用于与通信系统114a的通信,但是主接口电路MIF1可以使用不同的协议以用于与主电路M1和M2通信。例如,通信系统114a可以是NoC,并且:
主电路M1和M2可以经由总线被连接到主接口电路MIF1;或
主电路M1和M2可以经由相应的独立的通信信道被连接到主接口电路MIF1。
例如,图15示出了通用总线主设备BM的实施例,其中主接口电路MIF1包括多个功能信道,诸如信道CH0至CH3。
在这种情况下,总线主设备BM可以包括从接口电路SIF1,从接口电路SIF1管理对被配置为存储信道配置信息的寄存器接口REG_IF2的访问。例如,信道配置信息可以指示给定信道是否可以发起通信,选择哪个电路应被连接到给定信道,指定给定目标物理地址等。
在各种实施例中,总线主设备BM还可以包括控制电路CTRL。在这种情况下,从接口电路SIF1还可以管理对被配置为存储控制配置信息的寄存器接口REG_IF1的访问。
例如,控制电路CTRL可以是状态机,其可以被配置为在针对特定信道的每次数据传输之后自动增加与给定信道相关联的目标物理地址。
因此,在所考虑的实施例中,总线主设备BM可以对应于DMA控制器110a。
例如,如图16所示,这种DMA控制器110a可以用于从一个或多个电路(诸如资源或外围设备106a,诸如三个接口IF1、IF2、IF3,模数转换器ADC和定时器电路TIMER)接收数据,并且生成请求REQ,该请求REQ包含所接收的数据和与被连接到通信系统114a的从接口电路(例如第一存储器控制器100a(例如管理对非易失性存储器104的访问),第二存储器控制器100b(例如管理对易失性存储器104b的访问),处理核102a和/或资源106a)相关联的物理地址。
如上所述,在各种实施例中,主接口电路MF1还被配置为将与由主接口电路MF1处理的主电路相关联的ID与每个请求REQ一起传输。
例如,在图14所示的实施例中,主接口MIF1管理两个主电路M1和M2。因此,在所考虑的实施例中,主接口电路MIF1关联了两个寄存器VMID[0]和VMID[2],VMID[0]和VMID[2]用于存储要被包括在由主接口电路MIF1基于分别从主电路M1或M2接收到的请求向通信系统114a发送的请求REQ中的ID。
类似地,图17示出了实施例,其中图16所示的DMA控制器110a的主接口电路现在已针对每个功能信道关联了用于存储与该信道相关联的VMID(例如,VMID[0],VMID[1],VMID[2]等)的相应寄存器。例如,在图17中,经由多路复用器MUX根据信号CH_ID来选择要被包括在要发送给通信系统114a的请求REQ中的VMID,该信号CH_ID指示针对DMA控制器110a想要传输请求REQ的信道的数目。
如上所述,包含虚拟机ID的寄存器形成主接口电路MIF1的安全配置SECM的部分。具体地,在各种实施例中,这些安全配置SECM可以仅经由超级管理程序HYPa来编程。例如,如前所述,由处理核心102a执行的超级管理程序HYPa可以向从接口SIF1发送相应的写入请求,该从接口SIF1可以与总线主设备相关联或者可以是专用从接口。一般地,在从接口电路SIF1与总线主设备相关联的情况下,从接口电路SF1还可以用于管理总线主设备(参见例如图15)和/或由主接口MIF1管理的主电路M1和M2(参见图14)的其它功能。
因此,在所考虑的实施例中,主接口MIF1被配置为向请求REQ中插入(除了标识请求的数据之外):
与目标从接口电路相关联的物理目标地址PA;以及
单个VMID,该单个VMID标识主电路作为请求的源。
如前所述,主接口MIF1还可以在请求中插入ASID。
因此,与物理目标地址相关联的从接口SIF2可以接收请求REQ,提取VMID并且将VMID与防火墙配置数据进行比较,该防火墙配置数据被存储到从接口SIF2的安全配置数据SECS。
例如,在图14中,从接口SIF2管理两个从设备S1和S2。因此,在这种情况下,从接口SIF2可以使用(至少):
与从设备S1相关联的第一物理地址范围PA3;
与从设备S2相关联的第二物理地址范围PA4。
如上所述,安全配置数据SECM和/或SECS可以经由相应电路的从接口电路和/或专用从接口电路来管理。例如,图14示出了实施例,其中一个或多个从接口SIF1管理安全配置数据SECM和/或SECS。因此,在这种情况下,从接口SIF1可以使用(至少):
与主接口电路MIF1的安全配置数据SECM相关联的第一物理地址范围PA1;和/或
与从接口SIF2的安全配置数据SECS相关联的第二物理地址范围PA2。
因此,在所考虑的实施例中,由处理核心102a执行的超级管理程序HYPa可以向地址范围PA2(例如,由从接口SIF1管理)发送写入请求,以用于对安全配置数据SECS(特别是防火墙配置数据)进行编程。具体地,在所考虑的实施例中,防火墙配置数据包括(至少):
寄存器VMID_FW[0],用于存储针对与从设备S1相关联的第二物理地址范围PA3的至少一个VMID;以及
寄存器VMID_FW[1],用于存储针对与从设备S1相关联的第二物理地址范围PA3的至少一个VMID
因此,当从接口SIF2接收到请求REQ时,从接口SIF2可以确定相应的地址范围,并且将被包括在请求REQ中的VMID与被存储在安全配置数据SECS中的至少一个VMID进行比较,该安全配置数据SECS与包括在请求REQ中包括的物理地址的地址范围相关联。
例如,在图14所示的实施例中,超级管理程序HYPa可以向地址范围PA1和PA2(例如,由从接口SIF1管理)发送写入请求,以便存储:
安全配置数据SECM的寄存器VMID[0]中和安全配置数据SECS的寄存器VMID_FW[0]中的第一VMID;以及
安全配置数据SECM的寄存器VMID_FW[1]中和安全配置数据SECS的寄存器VMID[1]中的第二VMID。
因此,在这种情况下,主电路M1可以与从设备S1(但不与从设备S2)交换数据,并且主电路M2可以与从设备S2(但不与从设备S1)交换数据。
类似地,图17所示的各种从接口电路也可以关联了具有用于存储相应安全配置数据(特别是防火墙配置数据)的寄存器,该安全配置数据指示主设备的VMID被允许向从设备发送请求。例如,存储器控制器100a和100b可以关联了安全配置数据SECS1和SECS2,该安全配置数据SECS1和SECS2分别允许针对多个存储器块中的每个存储器块存储一个或多个被允许的VMID。类似地,任何其它资源106a可以关联了用于指定相应访问权限的安全配置数据SEC3。此外,要由给定从接口电路使用的相应安全配置数据SECS可以经由相同的从接口电路或经由一个或多个专用从接口来编程。
因此,在各种实施例中,超级管理程序可以通过以下来将给定电路分配给由给定VMID标识的特定虚拟机VM:
在主电路的情况下,将虚拟机VM的VMID存储到与处理在主电路和通信系统114a之间的通信的相应主接口MF1的功能信道相关联的安全配置数据SECM的寄存器VMID;以及
在从电路的情况下,将虚拟机VM的VMID存储到与虚拟机可以访问的物理地址范围相关联的安全配置数据SECS的寄存器VMID_FW。
例如,如意大利专利申请n.102020000006322在SPI接口的上下文中所描述的,接口本身也可以管理多个分离的(排队的)物理信道,该多个分离的(排队的)物理信道经由单个硬件接口交换数据。此外,文件102020000006322公开了在处理核心102和接口106之间经由DMA通信的数据交换。为此目的,各种物理信道经由全局配置寄存器来配置,并且针对每个信道配置相应的本地配置寄存器。例如,关于图12和图13中所示的布置,超级管理程序HYPa可以被配置为发送请求以便配置安全配置数据SECS,从而实现以下访问权限:
超级管理程序HYP的VMID可以访问:
与接口的全局配置寄存器相关联的地址范围,
与排队接口IF2的本地配置寄存器相关联的地址范围,以及
与存储器块MEM_01和MEM_02相关联的地址范围;以及
虚拟机VM1的VMID可以访问:
与排队接口IF1的本地配置寄存器相关联的地址范围,以及
与存储器块MEM_03和MEM_04相关联的地址范围。
此外,超级管理程序HYPa可以被配置为发送请求以便:
针对排队接口IF1和排队接口IF2实现DMA传递,
针对排队接口IF1和排队接口IF2指定用于DMA传递的目标地址范围,其中排队接口IF1的目标地址范围属于存储器块MEM_03和MEM_04的地址范围,并且排队接口IF2的目标地址范围属于存储器块MEM_01和MEM_02的地址范围,
设置与DMA控制器110a相关联的安全配置数据SECM,其中被分配给接口IF1的信道使用虚拟机VM1的VMID,并且被分配给接口IF2的信道使用超级管理程序HYPa的VMID。
因此,本公开提供了用于实现不同虚拟机之间的分离的低复杂度且极快速的解决方案,这在多核实时控制系统的上下文中是特别重要的。
当然,在不违背本公开的原理的情况下,构造和实施例的细节可以相对于本文中仅通过示例的方式所描述和图示的内容而广泛地变化,而不由此脱离本公开的范围。
处理系统(10a)可以被概括为包括:具有给定物理地址范围(PA)的通信系统(114a);多个处理核心(102a),每个处理核心包括被配置为执行软件指令的微处理器(1020a),并且关联了第一主接口电路(1022a),该第一主接口电路被配置为将来自所述微处理器(1020a)的读取或写入请求(REQ)转发给所述通信系统(114a),所述读取或写入请求(REQ)包括所述物理地址范围中的物理地址;第一电路(S1),该第一电路(S1)关联了从接口电路(SIF2),该从接口电路(SIF2)被配置为选择性地将寻址到给定地址子范围(PA3)的读取或写入请求(REQ)从所述通信系统(114a)转发给所述第一电路(S1);以及第二电路(M1),该第二电路(M1)关联了第二主接口电路(MIF1),该第二主接口电路(MIF1)被配置为将来自所述第二电路(M1)的读取或写入请求(REQ)转发给所述通信系统(114a);其中所述第一主接口电路(1022a)关联了用于存储第一虚拟机ID(VMID)的第一寄存器(SECM),并且被配置为从所述第一寄存器(SECM)读取所述第一虚拟机ID(VMID)并将所述第一虚拟机ID(VMID)插入到从所述微处理器(1020a)被转发到所述通信系统(114a)的所述读取或写入请求(REQ)中;其中所述第二主接口电路(MIF1)关联了用于存储第二虚拟机ID(VMID[0])的第二寄存器(SECM),并且被配置为从所述第二寄存器(SECM)读取所述第二虚拟机ID(VMID[0])并将所述第二虚拟机ID(VMID[0])插入到从所述第二电路(M1)被转发给所述通信系统(114a)的所述读取或写入请求(REQ)中;其中所述从接口电路(SIF2)关联了用于存储与所述给定第一地址子范围(PA3)相关联的第三虚拟机ID(VMID_FW[0])的第三寄存器(SECS),并且被配置为从所述通信系统(114a)接收寻址到所述给定地址子范围(PA3)的读取或写入请求(REQ),从接收到的所述请求(REQ)中提取虚拟机ID,从所述第三寄存器(SECS)读取所述第三虚拟机ID(VMID_FW[0]),确定从接收到的所述请求(REQ)中提取的所述虚拟机ID是否对应于所述第三虚拟机ID(VMID_FW[0]),响应于确定从接收到的所述请求(REQ)中提取的所述虚拟机ID对应于所述第三虚拟机ID(VMID_FW[0]),将所述读取或写入请求(REQ)转发给所述第一电路(S1),以及响应于确定从接收到的所述请求(REQ)中提取的所述虚拟机ID不对应于所述第三虚拟机ID(VMID_FW[0]),禁止向所述第一电路(S1)转发所述读取或写入请求(REQ);并且其中所述第一寄存器(SECM)、所述第二寄存器(SECM)和所述第三寄存器(SECS)能够通过由所述微处理器(1020a)执行的软件指令来编程。
所述第三寄存器(SECS)可以被配置为存储读取虚拟机ID和写入虚拟机ID,并且其中所述确定从接收到的所述请求(REQ)中提取的所述虚拟机ID是否对应于所述第三虚拟机ID(VMID_FW[0])可以包括:确定接收到的请求(REQ)是读取请求还是写入请求;响应于确定接收到的请求(REQ)可以是读取请求,确定从接收到的所述请求(REQ)中提取的所述虚拟机ID是否对应于所述读取虚拟机ID,以及响应于确定接收到的请求(REQ)可以是写入请求,确定从接收到的所述请求(REQ)中提取的所述虚拟机ID是否对应于所述写入虚拟机ID。
所述处理系统(10a)可以被配置为在所述多个处理核心(102a)上执行超级管理程序(HYPa)和一个或多个虚拟机(VM),其中每个虚拟机(VM)可以与相应的虚拟机ID相关联,并且其中所述处理系统(10a)可以被配置为使得所述第一寄存器(SECM)、所述第二寄存器(SECM)和所述第三寄存器(SECS)可以经由所述超级管理程序(HYPa)来编程,而不能够经由所述一个或多个虚拟机(VM)来编程。
所述超级管理程序(HYPa)可以被配置用于:将第一虚拟机ID值存储到与第一处理核心(102a1)的第一主接口电路(1022a)相关联的第一寄存器(SECM),将第二虚拟机ID值存储到与第二处理核心(102a2)的第一主接口电路(1022a)相关联的第一寄存器(SECM),将第一虚拟机ID值存储到所述第二寄存器(SECM)和所述第三寄存器(SECS),在所述第一处理核心(102a1)上开启第一虚拟机(VM1),以及在所述第二处理核心(102a1)上开启第二虚拟机(VM2),由此所述从接口电路(SIF2)被配置为将从所述第一虚拟机(VM1)和所述第二电路(M1)接收到的读取和/或写入请求(REQ)转发给所述第一电路(S1);以及禁止转发从所述第二虚拟机(VM2)接收到的读取和/或写入请求(REQ)。
当处理核心(102a)正在执行所述超级管理程序(HYPa)时,相应的第一主接口电路(1022a)可以被配置为将与所述超级管理程序(HYPa)相关联的给定虚拟机ID(VMID)和/或指示特权信息的一个或多个位插入到从相应的微处理器(1020a)被转发给所述通信系统(114a)的所述读取或写入请求(REQ)中。
所述微处理器(1020a)可以关联了第一从接口电路(1024a),该第一从接口电路(1024a)被配置为将寻址到给定第一地址子范围(PA_102)的读取或写入请求(REQ)从所述通信系统(114a)转发给所述第一寄存器(SECM);和/或其中所述第二电路(M1)可以关联了第二从接口电路(SIF1),该第二从接口电路(SIF1)被配置为将寻址到给定第二地址子范围(PA1)的读取或写入请求(REQ)从所述通信系统(114a)转发给所述第二寄存器(SECM)。
所述处理系统可以包括另外的从接口(SIF1),该另外的从接口(SIF1)被配置为将寻址到给定第三地址子范围(PA2)的读取或写入请求(REQ)从所述通信系统(114a)转发给所述第三寄存器(SECS);或者所述从接口电路(SIF2)可以被配置为将寻址到给定的另外地址子范围的读取或写入请求(REQ)从所述通信系统(114a)转发给所述第三寄存器(SECS)。
所述从接口电路(SIF2)、所述另外从接口(SIF1)、所述第一从接口电路(1024a)和所述第二从接口电路(SIF1)中的至少一者可以被配置为:接收寻址到相应地址子范围的读取或写入请求(REQ);从接收到的所述请求REQ中提取虚拟机ID和/或特权信息;以及响应于确定从接收到的所述请求(REQ)中提取的所述虚拟机ID对应于所确定的虚拟机ID和/或所述特权信息可以具有给定值,将所述读取或写入请求(REQ)转发给相应寄存器。所确定的虚拟机ID可以是预先确定的。
所述第一寄存器(SECM)可以被配置为存储第一地址空间ID(ASID),并且所述第一主接口电路(1022a)可以被配置为将所述第一地址空间ID(ASID)插入到从所述微处理器(1020a)被转发给所述通信系统(114a)的所述读取或写入请求(REQ)中;其中可选地,所述第二寄存器(SECM)可以被配置为存储第二地址空间ID(ASID),并且所述第二主接口电路(MIF1)可以被配置为将所述第二地址空间ID(ASID)插入到从所述第二电路(M1)被转发到所述通信系统(114a)的所述读取或写入请求(REQ)中;并且其中所述第三寄存器(SECS)可以被配置为存储第三地址空间ID(ASID),并且所述从接口电路(SIF2)还可以被配置为:从接收到的所述请求(REQ)中提取地址空间ID,从所述第三寄存器(SECS)中读取所述第三地址空间ID(ASID),确定从接收到的所述请求(REQ)中提取的所述地址空间ID是否对应于所述第三地址空间ID(ASID),并且仅当从接收到的所述请求(REQ)中提取的所述地址空间ID也对应于所述第三地址空间ID(ASID)时将所述读取或写入请求(REQ)转发给所述第一电路(S1)。
处理系统可以包括第三电路(M2),其中所述第二寄存器(SECM)可以被配置为存储第四虚拟机ID(VMID[1]),其中所述第二主接口电路(MIF1)可以被配置为将来自所述第三电路(M2)的读取或写入请求(REQ)转发给所述通信系统(114a),并且其中所述第二主接口电路(MIF1)可以被配置为从所述第二寄存器(SECM)读取所述第四虚拟机ID(VMID[1])并将所述第四虚拟机ID(VMID[1])插入到从所述第三电路(M2)被转发给所述通信系统(114a)的所述读取或写入请求(REQ)中。
所述第二电路(M1)、所述第三电路(M2)和所述第二主接口电路(MIF1)可以实现DMA控制器(110a),其中所述第二电路(M1)与发送读取请求的读取信道(CH1)相对应,并且所述第三电路(M2)与发送写入请求的写入信道(CH2)相对应。
集成电路可以被概括为包括处理系统(10a)。
诸如车辆的设备可以被概括为包括多个处理系统(10a),其中所述处理系统(10a)经由另外的通信系统(20)来连接。
操作处理系统(10a)的方法可以被概括为包括:在处理核心(102a)中的至少一个处理核心上开启超级管理程序(HYPa)。
所述超级管理程序(HYPa)可以被配置用于:将第一虚拟机ID值存储到与第一处理核心(102a1)的第一主接口电路(1022a)相关联的第一寄存器(SECM),将第二虚拟机ID值存储到与第二处理核心(102a2)的第一主接口电路(1022a)相关联的第一寄存器(SECM),将第一虚拟机ID值存储到所述第二寄存器(SECM)和所述第三寄存器(SECS),在所述第一处理核心(102a1)上开启第一虚拟机(VM1),以及在所述第二处理核心(102a1)上开启第二虚拟机(VM2)。
在一个实施例中,处理系统包括具有物理地址范围的通信系统。多个处理核心被耦合到通信系统。每个处理核心包括:微处理器,该微处理器在操作中执行软件指令;以及第一主接口电路,该第一主接口电路与处理核心相关联,其中第一主接口电路在操作中将来自所述微处理器的读取或写入请求转发给所述通信系统,所述读取或写入请求包括所述物理地址范围中的物理地址。处理系统包括:第一电路;第一从接口电路,该第一从接口电路与第一电路相关联,其中第一从接口电路在操作中选择性地将寻址到物理地址范围的地址子范围的读取或写入请求从所述通信系统转发给所述第一电路;第二电路;第二主接口电路,该第二主接口电路与第二电路相关联,其中第二主接口电路在操作中将来自所述第二电路的读取或写入请求转发给所述通信系统;第一寄存器,该第一寄存器与第一主接口电路相关联,其中第一寄存器在操作中存储第一虚拟机ID;第二寄存器,该第二寄存器与第二主接口电路相关联,其中第二寄存器在操作中存储第二虚拟机ID;以及第三寄存器,该第三寄存器与第一从接口电路相关联,其中第三寄存器在操作中存储第三虚拟机ID。所述第一寄存器、所述第二寄存器和所述第三寄存器能够通过由所述微处理器执行的软件指令来编程。第一主接口电路在操作中从所述第一寄存器读取所述第一虚拟机ID,并且将所述第一虚拟机ID插入到从所述微处理器被转发给所述通信系统的所述读取或写入请求中。第二主接口电路在操作中从所述第二寄存器读取所述第二虚拟机ID,并且将所述第二虚拟机ID插入到从所述第二电路被转发给所述通信系统的所述读取或写入请求中。第一从接口电路在操作中通过以下来对从通信系统接收到的并且寻址到物理地址范围的地址子范围中的地址的读取或写入请求进行响应:从接收到的所述请求中提取虚拟机ID;从所述第三寄存器读取所述第三虚拟机ID;确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID;响应于确定从接收到的所述请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将所述读取或写入请求转发给所述第一电路;以及响应于确定从接收到的所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述读取或写入请求。
在一个实施例中,所述第三寄存器在操作中存储读取虚拟机ID和写入虚拟机ID;所述确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID包括:确定接收到的请求是读取请求还是写入请求;响应于确定接收到的请求是读取请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述读取虚拟机ID;以及响应于确定接收到的请求是写入请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述写入虚拟机ID。在一个实施例中,所述多个处理核心在操作中执行超级管理程序和一个或多个虚拟机,其中每个虚拟机与相应的虚拟机ID相关联;所述第一寄存器、所述第二寄存器和所述第三寄存器能够经由所述超级管理程序来编程;所述第一寄存器、所述第二寄存器和所述第三寄存器不能够经由所述一个或多个虚拟机来编程。在一个实施例中,该系统包括多个第一寄存器,每个第一寄存器与相应的第一主接口电路相关联,其中所述超级管理程序在操作中:将第一虚拟机ID值存储到与第一处理核心的第一主接口电路相关联的多个第一寄存器中的第一寄存器;将第二虚拟机ID值存储到与第二处理核心的第一主接口电路相关联的另一第一寄存器;将第一虚拟机ID值存储到所述第二寄存器和所述第三寄存器;在所述第一处理核心上开启第一虚拟机;以及在所述第二处理核心上开启第二虚拟机,其中所述第一从接口电路在操作中:通过将经由通信系统从第一虚拟机或第二电路接收到的并且寻址到地址子范围中的地址的读取或写入请求转发给所述第一电路,对该读取或写入请求进行响应;以及禁止经由通信系统向第一电路转发从第二虚拟机接收到的读取或写入请求。
在一个实施例中,当处理核心正在执行所述超级管理程序时,与处理核心相关联的相应第一主接口电路在操作中将与所述超级管理程序相关联的虚拟机ID插入到从执行超级管理程序的处理核心的相应微处理器被转发给所述通信系统的所述读取或写入请求中。在一个实施例中,当处理核心正在执行所述超级管理程序时,与处理核心相关联的相应第一主接口电路在操作中将指示特权信息的一个或多个位插入到从执行超级管理程序的处理核心的相应微处理器被转发给所述通信系统的所述读取或写入请求中。在一个实施例中,当处理核心正在执行所述超级管理程序时,与处理核心相关联的相应第一主接口电路在操作中将与所述超级管理程序相关联的虚拟机ID和指示特权信息的一个或多个位插入到从执行超级管理程序的处理核心的相应微处理器被转发给所述通信系统的所述读取或写入请求中。
在一个实施例中,所述微处理器关联了第二从接口电路,该第二从接口电路在操作中将寻址到第一地址子范围的读取或写入请求从所述通信系统转发给所述第一寄存器;所述第二电路关联了第三从接口电路,该第三从接口电路被配置为将寻址到第二地址子范围的读取或写入请求从所述通信系统转发给所述第二寄存器;或者所述微处理器关联了第二从接口电路,该第二从接口电路在操作中将寻址到第一地址子范围的读取或写入请求从所述通信系统转发给所述第一寄存器,并且所述第二电路关联了第三从接口电路,该第三从接口电路被配置为将寻址到第二地址子范围的读取或写入请求从所述通信系统转发给所述第二寄存器。在一个实施例中,处理系统包括第四从接口电路,该第四从接口电路在操作中将寻址到第三地址子范围的读取或写入请求从所述通信系统转发给所述第三寄存器;或者所述第一从接口电路被配置为将寻址到第三地址子范围的读取或写入请求从所述通信系统转发给所述第三寄存器。在一个实施例中,所述第一从接口电路、所述第二从接口电路、所述第三从接口电路和所述第四从接口电路中的至少一者在操作中:接收寻址到相应地址子范围的读取或写入请求;从接收到的所述请求中提取虚拟机ID、特权信息、或虚拟机ID和特权信息两者;以及响应于确定从接收到的所述请求中提取的所述虚拟机ID与所确定的虚拟机ID相对应或者所述特权信息具有确定值,将所述读取或写入请求转发给相应寄存器。
在一个实施例中,所述第一寄存器在操作中存储第一地址空间ID,并且所述第一主接口电路在操作中将所述第一地址空间ID插入到从所述微处理器被转发给所述通信系统的所述读取或写入请求中;所述第二寄存器在操作中存储第二地址空间ID,所述第二主接口电路在操作中将所述第二地址空间ID插入到从所述第二电路被转发给所述通信系统的所述读取或写入请求中;所述第三寄存器在操作中存储第三地址空间ID,所述从接口电路在操作中:从接收到的所述请求中提取地址空间ID,从所述第三寄存器读取所述第三地址空间ID,确定从接收到的所述请求中提取的所述地址空间ID是否对应于所述第三地址空间ID,并且响应于确定从接收到的所述请求中提取的所述地址空间ID对应于所述第三地址空间ID,将所述读取或写入请求转发给所述第一电路。
在一个实施例中,该系统包括第三电路,其中所述第二寄存器在操作中存储第四虚拟机ID,其中所述第二主接口电路在操作中将来自所述第三电路的读取或写入请求转发给所述通信系统,并且其中所述第二主接口电路在操作中从所述第二寄存器读取所述第四虚拟机ID并将所述第四虚拟机ID插入到从所述第三电路被转发给所述通信系统的所述读取或写入请求中。在一个实施例中,所述第二电路、所述第三电路和所述第二主接口电路实现DMA控制器,其中所述第二电路与发送读取请求的读取信道相对应,并且所述第三电路与发送写入请求的写入信道相对应。
在一个实施例中,该系统包括集成电路,该集成电路包括:通信系统;多个处理核心;第一电路;第一从接口电路;第二电路;第二主接口电路;第一寄存器;第二寄存器;以及第三寄存器。
在一个实施例中,一种设备包括:多个处理系统;以及通信总线,该通信总线在操作中将多个处理系统耦合在一起,多个处理系统中的每个处理系统包括:具有物理地址范围的通信系统;被耦合到通信系统的多个处理核心,每个处理核心包括:微处理器,该微处理器在操作中执行软件指令;以及与处理核心相关联的第一主接口电路,其中第一主接口电路在操作中将来自所述微处理器的读取或写入请求转发给所述通信系统,所述读取或写入请求包括所述物理地址范围中的物理地址;第一电路;与第一电路相关联的第一从接口电路,其中第一从接口电路在操作中选择性地将寻址到物理地址范围的地址子范围的读取或写入请求从所述通信系统转发给所述第一电路;第二电路;与第二电路相关联的第二主接口电路,其中第二主接口电路在操作中将来自所述第二电路的读取或写入请求转发给所述通信系统;与第一主接口电路相关联的第一寄存器,其中第一寄存器在操作中存储第一虚拟机ID;与第二主接口电路相关联的第二寄存器,其中第二寄存器在操作中存储第二虚拟机ID;以及与第一从接口电路相关联的第三寄存器,其中第三寄存器在操作中存储第三虚拟机ID,其中所述第一寄存器、所述第二寄存器和所述第三寄存器能够通过由所述微处理器执行的软件指令来编程;所述第一主接口电路在操作中从所述第一寄存器读取所述第一虚拟机ID,并且将所述第一虚拟机ID插入到从所述微处理器被转发给所述通信系统的所述读取或写入请求中;所述第二主接口电路在操作中从所述第二寄存器读取所述第二虚拟机ID,并且将所述第二虚拟机ID插入到从所述第二电路被转发给所述通信系统的所述读取或写入请求中;以及所述第一从接口电路在操作中通过以下来对从通信系统接收到的并且寻址到物理地址范围的地址子范围中的地址的读取或写入请求进行响应:从接收到的所述请求中提取虚拟机ID;从所述第三寄存器读取所述第三虚拟机ID;确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID;响应于确定从接收到的所述请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将所述读取或写入请求转发给所述第一电路;以及响应于确定从接收到的所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述读取或写入请求。
在一个实施例中,该设备包括多个集成电路,每个集成电路包括多个处理系统中的一个或多个处理系统,其中通信总线在操作中将多个集成电路耦合在一起。在一个实施例中,该设备是具有引擎的车辆,并且多个处理系统在操作中生成控制信号以控制引擎。
在一个实施例中,一种方法包括:控制在具有物理地址范围的通信系统上的通信,以及将处理核心、第一电路和第二电路耦合在一起。控制包括:在处理核心的微处理器上开启超级管理程序;在超级管理程序的控制下,将第一虚拟机ID值存储到与第一主接口电路相关联的第一寄存器,该第一主接口电路与微处理器相关联;在超级管理程序的控制下,将第二虚拟机ID值存储到与第二主接口电路相关联的第二寄存器,该第二主接口电路与第二电路相关联;在第一处理核心上执行的超级管理程序的控制下,将第三虚拟机ID值存储到第三寄存器;由第一主接口电路将被存储的第一虚拟机ID插入到从第一处理核心被转发给通信系统的读取或写入请求中;由第二主接口电路将被存储的第二虚拟机ID插入到从第二电路被转发给通信系统的读取或写入请求中;以及在与第一电路相关联的从接口电路的控制下,选择性地将寻址到物理地址范围的地址子范围的读取或写入请求从通信系统转发给第一电路。选择性地转发包括:从寻址到地址子范围的请求中提取虚拟机ID;从第三寄存器读取第三虚拟机ID;确定从该请求中提取的虚拟机ID是否对应于所述第三虚拟机ID;响应于确定从请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将请求转发给所述第一电路;以及响应于确定从所述请求提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述请求。
在一个实施例中,该方法包括:在被耦合到通信系统的第二处理核心上开启第一虚拟机;以及在超级管理程序的控制下,将第四虚拟机ID值存储到与第二处理核心的第一主接口电路相关联的第四寄存器。在一个实施例中,第一虚拟机ID和第三虚拟机ID是与超级管理程序相关联的同一虚拟机ID。在一个实施例中,该方法包括:将读取虚拟机ID和写入虚拟机ID存储到第三寄存器中,其中确定从请求中提取的所述虚拟机ID是否对应于第三虚拟机ID包括:确定接收到的请求是读取请求还是写入请求;响应于确定接收到的请求是读取请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述读取虚拟机ID;以及响应于确定接收到的请求是写入请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述写入虚拟机ID。
在一个实施例中,非瞬态计算机可读介质的内容将计算系统配置为控制在具有物理地址范围的通信系统上的通信,该通信系统将处理核、第一电路和第二电路耦合在一起。该控制通信包括:在处理核心的微处理器上开启超级管理程序;在超级管理程序的控制下,将第一虚拟机ID值存储到与第一主接口电路相关联的第一寄存器,该第一主接口电路与微处理器相关联;在超级管理程序的控制下,将第二虚拟机ID值存储到与第二主接口电路相关联的第二寄存器,该第二主接口电路与第二电路相关联;在第一处理核心上执行的超级管理程序的控制下,将第三虚拟机ID值存储到第三寄存器;由第一主接口电路将被存储的第一虚拟机ID插入到从第一处理核心被转发给通信系统的读取或写入请求中;由第二主接口电路将被存储的第二虚拟机ID插入到从第二电路被转发给通信系统的读取或写入请求中;以及在与第一电路相关联的从接口电路的控制下,选择性地将寻址到物理地址范围的地址子范围的读取或写入请求从通信系统转发给第一电路。选择性地转发包括:从寻址到地址子范围的请求中提取虚拟机ID;从第三寄存器读取第三虚拟机ID;确定从请求中提取的虚拟机ID是否对应于所述第三虚拟机ID;响应于确定从请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将请求转发给所述第一电路;以及响应于确定从所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述请求。在一个实施例中,该方法包括:在被耦合到通信系统的第二处理核心上开启第一虚拟机;以及在超级管理程序的控制下,将第四虚拟机ID值存储到与第二处理核心的第一主接口电路相关联的第四寄存器。在一个实施例中,第一虚拟机ID和第三虚拟机ID是与超级管理程序相关联的同一虚拟机ID。在一个实施例中,该方法包括:将读取虚拟机ID和写入虚拟机ID存储到第三寄存器中,其中确定从请求中提取的所述虚拟机ID是否对应于第三虚拟机ID包括:确定接收到的请求是读取请求还是写入请求;响应于确定接收到的请求是读取请求,确定从接收到的请求中提取的所述虚拟机ID是否对应于所述读取虚拟机ID;以及响应于确定接收到的请求是写入请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述写入虚拟机ID。在一个实施例中,计算系统包括微处理器,并且内容包括由超级管理程序执行的指令。
一些实施例可以采用计算机程序产品的形式或包括计算机程序产品。例如,根据一个实施例,提供了一种计算机可读介质,包括适于执行上述方法或功能中的一个或多个的计算机程序。该介质可以是物理存储介质,诸如例如只读存储器(ROM)芯片,或盘,诸如数字多功能盘(DVD-ROM),光盘(CD-ROM),硬盘,存储器,网络,或将由适当的驱动或经由适当的连接读取的便携式介质制品,包括如在被存储在一个或多个这样的计算机可读介质上并可由适当的读取器设备读取的一个或多个条形码或其它相关代码中所编码的。
此外,在一些实施例中,方法和/或功能性中的一些或全部可以以其它方式来实现或提供,诸如至少部分地以固件和/或硬件来实现或提供,这些固件和/或硬件包括但不限于一个或多个专用集成电路(ASIC)、数字信号处理器、分立电路、逻辑门、标准集成电路、控制器(例如,通过执行适当的指令,并且包括微控制器和/或嵌入式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)等,以及采用RFID技术的器件及它们的各种组合。
上述各种实施例可以被组合以提供另外的实施例。如果需要,可以修改实施例的各方面以采用各种专利、申请和出版物的概念来提供另外的实施例。

Claims (26)

1.一种处理系统,包括:
通信系统,具有物理地址范围;
多个处理核心,被耦合到所述通信系统,每个处理核心包括:
微处理器,所述微处理器在操作中执行软件指令;以及
第一主接口电路,所述第一主接口电路与所述处理核心相关联,其中所述第一主接口电路在操作中将来自所述微处理器的读取或写入请求转发给所述通信系统,所述读取或写入请求包括所述物理地址范围中的物理地址;
第一电路;
第一从接口电路,所述第一从接口电路与所述第一电路相关联,其中所述第一从接口电路在操作中选择性地将寻址到所述物理地址范围的地址子范围的读取或写入请求从所述通信系统转发给所述第一电路;
第二电路;
第二主接口电路,所述第二主接口电路与所述第二电路相关联,其中所述第二主接口电路在操作中将来自所述第二电路的读取或写入请求转发给所述通信系统;
第一寄存器,所述第一寄存器与所述第一主接口电路相关联,其中所述第一寄存器在操作中存储第一虚拟机ID;
第二寄存器,所述第二寄存器与所述第二主接口电路相关联,其中所述第二寄存器在操作中存储第二虚拟机ID;以及
第三寄存器,所述第三寄存器与所述第一从接口电路相关联,其中所述第三寄存器在操作中存储第三虚拟机ID,
其中所述第一寄存器、所述第二寄存器和所述第三寄存器能够通过由所述微处理器执行的软件指令来编程;
其中所述第一主接口电路在操作中从所述第一寄存器读取所述第一虚拟机ID,并且将所述第一虚拟机ID插入到从所述微处理器被转发给所述通信系统的所述读取或写入请求中;
其中所述第二主接口电路在操作中从所述第二寄存器读取所述第二虚拟机ID,并且将所述第二虚拟机ID插入到从所述第二电路被转发给所述通信系统的所述读取或写入请求中;以及
其中所述第一从接口电路在操作中通过以下操作来对从所述通信系统接收到的并且寻址到所述物理地址范围的所述地址子范围中的地址的读取或写入请求进行响应:
从接收到的所述请求中提取虚拟机ID;
从所述第三寄存器读取所述第三虚拟机ID;
确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID;
响应于确定从接收到的所述请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将所述读取或写入请求转发给所述第一电路;以及
响应于确定从接收到的所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述读取或写入请求。
2.根据权利要求1所述的处理系统,其中:
所述第三寄存器在操作中存储读取虚拟机ID和写入虚拟机ID;以及
所述确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID包括:
确定接收到的所述请求是读取请求还是写入请求;响应于确定接收到的所述请求是读取请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述读取虚拟机ID;以及响应于确定接收到的所述请求是写入请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述写入虚拟机ID。
3.根据权利要求1所述的处理系统,其中,
所述多个处理核心在操作中执行超级管理程序和一个或多个虚拟机,其中每个虚拟机与相应的虚拟机ID相关联;
所述第一寄存器、所述第二寄存器和所述第三寄存器能够经由所述超级管理程序来编程;
所述第一寄存器、所述第二寄存器和所述第三寄存器不能够经由所述一个或多个虚拟机来编程。
4.根据权利要求3所述的处理系统,包括多个第一寄存器,每个第一寄存器与相应的第一主接口电路相关联,其中所述超级管理程序在操作中,
将第一虚拟机ID值存储到与第一处理核心的第一主接口电路相关联的多个第一寄存器中的第一寄存器;
将第二虚拟机ID值存储到与第二处理核心的第一主接口电路相关联的另一第一寄存器;
将第一虚拟机ID值存储到所述第二寄存器和所述第三寄存器,
在所述第一处理核心上开启第一虚拟机;以及
在所述第二处理核心上开启第二虚拟机,
其中所述第一从接口电路,在操作中:
通过将经由所述通信系统从所述第一虚拟机或所述第二电路接收到的并且寻址到所述地址子范围中的地址的读取或写入请求转发给所述第一电路,对所述读取或写入请求进行响应;以及
禁止经由所述通信系统向所述第一电路转发从所述第二虚拟机接收到的读取或写入请求。
5.根据权利要求3所述的处理系统,其中,当处理核心正在执行所述超级管理程序时,与所述处理核心相关联的相应第一主接口电路在操作中将与所述超级管理程序相关联的虚拟机ID插入到从执行所述超级管理程序的所述处理核心的相应微处理器被转发给所述通信系统的所述读取或写入请求中。
6.根据权利要求3所述的处理系统,其中,当处理核心正在执行所述超级管理程序时,与所述处理核心相关联的相应第一主接口电路在操作中将指示特权信息的一个或多个位插入到从执行所述超级管理程序的所述处理核心的相应微处理器被转发给所述通信系统的所述读取或写入请求中。
7.根据权利要求3所述的处理系统,其中,当处理核心正在执行所述超级管理程序时,与所述处理核心相关联的相应第一主接口电路在操作中将与所述超级管理程序相关联的虚拟机ID和指示特权信息的一个或多个位插入到从执行所述超级管理程序的所述处理核心的相应微处理器被转发给所述通信系统的所述读取或写入请求中。
8.根据权利要求1所述的处理系统,其中,
所述微处理器关联了第二从接口电路,所述第二从接口电路在操作中将寻址到第一地址子范围的读取或写入请求从所述通信系统转发给所述第一寄存器;
所述第二电路关联了第三从接口电路,所述第三从接口电路被配置为将寻址到第二地址子范围的读取或写入请求从所述通信系统转发给所述第二寄存器;或
所述微处理器关联了第二从接口电路,所述第二从接口电路在操作中将寻址到第一地址子范围的读取或写入请求从所述通信系统转发给所述第一寄存器,并且所述第二电路关联了第三从接口电路,所述第三从接口电路被配置为将寻址到第二地址子范围的读取或写入请求从所述通信系统转发给所述第二寄存器。
9.根据权利要求8所述的处理系统,其中:
所述处理系统包括第四从接口电路,所述第四从接口电路在操作中将寻址到第三地址子范围的读取或写入请求从所述通信系统转发给所述第三寄存器;或
所述第一从接口电路被配置为将寻址到所述第三地址子范围的读取或写入请求从所述通信系统转发给所述第三寄存器。
10.根据权利要求8所述的处理系统,其中所述第一从接口电路、所述第二从接口电路、所述第三从接口电路和所述第四从接口电路中的至少一者在操作中:
接收寻址到相应地址子范围的读取或写入请求;
从接收到的所述请求中提取虚拟机ID、特权信息、或虚拟机ID和特权信息两者;以及
响应于确定从接收到的所述请求中提取的所述虚拟机ID与所确定的虚拟机ID相对应或者所述特权信息具有确定值,将所述读取或写入请求转发给相应寄存器。
11.根据权利要求1所述的处理系统,
其中所述第一寄存器在操作中存储第一地址空间ID,并且所述第一主接口电路在操作中将所述第一地址空间ID插入到从所述微处理器被转发给所述通信系统的所述读取或写入请求中;
其中所述第二寄存器在操作中存储第二地址空间ID,并且所述第二主接口电路在操作中将所述第二地址空间ID插入到从所述第二电路被转发给所述通信系统的所述读取或写入请求中;以及
其中所述第三寄存器在操作中存储第三地址空间ID,并且所述从接口电路在操作中:
从接收到的所述请求中提取地址空间ID,
从所述第三寄存器读取所述第三地址空间ID,
确定从接收到的所述请求中提取的所述地址空间ID是否对应于所述第三地址空间ID,以及
响应于确定从接收到的所述请求中提取的所述地址空间ID对应于所述第三地址空间ID,将所述读取或写入请求转发给所述第一电路。
12.根据权利要求1所述的处理系统,包括第三电路,其中所述第二寄存器在操作中存储第四虚拟机ID,其中所述第二主接口电路在操作中将来自所述第三电路的读取或写入请求转发给所述通信系统,并且其中所述第二主接口电路在操作中从所述第二寄存器读取所述第四虚拟机ID并且将所述第四虚拟机ID插入到从所述第三电路被转发给所述通信系统的所述读取或写入请求中。
13.根据权利要求12所述的处理系统,其中所述第二电路、所述第三电路和所述第二主接口电路实现DMA控制器,其中所述第二电路与发送读取请求的读取信道相对应,并且所述第三电路与发送写入请求的写入信道相对应。
14.根据权利要求1所述的处理系统,包括集成电路,所述集成电路包括:
所述通信系统;
所述多个处理核心;
所述第一电路;
所述第一从接口电路;
所述第二电路;
所述第二主接口电路;
所述第一寄存器;
所述第二寄存器;以及
所述第三寄存器。
15.一种设备,包括:
多个处理系统;以及
通信总线,所述通信总线在操作中将所述多个处理系统耦合在一起,其中所述多个处理系统中的每个处理系统包括:
通信系统,具有物理地址范围;
多个处理核心,被耦合到所述通信系统,每个处理核心包括:
微处理器,所述微处理器在操作中执行软件指令;以及
第一主接口电路,所述第一主接口电路与所述处理核心相关联,其中所述第一主接口电路在操作中将来自所述微处理器的读取或写入请求转发给所述通信系统,所述读取或写入请求包括所述物理地址范围中的物理地址;
第一电路;
第一从接口电路,所述第一从接口电路与所述第一电路相关联,其中所述第一从接口电路在操作中选择性地将寻址到所述物理地址范围的地址子范围的读取或写入请求从所述通信系统转发给所述第一电路;
第二电路;
第二主接口电路,所述第二主接口电路与所述第二电路相关联,其中所述第二主接口电路在操作中将来自所述第二电路的读取或写入请求转发给所述通信系统;
第一寄存器,所述第一寄存器与所述第一主接口电路相关联,其中所述第一寄存器在操作中存储第一虚拟机ID;
第二寄存器,所述第二寄存器与所述第二主接口电路相关联,其中所述第二寄存器在操作中存储第二虚拟机ID;以及
第三寄存器,所述第三寄存器与所述第一从接口电路相关联,其中所述第三寄存器在操作中存储第三虚拟机ID,其中
所述第一寄存器、所述第二寄存器和所述第三寄存器能够通过由所述微处理器执行的软件指令来编程;
所述第一主接口电路在操作中从所述第一寄存器读取所述第一虚拟机ID,并且将所述第一虚拟机ID插入到从所述微处理器被转发给所述通信系统的所述读取或写入请求中;
所述第二主接口电路在操作中从所述第二寄存器读取所述第二虚拟机ID,并且将所述第二虚拟机ID插入到从所述第二电路被转发给所述通信系统的所述读取或写入请求中;以及
所述第一从接口电路在操作中通过以下操作来对从所述通信系统接收到的并且寻址到所述物理地址范围的地址子范围中的地址的读取或写入请求进行响应:
从接收到的所述请求中提取虚拟机ID;
从所述第三寄存器读取所述第三虚拟机ID;
确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID;
响应于确定从接收到的所述请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将所述读取或写入请求转发给所述第一电路;以及
响应于确定从接收到的所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述读取或写入请求。
16.根据权利要求15所述的设备,包括多个集成电路,每个集成电路包括所述多个处理系统中的一个或多个处理系统,其中所述通信总线在操作中将所述多个集成电路耦合在一起。
17.根据权利要求15所述的设备,其中所述设备是具有引擎的车辆,并且所述多个处理系统在操作中生成控制信号以控制所述引擎。
18.一种方法,包括:
控制在具有物理地址范围的通信系统上的通信,并且将处理核心、第一电路和第二电路耦合在一起,所述控制包括:
在所述处理核心的微处理器上开启超级管理程序;
在所述超级管理程序的控制下,将第一虚拟机ID值存储到与第一主接口电路相关联的第一寄存器,所述第一主接口电路与所述微处理器相关联;
在所述超级管理程序的控制下,将第二虚拟机ID值存储到与第二主接口电路相关联的第二寄存器,所述第二主接口电路与所述第二电路相关联;
在所述第一处理核心上执行的所述超级管理程序的控制下,将第三虚拟机ID值存储到第三寄存器;
由所述第一主接口电路将被存储的所述第一虚拟机ID插入到从所述第一处理核心被转发给所述通信系统的读取或写入请求中;
由所述第二主接口电路将被存储的所述第二虚拟机ID插入到从所述第二电路被转发给所述通信系统的读取或写入请求中;以及
在与所述第一电路相关联的从接口电路的控制下,选择性地将寻址到所述物理地址范围的地址子范围的读取或写入请求从所述通信系统转发给所述第一电路,所述选择性地转发包括:
从寻址到所述地址子范围的所述请求中提取虚拟机ID;
从所述第三寄存器读取所述第三虚拟机ID;
确定从所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID;
响应于确定从所述请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将所述请求转发给所述第一电路;以及
响应于确定从所述请求提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述请求。
19.根据权利要求18所述的方法,包括:
在被耦合到所述通信系统的第二处理核心上开启第一虚拟机;以及
在所述超级管理程序的控制下,将第四虚拟机ID值存储到与所述第二处理核心的第一主接口电路相关联的第四寄存器。
20.根据权利要求18所述的方法,其中所述第一虚拟机ID和所述第三虚拟机ID是与所述超级管理程序相关联的同一虚拟机ID。
21.根据权利要求18所述的方法,包括:
将读取虚拟机ID和写入虚拟机ID存储到所述第三寄存器中,其中确定从所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID包括:
确定接收到的所述请求是读取请求还是写入请求;
响应于确定接收到的所述请求是读取请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述读取虚拟机ID;以及
响应于确定接收到的所述请求是写入请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述写入虚拟机ID。
22.一种非瞬态计算机可读介质,所述非瞬态计算机可读介质具有内容,所述内容将计算系统配置为控制在具有物理地址范围的通信系统上的通信,所述通信系统将处理核心、第一电路和第二电路耦合在一起,所述控制通信包括:
在所述处理核心的微处理器上开启超级管理程序;
在所述超级管理程序的控制下,将第一虚拟机ID值存储到与第一主接口电路相关联的第一寄存器,所述第一主接口电路与所述微处理器相关联;
在所述超级管理程序的控制下,将第二虚拟机ID值存储到与第二主接口电路相关联的第二寄存器,所述第二主接口电路与所述第二电路相关联;
在所述第一处理核心上执行的所述超级管理程序的控制下,将第三虚拟机ID值存储到第三寄存器;
由所述第一主接口电路将被存储的所述第一虚拟机ID插入到从所述第一处理核心被转发给所述通信系统的读取或写入请求中;
由所述第二主接口电路将被存储的所述第二虚拟机ID插入到从所述第二电路被转发给所述通信系统的读取或写入请求中;以及
在与所述第一电路相关联的从接口电路的控制下,选择性地将寻址到所述物理地址范围的地址子范围的读取或写入请求从所述通信系统转发给所述第一电路,所述选择性地转发包括:
从寻址到所述地址子范围的所述请求中提取虚拟机ID;
从所述第三寄存器读取所述第三虚拟机ID;
确定从所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID;
响应于确定从所述请求中提取的所述虚拟机ID对应于所述第三虚拟机ID,将所述请求转发给所述第一电路;以及
响应于确定从所述请求中提取的所述虚拟机ID不对应于所述第三虚拟机ID,禁止向所述第一电路转发所述请求。
23.根据权利要求22所述的非瞬态计算机可读介质,所述方法包括:
在被耦合到所述通信系统的第二处理核心上开启第一虚拟机;以及
在所述超级管理程序的控制下,将第四虚拟机ID值存储到与所述第二处理核心的第一主接口电路相关联的第四寄存器。
24.根据权利要求22所述的非瞬态计算机可读介质,其中所述第一虚拟机ID和所述第三虚拟机ID是与所述超级管理程序相关联的同一虚拟机ID。
25.根据权利要求22所述的非瞬态计算机可读介质,所述方法包括:
将读取虚拟机ID和写入虚拟机ID存储到所述第三寄存器中,其中确定从所述请求中提取的所述虚拟机ID是否对应于所述第三虚拟机ID包括:
确定接收到的所述请求是读取请求还是写入请求;
响应于确定接收到的所述请求是读取请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述读取虚拟机ID;以及
响应于确定接收到的所述请求是写入请求,确定从接收到的所述请求中提取的所述虚拟机ID是否对应于所述写入虚拟机ID。
26.根据权利要求22所述的非瞬态计算机可读介质,其中所述计算系统包括所述微处理器,并且所述内容包括由所述超级管理程序执行的指令。
CN202210481246.XA 2021-05-06 2022-05-05 处理系统、相关集成电路、设备及方法 Pending CN115309678A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IT202100011639 2021-05-06
IT102021000011639 2021-05-06
US17/736,590 US20220357973A1 (en) 2021-05-06 2022-05-04 Processing system, related integrated circuit, device and method
US17/736,590 2022-05-04

Publications (1)

Publication Number Publication Date
CN115309678A true CN115309678A (zh) 2022-11-08

Family

ID=83855648

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210481246.XA Pending CN115309678A (zh) 2021-05-06 2022-05-05 处理系统、相关集成电路、设备及方法

Country Status (1)

Country Link
CN (1) CN115309678A (zh)

Similar Documents

Publication Publication Date Title
KR101782398B1 (ko) 보안된 가상 머신간 공유된 메모리 통신을 위한 기술
JP5870206B2 (ja) 効率的なメモリ及びリソース管理
US20080065854A1 (en) Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor
EP3414662B1 (en) Virtualizing sensors
US9384153B2 (en) Virtualized local storage
US8918568B2 (en) PCI express SR-IOV/MR-IOV virtual function clusters
US10140214B2 (en) Hypervisor translation bypass by host IOMMU with virtual machine migration support
US11494221B2 (en) Hardware control core controlling operation of hardware devices by executing device drivers within the hardware control core used by virtual machine cores via shared memory having an uplink and downlink memory
US10257166B2 (en) Guest netfilter protection by virtual machine function
US10013199B2 (en) Translation bypass by host IOMMU for systems with virtual IOMMU
US8713217B2 (en) Permitting access of slave device from master device based on process ID's
EP4004753B1 (en) Programmable network interface device comprising a host computing device and a network interface device
US10671419B2 (en) Multiple input-output memory management units with fine grained device scopes for virtual machines
US9875131B2 (en) Virtual PCI device based hypervisor bypass using a bridge virtual machine
CN103984591A (zh) 计算机虚拟化系统的PCI设备INTx中断投递方法
US20080229325A1 (en) Method and apparatus to use unmapped cache for interprocess communication
US11150928B2 (en) Hypervisor translation bypass
CN107533443B (zh) 在半导体器件中提供多个根
CN115309678A (zh) 处理系统、相关集成电路、设备及方法
US10481951B2 (en) Multi-queue device assignment for application groups
US20220357973A1 (en) Processing system, related integrated circuit, device and method
JP2014119787A (ja) プロセッサ
WO2012143947A2 (en) Multi-host peripheral controller
EP3255544B1 (en) Interrupt controller
Sukhwani et al. Extensible on-chip peripherals

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