首页> 中国专利> 在安全与非安全存储器区域内存储安全模式页表数据

在安全与非安全存储器区域内存储安全模式页表数据

摘要

一种数据处理设备(2)设置有操作在一个或多个安全模式(40)和一个或多个非安全模式(42)中的处理电路(8)。当操作在非安全模式中时,存储器的一个或多个区域是不可访问的。存储器管理单元(24)响应于页表数据而管理对包括安全存储器(22)和非安全存储器(6)的存储器的访问。当操作在安全模式中的一个中时,使用安全模式页表数据(36,38)。在安全模式页表数据的页表层次结构内的页表条目包括表安全字段(68,72),其指示由该页表条目所指向的另一页表是存储在安全存储器(22)内还是非安全存储器(6)内。如果与存储器访问相关联的页表中的任一者存储在非安全存储器(6)内,则用表属性位NST来标记该存储器访问,该表属性位NST指示该存储器访问应被视为是非安全的。

著录项

  • 公开/公告号CN102804153A

    专利类型发明专利

  • 公开/公告日2012-11-28

    原文格式PDF

  • 申请/专利权人 ARM有限公司;

    申请/专利号CN201180010180.6

  • 发明设计人 理查德·罗伊·格里森思怀特;

    申请日2011-02-14

  • 分类号G06F12/10(20060101);G06F12/14(20060101);

  • 代理机构11258 北京东方亿思知识产权代理有限责任公司;

  • 代理人宋鹤

  • 地址 英国剑桥

  • 入库时间 2023-12-18 07:31:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-05-25

    授权

    授权

  • 2013-03-20

    实质审查的生效 IPC(主分类):G06F12/10 申请日:20110214

    实质审查的生效

  • 2012-11-28

    公开

    公开

说明书

技术领域

本发明涉及数据处理系统。具体地,本发明涉及具有一个或多个安全 操作模式和一个或多个非安全操作模式的并且当操作在安全模式中时利用 安全模式页表数据来管理对存储器的访问的数据处理系统。

背景技术

已知可提供一种具有一个或多个安全操作模式和一个或多个非安全操 作模式的数据处理系统,诸如,驻在英国剑桥的ARM有限公司所研发的 信任区(TrustZone)体系架构的数据处理系统。在这种系统内的存储器 (存储器地址空间)一般配有一个或多个安全区域和一个或多个非安全区 域,该一个或多个安全区域在安全操作模式中为可访问而在非安全操作模 式中为不可访问的,而该一个或多个非安全区域在安全操作模式和非安全 操作模式中都是可被访问的。通过这种方式,诸如加密密钥、金融数据等 之类的敏感数据可被存储在安全区域内,并且,仅能由执行在安全操作模 式中的受信/安全应用程序访问。这种数据处理系统还支持执行在非安全模 式中的非安全应用程序,但其仅能对存储器之非安全区域进行访问。举例 而言,这种系统可用于数字版权管理,其中,诸如加密密钥之类的高敏感 并秘密的信息可妥善存于存储器的安全区域内,并且,其仅能由执行在安 全模式中的安全应用程序访问,同时该系统还支持诸如媒体播放器或无关 的应用程序之类的非安全应用程序,其执行在非安全模式中且使用存储器 的的非安全区,而其本身不需直接访问存储器的安全区域内所保持的安全/ 秘密数据。

当操作在一个或多个安全模式中时,为了对存储器安全区域的访问进 行管理,已知可提供安全模式页表数据,其由诸如存储器单元或存储器保 护单元之类的存储器管理电路使用,从而控制/管理对存储器的访问。存储 器管理单元例如可负责将安全模式中所生成的虚拟地址转译(translate)成 物理地址。在安全模式中进行访问的存储器内的区域可包括安全区域和非 安全区域。可能产生的问题是:用来管理对存储器的安全区域的访问的安 全模式页表数据可能会遭受到未经授权的修改,例如安全模式中的应用程 序将访问存储器的非安全区域而非如初始所意欲的那样访问存储器的安全 区域。如此将危害系统的安全。

为了处理此种问题,可将所有安全模式页表数据存储在存储器的安全 区域内。通过这种方式,可保护安全模式页表数据,使之不会遭受到企图 规避系统安全的未经授权的修改。然而,此方法的一个问题是:安全模式 页表数据的大小很大,并且,不利地消耗存储器的一个或多个安全区的大 量存储器容量。因此,尽管诸如加密密钥、金融数据、安全程序指令码之 类的安全数据本身的量相对较小,然而,仅为了存储安全模式页表数据, 可能需要存储器的安全区具有大存储容量。

发明内容

从本发明的一个方面来看,其提供了一种用于处理数据的设备,所述 设备包括:

存储器;

处理电路,该处理电路响应于一程序指令流而执行处理操作,所述处 理电路具有多个操作模式,该多个操作模式包括一个或多个安全模式和一 个或多个非安全模式,所述存储器包括:

