首页 / 专利库 / 电脑零配件 / 固件 / 软件 / 数据处理设备和方法

数据处理设备和方法

阅读:193发布:2021-06-05

专利汇可以提供数据处理设备和方法专利检索,专利查询,专利分析的服务。并且一种 数据处理 设备(2)具有内存属性单元(7),该内存属性单元具有储存区域(9),该储存区域用于储存属性数据以便藉由处理 电路 (4)控制对对应内存地址范围的存取。响应于目标内存地址,处理电路(4)可执行区域辨识操作以输出区域辨识值,该值辨识属性单元(7)的储存区域(9)中的何者对应于目标内存地址。区域辨识值可用于藉由数据处理设备(2)所执行的至少一些 软件 。此可用于迅速检查一系列地址的存取 许可 或用于决定如何更新内存属性单元。,下面是数据处理设备和方法专利的具体信息内容。

1.一种数据处理设备,该数据处理设备包含:
处理电路,被配置为执行数据处理;
内存属性单元,包含多个储存区域,每一储存区域被配置为储存属性数据以便藉由所述处理电路控制对对应内存地址范围的存取;并且
其中响应于目标内存地址,所述处理电路被配置为执行区域辨识操作以确定所述内存属性单元的所述多个储存区域中的何者是匹配储存区域,针对所述匹配储存区域,所述对应内存地址范围包括所述目标内存地址,并且输出区域辨识值,所述区域辨识值辨识所述内存属性单元的所述多个储存区域中的何者是所述目标内存地址的所述匹配储存区域,其中所述目标内存地址是实体地址并且所述区域辨识值适用于藉由所述数据处理设备所执行的至少一些软件
2.如权利要求1所述的数据处理设备,其中所述处理电路被配置为响应于指定所述目标内存地址的区域辨识指令执行所述区域辨识操作。
3.如权利要求1所述的数据处理设备,其中所述处理电路被配置为响应于对预定缓存器写入值的指令执行所述区域辨识操作。
4.如权利要求3所述的数据处理设备,其中写入到所述预定缓存器中的所述值是所述目标内存地址。
5.如在前权利要求中的任一项所述的数据处理设备,其中所述处理电路被配置为在以下情况下输出无效区域辨识值:
(a)禁用所述内存属性单元;或
(b)所述目标内存地址不对应于所述多个储存 区域中的任何者;或
(c)所述目标内存地址对应于所述多个储存 区域中的两者或多者;或
(d)所述目标内存地址对应于启用的所述多个储存 区域中的两者或多者;或(e)所述目标内存地址不对应于启用的所述多个储存 区域中的任何者;或(f)当所述处理电路处于具有不充分安全特权的操作模式中时,执行所述区域辨识操作来决定所述区域辨识值。
6.如权利要求5所述的数据处理设备,其中所述无效区域辨识值包含预定值,该预定值并不表示所述多个储存区域之一。
7.如权利要求5所述的数据处理设备,其中所述无效区域辨识值包含与有效性旗标关联的区域辨识值,该有效性旗标指示该区域辨识值是否有效。
8.如权利要求1-4中的任一项所述的数据处理设备,其中在所述区域辨识操作中,所述处理电路被配置为输出额外信息,该额外信息包含以下的至少一者:
(a)储存于所述对应储存区域中的属性数据中的至少一些;
(b)来源于储存于所述匹配储存区域中的属性数据中的至少一些的信息;
(c)安全状态的指示,该安全状态与所述匹配储存区域的所述内存地址范围关联;
(d)对应于所述匹配储存区域的所述内存地址范围的起始地址的值;
(e)对应于所述匹配储存区域的所述内存地址范围的结束地址的值;以及(f)对应于所述匹配储存区域的所述内存地址范围的大小的值。
9.如权利要求1-4中的任一项所述的数据处理设备,其中在所述区域辨识操作中,所述处理电路被配置为将所述区域辨识值写入到目的地缓存器的至少一部分中。
10.如权利要求1-4中的任一项所述的数据处理设备,其中所述区域辨识值包含所述匹配储存区域的区域编号。
11.如权利要求10所述的数据处理设备,其中在所述区域辨识操作中,所述处理电路被配置为控制所述内存属性单元基于所述多个储存区域中的何者为所述匹配储存区域而产生所述区域编号。
12.如权利要求10所述的数据处理设备,其中所述内存属性单元的每一储存区域被配置为储存该储存区域的该区域编号;并且
在所述区域辨识操作中,所述处理电路被配置为控制所述内存属性单元自所述匹配储存区域输出所述区域编号。
13.如权利要求1-4中的任一项所述的数据处理设备,其中所述内存属性单元为第一内存属性单元,该第一内存属性单元包含多个第一储存区域,每一第一储存区域被配置为储存第一属性数据以便控制对对应的第一内存地址范围的存取;
所述数据处理设备包含第二内存属性单元,该第二内存属性单元包含多个第二储存区域,每一第二储存区域被配置为储存第二属性数据以便控制对对应第二内存地址范围的存取;并且
在所述区域辨识操作中,所述处理电路被配置为输出第一区域辨识值和第二区域辨识值,所述第一区域辨识值用于辨识所述多个第一储存区域中的何者是由对应于包括所述目标内存地址的第一内存地址范围的所述第一内存属性单元所指示的对应第一储存区域,所述第二区域辨识值用于辨识所述多个第二储存区域中的何者是由对应于包括所述目标内存地址的第二内存地址范围的所述第二内存属性单元所指示的对应第二储存区域。
14.如权利要求13所述的数据处理设备,其中在所述区域辨识操作中,所述处理电路被配置为使用储存于所述对应第一储存区域中的第一属性数据的至少一部分及储存于所述对应第二储存区域中的第二属性数据的至少一部分输出组合属性参数。
15.如权利要求1至4中的任一项所述的数据处理设备,其中所述处理电路具有多个操作域,这些域包括安全域及较不安全域,且当在所述安全域中操作所述处理电路时,所述处理电路能够存取至少一些数据,该至少一些数据是在所述较不安全域中操作所述处理电路时所不可存取的。
16.如权利要求15所述的数据处理设备,其中所述内存属性单元包含安全保护单元并且所述处理电路被配置为使用该安全保护单元的属性数据决定所述多个操作域中的何者与指定内存地址关联;并且
当在所述较不安全域中操作所述处理电路时,与所述安全域关联的内存地址对所述处理电路而言为不可存取。
17.如权利要求15所述的数据处理设备,其中若当在所述较不安全域中操作所述处理电路时执行所述区域辨识操作,则所述处理电路被配置为抑制辨识所述内存属性单元的所述匹配储存区域的所述区域辨识值的输出。
18.如权利要求15项所述的数据处理设备,进一步包含:
(i)安全内存保护单元,该安全内存保护单元被配置为储存属性数据以便当在所述安全域中操作时藉由所述处理电路控制对内存地址范围的存取;以及
(ii)较不安全内存保护单元,该较不安全内存保护单元被配为储存属性数据以便当在所述较不安全域中操作时藉由所述处理电路控制对内存地址范围的存取;
其中当在所述较不安全域中操作时所述安全内存保护单元对该处理电路为不可存取。
19.如权利要求18所述的数据处理设备,其中所述区域辨识操作选择所述安全内存保护单元及所述较不安全内存保护单元的选定内存保护单元;并且
在所述区域辨识操作中,所述处理电路被配置为输出区域辨识值,该值辨识所述多个储存区域中的何者由对应于包括所述目标内存地址的内存地址范围的所述选定内存保护单元指示。
20.如权利要求19所述的数据处理设备,其中若当在所述较不安全域中操作处理操作时执行所述区域辨识操作,且所述区域辨识操作选择所述安全内存保护单元作为所述选定内存保护单元,则所述处理电路被配置为抑制辨识所述安全内存保护单元的所述匹配储存区域的所述区域辨识值的输出。
21.一种数据处理设备,该数据处理设备包含:
处理装置,用于执行数据处理;以及
内存属性储存装置,包含多个储存区域装置,该多个储存区域装置用于储存属性数据以便藉由所述处理装置控制对对应内存地址范围的存取;
其中响应于目标内存地址,所述处理装置被配置为执行区域辨识操作以确定所述内存属性储存装置的所述多个储存区域装置中的何者是匹配储存区域装置,针对所述匹配储存区域装置,所述对应内存地址范围包括所述目标内存地址,并且输出区域辨识值,所述区域辨识值辨识所述内存属性储存装置的所述多个储存区域装置中的何者是所述目标内存地址的所述匹配储存区域装置,其中所述目标内存地址是实体地址且所述区域辨识值适用于藉由所述数据处理设备所执行的至少一些软件。
22.一种用于数据处理设备的数据处理方法,该数据处理设备包含内存属性单元,该内存属性单元包含多个储存区域,每一储存区域被配置为储存属性数据以便藉由处理电路控制对对应内存地址范围的存取;该方法包含以下步骤:
响应于目标内存地址,执行区域辨识操作;
所述区域辨识操作包含以下步骤:
决定所述内存属性单元的所述多个储存区域中的何者是匹配储存区域,针对所述匹配储存区域,所述对应内存地址范围包括所述目标内存地址;以及
输出区域辨识值,所述区域辨识值辨识所述内存属性单元的所述多个储存区域中的何者是所述匹配储存区域,其中所述目标内存地址是实体地址且所述区域辨识值适用于藉由所述数据处理设备所执行的至少一些软件。
23.如权利要求22所述的数据处理方法,其中所述处理电路具有多个操作域,该多个操作域包括安全域及较不安全域,且当在所述安全域中操作所述处理电路时,所述处理电路能够存取至少一些数据,该至少一些数据是在所述较不安全域中操作所述处理电路时所不可存取的;以及
作为在所述安全域中所执行的函数的部分,使用由所述较不安全域中执行的代码所设置的一个或多个内存地址执行所述区域辨识操作,其中所述区域辨识操作的所述目标内存地址包含所述一个或多个内存地址之一。

