CN104011684A - 具有内嵌中断服务功能的中断返回指令 - Google Patents
具有内嵌中断服务功能的中断返回指令 Download PDFInfo
- Publication number
- CN104011684A CN104011684A CN201180075869.7A CN201180075869A CN104011684A CN 104011684 A CN104011684 A CN 104011684A CN 201180075869 A CN201180075869 A CN 201180075869A CN 104011684 A CN104011684 A CN 104011684A
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- microoperation
- interrupt
- input operand
- 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.)
- Granted
Links
- 239000004065 semiconductor Substances 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 34
- 230000015654 memory Effects 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 18
- 238000013461 design Methods 0.000 claims description 9
- 230000004044 response Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 17
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 240000004859 Gamochaeta purpurea Species 0.000 description 1
- 206010027476 Metastases Diseases 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000009401 metastasis Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/327—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for interrupts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task 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 XY指令具有对于N个中断的内嵌的硬件支持。注意,更一般地,电路403和404可被称为存储电路。此处,可使用任何类型的存储电路。
对于可呈现给功能单元的X的每一个不同值,查找表(第一ROM电路403)使指针与第二ROM电路404中的特定微代码集合相关联。因此,在执行期间,当程序代码输入操作数X被呈现给第一ROM电路403时,第一ROM电路403呈现指向ROM电路404内的设计为处理X的该值对应的特定问题的特定微操作集合的输出。换句话说,来自ROM403的指针指向组405_1到405_N中的一组。
作为示例,考虑其中N=2(即,仅支持两个不同中断)的简单实现。此处,考虑第一硬件支持的中断是转换后备缓冲器(TLB)页面未命中,且第二硬件支持的中断是由特定SOC逻辑块(诸如加速器,如图形加速器)对输入参数进行的调用。
为了合适地处理TLB页面未命中中断,需要将具有需要的转换信息的虚拟和物理页面号码(number)插入TLB结构(可以是缓存的和/或在存储器内的)。为了合适地处理SOC逻辑块对输入参数的调用,SOC逻辑块需要提供标识在何处可找到信息(如,为寄存器空间或在存储器内)的地址信息。
由此,ROM404内的第一组微代码405_1包括需要将虚拟和物理页面号码插入TLB的微操作,ROM404内的第二组微代码405_2包括来理解何处存储加速器期望的输入并将它们各自的地址信息提供给SOC逻辑块的所需要的微操作。
逻辑电路406包括执行这些操作所需要的逻辑电路。在一实施例中,逻辑电路406充当迷你可编程机器,利用在查找表403的输出处所标识的微代码组来“在ROM404之外执行”。
注意,中断可包括问题代码X和返回指针地址Y之外的附加参数。例如,SOC逻辑块需要的特定参数将需要由调用程序表达。为了标识期望参数,逻辑406将需要这个信息。由此,在一实施例中,IRETOVLD指令可采用IRETOVLDX 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、EDORAM等);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。
ICH705负责确保该数据正确地在系统存储器703及其合适的对应计算系统接口(以及内存设备,如果计算系统是如此设计的话)之间传递。MCH702负责管理系统存储器703在处理器701、接口和内存元件之间的访问的各种竞争请求,这些竞争请求相对于彼此在时间上紧接地出现。
一个或多个I/O设备708也被实现在典型的计算系统中。I/O设备一般负责将数据转移至计算系统(例如联网适配器)和/或从计算系统转移;或者负责计算系统中的大规模非易失性存储(例如硬盘驱动器)。ICH705在其自身与所示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、DVD ROM、EPROM、EEPROM、磁或光卡或适于存储电子指令的其它类型的机器可读介质。还可从远程计算机(例如,服务器)将程序代码作为体现在传播介质中的数据信号(例如,经由通信链路(例如,网络连接))下载至请求计算机(例如,客户机)。
在上述说明书中,已参考本发明具体示例实施例描述了本发明。然而,显然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发明的更宽泛精神和范围。
Claims (20)
1.一种实现在半导体芯片上的指令流水线,包括:
执行单元,具有如下部件以执行中断处理指令:
a)存储电路,用于保持不同的微操作集合,其中每一微操作集合用于处理不同中断;
b)第一逻辑电路,用于执行所述不同微操作集合中的一微操作集合以处理中断,所述微操作集合针对所述中断而设计;
c)第二逻辑电路,用于在所述第一逻辑电路已经处理了所述中断之后将程序流返回至调用程序。
2.如权利要求1所述的指令流水线,其特征在于,所述存储电路是ROM。
3.如权利要求1所述的指令流水线,其特征在于,所述执行单元还包括查找表电路,所述查找表电路响应于呈现给所述查找表电路的所述中断的问题代码来提供指向所述存储电路内的所述集合之一的指针。
4.如权利要求3所述的指令流水线,其特征在于,所述查找表电路包括ROM。
5.如权利要求3所述的指令流水线,其特征在于,所述查找表电路耦合至寄存器,所述寄存器用于存储所述问题代码。
6.如权利要求1所述的指令流水线,其特征在于,还包括用于存储返回指针地址的寄存器。
7.如权利要求6所述的指令流水线,其特征在于,所述寄存器耦合至所述第二逻辑电路。
8.一种实现在半导体芯片上的指令流水线,包括:
执行单元,具有如下部件以执行中断处理指令:
a)存储电路,用于保持不同的微操作集合,其中每一微操作集合用于处理不同中断;
b)第一逻辑电路,用于执行所述不同微操作集合中的一微操作集合以处理中断,所述微操作集合针对所述中断而设计;
c)第二逻辑电路,用于在所述第一逻辑电路已经处理了所述中断之后将程序流返回至调用程序;
d)寄存器,用于保持由所述调用程序提供的所述指令的输入操作数信息,所述输入操作数信息指定由所述调用程序所期望的数据项,所述寄存器耦合至所述第一逻辑电路。
9.如权利要求8所述的指令流水线,其特征在于,所述存储电路是ROM。
10.如权利要求8所述的指令流水线,其特征在于,所述执行单元还包括查找表电路,所述查找表电路响应于呈现给所述查找表电路的所述中断的问题代码来提供指向所述存储电路内的所述集合之一的指针。
11.如权利要求10所述的指令流水线,其特征在于,所述查找表电路包括ROM。
12.如权利要求10所述的指令流水线,其特征在于,所述查找表电路耦合至寄存器,所述寄存器用于存储所述问题代码。
13.如权利要求8所述的指令流水线,其特征在于,还包括用于存储返回指针地址的寄存器。
14.如权利要求13所述的指令流水线,其特征在于,所述寄存器耦合至所述第二逻辑电路。
15.一种由处理器流水线的执行单元执行以执行指令的方法,所述方法包括:
接收第一输入操作数,所述第一输入操作数指定调用程序遭遇的问题;
接收第二输入操作数,所述第二输入操作数指定返回所述调用程序的返回指针地址;
使用所述第一输入操作数作为查找参数来标识设计为处理所述问题的微代码集合;
执行所述微代码以处理所述问题;
使用所述返回地址指针来将程序流返回所述调用程序。
16.如权利要求15所述的方法,其特征在于,还包括使用通过利用所述查找参数执行的查找产生的指向存储电路中的指针来取出所述微代码。
17.如权利要求16所述的方法,其特征在于,用第一ROM执行所述查找。
18.如权利要求16所述的方法,其特征在于,所述存储电路包括第二ROM。
19.如权利要求18所述的方法,其特征在于,还包括接收第三输入操作数,所述第三输入操作数标识所述调用方法所期望的数据。
20.如权利要求19所述的方法,其特征在于,所述方法还包括所述微代码集合使用所述第三输入操作数来标识所述数据。
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 true CN104011684A (zh) | 2014-08-27 |
CN104011684B 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) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371807A (zh) * | 2016-08-30 | 2017-02-01 | 华为技术有限公司 | 一种扩展处理器指令集的方法及装置 |
CN110209473A (zh) * | 2018-04-12 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 中断处理设备、云服务器、中断处理方法及业务处理方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9378164B2 (en) * | 2011-12-22 | 2016-06-28 | 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 |
US11507414B2 (en) * | 2020-11-25 | 2022-11-22 | Cadence Design Systems, Inc. | Circuit for fast interrupt handling |
Citations (6)
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)
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 |
US9378164B2 (en) * | 2011-12-22 | 2016-06-28 | Intel Corporation | Interrupt return instruction with embedded interrupt service functionality |
-
2011
- 2011-12-22 US US13/997,651 patent/US9378164B2/en active Active
- 2011-12-22 WO PCT/US2011/066950 patent/WO2013095532A1/en active Application Filing
- 2011-12-22 CN CN201180075869.7A patent/CN104011684B/zh active Active
-
2012
- 2012-12-18 TW TW101148092A patent/TWI486879B/zh active
-
2016
- 2016-06-27 US US15/194,558 patent/US10095520B2/en active Active
Patent Citations (6)
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 | 高通股份有限公司 | 用于推测式中断向量预取的设备及方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106371807A (zh) * | 2016-08-30 | 2017-02-01 | 华为技术有限公司 | 一种扩展处理器指令集的方法及装置 |
WO2018040494A1 (zh) * | 2016-08-30 | 2018-03-08 | 华为技术有限公司 | 一种扩展处理器指令集的方法及装置 |
CN106371807B (zh) * | 2016-08-30 | 2019-03-19 | 华为技术有限公司 | 一种扩展处理器指令集的方法及装置 |
CN110209473A (zh) * | 2018-04-12 | 2019-09-06 | 腾讯科技(深圳)有限公司 | 中断处理设备、云服务器、中断处理方法及业务处理方法 |
CN110209473B (zh) * | 2018-04-12 | 2023-04-18 | 腾讯科技(深圳)有限公司 | 中断处理设备、云服务器、中断处理方法及业务处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104011684B (zh) | 2018-01-26 |
US9378164B2 (en) | 2016-06-28 |
WO2013095532A1 (en) | 2013-06-27 |
US10095520B2 (en) | 2018-10-09 |
US20130326101A1 (en) | 2013-12-05 |
TWI486879B (zh) | 2015-06-01 |
US20160306630A1 (en) | 2016-10-20 |
TW201342241A (zh) | 2013-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10678575B2 (en) | Instruction-set support for invocation of VMM-configured services without VMM intervention | |
CN107710150B (zh) | 从包含层次子例程信息的中间代码产生目标代码 | |
US9658890B2 (en) | Runtime agnostic representation of user code for execution with selected execution runtime | |
US10592218B2 (en) | Dynamic data and compute resource elasticity | |
CN104011684A (zh) | 具有内嵌中断服务功能的中断返回指令 | |
US20170192762A1 (en) | Declarative programming model with a native programming language | |
JP2005222533A (ja) | 挿入されたメッセージ修正を使用した、コード作成のため受信したメッセージディスパッチの調整 | |
US10248456B2 (en) | Method and system for providing stack memory management in real-time operating systems | |
WO2012096723A1 (en) | Scalar integer instructions capable of execution with three registers | |
US10229045B2 (en) | Conditional stack frame allocation | |
US20120204014A1 (en) | Systems and Methods for Improving Divergent Conditional Branches | |
US9141353B2 (en) | Dynamically building locale objects at run-time | |
US9760282B2 (en) | Assigning home memory addresses to function call parameters | |
EP2277109B1 (en) | Operating system fast run command | |
EP3906470B1 (en) | Techniques for scheduling instructions in compiling source code | |
US20190310857A1 (en) | Method of Concurrent Instruction Execution and Parallel Work Balancing in Heterogeneous Computer Systems | |
US9792093B2 (en) | Dynamically building subsections of locale objects at run-time | |
KR20050043299A (ko) | 임베디드 시스템에서 동적 할당 메모리를 사용하여인터럽트를 처리하기 위한 장치 및 방법 |
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 |