Nothing Special   »   [go: up one dir, main page]

CN1240279A - 具有分支控制的数据处理系统及其方法 - Google Patents

具有分支控制的数据处理系统及其方法 Download PDF

Info

Publication number
CN1240279A
CN1240279A CN99108648A CN99108648A CN1240279A CN 1240279 A CN1240279 A CN 1240279A CN 99108648 A CN99108648 A CN 99108648A CN 99108648 A CN99108648 A CN 99108648A CN 1240279 A CN1240279 A CN 1240279A
Authority
CN
China
Prior art keywords
instruction
address
branch
input
output
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
Application number
CN99108648A
Other languages
English (en)
Other versions
CN1189816C (zh
Inventor
李利煌
威廉姆·C·默耶
杰夫特·W·斯科特
约翰·H·阿兰德斯
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.)
NXP USA Inc
Original Assignee
Motorola Inc
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 Motorola Inc filed Critical Motorola Inc
Publication of CN1240279A publication Critical patent/CN1240279A/zh
Application granted granted Critical
Publication of CN1189816C publication Critical patent/CN1189816C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative addressing
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

流水线数据处理系统(10)包括一个地址生成单元(30)。地址生成单元(30)包括一个目标地址寄存器(58),一个短反向分支(SBB)地址寄存器(60)以及一个计数寄存器(70),从而使小循环的执行更有效并且允许分支折叠处理而无需获取分支指令。

Description

