CN1010618B - 双向转移的预测和优化 - Google Patents

双向转移的预测和优化

Info

Publication number
CN1010618B
CN1010618B CN86103708A CN86103708A CN1010618B CN 1010618 B CN1010618 B CN 1010618B CN 86103708 A CN86103708 A CN 86103708A CN 86103708 A CN86103708 A CN 86103708A CN 1010618 B CN1010618 B CN 1010618B
Authority
CN
China
Prior art keywords
instruction
transfer
delay slot
displacement
predetermined condition
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
Application number
CN86103708A
Other languages
English (en)
Other versions
CN86103708A (zh
Inventor
李佩露
艾伦·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.)
HP Inc
Whirlpool Corp
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Priority to CN 90104848 priority Critical patent/CN1014937B/zh
Publication of CN86103708A publication Critical patent/CN86103708A/zh
Publication of CN1010618B publication Critical patent/CN1010618B/zh
Expired 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30069Instruction skipping instructions, e.g. SKIP
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3846Speculative instruction execution using static prediction, e.g. branch taken strategy
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • G06F9/38585Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification

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)
  • Devices For Executing Special Programs (AREA)

Abstract

在具有重叠的提取和执行循环的中央处理器中进行有效转移的一种方法和设备,使指令的有效提取优化。

Description