说明书全文

数据处理设备和方法

技术领域

[0001] 本技术涉及数据处理领域。更具体地,本技术涉及一种具有内存属性单元的数据处理设备,该内存属性单元用于储存属性数据以便控制对内存的存取。

背景技术

[0002] 数据处理设备可具有内存属性单元(诸如内存保护单元),该内存属性单元用于储存属性数据以便藉由处理电路控制对对应内存地址范围的存取。当需要内存存取时,则内存属性单元查找对应于包括目标地址的地址范围的属性数据,且若存在命中,则基于属性数据决定是否容许读取或写入存取。附图说明
[0003] 图1示意性示出数据处理设备的实例;
[0004] 图2示出用于储存内存地址空间的对应地址范围的属性数据的内存属性单元;
[0005] 图3图示数据处理设备的更详细实例;
[0006] 图4图示与图3的实例一起使用的内存地址空间的实例;
[0007] 图5示出图3所示的处理设备的不同安全状态的实例;
[0008] 图6图示区域辨识指令的示例性编码;
[0009] 图7图示区域辨识指令的示例性结果;
[0010] 图8示出具有用于产生区域编号的逻辑的内存属性单元的实例,该区域编号辨识对应目标地址的区域;
[0011] 图9A图示藉由向预定缓存器写入目标地址触发区域辨识操作的实例;
[0012] 图9B图示在不同域中提供不同预定缓存器以便触发对于内存属性单元的区域辨识操作的实例;
[0013] 图10图示使用自较不安全域传递的地址的安全域中的函数的实例;
[0014] 图11图示可取决于自较不安全域传递的地址跨越哪些内存属性区域而发生的问题的实例;
[0015] 图12图示使用区域辨识操作检查可安全执行安全域中的函数的实例;
[0016] 图13图示可使用区域辨识操作加速新库的启动的实例;以及
[0017] 图14是示出执行区域辨识操作的方法的流程图

具体实施方式

