CN1257450C - 节省资源的硬件环路 - Google Patents

节省资源的硬件环路 Download PDF

Info

Publication number
CN1257450C
CN1257450C CNB01820774XA CN01820774A CN1257450C CN 1257450 C CN1257450 C CN 1257450C CN B01820774X A CNB01820774X A CN B01820774XA CN 01820774 A CN01820774 A CN 01820774A CN 1257450 C CN1257450 C CN 1257450C
Authority
CN
China
Prior art keywords
loop
register
streamline
group
hardware
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB01820774XA
Other languages
English (en)
Other versions
CN1481527A (zh
Inventor
R·伊努埃
R·P·辛格
C·P·罗斯
G·A·奥弗坎普
Original Assignee
Analog Devices Inc
Intel Corp
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 Analog Devices Inc, Intel Corp filed Critical Analog Devices Inc
Publication of CN1481527A publication Critical patent/CN1481527A/zh
Application granted granted Critical
Publication of CN1257450C publication Critical patent/CN1257450C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent 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)
  • Executing Machine-Instructions (AREA)
  • Multi Processors (AREA)

Abstract

提供一种自适应支持硬件环路的可编程处理器及其方法。可编程处理器包括诸如第一组寄存器、第二组寄存器、第一流水线和第二流水线之类的硬件,还包括实现硬件环路时自适应为有效实现硬件的控制单元。方法包括:通过流水线处理器的第一流水线,取出对应于第一硬件环路的环路建立指令的特定事例的环路条件;经流水线处理器的第一流水线,第一传播对应于环路建立指令的特定事例的第一硬件环路的环路条件的第一个;将环路条件的第二个从流水线处理器的第一流水线传送到流水线处理器的第二流水线;经流水线处理器的第二流水线,与第一传播并行地第二传播对应于环路建立指令的特定事例的第一硬件环路的环路条件的第二个。

Description

