CN1304944C - 预先读取脱序执行指令的方法及处理器 - Google Patents

预先读取脱序执行指令的方法及处理器 Download PDF

Info

Publication number
CN1304944C
CN1304944C CNB2004100335764A CN200410033576A CN1304944C CN 1304944 C CN1304944 C CN 1304944C CN B2004100335764 A CNB2004100335764 A CN B2004100335764A CN 200410033576 A CN200410033576 A CN 200410033576A CN 1304944 C CN1304944 C CN 1304944C
Authority
CN
China
Prior art keywords
instruction
advance
disorders
information
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 - Lifetime
Application number
CNB2004100335764A
Other languages
English (en)
Other versions
CN1581068A (zh
Inventor
威廉·V·米勒
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.)
Via Technologies Inc
Original Assignee
Via Technologies 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 Via Technologies Inc filed Critical Via Technologies Inc
Publication of CN1581068A publication Critical patent/CN1581068A/zh
Application granted granted Critical
Publication of CN1304944C publication Critical patent/CN1304944C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • G06F9/3802Instruction prefetching
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)

Abstract

一种处理脱序执行指令的方法及处理器,在一实施例中,其处理器包含指令预先读取逻辑单元,用以从存储器中预先读取指令。此处理器更包含指令信息逻辑单元,用以从存储器中储存与所读取的指令有关的信息。此处理器更包含控制逻辑单元,如果当时有一激发状态的存储器存取,而且上述的预先读取指令为一脱序执行指令,则上述的控制逻辑单元是用以控制与一预先读取的指令有关的信息的暂时储存。此一方法预先读取指令中的脱序执行,暂时将和脱序执行指令有关的信息储存在一储存位置,而且如果完成了存储器存取,未发生数据错误,就将暂时储存的信息储存起来,并处理上述的预先读取的指令。

Description

预先读取脱序执行指令的方法及处理器
技术领域
本发明是关于处理器,特别是关于一种预先读取脱序(out-of-order)执行指令的方法及处理器。
背景技术
众所周知,许多现代计算系统及其它元件使用管线化(pipeline)架构的处理器来增进指令的传输率。理论上,纯量管线化的处理器(scalar pipelined processors)在执行一个有秩序的(in-order)顺序指令串流时,一个机器周期可以执行一个指令(超纯量架构能执行更多)。即使指令本身可能牵涉到或是需要许多分开的微指令来实行,也是可以达成上述的效率。管线化处理器的运作,是借着将一个指令分解成几个步骤,而每一个步骤需要一个机器周期来完成。例如在一个典型的系统,一个指令可能需要几个机器周期来完成(撷取、译码、算数逻辑单元运算等等)。通过在第一个指令实际执行完成之前就开始处理第二个指令,可使管线化处理器降低等候时间。实际上在上述例子中,任何时间可能有多个指令在不同的处理步骤。如此系统的整体执行等候时间(可视为指令顺序的起始时间及完成执行时间的间的延迟)可以大幅度地降低。
当程序的执行遵循一个有秩序的流程,上述的架构可以很有效地工作。换句话说这个模型是以程序执行的顺序模型为前提。其中程序中的每一个指令都是在存储器中紧接在刚执行过的指令之后。程序中一个不可或缺的需求及特色为其“分支”(branch)的能力,亦即将程序重新导向另一组指令来执行。借着对分支指令(branch instruction)有条件转移的控制,可以使正在执行的程序在另一个不同的路径上执行。然而这条路径不一定会与紧接在刚执行的指令之后的指令一致。
换句话说,典型的已知的处理器处理有秩序的指令执行管线。一个顺序执行的处理器通常由存储器撷取指令串流,根据程序的顺序发出并执行指令串流中的每一个指令。基本上,这样一个顺序执行的处理器在指令被执行时决定程序的顺序。用来指定指令串流中的下一个被执行的指令的程序计数器(或是指令指针;instruction pointer),随着每一个指令的执行不断地更新数据。指令串流中通常含有一些特定的指令,可以使程序的顺序中断。例如分支(或跳跃;jump)指令、呼叫(call)指令、回复(return)指令及中断(interrupt)指令,可以使得处理器经由目标地址的界定,将程序重新导向存储器中一个不连续的位置。像这样可以使得程序顺序中断的指令在本文称之为脱序执行指令。
如同所知,顺序执行的纯量处理器基本上偏好每一周期执行一个指令。当然,超纯量处理器由于超纯量平行管线化的组态,每一周期可以执行一个以上的指令。虽然任一给定指令需要一个以上的周期来完整地执行(例如撷取、译码及运算等等),但是借着指令执行的管线化(例如撷取、译码、运算、存储器存取及写回存储器等等)以及在管线化指令立即紧邻顺序(immediate succession)的运算,可以达成每一周期完成一个指令的有效执行。
然而,在立即顺序的指令运算上有些特定的例外。其中一个例外发生在脱序执行指令运算的时候。如上所述,脱序执行指令可能包含分支指令、中断指令等等。在某些特定的处理器架构,当一个脱序执行指令跟随在一个需要存储器存取的指令之后时,此脱序执行指令的撷取将会延迟,直到前一个指令完成存储器存取的动作。如此处理的理由之一是因为前一个指令的存储器存取可能导致一个错误条件(例如数据错误)。在这样的情况下,某些处理器架构会导向预先定义好的例外处理例行程序(exception-handling routine),以响应数据错误条件(data-fault condition)。此外,数据错误经常导致处理器储存它目前的状态(例如储存状态到一组状态缓存器)。
通常脱序执行指令的确认会改变处理器的状态。在这样的顾虑下,脱序执行指令可能改变处理器的模式(例如从应用模式到系统模式),或者可能改变中断指令是否遮蔽(masked or unmasked)等等。如果一个处理器的状态在数据错误条件发生之前改变,然后当该数据错误条件相对应的例外处理例行程序执行时,可能会回复一个不恰当的操作模式,而在所欲执行的程序代码中引发当机或执行错误。因此已知技术的处理器会将跟随在需要存储器存取的指令之后的脱序执行指令的撷取延迟。然而,由于前一个指令的存储器存取通常可以不出差错地完成(就这些例子来说,发生不必要的延迟),因此导致相当长的延迟及整体性能的降低。
所以有必要提出一个可以有秩序的执行管线化的处理器来更有效率地处理脱序执行指令。
发明内容
本发明的一些目的、优点及新颖的特征部份将再接下来的说明书中阐述,一部份对那些在本领域中的已知技艺者在检验下文时将会是清楚明白的,或是通过本发明的操作而知。本发明的目的及优点,可通过附录的专利申请范围所特别指出的方法及组成来加以实现。
为了达成这些优点及新颖的特征,本发明专注于预先读取脱序执行指令的处理器及方法。在一实施例中,一处理器包含指令预先读取逻辑单元,用以从存储器中预先读取指令。此处理器更包含指令预先读取逻辑单元,用以储存与从存储器中所读取的指令有关的信息。该处理器更包含控制逻辑单元,如果当下有一激发状态的存储器存取,而且该预先读取指令为一脱序执行指令,则此控制逻辑单元用以控制与一预先读取的指令有关的信息的暂时储存。
依照本发明的另一实施例,提出了一预先读取脱序执行指令的方法。在脱序执行指令跟随在一个与存储器读取有关的指令之后,然后执行以后的指令的情况下,该方法预先读取脱序执行指令,暂时将与取脱序执行指令有关的状态信息储存于一储存位置。而且如果该存储器读取能顺利完成,没有遭遇数据错误的状况,即以暂时储存的状态信息更新该处理器的状态并处理预先读取的指令。
附图说明
图1为一5阶段管线化处理器架构的方块示意图。
图2为一依据本发明的实施例所组成的一指令读取单元的方块示意图。
图3为一依据本发明的实施例所组成的一指令读取单元的方块示意图。
图4为一流程图,用来举例说明依据本发明的实施例的一预先读取脱序执行指令的该上层功能性的操作方法。
图5为一方块示意图,用来举例说明依据本发明的实施例可能储存于一缓存器档案的状态缓存器的信息。
图中符号说明:
110    指令读取;
111    例外、分支及下一指令译码逻辑单元;
113    多路复用器;
114    缓存器档案写入队列;
115    等待状态/脱序执行指令队列;
116    指令输入队列;
117    多路复用器;
120    译码单元;
130    执行单元;
132    产生中断向量信号的逻辑单元;
134    中断向量请求;
136    产生分支信号的逻辑单元;
138    分支/回复;
140    存储器存取;
142    产生存储器存取激发状态信号的逻辑单元;
144    存储器存取的信号为激发状态;
150    缓存器写回;
160    缓存器档案;
162    状态缓存器;
164    当时状态缓存器;
166    储存状态缓存器;
210    指令读取单元;
211    指令读取状态机器及控制逻辑单元;
270    脱序执行信息储存器;
272    脱序执行激发状态队列;
280、282、284、286多路复用器;
287    新模式、旗标及其它状态;
290    反向器;
291    组合控制逻辑单元;
292、298与门;
299    状态写入;
402    脱序执行指令;
404    激发状态的存储器存取;
406    读取脱序执行指令;
410    预先读取脱序执行指令;
412    暂时储存与脱序执行指令有关的状态信息;
420    激发状态的存储器存取;
422    数据错误;
430    丢弃预先读取的脱序执行指令及相关信息;
432    发出向量到数据错误执行处理模块;
440    储存相关的状态信息;及
442    传送预先读取的指令到译码器。
具体实施方式
对本发明做了几种不同方向的摘要说明后,现在要对本发明如同附图所示做详细的说明。当本发明与附图做联系说明时,无意将其限制在图例所揭示的范围内。相反的,意图去涵盖所有如附录的专利申请范围所定义的在本发明的精神与范围内可替代的、改良的或等价的例子。
在特别参阅图例之前,要注意到在此所示的图例为提供来展现本发明的实施例的某些特征及形象。在本说明书中各种不同的实施例皆可在与本发明的精神与范围一致下加以完成。
参阅图1,为一执行指令的五阶段管线化处理器(five-stage pipelineprocessor)架构的方块图。其它含有较多或较少管线化阶段的可替代的管线化架构,可以拿与本发明一致的概念及教导来完成。在图1的架构中所举的例子包含一指令读取单元110,一译码单元120,一执行单元130,一存储器存取单元140,及一缓存器写回单元(register write-backunit)150。除非在此注明,否则这些单元(或是逻辑单元方块)的操作为传统的方式,就如同在本领域中已知技艺者所知,不需要在此做进一步的描述。
如同所知,一指令读取单元110的功能即为指令存储器的读取。对于顺序指令执行,及例外向量(exception vectors),分支与回复,此单元用以决定一程序计数器(在缓存器档案,register file,160之中)的数值或内容。指令读取单元110亦藉以决定所有例外及分支指令的回复地址,且将回复地址写入或储存在缓存器档案160中的适当的缓存器。依据本发明,指令读取的寻址可能是通过实际的地址直接指向存储器,或是通过一使用实际或虚拟的地址的指令高速缓存(未在此显示)。虽然缓存器档案160的内部架构未在此显示,缓存器档案160包含处理器所使用的各种缓存器。如同所知,这样的缓存器可能包含一般目的的缓存器或特殊目的的缓存器(例如状态缓存器、程序计数器等等)。更进一步,缓存器档案160中的缓存器可能是组合(banked)或未组合的。如同所知,一未组合的缓存器意指一单一缓存器,其可适用于所有运算的处理器模式。基本上,未组合的缓存器是完全地一般目的性质的,没有架构所暗示的特殊用途。当然那是由程序设计师来确认,当改变运算模式(或当处理分支的例行程序或次例行程序时)时,缓存器的内容已存好了(例如推入一堆栈,stack),而且当从一改变的运算模式回来时,缓存器的内容已恢复了。相反的,组合的缓存器是分离的,但实质上以平行的形式来组态,以致于只有一缓存器可运用于一给定的运算模式中。一个组合缓存器的一般例子,包含在快速中断例外处理(fast interrupt exception handling)时可加以运用的缓存器。为了上述目的所提供的一组组合缓存器,可避免为这些缓存器储存及恢复缓存器状态而延长时间的需要。在上述模式下的组合缓存器可以立即被存取及使用,不需要实行快速中断处理例行程序。
译码单元120用来译码从指令读取单元110传过来的指令,并且产生必要的控制信号给执行单元130以进行此特定指令的执行。译码单元的特定架构(如译码单元120)为与处理器相关的,但是如此的运算及组织,凡是本领域的已知技艺者都应明了。同样的,执行单元130的结构与运算是与处理器相关的,但凡是本领域的已知技艺者都应明了。通常一执行单元包含进行指令执行的一电路,且此指令由译码单元120所产生的控制信号所决定。
如图1所举的例子,所举的实施例中的执行单元130包含产生一或多个中断向量信号134的逻辑单元132,以及产生一或多个分支信号138的逻辑单元136。如同这些名称所暗示,此中断向量信号134表示一中断向量条件(例如中断请求IRQ、快速中断请求FIRQ等等)。同样的,该分支信号138表示一分支条件(或者可能也表示从一个呼叫或中断向量的回复)。间接的,这些信号表示确认了脱序执行指令。
存储器存取单元140与外在数据存储器连接,而此存储器是为了读取与写入响应执行单元130所执行的指令的数据。当然,并非所有的指令都需要存储器存取,但是对那些需要存储器存取的指令,存储器存取单元140进行对外在存储器必要的存取。依据本发明,这样的存储器存取可能是直接的,或者是通过利用实际或虚拟寻址的数据高速缓存。此存储器存取单元140亦包含产生存储器存取执行信号144的逻辑单元142,此信号表示一存储器存取的动作正在进行中。如此例所举,中断向量信号134、分支/回复信号138及存储器存取执行信号144皆导入指令读取单元110,且由其中的电路或逻辑单元来进行本发明的一实施例的特定应用。
最后缓存器写回单元150负责将内容(指令执行的结果)储存或写入缓存器档案160中的适当的缓存器。例如,考虑以下指令执行的状况,将二个一般目的缓存器的内容相加,再将相加后的内容存入第三个一般目的缓存器。执行完这样的指令之后,缓存器写回单元150将相加后得到的值写入第三个一般目的缓存器。
再一次强调,应该了解到如同本文所述,本发明可以各种不同的管线化处理器架构来实行,图1所举的例子,只是一个用来举例说明的架构。因此,图1所举的例子不应该被视为本发明在架构或环境上的限制。
在如此顾虑下,本发明存在于指令读取单元110中。因此,现在参阅到图2,那是以可以完成本发明的一实施例中指令读取单元110的特定元件为例。如上所摘要,当存储器存取正在进行且脱序执行指令需要存储器存取时,本发明允许在预先读取脱序执行指令的情况下操作。当前一个指令的存储器存取正在进行时,这些预先读取的指令伴随着相关的状态信息可存于指令读取单元110中的暂时储存区域中。当此存储器存取产生数据错误或其它例外的状况时,此预先读取的指令及伴随的相关的状态信息则被丢弃不管,此系统能与传统已知技术的系统(不改变状态来响应,或者遵照预先读取的指令)一般继续操作。然而,如果前一次指令的存储器存取顺利完成没有发生错误,则上述预先读取的指令可以立即被传送到译码单元120,而且相关的信息可以传送到缓存器档案160中的适当的缓存器。
参阅图2,以指令读取单元110中的某些功能性方块来举例的示意图。该指令读取单元110包含一例外分支及下一指令译码逻辑单元111(exception branch and next instruction decode logic)。上述逻辑单元方块实行指令读取单元110的主要功能,不只决定下一个被读取的指令的位置,还决定缓存器档案的写入动作。这样的缓存器档案的写入在信号路径112输出。如本例所示,路径112的输出可以直接传向缓存器档案160(通过多路复用器113及信号路径162),或间接地通过缓存器档案写入队列114。当数据存储器存取(data memory accesses)仍于管线上活动时(例如当存储器存取信息144被激发时),此缓存器档案写入队列114提供逻辑单元以对缓存器档案的写入加以排序。借着提供此队列,在未完成的数据存储器存取完成之前,指令读取单元110可以开始和脱序执行指令有关的指令读取。若是和传送中的(outstanding)数据存储器存取有关的一数据丢弃(data abort)、数据错误,或是其它例外发生,则已经在缓存器档案写入队列114中排序好的缓存器档案的写入会被丢弃不顾。因此,本发明的指令读取单元110不需要在闲置模式下等待直到未完成的存储器存取已经完成。
指令读取单元110亦包含一等待状态/脱序执行指令队列115(wait state/out-of-order instruction queue)。该队列115包含可对指令读取请求(instruction fetch request)排序的逻辑单元。其中请求的发生是因为被插入了指令等待状态,或是当脱序执行指令产生时,且指令队列无法立刻可以加以运用的(因为未完成的指令读取尚未消失)。此特征为一实施例的设计实行,而非一需要扩充本发明的概念来实行的特征。
此指令读取单元110还包含一指令输入队列116。此队列负责对与指令读取有关的控制信号排序,而那些控制信号将会被传送到译码单元120。如本例所示,此队列116接收从例外分支及下一指令译码逻辑单元111以及由存储器(或指令高速缓存)得到的输入的指令值,其指令值伴随着存储器返馈信号(如激发状态的存储器存取信息、中断请求信号及分支/回复信号等)一起传递。当时的指令的程序计数器的值是经过信号路径118输出到译码单元120,当时的指令也是经过信号路径119输出到译码单元120。当「指令输入队列」的指令读取被请求且传到译码单元,相关的程序计数器的值存到「指令输入队列」。置于信号路径118及119的值会被译码单元120加以适当的运算。
指令本身可能直接来自存储器,或者如果处理器的管线停滞(例如正在等待来完成一数据存储器存取),则当存储器存取完成时,此指令可以存在「指令输入队列」。因此路径118总是跟随着相关的程序计数器的值,而多路复用器117对指令本身119而言则有二条可能的路径。
有些信号线并没有在图标中画出来,以便以较具意义的角度来简化此例。例如在图2中并未特别画出多路复用器117的选择控制线。本领域中的已知技艺者可以了解像这样的实行及控制的细节,不需要再另外举例说明。
已经举例说明本发明上层(top-level)的功能及结构,现在参阅图3。此图是一本发明可替代的实施例的指令读取单元210的示意图。为了与图1的实施例一致,外在信号线的标示,例如中断向量请求134、分支/回复138及存储器存取激发144信号线皆保留。同样的,与缓存器档案的写入有关的信号路径162也保留下来了。例证中还包含了信号线240,用来传递表示数据错误或例外的信号,而该信号与未完成的存储器存取(outstanding memory access)有关。指令读取状态机器及控制逻辑单元211是用来产生和预先读取的指令有关的各种不同的控制及状态信号。此逻辑单元211的输出部分是根据预先读取的指令,部分是根据信号线134、138及240所传送的值。
图3中指令读取单元210的一重要组成元素为脱序执行信息储存器270。随着实施例不同,在此储存区域270储存的信息也不同。在一实施例中,上述信息包含一回复地址,此地址为程序计数器所要回复一呼叫的完成或中断例行程序。该值通常是程序计数器的下一连续值,跟随于一呼叫指令(或是当遇到中断向量请求时要执行的指令)之后的程序计数器的值。此外,此指令信息还包含一处理器状态或模式的鉴别(针对那些有多于一个的模式,用以运算的处理器),以及对于当时已排序的指令(针对那些用以执行多重指令集的处理器)指令集的鉴别。对本领域中熟知的技艺者而言,其它的指令信息也可能储存在此。
一脱序执行旗标272也包含在此实施例中,用来表示一当时被预先读取的脱序执行指令。
为了易于举例,有些电路及实行细节已经从图3中删去了。更甚者,为了鉴识本发明特征的操作及实行,在此展示的电路及元件不需要详细描述。例如以多路复用器280、282、284及286为例证。多路复用器280、282及286其中之一输入标注为「无状态写入」(no statuswrite)。如此命名是有其属性的目的,因为这些输入的实际信号依缓存器档案160的结构及设计而变。实质上,若未依缓存器档案而变,则未激发的(inactive)信号值将会置于多路复用器280、282及286「无状态写入」输入的相对应的位置上。虽然在图3的示意图举例说明中皆以单线显示于任一输入,应该了解到图3中的线实际上表示复数个实际信号线。
借着举例说明的方式,假设该存储器存取信息144信号当时是激发的状态(逻辑单元1),以一未完成的存储器存取正在传送为例。信号控制多路复用器286选择无状态写入输入,从而确认无状态信息写入缓存器档案160。同样的,假设数据错误信号240是激发的状态(逻辑单元1),表示在未完成的存储器存取传送时发生数据错误。信号线上一逻辑单元1传递经过反向器290和与门292的对应的输入,将使得多路复用器284选择信号路径296上的信号,再传送到多路复用器286。指令读取状态机器及控制逻辑单元211(亦接收数据错误信号240)将控制多路复用器280传送「无状态写入」值至信号路径296,再一次确认无改变的状态信息写入缓存器档案160。然而,如果没有数据错误发生,则当脱序执行旗标272为激发时,会使得到多路复用器284去选择储存器270的脱序执行信息并传送到多路复用器286。当激发状态的存储器存取完成时(即信号线144由1转换到0),则多路复用器286将会将此脱序执行信息通过信号路径162传送到缓存器档案160。
正如进一步所举的例子,脱序执行信息储存器270中所储存的信息是由指令读取状态机器及控制逻辑单元211所提供。当存储器存取信息线144为激发状态时,与门298传送信号线299的值以控制多路复用器282的选择。信号线299是由指令读取状态机器及控制逻辑单元211根据中断向量信号134、分支/回复信号138及数据错误信号值240来产生的。当无数据错误发生,且要响应一中断向量请求或分支指令(如一脱序执行指令指针)时,指令读取状态机器及控制逻辑单元211在信号线299输出一逻辑单元1,通过与门298传送,使得多路复用器282选择信号路径296(由多路复用器280输出)上的值,作为脱序执行信息储存器270的输入。此信息(与预先读取的指令有关)亦可由指令读取状态机器及控制逻辑单元211获得,并置于信号路径287(经由多路复用器280传送)上。
再一次强调,应该了解到依照本发明的范围及精神,根据处理器结构上的较佳实施例,包含特定的缓存器、缓存器档案及其它因素,可以将指令读取状态机器及控制逻辑单元211可用以提供各种不同的指令信息并暂时储存于脱序执行信息储存器270。为了要简化,图3是以一已简化的形式来举例描述,及假设只处理一单一脱序执行指令。然而一实施例中该指令读取单元210,可以处理在紧邻顺序中遇到的脱序执行指令。例如在处理一分支或回复指令时,一中断条件可能发生而要二个连续的脱序执行指令的预先读取。在如此的实施例中,脱序执行信息储存器270可以组态成一个二层深的队列形式。此电路进一步类似的扩充可依类似的方式完成。
图3的举例也包含组合控制逻辑单元291。此组合元素只是举例(总合而言的)说明那是用来控制脱序执行信息储存器270及激发状态的队列272(active queue)的操作。此逻辑单元进一步的操作为适当地设定激发状态的队列272的旗标。必须了解到此逻辑单元实际的完成方式可能会随着实施例不同而改变。本发明的范围集会限定于特定的完成方式。
在描述了本发明实施例中一些组成元素后,现在参阅图4,其为依据本发明的实施例一个用来举例说明预先读取脱序执行指令的方法的流程图。在正常的指令处理过程中,上述方法辨认或决定读取一脱序执行指令的需要(步骤402),例如响应一分支指令或中断向量条件。当这个情况发生时,此方法决定前一指令是否由当时的在激发状态的存储器存取时引发(步骤404)。依据本发明较广的发明概念,可以有各种不同的方法来做此决定。如果没有当时未完成的存储器存取正在发生(从前一指令),此方法可以无迟疑地读取上述被引发的脱序执行指令(步骤406)。
然而,如果前一个指令当时正在一存储器存取中,则此方法预先读取被引发的脱序执行指令(步骤410)。预先读取指令暂时被放在储存区域中(最好是在读取单元中)。此方法进一步辨认或产生且暂时地储存与脱序执行指令有关的信息(步骤412)。此信息可能包含各种不同的信息,例如一或多种处理器的模式(对那些可处理多重模式的处理器而言)、指令集的辨认(对那些可处理多重指令集的指令的处理器而言)、状态旗标、当回复一呼叫或中断服务例行程序时,加载程序计数器的回复地址与各种不同的其它信息。
然而实质上此方法等待该未完成的存储器存取(侦测于步骤404中)的完成(步骤420)。当此方法正在等待该未完成的存储器存取的完成时,也同时监测与存储器存取有关的数据错误或例外的发生(步骤422)。如果一数据错误确实发生了,则此方法丢弃所有预先读取指令及有关的信息(步骤430)。此方法然后发出向量到一数据错误处理模块(步骤432)去处理或处理数据错误例外。
如果没有数据错误或例外的发生,一但前一指令的未完成的存储器存取已经完成(即步骤420判断结果为no),则此方法储存相关信息(步骤440),例如借着将数据写入缓存器档案160。此方法进一步传送预先读取的指令到译码单元120去译码(步骤442)。
必须了解到上文已经描述了某些实施例各式各样的特征及解释。然而本发明不应当被不适当地限制在上述的实施例及解释,应该可无毫无困难地扩充及应用在各种不同的处理器架构。例如本发明可以毫无困难地以一现存的处理器架构,即众所皆知的ARM架构来完成,其为一32位嵌入式RISC处理器。关于ARM架构的结构及操作已有大量的公开的信息可取得,例如包含ARM的「架构参考手册」(Architecture Reference Manual)第二版,由David Seal所写,Addison-Wesley所出版,1996-2000。如同所知,ARM处理器一共有37个缓存器,其中31个是一般目的缓存器,包含一程序计数器。此外还有6个状态缓存器且此处理器可以在7种不同的操作模式中操作。在ARM架构的处理器中,有一个是当时程序状态缓存器(currentprogram status register)及一个储存状态缓存器(saved program statusregister)。此当时程序状态缓存器如同其名,包含附属于当时的操作指令的状态信息。当一例外或分支发生时,当时程序状态缓存器的内容会被写入储存状态缓存器。除了因为程序执行而将程序计数器回复到适当的区域外,当离开一呼叫握中断例行程序,该处理器可能借着搬移储存状态缓存器的内容到当时程序状态缓存器来回复到适当的操作状态。
简略地参阅图5,以本发明一实施例中在类似的缓存器中可能提供的内容为例。在此考虑下该缓存器档案160可能包含一当时状态缓存器164及一储存状态缓存器166。再者,根据处理器架构特定的设计和目标,各种不同的信息可能包含于程序状态缓存器164及166。在一较佳实施例中,此信息可能包含一或多个旗标组,中断遮蔽及处理器模式的辨识,还有当时操作指令的只应急的辨识。这些信息性质的元件中任一元件的位数,依据处理器架构及设计而变。
以上所述无意去详尽地揭露或限制本发明于所揭露精确的形式。根据以上的教导,有可能完成明显的改良或变化。在此顾虑下,所讨论的实施例被选来描述以作为本发明概念及其应用的最佳例证,从而使得本领域中具有一般技艺者在各种实施例中使用本发明,并以各种改良来适用于构想中特殊的用途。当被公平且合法授权时,依据此范畴所做的诠释的所有如此的改良及变化皆在本发明所述的权利要求中所决定的范围内。

