数字信号处理器中执行多个向量稀疏卷积方法与系统的制作方法

文档序号:6559518阅读:287来源:国知局
专利名称:数字信号处理器中执行多个向量稀疏卷积方法与系统的制作方法
技术领域
本发明涉及多个向量的卷积(convolution)运算,特别是涉及数字信号处理器中多个向量的稀疏卷积运算的方法与系统。
背景技术
数字信号处理(Digital Signal Processing;简称DSP)是一种关于电子信号的数字表示的检查与操作。使用数字信号处理来进行处理的数字信号通常是来自于真实世界的声频和/或视频的数字表示。
数字信号处理器为针对数字信号的处理最佳化而专用的微处理器。数字信号处理器一般设计成实时处理数字信号,例如,藉由使用一种实时操作系统(Real-Time Operating System;以下简称RTOS)。RTOS为一种当接收多项任务时可同时处理多项任务的操作系统,RTOS一般会赋予任务各种优先权等级,并允许高优先权的任务中断低优先权的任务。RTOS一般会按照以下方式来管理存储器使一存储器单元被一特定任务锁定的时间长度最小化并使被锁定的该存储器单元的尺寸最小化,以便可异步地执行任务,同时使多项任务尝试同时存取相同存储器区块的机会最小化。
数字信号处理器常用于嵌入式系统(embedded systems)中。嵌入式系统为一种整合至较大装置中的专用计算机。嵌入式系统一般是使用于针对特定目的而加以定制的小型RTOS。数字信号处理通常使用包含一数字信号处理器与一RTOS的嵌入式系统来实施。
数字信号处理器一般而言是一种复杂的装置,其可能包括一个或多个微处理器、存储器组以及其它电子组件。连同数字信号处理器,嵌入式系统可包含诸如子系统处理器/加速器、固件和/或其它微处理器与集成电路的类的额外组件。
在处理数字信号(例如数字声频信号数据)时,数字信号处理器会频繁地对一种称为数据向量的数字信号数据区块执行函数。向量为数据值的阵列。
向量可为预定长度的线性阵列。例如,向量可为32位长的线性阵列,例如

或者,向量可为预定长度与宽度的多维阵列。例如,向量可为32位长与4位宽的矩阵

举例而言,可使用多维数据向量来表示多信道数字声频信号。
使用向量可同时对若干大的数据区块进行处理。当对相同的数据向量执行多种函数和/或对多个数据向量执行相同的函数时(其系数字信号处理中常见的情形),此种数字表示法特别有用。
系数向量为一种可用于处理数据向量的向量。例如,一个或多个系数向量可与一个或多个数据向量进行卷积的运算。卷积为一种数学运算,其中可将多个向量合并成为一向量,其为所述多个向量的重迭。卷积的定义见下式f(t)=h(t)g(t)=∫h(τ)g(t-τ)dτ其中将f(t)定义为卷积的向量,h(t)与g(t)为欲卷积的多个向量。对于离散的向量,例如数字信号处理器所处理的向量,卷积可以下式来表示f(t)=h(t)⊗g(t)=∑nh(n)g(t-n)]]>对于一预定长度N的线性向量h与g,卷积可简单地由下式来表示f=h⊗g=∑i=0i<Nh(i)g(i)]]>在数字信号处理中,通常可以将单个数据向量与多个系数向量进行卷积。如果g(j)(i)表示多个系数向量,即g1(i),g2(i),g3(i),...,gK(i),则卷积运算可藉由下式来表示f=h⊗g=∑j=0j<K∑i=0i<Nh(i)g(j)(i)]]>用于计算预定长度N的数据向量h与K个系数向量g的卷积的程序代码可为for(k=0;k<K;k++){sum=0;
for(i=0;i<N;i++)sum=sum+VecH[i]*VecG[k][i];}当在数字信号处理器(例如one-mac DSP)上执行上述程序代码时,可能需要大约K*N个处理周期来计算该卷积。可能需要额外的周期和/或指令来作为设定地址、指针与循环缓存器的开销。
在典型的DSP中,卷积计算(例如使用上述程序代码之类的程序代码)的每一处理周期可能需要执行一个或多个步骤。例如,在每一处理周期期间可采取若干步骤来计算一数据向量(VecH)与多个系数向量(VecG)的卷积。在此范例中,将VecH储存于一存储器X中,其中由指标x_ptr来指向VecH的每一元素(其具有x_oper值)。将VecG储存于一存储器Y中,其中由指标y_ptr来指向VecG的每一元素(其具有y_oper值)。首先,可使用适当的存储器指针,例如x_ptr,针对目前的i值从存储器X中撷取VecH元素x_oper。且可使用适当的存储器指针,例如y_ptr,针对目前的i值从存储器Y撷取VecG元素y_oper。接着可使指针x_ptr前进一个缓存器步进,例如x_ptr=x_ptr+x_step,其中x_step为单独的一个缓存器。藉由使指针x_ptr前进一个缓存器步进的方式,即可在卷积中使用每一缓存器步进。还可使指针y_ptr前进一个缓存器步进,例如y_ptr=y_ptr+y_step,其中y_step为单独的一个缓存器。可计算x_oper与y_oper的乘积,例如prod=x_oper*y_oper。可将先前累积的结果加上x_oper与y_oper的乘积,例如acr=acr+prod,其中acr为累积器的结果缓存器。
从上述步骤可看出,计算多个向量的卷积可能是一项运算量大而要求严格的工作。若有大量的系数向量皆是与相同的数据向量进行卷积运算的状况下,则尤其如此。
因此,需要使用一种更有效的方法和/或系统来对多个向量进行卷积,举例而言,在数字信号处理器中,可藉由使用更有效的方法和/或系统,增强该数字信号处理器的性能。

