CN104011684B - 具有内嵌中断服务功能的中断返回指令 - Google Patents

具有内嵌中断服务功能的中断返回指令 Download PDF

Info

Publication number
CN104011684B
CN104011684B CN201180075869.7A CN201180075869A CN104011684B CN 104011684 B CN104011684 B CN 104011684B CN 201180075869 A CN201180075869 A CN 201180075869A CN 104011684 B CN104011684 B CN 104011684B
Authority
CN
China
Prior art keywords
instruction
microoperation
register
caller
code
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.)
Active
Application number
CN201180075869.7A
Other languages
English (en)
Other versions
CN104011684A (zh
Inventor
X·蒋
方震
S·马基嫩
R·G·伊利卡尔
R·艾耶
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN104011684A publication Critical patent/CN104011684A/zh
Application granted granted Critical
Publication of CN104011684B publication Critical patent/CN104011684B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/327Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

描述了实现在半导体芯片上的指令流水线。该半导体芯片包括执行单元,具有如下项来执行中断处理指令。存储电路,用于保持不同的微操作集合,其中每一微操作集合用于处理不同中断。第一逻辑电路,用于执行所述微操作集合中的一微操作集合以处理中断,所述微操作集合针对该中断而设计。第二逻辑电路,用于在第一逻辑电路已经处理了所述中断之后将程序流返回至调用程序。

Description

具有内嵌中断服务功能的中断返回指令
背景技术
技术领域
本发明的领域一般涉及计算系统,且尤其涉及具有嵌入式中断服务功能的中断返回指令。
背景技术
指令执行流水线
图1示出了在半导体芯片上用逻辑电路实现的处理核100的高级图。该处理核包括流水线101。该流水线由各自被设计成在完全执行程序代码指令所需的多步骤过程中执行特定步骤的多个级组成。这些通常至少包括:1)指令取出和解码;2)数据取出;3)执行;4)写回。执行级对由相同指令标识出并在另一上述先前级(例如,步骤2)中被取出的数据执行由上述先前步骤(例如在步骤1)中所取出和解码的指令所标识出的特定操作。被操作的数据通常是从(通用)寄存器存储空间102中取出的。在该操作完成时所创建的新数据通常也被“写回”到寄存器存储空间(例如,在级4处)。
与执行级相关联的逻辑电路通常由多个“执行单元”或“功能单元”103_1至103_N构成,这些单元各自被设计成执行其自身的独特的操作子集(例如,第一功能单元执行整数数学操作,第二功能单元执行浮点指令,第三功能单元执行自/至高速缓存/存储器的加载/存储操作等等)。由所有这些功能单元执行的所有操作的集合与处理核100所支持的“指令集”相对应。
IRET指令
图2涉及中断、错误、或异常的服务。软件程序经常可被视为多个并发的活动程序和/或过程。尽管没有严格要求,实践中,程序/过程202和203对应于不同的软件和/或硬件“线程”。为简洁起见,由于程序、过程和线程可各自被视为所执行的指令的连续序列,术语“程序”也可被用于指过程以及线程。
通常,活动程序201(如,设备驱动程序或应用软件程序)将遭遇一些类型的问题,并通过执行“中断指令”((INTRPT_INSTR))202,向中断处理程序203报告或“抛出”中断、错误、或异常。此处,中断指令202是作为中断、错误、或异常的结果而调用中断处理程序的程序代码的任意部分。另外,将中断、错误、或异常中的任一个称为“中断”。中断处理程序203一般是专门设计以处理中断(如,操作系统(OS)内核的中断处理程序)的系统程序。由于活动程序201调用中断处理程序203,活动程序201也可被称为调用程序201。
中断指令202的功能一般包括将两项信息传递给中断处理程序203:i)标识已经遭遇到的特定问题的特定代码204和/或其他信息项;和ii)返回地址指针205,标识在中断被处理之后要执行的调用程序201的下一个指令206的地址。
中断处理程序203“处理”引起中断发生的问题。处理程序203a的开始部分使用特殊代码204作为查找表206的查找参数,标识被写入来处理由代码204标识的特定问题的子例程程序203b的初始地址。程序流程跳至这个子例程203b且处理引起中断的问题。一旦处理了引起中断的问题,就执行IRET指令203c来使得过程流跳回或“返回”207至调用程序201。由此,IRET指令的功能包括引用引起期望程序流跳转的返回地址指针205。
附图说明
本发明是作为示例说明的,而不仅限制于各个附图的图形,在附图中,类似的参考编号表示类似的元件,其中:
图1示出指令执行流水线;
图2示出处理中断的传统执行;
图3示出用于处理中断的改进方法;
图4示出执行单元逻辑电路的实施例,该电路能执行对应于改进的中断处理方法的指令;
图5示出可由图4的指令执行逻辑执行的方法;
图6示出更详细的指令执行流水线;
图7示出计算系统。
具体实施方式
概览
具体实施方式
面向问题的处理器开发,特别是在芯片上系统(SOC)实现的嵌入式处理器的情况下,定义为鉴于处理器和SOC芯片被设计用于的广泛扩展的各种应用的处理器指令集。在没有足够防范的情况下,将可适合任何应用的所有指令集设计到“标准核”中可将指令集扩展为包括太多的指令。
在服务中断处理的情况下,例如,如果特殊指令被设计为特别地支持可在任何应用/环境中出现的很多各种类型的中断的指令集,指令集扩展为支持中断处理可达到极限,最终导致对于任何应用都是较劣地设计的处理器。即,例如,可能将数十或数百特殊指令设计至标准指令集,但是对于大多应用而言,实际上需要指令的较小的子集。另外,使用的特定子集可对于各应用而不同。
与此同时,在中断服务中设计的对在一系列不同的可能/潜在的中断的硬件支持避免了必须逐处理器、逐应用地来定制修改硬件支持、或将硬件支持的中断处理放在一起的相反的问题集。
实现中断服务的扩展的硬件支持作为标准处理器设计的一部分而不过度扩展处理器的指令集的问题的解决方法在于,将硬件支持设计到IRET指令本身的功能里。此处,IRET指令接受:i)第一输入操作数X,标识遇到的特定问题,和ii)第二输入操作数Y,是标识在处理了引起中断的问题之后将要被执行的调用程序的下一个指令的地址。
显然,将中断服务的硬件支持内嵌到IRET指令的功能里并没有扩展指令集。即,可调用相同的IRET指令来将控制转移回(可能地)引起(可能地)任何中断的任何调用程序,且IRET指令已经将直接处理(可能地)任何中断的能力内嵌在自身内。
方便起见,本发明的IRET指令此后将被称为IRETOVLD指令(IRET“过载”的助记符号)。图3示出可直接与图2的传统过程流相比较的过程流。此处,与图2中类似,调用程序301向中断处理程序303提出中断302。
如上所述,中断指令302的功能包括将两项信息传递给中断处理程序303:i)标识已经遭遇到的特定问题的特定代码304和/或其他信息项;和ii)返回地址指针305,标识在已处理中断之后要执行的调用程序301的下一个指令306的地址。
在一个实施例中,通过调用程序301,两项信息304、305正式被传输写入寄存器或存储器空间。之后,这两项的地址被包括在形式IRETOVLD X Y的指令内。此处,X对应于问题代码信息304且Y对应于返回地址指针305。在一实施例中,X和Y不是显性操作数而被隐性地传输。例如,在又一个实施例中,X参数通过控制寄存器的部分被传输至中断处理程序,控制寄存器诸如x86架构中的CR1控制寄存器或其他架构中的等效的控制寄存器。另外,返回地址指针Y完全没有被实现为操作数。而是,当中断发生时,返回地址指针被推入内核栈。IRETOVLD指令从内核栈(且没有从显性操作数)中得到返回地址和处理器状态标志。然而,为简洁起见和容易理解,在下文描述中提及X和Y,就好像它们是显性的。
然而,读者要注意,使用控制寄存器和将返回地址推入内核栈允许IRETOVLD指令向下兼容地或通过代码调用,该代码没有理解IRETOVLD的功能而是作为传统IRET指令。由此,为了保持IRETOVLD向下兼容,或至少能在不引入新的指令的情况下增加新的功能,IRETOVLD指令在技术上被实现为“IRET”指令而不是新的“IRETOVLD”指令。以此方式,理解此处描述的“新的”IRET功能的新的软件可利用该指令,同时,例如,未理解IRET功能的旧有软件可仍引用作为传统IRET指令的指令。
响应于调用程序301的调用,由处理器流水线取出并解码IRETOVLD X Y指令。在流水线的数据取出阶段,信息的X和Y项304、305被取出并呈现给执行单元,该执行单元执行IRETOVLD X Y指令的功能。
IRETOVLD X Y指令的执行完全处理了中断,且当中断完成后,将程序流307返回至调用程序301。比较图2和图3,注意用于查找合适的处理子例程、并实现子例程本身的图2的程序代码指令203a、203b,不需要在图3的过程中执行。理想地,仅执行IRETOVLD X Y指令来完全处理中断并将程序流返回至调用程序301。
图4示出具有执行IRETOVLD X Y指令的功能的功能单元的电路设计的实施例。如图4中所见,逻辑设计包括第一寄存器401来存储第一操作数X(问题代码)和第二寄存器402来存储第二操作数Y(返回地址指针)。操作中,将问题代码X呈现给用作查找表的第一ROM电路403。第二ROM电路404维持不同的微代码集合405_1到405_N。每一微代码集合对应于用于处理特定中断的微代码。在第二ROM电路404中具有N组这样的微代码,IRETOVLD X Y指令具有对于N个中断的内嵌的硬件支持。注意,更一般地,电路403和404可被称为存储电路。此处,可使用任何类型的存储电路。
对于可呈现给功能单元的X的每一个不同值,查找表(第一ROM电路403)使指针与第二ROM电路404中的特定微代码集合相关联。因此,在执行期间,当程序代码输入操作数X被呈现给第一ROM电路403时,第一ROM电路403呈现指向ROM电路404内的设计为处理X的该值对应的特定问题的特定微操作集合的输出。换句话说,来自ROM 403的指针指向组405_1到405_N中的一组。
作为示例,考虑其中N=2(即,仅支持两个不同中断)的简单实现。此处,考虑第一硬件支持的中断是转换后备缓冲器(TLB)页面未命中,且第二硬件支持的中断是由特定SOC逻辑块(诸如加速器,如图形加速器)对输入参数进行的调用。
为了合适地处理TLB页面未命中中断,需要将具有需要的转换信息的虚拟和物理页面号码(number)插入TLB结构(可以是缓存的和/或在存储器内的)。为了合适地处理SOC逻辑块对输入参数的调用,SOC逻辑块需要提供标识在何处可找到信息(如,为寄存器空间或在存储器内)的地址信息。
由此,ROM 404内的第一组微代码405_1包括需要将虚拟和物理页面号码插入TLB的微操作,ROM 404内的第二组微代码405_2包括来理解何处存储加速器期望的输入并将它们各自的地址信息提供给SOC逻辑块的所需要的微操作。
逻辑电路406包括执行这些操作所需要的逻辑电路。在一实施例中,逻辑电路406充当迷你可编程机器,利用在查找表403的输出处所标识的微代码组来“在ROM 404之外执行”。
注意,中断可包括问题代码X和返回指针地址Y之外的附加参数。例如,SOC逻辑块需要的特定参数将需要由调用程序表达。为了标识期望参数,逻辑406将需要这个信息。由此,在一实施例中,IRETOVLD指令可采用IRETOVLD X Y Z的形式,其中Z保持实现中断处理的功能所需要的附加输入信息(如,由调用程序提供的和/或与有关特定系统的信息)。由此,如图4中所见,第三输入操作数寄存器407耦合至逻辑406。
当逻辑406完成对中断的处理时,运用返回跳转逻辑408来将程序流返回至调用程序。返回跳转逻辑408包括与无条件程序跳转指令同类的逻辑电路。返回跳转逻辑408接受返回指针地址Y且本质上创建了到调用程序的由返回指针Y指定的指令处的无条件跳转。
图5示出可由图4的指令执行逻辑电路执行的方法的实施例。如图4中可见,从第一寄存器501处接收标识特定中断的第一输入操作数,且,在第二寄存器502内接收指定返回地址指针的第二输入操作数。
来自第一寄存器的输入操作数呈现给查找表电路,且在响应503中产生存储于执行单元内的存储电路内的微操作集合的指针。微操作集合对应于合适地处理第一寄存器内指定的特定中断的特定功能。然后执行微操作集合来处理中断504。任选地,可从第三寄存器505处接收处理中断(如,由调用方法提供)需要的附加输入操作数信息,且由操作微代码使用该附加输入操作数信息来合适地处理中断。当中断被处理时,使用返回地址指针来将程序流返回至调用方法506。
图6示出一般的处理核600,该处理核600被认为描述许多不同类型的处理核架构,例如复杂指令集(CISC)、精简指令集(RISC)和超长指令字(VLIW),能实现此处描述的IRETOVLD指令。图6的一般处理核600包括:1)取出单元603,其取出指令(例如,从高速缓存或存储器);2)解码单元604,其解码指令;3)调度单元605,其确定指令发布到执行单元606的时序和/或顺序(注意,调度器是任选的);4)执行单元606,其执行指令;5)引退单元607,其表示指令的成功完成。注意,处理核部分地或完全地可以包括或可以不包括微代码608,以控制执行单元606的微操作。在前面的讨论中提及的指令执行资源/逻辑可利用执行单元606内的执行单元中的一个或多个实现。
具有前述功能的处理核也可实现在各种计算系统中。图7示出计算系统(例如计算机)的一个实施例。图7的示例性计算系统包括:1)可被设计成包括两个和三个寄存器标量整数和向量指令执行的一个或多个处理核701;2)存储器控制中枢(MCH)702;3)系统存储器703(其存在不同的类型,例如DDR RAM、EDO RAM等);4)高速缓存704;5)I/O控制中枢(ICH)705;6)图形处理器706;7)显示器/屏幕707(其存在不同的类型,例如阴极射线管(CRT)、平板、薄膜晶体管(TFT)、液晶显示器(LCD)、DPL等)以及一个或多个I/O设备708。
一个或多个处理核701执行指令以执行计算系统实现的任何软件例程。指令频繁地涉及在数据上执行的某些种类的操作。数据和指令两者被存储在系统存储器703和高速缓存704中。高速缓存704通常被设计成具有比系统存储器703更短的等待时间。例如,高速缓存704可被集成到与处理器相同的硅片上和/或以较快的SRAM单元构造,而系统存储器703可以较慢的DRAM单元构造。通过往往将较频繁使用的指令和数据存储在高速缓存704而非系统存储器703中,计算机系统的总体性能效率提升。
系统存储器703有意地供计算系统中的其它组件使用。例如,从计算系统的各接口(例如键盘和鼠标、打印机端口、LAN端口、调制解调器端口等)接收或从计算系统(例如硬盘驱动器)的内存元件取出的数据在软件程序执行中由一个或多个处理器701对其运行前经常被临时地排队进入系统存储器703。类似地,软件程序确定应当从计算系统通过计算系统接口之一送至外部实体或存储在内存元件中的数据经常在传输或存储之前临时地排队进入系统存储器703。
ICH 705负责确保该数据正确地在系统存储器703及其合适的对应计算系统接口(以及内存设备,如果计算系统是如此设计的话)之间传递。MCH 702负责管理系统存储器703在处理器701、接口和内存元件之间的访问的各种竞争请求,这些竞争请求相对于彼此在时间上紧接地出现。
一个或多个I/O设备708也被实现在典型的计算系统中。I/O设备一般负责将数据转移至计算系统(例如联网适配器)和/或从计算系统转移;或者负责计算系统中的大规模非易失性存储(例如硬盘驱动器)。ICH 705在其自身与所示I/O设备708之间具有双向点对点链路。
以上讨论教导的进程可利用程序代码执行,诸如机器可执行指令,其导致机器执行这些指令以实现某些功能。在这种背景下,“机器”可以是将中间形式(例如抽象)指令转换成处理器专用指令(例如,抽象执行环境,诸如“虚拟机”(例如,Java虚拟机)解释器、公共语言运行时、高级语言虚拟机等)和/或设置在被设计成执行指令的半导体芯片中的电子电路(例如以晶体管实现的“逻辑电路”),诸如通用处理器和/或专用处理器。以上讨论教导的进程还可通过设计成执行进程(或其一部分)的电子电路来执行(替换机器或与机器组合),而不执行程序代码。
相信以上讨论教导的进程也可按各种软件部署框架(例如微软公司的.NET、Mono、Java,甲骨文公司的Fusion等)支持的各种面向对象或非面向对象的计算机编程语言(例如,Java、C#、VB、Python、C、C++、J#、APL、Cobol、Fortran、Pascal、Perl等)在源级程序代码中描述。源极程序代码可被转换成中间形式的程序代码(诸如Java字节代码、微软中间语言等),可将其理解为抽象执行环境(例如,Java虚拟机、公共语言运行时、高级语言虚拟机、解释器等),或者可直接编译成对象代码。
根据各种方法,通过1)编译中间形式的程序代码(例如在运行时间(例如JIT编译器)),2)解释中间形式的程序代码或3)在运行时间编译中间形式的程序代码和解释中间形式的程序代码的组合,抽象执行环境可将中间形式的程序代码转换成处理器专用代码。抽象执行环境可运行在各种操作系统上(诸如UNIX、LINUX、包括Windows族的微软操作系统、包括MacOS X的苹果计算机操作系统、Sun/Solaris、OS/2、Novell等)。
制品可用于存储程序代码。存储程序代码的制品可体现为但不限于一个或多个存储器(例如,一个或多个闪存、随机存取存储器(静态、动态或其它))、光盘、CD-ROM、DVDROM、EPROM、EEPROM、磁或光卡或适于存储电子指令的其它类型的机器可读介质。还可从远程计算机(例如,服务器)将程序代码作为体现在传播介质中的数据信号(例如,经由通信链路(例如,网络连接))下载至请求计算机(例如,客户机)。
在上述说明书中,已参考本发明具体示例实施例描述了本发明。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。

