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
Links
- 238000000034 method Methods 0.000 claims abstract description 28
- 238000006073 displacement reaction Methods 0.000 claims description 23
- 238000012163 sequencing technique Methods 0.000 claims 1
- 239000000284 extract Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 6
- 238000000605 extraction Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000009467 reduction Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000002123 temporal effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 150000001336 alkenes Chemical class 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30069—Instruction skipping instructions, e.g. SKIP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3846—Speculative instruction execution using static prediction, e.g. branch taken strategy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result 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所述的用于控制执行其中还包含有舍弃信号的转移指令的方法,该舍弃信号具有真和假状态,
其特征在于所述方法还进一步包括以下步骤:
确定所述舍弃信号的状态;和如果所述舍弃信号为假,执行所述第二指令(延时槽指令)。
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)
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)
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 | 計算機 |
-
1985
- 1985-06-28 US US06/750,625 patent/US4755966A/en not_active Expired - Lifetime
-
1986
- 1986-06-02 CN CN86103708A patent/CN1010618B/zh not_active Expired
- 1986-06-12 EP EP19900203019 patent/EP0423906B1/en not_active Expired - Lifetime
- 1986-06-12 DE DE3650413T patent/DE3650413T2/de not_active Expired - Lifetime
- 1986-06-12 EP EP19860304500 patent/EP0207665B1/en not_active Expired - Lifetime
- 1986-06-12 DE DE8686304500T patent/DE3680722D1/de not_active Expired - Lifetime
- 1986-06-19 CA CA 511954 patent/CA1270573A1/en active Granted
- 1986-06-24 AU AU59171/86A patent/AU589977B2/en not_active Expired
- 1986-06-24 JP JP14771686A patent/JP2518616B2/ja not_active Expired - Lifetime
- 1986-06-27 KR KR1019860005172A patent/KR940005817B1/ko not_active IP Right Cessation
-
1988
- 1988-03-21 US US07/170,520 patent/US5051896A/en not_active Expired - Lifetime
-
1990
- 1990-01-19 AU AU48670/90A patent/AU627828B2/en not_active Expired
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 |