用于虚拟硬件存储器保护的系统和方法与流程

文档序号:17131662发布日期:2019-03-16 01:19阅读:179来源:国知局
用于虚拟硬件存储器保护的系统和方法与流程

相关申请的交叉引用

本申请要求2013年2月7日提交的美国临时专利申请61/762,212(代理编号ti-73288ps)的优先权,其通过引用合并于此。



背景技术:

各种过程由与安全和风险降低有关的国际标准控制。例如,iec61508致力于例如用于控制工业或其他安全关键过程的微控制器或其他计算机的电气、电子和可编程电子器件的功能安全。iec61508基于特定应用的概率分析定义安全完整性等级(sil)。为了实现给定的sil,包括组成组件的应用必须满足最大“危险故障”概率和最小“安全故障分数”的目标。“危险故障”的概念是以具体应用为基础来定义,但是基于在安全关键应用的开发期间被证实完整性的要求约束。“安全故障分数”确定系统管理危险故障的能力并且将安全的已检测故障的可能性与危险的未检测故障的可能性进行比较。最终,电子器件对于特定sil的认证要求电子器件提供特定故障检测水平和特定故障恢复水平并且使安全关键应用能够在出现故障后转变到安全状态。

另一个功能安全标准是iso26262,其致力于公路车辆例如汽车的功能安全。iso26262关注于解决由汽车的电子系统和电气系统的故障行为可能导致的危害。类似于iec61508所定义的sil,iso26262提供了特定汽车的基于风险的方案以便确定被称为汽车安全完整性等级(asil)的风险级别。asil被用来指定特定产品的能力以便实现可接受的安全目标。

用于控制过程(工业过程、汽车过程或其他过程)的电子器件可被用来执行多种功能,其中一些是“安全功能”,而其他是“非安全功能”。安全功能是其操作影响过程安全的功能;例如,驱动电动机用于动力转向的闭环控制系统是一种安全功能。非安全功能是其操作不影响过程安全的功能;例如,内置于电子器件的调试功能用于针对控制功能开发软件,但在电子器件集成到车辆时将不再使用该调试功能,此调试功能为非安全功能。



技术实现要素:

上面提到的问题很大一部分由包括硬件逻辑的存储器保护单元来解决。硬件逻辑接收指向总线受控器的来自虚拟中央处理单元(cpu)的事务,该事务与虚拟cpu标识(id)相关,其中虚拟cpu实现在物理cpu上。硬件逻辑还基于虚拟cpuid确定是否授权或拒绝访问总线受控器。虚拟cpuid不同于虚拟cpu实现在其上的物理cpu的id。

本公开的其他实施例涉及一种包括硬件逻辑的存储器保护单元。硬件逻辑接收指向总线受控器来自虚拟中央处理单元(cpu)的事务,该事务与虚拟任务标识(id)相关,其中虚拟cpu实现在物理cpu上。硬件逻辑还基于虚拟任务id确定是否授权或拒绝访问总线受控器。虚拟任务id不同于在虚拟cpu实现在其上的物理cpu上执行的任务的id。

本公开的又一实施例涉及一种方法,其包括:接收指向总线受控器的来自虚拟中央处理单元(cpu)的事务,该事务与虚拟cpu标识(id)相关,其中虚拟cpu实现在物理cpu上。该方法还包括:基于虚拟cpuid确定是否授权或拒绝访问总线受控器。虚拟cpuid不同于虚拟cpu实现在其上的物理cpu的id。

附图说明

为了详细描述本发明示例性实施例,现在将参考附图,其中:

图1示出根据各种实施例的示例性片上系统(soc)体系结构的框图;

图2示出根据各种实施例的结合多任务总线主控器的示例性存储器保护单元(mpu)的框图;

图3示出根据各种实施例的结合单任务总线主控器的示例性mpu的框图;

图4示出根据各种实施例的利用虚拟化硬件方案结合多任务总线主控器的示例性mpu的框图;和

图5a-5d示出根据各种实施例的方法的流程图。

注释和术语

贯穿以下描述和所附权利要求书中使用特定术语来指代特定系统组件。如所属领域的技术人员将了解,各公司可用不同名称来指代一组件。本文不意图区分名称不同但功能相同的组件。在以下论述和所附权利要求书中,术语“包含”和“包括”以开放式方式使用,且因此应解释为表示“包含但不限于…”。并且,术语“耦合”意在表示间接或直接电连接。因此,如果第一器件耦合到第二器件,那么该连接可经由直接电连接,或经由通过其它器件和连接的间接电连接。