发明内容
本发明提供一种于数字信号处理器中执行多个向量的稀疏卷积的方法,其中一第一向量具有多个向量元素,而利用至少一个第二向量对至少一个第一向量执行卷积。该方法包括识别所述第一向量中不具有零值的向量元素,并针对所述第一向量中不具有零值的向量元素以所述第二向量进行卷积的运算。
本发明还提供一种于数字信号处理器中执行多个向量的稀疏卷积的系统,其中一第一向量具有多个向量元素,而利用至少一个第二向量对至少一个第一向量执行卷积。该系统包括一识别单元,其用于识别所述第一向量中不具有零值的向量元素;以及一卷积单元,其用于针对所述第一向量中不具有零值的向量元素以所述第二向量进行卷积的运算。
本发明还提供一种计算机系统包括一处理器以及一可由该处理器读取的程序储存装置,该程序储存装置包含可由该处理器执行的一指令程序执行对包括多个向量元素的至少一第一向量使用至少一个第二向量以执行卷积的方法步骤。该方法包括识别所述第一向量中不具有零值的向量元素,并针对所述第一向量中不具有零值的向量元素以所述第二向量进行卷积的运算。


对于本发明更为完整的了解及其许多附带的好处将可在结合附图以及以上的详细说明之后而更好地了解,其中图1为说明根据本发明的一具体实施例的稀疏卷积的方法流程图;图2A为说明根据本发明的一具体实施例而用于执行卷积的系统方块图;图2B为说明根据本发明的另一具体实施例而用于执行卷积的系统方块图;图2C为说明根据本发明的另一具体实施例而用于执行卷积的系统方块图;图2D为说明根据本发明的另一具体实施例而用于执行卷积的系统方块图;图2E为说明根据本发明的另一具体实施例而用于执行卷积的系统方块图;以及图3为说明可实施本发明的方法与系统的一计算机系统的范例方块图。
附图符号说明
201 识别单元202 第二向量203 第一向量204 卷积单元205 产生单元206 乘法单元207 加法单元208 第一撷取单元209 第二撷取单元210 第一前进单元211 第二前进单元212 计算单元213 加法单元214 标准卷积单元1000 系统1001 中央处理单元1002 内部总线1003 网络控制器1004 随机存取存储器1005 局域网络(LAN)数据传输控制器1006 LAN界面1007 链接1008 硬盘1009 输入装置1010 打印机接口1011 显示单元具体实施方式
在说明附图中所解说的本发明的较佳具体实施例时,为清晰起见,使用特定的术语。然而,本发明不希望受限于如此选定的特定术语,并且应了解,每一特定组件包括所有以类似方式运作的技术等效物。
向量包含零丛集的状况,可说是在真实世界中对于表示视频和/或声频信号的数据向量的真实情况。在计算卷积时,向量内的零丛集可能导致在多个处理周期中执行多个处理步骤,但这些执行过程的结果其实对卷积的累积没有任何贡献。因此,本发明的具体实施例是寻求避免多个处理步骤在多个处理周期中仅处理被识别为具有零值的多个向量元素。
根据本发明的一具体实施例,可针对至少一个系数向量与至少一个数据向量来计算卷积,同时可省略多个具有零值的向量元素在计算一乘积上的处理周期和/或步骤。省略这些周期和/或步骤的卷积可称为稀疏卷积(sparseconvolution)。
稀疏卷积可减少计算卷积所需的周期和/或步骤(计算)数量。结果,可使每秒执行数百万条指令(millions of instructions per second;mips)的数字信号处理器可有效增加计算能力,因为仅需较少的指令即可处理卷积。而且,稀疏卷积可使数字信号处理器制造商使用较不昂贵的数字信号处理器来实现相同的结果,同时可可减少电源的使用。
根据本发明的一具体实施例,计算一预定长度N的一数据向量h与K个系数向量g(其中M等于预定长度N减去数据向量h中所出现的零的数目)的卷积的程序代码范例可为for(k=0;k<K;k++){sum=j=0;for(i=0;i<M;i++){j=j+StepVec[i]sum=sum+VecH[j]*VecG[k][j];}}图1为根据本发明的一具体实施例的稀疏卷积的方法流程图。在此范例中,将一数据向量(VecH)与多个系数向量(VecG)进行卷积运算。将VecH储存于一存储器X中,其中由指标x_ptr来指向VecH的每一元素(其具有值x_oper)。将多个向量VecG储存于一存储器Y中,其中由指标y_ptr来指向每个向量的每一元素(其具有值y_oper)。
首先,可使用适当的第一向量存储器指针,例如x_ptr,从存储器X撷

之后,便可以在各个由不同线路号标识的测试信道(即线路)中利用其对应的正交扩频码进行串扰测量;步骤43在图5所示的测试信道中某个tone内按每个symbol(符号)装载正交扩频码的一个比特,装载过程如图6所示,连续装载L个symbol,所述的L为正交扩频码字的长度;或者,也可以在每个symbol装载正交扩频码的k个比特,连续装载L/k个symbol,为保证该方法的实现需要尽量保证L/k是一个整数;例如,当需要对图5中的1号线路进行串扰测试时,则在该1号线路中实现该步骤,进行正交扩频码的装载处理;在1号线路中装载的正交扩频码为表1中1号线路对应的正交码b1;另外,如图7所示,在该步骤中也可以是将扩频码字按bit加载到一个symbol(符号)的各个tone中,之后,在接收端同样在一个symbol中作解扩运算,这样得到的运算结果可以反映出线路是否出现串扰及整个线路串扰程度,但是不能具体地反应出每个tone中的串扰及串扰程度。这一实现方式具有实施比较简单,且耗时较短的特点,因此,其在定性分析的时候能发挥比较大的作用。
步骤44在被测信道的CPE端经FFT(快速傅氏变换算法)后得到包含串扰信息的接收信号矢量,并进一步确定相应的串扰矢量;由于各个线路对被测信道产生串扰以及噪声的影响,使被测信道自身的发送矢量Y发生了拉伸和旋转而成为X,所述的被测信道可以为如图3中所示的2、3...i、j号线路中的任一线路;如图8所示,串扰矢量Δ(a+jb)是所述的信号矢量X与Y的差值,其中,包用VecH[j=6]=1100。接着,将j递增StepVec[i=3]=1的值,以使j的新值为7。最后可使用VecH[j=7]=0001。因此,在此范例中,使用VecH的五个元素,而非全部八个元素。
举例而言,本发明的StepVec步进向量可藉由数字信号处理器在实施一卷积循环之前来产生,例如,可藉由检查该数据向量的元素以识别需要多少步进增量来跳过该数据向量中具有零值的一个或多个元素,而产生StepVec步进向量。StepVec步进向量的产生过程可视为用于实施本发明所需的额外实施部分。
其中,该StepVec步进向量可为一4位阵列,以使StepVec向量的每一元素为一4位字符,其可指示欲递增的缓存器的正确数目,藉由指示有多少缓存器元素而将不具有零值的每一向量缓存器元素分开。如果StepVec步进向量的每一元素为一4位字符,则每一元素可具有介于1与16之间的值。因而,可跳过的零值元素的最大数目为15。或者,StepVec步进向量可为较大字符的阵列,以允许跳过较大的元素区块。
其中,产生StepVec的数字信号处理器可为地址产生器(AddressGenerator;简称AG)的一部分。另外,可使用AG来产生该数字信号处理器所使用的地址。亦可将AG实施为一缓存器组(register bank)。
由于本发明的具体实施例可藉由额外实施,例如,产生StepVec步进向量以及M(数据向量内的非零值元素的数目),故当使用更多的系数向量来对相同的数据向量进行卷积时,还可彰显本发明的优点。因此,本发明的某些具体实施例在具有相对较少数目的系数向量时可使用标准的卷积,而当具有相对较大数目的系数向量时可使用稀疏卷积。例如,当仅有单独一个系数向量时,可使用标准的卷积进行运算;而当具有多个系数向量时,可使用稀疏卷积进行运算。
根据本发明的另一具体实施例,可使用至少一个具有多个向量元素的系数向量并使用至少一个数据向量来执行卷积。这些具体实施例包含识别所述系数向量中不具有零值的所述向量元素,且可针对上述识别出的系数向量以至少一个数据向量进行卷积的运算。
在该具体实施例中,可按照类似于前述的具体实施例,针对数据向量来识别其内含零值的方式对系数向量亦进行解析以识别该系数向量内含的零值。
图2A为根据本发明的一具体实施例而用于执行卷积的系统方块图。在本发明的具体实施例中,可使用至少一个第二向量(202)对至少一个具有多个向量元素的第一向量(203)执行卷积(图2A至2E举例说明具有多个第二向量以及具有单个第一向量的具体实施例)。可提供一识别单元(201)来识别所述第一向量(203)中不具有零值的向量元素。可提供一卷积单元(204)来针对所识别出的所述第一向量(203)中不具有零值的向量元素与所述第二向量(202)进行卷积运算。
图2B为说明根据本发明的另一具体实施例而用于执行卷积的系统方块图。在此具体实施例中,该识别单元(201)可包括一产生单元(205),其用于产生一步进向量,该步进向量可指示有多少元素间隔出所述第一向量(203)不具有零值的向量元素。
图2C为根据本发明的另一具体实施例而用于执行卷积的系统方块图。在此具体实施例中,该卷积单元(204)可包括一乘法单元(206),其用于将所述第一向量(203)中每一不具有零值的向量元素与所述第二向量(202)相乘,以形成多个乘积。该卷积单元(204)可额外地包括一加法单元(207),其用于将所述乘积加到一累积器(未示出)上。
图2D为根据本发明的另一具体实施例而用于执行卷积的系统方块图。在此具体实施例中,该卷积单元(204)可包括一第一撷取单元(208),其利用第一向量指标处撷取一第一向量元素。该卷积单元(204)亦可包括一第二撷取单元(209),其利用第二向量指标处撷取一第二向量元素。该卷积单元(204)亦可包括一第一前进单元(210),其使用一步进向量来使该第一向量指标前进。该卷积单元(204)亦可包括一第二前进单元(211),其使用该步进向量来使该第二向量指标前进。该卷积单元(204)亦可包括一计算单元(212),其用于计算该第一向量元素与该第二向量元素的乘积。该卷积单元(204)亦可包括一加法单元(213),其用于将该乘积加到一累积的结果上。该步进向量可指示有多少元素间隔出所述第一向量不具有零值的向量元素。
图2E为根据本发明的另一具体实施例而用于执行卷积的系统方块图。在此具体实施例中,当具有相对较大数目的第二向量(202)时,该识别单元(201)与该卷积单元(204)亦可为被使用。当具有相对较少数目的第二向量时,可另外包括一标准卷积单元(214),用于针对所述第一向量中所有向量元素以所述第二向量(202)进行卷积运算。
图3为说明可实施本发明的方法与系统的计算机系统的范例方块图。可以运行于一计算机系统(例如一主机、个人计算机(PC)、手持计算机、服务器等)上的软件应用程序的形式来实施本发明的系统与方法。可将该软件应用程序储存于可由该计算机系统进行本地存取以及可经由与网络(例如局域网络或因特网)的硬线或无线连接进行存取的记录媒体上。
该计算机系统(一般称为系统1000)可包括,例如,一中央处理单元(CPU)1001、随机存取存储器(RAM)1004、一打印机接口1010、一显示单元1011、一局域网络(LAN)数据传输控制器1005、一LAN接口1006、一网络控制器1003、一内部总线1002以及一个或多个输入装置1009,例如,一键盘、鼠标等。如图所示,可经由一链接1007将该系统1000连接至一数据储存装置,例如一硬盘1008。
上述特定具体实施例是说明性的,并且可对这些具体实施例进行许多变化,而不致脱离本发明的精神或权利要求的范畴。例如,可在本发明与权利要求的范畴内将不同说明性具体实施例的组件和/或特征彼此组合和/或彼此替代。
权利要求
1.一种数字信号处理器中执行多个向量的稀疏卷积的方法,包含识别出至少一个第一向量中至少一个不具有零值的向量元素;以及针对识别出的所述第一向量中的所述不具有零值的向量元素以至少一个第二向量进行卷积运算。
2.如权利要求1所述的方法,其中所述第一向量为数据向量,所述第二向量为系数向量。
3.如权利要求1所述的方法,其中所述第一向量为系数向量,并且所述第二向量为数据向量。
4.如权利要求1所述的方法,还包括产生一步进向量,该步进向量是指示有多少元素间隔出所述第一向量不具有零值的向量元素。
5.如权利要求1所述的方法,还包括相乘所述第一向量中的每一不具有零值的向量元素与所述第二向量,以形成多个乘积;以及累加所述乘积。
6.如权利要求1所述的方法,还包括在一第一向量指标处撷取一第一向量元素;在一第二向量指标处撷取一第二向量元素;使用一步进向量来使该第一向量指标前进;使用该步进向量来使该第二向量指标前进;计算该第一向量元素与该第二向量元素的一乘积;以及将该乘积加到一累积结果上,其中该步进向量是指示有多少元素间隔出所述第一向量不具有零值的向量元素。
7.如权利要求6所述的方法,其中重复针对所述第一向量的所述不具有零值的向量元素以所述第二向量进行卷积的步骤,直至针对所述第一向量中每一不具有零值的向量元素与每一第二向量皆将相乘的该乘积添加至该累积结果为止。
8.如权利要求1所述的方法,是在具有相对较大数目的第二向量时执行,而在具有相对较小数目的第二向量时执行时,则针对所述第一向量的所有向量元素以所述第二向量进行卷积运算。
9.如权利要求8所述的方法,其中该具有相对较小数目的第二向量仅包含单独一个第二向量,而该具有相对较大数目的第二向量则包含多于单个的第二向量。
全文摘要
本发明提供一种于数字信号处理器中执行多个向量的稀疏卷积的方法,其中一第一向量具有多个向量元素,而利用至少一个第二向量对至少一个第一向量执行卷积。该方法包括识别所述第一向量中不具有零值的向量元素,并针对所述第一向量中不具有零值的向量元素以所述第二向量进行卷积的运算。
文档编号G06F17/15GK1862524SQ20061009160
公开日2006年11月15日 申请日期2006年6月6日 优先权日2005年6月6日
发明者斯蒂格·斯顿斯 申请人:威盛电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1