对条件转移作出决定的能力是任何计算机系统为完成有效工作的基本要求。转移或不转移的决定可以基于一个或一个以上的事件。这些事件,通常称作条件,包括:正数、负数或零,最后一次算术运算的上溢、下溢或进位,偶函数或奇函数,以及很多其它事件。在数字计算机中条件转移是由条件转移指令来完成的。条件转移指令可以用来构成高级程序结构,如LOOP和IF-THEN-ELSE等语句。由于LOOP和IF-THEN-ELSE这种程序结构使用得非常普遍,因此有必要使实现转移的条件转移指令执行得尽可能效率高。
执行一条计算机指令要由一个或一个以上的步来完成。通常,步是首先要提取程序计数器所指的指令,其次是译码并完成指令所标志的运算,最后是保存结果。一个简单的转移指令更改着程序计数器的内容,使程序的执行“跳”到程序中的其它步。为了加速计算机指令的执行,开发了一种叫作流水线作业技术,可以同时执行一条以上的指令。譬如,流水线作业可以使中央处理器CPU提取一条指令同时执行另一条指令,并保存第三条指令的结果。在流水线计算机结构中,转移是昂贵的作业,因为转移指令能使流水线上的其它指令保持暂挂以等待转移指令的结果。当在条件为真情况下执行一个条件转移指令时,它使CPU在属于目标地址的新地址,继续执行。由于在流水线计算机中指令的提取是与指令的译码和执行同时进行的,计算机已经提取程序中跟在转移指令后面的指令。这是一个与位于目标地址处的指令所不同的指令。因此,CPU必须暂停住转移指令后的指令流水线直到得出转移指令的结果和提取适当的指令。为了达到计算机的最大效力,计算机设计者试图以减少暂停指令流水线的需要以达到最大的计算机效力。
现有技术中使用过几种方案,使得在条件转移时避免暂停指令流水线。第一种,一些高性能处理器使用了多种转移预测方案来猜测会不会发生条件转移。这种方法要求大量的硬件,由于所要求的硬件太昂贵,因此除了最高性能的计算机以外,对所有的计算机都是不能采纳的。第二种,另一些结构既提取程序中跟在转移指令后面的指令,同时又提取转移目标地址处的指令。这个方法也是不能采纳的,因为它也要求昂贵的硬件以及额外的访问内存,以便始终提取二条指令。第三种,一些结构在指令中有一个比特用来表示计算机更可能要执行的是跟在转移后面的指令还是在转移目标地址处的指令,然后计算机提取更为可能的指令,并且只是在猜测错误时才暂停流水线。这种方法要求昂贵的硬件,并且如果猜测是错误的,要化费额外的时间恢复流水线并提取合适的指令。第四种,另一些结构允许用二个比特来指示CPU,是始终执行转移指令后面的指令还是永不执行,这由是否发生转移而定。这种结构使用了指令中太多的比特,因而减小了转 移指令的最大范围。最后,还有另一些结构在转移进行与否之前始终执行程序中跟在转移指令后面的指令。
执行程序中跟在转移指令后面的指令的技术称为延时转移。延时转移是需要的,因为流水线中的指令是始终被执行的,并且流水线不处于暂停状态。这是因为在流水线执行指令时延时转移,给计算机以时间来执行转移指令并计算下一个指令的地址。虽然这种技术避免了暂停指令流水线,它要求在转移指令之后设一无操作指令,这样不可能改善性能,因为额外的访问内存抵消了任何改善。
一种利用延时转移的优点的软件技术是合并。这里所述的合并概念在于循环转移指令处于循环套的终点。合并利用了延时转移的优点,它复制了跟在循环转移指令后面的循环第一条指令,把转移目标地址作为第二条循环指令。合并的一个潜在问题是,在退出循环时候,程序不一定要再执行被延迟的转移指令。对于始终使用延时转移的结构,这是一个问题。
在许多现有技术的计算机系统确定转移即将执行的时候,这些计算机系统使指令流水线暂停锁住。流水线的锁住包括使计算机停止提取下一个指令和防止流水线向前执行流水线中的任何指令。锁住降低了因流水线所获得的性能上的提高,因此是要避免的。
所需要的是一种条件转移的方法,它能使硬件的数量和性能的降低减至最小。这种方法应该尽量少使用指令中的比特,因为一个比特使转移指令的最大范围实际上减少一半。
按照本发明的优选实施方案,在数字计算机内为条件转移提供一种方法和设备。本发明的优选实施方案提供一条转移指令,它根据转移的位移来静态地预测是否要转移。这种方法在可能的地方采用了延时转移,但是在延时槽指令不能有效利用的地方还可以将跟在转移指令后的延时槽指令舍弃。
本发明在几方面优于现有技术。第一,本发明的优选实施方案可以根据转移位移上存在的符号位来预测条件转移指令是频繁转移还是难得转移,而不要求在指令中有任何其它的比特。第二,本发明的优选实施方案最理想地使用了紧跟在条件转移后面的指令,从而减少了使指令流水线暂停和引起性能降低的可能性。第三,本发明的优选实施方案仅在指令不能采用的场合才使跟在转移后面的指令舍弃。最后,本发明的优选实施方案提供了一种更灵活和有效的舍弃方案,它依据的是转移的方向而不是始终执行或永不执行跟在转移后面的指令。
图1是按照本发明的优选实施方案编写的一条转移指令。
图2表示本发明优选实施方案中的一种转移方法。
图3是这种转移方法的流程图
图4是按照本发明优选实施方案所作的设备的功能框图。
图5是图4中设备的时间状态图。
图1是按照本发明优选实施方案编写的一条转移指令。转移指令501由计算机用来执行指令的32比特信息所组成。这条指令把转移功能与对二个操作数作比较的运算结合在一起,虽然本发明本来只用转移的指令就可以实现。指令501包含一个6位的运算码组502,一个5位的第一源寄存器地址组503,一个5位的第二源寄存器地址组504,一个3位的条件码组505,一个11位的转移位置组506,一位的位置组符号位508,和一个舍弃位507。运算码组502识别这条指令为比较及转移指令。第一和第二源寄存器地址组503和504识别要对其内容进行比较的寄存器。转移位移可以为正或负,这由组508和506决定。这个位移用来计算转移的目标地址。按照本发明优选实施方案通过设定舍弃位507可以使指令流水线中的下一个指令舍弃。
在本发明优选实施方案中,当前指令的执行可以被舍弃。舍弃的目的是使该指令表现为在流水线中从未存在过那样,即使该指令已经被提取,它的运算也已完成。舍弃的执行在于防止该指令改变CPU的任何状态。为了防止改变计算机的状态,舍弃过程必须防止把被舍弃的指令的任何结果写入任何寄存器或内存位置并防止发生任何副作用,例如,由舍弃的指令引起的中断产生。这一点在优选实施方案中是这样完成的,即用前一条指令中生成的舍弃信号来检定任何写入信号,从而防止指令把任何计算的任何结果储存起来,或者改变计算机系统的状态。一个检定当前指令写入信号的简单方法是把写入信号和前一指令中生成的舍弃信号的保留副本相“与”。例如,一条指令所生成的舍弃信号可以保存在处理器的状态字中用于下一条指令。舍弃是 一个很有用的技术,因为它允许一条指令被取到流水线中,而不管流水线中另一条指令所作出的决定是否会使该指令不被执行。指令只要在流水线中进行直到需要储存其结果的时候,然后该指令可能在最后时刻被舍弃,其效果如同该指令在流水线中从未存在过一样。
在流水线计算机系统中,对于下一条要执行的指令,有二个截然不同的概念。第一个概念是时间上的后继指令,它是指在指令流水线中当前指令后的下一条指令。这条指令将在当前指令后执行,除非被舍弃,其运算结果将被储存起来。第二个概念是指空间上的后继指令,这是在程序中紧跟当前指令之后的指令。一般来说,当前指令在空间上的后继指令将是时间上的后继指令。这种规则的例外情况发生在接受转移指令时,时间上的后继指令是在目标地址处的指令,它一般不是转移指令在空间上的后继指令。
延时槽指令是转移指令在时间上的后继指令。一般来说,延时槽指令将是转移指令在空间上的后继指令。这种规则的例外情况是一个转移跟在另一个转移指令之后。对于这种情况,第二个转移指令的延时槽指令将是第一个转移指令的目标地址,而不是第二个转移指令在空间上的后继指令。
在本发明的优选实施方案中,无条件转移清楚地表示出舍弃概念和延时槽指令。当舍弃位为无时,无条件转移指令的延时槽指令总是执行的。当舍弃位为有时,无条件转移指令的延时槽指令总是被舍弃的。这相当于永不执行延时槽指令。
图2表示按照本发明优选实施方案中的一种条件转移方法。采用图2方法的计算机有一程序101,由指令100组成,包括条件转移指令102。转移指令102在空间上的后继指令是103。对于具有负的转移位移的条件转移指令102,指令104处于目标地址。对于具有正的转移位移的条件转移指令102,指令105处于目标地址。程序的执行由图表110,111,112,113和114表示。在正常执行期间,程序执行当前指令,然后执行当前指令在空间上的后继指令。
图表110,111和113表示舍弃位为无时转移指令的操作。这相应于“永不舍弃”或“始终执行”的情况。跟在转移指令后面的延时槽指令是始终执行的,无论是否转移,也无论转移的位移是正还是负。当转移条件为假时,继续执行在空间上的后继指令103,如图表110所示。当转移条件为真时,执行延时槽指令,然后执行在目标地址处的指令,图表111表示负的转移位移,图表113表示正的转移位移。
图表110,111,112和114表示舍弃位为有时转移指令的操作。这相当于下面阐述的“有时舍弃”的情况。当舍弃位为有时,延时槽指令可能被舍弃,这取决于转移的方向以及决定是否转移的条件是真是假。图表110和114表示当触发转移的条件为假从而不要转移时转移指令的操作。如果转移位移为正,延时槽指令的执行如图表110所示。如果转移位移为负,延时槽指令被舍弃,如图表114所示。图表112和114中的虚线指出延时槽指令虽然已提取,将被舍弃,就象在指令流水线中从未存在过一样。
图表111和112表示舍弃位为有,而触发转移的条件为真从而要转移到转移指令的操作。如果转移位移为正,延时槽指令被舍弃,如图表112所示,并且程序由目标地址处继续执行。如果转移位移为负,延时槽指令将在转移到目标地址处继续执行之前被执行,如图表111所示。
图3是转移方法的流程图。参照流程图可以更清楚地理解图表111至114。第一步要确定是否有舍弃位。如果舍弃位为无,则该转移指令的延时槽指令是始终被执行的。无论是否转移,这一点都会发生。如果舍弃位为有,则跟在转移后面的延时槽指令是不执行的,除非要转移而且转移位移为负,或者不要转移且转移位移为正。
本发明优选实施方案的操作体现了非常简单而有效的静态转移预测方法,它预测会不会转移,并根据转移位移的正负预测要提取那条指令。它的效率取决于用条件转移指令实现某种较高水平的程序控制结构时跟在一组软件约定后面的计算机软件。例如,循环结构是由向后的条件转移来实现的,所以将频繁地执行负位移的转移指令。事实上,对执行N次的循环,将从N次中取N-1次。另一个设想的软件约定的实例是,对难得发生的部分,用向前转移来实现IF-THEN-ELSE结构,使非转移路径中的更频繁执行的部分紧跟在转移指令之后。例如,向前转移可能转到出错处理程序段,它在正常的程序中是难得要执行的。另外,本发明优选实施方案有一个舍弃位,连同上述静态转移预测技术,它使延时槽指令的使用通用化和优化。当舍弃位为有时,被静态转移预测技术预测为频繁任务的“发生向后条件转 移”或“不发生向前条件转移”使延时槽指令被执行。因此,在频繁路径中一些有用的指令可能作为延时槽指令被执行,例如,在上述合并技术中所阐述的那样。当舍弃位为有时,预测为烯有任务的“不发生向后条件转移”或“发生向前条件转移”使延时槽指令被舍弃。因此,仅仅在难得的场合才发生使性能降低的舍弃。
当舍弃位为无时,延时槽指令是始终被执行的。它所对应的情况是,对发生转移和不发生转移这二条路径都共同的指令可以被指定为延时槽指令。
图4是依照本发明优选实施方案的设备功能框图。设备包括六个功能元件:指令存储器301,可选用的虚拟地址转换单元302,指令单元303,执行单元304,可选用的浮点单元305和可选用的寄存器文件306。这些功能元件通过五条总线连接在一起:结果总线310,第一运算数总线311,下一个指令总线312,第二运算数总线313和地址总线314。只有执行单元304和指令单元303参与完成本发明优选实施方案的操作。执行单元生成和/或储存的条件决定是否转移。指令单元通过生成下一条指令的地址来完成转移,并提供装置把地址存入程序计数器,这下一条指令是从内存中提取的。在本发明优选实施方案中,存储单元是高速缓冲存储器,其速度与执行单元中所用的逻辑的数量级相同。
图5是图4中设备的时间状态图。时间图表示执行指令401,402,403和404所包含的4个阶段。时间线460按时间向右推进划分段。每条指令的四个时间段是:指令地址生成段410,指令提取段411,执行段412,和写入段413。指令的执行可按需要的流水线作业程度,本发明优选实施方案包含四阶段流水线作业。如图5所示,在任一时刻有四条指令在执行。在时间450,指令401的写段与指令402的执行段,指令403的指令提取段、指令404的指令地址生成段重合。对于转移指令来说,这意味着当转移指令在执行段时,下一条指令已经被提取。在指令地址生成段期间,下一条指令地址从程序计数器中计算出来,程序计数器包含下一个要执行指令的地址,并位于指令单元303中。在指令提取段期间,从指令存储器301中提取下一条指令。为了完成这一点,要把指令地址生成段计算出来的地址内容加到地址总线314上,并把该地址的内容转给下一个指令总线312,由指令单元译码。转移指令可以与其它运算结合在一起,例如在执行单元304中的一个比较运算,它要在同一时刻译码和完成运行。
在执行段412完成转移指令。在执行段412期间同时生成转移指令的目标地址和转移指令在空间上的后继指令的地址。此时如果指令结合着另一个运算,该运算也被完成。在执行阶段的终点,二个地址中的一个被转到程序计数器中。哪个地址转给程序计数器取决于在执行单元304中生成或储存的条件。在写入段413期间没有运算,除非需要把结合指令的结果储存起来。由于所有把任何结果写入存储器和寄存器的操作以及任何副作用(如由于指令引起的中继)的产生均不早于412和413段,因此本方法能更简单地实现指令舍弃的概念,该指令是始终在流水线中的。