Claims (20)

1.一种实现在半导体芯片上的指令流水线,包括:
执行单元,具有如下部件以执行中断处理指令,所述中断处理指令包括指定问题代码的操作数:
a)存储电路,用于保持不同的微操作集合,其中每一微操作集合用于处理不同中断;
b)执行逻辑电路,用于执行所述不同微操作集合中的一微操作集合以处理中断,所述微操作集合针对所述中断而设计;
c)返回跳转逻辑电路,用于在所述执行逻辑电路已经处理了所述中断之后将程序流返回至调用程序;
d)查找表电路,用于响应于呈现给所述查找表电路的所述中断的问题代码来提供指向所述存储电路内的所述集合之一的指针。
2.如权利要求1所述的指令流水线,其特征在于,所述存储电路是ROM。
3.如权利要求1所述的指令流水线,其特征在于,所述查找表电路包括ROM。
4.如权利要求1所述的指令流水线,其特征在于,所述查找表电路耦合至寄存器,所述寄存器用于存储所述问题代码。
5.如权利要求1所述的指令流水线,其特征在于,还包括用于存储返回指针地址的寄存器,所述寄存器耦合至所述执行单元。
6.如权利要求5所述的指令流水线,其特征在于,所述寄存器耦合至所述返回跳转逻辑电路。
7.一种实现在半导体芯片上的指令流水线,包括:
执行单元,具有如下部件以执行中断处理指令,所述中断处理指令包括指定问题代码的操作数:
a)存储电路,用于保持不同的微操作集合,其中每一微操作集合用于处理不同中断;
b)执行逻辑电路,用于执行所述不同微操作集合中的一微操作集合以处理中断,所述微操作集合针对所述中断而设计;
c)返回跳转逻辑电路,用于在所述执行逻辑电路已经处理了所述中断之后将程序流返回至调用程序;
d)寄存器,用于保持由所述调用程序提供的所述指令的输入操作数信息,所述输入操作数信息指定由所述调用程序所期望的数据项,所述寄存器耦合至所述执行逻辑电路;
e)查找表电路,用于响应于呈现给所述查找表电路的所述中断的问题代码来提供指向所述存储电路内的所述集合之一的指针。
8.如权利要求7所述的指令流水线,其特征在于,所述存储电路是ROM。
9.如权利要求7所述的指令流水线,其特征在于,所述查找表电路包括ROM。
10.如权利要求7所述的指令流水线,其特征在于,所述查找表电路耦合至寄存器,所述寄存器用于存储所述问题代码。
11.如权利要求7所述的指令流水线,其特征在于,所述寄存器还用于存储返回指针地址。
12.如权利要求11所述的指令流水线,其特征在于,所述寄存器耦合至所述返回跳转逻辑电路。
13.一种由处理器流水线的执行单元执行以执行指令的方法,所述方法包括:
接收第一输入操作数,所述第一输入操作数指定调用程序遭遇的问题;
接收第二输入操作数,所述第二输入操作数指定返回所述调用程序的返回指针地址;
使用所述第一输入操作数作为查找参数来标识设计为处理所述问题的微代码集合;
执行所述微代码以处理所述问题;
使用所述返回地址指针来将程序流返回所述调用程序。
14.如权利要求13所述的方法,其特征在于,还包括使用通过利用所述查找参数执行的查找产生的指向存储电路中的指针来取出所述微代码。
15.如权利要求14所述的方法,其特征在于,用第一ROM执行所述查找。
16.如权利要求14所述的方法,其特征在于,所述存储电路包括第二ROM。
17.如权利要求16所述的方法,其特征在于,还包括接收第三输入操作数,所述第三输入操作数标识所述调用程序所期望的数据。
18.如权利要求17所述的方法,其特征在于,所述方法还包括所述微代码集合使用所述第三输入操作数来标识所述数据。
19.一种机器可读存储介质,所述机器可读存储介质包括代码,所述代码在被执行时使机器执行如权利要求13-18中的任一项所述的方法。
20.一种计算机实现的系统,包括用于执行如权利要求13-18中的任一项所述的方法的装置。
CN201180075869.7A 2011-12-22 2011-12-22 具有内嵌中断服务功能的中断返回指令 Active CN104011684B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066950 WO2013095532A1 (en) 2011-12-22 2011-12-22 Interrupt return instruction with embedded interrupt service functionality

