首页> 中国专利> 一种可扩展向量运算簇

一种可扩展向量运算簇

摘要

一种可扩展向量运算簇,包括向量处理阵列、支持压缩指令的向量译码器、用于存放多种数据类型的局部向量寄存器文件/累加器以及支持行列访问的矩阵寄存器文件,所述向量处理阵列包括2~64个同构向量处理单元,所述每个向量处理单元拥有独立的局部向量寄存器文件/累加器并共享矩阵寄存器;所述局部向量寄存器文件/累加器和矩阵寄存器文件提供指令操作的数据来源和目的。本发明具有原理简单、适用范围广、处理效果好、能够有效支持最前沿各类数字信号处理算法等优点。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2012-07-18

    授权

    授权

  • 2011-06-01

    实质审查的生效 IPC(主分类):G06F17/16 申请日:20101125

    实质审查的生效

  • 2011-04-13

    公开

    公开

说明书

技术领域

本发明主要涉及到执行大规模并行数据处理的数字信号处理器领域,特指一种可扩展向量运算簇,即一种支持向量压缩指令、内部集成紧耦合扩展功能单元、且向量宽度可配置的可扩展向量运算簇。

背景技术

当前快速发展的无线通信、视频图像、雷达信号处理应用中,算法对微处理器的性能要求越来越高。针对算法程序中大量数据的并行性,当前数字信号处理器结构在灵活性、功耗和性能方面采取不同的折中策略,提出了各种解决方案。如流处理器,阵列处理器,向量处理器等。单指令流多数据流(SIMD)流处理器的代表Imagine,内部包含了8个算术簇,具有较强的计算能力,但在SIMD簇数目、功能部件类型设置、数据通路等方面,未针对数字信号处理领域进行专门优化,且包含了大量对浮点运算的支持,功耗显得过高。阵列处理器集成了大量运算阵列,同样提供了强大的运算潜力,但在算法并行分解,算法映射和数据流优化上难度较大。向量处理器集成向量运算簇,以SIMD的方式在每始终周期同时对多组源操作数进行处理,能够在低频下提供强的运算能力,缺点是增加向量运算簇的宽度,使得处理器中的数据流数目增多,能够利用硬件资源实现大的数据处理量。但若并行性不足够大,小宽度的向量操作会导致硬件利用率低。

另,针对数字信号处理算法中涉及的各类运算,除基础运算外,涉及各类复杂运算类型,诸如复数运算,矩阵运算,除法运算,高精度浮点运算等,若用基础运算结构支持,需反复占用大量的处理器资源,且编码长度较大,需使用通用指令的较长序列计算特定任务的必要结果。为此,对于运算结构,已有研究广泛采用了集成专用增强型指令集合,耦合可重配置功能单元等方法。但也因此带来了以下问题:紧耦合可重配置功能单元,扩展的功能单元与基础功能单元的操作缺少并行性,扩展操作类型较少,不适用于SIMD向量操作,两者之间接口复杂不灵活;松耦合可重配置功能单元,数据交互带宽低,延迟时间大。

综上所述,需针对数字信号处理中各类高密集运算子任务,如矩阵乘,矩阵求逆,快速傅里叶变换算法FFT/IFFT等,提供一种易进行算法分解映射,可充分利用可并行运算资源,能够实时处理大规模数据的运算簇,以满足应用需求。

发明内容

本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种原理简单、适用范围广、处理效果好、能够有效支持最前沿各类数字信号处理算法的可扩展向量运算簇。

为解决上述技术问题,本发明采用以下技术方案:

一种可扩展向量运算簇,其特征在于:包括向量处理阵列、支持压缩指令的向量译码器、用于存放多种数据类型的局部向量寄存器文件/累加器以及支持行列访问的矩阵寄存器文件,所述向量处理阵列包括2~64个同构向量处理单元,所述每个向量处理单元拥有独立的局部向量寄存器文件/累加器并共享矩阵寄存器文件;所述局部向量寄存器文件/累加器和矩阵寄存器文件提供指令操作的数据来源和目的。

