用于低能量MCU的动态集装箱化系统存储器保护的制作方法

文档序号:11621668阅读:358来源:国知局
用于低能量MCU的动态集装箱化系统存储器保护的制造方法与工艺

发明领域

本发明涉及通常在微处理器中且特别在低功率微控制器单元中的存储器保护的领域。

背景

本背景的呈现用于总地描述本公开的上下文的目的。就本背景包括目前已知的要素和不作为递交时的现有技术的其他要素的工作而言,本描述既不明确地也不隐含地被承认为针对本公开的现有技术。

许多处理器类型,包括许多微控制器单元(mcu),包含能够独立于处理器进行存储器访问的总线主设备/加速器。一个示例是直接存储器访问(dma)控制器。dma控制器是使其他硬件子系统(例如传感器(其频繁地被mcu使用))不被cpu干预而访问系统存储器的被共享的系统资源。实际上,当cpu休眠时,dma能够促进传感器和系统存储器之间的存储器事务。这有利地使mcu在收集传感器数据时消耗非常低量的功率。这对于由电池电源或其他低能量电源供电的mcu特别重要,例如增长的大量的物联网(iot)装置。

然而,dma控制器异步于cpu促进存储器事务的能力在cpu睡眠时提出了安全挑战。当cpu不可用于实行访问控制策略(或访问掩码)时,存在通过传感器的安全漏洞的可能。因为所有通道对于可用的dma存储器具有完整的视图,依照它们对于系统存储器的视图以集装箱化各个dma通道是不可能的。而且,攻击者可以通过泄露的传感器输入用恒定的请求泛洪外围总线来发动低级的拒绝服务攻击。这足以压制外围总线的仲裁和调度机制以阻止处理器服务或控制另一外围设备,例如机械致动器。或者这可以阻碍其他关键存储器事务(例如摄像机馈送)的发生。

一种可能的解决方案是在每次外围设备或其他硬件子系统尝试使用dma时中断cpu。一旦被唤醒,cpu能够阻止缺少合适的安全属性的任何存储器访问请求。但是这击败了上文讨论的优势——使cpu能在处理器收集传感器数据时睡眠。因为dma操作在被执行,cpu不能保持睡眠。另一种可能的解决方案将要求rtos清除dma操作编程。这对于使用复杂的编程模型(例如存储在系统存储器中的命令连接列表)的dma操作成为一个挑战。前述解决方案也将要求大的软件开销/介入而且极大地限制处理器的功率效率、性能和功能。

发明概述

本概述被提供以介绍在以下的具体实施方式和附图中被进一步描述的主题。因此,本概述不应该被认为是描述实质特征,也不应该被用于限制所述主题的范围。

描述了处理器以及使用该处理器的方法的实施例。各种硬件子系统作出或转发存储器访问请求,而一个或多个非cpu存储器可寻址保护单元(pu)在专用于硬件子系统作出或转发那个请求的访问保护策略的基础上自主地允许或阻止那些请求。

附图说明

参考以下描述以及附图将能更好地理解本发明的这些和其他目标、特征以及优势,在附图中:

图1是示出了处理器、总线主设备、外围设备以及寄存器保护单元的集合的框图;

图2是示出了用于中央处理单元保护单元(cpupu)的访问控制策略结构的框图;

图3是示出了用于总线主设备保护单元(bmpu)的访问控制策略结构的框图;

图4是示出了用于外围保护单元(ppu)的访问控制策略结构的框图;

图5是示出了ppu控制结构索引拓扑的框图;

图6是示出了用于寄存器保护单元(rpu)的访问控制策略结构的框图;

图7是具体描述了存储器访问请求的组成部分的框图;

图8是具体描述根据本发明的一个实施例的硬件上下文的方面的框图;

图9是示出了安全属性结构的一个实施例的框图;

图10是示出了用于从cpu线程到主存储器的访问请求的守门过程的流程图;

图11是示出了用于从cpu线程或直接存储器访问(dma)通道到外围设备的访问请求的守门过程的流程图;

图12是示出了从ppu的视角看来用于到外围设备的访问请求的守门过程的流程图;

图13是示出了从bmpu的视角看来用于到外围设备的访问请求的守门过程的流程图;

图14是示出了执行状态、dma状态和ppu访问上下文的相互作用的时序图。

具体实施方式

