处理方法、系统、电子系统和存储介质与流程

未命名 08-29 阅读:79 评论:0


1.本公开涉及集成电路领域,且更具体地,涉及处理方法、系统、电子系统和存储介质。


背景技术:

2.可信计算联盟(confidential computing consortium,ccc)定义了可信执行环境(trusted execution environment,tee),用于构建使用中数据(data in use)安全执行环境,确保数据在使用阶段的机密性、完整性与可使用性。业界有多种ccc的解决方案,比如intel sgx、arm trust-zone等。


技术实现要素:

3.本公开的至少一实施例提供了一种处理方法,包括:在系统中提供第一执行域,其中,第一执行域运行在第一模式,并且作为安全监视器的运行环境,第一模式在非扩展的情形是机器模式;以及在系统中创建至少一个第二执行域,其中,每个第二执行域基于第一执行域运行并且运行在对应设置的第二模式,其中第二模式的权限低于机器模式的权限。
4.本公开的至少一实施例提供了一种系统,包括:第一执行域,其中,第一执行域运行在第一模式,并且作为安全监视器的运行环境,第一模式在非扩展的情形是机器模式;以及至少一个第二执行域,其中,每个第二执行域基于第一执行域运行并且运行在对应设置的第二模式,其中第二模式的权限低于机器模式的权限。
5.本公开的至少一实施例提供了一种电子装置,包括:处理器;存储器,包括一个或多个计算机程序模块;其中,一个或多个计算机程序模块被存储在存储器中并被配置为由处理器执行以实施如上所述的处理方法。
6.本公开的至少一实施例提供了一种非瞬时可读存储介质,其上存储有计算机可执行指令,其中,计算机可执行指令在被处理器执行时,以实施如上所述的处理方法。
附图说明
7.为了更清楚地说明本公开的实施例的技术方案,下面将对本公开的实施例的附图作简单地介绍。明显地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
8.图1示出了示出了示例性的隔离方式与上下文切换的示意图;
9.图2示出了根据本公开的至少一实施例的处理器级别的系统架构的示意图;
10.图3示出了根据本公开的至少一实施例的执行域切换的示意图;
11.图4示出了根据本公开的至少一实施例的控制状态寄存器设置的数据对象示意图;
12.图5示出了根据本公开的至少一实施例的中断隔离的示意图;
13.图6示出了根据本公开的至少一实施例的数据高速缓存隔离的示意图;
14.图7a示出了根据本公开的至少一实施例的处理方法的流程图;
15.图7b示出了根据本公开的至少一实施例的系统的示意图;
16.图8a示出了根据本公开的至少一实施例的中断处理的方法的流程图;
17.图8b示出了根据本公开的至少一实施例的中断控制器的示意图;
18.图9a示出了根据本公开的至少一实施例的操作高速缓存的方法的流程图;
19.图9b示出了根据本公开的至少一实施例的高速缓存控制器的示意图;
20.图10a示出了根据本公开的至少一实施例的操作翻译后备缓冲器的方法的流程图;
21.图10b示出了根据本公开的至少一实施例的翻译后备缓冲器控制器的示意图;
22.图11示出了根据本公开的至少一实施例的电子装置的示意图;
23.图12示出了根据本公开的至少一实施例的非瞬时可读存储介质的示意图。
具体实施方式
24.现在将详细参考本公开的具体实施例,在附图中例示了本公开的示例。尽管将结合具体实施例描述本公开,但将理解,不是想要将本公开限于描述的实施例。相反,想要覆盖由所附权利要求限定的在本公开的精神和范围内包括的变更、修改和等价物。应注意,本文描述的方法操作都可以由任何功能块或功能布置来实现,且任何功能块或功能布置可被实现为物理实体或逻辑实体、或者两者的组合。
25.为了使本领域技术人员更好地理解本公开,下面结合附图和具体实施方式对本公开作进一步详细说明。
26.注意,接下来要介绍的示例仅是具体的示例,而不作为限制本公开的实施例必须为示出和描述的具体的外形、硬件、连接关系、操作、数值、条件、数据、顺序等等。本领域技术人员可以通过阅读本说明书来运用本公开的构思来构造本说明书中未提到的更多实施例。
27.本公开中使用的术语是考虑到关于本公开的功能而在本领域中当前广泛使用的那些通用术语,但是这些术语可以根据本领域普通技术人员的意图、先例或本领域新技术而变化。此外,特定术语可以由申请人选择,并且在这种情况下,其详细含义将在本公开的详细描述中描述。因此,说明书中使用的术语不应理解为简单的名称,而是基于术语的含义和本公开的总体描述。
28.本公开中使用了流程图来说明根据本技术的实施例的系统所执行的操作。应当理解的是,前面或下面操作不一定按照顺序来精确地执行。相反,根据需要,可以按照倒序或同时处理各种步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
29.处理器核(或cpu核)是可以独立完成中央处理器(cpu)操作步骤的核心(core)。例如,中央处理器(cpu)可能包含一个或多个cpu核,根据所包括的cpu核的多少,cpu可以为单核处理器(cpu)或多核处理器(cpu)。cpu中可以包括一级或多级缓存,例如cpu核通常包括一级缓存,而二级缓存、三级缓存则设置在cpu核之外。
30.另外,为描述方便,例如在示例性的risc-v架构中,本文描述的core、hart、cpu/cpu核或者处理器/处理器核可以在语义上不作区分并且可以指示相同的对象。但是可以理
解的,虽然在各种架构中,上述术语可能指示不同的对象,但是本公开的各方面可以在经过或不经过修改的情况下适用于这些架构中,而不超出本公开的保护范围。
31.处理器通过流水线技术提高指令执行效率,处理器中的流水线例如包括分支预测、取指、译码、寄存器重命名、发射、执行、退休等。为了进一步提高指令执行效率,处理器还可以提供多个并行流水线(多个硬件线程),这些并行流水线可以共享部分组件(例如缓存队列等)。
32.操作系统给一个进程分配内存时,需要把使用到的虚拟地址映射到物理地址(即地址翻译),物理地址才是真正的物理内存访问地址。地址翻译是一个非常耗时的过程。为了节省地址翻译时间,提升计算机系统性能,提供翻译后备缓冲器(translation lookaside buffer,tlb)来存放之前使用过的第一级页表的页表项pte。例如,当需要从内存中读取一条指令或一项数据时,则需要将该读取指令中所采用的虚拟地址翻译为物理地址,即产生了地址翻译的请求,这时首先使用需要被翻译的虚拟地址查询tlb,如果命中tlb则可以立即获得相应的物理地址,否则再逐级查询页表以获得相应的物理地址。
33.目前,在计算机系统中,物理内存保护/增强型物理内存保护(pmp/epmp)是一种硬件级别的内存保护机制,用于隔离物理内存区间。例如基于risc-v架构等的处理器芯片可以支持pmp/epmp。有多种基于pmp的enclave(飞地)方案来实现tee,比如berkeley keystone、hex-five multi-zone等。
34.然而,基于pmp的方案无法提供更丰富的运行级别灵活的执行域;细粒度的硬件级别内存保护,无法解决多个飞地之间上下文切换/中断、高速缓存(cache)/翻译后备缓冲器(tlb)等的隔离问题。
35.图1示出了示例性的隔离方式与上下文切换的示意图。
36.可信计算安全解决方案的重点是隔离机制与上下文切换。逻辑上根据特权模式(privilege mode)可以有多种隔离方式。例如,由较高特权模式(higher privilege mode)提供较低特权模式(lower privilege mode)的隔离和上下文切换机制。
37.例如,参见图1(其中隔离通过虚线进行标识),操作系统的内核(例如linux内核,简称kernel)运作在超级模式(supervisor mode),提供运行在用户模式(user mode)下的进程(process)间的隔离和上下文切换机制;虚拟机管理器(例如vmm)运行在高超级模式(hs mode),并且提供虚拟机(例如访客操作系统)间的隔离和上下文切换机制;安全监视器(security monitor)运行在机器模式(machine mode),并且提供执行域(下文简称为域或domain)间的隔离和上下文切换机制。另外,也可以在硬件级别(例如硬件原语)提供隔离和上下文切换机制。硬件级别可以包括risc-v核(例如risc-vcore)、pmp/epmp、安全监视器扩展(security monitor extension)以及硬件支持的切换扩展(hardware-backed switching extension)等。
38.这些隔离方式在可信计算基(trusted computing base,tcb)方面有安全上的区别:tcb的复杂程度决定了安全等级,其中越复杂的tcb安全等级越低;同时tcb可以读取上下文的所有数据会导致业务数据泄露。
39.同时,各种隔离方式在提供给业务的特权模式上也有比较大的区别。例如,以寄存器组块的方式提供给业务可运行的特权模式可以包括从用户模式到机器模式,而linux内核的隔离方式只能提供业务用户模式的运行级别。因此,在一些方面,如何为业务提供更丰
富的运行级别是构建灵活安全的业务系统的关键。
40.本公开的发明人意识到,在上述实施例中,处理器架构例如不能满足可信计算需求,不能真正落地到产品;tcb的复杂度太高会带来更多安全隐患;以及业务系统需要丰富的特权模式以满足业务需求。
41.本发明的至少一实施例提供一种处理器级别的系统架构(隔离模型),例如涉及以下中的一个或多个:提供更丰富的运行级别灵活的执行域;细粒度的硬件级别内存保护,例如解决多个飞地之间上下文切换/中断、高速缓存/翻译后备缓冲器等的隔离问题。以此,本公开的至少一实施例提供的处理器级别的系统架构(隔离模型),例如可以支持多个执行域,以满足可信计算安全需求;简化和优化上下文切换,降低上下文切换带来的性能开销;以及在机器模式提供安全监视器实现,提供超级模式和用户模式以支持安全业务模型等。
42.下面描述本公开的示例性架构或模型,可以理解的是,这些描述仅是示例性的,而没有穷尽列举示例性架构或模型的各个方面,并且这些描述的各方面与其他实施例描述的各方面可以相互引用,而不超出本公开的范围。
43.下面介绍示例性的隔离模型。
44.图2示出了根据本公开的至少一实施例的处理器级别的系统架构的示意图。在该系统架构中,可以实现执行域的隔离,因此,参见图2及相关实施例描述的系统架构也被称为隔离模型。
45.参见图2,运行指令集的处理器核(core)或多线程处理器核中的硬件线程(hart)(以下二者可以混用)在逻辑上划分为多个执行域,例如包括执行域0、执行域x、执行域y和执行域z。例如,执行域0作为安全监视器的运行环境,同时可以根据业务需要扩展到例如超级模式,作为特殊的安全执行域。执行域0中还可以运行特权功能(privileged function)和执行域上下文管理器(domain context manager)。执行域x、执行域y和执行域z的切换和中断操作等由执行域0控制,执行域x、执行域y和执行域z例如可以分别提供高超级模式、超级模式以及用户模式等。
46.进程和任务可以分别运行在执行域的用户模式。例如,进程pa、pb和pc可以运行在执行域x的用户模式,任务a、任务b可以运行在执行域y的用户模式。
47.内核、ree/tee操作系统、可信服务可以运行在任意执行域的超级模式。如图2所示,系统内核可以运行在执行域x的超级模式,实时操作系统(rtos)可以运行在执行域y的超级模式,可信服务可以运行在执行域z的超级模式。
48.如图2所示,除执行域0以外,执行域x、执行域y和执行域z在安全等级上可以没有特殊的区分,业务可以根据所运行的操作系统做ree/tee或者其他语义上的区分。在cpu集群(cluster)内部多核环境,每个hart可以根据业务或者中断自主做上下文切换。
49.软件系统架构可以根据业务需求灵活设计,支持同时部署例如linux/android、rtos、bare-metal等多个软件操作系统。执行域之间的隔离可以使用例如pmp/epmp实现。在执行域切换时,保存当前运行执行域的上下文,恢复即将运行的执行域的上下文。
50.执行域0、执行域x、执行域y和执行域z基于处理器核(例如核0、核1、核2、核3)进行控制和操作。例如,处理器核可以对执行域进行切换和中断操作等。例如,中断控制器可以包括核本地中断控制器(aclint)、平台级中断控制器(plic)等,其中aclint可以向处理器核发起中断请求。plic可以接收来自处理器外部设备的中断请求,并将这些请求分发给处
理器核进行处理。
51.执行域x、执行域y和执行域z可以同时使用例如stimer机制进行调度。在多核系统下,安全监视器可以根据mtimer中断做多核间调度执行域x、执行域y和执行域z。这将在下面结合图3详细描述。
52.图3示出了根据本公开的至少一实施例的执行域切换的示意图。
53.在图3所示的示例中,执行域x为正在执行的执行域或当前运行执行域并且被标识为当前运行的执行域,执行域y和执行域z为非当前运行执行域。
54.执行域x、执行域y和执行域z的切换包括多种触发情况,例如ecall、mtimer中断、mswi/mei、mexg、wfi等,其详细介绍如下。
55.ecall:从低特权模式陷入(trap)到机器模式,安全监视器根据当前寄存器数据切换到对应的服务。
56.mtimer中断:安全监视器可以实现多种调度机制,例如时间片公平调度,抢占调度等方式。根据mtimer中断判断是否做执行域上下文切换。如果仅有执行域x使用mtimer做执行域内(intra-domain)调度,可以使用委托(delegate)方式直接让执行域x处理timer中断。
57.mswi/mei:安全监视器处理完中断后,根据调度机制确定切换到执行域x、执行域y和执行域z。
58.mexg:aclint和plic根据超级模式下中断未决(pending)状态确定是否触发mexg,安全监视器在处理mexg时根据aclint和plic寄存器确定切换到对应的执行域。例如,mexg优先级最低,待所有aclint/plic未决中断处理完之后自动清除。关于mexg的附加方面将在下文详细描述。
59.wfi:执行域运行在超级模式使用wfi时,触发非法指令异常,参考risc-v privileged spec 3.3.3,sme使能后mstatus.tw强制设置为1,不可修改。安全监视器根据当前执行域x、执行域y和执行域z需求判断是否进行调度或者进入wfi状态。执行域0机器模式下的wfi沿用risc-v标准定义。
60.需要说明的是,sswi/sei不会直接触发执行域x、执行域y和执行域z切换,如果sswi/sei中断发生在当前运行执行域(例如,执行域x),则直接在超级模式下进行处理。如果sswi/sei中断发生在非当前运行执行域(例如,执行域y和执行域z),则根据mexg中断进行调度后处理。完成上下文保存和恢复后,使用mret指令切换到目标执行域。关于mexg中断的示例性附加方面将在下文中断隔离部分详细描述。
61.下面介绍示例性的mdid csr定义。
62.mdid是机器模式下的控制状态寄存器(csr),包括mdid.did和mdid.ns,分别用于配置执行域标识符(执行域id或did)和/或非安全标识信息(ns),长度为xlen比特,这里的xlen可以指控制状态寄存器或由控制状态寄存器设置的数据对象的位数或长度。
63.需要说明的是,贯穿本公开的各个实施例,mdid(例如可以对应于上下文的执行域状态信息,并且可以包括did和ns信息)通常情况下与当前执行域相关联,并且在进行执行域的上下文切换时与目标执行域相关联。
64.图4示出了根据本公开的至少一实施例的控制状态寄存器设置的数据对象示意图。参见图4,该数据对象长度为xlen比特,其中,mdid.did例如是4比特的写任意读合法
(warl)字段,用来标识hart执行mret指令之后运行的执行域。
65.这里,mret指令是机器指令,用于从机器模式返回到先前的特权模式,只能在特权级别为机器模式时使用。mret指令的作用是将机器模式下的程序计数器(pc)和特权级别(mpp)还原为之前保存的值,并将当前特权级别设置为之前保存的特权级别。
66.参见图4,mdid.ns例如是1比特写任意读合法(warl)字段,用来标识hart当前的状态是非安全(non-secure)还是安全(secure)。例如,当ns字段为0时,指示为安全状态,当ns字段为1时,指示为非安全状态。在一些实施例中,ns字段的复位值或初始值为0。
67.这里的mdid.did和mdid.ns的字节的长度仅是示例性,本公开的实施例不以此为限。
68.另外,参见图4,mdid还可以包括长度为xlen-5比特的写保留读忽略(wpri)字段,例如用于保存与业务相关联的其他信息。
69.在机器模式下设置mdid可以立刻引起中断控制器(例如plic/aclint)状态更新,但是不会引起系统访存单元(lsu)和取指单元(ifu)事务did/ns发生变化。例如,仅当执行mret指令后该设置才会生效。机器模式下中断和ecall不会引起mdid值发生变化,所以中断控制器不会发生状态更新,但是访存单元(lsu)和取指单元(ifu)事务did/ns会根据当前的机器模式切换到执行域0状态。
70.基于执行域标识符和/或非安全标识信息,可以进行下面示例性描述的中断隔离、高速缓存隔离以及翻译后备缓冲器隔离等。
71.下面介绍示例性的中断隔离。
72.诸如risc-v的中断控制器(aclint/plic)标准定义中断控制器触发sswi/mswi/stimer/mtimer/sei/mei给每个hart。在此基础上,需要对aclint和plic进行扩展以支持执行域和特权模式状态,另外,可以同时增加mexg中断信号用于触发执行域上下文切换。hart被mexg中断信号中断后由软件根据业务需要分别查询aclint和plic mexgx寄存器,获取需要切换到的目标执行域的执行域标识符。
73.图5示出了根据本公开的至少一实施例的中断隔离的示意图。
74.如图5所示,cpu核(例如core 0、core 1、core m、core n等)需要把当前hart的特权模式(privilege mode)和执行域标识符(执行域id)信息送往中断控制器aclint和plic,并根据ecall/xret(例如sret/mret)和执行域id的变化实时更新。例如,机器模式对aclint和plic有完全的读写权限。
75.例如,aclint和plic只触发机器模式和当前运行执行域(例如,执行域x)的中断,根据基于中断信号的中断的设置状态来分别在安全监视器和操作系统内核(例如linux内核)里进行处理。例如,非当前运行执行域(例如,执行域y和执行域z)的超级模式中断会被aclint和plic抑制,转换为mexg中断要求安全监视器进行执行域切换,在对应的执行域切换到运行状态时,当前运行执行域的超级模式中断才会被触发。
76.例如,中断控制器(例如plic)可以从外部接收中断请求信号,通过比较中断请求信号对应的执行域与当前的执行域id是否一致。如果一致,可以生成与中断请求信号相对应的信号或者直接透传中断请求信号,使得中断控制器进行中断操作;如果不一致,可以生成mexg中断信号,并且使得中断控制器基于mexg中断信号进行执行域切换,在执行域切换之后(此时当前的执行域id将变得与中断请求信号对应的执行域一致),再生成与中断请求
信号相对应的信号或者透传中断请求信号。
77.下面介绍示例性的高速缓存隔离。
78.诸如risc-v的处理器核通常支持多级高速缓存,诸如一级指令高速缓存(i-cache)/一级数据高速缓存(d-cache)/二级缓存(l2cache)/最后一级缓存(llc)等。高速缓存隔离可以增加对i-cache/d-cache/l2cache/llc等的did/ns支持,例如在做清除(flush)和逐出(evict)时在总线上使能did/ns信号,例如使得存入高速缓存的数据或从高速缓存读取的数据带有相应的did/ns信息。
79.例如,did扩展要求pmp区域允许的最小粒度保持和缓存行(cache line)的长度一致,因此可以一个缓存行对应一个did/ns。当然,本公开不以此为限,例如,did扩展要求pmp区域允许的最小粒度保持和采用组相联映射方式的缓存中的缓存组(cache set)或缓存区域的长度一致,因此可以多个缓存行对应一个did/ns。
80.在did扩展要求pmp区域允许的最小粒度保持和缓存行的长度一致的情况下,高速缓存的每条缓存行可以增加额外的空间用来记录did/ns字段来扩展高速缓存。
81.图6示出了根据本公开的至少一实施例的数据高速缓存(d-cache)隔离的示意图。在图6中,以数据高速缓存为例进行描述,并且针对其他级的高速缓存可以通过相同或相似的方式来实现。
82.参见图6,数据高速缓存的每个缓存行除了通常的数据存储部分、标签(tag)字段、有效位(未示出)之外通过额外的空间来记录did字段和ns字段,以将所存储的数据与did和ns字段相关联。如此,参见图6,每个缓存行可以包括did和ns字段、标签(tag)以及相应的数据(data)。当然,本公开的实施例不限于此。例如,在仅需要考虑安全访问和非安全访问的情况下,可以通过额外的空间来记录ns字段。又例如,在仅需要执行域的情况下,可以通过额外的空间来记录did字段。
83.参见图6,可以基于did信息(did/ns)来操作高速缓存。
84.例如,当填充缓存行向总线发出加载(load)请求时,例如cpu核和/或高速缓存可以往外部总线送出did和ns信号。cpu核当有加载或者存储(store)请求发出时,did和ns可以与请求的标签、索引等其它信号一起送往高速缓存。信号中附带的did和ns字段不用于缓存行的匹配,匹配规则仍旧按照原有的方式进行,例如,通过物理地址(pa)中的标签和索引进行匹配并且通过物理地址中的偏移(offset)查找到缓存行汇总相应的地址以进行读写操作。
85.例如,当数据高速缓存未命中(miss)而需要将数据从数据源(例如内存)读入高速数据缓存中而进行填充时,将信号带出的did和ns字段写入需要填充的缓存行中。当数据高速缓存命中(hit)时,不更新缓存行的did和ns字段。如果对应的地址在运行时有did变化,软件可以做主动的清理(clean)和无效(invalid)操作,重新按照新的did来填充缓存行。
86.当数据高速缓存由于cmo指令或者逐出执行清除操作时,将缓存行所带的did和ns字段一起送至外部总线中。
87.下面介绍示例性的翻译后备缓冲器隔离。
88.risc-v特权规范(risc-v privilege spec)定义了监管者地址转换和保护寄存器(satp)和页表项(pte)。翻译后备缓冲器(tlb)可以通过额外的空间来记录did字段,例如,在翻译后备缓冲器的部分增加did的标签扩展。由此,可以基于did字段操作翻译后备缓冲
器。
89.例如,在翻译后备缓冲器中保存did和地址空间标识符(asid)作为其条目(entry)的标签,只有did和asid匹配的情况下才命中翻译后备缓冲器的条目。换句话说,在匹配到did以及asid时,命中继续查询翻译后备缓冲器以确定是否匹配翻译后备缓冲器中的条目。另外,可以同时引入一条内存屏障指令(mfence.vma指令)来确保完成之前的pte操作,同时控制翻译后备缓冲器的清除。例如,mfence.vma指令只能在机器模式执行,在其他特权模式执行时出现指令异常。
90.基于以上示例性的系统架构的描述,本公开的至少一实施例提供了处理器级别的安全执行域。
91.图7a示出了根据本公开的至少一实施例的处理方法700的流程图。该处理方法700例如可以在参见图2描述的隔离模型中或者其他合适的处理器系统架构中实现。参见图7a,该处理方法700包括步骤s710至步骤s720。
92.在步骤s710中,在系统中提供第一执行域,其中,第一执行域运行在第一模式,并且作为安全监视器的运行环境,其中第一模式在非扩展的情形是机器模式。
93.在步骤s720中,在系统中创建至少一个第二执行域,其中,每个第二执行域基于第一执行域运行,并且运行在对应设置的第二模式,其中第二模式的权限低于第一机器模式的权限。
94.上述系统可以是例如参见图2描述的risv-c处理器系统架构的部分或全部或者其他合适的处理器系统。第一执行域可以对应于上文的执行域0,第二执行域可以对应于上文的执行域x、执行域y和执行域z。第一模式在非扩展的情形是机器模式时,第二模式可以是高超级模式、超级模式或用户模式。
95.如此,根据本公开的至少一实施例的处理方法可以为执行域提供丰富的特权模式,从而促进构建灵活和丰富的安全业务模型。
96.下面描述根据本公开的至少一实施例的处理方法的一些示例性的附加方面。
97.例如,根据本公开的至少一实施例的处理方法,第一模式可以扩展到例如高超级模式、超级模式等。例如,参见图2,第一模式可以扩展为例如高超级模式、超级模式等。在一些示例中,根据业务需要,第一模式可以从机器模式扩展到超级模式。如此,根据本公开的至少一实施例的处理方法可以进一步提供丰富的特权模式,从而促进构建灵活和丰富的安全业务模型。
98.例如,根据本公开的至少一实施例的处理方法,至少一个第二执行域包括多个第二执行域,多个第二执行域在安全等级上没有区分。例如,参见图2,执行域x、执行域y和执行域z在安全等级上没有区分。如此,根据本公开的至少一实施例的处理方法可以为具有各种安全等级提供灵活的执行域。
99.例如,根据本公开的至少一实施例的处理方法,第一执行域与至少一个第二执行域之间,以及多个第二执行域中的每一个执行域之间的隔离通过物理内存保护/增强型物理内存保护实现。例如,参见图2,执行域0与执行域x、执行域y和执行域z之间的隔离可以通过pmp/epmp实现,执行域x、执行域y和执行域z之间的隔离可以通过pmp/epmp实现。如此,根据本公开的至少一实施例的处理方法可以通过特定的内存保护实现执行域的隔离,保证了执行域内数据的安全性。
100.例如,根据本公开的至少一实施例的处理方法,还包括:基于执行域标识符,在当前运行执行域与目标执行域之间切换,其中,执行域标识符用于标识执行域切换时的目标执行域,当前执行域和目标执行域选自包括第一执行域和至少一个第二执行域的组,当前执行域和目标执行域不同。例如,当前执行域可以是执行域0,目标执行域可以是执行域x。又例如,参见图5,当前执行域可以是执行域x,目标执行域可以是执行域y。例如,参见图5的实施例,在进行执行域切换时,例如从执行域x切换到执行域y,可以基于标识执行域y的执行域标识符例如经由中断操作、保护执行域x的当前上下文并恢复执行域y的上下文等来将执行域x切换到执行域y。如此,根据本公开的至少一实施例的处理方法可以基于执行域标识符进行执行域或上下文切换。
101.例如,根据本公开的至少一实施例的处理方法,目标执行域在处理器核执行特权模式解除指令之后被切换为运行的执行域。例如,特权模式解除指令可以用于在从例如机器模式下返回到先前的特权级模式。例如,在risc-v架构中,特权模式解除指令可以为mret指令,然而本公开的实施例不限于此,在其他架构中,可以存着其他的特权模式解除指令。例如,在从执行域x到执行域y的执行域切换过程中,执行域x为当前运行执行域,执行域y为目标执行域,在hart执行mret指令之后,完成从执行域x到执行域y的切换,当前运行的执行域将为执行域y。也就是说,hart完成执行mret指令可以作为执行域切换完成的时间点。
102.例如,根据本公开的至少一实施例的处理方法,提供控制状态寄存器以设置并记录执行域标识符。例如,参见图4,可以控制状态寄存器以设置并记录执行域标识符did。如此,根据本公开的至少一实施例的处理方法可以通过在处理器内设置相应的寄存器来促进执行域标识符的设置和记录。与通过处理外部输入执行域标识符相比,可以提高处理器的处理速度。
103.这里,在执行域切换时,控制状态寄存器(csr)设置并记录的执行域标识符是目标执行域的执行域标识符(例如,在从执行域x到执行域y的执行域切换过程中的执行域y的执行域标识符)。当然,在执行域切换完成时,由于目标执行域已经变为当前执行域(例如已经执行域x变为执行域y,因而当前执行域为执行域y),因此控制状态寄存器设置并记录的执行域标识符是当前执行域的执行域标识符(即为执行域y的执行域的执行域标识符)。也就是说,控制状态寄存器设置并记录的执行域标识符是执行域切换时的目标执行域的执行域标识符,而未切换时控制状态寄存器(csr)设置并记录的执行域标识符是当前执行域的执行域标识符。
104.例如,根据本公开的至少一实施例的处理方法,至少一个第二执行域包括多个第二执行域,多个第二执行域之间基于普通执行环境/可信执行环境(ree/tee)语义进行区分。例如,参见图2,执行域x、执行域y和执行域z可以是ree或者tee。例如执行域x、执行域y可以是ree,执行域z可以是tee。这样,第二执行域中的部分执行域可以是ree并且其上可以运行或执行一般的业务,而第二执行域中的其他部分执行域为tee并且其上可以运行或执行可信业务。如此,根据本公开的至少一实施例的处理方法可以提供ree/tee环境,促进各种业务在系统上的执行。
105.例如,根据本公开的至少一实施例的处理方法,系统运行在硬件设备上,硬件设备包括至少一个处理器核以及系统总线,该处理方法还包括:在至少一个处理器核的流水线和系统总线中传输执行域标识符。例如,参见图2,处理器系统可以运行在处理器核(core)、
llc与中断控制器等硬件设备上,并且可以在处理器流水线和系统总线中传输执行域标识符。如此,根据本公开的至少一实施例的处理方法可以促进执行域标识符在例如处理器系统架构中的传输,以便基于执行域标识符进行进一步地处理。
106.在其他附加方面,也可以在处理器流水线和系统总线中传输非安全标识信息。例如,ns信息的比特可以映射到axi总线axprot[1]来进行ns信息的传输。例如,axprot[1]的值为0可以指示安全访问,并且axprot[1]的值为1可以指示非安全访问。
[0107]
例如,根据本公开的至少一实施例的处理方法,还包括:基于执行域标识符进行中断操作。例如,如上文参见图5的关于中断操作的描述,可以基于执行域标识符did经由中断控制器来进行中断操作。如此,根据本公开的至少一实施例的处理方法可以实现基于执行域的安全及高效的中断处理。
[0108]
例如,根据本公开的至少一实施例的处理方法,还包括:基于执行域标识符操作高速缓存。例如,如上文参见图6的关于高速缓存的描述,可以基于执行域标识符did和ns信息来操作高速缓存。如此,根据本公开的至少一实施例的处理方法可以实现基于执行域的安全及高效的缓存操作。例如,可以实现基于执行域的细粒度操作,实现细粒度的硬件级别内存保护。
[0109]
例如,根据本公开的至少一实施例的处理方法,还包括:基于执行域标识符操作翻译后备缓冲器。例如,如上文关于翻译后备缓冲器的描述,可以基于执行域标识符did和ns信息来操作翻译后备缓冲器。如此,根据本公开的至少一实施例的处理方法可以实现基于执行域的安全及高效的地址翻译操作。例如,可以实现基于执行域的细粒度操作,实现细粒度的硬件级别内存保护。
[0110]
与上述根据本公开的至少一实施例的处理方法相对应地,本公开的至少一实施例提供了一种系统,参见图7b。在其他方面,该系统例如与参见图2描述的隔离模型相对应。
[0111]
图7b示出了根据本公开的至少一实施例的系统750的示意图。
[0112]
参见图7b,系统750包括第一执行域760以及至少一个第二执行域770。
[0113]
第一执行域760运行在第一模式,并且作为安全监视器的运行环境,第一模式在非扩展的情形是机器模式。
[0114]
至少一个第二执行域770中的每个第二执行域基于第一执行域760运行并且运行在对应设置的第二模式,其中第二模式的权限低于机器模式的权限。
[0115]
如此,根据本公开的至少一实施例的系统可以为执行域提供丰富的特权模式,从而促进构建灵活和丰富的安全业务模型。
[0116]
下面描述根据本公开的至少一实施例的系统的一些示例性的附加方面。
[0117]
例如,根据本公开的至少一实施例的系统,至少一个第二执行域包括多个第二执行域,多个第二执行域在安全等级上没有区分或者多个第二执行域之间基于普通执行环境/可信执行环境语义进行区分。
[0118]
例如,根据本公开的至少一实施例的系统,第一执行域与至少一个第二执行域之间,以及多个第二执行域中的每一个执行域之间的隔离通过物理内存保护/增强型物理内存保护实现。
[0119]
例如,根据本公开的至少一实施例的系统,还包括:执行域切换单元,被配置为基于执行域标识符,在当前运行执行域与目标执行域之间切换,其中,执行域标识符用于标识
执行域切换时的目标执行域,当前运行执行域和目标执行域选自包括第一执行域和至少一个第二执行域的组,当前运行执行域和目标执行域不同。
[0120]
例如,根据本公开的至少一实施例的系统,目标执行域在处理器核执行特权模式解除指令之后被切换为运行的执行域。
[0121]
例如,根据本公开的至少一实施例的系统,还包括:控制状态寄存器,被配置为设置并记录执行域标识符。
[0122]
例如,根据本公开的至少一实施例的系统,系统运行在硬件设备上,硬件设备包括至少一个处理器核以及系统总线,并且执行域标识符在至少一个处理器核的流水线和系统总线中传输。
[0123]
例如,根据本公开的至少一实施例的系统,还包括中断控制器,被配置为基于执行域标识符进行中断操作;高速缓存控制器,被配置为基于执行域标识符操作高速缓存;或者翻译后备缓冲器控制器,被配置为基于执行域标识符操作翻译后备缓冲器。
[0124]
上述根据本公开的至少一实施例的系统750的附加方面可以与根据本公开的至少一实施例的处理方法700的附加方面相对应,因此根据本公开的至少一实施例的处理方法700的附加方面的技术效果同样可以映射到根据本公开的至少一实施例的系统750的附加方面,在此不再赘述。
[0125]
另外,上述根据本公开的至少一实施例的系统的附加方面仅是示例性的,可以通过其他架构来实现上述系统的附加方面并且可以参考或结合例如如上结合图2描述的各个方面。
[0126]
图8a示出了根据本公开的至少一实施例的中断处理方法的流程图。该中断处理方法例如可以在参见图2、图3、图5描述的各方面或者其他合适的处理器系统架构中实现。示例性地,该中断处理方法可以由参见图2或图5描述的中断控制器(核本地中断控制器/平台级中断控制器)执行域。参见图8a,该中断处理方法包括步骤s810至步骤s820。
[0127]
在步骤s810中,接收执行域标识符,其中,执行域标识符标识中断处理的目标执行域。
[0128]
在步骤s820中,基于执行域标识符进行中断操作。
[0129]
例如,在涉及从当前运行执行域到目标执行域的切换的中断操作时,执行域标识符可以标识目标执行域。进一步地,中断控制器可以基于执行域标识符触发处理器核进行中断操作,以执行从当前运行执行域到目标执行域的切换。例如,参见图5,在从当前运行执行域(执行域x)到目标执行域(执行域y)的切换的中断操作中,中断控制器(aclint/plic)可以接收目标执行域(执行域y)的执行域标识符(例如did y),中断控制器(aclint/plic)可以基于执行域标识符(did y)控制处理器核(例如linux内核/安全监视器)进行中断操作。
[0130]
如此,根据本公开的至少一实施例的中断处理方法可以基于执行域标识符进行中断操作,可以实现基于执行域的安全及高效的中断处理。
[0131]
下面描述根据本公开的至少一实施例的中断处理方法的一些示例性的附加方面。
[0132]
例如,根据本公开的至少一实施例的中断处理方法,基于执行域标识符进行中断操作,包括:基于执行域标识符生成中断信号。这里,中断信号可以被传输到例如处理器核,以进行进一步的操作。例如,参见图5,在一些情况下,中断控制器plic可以接收基于执行域
标识符生成中断信号sei/mei,以触发和控制例如安全监视器和linux内核进行中断操作。
[0133]
如此,根据本公开的至少一实施例的中断处理方法可以基于执行域标识符来实现相应的中断操作。
[0134]
例如,根据本公开的至少一实施例的中断处理方法,中断操作仅涉及触发机器模式和当前运行执行域的中断,并且根据基于中断信号的中断的设置状态来分别在安全监视器和操作系统内核里进行处理。例如,参见图5,当前运行执行域为执行域x,则中断控制器plic只触发机器模式和执行域x的中断,根据基于中断信号的中断的设置状态,中断信号mei以及可能的mexg在安全监视器里进行处理,并且中断信号sei在操作系统内核(例如linux内核)里进行处理。如此,根据本公开的至少一实施例的中断处理方法可以保证中断操作的安全性。
[0135]
例如,根据本公开的至少一实施例的中断处理方法,基于执行域标识符生成中断信号,包括:响应于基于执行域标识符确定当前运行执行域和与中断请求信号对应的执行域不一致,生成上下文切换中断信号,上下文切换中断信号用于触发从当前运行执行域到与中断请求信号对应的执行域的切换;以及响应于从当前运行执行域到与中断请求信号对应的执行域的切换,生成与中断请求的信号对应的中断信号作为中断信号。例如,上下文切换中断信号可以是参见图5描述的mexg中断信号。例如,mexg中断信号可以用于经由例如处理器核来触发从当前运行执行域到与中断请求信号对应的执行域的切换。
[0136]
例如,在涉及从当前运行执行域到目标执行域的切换的中断操作时,执行域标识符可以标识目标执行域,如果当前执行域与目标执行域不一致,可以认为中断异常。此时,中断控制器可以生成mexg中断信号,以控制处理器核触发从当前运行执行域到目标执行域的切换。随后,切换后的而正在运行的执行域即为最新的当前运行执行域,此后可以进行正常的中断操作。
[0137]
例如,参见图3,当前运行执行域可以为执行域x,目标执行域可以为执行域y。
[0138]
如此,根据本公开的至少一实施例的中断处理方法可以在中断异常时进行执行域的切换,以促进中断操作。
[0139]
例如,根据本公开的至少一实施例的中断处理方法,还包括:在处理器核被上下文切换中断信号中断之后,提供目标执行域的执行域标识符。例如,参见图3,在处理器核被mexg中断信号中断之后,中断控制器(aclint/plic)的上下文切换寄存器(例如,mexgx寄存器或其他合适的寄存器)可以存储有目标执行域的执行域标识符,可以由软件根据业务需要分别查询中断控制器(aclint/plic)的上下文切换寄存器,以获取需要切换到的目标执行域的执行域标识符(例如参见图3的执行域y)。
[0140]
如此,根据本公开的至少一实施例的中断处理方法可以在中断异常时通过中断控制器的寄存器获取执行域标识符。当然,本公开不以此为限,例如可以通过外部输入、处理器核再次发送、或者查找其他合适的寄存器来实现上述执行域标识符的获取。
[0141]
例如,根据本公开的至少一实施例的中断处理方法,基于执行域标识符生成中断信号,包括:响应于基于执行域标识符确定目标执行域和与中断请求信号对应的执行域一致,生成与中断请求的信号对应的中断信号作为中断信号。例如,在涉及从第一执行域到第二执行域的切换的中断操作时,执行域标识符可以标识第二执行域,并且当前运行执行域为第二执行域,此时,可以认为不存在中断异常,中断控制器可以直接生成中断信号来促使
处理器核进行中断处理。
[0142]
例如,根据本公开的至少一实施例的中断处理方法,还包括:接收由处理器发送的当前处理器核的特权模式和执行域标识符,并且根据特权模式陷入指令/特权模式解除指令和执行域标识符的变化而实时更新,以基于该更新进行中断操作。例如,特权模式陷入指令可以用于从低特权模式陷入(trap)到机器模式。例如,在risc-v架构中,特权模式陷入指令/特权模式解除指令可以为ecall/xret(sret/mret),然而本公开的实施例不限于此,在其他架构中,可以存着其他的特权模式陷入指令/特权模式解除指令。处理器将当前hart的特权模式和执行域标识符送往中断控制器,并且根据ecall/xret(sret/mret)和执行域标识符的变化而实时更新,中断控制器基于这些更新后的信息触发中断。如此,根据本公开的至少一实施例的中断处理方法可以实时更新相应的特权模式和执行域标识符,以经由中断控制器促进中断操作。
[0143]
与上述根据本公开的至少一实施例的处理方法相对应地,本公开的至少一实施例提供了一种中断控制器,参见图8b。在其他方面,该中断控制器例如与参见图2、图5描述的中断控制器(例如核本地中断控制器/平台级中断控制器)相对应。
[0144]
图8b示出了根据本公开的至少一实施例的中断控制器850的示意图。
[0145]
参见图8b,中断控制器850包括接收单元860以及中断操作单元870。
[0146]
接收单元860被配置为接收执行域标识符,其中,执行域标识符标识中断处理的目标执行域。
[0147]
中断操作单元870被配置为基于执行域标识符进行中断操作。
[0148]
如此,根据本公开的至少一实施例的中断处理器可以基于执行域标识符进行中断操作,可以实现基于执行域的安全及高效的中断处理。
[0149]
下面描述根据本公开的至少一实施例的中断处理方法的一些示例性的附加方面。
[0150]
例如,根据本公开的至少一实施例的中断控制器,中断操作单元还被配置为基于执行域标识符生成中断信号。
[0151]
例如,根据本公开的至少一实施例的中断控制器,中断操作单元还被配置为仅触发机器模式和当前运行执行域的中断,并且根据基于中断信号的中断的设置状态来分别在安全监视器和操作系统内核里进行处理。
[0152]
例如,根据本公开的至少一实施例的中断控制器,中断操作单元还被配置为:响应于基于执行域标识符确定当前运行执行域和与中断请求信号对应的执行域不一致,生成上下文切换中断信号,上下文切换中断信号用于触发从当前运行执行域到与中断请求信号对应的执行域的切换;以及响应于从当前运行执行域到与中断请求信号对应的执行域的切换,生成与中断请求的信号对应的中断信号作为中断信号。
[0153]
例如,根据本公开的至少一实施例的中断控制器,还包括上下文切换寄存器,并且中断操作单元还被配置为在处理器核被上下文切换中断信号中断之后,查询上下文切换寄存器以提供目标执行域的执行域标识符。
[0154]
例如,根据本公开的至少一实施例的中断控制器,中断操作单元还被配置为响应于基于执行域标识符确定目标执行域和与中断请求信号对应的执行域一致,生成与中断请求的信号对应的中断信号作为中断信号。
[0155]
例如,根据本公开的至少一实施例的中断控制器,接收单元还被配置为接收由处
理器发送的当前处理器核的特权模式和执行域标识符,并且中断操作单元还被配置为根据特权模式陷入指令/特权模式解除指令和执行域标识符的变化而实时更新,以基于更新进行中断操作。
[0156]
上述根据本公开的至少一实施例的中断控制器850的附加方面可以与根据本公开的至少一实施例的中断处理方法800的附加方面相对应,因此根据本公开的至少一实施例的中断处理方法800的附加方面的技术效果同样可以映射到根据本公开的至少一实施例的中断控制器850的附加方面,在此不再赘述。
[0157]
另外,上述根据本公开的至少一实施例的中断控制器的附加方面仅是示例性的,可以通过其他架构来实现上述中断控制器的附加方面并且可以参考或结合例如如上结合图2、图5描述的各个方面。
[0158]
图9a示出了根据本公开的至少一实施例的操作高速缓存的方法的流程图。该操作高速缓存的方法例如可以在参见图2描述的隔离模型中、参见图6描述的高速缓存或者其他合适的处理器系统架构中实现。参见图9a,该操作高速缓存的方法包括步骤s910至步骤s920。
[0159]
在步骤s910中,接收访问高速缓存的事务的执行域状态信息,其中,执行域状态信息与事务的执行域相关联。例如,执行域状态信息可以与事务的目标地址空间所属的执行域相关联或者与事务所属的执行域相关联。例如,这里的执行域状态信息可以包括执行域标识符和/或非安全标识信息。执行域标识符用于标识执行域,非安全标识信息可以标识该执行域是否安全或可信。例如,参见图6,可以接收访问数据高速缓存的事务的执行域状态信息,事务可以涉及该数据高速缓存的读取、写入、逐出等操作。
[0160]
在步骤s920中,基于执行域状态信息操作高速缓存。例如,可以针对来自不同执行域的事务而相应地采用不同的缓存方式,例如禁止或允许访存操作、缓存在高速缓存的不同存储位置等。例如,参见图6,可以基于did和ns信息来操作高速缓存,以实现高速缓存的加载和存储操作等。
[0161]
如此,根据本公开的至少一实施例的操作高速缓存的方法可以基于执行域标识符操作高速缓存,可以实现基于执行域的安全及高效的缓存操作。例如,可以实现基于执行域的细粒度操作,实现细粒度的硬件级别内存保护。
[0162]
下面描述根据本公开的至少一实施例的操作高速缓存的方法的一些示例性的附加方面。
[0163]
例如,根据本公开的至少一实施例的操作高速缓存的方法,基于执行域状态信息操作高速缓存,包括:在高速缓存中缓存事务的数据或指令且记录数据或指令的执行域状态信息。例如,参见图6,可以在数据高速缓存中缓存数据以及相应的did和ns信息。
[0164]
如此,根据本公开的至少一实施例的操作高速缓存的方法可以针对执行域实现细粒度的高速缓存。根据本公开的至少一实施例的操作高速缓存的方法可以在高速缓存中提供用于记录数据或指令的执行域状态信息的空间。然而,实施例不限于此,也可以通过外部空间来记录数据或指令的执行域状态信息。
[0165]
例如,根据本公开的至少一实施例的操作高速缓存的方法,在高速缓存中缓存事务的数据或指令且记录数据或指令的执行域状态信息,包括:为高速缓存中的缓存数据或指令的缓存行提供用于记录执行域状态信息的空间且在空间中记录数据或指令的对应的
执行域状态信息。例如,参见图6,可以为数据高速缓存中的每个缓存行提供空间,并且在空间中记录相应的did和ns信息。
[0166]
如此,根据本公开的至少一实施例的操作高速缓存的方法可以针对缓存行为对象提供细粒度的基于执行域标识符和/或非安全标识信息提供高速缓存。
[0167]
例如,根据本公开的至少一实施例的操作高速缓存的方法,为高速缓存中的缓存数据或指令的缓存行提供用于记录执行域状态信息的空间且在空间中记录数据或指令的对应的执行域状态信息,包括:当填充缓存行而由高速缓存向总线发出加载请求时,使能高速缓存往总线送出执行域状态信息。例如,参见图6,当填充缓存行而由数据高速缓存向总线发出加载请求时,例如通过高速缓存控制器使能高速缓存往总线送出did和ns信息。
[0168]
如此,根据本公开的至少一实施例的操作高速缓存的方法可以促进包括did和ns信息的缓存行的填充。
[0169]
例如,根据本公开的至少一实施例的操作高速缓存的方法,为高速缓存中的缓存数据或指令的缓存行提供用于记录执行域状态信息的空间且在空间中记录数据或指令的对应的执行域状态信息,包括:当处理器有针对高速缓存的缓存行的加载请求或存储请求发出时,使能高速缓存接收包括执行域状态信息与标签信息的信号(以及可选的索引等信息的信号),其中,所述执行域状态信息不用于所述缓存行的匹配。例如,参见图6,当处理器有针对数据高速缓存的缓存行的加载请求或存储请求发出时,例如通过高速缓存控制器使能高速缓存接收包括did、ns信息、标签(tag)以及可选的索引(index)等信息的信号,以实现对该数据高速缓存的读取、写入操作。例如,信号中附带的did和ns字段可以不用于缓存行的匹配,匹配规则仍旧按照原有的方式进行。例如,在做高速缓存命中时,可以不检查did和ns字段,即在匹配时did和ns字段信息可以不作为标签参与命中操作。
[0170]
如此,根据本公开的至少一实施例的操作高速缓存的方法可以促进包括did和ns信息的缓存行的填充。
[0171]
例如,根据本公开的至少一实施例的操作高速缓存的方法,为高速缓存中的缓存数据或指令的缓存行提供用于记录执行域状态信息的空间且在空间中记录数据或指令的对应的执行域状态信息,包括:当高速缓存未命中而进行填充时,将执行域状态信息写入需要填充的缓存行中;当高速缓存命中时,不更新缓存行的执行域状态信息,以及当对应的地址在运行时存在执行域状态信息的变化时,进行清理和无效操作,并且重新按照变化后的执行域状态信息填充缓存行。例如,参见图6,当数据高速缓存未命中而进行填充时,可以将did和ns信息写入需要填充的缓存行中,以促进对相应的did和ns信息的存储。又例如,当数据高速缓存命中时,可以不更新缓存行的did和ns信息,并且响应于对应的地址在运行时存在did和ns信息的变化,进行清理和无效操作,并且重新按照变化后的did和ns信息填充缓存行。
[0172]
如此,根据本公开的至少一实施例的操作高速缓存的方法可以为高速缓存提供了的记录执行域状态信息的具体方式。
[0173]
例如,根据本公开的至少一实施例的操作高速缓存的方法,为高速缓存中的缓存数据或指令的缓存行提供用于记录执行域状态信息的空间且在空间中记录数据或指令的对应的执行域状态信息,包括:使能高速缓存发起预取操作时使用上次缓存行对应的执行域标识符。例如,参见图6,可以由数据高速缓存发起预取操作时使用上次缓存行对应的执
行域标识符。
[0174]
如此,根据本公开的至少一实施例的操作高速缓存的方法可以促进快速命中对应的数据。
[0175]
例如,根据本公开的至少一实施例的操作高速缓存的方法,还包括:当高速缓存执行清除或逐出操作时,将高速缓存行所带的执行域状态信息一起送出。例如,参见图6,当高速缓存执行清除或逐出操作时,可以将高速缓存行所带的did和ns信息一起送出,例如送往总线,以写入到内存中。例如,此时需要将高速缓存中的数据写入到内存中,由于需要经总线操作,所以这里需要did,因此这里的执行域状态信息包括did和ns信息。然而实施例不限于此,当仅涉及一个执行域的简单系统架构时,did可以不是必须的。
[0176]
如此,根据本公开的至少一实施例的操作高速缓存的方法可以得到带有执行域状态信息的数据,以便其他组件基于执行域状态信息对数据进行进一步地操作。
[0177]
例如,根据本公开的至少一实施例的操作高速缓存的方法,高速缓存包括指令高速缓存、数据高速缓存、二级高速缓存以及最后一级高速缓存(llc)。
[0178]
如此,根据本公开的至少一实施例的操作高速缓存的方法可以适用于广泛的高速缓存系统。
[0179]
上述与缓存行相关联的实施例例如涉及基于执行域状态信息操作高速缓存的缓存行。然而实施例不限于此,例如,在一些实施例中,在高速缓存中提供用于记录数据或指令的执行域状态信息的空间,包括:为高速缓存中用于缓存数据或指令的缓存组提供用于记录执行域状态信息的空间,以及基于执行域标识符操作缓存组。这里的缓存组包括多个缓存行。在一些示例中,对应于相同执行域状态信息的缓存组可以专用于该相同的执行域。例如,参见图6,可以多个缓存行的data共享一个did和ns信息。如此,可以提高存储器存储数据或指令的效率。
[0180]
与上述根据本公开的至少一实施例的操作高速缓存的方法相对应地,本公开的至少一实施例提供了一种高速缓存控制器,参见图9b。在其他方面,该高速缓存控制器例如用于促进实现参见图6描述的高速缓存的各个方面。
[0181]
图9b示出了根据本公开的至少一实施例的高速缓存控制器950的示意图。
[0182]
参见图9b,高速缓存控制器950包括接收单元960以及高速缓存操作单元970。
[0183]
接收单元960被配置为接收访问高速缓存的事务的执行域状态信息,其中,执行域状态信息与事务的执行域相关联。
[0184]
高速缓存操作单元970被配置为基于执行域状态信息操作高速缓存。
[0185]
如此,根据本公开的至少一实施例的高速缓存控制器可以基于执行域标识符操作高速缓存,可以实现基于执行域的安全及高效的缓存操作。例如,可以实现基于执行域的细粒度操作,实现细粒度的硬件级别内存保护。
[0186]
下面描述根据本公开的至少一实施例的高速缓存控制器的一些示例性的附加方面。
[0187]
例如,根据本公开的至少一实施例的高速缓存控制器,高速缓存操作单元还被配置为:在高速缓存中缓存事务的数据或指令且记录数据或指令的执行域状态信息。
[0188]
例如,根据本公开的至少一实施例的高速缓存控制器,高速缓存操作单元还被配置为:为高速缓存中的缓存数据或指令的缓存行提供用于记录执行域状态信息的空间且在
空间中记录数据或指令的对应的执行域状态信息。
[0189]
例如,根据本公开的至少一实施例的高速缓存控制器,高速缓存操作单元还被配置为:当填充缓存行而由高速缓存向总线发出加载请求时,使能高速缓存往总线送出执行域状态信息。
[0190]
例如,根据本公开的至少一实施例的高速缓存控制器,高速缓存操作单元还被配置为:当处理器有针对高速缓存的加载请求或存储请求发出时,使能高速缓存接收包括执行域状态信息与标签信息的信号,其中,所述执行域状态信息不用于所述缓存行的匹配。
[0191]
例如,根据本公开的至少一实施例的高速缓存控制器,高速缓存操作单元还被配置为:当高速缓存未命中而进行填充时,将执行域状态信息写入需要填充的缓存行中;当高速缓存命中时,不更新缓存行的执行域状态信息;以及当对应的地址在运行时存在执行域状态信息的变化时,进行清理和无效操作,并且重新按照变化后的执行域状态信息填充缓存行。
[0192]
例如,根据本公开的至少一实施例的高速缓存控制器,高速缓存操作单元还被配置为:使能高速缓存发起预取操作时使用上次缓存行对应的执行域标识符。
[0193]
例如,根据本公开的至少一实施例的高速缓存控制器,高速缓存操作单元还被配置为:当高速缓存执行清除或逐出操作时,将高速缓存行所带的执行域状态信息一起送出。
[0194]
例如,根据本公开的至少一实施例的高速缓存控制器,高速缓存包括指令高速缓存、数据高速缓存、二级高速缓存以及最后一级高速缓存。
[0195]
上述根据本公开的至少一实施例的高速缓存控制器950的附加方面可以与根据本公开的至少一实施例的操作高速缓存的方法900的附加方面相对应,因此根据本公开的至少一实施例的操作高速缓存的方法900的附加方面的技术效果同样可以映射到根据本公开的至少一实施例的高速缓存控制器950的附加方面,在此不再赘述。
[0196]
另外,上述根据本公开的至少一实施例的中断控制器的附加方面仅是示例性的,可以通过其他架构来实现上述高速缓存控制器的附加方面并且可以参考或结合例如如上结合图2、图6描述的各个方面。
[0197]
图10a示出了根据本公开的至少一实施例的操作翻译后备缓冲器的方法的流程图。该操作翻译后备缓冲器例如可以在参见图2描述的隔离模型中、参见上文描述的翻译后备缓冲器或者其他合适的处理器系统架构中实现。参见图10a,该操作翻译后备缓冲器的方法包括步骤s1010至步骤s1020。
[0198]
在步骤s1010中,接收访问翻译后备缓冲器的事务的执行域状态信息,其中,执行域状态信息与事务的执行域相关联。例如,执行域状态信息可以与事务的目标地址空间所属的执行域相关联或者与事务所属的执行域相关联。例如,这里的执行域状态信息可以包括执行域标识符和/或非安全标识信息。执行域标识符用于标识执行域,非安全标识信息可以标识该执行域是否安全或可信。
[0199]
在步骤s1020中,基于执行域状态信息操作翻译后备缓冲器。例如,可以针对来自不同执行域的事务而相应地操作翻译后备缓冲器。
[0200]
如此,根据本公开的至少一实施例的操作翻译后备缓冲器的方法可以基于执行域标识符操作翻译后备缓冲器,可以实现基于执行域的安全及高效的地址翻译操作。例如,可以实现基于执行域的细粒度操作,实现细粒度的硬件级别内存保护。
[0201]
下面描述根据本公开的至少一实施例的操作翻译后备缓冲器的方法的一些示例性的附加方面。
[0202]
例如,根据本公开的至少一实施例的操作翻译后备缓冲器的方法,基于执行域状态信息操作翻译后备缓冲器,包括:在操作翻译后备缓冲器中记录事务的执行域状态信息。当然,本公开的实施例不限于此,可以通过在翻译后备缓冲器外部记录事务的执行域状态信息。
[0203]
如此,根据本公开的至少一实施例的操作翻译后备缓冲器的方法可以实现翻译后备缓冲器内部执行域状态信息的存储,以促进后续基于执行域状态信息的查询操作。
[0204]
例如,根据本公开的至少一实施例的操作翻译后备缓冲器的方法,在操作翻译后备缓冲器中记录事务的执行域状态信息,包括:在翻译后备缓冲器中提供用于记录执行域状态信息的空间。例如,如上文所述,翻译后备缓冲器(tlb)可以通过额外的空间来记录did字段。然而,实施例不限于此,也可以通过外部空间来记录执行域状态信息。
[0205]
如此,根据本公开的至少一实施例的操作翻译后备缓冲器的方法可以促进在操作翻译后备缓冲器中记录事务的执行域状态信息。
[0206]
例如,根据本公开的至少一实施例的操作翻译后备缓冲器的方法,在翻译后备缓冲器中提供用于记录执行域状态信息的空间,包括:在翻译后备缓冲器中提供用于保存执行域状态信息以及地址空间标识符作为翻译后备缓冲器的条目的标签或标签的组成部分。例如,如上文所述,可以在翻译后备缓冲器中保存did信息和地址空间标识符作为其条目的标签。
[0207]
如此,根据本公开的至少一实施例的操作翻译后备缓冲器的方法提供了具体地方式来促进在操作翻译后备缓冲器中记录事务的执行域状态信息。
[0208]
例如,根据本公开的至少一实施例的操作翻译后备缓冲器的方法,基于执行域状态信息操作翻译后备缓冲器,包括:在匹配到执行域状态信息以及地址空间标识符时,继续查询翻译后备缓冲器以确定是否匹配翻译后备缓冲器中的条目。例如,如上文所述,可以在翻译后备缓冲器中保存did信息和地址空间标识符作为其条目的标签,并且只有did信息和asid匹配的情况下才命中翻译后备缓冲器的条目。
[0209]
如此,根据本公开的至少一实施例的操作翻译后备缓冲器的方法增加了did信息和asid作为命中条件之一,并且常规的tlb查询命中可以保持不变,在对翻译后备缓冲器具有较少改动的情况下促进基于执行域状态信息的地址翻译操作。
[0210]
例如,根据本公开的至少一实施例的操作翻译后备缓冲器的方法,还包括:使用内存屏障指令,确保完成之前的页表项(pte)操作,以及控制翻译后备缓冲器的清除操作。例如,如上文所述,可以同时引入一条内存屏障指令(mfence.vma指令)来确保完成之前的pte操作,同时控制翻译后备缓冲器的清除。
[0211]
如此,根据本公开的至少一实施例的操作翻译后备缓冲器的方法可以保证相应的地址翻译操作的顺利完成。
[0212]
例如,根据本公开的至少一实施例的操作翻译后备缓冲器的方法,内存屏障指令在机器模式执行,并且在其他特权模式执行时出现指令异常。
[0213]
如此,根据本公开的至少一实施例的操作翻译后备缓冲器的方法由于仅在机器模式执行而可以保证系统的安全性。
[0214]
与上述根据本公开的至少一实施例的操作翻译后备缓冲器的方法相对应地,本公开的至少一实施例提供了一种翻译后备缓冲器控制器,参见图10b。在其他方面,该翻译后备缓冲器控制器例如用于促进实现上文描述的翻译后备缓冲器的各个方面。
[0215]
图10b示出了根据本公开的至少一实施例的翻译后备缓冲器控制器1050的示意图。
[0216]
参见图10b,翻译后备缓冲器控制器1050包括接收单元1060以及翻译后备缓冲器控制器操作单元1070。
[0217]
接收单元1060被配置为接收访问翻译后备缓冲器的事务的执行域状态信息,其中,执行域状态信息与事务的执行域相关联。
[0218]
翻译后备缓冲器控制器操作单元1070被配置为基于执行域状态信息操作翻译后备缓冲器。
[0219]
如此,根据本公开的至少一实施例的翻译后备缓冲器控制器可以基于执行域标识符操作翻译后备缓冲器,可以实现基于执行域的安全及高效的地址翻译操作。例如,可以实现基于执行域的细粒度操作,实现细粒度的硬件级别内存保护。
[0220]
下面描述根据本公开的至少一实施例的高速缓存控制器的一些示例性的附加方面。
[0221]
例如,根据本公开的至少一实施例的翻译后备缓冲器控制器,翻译后备缓冲器控制器操作单元还被配置为:在操作翻译后备缓冲器中记录事务的执行域状态信息。
[0222]
例如,根据本公开的至少一实施例的翻译后备缓冲器控制器翻译后备缓冲器控制器操作单元还被配置为:在翻译后备缓冲器中提供保存执行域状态信息以及地址空间标识符作为翻译后备缓冲器的条目的标签或标签的组成部分。
[0223]
例如,根据本公开的至少一实施例的翻译后备缓冲器控制器,翻译后备缓冲器控制器操作单元还被配置为:在匹配到执行域状态信息以及地址空间标识符时,继续查询翻译后备缓冲器以确定是否匹配翻译后备缓冲器中的条目。
[0224]
例如,根据本公开的至少一实施例的翻译后备缓冲器控制器,翻译后备缓冲器控制器操作单元还被配置为:使用内存屏障指令,确保完成之前的页表项操作,以及控制翻译后备缓冲器的清除操作。
[0225]
例如,根据本公开的至少一实施例的翻译后备缓冲器控制器,内存屏障指令在机器模式执行,并且在其他特权模式执行时出现指令异常。
[0226]
例如,根据本公开的至少一实施例的翻译后备缓冲器控制器,执行域状态信息包括执行域标识符和非安全标识信息中的至少一个。
[0227]
上述根据本公开的至少一实施例的翻译后备缓冲器控制器1050的附加方面可以与根据本公开的至少一实施例的操作翻译后备缓冲器的方法1000的附加方面相对应,因此根据本公开的至少一实施例的操作翻译后备缓冲器的方法1000的附加方面的技术效果同样可以映射到根据本公开的至少一实施例的翻译后备缓冲器控制器1050的附加方面,在此不再赘述。
[0228]
另外,上述根据本公开的至少一实施例的中断控制器的附加方面仅是示例性的,可以通过其他架构来实现上述翻译后备缓冲器控制器的附加方面并且可以参考或结合例如上文描述的翻译后备缓冲器的各个方面。
[0229]
图11示出了根据本公开的至少一实施例的电子装置1100的示意图。
[0230]
如图11所示,电子装置1100包括处理器1110和存储器1120。存储器1120包括一个或多个计算机程序模块1121。一个或多个计算机程序模块1121被存储在存储器1120中并被配置为由处理器1110执行,该一个或多个计算机程序模块1121包括用于执行根据本公开的至少一实施例的上述各种方法的指令,其被处理器1110执行时,可以执行根据本公开的至少一实施例的上述各种方法及其附加方面的一个或多个步骤。存储器1120和处理器1110可以通过总线系统和/或其他形式的连接机构(未示出)互连。例如,该总线可以是外设部件互连标准(pci)总线或扩展工业标准结构(eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。
[0231]
示例性地,处理器1110可以是中央处理单元(cpu)、数字信号处理器(dsp)或者具有数据处理能力和/或程序执行能力的其他形式的处理单元,例如现场可编程门阵列(fpga)等;例如,中央处理单元(cpu)可以为risc-v架构或其他合适类型的架构等。处理器1110可以为通用处理器或专用处理器,可以控制电子装置1100中的其他组件以执行期望的功能。
[0232]
示例性地,存储器1120可以包括一个或多个计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓存(cache)等。非易失性存储器例如可以包括只读存储器(rom)、硬盘、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、usb存储器、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序模块1121,处理器1110可以运行一个或多个计算机程序模块1121,以实现电子装置1100的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
[0233]
例如,电子装置1100还可以包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等输入装置;包括诸如液晶显示器、扬声器、振动器等输出装置;包括例如磁带、硬盘(hdd或sdd)等存储装置;例如还可以包括诸如lan卡、调制解调器等的网络接口卡等通信装置。通信装置可以允许电子装置1100与其他设备进行无线或有线通信以交换数据,经由诸如因特网的网络执行通信处理。根据需要驱动器连接至i/o接口。可拆卸存储介质,诸如磁盘、光盘、磁光盘、半导体存储器等,根据需要安装在该驱动器上,以便于从其上读出的计算机程序根据需要被安装入存储装置。
[0234]
例如,该电子装置1100还可以进一步包括外设接口(图中未示出)等。该外设接口可以为各种类型的接口,例如为usb接口、闪电(lighting)接口等。该通信装置可以通过无线通信来与网络和其他设备进行通信,该网络例如为因特网、内部网和/或诸如蜂窝电话网络之类的无线网络、无线局域网(lan)和/或城域网(man)。无线通信可以使用多种通信标准、协议和技术中的任何一种,包括但不局限于全球移动通信系统(gsm)、增强型数据gsm环境(edge)、宽带码分多址(w-cdma)、码分多址(cdma)、时分多址(tdma)、蓝牙、wi-fi(例如基于ieee 802.11a、ieee 802.11b、ieee 802.11g和/或ieee 802.11n标准)、基于因特网协议的语音传输(voip)、wi-max,用于电子邮件、即时消息传递和/或短消息服务(sms)的协议,或任何其他合适的通信协议。
[0235]
该电子装置1100例如可以是片上系统(soc)或者包括该soc的设备,例如,可以为
手机、平板电脑、笔记本电脑、电子书、游戏机、电视机、数码相框、导航仪、家用电器、通信基站、工业控制器、服务器等任何设备,也可以为任意的数据处理装置及硬件的组合,本公开的实施例对此不作限制。该电子装置1100的具体功能和技术效果可以参考上文中关于根据本公开的至少一实施例的用于精简指令集计算机处理器的上述各种方法及其附加方面的描述,此处不再赘述。
[0236]
图12示出了根据本公开的至少一实施例的非瞬时可读存储介质1200的示意图。
[0237]
如图12所示,非瞬时可读存储介质1200上存储有计算机指令1210,该计算机指令1210被处理器执行时执行如上所述的各种方法及其附加方面中的一个或多个步骤。
[0238]
示例性地,该非瞬时可读存储介质1200可以是一个或多个计算机可读存储介质的任意组合,例如,一个计算机可读存储介质包含用于执行上述各种方法的程序代码。
[0239]
示例性地,当该程序代码由计算机读取时,计算机可以执行该计算机存储介质中存储的程序代码,执行以实现例如根据本公开的至少一实施例的上述各种方法及其附加方面的一个或多个步骤。
[0240]
示例性地,该非瞬时可读存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom)、便携式紧致盘只读存储器(cd-rom)、闪存、以及其他的非瞬时可读存储介质或其任意组合。
[0241]
本说明书中的至少部分实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0242]
需要说明的是,在本文中,诸如第一、第二等的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且进一步包括没有明确列出的其他要素,或者是进一步包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括
……”
限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0243]
对于本公开,还有以下几点需要说明:
[0244]
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
[0245]
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
[0246]
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。