(i)一个或多个安全区域,该安全区域在所述一个或多个安全模式中 能被访问,而在所述一个或多个非安全模式中不能被访问;以及

(ii)一个或多个非安全区域,该非安全区域在所述一个或多个安全 模式中能被访问,且在所述一个或多个非安全模式中能被访问。

存储器控制电路,存储器控制电路响应于页表数据而管理对所述存储 器的访问;其中,

所述页表数据包括安全模式页表数据及非安全模式页表数据,当所述 处理电路操作在所述一个或多个安全模式中时,使用该安全模式页表数据 来管理对所述存储器的访问,而当所述处理电路操作在所述一个或多个非 安全模式中时,使用该非安全模式页表数据来管理对所述存储器的访问;

所述安全模式页表数据包括页表层次结构,该页表层次结构具有相关 联的页表层级,该页表层级被配置,使得在第一页表层级处的第一层级页 表包括页表条目,该页表条目指向所述层次结构中比所述第一页表层级低 的第二页表层级处的各自第二层级页表;并且

所述第一层级页表的每个页表条目包括一表安全字段,该表安全字段 指示由所述页表条目所指向的第二层级页表是存储在所述一个或多个安全 区域内还是所述一个或多个非安全区域内。

本发明认识到,尽管一个或多个安全操作模式可能需求利用其本身的 安全模式页表数据,然而,并非所有此等安全模式页表数据都与作为存储 器的安全区域和/或存储敏感/秘密数据的存储器区域相关。因此,可能并 非所有的安全模式页表数据都需要存储在存储器的安全区域内。用来管理 对存储器的安全区域的访问的那一部分的安全模式页表数据可存储在存储 器之安全区域内,而用来管理对存储器的非安全区域的访问的那另一部分 的安全模式页表数据可存储在存储器的非安全区域内。为了支持并管理这 一安全模式页表数据在存储器的安全区域和非安全区域之间的划分,在至 少某些页表层级的页表内的每个页表条目包括表安全字段,其指示由该条 目所指向的另一页表是存储在存储器的安全区域内还是非安全区域内。因 此,当存储器控制电路(诸如,存储器管理单元或存储器保护单元)对层 次结构式的安全模式页表数据进行访问时,可确定是否有任何进行该访问 所用的安全模式页表数据存储在存储器的非安全区域内。将理解,上述第 一层级页表和第二层级页表不需要为页表层次结构内的任何特定位置,特 别是,不需要为层级1或层级2页表。

在本发明的某些具体实施例中,存储器控制电路被配置为执行页表行 走操作,其中,访问递减通过层次结构中的页表层级的页表条目序列,以 检索要管理的存储器访问操作的属性数据。在此页表行走期间,如果所访 问的页表条目序列中任一页表条目所具有的表安全字段的值指示所访问的 该页表条目序列中的一个页表条目存储在存储器的非安全区域内,则存储 器控制电路可响应于该值而将正执行的存储器访问标识为非安全存储器访 问操作。为了确保安全性,当操作在安全模式中时,如果存储器访问操作 所涉及的相关页表数据中有任何数据存储在存储器的非安全区域内,则相 关的存储器访问操作会被视为非安全存储器访问操作,即使该访问操作系 由执行于安全模式中的程序启动。

在某些具体实施例中,存储器控制电路可通过将非安全表属性包括在 与该存储器访问操作相关联的属性数据内,将该存储器访问操作标识为非 安全存储器访问操作。此非安全表属性可与指示存储器访问源于安全模式 内操作的另一不同属性分开。非安全表属性指示已使用存储在非安全存储 器中的页表来管理该存储器访问操作。

当存储器控制电路将存储器访问操作标识为非安全存储器访问操作且 该存储器访问操作系导向存储器的一个或多个安全区域时,则存储器可阻 塞该存储器访问操作以作为响应。如果存储器访问操作是非安全的,例如 已使用存储在非安全存储器中的页表条目来辅助管理该存储器访问操作, 则允许访问该存储器的安全区域,对该存储器而言是不安全的。

处理电路可执行多个软件进程。这些软件进程中每一个可利用其自身 的页表数据。或者,某些页表数据可被应用于多个进程,并且,可由全局 属性将这些页表数据标识为用于来自这些多个软件进程中任一者的存储器 访问。其它属性数据可为非全局属性,且可用于仅来自与该非全局属性数 据连接的单独软件进程的存储器访问。

在支持全局和非全局属性数据的系统上下文中,存储器管理电路被配 置为如果经由作为与存储器访问相关联的一部分的页表行走而访问的页表 条目序列中的任一页表条目存储在存储器的非安全区域内,则将属性数据 强迫视为非全局属性数据。因此,如果与该存储器访问相关联的页表中任 一者存储在存储器的非安全区域内,则存储器控制电路覆盖该页表数据内 任何具有不同指示的信息,并迫使相关的属性数据作为非全局属性数据。 如果准许使用与存储器的非安全区域相关的页表行走所生成的全局属性数 据,将可能允许系统的安全脆弱性。

