处理器、中断隔离方法、指令模拟方法、片上系统及设备与流程

未命名 08-15 阅读:139 评论:0


1.本技术涉及计算机技术领域,特别涉及一种处理器、中断隔离方法、指令模拟方法、片上系统及设备。


背景技术:

2.出于成本和应用的考虑,risc-v(reduced instruction set computing-five,第五代精简指令集)处理器一般只设计两级特权模式(例如,机器模式(machine mode,简称m模式)和用户模式(user mode,简称u模式))。对于两级特权的risc-v处理器,ree(rich execution environment,通用执行环境)的os(operating system,操作系统)和tee(trusted execution environment,可信执行环境)的os均运行在m模式,无法实现ree和tee的隔离。
3.为实现ree和tee的隔离,相关技术在软件层面上进行改进,将ree的os由m模式迁移至u模式,而保持可信固件和tee的os处于m模式。
4.然而,可信固件和tee的os处于一个特权级,攻击面较大,安全性能较低。


技术实现要素:

5.本技术实施例提供了一种处理器、中断隔离方法、指令模拟方法、片上系统及设备,该处理器为基于risc-v架构的处理器,能够在实现不同执行环境隔离的同时,减小对可信固件与操作系统的攻击面,提升安全性能。所述技术方案如下:
6.第一方面,提供了一种处理器,所述处理器具有机器模式在内的两级特权,所述机器模式的执行域包括第一执行域和第二执行域,所述第一执行域的权限高于所述第二执行域,所述第一执行域对应的域标识存储在所述处理器内,所述域标识具有不同数值,所述处理器根据所述域标识的数值运行或退出所述第一执行域;
7.其中,可信固件运行在所述第一执行域内,所述处理器通过运行所述第一执行域,由所述可信固件提供安全服务;
8.至少两种执行环境的操作系统运行在所述第二执行域内,所述至少两种执行环境的操作系统通过pmp(physical memory protection,物理内存保护)锁进行隔离,所述处理器通过运行每种执行环境的操作系统对相应执行环境的指令进行处理。
9.第二方面,提供了一种中断隔离方法,所述方法应用第一方面所述的处理器,所述方法包括:
10.当接收到外部中断指令,所述处理器运行第一执行域,由所述可信固件确定所述外部中断指令对应的目标执行域;
11.将所述外部中断指令发送至所述目标执行域;
12.通过运行所述目标执行域执行所述外部中断指令。
13.第三方面,提供了一种指令模拟方法,所述方法应用第一方面所述的处理器,所述方法包括:
14.在目标应用程序运行过程中,当接收到所述目标应用程序的内部异常指令,所述处理器运行第一执行域,由所述可信固件获取所述内部异常指令的指令码;
15.将所述指令码更新到所述目标应用程序对应的上下文堆栈,以使所述目标应用程序能够从所述上下文堆栈中获取所述指令码。
16.第四方面,提供了一种片上系统,所述片上系统包括第一方面所述的处理器。
17.第五方面,提供了一种计算机设备,所述计算机设备包括片上系统、片外总线及存储器,所述片上系统与所述存储器通过所述片外总线连接;
18.所述片上系统如第三方面所述的片上系统;
19.所述存储器用于存储至少一条计算机程序,所述至少一条计算机程序被所述片上系统的处理器加载并执行,以实现第二方面所述的中断隔离方法,或,实现第三方面所述的指令模拟方法,
20.第六方面,提供了计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序被上述第一方面所述的处理器加载并执行,以实现第二方面所述的中断隔离方法,或实现第三方面所述的指令模拟方法。
21.第七方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被上述第一方面所述的处理器加载并执行,以实现第二方面所述的中断隔离方法,或实现第三方面所述的指令模拟方法。
22.本技术实施例提供的技术方案带来的有益效果是:
23.对于包括机器模式和用户模式的两级特权的处理器,为机器模式扩展一个新的执行域,即第一执行域,并存储该第一执行域的域标识。通过软硬件资源互相映射,使得处理器能够正常运行第一执行域。经过上述扩展后,机器模式的执行域包括第一执行域和第二执行域,其中可信固件运行在第一执行域,不同执行环境的操作系统运行在第二执行域。通过为机器模式的执行域配置不同的权限,使得操作系统及可信固件即便均处于机器模式,因权限级别不同,也不会同时受到攻击,减小了可信固件与操作系统受到攻击的攻击面,提升了处理器的安全性能。对于运行在第二执行域内的各种执行环境的操作系统,通过pmp锁实现了不同执行环境之间的隔离要求,满足了安全需求。且本技术维持了原有的软件架构,即可信固件和不同执行环境的操作系统运行在机器模式、不同执行环境的应用程序运行在用户模式,降低了软件设计的复杂度,提高了处理器的可应用性。
附图说明
24.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
25.图1是现有的一种两级特权的处理器的结构示意图;
26.图2是本技术实施例提供的一种两级特权的处理器的结构示意图;
27.图3是本技术实施例提供的一种基于两级特权的处理器的外部中断指令流转的示意图;
28.图4是本技术实施例提供的一种基于两级特权的处理器的内部异常指令流转的示
意图;
29.图5是本技术实施例提供的一种中断隔离方法的流程图;
30.图6是本技术实施例提供的另一种中断隔离方法的流程图;
31.图7是本技术实施例提供的一种指令模拟方法的流程图;
32.图8是本技术实施例提供的另一种指令模拟方法的流程图;
33.图9是本技术实施例提供的一种片上系统的结构示意图;
34.图10是本技术实施例提供的一种计算机设备的结构示意图。
具体实施方式
35.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
36.可以理解,本技术实施例所使用的术语“每个”、“多个”及“任一”等,多个包括两个或两个以上,每个是指对应的多个中的每一个,任一是指对应的多个中的任意一个。举例来说,多个词语包括10个词语,而每个词语是指这10个词语中的每一个词语,任一词语是指10个词语中的任意一个词语。
37.需要说明的是,本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
38.首先在执行本技术实施例之前,对本技术实施例中涉及的名词进行解释。
39.中断(interrupt)是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。
40.执行环境是指应用服务的运行环境。出于安全考虑,不同的应用服务需要运行在不同的执行环境。执行环境通常包括通用执行环境和可信执行环境。其中,通用执行环境用于运行通用操作系统和应用程序,比如linux操作系统、安卓操作系统等。可信执行环境用于运行对安全具有特殊要求的操作系统和应用程序,比如支付应用程序等。
41.可信固件是一个开源软件,运行在一个硬件隔离的安全环境中并提供安全服务。硬件隔离是指基于处理器的多核结构通过一个独立的处理器核来实现的安全隔离。安全服务包括执行域切换功能及中断拦截功能等。安全服务仅仅暴露出有限的接口,这样可以降低被攻击的概率。可信固件拥有自己的资源和唯一的执行线程,进一步降低了被攻击的概率。
42.寄存器是有限存贮容量的高速存贮部件,用来暂存指令、数据及地址。在处理器的控制部件中包含的寄存器包括指令寄存器和程序计数器;在处理器的算术及逻辑部件中包含的寄存器包括累加器。
43.多层特权模型是risc-v架构提供的另一种具有安全扩展能力的属性,包括三种工作模式,分别为m模式、s模式及u模式。m模式运行的是管理员执行环境,s模式运行的是操作系统,u模式运行的是应用程序。m模式具有最高权限,用于管理多个s模式环境的执行,并能
拦截来自任何s/u模式环境的中断和异常。一般来说,m模式为必选模式,s/u模式为可选模式,通过不同的模式组合,可实现不同的系统。在m模式下,可以通过pmp的锁定功能将m模式的访问限制在有限的物理内存区域内,比如只允许m模式访问、执行划分给可信固件的物理内存区域,以减少受到对m模式攻击的影响。该pmp的锁定功能可以为smap(supervisor memory access prevention,管理程序内存访问阻止)机制和smep(supervisor memory execution prevention,监督内存执行防止)机制,通过采用pmp的锁定功能,增加了对关键信息的保护。
44.pmp机制是risc-v架构提供的一种具有安全扩展能力的属性,用于隔离m模式与s/u模式下的内存访问。通常只有m模式才有权限配置pmp。pmp包含几组(通常是8到16个)地址寄存器以及相应的配置寄存器,这些配置寄存器可以授予或拒绝s/u模式对物理内存区域的读、写和执行权限。pmp同时也能保护内存映射i/o(mmio),m模式下的可信固件通过配置pmp来约束处理器对外设i/o的访问。pmp机制要求每个执行域都有一个pmp配置信息,每个执行域的pmp配置信息中写有相应物理内存区域允许的访问权限。当处理器从一个执行域切换到另一个执行域时,pmp配置信息由可信固件进行更新。具体来说,m模式下的可信固件先保存当前执行域的pmp配置信息,然后载入下一个即将切换的执行域的pmp配置信息,完成对内存和内存映射i/o(mmio)访问权限的切换。当多个执行域需要共享内存时,可以将需要共同访问的物理内存区域的访问权限同时授予给多个执行域,即将该块物理内存区域的允许访问权限写到每个执行域的pmp配置信息里。
45.出于成本和应用的考虑,risc-v处理器一般只设计m模式和u模式,其中,ree的os和tee的os运行在m模式,ree的应用程序和tee的应用程序运行在u模式。由于ree的os和tee的os均运行在m模式,因而无法实现ree和tee的隔离。为了实现ree和tee的隔离,现有技术对上述两级特权的处理器的软件架构进行改进,改进后的两级特权的处理器架构如图1所示。参见图1,改进后的两级特权的处理器将ree的os由m模式迁移至u模式,而保持可信固件和tee的os处于m模式。该改进后的两级特权的处理器虽然能够实现ree和tee的隔离,但是依然存在以下几方面的缺陷:
46.一方面,由于对原有的软件架构进行了改进,因而增加了软件设计的复杂度,同时增加了改进后处理器的应用难度。
47.另一方面,改进后的ree的os迁移到u态,这使得ree的os在执行特权操作(例如,中断隔离、对clic(core local interrupt controller,核内局部中断控制器)的访问、对csr(control and status registers,控制状态寄存器)的访问等)均需要先陷入到m模式,执行效率低下。
48.再一方面,改进后的tee的os与可信固件均运行在m模式,可能会同时受到攻击,攻击面较大,安全性能较低。
49.简言之,对于两个特权的处理器,如果采用原有的软件架构,则无法实现可信执行环境和通用执行环境的隔离,如果对原有的软件架构进行改进,则不仅增加了软件设计的复杂度,降低了系统的安全性能,而且对于ree侧来说,执行特权操作的效率低下。
50.为了解决现有技术中存在问题,本技术实施例提供了一种基于risc-v架构的处理器,该处理器具有两级特权,该两级特权包括机器模式和用户模式。首先,该基于risc-v架构具有两级特权的处理器,维持了原有的软件架构不变,即将处理器支持的至少两种执行
环境的操作系统,例如可行执行环境和通用执行环境等,运行在m模式,将至少两种执行环境的应用程序运行在u模式。由于未对软件架构进行改进,因而不会额外增加软件设计的复杂度,降低了处理器的应用难度。
51.再者,本技术实施例对m模式的执行域进行了扩展,从原来的执行域中扩展出一个新的执行域,即第一执行域,该第一执行域表示为root domain,此时m模式的执行域包括第一执行域和第二执行域。其中,可信固件运行在第一执行域,处理器运行第一执行域,由可信固件提供安全服务,该安全服务包括管理各个执行域的pmp配置信息、管理clic的访问权限、处理外部中断指令及内部异常指令等等。至少两种执行环境的操作系统运行在第二执行域,处理器通过运行每种执行环境的操作系统对相应执行环境的指令进行处理。
52.再者,本技术实施例还赋予第一执行域最高的权限,使得可信固件和至少两种执行环境的操作系统即便同时运行在模式,因具有不同的权限等级,而不会同时受到攻击,提升了系统的安全性能。且由于至少两种执行环境的操作系统均位于m模式,因而ree的os在执行特权操作时,无需陷入到m模式,提高了执行效率。
53.对于运行在第二执行域内的至少两种执行环境的操作系统,处理器还将为每种执行环境的操作系统添加pmp锁,使得至少两种执行环境的操作系统能够通过pmp锁实现隔离。通过添加pmp锁,不同执行环境的操作系统即便均处于m模式,也无法访问其他执行环境的内存,满足了安全的要求。
54.此处需要说明的是,虽然原有的具有两级特权的处理器的可信固件和不同执行环境的操作系统均运行在m模式,但是无法通过添加pmp锁实现隔离。原因在于,可信固件和不同执行环境的操作系统运行在同一执行域内,如果为不同执行环境的操作系统添加pmp锁,可信固件将无法访问各个执行环境的内存,导致处理器无法正常运行。本技术的技术方案之所以能够通过添加pmp锁实现不同执行环境的隔离,是因为本技术实施例扩展出一个新的执行域,并使不同执行环境的操作系统与可信固件运行在不同的执行域内,同时赋予可信固件所在执行域最高的访问权限,这样即便为不同执行环境的操作系统添加了pmp锁,具有最高权限的可信固件也可访问不同执行环境的内存。
55.为了支持软件层面上的改进,本技术实施例为机器模式下扩展出的第一执行域配置了域标识,该域标识可以表示为r。同时为该域标识设置不同的数值,包括第一数值和第二数值,该第一数值可以为1,第二数值可以为0,当然,第一数值和第二数值还可以为其他数值,只要能够指示出不同数值对应第一执行域的不同状态即可。进一步地,为便于后续应用,可将该域标识及当前数值存储在处理器的寄存器中。
56.在本技术实施例中,基于risc-v架构具有两级特权的处理器根据域标识的数值运行或退出第一执行域。设置域标识为第一数值时,该处理器运行该第一执行域;域标识为第二数值时,处理器退出第一执行域。计算机设备上电后,该处理器通过从寄存器中读取该域标记的数值,分时运行第一执行域,以执行相应指令。
57.在本技术实施例中,域标识的数值为第一数值的情况,包括但不限于以下任一项:
58.第一项、当设备上电时,处理器自动将该域标识的数值置为第一数值,来执行一些安全操作。
59.第二项、当外部中断源产生外部中断指令,平台级中断控制器接收到该外部中断指令,将该外部中断指令发送至处理器,当接收到外部中断指令,处理器自动将该与域标识
的数值置为第一数值,从而运行第一执行域,以执行该外部中断指令。
60.第三项、当内部访问异常时,会触发生成内部异常指令,处理器接收到该内部异常指令时,自动将该域标识的数值置为第一数值。
61.在本技术实施例中,为实现不同执行环境的操作系统的隔离,虽然会为运行在m模式的操作系统添加pmp锁,但是该pmp锁对第一执行域没有约束,无论每个执行域的pmp配置信息是否被锁住,当域标识的数值为第一数值时,处理器均可运行该第一执行域,由可信固件对各个执行域的pmp配置信息进行修改。其中,pmp配置信息用于指示处理器对相应执行域所映射的物理内存区域的访问权限。
62.通常处理器的csr中存储有各个执行域的上下文信息,该上下文信息为执行域运行过程需要的最小数据集合。该csr由运行在第一执行域内的可信固件进行管理。当处理器运行第一执行域,该可信固件即可对该csr中存储的各个执行域的上下文信息进行修改。
63.出于安全考虑,一般来说,只有m模式可以访问该csr。对于软件架构改进的两级特权的处理器,ree的os运行在u模式,无法访问该csr,需要陷入到m模式进行访问,访问效率较低。而本技术实施例未对软件架构进行改进,ree的os运行依然运行在m模式,这样,ree的os可直接访问该csr,访问效率较高。
64.本技术实施例中的处理器内集成有clic,该clic负责对处理器的局部中断进行管理。其中,局部中断也称为内部中断,risc-v架构规定的局部中断有两种,分别为计数器(timer)发起的中断和软件(software)发起的中断。当局部中断的中断源产生内部中断指令(即内部异常指令)后,可通过clic发送至处理器,由处理器对该内部中断指令进行处理。该clic的访问权限由可信固件初始化后通过pmp机制进行配置。一般来说,处理器运行第一执行域(root domain),由可信固件将clic的访问权限配置为禁止第一执行域外的其他执行域访问。当检测到任一执行环境的操作系统访问clic,处理器生成内部异常指令,响应于该内部异常指令,处理器运行第一执行域,执行内部异常指令。通过进行上述配置,ree的os和tee的os均无法正常访问clic,当检测到ree的os或tee的os访问clic,clic生成内部异常指令,触发处理器运行该root domain。
65.在本技术实施例中,至少两种执行环境包括可信执行环境和通用执行环境,每种执行环境的应用程序运行在用户模式。为实现内存隔离,可信执行环境的各个可信应用程序之间采用iopmp(input output physical memory protection,输入输出物理内存保护)或pmp进行隔离,用户模式的各个应用程序与可信执行环境的操作系统之间采用iopmp或pmp隔离,至少两种执行环境的操作系统之间采用pmp锁进行隔离。进一步地,为实现i/o隔离,处理器的物理内存区域与外设设备之间也采用iopmp进行隔离。
66.需要说明的是,上述pmp隔离面向的是内部处理器,iopmp隔离面向的是外设处理器。如果单独采用pmp进行隔离,由于pmp隔离针对的是内部处理器,无法阻止外设处理器的非法访问,因而需要采用iopmp对外设处理器进行隔离。
67.图2示出了本技术实施例提供的基于risc-v架构具有两级特权的处理器的结构示意图,参见图2,该处理器的两级特权包括机器模式和用户模式,处理器支持的执行环境包括ree和tee。其中,可信固件和ree的os即rtos(real time operating system,实时操作系统)及tee的os运行在s模式。s模式的执行域包括domain#0和domain#2,可信固件运行在domain#0(即root domain),rtos及tee的os运行在domain#2。ree的app(application,应用
程序)和tee的app运行在u模式,且u模式的执行域包括domain#1、domain#3、

