CN101495960B - 有效的中断返回地址保存机制 - Google Patents
有效的中断返回地址保存机制 Download PDFInfo
- Publication number
- CN101495960B CN101495960B CN2007800282580A CN200780028258A CN101495960B CN 101495960 B CN101495960 B CN 101495960B CN 2007800282580 A CN2007800282580 A CN 2007800282580A CN 200780028258 A CN200780028258 A CN 200780028258A CN 101495960 B CN101495960 B CN 101495960B
- Authority
- CN
- China
- Prior art keywords
- pseudoinstruction
- pipeline
- instruction
- 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.)
- Expired - Fee Related
Links
- 230000007246 mechanism Effects 0.000 title description 4
- 238000000034 method Methods 0.000 claims abstract description 42
- 238000012545 processing Methods 0.000 claims abstract description 16
- 230000008569 process Effects 0.000 claims description 22
- 239000000284 extract Substances 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims 1
- 238000013461 design Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000004321 preservation Methods 0.000 description 4
- 230000004087 circulation Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
Images
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- 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/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- 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
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/30181—Instruction operation extension or modification
-
- 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
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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
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.如权利要求1所述的数据处理系统,其进一步包括:
多个通用寄存器。
5.如权利要求1所述的数据处理系统,其中一伪指令产生器驻存于所述管线式处理器的处理器控制模块中,且其中所述伪指令产生器包括所述控制逻辑。
6.如权利要求3所述的数据处理系统,其进一步包括:
存储器模块,其经配置以存储待由所述管线式处理器处理的指令数据,其中所述存储器模块耦合到所述提取级。
7.如权利要求1所述的数据处理系统,其中与所述中断返回地址相关联的所述最前面指令在所述管线中未完全处理。
8.一种数据处理设备,其包括:
管线式处理器,所述管线式处理器包括:
伪指令产生器,所述伪指令产生器经配置以响应于中断请求而产生伪指令,其中所述伪指令经配置以致使将中断返回地址写入到所述管线式处理器的一通用寄存器堆,所述中断返回地址是所述管线式处理器的管线中的最前面指令的地址;
其中所述伪指令进一步经配置以被插入所述管线式处理器的管线中且以与被插入所述管线中的其它指令实质上相同的方式沿所述管线向下行进;
其中所述管线包括:
解码级,所述解码级经配置以解码所述伪指令;及
回写级,所述回写级经配置以将所述伪指令的结果写入到所述通用寄存器堆,所述结果包含以未完全处理的指令的地址作为中断返回地址。
9.如权利要求8所述的设备,其进一步包括:
多路复用器,所述多路复用器经配置以接收所述伪指令且将所述伪指令输入到所述解码级中。
10.如权利要求9所述的设备,其中所述管线进一步包括:提取级,其经配置以提取指令;其中所述多路复用器进一步经配置以:
接收来自所述提取级的一个或多个经提取的指令;
接收所述伪指令;且
选择所述伪指令或所述一个或多个经提取的指令中的一者以供输入到所述解码级。
11.如权利要求8所述的设备,其中所述管线式处理器进一步经配置以:
响应于所述中断请求而执行中断处理;且以最近所述未完全处理的指令的地址作为所述中断返回地址写入到所述通用寄存器堆。
12.如权利要求11所述的设备,其中所述管线式处理器进一步经配置以在被写入到所述通用寄存器堆的所述中断返回地址处重新开始处理。
13.一种用于将中断返回地址保存至管线式处理器的通用寄存器堆的方法,所述方法包括:
响应于中断请求,产生伪指令,所述伪指令经配置以致使将中断返回地址写入到所述管线式处理器的所述通用寄存器堆;所述中断返回地址是所述管线式处理器的一管线中的管线中最前面指令的地址;
其中所述伪指令进一步经配置以被插入所述管线式处理器的管线中且以与被插入所述管线中的其它指令实质上相同的方式沿所述管线向下行进;
其中所述管线式处理器的所述管线包括:
解码级及回写级,其中所述解码级经配置以解码所述伪指令,且其中所述回写级经配置以将所述伪指令的结果写入到所述通用寄存器堆,所述结果包含所述中断返回地址。
14.如权利要求13所述的方法,其进一步包括:
响应于所述中断请求执行中断处理;及
将所述中断返回地址写入到所述通用寄存器堆。
15.如权利要求14所述的方法,其进一步包括:
在被写入到所述通用寄存器堆的所述中断返回地址处重新开始处理。
16.如权利要求13所述的方法,其中由所述处理器中的控制逻辑产生所述伪指令。
17.如权利要求13所述的方法,其中所述处理器进一步包括:
多路复用器,其经配置以接收所述伪指令且将所述伪指令输入到所述解码级中。
18.如权利要求17所述的方法,其中所述管线进一步包括:
提取级,其经配置以提取指令;且
其中所述多路复用器进一步经配置以:
接收来自所述提取级的经提取的指令;
接收所述伪指令;
选择所述伪指令或一个或多个所述经提取的指令中的一者以供输入到所述解码级。
19.如权利要求13所述的方法,其中与所述中断返回地址相关联的所述最前面指令在所述管线中未完全处理。
20.一种数据处理设备,其包括:
处理器,其经配置以执行中断处理,所述处理器包括一管线,
其中所述管线包括:
经配置以接收指令的第一级;及
经配置以将结果回写到通用寄存器堆的第二级;其中所述处理器进一步经配置以处理来自程序的指令数据;
控制逻辑,其经配置以:
响应于中断请求而产生伪指令,其中所述伪指令经配置以致使将中断返回地址写入到通用寄存器堆,所述中断返回地址是管线中最前面指令的地址;
其中所述管线的所述第一级是解码级及所述管线的所述第二级是回写级,其中所述解码级经配置以解码所述伪指令,且其中所述回写级经配置以将所述伪指令的结果写入到所述通用寄存器堆,所述结果包含所述中断返回地址;及
多路复用器,其经配置以:
接收来自所述控制逻辑的所述伪指令及来自所述程序的所述指令数据;且
将所述伪指令或所述指令数据输入至所述第一级;
其中,在中断处理之后,所述处理器进一步经配置以在所述中断返回地址处重新开始对所述指令数据的处理;
其中所述伪指令进一步经配置以被插入所述管线式处理器的管线中且以与被插入所述管线中的其它指令实质上相同的方式沿所述管线向下行进。
21.如权利要求20所述的设备,其中所述通用寄存器堆被所述管线控制。
22.如权利要求20所述的设备,其中与所述中断返回地址相关联的所述最前面指令在所述管线中未完全处理。
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 CN101495960A (zh) | 2009-07-29 |
CN101495960B true 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) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7681022B2 (en) * | 2006-07-25 | 2010-03-16 | Qualcomm Incorporated | Efficient interrupt return address save mechanism |
CN102364432B (zh) * | 2011-10-25 | 2013-12-18 | 中国科学院苏州纳米技术与纳米仿生研究所 | 使用双程序计数器计算待处理指令地址的系统 |
US10360593B2 (en) * | 2012-04-24 | 2019-07-23 | Qualcomm Incorporated | Retail proximity marketing |
KR20170065845A (ko) | 2015-12-04 | 2017-06-14 | 삼성전자주식회사 | 프로세서 및 제어 방법 |
US11003457B2 (en) * | 2019-01-23 | 2021-05-11 | Mediatek Inc. | Power-saving mechanism for memory sub-system in pipelined processor |
CN112883370B (zh) * | 2019-11-29 | 2022-12-20 | 北京三快在线科技有限公司 | 应用程序状态检测方法和装置、存储介质和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1470017A (zh) * | 2000-09-29 | 2004-01-21 | ض� | 流水线处理器中的指令地址生成和跟踪 |
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
Family Cites Families (18)
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 | プログラム実行方法およびこの方法を用いたプログラム実行装置 |
AU8495098A (en) * | 1997-07-16 | 1999-02-10 | 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 |
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 |
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 |
-
2006
- 2006-07-25 US US11/459,695 patent/US7681022B2/en not_active Expired - Fee Related
-
2007
- 2007-07-24 BR BRPI0714128-9A patent/BRPI0714128A2/pt not_active IP Right Cessation
- 2007-07-24 KR KR1020097003916A patent/KR101077425B1/ko not_active IP Right Cessation
- 2007-07-24 CN CN2007800282580A patent/CN101495960B/zh not_active Expired - Fee Related
- 2007-07-24 CA CA2657168A patent/CA2657168C/en not_active Expired - Fee Related
- 2007-07-24 WO PCT/US2007/074263 patent/WO2008014287A1/en active Application Filing
- 2007-07-24 MX MX2009000728A patent/MX2009000728A/es active IP Right Grant
- 2007-07-24 RU RU2009106463/08A patent/RU2450329C2/ru not_active IP Right Cessation
- 2007-07-24 EP EP07813309A patent/EP2044508A1/en not_active Withdrawn
- 2007-07-24 JP JP2009521965A patent/JP5528804B2/ja not_active Expired - Fee Related
-
2013
- 2013-12-27 JP JP2013272652A patent/JP5837033B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1470017A (zh) * | 2000-09-29 | 2004-01-21 | ض� | 流水线处理器中的指令地址生成和跟踪 |
CN1584824A (zh) * | 2003-08-18 | 2005-02-23 | 上海海尔集成电路有限公司 | 一种基于cisc结构的微处理器构架及指令实现方式 |
Also Published As
Publication number | Publication date |
---|---|
JP2014099192A (ja) | 2014-05-29 |
US20080028194A1 (en) | 2008-01-31 |
CN101495960A (zh) | 2009-07-29 |
WO2008014287A1 (en) | 2008-01-31 |
KR20090042283A (ko) | 2009-04-29 |
CA2657168A1 (en) | 2008-01-31 |
US7681022B2 (en) | 2010-03-16 |
JP2009545079A (ja) | 2009-12-17 |
JP5837033B2 (ja) | 2015-12-24 |
RU2450329C2 (ru) | 2012-05-10 |
KR101077425B1 (ko) | 2011-10-26 |
BRPI0714128A2 (pt) | 2012-12-25 |
RU2009106463A (ru) | 2010-08-27 |
EP2044508A1 (en) | 2009-04-08 |
CA2657168C (en) | 2010-12-07 |
JP5528804B2 (ja) | 2014-06-25 |
MX2009000728A (es) | 2009-02-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101495960B (zh) | 有效的中断返回地址保存机制 | |
CN100359464C (zh) | 具有预取指令的微处理器及预取至其高速缓存的方法 | |
CN103250131B (zh) | 包括用于早期远分支预测的影子缓存的单周期多分支预测 | |
CN101373427B (zh) | 程序执行控制装置 | |
CN1312579C (zh) | 用于超前执行下的结果推测的方法和装置 | |
EP1889152B1 (en) | A method and apparatus for predicting branch instructions | |
CN106681695B (zh) | 提前取出分支目标缓冲器 | |
CN101164043A (zh) | 前视分支目标地址高速缓存 | |
CN101593096B (zh) | 一种共享寄存器相关性消除的实现方法 | |
CN102662640B (zh) | 双重分支目标缓冲器和分支目标处理系统及处理方法 | |
CN101535951A (zh) | 用于辨识子例程调用的方法及设备 | |
US20040186960A1 (en) | Computer processor data prefetch unit | |
CN104461758A (zh) | 一种容忍cache缺失快速清空流水线的异常处理方法及其处理结构 | |
CN101647000B (zh) | 用于在处理器中的执行级之前执行指令的系统及方法 | |
US20100306504A1 (en) | Controlling issue and execution of instructions having multiple outcomes | |
US5901309A (en) | Method for improved interrupt handling within a microprocessor | |
US5778208A (en) | Flexible pipeline for interlock removal | |
US9395985B2 (en) | Efficient central processing unit (CPU) return address and instruction cache | |
CN110825442B (zh) | 一种指令预取方法及处理器 | |
US20070028077A1 (en) | Pipeline processor, and method for automatically designing a pipeline processor | |
US6931506B2 (en) | Electronic device for data processing, such as an audio processor for an audio/video decoder | |
CN100409180C (zh) | 用于处理指令循环的方法和系统 | |
CN111722876A (zh) | 利用超标量流水线执行程序的方法、装置、系统及介质 | |
US6032249A (en) | Method and system for executing a serializing instruction while bypassing a floating point unit pipeline | |
CN109614146B (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 |
Granted publication date: 20120829 Termination date: 20210724 |
|
CF01 | Termination of patent right due to non-payment of annual fee |