发明内容
有鉴于此,本公开旨在对多个执行域提供一种中断隔离技术,提高中断响应速度,解决现有技术中中断延迟较为明显的技术问题。
根据本公开的第一方面,提供一种片上系统,包括:
平台级中断控制器,用于将中断源配置为超级用户特权模式,并在接收到所述中断源发送的第一中断请求后生成第二中断请求,所述第二中断请求包括所述第一中断请求和第一域标识,所述第一域标识为所述中断源所属执行域的域标识;
处理器,用于在超级用户特权模式下分时运行多个执行域,以及,在接收到所述第二中断请求的情况下在当前运行执行域内根据所述第一域标识判断当前运行执行域是否为所述中断源所属的执行域,若当前运行执行域为所述中断源所属执行域则通过当前运行执行域处理所述第一中断请求;
片上总线,用于耦接所述平台级中断控制器和所述处理器。
可选地,所述第一中断请求携带有标识所述中断源的中断源标识;
所述平台级中断控制器包括中断使能寄存器,所述中断使能寄存器存储有中断使能信息,所述中断使能信息为对所述中断源配置中断目标的信息;
所述平台级中断控制器在接收到所述第一中断请求后,还用于根据所述中断源标识和所述中断使能信息确定所述中断源已配置的中断目标,根据所确定中断目标获取所述中断源所属的执行域,以及将所获取执行域的域标识作为所述第一域标识。
可选地,所述第一中断请求携带有标识所述中断源的中断源标识;
所述平台级中断控制器包括关联寄存器,所述关联寄存器存储有关联信息,所述关联信息为一个中断源的中断源标识和该中断源所属执行域的域标识进行关联后生成的信息;
所述平台级中断控制器在接收到所述中断源发送的所述第一中断请求后,还用于根据所述中断源标识和所述关联信息确定所述第一域标识。
可选地,所述处理器还用于:
在当前运行的执行域不为所述中断源所属执行域的情况下,通过当前运行的执行域将所述第一中断请求发送到运行在机器特权模式的可信固件,以便由所述可信固件管控所述中断请求。
可选地,其中,所述处理器的多个执行域分属于普通执行环境和可信执行环境,以及,普通执行环境的执行域和可信执行环境的执行域采用不同的域标识。
根据本公开的第二方面,提供一种外设处理器,该外设处理器用作目标处理器的中断源,经平台级中断控制器和所述目标处理器连接,其中,
所述外设处理器被所述平台级中断控制器配置为机器特权模式和超级用户特权模式中的一种;
所述外设处理器被所述平台级中断控制器配置为超级用户特权模式的情况下:
所述外设处理器发送的第一中断请求被所述平台级中断控制器转换为第二中断请求,所述第二中断请求包括所述第一中断请求和第一域标识,所述第一域标识为所述外设处理器在所述目标处理器内所属执行域的域标识;以及,
所述第二中断请求被所述目标处理器接收后,若所述目标处理器根据所述第一域标识确定当前运行执行域为所述外设处理器所属执行域,则所述外设处理器发送的第一中断请求通过所述目标处理器的当前运行执行域处理。
根据本公开的第三方面,提供一种中断隔离方法,用于实现第一中断请求在多个执行域间的隔离,生成所述第一中断请求的中断源被配置成超级用户特权模式,所述方法包括:
接收第二中断请求,所述第二中断请求包括所述第一中断请求和第一域标识,所述第一域标识为所述中断源所属执行域的域标识;
根据所述第一域标识判断当前运行的执行域是否为所述中断源所属的执行域;
在当前运行的执行域为所述中断源所属执行域的情况下通过当前运行的执行域处理所述第一中断请求。
可选地,根据所述第一域标识判断当前运行的执行域是否为所述中断源所属的执行域,包括:
获取第二域标识,所述第二域标识为当前运行的执行域的域标识;
判断所述第一域标识和所述第二域标识是否相同;
其中,所述第一域标识和所述第二域标识相同的情况下,当前运行的执行域为所述中断源所属的执行域。
可选地,所述中断隔离方法还包括:在当前运行的执行域不为所述中断源所属执行域的情况下,通过当前运行的执行域将所述第一中断请求发送到运行在机器特权模式的可信固件,以便由所述可信固件管控所述第一中断请求。
可选地,多个执行域分属于普通执行环境和可信执行环境,以及,普通执行环境的执行域和可信执行环境的执行域采用不同的域标识。
根据本公开的第四方面,提供一种计算机设备,包括:如第一方面所述的任一种片上系统;片外总线;通过所述片外总线与所述片上系统耦接的存储设备。
本公开实施例中,中断源不再配置为机器特权模式,而是被平台级中断控制器配置为超级用户特权模式,以便中断源发送的中断请求允许直接通过执行域处理;并且,平台级中断控制器将第一中断请求扩展成包括第一中断请求和第一域标识的第二中断请求,第一域标识为中断源所属执行域的域标识,因而处理器在接收到第二中断请求后,在当前运行执行域内即可根据第一域标识确定当前运行的执行域是否为中断源所属的执行域。若处理器确定当前运行的执行域为中断源所属的执行域,则直接通过当前运行的执行域处理所述第一中断请求,这不仅确保了第一中断请求被中断源所属的执行域处理,实现了中断隔离;而且使得第一中断请求无需可信固件来转发,从而省去了对执行域上下文进行切换所耗费的时间,提高了中断响应速度,解决了现有技术中中断延迟较为明显的技术问题。
具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
安全拓展后的RISC-V处理器
未经安全拓展的RISC-V处理器并没有提供类似ARM TrustZone的隔离技术,这类处理器整体运行在普通执行环境(Rich Execution Environment,简称REE),如图1所示。参照图1,该类处理器中,软件栈的结构分为多层,具体包括SEE(Supervisor ExecutionEnvironment,管理员执行环境)、OS(operating system,操作系统)和APP(application,应用程序);特权级包括机器特权模式(Machine Mode,简称M模式)、超级用户特权模式(Supervisor Mode,简称S模式)和普通用户特权模式(User Mode,简称U模式),其中,普通用户特权模式运行的是APP,超级用户特权模式运行的是OS,机器特权模式运行的是SEE,普通用户特权模式内的多个APP之间以及普通用户特权模式和超级用户特权模式之间通过内存管理单元(Memory Management Unit,简称MMU)实现隔离,普通用户特权模式/超级用户特权模式与机器模式之间通过物理内存保护机制实现隔离。
实际上,RISC-V技术提供了两种具备安全扩展能力的属性,即以上提及的物理内存保护机制和机器特权模式,其中,物理内存保护机制可以把处理器的访问空间划分出任意大小的物理内存区域,不同的区域可以授予不同的访问权限,并且物理内存保护机制可以将多个超级用户特权模式的运行环境相互分离;机器特权模式,可用于管理多个超级用户特权模式的运行环境,并能拦截来自任何普通用户特权模式/超级用户特权模式中运行环境的中断和异常。有了物理内存保护机制和机器特权模式,这就意味着:超级用户特权模式的运行环境可以相互隔离以及超级用户特权模式环境可以通过更高层的特权(即机器模式)来管理。基于此,RISC-V处理器得以安全拓展。
具体地,安全拓展后的RISC-V处理器在软件的协调下虚拟出多个执行域(Zone),每个执行域增加了域标识(Zone ID),整体架构如图2所示,其中,“Zone#0”、“Zone#1”和“Zone#N”即为域标识,(N+1)表示执行域的总数。每个执行域可以独立地运行各自的操作系统以及基于该操作系统的应用程序。操作系统运行在超级用户特权模式,应用程序运行在普通用户特权模式。处理器根据需要在不同的执行域间切换且分时运行在不同的执行域里。当处理器切换到某一执行域运行时,它将实时占用整个处理器核,并且处理器的域标识也将同时被更新成相应执行域的标识。执行域的切换由运行在机器模式下的可信固件(Trusted Firmware,简称TF)来完成,执行域之间的访问隔离通过物理内存保护机制实现。
上述可信固件,是一个开源软件,运行在一个硬件隔离的安全环境中并提供安全服务。硬件隔离例如有基于处理器的多核结构而通过一个独立的处理器核来实现安全隔离。安全服务例如有以上所述的执行域切换功能,又例如有以上所述的中断拦截功能。安全服务仅仅暴露出有限的接口,这样可以降低被攻击的概率。可信固件拥有自己的资源和唯一的执行线程,进一步降低了被攻击的概率。
上述物理内存保护机制要求各个执行域设有配置寄存器,配置寄存器存储的PMP配置信息限定了对应执行域允许访问的内存或内存映射I/O。当多个执行域需要共享内存时,可以将需要共同访问的内存区域的访问权限同时授予给多个执行域,也就是将该块内存的允许访问权限写到每个执行域的PMP配置信息里。在处理器从一个执行域切换到另一个执行域时,机器模式下的可信固件需要先保存当前执行域的PMP配置信息,然后载入下一个即将切换到的执行域的PMP配置信息,完成对内存或内存映射I/O访问权限的切换,即执行了PMP配置的切换。PMP配置的切换使得当前运行的执行域只能访问限定的内存或内存映射I/O,从而实现了多个执行域间内存或内存映射I/O的访问隔离乃至可执行指令的隔离。
进一步,除了涉及超级用户特权模式和普通用户特权模式的执行域通过物理内存保护机制实现隔离外,机器模式也可以通过物理内存保护机制的锁定功能将机器模式的访问限制在有限的区域内,比如只允许机器模式下的可信固件访问/执行划分给可信固件的内存区域(如图2所示的执行域Zone#N中的内存区域,图2所示的执行域Zone#N中SecurePartition(安全单元)是可信固件的运行单元,可信固件提供的各种安全服务按类别被分组在一个个安全分区中,常见的安全分区有提供安全存储服务的分区、提供加解密服务的分区和提供初始化证明服务的分区等),这样能够减少机器模式受到的攻击,从而使得机器模式下控制的各种关键信息得以保护。
参照图2,各执行域内多个APP之间以及普通用户特权模式和超级用户特权模式之间可以如图1所示通过MMU实现隔离,另一些实施例中也可以通过超级用户特权模式可配置的物理内存隔离技术(SPMP)实现隔离。
安全拓展后的RISC-V处理器对中断的现有响应过程
执行域之间除了指令执行和内存访问需要隔离以外,中断资源也需要相互隔离。参照图3,安全拓展后的RISC-V处理器中,隔离中断资源的现有方法是将所有的中断源都配置成机器特权模式,因而来自处理器外部各个中断源的中断请求(本公开中中断源生成的中断请求亦称为第一中断请求,以区别于平台级中断控制器扩展第一中断请求而生成的包括第一域标识的第二中断请求)都会先自陷到机器特权模式当中,然后由运行在机器特权模式的可信固件统一管控所有的中断请求。对于各个中断请求,可信固件在识别出中断源后会将其“转发”到中断源所属的执行域内,以完成中断响应。图3中,发送中断请求1的中断源属于执行域Zone#0,发送中断请求2的中断源属于执行域Zone#1,发送中断请求3的中断源属于执行域Zone#N。
一些示例中,中断请求携带有标识中断源的中断源标识,可信固件在接收到中断请求后解析中断请求即可获取中断源标识,从而能够根据中断源标识来识别发送中断请求的中断源。中断源标识可以采用中断源序号。一些处理器最多支持1023个中断源采样,因而共有1至1023这样1023个中断源序号,这些中断源序号则可以一一作为对应中断源的中断源标识。
上述机器模式执行中断响应的过程可以参照图4。图4所示为处理器当前运行在执行域Zone#0,可信固件先后接收到中断请求1和中断请求2,其中,发送中断请求1的中断源属于执行域Zone#0,发送中断请求2的中断源属于执行域Zone#1,因而对于中断源所属执行域和当前运行执行域相同的中断请求,可以参照中断请求1的响应过程;对于中断源所属执行域和当前运行执行域不同的中断请求,可以参照中断请求2的响应过程。
图4所示的机器模式执行中断响应的整个过程,包括:
步骤S110,处理器当前运行在执行域Zone#0。
步骤S120,可信固件在处理器运行在执行域Zone#0的情况下,接收到自陷到机器模式的中断请求1。
步骤S131,可信固件保存执行域Zone#0的上下文。
具体地,一个执行域的上下文为该执行域运行过程中需要的最小数据集合。执行域Zone#0的上下文存储在通用寄存器中,可信固件保存执行域Zone#0的上下文,是指:可信固件读取通用寄存器以获取执行域Zone#0的上下文,并将获取的执行域Zone#0的上下文保存在自身的内存区域中。
步骤S132,可信固件获取中断请求1携带的中断源标识,并根据获取的中断源标识确定中断源所属的执行域为执行域Zone#0。
具体地,可信固件的内存区域中存储有中断源标识和中断源所属执行域的域标识关联后生成的关联关系表,因而在获取到中断源标识后通过查询该关联关系表即可确定中断源所属的执行域。
步骤S133,可信固件根据确定的执行域Zone#0切换PMP配置信息和域标识。
需要说明的是,切换PMP配置信息和域标识,即将PMP配置信息和域标识从当前运行的执行域切换到处理中断请求的执行域。这里由于中断请求1的中断源所属执行域和当前运行执行域相同,因而PMP配置信息和域标识在切换前后是一样的。
步骤S134,可信固件冲洗所有通用寄存器。
具体地,可信固件冲洗所有通用寄存器,即擦除所有通用寄存器内存储的当前运行执行域的上下文。
需要说明的是,通用寄存器作为处理器内重要的数据存储资源,存储执行域的上下文,避免了上下文存入内存后再读取内存的操作,由于寄存器的存取速度比内存块,因而能够在执行域的运行过程中使得操作数被快速读取出来。然而,由于通用寄存器的个数和容量都有限,因而通用寄存器只保存当前运行的执行域的上下文。这里可信固件冲洗所有通用寄存器,是为了使得通用寄存器供处理中断请求的执行域使用。
步骤S135,可信固件获取中断请求1在执行域Zone#0(即中断源所属执行域)内的中断入口。
需要说明的是,中断入口是指中断处理程序,中断处理程序是中断请求所要求处理的紧急事件在处理过程中需要处理器运行的程序。参照图2,一个执行域中会运行操作系统还会运行多个不同的应用程序,中断处理程序通常只是执行域内运行的部分程序(从操作系统内的部分程序开始执行,一些情况下还涉及到部分应用程序),因而需要确定中断请求在中断源所属执行域内的中断入口。
步骤S136,可信固件通过执行mret指令退出机器特权模式的运行且跳转到执行域Zone#0(即中断源所属执行域)的中断入口。
步骤S140,执行域Zone#0执行中断请求1对应的中断处理程序;
步骤S137,通过执行域Zone#0执行sret指令使得超级用户特权模式的运行退出且处理器跳转到可信固件的运行,继而可信固件将步骤S131保存的执行域Zone#0的上下文恢复到通用寄存器中,并且可信固件通过执行mret指令使得机器特权模式的运行退出且使得处理器跳转到执行域Zone#0的运行。
需要说明的是,上述sret指令和mret指令是RISC-V架构中定义的一组退出指令,该组退出指令还包括由普通用户特权模式执行的uret指令,这些退出指令执行后实现上述提及的功能属于现有技术,这里不进行详述,
步骤S150,执行域Zone#0继续运行被中断请求1中断的程序。
应当理解的是,由于步骤S37将步骤S31保存的执行域Zone#0的上下文恢复到通用寄存器中,因而这里能够通过直接从通用寄存器中读取操作数使得执行域Zone#0继续运行,而不是从头开始运行。
步骤S160,在处理器运行在执行域Zone#0的情况下,可信固件接收自陷到机器模式的中断请求2。
步骤S171,可信固件保存执行域Zone#0的上下文。
需要说明的是,由于步骤S50中执行域Zone#0继续运行被中断请求1中断的程序,因而步骤S71保存的上下文和步骤S31保存的上下文是不一样的。
步骤S172,可信固件获取中断请求2携带的中断源标识,并根据获取的中断源标识确定中断源所属的执行域为执行域Zone#1。
步骤S173,可信固件根据确定的执行域Zone#1切换PMP配置信息和域标识。这里切换后的PMP配置信息和域标识对应执行域Zone#1,即PMP配置信息和域标识在切换前后是不一样的。
步骤S174,可信固件冲洗所有通用寄存器。
步骤S175,可信固件获取中断请求2在执行域Zone#1内的中断入口。
步骤S176,可信固件通过执行mret指令退出机器特权模式的运行且跳转到执行域Zone#0(即中断源所属执行域)的中断入口。
步骤S180,执行域Zone#1执行中断请求1对应的中断处理程序;
步骤S177,执行域Zone#1通过执行sret指令使得超级用户特权模式的运行退出且使得处理器跳转到可信固件的运行,继而可信固件将步骤S171保存的执行域Zone#0的上下文恢复到通用寄存器中,并且可信固件通过执行mret指令使得机器特权模式的运行退出且处理器跳转到执行域Zone#0的运行。
步骤S190,执行域Zone#0继续运行被中断请求2中断的程序。
在物联网领域,经常涉及到紧急事件的处理,中断是必不可少的,或者如中断请求1申请的中断,或者如中断请求2申请的中断。例如,当一台打印机完成了打印任务时,和打印机通信连接的计算机需要要立即提醒用户打印结束。该过程中,打印机这一外设在完成了打印任务时要先向计算机的处理器提出中断申请,即要求处理器停止当前运行的程序以便及时提醒用户,其中,打印机向计算机的处理器提出的中断申请即上述中断请求,打印机即为中断源。参照图2,对于安全拓展后的RISC-V处理器来说,打印机发送的中断请求是由执行域Zone#0处理,若处理器当前运行在执行域Zone#0,则需要执行域Zone#0中断自己当前运行的程序(例如“Foxmail”这一应用程序)后生成提醒用户打印结束的信息并控制显示器显示;若处理器当前运行在执行域Zone#0以外的执行域(例如在执行域Zone#1内运行网银程序),则需要当前运行的执行域中断执行的程序并跳转到执行域Zone#0以便生成提醒用户打印结束的信息并控制显示器显示。
由于处理器分时运行在不同的执行域,且处理器在何时接收到何种中断请求是不固定的,因而可信固件既会接收到中断源所属执行域和当前运行执行域相同的中断请求(如上述中断请求1),也会接收到中断源所属执行域和当前运行执行域不同的中断请求(如上述中断请求2)。在以上所述的中断响应过程中,中断请求1和中断请求2皆自陷到机器特权模式,处于机器特权模式的可信固件采用统一的流程响应中断请求1和中断请求2,各个中断请求只被其中断源所属的执行域处理,即实现了不同执行域间的中断隔离。然而,这种通过可信固件采用统一流程响应中断请求的方法,各个中断请求皆由运行在机器特权模式的可信固件来转发,可信固件在转发各个中断请求的过程中都要执行多个处理步骤(如步骤S131至步骤S136乃至步骤S137,或者如步骤S171至步骤S176乃至步骤S177),处理过程耗时,各个中断请求的响应都非常缓慢,因而导致了明显的中断延迟。
一些示例中,通过软件配置使得步骤S132执行且在步骤S132执行后确定中断源所属执行域和当前运行执行域相同,则不执行上述步骤S31、S33、S34和S37,但由于中断请求皆是先自陷到机器特权模式,因而上述步骤S35和S36是不可缺少的,即不可缺少由机器特权模式到超级用户特权模式的跳转步骤,因而中断延迟仍然较为明显。
本公开实施例提供的片上系统
RISC-V架构中,中断被分为两类,即全局中断和局部中断。图5所示为基于RISC-V的计算机设备中中断源到处理器的连接结构示意图。参照图5,局部中断,即内部中断,RISC-V标准规定了局部中断只有两种,即计数器(Timer)发起的中断和软件(Software)发起的中断,局部中断的中断源通过CLINT(Core-Local Interruptor,处理器核局部中断控制器)和处理器连接;全局中断,也就是所谓的外部中断,外设发起的中断统统都是外部中断,包括通过GPIO(通用输入/输出端口)、SPI(串行外设接口)以及I2C(串行传输总线)连接的外设所发起的中断,外部中断的中断源通过PLIC(Platform Level InterruptController,平台级中断控制器)和处理器连接。CLINT和PLIC最大的区别在于,CLINT没有仲裁,一接收到中断请求马上响应;PLIC需要一个仲裁决定的过程,即决定哪个中断请求先被响应,存在中断优先级的配置问题。
PLIC除了用于配置外部中断源的中断优先级外,还用于配置外部中断源的特权模式以及中断目标。在以上所述的现有中断响应方法中,PLIC将所有外部中断源的特权模式都配置为机器特权模式,因而各个外部中断源发送的中断请求经PLIC后自陷到处理器的机器特权模式内。PLIC配置外部中断源的中断目标是通过中断使能寄存器实现的。
具体地,处理器中每个中断目标对每个中断源均有一个中断使能位,可用于使能对应中断,所述的中断使能位即中断使能寄存器中的一个存储位(一个中断目标对一个中断源的中断使能位是使能寄存器中哪一个存储位,是通过地址寄存器配置的)。一些计算机设备中,中断使能位为1时,表示中断使能,即中断源能够将中断目标中断;中断使能位为0时,表示中断屏蔽,即中断源不能将中断目标中断。本公开中,一个中断源的所有中断使能位称为该中断源的中断使能信息,这样中断使能信息对中断源配置了中断目标。中断目标可以是硬件隔离技术中一个被隔离的处理器核,还可以是软件隔离技术中一个被隔离的执行域中运行的操作系统。一些计算机设备实现的PLIC基本功能最多支持4个处理器核的中断分发或8个操作系统的中断分发,因而一个中断源的中断使能信息包括4个或8个中断使能位。
本公开主要针对外部中断改进中断隔离方法,使得中断请求在多个执行域间隔离的基础上,达到缓解中断延迟的技术效果。在没有特别提及的情况下,本公开所述的中断即外部中断,中断源即外设。为了缓解外部中断的中断延迟,本公开主要对图5所示的PLIC和处理器进行了改进,提供了一种图6所示的片上系统。
参照图6,本公开提供的片上系统100包括片上总线110和通过片上总线110耦接的PLIC 120和处理器130,其中,PLIC 120不再如现有技术将所有中断源配置为机器特权模式,而是将所有中断源配置为超级用户特权模式,这样使得中断源发送的第一中断请求Req被处理器130接收后不再通过可信固件转发来进入超级用户特权模式下运行的执行域,而是允许直接被执行域处理。PLIC 120还用于扩展中断源发送的第一中断请求Req以生成第二中断请求Req',第二中断请求Req'包括第一中断请求Req和第一域标识Zone IDx,第一域标识Zone IDx为中断源所属执行域的域标识。处理器130用于接收第二中断请求Req',并在接收到第二中断请求Req'后通过当前运行执行域根据第一域标识Zone IDx判断当前运行的执行域是否为中断源所属的执行域,以及,在当前运行的执行域为中断源所属执行域的情况下直接通过当前运行的执行域处理中断请求Req,即中断请求Req直接被对应执行域处理,中断请求Req被隔离的基础上得到快速处理,中断延迟的问题得到有效缓解。
基于上述片上系统100,作为处理器130中断源的外设也存在相应改进。具体地,外设处理器可能既作为上述处理器130的中断源而向上述处理器130发送中断请求,又作为一些传统处理器的中断源而向传统处理器发送中断请求,这样外设处理器会被传统处理器配套设置的平台级中断控制器配置为机器特权模式,而被上述处理器130配套设置的PLIC120配置为超级用户特权模式。外设处理器在被PLIC120配置为超级用户特权模式的情况下,外设处理器发送的第一中断请求Req是先被PLIC 120转换为第二中断请求Req';然后,在第二中断请求Req'被处理器130接收后,若处理器130根据第一域标识IDx确定当前运行执行域为外设处理器所属执行域,则外设处理器发送的第一中断请求Req直接通过处理器130的当前运行执行域处理。
具体地,处理器130在运行过程中配设有一个域标识,正如以上相关内容所述,处理器130的域标识为当前运行的执行域的域标识,以下称为第二域标识。基于此,处理器130根据第一域标识Zone IDx判断当前运行的执行域是否为中断源所属的执行域,可以是:获取第二域标识,并判断第一域标识Zone IDx和第二域标识是否相同,其中,若第一域标识Zone IDx和第二域标识相同,则当前运行的执行域为中断源所属的执行域;若第一域标识Zone IDx和第二域标识不同,则当前运行的执行域不是中断源所属的执行域。
在一个可选的实施例中,第一中断请求Req携带有标识中断源的中断源标识(中断源标识亦称中断标识,即Interrupt ID),PLIC 120在接收到第一中断请求Req后根据中断源标识和以上所述的中断使能信息能够确定中断源配置的中断目标,PLIC 120进一步根据确定的中断目标来获取中断源所属的执行域,这可以是PLIC120通过查询中断目标和执行域间的对应关系表实现。对于中断目标为执行域中运行的操作系统来说,由于操作系统和执行域具有一一对应的关系,因而PLIC 120能够通过现有技术中存在的信息确定中断源所属的执行域;对于中断目标为处理器核来说,由于在安全拓展技术中处理器核通常对应一个执行域,因而PLIC 120也能够通过现有技术中存在的信息确定中断源所属的执行域。PLIC 120在获取了中断源所属的执行域后,即可以将所获取执行域的域标识作为上述第一域标识Zone IDx,从而完成了第一域标识Zone IDx的确定过程。
在另一个可选的实施例中,第一中断请求Req携带有标识中断源的中断源标识,PLIC 120增设关联寄存器,关联寄存器存储有关联信息,关联信息为一个中断源的中断源标识和该中断源所属执行域的域标识进行关联后生成的信息,因而PLIC 120在接收到中断源发送的第一中断请求Req后根据中断源标识和关联信息即可直接确定第一域标识ZoneIDx。需要说明的是,在同一时间一个中断源只允许配置一个中断目标,而中断目标对应唯一的执行域,因而中断源和执行域之间是一一对应的关系,上述关联信息为中断源标识和域标识之间一一对应的关系。
进一步,处理器130还用于在当前运行的执行域不为中断源所属执行域的情况下,将第一中断请求Req发送到运行在机器特权模式的可信固件,以便由可信固件管控第一中断请求Req。需要说明的是,处理器130根据第一域标识Zone IDx判断当前运行的执行域是否为中断源所属的执行域,是由其内当前运行的执行域处理的,这里在当前运行的执行域不为中断源所属执行域的情况下,是当前运行的执行域将第一中断请求Req发送到机器特权模式的可信固件。
本公开提供的片上系统100,在依次接收到图3所示的中断源发送来的中断请求1、中断请求2和中断请求3的情况下,若处理器130当前运行在执行域Zone#0,则如图7所示,中断请求1直接被执行域Zone#0处理,中断请求2和中断请求3是被发送到机器特权模式内;若处理器130当前运行在执行域Zone#1,则中断请求2直接被执行域Zone#1处理,中断请求1和中断请求3是被发送到机器特权模式内;若处理器130当前运行在执行域Zone#N,则中断请求3直接被执行域Zone#N处理,中断请求1和中断请求2是被发送到机器特权模式内。
处理器130当前运行执行域不为中断源所属执行域的情况下,可信固件管控第一中断请求Req的过程如现有技术。对于图4的中断请求1和中断请求2,本公开提供的片上系统100通过图8所示过程相应。参照图8,片上系统100响应中断请求1和中断请求2的过程包括:
步骤S210,处理器130当前运行在执行域Zone#0。
步骤S220,执行域Zone#0接收到中断源被配置为超级用户特权模式的中断请求1。
应当理解的是,PLIC 120将扩展后的中断请求1发送到处理器130后,由于中断请求1的中断源被配置为超级用户特权模式,因而处理器130内当前运行的执行域Zone#0直接接收中断请求1。
步骤S230,执行域Zone#0执行中断请求1对应的中断处理程序。
具体地,针对扩展后的中断请求1,执行域Zone#0如上所述要根据第一域标识Zone#0判断执行域Zone#0是否为中断源所属的执行域,并在确定执行域Zone#0为中断源所属的执行域的情况下直接执行中断请求1对应的中断处理程序。
步骤S240,可信固件在处理器运行在执行域Zone#0的情况下,接收自陷到机器模式的中断请求2。
具体地,执行域Zone#0运行的过程中,扩展后的中断请求2由PLIC 120发送到处理器130,执行域Zone#0确定当前运行的执行域不为中断请求2的中断源所属执行域,则将中断请求2发送到运行在机器模式的可信固件,从而可信固件接收自陷到机器模式的中断请求2。
可信固件接收到中断请求2后,如现有技术,执行如下步骤S251至步骤S256以及步骤S257,执行域Zone#1执行域在步骤S256和步骤S257之间执行如下步骤S26:
步骤S251,可信固件保存执行域Zone#0的上下文。
步骤S252,可信固件获取中断请求2携带的中断源标识,并根据获取的中断源标识确定中断源所属的执行域为执行域Zone#1。
步骤S253,可信固件根据确定的执行域Zone#1切换PMP配置信息和域标识。这里切换后的PMP配置信息和域标识对应执行域Zone#1,即PMP配置信息和域标识在切换前后是不一样的。
步骤S254,可信固件冲洗所有通用寄存器。
步骤S255,可信固件获取中断请求2在执行域Zone#1内的中断入口。
步骤S256,可信固件通过执行mret指令退出机器特权模式的运行且跳转到执行域Zone#0的中断入口。
步骤S260,执行域Zone#1执行中断请求2对应的中断处理程序;
步骤S257,执行域Zone#1通过执行sret指令使得超级用户特权模式的运行退出且使得处理器跳转到可信固件的运行,继而可信固件将步骤S251保存的执行域Zone#0的上下文恢复到通用寄存器中,并且可信固件通过执行mret指令使得机器特权模式的运行退出且处理器跳转到执行域Zone#0的运行。
步骤S270,执行域Zone#0继续运行被中断请求2中断的程序。
以上所述的片上系统100使得中断请求在不同执行域间实现了隔离,而且中断源所属执行域和当前运行执行域相同的中断请求得到了及时响应。
一些使用场景中,处理器130会被隔离出REE(Rich Execution Environment,普通执行环境)和TEE(Trusted Execution Environment,可信执行环境)两个执行环境,即处理器130的执行域分属于REE和TEE,其中,REE运行传统复杂的操作系统,比如Android或图2中所示的Linux,常规任务都在REE里完成,REE占据了处理器的绝大部分运行时间;TEE运行精简、轻便的安全操作系统,比如图2所示的Secure OS,只有少量的安全任务(如加解密服务)会在TEE里完成,TEE占据处理器少量的运行时间。该使用场景中,普通执行环境的执行域和可信执行环境的执行域采用不同的域标识。这样设置后:(1)在处理器130运行在普通执行环境的情况下,若中断源属于普通执行环境,则第一中断请求允许直接被普通执行环境处理;若中断源属于可信执行环境,则第一中断请求需要经过可信固件转发到可信执行环境之后再由可信执行环境进行处理。由于处理器绝大部分时间都是运行在普通执行环境,因而第一中断请求常常可以被直接处理,不会带来中断延迟。(2)在处理器130运行在可信执行环境的情况下,若中断源属于可信执行环境,则第一中断请求允许直接被可信执行环境处理;若中断源属于普通执行环境,则第一中断请求需要经过可信固件转发到普通执行环境之后再由普通执行环境进行处理。由于可信执行环境的第一中断请求能够直接在可信执行环境下进行处理,这也减少了第一中断请求因自陷到可信固件而造成的中断延迟的概率。
本公开实施例提供的中断隔离方法
图9所示为本公开实施例提供的中断隔离方法的流程图,中断隔离方法由以上所述的处理器130执行。该方法中,生成中断请求的中断源被配置成超级用户特权模式,且如图9所示的包括以下步骤:
步骤S10,接收第二中断请求,第二中断请求包括第一中断请求和第一域标识,第一域标识为中断源所属执行域的域标识;
步骤S20,根据第一域标识判断当前运行的执行域是否为中断源所属的执行域;
步骤S30,在当前运行的执行域为中断源所属执行域的情况下通过当前运行的执行域处理第一中断请求。
本公开实施例的中断隔离方法,使得中断源所属执行域和当前运行执行域相同的第一中断请求直接被执行域处理,无需自陷到可信固件而由可信固件转发,因而中断响应及时,这也减少了第一中断请求因自陷到可信固件而造成的中断延迟的概率。
在可选的实施例中,步骤S20,根据第一域标识判断当前运行的执行域是否为中断源所属的执行域,包括:获取第二域标识,第二域标识为当前运行的执行域的域标识;判断第一域标识和第二域标识是否相同;其中,第一域标识和第二域标识相同的情况下,当前运行的执行域为中断源所属的执行域。
在可选的实施例中,中断隔离方法还包括:在当前运行的执行域不为所述中断源所属执行域的情况下,通过当前运行的执行域将所述第一中断请求发送到运行在机器特权模式的可信固件,以便由所述可信固件管控所述中断请求。
在可选的实施例中,多个执行域分属于普通执行环境和可信执行环境,以及,普通执行环境的执行域和可信执行环境的执行域采用不同的域标识。
本公开实施例提供的中断隔离方法,其执行的各步骤的详细过程可以参照以上所述的片上系统,这里不再赘述。
片上系统的具体应用
图10是通用计算机设备的结构示意图。如图上所示,计算机设备10可以包括一个或多个处理器12以及存储器14。其中,针对一个处理器12,一些示例中,计算机设备10配置一个位于该处理器12之外的PLIC(图10未示出),PLIC通过总线11以及通信设备18和外部中断源连接,上述实施例提供的片上系统100即为这里计算机设备10包括的处理器12和为处理器12配置的连接处理器12的PLIC;另一些示例中,处理器12内部集成有PLIC,上述实施例提供的片上系统100可用作这里的集成有PLIC的处理器12。
计算机设备10中的存储器14可以主存储器(简称为主存或内存)。用于存储由数据信号表示的指令信息和/或数据信息,例如存放处理器12提供的数据(例如为运算结果),也可以用于实现处理器12与外部存储设备17(或称为辅助存储器或外部存储器)之间的数据交换。
在一些情形下,处理器12可能需要访问存储器14,以获取存储器14中的数据或对存储器14中的数据进行修改。由于存储器14的访问速度较慢,为了缓解处理器12与存储器14之间的速度差距,计算机设备10还包括与总线11耦合的高速缓冲存储器19,高速缓冲存储器19用于对存储器14中的一些可能会被反复调用的程序数据或者报文数据等数据进行缓存。高速缓冲存储器19例如由静态随机存储器(Static Random Access Memory,简称为SRAM)等类型的存储装置实现。高速缓冲存储器19可以为多级结构,例如具有一级缓存(L1Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)的三级缓存结构,也可以是三级以上的缓存结构或其他类型缓存结构。在一些实施例中,高速缓冲存储器19的一部分(例如一级缓存,或一级缓存和二级缓存)可以集成在处理器12内部或与处理器12集成于同一片上系统中。
基于此,处理器12可以包括指令执行单元121、内存管理单元122等部分。指令执行单元121在执行一些需要修改内存的指令时发起写访问请求,该写访问请求指定了需要写入内存中的写入数据和相应的物理地址;内存管理单元122用于将这些指令指定的虚拟地址转译为该虚拟地址映射的物理地址,写访问请求指定的物理地址与相应指令指定的物理地址可以一致。
存储器14和高速缓冲存储器19之间的信息交互通常按块来组织。在一些实施例中,高速缓冲存储器19和存储器14可以按照相同的空间尺寸被划分成数据块,数据块可以作为高速缓冲存储器19和存储器14之间的数据交换的最小单位(包括预设长度的一个或多个数据)。为了表述简洁清晰,下面将高速缓冲存储器19中的各个数据块简称为缓存块(可以称为cacheline或高速缓存线),且不同的缓存块具有不同的缓存块地址;将存储器14中的各个数据块简称为内存块,且不同的内存块具有不同的内存块地址。缓存块地址例如包括用于定位数据块的物理地址标签。
由于受到空间和资源的限制,高速缓冲存储器19无法对存储器14中的全部内容都进行缓存,即高速缓冲存储器19的存储容量通常小于存储器14,高速缓冲存储器19提供的各个缓存块地址无法对应存储器14提供的全部内存块地址。处理器12在需要访问内存时,首先经总线11访问高速缓冲存储器19,以判断所要访问的内容是否已被存储于高速缓冲存储器19中,如果是,则高速缓冲存储器19命中,此时处理器12直接从高速缓冲存储器19中调用所要访问的内容;如果处理器12需要访问的内容不在高速缓冲存储器19中,则高速缓冲存储器19,处理器12需要经总线11访问存储器14,以在存储器14中查找相应的信息。因为高速缓冲存储器19的存取速率非常快,因此当高速缓冲存储器19命中时,处理器12的效率可以显著提高,进而也使整个计算机设备10的性能和效率得以提升。
此外,计算机设备10还可以包括存储设备17、显示设备13、音频设备15、鼠标/键盘16等输入/输出设备。存储设备17例如是通过相应接口与总线11耦合的硬盘、光盘以及闪存等用于信息存取的设备。显示设备13例如经相应的显卡与总线11耦合,用于根据总线11提供的显示信号进行显示。
计算机设备10通常还包括通信设备18,因此可以通过各种方式与网络或其他设备通信。通信设备18例如可以包括一种或多种通信模块,作为示例,通信设备18可以包括适用于特定的无线通信协议的无线通信模块。例如,通信设备18可以包括WLAN模块,用于实现符合电气和电子工程师协会(IEEE)制定的802.11标准的Wi-FiTM通信;通信设备18也可以包括WWAN模块,用于实现符合蜂窝或其他无线广域协议的无线广域通信;通信设备18还可以包括蓝牙模块等采用其它协议的通信模块,或其它自定义类型的通信模块;通信设备18也可以是用于串行传输数据的端口。
当然,不同的计算机系统根据主板、操作系统和指令集架构的不同,其结构也可能有所变化。例如目前很多计算机系统设置有连接在总线11和各个输入/输出设备之间的输入/输出控制中心,且该输入/输出控制中心可以集成于处理器12之内或独立于处理器12。
本公开实施例的商业价值
本公开实施例使得中断源所属执行域和当前运行执行域相同的中断请求能够得到快速响应,有效缓解中断延迟的状态。本公开实施例提供的片上系统可形成多种场景使用的计算机设备,例如物联网领域使用的物联网设备以及日常生活中使用的智能设备。这些场景下,通过中断及时响应使得信号控制更加灵敏,提升用户体验。由此可见,本公开实施例的片上系统以及由该片上系统构建的计算机设备具有良好的市场前景。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。