CN114579264A - 处理装置、处理系统和处理方法 - Google Patents

处理装置、处理系统和处理方法 Download PDF

Info

Publication number
CN114579264A
CN114579264A CN202011388187.9A CN202011388187A CN114579264A CN 114579264 A CN114579264 A CN 114579264A CN 202011388187 A CN202011388187 A CN 202011388187A CN 114579264 A CN114579264 A CN 114579264A
Authority
CN
China
Prior art keywords
interrupt
registers
interrupt service
register
service
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202011388187.9A
Other languages
English (en)
Inventor
尚云海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou C Sky Microsystems Co Ltd
Original Assignee
Pingtouge Shanghai Semiconductor Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Pingtouge Shanghai Semiconductor Co Ltd filed Critical Pingtouge Shanghai Semiconductor Co Ltd
Priority to CN202011388187.9A priority Critical patent/CN114579264A/zh
Publication of CN114579264A publication Critical patent/CN114579264A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了一种与中断处理和异常处理相关的处理装置、处理系统、处理方法和计算机可读介质。处理装置包括:多个寄存器,用于存储信息;决策器,提供与中断请求对应的决策数据,决策数据表征的寄存器保存列表用于将多个寄存器中的一个或多个寄存器指定为与中断请求对应的现场保存寄存器;中断处理模块,接收中断请求和相应的决策数据,并响应于中断请求以提供相应的中断服务,其中,决策器基于在响应的过程中被操作的寄存器的列表,将列表指定的一个或多个寄存器指定为与中断请求对应的现场保存寄存器。本公开提供的处理装置、系统和方法不需要在现场保护阶段对所有调用者属性的寄存器进行缓存,有利于降低响应时间。

Description

