CN1143213C - 高速处理循环的编译器和处理器 - Google Patents
高速处理循环的编译器和处理器 Download PDFInfo
- Publication number
- CN1143213C CN1143213C CNB96103713XA CN96103713A CN1143213C CN 1143213 C CN1143213 C CN 1143213C CN B96103713X A CNB96103713X A CN B96103713XA CN 96103713 A CN96103713 A CN 96103713A CN 1143213 C CN1143213 C CN 1143213C
- Authority
- CN
- China
- Prior art keywords
- instruction
- mentioned
- aim
- address
- information
- 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 - Lifetime
Links
- 238000012545 processing Methods 0.000 title claims description 32
- 230000004087 circulation Effects 0.000 claims description 113
- 238000012546 transfer Methods 0.000 claims description 109
- 238000000034 method Methods 0.000 claims description 31
- 230000005055 memory storage Effects 0.000 claims description 30
- 230000001351 cycling effect Effects 0.000 claims description 18
- 238000000151 deposition Methods 0.000 claims description 7
- 230000003252 repetitive effect Effects 0.000 claims description 7
- 230000033228 biological regulation Effects 0.000 claims description 3
- 238000005138 cryopreservation Methods 0.000 claims 1
- 238000003860 storage Methods 0.000 abstract description 71
- 238000013519 translation Methods 0.000 description 34
- 230000003139 buffering effect Effects 0.000 description 10
- 238000001514 detection method Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 239000004615 ingredient Substances 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- 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/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- 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/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address 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)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一种编译器,包括:一循环检测部分,以及一高速循环应用部分。一种处理器,包括:一流水线,它带有一取指部分、一译码部分以及一执行部分;一转移目标存储部分;一转移目标寄存部分,用于将有关的转移目标信息寄存在转移目标存储部分中;以及,一转移执行部分,用于判断是否执行一循环,如果要执行,就读出转移目标信息并控制上述流水线。
Description
技术领域
本发明涉及到将源程序编译成机器指令序列的编译器以及通过流水线式处理来执行这些机器指令序列的处理器,更具体地说,本发明涉及到高速执行循环的编译器和处理器。
背景技术
流水线式处理是一种用CPU(以下称作“处理器”)进行高速处理的基本技术。流水线式处理就是将一个指令的处理过程分成多个更小的处理单元(流水线的阶段)并同时对各个阶段进行处理以便提高处理速度的技术。但是,在循环处理中执行转移指令时,会产生流水线失控(混乱)的现象,从而流水线式处理的实际性能要低于理想的性能。这种现象称为转移冒险(brand hazard)。
以下参照图1和图2说明转移冒险现象。
图1示出了一个三次重复求取两个整数的和与积的源程序。
图2示出了通过编译图1的源程序而得到的机器语言指令序列。在该指令序列中所用的操作数和指令的含义如下:
a、b、c、d、i:分配给整数变量的寄存器。
mov 0,i:将0送给i。
L:标号。
add a,b,c:将a与b的和送给c。
mul a,b,d:将a×b的积送给d。
add i,l,i:将l加至i。
cmp i,3:将i与3相比。
bcc L:如果“cmp i,3”的结果是i<3则转移到L。
在图2的指令序列中,从“add a,b,c”到“bcc L”的循环处理执行了三次。
图3按每个时钟周期示出了在执行图2的指令序列过程中处理器的流水线流程。该流水线包括三个步骤(IF:获取指令,DEC:对指令译码,EX:执行指令并生成有效地址)。两个时钟周期后在EX阶段执行IF阶段取得的指令。在时钟周期8执行了转移指令“bccL”之后,处理器将指令“add a,b,c”当作下一个要执行的指令,并在时钟周期9取指令“add a,b,c”。即在时钟周期8执行了转移指令“bcc L”之后,处理器使指令无效两个时钟周期,接着执行指令“add a,b,c”。这意味着每当一次循环处理结束时都会产生两个时钟周期的流水线停顿。
作为避免上述转移冒险的先有技术,有以下几种方法:a)延迟转移的方法,b)循环重复的方法,c)转移缓冲的方法(比如参见David A.Patterson和Jhon L.Hennesy的ComputerArchitecture-A Quantitative Approach,Morgan Kaufmann(出版社,1990)。
(a)延迟转移
延时转移中采用了这样的方法,即:在编译器编译一源程序时对循环进行调度,并事先将有效指令移至位于转移指令之后的指令位置(转移延迟槽)。由此,执行一转移指令时不会使任何指令无效。移至转移延迟槽的指令有转移指令的先行指令、转移目标指令以及转移指令的后续指令三种类型。
(b)循环重复
循环重复采用了这样的方法,即:在执行循环处理之前预先将循环的入口和出口地址、循环次数等信息存储在处理器所带有的专用寄存器中。由此,不需要计算循环处理返回的地址,从而消除了转移冒险的现象。
(c)转移目标缓冲区
转移目标缓冲区中采用了这样的方法,即:当处理器第一次转移到一新地址时,将一转移目标地址和一转移目标指令序列存储在处理器中称之为转移目标缓冲区的专用缓冲区中,接着,在程序转移到存储在转移目标缓冲区内的地址时,取出所存储的转移目标指令序列加以执行。由此,当重复执行从同一地址开始的指令序列时,在第二次以及以后的执行中访问转移目标缓冲区。因此不需要从外部存储器取指令,从而消除了转移冒险的现象。
然而这些先有技术的方法具有下列问题:
(a)延迟转移
在本方法中,当转移指令的先行指令移至一转移延迟槽时,转移指令不应该依赖于其先行指令。一些先行指令可能不满足这一条件。即使在有一先行指令满足上述条件而且已完成了静态调度时,在获取转移槽内的指令之前或者在获取要在转移后执行的指令之前,都要等待一段时间。这是因为,例如存储指令的外部设备可能是一低速设备,或者用于取这一指令的外部总线被其他操作所占用。
在将一转移目标指令或一转移指令的后续指令移至一转移延迟槽时,会出现同样的问题,而且性能的改进取决于转移成功与否。
(b)循环重复
为了使用此方法,在执行循环之前应该知道此循环的重复次数。即,如果是通过执行该循环来确定重复次数,就不能使用这种方法。因此该方法限于有固定格式的重复性数字运算。
(c)转移目标缓冲区
在本方法中,每次程序转移时都必须检查转移目标地址是否存储在转移目标缓冲区中。这就增加了在一个时钟周期内所执行的操作次数,因此,难以提高程序的时钟周期。
发明内容
鉴于上述问题,本发明的第一个目标的是提供一种编译器和一种处理器,它们能在不受源程序的循环中的转移指令与该转移指令的先行指令或转移目标指令之间的依赖性影响并不会产生任何转移冒险的情况下高速地处理循环。
本发明的第二个目的是提供一种编译器和一种处理器,它们能在不必每次都在程序返回到循环入口时计算转移目标地址的情况下高速地处理循环。
本发明的第三个目的是提供一种编译器和一种处理器,它们能在不必每次执行转移指令时都判断是否可以将高速循环处理用于循环操作的情况下高速地处理循环。
上述目的是由一编译器实现的,一种通过编译源程序而生成机器语言指令序列的编译器,包括:循环信息存储装置;循环检测装置,它用于检测存在于源程序中的特定的循环处理,并且将有关该循环处理的入口的信息,存储在上述循环信息存储装置;以及高速循环应用装置,根据存储于上述循环信息存储装置的信息,在紧接循环处理的入口之前产生转移目标信息寄存指令,并在循环处理入口的转移位置,产生循环专用转移指令。
根据本发明的第二方面的一种通过流水线处理执行机器语言指令序列的处理器,其特征在于,备有:转移目标信息存储装置;指令译码装置,将上述机器语言指令序列的指令译码;寄存装置,在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,将关于由在上述转移目标信息寄存指令的上述机器语言指令序列中的设置位置所决定的指令的规定的转移目标信息寄存在上述转移目标存储装置中;以及转移执行装置,在上述指令译码装置将上述指令译码为循环专用转移指令,并且转移时,就读取寄存在上述转移目标信息存储装置中的上述转移目标信息,并根据该信息转移。
根据本发明的第三方面的一种通过流水线处理执行机器语言指令序列的处理器,其特征在于,备有:转移目标信息存储装置;指令译码装置,将上述机器语言指令序列的指令译码;寄存装置,在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,将关于由在上述转移目标信息寄存指令的上述机器语言指令序列中的设置位置特定的指令的规定的转移目标信息寄存在上述转移目标存储装置中;以及转移执行装置,在上述指令译码装置将上述指令译码为循环专用转移指令时,判断是否重复循环处理,当判断为重复循环处理时,就读取寄存在上述转移目标信息存储装置中的上述转移目标信息,并根据该信息转移。
当上述处理器执行由编译器所生成的机器语言指令序列时,处理器不必计算地址,也不必取指令并对该指令译码以重复前述循环的过程。
在上述编译器中,高速循环应用装置还带有根据循环检测装置所提取的信息而进行操作的第三循环专用指令生成部分,此部分用于生成表示循环已经结束的第三循环专用指令并将第三循环专用指令放置成紧接在机器语言指令序列中循环出口之后,并且,处理器还可包括一清除装置,在译码部分对第三循环专用指令译码之后,该清除装置清除寄存在转移目标存储装置中的转移目标信息。
由此,由于清除了不必要的转移目标信息,从而,即使在多重循环嵌套情况下,转移目标存储装置中寄存有多条转移目标信息,也能简化转移目标,执行装置对流水线的控制。
转移目标信息可以是循环处理的起始地址,如果判断出要执行一循环,转移执行装置可以使用该地址控制前述流水线。
因此,处理器在执行循环时不必计算上述地址。
转移目标信息可以是循环处理的起始地址以及从头开始的指令序列,如果判断出要执行循环,则转移执行装置则会使用上述信息以及由第二专用转移指令所指定的地址来控制前述流水线。
因此,如果处理器执行一个循环,它不必计算该循环的起始地址、不必取从循环起点开始的指令序列、不必计算接着该指令序列的指令序列的地址。
转移目标信息可以是循环处理的起始地址以及从头开始的指令序列,如果判断出要执行一循环,转移执行装置可以使用该信息控制前述流水线。
因此,如果处理器执行一个循环,它不必计算该循环的起始地址、不必取从循环起点开始的指令序列。
转移目标信息可以是表示循环开始的第一地址、从头开始的指令序列以及在该指令序列之后取出的那条指令的第二地址,如果判断出要执行一循环,转移执行装置可以使用这些信息控制上述流水线。
因此,如果处理器执行一个循环,它不必计算循环处理的起始地址、不必取从循环处理起点开始的指令序列、不必计算在上述指令序列之后取出的指令序列的地址。
转移目标信息可以是从循环处理起点开始的指令序列以及在该指令序列后所执行的指令的地址,如果判断出要执行一循环,转移执行装置可以使用上述信息以及由第二循环专用指令所指示的地址以控制前述流水线。
因此,如果处理器执行一个循环,它不必计算循环处理的起始地址、不必取从循环起点开始的指令序列,也不必计算在该指令序列之后取出的指令序列的地址。
转移目标信息可以是从循环起点开始的指令序列以及在该指令序列之后执行的指令的地址,如果判断出要执行循环,则转移执行装置可利用上述信息来控制所说的流水线。
因此,如果处理器执行循环,它不必取从循环处理起点开始的指令序列,也不必计算在该指令序列之后取出的指令序列的地址。
转移目标信息可以是循环的起始地址以及与从循环起点开始的指令序列相对应的微指令序列,如果判断要执行循环,则转移执行装置可以使用上述信息以及第二循环专用指令所指示的地址来控制所说的流水线。
因此,如果处理器执行循环,它不必计算循环的起始地址、不必取从循环起点开始的指令序列并对该指令序列进行译码、也不必计算在上述指令序列之后取出的指令序列的地址。
转移目标信息可以是循环的起始地址以及与从循环起点开始的指令相对应的微指令序列,如果判断出要执行一循环,转移执行装置可以使用上述信息以控制所说的流水线。
因此,如果处理器执行一个循环,它不必计算循环处理的起始地址、不必取从循环起点开始的指令序列并对该指令序列进行译码。
转移目标信息可以是表示循环起点的第一地址、与从循环起点开始的指令序列相对应的微指令序列以及在上述指令序列之后要执行的指令的第二地址,如果判断出要执行循环,转移执行装置可以使用上述信息以控制所说的流水线。
因此,如果处理器执行循环,它不必计算循环的起始地址、不必取从循环处理起点开始的指令序列并对该指令序列进行译码、也不必计算在上述指令序列之后取出的指令序列的地址。
转移目标信息可以是与从循环起点开始的指令序列相对应的微指令序列以及在上述指令序列之后所执行的指令的地址,如果判断出要执行一循环,循环执行装置可以使用上述信息以及第二循环专用指令所指定的地址以控制所说的流水线。
因此,如果处理器执行一循环,它不必计算循环的起始地址、不必取从循环起点开始的指令序列并对该指令序列进行译码、也不必计算在上述指令序列之后所取出的指令序列的地址。
转移目标信息可以是与从循环起点开始的指令序列相对应的微指令序列以及在该指令序列之后执行的指令的地址,如果判断出要执行一循环,转移执行装置可以使用上述信息以控制所说的流水线。
因此,如果处理器执行一个循环,它不必取从循环起点开始的指令序列并对该指令序列进行译码、不必计算在上述指令序列之后所取出的指令序列的地址。
从以上说明中可以看出,在本装置编译一源程序时产生一高速循环指令,并在执行循环的第一次重复时将该循环的起始指令或起始地址寄存在处理器内的一专用缓冲区中。在对能使循环重复的转移指令进行译码之后,处理器可以从上述缓冲区获得转移目标指令和转移目标地址。
因此,本发明的设备不必使流水线无效,不必计算转移目标地址,不必为了循环操作的每次重复而从低速外部存储器中取转移目标指令,从而能以高速重复循环操作。
同时,由于本发明的设备包括高速循环指令和执行该装置独有的指令的部件,所以,该设备能独立于转移指令的操作将转移目标指令寄存在专用缓冲区中。此外,甚至在循环开始之前也不必知道循环的次数,因为,每次在循环结束时该设备的循环专用指令会判断是否执行了循环,只有判断要执行循环时才使用寄存在专用缓冲区中的指令或地址。
由于本发明的设备独立于循环的内容或循环的次数,因此能有效地高速处理循环。
附图说明
从以下与附图相关的说明中可以看出本发明的上述及其他目标、优点和特点,附图说明了本发明的特定实施例。在附图中:
图1显示了三次重复求取两个整数和与积的源程序。
图2显示了使用先有编译器对上述源程序进行编译所获得的机器语言指令序列。
图3显示了先有技术的编译器执行图2的指令序列时形成的一流水线。
图4显示了一框图,它显示了在本发明的第一至第七实施例中所用的数据处理设备的结构。
图5是在本发明的上述实施例中所用的编译器102的操作过程的流程图。
图6是在本发明的上述实施例中所用的处理器107的操作过程的流程图。
图7显示了在本发明的上述实施例中所用的机器语言指令序列106。
图8显示了第一实施例中处理器107执行图7的指令序列时所形成的指令流水线108-110。
图9的表使用符号显示了在时钟周期8至10的指令流水线。
图10显示了第二实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
图11显示了第三实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
图12显示了第四实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
图13显示了第五实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
图14显示了第六实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
图15显示了第七实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
图16显示了第八实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
图17显示了第九实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
图18显示了第十实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
图19显示了第十一实施例中数据处理设备执行循环专用转移指令“lcc”时形成的流水线。
具体实施方式
下面参照附图详细说明本发明的较佳实施例
<第一实施例>
<结构>
图4是显示本发明第一实施例的数据处理设备的结构的框图。应注意,图4还显示了本发明的设备要处理的源程序以及由本发明的设备在中间阶段所产生的机器语言指令序列106。
本发明从整体上分为编译器102和处理器107。
编译器102将以高级语言编写的源程序编译成机器语言指令序列并将其输出为机器语言指令序列106。编译器102包括循环检测部分103、循环存储部分104以及高速循环应用部分105。
循环检测部分103检测给定的满足一定条件的源程序中的循环并将用于标识所检测到的循环入口和出口的位置信息作为循环信息存储在循环存储部分104中。注意,本文中的术语“循环”指的是这样一种循环,它具有一个入口和一个或多个出口,并且不可能与其他循环交叉。同时也应注意,循环的入口是进行循环处理时放置最开始执行的指令的位置,循环的出口是进行一次循环时放置最后执行的指令的位置。
循环检测部分103在检查了源程序中是否写有诸如“do”、“while”指令之后检测循环。或者,循环检测部分103可以通过分析控制流程来检测循环(例如参见Alfred V._Aho Ravi Setchi和Jeffrey D.Ullman的Compilers Principle,Techniques,and Tools,Addion-Wesley出版公司,1985)。注意,“在一给定的满足一定条件的源程序中的所有循环”是指下列循环:
(a)没有嵌套在其他循环内的或它自己没有任何嵌套循环的独立循环。
(b)在一个循环中嵌套有一个或多个循环时,从最内层起至多有两个嵌套循环。
在(b)中只允许两个循环的原因是循环的处理受到转移目标存储部分114的限制(稍后解释)
循环存储部分104包括一RAM和其他部分并且可以暂时存储从循环检测部分103送来的用于每一循环的循环信息。循环信息包括用于指示源程序中对应于循环入口和出口的语句的位置的位置信息。
高速循环应用部分105根据存储在循环信息存储部分104内的循环信息产生用于高速循环处理的三种机器语言指令(以后称做高速循环指令)。这三种高速循环指令如下:
转移目标寄存指令,它写在循环入口的紧前面的位置处。
转移目标清除指令,它写在紧接在循环出口的后面的位置处。
循环专用转移指令,它写在可转到循环入口的各个位置处。
“紧接在循环出口的后面”是指循环处理结束从循环处理中退出以后马上执行的指令的位置。“可转到循环入口的各个位置”是指可以返回至循环入口以便重复循环处理的所有位置,它并不限于一个。
注意,源程序中除了循环以外的所有语句也都由编译器102编译成机器语言指令。由于这些编译过程与通用编译器一样,因此这里不在对它们说明。
处理器107从编译器102接收机器语言指令序列106,然后从该指令序列中逐个取指令进行译码和执行。处理器107包括取指部分108、指令译码部分109、执行部分110、转移目标寄存部分111、分支目标清除部分112、分支执行部分113和转移目标存储部分114。处理器107的各个部件的操作与时钟发生器的时钟信号同步,时钟发生器在图中未显示。流水线包括取指部分108、指令译码部分109和执行部分110,每一部分沿图中所示方向与时钟信号同步地顺序传送指令到另一部分。
取指部分108在一个时钟周期从机器语言指令序列106中取一指令,该机器语言指令序列存在外部存储器中(图中未示),然后在下一时钟周期将该指令送到指令译码部分。取指部分108包括取指计数器108a和取指缓冲区108b。
取指计数器108a指示下次要取的指令的地址,并将该地址输出到存储有机器语言指令序列106的外部存储器。在取出指令之后,取指计数器108a的值由增一装置(该装置在图中未示出)增一,从而更新为下一个要取的地址。然而,如果自转移执行部分113来一命令,则该命令优先于上述过程,然后,取指计数器108a的值更新为传送自转移执行部分113的地址。
取指缓冲区108b包括一寄存器并用于存储从机器语言指令序列中取出的指令。
指令译码部分109包括译码计数器109a和译码指令缓冲区109b,指令译码部分109对存储在译码指令缓冲区109b中的指令进行译码。当指令译码部分109判断出存储在译码指令缓冲区109b中的指令是任一高速循环指令时,指令译码部分109就根据所存储的高速循环指令启动转移目标寄存部分111、转移目标清除部分112和转移执行部分113之一。另一方面,当判断出存储在译码指令缓冲区109b中的指令是一非高速循环指令时,指令译码部分109对该指令进行译码并将译码后的指令送到执行部分110。注意,由指令译码部分所译码的指令也称做微指令。
译码计数器109a存储当前存储在译码指令缓冲区109b中的指令在外部存储器中的地址。一般地说,传送自取指计数器108a的地址存储在译码计数器109a中,但是,如果自转移执行部分113来一命令,译码计数器109a就更新为传送自转移执行部分113的地址。
译码指令缓冲区109b存储来自取指缓冲区108b或转移执行部分113的指令。
执行部分110包括执行计数器110a和执行控制部分110b。
执行计数器110a存储与执行部分110所执行的微指令相对应的那条指令在外部存储器106中的地址。
一般来讲,执行计数器110a存储来自译码计数器109a的地址。然而,如果自转移执行部分113来一个命令,则执行计数器110a的值就被更新为来自转移执行部分113的地址。
执行控制部分110b包括一算术逻辑单元(ALU)和一移位器并且用于根据来自指令译码部分109或转移执行部分113的微指令来控制处理器107的各部件,同时输入或输出图中未显示的控制信号。该控制信号与处理器相通连。
当指令译码部分109判断出存储在译码指令缓冲区109b的指令是一转移目标寄存指令时,指令译码部分109就会启动转移目标寄存部分111。启动后的转移目标寄存部分111在下一个时钟周期读出译码计数器109a的一个地址以及译码指令缓冲区109b的一个指令,并将它们作为转移目标信息寄存在转移目标存储部分114中。
当指令译码部分109判断出存储在译码指令缓冲区109b内的指令是一转移目标清除指令时,该指令译码部分109会启动转移目标清除部分112。启动后的转移目标清除部分112可将寄存在转移目标存储部分114中的一组转移目标信息清除。
当指令译码部分109判断出存储译码指令缓冲区109b的指令是一循环专用转移指令时,该指令译码部分109会启动转移执行部分113。启动后的转移执行部分113可将寄存在转移目标存储部分114中的一组转移目标信息读出、将读出的地址存储在取指计数器108a内、然后在下一时钟周期将所读出的指令存储在译码指令缓冲区109b中。
转移目标存储部分114包括后进先出(LIFO)锁存器并且最多具有可存储两组转移目标信息的容量。转移目标信息由转移目标寄存部分111写在转移目标存储部分114上并且被转移目标清除部分112所清除。
<操作>
现在说明具有以上结构的数据处理设备是如何工作。图5和图6是本发明设备的编译器102和处理器107的流程图。
假设图一中所示的源程序输入给了编译器102。
当源程序输入给编译器102时(步骤S201),循环检测部分103检测包含在源程序中的循环(步骤S202)。在图一的源程序中,“for”语句表示一个循环。因此,循环检测部分103将指示该循环的入口和出口的位置信息存储在循环存储部分104内(步骤S203)。
高速循环应用部分105读出存储在循环信息存储部分104中的循环信息、并将转移目标寄存指令“set”输出到紧挨在该循环入口前的位置(步骤S204)、还将转移目标清除指令“clr”输出到紧接在该循环出口处的位置(步骤S205)、并且将循环专用转移指令“lcc L”输出到转移至该循环入口的位置(步骤S206)。注意,对于该源程序的其他部分来说,编译器102输出一般的执行指令。
图7中所示的机器语言指令序列106由编译器102输出,而图2所示由先有技术的设备输出的机器语言指令序列则是对同一源程序进行编译的结果。从两图对比可看出,图7的机器语言指令序列增加了转移目标寄存指令“set”和转移目标清除指令“clr”,而图2的转移指令“bcc L”被循环专用转移指令“lcc L”所代替。
机器语言指令序列106输出到外部存储器并由处理器107执行(步骤S303至步骤S309)。
取指部分108逐个从机器语言指令序列106中取指令(步骤S301)。
取出的指令在下一时钟周期送至指令译码部分109并被译码(步骤S302至步骤S307)。当指令译码部分109通过译码结果判断出上述指令是高速循环指令“set”,“clr”,“lcc”之一时,就进行与该指令相应的操作(步骤S303,S305和S307)。如果该指令不是高速循环指令,则译码后的指令就在下一时钟周期送到执行部分110并且被执行(步骤S308)。
重复步骤S301至步骤S308直到执行完机器语言指令序列106中的最后一条指令(步骤S309)。
以下详细说明在执行高速循环指令“set”,“clr”或“lcc”时处理器107的各个部件是如何运行的。
图8显示了执行图7中所示的机器语言指令序列时处理器107中的流水线的组成部分108至110是如何工作的。图8的“IF”,“DEC”和“EX”的列显示了分别由取指部分108,指令译码部分109和执行部分110所取的指令。#S在时钟周期2所取的转移目标寄存指令部分“set”在时钟周期3送到译码指令缓冲区109b。然后,指令译码部分109将送到译码指令缓冲区109b的指令识别为转移目标寄存指令“set”并启动转移目标寄存部分111。
在下一时钟周期,启动后的转移目标寄存部分111读出译码计数器109a中的一个地址和译码指令缓冲区109b中的一条指令、并将它们作为转移目标信息寄存在转移目标存储部分114中。在这种情况下,所说的指令是“add a,b,c”而所说的地址则是上述指令在外部存储器中的地址。注意,由于转移目标存储部分114具有最多存储两组转移目标信息的容量,因此,在寄存了上述一组信息之后,存储部分114只有最多一组分支目标信息的容量。
在时钟周期7所取的循环专用转移指令“lcc”在时钟周期8传送到译码指令缓冲区109b。接着,指令译码单元109将传送到译码指令缓冲区l09b的指令识别为循环专用转移指令“lcc”、并启动转移执行部分113。
启动后的转移执行部分113传送一值给取指计数器108a。该值是通过将“4”加到寄存在转移目标存储部分114内地址上而得到的,其中“4”表示指令“add a,b,c”的长度。该值等于在指令“add a,b,c”之后存储的那条指令的地址。然后,转移执行部分113将寄存在转移目标存储部分114内的地址和指令分别传送到译码计数器109a和译码指令缓冲区109b。#S结果,在时钟周期9,取指部分108从外部存储器取指令“mul a,b,d”,指令译码部分109对传送自转移目标存储部分114的指令“add,a,b,c,”及其地址进行译码,而执行部分110则执行指令“lcc L”。当执行指令“lcc L”时,进行与指令“bcc L”同样的判断。在这种情况下,根据先前执行的指令“cmp i,3”的结果判断出程序应该重复循环。因此在时钟周期10至14进行该循环的第二次重复。
图9用符号示出了上述时钟周期8-10中的指令流水线的操作。图9下部所示的图可供参照,它与图8中时钟周期8-10内的流水线流程相同。
图9中符号“IR”、“IC”、“DR”、“DC”、“ER”和“EC”代表图4中所示的部件108至110的组成部分并用于指示地址或指令的信息是如何传送的。BR1和BR2代表转移目标存储部分114的组成部分,在这种情况,它们分别用于指示指令“add a,b,c”的地址和指令“add a,b,c”。与循环专用分支指令“lcc”有关的操作是本发明设备的特征,这些操作用虚线框起。
<IF阶段>
IR←(IC):将地址IC所代表的指令传送至IR。
IC←BR1+4:存储在BR1的地址加4并送到IC。
在图9中,上述传送操作写成两行。这表示在上一行所进行的传输是在时钟周期的前半部分进行的,而在下一行所进行的传输是在时钟周期的后半部分进行的。在这种情况下,先进行IR←(IC)传送,再进行IC←BR1+4传送。
<DEC阶段>
DR←IR:存储在IR中的指令传送到DR。
DC←IC:存储在IC中的地址传送到DC。
在图9中,上面的传送操作DR←IR和DC←IC写在一行内,这表示这些传送是同时进行的。
<EX阶段>
ER←DR:存储在DR中的指令传送到ER。
EC←DC:存储在DC中的地址传送到EC。
在时钟周期8的流水线的上述操作与在时钟周期13和18中的相同。
当在时钟周期15-18执行循环的第三次重复时,程序在时钟周期19执行指令“lcc L”时判断出循环应该结束,然后在时钟周期20取紧接在该循环的出口之后的转移目标清除指令“clr”。在下一时钟周期21所取的转移目标清除指令“clr”传送到译码指令缓冲区109。译码指令缓冲区109将所传送的指令识别为转移目标清除指令clr并启动转移目标清除部分112。
启动后的转移目标清除部分112清除寄存在转移目标存储部分114中的指令“add a,b,c”及其地址。注意,在上述操作之后转移目标存储部分114的存储容量会恢复成分成两组的转移目标信息。
从以上的说明中可以看出,本发明的设备可在编译源程序时产生高速循环指令并且会在进行第一次循环时将循环的起始指令及其地址寄存到转移目标存储部分114内,转移目标存储部分114是处理器107内部的专用缓冲区。在对能使循环重复的转移指令译码之后,处理器107不需要计算转移目标地址或者从低速外部存储器取转移目标指令。相反,处理器107可从转移目标存储部分114中取出转移目标地址和转移目标指令。
因此,从图3和图8的流水线的比较中可以很明显地看到,在编译和执行包含有循环的同一程序时,传统的装置中存在转移冒险,而在本设备中则没有。这表示本设备提高了循环操作的速度。
<第二实施例>
以下说明本发明的第二实施例的数据处理设备。该设备可通过仅在专用缓冲区中寄存循环的地址而实现高速循环操作。
在第一实施例中,循环的起始地址和起始指令寄存在转移目标存储部分114中,该转移目标存储部分是处理器107内部的专用缓冲区,而在第二实施例中,只寄存起始指令的地址。
<结构>
本实施例的数据处理设备的结构与图4所示的第一实施例相同。但是,本设备中的转移目标存储部分114只存储循环的起始地址。
<操作>
本设备的操作除了在执行转移目标寄存指令“set”和循环专用转移指令“lcc”时的操作不同于第一实施例之外,其它与图5和图6的第一实施例相同,以下对不同之处加以说明。
在转移目标寄存指令“set”传送到译码指令缓冲区109b并且启动转移目标寄存部分111之后,启动后的转移目标寄存部分111在下一时钟周期读取传送到译码计数器109a的地址,即指令“add a,b,c”在外部存储器内的地址,并将该地址寄存在转移目标存储部分114中。
另一方面,在循环专用指令“lcc”传送到译码指令缓冲区并启动转移执行部分113之后,启动后的转移执行部分113将寄存在转移目标存储部分114中的地址传送到取指计数器108a。接着,通过参照取指计数器108a的地址从外部存储器106取一指令,即“add a,b,c”。
图10显示在执行循环专用转移指令“lcc”时流水线上的操作流程。图10对应于第一实施例的图9。其中,BR1表示寄存在转移目标存储部分114内的地址。
在时钟周期8的IF阶段中,取出指令(IC)后,将地址BR1从转移目标存储部分114传送至IC。而且,由于在本实施例中会产生如图10所示那样的一个时钟周期的流水线停顿,所以,转移目标执行部分113会在时钟周期9的DEC阶段将0传送给DR和DC,从而使流水线无效。
从以上的说明可以看出,本发明的设备可在编译源程序时产生高速循环指令并且会在进行第一次循环时将循环的起始地址寄存到转移目标存储部分114内,转移目标存储部分114是处理器107内部的专用缓冲区。而且,对能使循环重复的转移指令进行了译码的处理器107不必计算转移目标的地址,而是可以从转移目标存储部分114中获得转移目标的地址。
因此,可以将先有设备所产生的两个时钟周期的转移冒险减少为一个时钟周期。所以,能提高循环的速度。
<第三实施例>
以下说明本发明的第三实施例的数据处理设备。该设备可通过将一循环的起始指令及其地址寄存在专用缓冲区中并通过使用循环专用转移指令所指定的地址而实现高速循环操作。
<结构>
本实施例的数据处理设备的结构与图4所示的第一实施例的结构相同。
<操作>
本设备的操作除了在执行循环专用转移指令“lcc”时的操作不同于第一实施例外,其它与图5和图6所示的第一实施例相同,以下对不同之处加以说明。
在循环专用转移指令“lcc”传送到译码指令缓冲区109b(DR)并启动转移执行部分113之后,启动后的转移执行部分113将指令“lcc L”所指示的转移地址即标号“L”加上4的值传送到取指计数器108a。然后,转移执行部分113在下一时钟周期将寄存在转移目标存储部分114中的地址和指令add a,b,c分别传送给译码指令计数器109a以及译码指令缓冲区109b。
图11显示了执行循环专用转移指令“lcc”时流水线的操作流程。图11对应于第一实施例的图9。“BR2”用于代表转移目标指令,指令“add a,b,c”,而“BR1”代表上述指令的地址。这两个值都寄存在转移目标存储部分114中。《DR》代表指令DR的一部分即与标号L相应的地址。
在时钟周期8的IF阶段中,首先取存储在IC中的指令,然后将标号“L”加4的值传送给IC,标号L加4是指令DR的一部分。在时钟周期9的DEC阶段,将存储在BR1内的地址和存储在BR2内的指令从转移目标存储部分114分别传送到DC和DR。在接下来的时钟周期中程序的运行与第一实施例相同。
从以上的说明中可以看出,在编译源程序期间检测到循环时,本设备会产生一高速循环指令。在执行该循环的第一次重复时,本发明的设备在转移目标存储部分114中寄存上述循环的起始指令及其地址,转移目标存储部分114是处理器107中的专用缓冲区。对能使循环重复的转移指令进行了译码的处理器107不必计算转移目标的地址和取指令的地址,也不必从低速的外部存储器中取转移目标指令,而是可以从转移目标存储部分114和循环转移指令lcc L中获得获得转移目标指令、转移目标地址以及取指令的地址。因此,本设备消除了先有设备所产生的两个时钟周期的转移冒险现象,从而提高了循环操作的速度。
<第四实施例>
以下说明本发明第四实施例的数据处理设备。本设备可通过寄存循环的起始指令及其地址和取指令的地址而实现高速循环操作。
在第一实施例中,循环的起始地址及起始指令寄存在作为处理器107内部专用缓冲区的转移目标存储部分114中,而在本实施例中,则在上述存储部分中还寄存了在起始指令之后所要取得的指令位于外部存储器106内的地址。
<结构>
本实施例的数据处理设备的结构与图4所示的第一实施例相同。但是,本设备中的转移目标存储部分114存储了循环的起始指令和其地址以及取指令的地址。
<操作>
本设备的操作除了在执行转移目标寄存指令“set”和循环专用转移指令“lcc”时的操作不同于第一实施例之外,其它与图5和图6的第一实施例相同。以下对不同之处进行说明。
在转移目标寄存指令“set”传送到译码指令缓冲区109b(DR)并启动转移目标寄存部分111之后,启动后的转移目标寄存部分111在下一时钟周期读取传送到译码计数器109a的地址和传送到译码指令缓冲区109b的指令“add a,b,c”,并将上述地址、指令以及上述地址加4所得出的取指令的地址寄存到转移目标存储部分114内。
另一方面,在循环专用转移指令“lcc”传送到译码指令缓冲区109b并启动转移执行部分113之后,启动后的转移执行部分113将寄存在转移目标存储单元114中的取指令的地址传送到取指计数器108a。然后,转移执行部分113分别将指令“add a,b,c”及其地址送到译码指令缓冲区10。#S图12显示执行循环专用转移指令“lcc”时流水线上的操作流程。图12对应于第一实施例的图9。其中,BR1、BR2和BR3分别代表寄存在转移目标寄存部分114内的地址、指令和取指令的地址。
在时钟时期8的IF阶段,取出指令(IC)之后,将地址BR3从转移目标存储部分114传送给IC。在时钟周期9的DEC阶段,存储在BR2中的指令和存储在BR1中的地址分别从转移目标存储部分114传送到DR和DC。
从以上的说明中可以看出,在编译源程序期间检测到循环时,本设备会产生一高速循环指令。在执行该循环的第一次重复时,本发明的设备会将循环的起始指令、起始地址以及取指令的地址寄存到作为处理器107内部专用缓冲区的转移目标存储部分114中。而且,对能使循环重复的转移指令进行了译码的处理器107不必计算转移目标地址以及取指令的地址,而是可以从转移目标存储部分114中获得转移目标指令、转移目标地址以及取指令的地址。
因此,本设备消除了先有设备所产生的两个时钟周期的转移冒险现象,从而提高了循环操作的速度。
<第五实施例>
以下说明本发明的第五实施例的数据处理设备。本设备通过寄存循环的起始指令和取指令的地址以及通过使用循环专用转移指令所指定的转移目标地址而实现高速循环操作。
在第一实施例中,循环的起始地址和起始指令寄存在作为处理器107内部专用缓冲区的转移目标存储部分114中,而在本实施例中,上述转移目标存储部分中则寄存有起始指令和取指令的地址。
<结构>
本实施例的数据处理设备的结构与图4所示的第一实施例的结构相同,但是,本设备中的转移目标存储部分114存储了循环的起始指令和取指令的地址。
<操作>
本设备的操作除了在执行转移目标寄存指令“set”和循环专用转移指令“lcc”时的操作不同于第一实施例之处,其它与图5和图6的第一实施例相同。以下对不同之处进行说明。
在转移目标寄存指令“set”传送到译码指令缓冲区109b(DR)并启动转移目标寄存部分111之后,启动后的转移目标寄存部分111会在下一时钟周期读取传送到译码计数器109a的地址和传送到译码指令缓冲区109b的指令“add a,b,c”并将上述地址加4而得到的取指令的地址和上述指令“add a,b,c”寄存到转移目标存储部分114内。
另一方面,在循环专用转移指令“lcc”传送到译码指令缓冲区109b并启动转移执行部分113之后,启动后的转移执行部分113将寄存在转移目标存储部分114中的取指令的地址传送到取指计数器108a。然后,在下一时钟周期,转移执行部分113先将指令lcc所指定的地址即标号L从译码指令缓冲区109b传送至译码指令计数器109a,再将寄存在转移目标存储部分114内的指令adda,b,c传送至译码指令缓冲区109b。
图13显示执行循环专用转移指令“lcc”时流水线上的操作流程。图13对应于第一实施例的图9。“BR2”和“BR3”分别代表寄存在转移目标存储部分14中的指令“add a,b,c”和取指令的地址。
在时钟周期8的IF阶段中,取出指令(IC)之后将地址BR3从转移目标存储部分114传送至IC。在时钟周期9的DEC阶段,指令DR的一部分首先被传送到DC,然后,存储在BR2中的指令从转移目标存储部分114传送到DR。在以后的时钟周期中,程序的运行与第一实施例相同。
从以上的说明中可以看出,在编译源程序时,本设备会产生一高速循环指令,并且,在执行循环的第一次重复期间,本发明的设备会将循环的起始指令和取指令的地址寄存到作为处理器107内部专用缓冲区的转移目标存储部分114中。而且,对能使循环重复的转移指令进行了译码的处理器107不必计算转移目标地址和取指令的地址,也不必从低速的外部存储器中取转移目标指令,而是可以从转移目标存储部分114和专用循环指令lcc L中获得转移目标指令,取地址的指令以及转移目标的地址。
因此,本设备消除了先有设备所产生的两个时钟周期的转移冒险现象,从而提高了循环操作的速度。
<第六实施例>
以下说明本发明的第六实施例的数据处理设备。本设备可通过在转移目标存储部分114中寄存循环的起始指令和取指令的地址以及使用特定的表达式来计算转移目标的地址而实现高速循环操作。
Claims (17)
1.一种通过编译源程序而生成机器语言指令序列的编译器,其特征在于,包括:
循环信息存储装置;
循环检测装置,它用于检测存在于源程序中的特定的循环处理,并且将有关该循环处理的入口的信息,存储在上述循环信息存储装置;以及
高速循环应用装置,根据存储于上述循环信息存储装置的信息,在紧接循环处理的入口之前产生转移目标信息寄存指令,并在循环处理入口的转移位置,产生循环专用转移指令。
2.如权利要求1所述的编译器,其特征在于,高速循环应用装置还根据存储于上述循环信息存储装置中的信息,在紧接循环处理出口之后,产生转移目标信息清除指令。
3.一种通过流水线处理执行机器语言指令序列的处理器,其特征在于,备有:
转移目标信息存储装置;
指令译码装置,将上述机器语言指令序列的指令译码;
寄存装置,在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,将关于由在上述转移目标信息寄存指令的上述机器语言指令序列中的设置位置所决定的指令的规定的转移目标信息寄存在上述转移目标存储装置中;以及
转移执行装置,在上述指令译码装置将上述指令译码为循环专用转移指令、并且在上述循环专用指令中进行转移时,就读取寄存在上述转移目标信息存储装置中的上述转移目标信息,并根据该信息转移。
4.如权利要求3所述的处理器,其特征在于:
上述寄存装置,在上述指令译码装置将上述指令解码为转移目标信息寄存指令时,将关于接在上述转移目标信息寄存指令之后的信息作为上述转移目标信息寄存在上述转移目标信息存储装置中。
5.如权利要求4所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将存放着接在该指令之后的指令的地址和接在该指令之后的规定数目的指令序列寄存在转移目标存储装置中,并且,如果已判断出要执行循环处理时,上述转移执行装置就读出寄存在上述转移目标信息存储装置中的地址和指令序列,转移至该地址,并且执行该指令序列,取出从由上述循环专用转移指令指定的地址开始的指令序列。
6.如权利要求3所述的处理器,其特征在于,
所述转移执行装置,在上述指令译码装置将上述指令译码为循环专用转移指令时,判断是否重复循环处理,当判断为要重复循环处理时,就读取寄存在上述转移目标信息存储装置中的上述转移目标信息,并根据该信息转移。
7.如权利要求6所述的处理器,其特征在于,具有:
清除装置,在上述指令译码装置将上述指令译码为转移目标信息清除指令时,将寄存在上述转移目标信息存储装置中的转移目标信息清除。
8.如权利要求7所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将存放着接在该指令之后的指令的地址寄存在上述转移目标存储装置中,并且,如果已判断出要执行循环处理时,上述转移执行装置就读出寄存在上述转移目标存储装置中的地址并转移至该地址。
9.如权利要求7所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将存放着接在该指令之后的指令的地址和接在该指令之后的规定数目的指令序列寄存在上述转移目标存储装置中,并且,如果已判断出要执行一循环处理时,上述转移执行装置就读出寄存在上述转移目标信息存储装置中的地址和指令序列,转移到该地址,并且执行该指令序列,取出从一特定地址开始的指令序列,所说的特定地址则是通过对所读出的地址进行规定的运算而得到的。
10.如权利要求7所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将存放着接在该指令之后的指令的第一个地址、接在该指令之后规定数目的指令序列、和紧接在该指令序列之后要执行的指令的第二个地址寄存在转移目标存装置中,并且,
如果已判断出要执行循环处理时,上述转移执行装置就读出寄存在上述转移目标信息存储装置中的第一个地址,指令序列和第二个地址,转移至第一个地址,并且执行该指令序列,和取出从上述第二个地址开始的指令序列。
11.如权利要求7所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将存放着接在该指令之后的规定数目的指令序列和紧接在该指令序列之后要执行的指令的地址寄存在上述转移目标信息存储装置中,并且
如果已判断出要执行循环处理时,上述转移执行装置就读出寄存在上述转移目标信息存储装置中的指令序列和地址,转移到由上述循环专用转移指令指定的地址,并且执行上述指令序列,并取出存储在所述地址中的下一个应执行的指令序列。
12.如权利要求6所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将存放着接在该指令之后的规定数目的指令序列、和紧接在该指令序列之后要执行的指令的地址寄存在上述转移目标信息存储装置中,并且
如果已判断出要执行一循环处理时,上述转移执行装置就读出寄存在上述转移目标信息存储装置中的指令序列和地址,转移到通过对该地址进行规定的运算而得到的地址,执行上述指令序列,并取出存储在所述地址中的下一个应执行的指令序列。
13.如权利要求7所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将存放着接在该指令之后的指令的地址以及微指令序列寄存在上述转移目标信息存储装置中,上述微指令序列是对接在该指令后的规定数目的指令序列进行译码的结果,并且,如果已判断出要执行循环处理时,上述转移执行装置就读出寄存在上述转移目标信息存储装置中的地址和微指令序列,转移到该地址并且执行该微指令序列,并取出从由上述循环专用转移指令所指定的地址开始的指令序列。
14.如权利要求7所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将存放着接在该指令之后的指令的地址和微指令序列寄存在上述转移目标信息存储装置中,上述微指令序列是对接在该指令之后的规定数目的指令序列进行译码的结果,并且,
如果已判断出要执行循环处理,上述转移执行装置就读出寄存在上述转移目标信息存储装置中的地址和微指令序列,转移到该地址并且执行该微指令序列,并取出从通过对该地址进行规定的运算而得到的地址开始的指令序列。
15.如权利要求7所述的处理器,其特征在于:
在所述指令被所述指令译码装置译码为转移目标信息寄存指令时,所说的寄存装置就将存放着接在该上述指令之后的指令的第一地址、微指令序列以及存放着紧接在该微指令序列之后要执行的指令的第二地址寄存在上述转移目标信息存储装置中,所说的微指令序列是对接在该指令之后的规定数目的指令序列进行译码的结果,并且,
如果已判断出要执行循环处理时,上述转移执行装置就读出寄存在上述转移目标信息存储装置中的第一地址、微指令序列以及第二地址,转移到第一地址,并且执行该微指令序列,和取出从第二地址开始的指令序列。
16.如权利要求7所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将微指令序列和放置紧接在该微指令序列之后要执行的指令的地址寄存在上述转移目标存储装置中,所说的微指令序列是对接在该指令之后的规定数目的指令序列进行译码的结果,并且,如果已判断出要执行循环处理时,上述转移执行装置就读出寄存在上述转移目标存储装置中的微指令序列和地址,转移到由上述循环专用转移指令所指定的地址,并执行该微指令序列,和取出存储在所述地址中的下一个应执行的指令序列。
17.如权利要求7所述的处理器,其特征在于:
在上述指令译码装置将上述指令译码为转移目标信息寄存指令时,所说的寄存装置就将微指令序列和存放着紧接在该微指令序列之后要执行的指令的地址寄存在上述转移目标存储装置中,所说的微指令序列是对接在该指令之后的规定数目的指令序列进行译码的结果;并且,
如果已判断出要执行循环处理时,上述转移执行装置就读出寄存在上述转移目标信息存储装置中的微指令序列和地址,转移到通过对该地址进行规定的运算而得到的地址,并执行该微指令序列,和取出存储在所述地址中的下一个应执行的指令序列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP114520/1995 | 1995-05-12 | ||
JP114520/95 | 1995-05-12 | ||
JP7114520A JP2987311B2 (ja) | 1995-05-12 | 1995-05-12 | プロセッサ及び翻訳装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1138175A CN1138175A (zh) | 1996-12-18 |
CN1143213C true CN1143213C (zh) | 2004-03-24 |
Family
ID=14639814
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB96103713XA Expired - Lifetime CN1143213C (zh) | 1995-05-12 | 1996-03-22 | 高速处理循环的编译器和处理器 |
Country Status (7)
Country | Link |
---|---|
US (1) | US5850551A (zh) |
EP (1) | EP0742518B1 (zh) |
JP (1) | JP2987311B2 (zh) |
KR (1) | KR100253655B1 (zh) |
CN (1) | CN1143213C (zh) |
DE (1) | DE69614917T2 (zh) |
TW (1) | TW294802B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10214203A (ja) * | 1997-01-29 | 1998-08-11 | Nec Corp | 情報処理装置 |
US6189092B1 (en) * | 1997-06-30 | 2001-02-13 | Matsushita Electric Industrial Co., Ltd. | Pipeline processor capable of reducing branch hazards with small-scale circuit |
US6076159A (en) * | 1997-09-12 | 2000-06-13 | Siemens Aktiengesellschaft | Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline |
US6085315A (en) * | 1997-09-12 | 2000-07-04 | Siemens Aktiengesellschaft | Data processing device with loop pipeline |
US6233676B1 (en) * | 1999-03-18 | 2001-05-15 | Ip-First, L.L.C. | Apparatus and method for fast forward branch |
US20020087851A1 (en) * | 2000-12-28 | 2002-07-04 | Matsushita Electric Industrial Co., Ltd. | Microprocessor and an instruction converter |
US7278137B1 (en) * | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
JP3886870B2 (ja) * | 2002-09-06 | 2007-02-28 | 株式会社ルネサステクノロジ | データ処理装置 |
US7457936B2 (en) * | 2003-11-19 | 2008-11-25 | Intel Corporation | Memory access instruction vectorization |
JP5043560B2 (ja) | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
JP5692089B2 (ja) * | 2009-11-24 | 2015-04-01 | 日本電気株式会社 | プロセッサ、プロセッサによるループ回数制御方法 |
WO2011079942A1 (en) | 2009-12-28 | 2011-07-07 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
US10241793B2 (en) * | 2013-03-15 | 2019-03-26 | Analog Devices Global | Paralleizing loops in the presence of possible memory aliases |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4463422A (en) * | 1982-07-12 | 1984-07-31 | Csp, Inc. | Method of processing an iterative program loop |
JPS6051948A (ja) * | 1983-08-31 | 1985-03-23 | Hitachi Ltd | 情報処理装置 |
JP2708405B2 (ja) * | 1986-03-03 | 1998-02-04 | 株式会社日立製作所 | コンパイラにおけるループ展開方法 |
US4933837A (en) * | 1986-12-01 | 1990-06-12 | Advanced Micro Devices, Inc. | Methods and apparatus for optimizing instruction processing in computer systems employing a combination of instruction cache and high speed consecutive transfer memories |
JP3102027B2 (ja) * | 1990-11-20 | 2000-10-23 | 日本電気株式会社 | ループ制御のネスティング管理機構 |
US5450585A (en) * | 1991-05-15 | 1995-09-12 | International Business Machines Corporation | Compiler with delayed conditional branching |
GB2285154B (en) * | 1993-12-24 | 1998-04-01 | Advanced Risc Mach Ltd | Branch cache |
-
1995
- 1995-05-12 JP JP7114520A patent/JP2987311B2/ja not_active Expired - Lifetime
-
1996
- 1996-01-22 US US08/588,051 patent/US5850551A/en not_active Expired - Lifetime
- 1996-02-23 EP EP96301228A patent/EP0742518B1/en not_active Expired - Lifetime
- 1996-02-23 DE DE69614917T patent/DE69614917T2/de not_active Expired - Lifetime
- 1996-02-27 TW TW085102242A patent/TW294802B/zh not_active IP Right Cessation
- 1996-03-22 CN CNB96103713XA patent/CN1143213C/zh not_active Expired - Lifetime
- 1996-05-13 KR KR1019960015748A patent/KR100253655B1/ko not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
JPH08314719A (ja) | 1996-11-29 |
DE69614917T2 (de) | 2002-01-17 |
EP0742518A2 (en) | 1996-11-13 |
TW294802B (zh) | 1997-01-01 |
EP0742518B1 (en) | 2001-09-05 |
KR960042425A (ko) | 1996-12-21 |
US5850551A (en) | 1998-12-15 |
KR100253655B1 (ko) | 2000-04-15 |
EP0742518A3 (en) | 1997-05-28 |
JP2987311B2 (ja) | 1999-12-06 |
DE69614917D1 (de) | 2001-10-11 |
CN1138175A (zh) | 1996-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN1101019C (zh) | 数据序列产生方法及设备、转换方法及计算机 | |
CN1143213C (zh) | 高速处理循环的编译器和处理器 | |
CN1249963C (zh) | 使用分组摘要信息快速和自适应处理分组的设备和方法 | |
CN1129843C (zh) | 使用组合的数据处理器系统和指令系统 | |
CN1302380C (zh) | 处理器和编译器 | |
CN100351810C (zh) | 对特定指令类型的指令执行和数据访问计数的方法和系统 | |
CN1088214C (zh) | 用多指令集处理数据的器件和方法 | |
CN1252144A (zh) | 一可编程组件中可构元件的自同步方法 | |
CN1258154C (zh) | 多处理器系统、数据处理系统和数据处理方法 | |
CN1153129C (zh) | 用于处理器定制操作的设备 | |
CN1749955A (zh) | 控制处理器和协处理器间的数据传输的运算处理装置 | |
CN1842779A (zh) | 用于执行simd运算的数据处理系统及其方法 | |
CN1869952A (zh) | 指令执行设备、调试方法、调试设备以及调试程序 | |
CN1722130A (zh) | 可重配置运算装置 | |
CN1627270A (zh) | 用于对指令执行和数据访问进行计数的方法和设备 | |
CN1613058A (zh) | 配有jit编译器的虚拟计算机,操作所述计算机的方法以及包括所述虚拟计算机的终端设备 | |
CN1177772A (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多程序流程同时处理器 | |
CN1678988A (zh) | 数据处理设备中的流水线之间的同步化 | |
CN1742257A (zh) | 基于识别寻址模式的双目的寄存器的数据预测机制 | |
CN1245684C (zh) | 用于在赋值语句中查找归约变量的方法和系统 | |
CN101051301A (zh) | 用于操作计算机处理器阵列的方法和装置 | |
CN1329303A (zh) | 处理器中指令的预测执行 | |
CN1503142A (zh) | 控制高速缓存的高速缓存系统和高速缓存控制装置 | |
CN1178942A (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 | ||
CX01 | Expiry of patent term |
Granted publication date: 20040324 |
|
EXPY | Termination of patent right or utility model |