首页 / 专利库 / 专利权 / 权利要求 / 从属权利要求 / 多项从属权利要求 / 用于保护以防恶意程序的安全存储器

用于保护以防恶意程序的安全存储器

阅读:971发布:2021-07-30

专利汇可以提供用于保护以防恶意程序的安全存储器专利检索,专利查询,专利分析的服务。并且本 发明 提供一种用于控制对 存储器 的 访问 的 数据处理 装置和方法。该数据处理装置具有安全域和非安全域,在安全域中该数据处理装置能够访问在非安全域中所不能访问的安全数据。该数据处理装置包括通过设备总线与存储器耦合的设备,并且当该设备 请求 访问该存储器的数据项时,用于将关于安全域或非安全域的存储器访问请求发送到该设备总线上。该存储器用于存储该设备所请求的数据,并包括用于存储安全数据的安全存储器和用于存储非安全数据的非安全存储器。根据本发明,该数据处理装置进一步包括与该设备总线耦合的分区校验逻辑,并用于当该设备发送关于所述非安全域的存储器访问请求的时候,检测该存储器访问请求是否想要访问安全存储器,并根据这种检测禁止该存储器访问请求所 指定 的访问。该方法显著地提高了包含在存储器的安全部分中的数据的安全性。,下面是用于保护以防恶意程序的安全存储器专利的具体信息内容。

1.一种具有安全域和非安全域的处理数据装置,在安全域中该数据 处理装置能够访问在非安全域中所不能访问的安全数据,该数据处理装 置包括:
设备总线;
设备,其与该设备总线耦合并用于发送关于所述安全域或所述非安 全域的存储器访问请求
存储器,其与该设备总线耦合并用于存储该设备所请求的数据,该 存储器包括用于存储安全数据的安全存储器和用于存储非安全数据的非 安全存储器,当请求对该存储器中的数据项进行访问时,该设备可以用 于将存储器访问请求发送到设备总线上;以及
分区校验逻辑,与该设备总线耦合并用于在该设备发送关于所述非 安全域的存储器访问请求的任何时候,检测该存储器访问请求是否想要 访问安全存储器,并根据这种检测禁止该存储器访问请求所指定的访 问。
2.如权利要求1中所述的数据处理装置,其中该设备工作于多个模 式中,包括作为非安全域中的模式的至少一个非安全模式,以及作为安 全域中的模式的至少一个安全模式。
3.如权利要求1或权利要求2中所述的数据处理装置,其中当工作 于所述安全域中预定的安全模式中时,通过该设备管理该分区校验逻 辑。
4.如权利要求1至3中任一项所述的数据处理装置,其中由该设备 发送的存储器访问请求包括域信号,其标示该存储器访问请求是关于所 述安全域还是关于所述非安全域。
5.如权利要求4中所述的数据处理装置,其中所述设备具有用于将 该域信号输出到设备总线上的预定管脚。
6.如前述权利要求中任一项所述的数据处理装置,其中该分区校验 逻辑被设置在与设备总线耦合以在发送到设备总线上的存储器访问请求 之间进行仲裁的判优器内。
7.如前述权利要求中任一项所述的数据处理装置,其中在所述非安 全域中该设备可以在非安全操作系统的控制下工作,并且在所述安全域 中该设备可以在安全操作系统的控制下工作。
8.如前述权利要求中任一项所述的数据处理装置,其中该设备是包 括处理器的芯片,该芯片进一步包括存储器管理单元,其用于当处理器 产生存储器访问请求时执行一个或多个预定的访问控制功能,以控制该 存储器访问请求发送到设备总线上。
9.如权利要求8中所述的数据处理装置,其中该芯片进一步包括:
通过系统总线与处理器耦合的补充存储器,该补充存储器用于存储 处理器所要求的数据,该补充存储器包括用于存储安全数据的安全补充 存储器和用于存储非安全数据的非安全补充存储器;以及
补充分区校验逻辑,与该系统总线耦合,并用于当工作于所述非安 全域中的非安全模式下时,在处理器产生存储器访问请求的时候检测该 存储器访问请求是否想要访问安全存储器或安全补充存储器,并根据这 种检测禁止该存储器访问请求所指定的访问。
10.如权利要求9中所述的数据处理装置,其中:
该处理器可以工作于多个模式,包括作为该非安全域中的模式的至 少一个非安全模式,以及作为该安全域中的模式的至少一个安全模式, 在所述至少一个非安全模式中该处理器可以在非安全操作系统的控制下 工作,并且在所述至少一个安全域中该处理器可以在安全操作系统的控 制下工作;并且
通过该安全操作系统管理该补充分区校验逻辑。
11.如权利要求10中所述的数据处理装置,其中当该处理器工作于 至少一个非安全模式中时,存储器访问请求指定虚拟地址,通过该非安 全操作系统控制该存储器管理单元,并且通过存储器管理单元执行的所 述预定的访问控制功能中的一个包括虚拟地址到物理地址的转换,如果 该存储器管理单元所产生的物理地址在安全存储器内,该补充分区校验 逻辑可以用于禁止该存储器访问请求所指定的访问。
12.如权利要求10或权利要求11中所述的数据处理装置,其中当 该处理器工作于至少一个安全模式之一中,该存储器访问请求指定虚拟 地址,通过安全操作系统控制该存储器管理单元,并且通过该存储器管 理单元所执行的所述预定的访问控制功能中的一个包括虚拟地址到物理 地址的转换,该补充分区校验逻辑在至少一个安全模式中不被使用。
13.如权利要求12中所述的数据处理装置,其中对于处理器操作的 所有模式,该存储器访问请求指定虚拟地址,该补充分区校验逻辑被设 置在存储器管理单元中,并且当该处理器工作于所述至少一个非安全模 式中的时候工作。
14.如权利要求11或权利要求12中所述的数据处理装置,进一步 包括在其内设置该补充分区校验逻辑的存储器保护单元,通过该安全操 作系统管理该存储器保护单元,其中当该处理器工作于特定的安全模式 中时,该存储器访问请求指定用于存储器位置的物理地址,该存储器管 理单元没有被使用,并且该存储器保护单元用于至少执行存储器访问许 可处理,以验证是否可以在所述特定安全模式中访问该物理地址所指定 的存储器位置。
15.如权利要求10至14中任一项所述的数据处理装置,其中该存 储器包括至少一个表,其包含对多个存储器区域的每一个的相关描述 符,该存储器管理单元包括内部存储单元,其用于存储从该描述符得到 并被该存储器管理单元使用来为该存储器访问请求执行预定的访问控制 功能的访问控制信息,当该处理器工作于所述至少一个非安全模式中 时,该补充分区校验逻辑用于禁止该内部存储单元存储允许访问所述安 全存储器的访问控制信息。
16.如权利要求15中所述的数据处理装置,其中该存储器访问请求 指定虚拟地址,并且所述预定访问控制功能之一包括虚拟地址到物理地 址的转换,每一描述符至少包含用于对应存储器区域的虚拟地址部分和 对应的物理地址部分,当该处理器工作于所述至少一个非安全模式中 时,如果为该虚拟地址所产生的物理地址在该安全存储器中,该补充分 区校验逻辑用于禁止该内部存储单元作为访问控制信息存储该物理地址 部分。
17.如权利要求16中所述的数据处理装置,其中该内部存储单元是 转换后备缓冲器(TLB),用于为多个虚拟地址部分存储从至少一个表检 索到的对应描述符中得到的对应物理地址部分。
18.如权利要求17中所述的数据处理装置,其中该TLB是微TLB, 并且该内部存储单元进一步包括主TLB,用于存储由存储器管理单元从至 少一个表中所检索到的描述符,并且在存储器管理单元使用访问控制信 息为存储器访问请求执行预定的访问控制功能之前将该访问控制信息从 主TLB传输到微TLB,当该处理器工作于所述至少一个非安全模式中时, 该补充分区校验逻辑用于禁止将允许访问所述安全存储器的任何访问控 制信息从主TLB传输到微TLB。
19.如权利要求16至18中任一项所述的数据处理装置,其中该至 少一个表包括当该处理器工作于所述至少一个非安全模式中时使用的非 安全表,其包含通过该非安全操作系统所产生的描述符,在该非安全表 中的描述符与至少部分包括一部分安全存储器的存储器区域相关联的情 况下,当该处理器工作于非安全模式中时,如果为该虚拟地址所产生的 物理地址在该安全存储器中,该补充分区校验逻辑用于禁止该内部存储 单元作为访问控制信息存储由该描述符所指定的该物理地址部分。
20.如权利要求19中所述的数据处理装置,当从属于权利要求18 时,其中该至少一个表进一步包括安全存储器中的安全表,其包含由该 安全操作系统所产生的描述符,该主TLB包括与存储在该主TLB中的每 一描述符相关联的标志,以标示该描述符是来自所述非安全表还是所述 安全表。
21.如权利要求20中所述的数据处理装置,其中当处理器的操作模 式在安全模式与非安全模式之间改变时,刷新该微TLB,在安全模式中, 访问控制信息只从所述相关联标志指示其来自安全表的主TLB中的描述 符传输到微TLB,并且在非安全模式中,访问控制信息只从所述相关联标 志指示其来自非安全表的主TLB中的描述符传输到微TLB。
22.如权利要求10至21中任一项所述的数据处理装置,当其从属 于权利要求15时,其中所述至少一个表包括至少一个页表。
23.如权利要求10至22中任一项所述的数据处理装置,其中该补 充存储器包括与系统总线连接的紧密耦合存储器,在控制寄存器中定义 用于该紧密耦合存储器的物理地址范围,并且当工作于特权安全模式中 时,可以通过处理器设置控制标志,以标示仅当在特权安全模式中执行 时,该紧密耦合存储器是否可以通过该处理器控制,或者在至少一个非 安全模式中执行时是否可以通过该处理器控制。
24.如权利要求23中所述的数据处理装置,其中当在该至少一个非 安全模式中执行时,如果该紧密耦合存储器由该处理器控制,禁止将安 全数据存储到该紧密耦合存储器中。
25.一种在具有安全域和非安全域的数据处理装置中控制对存储器 的访问的方法,在安全域中该数据处理装置能够访问在非安全域中所不 能访问的安全数据,该数据处理装置包括:设备总线;设备,与该设备 总线耦合并用于发送关于所述安全域或所述非安全域的存储器访问请 求;以及存储器,与该设备总线耦合并用于存储该设备所请求的数据, 该存储器包括用于存储安全数据的安全存储器和用于存储非安全数据的 非安全存储器,该方法包括步骤:
(i)当请求对该存储器中的数据项进行访问时,从设备将存储器访 问请求发送到设备总线上;以及
(ii)在该设备发送关于所述非安全域的存储器访问请求的任何时 候,使用与该设备总线耦合的分区校验逻辑来检测该存储器访问请求是 否想要访问该安全存储器;以及
(iii)根据这种检测,禁止该存储器访问请求所指定的访问。
26.如权利要求25中所述的方法,其中该设备工作于多个模式中, 包括作为非安全域中的模式的至少一个非安全模式,以及作为安全域中 的模式的至少一个安全模式。
27.如权利要求25或权利要求26中所述的方法,其中当工作于所 述安全域中预定的安全模式中时,通过该设备管理该分区校验逻辑。
28.如权利要求25至27中任一项所述的方法,其中由该设备发送 的存储器访问请求包括域信号,其标示该存储器访问请求是关于所述安 全域还是关于所述非安全域。
29.如权利要求28中所述的方法,其中所述设备具有用于将该域信 号输出到设备总线上的预定管脚。
30.如权利要求25至29中任一项所述的方法,其中该分区校验逻 辑设置在与设备总线耦合以在发送到设备总线上的存储器访问请求之间 进行仲裁的判优器内。
31.如权利要求25至30中任一项所述的方法,其中在所述非安全 域中该设备可以在非安全操作系统的控制下工作,并且在所述安全域中 该设备可以在安全操作系统的控制下工作。
32.如权利要求25至31中任一项所述的方法,其中该设备是包括 处理器的芯片,该芯片进一步包括存储器管理单元,当处理器产生存储 器访问请求时,该方法包括步骤:
使用该存储器管理单元以执行一个或多个预定的访问控制功能,以 控制该存储器访问请求发送到设备总线上。
33.如权利要求32中所述的方法,其中该芯片进一步包括:通过系 统总线与处理器耦合的补充存储器,该补充存储器用于存储处理器所要 求的数据,该补充存储器包括用于存储安全数据的安全补充存储器和用 于存储非安全数据的非安全补充存储器;以及与该系统总线耦合的补充 分区校验逻辑,该方法进一步包括步骤:
当工作于所述非安全域中的非安全模式下时,在处理器产生存储器 访问请求的时候,使用该补充分区校验逻辑来检测该存储器访问请求是 否想要访问安全存储器或安全补充存储器;并且
根据这种检测禁止该存储器访问请求所指定的访问。
34.如权利要求33中所述的方法,其中:
该处理器可以工作于多个模式,包括作为该非安全域中的模式的至 少一个非安全模式,以及作为该安全域中的模式的至少一个安全模式, 在所述至少一个非安全模式中该处理器可以在非安全操作系统的控制下 工作,并且在所述至少一个安全域中该处理器可以在安全操作系统的控 制下工作;并且
通过该安全操作系统管理该补充分区校验逻辑。
35.如权利要求34中所述的方法,其中当该处理器工作于至少一个 非安全模式中时,在所述步骤(i)发送的该存储器访问请求指定虚拟地 址,通过该非安全操作系统控制使用该存储器管理单元以执行一个或多 个预定访问控制功能的所述步骤,并且所执行的其中一个所述预定的访 问控制功能包括虚拟地址到物理地址的转换,如果该存储器管理单元所 产生的物理地址在安全存储器内,该补充分区校验逻辑在所述步骤 (iii)禁止该存储器访问请求所指定的访问。
36.如权利要求34或权利要求35中所述的方法,其中当该处理器 工作于至少一个安全模式之一中,在所述步骤(i)发送的该存储器访问 请求指定虚拟地址,通过该安全操作系统控制使用该存储器管理单元以 执行一个或多个预定访问控制功能的所述步骤,并且所执行的所述预定 的访问控制功能中的一个包括虚拟地址到物理地址的转换,该补充分区 校验逻辑在至少一个安全模式中不被使用。
37.如权利要求36中所述的方法,其中对于该处理器的操作的所有 模式,在所述步骤(i)发送的该存储器访问请求指定虚拟地址,该补充 分区校验逻辑被设置在存储器管理单元中,并且当该处理器工作于所述 至少一个非安全模式中的时候工作。
38.如权利要求35或权利要求36中所述的方法,其中该数据处理 器装置进一步包括在其内设置该补充分区校验逻辑的存储器保护单元, 通过该安全操作系统管理该存储器保护单元,其中当该处理器工作于特 定的安全模式中时,在所述步骤(i)发送的该存储器访问请求指定用于 存储器位置的物理地址,使用该存储器管理单元以执行一个或多个预定 访问控制功能的所述步骤没有执行,并且该存储器保护单元至少执行存 储器访问许可处理,以验证是否可以在所述特定安全模式中访问该物理 地址所指定的存储器位置。
39.如权利要求34至38中任一项所述的方法,其中该存储器包括 至少一个表,其包含对多个存储器区域的每一个的相关描述符,该方法 包括步骤:
在该存储器管理单元内设置内部存储单元,用于存储从该描述符得 到并被该存储器管理单元使用来为该存储器访问请求执行预定的访问控 制功能的访问控制信息;并且
当该处理器工作于所述至少一个非安全模式中时,使用该补充分区 校验逻辑禁止该内部存储单元存储允许访问所述安全存储器的访问控制 信息。
40.如权利要求39中所述的方法,其中在所述步骤(i)发送的该 存储器访问请求指定虚拟地址,并且通过该存储器管理单元所执行的所 述预定访问控制功能之一包括虚拟地址到物理地址的转换,每一描述符 至少包含用于对应存储器区域的虚拟地址部分和对应的物理地址部分, 该方法包括步骤:
当该处理器工作于所述至少一个非安全模式中时,如果为该虚拟地 址所产生的物理地址在该安全存储器中,使用该补充分区校验逻辑以禁 止该内部存储单元作为访问控制信息存储该物理地址部分。
41.如权利要求40中所述的方法,其中该内部存储单元是转换后备 缓冲器(TLB),用于为多个虚拟地址部分存储从至少一个表中检索到的 对应描述符中得到的对应物理地址部分。
42.如权利要求41中所述的方法,其中该TLB是微TLB,并且该内 部存储单元进一步包括主TLB,用于存储由存储器管理单元从至少一个表 中所检索到的描述符,该方法包括步骤:
在通过存储器管理单元使用访问控制信息为存储器访问请求执行预 定的访问控制功能之前将该访问控制信息从主TLB传输到微TLB;以及   当该处理器工作于所述至少一个非安全模式中时,使用该补充分区校 验逻辑以禁止将允许访问所述安全存储器的任何访问控制信息从主TLB 传输到微TLB。
43.如权利要求40至42中任一项所述的方法,其中该至少一个表 包括当该处理器工作于所述至少一个非安全模式中时使用的非安全表, 其包含通过该非安全操作系统所产生的描述符,在该非安全表中的描述 符与至少部分包括一部分安全存储器的存储器区域相关联的情况下,该 方法包括步骤:
当该处理器工作于非安全模式中时,如果为该虚拟地址所产生的物 理地址在该安全存储器中,使用该补充分区校验逻辑以禁止该内部存储 单元作为访问控制信息存储由该描述符所指定的该物理地址部分。
44.如权利要求43中所述的方法,当从属于权利要求42时,其中 该至少一个表进一步包括安全存储器中的安全表,其包含由该安全操作 系统所产生的描述符,该主TLB包括与存储在该主TLB中的每一描述符 相关联的标志,该方法包括步骤:
当描述符存储在该主TLB中时,设置该相关联的标志以标示该描述 符是来自所述非安全表还是所述安全表。
45.如权利要求44中所述的方法,进一步包括步骤:
当处理器的操作模式在安全模式与非安全模式之间改变时,刷新该 微TLB;
在安全模式中,访问控制信息只从所述相关联标志指示其来自安全 表的主TLB中的描述符传输到微TLB;并且
在非安全模式中,访问控制信息只从所述相关联标志指示其来自非 安全表的主TLB中的描述符传输到微TLB。
46.如权利要求34至45中任一项所述的方法,当其从属于权利要 求39时,其中所述至少一个表包括至少一个页表。
47.如权利要求34至36中任一项所述的方法,其中该补充存储器 包括与系统总线连接的紧密耦合存储器,该方法包括步骤:
在控制寄存器中定义用于该紧密耦合存储器的物理地址范围;并且
当工作于特权安全模式中时,通过处理器设置控制标志以标示仅当 在特权安全模式中执行时,该紧密耦合存储器是否可以通过该处理器控 制,或者在至少一个非安全模式中执行时是否可以通过该处理器控制。
48.如权利要求47中所述的方法,其中当在该至少一个非安全模式 中执行时,如果该紧密耦合存储器由该处理器控制,禁止将安全数据存 储到该紧密耦合存储器中。
49.一种处理数据装置,包括:
设备总线;
设备,其与该设备总线耦合并工作于多个模式和安全域或非安全域 中,包括作为非安全域中的模式的至少一个非安全模式,以及作为安全 域中的模式的至少一个安全模式;
存储器,其与该设备总线耦合并用于存储该设备所请求的数据,该 存储器包括用于存储安全数据的安全存储器和用于存储非安全数据的非 安全存储器,当请求对该存储器中的数据项进行访问时,该设备可以用 于将存储器访问请求发送到设备总线上;以及
分区校验逻辑,与该设备总线耦合,并当工作于所述至少一个非安 全模式中时,在该设备发送存储器访问请求的任何时候检测该存储器访 问请求是否想要访问安全存储器,并根据这种检测禁止该存储器访问请 求所指定的访问。
50.一种在数据处理器装置中控制对存储器的访问的方法,该数据 处理装置包括:设备总线;设备,与该设备总线耦合并工作于多个模式 和安全域或非安全域中,包括作为非安全域中的模式的至少一个非安全 模式,和作为安全域中的模式的至少一个安全模式;以及存储器,与该 设备总线耦合并用于存储该设备所请求的数据,该存储器包括用于存储 安全数据的安全存储器和用于存储非安全数据的非安全存储器,该方法 包括步骤:
(i)当请求对该存储器中的数据项进行访问时,从该设备将存储器 访问请求发送到设备总线上;以及
(ii)当工作于所述至少一个非安全模式中时,在该设备发送存储 器访问请求的任何时候,使用与该设备总线耦合的分区校验逻辑来检测 该存储器访问请求是否想要访问该安全存储器;以及
(iii)根据这种检测,禁止该存储器访问请求所指定的访问。

说明书全文

发明涉及一种用于通过设备控制对存储器访问的技术。

数据处理装置典型地包括处理器,用于运行加载到数据处理装置上 的应用程序。该处理器在操作系统的控制下工作。运行任何特定应用所 需要的数据典型地存储在该数据处理装置的存储器内。可以理解的是, 该数据可以包括包含在应用程序中的指令和/或在处理器上执行这些指 令期间所使用的实际数据值。

在许多例子当中,由至少一个应用程序使用的数据是不应当被处理 器上运行的其他应用程序访问的敏感数据。其中一个例子是,数据处理 装置是智能卡,并且一个应用程序是使用敏感数据,诸如使用例如安全 密钥(secure key)来执行检验、验证、解密等等的安全应用程序。在 这些情况下,显然非常重要的是要确保那些敏感数据安全以便不能由可 以加载到数据处理装置上的其他应用程序访问,例如为试图访问该安全 数据而加载到该数据处理装置上的黑客应用程序。

在已知的系统中,确保操作系统提供足够的安全性以确保一个应用 程序的数据不能由在操作系统的控制下运行的其他应用程序访问,已经 成为操作系统开发员的典型任务。然而随着系统变得更复杂,通常的趋 势是使操作系统变得更大以及更复杂,而在这样的情况下,就逐渐难以 确保操作系统本身内足够的安全性。

在美国专利申请US2002/0007456A1和美国专利US6,282,657B和 US6,292,874B中所公开的例子试图对敏感数据提供安全存储,并提供防 恶意程序代码的保护的系统。

相应地,将期望提供用于试图保持包含在数据处理装置的存储器内 的那些安全数据的安全性的改进技术。

从第一方面看来,本发明提供一种具有安全域和非安全域的处理数 据装置,在安全域中该数据处理装置能够访问在非安全域中所不能访问 的安全数据,该数据处理装置包括:设备总线;设备,与该设备总线耦 合并用于发送关于所述安全域或所述非安全域的存储器访问请求;存储 器,与该设备总线耦合并用于存储该设备所请求的数据,该存储器包括 用于存储安全数据的安全存储器和用于存储非安全数据的非安全存储 器,当请求对该存储器中的数据项进行访问时,该设备可以用于将存储 器访问请求发送到设备总线上;以及分区校验逻辑,与该设备总线耦合 并用于当该设备发送关于所述非安全域的存储器访问请求的时候,检测 该存储器访问请求是否想要访问安全存储器,并根据这种检测禁止该存 储器访问请求所指定的访问。

根据本发明,设备通过设备总线与存储器耦合,并用于发送关于安 全域或非安全域的存储器访问请求。该存储器用于存储该设备所请求的 数据,并且其包括用于存储安全数据的安全存储器和用于存储非安全数 据的非安全存储器。当该设备想要访问存储器中的数据项时,其设置成 将存储器访问请求发送到设备总线上。根据本发明,设置有分区校验逻 辑,其与该设备总线耦合,并用于当该设备发送关于所述非安全域的存 储器访问请求的时候,检测该存储器访问请求是否想要访问安全存储 器,并根据这种检测禁止该存储器访问请求所指定的访问。

因此,该分区校验逻辑设置成管制对存储器的访问,以确保当该设 备发送关于非安全域的存储器访问请求的时候,不出现对安全存储器的 访问。

在一个实施例中,该设备工作于多个模式中,包括至少一个作为非 安全域中的模式的非安全模式,以及至少一个作为安全域中的模式的安 全模式。

该分区校验逻辑可以访问关于该安全存储器与该非安全存储器之间 的分区的信息。可以理解的是,该分区信息可以在实施例中硬连线,其 中安全存储器与非安全存储器之间的物理分区不能改变。然而,在优选 的实施例中,当该设备工作于预定的安全模式时,可以通过该设备配置 安全存储器与非安全存储器之间的分区,并且在这种实施例中,当工作 于该预定的安全模式时,通过该设备管理该分区校验逻辑。因此,如果 欺诈应用程序安装到该设备上想要访问安全数据,该应用程序就不能够 在安全域中运行,并且相应地其不能够改变分区信息。因此,即使该应 用程序能够输出想要访问安全存储器内的位置的存储器访问请求,该分 区校验逻辑就会检测到在该设备的非安全模式中执行的该应用程序想要 访问安全存储器位置,并且会禁止该访问发生。

可以理解的是,该分区校验逻辑有多种不同的方式可以从该设备接 收关于该存储器访问请求是关于哪一域的信息。然而在优选的实施例 中,该设备所发送的存储器访问请求包括域信号,其标示该存储器访问 请求是关于所述安全域还是关于所述非安全域。

在一个实施例中,域信号因此标示该设备是工作于安全域还是非安 全域中,并且于是在域信号表示该设备工作于非安全域的情况下,可以 启动该分区校验逻辑来检测存储器访问请求。在优选的实施例中,当该 设备工作于安全域时,该分区校验逻辑并不执行任何分区校验,因为在 优选的实施例中,当工作于安全模式中时,该设备可以访问安全存储器 和非安全存储器。

可以理解的是,该域信号可以通过各种方式包括在存储器访问请求 中。优选地在硬件级对该域信号进行确定,并因此只可以通过该设备自 身已经验证可以在安全域中运行的应用程序确定。因此,在该设备上执 行的欺诈应用程序将不可能篡改该域信号的设置。更具体地,在优选的 实施例中,该设备具有用于将该域信号输出到设备总线上的预定管脚, 并且缺省情况下将该域信号设置为表示该设备工作于非安全模式。因 此,在一个实施例中,只有当设备在安全域中执行安全应用程序时,该 域信号才被设置表示该设备工作于安全模式,并且只有当设置了域信号 时,该分区校验逻辑才允许访问存储器中的安全数据。

