CN100380316C - 硬件环路 - Google Patents

硬件环路 Download PDF

Info

Publication number
CN100380316C
CN100380316C CNB018183999A CN01818399A CN100380316C CN 100380316 C CN100380316 C CN 100380316C CN B018183999 A CNB018183999 A CN B018183999A CN 01818399 A CN01818399 A CN 01818399A CN 100380316 C CN100380316 C CN 100380316C
Authority
CN
China
Prior art keywords
register
loop
prediction
group
instruction
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
CNB018183999A
Other languages
English (en)
Other versions
CN1473294A (zh
Inventor
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 CN1473294A publication Critical patent/CN1473294A/zh
Application granted granted Critical
Publication of CN100380316C publication Critical patent/CN100380316C/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/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/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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative 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 or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

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)
  • Power Sources (AREA)

Abstract

在一实施例中,一种可编程处理器配置为包括可支持硬件环路的预测寄存器。以此方式,系统可提高处理速度,而不用大大地增加功耗。环路的环路条件可加载于一组预测寄存器中,在环路条件写入于一组结构寄存器之前,可从预测寄存器检测这些条件。

Description

硬件环路
背景
本发明涉及在一种可编程处理器中实施的硬件环路。
在设计一种可编程处理器中,诸如一种数字信号处理(DSP)系统,两个竞争性设计目标是处理速度和功耗。通用处理器包括为了提高执行软件指令的速度所设计的多种硬件。然而,增添的硬件一般会增加处理器的功耗。
一种提高可编程处理器速度的技术是“硬件环路”,它是用于加快在环路结构中软件指令执行而设计的专门硬件。通过高速缓存在局部寄存器中的指令,硬件环路可减少用于执行软件环路的时种周期数,从而减少了多次从存贮器或指令高速缓冲存贮器取出相同指令的需要。
硬件环路引入几种挑战。这些挑战包括避免损失,例如,建立损失或转移损失。建立损失是与建立硬件回路有关的性能损失(一般增加是处理时间)。同样,转移损失是指与转移有关的性能损失(一般也是增加处理时间)。
附图说明
图1是说明根据本发明实施例的一种流水线的可编程处理器的例子的方框图。
图2是说明根据本发明实施例的可编程处理器的一个示例的执行流水线的方框图。
图3是说明根据本发明实施例加装了预测寄存器时示例时序的流程图。
图4是说明根据本发明实施例如何使用环路建立指令来确定预测寄存器数值的流程图。
图5是说明硬件环路单元实施例的电路方框图。
图6是说明根据本发明更新预测寄存器数值的模式的流程图。
图7是说明根据本发明实施例更新结构寄存器数值的方法的流程图。
图8是说明根据本发明实施例更新结构计数寄存数值的另一种方法的流程图。
图9是说明根据本发明实施例使用预测寄存器所实现的时序优点的流程图,
图10是说明根据本发明实施例调整预测计数值的有效方法的流程图。
图11是说明根据本发明实施例的电路中计数器的方框图。
图12是说明根据本发明实施例的混合型工作模式的流程图。
图13是说明根据本发明实施例的只有在第1个n-1执行级中具有计数器的一种混合型电路的方框图。
图14是说明根据本发明实施例的硬件环路单元的方框图。
图15是说明根据本发明实施例的方案的流程图。
图16是说明根据本发明实施例的方案的流程图。
图17是说明根据本发明实施例的方案的另一个流程图。
图18是说明根据本发明实施例另一个方案的图。
图19是说明另一个方案的流程图。
图20是说明根据本发明实施例的两个方案的流程图。
图21是说明根据本发明实施例用于检测零偏置环路工作模式的流程图。
图22是说明根据本发明实施例用于检测和处理单指令零偏置环路的工作模式的流程图。
图23A~图23C是说明根据本发明实施例一些相互连接的硬件环路单元的方框图。
图24是说明根据本发明实施例节电电路的方框图。
描述
图1是说明可编程处理器2的方框图,该可编程处理器可在不明显增加功耗的条件下支持有效的硬件环路。
为了能支持硬件环路,处理器2可支持环路建立指令,该指令通过对环路建立进入和退出条件来初始化硬件。进入和退出条件由环路条件定义为:顶部,底部和计数。顶部条件定义了环路第1指令(或顶部)。底部条件定义了环路最后指令(或底部)。以及计数条件定义了环路迭代次数。
硬件环路的进入出现在第1“顶部匹配”。当程序计数器(PC)指向环路的顶部指令时,就会产生顶部匹配。硬件环路的退出出现在最后的“底部匹配”。当PC指向环路的底部指令时,就会产生底部匹配。
通过对第1顶部匹配时计数的初始化和各底部匹配时的计数减量,硬件可保持在它遇到最后的底部匹配时的踪迹。以此方式,环路条件顶部,底部和计数可定义硬件环路的进入和退出条件。
处理器2包括执行流水线4和控制单元6。控制单元6可以控制在一个时钟周期中通过流水线的指令和/或数据的流程。如,在指令处理周期中,控制单元6可指示流水线的各部件对指令进行解码并正确地进行相应的操作,该操作可包括,例如结果回写至存贮器。
指令可加载至流水线4的第1级,并由随后的各级来处理。第1级与其他级可同时进行处理。数据在该系统的一个周期内在流水线4两级之间通过。指令的结果以快速连续的方式出现在流水线4的终端。
控制器6还包括下文所描述的硬件环路单元8,该单元可在不明显增加处理器2功耗的条件下,便于硬件环路的加速。
图2是说明举例流水线的方框图。流水线10具有有利于在单时钟周期内执行多指令的多级。在流水线10中,指令可在第1时钟周期内进入指令取出(IF)级12。随后,指令在后续时钟周期内继续进入流水线的下一级。在前一条指令退出后,另一条指令就会进入IF级12。这样,一般在后续时钟周期内另一条指令进入IF级12,然后,在后续在第1时钟周期内,继续进入流水线的下一级。同样,在后续的时钟周期内,其它指令可分别进入IF级12。流水线的级数定义了流水线可同时服务的指令的数量。
流水线的不同级可采用以下的方式工作。在IF级12中由读取单元13读取指令,并在DEC级14内对指令寄存器15中的指令进行解码。在AC级18中,数据地址发生器19可计算用于进行操作的任何存贮器地址。
在执行级(EX1-EXn)22和28中,执行单元23和29可进行指定的操作,例如,2个数相加或相乘。执行单元具有专用硬件来进行操作,包括,例如,一个或多个运算逻辑单元(ALU),浮点单元(FPU)和桶形移位器,然而,本发明范围不局限于这方面。多种数据都可以应用于执行单元,例如,数据地址发生器所产生的地址,从存贮器所检出的数据或从数据寄存器所检出的数据。在回写级(WB)30中,结果可写至流水线外部的存贮器位置或数据寄存器,或流水线中的数据寄存器,例如,结构寄存器32。流水线10的级可以包括一个或多个贮存数据的贮存电路,例如,触发器。
如上所述,处理器2可支持环路建立指令。通过把硬件环路的边界(如,顶部和底部)写至流水线中的结构寄存器32,环路建立指令可对硬件环路初始化。环路建立指令还可对结构寄存器32中的计数器初始化,从而指出环路待完成的次数。此外,环路建立指令可定义偏置,以指出在到达环路顶部之前跟随环路建立指令的指令数量。在硬件环路初始化后,硬件环路在流水线10中工作,直至环路的退出条件得到满足(如,底部匹配与计数等于零)。
一旦1条指令已提交,例如在WB级30结束时,一般加载结构寄存器32。因此,在经过从环路建立指令进入流水线10开始之后的数个时钟周期之前,贮存在结构寄存器32中的进入和退出条件是不能更新的。因为进口和退出条件在经过数个时钟周期之前是不会被更新的,对建立的硬件环路可能存在着一些制约。如,如果环路中第1指令在环路建立指令提交之前进入流水线10,是不可以将结构寄存器设置成环路的一部分来识别指令。又,随着流水线深度的增加时,此问题也会增加。
在另一实例中,通过在流水线中保持一组预测寄存器34、35和36,处理器2可克服这些制约。如图2所示,预测寄存器ETOP34和EBot35驻留在解码级,同时Ecnt 36驻留在AC级。
通过降低或避免环路建立时损失,采用一组预测寄存器34、35和36可提高处理器2的处理速度。如上所述,在环路建立指令进入流水线的时间和写入结构寄存器时间之间可能经过几个时钟周期。然而,在环路建立指令写至结构寄存器之前较长的时间内,加载预测寄存器。为此,采用预测寄存器可减小建立硬件环路所化的时间。
预测寄存器是用于预测或推测结构寄存器数值的推测寄存器。与结构寄存器不同,系统指令集的不支持此推测寄存器。因此,不用程序码来访问推测寄存器。为此,程序编制员就不能象他使用结构寄存器那样的方法将数据移入或移出推测寄存器。
有几种不同方法可用于加载预测寄存器。
如,初期寄存器可采用将常规的指令寄存器的执行结果移动至结构寄存器的方法进行简单加载。换言之,系统可指令结构寄存器加载另外一些寄存器的内容,并因此而更新,初期寄存器得以修正。还有另外一种加载寄存器的方法是从存贮器中“弹出”。换言之,系统从存贮器取出数据,并用此数据加载结构寄存器,和预测寄存器。
然而,常规寄存器移动或弹出的问题是,它们会引起环路建立损失。因为系统在“移动的”或“弹出的”数据有效写入之前,会暂停流水线,所以这些损失就会出现。为了避免这些损失,在结构寄存器取得写入之前,可用环路建立指令加载预测寄存器。
下面例子说明涉及示例性环路建立机器指令的语法:
LSETUP(PC相对顶部,PC相对底部)计数器=X
“PC相对顶部”定义为从当前指令至环路开始(“开始偏置”)的距离。“PC相对底部”定义为从当前指令至环路结束(结束偏置)的距离。此外,可变的计数器可定义为计数器寄存器并表示环路中迭代次数的环路计数。
图3是说明根据本发明实施例预测寄存器取得加载时的时序流程图。如上所述,环路建立指令可以计数值,顶部值和底部值形式来包含环路条件。总的说来,此三种值可定义硬件环路的进入和退出条件。
计数值代表环路作出的迭代数。一旦环路建立指令进入AC(38),计数值就写入ECnt寄存器(39)。通过从不同流水线所含有的数据寄存器中移动寄存器的数值,就可以完成初始化条件写入ECnt寄存器。在一种工作模式式中,ECnt寄存器可由DAG流水线中PREG寄存器(见图6)所含有的数据来写入。
顶部和底部值可指出那一条指令是环路顶部,那一条指令是环路底部。环路建立指令中顶部和底部值也可是程序计数器(PC)的相对值。因此,可利用AC级中计算(40)来取得分别将写入ETop34和EBot35的顶部和底部值。环路建立指令进入EX1(41)后,顶部和底部值可写入于ETop34和EBot寄存器(42)。
可加载ETop寄存器34,来指出环路第1条指令(或环路顶部)的位置。可加载EBot寄存器,来指出环路最后指令(或环路底部)的位置。ECnt寄存器36的加载可定义电路通过环路的次数。在实施例中,当电路经过环路时,ECnt36计数向下逆减。
图4是示出当环路建立指令由流水线10所收到和处理时硬件环路单元8的一种工作模式的流程图。按照一种格式,环路建立指令可定义包括“开始偏置(S-Offset)”和“结束偏置(E-Offset)”的几个建立变量。S-Offset定义了从环路建立指令至环路中第1指令的指令流中的距离。同样,E-Offset可定义从环路建立指令至环路的最后指令的指令流中的距离。
如,环路中第1指令是紧跟着环路建立指令的指令,则S-Offset应是环路建立指令的宽度。如果在指令流中,在环路建立指令和环路中第一指令之间有一条指令,则S-Offset应是环路建立指令和这条指令的宽度。同样,如果在环路建立指令和第一指令之间有2条指令,则S-Offset应是环路建立指令和这两条指令的宽度。
如图4所示,S-Offset和E-Offset一般由环路建立指令(44)来定义的。然而,此环路建立指令,定义相对于程序计数器(PC)的偏置。因此,PC值必须加以确定(45)。PC值和S-Offset然后可用来计算ETop寄存器数据(46)。又,PC值和S-Offset也可用来计算EBot寄存器数据(47)。一旦计算好后,初期寄存器数据就写入预测寄存器(48)。
把图4与图2比较,说明写于ETop和EBot寄存器时的示例性定时。步骤(44)和(45)出现于DEC级14。步骤(46)和(47)的计算出现在AC级18。因此,写入步骤(48)出现在EX1级22,然而,本发明范围并不局限于这方面。
一旦加载后,预测寄存器可用来建立硬件环路。图5是说明连接着流水线10的指令取出(IF)单元50和解码器单元52的硬件环路单元8实例的方框图。在该实施例中,预测寄存器可用来检测指令流57的环路。环路硬件54然后加载一个或多个环路指令。一旦加载后,环路指令可从环路硬件中一次又一次地发出。这样,如果预测寄存器检测一条指令环路,然后,一个或多个环路指令只由IF单元50可取出,而从硬件环路单元8中可重复发出。
采用预测寄存器会引入数个挑战。如,因为预测寄存器数据需要加以调整,所以由使用预测寄存器而引入的挑战就出现了。如果流水线必须服务1个事件,则流水线当前工作必须加以终止。如果在预测寄存器写入之后,但在其相应的结构寄存器写入之前,出现了终止,则此预测寄存器数据必须加以调整。换言之,因为预测寄存器写入早,就要求在环路已提交之前终止流水线并需要调整预测寄存器数据。
图6是有关预测寄存器调整的一种工作模式流程图。特别是,图6示出有关调整ETop,EBot,ECNt寄存器的时序。
如图6所示,预测寄存器可以写入(76)。在图6的实施例中,预测寄存器是专门的ETop,EBot和ECnt寄存器(如图2所示)。如果在结构寄存器写入之前(82),出现流水线的终止(80),则未退出的指令可从流水线中指出(83),通过写入它们相应的结构寄存器内的数据就可以调整预测寄存器(84)。
当处理一个接一个的硬件环路时,图示于图6的工作模式特别有用。例如,第2环路在其提交之前而终止,则第1环路仍需要执行流水线中保存着的指令。图6中调整技术提供了一种通过相应地调整预测寄存器来处理这种转移的方法。
图7说明了采用预测计数(ECnt)数据来更新结构寄存器数值的方法。数据可以上述任何方式写入ECnt寄存器(90)。然后把ECnt寄存器数据向下发送至流水线(92),以致于它可在WB级写入结构计数寄存器(93)。然后,在环路(94)的每次后续迭代中,ECnt寄存器数据递减(96),并再次发送至流水线(92)。这种过程连续下去,直到环路完成其最后迭代(98)。
图8说明了另一种更新结构计数寄存器的方法。如图8所示的工作模法只要把Ecnt数据发送一次,而不是在环路每次迭代后,把Ecnt数据向下发送至流水线。然后,在环路的后续迭代中,发送单个有效递减位,来调整结构计数寄存器。
在图8中,数据可以上述任何方式写入Ecnt寄存器(90),把ECnt寄存器数据向下送到流水线(92),使得在WB级期间将此数据可写入结构计数寄存器(93)。在环路的后续迭代中(94),送出单个有效递减位(102),使结构计数寄存器(104)递减。此过程继续下去,直到环路完成其最后迭代(98)。
图9说明了使用预测寄存器所实现的时序优点的流程图。如图9所示,环路进入/退出条件可加载至一组预测寄存器(120)。在环路建立指令提交之前(124),对这些预测进入/退出条件可加以检测(124)。
调整ECnt寄存器,会出现另外的挑战。在环路结束之前,在流水线终止的任何时候都可以进行ECnt寄存器调整。这是因为有效指令仍在流水线中,一旦这些有效指令提交,它们就可调整结构计数寄存器。
一种校正终止之后的ECnt寄存器数据的方法是允许把终止之前的指令进行提交,然后,用其相应的结构寄存器写入ECnt寄存器。然而,如果转移损失是小于它排出流水线所化的时间,则就要增添另外的损失。
图10说明了调整预测计数值的一种有效方法。如图所示,在环路建立指令进入AC级(180)之后,预测计数寄存器可写入(182)。这时,把ECnt数据向下发送至流水线(184)。如果终止出现,未退出的指令就排出(186)和ECnt寄存器用其相应的体系结构结构寄存器(187)的数据写入。
在底部匹配时(190),把有效递减位向下发送至流水线(192)。当引起发送有效位的指令退出各流水线(194)级时,有效递减位就从那个退出的流水线级(196)上的计数器除去。换言之,当有效位送出时(如,在192上),计数器将增递,随后,当引起待发送的有效递减位指令退出流水线级时,各别计数器递减(如,在196时)。
如果在流水线(198)上出现终止,可以通过终止级计数器中的有效递减位数来调整预测计数寄存器(188)。此调整值也可由往后驻留在流水线中的每个流水线级的各个计数器来表示,而不是在终止出现的级上来表示。图10中步骤可加以重复,直到所有环路指令退出流水线(200)。
ECnt寄存器可在每个底部匹配时(如,每次通过环路)递减。然而,只要把单个有效递减位向下发送到流水线,而不是在每次底部匹配后把整个ECnt的数值都发送到流水线。采用这种方式,可以在DSP系统中实现硬件减少。计数器组可监控有效递减位和引起这些待发送的位的有关指令。这样,计数器组在预测计数寄存器和其对应的结构寄存器之间可保持运行标记之差异。
图11是说明电路中计数器的方框图。如图所示,DEC后(210,211,212和213)流水线每级都保留着计数器。因此,单个有效递减位可向下传至流水线,以便考虑预测计数寄存器和其对应的结构寄存器之间的差异。计数器可连接多路复用器220的输入。如果有计数器,多路复用器220可确定使用那一个计数器,来调整预测计数寄存器36。
在另一实施例中,在某些级不会出现终止,或当某些指令驻留在某些级上,终止就受到制约。在此类实例中,通过在终止受到制约级中不采用计数器,来减少电路硬件。
计数器210,211,212和213的宽度可按需要加以改变。如,计数器210是1位计数器,而211是2位计数器。计数器212和213的最低深度取决于流水线中执行级n的数量。计数器210可以是1位计数器,因为它始终具有或者是1或者是0。例如,如果底部匹配指令正在AC,则其值是1。当指令离开AC,此计数器返回至零。
计数器211和下一个计数器(如,EX2级)可以是2位计数器,然而,本发明范围不局限于这方面。这是因为计数器211(如,EX1计数器)具有最大值为2,而EX2计数器具有最大值为3,EX3计数器具有最大值为4,因此,它可能需要3位数。同样,下面的3个计数器(如,EX4至EX6)可能是分别能表示5至7之间的值的3位计数器。
各级计数器的宽度通过考虑计数器需要保持的最大值来加以确定。这适合了环路是单条指令环路的情况。这样,计数器的深度可简单地对应于计数器和AC之间的级数。又,数量的多少也取决于终止是否出现在一特定的级上,所以,有些级不需要计数器。
另一个工作模式是调整预测计数寄存器的混合型方法。如果有关退出流水线的损失大于转移损失,则利用驻留在流水线的可选择级的计数器来调整预测计数寄存器。然而,如果退出损失小于或等于转移损失,则可允许提交流水线中的指令,这样,预测计数寄存器可由其对应的体系机构寄存器来加以调整。所选择的系统工作取决于流水线中终止出现的地方。有一种情况,如果终止出现在EX3级或WB级,则具有3个执行级的流水线将会退出;但是如果终止在EX3级之前出现,流水线可能不会退出,并且可调整预测计数器。
图12是说明混合型工作模式的流程图。如图所示,如果终止(230)出现在第nth级之前,计数器可调整预测计数值(288)。然而,如果终止出现在第nth级之后,可允许流水线中指令流经流水线并付诸实施(232)。此预测寄存器利用它们对应的结构寄存器来加以更新(233)。变量n可定义为使指令流经流水线所化去的时间小于或等于转移损失(234)的地方。
图13说明了在第1个n-1执行级中具有计数器的混合型电路。如果指令已进入第nth执行级,此电路可使流水线执行在终止之后的指令。然而,如果指令没有进入第nth执行级,此电路也可调整在终止之后的预测计数寄存器。又,变量n可定义为使指令流经流水线所化去的时间小于或等于转移损失的地方。换言之,变量n可更早地驻留在流水线中(如,在转移损失较大的地方)。
另外的环路硬件如,环路寄存器和环路缓冲器也有利于加速硬件环路。本文所述的环路硬件可提供几种优点。在一些实施例中,环路硬件隐藏着转移损失。此外,通过不需要在环路每次迭代时访问存贮器件如,高速缓存存贮器SRAM,环路硬件可节省功率。又,下述的环路硬件具有非常少的编程制约。再之,环路硬件可去除在程序存贮器中可能存在的对准制约。
再参照图1,示出的是具有执行流水线4和控制单元6的可编程处理器2。控制单元6还包括硬件环路单元8。
硬件环路单元8包括1组或多组串接的环路缓冲器。此外,硬件环路还包括一个或多个单条指令环路寄存器。环路缓冲器组合和/或环路寄存器组合可组合成环路硬件。此组合有利于加速硬件环路。
再次参照图5,示出的是连接着流水线10中指令取指单元50和解码器单元52的硬件环路单元8的一个实例的方框图。指令取指单元50提供数个输入之一至硬件环路单元8。硬件环路单元8由连接着环路硬件54的多路复用器56所组成。环路硬件54含有一组或数组环路缓冲器和/或一个或多个环路寄存器。又,环路缓冲器组可包括定义数量的串接的缓冲器。每组环路缓冲器都有一个相关的环路寄存器。
图14是说明硬件环路单元8的一个实施例的另一方框图。又,硬件环路单元8连接着指令取指单元50和解码器(未示出)。
硬件环路单元8包括连接着环路硬件的多路复用器260。环路硬件包括一组串接的环路缓冲器271,272,273和274。这些缓冲器可提供输入至另一个多路复用器280。接着,多路复用器260和280可提供输入至多路复用器290。多路复用器290的输出接至环路寄存器296,此寄存器又回接至多路复用器260的输入。硬件环路单元8的输出可提供输入至解码器。
多路复用器260具有多个输入。这些输入包括来自寄存器输入(如,仿真指令寄存器)和来自取指单元50的输入。此外,多路复用器260还有来自环路指令寄存器输入和来自一个或多个其他硬件环路单元的输入。
图14的例子说明了由一个4-深度组环路缓冲器和单条指令寄存器所组成的环路硬件。然而,在其他实例中也可使用任何数量的缓冲器和/或指令寄存器。
在示例性工作模式中,环路缓冲器由两种不同的方案来实施。在一种方案中,环路的每条指令适合于环路缓冲器。在另一种方案中,环路的每条指令不适合于环路缓冲器。接着来讨论各个方案。
图15图示说明了一种方案。如图所示,1个4-深度组环路缓冲器由3-指令环路(I2-I4)来加载。这样,环路缓冲器之一和VTop寄存器没有加载任何数据。指令I2-I4一次又一次地执行,直至满足环路的退出条件。如图所示,每当I4指令由环路缓冲器发送时,就检查退出条件。
图16是一种方案的流程图。如图所示,发送指令(300),将指令加载至一组环路缓冲器(302),和暂停存贮器件(304)。暂停存贮器对SDP系统来说可以省电。在把指令加载至此缓冲器组(302)后,这些指令可从缓冲器组中陆续发送(306)。指令可一次又一次发送,直至满足环路的退出条件(308)。
图17是说明一种方案的另一种流程图。如图所示,指令可发送(310),指令也可加载于一组环路缓冲器(314),存贮器件可加以暂停(316),对环路计数器进行初始化(312)。只要环路退出条件没有满足(318),环路计数得以递减(320)而指令由1组环路缓冲器(322)发送。存贮器件可加以暂停,直至环路计数达到定义数X(316)。又,X可如此定义即,当环路完成时,在环路后的下一条指令立即在取指单元中准备着。用这种方法可避免环路退出损失。
在另一实施例中,把环路计数初始化为零(312)。调整(302)将使环路计数递增量,而不是如图17所示的递减。图15-17将使其他的实施例变得更加明显。
图18说明了另一方案。如图所示,一个4-深度组环路缓冲器可由环路的4条指令(I2-I5)来加载。此外,VTop寄存器可由环路中下一条指令的地址来加载。VTop也可能是一个驻留在流水线中的一个地址寄存器(见图2,37)。在环路后续的迭代期间,指令I2-I5被被行,同时I6正在取出,在I5执行后,I6将立即准备执行。在环路迭代期间,检查退出条件。
图19是图18方案的一种流程图。如图所示,当第1子集指令发送时(332),第1子集指令可加载至一组缓冲器(330)。其次,第2子集指令的开始地址可加载至寄存器(334),而第2子集也将发送(336)。在环路以后续的迭代期间(迭代数将由退出条件所定义了(338)),第1子集指令将由缓冲器(340)发送,同时,将取出第2子集(342)。然后,将发送第2子集(344)。
按照图19的工作模式可实现几个优点。如,每当第一子集由一组缓冲器来发送时,如果存贮器件没有起动,就可省电。此外,在发送第一子集同时,取出第2子集,可把环路损失减少至最低限度。在实施例中,可以环路缓冲器具有至少相应于转移损失的深度。这样,有关第2子集取指的损失可能隐藏在指令第1子集发送的后面。这样,就提高DSP系统的速度。在另一实施例中,当省电作为一个更重要的设计特征时(如电池电源器件中所实施的电路),更深度的缓冲器将更有用。
第1子集指令是拟合于环路缓冲器组的指令数。第2子集指令是接在加载于缓冲器的这些指令之后的环路中下1条指令。另外是,第2子集也可能是接在加载于缓冲器中的指令之后的多条指令。
图20是示出上述方案的较一般的流程图。如图所示,第一子集指令加载于一组缓冲器(350),并发送(352)。如果环路所有指令拟合环路缓冲器(354),然后,可暂停存贮器(355),指令将连续从缓冲器组(356)发送,直至满足退出条件(358)。
如果环路所有指令不拟合环路缓冲器(354),然后,将发送第2子集指令(360),这些指令的开始地址加载于寄存器(362)。在环路的后续的迭代时(由退出条件(364)定义了),第1子集指令可从缓冲器组发送(366),同时从存贮器中(368)取出第2子集。然后,将发送第2子集(370)。
在图18的方案中,每当有底部匹配时,就要对VTop所指出的地址作为请求。采用这种方法,在取出第2子集指令同时,可调度指令的第1子集。
在调度环路中第1子集指令的时候,可能已访问高速缓冲存贮器/存贮器,并对准缓冲器掌握了第2子集指令。此对准缓冲器可保持多条指令(取决于各指令的宽度)。如果第2子集包括多条指令,则对准缓冲器中多条指令要与VTop寄存器有关指令的第2集的第一条指令对准。
工作还进一步包括有关VTop的指令进行调度的同时,要请求接在有关VTop的指令之后的下一条指令。如,在一种工作模式中,有关VTop的指令是1个64位指令。当调度此64位指令时,下一个64位指令(由存贮器中对准所定义了)将取出。通过重复这些程序,DSP系统可以快速和有效的方式调度指令。
采用硬件环路的以前技术的可编程处理器系统在工作代码方面要求许多制约。然而,最好是提供具有很少编程制约的硬件环路。在一个实施例中,说明根据本发明的一个系统只有一个编程的制约。这唯一的制约是系统在环路底部上不能有转移。
快速硬件环路会有环路缓冲器调用无效的情况。这些情况包括可以环路缓冲器由于条件转移而扩展的无效。这样,在一种工作模式中,如果可以环路中第1组n条指钟有一条条件转移,则一组环路缓冲器将会无效。变量n定义了此组环路缓冲器的深度。
另一种环路缓冲器要求无效的情况是,当收到事件时,同时环路缓冲正在加载。此外,紧跟着用于自修改代码的C-SYNC之后,环路缓冲器可以要求无效。这样,当上述二种情况任一种产生时,其他工作模式也涉及到使用路缓冲器无效。
零偏置环路会引入另外的挑战。偏置可以认为是环路建立指令和环路中第1或最后指令之间的距离。在以前技术的系统中,偏置是必要的,以利于系统中硬件环路的建立或考虑编程的异常状况。然而,简化零偏置环路是非常有利的,因为它可减少处理时间。
即使在采用预测寄存器和环路缓冲器的系统中,零偏置环路也会引起挑战。如,在上述系统中,在预测寄存器写入时(如,在EX1),零偏置环路中第1指令已在AC。这样,因为即使在ETop和Ebot得到写入之前,环路开始退出DEC,故电路可以有效地“错开”顶部匹配。
现已设计专用工作模式和电路配置,以检测和处理零偏置环路。在一个工作模式中,将环路建立指令中的开始偏置(S-Offset)与已知值作比较,以检测零偏置。用此方式,可有利于零偏置环路的预测检测。在一个特定的实例中,S-Offset与4作比较,其中4是指一个32位指令的4位数。一旦检测过后,零偏置环路甚至于在预测寄存器得到写入之前就可建立。
图21是示出检测零偏置环路的工作模式的流程图。如图所示,对环路建立指令进行解码(380)。S-Offset可与定义了的数相比较(382)(此定义了数对应于环路建立指令的宽度)。以此方式,即使在预测寄存器得到写入之前,就可检测零偏置环路。如果检测到零偏置环路(384),可发送环路中下一组n条指令,并加载至环路缓冲(386),如上所述。
图22是说明检测和处理单字节指令零偏置环路的特种情况的工作模式的流程图。如图所示,对环路建立指令进行解码(388)。如果检测到零偏置(390),并且“开始偏置”相等于“结束偏置”(392),之后马上可执行单条指令环路(394)。当S-Offset相等于环路建立指令的宽度时,就可检测零偏置。当S-Offset和E-ffset相同时,可检测单条指令环路。
专用硬件便于可尽可能快地建立和执行单条指令环路。再参照图14,在此特种情况下,可采用环路寄存器296。这样,通过用单条指令加载环路硬件(如,环路寄存器296)进行步骤(394),并重复发送硬件环路单元8外的指令,直到满足单条指令环路的退出条件为止。
通过在一个专用环路指令寄存器296中保持指令于解码,就可检测和进行单条指令环路(见图14)。对存贮器件不可访问,上游的每一项工作都将暂停,以节省电能。又,由于单条指令环路可在环路寄存器296外进行发送,所以指令取指单元50就不用取出下一条指令(如,从高速缓存存贮器)。这样,当单条指令环路完成执行时,下一条指令已在指令取指单元50中,从而形成零损失环路的退出。
归纳起来,零偏置硬件环路可分为三种情况。第一种情况是,通过环路指令寄存器马上发送零偏置单条指令环路不在解码。第2种情况是,零偏置n指令环路可马上加以检测,并全部加载至n深度的环路缓冲器组中。第3种情况是,零偏置环路可马上加以检测,并且将此环路的第一组n条指令加载至n深度的环路缓冲器组中。然后,下一条指令是VTop寄存器有关。
在实施例中,本文所述的环路硬件可在流水线中采用。这比在高速缓存存贮器中采用缓冲器要有利得多。
在一种工作模式中,环路指令可贮存在环路硬件中,这样,指令可与指令边界对准。这比把指令对准地址边界更为有利。一旦与环路硬件中指令边界对准,当它们接续地从环路硬件中发送时,就不必要对准指令。
为了把指令对准于指令边界,将一组指令按执行次序加载至环路硬件,并将下一组指令的地址贮存在地址寄存器。此外,第2组指令也按执行次序加载至存贮器件。按执行次序将指令加载至环路硬件可包括将n序列指令加载至n个缓冲器,其中n是整数。又,n序列指令可以是包括环路的第1组n条指令或环路的最后n指令的任何序列指令。
在另外一些实例中(如示于图23A-23C),可采用一些硬件环路单元。这些硬件环路单元的任一个输出可连接着一个或多个其他硬件环路单元的相应的输入。以此方法,第2硬件环路单元可通过第1硬件环路单元的输出予以加载。又,因为存贮器没有起动来加载第2硬件环路单元,所以,它可提供省电。
在一些情况中,多个环路单元可用来服务嵌套环路(或重合环路)。一个内部硬件环路单元可保持对准于一个外部硬件环路单元的一个或多条指令。又,通过从外部硬件环路单元发送对准的指令至内部硬件环路单元的输入,对内部硬件环路单元予以加载。
在还有些实例中,可采用多个独立的硬件环路单元。然而,如果在同一的DSP系统中采用2个或更多的独立的硬件环路单元,就要采取制约。如,当两个环路具有相同的底部指令时,此两环路之一要定义为外部环路。如果没有这种制约,电路会遇上两个底部匹配,并且不知道哪个是要递减量。
还有一种工作模式涉及硬件环路的功率管理。当硬件环路是工作时,ETop寄存器要与PC比较,来考虑各个顶部匹配。同样,EBot寄存器也要与PC比较,以考虑各个底部匹配。然而,当硬件环路被禁止时,比较电路中任何切换都只是浪费电。因此,当硬件环路禁止时,最好使底部匹配和顶部匹配比较电路不工作。当硬件环路禁止时,通过选择比较器的输入使比较器不工作,就可节省电。
图24显示了节电电路的示例性实例。ETop寄存器400和EBot寄存器402分别提供一些输入之一至多路复用器404和406。多路复用器404和406的输出将是至比较器408和410的输入。比较器408和410的另外输入可来自多路复用器412的输出。多路复用器412的输入可来自程序计数器414,以及来自控制单元的环路禁止信号416。多路复用器404,406和412可以如此配置即,当硬件环路不工作时,多路复用器412的输出不同于多路复用器404和406的输出。这样可保证在硬件环路禁止时,在比较器408和4410中没有出现切换。
在实施例中,同样的环路禁止信号416可发送至多路复用器404,406和412。然而,在多路复用器412收到信号之前,反相器(未示出)将使位数反相。这样,当环路禁止信号发送到电路时,多路复用器412的输出会不同于多路复用器404和406的输出。
图24也示出ECnt寄存器418递增的示例性电路。在每次环路通过时,多路复用器420会使ECnt寄存器递减。然而,如果调整是必需的话,调整信号(如,乱码计数器422)可相应地调整ECnt。一旦环路完成其最后迭代,比较器424发送信号425来表示。
图24显示了如何检测底部匹配和顶部匹配。当比较器410检测到程序计数器412和ETop寄存器具有相同的值时,就可发送顶部匹配信号428。当比较器408检测到程序计数器和Ebot寄存器具有相同的值时,就可发送底部匹配信号430。
最后,图24也显示了流水线所采用的VTop寄存器432。如本文所述,VTop可以是一个地址寄存器(未示出),它保持着接在加载于环路硬件的多条指令之后的下一条指令的地址。
本发明的多种实例都加以陈述。如,在处理器内应用的许多硬件环路技术也作了说明。在包括通用计算系统,数字式处理系统,膝上计算机,个人数字助理(PDA)和蜂窝状电话等各种系统中都可采用处理器。在本文中,上述的硬件环路可方便地用来提高处理速度,而用不着大大地增加功耗。在此类系统中,处理器可与存贮器件相耦合,例如,可存储操作系统和其他软件应用程序的Flash存储器和静态存储器(SRAM)。这些和其他实例都在下述权利要求书的范围内。

Claims (26)

1.一种方法包括:
把限定某一环路的进入和退出条件的环路条件从某一流水线中的寄存器加载至一组推测寄存器,和
在所述加载所述环路条件以后,根据所述环路条件,执行处理器中的环路。
2.如权利要求1所述的方法,进一步包括:在环路条件写入至一组结构寄存器之前,检测寄存器环路条件。
3.如权利要求2所述的方法,进一步包括:使用加载于推测寄存器的环路条件来建立硬件环路。
4.如权利要求2所述的方法,进一步包括:根据推测寄存器所含有的信息可及早地终止环路。
5.如权利要求2所述的方法,其特征在于,处理器包括多级执行流水线,此方法进一步包括:接在流水线中指令终止之后,调整至少一个推测寄存器的数值。
6.一种方法,它包含:
将某一环路的环路条件加载到一组推测寄存器,
根据所述环路条件,在包括多级执行流水线的处理器中执行一条环路,
在将所述环路条件写入一组结构寄存器之前,检测来自所述推测寄存器的环路条件,
在终止所述流水线中的某一指令以后,调节所述推测寄存器中至少一个的值,并且
其中,此组推测寄存器包括一个预测顶部寄存器,而所述一组结构寄存器包括一个结构顶部寄存器,并且此方法进一步包括:接在流水线中至少一条指令终止之后,利用结构顶部寄存器所含有的数据来调整预测顶部寄存器。
7.一种方法,它包含:
将某一环路的环路条件加载到一组推测寄存器,
根据所述环路条件,在某一处理器中执行一条环路,其中所述处理器包括多级执行流水线,
在将所述环路条件写入一组结构寄存器之前,检测来自所述推测寄存器的环路条件,
在终止所述流水线中的某一指令以后,调节所述推测寄存器中至少一个的值,并且
其中,此组推测寄存器包括一个预测底部寄存器和此组结构寄存器包括一个结构底部寄存器,此方法进一步包括:接在流水线中至少一条指令终止之后,利用结构底部寄存器所含有的数据来调整预测底部寄存器。
8.如权利要求5所述的方法,其特征在于,此组推测寄存器包括一个预测计数寄存器,此方法进一步包括:接在流水线中至少一条指令终止之后,调整预测计数寄存器。
9.一种装置包括:
一个控制单元,
执行流水线,
一组预测寄存器;和
一组结构寄存器,各结构寄存器分别与一个预测寄存器有关,
其中,所述控制单元用来将所述环路条件从所述执行流水线加载到一组预测寄存器(early register)内,以及用于采用加载到所述一组预测寄存器内的环路条件来设置硬件环路。
10.如权利要求9所述的装置,其特征在于,在环路条件写入至一组结构寄存器之前,控制单元检测此组预测寄存器中的环路条件。
11.如权利要求9所述的装置,其特征在于,预测寄存器包括指着环路的一个顶部指令的预测顶部寄存器。
12.如权利要求9所述的装置,其特征在于,预测寄存器包括指着环路的一个底部指令的预测底部寄存器。
13.如权利要求9所述的装置,其特征在于,预测寄存器包括定义环路迭代数的预测计数寄存器。
14.如权利要求9所述的装置,其特征在于,根据此组预测寄存器所含有的信息,采用控制单元及早地终止环路。
15.如权利要求9所述的装置,其特征在于,采用控制单元来调整接在终止之后的至少一个预测寄存器的值。
16.一种装置,它包含:
控制单元,
一组预测寄存器,
一组结构寄存器,每一结构寄存器分别与一预测寄存器相关;
其中,所述控制单元用来将某一环路的环路条件加载到一组预测寄存器内;
其中,所述控制单元用来在某一终止以后,调节至少一个预测寄存器的值,并且
所述装置包括执行流水线,其中,此组预测寄存器包括一个预测顶部寄存器和此组结构寄存器包括一个结构顶部寄存器,使控制单元利用结构顶部寄存器所含有的数据,来调整接在流水线中至少一条指令终止之后的预测顶部寄存器。
17.一种装置,它包含:
控制单元,
一组预测寄存器,
一组结构寄存器,每一结构寄存器分别与一预测寄存器相关;
其中,所述控制单元用来将某一环路的环路条件加载到一组预测寄存器内;
其中,所述控制单元用来在某一终止以后,调节至少一个预测寄存器的值,并且
所述装置包括一条执行流水线,其中,此组预测寄存器包括一个预测底部寄存器和此组结构寄存器包括一个结构底部寄存器,使控制单元利用结构底部寄存器所含有的数据,来调整接在流水线中至少一条指令终止之后的预测底部寄存器。
18.如权利要求15所述的装置,此装置包括一条执行流水线,其特征在于,此组预测寄存器包括一个预测计数寄存器,采用控制单元来调整接在流水线中至少一条指令终止之后的预测计数寄存器。
19.一种系统包含:
一个SRAM(静态随机存贮器)存贮器件;
一组预测寄存器;和
耦合至存贮器的一个处理器,其中,此处理器包括一条执行流水线和一个用于将环路的环路条件从所述执行流水线加载至此组预测寄存器的控制单元。
20.如权利要求19所述的系统,进一步包括一组结构寄存器,其特征在于,使控制单元用于在环路条件写入至此组结构寄存器之前,从预测寄存器中检测环路条件。
21.如权利要求19所述的系统,其特征在于,控制单元用于接在流水线中至少一条指令终止之后,调整至少一个预测寄存器的值。
22.如权利要求19所述的系统,其特征在于,此组预测寄存器包括一个指着环路顶部指令的预测顶部寄存器。
23.如权利要求19所述的系统,其特征在于,此组预测寄存器包括一个指着环路的最后指令的预测底部寄存器。
24.如权利要求19所述的系统,其特征在于此组预测寄存器包括一个定义环路迭代数的预测计数寄存器。
25.一种方法包含:
从流水线将某一环路的环路条件加载到第1组寄存器内;和
在指令付诸流水线之前,从第1组寄存器中检测环路条件和环路条件已写入至第2组寄存器。
26.如权利要求25所述的方法,此方法进一步包括接在流水线中一条指令终止之后,调整第一组寄存器中至少一个寄存器的值。
CNB018183999A 2000-11-02 2001-10-31 硬件环路 Expired - Fee Related CN100380316C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/705,070 US6766444B1 (en) 2000-11-02 2000-11-02 Hardware loops
US09/705,070 2000-11-02