Claims (2)

1、在流水线计算机中控制程序执行从而最大限度地利用延时槽指令和转移指令的方法,该程序包含条件转移指令、第一指令、第二指令(延时槽指令)和第三指令,通过对执行条件转移指令的控制,来恢复对正常顺序执行指令的控制,所述条件转移指令包含预定条件和位移,该条件具有真、假状态,该位移具有正、负值,正值都在正常顺序执行方向上,该第一指令位于程序内离开转移指令的位移处,该第二指令是程序内对转移指令的时间顺序指令,该第三指令是程序内第二指令的空间顺序指令,
所述方法的特征在于包括:
确定所述的位移值;
确定所述预定条件的状态;
如果所述预定条件为真并且位移为负值,则执行第二指令(延时槽指令);
如果所述预定条件是假并且位移为正值,则执行第二指令(延时槽指令);和
继续按正常顺序执行程序,其中当预定条件为真时采取第一指令,当预定条件为假时采取第三指令,从而,通过根据预定条件的状态和转移指令的位移方向而调整延时槽指令的执行,使得延时槽指令的利用率为最大。
2、如权利要求1所述的用于控制执行其中还包含有舍弃信号的转移指令的方法,该舍弃信号具有真和假状态,
其特征在于所述方法还进一步包括以下步骤:
确定所述舍弃信号的状态;和如果所述舍弃信号为假,执行所述第二指令(延时槽指令)。
CN86103708A 1985-06-28 1986-06-02 双向转移的预测和优化 Expired CN1010618B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 90104848 CN1014937B (zh) 1985-06-28 1986-06-02 流水线计算机系统中舍弃延时槽指令的设备和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/750,625 US4755966A (en) 1985-06-28 1985-06-28 Bidirectional branch prediction and optimization
US750,625 1985-06-28

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN 90104848 Division CN1014937B (zh) 1985-06-28 1986-06-02 流水线计算机系统中舍弃延时槽指令的设备和方法

