内存空间管理及内存访问控制方法及装置与流程

文档序号:11199133阅读:903来源:国知局
内存空间管理及内存访问控制方法及装置与流程

本发明涉及存储领域,特别是涉及内存空间管理及内存访问控制方法及装置。



背景技术:

终端设备开放环境的安全问题越来越受到关注,不仅仅针对终端用户,还针对服务提供者、移动运营商以及芯片厂商,特别是对于电视及机顶盒需要处理的uhd(ultrahighdefinitiontelevision,超高清电视)流媒体内容及uhd+的流媒体内容。

为了保护媒体内容,基于tee(trustedexecutionenvironment,可信执行环境)技术的drm(数字版权保护)几乎已经成了超高清内容提供商必备的要求,tee是与设备上的richos(通常是基于linux的操作系统)并存的运行环境,第三方开发的可信应用程序(ta)运行于tee环境中,为richos提供安全服务。tee本身的启动可靠性受到安全引导(securityboot)技术的保护。

tee环境下,安全内存(securitymemory)是禁止非安全状态的硬件单元(hwip,通常代表richos端)访问的,基于此,视频解码缓存器以及图像增强(pq)缓存器保存在安全内存中,以防止盗版。其中,安全内存的位置是开机执行的安全引导流程设置,不能够任意调整位置和大小,只能在运行tee环境时打开或关闭。

而且,如图1所示现在产品均是将安全内存12独立于系统内存11之外。对于一些终端设备其所需安全内存的空间较大,如对于支援uhd的播放终端,支援单路uhd解码和图像增强的芯片,其安全内存所需总量超过200mb,支援双路uhd解码或者支援uhd+解码的芯片,其安全内存所需总量会达到350mb以上,故该终端往往设备需设置大容量的独立的安全内存,导致系统成本的上升。而且,当安全状态的硬件单元不工作时起此大容量的安全内存则处于空闲状态,故导致该存储资源浪费。



技术实现要素:

本发明主要解决的技术问题是提供内存空间管理及内存访问控制方法及装置,能够减少存储资源的浪费,减少系统成本。

为解决上述技术问题,本发明采用的一个技术方案是:提供一种内存空间管理方法,用于管理供硬件单元或处理器进行访问的系统内存,包括:在接收到所述硬件单元发出的一操作请求时,根据操作请求的类型来判断所述硬件单元请求的操作是否是访问所述系统内存里的一安全内存区域;若是,则将所述系统内存中的所述需访问的安全内存区域从默认的第一状态更改为第二状态,并将所述硬件单元设置为安全状态;其中,所述安全内存区域处于所述第一状态时,表示限定仅供处理器进行访问,所述硬件单元不可对其进行访问;所述安全内存区域处于所述第二状态时,表示仅供处于安全状态的所述硬件单元进行访问。

为解决上述技术问题,本发明采用的另一个技术方案是:一种内存访问控制方法,用于控制供处理器或一硬件单元访问的系统内存,包括:在接收到访问请求时,获取所述访问请求中的访问地址和访问者标识;检查所述访问地址指向的内存空间的当前状态,得到一检查结果,其中,所述内存空间的状态包括第一状态和第二状态;查找所述访问者标识是否属于多个允许访问集合中的与所述检查结果对应的允许访问集合,其中,所述多个允许访问集合包括对应第一状态的第一允许访问集合和对应第二状态的第二允许访问集合;根据查找结果生成一指令,其中,所述指令用于指示允许或不允许所述访问者访问所述内存空间。

为解决上述技术问题,本发明采用的再一个技术方案是:一种非瞬时计算机可读储存媒体,用于管理供处理器或一硬件单元进行访问的系统内存,其中存储由一处理器读取并执行的一程序代码,所述程序代码包括:一第一子程序码,用以在接收到所述硬件单元发出的一操作请求时,根据操作请求的类型来判断所述硬件单元请求的操作是否是访问所述系统内存里的一安全内存区域;以及一第二子程序码,用以将所述系统内存中的所述需访问的安全内存区域从默认的第一状态更改为第二状态,并将所述硬件单元设置为安全状态;其中,所述安全内存区域处于所述第一状态时,表示限定仅供处理器进行访问,所述硬件单元不可对其进行访问;所述安全内存区域处于所述第二状态时,表示仅供处于安全状态的所述硬件单元进行访问。

为解决上述技术问题,本发明采用的又再一个技术方案是:一种内存访问控制装置,与一系统内存经由总线连接,用来控制处理器或一硬件单元存取该系统内存,包括:复数个保护组,其中每个保护组用于根据一访问者标识查找一允许访问列表得到一查找结果;一检查单元,用于根据一访问地址检查所述访问地址指向的内存空间的当前状态为一第一状态还是一第二状态,得到一检查结果;以及一判断单元,连接于所述复数个保护组和所述检查单元,用于接收所述复数个保护组的复数个查找结果和所述检查结果,并根据所述检查结果决定所述复数个查找结果之一查找结果,并根据所述查找结果产生一决定讯号。

为解决上述技术问题,本发明采用的又再一个技术方案是:一种内存访问控制装置,与一系统内存经由总线连接,用来控制处理器或一硬件单元存取该系统内存,包括:一检查单元,用于根据一访问地址检查所述访问地址指向的内存空间的当前状态为一第一状态还是一第二状态,得到一检查结果;复数个保护组,连接于所述检查单元,其中与所述检查结果对应的保护组用于根据一访问者标识查找允许访问列表得到一查找结果;以及一判断单元,连接于所述复数个保护组,用于接收所述与所述检查结果对应的保护组的查找结果,并根据所述查找结果产生一决定讯号。