Claims (14)

1.一种预先读取的脱序执行指令的处理器,包含:
存储器存取逻辑单元,用以产生表示一激发状态的存储器存取的信号,该信号表示存储器存取的动作正在进行中;
指令预先读取逻辑单元,用以从一存储器预先读取指令;
指令信息逻辑单元,用以储存与从该存储器读取的指令有关的一信息;及
控制逻辑单元,用以控制与一预先读取指令有关信息的暂存,在该激发状态的存储器存取及该预先读取的指令为一脱序执行指令下控制暂存。
2.如权利要求1所述的预先读取的脱序执行指令的处理器,更包含一数据错误逻辑单元,用以显示与该激发状态的存储器存取有关的数据错误的发生。
3.如权利要求1所述的预先读取的脱序执行指令的处理器,其中当该激发状态的存储器存取信息表示已完成当时的存储器存取时,该控制逻辑单元则进一步据以储存该暂时储存的信息于一状态缓存器内。
4.如权利要求2所述的预先读取的脱序执行指令的处理器,其中当该数据错误逻辑单元表示一与该当时存储器存取有关的一数据错误发生时,该控制逻辑单元则进一步据以丢弃该暂时储存的状态信息。
5.如权利要求1所述的预先读取的脱序执行指令的处理器,其中该指令信息逻辑单元用以储存包含一回复地址的指令信息。
6.如权利要求1所述的预先读取的脱序执行指令的处理器,其中该指令信息逻辑单元用以储存包含一处理器模式的指令信息。
7.如权利要求1所述的预先读取的脱序执行指令的处理器,其中该指令信息逻辑单元用以储存包含一指令集辨识指针的指令信息。
8.如权利要求7所述的预先读取的脱序执行指令的处理器,其中该指令集辨识指针包含一位,该位用来表示当时预先读取的指令为一16位或32位的指令。
9.如权利要求1所述的预先读取的脱序执行指令的处理器,其中该指令信息逻辑单元以具有复数个输入的队列的形式来组成,其中每一该输入用以储存与已读取的一脱序执行指令有关的信息。
10.一种预先读取的脱序执行指令的方法,包含:
决定该脱序执行指令是否跟随于与一存储器存取有关的指令之后;及
如果该脱序执行指令跟随于与该存储器存取有关的指令之后,则实行以下步骤:
预先读取该脱序执行指令;
暂时储存与脱序执行指令有关的信息于一储存区域中;及
如果该存储器存取顺利完成,没有发生错误,储存该暂时被储存的信息,并处理该预先读取的指令。
11.如权利要求10所述的预先读取的脱序执行指令的方法,其中该储存暂时被储存信息,包含搬移该暂时被储存信息到该处理器的一状态缓存器内。
12.如权利要求10所述的预先读取的脱序执行指令的方法,其中该暂时储存信息包含暂时储存一回复地址。
13.如权利要求10所述的预先读取的脱序执行指令的方法,其中该暂时储存信息包含暂时储存与脱序执行指令有关的一处理器模式的辨识。
14.如权利要求10所述的预先读取的脱序执行指令的方法,其中该暂时储存信息包含暂时储存一与脱序执行指令有关的指令集的辨识。
CNB2004100335764A 2003-08-13 2004-04-07 预先读取脱序执行指令的方法及处理器 Expired - Lifetime CN1304944C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/640,592 2003-08-13
US10/640,592 US6983359B2 (en) 2003-08-13 2003-08-13 Processor and method for pre-fetching out-of-order instructions

