可重配置的流型矢量处理器的制作方法

文档序号:6412139阅读:138来源:国知局
专利名称:可重配置的流型矢量处理器的制作方法
技术领域
本发明总的来说涉及计算机处理器领域。更特别地,本发明涉及一种可重配置的流型矢量处理器。
背景技术
许多为移动设备(多媒体,图形,图像压缩/解压缩,等等)设计的新应用包括高百分比的流型矢量计算。这些应用的计算速率经常超过最好的通用CPU所能提供的速率。因此,希望找到一种方法来改善存在于这样的设备中的计算引擎的性能,以满足这些新应用计算上的需求。
同时,这些新应用的特性是标准以及遵照这些标准的最好的算法经常改变,需要一个可编程的并且易于编程的解决方案。况且,上市的时间压力在不断地在增加。针对这个问题的一个方法是增加对以前在软件及硬件方面的投资的重新利用。通过可编程性来最好地提升在多种产品内的硬件的重新利用。软件的重新利用是通过在一个设备的多样实现中的一致程序设计模型来提升的,以便保持二进制兼容性。
满足这个需求的一个尝试是使用硬件加速器。这些不足以解决问题,因为它们改编程序的能力有限。那些在功能上不固定的硬件加速器只允许在它们所执行功能的参数上的改变,而不是功能的类型或排序上的改变。
可编程的解决方案以矢量处理器、数字信号处理器、SIMD处理器和VLIW处理器的形式存在。这些解决方案由于它们的程序设计模型的限制而达不到目标,该限制导致它们在所有的硬件阶段都很难编程并且使之难于维持一致的程序设计模型。在它们的程序设计模型中的限制包括数据通路管道的程序设计员的可见度,存储器宽度及延迟,在存储器中的数据调整,以及显式资源的相关性。