节省资源的硬件环路
背景
在设计可编程处理器(诸如数字信号处理器(DSP)系统)时,两竞争设计目标是处理速度和功耗。常见处理器包括设计为提高软件指令的执行速度的各种硬件。然而,附加硬件通常增加处理器的功耗。
提高可编程处理器的速度的一种技术是“硬件环路”,硬件环路可以是设计成加速环路结构内软件指令的执行的专用硬件。硬件环路可通过把指令高速缓存在本地寄存器中来减少用来执行软件环路的时钟周期,从而降低多次从存储设备或指令高速缓存取同一指令的需要。
发明内容
本发明提供一种方法,包括:通过流水线处理器的第一流水线,取出对应于第一硬件环路的环路建立指令的特定事例的环路条件;经流水线处理器的第一流水线,第一传播对应于环路建立指令的特定事例的所述第一硬件环路的所述环路条件的第一个;将所述环路条件的第二个从流水线处理器的所述第一流水线传送到流水线处理器的第二流水线;经流水线处理器的第二流水线,与所述第一传播并行地第二传播对应于环路建立指令的特定事例的所述第一硬件环路的所述环路条件的第二个。
本发明还提供一种方法,包括:利用第一流水线中的第一算术逻辑单元,从环路建立指令的特定事例第一计算第一硬件环路的第一环路条件;利用第二流水线中的第二算术逻辑单元,从环路建立指令的特定事例并行地第二计算所述第一硬件环路的第二环路条件;使用所述第一计算和第二计算的结果,并行地传播所述第一、第二环路条件到与第一硬件环路的计算相关的硬件寄存器;在所述传播之前,根据所述第一、第二环路条件,利用所述第一硬件环路开始计算数据。
本发明提供一种设备,包括:包括第一算术逻辑单元的第一流水线及包括第二算术逻辑单元的第二流水线,以及耦合至第一、第二流水线的控制单元。所述控制单元自适应为:从计算机程序,获取第一硬件环路的诸环路建立指令,所述环路建立指令与第一硬件环路的执行的特定事例相关;将环路建立指令从第一流水线传送到第二流水线中的第二算术逻辑单元;利用第一流水线中的第一算术逻辑单元,从所述环路建立指令之一第一计算第一硬件环路的执行的所述特定事例的第一环路条件;以及利用第二流水线中的第二算术逻辑单元,从传送的环路建立指令与所述第一计算并行地第二计算第一硬件环路的执行的所述特定事例的第二环路条件。
本发明还提供一种设备,包括一组寄存器、第一流水线和第二流水线;以及耦合于所述一组寄存器、所述第一流水线和所述第二流水线的控制单元。所述控制单元自适应为:经第一流水线将硬件环路的执行的特定事例的至少一环路条件第一传播至所述一组寄存器;经第二流水线将硬件环路的执行的特定事例的至少一环路条件与所述第一传播并行地第二传播至所述一组寄存器;并在完成所述第一和第二传播前,使用所述硬件环路开始计算数据。
本发明还提供一种系统,包括:静态随机存取存储设备;耦合静态随机存取存储设备的处理器,其中,处理器包括第一组寄存器、第一流水线、第二流水线和控制单元。控制单元自适应为:将环路建立指令从第一流水线传送到第二流水线中的第二算术逻辑单元;用第一流水线中的第一算术逻辑单元,从环路建立指令第一计算硬件环路的执行的特定事例的第一环路条件,用第二流水线中的第二算术逻辑单元,从环路建立指令与第一计算并行地第二计算硬件环路的执行的特定事例的第二环路条件;以及将第一硬件环路的执行的特定事例的第一和第二环路条件写入第一组寄存器。
本发明还提供一种系统,包括:静态随机存取存储设备;耦合静态随机存取存储设备的处理器,其中,处理器包括第一组寄存器、第二组寄存器、第一流水线、第二流水线和控制单元。控制单元自适应为:将第一硬件环路的环路条件写入第一组寄存器;经第一流水线将所述第一硬件环路的环路条件中的至少一个第一传播至第二组寄存器;经第二流水线将所述第一硬件环路的环路条件中的至少一个与第一传播并行地第二传播至第二组寄存器;并在完成所述第一和第二传播前,使用所述第一硬件环路开始计算数据。
附图简述
图1是说明根据本发明的一实施例自适应的可编程处理器的例子的框图。
图2是说明根据本发明的一实施例的流水线的框图。
图3是说明根据本发明的一实施例装入早期寄存器的示例过程的流程图。
图4是说明根据本发明的一实施例的一或更多流水线的有效使用的框图。
图5是说明根据本发明的一实施例用环路建立指令来确定早期寄存器值的例子的流程图。
图6是说明硬件环路单元的一实施例的电路框图。
图7是说明根据本发明的一实施例的硬件的再使用的流程图。
发明详述
图1是说明根据本发明实施例的设置成支持有效硬件环路的可编程处理器2的框图。处理器2可包括向流水线4发送控制信号的控制单元6。控制单元6可包括促进快速硬件环路8而不大大增加处理器2的功耗。
为支持硬件环路,处理器2可通过设定环路的进入和退出条件支持启动硬件(诸如硬件环路单元7)的环路建立指令。进入和退出条件可由环路条件(顶、底和计数)定义。顶条件可定义环路的第一指令(顶)。底条件可定义环路的最后指令(底)。而计数条件可定义环路的许多迭代。
硬件环路的进入可出现于第一“顶匹配”。当程序计数器(PC)指向环路的顶指令时,出现顶匹配。硬件环路的退出可出现于最后“底匹配”。当程序计数器(PC)指向环路的底指令时,出现底匹配。
通过在第一顶匹配启动计数并在每个底匹配减少计数,硬件可跟踪何时遭遇最后底匹配。这样,环路条件顶、底和计数可定义硬件环路的进入和退出条件。
处理器2可包括一或更多流水线4及一控制单元6。作为示例,流水线4可包括一或更多系统流水线、一或更多数据地址生成流水线、一或更多执行单元流水线及为特定实现所需的一或更多附加流水线。控制单元6可控制在时钟周期期间指令和/或数据经流水线4的流动。例如,在指令处理期间,控制单元6可指导流水线的各种组件对指令解码并正确执行相应的操作包括,例如,将结果写回存储器。
指令可装入一或更多流水线4的第一阶段并通过后续阶段处理。一阶段可与其他阶段并行处理。数据在系统的周期期间经过流水线4的阶段间。指令的结果快速承接地出现于流水线4的端点。
图2是说明根据本发明一实施例的一示例流水线的框图。流水线10有促进在单个时钟周期期间的多指令执行的多阶段。在流水线10中,指令在第一时钟周期期间进入取指令(IF)阶段12。指令在后续时钟周期期间沿流水线继续。通常,另一指令在后续时钟周期期间进入IF阶段12,然后在后续时钟周期期间沿流水线继续。类似地,附加指令分别在后续时钟周期期间进入IF阶段12。流水线中的阶段数可定义流水线同时服务的指令数。
流水线的不同阶段可如下工作。指令在IF阶段期间由取单元13取并在DEC阶段14期间从指令寄存器15解码。在AC阶段18期间,一或更多数据地址生成器19计算用来执行操作的存储器地址。数据地址生成器19含有一或更多算术逻辑单元(ALU)以促进计算。
在执行阶段(EX1至EXn)22A至22N期间,执行单元23和29执行特定操作,诸如添加或倍增两数目。执行单元可含有特殊的硬件包括,例如,一或更多ALU浮点单元(FPU)和桶形移位器,来执行这些操作,尽管本发明的范围不限于该方面。多种数据应用于执行单元,诸如数据地址生成器生成的地址、从存储器检索的数据或从数据寄存器检索的数据。在写回阶段(WB)30期间,结果写入存储器位置或流水线外部的数据寄存器或诸如体系结构寄存器32之类的流水线中的数据寄存器。流水线10的阶段包括一或更多存储电路(诸如触发器)用来存储数据。
如上所述,处理器2支持环路建立指令。环路建立指令通过将硬件环路的边界(例如,顶和底)写入体系结构寄存器32启动硬件环路。环路建立指令也可启动体系结构寄存器32中的计数,显示将要完成的环路的次数。另外,环路建立指令定义偏置,显示在到达环路的顶之前而在环路建立指令之后的指令的数目。启动硬件环路后,硬件环路在流水线10中工作直到环路的退出条件得到满足(例如,计数为0的底匹配)。
一旦指令确认(例如,当环路建立指令退出WB阶段30时),通常装入体系结构寄存器32。因此,直到从环路建立指令进入流水线10时已有数个时钟周期经过才对体系结构寄存器32中存储的进入和退出条件加以更新。因为直到已有数个时钟周期经过才对进入和退出条件加以更新,存在建立硬件环路的延迟。例如,如果在环路建立指令确认之前环路中的第一指令进入流水线10,不建立体系结构寄存器来把指令标识为环路的一部分。而且,这随流水线深度的上升而上升。
在一实施例中,处理器2通过维持一组早期寄存器34在流水线中来处理这些问题。如图2所示,早期寄存器ETop 34A和EBot 34B驻留于解码阶段而Ecnt 34C驻留于AC阶段。
实现一组早期寄存器34通过降低或避免环路建立罚(panalty)提高处理器2的处理速度。如上所述,在环路建立指令进入流水线时及写体系结构寄存器时之间经过数个时钟周期。不过,早在环路建立指令写至体系结构寄存器之前装入早期寄存器。由此,实现早期寄存器降低建立硬件环路所花时间。
早期寄存器是用来预测或推测体系结构寄存器值的推测寄存器。与体系结构寄存器不同,推测寄存器不得到系统指令集的支持。因此,不用程序码接入推测寄存器。由此,程序员不能用对体系结构寄存器一样的方法将数据移入或移出推测寄存器。
有数种不同的方法装入早期寄存器。例如,早期寄存器只作为执行向体系结构寄存器的正常指令寄存器移动的结果而装入。换言之,系统指导体系结构寄存器装入一些其他寄存器的内容,并作为结果,更新早期寄存器。另一装入寄存器的方法是从存储器装入。换言之,系统从存储器取数据,用该数据装入体系结构寄存器,并更新早期寄存器。
然而,从存储器的正常寄存器移动或装入存在的问题在于,带来环路建立罚。出现罚是因为系统拖延流水线至有数据可写。为避免罚,在写体系结构寄存器之前用环路建立指令装入早期寄存器。
下例说明用来调用示例环路建立机器指令的语法:
LSETUP(PC Relative Top,PC Relative Bottom)Counter=X
PC Relative Top规定当前指令至环路顶的距离(Start Offset)。PC RelativeBottom规定当前指令至环路底的距离(End Offset)。另外,计数器变量规定计数器寄存器和显示环路中迭代的数目的环路计数。
图3是说明根据本发明的一实施例装入早期寄存器的定时的流程图。如所述,环路建立指令含有计数值、顶值和底值形式的环路条件。这三值共同定义硬件环路的进入和退出条件。
计数值表示环路制造的迭代数目。一旦环路建立指令进入AC(38),计数值写入ECnt寄存器(39)。起初写至Ecnt寄存器经从数据寄存器的寄存器移动进行。在一工作模式中,用数据地址生成(DAG)流水线的指针寄存器(PREGS)中含有的数据写Ecnt寄存器。如有必要,用一流水线中的ALU从环路建立指令计算计数值。
顶和底值显示哪一指令是环路顶而哪一指令是环路底。不过,环路建立指令中的顶和底值是程序计数器(PC)相对。因此,用AC阶段中的计算(40)获得分别写入ETop 34A和EBot 34B寄存器的顶和底值。环路建立指令进入EX1(41)后,顶和底值写入ETop 34A和EBot 34B寄存器(42)。
根据本发明的一实施例,系统资源得到有效实现。照此方式,无须附加系统硬件来处理硬件环路。如上所述,环路建立指令中含有硬件环路的环路条件。通过有效再使用处理器中含有的可用ALU,不需要专用硬件环路ALU便建立硬件环路。
图4是根据本发明的一实施例说明有效使用一或更多流水线的框图。环路建立指令由取单元在IF阶段期间取并在DEC阶段14期间从指令寄存器(未示出)解码。在此方面,环路建立指令传送给不同流水线中的可用ALU(50,51),这样,并行计算所有环路条件。
例如,在特定实施例中,使用第一流水线(例如,第一DAG流水线60)中的ALU52传送计数值并执行任一必要的转移或计算。另外,使用第二流水线(例如,第二DAG流水线62)中的ALU50从环路建立指令计算环路的底值。而且,使用第三流水线(例如,系统流水线64的支单元54中含有的)中的ALU51从环路建立指令计算环路的顶值。按此方式,并行计算环路条件。而且,不管系统是否配置成处理硬件环路,相应ALU全部是可用的资源。这样,通过再使用这些可用的资源,上述实现避免处理硬件环路的硬件的不必要的增加。
计算环路条件后,这些条件写至一组早期(或推测)寄存器34。装入ETop寄存器34A以指向环路的第一指令(或环路顶)。装入EBot寄存器34B以指向环路的最后指令(或环路底)。装入ECnt寄存器34C以规定环路将重复的次数。在一实施例中,ECnt34C向下计数,每遭遇底匹配便递减。
除向早期寄存器34写所计算的环路条件外,该数据也传送给在写回阶段中被写的一组体系结构寄存器32。根据本发明的另一实施例,该数据沿许多可用的流水线传送。按此方式,并行写两或更多体系结构寄存器32。而且,不需要附加存储硬件(诸如附加触发器)来将环路条件传输至WB。
在特定实施例中,使用第一流水线(例如,DAG流水线60)将计数变量传输到体系结构寄存器32A。另外,使用第二流水线(例如,DAG流水线62)将计数变量传输到体系结构寄存器32B。而且,使用第三流水线(例如,系统流水线64)将底变量传输到体系结构寄存器32C。不管系统是否设置成处理硬件环路,这些相应的流水线全部是可用的资源。这样,通过再使用这些可用的资源,上述实现避免处理硬件环路的硬件的不必要的增加。
再使用流水线实现数个优点。例如,假如只使用单个流水线计算环路条件,用单个ALU执行所有必要的计算要花费数个时钟周期。而且,假如只使用单个流水线传播环路条件,将数据传送给WB要花费另外的时钟周期。由此,再使用附加流水线通过避免这些附加环路建立罚来支持改进的系统性能。另外,如上所述,再使用现有流水线实现处理器内硬件的减少。而且,这促进向两个或更多寄存器并行地写环路条件。
图5是根据本发明的一实施例说明计算早期寄存器值的操作模式的流程图。根据一格式,环路建立指令规定数个建立变量包括Start Offset(S-Offset)和End Offset(E-Offset)。S-Offset规定指令流中从环路建立指令至环路中第一指令的距离。类似地,如果环路建立和第一指令间有两指令,则S-Offset是环路建立指令和两指令的宽度。
如图5所示,S-Offset和E-Offset通常由环路建立指令(74)规定。不过,环路建立指令规定相对程序计数器(PC)的偏置。因此,PC值也得到确定(75)。然后用PC值和S-Offset计算ETop寄存器数据(76)。而且,用PC值和E-Offset计算EBot寄存器数据(77)。一旦计算,早期寄存器数据写至早期寄存器(78)。再一次,通过再使用系统中的可用ALU,并行计算早期寄存器数据,而无须增加不需要的硬件。
比较图2和图5说明当写ETop和EBot寄存器时的示例定时。步骤(74)和(75)出现于DEC阶段14。计算步骤(76)和(77)出现于AC阶段18。因此,写步骤(78)出现于EX1步骤22A。
一旦装入,用早期寄存器建立硬件环路。图6是说明连接流水线10的取指令(IF)单元13和解码器单元17的硬件环路单元7的一实施例的框图。在一实施例中,用早期寄存器检测指令流84中的环路。用一或更多环路指令装入环路硬件86。一旦装入,从环路硬件反复地发布环路指令。这样,如果检测到硬件环路,一或更多环路指令只由IF单元13取一次,并从硬件环路单元7重复发布。
图7是根据本发明的一实施例说明硬件的再使用的流程图。使用可用硬件,当接收环路建立指令时,并行计算第一环路条件和第二环路条件(102和104)。这些条件用,例如,第一和第二算术逻辑单元(ALU)来计算。而且,这些ALU驻留于不同的流水线中。或者,用驻留于其他可用流水线中的附加ALU计算附加环路条件。
一旦计算环路条件(102和104),它们写入推测寄存器(106)并用来建立硬件环路。另外,环路条件分别经第一流水线和第二流水线传播到一组体系结构寄存器(108和110)。如果需传播附加环路条件,使用附加流水线。一旦传播,环路条件写至一组体系结构寄存器(112)。
从环路建立指令计算环路条件需要使用一或更多ALU。而且,将计算的条件传播到一组体系结构寄存器对每个环路条件需要每个传送阶段的存储电路(例如,触发器)。通过有效实现可用系统资源,建立硬件环路不需要附加硬件环路ALU和触发器。
已描述本发明的各种实施例。例如,通常不用于硬件环路上下文中的硬件的再使用已针对在处理器内的实施进行了描述。所述处理器实现于多种系统包括通用计算系统、数字处理系统、膝上计算机、个人数字助理(PDA)和蜂窝电话。在本文中,上述硬件的再使用容易地得到使用以促进有效硬件环路。在这样的系统中,处理器耦合存储设备,诸如闪存设备或存储操作系统和其他软件应用的静态随机存取存储器(SRAM)。这些及其他实施例处于下列权利要求的范围内。

Claims (28)

1.一种方法,其特征在于,包括:
通过流水线处理器的第一流水线,取出对应于第一硬件环路的环路建立指令的特定事例的环路条件;
经流水线处理器的第一流水线,第一传播对应于环路建立指令的特定事例的所述第一硬件环路的所述环路条件的第一个;
将所述环路条件的第二个从流水线处理器的所述第一流水线传送到流水线处理器的第二流水线;
经流水线处理器的第二流水线,与所述第一传播并行地第二传播对应于环路建立指令的特定事例的所述第一硬件环路的所述环路条件的第二个。
2.如权利要求1所述的方法,其特征在于进一步包括:
在传播所述第一硬件环路的环路条件之前,将所述环路条件的至少一部分写入第一组寄存器,以及在所述传播之前利用所述寄存器开始根据所述第一硬件环路的所述环路条件的计算;以及
在传播所述环路条件之后,将所述第一硬件环路的所述环路条件的至少一部分写入第二组不同的寄存器,其中第二组不同的寄存器包括一个或多个体系结构流水线寄存器。
3.如权利要求1所述的方法,其特征在于还包括:
经第三流水线传播所述环路条件的第三个。
4.如权利要求2所述的方法,其特征在于进一步包括:
在将所述环路条件的至少一部分写入第一组寄存器之前,产生第一硬件环路的所述环路条件的至少一部分。
5.如权利要求4所述的方法,其特征在于,产生环路条件包括从环路建立指令的特定事例中的程序计数器相对数据计算环路条件中的至少一个。
6.一种方法,其特征在于,包括:
利用第一流水线中的第一算术逻辑单元,从环路建立指令的特定事例第一计算第一硬件环路的第一环路条件;
利用第二流水线中的第二算术逻辑单元,从环路建立指令的特定事例并行地第二计算所述第一硬件环路的第二环路条件;
使用所述第一计算和第二计算的结果,并行地传播所述第一、第二环路条件到与第一硬件环路的计算相关的硬件寄存器;
在所述传播之前,根据所述第一、第二环路条件,利用所述第一硬件环路开始计算数据。
7.如权利要求6所述的方法,其特征在于还包括将第一和第二环路条件写入第一组寄存器。
8.如权利要求6所述的方法,其特征在于还包括:
利用第三流水线中的第三算术逻辑单元,从环路建立指令的特定事例并行地计算硬件环路的第三环路条件;及
将第一、第二和第三环路条件写入第一组寄存器。
10.如权利要求7所述的方法,其特征在于,还包括经第一流水线将第一环路条件传播至第二组寄存器。
11.如权利要求10所述的方法,其特征在于,还包括经第二流水线将第二环路条件传播至第二组寄存器。
12.一种设备,其特征在于,包括:
包括第一算术逻辑单元的第一流水线及包括第二算术逻辑单元的第二流水线,及
耦合至第一、第二流水线的控制单元,所述控制单元自适应为:
从计算机程序,获取第一硬件环路的诸环路建立指令,所述环路建立指令与第一硬件环路的执行的特定事例相关;
将环路建立指令从第一流水线传送到第二流水线中的第二算术逻辑单元;
利用第一流水线中的第一算术逻辑单元,从所述环路建立指令之一第一计算第一硬件环路的执行的所述特定事例的第一环路条件;及
利用第二流水线中的第二算术逻辑单元,从传送的环路建立指令与所述第一计算并行地第二计算第一硬件环路的执行的所述特定事例的第二环路条件。
13.如权利要求12所述的设备,其特征在于,所述设备还包括耦合于控制单元的第一组寄存器,其中,控制单元进一步自适应为将硬件环路的执行的特定事例的第一和第二环路条件写入第一组寄存器。
14.如权利要求13所述的设备,其特征在于,所述设备还包括耦合于控制单元的第三流水线,第三流水线包括第三算术逻辑单元,控制单元进一步自适应为:用第三流水线中的第三算术逻辑单元,从环路建立指令并行地计算硬件环路的执行的特定事例的第三环路条件;及
将硬件环路的执行的特定事例的第一、第二和第三环路条件写入第一组寄存器。
15.如权利要求13所述的设备,其特征在于,所述设备还包括耦合控制单元的第二组寄存器,其中,控制单元进一步自适应为经第一流水线将环路条件中的至少一个传播至第二组寄存器。
16.如权利要求15所述的设备,其特征在于,控制单元进一步自适应为经第二流水线将环路条件中的至少一个传播至第二组寄存器。
17.如权利要求14所述的设备,其特征在于,所述设备还包括耦合控制单元的第二组寄存器,控制单元进一步自适应为:
经第一流水线将环路条件中的至少一个传播至第二组寄存器;
经第二流水线将环路条件中的至少一个传播至第二组寄存器;
经第三流水线将环路条件中的至少一个传播至第二组寄存器。
18.如权利要求13所述的设备,其特征在于,第一组寄存器是推测寄存器。
19.如权利要求12所述的设备,其特征在于,流水线中有至少一个是数据地址生成流水线。
20.如权利要求12所述的设备,其特征在于,流水线中有至少一个是系统流水线。
21.一种设备,包括一组寄存器、第一流水线和第二流水线;及
耦合所述一组寄存器、所述第一流水线和所述第二流水线的控制单元,所述控制单元自适应为:
经第一流水线将硬件环路的执行的特定事例的至少一环路条件第一传播至所述一组寄存器;
经第二流水线将硬件环路的执行的特定事例的至少一环路条件与所述第一传播并行地第二传播至所述一组寄存器;并
在完成所述第一和第二传播前,使用所述硬件环路开始计算数据。
22.如权利要求21所述的设备,其特征在于,所述寄存器组是第二组寄存器,所述设备还包括耦合于控制单元的第一组寄存器,其中,控制单元进一步自适应为:
在将环路条件中的至少一个传播至第二组寄存器前,将硬件环路的执行的特定事例的环路条件写入第一组寄存器。
23.如权利要求21所述的设备,其特征在于,第一、第二流水线中有至少一个是数据地址生成流水线。
24.如权利要求21所述的设备,其特征在于,第一、第二流水线中有至少一个是系统流水线。
25.一种系统,其特征在于,包括:
静态随机存取存储设备;
耦合静态随机存取存储设备的处理器,其中,处理器包括第一组寄存器、第一流水线、第二流水线和控制单元,控制单元自适应为:
将环路建立指令从第一流水线传送到第二流水线中的第二算术逻辑单元;
用第一流水线中的第一算术逻辑单元,从环路建立指令第一计算硬件环路的执行的特定事例的第一环路条件,
用第二流水线中的第二算术逻辑单元,从环路建立指令与第一计算并行地第二计算硬件环路的执行的特定事例的第二环路条件;及
将第一硬件环路的执行的特定事例的第一和第二环路条件写入第一组寄存器。
26.如权利要求25所述的系统,其特征在于,处理器包括第三流水线,控制单元进一步自适应为
用第三流水线中的第三算术逻辑单元,从环路建立指令并行地计算硬件环路的执行的特定事例的第三环路条件;及
将硬件环路的执行的特定事例的第一、第二和第三环路条件写入第一组寄存器。
27.一种系统,其特征在于,包括:
静态随机存取存储设备;
耦合静态随机存取存储设备的处理器,其中,处理器包括第一组寄存器、第二组寄存器、第一流水线、第二流水线和控制单元,控制单元自适应为:
将第一硬件环路的环路条件写入第一组寄存器;
经第一流水线将所述第一硬件环路的环路条件中的至少一个第一传播至第二组寄存器;
经第二流水线将所述第一硬件环路的环路条件中的至少一个与第一传播并行地第二传播至第二组寄存器;并
在完成所述第一和第二传播前,使用所述第一硬件环路开始计算数据。
28.如权利要求27所述的系统,其特征在于,所述处理器还包括第三流水线,所述控制单元进一步自适应为经第三流水线将环路条件中的至少一个并行地传播至第二组寄存器。
29.如权利要求27所述的系统,其特征在于,所述控制单元进一步自适应为:
用第一流水线中的第一算术逻辑单元,从环路建立指令计算第一硬件环路的第一环路条件;及
用第二流水线中的第二算术逻辑单元,从环路建立指令并行地计算第一硬件环路的第二环路条件。
CNB01820774XA 2000-12-20 2001-12-20 节省资源的硬件环路 Expired - Fee Related CN1257450C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/745,104 2000-12-20
US09/745,104 US7065636B2 (en) 2000-12-20 2000-12-20 Hardware loops and pipeline system using advanced generation of loop parameters

Publications (2)

Publication Number Publication Date
CN1481527A CN1481527A (zh) 2004-03-10
CN1257450C true CN1257450C (zh) 2006-05-24

Family

ID=24995280

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB01820774XA Expired - Fee Related CN1257450C (zh) 2000-12-20 2001-12-20 节省资源的硬件环路

Country Status (6)

Country Link
US (1) US7065636B2 (zh)
JP (1) JP3738253B2 (zh)
KR (1) KR100571326B1 (zh)
CN (1) CN1257450C (zh)
TW (1) TWI235330B (zh)
WO (1) WO2002050666A2 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1387257B1 (en) 2002-07-31 2017-08-23 Texas Instruments Inc. System to dispatch multiple instructions to available hardware resources
US20050102659A1 (en) * 2003-11-06 2005-05-12 Singh Ravi P. Methods and apparatus for setting up hardware loops in a deeply pipelined processor
US7406590B2 (en) * 2004-02-25 2008-07-29 Analog Devices, Inc. Methods and apparatus for early loop bottom detection in digital signal processors
US7558948B2 (en) * 2004-09-20 2009-07-07 International Business Machines Corporation Method for providing zero overhead looping using carry chain masking
JP2007207145A (ja) * 2006-02-06 2007-08-16 Nec Electronics Corp ループ制御回路及びループ制御方法
US8443351B2 (en) * 2006-02-23 2013-05-14 Microsoft Corporation Parallel loops in a workflow
TWI373210B (en) * 2007-06-07 2012-09-21 Asustek Comp Inc Conference presentation system
US8266414B2 (en) 2008-08-19 2012-09-11 Freescale Semiconductor, Inc. Method for executing an instruction loop and a device having instruction loop execution capabilities
WO2011065145A1 (ja) 2009-11-24 2011-06-03 日本電気株式会社 プロセッサ、プロセッサによるループ回数制御方法
GB2580316B (en) * 2018-12-27 2021-02-24 Graphcore Ltd Instruction cache in a multi-threaded processor

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0374419A3 (en) * 1988-12-21 1991-04-10 International Business Machines Corporation Method and apparatus for efficient loop constructs in hardware and microcode
JP2866421B2 (ja) 1990-01-19 1999-03-08 株式会社日立製作所 複数パス並列処理方法
US5303355A (en) * 1991-03-27 1994-04-12 Motorola, Inc. Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
US5421020A (en) 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions
US6116768A (en) * 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US5537606A (en) * 1995-01-31 1996-07-16 International Business Machines Corporation Scalar pipeline replication for parallel vector element processing
US6003128A (en) * 1997-05-01 1999-12-14 Advanced Micro Devices, Inc. Number of pipeline stages and loop length related counter differential based end-loop prediction
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6567895B2 (en) * 2000-05-31 2003-05-20 Texas Instruments Incorporated Loop cache memory and cache controller for pipelined microprocessors
US6766444B1 (en) 2000-11-02 2004-07-20 Intel Corporation Hardware loops