上述方案,系统内存中设置有安全内存区域,处理器根据硬件单元的操作请求更改安全内存区域的状态,使得内存控制器在接收到访问安全内存区域的访问请求时,根据该安全内存区域的状态限定访问请求的发出者是否可以访问,具体限定若安全内存区域为第一状态时,限定仅处理器可对其访问,若安全内存区域为第二状态时,限定仅安全状态的硬件单元可对其访问,通过设置安全内存区域的不同状态以限定可访问其的对象,防止处理器和安全状态的硬件单元访问到彼此的存储数据,故在保证系统内存和安全内存区域各自的安全性的同时,实现了系统内存与安全内存区域的分时共享,处理器和硬件单元分时复用物理内存,无需独立设置安全内存,减少了存储资源的浪费以及系统成本。

附图说明

图1是现有系统内存与安全内存之间的结构示意图;

图2是本发明系统内存与安全内存之间的一结构示意图;

图3是本发明内存空间管理方法一实施例的流程图;

图4是本发明系统内存与安全内存之间的另一结构示意图;

图5是本发明内存访问控制方法一实施例的流程图;

图6是本发明内存访问控制方法另一实施例的部分流程图;

图7是本发明内存访问控制方法再一实施例的部分流程图;

图8是本发明对于安全内存碎片回收利用一实施例的处理示意图;

图9是可采用本发明内存访问控制方法的系统结构示意图;

图10是本发明内存访问控制装置一实施例的结构示意图;

图11是本发明检查单元的一实施例的结构示意图;

图12是本发明判断单元的一实施例的结构示意图;

图13是本发明内存访问控制装置另一实施例的结构示意图

具体实施方式

以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本申请。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施方式中也可以实现本申请。在其它情况中,省略对众所周知的装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。

为了便于理解本发明,先对本发明部分元件及名词进行说明。

本文所述的处理器为用于运行终端操作系统的核心电路。具体,该处理器可用于运行安全环境和非安全环境,例如tee和richos两个系统环境。当然,上述两个环境也可为同一个处理器或者由两个处理器分别实现,在此不作限定。

本文所述的硬件单元(也称为hwip)具体为终端中除处理器外的硬件电路,例如播放设备的视频解码器、图像增强处理器、显示屏驱动器、屏幕显示(英文:onscreendisplay,简称:osd)混合器等媒体相关硬件单元。该硬件单元包括安全状态和非安全状态,该硬件单元处于安全状态即为该硬件单元当前执行安全性操作,处于非安全状态即该硬件单元当前执行常规操作,例如,在tee和richos双系统的终端中,当硬件单元在tee环境下运行第三方可信应用程序进行操作需要访问安全内存区域内容时需要切换到安全状态,当硬件单元运行一般的第三方应用程序进行操作只需访问一般非保护需求的内存区域时,则切换到非安全状态。

本文所述的系统内存为终端的操作系统存储指令和数据的存储空间,提供给处理器进行访问。该系统内存具体可为动态随机存取存储器(英文:dynamicrandomaccessmemory,简称:dram),在一采用linux操作系统的终端中,该系统内存为内核管理的存储空间(也称linuxkernelmemory),以供操作系统内核(如linuxkernel)管理及操作系统内核和应用程序访问。

基于现有安全内存区域与系统内存相互独立,导致内存资源的浪费。本发明提出将系统内存与安全内存区域分时共享,具体将系统内存中的一段内存空间标记作为安全内存区域(securityrange),该安全内存区域按照不同设置状态可提供于安全状态的硬件单元访问,或者提供于处理器访问。当然,在系统内存之外还可独立设置有安全内存区域,该系统内存内的安全内存区域提供给某些安全状态的硬件单元的短暂性的访问,该系统内存外的安全内存区域提供给某些安全状态的硬件单元的长期访问。

另外,本发明还可将系统内存中的另一段内存空间标记作为非安全内存区域,该非安全内存区域按照不同设置状态可提供于非安全状态的硬件单元或安全状态和非安全状态的硬件单元访问,或提供于处理器访问。

其中,如图2所示,上述安全内存区域22和非安全内存区域23均可为由连续内存分配器(英文:contiguousmemoryallocator,简称:cma)分配的系统内存21中的一段或多段连续物理内存区域。该安全内存区域22与该非安全内存区域23构成cma分配的预设内存区域24。该安全内存区域22与该非安全内存区域23具体可设置与该系统内存中的任意位置上,在此不作限定。

请参阅图3,图3是本发明内存空间管理方法一实施例的流程图。本实施例中,该方法由处理器执行,用于管理供硬件单元或处理器进行访问的系统内存,具体包括以下步骤:

s31:处理器在接收到硬件单元发出的一操作请求时,根据操作请求的类型来判断该硬件单元请求的操作是否是访问该系统内存里的一安全内存区域。

其中,终端设备的处理器预先将系统内存中部分连续内存划分为安全内存区域。例如,在系统启动时(即该终端设备开机时),处理器按照内存分配策略将所述系统内存中一段或多段连续内存划分为安全内存区域,具体可由处理器运行驱动程序以cma的方式向系统内存申请得到该安全内存区域。当然,根据实际需求中,在终端设备开机后的工作过程中也可进行重新划分该安全内存区域。该内存分类策略具体可为根据该终端设备所需运行的不同项目对应分配不同容量的安全内存区域。为保证安全内存区域的安全性,上述划分由处于安全状态下的处理器执行,例如为终端设备中运行tee的处理器,处于非安全状态下的处理器如运行richos的处理器无法对该设定的安全内存区域进行修改或控制。