作为本发明的进一步改进:

所述向量处理单元包括三个紧耦合可扩展的向量功能单元,作为所述可扩展向量运算簇三条可配置的功能执行流水线。

所述三个紧耦合可扩展的向量功能单元由三个基础向量功能单元和三个扩展功能单元一一对应紧耦合而成,每一对功能单元拥有相同的数据通路。

所述三条功能执行流水线的功能分别为:第一条执行流水线,完成诸如定点乘加、浮点乘加类指令;第二条执行流水线,完成定点、浮点算术逻辑运算;第三条执行流水线完成位操作类指令。

与现有技术相比,本发明可大规模并行执行不同向量长度、不同粒度、不同类型、不同周期的基础和复杂数据处理,能高效实现各类数字信号处理算法,并有自己独有的优点:

(1)降低编程代码空间。该向量运算簇(VPU),可执行压缩的16/32位格式指令,同时结合VLIW架构和向量操作特征,支持高代码密度。在有限的硬件开销下,提高应用性能。

(2)功能流水线可配置,支持复杂数据类型的深流水线化处理。可配置的执行流水线,无需增加附加的寄存器和宽数据路径,只需根据应用需求的不同,选择不同的功能部件(基础功能单元或紧耦合的扩展功能单元)填充流水线,同一执行流水所对应的功能部件共享相同的数据通路。扩展功能单元包含特定的状态寄存器,扩展功能单元与基础功能单元之间采用旁路和互锁机制,保证数据的正确性和运算的并行性。

(3)提高编码效率。VPU基于基础结构,针对数字信号处理算法的运算特点,直接支持复数乘法、定点和浮点矩阵乘法、定点除法等复合操作,从而减少常用数字信号处理算法的动态指令条数。

(4)提供丰富的操作数类型,支持多种精度数据的处理。操作数来源可为向量累加器,向量局部寄存器文件,全局矩阵寄存器文件等,能够支持8/16/32/40位定点数据,及32位或64位浮点数据的高效运算。

(5)应用更灵活性。每个VPE内部提供多条功能执行流水线,扩充指令的并行开发;SIMD功能部件,扩充数据的并行开发;从而支持更小粒度的数据并行处理。

附图说明

图1是具有本发明可扩展向量运算簇的微体系结构总体框架示意图;

图2是可扩展向量运算簇支持的压缩指令包的实例示意图;

图3是紧耦合可扩展的向量功能单元数据通路示意图;

图4是基于基础结构支持复杂运算的IMAC单元结构示意图;

图5是基于可扩展向量运算簇高效完成2048点FFT算法实例示意图;

图6是在具体实例中算法中每一级系数使用情况列表;

图7是在具体实例中算法在硬件结构上的映射实例示意图。

具体实施方式

以下将结合说明书附图和具体实施例对本发明做进一步详细说明。

如图1所示,为构建具有本发明可扩展向量运算簇的微体系结构总体框架示意图。处理器以开发许多信号处理器中丰富的数据并行性为目的。整个结构包括标量处理单元102、本发明的可扩展向量运算簇、地址产生单元AGU及向量存储器107。指令派发单元派发出的标量或向量指令,派发到相应的处理单元中。本发明的可扩展向量运算簇(VPU)是和标量单元(SPU)同级的数据处理单元。两者接收由指令派发部件派发的指令,其中VPU接收派发部件派发的向量运算类指令,同时获取向量长度信息VL,配置VPE的状态,每个VPE可配置为两种状态,激活状态和关闭状态,以满足数据处理中不同并行度的需求。