将认识到,属性数据可为多种不同形式,例如,属性数据可指示哪些 特权操作层级被允许来访问相关联数据(存储器页)、该相关联数据是否为 只读、该相关联资料是否为可高速缓存的,等等。此可用于其中不执行地 址转译的存储器保护单元(MPU)的上下文中。在属性数据提供存储器访 问的虚拟存储器地址及与该存储器访问操作对应的该存储器内的物理存储 器地址间的映射的情况下,本发明技术特别有效。为确保安全,保护这种 映射是重要的。

本发明技术可用于其中一个或多个安全区域的存储容量小于一个或多 个非安全区域的存储容量的具体实施例中。特别是当一个或多个非安全区 域形成在独立集成电路内,该独立集成电路与其中形成有处理电路、存储 器控制电路及一个或多个安全区域的集成电路分开。

本发明的具体实施例还可提供安全转译表基址寄存器,其被配置为存 储基址地址值,其指向安全模式页表数据的层次结构的入口点。此安全转 译表基址寄存器可包括安全字段,其指示是否所有的安全模式页表数据存 储在一个或多个非安全区域中。

从本发明的另一方面来看,其提供了一种用于处理数据的设备,所述 设备包括:

存储器部件,用以存储数据;

处理部件,用以响应于程序指令流而执行处理操作,所述处理部件具 有多个操作模式,该多个操作模式包括一个或多个安全模式和一个或多个 非安全模式,所述存储器部件包括:

(i)一个或多个安全区域,该安全区域在所述一个或多个安全模式中 是能被访问的,而在所述一个或多个非安全模式中是不能被访问的;以及

(ii)一个或多个非安全区域,该非安全区域在所述一个或多个安全 模式中是能被访问的,并且在所述一个或多个非安全模式中是能被访问 的;

存储器控制部件,用于响应于页表数据而管理对所述存储器部件的访 问;其中,

所述页表数据包括安全模式页表数据和非安全模式页表数据,当所述 处理部件操作在所述一个或多个安全模式中时,使用该安全模式页表数据 来管理对所述存储器部件的访问,而当所述处理部件操作在所述一个或多 个非安全模式中时,使用该非安全模式页表数据来管理对所述存储器部件 的访问;

所述安全模式页表数据包括页表层次结构,该页表层次结构具有相关 联的页表层级,该页表层级被配置,使得在第一页表层级处的第一层级页 表包括页表条目,该页表条目指向所述页表层次结构中比所述第一页表层 级低的第二页表层级处的各自第二层级页表;并且

所述第一层级页表的每个页表条目包括表安全字段,该表安全字段指 示由所述页表条目所指向的第二层次结构页表是存储在所述一个或多个安 全区域内还是所述一个或多个非安全区域内。

从本发明的又一方面来看,提供了一种管理对存储器的访问的方法, 该存储器与处理电路相关联,该处理电路具有多个操作模式,该多个操作 模式包括一个或多个安全模式和一个或多个非安全模式,所述存储器包括 一个或多个安全区域和一个或多个非安全区域,该一个或多个安全区域在 所述一个或多个安全模式中为能被访问的而在所述一个或多个非安全模式 中为不能被访问的,而该一个或多个非安全区域在所述一个或多个安全模 式中为能被访问的且在所述一个或多个非安全模式中为能被访问的,所述 方法包括以下步骤:

当所述处理电路操作在所述一个或多个安全模式中时,响应于安全模 式页表数据而管理对所述存储器的访问;以及

当所述处理电路操作在所述一个或多个非安全模式中时,响应于非安 全模式页表数据而管理对所述存储器的访问;其中,

所述安全模式页表数据包括页表层次结构,该页表层次结构具有相关 联的页表层级,该页表层级被配置,使得在第一页表层级的第一层级页表 包括页表条目,该页表条目指向所述页表层次结构中比所述第一页表层级 低的第二页表层级处的各自第二层级页表;并且

所述第一层级页表的每个页表条目包括表安全字段,该表安全字段指 示由所述页表条目所指向的第二层级页表是存储在所述一个或多个安全区 域内还是所述一个或多个非安全区域内。

从本发明的再一方面来看,提供了一种用于处理数据的设备,所述设 备包括:

存储器;

处理电路,该处理电路其响应于程序指令而执行处理操作,所述处理 电路具有多个操作模式,该多个操作模式包括一个或多个安全模式和一个 或多个非安全模式,所述存储器包括:

(i)一个或多个安全区域,该安全区域在所述一个或多个安全模式 中是能被访问的,而在所述一个或多个非安全模式中是不能被访问的;以 及

(ii)一个或多个非安全区域,该非安全区域在所述一个或多个安全 模式中是能被访问的,且在所述一个或多个非安全模式中是能被访问的;

存储器控制电路,该存储器控制电路响应于页表数据而管理对所述存 储器的访问;其中,