以下描述本发明的示例性的和说明性的实施例。为了清楚,并非在本说明书中描述实际实现的所有特征,因为本领域技术人员将理解,在任何这些实际实施例的开发中,为了实现特定的目标而作出了多个实现的特定的决定,例如遵循系统相关和商业相关的约束,这些约束随实现的不同而变化。此外,应当理解,此类开发努力可能是复杂且费时的,但对于获益于本公开的本领域技术人员而言仍然是常规任务。对于优选实施例的各种修改对于本领域技术人员将是显而易见的,而且本文所定义的一般原理可被应用到其它实施例。因此,本发明不旨在受限于本文中示出和描述的特定实施例,而应被给予与本文中公开的原理和新颖特征一致的最广范围。

下文中所描述的实施例在应用但不被限制到较低能量微控制器单元(mcu)时具有特定值。安全(受保护的)mcu应用使用负责管理系统中的各种执行上下文的管理程序或实时操作系统(rtos)。正因如此,rtos本身形成了在活动时通常可以访问所有系统存储器的安全任务上下文。rtos控制在各种非安全用户任务上下文之间的处理器执行的切换。在一个实现中,这些用户任务的每一个可以访问系统存储器的独立子集。这使系统关键存储器(例如rtos)免于受到每个用户任务的影响,也使每个用户任务免于受到其他用户任务(集装箱化)的影响。在具有两个特权/安全水平的系统中,通过提高保护单元(pu)安全要求到特定的存储器范围,rtos屏蔽到给定的活动用户任务的访问。这个视角随着每一个和每一次任务上下文切换而变化。

图1示出了根据本发明的处理器100的一个实施例。处理器100包括中央处理单元(cpu)102、系统总线104以及通过总线互连108连接到总线104的多个总线主设备106和总线从设备(也被称为总线矩阵)。系统总线104将cpu102连接至系统存储器112。系统总线104配置为在处理器100的各种硬件子系统之间传递存储器访问请求160(图6)。在一个实现中,总线包括携载硬件上下文和子上下文标识符以标识形成存储器访问请求160的特定硬件子系统或资源的信号线。

总线主设备106是能够启动总线104上的事务的装置。示例包括cpu102和直接存储器访问(dma)控制器110。总线从设备是接收来自于总线104的通信和命令但不启动总线104上的事务的设备。总线从设备的示例是诸如动态随机存取存储器(dram)或静态随机存取存储器(sram)的系统存储器(smem)112以及控制过程、接收输入或产生输出的存储器映射的外围设备114。对于通过外围总线116连接到耦合至总线互连108的外围总线桥118的外围设备114,外围总线桥118用作总线从设备。

如上所述,dma控制器110是总线主设备的一种类型。dma是计算机系统的一个长期存在的特点,允许存储器事务在没有cpu的辅助的情况下在某些硬件子系统(尤其是外围设备)和计算机的主系统存储器(例如随机存取存储器(ram))之间发生。缺少dma的可用性,存储器转移通常要求cpu执行一个完整的读或写输入/输出周期。在个人计算机中,声卡、视频卡以及驱动器频繁地使用dma。在微控制器(mcu)中,传感器和控制外围设备频繁地使用dma。

dma控制器110通常配备有多个通道120以服务多个硬件子系统的dma需求。每个通道120是对于使用通道120的硬件子系统的操作的可编程配置或上下文。多个通道120的可用性使cpu102能够预编程多个配置。dma控制器110能够通过仲裁和调度的机制和算法有效地从一个通道120切换至另一个。

作为dma控制器110的替代,dma可以通过总线主控来实施,在总线主控中总线主设备106而不是cpu102启动事务。处理器100配备有总线仲裁机制以防止多个总线主设备106同时尝试驱动总线104。

也可能有其他非dma总线主设备106,一些具有其自己的子上下文而不是dma通道120。例如,在一个实现中,集成图形处理器具有多个内部上下文,包括专用于图形指令的一个和用于渲染纹理的另一个。

根据本发明的一个实施例,各种硬件子系统配备有保护单元(pu)。pu本身是硬件子系统,其通过实行一组用于经由系统存储器地址(例如映射至系统存储器的外围设备)被访问的系统存储器和/或硬件子系统的访问控制策略来充当守门者。如在下文中进一步详细描述的,每个访问控制策略(其也能够被称为访问掩码)的范围被限定至特定的软件或硬件上下文。在一个实施例中,处理器100使用pu的多层系统以实行被不同程度的粒度表征的访问控制策略。