本实施例中,处理器在接收到硬件单元的操作请求后,先确定该操作请求的类型是否为需要占用存储空间的安全性的操作请求,例如一硬件单元申请安全视频通路,确认该操作需访问系统内存中至少部分安全内存区域以作为其安全视频通路用到的视频解码、图像增强等过程中使用的内存空间。若确定该操作请求为需要占用存储空间且安全性的操作请求,则判断该操作请求需要访问该系统内存里的一安全内存区域,并执行s32,若确定该操作请求为需要占用存储空间的非安全性的操作请求,则判断该操作请求不需要访问该系统内存里的安全内存区域,并执行s33。

s32:处理器将所述系统内存中的所述需访问的安全内存区域从默认的第一状态更改为第二状态,并将所述硬件单元设置为安全状态。

该系统内存中预设的安全内存区域可包括第一状态和第二状态。其中,所述安全内存区域处于所述第一状态时,表示限定仅供处理器进行访问,所述硬件单元不可对其进行访问;所述安全内存区域处于所述第二状态时,表示仅供处于安全状态的所述硬件单元进行访问。

默认地,处理器预设的安全内存区域的状态为第一状态,即可供处理器进行访问,且硬件单元不具有访问权限。在确定当前硬件单元的操作需要使用安全内存区域时,利用cma分配需要使用的一段连续的安全内存区域,并将该操作需要使用的安全内存区域中的当前数据转移到系统内存的其他空间(安全内存区域处于第一状态时候的数据为处理器访问的数据,故为避免处理器数据丢失,先将其转移到其他存储空间)。处理器并将该操作需要使用的安全内存区域的第一状态更改为第二状态。具体,本次需更改状态的安全内存区域的大小可根据该硬件单元的操作请求的类型进行分配,例如,系统内存中预设有300m安全内存区域,若当前操作请求为一路视频解码请求,则将系统内存中预设的100m安全内存区域的状态进行上述更改,以将该100m安全内存区域用于存储硬件单元的视频解码时的码流。

而且,处理器将该硬件单元标记为安全状态,以保证该硬件单元在操作过程中有权限访问该第二状态的安全内存区域。具体,可将每个硬件单元的状态以列表形式存储在处理器以及内存控制器可访问的存储空间中。

在一具体应用中,该安全内存区域划分为第一数量内存页(也称entry),每个内存页的大小固定,具体大小可为1m或512kb等,每个内存页均设置有第一控制位。s32中所述将所述系统内存中的所述需访问的安全内存区域从默认的第一状态更改为第二状态具体包括以下子步骤:

s321:确定所述需访问的安全内存区域的大小为第二数量内存页。

s322:将所述安全内存区域中的第二数量内存页的第一控制位由第一字符更改为第二字符。

其中,所述第一控制位为第一字符时,表示所述内存页处于所述第一状态,即该内存页的内存回收给处理器使用;所述第一控制位为第二字符时,表示所述内存页处于所述第二状态,即该内存页的内存分配给安全状态的硬件单元使用,系统内存无法将该内存用作内部用途;所述第一数量大于或等于所述第二数量。

如图4所示,系统内存40预设有entry0-entry255共256个内存页作为安全内存区域41,该256个内存页的当前第一控制位p的默认为1,表示所有该内存页开始均限供处理器访问。处理器根据当前操作请求的类型确定该操作所需的存储空间为100个内存页,并将安全内存区域41中的entry0-entry99的第一控制位p值更改为0,以表示该100个内存页当前仅供安全状态的硬件单元访问。

s33:处理器将系统内存中的至少部分非安全内存区域从第一状态更改为第二状态,并将所述硬件单元设置为非安全状态。

本实施例中,该系统内存中还预设有非安全内存区域,该非安全内存区域也包括第一状态和第二状态。其中,所述非安全内存区域处于所述第一状态时,表示仅供处理器进行访问,所述非安全内存区域处于所述第二状态时,表示可由处于安全状态或非安全状态的硬件单元进行访问,或限定仅供处于非安全状态的硬件单元进行访问。

默认地,处理器预设的非安全内存区域的状态为第一状态,即可供处理器进行访问,且硬件单元不具有访问权限。在确定当前硬件单元的操作不需要使用安全内存区域,即使用非安全内存区域时,利用cma从系统内存中分配该操作需要使用的非安全内存区域,并将该操作需要使用的非安全内存区域的第一状态更改为第二状态。同理于s32所述,本次需更改状态的非安全内存区域的大小可根据该硬件单元的操作请求的类型进行分配。

而且,处理器将该硬件单元标记为非安全状态,以确定该硬件单元目前执行的是非安全性操作,故只可访问第二状态的非安全内存区域,避免其在操作过程中有权限访问该第二状态的安全内存区域。

在一具体应用中,该非安全内存区域可划分为第三数量内存页。该s33中所述将系统内存中的至少部分非安全内存区域从第一状态更改为第二状态具体包括以下子步骤:

s331:确定所述需访问的非安全内存区域的大小为第四数量内存页。

s332:将所述非安全内存区域中的第四数量内存页的第一控制位由第一字符更改为第二字符。

其中,所述第一控制位为第一字符时,表示所述内存页处于所述第一状态,即该内存页的内存回收给处理器使用;所述第一控制位为第二字符时,表示所述内存页处于所述第二状态,即该内存页的内存分配给硬件单元使用,系统内存无法将其作为内部用途;所述第一数量大于或等于所述第二数量。