所述存储器控制电路被配置,使得当操作在所述一个或多个安全模式 中的一个且所述存储器控制电路接收到信号,该信号指示已使用存储在所 述一个或多个非安全区域内的页表数据来管理针对操作在所述一个或多个 安全模式之一中的存储器访问请求的访问时,则所述存储器控制电路会以 如同所述存储器访问发生在当操作在所述一个或多个非安全模式中时的方 式来处理所述存储器访问。

附图说明

现将仅通过示例并参照附图来描述发明的实施例,其中:

图1示意性地示出了数据处理系统,该数据处理系统具有处理电路、 存储器管理电路以及包括安全区域和非安全区域二者的存储器;

图2示意性地示出了图1的处理电路的操作模式,该操作模式包括一 个或多个安全模式和一个或多个非安全模式;

图3示意性地示出了页表行走,该页表行进遍历安全模式页表数据以 检索用于管理操作在安全模式中的存储器访问的属性数据;

图4示意性地示出了页表条目,该页表条目包括表安全字段和全局/非 全局属性字段;

图5是示意性地示出了用于通过使用存储在转译后备缓冲器内的属性 数据或经由页表行走来访问属性数据从而管理存储器访问操作的处理的流 程图;

图6是示意性地示出了作为页表行走的一部分所执行的处理的流程 图,该处理响应于在该页表行走期间所访问的不同的页表条目内的表安全 字段数据而控制恢复后的属性数据;

图7是示意性地示出了安全存储器电路的操作的流程图,该安全存储 器电路响应于存储器访问请求而基于与该存储器访问请求相关联的表属性 和安全模式属性来允许或阻塞该存储器访问请求;

图8是示意性地示出了与存储器访问请求相关联的一些处理的流程 图;以及

图9示意性地示出了虚拟机实现方式。

具体实施方式

图1示意性地示出了数据处理系统2,其包括片上系统(system-on- chip)集成电路4和单独的非安全存储器集成电路6。片上系统集成电路4 包括处理器8形式的处理电路,其响应于指令管线10中接收到的程序指 令I而控制指令译码器12,以产生控制信号来配置并控制包括寄存器组 14、乘法器16、移位器18及加法器20的数据路径。处理器8在程序指令 I的控制下执行数据处理操作。这些数据处理操作包括存储器访问操作, 其试图自系统的存储器地址空间内的存储器地址读取数据或于其中写入数 据。并非所有存储器地址空间可与能够存储数据值的真实的物理存储器相 关联,例如,某些地址空间可能无法使用。存储器地址空间中某部分系对 应于配置在片上系统集成电路4内的安全存储器22,而存储器地址空间中 某部分系对应于非安全存储器6。因此,安全存储器22提供存储器的一个 或多个安全区域,而非安全存储器6提供存储器的一个或多个非安全区 域。在片上系统集成电路4内还配置存储器管理单元24(其为存储器控制 电路的一种形式)、外部存储器接口26和高速缓存28。

处理器8使用虚拟地址来产生存储器访问。高速缓存28使用这些虚 拟地址来存储经高速缓存的数据值(其可为数据和指令二者)。如果发生 高速缓存未命中(cache miss),则要访问的数据值必须读取自安全存储器 22和非安全存储器6二者中的一者。存储器管理单元24执行虚拟地址至 物理地址的转换,因为安全存储器22和非安全存储器6二者是物理寻址 装置。存储器管理单元24包括转译后备缓冲器30,其包括存储器的当前 访问页的属性数据。如果进行访问的虚拟地址无法对应至转译后备缓冲器 30内的条目之一,则必需对页表数据执行完全访问(full access),即执行 页表行走。

处理器8操作在一个或多个安全模式和一个或多个非安全模式中。当 操作在安全模式中时,由从处理器5提供给存储器管理单元24的安全模 式信号S指示此模式。提供二组页表数据。安全模式页表数据系用于当操 作在安全模式之一时。非安全模式页表数据系用于当操作在非安全模式之 一时。两个转译表基址寄存器32系配置于存储器管理单元24内,且分别 提供指针于安全模式页表数据的开始处和非安全模式页表数据的开始处。 可通过以下程序执行页表行走:读取相关的转译表基址寄存器值以找出合 适页表数据组的初始地址,接着使用其层次结构形式以惯常被称作页表行 走的方式来访问此页表数据。此页表行走将在下文进一步讨论及说明。

由图1可知,非安全模式页表数据34存储在非安全存储器6内。安全 模式页表数据分成两部分来存储。第一部分的安全模式页表数据36系存 储在安全存储器22内,而第二部分的安全模式页表数据38系存储在非安 全存储器6内。将第二部分的安全模式页表数据38存储在非安全存储器6 内可节省安全存储器22的存储容量而可用于其它目的,且在片上安全存 储器22较小的情况下,使得整个系统仍具有完整的安全模式页表数据组 存储在安全存储器22及非安全存储器6内。