被认为是该发明的特性的新颖特征将在所附的权利要求中阐述。然而,该发明本身,以及优选的使用模式,及进一步的对象和其中的优点,最好是在结合附图进行阅读的时候,通过参考下列说明性实施例的详细描述来理解,其中图1是本发明的可重配置的流型矢量处理器的一个实施例的图形表示。
图2是一个示范性的迭代计算的数据流图。
图3是对本发明的矢量处理器进行编程的一个进程的流程图。
图4是对一个主处理器进行编程以操作本发明的矢量处理器的一个进程的流程图。
具体实施例方式
尽管本发明容许有许多不同形式的实施例,但在图中示出了一个或多个具体实施例,并在这里将详细说明它们,要理解当前的公开内容应被看作本发明的原理的示范,而不是将该发明局限于示出并说明的具体实施例。在下面的说明中,在这些图的几个视图中,用相似的参考数字来描述相同、相似或对应的部分。
本发明的可重配置的流型矢量处理器(RSVP)是一个协处理器,它执行矢量操作即一组在一序列的数据元素上的相同操作。设计了通过执行高速矢量操作来增强嵌入式通用处理器(主处理器)的性能。在RSVP程序设计模型中,矢量操作的规范分成两个部分访问和计算。
在本发明的一个实施例中,提供了一个可重配置的流型矢量处理器,该处理器包括许多功能单元,每一个功能单元都具有一个或多个用来接收数据值的输入端以及一个用来提供数据值的输出端,该处理器还包括一个可重配置的互连开关和一个微型序列发生器。可重配置的互连开关包括一个或多个链路,可操作每一个链路,用以将功能单元的输出与功能单元的输入耦合在一起,如微型序列发生器所指导的那样。矢量处理器还包括一个或多个用来从存储器中检索数据的输入流单元。输入流单元是由主处理器控制的,并具有到该主处理器的规定接口。矢量处理器还包括一个或多个用来将数据写入存储器的输出流单元,同时还包括一个到主处理器的规定接口。
在一个进一步的实施例中,可重配置的互连开关包括一个用于存储中间数据值的存储器。
在优选实施例中,输入流单元的规定接口构成了程序设计模型的第一部分。在序列中的存储器中所存储的指令构成了程序设计模型的第二部分,该序列控制可重配置的互连开关。
图1示出了RVSP硬件100的一个示范性的实施例。参照图1,许多功能单元102的输出和输入都通过可重配置的互连开关104而相互连接。功能单元可以包括乘法器106、加法器108、逻辑单元110和移位器112。其它的功能单元也可以包括在其中,并且特定型号的多功能单元也可以包括在其中。来自功能单元的输出端可以是单精度(single)寄存器或是流水线寄存器。功能单元可以支持多路独立操作。例如,乘法器可以具有128比特的输入和128比特的输出,并且能够执行两个32×32到64或四个16×16到32比特的乘法,或是任何总计不超过128比特输入或128比特输出的组合。硬件也包括一个或多个累加器114。在优选实施例中,累加器的作用既是累加器也是存储寄存器,并且它们不仅接合到互连开关104也接合到外部接口116。外部接口116使RSVP能够与主处理器连接并使主处理器能够访问累加器和RSVP的其它部件。功能单元102和可重配置的互连开关104为RSVP规定了数据通路。功能单元和可重配置的互连开关104连接到微型序列发生器118,该微型序列发生器118包括存储器120(最好是高速缓存),用来存储描述执行过程的指令程序,即所要求的矢量计算的数据流图的特定说明。在处理器时钟的每一个周期,微型序列发生器产生控制字,该控制字配置在互连开关中的链路并驱动功能单元。纯量(scalar)值以及隧道节点功能性的存储和表示由常量单元120提供。纯量值和隧道初值可以由主处理器或是指令程序加载。在操作中,一个或多个输入流单元122(在图中只示出了一个单元)将输入数据值提供给互连开关104。每一个输入流单元122都由描述存储器中的数据分配的一组参数所控制。这组参数由主处理器提供,其中,通过外部接口116,输入流单元连接到该主处理器上。每一个输出流单元124(在图中只示出了一个单元)都类似地由主处理器来控制,并且可操作来从可重配置互连开关104传输数据到外部存储器。输入流单元122和输出流单元124都与使数据流同步的微型序列发生器118相连。
上述示范性RSVP的体系结构易于矢量访问和矢量计算的操作的分离。
由输入和输出流单元执行的矢量访问,由作为矢量操作的一部分的每一个输入和输出矢量的位置、形状以及类型的描述构成。在优选实施例中,这些属性是通过两个或多个参数来描述的1.矢量地址下一个矢量元素的存储器中的起始地址。
2.跨距(stride)从一个元素到下一个元素的带符号的增量。
3.跨度(span)在跳跃(skip)之前的跨距的数目。
4.跳跃在对元素的跨度进行计数之后的带符号的增量。
5.大小每一个数据元素的大小(例如,1,2或4字节)。
除了输入和输出矢量之外,矢量处理器还可以包括许多纯量和累加器寄存器,这些寄存器的初值可以由程序设计员指定。这些寄存器在矢量计算的内部使用。就累加器来说,寄存器的值允许在计算的过程中改变,并且可以为了以后使用而被访问。程序设计模型的矢量访问部分是以用于主处理器的程序设计语言来描述的,并在主机上执行。
矢量计算由将应用于输入矢量的元素的部分有序的运算符组、纯量寄存器以及导出每一个输出矢量元素的累加器所组成。在本发明的程序设计模型中,这通过计算的数据流图的线性化表示来完成。在数据流图中,在图中的每一个节点都使用一个节点描述符来标示,该节点描述符指定了将由该节点执行的操作以及从中获得输入数据的节点。这里没有像在其它CPU中那样显式命名在运算符之间传递数据的寄存器。这里是一个范例计算,它具有如下的C语言描述<pre listing-type="program-listing"><![CDATA[  void quant(short*out,short*in,int n,short qp)  {  long rq,b,c;   rq=((1<<16)+qp)/(qp<<1);   b=qp-!(qp &amp; 1);while(--n>0)  {   c=*in++;   if(c<0)c+=b;   else if(c>0)c-=b;   *out++(c*rq)/(1<<16);  }  }]]></pre>图2示出了一个相应的数据流图。参考图2,矢量v1在方框202中加载。该矢量的符号在节点204取出。纯量值s2和s1分别在方框206和208中加载。快速移位值16在方框210中加载。在节点212中用纯量s2乘以矢量v1。在节点214中从v1减去该乘法的结果。在节点216中用纯量s1乘以该减法的结果,然后在节点218中右移16。在方框220中将最后的矢量结果存储为v0。
数据流图的线性化的形式由以下给出Q1vld.s16 (v1) //c=*in++;Q2vsign.s16Q1Q3vscalar s2//s2 is bQ4vscalar s1//s1 is rqQ5vimm 16Q6vmul.s16 Q2,Q3//if(c<0)c+=b;Q7vsub.s16 Q1,Q6//else if(c>0)c-=b;Q8vmul.s32 Q7,Q4//c*=rq;Q9vasr0.s16Q8,Q5//*out++=c/(1<<16);这个示范性的线性化流程形式使用了以下功能操作vld.s16从16比特数据值中加载下一个数据元素vsign.s16计算数据值的符号
vscalar加载纯量值vmul.s16乘以两个16比特数据值vmul.s32乘以两个32比特数据值vsub.s16减去两个16比特数据值vasr0.s1616比特数据值的算术右移功能单元优选地执行多种其它功能操作,包括矢量元素加法(vadd)以及累加(vadda)。在执行之前,将线性化图调度到RSVP数据通路上。该数据通路在每一个时钟周期都是可重配置的。功能单元可以聚合,就是说可以联合它们的子集以形成更大的功能单元。功能单元的互连允许功能单元的任意流水线操作。
RSVP通过它的程序设计模型而促进了高性能和快速上市的目标。既然它是处理器,RSVP优选地使用单芯的程序设计模型。双芯解决方案倾向于更加不容易编程,如使用在通用CPU/DSP组合中的那样。这是因为使用这些类型的解决方案,程序设计员必须采用两套不同的程序设计工具并且必须明确地处理CPU和DSP之间的同步。
在本发明的程序设计模型中,矢量访问描述从矢量计算描述中分离出来了。因此,程序设计员并不需要处理两个相关要素的混合作用。因为矢量访问只根据五个参数来描述,程序设计员可以避免处理数据调整和填充、存储器总线宽度或存储器延迟的问题。基础矢量访问硬件处理这些问题。这样,不论是存储器子系统或是矢量访问硬件的实现,矢量访问描述都保持不变。这不仅简化了程序设计员的任务,也提高了二进制代码的兼容性,因为RSVP二进制代码不必为了反映出在那些实现中的变动而改变。
矢量计算描述(在数据流图的形式中)不包括RSVP数据通路实现的特殊信息。除了累加器和矢量流单元(VSU)的使用外,RSVP没有任何的资源相关性。特别是,它没有在运算符之间传递数据的寄存器的显式命名。这就为调度程序消除了负担,使调度程序更容易达到最优化的调度。结果,数据通路能从一个纯量数据通路改变成一个超纯量的、类似VLIW或SIMD的、对程序设计员透明的数据通路,并且没有在RSVP二进制代码内的变动。
在图3和图4中说明了在程序设计模型中矢量访问描述和矢量计算描述的分离。图3示出了用于生成用于RSVP的代码的方法的流程图。在开始方框302之后,在方框304中指定了计算的数据流图。在方框306中从数据流图生成了计算的线性图形式。该线性图形式的生成可以手动完成,或是由计算机程序自动完成。在一个实施例中,计算机程序为用户提供了图形用户界面,方便数据流图的输入。在方框308中,将在方框306中生成的线性图形式提供给调度程序。调度程序是一个计算机程序,它为了RSVP资源的高效使用而对功能操作进行排序。调度一结束,在方框310中就生成用于RSVP的二进制代码,并且进程在方框312中终止。注意这个进程并不考虑矢量访问问题,例如数据调整和填充、存储器总线宽度或存储器延迟。这些问题由硬件来处理。数据访问在主处理器中指定。图4示出了用于主处理器的程序设计进程。参考图4,在开始方框402之后,在方框404中指定在存储器中的数据结构。在方框406中,指定了相关的数据访问参数(起始地址,跨距,跨度,跳跃,大小)。在操作中,将这些参数传给RSVP的输入流单元。在方框408,生成主处理器代码的剩余部分,接着在方框410进程终止。因此,主进程指定矢量访问,但是与矢量计算无关。
RSVP硬件运用程序设计模型的多个方面以提高性能。由于矢量访问和计算的分离,因此相对于其它的硬件,用于每一个的硬件都异步地操作。从而,矢量访问硬件可以在计算之前进行,在需要数据之前就提取数据,因此就隐藏了至少一部分的存储器延迟。
矢量访问描述是非常简洁的,所有的信息都保存在访问硬件里的少量寄存器中。这些寄存器对主处理器来说是可访问的。类似的,RSVP数据流图在体系结构上受限于固定数目的节点(例如,256),这样RSVP微型序列发生器存储器对于保存数据流图的全部线性化的形式来说就是足够大的。这个方法的优点是硬件永远不需要提取指令来决定如何执行地址计算或矢量计算。这就消除了为了服务RSVP计算所需的从存储带宽中取指令。
既然将矢量计算指定为包含极少资源相关性的数据流图,那么RSVP数据通路就不像其它CPU的数据通路。大多数DSP、SIMD、VLIW和矢量处理器设备都不能以任意的顺序来连接它们的数据通路的功能单元。没有一个具有可以聚集的功能单元。
本领域的技术人员会认识到本发明是依照基于使用特定体系结构的示范性实施例而描述的。然而,不应该这样限制本发明,因为可以使用同等的体系结构来实现本发明。那些本领域的技术人员会进一步理解,可以在不偏离本发明的精神和范围的情况下做出在形式和细节上的各种改变。
虽然已结合具体实施例描述了本发明,但是显然根据上述说明,许多替换、修改、变更和变化对于本领域的普通技术人员来说都是显而易见的。因此,意味着本发明应当包含所有这样的落在所附权利要求的范围之内的替换、修改、变更以及变化。
权利要求
1.一种可重配置的流型矢量处理器,其包括多个功能单元,每一个功能单元都具有一个或多个用于接收数据值的输入端以及一个用于提供数据值的输出端;可重配置的互连开关,包括一个或多个链路,每一个链路都可操作的将功能单元的输出端耦合至功能单元的所述一个或多个输入端中的一个输入端;以及耦合到可重配置的互连开关的微型序列发生器,可操作的控制所述可重配置的互连开关。
2.根据权利要求1的可重配置的流型矢量处理器,其中,所述微型序列发生器包括用于存储指令程序的程序存储器。
3.根据权利要求1的可重配置的流型矢量处理器,其中,所述可重配置的互连开关包括用于存储数据值的开关存储器。
4.根据权利要求3的可重配置的流型矢量处理器,其中,所述开关存储器包括FIFO、按程序工作的延迟和流水线寄存器堆中的至少一个。
5.根据权利要求1的可重配置的流型矢量处理器,其中,所述可重配置的互连开关的链路由微型序列发生器控制,以从功能单元的输出端接收数据值并且向功能单元的所述一个或多个输入端中的一个输入端提供数据值。
6.根据权利要求1的可重配置的流型矢量处理器,进一步包括一个或多个耦合到所述可重配置的互连开关的输入流单元,可操作的从数据存储器检索输入数据值,并提供数据值给所述可重配置的互连开关;以及一个或多个耦合到所述可重配置的互连开关的输出流单元,可操作的从所述可重配置的互连开关接收数据值,并提供输出数据值给数据存储器。
7.根据权利要求6的可重配置的流型矢量处理器,其中,所述输入和输出流单元包括用于从主机接收控制指令的接口。
8.根据权利要求7的可重配置的流型矢量处理器,其中,所述控制指令包括以下各项的至少一项在数据存储器中的数据值的矢量的起始地址;数据值的矢量的跨度;数据值之间的跨距;在矢量数据值的跨度之间跳跃的大量存储器地址;以及在数据值的矢量中的每一个数据值的大小。
9.根据权利要求6的可重配置的流型矢量处理器,进一步包括外部接口,可操作的耦合到所述输入流单元、输出流单元以及到主机的微型序列发生器。
10.根据权利要求1的可重配置的流型矢量处理器,其中,所述功能单元包括以下各项中的至少一项移位器;加法器;逻辑单元;以及乘法器。
11.根据权利要求10的可重配置的流型矢量处理器,其中,所述功能单元进一步包括通过(passthrough)功能单元。
12.根据权利要求1的可重配置的流型矢量处理器,其中,所述多个功能单元中的至少一个的输出端包括寄存器流水线。
13.根据权利要求1的可重配置的流型矢量处理器,进一步包括至少一个耦合到所述可重配置的互连开关的累加器。
14.根据权利要求13的可重配置的流型矢量处理器,其中,所述至少一个累加器是可操作的耦合到主机的。
15.根据权利要求1的可重配置的流型矢量处理器,进一步包括多个纯量寄存器。
16.根据权利要求15的可重配置的流型矢量处理器,其中,所述多个纯量寄存器提供数据隧道。
17.一种用于配置流型矢量处理器的方法,所述流型矢量处理器处理器包括互连开关、微型序列发生器以及多个功能单元,该方法包括在所述微型序列发生器中存储指令程序;检索所述指令程序的指令;根据从所述指令程序中检索到的指令来配置所述互连开关;根据从所述指令程序中接收的指令而将存储在第一个存储器内的数据提供给功能单元;所述功能单元操作所述数据;以及根据从所述指令程序接收的指令而将来自功能单元的数据存储在第二个存储器中。
18.根据权利要求17的方法,其中,所述流矢量处理器进一步包括一个或多个具有缓冲存储器的输入流单元,其中第一个存储器是输入流单元的缓冲存储器以及在互连开关中的存储器中的一个或多个。
19.根据权利要求18的方法,该方法进一步包括每一个输入流单元根据一组从主机接收的参数而从外部存储器检索数据值并将它们存储在所述输入流单元的缓冲存储器中。
20.根据权利要求17的方法,其中,所述流型矢量处理器进一步包括一个或多个具有缓冲存储器的输出流单元,其中第二个存储器是输出流单元的缓冲存储器以及在互连开关中的存储器中的一个或多个。
21.根据权利要求20的方法,进一步包括每一个输出流单元根据一组从主机接收的参数而将来自所述输出流单元的缓冲存储器的数据值写入外部存储器。
22.一种用于对流型矢量处理器进行编程以执行迭代计算的方法,所述流矢量处理器具有可重配置的数据通路,该方法包括指定所述迭代计算的迭代的数据流图;从所述数据流图生成线性图,该线性图指定对应于所述数据流图的操作的部分有序集;调度所述线性图到所述流型矢量处理器的数据通路上;以及生成可操作的二进制代码指令以配置所述流矢量处理器的数据通路。
23.根据权利要求22的方法,其中,所述流型矢量处理器包括具有存储器的微型序列发生器,并且该方法进一步包括将二进制代码指令存储在所述微型序列发生器的存储器中。
24.根据权利要求23的方法,其中,所述调度所述线性图和生成二进制代码指令都由计算机来执行。
25.根据权利要求22的方法,其中,所述生成线性图进一步包括使用图形用户界面来对计算机指定所述数据流图以及所述计算机自动从所述数据流图生成所述线性图。
全文摘要
提供可重配置的流矢量处理器(100),它包括许多功能单元(102),每一个功能单元都具有一个或多个用来接收数据值的输入端和提供数据值的输出端,一个可重配置的互连开关(104)以及一个微型序列发生器(118)。可重配置的互连开关(104)包括一个或多个链路,可操作各个链路,以将功能单元(102)的输出与功能单元(102)的输入耦合在一起,如微型序列发生器(118)所指导的那样。矢量处理器还可以包括一个或多个用来从存储器中检索数据的输入流单元(122)。每一个输入流单元由主处理器所指导,并具有到该主处理器的规定接口(116)。矢量处理器还包括一个或多个用来将数据写入存储器或主处理器的输出流单元(124)。
文档编号G06F9/30GK1666187SQ03815336
公开日2005年9月7日 申请日期2003年5月20日 优先权日2002年6月28日
发明者菲利普·E·马伊, 肯特·唐纳·莫特, 雷蒙德·B·埃西克四世, 西尔维乌·基里切斯库, 布赖恩·杰奥弗雷·卢卡斯, 詹姆士·M·诺里斯, 迈克尔·艾伦·许特, 阿利·赛义迪 申请人:摩托罗拉公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1