本发明可扩展向量运算簇包括向量处理阵列101、支持压缩指令的向量译码器104、用于存放多种数据类型的局部向量寄存器文件/累加器105以及支持行列访问的矩阵寄存器文件106,向量处理阵列101包括2~64个同构向量处理单元103,每个向量处理单元103拥有独立的局部向量寄存器文件/累加器105并共享矩阵寄存器文件106;局部向量寄存器文件/累加器105和矩阵寄存器文件106提供指令操作的数据来源和目的。向量译码器104用于支持不能长度的向量指令的译码执行。局部向量寄存器文件/累加器105和全局矩阵寄存器文件106用来提供指令操作的数据来源和目的。支持压缩指令的向量译码器104,能够同时进行16位向量压缩指令或32位常规向量指令的译码,支持混合长度向量指令的执行,从而有效降低代码空间。局部向量寄存器文件/累加器105可作为VPE内功能单元的操作数来源,具有局部性,每个VPE访问向量寄存器或累加器的一组元素。不可交叉访问,寄存器间的数据交互,可通过混洗网络或规约完成。局部向量寄存器文件/累加器105,接收向量存储器的数据,并将需要输出的数据送给向量存储器。支持行列访问的全局矩阵寄存器文件106用于存放和提供向量微处理器运行时所需的向量数据。通过配合向量运算指令,可更好支持矩阵或向量数据运算,加快数据处理的速度。

VPU接收派发出的向量运算指令,经过向量译码器104译码后,在SIMD指令的支持下,提供并行执行多组源操作数的算术逻辑运算或访存操作。VPU从向量存储器107输入向量数据,并将向量数据输出至向量存储器107。

每个VPE拥有独立的局部寄存器文件/累加器105,共享矩阵寄存器文件106。根据不同算法并行性的差异,N个VPE可由向量长度状态寄存器,动态的配置为激活状态或关闭状态。向量处理阵列101内部,不同VPE间的数据可通过混洗网络或归约网络交互,标向量间的数据可通过混洗网络交互,向量存储器107可被标量向量处理单元访问。

VPU内部拥有三条可配置的功能流水线,体现在硬件结构上为三个紧耦合可扩展的向量功能单元108、109和110。三个紧耦合可扩展的向量功能单元,由三个基础向量功能单元和三个扩展功能单元,一一对应紧耦合而成,每一对功能单元拥有相同的数据通路。可扩展的向量功能单元,基于基础结构,提供了对复杂运算指令的支持,如浮点运算,复数乘等。

向量运算簇(VPU)可并行执行包括3条向量运算指令。其中,第一条执行流水线,完成诸如定点乘加、浮点乘加类指令,第二条执行流水线完成定点、浮点算术逻辑运算,第三条执行流水线完成位操作类指令。因此,向量运算簇每周期可处理数据流数目=VPE数目×VPU功能流水线数目×功能部件SIMD数据路径数目×时钟速率。

如图2所示,为可扩展向量运算簇支持的压缩指令包的实例示意图。压缩指令包,包含若干个执行包。以执行包1为例,共有5条指令,包含2条32位指令和3条16位指令,其中每条指令均可为标量或者向量指令。派发单元将其中的向量指令,派发到向量处理阵列101。因此向量指令可能为若干条并行的16压缩向量指令或32位常规向量指令。在保持运算簇硬件代价一定的前提下,只需提供支持混合指令的向量译码器104,即可复用功能单元,从而支持高代码密度,降低编程代码空间和指令cache失效率。

如图3所示,为紧耦合可扩展的向量功能单元数据通路示意图。

VPU包括至少三条可配置的功能执行流水线,因此VPE包括至少三条可配置的分执行流水线,每个VPE接收向量运算指令,并根据译码信号,为三条执行流水获取执行操作数,进行操作数准备。

每条执行流水对应的功能部件,其可配置性体现在,每条执行流水,提供一个基础功能部件和一个扩展功能部件。

执行流水1,包含基础功能的定点IMAC部件,和紧耦合的扩展功能FMAC部件;执行流水2包含基础功能部件IALU和扩展功能部件FALU;执行流水三包含基础功能部件SHIFT和扩展功能部件PACK/BP。扩展功能FMAC部件用于计算复杂运算,可具有更深的流水线;具有多种类型的复杂源操作数,如双精度浮点数;有特定的状态寄存器,用于记录运算中产生的标志信息。紧耦合的扩展部件同样支持向量操作。扩展部件和基础部件,具有相同的数据通路,共享操作数输入输出端口。同一执行流水对应线的两个部件,不能在同一周期并行执行和写回,但支持软件流水调度并行;不同执行流水线的各个功能部件可并行执行和写回。基础部件和扩展部件之间的数据交互,通过互锁和旁路机制保证正确性。可根据应用需求,选择其中一个部件填充执行流水线。所有功能子部件支持SIMD模式的操作,如IMAC部件,可支持一个40位、一个32位、两个16位、四个8位的乘累加操作,支持一个32位复数乘法操作。