pu定义了对于访问存储器中的各种界定的区域的要求。pu根据当前活动处理器的执行线程/任务(即,上下文)的安全属性实施对这些存储器区域的访问限制。为了促进多个非安全上下文的执行,为每一个上下文切换重新配置pu对于存储器的视角。这可以被视为软件控制的上下文切换。

一些处理器类型,例如微控制器单元(mcu),包含可以独立于处理器进行存储器访问的总线主设备/加速器。一个示例是直接存储器访问(dma)控制器。dma控制器是可在rtos和各种用户任务之间多用的共享系统资源。各种dma通道可与不同的软件任务上下文相关联。dma通道的配置通常在rtos上下文期间或在特定的用户任务上下文期间发生。然而,一旦可操作,dma通道在与这些sw上下文异步的时刻变成活动的,且这在实行用于dma访问的访问控制策略中产生了挑战。

在高水平层,cpu102配备有pu,在本文中被称为cpupu150,一些技术人员愿意称该pu为存储器保护单元。cpupu150定义了对于访问存储器中的各种界定的区域的要求。cpupu150根据当前活动的处理器执行线程/任务(即,上下文)的安全属性实施对这些存储器区域的访问限制。为了促进多个非安全上下文的执行,为每一个上下文切换重新配置cpupu150对于存储器的视角。这可以被视为软件控制的上下文切换。

在中间水平层,大部分系统总线主设备106,包括dma控制器110,但不包括cpu102,配备有pu,在本文中被称为总线主设备保护单元(bmpu)152。bmpu152被提供给能够独立于cpu102生成存储器访问的硬件模块,例如二级处理器。一些总线主设备106,例如在启动期间(在处理器100根据处理器的指令集架构开始执行指令之前)初始化系统的总线主设备,可能不会配备有bmpu152,因为假设它们不被预期可用于用户软件的直接使用。

在低水平层,外围总线桥118配备有pu,在本文中被称为外围保护单元(ppu)154。最后,在更低水平层,要求在安全/非安全和/或有特权/无特权访问之间的内部界限的各个外围设备156可配备有在本文中被称为寄存器保护单元158的pu。

对于被引导朝向一些被作为目标的资源(例如外围设备)的存储器访问请求160,cpupu和bmpu应用被粗糙水平的粒度表征的访问控制策略。cpupu150或bmpu152通过其粗糙的过滤器允许的存储器访问请求160然后被一个或多个下游pu重新评估,该下游pu的访问控制策略被相对更精细水平的粒度表征。例如,从总线主设备106装置或cpu线程到配备有rpu158的外围设备114的存储器访问请求160将受制于初始来自于cpupu150或bmpu152、随后来自于ppu154且再次来自于rpu158的访问控制策略管理。

在一个实现中,每个pu被合并至其相应的硬件子系统内。根据pu的守门功能,如果存储器访问请求160的源和安全属性不满足对于被作为目标的存储器区域的pu的访问控制策略的要求,则每个pu阻止存储器访问请求160到达该pu相应的硬件子系统。

而且在一个实现中,rtos编程安全管理单元(smu)162,即容纳所有pu的而不是cpupu150的所有配置寄存器的配置外围设备。smu162连接到将pu配置分配给每个bmpu152、一个或多个ppu154以及给任何rpu158的配置/状态线164。配置/状态线164还携载状态信息,包括从pu返回至smu162的任何错误信息。

图2示出了用于cpupu102的访问控制策略结构166。根据一个实现,cpu访问控制策略结构166包括多个访问控制策略0..q168。分离的以及不同的访问控制策略168被提供给每个线程或任务,每个访问控制策略168被关联或被标记线程id或其他软件上下文标识符170。随着从在前的线程到随后的线程的每个任务切换,实时操作系统(rtos)使得cpu102将随后的线程的cpu线程id的索引编入至cpu访问控制策略结构166内,以选择或检索对应的访问控制策略168,访问控制策略168然后被加载至cpupu150内。

每个访问控制策略168提供或关联标识可寻址系统存储器的区域的多个存储器区域0..n180(可寻址系统存储器可包括映射至系统存储器的外围设备)以及与每个被标识的存储器区域相关联的安全属性182。安全属性182可包括访问是否被限定于有特权的和/或安全的线程、访问是否是只读的以及被处理器的和操作系统的架构支持的任何其他访问限制。“安全属性”可包含与用于控制到被作为目标的存储器区域180的访问的存储器访问请求160相关联的任何属性。