存储在安全存储器22内的第一部分的安全模式页表数据36一般会是 与存储安全敏感数据的存储器区有关的页表数据,该安全敏感数据被正确 地存储而仅能由执行在安全模式之一中的程序来访问。当操作在安全模式 中以进行访问时,第二部分的安全模式页表数据38与不存储敏感数据的 存储器区有关,在此区中,允许此第二部分的安全模式页表数据38存储 在非安全存储器6内不会因此引入安全脆弱性。

图2示意性地示出了图1的处理器8的操作模式。这些模式包括一个 或多个安全模式40、一个或多个非安全模式42和监控模式44,提供这些 模式以允许在安全模式40之一及非安全模式42之一这二者间进行转换。 本领域技术人员将认识到,一个或多个安全模式可包括与不同特权层级相 关的模式,但其皆为安全模式,例如,安全用户模式和安全特权模式。同 样的,在非安全模式42内可提供不同特权层级的模式,例如,非安全用 户模式和非安全特权模式。当操作在安全模式时,处理器8使用安全模式 页表数据来管理其存储器访问。当操作在非安全模式时,处理器8使用非 安全模式页表数据来管理其存储器访问。监控模式44使用安全模式页表 数据。这些操作模式为硬件模式,这是因为数据处理系统2内的硬件依据 目前的操作模式提供不同层级的资源访问,资源例如是存储器区、控制寄 存器等。

图3示意性地示出了通过安全模式页表数据的一页表行走操作。安全 模式页表数据包括配置在层级层次结构中的多个页表46、48、50、52、 54、56、58。在层次结构中的最高层级处,存在包括四个条目的页表46。 此为层级0。页表48至58中每一个包括512个页表条目。每个页表48至 58的大小惯常为4kB,即每个页表条目为64位。

应用于安全模式中的转译表基址寄存器32指向页表46的起始地址。 当管理与虚拟地址对应的存储器访问时,虚拟地址内的位字段接着被用来 提供索引值,以用于选择页表46内的页表条目66之一。在实例中,虚拟 地址VA最高的前二个有效位[31:30]提供索引,以用于标识页表46内四个 页表条目中的一者。此页表条目66包括20位字段 (NextTablePtr<31:12>),其与虚拟地址VA的接下来的9个位[29:21]组 合以提供指针给层级1表内的下一个页表条目70(最低的多个有效位假设 为零)。页表条目70还包括20位字段(NextTablePtr<31:12>),其与虚 拟地址VA的另9个位[20:12]结合以提供一指针给层级2表内的下一页表 条目74。页表条目74持有物理地址的前20个位[31:12],其与虚拟地址 VA的最低的12个位[11:0]组合以经由转译形成完整物理地址PA[31:0]。 将认识到,较大的虚拟地址(例如,48位的虚拟地址)可能需要更多层级 的页表行走。页表条目66还包括其它属性位,包括表安全字段68,其指 示由该页表条目66指到的页表50系存储在存储器的非安全区域内或该存 储器的安全区域内。此表安全字段是NSTable位。当它被设置时,被指到 的下一页表存储在存储器的非安全区域内(且该总线访问应视为非安全 的)。

在图3所示的实例中,层级0页表46指到层级1页表50,层级1页 表50也存储在存储器的安全区。页表条目70包括其自身的表安全字段 72,其指示页表条目70指到的下一页表56系存储于存储器的安全区域内 或存储器的非安全区域内。页表条目70还可包括额外的属性位。

在此实例中,安全页表的页表层次结构的层级2中的页表56系存储 于存储器的非安全区域内。这系由将页表条目70内的表安全字段72被设 置(NSTable=1)来指示,即指示下一所指页表系存储在非安全区域内。

将注意到,表安全字段(即,NSTable位)与页表行走内要访问的下 一页表相关联。因此,当在存储在安全区的页表与存储在非安全区的页表 间移动时,用于指示此改变的表安全字段系存储在安全区域内,而因此能 确保不会遭遇恶意窜改。

在页表行走的每一级处,一部分的虚拟地址系用作为索引值以选择页 表条目,以用于转译该部分虚拟地址并访问指针,该指针指向用于该转译 中的下一页表。与完整页表行走相关联的页表条目66、70及74中至少一 页表条目,包括存储器管理单元24所用的与该存储器访问相关联的存储 器属性。这些属性包括(诸如):由该页表行走所提供的从虚拟至物理位 扯的转译是全局转译(global translation)以可用于所有进程,或为非全局 转译(non-global translation),其仅可用于当前触发该页面行走的进程。 其它进一步的属性可包括:相关页表是否是只读、可高速缓存、仅供特权 模式等,这些是本领域技术人员所熟知的属性。

