用于数字信号处理器的向量执行单元的制作方法

文档序号:6497750阅读:244来源:国知局
用于数字信号处理器的向量执行单元的制作方法
【专利摘要】本发明涉及一种用于数字信号处理器中的向量执行单元,该向量执行单元能够实现一组新的指令。该单元包括第一输入端口、指令解码器、向量输出端口和至少一个数据路径,其中该第一输入端口用于至少接收第一输入数据向量。指令解码单元设置用于对数据路径进行控制以执行与第一输入数据向量有关的比较,并且所述处理器包括设置为通过判定向量的形式向数字信号处理器中的存储器单元或功能单元输出比较结果的整数端口。备选或附加地,该整数端口还设置用于接收整数数据的判定向量,并且该指令解码单元用于控制数据路径从而依据整数数据的值来处理第一输入数据。
【专利说明】用于数字信号处理器的向量执行单元
【技术领域】
[0001]本发明涉及一种如权利要求1前序部分所定义用于数字信号处理器中的执行单元。本发明还涉及一种适用于OFDM系统的数字信号处理器。
【背景技术】
[0002]为了提高性能和可靠性,许多移动终端目前使用一类称为基带处理器(BBP)的数字信号处理器DSP,以用于操控与接收的无线电信号的处理以及要发送的信号的准备相关联的许多信号处理功能。由于这些功能与时序高度相关并且可能需要实时操作系统,因此将这些功能从主处理器中分离出来是有利的。期望这种基带处理器应当尽可能地灵活,以适应不断发展的标准并允许硬件再利用。因此,已经研发出可编程基带处理器,即PBBP。
[0003]此类处理器中频繁执行的许多功能对大量的数据样本执行操作。因此,称为单指令多数据(SMD)处理器的一类处理器较为有用,因为它能够使单个指令操作多个数据项,而不是一次仅操作一个数据项。多个数据项可设置在向量中,并且适于操作数据向量的处理单元在本文中将称为向量执行单元。
[0004]随着SMD架构的进一步发展,已经研发出单指令流-多任务(SMT)架构。通常,SIMT架构中已具有与作为内核处理器一部分的整数执行单元相关的一个或两个SMD类向量执行单元。
[0005]国际专利申请W02007/018467公开了一种根据SMT架构的DSP,其具有包括整数处理器和程序存储器的处理器内核,以及与内核连接但未集成在内核中的两个向量执行单元。该向量执行单元可以为复杂算法逻辑单元(Complex Arithmetic Logic Units, CALU)或复杂乘法累加单元(CMAC, Complex Multiply-Accumulate Units)。该内核具有向执行单元分配指令的程序存储器。在W02007/018467专利文献中,每一向量执行单元具有单独的指令解码器。这可以有效地方式实现向量执行单元的使用在彼此之间独立,以及与处理器的其他部分之间独立。
[0006]现有技术的向量执行单元通常包括用于接收待处理数据的第一和第二数据输入端口。数据可以是复数数据或标量数据,并且通常可以为数据向量形式。向量执行单元还包括用于将处理结果馈送到DSP中的另一单元的输出端口。称为复杂算术逻辑单元(CALU)的特定类型的向量执行单元能够执行一组极为有限的乘法,在实际中是将数据项与±l±i相乘。为此目的,CALU还具有整数端口。该整数端口设置用于接收整数数据,以对乘法运算进行控制。

【发明内容】

[0007]本发明的一个目的是提供新的方式来使用SMT型数字信号处理器,具体说增加了向量执行单元的功能性。
[0008]根据本发明第一实施例,该目的通过用于数字信号处理器中的向量执行单元来实现,所述向量执行单元包括:[0009].第一向量输入端口,其用于从所述数字信号处理器中的至少第一单元分别接收至少第一输入数据向量,
[0010].指令解码单元,其设置用于对从所述数字信号处理器的程序存储器所接收的指令进行解码,
[0011].向量输出端口,其用于将所述指令解码单元的结果馈送至所述数字信号处理器中的至少另一单元,
[0012].至少一条数据路径。
[0013]所述向量执行单元的特征在于,所述指令解码单元设置为对所述数据路径进行控制,以执行与所述第一输入数据向量有关的比较,以及所述处理器包括整数端口,其设置为用于将比较的结果以判定向量的形式输出至数字信号处理器中的存储器单元或功能单元。
[0014]这表明所述向量执行单元的新型用途在于:所述整数端口用于输出整数数据。这相应地能够实现一种新型命令,即对两个或多个数据项进行比较以产生表示比较结果的整数输出。输出的整数数据可以存储在整数存储器中以供后续使用,或者可以直接用作针对DSP中另一单元的输入数据。
[0015]备选或附加地,向量执行单元的特征在于,整数端口设置成用于接收整数数据的判定向量,并且指令解码单元设置用于控制数据路径,从而依据所述整数数据的值来处理第一输入数据。
[0016]通过使用整数端口来接收判定数据将影响到数据项的处理,由此可以实现更大的灵活性。本实施例特别用于滤波功能,其中应当将表示噪音的值滤除,并且真实信号值应当保持不变。当然还可以设想到其他用途。
[0017]在一优选实施例中,向量执行单元设置为既可产生整数端口上输出的判定向量,又可将判定向量作为用于控制指令的执行的输入。
[0018]优选地,向量执行单元还包括用于从数字信号处理器中的第二单元接收第二输入数据向量的第二向量输入端口,指令解码器设置用于控制数据路径,以基于第一输入数据向量和第二输入数据向量来执行比较。
[0019]本发明的向量执行单元可以包括一个、两个或多个向量输入端口,这取决于所要执行的指令类型。如果仅接收到一个输入数据向量,向量执行单元则用于执行第一数据与常数之间的比较。
[0020]指令解码单元可以设置用于对数据路径进行控制,从而对第一和/或第二输入数据向量进行算术操作并在比较时使用该算术操作的结果。该算术操作可涉及向量输入端口上接收的一个或多个数据项。通过这种方式,可以例如对平方值或绝对值进行比较。
[0021]指令解码器设置用于控制所述数据路径,以对输入数据项执行两个或多个比较,并且判定向量具有可表示每次比较的结果的一个数据项。输出的判定向量可以具有由每次比较所产生的单独一个数据位或可表示输入数据的不同属性的多个比特位。作为非限制性示例,三个比特位可用于表明输入数据项是否大于某特定值、其绝对值是否大于零以及其平方值是否大于某个其他值。在此情况下,设置用于使用该判定向量的所述向量执行单元必须设置为可为每个整数数据项挑选正确的值以用作判定输入。
[0022]在一个实施例中,指令解码器用于对数据路径进行控制,从而可每次对来自每个输入端口的一个数据项执行比较,并且针对每次比较而输出具有一个或多个数据项的数据向量。通过这种方式,相同数据项的多次比较可以同时进行,并且可以使用由此产生的判定向量以例如控制不同功能。
[0023]现有技术中的典型向量执行单元具有四条数据路径。在具有两个或多个数据路径的向量执行单元中,指令解码单元可设置为用于控制数据路径,从而对从两个或多个数据路径上接收的输入数据执行算术操作,并在比较中使用其结果。一起处理两个数据路径上接收到的输入数据并一起处理其他两个数据路径上所接收的输入数据,并且可以对处理结果进行比较。如本领域技术人员所理解的那样,这可以扩展为任何数目的数据路径。
[0024]本发明还涉及一种数字信号处理器,其包括程序存储器和根据本发明的至少一个向量执行单元。
【专利附图】

【附图说明】
[0025]图1示出了其中可使用根据本发明的向量执行单元的数字信号处理器。
[0026]图2示出了根据本发明实施例的向量执行单元。
[0027]图3示出了根据本发明第一实施例所涉及的单元之间的通信。
[0028]图4示出了根据本发明第二实施例所涉及的单元之间的通信。
【具体实施方式】
[0029]图1示出了使用了根据本发明的向量执行单元的数字信号处理器。图1示出了根据SMT架构的基带处理器200的示例。处理器200包括控制器内核201以及第一向量执行单元203和第二向量执行单元205,这将在下文中进行更详细地讨论。如图1中所示的FEC单元206连接到片上网络。当然,在一具体实现中,FEC单元206可包括若干不同的单
J Li ο
[0030]主机接口单元207提供了与主机处理器(未示出)的连接。如果存在MAC处理器,则将MAC处理器连接在主机接口单元207与主机处理器之间。数字前端单元209以本领域公知的方式提供与ADC/DAC单元的连接。
[0031]如本领域中所常见的,控制器内核201包括程序存储器以及指令发布逻辑和用于支持多上下文(mult1-context)的功能。
[0032]控制器内核201通常还包括整数执行单元212,该整数执行单元包括寄存器文件RF、内核整数存储器ICM、乘法单元MUL以及算术与逻辑/移位单元(ALSU)。这些单元在本领域均为已知的并且未在图1中示出。
[0033]在本示例中,每个第一向量执行单元203属于CMAC向量执行单元,而第二向量执行单元205属于CALU向量执行单元,其中每个执行单元均包括向量控制器213、向量加载/存储器单元215以及多个数据路径217。加载功能用于从与网络244相连的其他单元(如存储体)提取数据,存储功能用于将来自执行单元203,205的数据通过网络244存储于如存储器单元230,231中。也可以从其他向量执行单元获得数据,和/或可以将计算结果转发到其他向量执行单元以供进一步处理。每个向量执行单元还包括用于接收来自程序存储器211的指令的向量控制器213,223。
[0034]该第一向量执行单元的向量控制器经由发布逻辑连接到控制器内核201的程序存储器211上,以接收与来自程序存储器的指令有关的发布信号。在以上描述中,发布逻辑对指令字进行解码以获得发布信号,并将该发布信号作为单独信号发送给向量执行单元。也可以让向量执行单元的向量控制器在本地生成发布信号。在这种情况下,发布信号由向量控制器基于指令字以与其在发布逻辑中相同的方式来创建。
[0035]或者,向量执行单元203,205是一类本领域已知的CALU向量执行单元,其包括向量控制器223、向量加载/存储器单元225和多个数据路径227。该第二向量执行单元的向量控制器223还经由发布逻辑连接到控制器内核201的程序存储器211上,以接收与来自程序存储器的指令有关的发布信号。
[0036]向量执行单元203,205也可以是任何类型的向量执行单元。尽管示出并讨论了两个向量执行单元,但是本发明的方法可扩展为向三个或更多个向量执行单元发送相同指令。
[0037]除了图1所示的两个向量执行单元之外,还可以存在任意数目的向量执行单元。可以只有CMAC单元、只有CALU单元,或者每个类型各有合适数目。也可以存在不是CMAC和CALU的其他类型向量执行单元。如上所述,向量执行单元是能够处理向量指令的处理器,这意味着单个指令对多个数据单元执行相同功能。数据可以是复数或实数,并划分为字节或字封装到待由向量执行单元操作的向量中。在本文中,CALU和CMAC单元用作示例,但应当注意,向量执行单元可用于对数据向量执行任何合适的功能。
[0038]为了实现若干个同时的向量操作,处理器优选具有分布式存储器系统,其中存储器划分为若干存储体,如图1所示的存储体0230至存储体N231。每个存储体230,231分别具有自身的复数存储器232,233和地址生成单元AGU234,235。图1中的PBBP还包括一个或多个可选的整数存储体238,该整数存储体包括存储器239和地址生成单元240。
[0039]如本领域已知的那样,通常连接有多个加速器242,因为它们能够高效地实现某些基带功能,例如信道编码及交织。这种加速器是本领域所熟知的,因此这里将不再进行任何详细讨论。加速器可以配置为可由多种不同标准来重用。
[0040]片上网络244连接有控制器内核201、数字前端单元209、主机接口单元207、向量执行单元203,205、存储体230,232、整数存储体238和加速器242。
[0041]第一和第二向量执行单元203,205显示为具有可同时或单独运行四条复数数据路径的四路CMAC单元。四条复数数据路径包括乘法器、加法器和累加寄存器(均未在图1中示出)。因此,在本实施例中,CMAC203可称为四路CMAC数据路径。除了乘法和加法之夕卜,如本领域已知的那样,CMAC203还可以执行舍入和缩放(scaling)操作并支持饱和。
[0042]图2是根据本发明实施例的向量执行单元300的简化示意图。向量执行单元可以是复杂乘法累加(CMAC)单元、复杂算术逻辑单元(CALU)或者能够接收并处理数据向量的任何其他类型的处理单元。本示例的向量执行单元包括经由片上网络来接收数据的第一输入端口 302和第二数据输入端口 304。经由片上网络244,可以从存储器单元、从另一执行单元或者从DSP中的任何其他合适的单元来接收数据。数据由向量执行单元中的数据路径306来处理。向量执行单元还具有经由片上网络将结果输出至另一单元的数据输出端口308。结果可以馈送至存储器单元、另一向量执行单元或DSP中的任何其他合适的单元。向量加载/存储器单元310布置在输入及输出端口 302,304,308与数据路径306之间,从而能够实现与向量执行单元300的数据通信往来。
[0043]向量控制单元312设置为可控制从DSP内核(图2中未示出)接收的指令的执行。[0044]在输入端口 302,304上接收的数据和经由输出端口 308输出的数据通常是以数据向量的形式,该数据向量可具有复数或标量数据。数据路径306设置为:通过一次对来自每个向量的一个数据项执行相同类型的功能,而对数据向量进行处理。
[0045]根据本发明,向量执行单元还具有整数端口 314,在第一实施例中该整数端口 314用于输出可表示由数据路径306执行的功能的结果的一个或多个比特位。例如,数据路径306可以用于执行比较,这将在下面进行讨论。比较的结果可以通过整数端口 314上输出的一个或多个比特位来表示。输入向量中的每个输入数据项的比较结果均属于整数数据项的向量,每个整数数据项的向量包括一个或多个比特位。
[0046]将所得到的判定向量发送至要存储在那里的整数存储器单元。然后,稍后可以通过诸如执行单元或加速器的功能单元对判定向量进行检索,以用作该功能单元的判定输入数据。也可以直接将判定向量发送至功能单元,以影响功能单元的数据处理。
[0047]在第二实施例中,向量执行单元300设置为经由整数端口 314来接收整数向量,并将该整数向量作为用于下一指令的控制数据。例如,向量执行单元设置为:如果整数数据项为1,则对输入数据执行特定功能,如果整数数据项为0,则执行另一功能。
[0048]当然,在实际中,第一和第二实施例可以通过相同的向量执行单元来实施。
[0049]图3示出了根据上述第一实施例所涉及的DSP中的单元,即第一和第二向量存储器单元230,231、整数存储器单元238、片上网络244和向量执行单元300。向量执行单元300用于从向量存储器单元230,231接收输入数据并对其进行处理,并且用于经由整数输出端口 314以整数向量的形式向片上网络244输出处理结果。在本示例中,将所得到的整数向量写入整数存储器单元238中。也可以将所得到的整数向量直接馈送到诸如另一向量执行单元或加速器单元的功能单元中,以控制由该功能单元所执行的处理。
[0050]当然,向量执行单元300还可以包括如图2所示的数据输出端口。
[0051]图4示出了根据上述第二实施例所涉及的DSP中的单元,即第一和第二向量存储器单元230,231、整数存储器单元238、片上网络244和向量执行单元400。向量执行单元400用于从向量存储器单元230,231接收输入数据并对其进行处理,并用于以输出数据向量的形式输出处理结果。在本实施例中,第三向量存储器单元403用于接收输出数据向量,但输出数据向量也可以替代性地作为另一功能单元(图4中未示出)的输入数据而被输出至该功能单元中。
[0052]向量执行单元400还具有用于从整数存储器238接收整数向量的整数输入端口。向量执行单元的解码单元设置为使用整数向量来控制对在两个输入端口上所接收的输入数据的处理。通常,整数数据项的值将用于确定哪个功能应当对输入数据项进行操作。例如,该功能可以是:当整数数据项的值为O时,则输出数据项应当设置为0,而如果该整数数据项的值为I时,则输出数据项应当保持为该输入值或者作为该输入值的和、差或积。
[0053]正如将理解的那样,图3和4所示的具有两个输入数据端口的向量执行单元300, 400可以仅具有一个数据端口,或者也可以具有多于两个的数据端口。此外,当本说明书中记载了从存储器单元读取或写入数据时,其表示可以替代性地从DSP中的任何合适单元(例如加速器或另一执行单元)中读取和写入数据。
[0054]根据第一实施例所执行的比较可以是两个数据向量A与B之间的直接比较,例如,如果向量A中的数据项的值大于向量B中相应数据项的值,则比较并返回值I。[0055]例如,如果向量A具有以下顺序的数据项:
[0056]0 1 2 3 4 5 6 7
[0057]并且,向量B具有以下顺序的数据项:
[0058]33334444
[0059]根据“大于或等于”操作所得到的向量如下:
[0060]0 0 0 1 1 1 1
[0061]由于向量B中的前三个数据项大于向量A中的前三个数据项,因此返回O。两个向量中的第四和第五数据项相等,并且向量A中的其余数据项大于向量B中的其余数据项,由此,比较将返回I。当然,取代“大于或等于”和“小于”,可以使用“大于”和“小于或等于”。
[0062]一个输入数据向量也可以与常数进行比较,该常数可适当地选择为阈值。针对向量中大于或等于该常数的每个数据,将判定向量加I。针对小于该常数的数据项,将判定向量加O。这对滤除噪音极为有用。阈值可以设置成输入数据向量的最高值的某百分比。然后,判定向量将由功能单元使用在结合图4所描述的新操作中,以对数据向量进行处理。使用判定向量,可以将数据向量中小于阈值的所有数据项设为O。常数可以从向量执行单元中的任意累加器寄存器、常数寄存器或控制寄存器中提取。
[0063]还可以在比较之前对一个或两个数据项执行算术操作,例如对数据项求平方、求逆或者使用绝对值。而且,针对复数输入数据,可以在比较中仅使用实部或虚部。
[0064]非限制例举示例如下:
[0065]IA I> I B
[0066]IA I〈B
[0067]A>x, X 为常数
[0068]Re {A} >Re {B}
[0069]Im{A}〈y,y 为常数
[0070]在具有多于一个数据路径的向量执行单元中,向量执行单元一次将读取多于一个的复数数据项,其中每个数据路径上一个数据项。根据本发明,在这种情况下,可以一起处理在两个或多个数据路径上接收的数据项,例如相乘、相减或相加,并且可以将结果用在比较中。这表示,在具有四条数据路径的典型向量执行单元中,可以一起处理在两个或多个数据路径上接收的数据项,可以一起处理在其余两个输入端上接收的数据项,以及可以将结果进行比较以产生判定向量。
[0071 ] 还可以让指令解码器对每个输入数据项执行若干操作。例如,针对复数数据项,数据项的实部和虚部可以单独地比较,每次比较相应地返回判定数据项。备选地或附加地,在比较之前可以对数据项执行一个或多个算术操作,从而例如将平方值、绝对值或逆值用于比较中。而且,作为又一示例,判定数据项可用于表示两个值是否相同。每次比较将返回一个或多个比特位的判定数据项。由此,针对每个输入数据项,判定向量将包括多于一个的判定数据项,其中每个判定数据项表示输入数据项的一个属性。
[0072]在这种情况下,指令解码器用于选择出与输入数据项相关的判定数据项中的哪个判定数据项将用于确定该如何处理输入数据项。
[0073]作为示例,认为整数向量的每个值具有3个比特位,这通过向量A与B以减法A-B的比较来创建。各比特位如下:[0074]比特位O:如果结果为负,即如果B>A,则负标志=I ;
[0075]比特位1:如果结果为0,即如果A = B,则零标志=I ;
[0076]比特位2:如果结果过大,即大于阈值,则溢出标志=I。
[0077]该整数向量可以用来执行例如“选择等于”指令:即如果设置了比特位I (即零标志位),则选择操作数A,而如果未设置比特位1,则选择操作数B。整数向量还可以用于执行“选择大于”指令:即如果比特位O的标志为0,则选择操作操作数A,而如果比特位O的标志为1,则选择操作数B。
[0078]将理解的是,这些仅旨在作为非限制性示例。本领域技术人员可以容易地将这些示例的一般性原理应用在为各种各样的情况中。
【权利要求】
1.一种用于数字信号处理器中的向量执行单元,所述向量执行单元包括: ?第一向量输入端口,其用于从所述数字信号处理器中的至少第一单元分别接收至少第一输入数据向量, ?指令解码单元,其设置为对从所述数字信号处理器的程序存储器接收的指令进行解码,并控制所述向量执行单元中的至少一个数据路径以执行所述指令; ?向量输出端口,其用于将所述指令解码单元的结果馈送至所述数字信号处理器中的至少另一单元, ?至少一个数据路径, 所述向量执行单元的特征在于, 所述指令解码单元设置为对所述数据路径进行控制,以执行与所述第一输入数据向量有关的比较,以及, 所述处理器包括整数端口,其设置为用于将比较的结果以判定向量的形式输出至所述数字信号处理器中的存储器单元或功能单元。
2.根据权利要求1所述的向量执行单元,其中,所述整数端口还设置为接收整数数据的判定向量,并且所述指令解码单元设置为用于控制所述数据路径从而依据所述整数数据的值来处理所述第一输入数据。
3.根据上述权利要 求中任一项所述的向量执行单元,其中,还包括设置用以从所述数字信号处理器中的第二单元接收第二输入数据向量的第二向量输入端口,其中所述指令解码器设置为用于控制所述数据路径,从而基于所述第一输入数据向量和所述第二输入数据向量来执行比较。
4.根据上述权利要求中任一项所述的向量执行单元,其设置为执行所述第一数据向量与常数之间的比较。
5.根据上述权利要求中任一项所述的向量执行单元,其中,所述指令解码单元设置为对所述数据路径进行控制,从而对所述第一和/或第二输入数据向量进行算术操作并在比较时使用上述算术操作的结果。
6.根据权利要求5所述的向量执行单元,其中,所述指令解码单元设置为对所述数据路径进行控制,从而对所述输入数据项执行两次或多次比较,并且所述判定向量将具有表示每次比较的结果的一个数据项。
7.根据权利要求2或者引用权利要求2时的权利要求3-6中任一项所述的向量执行单元,其中,每个向量输入端口设置为接收数据向量,并且所述指令解码单元设置为控制所述数据路径,以在某时对来自每个输入端口的一个数据项执行比较,并且针对每次比较而输出具有一个或多个数据项的数据向量。
8.根据权利要求7所述的向量执行单元,其中,所述指令解码单元设置为对所述数据路径进行控制,以对所述第一和/或第二输入数据向量进行算术操作并在比较时使用所述算术操作的结果。
9.根据上述权利要求中任一项所述的向量执行单元,其具有第一和第二数据路径,其中所述指令解码单元设置为控制所述数据路径,以对所述第一和第二数据路径上所接收的输入数据进行算术操作并在比较时使用该结果。
10.一种用于数字信号处理器中的向量执行单元,所述向量执行单元包括:?第一向量输入端口,其用于从所述数字信号处理器中的至少第一单元接收第一输入数据向量, ?指令解码单元,其设置为对从所述数字信号处理器的程序存储器接收的指令进行解码,并控制所述向量执行单元中的至少一个数据路径以执行所述指令; ?向量输出端口,其用于将所述指令解码单元的结果馈送至所述数字信号处理器中的另一单元, ?至少一个数据路径, 所述向量执行单元的特征在于,所述处理器包括设置用以接收整数数据的判定向量的整数端口,以及, 所述指令解码单元设置为对所述数据路径进行控制,从而依据所述整数数据的值来处理所述第一输入数据。
11.根据权利要求10所述的向量执行单元,其中,每个向量输入端口设置为接收各个输入数据,并且所述指令解码单元设置为可在某时对来自每个向量输入端口的一个数据项执行比较,并且针对每次比较而输出具有一个或多个数据项的数据向量。
12.根据权利要求10或11所述的向量执行单元,其中,所述整数端口设置为针对每个输入数据项而接收具有多于一个的整数数据项的判定向量,其中所述指令解码单元设置为针对对应的输入数据项来选择所述整数数据项中的一个数据项,并使用所选择的整数数据项来控制相应的整数 数据项的处理。
13.一种数字信号处理器,包括程序存储器和至少第一向量执行单元,所述第一向量执行单元设置为接收并执行来自程序存储器的指令,其特征在于,至少第一向量执行单元是根据上述权利要求中任一项所述的向量执行单元。
【文档编号】G06F9/38GK104011675SQ201280063639
【公开日】2014年8月27日 申请日期:2012年11月28日 优先权日:2011年12月20日
【发明者】安德斯·尼尔森, 埃里克·特尔 申请人:联发科技瑞典有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1