CN1806227A - 用于减少流水线暂停的方法及数据处理器 - Google Patents
用于减少流水线暂停的方法及数据处理器 Download PDFInfo
- Publication number
- CN1806227A CN1806227A CNA200480016227XA CN200480016227A CN1806227A CN 1806227 A CN1806227 A CN 1806227A CN A200480016227X A CNA200480016227X A CN A200480016227XA CN 200480016227 A CN200480016227 A CN 200480016227A CN 1806227 A CN1806227 A CN 1806227A
- Authority
- CN
- China
- Prior art keywords
- register
- instruction
- operand
- redirect
- output terminal
- 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
Links
- 238000000034 method Methods 0.000 title claims description 17
- 230000005540 biological transmission Effects 0.000 claims description 17
- 230000000295 complement effect Effects 0.000 claims description 8
- 238000001514 detection method Methods 0.000 claims description 3
- 239000000654 additive Substances 0.000 description 5
- 230000000996 additive effect Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000010606 normalization Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000013329 compounding Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- 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/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
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- 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
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3875—Pipelining a single stage, e.g. superpipelining
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)
Abstract
一种数据处理器(200),具有流水线化执行单元(120)。决定第一指令是否是使操作数寄存器的内容储存在目的寄存器内作为该第一指令执行结果的指令类别的其中之一。在该第一指令的执行完成之前,接收到参照该目的寄存器的第二指令。在不使该流水线化执行单元(120)内的该第二指令暂停的情形下,使用该操作数寄存器的内容来执行该第二指令。
Description
技术领域
本发明通常涉及数据处理器,具体而言,涉及流水线化的数据处理器。
背景技术
有些数据处理器使用称为流水线处理的技术用于提高性能。流水线处理技术是一种将指令处理任务分成若干较小的模块化子任务(modular sub-tasks),且可在称为流水线周期(pipeline cycle)的一段特定的极微小的时间中执行每一子任务的技术。通过将该任务分成这些较小的周期,数据处理器可例如,一面执行另一个指令并将第三指令的结果写回到寄存器文件,一面撷取一个指令。因此,即使可能要耗用数个周期来完成个别的指令,但是整体的指令执行速率趋近于每一流水线周期完成一个指令。
现代的微处理器具有比该三阶段的例子更复杂的流水线。例如,五阶流水线处理可包括提取、译码、操作数存取、执行、以及写回阶段。流水线越长,数据处理指令就可能越复杂,且仍然要维持接近每一周期完成一个指令的指令执行速率。
然而,当发生某些指令顺序时,将出现一个问题。特定的指令序列可能造成称为流水线相依性的现象。在还没取得前一指令的执行结果之前,无法执行一个指令时,将发生称为操作数相依性的一种流水线相依性的类型。例如,假设指令顺序为:
ADD R2,R0,R1
ADD R3,R1,R2
其中第一寄存器是结果的目的,且第二及第三寄存器储存输入操作数。因为R2是第一加法(ADD)指令的目的寄存器,所以第二ADD指令的执行要依赖第一ADD指令的结果,且在知道第一ADD指令的结果之前,无法进行第二ADD指令的执行。
另一种相依性类型称为加载相依性。例如,假设下列的指令顺序:
MOV R0,(R1)
ADD R3,R0,R2
在此顺序中,第一指令将寄存器R1中储存的地址所指向的存储器内容加载到寄存器R0。显然,该ADD指令的正确执行要依赖寄存器R0中目前可取得的新值。
Mike Johnson等人在美国专利4,734,852中揭示了一种方法,其中可利用旁通路径将早先的存储器加载操作的结果传送到后续的指令,而无须先将该结果先写入寄存器文件中的目的寄存器然后从寄存器文件读取该结果。因此,可更早取得新的寄存器值,而可将加载相依性之后的流水线暂停时间缩至最短。
然而,在一些具有较深的执行流水线的数据处理器中,将需要额外有效的电路面积,以便从产生结果至流水线的输入端的每一流水线阶段增加旁通路径,用以传送中间结果,因而可较早发送新的指令。在操作数长度可能是诸如64位的浮点执行单元(Hoating pointexecution units)中尤其将出现上述的情形。此外,在指令到达流水线的末端之前,是无法得到某些结果。
因此,在不增加过多的电路面积的情形下,期望利用额外机会来降低相依性的负面影响。参照随后的详细说明及权利要求,并配合各附图及前文所述的技术领域及现有技术,将可易于了解本发明的上述这些及其它的特性及特征。
发明内容
本发明提供一种用于具有流水线化执行单元的数据处理器的方法。确定第一指令是否是使操作数寄存器的内容储存在目的寄存器内作为该第一指令执行结果的指令类别中的一个。在该第一指令的执行完成之前,接收要引用该目的寄存器的第二指令。在不使该流水线化执行单元中的该第二指令暂停的情形下,使用该操作数寄存器的内容来执行该第二指令。
本发明也提供了一种包含发送逻辑电路(issue logic circuit)、寄存器文件、流水线化执行单元(pipelined execution unit)、以及重定向逻辑电路(Redirect Logic Circuit)的数据处理器。该发送逻辑电路具有输出端,用以循序提供第一及第二指令,每一指令至少具有操作码(opecode)、第一操作数的第一操作数寄存器标识符(operand registeridentifier)、以及目的寄存器的目的寄存器标识符。该寄存器文件具有包含读取地址输入端及读取数据输出端的读取端口、以及写入端口。该流水线化执行单元具有连接到该发送逻辑电路(issue logic circuit)的输出端的第一输入端、连接到该寄存器文件的读取数据输出端的第二输入端、以及连接到该寄存器文件的写入端口的输出端。该重定向逻辑电路具有连接到该发送逻辑电路的输出端的第一输入端、连接到该寄存器文件的读取数据输出端的第二输入端、以及连接到该寄存器文件的读取地址输入端的输出端,该输出端使用该第一指令的第一操作数寄存器标识符来选择性替换该第二指令的该第一操作数寄存器标识符。
附图说明
以下结合下列附图说明本发明,而在这些附图中,相同的代号标示类似的组件,这些附图有:
图1显示了现有技术中已知的数据处理器的流水线化执行单元的方块图;
图2显示了根据本发明的数据处理器的流水线化执行单元的方块图;以及
图3显示了图2所示的重定向逻辑电路的部分方块图及部分逻辑图。
具体实施方式
下文中的详细说明在本质上只是举例,其目的并非在限制本发明、或本发明的应用及使用。此外,本发明将不受前文中的技术领域、背景技术、发明内容、或下文中的具体实施方式中提出的明示或默示的理论所约束。
图1显示了现有技术中已知的数据处理器的流水线化执行单元100的方块图。执行单元100是具有加法单元120、乘法单元130、及浮点寄存器文件150的浮点单元(floating point unit)。发送逻辑电路110负责将指令发送到加法单元120及乘法单元130。诸如指令112的一般性指令包括标示为“OP CODE”的操作码字段、标示为“Rs”的第一操作数寄存器标识符、标示为“Rt”的第二操作数寄存器标识符、以及标示为“Rd”的目的寄存器标识符。对于在该指令集中的一些特定的指令而言,可以不设有该Rt字段,或者可以有立即操作数字段,但是这些其它的指令不会影响到将在下文中说明的重定向机构(redirectionmechanism)的操作,且将不再进一步讨论这些其它的指令。
执行单元100是单一发送执行单元,因而发送逻辑电路110在每个流水线周期发送一个指令,并根据指令的类型而将该指令提供给加法单元120或乘法单元130。加法单元120具有三个流水线阶段:对齐(align)阶段122、加法阶段124、以及归一化阶段126。乘法单元130也具有三个阶段:布斯(Booth)编码阶段132、乘法阵列阶段134、以及最后加法及舍入阶段136。
发送到加法单元120或乘法单元130的指令沿着其各别流水线而向下前进,且在每一流水线周期结束时前进一阶段。以下述的方式将输入操作数提供给选择的单元的第一阶段。发送逻辑电路110将指令112的Rs及Rt字段输出到旁通电路140及寄存器文件150。如果并无任何操作数相依性,则操作数Rs及Rt从寄存器文件150经由旁通电路140而送回到总线160及170。如果根据在上一流水线阶段中刚刚完成的指令而有操作数相依性,则操作数即由旁通电路140接收,且传送到适当的操作数总线。如果与未完成的各先前指令之间有一个或一个以上的相依性,则发送逻辑电路110在新的指令所依赖的先前指令完成处理之前,暂停发送新的指令。在造成该相依性的先前指令最后完成时的情形中,该先前指令的结果经由旁通电路140而传送到总线160及170,以便允许发送该暂停的新的指令。旁通电路140平行地将新的值写到寄存器文件150。
若根据前两个流水线阶段中的一阶段中的指令有操作数相依性时,在先前指令完成之前,暂停发送新的指令。该暂停造成硬件处于闲置状态,且不能执行任何有用的任务。期望减少此类暂停的发生次数,或者在发生暂停时进行修正。
例如,加法单元120的对齐阶段具有分别经由操作数总线160及170接收第一及第二操作数值的输入端。这些值、操作码(OP CODE)、目的寄存器指定码Rd、以及各种其它经过译码或部分译码的字段值前进通过这些流水线阶段。当指令经由归一化阶段126处理过时,即将该指令提供给旁通电路140的输入端。包含旁通电路140以便在先前指令的结果与后续指令的输入之间提供路径,以便节省若用其它方式则需要将结果写到寄存器文件150中的目的寄存器然后将该结果读出的流水线周期。
图2显示了根据本发明的数据处理器的流水线化执行单元200的方块图。如同图1,执行单元200是浮点单元,但也可以是诸如整数(integer)、矢量(vector)等的任何其它类型的执行单元。执行单元200类似于图1所示的执行单元100,但不同之处在于执行单元200包含重定向逻辑电路210,该重定向逻辑电路210配合执行单元200的其它组件,而防止可能造成操作数相依性的指令类别造成流水线暂停。重定向逻辑电路210检测通常会造成寄存器相依性的几种类型的指令,并通过替换可提供正确结果的寄存器标识符,而修正这些类型的指令。
第一类型的指令是寄存器对寄存器的移动指令,以及接续的另一指令使用该寄存器对寄存器的移动指令的目的寄存器作为操作数寄存器。例如,假设指令顺序为:
MOV R1,R0
ADD R3,R2,R1
其中第一指令表示寄存器R0的内容移到寄存器R1的移动操作,且第二指令表示将R1的内容加上R2的内容,并将其总和放置到寄存器R3的加法运算。在已知的系统中,该指令顺序造成相依性,该相依性使得在寄存器文件或旁通电路140中取得该移动(MOV)指令的结果之前,无法发送该ADD指令。执行单元200实际上执行零(0)值用于第二操作数的等效加法运算,而使用加法单元120执行该MOV指令。因此,该第二指令通常将需要等候到归一化阶段126将结果提供给旁通电路140。然而,在执行单元200中,重定向逻辑电路210使R0的内容替换该ADD指令中的R1的内容,且使用R0的内容作为第二操作数并立即发送该ADD指令。因此,正确地执行了该ADD指令。
第二类型的指令是其中一个操作数等于0的加法指令以及接续的另一指令使用该加法指令的目的寄存器作为操作数寄存器。例如,假设指令顺序为:
ADD R2,R1,R0
ADD R4,R3,R2
其中第一ADD指令表示将寄存器R0的内容加上寄存器R1的内容,并将其总和储存在寄存器R2的加法运算,且该第二ADD指令表示将R2的内容加上R3的内容,并将其总和储存在寄存器R4的加法运算。在已知的系统中,该指令顺序造成相依性,该相依性使得在取得该第一ADD指令的结果之前,无法发送该第二ADD指令。然而,在执行单元200中,在R1(R0)=0的情形中,重定向逻辑电路210使R0(R1)的内容替换该第二ADD指令中的R2的内容,且使用R0(R1)的内容作为第二操作数,并立即发送该第二ADD指令。
第三类型的指令是其中一个操作数等于1的乘法指令以及接续的另一指令使用该乘法指令的目的寄存器作为操作数寄存器。例如,假设指令顺序为:
MUL R2,R1,R0
ADD R4,R3,R2
其中第一指令表示将寄存器R0的内容乘以寄存器R1的内容,并将其乘积储存在寄存器R2中的乘法运算,且第二指令表示将寄存器R2的内容加上寄存器R3的内容,并将其总和放置到寄存器R4中的加法运算。在已知的系统中,该指令顺序造成相依性,该相依性使得在取得该乘法MOL指令的结果之前,无法发送该ADD指令。然而,在执行单元200中,在R1(R0)=1的情形中,重定向逻辑电路210使R0(R1)的内容替换该ADD指令中的R2的内容,且使用R0(R1)的内容作为第二操作数,并立即发送该ADD指令。
在所有这些指令顺序中,已知的执行单元在可传送第一指令的结果之前,暂停第二指令的发送。然而,执行单元200识别这些条件,而以寄存器替换实际参照到的寄存器,并可立即发送该第二指令。使用此种执行单元的数据处理器将在较短的时间内处理给定部分的指令码,或者,对发送指令的编译器施加较少的限制。
执行单元200可识别通过以寄存器替换参照到的寄存器,并强制改变结果中的正负号位而发送的某些其它指令,而执行进一步的寄存器替换,以避免流水线暂停。以两种格式中的一种格式在执行单元200中处理操作数。第一种格式是IEEE正常(32位)浮点格式(floatingpoint format),其中以一个正负号位、八个指数位(exponent bits)、以及二十三个分数位(fraction bits)来表示数字。第二种格式是IEEE双倍精确度(64位)浮点格式,其中以一个正负号位、十一个指数位、以及五十二个分数位来表示数字。因为这些数目具有明确的正负号位,所以如果R0=0且R1的正负号位是负的,则可将R1用于第二操作数,并将结果的正负号位设定为1,以便表示负数,而发送下列指令顺序的第二指令。
ADD R2,R1,R0
ADD R4,R3,R2
该特征可将额外的指令包含在重定向逻辑电路210所响应的指令集中。此类指令包括:取数字的绝对值的ABS、以及否定或改变数字的正负号位的NEG。对于这两个指令而言,重定向逻辑电路210实施一机制,用以在适当地替换操作数时,改变正负号位的值。重定向逻辑电路210改变正负号位的值的其它指令包括被减数(即A-B式中的A)为0的减法指令、以及其中一个操作数为-1的乘法指令。减数(即A-B式中的B)为0的减法指令相当于加上零的加法指令,且在此种情形中,重定向逻辑电路210将在不改变正负号位的情形下,以第一操作数替换目的操作数。一个操作数为0的乘法指令将产生的结果为0,且在此种情形中,重定向逻辑电路210以该零操作数寄存器替换目的寄存器。请注意,该列表的指令并不具有穷举性。可将数据处理器的特定指令集所独有的其它指令包含在重定向逻辑电路210根据本文所述的原理而响应的一组指令。
图3显示了前文所述的机制的一些实施细节,而图3说明图2所示的重定向逻辑电路210的部分方块图及部分逻辑图。重定向逻辑电路210大致包含重定向检测逻辑电路300、第一重定向寄存器310、第二重定向寄存器320、一组比较器330、以及一组多任务器340。重定向检测逻辑电路300具有连接到总线160及170的输入端、以及输出端。重定向检测逻辑电路300的功能是用于检测适于前文所述的寄存器替换的那些条件,并在第一重定向寄存器310中创建数据项(entry),以便检测对后续指令的相依性,并造成适当的寄存器替换。在执行单元200中,总线160及170不只是载送从旁通逻辑电路送回的操作数Rs及Rt的值,也载送由旁通逻辑电路140所译码的信号,以便指示这些操作数的各种状态。例如,旁通逻辑电路140包含用来检测当数字的指数及分数字段等于0或当指数字段等于用来代表该数字格式中的为1的值的预定值的硬件。例如,一般而言,当指数及分数字段都等于0时,代表一个为0的值。然而,不论分数字段的值为何,执行单元200只可以在指数字段等于0时能代表0。分数字段为0且指数字段为其预定值(正常格式中为127,双倍精确度格式为1023)的数字代表1的值。重定向检测逻辑电路300可利用该信息并配合操作码(OPCODE)字段,而检测加上零以及乘以一的条件。
第一重定向寄存器310具有用来接收寄存器指定码字段Rs、Rt、及Rd的若干输入端、连接到重定向检测逻辑电路300的输出端的输入端、以及输出端。第二重定向寄存器320具有连接到寄存器310的输出端的输入端、以及三个输出端。每一重定向寄存器具有下列字段:标示为“S”的正负号位字段、标示为“V”的有效位字段、标示为“MATCH”的寄存器标识符匹配字段、以及标示为“SUBST”的替换字段。第一重定向寄存器310的输出以与时钟(图中未示出,用以告知在流水线中的推进)同步的方式被移入第二重定向寄存器320。
一组比较器330包含四个比较器332、334、336、及338。比较器332具有用来接收寄存器指定码字段Rs的第一输入端、连接到第二重定向寄存器320的MATCH字段的第二输入端、连接到第二重定向寄存器320的V字段的控制输入端、以及输出端。比较器334具有用来接收寄存器指定码字段Rs的第一输入端、连接到第一重定向寄存器310的MATCH字段的输出端的第二输入端、连接到第一重定向寄存器310的V字段的控制输入端、以及输出端。比较器336具有用来接收寄存器指定码字段Rt的第一输入端、连接到第二重定向寄存器320的MATCH字段的输出端的第二输入端、连接到第二重定向寄存器320的V字段的控制输入端、以及输出端。比较器338具有用来接收寄存器指定码字段Rt的第一输入端、连接到第一重定向寄存器310的MATCH字段的输出端的第二输入端、连接到第一重定向寄存器310的V字段的控制输入端、以及输出端。
每个比较器决定是否以前一个或再前一个指令的操作数寄存器的值替换现行指令的操作数。因此,比较器332检测再前一个指令的目的寄存器标识符Rd是否与现行指令的第一操作数寄存器标识符Rs相匹配。比较器334检测再前一个指令的目的寄存器标识符Rd是否与现行指令的第二操作数寄存器标识符Rt相匹配。比较器336检测前一个指令的目的寄存器标识符Rd是否与现行指令的第一操作数寄存器标识符Rs相匹配。比较器338检测前一个指令的目的寄存器标识符Rd是否与现行指令的第二操作数寄存器标识符Rt相匹配。
一组多任务器340包含多任务器342及344。多任务器342具有用来接收Rs的第一输入端、连接到第二重定向寄存器320的SUBST字段的第二输入端、连接到第一重定向寄存器310的SUBST字段的第三输入端、连接到比较器332及334的输出端的若干控制输入端、以及用来提供NEW Rs的输出端。多任务器344具有用来接收Rt的第一输入端、连接到第一重定向寄存器310的SUBST字段的第二输入端、连接到第二重定向寄存器320的SUBST字段的第三输入端、连接到比较器336及338的输出端的若干控制输入端、以及用来提供NEW Rt的输出端。
多任务器342及344包含多任务化及逻辑电路,用以分别选择适当的输入,以便提供作为NEW Rs及NEW Rt值。如果重定向寄存器310或320都没有有效的数据项,则多任务器342及344选择Rs及Rt,以便分别提供作为NEW Rs及NEW Rt。如果重定向寄存器310及320中仅有一个有有效的数据项,则多任务器342及344选择对应于有效的重定向寄存器数据项的一个SUBST值,以便在Rs及Rt的其中之一与对应的MATCH字段的内容相匹配时,分别提供作为NEW Rs及NEW Rt。如果重定向寄存器310及320两者都具有有效的数据项,则多任务器342及344选择对应于有效的重定向寄存器数据项所述的这些SUBST值,以便在Rs和/或Rt与对应的MATCH字段的内容相匹配时,分别提供作为NEW Rs及NEW Rt。如果重定向寄存器310及320两者都具有有效的数据项,且这些MATCH字段的值是相同的,则多任务器342及344将优先权给予最近发送的指令,即,多任务器选择重定向寄存器310的SUBST字段所提供的输入。
请注意,在发送逻辑(ISSUE LOGIC)电路110中的正常相依性检查电路(图中未示出)中,以平行方式进行正常的相依性检查。本发明所述的流水线暂停减少技术操作,取代了正常的相依性检查。该正常的相依性检查电路输出标示为“rs_stall”及“rt_stall”的两个信号,用以分别检测先前发送但尚未完成的指令与现行指令的Rs及Rt操作数间的一些相依性。图2或图3中并未显示重定向逻辑电路(REDIRECTLOGIC)210中的额外的逻辑电路,在比较器342的输出或比较器344的输出为真(true)时,该额外的逻辑电路产生标示为“kill_rs_stall”的信号,以及在比较器346的输出或比较器348的输出为真时,则产生标示为“kill_rt_stall”的信号。如果kill_rs_stall所选通的Rs_stall为真或kill_rt_stall所选通的Rt_stall为真,则由发送逻辑(ISSUE LOGIC)电路110暂停指令112的发送。
请注意,在所示的实施例中,由加法单元120及乘法单元130共享重定向逻辑电路210,这是因为执行单元200只是单一发送的。对于超标量的实施例而言,逻辑将变得较复杂,但是检测及替换的原理仍是相同的。
在其它的实施例中,流水线化执行单元可具有两个阶段或三个以上的阶段。为了利用本发明所揭示的机构,该指令只需要有一个操作数标识符。此外,该重定向检测逻辑电路可直接检查这些操作数,以便检测诸如等于零或等于一等的特定条件,而此种方式在其它实施例中无法经由现有的操作数总线取得此种信息。
虽然已在前文的详细说明中描述了至少一个示意性实施例,但是我们当了解,尚有极多的变化仍存在。我们也应当了解,这些一个或多个示意性实施例只是举例,其目的并非在以任何方式限制本发明的范围、应用、或构成。前文的详细说明而是将实施这些一个或多个的示意性实施例的便利的指引提供给本领域技术人员。我们应当了解,在不脱离后述的权利要求及其合法等效权项中述及的本发明范围的情况下,尚可对各组件的功能及配置做出各种改变。
Claims (10)
1.一种用于具有流水线化执行单元(120)的数据处理器(200)的方法,该方法包括下列步骤:
决定第一指令是否是使操作数寄存器的内容储存在目的寄存器内作为该第一指令执行结果的指令类别的其中之一;
在该第一指令的执行完成之前,接收要参照该目的寄存器的第二指令;以及
在不使该流水线化执行单元(120)中的该第二指令暂停的情形下,使用该操作数寄存器的内容来执行该第二指令。
2.根据权利要求1所述的方法,进一步包括下列步骤:使该操作数寄存器与在该执行步骤之前即与该目的寄存器相关联的该第二指令的操作数标识符字段相关联。
3.根据权利要求2所述的方法,其中该相关联步骤包括下列步骤:
将该目的寄存器的寄存器标识符储存在重定向寄存器(310)的匹配字段中;以及
将该操作数寄存器的寄存器标识符储存在该重定向寄存器(310)的替换字段中。
4.根据权利要求3所述的方法,其中该执行步骤包括下列步骤:
将该第二指令的操作数寄存器标识符与该匹配字段的内容作比较,以便提匹配信号;
响应该匹配字段的内容,将该替换字段的内容替换该操作数寄存器标识符或该操作数寄存器,以便提供新的寄存器标识符;以及
使用该新的寄存器标识符来执行该第二指令。
5.一种用于具有流水线化执行单元(120)的数据处理器(200)的方法,该方法包括下列步骤:
决定第一指令是否是使操作数寄存器的内容储存在目的寄存器内作为该第一指令执行结果的指令类别的其中之一;
如果该第一指令是该指令类别的其中之一,则将与该目的寄存器相关联的目的寄存器标识符储存在重定向寄存器的匹配字段中,将与操作数相关联的操作数寄存器标识符储存在该重定向寄存器的替换字段中,并将有效位储存在该重定向寄存器的有效字段中;
在该第一指令的执行完成之前,接收第二指令;
当该有效位是处于预定的逻辑状态时,将该第二指令的第一操作数寄存器标识符与该匹配字段的内容作比较;以及
如果该第一操作数寄存器标识符与该匹配字段的内容相匹配,则在不使该流水线化执行单元(120)中的该第二指令暂停的情形下,使用该替换字段指示的寄存器的内容来执行该第二指令。
6.根据权利要求5所述的方法,进一步包括下列步骤:
如果该第一指令是该指令类别中的一个,则进一步将该第一指令的正负号位储存在该重定向寄存器的正负号字段中;以及
响应该重定向寄存器的该正负号位,而选择性地改变该第二指令的执行结果的正负号位。
7.根据权利要求5所述的方法,进一步包括下列步骤:
当该有效位是处于该预定的逻辑状态时,将该第二指令的第二操作数寄存器标识符与该匹配字段的内容作比较;以及
如果该第一操作数寄存器标识符或该第二操作数寄存器标识符的任一个与该匹配字段的内容相匹配,则在不使该流水线化执行单元(120)中的该第二指令暂停的情形下,使用该替换字段指示的该寄存器的内容来执行该第二指令。
8.一种数据处理器(200),包括:
发送逻辑电路(110),该发送逻辑电路具有输出端,用以循序提供第一及第二指令,每个指令至少具有操作码、第一操作数的第一操作数寄存器标识符、以及目的寄存器的目的寄存器标识符;
寄存器文件(150),该寄存器文件具有包括读取地址输入端及读取数据输出端的读取端口、以及写入端口;以及
流水线化执行单元(120),该流水线化执行单元具有连接到该发送逻辑电路(110)的该输出端的第一输入端、连接到该寄存器文件(150)的该读取数据输出端的第二输入端、以及连接到该寄存器文件(150)的该写入端口的输出端;
其特征在于该数据处理器(200)进一步包括:
重定向逻辑电路(210),该重定向逻辑电路具有连接到该发送逻辑电路(110)的该输出端的第一输入端、连接到该寄存器文件(150)的该读取数据输出端的第二输入端、以及连接到该寄存器文件(150)的该读取地址输入端的输出端,该输出端用来用该第一指令的第一操作数寄存器标识符选择性替换该第二指令的该第一操作数寄存器标识符。
9.根据权利要求8所述的数据处理器(200),其中,如果该重定向逻辑电路(210)决定由于该第一指令的执行结果而使该第一指令的该目的寄存器将含有该第一指令的该第一操作数寄存器的内容,则该重定向逻辑电路(210)以该第一指令的该第一操作数寄存器标识符替换该第二指令的该第一操作数寄存器标识符。
10.根据权利要求9所述的数据处理器(200),其中该重定向逻辑电路(210)包括:
具有输出端的重定向检测逻辑电路(300);
连接到该发送逻辑电路(110)的该输出端且与该流水线化执行单元(120)的阶段相关联的第一重定向寄存器(310),该第一重定向寄存器具有连接到该重定向检测逻辑电路(300)的该输出端的至少一个有效字段、用来接收该目的寄存器标识符的匹配字段、以及用来接收在该第一操作数寄存器标识符及第二操作数寄存器标识符中所选择的一个标识符的替换字段;
第一比较器(334),该第一比较器具有用来接收该第二指令的该第一操作数寄存器标识符的第一输入端、连接到该第一重定向寄存器(310)的该匹配字段的第二输入端、连接到该第一重定向寄存器(310)的该有效字段的控制输入端、以及输出端;以及
第一多任务器(342),该第一多任务器具有用来接收该第一操作数寄存器标识符的第一输入端、连接到该第一重定向寄存器(310)的该替换字段的第二输入端、连接到该第一比较器(334)的该输出端的控制输入端、以及用来将新的寄存器标识符提供给该第二指令的该第一操作数的输出端。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/461,129 | 2003-06-12 | ||
US10/461,129 US7290121B2 (en) | 2003-06-12 | 2003-06-12 | Method and data processor with reduced stalling due to operand dependencies |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1806227A true CN1806227A (zh) | 2006-07-19 |
CN100380317C CN100380317C (zh) | 2008-04-09 |
Family
ID=33511189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200480016227XA Active CN100380317C (zh) | 2003-06-12 | 2004-06-02 | 用于减少流水线暂停的方法及数据处理器 |
Country Status (8)
Country | Link |
---|---|
US (1) | US7290121B2 (zh) |
JP (1) | JP4991299B2 (zh) |
KR (1) | KR101183270B1 (zh) |
CN (1) | CN100380317C (zh) |
DE (1) | DE112004001040B4 (zh) |
GB (1) | GB2418508B (zh) |
TW (1) | TWI343543B (zh) |
WO (1) | WO2004111838A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915183A (zh) * | 2015-06-23 | 2015-09-16 | 北京玉华骢科技股份有限公司 | 一种多发射流水线的前馈探测电路 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7328429B2 (en) * | 2003-11-13 | 2008-02-05 | Intel Corporation | Instruction operand tracing for software debug |
US7272751B2 (en) * | 2004-01-15 | 2007-09-18 | International Business Machines Corporation | Error detection during processor idle cycles |
US20060095732A1 (en) * | 2004-08-30 | 2006-05-04 | Tran Thang M | Processes, circuits, devices, and systems for scoreboard and other processor improvements |
US7774582B2 (en) * | 2005-05-26 | 2010-08-10 | Arm Limited | Result bypassing to override a data hazard within a superscalar processor |
WO2008006400A1 (en) * | 2006-07-11 | 2008-01-17 | Freescale Semiconductor, Inc. | Microprocessor and method for register addressing therein |
US7565513B2 (en) * | 2007-02-28 | 2009-07-21 | Advanced Micro Devices, Inc. | Processor with power saving reconfigurable floating point unit decoding an instruction to single full bit operation or multiple reduced bit operations |
DE102008045767A1 (de) | 2008-09-04 | 2010-03-11 | Continental Teves Ag & Co. Ohg | Mikroprozessor mit Pipelineblasen-Erfassungseinrichtung |
US8977837B2 (en) * | 2009-05-27 | 2015-03-10 | Arm Limited | Apparatus and method for early issue and recovery for a conditional load instruction having multiple outcomes |
US8464030B2 (en) * | 2010-04-09 | 2013-06-11 | International Business Machines Corporation | Instruction cracking and issue shortening based on instruction base fields, index fields, operand fields, and various other instruction text bits |
US9354881B2 (en) | 2011-12-27 | 2016-05-31 | Intel Corporation | Systems, apparatuses, and methods for generating a dependency vector based on two source writemask registers |
US9519944B2 (en) | 2014-09-02 | 2016-12-13 | Apple Inc. | Pipeline dependency resolution |
US9875107B2 (en) | 2015-01-19 | 2018-01-23 | International Business Machines Corporation | Accelerated execution of execute instruction target |
US11243774B2 (en) | 2019-03-20 | 2022-02-08 | International Business Machines Corporation | Dynamic selection of OSC hazard avoidance mechanism |
US10929142B2 (en) | 2019-03-20 | 2021-02-23 | International Business Machines Corporation | Making precise operand-store-compare predictions to avoid false dependencies |
US20210096877A1 (en) * | 2019-09-26 | 2021-04-01 | Advanced Micro Devices, Inc. | Collapsing bubbles in a processing unit pipeline |
CN111124500B (zh) * | 2019-12-12 | 2022-03-08 | 浪潮(北京)电子信息产业有限公司 | 一种指令执行方法、装置、设备及存储介质 |
US11714652B2 (en) * | 2021-07-23 | 2023-08-01 | Advanced Micro Devices, Inc. | Zero operand instruction conversion for accelerating sparse computations in a central processing unit pipeline |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4594655A (en) * | 1983-03-14 | 1986-06-10 | International Business Machines Corporation | (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions |
US4734852A (en) * | 1985-08-30 | 1988-03-29 | Advanced Micro Devices, Inc. | Mechanism for performing data references to storage in parallel with instruction execution on a reduced instruction-set processor |
US5128890A (en) * | 1991-05-06 | 1992-07-07 | Motorola, Inc. | Apparatus for performing multiplications with reduced power and a method therefor |
US5488729A (en) * | 1991-05-15 | 1996-01-30 | Ross Technology, Inc. | Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution |
GB9112754D0 (en) | 1991-06-13 | 1991-07-31 | Int Computers Ltd | Data processing apparatus |
JPH06156382A (ja) * | 1992-11-28 | 1994-06-03 | Sanshin Ind Co Ltd | 船舶推進機の前後進切換装置 |
US5887160A (en) * | 1996-12-10 | 1999-03-23 | Fujitsu Limited | Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor |
US5838941A (en) * | 1996-12-30 | 1998-11-17 | Intel Corporation | Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers |
US5893928A (en) | 1997-01-21 | 1999-04-13 | Ford Motor Company | Data movement apparatus and method |
JP3449186B2 (ja) * | 1997-08-19 | 2003-09-22 | 富士通株式会社 | パイプラインバイパス機能を有するデータ処理装置 |
US5872986A (en) * | 1997-09-30 | 1999-02-16 | Intel Corporation | Pre-arbitrated bypassing in a speculative execution microprocessor |
US6112293A (en) * | 1997-11-17 | 2000-08-29 | Advanced Micro Devices, Inc. | Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result |
US6094716A (en) * | 1998-07-14 | 2000-07-25 | Advanced Micro Devices, Inc. | Register renaming in which moves are accomplished by swapping rename tags |
US6857060B2 (en) * | 2001-03-30 | 2005-02-15 | Intel Corporation | System, apparatus and method for prioritizing instructions and eliminating useless instructions |
-
2003
- 2003-06-12 US US10/461,129 patent/US7290121B2/en active Active
-
2004
- 2004-06-02 GB GB0526204A patent/GB2418508B/en active Active
- 2004-06-02 JP JP2006533521A patent/JP4991299B2/ja active Active
- 2004-06-02 CN CNB200480016227XA patent/CN100380317C/zh active Active
- 2004-06-02 KR KR1020057023922A patent/KR101183270B1/ko active IP Right Grant
- 2004-06-02 WO PCT/US2004/017092 patent/WO2004111838A2/en active Application Filing
- 2004-06-02 DE DE112004001040T patent/DE112004001040B4/de active Active
- 2004-06-04 TW TW093116095A patent/TWI343543B/zh active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915183A (zh) * | 2015-06-23 | 2015-09-16 | 北京玉华骢科技股份有限公司 | 一种多发射流水线的前馈探测电路 |
CN104915183B (zh) * | 2015-06-23 | 2018-10-16 | 北京玉华骢科技股份有限公司 | 一种多发射流水线的前馈探测电路 |
Also Published As
Publication number | Publication date |
---|---|
US20040255099A1 (en) | 2004-12-16 |
TW200508967A (en) | 2005-03-01 |
US7290121B2 (en) | 2007-10-30 |
JP2007500406A (ja) | 2007-01-11 |
KR101183270B1 (ko) | 2012-09-14 |
WO2004111838A3 (en) | 2005-10-27 |
GB2418508B (en) | 2007-03-14 |
DE112004001040B4 (de) | 2012-05-31 |
CN100380317C (zh) | 2008-04-09 |
KR20060029614A (ko) | 2006-04-06 |
WO2004111838A2 (en) | 2004-12-23 |
DE112004001040T5 (de) | 2006-06-08 |
JP4991299B2 (ja) | 2012-08-01 |
GB2418508A (en) | 2006-03-29 |
GB0526204D0 (en) | 2006-02-01 |
TWI343543B (en) | 2011-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1806227A (zh) | 用于减少流水线暂停的方法及数据处理器 | |
US8386755B2 (en) | Non-atomic scheduling of micro-operations to perform round instruction | |
US5598546A (en) | Dual-architecture super-scalar pipeline | |
EP0994413A2 (en) | Data processing system with conditional execution of extended compound instructions | |
US8577948B2 (en) | Split path multiply accumulate unit | |
EP0789299A1 (en) | Method for executing speculative load instructions in high-performance processors | |
CN1340760A (zh) | 分区的发送队列和分配策略 | |
JPH10133873A (ja) | 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を投機的に実行するためのプロセッサおよび方法 | |
EP0870227A1 (en) | Reservation station for a floating point processing unit | |
US20120284489A1 (en) | Methods and Apparatus for Constant Extension in a Processor | |
US5668984A (en) | Variable stage load path and method of operation | |
US20030005261A1 (en) | Method and apparatus for attaching accelerator hardware containing internal state to a processing core | |
WO2010128582A1 (ja) | プロセッサ | |
US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
US6618801B1 (en) | Method and apparatus for implementing two architectures in a chip using bundles that contain microinstructions and template information | |
JP3751402B2 (ja) | データ精度モード表示器を備えたマルチパイプライン・マイクロプロセッサ | |
US7010677B2 (en) | Data processor speeding up repeat processing by inhibiting remaining instructions after a break in a repeat block | |
CN1410885A (zh) | 基于操作队列复用的指令流水线系统和方法 | |
US6714957B1 (en) | System and method for efficient processing of denormal results as hardware exceptions | |
CN116438512A (zh) | 具有集成特定领域加速器的处理系统 | |
US6393452B1 (en) | Method and apparatus for performing load bypasses in a floating-point unit | |
US6324641B1 (en) | Program executing apparatus and program converting method | |
CN1300005A (zh) | 中央处理器或微控制器的数据相关判别及选择传递电路 | |
US20010023481A1 (en) | Processor that executes control signals included in operand section of control instruction | |
CN101042641A (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 |