图4示意性图示图3的页表46至52中的一者内的页表条目78。位于 层2的页表条目可与物理地址PA[31:12]的20位相同,以取代 NextTablePtr<31:12>字段。此页表条目78位于相关页表内的位置处,该位 置系由虚拟地址当中的九位来索引指示(即,标识其在页表内的位置以被 选择来访问)。用作为索引的虚拟地址的九位将视与页表(包括前述的页 表条目78)相关联的页表层次结构内的层级而定。页表条目78包括表安 全字段80,其存储用以指示页表条目78内由NextTablePtr<31:12>字段所 指向的页表存储在存储器的非安全区域内或存储器的安全区域内的一位。 页表条目78还包括字段82,其指示页表条目是全局页表条目(其提供可 用于所有进程的属性数据)或非全局页表条目(其提供仅用于当前触发页 表行走的进程的属性数据)。其它属性84系存储在页表条目78内,这些 属性可指示可高速缓存性(cacheability)、只读状态等。

将认识到,页表层次结构内其后接有较低层级页表条目的每一页表条 目78,将包括表安全字段80。层次结构的层级2中的最低层级的页表不 会指到任何下一页表,因此不需包括表安全字段。全局属性82及其它属 性84仅需配置于页表行走所遍历的页表46至58中的一者中,而不需被存 于每一页表中。全局属性及其它属性84一般存储在层次结构中的最低层 级(此具体实施例中相当于层级2)处,而因此将能提供最佳的控制粒度 来特征化并控制存储器属性。位于页表层次结构内较高层级处的存储器属 性可用于提供较粗粒度的差异等级以区别不同区域的存储器的属性。

本领域技术人员将认识到,当页表层次结构越往下走时,存储器地址 空间内的层级粒度会变小。因此,层次结构内每一层级处的页表数目一般 将增加。如果整个存储器地址空间系映射至最细的粒度等级,则将具有大 量的页表资料。可能并非全部的存储器地址空间皆系映射至满粒度等级, 且在存储器较高层级处的地址空间可标记为不可用或具有默认存储器属 性。

图5是处理流程图,其示出了说明由存储器管理单元24在安全模式 操作下执行存储器访问的处理(当在安全模式操作时,存储器访问应依据 总线的信号所指示而视为安全,至少直到发生NSTable值为“1”为止)。 在步骤86,存储器管理单元等待数据访问发生。当数据访问发生,则必需 访问安全存储器22或非安全存储器6。这会需要将处理器8所产生的虚拟 地址转译为物理地址,以用于安全存储器22和非安全存储器6。在步骤 88,在转译后备缓冲器30中进行查询,以确定针对该要访问的虚拟地址 是否存在地址匹配。如果欲访问的虚拟存储器页先前已访问过,则很可能 相关的转译数据(即存储器属性数据,诸如虚拟至物理地址转译数据、可 高速缓存性状态、只读状态等)将被存储于转译后备缓冲器30内,并 且,如果真是如此,则发生地址匹配。如果在步骤88存在地址匹配,则 处理进行至步骤90。将认识到,在步骤88可能存在数个地址匹配以对应 不同的进程标识符(ASID)。在步骤90,可通过其存储于转译后备缓冲 器30内的进程标识符来区别各个地址匹配,且将针对匹配当前进程的条 目(如果有的话)返回命中。如果在步骤88不存在地址匹配,则需要页 表行走,并在步骤92依据相关图3和4的前述方法执行该页表行走。

在步骤92的页表行走之后,在步骤94将新的页表数据(包括NST 位)存储于转译后备缓冲器30内。步骤96接着使用物理地址发送存储器 访问至安全存储器22或非安全存储器6,该物理地址系利用所获得的转译 数据所产生,该转译数据是与若干信号一起获得的,该等信号指示处理器 8当前处于安全操作模式中,还指示是否已使用页表数据(其至少包括存 储于非安全存储器6内的某些页表数据)进行了存储器访问。

如果步骤88确定转译后备缓冲器30内存在对要访问的虚拟地址的匹 配,则步骤90确定当前由处理器8执行的进程是否与转译后备缓冲器30 内具有匹配地址(步骤88)的每个条目所关联的进程相匹配。如果存在该 匹配,则步骤98选择相关的转译后备缓冲器条目以供使用,并进行至步 骤96。如果步骤90不存在该匹配,则处理进行至步骤100,步骤100确 定经过步骤88的地址匹配的转译后备缓冲器条目是否被标记为全局条目 以可用于所有进程。如果该相关条目被标记为全局条目,则处理再次进行 至步骤98。如果该条目未被标记为全局条目,则处理进行至步骤92以执 行一页表行走。

将认识到,图5的处理是示出了顺序的处理。在实践中,存储器管理 单元24可以不同的次序和/或平行等级来操作。然而,图5的流程图示出 了对所执行的整体处理及控制层级的一个观点。还将认识到,此处理的某 些部分或全部可于软件中执行。