、domain#n,其中,ree的app运行在domain#1,tee的app分别运行在domain#3、

、domain#n。
68.上述rtos与tee的os均添加了pmp锁,基于所添加的pmp锁实现了rtos与tee的os的隔离。可信固件并未添加pmp锁,且具有最高的访问权限,能够对clic进行管理、配置各个执行域的pmp配置信息等。可信固件与rtos及tee的os采用pmp或iopmp进行隔离;tee的os与tee的各个app之间采用pmp或iopmp进行隔离,tee的各个app之间采用pmp或iopmp进行隔离,ree的各个app与tee的各个app之间采用pmp或iopmp进行隔离。rtos与ree的各个app、ree的各个app以及可信固件与处理器的硬件资源(包括risc-v cores(risc-v架构核心)、iopmp、root of trust(可信根)、optional trusted hw(可选可信固件设计)等)之间可以进行隔离,也可以不进行隔离。如果进行隔离,则可采用pmp或iopmp进行隔离。
69.图3示出了采用本技术实施例提供的基于risc-v架构具有两级特权的处理器对外部中断指令的处理过程。参见图3,rtos和tee的os均运行在m模式,当ree侧或tee侧发生中断,平台级中断控制器将外部中断指令发送至处理器,处理器运行root domain进行响应,然后将外部中断指令发送至相应的执行域进行处理。如果是ree侧的中断,则转发至domain#2的rtos,由rtos执行该外部中断指令;如果tee侧的中断,则转发至domain#2的tee的os,由tee的os执行该外部中断指令。
70.图4示出了采用本技术实施例提供的基于risc-v架构具有两级特权的处理器对内部异常指令的处理过程。参见图4,rtos和tee的os不具有对clic的访问权限,当检测到rtos或tee的os访问clic,clic生成内部异常指令,响应于该内部异常指令,处理器运行root domain,由可信固件获取该内部异常指令的指令码,对该指令码进行解析,得到内部异常指令对应的操作数据,进而将该操作数据更新到异常访问前所运行的应用程序的上下文堆栈,使得应用程序可从该上下文堆栈中获取该操作数据。
71.本技术实施例提供的基于risc-v架构的处理器,在维持原有的软件架构不变的前提下,以极小的硬件代价(只需存储root domain的域标识),扩展了root domain,将可信固件(运行于root domain)和tee的os进行分离,减小攻击面,提升了安全性能。同时通过pmp锁特性,保证了tee的os和ree的os的安全隔离,且处理器运行root domain时,pmp锁对root domain无约束,使得可信固件可以修改各个执行域的pmp配置信息。同时扩展了中断/异常功能,当中断/异常发生时,处理器自动运行root domain;中断/异常退出时,处理器自动退出root domain,从而实现了对中断/异常的处理。另外,由于维持原有的软件架构不变,因而无需在可信固件中模拟csr特权指令,提升了执行效率,从而在两级特权的情况下,使得risc-v处理器拥有完整的安全能力。
72.参见图5,本技术实施例提供了一种中断隔离方法,该方法由基于risc-v架构具有两级特权的处理器执行,本技术实施例提供的方法流程包括:
73.501、当接收到外部中断指令,处理器运行第一执行域,由可信固件确定外部中断指令对应的目标执行域。
74.其中,外部中断指令是指由外部中断源发送的中断指令。外部中断指令中携带中断源标识,该中断源标识用于识别发送外部中断指令的中断源。通常不同的外部中断源具有不同的中断源标识。中断源标识可以采用中断序号。一些处理器最多支持1023个中断源采样,因而共有1至1023个中断源序号,这些中断源序号可以作为外部中断源的中断源标
识。
75.当接收到外部中断指令,处理器陷入到m模式,运行第一执行域。响应于该外部中断指令,可信固件保存当前运行的执行域的上下文信息,从外部中断指令中解析出中断源标识,进而基于该中断源标识,查询该目标中断源标识对应的目标执行域。然后,可信固件将pmp配置信息更新为目标执行域的pmp配置信息,并将所存储的当前执行域的域标识切换成目标执行域的域标识。进一步地,可信固件冲洗所有通用寄存器,即擦除所有通用寄存器内存储的当前运行执行域的上下文信息。
76.需要说明的是,通用寄存器作为处理器内重要的数据存储资源,存储当前执行域的上下文信息,避免了上下文信息存入内存后再读取内存的操作。由于寄存器的存取速度比内存快,因而能够在执行域的运行过程中使得操作数被快速读取出来。然而,由于通用寄存器的个数和容量都有限,因而通用寄存器只保存当前运行的执行域的上下文信息。这里可信固件冲洗所有通用寄存器,是为了使得通用寄存器供处理外部中断指令的执行域使用。
77.502、将外部中断指令发送至目标执行域。
78.可信固件将接收到的外部中断指令发送至目标执行域,由目标执行域内的操作系统执行该外部中断指令。
79.考虑到同一操作系统运行有多个应用程序,而该外部中断指令的执行只需要运行部分应用程序执行,因而需要确定出中断入口。其中,中断入口即用于处理外部中断指令的应用程序。
80.503、通过运行目标执行域执行外部中断指令。
81.可信固件执行mret指令退出当前运行的执行域,即第一执行域,跳转到中断入口,执行相应的中断处理函数。该中断函数执行完成后,可信固件通过ecall指令切换到第一执行域,由可信固件对前一个执行域的现场进行恢复。其中,现场恢复是指处理器在处理完中断指令后需要恢复到中断前的应用程序。
82.需要说明的是,上述mret指令和ecall指令为现有技术提供的、用于进行执行域切换的指令,其功能及作用与现有技术中功能及作用相同,此处不再赘述。
83.对于上述外部中断指令的处理流程,为了更直观地展示该外部中断指令的流转过程,下面将结合图6进行说明。
84.601、当接收到外部中断指令,处理器陷入m模式,运行root domain。
85.该外部中断指令可以为ree侧的中断源生成的中断指令,也可以为tee的中断源生成后中断指令。
86.602、响应于该外部中断指令,可信固件保存当前domain的上下文信息。
87.603、可信固件获取该外部中断指令的中断源标识,并基于该中断源标识,查询获取该中断所属的domain。
88.604、可信固件将pmp配置信息更新成该中断所属domain的pmp配置信息。
89.605、可信固件将当前domain的zone id(域标识)更新为该中断所属domain的zone id。
90.606、可信固件冲洗所有通用寄存器。
91.607、可信固件获取该中断所属的domain的中断入口。
92.608、可信固件执行mret指令,跳转到该中断所属的domain的中断入口。
93.609、执行该中断的中断处理函数。
94.610、当执行完该中断的中断处理函数,执行ecall指令切换到root domain。
95.611、可信固件对中断发生前的domain的现场进行恢复。
96.参见图7,本技术实施例提供了一种指令模拟方法,该方法由基于risc-v架构具有两级特权的处理器执行,本技术实施例提供的方法流程包括:
97.701、在目标应用程序运行过程中,响应于目标应用程序的内部异常指令,处理器运行第一执行域,由可信固件获取内部异常指令对应的操作数据。
98.其中,目标应用程序为当前运行的应用程序,该目标应用程序所属的执行环境可以为处理器支持的至少两种执行环境中的任一种。在该目标应用程序运行过程中,当检测到该目标应用程序非法访问,例如,访问clic的寄存器等,处理器生成针对该目标应用程序的内部异常指令,自动将第一执行域的域标识的数值置为第一数值,进而运行第一执行域。响应于该内部异常指令,可信固件保存当前执行域的上下文信息,并从mepc(machine exception program counter,机器异常程序计数器)寄存器中,获取内部异常指令的地址。其中,mepc寄存器用于存储异常指令的地址,mepc寄存器中所存储的异常指令的地址大小可以为16bit,还可以为32bit等。基于该内部异常指令的地址,可信固件可以获取该内部异常指令的指令码,通过对该指令码进行解析,得到该内部异常指令对应的操作数据。
99.进一步地,为了提高数据的安全性,还可基于可信固件所在的第一执行域的相关信息,对可信固件对内部异常指令的地址的访问权限进行校验。例如,可获取可信固件所在第一执行域的域标识,并将该域标识与预先设置的具有访问权限的执行域的域标识进行比较,如果该域标识属于具有访问权限的执行域的域标识,则允许可信固件访问该内部异常指令的地址。
100.702、将操作数据更新到目标应用程序对应的上下文堆栈,以使目标应用程序能够从上下文堆栈中获取操作数据。
101.可信固件将该内部异常指令对应的操作数据更新到目标应用程序对应的上下文堆栈中。由于该上下文堆栈能够为目标应用程序合法访问,因而目标应用程序可通过访问该上下文堆栈,获取到该内部异常指令对应的操作数据,从而通过对该操作数据进行分析,对该异常进行处理。
102.对于上述指令模拟流程,为了更直观地展示该内部异常指令的流转过程,下面将结合图8,以ree的os非法访问clic触发访问异常为例进行说明。
103.801、当检测到ree的os访问clic,clic触发访问异常,生成内部异常指令,处理器陷入m模式。
104.802、响应于该内部异常指令,可信固件保存当前domain的上下文信息。
105.803、可信固件从mepc寄存器中,获取该内部异常指令的地址。
106.804、可信固件基于该内部异常指令的地址,获取该内部异常指令的指令码。
107.可信固件在获取内部异常指令的指令码之前,可基于可信固件所在的第一执行域的相关信息,对可信固件对内部异常指令的地址的访问权限进行校验。
108.805、可信固件通过对该指令码进行解析,获取该内部异常指令对应的操作数据。
109.806、可信固件将该操作数据更新到运行的前一个domain的上下文堆栈。
110.807、可信固件恢复前一个domain的所有现场。
111.808、可信固件执行异常返回指令,切换到前一个domain,进而运行该前一个domain。
112.参见图9,本技术实施例提供了一种片上系统900,该片上系统900包括处理器901,该处理器901如上述实施例所述的处理器,该处理器901内部集成有clic。该处理器901用于在检测到目标应用程序clic的异常访问时,生成内部异常指令,响应于该内部异常指令,由可信固件获取该内部异常指令的指令码,通过对该指令码进行解析,得到内部异常指令对应的操作数据,进而将该操作数据更新到目标应用程序对应的上下文堆栈中,从而使得应用程序能够从该上下文堆栈中获取该操作数据。
113.参见图9,该片上系统900还包括中断控制器902和片内总线903。该处理器901与中断控制器902通过片内总线903进行连接。
114.其中,中断控制器902可以为平台级中断控制器等。该中断控制器902用于为外部中断源配置工作模式,并在接收到外部中断源发送的外部中断指令后,将该外部中断指令发送至处理器901。
115.处理器901用于接收外部中断指令,由可行固件确定出该外部中断指令对应的目标执行域,然后将该外部中断指令发送至目标执行域,进而通过运行该目标执行域执行该外部中断指令。
116.当然,片上系统900还可以根据需求布置其他部件,此处不再一一说明。
117.图10示出了本技术一个示例性实施例提供的一种计算机设备1000的结构框图。通常,计算机设备1000包括上述实施例所述的片上系统900、片外总线1002及存储器1003,该片上系统900与存储器1003通过片外总线1002连接。该片上系统900包括处理器901、中断控制器902及片内总线903。
118.其中,处理器901可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器901也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器901可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器901还可以包括人工智能处理器,该人工智能处理器用于处理有关机器学习的计算操作。
119.存储器1003可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是cd-rom(compact disc read-only memory,只读光盘)、rom、ram(random access memory,随机存取存储器)、磁带、软盘和光数据存储设备等。该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序被执行时能够实现中断隔离方法,或指令模拟方法。
120.当然,上述计算机设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理器和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于计算机设备和其他设备之间有线或无线方式的
通信等。
121.本领域技术人员可以理解,图10中示出的结构并不构成对计算机设备1000的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
122.本技术实施例提供了计算机可读存储介质,该计算机可读存储介质中存储有至少一条计算机程序,该至少一条计算机程序被上述处理器加载并执行,以实现中断隔离方法,或,实现指令模拟方法。
123.本技术实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序被上述处理器加载并执行,以实现中断隔离方法,或,指令模拟方法。
124.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
125.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。