在一些实施例中,为cpu102提供多个cpupu,每个核至少有一个,或者在超线程的cpu中,每个虚拟核有一个cpupu。可提供甚至更多的cpupu以作为基于硬件的虚拟化支持的一部分。

图3是示出了用于bmpu152的访问控制策略结构184的框图,bmpu152用于支持硬件子上下文186的总线主设备106(例如dma控制器110)。bmpu152被连接、耦合、分配和/或合并至dma110或其他总线主设备106之中。

bmpu152提供了多个访问控制策略0..p188给与其相关联的总线主设备106或110的所有硬件子上下文186。在一个实现中,硬件子上下文186被携载在总线信号线上的信号标识,该信号在一个非常特定的实现中被称为mastersid190信号。

有利地,对于硬件子上下文186(例如dma通道120)的精细粒度的支持使得处理器100盒状放射或集装箱化dma控制器110的每个通道120,从而使用通道1的硬件子系统,例如,不能介入被通道0控制的存储器或外围设备。以此方式,bmpu152支持完全集装箱化的dma通道操作。

如cpupu的访问控制策略结构166,bmpu的访问控制策略结构184提供或关联标识可寻址系统存储器(其可包括映射至系统存储器的外围设备)的区域的多个存储器区域0..n180以及与此相关联的安全属性182。但与cpupu的访问控制策略结构166不同的是,bmpu的访问控制策略结构184不按cpu线程区分访问控制策略188。相反,bmpu的访问控制策略结构184按硬件子上下文186区分策略188。有利地,按dma通道120来实行策略,用于dma控制器110的bmpu152通过给予每个通道120系统存储器112的限制的视角用于集装箱化dma操作。bmpu152可被编程,例如,防止结合至通道1的外围设备114访问分配到结合至通道0的另一个外围设备114的存储器。

在服务外围设备114或dma控制器110的bmpu152中,对应于外围设备114的存储器区域通常配置为将对应的存储器访问请求160传递至合适的ppu154。然而,在一些实现中,bmpu152可具有通道120,通道120完全阻止硬件子系统访问外围区域,从而始终防止存储器访问请求160通过该通道120到达外围设备114。

对应于不被专用的pu保护的系统存储器112的存储器区域配置有适于硬件子上下文186的被精细地调节的安全限制。当dma控制器110被呈现有存储器请求事务160时,dma控制器110为bmpu152提供其hw子上下文186,hw子上下文186是dma通道编号120,且bmpu(实时地)选择合适的一组存储器区域信息,因此bmpu能够为给定的dma通道120实施特定的存储器访问权限。

bmpu152将总线主设备106的hw子上下文186的索引编入至bmpu访问控制策略结构184内以为该总线主设备106标识访问控制策略188。当bmpu152处理存储器访问请求160时,bmpu152将访问请求160的被作为目标的存储器位置192和安全属性194与访问控制策略188进行比较,并且选择性地允许或阻止请求160。bmpu152包含用于该主设备106的所有子上下文的访问控制策略188,访问控制策略188通过硬件上下文信号196被标识和区分(图7)。一旦bmpu152被配置,bmpu152就自主地实行其访问控制策略198。这与cpupu150不同,cpupu150在每次cpu切换执行至随后的线程时被重新编程。bmpu152通过将区域属性与涉及诸如安全(armhnonsec信号)或特权水平(armhprot信号)的那些属性的总线事务信号进行比较以实现访问控制。

用于dma控制器110的bmpu152也设置穿过dma通道120之一的存储器访问请求160的安全属性。在一个示例中,bmpu152配置为标志整个一条通道120为总是有特权的。此外,该通道120结合至rtos。在rtos发出存储器访问请求160至dma控制器110之后,bmpu152断言在系统总线104上的特权和/或安全线。然后,随着存储器访问请求160成功穿过ppu154和/或rpu158,bmpu152具有本质上的全访问通过。

图4是示出了用于ppu154的访问控制策略结构200的框图。在描述该结构200之前,应当注意ppu154可能有不同的类型。例如,ppu154的一种类型服务多个相对低速的外围设备,例如在基于arm的实现中的基于高级外围总线(apb)选择的外围设备。ppu154的另一种类型服务单个高速的外围设备,例如在基于arm的实现中的高级高速总线(ahb)从属外围设备。这些不同可能导致不同的访问控制策略结构200将是显而易见的。