Publications (2)

Publication Number Publication Date
CN86103708A CN86103708A (zh) 1986-12-24
CN1010618B true CN1010618B (zh) 1990-11-28

Family

ID=25018608

Family Applications (1)

Application Number Title Priority Date Filing Date
CN86103708A Expired CN1010618B (zh) 1985-06-28 1986-06-02 双向转移的预测和优化

Country Status (8)

Country Link
US (2) US4755966A (zh)
EP (2) EP0423906B1 (zh)
JP (1) JP2518616B2 (zh)
KR (1) KR940005817B1 (zh)
CN (1) CN1010618B (zh)
AU (2) AU589977B2 (zh)
CA (1) CA1270573A1 (zh)
DE (2) DE3650413T2 (zh)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440704A (en) * 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
US5341482A (en) * 1987-03-20 1994-08-23 Digital Equipment Corporation Method for synchronization of arithmetic exceptions in central processing units having pipelined execution units simultaneously executing instructions
US5247627A (en) * 1987-06-05 1993-09-21 Mitsubishi Denki Kabushiki Kaisha Digital signal processor with conditional branch decision unit and storage of conditional branch decision results
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
JPS6488844A (en) * 1987-09-30 1989-04-03 Takeshi Sakamura Data processor
US5155818A (en) * 1988-09-28 1992-10-13 Data General Corporation Unconditional wide branch instruction acceleration
EP0365187A3 (en) * 1988-10-18 1992-04-29 Apollo Computer Inc. Apparatus for selective execution of instructions following a branch instruction
EP0378415A3 (en) * 1989-01-13 1991-09-25 International Business Machines Corporation Multiple instruction dispatch mechanism
US5093908A (en) * 1989-04-17 1992-03-03 International Business Machines Corporation Method and apparatus for executing instructions in a single sequential instruction stream in a main processor and a coprocessor
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
EP0442116A3 (en) * 1990-02-13 1993-03-03 Hewlett-Packard Company Pipeline method and apparatus
US5303377A (en) * 1990-03-27 1994-04-12 North American Philips Corporation Method for compiling computer instructions for increasing instruction cache efficiency
US5303356A (en) * 1990-05-04 1994-04-12 International Business Machines Corporation System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
EP0825529A3 (en) * 1990-05-04 1998-04-29 International Business Machines Corporation System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
JPH0680489B2 (ja) * 1990-05-04 1994-10-12 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン データ処理装置
JP2845578B2 (ja) * 1990-06-19 1999-01-13 甲府日本電気 株式会社 命令制御方式
EP0463973A3 (en) * 1990-06-29 1993-12-01 Digital Equipment Corp Branch prediction in high performance processor
US5283873A (en) * 1990-06-29 1994-02-01 Digital Equipment Corporation Next line prediction apparatus for a pipelined computed system
JP2834292B2 (ja) * 1990-08-15 1998-12-09 株式会社日立製作所 データ・プロセッサ
JP2508907B2 (ja) * 1990-09-18 1996-06-19 日本電気株式会社 遅延分岐命令の制御方式
JP2534392B2 (ja) * 1990-09-21 1996-09-11 三田工業株式会社 画像形成装置のための自己診断および自己修復システム
US5303355A (en) * 1991-03-27 1994-04-12 Motorola, Inc. Pipelined data processor which conditionally executes a predetermined looping instruction in hardware
US5450585A (en) * 1991-05-15 1995-09-12 International Business Machines Corporation Compiler with delayed conditional branching
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
EP0551090B1 (en) * 1992-01-06 1999-08-04 Hitachi, Ltd. Computer having a parallel operating capability
US5434986A (en) * 1992-01-09 1995-07-18 Unisys Corporation Interdependency control of pipelined instruction processor using comparing result of two index registers of skip instruction and next sequential instruction
JPH06259262A (ja) * 1993-03-08 1994-09-16 Fujitsu Ltd 分岐確率を設定するコンパイラの処理方法および処理装置
US5426600A (en) * 1993-09-27 1995-06-20 Hitachi America, Ltd. Double precision division circuit and method for digital signal processor
JP3452655B2 (ja) * 1993-09-27 2003-09-29 株式会社日立製作所 ディジタル信号処理プロセッサおよびそれを用いて命令を実行する方法
US5815695A (en) * 1993-10-28 1998-09-29 Apple Computer, Inc. Method and apparatus for using condition codes to nullify instructions based on results of previously-executed instructions on a computer processor
TW261676B (zh) * 1993-11-02 1995-11-01 Motorola Inc
US5539888A (en) * 1993-12-23 1996-07-23 Unisys Corporation System and method for processing external conditional branch instructions
US5799180A (en) * 1995-10-31 1998-08-25 Texas Instruments Incorporated Microprocessor circuits, systems, and methods passing intermediate instructions between a short forward conditional branch instruction and target instruction through pipeline, then suppressing results if branch taken
US5905881A (en) * 1995-11-30 1999-05-18 Unisys Corporation Delayed state writes for an instruction processor
US5774709A (en) * 1995-12-06 1998-06-30 Lsi Logic Corporation Enhanced branch delay slot handling with single exception program counter
US5799167A (en) * 1996-05-15 1998-08-25 Hewlett-Packard Company Instruction nullification system and method for a processor that executes instructions out of order
US5796997A (en) * 1996-05-15 1998-08-18 Hewlett-Packard Company Fast nullify system and method for transforming a nullify function into a select function
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
US5974538A (en) * 1997-02-21 1999-10-26 Wilmot, Ii; Richard Byron Method and apparatus for annotating operands in a computer system with source instruction identifiers
US6401196B1 (en) * 1998-06-19 2002-06-04 Motorola, Inc. Data processor system having branch control and method thereof
US6192515B1 (en) * 1998-07-17 2001-02-20 Intel Corporation Method for software pipelining nested loops
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
US20060168431A1 (en) * 1998-10-14 2006-07-27 Peter Warnes Method and apparatus for jump delay slot control in a pipelined processor
JP3470948B2 (ja) * 1999-01-28 2003-11-25 インターナショナル・ビジネス・マシーンズ・コーポレーション 動的コンパイル時期決定方法、バイトコード実行モード選択方法、及びコンピュータ
US6571385B1 (en) * 1999-03-22 2003-05-27 Intel Corporation Early exit transformations for software pipelining
EP1236097A4 (en) 1999-09-01 2006-08-02 Intel Corp BRANCH COMMAND TO THE PROCESSOR
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US6662360B1 (en) * 1999-09-27 2003-12-09 International Business Machines Corporation Method and system for software control of hardware branch prediction mechanism in a data processor
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6988154B2 (en) 2000-03-10 2006-01-17 Arc International Memory interface and method of interfacing between functional entities
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
DE10101949C1 (de) * 2001-01-17 2002-08-08 Infineon Technologies Ag Datenverarbeitungsverfahren
JP4141112B2 (ja) * 2001-04-12 2008-08-27 株式会社日立製作所 プロセッサおよびプロセッサシステム
US6785804B2 (en) * 2001-05-17 2004-08-31 Broadcom Corporation Use of tags to cancel a conditional branch delay slot instruction
US7437724B2 (en) 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7668622B2 (en) * 2004-03-30 2010-02-23 Honeywell International Inc. Efficient blending based on blending component availablity for a partial blend duration
JP2006011723A (ja) * 2004-06-24 2006-01-12 Matsushita Electric Ind Co Ltd 分岐制御方法、および情報処理装置
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
US8689200B1 (en) * 2011-01-12 2014-04-01 Google Inc. Method and system for optimizing an executable program by generating special operations for identical program entities
US8683455B1 (en) 2011-01-12 2014-03-25 Google Inc. Method and system for optimizing an executable program by selectively merging identical program entities
US20170277539A1 (en) * 2016-03-24 2017-09-28 Imagination Technologies Limited Exception handling in processor using branch delay slot instruction set architecture
US10970073B2 (en) 2018-10-02 2021-04-06 International Business Machines Corporation Branch optimization during loading

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BE789583A (fr) * 1971-10-01 1973-02-01 Sanders Associates Inc Appareil de controle de programme pour machine de traitement del'information
GB1448866A (en) * 1973-04-13 1976-09-08 Int Computers Ltd Microprogrammed data processing systems
JPS52120735A (en) * 1976-04-05 1977-10-11 Agency Of Ind Science & Technol Microporogram control unit
US4378589A (en) * 1976-12-27 1983-03-29 International Business Machines Corporation Undirectional looped bus microcomputer architecture
US4210960A (en) * 1977-09-02 1980-07-01 Sperry Corporation Digital computer with overlapped operation utilizing conditional control to minimize time losses
US4325120A (en) * 1978-12-21 1982-04-13 Intel Corporation Data processing system
SE456051B (sv) * 1980-02-11 1988-08-29 Western Electric Co Digital processoranordning anordnad for pipeline-databehandlingsoperationer
US4539635A (en) * 1980-02-11 1985-09-03 At&T Bell Laboratories Pipelined digital processor arranged for conditional operation
US4390946A (en) * 1980-10-20 1983-06-28 Control Data Corporation Lookahead addressing in a pipeline computer control store with separate memory segments for single and multiple microcode instruction sequences
US4514804A (en) * 1981-11-25 1985-04-30 Nippon Electric Co., Ltd. Information handling apparatus having a high speed instruction-executing function
WO1985000453A1 (en) * 1983-07-11 1985-01-31 Prime Computer, Inc. Data processing system
US4742454A (en) * 1983-08-30 1988-05-03 Amdahl Corporation Apparatus for buffer control bypass
JPH0754461B2 (ja) * 1985-02-08 1995-06-07 株式会社日立製作所 情報処理装置
CA1254661A (en) * 1985-06-28 1989-05-23 Allen J. Baum Method and means for instruction combination for code compression
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機