Publications (2)

Publication Number Publication Date
CN1581068A CN1581068A (zh) 2005-02-16
CN1304944C true CN1304944C (zh) 2007-03-14

Family

ID=34136121

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100335764A Expired - Lifetime CN1304944C (zh) 2003-08-13 2004-04-07 预先读取脱序执行指令的方法及处理器

Country Status (3)

Country Link
US (1) US6983359B2 (zh)
CN (1) CN1304944C (zh)
TW (1) TWI245220B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7370153B1 (en) * 2004-08-06 2008-05-06 Nvidia Corporation System and method of pre-fetching using an extended data structure including required data and a pre-fetch flag
US7526604B1 (en) 2004-08-09 2009-04-28 Nvidia Corporation Command queueing speculative write prefetch
US7328327B2 (en) * 2006-01-11 2008-02-05 Sun Microsystems, Inc. Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor
US7958333B2 (en) * 2007-05-30 2011-06-07 XMOS Ltd. Processor with memory access stage adapted to fetch an instruction of a thread when no memory access operation is detected
US8478940B2 (en) * 2009-06-02 2013-07-02 International Business Machines Corporation Controlling simulation of a microprocessor instruction fetch unit through manipulation of instruction addresses
US8683270B2 (en) * 2010-04-29 2014-03-25 Micron Technology, Inc. Signal line to indicate program-fail in memory
TWI478065B (zh) * 2011-04-07 2015-03-21 Via Tech Inc 執行模式備份暫存器之模擬
US9330432B2 (en) * 2013-08-19 2016-05-03 Apple Inc. Queuing system for register file access
US10048963B2 (en) 2016-05-23 2018-08-14 International Business Machines Corporation Executing system call vectored instructions in a multi-slice processor
US11003457B2 (en) * 2019-01-23 2021-05-11 Mediatek Inc. Power-saving mechanism for memory sub-system in pipelined processor
US10956168B2 (en) 2019-03-08 2021-03-23 International Business Machines Corporation Post completion execution in an out-of-order processor design

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463745A (en) * 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US5701493A (en) * 1995-08-03 1997-12-23 Advanced Risc Machines Limited Exception handling method and apparatus in data processing systems

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5197130A (en) * 1989-12-29 1993-03-23 Supercomputer Systems Limited Partnership Cluster architecture for a highly parallel scalar/vector multiprocessor system
GB2289353B (en) 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
JP2586835B2 (ja) * 1994-10-28 1997-03-05 日本電気株式会社 半導体集積回路
US5790845A (en) * 1995-02-24 1998-08-04 Hitachi, Ltd. System with reservation instruction execution to store branch target address for use upon reaching the branch point
US5748452A (en) * 1996-07-23 1998-05-05 International Business Machines Corporation Multi-electronic device package
JP2000208698A (ja) * 1999-01-18 2000-07-28 Toshiba Corp 半導体装置
US6308279B1 (en) * 1998-05-22 2001-10-23 Intel Corporation Method and apparatus for power mode transition in a multi-thread processor
US6451624B1 (en) * 1998-06-05 2002-09-17 Micron Technology, Inc. Stackable semiconductor package having conductive layer and insulating layers and method of fabrication
US6161174A (en) * 1998-11-05 2000-12-12 Wilhite; John E. Pipelined central processor incorporating indicator busy sensing and responsive pipeline timing modification
US6393572B1 (en) * 1999-04-28 2002-05-21 Philips Electronics North America Corporation Sleepmode activation in a slave device
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6528870B2 (en) * 2000-01-28 2003-03-04 Kabushiki Kaisha Toshiba Semiconductor device having a plurality of stacked wiring boards
US6380624B1 (en) * 2000-10-10 2002-04-30 Walsin Advanced Electronics Ltd. Stacked integrated circuit structure
JP4454181B2 (ja) * 2001-05-15 2010-04-21 富士通マイクロエレクトロニクス株式会社 半導体装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5463745A (en) * 1993-12-22 1995-10-31 Intel Corporation Methods and apparatus for determining the next instruction pointer in an out-of-order execution computer system
US5701493A (en) * 1995-08-03 1997-12-23 Advanced Risc Machines Limited Exception handling method and apparatus in data processing systems