Publications (2)

Publication Number Publication Date
CN104011684A CN104011684A (zh) 2014-08-27
CN104011684B true CN104011684B (zh) 2018-01-26

Family

ID=48669173

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180075869.7A Active CN104011684B (zh) 2011-12-22 2011-12-22 具有内嵌中断服务功能的中断返回指令

Country Status (4)

Country Link
US (2) US9378164B2 (zh)
CN (1) CN104011684B (zh)
TW (1) TWI486879B (zh)
WO (1) WO2013095532A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095532A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Interrupt return instruction with embedded interrupt service functionality
US10216662B2 (en) * 2015-09-26 2019-02-26 Intel Corporation Hardware mechanism for performing atomic actions on remote processors
CN106371807B (zh) * 2016-08-30 2019-03-19 华为技术有限公司 一种扩展处理器指令集的方法及装置
CN110209473B (zh) * 2018-04-12 2023-04-18 腾讯科技(深圳)有限公司 中断处理设备、云服务器、中断处理方法及业务处理方法
US11507414B2 (en) * 2020-11-25 2022-11-22 Cadence Design Systems, Inc. Circuit for fast interrupt handling

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4438492A (en) * 1980-08-01 1984-03-20 Advanced Micro Devices, Inc. Interruptable microprogram controller for microcomputer systems
CN1177147A (zh) * 1996-08-19 1998-03-25 三星电子株式会社 用于处理带参数传递的软件中断的系统和方法
CN1514350A (zh) * 2003-03-10 2004-07-21 智慧第一公司 选择性地中断抑制的装置及其模块和方法
CN1856098A (zh) * 2005-03-16 2006-11-01 索尼株式会社 移动目标检测设备、方法和程序
CN101339498A (zh) * 2007-07-05 2009-01-07 华东师范大学 采用risc结构的单片机
CN102112966A (zh) * 2008-08-08 2011-06-29 高通股份有限公司 用于推测式中断向量预取的设备及方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55123736A (en) * 1979-03-16 1980-09-24 Hitachi Ltd Interrupt control system
US4709324A (en) * 1985-11-27 1987-11-24 Motorola, Inc. Data processor control unit having an interrupt service using instruction prefetch redirection
US5850562A (en) * 1994-06-27 1998-12-15 International Business Machines Corporation Personal computer apparatus and method for monitoring memory locations states for facilitating debugging of post and BIOS code
US5774711A (en) * 1996-03-29 1998-06-30 Integrated Device Technology, Inc. Apparatus and method for processing exceptions during execution of string instructions
US5778220A (en) * 1996-11-18 1998-07-07 Intel Corporation Method and apparatus for disabling interrupts in a highly pipelined processor
US5901309A (en) 1997-10-07 1999-05-04 Telefonaktiebolaget Lm Ericsson (Publ) Method for improved interrupt handling within a microprocessor
EP0992889A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Interrupt processing during iterative instruction execution
US6581154B1 (en) * 1999-02-17 2003-06-17 Intel Corporation Expanding microcode associated with full and partial width macroinstructions
US6662297B1 (en) * 1999-12-30 2003-12-09 Intel Corporation Allocation of processor bandwidth by inserting interrupt servicing instructions to intervene main program in instruction queue mechanism
US6889279B2 (en) * 2000-12-11 2005-05-03 Cadence Design Systems, Inc. Pre-stored vector interrupt handling system and method
US7607133B2 (en) 2004-02-11 2009-10-20 Arm Limited Interrupt processing control
US7401210B2 (en) 2005-03-30 2008-07-15 Arm Limited Selecting subroutine return mechanisms
US8051235B1 (en) * 2005-11-11 2011-11-01 Ixys Ch Gmbh Conditional back-to-back interrupt vectoring
GB2489000B (en) * 2011-03-14 2019-09-11 Advanced Risc Mach Ltd Diagnosing code using single step execution
WO2013095532A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Interrupt return instruction with embedded interrupt service functionality

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4438492A (en) * 1980-08-01 1984-03-20 Advanced Micro Devices, Inc. Interruptable microprogram controller for microcomputer systems
CN1177147A (zh) * 1996-08-19 1998-03-25 三星电子株式会社 用于处理带参数传递的软件中断的系统和方法
CN1514350A (zh) * 2003-03-10 2004-07-21 智慧第一公司 选择性地中断抑制的装置及其模块和方法
CN1856098A (zh) * 2005-03-16 2006-11-01 索尼株式会社 移动目标检测设备、方法和程序
CN101339498A (zh) * 2007-07-05 2009-01-07 华东师范大学 采用risc结构的单片机
CN102112966A (zh) * 2008-08-08 2011-06-29 高通股份有限公司 用于推测式中断向量预取的设备及方法

