允述在超长指令字处理器中处理可变长指令的设备、方法和编译器的制作方法

文档序号:6414558阅读:198来源:国知局
专利名称:允述在超长指令字处理器中处理可变长指令的设备、方法和编译器的制作方法
技术领域
本发明涉及处理设备,包括-输入装置,用于输入数据;-寄存器文件,用于存储所述输入数据;-至少第一发和第二发送插槽(issue slot),其中每个发送插槽包括多个功能单元;其中认为处理设备是基于从并行执行的指令集产生的控制信号来处理从寄存器文件检索的数据,指令集包括至少第一和第二指令、由对应于第一指令的第一控制字所控制的第一发送插槽以及由对应于第二指令的第二控制字所控制的第二发送插槽。
本发明还涉及用于处理数据的处理方法,所述方法包括下列步骤-在寄存器文件中存储输入数据;-基于从并行执行的指令集产生的控制信号来处理从寄存器文件检索的数据,指令集包括至少第一和第二指令、由对应于第一指令的第一控制字所控制的第一发送插槽以及由对应于第二指令的第二控制字所控制的第二发送插槽,其中第一和第二发送插槽包括多个功能单元。
本发明还涉及编译器程序产品,用于产生一序列指令集,配置指令集用于并行执行,所述指令集包括至少第一指令和第二指令。
本发明还涉及信息载体,其包括一序列指令集,配置指令集用于并行执行,所述指令集包括至少第一和第二指令。
本发明还涉及计算机程序,其包括计算机程序代码装置,用于指示计算机系统执行所述方法的步骤。
背景技术
包括固定数据通路的计算机机构,通过控制字集控制该固定数据通路。每个控制字控制部分数据通路,这些部分可包括寄存器地址、运算器(ALU)的运算码或其它功能单元。每个指令集一般通过指令解码器或直接通过微存储器(即包括控制字的存储器)产生新的控制字集,指令解码器将指令的二进制格式翻译为对应的控制字。一般地,控制字表示精简指令集计算机(RISC)的操作,该操作包括操作码、两个操作数寄存器索引和结果寄存器索引。操作数寄存器索引和结果寄存器索引指的是寄存器文件中的寄存器。
在超长指令字(VLIW)处理器的情况下,多指令封装在一个长指令(所谓的VLIW指令)中。VLIW处理器使用多个独立的功能单元以并行执行这些多指令。该处理器允许在程序中采用指令级并行性,从而一次可执行超过一条的指令。为了在VLIW处理器上运行软件程序,必须将该软件程序翻译为VLIW指令集。编译器尝试通过优化并行性使执行所述程序所需要的时间最小化。在可以并行执行分配给单VLIW指令的指令的限制条件下,以及在数据相关性的限制条件下,编译器将指令结合到VLIW指令中。对于数据稳定(stationary)VLIW处理器或时间稳定VLIW处理器而言,可以分别用两种不同的方式实现指令的编码。在数据稳定VLIW处理器的情况下,在单VLIW指令中将与给定数据项上执行的给定流水线操作相关的所有信息编码。对于时间稳定VLIW处理器而言,将与给定数据项上执行的流水线操作相关的信息分布在不同VLIW指令中的多指令上,从而暴露程序中的所述流水线处理器。
在实际应用中,功能单元很少是一起激活的。因此,在一些VLIW处理器中,在每个VLIW指令中提供的指令比全部功能单元一起所需要的指令少。例如通过使用复用器将每条指令导入选择的必须激活的功能单元。以这种方式,可以节省指令存储器容量,而很难兼顾存储器性能。在该结构中,在不同的时钟周期将指令导入不同的功能单元。将对应的控制字发给VLIW发送寄存器的各自的发送插槽。每个发送插槽与一组功能单元相关联。将特定控制字导入该组的功能单元中的一个与特定发送插槽相关联的特定功能单元。
VLIW指令中并行指令的编码导致代码大小的急剧增加。大的代码大小导致程序存储器成本(就所需存储器容量和所需存储器带宽而言)增加。在现代的VLIW处理器中采用不同的方法来减少代码大小。一个重要的例子是数据稳定VLIW处理器中空操作(NOP)操作的紧凑表示(例如可通过附加到VLIW指令前面的特殊报头中的单比特将NOP操作编码),这会导致压缩的VLIW指令。由于可以用比将其它指令编码更加紧凑的方式将一些指令编码,在VILW指令的每个指令中仍然会浪费指令比特。由于一些对应的操作需要比其它操作更多的操作数或产生比其它操作更多的结果,或者与其它的不需要或仅需要少量立即操作数的操作相反,当某些操作需要非常大的立即操作数时,出现指令的编码效率的差别。尤其当需要VLIW处理器的应用域具体调整以增加VLIW处理器的效率时出现这些差别。
可通过允许指令集中的操作(该操作会消耗多于两个操作数和/或产生多于一个结果)来获得强大的定制操作。在调谐而灵活的处理器中,这些复杂的操作一般与基本的操作共同存在,基本的操作只消耗两个操作数并且只产生一个结果。必须找到一种有效的指令编码以获得紧凑的代码大小,而不会由于可能更复杂的解码硬件而对性能、功率和面积产生大的负面影响。欧洲专利1113356描述了具有固定控制字宽度的VLIW处理器,使用相同数量的比特将每条指令编码。所述处理器包括多个执行单元和寄存器文件。将解码指令提供给执行单元,将数据提供给寄存器文件或从寄存器文件提供数据。
在先技术处理器的缺点是在单VLIW指令中不能够有效地对指令编码,其中所述指令具有相对于所需指令比特数量的可变需求。