Also Published As

Publication number Publication date
US20050038976A1 (en) 2005-02-17
TW200506721A (en) 2005-02-16
TWI245220B (en) 2005-12-11
US6983359B2 (en) 2006-01-03
CN1581068A (zh) 2005-02-16

Similar Documents

Publication Publication Date Title
CN1127687C (zh) 带外部协处理器可访问的上下文切换寄存器组的risc处理器
CN1267819C (zh) 计算机系统内部处理指令的装置
CN1304944C (zh) 预先读取脱序执行指令的方法及处理器
CN1129843C (zh) 使用组合的数据处理器系统和指令系统
KR101636836B1 (ko) 명령어들의 고속 실패 핸들링을 위한 장치 및 방법
CN1147794C (zh) 具有静态转移预测支持的去耦取指令-执行引擎
CN101034470A (zh) 指令解析器以及图形处理单元及其方法
JP2002149424A (ja) 共有コプロセッサ・リソースに対する複数の論理インタフェース
US7620804B2 (en) Central processing unit architecture with multiple pipelines which decodes but does not execute both branch paths
CN1841314A (zh) 双线程处理器
JP4956891B2 (ja) 演算処理装置,情報処理装置および演算処理装置の制御方法
JPS633337B2 (zh)
JP2009099097A (ja) データ処理装置
KR100983135B1 (ko) 패킷의 의존성 명령을 그룹핑하여 실행하는 프로세서 및 방법
CN101884025A (zh) 用于使过程返回序列加速的方法和系统
CN1308815C (zh) 多周期指令
CN1257450C (zh) 节省资源的硬件环路
CN100343799C (zh) 产生流水线微处理器的早期状态标志的装置及方法
TWI592803B (zh) 嵌入式系統之操作方法與控制晶片
CN1650257A (zh) 互换地址寄存器所存内容的方法和设备
CN101689109A (zh) 指令控制装置以及指令控制方法
JP5093237B2 (ja) 命令処理装置
JP4896839B2 (ja) マイクロプロセッサおよびデータ処理方法
US20050257035A1 (en) Linked instruction buffering of basic blocks for asynchronous predicted taken branches
CN1270234C (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
CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20070314