Also Published As

Publication number Publication date
KR100571326B1 (ko) 2006-04-17
KR20030066749A (ko) 2003-08-09
CN1481527A (zh) 2004-03-10
US7065636B2 (en) 2006-06-20
US20020078333A1 (en) 2002-06-20
TWI235330B (en) 2005-07-01
JP3738253B2 (ja) 2006-01-25
WO2002050666A3 (en) 2002-11-28
JP2004516571A (ja) 2004-06-03
WO2002050666A2 (en) 2002-06-27

Similar Documents

Publication Publication Date Title
US7873817B1 (en) High speed multi-threaded reduced instruction set computer (RISC) processor with hardware-implemented thread scheduler
JP4987882B2 (ja) スレッドに最適化されたマルチプロセッサアーキテクチャ
US7594102B2 (en) Method and apparatus for vector execution on a scalar machine
CN1230740C (zh) 数字信号处理装置
CN1013067B (zh) 紧配合的多处理器指令同步
EP1990718A1 (en) Method and apparatus for loading data and instructions into a computer
CN1257450C (zh) 节省资源的硬件环路
CN1255724C (zh) 终止处理器中非必要处理的条件指令的方法与系统
EP1853995B1 (en) Method and apparatus for managing a return stack
CN112667289A (zh) 一种cnn推理加速系统、加速方法及介质
US6898693B1 (en) Hardware loops
US6748523B1 (en) Hardware loops
US20050102659A1 (en) Methods and apparatus for setting up hardware loops in a deeply pipelined processor
JP7495030B2 (ja) プロセッサ、処理方法、および関連デバイス
US6766444B1 (en) Hardware loops
CN116670644A (zh) 通用计算核上的交错处理的方法
CN1410885A (zh) 基于操作队列复用的指令流水线系统和方法
JP3602801B2 (ja) メモリデータアクセス構造およびその方法
CN112506853A (zh) 零缓冲流水的可重构处理单元阵列及零缓冲流水方法
CN1269026C (zh) 寄存器移动操作
CN101615114B (zh) 完成两次乘法两次加法两次位移的微处理器实现方法
KR100639146B1 (ko) 카테시안 제어기를 갖는 데이터 처리 시스템
US7519794B2 (en) High performance architecture for a writeback stage
JP2007193433A (ja) 情報処理装置
Parthasarathy Performance measures of superscalar processor

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
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20081226

Address after: Massachusetts, USA

Patentee after: ANALOG DEVICES, Inc.

Address before: California, USA

Co-patentee before: ANALOG DEVICES, Inc.

Patentee before: INTEL Corp.

ASS Succession or assignment of patent right

Owner name: ANALOG DEVICES, INC.

Free format text: FORMER OWNER: INTEL CORP

Effective date: 20081226

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20060524

Termination date: 20201220