CN1685310A - 在一个超长指令字处理器中启动加载立即指令的处理的装置、方法和编译器 - Google Patents
在一个超长指令字处理器中启动加载立即指令的处理的装置、方法和编译器 Download PDFInfo
- Publication number
- CN1685310A CN1685310A CNA038226669A CN03822666A CN1685310A CN 1685310 A CN1685310 A CN 1685310A CN A038226669 A CNA038226669 A CN A038226669A CN 03822666 A CN03822666 A CN 03822666A CN 1685310 A CN1685310 A CN 1685310A
- Authority
- CN
- China
- Prior art keywords
- instruction
- issue
- group
- dedicated
- immediate value
- 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 title claims abstract description 22
- 238000012545 processing Methods 0.000 title abstract description 11
- 230000006835 compression Effects 0.000 claims description 5
- 238000007906 compression Methods 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 5
- 238000012856 packing Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 3
- 238000011079 streamline operation Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000011109 contamination Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002349 favourable effect Effects 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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, 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
Abstract
与其它不要求立即值或要求小立即值相反,如果某些操作要求超长立即值作为操作数,那么可以出现在指令的编码效率上的差别。本发明描述了一种处理装置、编译器和一种用于处理数据的方法,允许使用要求长立即数据的指令,同时维持了指令的有效编码和解码。该处理装置包括多个发布槽(UC0、UC1、UC2、UC3),其中每个发布槽包括多个功能单元(FU20、FU21、FU22)。处理装置设置为基于从并行执行的一组指令中产生的控制信号来处理数据。该处理装置进一步包括一个专用发布槽(UC4),专用发布槽设置为根据一条专用指令(IMM)来加载一个立即值(IMV1)。该立即值(IMV1)能够存储在一个专用寄存器文件(RF2)中,并且要求这个值的发布槽能够从专用寄存器文件(RF2)中重新获得该立即值。
Description
技术领域
本发明涉及一种处理装置,用于基于从并行执行的一组指令中产生的控制信号来处理数据,包括:多个发布槽(issue slot),其中每个发布槽包括多个功能单元,该多个发布槽由一组控制字控制,所述一组控制字与该组指令相对应。
本发明进一步涉及一种处理数据的方法,所述方法包括下列步骤:
-在一个寄存器文件(register file)中存储输入数据;
-使用多个发布槽,基于从并行执行的一组指令中产生的控制信号,来处理从该寄存器文件中重新得到的数据,发布槽由从该组指令中产生的一组控制字控制;
并且其中每个发布槽包括多个功能单元。
本发明进一步涉及一个指令组,包括用于由所述处理装置执行的多条指令。
本发明进一步涉及一种计算机程序,包括计算机程序代码方法,用于指示一个计算机系统执行所述方法的步骤。
本发明进一步涉及一种编译器程序产品,用于产生一序列指令组,所述指令组设置为由所述处理装置执行。
本发明进一步还涉及一种包括一系列指令组的信息载体,所述指令组设置为由所述处理装置执行。
背景技术
计算机体系结构包括一个确定的数据路径,由一组控制字进行控制。每个控制字控制该数据路径的多个部分,并且这些部分可以包括用于算术逻辑单元(ALUs)或其它功能单元的寄存器地址和操作代码。通常通过一个指令解码器或通过一个微存储器,每组指令产生新的一组控制字,指令解码器将指令的二进制格式译成相应的控制字,即一个直接包括控制字的存储器。一般地,一个控制字表示一个类RISC操作(RISC like operation),包括一个操作代码、两个操作数寄存器索引和一个结果寄存器索引。操作数寄存器索引和结果寄存器索引标引在一个寄存器文件中的寄存器。
在一个超长指令字(VLIW)处理器的情况下,多条指令打包到一条叫做VLIW指令的长指令。一个VLIW处理器使用多个、独立的功能单元来并行执行这多个指令。该处理器允许在程序中开发指令级并行操作(parallelism),并因此在同时执行超过一个的指令。为了一个软件程序运行在一个VLIW处理器中,必须将其译成一组VLIW指令。通过优化并行操作,编译器试图最小化执行该程序所需的时间。在指定给一条单独的VLIW指令的多条指令能并行执行的约束下和在数据相关性的约束下,编译器将多条指令组合成一条VLIW指令。能够以两种不同的方法,为一个数据固定(stationary)VLIW处理器或为一个时间固定VLIW处理器,分别执行多条指令的编码。在数据固定VLIW处理器的情况下,用单个VLIW指令对与给定流水线操作(pipeline ofoperation)相关的所有信息进行编码,对给定数据项来执行该给定流水线操作。在时间固定VLIW处理器的情况下,将与对给定数据项要执行的给定的流水线操作相关的所有信息分布到在多个不同的VLIW指令中的多个指令中,从而在程序中列出(exposing)所述处理器的流水线(pipeline)。
在实际的应用中,这些功能单元很少是一起有效的。因此,在一些VLIW处理器中,在每个VLIW指令中提供的指令少于所有功能单元一起需要的指令。每条指令指向一个例如由多路转换器选择的、必须有效的功能单元。这样能够节省指令存储空间,而几乎不影响性能。在这种体系结构中,在不同的时钟周期中,这些指令指向不同的功能单元。对应的控制字传递到该VLIW发布寄存器的一个相应的发布槽中。每个发布槽与一组功能单元相关联。一个特定的控制字指向该组的多个功能单元中的一个特定功能单元,该组功能单元与特定的发布槽相关联。
在一个VLIW指令中的并行指令的编码导致代码长度的急剧增长。长的代码长度导致在要求的存储器空间和要求的存储器带宽方面的程序存储器成本增长。在现代VLIW处理器中,采用不同的措施减少代码长度。一个重要的例子是在一个数据固定VLIW处理器中的空操作(NOP)操作的紧致(compact)代表,即,在一个特定的报头处由单独的位对这个NOP操作进行编码,该报头放到VLIW指令的前部,产生一个压缩的VLIW指令。
由于能够以一种比其它更为紧致(compact)的方法编码一些指令,所以在一个VLIW指令的每个指令中还仍然浪费一些指令位。例如,出现了在指令的编码效率中的差别,因为,与其它的要求没有立即值或要求小立即值相不同,某些操作要求超长立即值做为操作数。要求超长立即值的指令通常用于寄存器值的初始化。特别在具有一般大于16位的长数据路径宽度的处理器中,能够非常奢侈的使用单个指令对寄存器进行初始化。单独的编码立即值已经要求了与数据路径宽度一样多的位,并且也要求了用于编码操作码和寄存器索引的附加位。一旦对于相同的发布槽也必须编码不同的指令并且这些指令要求较少的位,那么为这个特定的发布槽获得了非常低效的指令编码。例如,这是在VLIW体系结构中具有固定的控制字宽度的情况下,由于结合了一个变化的指令宽度,所以解码过程变得缺乏效率。US5745722披露了一种执行包括立即数据的程序的装置和一种程序变换方法,该方法用于产生该装置能够执行的指令。该程序变换方法用于在将程序转换为期望的程序格式时编码立即数据,从而减少了指令代码的长度。该程序转换方法主要由编译器使用。当执行所得到的程序时,顺序获取并解码包括具有立即数据的指令的指令,使得一个执行部分执行所获取的指令。当指令解码器检测到该指令代码包括立即数据时,该立即数据传输给一个数据解码器。当编码该立即数据时,该数据解码器根据给定的规则对数据进行解码,从而产生解码的立即数据。该解码的立即数据随后传输给一个执行单元去处理。当没有编码所提供的立即数据时,数据解码器将数据原封不动地传输到执行单元。
现有技术的处理装置的缺点在于,在指令解码期间,要求一个附加的步骤用于编码后的立即数据的解码。
发明概述
本发明的一个目的是提供一种处理装置,允许使用长(large)立即值做为操作数,同时维持了指令的有效编码和解码。
使用这种提出的处理装置达到这个目的,特征在于:处理装置进一步包括一个专用发布槽,该专用发布槽设置成依靠一个包括一立即值的专用指令来加载该立即值。在根据本发明的处理装置中,不必在发送到多个发布槽的指令中编码长立即值,而是能够在发送到该专用发布槽的专用指令中对它们进行编码。因此,对应的指令宽度减少了,这样允许对那个特定的发布槽进行更有效的指令编码。由于长立即值通常仅用于初始化寄存器值,所以效率能够获得显著的提升。
根据本发明的处理装置的一个实施例,其中专用发布槽包括单个功能单元,该功能单元设置成仅执行专用指令。因此,对于该专用发布槽仅需要编码一种类型的指令,意味着不要求用于编码操作代码的位,减少了专用指令的宽度。
根据本发明的处理装置的一个实施例,其特征在于:处理装置进一步包括一个存储所述立即值的专用存储器文件,由专用发布槽访问该专用存储器文件。因此,能够减少在专用指令中要求用于编码结果数据的目标(destination)的位的数量。
根据本发明的处理装置的一个实施例,其中所述处理装置是一个VLIW处理器,并且其中所述的一组指令组合在一个VLIW指令中。一个VLIW处理器允许并行地执行多条指令,提高了操作的整体速度,同时具有相对简单的硬件。
根据本发明用于处理数据的方法,特征在于:该方法进一步包括依靠一个包括一立即值的专用指令来加载该立即数到一个专用发布槽中的步骤。该方法允许使用要求长立即值的指令,同时维持了有效的编码和解码处理。
根据本发明的一个指令组,特征在于:该指令组进一步包括一个具有一立即值的专用指令,当由一个专用发布槽执行专用指令时,使专用发布槽加载该立即值。根据本发明的指令组允许使用长立即值的操作的运行,同时不损害指令的编码和解码效率。
根据本发明的一个编译器程序产品,特征在于:多组指令的序列进一步包括一个具有一立即值的专用指令,当由一个专用发布槽执行专用指令时,使专用发布槽加载该立即值。根据本发明的编译器产生有效的编码指令,允许使用长立即值,同时维持了指令的有效解码处理。
在从属权利要求中限定了发明的优选实施例。在权利要求10中限定了一种计算机程序,用于执行根据本发明的处理数据的方法。在权利要求12中限定了一种包括一个序列的多组指令的信息载体,设置成由根据本发明的一个处理装置来执行以处理数据。
附图简要说明:
图1是根据本发明的一个VLIW处理器的原理框图;
图2是发布槽UC2的原理框图,包括三个功能单元;
图3是专用发布槽UC4的原理框图,包括单个功能单元;
图4示出了一个VLIW指令和一个对应的压缩VLIW指令。
优选实施例描述
参照图1,原理框图示出了包括多个发布槽和一个寄存器文件的一个VLIW处理器,多个发布槽包括发布槽UC0、UC1、UC2和UC3,寄存器文件包括寄存器文件部分RF0和RF1。该处理器包括一个控制器SQ和一个连接网络CN,用于连接寄存器文件部分RF0和RF1和发布槽UC0、UC1、UC2和UC3。寄存器文件部分RF0和RF1连接到一条图1中未示出的总线,并且寄存器文件部分通过这条总线接收输入数据。传递到发布槽UC0、UC1、UC2和UC3的指令包括类RISC操作和定制操作,类RISC操作仅要求两个操作数以及仅产生一个结果,定制操作能够使用多于两个的操作数和/或能够产生多于一个的结果。一些指令可以要求短(small)的或长的立即值做为操作数数据。连接网络CN允许在寄存器文件部分RF0和RF1与发布槽UC0、UC1、UC2和UC3之间的传递输入数据和结果数据。
VLIW处理器进一步包括一个专用发布槽UC4和一个专用寄存器文件RF2。专用发布槽UC4连接101到一个专用寄存器文件RF2。专用寄存器文件RF2通过连接网络CN连接到多个发布槽UC0-UC3。一个专用指令传递到发布槽UC4,并且这个指令包括一个立即值,这个立即值在多个发布槽之一内的一条指令的执行过程中是需要的。专用发布槽UC4包括单个功能单元IMU,能够执行专用指令。当执行这条指令时,专用发布槽UC4将对应的立即值传递到专用寄存器文件RF2。通过连接网络CN,多个发布槽UC0-UC3能够从专用寄存器文件RF2中读取这个立即值,并随后用于进一步处理。
在一个优选实施例中,专用寄存器文件RF2包括单个寄存器。因此,在专用指令中不需要用于编码该寄存器地址的位。此外,仅允许专用发布槽UC4写入数据到专用寄存器文件RF2,使得在专用指令中不需要用于编码数据必须写入到的寄存器文件的选择的位。最后,专用发布槽UC4仅包括单个功能单元IMU,并且仅有一种类型的指令,即专用指令,传递到专用发布槽UC4。结果,对于专用发布槽UC4仅一条指令需要编码,意味着在专用指令中不需要用于编码操作代码的位。由于加载立即值不需要任何操作数,所以在专用指令中不必编码操作数寄存器索引。最终结果是,能够使用等于立即值本身宽度的多个位来编码用于立即数加载的专用指令。
在一些实施例中,寄存器文件部分RF0和RF1是分布式寄存器文件,即多个寄存器文件,使用对于有限的一组发布槽的每一个,代替用于所有发布槽UC0-UC3的一个中央寄存器文件。分布式寄存器文件的一个有利之处在于,每个寄存器文件部分要求较少的读写端口,导致较小的寄存器文件带宽。此外,与一个中央寄存器文件相比,它提高了处理器的可扩缩性(scalability)。
在一些实施例中,连接网络CN是部分连接的网络,即不是每个发布槽UC0-UC3连接到每个寄存器文件部分RF0和RF1。部分连接的通信网络的使用减小了代码长度和能量消耗,并且也允许增加处理器的性能。此外,与一个全部连接的网络相比,它提高了处理器的可扩缩性。
参照图2,原理框图示出了一个发布槽UC2的实施例。发布槽UC2包括解码器DEC、时间形状(time shape)控制器TSC、和输入路由网络IRN、输出路由网络ORN、和多个功能单元FU20、FU21和FU22。在每个时钟周期内解码器DEC对施加到该发布槽的控制字CW进行解码。解码步骤的结果是操作数寄存器索引ORI,其标引在寄存器文件部分RF0和RF1中的、存储有用于要执行的操作的操作数数据的寄存器。解码步骤的进一步结果是结果文件索引RFI和结果寄存器索引RRI,其标引在寄存器文件部分RF0和RF1中的、须存储有结果数据的寄存器。解码器DEC通过连接I将索引ORI、RFI和RRI传递到时间形状控制器TSC。根据在其上执行操作的功能单元的输入/输出状态,时间形状控制器TSC适量地延迟索引ORI、RFI和RRI,并将这些索引传递到如图1所示的连接网络CN。如果VLIW指令包括用于发布槽UC2的指令,那么解码器DEC通过一个连接SEL选择功能单元FU20、FU21或FU22中的一个,以执行一个操作。此外,解码器DEC使用一个连接OPT,将关于须执行的这种类型的操作的信息传递到那个功能单元。输入路由网络IRN通过连接ID传输操作数数据OPD到功能单元FU20、FU21和FU22。功能单元FU20、FU21和FU22通过连接OD传输它们的结果数据到输出路由网络ORN,并且随后输出路由网络ORN传递结果数据RD到如图1所示的连接网络CN。通过连接网络CN,结果数据RD能够存储在寄存器文件部分RF0和RF1中。一个指令有效位IV传递到解码器DEC,并且如果是NOP操作时,这个位等于零。解码器DEC在选择一个功能单元时使用这个信息,并且如果指令有效位IV等于零,那么那个功能元件不将结果数据RD写入到输出路由网络ORN,从而避免存储在寄存器文件部分RF0和RF1中的数据污染(contamination)。该指令有效位将进一步在图4中描述。为了执行定制操作,功能单元FU20和FU21能够处理三个操作数数据,并且功能单元FU21和FU22能够产生两个输出数据。此外,功能单元可以使用一个长立即值做为操作数。
没有示出发布槽UC0、UC1和UC3的实施例。这些发布槽也包括一组功能单元,能够执行类RISC指令(RISC like instruntion)或更为复杂的操作,即要求超过两个的操作数和/或产生多于一个的结果数据。这些功能单元还可以要求短的或长的立即值做为操作数数据。
参照图3,示出了专用发布槽UC4的优选实施例。专用发布槽UC4包括单个功能单元IMU和一个解码器DEC4,功能单元IMU仅能够执行专用指令。传递到专用发布槽UC4的专用指令仅包括一个长立即值,并且不要求用于对操作数数据寄存器、寄存器文件索引和结果寄存器索引、操作数代码进行编码的位。对应的控制字CW4也仅包括一个长立即值。通过连接301,控制字CW4施加到解码器DEC4,并且通过连接303,对应的长立即值IMV直接发送到解码器DEC4的一个输出。通过连接305,长立即值IMV进一步传递到功能单元IMU的立即数据输入。在功能单元IMU中,通过连接307,长立即值IMV直接传送到该功能单元的结果数据输出。最后,通过连接309,长立即值IMV传递到专用寄存器文件RF4。解码器DEC4接收一个指令有效位IV4,并通过连接311、313和315将其传输到功能单元选择输入。通过连接317,功能单元IMU的结果有效输出直接连接到该功能单元选择输入。如果是NOP操作,那么指令有效位IV4等于零。结果有效输出位RV4随后也等于零,并且因此长立即数IMV不传递到专用寄存器文件RF2。指令有效位IV4将在图4中进一步描述。实际上,解码器DEC4和功能单元IMU是空的。通过连接301、303、305和307,对应于控制字CW4的长立即数IMV直接传送到功能单元IMU的结果数据输出。通过连接311、313、315和317,指令有效位IV4直接传送到功能单元IMU的结果有效输出。发布槽UC4不要求输入或输出路由网络。因为不要求结果文件索引和结果寄存器索引,所以也不要求时间形状控制器。
参照图4,示出了用于图1中的VLIW处理器的VLIW指令的例子。VLIW指令401包括五个控制字411~419。一条指令映射到控制字413~419,分别用于对应的发布槽UC0、UC1、UC2和UC3。一条专用指令映射到控制字411,用于专用发布槽UC4。控制字413、415和419包括一个NOP操作,分别与发布槽UC0、UC1和UC3相关联。控制字411包括专用指令IMM,和控制字417包括指令InstrC,分别对应于专用发布槽UC4和发布槽UC2。对于一个优选的实施例,指令403示出了用于指令IMM的指令格式,其仅包括一个长立即值IMV1。指令405示出了用于指令InstfC的可能的指令格式,具有六个字段(filed)421-431,分别与一个操作代码OC1、两个结果寄存器索引D1和D2以及三个操作数寄存器索引S1、S2和S3相关联。不同的指令格式可以用于映射到相同控制字411~419上的不同指令。例如根据必须执行的指令类型,或根据使用一个立即值作为操作数(与从寄存器文件中获取一个不同),可以改变指令格式。例如,在指令405中,能够用于编码的位越多,操作或短立即值就越多,并且用于操作数寄存器索引的越少。在没有立即值必须由专用发布槽UC4加载的情况下,控制字411可以包括一个NOP操作。
通过使用一组专用位来编码NOP操作,能对未压缩的VLIW指令401进行压缩。由VLIW指令407示出了压缩VLIW指令401之后的压缩指令的一个例子,包括具有一组专用位的字段433和分别具有指令IMM和InstrC的控制字435和437。在这组专用位中的单独位对映射到VLIW指令401的控制字413、415和419的NOP操作进行编码。位“0”涉及一个NOP操作,并且该位在字段433中的位置指示了在VLIW指令401中具有这个NOP操作的控制字。在字段433的位置二、三和五处的“0”位,涉及分别出现在VLIW指令401中的控制字413、415和419处的NOP操作。在字段433中出现的“1”位涉及一个具有非NOP操作的指令,并且该位在字段433中的位置指出了在VLIW指令401上指令映射到的控制字。在字段433的位置一和四处的“1”位,分别涉及在控制字411和417中的指令IMM和InstrC。在其它实施例中,如本领域技术人员所公知的,可以使用不同的方法压缩VLIW指令。
图1所示的VLIW处理器能够执行要求长立即值的指令。在运行在VLIW处理器上的软件程序的编译期间,编译器识别出现在软件程序中的常数。在这些常数不能在一条单独的指令中编码为一个立即值的情况下,编译器可以创建一个专用指令,用于这个立即值的加载。在要求立即值的指令中,为了重新得到立即值,对专用寄存器文件RF2的地址进行编码。例如,为了加载指令InstrC所要求的长立即值IMV1,对专用指令IMM进行编码。随后在指令405中用寄存器文件RF2的地址代替长立即值IMV1,作为操作数寄存器索引S3。这样由于允许指令宽度减少,获得了VLIW指令的有效编码。在一个优选实施例中,VLIW指令是压缩的VLIW指令407,以进一步减少代码长度。在字段433中的专用位能够同时用作指令有效位IV和IV4,用于它们对应的发布槽。出现在控制器SQ中的解压缩逻辑通过将包括NOP操作的控制字加到VLIW指令407中、使用在字段433中的“0”位以及它们的位置,对压缩的VLIW指令407进行解压缩。当执行VLIW指令401时,长立即数IMV1由专用发布槽UC4加载,并存储在专用寄存器文件RF2中。当执行指令InstrC时,发布槽UC2通过连接网络CN,使用操作数寄存器索引S3,从专用寄存器文件RF2中重新得到这个值。由于解码器DEC对指令进行解码,获得了一个有效的解码过程,而没有要求任何附加的解码步骤。通过配线而不要求任何控制逻辑,专用发布槽UC4的硬件能够非常简单。如果在一个特定的VLIW指令中不要求加载一个长立即值,那么将一个NOP操作映射到控制字411。
一种超标量体系结构处理器还包括多个发布槽,能够并行执行多个操作,与VLIW处理器的情况一样。然而,该处理器硬件本身在运行时确定存在哪些操作相关性,并根据这些相关性决定并行执行哪些操作,同时确保了不发生资源冲突。在这部分中所描述的关于VLIW处理器的实施例的原理也可应用于超标量体系结构处理器。通常,与超标量体系结构处理器相比,VLIW处理器可以具有更多的发布槽。VLIW处理器的硬件没有超标量体系结构处理器复杂,这导致更好的可扩缩体系结构。在其它情况中,发布槽的数量和每个发布槽的复杂度将确定使用本发明所能够达到的益处的程度。
应当注意,上述实施例描述而不是限制本发明,并且本领域技术人员能够设计许多变化的实施例,而不脱离所附权利要求的范围。在权利要求中,在括号之间设置的附图标记将不能解释为对权利要求的限制。用语“包括”不排除出现在一个权利要求中所列之外的那些部件或步骤。在一个部件前的用语“一”不排除出现多个这样的部件。在列举了多个部件的装置权利要求中,一个或相同项的硬件能够实现多个这样的部件。不过在相互不同的从属权利要求中引用的某些措施并不表明不能使用这些措施的组合带来益处。
Claims (12)
1、一种处理装置,用于基于从并行执行的一组指令中产生的控制信号来处理数据,包括:
多个发布槽,其中每个发布槽包括多个功能单元,多个发布槽由一组控制字控制,所述一组控制字与该组指令相对应,
特征在于:处理装置进一步包括一个专用发布槽,该专用发布槽设置成根据一个包括一立即值的专用指令来加载该立即值。
2、根据权利要求1的装置,其中专用发布槽包括单个功能单元,该单个功能单元设置成仅执行专用指令。
3、根据权利要求1的装置,进一步包括一个存储所述立即值的专用存储器文件,由专用发布槽访问该专用存储器文件。
4、根据权利要求1的装置,其中所述处理装置是一个VLIW处理器,并且其中所述的一组指令组合在一个VLIW指令中。
5、根据权利要求4的装置,其中VLIW指令是一个压缩的VLIW指令,包括用于对NOP操作进行编码的专用位。
6、根据权利要求1的装置,进一步包括与多个发布槽相关联的一个寄存器文件。
7、根据权利要求6的装置,进一步包括一个连接网络,用于连接多个发布槽和该寄存器文件。
8、一种处理数据的方法,所述方法包括下列步骤:
-在一个寄存器文件中存储输入数据;
-使用多个发布槽,基于从并行执行的一组指令中产生的控制信号,来处理从该寄存器文件中重新得到的数据,发布槽由从该组指令中产生的一组控制字控制;
并且其中每个发布槽包括多个功能单元,
特征在于:该方法进一步包括根据一个包括一立即值的专用指令来加载该立即值到一个专用发布槽中的步骤。
9、指令组,包括用于由根据权利要求1的前序部分的一个处理装置执行的多条指令,
特征在于:该指令组进一步包括一个具有一立即值的专用指令,当由一个专用发布槽执行该专用指令时,使专用发布槽加载该立即值。
10、一种计算机程序,包括计算机程序代码方法,用于指示一个计算机系统执行根据权利要求8的方法的步骤。
11、一种编译器程序产品,用于产生指令组的序列,所述指令组设置为由根据权利要求1的前序部分的一个处理装置来执行,
特征在于:多组指令的这个序列进一步包括一个具有一立即值的专用指令,当由一个专用发布槽执行专用指令时,使专用发布槽加载该立即值。
12、一种信息载体,包括指令组的序列,所述指令组设置为由根据权利要求1的前序部分的一个处理装置执行,
特征在于:多组指令的这个序列进一步包括一个具有一立即值的专用指令,当由一个专用发布槽执行专用指令时,使专用发布槽加载该立即值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02078956 | 2002-09-24 | ||
EP02078956.6 | 2002-09-24 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1685310A true CN1685310A (zh) | 2005-10-19 |
Family
ID=32039163
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA038226669A Pending CN1685310A (zh) | 2002-09-24 | 2003-08-08 | 在一个超长指令字处理器中启动加载立即指令的处理的装置、方法和编译器 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7574583B2 (zh) |
EP (1) | EP1546869B1 (zh) |
JP (1) | JP2006500673A (zh) |
CN (1) | CN1685310A (zh) |
AU (1) | AU2003253159A1 (zh) |
WO (1) | WO2004029796A2 (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2370380B (en) | 2000-12-19 | 2003-12-31 | Picochip Designs Ltd | Processor architecture |
GB2414308B (en) | 2004-05-17 | 2007-08-15 | Advanced Risc Mach Ltd | Program instruction compression |
CN101027635A (zh) * | 2004-09-22 | 2007-08-29 | 皇家飞利浦电子股份有限公司 | 其中功能单元共用读取端口的数据处理电路 |
GB2420884B (en) * | 2004-12-03 | 2009-04-15 | Picochip Designs Ltd | Processor architecture |
US8049760B2 (en) * | 2006-02-06 | 2011-11-01 | Via Technologies, Inc. | System and method for vector computations in arithmetic logic units (ALUs) |
GB2454865B (en) | 2007-11-05 | 2012-06-13 | Picochip Designs Ltd | Power control |
GB2470037B (en) | 2009-05-07 | 2013-07-10 | Picochip Designs Ltd | Methods and devices for reducing interference in an uplink |
GB2470891B (en) | 2009-06-05 | 2013-11-27 | Picochip Designs Ltd | A method and device in a communication network |
GB2470771B (en) | 2009-06-05 | 2012-07-18 | Picochip Designs Ltd | A method and device in a communication network |
GB2474071B (en) | 2009-10-05 | 2013-08-07 | Picochip Designs Ltd | Femtocell base station |
KR101603751B1 (ko) * | 2010-02-18 | 2016-03-16 | 삼성전자주식회사 | 명령어 병렬 처리 컴퓨터를 위한 명령어 압축 장치 및 방법 |
GB2482869B (en) | 2010-08-16 | 2013-11-06 | Picochip Designs Ltd | Femtocell access control |
GB2489919B (en) | 2011-04-05 | 2018-02-14 | Intel Corp | Filter |
GB2489716B (en) | 2011-04-05 | 2015-06-24 | Intel Corp | Multimode base system |
US9201652B2 (en) | 2011-05-03 | 2015-12-01 | Qualcomm Incorporated | Methods and apparatus for storage and translation of entropy encoded software embedded within a memory hierarchy |
GB2491098B (en) | 2011-05-16 | 2015-05-20 | Intel Corp | Accessing a base station |
US10120692B2 (en) * | 2011-07-28 | 2018-11-06 | Qualcomm Incorporated | Methods and apparatus for storage and translation of an entropy encoded instruction sequence to executable form |
KR102270790B1 (ko) | 2014-10-20 | 2021-06-29 | 삼성전자주식회사 | 데이터 처리 방법 및 장치 |
CN111124495B (zh) * | 2019-12-16 | 2021-02-12 | 海光信息技术股份有限公司 | 一种数据处理方法、解码电路及处理器 |
JP2021166010A (ja) * | 2020-04-08 | 2021-10-14 | 富士通株式会社 | 演算処理装置 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0440525A (ja) * | 1990-06-06 | 1992-02-10 | Seiko Epson Corp | 並列処理型マイクロプロセッサ |
EP0479390B1 (en) * | 1990-10-05 | 1999-01-07 | Koninklijke Philips Electronics N.V. | Processing device including a memory circuit and a group of functional units |
DE69325785T2 (de) * | 1992-12-29 | 2000-02-17 | Koninkl Philips Electronics Nv | Verbesserte Architektur für Prozessor mit sehr langem Befehlswort |
US6002880A (en) * | 1992-12-29 | 1999-12-14 | Philips Electronics North America Corporation | VLIW processor with less instruction issue slots than functional units |
JPH07182169A (ja) | 1993-12-24 | 1995-07-21 | Toshiba Corp | 並列処理型コンピュータ |
JP3505266B2 (ja) | 1995-06-15 | 2004-03-08 | 三洋電機株式会社 | プログラム実行装置 |
JP2806359B2 (ja) | 1996-04-30 | 1998-09-30 | 日本電気株式会社 | 命令処理方法及び命令処理装置 |
US5787302A (en) * | 1996-05-15 | 1998-07-28 | Philips Electronic North America Corporation | Software for producing instructions in a compressed format for a VLIW processor |
US5870576A (en) | 1996-12-16 | 1999-02-09 | Hewlett-Packard Company | Method and apparatus for storing and expanding variable-length program instructions upon detection of a miss condition within an instruction cache containing pointers to compressed instructions for wide instruction word processor architectures |
JP3790607B2 (ja) | 1997-06-16 | 2006-06-28 | 松下電器産業株式会社 | Vliwプロセッサ |
JP3327818B2 (ja) | 1997-08-29 | 2002-09-24 | 松下電器産業株式会社 | プログラム変換装置及び記録媒体 |
US5974537A (en) * | 1997-12-29 | 1999-10-26 | Philips Electronics North America Corporation | Guard bits in a VLIW instruction control routing of operations to functional units allowing two issue slots to specify the same functional unit |
US6076154A (en) * | 1998-01-16 | 2000-06-13 | U.S. Philips Corporation | VLIW processor has different functional units operating on commands of different widths |
JP2001022581A (ja) * | 1999-07-06 | 2001-01-26 | Canon Inc | データ処理装置及びコンピュータ読み取り可能な記憶媒体 |
TW525091B (en) * | 2000-10-05 | 2003-03-21 | Koninkl Philips Electronics Nv | Retargetable compiling system and method |
EP1346282A1 (en) * | 2000-12-11 | 2003-09-24 | Koninklijke Philips Electronics N.V. | Signal processing device and method for supplying a signal processing result to a plurality of registers |
JP3501761B2 (ja) * | 2001-01-30 | 2004-03-02 | 株式会社半導体理工学研究センター | 大規模データパス・アーキテクチャの実行機構 |
WO2002061574A1 (en) * | 2001-01-30 | 2002-08-08 | Koninklijke Philips Electronics N.V. | Computer instruction with instruction fetch control bits |
-
2003
- 2003-08-08 CN CNA038226669A patent/CN1685310A/zh active Pending
- 2003-08-08 US US10/528,607 patent/US7574583B2/en not_active Expired - Fee Related
- 2003-08-08 AU AU2003253159A patent/AU2003253159A1/en not_active Abandoned
- 2003-08-08 WO PCT/IB2003/003561 patent/WO2004029796A2/en active Application Filing
- 2003-08-08 EP EP03798250A patent/EP1546869B1/en not_active Expired - Lifetime
- 2003-08-08 JP JP2004539270A patent/JP2006500673A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US7574583B2 (en) | 2009-08-11 |
US20060168424A1 (en) | 2006-07-27 |
WO2004029796A2 (en) | 2004-04-08 |
EP1546869B1 (en) | 2013-04-03 |
EP1546869A2 (en) | 2005-06-29 |
WO2004029796A3 (en) | 2004-07-22 |
AU2003253159A1 (en) | 2004-04-19 |
AU2003253159A8 (en) | 2004-04-19 |
JP2006500673A (ja) | 2006-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1685310A (zh) | 在一个超长指令字处理器中启动加载立即指令的处理的装置、方法和编译器 | |
RU2638766C2 (ru) | Процессоры, способы, системы и инструкции для транскодирования точек кода переменной длины знаков unicode | |
TWI742132B (zh) | 用以將多個資料元件載入到非緊縮資料暫存器的目的地儲存位置的處理器、方法、系統及指令 | |
RU2620930C1 (ru) | Процессор, способ, система и изделие для векторного индексированного доступа к памяти плюс арифметической и/или логической операции | |
TWI567556B (zh) | 無區域性提示向量記憶體存取之處理器、方法、系統與指令 | |
CN1675619A (zh) | 允述在超长指令字处理器中处理可变长指令的设备、方法和编译器 | |
JP6498226B2 (ja) | プロセッサおよび方法 | |
JP2021108102A (ja) | 行列演算アクセラレータの命令のための装置、方法、およびシステム | |
US20070079296A1 (en) | Compressing "warm" code in a dynamic binary translation environment | |
CN1516003A (zh) | 一种机器可读介质 | |
CN117724766A (zh) | 用于执行将矩阵变换为行交错格式的指令的系统和方法 | |
CN1279783A (zh) | 利用规格字段指令编码的处理器 | |
TWI747881B (zh) | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 | |
EP3343360A1 (en) | Apparatus and methods of decomposing loops to improve performance and power efficiency | |
CN112148251A (zh) | 跳过无意义的矩阵运算的系统和方法 | |
CN117546152A (zh) | 用于加速流送数据变换操作的电路和方法 | |
TW201732568A (zh) | 用於巷道為主的跨類收集的系統、設備與方法 | |
CN116880906A (zh) | 用于8位浮点矩阵点积指令的装置、方法和系统 | |
US20060288019A1 (en) | Flexible data file format | |
CN101246435A (zh) | 一种支持高级语言部分语句功能的处理器指令集 | |
CN104025042A (zh) | 编码以增加指令集密度 | |
TW201810020A (zh) | 用於累乘的系統、設備及方法 | |
KR102528073B1 (ko) | 벡터 비트 수집을 수행하기 위한 방법 및 장치 | |
CN1816799A (zh) | 在时间-固定处理器中对条件操作的支持 | |
US7596680B2 (en) | System and method for encoding and decoding architecture registers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
AD01 | Patent right deemed abandoned | ||
C20 | Patent right or utility model deemed to be abandoned or is abandoned |