处理装置、处理系统和处理方法
技术领域
本发明涉及处理器领域,具体而言,涉及一种与中断处理和异常处理相关的处理装置、处理系统、处理方法和计算机可读介质。
背景技术
在处理器执行主程序的过程中,当出现某种紧急情况或异常的事件时,处理器暂停正在执行的主程序,转去处理该事件,并在处理完该事件之后返回断点(通常指返回主程序时需要执行的第一条指令的地址)处继续执行刚刚被中止的主程序,这一过程被称为中断,引发该中断的事件可称为中断源。处理器为了响应中断源发起的中断请求,需要通过执行中断处理程序(Interrupt Handler)调用与该中断请求对应的中断服务例程(InterruptService Routine,ISR),以实现相应的中断服务内容。
由于主程序和中断服务例程的运行都依赖于处理器的寄存器资源,因此为了避免处理器在运行中断服务例程时破坏主程序在寄存器中写入的内容,中断处理程序需要在调用中断服务例程之前将断点处各寄存器的内容先保存起来(这一过程可称为现场保护),之后,处理器再基于各个寄存器执行与中断请求相对应的中断服务例程。这样,在中断服务例程运行结束后,处理器可以将现场保护阶段中保存的各个寄存器的值恢复至各个寄存器,从而可以基于被恢复的寄存器的内容从断点处继续执行主程序。
从引发中断到真正开始处理中断服务例程的这一时间段,可以用来表征中断的响应时间和实时性。在工业控制、微处理器、嵌入式、物联网等应用场景下,各种应用对中断的响应时间和实时性非常敏感,而中断在这些应用场景下发生的频率也很高,更加突出了提升中断实时性、降低响应时间的重要性。
发明内容
本公开旨在基于预设的寄存器保存列表在中断响应过程中的现场保护阶段对指定的一些寄存器的内容进行缓存,而不需要无差别地对所有通用寄存器或所有具有调用者属性的通用寄存器在现场保护阶段进行缓存,从而优化中断的响应时间、提升中断响应的实时性。
根据本公开实施例的第一方面,提供了一种处理装置,包括:多个寄存器,用于存储信息;决策器,提供与中断请求对应的决策数据,所述决策数据表征的寄存器保存列表用于将所述多个寄存器中的一个或多个寄存器指定为与所述中断请求对应的现场保存寄存器;中断处理模块,接收所述中断请求和相应的所述决策数据,并响应于所述中断请求以提供相应的中断服务,其中,所述决策器基于在所述响应的过程中被操作的寄存器的列表,将所述列表指定的一个或多个所述寄存器指定为与所述中断请求对应的现场保存寄存器。
在一些实施例中,所述中断处理模块适于在对所述中断请求的响应过程中执行:在所述中断服务开始之前,将所述决策数据指定的各个现场保存寄存器的信息缓存至存储单元;在中断服务期间,若需要对所述多个寄存器之一进行操作且该寄存器的信息未被所述存储单元缓存,则在进行所述操作之前将该寄存器内存储的信息缓存至所述存储单元;以及在所述中断服务完成之后,利用所述存储单元将所述多个寄存器恢复至所述中断服务之前的状态。
在一些实施例中,所述决策器采集与所述中断服务对应的训练数据,并根据所述训练数据调整与该中断服务对应的所述决策数据,所述训练数据包括如下信息:在所述中断服务完成时需要被恢复的所述寄存器的列表,和/或在所述中断服务期间被操作的所述寄存器的列表,以便于调整后的所述决策数据将所述训练数据指示的各个寄存器指定为所述中断服务对应的现场保存寄存器。
在一些实施例中,所述决策器包括:第一寄存单元,用于存储采集获得的所述训练数据;第二寄存单元,用于存储与当前中断服务对应的所述决策数据;逻辑单元,用于根据所述训练数据调整所述决策数据;以及传输单元,用于根据所述中断请求从所述存储单元中获取相应的所述决策数据,并将所述第二寄存单元提供的调整后的决策数据提供至所述存储单元。
在一些实施例中,所述决策器还适于根据所述训练数据将所述中断服务期间未被操作的现场保存寄存器和/或在所述中断服务结束时不需要被恢复的现场寄存器从所述决策数据指定的寄存器保存列表中删除。
在一些实施例中,对应于当前中断服务,在所述决策器未采集到所述训练数据的情况下,所述决策数据为初始状态,在初始状态下,被所述决策数据指定的现场保存寄存器的个数为零,或小于所述多个寄存器的总数量。
在一些实施例中,在响应于当前中断请求的所述中断服务期间,若中断处理模块需要处理优先级高于当前中断请求的另一中断请求,则所述决策器向所述中断处理模块提供所述另一中断请求对应的所述决策数据,以便于所述中断处理模块在当前中断请求的响应过程中基于该决策数据嵌套执行针对所述另一中断请求的响应过程。
在一些实施例中,处理装置还包括判断模块,在当前中断服务已结束且所述多个寄存器未被完全恢复至所述中断服务之前的状态的情况下,若所述判断模块判定需要继续处理下一中断服务,则所述中断处理模块在提供所述下一中断服务之前不对各所述寄存器的内容进行恢复和缓存,以便于所述中断处理模块在所述下一中断服务结束之后利用所述存储单元将所述多个寄存器恢复至所述当前中断服务开始之前的状态。
在一些实施例中,所述中断处理模块在所述中断服务开始之前将需要缓存的信息存入所述存储单元的第一存储区,并在所述中断服务期间将需要缓存的信息存入所述存储单元的第二存储区,所述第一存储区与所述第二存储区在所述存储单元中不重叠地分布。
在一些实施例中,其特征在于,所述多个寄存器分别是配置为调用者保存属性的通用寄存器。
第二方面,本公开实施例提供了一种处理系统,包括本公开任一实施例所述的处理装置;以及存储器,与所述处理装置耦合,适于提供所述存储单元以及至少一个中断服务例程,所述处理装置通过运行所述至少一个中断服务例程之一实现相应的所述中断服务。
在一些实施例中,所述存储器还适于提供一个或多个所述决策数据,每个所述决策数据分别与相应的所述中断服务和/或应用程序相关联,以便于所述处理装置根据需要响应的所述中断请求获得相应的所述决策数据。
在一些实施例中,所述处理系统实现于片上系统芯片内。
第三方面,本公开实施例提供了一种处理方法,包括:提供与中断请求对应的决策数据,所述决策数据表征的寄存器保存列表用于将多个寄存器中的一个或多个寄存器指定为与所述中断请求对应的现场保存寄存器;响应所述中断请求以提供相应的中断服务;以及基于在所述响应的过程中被操作的寄存器的列表,将所述列表指定的一个或多个所述寄存器指定为与所述中断请求对应的现场保存寄存器。
在一些实施例中,响应所述中断请求以提供相应的中断服务的步骤包括:在所述中断服务开始之前,对所述决策数据指定的各个现场保存寄存器的信息进行缓存;在中断服务期间,若需要对所述多个寄存器之一进行操作且该寄存器的信息未被缓存,则在进行所述操作之前对该寄存器内存储的信息进行缓存;以及在所述中断服务完成之后,利用缓存的信息将所述多个寄存器恢复至所述中断服务之前的状态。
在一些实施例中,基于在所述响应的过程中被操作的寄存器的列表,将所述列表指定的一个或多个所述寄存器指定为与所述中断请求对应的现场保存寄存器的步骤包括:采集与所述中断服务对应的训练数据;以及根据所述训练数据调整与该中断服务对应的所述决策数据,所述训练数据包括如下信息:在所述中断服务完成时需要被恢复的所述寄存器的列表,和/或在所述中断服务期间被操作的所述寄存器的列表,以便于调整后的所述决策数据将所述训练数据指示的各个寄存器指定为所述中断服务对应的现场保存寄存器。
在一些实施例中,根据所述训练数据调整与该中断服务对应的所述决策数据的步骤包括:根据所述训练数据将所述中断服务期间未被操作的现场保存寄存器和/或在所述中断服务结束时不需要被恢复的现场寄存器从所述决策数据指定的寄存器保存列表中删除。
在一些实施例中,响应所述中断请求以提供相应的中断服务的步骤还包括:对应于当前中断服务,在未采集到所述训练数据的情况下,所述决策数据为初始状态,在初始状态下,被所述决策数据指定的现场保存寄存器的个数为零,或小于所述多个寄存器的总数量。
在一些实施例中,响应所述中断请求以提供相应的中断服务的步骤还包括:在响应于当前中断请求的所述中断服务期间,若中断处理模块需要处理优先级高于当前中断请求的另一中断请求,则提供所述另一中断请求对应的所述决策数据,以便于在当前中断请求的响应过程中基于该决策数据嵌套执行针对所述另一中断请求的响应过程。
在一些实施例中,响应所述中断请求以提供相应的中断服务的步骤还包括:在当前中断服务已结束且所述多个寄存器未被完全恢复至所述中断服务之前的状态的情况下,若需要继续处理下一中断服务,则在提供所述下一中断服务之前不对各所述寄存器的内容进行恢复和缓存,以便于在所述下一中断服务结束之后利用当前中断服务开始前缓存的信息将所述多个寄存器恢复至所述当前中断服务开始之前的状态。
第四方面,本公开实施例还提供了一种计算机可读介质,所述计算机可读介质存储有计算机指令,所述计算机指令被执行时,实现本公开任一实施例所述的处理方法。
本公开实施例可以根据决策数据表征的寄存器保存列表在现场保护阶段对指定的一些寄存器的内容进行缓存,且在中断服务期间也可以动态地对其它需要被中断服务使用到的寄存器进行缓存,而不需要在现场保护阶段就无条件地对所有具有调用者属性的通用寄存器进行缓存,因此在保证了寄存器存储信息准确的前提下,减少了现场保护阶段内需要被保护的寄存器的数量,有利于降低中断响应时间和提升中断实时性,同时也节约了被中断占用的存储空间。
在一些可选的实施例中,还可以在实际的中断处理过程中采集训练数据,并基于训练数据对决策数据进行动态的优化和矫正,使得决策数据表征的寄存器保存列表能够尽量达到与该中断服务实际涉及到的寄存器列表一致,从而尽量避免中断处理过程中对不必要的寄存器进行现场保护和恢复,通过训练机制进一步优化了中断响应的实时性,也有利于降低现场恢复时间和整个中断处理过程的时间。
在一些实施例中,可以分别设置适配于不同中断服务/应用程序的寄存器保存列表,从而根据不同的中断请求分别提供相匹配的寄存器保存列表,更加灵活、精准地实现寄存器的现场保护,以进一步提升中断响应的实时性。
在一些实施例中,在需要连续地处理多个中断请求的情况下,在相邻的两个中断服务例程执行过程之间可以不再进行寄存器的现场保护和/或恢复,而是让在后的中断服务直接继承在先的中断服务的寄存器缓存信息(位于存储单元内),从而在这一系列连续的中断服务结束后,可以直接利用存储单元中的缓存信息将各个寄存器恢复至第一个中断服务开始前的状态,进一步在连续处理中断请求的情况下缩短了中断响应过程、节省了用于现场保护和现场恢复的时间。
在通用寄存器数量较多的实施例中,本公开的技术方案可以极大地降低调用者保存属性的通用寄存器带来的中断响应延迟时间,显著提升中断响应的实时性。
附图说明
通过参考以下附图对本发明实施例的描述,本发明的上述以及其它目的、特征和优点将更为清楚,在附图中:
图1示出本公开一个实施例中的计算机系统的示意性框图;
图2是本公开一个实施例处理器的示意性框图;
图3示出本公开一个实施例的中断处理方法的流程示意图;
图4示出本公开一个实施例的一种示例性的中断处理流程;
图5示出本公开一个实施例的处理装置的示意图;
图6示出的本公开一个实施例中一个或多个堆栈结构的示意图。
具体实施方式
以下基于实施例对本发明进行描述,但是本发明并不仅仅限于这些实施例。在下文对本发明的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本发明。为了避免混淆本发明的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
计算机系统:嵌入式系统、台式机、服务器或其他具备信息处理能力的系统。
存储器:位于计算机系统内,是用于存储信息的物理结构。按照用途的不同,存储器可以分为主存储器(也可称为内部存储器,或简称为内存/主存)和辅助存储器(也可称为外部存储器,或简称为辅存/外存)。内存用于存储由数据信号表示的指令信息和/或数据信息,例如用于存放处理器提供的数据,也可用于实现处理器与外存之间的信息交换。外存提供的信息需要被调入主存中才能被处理器访问,因此本文提到的存储器一般是指内存,本文提到的存储设备一般是指外存。
中断处理程序:在确定需要响应的中断请求后,处理器执行中断处理程序,以调用与该中断请求相对应的中断服务例程,从而处理中断。不同的中断请求可以对应不同的中断服务例程,处理器可以根据中断服务例程的入口地址(也可以被称为中断向量)去执行相应的服务内容。需要说明的是,本文描述的主程序是相对于中断服务例程而言的,该名称并非用于限定主程序的本质类型,例如主程序可以是被其它程序调用的程序或被另一中断请求中止的中断处理程序。
中断嵌套:当处理器正在处理一个中断的过程中,若有另一个优先级更高的中断源提出中断请求,则意味着发生中断嵌套,这时处理器可以中止当前正在执行的优先级较低的中断处理程序,去响应优先级更高的中断请求,待处理完毕,再返回到之前被中断的中断处理程序继续执行。
堆栈结构:指内存中一段连续的存储区域或多个存储区域,用来保存一些临时数据。例如,在现场保护阶段,可以将需要保护的寄存器的值备份在堆栈结构中,以便于在之后的现场恢复阶段将这些值再恢复到原来的寄存器中,使得中断前运行的主程序可以在中断之后继续正确地运行。此外,堆栈结构也可以用来保存其它数据。堆栈操作例如可以由PUSH、POP两条指令来完成。
系统概述
图1示出本发明实施例中的计算机系统的示意性框图。该计算机系统10是“中心”系统架构的示例。计算机系统10可基于目前市场上各种型号的处理器构建,并由WINDOWSTM操作系统版本、UNIX操作系统、Linux操作系统等操作系统驱动。此外,计算机系统10可以在PC机、台式机、笔记本、服务器和移动通信装置等硬件和/或软件中实施。
如图1所示,本发明实施例的计算机系统10可以包括一个或多个处理器12,以及存储器11。处理器12和存储器11可以全部或部分地集成在同一片上系统/处理器芯片内,也可以分别位于不同的芯片/模块内。
计算机系统10中的存储器11可以用作内存。在一些实施例中,存储器11可以一个或多个不同的存储器设备和/或一种或中不同类型的存储器。例如,存储器11可包括动态随机存取存储器(DRAM),还可能包括其它类型的随机存取存储器。
存储器11可以包括一个或多个应用模块,例如用于运行图像处理程序、音频处理程序、屏幕唤醒程序、绘图程序、电子邮件程序等应用程序。存储器11还可以包括操作系统模块,用于运行计算机系统10所需的操作系统,该操作系统支持和管理各种程序的运行。操作系统模块可以包括中断处理单元111以及一个或多个中断例程单元112,其中,中断处理单元111用于存储中断处理程序的指令信息,该中断处理程序可以根据中断请求提供的信息调用相应的中断例程单元112中存储的中断服务例程,从而提供相应的服务内容。存储器11可以包括单个操作系统模块,也可以任选地包括两或更多的操作系统模块。在未示出的实施例中,存储器11还可选地包括虚拟机管理器模块、管理程序模块等等。
存储器11还具有一个或多个堆栈结构113。堆栈结构113可用于存储关于程序的信息(例如现场保护阶段存储指定程序的参数值、地址等用于恢复现场的信息)。堆栈结构有时也被称作调用栈结构、执行栈结构、运行时栈结构、机器栈机构,或简称为栈,例如可以是一块按照后进先出规则访问的存储区域,也可以是操作系统模块内部或外部的一个固定的存储区域,用来实现中断嵌套和/或子程序调用的参数值和断点等信息。
处理器12可以包括流水线结构120、内存管理单元130、寄存器组140等多个部分。
其中,流水线结构120例如包括解码器、指令执行单元等,需要在处理器12上被执行的程序(例如为主程序、中断处理程序、中断服务例程等)可以包括从存储器11(例如从操作系统模块和/或应用模块)中加载并由流水线结构120执行的一个或多个指令。
在处理器执行程序的过程中,可以利用寄存器组140记录相关信息。寄存器组140中的各寄存器例如可以分布在处理器12之内和/或处理器12所在的芯片/片上系统之内。
处理器12需要访问存储器11,以获取存储器11中的指令信息/数据信息,也可以对存储器11中的信息进行修改,因此处理器还可以包括内存管理单元130,以管理处理器12与存储器11之间的信息交换,例如可用于实现虚拟地址和物理地址之间的转译。
由于存储器11的访问速度较慢,为了缓解处理器12与存储器11之间的速度差距,计算机系统10还包括与总线13耦合的高速缓冲存储器14,高速缓冲存储器14用于对存储器11中的一些可能会被反复调用的程序数据或者报文数据等数据进行缓存。高速缓冲存储器14例如由静态随机存储器(Static Random Access Memory,简称为SRAM)等类型的存储装置实现。高速缓冲存储器14可以为多级结构,例如具有一级缓存(L1 Cache)、二级缓存(L2Cache)和三级缓存(L3 Cache)的三级缓存结构,也可以是三级以上的缓存结构或其他类型缓存结构。在一些实施例中,高速缓冲存储器14的一部分(例如一级缓存,或一级缓存和二级缓存)可以集成在处理器12内部或与处理器12集成于同一片上系统中。
为了避免混淆本描述,已示出和描述了相对简单的处理器。然而,处理器还可选地包括其他公知的处理器组件。这种组件的可能示例包括但不限于:预拾取缓冲器、地址转译缓冲器、分支预测单元、寄存器重命名和/或分配单元、指令分派单元、总线接口单元、地址生成单元、调试单元、性能监测器单元、功率管理单元、外部引脚、其他可以被包括在处理器中的其他组件以及它们的各种组合。这样的组件可以以各种不同的合适组合和/或本领域已知的配置被耦合到一起。多个实施例不限于任何已知的这种组合或配置。此外,实施例可被包括在具有多核的处理器中,多核中的至少一个用于执行本文所描述的中断处理的实施例。
此外,计算机系统10还可以包括存储设备18、显示设备15、音频设备16、鼠标/键盘17等输入/输出设备。存储设备18例如是通过相应接口与总线13耦合的硬盘、光盘以及闪存等用于信息存取的设备。显示设备15例如经相应的显卡与总线13耦合,用于根据总线13提供的显示信号进行显示。
计算机系统10通常还包括通信设备19,因此可以通过各种方式与网络或其他设备通信。通信设备19例如可以包括一种或多种通信模块,作为示例,通信设备19可以包括适用于特定的无线通信协议的无线通信模块。例如,通信设备19可以包括WLAN模块,用于实现符合电气和电子工程师协会(IEEE)制定的802.11标准的Wi-FiTM通信;通信设备19也可以包括WWAN模块,用于实现符合蜂窝或其他无线广域协议的无线广域通信;通信设备19还可以包括蓝牙模块等采用其它协议的通信模块,或其它自定义类型的通信模块;通信设备19也可以是用于串行传输数据的端口。
当然,不同的计算机系统根据主板、操作系统和指令集架构的不同,其结构也可能有所变化。例如目前很多计算机系统设置有连接在总线13和各个输入/输出设备之间的输入/输出控制中心,且该输入/输出控制中心可以集成于处理器12之内或独立于处理器12。
处理器
图2是本发明实施例中处理器12的示意性框图。
在一些实施例中,每个处理器12可以包括用于处理指令的一个或多个处理器核12A,指令的处理和执行是可以被用户(例如通过应用程序)和/或系统平台控制的。在一些实施例中,每个处理器核12A可以用于处理特定的指令集。在一些实施例中,指令集可以支持复杂指令集计算(Complex Instruction Set Computing,CISC)、精简指令集计算(Reduced Instruction Set Computing,RISC)或基于超长指令字(Very LongInstruction Word,VLIW)的计算。不同的处理器核12A可以各自处理不同或相同的指令集。在一些实施例中,处理器核12A还可以包括其他处理模块,例如数字信号处理器(DigitalSignal Processor,DSP)等。作为一种示例,图2中示出了处理器核1至m,m是非0的自然数。
在一些实施例中,图1示出的高速缓冲存储器14可以被全部或部分集成于处理器12中。且根据不同架构,高速缓冲存储器14可以是位于各个处理器核120A之内和/或之外的单个或多级的内部高速高速缓冲存储器(如图2示出的3级高速高速缓冲存储器L1至L3,图2中统一标识为14),也可以包括面向指令的指令高速缓存和面向数据的数据高速缓存。在一些实施例中,处理器12中的各个部件可以共享至少一部分的高速缓冲存储器,如图2所示,处理器核1至m例如共用第三级高速高速缓冲存储器L3。处理器12还可以包括外部高速缓存(未示出),其他高速缓存结构也可以作为处理器12的外部高速缓存。
在一些实施例中,如图2所示,处理器12可以包括寄存器组140(Register File),寄存器组140可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型的。例如,寄存器组140可以包括:整数寄存器、浮点数寄存器、状态寄存器、指令寄存器和指针寄存器等。寄存器组140中的寄存器可以选用通用寄存器来实现,也可以根据处理器12的实际需求采用特定的设计。后文将会举例说明。
处理器12的流水线结构120用于执行指令序列(即程序)。处理器12执行每个指令的过程包括:从存放指令的存储器11中取出指令、对取出的指令进行译码、执行译码后的指令、保存指令执行结果等步骤,如此循环,直到执行完指令序列中的全部指令或遇到需要停止或终止执行当前指令序列的指令(例如为中断指令、停机指令等)。
为了实现上述过程,流水线结构120可以包含取指令单元124、指令译码单元125、指令发射单元(未示出)、指令执行单元121和指令引退单元(未示出)等。
取指令单元124作为处理器12的启动引擎,用于将指令从存储器11中搬运到指令寄存器(可以是图2示出的寄存器组140中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,处理器12进入指令译码阶段,指令译码单元125按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元121的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元通常存在于高性能的处理器12中,位于指令译码单元125与指令执行单元之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元121,使得多个指令的并行操作成为可能。指令经取指、译码并被调度到相应的指令执行单元121之后,相应的指令执行单元121开始执行该指令,即执行该指令所指示的操作、实现相应的功能。
指令引退单元(或称为指令写回单元)主要用于负责将指令执行单元121产生的执行结果写回到相应的存储位置(例如为处理器12内部的寄存器)中,以使后续指令能够从该存储位置处快速获取相应的执行结果。
对于不同类别的指令,可以在处理器12中相应地设置不同的指令执行单元121。指令执行单元121可以是运算单元(例如包含算术逻辑单元,矢量运算单元等,用于根据操作数进行运算并输出运算结果)、内存执行单元(例如用于根据指令访问内存以读取内存中的数据或向内存写入指定的数据等)以及协处理器等。在处理器12中,各个指令执行单元121可以并行运行并输出相应的执行结果。
指令执行单元121在执行某类指令(例如访存指令)时,需要访问存储器11,以获取存储器11中存储的信息或提供需要写入存储器11中的数据。
需要说明的是,用于执行访存指令的指令执行单元121也可以简称称为内存执行单元,该内存执行单元例如为加载存储单元(Load Store Unit,LSU)和/或其他用于内存访问的单元。
寄存器组和堆栈结构
处理器的寄存器组可以包括多个通用寄存器和专用寄存器,寄存器组中每个寄存器具有区别区别于其他寄存器的识别码(例如为寄存器地址/身份标签的部分或全部二进制码)。
专用寄存器是为了执行一些特殊操作而设置的寄存器。例如,为了支持中断处理,基于RISC-V架构的处理器核定义了一组控制/状态寄存器和支持中断处理的中断寄存器,列举如下:
处理器状态寄存器,用于存储于处理器状态相关的值,例如用来存放当前指令执行结果的各种状态信息(例如如有无进位、有无溢出、结果数的正负、奇偶等等)、各种控制信息(例如是否允许中断等)或其它信息。
指令地址寄存器,用于暂存准备执行或尚未完成执行的指令地址。通常又被称为程序计数器(Program Counter,简称PC)、指令地址计数器等。在程序开始执行前,需要将程序的第一条指令的地址送入PC,且在程序运行过程中,PC中的地址指向下一条要执行指令的地址。
在寄存器组中,还可以包括一些用于中断/异常处理过程的恢复寄存器。例如,处理器可以在响应中断请求后、运行中断服务例程之前将处理器状态寄存器中保存的状态值和/或PC中存放的指令地址存入相应的恢复寄存器,从而在返回主程序之前可以将恢复寄存器的值重新恢复至处理器状态寄存器和PC。在另一些实施例中,处理器也可以在现场保护阶段将处理器状态寄存器、PC等专用寄存器的值写入内存相应的堆栈结构中。
在一些实施例中,专用寄存器还可以包括电源控制寄存器PCON等其他的寄存器,本公开对专用寄存器的类型和数量不作限定。
除了专用寄存器之外,寄存器组还包括一些通用寄存器(General PurposeRegister,GPR),用来传送、暂存数据(例如差值、乘积、除数、商、端口地址、目标地址等等),可以参与算数逻辑运算并保持运算结果,例如包括累加寄存器、基址寄存器、计数寄存器、数据寄存器等等。在一些实施例中,通用寄存器可以分为定点数通用寄存器和浮点数通用寄存器,用来保护指令中不同数值类型的寄存器操作数和操作结果。
调用者保存属性的通用寄存器
考虑到成本、体积等因素,处理器内的通用寄存器个数受限,为了方便管理(例如避免信息覆盖)并提升寄存器的利用率,处理器中的一部分通用寄存器被配置为“调用者保存属性”,另一部分通用寄存器被配置为“被调用者保存属性”。
例如,若在函数P的运行过程中需要调用函数Q,且函数P运行过程中的中间值和/或结果值被保存在配置为被调用者保存属性的通用寄存器中,那么被调用的函数Q(例如为中断服务例程)可以不影响这些值,或将这些值暂存至堆栈结构中,以保证这些值在函数Q运行开始前和运行结束后是相同的,从而在函数Q结束之后处理器可以基于这些值继续运行函数P。
如果函数P的一个或一些中间值和/或结果值被保存在具有调用者保存属性的通用寄存器中,在现有的技术方案中,需要在开始执行函数Q之前的现场保护阶段将函数P涉及到的调用者保存属性的寄存器的值无条件地全部存入堆栈结构,之后才能开始调用函数Q。
作为具体的示例,对于需要备份的某一通用寄存器(或支持在堆栈结构中备份的某专用寄存器),在现场保护阶段,流水线结构120首先基于内存加载、存储指令等指令将该通用寄存器的值写入相应的堆栈结构内;在现场恢复阶段,流水线结构将基于相应的指令将堆栈结构中的备份值恢复至相应的寄存器中。
在一些处理器中,通用寄存器的数量很多。例如,在一些基于精简指令集架构的处理器中,处理器运算的操作数可以全部或部分来自通用寄存器,而不是通过直接访问内存获得,因此相比于传统架构的处理器,基于精简指令集架构的处理器中设置有更多的通用寄存器,尤其是在需要设置浮点数通用寄存器的情况下,通用寄存器的数量很大。传统方案在进程切换时对所有具有调用者保存属性的通用寄存器进行现场的保存和恢复,对寄存器的现场保存和恢复过程需要执行大量的内存加载、存储等指令,导致进程切换的延时增加。一般情况下,被调用的进程通常不会用到某个/某些调用者保存属性的寄存器,因此,无条件地将这些调用者保存属性的寄存器的值全部存入堆栈结构、再全部从堆栈结构中恢复至相应的寄存器的过程需要占用很多的存储空间资源、消耗过多的时间,影响了中断实时性,不利于提升中断响应速度,并且频繁地处理现场保存和恢复也会带来处理器整体功耗的增加。
本公开实施例旨在根据寄存器保存列表在现场保护阶段对指定的一些寄存器的内容进行缓存,且在中断服务阶段中也可以在检测到需要被保护但未被保护的寄存器进行缓存,而不需要无条件地对全部具有调用者属性的通用寄存器在现场保护阶段进行缓存,因此减少了现场保护阶段内需要被保护的寄存器的数量,有利于降低中断响应时间和提升中断实时性,同时也节约了被中断占用的存储空间。
中断处理流程
处理器通过运行中断处理程序实现中断响应等中断处理过程。在中断响应过程中,中断处理程序首先对当前执行的主程序进行现场保存,随后根据该中断请求提供的信息获得相应的中断服务例程的入口地址,并基于该入口地址调用相应的中断服务例程,以便于实现该中断源要求的中断服务;中断服务例程运行结束后,中断处理程序进行现场恢复,从而处理器可基于恢复的现场从断点处继续运行主程序,实现中断返回。
若处理器在响应某一中断源发起的中断请求R1的过程中,另一优先级更高的中断源发起的中断请求R0被处理器接收到或查询到,那么意味着发生了中断嵌套,处理器需要中止响应中断请求R1,并开始响应中断请求R0;在中断请求R0所需的中断服务结束后,处理器再返回之前的中断处理程序,以继续进行面向中断请求R1的中断处理过程。
下面结合附图对本公开实施例的中断处理方法进行示例性的说明。
图3示出本公开实施例的中断处理方法的流程示意图。为便于说明,图4示出本公开实施例的一种示例性的中断处理流程。
在步骤S410中,首先,确定当前需要响应的中断请求。该中断请求可以来自于硬件中断源或软件中断源,可以是处理器被动接收到的中断请求也可以是处理器主动查询到的中断请求。
处理器有机会同时接收到多个中断请求,因此,在步骤S410中,需要从多个中断请求中确定当前需要响应的中断请求,例如可以优先响应这些中断源中优先级最高的一个中断源发起的中断请求。中断请求本身可以包含其对应的中断源的优先级信息。
在允许响应中断的前提下,可以暂停当前进程(当前进程例如对应于主程序或被中断嵌套的中断处理程序),并开始响应步骤S410确定的中断请求。在一些示例中,处理器可以在确认当前需要处理的中断请求之后向该中断请求对应的中断源返回中断应答信号。
在步骤S420中,根据寄存器保存列表,对当前进程的现场信息进行保存。现场信息可以包括被寄存器保存列表指定的各寄存器在断点处的值。处理器例如通过执行PUSH指令和/或其它指令在现场保护阶段将现场信息暂存于相应的恢复寄存器和/或堆栈结构中。
步骤S240可以由多个子步骤实现。例如,在一些示例中,可以将指令地址寄存器的值、处理器状态寄存器中的值暂存至用于记录处理器状态的堆栈结构中;另外,将寄存器保存列表指定的各个寄存器(指的是指令地址寄存器和处理器状态寄存器之外的寄存器)的值暂存至相应的堆栈结构中。本公开不对这些子步骤的先后顺序做限制。
在一些实施例中,寄存器保存列表指定的寄存器可以包括指令地址寄存器、处理器状态寄存器以及一个/多个具有调用者保存属性的通用寄存器,还可以包括其它的专用寄存器。在另一些实施例中,寄存器保存列表可以仅用于指定在现场保护阶段需要备份的一个或多个具有调用者保存属性的通用寄存器,且处理器可以在现场保护阶段默认将指令地址寄存器、处理器状态寄存器等专用寄存器的值缓存至相应的恢复寄存器和/或堆栈结构中。
在一些实施例中,处理器中的不同寄存器对应不同的识别码,寄存器保存列表例如为需要在现场保护阶段备份的各个寄存器的识别码的集合或识别码的编码的集合。
在初始状态下,寄存器保存列表未被更新,寄存器保存列表的初始值可以指定少量的通用寄存器,甚至不指定通用寄存器。在后续的步骤中,寄存器保存列表可以被中断处理过程中收集到的训练数据不断优化。
在一些实施例中,可以分别设置适配于不同中断服务/应用程序的寄存器保存列表,从而根据不同的中断请求分别提供相匹配的寄存器保存列表,更加灵活、精准地实现寄存器的现场保护,以便有针对性地优化不同中断源的中断响应时间,进一步提升中断响应的实时性。
在步骤S430中,根据中断请求获取中断服务例程的入口地址,并基于该入口地址定位相应的中断服务例程,以便开始执行中断请求所要求的中断服务对应的指令。
在此期间,在执行中断服务例程的每条指令之前,若检测到该指令需要使用到还没有被备份的寄存器(例如未被寄存器保存列表指定的通用寄存器),则处理器自动地将该寄存器的内容暂存至堆栈结构中,之后才能基于该寄存器运行相应的指令。
在一些实施例中,中断服务阶段(步骤S430)和现场保护阶段(步骤S420)可以对不同的堆栈结构进行操作。例如,在现场保护阶段,处理器将指定的寄存器的值暂存至第一堆栈结构;而在中断服务阶段,处理器将检测到的需要缓存的寄存器的值暂存至第二堆栈结构,该第二堆栈结构可以区别于第一堆栈结构,从而防止现场保护阶段缓存的值被中断服务阶段缓存的值覆盖。在另一些实施例中,中断服务阶段和现场保护阶段可以对同一堆栈结构进行操作,仅需要对堆栈指针进行合理安排即可防止信息覆盖。
在一些实施例中,在中断服务阶段被硬件备份的寄存器的识别码被记录为第一训练信息,该第一训练信息可以用于优化寄存器保存列表。在另一些实施例中,在中断服务阶段被硬件备份的寄存器的识别码与该中断请求对应的中断源被关联记录为第一训练信息,从而第一训练信息可以对应到相关的中断源,使得不同中断源对应的寄存器保存列表可以被更加准确地优化。
在每个中断请求对应的中断服务完成后,执行步骤S440,以判断是否需要继续处理另一中断请求。若不需要继续处理其它中断请求,则执行步骤S450,即中断返回步骤;若需要继续处理其他中断请求,则返回执行步骤S430。
步骤S450用于为继续运行中断处理前的被中断的进程做准备。在步骤S450中,需要将之前保存在堆栈结构和/或恢复寄存器中的信息重新存入相应的寄存器中,从而将寄存器现场恢复至断点对应的状态,使得处理器可以利用各寄存器的值继续运行被中断的进程。
中断返回步骤例如可以由处理器通过执行一个或多个POP指令、和/或中断返回指令IRET实现。
中断返回步骤例如包括多个子步骤。例如,在一些示例中,可以将用于记录指令地址的恢复寄存器中的信息恢复存储至指令地址寄存器,并将用于记录寄存器状态的恢复寄存器中的信息恢复存储至处理器状态寄存器;另外,根据堆栈结构中的暂存数据,将中断处理阶段中被更新的寄存器的值恢复至中断处理之前的值。本公开不对这些子步骤的先后顺序做限制。
在一些示例中,还需要记录中断返回步骤中被恢复/需要恢复的寄存器列表(简称为寄存器恢复列表),该列表可以作为第二训练信息,用于优化寄存器保存列表。
在一些实施例中,中断处理过程还可以包括对寄存器保存列表的优化。处理器可以根据训练数据(包括第一训练信息和/或第二训练信息)优化寄存器保存列表,从而通过不断地收集中断处理过程产生的训练数据优化中断响应时间。
作为示例,如图4所示,在第1中断请求对应的中断服务完成后,若需要继续处理第2中断请求,则返回执行步骤S430,以实现第2中断请求要求的中断服务。在处理器同时接收到的多个中断请求中,第2中断请求的优先级例如仅次于上述第1中断请求的优先级。
在处理第2中断请求之前,无需对第1中断请求保存的寄存器现场进行恢复,而是可以直接将第1中断处理过程中保存的现场信息作为第2中断请求对应的现场信息,并且在第2处理中断请求的过程中还可以继续对这些现场信息进行补充,从而节省了现场恢复和再次进行现场保存的时间,进一步提升了中断响应速度。作为示例,对应于当前的中断处理过程,设置有固定的现场信息寄存器,从而无需进行数据传输即可将现场信息寄存器中的内容(第1中断请求的现场信息)直接作为第2中断请求的现场信息。
在现场保护阶段,若接收到/查询到某一终端请求的优先级别高于当前正在处理的中断请求,则在现场保护阶段完成之后优先响应优先级较高的中断请求。
在中断服务阶段,若接收到/查询到某一中断请求的优先级别高于当前正在处理的中断请求,例如图4示出的第3中断请求的优先级高于第2中断请求的优先级,则说明发生中断嵌套,需要中止当前进程(第2中断请求对应的中断服务阶段或现场保护阶段),并重新执行步骤S420和步骤S430,以便于在对被嵌套的中断处理程序进行现场保护(例如基于第3中断请求对应的寄存器保存列表)后执行第3中断请求对应的中断服务。在发生中断嵌套的情况下,现场信息例如包括第2中断请求的中断处理程序已生成的寄存器记录信息(例如为第2中断服务的结果数和/或操作数)和堆栈位置信息(例如指向中断嵌套发生时堆栈结构即将缓存的下一位置,用于恢复第2中断服务被嵌套时的断点信息),这些现场信息可以在步骤S420中被暂存至相应的堆栈结构中。
作为示例,如图6所示,为了防止堆栈结构中的有用信息被覆盖,可以在堆栈结构中设置多个相互独立的存储空间,分别用于存储现场保护阶段的缓存信息、中断服务阶段的缓存信息和中断嵌套阶段的缓存信息。
处理装置
图5示出本公开实施例的处理装置的示意图。如图5所示,处理装置200可以由本公开描述的处理器或计算机系统实现,也可以被设计为脱离上述架构的专用装置。
作为示例,处理装置可以包括:多个寄存器,用于存储信息;决策器,提供与中断请求对应的决策数据,所述决策数据表征的寄存器保存列表用于将所述多个寄存器中的一个或多个寄存器指定为该中断请求对应的现场保存寄存器;中断处理模块(例如包括中断响应模块、寄存器保存模块、寄存器恢复模块等),用于接收所述中断请求和相应的所述决策数据,并响应于所述中断请求以提供相应的中断服务。其中,中断处理模块还适于在对所述中断请求的响应过程中:在所述中断服务开始之前,将所述决策数据指定的各个现场保存寄存器的信息缓存至存储单元;在中断服务期间,若需要对所述多个寄存器之一进行操作且该寄存器的信息未被所述存储单元缓存,则在进行所述操作之前将该寄存器内存储的信息缓存至所述存储单元;以及在所述中断服务完成之后,利用所述存储单元将所述多个寄存器恢复至所述中断服务之前的状态。
下面参照图5进行进一步的描述。作为示例,用于实现本公开实施例的中断处理方法的处理装置200可以包括以下几个部分。
中断响应模块210,用于响应需要处理的中断请求。在中断响应模块210同时接收到/查询到多个中断请求时,可以按照优先级顺序将优先级最高的中断请求确定为当前需要处理的中断请求,并可以向相应的中断源发出响应信号。在中断处理过程中,中断响应模块210也可以作为判断模块,用于判断当前中断服务后是否需要继续响应另一中断请求,也可以用于判断是否需要基于优先级高于当前中断请求的另一中断请求触发中断嵌套。
寄存器组220,用于提供支持程序运行的多个寄存器1至N,其中,图5示出的寄存器i用于表征中断服务涉及的一个或多个寄存器、寄存器保存列表指定的一个或多个寄存器、和/或现场恢复阶段需要被恢复的一个或多个寄存器。在一些实施例中,寄存器i可以是上述处理器中设置的具有调用者保存属性的一个或多个通用寄存器。
寄存器保存模块240,用于将需要保存的现场信息保存至相应的恢复寄存器和/或堆栈结构中。其中,现场信息可以包括主程序的断点信息(例如为主程序需要执行的下一条指令的地址)和处理器状态信息(例如为存储在CPU状态寄存器中)等通常需要进行现场保存的信息,也可以包括一部分的或全部的通用寄存器内存储的信息。寄存器保存模块可以是处理器基于一系列的PUSH指令实现的软件模块或软硬结合模块。
存储单元230,用于提供一个或多个中断服务例程232,以及用于缓存寄存器信息的一个或多个堆栈结构231。在一些实施例中,参见图6示出的本公开实施例中一个或多个堆栈结构的示意图,堆栈结构231中可以划分出多个不重叠的存储空间(可以连续、交替或间隔地分布在存储单元230中),分别用于缓存寄存器保存模块240在现场保护阶段提供的寄存器缓存信息、寄存器保存模块240在中断服务阶段的寄存器缓存信息、寄存器保存模块240在中断嵌套过程中提供的寄存器缓存信息,等等,以防止不同阶段的缓存信息,或对应不同来源的有用的缓存信息被错误地覆盖。
决策器270,用于保存并提供寄存器保存列表,该寄存器保存列表可以由决策器270提供的决策数据表征。决策器270可以存储在内存的指定存储区内,也可以存储在不受进程影响的寄存器中。
作为示例,决策器可以包括第一寄存单元、第二寄存单元、逻辑单元和传输单元等多个部分。其中,第一寄存单元用于存储采集获得的训练数据;第二寄存单元,用于存储与当前中断服务对应的决策数据;逻辑单元,用于根据所述训练数据调整第二寄存器单元中存储的决策数据;传输单元,用于根据中断请求从存储单元中获取相应的决策数据,并将第二寄存单元提供的调整后的决策数据提供至存储单元。
在本公开实施例中,寄存器保存模块240接收决策器输出的决策数据,以便于在当前中断服务对应的现场保护阶段内将各个现场保存寄存器(即,被决策数据指定的寄存器)存储的信息缓存至存储单元230;在当前中断服务对应的中断服务阶段内:若需要对某寄存器进行操作且该寄存器存储的信息未被存储单元缓存,则在进行该操作之前,寄存器保存模块240将该寄存器内存储的信息缓存至存储单元。
在初始状态下,决策器270默认将决策数据设置为初始值,以便于在决策器未被训练的情况下初步选定需要保存的少量寄存器列表,使得寄存器保存模块可以根据决策器的输出值确定初步需要备份的少量现场保存寄存器,而不是无条件地对所有具有调用者保存属性的通用寄存器进行现场保存。在另一些示例中,决策器270的初始值可以不指定任何通用寄存器或仅指定一个/两个使用频率较高的通用寄存器。
在一些示例中,决策器270的决策数据对应于现场保护阶段需要被保存的各种专用寄存器和/或通用寄存器的编号/身份标签。在另一些示例中,决策器提供的决策数据可以仅对应于需要被保存的、具有调用者保存属性的通用寄存器的编号/身份标签,寄存器保存模块默认在现场保护阶段对各种专用寄存器进行现场保护。
在一些示例中,决策器270可以针对不同的中断服务例程提供相应的寄存器保存列表,也可以面向不同的应用程序分别提供中断过程所需的寄存器保存列表。
在一些可选的实施例中,决策器270在现场恢复阶段和/或中断服务阶段采集训练数据,且决策器270可以根据采集到的训练数据调整相应的决策数据。其中,训练数据可以包括如下信息:现场恢复阶段中需要被恢复的寄存器的列表,和/或中断服务阶段中被操作的寄存器的列表,以便于调整后的决策数据将现场恢复阶段中需要被恢复的寄存器和/或中断服务阶段中被操作的寄存器指定为现场保存寄存器。
在一些实施例中,决策器270还可以根据采集到的训练数据将中断服务阶段内未被操作的现场保存寄存器从寄存器保存列表中删除。
在一些实施例中,决策器270中设置有多个决策数据,决策器270可以根据当前中断服务对应的中断请求在多个决策数据中选择与当前中断请求匹配的决策数据,并将其输出至寄存器保存模块240,使得寄存器保存模块240基于该决策数据实现面向当前中断服务的现场保护。进一步地,在一些实施例中,决策器270可以基于当前中断服务产生的训练数据调整该中断服务对应的决策数据,决策器270也可以针对不同的中断服务对相应的决策数据设置不同的初始值,以便决策数据可以更好地匹配相应的中断服务。在这些情况下,在决策器270中,中断服务与相应的决策数据可以通过各种方式相关联。
中断服务模块250用于实现中断请求对应的中断服务。不同中断源对应的中断服务例程232可以被预先存储在内存或其它存储空间中,当中断响应模块确定需要响应的中断请求后,中断服务模块可以根据该中断请求确定其对应的中断服务例程的入口地址,从而基于该入口地址执行相应的中断服务例程,以实现相应的中断服务。
寄存器恢复模块260,用于在中断服务完成后,将之前保存在堆栈结构中的信息重新存入相应的寄存器中,从而将寄存器现场恢复至断点对应的状态。寄存器恢复模块可以按照与现场保护阶段存储信息的顺序将堆栈结构231中的缓存信息写回至原来的寄存器中,即恢复主程序断点处各个寄存器的原值。该现场恢复过程例如可以由处理器通过执行一个或多个POP指令(用于按照先入先出的顺序将堆栈结构中的信息输出至指定位置)实现。
在响应于当前中断请求的中断服务期间,若中断处理模块需要处理优先级高于当前中断请求的另一中断请求,则决策器向寄存器保存模块提供所述另一中断请求对应的决策数据,以便于寄存器保存模块在当前中断请求的响应过程中基于该决策数据嵌套执行针对所述另一中断请求的响应过程。若发生中断嵌套,则寄存器保存模块240在中断嵌套对应的中断服务之前可以将各个现场保存寄存器内存储的信息和/或被当前中断服务修改过的寄存器的信息缓存至存储单元230,寄存器恢复模块260在该中断嵌套要求的中断服务之后根据存储单元内的缓存信息对相应的寄存器进行恢复。
在当前中断服务对应的现场恢复阶段之前,若判断模块(中断响应模块)判定需要在当前中断服务结束后继续处理下一中断服务,则判断模块在当前中断服务完成之后、下一中断服务开始之前禁用寄存器恢复模块260和寄存器保存模块240,以便于将存储单元中缓存的信息和/或决策器270为当前中断服务提供的决策数据用于下一中断服务。例如,在当前中断服务已结束且寄存器组中的各个寄存器未被完全恢复至当前中断服务之前的状态的情况下,若判断模块判定需要继续处理下一中断服务,则处理装置在提供所述下一中断服务之前不对各寄存器的内容进行恢复和缓存,以便于在所述下一中断服务结束之后再利用存储单元将各个寄存器恢复至所述当前中断服务开始之前的状态。
在一些实施例中,处理装置中设置有返回模块(未示出),用于将进程切换至主程序,以便于从断点起继续基于被恢复的现场执行之前被中断的主程序。返回模块例如是采用处理器执行中断返回指令IRET实现的,通过执行该指令,堆栈结构内保存的值可以被弹出至相应的寄存器,不仅可以让指令地址寄存器恢复指向断点处的指令地址(例如是主程序需要执行的下一条指令对应的地址),还可以将处理器状态寄存器的内容恢复至中断处理之前的值,以便于处理器开始基于该指令地址继续执行主程序。在一些实施例中,寄存器恢复模块可以是返回模块的一部分,或与返回模块耦接。
本公开实施例可以根据决策数据表征的寄存器保存列表在现场保护阶段对指定的一些寄存器的内容进行缓存,且在中断服务期间也可以动态地对其它需要被中断服务使用到的寄存器进行缓存,而不需要在现场保护阶段就无条件地对所有具有调用者属性的通用寄存器进行缓存,因此在保证了寄存器存储信息准确的前提下,减少了现场保护阶段内需要被保护的寄存器的数量,有利于降低中断响应时间和提升中断实时性,同时也节约了被中断占用的存储空间。
在一些可选的实施例中,还可以在实际的中断处理过程中采集训练数据,并基于训练数据对决策数据进行动态的优化和矫正,使得决策数据表征的寄存器保存列表能够尽量达到与该中断服务实际涉及到的寄存器列表一致,从而尽量避免中断处理过程中对不必要的寄存器进行现场保护和恢复,通过训练机制进一步优化了中断响应的实时性,也有利于降低现场恢复时间和整个中断处理过程的时间。
在一些实施例中,可以分别设置适配于不同中断服务/应用程序的寄存器保存列表,从而根据不同的中断请求分别提供相匹配的寄存器保存列表,更加灵活、精准地实现寄存器的现场保护,以进一步提升中断响应的实时性。
在一些实施例中,在需要连续地处理多个中断请求的情况下,在相邻的两个中断服务例程执行过程之间可以不再进行寄存器的现场保护和/或恢复,而是让在后的中断服务直接继承在先的中断服务的寄存器缓存信息(位于存储单元内),从而在这一系列连续的中断服务结束后,可以直接利用存储单元中的缓存信息将各个寄存器恢复至第一个中断服务开始前的状态,进一步在连续处理中断请求的情况下缩短了中断响应过程、节省了用于现场保护和现场恢复的时间。
在通用寄存器数量较多的实施例中,本公开的技术方案可以极大地降低调用者保存属性的通用寄存器带来的中断响应延迟时间,显著提升中断响应的实时性。
本申请还公开了一种包括存储于其上的计算机可执行指令的计算机可读存储介质,所述计算机可执行指令在被处理器执行时使得所述处理器执行本文所述的各实施例的方法。
此外,本申请还公开了一种系统,该系统包括用于实现本文所述的各实施例的方法的装置。
本申请还公开了一种处理装置,该处理装置包括上述处理器、处理器核或集成了上述处理器或处理器核的片上系统。
需要说明的是,虽然本公开以中断处理过程为例进行说明,但本公开提供的技术方案也适用于异常处理过程和程序的切换/调用过程。
需要领会,以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本说明书的实施例存在许多变型。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。

Claims (21)

1.一种处理装置,其特征在于,包括:
多个寄存器,用于存储信息;
决策器,提供与中断请求对应的决策数据,所述决策数据表征的寄存器保存列表用于将所述多个寄存器中的一个或多个寄存器指定为与所述中断请求对应的现场保存寄存器;
中断处理模块,接收所述中断请求和相应的所述决策数据,并响应于所述中断请求以提供相应的中断服务,
其中,所述决策器基于在所述响应的过程中被操作的寄存器的列表,将所述列表指定的一个或多个所述寄存器指定为与所述中断请求对应的现场保存寄存器。
2.根据权利要求1所述的处理装置,其特征在于,所述中断处理模块适于在对所述中断请求的响应过程中执行:
在所述中断服务开始之前,将所述决策数据指定的各个现场保存寄存器的信息缓存至存储单元;
在中断服务期间,若需要对所述多个寄存器之一进行操作且该寄存器的信息未被所述存储单元缓存,则在进行所述操作之前将该寄存器内存储的信息缓存至所述存储单元;以及
在所述中断服务完成之后,利用所述存储单元将所述多个寄存器恢复至所述中断服务之前的状态。
3.根据权利要求2所述的处理装置,其特征在于,所述决策器采集与所述中断服务对应的训练数据,并根据所述训练数据调整与该中断服务对应的所述决策数据,
所述训练数据包括如下信息:在所述中断服务完成时需要被恢复的所述寄存器的列表,和/或在所述中断服务期间被操作的所述寄存器的列表,以便于调整后的所述决策数据将所述训练数据指示的各个寄存器指定为所述中断服务对应的现场保存寄存器。
4.根据权利要求3所述的处理装置,其特征在于,所述决策器包括:
第一寄存单元,用于存储采集获得的所述训练数据;
第二寄存单元,用于存储与当前中断服务对应的所述决策数据;
逻辑单元,用于根据所述训练数据调整所述决策数据;以及
传输单元,用于根据所述中断请求从所述存储单元中获取相应的所述决策数据,并将所述第二寄存单元提供的调整后的决策数据提供至所述存储单元。
5.根据权利要求3所述的处理装置,其特征在于,所述决策器还适于根据所述训练数据将所述中断服务期间未被操作的现场保存寄存器和/或在所述中断服务结束时不需要被恢复的现场寄存器从所述决策数据指定的寄存器保存列表中删除。
6.根据权利要求3所述的处理装置,其特征在于,对应于当前中断服务,在所述决策器未采集到所述训练数据的情况下,所述决策数据为初始状态,
在初始状态下,被所述决策数据指定的现场保存寄存器的个数为零,或小于所述多个寄存器的总数量。
7.根据权利要求2所述的处理装置,其特征在于,在响应于当前中断请求的所述中断服务期间,若中断处理模块需要处理优先级高于当前中断请求的另一中断请求,则所述决策器向所述中断处理模块提供所述另一中断请求对应的所述决策数据,以便于所述中断处理模块在当前中断请求的响应过程中基于该决策数据嵌套执行针对所述另一中断请求的响应过程。
8.根据权利要求2所述的处理装置,其特征在于,还包括判断模块,在当前中断服务已结束且所述多个寄存器未被完全恢复至所述中断服务之前的状态的情况下,若所述判断模块判定需要继续处理下一中断服务,则所述中断处理模块在提供所述下一中断服务之前不对各所述寄存器的内容进行恢复和缓存,以便于所述中断处理模块在所述下一中断服务结束之后利用所述存储单元将所述多个寄存器恢复至所述当前中断服务开始之前的状态。
9.根据权利要求2所述的处理装置,其特征在于,所述中断处理模块在所述中断服务开始之前将需要缓存的信息存入所述存储单元的第一存储区,并在所述中断服务期间将需要缓存的信息存入所述存储单元的第二存储区,
所述第一存储区与所述第二存储区在所述存储单元中不重叠地分布。
10.根据权利要求1至9任一项所述的处理装置,其特征在于,所述多个寄存器分别是配置为调用者保存属性的通用寄存器。
11.一种处理系统,其特征在于,包括:
如权利要求1至10任一项所述的处理装置;以及
存储器,与所述处理装置耦合,适于提供所述存储单元以及至少一个中断服务例程,所述处理装置通过运行所述至少一个中断服务例程之一实现相应的所述中断服务。
12.根据权利要求11所述的处理系统,其特征在于,所述存储器还适于提供一个或多个所述决策数据,每个所述决策数据分别与相应的所述中断服务和/或应用程序相关联,以便于所述处理装置根据需要响应的所述中断请求获得相应的所述决策数据。
13.根据权利要求12所述的处理系统,其特征在于,所述处理系统实现于片上系统芯片内。
14.一种处理方法,其特征在于,包括:
提供与中断请求对应的决策数据,所述决策数据表征的寄存器保存列表用于将多个寄存器中的一个或多个寄存器指定为与所述中断请求对应的现场保存寄存器;
响应所述中断请求以提供相应的中断服务;以及
基于在所述响应的过程中被操作的寄存器的列表,将所述列表指定的一个或多个所述寄存器指定为与所述中断请求对应的现场保存寄存器。
15.根据权利要求14所述的处理方法,其特征在于,响应所述中断请求以提供相应的中断服务的步骤包括:
在所述中断服务开始之前,对所述决策数据指定的各个现场保存寄存器的信息进行缓存;
在中断服务期间,若需要对所述多个寄存器之一进行操作且该寄存器的信息未被缓存,则在进行所述操作之前对该寄存器内存储的信息进行缓存;以及
在所述中断服务完成之后,利用缓存的信息将所述多个寄存器恢复至所述中断服务之前的状态。
16.根据权利要求15所述的处理方法,其特征在于,基于在所述响应的过程中被操作的寄存器的列表,将所述列表指定的一个或多个所述寄存器指定为与所述中断请求对应的现场保存寄存器的步骤包括:
采集与所述中断服务对应的训练数据;以及
根据所述训练数据调整与该中断服务对应的所述决策数据,
所述训练数据包括如下信息:在所述中断服务完成时需要被恢复的所述寄存器的列表,和/或在所述中断服务期间被操作的所述寄存器的列表,以便于调整后的所述决策数据将所述训练数据指示的各个寄存器指定为所述中断服务对应的现场保存寄存器。
17.根据权利要求16所述的处理方法,其特征在于,根据所述训练数据调整与该中断服务对应的所述决策数据的步骤包括:
根据所述训练数据将所述中断服务期间未被操作的现场保存寄存器和/或在所述中断服务结束时不需要被恢复的现场寄存器从所述决策数据指定的寄存器保存列表中删除。
18.根据权利要求16所述的处理方法,其特征在于,响应所述中断请求以提供相应的中断服务的步骤还包括:
对应于当前中断服务,在未采集到所述训练数据的情况下,所述决策数据为初始状态,
在初始状态下,被所述决策数据指定的现场保存寄存器的个数为零,或小于所述多个寄存器的总数量。
19.根据权利要求15所述的处理方法,其特征在于,响应所述中断请求以提供相应的中断服务的步骤还包括:
在响应于当前中断请求的所述中断服务期间,若中断处理模块需要处理优先级高于当前中断请求的另一中断请求,则提供所述另一中断请求对应的所述决策数据,以便于在当前中断请求的响应过程中基于该决策数据嵌套执行针对所述另一中断请求的响应过程。
20.根据权利要求15所述的处理方法,其特征在于,响应所述中断请求以提供相应的中断服务的步骤还包括:
在当前中断服务已结束且所述多个寄存器未被完全恢复至所述中断服务之前的状态的情况下,若需要继续处理下一中断服务,则在提供所述下一中断服务之前不对各所述寄存器的内容进行恢复和缓存,以便于在所述下一中断服务结束之后利用当前中断服务开始前缓存的信息将所述多个寄存器恢复至所述当前中断服务开始之前的状态。
21.一种计算机可读介质,所述计算机可读介质存储有计算机指令,所述计算机指令被执行时,实现如权利要求14至20任一项所述的处理方法。
CN202011388187.9A 2020-12-01 2020-12-01 处理装置、处理系统和处理方法 Pending CN114579264A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011388187.9A CN114579264A (zh) 2020-12-01 2020-12-01 处理装置、处理系统和处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011388187.9A CN114579264A (zh) 2020-12-01 2020-12-01 处理装置、处理系统和处理方法

Publications (1)

Publication Number Publication Date
CN114579264A true CN114579264A (zh) 2022-06-03

Family

ID=81767835

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011388187.9A Pending CN114579264A (zh) 2020-12-01 2020-12-01 处理装置、处理系统和处理方法

Country Status (1)

Country Link
CN (1) CN114579264A (zh)

Similar Documents

Publication Publication Date Title
US9262160B2 (en) Load latency speculation in an out-of-order computer processor
CN105074666B (zh) 执行在具有不同指令集架构的处理器上的操作系统
JP4690988B2 (ja) 持続的なユーザレベルスレッド用の装置、システムおよび方法
US5872985A (en) Switching multi-context processor and method overcoming pipeline vacancies
US6230259B1 (en) Transparent extended state save
US20120084477A1 (en) Transactional Memory Preemption Mechanism
EP3398113B1 (en) Loop code processor optimizations
US20100287360A1 (en) Task Processing Device
US10296343B2 (en) Hybrid atomicity support for a binary translation based microprocessor
JP2005514678A (ja) 集中デバイス・アプリケーション用の効果的な処理を備えたマルチスレッド・プロセッサ
US20100050184A1 (en) Multitasking processor and task switching method thereof
US20130036426A1 (en) Information processing device and task switching method
WO2017054541A1 (zh) 一种处理器及其处理任务的方法、存储介质
US20170262291A1 (en) Heterogeneous computing system with a shared computing unit and separate memory controls
US11734079B2 (en) Methods of hardware and software-coordinated opt-in to advanced features on hetero ISA platforms
CN114356420A (zh) 指令流水线的处理方法及装置、电子装置及存储介质
WO2012054020A1 (en) Low power execution of a multithreaded program
CN110806900B (zh) 一种访存指令处理方法及处理器
US9235417B2 (en) Real time instruction tracing compression of RET instructions
US9946665B2 (en) Fetch less instruction processing (FLIP) computer architecture for central processing units (CPU)
CN114579264A (zh) 处理装置、处理系统和处理方法
US9329893B2 (en) Method for resuming an APD wavefront in which a subset of elements have faulted
CN113032154B (zh) 一种虚拟cpu的调度方法、装置、电子设备及存储介质
CN114924792A (zh) 指令译码单元、指令执行单元及相关装置和方法
CN113961452A (zh) 硬中断方法和相关装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240222

Address after: 310052 Room 201, floor 2, building 5, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province

Applicant after: C-SKY MICROSYSTEMS Co.,Ltd.

Country or region after: China

Address before: 200120 floor 5, No. 366, Shangke road and No. 2, Lane 55, Chuanhe Road, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai

Applicant before: Pingtouge (Shanghai) semiconductor technology Co.,Ltd.

Country or region before: China