Publications (2)

Publication Number Publication Date
CN1473294A CN1473294A (zh) 2004-02-04
CN100380316C true CN100380316C (zh) 2008-04-09

Family

ID=24831911

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018183999A Expired - Fee Related CN100380316C (zh) 2000-11-02 2001-10-31 硬件环路

Country Status (6)

Country Link
US (1) US6766444B1 (zh)
JP (1) JP3739357B2 (zh)
KR (1) KR100536018B1 (zh)
CN (1) CN100380316C (zh)
TW (1) TWI227854B (zh)
WO (1) WO2002037270A2 (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002149402A (ja) * 2000-11-14 2002-05-24 Pacific Design Kk データ処理装置およびその制御方法
US7065636B2 (en) 2000-12-20 2006-06-20 Intel Corporation Hardware loops and pipeline system using advanced generation of loop parameters
US20050102659A1 (en) * 2003-11-06 2005-05-12 Singh Ravi P. Methods and apparatus for setting up hardware loops in a deeply pipelined processor
US7272704B1 (en) * 2004-05-13 2007-09-18 Verisilicon Holdings (Cayman Islands) Co. Ltd. Hardware looping mechanism and method for efficient execution of discontinuity instructions
CN101065725A (zh) * 2004-11-25 2007-10-31 松下电器产业株式会社 命令供给装置
US9052910B2 (en) * 2007-10-25 2015-06-09 International Business Machines Corporation Efficiency of short loop instruction fetch
US9772851B2 (en) * 2007-10-25 2017-09-26 International Business Machines Corporation Retrieving instructions of a single branch, backwards short loop from a local loop buffer or virtual loop buffer
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
WO2013069551A1 (ja) 2011-11-09 2013-05-16 日本電気株式会社 デジタル信号プロセッサ、プログラム制御方法、および制御プログラム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US530355A (en) * 1894-12-04 Neck-ybke attachment
US5303355A (en) * 1991-03-27 1994-04-12 Motorola, Inc. Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
EP0605872A1 (en) * 1993-01-08 1994-07-13 International Business Machines Corporation Method and system for supporting speculative execution of instructions
EP0747809A1 (en) * 1995-06-07 1996-12-11 International Business Machines Corporation A method and system for processing multiple branch instructions that write to count and/or link registers

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6116768A (en) 1993-11-30 2000-09-12 Texas Instruments Incorporated Three input arithmetic logic unit with barrel rotator
US6058473A (en) * 1993-11-30 2000-05-02 Texas Instruments Incorporated Memory store from a register pair conditional upon a selected status bit
US5724565A (en) * 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5710913A (en) * 1995-12-29 1998-01-20 Atmel Corporation Method and apparatus for executing nested loops in a digital signal processor
US6571385B1 (en) * 1999-03-22 2003-05-27 Intel Corporation Early exit transformations for software pipelining
US6598155B1 (en) * 2000-01-31 2003-07-22 Intel Corporation Method and apparatus for loop buffering digital signal processing instructions

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US530355A (en) * 1894-12-04 Neck-ybke attachment
US5303355A (en) * 1991-03-27 1994-04-12 Motorola, Inc. Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
EP0605872A1 (en) * 1993-01-08 1994-07-13 International Business Machines Corporation Method and system for supporting speculative execution of instructions
EP0747809A1 (en) * 1995-06-07 1996-12-11 International Business Machines Corporation A method and system for processing multiple branch instructions that write to count and/or link registers

Also Published As

Publication number Publication date
KR100536018B1 (ko) 2005-12-14
WO2002037270A2 (en) 2002-05-10
TWI227854B (en) 2005-02-11
KR20030081324A (ko) 2003-10-17
CN1473294A (zh) 2004-02-04
US6766444B1 (en) 2004-07-20
JP2004513426A (ja) 2004-04-30
JP3739357B2 (ja) 2006-01-25
WO2002037270A3 (en) 2003-04-17

Similar Documents

Publication Publication Date Title
US8935515B2 (en) Method and apparatus for vector execution on a scalar machine
KR101334863B1 (ko) 루프 제어 시스템 및 방법
CN103150146B (zh) 基于可扩展处理器架构的专用指令集处理器及其实现方法
CN109918130A (zh) 一种具有快速数据旁路结构的四级流水线risc-v处理器
CN100573444C (zh) 用于臆测分支预测优化的系统及其方法
CN100380316C (zh) 硬件环路
CN104424158A (zh) 基于通用单元的高性能处理器系统和方法
JP2012103959A (ja) ベクトル処理回路、命令発行制御方法、及びプロセッサシステム
CN101021778A (zh) 超长指令字与单指令流多数据流融合的计算群结构
US5634025A (en) Method and system for efficiently fetching variable-width instructions in a data processing system having multiple prefetch units
CN101034345A (zh) 流处理器中数据流、指令流的控制方法
CN101702144B (zh) 一种dma控制器的控制装置及控制方法
US20050102659A1 (en) Methods and apparatus for setting up hardware loops in a deeply pipelined processor
CN100416495C (zh) 硬件环路
US6898693B1 (en) Hardware loops
CN1257450C (zh) 节省资源的硬件环路
CN101452394A (zh) 编译方法和编译器
CN100525133C (zh) 排序装置
CN100583042C (zh) 针对程序中循环的编译方法和编译设备
CN101581961A (zh) 一种cpu和降低cpu功耗的方法
CN116048627A (zh) 指令缓冲方法、装置、处理器、电子设备及可读存储介质
US8631173B2 (en) Semiconductor device
CN101923386A (zh) 一种降低cpu功耗的方法、装置及一种低功耗cpu
CN111782273B (zh) 一种提高重复程序执行性能的软硬件协同缓存装置
CN1481530A (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
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

Granted publication date: 20080409

Termination date: 20201031

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