CN100538627C - 超标量处理器内的指令发出控制 - Google Patents

超标量处理器内的指令发出控制 Download PDF

Info

Publication number
CN100538627C
CN100538627C CN200610092423.6A CN200610092423A CN100538627C CN 100538627 C CN100538627 C CN 100538627C CN 200610092423 A CN200610092423 A CN 200610092423A CN 100538627 C CN100538627 C CN 100538627C
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.)
Active
Application number
CN200610092423.6A
Other languages
English (en)
Other versions
CN1869920A (zh
Inventor
D·J·威廉逊
G·A·哈里斯
S·J·希尔
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.)
Anne science and Technology (China) Co., Ltd.
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of CN1869920A publication Critical patent/CN1869920A/zh
Application granted granted Critical
Publication of CN100538627C publication Critical patent/CN100538627C/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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, 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/3824Operand accessing
    • 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/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing 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
    • 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

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 (9)

1.一种处理数据的设备,所述设备包括:
多条用于并行地执行一程序指令序列的程序指令来生成输出操作数值的执行流水线,各执行流水线包含对应的多个执行阶段,不同类型程序指令的输出操作数值在不同执行阶段生成;
数据冒险检测逻辑单元,可检测要并行地发出到所述多条执行流水线的各执行流水线的候选程序指令之间的数据相依冒险,所述候选程序指令的第一程序指令的输出操作数值是所述候选程序指令的第二程序指令的输入操作数值,并在检测到这样的数据相依冒险时生成数据相依冒险信号;
数据冒险克服逻辑单元,可检测在所述候选程序指令的所述第二程序指令的所述输入操作数值被请求之前是否生成了所述候选程序指令的所述第一程序指令的所述输出操作数值,并生成数据冒险克服信号;
指令发出控制逻辑单元,可响应所述数据冒险克服信号之接收而克服任何数据相依冒险信号,并允许所述候选程序指令的所述第一程序指令和所述候选程序指令的所述第二程序指令并行地发出;以及
操作数发送逻辑单元,可控制将在执行流水线之间传送的所述候选程序指令的所述第一程序指令的所述输出操作数值,以便用作所述候选程序指令的所述第二程序指令的所述输入操作数值。
2.如权利要求1所述的设备,其中,所述多条执行流水线包括按序进行程序指令的执行的两条执行流水线。
3.如权利要求1所述的设备,其中,所述多个执行阶段采用各个不同的指令执行逻辑单元,可按请求为执行在所述多个执行阶段之间行进的程序指令而实施不同的数据处理操作。
4.如权利要求3所述的设备,其中,对于至少某些类型的程序指令,生成至少一个输出操作数值所需的所有被请求的处理操作,在所述多个执行阶段的最后一个阶段到达之前完成。
5.如权利要求3所述的设备,其中,对于至少某些类型的程序指令,至少一个输入操作数值在所述多个执行阶段的第一个阶段到达后才被请求。
6.如权利要求3所述的设备,其中,所述各个不同的指令执行逻辑单元实施下列操作中的一个或多个:
数据移位操作;
ALU操作;以及
装入/存储操作。
7.如权利要求1所述的设备,其中,各执行流水线的所述多个执行阶段构成一个执行阶段序列,所述执行阶段序列包括可实施数据移位操作的移位执行阶段、可实施ALU操作的ALU执行阶段、可实施装入/存储操作的装入/存储执行阶段。
8.如权利要求7所述的设备,其中,具有数据相依冒险却仍可被并行地发出的候选程序指令包括:
ALU程序指令所跟随的移位程序指令;
装入/存储程序指令所跟随的移位程序指令;以及
装入/存储程序指令所跟随的ALU程序指令。
9.一种用于处理数据的方法,所述方法包括下列步骤:
在多条执行流水线内并行地执行程序指令序列的程序指令来生成输出操作数值,各执行流水线包含对应的多个执行阶段,不同类型程序指令的输出操作数值在不同执行阶段生成;
检测要并行地发出到所述多个执行流水线的各执行流水线的候选程序指令之间的数据相依冒险,所述候选程序指令的第一程序指令的输出操作数值是所述候选程序指令的第二程序指令的输入操作数值,并在检测到这样的数据相依冒险时生成数据相依冒险信号;
检测在所述候选程序指令的所述第二程序指令的所述输入操作数值被请求之前是否生成了所述候选程序指令的所述第一程序指令的所述输出操作数值,并生成数据冒险克服信号;
响应所述数据冒险克服信号的生成来克服任何数据相依冒险信号,并允许所述候选程序指令的所述第一程序指令和所述候选程序指令的所述第二程序指令并行地发出;以及
控制将在执行流水线之间传送的所述候选程序指令的所述第一程序指令的所述输出操作数值,以便用作所述候选程序指令的所述第二程序指令的所述输入操作数值。
CN200610092423.6A 2005-05-26 2006-05-25 超标量处理器内的指令发出控制 Active CN100538627C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/137792 2005-05-26
US11/137,792 US7774582B2 (en) 2005-05-26 2005-05-26 Result bypassing to override a data hazard within a superscalar processor