执行流水1完成SIMD的MAC类指令的基础运算和扩展复杂操作,具体的可支持定点乘累加,复数乘,浮点乘累加操作,为支持累加操作,操作数可为累加器。

执行流水2完成SIMD的ALU类指令的基础运算和扩展复杂操作,具体的可支持定点算术逻辑操作,复数/浮点算术逻辑操作,为支持累加,操作数可为累加器。

执行流水3完成SIMD的位操作类指令的基础运算和扩展复杂操作,具体的可支持移位,打包解包,位操作等。

如图4所示,为本发明的一个实例基础功能单元,基于基础结构支持复杂运算的IMAC部件结构图。共四个操作数来源,其中乘法的操作数来自于局部寄存器文件或矩阵寄存器,加法器来源为部分积或累加器。

图中假设src1和src2为两个复数,操作数来源于局部寄存器105或矩阵寄存器106,其中复数src1=A+Bi,复数src2=C+Di。于是四个16位乘法器分别计算复数乘法的A×C、B×D、A×D、B×C。两个加法器完成一次复数乘法的实部和虚部计算A×C-B×D、A×D+B×C。同时为了支持非复数快速乘累加运算,加法器来源可来自于累加器AC2和AC3。结果输出宽度为2×40bit、2×32bit,32bit结果可写回局部寄存器、累加器105,或矩阵寄存器文件106。因此,基于定点SIMD乘加部件,能够支持快速流水的复数乘法操作。

图5是基于可扩展向量运算簇高效完成2048点FFT算法实例示意图,图6是在具体实例中算法中每一级系数使用情况列表,图7是在具体实例中算法在硬件结构上的映射实例示意图。

FFT的主要算法是对复数的乘加操作,每一级蝶形运算对应的伪代码如下:

T.real=(xin[k+B].real*w_real-xin[k+B].imag*w_imag);

T.imag=(xin[k+B].real*w_imag+xin[k+B].imag*w_real);

T.real=(T.real+16384)>>15;

T.imag=(T.imag+16384)>>15;

xin[k+B].real=xin[k].real-T.real;

xin[k+B].imag=xin[k].imag-T.imag;

xin[k].real=xin[k].real+T.real;

xin[k].imag=xin[k].imag+T.imag;

其中xin[]表示2048点数据,w表示蝶形运算的系数。

将2048点FFT算法在可扩展向量运算簇上映射,并假设此时VPU内16个VPE激活。16个VPE并行计算,那么,每个VPE运算向量存储器VM存放连续的128点数据,于是前7级蝶形运算,可在16个VPE内并行完成,同一时刻每个VPE内使用的系数相同。

将算法分解可知,要快速的进行FFT运算,向量运算簇需支持复数乘法指令、移位指令、复数带饱和加法指令的并行执行,而可扩展向量运算簇内包含的三条功能流水线,结构上分成三大向量功能单元MAC单元108、ALU单元109和BP位处理单元110,很好的满足了这一需求。使得前7级FFT运算在现有结构中大规模并行执行。

后4级蝶形运算,同一时刻每个VPE内所使用的系数不完全相同,原因是同一系数参加的蝶形运算的总次数小于16。为了最大程度的开发VPE的并行性,在进行后4级运算时,结合VPE间的数据混洗,完成与前7级相同的运算。

同样,基于本发明可扩展向量运算簇的硬件结构,可快速灵活的实现复数或浮点矩阵乘或除,IFFT,DCT,FIR等一系列数字信号处理算法。减少常用数字信号处理算法的动态指令条数,有效提高编码效率。

以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号