关注图4的实施例,ppu访问控制策略结构200被连接、耦合、分配和/或集成至外围总线桥118或外围设备156。根据多个硬件上下文0..m196,ppu访问控制策略结构200提供或被组织与每个硬件上下文196相关联的一个或多个硬件子上下文0..p186、与每个硬件子上下文186相关联的一个或多个存储器区域0..n以及与每个存储器区域0..n180相关联的一组安全属性182。例如,硬件上下文196的一个可以是特定的cpu核或虚拟核。另一硬件上下文196可以是dma控制器110,其具有多个通道120,每个通道120构成一个硬件子上下文186。ppu154的范围延伸至可访问由ppu154服务的一组外围设备114的所有总线主设备106。

当被呈现有存储器访问请求160时,ppu154使用总线主设备(例如dma控制器110)和分配至dma通道的外围设备的hw上下文和hw子上下文将索引编入至ppu访问控制策略结构内。ppu154然后将访问请求160的被作为目标的存储器位置192以及安全属性194与访问策略200进行比较并且选择性地允许或阻止请求160。

图5示出了该索引方法的一个实现。通过考虑外围总线桥118通常服务多个外围设备0..r114的事实,图5向图4添加了更多一层复杂性。因此,ppu访问控制策略结构200可以被表征为包括外围设备区分的访问控制策略0..r206的子上下文区分的组0..p204(在下文中“控制组”)的多个硬件上下文区分的群0..m202(在下文中“控制群”)。从另一个角度看,对外围设备114的访问被从合适的控制组204选择的访问控制策略208限制,合适的控制组204是从合适的控制群202选择的,确保被选择的访问控制策略206对应于合适的外围设备114、合适的硬件子上下文186以及合适的硬件上下文196。

根据图5的实现,ppu154通过使用第一水平选择逻辑210(例如一个复用器或一群复用器)为外围设备选择合适的访问控制策略208以从每个控制群202中选择已经为给定的mastersid标识符190创建的一组访问控制策略204。每个被选择的组212(或用于每个被选择的组212的地址)然后被馈送至第二水平选择逻辑214内,第二水平选择逻辑214使用masterid标识符216以选择单独的一组访问控制策略218(或其地址)。单个被选择的组218包括用于被外围总线桥118服务的每个外围设备114的独立的策略。最后,第三水平选择逻辑220使用外围数字222(携载在外围选择线上)以从单独的被选择的组218中选择合适的访问控制策略206(或其地址)。ppu154然后应用被选择的访问控制策略206以阻止或允许存储器访问请求160。

将理解的是,存在许多等效的逻辑形式。例如,外围数字222可以作为第一水平选择逻辑210被使用,且硬件子上下文186可以作为第三水平选择逻辑220被使用。在一个实施例中,选择逻辑的每一层被同时应用,与行、列以及表格属性可以在数据库中被使用以选择特定的记录的方式相似。

图6示出了用于寄存器保护单元(rpu)的访问控制策略结构。rpu的访问控制策略结构224与ppu的访问控制策略结构200相似,除了寄存器区域226代替了ppu的存储器区域180。在一些实施例中,rpu158也在位水平的粒度下提供保护。一个具体的应用是用在控制通用io(gpio)的外围设备。通常,这种外围设备将具有32位寄存器,且每一个这种寄存器可涉及一些数量的io引脚。rpu然后定义为给定的hw子上下文集装箱化各个引脚的多个访问控制策略。

图7示出了存储器访问请求160的组成部分,包括硬件上下文196字段或一组总线信号、安全属性194字段或一组总线信号以及目标存储器位置192字段或一组总线信号。在一个实施例中,一个或多个存储器访问请求组成部分196、194、192被密封于在总线104上发送的数据分组内。在另一实施例中,一个或多个存储器访问请求160组成部分196、194和192被携载在系统总线104上且穿过总线互连108。

图8是具体描述根据本发明的一个实施例的硬件上下文196的方面的框图。至少,硬件上下文196涉及启动了存储器访问请求160的主设备106(例如,cpu102、dma控制器110等等)。根据一个实现,硬件上下文196包括主设备id或标签216。

