CN101495960A - 有效的中断返回地址保存机制 - Google Patents

有效的中断返回地址保存机制 Download PDF

Info

Publication number
CN101495960A
CN101495960A CNA2007800282580A CN200780028258A CN101495960A CN 101495960 A CN101495960 A CN 101495960A CN A2007800282580 A CNA2007800282580 A CN A2007800282580A CN 200780028258 A CN200780028258 A CN 200780028258A CN 101495960 A CN101495960 A CN 101495960A
Authority
CN
China
Prior art keywords
pseudoinstruction
instruction
general
return address
processor
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
Application number
CNA2007800282580A
Other languages
English (en)
Other versions
CN101495960B (zh
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101495960A publication Critical patent/CN101495960A/zh
Application granted granted Critical
Publication of CN101495960B publication Critical patent/CN101495960B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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
    • 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/3017Runtime instruction translation, e.g. macros
    • 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/30181Instruction operation extension or modification
    • 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
    • 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 or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Image Processing (AREA)

Abstract

一种用于使用通用寄存器在管线式处理器中有效地处理中断的系统、设备及方法。根据本发明,寄存器堆可经更新以有效地保存中断返回地址。当系统的处理器接收到中断请求时,或在程序的执行中发布所述请求时,产生伪指令。此伪指令以与其它指令相同的方式沿管线向下行进且通过致使用尚未完成其处理的前一指令的返回地址写入所述寄存器堆来更新所述寄存器堆。

Description

有效的中断返回地址保存机制
技术领域
本发明通常涉及处理器,且更特定来说,涉及更新寄存器堆以有效地保存中断返回地址的管线式处理器。
背景技术
实现较高计算机处理速度一直是制造者的目标且同样是使用者的目标。为增进高速度处理的目的,某些计算机处理器采用称为管线式处理的技术。并入有管线式架构的处理器允许多个指令同时存在于各个执行级中。
在管线式架构中,单个指令循环可包含五个级。这些级可按顺序描述如下:(1)提取;(2)解码;(3)存取寄存器堆;(4)执行;及(5)写入到寄存器堆。在管线式处理中,并行执行这些级的每一者中的处理以实现高速度处理。管线技术可用来通过增加一段时间中已完成指令的数目来增加处理器速度。
在此类处理器中,五个指令可在一个时间共同存在于管线中各个处理级中。例如,在处理的第一若干时钟循环中,指令一至五可同时处于各个执行级中。完成单个指令的五级处理不需在可开始随后指令的处理之前完成。
例如,在一个时间点处,可正提取指令五、正解码指令四、指令三正存取寄存器堆、正执行指令二且正将指令一写入到寄存器堆。在管线式处理中,通常按顺序提取每一指令且按顺序在随后级中进行处理。
管线式处理器还必须控制中断。所述中断可在(除其它情况之外)当自外围装置或在计算机程序的执行中发布中断请求信号时发生。当发生所述中断请求时,中断正在执行的程序。然后处理器临时保存正被执行的程序的状态且响应于所述中断请求发生其它处理。一旦中断处理完成,处理器就自所述程序被中断的点重新开始执行所述程序。
因此,被中断程序状态中必须保存的关键要素是指令地址,一旦中断处理完成,应在此处重新开始程序执行。此地址称为“返回地址”。在某些架构中,需要将此返回地址保存在为通用寄存器堆一部分的特定寄存器中。待解决的问题是如何提供具有存取寄存器堆以保存返回地址的能力的中断机制。
一些人已尝试通过使用寄存器堆的专门端口来保存返回地址。然而,处理器的寄存器堆的管理通常是设计中极复杂且性能关键方面,尤其在高频率、深管线式、超标量处理器中。额外的寄存器堆端口在定时、面积及电力方面可为高成本的,因此减少处理器的有效性。此外,许多高性能设计执行无次序指令处理,所述无次序指令处理可要求更复杂的寄存器堆管理,包含寄存器重命名、保留站及用于指令排序的完成缓冲器。所有这些复杂性都使简单地向寄存器堆提供另外端口以保存中断返回地址变得困难或提供特别控制路径来共享现有寄存器堆端口以保存中断返回地址也变得甚为困难。
发明内容
本发明提供一种用于将中断返回地址有效地保存在通用寄存器堆中的系统、设备及方法。本发明提供用于在发生中断时保存尚未退出管线的指令的程序计数器值或中断返回地址的机制。当发生中断时在管线中进行最多但仍未完全处理的程序指令在本文中有时称为管线中的最前面指令。
根据本发明的一个实施例,提供一种将中断返回地址有效地保存在管线式处理器的通用寄存器堆中的数据处理系统。所述系统包括经配置以响应于中断请求而产生伪指令的控制逻辑,其中所述伪指令经配置以致使将管线中最前面的指令的中断返回地址写入到通用寄存器堆;且其中所述伪指令进一步经配置以被插入管线中且以大致类似于其它指令的方式沿管线式处理器的管线向下行进。
根据本发明另一实施例,提供一种用于将中断返回地址有效地保存在通用寄存器堆中的设备。所述设备包括具有伪指令产生器的管线式处理器,所述伪指令产生器经配置以响应于中断请求而产生伪指令,其中所述伪指令经配置以致使将管线中最前面指令的中断返回地址写入到通用寄存器堆,且其中所述伪指令进一步经配置以被插入管线中且以大致类似于其它指令的方式沿管线式处理器的管线向下行进。
根据本发明又一实施例,提供一种用于将中断返回地址有效地保存在通用寄存器堆中的方法。所述方法包括:响应于中断请求,产生伪指令,所述伪指令经配置以致使将管线中最前面指令的返回地址写入到管线式处理器中的通用寄存器堆,且其中所述伪指令进一步经配置以被插入管线中且以大致类似于其它指令的方式沿管线式处理器的管线向下行进。
根据本发明又一实施例,提供一种用于将中断返回地址有效地保存在通用寄存器堆中的设备。所述设备包含多级管线式处理器,其经配置以执行中断处理,其中所述级包含经配置以接收指令的至少一个级及经配置以将结果回写到通用寄存器堆的至少一个级,所述处理器进一步经配置以处理来自程序的指令数据。
所述设备进一步包含经配置以响应于中断请求产生伪指令的控制逻辑,其中所述伪指令经配置以致使将管线中最前面指令的中断返回地址写入到通用寄存器堆,且其中所述伪指令进一步经配置以被插入管线中且以大致类似于其它指令的方式沿管线式处理器的管线向下行进。此设备包含多路复用器,其经配置以接收来自所述控制逻辑的所述伪指令及来自程序的所述指令数据两者,所述多路复用器进一步经配置以选择所述伪指令及指令数据中的至少一者且将所选定伪指令或指令数据输入到所述经配置以接收指令的至少一个管线级中。在此设备中,在中断处理已发生之后,所述处理器进一步经配置以在被写入到所述通用寄存器堆的最前面指令的中断返回地址处重新开始对指令数据的处理。
应理解,根据下文中仅以举例说明方式显示及描述本发明各种实施例的详细说明,所属技术领域的技术人员将易于明了本发明的其它实施例。应认识到,本发明能够具有其它及不同的实施例,且本发明的若干细节能够在各种其它方面进行修改,但所有一切均不背离本发明的精神及范围。因此,认为本文之图式及详细说明仅作为说明性质而非限制性质。
现在通过以下对说明性实施例及附图的详细说明的阅读,所述以及其它目标、特征及利益将变得清晰。
附图说明
图1是根据本发明一个实施例的管线式处理器控制及数据模型的方框图图解说明。
图2是图解说明根据本发明一个实施例在各种管线级处与时钟循环相关的中断处理的表格。
图3是图解说明一种根据本发明一个实施例用于将中断返回地址有效地保存在通用寄存器堆中的方法的流程图。
具体实施方式
本发明提供一种用于将中断返回地址有效地保存在通用寄存器堆中的系统、设备及方法。所述通用寄存器堆受管线的控制。根据本发明,通用寄存器堆可经更新以有效地保存在发生中断请求时管线中最前面指令的返回地址或程序计数器值。
当系统的处理器接收到中断请求信号时,所述处理器产生伪指令。与其它指令极类似地对此伪指令进行处理。其沿管线向下行进且通过致使用返回地址写入寄存器堆来更新寄存器堆。由于此伪指令如规律指令一样沿管线向下行进,因此其不仅更新寄存器堆还更新相关资源。不需要专门硬件来与寄存器堆相关联以用于保存中断返回地址。本文所述的系统、设备及方法可借助于通用寄存器来实施且因此,不需要寄存器堆的专门端口。
现在参照图1,其图解说明根据本发明一实施例的管线式数据处理器模型100。本文呈现五级管线模型以用于图解说明。所述五级可描述如下:(1)提取;(2)解码;(3)存取寄存器堆;(4)执行;及(5)写入到寄存器堆。处理器模型100的若干级可包含通用寄存器。当然,这些通用寄存器可含有其中存储数据而非实际数据的存储器位置。不存在或不需要特别寄存器。
就五级管线式处理器来描述本文所述的系统、设备及方法。然而,应理解,本文所述的系统、设备及方法可实施于具有更少或更多级的管线式处理器中。而且,本文所揭示的方法及系统可不需要将处理器分割成特定管线级组。
例如,所揭示级可进一步被划分成两个或两个以上级。可实施此划分以解决定时问题或促进更高处理器时钟速度。另一选择为,两个或两个以上级可组合成单个级。处理器可简单地包含接受指令的第一级及将结果写入到寄存器堆的第二级。所揭示的管线仅提供在适合本发明的处理器中可如何分割处理的一个实例。
如图1中所示,处理器控制模块110控制大体管线化操作及中断处理流程。提取级120可负责提取指令。可如存储器管理单元所协调从各种位置(包含从内装高速缓冲存储器或外部存储器)提取规律指令。
伪指令产生器117可以是可驻存于控制模块110中的控制逻辑。伪指令产生器117经配置以产生伪指令,所述伪指令经配置以致使返回地址被写入到通用寄存器堆。伪指令通常可以其被输入到管线中的方式来与规律指令区分。而且,所述伪指令通常执行特殊功能,因为其经设计以致使用中断返回地址写入寄存器堆。然而,一旦伪指令已被输入到管线中,其将正如已从存储器或另外位置提取的规律指令一样沿管线向下行进。在下文将更详细地描述伪指令的利用。多路复用器115可定位在提取级120与解码级130之间。多路复用器115可确定到解码级130的输入为提取级120处的指令或者为控制模块110中的伪指令产生器117所产生的伪指令。多路复用器115可经由选择线119选择所需到解码级的输入。
解码级130能够接收并解码在提取级120期间所提取的指令或另一选择为,接收并解码已在控制模块110的伪指令产生器117处产生的伪指令。假定没有请求任何中断处理,则通常每一指令将按顺序次序或例如按正在执行的计算机程序所确定的次序从提取级120到达解码级130。
将需要解码数据以确定下一指令的地址。地址可以作为下一顺序指令存在于例如缓冲器中。在某些实例中,例如,如果当前指令是分支指令,那么可需要从存储器或高速缓存器提取地址。解码级是管线的第一级,在此处,指令可被解码以确定指令结束的地方。
当服务中断时,可能会遇上若干问题。这些问题可与致使用返回地址写入寄存器堆相关联。
本发明利用寄存器堆受管线直接控制的事实。本发明的处理器架构使用寄存器堆来将中断返回地址有效地保存在通用寄存器堆中。
在控制模块110处接收到中断请求信号118的情况下,控制模块110确定是否经由选择线119执行服务中断。如果确定应该执行服务中断,那么伪指令产生器117经由路径113产生输入到多路复用器115的伪指令。之所以被称为“伪指令”,是因为其实际上不存在于正在执行的程序中。所述伪指令经配置以致使中断返回地址被写入到通用寄存器堆。此中断返回地址已被输入到控制模块110的伪指令产生器117中。
伪指令产生器117包含具有(例如)各种门及晶体管的控制逻辑。此伪指令经设计以将返回地址写入到寄存器堆。所述返回地址或程序计数器值将识别在不发生中断时接下来本该完成处理的最前面指令的位置。因此,返回地址将针对所述最前面指令。如所属技术领域的技术人员已知,处理器微架构包含控制模块110中用于追踪通过管线的指令地址的控制逻辑。所述控制逻辑能够自管线中被追踪的地址确定指令返回地址。然后将所述指令返回地址供应到多路复用器115,所述多路复用器115将指令返回地址作为伪指令的一部分馈送给解码管线级130。
应理解,多路复用器115及/或伪指令产生器117可在不是作为到解码级130的输入的级处插入管线中。然而,还应理解,可期望在管线中足够早的级处插入伪指令以使得寄存器堆管理功能可使用默认或平常控制及数据路径。寄存器堆管理功能可包含危险检测、地址解码及读取/写入控制。以此方式,可避免特别功能以及进入寄存器堆的专门端口。
在解码级130之后,伪指令(或在当前没有输入伪指令的情况下为其它指令)可继续前进到存取寄存器堆级135。处理器控制模块110可出于多个理由存取寄存器堆。例如,如果“添加”指令已在级130处被解码,那么可存取寄存器堆以读取用于添加的源操作数。多个通用寄存器包含在存取寄存器堆级135中。所述通用寄存器的输出可用于以后时钟循环中。
在级135处存取寄存器堆之后,可在指令执行级140处接收指令。然后执行所述指令。多个通用寄存器可包含在指令执行级140中。所述通用寄存器的输出可被传输到回写级145。在回写级145处,处理器100会将结果回写到寄存器堆180。
如图1中所阐述,在管线的初始级中,自存储器或高速缓存器提取一个或一个以上指令。通常,所述指令可按顺序次序流过管线。然而,中断处置可需要处理器返回到发生中断时处于执行过程中的程序。因此,可期望处理器返回到前一未处理指令。
现在参照图2,其图解说明显示各种管线级的表格,在各种管线级处可相关于时钟循环处理指令。出于图解说明的目的,假定在单个时钟循环期间完成单个级。然而,应注意可发生某些变化。
在管线式架构中,指令的执行可重叠。因此,尽管可能花费5个时钟循环来执行每一指令,但可在各个执行级中同时存在五个指令。因此,在第一指令沿管线向下前进到其被写入到寄存器堆的级之后,一个指令完成大致每一时钟循环。
出于图解说明的目的,在图2中,假定外围装置在第八与第九时钟循环之间请求中断处理。指令用代表指令的“I”后跟指令编号来表示。出于图解说明的目的,进一步假定当请求中断处理时,指令#8处于提取级处。当然,应理解,可在任何指令编号处请求中断处理。
在此图解说明中,中断处置请求处理器转到指令#100。在此实例中,指令#100可在可发现与中断处理相关的指令的地方。当然,中断处理可发生在程序所指派的任何指令处。
在已提取指令#100以处置中断处理之后,将废弃所有未完全处理的指令。在此图解说明中,可废弃指令#5到#8,因为按顺序次序(或按正常操作期间程序所确定的次序)的处理已被中断。
处理未完成的最前面指令是指令#5。在中断时,指令#5处于执行级。此指令是最老的未完全处理的指令,其还未退出管线。因此,应理解,处理器应该重新开始程序执行的程序值是指令#5。根据本发明,伪指令经配置以将返回地址写入为最前面指令。此是还未经历完全处理的最老指令,但也是在发生中断请求时管线中进行最多的指令。此伪指令正如同所有其它指令一样沿管线向下行进。
在图2的循环12中,伪指令将最前面指令的地址写入到寄存器堆。当中断处理在以后完成时,处理器将使用保存在寄存器堆中的值返回到指令#5处的程序执行。
现在参照图3,其图解说明用于将中断返回地址有效地保存在通用寄存器堆中的方法300。在步骤310处,接收中断请求。所述中断请求可来自外围装置或来自在请求时正被执行的程序或呈现作出中断请求的任何其它方式。
在步骤320处,产生伪指令。所述伪指令可由处理器的控制模块中的控制逻辑来产生。所述伪指令还可通过任何其它装置来产生。所述伪指令经配置以将中断返回地址有效地保存在通用寄存器堆中。所述中断返回地址是已知的,因为其已被输入到控制模块中。所述伪指令正如同其它指令一样沿管线向下行进。
在步骤330处,将下一未处理指令的程序值写入到通用寄存器(GPR)堆。以正常方式更新寄存器堆及相关资源。此过程仅需要通用寄存器。不需要寄存器堆的专门端口,因此节省处理器上的面积且避免与专门端口或特殊寄存器相关联的复杂性。
在步骤340处,处理器在被写入到通用寄存器堆的程序计数器值处重新开始处理。所述处理器然后可按被执行的程序所指令的次序执行指令。
结合本文所揭示实施例描述的各种说明性逻辑方框、模块及电路均可由下列装置实施或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、场可编程门阵列(FPGA)或其它可编程逻辑装置、离散门或晶体管逻辑、离散硬件组件、或其设计以执行本文所述功能的任何组合。通用处理器可以是微处理器,但另一选择为,处理器也可以是任一常规处理器、控制器、微控制器或状态机。处理器还可实施为计算装置的组合,例如,DSP与微处理器的组合、多个微处理器的组合、一个或一个以上微处理器与DSP核心的结合,或任何其它此类配置。
结合本文所揭示实施例所描述的方法或算法可直接实施于硬件、可由处理器执行的软件模块、或两者的组合内。软件模块可驻存于:RAM存储器、快闪存储器、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可装卸磁盘、CD-ROM、或所属技术领域中已知的任何其它形式的存储媒体中。存储媒体可耦合到处理器以使得所述处理器可从存储媒体读取信息且可将信息写入到存储媒体。另一选择为,存储媒体可与处理器成一体。处理器和存储媒体可驻存于ASIC中。所述ASIC可驻存于终端中或别处。另一选择为,处理器及存储媒体可作为离散组件驻存于终端中或别处。
提供上文对所揭示实施例的说明旨在使所属技术领域的技术人员能够制作或使用本发明。所属技术领域的技术人员将易于明了这些实施例的各种修改,且本文所定义的一般原理也可适用于其它实施例,此并未背离本发明的精神或范围。因此,本发明并非意欲限定为本文所示实施例,而应符合与本文所揭示原理及新颖特征相一致的最宽广范围。

Claims (22)

1、一种将中断返回地址有效地保存在通用寄存器堆中的数据处理系统,所述系统包括:
控制逻辑,其经配置以响应于中断请求而产生伪指令,其中所述伪指令经配置以致使将管线中最前面指令的中断返回地址写入到通用寄存器堆;且
其中所述伪指令进一步经配置以被插入所述管线中且以大致类似于其它指令的方式沿管线式处理器的所述管线向下行进。
2、如权利要求1所述的数据处理系统,其进一步包括:
解码级及回写级,其中所述解码级经配置以解码所述伪指令,且
其中所述回写级经配置以将所述伪指令的结果写入到所述通用寄存器堆,所述结果包含所述最前面指令的所述中断返回地址。
3、如权利要求2所述的数据处理系统,其进一步包括:
多路复用器,其经配置以接收所述伪指令且将所述伪指令输入到所述解码级中。
4、如权利要求3所述的数据处理系统,其进一步包括:
提取级,其经配置以提取指令:且
其中所述多路复用器进一步经配置以接收来自所述提取级的指令及所述伪指令,所述多路复用器进一步经配置以选择所提取的指令及所述伪指令中的一者以供输入到所述解码级。
5、如权利要求1所述的数据处理系统,其进一步包括:
多个通用寄存器。
6、如权利要求1所述的数据处理系统,其中所述伪指令产生器驻存于处理器控制模块中。
7、如权利要求4所述的数据处理系统,其进一步包括:
存储器模块,其经配置以存储待由所述处理器处理的指令数据,所述存储器耦合到所述提取级。
8、一种用于将中断返回地址有效地保存在通用寄存器堆中的设备,所述设备包括:
管线式处理器,其具有伪指令产生器,所述伪指令产生器经配置以响应于中断请求而产生伪指令,其中所述伪指令经配置以致使将管线中最前面指令的中断返回地址写入到通用寄存器堆,所述处理器包含多个通用寄存器;且
其中所述伪指令进一步经配置以被插入所述管线中且以大致类似于其它指令的方式沿管线式处理器的所述管线向下行进。
9、如权利要求8所述的数据处理系统,其进一步包括:
解码级及回写级,其中所述解码级经配置以解码所述伪指令,且
其中所述回写级经配置以将所述伪指令的结果写入到所述通用寄存器堆,所述结果包含最近未完全处理的指令的所述中断返回地址;且
其中所述伪指令被输入到所述解码级。
10、如权利要求9所述的设备,其进一步包括:
多路复用器,其经配置以接收所述伪指令且将所述伪指令输入到所述解码级中。
11、如权利要求10所述的设备,其进一步包括:
提取级,其经配置以提取指令;且
其中所述多路复用器进一步经配置以接收来自所述提取级的指令及所述伪指令,所述多路复用器进一步经配置以选择所提取的指令及所述伪指令中的一者以供输入到所述解码级。
12、如权利要求10所述的设备,其中所述处理器进一步经配置以响应于所述中断请求而执行中断处理;且将所述最近未完全处理的指令的所述中断返回地址写入到所述通用寄存器堆。
13、如权利要求12所述的方法,其中所述处理器进一步经配置以在被写入到所述通用寄存器堆的所述中断返回地址处重新开始处理。
14、一种用于在管线式处理器中将中断返回地址有效地保存在通用寄存器堆中的方法,所述方法包括以下步骤:
响应于中断请求,产生伪指令,所述伪指令经配置以致使将管线中最前面指令的中断返回地址写入到通用寄存器堆;且
其中所述伪指令进一步经配置以被插入所述管线中且以大致类似于其它指令的方式沿管线式处理器的所述管线向下行进。
15、如权利要求14所述的方法,其进一步包括:
响应于所述中断请求执行中断处理;及
将最近未完全处理的指令的所述返回地址写入到所述通用寄存器堆。
16、如权利要求15所述的方法,其进一步包括:
在被写入到所述通用寄存器堆的所述中断返回地址处重新开始处理。
17、如权利要求14所述的方法,其中由所述处理器中的控制逻辑产生所述伪指令。
18、如权利要求14所述的方法,其中所述管线式处理器包括:
解码级及回写级,其中所述解码级经配置以解码所述伪指令,且
其中所述回写级经配置以将所述伪指令的结果写入到所述通用寄存器堆,所述结果包含所述最前面指令的所述中断返回地址;且
其中将所述伪指令输入到所述解码级。
19、如权利要求18所述的方法,其中所述处理器进一步包括:
多路复用器,其经配置以接收所述伪指令且将所述伪指令输入到所述解码级中。
20、如权利要求19所述的方法,其中所述处理器进一步包括:
提取级,其经配置以提取指令;且
其中所述多路复用器进一步经配置以接收来自所述提取级的指令及所述伪指令两者,所述多路复用器进一步经配置以选择所提取的指令及所述伪指令中的一者以供输入到所述解码级。
21、如权利要求14所述的方法,其中所述处理器进一步包括:
多个通用寄存器。
22、一种用于将中断返回地址有效地保存在通用寄存器堆中的设备,所述设备包括:
多级管线式处理器,其经配置以执行中断处理,其中所述级包含经配置以接收指令的至少一个级及经配置以将结果回写到通用寄存器堆的至少一个级,所述处理器进一步经配置以处理来自程序的指令数据;
控制逻辑,其经配置以响应于中断请求而产生伪指令,其中所述伪指令经配置以致使将管线中最前面指令的中断返回地址写入到通用寄存器堆且其中所述伪指令进一步经配置以被插入所述管线中且以大致类似于其它指令的方式沿所述管线向下行进;
多路复用器,其经配置以接收来自所述控制逻辑的所述伪指令及来自程序的所述指令数据两者,所述多路复用器进一步经配置以选择所述伪指令及指令数据中的至少一者且将所述选定伪指令或指令数据输入到所述经配置以接收指令的至少一个管线级中;
其中,在中断处理已发生之后,所述处理器进一步经配置以在被写入到所述通用寄存器堆的所述最前面指令的所述中断返回地址处重新开始对指令数据的处理。
CN2007800282580A 2006-07-25 2007-07-24 有效的中断返回地址保存机制 Expired - Fee Related CN101495960B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/459,695 US7681022B2 (en) 2006-07-25 2006-07-25 Efficient interrupt return address save mechanism
US11/459,695 2006-07-25
PCT/US2007/074263 WO2008014287A1 (en) 2006-07-25 2007-07-24 Efficient interrupt return address save mechanism

Publications (2)

Publication Number Publication Date
CN101495960A true CN101495960A (zh) 2009-07-29
CN101495960B CN101495960B (zh) 2012-08-29

Family

ID=38667151

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800282580A Expired - Fee Related CN101495960B (zh) 2006-07-25 2007-07-24 有效的中断返回地址保存机制

Country Status (10)

Country Link
US (1) US7681022B2 (zh)
EP (1) EP2044508A1 (zh)
JP (2) JP5528804B2 (zh)
KR (1) KR101077425B1 (zh)
CN (1) CN101495960B (zh)
BR (1) BRPI0714128A2 (zh)
CA (1) CA2657168C (zh)
MX (1) MX2009000728A (zh)
RU (1) RU2450329C2 (zh)
WO (1) WO2008014287A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102364432A (zh) * 2011-10-25 2012-02-29 中国科学院苏州纳米技术与纳米仿生研究所 使用双程序计数器计算待处理指令地址的系统
CN111475010A (zh) * 2019-01-23 2020-07-31 联发科技股份有限公司 管线式处理器及节电方法

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism
US10360593B2 (en) * 2012-04-24 2019-07-23 Qualcomm Incorporated Retail proximity marketing
KR20170065845A (ko) 2015-12-04 2017-06-14 삼성전자주식회사 프로세서 및 제어 방법
CN112883370B (zh) * 2019-11-29 2022-12-20 北京三快在线科技有限公司 应用程序状态检测方法和装置、存储介质和电子设备

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS564844A (en) * 1979-06-26 1981-01-19 Nec Corp Information processor
JP2509244B2 (ja) * 1987-09-14 1996-06-19 富士通株式会社 分岐命令処理装置
JPH076037A (ja) * 1993-06-16 1995-01-10 Matsushita Electric Ind Co Ltd 命令解読装置
US5440703A (en) * 1993-09-20 1995-08-08 International Business Machines Corporation System and method for saving state information in a multi-execution unit processor when interruptable instructions are identified
US5701493A (en) * 1995-08-03 1997-12-23 Advanced Risc Machines Limited Exception handling method and apparatus in data processing systems
JPH09198257A (ja) * 1996-01-19 1997-07-31 Sanyo Electric Co Ltd プログラム実行方法およびこの方法を用いたプログラム実行装置
WO1999004334A1 (en) * 1997-07-16 1999-01-28 California Institute Of Technology Improved devices and methods for asynchronous processing
US6076159A (en) * 1997-09-12 2000-06-13 Siemens Aktiengesellschaft Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline
TW436693B (en) * 1998-08-18 2001-05-28 Ind Tech Res Inst Interrupt control device and method for pipeline processor
JP2000207202A (ja) * 1998-10-29 2000-07-28 Pacific Design Kk 制御装置およびデ―タ処理装置
US6301650B1 (en) * 1998-10-29 2001-10-09 Pacific Design, Inc. Control unit and data processing system
US6789184B1 (en) * 2000-09-29 2004-09-07 Intel Corporation Instruction address generation and tracking in a pipelined processor
GB2369464B (en) * 2000-11-27 2005-01-05 Advanced Risc Mach Ltd A data processing apparatus and method for saving return state
JP3905040B2 (ja) * 2001-02-06 2007-04-18 アデランテ テクノロジーズ ベスローテン フェンノートシャップ プロセッサのパイプライン内における命令のフローを操作するための方法、システム及びコンピュータプログラム製品
JP3856737B2 (ja) * 2002-07-19 2006-12-13 株式会社ルネサステクノロジ データ処理装置
US7765388B2 (en) * 2003-09-17 2010-07-27 Broadcom Corporation Interrupt verification support mechanism
US20050010577A1 (en) 2003-07-11 2005-01-13 Microsoft Corporation Method and apparatus for generating Web content
CN100545804C (zh) * 2003-08-18 2009-09-30 上海海尔集成电路有限公司 一种基于cisc结构的微控制器及其指令集的实现方法
US20050273776A1 (en) * 2004-06-08 2005-12-08 Intel Corporation Assembler supporting pseudo registers to resolve return address ambiguity
US7681022B2 (en) * 2006-07-25 2010-03-16 Qualcomm Incorporated Efficient interrupt return address save mechanism

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102364432A (zh) * 2011-10-25 2012-02-29 中国科学院苏州纳米技术与纳米仿生研究所 使用双程序计数器计算待处理指令地址的系统
CN102364432B (zh) * 2011-10-25 2013-12-18 中国科学院苏州纳米技术与纳米仿生研究所 使用双程序计数器计算待处理指令地址的系统
CN111475010A (zh) * 2019-01-23 2020-07-31 联发科技股份有限公司 管线式处理器及节电方法

Also Published As

Publication number Publication date
MX2009000728A (es) 2009-02-04
US20080028194A1 (en) 2008-01-31
US7681022B2 (en) 2010-03-16
KR20090042283A (ko) 2009-04-29
CN101495960B (zh) 2012-08-29
JP5528804B2 (ja) 2014-06-25
JP5837033B2 (ja) 2015-12-24
CA2657168C (en) 2010-12-07
CA2657168A1 (en) 2008-01-31
RU2450329C2 (ru) 2012-05-10
BRPI0714128A2 (pt) 2012-12-25
JP2009545079A (ja) 2009-12-17
RU2009106463A (ru) 2010-08-27
EP2044508A1 (en) 2009-04-08
JP2014099192A (ja) 2014-05-29
KR101077425B1 (ko) 2011-10-26
WO2008014287A1 (en) 2008-01-31

Similar Documents

Publication Publication Date Title
CN101373427B (zh) 程序执行控制装置
CN103250131B (zh) 包括用于早期远分支预测的影子缓存的单周期多分支预测
US8074060B2 (en) Out-of-order execution microprocessor that selectively initiates instruction retirement early
CN101495960B (zh) 有效的中断返回地址保存机制
CN1312579C (zh) 用于超前执行下的结果推测的方法和装置
CN101164043A (zh) 前视分支目标地址高速缓存
CN101593096B (zh) 一种共享寄存器相关性消除的实现方法
MX2007010048A (es) Sistema y metodo para corregir un mal pronostico de ramificacion.
CN102662640B (zh) 双重分支目标缓冲器和分支目标处理系统及处理方法
CN101535951A (zh) 用于辨识子例程调用的方法及设备
EP1460532A2 (en) Computer processor data fetch unit and related method
CN104461758A (zh) 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构
CN100451951C (zh) Risc cpu中的5+3级流水线设计方法
CN101647000A (zh) 用于在处理器中的执行级之前执行指令的系统及方法
US20040255104A1 (en) Method and apparatus for recycling candidate branch outcomes after a wrong-path execution in a superscalar processor
US5778208A (en) Flexible pipeline for interlock removal
US6931506B2 (en) Electronic device for data processing, such as an audio processor for an audio/video decoder
CN100409180C (zh) 用于处理指令循环的方法和系统
US9395985B2 (en) Efficient central processing unit (CPU) return address and instruction cache
CN106383926A (zh) 一种基于Cortex‑M系列处理器的指令预取方法及电路
US6032249A (en) Method and system for executing a serializing instruction while bypassing a floating point unit pipeline
KR102379886B1 (ko) 벡터 명령 처리
Kalaitzidis Advanced speculation to increase the performance of superscalar processors
CN116107637A (zh) 指令处理器及其方法
CN100377088C (zh) 二进制翻译中局部变量识别和提升的处理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120829

Termination date: 20210724