CN1138175A - 高速处理循环的编译器和处理器 - Google Patents
高速处理循环的编译器和处理器 Download PDFInfo
- Publication number
- CN1138175A CN1138175A CN96103713A CN96103713A CN1138175A CN 1138175 A CN1138175 A CN 1138175A CN 96103713 A CN96103713 A CN 96103713A CN 96103713 A CN96103713 A CN 96103713A CN 1138175 A CN1138175 A CN 1138175A
- Authority
- CN
- China
- Prior art keywords
- instruction
- address
- circulation
- aim
- diverts
- 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
Links
- 238000012545 processing Methods 0.000 title description 41
- 238000003860 storage Methods 0.000 claims abstract description 156
- 230000004087 circulation Effects 0.000 claims description 223
- 238000012546 transfer Methods 0.000 claims description 114
- 230000005055 memory storage Effects 0.000 claims description 52
- 239000000284 extract Substances 0.000 claims description 3
- 125000004122 cyclic group Chemical group 0.000 claims 1
- 238000013519 translation Methods 0.000 description 66
- 238000000034 method Methods 0.000 description 34
- 230000001351 cycling effect Effects 0.000 description 25
- 230000008569 process Effects 0.000 description 20
- 230000003139 buffering effect Effects 0.000 description 10
- 238000001514 detection method Methods 0.000 description 10
- 238000000151 deposition Methods 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 239000004615 ingredient Substances 0.000 description 3
- 230000003252 repetitive effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 101150014615 LCC2 gene Proteins 0.000 description 1
- 101150055297 SET1 gene Proteins 0.000 description 1
- 101100328360 Schizosaccharomyces pombe (strain 972 / ATCC 24843) clr1 gene Proteins 0.000 description 1
- 101100328361 Schizosaccharomyces pombe (strain 972 / ATCC 24843) clr2 gene Proteins 0.000 description 1
- 101150117538 Set2 gene Proteins 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 101150075807 lcc1 gene Proteins 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
本发明的背景
(1)本发明的领域
本发明涉及到将源程序编译成机器指令序列的编译器以及通过流水线式处理来执行这些机器指令序列的处理器,更具体地说,本发明涉及到高速执行循环的编译器和处理器。(2)对先有技术的说明
流水线式处理是一种用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执行了转移指令“bcc L”之后,处理器将指令“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所取的指令。
在时钟周期2所取的转移目标寄存指令部分“set”在时钟周期3送到译码指令缓冲区109b。然后,指令译码部分109将送到译码指令缓冲区109b的指令识别为转移目标寄存指令“set”并启动转移目标寄存部分111。
在下一时钟周期,启动后的转移目标寄存部分111读出译码计数器109a中的一个地址和译码指令缓冲区109b中的一条指令、并将它们作为转移目标信息寄存在转移目标存储部分114中。在这种情况下,所说的指令是“add a,b,c”而所说的地址则是上述指令在外部存储器中的地址。注意,由于转移目标存储部分114具有最多存储两组转移目标信息的容量,因此,在寄存了上述一组信息之后,存储部分114只有最多一组分支目标信息的容量。
在时钟周期7所取的循环专用转移指令“lcc”在时钟周期8传送到译码指令缓冲区109b。接着,指令译码单元109将传送到译码指令缓冲区109b的指令识别为循环专用转移指令“lcc”、并启动转移执行部分113。
启动后的转移执行部分113传送一值给取指计数器108a。该值是通过将“4”加到寄存在转移目标存储部分114内地址上而得到的,其中“4”表示指令“add a,b,c”的长度。该值等于在指令“adda,b,c”之后存储的那条指令的地址。然后,转移执行部分113将寄存在转移目标存储部分114内的地址和指令分别传送到译码计数器109a和译码指令缓冲区109b。
结果,在时钟周期9,取指部分108从外部存储器取指令“mula,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”及其地址送到译码指令缓冲区109b。
图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中寄存循环的起始指令和取指令的地址以及使用特定的表达式来计算转移目标的地址而实现高速循环操作。
在第一实施例中,循环的起始地址和起始指令寄存在作为处理器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读出寄存在转移目标存储部分114中的上述地址和指令“add a,b,c”并将上述地址减4所得到的地址和指令“add a,b,c”送到译码指令计数器109a和译码缓冲区109b。
图14显示执行循环专用转移指令“lcc”时流水线上的操作流程。图14对应于第一实施例的图9。“BR2”和“BR3”分别代表寄存在转移目标存储部分114中的指令“add a,b,c”和取指令的地址。
在时钟周期8中的IF阶段,取出指令(IC)之后,将地址BR3从转移目标存储部分114传送至IC。
在时钟周期9的DEC阶段,存储在BR2中的指令从转移目标存储部分114传送到DR,将存储在BR3中的地址减去4,然后将之传送到DC。在以后的时钟周期中,程序的操作与第一实施例相同。
从以上的说明中看出,在编译源程序时,本设备会产生高速循环指令,并且,在执行循环的第一次重复期间,本设备会在作为处理器107内部专用缓冲区的转移目标存储部分114中寄存循环的起始指令和取指令的地址。而且对能使循环重复的转移指令进行了译码的处理器107不需要计算取指令的地址,也不需要从低速外部存储器中取转移目标指令,而是可以从转移目标存储部分114获得前述转移目标指令和取指令的地址。
因此本设备消除了先有设备所产生的两个时钟周期的转移冒险现象,从而提高了循环操作的速度。
[第七实施例]
以下说明本发明的第七实施例的数据处理设备。该设备可通过在转移目标存储部分114中寄存循环的起始地址以及起始的微指令而实现高速循环操作。
在第一实施例中,循环的起始地址和起始指令寄存在作为处理器107内部专用缓冲区的转移目标存储部分114中,而在本实施例中,上述转移目标存储部分中则寄存有起始地址和微指令,此微指令是对上述起始指令进行译码的结果。
[结构]
本实施例的数据处理设备的结构与图4所示的第一实施例的结构相同,但是,本设备的转移目标存储部分114存储有循环的起始指令以及起始的微指令。
[操作]
本设备的操作除了在执行转移目标寄存指令“set”和循环专用转移指令“lcc”时的操作不同于第一实施例之外,其它与图5和图6的第一实施例相同。以下对不同之处进行说明。
在转移目标寄存指令“set”传送到译码指令缓冲区109b(DR)并启动转移目标寄存部分111之后,启动后的转移目标寄存部分111在下一时钟周期分别读取来自译码计数器109a和译码指令缓冲区109b的地址和指令“add a,b,c”的译码结果并将所读出的信息寄存在转移支目标存储部分114中。
另一方面,在循环专用转移指令“lcc”传送到译码指令缓冲区109b并启动转移执行部分113之后,启动后的转移执行部分113将指令“lcc L”所指令的转移地址即标号“L”加4的值传送到取指计数器108a。然后,在下一时钟周期,转移执行部分113将“0”传送到译码指令计数器109a(DC)和译码指令缓冲区109a(DR)以使它们无效,接着,在下一时钟周期,将寄存在转移目标存储部分114内的地址以及指令add a,b,c的译码结果分别传送至执行指令计数器110a和执行控制部分110b。
图15显示执行循环专用转移指令“lcc”时流水线上的操作流程。图15对应于第一实施例的图9。“BR1”和“BR4”分别代表寄存在转移目标存储部分114中的地址和微指令。
在时钟周期8的IF阶段取出指令(IC)后将作为指令DR一部分的标号L加4所得到的值传送给IC。接着,在时钟周期9的DEC阶段,将“0”传送到DC和DR。在时钟周期10的EX阶段,分别将指令BR4及地址BR1从转移目标存储部分114传送到ER和EC。在以后的时钟周期中,程序的操作与第一实施例相同。
从以上的说明中可以看出,在编译源程序时,本设备会产生高速循环指令,并且,在执行循环的第一次重复期间,本设备会在作为处理器107内部专用缓冲区的转移目标存储部分114中寄存循环的起始微指令以及转移目标地址。而且,对能使循环重复的转移指令进行了译码的处理器107不需要计算转移目标地址和取指令的地址,也不需要从低速外部存储器中取转移目标指令并加以译码,而是可以从转移目标存储部分114和循环专用转移指令lcc L中获得转移目标微指令、转移目标地址和取指令的地址。
因此,本设备消除了先有设备所产生的两个时钟周期的转移冒险现象,从而提高了循环循环操作的速度。
[第八实施例]
以下说明本发明的第八实施例的数据处理设备。该设备通过在转移目标存储部分114中寄存循环的起始地址和起始的微指令而实现高速循环操作。
在第一个实施例中,循环的起始地址和起始指令寄存在作为处理器107内部专用缓冲区的转移目标存储部分114中,而在本实施例中,上述转移目标存储部分则寄存有起始地址以及微指令,此微指令是对上述起始指令进行译码的结果。
[结构]
本实施例的数据处理设备的结构与图4所示的第一实施例的结构相同,但是本设备中的转移目标存储部分114存储有循环的起始地址和起始微指令。
[操作]
本设备的操作除了在执行转移目标寄存指令“set”和循环专用转移指令“lcc”时的操作不同于第一实施例之外,其它与图5和图6的第一实施例相同。以下对不同之处进行说明。
在转移目标寄存指令“set”传送到译码指令缓冲区109b(DR)并启动转移目标寄存部分111之后,启动后的转移目标寄存部分111在下一时钟周期分别读取传送给译码计数器109a和译码指令缓冲区109b的地址和指令“add a,b,c”的译码结果,并将所读出的信息寄存在转移支目标存储部分114中。
另一方面,在循环专用转移指令“lcc”传送到译码指令缓冲区109b并启动转移执行部分113之后,启动后的转移执行部分113将寄存在转移目标存储单元114中的地址加上4并将结果传送到取指计数器108a中。接着,在下一时钟周期,转移执行部分113将“0”传送到译码指令计数器109a(DC)和译码指令缓冲区109a(DR)以使它们无效,然后,在下一时钟周期,将寄存在转移目标存储部分114内的地址以及指令add a,b,c的译码结果分别传送至执行指令计数器110a和执行控制单元110b。
图16显示了在执行循环专用转移指令“lcc”时流水线上的操作流程。图16对应于第一实施例的图9。“BR1”和“BR4”分别代表寄存在转移目标存储部分114中的地址和微指令。
在时钟周期8的IF阶段,取出指令IC后将读取自转移目标存储部分114的地址加4并将其结果传送给IC。然后,在时钟周期9的DEC阶段,将0传送到DC和DR。在时钟周期10的EX阶段,分别将指令BR4和地址BR1从转移目标存储部分114传送到ER和EC。在以后的时钟周期中,程序的操作与第一实施例相同。
从以上的说明中可以看出,在编译源程序时,本设备会产生高速循环指令,并且,在执行该循环的第一次重复期间,本设备在作为处理器107内部专用缓冲区的转移目标存储部分114中寄存一循环的起始微指令和转移目标地址。对能使循环重复的转移指令进行了译码的处理器107不需要计算转移目标地址,也不需要从低速外部存储器中取转移目标指令,而是可以从转移目标存储部分114中获得转移目标的微指令和转移目标地址。
因此,本设备消除了先有设备所产生的两个时钟周期的转移冒险现象,从而提高了循环操作的速度。
[第九实施例]
以下说明本发明的第九实施例的数据处理设备。本设备可通过在转移目标存储部分114中寄存循环的起始地址、起始微指令以及取指令的地址而实现高速循环操作。
在第一实施例中,循环的起始地址和起始指令寄存在作为处理器107内部专用缓冲区的转移目标存储部分114中,而在本实施例中,上述转移目标存储部分则寄存有起始地址、起始微指令以及取指令的地址。
[结构]
本实施例的数据处理设备的结构与图4所示的第一实施例的结构相同,但是,本设备中的转移目标存储部分114存储有循环的起始地址、起始微指令以及取指令的地址。
[操作]
本设备的操作除了在执行转移目标寄存指令“set”和循环专用转移指令“lcc”时的操作不同于第一实施例之外,其它与图5和图6的第一实施例相同。以下对不同之处进行说明。
在转移目标寄存指令“set”传送到译码指令缓冲区109(DR)和并启动转移目标寄存部分111之后,启动后的转移目标寄存部分111在下一时钟周期读取传送给译码指令计数器109a和译码指令缓冲区109b的地址及指令add a,b,c的译码结果,并将上述信息以及前述地址加4所得到的取指令的地址寄存到转移目标存储部分114中。
另一方面,在循环专用转移指令“lcc”被传送到译码指令缓冲区109b并启动转移执行部分113被激活之后,启动后的转移执行部分113将寄存在转移目标存储部分114中的取指令的地址传送到取指计数器108a。接着,在下一时钟周期,转移执行部分113将“0”传送到译码指令计数器109a(DC)和译码指令缓冲区109b(DR)以使它们无效,然后,在下一时钟周期,将寄存在转移目标存储部分114中的地址以及指令add a,b,c,的译码结果分别传送给执行指令计数器110a和执行控制部分110b。
图17显示执行循环专用转移指令“lcc”时流水线上的操作流程。图17对应于第一实施例的图9。“BR1”、“BR3”和“BR4”分别代表寄存在转移目标存储部分114中地址、取指令的地址以及微指令。
在时钟周期8的IF阶段,取出指令(IC)后将地址BR3从转移目标存储部分114中传送给IC。然后,在时钟周期9的DEC阶段,将“0”传送到DC和DR。在时钟周期10的EX阶段,分别将指令BR4和地址BR1从转移目标存储部分114传送到ER和EC。在以后的时钟周期中,程序的操作与第一实施例相同。
从以上的说明中可以看出,在编译源程序时,本设备会产生高速循环指令,并且,在执行循环的第一次重复期间,本设备会在作为处理器107内部专用缓冲区的转移目标存储部分114中寄存循环的起始微指令、转移目标地址和取指令的地址。对能使循环重复的转移指令进行了译码的处理器107不需要计算转移目标地址和取指令的地址,也不需要从低速外部存储器中取转移目标指令并加以译码,而是可以从转移目标存储部分114中获得转移目标微指令、转移目标地址和取指令的地址。
因此,本设备消除了先有设备所产生的两个时钟周期的转移冒险现象,从而提高了循环操作的速度。
[第十实施例]
以下说明本发明的第十实施例的数据处理设备。本设备可通过在转移部分存储部分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将“0”传送到译码指令计数器109a(DC)和译码指令缓冲区109b(DR)以使它们无效,接着,在下一时钟周期,先将指令“lcc”所指示的地址即标号L的值从执行控制部分110b传送到执行指令计数器110a,再将寄存在转移目标存储部分114中的指令add a,b,c的译码结果传送到执行控制部分110b。
图18显示执行循环专用转移指令“lcc”时流水线上的操作流程。图18对应于第一实施例的图9。“BR3”和“BR4”分别代表寄存在转移目标存储部分114中的取指令的地址和微指令。
在时钟周期8中的IF阶段,取出指令(IC)后将地址BR3从转移目标存储部分114中传送给IC。然后,在时钟周期9的DEC阶段,将“0”传送到DC和DR。在时钟周期10的EX阶段先将指令ER的一部分传送给ER,再将指令BR4从转移目标存储部分114传送到ER。在以后的时钟周期中,程序的操作与第一实施例相同。
从以上的说明可以看出,在编译源程序时,本设备会产生高速循环指令,并且,在执行循环的第一次重复期间,本设备会在作为处理器107内部专用缓冲区的转移目标存储部分114中寄存循环的起始微指令和取指令的地址。对能使循环重复的转移指令进行了译码的处理器107不需要计算转移目标地址和取指令的地址,也不需要从低速外部存储器中取目标转移指令并加以译码,而是可以从转移目标存储部分114和循环专用指令lcc L中获得转移目标微指令、取指令的地址和转移目标地址。
因此,本设备消除了先有设备所产生的两个时钟周期的转移冒险现象,从而提高了循环操作的速度。
[第十一实施例]
从下说明本发明的第十一实施例的数据处理设备。本设备可通过在转移目标存储部分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将“0”传送到译码指令计数器109a(DC)和译码指令缓冲区109b(DR)以使它们无效,接着,在下一时钟周期,读取寄存在转移目标存储部分114中的地址以及指令add a,b,c的译码结果并将上述地址减4所得到的地址以及所说的译码结果分别传送到执行指令计数器110a和执行控制部分110b。
图19显示在执行循环专用转移指令“lcc”时流水线上的操作流程。图19对应于第一实施例的图9。BR3和BR4分别代表寄存在转移目标存储部分114中的取指令的地址和微指令。
在时钟周期8中的IF阶段,取出指令(IC)后将地址BR3从转移目标存储部分114中传送给IC。然后,在时钟周期9的DEC阶段将“0”传送到DC和DR。在时钟周期10的EX阶段,从转移目标存储部分114中读取指令BR4和取指令的地址BR3、将BR4传给ER并且将取指令的地址BR3减4所得的值传给EC。在以后的时钟周期中,程序的操作与第一实施例相同。
从以上的说明中可以看出,在编译源程序时,本设备会产生高速循环指令,并且,在执行循环的第一次重复期间,本设备会在作为处理器107内部专用缓冲区的转移目标存储部分114中寄存循环的起始微指令和取指令的地址。在对能使循环重复的转移指令进行了译码的处理器107不需要计算取指令的地址,也不需要从低速外部存储器中取目标转移指令并加以译码,而是可以从转移目标存储部分114中获得转移目标微指令以及取指令的地址。
因此,本设备消除了先有设备所产生的两个时钟周期的转移冒险现象,从而提高了循环操作的速度。
本发明除了以上的实施例以外还可以有其它变化形式,如:
(1)在上述实施例中,将编译器102说明为可输出任何一种高速循环指令“set”,“clr”和“lcc”。但是,编译器102并不局限于此。例如,编译器102可以输出与循环的位置和种类相应的两种高速循环指令“set1”和“set2”、“clr1”和“clr2”、“lcc1”和“lcc2”。这些指令对应于转移目标信息在转移目标存储部分114中的存储位置。这就节省了访问转移目标存储部分114的时间。
(2)在以上实施例中,转移目标存储部分114包括LIFO锁存器,但不限于这种形式的锁存器。例如,可以包括环形锁存器。因此,能够灵活而高速地输入或输出转移目标信息。
此外,转移目标存储部分114具有最多两组转移目标信息的容量,但不局限于这样的存储容量。例如,转移目标存储部分114也可以有一组转移信息的容量。在这种情况下,启动后的转移目标寄存部分111会经常地重写转移目标存储部分114中的信息,因而,不再需要设置转移目标清除部分112。
同样,当转移目标存储部分114存储指令序列时,不是把所存储的指令的个数看作是固定的,而是把所存储的指令的总长度看作是固定的。因此,对于可变长的指令也能有效地使用转移目标存储部分114的存储容量。
(3)上述实施例中,当一个循环中嵌套一个或多个循环时,循环检测部分103可以从最内层起检测不超过两个的嵌套循环,但是,循环检测部分103也可以不受这一条件的限制。循环检测部分103可以检测最频繁执行的循环。
(4)在上述实施例中,存储指令的取指部分108可以按先进先出的方式(FIFO)存储多个指令。
(5)在上述实施例中,处理器107逐个地执行高速循环指令“set”和“clr”。但是,该处理器也可以与其它相邻指令并行地执行这些指令。由于这些指令只访问转移目标存储部分114,并不依赖其它指令,因此可以独立地执行这些指令。
在上述实施例中,转移目标寄存部分111,转移目标清除部分112和转移执行部分113分别被指令clr、set和lcc所启动。但是,其它指令也可包括这种功能,从而高速循环可以和其它指令并行地执行。
(6)在第一和第八实施例中,在读出存储在转移目标存储部分114中的地址并使该地址加4时,转移执行部分113可以使用它所带有的但在图4中未示出的专用递增装置。
在第三,第五,第七和第十实施例中,在计算对应标号“L”的地址时,转移执行部分113可以使用它所带有的但在图4中未示出的专用算术装置。
在第六和第十一实施例中,在读出存储在转移目标存储部分114中的地址并使该地址减4时,转移执行部分113可以使用它所带有的但在图4中未示出的专用递增装置。
通过让转移执行部分113使用上述专用装置,处理器将获得高速性能。
尽管以举例方式结合附图详细说明了本发明,但应注意到,对于本领域的普通技术人员来说,很明显会有其它改变形式和改进形式。因此,除非这些改变形式和改进形式脱离了本发明的范围,它们应被看作包括在本发明中。
Claims (15)
1.一种用于编译源程序并生成机器语言指令序列的编译器,包括:
一个循环检测装置,它用于从源程序中检测某些循环并且从源程序中提取出所检测到的循环的信息,所提取的信息用于指令某些循环;以及,一高速循环应用装置,此装置带有:
一第一循环专用指令生成部分,它用于生成一第一循环专用指令并将该第一循环专用指令放在机器语言指令序列内循环入口的紧前面,所说的第一循环专用指令指示一后续指令是所述循环的入口;以及
一第二循环专用指令生成部分,它用于生成第二循环专用指令并将第二循环专用指令放在使程序能转移到循环入口的位置处,第二循环专用指令可引导程序转移到循环的入口处,上述第一循环专用指令生成部分和第二循环专用指令生成部分根据循环检测装置所提取的信息进行操作。
2.一种如权利要求1所述的编译器,其特征在于,高速循环应用装置还带有根据循环检测装置所提取的信息而进行操作的第三循环专用指令生成部分,它用于生成指示循环已结束的第三循环专用指令并将该第三循环专用指令放置在紧接在机器语言指令序列中循环出口的后面。
3.一种用于执行指令序列的处理器,所述的指令系列含有第一循环专用指令和第二循环专用指令,上述处理器配备有:
一流水线,它包括一取指部分、一译码部分以及一执行部分,取指部分用于依次从前述指令序列中取指令,译码部分用于对取指部分所取的指令译码,而执行部分则用于执行译码部分所译的指令;
一转移目标存储装置;
一寄存装置,在译码部分对一第一循环专用指令译码之后,该寄存装置用于将与接续在第一循环专用指令后面的那条指令有关的转移目标信息寄存在转移目标存储装置中;以及
一转移执行装置,在译码部分对第二循环专用指令译码之后,该执行装置判断是否执行循环,如果判断出要执行循环,就读取寄存在转移目标存储装置中的转移目标信息,并控制上述流水线,从而程序能使用所读出的转移目标信息执行前述循环。
4.一种用于执行指令序列的处理器,所述的指令序列含有第一、第二和第三循环专用指令,上述处理器配备有:
一流水线,它包括一取指部分、一译码部分以及一执行部分,取指部分用于依次从前述指令序列中取指令,译码部分用于对取指部分所取的指令译码;而执行部分则用于执行译码部分所译的指令;
一转移目标存储装置;
一寄存装置,在译码部分对一第一循环专用指令译码之后,该寄存装置用于将与接续在第一循环专用指令后面的那条指令有关的转移目标信息寄存在转移目标存储装置中;
一转移执行装置,在译码单元对第二循环专用指令译码之后,该装置判断是否执行循环,如果判断出要执行一循环,就读取寄存在转移目标存储装置中的转移目标信息,并控制上述流水线,从而程序能使用所读出的转移目标信息执行该循环;以及
一清除装置,在译码部分对第三循环专用指令译码之后,该装置用于清除寄存在转移目标存储装置中的转移目标信息。
5.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将接在第一循环专用指令之后的那条指令的地址寄存在转移目标存储装置中,并且,如果已判断出要执行循环,转移执行装置就读出寄存在转移目标存储装置中的地址并控制前述流水线,因此,取指部分能取得从该地址开始的指令序列。
6.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将接在第一循环专用指令之后的那条指令的地址和接在第一循环专用指令之后的一定数目的指令寄存在转移目标存储装置中,并且,如果已判断出要执行循环,转移执行装置就读出寄存在转移目标存储装置中的地址和一定数目的指令并控制所说的流水线,因此,译码部分可根据上述地址对所说的一定数目的指令进行译码,同时,取指部分可取出从一特定地址开始的指令序列,所说的特定地址则是通过对第二循环专用指令所指示的地址进行一定的运算而得到的。
7.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将接在第一循环专用指令之后的那条指令的地址和接在第一循环专用指令之后的一定数目的指令寄存在转移目标存储装置中,并且,如果已判断出要执行一循环,转移执行装置就读出寄存在转移目标存储装置中的地址和一定数目的指令并控制所说的流水线,因此,译码部分可根据上述地址对所说的一定数目的指令进行译码,同时,取指部分可取出从一特定地址开始的指令序列,所说的特定地址则是通过对所读出的地址进行一定的运算而得到的。
8.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将接在第一循环专用指令之后的那条指令的第一个地址、接在第一循环专用指令之后的一定数目的指令和紧接在该一定数目的指令之后要执行的那条指令的第二个地址寄存在转移目标存储装置中,并且,
如果已判断出要执行循环,转移执行装置就读出寄存在转移目标存储装置中的第一个地址,一定数目的指令和第二个地址并控制所说的流水线,因此,译码部分可根据上述第一个地址对所说的一定数目的指令进行译码,同时,取指部分可取出从上述第二个地址开始的指令序列。
9.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将接在第一循环专用指令之后的一定数目的指令和紧接在该一定数目的指令之后要执行的指令的地址寄存在转移目标存储装置中,并且
如果已判断出要执行循环,转移执行装置就读出寄存在转移目标存储装置中的一定数目的指令和地址并控制所说的流水线,因此,译码部分可根据上述第二循环专用指令所指示的地址对前述一定数目的指令进行译码,同时,取指部分可取出从读取自转移目标存储装置的地址开始的指令序列。
10.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将接在该第一循环专用指令之后的一定数目的指令和紧接在该一定数目的指令之后要执行的指令的地址寄存在转移目标存储装置中,并且
如果已判断出要执行一循环,转移执行装置就读出寄存在转移目标存储装置中的一定数目的指令和地址并控制所说的流水线,因此,译码部分可根据一特定的地址对上述一定数目的指令进行译码,上述特定地址是通过对所读出的地址进行一定的运算而得到的,同时,取指部分可取出从读自转移目标存储装置的地址开始的指令序列。
11.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将接在该第一循环专用指令之后的那条指令的地址以及微指令序列寄存在转移目标存储装置中,上述微指令序列是对接在第一循环专用指令后的一定数目的指令进行译码的结果,并且,如果已判断出要执行一循环,转移执行装置就读出寄存在转移目标存储装置中的地址和微指令序列并执行所说的流水线,因此,执行部分可根据前述地址来执行所说的微指令序列,同时,取指部分可取出从一特定地址开始的指令序列,该特定地址是通过对第二循环部分专用指令所指示的地址进行一定的运算而得到的。
12.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将接在该第一循环专用指令之后的指令的地址和微指令序列寄存在转移目标存储装置中,上述微指令序列是对接在第一循环专用指令之后的一定数目的指令进行译码的结果,并且,
如果已判断出要执行循环,转移执行装置就读出寄存在转移目标存储装置中的地址和微指令序列并控制所说的流水线,因此,执行部分可根据前述地址来执行所说的微指令序列,并且,取指部分可取出从一特定地址开始的指令序列,该特定地址是通过对所读出的地址进行一定的运算而得到的。
13.一种如权利要求4所述的处理器,其特征在于:
在译码装置对第一循环专用指令译码之后,所说的寄存装置就将接在该第一循环专用指令之后的指令的第一地址、微指令序列以及紧接在微指令序列之后要执行的指令的第二地址寄存在转移目标存储装置中,所说的微指令序列是对接在第一循环专用指令之后的一定数目的指令进行译码的结果,并且,
如果已判断出要执行一循环,转移执行装置就读出寄存在转移目标存储装置中的第一地址、微指令序列以及第二地址,并控制所说的流水线,因此,执行部分可根据第一地址执行上述微指令序列,同时,取指部分可取出从第二地址开始的指令序列。
14.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将微指令序列和紧接在该微指令序列之后要执行的指令的地址寄存在转移目标存储装置中,所说的微指令序列是对接在第一循环专用指令之后的一定数目的指令进行译码的结果,并且,如果已判断出要执行循环,转移执行装置就读出寄存在转移目标存储装置中的微指令序列和地址并控制所说的流水线,因此,执行部分可根据第二循环专用指令所指定的地址来执行所说的微指令序列,同时,取指部分可取出从读自从转移目标存储装置的地址开始的指令序列。
15.一种如权利要求4所述的处理器,其特征在于:
在译码部分对第一循环专用指令译码之后,所说的寄存装置就将微指令序列和紧接在该微指令序列之后要执行的指令的地址寄存在转移目标存储装置中,所说的微指令序列是对接在第一专用指令之后的一定数目的指令进行译码的结果;并且,
如果已判断出要执行一循环,转移执行装置就读出寄存在转移目标存储装置中的微指令序列和地址并控制所说的流水线,因此,执行部分可根据上述地址来执行所说的微指令序列,同时,取指部分可取出从读自转移目标存储装置的地址开始的指令序列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP114520/1995 | 1995-05-12 | ||
JP7114520A JP2987311B2 (ja) | 1995-05-12 | 1995-05-12 | プロセッサ及び翻訳装置 |
JP114520/95 | 1995-05-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1138175A true CN1138175A (zh) | 1996-12-18 |
CN1143213C 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) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1105350C (zh) * | 1997-06-30 | 2003-04-09 | 松下电器产业株式会社 | 能够减少转移故障的具有小尺寸电路的流水线处理器 |
WO2005050451A1 (en) * | 2003-11-19 | 2005-06-02 | Intel Corporation | Memory access instruction vectorization |
CN100409176C (zh) * | 2002-09-06 | 2008-08-06 | 株式会社瑞萨科技 | 数据处理装置 |
CN104050025A (zh) * | 2013-03-15 | 2014-09-17 | 亚德诺半导体技术公司 | 在存在可能的存储器别名的情况下并行化循环 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10214203A (ja) * | 1997-01-29 | 1998-08-11 | Nec Corp | 情報処理装置 |
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 |
JP5043560B2 (ja) | 2007-08-24 | 2012-10-10 | パナソニック株式会社 | プログラム実行制御装置 |
WO2011065145A1 (ja) * | 2009-11-24 | 2011-06-03 | 日本電気株式会社 | プロセッサ、プロセッサによるループ回数制御方法 |
EP2519876A1 (en) | 2009-12-28 | 2012-11-07 | Hyperion Core, Inc. | Optimisation of loops and data flow sections |
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
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1105350C (zh) * | 1997-06-30 | 2003-04-09 | 松下电器产业株式会社 | 能够减少转移故障的具有小尺寸电路的流水线处理器 |
CN100409176C (zh) * | 2002-09-06 | 2008-08-06 | 株式会社瑞萨科技 | 数据处理装置 |
WO2005050451A1 (en) * | 2003-11-19 | 2005-06-02 | Intel Corporation | Memory access instruction vectorization |
CN100414514C (zh) * | 2003-11-19 | 2008-08-27 | 英特尔公司 | 用于存储器访问指令向量化的方法和设备 |
CN104050025A (zh) * | 2013-03-15 | 2014-09-17 | 亚德诺半导体技术公司 | 在存在可能的存储器别名的情况下并行化循环 |
CN104050025B (zh) * | 2013-03-15 | 2018-12-18 | 亚德诺半导体集团 | 在存在可能的存储器别名的情况下并行化循环的方法 |
US10241793B2 (en) | 2013-03-15 | 2019-03-26 | Analog Devices Global | Paralleizing loops in the presence of possible memory aliases |
Also Published As
Publication number | Publication date |
---|---|
DE69614917T2 (de) | 2002-01-17 |
JPH08314719A (ja) | 1996-11-29 |
EP0742518B1 (en) | 2001-09-05 |
EP0742518A3 (en) | 1997-05-28 |
US5850551A (en) | 1998-12-15 |
CN1143213C (zh) | 2004-03-24 |
KR960042425A (ko) | 1996-12-21 |
TW294802B (zh) | 1997-01-01 |
JP2987311B2 (ja) | 1999-12-06 |
DE69614917D1 (de) | 2001-10-11 |
KR100253655B1 (ko) | 2000-04-15 |
EP0742518A2 (en) | 1996-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1264089C (zh) | 编译设备和编译方法 | |
CN1153155C (zh) | 装有高效利用主处理器中的寄存器数据的协处理器的信息处理装置 | |
CN1101019C (zh) | 数据序列产生方法及设备、转换方法及计算机 | |
CN100339824C (zh) | 高效执行特长指令字的处理器和方法 | |
CN1202470C (zh) | 处理器 | |
CN1280714C (zh) | 独立处理多个指令流、软式控制各指令流的处理功能的多线程处理器 | |
CN1097226C (zh) | 编译程序器 | |
CN100342326C (zh) | 多线程处理器和操作处理器的方法 | |
CN1783012A (zh) | 程序转换器件及方法、程序转换执行器件及转换执行方法 | |
CN1138175A (zh) | 高速处理循环的编译器和处理器 | |
CN1918546A (zh) | 程序转换装置及程序转换方法 | |
CN1497435A (zh) | 处理器 | |
CN1302380C (zh) | 处理器和编译器 | |
CN1795434A (zh) | 程序执行控制设备,程序执行控制方法,控制程序和记录介质 | |
CN1749955A (zh) | 控制处理器和协处理器间的数据传输的运算处理装置 | |
CN1226026A (zh) | 数据处理装置 | |
CN1485735A (zh) | 指令调度方法、指令调度设备和指令调度程序 | |
CN1482540A (zh) | 编译程序、编译程序装置和编译方法 | |
CN1758221A (zh) | 程序处理装置 | |
CN1684058A (zh) | 处理器 | |
CN1503150A (zh) | 多处理器***中的任务分配方法和多处理器*** | |
CN1228558A (zh) | 程序变换方法和程序变换*** | |
CN1728093A (zh) | 生成比特块传输函数的交叉平台运行时间代码 | |
CN1194295C (zh) | 程序变换装置及程序变换方法 | |
CN101055566A (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 |