具有分支控制的数据处理系统及其方法
本发明一般涉及数据处理,更确切地说,涉及具有优化分支控制的数据处理系统及其方法。
由于广泛使用便携式和手持应用装置,所以低功率设计技术在微处理器和微控制器设计中越来越重要。以上应用装置需要长电池寿命和低系统成本。便携式应用装置通常在两种操作模式之间交替运行:(i)猝发模式,在该模式中执行有效计算;和(ii)断电模式(即睡眠模式),在该模式中系统睡眠等待出现新的计算事件。如果子系统(包括微处理器)仅仅消耗整个系统功耗的一小部分,则低成本和高性能就是子系统的设计目标。
长期以来,分支被认为是降低流水线处理机性能的主要因素。这是由于分支中断了连续指令流这一事实。此外,通常仅能将分支深深转化为执行流水线。广泛采用诸如分支预测和推测执行之类的技术以降低分支的不利影响。不幸的是,这些技术通常需要大量硬件实现。其他的可选低成本方法需要改进有关分支的性能。
用于优化微处理器获取的分支路径的现有方法一直在使用。一种优化执行分支指令的现有方法叫作软件循环回绕。在编译时,当已知某个特定循环将执行许多次时,产生软件循环回绕。软件循环回绕复制循环内的代码,循环的迭代次数下降的倍数等于该代码的复制次数。例如,如果在编译时已知某个特定软件循环将执行100次,则可以放置两份回绕循环内包含的代码,并且仅需执行实际分支50次。然而,尽管这种技术能够节省每次迭代的周期,但是创建了更大的静态程序长度。
另一种众所周知的优化分支处理的现有技术使用专用循环指令。将现有技术专用循环指令设计为在单一指令内出现分支和递减(或递增)循环计数。因此,每次迭代节省一个时钟周期。然而,每条专用循环指令需要唯一指令操作码。因此,尽管使用专用分支指令能够在每次迭代中节省一个时钟周期,但其实现是以较大指令集为代价的。
另一种现有技术方法合并循环模式与专用循环指令。循环模式为一条指令,该指令表示上一条指令需要重复指定次数。这种实现避免获取需要顺序执行许多次的指令。然而,这种技术需要存在专用循环指令,并且循环体只能包含一条指令。
因此,需要一种更通用的分支处理方法,该方法能够将执行程序循环所需的时钟周期数降到最低。
图1表示短反向分支(SBB)指令的指令格式。
图2表示短正向分支(SFB)指令的指令格式。
图3表示循环尾含有一条SBB的程序循环。
图4以框图的形式表示根据本发明的数据处理系统。
图5以框图的形式表示图4的CPU 12。
图6以部分框图和部分逻辑图的形式更详细地表示图5的地址生成单元30。
图7以部分框图和部分逻辑图的形式更详细地表示图5的分支控制34。
图8表示用于描述分支控制34的状态机的操作的部分状态图。
图9表示根据本实施方式的图4的数据处理系统的各种信号的定时图。
图10表示含有一个SBB和一个SFB的程序循环。
图11以部分框图和部分逻辑图的形式表示另一实施方式的图5的分支控制34。
图12表示根据本实施方式采用另一实施方式的图4的数据处理系统的各种信号的定时图。
图1表示短反向分支指令(记为SBB)的指令格式。图2表示短正向分支指令(记为SFB)的指令格式。SBB和SFB为条件或无条件PC相关分支指令。可以将不同分支指令(具有不同操作码)统称为SBB指令集或SFB指令集。
可以将以上指令划分为两个字段:(i)操作码,操作码确定分支的类型;和(ii)分支位移-为形成分支目标地址而添加到程序计数器(PC)的位移。对于SBB指令集而言,分支位移具有前导1,前导1表示该指令具有一个负的分支位移,当添加到PC中时,产生反向分支目标。同样,对于SFB指令集而言,分支位移具有前导0,前导0表示该指令具有一个正的分支位移。
可以将分支位移字段进一步划分为两个字段:(i)高位移字段,记为UD;和(ii)低位移字段,记为LD。对于SBB而言,高位移字段全为1,对于SFB而言,高位移字段全为0。在某个实施方式中,SBB的LD字段与SFB的LD字段的宽度相同,即同为w位宽。根据定义,一条SBB具有有限的反向分支距离,用2w表示,其中w为LD字段的宽度。同样,一条SFB具有有限的正向分支距离,用2w表示。
图3表示循环尾含有一条SBB指令的程序循环。SBB指令位于地址ASBB。SBB指令之后的指令表示位于地址AFT的失败指令(IFT)。同样,指令IFT之后的指令为位于地址AFT+1的指令IFT+1
图4以框图的形式表示根据本发明之某一实施方式的数据处理器10。在某个实施方式中,数据处理器10包括一个中央处理机(CPU)12,存储器14,总线接口组件16,以及其他组件18,这些部件利用总线20相互双向连接。可以利用外部总线26将总线接口组件16外连接到数据处理机10。利用一个或多个集成电路终端28可选地将其他组件18外连接到数据处理机10。利用一个或多个集成电路终端24可选地将存储器14外连接到数据处理机10。利用一个或多个集成电路终端22可选地将中央处理机12外连接到数据处理机10。
仍然参照图4,本发明的其他实施方式可以使用任意结构类型的数据处理机10。此外,数据处理机10可以完成各种各样的操作。例如,数据处理机10可以使用RISC(精简指令集计算机)体系结构,可以使用Harvard体系结构,可以为向量处理机,可以为SIMD(单指令多数据流)处理机,可以进行浮点算术运算,可以进行数字信号处理计算等。
图5以框图的形式表示根据本发明的CPU 12。CPU 12包括地址生成单元30,控制单元32,指令寄存器(IR)36,多路复用器38,失败指令寄存器(IRFT)40,指令译码器42,执行单元44,数据输入缓冲器46和数据输出缓冲器48。控制单元32包括分支控制34。
将存储器14连接到地址总线以接收标记为“地址”的地址,并将存储器14连接到数据总线以接收和提供标记为“数据”的数据。存储器14可以为任意类型的常规存储器,包括诸如静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM)之类的易失性存储器,或诸如电可编程只读存储器(EPROM)和闪烁存储器之类的非易失性存储器。此外,存储器14可以与CPU 12在同一块集成电路上或者位于CPU 12的外部。地址生成单元30具有第一众多输入终端、第二众多输入终端和众多输出终端,第一输入终端从执行单元44接收标记为“操作数地址”的操作数地址,第二输入终端从指令寄存器36接收分支位移字段,输出终端向存储器14提供地址信号“地址”。控制单元32利用标记为“控制”的控制信号控制地址生成单元和存储器14。
多路复用器38具有第一众多输入终端、第二众多输入终端和众多输出终端,第一输入终端从数据输入缓冲器46接收指令,第二输入终端与失败指令寄存器(IRFT)40的输出终端相连,输出终端提供来自数据输入缓冲器46中的指令或寄存器40中存储的失败指令。分支控制34提供控制信号,以便控制指令寄存器36、多路复用器38以及失败指令寄存器40的操作。
数据输入缓冲器46从存储器14接收数据,并且向执行单元44提供缓冲数据和/或向多路复用器38的第一众多输入终端提供指令。数据输出缓冲器48从执行单元44接收输出数据,并提供将要写入存储器14中的数据。利用控制单元32提供的控制信号控制数据输入缓冲器46和数据输出缓冲器48。
将指令译码器42连接到指令寄存器36以便接收指令。将指令译码器42连接到执行单元44。将执行单元44连接到数据输入缓冲器46以便从存储器14接收数据。同样,将执行单元44连接到数据输出缓冲器48以便向存储器14提供数据。执行单元44选择执行经指令译码器42译码的指令,并将结果提供给数据输出缓冲器48或地址生成单元30。例如,执行单元44可以包括算术与逻辑部件(ALU)。
将控制单元32连接到指令寄存器36以便接收指令,并且作为响应,提供标记为“控制”的控制信号以便控制地址生成单元30和存储器14的操作。将控制单元32连接到指令译码器42和执行单元44。执行单元44向控制单元32提供条件代码信息。
数据处理系统10以4级流水线的形式执行指令。4级流水线包括取阶段、译码阶段、执行阶段和回写阶段。在取指令阶段中,从存储器(例如从存储器14)中检索一条指令。随后在指令译码器42中对该指令进行译码。经过译码的指令被提供给执行单元44并控制执行单元44的操作。然后执行单元44经过数据输出缓冲器48将指令的执行结果回写到存储器14中。
图6以部分框图和部分逻辑图的形式更详细地表示图5的地址生成单元30。地址生成单元30包括地址多路复用器50,寄存器52,程序计数器54,目标地址寄存器58,加法器56,SBB地址寄存器60,多路复用器62,多路复用器64,加法器66和多路复用器68。地址多路复用器50具有第一众多输入终端,与加法器66的输出终端相连的第二众多输入终端,与多路复用器68的输出终端相连的第三众多输入终端以及与寄存器52的输入终端相连的众多输出终端,其中第一输入终端用于接收标记为“操作数地址”的地址。寄存器52具有众多输出终端,以便向程序计数器54的输入终端和寄存器58的输入终端提供标记为“地址”的地址信号。程序计数器54具有与加法器56的第一众多输入终端以及多路复用器62的第一众多输入终端相连的众多输出终端。加法器56将程序计数器54的输出加“2”,并向多路复用器68的第二众多输入终端以及寄存器60的输入终端提供输出终端上的结果。由于指令宽度为两个字节,所以将“2”加到程序计数器54中。请注意,尽管在所示实施方式中,将“2”加到程序计数器值中,但是具有不同指令宽度的其他实施方式将使用不同的数值。将标记为“ASBB”的寄存器60的输出终端连接到多路复用器62的第二众多输入终端。多路复用器64具有第一众多输入终端和与指令寄存器36相连的第二众多输入终端,第一输入终端接收“4”作为输入,第二输入终端接收指令的分支位移字段。将“4”加到ASBB中从而可以向存储器14提供AFT+1。 AFT+1是指令IFT+1的地址,指令IFT+1是SBB之后的两条指令。在其他实施方式中,可以使用其他方法生成AFT+1。多路复用器64具有与加法器66的第二众多输入终端相连的众多输出终端。将标记为“分支地址”的加法器66的输出终端连接到地址多路复用器50的输入终端。
图7以部分框图和部分逻辑图的形式更详细地表示图5的分支控制34。分支控制34包括一个状态机(在该图中未示出),LD寄存器70,多路复用器72,计数寄存器74,加法器76和比较器78。LD寄存器70具有众多输入终端以及与多路复用器72的第一众多输入终端相连的众多输出终端,输入终端接收来自指令寄存器36的指令的分支位移字段的较低位移位。多路复用器72还具有第二众多输入终端以及与加法器76的输出相连的第三众多输入终端,其中第二输入终端从指令寄存器36接收较低位移位。将标记为“计数”的多路复用器72的众多输出终端连接到计数寄存器74的输入终端。将计数寄存器74的输出终端连接到加法器76的第一众多输入终端。加法器76具有第二众多输入终端用于接收“1”。从控制单元32控制寄存器70、74以及多路复用器72。比较器78具有与多路复用器72的输出相连的第一众多输入终端,用于接收“-1”的第二众多输入终端以及一个输出,其中输出用于向控制单元32提供标记为“采取预测”的循环尾信号。在其他实施方式中,可以使用其他方法,例如使用地址比较方法以生成采取预测信号。
图8表示用于描述图5的分支控制34的状态机的操作的简化状态图。分支控制34的状态机具有两种操作状态。第一状态,即空闲状态40,表示未检测到短反向分支(SBB)。一旦检测到SBB,并且获取了SBB,分支控制34的状态机就退出空闲状态40并进入活动状态42。在某个实施方式中,当处于活动状态时,如果检测到另一SBB并获取了该SBB,则状态机将返回到空闲状态。在另一实施方式中,当处于活动状态时,如果检测到另一SBB并获取了该SBB,则状态机将保持活动状态。此时,将利用新遇到的SBB的LD字段重新加载图7的LD寄存器70和计数。当满足以下两条件之一时,即满足(1)没有取得所检测到的SBB指令,其中SBB指令触发从空闲状态转换到活动状态;或(2)出现流程改变并且该改变并不是由触发SBB引起时,状态机将返回到空闲状态。条件(1)对应于以下情况,即循环经过循环尾的SBB顺序退出。条件(2)对应于以下情况,某一目的地可能在也可能不在该循环体内,而循环体内有流程改变。
图9表示根据本发明的图4的数据处理系统的各种信号的定时图。现在将参照图1至图9,说明数据处理系统10的操作。
通常数据处理系统10执行从存储器14中顺序检索的指令,直至遇到诸如分支指令之类的改变流程指令。图9表示在连续时钟周期中生成地址A0到A2。同时,在连续时钟周期中检索与各生成地址相对应的数据,例如,在周期2从存储器中检索与地址A0相对应的指令I0,在生成地址A1之后的周期3中检索指令I1,等等。在时钟周期4,向存储器14发出与SBB指令相对应的地址,即ASBB。在时钟周期6检测SBB指令。作为对检测到的SBB指令的响应,将目标地址,即地址A0加载到寄存器58中。同时,将失败指令IFT加载到IRFT寄存器40中。IFT指令是静态程序顺序中紧跟SBB指令的指令。
正如图9所示,在向存储器14提供了各个地址以便检索指令的半个时钟周期后,在程序计数器54中锁存该地址。请注意,时钟周期3到时钟周期7定义第一次迭代。在译码阶段进行SBB检测。当发现需要在稍后的周期中获取SBB时,控制单元32的状态机就从空闲状态转换到活动状态。同时,当检测到SBB时,就从指令寄存器36中将低位移字段LD加载到LD寄存器70(图7)中。对于随后执行的每一条指令,将图4的计数(即循环值)加1。从比较器78向控制单元32提供循环尾信号采取预测(图7)。当图7的计数到达-1时,确认采取预测。
继续该循环的第二次迭代,直至计数在时钟周期9到达值-1。在时钟周期9,当相对于控制单元32确认采取预测信号时,进行预测,结果从目标地址寄存器58中将目标地址A0加载到地址总线上,从而到达存储器14。
同时,在时钟周期9,程序计数器54包含地址A2。利用加法器56将该地址加2,产生结果为ASBB。随后将以上结果地址加载到SBB地址寄存器60中。程序流程继续通过第三次迭代直至进行另一次预测的周期12。再次从目标地址寄存器58中获取地址A0并提供给存储器14。正如该示例所示,在时钟周期14的末端,确定该分支被错误预测。根据条件编码的值以及分支的类型来确定某个分支被错误预测。当在周期14识别出一个错误预测时,已经获取了指令I0并且对该指令进行了译码。将先前加载到SBB地址寄存器60中的地址加4以产生结果AFT+1。随后将以上结果地址加载到地址总线上,从而到达存储器14。致使开始从地址AFT+1取指令,从而防止出现执行气泡。恢复启动错误预测后的一个时钟周期,此时指令I0处于执行阶段。I0的执行将被终止。在终止执行I0之后,作为对错误预测的响应,将指令IFT从IRFT40加载到指令寄存器36中。然后利用IFT继续执行指令。同时,以上错误预测使图8的状态机从活动状态转换到空闲状态。
通过在作为恢复周期(即周期15)的同一周期中同时向指令寄存器36提供指令IFT并发出地址AFT+1,实现了零周期错误预测损失。同时,请注意,在图9中描述的循环的第一次迭代占用5个周期。具有正确预测的第二次迭代仅占用3个周期,比不采用折叠分支的迭代正常占用的周期少两个周期。具有错误预测的第三次迭代占用4个周期(不包括恢复周期,尽管在该周期中对IFT进行译码)。
在上述实施方式中,当处于活动状态时,如果有流程改变而此流程改变并不是由触发从空闲状态转换到活动状态的SBB造成的,并且流程改变的目标位于循环体内,则状态机将退出活动状态。尽管流程改变的目的地可能仍在循环体内,也会出现以上情况。为了克服以上限制,下面的实施方式提供增强分支折叠处理技术。
图10表示循环尾含有一个SBB的程序循环。它还在循环体内的位置A1包含一个SFB。SFB的目的地为A4,并且正向分支距离为+3。以下将联合使用图10和图12,说明增强分支折叠处理操作。
图11以部分框图和部分逻辑图的形式更详细地表示图5的分支控制34。分支控制34包括一个状态机(在该图中未示出),LD寄存器94,多路复用器90,计数寄存器82,加法器80,比较器98,非负检测器100,校正计数寄存器92和加法器96。寄存器94具有众多输入终端以及与多路复用器90的第一众多输入终端相连的众多输出终端,输入终端接收来自指令寄存器36的指令的分支位移字段的较低位移位。多路复用器90还具有第二众多输入终端,与加法器80的输出相连的第三众多输入终端以及与校正计数寄存器92的输出相连的众多第四输入终端,其中第二输入终端从指令寄存器36接收较低位移位。将标记为“计数”的多路复用器90的众多输出终端连接到计数寄存器82的输入终端。
将计数寄存器82的输出终端连接到加法器80的第一众多输入终端。加法器80具有第二众多输入终端以便接收“1”。从控制单元32控制LD寄存器94、计数寄存器82、校正计数寄存器92以及多路复用器90。比较器98具有与多路复用器90的输出相连并标记为“计数”的第一众多输入终端,用于接收“-1”的第二众多输入终端以及一个输出,其中输出用于向控制单元32提供标记为“采取预测”的循环尾信号。非负检测器100具有与多路复用器90的输出相连的众多输入终端以及一个输出,其中输出向控制单元32提供标记为“使无效”的信号。校正计数寄存器92具有与加法器96的输出相连的众多输入终端。计数寄存器82具有与加法器96的第二众多输入终端相连并标记为“LATCH_CNT”的众多输出终端。在其他实施方式中,可以使用其他方法,例如使用地址比较方法,生成采取预测信号。
图12表示根据增强操作的图4的数据处理系统的各种信号的定时图。现在将参照图10至图12,说明用于增强模式的数据处理系统10的操作。
在执行第一次迭代时,检测到(在周期2)位于地址ASBB的一条SBB。将其低位移字段加载到图11的计数中。发现需要在随后的周期内获取SBB。状态机在同一周期(周期3)中进入活动状态。从I0开始连续执行。在周期5,检测到一条SFB。在该周期中,计数为-4并且LATCH_CNT为-5。将SFB的低位移字段(为+3)加到LATCH_CNT中。在靠近第二次迭代的末端,为SBB进行预测(在周期7中)。利用LD寄存器94中的-6重新加载计数。由于正确预测了需要获取的SBB,所以从I0开始连续执行。在周期10中,再次检测到同一SFB。在该示例中,没有发现在周期11中获取该SFB。因此,多路复用器90仍然选择将加法器80的输出而不是校正计数寄存器92的输出作为其输入源。因此,对于执行的每一条指令,计数连续加1。在计数到达-1的周期13,为SBB进行另一次预测。按上述方式继续执行。
通常,本发明允许分支折叠处理而无需取分支指令。对单出口4级流水线数据处理系统而言,如果迭代次数小于等于2,则节省的周期数为零。对于三次迭代而言,节省的周期数为2,对于四次迭代而言,节省的周期数为4,并且对于五次迭代而言,节省的周期数为6。可以利用2m-4表示节省的周期数,其中m为迭代次数。同时,正如现有分支预测技术一样,当预测为“错误预测”时,没有周期损失。
通过添加最少的硬件实现了周期数节省。同时,由于在第一次迭代之后没有获取、译码和执行分支指令和失败指令,所以节省了能量并且提高了性能。
尽管这里以特定实施方式说明了本发明,熟练的技术人员显然能够以各种各样的方式修改本发明并且可以采用除上述具体实施方式之外的许多实施方式。例如,计数寄存器中存储的计数值(即循环值)实际上可以为一个递增并与第二地址值进行比较的地址值,因此,附属权利要求书意在覆盖属于本发明实质和范围内的本发明的所有改进。

