CN1469241A - 处理器、程序变换装置和变换方法以及计算机程序 - Google Patents
处理器、程序变换装置和变换方法以及计算机程序 Download PDFInfo
- Publication number
- CN1469241A CN1469241A CNA031486371A CN03148637A CN1469241A CN 1469241 A CN1469241 A CN 1469241A CN A031486371 A CNA031486371 A CN A031486371A CN 03148637 A CN03148637 A CN 03148637A CN 1469241 A CN1469241 A CN 1469241A
- Authority
- CN
- China
- Prior art keywords
- condition
- value
- instruction
- comparison
- statistical indicant
- 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
- 238000004590 computer program Methods 0.000 title claims description 12
- 230000009466 transformation Effects 0.000 title description 33
- 238000011426 transformation method Methods 0.000 title 1
- 238000012545 processing Methods 0.000 claims description 114
- 230000014509 gene expression Effects 0.000 claims description 77
- 238000011282 treatment Methods 0.000 claims description 69
- 238000000034 method Methods 0.000 claims description 63
- 238000012546 transfer Methods 0.000 claims description 40
- 238000003860 storage Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 description 90
- 238000010586 diagram Methods 0.000 description 38
- 230000008569 process Effects 0.000 description 29
- 230000008878 coupling Effects 0.000 description 23
- 238000010168 coupling process Methods 0.000 description 23
- 238000005859 coupling reaction Methods 0.000 description 23
- 230000000694 effects Effects 0.000 description 22
- 150000001875 compounds Chemical class 0.000 description 17
- 238000006243 chemical reaction Methods 0.000 description 15
- 238000006467 substitution reaction Methods 0.000 description 15
- 238000004904 shortening Methods 0.000 description 13
- 239000003550 marker Substances 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 8
- 230000006399 behavior Effects 0.000 description 7
- 230000001131 transforming effect Effects 0.000 description 7
- 238000012217 deletion Methods 0.000 description 6
- 230000037430 deletion Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000011156 evaluation Methods 0.000 description 6
- 238000011144 upstream manufacturing Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000001343 mnemonic effect Effects 0.000 description 5
- 230000033228 biological regulation Effects 0.000 description 4
- 230000015572 biosynthetic process Effects 0.000 description 4
- 238000010276 construction Methods 0.000 description 4
- 230000008676 import Effects 0.000 description 3
- 230000005055 memory storage Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 101150111955 cmpB gene Proteins 0.000 description 1
- 101150051614 cmpC gene Proteins 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000002699 waste material Substances 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30072—Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
在时钟循环的中途设置的规定时间之前,第一运算部441到第三运算部443进行对应各指令的规定运算。进行比较运算时,把结果值输出到条件标志运算部51。条件标志运算部51对从条件标志寄存器46读出的值和该结果值进行逻辑运算,或通过对该结果值之间进行逻辑运算算出新的条件标志值。在该时钟循环结束之前,条件标志运算部51通过将该新的条件标志值输出到第一门451到第三门453中的与某个条件执行指令相关的门来控制该条件执行指令的无效化。条件标志寄存器46存储该新的条件标志值。
Description
技术领域
本发明涉及通过程序的规模缩小以及执行并行度提高促进处理时间缩短的处理器和程序变换技术。
背景技术
以往,通过使用流水线方式并列处理多个指令缩短程序的执行时间的处理器已经被实用化。使用流水线方式的处理器备有分别处理指令的供给、译码、执行等的多个部分(叫作阶段)的可并列动作的电路,在不同的阶段中同时并列处理多个指令。
也有通过使用VLIW(较长指令字:Very Long Instruction Word)方式和超级标量(super scalar)方式实现执行时间缩短的处理器。这种处理器备有处理各个阶段的多个可并列动作的电路,在一个阶段中同时并列处理多个指令。
作为破坏采用流水线方式的处理器的执行时间的缩短效果的一个原因,有条件转移指令。处理条件转移指令时,将下一指令的开始延缓到确定其转移目的地之前,则处理上游阶段的电路中产生等待,该等待成为阻碍执行时间缩短的原因。即便进行转移预测并投机执行后续指令,在离开转移预测落空时得多余地重新取得正确的指令,妨碍执行时间的缩短。
采用超级标量方式的处理器中,通过增大可同时并行处理的指令数提高处理条件转移指令的频度,从而这种条件转移指令的影响变大。
为消除由于条件转移指令阻碍执行时间缩短的问题,原来的某种处理器备有处理条件执行指令的功能。所谓条件执行指令是附加表示处理该指令时产生本来的实际效果的条件的执行条件信息的指令。
该处理器在处理条件执行指令时,对应该执行条件信息,通过废弃处理了的运算结果,或中止数据的输送等使该指令不生效而被无效化。
图32是表示这种处理器的代表结构例的框图。处理器90由与时钟信号同步动作且在该时钟信号的各个循环中可并列处理指令的供给、译码和执行的各个阶段的指令供给部20、译码部30和执行部40构成。各部在一个时钟循环中并列处理最大3个指令。
以处理器90为对象的程序编制器预先判断程序中处理器90可并列执行的指令组,向该程序附加表示该指令组的并列执行边界信息。处理器90通过该并列执行边界信息识别应并列处理指令组,将该指令组在各时钟各阶段中并列处理。
指令供给部20包括指令取回部21和指令寄存器组22,指令寄存器组包括第一指令寄存器221、第二指令寄存器222和第三指令寄存器223。
译码部30由指令发出控制部31和指令解码器组32构成,指令解码器组32包括第一指令解码器321、第二指令解码器322和第三指令解码器323。
执行部40包括执行控制部41、PC(程序计数器)部42、寄存器文件43、第一运算部441、第二运算部442、第三运算部443、第一门451、第二门452、第三门453、条件标志寄存器46、操作数存取部47、数据总线48和数据总线49。
指令供给部20中,指令取回部21经IA(Instructions Address:指令地址)总线和ID(Instructions Data:指令数据)总线从未示出的外部存储器每规定个数读出指令并存储在内部,同时在由从PC部42提供的地址表示的指令之后把位于通过并列执行边界信息表示可并列执行的范围中的指令存储在第一指令寄存器221、第二指令寄存器222和第三指令寄存器223。
译码部30中,第一指令解码器321、第二指令解码器322和第三指令解码器323在指令发出控制部31的控制下分别向执行控制部41输出用于执行存储在第一指令寄存器221、第二指令寄存器222和第三指令寄存器223中的指令的控制信号,同时向数据总线48输出各指令中包含的常数操作数。
执行部40中,执行控制部41根据从第一指令解码器321、第二指令解码器322和第三指令解码器323指示的控制信号,使执行部40的各构成要素动作。PC部42向指令取回部21输出接着应处理指令的地址。
寄存器文件43由64个通用寄存器R0到R63构成。各通用寄存器对应来自执行控制部41的控制,把存储的值经数据总线48输出到第一运算部441、第二运算部442、第三运算部443,存储经数据总线49提供的数据。
第一运算部441、第二运算部442、第三运算部443分别在内部备有未示出的进行算术逻辑运算的ALU(Arithmetic Logical Unit:数值运算单元)、乘法器和进行移位运算的筒形移位器等,对输入的数据进行对应来自执行控制部41的控制的运算或仅仅使之通过。该运算结果或通过的输入数据输出到第一门451、第二门452、第三门453的同时,尤其把对应比较指令进行的比较运算的结果值输出到条件标志寄存器46中。
条件标志寄存器46由7个寄存器C0到C6构成。各条件标志寄存器对应来自执行控制部41的控制存储从第一运算部441、第二运算部442、第三运算部443提供的值,同时把存储的值分别输出到第一门451、第二门452、第三门453。
第一门451、第二门452、第三门453在条件标志寄存器46提供的值为真值的情况下分别将从第一运算部441、第二运算部442、第三运算部443提供的运算结果经数据总线49输出到寄存器文件43,在为假值的情况下废弃该结果。
操作数存取部47对应来自执行控制部41的控制把从寄存器文件43经数据总线49提供的数据经OA(Operand Address:操作数地址)总线和OD(Operand Data:操作数数据)总线输送到未示出的外部存储器,把在该外部存储器中存储的数据输送到寄存器文件43。
根据该结构,处理器90仅在条件标志寄存器中存储的值为真值的情况下实现产生实际的效果的条件执行指令。换言之,该条件执行指令与该值为假值的情况下被无效化的条件执行指令等效。
通过使用条件执行指令,例如根据图34所示的不包含转移指令的样式的程序可执行图33的流程图所示的条件处理。
图34的程序中,从左侧开始第一列表示指令序号、第二列表示执行条件信息、第三列表示指令助记符号、第四列表示操作数、第五列表示并列执行边界信息。
该执行条件信息表示应成为执行条件的条件标志寄存器,不表示条件标志寄存器时,该指令表示无条件执行指令。
该并列执行边界信息具体是附加在各指令上的并列执行边界标志值,0表示可与下一指令并列执行,1表示不能与下一指令并列执行。
执行条件信息、指令助记符号、操作数和并列执行边界信息在计算机资源上根据规定的格式表现,但对于该格式,并非本发明的关键,因此省略说明。
指令1是比较通用寄存器R0的内容和R1的内容,在R0<R1时,使条件标志寄存器C0和C1中分别存储真值和假值,其他情况下分别存储假值和真值的指令。
在指令2和指令3的前面记载的C0和C1表示两个指令是在条件标志寄存器C0和C1中分别存储的值为真值的情况下产生实效的条件执行指令。该例中,r0<r1时,第二指令产生实效,第三指令无效化,其他情况下,第二指令无效化,第三指令产生实效。
这样,处理器90可通过使用条件执行指令根据不包含条件转移指令的样式的程序执行条件处理,因此消除了由于条件转移指令阻碍执行时间缩短的问题。
不包含条件转移指令的样式的程序与使用条件转移指令的样式的程序相比,用少的指令数记述,因此也具有缩小程序规模的效果。
但是,原来的处理器90把在规定的时钟循环中对应比较指令进行的比较运算的结果暂时存储在条件标志寄存器中,在接着的时钟循环以后,读出该存储的结果并把条件执行指令无效化,因此有在同一循环中不能并列执行比较指令和将对应该比较指令算出的条件标志设为执行条件的条件执行指令的制约。
因此,以处理器90为对象的原来的程序编制器向程序附加表示在同一时钟循环中不能执行这种指令的并列执行边界信息。例如,对图34的程序,将在同一时钟循环中不能处理指令1和指令2以及指令1和指令3的这种指令1的并列执行边界标志设为1。其结果是处理器90单独执行图34的程序的指令1。图35是处理器90执行该程序时的定时图,表示出处理各指令的各阶段的时钟循环。
这样,原来的处理器不能并列执行比较指令和将对应该比较指令算出的条件标志设为执行条件的条件执行指令,因此出现不能通过它们的并列执行缩短执行时间的第一问题。
以处理器90为对象的原来的程序编制器对于复合进行多个比较判断的复合条件处理生成对应各个比较判断使控制转移的样式的程序。举出具体例子说明,则为执行图36的流程图所示的复合条件处理,生成图37所示的程序。
这里,使用在规模和执行时间方面不利的条件转移指令是由于无故地不使用条件转移指令表示执行复合条件处理的程序时,反而导致指令数增加,不利于作为排除条件转移指令的本来目的的程序规模的缩小和执行时间的缩短。
这样,出现难以小规模且短时间地执行使原来的处理器执行复合处理条件的程序的第二问题。
发明内容
鉴于所述问题,本发明的目的是提供一种处理器,可并列执行比较指令和将对应该比较指令算出的条件标志作为执行条件的条件执行指令,而且可通过比原来小规模的程序,用比原来少的时钟循环执行复合条件处理,并且还提供一种程序编制器(compiler),生成以该处理器为对象的程序。
(1)本发明的处理器包括:第一运算部件,算出表示多个操作数是否满足第一比较条件的逻辑值;条件标志运算部件,通过对表示多个操作数是否满足第二比较条件的第二条件标志值和所述逻辑值进行逻辑运算算出第一条件标志值。
根据该结构,所述条件标志运算部件对应在所述处理器的指令组中设置的特定的比较指令可算出所述第一条件标志值。所述第一条件标志值表示将所述第一比较条件和所述第二比较条件复合定义的复合比较条件成立与否。
即,所述处理器可根据包含所述特定的比较指令且不包含条件转移指令的程序直接执行表示所述复合比较条件成立与否的条件标志值的算出。如实施例详细说明的那样,该程序与用于得到同样的结果的原来的程序相比,由更少数的指令构成,并且通过所述处理器用很少的时钟循环执行。
由此,所述处理器实现评价复合比较条件成立与否的程序的规模缩小和执行需要时间的缩短。
所述处理器,还包括存储所述第二条件标志值的条件标志寄存器,所述第一运算部件在到达时钟循环中途设置的时刻之前算出所述逻辑值,所述条件标志运算部件在结束所述时钟循环之前通过对从所述条件标志寄存器读出的第二条件标志值和所述逻辑值进行逻辑运算算出所述第一条件标志值。
该结构适合于在所述特定的比较指令执行前对应其他比较指令的执行算出所述第二条件标志值并已经存储在所述条件标志寄存器中的情况。
所述处理器还包括在到达时钟循环中途设置的时刻之前算出所述第二条件标志值的第二运算部件,所述第一运算部件在所述时刻之前算出所述逻辑值,所述条件标志运算部件在结束所述时钟循环之前通过对所述第二比较部件算出的第二条件标志值和所述逻辑值进行逻辑运算算出所述第一条件标志值。
根据该结构,所述处理器可在同一时钟循环中并列执行用于使所述条件标志运算部件算出所述第一条件标志值的所述特定的比较指令和用于使所述第二运算部件算出所述第二条件标志值的其他比较指令。
由此,所述处理器提高执行用于评价复合比较条件是否成立的程序时的执行并行度,还促使执行需要时间缩短。
所述条件标志运算部件在结束所述时钟循环之前还算出作为所述第一条件标志值的逻辑逆向值的第三条件标志值。
根据该结构,所述条件标志运算部件可对应在所述处理器的指令组中设置的特定的比较指令算出所述第一条件标志值和所述第三条件标志值。
所述处理器可根据如下记述的程序执行if-then-else形式(style)的条件处理,其中该记述包括:(a)用于执行if部分的所述特定的比较指令、接着它的(b)对应执行then部分的所述第一条件标志值被无效化的1以上条件执行指令构成的指令串、(c)对应执行else部分的所述第三条件标志值被无效化的1以上条件执行指令构成的指令串。该程序也表示出不包含条件转移指令,因此促使程序规模缩小和执行时间的缩短。
所述条件标志运算部件在结束所述时钟循环之前还算出所述逻辑值的逻辑逆向值,通过对该逻辑逆向值和所述第二条件标志值进行逻辑运算算出第四条件标志值。
根据该结构,所述条件标志运算部件可对应在所述处理器的指令组中设置的特定的比较指令算出所述第一条件标志值和所述第四条件标志值。
这里算出的所述第一条件标志值和所述第四条件标志值在所述逻辑运算是逻辑与运算、所述第二条件标志值表示外侧的条件处理的执行条件的情况下,表示在该外侧的条件处理中嵌套并记述的内侧的条件处理的then部分和else部分的各自的执行条件。
所述处理器可根据如下记述的程序执行内侧的条件处理,其中记述包括:(a)用于执行内侧的if部分的所述特定的比较指令、接着它的(b)对应执行内侧的then部分的所述第一条件标志值被无效化的1以上条件执行指令构成的指令串、(c)对应执行内侧的else部分的所述第四条件标志值被无效化的1以上条件执行指令构成的指令串。该程序也表示出不包含条件转移指令,因此促使程序规模缩小和执行时间的缩短。
(2)本发明的处理器包括:条件标志运算部件,在到达时钟循环中途设置的时刻之前根据表示多个操作数是否满足第一比较条件的逻辑值算出第一条件标志值;第一运算部件,在所述时钟循环中进行对应条件执行指令的运算;无效化部件,在结束所述时钟循环之前根据所述第一条件标志值把由所述第一运算部件进行的运算的结果无效化。
根据该结构,所述处理器在同一时钟循环中并列执行使所述条件标志运算部件算出所述第一条件标志值的比较指令和所述规定的条件执行指令,并且在该时钟循环中,可对应所述第一条件标志值把所述规定的条件执行指令无效化。
即所述处理器可并列执行用于执行条件处理的if部分的所述比较指令和用于执行then部分的所述规定的条件执行指令。
由此,所述处理器通过提高执行并行度实现进行条件处理的程序的执行需要时间的缩短。
所述处理器还包括:存储表示多个操作数是否满足第二比较条件的第二条件标志值的条件标志寄存器,所述条件标志运算部件在所述时刻之前通过对从所述条件标志寄存器读出的第二条件标志值和所述逻辑值进行逻辑运算算出所述第一条件标志值。
该结构适合于在所述比较指令执行前对应其他比较指令的执行算出所述第二条件标志值并已经存储在所述条件标志寄存器中的情况。
所述处理器还包括在所述时刻之前算出表示多个操作数是否满足第二比较条件的第二条件标志值的第二运算部件,所述条件标志运算部件在所述时刻之前通过对所述第二比较部件算出的第二条件标志值和所述逻辑值进行逻辑运算算出所述第一条件标志值。
根据该结构,所述处理器可在同一时钟循环中并列执行所述比较指令和用于使所述第二运算部件算出所述第二条件标志值的其他比较指令,由此,在所述第一条件标志值表示复合比较条件的成立与否的情况下,也可在一个时钟循环中算出,另外,可在该时钟循环中把所述条件执行指令无效化。
即,对于进行复合条件处理的程序,所述处理器通过提高执行并行度,可缩短执行需要时间。
所述条件标志运算部件在所述时刻之前还算出作为所述第一条件标志值的逻辑逆向值的第三条件标志值,所述无效化部件在结束所述时钟循环之前对应所述第一条件标志值或所述第三条件标志值中的某个把所述运算的结果无效化。
根据该结构,得到表示比较条件成立与否的所述第一条件标志值和表示其相反条件的所述第三条件标志值。从而,对于用于所述条件执行指令执行条件处理的else部分的程序,所述处理器通过提高执行并行度,可缩短执行需要时间。
所述条件标志运算部件在所述时刻之前还算出所述逻辑值的逻辑逆向值,通过对该逻辑逆向值和所述第二条件标志值进行逻辑运算算出第四条件标志值,所述无效化部件在结束所述时钟循环之前对应所述第一条件标志值或所述第四条件标志值中的某个把所述运算的结果无效化。
根据该结构,得到分别表示嵌套且记述的内侧的条件处理的then部分和else部分的执行条件的所述第一条件标志值和所述第四条件标志值。从而,对于用于所述规定的条件执行指令执行内侧的条件处理的then部分和else部分之一的程序,所述处理器通过提高执行并行度,可缩短执行需要时间。
(3)本发明的程序变换方法包括:识别步骤,从被变换的程序识别记述评价第一比较条件是否成立的处理的第一部分和记述该第一比较条件成立或不成立时应执行的处理的第二部分;第一变换步骤,将所述第一部分变换为包含用于算出表示所述第一比较条件是否成立的第一条件标志值的指令且不包含转移指令的指令串;第二变换步骤,将所述第二部分变换为包含对应所述第一条件标志值被无效化的条件执行指令且不包含转移指令的指令串。
根据该结构,可将进行条件处理的程序变换为进行该条件处理的的不包含条件转移指令的指令串。
如实施例详细说明的那样,该指令串与从同样的程序变换来的原来的指令串相比,由更少数的指令构成,并且通过所述处理器用更少的时钟循环执行,因此实现变换后的指令串的规模缩小和执行需要时间的缩短。
所述识别步骤还从所述被变换的程序识别记述所述第一比较条件成立与否应在与应执行所述第二部分的情况相反的情况下执行的处理的第三部分,所述第一变换步骤将所述第一部分变换为包含用于算出所述第一条件标志值和作为其逻辑逆向值的第二条件标志值的指令且不包含转移指令的指令串,所述程序变换方法还包括:第三变换步骤,将所述第三部分变换为包含对应所述第二条件标志值被无效化的条件执行指令且不包含转移指令的指令串。
根据该结构,由于可将进行if-then-else型的条件处理的程序变换为进行该条件处理的不包含条件转移指令的指令串,因此可实现变换后的指令串的规模缩小和执行需要时间的缩短。
所述第一变换步骤在所述第一部分关联记述评价多个的各个比较条件是否成立的处理时,将所述第一部分变换为包含用于通过对表示该各个比较条件是否成立的逻辑值进行逻辑运算算出所述第一条件标志值的指令且不包含转移指令的指令串。
根据该结构,由于可将进行复合条件处理的程序变换为进行该条件处理的不包含条件转移指令的指令串,因此可实现变换后的指令串的规模缩小和执行需要时间的缩短。
所述识别步骤还从所述第二部分识别记述评价所述第二比较条件成立与否的处理的第四部分,所述第二变换步骤还将所述第四部分变换为包含用于通过对表示所述第二比较条件是否成立的逻辑值和所述第一条件标志值进行逻辑运算算出第三条件标志值的指令且不包含转移指令的指令串。
所述识别步骤还从所述第三部分识别记述评价第三比较条件成立与否的处理的第五部分,所述第三变换步骤还将所述第五部分变换为包含用于通过对表示所述第三比较条件是否成立的逻辑值和所述第二条件标志值进行逻辑运算算出第四条件标志值的指令且不包含转移指令的指令串。
根据这些结构,关于嵌套并记述在外侧的条件处理中的内侧的条件处理,外侧的执行条件不成立时,得到算出表示内侧的执行条件也不成立的条件标志值的指令串。
通过使用将该条件标志值作为执行条件的条件执行指令,可将进行嵌套的条件处理的程序变换为不包含转移指令的指令串,因此可实现变换后的指令串的规模缩小和执行需要时间的缩短。
(4)本发明的程序变换方法的特征是将可并列执行由第一比较指令指令的条件标志值的算出处理和参照第二指令指令的所述条件标志值进行的规定处理的处理器作为目标处理器,包含:识别步骤,从被变换的程序识别(a)所述第一比较指令、(b)比所述第一比较指令靠后记述、不能与所述第一比较指令并列地由所述处理器执行的第三指令和(c)比所述第三指令靠后记述的所述第二指令;再配置步骤,更换识别的第三指令和第二指令。
这里所述识别步骤把(a)用于通过对表示比较条件成立与否的逻辑值和所述条件标志值进行逻辑运算算出新的条件标志值的比较指令和(b)对应所述条件标志值被无效化的条件执行指令中的至少一个识别为所述第二指令。
根据这些结构,考虑条件标志依赖配置一连串的可由所述处理器并列执行的指令,从而提高所述处理器执行变换后的指令串时的执行并行度,缩短程序的执行需要时间。
所述程序变换方法还包含:并列执行边界信息生成步骤,生成表示可并列执行所述第一比较指令和更换后的第二指令的并列执行边界信息。
根据该结构,可并行执行的指令组由该并列执行边界信息表示,因此可大幅度简化为判定可并行执行的指令组而使该处理器备有的电路。
(5)本发明的程序变换装置包括:识别部件,从被变换的程序识别记述评价第一比较条件是否成立的处理的第一部分和记述该第一比较条件成立或不成立时应执行的处理的第二部分;第一变换部件,将所述第一部分变换为包含用于算出表示所述第一比较条件是否成立的第一条件标志值的指令且不包含转移指令的指令串;第二变换部件,将所述第二部分变换为包含对应所述第一条件标志值被无效化的条件执行指令且不包含转移指令的指令串。
根据该结构,得到与所述(3)相同的效果。
本发明的程序变换装置的特征是将可并列执行由第一比较指令指令的条件标志值的算出处理和参照第二指令指令的所述条件标志值进行的规定处理的处理器作为目标处理器,包含:识别部件,从被变换的程序识别(a)所述第一比较指令、(b)比所述第一比较指令靠后记述、不能与所述第一比较指令并列地由所述处理器执行的第三指令和(c)比所述第三指令靠后记述的所述第二指令;再配置部件,更换识别的第三指令和第二指令。
所述程序变换装置还包含:并列执行边界信息生成部件,生成表示可并列执行所述第一比较指令和更换后的第二指令的并列执行边界信息。
根据这些结构,得到与所述(4)相同的效果。
(6)本发明的计算机程序,使计算机执行权利要求15的程序变换方法中包含的各步骤。
根据该结构,得到与所述(3)相同的效果。
本发明的计算机程序,使计算机执行权利要求20的程序变换方法中包含的各步骤。
本发明的计算机程序,使计算机执行权利要求21的程序变换方法中包含的各步骤。
根据这些结构,得到与所述(4)相同的效果。
(7)本发明的程序记录媒体是计算机可读取的程序记录媒体,记录权利要求26、权利要求27和权利要求28的计算机程序中的至少一个。
根据该结构,通过把该程序记录媒体中记录的程序移送到预期的计算机并使计算机执行,可实现具有和所述(3)或(4)相同的效果的程序变换装置。
附图说明
本发明的这些和其他目的、优点和特征从下面联系附图的说明中变得明显,这些附图示出本发明的特定实施例。附图中:
图1是表示处理器10的整体结构的框图;
图2是表示执行部50的结构的框图;
图3是表示条件标志运算部51的结构的框图;
图4是表示逻辑运算电路501的结构的框图;
图5是表示处理器10执行的比较指令的一览;
图6是表示处理器10执行的比较运算的一览;
图7是比较指令的格式的一例;
图8是用于处理器10执行图36的复合条件处理的程序的一例;
图9是处理器10执行图8的程序时的执行阶段的详细定时图;
图10是表示程序编制器装置100的整体结构的框图;
图11(A)是汇编码信息的一例,(B)是对应所述汇编码信息的源程序;
图12是基本块信息的一例;
图13是记述(A)~(F)条件处理的if语句的6种形式;
图14是对应(A)~(F)if语句的各形式的汇编码信息;
图15是对应(A)~(F)各汇编码的基本块信息;
图16是条件处理部分的检测中使用的对照信息;
图17是表示对照变更处理的细节的流程图;
图18是表示对照处理的细节的流程图;
图19是表示基本块对照处理的细节的流程图;
图20是表示变更处理的细节的流程图;
图21是表示基本块变更处理的细节的流程图;
图22是表示采用对照变更处理的汇编码信息的一例;
图23是采用(A)和(B)对照变更处理的基本块信息的一例;
图24是采用对照变更处理的汇编码信息的一例;
图25是采用对照变更处理的基本块信息的一例;
图26是表示指令排序处理的流程图;
图27是模式表示的依赖曲线的一例;
图28是表示依赖关系分析处理的细节的流程图;
图29是表示指令再配置处理的细节的流程图;
图30是由依赖关系分析处理生成的依赖曲线的一例;
图31是由指令再配置处理生成的机器语言指令串的一例;
图32是表示原来的处理器的一个构成例的框图;
图33是表示条件处理的一例的流程图;
图34是由原来的处理器执行图33的条件处理的程序的一例;
图35是由原来的处理器执行图34的程序时的定时图;
图36是表示复合条件处理的一例的流程图;
图37是由原来的处理器执行图36的复合条件处理的程序的一例。
具体实施方式
<1.处理器>
本实施例的处理器具有通过对第二条件标志值和对应比较指令的比较运算的结果值进行逻辑运算算出第一条件标志值的第一功能。该第二条件标志值可以是在算出该第一条件标志值的时钟循环中从条件标志寄存器读出的值,也可以是对应在该时钟循环中并列执行的其他比较指令算出的值。
该处理器具有在一个时钟循环中并列执行条件标志值的算出和对应条件执行指令的处理、对应该算出的条件标志值把条件执行指令的执行结果无效化的第二功能。
下面参考附图详细说明本实施例的处理器。
<1.1整体结构>
图1是表示本实施例的处理器的整体结构的框图。处理器10由指令供给部20、译码部30和执行部50构成。
处理器10的整体结构、以及指令供给部20、译码部30与原来的处理器90的整体结构、以及指令供给部20、译码部30相同,省略说明,主要说明执行部50与处理器90的原来的执行部40的不同点。
<1.2执行部50的结构>
图2是表示执行部50的结构的框图。执行部50除原来的执行部40具有的各构成要素外,还包括条件标志运算部51。与原来的执行部40的构成要素相同的构成要素附加相同符号,省略详细说明。
在1个时钟循环中包含的规定时间之前(后面简称时钟循环的前半期间),执行部50的第一运算部441、第二运算部442和第三运算部443对应从执行控制部52提供的控制信号,对经数据总线48供给的操作数数据进行规定运算。尤其进行比较运算时,将作为其结果的真值或假值输出到条件标志运算部51。
条件标志运算部51对应从执行控制部52提供的控制信号,通过(a)使从条件标志寄存器46读出的值或从第一运算部441、第二运算部442和第三运算部443提供的比较运算的结果值简单通过、或通过(b)对从条件标志寄存器46读出的值和从第一运算部441、第二运算部442和第三运算部443提供的比较运算的结果值进行逻辑运算或通过对从第一运算部441、第二运算部442和第三运算部443提供的比较运算的结果值之间进行逻辑运算算出新的条件标志值。
条件标志运算部51把该通过的或算出的值输出到条件标志寄存器46的同时,还输出到第一门451、第二门452和第三门453中进行对应条件执行指令的处理的门。
在作为所述时钟循环的剩余期间的后半期间中,从条件标志运算部51提供条件标志值的门在该条件标志值为真值的情况下经数据总线49把从对应的运算部提供的运算结果输出到寄存器文件43,在是假值的情况下,废弃该结果。
条件标志寄存器46存储从条件标志运算部51提供的值。
<1.3条件标志运算部51的结构>
图3是表示条件标志运算部51的结构的框图。条件标志运算部51由逻辑运算电路501到503和选择器510到553构成。
分别从执行控制部52向SF1到SF3、SE1到SE3、SG1到SG3和S10到S36提供控制信号。
分别向C0in到C6in输入从条件标志寄存器C0到C6读出的值。向E1,E2和E3分别输入由第一运算部441、第二运算部442和第三运算部443进行的比较运算的结果值。
分别向C0out到C6out输出应存储在条件标志寄存器C0到C6中的值。向G1,G2和G3分别输出用于控制第一门451、第二门452和第三门453的值。
下面详细说明接受并具有对应第一运算部441、第一门451的数据的处理的逻辑运算电路501和选择器510到516,541和551。
选择器541输入到之前的时钟循环为止算出的条件标志寄存器C0到C6的某个中存储的条件标志值和当前的时钟循环的前半期间中由逻辑运算电路502或503算出的条件标志值,对应控制信号SF1选择其中一个,输出到逻辑运算电路501。
逻辑运算电路501在所述时钟循环的前半期间中算出对第一运算部441进行的比较运算的结果值E1和由选择器541选择的值C1进行对应控制信号SE1的逻辑运算得到的1个或2个值,把该算出的值输出到A1,或A1和B1。关于该逻辑运算电路的结构和该逻辑运算电路进行的逻辑运算,在后面详细说明。
选择器510到516分别对应条件标志寄存器C0到C6设置,分别对应控制信号S10到S16选择输出A1,B1或从对应的条件标志寄存器读出的值中的某个。
选择器551经选择器510到516输入分别应在条件标志寄存器C0到C6中存储的值,对应控制信号SG1选择输出其中一个。
通过同样结构和作用,逻辑运算电路502和选择器520到526,542和552处理对应第二运算部442和第二门452的数据,逻辑运算电路503和选择器530到536,543和553处理对应第三运算部443和第三门453的数据。
通过这些结构,条件标志运算部51的逻辑运算电路501到503在一个时钟循环的前半期间中通过对第二条件标志值和对应比较指令分别由第一运算部441、第二运算部442和第三运算部443进行的比较运算的结果值进行逻辑运算算出第一条件标志值。
该第二条件标志值可在之前的时钟循环之前算出并存储在条件标志寄存器C0到C6中的某个中,可以是在该时钟循环的前半期间中由其他逻辑运算电路算出的值。
该算出的第一条件标志值在该时钟循环的后半期间中通过控制处理第一门451、第二门452和第三门453中的条件执行指令的门使对应该条件执行指令进行的运算结果无效化。并且,存储在条件标志寄存器46中。
<1.4逻辑运算电路501的结构>
图4是表示逻辑运算电路501的结构的框图。逻辑运算电路501包括逻辑与运算器601、逻辑非运算器602、逻辑或运算器603、逻辑非运算器604和605、逻辑与运算器606以及选择器607和608。
向E1提供由第一运算部441进行的比较运算的结果值。
向C1提供选择器541的输出值。该输出值是在条件标志寄存器C0到C6中的某个中保持的值或由逻辑运算电路502或503算出的值。
向A1和B1分别输出选择器607和608选择的值。
下面将逻辑与运算、逻辑或运算和逻辑非运算分别用记号&、|或~表示。
逻辑与运算器601算出(E1&C1),逻辑非运算器602算出~(E1&C1)。
逻辑或运算器603算出(E1|C1),逻辑非运算器604算出~(E1|C1)。
逻辑非运算器605算出~E1,逻辑与运算器606算出(~E1&C1)。
选择器607和608对应控制信号SE1选择这些算出值,并根据下面的(1)到(4)之一输出到A1和B1。
(1)A1:E1、B1:~E1
(2)A1:(E1&C1)、B1:~(E1&C1)
(3)A1:(E1|C1)、B1:~(E1|C1)
(4)A1:(E1&C1)、B1:(~E1&C1)
逻辑运算电路502和503的结构与逻辑运算电路501相同。
<1.5指令组和控制信号的细节>
图5是处理器10执行的比较指令的一览。指令栏表示各指令的助记符号和操作数,含义栏表示对应各指令由处理器10进行的处理。
图6是对应该助记符号表示的CC部分指定的比较运算的一览。
下面对应上下文,将条件标志寄存器Cm或条件标志寄存器Cm中保持的值简单表示为Cm,将通用寄存器Ra和通用寄存器Ra中保持的值简单表示为Ra。
<1.5.1cmpCC指令>
cmpCC指令是CC部分中表示指定图6所示的比较运算的文字中的哪个的指令的统称。各指令将Cm和Cn以及Ra和Rb作为操作数,可省略Cn。这里,m和n分别是指定条件标志寄存器的0到7中的某个数字,a和b分别是指定通用寄存器的0到63中的某个的数字。
对应cmpCC Cm:Cn,Ra,Rb指令,执行部50对Ra和Rb进行CC指定的比较运算,求出结果值result,把该结果值result存储在Cm中,将其逻辑逆向值~(result)存储在Cn中。
该指令通过执行部50中执行控制部52具体地发出如下的控制信号来处理。
开始时钟循环时,执行控制部52经数据总线48向第一运算部441、第二运算部442和第三运算部443中的处理该比较指令的一个供给保持在通用寄存器Ra和Rb中的值。并且,供给该值的运算部执行由CC指定的比较运算,把得到的结果值输出到与该运算部对应的逻辑运算电路。
这里,代表性地说明第一运算部441执行比较运算,把其结果输出到逻辑运算电路501的情况。
执行控制部52向逻辑运算电路501提供用于使第一运算部441的比较运算结果E1向A1输出且使逻辑非运算器605的结果向B1输出的控制信号SE1。
向选择器51m,52m,53m提供选择该输出的A1的控制信号S1m,S2m,S3m,向选择器51n,52n,53n输出选择该输出的B1的控制信号S1n,S2n,S3n(这里,m和n是由该比较指令指定的具体数值)。
对应这样提供的控制信号,选择器53m和选择器53n的输出值分别确定为result和~(result)。通过执行部50的各构成要素用满足规定的传播延迟时间的元件构成,可在时钟循环的前半期间确定该输出值。
该时钟循环中,第二运算部442并列处理将条件标志值Cm或Cn作为执行条件的条件执行指令时,该时钟循环的后半期间中,选择器552向G2输出选择器53m和选择器53n的输出值。对应G2控制的第二门452把该条件执行指令的执行结果无效化。第三运算部443并列处理将条件标志值Cm或Cn作为执行条件的条件执行指令时,同样把该条件执行指令无效化。
条件标志寄存器Cm或Cn在该时钟循环结束前用选择器53m和选择器53n的输出值更新内容。
对应cmpCC Cm,Ra,Rb指令的控制信号是从所述控制信号省去了与逻辑运算电路501的输出B1和条件标志寄存器Cn相关的控制信号的信号。
第二运算部442或第三运算部443处理cmpCC指令的情况下,可使用同样的控制信号进行控制。
<1.5.2cmpCCa指令>
cmpCCa指令是CC部分中表示指定图6所示的比较运算的文字中的哪个的指令的统称。各指令将Cm,Cn和Ck以及Ra和Rb作为操作数,可省略Cn。这里,m和n,k分别是指定条件标志寄存器的0到7中的某个数字,a和b分别是指定通用寄存器的0到63中的某个的数字。
对应cmpCCa Cm:Cn,Ra,Rb,Ck指令,执行部50对Ra和Rb进行CC指定的比较运算,求出结果值result,算出该结果值result和Ck值的逻辑与值(result&Ck),存储在Cm中,将其逻辑逆向值~(result&Ck)存储在Cn中。
这里,Ck是在过去时钟循环中对应比较指令算出的已经存储在Ck中的值或对应在同一时钟循环中并列处理的其他比较指令在该时钟循环的前半期间算出的值。
该指令通过执行部50中执行控制部52具体地发出如下的控制信号来处理。
开始时钟循环时,执行控制部52经数据总线48向第一运算部441、第二运算部442和第三运算部443中的处理该比较指令的一个供给保持在通用寄存器Ra和Rb中的值。并且,该运算部执行由CC指定的比较运算,把得到的结果值输出到对应的逻辑运算电路。
这里,代表性地说明第一运算部441执行该比较运算,把其结果输出到逻辑运算电路501的情况。
执行控制部52通过如下产生控制信号把条件标志值Ck导入逻辑运算电路501的C1输入。
(a)条件标志值Ck已经存储的条件标志寄存器Ck的情况下,向选择器51k,52k和53k提供仅使对Ckin的输入通过的控制信号S1k,S2k,S3k的同时,向选择器541提供选择来自选择器53k的输出值的控制信号SF1。
(b)条件标志值Ck对应该时钟循环中并列处理的其他比较指令算出并从逻辑运算电路502或逻辑运算电路503得到的情况下,对选择器52k和53k提供选择该得到的Ck的控制信号,同时向选择器541提供选择来自选择器53k的输出值的控制信号SF1。
并且执行控制部52向逻辑运算电路501提供使逻辑与运算器601的结果输出到A1且使逻辑非运算器602的结果输出到B1的控制信号SE1。
向选择器51m,52m,53m提供选择该输出的A1的控制信号S1m,S2m,S3m,向选择器51n,52n,53n提供选择该输出的B1的控制信号S1n,S2n,S3n(这里,m和n,k是由该比较指令指定的具体数值)。
对应这样提供的控制信号,选择器53m和选择器53n的输出值分别确定为(result&Ck)和~(result&Ck)。如果执行部50的各构成要素用满足规定的传播延迟时间的元件构成,可在时钟循环的前半期间确定该输出值。
将并列处理的条件标志值Cm或Cn设为执行条件的条件执行指令的无效化以及条件标志寄存器Cm和Cn的更新与对cmpCC指令说明的一样。
对应cmpCCa Cm Ra,Rb,Ck指令的控制信号是从所述控制信号省去了与逻辑运算电路501的输出B1和条件标志寄存器Cn相关的控制信号的信号。
第二运算部442或第三运算部443处理cmpCCa指令的情况下,可使用同样的控制信号进行控制。
k与m或n之一相同也无妨。此时,条件标志运算部51在时钟循环的前半期间读出Ck,通过与比较运算结果进行逻辑运算算出新的条件标志值,Ck在该时钟循环结束前用该新的条件标志值更新内容。
<1.5.3cmpCCo指令>
cmpCCo指令是CC部分中表示指定图6所示的比较运算的文字中的哪个的指令的统称。各指令将Cm,Cn和Ck以及Ra和Rb作为操作数,可省略Cn。这里,m,n和k分别是指定条件标志寄存器的0到7中的某个数字,a和b分别是指定通用寄存器的0到63中的某个的数字。
对应cmpCCo Cm:Cn,Ra,Rb,Ck指令,执行部50对Ra和Rb进行CC指定的比较运算,求出结果值result,算出该结果值result和Ck值的逻辑与值(result|Ck),存储在Cm中,将其逻辑逆向值~(result|Ck)存储在Cn中。
这里,Ck是在过去时钟循环中对应比较指令算出的已经存储在Ck中的值或对应在同一时钟循环中并列处理的其他比较指令在该时钟循环的前半期间算出的值。
对应该指令,执行控制部52发出的控制信号除对逻辑运算电路提供使逻辑或运算器603的结果输出到A1且使逻辑非运算器604的结果输出到B1的控制信号SE1外,与对cmpCCa指令说明的控制信号相同。
对应该控制信号,选择器53m和选择器53n的输出值在时钟循环的前半期间中分别确定为(result|Ck)和~(result|Ck)。
关于将并列处理的条件标志值Cm或Cn设为执行条件的条件执行指令的无效化以及条件标志寄存器Cm和Cn的更新与对cmpCC指令说明的相同。
对应cmpCCo Cm Ra,Rb,Ck指令的控制信号是从所述控制信号省去了与逻辑运算电路501的输出B1和条件标志寄存器Cn相关的控制信号的信号。
第二运算部442或第三运算部443处理cmpCCa指令的情况下,可使用同样的控制信号进行控制。
k与m或n之一相同也无妨。
<1.5.4cmpCCn指令>
cmpCCn指令是CC部分中表示指定图6所示的比较运算的文字中的哪个的指令的统称。各指令将Cm和Cn,Ck以及Ra和Rb作为操作数,可省略Cn。这里,m和n,k分别是指定条件标志寄存器的0到7中的某个数字,a和b分别是指定通用寄存器的0到63中的某个的数字。
对应cmpCCn Cm:Cn,Ra,Rb,Ck指令,执行部50对Ra和Rb进行CC指定的比较运算,求出结果值result,算出该结果值result和其逻辑逆向值~result分别与Ck的逻辑与值(result&Ck)和(~result&Ck),将前者存储在Cm中,后者存储在Cn中。
这里,Ck是在过去时钟循环中对应比较指令算出的已经存储在Ck中的值或对应在同一时钟循环中并列处理的其他比较指令在该时钟循环的前半期间算出的值。
对应该指令,执行控制部52发出的控制信号除对逻辑运算电路提供使逻辑与运算器601的结果输出到A1且使逻辑积运算器606的结果输出到B1的控制信号SE1外,与对cmpCCa指令说明的控制信号相同。
对应该控制信号,选择器53m和选择器53n的输出值在时钟循环的前半期间中分别确定为(result&Ck)和~(result&Ck)。
关于将并列处理的条件标志值Cm或Cn设为执行条件的条件执行指令的无效化以及条件标志寄存器Cm和Cn的更新与对cmpCC指令说明的相同。
对应cmpCCn Cm Ra和Rb,Ck指令的控制信号是从所述控制信号省去了与逻辑运算电路501的输出B1和条件标志寄存器Cn相关的控制信号的信号。
第二运算部442或第三运算部443处理cmpCCa指令的情况下,可使用同样的控制信号进行控制。
k与m或n之一相同也无妨。
<1.5.5指令格式>
图7是在计算机资源上表示所述各比较指令的情况下的格式的一例。
该例中,在1个比较指令为32比特长且可分割该32比特的各字段中,表示出指令码、操作数、执行条件信息、并列执行边界信息。OP是表示指令码的字段,Cm、Cn、Ra、Rb和Ck是表示与所述说明中使用的记号对应的操作数的字段,P是表示执行条件信息的字段,E是表示并列执行边界信息的字段。其中,表示执行条件信息和并列执行边界信息的字段对包含比较指令的全部的指令一起设置。
对于表示比较指令的格式,不限定于该格式,由于它并非本发明的主题,因此省略详细说明。
<1.6动作定时的具体例子>
根据处理器10,例如可根据使用图8所示的条件转移指令的样式的程序执行图36的流程图所示的复合条件处理。说明该图所示的指令中,指令1到指令3的各自的执行阶段在一个时钟循环中并列执行的情况下的该执行阶段内的详细动作定时。
这里,指令1是算出条件标志值C2的第一比较指令,指令2是对根据指令1算出的条件标志值C2进行运算来算出条件标志值C0和C1的第二比较指令,指令3是根据对应指令2算出的条件标志值C0被无效化的条件执行指令。这些指令是可由处理器10重新并列处理的指令的一例。
图9是这些指令的执行阶段的详细动作定时图。该执行阶段分为前半条件标志运算期间和后半门控制期间。指令1、指令2和指令3分别作为第一运算部441、第二运算部442和第三运算部443处理的指令来说明。
该执行阶段中,对应从执行控制部52发出的控制信号进行下面的处理。
向R1总线输出寄存器R2的内容,向L1总线输出指令1包含的瞬时操作数值0,第一运算部441执行比较运算(R2≠0)。
向R2总线输出寄存器R0的内容,向L2总线输出寄存器R1的内容,第二运算部442执行比较运算(R0<R1)。
向R3总线输出寄存器R0的内容,向L3总线输出指令3包含的瞬时操作数值1,第三运算部443执行算术加法运算(R0+1)。
这些运算在各个运算器中同时并行执行,在条件标志运算期间包含的规定时间之前,确定比较运算(R2≠0)的结果值E1和比较运算(R0<R1)的结果值E2。
E1的值仅通过逻辑运算电路501并输出到A1,由选择器512,522和532选择,输出到C2out,同时由选择器542选择,也输入到逻辑运算电路502。
逻辑运算电路502把(E2|C2out)和~(E2|C2out)分别输出到A2和B2。选择器520和530选择A2,选择器521和531选择B2,在各个条件标志运算期间结束之前,输出到C0out和C1out。
门控制期间,由选择器553选择C0out的值,提供给第三门453。因为C0out为真值,所以由第三运算部443算出的值(R0+1)经第三门453输出到D3总线。
执行阶段结束前,条件标志寄存器C0,C1和C2分别存储C0out,C1out和C2out的值,R0寄存器存储向D1总线输出的值(R0+1)。
这里如果C0out为假值,第三运算部443的算出结果(R0+1)被第三门453阻止,不输出到D3总线,指令3在该执行阶段中被无效化。
这里,注意下面的几点。
该具体例子中,(a)第二运算部442实现权利要求1所述的第一运算部件的作用,根据指令2算出表示R0<R1成立与否的逻辑值,(b)第一运算部441实现权利要求1所述的第二运算部件的作用,根据指令1算出C2,作为第二条件标志值,(c)条件标志运算部51实现权利要求1和8所述的条件标志运算部件的作用,通过对该算出的逻辑值和C2进行逻辑或运算,算出C0,作为第一条件标志值。并且,(d)第三运算部443实现权利要求8所述的第一运算部件的作用。
但是,该具体例子不限定权利要求所述的各运算部件和实施例的各运算部的对应关系。
从实施例所示的电路结构可知第一运算部441、第二运算部442和第三运算部443任一个可具有相同的功能,实现权利要求所述的任一运算部件的作用。也就是,和该具体例子所示的运算部不同的运算部只要实现权利要求所述的各运算部件的作用,其实施例也包含在本发明中。
<1.7汇总>
如以上说明,处理器10通过对第二条件标志值和对应比较指令的比较运算的结果值进行逻辑运算算出第一条件标志值。该第二条件标志值可以是在进行该第一条件标志值的算出的时钟循环中从条件标志寄存器读出的值,也可以是对应在该时钟循环中并列执行的其他比较指令算出的值。
处理器10在一个时钟循环中并列执行条件标志值的算出和对应条件执行指令的处理,对应该算出的条件标志值把条件执行指令的执行结果无效化。
<2.程序编制器装置>
本实施例的程序编制器装置将记述条件处理的程序变换为以所述处理器10为对象处理器且不包含条件转移指令的指令串。另外,该指令串中,为了保证执行结果的相同性,替换指令,以便配置一连串的可由该对象处理器并列执行的指令,同时生成表示该可并列执行的指令的并列执行边界信息。
下面参考附图详细说明本实施例的程序编制器装置。
<2.1整体结构>
图10是表示本实施例的程序编制器装置100的整体结构的框图。
程序编制器装置100是根据源文件180中存储的源程序生成应在对象处理器中执行的机器语言指令串并输出到对象文件190的程序变换装置。
本实施例中作如下说明:作为一个例子,该源程序用C语言记述,该机器语言指令串作为之后关联编辑处理并变换为执行形式程序的对象码。
程序编制器装置100包括程序编制器上游部110、汇编码生成部120、指令排序部130和对象码生成部140。
汇编码生成部120包含条件处理变换部121,指令排序部130包含依赖关系分析部131和指令再配置部136,依赖关系分析部131包含数据依赖判定部132、反依赖判定部133、输出依赖判定部134和条件标志依赖判定部135。
程序编制器装置100具体通过处理器、存储程序的ROM(只读存储器)、作业用的RAM(随机存取存储器)、盘装置等的软件和硬件实现。所述各部的功能通过处理器执行ROM中存储的程序实现。所述各部之间的数据传送经RAM、盘装置等硬件进行。
程序编制器上游部110从源文件180读出源程序,通过进行字句分子处理和成文分析处理生成中间码。程序编制器上游部110进行的这些处理是原来的程序编制器中一般进行的技术,因此省略详细说明。
汇编码生成部120从程序编制器上游部110生成的中间码生成汇编码和表示该汇编码中包含的基本块的基本块信息。
这里,所谓基本块是从前面指令到结尾指令必须一连串执行的指令串,也就是不产生从其中途的指令到其他指令的转移也不产生从其他指令向其中途指令的转移的指令串。
汇编码生成部120首先通过进行和原来的程序编制器同样的处理对表示条件处理的中间码生成使用1个以上条件转移指令的原来样式的汇编码。
接着条件处理变换部121把该生成的原来样式的汇编码变换为不使用条件转移指令的等效的汇编码。条件处理变换部121的处理细节在后面说明。
指令排序部130中,依赖关系分析部131对所述变换了的汇编码中包含的各指令判定与执行顺序相关的依赖关系。尤其,条件标志依赖判定部135在对象处理器中判定与条件标志寄存器的定义和参照相关的依赖关系。依赖关系分析部131生成表示该判定的依赖关系的依赖曲线。
在依赖关系分析部131中,指令再配置部136根据生成的依赖曲线更换所述变换后的汇编码中包含的指令。指令再配置部136还生成表示可在该更换后的汇编码中并列执行的指令的并列执行边界信息。指令排序部130的处理细节在后面说明。
对象码生成部140根据所述更换后的汇编码和并列执行边界信息生成机器语言指令串,把包含该机器语言指令串的对象码记录在对象文件190中。
下面省略对属于原来一般的技术的事项的说明,详细说明本程序编制器的特征处理。
<2.2汇编码生成部120的细节>
汇编码生成部120中,条件处理变换部121输入原来样式的汇编码和表示该汇编码中的基本块的基本块信息。根据该基本块信息识别该汇编码中记述条件处理的部分,把识别的部分变换为等效且不包含条件转移指令的汇编码。并且,更新该基本块信息,以表示变换后的汇编码中的基本块。
记述该条件处理的部分是指记述评价条件成立与否的处理的部分和记述在该条件成立或不成立的情况下应执行的处理的部分,另外,也包含在该条件成立与否相反的情况下应执行的处理的部分。
<2.2.1数据构造>
图11(A)是输入到条件处理变换部121的表示原来样式的汇编码的汇编码信息的数据构造和内容的一例。该汇编码信息从图11(B)的源程序经中间码由汇编码生成部120生成。
图11(A)的汇编码信息中,指令序号栏表示识别指令的序号,标签栏表示将该指令作为转移目的地等进行参照时使用的标签,执行条件栏表示为了使该指令产生实质效果而应为真值的条件标志,指令栏表示该指令的助记符号表示,并列执行边界栏表示适合于所述处理器的并列执行边界信息。
图12是输入到条件处理变换部121的基本块信息的数据构造和内容的一例,关于图11(A)的汇编码信息,由汇编码生成部120生成。
基本块序号栏表示识别基本块的序号,指令范围栏表示与该基本块对应的汇编码信息的指令的范围,先行块栏用序号表示该基本块的先行基本块,后续块栏用序号表示该基本块的后续基本块。先行块序号栏的点·表示未示出的基本块的序号。
区分图11(A)的指令的切割线记入来用于简便地明确表示图12的基本块信息所示的各指令范围,汇编码信息不包含表示该切割线的信息。
<2.2.2变换对象部分的细节>
条件处理变换部121在基本块信息中根据记述条件处理的部分中特征体现出的模式(pattern)检测出具有先行块和后续块的一连串的基本块。然后,将与该检测出的一连串的基本块对应的所述汇编码信息部分识别为变换对象部分。
下面说明条件处理变换部121用于基本块的检测的与先行块和后续块出现的6种模式和各模式引出的条件处理的方式。
该6种先行块和后续块的模式分别在源程序中记述的条件处理的6种方式中引出且通过汇编码生成部120生成的基本块信息表示。
图13(A)到(F)表示该6种条件处理的方式。该图所示的源程序中,A,B和C分别表示1个比较运算式(例如表示为x=y等),B1,B2和B3表示1个以上的语句的排列。
图13(A)是基于单一的比较运算的if-then方式,(B)是基于单一的比较运算的if-then-else方式,(C)是基于通过逻辑与运算结合的2个以上的比较运算的if-then方式,(D)是基于通过逻辑与运算结合的2个以上的比较运算的if-then-else方式,(E)是基于通过逻辑或运算结合的2个以上的比较运算的if-then方式,(F)是基于通过逻辑或运算结合的2个以上的比较运算的if-then-else方式。
图14(A)到(F)表示根据所述各方式的条件处理由汇编码生成部120生成并提供给条件处理变换部121的汇编码信息。
该图的指令栏所示的cmpA C6指令cmpB C6指令和cmpC C6指令分别表示评价if语句中的比较运算A,B和C并将其评价结果存储在条件标志寄存器C6中的比较指令。
Cmp!A C6指令、cmp!C6指令和cmp!C C6指令分别表示评价if语句中的比较运算A,B和C的逆条件并将其评价结果存储在条件标志寄存器C6中的比较指令。
作为一个例子,对应比较运算式x=y的这种比较指令为cmpeqC6,R0,R1和cmpne C6,R0,R1,接着把变量x和y分别移送到寄存器R0和R1的指令
mov R0,x
mov R1,y配置。
B1,B2和B3表示分别执行源代码中的语句的排列B1,B2和B3的指令串。为方便说明,B1,B2和B3都不包含条件转移指令,用切割线区分表示各基本块。
图15(A)到(F)是与图14(A)到(F)的各汇编码信息对应的基本块信息,由汇编码生成部120生成并提供给条件处理变换部121。先行块序号栏和后续块序号栏的点·表示未示出的基本块的序号。
这些各基本块、(a)记述评价比较条件成立与否的处理的第一部分、(b)记述在该比较条件成立与否的任一情况下应执行的处理的第二部分、和(c)记述该比较条件成立与否相反的情况下应执行的处理的第三部分如下对应。
图14(A)和图15(A)中,基本块b0是第一部分,基本块b1是第二部分。
图14(B)和图15(B)中,基本块b0是第一部分,基本块b1是第二部分,基本块b2是第三部分。
图14(C)和图15(C)以及图14(E)和图15(E)中,基本块b0到bn-1是第一部分,基本块bn是第二部分。此时的比较条件表现为复合比较条件。
图14(D)和图15(D)以及图14(F)和图15(F)中,基本块b0到bn-1是第一部分,基本块bn是第二部分,基本块bn+1是第三部分。此时的比较条件表现为复合比较条件。
<2.2.3条件处理变换部121的细节>
条件处理变换部121在基本块信息中检测出按图15(A)到(F)所示的模式具有先行块和后续块的一连串基本块,在汇编码信息中把与该检测出的基本块对应的指令串识别为变换对象部分,把识别出的部分中包含的指令串变换为不包含条件转移指令的等效指令串。
图16表示条件处理变换部121检测这种一连串的基本块以及变换指令串所使用的对照信息A到对照信息F。各对照信息中,对照相对序号栏表示一连串的基本块的各基本块的相对位置,对照先行块序号栏表示该基本块应具有的先行块序号的相对位置,对照后续块序号栏表示该基本块应具有的后续块序号的相对位置,变更处理栏表示适用于与该基本块对应的指令串中的变更处理。先行块序号栏和后续块序号栏的记号*表示和0个以上的任意的基本块序号匹配。
这里注意,适用于与所述的第一部分对应的指令串的变更处理相当于权利要求15所说的第一变换步骤,适用于与所述的第二部分对应的指令串的变更处理相当于权利要求15所说的第二变换步骤,适用于与所述的第三部分对应的指令串的变更处理相当于权利要求16所说的第三变换步骤
图17是表示条件处理变换部121进行的对照变更处理的细节的流程图。
下面参照图17的流程图说明该对照变更处理。
(步骤S100)顺序将基本块信息的前面基本块到末尾基本块的各基本块作为对照起点块,反复进行操作,直到步骤S170。
(步骤S110)对照对照信息A和该对照起点块以后的一连串的基本块信息。关于该对照处理,在后面详细说明。
(步骤S111)判断该一连串的基本块具有的先行块和后续块是否与对照信息A匹配。
(步骤S112)匹配时,进行变更处理(A)。关于该变更处理,在后面详细说明。从基本块信息的前面基本块开始反复对照处理。
(步骤S120)不匹配时,对照对照信息B和该对照起点块以后的一连串的基本块信息。
(步骤S121)判断对照信息B是否匹配。
(步骤S122)匹配时,进行变更处理(B),从基本块信息的前面基本块开始反复对照处理。
(步骤S130)不匹配时,对照对照信息C和该对照起点块以后的基本块信息。
(步骤S131)判断对照信息C是否匹配。
(步骤S132)匹配时,进行变更处理(C),从基本块信息的前面基本块开始反复对照处理。
(步骤S140)不匹配时,对照对照信息D和该对照起点块以后的基本块信息。
(步骤S141)判断对照信息D是否匹配。
(步骤S142)匹配时,进行变更处理(D),从基本块信息的前面基本块开始反复对照处理。
(步骤S150)不匹配时,对照对照信息E和该对照起点块以后的基本块信息。
(步骤S151)判断对照信息E是否匹配。
(步骤S152)匹配时,进行变更处理(E),从基本块信息的前面基本块开始反复对照处理。
(步骤S160)不匹配时,对照对照信息F和该对照起点块以后的基本块信息。
(步骤S161)判断对照信息F是否匹配。
(步骤S162)匹配时,进行变更处理(F),从基本块信息的前面基本块开始反复对照处理。
(步骤S170)从步骤S100开始反复进行操作。将基本块信息的全部基本块作为对照起点块,与哪个对照信息都不匹配时结束处理。
图18是表示条件处理变换部121进行的对照处理的细节的流程图。该处理从所述对照变更处理指定并调出对照信息A到对照信息F中的一个,使用保持对照起点块序号的变量s和保持相对序号的变量r执行。
下面参照图18的流程图说明该对照处理。
(步骤S200)将变量s设为对照起点块序号。
(步骤S201)把指定的对照信息的各行作为当前行并反复进行操作,直到步骤S230。
(步骤S202)将变量r设为当前行的对照相对序号栏中表示的值。值用n式表示的情况下,使用初次循环中的步骤S213求出的n值具体算出其值。
(步骤S203)如果当前行的对照相对序号栏中表示出k,则执行步骤S220以后的步骤,否则,执行步骤S210以后的步骤。
(步骤S210)对照当前行的对照信息和基本块序号栏为(s+r)的基本块信息。关于该基本块对照处理,在后面详细说明。
(步骤S211)不匹配时,进入步骤S241。
(步骤S212)匹配时,r=0,且对照信息C到对照信息F中的某个在处理中,则执行步骤S213。
(步骤S213)如下算出n。将后续块序号栏中表示的序号中不为(s+r)的序号设为t。如果对照信息C或对照信息D在处理中,则使(t-s-1)为n,如果对照信息E或对照信息F在处理中,则使(t-s)为n。进入步骤S230。
(步骤S220)设r为1到n-2的整数,反复进行操作,直到步骤S223。步骤S213中求出的n为(n-2)<1时,不执行作为该反复处理的主体的步骤S221。
(步骤S221)对照当前行的对照信息和基本块序号栏为(s+r)的基本块信息。
(步骤S222)不匹配时,进入步骤S241。
(步骤S223)从步骤S220反复进行操作。
(步骤S230)从步骤S201反复进行操作。
(步骤S240)用全部对照信息判断为匹配。该步骤在对对照信息的各行判断为匹配时执行。
(步骤S241)用全部对照信息判断为不匹配。
图19是表示条件处理变换部121进行的基本块对照处理的细节的流程图。该处理从对照处理指定并调出对照起点块序号s和相对序号r,使用保持对照先行块序号的变量i和保持对照后续块序号的变量j执行。
下面参照图19的流程图说明该基本块对照处理。
(步骤S250)将变量i作为当前行的对照先行块序号栏中所示的各要素,反复进行操作,直到步骤S253。
(步骤S251)如果i不为*,则执行步骤S252。
(步骤S252)如果基本块序号栏为(s+r)的基本块信息的先行块序号栏中没有要素(s+i),则进入步骤S271。
(步骤S253)从步骤S250开始反复进行操作。
(步骤S254)如果基本块序号栏为(s+r)的基本块信息的先行块序号栏中有未对照的要素,则进入步骤S255。
(步骤S255)如果当前行的对照先行块序号栏中没有要素*,则进入步骤S271。
(步骤S260)将变量j作为当前行的对照后续块序号栏中所示的各要素,反复进行操作,直到步骤S263。
(步骤S261)如果j不为*,则执行步骤S262。
(步骤S262)如果基本块序号栏为(s+r)的基本块信息的后续块序号栏中没有要素(s+j),则进入步骤S271。
(步骤S263)从步骤S260开始反复进行操作。
(步骤S264)如果基本块序号栏为(s+r)的基本块信息的后续块序号栏中有未对照的要素,则进入步骤S265。
(步骤S265)如果当前行的对照后续块序号栏中没有要素*,则进入步骤S271。
(步骤S270)判断为匹配。
(步骤S271)判断为不匹配。
图20是表示条件处理变换部121进行的变更处理的细节的流程图。该处理从对照变更处理指定并调出对照信息A到对照信息F之一,使用保持对照起点块序号的变量s和保持相对序号的变量r执行。
下面参照图20的流程图说明该变更处理。
(步骤S300)将变量s设为对照起点块序号。
(步骤S301)把指定的对照信息的各行作为当前行并反复进行操作,直到步骤S330。
(步骤S302)将变量r设为当前行的对照相对序号栏中表示的值。值用n式表示的情况下,使用步骤S213求出的n值具体算出其值。
(步骤S303)如果当前行的对照相对序号栏中表示出k,则执行步骤S320以后的步骤,否则,执行步骤S310。
(步骤S310)对于基本块(s+r)执行基本块变更处理。关于该基本块变更处理,在后面详细说明。
(步骤S320)设r为1到n-2的整数,反复进行操作,直到步骤S322。步骤S213中求出的n满足(n-2)<1时,不执行该反复处理。
(步骤S321)对基本块(s+r)执行基本块变更处理。
(步骤S322)从步骤S320反复进行操作。
(步骤S330)从步骤S301反复进行操作。
图21是表示条件处理变换部121进行的基本块变更处理的细节的流程图。该处理从变更处理指定并调出对照起点基本块序号s和相对序号r,使用表示变更处理方法的变量i执行。
下面参照图21的流程图说明该基本块变更处理。
(步骤S400)在汇编码信息中将与基本块(s+r)对应的指令串设为变更对象,将变量i作为当前行的变更处理栏的各要素,反复进行操作。
(步骤S401)如果i=1,则执行步骤S411。
(步骤S411)将变更对象中包含的比较指令变更为评价逆条件的新的比较指令。
(步骤S420)如果i=2,则执行步骤S421。
(步骤S421)将变更对象中包含的比较指令变更为用于算出通过对对应该比较指令算出的条件标志值和对应之前的比较指令算出的条件标志值进行逻辑与运算得到的新的条件标志值的新的比较指令。该新的比较指令为cmpCCa。
(步骤S430)如果i=3,则执行步骤S431。
(步骤S431)将变更对象中包含的比较指令变更为用于算出通过对对应该比较指令算出的条件标志值和对应之前的比较指令算出的条件标志值进行逻辑或运算得到的新的条件标志值的新的比较指令。该新的比较指令为cmpCCo。
(步骤S440)如果i=4,则执行步骤S441。
(步骤S441)将变更对象中包含的比较指令变更为用于在将对应该比较指令算出的条件标志值作为肯定条件标志值算出的同时将其逻辑逆向值作为否定条件标志值算出的新的比较指令。该新的比较指令是以条件标志寄存对器为操作数的cmpCC指令、cmpCCa指令和cmpCCo指令。
(步骤S450)如果i=5,则执行步骤S451至步骤S453。
(步骤S451)将变更对象中包含的除比较指令外的无条件执行指令变更为将对应之前的比较指令算出的条件标志值作为执行条件的条件执行指令。对应该之前的比较指令算出肯定条件标志值和否定条件标志值时,变更为将该肯定条件标志值作为执行条件的条件执行指令。
(步骤S452)变更对象中包含比较指令和将对应该比较指令算出的条件标志值作为执行条件的条件执行指令,则把该比较指令变更为用于算出通过对本来的条件标志值和对应之前的比较指令算出的条件标志值进行逻辑与运算得到的新的条件标志值的新的比较指令。
对应原来的比较指令算出肯定条件标志值和否定条件标志值的情况下,分别将二者变更为用于算出与对应之前的比较指令算出的条件标志值进行逻辑与运算得到的新的肯定条件标志值和新的否定条件标志值的新的比较指令。
该新的比较指令是对象处理器的cmpCCn指令。
这里注意,该变更对象是记述某比较条件成立时应执行的处理的部分(所述第二部分),该变更对象中包含的比较指令是记述评价其他比较条件成立与否的处理的部分(权利要求中所述的第四部分)。
(步骤S453)在变更对象中包含标签,则将其去除。
(步骤S460)如果i=6,则执行步骤S461以后的步骤。
(步骤S461)将变更对象中包含的除比较指令外的无条件执行指令变更为将对应之前的比较指令算出的否定条件标志值作为执行条件的条件执行指令。
(步骤S462)变更对象中包含比较指令和将对应该比较指令算出的条件标志值作为执行条件的条件执行指令,则把该比较指令变更为用于算出将通过对本来算出的条件标志值和对应之前的比较指令算出的否定条件标志值进行逻辑与运算得到的值作为条件标志值的新的比较指令。
对应原来的比较指令算出肯定条件标志值和否定条件标志值的情况下,分别将二者变更为用于将对对应之前的比较指令算出的否定条件标志值进行逻辑与运算得到的值作为肯定条件标志值和否定条件标志值算出的新的比较指令。
该新的比较指令是对象处理器的cmpCCn指令。
这里注意,该变更对象是记述某比较条件不成立时应执行的处理的部分(所述第三部分),该变更对象中包含的比较指令是记述评价其他比较条件成立与否的处理的部分(权利要求中所述的第五部分)。
(步骤S463)在变更对象中包含标签,则将其去除。
(步骤S470)如果i=7,则执行步骤S471。
(步骤S471)将变更对象中包含的转移指令去除。
(步骤S480)如果i=8,则执行步骤S481以后的步骤。
(步骤S481)基本块对照处理中最后对照的基本块信息的先行块序号栏中没有未对照的要素时,将变更对象中包含的标签去除。
(步骤S482)在没有所述未对照的要素时,在基本块信息中,对基本块序号为s的行,将指令范围变更为包含基本块序号位于从s到(s+r)的范围的全部的行的指令范围,将后续块变更为基本块序号为(s+r)的行的后续块,对于先行块中包含(s+r)的行,将先行块的(s+r)变更为s,删除基本块序号为(s+1)到(s+r)的行。
有所述未对照的要素时,在基本块信息中,对基本块序号为s的行,将指令范围变更为包含原来的基本块序号为从s到(s+r-1)的全部的行的指令范围,将后续块变更为(s+r),对于基本块序号为(s+r)的行,将先行块作为所述未对照的要素和s,删除基本块序号为(s+1)到(s+r-1)的行。
任一情况下,进行所述更新后,将基本块序号变更为连续序号,对应该变更来变更先行块和后续块。
<2.2.4具体例>
具体说明条件处理变换部121对图11(A)的汇编码信息和图12的基本块信息进行的对照变更处理。
该具体例中,首先,判断为图11(B)的源程序内侧的if语句引出的基本块12到14与对照信息A匹配,把对应该基本块的指令105到109变更为不包含条件转移指令的指令串。
接着,判断为图11(B)的源程序外侧的if语句引出的该变更后的基本块10到14与对照信息F匹配,把对应该变更后的基本块的指令100到110变更为不包含条件转移指令的指令串。
其结果是得到执行图11(B)的源程序的不包含条件转移指令的指令串。
下面参考图17到图21B的流程图逐一详细说明与这2次的匹配相关执行的对照变更处理。
<2.2.4.1与第一次的匹配相关的对照变更处理>
(1)以基本块10为对照起点块的处理
图17的步骤S100~步骤S170的第一次循环中,进行以图12的基本块10为对照起点块的对照处理。
从步骤S110调出的对照处理(A)中,对照图16(A)的对照信息A和所述对照起点块以后的基本块列。
图18的步骤S200中把10代入变量s。
步骤S201~步骤S230的第一次循环中,对照信息A的第一行为当前行,向变量r代入在该当前行的对照相对序号栏中表示的0。
从步骤S210调出的基本块对照处理中,对照该当前行和基本块10。
图19的步骤S250~步骤S253的循环中,进行与先行块相关的对照。该当前行的对照先行块序号栏中示出的要素仅为*,因此不执行步骤S252的对照,步骤S254中判断为基本块10的先行块序号栏中示出的9为未对照。该当前行的对照先行块序号栏中包含*,因此从步骤S255进入步骤S260。
步骤S260~步骤S263的循环中,进行与后续块相关的对照。对照分别对该当前行的对照后续块序号栏中示出的要素1和2加上s得到的11和12与基本块信息10的后续块序号栏中示出的11和12。
然后,步骤S264中判断没有未对照要素,进入步骤S270,判断为对照信息A的第一行和基本块信息10匹配。
图18的步骤S201~步骤S230的第二次循环中,对照信息A的第二行为当前行,向变量r代入在该当前行的对照相对序号栏中表示的1。
从步骤S210调出的基本块对照处理中,对照该当前行和基本块11。
图19的步骤S250~步骤S253的循环中,进行向该当前行的对照先行块序号栏中示出的0加上s得到的10与基本块11的先行块序号栏中示出的10的对照,步骤S254中判断为没有未对照要素,进入步骤S260。
步骤S260~步骤S263的循环中,进行向该当前行的对照后续块序号栏中示出的2加上s得到的12与基本块11的先行块序号栏中示出的12的对照。步骤S264中判断为基本块11的先行块序号栏中示出的15未对照。该当前行的对照后续块序号栏中不包含*,因此从步骤S265进入步骤S271,判断为对照信息A的第二行和基本块信息11不匹配。
其结果是从图18的步骤S211进入步骤S241,判断为对照信息A和以基本块10为对照起点块的基本块列不匹配。
从图17的步骤S111进入步骤S120,从步骤S120调出的对照处理(B)中,对照图16(B)的对照信息B和所述对照起点块以后的基本块列。该处理与所述的对照处理(A)同样执行,判断为对照信息B和以基本块10为对照起点块的基本块列不匹配。
后面对照处理(C)到(F)中,分别判断为对照信息C到对照信息F与以基本块10为对照起点块的基本块列不匹配。
(2)以基本块11为对照起点块的处理
步骤S100~步骤S170的第二次循环中,进行以基本块11为对照起点块的对照变更处理,判断为对照信息A到对照信息F的任一个与以基本块11为对照起点块的基本块列不匹配。
(3)以基本块12为对照起点块的处理
步骤S100~步骤S170的第三次循环中,进行以基本块12为对照起点块的对照变更处理。
步骤S110中,判断为对照信息A与以基本块11为对照起点块的基本块列匹配,从步骤S111进入步骤S112,调出变更处理(A)。
图20的步骤S300中向变量s代入12。
步骤S301~步骤S330的第一次循环中,对照信息A的第一行为当前行,向变量r代入在该当前行的对照相对序号栏中表示的0。从步骤S310调出的基本块变更处理中,把对应该当前行的变更处理栏中示出的要素1,7的处理适用于与基本块12对应的指令105~107中。
图21的步骤S400~S490的第一次循环中,向变量i代入1,步骤S411中通过逆向比较指令106的评价条件,把本来的cmpne c6,r1,0指令变更为新的cmpeq c6,r1,0指令。
步骤S400~S490的第二次循环中,向变量i代入7,步骤S471中去除转移指令107。
图20的步骤S301~步骤S330的第二次循环中,对照信息A的第二行为当前行,向变量r代入在该当前行的对照相对序号栏中表示的1。基本块更新处理中,把对应该当前行的变更处理栏中示出的要素5和7的处理适用于与基本块13对应的指令108中。
图21的步骤S400~S490的第一次循环中,向变量i代入5,步骤S451中将指令108变更为将对应之前的比较指令106算出的肯定条件标志值c6作为执行条件的条件执行指令。步骤S452由于没有相应的比较指令,因此不执行。步骤S453由于没有相应的标签,因此不执行。
图20的步骤S301~步骤S330的第三次循环中,对照信息A的第三行为当前行,向变量r代入在该当前行的对照相对序号栏中表示的2。基本块更新处理中,把对应该当前行的变更处理栏中示出的要素8的处理适用于与基本块14对应的指令109中。
图21的步骤S400~S490的第一次循环中,向变量i代入8。该处理前已经执行的对照处理中,基本块14的先行块序号栏中示出的要素12,13分别和对照信息A的第三行的对照先行块序号栏的要素0,1对照,没有剩余未对照要素,因此步骤S481中,向指令109附加的标签L3判断为可去除,并将其去除。
步骤S482中从图12的基本块信息删除基本块13和基本块14,基本块12的指令范围栏变更为105~109,后续块序号栏变更为16,各基本块的先行块序号栏和后续块序号栏中包含的要素13和14变更为12。
图22和图23(A)表示出通过至此的处理分别变更图11(A)的汇编码信息和图12的基本块信息的结果。
步骤S482中,图23(A)的基本块信息还变更为图23(B)的基本块信息,以使基本块序号连续。
这样,图11(B)的源程序中记述的内侧的if语句引出的汇编码信息和基本块信息变换为不使用条件转移指令的样式。
<2.2.4.2与第二次的匹配相关的对照变更处理>
与第一次的匹配相关的对照变更处理后,处理返回步骤S100,顺序以图23(B)的基本块信息的前面块到末尾块为对照起点块,执行步骤S100~S170的循环。
(1)以基本块10为对照起点块的处理
步骤S100~步骤S170的第一次循环中,判断为以图23(B)的基本块10为对照起点块的基本块列与对照信息F匹配,执行变更处理(F)。下面主要说明所述的对照变更处理中不包含的动作。
从步骤S160调出的对照处理(F)中,步骤S200中把10代入变量s。
步骤S201~步骤S230的第一次循环中,对照信息F的第一行为当前行,向变量r代入在该当前行的对照相对序号栏中表示的0。从步骤S210调出的基本块对照处理中,判定为对照信息F的第一行和基本块信息10匹配。
此时r=0,且使用对照信息F进行对照处理,因此步骤S213中算出n。n在基本块10的后续块序号栏中示出的要素11和12中,不是用(s+1),所示要素11而是要素12用12-10算出2。
步骤S201~步骤S230的第二次循环中,对照信息F的第二行为当前行,向变量r代入在该当前行的对照相对序号栏中表示的k。从步骤S203进入步骤S220~S223的反复处理。此时,由于(n-2)<1,步骤S221不执行。
步骤S201~步骤S230的第三次循环中,对照信息F的第三行为当前行,向变量r代入具体算出在该当前行的对照相对序号栏中表示的n-1而得到的值1。从步骤S210调出的基本块对照处理中,判定为对照信息F的第三行和基本块信息11匹配。
步骤S201~步骤S230的第四到第六次循环中,分别判断为对照信息F的第四到第六行与基本块信息12~14匹配。
步骤S240中,判断为对照信息F和以基本块10为对照起点块的基本块列匹配。从步骤S161进入步骤S162,调出变更处理(F)。
下面主要说明所述变更处理中不包含的变更处理(F)特有的动作。
对照信息F的第一行适用于与基本块10对应的指令100~102。对应变更处理栏中示出的要素7,在步骤S471中去除转移指令102。
不执行对应对照信息F的第二行的变更处理。
照信息F的第三行适用于与基本块11对应的指令103~104。对应变更处理栏中示出的要素1,执行步骤S411,通过逆向比较指令103的评价条件,把本来的cmpne c6,r0,2指令变更为cmpeq c6,r0,2。对应要素3,执行步骤S413,该变更后的指令再被变更为用于算出和之前的比较指令101的算出结果c6的逻辑或的比较指令cmpeqoc6,r0,2,c6。对应要素4,执行步骤S441,该变更后的指令再被变更为用于算出本来的算出结果和其逻辑逆向值的比较指令cmpeqoc0:c1,r0,2,c6。对应7要素,执行步骤S471,去除转移指令104。
对照信息F的第四行适用于与基本块12对应的指令105~109。对应变更处理栏中示出的要素5,执行步骤S451~S453,把除比较指令106外的无条件执行指令105和109分别变更为将之前的变更后的比较指令103的肯定结果c0设为执行条件的条件执行指令,比较指令106变更为cmpeqn c6,r1,0,c0,并且删除在指令105上附加的标签L1。
对应要素7,执行步骤S471,去除转移指令109。
对照信息F的第五行适用于与基本块13对应的指令110。对应变更处理栏中示出的要素6,执行步骤S461,把无条件执行指令110变更为将之前的变更后的比较指令103的否定结果c1设为执行条件的条件执行指令。步骤S462中,由于没有相应的比较指令,因此不执行。并且执行步骤S463,删除在指令110上附加的标签L2。
对照信息F的第六行适用于与基本块14对应的指令111。对应变更处理栏中示出的要素8,执行步骤S481~S482。在该处理前已经执行的对照处理中,对照基本块14的先行块序号栏中示出的全部要素,因此判断为可去除指令111上附加的标签L4,并将其去除。
并且,从图23(B)的基本块信息删除基本块11到基本块14,基本块10的指令范围栏变更为100-111,后续块序号栏变更为15,各基本块的先行块序号栏和后续块序号栏中包含的11到14的要素变更为10。该变更后的基本块信息还被变更,以使基本块序号连续。该变更中,先行块序号栏和后续块序号栏也对应基本块序号的变更而变更。
图24和图25表示出通过至此的处理分别变更图22的汇编码信息和图23(B)的基本块信息的结果。
这样,图11(B)的源程序中记述的外侧的if语句引出的汇编码信息和基本块信息变换为不使用条件转移指令的样式。
<2.3指令排序部130的细节>
指令排序部130输入由条件处理变换部121变换的汇编码信息和基本块信息。依赖关系分析部131将输入的基本块信息中所示的基本块分别作为现行块,生成表示与现行块中包含的指令具有的执行顺序相关的依赖关系的依赖曲线。指令再配置部136根据生成的依赖曲线,在得到同一执行结果的范围中,把指令更换为使得配置一连串在所述汇编码信息中可并列执行的指令,同时生成适合于该更换后的指令串的并列执行边界信息。
图26是表示指令排序部130进行的指令排序处理的流程图。
(步骤S500)将基本块信息中示出的各基本块作为现行块,反复进行操作,直到步骤S503。
(步骤S501)依赖关系分析部131生成表示对应该现行块的指令之间的依赖关系的依赖曲线。
(步骤S502)指令再配置部136根据生成的依赖曲线更换指令,同时生成并列执行边界信息。
(步骤S503)从步骤S500开始反复进行操作。
<2.3.1依赖关系的细节>
所谓第一指令和该第一指令以后记述的第二指令之间有依赖关系,是指第二指令比第一指令先执行时,不能保证和按本来顺序执行时相同的执行结果。
存在依赖关系且在前面记述的指令叫做前任指令,后面记述的指令叫做后继指令。
依赖关系分析部131判定输入的汇编码信息中包含的指令间存在的4种依赖关系,生成表示该判定的依赖关系的依赖曲线:
(1)数据依赖关系:存在于定义除条件标志寄存器外的硬件资源(例如通用寄存器)的指令和参照该硬件资源的指令之间
(2)逆依赖关系:存在于参照包含条件标志寄存器的硬件资源的指令和定义该硬件资源的指令之间
(3)输出依赖关系:存在于定义包含条件标志寄存器的硬件资源的指令和定义该硬件资源的指令之间
(4)条件标志依赖关系:存在于定义条件标志寄存器的指令和定义参照该条件标志寄存器的指令之间
所谓参照条件标志寄存器的指令是所述处理器中,具体说,将对条件标志寄存器值和比较运算的结果值进行逻辑运算的比较指令(cmpCCa,cmpCCo,cmpCCn的各指令)以及条件标志寄存器值作为执行条件的条件执行指令。
这里所谓的条件标志寄存器值是在之前的时钟循环之前算出的已经存储在条件标志寄存器中的值或在同一时钟循环中算出的值中的一个。
对于所述的处理器而言,将有数据依赖关系的后继指令的执行时间继续到与前任指令相同的时钟循环中也得到相同执行结果,将有逆依赖关系、输出依赖关系和条件标志依赖关系的后继指令的执行时间继续到执行前任指令的时钟循环之后的时钟循环中也得到相同执行结果。这种情况也可以说是前者的依赖距离为1,而后者的依赖距离为0。
图27模式表示依赖曲线的一例。依赖曲线是有向曲线,节点表示指令,实线边缘表示不可并列执行(依赖距离为1)的依赖关系,虚线边缘表示可并列执行(依赖距离为0)的依赖关系。
计算机资源上的有效曲线的表现方法是众所周知的技术,省略说明。
<2.3.2依赖关系分析部131的细节>
图28是表示依赖关系分析部131进行的依赖关系分析处理的细节的流程图。
(步骤S600)生成分别对应现行块中包含的1个以上的指令的节点。
(步骤S610)指令为2个以上时,对各指令反复进行操作,直到步骤S660。
(步骤S620)判断指令对是否有数据依赖关系。该判断通过该指令对是否为定义除条件标志寄存器以外的硬件资源(例如通用处理器)的指令和参照该硬件资源的指令来进行。
(步骤S621)判断为有数据依赖关系时,在与该指令对对应的节点间生成实线边缘。实线边缘表示依赖距离为1。
(步骤S630)判断指令对是否有逆依赖关系。
(步骤S631)判断为有逆依赖关系时,在与指令对对应的节点间生成虚线边缘。虚线边缘表示依赖距离为0。
(步骤S640)判断指令对是否有输出依赖关系。
(步骤S641)判断为有输出依赖关系时,在与指令对对应的节点间生成虚线边缘。
(步骤S650)判断指令对是否有条件标志依赖关系。该判断通过该指令对是否为定义条件标志寄存器的指令和定义参照该条件标志寄存器的指令来进行。
(步骤S651)判断为有条件标志依赖关系时,在与指令对对应的节点间生成虚线边缘。
(步骤S660)从步骤S610开始反复进行操作。
<2.3.3指令再配置部136的细节>
指令再配置部136不限于将有依赖关系的指令的顺序逆向,可更换指令,以使得配置一连串的所述汇编码信息的可并列执行的指令,并生成适合于该更换后的指令串的并列执行边界信息。
图29是表示指令再配置部136进行的指令再配置处理的细节的流程图。该处理适用作为保持指令序号的列表的变量的未配置列表、配置候补列表和假配置列表执行。
(步骤S700)把未配置列表初始化为现行块中包含的各指令的指令序号构成的列表。
(步骤S710)未配置列表中有要素时,反复进行操作,直到步骤S732。
(步骤S711)把配置候补列表初始化为由指令(a)全部不具有前任指令的指令和指令(b)具有1个以上的前任指令且任何一个都不包含在未配置列表中的(即配置完了的)后继指令的指令序号构成的列表。
(步骤S712)把假配置列表清空。
(步骤S720)在配置候补列表中有要素时,反复进行操作,直到步骤S725。
(步骤S721)在配置候补列表示出的指令中,在现在马上配置的情况下,如下选择预想使未配置列表中示出的所有指令的执行时间最短的最佳指令。
依赖曲线中,对应配置候补列表示出的各指令的节点分别作为开始点,查找用边缘连结起来的节点构成的路径。并且,算出对应查找的各路径中构成路径的节点的指令的执行时间的总和,与算出最大的总和的开始点节点对应的指令选择为最佳指令。
该最佳指令的指令序号从配置候补列表删除。
(步骤S722)假配置列表中表示出1个以上的指令序号,则判断这些各序号表示的指令和该最佳指令能否在同一时钟循环中并列执行。该判断考虑与硬件资源的个数相关的制约进行。所述的处理器作为目标处理器的情况下,该制约为:(制约a)可并列执行的指令数最大为3个(指令解码器的制约);(制约b)对应并列执行的指令,可由执行部实际动作的硬件资源的个数为运算部最大为3个、操作数存取部和PC部分别为1个(执行部的制约)。判断为该最佳指令和假配置列表中示出的各指令仅在满足该制约的条件下并列执行。
判断为不能并列执行的情况下,进入步骤S725。
(步骤S723)向假配置列表追加该最佳指令的指令序号。
(步骤S724)如果存在假配置列表中包含处于逆依赖关系、输出依赖关系或条件标志依赖关系的前任指令且未配置列表中不包含处于数据依赖关系的前任指令的后继指令,则向配置候补列表追加该指令序号。这样的后继指令是可在同一时钟循环中与假配置列表中包含的指令并列执行的配置候补指令。
(步骤S725)从步骤S720开始反复进行操作。
(步骤S730)顺序输出假配置列表中表示的各指令。此时,最后输出的指令的并列执行边界标志设为1、此外的指令的并列执行边界标志设为0来输出。
(步骤S731)从未配置列表删除假配置列表中示出的指令序号。
(步骤S732)从步骤S710开始反复进行操作。
<2.3.4具体例>
具体说明将所述指令排序处理适用于图24的汇编码信息和图25的基本块信息的情况下的动作。
在图26的步骤S500~步骤S503的一个循环中,指令排序部130将基本块10作为现行块进行依赖关系分析处理和指令再配置处理。
图28的步骤S600中,生成分别对应指令100、101、103、105、106、108和110的7个节点。步骤S610~步骤S660的循环中,对这些指令中的2个指令构成的全部的指令对判断是否有数据依赖关系、逆依赖关系、输出依赖关系和条件标志依赖关系,在对应判断为有依赖关系的指令对的节点间生成表示判定的依赖关系的边缘。该结果是生成图30所示的依赖曲线。
接着图29的步骤S700中,未配置列表初始化为{100,101,103,105,106,108,110}。
之后,把步骤S710~S732的循环处理执行3次,配置各指令。
(1)第一次的循环处理
步骤S711中,仅指令100相当于所述指令a,与所述指令b相当的指令不存在,因此配置候补列表被初始化为{100}。步骤S712中,假配置列表为空{}。
步骤S721中,指令100判断为最佳指令,配置候补列表为空{}。步骤S723中,假配置列表追加指令100成为{100}。步骤S724中,配置候补列表不追加指令,维持空{}。
由于配置候补列表为空{},进入步骤S730,指令100将并列执行边界标志设为1来配置,步骤S731中,未配置列表为{101,103,105,106,108,110}。
(2)第二次的循环处理
步骤S711中,仅指令101相当于所述指令b,因此配置候补列表被初始化为{101}。步骤S712中,假配置列表为空{}。
步骤S720~步骤S725的第一循环中执行的步骤S721中,指令101判断为最佳指令,配置候补列表为空{}。步骤S723中,假配置列表追加指令101成为{101}。并且步骤S724中,配置候补列表追加指令103,成为{103}。
第二次的循环中执行的步骤S721中,指令103判断为最佳指令,配置候补列表为空{}。步骤S722中,指令103判断为可与指令101并列执行,步骤S723中,假配置列表追加指令103成为{101,103}。并且步骤S724中,配置候补列表追加可与指令103并列执行的指令105和指令110,成为{105,110}。
第三次的循环中执行的步骤S721中,指令105判断为最佳指令,配置候补列表为{110}。步骤S722中,指令105判断为可与指令101和指令103并列执行,步骤S723中,假配置列表追加指令105成为{101,103,105}。并且步骤S724中,配置候补列表不追加指令,维持{110}。
第四次的循环中执行的步骤S721中,指令110判断为最佳指令,配置候补列表为空{}。步骤S722中,指令110与指令101,103和105之间判断为有所述制约a,假配置列表维持{101,103,105},配置候补列表维持空{}。
由于配置候补列表为空{},进入步骤S730,指令101和指令103将并列执行边界标志设为0来配置,指令105将并列执行边界标志设为1来配置。步骤S731中,未配置列表为{106,108,110}。
(3)第三次的循环处理
步骤S711中,指令106和指令110相当于所述指令b,因此配置候补列表被初始化为{106,110}。步骤S712中,假配置列表为空{}。
之后,通过与第二次的循环同样动作,指令106和指令108将并列执行边界标志设为0来配置,指令110将并列执行边界标志设为1来配置。步骤S731中,未配置列表为空{}。
由于配置候补列表为空{},结束指令再配置处理。通过至此的处理生成图31所示的机器语言指令串。
通过将图31的机器语言指令串与表示图11(A)的原来样式的汇编码的汇编码信息相比,指令数从11减少到7,执行需要时钟循环数从7减少到3。
<其他变形例>
根据所述实施例说明了本发明,但本发明不限定于所述实施例。下面的情况下也包含在本发明中。
(1)本发明可以是包含实施例中说明的步骤的方法,或是使用计算机实现的计算机程序,或是表示所述程序的数字信号。
本发明可以是记录所述程序或所述数字信号的计算机可读记录媒体,例如软盘、硬盘、CD、MO、DVD、BD、半导体存储器等。
本发明可以是经以电通信线路、无线或有限通信线路、或互联网为代表的网络等输送的所述计算机程序或所述数字信号。
本发明是备有微处理器和存储器的计算机***,所述存储器存储所述程序,所述微处理器根据所述存储器中存储的所述程序动作,从而实现所述方法。
所述程序或所述数字信号记录在所述记录媒体中并被移送,或者经由所述网络等移送,可在独立的其他计算机***中实施。
(2)本实施例中,处理器10分别对任意的条件标志寄存器对Cm∶Cn存储肯定条件标志值和否定条件标志值,但可将能够存储肯定条件标志值和否定条件标志值的寄存器对限定在例如Cm∶Cm+1(m=0,2,4之一)。
通过该限定,可提供具有和处理器10相同的效果且缩小电路规模的处理器。在该比较指令的指令格式中,可省去1个指定条件标志寄存器的字段。
(3)本实施例中,作为处理器10执行的比较指令的一例,举出了评价通用寄存器之间的比较条件的比较指令,但根据其他寻址模式,可考虑例如安装比较通用寄存器和瞬时操作数的比较指令。寻址模式的种类属于原来的公知技术的事项,并非本发明的主要部分,因此省略说明。
(4)本实施例中,程序编制器装置100的条件处理变换部121作为一个例子说明了把图14(A)到(F)所示的汇编码信息作为变换对象部分检测出且各自由图13(A)到(F)所示的方式的if语句引出的情况,但变换对象部分不限于这些if语句引出并生成的汇编码信息。
例如,汇编码生成部120生成3项运算符(?:)引出且在图14(A)到(F)所示的汇编码信息,条件处理变换部121将该汇编码信息作为变换对象部分的情况也包含在本发明中。
(5)作为本发明的其他实施例,考虑汇编码生成部120从与记述条件处理的源程序对应的中间码直接生成不包含转移指令的汇编码信息的情况。
因此,程序编制器上游部110向源程序中记述的if语句、由3项运算符等引出且生成的中间码附加分别识别评价比较条件的部分、在该比较条件成立时应执行的部分和该比较条件不成立时应执行的部分的信息,汇编码生成部120从由该附加的信息识别的中间码生成不包含转移指令的汇编码信息。
(6)程序编制器装置100中,指令排序部130对变换对象部分比较条件处理变换部121进行的变换前的执行需要循环数和变换后的执行需要循环数,后者大于前者的情况下,该对象变换部分的汇编码信息可返回到变换前的状态。
根据该结构,通过程序变换可保证执行时间缩短效果。
Claims (29)
1.一种处理器,包括:
第一运算部件,算出表示多个操作数是否满足第一比较条件的逻辑值;
条件标志运算部件,通过对表示多个操作数是否满足第二比较条件的第二条件标志值和所述逻辑值进行逻辑运算算出第一条件标志值。
2.根据权利要求1所述的处理器,还包括:
条件标志寄存器,存储所述第二条件标志值,
其中,所述第一运算部件在到达时钟循环中途设置的时刻之前算出所述逻辑值,
所述条件标志运算部件在结束所述时钟循环之前通过对从所述条件标志寄存器读出的第二条件标志值和所述逻辑值进行逻辑运算算出所述第一条件标志值。
3.根据权利要求2所述的处理器,其中所述条件标志运算部件在结束所述时钟循环之前还算出作为所述第一条件标志值的逻辑逆向值的第三条件标志值。
4.根据权利要求2所述的处理器,其中所述条件标志运算部件在结束所述时钟循环之前还算出所述逻辑值的逻辑逆向值,通过对该逻辑逆向值和所述第二条件标志值进行逻辑运算算出第四条件标志值。
5.根据权利要求1所述的处理器,还包括:
第二运算部件,在到达时钟循环中途设置的时刻之前算出所述第二条件标志值,
其中,所述第一运算部件在所述时刻之前算出所述逻辑值,
所述条件标志运算部件在结束所述时钟循环之前通过对所述第二比较部件算出的第二条件标志值和所述逻辑值进行逻辑运算算出所述第一条件标志值。
6.根据权利要求5所述的处理器,其中所述条件标志运算部件在结束所述时钟循环之前还算出作为所述第一条件标志值的逻辑逆向值的第三条件标志值。
7.根据权利要求5所述的处理器,其中所述条件标志运算部件在结束所述时钟循环之前还算出所述逻辑值的逻辑逆向值,通过对该逻辑逆向值和所述第二条件标志值进行逻辑运算算出第四条件标志值。
8.一种处理器,包括:
条件标志运算部件,在到达时钟循环中途设置的时刻之前根据表示多个操作数是否满足第一比较条件的逻辑值算出第一条件标志值;
第一运算部件,在所述时钟循环中进行对应条件执行指令的运算;
无效化部件,在结束所述时钟循环之前根据所述第一条件标志值把由所述第一运算部件进行的运算的结果无效化。
9.根据权利要求8所述的处理器,还包括:
条件标志寄存器,存储表示多个操作数是否满足第二比较条件的第二条件标志值,
其中,所述条件标志运算部件在所述时刻之前通过对从所述条件标志寄存器读出的第二条件标志值和所述逻辑值进行逻辑运算算出所述第一条件标志值。
10.根据权利要求9所述的处理器,其中所述条件标志运算部件在所述时刻之前还算出作为所述第一条件标志值的逻辑逆向值的第三条件标志值,
所述无效化部件在结束所述时钟循环之前对应所述第一条件标志值或所述第三条件标志值中的某个把所述运算的结果无效化。
11.根据权利要求9所述的处理器,其中所述条件标志运算部件在所述时刻之前还算出所述逻辑值的逻辑逆向值,通过对该逻辑逆向值和所述第二条件标志值进行逻辑运算算出第四条件标志值,
所述无效化部件在结束所述时钟循环之前对应所述第一条件标志值或所述第四条件标志值中的某个把所述运算的结果无效化。
12.根据权利要求8所述的处理器,还包括:
第二运算部件,在所述时刻之前算出表示多个操作数是否满足第二比较条件的第二条件标志值,
其中,所述条件标志运算部件在所述时刻之前通过对所述第二比较部件算出的第二条件标志值和所述逻辑值进行逻辑运算算出所述第一条件标志值。
13.根据权利要求12所述的处理器,其中所述条件标志运算部件在所述时刻之前还算出作为所述第一条件标志值的逻辑逆向值的第三条件标志值,
所述无效化部件在结束所述时钟循环之前对应所述第一条件标志值或所述第三条件标志值中的某个把所述运算的结果无效化。
14.根据权利要求12所述的处理器,其中所述条件标志运算部件在所述时刻之前还算出所述逻辑值的逻辑逆向值,通过对该逻辑逆向值和所述第二条件标志值进行逻辑运算算出第四条件标志值,
所述无效化部件在结束所述时钟循环之前对应所述第一条件标志值或所述第四条件标志值中的某个把所述运算的结果无效化。
15.一种程序变换方法,包括:
识别步骤,从被变换的程序识别记述评价第一比较条件是否成立的处理的第一部分和记述该第一比较条件成立或不成立时应执行的处理的第二部分;
第一变换步骤,将所述第一部分变换为包含用于算出表示所述第一比较条件是否成立的第一条件标志值的指令且不包含转移指令的指令串;
第二变换步骤,将所述第二部分变换为包含对应所述第一条件标志值被无效化的条件执行指令且不包含转移指令的指令串。
16.根据权利要求15的程序变换方法,其中:
所述识别步骤还从所述被变换的程序识别记述所述第一比较条件成立与否应在与应执行所述第二部分的情况相反的情况下执行的处理的第三部分,
所述第一变换步骤将所述第一部分变换为包含用于算出所述第一条件标志值和作为其逻辑逆向值的第二条件标志值的指令且不包含转移指令的指令串,
所述程序变换方法还包括:
第三变换步骤,将所述第三部分变换为包含对应所述第二条件标志值被无效化的条件执行指令且不包含转移指令的指令串。
17.根据权利要求15的程序变换方法,其中:
所述第一变换步骤在所述第一部分关联记述评价多个的各个比较条件是否成立的处理时,将所述第一部分变换为包含用于通过对表示该各个比较条件是否成立的逻辑值进行逻辑运算算出所述第一条件标志值的指令且不包含转移指令的指令串。
18.根据权利要求15的程序变换方法,其中:
所述识别步骤还从所述第二部分识别记述评价第二比较条件成立与否的处理的第四部分,
所述第二变换步骤还将所述第四部分变换为包含用于通过对表示所述第二比较条件是否成立的逻辑值和所述第一条件标志值进行逻辑运算算出第三条件标志值的指令且不包含转移指令的指令串。
19.根据权利要求16的程序变换方法,其中:
所述识别步骤还从所述第三部分识别记述评价第三比较条件成立与否的处理的第五部分,
所述第三变换步骤还将所述第五部分变换为包含用于通过对表示所述第三比较条件是否成立的逻辑值和所述第二条件标志值进行逻辑运算算出第四条件标志值的指令且不包含转移指令的指令串。
20.一种程序变换方法,其特征是将可并列执行由第一比较指令指令的条件标志值的算出处理和参照第二指令指令的所述条件标志值进行的规定处理的处理器作为目标处理器,包含:
识别步骤,从被变换的程序识别(a)所述第一比较指令、(b)比所述第一比较指令靠后记述、不能与所述第一比较指令并列地由所述处理器执行的第三指令和(c)比所述第三指令靠后记述的所述第二指令;
再配置步骤,更换识别的第三指令和第二指令。
21.根据权利要求20所述的程序变换方法,还包含:
并列执行边界信息生成步骤,生成表示可并列执行所述第一比较指令和更换后的第二指令的并列执行边界信息。
22.根据权利要求20所述的程序变换方法,其中:
所述识别步骤把(a)用于通过对表示比较条件成立与否的逻辑值和所述条件标志值进行逻辑运算算出新的条件标志值的比较指令和(b)对应所述条件标志值被无效化的条件执行指令中的至少一个识别为所述第二指令。
23.一种程序变换装置,包括:
识别部件,从被变换的程序识别记述评价第一比较条件是否成立的处理的第一部分和记述该第一比较条件成立或不成立时应执行的处理的第二部分;
第一变换部件,将所述第一部分变换为包含用于算出表示所述第一比较条件是否成立的第一条件标志值的指令且不包含转移指令的指令串;
第二变换部件,将所述第二部分变换为包含对应所述第一条件标志值被无效化的条件执行指令且不包含转移指令的指令串。
24.一种程序变换装置,其特征是将可并列执行由第一比较指令指令的条件标志值的算出处理和参照第二指令指令的所述条件标志值进行的规定处理的处理器作为目标处理器,包含:
识别部件,从被变换的程序识别(a)所述第一比较指令、(b)比所述第一比较指令靠后记述、不能与所述第一比较指令并列地由所述处理器执行的第三指令和(c)比所述第三指令靠后记述的所述第二指令;
再配置部件,更换识别的第三指令和第二指令。
25.根据权利要求24所述的程序变换装置,还包含:
并列执行边界信息生成部件,生成表示可并列执行所述第一比较指令和更换后的第二指令的并列执行边界信息。
26.一种计算机程序,使计算机执行权利要求15的程序变换方法中包含的各步骤。
27.一种计算机程序,使计算机执行权利要求20的程序变换方法中包含的各步骤。
28.一种计算机程序,使计算机执行权利要求21的程序变换方法中包含的各步骤。
29.一种计算机可读取的程序记录媒体,记录权利要求26、权利要求27和权利要求28的计算机程序中的至少一个。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP174927/2002 | 2002-06-14 | ||
JP174927/02 | 2002-06-14 | ||
JP2002174927A JP3851228B2 (ja) | 2002-06-14 | 2002-06-14 | プロセッサ、プログラム変換装置及びプログラム変換方法、並びにコンピュータプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1469241A true CN1469241A (zh) | 2004-01-21 |
CN1316354C CN1316354C (zh) | 2007-05-16 |
Family
ID=29561823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031486371A Expired - Fee Related CN1316354C (zh) | 2002-06-14 | 2003-06-16 | 处理器、程序变换装置和变换方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US20040039900A1 (zh) |
EP (1) | EP1372064B1 (zh) |
JP (1) | JP3851228B2 (zh) |
CN (1) | CN1316354C (zh) |
DE (1) | DE60333613D1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100552622C (zh) * | 2005-03-31 | 2009-10-21 | 松下电器产业株式会社 | 运算处理装置 |
CN102207849A (zh) * | 2006-09-21 | 2011-10-05 | 英特尔公司 | 用于执行逻辑比较操作的方法和装置 |
CN103150141A (zh) * | 2011-11-30 | 2013-06-12 | 瑞萨电子株式会社 | Vliw处理器、指令结构和指令执行方法 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7624356B1 (en) * | 2000-06-21 | 2009-11-24 | Microsoft Corporation | Task-sensitive methods and systems for displaying command sets |
EP1378824A1 (en) * | 2002-07-02 | 2004-01-07 | STMicroelectronics S.r.l. | A method for executing programs on multiple processors and corresponding processor system |
WO2006001365A1 (ja) | 2004-06-28 | 2006-01-05 | Matsushita Electric Industrial Co., Ltd. | プログラム生成装置、プログラムテスト装置、プログラム実行装置、及び情報処理システム |
US7119723B1 (en) * | 2005-07-28 | 2006-10-10 | Texas Instruments Incorporated | Decoding variable length codes while using optimal resources |
JP4013972B2 (ja) * | 2005-09-22 | 2007-11-28 | ソナック株式会社 | プロセッサ、プロセッサでのプログラム実行方法 |
WO2007073611A1 (en) * | 2005-12-24 | 2007-07-05 | Intel Corporation | Method and apparatus for ordering code based on critical sections |
US8037466B2 (en) | 2006-12-29 | 2011-10-11 | Intel Corporation | Method and apparatus for merging critical sections |
US7930522B2 (en) * | 2008-08-19 | 2011-04-19 | Freescale Semiconductor, Inc. | Method for speculative execution of instructions and a device having speculative execution capabilities |
GB2480285A (en) * | 2010-05-11 | 2011-11-16 | Advanced Risc Mach Ltd | Conditional compare instruction which sets a condition code when it is not executed |
JP2014164659A (ja) * | 2013-02-27 | 2014-09-08 | Renesas Electronics Corp | プロセッサ |
WO2015123848A1 (zh) | 2014-02-20 | 2015-08-27 | 清华大学 | 可重构处理器及可重构处理器的条件执行方法 |
CN103853526B (zh) * | 2014-02-20 | 2017-02-15 | 清华大学 | 可重构处理器及可重构处理器的条件执行方法 |
JP2015201119A (ja) * | 2014-04-10 | 2015-11-12 | 富士通株式会社 | コンパイルプログラム、コンパイル方法およびコンパイル装置 |
US11086521B2 (en) | 2015-01-20 | 2021-08-10 | Ultrata, Llc | Object memory data flow instruction execution |
US11755202B2 (en) | 2015-01-20 | 2023-09-12 | Ultrata, Llc | Managing meta-data in an object memory fabric |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US10698628B2 (en) | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
US9971542B2 (en) | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
JP6536266B2 (ja) | 2015-08-03 | 2019-07-03 | 富士通株式会社 | コンパイル装置、コンパイル方法およびコンパイルプログラム |
US10248337B2 (en) | 2015-12-08 | 2019-04-02 | Ultrata, Llc | Object memory interfaces across shared links |
EP3387548B1 (en) | 2015-12-08 | 2023-08-02 | Ultrata LLC | Memory fabric operations and coherency using fault tolerant objects |
EP3387547B1 (en) | 2015-12-08 | 2023-07-05 | Ultrata LLC | Memory fabric software implementation |
US10241676B2 (en) | 2015-12-08 | 2019-03-26 | Ultrata, Llc | Memory fabric software implementation |
US11334469B2 (en) * | 2018-04-13 | 2022-05-17 | Microsoft Technology Licensing, Llc | Compound conditional reordering for faster short-circuiting |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4338661A (en) * | 1979-05-21 | 1982-07-06 | Motorola, Inc. | Conditional branch unit for microprogrammed data processor |
US4747046A (en) | 1985-06-28 | 1988-05-24 | Hewlett-Packard Company | Mechanism for comparing two registers and storing the result in a general purpose register without requiring a branch |
KR900007825B1 (ko) * | 1987-06-02 | 1990-10-20 | 산요덴끼 가부시끼가이샤 | 타이머부착 빵 제조기 |
US5961629A (en) * | 1991-07-08 | 1999-10-05 | Seiko Epson Corporation | High performance, superscalar-based computer system with out-of-order instruction execution |
US5345569A (en) * | 1991-09-20 | 1994-09-06 | Advanced Micro Devices, Inc. | Apparatus and method for resolving dependencies among a plurality of instructions within a storage device |
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 |
JP2931890B2 (ja) * | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
JP3442225B2 (ja) * | 1996-07-11 | 2003-09-02 | 株式会社日立製作所 | 演算処理装置 |
EP1645956A3 (en) * | 1997-08-29 | 2008-02-13 | Matsushita Electric Industrial Co., Ltd. | Instruction conversion apparatus for reducing the number of types of instructions |
CN1157641C (zh) * | 1997-09-03 | 2004-07-14 | 松下电器产业株式会社 | 处理器 |
US6366999B1 (en) | 1998-01-28 | 2002-04-02 | Bops, Inc. | Methods and apparatus to support conditional execution in a VLIW-based array processor with subword execution |
JP3830683B2 (ja) | 1998-12-28 | 2006-10-04 | 富士通株式会社 | Vliwプロセッサ |
TW530262B (en) | 1999-02-08 | 2003-05-01 | Matsushita Electric Ind Co Ltd | Control method for procedure execution |
JP2000305859A (ja) * | 1999-04-22 | 2000-11-02 | Matsushita Electric Ind Co Ltd | プロセッサ |
US6968545B1 (en) * | 2000-09-11 | 2005-11-22 | Agilent Technologies, Inc. | Method and apparatus for no-latency conditional branching |
-
2002
- 2002-06-14 JP JP2002174927A patent/JP3851228B2/ja not_active Expired - Fee Related
-
2003
- 2003-06-11 EP EP03253697A patent/EP1372064B1/en not_active Expired - Fee Related
- 2003-06-11 DE DE60333613T patent/DE60333613D1/de not_active Expired - Lifetime
- 2003-06-13 US US10/461,896 patent/US20040039900A1/en not_active Abandoned
- 2003-06-16 CN CNB031486371A patent/CN1316354C/zh not_active Expired - Fee Related
-
2008
- 2008-01-03 US US11/969,083 patent/US20080141229A1/en not_active Abandoned
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100552622C (zh) * | 2005-03-31 | 2009-10-21 | 松下电器产业株式会社 | 运算处理装置 |
US9043379B2 (en) | 2006-09-21 | 2015-05-26 | Intel Corporation | Method and apparatus for performing logical compare operation |
CN102207849B (zh) * | 2006-09-21 | 2014-09-10 | 英特尔公司 | 用于执行逻辑比较操作的方法和装置 |
US9037627B2 (en) | 2006-09-21 | 2015-05-19 | Intel Corporation | Method and apparatus for performing logical compare operations |
US9037626B2 (en) | 2006-09-21 | 2015-05-19 | Intel Corporation | Method and apparatus for performing logical compare operations |
CN102207849A (zh) * | 2006-09-21 | 2011-10-05 | 英特尔公司 | 用于执行逻辑比较操作的方法和装置 |
US9170813B2 (en) | 2006-09-21 | 2015-10-27 | Intel Corporation | Method and apparatus for performing logical compare operations |
US9898285B2 (en) | 2006-09-21 | 2018-02-20 | Intel Corporation | Method and apparatus for performing logical compare operations |
US10146536B2 (en) | 2006-09-21 | 2018-12-04 | Intel Corporation | Method and apparatus for performing logical compare operations |
US10416997B2 (en) | 2006-09-21 | 2019-09-17 | Intel Corporation | Method and apparatus for performing logical compare operations |
US10572251B2 (en) | 2006-09-21 | 2020-02-25 | Intel Corporation | Method and apparatus for performing logical compare operations |
CN103150141A (zh) * | 2011-11-30 | 2013-06-12 | 瑞萨电子株式会社 | Vliw处理器、指令结构和指令执行方法 |
CN103150141B (zh) * | 2011-11-30 | 2017-03-01 | 瑞萨电子株式会社 | Vliw处理器和指令执行方法 |
Also Published As
Publication number | Publication date |
---|---|
JP3851228B2 (ja) | 2006-11-29 |
CN1316354C (zh) | 2007-05-16 |
US20080141229A1 (en) | 2008-06-12 |
DE60333613D1 (de) | 2010-09-16 |
EP1372064A2 (en) | 2003-12-17 |
EP1372064A3 (en) | 2005-06-29 |
JP2004021553A (ja) | 2004-01-22 |
US20040039900A1 (en) | 2004-02-26 |
EP1372064B1 (en) | 2010-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1469241A (zh) | 处理器、程序变换装置和变换方法以及计算机程序 | |
CN1202470C (zh) | 处理器 | |
CN1135468C (zh) | 对存储设备中信号数据字执行数字信号处理的方法和装置 | |
CN1126030C (zh) | 数据处理装置 | |
CN1155884C (zh) | 通过大范围的同值关系的解析来消除传输命令的优化装置 | |
CN100338568C (zh) | 开发片上***用的开发环境的生成方法 | |
CN1246772C (zh) | 处理器 | |
CN1244051C (zh) | 对于处理数据的装置和方法 | |
CN1149476C (zh) | 资源分配装置 | |
CN1186718C (zh) | 微控制器指令集 | |
CN1875345A (zh) | 在编译过程中表示和检查程序组件的一致性的可扩展类型*** | |
CN101044450A (zh) | 处理器 | |
CN1584824A (zh) | 一种基于cisc结构的微处理器构架及指令实现方式 | |
CN1472646A (zh) | 适应性强具备最佳化功能的编译装置 | |
CN1059799A (zh) | 计算装置 | |
CN1497435A (zh) | 处理器 | |
CN1760804A (zh) | 信息处理设备,信息处理方法,及计算机程序 | |
CN1641567A (zh) | 自堆栈快取存储器进行快速推测性弹出操作方法及装置 | |
CN1605058A (zh) | 关于嵌入式字段可编程门阵列核心的接口结构 | |
CN1673965A (zh) | 实时可调度性确定方法和实时*** | |
CN1269052C (zh) | 支持缩小代码长度的常量还原型处理器 | |
CN101078994A (zh) | 编译器装置、编译器方法和编译器程序 | |
CN1993673A (zh) | 数据处理装置、数据处理程序及记录了数据处理程序的记录介质 | |
CN1577291A (zh) | 程序调试装置、程序调试方法及程序 | |
CN1137421C (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070516 Termination date: 20130616 |