继续如图4所示,系统内存40预设有entry256-entry356共100个内存页作为非安全内存区域42,其中,该安全内存区域41和非安全内存区域42构成了系统内存的预设内存区域43,该区域43属于cma分配的区域,系统内存40除预设内存区域43外的剩余区域均限供处理器访问。非安全内存区域42的100个内存页的当前第一控制位p的默认为1,表示所有该内存页开始均限供处理器访问,硬件单元不可访问。处理器根据当前操作请求的类型确定该操作所需的存储空间为50个内存页,并将非安全内存区域42中的entry256-entry306的第一控制位p值更改为0,以表示该50个内存页当前仅供非安全状态的硬件单元访问,或供任意状态下的硬件单元访问,处理器不可访问。

当然,在其他实施例中,该系统内存可不包括非安全内存区域,相应,该方法也不包括上述s33,当处理器执行s31判断硬件单元的操作不需访问安全内存区域时,则结束流程。

s34:处理器在确定该硬件单元操作完成时,将所述操作访问到的安全内存区域从第二状态更改为第一状态。

进一步地,该处理器执行上述s32或s33之后,若确定该硬件单元操作完成,处理器还将所述操作访问到的安全内存区域或非安全内存区域从第二状态更改为第一状态,以使该访问到的安全内存区域或非安全内存区域重新回收为系统内存的内部用途,即仅供处理器使用。当然,在另一实施例中,在硬件单元完成后,处理器可先不更改该相关内存区域的状态,而是在确定系统内存的其他存储空间不够用时,再将所述硬件单元访问到的安全内存区域或非安全内存区域从第二状态更改为第一状态。

上述s31-s33可由非安全状态的处理器执行,例如运行richos的处理器,以方便richos端与cma配合以灵活分配相关的内存区域并控制该内存区域的状态。其中,s32中该内存区域的状态更改可具体由非安全状态的处理器的操作系统(如linux)内存管理驱动模块执行。

当然,在其他实施例中,上述s31-s33也可由安全状态的处理器执行,或者上述s32中的硬件单元的状态设置可由安全状态的处理器执行,其余步骤由非安全状态的处理器执行。在一应用中,该安全状态的处理器为运行tee环境的处理器,该非安全状态的处理器为运行richos的处理器,也即运行该正常操作系统内核(如linuxkernel)的处理器。

本实施例,系统内存中设置有安全内存区域,处理器根据硬件单元的操作请求更改安全内存区域的状态,使得内存控制器在接收到访问安全内存区域的访问请求时,根据该安全内存区域的状态限定访问请求的发出者是否可以访问,具体限定若安全内存区域为第一状态时,限定仅处理器可对其访问,若安全内存区域为第二状态时,限定仅安全状态的硬件单元可对其访问,通过设置安全内存区域的不同状态以限定可访问其的对象,防止处理器和安全状态的硬件单元访问到彼此的存储数据,故在保证系统内存和安全内存区域各自的安全性的同时,实现了系统内存与安全内存区域的分时共享,处理器和硬件单元分时复用物理内存,无需独立设置安全内存,减少了存储资源的浪费以及系统成本。

请参阅图5,图5是本发明内存访问控制方法一实施例的流程图,本实施例中,该控制方法由内存控制器执行,该内存控制器与至少一个处理器以及至少一个硬件单元连接,该内存控制器用于执行本控制方法来控制处理器及该硬件单元对上述系统内存的访问如向系统内存读取数据或写入数据等。该控制方法具体包括以下步骤:

s51:内存控制器在接收到访问请求时,获取所述访问请求中的访问地址和访问者标识。

该访问请求可来自与处理器或硬件单元,用于请求访问上述系统内存中的部分内存空间。本文所述的访问具体包括读取或写入数据。

s52:检查所述访问地址指向的内存空间的当前状态,得到一检查结果。

如上实施例所述,系统内存中包含有预设内存区域如图4所述的预存内存区域43,以可用于提供给硬件单元访问。在不同实施例中,该预存内存区域具体可包括上述安全内存区域,或者包括上述安全内存区域和上述非安全内存区域。且该预存内存区域的状态可如上述实施例所述进行设置。内存控制器可先确定该访问地址指向的内存空间是否为该预存内存区域,若是,则执行s52;否则确定该内存空间仅供处理器访问,并当访问者为硬件单元时阻止其访问该内存空间,以防止硬件单元窃取处理器的数据。

本实施例中,该预设内存区域如图4所示,包括若干个上述内存页。若该资源共享仅针对预设内存区域的安全内存区域,只需检查所述访问地址指向的内存空间的当前状态,s52中的所述查询所述访问地址指向的内存空间的当前状态包括:读取所述访问地址指向的内存页的第一控制位的值,以确定所述访问地址指向的内存页的当前状态。该检查结果是:当所述访问地址指向的内存页的第一控制位均为第一字符时,表示访问地址指向的内存空间处于第一状态;当所述访问地址指向的内存页的第一控制位均为第二字符时,表示访问地址指向的内存空间处于第二状态。

s53:根据访问者标识查找多个允许访问集合,得到多个查找结果。

允许访问集合包含允许访问系统内存的处理器或者硬件单元的标识。下面以允许访问集合具体为允许访问列表为例,若经过查表,判断访问者标识是否在允许访问列表中,该查找结果为在允许访问列表中,或者不在允许访问列表中。具体的若仅需检查所述访问地址指向的内存空间的当前状态,那么该多个允许访问列表为分别对应第一状态和第二状态的两个允许访问列表。

s54:根据该检查结果选择该多个查找结果中的一该查找结果,并根据该查找结果生成一指令,其中该指令用于指示允许或不允许该访问者存取该内存空间。

具体,选择与该检查结果对应的允许访问列表的查找结果,若查找结果为在该允许访问列表中,则生成允许该访问者存取该访问地址指向的内存空间的指令,否则生成不允许该访问者存取该访问地址指向的内存空间的指令。