如本文中所使用,术语“事务”指读出/写入存储器或读出/写入另一逻辑块或寄存器的请求。

如本文中所使用,术语“总线主控器”指启动事务的逻辑块。

如本文中所使用,术语“总线受控器”指接收事务的组件;例如,存储器区域或外围设备可以是总线受控器。

如本文中所使用,术语“互连件”指例如在总线主控器和总线受控器之间分配事务的组件。

具体实施方式

下面的讨论针对本发明的各种实施例。尽管这些实施例的一个或多个可能是优选的,但所公开的实施例不应被解释为或以其他方式用作限制包括权利要求的本公开的范围。此外,本领域技术人员将理解,下面的描述具有广泛的应用,并且任何实施例的讨论仅仅意在例示该实施例,而不旨在暗示包括权利要求的本公开的范围限于该实施例。

安全和非安全功能可以在例如具有一个或多个处理器核和存储器的片上系统(soc)上实现,可在处理器核之间共享该安全和非安全功能。理论上讲,当单独soc执行电子器件的各种功能中的每一个时,最高安全等级得以实现。这样,特定功能的操作不会被其他功能削弱或破坏,因为实现特定功能的总线主控器不能访问除其自身以外的任何总线受控器。然而,此类方法成本太高。

为了降低此类电子器件的成本,安全功能可以与非安全功能一起实现,例如由单个soc执行多种功能。然而,为了维持适当的sil,应该避免某些功能干扰其他功能(例如,应该避免一种功能访问未分配给该功能的地址区域存储器,或者避免向未分配给该功能的外围设备发送事务)。

安全功能可以与多个sil中的一个相关。例如,sil为3的安全功能可能要求高等级的安全保证,而sil为2或更低的功能要求较低等级的安全保证,但是仍然比非安全功能要求更多的安全保证。也就是说,相对于sil为2(或更低)的功能,sil为3的功能存在更大程度的风险,因此要求更多的风险降低措施。因此,多个安全功能可以具有相互独立的sil。各种标准要求具有不同sil等级的功能不应互相干扰。类似地,非安全关键任务不得干扰安全关键任务。因此,当非安全功能应该被分离以使得非安全功能不破坏安全功能时,较高sil安全功能(即,数值更大)也应被分离以使得较低sil安全功能不会破坏较高sil安全功能。

图1示出具有由数个总线主控器实现的多个功能(也被称为任务)的soc体系结构100。如上所解释,soc体系结构100可以是控制过程和执行多个功能的电子设备的一部分。某些任务可以是安全功能,这些安全功能在某些情况下具有不同的sil,而其他任务可以是非安全功能。该soc体系结构100包括实现任务a和b的cpu102、实现任务c和d的直接存储器存取(dma)引擎104和实现任务e的通用串行总线(usb)控制器106。cpu102、dma引擎104和usb控制器106是总线主控器的示例。

soc体系结构100还包括将总线主控器102、104、106耦合到示例性总线受控器(例如,随机存取存储器(ram)110和只读存储器(rom)112)的互连件108。此外,互连件108可以将总线主控器102、104、106耦合到外围设备116a-116n(例如,串行端口、通用输入/输出端口或定时器)。在一些情况下,外围互连件114被插入在互连件108和外围设备116a-116n之间,从而进一步便于将事务路由到适当的外围设备116a-116n。

soc体系结构100是示例性的,并且应当理解各种总线主控器102、104、106的多个实例可存在于专用soc中。不论具体的实施方式如何,总线受控等级的各个任务之间免受干扰是重要的,以确保执行各种任务的设备达到可接受的风险等级。此外,如图1所示,某些总线主控器102、104、106实现多个任务,其中一些可以是安全功能,而另一些可以是非安全功能,因此在单个总线主控器102、104、106上运行的任务之间保持免受干扰也是重要的。

转到图2,cpu102与本地存储器保护单元(mpu)202一起被示出。mpu202包括基于每个事务确定是否授权或拒绝访问总线受控器的硬件逻辑(未示出)。硬件逻辑可包括各种比较器、编码器、解码器等,其利用包含在事务中的信息来确定是否授权或拒绝访问总线受控器。例如,事务可以是指令提取或数据访问请求。mpu202可以将指令提取发送到指令总线,将数据访问请求发送到数据总线,或者将指令提取和数据访问请求中的任一个发送到混合的指令和数据总线,连同控制信号一起发送以确定该事务是否是指令提取或数据访问请求。这在图2中通过mpu202单独发送指令提取和数据访问请求来显示。互连件108意在表示各种总线实施方式。

