CN101238455A - 包括配置为执行复矢量指令的集群式simd微体系结构的可编程数字信号处理器 - Google Patents

包括配置为执行复矢量指令的集群式simd微体系结构的可编程数字信号处理器 Download PDF

Info

Publication number
CN101238455A
CN101238455A CNA2006800292573A CN200680029257A CN101238455A CN 101238455 A CN101238455 A CN 101238455A CN A2006800292573 A CNA2006800292573 A CN A2006800292573A CN 200680029257 A CN200680029257 A CN 200680029257A CN 101238455 A CN101238455 A CN 101238455A
Authority
CN
China
Prior art keywords
vector
processor
instruction
execution pipeline
complex
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2006800292573A
Other languages
English (en)
Inventor
安德斯·尼尔松
埃里克·特尔
达克·刘
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Coresonic AB
Original Assignee
Coresonic AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Coresonic AB filed Critical Coresonic AB
Publication of CN101238455A publication Critical patent/CN101238455A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • G06F15/8092Array of vector units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • G06F9/30014Arithmetic instructions with variable precision
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • G06F9/3891Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

本发明公开了一种包括集群式SIMD微体系结构的可编程数字信号处理器,其包括多个加速器单元、处理器核心和复数计算单元。每个加速器单元可以被配置来执行一个或多个专用的功能。所述处理器核心包括可以被配置来执行整数指令的整数执行单元。所述复数计算单元可以被配置来执行复矢量指令。所述复数计算单元可以包括第一和第二集群式执行流水线。所述第一集群式执行流水线可以包括被配置来执行第一复矢量指令的一个或多个复数运算逻辑单元数据路径。所述第二集群式执行流水线可以包括被配置来执行第二复矢量指令的一个或多个复数乘加器数据路径。

Description

包括配置为执行复矢量指令的集群式SIMD微体系结构的可编程数字信号处理器
技术领域
本发明涉及数字信号处理器,更具体地说,涉及可编程数字信号处理器微体系结构。
背景技术
在很短的时期内,无线设备特别移动电话的使用显著地增加。无线设备的这种世界范围的增长导致大量新兴无线电标准和无线产品的汇聚。反过来这也引起人们对软件定义无线电(SDR,Software DefinedRadio)的不断增加的兴趣。
如SDR论坛所述,SDR是能够实现用于无线网络和用户终端的可重构系统结构的硬件和软件技术的汇集。对于建立可以利用软件升级来增强的多模、多频带、多功能无线设备的问题,SDR提供有效的和相对廉价的解决方案。因而,SDR可以被认为可在无线工业内的宽范围领域应用的使能技术。
许多无线通信设备使用包括一个或多个数字信号处理器(DSP)的无线电收发机。无线电中使用的一类DSP是基带处理器(BBP),基带处理器可以处理与接收无线电信号的处理和准备发射信号相关的许多信号处理功能。例如,BBP可以提供调制和解调,以及信道编码和同步功能。
许多常规BBP由仅支持一种无线电标准的专用集成电路(ASIC)器件实现。在很多情况下,ASIC BBP可以提供优异的性能。但是,ASIC解决方案可以被限于在设计片上(on-chip)硬件的无线电标准内操作。
为了提供SDR解决方案,在无线电基带处理器中可能需要增加灵活性,以满足入市时间、成本和产品寿命的要求。为了处理诸如无线局域网(LAN)、第三/第四代移动电话技术以及数字视频广播这些需求应用的要求,在基带处理器中可能需要大程度的并行性。
为此,已经提出了典型地基于高度复杂的、很长指令字(VLIW)和/或多处理器核心机器的各种可编程BBP(PBBP)解决方案。当与ASIC解决方案相比时,这些常规PBBP解决方案可能具有诸如增加管芯面积和可能限制性能的缺点。因此,最好是有一种可以支持大量不同的调制技术、带宽和机动性要求以及也可以具有可接受的面积和功耗的可编程DSP结构。
发明内容
本发明公开了包括集群式单指令多数据(SIMD)微体系结构的可编程数字信号处理器的各个实施例。在一种实施方式中,数字信号处理器包括多个加速器单元、处理器核心和复数计算单元。每个所述加速器单元可以被配置为执行一个或多个专用功能。所述处理器核心包括可以被配置为执行整数指令的整数执行单元。所述复数计算单元可以被配置为执行复矢量指令。所述复数计算单元可以包括第一和第二集群式执行流水线。所述第一集群式执行流水线可以包括被配置为执行第一复矢量指令的一个或多个复数运算逻辑单元数据路径。所述第二集群式执行流水线可以包括被配置为执行第二复矢量指令的一个或多个复数乘加器数据路径。
在一种具体实施方式中,所述集群式执行流水线内的每个数据路径可以被配置为自然地把所有数据解释为复数值数据。
在另一具体实施方式中,给定的集群式执行流水线内的每个数据路径可以在每时钟周期中执行作为矢量指令的一部分的单个复数运算。此外,该整数执行单元可以与所述第一集群式执行流水线和所述第二集群式执行流水线内的任意数据路径执行任意复矢量指令同时地每时钟周期中执行单个指令。
在又一个具体实施方式中,所述复数计算单元可以执行单指令多数据(single instruction multiple data,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,其被耦合到控制寄存器CR 265和网络互连250。整数执行单元260包括ALU261、乘加器单元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可以包括四个独立的数据路径,每个数据路径具有复数短乘加器(complex short multiplier accumulator,CSMAC)(图4所示)。如下面更详细地描述,CALU 280可以执行矢量指令。在一个实施例中,CALU 280尤其适于执行复矢量指令。此外,CALU 280的每个独立的数据路径可以同时执行复矢量指令。
CMAC 270可以被优化以进行复数矢量运算。也就是,在一个实施例中,CMAC 270可以被配置为将所有数据转换为复数数据。此外,CMAC270可以包括可以同时或分别运行的多个数据路径。在一个实施例中,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指令可以在一个或多个SlMD簇上执行。第三类指令是矢量指令。矢量指令可以认为是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 以元素为单位的复方绝对值
SORABSACC 平方绝对值(矢量能量)的总和
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也可以被配置为允许具有相关20功能的加速器直接互相连接成链,并与数据存储器连接。在一个实施例中,网络互连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包括四个数据路径。类似地,CMAC270也包括四个数据路径,其包括标有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系统中实现“多码解扩”。如上所述,VLU284可以根据需要复制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的体系结构和微体系结构的灵活特性可以对多种无线电标准和这些标准内多种操作模式提供支持。
尽管已经相当详细地描述了以上实施例,但是一旦完全理解上述公开,大量变形和改进对所属领域的技术人员来说是显而易见的。这里意图是要将下列权利要求书解释为包含所有这种变形和改进。

Claims (36)

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所述的无线通信设备,其中每个复数运算逻辑单元数据路径还包括复数短乘加器数据路径,该复数短乘加器数据路径被配置为将复数数据值乘以包括{0,+/-1}+{0,+/-i}的数集中的值。
26.如权利要求19所述的无线通信设备,其中所述第一集群式执行流水线和所述第二集群式执行流水线中的每一个还包括各自的矢量加载单元,该矢量加载单元被配置为每个时钟周期取出数据项以供各集群式执行流水线中的任意数据路径使用。
27.如权利要求26所述的无线通信设备,其中每个矢量加载单元包括存储器,该存储器被配置为在本地存储来自先前时钟周期中执行的取出操作的数据,以供后续时钟周期中任意集群式执行流水线中的任意数据路径使用。
28.如权利要求27所述的无线通信设备,其中所述第一集群式执行流水线和所述第二集群式执行流水线中的每一个还包括各自的矢量控制器单元,该矢量控制器单元被耦合到所述各自的矢量加载单元、并被配置为通过所述第一集群式执行流水线和所述第二集群式执行流水线中的任意数据路径管理矢量运算的加载和存储顺序。
29.如权利要求19所述的无线通信设备,其中所述一个或多个专用功能的各给定功能与对应于不同无线通信标准的基带信号处理相关。
30.如权利要求19所述的无线通信设备,所述无线通信设备还包括多个存储器单元,其中每个存储器单元包括地址发生单元,该地址发生单元被配置为响应于接收到读或写事务而产生对应于本地存储位置的地址。
31.如权利要求30所述的无线通信设备,其中所述多个存储器单元、所述多个加速器单元、所述处理器核心以及所述复数计算单元中的每一个都被制造在单个集成电路上。
32.如权利要求31所述的无线通信设备,所述无线通信设备还包括被配置为在所述多个存储器单元、所述多个加速器单元、所述处理器核心和所述复数计算单元之间提供连接的网络。
33.如权利要求32所述的无线通信设备,其中响应于特定整数指令的执行,所述网络被配置为将所述多个存储器单元中的给定存储器单元耦合到所述多个加速器单元中的一个或多个。
34.如权利要求32所述的无线通信设备,其中响应于特定整数指令的执行,所述网络被配置将所述多个存储器单元中的给定存储器单元耦合到所述复数计算单元。
35.如权利要求32所述的无线通信设备,其中响应于特定整数指令的执行,所述网络被配置为将所述多个加速器单元中的两个或更多个加速器单元耦合在一起形成链,并进一步将所述链中的第一加速器单元耦合到所述多个存储器单元中的一个给定存储器单元与所述复数计算单元的其中之一。
36.如权利要求19所述的无线通信设备,其中所述多个加速器单元中的至少一些加速器单元是与基带信号处理相关的专用功能的可配置硬件实现。
CNA2006800292573A 2005-08-11 2006-08-09 包括配置为执行复矢量指令的集群式simd微体系结构的可编程数字信号处理器 Pending CN101238455A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/201,842 2005-08-11
US11/201,842 US7299342B2 (en) 2005-05-24 2005-08-11 Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement

Publications (1)

Publication Number Publication Date
CN101238455A true CN101238455A (zh) 2008-08-06

Family

ID=37727577

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2006800292573A Pending CN101238455A (zh) 2005-08-11 2006-08-09 包括配置为执行复矢量指令的集群式simd微体系结构的可编程数字信号处理器

Country Status (6)

Country Link
US (1) US7299342B2 (zh)
EP (1) EP1913488A1 (zh)
JP (1) JP5080469B2 (zh)
KR (1) KR101394573B1 (zh)
CN (1) CN101238455A (zh)
WO (1) WO2007018468A1 (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375805A (zh) * 2011-10-31 2012-03-14 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN103543983A (zh) * 2012-07-11 2014-01-29 世意法(北京)半导体研发有限责任公司 用于提高平衡吞吐量数据路径架构上的fir操作性能的新颖数据访问方法
CN103543984A (zh) * 2012-07-11 2014-01-29 世意法(北京)半导体研发有限责任公司 用于特殊相关应用的修改型平衡吞吐量数据路径架构
CN103870309A (zh) * 2012-12-11 2014-06-18 辉达公司 用于集群多级寄存器堆的寄存器分配
CN104040493A (zh) * 2011-12-20 2014-09-10 联发科技瑞典有限公司 数字信号处理器和基带通信设备
CN104040488A (zh) * 2011-12-22 2014-09-10 英特尔公司 用于给出相应复数的复共轭的矢量指令
CN105844040A (zh) * 2016-03-31 2016-08-10 同济大学 一种支持多模式乘加器的数据运算方法
CN108268941A (zh) * 2017-01-04 2018-07-10 意法半导体股份有限公司 深度卷积网络异构架构
CN109284131A (zh) * 2013-05-24 2019-01-29 相干逻辑公司 具有可编程优化的存储器-网络处理器
CN110325963A (zh) * 2017-02-28 2019-10-11 微软技术许可有限责任公司 用于神经网络处理的针对可编程硬件节点的多功能单元
CN111680790A (zh) * 2017-04-11 2020-09-18 上海兆芯集成电路有限公司 神经网络单元
CN111971653A (zh) * 2018-03-27 2020-11-20 美国亚德诺半导体公司 分布式处理系统
CN112052042A (zh) * 2020-09-15 2020-12-08 厦门壹普智慧科技有限公司 一种数据流水线处理器系统

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7669042B2 (en) * 2005-02-17 2010-02-23 Samsung Electronics Co., Ltd. Pipeline controller for context-based operation reconfigurable instruction set processor
US7904695B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US20070198815A1 (en) * 2005-08-11 2007-08-23 Coresonic Ab Programmable digital signal processor having a clustered SIMD microarchitecture including a complex short multiplier and an independent vector load unit
US20070168646A1 (en) * 2006-01-17 2007-07-19 Jean-Francois Collard Data exchange between cooperating processors
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US20080046689A1 (en) * 2006-08-21 2008-02-21 Tien-Fu Chen Method and apparatus for cooperative multithreading
WO2008154963A1 (en) * 2007-06-18 2008-12-24 Interuniversitair Microelektronica Centrum (Imec) Programmable device for software defined radio terminal
JP2009075676A (ja) * 2007-09-18 2009-04-09 Nec Electronics Corp マイクロプロセッサ
US7996454B2 (en) * 2007-11-16 2011-08-09 Vns Portfolio Llc Method and apparatus for performing complex calculations in a multiprocessor array
EP2232378A1 (en) * 2007-12-10 2010-09-29 Sandbridge Technologies, Inc. Accelerating traceback on a signal processor
US8185721B2 (en) * 2008-03-04 2012-05-22 Qualcomm Incorporated Dual function adder for computing a hardware prefetch address and an arithmetic operation value
US20090323784A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Software-Defined Radio Platform Based Upon Graphics Processing Unit
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
US8520719B2 (en) * 2009-05-29 2013-08-27 Qualcomm Incorporated Multiple-mode correlator
WO2012052773A1 (en) * 2010-10-21 2012-04-26 Bluwireless Technology Limited Data processing systems
WO2012052774A2 (en) * 2010-10-21 2012-04-26 Bluwireless Technology Limited Data processing units
KR20120077164A (ko) 2010-12-30 2012-07-10 삼성전자주식회사 Simd 구조를 사용하는 복소수 연산을 위한 사용하는 장치 및 방법
SE535856C2 (sv) * 2011-10-18 2013-01-15 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
SE536462C2 (sv) * 2011-10-18 2013-11-26 Mediatek Sweden Ab Digital signalprocessor och basbandskommunikationsanordning
JP5884578B2 (ja) 2012-03-16 2016-03-15 富士通株式会社 アクセラレータ管理装置、アクセラレータ管理方法および入出力装置
US9939822B2 (en) 2013-02-11 2018-04-10 Graco Minnesota Inc. Remote monitoring for fluid applicator system
US10969805B2 (en) 2013-02-11 2021-04-06 Graco Minnesota Inc. Paint sprayer distributed control and output volume monitoring architectures
US9495154B2 (en) * 2013-03-13 2016-11-15 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods
US9275014B2 (en) * 2013-03-13 2016-03-01 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
JP6102528B2 (ja) * 2013-06-03 2017-03-29 富士通株式会社 信号処理装置及び信号処理方法
US9489197B2 (en) * 2013-07-09 2016-11-08 Texas Instruments Incorporated Highly efficient different precision complex multiply accumulate to enhance chip rate functionality in DSSS cellular systems
US20150143076A1 (en) * 2013-11-15 2015-05-21 Qualcomm Incorporated VECTOR PROCESSING ENGINES (VPEs) EMPLOYING DESPREADING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS AND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT DESPREADING OF SPREAD-SPECTRUM SEQUENCES, AND RELATED VECTOR PROCESSING INSTRUCTIONS, SYSTEMS, AND METHODS
US9684509B2 (en) 2013-11-15 2017-06-20 Qualcomm Incorporated Vector processing engines (VPEs) employing merging circuitry in data flow paths between execution units and vector data memory to provide in-flight merging of output vector data stored to vector data memory, and related vector processing instructions, systems, and methods
CN105892995B (zh) * 2016-03-28 2018-06-12 龙芯中科技术有限公司 查找负数的方法、装置及处理器
CN111651203B (zh) * 2016-04-26 2024-05-07 中科寒武纪科技股份有限公司 一种用于执行向量四则运算的装置和方法
GB2552154B (en) * 2016-07-08 2019-03-06 Advanced Risc Mach Ltd Vector register access
CN108933841A (zh) * 2017-05-27 2018-12-04 嘉兴鹏武电子科技有限公司 一种射频前端设备的控制方法及装置
WO2020046642A1 (en) 2018-08-31 2020-03-05 Flex Logix Technologies, Inc. Multiplier-accumulator circuit, logic tile architecture for multiply-accumulate and ic including logic tile array
US11194585B2 (en) 2019-03-25 2021-12-07 Flex Logix Technologies, Inc. Multiplier-accumulator circuitry having processing pipelines and methods of operating same
US11314504B2 (en) 2019-04-09 2022-04-26 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipelines and processing component, and methods of operating same
US11288076B2 (en) 2019-09-13 2022-03-29 Flex Logix Technologies, Inc. IC including logic tile, having reconfigurable MAC pipeline, and reconfigurable memory
US11455368B2 (en) 2019-10-02 2022-09-27 Flex Logix Technologies, Inc. MAC processing pipeline having conversion circuitry, and methods of operating same
US12015428B2 (en) 2019-11-05 2024-06-18 Flex Logix Technologies, Inc. MAC processing pipeline using filter weights having enhanced dynamic range, and methods of operating same
US11693625B2 (en) 2019-12-04 2023-07-04 Flex Logix Technologies, Inc. Logarithmic addition-accumulator circuitry, processing pipeline including same, and methods of operation
US11960856B1 (en) 2020-01-15 2024-04-16 Flex Logix Technologies, Inc. Multiplier-accumulator processing pipeline using filter weights having gaussian floating point data format
US11442881B2 (en) 2020-04-18 2022-09-13 Flex Logix Technologies, Inc. MAC processing pipelines, circuitry to control and configure same, and methods of operating same
US11604645B2 (en) 2020-07-22 2023-03-14 Flex Logix Technologies, Inc. MAC processing pipelines having programmable granularity, and methods of operating same
US20220207107A1 (en) * 2020-12-23 2022-06-30 Intel Corporation Apparatus and method for complex matrix multiplication
US20230004390A1 (en) * 2021-06-26 2023-01-05 Intel Corporation Apparatus and method for vector packed dual complex-by-complex and dual complex-by-complex conjugate multiplication

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4760525A (en) * 1986-06-10 1988-07-26 The United States Of America As Represented By The Secretary Of The Air Force Complex arithmetic vector processor for performing control function, scalar operation, and set-up of vector signal processing instruction
US5361367A (en) * 1991-06-10 1994-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Highly parallel reconfigurable computer architecture for robotic computation having plural processor cells each having right and left ensembles of plural processors
DE69228980T2 (de) * 1991-12-06 1999-12-02 Nat Semiconductor Corp Integriertes Datenverarbeitungssystem mit CPU-Kern und unabhängigem parallelen, digitalen Signalprozessormodul
US5805875A (en) * 1996-09-13 1998-09-08 International Computer Science Institute Vector processing system with multi-operation, run-time configurable pipelines
JPH10340128A (ja) 1997-06-10 1998-12-22 Hitachi Ltd データ処理装置及び移動体通信端末装置
JP2000284970A (ja) * 1999-03-29 2000-10-13 Matsushita Electric Ind Co Ltd プログラム変換装置及びプロセッサ
US6477555B1 (en) * 1999-07-07 2002-11-05 Lucent Technologies Inc. Method and apparatus for performing rapid convolution
US6557096B1 (en) 1999-10-25 2003-04-29 Intel Corporation Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types
US6667636B2 (en) * 2001-06-11 2003-12-23 Lsi Logic Corporation DSP integrated with programmable logic based accelerators
US20030005261A1 (en) 2001-06-29 2003-01-02 Gad Sheaffer Method and apparatus for attaching accelerator hardware containing internal state to a processing core
US20030212728A1 (en) 2002-05-10 2003-11-13 Amit Dagan Method and system to perform complex number multiplications and calculations
US7430652B2 (en) 2003-03-28 2008-09-30 Tarari, Inc. Devices for performing multiple independent hardware acceleration operations and methods for performing same
CN1777076A (zh) * 2004-11-16 2006-05-24 深圳安凯微电子技术有限公司 一种时分-同步码分多址接入的基带芯片

Cited By (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102375805A (zh) * 2011-10-31 2012-03-14 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN102375805B (zh) * 2011-10-31 2014-04-02 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN104040493A (zh) * 2011-12-20 2014-09-10 联发科技瑞典有限公司 数字信号处理器和基带通信设备
US9411583B2 (en) 2011-12-22 2016-08-09 Intel Corporation Vector instruction for presenting complex conjugates of respective complex numbers
CN107153524A (zh) * 2011-12-22 2017-09-12 英特尔公司 用于给出相应复数的复共轭的矢量指令
CN104040488B (zh) * 2011-12-22 2017-06-09 英特尔公司 用于给出相应复数的复共轭的矢量指令
CN104040488A (zh) * 2011-12-22 2014-09-10 英特尔公司 用于给出相应复数的复共轭的矢量指令
CN103543984B (zh) * 2012-07-11 2016-08-10 世意法(北京)半导体研发有限责任公司 用于特殊相关应用的修改型平衡吞吐量数据路径架构
US9424033B2 (en) 2012-07-11 2016-08-23 Stmicroelectronics (Beijing) R&D Company Ltd. Modified balanced throughput data-path architecture for special correlation applications
CN103543983B (zh) * 2012-07-11 2016-08-24 世意法(北京)半导体研发有限责任公司 用于提高平衡吞吐量数据路径架构上的fir操作性能的新颖数据访问方法
CN103543984A (zh) * 2012-07-11 2014-01-29 世意法(北京)半导体研发有限责任公司 用于特殊相关应用的修改型平衡吞吐量数据路径架构
CN103543983A (zh) * 2012-07-11 2014-01-29 世意法(北京)半导体研发有限责任公司 用于提高平衡吞吐量数据路径架构上的fir操作性能的新颖数据访问方法
CN103870309A (zh) * 2012-12-11 2014-06-18 辉达公司 用于集群多级寄存器堆的寄存器分配
CN109284131B (zh) * 2013-05-24 2023-05-30 相干逻辑公司 具有可编程优化的存储器-网络处理器
CN109284131A (zh) * 2013-05-24 2019-01-29 相干逻辑公司 具有可编程优化的存储器-网络处理器
US11900124B2 (en) 2013-05-24 2024-02-13 Coherent Logix, Incorporated Memory-network processor with programmable optimizations
CN105844040A (zh) * 2016-03-31 2016-08-10 同济大学 一种支持多模式乘加器的数据运算方法
CN105844040B (zh) * 2016-03-31 2019-01-25 同济大学 一种支持多模式乘加器的数据运算方法
CN108268941A (zh) * 2017-01-04 2018-07-10 意法半导体股份有限公司 深度卷积网络异构架构
CN110325963B (zh) * 2017-02-28 2023-05-23 微软技术许可有限责任公司 用于神经网络处理的针对可编程硬件节点的多功能单元
CN110352435A (zh) * 2017-02-28 2019-10-18 微软技术许可有限责任公司 利用链接指令的神经网络处理
US11663450B2 (en) 2017-02-28 2023-05-30 Microsoft Technology Licensing, Llc Neural network processing with chained instructions
CN110352435B (zh) * 2017-02-28 2023-10-27 微软技术许可有限责任公司 利用链接指令的神经网络处理
CN110325963A (zh) * 2017-02-28 2019-10-11 微软技术许可有限责任公司 用于神经网络处理的针对可编程硬件节点的多功能单元
CN111680790A (zh) * 2017-04-11 2020-09-18 上海兆芯集成电路有限公司 神经网络单元
CN111680790B (zh) * 2017-04-11 2023-04-07 上海兆芯集成电路有限公司 神经网络单元
CN111971653A (zh) * 2018-03-27 2020-11-20 美国亚德诺半导体公司 分布式处理系统
CN111971653B (zh) * 2018-03-27 2024-05-10 美国亚德诺半导体公司 分布式处理系统
CN112052042A (zh) * 2020-09-15 2020-12-08 厦门壹普智慧科技有限公司 一种数据流水线处理器系统
CN112052042B (zh) * 2020-09-15 2023-08-15 厦门壹普智慧科技有限公司 一种数据流水线处理器系统

Also Published As

Publication number Publication date
KR20080042837A (ko) 2008-05-15
EP1913488A1 (en) 2008-04-23
WO2007018468A8 (en) 2008-01-17
KR101394573B1 (ko) 2014-05-12
JP2009505215A (ja) 2009-02-05
US20060271764A1 (en) 2006-11-30
JP5080469B2 (ja) 2012-11-21
WO2007018468A1 (en) 2007-02-15
US7299342B2 (en) 2007-11-20

Similar Documents

Publication Publication Date Title
CN101238454B (zh) 包括复数短乘法器和独立的矢量加载单元的具有集群式simd微体系结构的可编程数字信号处理器
CN101238455A (zh) 包括配置为执行复矢量指令的集群式simd微体系结构的可编程数字信号处理器
CN101203846B (zh) 具有可编程网络的数字信号处理器
KR101781057B1 (ko) 실행 유닛들과 벡터 데이터 메모리 사이에 병합 회로를 갖는 벡터 프로세싱 엔진, 및 관련된 방법
KR101842061B1 (ko) 필터 벡터 프로세싱 연산들을 위해 탭핑-지연 라인을 이용하는 벡터 프로세싱 엔진, 및 관련된 벡터 프로세서 시스템들 및 방법들
KR101162649B1 (ko) 가변적 크기의 고속 직교 변환을 구현하기 위한 방법 및장치
EP3069232A1 (en) Vector processing engine employing format conversion circuitry in data flow paths between vector data memory and execution units, and related method
KR20160085335A (ko) 벡터 데이터 메모리와 실행 유닛들 사이의 데이터 흐름 경로들에서 재정렬 회로를 이용하는 벡터 프로세싱 엔진, 및 관련된 방법
WO2007115329A2 (en) Pipeline fft architecture and method
EP3069236A1 (en) Vector processing engine employing despreading circuitry in data flow paths between execution units and vector data memory, and related method
US8090928B2 (en) Methods and apparatus for processing scalar and vector instructions

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20080806