可以理解的是,本实施例是在s54才根据检查结果从多个查找结果中选择与检查结果匹配的查找结果,故s52和s53可为同步执行。在其他实施例中,也可在执行s52后,执行s53为从所述多个允许访问集合中选择与所述检查结果对应的允许访问集合,并根据所述访问者标识查找该选择的允许访问集合,得到一查找结果,再执行s54为根据查找结果生成一指令。以上s52-s54均为查找所述访问者标识是否属于多个允许访问集合中的与所述检查结果对应的允许访问集合,并根据查找结果生成一指令的具体实现方式,再次不作限定。

由于对应内存空间不同状态的允许访问列表包含上述不同的访问者标识。在一实施例中,若对应第一状态的允许访问列表仅包含处理器标识;对应第二状态的允许访问列表仅包含硬件单元标识。则s54实现了:当所述访问地址指向的内存空间处于第一状态时,若所述访问请求是处理器发出的,则允许其访问所述内存空间,否则阻止对所述内存空间的访问;当所述访问地址指向的内存空间处于第二状态时,若所述访问请求是符合要求的硬件单元发出的,则允许其访问所述内存空间,否则直接阻止对所述内存空间的访问。

如上述实施例所述,该预设内存区域包括第一状态和第二状态,且不同状态下,允许不同硬件进行访问。当所述访问地址指向的内存空间处于第一状态时,表示该内存空间当前仅允许处理器访问,若硬件单元请求访问则由该内存控制器阻止并可抛出系统异常,以防止硬件单元由于错误时序或其他原因误访问处理器内存,窃取或篡改该处理器内存,此时系统内存保护支持(也称为kprotect)生效,内存控制器可采用kprotect进行对该预设内存区域的保护;当所述访问地址指向的内存空间处于第二状态时,表示该内存空间当前仅允许硬件单元访问,若处理器请求访问则由该内存控制器阻止并可抛出系统异常,以防止处理器由于错时序或其他原因误访问硬件单元内存,窃取或篡改该硬件单元内存。

基于上一实施例,在另一实施例中,若该资源共享不仅针对预设内存区域的安全内存区域,故还需区分安全内存区域和非安全内存区域,即该预设内存区域包括安全内存区域和非安全内存区域。请结合参阅图6,该内存访问控制方法与上一实施例的不同步骤包括:

步骤s52还包括根据所述访问地址检查所述访问地址指向的内存空间是否属于系统内存中的预设内存区域的安全内存区域。

该检查结果有四种情况:该访问地址指向的内存空间是预设内存区域的安全内存区域,该内存空间处于第一状态;该访问地址指向的内存空间不是预设内存区域的安全内存区域,该内存空间处于第一状态;该访问地址指向的内存空间是预设内存区域的安全内存区域,该内存空间处于第二状态;以及该访问地址指向的内存空间不是预设内存区域的安全内存区域,该内存空间处于第二状态。

例如,上述预设内存区域中的每个内存页还均配置有第二控制位,该第二控制位用于表示该内存页属于安全内存区域还是非安全内存区域,其位值并非如第一控制位般采用设值保存的方式,而是由内存控制器即时计算得到。

具体地,内存控制器根据所述访问地址与所述预存内存区域中的安全内存区域的地址之间的关系,计算得到访问地址指向的内存页的第二控制位的值,例如,若该访问地址属于安全内存区域的地址范围,则该访问地址指向的内存页的第二控制位为第三字符,若不属于,则该访问地址指向的内存页的第二控制位为第四字符。其中,当所述第二控制位为第三字符时,表示所述内存页属于所述安全内存区域;当所述第二控制位为第四字符时,表示所述内存页属于所述非安全内存区域。

上述第一字符与第二字符、第三字符与第四字符均可为任意不同字符,例如第一字符与第二字符分别为1和0,第三字符与第四字符分别为1和0。那么s52得到的检查结果有几种情况可以表示为(1,1),(0,1),(1,0),(0,0)。

该多个允许访问列表为分别对应上述检查结果的四种情况的四个允许访问列表;或者对应内存空间处于第一状态的两个检查结果公用一个允许访问列表,即该多个允许访问列表为分别对应上述检查结果的四种情况的三个允许访问列表。在一具体应用中,可对上述允许访问列表进行如下设置:对应处于第一状态的一个或两个允许访问列表仅仅包含处理器标识,对应安全内存区域的第二状态的允许访问列表和对应非安全内存区域的第二状态的允许访问列表均仅包含硬件单元标识,对应安全内存区域的第二状态的允许访问列表的硬件单元标识为设定若处于安全状态则可访问的硬件单元标识,对应非安全内存区域的第二状态的允许访问列表的硬件单元标识至少包括设定若处于非安全状态则可访问的硬件单元标识。

s54中所述根据该查找结果生成一指令,包括:

s541:在所述内存空间属于所述安全内存区域时,若所述访问者处于安全状态,则生成允许所述访问者访问所述内存空间的指令,否则生成不允许所述访问者访问所述内存空间的指令;

若检查确定需访问的内存空间为安全内存区域,且访问者标识属于对应安全内存区域的第二状态的允许访问集合,则安全内存保护机制生效,内存控制器允许安全状态的硬件单元进行该访问,阻止非安全状态的硬件单元进行该访问并可抛出系统异常,以防止非安全状态的硬件单元由于错时序或其他原因误访问安全内存区域,窃取或篡改该安全内存区域的内容。

s542:在所述内存空间属于所述非安全内存区域时,不管所述访问者处于安全状态还是非安全状态,均生成允许所述访问者访问所述内存空间的指令;或若所述访问者处于非安全状态,则生成允许所述访问者访问所述内存空间的指令,否则生成不允许所述访问者访问所述内存空间的指令。

