首页> 中国专利> 包括复数短乘法器和独立的矢量加载单元的具有集群式SIMD微体系结构的可编程数字信号处理器

包括复数短乘法器和独立的矢量加载单元的具有集群式SIMD微体系结构的可编程数字信号处理器

摘要

本发明公开了一种可具有集群式SIMD微体系结构的可编程数字信号处理器包括,其包括多个加速器单元、处理器核心和复数计算单元。每个所述加速器单元可以被配置为执行一个或多个专用的功能。所述处理器核心包括可以执行整数指令的整数执行单元。所述复数计算单元可以包括复数运算逻辑单元执行流水线以及矢量加载单元,所述复数运算逻辑单元执行流水线可以包括被配置为执行复矢量指令的一个或多个数据路径。此外,每个数据路径可以包括可以被配置为将复数数据值乘以包括{0,+/-1}+{0,+/-i}的数集中的值的复数短乘加器单元。所述矢量加载单元可以使得每个时钟周期取出复数数据项以供所述复数运算逻辑单元执行流水线中的任意数据路径使用。

著录项

  • 公开/公告号CN101238454A

    专利类型发明专利

  • 公开/公告日2008-08-06

    原文格式PDF

  • 申请/专利权人 科莱索尼克公司;

    申请/专利号CN200680028816.9

  • 申请日2006-08-09

  • 分类号G06F15/78(20060101);

  • 代理机构11127 北京三友知识产权代理有限公司;

  • 代理人黄纶伟

  • 地址 瑞典林科平

  • 入库时间 2023-12-17 20:32:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2010-08-18

    授权

    授权

  • 2008-10-01

    实质审查的生效

    实质审查的生效

  • 2008-08-06

    公开

    公开

说明书

技术领域

本发明涉及数字信号处理器,更具体地说,涉及可编程数字信号处 理器微体系结构。

背景技术

在很短的时期内,无线设备特别移动电话的使用显著地增加。无线 设备的这种世界范围的增长导致大量新兴无线电标准和无线产品的汇 聚。反过来这也引起人们对软件定义无线电(SDR,Software Defined Radio)的不断增加的兴趣。

如SDR论坛所述,SDR是能够实现用于无线网络和用户终端的可重 构系统结构的硬件和软件技术的汇集。对于建立可以利用软件升级来增 强的多模式、多频带、多功能无线设备的问题,SDR提供有效的和相对 廉价的解决方案。因而,SDR可以被认为可在无线工业内的宽范围领域 应用的使能技术。

许多无线通信设备使用包括一个或多个数字信号处理器(DSP)的 无线电收发机。无线电中使用的一类DSP是基带处理器(BBP),基带处 理器可以处理与接收无线电信号的处理和准备发射信号相关的许多信号 处理功能。例如,BBP可以提供调制和解调,以及信道编码和同步功能。

许多常规BBP由仅支持一种无线电标准专用集成电路(ASIC)器件 实现。在很多情况下,ASIC BBP可以提供优异的性能。但是,ASIC解 决方案可以被限于在设计片上(on-chip)硬件的无线电标准内操作。

为了提供SDR解决方案,在无线电基带处理器中可能需要增加灵活 性,以满足入市时间、成本和产品寿命的要求。为了处理诸如无线局域 网(LAN)、第三/第四代移动电话以及数字视频广播这些需求应用的要求, 在基带处理器中可能需要大程度的并行性。

为此,已经提出了典型地基于高度复杂的、很长指令字(VLIW)和 /或多处理器核心机器的各种可编程BBP(PBBP)解决方案。当与它们的 ASIC配对物相比时,这些常规PBBP解决方案可能具有诸如增加管芯面 积和可能限制性能的缺点。因此,最好是有一种可以支持大量不同的调 制技术、带宽和机动性要求以及也可以具有可接受的面积和功耗的可编 程DSP结构。

发明内容

本发明公开了包括集群式单指令多数据(SIMD)微体系结构的可编 程数字信号处理器的各个实施例。在一个实施例中,数字信号处理器包 括多个加速器单元、处理器核心和复数计算单元。每个所述加速器单元 可以被配置来执行一个或多个专用功能。所述处理器核心包括可以被配 置来执行整数指令的整数执行单元。所述复数计算单元可以包括复数运 算逻辑单元执行流水线和矢量加载单元,所述复数运算逻辑单元执行流 水线可以包括被配置来执行复矢量指令的一个或多个数据路径。此外, 每个数据路径可以包括复数短乘加器单元,其可以被配置来将复数数据 值乘以包括{0,+/-1}+{0,+/-i}的数集中的值。所述矢量加载单元可以被配 置来使得每个时钟周期取出复矢量指令,以供所述复数运算逻辑单元执 行流水线中的任意数据路径使用。

在一个具体实施方式中,每个复数短乘加器可以被配置来通过执行 二的补码运算(two’s complement)将复数数据值乘以包括{0,+/-1}+{0,+/-i} 的数集中的值而无需乘法器。

在另一具体实施方式中,所述矢量加载单元可以包括配置来存储从 在先时钟周期过程中执行的取操作得到的数据的存储器。所述数据可以 被所述复数运算逻辑单元执行流水线中的任意数据在后续时钟周期过程 中路径使用。

还在另一具体实施方式中,所述复数计算单元可以执行单指令多数 据(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。ADC 140被耦合到可编程基带处理器(PBBP)145A, 可编程基带处理器(PBBP)145A又被耦合到(多个)应用处理器150。 发射子系统120包括耦合到PBBP 145B的(多个)应用处理器160,PBBP 145B耦合到数模转换器(DAC)170。DAC 170也耦合到部分RF前端 130。注意到,PBBP 145A和145B可以由一个可编程处理器实现,在某 些实施例中,它们可以被制造在一个集成电路上。也要注意到,在某些 实施例中,ADC 140和DAC 170可以由PBBP 145A的一部分实现。进一 步注意,在其他实施例中,通信设备100可以在一个集成电路上实现。

PBBP145在发射子系统120和接收子系统110中执行许多功能。在 发射子系统120内,PBBP 145B可以将数据从应用源转变为适于无线电 信道的格式。例如,发射子系统120可以执行诸如信道编码、数字调制 和符号整形的功能。信道编码指使用不同的方法用于误码校正(例如, 卷积编码)和误码检测(例如,利用循环冗余码(CRC))。数字调制是 指将比特流映射到复采样流的处理。数字调制中的第一(有时是唯一的) 步骤是将各组比特映射到特定的信号星座图上,如二进制相移键控 (BPSK)、四相移相键控(QPSK)或正交调幅(QAM)。将各组比特映 射到无线电信号的振幅和相位有各种方法。在某些情况下,可以应用第二 步骤,域转换。在正交频分多路复用(OFDM)系统(即,在大量相邻频 率上同时发送信息的调制方法)中,该步骤可以使用逆快速傅里叶变换 (IFFT)。在诸如码分多址(CDMA)的扩频系统中,例如,(通过每个活 动用户分配单个“码”使得多个用户共享射频(RF)谱的“扩频”方法), 每个符号与包括{0,+/-1}+{0,+/-i}的扩频序列相乘。最后的步骤是符号 整形,该符号整形使用数字带通滤波器将方波转变为限带信号。由于信道 编码和映射功能典型地在比特级上操作(不在字级上),它们通常不适合 于在可编程处理器中实施。但是,如下面将更详细描述,在PBBP 145的 各种实施例中,可以利用一个或多个专用硬件加速器来实现这些功能等。

PBBP145可以执行如同步、信道均衡、解调以及前向纠错的这种功 能。例如,接收子系统110可以从失真模拟基带信号恢复符号并将它们 转换为具有可接受的误码率(BER)的比特流,用于在应用处理器150 中运行的应用程序。

同步可以分为几个步骤。第一步骤可以包括检测输入信号或帧,并 且有时被称为“能量检测”。与此相关,也可以进行诸如天线选择和增益 控制的操作。下一步是符号同步,旨在找出输入符号的精确定时。所有 前述操作典型地基于复自相差或复互相关。

在很多情况下,可能需要接收子系统110对无线电信道中的缺陷进 行某种补偿。该补偿称为信道均衡。在OFDM系统中,信道均衡可以涉 及在执行FFT之后每个子载波的简单缩放和旋转。在CDMA系统中,“耙 式(rake)”接收机常常用来将以不同路径延迟来自多个信号路径的输入 信号合并。在某些系统中,可以使用最小均方(LMS)自适滤波器。类 似于同步,信道估计和均匀化中包含的大多数操作可以采用基于卷积的 算法。这些算法通常不足以类似到能够共享相同的固定硬件。但是它们 可以在诸如PBBP 145的可编程DSP处理器上有效地实现。

解调可以看成是调制的相反操作。解调典型地涉及在OFDM系统中 执行FFT以及在DSSS/CDMA系统中执行扩频序列或“解扩”的相关分 析。解调的最后步骤可以是根据信号星座图将复符号转变为比特。类似 于信道编码,去交织和信道解码不适合于固件实现方式。然而,如下面 更详细地描述,可以用于卷积码的Viterbi或Turbo解码,是可以由一个 或多个硬件加速器实现的要求非常高的功能。

可编程基带处理器体系结构

图2图示了图1的可编程基带处理器的一个实施例的框图。PBBP 145 可以通过提供动态可重构性以多个运行模式(即,前导码接收、有效载 荷接收和传输)和不同的数据率支持不同的无线电标准。为了实现期望 的可重构性,PBBP 145的各个实施例可以包括通过控制处理器核心之间 的互连来管理DSP流程的中央处理器核心、多个存储器单元以及使用内 部网络的各种硬件加速器。

参考图2,PBBP 145包括处理器核心146以及复数计算单元290。 PBBP 145还包括标以0至n的多个数据存储器单元,其中n可以是任意 数目。PBBP 145还包括标以0至m的多个硬件加速器,其中m可以是 任意数目。此外,PBBP 145包括耦合于处理器核心146和复数计算单元 290、以及每个数据存储器和加速器之间的网络互连250。此外,PBBP 145 包括分别标有220和215的整数存储器单元和系数存储器单元,它们都 通过网络互连250耦合到处理器核心146和复数计算单元290。最后, PBBP 145包括介质访问层(MAC)接口单元225,其被耦合于网络互连 250和诸如应用处理器150和160的主机(Host)/MAC处理器之间。

在所示的实施例中,处理器核心146包括整数执行单元260,其被 耦合到控制寄存器CR265和网络互连250。整数执行单元260包括ALU 261、乘加器单元262和一组寄存器外存储器(RF)263。在一个实施例 中,整数执行单元260可以用作例如被配置来执行16位整数指令的精减 指令集控制器(RISC)。注意到,在其他实施例中,整数执行单元260可 以被配置来执行不同大小的整数指令,例如8位或32位指令。

在各个实施例中,复数计算单元290可以包括多个集群式单指令多 数据(SIMD)执行流水线。由此,在图2所示的实施例中,复数计算单 元290包括SIMD簇流水线295A和SIMD簇流水线295B。SIMD簇流 水线295A包括复乘加器(CMAC)单元270和耦合到CMAC 270的矢量 控制器275A。此外,SIMD簇流水线295A包括都耦合到CMAC 270的 矢量加载单元(VLU)284A和矢量存储单元(VSU)283A。SIMD簇流 水线295B包括耦合到矢量控制器275B的复数运算逻辑单元(CALU)280。 SIMD簇流水线295B还包括都耦合到CALU 280VSU 283D和VLU 284B。

在所示的实施例中,CALU 280被显示为四路复ALU,该四路复合 ALU可以包括四个独立的数据路径,每个数据路径具有复数短乘加器 (CSMAC)(图4所示)。如下面更详细地描述,CALU 280可以执行矢 量指令。在一个实施例中,CALU 280尤其适于执行复矢量指令。此外, CALU 280的每个独立的数据路径可以同时执行复矢量指令。

CMAC 270可以被优化以进行复矢量运算。也就是,在一个实施例 中,CMAC 270可以被配置为将所有数据转换为复数数据。此外,CMAC 270可以包括可以同时或分别运行的多个数据路径。在一个实施例中, CMAC 270可以包括四个复数数据路径,该数据路径包括乘法器、加法 器和累加寄存器(在图2中都没有示出)。因此,CMAC 270可以被称为 四路CMAC数据路径。除乘法和加法之外,CMAC 270也可以执行舍入 和缩放操作并支持饱和。在一个实施例中,CMAC 270操作可以被分为 多流水线步骤。此外,在一个时钟周期中,四个复数数据路径中的每一 个都可以计算复数乘法和累加。在N/4时钟周期中,CMAC 270(即,四 个数据路径一同)可以在N-元矢量上执行运算,以支持复矢量计算(例 如,复数卷积、共轭复数卷积和复矢量点积)。此外,CMAC 270也可以 支持累加器寄存器中存储的复值运算(例如,复数加法、减法、共轭等)。 例如,在一个时钟周期中,CMAC 270可以计算复数乘法如(AR+jAI)* (BR+jBI),以及在一个时钟周期中,计算复数累加,并支持复矢量计算 (例如,复数卷积、共轭复数卷积和复矢量点积)。

在一个实施例中,如上所述,PBBP 145可以包括多个集群式SIMD 执行流水线。更具体地说,上面描述的数据路径可以被一起分组为SIMD 簇,其中每个簇可以执行不同的任务,而每个时钟周期,簇内的每个数 据路径可以在多个数据上执行单个指令。具体地说,四路CALU 280和 四路CMAC 270可以用作独立的SIMD簇,例如其中CALU 280可以平 行执行诸如四个不同编码的四相关运算或解扩运算的四个并行运算,而 CMAC 270执行两个并行基-2 FFT蝶形运算或一个基-4 FFT蝶形运算。 注意到,尽管CALU 280和CMAC 270被显示为四路单元,但是可以认 为,在其他实施例中,它们每个都可以包括任何数量的单元。因此,在 这种实施例中,PBBP 145根据需要可以包括任何数量的SIMD簇。下面 结合图5的说明更详细地描述用于集群式SIMD操作的控制路径。

指令集体系结构

在一个实施例中,用于处理器核心146的指令集体系结构可以包括 三类复合指令。第一类指令是RISC指令,其对16位整数运算数进行运 算。RISC-指令类包括大多数面向控制的指令以及可以在处理器核心146 的整数执行单元260内执行。下一类指令是DSP指令,其对具有实部和 虚部的复数值数据进行运算。DSP指令可以在一个或多个SIMD簇上执 行。第三类指令是矢量指令。矢量指令可以认为是DSP指令的延伸,因 为它们对大数据集进行运算并可以利用高级的寻址模式和矢量支持。下 面在表1中示出介绍矢量指令的示例性列表。极少例外并注意,该矢量 指令对复数数据类型进行运算。

表1复矢量指令30的示例性列表

记忆码 运算 ------- CMAC矢量指令 MUL 以元素为单位的(Element-wise)矢量乘法或将矢量乘以 标量 ACC 对矢量元素求和 NACC 对矢量元素求和的负值 VADD 矢量加法 VSUB 矢量减法 FFT 一层基-2 FFT蝶形运算 FFT2 两个并行的基-2 FFT蝶形运算 FFTL 最后层基-4 FFT蝶形运算,用于FFT的最后一层,以实 现频域滤波 FFT2L 两个并行基数-2最后层FFT蝶形运算 R4T 通用基数-4 FFT蝶形运算(DCT,FFT,NTT) ADDSUB2 两个并行的“加法和减法” VMULC 恒量和矢量的以元素为单位的乘法 MAC 乘法累加(标量积) NMAC 负乘法累加 WBF 韦氏(Walsh)变换蝶形运算 SQRABS 以元素为单位的复方绝对值 SQRABSACC 平方绝对值(矢量能量)的总和 SQRABSMAX 求出最大平方绝对值及其指数 -------- 矢量移动指令 VMOVE 矢量移动 DUP 将标量值复制到执行单元中的所有路线(lane) ----------- 矢量ALU指令 SMUL 以元素为单位的短乘法 SMUL4 四个并行以元素为单位的短乘法 SMAC 短乘法和累加(解扩) SMAC4 四并行短乘法和累加(解扩) OVSF 具有OVSF码的N-并行SMAC(CDMA中的多码解扩) VADDC 以元素为单位将恒量加到矢量 VSUBC 以元素为单位从矢量减去恒量

如下面结合图5的描述更详细地描述,指令格式可以根据指令的类 别包括各种字段。例如,在一个实施例中,RISC指令可以包括单元字段、 操作码字段和变元字段,并且矢量指令可以附加地包括矢量大小字段。

许多基带接收算法可以分解成在多个任务之间几乎不具有反向依赖 性的任务链。该属性不仅允许在SIMD执行单元上并行执行不同的任务, 它也可以利用上述指令集体系开发。由于矢量运算典型地对大矢量进行 运算,每个时钟周期可以发出一个指令,由此减小控制路径的复杂性, 此外,由于矢量SIMD指令在长矢量上运行,在矢量运算过程中可以执 行许多RISC指令。因而,在一个实施例中,处理器核心146可以是每个 时钟周期发出单指令的机器(SIMT),并且每个SIMD簇和整数执行单 元可以以流水线方式在每个时钟周期执行一指令。因此,PBBP 145可以 被认为并行运行两个线程。第一线程包括程序流和使用整数执行单元260 的混杂处理。第二线程包括在SIMD簇上执行的复矢量指令。图3图示 了图2的可编程基带处理器的一个实施例的指令执行流水线。共同地参 考图2和图3,图3的左列表示时间(在执行时钟周期中)。剩余列表示 复数SIMD簇(例如,CMAC 270和CALU 280的一个数据路径)和整 数执行单元260的执行流水线以及其指令的发出。更具体地说,在第一 时钟周期中,复矢量指令(例如,CVL.256)被发出到CMAC 270。如图 所示,矢量指令可以用很多周期完成。在下一个时钟周期中,发出矢量 指令到CALU 280。在下一个时钟周期中,发出整数指令到整数执行单元 260。在下几个周期中,在矢量指令被执行的同时,可以发出任何数量的 整数指令到整数执行单元260。注意到,尽管未示出,但是剩余的SIMD 簇也可以以类似方式同时执行指令。

注意到,在一个实施例中,为了提供控制流同步和控制数据流,可 以使用“空闲”指令来停止控制流,直到完成给定的矢量运算。例如, 通过相应的SIMD执行单元执行某一个矢量指令,可以允许通过整数执 行单元260执行“空闲”指令。“空闲”指令可以暂停整数执行单元260, 直到整数执行单元260从相应的SIMD执行单元接收诸如标记的指示。

硬件加速器

如上所述的,为了提供支持各种无线电标准的多模式,可以通过与 可编程核心结合使用的专用硬件加速器来提供许多基带功能。例如,在 一个实施例中,可以使用图2的加速器0至m来实现一种或更多以下功 能:抽取电路/滤波器、用于CDMA和DSSS调制方案的RAKE功能(例 如,四“指”RAKE)、用于OFDM调制方案和IEEE 802.11b的基-4 FFT/ 改进的韦氏变换、解映射器(demapper)、卷积/Turbo编码器-维特比 (Viterbi)/Turbo解码器、可配置块交织器、可配置加扰器以及CRC加 速器。注意到,在其他实施例中,可以使用加速器0至m实现其他数目 和类型的功能。

在一个实施例中,抽取电路/滤波器加速器可以包括可配置的滤波 器,例如可以用于诸如IEEE 802.11a及其他标准的有限脉冲响应(FIR) 滤波器。耙式加速器可以包括用于延迟路径存储的本地复数存储器、解 扩码发生器和可以执行多路径搜索和信道估计功能的匹配滤波器(都没 有示出)。基-4 FFT/改进的韦氏变换(FFT/MWT)加速器可以包括基-4 蝶形(未示出)和灵活的地址发生器(未示出)。在一个实施例中, FFT/MWT加速器可以在54时钟周期中执行64-点FFT,以及在18时钟 周期中执行支持IEEE 802.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可以类似于交叉开关来工作,其 中可以从一个输入(写-)端口至一个输出(读-)端口建立连接,以及在 M×M结构中,任意输入端口可以被连接到任意输出端口。尽管在某些实 施例中,某些存储器和某些计算单元之间的连接可能不是必需的。因而, 网络互连250可以被优化,以允许某些特定的配置,因此简化网络互连 250。有了诸如网络互连250的互连可以消除判优器和选址逻辑的需要, 因此减小网络和加速器接口的复杂性,同时仍然允许许多并发通信。注 意到,在一个实施例中,网络互连250可以使用多路复用器或组合逻辑 结构如与-或(And-Or)结构来实现。但是,可以想到,在其他实施例中, 网络互连250可以根据需要使用任意类型的物理结构来实现。

在一个实施例中,网络互连250可以以两个子网络实现。第一子网 络可以用于基于抽样的传送和第二子网络可以是用于基于位的传送的串 行网络。两种网络的划分可以提高网络的吞吐量,由于基于位的传送可 能另外需要与网络的数据宽度不相待的大数据块的冗长成帧(framing) 和解帧(de-framing)。在这种实施例中,每个子网络可以被实现为由处 理器核心146配置的独立交叉开关。网络互连250也可以被配置来允许 具有相关功能的加速器直接互相连接成链,并与数据存储器连接。在一 个实施例中,网络互连250可以使得数据在加速器单元之间无缝地流动, 而不用处理器核心146介入,由此使得仅在网络连接的创建和损坏过程 中需要在网络中牵涉到处理器核心146。

如上所述,将所有单元(例如,存储器,加速器等)连接到所有其 他单元可以不是必需的,并且网络互连250可以被优化,以仅允许某些 配置。在那些实施例中,网络互连250可以被称为“部分网络”。为了在 这部分网络之间传送数据,一个或多个数据存储器单元内的几个存储块 (例如,DM0)可以被分配给双方的子网络。这些存储块可以被用作任 务之间的乒乓缓冲器。通过在计算元件之间“交换”存储块可以避免昂 贵的存储器移动。该策略可以提供有效的和可预测的数据流,无需昂贵 的存储器移动操作。

图4图示了图2的可编程基带处理器的实施例的另一方面。注意到, 与图2中的元件对应的元件为清楚简单其见以相同的数字标记。在图4 的实施例中,处理器核心146包括被耦合到整数10执行单元260的程序 控制单元310。如上所述,整数执行单元260包括ALU 261、独立的乘法 器累加单元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。

在所示的实施例中,CALU 280包括四个数据路径。类似地,CMAC 270也包括四个数据路径,其包括标有CMAC 276A至276D的四个CMAC 单元。下面结合图7的说明进一步描述CMAC数据路径的实施例。

由于连同地址和编码发生器一起,CALU 280可以是用于诸如耙指式 处理的功能的主要部件,通过用累加器实现4-路CALU,可以同时执行 四个不同编码的四个并行相关运算或解扩。通过增加仅仅能乘以{0, +/-1}+{0,+/-i}的简单或“短”复数乘法器到累加器单元,就能实现这些 运算。因此,在一个实施例中,CALU 280包括标有285A至285D的四 个不同的CSMAC数据路径。在图6中示出了示例性CSMAC数据路径 (例如,CSMAC 285A)。注意到,尽管在CALU 280和CMAC 270内示 出了四个数据路径,但是可以想到,在其他实施例中可以使用任意数目 的数据路径。

在一个实施例中,可以从指令字、解扰编码发生器或从OVSF编码 发生器的任何一个控制CSMAC 285。所有子单元可以由矢量控制器275A 和275B控制,矢量控制器275A和275B控制可以被配置来管理加载和 存储顺序、编码生成和硬件回路计数。

为了缓和存储器接口,可以采用矢量加载单元284和矢量存储单元 283。由此,在所示实施例中,VLU 284包括存储器281,以缓和存储器 接口和减小网络250上取出存储器数据的数目。例如,如果从存储器读 取四个连续的数据项,那么VLU 284在某些情况下仅执行单个读取操作 就可以减小存储器取出的数目达3/4。

由于CMAC执行单元291包括多个CMAC单元,因此可以执行几 个并行CMAC操作。因而,每个CMAC单元对于每个操作可以使用一 个系数和一个输入数据项。因此,用于这类任务的存储器带宽可以是大 的。但是,指令集可以通过在本地存储大量先前数据项来利用矢量加载 单元284内的存储器281。通过重新排序该数据存取图形,可以减小存储 器访问率。

在一个实施例中,VLU 284可以用作存储器(例如,DM0-n)、网络 互连250以及执行单元(例如,与CMAC执行单元相关联的VLU 284A 和与CALU执行单元相关联的VLU 284B)之间的接口。在一个实施例 中,VLU 284可以使用两种不同的模式加载数据。在第一模式中,可以 从存储器块加载多个数据项。在另一种模式中,数据可以先加载一个数 据项,然后被分配到给定簇中的SIMD数据路径。当通过SIMD簇处理 连续数据时,后一模式可以来减小存储器访问的数目。

图5图示了诸如图2和图4的PBBP 145的集群式SIMD处理器的示 例性控制路径的视图。PBBP 145包括处理器核心146,处理器核心146 包括由RISC数据路径510表示的RISC型执行单元,并以及由SIMD数 据路径#0 525和SIMD数据路径#n 535表示的数字SIMD数据路径。为 了在多数据路径上提供控制,控制路径硬件500包括耦合到程序计数器 502的程序流控制501,程序计数器502又被耦合到程序存储器(PM) 503。PM 503被耦合到多路复用器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可以删除或去除单元字段。

在一个实施例中,在每个时钟周期中,可以从PM 503取出一个指令。 该指令字中的单元字段可以从指令字提取,并用来控制向哪个控制单元 分配指令。例如,如果单元字段是“000”,那么该指令可以被分配给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运算的VLU 284,也可以 管理单只(odd)矢量长度。

如上所述,在诸如CDMA系统中的许多基带处理算法中,例如从天 线接收的复数数据序列用“(解)扩编码”相乘。因此,可能需要以元素 为单位的将复矢量乘以(和累加)解扩编码,该解扩编码可以是仅仅包 含来自以下集合的数字的复矢量:{0,+/-1}+{0,+/-i}。然后累加该复数 乘法的结果。在某些常规可编程处理器中,该功能可以通过执行几个算 术指令或通过一个完全实现的CMAC单元来执行。但是,使用可编程处 理器内的N路(Nway)CSMAC单元(例如,CSMAC 285A-D),可以减小 该硬件成本。

图6是图4所示的复ALU的四路CSMAC单元的示例性数据路径的 视图。注意到,图6的CSMAC 285可以说明图4的CSMAC 285A至285D 的任意一个。CSMAC 285包括反相器601A和601B、标有603A至603D 的四个多路复用器。此外,CSMAC 285包括标有602和604A,604B, 606A和606B的几个加法器。此外,CSMAC 285包括两个保护单元606A 和606B,两个累加寄存器607A和607B,以及两个舍入/饱和单元608A 和608B。

在一个实施例中,CSMAC 285经由VLU 284接收矢量数据。该实 部与虚部沿着独立的路径,如图所示。根据将乘以输入矢量数据的解扩 编码,多路复用器603A至603D可以允许相应的实部与虚部和它们的补 码或反码传给加法器604A和604B(它们在此相加),有时利用载体。由此, 根据该运算,CSMAC 285可以利用二的补码(two’s complement)有效地将 各自的实部与虚部乘以{0,+/-1}+{0,+/-i}。保护单元605A和605B可 以被配置限制加法器604A和604B的结果。例如,当诸如溢流的条件存 在时,该结果可以根据需要限制为提供最大或最小(即,饱和)值。与 累加寄存器607A和607B结合的加法器606A和606B可以累加各个结果, 各个结果可以被传给舍入/饱和单元,并继续传给VSU 283B以发送到数 据存储器。

因此,从上面的描述,不使用常规乘法器。代之以,执行二的补码 加法,由此节省管芯面积和功率。因此,诸如CSMAC 285A-D的四路 CSMAC可以由可以在可编程环境中执行四个并行CSMAC操作的面积高 效的四路CSMAC单元实现。该增强的四路CSMAC单元执行矢量乘法 的速度比单个单元快四倍,或者能够用四个不同系数矢量乘以相同的矢 量。后一操作可以用来在CDMA系统中实现“多码解扩”。如上所述, VLU 284可以根据需要复制CSMAC 285的所有数据-路径当中的一个数 据项或系数项。当用不同的内部产生的系数(例如,使用OVSF编码) 乘以相同的数据项时,该复制模式尤其有用。

图7是图4所示的复MAC单元数据路径的一个实施例的视图。注 意到,图7的CMAC 276可以说明图4的CMAC 276A至276D的任意一 个。CMAC 276包括标有701A至701D的四个多位乘法器,多位乘法器 701A至701D被耦合到四个各自的结果寄存器702A至702D。此外, CMAC 276包括标有703,704,709A,709B,710A和710B的六个全加 法器。此外,CMAC 276包括多路复用器705,706,707和708,以及累 加寄存器ACRR 711A和ACIR 711B。

在所示的实施例中,乘法器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和710B,以及累加寄存器 ACRR 711A和ACIR 711B。ACRR 711A是用于实数据的累加寄存器, ACIR 711B是用于虚数据的累加寄存器。

在一个实施例中,CMAC 276可以每个时钟周期执行一次复值相乘- 累加运算(例如,基-2 FFT蝶形运算)。特别对诸如相关运算、FFT、或 绝对最大值搜索之类的运算进行优化,例如可以对复矢量(例如,复值 同相(I)和求积分(Q)对)执行这些运算。如上所述,处理器核心146 具有特殊类别的多周期矢量定向指令,其能够与CALU和RISC/整数指 令并行执行。在一个实施例中,复矢量指令可以是16位长,其可以有效 利用程序存储器。然而,可以预期在其他实施例中该指令长度可以是任 意位数。

在一个实施例中,当执行复数乘法或卷积时,当加法器703执行减 法和加法器704执行加法时,可以执行普通复数计算。当加法器703执 行加法和加法器704执行减法时,可以执行复数共轭计算。此外,当对 点积乘法和矢量旋转执行普通复数或复数共轭乘法时,ACRR 711A和 ACIR 711B的迭代循环可以被中断,并且在将结果向矢量存储器以自然 长度发送之前,加法器710A和加法器710B可以用于执行舍入运算。同 样,当执行用于复数滤波器的复数卷积、复数自相关运算以及复数互相 关运算时,加法器710A和加法器710B分别可以提供实部和虚部的加或 减累加。

在一个实施例中,当执行FFT或IFFT计算时,CMAC 276数据路 径可以给出(流水线的)每个时钟周期一个蝶形计算,(即,每个时钟周 期两点FFT计算)。为了执行FFT,加法器709A和加法器709B执行减 法,并加法器710A和加法器710B的ACRR及ACIR迭代循环被中断。 此外,加法器710A和加法器710B执行加法运算。

在一个实施例中,为了执行与上面描述的基带同步和数据接收相关 的各种操作,可以在CMAC 276上执行以下指令:

CMUL.n:对结果进行舍入的普通复数乘法,并执行n步的非重叠循 环。操作码可以从OPA和OPB端口提供。结果以自然长度复数数据格式 提供在端口C上。

CCMUL.n:对结果进行舍入的复数共轭乘法,并执行n步的非重叠 循环。操作码可以从OPA和OPB端口提供。结果以具有自然长度复数数 据格式提供在端口C上。

CMAC.n:普通复数乘法和累加,非重叠循环地执行n步。操作码可 以从OPA和OPB端口提供。结果的实部可以被存储在ACRR 711A中, 以及虚部可以被存储在ACIR 711B中。

CCMAC.n:复数共轭乘法和累加,非重叠循环执行n步。操作码可 以从OPA和OPB端口提供。结果的实部可以存储在ACRR 711A中,以 及虚部可以存储在ACIR 711B中。

FFT.m.n:大小为n的FFT变换的第m步:基于普通按序寻址,复 数数据可以从端口A和端口B取出,并且复数系数可以从端口C取出; 复数数据结果可以利用位反射寻址发送到端口D。

注意到,上面描述的PBBP 145的体系结构和微体系结构的灵活特性 可以对多种无线电标准和这些标准内多种操作模式提供支持。

尽管已经相当详细地描述了以上实施例,但是一旦完全理解上述公 开,大量变形和改进对所属领域的技术人员来说是显而易见的。这里意 图是要将下列权利要求书解释为包含所有这种变形和改进。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号