Publications (2)

Publication Number Publication Date
CN1869920A CN1869920A (zh) 2006-11-29
CN100538627C true 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)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
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
US8990543B2 (en) * 2008-03-11 2015-03-24 Qualcomm Incorporated System and method for generating and using predicates within a single instruction packet
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
CN111736900B (zh) * 2020-08-17 2020-11-27 广东省新一代通信与网络创新研究院 一种并行双通道的cache设计方法和装置

Family Cites Families (25)

* Cited by examiner, † Cited by third party
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
EP1124181B8 (en) * 2000-02-09 2012-03-21 Texas Instruments Incorporated Data processing apparatus
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
CN1761940B (zh) * 2003-03-19 2010-06-16 皇家飞利浦电子股份有限公司 指令处理设备,指令执行方法和装置,指令编译方法和装置
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

Also Published As

Publication number Publication date
JP5031256B2 (ja) 2012-09-19
JP2006331399A (ja) 2006-12-07
GB2426605A (en) 2006-11-29
US20060271768A1 (en) 2006-11-30
GB0606086D0 (en) 2006-05-03
US7774582B2 (en) 2010-08-10
GB2426605B (en) 2010-06-30
CN1869920A (zh) 2006-11-29

Similar Documents

Publication Publication Date Title
CN100538627C (zh) 超标量处理器内的指令发出控制
CN100478871C (zh) 从队列处理指令刷新的生存期计数器设计的系统和方法
JP2750311B2 (ja) データ処理装置内のデータ・オペレーションの実行を制御する装置及び方法
KR102629722B1 (ko) 이동 프리픽스 명령어
JP4022147B2 (ja) 設定可能な機能ユニットを備えるデータ処理装置
KR100616722B1 (ko) 수퍼스칼라프로세서내의파이프라인명령디스패치유닛
KR980010763A (ko) 연산처리장치
JPS6074035A (ja) デ−タ処理方法および装置
CN101194225A (zh) 其中条件指令无条件提供输出的系统及方法
JPH0540627A (ja) 並列演算処理装置
EP0651331B1 (en) A write buffer for a superpipelined, superscalar microprocessor
US7216332B2 (en) Software object library selection
KR20110106717A (ko) 재구성 가능 어레이 및 재구성 가능 어레이의 제어 방법
US5907693A (en) Autonomously cycling data processing architecture
KR19990072287A (ko) 파이프라인화된부동소수점저장
JP3756410B2 (ja) 述語データを提供するシステム
US20170212764A1 (en) Controlling processing of instructions in a processing pipeline
US7237096B1 (en) Storing results of producer instructions to facilitate consumer instruction dependency tracking
US9213547B2 (en) Processor and method for processing instructions using at least one processing pipeline
US6401195B1 (en) Method and apparatus for replacing data in an operand latch of a pipeline stage in a processor during a stall
KR100508320B1 (ko) 고속 및 저속 리플레이 경로를 갖는 리플레이 구조를구비한 프로세서
EP1050809A1 (en) Computer instruction dependency
US6651164B1 (en) System and method for detecting an erroneous data hazard between instructions of an instruction group and resulting from a compiler grouping error
GB2366414A (en) A method of identifying false paths in circuit synthesis
US5812845A (en) Method for generating an object code for a pipeline computer process to reduce swapping instruction set

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
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.