可以理解的是,可以通过各种方式包含该分区校验逻辑。然而在优 选的实施例中,该分区校验逻辑设置在与设备总线耦合的判优器内,以 在发送到设备总线上的存储器访问请求之间进行仲裁。已经发现,通常 将该分区校验逻辑与该判优器关联起来,判优器在相互冲突的存储器访 问请求之间确定优先级,并且该分区校验逻辑确定判优器所准予的存储 器访问请求实际上是否可以允许出现。

在优选的实施例中,该设备可以在非安全操作系统的控制下在所述 非安全域中工作,并且可以在安全操作系统的控制下在所述安全域中工 作。该安全操作系统典型地比该非安全操作系统小的多,并且可以看作 为提供用来控制某些安全功能的安全核。通过这种方式,该安全域可以 看作为提供安全世界,以能够在受控的环境中执行某些敏感操作。其它 应用程序然后可以保留在非安全域中,其可以当作为非安全世界。

可以理解的是,该设备可以采取各种形式,并且实际上可以有多个 与总线耦合的这种设备。在多个设备与总线耦合的情况下,当该设备工 作于安全模式中时,可以工作于安全和非安全模式中的每一个设备都可 以独立地控制分区校验逻辑,在这种情况下,该分区校验逻辑访问具体 到每一单独设备的分区信息。然而优选地,其中的一个设备负责管理该 分区校验逻辑。

在优选的实施例中,至少一个设备是包括处理器的芯片,该芯片进 一步包括存储器管理单元,其用于当处理器产生存储器访问请求时执行 一个或多个预定的访问控制功能,以控制该存储器访问请求发送到设备 总线上。可以在相同的芯片上或芯片之外设置该数据处理装置的一个或 多个其它部件。

可以理解的是,与该设备总线耦合的存储器可以采取各种形式,例 如某些周边设备中的随机访问存储器(RAM)、只读存储器(ROM)、硬 盘、寄存器等。除了这种存储器之外,也可以理解的是,当该设备是包 括处理器以及与其相关联的系统总线的芯片时,也可以有与该系统总线 连接的某个存储器,例如高速缓冲存储器、紧密耦合存储器(TCM)等。

因此,在某些实施例中,该芯片进一步包括:通过系统总线与处理 器耦合的补充存储器,该补充存储器用于存储处理器所要求的数据,该 补充存储器包括用于存储安全数据的安全补充存储器和用于存储非安全 数据的非安全补充存储器;以及补充分区校验逻辑,与该系统总线耦合, 并用于当工作于所述非安全域中的非安全模式下时,当处理器产生存储 器访问请求的时候,检测该存储器访问请求是否想要访问安全存储器或 安全补充存储器,并根据这种检测禁止该存储器访问请求所指定的访 问。

由于与该设备总线耦合的分区校验逻辑不能执行关于与该系统总线 连接的存储器的任何分区校验功能,在这种实施例中设置补充分区校验 逻辑,以确保当处理器工作于非安全模式中时,其不能访问该安全存储 器系统的任何部分,不管是与该设备总线耦合的该安全存储器的部分, 还是包含安全数据的该补充存储器的部分。

根据本发明的一个实施例,该处理器可以工作于多个模式,包括至 少一个非安全模式,其是该非安全域中的模式,以及至少一个安全模式, 其是该安全域中的模式。当工作于非安全模式下,该处理器可以在非安 全操作系统的控制下工作,例如标准预先存在的操作系统。然而,当工 作于安全模式下,该处理器可以在安全操作系统的控制下工作。该安全 操作系统优选地比非安全模式要相对较小,并且因此可以采取当执行某 些安全功能时所使用的安全核的形式。通过这是方式,该安全域可以看 作为提供安全世界,以能够在受控的环境中执行某些敏感操作。其它应 用程序然后可以保留在非安全域中,其可以当作为非安全世界。

在一个实施例中设置有存储器管理单元,其根据当处理器想要访问 存储器中的数据项时,所接收到的由处理器发送的存储器访问请求,可 以执行一个或多个预定的访问控制功能,以控制将该存储器访问请求发 送到该存储器。作为范例,这种预定的访问控制功能可以包括将虚拟地 址转换成物理地址,检查访问许可权限,以确保其当前模式下的处理器 的操作被授权访问所请求的数据项,分析区域属性,例如用来确定该数 据项是否可以高速缓存、缓冲等,如本领域的熟练技术人员所可以理解 的。

而且,根据该实施例,通过安全操作系统管理该补充分区校验逻辑。 由于该补充分区校验逻辑通过安全操作系统管理,因此不能够通过非安 全应用程序改变该补充分区校验逻辑的设置,于是禁止了对安全数据的 未授权访问。

该补充分区校验逻辑可以访问关于该安全存储器与该非安全存储器 之间的分区的信息。可以理解的是,该分区信息可以在实施例中硬连线, 其中安全存储器与非安全存储器之间的物理分区不能改变。然而在优选 的实施例中,当该设备工作于预定的安全模式时,可以通过该设备配置 安全存储器与非安全存储器之间的分区,并且在这种实施例中,当工作 于该预定的安全模式时,通过该处理器管理该补充分区校验逻辑。因此, 如果欺诈应用程序安装到该设备上想要访问安全数据,该应用程序就不 能够在安全域中运行,并且相应地其不能够改变分区信息。因此,即使 该应用程序能够输出想要访问安全存储器内的位置的存储器访问请求, 该补充分区校验逻辑就会检测到在该处理器的非安全模式中执行的该应 用程序想要访问安全存储器位置,并且会禁止该访问发生。

本领域的熟练技术人员可以理解的是,根据该数据处理系统的结 构,该存储器访问请求可以指定虚拟地址,或者在某些实施例中可以指 定物理地址。然而,在优选的实施例中,当该处理器工作于非安全模式 中时,存储器访问请求会指定虚拟地址,并且通过该非安全操作系统控 制该存储器管理单元。在这种实施例中,通过存储器管理单元执行的一 个优选访问控制功能包括虚拟地址到物理地址的转换,如果该存储器管 理单元所产生的物理地址在安全存储器内,该补充分区校验逻辑可以用 于禁止该存储器访问请求所指定的访问。

而且,在优选的实施例中,当该处理器工作于安全模式中,该存储 器访问请求可以指定虚拟地址,在这种情况下通过安全操作系统控制该 存储器管理单元,并且通过该存储器管理单元所执行的其中一个所述预 定的访问控制功能包括虚拟地址到物理地址的转换,该补充分区校验逻 辑在至少一个安全模式中不被使用。

在一个实施例中,该处理器操作的所有模式都采用用于存储器访问 请求的虚拟地址,并且该补充分区校验逻辑设置在该存储器管理单元 内,并且其在该处理器工作于非安全模式中的时候才工作。因此,与工 作模式无关,所采用的该存储器管理单元执行所需要的地址转换,以及 其它任何所需要的访问控制功能,但是优选地只有当该处理器工作于非 安全模式中时,才使用该补充分区校验逻辑,由于典型地当该处理器工 作于安全模式中时,其对存储器中数据的访问没有限制。然而可以理解 的是,在替换的实施例中,对于某些安全模式的操作可以提供某一程度 的分区校验。

在本发明的替换实施例中,至少有一个特定操作的安全模式,其中 通过物理地址直接指定该存储器访问请求,并且因此在这种特定安全模 式中,不需要执行任何虚拟地址到物理地址的转换。虽然直接指定物理 地址的方法不如虚拟地址的方法灵活,但是其本质上更安全,因为不需 要执行虚拟地址与物理地址之间的映射。因此在一个特定的优选实施例 中,直接指定用于存储器访问请求的物理地址的安全模式是操作的最安 全模式,在优选的实施例中,该模式称之为操作的监控模式,并且负责 管理该数据处理装置在该非安全模式与该安全模式之间的转变。

在这种优选的实施例中,该数据处理装置进一步包括在其内部设置 该补充分区校验逻辑的存储器保护单元,通过该安全操作系统管理该存 储器保护单元,其中当该处理器工作于特定的安全模式中时,该存储器 访问请求指定用于存储器位置的物理地址,该存储器管理单元没有被使 用,并且该存储器保护单元用于至少执行存储器访问许可处理,以验证 是否可以在所述特定安全模式中访问该物理地址所指定的存储器位置。 因此,当该处理器工作于特定的安全模式时,单独通过该安全操作系统 所管理的存储器保护单元来管理访问。

在优选的实施例中,该存储器包括至少一个表,其包含多个存储器 区域的每一个的相关描述符,该存储器管理单元包括内部存储单元,用 于存储从该描述符得到的访问控制信息,该存储器管理单元使用其来为 该存储器访问请求执行预定的访问控制功能,当该处理器工作于所述至 少一个非安全模式中时,该补充分区校验逻辑用于禁止该内部存储单元 存储允许访问所述安全存储器的访问控制信息。

本领域的熟练技术人员可以理解的是,描述符的这种表可以采取多 种形式,但是在优选的实施例中,这种表是为多个存储器页的每一个定 义在其中描述与该存储器页相关的访问控制信息的对应描述符的页表。 因此,该描述符例如可以定义该页的虚拟地址部分和对应的物理地址部 分、访问许可信息,诸如在管理模式、用户模式等下是否可以访问该页, 以及区域属性,诸如包含在该页中的数据是否可以高速缓存、缓冲等。

在存储器访问请求指定虚拟地址的实施例中,并且因此表中的描述 符至少包含用于对应存储器区域的虚拟地址部分和对应的物理地址部 分,当该处理器工作于所述至少一个非安全模式中时,如果然后为该虚 拟地址部分所产生的物理地址在该安全存储器中,该补充分区校验逻辑 用于禁止该内部存储单元作为访问控制信息存储该物理地址部分。

可以理解的是,在正确运行的系统中,处理器在非安全模式下运行 的非安全应用程序典型地不会知晓安全存储器,并且当处理器工作于这 种非安全模式下时,处理器参照其将虚拟地址转换为物理地址的表不应 该参照包括任何安全存储器部分的存储器区域。然而,在非安全应用程 序是仅仅被设计用来试图访问安全信息的黑客应用程序的例子中,可以 理解的是,当在非安全模式下,其可能会破坏处理器所参照的表中的描 述符,而产生指向部分安全存储器的映射。然而,由于在安全域中通过 安全操作系统管理该补充分区校验逻辑,其不会被这种行为破坏,并且 相应地可以检测出其中从描述符所检索的物理地址部分的这种情况是这 样的,将从特定的虚拟地址产生的物理地址在该安全存储器内。相应地, 如果存储器中的表欺诈性地改变了,该补充分区校验逻辑就会禁止存储 器管理单元的内部存储单元存储已经改变的访问控制信息,如果其会访 问安全存储器的话,并因此禁止访问的发生。

该存储器管理单元内的内部存储单元可以采取各种形式。然而在优 选的实施例中,该内部存储单元是转换后备缓冲器(TLB),用于为多个 虚拟地址部分存储从至少一个表检索到的对应描述符得到的对应物理地 址部分。

在一个实施例中,单个TLB会包含在存储器管理单元中,并且该补 充分区校验逻辑用于确保如果该处理器工作于非安全模式下,从存储器 中的表检索到的任何描述符不会存储在TLB中,并且根据该描述符内的 访问控制信息所产生的该物理地址会指向安全存储器中的位置。当在操 作的安全与非安全模式之间切换时,该TLB将被刷新,以确保与安全模 式相关的描述符在非安全模式下无效,反之亦然。

然而在替换的实施例中,该内部存储单元包括微TLB和主TLB,该 主TLB用来存储由存储器管理单元从存储器中的至少一个表所检索到的 描述符,并且在存储器管理单元使用访问控制信息为存储器访问请求执 行预定的访问控制功能之前将该访问控制信息从主TLB传输到微TLB。 在这种实施例中,当该处理器工作于所述至少一个非安全模式中时,该 补充分区校验逻辑用于禁止将允许访问所述安全存储器的任何访问控制 信息从主TLB传输到微TLB。

因此在这种实施例中,可以将描述符拷贝到该主TLB中,但是当处 理器工作于非安全模式中时,该补充分区校验逻辑用于管制主TLB与微 TLB之间的交互,以确保允许访问安全存储器的访问控制信息不会传输到 该微TLB。

在优选的实施例中,在存储器中设置多个表,并且根据操作的模式 使用不同的表,这样从而就允许为不同的操作模式定义不同的访问控制 信息。更具体地在优选的实施例中,该至少一个表包括当该处理器工作 于所述至少一个非安全模式中时使用的非安全表,其包含通过该非安全 操作系统所产生的描述符,在该非安全表中的描述符与至少部分包括一 部分安全存储器的存储器区域相关联的情况下,当该处理器工作于非安 全模式中时,如果然后为该虚拟地址部分所产生的物理地址在该安全存 储器中,该补充分区校验逻辑用于禁止该内部存储单元作为访问控制信 息存储由该描述符所指定的该物理地址部分。

另外,在至少一个安全模式中出现虚拟地址到物理地址的转换的这 种优选实施例中,该至少一个表进一步包括安全存储器中的安全表,其 包含由该安全操作系统所产生的描述符,该主TLB具有存储在该主TLB 中与每一描述符相关联的标志,以标示该描述符是来自所述非安全表还 是来自所述安全表。

通过在主TLB中包括标志来指示对应的描述符是来自所述非安全表 还是所述安全表,当处理器的操作在安全域与非安全域之间移动,不必 刷新该主TLB,或者反之亦然。当访问控制信息将要从主TLB中的描述 符传输到微TLB中时,只考虑该处理器所工作的当前域适当给出的那些 描述符。相应地,如果该处理器工作于非安全模式中,因此工作于非安 全域中,那么只有其相关的标志指示其来自非安全表的主TLB中的这些 描述符将被当作候选描述符,以从其中得到所要传输给微TLB的访问控 制信息。

在这种优选的实施例中,当处理器的操作模式在安全模式与非安全 模式之间改变的时候,优选地刷新该微TLB,在安全模式中,访问控制信 息只从所述相关标志指示其来自安全表的主TLB中的描述符传输到微 TLB,并且在非安全模式中,访问控制信息只从所述相关标志指示其来自 非安全表的主TLB中的描述符传输到微TLB。该微TLB通常明显小于该 主TLB,因此当处理器在安全域与非安全域之间移动的时候,该微TLB 的刷新操作不会显著影响性能。由于通过该存储器管理单元执行的预定 访问控制功能只与该微TLB中的访问控制信息有关,上述机构确保对于 处理器的任何特定操作模式,该微TLB只包含从适当的存储器表得到的 描述符中得出的访问控制信息,即当处理器工作于非安全模式时从非安 全表,或者当处理器工作于安全模式时从安全表得到的描述符。

在操作的所有安全模式都直接在它们的存储器访问请求中指定物理 地址的实施例中,可以理解的是,将不需要主TLB中的这种标志,由于 该主TLB只存储非安全描述符。

可以理解的是,该存储器可以采取各种形式,并且可以位于该数据 处理装置内的各种位置。例如,该存储器可以包括一个和多个多种元件, 例如设置在多个周边设备中的随机访问存储器(RAM)、只读存储器 (ROM)、硬盘驱动、紧密耦合存储器(TCM)、一个和多个高速缓存、 各种寄存器等,并且存储器的地址范围能够允许单独地寻址存储器的这 些各个元件。相应地,同时在某些实施例中,至少部分存储器可以与设 备总线耦合,如前所述,存储器的其它部件可以与不同的总线耦合。

例如在一个实施例中,处理器与系统总线耦合,并且部分存储器包 括与系统总线耦合的紧密耦合存储器(TCM)。如本领域的熟练技术人员 可以理解的是,这种TCM通常用来存储处理器频繁使用的数据,因此通 过系统总线访问TCM明显比访问外部存储器快,例如该设备总线上的存 储器。通常,可以在该数据处理装置的控制寄存器中定义TCM的物理地 址范围。然而这样可以产生某些安全问题,可以如下面的范例所描述。

当处理器工作于非安全模式中时,该非安全操作系统可以允许对该 控制寄存器编程,以定义作为TCM存储器的物理地址空间,其与部分安 全存储器交叠。当该处理器接下来工作于安全模式中时,安全操作系统 可能会将安全数据存储在该安全存储器部分中,在这种情况下该安全数 据典型地会存储在该TCM中,而不是外部存储器中,因为TCM典型地具 有更高的优先级。然而,如果该非安全操作系统接下来再次改变该TCM 的物理地址范围的设置,使得前面的安全存储器部分现在映射到存储器 的非安全物理区域中,可以理解的是,该非安全操作系统然后可以访问 该安全数据,因为补充分区校验逻辑将该区域看作非安全的,并不会断 定异常。因此总之,如果将TCM配置用作普通局部RAM并且不作为智能 高速缓存,在该非安全操作系统可以将TCM基址寄存器移动到非安全物 理地址时,其就可能读取安全世界数据。

为了避免这种情况,优选实施例的该数据处理装置优选地设置有控 制标志,当工作于特权安全模式中时,其可以通过处理器设置,以标示 仅当在特权安全模式中执行时,该紧密耦合存储器是否可以通过处理器 控制,或者在至少一个非安全模式中执行时是否可以通过处理器控制。 通过该安全操作系统设置控制标志,并且实际上定义该TCM可以通过该 安全特权模式还是通过非安全模式被控制。因此,可以定义的一个配置 就是,仅当处理器工作于操作的特权安全模式中时才控制TCM。在这种实 施例中,任何试图对该TCM控制寄存器的非安全访问都会导致需要输入 未定义的指令异常。

在可替换的配置中,当工作于操作的非安全模式中时,可以通过处 理器控制该TCM。在这种实施例中,只通过非安全应用程序使用TCM。安 全数据不能够存储到TCM上,或从其加载。因此,当执行安全访问时, 不在TCM内执行查找,看地址是否匹配该TCM地址范围。在一个优选的 实施例中,配置TCM,使得其只被非安全操作系统使用,这样的好处就是 不需要改变非安全操作系统,因为具有对非安全操作系统有效的TCM的 操作以普通方式处理。

从第二方面看来,本发明提供一种在具有安全域和非安全域的数据 处理装置中控制对存储器的访问的方法,在安全域中该数据处理装置能 够访问在非安全域中所不能访问的安全数据,该数据处理装置包括:设 备总线;设备,与该设备总线耦合并用于发送关于所述安全域或所述非 安全域的存储器访问请求;以及存储器,与该设备总线耦合并用于存储 该设备所请求的数据,该存储器包括用于存储安全数据的安全存储器和 用于存储非安全数据的非安全存储器,该方法包括步骤:(i)当请求对 该存储器中的数据项进行访问时,从设备将存储器访问请求发送到设备 总线上;以及(ii)在该设备发送关于所述非安全域的存储器访问请求 的任何时候,使用与该设备总线耦合的分区校验逻辑检测该存储器访问 请求是否想要访问该安全存储器;以及(iii)根据这种检测,禁止该存 储器访问请求所指定的访问。

从另一方面看来,本发明提供一种处理数据装置,包括:设备总线; 设备,与该设备总线耦合并工作于多个模式和安全域或非安全域中,包 括作为非安全域中的模式的至少一个非安全模式,以及作为安全域中的 模式的至少一个安全模式;存储器,与该设备总线耦合并用于存储该设 备所请求的数据,该存储器包括用于存储安全数据的安全存储器和用于 存储非安全数据的非安全存储器,当请求对该存储器中的数据项进行访 问时,该设备可以用于将存储器访问请求发送到设备总线上;以及分区 校验逻辑,与该设备总线耦合,并当工作于所述至少一个非安全模式中 时,在该设备发送存储器访问请求的任何时候,检测该存储器访问请求 是否想要访问安全存储器,并根据这种检测禁止该存储器访问请求所指 定的访问。

从另一方面看来,本发明提供一种在数据处理器装置中控制对存储 器的访问的方法,该数据处理装置包括:设备总线;设备,与该设备总 线耦合并工作于多个模式和安全域或非安全域中,包括作为非安全域中 的模式的至少一个非安全模式,和作为安全域中的模式的至少一个安全 模式;以及存储器,与该设备总线耦合并用于存储该设备所请求的数据, 该存储器包括用于存储安全数据的安全存储器和用于存储非安全数据的 非安全存储器,该方法包括步骤:(i)当请求对该存储器中的数据项进 行访问时,从该设备将存储器访问请求发送到设备总线上;以及(ii) 当工作于所述至少一个非安全模式中时,在该设备发送存储器访问请求 的任何时候,使用与该设备总线耦合的分区校验逻辑检测该存储器访问 请求是否想要访问该安全存储器;以及(iii)根据这种检测,禁止该存 储器访问请求所指定的访问。

附图说明

参考如在附图中所述的优选实施例,仅通过举例来进一步描述本发 明,其中:

图1是示意性地示例说明根据本发明的优选实施例的数据处理装置 的框图

图2示意性地示例说明在非安全域和安全域(secure domain)中 操作的不同程序;

图3示意性地示例说明与不同安全域有关的处理模式矩阵;

图4和5示意性地示例说明处理模式和安全域间的不同关系;

图6示例说明根据处理模式,处理器的寄存器组的一个程序员模型;

图7示例说明提供用于安全域和非安全域的单独的寄存器组的例 子;

图8示意性地示例说明具有经单独的监视模式进行的安全域间的切 换的多个处理模式;

图9示意性地示例说明使用模式切换软件中断指令,用于安全域切 换的情形;

图10示意性地示例说明如何由系统执行非安全中断请求和安全中断 请求的一个例子;

图11A和11B示意性地示例说明根据图10,非安全中断请求处理的 例子和安全中断请求处理的例子;

图12示例说明与图10所示相比,用于处理非安全中断请求信号和 安全中断请求信号的另一方案;

图13A和13B示例说明根据图12所示的方案,用于处理非安全中断 请求和安全中断请求的示例情况;

图14是矢量中断表的例子;

图15示意性地示例说明与不同安全域有关的多个矢量中断表;

图16示意性地示例说明异常控制寄存器;

图17是示例说明以修改安全域设置的方式,试图修改处理状态寄存 器的指令如何生成反过来触发进入监视模式和运行监视程序的单独的模 式改变异常的流程图

图18示意性地表示在多个模式中操作的处理器的控制的线程,其中 中断监视模式中的任务;

图19示意性地表示在多个模式中操作的处理器的控制的不同线程;

图20示意性地表示在多个模式中操作的处理器的控制的另一线程, 其中在监视模式中允许中断;

图21至23示例说明根据另一示例性实施例,用于在安全和非安全 域间切换的不同处理模式和情形的视图;

图24示意性地示例说明将安全处理选项增加到传统的RAM内核上的 原理;

图25示意性地示例说明具有安全和非安全域和复位的处理器;

图26示意性地示例说明使用软件伪中断,将处理请求递送到暂停的 操作系统;

图27示意性地示例说明经软件伪中断,将处理请求递送到暂停的操 作系统的另一例子;

图28是示意性地示例说明在接收在图26和27中所产生的类型的软 件伪中断后执行的处理的流程图;

图29和30示意性地示例说明在安全操作系统跟踪由非安全操作系 统执行的可能任务切换后的任务;

图31是示意性地示例说明在接收图29和30的安全操作系统处的呼 叫时执行的处理的流程;

图32是示意性地示例说明在具有多个操作系统的系统中出现的中断 优先级反转的问题的图,其中可以由不同操作系统处理不同中断;

图33是示意性地示例说明使用插桩中断)处理器来避免在图32中 所示的问题的图;

图34示意性地示例说明如何处理不同类型和优先级的中断,取决于 它们是否能够由采用不同操作系统来实现的中断进行中断;

图35示例说明当处理器在监视模式中操作时,如何用监视程序模式 特定处理器结构数据来覆盖处理器结构数据;

图36是示例说明根据本发明的一个实施例,当在安全域和非安全域 间转变时,如何切换处理器结构数据的流程图;

图37是示例说明控制访问存储器的用在本发明的一个实施例中的存 储器管理逻辑的图;

图38是示例说明用来控制存储器的访问的本发明的第二实施例的存 储器管理逻辑的框图;

图39是示例说明处理指定虚拟地址的存储器访问请求的存储器管理 逻辑内,在本发明的一个实施例中执行的过程的流程图;

图40是示例说明在处理指定物理地址的存储器访问请求的存储器管 理逻辑内,在本发明的一个实施例中执行的过程的流程图;

图41示意性地示例说明当发出存储器访问请求的设备正在非安全模 式中操作时,优选实施例的分区校验器(partition checker)如何用 来防止访问物理地址;

图42是示例说明在本发明的优选实施例中,非安全页表和安全页表 的用法的图;

图43是示例说明用在优选实施例的主翻译后援缓冲器(TLB)内的 两种形式的标记的图;

图44示例说明在本发明的一个实施例中,在引导级后如何分区存储 器;

图45示例说明根据本发明的实施例,根据引导分区的性能,通过存 储器管理单元映射非安全存储器;

图46示例说明根据本发明的实施例,如何将一部分存储器的权利修 改成允许安全应用程序与非安全应用程序共享存储器;

图47示例说明根据本发明的一个实施例,如何将设备连接到数据处 理装置的外部总线;

图48是示例说明根据本发明的第二实施例,如何将设备耦合到外部 总线的框图;

图49示例说明在使用单个页表集的实施例中,物理存储器的配置;

图50A示例说明使用两个MMUs来经中间地址执行从虚拟地址到物理 地址的转换的配置;

图50B通过举例,示例说明使用两个MMUs来经中间地址,执行从虚 拟地址到物理地址的转换的另一配置;

图51通过举例,示例说明用于安全域和非安全域的物理地址空间和 中间地址空间的对应关系;

图52示例说明通过操作与第二MMU有关的页表,在安全和非安全域 间交换存储区;

图53是示例说明使用单个MMU的实现的实施例,以及其中,主TLB 中的差错将导致被调用来确定虚拟到物理地址转换的异常;

图54是示例说明由处理器内核执行以便对在图53的MMU的主TLB 中出现未命中时发出的异常起使用的过程的流程图;