Also Published As

Publication number Publication date
AU5917186A (en) 1987-01-08
CA1270573A1 (en) 1990-06-19
DE3650413D1 (de) 1995-11-09
US4755966A (en) 1988-07-05
EP0423906B1 (en) 1995-10-04
JPS623340A (ja) 1987-01-09
AU4867090A (en) 1990-05-10
JP2518616B2 (ja) 1996-07-24
KR870000643A (ko) 1987-02-19
CN86103708A (zh) 1986-12-24
AU627828B2 (en) 1992-09-03
AU589977B2 (en) 1989-10-26
US5051896A (en) 1991-09-24
EP0423906A2 (en) 1991-04-24
EP0207665A1 (en) 1987-01-07
DE3680722D1 (de) 1991-09-12
EP0207665B1 (en) 1991-08-07
EP0423906A3 (en) 1991-08-28
CA1272296C (zh) 1990-07-31
DE3650413T2 (de) 1996-03-07
KR940005817B1 (ko) 1994-06-23

Similar Documents

Publication Publication Date Title
CN1010618B (zh) 双向转移的预测和优化
JP3548132B2 (ja) マルチスレッド・プロセッサ内でのパイプライン・ステージのフラッシュ方法および装置
US5511172A (en) Speculative execution processor
US4782441A (en) Vector processor capable of parallely executing instructions and reserving execution status order for restarting interrupted executions
US5423051A (en) Execution unit with an integrated vector operation capability
US6061710A (en) Multithreaded processor incorporating a thread latch register for interrupt service new pending threads
US5546593A (en) Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream
EP0377991B1 (en) Data processing systems
EP0437044B1 (en) Data processing system with instruction tag apparatus
KR100284789B1 (ko) N-지로 분기를 갖는 슈퍼스칼라 또는 초장 명령어 워드컴퓨터에서 다음 명령어를 선택하는 방법 및 장치
EP0605872A1 (en) Method and system for supporting speculative execution of instructions
CN1009396B (zh) 具有指令予取换向中断服务的数据处理器控制部件
JPH02161524A (ja) パイプラインコンピュータに使用する分岐システムとその動作方法
JPH07302200A (ja) 順次付けロード動作および順序付け記憶動作を強制する命令を有するコンピュータのロード命令方法。
US5497496A (en) Superscalar processor controlling fetching of instructions based upon number of empty instructions registers detected for each cycle
JP2620505B2 (ja) スーパースカラ・プロセッサ・システムの同期化効率を向上させる方法およびシステム
CN1014937B (zh) 流水线计算机系统中舍弃延时槽指令的设备和方法
JPH03269728A (ja) パイプライン計算機における命令実行制御方式
JP3771682B2 (ja) ベクトル処理装置
JPH04101219A (ja) 命令分岐予測方式
JPH07111683B2 (ja) タスク切換機能付プロセッサ
JPH0760386B2 (ja) 分岐予測機能を有するデータ処理装置
Ibbett et al. Instruction Buffers
Robbins et al. The control section
JPH06301534A (ja) 情報処理装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C13 Decision
GR02 Examined patent application
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CX01 Expiry of patent term