发明内容
本发明的目的是提供处理设备,其允许使用指令集,同时维持有效的指令编码和解码,所述指令集包括强大的定制操作以及基本操作。
通过这里提出的一种处理设备实现本发明的目的,其特征在于第一控制字宽度和第二控制字宽度不同。在按照本发明的处理设备中,控制字宽度(即比特数量)适应于对应的发送插槽中的多个功能单元的复杂性。通过相对宽的控制字控制具有相对复杂的功能单元(例如,需要多于两个操作数和/或产生多于一个结果的功能单元)的那些发送插槽,同时通过具有相对小的控制字控制具有相对简单的功能单元的发送插槽。以这种方式,一方面允许强大的定制操作和基本操作,同时VLIW指令的总大小具有相对适中的大小。通过使解码过程适应于控制字宽度(由于解码硬件不太复杂,增强了处理设备的性能)允许有效的解码。此外,可将处理设备设计为具有包括相对简单的功能单元的发送插槽和包括更复杂的功能单元的发送插槽。这种结构使处理设备的设计适应于一给定范围应用的具体需要。
按照本发明的处理设备的实施例的特征在于,所述处理设备是VLIW处理器,其中在VLIW指令中将所述指令集分组。VLIW处理器允许并行执行多指令,这增加了操作的总体速度,同时具有相对简单的硬件。
按照本发明的处理设备的实施例的特征在于,VLIW指令是压缩VLIW指令,其包括用于将NOP操作编码的专用比特。用于将NOP操作编码的专用比特的使用有力地减少了VLIW指令的代码大小,从而减少了所需的存储器容量和带宽。
按照本发明的处理设备的实施例还包括用于将压缩VLIW指令解压缩的解压缩装置,认为所述解压缩装置是使用专用比特在控制字宽度上导出信息。专用比特可用于指示哪个与VLIW指令相关联的控制字包括非NOP操作,这使所述设备有效地将VLIW指令解压缩。
按照本发明的处理设备的实施例的特征在于,第一和第二控制字宽度是预定值的整数倍。结果,可使解压缩逻辑不太复杂并且使解压缩过程更快速。
按照本发明,一种处理方法的特征在于,第一控制字宽度与第二控制字宽度不同。该方法允许对指令有效编码,同时维持有效的解码过程,所述指令具有相对于需要的指令比特的数量的宽变化要求。
在从属权利要求中定义了本发明的优选实施例。权利要求12中定义了用于产生一序列指令集的编译器程序产品,适用于通过按照本发明的用于处理数据的处理设备执行所述一序列指令集。应该注意的是,TriMedia处理器的编译器是已知的,该编译器产生一序列指令集,其中指令集可包括两条具有不同宽度的指令。然而,对应于这些指令的控制字具有相同的宽度。权利要求13中定义了用于实现按照本发明的用于处理数据的方法的计算机程序。权利要求14中定义了包括一序列指令集的信息载体,通过按照本发明的用于处理数据的处理设备执行所述一系列指令集。