图55是示例说明在一个实施例的数据处理装置内提供的元件的框 图,其中高速缓存具有有关存储在单个高速缓存线中的数据是安全数据 还是非安全数据的信息;

图56示例说明在图55中所示的存储器管理单元的结构;

图57是示例说明在图55的数据处理装置内执行的、处理非安全存 储器访问请求的处理的流程图;

图58是示例说明在图55的数据处理装置内执行的以便处理安全存 储器访问请求的处理的流程图;

图59示意性地表示用于不同模式在处理器上运行的程序的监视功能 的可能粒度;

图60表示启动不同监视功能的可能方式;

图61表示用于控制不同监视功能的可用性的控制值的表;

图62表示正沿触发的触发器视图;

图63表示扫描链单元(scan chain cell);

图64表示在扫描链中的多个扫描链单元;

图65表示调试TAP控制器

图66A表示具有JADI输入的调试TAP控制器;

图66B表示具有旁通寄存器(bypass register)的扫描链单元;

图67示意性地示例说明包括内核、扫描链和调试状态和控制寄存器 的处理器;

图68示意性地示例说明控制调试或跟踪初始化的因素;

图69A和69B表示调试粒度的概述;

图70示意性地示例说明在运行时的调试粒度;以及

图71A和71B分别表示在安全区域中允许调试时和不允许调试时的 监视调试。

具体实施方式

