首页> 中国专利> 具有内嵌中断服务功能的中断返回指令

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

摘要

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

著录项

  • 公开/公告号CN104011684A

    专利类型发明专利

  • 公开/公告日2014-08-27

    原文格式PDF

  • 申请/专利权人 英特尔公司;

    申请/专利号CN201180075869.7

  • 申请日2011-12-22

  • 分类号G06F9/48;G06F9/30;G06F9/38;

  • 代理机构上海专利商标事务所有限公司;

  • 代理人何焜

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 01:24:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-01-26

    授权

    授权

  • 2014-09-24

    实质审查的生效 IPC(主分类):G06F9/48 申请日:20111222

    实质审查的生效

  • 2014-08-27

    公开

    公开

说明书

背景技术

技术领域

本发明的领域一般涉及计算系统,且尤其涉及具有嵌入式中断服务功能的 中断返回指令。

背景技术

指令执行流水线

图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的该值对应的特定问题的特定微操 作集合的输出。换句话说,来自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指令可采用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。

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、磁或光卡或适于存储电子 指令的其它类型的机器可读介质。还可从远程计算机(例如,服务器)将程序 代码作为体现在传播介质中的数据信号(例如,经由通信链路(例如,网络连 接))下载至请求计算机(例如,客户机)。

在上述说明书中,已参考本发明具体示例实施例描述了本发明。然而,显 然可对这些实施例作出各种修改和改变,而不背离如所附权利要求所述的本发 明的更宽泛精神和范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号