若检查确定需访问的内存空间为非安全内存区域,且访问者标识属于对应非安全内存区域的第二状态的允许访问集合,则根据不同应用需求,内存控制器可允许安全状态和非安全状态的硬件单元进行该访问。或者内存控制器仅允许非安全状态的硬件单元进行该访问,阻止安全状态的硬件单元进行该访问并可抛出系统异常,以防止安全状态的硬件单元由于错时序或其他原因误访问非安全内存区域,导致需受保护的内容误被输出到非安全内存区域。

在再一区分安全内存区域和非安全内存区域的实施例中,该多个允许访问列表同理上一实施例,但对应安全内存区域的第二状态的允许访问列表仅包含处于安全状态的硬件单元标识;对应非安全内存区域的第二状态的允许访问列表仅包含处于非安全状态的硬件单元标识,或者处于安全状态和非安全状态的硬件单元标识。对应地,s54中所述根据该查找结果生成一指令,包括:若在s53中检查到的对应安全内存区域的第二状态的允许集合中存在该访问者的标识,生成允许所述访问者访问所述内存空间的指令,否则生成不允许所述访问者访问所述内存空间的指令;若在s53中检查到的对应非安全内存区域的第二状态的允许集合中存在该访问者的标识,生成允许所述访问者访问所述内存空间的指令,否则生成不允许所述访问者访问所述内存空间的指令。

该内存访问控制方法除包括图5所示步骤,还包括:监测至少部分硬件单元的当前状态,当该硬件单元处于安全状态时,将其归到对应安全内存区域的第二状态的允许访问集合中或者还将其归到对应非安全内存区域的第二状态的允许访问集合中,当该硬件单元处于非安全状态时,将其归到对应非安全内存区域的第二状态的允许访问集合中。该至少部分硬件单元至少包括设定可访问预存内存区域的硬件单元。

由上可总结,上述第二状态的允许访问集合中的硬件单元标识满足以下设定策略,若该资源共享仅针对安全内存区域,则该允许访问集合中的硬件单元标识为处于安全状态或者设定若处于安全状态则可访问的硬件单元标识,如为前者,则内存控制器可直接执行根据s54的最终查找结果生成指令,如为后者,则内存控制器需如上一实施例结合最终查找结果和访问者的当前状态生成指令;若该资源共享还区分安全内存区域和非安全内存区域,则该对应安全内存区域的允许访问集合中的硬件单元标识为处于安全状态或者设定若处于安全状态则可访问的硬件单元标识;该对应非安全内存区域的允许访问集合中的硬件单元标识至少包括处于非安全状态或者设定若处于非安全状态则可访问的硬件单元标识。

在上述预设内存区域包括安全内存区域和非安全内存区域的实施例中,上述内存控制器对预设内存区域的内存访问控制逻辑如下表1,其中,该下表1中p为上述第一控制位,s为第二控制位,kprotect生效表示该内存页仅允许处理器访问,并阻止硬件单元访问;安全内存保护机制用于保护处于第二状态的安全内存区域仅允许安全状态的硬件单元访问。

表1

结合上表对本发明的安全性进行分析:

以tee和richos双运行环境的终端设备为例,对于每个预设内存区域中的内存页,

1)如果其控制位s为1,并且控制位p为0,表示此内存页内存已经划归tee做安全内存使用,此时非安全状态的硬件单元无法读写该内存页,满足了tee的安全内存要求。

2)如果控制位s为1,并且控制位p为1,则内存控制器阻止安全状态的硬件单元写此内存页。这样就阻止了richos端恶意将tee使用的内存页偷偷切换回richos导致安全状态的硬件单元在不知情的状况下继续写此数据到该内存页,进而导致数据泄漏到richos端。

3)控制位s为1时,控制位p的切换,由内存控制器自动对相应的内存页进行内存清零,从而阻止了可能的回滚攻击或者richos端通过频繁的切换控制位p来偷取安全状态的硬件单元的输出数据。

请参阅图7,图7是本发明内存访问控制方法另一实施例的流程图。本实施例除包括上述实施例所述步骤外,还可包括以下步骤:

s71:内存控制器检测到存在所述内存页的第一控制位的值需发生变化。

s72:判断所述需发生变化的内存页的第二控制位是否为第三字符。若是,则确定该内存页属于安全内存区域,并执行s73,否则执行s74。

s73:清除所述需发生变化的内存页中的数据。

s74:通知处理器该所述内存页的第一控制位可发生变化。

例如,如图3所示实施例所述,上述处理器在执行s32或者在确定该硬件单元操作完成时将所述操作访问到的预设内存区域从第二状态更改为第一状态之前,向内存控制器发送指令,以指示该预设内存区域的相关内存页的第一控制位的值需发生变化。此时,为防止回滚(rollback)攻击或安全数据被窃取,内存控制器判断该内存页是否属于该安全内存区域。具体地,内存控制器计算第一控制位需发生变化的内存页的第二控制位的值,并判断该计算得到的第二控制位的值是否为表示该内存页属于安全内存区域的第三字符,若是,则对该内存页的数据进行清除,以保证安全状态的硬件单元的操作数据不被后续访问的处理器或硬件单元窃取。在清除完成后或无需执行清除时,该内存控制器拉中断通知处理器该内存页的第一控制位可发生变化,即该内存页的状态可进行切换,上述处理器收到该通知则执行上述对内存页的状态的切换,否则不执行该内存页的状态切换。

为更清楚了解本发明,下面结合图8举例说明。播放终端如嵌入式平台的播放终端可支援多路视频解码。

现有采用独立与系统内存的安全内存的方案中,在多路视频任意时序启播停播的情况下,安全内存的分配使用上会出现碎片化。例如,安全内存的大小为300mb,目前有两路视频正在解码,共使用90mb,剩余的210mb是空闲的。安全内存始终有部分区域在被使用中,这样就会导致安全内存保护区域无法做调整,进而空闲出来的内存区域81无法共享给系统内存使用;并且,空闲的安全内存碎片81数目可能非常多,由于传统的安全内存所能保护的块(section)数目的限制而无法支持更多的内存碎片数目,故无法将该安全内存碎片81进行回收。

采用本发明,将安全内存区域设置在系统内存中,并通过设置安全内存区域的状态来调整其由安全状态的硬件单元或处理器使用。如图8所示,该系统内存中的安全内存区域在被用于进行上述两路视频解码时,其被使用的内存页的第一控制位p为0,第二控制位s为1,而未被使用的安全内存碎片81中的内存页的第一控制位p为1,第二控制位s为1,进而将安全内存碎片81回收给处理器使用具体如ree端的linux使用。故通过设置安全内存区域的状态调整其使用,实现了安全内存碎片的回收,使得内存空间得到有效利用,且不同区域状态保证不同硬件使用,也保证了数据安全。

根据本发明的另一具体实施例为一种非瞬时计算机可读储存媒体,用于管理一供硬件单元进行访问的系统内存,其中存储由一处理器读取并执行的一程序代码,其特征在于,所述程序代码包括一第一子程序码和一第二子程序码。

所述第一子程序码用于在接收到所述硬件单元发出的一操作请求时,根据操作请求的类型来判断所述硬件单元请求的操作是否是访问所述系统内存里的一安全内存区域;比如说,当所述硬件单元是4k高清解码器时,该操作请求中会包含表示访问所述系统内存的一安全内存区域的信息,当所述硬件单元是一标清解码器时,该操作请求中会包含表示不是访问所述系统内存的安全内存区域的信息。

所述第二子程序码,用于将所述系统内存中的所述需访问的安全内存区域从默认的第一状态更改为第二状态,并将所述硬件单元设置为安全状态;

其中,所述安全内存区域处于所述第一状态时,表示限定仅供处理器进行访问,所述硬件单元不可对其进行访问;所述安全内存区域处于所述第二状态时,表示仅供处于安全状态的所述硬件单元进行访问。

可选地,所述程序代码还包括一第三子程序码,用于在系统启动时,按照内存分配策略将所述系统内存中一段或多段连续内存划分为所述系统内存中的安全内存区域。

可选地,所述安全内存区域共包括第一数量内存页,每个内存页均配置第一控制位;所述第二子程序码具体用于确定所述需访问的安全内存区域的大小为第二数量内存页;将所述安全内存区域中的第二数量内存页的第一控制位由第一字符更改为第二字符;其中,所述第一控制位为第一字符时,表示所述内存页处于所述第一状态;所述第一控制位为第二字符时,表示所述内存页处于所述第二状态;所述第一数量大于或等于所述第二数量。

可选地,所述第二子程序码还用于若所述硬件单元请求的操作不是访问所述系统内存的安全内存空间,则将系统内存中的至少部分非安全内存区域从第一状态更改为第二状态,并将所述硬件单元设置为非安全状态;其中,所述非安全内存区域处于所述第一状态时,表示仅供处理器进行访问,所述非安全内存区域处于所述第二状态时,表示可由处于安全状态或非安全状态的硬件单元进行访问,或限定仅供处于非安全状态的硬件单元进行访问。

可选地,所述安全内存区域和非安全内存区域均为所述系统内存中由cma分配的连续内存区域。

请参阅图9,图9是可采用本发明内存访问控制方法的系统结构示意图。该系统包括至少一个硬件单元901,一处理器902和一内存控制器903,以上器件通过总线互相沟通并借由内存控制器903来存取一系统内存904。上述实施例中的内存访问控制方法即可应用在图9所示的系统中,结合起来可更好理解本发明。

请参阅图10,图10是本发明内存访问控制装置一实施例的结构示意图。本实施例中,该内存访问控制装置包括多个保护组101(101a、101b、101c、101d)、一检查单元102和一判断单元103。

该检查单元102用于从总线中接收访问地址,根据所述访问地址检查所述访问地址指向的内存空间是否属于系统内存中的预设内存区域的安全内存区域,以及检查所述访问地址指向的内存空间的当前状态,得到一检查结果,并将该检查结果发送到该判断单元103。

该多个保护组101a,101b的每个保护组用于接收从总线得到的访问者标识,根据访问者标识查找允许访问列表得到一查找结果,并将该多个查找结果发送到该判断单元103。

该判断单元103,连接于该多个保护组101a,102b…和所述检查单元102,用于根据该检查结果选择一查找结果,然后根据该查找结果生成一决定讯号。

在一实施例中,若该资源共享仅针对预设内存区域的安全内存区域,那么仅需设置第一控制位p,就可实现本发明的内存访问控制。该检查单元102的检查结果为p=1或p=0,并且仅需2个保护组101a和101b即可实现保护功能。具体的,保护组101a可设定为判断所述访问者标识是否存在于在所述访问地址指向的内存空间的当前状态为第一状态(即p为1)时对应的允许访问列表,若在该列表内,则查找结果为是;若不在该列表内,则查找结果为否。保护组101b可设定为判断所述访问者标识是否存在于所述访问地址指向的内存空间的当前状态为第二状态(即p为0)时对应的允许访问列表,若在该列表内,则查找结果为是;若不在该列表内,则查找结果为否。举例来说,若检查单元102的检查结果为p=1,那么判断单元103就选择保护组101a的查找结果,若该查找结果为是,该决定讯号就是允许该访问者对所述访问地址指向的内存空间区域的访问,反之不允许。