图1是示例说明根据本发明的优选实施例的数据处理装置的结构 图。数据处理装置包含处理器内核10,在其内提供用来执行指令序列的 算术逻辑单元(ALU)16。ALU16所需的数据存储在寄存器组14中。内 核10具有各种监视功能以允许俘获表示处理器内核的活动性的诊断数 据。例如,提供嵌入跟踪模(ETM)22,用于根据定义将跟踪的活动性 的EMT22内的某一控制寄存器26的内容,产生处理器内核的某些活动性 的实时跟踪。通常,将跟踪信号输出到跟踪缓冲器,随后可从跟踪缓冲 器对其进行分析。提供矢量中断控制器21,用于管理由各种外设(未示 出)引发的多个中断的维护。
另外,如图1所示,内核10内所能提供的另一监视功能是调试功能, 数据处理装置的外接调试应用程序能够经由联合测试访问组(JTAG)控 制器18与内核10通信,联合测试访问组(JTAG)控制器18与一个或多 个扫描链12耦合。能经扫描链12和JTAG控制器18,将有关处理器内 核10的各个部分的状态的信息输出到外部调试应用程序。使用内置在线 仿真电路(ICE)20来将识别何时启动和停止调试功能的条件存储在寄存 器24内,因此,例如,将用来存储断点、观察点等等。
经配置成管理由内核10发出的访问数据处理装置的存储器中的单元 的存储器访问请求的存储器管理逻辑30,将内核10耦合到系统总线40。 通过直接连接到系统总线40,例如图1中所示的紧耦合存储器(TCM) 36和高速缓存38,可以嵌入存储器的某些部分。也可以提供另外的设备, 用于访问这些存储器,例如直接存储器访问(DMA)控制器32。通常,将 提供各种控制寄存器34,用于定义芯片的各个元件的某些控制参数,这 些控制寄存器在此也称为协处理器(CP)15寄存器。
经外部总线接口42,包含内核10的芯片也可以耦合到外部总线70 (例如根据由ARM Limited开发的“高级微控制器总线体系结构”(AMBA) 规格操作的总线),以及也可以将各种设备连接到外部总线70。这些设 备可以包括主设备,诸如数字信号处理器(DSP)50,或直接存储器访问 (DMA)控制器52,以及各种从设备,诸如引导ROM44、屏幕驱动器46、 外部存储器56、输入/输出(I/O)接口60或键存储单元64。在图1中 所示的这些各种从设备也均能视为数据处理装置的整个存储器的包含部 件。例如,引导ROM44将形成数据处理装置的可访问存储器的一部分, 如外部存储器56。另外,诸如屏幕驱动器46、I/O接口60和键存储单 元64的设备均分别包括内部存储元件,诸如寄存器或缓冲器48、62、 66,可单独地寻址为数据处理装置的整个存储器的一部分。如稍后更详 细地论述,存储器的一部分,例如外部存储器56的一部分,将用来存储 定义与存储器访问控制有关的信息的一个或多个页表58。
如本区域的技术人员将意识到的,外部总线70通常将具有判优器和 解码器逻辑54、使用判优器在由多个主设备,例如内核10、DMA 32、 DSP50、DMA52等等发出的多个存储器访问请求间判优,而使用解码器来 确定外部总线上的哪个从设备将处理任何特定的存储器访问请求。
尽管在一些实施例中,可以在包含内核10的芯片外提供外部总线, 在其他实施例中,也可以在具有内核10的芯片上提供外部总线。其优点 在于与外部总线为芯片外时相比,外部总线上的安全数据更容易保密。 当外部总线是芯片外时,可以使用数据加密技术来增加安全数据的安全 性。
图2示意性地示例说明在具有安全域和非安全域的处理系统上运行 的各种程序。该系统具有至少部分在监视模式中执行的监视程序72。在 该示例性实施例中,安全状态标记仅可在监视模式中访问的写入,以及 可以通过监视程序72写入。监视程序72负责管理安全域和非安全域间 的来回改变。从核心外的观点看,监视程序模式总是安全以及监视程序 位于安全存储器中。
在非安全域内,提供非安全操作系统74和与非安全操作系统74协 同执行的多个非安全应用程序76、78。在安全域中,提供安全核心程序 80。安全核心程序80能视为形成安全操作系统。通常,这些安全核心程 序80将设计成仅提供对必须在安全域中提供的处理活动性很关键的那些 功能,以便安全核心80能尽可能小和简单,因为这将使其更趋安全。示 出了结合安全核心80执行的多个安全应用程序82、84。
图3示例说明与不同安全域有关的处理模式的矩阵。在该示例性例 子中,相对于安全域,处理模式是对称的,因此,模式1和模式2以安 全和非安全形式存在。
监视模式在系统中具有最高安全访问级,以及在该示例性实施例 中,是有权在任一方向中,在非安全域和安全域间切换系统的唯一模式。 因此,经切换,发生到监视模式的所有域切换以及在监视模式内执行监 视程序72。
图4示意性地示例说明另一组非安全域处理模式1、2、3和4和安 全域处理模式a、b和c。与图3的对称排列相反,图4表示一些处理模 式可能不存在于安全域的一个或另一个中。监视模式86同样示例说明为 横跨于非安全域和安全域。监视模式86能视为安全处理模式,因为在该 模式中可以改变安全状态标记以及监视模式中的监视程序72具有自己设 置安全状态标记的能,总的来说,有效地提供系统内最大安全级。
图5示意性地示例说明关于安全域的处理模式的另一配置。在该配 置中,识别安全和非安全域以及另外的域。该另外的域可以是以不需要 与所示的安全域或非安全域交互作用的方式,独立于系统的其他部件, 这样使得其发射与所属的这些部件无关。
如将意识到的,处理系统,诸如微型处理器通常具有寄存器组88, 其中,可以存储操作数值。图6示例说明在某些处理模式中,具有为某 些寄存器数提供的专用寄存器的示例性寄存器组的程序员模式视图。更 具体地说,图6的例子是具有用于每个处理模式的专用保存程序状态寄 存器、专用栈指针寄存器和专用连接寄存器R14的已知ARM寄存器组(例 如在ARM Limited的ARM处理器,Cambridge,England中提供的)的扩 展,但在这种情况下,通过提供监视模式来扩展。如图6所示,中断模 式具有所提供的另外的专用寄存器以便在进入快速中断模式时,不需要 保存,然后从其他模式恢复寄存器内容。用与快速中断模式相似的方式, 在另外的实施例,监视模式可以具有另外的专用寄存器以便加速安全域 转换的处理,以及降低与这些转换有关的系统等待时间。
图7示意性地示例说明另一实施例,其中以分别用在安全域和非安 全域的两个完全和单独的寄存器组的形式,提供寄存器组88。这是当切 换到非安全域时,能防止存储在可在安全域中操作的寄存器内的安全数 据被访问的一种方法。然而,这样配置妨碍数据从非安全域向安全域传 送的可能性,而通过使用在寄存器中快速和有效机制对其进行替换,则 可以允许并且是所期望的,该寄存器在非安全域和安全域中都是可以访 问的。
具有安全寄存器组的重要优点是避免在从一个区域转换到另一个之 前,刷新寄存器的内容的需要。如果等待时间不是主要问题,可以使用 用于安全域区域,不具有重复寄存器的更简单的硬件系统,例如图6。监 视模式负责从一个域转换到另一个域。通过至少部分在监视模式中执行 的监视程序,执行恢复上下文、保存先前上下文以及刷新寄存器。该系 统由此表现为虚拟化模式。下面将进一步论述这种实施例。将参考例如 在其上构造在此所述的安全特性的ARM7的程序员模式。
处理器模式
代替安全模式中的复制模式,相同的模式支持安全和非安全域(见 图8)。监视模式知道内核的当前状态,不管是安全还是不安全(例如, 如从所存储的S位所读出为协处理器配置寄存器)。
在图8中,只要出现SMI(软件监视中断指令),内核进入监视模 式以便适当地从一个区域切换到另一个。
参考图9,其中从用户模式允许SMIs:
1.调度程序运行线程1
2.线程1需要执行安全函数=>SMI安全调用,内核进入监视模式。 在硬件控制下,当前PC和CPRS(当前处理器状态寄存器)存储在R14_mon 和SPSR_MON(为监视模式而保存的处理器状态寄存器)并禁止IRQ/FIQ 中断。
3.监视程序执行下述任务:
-设置S位(安全状态标志)
-至少将R14_mon和SPSR_mon保存在堆栈中以便如果在运行安全 应用程序时,出现异常,不会丢失非安全上下文。
-校验是否运行新线程:安全线程1。机制(在一些实施例中经线 程ID表)表示线程1在安全区域中是有效的。
-重新允许IRQ/FIQ中断。然后,在安全用户模式中,安全应用能 开始。
4.运行安全线程1直到它结束为止,然后转移(SIM)到监视程序 模式的“从安全返回”函数上(当内核进入监视模式时,禁止IRQ/FIQ 中断)。
5.“从安全返回”函数执行下述任务:
-表明结束安全线程1(例如,在线程ID表的情况下,从表移出 线程1)。
-从栈非安全上下文恢复以及清除所需寄存器,以便只要返回到非 安全域,就无法读取安全数据。
-然后通过SUBS指令(这使程序计数器恢复到正确点以及更新状 态标志),转移到非安全域,恢复PC(从R14_mon恢复)和CPSR(从 SPSR_mon)。因此,非安全域中的返回点是在线程1中的在前执行的SMI 后的指令。
6.线程1执行直到结束为止,然后将控制返回给调度程序。
根据具体的实施例,在监视程序和安全操作系统间可以分开一些上 述功能性。
在其他实施例中,不期望在用户模式中出现允许SMIs。
安全区域进入
复位
当出现硬件复位时,禁止MMU以及通过所设置的S位,使ARM内核 (处理器)转移到安全监督模式。只要终止安全引导,可以执行进入监 视模式的SMI,以及如果需要的话,监视能切换到非安全区域中的OS(非 安全svc模式)。如果期望使用传统的OS,这能在安全监督模式中简单 地引导以及忽略安全状态。
SMI指令
能从非安全域中的任何非安全模式调用该指令(模式切换软件中断 指令)(如前所述,可以期望将SMIs限制到特许模式),但由相关矢量 确定的目标进入点总是固定的并且在监视模式内。一直到SMI处理程序 以便转移到必须运行的适当的安全函数(例如由通过指令传递的操作数 控制)。
使用在图6类型寄存器组内的寄存器组的共享寄存器,执行将参数 从非安全区域传递到安全区域。
当在非安全区域中出现SMI时,用硬件,ARM内核可以执行下述动 作:
-使SMI矢量(由于现在将处于监视模式中,允许安全存储器访问) 转移到监视模式中
-将PC保存在R14_mon中以及使CPSR保存在SPSR_mon中
-使用监视程序,设置S位
-在监视模式中,开始执行安全异常处理程序(在多线程的情况下, 恢复/保存上下文)
-转移到安全用户模式(或另一模式,如svc模式)以便执行适当 的函数
-禁止IRQ和FIQ,而内核处于监视模式中(增加等待时间)
安全区域退出
退出安全区域的两种可能:
-结束安全功能以及返回到已经调用该函数的先前非安全模式。
-通过非安全异常(例如IRQ/FIQ/SMI)中断安全功能。
安全函数的正常结束
安全函数正常终止以及需要以正好在SMI后的指令恢复非安全区域 中的应用程序。在安全用户模式中,执行“SMI”指令以便返回到通过对 应于“从安全区域返回”例程的适当参数,返回到监视模式。在该阶段, 刷新寄存器以避免在非安全和安全区域之间的数据泄漏,然后恢复非安 全上下文通用寄存器以及用在非安全区域中已经具有的值更新非安全组 寄存器。R14_mon和SPSR_mon由此获得适当的值,通过执行“MOVS PC, R14”指令来恢复SMI后的非安全应用。
因非安全异常导致的安全函数退出
在这种情况下,未结束安全函数,以及在进入非安全异常处理程序 后,必须保存安全上下文,不管是否需要处理这些中断。
安全中断
对安全中断,存在几种可能性。
根据下述,提出两种可能的解决方案,具体取决于:
-是何种中断(安全还是非安全)
-当出现IRQ时(不管是在安全还是非安全区域中),内核处于何 种模式。
解决方案一
在该解决方案中,要求两个不同的管脚来支持安全和非安全中断。
当在非安全区域中,如果
-出现IRQ,内核进入IRQ模式以便处理该中断,如同在ARM内核 中,诸如ARM7。
-出现SIRQ,内核进入监视模式以便保存非安全上下文,然后进 入安全IRQ处理程序以便处理安全中断。
当在安全区域中,如果
-出现SIRQ,内核进入安全IRQ处理程序。内核不离开安全区域
-出现IRQ,内核进入监视模式,其中保存安全上下文,然后进入 非安全IRQ处理程序以便处理该非安全中断。
换句话说,当出现不属于当前区域的中断时,内核直接进入监视模 式,否则停留在当前区域(见图10)。
在安全区域中出现IRQ
见图11A:
1.调度程序运行线程1。
2.线程1需要执行安全函数=>SMI安全调用,内核进入监视模式。 将当前PC和CPSR保存在R14_mon和SPSR_MON中,禁用IRQ/FIQ。
3.监视处理程序(程序)执行下述任务:
-设置S位。
-至少将R14_mon和SPSR_mon保存在堆栈中(以及还可能压入其 他寄存器),以便如果在运行安全应用程序的同时,出现异常,也不至 丢失非安全上下文。
-校验运行新线程:安全线程1:(经线程ID表)机制表明线程1 在安全区域中有效。
-然后在安全用户模式中开始安全应用程序。然后重新允许 IRQ/FIQ。
4.在运行安全线程1时出现IRQ。内核直接跳到监视模式(特定的 矢量),以及在监视模式中,将当前PC存储在R14_mon中以及将CPSR 存储在SPSR_mon中,(然后禁用IRQ/FIQ)。
5.必须保存安全上下文,恢复先前的非安全上下文。监视处理程序 可以切换到IRQ模式来通过适当的值更新R14_irq/SPSR_irq,然后将控 制传递到非安全IRQ处理程序。
6.IRQ处理程序提供IRQ,然后将控制返回到非安全区域中的线程 1。通过使SPSR_irq和R14_irq再存入CPSR和PC中,现在,线程1指 向已经中断的SMI指令。
7.重新执行SMI指令(指令与2相同)。
8.监视处理程序注意到先前已经中断该线程,以及恢复线程1上下 文。然后转移到用户模式中的安全线程1,指向已经中断指令上。
9.运行安全线程1直到完成为止,然后转移到监视模式中的“从安 全返回”函数上(专用SMI)。
10.“从安全返回”函数执行下述任务:
-表明完成安全线程1(即,在线程ID表的情况下,从表移出线 程1)。
-从栈非安全上下文恢复以及清除所需寄存器,以便只要返回到非 安全区域,就无法读取安全数据。
-通过SUBS指令,使转移回非安全区域,恢复PC(从恢复的R14_mon 和CPSR(从SPSR_mon)。因此,非安全区域中的返回点应当是线程1 中先前执行的SMI后的指令。
11.执行线程1直到结束为止,然后将控制返回调度程序。
在非安全区域中出现SIRQ
见图11B:
1.调度程序运行线程1
2.当安全线程1正运行时,出现SIRQ。内核直接跳转到监视模式 (特定矢量)以及在监视模式中,将当前PC存储在R14_mon和将CPSR 存储在SPSR_mon中,然后禁用IRQ/FIQ。
3.必须保存非安全上下文,然后内核进入安全IRQ处理程序。
4.IRQ处理程序提供SIRQ,然后使用具有适当参数的SMI,将控制 返回到监视模式处理程序。
5.监视处理程序恢复非安全上下文以便SUBS指令使内核返回到非 安全区域以及恢复中断线程1。
6.执行线程1直到结束为止,然后使控制返回到调度程序。
图11A的机制具有提供进入安全区域的确定方法的优点。然而,存 在与中断优先级有关的一些问题:例如,当SIRQ正在安全中断处理程序 中运行时,具有较高优先级的非安全IRQ会发生。只要完成非安全IRQ, 需要重建SIRQ事件以便内核能恢复安全中断。
解决方案二
在该机制中(见图12),两个不同管脚,或仅一个可以支持安全和 非安全中断。具有两个管脚降低中断等待时间。
当在非安全区域中时,如果
-出现IRQ,内核进入IRQ模式以便处理该中断,如在ARM7系统 中。
-出现SIRQ,内核进入IRQ处理程序,其中,SMI指令将使内核转 移到监视模式以便保存非安全上下文,然后进入安全IRQ处理程序以便 处理安全中断。
当在安全区域中,如果
-出现SIRQ,内核进入安全IRQ处理程序。内核不离开安全区域
-出现IRQ,内核进入安全IRQ处理程序,其中,SMI指令将使内 核转移到监视模式(其中,保存安全上下文),然后进入非安全IRQ处 理程序以便处理该非安全中断。
在安全区域中出现IRQ
见图13A:
1.调度程序运行线程1。
2.线程1需要执行安全函数=>SMI安全调用,内核进入监视模式。
将当前PC和CPSR保存在R14_mon和SPSR_MON中,禁用IRQ/FIQ。
3.监视处理程序执行下述任务:
-设置S位。
-至少将R14_mon和SPSR_mon保存在堆栈中(最后其他寄存器), 以便如果在运行安全应用程序的同时,出现异常,也不至于丢失非安全 上下文。
-校验运行新线程:安全线程1:(经线程ID表)机制表示在安 全区域中,线程1有效。
-然后在安全用户模式中开始安全应用程序。重新允许IRQ/FIQ。
4.在运行安全线程1时出现IRQ。内核直接跳到安全IRQ模式。
5.内核将当前PC存储在R14_irq中以及将CPSR存储在SPSR_irq 中。IRQ处理程序检测这是非安全中断以及执行SMI来通过适当参数进 入监视模式。
6.必须保存安全上下文,恢复先前的非安全上下文。监视处理程序 通过读取CPRS,知道SMI来自何处。还能进入IRQ模式来读取 R14_irq/SPSR_irq以便适当地保存安全上下文。还能将非安全上下文保 存在相同的寄存器中,而这些非安全上下文一旦IRQ事务处理结束就必 须恢复。
7.IRQ处理程序提供IRQ,然后将控制返回到非安全区域中的线程 1。通过使SPSR_irq和R14_irq再存入CPSR和PC中,现在,内核指向 已经中断的SMI指令。
8.重新执行SMI指令(指令与2相同)。
9.监视处理程序注意到先前已经中断该线程,以及恢复线程1上下 文。然后转移到用户模式中的安全线程1,指向已经中断指令上。
10.运行安全线程1直到完成为止,然后转移到监视模式中的“从 安全返回”函数上(专用SMI)。
11.“从安全返回”函数执行下述任务:
-表示完成安全线程1(即,在线程ID表的情况下,从表移出线 程1)。
-从栈非安全上下文恢复以及清除所需寄存器,以便只要返回到非 安全区域,能读取安全数据。
-通过SUBS指令,使转移回非安全区域,恢复PC(从恢复的R14_mon 和CPSR(从SPSR_mon)。非安全区域中的返回点应当是线程1中先前执 行的SMI后的指令。
12.执行线程1直到结束为止,然后将控制返回调度程序。
在非安全区域中出现SIRQ
见图13B:
1.调度程序运行线程1
2.当安全线程1正运行时,出现SIRQ。
3.内核直接跳转irq模式以及将当前PC存储在R14_irq和将CPSR 存储在SPSR_irq中,然后禁用IRQ。IRQ处理程序检测这是SIRQ以及 通过适当的参数,执行SMI指令。
4.只要在监视模式中,必须保存非安全上下文,然后内核进入安全 IRQ处理程序。
5.IRQ处理程序提供SIRQ服务例程,然后通过具有适当参数的SMI, 将控制返回到监视模式处理程序。
6.监视处理程序恢复非安全上下文以便SUBS指令使内核返回到非 安全区域以及恢复中断IRQ处理程序。
7.然后,通过执行SUBS,IRQ处理程序返回到非安全线程。
8.执行线程1直到结束为止,然后将控制返回到调度程序。
通过图12的机制,在嵌套中断的情况下,不需要重建SIRQ事件, 但不保证将执行安全中断。
异常矢量
保存至少两个物理矢量表(尽管从虚拟地址的观看点,它们看起来 象单一矢量表),一个用于非安全存储器中的非安全区域,一个用于安 全存储器(不能从非安全区域访问)中的安全区域。用在安全和非安全 区域中的不同虚拟到物理存储器映射有效地允许相同的虚拟存储器地址 访问存储在物理存储器中的不同矢量表。监视模式可以总是使用单调存 储器映射以便在物理存储器中提供第三矢量表。
如果中断按照图12机制,将存在用于每个表的如图14所示的下述 矢量。在安全和非安全存储器中复制该矢量集。   异常   矢量偏差   相应模式   复位   0x00   监督模式(S位设置)   未定义   0x04   监视模式/未定义模式   SWI   0x08   监督模式/监视模式   预取中止   0x0C   中止模式/监视模式   数据中止   0x10   中止模式/监视模式   IRQ/SIRQ   0x18   IRQ模式   FIQ   0x1X   FIQ模式   SMI   0x20   未定义模式/监视模式
NB.复位项仅在安全矢量表中,当在非安全区域中执行复位时,内核 硬件迫使进入监督模式以及设置S位以便能在安全存储器中访问复位矢 量。
图15示例说明分别应用于安全模式、非安全模式和监视模式的三个 异常矢量表。可以通过异常矢量编程这些异常矢量表以便满足安全和非 安全操作系统的需求和特性。每一个异常矢量表都可以在存储指向存储 器中的那个表的基地址的CP15内,具有相关矢量表基地址寄存器。当发 生异常时,硬件将引用对应于该系统的当前状态的矢量表基地址寄存器 来确定待使用的矢量表的基地址。另外,可以使用在不同模式中应用的 不同虚拟到物理存储器映射来分开在不同物理存储器地址处存储的三个 不同矢量表。如图16所示,在与处理器内核有关的系统(配置控制)协 处理器(CP15)中提供异常中断屏蔽寄存器。该异常中断屏蔽寄存器提 供与各个异常类型有关的标记。这些标记表明硬件当前用来直接处理用 于与其当前域有关的矢量还是应当强迫切换到监视模式(一种安全模 式),然后按照监视模式矢量表中的矢量。仅能从监视模式写异常中断 屏蔽寄存器(异常控制寄存器)。当在非安全模式中时,还能防止读取 访问异常中断屏蔽寄存器。将看到图16的异常中断屏蔽寄存器不包括用 于复位矢量的标记,因为该系统配置成总是使此跳转到如在安全矢量表 中指定的安全监督模式中的复位矢量以便确保安全引导和向后兼容性。 将看出在图15中,为完整起见,在除安全监督模式安全矢量表外,矢量 表中示出了复位矢量。
图16还示例说明用于异常中断屏蔽寄存器内的不同异常类型的标记 是可编程的,诸如在安全引导期间通过监视程序。另外,一些或全部标 记在某些实现中可以通过物理输入信号来提供,例如可以硬布线安全中 断标记SIRQ以便当接收安全中断信号时,总是使监视模式输入和执行相 应的监视模式安全中断请求矢量。图16仅示例说明与非安全域异常有关 的部分异常中断寄存器,对安全域异常,将提供类似的可编程位集。
虽然从上述可以理解,在一级,硬件要么迫使中断由当前域异常处 理来控制管理来实现,要么由监视模式异常管理来实现,具体取决于异 常控制寄存器标记,这仅是所应用的控制的第一级。例如,异常可以发 生在安全模式中,安全模式异常矢量在安全模式异常处理程序后,但该 安全模式异常处理程序确定该异常是非安全异常处理程序更好的属性, 因此,利用SMI指令来切换到非安全模式以及调用非安全异常处理程序。 逆过程也是可能的,其中硬件可以用来启动非安全处理程序,但是然后, 执行安全异常处理程序或监视模式异常处理程序的直接处理的指令。
图17是示意性地示例说明系统的操作以便支持与新类型的异常有关 的另外可能的切换请求类型的流程。在步骤98,硬件检测正尝试改变监 视模式的任何指令,如在当前程序状态寄存器(CPSR)中所表明的。当 检测到该尝试时,那么触发新类型的异常,这称为CPSR冲突异常。在步 骤100,生成该CPSR冲突异常层到引用监视模式内的适当异常以及在步 骤102运行监视程序以便处理该CPSR冲突异常。
将意识到除支持上述的SMI指令外,还可以提供与图17有关所述的 用于启动安全域和非安全域间的切换的机制。当经SMI指令,进行所有 授权尝试时,可以提供该异常机制以便响应切换模式的未授权尝试。另 外,该机制可以是合法方法来在安全域和非安全域间切换或可以提供以 便提供与现有码的向后兼容性,例如,即使不是真正尝试执行非授权尝 试来在安全域和非安全域间切换,作为其正常操作的一部分,试图清除 处理状态寄存器。
如上所述,总的来说,当处理器正在监视模式中时,禁止中断。这 样做的目的是增加系统的安全性。当中断发生时,将当时的处理器状态 存储在中断异常寄存器中以便在完成中断功能时,在中断点能恢复中断 函数的处理。如果在监视模式中允许该过程,则会减低监视模式的安全 性,提供可能的安全数据泄漏路径。为此,在监视模式中,通常禁止中 断。然而,在监视模式期间,禁止中断的一个后果是增加中断等待时间。
如果不存储执行该函数的处理器状态,则可以允许在监视模式中中 断。这仅仅在中断之后不恢复该函数的情况下才能执行。因此,通过允 许仅中断监视模式中的能安全重启的函数,可以解决监视模式中的中断 等待时间的问题。在这种情况下,在监视模式中的中断后,涉及函数处 理的数据不进行存储,而是将其丢弃,并在中断结束之后向处理器发出 指令,从头对该函数进行处理。在上述例子中,这是当处理器简单地返 回到切换到监视模式时的点时处理的简单的事件。应注意到,对能重启 的某些函数来说,只是对部分特定的函数来说是可能重启并产生可重复 产生的结果的。如果函数已经改变处理器的状态以致如果重启它,将产 生不同结果时,那么重启函数不是好的主意。为此,在监视模式中,仅 中断能安全重启的那些函数,对于其他函数,则禁止中断。
图18示例说明根据本发明的实施例,处理在监视模式中出现的中断 的方法。在非安全模式中处理任务A期间出现SMI以及这将处理器切换 到监视模式。SMI指令使内核通过专用的非安全SMI矢量进入监视模式。 保存PC的当前状态,设置s位以及禁止中断。通常,使用LR_mon和 SPSR_mon来保存非安全模式的PC和CPSR。
然后在监视模式中启动函数,函数C。函数C所做的第一件事是允许 中断,然后处理函数C。如果在处理函数C期间出现中断,不禁止中断以 便接受和执行中断。然而,监视模式指示器指示处理器在该中断后,不 恢复该函数,而是重启。另外,这也可以通过单独的控制参数来指示处 理器。因此,在中断后,用LR_mon和SPSR_mon的值来更新中断异常矢 量以及不保存处理器的当前状态。
如图18所示,在完成中断任务,任务B后,处理器读取已经拷贝到 中断寄存器的SMI指令的地址以及执行SMI和开始再次处理函数C。
仅仅在函数C是可重的情况下,上述过程才能执行,即,如果重启, 过程C将导致可重复的处理步骤。如果函数C改变处理器的状态的任何 一个,诸如会影响其未来处理的栈指针的情形,情况就完全不一样了。 用这种方式可重复的函数被认为具有幂等性。处理不具有幂等性的函数 的问题的一种方法是重新排列定义函数的代码,用这种方法,代码的第 一部分具有幂等性,以及只要不同可能排列码来具有幂等性,禁止中断。 例如,如果代码C涉及写入栈,可以执行该操作,而至少不首先更新栈 指针。只要确定不再可行地安全重启代码,那么用于函数C的代码能指 示处理器禁止中断,然后它能将栈指针更新到正确的位置。这如图18所 示,其中通过函数C的处理,用某种方式禁止中断。
图19示例说明稍微不同的例子。在该例子中,通过处理任务C的某 些方法,设置另外的控制参数。这表明任务C的后续部分不是严格的幂 等性,但假定首先运行修复例程,能安全地重启。该修复例程用来使处 理器的状态恢复到在开始任务C时的情形,以便能安全地重启任务C以 及在任务结束时,产生与没有被中断时相同的处理器状态。在一些实施 例中,在设置另外的控制参数的点,可以短时间禁止中断,同时改正处 理器的一些状态,诸如正更新的栈指针。这允许处理器稍后恢复到幂等 性状态。
当在已经设置另外的控制参数后,出现中断时,那么有两种可能的 方法来进行。要么立即执行修复例程(在F1),然后能处理中断,或立 即处理中断,以及在中断完全后,执行SMI,然后在重启任务C前,执行 修复例程(在F2)。如所看到的,在这些实施例中,在监视模式中执行 修复例程,因此,不影响非安全域中的执行,非安全域不知道安全域或 监视模式。
如从图19所看到的,代码C的第一部分具有幂等性以及能在中断后 重启。假定首先运行修复例程,可重启第二部分,这通过设置“另外” 控制参数来表明,以及不能重启代码的最后部分,因此,在处理该代码 前,禁止中断。
图20示例说明另外的例子,在这种情况下,不同于其他实施例,在 监视模式期间允许中断。然后,在监视模式中运行的函数,只要不再能 被安全地重启,则禁止中断。如果重启在监视模式中中断的所有函数而 不是恢复,这是可能的。
能几种方法来确保当中断时,重启而不是恢复在某一模式中运行的 所有函数。一种方法是通过增加新处理器状态,其中中断保存指令序列 的开始地址而不是中断指令的地址。在这种情况下,监视模式总是运行 在该状态中。另一种方法是通过在开始每个函数时,将函数的起始地址 预载到中断异常寄存器,在中断后,禁止处理器的状态的顺序写入以便 中断异常寄存器。
在图20所示的实施例中,在终止中断函数后,立即执行函数的重启, 或如果要求使函数安全重启,在修复例程后执行。
尽管已经根据具有安全和非安全域的系统以及监视模式描述了处理 中断等待时间的方法,很显然,能应用于具有由于特定原因,不应当恢 复的函数的任何系统。通常,这些函数通过禁止增加中断等待时间的中 断来操作。将函数修改成可重启以及控制处理器在中断后重启它们允许 对函数的处理的至少一部分,允许中断以及有助于降低中断等待时间。 例如,操作系统的标准上下文切换。
访问安全和非安全存储器
如参考图1所述,数据处理装置具有存储器,尤其包括TCM36、高 速缓存38、ROM44、从设备的存储器和外部存储器56。如参考图37所示, 例如,将存储器分区成安全和非安全存储器。将意识到在制作时,在存 储器的安全存储器区和非安全存储器区间通常没有任何实质区别,但是 当在安全域中操作时,这些区由数据处理装置的安全操作系统来定义。 因此,可以将存储器设备的任何物理部分分配成安全存储器,以及可以 将任何物理部分分配成非安全存储器。
如参考图2至5所述,处理系统具有安全域和非安全域。在安全域 中,提供安全核心程序80以及在安全模式中执行。提供横跨于安全域和 非安全域并至少部分在监视模式中执行的监视程序72。在本发明的实施 例中,监视程序部分在监视模式中执行以及部分在安全模式中执行。如 例如图10所示,有多个安全模式,尤其包括监督模式SVC。
监视程序72负责管理在任一方向中,安全和非安全域间的所有改 变。在节“处理器模式”中,参考图8和9描述其一些函数。监视程序 响应在非安全模式中发出的模式转换请求SMI以便启动从所述非安全模 式到所述安全模式的转换以及响应在安全模式中发出的模式切换请求 SMI,以便启动从所述安全模式到所述非安全模式的转换。如在节“区域 问的切换”中所述,在监视模式中,切换发生至少一些寄存器从安全和 非安全域的一个切换到另一个。涉及存在于一个域中的寄存器的状态的 保存以及将新状态写入另一个域中的寄存器(或恢复寄存器中先前保存 的状态)。如在此所述,当执行这种切换时,可以禁止访问一些寄存器。 最好,在监视模式中,禁止所述中断。
因为监视程序执行的监视模式横跨于安全和非安全域,证明监视程 序安全很重要:即,其仅实现那些意图实现的功能。因此,如果监视程 序尽可能简单是有利的。安全模式允许仅在安全域中执行过程。在本发 明的该实施例中,特许安全模式和监视模式允许访问相同的安全和非安 全存储器。通过确保特许安全模式“看见”相同的安全和非安全存储器, 将仅在监视模式中实现的函数传送到允许简化监视程序的安全模式。另 外,这允许在特许安全模式中操作的过程直接切换到监视模式或反之亦 然。允许从特许安全模式切换到监视模式以及在监视模式中,可以执行 到非安全域的切换。非特许安全模式必须使用SMI来进入监视模式。该 系统在复位后进入特许安全模式。执行监视模式和特许安全模式间的切 换和返回以便于当在域间移动时的状态保存。
在其他实施例中,可以从安全特许模式以及监视模式内允许访问S 标记。如果允许安全特许模式使处理器切换到监视模式中同时维持程序 流的控制,那么,这些安全特许模式已经有效地具有改变S标记(位) 的能力。因此,提供仅能在监视模式内改变S标志的另外的复杂度不合 理。相反,S标记能用与通过一个或多个安全特许模式改变的其他配置标 记相同的方式存储。可以在多个安全特许模式的一个内改变S标记的这 些实施例包括在当前技术中。
返回到先前描述的示例性实施例,该装置具有处理器内核10,定义 模式和定义模式的特许级,即,任何模式允许的函数集。因此,用公知 的方式配置处理器内核10以便允许安全模式和监视模式访问安全和非安 全存储器和安全模式访问监视模式允许访问的所有存储器以及允许在特 许安全模式中操作的过程直接切换到监视模式或反之亦然。处理器内核 10最好配置成允许下述内容。
在该装置的一个例子中,将存储器分区成安全存储器和非安全存储 器,以及仅在监视和安全模式中可访问安全和非安全存储器。最好,在 监视模式、安全模式和非安全模式中可访问非安全存储器。
在该装置的另一例子中,在监视模式和安全模式的一个或多个中, 安全模式拒绝访问非安全存储器,以及在非安全模式中,安全和监视模 式拒绝访问非安全存储器。因此,仅在监视和安全模式中访问安全存储 器,以及仅通过非安全模式访问非安全存储器,增加安全性。
在该装置的例子中,装置的复位和引导可以在监视模式中执行,该 监视模式可以被认为是安全模式更有特权的模式。然而,在该装置的许 多例子中,配置成在安全模式中提供重新设置或引导,这是可能的,因 为允许安全模式和监视模式间的直接切换。
如参考图2所述,在安全域中,以及在安全模式中,安全内核80(苛 操作系统)函数,以及一个或多个安全应用程序82、84可以在安全内核 80下运行。允许在安全模式中运行的安全核心和/或安全应用程序或任何 其他程序代码访问安全和非安全存储器。
尽管已经参考具有处理器的装置描述了本发明的例子,本发明可以 通过计算机程序来实现,当在适当的处理器上运行时,使处理器操作, 如本节中所述。
下面,将根据图21至23,描述从程序员的模型所考虑的本发明的 另外的实施例如下:
在下述描述,使用在由Cambridge,England的ARM Limited设计的 ARM处理器的情况下,必须理解的下述术语。
-S位:安全状态位,包括在专用CP15寄存器中。
-“安全/非安全状态”。通过S位值来定义该状态。表示内核可 以访问安全区域(当其处于安全状态,即S=1时)还是仅限制到非安全 区域(S=0)。注意监视模式(另外见)覆盖S位状态。
-“非安全区域”集合可访问不需要安全性的非安全应用程序的所 有硬件/软件。
-“安全区域”集合仅当执行安全代码时可访问的所有硬件/软件 (内核、存储器....)。
-监视模式:负责在安全和非安全状态间切换内核的新模式。
概述
-内核总是能访问非安全区域。
-仅当处于安全状态或监视模式时,内核才能访问安全区域。
-SMI:软件监视中断:通过专用SMI异常矢量,使内核进入监视 模式的新指令。“线程ID”:与每个线程(受OS控制)有关的标识符。 对一些类型的OS,其中,OS在非安全区域中运行,每次调用安全函数时, 有必要将当前线程ID传递为参数以便将安全函数链接到其调用的非安全 应用程序上。因此,安全区域能支持多线程。
-安全中断定义由安全外设生成的中断。
程序员的模型
Carbon内核概述
在此用于使用本技术的处理器的术语的Carbon的原理,体系结构包 括单独的两个区域,一个安全区域和一个非安全区域。安全区域一定不 能将任何数据泄漏到非安全区域。
在所提出的解决方案中,安全和非安全状态将共享相同的(现有) 寄存器组。因此,存在于ARM内核中的所有当前模式(中止,未定义, Irq,用户,...)将存在于每个状态中。
由于在专用CP15寄存器中所示的新的状态位,S(安全)位,内核 将知道它在安全或非安全状态中操作。
允许指令或事件来修改S位,即从一个状态改变成另一个状态的控 制是该系统的安全性的主要特征。当前技术方案提出增加将“监督”两 个状态间的切换的新模式,监视模式。通过写入适当的CP15寄存器,监 视模式将是允许修改S位的唯一模式。
最后,建议将一些灵活性增加到异常处理。除复位外,所有异常将 在它们出现的状态中处理,或指向监视模式。由于专用CP15寄存器,这 将允许可配置。
在下述段落中,将论述该解决方案的详细情况。
处理器状态和模式
Carbon新特征
安全或非安全状态(S位)
Carbon内核的一个主要特征是存在S位,表明内核处于安全(S=1) 还是非安全(S=0)状态。当在安全状态中,内核将能访问安全或非安 全区域中的任何数据。当在非安全状态中,内核将仅限于访问非安全区 域。
该规则的唯一异常涉及监视模式,覆盖S位信息。即使当S=0时, 当其位于监视模式中时,内核将执行安全特许访问。见下一段落,用于 另外的信息的监视模式。
仅能在监视模式中,读取和写入S位。不管S值如何,如果任何其 他模式尝试访问它,将被忽略或导致未定义异常。
除复位外,所有异常对安全状态位无影响。在复位时,将设置S位, 以及内核将在监视模式中启动。参见用于详细信息的引导节。
安全/非安全状态是独立的,并且其操作独立于与ARM/Thumb/Java 状态。
监视模式
Carbon系统的一个其他重要特征是创建新模式,监视模式。这将用 来控制安全和非安全状态间的内核切换。将总被视为安全模式,即不管S 位的值如何,当它处于监视模式中时,内核将总是对外部区域执行安全 特许访问。
仅仅通过写入CPSR模式位(MSR,MOVS或等效指令),任何安全特 许模式(即当S=1时的特许模式)将能切换到监视模式。然而,这在非 安全模式或安全用户模式将被禁止。如果这经常发生,将忽略指令或导 致异常。
将需要专用的CPSR冲突异常。通过直接从任何非安全模式或安全用 户模式写入CPSR,切换到监视模式的任何尝试,将产生该异常。
当监视模式有效时,实际上,将禁止除复位外的所有异常:
●屏蔽所有中断
●所有存储器异常要么可以忽略或者导致致命异常
●未定义/SWI/SMI要么可以忽略或者导致致命异常。
当进入监视模式时,自动禁止中断以及应当写入系统监视程序以便 在系统监视程序正运行时,不发生任何其他类型的异常。
监视程序模式需要具有一些专用寄存器。该解决方案建议仅复制最 小寄存器集,即R13(sp_mon)、R14(lr_mon)和SPSR(spsr_mon)。
在监视模式中,禁止MMU(单调地址映射)和MPU或分区校验器(监 视程序模式将总是执行安全特许外部访问)。然而,专用编程MPU区属 性(高速缓存能力,...)将仍然有效。作为另一方案,不管安全域使用 何种映射,监视模式可以使用。
新指令
该提议要求将一个新指令增加到现有的ARM指令集上。
将使用SMI(软件监视中断)来进入监视模式,在固定SMI异常矢 量转移。该指令将主要用来向监视程序表示在非安全和安全状态间交 换。
作为另一方案(或另外),将可以增加新指令以便允许监视模式将 任何其他模式保存到监视栈/从监视栈恢复任何其他模式以便提高上下 文切换性能。
处理器模式
如在前段落中所述,在内核中仅增加一个新模式,监视模式。所有 现有的模式仍然可用,以及将存在于安全和非安全状态中。
实际上,Carbon用户将看见如图21所示的结构。
处理器寄存器
本实施例提出安全和非安全区域共享相同的寄存器组。这意味着当 通过监视模式,从一个区域切换到另一个区域时,系统监视程序将需要 保存第一区域的上下文,以及在第二区域中创建(或恢复)上下文。
传递参数变为一项简单的任务:只要系统监视程序已经切换S位, 包含在第一区域中的寄存器中的任何数据将用在第二区域中的相同寄存 器中。
然而,除了需要严格控制的专用于传递参数的有限多个寄存器之 外,当从安全传递到非安全状态时,所有其他寄存器需要被清除以便避 免安全区域的任何泄漏。
当从安全切换到非安全状态时,实现硬件机制或新指令来直接刷新 寄存器也是可能的。
所提出的另一解决方案涉及复制所有(或大多数)现有的寄存器组, 从而在安全和非安全状态间具有两个物理分开的寄存器。该解决方案具 有明显地分开包含在寄存器中的安全和非安全数据的主要优点。还允许 安全和非安全状态间的快速上下文切换。然而,缺点在于通过寄存器传 递参数变得困难,除非创建一些专用指令来允许安全区域访问非安全寄 存器。
图22示例说明根据处理器模式的可用寄存器。注意,处理器状态对 该主题无影响。
异常
安全中断
当前解决方案
目前提出保持与当前内核中相同的中断管脚,即IRQ和FIQ。与异 常中断屏蔽寄存器(在本文献中稍后定义)有关,对任何系统来说,有 足够的灵活性来实现和处理不同类型的中断。
VIC增强
用下述方法增加VIC(矢量中断控制器):VIC可以包含与每个矢量 地址有关的一个安全信息位。仅可以通过监视或安全特许模式编程该 位。表示所认为的中断是否应当被视为安全,从而应当在安全端处理。
还增加两个新的矢量地址寄存器,一个用于在非安全状态中出现的 所有安全中断,另一个用于在安全状态中出现的所有非安全中断。
包含在CP15中的S位信息将可用于VIC,作为新VIC输入。
根据输入中断的状态(安全或非安全,用与每个中断线有关的位表 示)和内核的状态(CP15中的S位=VIC上的S输入信号),下述表概 述不同可能的情形。   安全状态中的内核   (CP15-S=1)   非安全状态中的内核   (CP15-S=0)   安全中断  不需要在区域间切换。VIC  直接向内核提供与中断线  有关的安全地址。内核仅  仅需要在该地址分支,其  中应当查找相关的ISR   在非安全域中,VIC不具有与该   中断有关的矢量。因此,向内核   提供包含在专用于在非安全区域   中出现的所有安全中断的矢量地   址寄存器中的地址。仍然在非安   全区域中,然后,内核分支到该   地址,其中应当查找SMI指令来   切换到安全区域。只要在安全区   域中,将能访问正确的ISR。   非安全中   断  在安全域中,VIC不具有  与该中断有关的矢量。因  此,向内核提供包含在专  用于在安全区域中的所有  非安全中断的矢量地址寄  存器中的地址。仍然在安  全区域中,然后内核分支  到该地址,其中,应当查  找SMI指令来切换到非安  全区域。只要在非安全区  域中,将能访问正确的  ISR   不需要在区域间切换。VIC直接   向内核提供与中断线有关的不安   全地址。内核仅仅需要在该地址   分支,其中应当查找相关的不安   全ISR
异常处理可配置性。
为提高Carbon灵活性,新寄存器,异常中断屏蔽将增加到CP15中。 该寄存器将包含下述位:
-位0:未定义异常   (非安全状态)
-位1:SWI异常      (非安全状态)
-位2:预取中止异常 (非安全状态)
-位3:数据中止异常 (非安全状态)
-位4:IRQ异常      (非安全状态)
-位5:FIQ异常      (非安全状态)
-位6:SMI异常      (非安全/安全状态)
-位16:未定义异常    (安全状态)
-位17:SWI异常       (安全状态)
-位18:预取中止异常  (安全状态)
-位19:数据中止异常  (安全状态)
-位20:IRQ异常       (安全状态)
-位21:FIQ异常       (安全状态)
复位异常在该寄存器中不具有任何相应位。复位将总是使内核通过 其专用矢量进入安全监督模式。
如果设置位,相应的异常使内核进入监视模式。否则,将在其出现 的区域中的相应的处理程序中处理该异常。
该寄存器将仅在监视模式中可见。将忽略在任何其他模式中尝试访 问它的任何指令。
根据系统是否监视程序,应当将该寄存器初始化到系统专用值。能 通过VIC控制该功能性。
异常矢量表
当有单独的安全和非安全区域时,还需要单独的安全和非安全异常 矢量表。
此外,当监视程序还能设一些异常中断时,还需要专用于该监视程 序的第三异常矢量表。
下述表概述那些三个不同异常矢量表:
在非安全存储器中:   地址   异常   模式   何时自动访问   0x00   0x04   未定义   未定   义   当内核在非安全状态和异常中断屏蔽寄存器   中[非安全未定义]=0时执行的未定义指令   0x08   SWI   监督   当内核在非安全状态和异常中断屏蔽寄存器   中[非安全SWI]=0时的执行SWI指令   0x0C   预取中止   中止   当内核在非安全状态和异常中断屏蔽寄存器   中时[非安全PAbort=0时,中止指令   0x10   数据中止   中止   当内核在非安全状态和异常中断屏蔽寄存器   中时[非安全DAbort=0时,中止数据   0x14   预留   0x18   IRQ   IRQ   当内核在非安全状态和异常中断屏蔽寄存器   中[非安全IRQ]=0时推断的IRQ管脚   0x1C   FIQ   FIQ   当内核在非安全状态和异常中断屏蔽寄存器   中[非安全FIQ]=0时推断的FIQ管脚
在安全存储器中:   地址   异常   模式   何时自动访问   0x00   复位*   监督   推断的复位管脚   0x04   未定义   未定   义   当内核在安全状态和异常中断屏蔽寄存器中   [安全未定义]=0时执行的未定义指令   0x08   SWI   监督   当内核在安全状态和异常中断屏蔽寄存器中   [安全SWI]=0时的执行SWI指令   0x0C   预取中止   中止   当内核在安全状态和异常中断屏蔽寄存器中   时[安全PAbort=0时,中止指令   0x10   数据中止   中止   当内核在安全状态和异常中断屏蔽寄存器中   时[安全DAbort=0时,中止数据   0x14   预留   0x18   IRQ   IRQ   当内核在安全状态和异常中断屏蔽寄存器中   [非安全IRQ]=0时推断的IRQ管脚   0x1C   FIQ   FIQ   当内核在安全状态和异常中断屏蔽寄存器中   [非安全FIQ]=0时推断的FIQ管脚
*参见进一步描述有关复位机制的“引导”节。
在监视存储器中(单调映射)   地址   异常   模式   何时自动访问   0x00   0x04   未定义   监视   当内核在安全状态和异常中断屏蔽寄存器中   [安全未定义]=1以及内核在非安全状态和   异常中断屏蔽寄存器[非安全未定义]=1时   执行的未定义指令   0x08   SWI   监视   当内核在安全状态和异常中断屏蔽寄存器中   [安全SWI]=1以及内核在非安全状态和异   常中断屏蔽寄存器[非安全SWI]=1时执行   的SWI指令   0x0C   预取中止   监视   当内核在安全状态和异常中断屏蔽寄存器中   [安全IAbort]=1以及内核在非安全状态和   异常中断屏蔽寄存器[非安全IAbort]=1   时,中止指令   0x10   数据中止   监视   当内核在安全状态和异常中断屏蔽寄存器中   [安全PAbort]=1以及内核在非安全状态和   异常中断屏蔽寄存器[非安全PAbort]=1   时,中止数据   0x14   SMI   监视   0x18   IRQ   监视   当内核在安全状态和异常中断屏蔽寄存器中   [安全IRQ]=1以及内核在非安全状态和异   常中断屏蔽寄存器[非安全IRQ]=1时推断   的IRQ管脚   0x1C   FIQ   监视   当内核在安全状态和异常中断屏蔽寄存器中   [安全FIQ]=1以及内核在非安全状态和异   常中断屏蔽寄存器[非安全FIQ]=1时推断   的FIQ管脚
在监视模式中,可以复制异常矢量,以便每个异常将具有两个不同 的相关矢量:
-一个用于在非安全状态中出现的异常
-一个用于在安全状态中出现的异常
这对于降低异常等待时间是有用的,因为监视核心不再具有检测异 常出现的原始状态的必要。
注意该特征可限于一些异常,SMI是改进安全和非安全状态间的切换 的最适当的候选。
区域间的切换
当状态间切换时,监视模式必须将第一状态的上下文保存在其监视 栈上,以及从监视栈恢复第二状态上下文。
因此,监视模式需要访问任何其他模式的任何寄存器,包括专用寄 存器(r14,SPSR,...)。
为处理此,所提出的解决方案包括通过简单地写入CPSR,向安全状 态中的任何特许模式提供直接切换到监视模式的权利。
通过该系统,区域间的切换执行如下:
-进入监视模式
-设置S位
-切换到监督模式-将监视寄存器保存在监视栈上(当然监督模式 将需要访问监视栈指针,但这能容易实现,例如通过使用共用寄存器(R0 至R8))
-切换到系统模式-将寄存器(=与用户模式相同)保存在监视栈 上
-监视栈上的IRQ寄存器
等等...用于所有模式
-一旦保存所有模式的所有专用寄存器,通过简单的MSR指令(= 简单地将监视值写在CPSR模式字段中),回复到监视模式
也考虑到其他解决方案:
-增加允许监视程序将其他模式的专用寄存器保存在其自己的栈上 的新指令。
-将监视程序实现为新“状态”,即,能处于监视状态(具有适当 的访问权)和IRQ(或任何其他模式),以便查看IRQ(或任何其他)专 用寄存器。
基本情形(见图23)
1.线程1运行在非安全区域中(S位=0)
2.通过非安全SMI矢量,SMI指令使内核进入监视模式。
使用LR_mon和SPSR_mon来保存非安全模式的PC和CPSR。
在该阶段,S位仍然不变,尽管该系统现在在安全状态中。
监视核心将非安全上下文保存在监视程序上。
还压入LR_mon和SPSR_mon。
然后监视内核通过写入CP15寄存器来改变“S”位。
在该实施例中,监视内核记录将在安全区域中(例如通过更新线程 ID表),启动“安全线程1”。
最后,它退出监视模式以及切换到安全监督模式(在更新LR_mon和 SPSR_mon后的MOVS指令?)。
3.安全核心将应用程序调度到正确的安全存储单元,然后切换到用 户模式(例如使用MOVS)。
4.在安全用户模式中执行安全函数。一旦完成,通过执行适当的 SWI,调用“退出”函数。
5.通过反过来执行“退出”函数的专用SWI矢量,SWI指令使内核 进入安全svc模式。该“退出”函数以“SMI”结束以便切换回监视模式。
6.SMI指令使内核通过专用的安全SMI矢量进入监视模式。
使用LR_mon和SPSR_mon来保存安全svc模式的PC和CPSR。
S位仍然不变(即安全状态)
监视核心记录结束安全线程1的事实(从线程ID表移出安全线程 1ID?)
然后通过写入CP15寄存器,返回到非安全状态来改变“S”位。
监视核心从监视栈恢复非安全上下文。
在步骤2中,还加载先前保存的LR_mon和SPSR_mon。
最后,根据指令,它通过SUBS退出监视模式,使内核返回到非安全 用户模式中。
7.线程1能正常恢复。
参考图6,在安全和非安全域间共享所有寄存器。在监视模式中,切 换发生,寄存器从安全和非安全域的一个切换到另一个。包含对存在于 一个域中的寄存器的状态进行保存以及将新状态写入另一个域中的寄存 器(或恢复寄存器中的先前保存的状),如在上节“区域间的切换”中 所述。
期望降低执行这一切换所需的时间。为降低执行切换所花的时间, 当安全和非安全域间的切换保持不改变存储在其中的值时,禁止共享寄 存器。例如,假定从非安全域切换到安全域。假定例如在安全区域中不 需要图6所示的FIQ寄存器。因此,禁止那些寄存器以及不需要将它们 切换到安全域以及不需要保存那些寄存器的内容。
可以采用多种方法来实现禁止寄存器。一种方法是封使用那些寄 存器的模式。这是通过将控制位写入CP15寄存器中,表示禁止那个模式 来实现的。
另外,在逐个指令的基础上,通过将控制位写入CP15寄存器,可以 禁止访问寄存器。写入CP15中的位明确与该寄存器,而不是模式有关, 以便不禁止工,而是禁止访问该模式中的寄存器。
FIQ寄存器存储与快速中断有关的数据。如果禁止FIQ寄存器以及 快速中断发生,处理器发出监视程序中的异常的信号。响应异常,监视 模式能用来保存与一个域有关并存储在所述禁止寄存器中的任何数据值 以及将与另一域有关的新数据值加载到那个寄存器中,然后重新允许FIQ 模式寄存器。
可以将处理器配置成当在监视模式中时,当处理器切换域时,禁止 所有成组寄存器。另外,禁止寄存器是可选择的,因为当切换域时,禁 止一些预定的共享寄存器,以及根据程序员的选择,可以禁止其他寄存 器。
可以将处理器配置成当在监视模式中切换域时,禁止一个或多个的 共享寄存器,以及当存在一个域时,一个或多个其他共享寄存器保存它 们的数据,以及将新数据加载在另一个域中。新数据可以是空数据。
图24示意性地示例说明将安全处理选项增加到传统的ARM内核的原 理。该图示意性地表示如何通过将安全处理选项增加到现有的内核,能 形成包含安全处理选项的处理器。如果该系统将向后与现有的传统操作 系统兼容,直觉想到在处理器的传统非安全部分中操作的传统系统。然 而,如该图的下半部分中示意所示以及下面的进一步详述,实际上,传 统系统在该系统的安全部分中操作。
图25表示具有安全和非安全域以及示例说明复位并与图2类似的处 理器。图2示例说明用来通过控制安全域中的处理的安全OS系统和控制 非安全域中的处理的非安全OS系统,运行安全性敏感型操作的处理器。 然而,该处理器与传统的操作系统向后兼容,因此,该处理器使用传统 的操作系统,以安全性不敏感方式操作。
如图25所示,复位在安全域中,以及不管操作类型如何,通过所设 置的S位或安全性状态标记,发生复位。在安全性不敏感的操作的情况 下,在安全域中发生复位,然后处理在安全域内继续。然而,控制处理 的传统操作系统不知道系统的安全性方面。
如图25所示,执行复位来设置地址,不管处理是安全敏感还是实际 上安全不敏感,从该地址启动安全监督模式内的处理。一旦执行复位, 那么执行存在于引导或重新引导机制中的另外的任务。下面描述引导机 制。
引导机制
引导机制必须考虑下述特征:
-保持与传统OSes的兼容性
-在最特许模式中引导以便确保系统的安全性。
因此,Carbon内核将在安全监督模式中引导。
然后不同系统将是:
-对希望运行传统OS的系统,不考虑S位,以及内核将正好看见 其在监督模式中引导。
-对希望使用Carbon特征的系统,内核在应当能在系统中配置所 有安全保护(可以在切换到监视模式后)的安全特许模式中引导。
根据如上给出的引导机制的详细情况,本发明的实施例的处理器复 位该处理器以便在所有情况下,在安全监督模式中开始处理。在安全性 不敏感的操作的情况下,操作系统实际上在安全域中操作,尽管安全性 在此不是问题,因为设置了S位(尽管操作系统不知道此)。其优点在 于不能从非安全域访问的部分存储器在这种情况下是可以访问的。
在安全敏感系统中,在所有情况下,在安全监督模式中引导也有利, 因为有助于确保系统的安全性。在安全敏感系统中,在安全监督模式中, 在存储引导程序的引导点处提供地址,从而允许系统配置成安全系统以 及切换到监视模式。通常允许从安全监督模式切换到监督模式以及在适 当的时间,允许安全系统在监督模式中开始处理以便初始化监视模式配 置。
图26示例说明在步骤1,由非安全操作系统执行非安全线程NSA。 在步骤2,非安全线程NSA经在步骤3,运行监视模式程序的监视模式, 调用安全域。在步骤5,监视模式程序改变S位以便切换域以及在移动到 安全操作系统前,执行任何所需的上下文保存和上下文恢复。然后,在 步骤6,在经受中断irq前,执行相应的安全线程SA。在步骤7,中断 处理硬件触发返回到监视模式,其中确定有关中断将由安全操作系统还 是非安全操作系统处理。在这种情况下,将由在步骤9开始的非安全操 作系统处理中断。当由非安全操作系统处理该中断时,在步骤11,在正 常线程切换操作前,非安全线程NSA恢复成非安全操作系统中的当前任 务。该线程切换可以是定时事件等待的结果。在步骤12,通过非安全操 作系统中的非安全域,执行不同线程NSB,然后在步骤14,经监视域/程 序,调用安全域。步骤7的监视程序已经存储标记,在一些其他机制中, 用来表示根据中断的结果,最后暂停安全操作系统,而不是留下,因为 安全线程已经结束执行或由于正常请求而留下。因此,由于通过中断暂 停安全操作系统,步骤15的监视程序使用指定返回线程ID(例如,根据 非安全线程NSB的请求,由安全操作系统启动的线程的标识符以及其他 参数数据)的软件伪中断,重新进入安全操作系统。软件伪中断的这些 参数可以作为寄存器值来传递。
在步骤15,软件伪中断触发安全操作系统的返回中断处理程序例 程。该返回中断处理程序例程检查软件伪中断的返回线程ID以便确定这 是否与在暂停前,最后执行安全操作系统时中断的安全线程SA的线程ID 匹配。在这种情况下,没有匹配,因此,在步骤16,触发安全操作系统 以便在已经保存安全线程SA的上下文后,根据非安全线程NSB所指定 的,执行切换到返回线程的线程。然后,根据请求,从中断的点处重启 安全线程SA。
图27示意性地示例说明在图26中所示的行为的类型的另一例子。 在该例子中,尽管在非安全操作系统的控制下,处理执行以便处理irq, 但没有非安全切换,因此当安全操作系统的返回中断处理程序接收到软 件伪中断时,确定不需要线程切换,在步骤15,仅仅恢复安全线程SA。
图28是示意性地示例说明由返回线程处理程序执行的处理的流程 图。在步骤4002,开始返回线程处理程序。在步骤4004,当暂停安全操 作系统时,检查来自软件伪中断的返回线程标识符以及与当前执行的安 全线程进行比较。如果这些匹配,那么,处理进入步骤4006,其中恢复 安全线程。如果在步骤4004,比较得出不匹配,那么处理进入步骤4008, 其中,在步骤4010执行切换到新安全线程前,保存先前的安全线程的上 下文(用于后续恢复)。新线程可能已经进行,因此步骤4010是恢复。
图29示意性地示例说明从安全操作系统遵循由主非安全操作系统执 行的任务切换的处理。主非安全操作系统可以是传统的操作系统,不具 有用于与其他操作系统通信和协调其活动性的机制,因此,仅操作为主 程序。作为图29中的起始输入点,非安全操作系统正在执行非安全线程 NSA。使用软件中断,该非安全线程NSA调用将由安全操作系统执行的安 全线程,SMI调用。在步骤2,SMI调用进入在监视模式中执行的监视程 序,由此,在步骤4,监视程序在将调用传递到安全操作系统前,执行任 何必要的上下文保存和切换。然后安全操作系统启动相应的安全线程 SA。诸如根据定时器事件等等的结果,该安全线程可以经监视模式,将 控制返回到非安全操作系统。当在步骤9,非安全线程NSA再次将控制传 递给安全操作系统时,通过重新发出原始软件中断执行此。软件中断包 括识别NSA的非安全线程ID、将激活的目标安全线程的安全线程ID,即 识别安全线程SA的线程ID以及其他参数。
当通过监视程序传递在步骤9生成的调用并通过安全操作系统,在 安全域中,在步骤12接收时,检查非安全线程ID以便通过非安全操作 系统,确定是否具有上下文切换。也可以检查目标线程的安全线程ID以 便查看安全操作系统下的正确线程重启或启动为新线程。在图29的例子 中,通过安全操作系统,在安全域中不要求线程切换。
除在非安全操作系统的控制下,在非安全域中,在步骤9产生线程 的切换外,图30与图29类似。因此,在步骤11,它是使软件中断调用 经过安全操作系统的不同的非安全线程NSB。在步骤14,安全操作系统 识别非安全线程NSB的不同线程ID,因此,执行包含保存安全线程SA 的上下文以及开始安全线程SB的任务切换。
图31是示意性地示例说明当将软件中断接收为启动线程或恢复安全 操作系统的线程的调用时,由安全操作系统执行的处理的流程图。在步 骤4012,接收调用。在步骤4014,检查调用的参数以便确定它们是否与 安全操作系统上的当前有效安全线程匹配。如果匹配发生,那么在步骤 4016,重启该安全线程。如果匹配未发生,那么处理进入步骤4018,其 中确定有关新请求的线程是否可用。由于诸如它是或要求已经由正在安 全操作系统上执行的一些其他线程使用的互斥资源的原因,新请求的线 程不可用。在这种情况下,通过返回给非安全操作系统的适当的消息, 在步骤4020拒绝调用。如果在步骤4018确定新线程可用,那么处理进 入步骤4022,其中为稍后可能的恢复,保存先前的安全线程的上下文。 在步骤4024,根据在对安全操作系统所做的软件中断调用中所指定的, 切换到新安全线程。
图32示意性地示例说明当通过由不同操作系统处理的不同中断,处 理具有多个操作系统的系统内的中断时,发生优先级反转的操作。
处理从执行安全线程SA的安全操作系统开始。然后通过第一中断 Int1中断。这触发监视模式中的监视程序确定该中断将在安全域还是非 安全域中处理。在这种情况下,该中断将在安全域中处理以及处理返回 到安全操作系统,启动用于中断Int1的中断处理例程。到执行用于Int1 的中断处理例程的一半时,接收到具有更高优先级的另外的中断Int2。 因此,停止用于Int1的中断处理程序同,以及监视模式中的监视程序用 来确定将处理中断Int2。在这种情况下,将通过非安全操作系统处理中 断Int2,因此控制传递到非安全操作系统,以及用于Int2的中断处理 程序启动。当用于中断Int2的中断处理程序结束时,非安全操作系统不 具有表示在安全域中,有暂停维护的未决中断Int2的信息。因此,非安 全操作系统会执行一些另外的处理,诸如任务切换或启动不同的非安全 线程NSB,同时最初中断Int1仍然未处理。
图33示例说明可以避免与图32的操作有关的问题的技术。当中断 Int1产生时,监视程序将此传递到非安全域,其中启动插桩中断处理程 序。该插桩中断处理程序相对较小,以及经由监视模式,快速将处理返 回到安全域,以及触发安全域内用于中断Int1的中断处理程序。主要在 安全域中处理中断Int1以及在非安全域中启动插桩中断处理程序能视为 一种插桩符,向非安全域表示该中断正被挂在安全域中。
用于中断Int1的安全域中的中断处理程序再次遇到高优先级 Int2。如前所述,这触发执行非安全域中,用于中断Int2的中断处理程 序。然而,在这种情况下,当用于Int2的那个中断处理程序结束时,非 安全操作系统具有表示用于中断Int1的插桩中断处理程序仍然未决的数 据,因此,将恢复该插桩中断处理程序。该插桩中断处理程序就象挂在 使其调用回安全域的点处,因此重新执行该调用,从而切换到安全域。 一旦回到安全域中,安全域本身能在暂停它的点处,重启用于中断Int1 的中断处理程序。当在安全域内,用于中断Int1的中断处理程序结束时, 调用返回到非安全域以便在恢复最初执行安全线程SA前,关闭非安全域 中的插桩中断处理程序。
图34示意性地示例说明具有它们相关的优先级和不同类型的中断和 如何处理它们。完全使用提供没有由非安全域处理的更高优先级中断的 安全域中断处理程序,处理高优先级中断。只要具有比后续中断更高优 先级以及在非安全域中处理的中断,那么所有更低中断必须完全在非安 全域中处理或利用图33所示的插桩中断处理程序技术,由此非安全域能 了解这些中断,即使它们的大部分处理在安全域内发生。
如前所述,使用监视模式来执行安全域和非安全域间的切换。在两 个不同域间共享寄存器的实施例中,这包含将那些寄存器内的状态保存 在存储器中,然后将用于目标域的新状态从存储器加载到那些寄存器 中。对不在两个域间共享的任何寄存器,不必保存状态,因为那些寄存 器将不由另一域访问,而状态间的切换实现为安全和非安全域间的直接 切换结果(即,存储在CP15寄存器的一个中的S位的值确定使用哪个非 共享寄存器)。
当在监视模式中时需要切换的状态部分为控制由处理器访问存储器 的处理器配置数据。由于每个域内,存在存储器的不同视图,例如,访 问安全存储器的安全域用于存储安全数据,该安全存储器不能由非安全 域访问,很显然,当在域间切换时,需要改变处理器配置数据。
如图35所示,该处理器配置数据存储在CP15寄存器34中,以及在 一个实施例中,在域间这些寄存器是共享的。因此,当在安全域和非安 全域间切换监视模式时,当前在CP15寄存器34中的处理器配置数据需 要从CP15寄存器移入到存储器中,而与目标域有关的处理器配置数据需 要加载到CP15寄存器34中。
由于CP15中的处理器配置数据通常对访问系统内的存储器具有迅 速影响,因此,很显然当在监视模式中操作时,通过处理器更新它们, 这些设定值迅速有效。然而,这不是所期望的,因为期望监视模式具有 当在监视模式中时,控制访问存储器的静态处理器配置数据集。
因此,如图35所示,在本发明的一个实施例中,提供监视模式专用 处理器配置数据2000,能用来当处理器在监视模式中操作时,覆盖CP15 寄存器34中的处理器配置数据。通过提供在其输入处接收存储在CP15 寄存器中的处理器配置数据和监视模式专用处理器配置数据2000的复用 器2010,在图35所示的实施例中实现。此外,复用器2010在路径2015 上接收表明处理器是否正在监视模式中操作的控制信号。如果处理器不 在监视模式中操作,那么将CP15寄存器34中的处理器配置数据输出到 系统,但在处理器在监视模式中操作的情况下,复用器2010反而输出监 视模式专用处理器配置数据2000以确保处理器正在监视模式中操作时, 应用相符的处理器配置数据集。
能在系统内对监视模式专用处理器配置数据尽心硬编码,从而确保 不能操作它。然而,假定当在安全特许模式中操作时,仅能修改监视模 式专用处理器配置数据,则能编程监视模式专用处理器配置数据2000, 而不损害安全性。这提供有关监视模式专用处理器配置数据的设定值的 一些灵活性。如果监视模式处理器配置数据配置成可编程,能将配置数 据存储在系统内的适当地方,例如CP15寄存器34内的单独的寄存器集 中。
典型地,将设置监视模式专用处理器配置数据以便提供用于在监视 模式中操作处理器的非常安全的环境。因此,在上述实施例中,监视模 式专用处理器配置数据可以指定当处理器正在监视模式中操作时,禁止 存储器配置单元30,从而禁止可以由存储器管理单元应用的任何虚拟到 物理地址转换。在这种情况下,总是将处理器配置成当发出存储器访问 请求时,直接发送物理地址,即,将采用单调映射。这确保处理器正在 监视模式中操作时,能可靠地访问存储器,而与是否已经篡改任何虚拟 到物理地址映射无关。
监视模式专用处理器配置数据通常还指定当处理器正在监视模式中 操作时,允许处理器访问安全数据。这最好通过采用域状态位的存储器 允许数据指定,该域状态位具有将为安全处理器配置数据内的相应的域 状态位(“S”位)指定的相同值。因此,不管存储在CP15寄存器内的 域状态位的实际值如何,通过由监视模式专用处理器配置数据指定的域 状态位覆盖那个值,以确保监视模式访问安全数据。
监视模式专用处理器配置数据也指定用来控制访问部分存储器的其 他数据。例如,监视模式专用处理器配置数据可以指定当处理器正在监 视模式中操作时,不使用高速缓存38来访问数据。
在上述实施例中,已经假定包含处理器配置数据的所有CP15寄存器 在域间共享。然而,在上述实施例中,“成组”多个CP15寄存器,以便 例如具有用于存储处理器配置数据的特定项的两个寄存器,一个寄存器 可在非安全域中访问以及包含用于非安全域的处理器配置数据的那个项 的值,以及另一个寄存器可在安全域中访问以及包含用于安全域的处理 器配置数据的那个项的值。
将不成组的一个CP15寄存器是包含“S”位,但原理上,如果需要 的话,可以对任何其他CP15寄存器进行成组。在这些实施例中,通过监 视模式切换处理器配置数据包含使当前在那些共享寄存器中的处理器配 置数据从任何共享CP15寄存器移入存储器,以及将与目标域有关的处理 器配置数据加载到那些共享CP15寄存器。对任何成组寄存器,处理器配 置数据不需要存储在存储器外,相反根据改变存储在相关共享CP15寄存 器中的S位值的结果,将自动发生切换。
如前所述,监视模式处理器配置数据将包括覆盖存储在相关CP15寄 存器中的域状态位,而具有与用于用在安全域中的域状态位相同的值 (即,在上述实施例中,S位值为1)。当多个CP15寄存器成组时,这 表示能从存储在成组寄存器中的安全处理器配置数据导出图35中的监视 模式专用处理器配置数据2000的至少一部分,因为在切换过程期间,那 些寄存器内容不写到存储器外。
因此,例如,由于监视模式专用处理器配置数据将指定域状态位以 便覆盖当不在监视模式中使用的域状态位,以及在优选实施例中,这具 有与用在安全域中相同的值,这表示选择访问哪个成组CP15寄存器的逻 辑将允许访问安全成组CP15寄存器。通过允许监视模式将该安全处理器 配置数据用作监视模式专用处理器配置数据的相关部分,能实现节省资 源,因为不再需要提供用于监视模式专用处理器配置数据的那些项的单 独的寄存器集。
图36是示例说明当要求在一个域和另一个间转变时,切换处理器配 置数据所执行的步骤的流程图。如前所述,发出SMI指令以便促使域间 的转变。因此,在步骤2020,等待发出SMI指令。当接收到SMI指令时, 处理器进入步骤2030,其中处理器开始在监视模式中运行监视程序,根 据进入多路复用器2010中,导致多路复用器切换到监视模式专用处理器 配置数据的路径2015上的控制信号,引发监视模式专用处理器配置数据 的使用。如前所述,这能是独立的数据集,或能从存储在成组寄存器中 的安全处理器配置数据导出的某些部分。
此后,在步骤2040,从将SMI指令发出到存储器中的域,保存当前 状态,这包括从任何共享CP15寄存器保存与那个域有关的处理器配置数 据的状态。通常,存在除存储这些状态外设置的一部分存储器。然后, 在步骤2050,该状态指针切换到包含用于目标域的相应状态的部分存储 器。因此,通常,存在为存储状态信息而分配的两个存储器部分,一个 分配用于存储用于非安全域的状态,以及一个分配用于存储用于安全域 的状态。
一旦在步骤2050切换状态指针,在步骤2060,现在将由状态指针 指向的那个状态加载到相关共享CP15寄存器,这包括将用于目标域的配 置数据加载在相关处理器中。此后,在步骤2070,退出监视程序,如在 监视模式中,然后,处理器切换到目标域中的所需模式。
图37更详细地示例说明本发明的一个实施例的存储器管理逻辑30 的操作。存储器管理逻辑由存储器管理单元(MMU)200和存储器保护单 元(MPU)220组成。在路径234上,由内核10发出、指定虚拟地址的 任何存储器访问请求传递到MMU200,MMU200负责执行预定访问控制功 能,更具体地说,用于确定对应于那个虚拟地址的物理地址,以及用于 决定访问许可权和确定区域属性。
数据处理装置的存储器系统由安全存储器和非安全存储器组成,当 内核或其他设备正在安全操作模式中操作,相应地,在安全域中操作时, 安全存储器用来存储仅用来由内核10,或一个或多个其他主设备访问的 安全数据。
在图37所示的本发明的实施例中,通过MPU220内的分区校验器 222,执行通过在非安全模式中,在内核10上运行的应用程序,访问安 全存储器中的安全数据的尝试控制,MPU220受安全操作系统,在此也称 为安全核心管理。
根据本发明的优选实施例,在非安全存储器内,例如外部存储器56 的非安全存储器部分内提供非安全页表58,以及用来存储用于在那个页 表内定义的多个非安全存储器区的每一个的相应的描述符。
描述符包含信息,MMU200能从该信息导出允许MMU执行预定访问控 制功能所需的控制信息,因此,在参考图37所述的实施例中,将提供有 关虚拟到物理地址映射、访问许可权以及任何区域属性的信息。
此外,根据本发明的优选实施例,在存储器系统的安全存储器内, 例如外部存储器56的安全部分内提供至少一个安全页表58,再次提供用 于在表内定义的多个存储区的相关描述符。当处理器在非安全模式中操 作时,引用非安全页表以便获得用在管理存储器访问中的相关描述符, 同时当处理器正在安全模式中操作时,将使用来自安全页表的描述符。
从MMU中的相关页表检索描述符如下。在内核10发出的存储器访问 请求指定虚拟地址的情况下,在存储用于多个虚拟地址部分的一个的从 相关页表获得的相应的物理地址部分的微TLB206中,执行查找。因此, 微TLB206将虚拟地址的某些部分与存储在微TLB中的相应的虚拟地址进 行比较以便确定是否有匹配。所比较的部分通常是一些预定多个虚拟地 址的最高有效位,位数由页表58内的页的粒度而定。在微TLB206内执 行的查找通常相对较快,因为微TLB206将仅包括相当少量条目,例如八 个条目。
在微TLB206中没有发现匹配的情况下,那么在路径242上,将存储 器访问请求传送到包含从页表获得的多个描述符的主TLB208。如随后所 作更详细的讨论,来自非安全页表和安全页表的描述符能共存于主 TLB208中,以及主TLB内的每个条目具有可设置来表示已经从安全页表 还是非安全页表获得那个输入中的相应的描述符的相应的标记(称为主 标记)。在所有安全操作模式直接指定它们的存储器访问请求内的物理 地址的任何实施例中,将意识到在主TLB内不需要这一标记,因为主TLB 将仅存储非安全描述符。
在主TLB208内,执行类似的查找过程以便确定在存储器访问请求内 发出的虚拟地址的相关部分是否对应于与操作的特定模式有关、与主 TLB208中的描述符有关的虚拟地址部分的任何一个。因此,如果内核10 正在非安全模式中操作,将仅校验已经从非安全页表获得的、主TLB208 内的那些描述符,而如果内核10正在安全模式中操作,将仅校验已经从 安全页表获得的主TLB内的描述符。
如果根据那个校验过程的结果,在主TLB中有命中,那么从相关描 述符提取访问控制信息并在路径242上传回。特别地,在路径242上, 将描述符的虚拟地址部分和相应的物理地址部分传送到微TLB206,用于 存储在微TLB的条目中,将访问许可权加载到访问许可逻辑202中,以 及将区域属性加载到区域属性逻辑204中,使访问许可逻辑202和区域 属性逻辑204与微TLB分开,或可以包含在微TLB中。
在这一点上,然后,MMU200能处理存储请求,因为现在在微TLB206 内有命中。因此,微TLB206将生成物理地址,然后,在路径238上输出 到系统总线40上,用于传送到相关存储器,这将是片上存储器,诸如 TCM36、高速缓存38等等,或可经外部总线接口42访问的外部存储单元 的一个。此时,访问许可逻辑202将确定是否允许存储器访问,以及如 果确定在当前操作模式中,不允许内核访问特定存储单元,在路径230 上,将中止信号发送回内核10。例如,当内核正在监督模式中操作时, 某些存储器部分,不管是在安全存储器还是非安全存储器中,可以指定 为仅可由那个内核访问,因此,如果当在例如用户模式中时,内核10正 尝试访问该存储单元,访问许可逻辑202将检测内核10当前不具有适当 的访问权,以及将在路径230上发出中止信号。这将导致中止存储器访 问。最后,区域属性逻辑204将确定用于特定存储器访问的区域属性, 诸如访问是否能高速缓存、可缓存等等,以及将在路径232上发出这些 信号,然后,将使用它们来确定例如在高速缓存38内,是否能高速缓存 存储器访问请求的主题的数据,在写入访问的情况下,是否能缓冲写入 数据等等。
在主TLB208内没有命中的情况下,那么使用转换表行程逻辑(walk logic)210来访问相关页表58以便在路径248上检索所需描述符,然 后在路径246上,将那个描述符传递到主TLB208,将其存储在其中。用 于非安全页表和安全页表的基地址将存储在CP15的寄存器34内,以及 在CP15的寄存器内,还将设置处理器内核10正在操作的当前域,即安 全域或非安全域,当在非安全域和安全域间发生转换,或反之亦然时, 通过监视模式设置那个域状态寄存器。域状态寄存器的内容在此称为域 位。因此,如果需要执行转换表行程过程,转换表行程逻辑210将知道 内核10正在哪个域中操作,因此,其基地址用来访问相关表。然后将虚 拟地址用作基地址的偏移以便访问适当页表内的适当项,从而获得所需 描述符。
一旦通过转换表行程逻辑210检索到描述符,并放在主TLB208内, 那么在主TLB内获得命中,以及调用先前描述的过程来检索访问控制信 息,以及将其存储在微TLB206、访问许可逻辑202和区域属性逻辑204 内。然后通过MMU200能对存储器访问起作用。
如前所述,在优选实施例中,主TLB208能存储来自安全页表和非安 全页表的描述符,但一旦相关信息存储在主TLB206内,仅由MMU200处 理存储器访问请求。在优选实施例中,通过位于MPU220内的分区校验器 222监视主TLB208和微TLB206间的信息传送,以确保在内核10正在非 安全模式中操作的情况下,不会有访问控制信息从主TLB208内的描述符 传送到微TLB206,如果会导致在安全存储器内生成物理地址的话。
由能位于CP15的寄存器34内、划分定义安全和非安全存储器间的 分区的信息的安全操作系统管理存储器保护单元。然后,分区校验器222 能引用那个分区信息以便确定访问控制信息是否正传送到在非安全模式 中,允许内核10访问安全存储器的微TLB206。更具体地说,在优选实 施例中,当内核10正在非安全操作模式中时,如用由CP15域状态寄存 器内的监视模式设置的域位所示,分区校验器222能经路径244监视正 试图从主TLB208恢复到微TLB206中的任何物理地址部分以及确定基于 那个物理地址部分,对虚拟地址产生的物理地址是否在安全存储器内。 在这种情况下,分区校验器222将在路径230上向内核10发出中止信号 以防止发生存储器访问。
将意识到,另外,能将分区校验器222配置成真正防止那个物理地 址部分存储在微TLB206中,或者,物理地址部分仍然位于微TLB206内, 但中止过程部分将通过例如刷新微TLB206,从微TLB206移出那个不正 确的物理地址部分。
只要内核10经监视模式,在操作的非安全模式和安全模式间改变 时,监视模式将改变CP15域状态寄存器内的域位值,以表示处理器的操 作正在改变到该域中。作为域间传送过程的一部分,将刷新微TLB206, 因此,在安全域和非安全域间的转换后的第一存储器访问将在微TLB206 中产生未命中,以及要求直接或经从相关页表检索相关描述符,从TLB208 检索访问信息。
通过上述方法,将意识到分区校验器222将确保当内核正在非安全 域中操作时,如果尝试使允许访问安全存储器的访问控制信息恢复到微 TLB206,将产生存储器访问中止。
如果在处理器内核10的任何操作模式中,将存储器访问请求配置成 直接指定物理地址,那么,在那个操作模式中,将禁止MMU200,以及在 路径236上,将物理地址传送到MPU220中,在安全操作模式中,访问许 可逻辑224和区域属性逻辑226将基于对CP15内的分区信息寄存器34 内的相应区识别的访问许可权和区域属性,执行必要的访问许可和区域 属性分析。如果正尝试访问的安全存储单元位于仅在某些操作模式,例 如安全特许模式中可访问的部分安全存储器内,那么,在不同操作模式, 例如安全用户模式中,内核的访问尝试将使得访问许可逻辑224在路径 230上,用与MMU的访问许可逻辑202在这些情况下产生中止相同的方 式,向内核生成中止。类似地,区域属性逻辑226将用MMU的区域属性 逻辑204以产生用于通过虚拟地址指定的存储器访问请求的那些信号相 同的方式,生成可高速缓存和缓冲的信号。假定允许访问,然后,访问 请求在路径240上进入到系统总线40上,从该总线传送到适当的存储单 元。
对访问请求指定物理地址的非安全访问,经路径236,使访问请求传 送到分区校验器222,分区校验器将引用CP15寄存器34内的分区信息, 执行分区校验以便确定物理地址是否指定安全存储器内的单元,在这种 情况下,在路径230上将再次产生中止信号。
现在,将参考图39和40的流程图,更详细地描述上述存储器管理 逻辑的处理。图39示例说明在内核10上运行的程序产生虚拟地址的情 形,如步骤300所示。由监视模式设置的CP15域状态寄存器34内的相 关域位将表示内核当前正在安全域还是非安全域中运行。在内核正在安 全域中运行的情况下,处理转移到步骤302,其中在微TLB206内执行查 找以便查看虚拟地址的相关部分是否与微TLB206内的虚拟地址部分相 匹配。在步骤302命中的情况下,处理直接转移到步骤312,其中访问 许可逻辑202执行必要的访问分析。在步骤314,然后确定是否有访问 许可违反,以及如果有,过程进入步骤316,其中访问许可逻辑202在 路径230上发出中止。否则,在没有这种访问许可违反的情况下,过程 从步骤314进入步骤318,其中进入存储器访问。特别地,区域属性逻 辑204将在路径232上输出必要的可高速缓存和缓冲的属性,以及微 TLB206将在路径238上发出物理地址,如前所述。
如果在步骤302,在微TLB中有未命中,那么在步骤304,在主TLB208 内执行查找过程以便确定所需安全描述符是否存在于主TLB中。如果没 有,那么,在步骤306执行页表行程过程,由此转换表行程逻辑210从 安全页表获得所需描述符,如参考图37所述。然后过程进入步骤308, 或在安全描述符已经存在于主TLB208中的情况下,直接从步骤304进入 步骤308。
在步骤308,确定主TLB现在包含有效标记的安全描述符,因此, 过程进入步骤310,通过包含物理地址部分的描述符的子部分,加载微 TLB。由于内核10当前正在安全模式中运行,不需要分区校验器222执 行任何分区校验功能。
然后处理进入步骤312,其中如前所述,执行存储器访问的剩余部 分。
在非安全存储器访问的情况下,过程从步骤300转到步骤320,其 中,在微TLB206内执行查找过程以便确定来自非安全描述符的相应物理 地址部分是否存在。如果是,那么处理直接转移到步骤336,其中由访问 许可逻辑202校验访问许可权。注意,在该点,如果相关物理地址部分 在微TLB内,假定没有安全违反,由于分区校验器222在其存储在微TLB 中前,有效地控制信息,以致如果信息位于微TLB内,假定它是适当的 非安全信息很重要。只要在步骤336已经校验访问许可,处理进入步骤 338,其中确定是否有任何违反,在任一事件中,在步骤316,发出访问 许可故障中止。否则,处理进入步骤318,其中执行存储器访问的剩余部 分,如前所述。
在步骤320,在微TLB中没有命中的情况下,处理进入步骤322,其 中在主TLB208中执行查找过程以便确定相关非安全描述符是否存在。如 果没有,通过转换表行程逻辑210,在步骤324执行页表行程过程以便 使来自非安全页表的必要的非安全描述符恢复到主TLB208中。然后处理 进入步骤326,或在步骤322出现主TLB208内的命令的情况下,直接从 步骤322进入步骤326。在步骤326,确定主TLB现在包含用于所述虚拟 地址的有效标记非安全描述符,然后,在步骤328,分区校验器222校 验将从存储器访问请求的虚拟地址生成的物理地址(假定描述符内的物 理地址部分)将指定非安全存储器中的单元。如果不,即,如果物理地 址指向安全存储器中的单元,那么在步骤330,确定有安全违反,以及处 理进入步骤331,其中由分区校验器222发出安全/非安全故障中止。
然而,如果分区校验器逻辑222确定没有安全违反,过程进入步骤 334,其中通过包含物理地址部分的相关描述符的子部分,加载微TLB, 然后,在步骤336,用先前所述的方式,处理存储器访问。
现在,参考图40描述直接发出物理地址的存储器访问请求的处理。 如前所述,在该情况下,将去激活MMU200,这最好通过在CP15寄存器 的相关寄存器内设置MMU允许位来实现,通过监视模式来实现该设置过 程。其中,在步骤350,内核10将生成在路径236传递到MPU220中的 物理地址。然后,在步骤352,MPU校验许可以便校验正请求的存储器访 问能处理当前操作模式,即用户、监督等等。此外,如果内核正在非安 全模式中操作,在步骤352,分区校验器222将校验物理地址是否在非 安全存储器中。然后,在步骤354,确定是否有违反,即,访问许可处理 是否显示违反,或如果在非安全模式中,分区校验过程识别出违反。如 果这些违反的任何一个发生,那么过程进入步骤356,其中,通过 MPU220,生成访问许可故障中止。将意识到在某些实施例中,在两种中 止间没有区别,而在另外的实施例中,中止信号能表示它与访问许可故 障还是安全故障有关。
如果在步骤354,未检测到违反,过程进入步骤358,其中发生对由 物理地址识别的单元的存储器访问。
在优选实施例中,仅将监视模式配置成直接生成物理地址,因此, 在所有其他情况下,MMU200将有效以及由存储器访问请求的虚拟地址生 成物理地址将会发生,如前所述。
图38示例说明在所有存储器访问请求指定虚拟地址,因此,在任何 操作模式中,不直接生成物理地址的情况下,存储器管理逻辑的另一实 施例。在这种情况下,将意识到不需要单独的MPU220,而是将分区校验 器222包含在MMU200中。这改变除外,该处理正好用与参考图37和39 所述的相同方式进行。
将意识到各种其他选择也是可能的。例如,假定通过指定虚拟地址 的安全和非安全模式发出存储器访问请求,能提供两个MMUs,一个用于 安全访问请求以及一个用于非安全访问请求,即图37中的MPU220能用 完整的MMU代替。在这些情况下,将不需要使用标记和每个MMU的主TLB 来定义描述符是安全还是非安全,因为一个MMU将非安全描述符存储在 其主TLB中,以及另一个MMU将安全描述符存储在其主TLB中。当然, 仍然需要分区校验器来校验在内核处于非安全域中时,是否正尝试访问 安全存储器。
另外,如果所有存储器访问请求直接指定物理地址,另外的实现可 以使用两个MPUs,一个用于安全访问请求,一个用于非安全访问请求。 用于非安全访问请求的MPU将具有受分区校验器控制的其访问请求以确 保在非安全模式中,不允许访问安全存储器。
作为图37或图38配置所具有的另一特征,分区校验器222能配置 成执行一些分区校验以便管理转换表行程逻辑210的活动性。特别地, 如果内核当前正在非安全域中操作,那么分区校验器222能配置成只要 转换表行程逻辑210正试图访问页表,校验它正在访问非安全页表而不 是安全页表。如果检测到违反,最好生成中止信号。由于转换表行程逻 辑210通常通过将页表基地址与通过存储器访问请求发出的虚拟地址的 某些位结合来执行页表查找,该分区校验可以包含例如校验转换表行程 逻辑210正使用非安全页表的基地址而不是安全页表的基地址。
图41示意性地示例说明当内核10正在非安全模式中操作时,由分 区校验器222执行的过程。将意识到在正常的操作中,从非安全页表获 得的描述符将仅描述在非安全存储器中映射的页。然而,在软件攻击的 情况下,可以篡改描述符以便现在描述包含存储器的非安全和安全区的 部分。因此,考虑图41中的例子,不可靠的非安全描述符可以覆盖包括 非安全区370、372、374和安全区376、378和380的页。如果作为存 储器访问请求的一部分发出的虚拟地址对应于安全存储区中的物理地 址,例如,图41中所示的安全存储区376,那么分区校验器222配置成 生成中止以便防止访问发生。因此,即使在尝试访问安全存储器中损坏 非安全描述符,分区校验器222可防止访问发生。相反,如果使用该描 述符导出的物理地址对应于非安全存储区,例如图41中所示的区域 374,那么加载到微TLB206中的访问控制信息仅识别该非安全区374。 因此,非安全存储区374内的访问会发生,但不会发生访问安全区376、 378或380的任何一个。因此,能看出即使主TLB208可以包含来自已经 篡改的非安全页表的描述符,微TLB将仅包含将允许访问非安全存储区 的物理地址部分。
如前所述,在非安全模式或安全模式可以生成指定虚拟地址的存储 器访问请求的实施例,那么存储器最好包括非安全存储器内的非安全页 表,以及安全存储器内的安全页表。当在非安全模式中,将通过转换表 行程逻辑210引用非安全页表,而当在安全模式中,将通过转换表行程 逻辑210引用安全页表。图42示例说明这两个页表。如图42所示,可 以位于例如图1的外部存储器56中的非安全存储器390在其中包括通过 引用基地址397,在CP15寄存器34中指定的非安全页表395。类似地, 在同样位于图1的外部存储器56内的安全存储器400中,提供通过安全 页表基地址407,在专用CP15寄存器34内指定的相应安全页表405。非 安全页表395的每个描述符将指向非安全存储器390中的相应的非安全 页,而安全页表405内的每个描述符将定义安全存储器400中的相应安 全页。另外,如稍后更详细所述,对存储器的某些区域,可以共享可以 由非安全模式和安全模式访问的存储区410。
图43更详细地示例说明根据优选实施例,在主TLB208内执行的查 找过程。如前所述,主TLB208包括识别相应的描述符是来自安全页表还 是非安全页表的安全标记425。这确保当执行查找过程时,将仅校验与内 核10正在其中操作的特定域有关的描述符。图43示例说明内核正在安 全域,也称为安全区域中运行的例子。如从图43所看出的,当执行主 TLB208查找时,将导致忽略描述符440,以及仅将描述符445识别为用 于查找过程的候选。
根据优选实施例,提供在此也称为ASID标记的另外的过程ID标记 430,以便从过程特定页表识别描述符。因此,过程P1、P2和P3分别可 以具有在存储器内提供的相应的页表,以及另外可以具有用于非安全操 作和安全操作的不同页表。另外,将意识到安全域中的过程P1、P2和P3 可以完全将过程与非安全域中的过程P1、P2和P3分开。因此,如图43 所示,除当要求主TLB查找208时校验域外,还校验ASID标记。
因此,在图43的例子中,其中在安全域中,执行过程P1,该查找 过程正好识别主TLB208内的两个项450,然后根据那两个描述符内的虚 拟地址部分是否与由存储器访问请求发出的虚拟地址的相应部分匹配, 生成命中或未命中。如果是,那么抽取相关访问控制信息并传递到微 TLB206、访问许可逻辑202和区域属性逻辑204。否则,发生未命中, 使用转换表行程逻辑210来将来自为安全过程P1提供的页表的所需描述 符恢复到主TLBA208。如本领域的技术人员将意识到的,有许多用于管 理TLB的内容的技术,因此,当检索存储在主TLB208中的新描述符时, 主TLB已经满,可以使用多种已知技术的任何一个来确定从主TLB驱出 哪个描述符来为新描述符腾出空位,例如最近使用方法等等。
将意识到用在操作的安全模式中的安全核心可以开发成与非安全操 作系统完全分开。然而,在某些情况下,安全核心和非安全操作系统的 开发可以紧密结合在一起,以及在这些情况下,允许安全应用程序使用 非安全描述符也是适当的。的确,这允许安全应用程序通过仅知道虚拟 地址,直接访问非安全数据(用于共享)。当然,这假定对特定ASID, 安全虚拟映射和非安全虚拟映射是互斥的。在这些情况下,将不需要先 前介绍的区分安全和非安全描述符的标记(即域标记)。然后,通过所 有可用描述符,执行TLB中的查找。
在优选实施例中,通过在CP15控制寄存器内提供的特定位,能设置 主TLB的配置和具有单独的安全和非安全描述符的先前描述的配置间的 选择。在优选实施例中,该位仅通过安全核心设置。
在直接允许安全应用程序使用非安全虚拟地址的实施例中,将可以 从安全域获得非安全栈指针。这能通过将识别非安全栈指针的非安全寄 存器值拷贝到CP15寄存器34内的专用寄存器来完成。然后,根据由安 全应用程序理解的方案,这将允许非安全应用程序经栈传递参数。
如前所述,可以将存储器划分成非安全和安全部分,以及使用专用 于分区校验器222的CP15寄存器34,控制该分区。基本分区方法基于 如在典型的MPU设备中定义的区域访问许可。因此,存储器划分成区域, 以及每个区域最好用其基地址、大小、存储器属性和访问许可来定义。 另外,当覆盖区域被编程时,上一区域的属性获得最高优先级。另外, 根据本发明的优选实施例,提供新区域属性以便定义相应区域位于安全 存储器还是非安全存储器中。由安全核心使用该新区域属性以便定义将 保护为安全存储器的存储器部分。
在引导阶段,如图44所示,执行第一分区。该初始分区将定义分配 到非安全区域、非安全操作系统和非安全应用程序的存储器量460。该量 对应于在该分区中定义的非安全区。然后由非安全操作系统使用该信 息,用于其存储器管理。非安全操作系统不知道定义为安全的存储器的 其余部分462、464。为保护非安全区域中的完整性,通过仅用于安全特 许模式的访问许可,编程非安全存储器。因此,安全应用程序将不损坏 非安全应用程序。如从图44所看到的,在该引导阶段分区后,存储器460 可用于由非安全操作系统使用,存储器462可用于由安全核心使用,以 及存储器464可用于由安全应用程序使用。
一旦执行引导阶段分区,使用MMU200,由非安全操作系统处理非安 全存储器460的存储器映射,因此,能用常规方式定义一系列非安全页。 这如图45所示。
如果安全应用程序需要与非安全应用程序共享存储器,安全内核能 改变存储器部分的权利以便将数据从一个域人工传送到另一个。因此, 如图46所示,在校验非安全页的完整性后,安全核心改变那个页的权利 以便它变成共享存储器可访问的安全页466。
当存储器的分区改变后,需要刷新微TLB206。因此,在这种情况下, 当顺序地发生非安全访问时,在微TLB206中将发生未命中,因此,将从 主TLB208加载新描述符。当尝试将其恢复到微TLB206中时,由MPU的 分区校验器222顺序地校验该新描述符,因此,将与存储器的新分区一 致。
在优选实施例中,高速缓存38是虚拟索引和物理标记的。因此,当 在高速缓存38中执行访问时,将首先在微TLB206中执行查找,并因此, 对访问许可,特别是安全和非安全许可进行校验。因此,通过非安全应 用程序,不能将安全数据存储在高速缓存38中。对高速缓存38的访问 是在由分区校验器222执行的分区校验的控制之下,因此,在非安全模 式中,不能执行访问安全数据。
然而,会发生的一个问题将是非安全域中的应用程序,能使用高速 缓存操作寄存器来无效、清除或刷新该高速缓存。需要保证这些操作将 不影响系统的安全性。例如,如果非安全操作系统想使高速缓存38无效, 而不是清除它,任何安全恶劣数据数据在替换前,必须写到外部存储器。 最好,在高速缓存中标记安全数据,因此,如果需要的话,能不同地处 理。
在优选实施例中,如果通过非安全程序执行“通过地址使行无效” 操作,由分区校验器222校验物理地址,以及如果高速缓存行是安全高 速缓存行,操作变为“清除和无效”操作,从而维护确保系统的安全性。 另外,在优选实施例中,由非安全程序执行的所有“通过索引使行无效” 操作变为“通过索引清除和无效”操作。类似地,由非安全程序执行的 所有“无效全部”操作变为“清除和无效全部”操作。
此外,参考图1,由微TLB206控制通过DMA32,对TCM36的任何访 问。因此,当DMA32在TLB中执行查找以便将其虚拟地址翻译成物理地 址时,已经增加在主TLB中的先前描述的标记允许执行所需安全性校验, 正如已经由内核10发出访问请求一样。另外,如稍后所述,将复制分区 校验器耦合到外部总线70,最好位于判优器/解码器块54中,以便如果 DMA32直接访问经外部总线接口42耦合到外部总线70的存储器时,连 接到外部总线的复制分区校验器校验访问的有效性。此外,在某些优选 实施例中,能通过将位增加到CP15寄存器34来定义DMA控制器32是否 能用在非安全域中,当操作在特许模式中时,该位仅允许由安全核心设 置。
考虑TCM36,如果安全数据位于TCM36中,这必须小心处理。例如, 能想像非安全操作系统编程用于TCM存储器36的物理地址范围以便它覆 盖外部安全存储器部分的情形。如果操作模式改变成安全模式,安全核 心会导致数据存储在那个覆盖部分,通常,将数据存储在TCM36中,因 为TCM36通常具有比外部存储器更高的优先级。如果非安全操作系统改 变用于TCM36的物理地址空间的设定值以便在存储器的非安全物理区中 映射先前安全区,将意识到非安全操作系统能访问安全数据,因为分区 校验器将该区域看作非安全并且将不断言中止。因此,为概述,如果将 TCM配置成充当常规本地RAM以及不充当智能高速缓存,如果它能将TCM 基寄存器移动到非安全物理地址,那么非安全操作系统可以读取安全区 域数据。
为防止这种情况下,在优选实施例中,在CP15寄存器34内提供控 制位,其仅可在安全特许操作模式中访问,以及提供两种可能的配置。 在第一种配置中,将该控制位设置成“1”,在这种情况下,仅能由安全 特许模式控制TCM。因此,尝试的任何非安全访问CP15 34内的TCM控 制寄存器将导致输入未定义的指令异常。因此,在该第一实施例中,安 全模式和非安全模式能使用TCM,但仅由安全特许模式控制TCM。在该第 二配置中,将控制位设置成“0”,在这种情况下,由非安全操作系统控 制TCM。在这种情况下,仅由非安全应用程序使用TCM。任何安全数据都 不能从TCM存储或加载。因此,当执行安全访问时,在TCM内不执行查 看地址是否与TCM地址范围匹配的查找。
根据缺省情况,设想TCM仅由非安全操作系统使用,因为在这种情 况下,不需要改变非安全操作系统。
如前所述,除在MPU220内提供分区校验器222外,本发明的优选实 施例还提供耦合到外部总线70的类似分区校验块,该另外的分区校验器 用来管理由其他主设备,例如数字信号处理器(DSP)50、直接耦合到外 部总线的DMA控制器52、经外部总线接口42可连接到外部总线的DMA 控制器32等等访问存储器。的确,在一些实施例中,如稍后所述,可以 仅具有耦合到外部(或设备)总线上的分区校验块,以及不提供作为存 储器管理逻辑30的一部分的分区校验器。在一些这种实施例中,可以可 选地将分区校验器提供为存储器管理逻辑30的一部分,在这些实例中, 该分区校验器能视为除耦合到设备总线的以外提供的另一分区校验器。
如前所述,整个存储器系统能由几个存储器单元组成,以及多个这 些存储器单元可以存在于外部总线70上,例如外部存储器56、引导ROM44 或外设,诸如屏幕驱动器46、I/O接口60、键存储单元64等等内的实 际缓冲器或寄存器48、62、66上。此外,需要将存储器系统的不同部分 定义为安全存储器,例如可以期望键存储单元64内的键缓冲器66处理 为安全存储器。如果耦合到外部总线上的设备试图访问该安全存储器, 那么很显然,在包含在内核10中的芯片内的先前所述的存储器管理逻辑 30将不能管理该访问。
图47示例说明如何使用耦合到外部总线,在此也称为设备总线的另 外的分区校验器492。外部总线通常配置成只要通过设备,诸如设备 470、472将存储器访问请求发送到那个外部总线上,那些存储器访问请 求还包括定义操作模式,例如特许、用户等待的外部总线上的某些信号。 根据本发明的优选实施例,存储器访问请求还包含将域信号发送到外部 总线上以便识别该设备正在安全模式还是非安全模式中操作。最好在硬 件级发出该域信号,以及在优选实施例中,能在安全或非安全域中操作 的设备将包括用于在外部总线内的路径490上,输出域信号的预定管脚。 为示例说明目的,该路径490与外部总线上的其他信号路径488分开表 示。
在此也称为“S位”的该域信号将识别发出存储器访问请求的设备正 在安全域还是非安全域中操作,以及由耦合到外部总线的分区校验器492 接收该信息。分区校验器492还访问识别存储区为安全还是非安全的分 区信息,因此,能配置成如果断定S位识别安全操作模式,仅允许设备 访问存储器的安全部分。
根据缺省情况,设想不断定S位,因此,预先存在的非安全设备, 诸如图47所示的设备472将不输出断言S位,因此,将永不保证分区校 验器492访问存储器的任何安全部分,不管在屏幕驱动器480的寄存器 或缓冲器482、486、I/O接口484还是外部存储器474内。
为方便说明,与用来确定提供存储器访问请求服务的适当的存储器 设备的解码器478分开说明用来在由主设备,诸如设备470、472发出的 存储器访问请求间判优的判优器块476,并与分区校验器492分开。然 而,将意识到如果需要的话,可以在相同单元中集成这些部件的一个或 多个。
图48示例说明另外的实施例,其中不提供分区校验器。相反,将每 个存储器设备474、480、484配置成根据S位值,管理其自身的存储器 访问。因此,如果设备470想在非安全模式中向标记为安全存储器的屏 幕驱动器480内的寄存器482提出存储器访问请求,那么屏幕驱动器480 判定S位是不断言的,以及不处理存储器访问请求。因此,设想通过适 当的各种存储器器件的设计,可以避免在外间总线上单独提供分区校验 器492的需要。
在图47和48的上述描述中,所述“S位”识别发出存储器访问请 求的设备正在安全域还是非安全域中操作。看另一种方法,能将该S位 看成表示存储器访问请求属于安全域还是非安全域。
在参考图37和38所述的实施例中,使用单个MMU以及单个页表集 来执行虚拟地址到物理地址的转换。通过这种方法,通常用简单的方式 在非安全存储器和安全存储器间分段物理地址空间,如图49所示。其中, 物理地址空间包括从地址0开始并延伸到用于存储器系统,例如外部存 储器56内的一个存储单元的地址Y的地址空间。对每个存储单元,可寻 址存储器通常分成两部分,第一部分2110分配成非安全存储器以及第二 部分2120分配成安全存储器。
通过这种方法,将意识到存在不能由特定域访问的某些物理地址, 以及这些差异对用在那些域中的操作系统是显而易见的。同时用在安全 域中的操作系统将了解非安全域,因此,对此将不关心,非安全域中的 操作系统理论上将不需要了解存在安全域,但相反,应当就像安全域不 存在一样操作。
作为另外的问题,将意识到非安全操作系统将用于外部存储器的地 址空间看成以地址0开始并延伸到地址X,以及非安全操作系统不知道安 全核心的任何信息,特别地存在从地址X+1延伸到地址Y的安全存储器。 相反,安全核心将看不见从地址0开始的地址空间,这不是操作系统通 常所期望的。
在图51中示意性地示例说明通过允许从其物理地址空间的非安全操 作系统的视图安全隐藏安全存储区,以及通过允许安全域中的安全核心 和非安全域中的非安全操作系统将用于外部存储器的它们的地址空间看 成从地址0开始,避免上述问题的一个实施例。其中,物理地址空间2200 能在页组分成安全或非安全段。在图51所示的例子中,用于外部存储器 的地址空间表示为分成四个部分2210、2220、2230和2240,由两个安 全存储区和两个非安全存储区组成。
不是经单个页表转换的虚拟地址空间和物理地址空间间的转换,参 考第一页表和第二页表执行两个单独地址层转换,从而允许引入根据处 理器是在安全域还是非安全域中,不同配置的中间地址空间的概念。更 具体地说,如图51所示,通过使用在页表集2250中的安全页表内提供 的描述符,能将物理地址空间中的两个安全存储区2210和2230映射到 用于安全域的中间地址空间中的单个区域2265。关于所涉及的在处理器 上运行的操作系统,将中间地址空间看成物理地址空间,以及使用MMU 来将虚拟地址转换成中间地址空间内的中间地址。
类似地,对非安全域,能配置中间地址空间2270,其中,经页表集 2250内的非安全页表中的相应的描述符,将物理地址空间中的两个非安 全存储区2220和2240映射到用于非安全域的中间地址空间中的非安全 区2275。
在一个实施例中,使用两个单独的MMU,处理经中间地址,将虚拟地 址转换成物理地址,如图50A所示,图50A中的MMU2150和2170的每 一个能视为用与图37所示的MMU200类似的方式构成,但为方便说明, 在图50A中省略某些细节。
第一MMU2150包括微TLB2155、主TLB2160和转换表行程逻辑 2165,类似地,第二MMU2170包括微TLB2175、主TLB2180和转换表行 程逻辑2185。当处理器正在非安全域中操作时,通过非安全操作系统控 制第一MMU,或当处理器正在安全域中操作时,通过安全核心控制第一 MMU。然而,在优选实施例中,只能由安全核心或者监视程序控制第二 MMU。
当处理器内核10发出存储器访问请求时,在路径2153上,将虚拟 地址发送到微TLB2155。微TLB2155将存储用于多个虚拟地址部分的从 存储在主TLB2160内的描述符、已经从与第一MMU2150有关的第一页表 集检索的主TLB2160中的描述符检索的相应的中间地址部分。如果在微 TLB2155中检测到命中,那么微TLB2155将在路径2157上发送对应于在 路径2153上接收的虚拟地址对应的中间地址。如果在微TLB2155中无命 中,那么将引用主TLB2160来查看是否在主TLB内检测到命中,以及如 果是的话,将相关虚拟地址部分和相应的中间地址部分恢复到微TLB2155 中,然后,在路径2157上发送中间地址。
如果在微TLB2155和主TLB2160中无命中,那么使用转换表行程逻 辑2165来发送用于来自可由第一MMU2150访问的第一页表集中的预定页 表的所需描述符的请求。典型地,具有与用于安全域或非安全域的单个 处理器有关的页表,以及可由转换表行程逻辑2165访问用于那些页表的 中间基地址,例如从CP15寄存器34内的适当寄存器。因此,转换表行 程逻辑2165能在路径2167上发送中间地址以便从适当页表请求描述 符。
第二MMU2170经配置在路径2157上,由微TLB2155,或在路径2167 上,接收由转换表行程逻辑2165输出的任何中间地址,以及如果在微 TLB2175内检测到命中,那么,在路径2192上,微TLB将所需物理地址 发送到存储器以便在数据总线2190上检索所需数据。在路径2157上发 送中间地址的情况下,这将导致所需数据返回到内核10,而对在路径 2167上发送的中间地址,将导致所需描述符返回到第一MMU2150,用于 存储在主TLB2160中。
在微TLB2175未命中的情况下,将引用主TLB2180,以及如果在主 TLB内有命中,将所需中间地址部分和相应的物理地址部分返回到微 TLB2175,然后允许微TLB2175在路径2192上发送所需物理地址。然而, 在微TLB2175或主TLB2170中均缺少命中的情况下,那么,将转换表行 程逻辑2185配置成在路径2194上输出从与第二MMU2170有关的第二页 表集内的相关页表,请求所需描述符。该第二页表集包括将中间地址部 分与物理地址部分关联的描述符,通常至少存在用于安全域的一个页表 和用于非安全域的一个页表。当在路径2194上发出请求时,将导致来自 第二页表集的相关描述符返回到第二MMU2170,用于存储在主TLB2180 内。
现在,通过如下所述的特定的例子,进一步示例说明图50A中所示 的实施例的操作,其中缩写VA表示虚拟地址,IA表示中间地址,以及 PA表示物理地址。
1)内核发出VA=3000[IA=5000,PA=7000]
2)MMU1的微TLB中的未命中
3)MMU1的主TLB中的未命中
页表1基地址=8000IA[PA=10000]
4)MMU1中的转换表行程逻辑执行页表查找-发出IA=8003
5)MMU2的微TLB中的未命中
6)MMU2的主TLB中的未命中
页表2基地址=12000PA
7)MMU2中的转换表行程逻辑执行页表查找-发出PA=12008“8000IA =10000PA”返回为页表数据
8)-存储在MMU2的主TLB中
9)-存储在MMU2的微TLB中
10)MMU2中的微TLB现在命中-发出PA=10003“3000VA=5000IA” 返回为页表数据
11)-存储在MMU1的主TLB中
12)-存储在MMU1的微TLB中
13)MMU1中的微TLB现在命中-发出IA=5000来执行数据访问
14)MMU2的微TLB中的未命中
15)MMU2的主TLB中的未命中
16)MMU2中的转换表行程逻辑执行页表查找-发出PA=12005 “5000IA=7000PA”返回为页表数据
17)-存储在MMU2的主TLB中
18)-存储在MMU2的微TLB中
19)MMU2中的微TLB现在命中-发出PA=7000来执行数据访问
20)物理地址7000处的数据返回到内核
下次内核发出存储器访问请求(假定VA3001..)
1)内核发出VA=3001
2)在MMU1的微TLB中命中,请求发送到MMU2的IA5001
3)在MMU2的微TLB中命令,请求发送到存储器的PA7001
4)返回到内核的PA7001的数据。
将意识到在上述例子中,在两个MMU的微TLB和主TLB中发生未命 中,因此,该例子代表“最坏情况”情形。典型地,期望在微TLB或主 TLB的至少一个中观察到命中,从而显著地降低检索数据所花的时间。
返回到图51,通常在物理地址空间的某些区,在优选实施例中为安 全区中提供第二页表集2250。将第一页表集分成两种,命名为安全页表 和非安全页表。最好,安全页表将连续地出现在中间地址空间2265内, 就象非安全页表位于非安全中间地址空间2275中一样。然而,它们不需 要连续地位于物理地址空间中,因此,例如,用于第一页表集的安全页 表分布在整个安全区2210、2230上,用类似的方法,非安全页表可以分 布在整个非安全存储区2220和2240上。
如前所述,使用两个页表集的二级方法的一个主要好处是对安全域 的操作系统和非安全域的操作系统,能将物理地址空间配置成以0开始, 这是通常操作系统所期望的。另外,从其“物理地址”空间的非安全操 作系统看,能完全隐藏安全存储区,因为将中间地址空间看作其物理地 址空间,其能配置具有连续的中间地址序列。
另外,使用这种方法大大地简化在非安全存储器和安全存储器间交 换存储区的处理。这参考图52来示意说明。如图52所看到的,例如为 单个存储页的存储区2300可以存在于非安全存储区2220中,以及类似 地,存储区2300可以存在于安全存储区2210中。然而,能仅通过交换 第二页表集内的相关描述符,容易交换这两个存储区2300和2310,以 便区域2300现在变成映射到安全域的中间地址空间中的区域2305的安 全区,而区域2310能变成映射到非安全区的中间地址空间中的区域2315 的非安全区。对安全域和非安全域中的操作系统来说,完全透明发生, 因为它们的物理地址空间的视图实际上分别是安全域或非安全域的中间 地址空间。因此,该方法避免了重新定义每个操作系统内的物理地址空 间。
现在,参考图50B描述使用两个MMU的本发明的另一实施例,与图 50A的配置不同。从图50B与图50A的比较可以看出,配置几乎相同, 但在该实施例中,将第一MMU2150配置成执行虚拟地址到物理地址转换 以及第二MMU配置成执行中间地址到物理地址转换。因此,代替从第一 MMU2150中的微TLB2155到用在图50A实施例中的第二MMU2170中的微 TLB2175的路径2157,将第一MMU中的微TLB2155配置成在路径2192 上直接输出物理地址,如图50B所示。现在,通过在下文中示出的具体 的例子来示例说明在图50B中所示的实施例的操作,其详述相同内核存 储器访问请求的处理,如先前对图50A实施例所述。
1)内核发出VA=3000[IA=5000,PA=7000]
2)MMU1的微TLB和主TLB中的未命中
页表1基地址=8000IA[PA=10000]
3)MMU1中的转换表行程逻辑执行页表查找-发出IA=8003
4)MMU2的微TLB和主TLB中的未命中
页表2基地址=12000PA
5)MMU2中的转换表行程逻辑执行页表查找-发出PA=12008“8000IA =10000PA”返回为页表数据
6)-存储在MMU2的主和微TLB中的“8000IA=10000PA”映射
7)MMU2中的微TLB现在能将来自步骤(3)的请求转换成PA1003 以及发出提取“3000VA=5000IA”返回为页表数据
注意:该转换通过MMU1保留在临时存储器中,但不直接存储在任何 TLB中。
8)MMU1中的转换表行程逻辑现在向MMU2发出IA=5000的请求
9)MMU2的uTLB和主TLB中的IA5000未命中
10)MMU2中的转换表行程逻辑执行页表查找-发出PA=12005 “5000IA=7000PA”返回为页表数据
11)MMU2将“5000IA=7000PA”存储在uTLB和和主TLB中。该 转换还传送到MMU1。
12a)MMU2发出PA=7000存储器访问
12b)MMU1将“3000VA=5000IA”和“5000IA=7000PA”描述符结 合以给出“3000VA=7000PA”描述符,其存储在MMU1的主TLB和微TLB 中。
13)将PA7000处的数据返回到内核
下次内核发出存储器访问请求(假定VA3001..)
1)内核发出VA=3001
2)在MMU1的微TLB中命中,MMU1发出PA=7001请求
3)PA7001处的数据返回到内核。
如从上述例子与图50A所提供的比较可以看出,主要差别是在步骤7 中,其中MMU1不直接存储第一表描述符,以及在步骤12b(12a和12b 能同时发生),其中MMU1还接收IA->PA转换以及进行结合并将组合描 述符存储在其TLBs中。
因此,能看出虽然该另一实施例仍然使用两个页表集来将虚拟地址 转换成物理地址,微TLB2155和主TLB2160存储直接虚拟地址到物理地 址转换的事实避免了当在微TLB2155或主TLB2160中产生击中时,在两 个MMU中执行查找的需要。在这些情况下,第一MMU能直接处理来自内 核的请求,而不参考第二MMU。
将意识到第二MMU2170能配置成不包括微TLB2175和主TLB2180, 在任一情况下,页表行程逻辑2185将用于需要由第二MMU处理的每个请 求。假定对第二MMU的需求不是很频繁,这可以节省第二MMU的复杂性 和成本,达到可以接受的程度。由于第一MMU需要用于每个请求,通常 有利地将微TLB2155和主TLB2160包括在第一MMU2150中以便提高第一 MMU的操作速度。
应注意到页表中的页可以改变大小,因此,用于转换的两半部分的 描述符与不同大小的页有关。典型地,MMU1页将小于MMU2页但这不一 定必须如此。例如:
表1将在0x40003000的4Kb映射到0x00081000上
表2将在0x00000000的1Mb映射到0x02000000上
其中,两个大小的最小一个必须用于组合转换,因此,组合描述符 是
将在0x400030000的4Kb映射到0x02081000上。
然而,其中,在区域间交换数据(如先前参考图52所述),反向成 立是可能的,例如:
表1将在0xc0003000的1Mb映射到0x00000000上
表2将在0x00042000的4Kb映射到0x02042000上
现在,在地址0xc0042010从内核查找给出映射:
将在0xc00420000的4Kb映射到0x02042000上
即,两个大小的较小一个总是用于组合映射
注意在第二种情况下,处理效率较低,因为将重复查找和放弃表1 中的(1Mb)描述符,因为访问不同4Kb区。然而,在典型的系统中,表 2描述符将更大(如在第一例子中),大部分时间更有效(对指向适当 IA空间部分的其他4Kb页,能再循环1Mb映射)。
作为采用两个单独的MMU的另一方案,如在图50A和50B中所示, 能使用单个MMU,如在图53中所示,其中在主TLB2420未命中时,由MMU 产生异常,然后使软件在内核10中运行以便基于来自两个不同页表集的 组合,产生虚拟到物理地址转换。更具体地说,如图53所示,内核10 耦合到MMU2400,其包括微TLB2410和主TLB2420。当内核10发出存储 器访问请求时,在路径2430上提供虚拟地址,以及如果在微TLB中发现 命中,那么在路径2440上直接输出相应的物理地址,使得在路径2450 上使数据返回到内核10中。然而,如果在微TLB2410中有未命中,引用 主TLB2420以及如果相关描述符包含在主TLB中,使相关虚拟地址部分 和相应的物理地址部分恢复到微TLB2410中,其后,在路径2440上发送 物理地址。然而,如果主TLB也产生未命中,那么在路径2422上,向内 核产生异常。现在,将进一步结合图54来描述从接收这一异常,在内核 中执行的过程。
如图54所示,如果在步骤2500,由内核检测到TLB未命中,那么 在步骤2510,以用于那个异常的预定矢量,内核进入监视模式。因此, 这将导致运行页表合并码来执行在54所示的剩余步骤。
更具体地说,在步骤2520,检索在路径2430上发送的,并引起微 TLB2410和主TLB2420中的未命中的虚拟地址(在下文中称为故障虚拟 地址),其后,在步骤2530,根据用于第一表集内的适当表的中间基地 址,确定用于所需第一描述符的中间地址。一旦已经确定中间地址(通 常由虚拟地址和中间基地址的一些预定组合),那么参考第二表集内的 相关表以便获得用于第一描述符的相应的物理地址。此后,在步骤2550, 能从存储器提取第一描述符以便允许确定用于故障虚拟地址的中间地 址。
然后,在步骤2560,再次引用第二表来查找给出用于故障虚拟地址 的中间地址的物理地址的第二描述符。此后,在步骤2570,提取第二描 述符以便获得用于故障虚拟地址的物理地址。
一旦已经获得上述信息,那么程序合并第一和第二描述符以便生成 向物理地址转换提供所需的虚拟地址的新描述符,在步骤2580执行该步 骤。用先前参考图50B所述的类似的方式,通过软件执行合并再次使用 用于联合组合的最小页表大小。此后,在步骤2590,将新描述符存储在 主TLB2420内,此后,在步骤2595,该过程由于异常返回。
此后,内核10将配置成在路径2430上重新发出用于存储器访问请 求的虚拟地址,这仍将导致主TLB2410中的未命中,但现在,导致主 TLB2420中命中。因此,能使虚拟地址部分和相应的物理地址部分恢复 到微TLB2410中,此后,微TLB2410能在路径2440上发送物理地址, 产生在路径2450上返回到内核10的所需数据。
将意识到,作为先前参考图50A和50B所述的替代实施例,使用参 考图53和54所述的原理,能通过软件管理那些实施例中的一个或两个 MMU。
不管是否使用两个MMU,如图50A或50B所示,或使用一个MMU,如 图53所示,当操作在监视模式中时(或者在特许安全模式中),由处理 器管理第二页表集的事实确保了那些页表安全。因此,当处理器位于非 安全域中时,仅能看见非安全存储器,因为当位于非安全域中时,它仅 是通过第二页表集,为非安全域产生的、处理器能看见的中间地址。因 此,不需要将分区校验器提供为如图1所示的存储器管理逻辑30的一部 分。然而,仍然在外部总线上提供分区校验器以便监视由系统中的其他 总线主机进行的访问。
在参考图37和38先前的实施例中,提供与MMU200有关的分区校验 器222,因此,当在高速缓存38中执行访问时,将已经首先在微TLB206 中执行查找,因此,校验访问许可,特别是安全和非安全许可,可能已 经完成。因此,在这些实施例中,通过非安全应用程序,安全数据不能 存储在高速缓存38中。访问高速缓存38是在由分区校验器222执行分 区校验的控制下,因此,在非安全模式中,不能执行访问安全数据。
然而,在本发明的替代实施例中,不提供用于监视在系统总线40上 进行访问的分区校验器222,相反数据处理装置仅具有耦合到外部总线 70,用于监视访问连接到那个外部总线的存储器单元的单个分区校验 器。在这些实施例中,这意味着处理器内核10能访问直接耦合到系统40 上的任何存储器单元,例如TCM36和高速缓存38,而那些访问不受外部 分区校验器控制,因此,需要一些机制来确保处理器内核10当在非安全 模式中操作时,不访问高速缓存38或TCM36内的安全数据。
图55示例说明根据本发明的一个实施例的数据处理装置,提供机制 来允许高速缓存38和/或TCM36来控制对它们的访问,而不需要提供与 MMU200有关的任何分区校验逻辑。如图55所示,经MMU200将内核10 耦合到系统总线40、也耦合到系统总线40上的高速缓存38和TCM36。 经外部总线接42,使内核10、高速缓存38和TCM36耦合到如图55 所示、由地址总线2620、控制总线2630和数据总线2640组成的外部总 线70。
能将内核10、MMU200、高速缓存38、TCM36和外部总线接口42看 作构成连接到外部总线70,也称为设备总线上的单个设备,以及其他设 备也可以耦合到那个设备总线,例如安全外围设备470或非安全外围设 备472。在设备总线70上还连接一个或多个存储器单元,例如外部存储 器56。另外,总线控制单元2650也连接到设备总线70,以及通常包括 判优器2652、解码器2654和分区校验器2656。对连接到设备总线的部 件的操作的一般论述,应当参考先前所述的图47。在先前所述的图47 中,判优器、解码器和分区校验器以单独的模块图示,但当位于单个控 制块2650中时,这些元件用相同方式工作。
在图56中,更详细地示例说明图55的MMU200。通过图56和图37 的比较,能看出以完全与图37的MMU相同的方式构成MMU200,唯一区 别在于不提供用于监视在主TLB208和微TLB206间,在路径242上发送 的数据的分区校验器222。如果处理器内核10发出指定虚拟地址的存储 器访问请求,那么经MMU200,路由存储器请求,如参考图37所述处理, 产生在路径238上,从微TLB206,在系统总线40上输出的物理地址。 相反,如果存储器访问请求直接指定物理地址,则回避MMU200,经路径 236,直接路径到系统总线40上。在一个实施例中,仅当处理器正在监 视模式中操作时,产生直接指定物理地址的存储器访问请求。
如从MMU200的先前描述可以想到,以及特别地,从图43的描述, 主TLB208将包含多个描述符,以及对每个描述符,将提供域标记425以 便识别相应的描述是来自安全页表还是非安全页表。在图55的MMU200 中,示意性地示例说明这些描述符435和相关的域标记425。
当内核10发出存储器访问请求时,这将产生用于在系统总线40上 输出的那个存储器访问请求的物理地址,以及通常高速缓存38将执行查 找处理来确定由那个地址所指定的数据项是否存储在高速缓存中。只要 在高速缓存中出现未命中,即,确定经受访问请求的数据项未存储在高 速缓存中,通过高速缓存启动行填充过程以便从外部存储器56检索包括 存储器访问请求的主题的数据项的数据行。特别地,高速缓存经EBI42, 将行填充请求到设备总线70的控制总线2630上,以及将起始地址输出 到地址总线2620上。另外,在路径2632上,将HPROT信号输出到控制 总线2630上,将包括指定在发出存储器访问请求时,内核的操作模式的 域信号。因此,行填充过程能看作通过高速缓存38将原始存储器访问请 求传播到外部总线上。
由分区校验器2656接收该HPROT信号,因此,分区校验器将识别当 发出存储器访问请求时,从外部存储器56请求指定数据的设备(在这种 情况下,包含内核10和高速缓存38的设备)正在安全域还是非安全域 中操作。分区校验器2656还将访问识别存储器的那些区安全或不安全的 分区信息,因此,能确定是否允许设备访问它正请求的数据。因此,能 将分区校验器配置成如果断言HPROT信号内的域信号(在此也称为S位) 表示由正在安全操作模式中操作的设备请求访问该数据,仅允许设备访 问存储器的安全部分。
如果分区校验器确定不允许内核10访问所请求的数据,例如,因为 HPRTO信号表示内核正在不安全操作模式中操作,但行填充请求正试图从 位于存储器的安全区内的外部存储器检索数据,那么分区校验器2656将 中止信号发送到控制总线2630上,在路径2636上,将其传递回EBI42, 以及从此回到高速缓存38,产生在路径2670上发送到内核10的中止信 号。然而,如果分区校验器2656确定允许访问,那么将输出表示从外部 存储器检索的数据是安全数据还是非安全数据的S标记信号,以及经路 径2634,使该S标记信号传递回EBI42,以及从此返回到高速缓存38 以允许设置与行填充过程的主题,高速缓存行2600有关的标记2602。
同时,控制逻辑2650将授权外部存储器56来输出所请求的行填充 数据,在路径2680上,经EBI42将该数据传回到高速缓存38,用来存 储在相关高速缓存行2600中。因此,作为该过程的结果,用来自外部存 储器56的数据项填充高速缓存38内的选定的高速缓存行,那些数据项 包括为来自内核10的原始存储器访问请求的主题的数据项。然后,使来 自内核的存储器访问请求的主题的数据项从高速缓存38返回到内核,或 者在路径2660上,直接从EBI提供到内核10。
在优选实施例中由于根据上述行填充过程,将产生在高速缓存中原 始存储数据,将基于由分区校验器2656提供的值,设置与那个高速缓存 行有关的标记2602,然后由高速缓存38使用该标记以便直接控制对那 个高速缓存行2600中的数据项的任何后续访问。因此,如果内核10顺 序地发出在高速缓存38的特定高速缓存行2600中的命中的存储器访问 请求时,高速缓存38将预览相关标记2602的值,并将该值与内核10的 操作的当前模式进行比较。在优选实施例中,用由CP15域状态寄存器内 的监视模式设置的域位表示内核10的当前操作模式。因此,能将高速缓 存38配置成当处理器内核10正在安全操作模式中操作时,仅允许相应 标记2602表示的高速缓存行中的数据项是由处理器内核10访问的安全 数据。当内核正在非安全模式中时,内核访问高速缓存38内的安全数据 的任何尝试将导致高速缓存38在路径2670上产生中止信号。
能用各种方式设置TCM36。在一个实施例中,能将其设置成象高速 缓存一样操作,以及在那个实施例中,用与高速缓存38相同的方式,将 配置成包括多个行2610,每个行具有与之有关的标记2612。然后,用与 参考高速缓存38所述的完全相同的方式,管理对TCM36的访问,以及任 何TCM未命中产生正执行的行填充过程,作为其结果,使数据恢复到特 定行2610,以及分区校验器2656将生成所需的S标记值,用于存储在 与那个行2610有关的标记2612中。
在一可选的实施例中,能将TCM36设置成外部存储器56的扩展,以 及用来存储通常由处理器使用的数据,因为经系统总线访问TCM通常快 于访问外部存储器。在该实施例中,TCM36将不使用标记2612,相反, 将使用不同机制来控制对TCM的访问。特别地,如前所述,在这些实施 例中,提供当正在特许安全模式中操作时可设置的控制标记,表示仅当 正在特许安全模式中执行时,可由处理器控制还是当正在至少一个非安 全模式中执行时,可由处理器控制紧密耦合存储器。通过安全操作系统 设置控制标记,以及实际上,定义TCM受特许安全模式还是受非安全模 式控制。因此,能定义的一种结构是仅当处理器正在特许安全操作模式 中操作时,控制TCM。在这些实施例中,对TCM控制寄存器尝试的任何 非安全访问将导致进入未定义指令异常。
在一可选的结构中,当正在非安全操作模式中操作时,能由处理器 控制TCM。在这些实施例中,仅由非安全应用程序使用TCM。不将安全数 据存储到TCM或从TCM加载安全数据。因此,当执行安全访问时,在TCM 内不执行查看该地址是否与TCM地址范围匹配的查找。
图57是示例说明当在处理器内核10上操作的非安全程序生成虚拟 地址时,由图55的装置执行的处理的流程图(步骤2700)。首先,在 步骤2705,在微TLB206内执行查找,以及如果该结果命中,那么微TLB 在步骤2730校验访问许可。参考图56,该过程能看作由访问许可逻辑 202执行。
如果在步骤2705,在微TLB查找中出现未命中,那么在其中存储的 非安全描述符中,在主TLB208中执行查找(步骤2710)。如果这导致 未命中,那么在步骤2715执行页表行程过程(已经参考图37描述过) 在步骤2720后,确定主TLB包含有效标记的非安全描述符。如果在步骤 2710查找产生命中,那么过程直接进入步骤2720。
此后,在步骤2725,通过包含物理地址的描述符部分,加载微TLB, 然后在步骤2730,微TLB校验访问许可。
如果在步骤2730,确定有违反访问许可,那么过程进入步骤2740, 其中在路径230上向处理器内核发出中止信号(与图55中所示的路径 2670类似)。然而,假定未检测到违反,那么在步骤2745,确定访问是 否与可高速缓存的数据项有关。如果不,那么在步骤2790启动外部访问 以便尝试从外部存储器56检索数据项。在步骤2795,分区校验器25656 将确定是否有安全分区违反,即,如果处理器内核10正在非安全模式中 操作时,尝试访问安全存储器中的数据项,以及如果检测到违反,那么 分区校验器5656将在步骤5775生成中止信号。然而,假定没有安全分 区违反,那么处理器进入步骤2785,在步骤2785发生数据访问。
如果在步骤2745,确定正请求的数据项能高速缓存,那么在步骤 2750,在高速缓存内执行高速缓存查找,以及如果检测到命中,那么在 步骤2755,高速缓存确定是否有安全行标记违反。因此,在该阶段,高 速缓存将浏览与包含数据项的高速缓存行有关的标记2602的值,以及将 那个标记的值与内核10的操作模式进行比较以便确定内核是否有权访问 所请求的数据项。如果检测到安全行标记违反,那么过程进入步骤2760, 其中由高速缓存38生成安全违反故障中止信号并在路径2670上发送到 内核10。然而,假定在步骤2755没有检测到安全行标记违反,那么在 步骤2785执行数据访问。
如果当在步骤2750执行高速缓存查找时,高速缓存未命中存在,那 么在步骤2765启动高速缓存行填充。在步骤2770,分区校验器2656检 测是否有安全分区违反,以及如果是,在步骤2775发出中止信号。然而, 假定未检测到安全分区违反,那么在步骤2780,高速缓存行填充处理, 导致在步骤2785结束数据访问。
如图57所示,在MMU内执行步骤2705、2710、2715、2720、2725、 2730和2735,以及由高速缓存执行步骤2745、2750、2755、2765、2780 和2790,以及由分区校验器执行步骤2770和步骤2795。
图58是表示在内核上执行的安全程序生成虚拟地址的情况下执行的 类似过程的流程图(步骤2800)。通过将图58和图57比较,将意识到 在MMU内执行的步骤2805至2835与先前参考图57所述的步骤2705至 2735类似。唯一区别在步骤2710,其中根据存储在主TLB内的任何安全 描述符,执行在主TLB内执行的查找,作为结果,在步骤2820,主TLB 包含有效标记的安全描述符。
在高速缓存内,高速缓存不再需要查找任何安全行标记违反,因为 在参考图58所示的实施例中,假定安全程序能访问安全数据和非安全数 据。因此,如果在步骤2850,在高速缓存查找期间生成命中,那么处理 直接进入数据访问步骤2885。
类似地,在要求外部存储器的外部访问的情况下(即,在步骤3865 或2890),分区校验器不需要执行分区校验,同样因为假定安全程序能 访问安全数据或非安全数据。
在高速缓存内执行的步骤2845、2850、2865、2880和2890与参考 图57所述的步骤2745、2750、2765、2780和2790类似。
图59图示了在处理器上运行的不同模式和应用程序。虚线表示根据 本发明的实施例,在监视处理器期间,如何能将不同模式和/或应用程序 与另一个分开和隔离。
监视处理器来定位可能的故障以及发现为何应用程序不按预期的那 样执行,极为有用,而许多处理器提供这些功能。能用各种方法,包括 调试和跟踪功能执行监视。
在根据当前技术的处理器中,调试能在包括暂停调试模式和监视调 试模式的几种模式中操作。这些模式是插入模式并且导致此时运行的程 序中止。在暂停调试模式中,当断点或观察点出现时,停止内核以及与 系统的其余部分隔离以及内核进入调试状态。在进入时,停止内核,刷 新流线以及不预提取指令。冻结PC以及忽略任何中断(IRQ和FIQ)。 然后可以检查内核内部状态(经JTAG串行接口)和存储器系统状态。这 种状态插入执行,因为可以修改当前模式,修改寄存器内容等等。一旦 终止调试,通过用重启指令,通过调试TAP(测试访问端口)扫描,内核 从调试状态退出。然后程序恢复执行。
在监视调试模式中,断点或观察点引发内核进入中止模式,分别进 行预提取或数据中止矢量。在这种情况下,当在暂停调试模式中时,内 核仍然在处于功能模式,并且不停止。中止处理程序与调试程序应用程 序通信以便访问处理器和处理器状态或转储存储器。调试监视程序连接 在调试硬件和软件调试程序之间。如果设置调试状态和控制寄存器DSCR 的位11(见稍后),能禁止中断(FIQ和IRQ)。在监视调试模式中, 在数据中止和预提取中止时,禁止矢量俘获以避免根据为监视调试模式 生成的中止结果,使处理器进入不可恢复状态。应注意到监视调试模式 是一种调试模式以及不与为监督安全区域和非安全区域间的切换的模式 的处理器的监视模式关联。
调试能提供在某一时刻处理器的状态的抽点打印。通过注意在接收 调试启动请求时,不同寄存器中的值来完成。这些值记录在扫描链(图 67的541、544)上,然后,使用JTAG控制器(图1的18),顺序地输 出它们。
监视内核的一种可选方法是通过跟踪。跟踪不是插入以及当内核继 续操作时,记录续状态。跟踪运行在图1的内嵌式跟踪宏单元(ETM)22、 26。ETM具有跟踪端口,通过该端口,输出跟踪信息,然后通过外部跟踪 端口分析器分析。
本技术的实施例的处理器在两个单独的域中操作,在所述的实施例 中,这些域包括安全域和非安全域。然而,为监视功能目的,对技术人 员来说,这些域可以是数据不应当泄漏的任何两个域。本发明的实施例 涉及防止在两个域间泄漏数据以及通常允许访问整个系统的监视功能, 诸如调试和跟踪是域间数据泄漏的潜在源。
在上述给出的安全和非安全域或区域的例子中,安全数据一定不能 用于非安全区域。另外,如果允许调试,在安全区域中,限制或隐藏安 全区域内的一些数据是有利的。图59中的虚线表示分段数据访问和提供 不同粒度级的可能方法的一些例子。在图59中,用方框500表示监视模 式以及是所有模式的最安全模式,以及控制安全和非安全区域间的切 换。在监视模式500下,有监督模式,这包括安全监督模式510和非安 全监督模式520。然后,有具有应用程序522和524的非安全用户模式 和具有应用程序512、514和516的安全用户模式。能将监视模式(调试 和跟踪)控制到仅监视非安全模式(虚拟501的左边)。另外,可以允 许监视非安全域或区域以及安全用户模式(501的左边以及位于502下 的501的右边)。在另一实施例中,可以允许在安全用户域中运行的非 安全区域和某些应用程序,在这种情况下,通过虚线503的另外的分段 发生。这些分隔有助于防止在运行不同应用程序的不同用户间泄漏安全 数据。在一些受控的情况下,可以允许监视整个系统。根据所要求的粒 度,内核的下述部分需要在监视功能期间控制它们的访问。
在调试事件上,能设置四个寄存器:指令故障状态寄存器(IFSR)、 数据故障状态寄存器(DFSR)、故障地址寄存器(FAR)和指令故障地址 寄存器(IFAR)。在一些实施例中,当从安全区域进入非安全区域时, 应当刷新这些寄存器以避免数据的任何泄漏。
PC样本寄存器:调试TAP能通过扫描链7访问PC。当在安全区域中 调试时,根据在安全区域中选择的调试粒度,能屏蔽那个值。当内核正 在安全区域中操作时,非安全区域,或非安全区域加上安全用户应用程 序不能获得PC的任何值很重要。
TLB项:使用CP15,可以读取微TLB项以及读取和写入主TLB项。 还能控制主TLB和微LTB加载和匹配。必须严格控制这种操作,特别是 如果安全线程识别调试需要MMU/MPU的帮助时。
性能监视控制寄存器:性能控制寄存器提供有关高速缓存未命中、 微TLB未命中、外部存储器请求、所执行的转移指令等等的信息。非安 全区域不应当访问该数据,即使在调试状态中。计数器应当在安全区域 中操作,即使在安全区域中禁止调试。
在高速缓存系统中调试:在高速缓存系统中,调试必须是非插入模 式。保持高速缓存和外部存储器间的一致很重要。使用CP15,能使高速 缓存无效,或能使高速缓存在所有区中直写。在任何情况下,在调试中 允许修改高速缓存行为能是安全性弱点以及应当控制。
字节顺序(endianness):不应当允许能访问调试的非安全区域或 安全用户应用程序改变字节顺序。改变字节顺序能使安全核心误操作。 根据粒度,在调试中,能禁止字节顺序访问。
在启动监视功能时,能控制内核部分的监视功能的访问。用各种方 法启动调试和跟踪。仅允许在某些条件下初始化,本技术的实施例将监 视功能的访问控制到内核的某些安全部分。
本技术的实施例试图通过下述粒度,将项限制到监视功能:
通过单独控制插入和可观察(跟踪)调试;
通过仅在安全用户模式或在整个安全区域中,允许调试项;
通过仅在安全用户模式中允许调试,此外,考虑线程ID(运行的应 用程序)。
为控制启动监视功能,知道如何能启动功能是很重要的。图60表示 示例说明启动监视功能的可能方式、启动的监视功能的类型以及能编程 启动指令的方式的表格。
通常,经软件或经硬件,即经JTAG控制器,输入这些监视指令。为 了控制启动监视功能,使用控制值。这些包括根据条件而定的允许位, 因此,如果存在特定条件,如果设置允许位,仅允许启动监视。这些位 存储在位于ICE530(见图67)中的安全寄存器CP14(调试和状态控制 寄存器,DSCR)上。
在优选实施例中,存在允许/禁止插入和可观察调试的四个位,这些 包括安全调试允许位、安全跟踪允许位、安全用户模式允许位和安全线 程识别允许位。这些控制值用来提供用于监视功能的可控制粒度,同样 地,能帮助防止从特定域泄漏数据。图61提供这些位的概述以及如何访 问它们。
这些控制位保存在安全域中的寄存器中,以及访问该寄存器限定到 三种可能性。经ARM协处理器MRC/MCR指令,提供软件访问,以及仅从 安全监督模式允许这些。另外,通过使用验证码,从任何其他模式提供 软件访问。另一替代方案更多地涉及硬件访问以及调用经JTAG上的输入 端口所写的指令。除用来输入与监视功能的可用性有关的控制值外,还 能使用该输入端口来输入与处理器的其他功能有关的控制值。
下面提供与扫描链和JTAG有关的进一步描述。
寄存器逻辑单元
每个集成电路(IC)由两种逻辑组成:
●组合逻辑单元,象AND、OR、INV。这些门或这些门 的组合用来根据一个或多个输入信号,计算布尔表达式。
●寄存器逻辑单元:象锁存器、触发器。这些单元用来存 储任何信号值。图62表示正沿触发的触发器视图。
当在时钟信号(CK)上产生正沿事件时,输出(Q)接收输入(D) 的值,否则输出(Q)将其值保存在存储器中。
扫描链单元
为测试或调试目的,期望忽略寄存器逻辑单元的功能访问以及直接 访问寄存器逻辑单元的内容。寄存器单元集成在图63所示的扫描链单元 中。
在功能模式中,清除(SE)(扫描允许)以及寄存器单元工作为单 一寄存器单元。在测试或调试模式中,设置SE以及输入数据能来自SI 输入(扫描输入),而不是D输入。
扫描链
使所有扫描链单元束缚在扫描链中,如图64所示。
在功能模式中,清除SE以及能正常访问所有寄存器单元并与电路的 其他逻辑交互作用。在测试或调试模式中,设置SE以及所有寄存器束缚 在扫描链的相互之间。根据每个时钟周期的步调信号,数据能来自第一 扫描链单元以及能移过任何其他扫描链单元。能移出数据以便查看寄存 器的内容。
TAP控制器
调试TAP控制器用来处理多个扫描链。TAP控制器能选择特定的扫 描链:它将“扫描入”和“扫描出”信号连接到那个特定的扫描链。然 后,能将数据扫描到链中、移出或扫描出。外部由JTAG端口拾音器外部 控制TAP控制器。图65示意性地示例说明TAP控制器。
JTAG有选择禁止扫描链单元
出于安全原因,一些寄存器不能由扫描链访问,即使是在调试或测 试模式中。新输入所谓的JADI(JTAG访问禁止)能允许从整个扫描链动 态和静止地移出扫描链单元,而不修改集成电路的扫描链结构。图66A 和66B示意性地表示该输入。
如果JADI无效(JADI=0),不管是在功能还是测试或调试模式中, 扫描链正常工作。如果JADI有效(JADI=1),以及如果正在测试或调 试模式中,可以从扫描链结构移出一些扫描链单元(由设计者选择)。 为保持相同扫描链单元号,JTAG有选择允许扫描链单元使用旁路寄存 器。注意扫描出(SO)以及扫描链单元输出(Q)现在不同。
图67示意性地图示了包括JTAG部分的处理器。在正常操作中,指 令存储器550与内核通信以及在某些环境下,还能与寄存器CP14通信, 以及复位控制值。这通常只在安全监督模式下才是允许的。
当启动调试时,经调试TAP580输入指令以及它是控制内核的那些指 令。调试中的内核在逐个步骤模式中运行。调试TAP经内核访问CP14(由 在示为JADI管脚的JSDAEN管脚上输入,图45中的JTAG访问禁止输入 的访问控制信号而定)并以这种方式复位控制值。
通过访问控制信号JSDAEN控制经调试TAP580访问CP14寄存器。 这配置成为访问以及特别是允许写入访问,JSDAEN必须设置成高。在板 级阶段,当正验证整个处理器时,将JSDAEN设置成高以及在整个系统上 允许调试。一旦校验该系统,能将JSDAEN管脚连接到地,这意味着经调 试TAP580,访问允许在安全模式中调试的控制值现在不可用。通常,生 产模式中的处理器具有连接到地的JSDAEN。经指令存储器550,经软件 路由,访问控制值仅可用。经这一路由访问限定到安全监督模式或假定 给出验证码的另一模式(见图68)。
应注意到根据缺省情况,调试(插入和可观察-跟踪)仅可用在非安 全区域中。为允许它们用在安全区域中,需要设置控制值允许位。
其优点在于总是能由用户启动调试以便在非安全区域中运行。因 此,尽管在调试中,访问安全区域不总是可用于用户,在许多情况下, 这不是问题,因为限制访问该区域以及在使得可用之前,在板级完全验 证安全区域。因此,预见在许多情况下,调试安全区域是不必要的。如 果必要的话,安全监督员仍然经写入CP14的软件路由启动调试。
图68示意性图示了调试启动的控制。在该图中,内核部分600包括 存储表示系统是否是安全区域的安全状态位S的存储元件601(可以是如 前所述的CP15寄存器。内核600还包括由表示处理器正在运行的模式, 例如用户模式的位组成的寄存器602,以及提供识别当前正在内核上运行 的应用程序或线程的上下文标识符的寄存器603。
当断点到达将存储在寄存器611上的断点与存储在寄存器612上的 内核的址进行比较的比较器610时,将信号发送到控制逻辑620。控制 逻辑620查看安全状态S、模式602和线程(上下文标识符)603以及将 它与存储在寄存器CP14上的控制值和条件指示符进行比较。如果系统不 在安全区域中操作,那么将在630输出“进入调试”信号。然而,如果 系统正在安全区域中操作,控制逻辑620将查看模式602,以及如果在 用户模式中,将校验以查看是否设置用户模式允许和调试允许位。如果 它们是,那么假定还没有初始化线程识别位,将初始化调试。上文示例 说明控制值的分层属性。
在图68中还示意地图示了监视控制的线程识别部分以及如何仅能从 安全监督模式(在该实施例中,处理器位于产品级和JSDAEN连接到地), 改变存储在寄存器CP14中的控制值。从安全用户模式,使用验证码,能 进入安全监督模式,然后,能在CP14中设置控制值。
假定线程比较器640表示调试可用于那个线程,当地址比较器610 表示已经到达断点时,控制逻辑620输出“进入调试”信号。这假定能 在CP14中设置线程识别初始化位。如果在断点后,设置线程识别初始化 位,如果地址和上下文标识符与在断点和可允许线程指示器中表示的那 些匹配,能仅进入调试或跟踪。在启动监视功能后,将仅继续俘获诊断 数据,同时由比较器640将上下文标识符标识为允许线程。当上下文标 识符表示正在运行的应用程序不是允许的应用程序,那么抑制俘获诊断 数据。
应注意到在优选实施例中,在粒度内有一些等级。实际上,安全调 试或跟踪允许位位于顶部,在安全用户模式允许位后以及最后来到安全 线程识别允许位。这在图69A和69B中示例说明(见下文)。
保持在“调试和状态控制”寄存器(CP14)中的控制值根据域、模 式和执行线程,控制安全调试粒度。其在安全监督模式的上部分。一旦 构成“调试和状态控制”寄存器CP14,它直到安全监督模式来编程相应 的断点、观察点等等来使内核进入调试状态。
图69A图示了用于插入调试的安全调试粒度的概述。用灰色表示复 位时的缺省值。
对有关可观察测试的调试粒度也是一样的。图69B表示在这种情况 下,安全调试粒度的概述,其中也用灰色表示复位时的缺省值。
注意安全用户模式调试允许位和安全线程识别调试允许位通常用于 插入和可观察调试。
线程识别初始化位存储在寄存器CP14中,以及表示是否需要由应用 程序的粒度。如果已经初始化线程识别位,控制逻辑将进一步校验应用 标识符或线程603是在线程识别控制位中表示的,如果是,那么初始化 调试。如果未设置用户模式或调试允许位的任何一个或设置线程识别位 以及应用程序不是在线程识别控制位中表示的一个,那么将忽略断点以 及内核将继续它所执行的处理以及不初始化调试。
除控制监视功能的初始化外,用类似的方式,能控制监视模式期间 俘获诊断数据。为执行此操作,内核必须继续考虑控制值,即存储在CP14 中的允许位以及在监视功能期间,与它们有关的条件。
图70示意性地表示运行时的监视功能的粒度。在这种情况下,区域 A与允许俘获诊断数据的区域有关,以及区域B与存储在CP14中的控制 值表示不可能俘获诊断数据的区域有关。
因此,当调试运行以及程序正在区域A中操作时,在调试期间,以 逐步方式输出诊断数据。当操作切换到区域B时,其中,不允许俘获诊 断数据,调试不再以逐步方式进行,相反,其自动处理以及不俘获数据。 这继续直到程序的操作再次进入区域A为止,然后,再次开始俘获诊断 数据以及调试继续以逐步方式运行。
在上述实施例中,如果安全域未被授权,则总是将SMI指令看作原 子事件以及抑制俘获诊断数据。
此外,如果设置线程识别初始化位,那么相对于应用程序,在操作 期间的监视功能的粒度也发生。
关于可观察调试或跟踪,这是通过ETM来实现的,而与调试完全无 关。当允许跟踪时,ETM正常工作以及当禁止它时,ETM在安全区域,或 由所选择的粒度而定的安全区域部分中隐藏跟踪。当不允许时,避免ETM 俘获和跟踪安全域中的诊断数据的一种方法是当S位为高时,停止ETM。 这能通过将S位与ETMPWRDOWN信号结合来实现,以便当内核进入安全区 域时,ETM值保持在它们的最后值。因此,ETM应当跟踪SMI指令,然后 直到内核返回到非安全区域才停止。因此,ETM仅看见非安全活动性。
下面给出不同监视功能和它们的粒度的一些的概述。
板级的插入调试
在板级,当不连接JSDAEN管脚时,在开始任何引导圣诞前,有能力 在任何地方允许调试。类似地,如果在安全监督模式中,具有类似的权 利。
如果在中止调试模式中初始化调试,能访问所有寄存器(非安全和 安全寄存器组),以及能转储整个存储器,除专用于控制调试的位外。
能从任何模式和从任何域进入调试中止模式。能在安全或非安全存 储器中设置断点和观察点。在调试状态中,可以经MCR指令,通过简单 地改变S位来进入安全区域。
当安全异常发生时,能进入调试模式时,通过如下新位扩展矢量中 断寄存器:
SMI矢量中断允许
安全数据中止矢量中断允许
安全预提取中止矢量中断允许
安全非定义矢量中断允许
在监视调试模式中,如果任何地方允许调试,即使当在非安全区域 中调试SMI时,可以在逐步调试中进入安全区域。当在安全域中出现断 点时,安全中止处理程序能用来转储安全寄存器组和安全存储器。
安全和非安全区域中的两个中止处理程序向调试应用程序提供它们 的信息以便调试程序窗口(在相关调试控制PC上)能表示安全和非安全 区域中的寄存器状态。
图71A表示当在监视调试模式中构成内核以及在安全区域中允许调 试时所发生的事件。图71B表示当在监视调试模式中构成内核以及在安 全区域中禁止调试时所发生的事件。下面将描述该后一过程。
在产品级的插入调试
在产品级,当连接JSDAEN以及使调试限制到非安全区域时,除非安 全监督程序确定,那么图71B所示的表表示所发生的事件。在这种情况 下,SMI应当总是视为原子指令,以便在进入调试状态前,总是完成安全 功能。
进入调试中止模式经受下述限制:
仅在非安全区域中考虑外部调试请求或内部调试请求。如果断言 EDBGRQ(外部调试请求)同时在安全区域中,一旦终止安全功能和内核 返回到非安全区域中,内核进入调试中止模式。
在安全存储器上编程断点或观察点没有影响以及当编程地址匹配 时,不停止内核。
矢量中断寄存器(下面给出该详细情况)仅涉及非安全区域异常。 先前所述的所有扩展中断允许位没有影响。
只要在中止调试模式中,应用下述限制:
不改变S位来强制安全区域输入,除非允许安全调试
如果仅在安全监督模式中允许调试,不改变模式位。
不改变控制安全调试的专用位。
如果加载和执行SMI(通过系统速度访问),仅当完全执行安全功能 时,内核重新进入调试状态。
在监视调试模式中,因为在安全区域中不发生监视,安全中止处理 程序不需要支持调试监视程序。在非安全区域中,逐步是可能的,但只 要执行SMI,整个执行安全功能,换句话说,当在所有其他指令上,“步 进”和“失步”是可能的,则允许XWSI单步。因此,XWSI视为原子指 令。
一旦禁止安全调试,具有下述限制:
在进入监视模式前:
仅在非安全区域中考虑断点和观察点。如果设置S位,忽略断点/观 察点。注意还能通过MCR/MRC(CP14)访问观察点单元,因为在安全存 储器中,断点/观察点无影响,因此不是安全问题。
BKPT通常用来替换在其上设置断点的指令。这假定用BKPT指令覆 盖存储器中的这一指令,这种情况仅在非安全模式中是可能的。
矢量中断寄存器仅涉及非安全异常。如前所述的所有扩展的中断允 许位没有影响。应当禁止数据中止和预提取中止允许位以避免处理器迫 使进入不可恢复状态。
经JTAG,具有与用于中止模式的相同限制(不能修改S位等等)。
一旦在监视模式中(非安全中止模式)
非安全中止处理程序能转储非安全区域以及在安全成组寄存器和安 全存储器上没有可见度。
通过原子SMI指令执行安全功能
能改变S位以强制安全区域项
不能改变模式位,因为仅在安全监督模式中允许调试
注意如果发生外部调试请求(EDBGRQ),
在非安全区域中,内核中止当前指令,然后立即进入调试状态(在 中止模式中)
在安全区域中,内核中止当前功能以及当已经返回到非安全区域中 时,进入调试状态。
新调试需求意味着内核硬件中的改进。必须仔细地控制S位,以及 出于安全原因,安全位必须不能插入扫描链中。
总的来说,在调试中,能修改模式位,只要在安全监督模式中允许 调试。将防止任何人进入安全域中调试以便通过修改系统(修改TBL项 等待)进入所有安全区域。用那种方式,每个线程能调试其自己的代码, 以及仅其自己的代码。必须保持安全核心安全。因此,当内核正在非安 全区域中运行时进入调试时,如以前,仅改变模式位。
该技术的实施例使用新矢量中断寄存器。如果该寄存器中的一个位 设置成高以及相应的矢量触发,处理器进入调试状态,就象已经在从相 关异常矢量提取的指令上设置断点一样。这些位的行为可以根据在调试 控制寄存器中的安全区域允许位中的调试值而不同。
新矢量中断寄存器包括下述位:D_s_abort、P_s_abort、S_undef、 SMI、FIQ、IRQ、Unaligned、D_abort、P_abort、SWI和Undef。
●D_s_abort位:仅当在安全区域中允许调试时,以及当 在中止调试模式中配置调试才设置。在监视调试模式中,该位应 当是永不设置位。如果禁止在安全区域中调试,不管其值如何, 该位没有影响。
●P_s_abort位:与D_s_abort位相同。
●S_undef位:仅当在安全区域中允许调试时才设置。如 果禁止安全区域中的调试,不管其值如何,该位没有影响。
●SMI位:应当仅当在安全区域中允许调试时才设置。如 果禁止安全区域中的调试,不管其值如何,该位没有影响。
●FIQ、IRQ、Unaligned、D_abort、P_abort、SWI和 Undef位:对应于非安全异常,因此,即使禁止安全区域中的调 试,它们也是有效的。注意在监视模式中,不应当断言D_abort 和、P_abort为高。
●Reset位:当在复位发生时进入安全区域时,仅当允许 安全区域中的调试时,该位才有效,否则没有影响。
尽管在此已经描述了本发明的具体实施例,很显然本发明不限于 此,以及可以在本发明的范围内进行许多改进和增加。例如,根据独立 权利要求的特征,能进行下述从属权利要求的特征的各种组合而不背离 本发明的范围。
高效检索全球专利

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

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

申请试用

分析报告

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

申请试用

QQ群二维码
意见反馈