主设备id/标签216可被表征为只提供硬件上下文196的外层。在该表征下,硬件上下文196也将包括内层或硬件子上下文186。根据一个实现,该内层使用子上下文标识符190被标识,例如dma通道120。

图9示出了安全属性结构194的一个实施例,安全属性结构194包括安全字段228、有特权字段230、非安全但只读字段232以及无特权但只读字段232。当然,许多不同的安全结构和架构是可能的。如前面提到的,安全属性194可以是用于控制对被作为目标的存储器区域180的访问的与存储器访问请求160相关联的任何属性。

图10是用于处理从cpu线程到主存储器112的访问请求160的守门程序的一个实施例的流程图250。在框252中,cpu102中的核或虚拟核从第一线程切换至第二线程。该切换改变了软件上下文。在框253中,响应于软件上下文切换,rtos标识或选择合适于该特定线程的访问控制策略166,且重新编程cpupu150以使用cpupu150。当第二线程在运行的一些时间(框254),第二线程请求到主存储器112的存储器访问。在框256中,且在任何总线仲裁启动之前,cpupu150实行访问控制策略166以允许或阻止存储器访问请求160。如果cpupu150阻止请求160,则在框258中,cpupu150报告错误,错误之后被rtos处理。如果cpupu150允许请求160,则在框260中,cpu102为到系统总线104的访问仲裁且发出到总线104的存储器访问请求160。主存储器112不具有其自己的专用pu以用于对存储器访问请求160上应用第二水平的守门。在框262中,访问存储器112。

图11是用于处理从cpu线程或直接存储器访问(dma)通道120到外围设备114的访问请求160的守门程序的一个实施例的流程图300。在框302中,cpu线程请求到dma连接的外围设备的存储器访问。流程前进至框304。在总线仲裁启动之前,cpupu150实行合适于发出了请求160的线程的访问控制策略168以允许或阻止请求160。根据框306,如果cpupu150阻止了该请求,则在框308中cpupu150报告错误。如果cpupu150允许了该请求,则流程前进至框310。

在描述框310-312之前,注意来自bmpu152的独立的存储器访问请求160。应当注意的是,流程图300不旨在显示框302和314中的动作均是相关的或均需要发生。使用一个流程图300以示出来源于cpu102或另一总线主设备106的存储器访问请求160的处理旨在以简明的方式示出相似的事件链如何跟随两种类型的请求160。

在框314中,bmpu152接收来自cpu102或其他硬件子系统的存储器访问请求160。bmpu152将硬件子上下文186的索引(例如dma通道标识符190)编入至bmpu的访问控制策略结构184内以选择或检索合适的访问策略188。不需要索引主设备id/标签216,因为它隐含地与bmpu152相关联,bmpu152只存储与它所连接的主设备id/标签216相关的访问控制策略184。

bmpu152将安全属性194和被作为目标的存储器位置与存储在访问控制策略188中的访问策略配置信息进行比较以确定是否允许或阻止请求160。如果ppu154将是允许还是阻止请求160的最终仲裁者,则对于特定的硬件子上下文186,将关于外围设备114的存储器区域标记为未检查的(即,无施加的安全限制)。因此,访问请求160通过。

根据框316,如果bmpu152阻止了该请求,则在框308中bmpu152报告错误。如果bmpu152允许了该请求,则流程前进至框310。现在转向框310-312,在框310中,相关的总线主设备106或cpu102仲裁对总线104的访问且分派请求160至外围设备114。在框318中,请求160被ppu154获取,ppu154将硬件上下文196(包括硬件子上下文186,如果有的话)和外围编号222的索引编入至ppu154的访问控制策略结构200内以选择或检索合适的外围访问策略206。

值得注意的是,ppu154不需要能够确定与硬件上下文196相关联的实际的外围设备114、cpu核或线程或存储器访问请求160的其他源。例如,处理器100可将与硬件上下文196相关联的二进制值重新分配(绑定)至另一硬件资源。处理器100也可以将外围编号222重新分配或绑定至不同的外围设备114。ppu154不知道这样的绑定,而是依赖于硬件上下文196(包括硬件子上下文186,如果有的话)以及外围编号222以选择或检索合适的访问控制策略206。另一方面,rtos追踪硬件上下文196(包括硬件子上下文186,如果有的话)和相关联的硬件资源之间以及外围编号222和外围设备114之间的关系。

