专利名称::包括配置为执行复矢量指令的集群式simd微体系结构的可编程数字信号处理器的制作方法
技术领域:
:本发明涉及数字信号处理器,更具体地说,涉及可编程数字信号处理器微体系结构。
背景技术:
:在很短的时期内,无线设备特别移动电话的使用显著地增加。无线设备的这种世界范围的增长导致大量新兴无线电标准和无线产品的汇聚。反过来这也引起人们对软件定义无线电(SDR,SoftwareDefinedRadio)的不断增加的兴趣。如SDR论坛所述,SDR是能够实现用于无线网络和用户终端的可重构系统结构的硬件和软件技术的汇集。对于建立可以利用软件升级来增强的多模、多频带、多功能无线设备的问题,SDR提供有效的和相对廉价的解决方案。因而,SDR可以被认为可在无线工业内的宽范围领域应用的使能技术。许多无线通信设备使用包括一个或多个数字信号处理器(DSP)的无线电收发机。无线电中使用的一类DSP是基带处理器(BBP),基带处理器可以处理与接收无线电信号的处理和准备发射信号相关的许多信号处理功能。例如,BBP可以提供调制和解调,以及信道编码和同步功能。许多常规BBP由仅支持一种无线电标准的专用集成电路(ASIC)器件实现。在很多情况下,ASICBBP可以提供优异的性能。但是,ASIC解决方案可以被限于在设计片上(on-chip)硬件的无线电标准内操作。为了提供SDR解决方案,在无线电基带处理器中可能需要增加灵活性,以满足入市时间、成本和产品寿命的要求。为了处理诸如无线局域网(LAN)、第三/第四代移动电话技术以及数字视频广播这些需求应用的要求,在基带处理器中可能需要大程度的并行性。为此,已经提出了典型地基于高度复杂的、很长指令字(VLIW)和/或多处理器核心机器的各种可编程BBP(PBBP)解决方案。当与ASIC解决方案相比时,这些常规PBBP解决方案可能具有诸如增加管芯面积和可能限制性能的缺点。因此,最好是有一种可以支持大量不同的调制技术、带宽和机动性要求以及也可以具有可接受的面积和功耗的可编程DSP结构。
发明内容本发明公开了包括集群式单指令多数据(SIMD)微体系结构的可编程数字信号处理器的各个实施例。在一种实施方式中,数字信号处理器包括多个加速器单元、处理器核心和复数计算单元。每个所述加速器单元可以被配置为执行一个或多个专用功能。所述处理器核心包括可以被配置为执行整数指令的整数执行单元。所述复数计算单元可以被配置为执行复矢量指令。所述复数计算单元可以包括第一和第二集群式执行流水线。所述第一集群式执行流水线可以包括被配置为执行第一复矢量指令的一个或多个复数运算逻辑单元数据路径。所述第二集群式执行流水线可以包括被配置为执行第二复矢量指令的一个或多个复数乘加器数据路径。在一种具体实施方式中,所述集群式执行流水线内的每个数据路径可以被配置为自然地把所有数据解释为复数值数据。在另一具体实施方式中,给定的集群式执行流水线内的每个数据路径可以在每时钟周期中执行作为矢量指令的一部分的单个复数运算。此外,该整数执行单元可以与所述第一集群式执行流水线和所述第二集群式执行流水线内的任意数据路径执行任意复矢量指令同时地每时钟周期中执行单个指令。在又一个具体实施方式中,所述复数计算单元可以执行单指令多数据(singleinstructionmultipledata,SIMD)指令。图1是包括可编程基带处理器的多模无线通信设备的一个实施例的框图。图2是图1的可编程基带处理器的一个实施例的框图。图3是说明图2的可编程基带处理器的一个实施例的指令发出流水线的示图。图4是说明图2的可编程基带处理器的一个实施例的更详细方面的框图。图5是说明图2的处理器核心的集群式SIMD控制路径的一个实施例的更详细方面的视图。图6是图4所示的复ALU的复数短MAC数据路径的一个实施例的视图。图7是图4所示的复数乘加器MAC单元的示例性数据路径的一个实施例的视图。尽管本发明很容易进行各种改进和替换形式,但是通过附图中的例子示出了其具体实施例,并将在此详细描述。但是,应该理解,附图及其详细描述并不是要限制发明为所公开的特定形式,相反,其意图是涵盖落入由所附权利要求限定的本发明的精神和范围内的所有修改、等效及替换。注意,该标题仅仅用于编制并不意味着用来限制或解释说明书或权利要求书。此外,注意,在本申请中以自由意味(即,具有潜在做某事、能够做某事)而非强制意味(即,必须)使用单词"可以"。措词"包括"及其派生词意味着"包括但不限于"。措词"连接"意味着"直接或间接地连接",以及措词"耦合"意味着"直接或间接地耦合"。具体实施方式现在转向图1,其示出了包括可编程基带处理器的多模无线通信设备的一个实施例的框图。在所示的实施例中,从功能和硬件角度示出了无线电通信系统的一些基本部分。更具体地说,多模无线通信设备100包括接收子系统110和发射子系统120,它们都被耦合到一个或多个天线125。注意到,在各个实施例中,多模无线通信设备可以是手持式移动电话设备等。还注意,具有包括数字和字母的参考标识符的元件可以适合地仅由数字指示。接收子系统110包括耦合于天线125和模数转换器(ADC)140之间的RF前端130的一部分。ADC140被耦合到可编程基带处理器(PBBP)145A,可编程基带处理器(PBBP)145A又被耦合到(多个)应用处理器150。发射子系统120包括耦合到PBBP145B的(多个)应用处理器160,PBBP145B耦合到数模转换器(DAC)170。DAC170也耦合到部分RF前端130。注意到,PBBP145A和145B可以由一个可编程处理器实现,在某些实施例中,它们可以被制造在一个集成电路上。也要注意到,在某些实施例中,ADC140和DAC170可以由PBBP145A的一部分实现。进一步注意,在其他实施例中,通信设备100可以在一个集成电路上实现。PBBP145在发射子系统120和接收子系统110中执行许多功能。在发射子系统120内,PBBP145B可以将数据从应用源转变为适于无线电信道的格式。例如,发射子系统120可以执行诸如信道编码、数字调制和码元整形的功能。信道编码指使用不同的方法用于误码校正(例如,巻积编码)和误码检测(例如,利用循环冗余码(CRC))。数字调制是指将比特流映射到复采样流的处理。数字调制中的第一(有时是唯一的)步骤是将各组比特映射到特定的信号星座图上,如二进制相移键控(BPSK)、四相移相键控(QPSK)或正交调幅(QAM)。将各组比特映射到无线电信号的振幅和相位有各种方法。在某些情况下,可以应用第二步骤,域转换。在正交频分复用(OFDM)系统(即,在大量相邻频率上同时发送信息的调制方法)中,该步骤可以使用快速傅里叶逆变换(IFFT)。在诸如码分多址(CDMA)的扩展系统中,例如,(通过每个活动用户分配单个"码"使得多个用户共享射频(RF)谱的"扩展"方法),每个码元与包括(O,+/-1}+{0,+/力的扩展序列相乘。最后的步骤是码元整形,该码元整形使用数字带通滤波器将方波转变为限带信号。由于信道编码和映射功能典型地在比特级上操作(不在字级上),它们通常不适合于在可编程处理器中实施。但是,如下面将更详细描述,在PBBP145的各种实施例中,可以利用一个或多个专用硬件加速器来实现这些功能等。PBBP145可以执行如同步、信道均衡、解调以及前向纠错的这种功能。例如,接收子系统110可以从失真模拟基带信号恢复码元并将它们转换为具有可接受的误码率(BER)的比特流,用于在应用处理器150中运行的应用程序。同步可以分为几个步骤。第一步骤可以包括检测输入信号或帧,并且有吋被称为"能量检测"。与此相关,也可以进行诸如天线选择和增益控制的操作。下一步是码元同步,旨在找出输入码元的精确定时。所有前述操作典型地基于复自相关或复互相关。在很多情况下,可能需要接收子系统iio对无线电信道中的缺陷进行某种补偿。该补偿称为信道均衡。在OFDM系统中,信道均衡可以涉及在执行FFT之后每个子载波的简单縮放和旋转。在CDMA系统中,"耙式(rake)"接收机常常用来将以不同路径延迟来自多个信号路径的输入信号合并。在某些系统中,可以使用最小均方(LMS)自适应滤波器。类似于同步,信道估计和均衡化中包括的大多数操作可以采用基于巻积的算法。这些算法通常不足以类似到能够共享相同的固定硬件。但是它们可以在诸如PBBP145的可编程DSP处理器上有效地实现。解调可以看成是调制的相反操作。解调典型地涉及在OFDM系统中执行FFT以及在DSSS/CDMA系统中执行扩展序列或"解扩"的相关分析。解调的最后步骤可以是根据信号星座图将复码元转变为比特。类似于信道编码,去交织和信道解码不适合于固件实现方式。然而,如下面更详细地描述,可以用于巻积码的Viterbi或Turbo解码,是可以由一个或多个硬件加速器实现的要求非常高的功能。可编程基带处理器体系结构图2图示了图1的可编程基带处理器的一个实施例的框图。PBBP145可以通过提供动态可重构性以多个运行模式(即,前导码接收、有效载荷接收和传输)和不同的数据率支持不同的无线电标准。为了实现期望的可重构性,PBBP145的各个实施例可以包括通过控制处理器核心之间的互连来管理DSP流程的中央处理器核心、多个存储器单元以及使用内部网络的各种硬件加速器。参考图2,PBBP145包括处理器核心146以及复数计算单元290。PBBP145还包括标以0至n的多个数据存储器单元,其中n可以是任意数目。PBBP145还包括标以0至m的多个硬件加速器,其中m可以是任意数目。此外,PBBP145包括耦合于处理器核心146和复数计算单元290、以及每个数据存储器和加速器之间的网络互连250。此外,PBBP145包括分别标有220和215的整数存储器单元和系数存储器单元,它们都通过网络互连250耦合到处理器核心146和复数计算单元290。最后,PBBP145包括介质访问层(MAC)接口单元225,其被耦合于网络互连250和诸如应用处理器150和160的主机(Host)/MAC处理器之间。在所示的实施例中,处理器核心146包括整数执行单元260,其被耦合到控制寄存器CR265和网络互连250。整数执行单元260包括ALU261、乘加器单元262和一组寄存器外存储器(RF)263。在一个实施例中,整数执行单元260可以用作例如被配置为执行16位整数指令的精减指令集控制器(RISC)。注意到,在其他实施例中,整数执行单元260可以被配置为执行不同大小的整数指令,例如8位或32位指令。在各个实施例中,复数计算单元290可以包括多个集群式单指令多数据(SIMD)执行流水线。由此,在图2所示的实施例中,复数计算单元290包括SIMD簇流水线295A和SIMD簇流水线295B。SIMD簇流水线295A包括复数乘加器(CMAC)单元270和耦合到CMAC270的矢量控制器275A。此夕卜,SIMD簇流水线295A包括都耦合到CMAC270的矢量加载单元(VLU)284A和矢量存储单元(VSU)283A。SIMD簇流水线295B包括耦合到矢量控制器275B的复数运算逻辑单元(CALU)280。SIMD簇流水线295B还包括都耦合到CALU280VSU283D和VLU284B。在所示的实施例中,CALU280被显示为四路复ALU,该四路复合ALU可以包括四个独立的数据路径,每个数据路径具有复数短乘加器(complexshortmultiplieraccumulator,CSMAC)(图4所示)。如下面更详细地描述,CALU280可以执行矢量指令。在一个实施例中,CALU280尤其适于执行复矢量指令。此外,CALU280的每个独立的数据路径可以同时执行复矢量指令。CMAC270可以被优化以进行复数矢量运算。也就是,在一个实施例中,CMAC270可以被配置为将所有数据转换为复数数据。此外,CMAC270可以包括可以同时或分别运行的多个数据路径。在一个实施例中,CMAC270可以包括四个复数数据路径,该数据路径包括乘法器、加法器和累加寄存器(在图2中都没有示出)。因此,CMAC270可以被称为四路CMAC数据路径。除乘法和加法之外,CMAC270也可以执行舍入和縮放操作并支持饱和。在一个实施例中,CMAC270操作可以被分为多流水线步骤。此外,在一个时钟周期中,四个复数数据路径中的每一个都可以计算复数乘法和累加。在N/4时钟周期中,CMAC270(即,四个数据路径一同)可以在N-元矢量上执行运算,以支持复矢量计算(例如,复数巻积、共轭复数巻积和复矢量点积)。此外,CMAC270也可以支持累加器寄存器中存储的复值运算(例如,复数加法、减法、共轭等)。例如,在一个时钟周期中,CMAC270可以计算复数乘法如(AR+jAI)*(BR+jBI),以及在一个时钟周期中,计算复数累加,并支持复矢量计算(例如,复数巻积、共轭复数巻积和复矢量点积)。在一个实施例中,如上所述,PBBP145可以包括多个集群式SIMD执行流水线。更具体地说,上面描述的数据路径可以被一起分组为SIMD簇,其中每个簇可以执行不同的任务,而每个时钟周期,簇内的每个数据路径可以在多个数据上执行单个指令。具体地说,四路CALU280和四路CMAC270可以用作独立的SIMD簇,例如其中CALU280可以平行执行诸如四个不同编码的四相关运算或解扩运算的四个并行运算,而CMAC270执行两个并行基-2FFT蝶形运算或一个基-4FFT蝶形运算。注意到,尽管CALU280和CMAC270被显示为四路单元,但是可以认为,在其他实施例中,它们每个都可以包括任何数量的单元。因此,在这种实施例中,PBBP145根据需要可以包括任何数量的SIMD簇。下面结合图5的说明更详细地描述用于集群式SIMD操作的控制路径。指令集体系结构在一个实施例中,用于处理器核心146的指令集体系结构可以包括三类复合指令。第一类指令是RISC指令,其对16位整数运算数进行运算。RISC-指令类包括大多数面向控制的指令以及可以在处理器核心146的整数执行单元260内执行。下一类指令是DSP指令,其对具有实部和虚部的复数值数据进行运算。DSP指令可以在一个或多个S1MD簇上执行。第三类指令是矢量指令。矢量指令可以认为是DSP指令的延伸,因为它们对大数据集进行运算并可以利用高级的寻址模式和矢量支持。下面在表1中示出介绍矢量指令的示例性列表。极少例外并注意,该矢量指令对复数数据类型进行运算。表1复矢量指令30的示例性列表<table>tableseeoriginaldocumentpage14</column></row><table>如下面结合图5的描述更详细地描述,指令格式可以根据指令的类别包括各种字段。例如,在一个实施例中,RISC指令可以包括单元字段、操作码字段和变元字段,并且矢量指令可以附加地包括矢量大小字段。许多基带接收算法可以分解成在多个任务之间几乎不具有反向依赖性的任务链。该属性不仅允许在SIMD执行单元上并行执行不同的任务,它也可以利用上述指令集体系开发。由于矢量运算典型地对大矢量进行运算,每个时钟周期可以发出一个指令,由此减小控制路径的复杂性,此外,由于矢量SIMD指令在长矢量上运行,在矢量运算过程中可以执行许多RISC指令。因而,在一个实施例中,处理器核心146可以是每个时钟周期发出单指令的机器(SIMT),并且每个SIMD簇和整数执行单元可以以流水线方式在每个时钟周期执行一指令。因此,PBBP145可以被认为并行运行两个线程。第一线程包括程序流和使用整数执行单元260的混杂处理。第二线程包括在SIMD簇上执行的复矢量指令。图3图示了图2的可编程基带处理器的一个实施例的指令执行流水线。共同地参考图2和图3,图3的左列表示时间(在执行时钟周期中)。剩余列表示复数SIMD簇(例如,CMAC270和CALU280的一个数据路径)和整数执行单元260的执行流水线以及其指令的发出。更具体地说,在第一时钟周期中,复矢量指令(例如,CVL.256)被发出到CMAC270。如图所示,矢量指令可以用很多周期完成。在下一个时钟周期中,发出矢量指令到CALU280。在下一个时钟周期中,发出整数指令到整数执行单元260。在下几个周期中,在矢量指令被执行的同时,可以发出任何数量的整数指令到整数执行单元260。注意到,尽管未示出,但是剩余的SIMD簇也可以以类似方式同时执行指令。注意到,在一个实施例中,为了提供控制流同步和控制数据流,可以使用"空闲"指令来停止控制流,直到完成给定的矢量运算。例如,通过相应的SIMD执行单元执行某一个矢量指令,可以允许通过整数执行单元260执行"空闲"指令。"空闲"指令可以暂停整数执行单元260,直到整数执行单元260从相应的SIMD执行单元接收诸如标记的指示。硬件加速器如上所述的,为了提供支持各种无线电标准的多模,可以通过与可编程核心结合使用的专用硬件加速器来提供许多基带功能。例如,在一个实施例中,可以使用图2的加速器0至m来实现一种或更多以下功能抽取电路/滤波器、用于CDMA和DSSS调制方案的RAKE功能(例如,四"指"RAKE)、用于OFDM调制方案和IEEE802.11b的基-4FFT/改进的韦氏变换、解映射器(demapper)、巻积/Turbo编码器-维特比(Viterbi)/Turbo解码器、可配置块交织器、可配置加扰器以及CRC加速器。注意到,在其他实施例中,可以使用加速器O至m实现其他数目和类型的功能。在一个实施例中,抽取电路/滤波器加速器可以包括可配置的滤波器,例如可以用于诸如正EE802.11a及其他标准的有限脉冲响应(FIR)滤波器。耙式加速器可以包括用于延迟路径存储的本地复数存储器、解扩码发生器和可以执行多路径搜索和信道估计功能的匹配滤波器(都没有示出)。基-4FFT/改进的韦氏变换(FFT/MWT)加速器可以包括基-4蝶形(未示出)和灵活的地址发生器(未示出)。在一个实施例中,FFT/MWT加速器可以在54时钟周期中执行64-点FFT,以及在18时钟周期中执行支持IEEE802.11b标准的改进韦氏变换。巻积/Turbo编码器-维特比解码器加速器可以包括可配置的维特比解码器和Turbo编码器/解码器,以提供对巻积和Turbo纠错码的支持。在一个实施例中,可以通过维特比算法执行巻积码的解码,而Turbo码可以通过利用软输出维特比算法解码。在OFDM情况下,在不同的频率当中,可配置块交织器加速器可以用来重排数据以及时扩展相邻数据位。此外,加扰器加速器可以用来以伪随机数据数据进行加扰,以保证发送的数据流中的1和0的均匀分布。CRC加速器可以包括线性反馈移位寄存器(未示出)或用于产生CRC的其他算法。存储器单元为了有效地利用处理器核心146的SIMD体系结构,存储器管理和分配可能是重要因素。因而,数据存储器系统体系结构包括几个相对小的数据存储器单元(例如,DMO-DMn)。在一个实施例中,数据存储器DMO-DMn可以用于存储处理过程中的复数数据。这些存储器的每一个可以被实现以具有任意数目(例如,四个)的交织存储器区块,该交替存储器区块可以允许并行访问任意数目(例如,四个)的连续地址(矢量元素)。此外,数据存储器DMO-DMn的每一个可以包括地址生成单元(例如,DM0的地址生成单元201),地址生成单元可以被配置为执行模量选址以及FFT选址。此外,每个DMO-DMn可以经由网络互连250连接到任意加速器和连接到处理器核心146。系数存储器215可以用于存储FFT和滤波器系数、查询表及未被加速器处理的其他数据。整数存储器220可以用作存储用于MAC接口225的比特流的包缓冲器。系数存储器215和整数存储器220都经由网络互连250耦合到处理器核心146。网络网络连接250被配置为互连数据路径、存储器、加速器和外部接口。因此,在一个实施例中,网络互连250可以类似于交叉开关来工作,其中可以从一个输入(写-)端口至一个输出(读-)端口建立连接,以及在MxM结构中,任意输入端口可以被连接到任意输出端口。尽管在某些实施例中,某些存储器和某些计算单元之间的连接可能不是必需的。因而,网络互连250可以被优化,以允许某些特定的配置,因此简化网络互连250。有了诸如网络互连250的互连可以消除判优器和选址逻辑的需要,因此减小网络和加速器接口的复杂性,同时仍然允许许多并发通信。注意到,在一个实施例中,网络互连250可以使用多路复用器或组合逻辑结构如与-或(And-O)结构来实现。但是,可以想到,在其他实施例中,网络互连250可以根据需要使用任意类型的物理结构来实现。在一个实施例中,网络互连250可以以两个子网络实现。第一子网络可以用于基于抽样的传送和第二子网络可以是用于基于位的传送的串行网络。两种网络的划分可以提高网络的吞吐量,由于基于位的传送可能另外需要与网络的数据宽度不相待的大数据块的冗长成帧(framing)和解帧(de-framing)。在这种实施例中,每个子网络可以被实现为由处理器核心146配置的独立交叉开关。网络互连250也可以被配置为允许具有相关20功能的加速器直接互相连接成链,并与数据存储器连接。在一个实施例中,网络互连250可以使得数据在加速器单元之间无缝地流动,而不用处理器核心146介入,由此使得仅在网络连接的创建和损坏过程中需要在网络中牵涉到处理器核心146。如上所述,将所有单元(例如,存储器,加速器等)连接到所有其他单元可以不是必需的,并且网络互连250可以被优化,以仅允许某些配置。在那些实施例中,网络互连250可以被称为"部分网络"。为了在这部分网络之间传送数据,一个或多个数据存储器单元内的几个存储块(例如,DM0)可以被分配给双方的子网络。这些存储块可以被用作任务之间的乒乓缓冲器。通过在计算元件之间"交换"存储块可以避免昂贵的存储器移动。该策略可以提供有效的和可预测的数据流,无需昂贵的存储器移动操作。图4图示了图2的可编程基带处理器的实施例的另一方面。注意到,与图2中的元件对应的元件为清楚简单其见以相同的数字标记。在图4的实施例中,处理器核心146包括被耦合到整数10执行单元260的程序控制单元310。如上所述,整数执行单元260包括ALU261、独立的乘法器累加单元262和一组寄存器外存储器(RF)263。复数计算单元290包括CMAC执行单元291和CALU执行单元292。CMAC执行单元291包括耦合到矢量加载单元284A的矢量控制器275A,矢量加载单元284A又被耦合到CMAC单元270。CMAC单元270也被耦合到矢量存储单元283A。CALU执行单元292包括被耦合到矢量加载单元284B的矢量控制器275B,矢量加载单元284B又被耦合到CMAC单元270。CMAC单元270也被耦合到矢量存储单元283B。注意到,在一个实施例中,CMAC执行单元291和CALU执行单元292可分别对应于SIMD簇流水线295A和295B。在所示的实施例中,CALU280包括四个数据路径。类似地,CMAC270也包括四个数据路径,其包括标有CMAC276A至276D的四个CMAC单元。下面结合图7的说明进一步描述CMAC数据路径的实施例。由于连同地址和编码发生器一起,CALU280可以是用于诸如耙指式处理的功能的主要部件,通过用累加器实现4-路CALU,可以同时执行四个不同编码的四个并行相关运算或解扩。通过增加仅仅能乘以{0,+/-1}+{0,+/"}的简单或"短"复数乘法器到累加器单元,就能实现这些运算。因此,在一个实施例中,CALU280包括标有285A至285D的四个不同的CSMAC数据路径。在图6中示出了示例性CSMAC数据路径(例如,CSMAC285A)。注意到,尽管在CALU280和CMAC270内示出了四个数据路径,但是可以想到,在其他实施例中可以使用任意数目的数据路径。在一个实施例中,可以从指令字、解扰编码发生器或从OVSF编码发生器的任何一个控制CSMAC285。所有子单元可以由矢量控制器275A和275B控制,矢量控制器275A和275B控制可以被配置为管理加载和存储顺序、编码生成和硬件回路计数。为了缓和存储器接口,可以釆用矢量加载单元284和矢量存储单元283。由此,在所示实施例中,VLU284包括存储器281,以缓和存储器接口和减小网络250上取出存储器数据的数目。例如,如果从存储器读取四个连续的数据项,那么VLU284在某些情况下仅执行单个读取操作就可以减小存储器取出的数目达3/4。由于CMAC执行单元291包括多个CMAC单元,因此可以执行几个并行CMAC操作。因而,每个CMAC单元对于每个操作可以使用一个系数和一个输入数据项。因此,用于这类任务的存储器带宽可以是大的。但是,指令集可以通过在本地存储大量先前数据项来利用矢量加载单元2S4内的存储器281。通过重新排序该数据存取图形,可以减小存储器访问率。在一个实施例中,VLU284可以用作存储器(例如,DMO-n)、网络互连250以及执行单元(例如,与CMAC执行单元相关联的VLU284A和与CALU执行单元相关联的VLU284B)之间的接口。在一个实施例中,VLU284可以使用两种不同的模式加载数据。在第一模式中,可以从存储器块加载多个数据项。在另一种模式中,数据可以先加载一个数据项,然后被分配到给定簇中的SIMD数据路径。当通过SIMD簇处理连续数据时,后一模式可以来减小存储器访问的数目。图5图示了诸如图2和图4的PBBP145的集群式SIMD处理器的示例性控制路径的视图。PBBP145包括处理器核心146,处理器核心146包括由RISC数据路径510表示的RISC型执行单元,并以及由SIMD数据路径#0525和SIMD数据路径#11535表示的数字SIMD数据路径。为了在多数据路径上提供控制,控制路径硬件500包括耦合到程序计数器502的程序流控制501,程序计数器502又被耦合到程序存储器(PM)503。PM503被耦合到多路复用器504、单元-字段提取508、SIMD控制520和SIMD控制530。多路复用器504被耦合到指令寄存器505,指令寄存器505被耦合到指令解码器506。指令解码器506被进一步耦合到控制信号寄存器(CSR)507,控制信号寄存器(CSR)507又被耦合到RISC数据路径510的剩余部分。类似地,每个SIMD控制单元520和530包括各自的指令寄存器(例如,522,532)、指令解码器(例如,523,533)以及CSR(例如,524,534),这些元件被耦合到它们各自的SIMD簇(例如,525和535)。注意到,图5所示的至少一些电路可以是图4的程序控制单元310的一部分。例如,在一个实施例中,程序流动控制501、指令寄存器505、解码器506、控制单元507、单元字段提取508以及发出控制509可以是图4的程序控制单元310的一部分。如上所述,该指令格式可以包括单元字段。在一个实施例中,指令字的单元字段可以包括三个位,该三个位表示要向其发出指令的单元(例如,整数执行单元,或SIMD路径弁—1-4)。更具体地说,单元字段可以提供能够使发出控制单元509确定向哪个指令解码器/执行单元发出指令的信息。然后执行单元内的每个指令解码器可以对该单元指定的剩余字段进行解码。这意味着,根据需要在执行单元之间可以具有不同组织和尺寸的剩余字段。在一个实施例,在指令字的剩余位被发送给各自的指令寄存器/解码器之前,该单元-字段提取单元508可以删除或去除单元字段。在一个实施例中,在每个时钟周期中,可以从PM503取出一个指令。该指令字中的单元字段可以从指令字提取,并用来控制向哪个控制单元分配指令。例如,如果单元字段是"OOO",那么该指令可以被分配给RISC数据-路径。这可能使得发出控制单元509允许指令字经过多路复用器504进入用于RISC数据路径的"指令寄存器"505中,而该周期没有新的指令加载到SIMD控制单元中。然而,如果单元字段保持任意其他值,那么发出控制单元509可以允许指令字通往用于相应的SIMD控制单元的"指令寄存器"522,532并使得NOP指令被发送给RISC数据路径指令寄存器。在一个实施例中,当一指令被分配给SIMD执行单元时,来自该指令字的矢量长度字段可以被提取并存储在相应的SIMD控制单元(例如,520,530)的计数寄存器(例如,521,531)中。该计数寄存器可以用来记录相应矢量指令中的矢量长度。当相应的SIMD执行单元已经完成矢量运算时,矢量控制器275可以将信号(标记)发送到程序流控制501,以指示该单元准备接收新的指令。对应于每个SIMD控制单元520,530的矢量控制器可以附加地创建用于执行单元内的开始结束状态的控制信号。这种控制信号例如可以控制用于CSMAC运算的VLU284,也可以管理单只(odd)矢量长度。如上所述,在诸如CDMA系统中的许多基带处理算法中,例如从天线接收的复数数据序列用"(解)扩编码"相乘。因此,可能需要以元素为单位的将复矢量乘以(和累加)解扩编码,该解扩编码可以是仅仅包含来自以下集合的数字的复矢量{0,+/-1}+{0,+/-i}。然后累加该复数乘法的结果。在某些常规可编程处理器中,该功能可以通过执行几个算术指令或通过一个完全实现的CMAC单元来执行。但是,使用可编程处理器内的N路(Nway)CSMAC单元(例如,CSMAC285A-D),可以减小该石更件成本。图6是图4所示的复ALU的四路CSMAC单元的示例性数据路径的视图。注意到,图6的CSMAC285可以说明图4的CSMAC285A至285D的任意一个。CSMAC285包括反相器601A和601B、标有603A至603D的四个多路复用器。此外,CSMAC285包括标有602和604A,604B,606A和606B的几个加法器。此外,CSMAC285包括两个保护单元606A和606B,两个累加寄存器607A和607B,以及两个舍入/饱和单元608A和608B。在一个实施例中,CSMAC285经由VLU284接收矢量数据。该实部与虚部沿着独立的路径,如图所示。根据将乘以输入矢量数据的解扩编码,多路复用器603A至603D可以允许相应的实部与虚部和它们的补码或反码传给加法器604A和604B(它们在此相加),有时利用载体。由此,根据该运算,CSMAC285可以利用二的补码(two'scomplement)有效地将各自的实部与虚部乘以(O,+/-1}+{0,+/-i}。保护单元605A和605B可以被配置限制加法器604A和604B的结果。例如,当诸如溢流的条件存在时,该结果可以根据需要限制为提供最大或最小(即,饱和)值。与累加寄存器607A和607B结合的加法器606A和606B可以累加各个结果,各个结果可以被传给舍入/饱和单元,并继续传给VSU283B以发送到数据存储器。因此,从上面的描述,不使用常规乘法器。代之以,执行二的补码加法,由此节省管芯面积和功率。因此,诸如CSMAC285A-D的四路CSMAC可以由可以在可编程环境中执行四个并行CSMAC操作的面积高效的四路CSMAC单元实现。该增强的四路CSMAC单元执行矢量乘法的速度比单个单元快四倍,或者能够用四个不同系数矢量乘以相同的矢量。后一操作可以用来在CDMA系统中实现"多码解扩"。如上所述,VLU284可以根据需要复制CSMAC285的所有数据-路径当中的一个数据项或系数项。当用不同的内部产生的系数(例如,使用OVSF编码)乘以相同的数据项时,该复制模式尤其有用。图7是图4所示的复MAC单元数据路径的一个实施例的视图。注意到,图7的CMAC276可以说明图4的CMAC276A至276D的任意一个。CMAC276包括标有701A至701D的四个多位乘法器,多位乘法器701A至701D被耦合到四个各自的结果寄存器702A至702D。此外,CMAC276包括标有703,704,709A,70犯,710A和710B的六个全力口法器。此外,CMAC276包括多路复用器705,706,707和708,以及累加寄存器ACRR711A和ACIR71IB。在所示的实施例中,乘法器701A可以将操作码A的实部乘以操作码C的实部,同时乘法器701B可以将操作码A的虚部乘以操作码C的虚部。此外,乘法器701C可以将操作码A的实部乘以操作码C的虚部,以及乘法器701D可以将操作码A的虚部乘以操作码C的实部。结果可以分别存储在结果寄存器702A-702D中。加法器703可以对乘法器702A和702B的结果执行加法和减法,而加法器704可以对乘法器702C和702D的结果执行加法和减法。多路复用器705和707可以根据操作码的值允许乘法器/加法器旁通。根据正在执行的功能,多路复用器706和708可以选择性地向累加部分提供值,该累加部分包括加法器709A、709B、710A禾B710B,以及累加寄存器ACRR711A和ACIR711B。ACRR711A是用于实数据的累加寄存器,ACIR711B是用于虚数据的累加寄存器。在一个实施例中,CMAC276可以每个时钟周期执行一次复值相乘-累加运算(例如,基-2FFT蝶形运算)。特别对诸如相关运算、FFT、或绝对最大值搜索之类的运算进行优化,例如可以对复数矢量(例如,复值同相(I)和求积分(Q)对)执行这些运算。如上所述,处理器核心146具有特殊类别的多周期矢量定向指令,其能够与CALU和RISC/整数指令并行执行。在一个实施例中,复矢量指令可以是16位长,其可以有效利用程序存储器。然而,可以预期在其他实施例中该指令长度可以是任意位数。在一个实施例中,当执行复数乘法或巻积时,当加法器703执行减法和加法器704执行加法时,可以执行普通复数计算。当加法器703执行加法和加法器704执行减法时,可以执行复数共轭计算。此外,当对点积乘法和矢量旋转执行普通复数或复数共轭乘法时,ACRR711A和ACIR711B的迭代循环可以被中断,并且在将结果向矢量存储器以自然长度发送之前,加法器710A和加法器710B可以用于执行舍入运算。同样,当执行用于复数滤波器的复数巻积、复数自相关运算以及复数互相关运算时,加法器710A和加法器710B分别可以提供实部和虚部的加或减累加。在一个实施例中,当执行FFT或IFFT计算时,CMAC276数据路径可以给出(流水线的)每个时钟周期一个蝶形计算,(即,每个时钟周期两点FFT计算)。为了执行FFT,加法器709A和加法器709B执行减法,并加法器710A和加法器710B的ACRR及ACIR迭代循环被中断。此夕卜,加法器710A和加法器710B执行加法运算。在一个实施例中,为了执行与上面描述的基带同步和数据接收相关的各种操作,可以在CMAC276上执行以下指令CMUL.n:对结果进行舍入的普通复数乘法,并执行n步的非重叠循环。操作码可以从OPA和OPB端口提供。结果以自然长度复数数据格式提供在端口C上。CCMUL.n:对结果进行舍入的复数共轭乘法,并执行n步的非重叠循环。操作码可以从OPA和OPB端口提供。结果以具有自然长度复数数据格式提供在端口C上。CMAC.n:普通复数乘法和累加,非重叠循环地执行n步。操作码可以从OPA和OPB端口提供。结果的实部可以被存储在ACRR711A中,以及虚部可以被存储在ACIR711B中。CCMAC.n:复数共轭乘法和累加,非重叠循环执行n步。操作码可以从OPA和OPB端口提供。结果的实部可以存储在ACRR711A中,以及虚部可以存储在ACIR711B中。FFT.m.n:大小为n的FFT变换的第m步基于普通按序寻址,复数数据可以从端口A和端口B取出,并且复数系数可以从端口C取出;复数数据结果可以利用位反射寻址发送到端口D。注意到,上面描述的PBBP145的体系结构和微体系结构的灵活特性可以对多种无线电标准和这些标准内多种操作模式提供支持。尽管已经相当详细地描述了以上实施例,但是一旦完全理解上述公开,大量变形和改进对所属领域的技术人员来说是显而易见的。这里意图是要将下列权利要求书解释为包含所有这种变形和改进。权利要求1.一种数字信号处理器,该处理器包括多个加速器单元,每个加速器单元被配置为执行一个或多个专用功能;耦合到所述多个加速器单元的处理器核心,其中该处理器核心包括被配置为执行整数指令的整数执行单元;以及耦合到所述多个加速器单元的复数计算单元,其中该复数计算单元被配置为执行复矢量指令;其中所述复数计算单元包括第一集群式执行流水线和第二集群式执行流水线,所述第一集群式执行流水线包括被配置为执行第一复矢量指令的一个或多个复数运算逻辑单元数据路径,所述第二集群式执行流水线包括被配置为执行第二复矢量指令的一个或多个复数乘加器数据路径。2.如权利要求1所述的处理器,其中所述第一集群式执行流水线和第二集群式执行流水线内的每个数据路径被配置为每个时钟周期执行单个复数运算,该单个复数运算是矢量指令的一部分。3.如权利要求2所述的处理器,其中所述整数执行单元被配置为与所述第一集群式执行流水线和所述第二集群式执行流水线内的任意数据路径执行任意复矢量指令同时地、每个时钟周期执行单个指令。4.如权利要求1所述的处理器,其中每个所述复数乘加器数据路径被配置为自然地将任何数据解释为复数值数据。5.如权利要求1所述的处理器,其中所述第一复矢量指令和所述第二复矢量指令中的每一个都对具有实部和虚部的复数值数据进行运算。6.如权利要求1所述的处理器,其中所述复数计算单元被配置为执行单指令多数据(SIMD)指令。7.如权利要求1所述的处理器,其中每个复数运算逻辑单元数据路径还包括复数短乘加器数据路径,该复数短乘加器数据路径被配置来将复数数据值乘以包括{0,+/-1}+{0,10+/-i)的数集中的值。8.如权利要求1所述的处理器,其中所述第一集群式执行流水线和第二第一集群式执行流水线中的每一个还包括各自的矢量加载单元,该矢量加载单元被配置为每个时钟周期取出数据项以供给各集群式执行流水线中的任意数据路径使用。9.如权利要求8所述的处理器,其中每个矢量加载单元包括存储器,该存储器被配置为在本地存储来自先前时钟周期中执行的取出操作的数据,以供在后续时钟周期中任意集群式执行流水线中的任意数据路径使用。10.如权利要求9所述的处理器,其中所述第一集群式执行流水线和所述第二集群式执行流水线中的每一个还包括各自的矢量控制器单元,该矢量控制器单元被耦合到所述各自的矢量加载单元,并被配置为通过第一集群式执行流水线和第二集群式执行流水线中的任意数据路径管理矢量运算的加载和存储顺序。11.如权利要求1所述的处理器,其中所述一个或多个专用功能的各给定功能与对应于不同无线通信标准的基带信号处理相关。12.如权利要求1所述的处理器,所述处理器还包括多个存储器单元,其中每个存储单元包括地址发生单元,该地址发生单元被配置为响应于接收到读或写事务而产生与本地存储位置相应的地址。13.如权利要求12所述的处理器,其中所述多个存储器单元、所述多个加速器单元、所述处理器核心以及所述复数计算单元中的每一个都被制造在单个集成电路上。14.如权利要求12所述的处理器,所述处理器还包括被配置为在所述多个存储器单元、所述多个加速器单元、所述处理器核心和所述复数计算单元之间提供连接的网络。15.如权利要求14所述的处理器,其中响应于特定整数指令的执行,所述网络被配置为将所述多个存储器单元中的给定存储器单元耦合到所述多个加速器单元中的一个或多个。16.如权利要求14所述的处理器,其中响应于特定整数指令的执行,所述网络被配置为将所述多个存储器单元中的给定存储器单元耦合到所述复数计算单元。17.如权利要求14所述的处理器,其中响应于特定整数指令的执行,所述网络被配置为将所述多个加速器单元的两个或更多个加速器单元耦合在一起形成链,并进一步将所述链中的第一加速器单元耦合到所述多个存储器单元中的一个给定存储器单元与所述复数计算单元的其中之18.如权利要求1所述的处理器,其中所述多个加速器单元中的至少一些加速器单元是与基带信号处理相关的专用功能的可配置硬件实现。19.一种多模无线通信设备,该无线通信设备包括被配置为发射和接收射频信号的射频前端单元;耦合到所述射频前端单元的可编程数字信号处理器,其中所述可编程数字信号处理器包括多个加速器单元,每个加速器单元被配置为执行一个或多个专用功能;以及耦合到所述多个加速器单元的处理器核心,其中所述处理器核心包括被配置为执行整数指令的整数执行单元;以及耦合到所述多个加速器单元的复数计算单元,其中所述复数计算单元被配置为执行复矢量指令;其中所述复数计算单元包括第一集群式执行流水线和第二集群式执行流水线,所述第一集群式执行流水线包括被配置为执行第一复矢量指令的一个或多个复数运算逻辑单元数据路径,所述第二集群式执行流水线包括被配置为执行第二复矢量指令的一个或多个复数乘加器数据路径。20.如权利要求19所述的无线通信设备,其中所述第一集群式执行流水线和所述第二集群式执行流水线内的每个数据路径被配置为每个时钟周期执行单个复数运算,所述单个复数运算是矢量指令的一部分。21.如权利要求20所述的无线通信设备,其中所述整数执行单元被配置为与所述第一集群式执行流水线和第二集群式执行流水线内的任意数据路径执行任意复矢量指令同时地每个时钟周期执行单个指令。22.如权利要求19所述的无线通信设备,其中每个所述复数乘加器数据路径被配置为自然地将任何数据解释为复数值数据。23.如权利要求19所述的无线通信设备,其中所述第一复矢量指令和所述第二复矢量指令中的每一个都对具有实部和虚部的复数值数据进行运算。24.如权利要求19所述的无线通信设备,其中所述复数计算单元被配置为执行单指令多数据(SIMD)指令。25.如权利要求19所述的无线通信设备,其中每个复数运算逻辑单元数据路径还包括复数短乘加器数据路径,该复数短乘加器数据路径被配置为将复数数据值乘以包括(O,+/-1}+{0,+"}的数集中的值。26.如权利要求19所述的无线通信设备,其中所述第一集群式执行流水线和所述第二集群式执行流水线中的每一个还包括各自的矢量加载单元,该矢量加载单元被配置为每个时钟周期取出数据项以供各集群式执行流水线中的任意数据路径使用。27.如权利要求26所述的无线通信设备,其中每个矢量加载单元包括存储器,该存储器被配置为在本地存储来自先前时钟周期中执行的取出操作的数据,以供后续时钟周期中任意集群式执行流水线中的任意数据路径使用。28.如权利要求27所述的无线通信设备,其中所述第一集群式执行流水线和所述第二集群式执行流水线中的每一个还包括各自的矢量控制器单元,该矢量控制器单元被耦合到所述各自的矢量加载单元、并被配置为通过所述第一集群式执行流水线和所述第二集群式执行流水线中的任意数据路径管理矢量运算的加载和存储顺序。29.如权利要求19所述的无线通信设备,其中所述一个或多个专用功能的各给定功能与对应于不同无线通信标准的基带信号处理相关。30.如权利要求19所述的无线通信设备,所述无线通信设备还包括多个存储器单元,其中每个存储器单元包括地址发生单元,该地址发生单元被配置为响应于接收到读或写事务而产生对应于本地存储位置的地页址。31.如权利要求30所述的无线通信设备,其中所述多个存储器单元、所述多个加速器单元、所述处理器核心以及所述复数计算单元中的每一个都被制造在单个集成电路上。32.如权利要求31所述的无线通信设备,所述无线通信设备还包括被配置为在所述多个存储器单元、所述多个加速器单元、所述处理器核心和所述复数计算单元之间提供连接的网络。33.如权利要求32所述的无线通信设备,其中响应于特定整数指令的执行,所述网络被配置为将所述多个存储器单元中的给定存储器单元耦合到所述多个加速器单元中的一个或多个。34.如权利要求32所述的无线通信设备,其中响应于特定整数指令的执行,所述网络被配置将所述多个存储器单元中的给定存储器单元耦合到所述复数计算单元。35.如权利要求32所述的无线通信设备,其中响应于特定整数指令的执行,所述网络被配置为将所述多个加速器单元中的两个或更多个加速器单元耦合在一起形成链,并进一步将所述链中的第一加速器单元耦合到所述多个存储器单元中的一个给定存储器单元与所述复数计算单元的其中之一。36.如权利要求19所述的无线通信设备,其中所述多个加速器单元中的至少一些加速器单元是与基带信号处理相关的专用功能的可配置硬件实现。全文摘要本发明公开了一种包括集群式SIMD微体系结构的可编程数字信号处理器,其包括多个加速器单元、处理器核心和复数计算单元。每个加速器单元可以被配置来执行一个或多个专用的功能。所述处理器核心包括可以被配置来执行整数指令的整数执行单元。所述复数计算单元可以被配置来执行复矢量指令。所述复数计算单元可以包括第一和第二集群式执行流水线。所述第一集群式执行流水线可以包括被配置来执行第一复矢量指令的一个或多个复数运算逻辑单元数据路径。所述第二集群式执行流水线可以包括被配置来执行第二复矢量指令的一个或多个复数乘加器数据路径。文档编号G06F17/16GK101238455SQ200680029257公开日2008年8月6日申请日期2006年8月9日优先权日2005年8月11日发明者埃里克·特尔,安德斯·尼尔松,达克·刘申请人:科莱索尼克公司