包含在指令提取和/或数据访问请求字段中的信息可用于确定是否授权或拒绝访问总线受控器。此外,mpu202可以基于一个因子或数个因子的组合来确定是否授权或拒绝访问总线受控器。

在一些情况下,可以基于事务所指向的存储器的地址来隔离事务。例如,某些地址可以是被保护的,而其他地址是非保护的。源自安全功能的事务可以由mpu202授权其对被保护或非保护地址的访问,而源自非安全功能的事务被授权访问非保护地址,并且被拒绝访问被保护的地址。此外,在某些实施例中,可以有多个地址保护等级,并且允许更高等级的安全功能访问任何地址,然而仅允许较低等级的安全功能访问一定等级的保护地址,并且仅允许非安全功能访问非保护地址。

在其他情况下,可基于与生成事务的功能或任务相关的特权等级来隔离事务。例如,某些功能可以是“特权的”,其他功能可以是“非特权的”。源自特权功能的事务可由mpu202授权访问要求特权等级的总线受控器,而源自非特权功能的事务可以被拒绝访问要求特权等级的总线受控器。类似地,可基于安全等级来隔离事务,其中一些功能包括可信代码,而其他功能包括非可信代码。源自可信代码的事务由mpu202授权访问以确保总线受控器安全,而源自非可信代码的事务被拒绝访问以确保总线受控器安全。

此外,可以基于与生成事务的功能或任务相关的任务标识(id)来隔离事务。例如,总线主控器或cpu102可以将任务id分配到正在运行的每个任务,任务id可以由mpu202用来基于每个任务而识别权限。可替换地,可以基于事务是否源自由作为“功能单元”的总线主控器执行或由作为“调试单元”的总线主控器执行的功能或任务来隔离事务。mpu202可以授权源自功能单元的任务访问某些总线受控器,而拒绝源自调试单元的任务访问那些总线受控器。

参考图1和2,ram110和/或rom112的地址区具有相关的权限。如果特定功能或任务的各种属性满足地址区的权限等级,则mpu202授权源自该功能或任务的事务进行访问。如果属性不符合地址区域的权限等级,访问被拒绝。对于支持执行多于一个任务的某些组件(例如,cpu102),相关的mpu202在执行的任务改变时被重新配置以便支持基于任务的隔离。mpu202的配置是指被应用到当前正在执行的任务的访问权限。例如,存储缓冲器可能属于第一任务。当cpu102正在执行第一任务时,mpu202被配置为允许访问存储缓冲器;但是,当cpu102切换到第二任务时,mpu202被重新配置以防止访问存储缓冲器。mpu202可以具有对应于cpu102所执行的不同任务的许多已存储的配置。在一些实施例中,mpu202可以基于事务的不同的接收任务id而切换配置。在其他实施例中,例如当总线主控器是cpu102时,在cpu102上执行的改变任务的软件也重新配置mpu202。

如有尝试违反由mpu202执行的访问规则的情况发生,可以采取各种动作。例如,mpu202可以向cpu102上执行的系统级监控任务报告尝试的访问违规。在一些情况下,mpu202阻止事务发生,而在另外一些情况下,mpu202将该事务标记为具有错误。此外,在安全敏感的应用中,标记为具有错误的事务可向尝试获得安全存储器访问的恶意实体提供有用的信息,可产生模拟正常响应的响应,但该响应包含错误的数据。

图3示出usb控制器106,其是单任务总线主控器的示例。在单任务总线主控器的情况下,类似于mpu202的mpu302被实现,尽管是在简化的基础上。例如,usb控制器106通常只访问两个区域—发送缓冲器和接收缓冲器。此外,mpu302执行基于任务的识别是没有必要的,因为只有一个任务由usb控制器106来实现。

在上述示例中,mpu202、302通过在适当的时候限制较低等级功能或者非安全功能的访问而有利于保护存储器和/或某些外围设备的某些区域。因此,可接受的安全等级由整体装置获得,在该整体装置上实施soc体系结构100,同时通过在单个soc上实现许多功能来降低设备成本。