因为ppu154不知道与cpu硬件上下文196相关联的任何软件线程,每次有软件任务切换时,cpu102在ppu154处更新与cpu硬件上下文196相关联的访问控制策略320以匹配该线程。例如,刚好在作为安全实体运行的rtos线程变得不活动之前,cpu102更新ppu154和rpu158的与cpu硬件上下文196相关联的访问控制策略320以反映用于非安全用户线程的期望的访问控制策略。

在框322中,在检索或选择访问控制策略206之后,ppu154对请求的安全属性194和被作为目标的存储器位置与访问控制策略206中的访问策略配置信息进行比较以确定是否允许或阻止请求160。根据框322,如果ppu154阻止了请求,则在框308中ppu154报告错误。如果ppu154允许了请求,则流程前进至框312,其中满足请求。

图12是示出了从ppu154或rpu158的视角来看用于对外围设备114的访问请求160的守门过程的流程图350。在框352中,ppu154或rpu158接收请求160以读或写一个或多个外围设备114寄存器或寄存器位。在框354中,ppu154(如果ppu154正在应用守门程序350)使用masterid216、mastersid190以及peripheral_num222标识符以将索引编入至ppu154的访问控制策略结构200内以选择或检索定义到被作为目标的外围设备114的访问权限的合适的访问控制策略320。可替代地,rpu158(如果rpu154正在应用守门程序350)使用masterid216以及mastersid190标识符(但没有peripheral_num222,因为外围设备的范围是其本身,不是也有其他外围设备)以将索引编入至rpu158的访问控制策略结构200内以选择或检索用于该外围设备114的合适的访问控制策略320。

在框356中,ppu154或rpu158将访问请求160的特征(本文中称为“安全属性”)(例如,安全对非安全、数据对指令、读对写)与由用于被访问请求160作为目标的寄存器或寄存器位的访问控制策略320提供的访问限制进行比较。如果在框358中且基于该比较,允许访问请求160,则在框360中,满足访问请求160。否则,在框308中,ppu154或rpu158报告错误。

图13是示出了从bmpu152的视角看来用于到外围设备114的访问请求160的守门过程的流程图400。在框402中,bmpu152接收访问请求160。在框404中,bmpu152使用mastersid190标识符以将索引编入至bmpu152的访问控制策略结构184内以选择或检索访问控制策略188以实施在给定的dma通道120上。在框406中,bmpu152将源属性(例如,安全对非安全、数据对指令、读对写)与由用于被访问请求160作为目标的存储器区域的访问控制策略188提供的访问限制进行比较。如果在框408中且基于该比较,允许访问请求160,则在框410中,满足访问请求160。否则,在框308中,ppu154报告错误。

图14是示出了执行状态、dma状态和ppu访问上下文的相互作用的时序图412。顶部行示出了时序中的较早点414,在此时cpu102通过smu162预编程dma控制器110和bmpu152。随后,dma控制器110配置为自主地、独立于cpu102且没有cpu102的干预地服务dma请求。同样地,bmpu152配置为自主地、独立于cpu102且没有cpu102的干预地实行访问控制策略184。可使一些dma请求优先于其他请求之前的仲裁和调度机制确定在任何给定的时间哪一个dma通道120是活动的。在被cpu102预编程后,仲裁和调度机制也自主于cpu102起作用。

第二行示出了当cpu102从第一非安全(ns)任务a转变至休眠状态、至安全(s)rtos活动状态、至第二非安全(ns)任务b时的cpu执行状态416。任务a具有到存储器和外围设备的子集的访问权限。任务a还可以访问涉及dma通道0的dma配置寄存器。dma通道0同样地可以访问与任务a相同的存储器和外围设备的子集。任务b具有到存储器和外围设备的另一子集和到涉及dma通道1的dma配置寄存器的访问权限。dma通道1同样地可以访问与任务b相同的存储器和外围设备的子集。rtos具有到所有存储器、外围设备以及所有dma通道120的dma配置寄存器的访问权限。任务切换发生的每个时刻418,cpu102配置smu162以使用适于该任务的访问控制策略来更新cpupu150、任何ppu154以及任何rpu158。

第三行通过示出独立于cpu执行状态416的dma通道状态450示出了cpu102和dma控制器110的异步操作。例如,当任务a活动时、当cpu102睡眠时以及当rtos线程活动时,dma通道1被示为活动。当cpu102睡眠时通道1的活动状态示出了dma的硬件上下文196怎样能在即使当cpu102处于低功率不活动状态时保持活动。

