CN101647000B - 用于在处理器中的执行级之前执行指令的系统及方法 - Google Patents

用于在处理器中的执行级之前执行指令的系统及方法 Download PDF

Info

Publication number
CN101647000B
CN101647000B CN200880009979.1A CN200880009979A CN101647000B CN 101647000 B CN101647000 B CN 101647000B CN 200880009979 A CN200880009979 A CN 200880009979A CN 101647000 B CN101647000 B CN 101647000B
Authority
CN
China
Prior art keywords
instruction
level
processor
pipeline
execution
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.)
Active
Application number
CN200880009979.1A
Other languages
English (en)
Other versions
CN101647000A (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 CN101647000A publication Critical patent/CN101647000A/zh
Application granted granted Critical
Publication of CN101647000B publication Critical patent/CN101647000B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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, 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/38Concurrent instruction execution, e.g. pipeline, 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Abstract

本发明揭示一种在管线处理器内的多个管线级中处理多个指令的方法。所述方法在所述处理器内的执行级之前在具有除指令执行以外的功能的管线级中部分地或全部地执行停止的指令。在所述管线中的所述执行级之前部分地或全部地执行所述指令加速所述指令的执行且允许所述处理器更有效地利用其资源,因此增加所述处理器的效率。

Description

用于在处理器中的执行级之前执行指令的系统及方法
技术领域
本发明通常涉及计算机系统,且更明确地说涉及用于在处理器中的执行级之前执行指令的方法及系统。
背景技术
处理器管线由许多级组成,其中每一级实施与处理及执行指令相关联的功能。每一级称作管道级或管道段。所述级连接在一起形成管线。指令在管线的一端进入且在另一端退出。所述指令一连串地依次流动穿过所述管道级。所述级经布置以使得数个级可同时处理数个指令。同时在不同的管线级处处理多个指令允许处理器比每次只处理一个指令更快地处理指令,因此改进所述处理器的执行速度。
指令的处理以在第一管线级期间提取所述指令开始。所述指令接着被传递到处理器内的后续级且由所述后续级处理。当在每一级中处理所述指令时,可对所述指令执行各种功能。指令的例示性处理可包含提取所述指令、将所述指令解码、识别所述指令、执行所述指令、记录结果等等。
当处理器处理指令时,其可在执行指令时经历延迟。这些延迟可由所述处理器所遭遇的故障引起。如所属领域的技术人员所了解,存在可在管线处理器内遭遇的三种类型的故障:资源故障(也称为结构故障)、数据故障及控制故障。所有三种故障均延迟指令执行。当指令所需的硬件不可用时,存在资源故障。通常,此在多个指令需要使用相同资源时发生。当收集或识别与所述指令有关的信息时,数据故障出现。数据故障包含写入后读取(RAW)、写入后写入(WAW)及读取后写入(WAR)故障。当一些指令改变程序计数器时,控制故障生成。
在一些处理器中,当遭遇故障时,被延迟的指令可保持在保持级中。举例来说,当收集或识别与指令有关的信息时,可将所述被延迟的指令保持在所述保持级中。在所述信息变为可用之后的某一时间,将所述指令从所述保持级释放且将所述指令传递到后续级。在管线内后面级中的一者中,所述指令最终由执行级处理。在所述执行级期间执行所述指令之后,指令执行的结果由处理器收集并存储。
通常在一些处理器中,当指令由于管线故障而经历延迟时,所述指令被延迟到达执行级,因此所述指令的执行被延迟。正如资源故障的情形一样,尽管执行所述指令所必需的信息中的一些信息或所有信息可以是可用的,但处理器可能不具有可用于执行所述指令的资源。在执行级之前延迟指令的执行可影响并减小处理器的总处理效率。
发明内容
因此,行业中存在对具有一种处理器的需要,所述处理器可在处理器内的执行级之前在具有除指令执行以外的功能的管线级中部分地或全部地执行停止的指令。在所述管线中于所述执行级之前部分地或全部地执行指令加速所述指令的执行且允许所述处理器更有效地利用其资源,因此增加所述处理器的效率。本发明认识到此需要且揭示此处理器。
本文揭示一种在具有除指令执行以外的主要功能的管线级中部分地执行停止的指令的方法。所述方法将第一指令加载到保持级中。如果遭遇管线故障,那么所述方法停止所述第一指令且部分地执行所述第一指令。所述方法进一步将所述第一指令加载到执行级中且在所述执行级中完成所述第一指令的执行。
在替代实施例中,揭示一种在具有除指令执行以外的主要功能的管线级中全部地执行停止的指令的方法。所述方法将第一指令加载到保持级中。如果遭遇管线故障,那么所述方法停止所述第一指令且全部地执行所述第一指令。所述方法进一步写入所述第一指令的所述执行的结果。
本文揭示一种管线处理器。所述管线处理器具有经配置以接受第一指令的保持级,所述保持级耦合到执行级。所述保持级经配置以在遭遇管线故障时停止所述第一指令,所述保持级进一步包括执行逻辑电路,所述执行逻辑电路经配置以部分地执行或全部地执行所述第一指令,且所述执行级进一步包括若干执行单元,所述执行单元经配置以执行所述已部分地执行的第一指令。
根据下文详细描述及附图,将易知对本发明以及本发明的其它特征及优点的更完整理解。
附图说明
图1显示使用本发明实施例的处理器的高级逻辑硬件框图。
图2显示图1的处理器内的CPU的较详细框图。
图3显示图1的处理器所执行的例示性指令群组。
图4显示图3的例示性指令群组在其经由图1的处理器的各种级被执行时的时序图。
图5显示图1的处理器所执行的另一例示性指令群组。
图6显示图5的例示性指令群组在其经由图1的处理器的各种级被执行时的时序图。
具体实施方式
以下结合附图陈述的详细描述打算作为对本发明各种实施例的描述,而非打算仅表示其中可实践本发明的实施例。出于提供对本发明的透彻理解的目的,所述详细说明包含具体细节。然而,所属领域的技术人员将了解,可不以这些具体细节来实践本发明。在一些实例中,为避免模糊本发明的概念,以框图形式显示众所周知的结构及组件。首字母缩写及其它描述性术语的使用可仅出于便利及清晰之意图,而非打算限制本发明的范围。
图1显示利用如下文所述的实施例的超标量处理器100的高级视图。处理器100具有中央处理单元(CPU)102,其经由专用高速总线104耦合到指令高速缓冲存储器106。指令高速缓冲存储器106还经由通用总线110耦合到存储器108。CPU 102具有耦合到下部管线160及165的上部管线150。CPU 102控制指令从存储器114到指令高速缓冲存储器106中的加载。一旦用指令加载指令高速缓冲存储器106,CPU 102便能够经由高速总线104存取所述指令。将指令从指令高速缓冲存储器106提取到上部管线150中。在上部管线150中处理所述指令之后,将所述指令发送到下部管线160或165以供进一步处理。
指令按照顺序性次序进入所述上部管线且可在下部管线160或165中被重新布置以实现更有效的处理。图2到图6的论述中更详细地描述指令在下部管线160及165中的重新布置。在上部管线150中对所述指令执行的一些例示性处理功能包含提取所述指令、对准所述指令、将所述指令解码等等。在下部管线160及165内,指令处理可包含追踪所述指令、执行所述指令、记录指令结果等等。
下部管线160及165可含有各种执行单元(EU)130,例如算术逻辑单元、浮点单元、存储单元、加载单元等等。举例来说,具有算术逻辑单元的EU 130可执行各种各样的算术功能,例如整数加法、减法、简单乘法、逐位逻辑运算(例如,“与”、“非”、“或”、“异或”)、位移位等等。或者,EU 130可具有执行加载、读取或写入功能的加载单元或存储单元。为增加处理器100的效率,下部管线160及165可经组织以执行某些功能。举例来说,下部管线160可含有执行算术功能的EU 130,而下部管线165可含有执行加载/存储功能的EU 130。通过将某一功能性分隔到单独的下部管线160或165中,可不需要双重的EU 130。在替代实施例中,下部管线160及165可含有类似的EU 130,其允许处理器在相同的处理器循环期间在每一下部管线160及165中对多个指令执行类似的处理功能。在又一实施例中,可仅存在一个处理指令的下部管线。如本文中所呈现的发明性概念可应用于具有一个或一个以上下部管线的处理器。
如所属领域的技术人员可了解,管线级可由经设计以保持指令的寄存器或寄存器群组组成。当指令进入特定级时,处理器将所述指令加载到链接到所述级的寄存器或寄存器群组中。与每一级相关联的可以是逻辑电路,所述逻辑电路可执行一些运算,此取决于所述指令。在所述逻辑电路已执行其既定运算之后,所述指令接着被传递到下一后续级。
图2显示CPU 102的较详细的框图。上部管线150具有耦合到提取级203的提取逻辑电路202,提取级203耦合到解码级204。在下部管线160或165内的是耦合到执行级220的保持级210,执行级220耦合到回写级230。保持级210还可直接耦合到回写级230。下部管线160及165的回写级230通过总线170耦合到寄存器文件235。保持级210耦合到执行逻辑电路240且EU 130耦合到执行级220。
指令从上部管线150的顶部流动穿过下部管线160及165。在上部管线150内,提取级203使用提取逻辑202来确定且随后提取来自指令高速缓冲存储器106的指令。在指令高速缓冲存储器106中,将指令分组到称为高速缓冲存储器线的区段中。每一高速缓冲存储器线可含有多个指令。因此,可每次数个指令地从指令高速缓冲存储器106提取并解码指令。在由提取逻辑202提取所述指令之后,将所述指令发送到解码级204。
在解码级204中,将所述指令解码以确定所述指令的身份以及任何可能的指令相依性(即,数据故障)。在解码级204期间由解码逻辑电路(为便于图解说明,未显示解码逻辑电路)检索或识别的信息允许处理器100确定下部管线160或165中的哪一者将接收所述指令以供进一步处理。如先前所提及,下部管线160可经设计以处置算术功能,而下部管线165可经设计以处置加载/存储功能。在图2的实施例中,下部管线160及165含有类似的运算块,尽管其处理的指令可在功能上不同。
在说明性实例中,可将指令识别为乘法指令,从而将两个寄存器的内容相乘在一起且将结果存储在第三寄存器中。所述识别过程可在解码级204期间发生。而且在解码级204期间,还可识别与所述乘法指令相关的可能的数据故障。在此实例中,可在处理器100识别所述乘法指令的操作数中的一者或两者可能不可用(即,所述两个寄存器的内容尚不可确定)的情形下将所述指令发送到下部管线160。
一旦指令穿过解码级204且传递到下部管线160或165中的任一者,处理器100便继续监视所述指令的处理,直到所述指令完成其执行且结果被写入。当指令结束执行时,在总线170上传输所述结果,且处理器100可使用此信息来加快后续指令的执行。
处理器可用来监视指令的一种技术称为对所述指令进行“记分板记分”。所属领域的技术人员了解,使用指令记分板追踪指令允许处理器追踪指令进度以及任何指令相依性。在解码级204中识别指令之后,在所述指令记分板中创建用于所述指令的条目。所述条目可包含条目编号或其它指令识别符、指令功能(即,相乘、相加、加载、存储等等)、下部管线中的所述指令当前所位于的级及所述指令可具有的任何相依性。一旦所述指令在下部管线160或165中结束执行,便移除所述指令条目。
当指令进入下部管线160或165时,其首先在保持级210中被处理。所述指令可在保持级210中保持达一个或一个以上处理器循环,以等待一个或一个以上故障被解决。在一个例示性实施例中,所述保持级可以是保留级。在替代实施例中,所述保持级可以是指令队列。所属领域的技术人员了解,可将经由保留级被处理的指令重新排序,因此允许较新指令在较老指令遭遇数据故障时绕过所述较老指令。相反地,指令队列可不允许指令的重新排序。所述指令队列在先进先出的基础上处理指令。因此,如果所述指令队列中的最老指令由于数据故障而经历延迟,那么后续较新指令也将遭遇延迟并留待在所述指令队列中,直到所述较老指令离开。对于所述保留级或指令队列,保持级210的主要目的是在遭遇故障时给处理器100提供用于所述指令的暂时保持位置。
等待解决故障的指令也可称为停止的指令。将停止的指令暂时保持在保留级中允许后续指令绕过所述停止的指令且继续移动穿过下部管线160及165。绕过停止的指令允许处理器更有效地使用其处理资源。如果没有保留级,那么可阻挡流动穿过下部管线160或165的所述指令,直到管线故障解决。
在一个实施例中,保持级210可以是具有能够保持单个指令的寄存器的保留级。在又一实施例中,所述保留级可以是能够保持多个指令的寄存器组。当确定所述保留级中可保持多少指令时,所保持的指令的数量必须与所需的额外硬件的量以及处理器100经历的任何可能的性能降级平衡。
处理器100在停止的指令处于保持级210中时继续监视所述指令。一旦所述处理器已确定与所述停止的指令相关联的管线故障已被解决,处理器100便将所述指令释放回到下部管线160或165的处理流中。如果所述指令已将其所有数据故障解决(即,所述指令具有其所有操作数),那么将所述指令从保持级210传递到执行级220。在执行级220内,由EU 130执行所述指令。在执行所述指令之后,当所述指令处于回写级230中时由回写逻辑电路(为便于图解说明,未显示)将结果写入到寄存器文件235。
当一个或多个指令保持在下部管线160或165中的保持级210中时,执行逻辑电路240可执行所述指令中的一些或全部指令。在一个实施例中,执行逻辑电路240含有存在于EU 130中的逻辑电路子组。具有可由执行逻辑电路240执行的可执行功能的指令可在到达执行级220之前由执行逻辑电路240全部地或部分地执行。由保持级210中的指令的部分执行所产生的结果可由处理器100保存并传递到执行级220。当在保持级210中全部地或完全地执行指令时,可由回写级230将所述指令执行所产生的结果直接写入到寄存器文件235。图3到图6的后续论述中更详细地描述此过程。
在例示性实施例中,执行逻辑电路240可含有执行逻辑左移(LSL)运算的逻辑电路。在此实施例中,执行逻辑电路240含有还出现在下部管线160或165中的EU 130内的逻辑电路的副本。通过使逻辑电路在执行逻辑电路240以及EU 130两者中执行LSL运算,处理器100可在保持级210或执行级220中借助LSL运算执行指令,因此增加处理器100的处理效率。
当决定执行逻辑电路240中支持何种功能性时,可将所需的额外空间、功率及热耗散、执行时间量及特定指令的频率考虑在内。在先前所描述的实施例中,可足够频繁地执行LSL指令使得通过在执行级220之前执行LSL指令所节省的处理器循环的数量胜过处理器100可经历的任何性能影响。在替代实施例中,可在执行逻辑电路240中实施例如加法、减法、逻辑运算等等的其它功能。
图3显示利用本发明一个实施例的处理器100所处理的例示性指令群组300。出于此实例的目的,执行逻辑电路240含有逻辑左移(LSL)电路。图4显示指令群组300在其经由上部管线150及下部管线165的级被处理时的时序图400。时序图400沿Y轴404显示处理器循环402且沿X轴406显示处理器100的级(203、204、210、220及230)。尽管时序图400显示指令群组300流动穿过下部管线160,但指令群组300可流动穿过下部管线165。另外,图4中所显示的保持级210可以是保留级或指令队列。在描述指令群组300的处理时,保留级用作保持级210的实例。
如图3中所显示,复合指令B、C及D具有多个可执行运算。复合指令B由LSL运算302及ADD运算303组成。复合指令B的LSL运算302将寄存器5(R5)在逻辑上左移(LSL)2。ADD运算303包括将R5(在逻辑上被移位2之后)与寄存器1(R1)相加而将结果写入到寄存器4(R4)中。复合指令C具有LSL运算304及ADD运算305。LSL运算304包括将R5LSL寄存器7(R7)中所界定的值,且ADD运算305是将R5与R1相加而将结果写入到寄存器6(R6)中。指令D具有LSL运算306及SUB运算307。指令D的LSL运算306将R7的内容在逻辑上左移2。指令D的SUB运算307将R4中的值减去R7中的值并将结果存储在寄存器8(R8)中。
参照图4,指令A是处理器100所处理的第一指令。在处理器循环1中,将指令A提取到指令提取级203中。在处理器循环2中,将指令A发送到解码级204,同时由提取逻辑202提取复合指令B且将其加载到指令提取级203中。在处理器循环3中,将指令A发送到下部管线160的保留级。在此实施例中,所述保留级可保持多达两个指令。而且,在处理器循环3期间,在解码级204中将复合指令B解码,同时由指令提取级203提取复合指令C。在将指令B解码之后,处理器100确定指令B是具有对尚待依据指令A(即,R1的值)的执行确定的信息的相依性(即,数据故障)的复合指令。由于指令A不具有相依性,因此其将在所述保持级中仅留待达一个处理器循环(处理器循环3)。
在处理器循环4中,在执行级220中执行指令A,同时将复合指令B加载到所述保留级中。复合指令B将被保持在所述保留级中,直到其操作数的相依性得到解决(即,在执行指令A之后确定R1的值)。在此实例中,当处理器100在回写级230期间将指令A的结果写入到寄存器文件235中时,R1的值可用于下一处理器循环(处理器循环5)中。在处理器循环4期间,由指令提取级203提取复合指令D且在解码级204中处理复合指令C。在于解码级204中将复合指令C解码之后,处理器100识别复合指令C是含有逻辑左移功能且具有对指令A(即,R1的值)的相依性的复合指令。
当复合指令B在处理器循环4期间处于所述保留级中时,执行逻辑电路240可执行LSL运算302。因此,复合指令B在保持在所述保留级中时可由执行逻辑电路240部分地执行。如先前所描述,执行逻辑电路240可含有用以执行LSL运算的逻辑电路(在此实例中是逻辑左移2指令)。通过在停止循环期间(其相反地不执行运算)执行所需运算,处理器的效率增加。如果所述保留级中没有执行逻辑电路240,那么在执行级220中复合指令B将需要2个处理器循环来完成其执行(即,用于执行LSL运算302的一个循环及用于执行ADD运算303的一个循环)。在此实例中,由执行LSL运算302所产生的结果由处理器100保存,且当将复合指令B发送到执行级220时(在处理器循环6中),也发送所述结果。使用执行逻辑电路240来执行LSL运算302使得处理器100能够在复合指令B到达执行级220时在一个处理器循环中执行ADD运算303。因此,在执行级中执行复合指令B的所需处理时间减少了一个处理器循环。此外,此实施例允许在存在对复合指令的一部分的相依性时执行所述复合指令的另一部分。
如先前所提及,在处理器循环5中,指令A结束执行且在回写级230期间将结果写入到寄存器文件235。在处理器循环5中,当复合指令B处于所述保留级中时,将所述结果提供到复合指令B。在下一处理器循环(处理器循环6)中,将把复合指令B释放到执行级220。在处理器循环5期间,将复合指令C加载到所述保留级中。在处理器循环5中,处理器100曾确定复合指令C也需要存储在目前为可用的R1中的值。因此,复合指令C基于操作数可用性而不再具有任何数据故障,且如果在下一处理器循环(处理器循环6)期间执行级220可用,那么可将复合指令C释放到执行级220。然而,首先将复合指令B释放到执行级220中,因此复合指令C由于资源冲突(执行级220由指令B占据)而经历停止且留待在所述保留级中,直到将复合指令B发送到回写级(处理器循环7)。
在处理器循环5期间,当复合指令C停止在所述保留级中时,执行逻辑电路240可执行LSL功能304。处理器100可在处理器循环5的开始处将R7的内容加载到执行逻辑电路240中。在处理器循环5期间,执行逻辑电路240可执行LSL功能304。由执行LSL运算304所产生的结果由处理器100保存且当将复合指令C发送到执行级220时(在处理器循环7中),也发送所述结果。如果所述保留级中没有执行逻辑电路240,那么在执行级200中复合指令C将需要两个处理器循环来完成其执行(即,用于执行LSL运算304的一个循环及用于ADD运算305的一个循环)。使用执行逻辑电路240执行LSL运算304使得处理器100能够在复合指令C到达执行级220时在一个处理器循环中执行ADD运算305。因此,在执行级220中执行复合指令C所需的处理时间减少了一个处理器循环。
在处理器循环5中,在解码级204中处理复合指令D且由指令提取级203提取指令E。在将复合指令D解码之后,处理器100识别复合指令D是具有两个可执行运算(LSL运算306及SUB运算307)的复合指令。处理器100进一步识别复合指令D具有对复合指令B的相依性(即,复合指令D需要确定R4的值以便执行)。在解决复合指令D的数据故障之后(即,R4的结果可用),将释放复合指令D并将其发送到执行级220以供进一步执行。
在处理器循环6中,资源故障被解决且复合指令C将离开所述保留级并在处理器循环7中被发送到执行级220。而且,在处理器循环6期间,将复合指令D加载到所述保留级中,在解码级204中处理指令E,且由指令提取级203提取指令F。在处理器循环7期间,复合指令D继续保持在所述保留级中,因为R4的值直到复合指令B结束执行才被写入,且在回写级期间(处理器循环7)将结果写入到寄存器文件235。
然而,由于处理器100已识别复合指令D含有可执行的LSL运算,因此处理器100在处理器循环6的开始处将R7的值加载到执行逻辑电路240中。在处理器循环6期间,执行逻辑电路240执行LSL运算306。在处理器循环8中,保存结果并在将复合指令D发送到执行级220时将所述结果与复合指令D一起发送。在处理器循环7之后,处理器100将复合指令D从所述保留级释放到执行级220,因为对R4的相依性已解决且执行级220可用(即,不存在由于资源故障所致的停止)。在处理器循环8中,执行复合指令D,且在处理器循环9中于回写级230期间将结果写入到寄存器文件235。通过在所述保留级中执行LSL功能306,对R4的所述相依性不影响复合指令D在执行级220中的执行。
在处理器循环6中将指令E解码之后,处理器100基于操作数可用性识别所述指令不具有任何相依性(即,数据故障)。在处理器循环7中将指令E发送到所述保留级。在处理器循环7期间,指令D将要离开所述保留级且指令E在所述保留级中留待达额外的循环。如先前所论述,尽管指令E可具有其所有操作数,但在其执行可开始之前,其等待执行级220变为可用。由于指令E不具有LSL运算,因此执行逻辑电路240(对于此实例,其仅实施LSL运算)可不用于在执行级220之前执行指令E。
在处理器循环6期间,将指令F从指令高速缓冲存储器106提取到指令提取级203中。在处理器循环7中,在解码级204中处理指令F。在处理器循环8期间,将指令F发送到下部管线160的保留级以供进一步处理。指令F在所述保留级中留待达两个处理器循环(处理器循环8及9),同时先前的指令(指令D及E)分别在执行级220及回写级230中被处理。由于指令F是ORR指令且执行逻辑电路240含有LSL电路,因此不在执行级220之前实施对指令F的执行。因此,在处理器循环10中执行指令F,且在处理器循环11中于回写级230期间将其结果写入到寄存器文件235。
如果使用指令队列替代所述保留级来处理先前实例中所描述的指令群组300,那么结果将会完全相同。所述结果相同是因为指令群组300在于所述保留级中被处理之后未被重新排序。因此,当在执行级220中执行指令群组300时,并未无序地执行所述指令。
图5显示利用本发明实施例的处理器100所处理的另一例示性指令群组500。图6显示指令群组500在其流动穿过处理器100中的上部管线150及下部管线160的各种级时的时序图600。时序图600沿Y轴604显示处理器循环602且沿X轴606显示处理器100的级(203、204、210、220及230)。尽管时序图600显示指令群组500流动穿过下部管线160,但如果下部管线165能够处理指令群组指令群组500,那么指令群组500也可流动穿过下部管线165。另外,图6中所显示的保持级210可以是保留级或指令队列。为便于图解说明,使用保留级来处理指令群组500。
如图5中所显示,复合指令B1及C1具有多个可执行运算。复合指令B1具有LSL运算502及ADD运算503。LSL运算502是将R5逻辑左移(LSL)2且ADD运算503是将R5(在逻辑上被左移2之后)与R1相加并将结果存储在R6中。复合指令C1具有LSL运算504及ADD运算505。LSL功能504将R5在逻辑上左移R7中所界定的值且ADD功能505是将R5(在逻辑上被左移R7的值之后)与R1相加并将结果存储在R4中。
参照时序图600,在处理器循环1期间,由指令提取级203使用提取逻辑电路从指令高速缓冲存储器106提取指令A1。在处理器循环2中,将指令A1发送到解码级204以供处理,同时由指令提取级203提取复合指令B1。在将指令A1解码之后,处理器100基于操作数可用性识别指令A1不具有任何相依性且不会将其保持在所述保留级中用于相依性解决。
在处理器循环3中,将指令A1发送到下部管线160的保留级。在处理器循环4中,由于指令A1不具有相依性(即,已识别其操作数且不存在资源冲突),因此其在被发送到执行级220之前将在所述保留级中留待仅一个处理器循环(处理器循环3)。在处理器循环3期间,在解码级204中将复合指令B1解码,同时由指令提取级203提取复合指令C1。在解码级204期间将指令B1解码之后,处理器100识别复合指令B1是具有两个可执行运算(502及503)的复合指令,其中一个运算是逻辑左移2(LSL功能502)。另外,处理器100识别复合指令B1具有对指令A1的相依性(即,完成复合指令B1的执行需要R1的值)。
在处理器循环4中,在执行级220中执行指令A1,同时复合指令B1进入所述保留级。复合指令B1基于操作数可用性(即,数据故障)而遭遇停止且将保持在所述保留级中,直到R1的值可用。在此实例中,在处理器循环5中,R1的值直到指令A1已结束执行之后才可用且在回写级230期间将结果写入到寄存器文件235。在处理器循环4期间,当复合指令B1处于所述保留级中时,可部分地执行复合指令B1;可由执行逻辑电路240执行LSL功能502。由执行LSL运算502所产生的结果由处理器100保存,且当将复合指令B1发送到执行级220时(在处理器循环6中)也发送所述结果。复合指令B1的剩余ADD功能503将在执行级220期间执行。
在处理器循环4期间,由指令提取级203提取指令D1且在解码级204中处理复合指令C1。在处理器循环4中,在解码级204期间将复合指令C1解码之后,处理器100识别复合指令C1是含有两个可执行运算(LSL运算504及ADD运算505)的复合指令。处理器100还识别复合指令C1的ADD运算505具有对值R1的相依性,所述相依性必须在复合指令C1可离开所述保留级之前解决。
在处理器循环5中,指令A1结束执行且当指令A1处于回写级230中时结果被写入到寄存器文件235。当复合指令B1保持在所述保留级中时,将指令A1的结果发送到复合指令B1。在下一处理器循环(处理器循环6)中,在复合指令B1已接收到所述结果之后,将把所述复合指令释放到执行级220。在处理器循环5期间,继续在所述保留级中处理复合指令C1。处理器100确定复合指令C1的相依性已在处理器循环5中解决,因为现在R1的值可用。然而,在处理器循环6中,复合指令C1将由于因复合指令B1将被首先释放而出现的资源故障而不会被释放到执行级220。在处理器循环5期间,可部分地执行复合指令C1;由执行逻辑电路240执行复合指令C1的LSL运算504。由执行LSL运算504所产生的结果由处理器100保存,且当将复合指令C1发送到执行级220(在处理器循环7中)时,也发送所述结果。在下一处理器循环(处理器循环7)期间,将在执行级220中执行复合指令C1的另一ADD运算505,因为执行逻辑电路240不含有执行ADD功能所必需的逻辑电路。
在处理器循环5中,在解码级204中处理指令D1且由指令提取级203提取指令E1。在将指令D1解码之后,处理器100识别指令D1不具有相依性且不含有LSL运算。因此,由于操作数相依性(即,数据故障),指令D1将不会保持在所述保留级中。
在处理器循环6中,在执行级220中执行复合指令B1。通过利用本发明的一个方面,所述处理器由于先前执行逻辑电路240在处理器循环4中对LSL运算502的执行而在一个处理器循环中完成复合指令B1的执行。使用执行逻辑电路240执行LSL运算502使用于在执行级220中执行复合指令B1的处理时间减少了一个处理器循环。此外,此实施例允许在存在对复合指令的一部分的相依性时执行所述复合指令的另一部分。
由于在处理器循环6期间复合指令C1无法继续进行到执行级220(即,由于在处理器循环6中复合指令B1当前处于执行级220中)。而且在处理器循环6中,指令D1被发送到所述保留级。尽管指令D1基于操作数可用性而不具有相依性,但指令D1遭遇资源故障(复合指令C1正在使用处理器循环7中的执行级220)且直到处理器循环8才会被释放到执行级220。指令D1不具有LSL运算,且因此执行逻辑电路240可不在执行级220之前部分地或全部地执行指令D1。
在处理器循环6期间,在解码级204中处理指令E1且由提取级203提取指令F1。指令E1具有一个可执行LSL运算,所述运算将R2的内容在逻辑上左移2且将结果存储在R3中。由于指令E1仅具有LSL运算,因此可由执行逻辑电路240在所述保留级中全部地或完全地执行指令E1。如时序图400中所显示,指令E1在处于所述保留级中时经历资源故障。
在本发明的替代实施例中,处理器100可故意地使指令E1停止在所述保留级中以允许其由执行逻辑电路240完全地执行。在此实例中,处理器100可确定通过故意地延迟LSL指令,处理器100可为另一指令空出执行级220,因此增加其处理效率。
在处理器循环7期间,在回写级230期间将执行复合指令B1的结果写入到寄存器文件235。当复合指令B1离开执行级220时,复合指令C1进入执行级220。指令D1无法进入执行级220,因为复合指令C1当前正在执行级220处。因此,在处理器循环7中,指令D1由于资源冲突而继续在所述保留级中等待。在处理器循环7期间,指令E1在所述保留级中加入指令D1,且在解码级204中处理指令F1。在处理器循环7期间,当指令E1处于保留级220中时,处理器100使用执行逻辑电路240执行LSL运算507。
在处理器循环8期间,在回写级230中将执行复合指令C1的结果写入到寄存器文件235。指令D1进入执行级220且指令F1进入所述保留级。在处理器循环8期间,由执行逻辑电路240全部地执行指令E1。由于执行逻辑电路240已全部地执行指令E1,因此可在未进入执行级220的情形下将结果写入到寄存器文件235。在此实例中,在处理器循环9期间,由回写级230将执行指令E1的结果写入到寄存器文件235。或者,如果所述处理器不具有允许从所述保留级直接写入寄存器文件235的旁路机制,那么可将所述指令加载到执行级220中。由于所述指令已完成其执行,因此所述指令被发送到回写级,可在所述回写级处将结果写入到寄存器文件235。
在此说明性实例中,指令E1完成其执行且其结果在指令D1已结束执行之前被回写。所述结果由所述保留级直接写入到回写级230中,而所述回写级又将所述结果写入到寄存器文件235。利用执行逻辑电路240执行指令E1替代在执行级220中执行所述指令节省了处理时间。指令E1的结果在处理器循环8之后可用且可被发送回到需要此信息以便执行的任一后续指令。利用已知的技术来处理例示性指令群组500(其不包含当指令处于保留级中时对所述指令的执行),由指令E1所产生的结果将在直到指令D1进入执行级220之后的4个处理器循环时才可用。需要三个处理器循环来执行指令D1且还需要另两个处理器循环来执行复合指令E1。
返回参照图6的时序图600,指令D1在处理器循环9中继续执行且在处理器循环10中结束执行。在处理器循环11期间,在回写级230期间将指令D1的结果写入到寄存器文件235。而且在处理器循环11中,指令F1进入执行级,且在处理器循环12中,在回写级230期间将指令F1的结果写入到寄存器235。
如先前所解释,针对各种实施例描述的概念可在单个管线式处理器中实施。或者,这些概念可应用于具有两个或两个以上下部管线的处理器。处理器100中的执行逻辑电路240可与管线中的在解码级204之后且在执行级220之前处理指令的任一级介接。如先前所提及,如果处理器100预测可能遭遇后续管线故障,那么处理器100可故意地使能够被部分地或全部地执行的指令停止在保持级210中。在保持级210内延迟指令允许执行逻辑电路240部分地或全部地执行所述指令,因此为后续指令空出处理资源。
可用以下装置来实施或执行结合本文所揭示实施例描述的各种说明性逻辑块、模块、电路、元件及/或组件:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑组件、离散门或晶体管逻辑、离散硬件组件或其设计用以执行本文所描述功能的任一组合。通用处理器可以是微处理器,但另一选择为,所述处理器可以是任一常规处理器、控制器、微控制器或状态机。处理器也可实施为计算组件的组合,例如DSP与微处理器的组合、多个微处理器的组合、一个或一个以上微处理器与DSP核心的结合或任一其它此类配置。
虽然本文中已图解说明并描述了具体实施例,但所属领域的技术人员了解,旨在实现相同目的的任一布置均可替代所示的具体实施例且本发明在其它环境中具有其它应用。此申请案打算涵盖本发明的任何修改或变化。以上权利要求书绝非打算将本发明的范围限制于本文中所描述的具体实施例。

Claims (19)

1.一种在管线处理器内的具有除指令执行以外的主要功能的保持级中部分地执行停止的指令的方法,所述方法包括:
将复合指令加载到保持级中;
响应于所述复合指令遭遇管线故障,使所述复合指令停止在所述保持级中,
当所述复合指令停止在所述保持级中时,由执行逻辑电路部分地执行所述复合指令以产生结果;及
在执行所述复合指令之后,将所述复合指令保持在所述保持级中直到所述管线故障消除。
2.根据权利要求1所述的方法,其中所述保持级是保留级。
3.根据权利要求1所述的方法,其中所述保持级是指令队列。
4.根据权利要求1所述的方法,其中所述管线故障是资源故障。
5.根据权利要求1所述的方法,其中所述管线故障是数据故障。
6.一种在管线处理器内的具有除指令执行以外的主要功能的管线级中全部地执行停止的指令的方法,所述方法包括:
将复合指令加载到保持级中;
响应于所述复合指令遭遇管线故障,使所述复合指令停止在所述保持级中,
当所述复合指令停止在所述保持级中时,由执行逻辑电路全部地执行所述复合指令以产生结果;
在执行所述复合指令之后,将所述复合指令保持在所述保持级中直到所述管线故障消除;及
写入所述复合指令的所述执行的结果。
7.根据权利要求6所述的方法,其中所述保持级是保留级。
8.根据权利要求6所述的方法,其中所述保持级是指令队列。
9.根据权利要求6所述的方法,其中将所述结果写入到寄存器文件中。
10.根据权利要求6所述的方法,其中所述故障是资源故障。
11.根据权利要求6所述的方法,其中所述故障是数据故障。
12.根据权利要求6所述的方法,其中所述复合指令包含算术指令或逻辑运算。
13.一种管线处理器,其包括:
保持级,其经配置以:
接收复合指令,其中所述复合指令包括第一可执行运算和第二可执行运算,其中所述第二可执行运算的执行是基于所述第一可执行运算的结果;
响应于遭遇管线故障而停止所述复合指令,当所述复合指令停止在保持级中时,由执行逻辑电路部分地执行或全部地执行所述复合指令;
在执行所述复合指令之后,将所述复合指令保持在所述保持级中直到所述管线故障消除。
14.根据权利要求13所述的管线处理器,其中所述执行逻辑电路执行算术运算或逻辑运算。
15.根据权利要求13所述的管线处理器,其中所述管线故障是资源故障。
16.根据权利要求13所述的管线处理器,其中所述管线故障是数据故障。
17.根据权利要求13所述的管线处理器,其中所述保持级是保留级。
18.根据权利要求13所述的管线处理器,其中所述保持级是指令队列。
19.根据权利要求13所述的管线处理器,其进一步包括寄存器文件,其中所述第一可执行运算的结果被写入到所述寄存器文件中。
CN200880009979.1A 2007-03-28 2008-03-26 用于在处理器中的执行级之前执行指令的系统及方法 Active CN101647000B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/692,685 2007-03-28
US11/692,685 US8127114B2 (en) 2007-03-28 2007-03-28 System and method for executing instructions prior to an execution stage in a processor
PCT/US2008/058246 WO2008118949A1 (en) 2007-03-28 2008-03-26 A system and method for executing instructions prior to an execution stage in a processor

Publications (2)

Publication Number Publication Date
CN101647000A CN101647000A (zh) 2010-02-10
CN101647000B true CN101647000B (zh) 2014-12-10

Family

ID=39540664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200880009979.1A Active CN101647000B (zh) 2007-03-28 2008-03-26 用于在处理器中的执行级之前执行指令的系统及方法

Country Status (6)

Country Link
US (1) US8127114B2 (zh)
EP (1) EP2142988A1 (zh)
JP (1) JP5180285B2 (zh)
KR (1) KR101119612B1 (zh)
CN (1) CN101647000B (zh)
WO (1) WO2008118949A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101711388B1 (ko) 2013-01-28 2017-03-02 삼성전자주식회사 파이프라인에서 블럭을 스케줄하는 컴파일 방법 및 장치
US9250916B2 (en) * 2013-03-12 2016-02-02 International Business Machines Corporation Chaining between exposed vector pipelines
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US11645083B2 (en) * 2013-08-23 2023-05-09 Texas Instruments Incorporated Processor having adaptive pipeline with latency reduction logic that selectively executes instructions to reduce latency
US10942748B2 (en) 2015-07-16 2021-03-09 Nxp B.V. Method and system for processing interrupts with shadow units in a microcontroller
US10592246B2 (en) * 2017-07-12 2020-03-17 International Business Machines Corporation Low latency execution of floating-point record form instructions
CN110806899B (zh) * 2019-11-01 2021-08-24 西安微电子技术研究所 一种基于指令扩展的流水线紧耦合加速器接口结构

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802339A (en) * 1994-11-15 1998-09-01 Advanced Micro Devices Pipeline throughput via parallel out-of-order execution of adds and moves in a supplemental integer execution unit

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6453235A (en) * 1988-05-25 1989-03-01 Nec Corp Risc type microprocessor
WO1995016955A1 (en) 1993-12-15 1995-06-22 Silicon Graphics, Inc. Load latency of zero for floating point load instructions using a load data queue
JP3183844B2 (ja) * 1996-03-29 2001-07-09 松下電器産業株式会社 可変パイプライン段数のデータ処理装置
WO1998002818A1 (en) * 1996-07-16 1998-01-22 Advanced Micro Devices, Inc. A data memory unit configured to store data in one clock cycle and method for operating same
JP3199035B2 (ja) * 1998-09-25 2001-08-13 日本電気株式会社 プロセッサ及びその実行制御方法
JP3204390B2 (ja) * 1998-09-29 2001-09-04 エヌイーシーマイクロシステム株式会社 マイクロコンピュータ
US20040193845A1 (en) * 2003-03-24 2004-09-30 Sun Microsystems, Inc. Stall technique to facilitate atomicity in processor execution of helper set
CN1829958A (zh) 2003-04-28 2006-09-06 皇家飞利浦电子股份有限公司 并行处理系统
US7475222B2 (en) * 2004-04-07 2009-01-06 Sandbridge Technologies, Inc. Multi-threaded processor having compound instruction and operation formats

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5802339A (en) * 1994-11-15 1998-09-01 Advanced Micro Devices Pipeline throughput via parallel out-of-order execution of adds and moves in a supplemental integer execution unit

Also Published As

Publication number Publication date
CN101647000A (zh) 2010-02-10
US8127114B2 (en) 2012-02-28
US20080244234A1 (en) 2008-10-02
KR101119612B1 (ko) 2012-03-22
WO2008118949A1 (en) 2008-10-02
JP5180285B2 (ja) 2013-04-10
JP2010522940A (ja) 2010-07-08
EP2142988A1 (en) 2010-01-13
KR20090132633A (ko) 2009-12-30

Similar Documents

Publication Publication Date Title
CN101647000B (zh) 用于在处理器中的执行级之前执行指令的系统及方法
CN101681259B (zh) 用于使用局部条件码寄存器以加速管线处理器中的条件指令执行的系统和方法
CN1294484C (zh) 利用重新调度的重放队列中断处理器中的重放依赖关系循环
US6877086B1 (en) Method and apparatus for rescheduling multiple micro-operations in a processor using a replay queue and a counter
US7793079B2 (en) Method and system for expanding a conditional instruction into a unconditional instruction and a select instruction
US20050066131A1 (en) Apparatus and method for loading data values
CN102591722B (zh) 片上网络多核处理器多线程的资源分配处理方法和系统
JP2012043443A (ja) 連続フロープロセッサパイプライン
WO2015153121A1 (en) A data processing apparatus and method for executing a stream of instructions out of order with respect to original program order
CN101535951A (zh) 用于辨识子例程调用的方法及设备
WO1994016385A1 (en) System and method for assigning tags to instructions to control instruction execution
US7080209B2 (en) Method and apparatus for processing a load-lock instruction using a relaxed lock protocol
US8977837B2 (en) Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes
US10474469B2 (en) Apparatus and method for determining a recovery point from which to resume instruction execution following handling of an unexpected change in instruction flow
US8595468B2 (en) Reverse simultaneous multi-threading
CN100590592C (zh) 处理器及其指令发布方法
CN101495960A (zh) 有效的中断返回地址保存机制
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
CN110515656B (zh) 一种casp指令的执行方法、微处理器及计算机设备
US11507379B2 (en) Managing load and store instructions for memory barrier handling
CN108279928B (zh) 微指令调度方法及使用此方法的装置
JP2001100997A (ja) 並列処理プロセッサ
US6122728A (en) Technique for ordering internal processor register accesses
GB2365583A (en) Pipeline decoupling buffer for handling early data and late data
US9645936B1 (en) System and method for informing hardware to limit writing in a memory hierarchy

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