《基于Xtensa LX可配置处理器构建Vectra LX引擎.docx》由会员分享,可在线阅读,更多相关《基于Xtensa LX可配置处理器构建Vectra LX引擎.docx(6页珍藏版)》请在第一文库网上搜索。
1、基于Xtensa1X可配置处理器构建Vectra1X引擎音频、视频、图像等所有媒体的数字化对信号处理提出了越来越高的要求,这些数字信号数据内容需要建立、存储、传输和重放。同时,越来越多的逋值和娱乐传输系统是便携式的,这需要极大地提高信号处理的带宽。日益增长的信号处理负载使得电气功耗成为信号处理系统的制约因素。蟠是进行数字信号处理的绝好选择,因为数字信号处理器可以编程,并且在当今数字媒体处理飞速变化的世界里可以容易地处理众多变化的标准。然而,通用DSP的“通用性”使得其并非对所有应用都能够实现很好的功耗效率(powerefficient)。硬线连接的信号处理模块通常有比较好的功耗效率,但是缺少D
2、SP那样的灵活性和可编程特性。可配置处理器技术通过建立针对某一特定任务属性正确的、功能丰富和可编程的DSP,在DSP的固定ISA(指令集体系结构)灵活性和可编程特性与硬线连接模块的功耗有效性之间建立起桥梁。Tensi1ica的Vectra1X是这种概念很好的诠释。Vectra1X是一个定点的向量DSP引擎,该引擎是通过配置选项在Xtensa1X可配置处理器的基础上建立起来的。可配置架构Vectra1X定点DSP引擎是XtenSa1X微处理器内核的一种配置。该定点DSP引擎是一个3发射的辿D处理器,具有四个乘法器/累加(四个MAe),它可以处理128位的向量。128位向量可以分成8个16位或者4
3、个32位的元素。整个VeCtra1XDSP引擎是用nE(Tensi1ica,SInstructionExtension)语言开发的,通过修丽以适合目标应用领域。正像图1所示,Vectra1XDSP引擎增加了16个向量寄存器(每个寄存器160位宽)、四个128位的向量队列寄存器、第二个加载/存储单元和210多条现有XtenSa1X处理器指令集体系结构中的通用DSP指令。图2,Vectra1XDSP引擎的160位向量寄存器与四个相同的S1MD部件相连,每个部件包括一个向量AIM一个独立的加法/减法部件、一个乘法器和一个选择部件.对齐寄存器支持非对齐加载和存储操作,并作为中间结果寄存器。此类髭蠡工炮
4、3隘1量寄存器转损成128位向量数据的加载扩展操作和将128位向量数无寄存器的存储饱和操作.基本的Xtensa1X处理器是一个单发射的微处理器,具有16位和24位指令。但是,TenSi1iCa的处理器产生器(processorgenerator)能够让开发人员增加更宽的指令字长。通过一种称为可变长度指令扩展F11X(F1exib1e-1engthInstructionExtensions)的技术为处理器指令集增添多个独立操作。F1IX指令宽度可以为32位或者64位,并且由于Xtensa1X处理器已经设计成可以处理多种指令宽度,因此多操作F1IX指令可以在处理器代码流中自由组合,并且可以和现有的
5、单发射XtenSa1X处理器指令连接在一起。当开发人员选择VeCtra1XDSP引擎配置选项时,TenSi1iCa的处理器产生器会自动将DSP引擎的RT1代码添加到可综合的Xtensa1X处理器中。新的Vectra1X指令被添加到处理器自动产生的软件工具集(编译器、汇编器、调试器、指令集仿真器ISS和实时操作系统RToS接口)中。Vectra1X使得Xtensa1X处理器门数增加20万25万门。这些增加的门数中的大部分用于构建VeCtra1XDSP引擎中的寄存器和执行部件,因为通用处理器和DSP引擎扩展可以共享处理器中现有的取指令和指令译码部件,所以那些硬件模块不需要重新复制。然而,需要增加一
6、些逻辑用于对新的指令进行译码。图2为VeCtra1XDSP引擎配置选项中增加的寄存器和执行部件框图。G!|比|27;|”3A1U&2w,1d/StMAC&Se1ect1oadZStore&Core困3,64位的Vectra1X指令字长度不等地分布在三,1作指令十中一个24位的指令槽和两个18位的指令槽。指令宇中最右上是:定女示该指令宽度为64位。图3表示三操作VeCtra1X指令字格式。指令字中最右边四位表示该指令宽度为64位。剩下的60位指令字长度不等地分布在三个操作指令槽中:一个24位和两个18位的指令槽。Vectra1X指令字中的24位操作指令槽(指令字中第4位到第27位)可放置Xten
7、sa1X处理器中所有80条基本指令,包括控制第一个加载/存储单元的操作。该操作指令槽还可以处理扩展的128位加载/存储指令,此指令可将信息存到VeCtra1X宽向量寄存器中,也可以从该向量寄存器读出信息。VectorRegisterA1ignmentRegisterFromFwnmemoryAfvnot(foopneza6.400420c)dd2Ov3.v.v2.rmu1r1Bv1.v11,v12.tvs16xuv.14.a8PacMov2,v0.v10.7v.v.v5.93:tvs1.xuv4.14.a8nop;mu1r18v7,v11.v12;t*1XMv5.14.0ad2Ovf1.w.v
8、5.nop;Is1xuv.141a8dd2Ov2.v4.e.rmu1r18v10.v.v13,vs1.u2.7.8sut2Ov11.v.v2nop:Iws16iv12.a4,16Nb20v9.v4.v9;rnu1r1v4.v11.v12;v1,xu5T3,7.a8pac40v2,v7.v1;so!v1.v9.v9.s.svs1.xuv14.07.aut2Ov7.v.v5.IrnU1r18v.v11.*12.nop;sut2v5.v7.v1.HOP;1vs16Jv124.-32sub2Ov.v7.v1;murt8v9,*6.*13;sfxuv3.a7.a8PMA40vt4v.Mo1v11.v,v
9、S,1;nop:Uti1ization-*92%10083%图6,一个256点的基4复数FFT算法全部利用了Ve1.XRSP引孥中的四个乘累加MAC单元(如图6中的中间一列),并且户个律飞杷受了充分利用。一个最基本的Xtensa1X处理器配置在计算一个256点的基4复数FFT算法时需要155000个时钟周期。如果为基本处理器配置增加一个32位乘法器,那么执行相同的FFT算法需要23633个时钟周期,减少接近一个数量级;如果像在VeCtra1XDSP引擎中那样增加SIMD和多操作能力,则需要944个时钟周期,减少两个以上的数量级,性能大约提高156倍。软件环境开发DSP体系结构性能要求有相关的软
10、件工具,以便理解和有效地运用DSP的结构特征。一个称为XCC的向量化C/生编译器支持Xtensa1X和Vectra1X体系结构。该编译器能够按照和传统C数据类型相同的方式来自动处理向量数据类型,如图8所示。向量类型的转换是隐含进行的。uhona(12M).b|12X|.c(!2*1;CCOdevotd)finercw10;ini4fex卜12机卜)c(i-M1ZA(I印)163JMJComp1ied1oopIoopgtza1I.1(pk40v6,vj.v5;mu11S.04.0.vI;1v*16.iuvOvaAJ6)(mif40v3,v2v7;nop;1v16Jv19J6)(mif4Ov5,v
11、4.r7;mu11K.Iv2vv,I;vhI6iuWM11(M6)Compi1ervectorizes,b,c-A9B.C.8e1ementsperve图8,XCC编译器按照和传统C数据类型相同的方式/.理闩鲤公圮卖力。向量数据类型的转换是隐含进行的。256ptFFT(Radix-4)为了获得更高的处理器性能,XCC编译器利用VeCtra1X单指令流多数据流执行部件寻求各种机会对代码进行向量化,主要针对循环语句,如图9所示。在对DSP代码进行编译时,XCC编译器产生一串连续的VCCtra1X操作,然后调度这些操作,并将其封装成VeCtra1X宽指令字,如图10所示。调度汇编器对汇编代码也做相同的操作。Simp1eRISCTaskEngineMinima1ConfigurationXtensa1Xprocessorusingsoftwaremu1tip1y155,389cyc1esSca1arPerformanceBaseXtensa1Xpr