CN101361039A - 处理器 - Google Patents
处理器 Download PDFInfo
- Publication number
- CN101361039A CN101361039A CN200680051248.4A CN200680051248A CN101361039A CN 101361039 A CN101361039 A CN 101361039A CN 200680051248 A CN200680051248 A CN 200680051248A CN 101361039 A CN101361039 A CN 101361039A
- Authority
- CN
- China
- Prior art keywords
- instruction
- register
- stage
- attribute information
- processor
- 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.)
- Pending
Links
- 230000005764 inhibitory process Effects 0.000 claims abstract description 40
- 230000004075 alteration Effects 0.000 claims description 21
- 238000000034 method Methods 0.000 claims description 15
- 230000008859 change Effects 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000001514 detection method Methods 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 claims description 3
- 230000009471 action Effects 0.000 claims description 2
- 230000002401 inhibitory effect Effects 0.000 abstract 1
- 238000004364 calculation method Methods 0.000 description 15
- 230000008569 process Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 9
- 238000012546 transfer Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000004886 process control Methods 0.000 description 5
- 230000015572 biosynthetic process Effects 0.000 description 4
- 239000000654 additive Substances 0.000 description 3
- 230000000996 additive effect Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000003416 augmentation Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000007704 transition Effects 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
- G06F9/3832—Value prediction for operands; operand history buffers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Abstract
本发明的处理器具有转发功能,包括:属性信息保持部(141),保持与向寄存器的写入抑制有关的属性信息;以及寄存器写入抑制电路(126),在发生转发时,按照属性信息抑制被转发的数据向寄存器的写入。属性信息保持部(141)至少与一个寄存器相对应保持所述属性信息。或所述属性信息保持部是多个流水线缓冲器的一部分,将转发对象的数据和所述属性信息一起传递给后级的流水线缓冲器。
Description
技术领域
本发明涉及具有转发(forwarding)控制的处理器,尤其涉及低耗电化。
背景技术
以往,在被流水线化的处理器中,为了提高处理性能采用了转发(FWD)控制。转发控制是指,将作为指令的执行结果的数据,从输出在先执行的指令的执行结果的阶段(例如,MEM(存储器访问)阶段、WB(写回)阶段)提前到读取在后指令的数据的阶段(EX阶段)执行。据此,由于可以通过旁路(bypass)来传送作为在先执行的指令的执行结果的数据,因此可以解除或降低数据竞争(data hazard)。
图1示出了具有转发控制结构的、以往的被流水线化的处理器的结构。图中粗线主要表示数据,细线主要表示控制信号。
如该图所示,具有转发控制结构的、以往的被流水线化的处理器包括:指令译码部910、指令控制部920、指令执行部930、以及寄存器文件940。指令控制部920具有:FWD控制电路921、寄存器文件写入电路922、流水线缓冲控制电路923、运算处理控制电路924、以及存储器存取控制电路925。指令执行部930具有:运算处理执行电路931、存储器存取执行电路932、FWD选择器933、MEM选择器934、流水线缓冲器(EX)935、流水线缓冲器(MEM)936、以及流水线缓冲器(WB)937。寄存器文件940具有以寄存器编号(#0~#N)管理的多个寄存器(Reg#0~Reg#N)所构成的数据保持部942。并且,流水线包括五个阶段:DEC(Decode:译码)阶段、ID(Instruction Dispatch and register fetch:指令发行/寄存器读取)阶段、EX(EXecute:执行)阶段、MEM(MEMory access:存储器访问)阶段、以及WB(Write Back:写回)阶段。
首先,按各个流水线的阶段对以往的被流水线化的处理器中指令执行时的工作进行说明。
在DEC阶段,指令译码部910生成ID阶段以后被使用的指令译码信息,并输出到指令控制部920。
在ID阶段,按照指令译码信息从寄存器文件940中读取寄存器数据,从而生成指令执行时所使用的输入数据,并输出到流水线缓冲器(EX)935。
在EX阶段,按照指令译码信息,对流水线缓冲器(EX)935中所存储的指令执行输入数据,运算处理控制电路924或存储器存取控制电路925生成控制信号,并使运算处理执行电路931和存储器存取执行电路932工作。
并且,流水线缓冲控制电路923将针对执行运算处理的指令的指令执行结果存储到流水线缓冲器(MEM)936,所述执行运算处理的指令即是运算处理执行电路931的输出。
在MEM阶段,流水线缓冲控制电路923按照指令译码信息,生成选择控制信号,并输出到MEM选择器934,以使MEM选择器934选择流水线缓冲器(MEM)936的值或存储器存取执行电路932的输出的任一个,所述存储器存取执行电路932的输出是指,针对进行存储器存取的指令的指令执行结果。
并且,流水线缓冲控制电路923将作为MEM选择器934的输出的指令执行结果存储到流水线缓冲器(WB)937。
在WB阶段,按照指令译码信息,寄存器文件写入控制电路922生成针对寄存器文件940的写入控制信号,并通过将作为流水线缓冲器(WB)937的输出的指令执行结果写入到寄存器文件940,从而使数据保持部942得以更新。
以下,对转发控制结构进行说明。
FWD控制电路921进行判断,判断由作为在先被执行的指令的EX阶段、MEM阶段、WB阶段的指令写入的各寄存器,和由作为在后被执行的指令的ID阶段的指令读取的寄存器是否一致。根据上述的判断结果,可分为以下(1)-(4)的工作。
(1)判断结果为,由ID阶段的指令读取的寄存器,和由EX阶段、MEM阶段、WB阶段的指令写入的寄存器中的某个一致的情况下,FWD控制电路921生成选择控制信号,作为指令执行输入数据输出到FWD选择器933,以使FWD选择器933选择从寄存器文件940中读取的寄存器数据。
(2)在由ID阶段的指令读取的寄存器,和由EX阶段的指令写入的寄存器一致的情况下,由于针对应该被读取的寄存器的指令执行结果还没有被正确地写入,因此,FWD控制电路921使流水线暂时停止。
(3)在由ID阶段的指令读取的寄存器,和由MEM阶段的指令写入的寄存器一致的情况下,由于存在将指令执行结果从MEM阶段转发到ID阶段的通路,因此,FWD控制电路921生成选择控制信号,作为指令执行时所使用的输入数据输出到FWD选择器933,以使FWD选择器933选择将指令执行结果从MEM阶段转发到ID阶段的通路。
(4)在由ID阶段的指令读取的寄存器,和由WB阶段的指令写入的寄存器一致的情况下,由于存在将指令执行结果从WB阶段转发到ID阶段的通路,因此,FWD控制电路921生成选择控制信号,作为指令执行时所使用的输入数据输出到FWD选择器933,以使FWD选择器933选择将指令执行结果从WB阶段转发到ID阶段的通路。据此,实现了从WB阶段转发到ID阶段的工作。
流水线缓冲控制电路923将作为FWD选择器933的输出的指令执行输入数据,存储到流水线缓冲器(EX)935。
接着,利用图2A到图2D,对实现转发工作的指令串的一个例子进行说明。
图2A示出了具有数据依赖关系的指令串的一个例子。该图的在先被执行的加载(ld)指令是指,从存储器中读取值为Reg#31的地址的数据,并将读取的数据加载到Reg#0。接在后边的加法(add)指令是指,使Reg#0的值和Reg#1的值相加,将相加后的结果存储到Reg#2。
图2B示出了在转发的定时,尤其是从MEM阶段向ID阶段进行转发的定时的一个例子,示出了在执行图2A的指令串时的流水级和执行周期。不过,省略DEC阶段以前的阶段。上述的加载指令在ID阶段、EX阶段、MEM阶段、WB阶段以t1到t4这四个周期被顺序地进行了流水线处理,没有发生流水线竞争。上述的add指令在上述的四个阶段以t2到t5这五个周期被处理,在t3周期发生了流水线竞争。在t3周期,由于在先被执行的加载指令的执行(从存储器中读取应该被存储到Reg#0中的数据)还没有结束,因此,接在后边的add指令的执行中所需要的输入数据(应该被存储到Reg#0中的数据)没有被读取。但是,在t3周期(尤其是后半部分),由在先被执行的加载指令的MEM阶段对接在后边的加法指令的ID阶段,输入数据(应该被存储到Reg#0中的数据)通过FWD选择器933,由MEM选择器934被转发到流水线缓冲器(EX)935。据此,在从t3周期变化为t4周期时,即使向Reg#0的写入没有结束,接在后边的add指令也可以从ID阶段转移到EX阶段。
另外,图2B的定时与在图2A中的加载指令和加法指令之间插入一个不进行存储器存取的单纯指令(例如,寄存器、作为指示对存储器不进行任何处理的指令的nop指令等)时的定时相同。这样,从MEM阶段向ID阶段的转发工作,在图2A的指令串的情况,或对于图2A的指令串,在加载指令和加法指令之间插入一个单纯的指令的情况下被执行。并且,在插入一个指令的情况下不发生流水线竞争。
图2C示出了在转发的定时,尤其是从WB阶段向ID阶段进行转发的定时的一个例子,示出了在图2A中的加载指令和加法指令之间插入两个不进行存储器存取的单纯指令时的流水级和执行周期。在该例子中,将被插入到加载指令和加法指令之间的两个指令表示为inst1、inst2。上述的add指令在上述的四个阶段以t4到t7这四个周期被处理。在此,在t4周期(尤其是后半部分),在先被执行的加载指令的WB阶段针对接在后边的加法指令的ID阶段,输入数据(应该被存储到Reg#0的数据)由MEM选择器934通过FWD选择器933,被转发到流水线缓冲器(EX)935。据此,在t4周期,即使向Reg#0的写入没有结束,接在后边的add指令也可以从ID阶段移动到EX阶段。据此,在从t4变化到t5周期时,即使Reg#0的读取不能执行,接在后边的add指令也可以从ID阶段移动到EX阶段。这样,从WB阶段向ID阶段的转发工作是在针对图2A的指令串,在加载指令和加法指令之间插入两个单纯的指令的情况下被执行的,而且,像这样的指令串是不会发生流水线竞争的。
图2D示出了在以不具有转发结构的处理器执行图2A的指令串时的流水级和执行周期。在这种情况下三个周期发生流水线竞争。在在先被执行的加载指令的WB阶段,向Reg#0的写入结束后,接在后边的add指令在ID阶段读取Reg#0。
非专利文献1ジヨンL.ヘネシ一、デイビツドAパタ一ソン著「コンピユ一タの构成と设计第2版(下)—ハ一ドウエアとソフトウエアのインタフエ一ス—(计算机的构成和设计第2版(下)硬件与软件的接口)」日经BP社发行、2005年6月2日、p440~452
然而,在上述的以往技术中出现的问题是:由于向寄存器文件的不必要的写入而造成的耗费电量的情况。具体而言,在以往的技术中,作为在先被执行的指令的执行结果的寄存器数据仅被接在后边的一个指令参考,且在发生转发工作的情况下,根据在先被执行的指令的指令执行结果即使被写入到寄存器文件940,执行结果的值也不会由以后的指令读取。
发明内容
本发明鉴于上述课题,目的在于提供一种低耗电量的处理器,并且该处理器可以消减因向寄存器文件的不必要的写入而造成的电量。
为了达成上述的目的,本发明的处理器具有转发功能,包括:保持单元,保持与向寄存器的写入抑制有关的属性信息;以及控制单元,在发生了转发时,按照属性信息来抑制被转发的数据向寄存器的写入。
根据此构成,可以消减因对寄存器文件进行不必要的写入而耗费的电量,可以使耗电量降得更低。
在此,也可以是,所述保持单元保持至少与一个寄存器相对应的所述属性信息。
根据此构成,可以将是否抑制向寄存器的不必要的写入作为寄存器的属性来设定。
在此,也可以是,所述处理器具有在流水级间按顺序传递数据的多级流水线缓冲器;所述保持单元为多个流水线缓冲器的一部分,将所述属性信息与转发对象的数据一起传递给后级的流水线缓冲器。
根据此构成,可以将是否抑制向寄存器的不必要的写入作为以指令指定的操作数的属性来设定。
在此,也可以是,所述处理器进一步具有指令译码部,在对包含寄存器写入抑制指示的指令进行译码时,将所述属性信息输出到流水线缓冲器。
根据此构成,可以按照各个指令来设定寄存器写入抑制指示(属性)。
在此,也可以是,所述处理器具有在流水级间按顺序传递数据的多级流水线缓冲器;所述抑制单元进一步在数据被转发时,抑制该数据向该阶段以后的流水线缓冲器的写入。
根据此构成,除可以抑制向寄存器的不必要的写入之外,由于还可以抑制已被转发的数据向该阶段以后的流水线缓冲器的写入,因此可以进一步降低耗电量。
在此,也可以是,所述处理器进一步具有控制寄存器,指示是否抑制向寄存器的写入;所述保持单元保持与控制寄存器中所保持的数据相对应的属性信息。
根据此构成,可以根据控制寄存器的设定来变更保持单元的属性信息。例如,在控制寄存器被设定为不抑制向寄存器的写入的情况下,可以维持与现有的程序的兼容性,在控制寄存器被设定为抑制向特定的寄存器的写入的情况下,可以执行新的程序。
在此,也可以是,所述处理器进一步通过执行变更属性信息的属性变更指令,来改写所述保持单元的属性信息。
根据此构成,可以根据属性变更指令,任意地变更设定是否抑制向寄存器的不必要的写入的寄存器的属性。
并且,本发明的程序变换装置,将原始程序变换为以权利要求1所述的处理器为对象的程序,包括:抽出单元,从原始程序中抽出存储在寄存器中的变量;检测单元,检测被抽出的变量的生存区间;第一判断单元,判断在生存区间中参考所述变量的参考指令是否仅为一个;第二判断单元,判断在所述生存区间中,定义所述变量的定义指令和所述参考指令是否为转发的对象;以及生成单元,在判断为参照指令在生存区间中仅为一个,且是转发的对象的情况下,生成包含抑制指令的程序,该抑制指令抑制由所述定义指令进行的寄存器写入。
根据此构成,可以消减因向寄存器文件的不必要的写入而消耗的电量,可以生成耗电量更低的程序。
并且,本发明的程序变换方法具有与上述相同的单元。
并且,属性信息表示,在发生了转发工作的情况下,是否将指令的执行结果写入到寄存器文件。
据此,在发生了转发工作的情况下,可以根据属性信息来判断是否进行向寄存器文件的写入,在判断为不需要写入的情况下,通过抑制向寄存器文件的写入,从而消减耗电量。
发明效果
因此,根据本发明可以消减因向寄存器文件的不必要的写入而造成的电量,同时可以提供一种能够实现低耗电量的处理器。
附图说明
图1示出了以往技术中具有转发控制结构的流水线处理器的结构。
图2A示出了具有数据依赖关系的指令串的一个例子。
图2B是从MEM阶段转发到ID阶段的定时的示例图。
图2C是从WB阶段转发到ID阶段的定时的示例图。
图2D示出了在以不具有转发结构的处理器执行时的流水级和执行周期。
图3示出了实施例1中的处理器的结构。
图4示出了寄存器写入抑制电路的结构。
图5示出了实施例2中的处理器的结构。
图6示出了实施例3中的处理器的结构。
图7示出了实施例4中的处理器的结构。
图8示出了实施例5中的处理器的结构。
图9示出了编译装置的结构。
图10示出了实施例5中的扩展汇编程序的处理流程。
图11示出了实施例6中的处理器的结构。
图12示出了属性保持部以及寄存器写入抑制电路的结构。
图13示出了编译装置的结构。
图14示出了扩展汇编程序的处理流程。
标记说明
110、510、610指令译码部
120、620指令控制部
121FWD控制电路
122寄存器文件写入控制电路
123流水线缓冲控制电路
124运算处理控制电路
125存储器存取控制电路
126、626寄存器写入抑制电路
126a属性选择器
126b“与”门
126c属性选择器
126d“与”门
130指令执行部
131运算处理执行电路
132存储器存取执行电路
133FWD选择器
134MEM选择器
135、635流水线缓冲器(EX)
136、636流水线缓冲器(MEM)
137、637流水线缓冲器(WB)
138、139、201、638、639抑制门
139抑制门
140寄存器文件
141、641属性保持部
142数据保持部
341属性信息
602编译器
604、804扩展汇编程序
具体实施方式
(实施例1)
实施例1中的处理器具有寄存器文件,并根据属性信息来控制向寄存器文件的写入的有无,所述寄存器文件由多个寄存器组成,且该多个寄存器都分别具有自己的属性信息。
以下,参照附图对本发明所涉及的实施例1进行说明。
图3示出了实施例1中的处理器的结构。图中粗线主要表示数据,细线主要表示控制信号。本处理器被流水线化,且具有转发功能。如图所示,本处理器包括:指令译码部110、指令控制部120、指令执行部130、以及寄存器文件140。
指令控制部120具有:FWD控制电路121、寄存器文件写入电路122、流水线缓冲控制电路123、运算处理控制电路124、存储器存取控制电路125、以及寄存器写入抑制部126。并且,指令执行部130具有:运算处理执行电路131、存储器存取执行电路132、FWD选择器133、MEM选择器134、流水线缓冲器(EX)135、流水线缓冲器(MEM)136、流水线缓冲器(WB)137、抑制门138、以及抑制门139。其中,寄存器写入抑制部126、抑制门138以及抑制门139可以作为控制单元来发挥功能,在发生转发时,按照属性信息抑制被转发的数据向寄存器的写入。
寄存器文件140包括以寄存器编号(#0~#N)管理的属性信息保持部141以及数据保持部142。属性信息保持部141保持有与寄存器编号相对应的多个属性信息(Atr#0~Atr#N)。数据保持部142包括保持有数据的、与寄存器编号相对应的多个寄存器(Reg#0~Reg#N)。属性信息保持部141保持与向寄存器的写入抑制有关的属性信息。各属性信息表示“在发生了转发工作的情况下,是否将指令的执行结果写入到对应的寄存器中”,“在发生了转发工作的情况下,将指令的执行结果写入到寄存器”的情况被设定为0,“在发生了转发工作的情况下,不将指令的执行结果写入到寄存器”的情况被设定为1。
并且,上述的处理器包括五个流水级,即:DEC阶段、ID阶段、EX阶段、MEM阶段、WB阶段。
关于具有以上这样的结构的本实施例中的处理器的工作,将按照各个流水级来进行说明。
(DEC阶段)
在DEC阶段,由指令译码部110生成ID阶段以后将被使用的指令译码信息,并输出到指令控制部120。
(ID阶段)
在ID阶段,生成在执行指令时读取寄存器的值以作为指令执行输入数据,并输出到指令执行部130。
首先,FWD控制电路121进行判断,判断作为后续的指令而被执行的ID阶段的指令所读取的寄存器,和作为在先的指令而被执行的EX阶段、MEM阶段、WB阶段的指令所写入的寄存器是否一致。根据此判断结果可以分为以下(1)到(4)的工作。
(1)ID阶段的指令所读取的寄存器,和EX阶段、MEM阶段、WB阶段的指令所写入的寄存器均不一致的情况下,FWD控制电路121生成选择控制信号,以作为指令执行输入数据输出到FWD选择器133,以使来自寄存器文件140的值被选择。
(2)在ID阶段的指令所读取的寄存器,和EX阶段的指令所写入的寄存器一致的情况下,由于针对应该读取的寄存器的指令执行结果不能被读取,因此FWD控制电路121使流水线暂时停止。
(3)在由ID阶段的指令读取的寄存器,和由MEM阶段的指令写入的寄存器一致的情况下,由于存在将指令执行结果从MEM阶段转发到ID阶段的通路,因此,FWD控制电路121生成选择控制信号,以作为指令执行输入数据输出到FWD选择器133,以使FWD选择器133选择将指令执行结果从MEM阶段转发到ID阶段的通路。这样,就进行了从MEM阶段向ID阶段的转发工作。
此时,若作为接受被转发的数据的写入的寄存器所对应的属性信息为1,则寄存器写入抑制电路126将屏蔽信号MASK-MEM断言(assert)给抑制门138。在屏蔽信号MASK-MEM被断言的情况下,由于屏蔽了从流水线缓冲器(MEM)136输出到流水线缓冲器(WB)137的WE(Write Enable)信号,从而抑制门138抑制被转发来的数据向寄存器的写入。
(4)在由ID阶段的指令读取的寄存器,和由WB阶段的指令写入的寄存器一致的情况下,由于存在将指令执行结果从WB阶段转发到ID阶段的通路,因此,FWD控制电路121生成选择控制信号,作为指令执行时所使用的输入数据输出到FWD选择器133,以使FWD选择器133选择将指令执行结果从WB阶段转发到ID阶段的通路。流水线缓冲控制电路123将作为FWD选择器133的输出的指令执行输入数据存储到流水线缓冲器(EX)135。这样,就进行了从WB阶段向ID阶段的转发工作。
此时,若作为接受被转发的数据的写入的寄存器所对应的属性信息为1,则寄存器写入抑制电路126将屏蔽信号MASK-WB断言(assert)给抑制门139。在屏蔽信号MASK-WB被断言的情况下,由于屏蔽了从流水线缓冲器(WB)137输出到寄存器文件140的WE(Write Enable)信号,从而抑制门139抑制被转发来的数据向寄存器的写入。
(EX阶段)
在EX阶段,对于被存储在流水线缓冲器(EX)135中的指令执行输入数据,运算处理控制电路124或存储器存取控制电路125按照指令译码信息生成控制信号,以使运算处理执行电路131、存储器存取执行电路132工作。
并且,流水线缓冲控制电路123将作为运算处理执行电路131的输出的、针对进行运算处理的指令的指令执行结果存储到流水线缓冲器(MEM)136。
(MEM阶段)
在MEM阶段,流水线缓冲控制电路123按照指令译码信息,生成选择控制信号并输出到MEM选择器134,以使MEM选择器134选择流水线缓冲器(MEM)136的值或作为指令执行结果的存储器存取执行电路132的输出的任一个,所述指令执行结果是针对进行存储器存取的指令的执行结果。
并且,流水线缓冲控制电路123将作为MEM选择器134的输出的指令执行结果存储到流水线缓冲器(WB)137。
(WB阶段)
在WB阶段,寄存器文件写入控制电路122按照指令译码信息,生成针对寄存器文件140的写入控制信号,并通过将作为流水线缓冲器(WB)137的输出的指令执行结果写入到寄存器文件140,从而数据保持部142得以更新。
但是,属性信息保持部141的值为1,且在MEM阶段或WB阶段,由后续的指令从FWD控制电路121中检测出由转发指令执行结果的工作进行的读取的情况下,寄存器文件写入控制电路122不生成针对寄存器文件140的写入控制信号,并且也没有将作为流水线缓冲器(WB)137的输出的指令执行结果向寄存器文件140的写入,数据保持部142不被更新。
图4是寄存器写入抑制电路126及其周边的结构示例图。在该图中,寄存器写入抑制电路126包括:属性选择器126a、“与”门126b、属性选择器126c、以及“与”门126d。并且,在该图中示出了,在流水级之间按顺序传递数据的多级流水线缓冲器中的,流水线缓冲器(EX)135、流水线缓冲器(MEM)136、以及流水线缓冲器(WB)137的一部分。图中的WN(WriteNumber)表示接受写入的寄存器的编号。WE表示给寄存器的写入控制信号。FWD-MEM信号是表示从MEM阶段向ID阶段转发的信号,由FWD控制电路121输出。FWD-WB信号是表示从WB阶段向ID阶段转发的信号,由FWD控制电路121输出。
属性选择器126a选择属性信息保持部141中所保持的属性信息(Atr#0~ATR#N)中的、与流水线缓冲器(MEM)136所保持的WN所示出的寄存器编号相对应的属性信息。即,被选择的属性信息是表示接受MEM阶段的数据的写入的寄存器编号。
“与”门126b对由属性选择器126a所选择的属性信息和FWD-MEM信号进行逻辑乘运算,并作为屏蔽信号MASK-MEM输出。即,“与”门126b将作为指令执行结果的数据从MEM阶段转发向ID阶段,且接受该数据的写入的寄存器的属性信息为“不将指令的执行结果写入到寄存器文件”的情况下,断言屏蔽信号MASK-MEM。
属性选择器126c选择属性信息保持部141中所保持的属性信息(Atr#0~ATR#N)中的、与流水线缓冲器(WB)137所保持的WN所示出的寄存器编号相对应的属性信息。即,被选择的属性信息是表示接受WB阶段的数据的写入的寄存器编号。
“与”门126d对由属性选择器126c所选择的属性信息和FWD-WB信号进行加法运算,并作为屏蔽信号MASK-WB输出。即,“与”门126d将作为指令执行结果的数据从WB阶段转发向ID阶段,且接受该数据的写入的寄存器的属性信息为“不将指令的执行结果写入到寄存器文件”的情况下,断言屏蔽信号MASK-WB。
抑制门138按照屏蔽信号MASK-MEM,屏蔽从流水线缓冲器(MEM)136输出到流水线缓冲器(WB)137的WE(WriteEnable)信号。这样,向被转发的数据的寄存器的写入被抑制。
抑制门139按照屏蔽信号MASK-WB,屏蔽从流水线缓冲器(WB)137输出到寄存器文件140的WE(WriteEnable)信号。这样,向被转发的数据的寄存器的写入被抑制。
这样,在本发明所涉及的实施例1中的处理器,在发生了转发工作的情况下,按照属性信息保持部141中所保持的属性信息,寄存器写入抑制电路126可以抑制被转发的数据的寄存器的写入。据此,通过抑制向寄存器文件140的不必要的写入,从而可以消减耗电量。
并且,也可以固定属性信息Atr#1-#N中的全部或一部分的属性信息。并且,关于处理器的流水线级数,只要转发通路至少存在一个多少级都可以。
(实施例2)
以下,参照附图对本发明所涉及的实施例2进行说明。
实施例2中的处理器除具有实施例1中的处理器的特点以外,还可以控制作为指令执行部的内部资源的流水线缓冲器的变更的有无。
在考虑以上这点的基础上对本发明中的实施例2中的处理器进行说明。
图5示出了实施例2中的处理器的结构。图5中的处理器结构和实施例1中处理器结构的不同之处是,增加了抑制门201。
下面将对具有以上这种结构的的本实施例中的处理器的工作进行说明,并且,对于与实施例1中的处理器相同之处省略说明,仅对不同之处(MEM阶段)进行说明。
抑制门201按照MASK-WB信号,对向流水线缓冲器(WB)137的写入控制信号进行屏蔽。据此,由于向流水线缓冲器(WB)137的写入工作得到了抑制,再加上寄存器文件140的耗电量得到了降低,因此,可以降低流水线缓冲器(WB)137的耗电量。
(MEM阶段)
在MEM阶段,流水线缓冲控制电路123按照指令译码信息,生成选择控制信号并输出到ME 选择器134,以使MEM选择器134选择流水线缓冲器(MEM)236的值或作为指令执行结果的存储器存取执行电路132的输出的任一个,所述指令执行结果是针对进行存储器存取的指令的执行结果。
并且,流水线缓冲控制电路123根据向流水线缓冲器(WB)137的写入控制信号,将作为MEM选择器134的输出的指令执行结果存储到流水线缓冲器(WB)137。
不过,属性信息保持部141的值为1,且在MEM阶段由后续的指令检测出由转发工作指令执行结果被读取的情况下,MASK-WB信号被断言。这样,抑制门201屏蔽向流水线缓冲器(WB)137的写入控制信号。
结果是,流水线缓冲控制电路123不将作为ME选择器134的输出的指令执行结果存储到流水线缓冲器(WB)137。
根据以上所述,在本发明所涉及的实施例2的处理器中,在发生了转发工作的情况下,可以根据属性信息保持部141来抑制向流水线缓冲器(WB)137的不必要的存储,从而可以减少耗电。
并且,写入的抑制对象不仅限于最终级的流水线缓冲器,只要抑制从转发数据的阶段向后级的流水线缓冲器的写入即可。并且,也可以不是抑制向流水线缓冲器的全部的写入工作,可以是抑制向流水线缓冲器的一部分(至少是保持WN和WE的部分)的写入工作。
(实施例3)
以下利用图6对本发明所涉及的实施例3进行说明。
实施例3中的处理器与实施例1中的处理器的不同之处是没有属性信息的变化。
图6示出了实施例3中的处理器的结构。图6的处理器的结构和实施例1中的处理器的结构的不同之处是,包括具有属性信息保持部141的寄存器文件340,以取代寄存器文件140,以及包括寄存器写入抑制电路326,以取代寄存器写入抑制电路126。
下面对具有以上这种结构的本实施例中的处理器的工作进行说明,对于与实施例1中的处理器相同之处省略说明,在此,仅对不同之处进行说明。
不具有保持与寄存器文件340中所包含的各个寄存器相对应的属性的属性信息保持部141,而具有保持与特定的寄存器(寄存器编号Reg#N)相对应的属性(时常为1)的属性信息保持部341。
寄存器写入抑制电路326即使与寄存器写入抑制电路126具有相同的结构也不会有问题,但电路结构也可以是,删除图4所示的属性选择器126a、126c,将Atr#N分别直接输入给“与”门126b、126d。
(WB阶段)
在WB阶段,寄存器文件写入控制电路122按照指令译码信息,生成针对寄存器文件340的写入控制信号,并通过将作为流水线缓冲器(WB)137的输出的指令执行结果写入到寄存器文件340,从而数据保持部142得以更新。
但是,在被写入到特定的寄存器(寄存器编号Reg#N)的指令被检测出的情况下,且在MEM阶段或WB阶段,由后续的指令从FWD控制电路121中检测出由转发工作指令执行结果被读取的情况下,寄存器文件写入控制电路122不生成针对寄存器文件340的写入控制信号,并且也没有将作为流水线缓冲器(WB)137的输出的指令执行结果向寄存器文件340的写入,数据保持部142不被更新。
根据以上所述,在本发明所涉及的实施例3中的处理器,通过将属性信息保持部341与特定的寄存器相对应,从而可以简化控制电路的全体。
并且,特定的寄存器不仅限于一个,也可以是多个。
(实施例4)
以下参照附图对本发明所涉及的实施例4进行说明。
实施例4中的处理器除具有与实施例2中的处理器相同之处以外,还具有处理器状态寄存器。以下,在考虑以上这点的基础上,对本发明中的实施例4中的处理器进行说明。
图7示出了实施例4中的处理器的结构。图7的处理器结构与实施例1中的处理器结构的不同之处是,增加了处理器状态寄存器412,且其输出与属性信息保持部141相连接。
以下对于具有以上这种结构的本实施例中的处理器的工作进行说明,对于与实施例1中的处理器相同之处省略说明,在此对不同之处进行说明。
处理器状态寄存器412作为控制寄存器来发挥功能,其指示是否抑制向寄存器的写入。属性信息保持部141保持与处理器状态寄存器412(控制寄存器)所保持的数据相对应的属性信息。
(WB阶段)
在WB阶段,寄存器文件写入控制电路122按照指令译码信息,生成针对寄存器文件140的写入控制信号,并通过将作为流水线缓冲器(WB)137的输出的指令执行结果写入到寄存器文件140,从而数据保持部142得以更新。
但是,属性信息保持部141为1,且在MEM阶段或WB阶段,由后续的指令从FWD控制电路121中检测出由转发指令执行结果的工作进行的读取的情况下,寄存器文件写入控制电路122不生成针对寄存器文件140的写入控制信号,并且也没有将作为流水线缓冲器(WB)137的输出的指令执行结果向寄存器文件140的写入,数据保持部142不被更新。
并且,通过将处理器状态寄存器的值设定为特定的值,从而可以将属性信息保持部141全部变更为0。
如以上所述,在本发明所涉及的实施例4的处理器中,属性信息保持部141的控制可以由处理器状态寄存器412来设定。例如,为了使属性信息Atr#0-#N全部为0而设定处理器状态寄存器412的话,本处理器的工作就可以变更为以往的处理器的工作,这样,可以保持在软件上的处理器工作的互换性。
也可以仅将属性信息Atr#N作为1而设定处理器状态寄存器412,也可以依赖于安装了处理器的装置,来固定处理器状态寄存器412的数据,还可以进行动态变更。
(实施例5)
实施例5中的处理器除与实施例1中的处理器具有相同之处以外,还具有作为指令的属性变更指令。在考虑以上这点的基础上,对本发明的实施例5中的处理器进行说明。
图8示出了实施例5中的处理器的结构。图8的处理器结构与实施例1中的处理器结构的不同之处是,作为WB阶段的流水线缓冲器137的输出的指令执行结果与属性信息141相连接。
以下对有关具有以上这种结构的本实施例中的处理器的工作进行说明,省略与实施例1的处理器相同之处,对不同之处(WB阶段)进行说明。
(WB阶段)
在WB阶段,寄存器文件写入控制电路122按照指令译码信息,生成针对寄存器文件140的写入控制信号,并通过将作为流水线缓冲器(WB)137的输出的指令执行结果写入到寄存器文件140,从而数据保持部142得以更新。
但是,属性信息保持部141的值为1,且在MEM阶段或WB阶段,由后续的指令从FWD控制电路121中检测出由转发指令执行结果的工作进行的读取的情况下,寄存器文件写入控制电路123不生成针对寄存器文件140的写入控制信号,并且也没有将作为流水线缓冲器(WB)137的输出的指令执行结果向寄存器文件140的写入,数据保持部142不被更新。
在执行属性变更指令“set_attribute Reg#n”的情况下,寄存器文件写入控制电路522生成针对寄存器文件140的写入控制信号,并通过将作为流水线缓冲器(WB)137的输出的指令执行结果写入到寄存器文件140,从而属性信息保持部141得以更新,被设定为1。
并且,在执行属性变更指令“reset_attribute Reg#n”的情况下,寄存器文件写入控制电路522生成针对寄存器文件140的写入控制信号,并通过将作为流水线缓冲器(WB)137的输出的指令执行结果写入到寄存器文件140,从而属性信息保持部141得以更新,被设定为0。
这样,在本发明所涉及的实施例5的处理器中,可以通过软件任意变更与各寄存器相对应的属性信息保持部141。
以下将参照附图对实施例5中的程序变换装置进行说明。实施例5中的程序变换装置为编译装置,与实施例5的处理器相对应,分析程序结构并自动插入属性变更指令。
以下在考虑到以上这点的基础上,对本发明的实施例5中的编译装置进行说明。
图9示出了实施例5中的编译装置的结构。
如该图所示,该编译装置具有编译程序602和扩展汇编程序604。编译程序602将作为高级语言的C语言的源代码601变换为由与以往相同的指令构成的汇编程序代码603。
扩展汇编程序604将汇编程序代码603变换为添加了属性变更指令的汇编程序代码605。
以下对有关具有以上结构的本实施例中的编译程序的工作进行说明。
首先,编译程序602根据以往的编译流,将作为高级语言的C语言源代码601变换为汇编程序代码(以往)603。
作为一个例子,对汇编程序代码(以往)603的内容进行说明。
第1行:将转移指令执行时的接受转移方的地址作为Label来表示的伪指令。
第2行:将Reg#31的数据作为地址来进行向存储器的读取,并将读取的数据存储到Reg#0的加载指令。
第3行:对Reg#0和Reg#1数据进行加法运算,并存储到Reg#2的加法指令。
第4行:将Reg#31的数据作为地址,将Reg#0的数据向存储器写入的存储指令。
第5行:使Reg#31和立即数1相加,并存储到Reg#31的加法指令。
第6行:在第1行进行转移(循环执行)的转移指令。
接着,扩展汇编程序604将汇编程序代码(以往)603变换为添加了属性变更指令的汇编程序代码(添加新建指令)605。在此,扩展汇编程序604判断Reg#0的数据由扩编程序代码(以往)603中的第2行写入,并仅以紧接在后边的第3行的指令读取,并将属性变更指令(set_attributeReg#0)插入到马上就要执行循环的指令,以使Reg#0的属性被设定为1。该指令指示将属性Atr#0设定为1。并且,插入属性变更指令(reset_attribute Reg#0),以使在循环执行被遗漏时将Reg#0的属性设定为0。该指令指示将属性Atr#0设定为0。
图10示出了实施例5中的扩展汇编程序604的处理流程。如该图所示,扩展汇编程序604从原始的汇编程序代码603中抽出由原始程序存储到寄存器的变量以及数据相关关系(S81),并且,根据指令间的相关关系检测生存区间(S82)。生存区间是指,从定义变量的指令(称为定义指令)开始到最后参考该变量的指令(称为参考指令)为止的区间。而且,扩展汇编程序604抽出变量中跨过基本块的不参考的局部变量(S83),并判断参考该变量的参考指令在生存区间中是否仅为一个(S84),并判断在生存区间中定义该变量的定义指令和参考的参考指令是否成为转发的对象(S85)。此时,定义指令和参考指令是否成为转发的对象取决于定义指令和参考指令之间的距离。该距离是指从定义指令到参考指令的指令数,例如,在定义指令的后边紧接着的是参考指令的情况下,此时的距离就为1。换而言之,插入到定义指令和参考指令之间的指令数加1就是距离。在这种情况下,若在本实施例的处理器中距离为3以上,则判断为是转发的对象。
在此判断中,参考指令被判断为在生存区间仅存在一个且是转发对象的情况下,扩展汇编程序604添加抑制由定义指令进行寄存器写入的抑制指令,以便抑制由所述定义指令进行的寄存器写入(S86、S87)。在此所谓的抑制指令是指属性变更指令(set_attribute Reg#n)和属性变更指令(reset_attribute Reg#n),属性变更指令(set_attribute Reg#n)设定在生存区间之前抑制向应该存储变量的寄存器的写入的属性信息,属性变更指令(reset_attribute Reg#n)设定在生存区间之后不抑制向应该存储变量的寄存器的写入的属性信息。扩展汇编程序604在存在下一个局部变量的情况下(S88),再次处理步骤S83以后的步骤。
并且,在此判断中,参考指令被判断为在生存区间中存在的不是一个,或没有成为转发的对象的情况下,扩展汇编程序604在存在下一个局部变量的情况下(S88),再次处理步骤S83以后的步骤。
通过以上所述,软件开发人员可以不必特意地对属性变更指令进行编程,就可以通过实施例5中的处理器来实现降低耗电量的效果。
并且,(set_attribute Reg#n)指令可以是紧靠定义指令的前一个指令,(reset_attribute Reg#n)指令可以是紧靠参考指令的后一个指令,后者的指令最好是插入到图9所示的循环以外的位置。
(实施例6)
以下参照附图对本发明所涉及的实施例6进行说明。在本实施例中属性信息不是与各个寄存器对应而被保持的,而是与转发对象的各个数据相对应并被保持在多级流水线缓冲器中,以下对传递给多个流水线缓冲器的结构进行说明。
图11示出了实施例6中的处理器的结构。图11所示的处理器与实施例1中的处理器相比较不同之处是,具有寄存器文件640以取代寄存器文件140,具有指令控制部620以取代指令控制部120,具有指令译码部610以取代指令译码部110,具有流水线缓冲器635-637以取代流水线缓冲器135-137,具有抑制门638、639以取代抑制门138、139。
寄存器文件640虽然包括数据保持部142,但不具有各个寄存器所对应的属性信息保持部141。在本实施例中,因保持对应于转发对象的数据的属性信息*S,所以流水线缓冲器635-637的一部分具有属性信息保持单元的功能。
指令译码部610除具有指令译码部110的功能以外,还可以译码包含寄存器写入抑制指示的指令。本处理器可以支援作为向寄存器写入数据的指令的通常指令和抑制指令的这两种指令,通常指令不包含寄存器写入抑制指示,抑制指令包含寄存器写入抑制指示。例如,对于通常的加载指令(ld Reg#0,(Reg#31))也可以执行附带有抑制指示的加载指令(ld*Reg#0,(Reg#31))。抑制指令的记忆码的表示法是在通常的指令上附加*。
指令控制部620与指令控制部120相比不同之处是不具有寄存器写入抑制电路126。
图12是流水线缓冲器365-367的一部分和抑制门638、639的结构示例图。
流水线缓冲器635-637与流水线缓冲器135-137同样,具有在流水级间按顺序传递数据的功能,除此之外还将转发对象的数据以及与该转发对象的数据相对应的属性信息*S传递到后级的流水线缓冲器。在指令译码部610对上述的抑制指令进行译码时,该属性信息*S和WN信号或WE信号一起由指令译码部610写入到流水线缓冲器635,并被传递到后级的流水线缓冲器636、637。这样,流水线缓冲器635-637的一部分与转发对象的数据相对应,构成保持属性信息*S的属性保持部641,并作为属性信息保持单元来发挥功能。
抑制门638、639除具有抑制门138、139的功能以外,还具有寄存器写入抑制电路126的功能。
抑制门638被输入有FWD-MEM信号、属性信息*S、以及WE信号,所述FWD-MEM信号表示从MEM阶段向ID阶段的转发工作,所述属性信息*S从流水线缓冲器(MEM)636输出,所述WE信号由流水线缓冲器(MEM)636输出。关于这些输入信号,由FWD-MEM信号断言,且在属性信息*S为1(寄存器写入抑制)的情况下,通过抑制门638将WE信号屏蔽,从而可以抑制被转发来的数据的寄存器写入。
抑制门639被输入有FWD-WB信号、属性信息*S、以及WE信号,所述FWD-WB信号表示从WB阶段向ID阶段的转发工作,所述属性信息*S从流水线缓冲器(WB)637输出,所述WE信号由流水线缓冲器(WB)637输出。关于这些输入信号,由FWD-WB信号断言,且在属性信息*S为1(寄存器写入抑制)的情况下,通过抑制门639将WE信号屏蔽,从而可以抑制被转发来的数据的寄存器写入。这样,抑制门638、639构成寄存器写入抑制电路626,并作为抑制寄存器写入的控制单元发挥功能。
以下对具有如以上结构的本实施例中的处理器的工作进行说明,对于与实施例1中的处理器相同之处省略说明,在此对不同之处进行说明。
(WB阶段)
在WB阶段,寄存器文件写入控制电路723按照指令译码信息,生成针对寄存器文件740的写入控制信号,并通过将作为流水线缓冲器(WB)737的输出的指令执行结果写入到寄存器文件740,从而数据保持部142得以更新。
但是,在检测出被执行的指令为作为寄存器写入抑制指令而被定义的指令,且在MEM阶段或WB阶段,由后续的指令从FWD控制电路721中检测出由转发指令执行结果的工作进行的读取的情况下,寄存器文件写入控制电路723不生成针对寄存器文件740的写入控制信号,并且也没有将作为流水线缓冲器(WB)737的输出的指令执行结果向寄存器文件740的写入,数据保持部142不被更新。
通过以上所述,本发明所涉及的实施例6中的处理器由于不具有属性信息保持部从而可以消减电路规模,且可以得到与实施例1的处理器相同的效果。
接着,参照附图对本实施例中的程序变换装置进行说明。
实施例6中的程序变换装置也就是编译装置,与本实施例的处理器相对应,解析程序结构,并将以往的指令变换为寄存器写入抑制指令。
以下,在考虑以上这点的基础上,对本发明的实施例6中的编译装置进行说明。
图13示出了实施例6中的编译装置的结构。
如该图所示,本编译装置作为高级语言的C语言源代码601由编译程序602被变换为汇编程序代码(以往)603,汇编程序代码(以往)603进一步由扩展汇编程序804被变换为添加了属性变更指令的汇编程序代码(添加新建指令)805。
以下对本编译器的工作进行说明。
首先,编译程序602根据以往的编译流,将作为高级语言的C语言源代码601变换为汇编程序代码(以往)603。
作为一个例子,对有关汇编程序代码(以往)603的内容进行说明。
第1行:是表示转移指令执行时的接受转移方的地址的标记。
第2行:将Reg#31的数据作为地址来进行向存储器的读取,并将读取的数据存储到Reg#0的加载指令。
第3行:对Reg#0和Reg#1数据进行加法运算,并存储到Reg#2的加法指令。
第4行:将Reg#31的数据作为地址,将Reg#2的数据向存储器写入的存储指令。
第5行:使Reg#31和立即数1相加,并存储到Reg#31的加法指令。
第6行:在第1行进行转移(循环执行)的转移指令。
之后,由扩展汇编程序804将汇编程序代码(以往)603变换为将以往的指令变换为寄存器写入抑制指令的汇编程序代码(添加新建指令)805。在此,在扩展汇编程序804判断为,Reg#0被写入在汇编程序代码(以往)603中的第2行,并仅以紧接在后边的第3行的指令来读取,将给第2行的存储器的读取指令(ld)变换为附带寄存器写入抑制指令的指令(ld*)。
图14示出了图13中的扩展汇编程序的处理流程。该图与图9所示的处理流程相比较不同之处是,取代步骤S86、S87的是具有步骤S101。对于相同之处省略说明,以下对不同之处进行说明。
在S84、S85的判断中,参考指令被判断为在生存区间仅存在一个,且成为转发对象的情况下,由于抑制了由所述定义指令进行的寄存器写入,因此,扩展汇编程序804将定义指令从通常的指令变换为伴随有寄存器写入的抑制的抑制指令(上述附带有*的指令)(S101)。
通过以上所述,软件开发人员可以不必特意地对属性变更指令进行编程,就可以通过实施例6中的处理器来实现降低耗电量的效果。
并且,本发明不仅可以作为处理器来实现,而且也可以作为控制处理器的方法(以下称为控制方法)等来实现。并且,也可以作为由处理器提供的功能而组成的LSI、将处理器功能形成在FPGA、CPLD等可编程逻辑器件的IP芯片(以下称为处理器芯片)、以及记录处理器芯片的记录介质来实现。
并且,上述的实施例是可以自由组合的。例如,将实施例5与实施例6组合在一起也不会产生矛盾,可以得到效果。
本发明可作为搭载在移动电话等上的处理器等来利用,尤其可以利用于需要降低电量消耗的领域。
Claims (11)
1.一种处理器,具有转发功能,其特征在于,包括:
保持单元,保持与向寄存器的写入抑制有关的属性信息;以及
控制单元,在发生了转发时,按照属性信息来抑制被转发的数据向寄存器的写入。
2.如权利要求1所述的处理器,其特征在于,所述保持单元保持至少与一个寄存器相对应的所述属性信息。
3.如权利要求1所述的处理器,其特征在于,
所述处理器具有在流水级间按顺序传递数据的多级流水线缓冲器;
所述保持单元为多个流水线缓冲器的一部分,将所述属性信息与转发对象的数据一起传递给后级的流水线缓冲器。
4.如权利要求3所述的处理器,其特征在于,所述处理器进一步具有指令译码部,在对包含寄存器写入抑制指示的指令进行译码时,将所述属性信息输出到流水线缓冲器。
5.如权利要求2或3所述的处理器,其特征在于,
所述处理器具有在流水级间按顺序传递数据的多级流水线缓冲器;
所述抑制单元进一步在数据被转发时,抑制该数据向该阶段以后的流水线缓冲器的写入。
6.如权利要求2所述的处理器,其特征在于,
所述处理器进一步具有控制寄存器,指示是否抑制向寄存器的写入;
所述保持单元保持与控制寄存器中所保持的数据相对应的属性信息。
7.如权利要求2所述的处理器,其特征在于,所述处理器进一步通过执行变更属性信息的属性变更指令,来改写所述保持单元的属性信息。
8.一种程序变换装置,将原始程序变换为以权利要求1所述的处理器为对象的程序,其特征在于,包括:
抽出单元,从原始程序中抽出存储在寄存器中的变量;
检测单元,检测被抽出的变量的生存区间;
第一判断单元,判断在生存区间中参考所述变量的参考指令是否仅为一个;
第二判断单元,判断在所述生存区间中,定义所述变量的定义指令和所述参考指令是否为转发的对象;以及
生成单元,在判断为参照指令在生存区间中仅为一个,且是转发的对象的情况下,生成包含抑制指令的程序,该抑制指令抑制由所述定义指令进行的寄存器写入。
9.如权利要求8所述的程序变换装置,其特征在于,
所述抑制指令是,在所述生存区间之前将属性信息设定到所述保持单元的属性变更指令,以及在所述生存区间之后将属性信息设定到所述保持单元的属性变更指令,前者属性信息是抑制将所述变量向应该存储的寄存器的写入的属性信息,后者属性信息是不抑制将所述变量向应该存储的寄存器的写入的属性信息;
所述生成单元将所述属性变更指令添加到原始程序。
10.如权利要求8所述的程序变换装置,其特征在于,
所述抑制指令是带有与所述参考指令相同的工作内容和寄存器写入抑制指示的附带抑制的参考指令;
所述生成单元通过将原始程序中的所述定义指令变更为所述附带抑制的定义指令,从而生成所述程序。
11.一种程序变换方法,将原始程序变换为以权利要求1所述的处理器为对象的程序,其特征在于,
从原始程序中抽出存储在寄存器中的变量;
检测被抽出的变量的生存区间;
判断参考所述变量的参考指令在生存区间中是否仅为一个;
判断在所述生存区间中,定义所述变量的定义指令和所述参考指令是否为被转发的对象;
在判断为参考指令在生存区间中仅为一个,且是被转发的对象的情况下,生成包含抑制指令的程序,该抑制指令抑制由所述定义指令进行的寄存器写入。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP013029/2006 | 2006-01-20 | ||
JP2006013029 | 2006-01-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101361039A true CN101361039A (zh) | 2009-02-04 |
Family
ID=38287381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200680051248.4A Pending CN101361039A (zh) | 2006-01-20 | 2006-10-16 | 处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7975128B2 (zh) |
JP (1) | JP4607958B2 (zh) |
CN (1) | CN101361039A (zh) |
WO (1) | WO2007083421A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216681A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种cpu指令处理方法和处理器 |
CN105988775A (zh) * | 2015-03-18 | 2016-10-05 | 瑞萨电子株式会社 | 处理器、程序代码转换装置以及软件 |
CN106448732A (zh) * | 2015-08-12 | 2017-02-22 | 德克萨斯仪器股份有限公司 | 半导体存储器单元多写避免编码装置、系统和方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5555102B2 (ja) | 2010-09-01 | 2014-07-23 | キヤノン株式会社 | プロセッサ |
JP6627630B2 (ja) * | 2016-04-15 | 2020-01-08 | 富士通株式会社 | コンパイル方法、コンパイルプログラム及び情報処理装置 |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5781753A (en) * | 1989-02-24 | 1998-07-14 | Advanced Micro Devices, Inc. | Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions |
US5706407A (en) * | 1993-12-28 | 1998-01-06 | Kabushiki Kaisha Toshiba | System for reallocation of memory banks in memory sized order |
JP3606387B2 (ja) * | 1994-09-13 | 2005-01-05 | 松下電器産業株式会社 | コンパイル装置 |
JP3338374B2 (ja) * | 1997-06-30 | 2002-10-28 | 松下電器産業株式会社 | 演算処理方法および装置 |
JP3449186B2 (ja) * | 1997-08-19 | 2003-09-22 | 富士通株式会社 | パイプラインバイパス機能を有するデータ処理装置 |
JP2000305777A (ja) | 1999-04-26 | 2000-11-02 | Hitachi Ltd | デジタル処理装置 |
US6862677B1 (en) * | 2000-02-16 | 2005-03-01 | Koninklijke Philips Electronics N.V. | System and method for eliminating write back to register using dead field indicator |
EP1199629A1 (en) * | 2000-10-17 | 2002-04-24 | STMicroelectronics S.r.l. | Processor architecture with variable-stage pipeline |
GB2378783B (en) * | 2001-08-17 | 2004-12-29 | F Secure Oyj | Preventing virus infection in a computer system |
JP2003122561A (ja) | 2001-10-10 | 2003-04-25 | Matsushita Electric Ind Co Ltd | 情報処理装置 |
EP2431839B1 (en) * | 2003-03-18 | 2015-09-23 | Panasonic Intellectual Property Management Co., Ltd. | Processor, driving method thereof, and information processing device |
WO2004084065A2 (en) | 2003-03-19 | 2004-09-30 | Koninklijke Philips Electronics N.V. | Pipelined instruction processor with data bypassing |
US7096345B1 (en) * | 2003-09-26 | 2006-08-22 | Marvell International Ltd. | Data processing system with bypass reorder buffer having non-bypassable locations and combined load/store arithmetic logic unit and processing method thereof |
US7634597B2 (en) * | 2003-10-08 | 2009-12-15 | Micron Technology, Inc. | Alignment of instructions and replies across multiple devices in a cascaded system, using buffers of programmable depths |
JP2006059068A (ja) * | 2004-08-19 | 2006-03-02 | Matsushita Electric Ind Co Ltd | プロセッサ装置 |
WO2006043345A1 (ja) * | 2004-10-19 | 2006-04-27 | Matsushita Electric Industrial Co., Ltd. | プロセッサ |
JP2008097572A (ja) * | 2006-09-11 | 2008-04-24 | Matsushita Electric Ind Co Ltd | 演算装置、コンピュータシステム、および携帯機器 |
-
2006
- 2006-10-16 US US12/161,124 patent/US7975128B2/en not_active Expired - Fee Related
- 2006-10-16 WO PCT/JP2006/320576 patent/WO2007083421A1/ja active Application Filing
- 2006-10-16 CN CN200680051248.4A patent/CN101361039A/zh active Pending
- 2006-10-16 JP JP2007513516A patent/JP4607958B2/ja not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104216681A (zh) * | 2013-05-31 | 2014-12-17 | 华为技术有限公司 | 一种cpu指令处理方法和处理器 |
CN104216681B (zh) * | 2013-05-31 | 2018-02-13 | 华为技术有限公司 | 一种cpu指令处理方法和处理器 |
CN105988775A (zh) * | 2015-03-18 | 2016-10-05 | 瑞萨电子株式会社 | 处理器、程序代码转换装置以及软件 |
CN106448732A (zh) * | 2015-08-12 | 2017-02-22 | 德克萨斯仪器股份有限公司 | 半导体存储器单元多写避免编码装置、系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US7975128B2 (en) | 2011-07-05 |
WO2007083421A1 (ja) | 2007-07-26 |
JPWO2007083421A1 (ja) | 2009-06-11 |
US20100169610A1 (en) | 2010-07-01 |
JP4607958B2 (ja) | 2011-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6041399A (en) | VLIW system with predicated instruction execution for individual instruction fields | |
US6948158B2 (en) | Retargetable compiling system and method | |
US6240510B1 (en) | System for processing a cluster of instructions where the instructions are issued to the execution units having a priority order according to a template associated with the cluster of instructions | |
US8572358B2 (en) | Meta predictor restoration upon detecting misprediction | |
US8429380B2 (en) | Disabling redundant subfunctional units receiving same input value and outputting same output value for the disabled units in SIMD processor | |
JP2003099248A (ja) | プロセッサ、コンパイル装置及びコンパイル方法 | |
CN101361039A (zh) | 处理器 | |
JP4412905B2 (ja) | 低電力動作制御装置、およびプログラム最適化装置 | |
US7673294B2 (en) | Mechanism for pipelining loops with irregular loop control | |
US5274777A (en) | Digital data processor executing a conditional instruction within a single machine cycle | |
US7266674B2 (en) | Programmable delayed dispatch in a multi-threaded pipeline | |
US20040172519A1 (en) | Processor, system LSI circuit, method of designing same, and recording medium having said method recorded thereon | |
US20200278865A1 (en) | Hazard Mitigation for Lightweight Processor Cores | |
US7617494B2 (en) | Process for running programs with selectable instruction length processors and corresponding processor system | |
JP4784912B2 (ja) | 情報処理装置 | |
CN105988775A (zh) | 处理器、程序代码转换装置以及软件 | |
US5812845A (en) | Method for generating an object code for a pipeline computer process to reduce swapping instruction set | |
JP2013161484A (ja) | 再構成可能コンピューティング装置、その第1メモリ制御器及び第2メモリ制御器、並びにそのデバッギング用のトレースデータを処理する方法 | |
US6430682B1 (en) | Reliable branch predictions for real-time applications | |
KR101118593B1 (ko) | Vliw 명령어 처리 장치 및 방법 | |
Rohde et al. | Improving HLS generated accelerators through relaxed memory access scheduling | |
US20230116554A1 (en) | Techniques For Compiling High-Level Inline Code | |
US6704855B1 (en) | Method and apparatus for reducing encoding needs and ports to shared resources in a processor | |
EP1378825B1 (en) | A method for executing programs on selectable-instruction-length processors and corresponding processor system | |
US20050033939A1 (en) | Address generation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20090204 |