图1是按照本发明的VLIW处理器的示意图。
图2是包括相对简单的功能单元集的发送插槽UC0的示意图。
图3是包括更复杂的功能单元集的发送插槽UC3的示意图。
图4示出压缩VLIW指令和对应的解压缩VLIW指令。
具体实施例方式
参考图1,示意框图示出VLIW处理器,其包括多个发送插槽(包括发送插槽UC0、UC1、UC2、UC3UC4)以及寄存器文件(包括寄存器文件段RF0和RF1)。处理器具有控制器SQ、用于耦合寄存器文件段RF0和RF1的连接网络CN以及发送插槽UC0、UC1、UC2、UC3和UC4。寄存器文件段RF0和RF1耦合到总线(图1中未示出),寄存器文件段经由该总线接收输入数据。发送插槽UC0、UC1、UC2、UC3和UC4表示具有少量相对简单的功能单元的发送插槽,上述功能单元仅仅需要两个操作数并且仅仅产生一个结果。发送插槽UC3包含更多更复杂的功能单元,该功能单元需要多于两个操作数和/或可能产生多于一个结果。支持更大的操作集和更大的立即值或者可访问更大的寄存器地址空间。结果,需要更多的比特来将该发送插槽UC3的指令编码,从而需要更大的对应的控制字。连接网络CN允许在寄存器文件段RF0、RF1和发送插槽UC0、UC1、UC2、UC3、UC4之间传送输入数据和结果数据。
在一些实施例中,寄存器文件段RF0和RF1是分布式寄存器文件(即使用若干寄存器文件(每个寄存器文件用于有限发送插槽集)代替一个中央寄存器文件(该中央寄存器文件用于所有发送插槽UC0-UC4))。分布式寄存器文件的优点在于每个寄存器文件段需要更少的读和写端口,这导致寄存器文件区域更小、功耗降低以及操作速度增加。此外,与中央寄存器文件相比,分布式寄存器文件改进了处理器的可扩展性。
在一些实施例中,连接网络CN是部分连接的网络(即,不是每个发送插槽UC1-UC4都耦合到每个寄存器文件RF0和RF1)。部分连接的通信网络的使用降低了代码大小以及功耗,并使处理器的性能增加。此外,与完全连接的通信网络相比,部分连接的通信网络改进了处理器的可扩展性。
参考图2,示意框图示出发送插槽UC0的实施例。参考图3,示意框图示出发送插槽UC3的实施例。现在参考图2和图3,每个发送插槽包括解码器DEC、时间形状控制器TSC、输入路由网络IRN、输出路由网络ORN以及多个功能单元(分别是用于发送插槽UC0的FU01和FU02、用于发送插槽UC3的FU30、FU31和FU32)。解码器DEC在每个时钟周期将加在发送插槽的控制字CW解码。解码步骤的结果是操作数寄存器索引ORI,指的是寄存器文件段RF0和RF1中的寄存器,要执行的操作的操作数数据存储在其中。解码步骤的其它结果是结果文件索引RFI以及结果寄存器索引RRI,指的是寄存器文件段RF0和RF1中的寄存器,必须将结果数据存储在其中。解码器DEC经由耦合I将索引ORI、RFI和RRI传送到时间形状控制器TSC。时间形状控制器TSC根据执行操作的功能单元的输入/输出特性将索引ORI、RFI和RRI延迟适当量并将这些索引传送到连接网络CN,如图1所示。如果VLIW指令包括用于发送插槽UC0和UC3的指令,解码器DEC还经由耦合SEL选择用于发送插槽UC0的功能单元FU01或FU02中的一个以及用于发送插槽UC3的功能单元FU30、FU31或FU32中的一个以执行操作。此外,解码器DEC使用耦合OPT传送必须通过上述功能单元执行的操作类型的的信息。输入路由网络IRN经由耦合ID将操作数数据OPD传送到发送插槽UC0的功能单元FU01、FU02以及发送插槽UC3的功能单元FU30、FU31和FU32。发送插槽UC0的功能单元FU01、FU02以及发送插槽UC3的功能单元FU30、FU31和FU32将它们的结果数据经由耦合OD传送到输出路由网络ORN,随后输出路由网络ORN将结果数据RD传送到通信网络CN,如图1所示。
参考图2,可从功能单元FU01和FU02对应的耦合ID和OD的数量分别看出这些功能单元需要两个操作数并产生一个结果数据。功能单元FU01、FU02不需要任何大的立即值作为操作数数据。因此,和发送插槽UC0相关联的指令以及对应的控制字可保持在相对小,这是由于它们仅仅包括一个操作数代码、两个操作数寄存器索引ORI、一个结果文件索引RFI或结果寄存器索引RRL。
参考图3,功能单元FU30、FU31和FU32是更加复杂的功能单元。功能单元FU30和FU31需要三个操作数数据,功能单元FU31和FU32产生两个输出数据。此外,该功能单元可使用大的立即数作为操作数。与发送插槽UC3相关联的指令的宽度必须大于与发送插槽UC0相关联的指令的宽度,这是由于前者可包括一个操作数代码、三个操作数寄存器索引和两个结果寄存器索引。因此,发给发送插槽UC3的对应的控制字宽度必须大于发给发送插槽UC0的控制字宽度。
参考图4,其示出了图1中所示出的VLIW处理器的VLIW指令的例子。未压缩VLIW指令401包括5个控制字411-419,并且对应的发送插槽UC0、UC1、UC2、UC3和UC4的指令分别映象到各控制字上。控制字413、415和419包括分别与发送插槽UC1、UC2和UC4相关联的NOP操作。控制字411包括指令InstrA,控制字417包括指令InstrD,分别对应于发送插槽UC0和UC3。控制字411-419的宽度不相同,这使更简单的指令或更小的指令集的编码与相对简单的发送插槽相关联,并使更复杂的指令或更大的指令集的编码与更复杂的发送插槽相关联。例如,指令InstrA具有相对小的带宽,这是由于其对应于发送插槽UC0,而指令InstrD具有更大的带宽,这是由于其与发送插槽UC3相关联。
不同的指令格式可用于映象到相同控制字411-419中的不同的指令。例如,与从寄存器文件检索相反,指令格式取决于必须执行的指令的类型或者作为操作数的立即数的使用而变化。分别通过指令403和指令407示出指令InstrA的两种可能的指令格式。指令403包括四个字段421-427,分别具有操作代码OC1、结果寄存器索引D1和两个操作数寄存器索引S1和S2。或者,指令407包括三个字段429-433、分别具有操作代码OC3、结果寄存器索引D4和更大的立即操作数值IV2。图中通过指令405示出指令InstrD的可能的指令格式,指令405具有六个字段435-445、分别与一个操作代码OC2、两个结果寄存器索引D2和D3、两个操作数寄存器索引S3和S4以及一个立即操作数值IV1相关联。在控制字417中编码的不同指令的不同格式也是可能的(图4中未示出)。例如,在指令405中可将更多的比特用在编码更多操作或更大的立即值上,而将更少的比特用在操作数寄存器索引上。
图1中所示的VLIW处理器能够执行具体应用域的定制操作以及RISC似的操作。通过映象到VLIW指令401的控制字411-419上的指令之间的指令宽度的差别反映发送插槽UC0、UC1、UC2、UC3和UC4复杂性的差别。与指令相关联并分别发给发送插槽UC0-UC4的控制字宽度适应于具体发送插槽的指令宽度。此外,在设计VLIW处理器期间,控制字宽度是固定的。例如,指令InstrA的宽度比指令InstrD的宽度小,这导致发给发送插槽UC0的控制字411的宽度比发给发送插槽UC3的控制字417的宽度小。
可通过使用专用比特集将NOP操作编码的方式将未压缩的VLIW指令401压缩。通过VLIW指令409示出在压缩了VLIW指令401后的压缩指令的示例,VLIW指令409包括具有专用比特集的字段447以及分别具有指令InstrA和InstrD的控制字449和451。在专用比特集中的单比特把映象到VLIW指令401的控制字413、415和417上的NOP操作编码。比特“0”指的是NOP操作,字段447中比特的位置指向保持该NOP操作的VILW指令401中的控制字。字段447中的第二、第三和第五位置上的“0”比特分别指的是控制字413、415和419中的VLIW指令401中的NOP操作。字段447中的比特“1”指的是具有非NOP操作的指令,字段447中的比特位置指向该指令所映象到的VLIW指令401中的控制字。字段447中的第一和第四位置上的“1”比特分别是指控制字411和417中的指令InstrA和InstrD。如本领域的技术人员所了解的,在其它实施例中可应用不同的压缩VLIW指令的方法。
在有利的实施例中,VLIW指令是压缩VLIW指令。通过控制器SQ中的解压缩逻辑将压缩VLIW指令解压缩。在解压缩逻辑的硬件中规定每个控制字宽度。序列发生器SQ通过以下方式执行压缩VLIW指令的解码。分别通过将包括NOP操作的控制字加到VLIW指令409、使用“0”比特和其在字段447中的位置以及发给发送插槽UC0-UC4的每个控制字宽度的解压缩逻辑中的信息来将压缩VLIW指令解压缩。在对应的发送插槽UC0-UC4的内部,通过该发送插槽中的解码器DEC将控制字解码。对于每个发送插槽而言,在与该发送插槽相关联的解码器DEC的硬件中规定不同的指令格式和对应的控制字宽度。由于与不同的发送插槽相关联的控制字宽度可能不同,对应的解码器DEC的设计也可能不同,以优化其性能。由于在VLIW指令409中不需要附加比特来指示控制字宽度,因此可获得有效的指令编码。结果,可获得紧凑的代码大小。此外,由于字段447中的专用比特指示VLIW指令401中的哪些控制字包括具有非NOP操作的指令,并且由于解压缩逻辑知道每个控制字宽度,因此VLIW处理器具有快速地在运行时刻决定压缩VLIW指令409的哪些比特以及有多少比特属于映象到控制字449-451的每个指令的方法。当与具体发送插槽相关联的解码器DEC知道对应的控制字宽度和对应的不同指令格式时,也可以有效地实现在发送插槽UC0-UC4内部执行的解码。结果,使得可以快速有效地将指令解码。
优选地,对应于发送插槽UC0-UC4的所有控制字宽度是预定值(例如把1字节作为预定值)的整数倍。结果,由于现在能以等于那个预定值的片为一级来移动比特,结果降低了解压缩逻辑的复杂性,从而限制了在一级中必须移位的比特的最大数量。使用等于1字节的预定值的另一个优点与程序存储器中以字节对准形式理想存储的VLIW指令有关。将预定值选择在等于1字节以及将压缩VLIW指令409中包括专用比特集的字段447宽度选择在等于1字节的整数倍,自动导致压缩VLIW指令的字节对准。
在VLIW处理器的情况下,超标量处理器也包括能够并行执行多个操作的多发送插槽。然而,当确定不会发生资源冲突时,处理器硬件本身在运行时间决定哪一个操作相关性存在并且基于这些相关性决定要并行执行哪些操作。在本部分中描述的VLIW处理器的实施例的原理也适用于超标量处理器。一般而言,VLIW处理器可具有比超级标量处理器多的发送插槽。VLIW处理器的硬件与超标量处理器相比不太复杂,从而导致更好的可缩放结构。其中,发送插槽的数量和每个发送插槽的复杂性将决定使用本发明所能够获得的益处。
应该注意的是,上述实施例是说明而非限制本发明,在不脱离所附权利要求书的保护范围,本领域的技术人员可设计许多的替换实施例。在权利要求书中,置于括号内的任何标号均不应解释为限制了权利要求。动词“包括”不排除在权利要求中提到的以外的元件或步骤的存在。元件之前的词“一个”并不排除多个这种元件的存在。在列举了若干装置的装置权利要求中,若干这些装置可由一个和相同的硬件项来实现。在相互不同的从属权利要求中引用的一些措施并不表示这些措施的结合不能用来收益。
权利要求
1.一种处理设备,包括-输入装置,用于输入数据;-寄存器文件,用于存储所述输入数据;-至少第一和第二发送插槽,其中每个发送插槽包括多个功能单元;其中认为所述处理设备用于基于从并行执行的指令集产生的控制信号来处理从所述寄存器文件检索的数据,所述指令集包括至少第一和第二指令、由对应于所述第一指令的第一控制字控制所述第一发送插槽以及由对应于所述第二指令的第二控制字控制所述第二发送插槽,其特征在于所述第一控制字的宽度与所述第二控制字的宽度不同。
2.如权利要求1所述的设备,其特征在于所述处理设备是VLIW处理器,在VLIW指令中将所述指令集分组。
3.如权利要求2所述的设备,其特征在于所述VLIW指令是压缩VLIW指令,其包括专用比特,用于将NOP操作编码。
4.如权利要求3所述的设备,其特征在于其包括解压缩装置,用于将所述压缩VLIW指令解压缩,其中认为所述解压缩装置利用所述专用比特在所述控制字宽度导出信息。
5.如权利要求1所述的设备,其还包括连接网络,用于耦合所述寄存器文件和所述发送插槽。
6.如权利要求2所述的设备,其特征在于所述寄存器文件是分布式寄存器文件。
7.如权利要求1所述的设备,其特征在于所述第一和第二控制字的宽度是预定值的整数倍。
8.一种用于处理数据的处理方法,所述方法包括下列步骤-在寄存器文件中存储输入数据;-基于从并行执行的指令集产生的控制信号来处理从所述寄存器文件检索的数据,所述指令集包括至少第一和第二指令、由对应于所述第一指令的第一控制字控制的第一发送插槽以及由对应于所述第二指令的第二控制字控制的第二发送插槽,其中所述第一和第二发送插槽包括多个功能单元,其特征在于所述第一控制字的宽度与所述第二控制字的宽度不同。
9.如权利要求8所述的方法,其特征在于在VLIW指令中将所述指令集分组。
10.如权利要求9所述的方法,其特征在于所述VLIW指令是压缩VLIW指令,其包括专用比特,用于将NOP操作编码。
11.如权利要求10所述的方法,其还包括通过解压缩装置将所述压缩VLIW指令解压缩的步骤,其中所述解压缩装置利用所述专用比特在所述控制字宽度导出信息。
12.一种用于产生一序列指令集的编译器程序产品,将指令集配置为用于并行执行,所述指令集包括至少第一和第二指令,其特征在于将产生的一序列指令集配置为用于通过处理设备执行,所述处理设备包括至少第一和第二发送插槽,由对应于所述第一指令的第一控制字控制所述第一发送插槽,由对应于所述第二指令的第二控制字控制所述第二发送插槽,所述第一控制字的宽度与所述第二控制字的宽度不同。
13.一种计算机程序,包括计算机程序代码装置,用于指示计算机系统执行如权利要求8所述的方法的步骤。
14.一种信息载体,包括一序列指令集,将指令集配置为用于并行执行,所述指令集包括至少第一和第二指令,其特征在于将产生的一序列指令集配置为用于通过处理设备执行,所述处理设备包括至少第一和第二发送插槽,由对应于所述第一指令的第一控制字控制所述第一发送插槽,由对应于所述第二指令的第二控制字控制所述第二发送插槽,所述第一控制字的宽度与所述第二控制字的宽度不同。
全文摘要
计算机结构,包括固定数据通路,通过控制字集控制该数据通路。每个控制字控制部分数据通路。每组指令产生新的控制字集。在VLIW处理器的情况下,多指令封装在一个所谓的VLIW指令中。VLIW处理器使用多个独立的功能单元以并行执行这些多指令。在单VLIW指令中,VLIW处理器的应用具体域调整需要该指令具有可变需求以维持有效编码和指令编码,所述具有可变需求的指令的需求相对于指令所需要的能够编码的指令比特数量而变化。本发明描述了处理设备以及用于处理数据的处理方法,其允许使用这样的不对称指令集。处理方法包括至少第一发送插槽(UC
文档编号G06F9/45GK1675619SQ03819311
公开日2005年9月28日 申请日期2003年7月18日 优先权日2002年8月16日
发明者J·A·J·莱坦 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1