首页> 中国专利> 数字信号处理器中执行多个向量稀疏卷积方法与系统

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

摘要

本发明提供一种于数字信号处理器中执行多个向量的稀疏卷积的方法,其中一第一向量具有多个向量元素,而利用至少一个第二向量对至少一个第一向量执行卷积。该方法包括识别所述第一向量中不具有零值的向量元素,并针对所述第一向量中不具有零值的向量元素以所述第二向量进行卷积的运算。

著录项

  • 公开/公告号CN1862524A

    专利类型发明专利

  • 公开/公告日2006-11-15

    原文格式PDF

  • 申请/专利权人 威盛电子股份有限公司;

    申请/专利号CN200610091606.6

  • 发明设计人 斯蒂格·斯顿斯;

    申请日2006-06-06

  • 分类号G06F17/15;

  • 代理机构北京市柳沈律师事务所;

  • 代理人蒲迈文

  • 地址 中国台湾台北县

  • 入库时间 2023-12-17 17:55:29

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2008-11-19

    授权

    授权

  • 2007-01-10

    实质审查的生效

    实质审查的生效

  • 2006-11-15

    公开

    公开

说明书

技术领域

本发明涉及多个向量的卷积(convolution)运算,特别是涉及数字信号处理器中多个向量的稀疏卷积运算的方法与系统。

背景技术

数字信号处理(Digital Signal Processing;简称DSP)是一种关于电子信号的数字表示的检查与操作。使用数字信号处理来进行处理的数字信号通常是来自于真实世界的声频和/或视频的数字表示。

数字信号处理器为针对数字信号的处理最佳化而专用的微处理器。数字信号处理器一般设计成实时处理数字信号,例如,藉由使用一种实时操作系统(Real-Time Operating System;以下简称RTOS)。RTOS为一种当接收多项任务时可同时处理多项任务的操作系统,RTOS一般会赋予任务各种优先权等级,并允许高优先权的任务中断低优先权的任务。RTOS一般会按照以下方式来管理存储器:使一存储器单元被一特定任务锁定的时间长度最小化并使被锁定的该存储器单元的尺寸最小化,以便可异步地执行任务,同时使多项任务尝试同时存取相同存储器区块的机会最小化。

数字信号处理器常用于嵌入式系统(embedded systems)中。嵌入式系统为一种整合至较大装置中的专用计算机。嵌入式系统一般是使用于针对特定目的而加以定制的小型RTOS。数字信号处理通常使用包含一数字信号处理器与一RTOS的嵌入式系统来实施。

数字信号处理器一般而言是一种复杂的装置,其可能包括一个或多个微处理器、存储器组以及其它电子组件。连同数字信号处理器,嵌入式系统可包含诸如子系统处理器/加速器、固件和/或其它微处理器与集成电路的类的额外组件。

在处理数字信号(例如数字声频信号数据)时,数字信号处理器会频繁地对一种称为数据向量的数字信号数据区块执行函数。向量为数据值的阵列。

向量可为预定长度的线性阵列。例如,向量可为32位长的线性阵列,例如:

0001 1101 0000 0000 0000 1101 1100 0001

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

1101 1101 0010 0000 0000 1101 1100 01010001 1101 1100 0000 0000 0000 1100 01010011 0100 0000 0000 0000 0000 1100 11000001 1101 0000 0000 0000 1101 1100 1111

举例而言,可使用多维数据向量来表示多信道数字声频信号。

使用向量可同时对若干大的数据区块进行处理。当对相同的数据向量执行多种函数和/或对多个数据向量执行相同的函数时(其系数字信号处理中常见的情形),此种数字表示法特别有用。

系数向量为一种可用于处理数据向量的向量。例如,一个或多个系数向量可与一个或多个数据向量进行卷积的运算。卷积为一种数学运算,其中可将多个向量合并成为一向量,其为所述多个向量的重迭。卷积的定义见下式:

f(t)=h(t)g(t)=∫h(τ)g(t-τ)dτ

其中将f(t)定义为卷积的向量,h(t)与g(t)为欲卷积的多个向量。对于离散的向量,例如数字信号处理器所处理的向量,卷积可以下式来表示:

>>f>>(>t>)>>=>h>>(>t>)>>⊗>g>>(>t>)>>=>>>>∑>>n>>h>>(>n>)>>g>>(>t>->n>)>>>s>

对于一预定长度N的线性向量h与g,卷积可简单地由下式来表示:

>>f>=>h>⊗>g>=over>>>>∑>>>i>=>0>>>i><>N>over>>h>>(>i>)>>g>>(>i>)>>>s>

在数字信号处理中,通常可以将单个数据向量与多个系数向量进行卷积。如果g(j)(i)表示多个系数向量,即g1(i),g2(i),g3(i),...,gK(i),则卷积运算可藉由下式来表示:

>>f>=>h>⊗>g>=over>>>>∑>>>j>=>0>>>j><>K>over>over>>>>∑>>>i>=>0>>>i><>N>over>>h>>(>i>)>>g>>(>j>)>>>(>i>)>>>s>

用于计算预定长度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撷取目前值j所表示的第一向量VecH的元素x_oper(步骤S11)。可使用适当的第二向量存储器指针,例如y_ptr,从存储器Y撷取目前值j所表示的第二向量VecG的元素y_oper(步骤S12)。指针x_ptr可前进若干缓存器步进,其是由一步进向量函数StepVec[i]决定。例如x_ptr=x_ptr+StepVec[i],其中StepVec[i]指定需要于何时前进以及前进多少缓存器步进来跳过VecH数据向量内具有零值的任何元素(步骤S13)。藉由使指标x_ptr前进StepVec[i]个缓存器步进,无需如已知技术那样在卷积中使用每一缓存器步进,藉以避免若干无谓的计算。按照与x_ptr相同的方式使指标y_ptr前进,例如y_ptr=y_ptr+StepVec[i](步骤S14)。可计算x_oper与y_oper的乘积,例如prod=x_oper*y_oper(步骤S15)。可将累积的结果加上x_oper与y_oper的乘积,例如acr=acr+prod,其中acr为累积器结果缓存器(步骤S16)。

如上所述,步进向量函数StepVec[i]提供作为j值之前进缓存器步进数目,以使数据向量VecH(j)的每一元素都不等于零。藉由使用该步进向量StepVec[i]来使所述指标前进,而非使所述指标一次仅前进一缓存器步进,可跳过VecH中等于零的值。藉由跳过VecH中等于零的值,VecH(数据向量)以及VecG(多个系数向量)中多数个值即无需被定位与从存储器读取,并且亦无需将其用于卷积计算中。以此方式,可避免多个处理步骤。例如,存储器存取的数目将从2*K*N下降至2*K*M,其中M=N-(VecH内零值的数目)。

例如,若VecH为以下向量:

VecH[0]VecH[1]VecH[2]VecH[3]VecH[4]VecH[5]VecH[6]VecH[7]0001110100000000000011011100 0001

StepVec[i]可为:

StepVec[0]StepVec[1]StepVec[2]StepVec[3]1411

以便在计算VecH与VecG的卷积时,可使用VecH[j=0]=0001(以乘上VecG[k][j],而将乘积加到累积的卷积结果上)。接着,将j递增StepVec[i=0]=1的值,以使j的新值为1。接下来可使用VecH[j=1]=1101。接着,可将j递增StepVec[i=1]=4的值,以使j的新值为5。接下来可使用VecH[j=5]=1101。接着,将j递增StepVec[i=2]=1的值,以使j的新值为6。接下来可使用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。

上述特定具体实施例是说明性的,并且可对这些具体实施例进行许多变化,而不致脱离本发明的精神或权利要求的范畴。例如,可在本发明与权利要求的范畴内将不同说明性具体实施例的组件和/或特征彼此组合和/或彼此替代。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号