图6示出了当执行页表行走时对关联存储器访问的表安全状态(NST 位)的设定所进行的控制(此表安全状态最终被返回至图1的访问控制电 路128)。此表安全状态(NST位)指示是否有任何存储在存储器非安全 区的安全页表在页表行走通过安全模式页表数据期间被使用。在步骤 102,处理等待安全页表行走被请求。当该行走被请求时,步骤104将表 安全状态的初始值设定为“0”。步骤106随后确定转译表基址寄存器 (其存储指到安全模式页表数据的层级0页表46的指针)是否指示所有 的安全模式页表数据存储在存储器的非安全区域内。TTBR 32提供专用于 此目的的位。如果步骤106确定所有的安全模式页表数据存储在非安全存 储器中,则步骤108将NST位设定为“1”,即处理器应将访问视为非安 全。如果步骤106确定并非所有的安全模式页表数据存储在存储器的非安 全区域内,则绕过步骤108。

在步骤110,与正执行的存储器访问相关联的一部分的虚拟地址被用 以索引指示层级0处的页表46,该页表存储在安全存储22内。接着读 取此层级处的页表条目66,且步骤112确定表安全字段68是否指示页表 条目66所指的层级1页表50系存储在非安全存储器内。如果页表50被指 示其存储在非安全存储器6内,则步骤114会将表安全状态NST设定为 “1”。如果在步骤112读取的表安全字段68并未设定,则绕过步骤 114,而处理进行至步骤116,其中执行层次结构的下一层级(即层级1) 内的表安全字段的检查,且如果页表条目70内的表安全字段72指示下一 页表56存储在非安全存储器内,则将表安全状态设定为“1”。在此例 中,由于层级2为层次结构中的最低层级,因此其不需要关于较低层级的 表安全字段。

如果在页表行走期间访问的页表46、50或56的任一者存储在非安全 存储器内,则与存储器访问相关联的表安全状态NST将由步骤104所设定 的初始值“0”,在步骤108、114或118的任一者中改变成设定为 “1”。存储器管理单元24在其页表行走(在硬件控制下执行)期间确定 NST位的设定,且因此安全被确定。

步骤122确定表安全状态NST是否等于“1”。如果表属性位NST确 实等于“1”,则步骤124迫使TLB条目被标记为非全局条目,使得经返 回且存储在转译后备缓冲器30中的属性数据将仅用于当前进程,无论该 属性数据于安全模式页表数据本身内的标记形式为何。在步骤126,存储 器属性数据及NST位与S位(指示系统是否在安全模式)被返回至转译后 备缓冲器30,且还用于形成并控制针对安全存储器22或非安全存储器6 中的一个的存储器访问。

图7是流程图,其示出了与安全存储器22相关联的处理,该处理是 由与安全存储器相关联的访问控制电路128所执行。在步骤130,访问控 制电路128接收存储器访问请求。步骤132确定该存储器访问请求是否伴 随信号S,信号S指示产生该存储器访问请求的处理器8操作在安全模式 40中的一个。存储器访问请求还与表属性位NST相关联,表属性位NST 指示用于产生该存储器访问请求的页表的任一者是否存储于存储器的非安 全区域内。步骤132的确定确保:在步骤134,如果S位指示处理器8系 在安全模式(即S等于0)且表属性位为「0」用以指示未使用任何非安全 模式页表来产生存储器访问请求,则数据访问控制电路128将仅传递及允 许存储器访问至安全存储器22。还可依据标准技术进一步对访问的权限等 级进行设限。如果存储器访问请求无法通过这些组合的测试,则处理进行 至步骤136。步骤136确定访问是否为读取。如果访问为读取,则步骤 138针对该读取返回全部0值(另一替代方式为,触发异常,使得操作系 统可处理适当的响应)。如果访问并非为读取,则步骤140阻塞写入操 作。

回到图1,可见安全模式页表数据的第一部分36系存储于安全存储器 22内。安全模式页表数据的第二部分38系存储在非安全存储器6内。非 安全存储器6配置在单独集成电路中,且其具有比安全存储器22还大的 存储容量。安全模式页表数据的第一部分36可为与还存储在安全存储器 22内且包括敏感数据的页面相关的页表数据,而安全模式页表数据的第二 部分38会与存储于非安全存储器6内且包括非敏感数据的页面相关。安 全存储器22内的有限的存储容量不耗用在存储安全模式页表数据的第二 部分38,安全模式页表数据的第二部分38另外可存储在非安全存储器6 内。安全模式页表数据被标记以指示是否部分的安全模式页表数据系存储 在非安全存储器6,如此可允许行使控制,以使存储器访问可与表属性位 NST相关联,该表属性位NST指示与该存储器访问相关联的任何页表数 据是否存储在非安全存储器6内,尽管其形成部分的安全模式页表数据。 通过这种方式,安全模式页表数据的第一部分36可安全地保存在安全存 储器22内,其中可确保不会遭遇恶意窜改,且表属性位NST可在硬件控 制下产生,如此其可以如下方式来指示其涉及存储在非安全存储器6内的 页表数据:其可由存储器管理单元24通过仅参考安全模式页表数据36的 第一部分而检测到,且其不会因恶意窜改安全模式页表数据的第二部分38 而被修改。

将认识到,前述技术允许使用既有软件,且不需感知NSTable位及相 关机制的存在或操纵。前述技术还允许部分页表数据的重用,例如,非安 全存储器映射外设和非安全共享库码。