根据各种实施例,总线主控器例如cpu102可以实现虚拟化硬件的多个实例以便执行各种功能。转到图4,cpu102可包含实现安全功能的第一虚拟cpu402和实现非安全功能的第二虚拟cpu404。但是,由于安全功能和非安全功能都由相同的物理cpu(即cpu102)实现,所以由任一功能产生的事务的cpuid将是相同的。此外,在某些情况下,由任一功能产生的事务的任务id可能是相同的。因此,上面描述的mpu202将不能区分事务,而较低等级的或非安全的功能会被不适当地授权访问特定的总线受控器。

根据各种实施例,虚拟cpuid与在物理cpu102上仿真的每个虚拟cpu402、404相关。此外,虚拟任务id可以与在虚拟cpu402、404上运行的每个虚拟任务相关。与实现虚拟化硬件的总线主控器相关的mpu406(例如,实现一个或多个虚拟cpu402、404的物理cpu102)基于虚拟cpuid和/或虚拟任务id来授权或拒绝访问外围设备、存储器区域或其他总线受控器。因此,即使在安全和非安全功能在虚拟化硬件中实现的系统中,存储器保护也被使能,从而达到可接受的风险等级。

此外,物理cpu102可以执行独立于由虚拟cpu402、404执行的任务(例如,任务a-d)的任务(例如,任务e)。在这种情况下,mpu406不只是基于虚拟cpuid或虚拟任务id来授权或拒绝访问,而是一般基于虚拟cpuid和cpuid或者虚拟任务id和任务id来授权或拒绝访问。这样,mpu406将相同的许可方案应用到cpu,而不管它们是否是虚拟cpu402、404或物理cpu102。类似地,mpu406将相同的许可方案应用到任务,而不管它们是否是由虚拟硬件实现的任务(即由虚拟cpu402、404实现的任务a-d)或由物理硬件实现的任务(即由cpu102实现的任务e)。

图5a-5d示出根据各种实施例的方法500。图5a示出方法500,其开始于块502,其中接收指向总线受控器的来自虚拟cpu的事务。虚拟cpu实现在物理cpu上,并且该事务与虚拟cpuid相关。方法500继续进入块504中,其中基于虚拟cpuid确定是否授权或拒绝访问总线受控器。如上面所解释的,由此使得即便各种功能实现在虚拟化硬件中也能够进行存储器保护。例如,安全功能可以在虚拟cpu上执行,而非安全功能在物理cpu上执行。通常,每个功能将只与物理cpuid相关,但是因为它们在相同的物理总线主控器上执行,所以不能被区分。然而,根据各种实施例,由于考虑到虚拟cpuid和物理cpuid,因此mpu例如mpu406使得能够区分这些功能。

转到图5b,方法500可以可选地包括:在块506中接收同样指向总线受控器的来自物理cpu的事务。方法500继续进入块508,其中基于物理cpuid确定是否授权或拒绝访问总线受控器。然后,在块510中,该方法包括:分别基于虚拟cpuid和物理cpuid授权来自虚拟cpu和物理cpu的事务之一进行访问,并且拒绝其他事务进行访问。这进一步说明如上所述的功能,其中mpu406区分源于物理cpu上的事务和源于实现在物理cpu上的虚拟cpu上的事务。

图5c进一步示出该方法500,其可选地包括:在块512中接收指向总线受控器的来自虚拟cpu的事务。该事务与虚拟任务id相关。方法500继续进入块514,其中基于虚拟任务id确定是否授权或拒绝访问总线受控器。如图5d的块516中所示,图5c所示的方法500可以可选地继续接收指向总线受控器的来自物理cpu的事务。该事务与物理任务id相关。方法500继续进入块518,其中基于物理任务id确定是否授权或拒绝访问总线受控器。在块520中,方法500包括:基于虚拟任务id和物理任务id授权来自虚拟cpu或物理cpu的事务中的一个进行访问,并且拒绝其他事务进行访问。这样,不管事务是否源自虚拟cpu或物理cpu,其关联的任务id(即,虚拟任务id或物理任务id)都可被用来区分针对每个事务允许的存储器保护等级。

以上讨论意在说明本发明的原理和各种实施例。本领域技术人员一旦完全理解上述公开,许多变化和修改将变得明显。随附权利要求旨在被解释成包含所有这样的变化和修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1