Claims (10)

1.一种控制数据处理系统的方法,其特征在于包括以下步骤:
获取位于分支地址的反向分支指令,反向分支指令具有一个偏移值,其中反向分支指令用于在存储器中向后面的目标地址执行分支以便定义程序循环;以及
根据反向分支指令设置循环值。
2.权利要求1的方法,其中根据反向分支指令设置循环值的步骤还包括将循环值设置为偏移值。
3.权利要求1的方法,其特征还在于包括以下步骤:
每当在程序循环中取指令时,通过将某个预定值加到循环值中而修改循环值。
4.权利要求3的方法,其中预定值是以指令的长度为基础的。
5.一种控制数据处理系统的方法,其特征在于包括以下步骤:
获取位于分支地址的反向分支指令,反向分支指令具有一个偏移值,其中反向分支指令用于在存储器中向后面的目标地址执行分支以便定义程序循环;
根据反向分支指令设置循环值;
获取位于目标地址的目标指令,其中目标地址是以偏移值为基础的;
确定循环值是否满足预定条件,并且:
    当循环值满足预定条件时:
        获取位于后继地址的后继指令,其中后继地址为目标地址;并且
        根据偏移值重新设置循环值;
    当循环值不满足预定条件时:
        获取位于后继地址的后继指令,其中后继地址为程序序列中的下一条指令地址
