CN1950797A - 多指令字处理器中反馈连接的运行时间选择 - Google Patents
多指令字处理器中反馈连接的运行时间选择 Download PDFInfo
- Publication number
- CN1950797A CN1950797A CNA2005800149547A CN200580014954A CN1950797A CN 1950797 A CN1950797 A CN 1950797A CN A2005800149547 A CNA2005800149547 A CN A2005800149547A CN 200580014954 A CN200580014954 A CN 200580014954A CN 1950797 A CN1950797 A CN 1950797A
- Authority
- CN
- China
- Prior art keywords
- result data
- register file
- treatment facility
- register
- issue
- 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
- 238000004891 communication Methods 0.000 claims abstract description 52
- 238000012546 transfer Methods 0.000 claims abstract description 3
- 230000005540 biological transmission Effects 0.000 claims description 7
- 238000011156 evaluation Methods 0.000 claims description 4
- 230000007717 exclusion Effects 0.000 claims description 4
- 238000012545 processing Methods 0.000 abstract description 5
- 230000008878 coupling Effects 0.000 abstract 1
- 238000010168 coupling process Methods 0.000 abstract 1
- 238000005859 coupling reaction Methods 0.000 abstract 1
- 241001269238 Data Species 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 238000000034 method Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000006073 displacement reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 229910052710 silicon Inorganic materials 0.000 description 2
- 239000010703 silicon Substances 0.000 description 2
- 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 description 2
- 240000004859 Gamochaeta purpurea Species 0.000 description 1
- 240000000233 Melia azedarach Species 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
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/3824—Operand accessing
-
- 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
-
- 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
-
- 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
-
- 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
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
- G06F9/38585—Result writeback, i.e. updating the architectural state or memory with result invalidation, e.g. nullification
-
- 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)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
一种被安排成执行多指令字的处理设备,其中一个多指令字具有多个指令。所述处理设备包括:多个发布插槽(IS1,IS2),其被安排成并行执行多个指令;寄存器堆(RF1,RF2),可由多个发布插槽访问;以及通信网络(CN),用于耦合多个发布插槽和寄存器堆。所述处理设备被进一步安排成产生关于由第一发布插槽(IS1)产生的第一结果数据(RD1)的有效性的第一标识符(OV1),以及产生关于由第二发布插槽(IS2)产生的第二结果数据(RD2)的有效性的第二标识符(OV2)。所述通信网络包括至少一个选择电路(SC1),所述选择电路(SC1)被安排成在单个处理器周期内,通过使用第一标识符和第二标识符,动态地控制第一结果数据或第二结果数据向寄存器堆的寄存器的传送。
Description
技术领域
本发明涉及被安排成执行多指令字的处理设备,其中,一个多指令字具有多个指令,所述设备包括:多个发布插槽(issue slot),其被安排成并行执行多个指令;寄存器堆,可由多个发布插槽访问;以及通信网络,用于耦合多个发布插槽和寄存器堆。
背景技术
处理器可以是通用处理器或专用指令组处理器。它们能被用来处理不同类型的信息,包括声音、图像和视频。在专用指令组处理器的情况下,处理器体系结构和指令组是定制的,这显著地降低了系统的成本和功耗。处理器体系结构通常由固定的数据路径组成,该数据路径通过一组控制字进行控制。每个控制字控制数据路径的各个部分,并且这些部分可以包括寄存器地址和用于运算逻辑运算器(ALU)或其他功能单元的运算码。每个指令组通常借助于指令解码器将二进制格式的指令转换成对应的控制字,或借助于微存储器即直接包含控制字的内存,产生一组新的控制字。通常,控制字表示RISC类似的运算,包括一个运算码、两个运算数寄存器下标和一个结果寄存器下标。运算数寄存器下标和结果寄存器下标指的是寄存器堆中的寄存器。
在超长指令字(VLIW)处理器的情况下,多个指令被打包成一个长指令,即所谓的VLIW指令。VLIW处理器使用多个、独立的功能单元并行执行这些多指令。处理器允许在程序中开发指令级的并行运算,从而每次执行一个以上的指令。由于此形式的并行处理,处理器的性能得以提高。软件程序为了在VLIW处理器上运行,它必须被转换为一组VLIW指令。编译器通过优化并行运算,最小化执行该程序所需的时间。编译器在分配给单个VLIW指令的这些指令可以并行执行的约束条件下以及在数据相关性的约束条件下,将这些指令组合成VLIW指令。倘若无意义的处理在一个或多个功能单元的某些时钟周期内可以发生,则将所谓的空操作(NOP)指令编入用于该具体功能单元的VLIW指令中。为了降低代码长度,并因此节省关于所需存储容量和关于所需存储带宽的成本,可以使用空操作(NOP)指令在数据固定的VLIW处理器中的紧凑表示,例如,NOP运算用附着于VLIW指令前面的专用报头中的单个比特进行编码,产生压缩的VLIW指令。
为了控制处理器的数据流水线中的运算,通常在计算机体系结构中使用两种不同的机制:数据固定和时间固定的编码,其由G.Goossens,J.van Praet,D.Lanneer,W.Geurts,A.Kifli,C.Liem和P.Paulin等人撰写、于1997年3月公开在第85卷、第3册的IEEE学报“Embedded software in real-time signalprocessing systems:design technologies”上。在数据固定编码的情况下,属于处理器指令组的每个指令在其经过数据流水线时,控制在特定数据项上必须执行的完整的运算顺序。一旦指令已经从程序存储器中提取出并被解码,则处理器的控制器硬件将确信组成操作在当前的机器周期内执行。就时间固定编码而言,属于处理器指令组的每个指令控制必须在单个机器周期内执行的整套运算。这些运算可以应用于经过数据流水线的若干不同数据项。在该情况下,编程器或编译器负责设置和维护数据流水线。由此产生的流水线调度在机器代码程序中是完全看得见的。时间固定编码经常在专用处理器中使用,因为它节省了为延迟指令中存在的控制信息所必需的硬件的总开销,而以大的代码长度作为代价。
EP1.113.356描述了具有多个功能单元和一个寄存器堆的VLIW处理器。解码的指令被提供给功能单元,输入的数据由寄存器堆提供,结果数据被写入寄存器堆。
现有技术的处理器的缺点在于,倘若在运行时间确定,则结果数据是无效的,即结果数据不必被回写到寄存器堆,则从功能单元到寄存器堆的通信路径仍然必须被启用,就像静态地即在编译时不知道该结果数据是否将是有效或无效的。
发明内容
本发明的目的在于提供一种处理设备,其允许在单个处理器周期内,静态地对将两个不同运算产生的结果数据回写到寄存器堆的相同寄存器中进行调度。本发明更进一步的目的在于在共享通信信道上静态地对这些结果数据的回写进行调度。
此目的通过所述类型的处理设备来实现,其特征在于,处理设备被进一步安排成产生基于第一发布插槽产生的第一结果数据的有效性的第一标识符和基于第二发布插槽产生的第二结果数据的有效性的第二标识符,并且其特征在于,通信网络包括至少一个选择电路,所述选择电路被安排成在单个处理器周期内,通过使用第一标识符和第二标识符,动态控制第一结果数据或第二结果数据向寄存器堆的寄存器的传送。倘若静态地至少知道基于结果数据有效性的第一或第二标识符在运行时间指示对应的结果数据不必回写到寄存器堆的寄存器,则可以在单个处理器周期内对第一和第二结果数据的回写进行调度。选择电路使用标识符来动态地选择将要向寄存器堆回写的有效的结果数据。结果,可以在单个处理器周期内对将两个不同运算产生的结果数据回写到寄存器堆的相同寄存器中进行调度。
根据本发明的处理设备的实施例,其特征在于,至少一个选择电路被进一步安排成在单个处理器周期内,通过使用第一和第二标识符,动态地控制不向寄存器堆的寄存器传送结果数据。倘若第一和第二结果数据都是无效的,则不选择即将回写到寄存器堆的结果数据。
根据本发明的处理设备的实施例,其特征在于,至少一个选择电路分别耦合于第一和第二发布插槽的输出。对于哪个结果数据必须回写到寄存器堆的选择,直接在发布插槽的输出完成。
根据本发明的处理设备的实施例,其特征在于,通信网络被安排成经由共享通信信道传送第一结果数据或第二结果数据。此实施例的优点在于其他的通信信道可用于其他发布插槽向寄存器堆传送结果数据。
根据本发明的处理设备的实施例,其特征在于,至少一个选择电路耦合于寄存器堆的输入,提供了将选择电路耦合于发布插槽输出的替换。
根据本发明的处理设备的实施例,其特征在于,第一结果数据对应于第一条件运算,第二结果数据对应于第二条件运算,而第一和第二条件运算具有互斥的条件,并且其中,第一标识符根据对第一条件运算的条件的评价来设置,第二标识符根据对第二条件运算的条件的评价来设置。在互斥条件的情况下,保证至多一个标识符将指示对应的结果数据是无效的,允许在单个处理器周期内静态地对两个结果数据对相同寄存器的回写进行调度。
根据本发明的处理设备的实施例,其特征在于,第一和第二发布插槽被安排成产生基于结果数据有效性的第一和第二标识符。此实施例允许在寄存器堆中存储对条件运算进行保护的结果,并允许将它们用作发布插槽的附加输入值,用于分别确定第一和第二标识符的值。
根据本发明的处理设备的实施例,其特征在于,所述选择电路被进一步安排成利用从一个多指令字导出的控制信息,静态地控制第一结果数据从第一发布插槽向寄存器堆或控制第二结果数据从第二发布插槽向寄存器堆的传送。利用控制信息,可以选择必须回写的结果数据所经由的通信信道,并在空操作指令的情况下,可以防止结果数据对寄存器堆的回写。
根据本发明的处理设备的实施例,其特征在于,通信网络还包括耦合于寄存器堆输入的第二选择电路。此实施例的优点在于,它在部分连接的网络的情况下提供调度指令的更多灵活性。
根据本发明的处理设备的实施例,其特征在于,寄存器堆是分布式寄存器堆。分布式寄存器堆的优点在于,每个寄存器堆片段需要更少的读写端口,产生了硅面积更小的寄存器堆,从而提高了寄存器堆的运算速度。而且,与中央寄存器堆相比,分布式寄存器堆中寄存器的地址需要更少的比特。
根据本发明的处理设备的实施例,其特征在于,所述通信网络是部分连接的通信网络。与完全连接的通信网络相比,尤其在发布插槽数量大的情况下,部分连接的通信网络就代码长度、面积和功耗而言,通常是更低的时间临界值(time critical),并且更便宜。
根据本发明的处理设备的实施例,其特征在于,所述至少一个选择电路被进一步安排成在单个处理器周期内,通过使用对应的基于结果数据有效性的标识符,动态地控制至少第三结果数据向寄存器堆的寄存器的传送。选择电路允许具有超过两个的用于接收结果数据的输入端口,并允许动态地选择至多一个结果数据,以回写到寄存器堆,因为长时间静态地知道至多一个结果数据将是有效的。
附图说明
图1示出了根据本发明的VLIW处理器的示意框图。
图2示出了选择电路的实施例的示意框图。
图3示出了根据本发明的替换VLIW处理器的示意框图。
图4示出了根据本发明的另一替换VLIW处理器的示意框图。
图5示出了根据本发明的又一替换VLIW处理器的示意框图。
图6示出了选择电路的替换实施例的示意框图。
具体实施方式
参照图1、3和5,示意框图例示了包括两个寄存器堆RF1和RF2以及两个发布插槽IS1和IS2的VLIW处理器。寄存器堆RF1可通过发布插槽IS1进行访问,而寄存器堆RF2可通过发布插槽IS2进行访问,分别用于检索自变量(argument)ID1和ID2。发布插槽IS1和IS2经由连接网络CN进一步耦合于寄存器堆RF1和RF2。连接网络CN包括两个选择电路SC1和SC2(仅仅图1和3)、两个多路复用器MP1和MP2(仅仅图1)、两个多路复用器MP3和MP4(仅仅图5)、两个选择电路SC3和SC4(仅仅图3和5)和两个通信信道CC1与CC2。通信信道CC1和CC2传送32位的值,例如结果数据RD,和一位的值如结果有效信号RV。发布插槽IS1和IS2包括至少一个功能单元,例如发布插槽IS1包括算术/逻辑单元和乘法单元,而发布插槽IS2包括算术/逻辑单元和加载/存储单元。算术/逻辑单元内部具有零流水线级,并可以执行七个不同的运算:加、减、逻辑和、逻辑或、逻辑异或、逻辑左移位和逻辑右移位,这些运算由各自的运算码进行控制。乘法单元内部具有一个流水线级,并可以执行四个不同的运算:带符号的乘以下半部结果、带符号的乘以上半部结果、不带符号的乘以下半部结果、不带符号的乘以上半部结果,这些运算也通过各自的运算码进行控制。运算中,从程序存储器(图1、3和5中未示出)中检索出VLIW指令字,并解码这些指令字。一般而言,编入VLIW指令字的指令包括:RISC类似的运算,其需要两个运算数并产生一个结果;以及常规运算,其可以使用两个以上的运算数且可以产生一个以上的结果。一些指令可以需要立即值作为运算数据。解码步骤的结果是选择信号s1和s2(仅仅图1),选择信号s3和s4(仅仅图5),选择信号c1、c2、c3和c4(仅仅图1和3),以及选择信号c5、c6、c7和c8(仅仅图3和5)。解码步骤的进一步结果是:插槽IS1和IS2的运算码(图1、3、5未示出),其定义了必须通过对应的发布插槽来执行的运算;以及寄存器下标(图1、3、5未示出),其指示了必须读取的寄存器堆RF1和RF2的寄存器,而寄存器堆RF1和RF2来自用于对应的发布插槽执行的运算的自变量;以及必须写入结果数据的寄存器堆RF1和RF2的寄存器下标(图1、3和5中未示出)。运算码和自变量ID1和ID2被分别提供给发布插槽IS1和IS2。发布插槽IS1和IS2分别执行其运算码定义的运算,并产生结果数据RD1和RD2,以及输出指示了对应的结果数据的有效性的有效信号OV1和OV2。输出有效信号例如是一位值。倘若结果数据是无效的,即结果数据不必向寄存器堆RF1或RF2回写,则对应的输出有效信号被产生该结果数据的发布插槽设置成假。参照图1和3,结果数据RD1和输出有效信号OV1以及结果数据RD2和输出有效信号OV2都被提供给选择电路SC1和SC2。正如还将阐述的,在输出有效信号OV1和OV2以及选择信号c1和c2的控制之下,选择电路SC1选择结果数据RD1和输出有效信号OV1、或结果数据RD2和输出有效信号OV2,作为结果数据RD和结果有效信号RV经由通信信道CC2向多路复用器MP1和MP2(图1)或向选择电路SC3和SC4(图3)传送。类似地,在输出有效信号OV1和OV2以及选择信号c3和c4的控制之下,选择电路SC2选择结果数据RD1和输出有效信号OV1、或结果数据RD2和输出有效信号OV2,作为结果数据RD和结果有效信号RV经由通信信道CC1向多路复用器MP1和MP2(图1)或向选择电路SC3和SC4(图3)传送。参照图5,在选择信号s3和s4的控制之下,多路复用器MP3和MP4分别选择通信信道CC1和CC2,用于将结果数据RD1和对应的输出有效信号OV1、或将结果数据RD2和对应的输出有效信号OV2作为结果数据RD和结果有效信号RV写入选择电路SC3和SC4。再次参照图1、3和5,在替换实施例中,发布插槽IS1和IS2的一个或多个功能单元支持受保护的运算,其中,附加的自变量例如被用作保护(guard)。在申请人提交的在前欧洲专利申请no.03101038.2[代理人摘要为PHNL030384EPP]中,描述了支持条件运算的时间固定的多指令字处理器。在条件运算的情况下,保护值被确定,并作为附加的自变量存储在寄存器堆RF1或RF2中。当执行条件运算时,保护值用于设置对应的输出有效信号OV1或OV2的值。倘若保护值等于真,则对应的输出有效信号被设置成真,如果输出有效信号未被对应的发布插槽另外设置成假的话。倘若保护值等于假,则对应的输出有效信号被设置成假,即使对应的结果数据无效,因而不被回写到寄存器堆RF1或RF2。可替换地,保护在执行该运算时不被当作附加的自变量,而是根据对应功能单元的流水线被延迟,并与该功能单元的输出有效信号进行求和计算。结果,倘若保护值为假,则保护加上输出有效信号的求和值也为假,并用于使对应的结果数据无效。
参照图1,在选择信号s2的控制之下,多路复用器MP1选择通信信道CC1或CC2,用于将结果数据RD写入寄存器堆RF1。倘若结果有效信号RV为真,则能够将结果数据RD写入寄存器堆RF1,否则,禁止将结果数据RD写入寄存器堆RF1,即结果数据RD不回写到寄存器堆RF1。倘若结果有效信号RV等于真,则结果数据RD被写入寄存器堆RF1的寄存器,而结果数据RD是在从VLIW指令字中导出的寄存器地址的控制之下选择的。类似地,在选择信号s1的控制之下,多路复用器MP2选择通信信道CC1或CC2用于将结果数据RD写入寄存器堆RF2。倘若结果有效信号RV为真,则能够将结果数据RD写入寄存器堆RF2,否则,禁止将结果数据RD写入寄存器堆RF1。倘若结果有效信号RV等于真,结果数据RD被写入寄存器堆RF2的寄存器,而结果数据RD是在从VLIW指令字中导出的寄存器地址的控制之下选择的。
图2中示出了选择电路SC1和SC2的实施例。选择电路SC3和SC4具有等同的实施例。输出有效信号OV1和选择信号c1被输入到“与”门201。输出有效信号OV2和选择信号c2被输入到“与”门203。“与”门201的输出和结果数据RD1被输入到“与”门205。“与”门203的输出和结果数据RD2被输入到“与”门207。“与”门201和“与”门203的输出还被输入到“或”门209,“或”门209输出结果有效信号RV。“与”门205和“与”门207的输出被输入到“或”门211,“或”门211输出结果数据RD。例如,输出有效信号OV1和OV2、选择信号c1和c2以及结果有效信号是一位的值,而结果数据RD1、RD2和RD是32位的值。倘若使结果数据RD1或RD2无效,则选择电路防止结果数据通过“或”门211输出。如果输出有效信号OV1或选择信号c1等于假、或者都等于假,则使数据RD1无效。如果输出有效信号OV2或选择信号c2等于假、或者都等于假,则使数据RD2无效。因此,如果输出有效信号OV1被发布插槽IS1设置成假,则动态地使结果数据RD1无效。如果输出有效信号OV2被发布插槽IS2设置成假,则动态地使结果数据RD2无效。结果,选择结果数据RD1或结果数据RD2或不选择结果数据向寄存器堆回写。在编码VLIW指令期间,如果静态地知道它们中至多一个是有效的话,则可以在单个处理器周期内安全地编码两个结果数据值对寄存器堆RF1或RF2的相同寄存器的回写。满足此条件的示例是“如果-则-否则”的结构。考虑下列程序段:
if(condition){
x=a+b:
}
else {
x=a-b;
}
两个运算“x=a+b”和“x=a-b”的条件是互斥的,则这些运算分别通过发布插槽IS1和发布插槽IS2的功能单元执行。第一或第二运算的结果必须写入寄存器堆RF1的相同寄存器,而该结果用变量x参考。在分离的指令中评价条件,保护值被存储在寄存器堆RF1中,而它的补数(complement)被存储在寄存器堆RF2中。VLIW指令这样编码,即两个操作都被编入相同的VLIW指令字,选择信号c1和c2都被设置成真,并且选择信号c3和c4都被设置成假。结果,运算“x=a+b”由发布插槽IS1执行,而运算“x=a-b”由发布插槽IS2执行。发布插槽IS1输出结果数据RD1,而对应的输出有效信号OV1等于真,假设保护即条件的估计等于真。发布插槽IS2输出结果数据RD2,而对应的输出有效信号OV2等于假。选择电路SC1使结果数据RD2无效,同时结果数据RD1是有效的,然后选择电路SC1经由通信信道CC2输出结果数据RD1作为结果数据,而对应的结果有效信号RV等于真。选择电路SC2没有输出有效结果数据RD,因为选择信号c3和c4两个都为假。参照图1,使用选择信号s2,通过多路复用器MP1选择通信信道CC2,并且结果数据RD1被回写到寄存器堆RF1的适宜寄存器。参照图3和5,通过将选择信号c6设置为真,并将选择信号c5、c7和c8设置为假,将结果数据RD1回写到寄存器堆RF1的适宜寄存器,因为对应于通信信道CC2的结果数据RD是有效的,即对应的结果有效信号RV等于真,同时,对应于通信信道CC1的结果数据RD是无效的,而且选择信号c5被设置成假。选择电路SC1允许通过使用输出有效信号OV1和OV2来使结果数据RD1和RD2中的至少一个无效,在单个处理器周期内对上述程序段所示两个运算的结果数据的回写进行调度。结果,不必在两个不同的处理器周期内对两个运算的结果数据的回写进行调度,就像如果使用常规多路复用器而不是使用选择电路SC2的情况。而且,在共享通信信道CC2上对结果数据RD1和RD2的回写进行调度,留下未进行回写结果数据的另一通信信道CC1,例如如果存在耦合于通信信道CC1的第三发布插槽的话。在替换实施例中,选择信号c1和c4的值被设置成真,而选择信号c2和c3的值被设置成假。在上述示例中,结果数据RD1是有效的,并作为结果数据RD经由通信信道CC2输出,而对应的结果有效信号RV等于真。选择电路SC1使结果数据RD2无效,这是因为选择信号c2等于假。选择电路SC2没有输出有效结果数据RD,因为选择信号c3被设置成假,并且通过等于假的输出有效信号OV2使结果数据RD2无效。在编码即将通过根据图1、3或5的VLIW处理器执行的VLIW指令时,两个结果向寄存器堆RF1或RF2的回写可以在单个处理器周期内调度,如果可以静态地证明这些结果数据中的至多一个是有效的,则甚至可以在共享通信信道CC1或CC2上对回写调度,但是必须静态地防止有效结果数据在单个处理器周期内被回写到寄存器堆RF1或RF2的相同寄存器。选择信号c1~c4的值静态地即在编译时被确定,并且用于选择通信信道CC1和/或CC2向寄存器堆RF1和RF2回写结果数据。根据图1和3的VLIW处理器的另一个优点在于不必在指令组中编码专用的空操作指令。例如,倘若在发布插槽IS1上对空操作指令进行调度,则使用选择信号c1和c3使发布插槽IS1产生的所有结果数据无效,并且可以使用编码空操作指令的任意运算码。有利地,以这样一种方法编码指令,即如果对合作操作(co-operation)指令进行了调度,则用来编码表示空操作指令的字段的值,从用于相同发布插槽的相邻的指令开始,尽可能地重复。结果,VLIW处理器中对应的组合逻辑将传送与先前或后续周期中相同的值,并因此减少数据跃迁的波动,因而不发生不必要的功耗。同样,参照图5,在对发布插槽IS1的空操作指令进行调度的情况下,选择信号c5和c7可用于使发布插槽IS1产生的所有结果数据无效。
参照图3,在发布插槽的两个输出都存在选择电路,即选择电路SC1和SC2,以及在寄存器堆的输入存在选择电路,即选择电路SC3和SC4时,有下列好处,即它在部分连接的通信网络下,提供调度指令的更多灵活性。在发布插槽数量大的情况下,就硅面积、延迟和功耗而言,完全连接的通信网络将是相当大的。在VLIW处理器的设计期间,决定发布插槽耦合于寄存器堆的程度,这取决于必须执行的应用的范围。参照图4,示出了局部互连的VLIW处理器。VLIW处理器包括可通过发布插槽IS1、IS2和IS3分别访问的三个寄存器堆RF1、RF2和RF3。出于简明的原因,示出的连接网络CN没有选择电路,实际上选择电路耦合于发布插槽IS1、发布插槽和发布插槽IS3的输出以及寄存器堆RF1、寄存器堆RF2和寄存器堆RF3的输入。发布插槽IS1只经由通信信道CC2寄存器堆回写结果数据,而发布插槽IS3只经由通信信道CC1向寄存器堆回写结果数据,即VLIW处理器具有部分连接的网络。此外出于简明的原因,通信信道CC1和CC2被表示为单条线路,但实际上都传送结果数据RD和结果有效信号RV的值。假设VLIW处理器必须执行下列程序段:
it(condition){
x=a+b:
}
else {
x=a-b;
}z=y*y
假设发布插槽IS1、IS2和IS3可以执行受保护的运算,则这些运算被调度为三个运算:
运算1:if(condition){x=a+b;}
运算2:if(lcondition){x=a-b;}
运算3:z=y*y
运算1由发布插槽IS1执行,运算2由发布插槽IS2执行,而运算3由发布插槽IS3执行。运算1和2的变量x指的是寄存器堆RF1或RF2的相同寄存器。发布插槽IS1和IS2能够在单个处理器周期内使用通信信道CC2作为共享信道,将它们各自的结果数据写入适宜的寄存器堆。在相同的处理器周期中,发布插槽IS3能够经由通信信道CC1将它的结果数据写入适宜的寄存器堆。可替换地,倘若发布插槽IS2不支持加减法运算,则运算1可以由发布插槽IS1执行,而运算2可以由发布插槽IS3执行。然而,因为发布插槽IS1和IS3不耦合于公共的通信信道,所以各自的结果数据必须分别经由通信信道CC2和CC1,被回写到适宜的寄存器堆。假设寄存器堆RF1和RF2是单端口的寄存器堆,即在单个处理器周期内只有一个值可以被写入寄存器堆,则仍然可以在单个处理器周期内对发布插槽IS1和IS3的结果数据的回写进行调度,这是因为处于寄存器堆RF1、RF2和RF3输入的选择电路将使用对应的结果有效信号,动态地选择有效结果数据。倘若多路复用器存在于寄存器堆RF1、RF2和RF3而不是选择电路的输入,则必须静态地选择通信信道CC1或CC2,并且将在两个分开的处理器周期内而不是单个处理器周期内,对来自发布插槽IS1和IS3的结果数据的回写进行调度。因此,使发布插槽的输出都具有选择电路,其中优选在寄存器堆的输入具有选择电路,提高了调度指令的灵活性,因而允许更坚固的指令调度。
参照图5,在替换实施例中,用于将结果数据RD1或RD2写入寄存器堆RF1和RF2的选择通信信道CC1或CC2,经由多路复用器MP3和MP4使用选择信号s3和s4来完成。使用选择电路SC3和SC4,在选择信号c5、c6、c7和c8的控制之下,只将有效结果数据RD1或RD2写入寄存器堆RF1或RF2中的寄存器。参照第一程序段,可以在单个处理器周期内对两个操作产生的结果数据的回写进行调度。通过分别在发布插槽IS1上执行第一运算和在发布插槽IS2上执行第二运算,并且在相同的处理器周期内,分别经由通信信道CC2和通信信道CC1对结果数据在寄存器堆RF1的寄存器中的回写进行调度,选择电路SC3使对应于结果数据RD1或结果数据RD2的结果数据RD无效。因此,只有有效结果数据RD被回写到寄存器堆RF1的寄存器。
参照图6,示出了选择电路SC1的替换实施例。选择电路SC1包括多路复用器605,而多路复用器605在“与”门603提供的信号的控制之下,选择结果数据RD1或RD2作为结果数据RD被回写到寄存器堆RF1和/或RF2。输出有效信号OV1和选择信号c1被输入到“与”门601。输出有效信号OV2和选择信号c2被输入到“与”门603。两个“与”门601和“与”门603的输出被输入到“或”门607。“与”门603的输出还被输入到多路复用器605,用于控制选择结果RD1或RD2作为结果数据RD被写入寄存器堆。“或”门607输出结果有效信号RV。倘若选择信号c2和输出有效信号OV2都等于真,则选择结果数据RD2作为结果数据RD回写,否则,选择结果数据RD2作为结果数据RD回写。使用“与”门601和602、和“或”门607,通过选择信号c1和c2以及输出有效信号OV1和OV2的值确定结果有效信号RV的值。倘若结果有效信号RV等于假,则对应的结果数据RD实际上将不会被写入寄存器堆。同样,选择电路SC2、SC3和SC4可以具有此替换实施例。
在另一实施例中,选择电路SC1、SC2、SC3或SC4可以包括三个或三个以上的输入端口,其允许动态地从三个或三个以上的结果数据中结果数据选择回写到寄存器堆。每个结果数据具有对应的输出有效信号。倘若在编译时知道至多一个输出有效信号在运行时间是有效的,则在单个处理器周期内安全地对结果数据的回写进行调度。
在另一实施例中,处理器包括单个寄存器堆而不是包含寄存器堆RF0和RF1的分布式寄存器堆。倘若VLIW处理器的发布插槽数相对较小,则单个寄存器堆的总开销也相对较小。
在另一实施例中,VLIW处理器可以具有不同数量的发布插槽,以及/或者一个发布插槽可以包括不同数量的功能单元。功能单元的数量取决于VLIW处理器必须执行的应用的类型而不是别的。处理器还可以具有不同数量的连接所述发布插槽的寄存器堆。
在另一实施例中,发布插槽IS0和IS1可以具有不同数量的输入和/或输出端口,其取决于发布插槽必须执行的运算类型,即需要两个以上运算数和/或产生一个以上结果的运算。寄存器堆RF0和/或RF1还可以具有不同数量的读取和/或写入的端口。
应该注意,上述实施例说明而非限制本发明,并且本领域技术人员在不脱离所附权利要求的范围的前提下,将能设计许多替换实施例。在权利要求中,括号内的任何参考符号将不会被理解为限制权利要求。单词“包括(comprising)”不排除存在权利要求所列元件或步骤之外的元件或步骤。在元件之前的单词“一”或“一个”不排除多个这种元件的存在。在列举了若干装置的设备权利要求中,这些装置中的一些装置可以通过同一个硬件项来体现。纯粹的事实即在互相不同的从属权利要求中叙述了某些措施,不表明这些措施的组合不能有利地使用。
Claims (12)
1.一种被安排成执行多指令字的处理设备,其中一个多指令字具有多个指令,所述处理设备包括:
多个发布插槽(IS1,IS2),被安排成并行执行多个指令;
寄存器堆(RF1,RF2),可由多个发布插槽访问;
通信网络(CN),用于耦合多个发布插槽和寄存器堆;
其特征在于,所述处理设备被进一步安排成针对由第一发布插槽(IS1)产生的第一结果数据(RD1)的有效性产生第一标识符(OV1),以及针对由第二发布插槽(IS2)产生的第二结果数据(RD2)的有效性产生第二标识符(OV2),
并且其特征在于,所述通信网络包括至少一个选择电路(SC1),所述选择电路(SC1)被安排成在单个处理器周期内,通过使用第一标识符和第二标识符,动态地控制第一结果数据或第二结果数据向寄存器堆的寄存器的传送。
2.根据权利要求1的处理设备,其特征在于,所述至少一个选择电路被进一步安排成在单个处理器周期内,通过使用第一和第二标识符,动态地控制不向寄存器堆的寄存器传送结果数据。
3.根据权利要求1的处理设备,其特征在于,所述至少一个选择电路分别耦合到第一和第二发布插槽的输出。
4.根据权利要求3的处理设备,其特征在于,所述通信网络被安排成经由共享通信信道(CC1,CC2)传送第一结果数据或第二结果数据。
5.根据权利要求1的处理设备,其特征在于,所述至少一个选择电路耦合到寄存器堆的输入。
6.根据权利要求1的处理设备,其特征在于,第一结果数据对应于第一条件运算,第二结果数据对应于第二条件运算,第一和第二条件运算具有互斥的条件,并且其中,第一标识符根据对第一条件运算的条件的评价来设置,第二标识符根据对第二条件运算的条件的评价来设置。
7.根据权利要求6的处理设备,其特征在于,所述第一和第二发布插槽被安排成分别产生针对结果数据有效性的第一和第二标识符。
8.根据权利要求1的处理设备,其中,所述选择电路被进一步安排成使用从多指令字导出的控制信息(c1,c2),静态地控制第一结果数据从第一发布插槽向寄存器堆或第二结果数据从第二发布插槽向寄存器堆的传送。
9.根据权利要求3的处理设备,其特征在于,所述通信网络还包括耦合到寄存器堆输入的第二选择电路(SC3,SC4)。
10.根据权利要求1的处理设备,其特征在于,所述寄存器堆是分布式寄存器堆。
11.根据权利要求1的处理设备,其特征在于,所述通信网络是部分连接的通信网络。
12.根据权利要求1的处理设备,其特征在于,所述至少一个选择电路被进一步安排成在单个处理器周期内,通过使用基于结果数据有效性的对应标识符,动态地控制至少第三结果数据向寄存器堆的寄存器的传送。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP04102109.8 | 2004-05-13 | ||
EP04102109 | 2004-05-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1950797A true CN1950797A (zh) | 2007-04-18 |
Family
ID=34966680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2005800149547A Pending CN1950797A (zh) | 2004-05-13 | 2005-05-09 | 多指令字处理器中反馈连接的运行时间选择 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7937572B2 (zh) |
EP (1) | EP1751655A2 (zh) |
JP (1) | JP5989293B2 (zh) |
KR (1) | KR101147190B1 (zh) |
CN (1) | CN1950797A (zh) |
WO (1) | WO2005111793A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317555A (zh) * | 2014-10-15 | 2015-01-28 | 中国航天科技集团公司第九研究院第七七一研究所 | Simd处理器中写合并和写撤销的处理装置和方法 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9250916B2 (en) * | 2013-03-12 | 2016-02-02 | International Business Machines Corporation | Chaining between exposed vector pipelines |
US10423218B1 (en) | 2018-03-12 | 2019-09-24 | Micron Technology, Inc. | Power management integrated circuit with in situ non-volatile programmability |
US10802754B2 (en) * | 2018-03-12 | 2020-10-13 | Micron Technology, Inc. | Hardware-based power management integrated circuit register file write protection |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4833599A (en) * | 1987-04-20 | 1989-05-23 | Multiflow Computer, Inc. | Hierarchical priority branch handling for parallel execution in a parallel processor |
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
DE69129569T2 (de) * | 1990-09-05 | 1999-02-04 | Philips Electronics N.V., Eindhoven | Maschine mit sehr langem Befehlswort für leistungsfähige Durchführung von Programmen mit bedingten Verzweigungen |
US5673427A (en) * | 1994-03-01 | 1997-09-30 | Intel Corporation | Packing valid micro operations received from a parallel decoder into adjacent locations of an output queue |
US5581717A (en) * | 1994-03-01 | 1996-12-03 | Intel Corporation | Decoding circuit and method providing immediate data for a micro-operation issued from a decoder |
US5668985A (en) * | 1994-03-01 | 1997-09-16 | Intel Corporation | Decoder having a split queue system for processing intstructions in a first queue separate from their associated data processed in a second queue |
US5659722A (en) * | 1994-04-28 | 1997-08-19 | International Business Machines Corporation | Multiple condition code branching system in a multi-processor environment |
JP2931890B2 (ja) * | 1995-07-12 | 1999-08-09 | 三菱電機株式会社 | データ処理装置 |
JPH1124929A (ja) * | 1997-06-30 | 1999-01-29 | Sony Corp | 演算処理装置およびその方法 |
US7272703B2 (en) * | 1997-08-01 | 2007-09-18 | Micron Technology, Inc. | Program controlled embedded-DRAM-DSP architecture and methods |
US6157988A (en) * | 1997-08-01 | 2000-12-05 | Micron Technology, Inc. | Method and apparatus for high performance branching in pipelined microsystems |
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 |
JP3472504B2 (ja) * | 1998-03-11 | 2003-12-02 | 松下電器産業株式会社 | 命令解読方法、命令解読装置及びデータ処理装置 |
US6535984B1 (en) * | 1998-11-25 | 2003-03-18 | Texas Instruments Incorporated | Power reduction for multiple-instruction-word processors with proxy NOP instructions |
US6442678B1 (en) * | 1998-12-31 | 2002-08-27 | Intel Corporation | Method and apparatus for providing data to a processor pipeline |
US6513109B1 (en) * | 1999-08-31 | 2003-01-28 | International Business Machines Corporation | Method and apparatus for implementing execution predicates in a computer processing system |
JP3664473B2 (ja) * | 2000-10-04 | 2005-06-29 | インターナショナル・ビジネス・マシーンズ・コーポレーション | プログラムの最適化方法及びこれを用いたコンパイラ |
US7269719B2 (en) * | 2002-10-30 | 2007-09-11 | Stmicroelectronics, Inc. | Predicated execution using operand predicates |
US7159103B2 (en) * | 2003-03-24 | 2007-01-02 | Infineon Technologies Ag | Zero-overhead loop operation in microprocessor having instruction buffer |
US20040210886A1 (en) * | 2003-04-15 | 2004-10-21 | Sverre Jarp | Optimized switch statement code employing predicates |
-
2005
- 2005-05-09 KR KR1020067023589A patent/KR101147190B1/ko not_active IP Right Cessation
- 2005-05-09 JP JP2007512683A patent/JP5989293B2/ja not_active Expired - Fee Related
- 2005-05-09 EP EP05734892A patent/EP1751655A2/en not_active Withdrawn
- 2005-05-09 CN CNA2005800149547A patent/CN1950797A/zh active Pending
- 2005-05-09 WO PCT/IB2005/051502 patent/WO2005111793A2/en not_active Application Discontinuation
- 2005-05-09 US US11/568,984 patent/US7937572B2/en not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104317555A (zh) * | 2014-10-15 | 2015-01-28 | 中国航天科技集团公司第九研究院第七七一研究所 | Simd处理器中写合并和写撤销的处理装置和方法 |
CN104317555B (zh) * | 2014-10-15 | 2017-03-15 | 中国航天科技集团公司第九研究院第七七一研究所 | Simd处理器中写合并和写撤销的处理装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
JP5989293B2 (ja) | 2016-10-05 |
EP1751655A2 (en) | 2007-02-14 |
WO2005111793A3 (en) | 2006-08-17 |
US7937572B2 (en) | 2011-05-03 |
JP2007537529A (ja) | 2007-12-20 |
KR101147190B1 (ko) | 2012-05-25 |
KR20070022260A (ko) | 2007-02-26 |
US20070174590A1 (en) | 2007-07-26 |
WO2005111793A2 (en) | 2005-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101620676B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 레지스터 파일 세그먼트 | |
KR101826121B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 | |
CN1177275C (zh) | 减少处理器中写入通信量的方法和系统 | |
US12086080B2 (en) | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits | |
US7779240B2 (en) | System and method for reducing power consumption in a data processor having a clustered architecture | |
US20050283588A1 (en) | Instruction control apparatus, function unit, program conversion apparatus, and language processing apparatus | |
CN1297888C (zh) | 32位媒体数字信号处理器 | |
CN1950797A (zh) | 多指令字处理器中反馈连接的运行时间选择 | |
CN102682232B (zh) | 一种高性能超标量椭圆曲线密码处理器芯片 | |
JPH10105402A (ja) | パイプライン方式のプロセッサ | |
Huang et al. | Extending value reuse to basic blocks with compiler support | |
US5770894A (en) | Parallel processing method having arithmetical conditions code based instructions substituted for conventional branches | |
Ghandour et al. | The potential of using dynamic information flow analysis in data value prediction | |
Janssen et al. | A specification invariant technique for regularity improvement between flow-graph clusters | |
Kim et al. | Implementing optimizations at decode time | |
US8051411B2 (en) | Method for copy propagations for a processor with distributed register file design | |
CN113703845B (zh) | 一种基于risc-v的可重构嵌入式处理器微架构及其工作方法 | |
CN114528248A (zh) | 阵列重构方法、装置、设备及存储介质 | |
CN1816799A (zh) | 在时间-固定处理器中对条件操作的支持 | |
US7698535B2 (en) | Asynchronous multiple-order issue system architecture | |
CN1302379C (zh) | 条件控制管理装置及方法 | |
Talla et al. | Mediabreeze: a decoupled architecture for accelerating multimedia applications | |
Yazdanpanah et al. | EREER: Energy-aware register file and execution unit using exploiting redundancy in GPGPUs | |
CN1826583A (zh) | 时间-固定处理器中零开销的分支和循环 | |
CN1276345C (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 | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |