多处理器系统中的类型转换单元的制作方法

文档序号:6479510阅读:150来源:国知局
专利名称:多处理器系统中的类型转换单元的制作方法
技术领域
本发明涉及一种处理器,该处理器包括多个执行单元,一个可由执行单元访问的寄存器堆以及一个用于连接执行单元和寄存器堆的通信网络。
背景技术
对高性能计算不断增长的需求已经导致出现了几个解决方案,在这些方案中,一些并行处理(concurrent processing)的形式(例如并行(parallelism))已经被引入处理器体系结构。一种实现高性能的广泛使用的概念是引入指令级并行,其中,处理器体系结构中出现许多执行单元,用于同时执行或多或少的许多指令。两个主要概念已经被采用多线程的概念,在该概念中,一个程序的多个线程可由执行单元访问;以及超长指令字(VLIW)的概念,在该概念中,与执行单元的功能性一致的多组指令在指令集中出现。
在超长指令字(VLIW)处理器的情况中,多个指令被打包为一个长指令,称为VLIW指令。VLIW处理器使用多个独立的执行单元来并行地执行这些指令。处理器允许在程序中使用指令级并行并且从而同时执行多个指令。为了使软件程序能在VLIW处理器上运行,它必须被转化成一组VLIW指令。编译器通过优化并行以试图最小化执行程序所需的时间。根据分配给单个VLIW指令的多个指令可以被并行执行的约束以及数据独立性的约束,编译器将多个指令组合到一个VLIW指令。对于数据固定的VLIW处理器或对于时间固定的VLIW处理器,多个指令的编码可以分别用两种不同的方法完成。在数据固定的VLIW处理器的情况下,所有涉及将在给定的数据项上执行的运算的给定的流水线的信息都被编码进一个单独的VLIW指令中。对于时间固定的VLIW处理器,涉及将在给定的数据项上执行的运算的流水线的信息被分散在不同VLIW指令中的多个指令,因此在程序中曝露了处理器的所述流水线。
在大多数高级编程语言中,可以使用多种数据类型。在使用C语言作为编程语言的程序中,数据类型经常被隐式地转换或显式地转换为另一种数据类型。当执行程序时,可以在VLIW处理器的网络中或在执行单元的输出执行实际的类型转换。在特定用途VLIW处理器的情况下,即,在VLIW处理器被设计用于处理特定的应用程序范围的情况下,VLIW处理器的网络或执行单元可能不为所有的数据类型转换提供所需的类型转换硬件。因此,结果是不能为将在这种VLIW处理器上运行的一些应用程序执行某个数据类型转换。
US 6,460,135描述了一种微处理器,其包括输入/输出执行单元,计算执行单元,多个数据寄存器,指令控制器以及互连结构。指令控制器译码指令字并将操作码发送给输入/输出执行单元或计算执行单元。类型信息寄存器与数据寄存器相结合,并且信息寄存器保存指示存储在相应数据寄存器中的数据的数据类型和有效位宽度的类型信息。独立于用于计算的数据的类型信息,指令字指明执行结果的类型信息,即数据类型和有效位宽度。在需要两个操作数的操作的执行期间,计算执行单元比较两个操作数的类型信息,并且当存在不一致时产生中断,随后数据被转换为正确的类型,并且这个转换是在软件中进行的。在输入/输出执行单元必须执行输入/输出指令的情况下,它将存储在类型信息寄存器中的类型信息与指令字的类型信息进行比较。若不一致,也产生一个中断并且随后数据同样被转换为正确的类型,并且该转换是在软件中进行的。
现有技术的处理器的缺点在于,为了启动类型转换必须产生一个中断,所述的类型转换随后必须在软件中执行。结果,处理器的总体性能会大大降低。

发明内容
本发明的一个目的是增大能在特定用途多处理器系统中执行的数据类型转换的范围,尤其是在特定用途VLIW处理器中,提高那些系统的适应性。
这个目的是通过一种处理器来完成的,其特征在于该处理器还包括一个转换设备,用于当在多个执行单元中的一个执行单元与寄存器堆之间传送所述数据时转换数据类型。在通信网络不支持所需的数据类型转换的情况下,类型转换可以由转换设备来执行。通过允许转换设备执行广大范围的类型转换,可以提高特定用途多处理器系统的适应性,因为不同的应用程序,即在最初的应用程序范围之外的应用程序,也可以在该多处理器系统上运行。
本发明的一个实施例的特征在于寄存器堆是一个分布式的寄存器堆,并且通信网络是一个用于连接执行单元和分布式寄存器堆的选中部分的部分连接的通信网络。分布式寄存器堆的优点在于,每个寄存器堆段需要更少的读和写端口,从而导致更小的寄存器堆带宽。此外,与中央寄存器堆相比,分布式寄存器堆中的寄存器的寻址需要更少的比特。与完全连接的通信网络相比,部分连接的通信网络在编码大小和能量消耗方面也更节省,尤其是在有大量执行单元的情况下。
本发明的一个实施例的特征在于转换设备包括一个转换寄存器堆和一个转换单元,转换寄存器堆可由转换单元访问。在执行单元的结果必须被写入寄存器堆的多个寄存器并且结果具有不同的数据类型的情况下,数据可以被写入转换寄存器堆。随后,对于每个请求,转换单元可以从转换寄存器堆读取数据,将数据转换为所需的类型并将结果写入适当的寄存器。
本发明的一个实施例的特征在于处理器还包括一个通信设备,用于连接执行单元、转换单元、分布式寄存器堆,以及转换寄存器堆。在部分连接的通信网络的情况中,不能保证从每个执行单元或类型转换单元的输出到每个执行单元或类型转换单元的输入都存在一个通信路径。结果,执行单元可能不能够向转换单元传送数据。倘若不能通过通信网络来传送数据,则通信设备允许从执行单元的输出向转换单元,以及从转换单元向执行单元的输入传送数据。
本发明的一个实施例的特征在于通信设备支持编程语言的所有数据类型。本实施例的一个优点是所有数据都可以传送给转换设备用于数据类型转换,而不依赖于它的类型也不需要通过通信网络或通信设备自身进行任何中间转换。
本发明的一个实施例的特征在于通信设备连接所有的执行单元、转换单元、分布式寄存器堆的所有部分,以及转换寄存器堆。本实施例的一个优点是所有执行单元都可以通过通信设备向转换寄存器堆传送数据,并且转换单元可以通过通信设备一直向所有寄存器堆堆段传送数据。
本发明的一个实施例的特征在于转换单元是多个执行单元中的一个执行单元的一部分。本实施例的一个优点是不需要单独的转换单元,节省了额外的硅面积和通信连接。


图1示出了根据本发明的处理器,其包括多个执行单元。
具体实施例方式
参照图1,一个示意性的方框图说明了一个VLIW处理器,其包括多个执行单元101,103和105,以及一个分布式寄存器堆,包括寄存器堆段109,111,113。该处理器还有一个转换设备135。转换设备135包括转换寄存器堆115和类型转换单元107。寄存器堆段109可以由执行单元101和103访问,寄存器堆段111和113可以由执行单元105访问,并且转换寄存器堆115可以由类型转换单元107访问。
该处理器还具有一个部分连接的网络117,用于连接执行单元101,103和105,以及分布式寄存器堆段109、111、113的选集和转换寄存器堆115。部分连接网络117还将转换设备135与选中的分布式寄存器堆段109,111和113相连。部分连接的网络117包括多路复用器119,121,123,125和127。处理器处理特定的应用程序范围,并且部分连接的网络117为这个目的而设计,即,如果该执行单元必须在那个范围内的应用程序执行期间将数值写入那个寄存器堆段,那么在处理器设计期间,通过部分连接的网络建立从执行单元到分布式寄存器堆段的连接。尤其是在有大量执行单元的情况下,就硅面积和多路复用的开销而言,通过直接连接将所有执行单元连接到所有分布式寄存器堆段将会非常昂贵。在设计期间,在执行单元101,103和105与转换寄存器堆115之间的部分连接的网络117的一部分连接,以及在类型转换单元107和分布式寄存器堆段109,111和113之间的部分连接的网络117的一部分连接都被固定。部分连接的网络117本身还支持许多数据类型转换,并且在处理器设计期间固定了支持哪些类型转换。
在处理器执行应用程序期间,数据类型转换必须由处理器来执行。例如,执行单元101产生一个无符号定点数类型的输出,其包括16比特,其中15比特被置于小数点后面,必须通过部分连接的网络117将其写入寄存器堆段111。执行单元105将使用这个数据输出作为运算的输入,但是这个输入要求是一个包括32比特,其中31比特被置于小数点之后的无符号的定点数。因此,该数据的类型必须转换。在这种情况下,部分连接的网络支持这种数据类型转换,并且包含16比特的无符号定点数被多路复用器123隐式地转换为包含32比特的无符号定点数。
当执行在处理器最初设计范围之外的应用程序时,可能出现所需的数据类型转换不能由处理器隐式地执行。例如,执行单元103产生一个无符号定点数类型的数据输出,其包含16比特,应该通过部分连接的网络117将其写入寄存器堆段113。执行单元105需要包含32比特的浮点数数据作为运算的输入数据。然而,多路复用器125不能进行从无符号定点数到浮点数的数据类型转换。在这种情况下,执行单元103通过部分连接的网络117将该数据写入转换寄存器堆115。类型转换单元107从寄存器堆段115读取该数据,并且这个单元通过执行一个专用的指令,将数据类型从无符号定点数转换为浮点数。随后,通过部分连接的网络117,类型转换单元107将浮点数形式的数据写入寄存器堆段113。现在具有正确数据类型的数据对于执行单元105是可用的。
另一种可能性是在一个在处理器最初设计的范围之外的应用程序的执行期间,一个执行结果被多于一个执行单元用作输入数据,但是这些执行单元需要不同的数据类型。如果执行单元包括一个内部状态,那么执行两次同样的操作并产生不同类型的输出结果是不可能的。例如,对于具有内部累加寄存器的乘加运算单元的情况,使用同样的输入数据相继执行两次同样的运算将导致不同的输出结果。例如,执行单元105产生包含32比特的无符号定点数类型的输出数据,这些数据必须通过部分连接的网络117写入寄存器堆段109两次,一次作为包含16比特的无符号定点数,一次作为包含32比特的浮点数。随后,这些数据分别被执行单元101和103作为输入数据所需要。然而,部分连接的网络117不能执行两种所需数据类型的转换。执行单元105通过部分连接的网络117将输出数据写入转换寄存器堆115。执行单元107从转换寄存器堆115读取该数据,将该数据从包含32比特的无符号定点数转换为包含16比特的无符号定点数,并通过部分连接的网络117将转换后的数据写入寄存器堆段109。接着,执行单元115再次从转换寄存器堆115读数据,将该数据从包含32比特的无符号定点数转换为包含32比特的浮点数,并通过部分连接的网络117将转换后的数据写入寄存器堆段109。随后,这些数据可以由执行单元101和103从寄存器堆段109中读取,并用于进一步的处理。
对于一些在该处理器上执行的应用程序,从执行单元101,103和105向转换寄存器堆115写数据或从类型转换单元107向寄存器堆段109,111和113写数据可能需要多于一个步骤。例如,执行单元101产生浮点数类型的输出数据,并且这个数据必须被作为无符号定点数写入寄存器堆段111,被用作将由执行单元105执行的运算的输入数据。然而,部分连接的网络不支持这种类型转换。类型转换可以由类型转换单元107来进行,但是执行单元101不能直接通过部分连接的网络117将它的输出数据写到寄存器堆段115,而只能通过选择的路径。一种可能的供选择的路径是执行单元101通过部分连接的网络117将它的输出数据写入寄存器堆段111,而不进行隐式数据类型转换。执行单元105从寄存器堆段111读取所述输出数据,并通过部分连接的网络117将这些输出数据写入寄存器堆段115。随后,类型转换单元107从寄存器堆段115读取所述输出数据并执行所需的数据类型转换。类型转换单元107不能通过部分连接的网络117将数据直接写入寄存器堆段111,而只能通过选择的路径。一种可能性是类型转换单元107通过部分连接的网络117将数据写入寄存器堆段109。随后,由将数据写入寄存器堆段111的执行单元101通过部分连接的网络117从寄存器堆段109读取数据。倘若在程序编译期间,编译器检测到数据不能由执行单元直接写入转换寄存器堆,或者不能由类型转换单元直接写入寄存器堆段,那么它将确定一条可供选择的路径并将所需的额外的指令插入程序中。
倘若部分连接的网络117不能执行期望的类型转换,那么类型转换单元107能够执行这个类型转换并通过部分连接的网络将转换后的数据写入适当的寄存器堆段。结果,处理器仍旧能够有效地执行处理器最初设计的范围之外的应用程序,提高了处理器的适应性。在这类应用程序的编译期间,编译器将检测到所需的数据类型转换不能由网络隐式地执行,并在程序中引入额外的指令用于通过部分连接的网络117向类型转换单元107发送数据,由类型转换单元107将该数据转换到所需的数据类型,并通过部分连接的网络117将转换后的数据发送到所需的寄存器堆段。由类型转换单元107执行的显式类型转换可以通过一个或多个运算来实现,如同本领域技术人员所知的那样。例如,当只使用无符号定点类型时,左移运算、右移运算和AND运算就足够了。在有符号定点类型的情况下,在右移运算中,应该能加入比特作为最高位的比特,以便防止符号比特的改变。
在另一实施例中通信网络117可以是一个完全连接的通信网络,即,所有执行单元101,103和105,以及类型转换单元107被连接到所有分布式寄存器堆段109,111和113,以及转换寄存器堆115。在相对少量的执行单元的情况下,完全连接的通信网络的开销也相对较小。
在可选实施例中,处理器还包括一个通信设备129,用于将功能单元101、103和105,类型转换单元107以及所有分布式寄存器堆段109、111和113,以及转换寄存器堆115连接起来。通信设备129与部分连接的网络117共享多路复用器119,121,123,125和127。通信设备支持所有的用于编写将要执行的应用程序所用的编程语言的数据类型。
在一些情况下,可能出现以下情况部分连接的网络117不能隐式地执行所需的类型转换。另外,用于向类型转换单元107的转换寄存器堆115写数据的,或从类型转换单元107向寄存器堆段109,111和113写数据的可供选择的路径可能需要很多步骤或甚至根本不存在。在这些情况下,倘若通过部分连接的网络117不能传送数值,那么通信设备129允许在执行单元101、103和105,类型转换单元107,分布式寄存器堆段109、111和113,以及转换寄存器堆115之间传送数值。通过这种方式,保证在执行单元101,103和105以及类型转换单元107的每个输出与执行单元101,103,105和类型转换单元107的每个输入之间存在通信路径。例如,执行单元101不直接通过部分连接的网络117连接到寄存器堆段115,但是仅仅存在通过通信设备129的直接相连。然而,如果可能,通过部分连接的网络117在执行单元、类型转换单元和寄存器堆之间进行直接通信是优选的。
例如,执行单元101产生作为包含32比特的无符号定点数的结果数据,这些数据必须被写入寄存器堆段111,用于执行单元105的后续使用,执行单元105需要浮点数数据作为输入数据。执行单元101不能通过部分连接的网络117直接将该数据写到寄存器堆段111,因为它不支持这种类型的数据转换。执行单元101也不能通过部分连接的网络117直接将输出数据写到寄存器堆段115,因为这个连接不存在。另外,类型转换单元107也不能通过部分连接的网络117直接将数据写到寄存器堆段111,因为这个连接也不存在。编译器在程序编译期间检测到这些问题,决定通过通信设备129传送数据,并将用于执行这些数据传送的适当的指令插入程序中。执行单元101通过通信设备129向寄存器堆段115写入输出数据。随后,类型转换单元107从转换寄存器堆115读取该数据并将数据类型转换为浮点数。随后,类型转换单元107通过通信设备129将该数据写入寄存器堆段111。在可选实施例中,数据可以通过部分连接的网络117从执行单元101,103和105写入转换寄存器堆115,并且随后通过通信设备129从类型转换单元107写入寄存器堆段109,111和113。在另一实施例中,数据可以通过通信设备129从执行单元101,103和105写入转换寄存器堆115,并且随后通过部分连接的网络117从类型转换单元107写入寄存器堆段109,111和113。
优选地,安排通信设备129用于与第一等待时间(latency)进行通信,安排部分连接的通信网络117用于与第二等待时间进行通信,所述第一等待时间超过所述第二等待时间。这个实施例的一个优点是它防止通过通信设备129的通信成为限速步骤,所以它允许处理器在最大时钟频率运行。此外,实现了较高的吞吐量。通常,通信设备129包括一个共享的通信机制的形式。因此,通过通信设备129的通信可能会由于它的控制逻辑而减慢,尤其是在有大量执行单元的情况下。将通过通信设备的通信分成多个连续的步骤,每个步骤发生在一个时钟周期内,保持一个通信步骤的等待时间较低。这防止通过通信设备的通信限制处理器的时钟频率。通过通信设备的通信的总等待时间,即所有单独步骤的等待时间之和,将会比通过部分连接的通信网络的通信的等待时间要高。然而,通过通信设备129的通信的更高的等待时间几乎不会影响处理器的总体性能,因为通信的主要部分将通过部分连接的通信网络117来发生。
在一个优选实施例中,通信设备129包括一个多路复用器131和一个全局总线133,安排多路复用器用于将功能单元101、103和105,类型转换单元107以及全局总线133连接,安排全局总线133将多路复用器131和所有的分布式寄存器堆段109、111和113,以及转换寄存器堆115连接。全局总线133与部分连接的通信网络117的不同在于多个功能单元101、103和105,以及类型转换单元107与全局总线133相连,而且这些功能单元和类型转换单元时分复用全局总线,然而,部分连接的通信网络117将一个执行单元或转换单元连接到一个寄存器堆段或转换寄存器堆。全局总线的一个优点是与完全连接的通信网络相比,就硅面积的开销而言使相对较低的。
执行单元或类型转换单元可以与一个寄存器堆段相连,例如在类型转换单元107的情况下;或者与多个寄存器堆段相连,例如在执行单元105的情况下;或者多个功能单元可以与一个寄存器堆段相连,例如在功能单元101和103的情况下。寄存器堆段可以与一个执行单元相连,例如在转换寄存器堆115的情况下;或者与多个执行单元相连,例如在寄存器堆段109的情况下。寄存器堆段和执行单元之间的连接程度依赖于执行单元必须执行的操作的类型。
在图1所示的实施例中,部分连接的网络117和通信设备129共享一些资源,如多路复用器119、121、123、125和127。在其他实施例中,甚至更多的资源可以被共享,或者没有资源被共享。
在其他实施例中,类型转换单元107可以是执行单元101、103和105中之一的一部分,并且寄存器堆段115可以是那个执行单元的对应的寄存器堆段的一部分。
一个超标量体系结构处理器还包括多个能够并行地执行多个运算的发射槽(issue slot),例如在VLIW处理器的情况下。然而,在运行时,处理器硬件自己确定存在哪些操作依赖,并且基于这些依赖决定并行地执行哪些运算,同时保证不出现资源冲突。这些在这个部分中所描述的用于VLIW处理器的实施例的原理,也适用于超标量体系结构处理器。通常,VLIW处理器可以比超标量体系结构处理器具有更多的执行单元。VLIW处理器的硬件不如超标量体系结构处理器的复杂,这导致了更好的可扩展的体系结构。在各种因素中,执行单元的数量和每个执行单元的复杂度将决定使用本发明所能获得的好处的多少。
应该注意上述的实施例说明而不是限制本发明,本领域的技术人员在不脱离所附权利要求的范围的情况下可以设计许多可选实施例。在权利要求中,任意放在圆括号之间的标号不应理解为限制该权利要求。词语“包括”并不排除权利要求中所列之外的成分或步骤的存在性。成分之前的词语“一个”并不排除多个这种成分的存在。在设备权利要求中列举了几个模块,这些模块中的许多可以通过一个相同硬件来实现。某些措施在相互不同的从属权利要求中被列举的事实并不表示这些措施的组合不能产生便利。
权利要求
1.一种处理器,包括多个执行单元(101,103,105);寄存器堆(109,111,113),可由所述执行单元访问;通信网络(117),用于连接所述执行单元和所述寄存器堆,特征在于所述处理器还包括转换设备(135),用于当在所述多个执行单元中的一个执行单元与所述寄存器堆之间传送数据时转换所述数据的类型。
2.如权利要求1所述的处理器,其中所述寄存器堆(109,111,113)是分布式寄存器堆;所述通信网络(117)是部分连接的通信网络,用于连接所述执行单元和所述分布式寄存器堆的选中的部分。
3.如权利要求2所述的处理器,其中所述转换设备(135)包括转换寄存器堆(115)和转换单元(107),所述转换寄存器堆可由所述转换单元访问。
4.如权利要求3所述的处理器,其特征在于所述处理器还包括通信设备(129),用于连接所述执行单元(101,103,105)、所述转换单元(107)、所述分布式寄存器堆(109,111,113)、以及所述转换寄存器堆(115)。
5.如权利要求4所述的处理器,其特征在于所述通信设备(129)支持编程语言的所有数据类型。
6.如权利要求4所述的处理器,其特征在于所述通信设备(129)连接所有的执行单元(101,103,105)、所述转换单元(107)、所述分布式寄存器堆(109,11,113)的所有部分、以及所述转换寄存器堆(115)。
7.如权利要求6所述的处理器,其特征在于所述转换单元(107)是所述多个执行单元(101,103,105)中的一个执行单元的一部分。
全文摘要
本发明涉及一种超长指令字(VLIW)处理器,包括多个执行单元(101,103,105),寄存器堆(109,111,113)以及一个用于连接执行单元和寄存器堆的通信网络(117)。在一种特定用途VLIW处理器的情况下,即,在一种VLIW处理器被设计用于处理特定的应用程序范围的情况下,VLIW处理器的通信网络可能不支持所有类型的数据转换。因此,结果是对于一些运行在这样的VLIW处理器上的应用程序,不能进行某种数据类型的转换。通过在VLIW处理器的体系结构中并入一个类型转换单元(107),可以保证能够进行任何期望的数据类型转换。在部分连接的通信网络(117)的情况下,还可以在该体系结构中并入一个通信设备(129),允许每个执行单元向类型转换单元传送数值,并允许类型转换单元向分布式寄存器堆的任意堆段传送数值。
文档编号G06F9/30GK1761941SQ200480007180
公开日2006年4月19日 申请日期2004年3月17日 优先权日2003年3月19日
发明者马尔科·J·G·贝库伊吉 申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1