具体实施方式
现在将详细参考本公开的具体实施例,在附图中例示了本公开的示例。尽管将结合具体实施例描述本公开,但将理解,不是想要将本公开限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本公开的精神和范围内包括的变更、修改和等价物。应注意,本文描述的方法操作都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。
注意,接下来要介绍的示例仅是具体的示例,而不作为限制本公开的实施例必须为示出和描述的具体的外形、硬件、连接关系、操作、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本公开的构思来构造本说明书中未提到的更多实施例。
本公开中使用的术语是考虑到关于本公开的功能而在本领域中当前广泛使用的那些通用术语,但是这些术语可以根据本领域普通技术人员的意图、先例或本领域新技术而变化。此外,特定术语可以由申请人选择,并且在这种情况下,其详细含义将在本公开的详细描述中描述。因此,说明书中使用的术语不应理解为简单的名称,而是基于术语的含义和本公开的总体描述。
本公开中使用了流程图来说明根据本申请的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
首先对本申请涉及的相关术语进行解释:
访问请求:由处理器或主机发起的对地址空间的访问的指令,用于向地址空间写入数据或从地址空间中读取数据或者执行其他相关操作。
地址空间:用于存储数据的存储空间。一方面,针对不同的存储设备,地址空间可以包括内存地址空间和寄存器地址空间,其中,内存地址空间表示内存所对应的地址空间,并且寄存器地址空间表示外设寄存器所对应的地址空间,例如,存储空间可以整体上连续编址。另一方面,针对不同的安全性能,地址空间可以分为安全地址空间和非安全地址空间,其中安全地址空间内用于存储安全数据(受保护的数据),非安全地址空间用于存储非安全数据(不受保护的数据)。在本公开的至少一个实施例中,安全地址空间可以包括内存地址空间中的安全内存地址空间和寄存器地址空间中的安全寄存器地址空间。
在本公开的至少一个实施例中,所提及的“目标地址空间”例如为安全地址空间,但不限于此,例如可以为其他被设置有一定权限以进行保护的地址空间。
在本公开的至少一个实施例中,所提及的“目标内存地址空间”例如为安全内存地址空间,在其中存储有安全内存数据(受保护的内存数据),但不限于此,例如可以为其他被设置有一定权限以进行保护的内存地址空间。
在本公开的至少一个实施例中,所提及的“目标寄存器地址空间”例如安全寄存器地址空间,其中存储有安全寄存器数据(受保护的寄存器数据),但不限于此,例如可以为其他被设置有一定权限以进行保护的寄存器地址空间。
在本公开的至少一个实施例中,“访问请求设备”例如指代能够对地址空间发起访问请求的任何访问主体,例如中央处理器CPU、处理器核、或主机(Master)等,但不限于此。另外,针对安全性能要求,“访问请求设备”可以包括安全访问请求设备和非安全访问请求设备,例如安全处理器和非安全处理器,安全主机和非安全主机等。其中,安全访问请求设备可以用于构建安全的执行环境或受保护的执行环境,以安全地处理相应的数据,而非安全访问请求设备可以用于构建非安全的执行环境或不受保护的执行环境,以不安全或安全性低的方式处理相应的数据。
在本公开的至少一个实施例中,所提及的“寄存器”例如为外设寄存器,这里的外设寄存器包括例如USB、UART等外设寄存器。然而实施例不限于此,“寄存器”可以为本文的访问请求设备经由其对其他设备进行访问或操作的任何合适的寄存器。
为便于描述,在下文的描述的地址空间的保护方法和地址空间的保护装置中,以“处理器”作为该“访问请求设备”来对本公开的至少一实施例进行描述,然而可以理解的是,对于“处理器”的描述同样适用于包括中央处理器CPU、处理器核、或主机(Master)等其他“访问请求设备”。另外,对于“安全处理器”和“非安全处理器”的描述同样分别适用于上面定义的“安全访问请求设备”和“非安全访问请求设备”。
如上所述,RISC-V架构为了限制不可信代码或应用,提供了物理内存保护(PMP,Physical Memory Protection)技术,使得不可信代码只能访问分配给自己的那部分内存,从而保护内存的数据的安全。然而,基于RISC-V架构的处理器或主机(Master)等访问请求设备存在对寄存器访问的需要,存在同时支持保证寄存器的数据的安全性和内存的数据的安全性的需要。
本公开的至少一实施例提供了一种地址空间的保护方法、保护装置、设备及存储介质,以同时支持保证寄存器的数据的安全性和内存的数据的安全性。
以下参照附图,对本公开的实施例的地址空间的保护方法、保护装置、设备、以及存储介质分别进行详细介绍。
首先,以下介绍本公开的实施例的地址空间的保护方法,该地址空间的保护方法可以应用于如下文进一步描述的地址空间的保护装置、电子设备、其他合适的软件或硬件、或硬件和软件的结合。
图1示出了根据本公开的至少一实施例的地址空间的保护方法的流程图,该保护方法可以包括步骤S102~S106。
在步骤S102中,接收第一访问请求。
在一些实施例中,第一访问请求可以是处理器发出的对地址空间的访问请求。基于该访问请求,处理器可以对相应的地址空间执行访问,例如读取相应的地址空间的数据、向相应的地址空间写入数据、或者其他合适的操作。
在步骤S104中,确定第一访问请求是否符合对于目标地址空间的访问权限,其中,目标地址空间包括目标内存地址空间和目标寄存器地址空间,访问权限限定对目标地址空间的访问请求是否被允许。
在一些实施例中,第一访问请求可以访问目标地址空间,例如安全地址空间,但不限于此;目标地址空间包括目标内存地址空间和目标寄存器地址空间,对应地,安全地址空间包括安全内存地址空间和安全寄存器地址空间。安全地址空间内一般可以存储安全数据,例如,为保证数据的安全性,在处理器发出访问请求来访问这些安全数据时,需要对访问请求的访问权限进行检查,确定访问请求是否符合对于目标地址空间的访问权限。
在一些实施例中,访问权限可以包括目标地址空间的读取/写入等操作属性的权限(本文也称为操作属性访问权限)。例如,目标地址空间内的部分/全部可以是仅读取。又例如,目标地址空间内的部分/全部可以是仅写入。再例如,目标地址空间内的一部分可以是仅读取,而目标地址空间内的另一部分可以是仅读取。
在一些实施例中,访问权限可以包括发起第一访问请求的处理器是否有权访问地址空间的访问权限(本文也称为处理器访问权限)。例如,系统中包括多个处理器,例如包括安全处理器和非安全处理器。安全处理器可以用于处理安全数据,而非安全处理器仅用于处理非安全数据。例如,基于非安全处理器可以构建丰富执行环境(REE),例如运行传统的OS、普通程序并存储普通信息。例如,基于安全处理器可以构建可信执行环境(TEE),例如可以提供隔离执行、安全通信、安全存储等功能,保证TEE内敏感信息的完整性、机密性及可用性,并且为丰富执行环境(REE)提供安全服务。例如,安全处理器可以访问安全地址空间和非安全地址空间,而非安全处理器仅可以访问非安全地址空间。又例如,安全处理器仅可以访问安全地址空间,而非安全处理器仅可以访问非安全地址空间。
在一些实施例中,访问权限可以是目标地址空间的操作属性访问权限和处理器访问权限或其他合适的权限的结合。
在一些实施例中,访问权限可以以查找表、文本或任何其他合适形式进行存储。一般地,访问权限可以本地地存储,例如存储在能够执行本公开的至少一实施例的地址空间的保护方法的装置(例如下文描述的保护装置500的存储器(未示出)中)或电子设备(例如下文描述的电子设备1000的存储装置1080)中,但本公开不限于此,也可以将访问权限远程地存储,并且可以通过有线或无线地获取访问权限。另外,为保证获取的访问权限的安全性,可以通过加解密的方式进行访问权限的传输。
在步骤S106中,响应于第一访问请求符合访问权限,通过第一访问请求。
在一些实施例中,当第一访问请求符合访问权限,也即是第一访问请求有权限访问目标地址空间,因此可以基于访问请求对目标地址空间进行访问操作。例如,当第一访问请求是读取操作时,可以将读取的数据返回给处理器。又例如,当第一访问请求是写入操作时,可以将写入的数据下入到第一地址。
如上所述,根据本公开的至少一实施例的地址空间的保护方法通过确定访问请求是否符合对于包括目标内存地址空间和目标寄存器地址空间的目标地址空间的访问权限,并且通过符合该访问权限的访问请求。如此,仅有符合访问权限的访问请求可以访问到目标内存地址空间和/或目标寄存器地址空间中的数据,提供了对于目标寄存器地址的数据的保护和/或对于目标内存地址的数据的保护。
以下对本公开的地址空间的保护方法的其他方面进行详细的描述。
在一些实施例中,获取第一访问请求要访问的第一地址;响应于第一地址位于目标内存地址空间,使用第一保护控制模块进行响应。例如,利用第一保护控制模块执行确定第一访问请求是否符合访问权限。
或者,响应于第一地址位于目标寄存器地址空间,使用第二保护控制模块进行响应。例如,利用第二保护控制模块执行确定第一访问请求是否符合访问权限。
在这些实施例中,例如,可以针对内存和寄存器分离地设置保护控制模块,以针对到目标内存地址空间和目标寄存器地址空间的访问请求进行分离响应。例如,在示例性的架构中,第一保护控制模块可以称为MEM-PMP,用以响应到内存地址空间的访问请求,并且第二保护控制模块可以称为IO-PMP,用于响应到寄存器地址空间的访问请求。
例如,可以将第一保护控制模块设置在内存的入口处,并且可以将第二保护控制模块设置在高级外设总线主机(APB master)的出口处。如此,可以针对内存的地址空间和寄存器的地址空间实现分离响应。
在一些实施例中,使用第一保护控制模块的寄存器来设置对于目标内存地址空间的访问权限,并且同时使用第二保护控制模块的寄存器来设置对于目标寄存器地址空间的访问权限,这将在下文中结合图2进行描述。
图2示出了根据本公开的至少一实施例的设置目标内存地址空间的访问权限的示意图。
在一些实施例中,第一保护控制模块自身的寄存器用于记录配置方式,例如可以支持16个区域(region)(例如,区域0-区域15),即可以支持对内存地址空间的16种设置方式。示例性的,图2中仅示出了4个区域(区域0-区域3),然而可以理解的是,图2中还可以包括其余的区域。
参见图2,区域0可以默认覆盖整个内存(memory)地址空间。区域的优先级可以为固定优先级,例如根据区域的编号由高到低排列。例如区域3的优先级大于区域2的优先级,区域2的优先级大于区域1的优先级,并且区域1的优先级大于区域0的优先级。如果对应于某一内存地址空间的区域存在重叠时,以最高优先级的区域配置为准。例如,对应于某一内存地址空间的区域包括区域2和区域0时,对应于该内存地址空间的访问权限以区域2为准进行设置。
继续参照图2,每个区域可以平均分为8个子区域(sub region),例如每个区域下的子区域0-子区域7。每个子区域可以单独配置为禁用(disable),配置为禁用的区域所对应的内存地址空间不设置访问权限,因而可以视为非安全内存。如此,可以通过第一保护控制模块的寄存器支持的多个区域设置对应于内存地址空间的区域权限(regionpermission),从而基于区域权限将内存地址空间设置为安全内存地址空间和非安全内存地址空间。
设置目标寄存器地址空间的访问权限的方法与上述设置目标内存地址空间的访问权限方法类似。
在一些实施例中,第二保护控制模块自身的寄存器用于记录配置方式,例如可以支持16个区域(例如,区域0-区域15),即可以支持对寄存器地址空间的16种设置方式。其中区域0可以默认覆盖整个寄存器地址空间。区域的优先级可以为固定优先级,例如根据区域的编号由高到低排列。例如区域3的优先级大于区域2的优先级,区域2的优先级大于区域1的优先级,并且区域1的优先级大于区域0的优先级。如果对应于某一寄存器地址空间的区域存在重叠时,以最高优先级的区域配置为准。例如,对应于某一寄存器地址空间的区域包括区域2和区域0时,对应于该寄存器地址空间的访问权限以区域2为准进行设置。如此,可以通过第一保护控制模块的寄存器支持的多个区域设置对应于寄存器地址空间的区域权限制,从而基于区域权限制将寄存器地址空间设置为安全寄存器地址空间和非安全寄存器地址空间。
在一些实施例中,针对第二保护控制模块的寄存器而言,每个区域的最小地址范围为32B,子区域为4B,整个寄存器地址空间最少可以覆盖128个32bit寄存器。如此,可以服务于更多的外设,增加了服务外设的性能。
如此,可以通过第一保护控制模块的寄存器和第二保护控制模块的寄存器提供丰富设置安全地址空间的方式。
图2示出的设置目标内存地址空间的访问权限的示意图、以及设置目标寄存器地址空间的访问权限仅是示例性的,可以存在其他区域的重叠或不重叠的方式,或者各个子区域的配置方式,或者其他的设置方式,本公开不以此为限。
在一些实施例中,可以由安全处理器通过第一保护控制模块的寄存器(例如,可以称为“第一寄存器”)来设置对于目标内存地址空间的访问权限。在一些实施例中,可以由安全处理器通过第二保护控制模块的寄存器(例如可以称为“第二寄存器”)来设置对于目标寄存器地址空间的访问权限。如此,由安全处理器来设置目标内存地址空间的访问权限或目标寄存器地址空间的访问权限提高了访问权限的设置的安全性。
在一些实施例中,经由第一保护控制模块的第一寄存器和第二保护控制模块的第二寄存器,可以分别将第一保护控制模块和第二保护控制模块设置为安全模式。例如,在安全模式下,非安全处理器仅可以访问非安全地址空间,而不能访问非安全地址空间。如此,可以防止非安全处理器非法地访问安全地址空间内的数据,保证了安全地址空间内的数据的安全性。
在一些实施例中,安全模式还可以进一步包括标准模式和隔离模式。在标准模式下,安全处理器可以访问安全地址空间和非安全地址空间。如此,安全处理器可以拥有访问整个地址空间的权限,便于安全地访问内存或寄存器(以及与寄存器相对应的外设),从而安全地提供丰富的执行环境。另外,在隔离模式下,安全处理器仅可以访问安全地址空间,而不能访问非安全地址空间。如此,可以防止安全处理器访问诸如病毒等非安全数据,保证安全处理器的安全性。
在一些实施例中,可以经由第一保护控制模块的第一寄存器和第二保护控制模块的第二寄存器针对读取/写入等操作属性来分别将地址空间设置为安全地址空间和非安全地址空间。例如,针对某一安全地址空间,其操作属性访问权限可以为“仅读取”、“仅写入”、“读取和写入”三者之一。如此,与针对读取/写入统一将地址空间设置为安全地址空间和非安全地址空间(即操作属性访问权限仅为“读取和写入”)相比,可以为地址空间设置丰富的存储属性的类型,增加了实用性。
在一些实施例中,第一保护控制模块的第一寄存器和第二保护控制模块的第二寄存器还可以被设置为禁止写入。例如,第一保护控制模块的第一寄存器和第二保护控制模块的第二寄存器支持secure_lock输入,以锁定第一保护控制模块的第一寄存器和第二保护控制模块的第二寄存器,防止误操作。如此,可以进一步减小安全处理器意外修改第一保护控制模块的第一寄存器和第二保护控制模块的第二寄存器而造成的对访问权限的意外修改或删除的风险,提高了访问权限的设置的安全性。
在一些实施例中,在第一保护控制模块的第一寄存器和第二保护控制模块的第二寄存器被锁定后,如果需要修改访问权限,可以由安全处理器对第一保护控制模块的第一寄存器和第二保护控制模块的第二寄存器进行解锁,进而可以修改第一保护控制模块的第一寄存器和第二保护控制模块的第二寄存器的配置来修改访问权限。
虽然上面的实施例描述了第一保护控制模块和第二保护控制模块分别用于实现对到内存地址空间和寄存器地址空间的访问的请求的分别响应,以及第一保护控制模块和第二保护控制模块分别通过各自相应的寄存器来设置各自对应访问权限,然而可以理解的是,这种分离不是必须的,并且可以在不分离第一保护控制模块和第二保护控制模块的情况下实现对到内存地址空间和寄存器地址空间的访问的请求的响应,以及也可以通过相应的一个或多个寄存器来设置访问权限。
例如,通过上述参照图2描述的实施例及其附加方面,可以使得将地址空间设置为安全地址空间(目标地址空间)和非安全地址空间。例如,可以将内存地址空间设置为安全内存地址空间(目标内存地址空间)和非安全内存地址空间。又例如,可以将寄存器地址空间设置为安全寄存器地址空间(目标寄存器地址空间)和非安全寄存器地址空间。在这种情况下,当接收到访问请求时,需要确定访问请求是否符合所设置的访问权限,例如访问请求是否具有访问目标地址空间的访问权限,或者说访问请求对目标地址空间的访问是否合法。
图3示出了根据本公开的至少一些实施例的确定第一访问请求是否符合访问权限的方法的流程图,该方法可以包括步骤S302~S308。
参见图3,在接收到第一访问请求后,在步骤S302中,判断第一访问请求是否访问目标地址空间。在一些实施例中,访问请求可以包括第一访问请求要访问的地址,可以通过该地址来确定是否访问目标地址空间。
响应于第一访问请求访问目标地址空间(步骤S302的“是”分支),在步骤S304中,判断第一访问请求来自安全处理器还是非安全处理器。在一些实施例中,访问请求可以包括标识访问请求所来自的处理器的标识,可以通过该标识来确定访问请求是来自安全处理器还是非安全处理器。
响应于第一访问请求来自安全处理器(步骤S304的“是”分支),即是可确定第一访问请求符合访问权限,在步骤S306中,可以允许或通过第一访问请求,例如继续第一访问请求,以对相应的目标地址空间进行访问。也就是说,这是由安全处理器发起对访问目标地址空间的访问请求,该访问请求符合访问权限,因此可以允许或通过该访问请求。可以理解的是,为保证目标地址空间的数据的安全性,非安全处理器仅能访问非安全地址空间,而不能访问安全地址空间(与上文的安全模式相对应),以访问对安全内存地址空间中的数据或者安全寄存器地址空间中的数据进行篡改。
在针对操作属性等操作来分别将地址空间设置为安全地址空间和非安全地址空间的情况下,可以对来自安全处理器的访问请求进行操作属性访问权限的检查。在一些实施例中,响应于第一访问请求来自安全处理器,判断第一访问请求的操作属性是否与目标地址空间的操作属性一致。响应于第一访问请求的操作属性与目标地址空间的操作属性一致,确定第一访问请求符合访问权限,或者响应于第一访问请求的操作属性与目标地址空间的操作属性不一致,确定第一访问请求不符合访问权限。这里描述的操作属性访问权限的检查是可选的,可以替代步骤S306而实施,可以与步骤S306并行实施,可以在步骤S306之前或之后实施,也可以与步骤S302、S306以任何合适的顺序实施。
响应于第一访问请求来自非安全处理器(步骤S304的“否”分支),在步骤S308中,确定第一访问请求不符合访问权限。也就是说,在这种情况下,非安全处理器访问目标地址空间,该访问请求不符合访问权限,因此可以例如阻塞该访问请求。
返回步骤S302,响应于第一访问请求访问非安全地址空间(步骤S302的“否”分支),方法前进到步骤S306中,以通过第一访问请求,例如继续第一访问请求,以对相应的非安全地址空间进行访问。通常,非安全地址空间用于存储不受保护的数据,因此当访问请求访问非安全地址空间时,可以直接允许该访问请求。
在一些情况下,例如,也存在不希望安全处理器访问非安全地址空间的需要(对应于上文描述的隔离模式)。因此,在一些实施例中,作为步骤S302的“否”分支的替代,判断第一访问请求来自安全处理器还是非安全处理器;以及响应于第一访问请求来自安全处理器,阻塞第一访问请求。可以理解的是,通常,安全处理器可以对非安全地址空间中的数据进行访问,然而在一些情况下,存储在非安全地址空间中的数据可能是不安全的,这些数据存在攻击安全处理器的可能,因此阻塞安全处理器对非安全地址空间的访问请求可以降低安全处理器被攻击的概率。
根据步骤S302-S308可以确定访问请求是否符合访问权限,并且可以通过符合访问权限的访问请求并且阻塞不符合访问权限的请求。需要说明的是,步骤S302不是必须的,例如全部地址空间均被设置为目标地址空间时或其他情况导致的访问请求总是访问目标地址空间时,此时根据本公开的至少一实施例的地址空间的保护方法可以直接从步骤S304开始执行。步骤S302的“否”分支也可以作为确定访问请求是否符合访问权限的附加方面或可选方面,其中当访问请求访问非安全地址空间时,可以与标准模式或隔离模式来对应的确定允许访问请求还是阻塞访问请求。如此,基于上述参照图3描述的方法的各个方面可以确定访问请求是否符合访问权限。
另外,图中所示的方法的各个方面的步骤也可以以任何合适的执行顺序执行,并且对其余操作步骤进行适当的修改,而不超出本公开的范围。
在一些情况下,如上所述,访问请求可能不符合访问权限。下面介绍访问请求不符合访问权限的实施例。
在一些实施例中,响应于第一访问请求不符合访问权限,阻塞第一访问请求。例如,第一访问请求访问需要对目标地址空间内的第一地址进行读取访问,而第一地址的访问权限为只写(即只允许写入),因此第一访问请求不符合访问权限,可以阻塞该第一访问请求。又例如,访问权限可以为安全处理器可以访问某一目标地址空间,而非安全处理器不可以访问该目标地址空间,因此,由非安全处理器发起的对该目标地址空间的访问请求将被认为是不符合对于该目标地址空间的访问权限,并且该访问请求将被阻塞。如此,可以阻塞访问请求对目标地址空间的非法访问,保证了目标地址空间的数据的安全性。
在一些情况下,阻塞访问请求并且因此结束该访问请求可能是不利的,例如可能会影响相关线程的执行。因此,在保证目标地址空间的数据的安全性的前提下恢复或继续被阻塞的访问请求的执行可能是有利的。
在一些实施例中,响应于阻塞第一访问请求,确定基于第一访问请求产生的第二访问请求是否符合访问权限。例如,访问权限可以为安全处理器可以访问某一目标地址空间,而非安全处理器不可以访问该目标地址空间,因此,由非安全处理器发起的对该目标地址空间的访问请求将被认为是不符合对于该目标地址空间的访问权限,并且该访问请求将被阻塞。在这种情况下,可以确定基于第一访问请求产生的第二访问请求是否符合访问权限。在本实施中,由安全处理器代替非安全处理器发起第二访问请求,其中该第二访问请求与第一访问请求相关联,例如,安全处理器可以基于第二访问请求访问与第一请求所要访问的数据相对应的数据。例如,第一访问请求与第二访问请求除了发起访问请求的处理器的标识由非安全处理器变为了安全处理器,其余数据可以不变。如此,通过由安全处理器代替非安全处理器发起第二访问请求,可以增加访问请求通过的概率,降低了对相关线程的执行的影响,并且由安全处理器代替非安全处理器访问目标地址空间保证了目标地址空间内的数据的安全性。
在一些实施例中,确定基于第一访问请求产生的第二访问请求是否符合访问权限可以包括:将第一访问请求发送到安全处理器,从安全处理器获取基于第一访问请求产生的第二访问请求;响应于第二访问请求符合访问权限,通过第二访问请求;以及响应于第二访问请求不符合访问权限,阻塞第二访问请求。如此,可以与第一访问请求类似地对第二访问请求的访问权限进行检查,防止第二访问权限直接访问到如目标地址空间的数据,保证了目标地址空间的数据的安全性。
在一些实施例中,可以通过共享内存将第一访问请求发送到安全处理器。例如,当第一访问请求被阻塞时,可以将第一访问请求存储在共享内存中,然后可以将共享内存中存储的第一访问请求发送到安全处理器。当然,本公开的实施例不限于此,也可以通过其他数据传输的方式将第一访问请求发送到安全处理器,以便安全处理器获取基于第一访问请求产生的第二访问请求。
在一些情况下,针对不同的访问请求,获取与访问请求相关的数据(例如在访问请求是写入操作的情况下的要被写入的数据,或者在访问请求是读取操作的情况下的要被读取的数据)需要额外计算资源开销或时间开销等,需要一种同时实现确定访问请求是否符合访问权限和获取与访问请求相关的数据的高效的方法,本公开的至少一实施例针对第一访问请求支持非透传模式和透传模式,以提供确定访问请求是否符合访问权限和获取与访问请求相关的数据的高效的方法。
图4A示出了根据本公开的至少一实施例的非透传模式的结构示意图。
参见图4A,处理器402可以将例如第一访问请求传输到物理内存管理模块(PMP)404,这里的PMP 404可以执行上文描述的地址空间的保护方法的各个方面。PMP 404可以优先执行PMP检查405,在PMP检查405中确定第一访问请求是否符合访问权限,然后响应于第一访问请求符合访问权限来通过数据总线406执行到目标地址空间408的访问。例如当该访问是读取数据时,通过数据总线访问第一地址,然后从第一地址获取数据,并且将获取的数据返回到处理器。又例如,当该访问是写入数据时,通过数据总线获取要写入的数据,然后将要写入的数据写入第一地址。
如此,确定访问请求是否符合访问权限在获取与访问请求相关的数据之前执行,基于确定访问请求是否符合访问权限的结果确定是否执行获取与访问请求相关的数据可以确保获取的与访问请求相关的数据随后都能被利用(例如返回到处理器或写入目标地址空间),保证了用于获取与访问请求相关的数据的计算资源开销的高利用率。
图4B示出了根据本公开的至少一实施例的透传模式的结构示意图。
参见图4B,处理器402可以将例如第一访问请求传输到物理内存管理模块(PMP)404,并且PMP检查405与数据总线406并行设置,即获取第一访问请求要访问的第一地址;与确定例如第一访问请求是否符合访问权限并行地访问第一地址,并且基于第一访问请求是否符合访问权限确定是否继续对于第一地址的访问操作。例如,针对读取操作,在确定第一访问请求是否符合访问权限的同时,可以将第一地址通过数据总线传输到目标地址空间并且获取读取的数据。又例如,针对写入操作,在确定第一访问请求是否符合访问权限的同时,可以获取要写入的数据。
在一些实施例中,基于第一访问请求是否符合访问权限确定是否继续对于第一地址的访问操作,包括:响应于第一访问请求不符合访问权限,取消对于第一地址已经进行的访问操作;或者响应于第一访问请求符合访问权限,允许对于第一地址已经进行的访问操作。如此,获取的访问请求相关的数据是否被利用,例如是否返回给处理器或者写入到相应的目标地址空间的数据,需要由访问权限的检查或确定的结果来控制,保证了目标地址空间的数据的安全性。
如此,确定访问请求是否符合访问权限在获取与访问请求相关的数据并且执行,可以无需等到确定第一访问请求是否符合访问权限的结束后才执行获取读取的数据和要被写入的数据的操作,而是可以将获取读取的数据和要被写入的数据的操作和确定第一访问请求是否符合访问权限并行地执行,减小了第一访问请求访问目标地址空间的时间量,提高了访问请求的执行效率。
在参照图4A和图4B描述的实施例中,例如可以基于实际的应用来选择上述非透传模式和透传模式。例如,当第一访问请求符合访问权限的可能性高或与访问请求相关的数据较大时,选择透传模式可能是有利的。又例如,当第一访问请求符合访问权限的可能性低或与访问请求相关的数据较小时,选择非透传模式可能是有利的。
在一些实施例中,基于第一访问请求是否符合访问权限确定是否继续对于第一地址的访问操作,包括:响应于第一访问请求不符合访问权限,取消对于第一地址已经进行的访问操作;或者响应于第一访问请求符合访问权限,允许对于第一地址已经进行的访问操作。例如,针对读取操作,当第一访问请求不符合访问权限时,此时对应于非法读取,可以向上游的处理器返回全0,同时丢弃下游从设备(例如内存或寄存器)返回的数据。又例如,针对写入操作,当第一访问请求不符合访问权限时,此时对应于非法写入,可以丢弃上游处理器发出的要写入的数据,并且可以返回写入结果的响应,如写入失败的响应。如此,在并行执行获取读取的数据和要被写入的数据的操作和确定访问请求是否符合访问权限的操作的基础上,基于确定访问请求是否符合访问权限进行访问操作的取消或允许不仅提高了访问请求的执行效率,还保证了目标地址空间的数据安全性。
需要说明的是,本文的第一访问请求和第二访问请求仅用于区分不同循环中的访问请求,例如第二访问请求可以是被阻塞的访问请求并且可以经历所描述的第一访问请求的各个步骤或这些步骤的一部分。因此,虽然上文描述了第一访问请求的各个方面,然而,可以理解的是第二访问请求可以与第一访问请求进行类似的处理。因此,在本文的上下文中,除非另有说明,针对第一访问请求的操作同样适用于第二访问请求。此外,除非另有说明,在本文上下文中描述的访问请求包括第一访问请求和第二访问请求。
为使本领域技术人员更好地理解和实现本公开的实施例,以下对能够实现上述地址空间的保护方法的地址空间的保护装置参照附图进行相应描述。
与本公开的至少一实施例提供的地址空间的保护方法相对应,本公开还提供了一种地址空间的保护装置。图5示出了根据本公开的至少一实施例的地址空间的保护装置的结构示意图,这里的保护装置可以与参见图4A和4B描述的PMP 304相同或类似,并且可以执行如上参照图1至图4A、图4B所描述的地址空间的保护方法的各个方面。
参照图5,保护装置500可以包括接收单元502、管理单元504。
接收单元502可以被配置为接收第一访问请求。
管理单元504可以被配置为确定第一访问请求是否符合对于目标地址空间的访问权限,其中,目标地址空间包括目标内存地址空间和目标寄存器地址空间,访问权限限定对目标地址空间的访问请求是否被允许。
如上所述,根据本公开的至少一实施例的地址空间的保护方法通过确定访问请求是否符合对于包括目标内存地址空间和目标寄存器地址空间的目标地址空间的访问权限,并且通过符合该访问权限的访问请求。如此,仅有符合访问权限的访问请求可以访问到目标内存地址空间和目标寄存器地址空间中的数据,同时保证了寄存器的数据的安全性和内存的数据的安全性。
以下对比本公开的地址空间的保护装置的附加方面进行详细的描述。
图6示出了根据本公开的至少一实施例的保护装置500的更详尽的结构示意图。
参见图6,保护装置500所包括的管理单元504可以包括第一访问控制模块610和第二访问控制模块620。
接收单元502还可以被配置为获取第一访问请求要访问的第一地址。
第一访问控制模块610可以被配置为:响应于第一地址位于目标内存地址空间,执行确定第一访问请求是否符合访问权限。
第二访问控制模块620可以被配置为:响应于第一地址位于目标寄存器地址空间,执行确定第一访问请求是否符合访问权限。
可以将第一保护控制模块设置在内存的入口处,并且可以将第二保护控制模块设置在APB master的出口处。如此,可以针对内存的地址空间和寄存器的地址空间实现分离响应。
图6仅示出了根据本公开的至少一实施例的保护装置500的更详尽的结构的示例,并且可以对图6所示各个单元或模块进行适当的组合或者包括其他合适的单元或模块,只要第一保护控制模块和第二保护控制模块可以分别对到内存地址空间的访问请求和到寄存器地址空间的访问请求进行响应。
在一些实施例中,第一保护控制模块可以包括用于第一保护控制模块的寄存器,并且第一保护控制模块被配置为使用第一保护控制模块的寄存器来设置对于目标内存地址空间的访问权限。另外,第二保护控制模块可以包括用于第二保护控制模块的寄存器,并且第二保护控制模块被配置为使用第二保护控制模块的寄存器来设置对于目标寄存器地址空间的访问权限。如此,可以通过第一保护控制模块的寄存器和第二保护控制模块的寄存器提供丰富设置安全地址空间的方式。
在一些实施例中,可以由安全处理器通过第一保护控制模块的寄存器(例如可以称为“第一寄存器”)来设置对于目标内存地址空间的访问权限。另外,可以由安全处理器通过第二保护控制模块的寄存器(例如可以称为“第二寄存器”)来设置对于目标寄存器地址空间的访问权限。如此,由安全处理器来设置目标内存地址空间的访问权限或目标寄存器地址空间的访问权限提高了访问权限的设置的安全性。
在一些实施例中,第一保护控制模块的寄存器和第二保护控制模块的寄存器还可以被设置为禁止写入。如此,可以进一步减小安全处理器意外修改第一保护控制模块的寄存器和第二保护控制模块的寄存器而造成的对访问权限的意外修改或删除的风险,提高了访问权限的设置的安全性。
在一些实施例中,地址空间可以包括非安全地址空间和作为安全地址空间的目标地址空间,确定第一访问请求是否符合对于目标地址空间的访问权限可以包括:响应于第一访问请求访问目标地址空间,判断第一访问请求来自安全处理器还是非安全处理器;并且响应于第一访问请求来自安全处理器,确定第一访问请求符合访问权限;以及响应于第一访问请求来自非安全处理器,确定第一访问请求不符合访问权限。如此,可以实现对访问请求的访问权限的检查,使得符合访问权限的访问请求可以访问相应的目标地址空间,保证了目标地址空间内数据的安全性。
在一些实施例中,管理单元还可以被配置为响应于第一访问请求访问非安全地址空间,通过第一访问请求。如此,使得安全处理器和非安全处理器可以直接访问非安全地址空间。
在一些实施例中,管理单元还可以被配置为响应于第一访问请求访问非安全地址空间,判断第一访问请求来自安全处理器还是非安全处理器;以及响应于第一访问请求来自安全处理器,阻塞第一访问请求。可以理解的是,通常,安全处理器可以对非安全地址空间中的数据进行访问,然而在一些情况下,存储在非安全地址空间中的数据可能是不安全的,这些数据存在攻击安全处理器的可能,因此阻塞安全处理器对非安全地址空间的访问请求可以降低安全处理器被攻击的概率。
在一些实施例中,管理单元还可以被配置为:响应于第一访问请求不符合访问权限,阻塞第一访问请求。因此,由非安全处理器发起的对该目标地址空间的访问请求将被认为是不符合对于该目标地址空间的访问权限,并且该访问请求将被阻塞。如此,可以阻塞访问请求对目标地址空间的非法访问,保证了目标地址空间的数据的安全性。
在一些实施例中,管理单元还可以被配置为:响应于阻塞第一访问请求,确定基于第一访问请求产生的第二访问请求是否符合访问权限。如此,通过由安全处理器代替非安全处理器发起第二访问请求,可以增加访问请求通过的概率,降低了对相关线程的执行的影响,并且由安全处理器代替非安全处理器访问目标地址空间保证了目标地址空间内的数据的安全性。
在一些实施例中,确定基于第一访问请求产生的第二访问请求是否符合访问权限可以包括:将第一访问请求发送到安全处理器,从安全处理器获取基于第一访问请求产生的第二访问请求;响应于第二访问请求符合访问权限,通过第二访问请求;或者响应于第二访问请求不符合访问权限,阻塞第二访问请求。如此,可以与第一访问请求类似地对第二访问请求的访问权限进行检查,防止第二访问权限直接访问到如目标地址空间的数据,保证了目标地址空间的数据的安全性。
在一些实施例中,管理单元还可以被配置为:获取第一访问请求要访问的第一地址;与确定第一访问请求是否符合访问权限并行地访问第一地址,并且基于第一访问请求是否符合访问权限确定是否继续对于第一地址的访问操作。如此,确定访问请求是否符合访问权限在获取与访问请求相关的数据并且执行,可以无需等到确定第一访问请求是否符合访问权限的结束后才执行获取读取的数据和要被写入的数据的操作,而是可以将获取读取的数据和要被写入的数据的操作和确定第一访问请求是否符合访问权限并行地执行,减小了第一访问请求访问目标地址空间的时间量,提高了访问请求的执行效率。
在一些实施例中,基于第一访问请求是否符合访问权限确定是否继续对于第一地址的访问操作可以包括:响应于第一访问请求不符合访问权限,取消对于第一地址已经进行的访问操作;或者响应于第一访问请求符合访问权限,允许对于第一地址已经进行的访问操作。如此,获取的访问请求相关的数据是否被利用,例如是否返回给处理器或者写入到相应的目标地址空间的数据,需要由访问权限的检查或确定的结果来控制,保证了目标地址空间的数据的安全性。
以上仅结合图5和图6描述了根据本公开的至少一实施例的地址空间的保护装置的部分,并且地址空间的保护装置的其余部分可以与本公开的空间地址的保护方法的各个方面相对应,并且根据本公开的至少一实施例的空间地址的保护方法的各个方面的效果同样可以映射到本公开的地址空间的保护装置,在此不在赘述。
下面通过图7和图8来描述根据本公开的空间地址的保护方法和保护装置的示例应用场景和数据访问流程。可以理解的是,图7和图8所示出的场景和数据访问流程仅是示例性的,而没有穷尽说明上述空间地址的保护方法和保护装置的各个方面。
图7示出了根据本公开的至少一实施例的示例应用场景示意图。
参见图7,应用场景700例如符合RISC-V规范的多核处理器,该多核处理器可以包括E21安全处理器706、U84非安全处理器708。除了多核处理器外,应用场景700还可以包括内存710、寄存器712(图中示出为包括UART、SPI、USB等)、以及MEM-PMP 702、IO-PMP 704。
MEM-PMP 702可以对应于上文描述的第一访问控制模块,IO-PMP 704可以对应于上述描述的第二访问控制模块。MEM-PMP 702和IO-PMP 704可以构成PMP,即参见本文图5描述的地址空间的保护装置500。
MEM-PMP 702和IO-PMP 704可以耦接各个处理器(例如E21安全处理器706、U84非安全处理器708)以及内存/寄存器(例如内存710、寄存器712),以响应处理器对内存和寄存器的地址空间的访问。具体地,MEM-PMP耦接处理器(E21安全处理器706和U84非安全处理器708)与内存710,用于响应到内存710的访问请求。IO-PMP 704耦接处理器(E21安全处理器706和U84非安全处理器708)与寄存器712,用于响应到寄存器712的访问请求。本文的响应可以包括接收访问请求以及确定访问请求是否符合访问权限等。
图7中虽然仅示出了单个组件(这些组件例如为E21安全处理器706、U84非安全处理器708、内存710、寄存器712、MEM-PMP 702、IO-PMP704),但是可以理解,可以根据需要设置其他合适数量的组件。例如,可以设置一个E21安全处理器706和多个U84非安全处理器708,以由E21安全处理器706执行对安全地址空间的访问以适用可信执行环境(TEE)并且由多个U84非安全处理器708执行对非安全地址空间的访问以适应丰富的执行环境(REE),如此使得应用场景700的架构更加符合实际的工控应用。
基于上述示例应用场景,下面描述由U84非安全处理器708读取安全内存地址空间的一个具体的示例。
E21通过设置MEM-PMP寄存器,将内存0-100M空间的访问权限设置为“安全读写”,其他空间设置为“非安全”,从而将内存地址空间设置为安全内存地址空间和非安全内存地址空间。将MEM-PMP设置为标准模式,因此E21可以访问内存所有空间的数据。
另外,从内存的非安全空间开辟一段共享内存,以便于后续的数据传输。
随后,U84发起访问请求以读取内存0-100M空间的数据:
a、数据总线先经过MEM-PMP检查,发现访问请求访问了安全内存地址空间的数据,报告错误信息,该访问请求被阻塞;
b、U84将要访问的数据地址信息保存在共享内存中;
c、U84向E21发送中断(核间中断);
d、E21收到中断,解析共享内存的数据(基于第一访问请求生成第二访问请求);
e、E21基于第二访问请求读取安全内存地址空间的数据,并且将其复制到共享内存;
f、E21向U84发送中断(核间中断);
g、U84收到中断,从共享内存读取数据。
下面描述由U84非安全处理器708写入安全内存地址空间的一个具体的示例。
E21通过设置MEM-PMP寄存器,将内存0-100M空间的访问权限设置为“安全读写”,其他空间设置为“非安全”,从而将内存地址空间设置为安全内存地址空间和非安全内存地址空间。将MEM-PMP设置为标准模式,因此E21可以访问内存所有空间的数据。
另外,从内存的非安全空间开辟一段共享内存,以便于后续的数据传输。
随后,U84发起访问请求以向内存0-100M空间写入数据:
a、数据总线先经过MEM-PMP检查,发现访问请求访问了安全内存地址空间的数据,报告错误信息,该访问请求被阻塞;
b、U84将要写入的数据和地址信息保存在共享内存中;
a、U84向E21发送中断(核间中断);
b、E21收到中断,解析共享内存的数据(基于第一访问请求生成第二访问请求)
c、E21将数据写入指定的内存,更新共享内存数据写入的状态(成功或者失败)
d、E21向U84发送中断(核间中断)
e、U84收到中断,数据写入结束。
上面描述的E21/U84经由MEM-PMP针对内存地址空间的读取和写入仅是示例性的,在MEM-PMP的架构下也可以通过其他合适的方式来访问到安全内存地址空间,并且也可以选择其他合适的处理器来替代E21和U84。另外,基于IO-PMP的读取/写入与基于MEM-PMP的读取/写入步骤相同或类似,本文不再赘述。
如此,可以通过安全处理器来代替非安全处理器访问安全地址空间的数据,例如安全内存地址空间的数据和安全寄存器地址空间的数据,而非安全处理器无法访问安全地址空间的数据,从而保证了安全地址空间的数据的安全性。
图8示出了根据本公开的至少一实施例的数据访问流程的示意图。图8所示的数据访问流程可以应用于基于本公开的至少一实施例的地址空间的保护装置而构建的架构中,例如应用于图7所示的示例应用场景中。
参见图8,安全处理器802和非安全处理器804可以发起对地址空间的访问请求806,根据本公开的至少一实施例的地址空间的保护装置500可以对访问请求请进行权限检查808,即确定访问请求是否符合目标地址空间的访问权限。当确定访问请求符合目标地址空间的访问权限(808的“是”分支),可以在810中继续该访问请求,从而完成安全处理器对目标地址空间的访问。
回到808,当确定访问请求不符合目标地址空间的访问权限(808的“否”分支),可以在812阻塞访问请求并确定是否结束访问请求。例如可以判断同一访问请求被阻塞的次数是否超过阈值,当同一访问请求被阻塞的次数超过阈值,可以结束该访问请求。本公开不以此为限,也可以根据实际的使用需要设置其他确定是否结束访问请求的方法。
在812中,响应于需要结束访问请求(812的“是”分支),在814可以结束该访问请求。响应于不结束访问请求(814的“否”分支),在816可以向安全处理器申请,进而由安全处理器代为基于该访问请求进行访问。
可以理解的是,812中判断是否结束访问请求是可选的。例如,在一些情况下,当确定访问请求不符合目标地址空间的访问权限(808的“否”分支)之后,可以阻塞该访问并直接进行到814以结束访问请求。又例如,在一些情况下,当确定访问请求不符合目标地址空间的访问权限(808的“否”分支)之后,可以阻塞该访问并直接进行到816以向安全处理器申请,以由安全处理器代为基于该访问请求进行访问。
另外,图8所示的权限检查可以仅为到安全地址空间的访问请求的访问权限的检查。当访问请求是例如非安全处理器发起的到非安全地址空间的访问请求时,非安全处理器可以直接访问非安全地址空间(例如上文所述的步骤S302的“否”分支),因此,虽然未示出,但可以存在继续访问请求810到非安全处理器804的数据流。
可以理解的是,根据实际需要,除了包括图8所示的权限检查808之外,本公开的地址空间的保护装置还可以包括图8所示的各个单元或模块的部分全部,本公开不以此为限。
图9是本公开至少一个实施例提供的一种电子设备的示意图。如图9所示,电子设备900包括处理器910和存储器920。存储器920包括一个或多个计算机程序模块921。一个或多个计算机程序模块921被存储在存储器920中并被配置为由处理器910执行,该一个或多个计算机程序模块921包括用于执行本公开的至少一个实施例提供的地址空间的保护方法的指令,其被处理器910执行时,可以执行本公开的至少一个实施例提供的地址空间的保护方法及其附加方面的一个或多个步骤。存储器920和处理器910可以通过总线系统和/或其他形式的连接机构(未示出)互连。
例如,处理器910可以是中央处理单元(CPU)、数字信号处理器(DSP)或者具有数据处理能力和/或程序执行能力的其他形式的处理单元,例如现场可编程门阵列(FPGA)等;例如,中央处理单元(CPU)可以为X86或ARM架构、RISC-V架构等。处理器910可以为通用处理器或专用处理器,可以控制电子设备900中的其他组件以执行期望的功能。
例如,存储器920可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块921,处理器910可以运行一个或多个计算机程序模块921,以实现电子设备9的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。该电子设备9例如可以是片上系统(SOC)或者包括该SOC的计算机、电视、显示器等。该电子设备9的具体功能和技术效果可以参考上文中关于地址空间的保护方法及其附加方面的描述,此处不再赘述。
图10为本公开至少一个实施例提供的另一种电子设备400的示意图。该电子设备400例如适于用来实施本公开的至少一实施例提供的地址空间的保护方法及其附加方面。需要注意的是,图10示出的电子设备1000仅仅是一个示例,其不会对本公开的至少一实施例的功能和使用范围带来任何限制。
如图10所示,电子设备1000可以包括处理装置(例如中央处理器、图形处理器等)1010,其可以根据存储在只读存储器(ROM)1020中的程序或者从存储装置1080加载到随机访问存储器(RAM)1030中的程序而执行各种适当的动作和处理。在RAM 1030中,还存储有电子设备1000操作所需的各种程序和数据。处理装置1010、ROM 1020以及RAM 1030通过总线1040彼此相连。输入/输出(I/O)接口1050也连接至总线1040。
通常,以下装置可以连接至I/O接口1050:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置460;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置1070;包括例如磁带、硬盘等的存储装置1080;以及通信装置1090。通信装置1090可以允许电子设备1000与其他电子设备进行无线或有线通信以交换数据。虽然图10示出了具有各种装置的电子设备1000,但应理解的是,并不要求实施或具备所有示出的装置,电子设备1000可以替代地实施或具备更多或更少的装置。
例如,本公开的至少一实施例提供的地址空间的保护方法及其附加方面可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述地址空间的保护方法及其附加方面的程序代码。在这样的实施例中,该计算机程序可以通过通信装置1090从网络上被下载和安装,或者从存储装置1080安装,或者从ROM 1020安装。在该计算机程序被处理装置410执行时,可以执行本公开的至少一实施例提供的地址空间的保护方法及其附加方面。
本公开的至少一实施例还提供一种非瞬时可读存储介质。图11是根据本公开至少一个实施例的一种非瞬时可读存储介质的示意图。如图11所示,非瞬时可读存储介质1100上存储有计算机指令1110,该计算机指令1110被处理器执行时执行如上所述的地址空间的保护方法及其附加方面中的一个或多个步骤。
例如,该非瞬时可读存储介质1100可以是一个或多个计算机可读存储介质的任意组合,例如,一个计算机可读存储介质包含用于接收第一访问请求的计算机可读的程序代码,另一个计算机可读存储介质包含用于确定第一访问请求是否符合对于目标地址空间的访问权限的计算机可读的程序代码,另一个计算机可读存储介质包含用于响应于第一访问请求符合访问权限,通过第一访问请求的计算机可读的程序代码。当然,上述各个程序代码也可以存储在同一个计算机可读介质中,本公开的实施例对此不作限制。
例如,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行例如本公开任一个实施例提供的地址空间的保护方法及其附加方面。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
在上文的详细描述中,出于解释而非限制的目的,阐述了具体细节,以便提供对本公开中描述的各个方面和实施例的透彻理解。在一些情况下,省略了对众所周知的设备、组件、电路和方法的详细描述,以免用不必要的细节来模糊本文公开的实施例的描述。本文列举本文公开的原理、方面和实施例的所有声明,以及其具体示例,旨在涵盖其结构等同物和功能等同物两者。另外,这种等同物旨在包括当前已知的等同物以及将来开发的等同物,即,开发的执行相同功能的任何元件,而不管结构如何。因此,例如,可以理解,本文的框图可以表示体现所描述的实施例的原理的说明性电路系统或其他功能单元的概念图。类似地,可以理解,任何流程图等表示各种过程,这些过程可以基本上在计算机可读存储介质中表示,并且由计算机或处理器执行,无论是否明确示出了这样的计算机或处理器。包括功能块的各种元件的功能可以通过使用硬件(诸如电路硬件和/或能够以存储在上述计算机可读存储介质上的编码指令的形式执行软件的硬件)来提供。因此,这样的功能和所示的功能块将被理解为是硬件实施的和/或计算机实施的,因此是机器实施的。就硬件实施方式而言,功能块可以包括或涵盖但不限于数字信号处理器(digital signal processor,DSP)硬件、精简指令集处理器、硬件(例如,数字或模拟)电路系统,包括但不限于(多个)专用集成电路(application specific integrated circuit,ASIC)和/或(多个)现场可编程门阵列(field programmable gate array,FPGA),以及(在适当的情况下)能够执行这些功能的状态机。就计算机实施方式而言,计算机通常被理解为包括一个或多个处理器或一个或多个控制器。当由计算机或处理器或控制器提供时,功能可以由单个专用计算机或处理器或控制器、单个共享计算机或处理器或控制器、或多个单独的计算机或处理器或控制器提供,其中一些可以是共享的或分布式的。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,该模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框/操作中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框/操作实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框/操作、以及框图和/或流程图中的方框/操作的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本公开的至少一实施例的所描述的至少一项功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一个计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例的方法的全部或部分操作。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM)、随机存取存储器(RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一、第二等的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且进一步包括没有明确列出的其他要素,或者是进一步包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。