[0018] 从一方面看,本技术提供一种数据处理设备,该数据处理设备包含:
[0019] 处理电路,被配置为执行数据处理;
[0020] 内存属性单元,包含多个储存区域,每一储存区域被配置为储存属性数据以便藉由处理电路控制对对应内存地址范围的存取;并且
[0021] 其中响应于目标内存地址,处理电路被配置为执行区域辨识操作以输出区域辨识值,该值用于辨识多个储存区域中的何者是由对应于包括所述目标内存地址的内存地址范围的内存属性单元所指示的对应储存区域,其中目标内存地址是实体地址并且区域辨识值适用于藉由数据处理设备所执行的至少一些软件
[0022] 本技术认识到,在有些情形中处理电路执行区域辨识操作以输出区域辨识值是有用的,该值辨识内存属性单元的储存区域中的何者对应于指定目标地址,以便使得区域辨识值可用于由数据处理设备执行的至少一些软件。此为不寻常的,因为当在内存属性单元中查找目标内存地址时通常仅将获得属性数据本身。哪一储存区域映射至特定目标地址通常并不着重考虑,因为可在任一储存区域中置放给定地址的属性数据。然而,本技术认识到,区域辨识操作可帮助例如加速检查对于一系列地址的存取许可。在没有区域辨识操作情况下,检查容许对整个范围的地址的存取将需要检查对于该范围内的每一个别地址的许可。然而,通过使得区域辨识值可用于软件,检查哪一储存区域与该范围的起始地址及结束地址关联来查看两者是否皆与相同储存区域相关是可能的。若皆与相同储存区域相关,则对于整个范围的地址的存取许可为相同,且因此不必检查对于每一个别地址的许可,从而增加效能及减少功率消耗。即使起始地址与结束地址并不相同,区域辨识操作可用于决定存取许可变化的点,以便减少检查次数。如下文将论述,区域辨识操作亦可帮助在更新内存属性单元时引进新上下文、程序或库的属性。
[0023] 目标内存地址为实体地址,此意谓内存属性单元将连续目标内存地址映射至处理电路与内存之间边界处的连续内存地址(换言之,连续目标内存地址映射至输出到内存的连续地址)。在许多情况中,输出到内存的地址可为与对应目标地址相同的地址。然而,内存属性单元亦可能应用简单映射,诸如添加常数至自处理电路所接收的所有目标地址以产生输出到内存的地址,且此情况亦考虑使用实体目标地址。此与内存管理单元完全不同,该内存管理单元提供自处理器所指定的虚拟目标地址至输出到内存的实体地址的任意地址变换。在内存管理单元中,可将连续目标地址映射至输出到内存的非连续地址。本技术的区域辨识操作对于内存管理单元而言并不那么有用,因为通常在内存地址的页面粒度下实施地址变换,该页面粒度倾向于相对较小(例如,4K地址),且因此单个程序或程式可使用对应于许多不同页面的地址。此意谓区域辨识操作可用于减少如上文所论述的所需检查的量的可能性更小,因为通常起始地址及结束地址将对应于内存管理单元的不同页面,即便是起始地址及结束地址与相同程序相关。与此相反,在内存属性单元使用实体地址作为目标地址的情况下,对应于内存属性单元的单个储存区域的地址范围倾向于比内存管理单元的地址范围更大,且由单个程序所使用的地址范围的整体通常将对应于单个储存区域。因此,区域辨识操作发现起始地址及结束地址与相同储存区域关联的可能性更大,以允许减少如上文所论述的检查。
[0024] 可以不同方式触发区域辨识操作。举例而言,可提供专用区域辨识指令,该指令指定目标内存地址。程序设计师可在代码中包括区域辨识指令以触发处理电路执行区域辨识操作及输出区域辨识值。
[0025] 或者,可不存在专用区域辨识指令。实情为,可提供预定缓存器,当用目标内存地址写入时,该预定缓存器触发处理电路执行区域辨识操作以辨识与目标内存地址关联的区域。举例而言,通用储存或移动指令可用于将目标内存地址写入到预定缓存器中。
[0026] 区域辨识操作不必总是回传有效区域辨识值。可存在各种情形,其中可输出无效区域辨识值。举例而言,若存在以下情况,则可输出无效区域辨识值:
[0027] (a)禁用内存属性单元;或
[0028] (b)目标内存地址不对应于多个区域中的任何者;或
[0029] (c)目标内存地址对应于多个区域中的两者或更多者;
[0030] (d)目标内存地址对应于启用的多个区域中的两者或更多者;或
[0031] (e)目标内存地址不对应于启用的多个区域中的任何者;或
[0032] (f)当处理电路处于具有不充分安全特权的操作模式中时,执行区域辨识操作来决定区域辨识值。
[0033] 给定数据处理设备不必应用所有这些标准及可应用这些标准中的任一或更多者来侦测是否应输出无效区域辨识值。
[0034] 可以不同方式表示无效区域辨识值。在一个实例中,可使用预定值表示无效区域辨识值,该预定值并不表示内存属性单元的真实储存区域。举例而言,若使用0与正整数之间的数字表示内存属性单元的储存区域,则可使用负值(例如,-1)指示无效区域辨识值。或者,可使用无效旗标表示无效区域辨识值,该无效旗标与区域辨识值一起输出且被设置为一值,该值指示该关联的区域辨识值为无效的。在此情况中,则区域辨识值可具有一值(例如,零),该值原本将发送信号告知内存属性单元的真实区域,但该值由无效旗标指示为不表示有效区域。
[0035] 关于上文情况(f),在一些情形中,可能不希望与给定地址关联的储存区域变得可被用户或程序使用,因此若在处于具有不充分安全特权的状态下时执行区域辨识操作来决定区域辨识值,则可能会输出无效区域辨识值。在使用与区域辨识值一起输出的无效旗标表示无效值的情况中,将对应区域辨识值设置为预定值(例如,零)可用于防止具有不充分安全特权的程序自区域辨识值获得信息。举例而言,在具有安全状态及较不安全状态的系统中,可需要防止较不安全状态下的代码存取安全状态下所使用的关于内存属性单元的储存区域的信息,因为攻击者可使用此信息决定关于由安全状态所使用的地址映射的信息,该信息可用于辅助攻击。通过防止有效区域辨识值在较不安全状态下被回传,可维持安全性。
[0036] 当执行区域辨识操作时,处理电路亦可输出额外信息以及区域辨识值。举例而言,此额外信息可包含以下的任意一者或更多者:
[0037] ·储存于对应储存区域中的属性数据中的至少一些,
[0038] ·来源于储存于对应储存区域中的属性数据中的至少一些的信息,[0039] ·安全状态的指示,该安全状态与对应储存区域的内存地址范围关联,或[0040] ·对应于对应储存区域的内存地址范围的起始地址及/或结束地址的值。
[0041] 在执行区域辨识操作的情形中,通常亦需要检查关于目标地址的额外信息,诸如此地址的属性数据或安全状态,且因此藉由响应于区域辨识操作输出此额外信息,此举移除了执行独立操作来检查额外信息的需要。内存属性单元的硬件可在任何情况下响应于查找回传额外信息,且因此可需要对硬件实行极少修改,以便延伸区域辨识操作以输出额外信息。
[0042] 在内存地址范围的起始地址及/或结束地址的情况中,额外信息不必明确表示这些起始地址或结束地址。可使用可用于衍生起始地址或结束地址的任何值。举例而言,若其属性被界定的内存地址范围必须与两个地址边界的n次幂对准,则可使用2的n次幂的倍数表示地址,而不是地址值本身。此外,可使用一值表示结束地址,该值表示结束地址相对于起始地址或地址范围的总大小的偏移,且类似地亦可将该偏移表示为2的n次幂。
[0043] 可藉由处理电路将由区域辨识操作输出的区域辨识值写入到目的地缓存器的至少一部分中。因此,区域辨识值可变得可由后续指令使用。不常用这种方式使得区域辨识值对程序设计师可用,因为程序设计师通常仅关心与给定地址相对应的属性数据,并且不关心哪些储存区域存储地址的属性数据。可藉由上文所论及的区域辨识指令指定目的地缓存器,或目的地缓存器可为处理电路应写入区域辨识值的默认缓存器。亦可将诸如上文所描述的无效旗标或额外信息以及区域辨识值写入到目的地缓存器中。
[0044] 可以不同方式表示区域辨识值。在一个实例中,区域辨识值可包含对应储存区域的区域编号。可以不同方式产生区域编号。在一个实例中,内存属性单元可响应于对于目标地址的查找而产生区域编号。针对执行正常内存属性查找来发现给定地址的属性数据,内存属性单元通常将具有用于比较目标地址与每一区域的地址范围的比较器,且因此可使用由这些比较器产生的命中信号衍生区域编号。或者,每一储存区域可储存辨识彼区域的区域编号。在此情况中,当执行区域辨识操作时,处理电路可控制内存属性单元从对应储存区域中获得区域编号并且处理电路随后输出该区域编号。
[0045] 区域辨识值亦可为另一参数,该参数指示与给定地址关联的储存区域。举例而言,若对应于内存属性单元的不同区域的内存地址范围并未重迭,则如藉由处理电路查看的,每一内存地址范围的起始地址或结束地址可辨识储存彼范围的属性数据的储存区域。
[0046] 内存属性单元可包含储存属性数据的任何单元,这些属性数据控制处理电路执行对于给定内存地址的内存存取的能。举例而言,内存属性单元可用于加强更安全状态与较不安全状态之间的边界,或用于将某些地址范围设置成对某些软件而言为不可存取(例如,可不允许应用程序软件存取与操作系统或超管理器关联的地址范围)。
[0047] 在一些情况中,处理设备内可存在超过一种类型的内存属性单元。若如此,则可需要辨识第一内存属性单元内的哪个区域对应于一目标地址及第二内存属性单元内的哪个区域对应于该目标地址。为了加速此类型操作,区域辨识操作可输出对应于第一内存属性单元的第一辨识值及对应于第二内存属性单元的第二区域辨识值两者。举例而言,单个区域辨识指令可回传两个(或更多个)不同区域辨识值,使得不必执行两个独立指令,从而加速处理。
[0048] 在区域辨识操作辨识两个或更多个内存属性单元的对应区域的情况中,区域辨识操作亦使用储存于第一内存属性单元的对应第一储存区域中的第一属性数据的至少一部分及储存于第二内存属性单元的对应第二储存区域中的第二属性数据的至少一部分决定组合属性参数可为非常有用的。举例而言,第一内存属性单元及第二内存属性单元可设置用于存取给定内存地址的不同条件,且因此为了决定是否允许一存取,可需要考虑两个内存属性单元中的属性数据。藉由使用来自相应内存属性单元中的属性数据衍生组合属性参数作为区域辨识操作中的一部分,此举可减少检查是否允许内存存取所需要的指令数量。举例而言,在一些指令集中,存在可相对容易地检查缓存器内的单个位是否具有所需值的指令,但检查两个或更多个位是否具有所需值可更为复杂且需要若干指令。区域辨识操作可用于将来自第一内存属性单元及第二内存属性单元的两条或更多条信息减少至单个位,使得可使用较少指令迅速且有效率地检查两个单元中的存取许可。
[0049] 本技术在具有处理电路的系统中特别有用,该处理电路具有多个操作域,这些域包括至少一安全域及一较不安全域。当在安全域中操作处理电路时,处理电路存取在较不安全域中操作处理电路时所不可存取的至少一些数据。内存属性单元可用于决定哪些地址仅在安全域中可存取及哪些地址在安全域及较不安全域两者中皆可存取。藉由使用区域辨识操作,可迅速检查一系列地址是否全部与相同储存区域相关,从而避免需要个别地检查每一地址的存取属性,且因此加速处理及减少功率消耗。
[0050] 安全域及较不安全域可具有各种形式。在一个实例中,安全域可对应于特权状态,其中可执行诸如操作系统供应的特权代码,且较不安全域可对应于无特权状态,其中执行诸如应用程序软件的无特权代码。然而,在其他系统中,可存在相同装置上执行的两个或更多个“世界”之间的完全分隔,其中安全域对应于执行安全临界代码(诸如行应用程序)或保险临界代码的私密域,且较不安全域对应于执行非安全临界代码的公众域。在一些实施例中,私密域及公众域可不具有彼域内的子状态,诸如上文所描述的无特权状态及特权状态。大体而言,针对更安全状态与较不安全状态之间任何边界,可使用内存属性单元加强该边界,且本技术可用于检查内存属性单元的哪个区域属于给定目标地址,使得若一对地址与相同区域相关,则可决定任何介入地址将亦具有相同属性数据。
[0051] 在一个实例中,内存属性单元可包含安全保护单元,该安全保护单元用于决定多个域中的何者与指定内存地址关联。可以不同方式实施安全保护单元。可能储存包括安全旗标的属性数据,该安全旗标指定对应地址范围与安全域相关还是与较不安全域相关。或者,对于域中的至少一者,藉由假定安全保护单元中不存在其属性数据的任何地址范围与彼域关联,可在安全保护单元中隐含地辨识与彼域关联的地址范围。因此,不必在安全保护单元中储存地址空间中的所有地址的属性数据。举例而言,安全保护单元可包括界定对应于安全域的地址范围的数据,且若在安全保护单元中缺失目标地址,则可假定该地址与较不安全域关联(或反之亦然)。若存在两个以上域,则可在安全保护单元中指示与除这些域之一以外的所有域皆关联的地址范围且安全保护单元中缺失的地址可被假定为对应于剩余域。
[0052] 在一些实施例中,安全保护单元亦可用于决定是否在原本所在的安全域或较不安全域中操作,例如假定应在安全域中执行储存于安全地址范围中的指令及应在较不安全域中执行储存于较不安全地址范围中的指令。在一些实例中,安全保护单元不必界定除与地址范围关联的安全或较不安全状态以外的任何其他存取许可。
[0053] 可不希望允许较不安全域中执行的代码决定安全保护单元的哪些区域对应于哪些地址。攻击者可能够使用此信息引发安全违规。为了解决此问题,当在较不安全域中操作处理电路时,处理电路可防止区域辨识操作被成功执行。大体而言,若在处于较不安全域中的同时执行区域辨识操作,处理电路可抑制针对安全保护单元的区域辨识值的输出。可以不同方式实现此举。举例而言,若在处于较不安全域中的同时尝试区域辨识操作,处理电路可输出如上文所论述的无效区域辨识值,或可触发错误或故障。即使并未输出与安全保护单元关联的区域辨识值,若对于数据处理设备的当前状态容许此举,则仍可输出另一内存属性单元的区域辨识值。
[0054] 内存属性单元的另一形式为内存保护单元(memory protection unit;MPU),该内存保护单元储存诸如读取或写入许可的属性数据以便控制对内存地址范围的存取。在包含MPU及如上文所论述的安全域及较不安全域的系统中,则可提供对应于不同域的多个MPU。举例而言,当在安全域操作时,安全MPU可储存用于控制对地址范围的存取的属性数据,且当在较不安全域中操作时,可使用对应的较不安全MPU,及可防止较不安全代码存取安全MPU。尽管在一些实施例中安全MPU与较不安全MPU可为完全独立,但相应的MPU亦可能共享一些电路。举例而言,若在某一时间处预期安全MPU及较不安全MPU的仅一者为主动,则尽管可提供不同储存区域用于储存这些单元的属性数据,但在MPU之间可共享比较器的公共集合以便将目标地址与每一储存区域中所界定的地址范围进行比较。
[0055] 因此,可存在安全保护单元及一个或更多个MPU两者。在一个实例中,区域辨识操作可输出如上文所论述的第一区域辨识值及第二区域辨识值两者,其中第一值对应于安全保护单元且第二值对应于MPU中的一者。
[0056] 在存在多个MPU的情况中,则区域辨识操作亦可选择应使用MPU中的何者决定区域辨识值。举例而言,此可藉由指定区域辨识指令中的参数来实现,该参数指示应存取安全MPU及较不安全MPU中的何者来决定对应区域。或者,在对专用缓存器的写入触发区域辨识操作的情况中,则可由用户藉由在缓存器中置放旗标或藉由提供对应于不同MPU的不同专用缓存器选择选定MPU,使得选择用目标地址写入哪个缓存器决定存取哪个MPU。以此方式,使用者可控制MPU中的何者被询问以决定哪个区域对应于目标地址。
[0057] 当处于较不安全域中时,使用者能够找出安全MPU的哪个区域对应于给定地址可能是不恰当的。若在较不安全域中操作处理器的同时区域辨识操作试图选择安全MPU作为选定MPU,则可抑制辨识安全MPU的储存区域的区域辨识值的输出。如上文所论述的,此可以不同方式实现,诸如藉由输出无效值或发送信号告知错误或故障。
[0058] 从另一方面看,本技术提供一种数据处理设备,该数据处理设备包含:
[0059] 处理装置,用于执行数据处理;以及
[0060] 内存属性储存装置,包含多个储存区域装置,该多个储存区域装置用于储存属性数据以便藉由处理装置控制对对应内存地址范围的存取;
[0061] 其中响应于目标内存地址,处理装置被配置为执行区域辨识操作以输出区域辨识值,该值用于辨识多个储存区域装置中的何者是由对应于包含目标内存地址的内存地址范围的存属性储存装置所指示的对应储存区域装置,其中目标内存地址是实体地址且区域辨识值适用于藉由数据处理设备所执行的至少一些软件。
[0062] 从另一方面看,本技术提供一种用于数据处理设备的数据处理方法,该数据处理设备包含内存属性单元,该内存属性单元包含多个储存区域,每一储存区域被配置为储存属性数据以便藉由处理电路控制对对应内存地址范围的存取;该方法包含以下步骤:
[0063] 响应于目标内存地址,执行区域辨识操作;该区域辨识操作包含以下步骤:
[0064] 决定多个储存区域中的何者是由对应于包括目标内存地址的内存地址范围的内存属性单元所指示的对应储存区域;
[0065] 以及输出区域辨识值,该值辨识多个区域中的何者是对应储存区域,其中目标内存地址是实体地址且区域辨识值适用于藉由数据处理设备所执行的至少一些软件。
[0066] 在方法的一个实例中,可使用由较不安全域中执行的代码所设置的一或更多个内存地址执行区域辨识操作作为安全域中所执行的函数的一部分,且区域辨识操作的目标内存地址可为由较不安全域所传递的内存地址之一。在由较不安全域调用函数至安全域中的目标地址及由自较不安全域传递的函数所使用的一或更多个地址的情况中,则存在潜在攻击,其中较不安全域可传入安全地址及随后在安全域中存取此地址。由于通常将允许对安全域中的安全地址的存取,此可提供安全孔,在该安全孔中较不安全代码可控制对安全地址的存取。然而,藉由在安全域中的函数中执行辨识操作,此可检查哪个内存属性单元区域对应于由较不安全域所传递的地址,且若由较不安全域所传递的所有地址对应于相同区域及彼区域具有对于较不安全域的适宜存取许可,则可正常地实施函数的其余者,其中具有比在不存在区域辨识操作及实情为必须个别地检查由较不安全域所传递的每一地址情况下原本需要的更少的检查。
[0067] 结合附图,从以下对示意性实施例的详细描述,本技术的以上和其他主题、特征和优点将是显而易见的。
[0068] 图1示意性示出具有处理电路4、数据储存器(内存)6及内存属性单元7的数据处理设备,该内存属性单元用于储存属性数据以便藉由处理电路4控制对内存6的存取。图2示出内存属性单元7的实例,该内存属性单元具有若干储存区域9,每一储存区域9储存如图2所示的地址空间13中所指示的对应内存地址范围11的属性数据。尽管在图1中以单个方指示内存6,但是在一些情况中,内存地址空间可覆盖若干不同装置中的位置(例如,RAM、闪存装置、用于外围设备的控制缓存器等)。
[0069] 对处理电路4可见的地址空间的布局可实质上与对内存属性单元7可见的地址的布局相同。每一储存区域9可由在处理电路4上执行的指令配置以便映射至地址空间13中的不同地址范围。举例而言,储存区域9可储存界定对应地址范围的参数,诸如地址范围的起始地址及结束地址,指示地址范围的大小的参数及起始地址,或指示与地址范围的起始地址对应的2的n次幂的倍数的值及指示地址范围的大小的大小参数。在其他实例中,可将与储存区域9关联的地址范围固线连接至储存区域中。因此,存在不同方式表示对应于储存区域9的地址范围。在一些实例中,若针对每一储存区域9所界定的地址范围重迭,则内存属性单元7的配置可为无效,而在其他实例中,可容许一些重迭地址范围以便界定对于相同地址的多层存取许可。在一些实施例中,地址范围可具有任意倍数的给定地址增量(而不是必须选自有限数量的范围大小),且可独立于彼此设置相邻地址范围(例如,B及C)的长度(不必约束内存属性单元7来界定各个具有相同长度的若干邻接地址范围)。
[0070] 每一储存区域9包括一个或更多个属性15,这些属性控制处理器4可如何对对应地址范围内的地址执行内存存取操作。对于一些实施例,界定对应地址范围的地址或其他参数可为藉由内存属性单元7所储存的唯一属性数据15,其中藉由地址是否具有内存属性单元中所界定的对应地址范围隐含地指示一些其他信息。对于其他实施例,除地址范围界定数据外可存在进一步属性数据15,诸如指定处理器4是否可读取及/或写入由地址辨识的内存6中的位置的数据,及辨识多个安全状态或域中的何者与地址关联的数据。当对由目标地址辨识的内存6中的位置执行内存存取时,向内存属性单元7提供目标地址,该内存属性单元将目标地址与针对储存区域9的各者所界定的地址范围比较,及输出与对应于包括目标地址的地址范围的区域9的一者关联的属性数据。处理电路4随后基于输出属性数据决定是否允许对内存的存取。向内存属性单元7所提供的目标地址为实体地址(并非虚拟地址),以使得藉由内存属性单元7将由处理电路4所指定的连续目标内存地址映射至输出到内存6的连续地址。
[0071] 图3更详细地示出处理设备2的实例。数据处理设备2包含处理电路4及如图1所指示的数据储存器6,且亦包含若干单元42、50、52,这些单元可各自被视为图1及图2所示的内存属性单元7的实例。数据处理设备2亦包含用于储存待由处理电路4处理的数据的缓存器8。数据储存器6可包括至少一个高速缓存以及主存储器。处理电路4包含处理管线,该处理管线包括用于自数据储存器6撷取指令的撷取阶段(fetch stage)10、用于译码所撷取指令的译码阶段12及用于执行所译码指令的运行时间14。应将了解,管线可包括其他级,例如缓存器重命名级或发出级。
[0072] 缓存器8包括若干通用缓存器R0至R12,这些通用缓存器用于代表处理电路4储存数据。尽管图3示出13个通用缓存器R0至R12,但可提供其他数量的缓存器,且视情况亦可提供用于储存浮点值的浮点缓存器。缓存器8亦包括一些专用缓存器,这些专用缓存器包括程序计数器(program counter;PC)缓存器20、链接缓存器(link register;LR)22及堆栈指针(stack pointer;SP)缓存器24、26。程序计数器缓存器20储存程序计数器,该程序计数器指示待由处理电路4执行的下一程序指令的地址。大体而言,在执行指令后,将更新程序计数器以指示来自内存的下一指令。然而,响应于控制流变更指令,可将程序计数器设置为一值,该值并未指向下一后续指令。链接缓存器22可储存在自函数或异常传回时所使用的回传值以决定在完成函数或异常后应处理哪个程序指令。堆栈指针缓存器24、26分别储存安全堆栈指针及较不安全堆栈指针,这些指针指向数据储存器6中的安全堆栈30及较不安全堆栈32。举例而言,堆栈指针可指示置放于堆栈30、32上的最后项目的位置,或可指示置放于堆栈30、32上的数据值应被写入到的下一位置。
[0073] 提供安全保护硬件40以加强安全域与较不安全域之间的分离。安全保护硬件具有安全保护单元42,该安全保护单元储存界定数据储存器6的区域是否为安全区域或较不安全区域的保护数据。图3示出一实例,其中数据储存器6具有一个安全区域44及一个较不安全区域46,但实际上数据储存器6可包括每一类型的若干个区域。在一些实例中,安全保护单元42可仅包括界定与安全域及较不安全域之一关联的地址范围的属性数据,以及认为在安全保护单元42中未界定的地址范围与安全域及较不安全域中的另一者相关。在安全域中藉由处理电路4执行数据储存器6的安全区域44内安置的代码46,而在较不安全域中执行较不安全区域46内安置的代码48。当处于较不安全域中时,处理电路4不可存取储存于安全区域44中的数据或指令。藉由安全保护硬件40控制较不安全域与安全域之间的转换以确保仅接受某些已允许转换。
[0074] 数据处理设备2包含安全内存保护单元(MPU)50及较不安全MPU 52,这些MPU分别用于界定对于数据储存器6的安全区域44及较不安全区域46的存取许可。MPU 50、52经由总线矩阵5存取数据储存器6。存取许可控制安全区域44及较不安全区域46的子区域是否为可存取或不可存取,使得可在不同程序或软件程序的安全区域或较不安全区域内设置不同存取许可。藉由安全MPU 50及较不安全MPU 52所界定的区域可重迭。举例而言,安全MPU 50及较不安全MPU 52可界定相同内存区域的不同属性。
[0075] 图4示出数据储存器6的内存地址空间的实例。地址空间具有安全区域44及较不安全区域46。尽管图4示出一个较不安全区域44及一个安全区域46,但可提供更多数目的不相连安全区域及较不安全区域。安全保护单元42储存界定数据储存器6的哪些区域为安全区域或较不安全区域的数据(可藉由在安全保护单元42中缺乏界定地址范围的数据而隐含地指示这些区域之一)。
[0076] 安全区域44包括对应于安全软件库的一或更多个安全堆栈30。举例而言,安全区域44亦包含对应于应用程序代码或应用程序级别软件库的无特权安全代码46及对应于操作系统的特权安全代码47。安全MPU 50控制安全区域44的哪些子区域与无特权或特权模式相关。类似地,较不安全区域46包括在较不安全域中执行的较不安全代码48(包括特权及无特权代码)、由较不安全代码48所使用的较不安全堆栈32及较不安全数据39。较不安全MPU 52控制较不安全区域46中的数据或代码是否为特权或无特权的。通常,无特权代码不可存取特权数据或代码。内存地址空间亦包括保留地址范围150,该保留地址范围并不对应于任何有效指令地址。此保留范围可用于特定函数,诸如提供可触发特定事件的虚设地址。举例而言,保留地址范围150可包含范围0xF0000000至0xFFFFFFFF中的地址。
[0077] 图5示意性示出处理设备2的不同状态。设备具有较不安全域70及安全域80,这些域提供处理设备2的分隔,使得可在没有较不安全程序及操作系统的存取险下安全地执行安全程序及操作系统。可在较不安全域70与安全域80之间实行直接函数调用及分支,其中安全保护硬件40管制域70、80之间的边界及确保容许域之间的转换。处理的相同线程可包括安全域80及较不安全域70两者中的处理。举例而言,较不安全应用程序可分支至安全区域以执行安全临界函数(诸如密码检查或付款处理),且随后分支回到较不安全区域用于并非安全临界的进一步处理。当设备2处于较不安全域70中时,则安全保护单元42确保与安全域80关联的数据为不可存取。
[0078] 在较不安全域70及安全域80的各者内,存在无特权状态90及特权状态100。大体而言,特权状态100用于特权软件(诸如操作系统),而无特权状态90用于无特权代码(诸如应用程序及库)。与较不安全域70及安全域80不同,无特权状态90与特权状态100之间的分支或函数调用大体上不可能,且可需要上下文切换或异常以在特权模式与无特权模式之间切换。给定线程通常将在无特权状态90或者特权状态100的一者中操作,而非两者。大体而言,当处于无特权状态90中时,则与特权状态100关联的数据为不可存取(尽管可存在异常,允许安全域80中的无特权状态90自较不安全域70中的特权状态100存取数据)。当处理设备2处于安全域80中时,安全MPU 50界定指示地址范围在特权状态或无特权状态下是否为可存取的存取许可,而当处理设备2处于较不安全域70中时,较不安全MPU 52界定指示地址范围是否自特权状态或无特权状态可存取的存取许可。
[0079] 通常,可使用目标地址查询内存属性单元7(诸如安全保护单元42或安全MPU 50或较不安全MPU 52)及随后将回传对应目标地址的属性值。然而,本技术认识到,存在一些情形,其中能够回传区域辨识符是有用的,该区域辨识符辨识内存属性单元7(42、50、52)的储存区域9中的何者对应于目标地址。因此,处理电路4能够响应于指令执行区域辨识操作,以便辨识对应于指定目标地址的储存区域9及输出辨识储存区域的区域辨识值。
[0080] 图6示出用于触发处理电路4执行区域辨识操作的区域辨识指令的实例。区域辨识指令TT具有指定源缓存器Rn及目的地缓存器Rd的编码以及稍后将描述的可选旗标A(其他实施例可未使用旗标A)。程序设计师写入程序,使得在执行区域辨识指令TT前在源缓存器Rn中置放指定目标地址。响应于区域辨识指令,处理电路4执行区域辨识操作,其中使用内存属性单元7决定储存区域9中的何者对应于缓存器Rn中的目标地址,及随后将结果值写入到目的地缓存器Rd中,该目的地缓存器Rd包括辨识区域9中的何者对应于该地址的区域辨识值。
[0081] 图7示出写入到目的地缓存器Rd中的结果值的实例。在图3的实例中,由于存在两种类型内存属性单元7(安全保护单元42及MPU 50、52),则区域辨识操作回传两个不同区域辨识值:一个值MREGION指示安全MPU 50或较不安全MPU 52的哪个储存区域对应于目标地址,且第二值PREGION指示安全保护单元42的哪个储存区域对应于目标地址。大体而言,对于MPU,值MREGION可辨识对应于操作的当前域的MPU50、52的一者中的对应储存区域。然而,若设置“alt”旗标A,则可查找出来自相对域的MPU 50、52(仅当在安全域中操作时可允许此举)。在仅具有一个内存属性单元7的其他实施例中,可提供仅一个区域辨识值。
[0082] 在此实例中,结果值亦包括若干其他条额外信息,基于对应于目标地址的储存区域9的属性数据决定这些信息。由于已查找内存属性单元7用于辨识对应储存区域,亦可有效率地自对应储存区域9回传额外数条属性数据以避免需要为了决定属性数据而执行进一步指令。
[0083] 在此实例中,结果值包括信息的以下字段:
[0084] MREGION(位[7:0]):目标地址映射到的MPU区域的区域编号。
[0085] PREGION(位[15:8]):目标地址映射到的安全保护单元42的区域编号。
[0086] MRVALID(位[16]):若MREGION字段为有效,此字段设置为1。若以下条件中的任何者为真,MREGION字段将为无效的:
[0087] ·被询问的MPU 50、52不存在或被禁用
[0088] ·目标地址匹配多个启用MPU区域
[0089] ·目标地址不匹配启用的MPU区域
[0090] ·当处于无特权模式下时执行区域辨识操作,且未指定A旗标(当处于安全域80中的无特权状态下时,并不允许存取关于与安全域80中的特权状态关联的区域的信息,但可存取关于较不安全域80中的特权区域及无特权区域的信息,此为必须指定A旗标的原因,以便安全域中的区域辨识操作的无特权执行为有效)。
[0091] 视情况,若当处于非安全域中时执行区域辨识操作,可产生无效MREGION字段,且指定A旗标(当处于非安全域中时,并不允许存取关于安全MPU 50的信息)。或者,若当处于非安全域中时指定A旗标,可将指令视为未界定,在此情况中完全不可执行区域辨识操作。
[0092] PRVALID(位[17]):若PREGION字段为有效,此字段设置为1。若以下条件中的任何者为真,PREGION字段将为无效的:
[0093] ·禁用安全保护单元42
[0094] ·目标地址匹配安全保护单元42中的多个启用区域
[0095] ·目标地址不匹配安全保护单元中的任何启用区域
[0096] ·在处于非安全域中时执行区域辨识操作(非安全域中的代码不可存取关于安全保护单元42的区域的信息,该信息可提供哪些地址与安全数据或代码相关的提示)。
[0097] ·在未实施藉由安全保护硬件40所提供的安全/较不安全域分隔的设备上执行区域辨识操作。
[0098] R(位[18]):读取可存取性。若当在特权模式及无特权模式的当前者中操作时可根据选定MPU的许可读取藉由目标地址所辨识的内存位置,则R设置为1。
[0099] RW(位[19]):读取/写入可存取性。若当在特权模式及无特权模式的当前者中操作时可根据选定MPU的许可读取及写入藉由目标地址所辨识的内存位置,则RW设置为1。
[0100] NPR(位[20]):等于R且(非P)。若设置为1,此指示可读取该地址且该地址与较不安全域70关联。
[0101] NPRW(位[21]):等于RW且(非P)。若设置为1,此指示可读取及写入该目标地址且该目标地址与较不安全域70关联。
[0102] P(位[22]):私密性。值1指示内存位置与安全(私密)域80关联,而值0指示内存位置与较不安全(公众)域70关联。仅当处于安全域80中时执行区域辨识操作,此字段为有效。
[0103] 参数NPR及NPRW来源于从MPU 50或52中获得的属性数据R或RW中的一些及从安全保护单元42中获得的属性数据P中的一些。藉由将此衍生参数决定作为区域辨识操作的一部分,不必执行进一步指令来组合此信息。检查是否容许读取/写入地址及地址是否为较不安全地址是具有图5所示状态的系统中相对常见的操作。藉由回传指示两条信息的单个位,此大大简化了进一步检查,因为大体上可使用单个指令有效率地检查缓存器Rd内单个位的值,但检查两个或更多个位的值(例如,独立位R及P或RW及P)可更为复杂。在其他实例中,使用来自不同属性单元7的信息中的一些可获得其他衍生参数。
[0104] 下文展示表示响应于图6所示的指令编码所执行的区域辨识操作的伪代码的实例(缩写PAU指示安全保护单元且术语“私密”及“公众”分别指示安全域及较不安全域):
[0105] d=UInt(Rd);n=UInt(Rn);alt=A==′1′;
[0106]
[0107] if alt&&!IsPrivate()then UNDEFINED;
[0108] 操作:
[0109]
[0110]
[0111]
[0112]
[0113]
[0114] 图8示出内存属性单元7的硬件的实例(可为安全保护单元42或MPU 50、52之一)。每一储存区域9可由众多缓存器表示,这些缓存器用于储存对应区域的属性数据。图8示出一实例,其中区域编号(用于PREGION或MREGION字段)并未储存于内存属性单元的储存区域
9中的属性数据内,但实情为该区域编号由内存属性单元7产生。因此,当响应于区域辨识操作将地址输入至内存属性单元时,则比较器110比较输入地址与界定对应于每一区域9的内存地址范围的数据112,且若地址处于对应区域9的地址范围内确定命中信号114。内存属性单元7具有逻辑116,该逻辑自储存区域9接收命中信号114以及属性数据115及输出侦测到命中的区域的属性118。查找目标地址及输出属性118的功能通常已属于未使用本技术的内存属性单元的一部分。本技术延伸逻辑116的功能以亦产生及输出区域编号120,基于该区域编号确定命中信号114。
[0115] 在其他实施例中,区域编号可为储存于区域9中的一值作为属性数据本身的一部分,且当存在区域辨识操作的目标地址的命中时,则可自缓存器读取储存于匹配区域9中的区域编号及藉由处理电路4输出该编号。
[0116] 大体而言,每一内存属性单元7可包含用于储存属性数据的缓存器9的独立实例。然而,不同内存属性单元7可能共享诸如比较器110及控制逻辑116的其他电路系统中的一些。举例而言,由于通常在某一时间处安全MPU 50及较不安全MPU 52的仅一者将为主动,不必复制比较器110及控制逻辑116,且可藉由共享两个MPU之间的比较器110与逻辑116节省电路面积。
[0117] 尽管图6示出提供专用区域辨识指令TT的实例,但在其他实例中可藉由另一类型指令(诸如通用指令)触发区域辨识操作。举例而言,9A示出提供通用移动指令MOV用于将源缓存器Rn的内容移动至第二缓存器Rm*的情况。可提供特定缓存器,当写入时,该缓存器触发处理电路4执行对于置放于缓存器中的地址的区域辨识操作。因此,若用作为第二缓存器Rm*的特定缓存器执行MOV指令,则处理电路4可执行区域辨识操作及设置特定目的地缓存器Rd*为图7所示的结果值。另一指令可随后自目的地缓存器Rd*获得区域辨识值及其他额外信息。如图9A所示,亦可使用MOV指令在特定缓存器中置放A旗标以用与图7所论述的相同的方式控制是否存取安全MPU 50或较不安全MPU 52。
[0118] 或者,可不提供A旗标,及实情为可如图9B提供的一实施例,其中可提供两个不同特定缓存器Rm1*、Rm2*,一者对应于安全MPU及另一者对应于较不安全MPU,使得藉由选择这些特定缓存器中的何者为MOV指令的目的地缓存器,程序设计师可选择询问哪个MPU。类似地,在图6的实例中,可提供两个独立指令,而不是使用A旗标,这些独立指令的一者对于询问安全MPU 50及一者用于询问较不安全MPU 52。
[0119] 在一些实施例中,缓存器Rm*、Rm1*及Rm2*可为内存映射,在此类情况中,储存指令将用于自缓存器Rn至特定缓存器Rm*、Rm1*及Rm2*写入值。目的地缓存器Rd*亦可为内存映射,且加载指令将用于存取区域辨识值。
[0120] 另外,尽管图9A及图9B示出的示例中目标地址是写入到特定缓存器Rm*、Rm1*或Rm2*的值以触发处理设备2执行区域辨识操作,但在其他实例中该地址不必被写入到特定缓存器。实情为,可将不同值写入到特定缓存器中,且此举触发处理电路4自另一位置读取地址及使用彼地址执行区域辨识操作。
[0121] 因此,本技术允许程序设计师在代码中包括指令以控制处理电路获得匹配给定目标地址的安全保护单元42或MPU 50、52中的储存区域9的区域编号。此可用于如图10至图13的实例所示的若干情形中。
[0122] 图10示出安全函数bob()的实例,藉由分支至安全地址自较不安全域70调用该安全函数。函数bob()使用由较不安全域70中的代码所指定的一系列地址ADDR[]。此类型函数可具有问题,因为若较不安全代码70可传递安全地址至安全域80,则读取或写入彼地址的操作(例如,操作130)可不适当地存取或更新安全数据,因为一旦处于安全域80中,通常将允许对另一安全地址的存取。为了防止此情形,应写入函数bob()以包括检查由较不安全域传递的地址是否为安全地址或较不安全地址。然而,若自较不安全域传递数组,则bob()必须执行较不安全内存46内含有整个数组的检查。此原因在于,即使数组的起始地址位于较不安全内存46内,则该数组可延伸至安全内存44(如图11中的152所示),可能导致安全违规,因此只要检查起始地址的位置即可。若安全函数bob()检查待存取的数组的起始地址及结束地址两者,则可侦测此情况。然而,此不足以确保系统的安全性,因为数组可完全跨越安全内存地址范围,以使得起始地址及结束地址两者皆位于较不安全内存46中。在图11中的160处示出此情况的实例。个别地检查数组内的每一地址的安全保护单元42中的属性数据可为缓慢的,且导致功率消耗增加及效能减少。
[0123] 本技术认识到,使用上文所论述的区域辨识操作,个别地检查每一地址通常变得不必要,使得可节省处理资源及功率。如图11所示,通常在数组ADDR[]中所指定的地址0至N的范围可全部处于对应于内存属性单元7的单个储存区域9的地址范围内。举例而言,图11所示的地址140全部处于由安全保护单元42的单个储存区域9表示的地址空间的较不安全区域内。在此情况中,在不容许重迭区域的系统中,若可决定地址数组的起始地址及结束地址与相同储存区域9相关,且储存区域被指示为较不安全,则不必检查所有介入地址的许可及函数bob()的剩余者可正常行进。此节省了大量处理。在极少数场合下,当地址的范围跨越与多个储存区域9关联的地址范围(例如,参看图11的实例152、160)时,则可需要进一步检查来决定该处理是否可行进。实际上,大多数数组将处于如实例140所示的单个区域内且因此不必经常执行进一步检查。即使需要进一步检查,区域辨识操作可用于辨识这些地址自与一个区域关联的地址范围至与另一区域关联的地址范围交叉的点,使得可减少需要检查属性的个别地址的数量。
[0124] 因此,如图12的对应实例所示,可修改函数bob()以包括区域辨识操作。当较不安全代码调用函数bob()时,则存在分支至安全域80。执行第一对指令170以将数组ADDR[]的起始地址及结束地址置放到缓存器R1、R2中。随后执行两个区域辨识操作180以检查缓存器R1、R2中的地址的安全保护区域编号(PREGION)。在步骤190处,若缓存器R3、R4的安全保护单元42区域编号(位15:8)为相同,且两个区域编号皆有效(位17),则此意谓地址的数组ADDR[]中的起始地址及结束地址与内存属性单元的单个储存区域9相关,且因此若这些地址为较不安全地址(R3的位22为0),则地址的整个数组ADDR[]为安全,因为全部与地址空间的较不安全区域相关。在此情况中,则分支指令200分支至地址addX以执行如图10的函数所需的处理。另一方面,若起始地址及结束地址与不同的储存区域相关或与安全区域相关,则在步骤210处需要进一步检查,且若此检查失败,则以一些方式发送信号告知处理故障或错误。因此,藉由以此方式使用区域辨识操作180,在许多场合下,可跳过进一步检查210以节省显著量的处理。
[0125] 可以不同方式执行进一步检查210。举例而言,若发现数组的起始地址及结束地址与内存属性单元7的不同储存区域9相关,则可检验介入地址以发现储存区域9的边界的位置。举例而言,可首先检查起始地址与结束地址之间一半处的地址以查看该地址是否与起始地址及结束地址的一者相同的区域9相关,且随后可执行地址范围的进一步二进制除法,直到决定多少个区域9对应于地址ADDR[]的数组及不同区域之间的边界位置。或者,在其他实施例中,自区域辨识操作180获得的区域编号可用于索引至含有区域的起始地址及结束地址的数据结构中,从而允许获得邻接区域(亦即,待检查的下一区域)的地址,而无需使用二进制除法程序发现边界位置。可随后检查每个储存区域9中一个地址的属性以决定是否允许函数bob()的继续处理。如图11的实例160所示,数组ADDR[]可跨越多个区域是可能的。若存在多个区域,则那些区域的各者的属性将需要指示较不安全域,以便允许函数的继续操作。进一步检查可为相对复杂,但藉由使用区域辨识操作,可更快地执行,且若可能,则完全省略。
[0126] 尽管图10至图12图示交叉较不安全域70与安全域80之间边界的函数的实例,但在其他实例中,当在特权状态90与无特权状态100之间交叉时或当在具有不同安全级别的其他模式之间交叉时可执行类似操作集合。此外,尽管图12示出特定区域辨识指令用于实施区域辨识操作作为步骤180的实例,但在其他实例中,例如可使用图9的替代途径,该途径使用对特定缓存器的写入。
[0127] 图13示出可使用区域辨识操作的另一情形。MPU 50或52的配置可随着不同程序或上下文变得主动而变化。此情况的实例为可存在若干不同软件库250,这些软件库需要在相同域或模式内保持彼此分离。举例而言,在安全域80内,可存在由互相不信任方所提供的不同应用程序,每一应用程序需要由安全域80提供的保护,但必须防止彼此存取。因此,可提供库管理器260,该库管理器选择库之一作为主动库及设置其他库为非主动。举例而言,在图13中,库0为主动及库1为非主动。在由英国剑桥ARM Limited于2013年6月12日提交的同在申请中的申请案GB 1310421.1中描述此途径的更多细节,该申请案的内容以引用的方式全部并入本文。在此途径中,每一库与不同MPU配置关联,该MPU配置使用彼库界定地址空间的哪些范围为可存取。当库为非主动时,则将地址空间的区域设置为不可存取,且当库为主动时,则将区域设置为可存取。若存在对与非主动库关联的地址的函数调用或分支(自主动库或者自不同域中操作的代码),则MPU决定此地址为不可存取及此触发存取违规异常。库管理器260具有故障处置器,该故障处置器可侦测存取违规异常是否被对非主动库的存取触发,且若是,则故障处置器切换MPU配置以启动新库及停用旧库。使用库配置数据270决定在此点处应对MPU实行何种更新。
[0128] 因此,如图13的下半部分所示,当已启动第二库(库1)及已停用第一库(库0)时,则当前MPU 50、52将具有众多区域1、2、3,这些区域设置对于新主动库(库1)的存取许可。在此点处,可能自与停用库(库0)相关的MPU 50、52的区域9驱逐数据。然而,MPU 50、52可比用于储存新主动库(库1)的属性数据所需的具有更多可用储存区域9。由于较快地再次启动最近停用的库为常见,则藉由在MPU中保留与停用库0相关的属性数据中的至少一些,但使用有效位280标记这些区域为无效,此可在稍后再启动该库时加速处理,因为不必加载同样多的数据至MPU中。
[0129] 然而,当再启动库时必须执行的关键任务之一是将函数调用的目标地址变换成接下来待启动的库的ID。通常,库主配置数据270将包括软件数据结构,该软件数据结构将不得不被按顺序搜寻以找到对所需库的分支或函数调用的目标地址与库编号之间的映射。搜寻此类软件结构在效能及功率消耗方面可为高成本。
[0130] 可使用本技术的区域辨识操作解决此问题。藉由使用区域辨识操作,可搜寻MPU 50、52以找到对应于对非主动库的函数调用的目标地址的无效储存区域的区域编号。可随后比仅仅基于目标地址可能的更有效率地将该区域编号映射至库编号。举例而言,可藉由库管理器260维护如图13所示的软件表290以将MPU的储存区域9的区域辨识符映射至库编号。此表290将通常比将地址直接映射至库编号的表小得多。因此,区域辨识操作使得MPU的更新更有效率。在一些实例中,图13所示的软件290可为库配置数据270中的一部分。此外,在一些情况中,可在没有软件表290的情况下执行区域编号至库编号的映射,例如藉由在匹配区域的属性数据本身中储存库编号的指示。
[0131] 图14示出表示处理数据的方法的流程图。在步骤300处,处理电路4的译码阶段12侦测是否存在触发区域辨识操作的指令。此可为图6中所示的区域辨识指令或在示例性图9中以一些其他方式触发区域辨识操作的另一指令。若存在此指令,则在步骤302处,决定哪个区域对应于目标地址,且在步骤304处,输出辨识对应区域的区域辨识值,以使得区域辨识值适用于藉由数据处理设备2执行的至少一些软件。
[0132] 尽管本文参考附图已详细描述说明性实施例,但应理解,本发明并不限于那些精确实施例,且本领域技术人员可在不脱离由随附权利要求书所界定的范围及精神的情况下实施各种变化及修改。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