共享页的制作方法

文档序号:13884547阅读:220来源:国知局
本公开涉及数据处理系统领域。技术实现要素:已知提供支持一个或多个客人执行环境的虚拟化的数据处理系统。作为示例,已知提供使用管理程序的数据处理系统,该管理程序控制和调度一个或多个客体执行环境的执行,该客体执行环境本身可以包括客体操作系统和一个或多个客体应用程序。在这样的系统的至少一些用途中希望给定的客体执行环境的数据(潜在的秘密数据)应该被保护以免被系统内的其他进程访问。至少一些示例提供一种用于处理数据的装置,包括:所有权电路,强制物理存储器地址空间内的存储器区域的所有权,给定存储器区域具有在多个程序之中且独立于优先权等级经指定的给定持有程序,所述给定持有程序具有控制所述给定存储器区域的访问的独占权,其中所述给定持有程序将所述给定存储器区域指定为以下各项中的一个:所述给定持有程序专用;以及在所述给定持有程序与至少一个其它存储器访问请求源之间共享。至少一些示例提供一种用于处理数据的装置,包括:所有权装置,用于强制物理存储器地址空间内的存储器区域的所有权,给定存储器区域具有在多个程序之中且独立于优先权等级经指定的给定持有程序,所述给定持有程序具有控制所述给定存储器区域的访问的独占权,其中所述给定持有程序将所述给定存储器区域指定为以下各项中的一个:所述给定持有程序专用;以及在所述给定持有程序与至少一个其它存储器访问请求源之间共享。至少一些示例提供一种用于处理数据的方法,包括:强制物理存储器地址空间内的存储器区域的所有权,给定存储器区域具有在多个程序之中且独立于优先权等级经指定的给定持有程序,所述给定持有程序具有控制所述给定存储器区域的访问的独占权,其中所述给定持有程序将所述给定存储器区域指定为以下各项中的一个:所述给定持有程序专用;以及在所述给定持有程序与至少一个其它存储器访问请求源之间共享。本技术的其它方面、特征结构以及优点从自结合随附图解读的示例的以下描述显而易见。附图说明图1示意性说明由处理设备执行的程序的示例;图2以及图2(续)示出数据处理设备的示例;图3示意性说明在数据储存器中对访问数据的访问请求的验证的示例;图4说明在数据处理设备的不同点处的事务的示例;图5说明验证访问请求的示例性方法;图6说明用于请求程序的示例性方法,该请求程序请求物理地址的对应页的所有权;图7示出重写程序的示例;图8示出所有权表中的更新属性的示例;图9说明用于在旁看缓冲中使项无效的指令的示例;图10示意性说明客体执行环境的安全初始化;图11为流程图,其示意性说明破坏性主张物理存储器地址空间页的所有权的程序;图12示意性说明用于支持超管理器以及多个客体执行环境的硬件系统;图13示意性说明超管理器、安全控制器与多个客体执行环境之间的关系;图14示意性说明物理存储器地址空间页的各种共享状态;图15为流程图,其示意性说明处理变化共享许可的请求;图16a以及图16b为示意性说明执行上下文切换的流程图;图17示意性说明示例性程序描述符项;以及图18示意性说明程序状态态。以下论述本技术的一些具体示例。具体实施方式图1示意性说明可由数据处理设备执行的程序的示例。超管理器2可管理多个虚拟机(virtualmachine;vm,也已知为客体操作系统(operatingsystem;os)或客体os)4。各vm4可管理一个或多个应用6。例如,超管理器2可控制地址空间的哪些区域经分配至各虚拟机4且控制虚拟机4之间的切换,例如对各别虚拟机4之间的时间共享处理资源之中断进行排程。类似地,各vm4可控制地址空间的哪些区域经分配至在该vm4下执行的各应用6,且可视需要控制应用之间的切换。如图1所示,各程序与给定优先权等级el0、el1、el2、el3相关联。在此示例中,编号较高的优先权等级比编号较低的优先权等级优先权更高,尽管在其它示例中可能以相反方式编号。在此示例中,应用6以优先权等级el0执行,vm4以优先权等级el1执行且超管理器2以优先权等级el2执行。通常,以较高优先权等级执行的程序具有以较低优先权等级执行的程序不可用的权限。如图1所示,超管理器2、vm4以及设备6可在正常域中操作。另外,设备可支持自正常域分割的安全域以使得在正常域中执行的程序无法访问与安全域相关联的数据或指令。因此,也可存在在安全域中执行的程序,诸如安全操作系统(operatingsystem;os)10以及在安全os10控制下的安全域中执行的可信赖应用12。安全os10以及可信赖应用12分别以优先权等级s-el1、s-el0执行。也以优先权等级el3提供安全监视器程序14以管理正常域与安全域之间的转化。安全监视器程序14可例如管理地址空间的哪些区域与安全或非安全域相关联,同时提供一些保护硬件以防止正常域中的非安全程序访问安全区域内的数据或指令。用于分割正常与安全域的技术的示例为由英国limitedofcambridge提供的技术,尽管也可以使用其它示例。如图1所示提供安全域为可选的且其它实施例例如可能不支持安全监视器14、安全os10以及可信赖应用12。程序2、4、6、10、12、14中的每个使用虚拟地址(virtualaddress;va)以标识数据储存器(诸如存储器)中待访问的位置。va经转换成物理地址(physicaladdress;pa),其直接标识对应的储存位置。对于应用6或虚拟机4,va首先经转换成中间物理地址(intermediatephysicaladdress;ipa),且随后ipa经转换成pa。例如,通过提供两个等级的地址转换,虚拟机4可控制用于va至ipa转换的页表以控制地址空间的哪些部分经分配至各应用6,且超管理器2可控制用于ipa至pa转换的页表以控制地址空间的哪些部分经分配至各虚拟机4。对于其它程序2、14、10、12,va直接转换成pa,其中例如超管理器2(在正常域中)或安全os10(在安全域中)控制页表,这些页表控制各程序可访问地址空间的哪些部分。因此,可能存在多个可由数据处理设备执行的程序。在典型系统中,对地址空间的访问的控制以“自上而下(topdown)”方式管理,处于较高优先权等级的程序控哪些地址可由处于较低优先权等级的程序访问。例如,处于el2的超管理器2设定访问许可,其定义哪些地址可由处于el1的虚拟机4访问。然而,以较高优先权等级执行的程序通常可读取或写入与在其下执行的处于较低优先权等级的各程序相关联的所有地址。此可能为以较低优先权等级操作的程序的开发者带来安全问题。例如,在实施由不同方提供的多个虚拟机4的云平台中,各方中的一个可能希望防止与虚拟机4相关联的数据或编码曝露于可能由不同方(诸如云操作者)提供的超管理器2。本申请引入“盲超管理器(blindhypervisor)”的概念,该超管理器仍管理虚拟机4且控制其可访问地址空间的哪些部分,但不一定能够查看与给定虚拟机4相关联的所有数据。类似地,对于以其它优先权等级操作的程序,以较高优先权等级执行的程序可被阻止访问由以较低优先权等级执行的程序使用的地址。图2以及图2(续)(其示出单个图标的左部分以及右部分)示出包括多个总线主控器的数据处理设备20的示例,这些总线主控器包括一些用于响应于指令处理数据的处理电路。在此示例中,处理电路包括两个中央处理单元(centralprocessingunit;cpu)24、图形处理单元(graphicsprocessingunit;gpu)25以及安全复合体28,其为用于管理某些安全功能的专用处理单元,如下文中将论述。总线主控器也包括可代表处理电路中的一个执行处理任务的其它装置,诸如直接存储器访问(directmemoryaccess;dma)控制器26或输入/输出(input/output;i/o)接口(图2以及图2(续)中未示出),其例如用于控制数据至外部装置的输入或输出。应了解也可提供其它类型的主装置。系统总线30将每个总线主控器与控制存储器34的访问的存储器控制器(memorycontroller;dmc)32耦接。在此示例中,使用动态随机访问存储器(dynamicrandomaccessmemory;dram)实施存储器,但也可提供其它形式的存储器或其它类型的数据储存器。各总线主控器24、25、26、28可经由总线30向存储器控制器32发起数据访问事务(读取或写入),且控制器控制存储器34以服务事务。提供多个缓存36以用于缓存处理电路24、25的本端数据或指令。cpu24各具有其自身1级指令缓存以及1级数据缓存,但共享2级缓存。gpu25具有用于缓存数据或指令的缓存36。应了解此仅为可使用的可能的缓存阶层的示例且其它配置为可能的。各处理电路(cpu或gpu)24、25也具有用于在虚拟地址(virtualaddress;va)、中间物理地址(intermediatephysicaladdress;ipa)与物理地址(physicaladdress;pa)之间进行转换且强制由某些程序使用页表设定的访问许可,如将在下文中更详细地论述。cpu24以及gpu25可执行来自上文中关于图1论述的程序类型中的任一个的指令。图1的每个程序2、4、6、10、12、14均可称为「盲域」(blinddomain;bd)且具有对应的盲域标识符(blinddomainidentifier;bdid)。对于一些程序,bdid可任意分配至各别程序。例如,可仅对超管理器2、安全监视器14或安全os10指定对应的bdid值。然而,对于其它程序,bdid可为已经指定至个别程序的现有标识符的序连连接。例如,用于在特定虚拟机4下执行的给定应用6的bdid可至少部分地由与该应用相关联的应用空间标识符(applicationspaceidentifier;asid)以及虚拟机标识符(virtualmachineidentifier;vmid)形成。指示程序与安全域抑或正常域相关联的安全位s也可包括在bdid中。总而言的,各程序可使用其对应的bdid而唯一地标识。在存储器34内提供盲域描述符表(blinddomaindescriptortable;bddt)42以追踪各bd2、4、6、10、12、14的状态。例如,对于各bdid,bddt42可将盲域的状态指定为以下各者中的一个:·无效:对于此bdid尚未建立盲域;·清除:bdid由安全复合体28主张(如下文所描述,此可包括进行重写程序以重写在存储器34中与先前使用相同bdid的程序相关联的任何数据);·准备:安全复合体28初始化与该bdid相关联的bd以使bd准备好执行;·执行:bd已经初始化且准备好执行或被执行。例如,bddt42可为各bdid指定2位状态区位以标识对应盲域的状态。在下文中更详细地描述盲域的状态的生命周期。由asid标识的应用的bddt项可使用vmid至asid间接表追踪,该表将给定虚拟机4的vmid映射至在该虚拟机6下执行的应用6的asid。应了解bddt42也可包括与给定bd相关联的其它信息,而非仅仅上文提及的状态标识符。每个盲域(blinddomain;bd)可保护其数据或指令隔开任何其它盲域。任何bd可要求其成为物理地址空间的选定页的持有者bd。页所有权表(pageownershiptable;pot)50储存在存储器34中,其追踪哪些bd(若存在)为存储器的各实体页的持有者bd。存储器的给定页的持有者bd(也称为持有者程序)具有控制该页的访问的独占权。例如,持有者bd可设定在页所有权表50中的控制其它bd能否访问该页的属性。各总线主控器均具备保护硬件60、62,其用于强制由给定页的持有者bd设定的许可属性,其防止在这些访问请求违反由持有者bd控制的限制的情况下来自其它bd的以该页为目标的访问请求输出至总线30上。以此方式,任何程序均可防止其它程序(包括较高优先权等级程序)访问其数据或指令。如图2以及图2(续)所示,页所有权表(pageownershiptable;pot)50包括多个项52,其各自对应于物理地址空间的不同页。pot50为由物理地址索引。pot50的各项52包括以下信息:·持有者bdid字段54,其指定拥有对应实体页的bd的bdid;·属性字段56,其指定一个或多个用于控制对对应实体页的访问的属性。这些属性由在bdid字段54中标识的持有者bd设定;·地址字段58:对于持有者bd使用虚拟地址或中间物理地址(例如,应用6、12或虚拟机4)的页,地址字段58在该页由持有者bd主张时指定映射至对应实体页的物理地址的va或ipa;·页状态区位(未在图2以及图2(续)中说明):其指示对应页的状态。例如,各实体页可处于以下状态中的一个:○无效:不由任何bd所有;○主张中:处于由bdid字段54中指示的bd主张的过程中,但尚未经有效地拥有;○有效:由bdid字段54中所指示的bd有效地拥有。·视需要,主张计数字段60,其追踪在主张页的所有权时进行重写程序期间经重写的页的行数(其更多细节在下文中描述)。也可能在不同位置中储存主张计数器60,诸如在cpu24或gpu25的缓存器或存储器34中的堆栈结构内,以使得若需要时主张计数字段60可自pot50省略。给定页的pot项52的属性字段56由该页的持有者bd设定,以向持有者bd提供对其它bd访问该页的方式的独占性控制。属性字段56可包括用于控制对对应页访问的一系列属性,例如:·共享属性,其指示除持有者bdid以外的程序可访问该页。例如,共享属性可指定以下页类型中的一个:○专用:页仅可由在bdid字段54中标识的持有者bd访问;○io:页仅可由在bdid字段54中标识的持有者bd以及已经持有者bd主张的任何装置26访问(参见下文中对主张装置所有权的论述);○共享:页可由持有者bd以及一个或多个选定其它bd但不由任何其它bd访问。选定其它bd可通过属性字段56的其它属性或通过自页所有权表50分别储存的控制数据来标识。○全局:页可由任何bd访问。·读/写属性,其指示当允许除持有者bd以外的bd访问页时,该bd对该页具有只读访问以及(或)读/写访问。·加密属性,其指示应用于写入对应实体页的数据的加密等级。如图2以及图2(续)所示,存储器控制器32可包括加密电路56,其用于加密写入存储器34的数据并解密读取自存储器34的数据。加密电路56可维持多个保密加密密钥且各bdid可具有其自身的密钥。加密电路56支持多个不同的加密等级,自根本不加密(数据不受阻碍地写入存储器中)至连续变强的加密形式。大体上,加密越强,安全性越高,但在加密并解密数据中消耗较多资源。在一些实施例中,给定bd可对其所拥有的所有页指定相同的加密等级。若bd所拥有的所有页的加密等级相同,则替代方案为,在bddt42中的该bd项中而非在该bd拥有的页的各pot项52中指定加密等级。然而,指定页表中的加密等级允许达成较快效能,因为随后加密电路56仅需读取一个表50以标识页的持有者bd以及加密等级两者,而非读取pot50以及bddt42。然而在其它实施例中,持有者bd可对其所有的不同页指定不同加密等级。通过允许持有者bd按页选择特定页所需的加密等级,最强加密可预留给真正需要加密的页,且储存较不敏感信息的页可使用较弱加密等级以节约能量。此允许较好的安全与能量平衡。因此,在写入时,加密电路56检查目标地址的pot项52以确定应用于对应页的加密等级。加密电路56选择用于该pot项52的bdid54字段中指示的持有者bd的适当加密密钥,且使用该密钥以及指定加密等级加密数据,随后将加密数据写入至存储器34。类似地,在读取访问时,加密电路56检查对应页的pot项52以确定所需解密等级以及应使用哪一持有者bd密钥来解密、解密自存储器34读取的数据且随后将解密数据经总线30输出至请求数据的主控器。因此,各程序均可成为物理地址的对应页的持有者且具有对其它程序可否访问该页的独占性控制,包括对优先权等级较高程序的控制。此使得例如虚拟机4能够防止超管理器2访问其数据或指令,从而解决上文所述的问题。页所有权表50中的策略设定的强制由与各处理电路24、25、28相关联的盲域管理单元(blinddomainmanagementunit;bdmu)60来进行。如图3所示,bdmu6可充当事务验证的进一步阶段,其对已通过由存储器管理单元(memorymanagementunit;mmu)40进行的任何检查的事务进行操作。如图3所示,mmu40可包括阶段1mmu(stage1mmu;s1mmu)40-1以及阶段2mmu(stage2mmu;s2mmu)40-2用于分别提供地址转换的两个阶段。至mmu的事务输入包括待访问的虚拟地址70、指定事务为读取还是写入事务的事务类别属性72、标识发起事务的应用6的asid73以及标识应用6在其下执行的虚拟机4的vmid74。asid以及vmid可一起被认为形成上下文标识符,其标识事务在其中执行的上下文。s1mmu40-1查找阶段1转换旁看缓冲(stage1translationlookasidebuffer;s1tlb)中的虚拟地址70以及asid73,该阶段1转换旁看缓冲为s1mmu内的本端缓存,其用于缓存来自储存在存储器34中的阶段1(stage1;s1)页表80的项子集。在正常域中,s1页表80由控制应用6的虚拟机4设定,且在安全域中,s1页表80由安全os10设定。各s1页表项指定用于虚拟地址空间的对应页的va-pa或va-ipa映射,且指定对应asid具有对于对应页的读取抑或写入许可的属性。若s1tlb不含有用于va70以及asid73的对应项,则进行页表走查以将所需项自s1页表80抓取。一旦所需项处于s1tlb中,s1mmu40-1即检查对于指定asid73以及虚拟地址70是否准许由读/写属性72指定的类别的访问。若不准许访问,则事务被拒绝且可能发信通知阶段1访问违规。另一方面,若满足许可,则输出对应于输入va70的经转换的pa或ipa75。如果以例外等级s-el0、s-el1、el2或el3中的一个发起输入事务,则s1mmu40-1的输出为pa且可绕过阶段2mmu40-2。然而,如果以el0或el1执行的应用6或虚拟机4发起输入事务,则s2mmu40-2进行进一步地址转换以及访问许可检查。s2mmu40-2包括阶段2tlb(stage2tlb;s2tlb),其缓存来自存储器34中的阶段2(stage2;s2)页表82的项子集。s2页表82由超管理器2(用于正常域)或安全os10(用于安全域)设定。s2mmu40-2查找s2tlb以检查是否存在用于指定ipa75以及vmid74的项,并且如果不存在,则进行页表走查以自s2页表82抓取所需项。当所需项处于s2tlb中时,s2mmu40-2检查是否准许属性72中所指定的类型的事务,并且如果准许,则输出对应于ipa75的经转换的pa76。若事务不被准许,则标记阶段2访问违规且事务被拒绝。因此,mmu40-1、40-2的各阶段均可视为访问控制电路,其用于检查访问请求是否满足由处于给定优先权等级的预定程序设定的访问许可(例如,s1mmu40-1强制由虚拟机4或安全os10设定的许可,且s2mmu40-2强制由超管理器2设定的许可)。物理地址76随后传递至bdmu60以强制由用于物理地址空间的对应页的pot50中的持有者bd设定的任何访问控制。以与mmu40的各阶段内tlb类似的方法,bdmu60可包括用于自存储器34缓存pot50以及bddt42的部分的旁看缓冲(参见下文图9)。因此,当接收到物理地址76时(自来自el2、el3或s-el1的实体编址事务,或由mmu40转换自va或ipa),bdmu60检查所需pot项以及bddt项是否在各别旁看缓冲中,并且如果不在,则自存储器34抓取所需项。一旦所需项可用,即使用如下一系列检查验证物理地址:·bdmu60检查当前上下文bd(自其产生事务的bd)是否为bddt42中的有效上下文。例如,bdmu60可自vmid74以及asid73形成当前上下文bd的bdid并检查对应bdid是否在bddt42中标记为「执行」状态。·bdmu60检查当前上下文bd是否示出为对应于物理地址76的pot项52的持有者bd54。·如果当前上下文bd不为持有者bd,则bdmu60检查当前上下文bd是否由持有者bd准许访问页(使用上文所描述的共享属性)。·如果当前上下文bd不为持有者bd,则bdmu60检查对应pot项的读/写属性以确定属性72中指定类型的事务是否由持有者bd准许。·如果当前上下文bd为持有者bd,则bdmu60检查具备输入事务的va70或ipa75是否与对应pot项52的地址字段58中的va/ipa匹配。·bdmu60也检查在s1页表中指定用于当前访问的预期共享属性是否与对应pot项中指定的实际共享属性匹配。若这些检查中的任一个失败,则访问被拒绝且触发访问违规。否则,物理地址事务经验证且输出至系统总线30上。应了解上文所描述的检查可以任何次序进行或可至少部分地同时进行。类似地,bd过滤器62可控制以物理地址空间的特定页为目标的事务是否经输出至系统总线30上,其系基于该页的持有者是否已在对应pot项52的属性字段56中将该页标记为“io”型。因此,如图4所示,耦接至系统总线30的各总线主控器24、25、26、28可具备bdmu60或bd过滤器62以用于验证实体编址事务,以使得所有输出在系统总线上的事务均为指定物理地址的经验证的事务且因此在存储器控制器32处不需要任何后续验证。替代方案为将bdmu功能60移动至存储器控制器32以使得已由mmu40验证但尚未与由页持有者在pot50中设定的任何许可相比较的事务经输出至总线上,且随后当其达至存储器控制器32时针对pot50接受检查。然而,提供bdmu60为有利的,因为其通过防止通不过pot50检查的事务输出至总线上,且避免需要将额外标记自总线主控器传输至标识与各事务相关联的当前上下文bd的存储器控制器而减少总线传输量。相反地,在存储器控制器32处提供加密/解密电路56以使得写入存储器的数据可经加密以防止硬件攻击,但总线主控器24、25、26、28自身不需要具有任何加密功能。图5示出检查是否准许由处理电路24中的一个发起的数据访问事务(访问请求)的方法。在步骤100,接收指定va70的输入事务。在步骤102,s1mmu40-1查找用于对应于项va70以及当前上下文(vmid、asid)的项的s1tlb。s1mmu40-1检查在该项中是否存在对访问许可设定的违规。若存在s1访问违规,则事务请求在步骤104被拒绝。若不存在s1访问违规,则输出经转换的ipa或pa。此外,页的pisg状态(预期共享属性)由s1mmu40-1输出,如将在下文中更详细地论述。若事务以el2、el3、s-el0或s-el1发起,则经转换的地址为pa且略过s2mmu40-2。若事务以el0或el1发起,则输出地址为ipa且进行地址转换的第二阶段。在此情况下,s2mmummu40-2类似地查找用于对应于ipa75以及当前上下文(vmid)的项的s2tlb。该项中的访问许可经检查并且如果存在访问违规,则请求再一次在步骤104被拒绝。若访问由s2mmu40-2准许,则ipa经转换成输出至bdmu60的pa76。因此,在阶段1或阶段2地址转换时不存在访问违规之前提下,获得物理地址。在步骤112,向bdmu60提供物理地址,其检查当前上下文的bdid是否在bddt42中示出为“执行”状态。若不示出为“执行”状态,则在步骤114请求被拒绝。为了进展至执行状态,bdid将首先需要进展通过“清除”以及“准备”状态,如将在下文中论述。此验证bdid的步骤通过为尚未安全初始化的bdid发起访问而防止安全初始化程序被撤销。此外,缓存一些最近被查找的bddt42项的本端旁看缓冲可维持在bdmu60内以加速bddt项的检查。如果当前上下文的bdid经验证为处于“执行”状态,则在步骤116,bdmu60检查对应于所需物理地址76的pot项52(记法pot[pa]指对应pot项52)。此外,此可在提供于bdmu60内的本端pot旁看缓冲存储器取,该本端pot旁看缓冲用于缓存最近遭遇的pot项的子集以用于较快访问。bdmu检查对应pot项52是否将当前上下文的bdid标识为目标页的持有者bd。若不然,则在步骤118,bdmu检查对应pot项52的共享属性经标记为“全局”或与当前上下文的具体bdid“共享”。bdmu60也可检查访问请求的读/写类型是否与针对对应pot项52的属性字段56中的bd而非持有者所定义的准许类型匹配。若通过这些检查,则在步骤120,bdmu验证事务且将其输出至系统总线30上。另一方面,若页不与当前上下文的bdid共享(例如,页为专用的或仅与不同bd共享)或访问请求指定写入但页经标记为只读,则请求在步骤114被拒绝。另一方面,若在步骤116,当前上下文为对应页的持有者bd,则不需要检查共享属性56,因为持有者bd经准许访问其自身的页。然而,在步骤122,若事务源处于优先权等级el0、el1或s-el0下,则bdmu60检查事务的va或ipa是否与储存在对应pot项52的地址字段58中的va或ipa匹配。对于在el0或s-el0下发起的事务,bdmu60检查事务的va是否与地址字段58中的va匹配,而对于在el1下发起的事务,bdmu60检查事务的ipa是否与地址字段58中的ipa匹配。若存在匹配,则验证了事务且在步骤120在总线30上输出。若地址不匹配,则请求在步骤114被拒绝。此针对pot50中记录的va或ipa的上一检查为何是有用的可能不立即显而易见。考虑以下情形:超管理器2可例如将两个实体编址页pa0、pa1分配至特定虚拟机4,s2页表82中的地址映射如下:ipapaipa4pa1ipa9pa0虚拟机4可随后取得这些页两者的所有权且如下设定pot50中的共享属性:pa共享?pa0全局pa1专用虚拟机4可随后例如包括将敏感数据写入至ipa4(vm4将预期已在pot50中经标记为专用)以防止其它程序访问此数据的一些代码。然而,在vm4启动代码的安全部分以用于写入敏感数据之前,超管理器2可如下修改s2页表82:ipapaipa4pa0ipa9pa8若vm4现在使用中间物理地址ipa4执行其代码的安全部分,则它现在将被映射至不同的物理地址pa0,其在pot50中标记为“全局”页。vm4将其敏感数据写入至“全局”页,从而使此信息曝露于包括超管理器2本身的任何其它程序。此问题可通过在pot50中提供信息58来避免,其将用于持有页的地址映射“锁定”至某些映射,以使得若另一程序在pot50中的所有权属性信息已经设定之后改变页表80、82中的地址映射,则可触发访问违规。例如,当持有者bd主张页时,在主张页时的当前va-pa或ipa-pa映射可使用对应于该实体编址页的pot项52的地址字段58记录。在以上示例中,pot50可为如下:随后,当vm4试图使用中间地址ipa4访问专用页时,若超管理器2已同时将ipa4重映射以指向pa0,则此将被侦测到,因为在实体页pa0的pot项52中访问之中间地址ipa4现在将与中间地址ipa9匹配。因此,可标记出错误且vm4可停止其安全处理以避免使敏感信息曝露于其它程序。这避免上文所论述类型的攻击。vm4可随后再次请求ipa4以及ipa9的所有权以设定现在映射至这些ipa的实体页pa0、pa8的所需访问控制许可。因此,在pot50中包括反向地址转换映射可帮助避免上文所描述的由页表中的变化所导致的类型的攻击。尽管以上示例论述超管理器修改由虚拟机4持有的页的页表映射,但可使用类似技术防止虚拟机4修改由应用6或可信赖应用12持有的页的页表映射,在此情况下,va将储存在地址字段58而非ipa中。尽管未在图5中示出,但验证事务的方法也可包括额外步骤,该步骤验证pot项52对应于目标pa的“共享”属性是否与在s1页表项中针对对应va所指定的预期属性匹配。当页持有者设定给定页的共享属性时(其指示该页为专用、io、共享或全局,如上文所论述),此也可触发s1页表的更新以使得对应页表项指定对应属性。在一些情况下,页表项最初仅可在s1tlb中更新,且随后存储器中的s1页表80可随后在对应页表项自s1tlb中驱逐出时更新。随后,当对该页发起访问请求时,s1mmu80可输出在对应s1页表项中指定的预期共享属性(pisg类型),且bdmu60可检查预期共享属性是否与pot项52中对应于pa所指定的共享属性匹配。若存在匹配,则访问请求可经验证(经受上文所描述的其它检查)。然而,若实际共享属性不与s1页表项中所指定的预期共享属性匹配,则访问请求被拒绝。这防止如下潜在攻击。例如,给定bd可主张给定实体页的所有权且将其标记为专用以准备向该页写入敏感信息。然而,在bd开始写入敏感信息之前,另一bd可主张相同页的所有权且可将该页标记为全局。当先前持有者bd随后试图向该页写入敏感信息时,由于该页由当前持有者标记为全局,请求可被验证,且因此此可能导致敏感信息曝露于其它程序。此可通过向对应页表项写入指示该页所预期的页共享类型的信息,且在访问该页时检查此是否与pot中所记录的实际共享类别匹配来避免。在以上示例中,在s1页表中指定预期共享属性(pisg类型),但其它示例可在s2页表中对其进行指定。此外,在一些情况下,一些页可能具有s1页表中所指定的预期共享属性而其它页具有s2页表中所指定的共享属性,这取决于哪一程序设定共享属性。总而言的,bdmu60在mmu40的上提供额外一层访问许可检查,以使得事务的验证要求检查在mmu40以及bdmu60两者中通过。然而mmu40检查由处于某些优先权等级的程序设定的许可(例如el1控制s1页表且el2控制s2页表),bdmu60则强制可由以任何优先权等级执行的持有者程序施加至特定页的许可。因此,尽管超管理器2例如仍可将地址空间的特定区域分配至特定虚拟机4且防止其它vm4使用s2mmu40-2以及s2页表访问这些区域,但虚拟机4本身可通过在pot50中设定适宜的许可以控制bdmu60拒绝任何来自超管理器2的对于这些页的请求,来防止超管理器2访问在其经分配的页“池”内的一些页。此使得以下系统成为可能:其中各“盲域”可强制其安全性以使得其可针对系统内的任何其它域隐藏数据。图6示出一方法的示例,通过该方法,bd可请求其具有写入访问的物理地址空间的任何页的所有权。在请求页的所有权时,相同实体页的先前持有者可能先前已向该页写入安全数据。为防止数据在页的所有权于不同bd之间传送时泄漏,可要求新的持有者在成为该页的有效持有者之前完成重写程序150以用于在请求页的各位置中重写数据。写入各位置的特定数据值并不重要,只要重写先前数据——例如,各位置可经写入0或任何其它虚设值。通过要求新的持有者在其可有效地主张所有权之前进行破坏性主张序列以在页内重写任何现有资料,即使先前持有给定页的特定bd已不存在(例如超管理器2可能已结束执行给定vm4),仍可强制数据的安全性。在一些示例中,可在处理电路24、25、28内提供一些专用硬件以在请求页所有权时进行重写序列。然而,在下文给出的示例中,与新的持有者bd相关联的软件通过向所主张的页的各位置触发一系列写入来进行重写,但在处理电路24、25、28中执行该软件的一些控制硬件检查新的持有者bd是否已成功完成重写程序150且在此完成此操作之前防止该页在pot50中经标记为有效。所有权请求可例如对应于执行所有权主张指令的预期持有者bd,该所有权主张指令指定对应于待主张的页的地址。在步骤130,接收到所有权请求,其指定va以标识被请求所有权的页。在步骤132,mmu40确定是否对指定页准许写入访问,并且如果mmu40的阶段1或阶段2确定写入访问未经准许,则请求在步骤134被拒绝。因此,bd被阻止主张其本身不允许写入数据的页的所有权。若准许了写入访问,则va(直接或经由ipa)经转换成pa且输出pa。方法随后以重写程序150继续,该重写程序150用于在对应于目标pa的页中的各位置中重写数据。上文描述的主张计数器60系由控制硬件使用来追踪重写程序的进展并计数页迄今为止已经重写的行数。在步骤152,重写计数器60经初始化以指向页中的第一地址,例如来自页的基准地址偏移为零的地址。在步骤154,控制硬件等待请求程序bd(请求所有权的bd)以触发写入。当进行写入时,在步骤156,控制硬件检查写入的目标地址是否正确。例如,控制硬件可要求请求程序bd以固定次序迭代通过页的各行,因此可仅仅检查下一地址是否已经写入(例如写入偏移是否与增量计数器匹配)。若地址不正确,则在步骤158,所有权请求被拒绝且页在pot中标记为无效,以防止请求bd例如通过写入不在该页中的其它地址或反复写入相同地址而撤销重写程序。当所有权请求被拒绝时,若请求程序bd希望再次请求所有权,则其将不得不再次以新的所有权请求开始并正确完成重写程序150。若目标地址在步骤156为正确的,则在步骤159,控制硬件使重写计数器增量。在步骤160,控制硬件检查请求bd是否已宣告其已完成所有权主张程序。例如,请求bd可执行所有权主张结束指令以标记其已完成重写程序50。若尚未达至所有权主张末尾,则方法返回步骤154以检查页将被重写的下一行。程序对于页的各行循环通过步骤154至160多次。最终,请求程序宣告其已完成其重写程序50,且在步骤162,控制硬件检查是否已经写入整页(例如重写计数器是否与该页中的行数匹配)。若尚未经写入整页,则所有权请求在步骤158再次被拒绝且页在pot50中标记为无效。若已经写入整页,则页在步骤164标记为有效以使得请求程序bd现在成为该页的有效持有者且因此可独占性地控制对该页的访问。此外,页的pisg类型(共享属性)经写入对应pot项52。在一些情况下,最近主张的页最初可默认地经标记为专用,若新的持有者希望将页变为io、共享或全局,则需要后续改变属性(例如,在下文图8或图14所示)。或者,可能在最初的所有权请求中指定将对该页指定共享属性的何值。更新共享属性也可触发s1tlb以及/或s1页表80中的对应页表项的更新,以编码预期共享类别以使得其可在随后访问存储器时针对pot共享属性经验证。在步骤166,若请求者bd为处于el0或s-el0下的程序,则所有权请求中指定的va经写入所主张的页的pot项52的地址字段58,而若请求者bd为处于el1下的程序,则由mmu获得的ipa经写入地址字段58以锁定映射至pot中的反向pa-va或pa-ipa以防止上文所描述类型的攻击。应了解在其它实施例中,步骤166可较早进行,例如在刚接收到所有权请求时进行。类似地,请求者程序的bdid可在图6所示的方法期间的任何时间经写入pot50,只要pot项52不在步骤164之前生效。以下示出用于请求者bd执行所有权请求以及重写程序150的假码的示例:bd.page.invalidate(va1)//使广播页失效bd.page.claim.start(va1)//请求无效页line=(*64byte_ptr)va1dowhile(line<(va1+pagesize))dcz.wt(line++)//页有序清零bd.page.claim.end(va1)//使页生效图7为解释假码的流程图。例如,应用希望主张对应于虚拟地址“va1”的页的所有权。在请求所有权之前,请求者bd执行失效指令(bd.page.invalidate)以使与地址va1相关联的来自bdmu60内的任何旁看缓冲的任何pot项失效。此确保在所有权主张之后,旧的数据将不常驻在旁看缓冲中。因此,在图7的步骤190,页最初处于无效状态。请求者bd随后执行页主张开始指令(bd.page.claim.start)以发起所有权请求。此导致实体编址页pa1(通过使用mmu40转换va1获得其地址)转化为“主张”状态。请求者(调用者)bd的bdid经写入用于页pa1的pot项52的bdid字段54。当前映射至pa1的虚拟地址va1经写入地址字段58。主张计数器初始化为零。请求程序随后执行数据清零指令(dcz.wt)以开始第一重写操作。在此示例中,数据清零指令一次清零页的64个字节,但应了解其它示例可操作其它大小的数据区块。在步骤196,控制硬件检查该指令的写入偏移是否与主张计数匹配。若不匹配,则请求被拒绝且页在步骤190转化回「无效」状态,因此请求者bd若要再一次企图主张所有权则将不得不执行另一bd.page.claim.start指令。另一方面,若写入偏移与主张计数匹配,则在步骤198,对主张计数器60增量,且请求者bd在步骤194执行另一数据清零指令dcz.wt。循环步骤196、198、194直至请求者bd执行页主张结束指令(bd.page.claim.end)以发信号通知其已完成所有重写操作。在步骤198,控制硬件检查主张计数器与页中的地址的数目匹配。若选择主张计数器的位计数对应于页面大小,则当均已经写入对应页中的所有位置时,主张计数器将溢出,因此控制硬件可仅检查主张计数器的溢出字节,若其等于1,则将示出重写程序已完成。若主张计数器在步骤198尚未溢出,则页在步骤190再次转化回无效状态且请求者bd将不得不再次开始主张所有权。若主张计数器在步骤198已溢出,则在步骤200,页pa1变为有效且现在持有者可设定此页的属性。当由新的程序循环使用特定bdid时,也可进行类似的破坏性重写程序150。例如,为将给定bdid自“无效”状态转化为“准备”状态,bdid首先经转化为“清除”状态。当处于“清除”状态时,硬件可检查进行重写程序150以在给定bdid当前示出为pot50中的持有者的各页内重写各地址。硬件也可要求使与该bdid相关联的各pot项52均失效。实际重写操作可由超管理器2或要求建立新bd的其它程序在软件中执行,但硬件可检查重写程序成功完成并防止bdid在其已成功完成之前转化为「准备」状态。此防止与具有该bdid的旧程序相关联的敏感信息泄漏至共享相同bdid的新的程序。其它实施例可省略“清除”状态,但自“无效”状态至“准备”状态的转化可在重写程序已成功完成之前被禁止以将在pot50中所记录的各页中的数据重写为由对应bdid持有并使与该bdid相关联的各pot项52失效。图8示出用于给定页的持有者bd更新pot50中的属性的方法。在步骤210,发起pot更新请求,其指定标识目标页的va以及待写入该页的pot项52的一个或多个属性。在步骤212,mmu40检查是否准许对该页的写入访问,并且如果s1或s2mmu40-1、40-2发信号通知访问违规,则请求被拒绝。若准许写入访问,则(直接从va或经由ipa)获得经转换的pa。在步骤222,使用物理地址查找pot50以确定发起更新请求的当前上下文bd是否为所需页的持有者bd。若不然,则在步骤224请求被拒绝。如果当前上下文bdid为所需页的持有者,则在步骤226,针对更新请求(对于起源于el0、el1或s-el0的请求)的va/ipa检查地址字段58,以检查地址映射是否与分配pot项52时的地址映射仍然相同。若不然,则在步骤228更新请求被拒绝。若地址匹配,则在步骤230,基于更新请求中指定的属性更新对应页所有权表项的属性。例如,页的持有者可改变属性以使得专用页现在为共享或共享页为专用,或可改变对于该页是否准许读取或写入。若存在共享属性的更改,则此也可触发s1tlb或页表80中的s1页表项中所记录的预期共享属性(pisg状态)的对应更新。步骤226为可选的且另一实施例可自步骤222直接继续至步骤230,因为如上文图5所示,当随后发起存储器访问时,可在任何情况下侦测到地址映射的更改。然而,若在更新pot属性时标记地址映射的更改,则此可更早地向持有者bd标记存在潜在问题。如图9所示,bdmu60可具有页所有权表旁看缓冲(pageownershiptablelookasidebuffer;potlb)302,其用于缓存pot50的最近访问的项,以及bddt旁看缓冲(bddtlookasidebuffer;bddtlb),其用于缓存bddt42的最近访问的项。这些以类似于mmu40内的tlb300的方式操作。如图9的下部所示,系统总线30以及处理单元24、25、28可支持使potlb302或bddtlb304的项失效的失效指令。当处理单元24、25、28执行这些指令中的一个时,在总线30上向系统中的每个bdmu60广播命令以触发各bdmu60以使来自tlb302、304的项失效。指令310、312系用于使potlb302的项失效。其可在例如即将主张页的所有权或更新pot50中的属性之前使用。指令310触发bdmu60以使其来自potlb302的所有项失效。指令312触发bdmu60以仅使对应于指定页地址的potlb302的项失效(若指令指定va或ipa,则其由mmu转换为pa且实体编址失效事务经广播至bdmu60以使对应pot项失效)。类似地,指令314、316用于使bddtlb304的项失效,其中指令314触发bddtlb304的所有项的失效且指令316仅使与指定bdid相关联的项失效。在失效之后,当遭遇请求特定bdid或页之后续访问请求时,将需要自存储器34中的主bddt42或pot50抓取对应项。在一些情况下,类似的失效命令可由于由给定bd执行的其它指令自动产生。例如,当程序执行失效指令以使pot50的项失效时,此可自动导致由处理电路24、25、bdmu60或存储器控制器32内的硬件产生广播失效命令以触发bdmu60中的项的对应失效。类似地,pot项的更新或bd状态中的生命周期更新或更改可导致bdmu60中的pot或bddt项的失效。上文已论述一些具体示例。然而,本技术不限于这些精确示例。例如,以上示例以页为单位管理存储器区块的所有权,但pot50可具有对应于一些其它大小的物理地址区块(其可为页的倍数或可对应于更多任意地址区块,其不一定需要与mmu40所用的相同大小的页一致)的项。尽管以上示例示出包括一个页所有权表50的系统,但在一些情况下,同一系统中可能存在多个pot50。例如,若存在用于控制在物理存储器中不相交的不同dram的多个存储器控制器,则提供用于各存储器控制器/dram的单独的pot50可为有用的。此外,尽管以上示例示出用于控制并更新pot的命令由持有者程序发起,但在其它示例中这些命令可来自持有者程序所信赖的另一程序。例如,在一些系统中,可代表持有者域由在安全控制器28上执行的程序管理pot50。因此,当持有者程序请求待请求的页的所有权或pot50的更新时,其可向可信赖程序(例如在安全控制器28上执行的程序)发送命令,其触发可信赖程序发起所有权请求或更新请求。类似地,上文描述的重写(破坏性主张)程序可由不一定为持有者程序的可信赖程序进行。此外,尽管以上示例描述执行指令以触发所有权请求或pot更新请求,但在其它示例中,对于所有权或表更新的请求可由其它形式的命令触发。例如,命令可为指令、对用于控制pot的硬件控制器的直接i/o操作或(可信赖)函数调用。类似地,所有权主张开始以及结束命令不一定需要为指令且可为其它形式的命令。图10示意性说明客体执行环境(guestexecutionenvironment;gee)的安全初始化。客体执行环境可呈多种不同形式,例如独立应用程序、支持一个或多个应用程序的执行的操作系统,或甚至为进一步虚拟化系统。安全初始化系通过自用于客体执行环境的可执行代码源发送请求以初始化该客体执行环境来开始。初始化的请求经发送至超管理器。请求可例如为希望使用由超管理器控制的虚拟化计算器系统(基于云的计算系统)来初始化一些所要处理的用户的结果。初始化客体执行环境的请求同时(或可能在之后的时间)伴随有用于客体执行环境的执行的至少第一部分的可执行代码的加密版本。此加密可执行代码可经加密以在其以多种不同方式转移至其预期接收者期间帮助保护安全。在此示例中,加密可执行代码以公用/专用密钥对的公用密钥加密。专用密钥对由安全控制器(随后描述)持有且由其保密。超管理器接收请求以初始化客体执行环境产生新的虚拟机(virtualmachine;vm)且为物理存储器地址空间分配待由客体执行环境使用的页,且设定与客体执行环境相关联的其它参数,此在超管理器中为正常操作。超管理器随后向安全控制器转送用于初始化客体执行环境的请求、加密可执行代码、已由超管理器分配至客体执行环境的物理存储器地址空间的页的页标识符以及待由客体执行环境使用的盲域标识符。将理解,在典型系统中,超管理器将向客体执行环境分配大量的物理存储器地址空间,该客体执行环境可能在其操作中使用此经分配的地址空间中的一些或全部。在本示例性实施例中,安全控制器(以及后来的客体执行环境本身)首先破坏性主张其希望使用的物理存储器的任何页(自已由超管理器分配为可由客体执行环境使用)为由安全控制器且随后客体执行环境所持有。安全控制器接收自超管理器转送的请求并破坏性主张所有其希望向其中安装加密执行代码的页。安全控制器将正在主张并清除的程序标记为状态“清除”,此在用于所请求的程序的程序描述符项中指示(当其经主张并清除时)。程序随后在安装可执行代码时经标记为“准备”。安全控制器使用其专用密钥解密其已接收到的可执行代码。经解密的代码储存至在此阶段中由安全控制器持有的所主张的页中。随后将储存经解密可执行代码的页标记为“执行”,其指示其已关闭且准备好执行。安全控制器随后将其已主张的页的所有权传送至正在经初始化的客体执行环境。也在此时初始化相关盲域内的预设的空cpu执行上下文结构。在此示例性实施例中,安全控制器已通过应用其专用密钥以解密可执行代码而已预形成安全初始化。在其它示例性实施例中,安全初始化可另外或替代地包括通过安全控制器的可执行代码的验证以及/或安全安装证实。在此阶段中,安全控制器通知超管理器客体执行环境现在准备好“执行”。指示此为“第一次”执行的状态可以用于相关程序的cpu上下文表项单独储存。超管理器执行排程程序以进行执行。当已到达最近经初始化的客体执行环境被第一次执行的时间时,超管理器开始此执行。客体执行环境随后执行储存至实体页中的经解密可执行代码,这些实体页已由安全控制器在客体执行环境的所有权中传送。在客体执行环境中执行的代码在超管理器标记为对其可用的这些页之中破坏性主张其需要的任何其它页。应了解客体执行环境可呈现多种不同形式。在一些实施例中,客体执行环境可为支持多个客体应用程序的完整操作系统。在其它示例性实施例中,客体执行环境可为使用其自身存储器页且不具有单独操作系统或其它相关联系统的单一裸应用程序。本技术可在这些以及其它情形中使用。在超管理器控制下操作的客体执行环境提供独立程序该此分离执行的能力。此外,提供安全控制器以及页所有权表的机制以及破坏性主张页的所有权力求提供一种系统,其中客体执行环境的数据(无论呈何形式都)可受到保护免于被其它客体执行环境以及超管理器本身访问。在此示例性实施例中,安全控制器呈现独立处理器的形式。在其它示例性实施例中,安全控制器可呈现在相同处理器上执行的可信赖程序(例如以安全模式在支持armlimited的trustzone的处理器上执行的可信赖程序)或可信赖超管理器的形式,其取决于所需/所要的特定安全程度。图11为流程图,其示意性说明破坏性页主张的程序。在步骤700,处理等待直到接收到取得页的所有权的请求。当接收到此类请求时,步骤702确定正常存储器管理单元是否为与请求程序相关的页提供写入许可。此存储器管理单元可由超管理器控制。若存储器管理单元不给出写入许可,则请求被拒绝且处理返回至步骤700。若存储器管理单元给出写入许可,则处理继续至步骤704,其中初始化重写计数器。步骤706等待直到侦测到向其请求所有权的页的一行已经重写。步骤708确定这是否为预期重写的下一行。假定在此示例性实施例中,预期依次写入形成存储器的页的行。若未重写预期行,则主张所有权的请求再次失败且处理返回至步骤700。若在步骤708的确定为重写了预期下一行,则处理继续至步骤710,其中重写计数器经增量。步骤712确定是否已经重写整页,此由重写计数器达至预定值指示。若重写计数器尚未达至指示已经重写整页的值,则处理返回至步骤706,其中系统等待重写页的下一行。若已经重写整页,则步骤714将页标记为现在由页所有权表中的请求者持有。图12示意性说明用于提供本文中描述的系统的硬件环境800。在此示例中,在硬件环境800中提供多个处理器802、804、安全控制器806、实体主存储器808以及总线主控器装置,诸如经存储器映射的输入输出设备810,其全部经由互连结构812连接。应了解硬件环境800可呈现多种不同形式。本技术非常适合于例如在云计算的背景中使用,其中承租者(云客体)具有其希望执行的处理任务。承租者不具有其自身的处理硬件来进行所需任务,而是将该所需任务发送以在由云服务提供商提供的客体执行环境内执行。云服务提供商可以超管理器程序接收对于客体执行环境的请求且随后初始化客体执行环境的执行,如先前所论述。客体执行环境的执行可本身遍以及多个程序或甚至多个网站分布,其取决于所提供的云执行支持的类型。本文中描述的机制力图提供客体执行环境之间的更高安全等级,其中客体执行环境可针对该此受到保护且也可针对超管理器本身受到保护。图12的硬件执行环境800支持如本文中所描述的页所有权表。处理器802、804以及安全控制器806各具备所有权以及重写追踪硬件(overwritetrackinghardware;oth),其用以管理获得物理存储器地址空间的页的所有权的程序以及重写该页(作为主张程序的一部分),如本文中别处所描述。也至少在支持上下文切换的处理器802以及804内提供上下文切换电路(contextswitchingcircuitry;cs),其用以将上下文数据保存至主存储器808内的上下文数据存储器814,其作为上下文切换程序的一部分。上下文切换电路为异常处置电路的形式。关于各上下文形成上下文资料存储器814的区域将由相关的相关联的程序持有,该程序可从而控制该上下文数据的访问以确保其保持为专用(若需要)。图13示意性说明使用当前技术的软件层模型。此软件层模型包括多个等级的优先权,其自处于最高等级下的安全控制器向下延伸至超管理器以及客体执行环境,其可本身包括客体操作系统以及客体应用程序。在比超管理器的优先权等级低的优先权等级下初始化新的客体执行环境。在一个示例性实施例中,优先权等级可自对应于客体应用程序的最低等级延伸。下一较高等级将为客体操作系统,随后为超管理器且随后为由安全控制器执行的监视器程序或韧体。最高优先权等级可与管理系统中所用的密码密钥的访问、其分布以及验证的安全复合体相关联。应了解可采用其它优先权等级模型。本技术的特征为页所有权机制准许系统操作以使得客体执行环境控制其持有的页的访问,而例如具有较高优先权等级的超管理器可经客体执行环境阻止访问这些页。此与正常预期相反,在正常预期中较高优先权等级给予更多访问权以及对访问权的控制。图12中说明的所有权以及重写追踪电路可用以根据由该页的持有程控的访问配置来强制物理存储器地址空间内的存储器区域的所有权。持有程序(如页所有权表中所指示)可将页所有权标记为持有程序专用,或在持有程序与存储器访问请求的一个或多个其它源之间共享。页将通常在其破坏性主张之后经初始化为专用状态。由持有程序共享的访问可呈现多种不同形式,如图14中说明。用于页的持有程序可将该页的所有权传送至由持有程序(“母”程序)初始化的“子”程序。当此类母程序已初始化子程序且子程序仍处于“准备”状态时,其可将母程序持有的页的一个或多个的所有权传送至子程序。子程序将最初接收经标记为该子程序专用的这些页。若希望,则子程序可随后为其持有的页中的任一个改变共享访问控制状态以指示其与母程序共享的共享状态。当子程序自其母程序接收新的页时,其破坏性主张向其分配这些新的页。共享也可系与上代程序,诸如祖程序或上代阶层中的任何旧的程序。当程序访问页时,在一些示例性实施例中,其可检查用于该页的该共享访问控制数据与程序所预期相同。例如,若程序持有页且已将其设定为共享访问控制为“专用”,则其可在其向该页储存任何敏感数据之前检查该页在页所有权表内仍以此方式经配置。可由持有程序选定的共享的另一形式为与经存储器映射的装置共享页,其中相关存储器映射装置经映射至存储器的由改变访问控制的程序持有的页中。因此,可给予由程序持有的存储器地址空间内的经存储器映射装置访问由该相同程序持有的存储器的该特定页或另一页的权利。可由持有程序指定的共享访问的另一形式为全局共享状态,其中准许物理地址存储器的页由任何其它程序访问且不再由任何个别程序持有(在一些示例性实施例中,可提供唯一的bdid以与全部全局页相关联)。持有程序可确保该持有程序的敏感数据不被写入至该全局共享页中。图15示意性说明充当所有权电路的所有权以及重写追踪硬件如何用以处理自程序接收到的用于改变共享许可的请求。在步骤900,处理等待直到接收到改变共享许可的请求。当接收到此类请求时,步骤902确定是否已自在页所有权表中经指示为持有相关页的程序接收到改变访问许可的请求。若已从持有程序接收到请求,则步骤904操作访问许可的所请求的更改(例如采用图14中指示的访问控制状态选项中的一个)且随后处理返回至步骤900。若步骤902处的确定为请求系来自不持有相关页的程序,则步骤906用以忽略所请求的更改且视需要发起警告,即接收到不正确以及/或不合适的改变请求,随后处理再次返回至步骤900。结合图10所提及,超管理器可用以对不同执行环境的执行进行排程。这些不同执行环境分别持有物理存储器地址空间的其持有页。当超管理器停止处理一个客体执行环境且开始处理不同的客体执行环境时,则此为执行上下文的切换且其程序的切换将为活动的。此上下文切换可通过受保护的异常处置来进行。在上下文更改发生时,处理器或更宽范围的系统的状态数据可包括多个状态参数,例如缓存器上下文、配置变量、程序状态值等。此状态数据为上下文数据且可表示专用信息,其理想地不允许对其它客体执行环境或超管理器本身可用。图16a以及图16b为流程图,其说明如何保护执行上下文。在步骤1000,处理等待直到接收到上下文切换中断,诸如至不同程序的非自主出口。状态1002将重新启动数据保存至由经受中断的程序(客体执行环境)持有的上下文数据存储器814的部分。在一些示例性实施例中,此重新启动数据可为足以重新启动中断程序的状态数据,但不需要包括所有依赖中断程序的状态数据。例如,重新启动数据可包括通用缓存器内容,但不需要包括微架构状态,诸如缓存内容、转换旁看缓冲内容以及其类似物。在步骤1002将重新启动数据保存至由经中断的程序持有的上下文数据存储器814的部分中之后,步骤1004用以破坏性重写依赖当前程序的状态数据且其将在切换至另一程序之后可由任何其它程序访问。经重写的数据可为重新启动数据的超集。经重写的数据也可排除微架构数据以及不可由最近开始的程序访问的其它数据,例如由经中断的程序持有的存储器区域内的数据,但其由于页所有权表以及其它机制的操作而不可由新开始的程序访问。重写可例如将依赖当前程序的所有可访问状态设定为零值或不依赖实际上由经中断的程序进行的处理的一些其它预定值。系统随后返回至步骤1000以等候下一上下文切换中断。在自程序自主退出的情况下,例如至较高例外等级的程序调用,缓存器内容的子集,例如r0至r7,可经传递至调用目标,缓存器/状态在退出并重新进入时经储存并恢复。如图16b所示,系统在步骤1005等待直到有新程序待开始。步骤1006用以确定待开始的新程序是否为cpu上下文数据中的相关联状态为“准备好”的程序。若程序不处于准备好的状态,则此指示其已经排程用于执行且已经执行至少一次,且因此将具有其持有上下文数据,该数据将应在其执行重新开始之前恢复。若待开始的程序不处于“准备好”的状态,则步骤1008用以自上下文数据存储器814内的其持有的存储器页恢复其重新启动数据。若待开始的程序处于“准备好”的状态,例如处于“准备好首次执行”状态,则绕过步骤1008。最后,在步骤1010,新程序的执行在程序返回至步骤1005以等候另一新程序之前开始。图17指示程序描述符项,其可为程序描述符表内的多个程序描述符项中的一个。程序描述符项包括例如盲域标识符(blinddomainidentifier;bdid)。页描述符项也包括至上下文数据存储器814内的位置的指针(手柄),当相关程序经切换出时,相关程序的上下文数据将保存至该位置(且该上下文数据自其恢复)。此指针指示由相关程序持有的存储器的区域。页描述符项也包括当前程序状态,如将在下文中进一步论述。图18示意性说明程序的示例性程序状态。已停止使用的程序经标记为无效且其bdid将可由新程序回收。超管理器可对创建程序以及设定程序描述符项负责。该程序的初始化可结合如先前描述的安全控制器进行。可由程序采用的序列中的下一状态为“清除”状态。此指示已经主张相关程序bdid且由程序主张所有权的相关联的页正在经历清除,例如移除供相关bdid先前使用的页所有权表中的现有项且随后主张以及清除(经受破坏性重写)bdid的新的页。当清除已完成时,相关程序转化至“准备”状态,此指示相关程序打开且其页准备好填充。当页的填充已完成时,程序变为“执行”状态,其关闭且准备好执行。当程序的执行开始时,准备好第一次执行状态储存在域内的cpu执行上下文的状态区位中且用于控制重新启动数据是否恢复。图18说明程序的“生命周期”,其包括多个程序状态,程序在其执行准备之后依次通过这些程序状态。这些状态的数目以及具体形式可变化。至少一些示例性实施例包括盲域执行上下文(或框架)bdec,其可用于在将程序切换为执行以及结束执行时储存该程序的状态数据。此状态数据内包括相关程序是否已经历一些执行的指示。若程序尚未经执行,则其在此示例中标记为“新的”(参见先前论述的“准备好”的状态)。在退出程序时,执行上下文数据也可包括状态数据,诸如通用缓存器上下文。这些缓存器内容可在重新进入程序时被恢复。存在状态参数,其进一步指定程序经自主(例如在软件函数调用之后)或不自主(例如在硬件中断之后)退出;此信息可用于控制如何重新开始程序并退出预形成为程序的操作。可储存上下文数据以为相关程序专用。各bdec可含有状态指示,诸如新的、自主退出、非自主退出、自主完成、非自主完成以及无效。bdec也可包括持有域的例外等级的指示、用于域的通用缓存器的内容(例如r0至r30、pc、p-状态等)以及用于域的例外等级缓存器的内容(例如ttbr_elx等)。大体上,可提供包括一个或多个项的所有权表,这些一个或多个项各为物理地址的对应区块指示多个程序中的哪一者为独占性控制物理地址的对应区块的访问的持有者程序。此可用于允许多个程序中的任一个独占性控制物理地址空间的给定区域以便限制其它程序对该区域的访问。此为尤其有用的,因为其可允许处于较低优先权等级的程序或限制优先权较高程序对数据的访问,其在典型系统中为不可能的。大体上,可存在一些用于请求程序请求物理地址的目标区块的所有权的装置。物理地址的目标区块可直接在请求中或间接地通过指定虚拟地址或中间地址或以一些其它方式标识。例如,所有权请求可为专用所有权请求指令(诸如上文论述的主张开始指令)或另一种具有指示对给定页请求所有权的参数的指令,或请求可对应于另一种所有权请求命令(不一定为指令),例如通过设定一些触发一些其它程序初始化所有权请求的控制信息。响应于所有权请求,处理电路可更新所有权表以指示请求程序现在为目标页的持有者。因此,请求程序可例如通过在将敏感数据写入存储器之前请求对应地址区块的所有权来保护敏感数据。当给定地址区块的所有权自一个程序变为另一程序时,多种技术可用于防止敏感信息自旧的持有者泄漏至新的持有者。如在上文示例中论述,一种方法为在请求所有权的程序可有效成为该区块的持有者程序之前请求成功完成重写程序以重写目标区块中的各地址。此可通过实际上执行重写程序的硬件或以请求程序本身或进行重写程序但硬件检查其是否已成功完成的另一可信赖程序来强制。硬件检查重写程序是否已成功完成的一种方法可为检查以及确保在所有权主张开始命令与所有权主张结束命令之间执行的一个或多个写入操作中经重写的物理地址包括目标区块的每一物理地址。若在所有权主张开始与结束命令之间进行的写入不连续地覆盖整个地址区块,则重写程序可能失败且请求者无法有效地变成持有者。例如,这些检查可使用如上文论述的追踪完成写入数目以及其地址偏移的主张计数值来进行。应了解可存在其它技术用于确定重写程序已成功重写目标区块的各物理地址处的数据。一些实施例可提供加密电路以加密写入存储器的数据并解密自存储器读取的数据。各程序可具有一个或多个相关联的密钥且写入特定地址区块的数据可使用与该区块的持有者相关联的密钥加密,且在自存储器读回数据时解密。在包括加密的系统中,重写过程可能不必要,因为即使在将地址区块传送至另一持有者之后与一个程序相关联的数据保留在存储器中,新的持有者仍不能够读取数据,因为其系使用旧持有者的密钥加密。然而,出于增加安全性的原因,即使存在加密功能,但当传送区块的所有权时,较佳也要求对该地址区块执行重写程序。将加密与重写程序组合也具有以下益处,当传送区块的所有权时,持有者程序可改变其持有的每个地址区块所需的加密等级而不遭受数据损失的风险。例如,不同加密模式可包括不同的加密等级或强度。大体上,可提供所有权保护电路以在所有权表的对应项指示当前程序未经持有者程序准许访问地址时拒绝来自当前程序的在该目标物理地址访问数据的请求。例如,所有权保护电路可包括上文描述的bdmu,或可替代地为在存储器控制器内提供的一些电路。通过拒绝不满足持有者的许可的要求,持有者程序可独占性控制对所持有的地址区块的访问。除了所有权保护电路,也可存在访问控制电路,其强制由特定程序,诸如超管理器、虚拟机或操作系统设定的访问许可。例如,访问控制电路可对应于如上文论述的mmu。鉴于访问控制电路强制由处于特定优先权等级的特定程序设定的许可(例如,以允许超管理器在不同虚拟机之间分割地址空间),所有权保护电路可通过请求需要其的这些许可的页的所有权来允许任何程序强制对其它程序的许可,而不论其优先权等级为何。该技术可尤其对支持两个或更多个超管理器、一个或多个虚拟机、一个或多个客体操作系统以及一个或多个应用程序的系统有用。然而,更大体而言,该技术可应用于任何系统,其中多个程序共存且一个程序可防止另一程序访问数据。如上文论述,pot50可包括地址字段58,其有效表示自与pot项52相关联的pa至va或ipa的“反向转换映射”,自该映射在特定参考时间点转换pa。然而,类似技术也可更大体地应用至任何通过物理地址索引的表,该表至少一个项可标识第一地址,对应物理地址自该第一地址由地址转换电路转换。通过保存自物理地址至自其转换了物理地址的第一地址的反向映射的快照,有可能随后检查映射是否仍然相同,此可用于侦测地址映射中之后续更改,其可影响表的内容的有效性。大体上,处理电路可响应于参考事件的发生以在对应于给定物理地址的表的项中记录当前由地址转换电路转换为给定物理地址的第一地址。参考事件可例如为将新的项分配至用于给定物理地址的表中、更新用于给定物理地址的表的现有项中的信息、执行预定类型的指令(例如指定给定第一地址的指令)或预定更改数据处理设备的操作模式(例如更改为安全模式)。因此,表中记录的第一地址可表示在参考事件的时存在的在第一地址与对应物理地址之间的映射。随后,当接收到指定将由地址转换电路转换为目标物理地址的目标物理地址的访问请求时,控制电路可确定在目标第一地址与由对应于目标物理地址的表的项所指定的第一地址之间是否存在不匹配。例如,此有效地确定地址映射是否仍然与导致了第一地址储存至表的参考事件的时相同。若在这些地址之间存在不匹配,则请求可被拒绝或可发信号通知错误。在一些情况下,可仅出于追踪过去地址映射以及侦测其在随后时间是否仍然相同的目的提供实体索引表,因此实体索引表不一定需要含有除第一地址本身的外的任何信息。尽管本技术可用于任何实体索引表,但其尤其对上文论述的形式的所有权表有用,该所有权表指示对应物理地址区块的持有者且其中持有者独占性控制这些地址的访问。记录表中的反向实体至第一地址映射可帮助防止上文论述类型的攻击,其中地址映射的更改可导致敏感信息丢失。在一些情况下,第一地址可为虚拟地址。在其它情况下,第一地址可为中间物理地址。此外,一个表可能具有一些第一地址为虚拟地址的项,以及第一地址为中间地址的其它项。在本申请中,词语“被配置为……”用于意味着设备的部件具有能够进行所定义操作的配置。在此上下文中,“配置”意味着硬件或软件的互连配置或方式。例如,设备可具有提供所定义操作的专用硬件,或处理器或其它处理装置可经程序化以执行功能。“被配置为”不暗示设备部件需要以任何方式改变以便提供所定义的操作。尽管本文中关于随附图详细描述本发明的说明性实施例,但应理解本发明不限于这些精确实施例,且熟习此项技术者可在不脱离如由随附申请专利范围所定义的本发明的范围以及精神的情况下在其中产生各种更改以及修改。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1