重复获取步骤,并进行确定直至程序流程转移到程序循环的外部。
6.数据处理系统中的一种循环方法,其特征在于包括以下步骤:
提供包含指令Ibr-1和分支指令Ibr的指令存储器,其中指令Ibr-1直接在指令存储器地址空间中分支指令Ibr之前;
获取并处理分支指令Ibr
在获取并处理分支指令Ibr的步骤之后,获取并处理位于目标地址的目标指令;
获取指令Ibr-1,并且
在获取指令Ibr-1的步骤之后,立即获取位于目标地址的目标指令。
7.数据处理系统中的一种循环方法,其特征在于:
提供包含指令Ibr-1、分支指令Ibr的指令存储器,其中直接在指令存储器地址空间中分支指令Ibr之前存储指令Ibr-1,并且紧接在指令存储器地址空间中分支指令Ibr之后存储指令Ibr+1
获取并处理分支指令Ibr,其中获取并处理分支指令Ibr包括存储目标地址的子步骤;
获取并保存指令Ibr+1
根据获取并保存指令Ibr+1的步骤之后的分支预测,获取并处理位于目标地址的目标指令,其中获取并处理目标指令包括在寄存器中存储目标指令的子步骤;并且
确定分支预测错误,并且利用指令Ibr+1重写指令寄存器。
8.权利要求7的方法包括向地址总线提供值br+(2*inc),其中inc表示指令的字节长度。
9.一种具有一个地址生成单元数据处理系统,其特征在于:
具有一个第一输入、一个第二输入和一个输出的第一多路复用器;
具有一个输入和一个输出的程序计数寄存器,其中输入与第一多路复用器的输出相连;
具有一个第一输入、一个第二输入以及一个输出的第二多路复用器,其中第二输入与程序计数寄存器的输出相连;
具有一个输入和一个输出的目标地址寄存器,其中输入与第一多路复用器的输出相连;
具有一个第一输入、一个第二输入以及一个输出的第一加法器,其中第一输入与程序计数寄存器的输出相连,第二输入用于接收第一递增值;
具有一个输入、一个输出的分支地址寄存器,其中输入与第一加法器的输出相连,输出与第二多路复用器的第一输入相连;以及
具有一个第一输入、一个第二输入和一个输出的第三多路复用器,其中第一输入与目标地址寄存器的输出相连,第二输入与第一加法器的输出相连,输出与第一多路复用器的第一输入相连。
10.一种具有一个地址生成单元的数据处理系统,其特征在于:
具有一个第一输入和一个第二输入的多路复用装置,用于提供获取地址;
连接以接收获取地址的程序计数器;
与多路复用装置的第一输入相连用于提供分支目标地址的分支目标地址生成装置,其中分支目标地址表示获取分支后的分支目的地地址;以及
与多路复用装置的第二输入相连用于提供分支指令之后的第二指令地址的跳过下一个顺序的地址生成装置。
CNB991086481A 1998-06-19 1999-06-18 具有分支控制的数据处理系统及其方法 Expired - Lifetime CN1189816C (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US100669 1998-06-19
US09/100,669 US6401196B1 (en) 1998-06-19 1998-06-19 Data processor system having branch control and method thereof
US100,669 1998-06-19

Publications (2)

Publication Number Publication Date
CN1240279A true CN1240279A (zh) 2000-01-05
CN1189816C CN1189816C (zh) 2005-02-16

Family

ID=22280928

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB991086481A Expired - Lifetime CN1189816C (zh) 1998-06-19 1999-06-18 具有分支控制的数据处理系统及其方法

Country Status (7)

Country Link
US (1) US6401196B1 (zh)
EP (1) EP0965910B1 (zh)
JP (1) JP2000029700A (zh)
KR (1) KR100597328B1 (zh)
CN (1) CN1189816C (zh)
DE (1) DE69919081T2 (zh)
TW (1) TW442753B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107580700A (zh) * 2015-09-29 2018-01-12 华为技术有限公司 一种生成地址的方法及数据处理设备
CN112988233A (zh) * 2021-02-06 2021-06-18 江南大学 一种面向分支指令预测的偏差矫正器及方法

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3470948B2 (ja) * 1999-01-28 2003-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
EP1163577B1 (de) * 1999-03-17 2003-11-26 Infineon Technologies AG Cachen kurzer programmschleifen innerhalb eines instruktions-fifos
US6539541B1 (en) * 1999-08-20 2003-03-25 Intel Corporation Method of constructing and unrolling speculatively counted loops
US6604163B1 (en) * 2000-05-16 2003-08-05 Koninklijke Philips Electronics N.V. Interconnection of digital signal processor with program memory and external devices using a shared bus interface
EP1369774A1 (fr) * 2002-06-06 2003-12-10 CSEM Centre Suisse d'Electronique et de Microtechnique SA Recherche et Développement Dispositif d'élaboration d'adresses pour un processeur de signaux numériques
US20040003210A1 (en) * 2002-06-27 2004-01-01 International Business Machines Corporation Method, system, and computer program product to generate test instruction streams while guaranteeing loop termination
US7130963B2 (en) * 2003-07-16 2006-10-31 International Business Machines Corp. System and method for instruction memory storage and processing based on backwards branch control information
KR100877138B1 (ko) * 2004-03-29 2009-01-09 고쿠리츠 다이가쿠 호진 교토 다이가쿠 데이터 처리장치, 데이터 처리 프로그램, 및 데이터 처리프로그램을 기록한 기록매체
US7269710B1 (en) 2004-07-23 2007-09-11 Zilog, Inc. Program memory space expansion for particular processor instructions
US7415599B1 (en) * 2005-11-01 2008-08-19 Zilog, Inc. Instruction operation and operand memory location determined based on preceding instruction operation and operand memory location
US7475231B2 (en) * 2005-11-14 2009-01-06 Texas Instruments Incorporated Loop detection and capture in the instruction queue
TW200723094A (en) * 2005-12-01 2007-06-16 Ind Tech Res Inst Dynamic branch prediction system and method
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
KR101398770B1 (ko) * 2006-09-06 2014-05-27 실리콘 하이브 비.브이. 프로그램가능한 데이터 프로세서를 위한 연산들을 예약하는 방법
US20090182984A1 (en) * 2008-01-11 2009-07-16 International Business Machines Corporation Execute Relative Long Facility and Instructions Therefore
CN102369941B (zh) * 2010-08-20 2014-04-23 海利尔药业集团股份有限公司 一种含有联苯肼酯和溴虫腈的杀虫杀螨组合物
US9703559B2 (en) * 2011-11-09 2017-07-11 Nec Corporation Digital signal processor, program control method, and control program
US20120185714A1 (en) * 2011-12-15 2012-07-19 Jaewoong Chung Method, apparatus, and system for energy efficiency and energy conservation including code recirculation techniques
US9436473B2 (en) * 2013-10-08 2016-09-06 Arm Limited Scheduling program instructions with a runner-up execution position
US10846097B2 (en) * 2018-12-20 2020-11-24 Samsung Electronics Co., Ltd. Mispredict recovery apparatus and method for branch and fetch pipelines

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3573854A (en) * 1968-12-04 1971-04-06 Texas Instruments Inc Look-ahead control for operation of program loops
US4566063A (en) * 1983-10-17 1986-01-21 Motorola, Inc. Data processor which can repeat the execution of instruction loops with minimal instruction fetches
US4755966A (en) * 1985-06-28 1988-07-05 Hewlett-Packard Company Bidirectional branch prediction and optimization
EP0374419A3 (en) * 1988-12-21 1991-04-10 International Business Machines Corporation Method and apparatus for efficient loop constructs in hardware and microcode
US5778423A (en) * 1990-06-29 1998-07-07 Digital Equipment Corporation Prefetch instruction for improving performance in reduced instruction set processor
US5920713A (en) * 1995-10-06 1999-07-06 Advanced Micro Devices, Inc. Instruction decoder including two-way emulation code branching
US5893142A (en) * 1996-11-14 1999-04-06 Motorola Inc. Data processing system having a cache and method therefor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107580700A (zh) * 2015-09-29 2018-01-12 华为技术有限公司 一种生成地址的方法及数据处理设备
CN112988233A (zh) * 2021-02-06 2021-06-18 江南大学 一种面向分支指令预测的偏差矫正器及方法
CN112988233B (zh) * 2021-02-06 2024-03-26 江南大学 一种面向分支指令预测的偏差矫正器及方法

Also Published As

Publication number Publication date
EP0965910A2 (en) 1999-12-22
EP0965910B1 (en) 2004-08-04
DE69919081T2 (de) 2005-01-27
EP0965910A3 (en) 2000-05-24
KR20000006302A (ko) 2000-01-25
CN1189816C (zh) 2005-02-16
TW442753B (en) 2001-06-23
US6401196B1 (en) 2002-06-04
JP2000029700A (ja) 2000-01-28
DE69919081D1 (de) 2004-09-09
KR100597328B1 (ko) 2006-07-10

Similar Documents

Publication Publication Date Title
CN1189816C (zh) 具有分支控制的数据处理系统及其方法
US8543796B2 (en) Optimizing performance of instructions based on sequence detection or information associated with the instructions
KR101225075B1 (ko) 실행되는 명령의 결과를 선택적으로 커밋하는 시스템 및 방법
US7366874B2 (en) Apparatus and method for dispatching very long instruction word having variable length
KR102379894B1 (ko) 벡터 연산들 수행시의 어드레스 충돌 관리 장치 및 방법
US5812809A (en) Data processing system capable of execution of plural instructions in parallel
CN101495959A (zh) 组合微处理器内的多个寄存器单元的方法和系统
CN112241288A (zh) 在硬件中检测条件分支的动态控制流重汇聚点
WO2020181670A1 (en) Control flow optimization in graphics processing unit
US20060174237A1 (en) Mechanism for pipelining loops with irregular loop control
US11481223B2 (en) Reducing operations of sum-of-multiply-accumulate (SOMAC) instructions
US7415601B2 (en) Method and apparatus for elimination of prolog and epilog instructions in a vector processor using data validity tags and sink counters
KR100576560B1 (ko) 추측 레지스터 조정 방법 및 장치
US10185568B2 (en) Annotation logic for dynamic instruction lookahead distance determination
US12032966B2 (en) Reducing overhead in processor array searching
US11416261B2 (en) Group load register of a graph streaming processor
US11275712B2 (en) SIMD controller and SIMD predication scheme
JP5786719B2 (ja) ベクトルプロセッサ
Wilmot Data threaded microarchitecture

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: FREEDOM SEMICONDUCTORS CO.

Free format text: FORMER OWNER: MOTOROLA, INC.

Effective date: 20040820

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20040820

Address after: Texas in the United States

Applicant after: FreeScale Semiconductor

Address before: Illinois Instrunment

Applicant before: Motorola, Inc.

C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: FISICAL SEMICONDUCTOR INC.

Free format text: FORMER NAME: FREEDOM SEMICONDUCTOR CORP.

CP01 Change in the name or title of a patent holder

Address after: Texas in the United States

Patentee after: FREESCALE SEMICONDUCTOR, Inc.

Address before: Texas in the United States

Patentee before: FreeScale Semiconductor

CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: Texas in the United States

Patentee after: NXP USA, Inc.

Address before: Texas in the United States

Patentee before: FREESCALE SEMICONDUCTOR, Inc.

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20050216