在另一实施例中,若需要区分所述访问地址指向的内存空间是否属于系统内存中的预设内存区域的安全内存区域,以及检查所述访问地址指向的内存空间的当前状态,那么设置s,p两个控制位,即可实现本发明的内存访问控制。该检查单元102的检查结果为(s,p)是(1,1),(0,1),(1,0),(0,0),并且需4个保护组101a,101b,101c,101d即可实现保护功能。具体的,保护组101a可设定为判断所述访问者标识是否存在于在(s,p)=(1,1)时对应的允许访问列表,若在该列表内,则查找结果为是;若不在该列表内,则查找结果为否。保护组101b可设定为判断所述访问者标识是否存在于在(s,p)=(0,1)时对应的允许访问列表,若在该列表内,则查找结果为是;若不在该列表内,则查找结果为否。保护组101c可设定为判断所述访问者标识是否存在于在(s,p)=(1,0)时对应的允许访问列表,若在该列表内,则查找结果为是;若不在该列表内,则查找结果为否。保护组101d可设定为判断所述访问者标识是否存在于在(s,p)=(0,0)时对应的允许访问列表,若在该列表内,则查找结果为是;若不在该列表内,则查找结果为否。举例来说,若检查单元102的检查结果为(s,p)=(1,1),那么判断单元103就选择保护组101a的查找结果,若该查找结果为是,该决定讯号就是允许该访问者对所述访问地址指向的内存空间区域的访问,反之不允许。

若在实际应用中,还需要设置更多的控制位时,可利用更多的保护组数来实现保护功能,本领域技术人员可知这种变化也落入本发明的保护范围之内。

请结合参阅图11,图11是本发明检查单元的一实施例的结构示意图。如图11所示,该检查单元包含一地址位移单元111,当存取命令进入内存控制装置的检查单元102时,该地址位移单元111从总线中的地址信息得到一访问地址,该检查单元102会根据所述访问地址查出该访问地址对应的内存空间的控制位的值。在一实施例中,该检查单元102可用一多工器实现。

请参阅图12,图12是本发明判断单元的一实施例的结构示意图,所述该内存访问控制装置的该判断单元103,可用一多工器实现。图中以设置s和p两个控制位的情况,当然也可改变成只有一个控制位或其他多个控制位的情况,此处不作赘述。

在内存资源共享后可能会引起安全问题,所以要采用内存区域保护机制,可应用在保护操作系统核心的内存存取区域,只允许cpu(centralprocessingunit,中央处理单元)或特定类型的硬件单元才能存取此区域,以防止操作系统核心的资料遭到破坏。传统的保护机制只能以一块连续的内存区域为单位,一组保护组数即可满足条件,当内存被共享重新分配以后,原始的连续保护区域可能会被拆开成数块分别被cpu或其他硬件单元存取,如此需要针对每组来设定多个保护组,每组起的作用是保护该组范围的区块仅被预设的允许的cpu或特定类型的硬件单元存取。而本发明仅需2组或4组保护组来保护相应的内存空间,又不会影响已分配给其他硬件单元的内存空间。于是操作系统就不需占用多个保护组,可大大降低内存空间保护组的成本。特别是,当原始的连续保护区域被拆开成2个或4个以上的区域时,本发明的保护机制所降低的成本显著。

请参阅图13,图13是本发明内存访问控制装置另一实施例的结构示意图。本实施例中,该内存访问控制装置与图10所示的装置的保护组和单元基本相同,其区别在于该多个保护组131(131a、131b、131c、131d)连接于检查单元132,该判断单元133连接于该多个保护组131。该多个保护组131根据检查单元132的检查结果,选择与所述检查结果对应的保护组根据一访问者标识查找允许访问列表得到一查找结果;该判断单元133直接接收所述与所述检查结果对应的保护组的查找结果,并根据所述查找结果产生一决定讯号。

上述内存访问控制装置的对应单元结构还用于执行上述内存访问控制方法实施例的对应步骤对应,具体可参阅上述方法实施例的描述。

上述处理器还可以称为cpu。上述内存控制器可为片上系统(systemonchip,soc)芯片。在具体应用中,终端设备的上述各个组件通过总线(图未示)耦合在一起,其中总线除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。

上述本发明实施例揭示的方法可以应用于处理器或内存控制器中,或者由处理器或内存控制器实现。处理器或内存控制器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器或内存控制器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器或内存控制器可以是通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件电路执行完成,或者用硬件电路中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器、闪存、只读存储器、可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器或内存控制器读取存储器中的信息,结合其硬件完成上述方法的步骤。

以上方案可带来以下有益效果:

1)系统内存与安全内存区域分时共用物理内存,减少系统的总内存需求;

2)具有足够的稳健性,不会因为第三方代码的错误或者其他时序问题导致硬件单元与处理器之间的数据互踩;

3)具有足够的安全性,能够阻止非安全状态如运行在richos的处理器或硬件单元向安全状态如tee环境中的硬件单元灌输数据的回滚攻击,并能阻止非安全状态的处理器或硬件单元偷取安全内存区域的数据;

4)从硬件成本分析:

本方案无需另外设置安全内存,可降低系统成本;并且减少保护组数也可降低系统成本。

进一步,本方案可采用了比较大的页面(page),如1m,512k之类的大粒度内存页,同时每个内存页只需要一个位的控制字来设置其状态,而不是像传统mmu那样每个内存页均需非常多的控制位来支援随机映射,故大幅的减少了硬件内部的存储位需求,进一步减少了系统存储成本。

在本发明所提供的几个实施方式中,应该理解到,所揭露的方法以及装置,可以通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本发明各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述其他实施方式中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

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