dma通道切换452至通道0(被如上讨论的仲裁和调度机制驱动)被示为在与cpu执行状态450切换至任务b相同的时刻发生。另一dma通道切换454发生在任务b继续运行时,该另一dma通道切换454也被如上讨论的仲裁和调度机制驱动且这次返回至通道1。这些切换自主于cpu102且根据dma控制器110的仲裁和调度机制发生。

第四行(本身是一组行)是配置为不同通道120可访问的外围设备456的示例性图解。在该特定的图解中,当dma通道1活动时,外围设备p3、p5和p8被示为可访问,而当dma通道0活动时,只有外围设备p0和p8被示为可访问。第四行示出了这组可访问的外围设备456怎样随着每个dma通道切换而改变。

第五行根据硬件上下文196示出了ppu/rpu访问上下文458,包括硬件子上下文186,以masterid216“点”mastersid190的形式被示出。该行示出了在存储器映射的外围设备114处的访问上下文458能够在任意时刻异步于处理器100在cpu102和各种dma通道120之间切换。此外,dma控制器110可要求访问与任务a相同的外围设备114。而且,cpu任务,例如任务a,能够提前调度其自己的dma操作,使得在任务a不再运行之后进行dma操作。尤其,ppu154或rpu158只知道masterid216和mastersid190的数值编码,不知道哪一个任务或通道与那些标识符相关联。

第六行通过与那些硬件上下文196相关联的任务或特定的通道示出了ppu/rpu的访问上下文460。因为rtos完全控制哪一个用户任务上下文是活动的,并且能够相应地为每个切换更新处理器100和系统pu,在任何给定的pu处,以及rtos选择将不同的软件上下文绑定至该资源的时刻,rtos可只要求单个hw上下文资源196。例如,在该行的起始处,cpu任务a与cpu.0硬件上下文标识符相关联。之后,当cpu102睡眠时,cpu任务a仍然与cpu.0硬件上下文标识符相关联,即使任务a已经完成。如上文指示的在对第五行的讨论中,cpu任务a有可能已经通过dma操作调用了之后呈现的访问请求。这进一步示出了dma连接的外围设备114的访问上下文怎样可以与cpu任务状态异步。当rtos变成活动的时,rtos变成与cpu.0硬件上下文标识符相关联。之后,cpu任务b变成与cpu.0硬件上下文标识符相关联。

尽管图14示出了用于单核、单线程处理器100的简化的时间线,本发明可适用于包含更复杂的架构的实施例。在多核或多线程的处理器100中,每个核或虚拟核具有其自己的任务上下文。随着核和其他硬件子系统使用外围设备114调用事务,那些事务被汇集在外围总线116上。当事务到达外围总线116时,它们被串行化,正如它们在单核、单线程处理器100时那样(除非外围总线116提供多端口存储器)。即使是多端口,每个端口每次只携带一个事务,因此在简单的和复杂的架构中,可提供仲裁机制以按顺序呈现这些事务。有利地,该串行化过程使得ppu154切换出任何给定的核所具有的不论什么访问策略,且每个核随着ppu154切换也能重新编程其自己的软上下文或任务上下文。在具有多个外围子系统的处理器100中,每个子系统具有其自己的ppu154,对ppu154的访问能并行发生。在这种情形下,每个外围子系统相互独立于其他外围子系统使事务串行化;且每个ppu154相互独立于其他ppu154为其外围子系统实现访问控制。

需要注意的是,尽管外围设备114通常配置为总线从设备,一些外围设备114配置为总线主设备106,且一些类型的外围设备114是具有从属端口的总线主设备106。本发明适用于所有这些配置。在外围设备114配置为总线主设备106但具有从属端口的情况下,bmpu152控制对由外围设备114生成的存储器访问请求160的访问,且在外围设备的从属端口处的ppu154管辖尝试访问外围设备114的存储器访问请求160。

上文公开的特定的实施例仅是示例性的,且本领域技术人员将理解其能够容易地使用公开的概念和具体的实施例作为基础以用于设计或修改其他结构以实施与本发明相同的目的,且可在本申请中作出各种改变、替换和修改而不背离由所附的权利要求书中给出的本发明的范围。

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