技术特征:
1.一种处理器,所述处理器具有机器模式在内的两级特权,其特征在于,所述机器模式的执行域包括第一执行域和第二执行域,所述第一执行域的权限高于所述第二执行域,所述第一执行域对应的域标识存储在所述处理器内,所述域标识具有不同数值,所述处理器根据所述域标识的数值运行或退出所述第一执行域;其中,可信固件运行在所述第一执行域内,所述处理器通过运行所述第一执行域,由所述可信固件提供安全服务;至少两种执行环境的操作系统运行在所述第二执行域内,所述至少两种执行环境的操作系统通过物理内存保护pmp锁进行隔离,所述处理器通过运行每种执行环境的操作系统对相应执行环境的指令进行处理。2.根据权利要求1所述的处理器,其特征在于,所述域标识的数值包括第一数值和第二数值;当所述域标识的数值为第一数值时,所述处理器运行所述第一执行域;当所述域标识的数值为第二数值时,所述处理器退出所述第一执行域。3.根据权利要求2所述的处理器,其特征在于,所述域标识的数值为第一数值的情况包括以下任一项:当设备上电时,所述处理器将所述域标识的数值置为所述第一数值;当接收到外部中断指令时,所述处理器将所述域标识的数值置为所述第一数值;当接收到内部异常指令时,所述处理器将所述域标识的数值置为所述第一数值。4.根据权利2所述的处理器,其特征在于,当所述域标识的数值为第一数值时,所述处理器运行所述第一执行域,由所述可信固件对各个执行域的pmp配置信息进行修改,所述pmp配置信息用于指示所述处理器对相应执行域所映射的物理内存区域的访问权限。5.根据权利要求1所述的处理器,其特征在于,所述处理器包括控制状态寄存器crs,所述crs中存储有各个执行域的上下文信息;所述处理器运行所述第一执行域,由所述可信固件对所述crs中存储的各个执行域的上下文信息进行修改。6.根据权利要求1所述的处理器,其特征在于,所述处理器包括核内局部中断控制器clic,所述处理器运行所述第一执行域,由所述可信固件将所述clic的访问权限配置为禁止所述第一执行域外的其他执行域访问;当检测到任一种执行环境的操作系统访问所述clic,所述处理器生成内部异常指令,响应于所述内部异常指令,所述处理器运行所述第一执行域,执行所述内部异常指令。7.根据权利要求1所述的处理器,其特征在于,所述至少两种执行环境包括可信执行环境,所述两级特权还包括用户模式,每种执行环境的应用程序运行在所述用户模式;所述可信执行环境的各个可信应用程序之间采用输入输出物理内存保护iopmp或pmp进行隔离;所述用户模式的各个应用程序与所述可信执行环境的操作系统之间采用iopmp或pmp进行隔离。8.根据权利要求1所述的处理器,其特征在于,所述处理器的物理内存区域与外设设备之间采用iopmp进行隔离。9.一种中断隔离方法,其特征在于,所述方法应用权利要求1至8中任一项所述的处理
器,所述方法包括:当接收到外部中断指令,所述处理器运行第一执行域,由所述可信固件确定所述外部中断指令对应的目标执行域;将所述外部中断指令发送至所述目标执行域;通过运行所述目标执行域执行所述外部中断指令。10.一种指令模拟方法,其特征在于,所述方法应用权利要求1至8中任一项所述的处理器,所述方法包括:在目标应用程序运行过程中,响应于所述目标应用程序的内部异常指令,所述处理器运行第一执行域,由所述可信固件获取所述内部异常指令对应的操作数据;将所述操作数据更新到所述目标应用程序对应的上下文堆栈,以使所述目标应用程序从所述上下文堆栈中获取所述操作数据。11.一种片上系统,其特征在于,所述片上系统包括权利要求1至8中任一项所述的处理器。12.一种计算机设备,其特征在于,所述计算机设备包括片上系统、片外总线及存储器,所述片上系统与所述存储器通过所述片外总线连接;所述片上系统如权利要求10所述的片上系统;所述存储器用于存储至少一条计算机程序,所述至少一条计算机程序被所述片上系统的处理器加载并执行,以实现权利要求9所述的中断隔离方法,或,实现权利要求10所述的指令模拟方法。

技术总结
本申请提供了一种处理器、中断隔离方法、指令模拟方法、片上系统及设备,属于计算机技术领域。处理器基于RISC-V架构,其机器模式的执行域包括第一执行域和第二执行域,第一执行域的权限高于第二执行域,第一执行域对应的域标识存储在处理器内,处理器根据域标识的数值运行或退出第一执行域;可信固件运行在第一执行域内,处理器通过运行第一执行域,由可信固件提供安全服务;至少两种执行环境的操作系统运行在第二执行域内,至少两种执行环境的操作系统通过PMP锁进行隔离,处理器通过运行每种执行环境的操作系统对相应执行环境的指令进行处理。本申请在实现不同执行环境隔离的同时,减小对可信固件与操作系统的攻击面,提升了安全性能。了安全性能。了安全性能。


技术研发人员:陈志星 郑文斌
受保护的技术使用者:平头哥(上海)半导体技术有限公司
技术研发日:2023.04.28
技术公布日:2023/8/14
版权声明

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

飞行汽车 https://www.autovtol.com/

分享:

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

相关推荐