技术特征:
1.一种处理方法,包括:在系统中提供第一执行域,其中,所述第一执行域运行在第一模式,并且作为安全监视器的运行环境,所述第一模式在非扩展的情形是机器模式;以及在所述系统中创建至少一个第二执行域,其中,每个第二执行域基于所述第一执行域运行并且运行在对应设置的第二模式,其中所述第二模式的权限低于所述机器模式的权限。2.根据权利要求1所述的处理方法,其中,所述至少一个第二执行域包括多个第二执行域,所述多个第二执行域在安全等级上没有区分。3.根据权利要求2所述的处理方法,其中,所述第一执行域与所述至少一个第二执行域之间,以及所述多个第二执行域中的每一个执行域之间的隔离通过物理内存保护/增强型物理内存保护实现。4.根据权利要求1或2所述的处理方法,还包括:基于执行域标识符,在当前运行执行域与目标执行域之间切换,其中,所述执行域标识符用于标识执行域切换时的目标执行域,所述当前运行执行域和所述目标执行域选自包括所述第一执行域和所述至少一个第二执行域的组,所述当前运行执行域和所述目标执行域不同。5.根据权利要求4所述的处理方法,其中,所述目标执行域在处理器核执行特权模式解除指令之后被切换为运行的执行域。6.根据权利要求4所述的处理方法,还包括:提供控制状态寄存器以设置并记录所述执行域标识符。7.根据权利要求1所述的处理方法,其中,所述至少一个第二执行域包括多个第二执行域,所述多个第二执行域之间基于普通执行环境/可信执行环境语义进行区分。8.根据权利要求4所述的处理方法,其中,所述系统运行在硬件设备上,所述硬件设备包括至少一个处理器以及系统总线,所述处理方法还包括:在所述至少一个处理器的流水线和所述系统总线中传输所述执行域标识符。9.根据权利要求4所述的处理方法,还包括:基于所述执行域标识符进行中断操作。10.根据权利要求4所述的处理方法,还包括:基于所述执行域标识符操作高速缓存。11.根据权利要求4所述的处理方法,还包括:基于所述执行域标识符操作翻译后备缓冲器。12.一种系统,包括:第一执行域,其中,所述第一执行域运行在第一模式,并且作为安全监视器的运行环境,所述第一模式在非扩展的情形是机器模式;以及至少一个第二执行域,其中,每个第二执行域基于所述第一执行域运行并且运行在对应设置的第二模式,其中所述第二模式的权限低于所述机器模式的权限。13.根据权利要求12所述的系统,其中,所述至少一个第二执行域包括多个第二执行域,所述多个第二执行域在安全等级上没有区分或者所述多个第二执行域之间基于普通执行环境/可信执行环境语义进行区分。
14.根据权利要求13所述的系统,其中,所述第一执行域与所述至少一个第二执行域之间,以及所述多个第二执行域中的每一个执行域之间的隔离通过物理内存保护/增强型物理内存保护实现。15.根据权利要求13或14所述的系统,还包括:执行域切换单元,被配置为基于执行域标识符,在当前运行执行域与目标执行域之间切换,其中,所述执行域标识符用于标识执行域切换时的目标执行域,所述当前运行执行域和所述目标执行域选自包括所述第一执行域和所述至少一个第二执行域的组,所述当前运行执行域和所述目标执行域不同。16.根据权利要求15所述的系统,其中,所述目标执行域在处理器核执行特权模式解除指令之后被切换为运行的执行域。17.根据权利要求15所述的系统,还包括:控制状态寄存器,被配置为设置并记录所述执行域标识符。18.根据权利要求15所述的系统,其中,所述系统运行在硬件设备上,所述硬件设备包括至少一个处理器以及系统总线,并且所述执行域标识符在所述至少一个处理器的流水线和所述系统总线中传输。19.根据权利要求15所述的系统,还包括:中断控制器,被配置为基于所述执行域标识符进行中断操作;高速缓存控制器,被配置为基于所述执行域标识符操作所述高速缓存;或者翻译后备缓冲器控制器,被配置为基于所述执行域标识符操作所述翻译后备缓冲器。20.一种电子装置,包括:处理器;存储器,包括一个或多个计算机程序模块;其中,所述一个或多个计算机程序模块被存储在所述存储器中并被配置为由所述处理器执行以实施根据权利要求1-11中任一项所述的处理方法。21.一种非瞬时可读存储介质,其上存储有计算机可执行指令,其中,所述计算机可执行指令在被处理器执行时,以实施根据权利要求1-11中任一项所述的处理方法。

技术总结
本公开的至少一实施例提供了处理方法、系统、电子系统和存储介质。该处理方法包括:在系统中提供第一执行域,其中,第一执行域运行在第一模式,并且作为安全监视器的运行环境,第一模式在非扩展的情形是机器模式;以及在系统中创建至少一个第二执行域,其中,每个第二执行域基于第一执行域运行并且运行在对应设置的第二模式,其中第二模式的权限低于机器模式的权限。该处理方法可以为执行域提供丰富的特权模式,从而促进构建灵活和丰富的安全业务模型。型。型。


技术研发人员:曹鎏
受保护的技术使用者:北京奕斯伟计算技术股份有限公司
技术研发日:2023.05.31
技术公布日:2023/8/28
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