CN101124539A - 低功率汇编器 - Google Patents
低功率汇编器 Download PDFInfo
- Publication number
- CN101124539A CN101124539A CNA200580014853XA CN200580014853A CN101124539A CN 101124539 A CN101124539 A CN 101124539A CN A200580014853X A CNA200580014853X A CN A200580014853XA CN 200580014853 A CN200580014853 A CN 200580014853A CN 101124539 A CN101124539 A CN 101124539A
- Authority
- CN
- China
- Prior art keywords
- instruction
- instruction word
- register file
- data
- ins
- 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
- 238000000034 method Methods 0.000 claims abstract description 29
- 238000012545 processing Methods 0.000 claims abstract description 10
- 230000000977 initiatory effect Effects 0.000 claims description 33
- 230000008859 change Effects 0.000 claims description 17
- 238000004891 communication Methods 0.000 claims description 11
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 2
- 239000012141 concentrate Substances 0.000 claims 1
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000004224 protection Effects 0.000 description 11
- 238000005516 engineering process Methods 0.000 description 10
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 230000007704 transition Effects 0.000 description 7
- 230000006870 function Effects 0.000 description 6
- 230000006641 stabilisation Effects 0.000 description 6
- 238000011105 stabilization Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000013507 mapping Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000001483 mobilizing effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011079 streamline operation Methods 0.000 description 1
- 230000003319 supportive effect Effects 0.000 description 1
- 238000013519 translation Methods 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- 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/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30156—Special purpose encoding of instructions, e.g. Gray coding
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
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
一种使用被安排来并行地执行多个指令的时间稳定的多指令字处理设备来处理数据的方法,所述方法包括下列步骤:生成一个多指令字集(INS(i),INS(i+1),INS(i+2)),其中每一个多指令字包括多个指令字段,其中每一个指令字段对用于该处理设备的相应资源的控制信息进行编码,并且其中与空操作指令相关的指令字段,以及相邻多指令字的相应指令字段之间的位改变被减到最少;在寄存器堆(RF0,F1)中存储输入数据;基于从多指令字集获得的控制信息处理从该寄存器堆中检索的数据;使用第一专用空操作代码(ws00,ws10,wp00,wp10)在空操作指令的执行期间禁止将结果数据回写该寄存器堆。
Description
技术领域
本发明涉及一种用于使用时间稳定的多指令字处理设备来处理数据的方法,以及一种执行所述用于处理数据的方法的时间稳定的多指令字数据处理设备。本发明还涉及一种用于生成二进制程序代码形式的多指令字集的方法,以及一种使用所述用于生成多指令字集的方法的编译器程序产品。
背景技术
可编程处理器可以是通用处理器或者专用的指令集处理器。它们可以用于处理不同类型的信息,包括声音、图像和视频。如果是专用的指令集处理器,处理器体系结构和指令集是定制的,这就显著地降低了系统的成本和功耗。处理器的体系结构通常由固定数据通路组成,该固定数据通路受控制字集的控制。每一个控制字控制数据通路的部分,这些部分可以包括寄存器地址和用于算术逻辑单元(ALU)或其它功能单元的操作代码。通常借助于把指令的二进制格式翻译成相应的控制字的指令解码器,或者借助于微存储器,也就是直接包含控制字的存储器,每一指令集生成一新的控制字集。典型的是,控制字表示像RISC的操作,包括操作代码、两个操作数寄存器索引和结果寄存器索引。操作数寄存器索引和结果寄存器索引引用寄存器堆中的寄存器。
要是超长指令字(Very Large Instruction Word)(VLIW)处理器,多个指令就被封装成一个长的指令,所谓的VLIW指令。VLIW处理器使用多个、独立的功能单元来并行地执行所述多个指令。该处理器允许在程序中采用指令级的并行性,因此允许一次执行一个以上的指令。由于这种并行处理的形式,处理器的性能得到改善。为了使软件程序在VLIW处理器上运行,它必须翻译成VLIW指令集。编译器试图通过优化并行性而使执行程序所需的时间减到最少。编译器在分配给单个VLIW指令的指令可以并行执行的约束以及数据相关性的约束下,将指令结合成VLIW指令。如果对于一个或者更多的功能单元来说没有任何有意义的处理能够在一定时钟周期里内发生,所谓的空操作(NOP)指令就在用于该特定的功能单元的VLIW指令中加以编码。为了减小代码长度,并因而在要求的存储器大小和要求的存储器带宽方面节省成本,在数据稳定的VLIW处理器中空操作(NOP)指令的紧凑表示可以使用,例如,该NOP操作通过附在VLIW指令的前端的特殊首部中的一位加以编码,导致压缩的VLIW指令。
为了控制处理器的数据流水线中的操作,两种不同的机制普遍地用在计算机体系结构中:数据稳定的和时间稳定的编码,正如在1997年3月,IEEE的会议录,第85卷,第3期,G.Goossens、J.van Praet、D.Lanneer、W.Geurts、A.Kifli、C.Liem和P.Paulin的,“Embedded software in real-time signal processingsystems:design technologies”中公开的那样。要是数据稳定的编码,使处理器的指令集的一部分的每一个指令控制必须在具体数据项遍历(traversing)数据流水线时在它上面执行的一完整操作序列。一旦指令已经从程序读取并被解码,处理器控制器硬件就将确保组成操作在正确的机器周期中执行。要是时间稳定的编码,使处理器的指令集的一部分的每一个指令控制必须在单个的机器周期中执行的一完整的操作集。这些操作可以应用于遍历数据流水线的几个不同的数据项。在该情况下设置和维护数据流水线是程序员或编译器的职责。在机器代码程序中结果的流水线时间表是完全可见。时间稳定的编码经常用在专用的处理器中,因为它以更大的代码长度为代价,节省了为延迟存在于指令中的控制信息所需的硬件开销。
可编程的处理器,例如VLIW处理器,在NOP指令的执行期间可能仍然无谓地消耗功率。和NOP指令相关的问题特别地存在于平行处理器中,每当这些并行处理器需要执行比较小的并行代码的时候,例如控制占优势的代码。特别是在高度并行的VLIW处理器的情况下,这在代码中导致大量NOP指令,并因而导致在NOP指令的执行期间的不必要的功率消耗。传统上,NOP指令是使用处理设备认可的专用值来进行编码的,并不导致处理设备的状态改变。但是,由于NOP指令的默认代码显然必须不同于有用的指令的,在有用的指令之后或之前,这样对NOP指令进行编码导致在NOP指令的执行期间的信号跃迁以及因之的不必要的功率消耗。为了降低在NOP指令的执行期间的功率消耗,可以使用一种称为时钟门控的技术,该技术关闭没使用的处理器数据通道的部分。时钟门控的使用不仅降低了未使用的顺序逻辑浪费的功率量,而且被时钟门禁用的(流水线)寄存器还将防止信号跃迁波动到未使用的组合逻辑,并因而进一步地防止了不必要的功率消耗。然而,后者通过存在的(流水线)寄存器的数量和这些寄存器的确切位置而得到很好的确定。低功率的处理器理想的是具有不深的流水线,以避免需要解决不利的流水线效应,例如长分支等待时间,所要求的附加的耗电硬件。后者特别适用于计算效率至关紧要的处理器,因为这些处理器常常高度并行,即具有许多发起槽(issue slot),并且创建深的流水线会在每一个发起槽中加入相当大的硬件开销。出于使硬件的数量减到最少的原因,这些高度并行的处理器常常使用时间稳定的指令编码,以使得根据单个高度并行的指令来操纵大量的硬件资源而不用陷入主指令读取和解码的瓶颈成为可能。
US6,535,984描述了一种基于所谓的代理NOP指令的使用的,用于VLIW处理器的功率降低的技术。通过以VLIW处理器的相同发起槽的相邻非NOP指令来代替NOP指令,并同时使代替的指令的保护信息等于假,以便解码电路不发送任何执行/使能信号给特定的功能单元,由NOP指令引起的信号跃迁的数目得到降低。这些带着假保护信息的代替的指令叫做代理NOP指令。所述技术依赖于数据稳定的指令编码被使用的事实,其中,与一指令相关的所有信息都编码在单个处理器周期中发起的单个VLIW指令的原子部分中。而且,这种技术假定该VLIW处理器中的每一个发起槽都支持保护(guarding)。此外,该技术假定由该VLIW处理器中任何一个发起槽支持的每个操作都可以得到保护,即是有条件的。然而,这种技术不适合于时间稳定的VLIW处理器。首先,在时间稳定的编码中,与单个指令相关的信息典型的是散布在不同周期中发起的几个VLIW指令中,这意味着对应单个指令的关于NOP指令的信息散布在多个VLIW指令中。第二,用于时间稳定的处理器的指令常常不将操作编码成原子实体。作为替代的是,控制信息被编码以直接操作处理器资源,例如功能单元、寄存器堆、总线多路复用器等等。“抽象的”指令信息与实际资源操纵的这种去耦,允许诸如多信道广播此类的技术,其中单个操作的结果可以在单个处理器周期中随意地写入多个寄存器堆。例如,在数据稳定的编码中,回写信息,即将结果的数据回写到寄存器堆中的控制信息,通常是按操作结果编码在分离的指令字段中。在该情况下每一个字段都包含一指定其中应当写入相应结果的寄存器的目的地寄存器地址。在相同的结果要写入多个寄存器堆的情况下,要按操作结果编码在多个字段中的多个目的地寄存器地址应当是必需的。这通常不是以数据稳定的指令格式来支持的,因为没有任何有效编码存在,特别是如果正接收相同结果的目的地的数目可以变化。可供选择的是,分离的指令需要加到程序中以明确地将结果拷贝到其它寄存器堆。时间稳定的编码允许使用分离的字段来按寄存器堆写端口对回写信息进行编码,而不是按操作结果。因此,我们可以按寄存器堆写端口来指定应当选择哪一个操作结果来写入该寄存器堆,而不是按操作结果来指定结果应当写入哪一个寄存器堆。用这个概念,相同的结果可以在单个周期中写入任意数目的寄存器堆,而不影响必需的指令字段的数目。作为这种去耦的结果,时间稳定的指令中相同的字段可以携带相应于在不同时钟周期在不同发起槽上执行的操作的信息。在周期i+2(i=0,1,2……)发起的指令中给定的寄存器堆写端口字段可以选择由第一发起槽产生的结果作为两个周期前在周期i中发起的指令的结果,而在周期i+3发起的下一个指令中它可以选择由第二发起槽产生的结果作为在一个周期前在周期i+2中发起的指令的结果。因此,我们不能按对属于单个完整NOP操作的所有控制信息进行编码的指令来标识单个指令位群。
因此这种方法不能用于时间稳定的处理器,是现有降低VLIW处理器的功率用量的方法的缺点。
发明内容
本发明的一个目的是提供一种用于使用时间稳定的多指令字处理器来处理数据的方法,该方法在维持指令的有效编码和解码的同时,降低了NOP指令的执行期间的功耗。
这个目的是以一种用于使用被安排为并行地执行多个指令的时间稳定的多指令字处理设备来处理数据的方法来实现的,所述方法包括下列步骤:生成一个多指令字集,其中每一个多指令字包括多个指令字段,其中每一个指令字段对用于该处理设备的相应资源的控制信息进行编码,并且其中与空操作指令相关的指令字段以及相邻多指令字的相应指令字段之间的位改变被减到最少;在寄存器堆中存储输入数据;基于从多指令字集获得的控制信息处理从该寄存器堆中检索的数据;使用第一专用空操作代码在空操作指令的执行期间禁止将结果数据回写该寄存器堆。该指令字段是以这样的方式来加以编码的,如果与NOP指令相关的控制信息被编码,用于编码这些NOP指令字段的值就尽可能地与相邻多指令字的相应字段重复。结果,该处理设备中相应的组合逻辑会携带与在前面的或随后的周期中的相同的值,因而出现比较小的数据跃迁的波动,因此出现比较小的不必要的功耗。为了避免在NOP操作的执行期间将结果数据回写到寄存器堆,专用的NOP代码被用来禁止结果数据的回写。因此,在NOP指令的执行期间该处理器的状态没有改变,但是功耗降低。在NOP指令的编码期间,对于一些指令字段,来自另一编码指令的值被重复,而对于其它指令字段,使用专用的值,这使得编码是高效的。至于其它任何指令,NOP指令的解码是以一致的方式来执行的。
一个根据本发明用于处理数据的方法的实施例,其特征在于本发明还包括该步骤,使用用于编码操作码的第二专用空操作代码来进一步防止在空操作指令的执行期间处理设备的状态改变。对于一些发起槽,在通过重复相邻多指令字的相应字段的操作码来对NOP操作码指令字段进行编码的时候,这可能在NOP操作的执行期间导致处理设备的状态改变。通过使用用于对上述操作码进行编码的专用NOP代码,可以防止这种状态改变。
一种根据本发明的用于处理数据的方法的实施例,其特征在于,在计算机程序的编译之后得到的多指令字集中,相邻多指令字与所述包括与该空操作指令相关的指令字段的多指令字相邻。使相应字段的值与相邻多指令字重复是相对容易的,仅仅需要记住在正在翻译的当前指令之前和之后的指令。直线代码形式的,即没有跳转的,NOP指令的执行期间的功耗得到降低。
一个根据本发明的用于处理数据的方法的实施例,其特征在于,正如从簿记信息(profiling information)获得的那样,在多指令集的执行期间,相邻多指令字很可能与所述包括与空操作指令相关的指令字段的多指令字相邻。使用从程序执行获得的簿记信息,在给定的程序中最经常占用的通路可以得到分析,并且可以确定在执行期间哪一个指令很可能在给定的指令之前或之后。在编码期间重复用于对在给定多指令字之前或之后的多指令字的指令字段进行编码的值,倘若与那些字段相关的控制信息没有导致处理设备的状态改变,就进一步降低了NOP指令的执行期间的功耗。
根据本发明,一种安排来执行如权利要求1所述用于处理数据的方法的处理设备,包括:为多个指令的并行执行安排的多个发起槽;可被所述多个发起槽访问的寄存器堆;用于耦合所述多个发起槽和所述寄存器堆的通信网络;被安排来基于从多指令字集获得的控制信息来控制处理设备的控制器。结果,处理设备中相应的组合逻辑会携带与之前或之后的周期中相同的值,因此比较小的数据跃迁的波动出现,因而比较小的不必要的功耗出现。因此,在NOP指令的执行期间,处理器的状态不改变,而功耗得到了降低。
该处理设备的一个实施例,其特征在于该寄存器堆是分布式寄存器堆。分布式寄存器堆的优点是按照寄存器堆段它要求比较少的读和写端口,导致在硅面积方面更小的寄存器堆。此外,在与中央寄存器堆相比的时候,在分布式寄存器堆中的寄存器要求比较少的比特。
该处理设备的一个实施例,其特征在于,该通信网络是部分连接的通信网络。在与全连接的通信网络相比的时候,部分连接的网络常常比较不时间关键(time-critical)并且就代码长度、面积和功耗来说比较不贵,特别是在大数目的执行单元的情况下。
该处理设备的一个实施例其特征在于,该处理设备是时间稳定的超长指令字处理器。时间稳定的VLIW处理器允许并行地执行多个指令,提高了操作的整体速度,同时具有相对简单的硬件。尽管这些处理器通常具有不深的流水线,通过组合逻辑的信号跃迁的波动,在NOP指令的执行期间还是得到了降低,因此功耗也在这期间得到了降低。
根据本发明,在权利要求9中要求了一种用于生成二进制程序代码形式的多指令字集的方法。该方法生成一指令集,该指令集允许在包括NOP指令的多指令字集的执行期间降低功耗,而同时对于给定的处理设备来说几乎不要求在指令解码器方面的任何硬件改变。
根据本发明,在权利要求10中要求了一种安排来使用用于生成指令集的方法来生成二进制程序代码形式的指令序列的编译器程序产品。
附图说明
图1示出了根据本发明的第一VLIW处理器的示意框图。
图2示出了可以由第一VLIW处理器来执行的多指令字集。
图3示出了根据本发明的第二VLIW处理器的示意框图。
图4示出了可以由第二VLIW处理器来执行的多指令字集。
具体实施例方式
参考图1和图3,示意性框图示出了一个VLIW处理器,包括两个发起槽IS0和IS1,以及两个寄存器堆RF0和RF1。发起槽IS0和IS1经由连接网络CN耦合到寄存器堆RF0和RF1。寄存器堆RF0和RF1都各自具有八个寄存器。发起槽IS0具有两个功能单元,运算/逻辑单元(ALU)以及乘法单元(MPU)。功能单元ALU和MPU都经由连接rp00和rp01耦合到寄存器堆RF0。功能单元ALU在内部具有零流水线级,可以执七个不同的操作:加、减、逻辑AND、逻辑OR、逻辑XOR、逻辑左移位和逻辑右移位,这些可以分别通过操作码,即操作代码,0到6来控制。功能单元MPU在内部具有一个流水线级,可以执行四个不同的操作:有符号乘下半部结果(signed multiply lower half result)、有符号乘上半部结果、无符号乘下半部结果、无符号乘上半部结果,这些是分别通过操作码7到10来控制的。寄存器堆RF0和RF1都有一个周期的等待时间,因此由功能单元ALU执行的操作的总的等待时间是一个周期,由功能单元MPU执行的操作的总的等待时间是两个周期。发起槽IS1包含一个功能单元,加载/存储单元LSU。加载存储单元LSU经由连接rp10以及rp11和rp12耦合在寄存器堆RF1上,也耦合在存储器映象装置MMIO上,其中只有在图3的情况中才经由连接rp10来耦合。功能单元ALU和MPU可以经由连接rd0和多路复用器MP0和MP1将它们的结果数据分别传给寄存器堆RF0和RF1。功能单元LSU可以经由连接rd1和多路复用器MP0和MP1将它的结果数据分别传给寄存器堆RF0和RF1。在操作中,序列发生器SEQ从程序存储器PM中检索VLIW指令字,并对这些指令字进行解码。一般而言,这些指令包括像RISC那样的操作,要求两个操作数并产生一个结果,以及可能消耗多于两个的操作数并可能产生多于一个的结果的自定义操作。一些指令可能要求立即值作为操作数数据。解码步骤的结果是写选择索引ws00和ws10,写寄存器索引wp00和wp10,读寄存器索引rp00、rp01、rp10(图3)、rp11和rp12,以及操作码opcode0和opcode1。潜在地,立即值也是从该指令中检索的,但是,这些不包括在给定的实例中,这不影响所提出的解决方案。经由序列发生器SEQ和多路复用器MP0和MP1之间的耦合,写选择索引ws00和ws11被分别提供给多路复用器MP0和MP1。写选择索引ws00和ws11被相应的多路复用器用来选择结果数据rd0和rd1的要求的输入通道,结果数据rd0和rd1必须写入寄存器堆RF0和/或RF1。序列发生器SEQ耦合在寄存器堆RF0和RF1上用于分别提供写寄存器索引wp00和wp10,以从相应寄存器堆中选择必须写入数据的寄存器。序列发生器SEQ还经由连接rp0向寄存器堆RF0提供读寄存器索引rp00和rp01,经由连接rp1向寄存器堆RF1提供读寄存器索引rp10、rp11和rp12,用于从相应的寄存器堆中选择必须从中读取用于功能单元的输入数据的寄存器。序列发生器SEQ耦合到来自发起槽IS0的操作解码器OPDEC0,用于提供操作码opcode0,并且序列发生器SEQ耦合在来自发起槽IS1的操作解码器OPDEC1上,用于提供操作码opcode1。操作解码器OPDEC0和OPDEC1解码它们各自的操作码。操作解码器OPDEC0分别向功能单元ALU和功能单元MPU提供单元选择信号sel00和sel01。操作解码器OPDEC0也分别向功能单元ALU和功能单元MPU提供操作语义opsem00和opsem01。单元选择信号sel00和sel01被分别用来激活功能单元ALU和功能单元MPU,如果该功能单元必须执行一操作的话。在读寄存器索引rp00和rp01的控制下,如果可用,从寄存器堆RF0中检索操作数,并经由连接rp0提供给该寄存器堆。单元选择信号sel00和sel01是从操作代码opcode0的值获得的。如果操作代码opcode0指示一个要由功能单元ALU执行的操作,单元选择信号sel00就被设置为真,否则设置为假。如果操作代码opcode0指示一个要由功能单元MPU执行的操作,单元选择信号sel01就被设置为真,否则设置为假。操作语义opsem00和opsem01指示必须由相应功能单元ALU和MPU执行的操作的类型。单元选择信号sel00被AND门101与输出的有效索引ov00进行AND操作,而结果信号被AND门103与结果数据rd00,即由功能元件ALU产生的结果数据进行AND操作。单元选择信号sel01根据功能单元MPU的流水线深度而加以延迟,即被寄存器105延迟。经延迟的单元选择信号sel01被AND门107与输出有效索引ov01进行AND操作,并且结果信号被AND门109与结果数据rd01,即由功能单元MPU产生的结果数据进行AND操作。AND门103和109的输出信号由OR门111加以OR。如果相应的结果数据rd00和rd01是有效的输出数据,输出有效索引ov00和ov01就为真,否则它们就为假。如果功能单元ALU被选择来执行操作,单元选择信号sel00就设置为真,而单元选择信号sel01设置为假。如果输出有效索引ov00被功能单元ALU设置为真,结果数据rd00就被OR门111输出作为结果数据rd0。如果功能单元MPU被选择来执行操作,单元选择信号sel00就设置为假,而单元选择信号sel01设置为等于真。如果输出有效索引ov01被功能单元MPU设置为真,结果数据rd01就被OR门111输出作为结果数据rd0。通过解码操作代码opcode1,操作解码器OPDEC1提供单元选择信号sel10以及操作语义opsem10。单元选择信号sel10是从操作代码opcode1的值获得的。操作语义opsem10指示必须由功能单元LSU执行的操作的类型。操作数数据,如果有的话,在读寄存器索引rp10、rp11和rp12的控制下,从寄存器堆RF1中检索。功能单元LSU支持两种操作,即分别由操作代码opcode1的值0和1指示的加载操作和存储操作。功能单元LSU通过发送命令mmio_cmd到MMIO装置来控制存储器映象的I/O装置MMIO,MMIO的有效性是通过有效信号mmio_valid来指示的。命令mmio_cmd包括指示必须在MMIO装置上执行的是读还是写的标志,其中在功能单元LSU的加载操作的情况中是读,在功能单元LSU的存储操作的情况中是写。命令mmio_cmd还包含存储器地址,并且在写命令的情况下包含要写的数据。如果读命令被发起,MMIO装置就将数据mmio_rdata返回功能单元LSU。该MMIO装置可以是任何支持基于存储器映像的I/O的数据通信和/或存储的装置。这些包括具有存储器映象式数据存储位置或控制/状态/IO寄存器的普通的存储器、FIFO、以及外围装置。功能单元LSU在执行一操作的第一个周期中向MMIO装置发送命令,并期望数据,在加载操作的情况中,在第三个周期中回来。在由功能单元LSU执行的加载操作的情况中,有效结果数据rd1会在加载操作执行两个周期之后输出。作为上述加载操作的结果,这些结果数据rd1会是从MMIO装置读取的数据。在由功能单元LSU执行的存储操作的情况中,没有任何有效结果数据rd1输出。结果数据rd0和rd1,例如可以是32位的值,可以在写选择索引ws00和ws10以及写寄存器索引wp00和wp10的控制下,经由连接网络CN和多路复用器MP0和MP1写入寄存器堆RF0和RF1。
参考图1,功能单元LSU也支持NOP指令。该NOP指令可以使用用于操作代码opcode1的专用,即等于三的值来选择。操作解码器OPDEC1对操作代码opcode1进行解码,在加载或存储操作的情况中,单元选择信号sel10设置为等于真,而在专用的NOP操作码的情况中,单元选择信号sel10设置为等于假。单元选择信号sel10被AND门113与mmio_valid信号进行AND操作,结果的信号被提供给MMIO装置。结果,在NOP指令的情况中,没有任何读或写命令在MMIO装置上执行。如果没有任何结果数据rd0和rd1必须写回寄存器堆RF0和RF1,写寄存器索引wp00和wp10就可以用来选择虚拟寄存器,所谓的“垃圾桶寄存器(trashcan register)”。出于这个目的,寄存器堆RF0和RF1的具有索引七的寄存器被保留为垃圾桶寄存器。
参考图3,功能单元LSU还支持被保护的(guarded)存储操作,其中第三个参数用作保护信息gu10。支持条件操作的时间稳定的多指令字处理器也在由本申请人在先提交的编号为No.03101038.2的欧洲专利申请[律师案卷号PHNL030384EPP]中描述了。保护的存储操作是通过用于操作代码opcode1的两个值来选择的。保护是通过保护使能信号ge10来控制的。在保护的存储操作的情况中,操作解码器OPDEC1将保护使能信号ge10的值设置为等于真,否则保护使能信号ge10的值设置为假。如果保护使能信号ge10等于真,保护信号gu10的值就被从寄存器堆RF1从读寄存器索引rp10引用的寄存器中读取。如果保护使能信号ge10等于假,保护信号gu10就默认地设置为真。功能单元LSU还支持NOP指令。该NOP指令可以使用用于操作代码opcode1的专用值,即等于三的值来加以选择。在操作中,操作解码器OPDEC1对操作代码opcode1进行解码,在加载、存储或保护的存储操作的情况中,单元选择信号sel10设置为等于真,而在专用的NOP操作码的情况中,单元选择信号sel10设置为等于假。单元选择信号sel10被AND门115与保护信号gu10进行AND操作。结果的信号被AND门113与mmio_valid信号进行AND操作,结果的信号被提供给MMIO装置。结果,在NOP指令的情况中,没有任何读或写命令在MMIO装置上执行。由AND门115输出的信号,也根据功能单元LSU的流水线深度而被寄存器119和121进一步延迟,并被AND门117与功能单元LSU的输出有效信号ov10进行AND操作。结果的信号由AND门117输出作为结果有效信号rv1。由AND门101和107输出的信号由OR门123来进行OR操作。OR门123输出结果的信号作为结果有效信号rv0。例如,结果有效信号rv0和rv1可以是一位的值。写选择索引ws00和ws10也被相应的多路复用器MP0和MP1用来选择结果有效信号rv0或rv1。如果结果数据通道rd0或rd1被多路复用器MP0和MP1选择,相应于所选择的结果数据通道的结果有效信号rv0或rv1就被用于设置写使能信号we0或we1,用于对将结果数据写入寄存器堆的控制。如果多路复用器MP0和MP1已选择相应于结果数据rd0的输入通道,结果有效信号rv0的值就被用于设置相应于该多路复用器的写使能信号,而在相应于结果数据rd1的输入通道被选择的时候,结果有效信号rv1的值就被用于设置相应的写使能信号。如果结果有效信号rv0或rv1为真,适当的写使能信号we0或we1就被相应的多路复用器MP0和MP1设置为真。如果写使能信号we0或we1等于真,结果数据rd0或rd1就分别通过写数据wd0和wd1写入寄存器堆RF0或RF1,在通过相应于该寄存器堆的写寄存器索引wp00和wp10选择的寄存器中。如果写使能信号we0或we1设置为假,那么尽管已经通过相应的写选择索引ws00或ws10选择了用于将结结果数据rd0或rd1写入相应的寄存器堆RF0或RF1的输入通道,还是没有任何数据会写入该寄存器堆。写选择索引ws00和ws10可以用来选择默认的输入通道125。如果该默认的输入通道125是通过写选择索引ws00或ws10选择的,相应的写使能信号we0或we1就默认地设置为假,因此没有任何结果数据写回到相应的寄存器堆。使用保护信号gu10,对于时间稳定的VLIW处理器,结果数据有条件的回写得到允许。确定保护信号的值是例如通过在功能单元ALU上执行指令来计算的,并且该结果储存在寄存器堆RF1中。在功能单元LSU上执行保护的存储操作,并且保护信号gu10等于真的时候,AND门113输出等于真的mmio_valid信号到MMIO装置,并且该存储命令是通过MMIO装置来执行的。如果保护信号gu10等于假,就没有任何存储命令由MMIO装置来执行,因为AND门113输出等于假的信号。如果保护信号gu10等于假,结果有效信号rv1就也设置为假,这意味着结果数据rd1到寄存器堆的回写也被禁止。
在下面示出了汇编代码形式的小程序段,该程序段要由根据图1的VLIW处理器执行,并包括指令INS(i)、INS(i+1)以及INS(i+2)。
INS(i){
alu.and(RF0[2],RF0[3]);/*在功能单元ALU上执行逻辑AND,将在RF0的寄存器2和3中存储的值作为参数*/
RF1[1]=alu.op00;/*在RF1的寄存器1中写入功能单元ALU的逻辑AND操作的结果*/
lsu.load_0(RE1[5]);/*通过功能单元LSU,‘加载’位于RF1的寄存器5中存储的存储器映象地址上的数据*/
}
INS(i+1){
alu.sub(RF0[0],RF0[3]);/*通过功能单元ALU,从RF0的寄存器0中的值减去RF0的寄存器3中的值*/
RF0[6]=alu.op00;/*在RF0的寄存器6中通过功能单元ALU写入减法的结果*/
lsu.store_0(RF1[4],RF1[5]);/*通过功能单元LSU,在RF1的寄存器4中存储的存储器映象地址上存储RF1的寄存器5中的值*/
}
INS(i+2){
RF1[2]=lsu.load_2.op10;/*在RF1的寄存器2中存储由功能单元LSU加载的数据*/
}
包括指令的时间稳定的信息,在卷曲花括号中指定,并用分号分开了。用于特定资源的信息,例如用于特定功能单元的操作码或用于功能单元的输入值的选择的不存在,意味着用于这个特定资源的NOP代码。该编译器假定为明确地调度操作的每一流水线级。在该程序段中操作的流水线数目n是通过‘_n’后缀来指示的,例如参见load_0和load_2。在给定的实例中,加载指令的第二流水线级(load_1)没有出现,既然对于这个流水线级不需要任何控制信息,因为在这个级中没有参数被取样,没有结果产生或没有操作码被选择。用于这个程序段的二进制编码的实施例在图2中显示了。在图2中,以二进制的格式,显示了三个指令字INS(i)、INS(i+1)以及INS(i+2)。该VLIW指令字的第一指令字段对用于包含功能单元ALU和MPU的发起槽IS0的操作码opcode0进行编码,第二指令字段对用于包含功能单元LSU的发起槽IS1的操作码opcode1进行编码,第三和第四指令字段分别对写选择索引ws00和ws10进行编码。第五和第六指令字段分别对写寄存器索引wp00和wp10进行编码。第七至第十指令字段分别对读寄存器索引rp00、rp01、rp11和rp12进行编码。该指令字中灰色字段指示NOP信息被编码。在将汇编码形式的程序段翻译成图2中所示的二进制编码的期间,为了在取和执行与NOP指令相关的控制信息的时候最小化位变化,在与NOP指令相关的控制信息的情况中,在相应字段中的NOP代码就是在前的VLIW指令字的相应字段的重复。例如,在对INS(i+2)的读寄存器索引rp00进行编码的字段中NOP代码的二进制编码是INS(i+1)的相同字段中的东西的重复,并且相同的适用于INS(i+2)中与读寄存器索引rp00、rp01、rp11和rp12相关的字段,它们是来自INS(i+1)的相应字段的重复。然而,对于对写寄存器索引wp00和wp10进行编码的字段来说,专用的NOP代码是所需的,以便在NOP指令的执行期间禁止结果数据rd0和rd1到寄存器堆RF0和RF1的回写。如果结果数据的回写不能禁止,作为NOP指令的执行结果VLIW处理器的状态就可能改变,也就是寄存器的内容可能无意地改变。因此,在NOP指令的情况中,对写寄存器索引wp00和wp10进行编码的字段是使用指向垃圾桶寄存器的值‘111’来加以编码的,该垃圾桶寄存器也就是寄存器堆的虚拟寄存器,如同所示的那样,例如,在与INS(i+2)中的写寄存器索引wp00相关的字段以及与INS(i+1)中的写寄存器索引wp10相关的字段中。此外,对于对用于包含功能单元LSU的发起槽IS1的操作代码opcode1进行编码的字段来说,专用的NOP代码也是必需的,在NOP指令的情况中,以便防止VILIW处理器的状态改变。例如,加载操作会改变FIFO缓冲器的内容,FIFO缓冲器可以通过从该缓冲器提取和除去数据而用于处理器的I/O。加载操作也可以通过当无意的加载在该高速缓存中导致未击中时引起数据块的无意的提取,改变可能存在的数据高速缓存的内容。因此,在NOP指令的情况中,对用于包含功能单元LSU的发起槽IS1的操作代码opcode1进行编码的字段是使用专用的NOP操作码来加以编码的,也就是,对于在与INS(i+2)中操作码字段IS1相关的字段中所示的实例来说,是值三。包含功能单元ALU和MPU的发起槽IS0不需要用于对NOP操作码进行编码的专用NOP代码,因为在重复在前的指令字的编码的时候,不存在改变VLIW处理器的状态的风险。因此,在与INS(i+2)中操作码字段IS0相关的字段中,NOP操作码是INS(i+1)的相应字段中操作码的重复。
在下面示出了汇编码形式的小程序段,该程序段要由根据图3的VLIW处理器执行,并包括指令INS(i)、INS(i+1)以及INS(i+2)。
INS(i){
alu.and(RF0[2],RF0[3]);/*在功能单元ALU上执行逻辑AND,将在RF0的寄存器2和3作为参数*/
RF1[1]=alu.op00;/*在RF1的寄存器1中写入功能单元ALU的逻辑AND操作的结果*/
lsu.load_0(RF1[5]);/*通过功能单元LSU,‘加载’位于RF1的寄存器5中存储的存储器映象地址上的数据*/
}
INS(i+1){
alu.sub(RF0[0],RF0[3]);/*从RF0的寄存器0中的值减去RF0的寄存器3中的值*/
RF0[6]=alu.op00;/*在RF0的寄存器6中写入功能单元ALU的减法的结果*/
if(RF1[7])
lsu.store_0(RF1[4],RF1[5]);/*如果在RF1的寄存器7中的值不是零,那么就通过功能单元LSU,在RF1的寄存器4中存储的存储器映象地址上存储RF1的寄存器5中的值*/
}
INS(i+2){
RF1[2]=1su.load_ 2.op10;/*在RF1的寄存器2中存储由功能单元LSU加载的数据*/
}
用于特定资源的信息,例如用于特定功能单元的操作码或用于功能单元的输入值的选择的不存在,意味着用于这个特定资源的NOP代码。该编译器假定为明确地调度操作的每一流水线级,以便防止任何可能在不同的操作之间发生的资源冲突,并且在该程序段中操作的流水线数目n是通过‘_n’后缀来指示的。用于这个程序段的二进制编码的实例如图4所示。在图4中,以二进制的格式,显示了三个指令字INS(i)、INS(i+1)以及INS(i+2)。该指令字的第一指令字段对用于包含功能单元ALU和MPU的发起槽IS0的操作码opcode0进行编码,第二指令字段对用于包含功能单元LSU的发起槽IS1的操作码opcode1进行编码,第三和第四指令字段分别对写选择索引ws00和ws10进行编码。第五和第六指令字段分别对写寄存器索引wp00和wp10进行编码。第七至第十一指令字段分别对读寄存器索引rp00、rp01、rp11和rp12进行编码。该指令字中灰色字段指示NOP信息被编码。在将汇编码形式的程序段翻译成图3中所示的二进制编码的期间,为了在执行与NOP指令相关的控制信息的时候最小化位变化,在控制信息与NOP指令相关的情况中,在相应字段中的NOP代码就是在前的VLIW指令字的相应字段的重复。例如,在对INS(i+1)的写寄存器索引wp10进行编码的字段中NOP代码的二进制编码是INS(i)的相同字段中的东西的重复。同样,INS(i+2)中与读寄存器索引rp00、rp01、rp10、rp11和rp12相关的字段都是根据INS(i+1)的相应字段重复的。然而,对于对写选择索引ws00和ws10进行编码的字段来说,需要专用的NOP代码,以便在NOP指令的执行期间禁止结果数据rd0和rd1到寄存器堆RF0和RF1的回写。如果结果数据的回写不能禁止,作为NOP指令的执行结果,VLIW处理器的状态就可能改变。因此,在NOP指令的情况中,对相应的写选择索引ws00和ws10进行编码的字段是使用指向输入通道125的值‘11’来加以编码的,输入通道125默认地将相应的写使能信号we0和we1设置为假,参见例如,与INS(i+2)中的写寄存器索引ws00相关的字段以及与INS(i+1)中的写寄存器索引ws10相关的字段。此外,对于对用于包含功能单元LSU的发起槽IS1的操作代码opcode1进行编码的字段来说,专用的NOP代码也是必需的,在NOP指令的情况中,以便防止VLIW处理器的状态改变。因此,对用于在INS(i+2)中的发起槽IS1的操作代码opcode1进行编码的字段是使用专用的NOP操作码,即值三来加以编码的。功能单元ALU不需要专用NOP代码,在INS(i+2)中NOP操作码是INS(i+1)的相应字段中操作码的重复。
参考图2和4,在执行与NOP指令相关的控制信息的时候,位改变的数目得到最小化。结果,在相应的处理器中更多的组合逻辑将携带与在前周期中相同的值,因此更小的数据跃迁波动出现,因而发生更小的功率浪费。
在替换实施例中,在对与NOP指令相关的控制信息进行编码的时候,相应字段中NOP代码是随后的指令字的相应字段的重复。例如,参考图2,在该情况下在对INS(i)的读寄存器索引rp12进行编码的字段中NOP代码的二进制编码是INS(i+1)的相同字段中东西的重复,即值‘101’,而不是图2中所指示的‘000’。
在将编译的或人工写的汇编程序翻译成二进制程序代码的时候,汇编器记住在正在翻译的当前多指令字之前和/或之后的多指令字。在翻译当前指令的同时,汇编器可以重复相应的为之前或之后的多指令字的字段编码的值,只要NOP代码必须为当前指令的给定字段而加以编码。可替换地,对于具有更深的流水线操作的发起槽来说,专用的NOP操作码值可以被编码而不是重复为相邻多指令字的相应字段编码的值。特别是在具有更深流水线的发起槽的情况中,专用的NOP操作码可以用来控制流水线级的时钟门控,以节省顺序逻辑中的功率并同时获得数据门控。对于没有任何流水线或不深的流水线的发起槽来说,NOP代码的编码可以通过重复为相邻多指令字的相应字段而加以编码的值来完成。在更进一步的替换实施例中,NOP代码的编码可以通过重复为实际执行期间最可能在正在翻译的当前多指令字之前或之后的多指令字的相应字段而加以编码的值来完成。例如,最可能在之前或随后的指令可以从簿记信息获得。
在另一实施例,通信网络CN可以是部分连接的通信网络,即不是每一个发起槽IS0和IS1都耦合在所有寄存器堆RF0和RF1上。在发起槽的数量很大的情况中,全连接的通信网络的开销在硅面积、延迟和功耗方面是相当可观的。在VLIW处理器的设计期间决定功能单元在什么程度上耦合在寄存器堆上,这取决于必须执行的应用的范围。
在另一个实施例中,该处理器包括单个寄存器堆,而不是包括寄存器堆RF0和RF1的分布式寄存器堆。如果VLIW处理器的发起槽的数目相对比较小,单个寄存器堆的开销也就相对比较小。
在另一个实施例中,VLIW处理器可以具有不同数目的发起槽和/或发起槽可以包括不同数目的功能单元。其中,功能单元的数目取决于VLIW处理器必须执行的应用的类型。该处理器也可以具有不同数目的连接到所述发起槽的寄存器堆。
在另一实施例中,发起槽IS0和IS1可以具有不同数目的输入和/或输出端口,这取决于该发起槽必须执行的操作的类型,也就是要求两个以上操作数和/或产生一个以上结果的操作。寄存器堆RF0和RF1也可以具有不同数目的读和/或写端口。
应当指出上述实施例说明而不是限制本发明,本领域的技术人员应当能够在不偏离所附权利要求的范围的情况下设计许多替换实施例。在权利要求中,任何在括号中放置的参考符号都不应当理解为限制该权利要求。词“包括”不排除除了在权利要求中列出的那些之外的元素或步骤的存在。在元素之前的词“一(a)”或“一个(an)”并不排除多个上述元素的存在。在列举几个装置的设备权利要求中,这些装置中几个可以通过同一个硬件项目来加以实施。仅仅某些措施在互不相同的从属权利要求中引用的事实并不表明这些措施的结合不能用来提供良好效果。
Claims (10)
1.一种使用被安排来并行地执行多个指令的时间稳定的多指令字处理设备来处理数据的方法,所述方法包括下列步骤:
生成一个多指令字集(INS(i),INS(i+1),INS(i+2)),其中每一个多指令字包括多个指令字段,其中每一个指令字段对用于该处理设备的相应资源的控制信息进行编码,并且其中与空操作指令相关的指令字段以及相邻多指令字的相应指令字段之间的位改变被减到最少;
在寄存器堆(RF0,RF1)中存储输入数据;
基于从该多指令字集获得的控制信息处理从该寄存器堆中检索的数据;
使用第一专用空操作代码(ws00,ws10,wp00,wp10)在空操作指令的执行期间禁止将结果数据回写到该寄存器堆。
2.如权利要求1所述用于处理数据的方法,其特征在于该方法还包括:
使用用于编码操作码的第二专用空操作代码来进一步防止在空操作指令的执行期间处理设备的状态改变。
3.如权利要求1所述用于处理数据的方法,其特征在于,在计算机程序的编译之后得到的多指令字集中,所述相邻多指令字与所述包括与该空操作指令相关的指令字段的多指令字相邻。
4.如权利要求1所述用于处理数据的方法,其特征在于,正如从簿记信息获得的那样,在多指令字集的执行期间,相邻多指令字很可能与所述包括与空操作指令相关的指令字段的多指令字相邻。
5.一种安排来执行如权利要求1所述用于处理数据的方法的处理设备,包括:
被安排用于并行执行多个指令的多个发起槽(IS0,IS1);
可被所述多个发起槽访问的寄存器堆(RF0,RF1);
用于耦合所述多个发起槽和所述寄存器堆的通信网络(CN);
被安排来基于从多指令字集获得的控制信息来控制处理设备的控制器(SEQ,OPDEC0,OPDEC1)。
6.如权利要求5所述的处理设备,其特征在于,该寄存器堆是分布式寄存器堆。
7.如权利要求5所述的处理设备,其特征在于,该通信网络是部分连接的通信网络。
8.如权利要求5所述的处理设备,其特征在于,该处理设备是时间稳定的超长指令字处理器。
9.一种用于根据相应汇编语言形式的多指令字集生成二进制程序代码形式的多指令字集(INS(i),INS(i+1),INS(i+2))的方法,其中每一个多指令字包括多个指令字段,并且其中多指令字集将被时间稳定的处理设备执行,该处理设备具有多个发起槽(IS0,IS1)以及耦合到所述多个发起槽的寄存器堆(RF0,RF1),所述方法包括下列步骤:
在所述多指令字集中定序,
确定对于相同指令字段是否存在从指令到空操作指令的改变,
将与空操作指令相关的指令字段与相邻多指令字的相应指令字段之间的位改变减到最少,
在该空操作指令的二进制程序代码中插入第一专用NOP代码(ws00,ws10,wp00,wp10),以便在空操作指令的执行期间禁止将结果数据回写到该寄存器堆。
10.一种安排来使用如权利要求9所述的方法来生成二进制程序代码形式的指令序列的编译器程序产品。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04102104 | 2004-05-13 | ||
EP04102104.9 | 2004-05-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101124539A true CN101124539A (zh) | 2008-02-13 |
Family
ID=34967368
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA200580014853XA Pending CN101124539A (zh) | 2004-05-13 | 2005-05-09 | 低功率汇编器 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9201657B2 (zh) |
EP (1) | EP1754143A2 (zh) |
JP (1) | JP5122277B2 (zh) |
CN (1) | CN101124539A (zh) |
WO (1) | WO2005111792A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681822A (zh) * | 2011-03-17 | 2012-09-19 | 中兴通讯股份有限公司 | 一种处理器地址缓冲管理的实现装置及方法 |
CN102681821A (zh) * | 2011-12-31 | 2012-09-19 | 浙江大学 | 基于C-SKY v2指令集的二进制工具集设计方法 |
CN114489792A (zh) * | 2021-03-25 | 2022-05-13 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11307791B2 (en) * | 2019-05-24 | 2022-04-19 | Texas Instruments Incorporated | Quick clearing of registers |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2815236B2 (ja) * | 1993-12-15 | 1998-10-27 | シリコン・グラフィックス・インコーポレーテッド | スーパースカーラマイクロプロセッサのための命令ディスパッチ方法及びレジスタ競合についてのチェック方法 |
JP3442225B2 (ja) * | 1996-07-11 | 2003-09-02 | 株式会社日立製作所 | 演算処理装置 |
EP0926596B1 (en) * | 1997-12-23 | 2007-09-05 | Texas Instruments Inc. | Processor and method for reducing its power usage |
JP2000020309A (ja) * | 1998-06-30 | 2000-01-21 | Toshiba Microelectronics Corp | デジタルシグナルプロセッサ |
US6535984B1 (en) * | 1998-11-25 | 2003-03-18 | Texas Instruments Incorporated | Power reduction for multiple-instruction-word processors with proxy NOP instructions |
JP3211791B2 (ja) * | 1998-12-22 | 2001-09-25 | 日本電気株式会社 | ループ処理方式 |
JP2001005675A (ja) * | 1999-06-21 | 2001-01-12 | Matsushita Electric Ind Co Ltd | プログラム変換装置及びプロセッサ |
GB2378538A (en) * | 2001-08-10 | 2003-02-12 | At & T Lab Cambridge Ltd | Saving power in a pipelined processor/memory system by replacing discarded instructions following a branch by a duplicate of the branch instruction |
US20070063745A1 (en) * | 2003-04-16 | 2007-03-22 | Koninklijke Philips Electronics N.V. | Support for conditional operations in time-stationary processors |
-
2005
- 2005-05-09 JP JP2007512674A patent/JP5122277B2/ja not_active Expired - Fee Related
- 2005-05-09 WO PCT/IB2005/051491 patent/WO2005111792A2/en active Application Filing
- 2005-05-09 EP EP05739752A patent/EP1754143A2/en not_active Withdrawn
- 2005-05-09 CN CNA200580014853XA patent/CN101124539A/zh active Pending
- 2005-05-09 US US11/568,714 patent/US9201657B2/en not_active Expired - Fee Related
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102681822A (zh) * | 2011-03-17 | 2012-09-19 | 中兴通讯股份有限公司 | 一种处理器地址缓冲管理的实现装置及方法 |
CN102681822B (zh) * | 2011-03-17 | 2016-06-15 | 中兴通讯股份有限公司 | 一种处理器地址缓冲管理的实现装置及方法 |
US9389859B2 (en) | 2011-03-17 | 2016-07-12 | Zte Corporation | Device and method for implementing address buffer management of processor |
CN102681821A (zh) * | 2011-12-31 | 2012-09-19 | 浙江大学 | 基于C-SKY v2指令集的二进制工具集设计方法 |
CN102681821B (zh) * | 2011-12-31 | 2014-07-30 | 浙江大学 | 基于C-SKY v2指令集的二进制工具集设计方法 |
CN114489792A (zh) * | 2021-03-25 | 2022-05-13 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法 |
CN114489792B (zh) * | 2021-03-25 | 2022-10-11 | 沐曦集成电路(上海)有限公司 | 处理器装置及其指令执行方法 |
Also Published As
Publication number | Publication date |
---|---|
EP1754143A2 (en) | 2007-02-21 |
JP2007537528A (ja) | 2007-12-20 |
WO2005111792A3 (en) | 2007-08-16 |
JP5122277B2 (ja) | 2013-01-16 |
WO2005111792A2 (en) | 2005-11-24 |
US20100153691A1 (en) | 2010-06-17 |
US9201657B2 (en) | 2015-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102311619B1 (ko) | 파이프라인 제어 신호들을 발생시키도록 프로세서를 인에이블링하기 위한 방법 및 장치 | |
TW514782B (en) | System and method for reducing write traffic in processors | |
US5522053A (en) | Branch target and next instruction address calculation in a pipeline processor | |
US20130151822A1 (en) | Efficient Enqueuing of Values in SIMD Engines with Permute Unit | |
US8667476B1 (en) | Instruction grouping and ungrouping apparatus and method for an adaptive microprocessor system | |
JP2000112758A (ja) | 投機的実行中に発生する例外を遅延させるシステム及び方法 | |
US7574583B2 (en) | Processing apparatus including dedicated issue slot for loading immediate value, and processing method therefor | |
WO2002008893A1 (en) | A microprocessor having an instruction format containing explicit timing information | |
CN107810486B (zh) | 锁定用于原子地执行的指令组的操作数的值 | |
US5193156A (en) | Data processor with pipeline which disables exception processing for non-taken branches | |
US4945511A (en) | Improved pipelined processor with two stage decoder for exchanging register values for similar operand instructions | |
US20050251621A1 (en) | Method for realizing autonomous load/store by using symbolic machine code | |
CN101124539A (zh) | 低功率汇编器 | |
WO2016210023A1 (en) | Decoding information about a group of instructions including a size of the group of instructions | |
EP1360582A2 (en) | Apparatus and method for effecting changes in program control flow | |
CN101246435A (zh) | 一种支持高级语言部分语句功能的处理器指令集 | |
JP5989293B2 (ja) | 多重命令語処理装置におけるフィードバック接続の実行時間選択 | |
JP4828409B2 (ja) | タイムステーショナリプロセッサにおける条件動作のためのサポート | |
US5361338A (en) | Pipelined system for decomposing instruction into two decoding parts and either concurrently generating two operands addresses of merging decomposing decoding codes based upon the second operand | |
US5269008A (en) | Method and apparatus for pre-processing the source of a pop instruction in a pipeline computer | |
KR101099828B1 (ko) | 프로세싱 시스템, 이 프로세싱 시스템에 의해서 인스트럭션의 집합을 실행하는 vliw 프로세서, 방법 및 컴퓨터 판독가능한 저장 매체 | |
JPH063583B2 (ja) | 命令デコード・サイクル中にアドレスを生成するデジタル・コンピュータおよびその方法 | |
de Souza et al. | DTSVLIW: VLIW Performance with Sequential Code | |
Anand | Architectural Verification of Four-instruction Superscalar Processor for MIPS I Instruction Set | |
Snijders | The design and implenlentation of |
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 |