图8是流程图,其示意性地示出了与存储器访问请求相关联的某些处 理。在步骤142,处理等待接收到存储器访问请求。此存储器访问请求可 为加载(load)指令、储存(store)指令、取指令操作等的结果。存储器 访问可访问随机访问存储器、只读存储器等内的一部分存储器,或可访问 至存储器地址空间内的存储器映射外设。这些替代方案是本领域技术人员 所熟知的。当在步骤142接收到存储器访问请求时,处理进行至步骤 144,其中,在转译后备缓冲器30中执行查询,以确定转译后备缓冲器30 内是否存在对应于与存储器访问请求相关联的虚拟地址的条目。将认识 到,转译后备缓冲器30可对应于转译后备缓冲器层次结构,诸如,包括 微转译后备缓冲器(用于快速访问至最近使用的转译)和较大型转译后备 缓冲器(其上存储有大量的先前使用的转译)。将认识到,转译后备缓冲 器除了存储用以允许从虚拟地址转译至物理地址的数据外,还存储更多其 它数据,诸如存储有许可数据、NST位数据、安全模式数据、处理标识符 (ASID)、指示转译系全局或非全局的数据,等等。当确定虚拟地址具有 相应数据存储在转译后备缓冲器内时所执行的匹配,其不仅考虑到虚拟地 址的位,还可匹配安全位S,安全位S指示存储器请求是否源自安全模式 或非安全模式。转译后备缓冲器内用于条目的NST位还可被读取,且如果 其被设置,则例如,标记为全局条目的条目可降级至非全局条目(即,仅 应用至具有所标识的匹配进程的单一进程)。

如果步骤144确定转译后备缓冲器不具有匹配条目,则处理进行至步 骤146,其中执行在安全模式页表数据或非安全模式页表数据中的相关者 中的页表行走。此页表行走可参照前述相关图3、图5和图6的说明。如 果微处理器系在安全模式中,则页表行走访问将标记为安全,至少直到看 见NSTable=1值出现。在步骤148,确定页面是否成功地映射至物理存储 器。如果不存在成功映射,则处理进行至步骤150,其中触发异常处理。 如果映射成功,则处理进行至步骤152,其中将物理地址转译数据、NST 位及其它访问许可位存储在转译后备缓冲器内以供后续使用。

如果步骤144确定在转译后备缓冲器中存在匹配,则处理进行至步骤 154,其中,从转译后备缓冲器读取匹配数据。此匹配数据包括物理地址 转译数据、访问许可及NST位。接在步骤152及154之后,处理进行至步 骤156,其中,确定获取的访问许可数据是否指示允许存储器访问。例 如,一部分存储器可被标记为仅当操作在特权模式中时可访问,且处理器 当前可处在用户模式中,因此不应允许进行访问。如果恢复的访问许可不 允许进行访问,则处理进行至步骤150,其中,再次触发异常处理。如果 访问许可指示允许进行访问,则处理进行至步骤158,其中,使用物理地 址转译数据和存储器访问的原始虚拟地址来形成物理地址。步骤160确定 NST位是否设定为0,以及安全位S是否指示存储器访问源自安全模式中 执行的进程。如果并未同时符合两个条件,则处理进行至步骤162,其 中,尝试作为使用全物理地址的非安全访问而执行存储器访问。如果同时 满足步骤160的两个条件,则处理进行至步骤164,其中,尝试如同使用 全物理地址的安全访问般来执行存储器访问。在步骤162及164之后,步 骤166确定物理地址是否对应于安全存储器区域或安全外设。如果物理地 址不对应于安全存储器或安全外设,则处理进行至步骤168,其中,执行 存储器访问(不论是读取还是写入)。如果步骤166确定地址系对应于安 全存储器区域或安全外设,则步骤170使用访问控制电路128来确定事务 处理是否安全,也就是NST位是否具有零值。如果事务处理安全,则处理 再次进行至步骤168,以执行访问动作。如果事务处理不安全,则处理进 行至步骤172,其中,如果访问为写入操作,则阻塞该写入操作,或者如 果访问为读取操作,则返回零值。

图9示出了可使用的虚拟机实现方式。尽管前述的具体实施例是在用 以操作支持相关技术的特定处理硬件的设备及方法架构下实现本发明的, 然而,还可提供所谓的硬件装置的虚拟机实现方式。这些虚拟机实现方式 在主机处理器530上执行,主机处理器530一般会执行支持虚拟机程序的 主机操作系统520。通常,需要以适当速度运行的大功率处理器来提供虚 拟机实现方式,然而此方式在某些情况下是适合的,诸如,当需求执行另 一处理器所属的本地程序代码以达到兼容或重用目的时。虚拟机程序510 能够执行应用程序(或操作系统)500以提供和由真实硬件装置执行程序 时相同的结果。因此,可使用虚拟机程序510,从应用程序500内部执行 程序指令(包括前述的存储器访问的控制)。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号