CN1869920A - 超标量处理器内的指令发出控制 - Google Patents
超标量处理器内的指令发出控制 Download PDFInfo
- Publication number
- CN1869920A CN1869920A CN200610092423.6A CN200610092423A CN1869920A CN 1869920 A CN1869920 A CN 1869920A CN 200610092423 A CN200610092423 A CN 200610092423A CN 1869920 A CN1869920 A CN 1869920A
- Authority
- CN
- China
- Prior art keywords
- instruction
- data
- numerical value
- programmed instruction
- candidate program
- 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
- 238000012545 processing Methods 0.000 claims abstract description 6
- 230000001419 dependent effect Effects 0.000 claims description 33
- 238000001514 detection method Methods 0.000 claims description 14
- 238000000034 method Methods 0.000 claims description 13
- 238000012856 packing Methods 0.000 claims description 4
- 238000006073 displacement reaction Methods 0.000 claims description 2
- 238000000819 phase cycle Methods 0.000 claims 1
- 230000006870 function Effects 0.000 description 30
- 230000005540 biological transmission Effects 0.000 description 18
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 238000012546 transfer Methods 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
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
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
一种数据处理系统包括多条执行流水线,每条执行流水线具有多个执行阶段(E1、E2、E3),该数据处理系统可具有被一起并行发出的指令,尽管它们之间有数据相依性,其条件是:检测到较旧指令的结果操作数值将在一个请求该结果操作数值作为较新指令的输入操作数的执行阶段之前的执行阶段生成,且因此所述操作数值能够在执行流水线之间交叉发送来解决数据相依性。
Description
技术领域
本发明涉及数据处理系统。更具体地说,本发明涉及超标量数据处理系统内的指令发出控制。
背景技术
众所周知,提供包括多条指令流水线的超标量数据处理系统以使多程序指令流可被并行执行,从而增加处理器的总处理能力的。与这样的系统有关的问题是程序指令之间的数据相依性可能请求将一个指令的输出用作另一个指令的输入,这样,如果这两个指令被一起发出的话,则较新指令的真实输入在需要时将无法得到,因为较旧指令还未计算出该值。为了处理这种情形,已知提供了数据相依冒险检查机制,该机制对将要发出的程序指令的源和目的寄存器说明符有响应,以在那些指令被一起发出时可识别具有将导致错误的数据相依性的任何指令组合。如果检测到这样的冒险检测,则可取消较新指令并使其在稍后的循环中发出以使冒险检测不再出现。这降低了处理性能,因为并行执行能力未被充分利用。
发明内容
从一个方面来观察,本发明提供了用于处理数据的设备,所述设备包含:
多条执行流水线,用于并行执行程序指令序列的程序指令以生成输出操作数值,各自对应的执行流水线包括相应的多个执行阶段,不同类型程序指令的输出操作数值在不同的执行阶段生成;
冒险检测检查逻辑单元,可用来检测将要并行发出给所述多条执行流水线的各自对应执行流水线的候选程序指令之间的数据相依冒险,据此所述候选程序指令的第一程序指令的输出操作数值是所述候选程序指令的第二程序指令的输入操作数值,并且在检测到这样的数据相依冒险时用来生成数据相依冒险信号;
数据冒险克服(override)逻辑单元,可用来检测在请求所述候选程序指令的所述第二程序指令的所述输入操作数值之前是否会生成所述候选程序指令的所述第一程序指令的所述输出操作数值,并生成数据冒险克服信号;
指令发出控制逻辑单元,可响应所述数据冒险克服信号的接收而克服任何数据相依冒险信号,并允许所述候选程序指令的所述第一程序指令和所述候选程序指令的所述第二程序指令并行发出;以及
操作数发送逻辑单元,可用来控制将在执行流水线之间传送的所述候选程序指令的所述第一程序指令的所述输出操作数值,以用作所述候选程序指令的所述第二程序指令的所述输入操作数值。
本发明人认识到,在每条执行流水线上存在多个执行阶段并根据有关的程序指令类型在不同执行阶段生成输出操作数值的处理系统内,能够将程序指令的某些组合一起发出以并行地执行,即使相依两个指令之间存在数据相依。如果导致数据相依冒险的数据值是这样的数据值,即其中,输出操作数值在一个先于其中被请求为相依程序指令形成输入操作数(若这些指令被一起发出)的执行阶段的执行阶段被生成,则这是可能的。在这种情形下,尽管存在检测出的数据相依冒险,可一起并行发出的程序指令组合被检测并且由这个检测产生的信号被用来克服数据相依冒险。该机制还可用来控制输出操作数值在执行流水线之间的传输/发送,以在相依程序指令沿指令流水线行进时用作必要的输入操作数值。
当会了解,本方法可用来保证在具有多条指令流水线(包括两条以上指令流水线)的系统中数据相依冒险检查的克服,但是本方法更适合具有两条指令流水线并且按次序实施程序指令执行的系统。如果允许无序执行,则能够以相当大地增加处理无序控制所需的复杂性为代价减轻与数据相依性关联的问题。
当有关的执行阶段具有可用来实施不同数据处理操作的不同指令执行逻辑单元时,其中在不同执行阶段得到输出操作数值的情形尤其可能出现。在这样的系统内,随着不同类型的操作在不同阶段实施,执行工作量在执行阶段之间分配。某些指令可能请求将要实施的多个不同类型的操作,这些不同类型的操作在不同执行阶段实施,例如在一个阶段的移位后面跟有另一个阶段的ALU操作。
在各执行阶段提供的不同指令执行逻辑单元可采取各种不同的形式,但是在优选实施例中包含了可用来实施数据移位操作、ALU操作和装入/存储操作的多个操作之一的逻辑单元。可以方便地将这些操作布置在流水线内,以按顺序在各执行阶段实施。
在这种配置下,相互之间具有数据相依冒险却仍可被一起并行发出的候选程序指令包括:后面跟有ALU程序指令的移位程序指令;后面跟有装入/存储程序指令的移位程序指令;以及后面跟有装入/存储程序指令的ALU程序指令。在所有这些情形中,较早指令的输出操作数值将在其作为已经随其并行发出的下一个程序指令的输入操作数值被请求之前在执行流水线阶段内获得。
从另一个方面来观察,本发明提供了用于处理数据的设备,所述设备包含:
多个执行流水线部件,用于并行地执行程序指令序列的程序指令以生成输出操作数值,各执行流水线包括对应的多个执行阶段部件,不同类型程序指令的输出操作数值在不同的执行阶段部件内生成;
数据冒险检查部件,用于检测将要并行地发出给所述多个执行流水线部件的各执行流水线部件的候选程序指令之间的数据相依冒险,从而所述候选程序指令的第一程序指令的输出操作数值是所述候选程序指令的第二程序指令的输入操作数值,并且在检测到这样的数据相依冒险时来生成数据相依冒险信号;
数据冒险克服部件,用于检测:在所述候选程序指令的所述第二程序指令的所述输入操作数值被请求之前是否生成了所述候选程序指令的所述第一程序指令的所述输出操作数值,并生成数据冒险克服信号;
指令发出控制部件,响应所述数据冒险克服信号的接收,以克服任何数据相依冒险信号,并允许所述候选程序指令的所述第一程序指令和所述候选程序指令的所述第二程序指令并行发出;以及
操作数发送部件,用于控制将在执行流水线部件之间传送的所述候选程序指令的所述第一程序指令的所述输出操作数值,以用作所述候选程序指令的所述第二程序指令的所述输入操作数值。
从又一个方面来观察,本发明提供了用于处理数据的方法,所述方法包含下列步骤:
在多条执行流水线内并行地执行程序指令序列的程序指令以生成输出操作数值,各执行流水线包括对应的多个执行阶段,不同类型程序指令的输出操作数值在不同执行阶段生成;
检测将要并行发出给所述多个执行流水线的各执行流水线的候选程序指令之间的数据相依冒险,从而所述候选程序指令的第一程序指令的输出操作数值是所述候选程序指令的第二程序指令的输入操作数值,并且在检测到这样的数据相依冒险时生成数据相依冒险信号;
检测在请求所述候选程序指令的所述第一程序指令的所述输入操作数值之前是否生成了所述候选程序指令的所述第一程序指令的所述输出操作数值并生成数据冒险克服信号;
响应所述数据冒险克服信号的生成,克服任何数据相依冒险信号,并允许所述候选程序指令的所述第一程序指令和所述候选程序指令的所述第二程序指令并行发出;以及
控制将在执行流水线之间传送的所述候选程序指令的所述第一程序指令的所述输出操作数值,以作为所述候选程序指令的所述第二程序指令的所述输入操作数值。
通过下面对说明性实施例的详细描述并结合附图,本发明上述的和其他的目的、特征和优点将将会显而易见。
附图说明
图1示意说明访问共享寄存器组的多条执行流水线的执行阶段;
图2示意说明包括冒险检测检测、冒险克服和交叉发送逻辑单元的两条指令流水线的部分;
图3是示意说明用于控制指令发出以及并行发出指令的操作数交叉发送的电路部分的图示;以及
图4是示意说明指令发出和交叉发送的控制的流程图。
具体实施方式
图1示意说明包括两条执行流水线的多发出数据处理系统。应知,图1是高度示意的表示且实际上在系统内大体上会需要并存在许多附加的功能元件。为了简便起见,不在图1中对这些功能元件进行说明。
图1说明了每条执行流水线是如何从共享寄存器组2中得到它的源输入操作数值的。来自每条执行流水线的目的输出操作数值被同样地写回到寄存器堆2中。在这个示范实施例中,每条执行流水线被表示为具有三个执行阶段E1、E2和E3,它们分别包括了移位器4和4′、算术逻辑部件6和6′、以及装入/存储部件8和8′。
沿各执行流水线行进的指令连同所选择的源操作数值可通过移位器4和4′被移位操作、通过算术逻辑部件6和6′被算术和逻辑操作、通过装入/存储部件8和8′被存储器访问操作。将会了解到,还可利用不同数量的执行阶段,且相依指令执行逻辑单元(即移位器4和4′、算术逻辑部件6和6′、以及装入/存储部件8和8′)的设置可以根据特定的实际应用而变化。还将了解到,许多的或大部分的指令将仅仅使用这些不同指令执行电路的子电路来实施它们预定的处理操作。作为一例,纯移位操作的指令将通常只使用移位器4和4′。到第一执行阶段E1结束时将获得来自该移位操作的输出操作数值。同样地,纯算术/逻辑指令将可能只使用ALU部件6和6′并且到第二执行阶段E2结束时将获得其输出操作数值。在第二执行阶段E2开始之前,算术逻辑部件6和6′不请求其输入操作数值被提供。因此,如果在另一条执行流水线上利用移位操作计算这些输入操作数值,则到第一执行阶段E1结束时在该另一条执行流水线上将提供这个移位值并可在执行流水线之间发送这个移位值,以在第二操作阶段E2的开始时作为请求该值的ALU部件6和6′的输入操作数值。这代表并行进入两条执行流水线的指令的操作数的交叉发送。以类似的方式,在第三执行阶段E3开始之前,装入/存储部件8和8′不请求其输入操作数值,并且因此可接收已经由ALU部件6和6′或移位器4和4′生成的、相邻执行流水线输出操作数值作为输入操作数值。
图2示意说明使用上述方法的两条指令流水线的部分。读取和指令发出块10的作用是从指令高速缓冲存储器中取得多个程序指令(候选程序指令),并检测这些程序指令是需要个别发送(沿流水线0)还是可以沿两条流水线(流水线0和1)并行发出。数据冒险检测部件12的作用是检查(部分解码)作为候选指令的指令,它们用以被并行发出以确定新指令是否为请求在用作将要发出的旧候选程序指令的目的寄存器的寄存器内的输入操作数值。这就是数据冒险检测,按照惯例实施并可使用记分板记录数据相依性。这样的标准数据冒险检测不仅适用于沿执行流水线并行发出的候选程序指令,而且还可出现在试图发出对已经沿执行流水线行进的指令有相依性的、但在正被检查的候选程序指令请求该目的值时还未及时生成其目的(输出)值的指令时。在指令流水线内的待处理程序指令之间的这类数据冒险检测是公知的,将不再这里做进一步描述。
当两个指令沿执行流水线并行行进时,由较旧指令生成、被较新指令请求的输出数据将在该数据被较新指令实际请求之前生成,如果那些指令是这样,则当这些数据冒险在并行发出的候选指令之间发生时,本方法利用冒险克服逻辑单元16提供了克服已检测数据冒险的额外能力。如果此条件满足,则可使有关的数据在执行流水线之间交叉发送并使两个指令一起发出。发送控制逻辑单元18同时响应于常规的数据冒险检测逻辑单元12和冒险克服检测逻辑单元16,以发出来自正被检查的候选指令对的单个或两个指令。如果被请求在执行流水线之间发送且在冒险克服检测逻辑单元16涉及的定时条件下该发送被检测为可能,则该发送由发送控制逻辑单元20控制。
在执行流水线自身内,在达到多执行阶段之前,分别是解码器阶段。如前所述,执行阶段可实施不同的数据操作形式。正如由阶段之间双线箭头表示的,指定解码控制信号的指令和操作数在阶段之间传递。在被请求时,可利用多路复用器22、24使操作数在执行流水线之间发送以在由发送控制逻辑单元20生成的交叉发送控制信号的控制下用选自另一条流水线的操作数值代替沿该操作数的流水线行进的当前操作数值(或实际上为空格保持器)。在此示范实施例中,较旧指令总是被发进流水线0,并且因此只请求从流水线0到流水线1的交叉发送。
图3示意说明控制信号的生成,所述控制信号用于检测可能出现的冒险并克服该冒险以及控制交叉发送。解码器26、28、30分别为指定用于较旧指令的目的寄存器以及由较新指令指定的两个源寄存器解码。比较器32、34确定用于较旧指令的目的寄存器是否与用于较新指令的两个源寄存器中的任一个是相同的,并且在检测到这种情况时生成数据冒险信号。
解码器26、28、30还对它们的指令作出响应来确定执行阶段,从而在较旧指令时将获得目的寄存器值并且较新指令将请求源寄存器值。在这些条件被满足的执行阶段根据有关的指令类型而改变。作为一例,在图1的系统中的移位指令将请求其源值被早提供(在执行阶段E1开始时),但是还将早生成其目的值(在执行阶段E1结束时)。相反地,装入/存储操作将不请求提供其源值直到很晚(在执行阶段E3开始时),但是生成其目的值同样很晚(在执行阶段E3结束时)。比较器36、38的作用是检测由较旧指令产生的目的值是否将在因为需要较新指令而被请求的源值中的任一个之前获得。如果出现这样的情形,则这些比较器36、38的输出可以和“与”门40、42一起使用以克服任何检测到的数据冒险信号。“或”门42对还未被重写的任何数据冒险信号(用于较新指令的任一输入操作数值)作出响应,如果这样的数据冒险存在且不能被交叉发送解决则禁止双重发出。如果数据冒险已被检测并已被重写,则“与”门44、46为必要之处的各源操作数生成交叉发送使能信号。这些交叉发送控制信号被用来或者直接地控制图2的多路复用器22、24,或者在作了进一步处理后以适应另外出现的发送请求。进一步处理的另一例可涉及对由解码器26生成的信号之跟踪,将目的阶段生成其结果值的时间表示为该时或该时之后,可在执行流水线之间传送操作数值以解决数据相依性。
图4是示意说明多指令发出的控制的流程图。在步骤48,双发出的两个候选指令被接收。步骤50确定在这两个指令之间是否存在有数据冒险,例如较新指令请求将较旧指令的目的值作为其源之一。如果这样的数据冒险不存在,则处理可转到步骤52,在该步骤可将两个指令并行发出至两个执行流水线。
如果在步骤50检测到数据冒险,则处理转到步骤54,进行关于是否由于交叉发送可行而克服这个数据冒险的检查。交叉发送是否可行将取决于有关指令的特定类型。如果较旧指令是移位指令,则在图1的示例中,这个指令可以和ALU指令或装入/存储指令一起发出。如果较旧指令是ALU指令,则这个指令可以和装入/存储指令一起并行发出。这些特例并不对本技术范围的普遍性构成限制。
如果步骤54确定交叉发送不能克服在步骤50处检测到的数据冒险,则处理转到步骤56,在该步骤较旧指令被单独发送并且在下一个处理循环中发出的、提供别的数据相依性的较新指令不会阻止该发出。如果在步骤54处交叉发送作为适合于克服数据冒险而被确定,则处理转到步骤58,在该步骤必要的交叉发送被设置成在适当的时间发生,此时指令沿执行流水线行进并且两个指令在步骤52一起发出。
如上所述,图2说明了由一起被并行发出至两条执行流水线的指令使用的交叉发送路径。本领域的技术人员当会了解,为除了在同一时间并行发出到这两条执行流水线的那些指令,还在执行流水线之间实施其他指令的发送。依照常规方法,这种类型的发送可在对保持在记分板14中的数据的相依性上得到控制。图2所示的实施例被简化,实际上在流水线之间任一方向上的发送可在各个阶段被实施,不仅可处理同一时间并行发出至两条执行流水线的指令,而且可处理不同时间发出的指令。对于为了在不同时间发出的指令而实施的被记分板控制时的正常发送操作和为了在同一时间一起发出的指令而依照本方法实施的发送,对关于哪个操作数应当在执行流水线之间传递以及在何时进行的选择可被合并。沿流水线行进以控制发送多路复用器的控制信号和对这两个不同类型的选择可被合并而由相同的硬件来实施。执行发送的硬件不必了解发送是为了在不同时间发出的指令而实施的传统记分板类型发送的结果还是为了在相同时间发出的指令而实施的发送的结果,因为其被确定执行流水线之间的交叉发送可解决数据相依性,即使那些指令是在同一时间发出的。因此,与记分板14一起操作的数据冒险检测逻辑单元12连同冒险克服检测逻辑单元16提供了给图2的发送控制部件20的输入,发送控制部件20产生与指令一起沿执行流水线行进的全部发送控制信号以控制由两类情形产生的发送。在两个指令沿执行流水线行进的期间,在通过发送控制逻辑单元20发送控制可解决该数据相依性的场合尽管存在来自数据冒险检测逻辑单元12的数据相依性信号,冒险克服检测逻辑单元16还向发送控制逻辑单元18提供输入以允许双指令在同一时间的并行发出。
尽管已经参考附图对本发明的说明性实施例进行了详细地描述,但是应当理解,本发明不限于那些明确的实施例,在不背离如所附权利请求书规定的本发明的范围和精神的条件下,本领域技术人员可对它们作出各种变更和修改。
Claims (10)
1.一种处理数据的设备,所述设备包括:
多条用于并行地执行一程序指令序列的程序指令来生成输出操作数值的执行流水线,各执行流水线包含对应的多个执行阶段,不同类型程序指令的输出操作数值在不同执行阶段生成;
数据冒险检测逻辑单元,可检测要并行地发出到所述多条执行流水线的各执行流水线的候选程序指令之间的数据相依冒险,所述候选程序指令的第一程序指令的输出操作数值是所述候选程序指令的第二程序指令的输入操作数值,并在检测到这样的数据相依冒险时生成数据相依冒险信号;
数据冒险克服逻辑单元,可检测在所述候选程序指令的所述第二程序指令的所述输入操作数值被请求之前是否生成了所述候选程序指令的所述第一程序指令的所述输出操作数值,并生成数据冒险克服信号;
指令发出控制逻辑单元,可响应所述数据冒险克服信号之接收而克服任何数据相依冒险信号,并允许所述候选程序指令的所述第一程序指令和所述候选程序指令的所述第二程序指令并行地发出;以及
操作数发送逻辑单元,可控制将在执行流水线之间传送的所述候选程序指令的所述第一程序指令的所述输出操作数值,以用作所述候选程序指令的所述第二程序指令的所述输入操作数值。
2.如权利要求1所述的设备,其中,所述多条执行流水线包括按序进行程序指令的执行的两条执行流水线。
3.如权利要求1所述的设备,其中,所述多个执行阶段包含各个不同的指令执行逻辑单元,可按请求为执行在所述多个执行阶段之间行进的程序指令而实施不同的数据处理操作。
4.如权利要求3所述的设备,其中,对于至少某些类型的程序指令,生成至少一个输出操作数值所需的所有被请求的处理操作,在所述多个执行阶段的最后一个阶段到达之前完成。
5.如权利要求3所述的设备,其中,对于至少某些类型的程序指令,至少一个输入操作数值在所述多个执行阶段的第一个阶段到达后才被请求。
6.如权利要求3所述的设备,其中,所述各个不同的指令执行逻辑单元实施下列操作中的一个或多个:
数据移位操作;
ALU操作;以及
装入/存储操作。
7.如权利要求1所述的设备,其中,各执行流水线的所述多个执行阶段构成一个执行阶段序列,其中包括可实施数据移位操作的移位执行阶段、可实施ALU操作的ALU执行阶段、可实施装入/存储操作的装入/存储执行阶段。
8.如权利要求7所述的设备,其中,候选程序指令具有数据相依冒险:
ALU程序指令所跟随的移位程序指令被并行地发出;
装入/存储程序指令所跟随的移位程序指令被并行地发出;以及
装入/存储程序指令所跟随的ALU程序指令被并行地发出。
9.一种用于处理数据的设备,所述设备包括:
多个执行流水线部件,用于并行地执行一个程序指令序列的程序指令来生成输出操作数值,各执行流水线包含对应的多个执行阶段部件,不同类型程序指令的输出操作数值在不同执行阶段部件内生成;
数据冒险检测部件,用于检测要并行地发出到所述多个执行流水线部件的各执行流水线部件的候选程序指令之间的数据相依冒险,所述候选程序指令的第一程序指令的输出操作数值是所述候选程序指令的第二程序指令的输入操作数值,并在检测到这样的数据相依冒险时生成数据相依冒险信号;
数据冒险克服部件,用于检测在所述候选程序指令的所述第二程序指令的所述输入操作数值被请求之前是否生成了所述候选程序指令的所述第一程序指令的所述输出操作数值,并生成数据冒险克服信号;
指令发出控制部件,响应所述数据冒险克服信号的接收而克服任何数据相依冒险信号,并允许所述候选程序指令的所述第一程序指令和所述候选程序指令的所述第二程序指令并行地发出;以及
操作数发送部件,用于控制将在执行流水线部件之间传送的所述候选程序指令的所述第一程序指令的所述输出操作数值,以用作所述候选程序指令的所述第二程序指令的所述输入操作数值。
10.一种用于处理数据的方法,所述方法包括下列步骤:
在多条执行流水线内并行地一个执行程序指令序列的程序指令来生成输出操作数值,各执行流水线包含对应的多个执行阶段,不同类型程序指令的输出操作数值在不同执行阶段生成;
检测要并行地发出到所述多个执行流水线的各执行流水线的候选程序指令之间的数据相依冒险,所述候选程序指令的第一程序指令的输出操作数值是所述候选程序指令的第二程序指令的输入操作数值,并在检测到这样的数据相依冒险时生成数据相依冒险信号;
检测在所述候选程序指令的所述第二程序指令的所述输入操作数值被请求之前是否生成了所述候选程序指令的所述第一程序指令的所述输出操作数值,并生成数据冒险克服信号;
响应所述数据冒险克服信号的生成来克服任何数据相依冒险信号,并允许所述候选程序指令的所述第一程序指令和所述候选程序指令的所述第二程序指令并行地发出;以及
控制将在执行流水线之间传送的所述候选程序指令的所述第一程序指令的所述输出操作数值,以用作所述候选程序指令的所述第二程序指令的所述输入操作数值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/137,792 US7774582B2 (en) | 2005-05-26 | 2005-05-26 | Result bypassing to override a data hazard within a superscalar processor |
US11/137792 | 2005-05-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1869920A true CN1869920A (zh) | 2006-11-29 |
CN100538627C CN100538627C (zh) | 2009-09-09 |
Family
ID=36384248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200610092423.6A Active CN100538627C (zh) | 2005-05-26 | 2006-05-25 | 超标量处理器内的指令发出控制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7774582B2 (zh) |
JP (1) | JP5031256B2 (zh) |
CN (1) | CN100538627C (zh) |
GB (1) | GB2426605B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8990543B2 (en) | 2008-03-11 | 2015-03-24 | Qualcomm Incorporated | System and method for generating and using predicates within a single instruction packet |
CN111736900A (zh) * | 2020-08-17 | 2020-10-02 | 广东省新一代通信与网络创新研究院 | 一种并行双通道的cache设计方法和装置 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090055636A1 (en) * | 2007-08-22 | 2009-02-26 | Heisig Stephen J | Method for generating and applying a model to predict hardware performance hazards in a machine instruction sequence |
US7921279B2 (en) * | 2008-03-19 | 2011-04-05 | International Business Machines Corporation | Operand and result forwarding between differently sized operands in a superscalar processor |
JP2011177203A (ja) | 2010-02-26 | 2011-09-15 | Nintendo Co Ltd | オブジェクト制御プログラムおよびオブジェクト制御装置 |
US9858077B2 (en) | 2012-06-05 | 2018-01-02 | Qualcomm Incorporated | Issuing instructions to execution pipelines based on register-associated preferences, and related instruction processing circuits, processor systems, methods, and computer-readable media |
JP2014164659A (ja) * | 2013-02-27 | 2014-09-08 | Renesas Electronics Corp | プロセッサ |
US10417152B2 (en) * | 2016-06-03 | 2019-09-17 | International Business Machines Corporation | Operation of a multi-slice processor implementing datapath steering |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01296345A (ja) * | 1988-05-24 | 1989-11-29 | Hitachi Ltd | 情報処理装置 |
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
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 |
KR100309566B1 (ko) * | 1992-04-29 | 2001-12-15 | 리패치 | 파이프라인프로세서에서다중명령어를무리짓고,그룹화된명령어를동시에발행하고,그룹화된명령어를실행시키는방법및장치 |
US6073231A (en) * | 1993-10-18 | 2000-06-06 | Via-Cyrix, Inc. | Pipelined processor with microcontrol of register translation hardware |
US6101597A (en) * | 1993-12-30 | 2000-08-08 | Intel Corporation | Method and apparatus for maximum throughput scheduling of dependent operations in a pipelined processor |
JP3745450B2 (ja) * | 1996-05-13 | 2006-02-15 | 株式会社ルネサステクノロジ | 並列処理プロセッサ |
JP3578883B2 (ja) * | 1997-01-31 | 2004-10-20 | 三菱電機株式会社 | データ処理装置 |
US5958041A (en) * | 1997-06-26 | 1999-09-28 | Sun Microsystems, Inc. | Latency prediction in a pipelined microarchitecture |
JP4006887B2 (ja) | 1999-06-03 | 2007-11-14 | 松下電器産業株式会社 | コンパイラ、プロセッサおよび記録媒体 |
US6408381B1 (en) * | 1999-10-01 | 2002-06-18 | Hitachi, Ltd. | Mechanism for fast access to control space in a pipeline processor |
US6587940B1 (en) * | 2000-01-18 | 2003-07-01 | Hewlett-Packard Development Company | Local stall/hazard detect in superscalar, pipelined microprocessor to avoid re-read of register file |
ATE529802T1 (de) * | 2000-02-09 | 2011-11-15 | Texas Instruments Inc | Datenverarbeitungsvorrichtung |
EP1199629A1 (en) * | 2000-10-17 | 2002-04-24 | STMicroelectronics S.r.l. | Processor architecture with variable-stage pipeline |
JP2002333978A (ja) * | 2001-05-08 | 2002-11-22 | Nec Corp | Vliw型プロセッサ |
US7051191B2 (en) * | 2001-12-26 | 2006-05-23 | Intel Corporation | Resource management using multiply pendent registers |
US6944751B2 (en) * | 2002-02-11 | 2005-09-13 | Hewlett-Packard Development Company, L.P. | Register renaming to reduce bypass and increase apparent physical register size |
US7200738B2 (en) * | 2002-04-18 | 2007-04-03 | Micron Technology, Inc. | Reducing data hazards in pipelined processors to provide high processor utilization |
JP3769249B2 (ja) * | 2002-06-27 | 2006-04-19 | 富士通株式会社 | 命令処理装置および命令処理方法 |
US6922760B2 (en) * | 2002-12-05 | 2005-07-26 | Lsi Logic Corporation | Distributed result system for high-performance wide-issue superscalar processor |
US7730284B2 (en) * | 2003-03-19 | 2010-06-01 | Koninklijke Philips Electronics N.V. | Pipelined instruction processor with data bypassing and disabling circuit |
US7290121B2 (en) * | 2003-06-12 | 2007-10-30 | Advanced Micro Devices, Inc. | Method and data processor with reduced stalling due to operand dependencies |
US20060095732A1 (en) * | 2004-08-30 | 2006-05-04 | Tran Thang M | Processes, circuits, devices, and systems for scoreboard and other processor improvements |
US7409520B2 (en) * | 2005-01-25 | 2008-08-05 | International Business Machines Corporation | Systems and methods for time division multiplex multithreading |
US7454598B2 (en) * | 2005-05-16 | 2008-11-18 | Infineon Technologies Ag | Controlling out of order execution pipelines issue tagging |
-
2005
- 2005-05-26 US US11/137,792 patent/US7774582B2/en active Active
-
2006
- 2006-03-27 GB GB0606086A patent/GB2426605B/en active Active
- 2006-04-04 JP JP2006103563A patent/JP5031256B2/ja active Active
- 2006-05-25 CN CN200610092423.6A patent/CN100538627C/zh active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8990543B2 (en) | 2008-03-11 | 2015-03-24 | Qualcomm Incorporated | System and method for generating and using predicates within a single instruction packet |
CN111736900A (zh) * | 2020-08-17 | 2020-10-02 | 广东省新一代通信与网络创新研究院 | 一种并行双通道的cache设计方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
GB2426605B (en) | 2010-06-30 |
US20060271768A1 (en) | 2006-11-30 |
JP2006331399A (ja) | 2006-12-07 |
US7774582B2 (en) | 2010-08-10 |
JP5031256B2 (ja) | 2012-09-19 |
CN100538627C (zh) | 2009-09-09 |
GB0606086D0 (en) | 2006-05-03 |
GB2426605A (en) | 2006-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1869920A (zh) | 超标量处理器内的指令发出控制 | |
KR102629722B1 (ko) | 이동 프리픽스 명령어 | |
JP6009608B2 (ja) | 条件付き命令が無条件で出力を提供するシステム及び方法 | |
JP2597811B2 (ja) | データ処理システム | |
JP3788470B2 (ja) | スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法 | |
CN100478871C (zh) | 从队列处理指令刷新的生存期计数器设计的系统和方法 | |
KR100616722B1 (ko) | 수퍼스칼라프로세서내의파이프라인명령디스패치유닛 | |
US9323529B2 (en) | Reducing register read ports for register pairs | |
KR101952209B1 (ko) | 벡터 레지스터 파일의 동적 재명명 기반의 레지스터 재구성 | |
KR100305467B1 (ko) | 파이프라인화된 부동 소수점 저장 | |
US10445101B2 (en) | Controlling processing of instructions in a processing pipeline | |
US6622238B1 (en) | System and method for providing predicate data | |
JP2006517322A (ja) | パイプライン化ディジタルプロセッサにおけるハザード検出および管理のための方法および装置 | |
US9323532B2 (en) | Predicting register pairs | |
JP4149360B2 (ja) | データ駆動型情報処理装置およびデータフロープログラムの実行制御方法 | |
US7664932B2 (en) | Scalable and configurable execution pipeline of handlers having policy information for selectively acting on payload | |
US20170212763A1 (en) | Exception handling predicate register | |
JPS6364130A (ja) | 分岐命令制御方法 | |
JPH0594304A (ja) | 割込み制御装置 | |
JPH05241864A (ja) | コンピュータ制御方法 |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180611 Address after: cambridge Co-patentee after: Anne science and Technology (China) Co., Ltd. Patentee after: Advanced Risc Machines Ltd. Address before: Cambridge County Patentee before: Advanced Risc Machines Ltd. |
|
TR01 | Transfer of patent right |