Also Published As

Publication number Publication date
TWI486879B (zh) 2015-06-01
US10095520B2 (en) 2018-10-09
US20160306630A1 (en) 2016-10-20
US20130326101A1 (en) 2013-12-05
US9378164B2 (en) 2016-06-28
CN104011684A (zh) 2014-08-27
WO2013095532A1 (en) 2013-06-27
TW201342241A (zh) 2013-10-16

Similar Documents

Publication Publication Date Title
CN109240801B (zh) 在没有vmm介入的情况下对调用vmm配置的服务的指令集支持
CN104011684B (zh) 具有内嵌中断服务功能的中断返回指令
US8972698B2 (en) Vector conflict instructions
US6735682B2 (en) Apparatus and method for address calculation
US8615747B2 (en) Method and apparatus for dynamic code optimization
US6975325B2 (en) Method and apparatus for graphics processing using state and shader management
JPH0778738B2 (ja) ディジタル・コンピュータ・システム
WO2012096723A1 (en) Scalar integer instructions capable of execution with three registers
US10229044B2 (en) Conditional stack frame allocation
US8959319B2 (en) Executing first instructions for smaller set of SIMD threads diverging upon conditional branch instruction
US11763419B2 (en) GPR optimization in a GPU based on a GPR release mechanism
US20120284701A1 (en) Efficient conditional flow control compilation
CN104049947A (zh) 基于动态重命名的矢量寄存器堆的寄存器重新配置
US20110276979A1 (en) Non-Real Time Thread Scheduling
EP2689325B1 (en) Processor system with predicate register, computer system, method for managing predicates and computer program product
US9317636B1 (en) System and method for stopping integrated circuit simulation
US10481913B2 (en) Token-based data dependency protection for memory access
US20120136906A1 (en) Fixup cache tool for object memory compaction in an information handling system
US20160132428A1 (en) Assigning home memory addresses to function call parameters
CN101593095B (zh) 基于流水级的数据处理方法和系统
US11954758B2 (en) Dynamic wave pairing
US11977896B2 (en) Issuing a sequence of instructions including a condition-dependent instruction
CN100461090C (zh) 利用代码共享进行堆栈高速缓存的系统、方法和设备
CN107391223A (zh) 一种文件处理方法及装置
WO2024030277A1 (en) A runtime mechanism to optimize shader execution flow

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant