CN104969215A - 具有用于提供多模基-2x蝶形向量处理电路的可编程数据路径的向量处理引擎以及相关的向量处理器、系统和方法 - Google Patents
具有用于提供多模基-2x蝶形向量处理电路的可编程数据路径的向量处理引擎以及相关的向量处理器、系统和方法 Download PDFInfo
- Publication number
- CN104969215A CN104969215A CN201480007022.9A CN201480007022A CN104969215A CN 104969215 A CN104969215 A CN 104969215A CN 201480007022 A CN201480007022 A CN 201480007022A CN 104969215 A CN104969215 A CN 104969215A
- Authority
- CN
- China
- Prior art keywords
- vector
- base
- data path
- input
- base vector
- 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.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims abstract description 210
- 238000000034 method Methods 0.000 title claims abstract description 65
- 230000001186 cumulative effect Effects 0.000 claims description 152
- 239000003638 chemical reducing agent Substances 0.000 claims description 42
- 238000009825 accumulation Methods 0.000 claims description 39
- 230000000644 propagated effect Effects 0.000 claims description 3
- 230000008901 benefit Effects 0.000 abstract description 25
- 230000008569 process Effects 0.000 description 41
- 238000010586 diagram Methods 0.000 description 34
- 238000006073 displacement reaction Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 15
- 238000013461 design Methods 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 239000002609 medium Substances 0.000 description 7
- 230000008672 reprogramming Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000001914 filtration Methods 0.000 description 3
- 230000000737 periodic effect Effects 0.000 description 3
- 241000238633 Odonata Species 0.000 description 2
- 230000002349 favourable effect Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000006144 Dulbecco’s modified Eagle's medium Substances 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000010219 correlation analysis Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000006249 magnetic particle Substances 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000010183 spectrum analysis Methods 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8053—Vector processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3812—Devices capable of handling different types of numbers
- G06F2207/382—Reconfigurable for different fixed word lengths
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Discrete Mathematics (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
- Advance Control (AREA)
- Computer Hardware Design (AREA)
Abstract
具有用于提供多模基-2X蝶形向量处理电路的可编程数据路径配置的向量处理引擎(VPE)。还公开了相关的向量处理器、系统和方法。此处公开的VPE包括各自具有向量处理块的多个向量处理级,向量处理块具有用于执行基-2X蝶形向量运算以便高效执行快速傅立叶变换(FFT)向量处理运算的可编程数据路径配置。向量处理块的数据路径配置可被编程来提供不同类型的基-2X蝶形向量运算以及其它算术逻辑向量运算。作为结果,较少的VPE可在一向量处理器中提供所需的基-2X蝶形向量运算以及其它类型的算术逻辑向量运算,由此节省了向量处理器中的面积而仍保留与标量处理引擎相比较少的寄存器写以及较快的向量指令执行时间的向量处理优点。
Description
相关申请
本申请还涉及2013年3月13日提交的、名为“Vector Processing Carry-SaveAccumulators Employing Redundant Carry-Save Format To Reduce CarryPropagation,And Related Vector Processors,Systems,And Methods(采用冗余进位保留格式来减少进位传播的向量处理进位保留累加器及相关向量处理器、系统和方法)”的美国专利申请S/N.13/798,618(高通编号No.123248),该申请通过引用其整体被包含于此。
本申请涉及2013年3月13日提交的、名为“Vector Processing EnginesHaving Programmable Data Path Configurations For Providing Multi-Mode VectorProcessing,And Related Vector Processors,Systems,and Methods(具有用于提供多模向量处理的可编程数据路径配置的向量处理引擎及相关向量处理器、系统和方法)”的美国专利申请S/N.13/798,641(高通编号No.123249),该申请通过引用其整体被包含于此。
背景技术
I.公开领域
公开领域涉及用于处理向量和标量运算的向量处理器和相关系统,包括单指令多数据(SIMD)处理器和多指令多数据(MIMD)处理器。
II.背景
无线计算系统正迅速成为数字信息领域中最流行的技术之一。技术进步已导致越来越小且越来越强大的无线通信设备。例如,无线计算设备通常包括小、轻量且易于由用户携带的便携式无线电话、个人数字助理(PDA)和寻呼设备。更具体地,便携式无线电话(诸如蜂窝电话和网际协议(IP)电话)可通过无线网络传输语音和数据分组。此外,许多这样的无线通信设备包括其它类型的设备。例如,无线电话可包括数码相机、数码摄像机、数字记录器、和/或音频文件播放器。同样,无线电话可包括可用于接入因特网的web接口。此外,无线通信设备可包括用于根据所设计的无线通信技术标准(例如,码分多址(CDMA)、宽带CDMA(WCDMA)以及长期演进(LTE))来处理高速无线通信数据的复杂处理资源。因此,这些无线通信设备包括相当的计算能力。
随着无线计算设备变得越来越小且越来越强大,它们越来越变得资源受限。例如,屏幕尺寸、可用存储器和文件系统空间的量以及输入和输出能力的量可能受到设备的小尺寸的限制。此外,电池大小、电池提供的电量以及电池的寿命也受到限制。增加设备的电池寿命的一种方式是设计消耗较少功率的处理器。
就这一点而言,对包括向量处理器的无线通信设备可采用基带处理器。向量处理器具有提供对数据向量(即,数组)工作的高级运算的向量体系结构。与对一组数据执行向量指令然后再次取回和解码向量指令以用于向量内的后续元素相反,向量处理涉及取回向量指令一次,然后在数据元素的整个数组上执行向量指令多次。这种过程允许降低执行程序所需的能量,因为每一向量指令需要被取回的次数较少等等。由于向量指令同时在多个时钟周期上对长向量操作,高度并行性可用简单的按次序向量指令分派来实现。
图1示出了可在诸如无线计算机设备等计算设备中采用的示例性基带处理器10。基带处理器10包括多个处理引擎(PE)12,它们各自专用于为特定应用提供因功能而异的向量处理。在此示例中,在基带处理器10中提供了六(6)个分开的PE 12(0)-12(5)。PE 12(0)-12(5)各自被配置成为从共享存储器16向PE 12(0)-12(5)提供的固定X位宽的向量数据14提供向量处理。例如,向量数据14可以是512位宽。向量数据14可被定义成较小的多个X位宽的向量数据样本集18(0)-18(Y)(例如,16位和32位样本集)。以此方式,PE 12(0)-12(5)能够提供对并行向PE 12(0)-12(5)提供的多个向量数据样本集的向量处理以实现高度并行性。每个PE 12(0)-12(5)可包括用于存储对向量数据14处理向量指令的结果的向量寄存器文件(VR)。
图1中的基带处理器10中的每一PE 12(0)-12(5)包括专门设计来高效执行特定类型的固定运算的特定、专用的电路和硬件。例如,图1中的基带处理器10包括分开的宽带码分多址(WCDMA)PE 12(0)、12(1)以及长期演进(LTE)PE 12(4)、12(5),因为WCDMA和LTE涉及不同类型的专门运算。因此,通过提供分开的WCDMA特定PE 12(0)、12(1)以及LTE特定PE 12(4)、12(5),PE 12(0)、12(1)、12(4)、12(5)中的每一个可被设计成包括特别针对WCDMA和LTE频繁执行的功能的专门、专用电路以便进行高效运算。这种设计与标量处理引擎形成对照,标量处理引擎包括被设计成灵活以支持较大量的不相关运算但效率较低的更为通用的电路和硬件。
在PE中通常执行向量累加运算。就这一点而言,PE包括因功能而异的累加器结构,这些结构各自具有支持特定向量累加运算的专门的电路和硬件以便进行高效处理。采用向量累加运算的PE所支持的普通向量运算的示例包括滤波运算、相关运算以及通常用于为无线通信算法执行快速傅立叶变换(FFT)向量处理运算的基-2X(例如,基-2以及基-4)蝶形运算。在PE中提供因功能而异的累加器结构对频繁执行的、专门的累加运算是有利的。然而,在PE中提供因功能而异的累加器结构可增加基带处理器所需的面积和功率,因为在PE中提供的分开的因功能而异的累加器结构各自包括专门的电路和存储器。
发明概述
此处公开的实施例包括具有用于提供多模基-2X蝶形向量处理电路的可编程数据路径配置的向量处理引擎(VPE)。还公开了相关的向量处理器、系统和方法。此处公开的VPE包括各自具有向量处理块的多个向量处理级,向量处理块具有用于执行基-2X蝶形向量运算以便高效执行快速傅立叶变换(FFT)向量处理的可编程数据路径配置。向量处理块的数据路径配置可被编程来提供不同类型的基-2X蝶形向量运算以及其它算术逻辑向量运算。作为结果,较少的VPE可在一向量处理器中提供所需的基-2X蝶形向量运算以及其它类型的算术逻辑向量运算,由此节省了向量处理器中的面积,而仍保留与标量处理引擎相比较少的寄存器写以及较快的向量指令执行时间的向量处理优点。
就这一点而言,在此处公开的某些实施例中,在VPE的向量处理级中提供具有可编程数据路径配置的多个乘法器块。多个乘法器块与在VPE的另一向量处理级中提供的具有可编程数据路径配置的多个累加器块熔合。每一乘法器块的数据路径可被编程,以便根据正在执行的具体基-2X蝶形向量指令为基-2X蝶形向量运算的点提供乘法。每一累加器块的数据路径可被编程,以便根据正在执行的基-2X蝶形向量指令累加来自多个乘法器块之中的乘法器块的基-2X蝶形乘积。累加器块的数据路径配置还可在其它周期中被重新编程,以便根据正在执行的基-2X蝶形向量指令累加来自多个乘法器块之中的其它乘法器块的基-2X蝶形乘积。由累加器块累加的最终累加的基-2X蝶形乘积可提供N点FFT向量处理运算。
具有用于提供多模基-2X蝶形向量处理的可编程数据路径配置的VPE与仅包括提供固定功能的固定数据路径配置的VPE是有区别的。此处所公开的具有用于提供多模基-2X蝶形向量处理的可编程数据路径配置的VPE还可与标量处理引擎(诸如在举例而言数字信号处理器(DSP)中提供的标量处理引擎)相区分。标量处理引擎采用灵活、通用的电路和逻辑来执行不同类型的非固定功能,但也在向量指令执行期间将中间结果写入寄存器文件,从而消耗额外的功率并增加了向量指令执行时间。
就这一点而言,在一个实施例中,提供了被配置成提供至少一个多模基-2X蝶形向量处理电路的VPE。VPE包括至少一个乘法向量处理级,该处理级包括至少一个乘法器块。每一乘法器块被配置成从多个输入数据路径之中的第一输入数据路径接收来自多个基向量数据输入样本集的基向量数据输入样本集。每一乘法器块还被配置成根据至少一个乘法向量处理级执行的基蝶形向量指令,基于可编程乘法数据路径配置将基向量数据输入样本集与旋转因子分量相乘以在多个乘法输出数据路径中提供一基向量乘法输出样本集。VPE还包括至少一个累加向量处理级,该处理级包括多个累加器块。多个累加器块之中的每一累加器块被配置成基于累加器可编程累加器数据路径配置从多个乘法输出数据路径之中的乘法输出数据路径接收多个基向量乘法输出样本集。多个累加器块之中的每一累加器块还被配置成基于累加器可编程累加器数据路径配置累加所接收到的多个基向量乘法输出样本集以提供基向量累加结果样本集。多个累加器块之中的每一累加器块还被配置成在多个输出数据路径之中的输出数据路径中提供基向量累加结果样本集。VPE还包括输出处理级,该处理级被配置成从多个累加器块中的每一累加器块接收多个基向量累加结果样本集。
在另一实施例中,提供了被配置成提供至少一个多模基-2X蝶形向量处理电路的VPE。VPE包括至少一个乘法向量处理级装置,该装置包括至少一个乘法器块装置。每一乘法器块装置被配置成从多个输入数据路径之中的第一输入数据路径中接收来自多个基向量数据输入样本集的基向量数据输入样本集。每一乘法器块装置还被配置成根据至少一个乘法向量处理级装置执行的基蝶形向量指令,基于可编程乘法数据路径配置将基向量数据输入样本集与旋转因子分量相乘以在多个乘法输出数据路径中提供基向量乘法输出样本集。VPE还包括至少一个累加向量处理级装置,该装置包括多个累加器块装置。多个累加器块装置之中的每一累加器块装置被配置成基于可编程累加器数据路径配置从多个乘法输出数据路径之中的乘法输出数据路径接收多个基向量乘法输出样本集。多个累加器块装置之中的每一累加器块装置还被配置成基于可编程累加器数据路径配置累加所接收到的多个基向量乘法输出样本集以提供基向量累加结果样本集。多个累加器块装置之中的每一累加器块装置还被配置成在多个输出数据路径之中的输出数据路径中提供基向量累加结果样本集。VPE还包括输出处理级装置,该装置被配置成从多个累加器块中的每一累加器块接收多个基向量累加结果样本集。
在另一实施例中,提供了在向量处理引擎(VPE)中的多模基-2X蝶形向量处理电路处理中处理基-2X向量数据的方法。该方法包括从至少一个乘法向量处理级中的至少一个乘法器块中的多个输入数据路径之中的第一输入数据路径接收来自多个基向量数据输入样本集中的基向量数据输入样本集。该方法还包括在至少一个乘法器块中根据至少一个乘法向量处理级执行的基蝶形向量指令,基于可编程乘法数据路径配置将基向量数据输入样本集与旋转因子分量相乘以在多个乘法输出数据路径中提供基向量乘法输出样本集。该方法还包括在至少一个累加向量处理级中的多个累加器块之中的一累加器块中,基于累加器可编程累加器数据路径配置从多个乘法输出数据路径之中的乘法输出数据路径接收多个基向量乘法输出样本集。该方法还包括基于累加器可编程累加器数据路径配置,累加所接收到的多个基向量乘法输出样本集以提供基向量累加结果样本集。该方法还包括在多个输出数据路径之中的输出数据路径中提供基向量累加结果样本集。该方法还包括在输出处理级中从多个累加器块中的每一累加器块接收多个基向量累加结果样本集。
在另一实施例中,提供了向量处理器。向量处理器包括至少一个向量寄存器,该向量寄存器被配置成从向量数据存储器接收基向量数据输入样本集。向量处理器还包括至少一个向量结果寄存器,该向量结果寄存器被配置成存储基向量结果输出样本集。向量处理器还包括VPE。VPE包括至少一个乘法向量处理级。乘法向量处理级被配置成从至少一个乘法向量处理级中的至少一个乘法器块中的多个输入数据路径之中的第一输入数据路径接收来自多个基向量数据输入样本集中的基向量数据输入样本集。乘法向量处理级还被配置成在至少一个乘法器块中,根据至少一个乘法向量处理级执行的基蝶形向量指令,基于可编程乘法数据路径配置将基向量数据输入样本集与旋转因子分量相乘以在多个乘法输出数据路径中提供基向量乘法输出样本集。VPE还包括至少一个累加向量处理级。累加向量处理级被配置成在至少一个累加向量处理级中的多个累加器块之中的每一累加器块中,基于可编程累加器数据路径配置从多个乘法输出数据路径之中的乘法输出数据路径接收多个基向量乘法输出样本集。累加向量处理级还被配置成基于可编程累加器数据路径配置,在至少一个累加器块中,累加所接收到的多个基向量乘法输出样本集以提供基向量累加结果样本集。累加向量处理级还被配置成在多个输出数据路径之中的输出数据路径中提供基向量累加结果样本集。VPE还包括输出处理级,该处理级被配置成从多个累加器块中的每一累加器块接收多个基向量累加结果样本集。
附图简述
图1是包括各自专用于为特定应用提供因功能而异的向量处理的多个向量处理引擎(VPE)的一示例性向量处理器的示意图;
图2是包括具有可编程数据路径配置的通用VPE的一示例性向量处理器的示意图,该可编程数据路径配置使得VPE中提供的通用电路和硬件可被编程为多个模式,以便以高效的方式为多个应用或技术执行特定类型的向量运算而无需提供分开的VPE;
图3是图2的VPE中提供的示例性向量处理级的示意图,其中向量处理级中的某些包括具有可编程数据路径配置的示例性向量处理块;
图4A是示出包括在图2和3的示例性向量处理器中的、具有可编程数据路径配置的至少一个向量处理块的示例性向量处理的流程图;
图4B是示出乘法器块和累加器块的示例性向量处理的流程图,这些块各自具有可编程数据路径配置并在图2和3的示例性向量处理器中的不同向量处理级中提供;
图5是图2和3的VPE的向量处理级中提供的多个乘法器块的更详细的示意图,其中多个乘法器块各自具有可编程数据路径配置,以使得多个乘法器块可被编程为多个模式以执行特定的、不同类型的向量乘法运算;
图6是图5中多个乘法器块之中的一乘法器块的内部组件的示意图,该乘法器块具有能够被编程以提供8位乘8位向量数据输入样本集和16位乘16位向量数据输入样本集的乘法运算的可编程数据路径配置;
图7是图2和3的VPE中的乘法器块和累加器块的一般化示意图,其中累加器块采用进位保留累加器结构,该结构采用冗余进位保留格式来减少进位传播;
图8是图7的累加器块的示例性内部组件的详细示意图,该累加器块在图2和3的VPE中提供,其中累加器块具有可编程数据路径配置,以使得累加器块可被编程为多个模式以便用冗余进位保留格式执行特定的、不同类型的向量累加运算;
图9A是图8的累加器块的示意图,该累加器块具有被编程用于提供双24位累加器模式的数据路径配置;
图9B是图8的累加器块的示意图,该累加器块具有被编程用于提供单个40位累加器模式的数据路径配置;
图9C是图8的累加器块的示意图,该累加器块具有被编程用于提供16位进位保留加法器继之以单个24位累加器模式的数据路径配置;
图10是一乘法器的概念示意图,该乘法器具有被编程以在图2和3的VPE中与冗余进位保留格式的四(4)个累加器熔合从而形成被配置成执行基-4蝶形向量运算的每一周期的基蝶形电路的数据路径配置;
图11是图10中的基蝶形电路的一个周期的示意图,该电路被配置成或者执行基-2蝶形向量运算或者执行基-4蝶形向量运算;以及
图12是根据此处公开的实施例的可包括向量处理器的示例性的基于处理器的系统的框图,该向量处理器包括具有可编程数据路径配置的VPE,所以VPE中的通用电路和硬件可被编程以用作被设计成以高效方式为多个应用或技术执行特定类型的向量运算的专用电路,而无需提供分开的VPE。
详细描述
现在参考附图,描述了本发明的若干示例性实施例。措辞“示例性”在本文中用于表示“用作示例、实例或解说”。本文中描述为“示例性”的任何实施例并不必然被解释为优于或胜过其他实施例。
此处公开的实施例包括具有用于提供多模基-2X蝶形向量处理的可编程数据路径配置的向量处理引擎(VPE)。还公开了相关的向量处理器、系统和方法。此处公开的VPE包括各自具有向量处理块的多个向量处理级,这些向量处理块具有用于执行基-2X蝶形向量运算以便高效执行快速傅立叶变换(FFT)向量处理运算的可编程数据路径配置。向量处理块的数据路径配置可被编程来提供不同类型的基-2X蝶形向量运算以及其它算术逻辑向量运算。作为结果,较少的VPE可在一向量处理器中提供所需的基-2X蝶形向量运算以及其它类型的算术逻辑向量运算,由此节省了向量处理器中的面积而仍保留与标量处理引擎相比较少的寄存器写以及较快的向量指令执行时间的向量处理优点。
就这一点而言,在此处公开的某些实施例中,在VPE的一向量处理级中提供具有可编程数据路径配置的多个乘法器块。这多个乘法器块与在VPE的另一向量处理级中提供的具有可编程数据路径配置的多个累加器块熔合。每一乘法器块的数据路径可被编程以便根据正在执行的具体基-2X蝶形向量指令为基-2X蝶形向量运算的点提供乘法。每一累加器块的数据路径可被编程,以便根据正在执行的基-2X蝶形向量指令累加来自多个乘法器块之中的一乘法器块的基-2X蝶形乘积。累加器块的数据路径配置还可在其它周期中被重新编程,以便根据正在执行的基-2X蝶形向量指令累加来自多个乘法器块之中的其它乘法器块的基-2X蝶形乘积。由累加器块累加的最终累加的基-2X蝶形乘积可提供N点的FFT向量处理运算。
具有用于提供多模基-2X蝶形向量处理的可编程数据路径配置的VPE与仅包括提供固定功能的固定数据路径配置的VPE是有区别的。此处所公开的具有用于提供多模基-2X蝶形向量处理的可编程数据路径配置的VPE与标量处理引擎(诸如在数字信号处理器(DSP)中提供的标量处理引擎)也是有区别的。标量处理引擎采用灵活、通用的电路和逻辑来执行不同类型的非固定功能,但也在向量指令执行期间将中间结果写入寄存器文件,从而消耗额外的功率并增加了向量指令执行时间。
就这一点而言,图2是包括示例性向量处理单元22(也被称为向量处理引擎(VPE)22)的基带处理器20的示意图。基带处理器20及其VPE 22可在半导体管芯24中提供。在这一实施例中,如以下从图3开始更详细讨论地,基带处理器20包括具有可编程数据路径配置的通用VPE 22。以此方式,VPE 22包括可被编程和重新编程以便在不同运算模式中提供不同、特定类型的向量运算的通用电路和硬件,而无需在基带处理器20中提供分开的VPE。VPE 22还可被编程为向量算术模式,用于以高效方式为多个应用或技术执行一般的算术运算,而无需在基带处理器20中提供分开的VPE。
在从图3开始的讨论VPE 22中提供的、用于向量多模处理的可编程数据路径配置之前,首先描述图2中的基带处理器20的组件。在此非限定性示例中的基带处理器20是512位向量处理器。基带处理器20包括除VPE 22之外的用以支持VPE 22在基带处理器20中提供向量处理的附加组件。基带处理器20包括向量寄存器28,该寄存器28被配置成从向量单元数据存储器(LMEM)32接收并存储向量数据30。例如,向量数据30是X位宽,其中‘X’是根据设计选择来定义的(例如,512位)。向量数据30可被划分成向量数据样本集34。例如,向量数据30可以是256位宽,且可包括更小的向量数据样本集34(Y)-34(0),其中向量数据样本集34(Y)-34(0)中的一些是16位宽,而向量数据样本集34(Y)-34(0)中的另一些是32位宽。VPE 22能够对向VPE 22并行提供的某些所选乘法向量数据样本集34(Y)-34(0)提供向量处理以实现高度并行性。向量寄存器28还被配置成存储在VPE 22处理向量数据30时生成的结果。在某些实施例中,VPE 22被配置成不在向量寄存器28中存储中间向量处理结果,以减少寄存器写以便提供更快速的向量指令执行时间。这种配置与标量处理引擎执行的标量指令相反,标量处理引擎在寄存器中存储中间结果,诸如标量处理DSP。
图2中的基带处理器20还包括条件寄存器36,该寄存器36被配置成向VPE 22提供条件以供在向量指令的有条件执行中使用,并存储作为向量指令执行的结果的经更新条件。基带处理器20还包括累加寄存器38、全局寄存器40和地址寄存器42。累加寄存器38被配置成被VPE 22用来存储作为对向量数据30执行某些专门运算的结果的累加结果。全局寄存器40被配置成为VPE22支持的某些向量指令存储标量操作数。地址寄存器42被配置成存储可由向量负载寻址的地址以及存储VPE 22支持的指令以从向量单元数据存储器32检索向量数据30和在向量单元数据存储器32中存储向量处理结果。
继续参考图2,这一实施例中的基带处理器20还包括标量处理器44(也被称为“整数单元”),以便除了VPE 22提供的向量处理以外在基带处理器20中提供标量处理。可能期望提供被配置成基于所执行指令的类型支持向量和标量指令运算两者以便进行高效运算的CPU。在这一实施例中,作为非限定性示例,标量处理器44是32位精简指令集计算(RISC)标量处理器。在这一示例中,标量处理器44包括用于支持标量指令处理的算术逻辑单元(ALU)46。基带处理器20包括指令分派电路48,该电路被配置成从程序存储器50取回指令、对所取回的指令解码并基于指令类型将所取回的指令或者定向到标量处理器44或者通过向量数据路径49定向到VPE 22。标量处理器44包括通用寄存器52,供标量处理器44在执行标量指令时使用。整数单元数据存储器(DMEM)54被包括在基带处理器20中,以便将来自主存储器的数据提供到通用寄存器52中,供标量处理器44存取用于标量指令执行。作为非限定性示例,DMEM54可以是高速缓存存储器。基带处理器20还包括存储器控制器56,该存储器控制器56包括存储器控制器寄存器58,该存储器控制器寄存器58被配置成当标量处理器44正在执行要求通过存储器控制器数据路径59访问主存储器的向量指令时从通用寄存器52接收存储器地址。
由于已经描述了图2中基带处理器20的示例性组件,现在将讨论关于VPE22及其通过通用电路和硬件提供基-2X蝶形向量处理以及其它算术逻辑向量运算的可编程数据路径配置的更多细节。以下更详细讨论的图3-8C包括图2中VPE 22中所包括的示例性向量处理块,这些向量处理块具有用于提供多模基-2X蝶形向量处理以及其它算术逻辑向量运算的可编程数据路径配置。也在以下更详细讨论的图9-11提供示例性编程的数据路径配置以将乘法器块与示例性累加器块熔合,从而形成被配置成执行基-2X蝶形运算的每一周期的基蝶形电路。
就这一点而言,图3示出了图2中的VPE 22的示例性示意图。如图3中所示并将在以下在图4-8C中更详细描述地,VPE 22包括多个示例性向量处理级60,这些处理级60具有可用可编程数据路径配置来配置的示例性向量处理块。如将在以下更详细讨论地,在向量处理块中提供的可编程数据路径配置允许特定电路和硬件被编程和重新编程以支持对从图2中的向量单元数据存储器32接收到的向量数据30执行不同的、特定的向量处理运算。例如,某些向量处理运算可共同要求向量数据30的乘法,继之以相乘后的向量数据结果的累加。这样的向量处理的非限定性示例包括滤波运算、相关运算以及通常用于为无线通信算法执行快速傅立叶变换(FFT)运算的基-2和基-4蝶形运算,其中提供了一系列并行乘法,继之以对乘法结果的一系列并行累加。如也将在以下参考图7-9C更详细讨论地,图2中的VPE 22还具有将乘法器与进位保留累加器熔合以在进位保留累加器中提供冗余进位保留格式的选项。在进位保留累加器中提供冗余进位保留格式可消除对在累加的每一步期间提供进位传播路径和进位传播加法运算的需求。
就这一点,并进一步参考图3,将首先描述VPE 22的M0乘法向量处理级60(1)。M0乘法向量处理级60(1)是第二向量处理级,它包含任何所需数量的乘法器块62(A)-62(0)形式的多个向量处理块,这些块各自具有可编程数据路径配置。提供乘法器块62(A)-62(0)来执行VPE 22中的向量乘法运算。多个乘法器块62(A)-62(0)在M0乘法向量处理级60(1)中彼此并行安置,用于提供至多十二(12)个乘法向量数据样本集34(Y)-34(0)的乘法。在这一实施例中,‘A’等于三(3),意味着在这一示例中,在M0乘法向量处理级60(1)中包括四(4)个乘法器块62(3)-62(0)。乘法向量数据样本集34(Y)-34(0)被加载到VPE 22中以便向量处理至输入读(RR)向量处理级中提供的多个锁存器64(Y)-64(0),输入读向量处理级是VPE 22中的第一向量处理级60(0)。在这一实施例中,在VPE 22中有十二(12)个锁存器64(11)-64(0),意味着在这一实施例中‘Y’等于十一(11)。锁存器64(11)-64(0)被配置成将检索自向量寄存器28(见图2)的乘法向量数据样本集34(11)-34(0)锁存为向量数据输入样本集66(11)-66(0)。在这一示例中,每一锁存器64(11)-64(0)是8位宽的。锁存器64(11)-64(0)各自分别被配置成对总共96位宽的向量数据30(即,12个锁存器x各自8位)锁存乘法向量数据输入样本集66(11)-66(0)。
继续参考图3,多个乘法器块62(3)-62(0)被配置成能够接收向量数据输入样本集66(11)-66(0)的某些组合用于提供向量乘法运算,其中在这一示例中‘Y’等于十一(11)。根据VPE 22的设计,在多个输入数据路径A3-A0、B3-B0以及C3-C0中提供乘法向量数据输入样本集66(11)-66(0)。如图3中所示,向量数据输入样本集66(3)-66(0)对应于输入数据路径C3-C0。如图3中所示,向量数据输入样本集66(7)-66(4)对应于输入数据路径B3-B0。如图3中所示,向量数据输入样本集66(11)-66(8)对应于输入数据路径A3-A0。多个乘法器块62(3)-62(0)被配置成分别根据向多个乘法器块62(3)-62(0)提供的输入数据路径A3-A0、B3-B0、C3-C0来处理接收到的向量数据输入样本集66(11)-66(0),以提供向量乘法运算。
如以下将参考图4和5更详细讨论地,在图3中的乘法器块62(3)-62(0)中提供的可编程内部数据路径67(3)-67(0)可被编程以具有不同的数据路径配置。这些不同的数据路径配置根据向每一乘法器块62(3)-62(0)提供的具体输入数据路径A3-A0、B3-B0、C3-C0对向乘法器块62(3)-62(0)提供的具体接收到的向量数据输入样本集66(11)-66(0)提供乘法的不同组合和/或不同位长度。就这一点而言,多个乘法器块62(3)-62(0)合起来提供向量乘法输出样本集68(3)-68(0)作为包括将向量数据输入样本集66(11)-66(0)的具体组合相乘的乘法结果的向量结果输出样本集。
例如,乘法器块62(3)-62(0)的可编程内部数据路径67(3)-67(0)可根据从图2中的基带处理器20的指令分派48中的向量指令解码器提供的设置来被编程。在这一实施例中,存在乘法器块62(3)-62(0)的四(4)个可编程内部数据路径67(3)-67(0)。向量指令指定要由VPE 22执行的运算的特定类型。因此,VPE 22可被编程和重新编程来配置乘法器块62(3)-62(0)的可编程内部数据路径67(3)-67(0),以便以高效方式采用同一通用电路来提供不同类型的向量乘法运算。例如,根据指令分派48中指令流水线中的向量指令的解码,VPE 22可被编程来为所执行的每一向量指令在逐个时钟周期的基础上配置和重新配置乘法器块62(3)-62(0)的可编程内部数据路径67(3)-67(0)。因此,如果VPE 22中的M0乘法向量处理级60(1)被配置成每个时钟周期处理向量数据输入样本集66,则乘法器块62(3)-62(0)根据指令分派48中的指令流水线中的向量指令的解码在每个时钟周期上执行向量乘法运算。
乘法器块62可被编程来执行实数和复数乘法。继续参考图3,在一个向量处理块数据路径配置中,乘法器块62可被配置成使两个8位向量数据输入样本集66一起相乘。在一个乘法块数据路径配置中,乘法器块62可被配置成使两个16位向量数据输入样本集66一起相乘,这些16位向量数据输入样本集是由第一对8位向量数据输入样本集66乘以第二对8位向量数据输入样本集66来形成的。这在图6中示出并在以下更详细讨论。再一次,在乘法器块62(3)-62(0)中提供可编程数据路径配置提供了灵活性,因为乘法器块62(3)-62(0)可被配置和重新配置来执行不同类型的乘法运算以减少VPE 22中的面积,以及可能允许在基带处理器20中提供较少的VPE 22以实现所需向量处理运算。
回过来参考图3,多个乘法器块62(3)-62(0)被配置成在可编程输出数据路径70(3)-70(0)中或者向下一向量处理级60或者向输出处理级提供向量乘法输出样本集68(3)-68(0)。根据基于多个乘法器块62(3)-62(0)正在执行的向量指令的被编程配置,在可编程输出数据路径70(3)-70(0)中提供向量乘法输出样本集68(3)-68(0)。在这一示例中,如以下所讨论地,可编程输出数据路径70(3)-70(0)中的向量乘法输出样本集68(3)-68(0)被提供给M1累加向量处理级60(2)供累加。在VPE 22的这一特定设计中,期望提供多个乘法器块62(3)-62(0)继之以累加器,以支持要求向量数据输入的相乘继之以相乘结果的累加的专门向量指令。例如,通常用于提供FFT运算的基-2和基-4蝶形运算包括一系列乘法运算,继之以乘法结果的累加。然而,注意到VPE 22中提供的向量处理块的这些组合是示例性的而非限制性的。具有可编程数据路径配置的VPE可被配置成包括具有向量处理块的一个或任何其它数目的向量处理级。向量处理块可被提供以根据设计和被设计成由VPE支持的特定向量指令执行任何类型的运算。
继续参考图3,在这一实施例中,向量乘法输出样本集68(3)-68(0)被提供给在下一向量处理级(即M1累加向量处理级60(2))中提供的多个累加器块72(3)-72(0)。多个累加器块72(A)-72(0)之中的每一累加器块包含两个累加器72(X)(1)和72(X)(0)(即72(3)(1)、72(3)(0)、72(2)(1)、72(2)(0)、72(1)(1)、72(1)(0)以及72(0)(1)、72(0)(0))。多个累加器块72(3)-72(0)累加向量乘法输出样本集68(3)-68(0)的结果。如将在以下参考图7-9C更详细讨论地,多个累加器块72(3)-72(0)可作为进位保留累加器提供,其中进位结果在累加过程期间实际上被保留而不被传播,直到累加运算完成。多个累加器块72(3)-72(0)还具有与图5和6中的多个乘法器块62(3)-62(0)熔合以在多个累加器块72(3)-72(0)中提供冗余进位保留格式的选项。在多个累加器块72(3)-72(0)中提供冗余进位保留格式可消除在多个累加器块72(3)-72(0)的累加的每一步期间提供进位传播路径和进位传播相加运算的需求。现在将参考图3介绍M1累加向量处理级60(2)及其多个累加器块72(3)-72(0)。
参考图3,M1累加向量处理级60(2)中的多个累加器块72(3)-72(0)被配置成根据可编程输出数据路径配置在可编程输出数据路径74(3)-74(0)(即74(3)(1)、74(3)(0)、74(2)(1)、74(2)(0)、74(1)(1)、74(1)(0)以及74(0)(1)、74(0)(0))中累加向量乘法输出样本集68(3)-68(0),以或者在下一向量处理级60中或者在输出处理级中提供累加器输出样本集76(3)-76(0)(即76(3)(1)、76(3)(0)、76(2)(1)、76(2)(0)、76(1)(1)、76(1)(0)以及76(0)(1),76(0)(0))。在这一示例中,累加器输出样本集76(3)-76(0)被提供给输出处理级,后者是ALU处理级60(3)。例如,如以下更详细讨论地,作为非限定性示例,累加器输出样本集76(3)-76(0)还可被提供给图2中的基带处理器20中的标量处理器44中的ALU 46。例如,ALU 46可根据VPE 22执行的专门向量指令取得累加器输出样本集76(3)-76(0)以便在更一般的处理运算中使用。
回来参考图3,累加器块72(3)-72(0)的可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0)可被编程来被重新配置成接收从乘法器块62(3)-62(0)向累加器块72(3)-72(0)提供的向量乘法输出样本集68(3)-68(0)的不同组合和/或位长度。因为每一累加器块72由两个累加器72(X)(1)、72(X)(0)构成,可编程输入数据路径78(A)-78(0)在图3中被示为78(3)(1)、78(3)(0)、78(2)(1)、78(2)(0)、78(1)(1)、78(1)(0)以及78(0)(1)、78(0)(0)。类似地,可编程内部数据路径80(3)-80(A)在图3中被示为80(3)(1)、80(3)(0)、80(2)(1)、80(2)(0)、80(1)(1)、80(1)(0)、80(0)(1)、80(0)(0)。以下参考图8-9C更详细地讨论在累加器块72(3)-72(0)中提供可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0)。以此方式,根据累加器块72(3)-72(0)的可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0),累加器块72(3)-72(0)可根据所累加的向量乘法输出样本集68(3)-68(0)的编程组合来提供累加器输出样本集76(3)-76(0)。再一次这提供了灵活性,因为累加器块72(3)-72(0)可被配置并被重新配置成基于可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0)的编程执行不同类型的累加运算以减少VPE 22中的面积,并有可能允许在基带处理器20中提供较少的VPE 22以实现所需的向量处理运算。
例如,作为非限定性示例,在一个累加器模式配置中,两个累加器块72的可编程输入数据路径78和/或可编程内部数据路径80可被编程以提供单个40位累加器。这在图9A中示出并在以下更详细地讨论。作为非限定性示例,在另一个累加器模式配置中,两个累加器块72的可编程输入数据路径78和/或可编程内部数据路径80可被编程以提供双24位累加器。这在图9B中示出并在以下更详细讨论。在另一个累加器模式配置中,两个累加器块72的可编程输入数据路径78和/或可编程内部数据路径80可被编程以提供16位进位保留加法器继之以单个24位累加器。这在图9C中示出并在以下更详细地讨论。乘法和累加运算的特定不同组合还可根据乘法器块62(3)-62(0)和累加器块72(3)-72(0)的编程(例如,16位复数乘法与16位累加、以及32位复数乘法与16位累加)被VPE 22支持。
累加器块72(3)-72(0)的可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0)可根据从图2中的基带处理器20的指令分派48中的向量指令解码器提供的设置来被编程。向量指令指定要由VPE 22执行的特定类型的运算。因此,VPE 22可被配置成针对根据指令分派48中的指令流水线中的向量指令的解码而执行的每一向量指令,对累加器块72(3)-72(0)的可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0)重新编程。向量指令可在VPE 22的一个或多个时钟周期上执行。还在这一示例中,VPE 22可被配置成在逐个时钟周期的基础上,针对向量指令的每一时钟周期,对累加器块72(3)-72(0)的可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0)重新编程。因此,例如,如果VPE 22中的M1累加向量处理级60(2)执行的向量指令每个时钟周期处理向量乘法输出样本集68(3)-68(0),则作为结果,累加器块72(3)-72(0)的可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0)可在向量指令的执行期间的每一时钟周期被重新配置。图4A和4B是示出图2和3中的VPE 22中的乘法器块62(A)-62(0)和累加器块72(A)(1)-72(0)(0)的示例性向量处理的流程图,以提供对示例性向量处理的更多阐述。图4A是示出一般向量处理块的示例性向量处理的流程图,该一般向量处理块可以是包括在图2和3的示例性VPE中的具有可编程数据路径配置的乘法器块62(A)-62(0)、累加器块72(A)(1)-72(0)(0)或两者。图4B是示出乘法器块62(A)-62(0)和累加器块72(A)(1)-72(0)(0)的示例性向量处理的流程图,这些块各自具有可编程数据路径配置并在图2和3的示例性VPE 22中的不同向量处理级中提供。
就这一点而言,如图4A中所示,VPE 22的过程包括在输入处理级60(0)中在多个输入数据路径(A3-C0)之中的一输入数据路径中接收一向量数组宽度的多个向量数据输入样本集34(Y)-34(0)(框81)。向量处理接下来包括在向量处理块62(A)-62(0)和/或72(A)(1)-72(0)(0)中从多个输入数据路径A3-C0接收向量数据输入样本集34(Y)-34(0)(框83)。向量处理接下来包括根据向量处理级60(1)、60(2)执行的向量指令,基于向量处理块62(A)-62(0)、72(A)(1)-72(0)(0)的可编程数据路径配置67(A)-67(0)、70(3)-70(0)、78(A)(1)-78(0)(0)、80(A)(1)-80(0)(0)、74(A)(1)-74(0)(0)处理向量数据输入样本集34(Y)-34(0),以提供向量结果输出样本集68(A)-68(0)、76(A)(1)-76(0)(0)(框85)。向量处理接下来包括在输出数据路径70(A)-70(0)、74(A)(1)-74(0)(0)中提供向量结果输出样本集68(A)-68(0)、76(A)(1)-76(0)(0)(框87)。向量处理接下来包括在输出处理级60(3)中从向量处理级60(1)、60(2)接收向量结果输出样本集68(A)-68(0)、76(A)(1)-76(60)(0)(框89)。
注意到,以上参考图4A描述的向量处理中的每一处理级60(0)-60(3)并发地进行并行向量处理,其中向量处理块62(A)-62(0)、72(A)(1)-72(0)(0)的可编程数据路径配置67(A)-67(0)、70(3)-70(0)、78(A)(1)-78(0)(0)、80(A)(1)-80(0)(0)、74(A)(1)-74(0)(0)可频繁地每一时钟周期地进行重新编程。如上所述,这允许向量处理块62(A)-62(0)、72(A)(1)-72(0)(0)通过使用通用的向量处理块62(A)-62(0)、72(A)(1)-72(0)(0)针对不同的向量指令高效执行不同运算。
图4B是示出图3中的VPE 22中的乘法器块62(A)-62(0)和累加器块72(A)(1)-72(0)(0)用于涉及乘法运算继之以累加运算的向量指令的示例性向量处理的流程图。例如,FFT向量运算涉及乘法运算,继之以累加运算。图4B的流程图提供以上在图4A中描述的VPE 22的示例性一般向量处理的进一步的示例性细节。就这一点而言,向量处理涉及在输入处理级60(0)中在多个输入数据路径A3-C0之中的输入数据路径中接收一向量数组宽度的多个向量数据输入样本集34(Y)-34(0)(框93)。向量处理然后包括在多个乘法器块62(A)-62(0)中从多个输入数据路径A3-C0接收向量数据输入样本集34(Y)-34(0)(框95)。向量处理然后包括根据向量处理级60(1)所执行的向量指令,基于乘法器块62(A)-62(0)的可编程数据路径配置67(A)-67(0)、70(3)-70(0),使向量数据输入样本集34(Y)-34(0)相乘,以在多个乘法输出数据路径70(A)-70(0)之中的乘法输出数据路径70(A)-70(0)中提供乘法向量结果输出样本集68(A)-68(0)(框97)。向量处理接下来包括在多个累加器块72(A)(1)-72(0)(0)中从多个乘法输出数据路径70(A)-70(0)接收乘法向量结果输出样本集68(A)-68(0)(框99)。向量处理接下来包括根据第二向量处理级60(2)执行的向量指令,基于累加器块72(A)(1)-72(0)(0)的可编程数据路径78(A)(1)-78(0)(0)、80(A)(1)-80(0)(0)、74(A)(1)-74(0)(0)配置,将乘法向量结果输出样本集68(A)-68(0)累加在一起以提供向量累加结果样本集76(A)(1)-76(0)(0)(框101)。向量处理然后包括在输出数据路径74(A)(1)-74(0)(0)中提供向量累加结果样本集76(A)(1)-76(0)(0)(框103)。向量处理然后包括在输出处理级60(3)中从累加器块72(A)(1)-72(0)(0)接收向量结果输出样本集76(A)(1)-76(0)(0)(框105)。
由于已经描述了图3的示例性VPE 22与图4A和4B中采用具有可编程数据路径配置的向量处理块的向量处理的概览,描述的其余部分在图5-9C中描述这些向量处理块的更多示例性、非限定性细节。
就这一点而言,图5是对图3的VPE 22的M0乘法向量处理级60(1)中的多个乘法器块62(3)-62(0)的更详细示意图。图6是图5中的乘法器块62的内部组件的示意图。如图5中所示,示出了乘法器块62(3)-62(0)根据具体的输入数据路径A3-A0、B3-B0、C3-C0接收的向量数据输入样本集66(11)-66(0)。如将在以下参考图6更详细讨论地,在这一示例中,乘法器块62(3)-62(0)中的每一个包括四(4)个8位乘8位乘法器。回来参考图5,在这一示例中乘法器块62(3)-62(0)中的每一个被配置成使被乘数输入‘A’或者与被乘数输入‘B’或者与被乘数输入‘C’相乘。如图5中所示,可在乘法器块62中一起相乘的被乘数输入‘A’以及‘B’或‘C’受到哪个输入数据路径A3-A0、B3-B0、C3-C0被连接到乘法器块62(3)-62(0)的控制。被乘数选择器输入82(3)-82(0)被提供作为对每一乘法器块62(3)-62(0)的输入,以控制每一乘法器块62(3)-62(0)中的可编程内部数据路径67(3)-67(0)来选择是被乘数输入‘B’还是被乘数输入‘C’被选择来乘以被乘数输入‘A’。以此方式,向乘法器块62(3)-62(0)提供了其可编程内部数据路径67(3)-67(0)可被重新编程以按需提供不同的乘法运算的能力。
继续参考图5,使用乘法器块62(3)作为示例,输入数据路径A3和A2被分别连接到输入AH和AL。输入AH表示被乘数输入A的高位,而AL意味着所输入的被乘数输入‘A’的低位。输入数据路径B3和B2被分别连接至输入BH和BL。输入BH表示被乘数输入‘B’的高位,而AL表示所输入的被乘数输入‘B’的低位。输入数据路径C3和C2被分别连接至输入CI和CQ。在这一示例中,输入CI表示所输入的被乘数输入‘C’的实数位部分。在这一示例中,CQ表示所输入的被乘数输入‘C’的虚数位部分。如将在以下参考图6更详细讨论地,在这一示例中,被乘数选择器输入82(3)还控制乘法器块62(3)的可编程内部数据路径67(3)被配置成是对被乘数输入‘A’与被乘数输入‘B’还是与被乘数输入‘C’来执行8位乘法,或者乘法器块62(3)被配置成是对被乘数输入‘A’与被乘数输入‘B’还是与被乘数输入‘C’来执行16位乘法。
继续参考图5,乘法器块62(3)-62(0)被配置成基于其可编程内部数据路径67(3)-67(0)的配置,各自生成向量乘法输出样本集68(3)-68(0)作为乘法运算的进位‘C’与和‘S’向量输出样本集。如将在以下参考图7-9C更详细讨论地,向量乘法输出样本集68(3)-68(0)的进位‘C’与和‘S’被熔合,意味着进位‘C’与和‘S’以冗余进位保留的格式向多个累加器72(3)-72(0)提供,以在多个累加器72(3)-72(0)中提供冗余进位保留格式。如将在以下更详细讨论的,在多个累加器块72(3)-72(0)中提供冗余进位保留格式可消除在多个累加器块72(3)-72(0)执行的累加运算期间提供进位传播路径和进位传播相加运算的需求。
在图5中示出乘法器块62(3)-62(0)基于其可编程内部数据路径67(3)-67(0)的配置,生成向量乘法输出样本集68(3)-68(0)作为乘法运算的进位‘C’与和‘S’向量输出样本集的示例。例如,乘法器块62(3)被配置成对于8位乘法生成作为32位值的进位C00与和S00,并对于16位乘法生成作为64位值的进位C01与和S01。在这一示例中,其它乘法器块62(2)-62(0)具有相同的能力。就这一点而言,乘法器块62(2)被配置成对于8位乘法生成作为32位值的进位C10与和S10,并对于16位乘法生成作为64位值的进位C11与和S11。乘法器块62(1)被配置成对于8位乘法生成作为32位值的进位C20与和S20,并对于16位乘法生成作为64位值的进位C21与和S21。乘法器块62(0)被配置成对于8位乘法生成作为32位值的进位C30与和S30,并对于16位乘法生成作为64位值的进位C31与和S31。
为了说明图5中乘法器块62中提供的可编程数据路径配置的更多示例性细节,提供了图6。图6是图3和5中乘法器块62的内部组件的示意图,乘法器块62具有能够使8位乘8位向量数据输入样本集66相乘以及使16位乘16位向量数据输入样本集16相乘的可编程数据路径配置。就这一点而言,在这一示例中,乘法器块62包括四个8x8位乘法器84(3)-84(0)。可提供任何所需数量的乘法器84。第一乘法器84(3)被配置成接收8位向量数据输入样本集66A[H](其是所输入的被乘数输入‘A’的高位)并使向量数据输入样本集66A[H]或者与8位向量数据输入样本集66B[H](其是所输入的被乘数输入‘B’的高位)或者与8位向量数据输入样本集66C[I](其是所输入的被乘数输入‘C’的高位)相乘。提供了多路复用器86(3),该多路复用器86(3)被配置成或者选择8位向量数据输入样本集66B[H]或者选择8位向量数据输入样本集66C[I]作为被乘数提供给乘法器84(3)。多路复用器86(3)受被乘数选择器位输入82[3]控制,被乘数选择器位输入82[3]在这一实施例中是被乘数选择器输入82中的高位。以此方式,多路复用器86(3)和被乘数选择器位输入82[3]为乘法器84(3)提供可编程内部数据路径67[0],以便控制是8位向量数据输入样本集66B[H]还是8位向量数据输入样本集66C[I]与所接收到的向量数据输入样本集66A[H]相乘。
继续参考图6,其它乘法器84(2)-84(0)还包括与为第一乘法器84(3)提供的类似的可编程内部数据路径67[2]-67[0]。乘法器84(2)包括可编程内部数据路径67[2],该路径具有可编程配置以在可编程内部数据路径67[1]中或者提供8位向量数据输入样本集66B[H]或者提供8位向量数据输入样本集66C[I]来与8位向量数据输入样本集66A[L]相乘,该8位向量数据输入样本集66A[L]是被乘数输入‘A’的低位。在这一实施例中,该选择由多路复用器86(2)根据被乘数选择器输入82中的被乘数选择器位输入82[2]进行控制。乘法器84(1)包括可编程内部数据路径67[1],该路径可被编程以在可编程内部数据路径67[1]中或者提供8位向量数据输入样本集66B[L](其是被乘数输入‘B’的低位)或者提供8位向量数据输入样本集66C[Q](其是被乘数输入‘C’的低位)来与8位向量数据输入样本集66A[H]相乘。在这一实施例中,该选择由多路复用器86(1)根据被乘数选择器输入82中的被乘数选择器位输入82[1]进行控制。此外,乘法器84(0)包括可编程内部数据路径67[0],该路径可被编程以在可编程内部数据路径67[0]中或者提供8位向量数据输入样本集66B[L]或者提供8位向量数据输入样本集66C[Q]来与8位向量数据输入样本集66A[L]相乘。在这一实施例中,该选择由多路复用器86(0)根据被乘数选择器输入82中的被乘数选择器位输入82[0]进行控制。
继续参考图6,如上所述,乘法器84(3)-84(0)可被配置成执行不同的位长度乘法运算。就这一点而言,每一乘法器84(3)-84(0)分别包括位长度乘法模式输入88(3)-88(0)。在这一示例中,每一乘法器84(3)-84(0)可根据分别控制可编程数据路径90(3)-90(0)、91和92(3)-92(0)的配置的输入来编程为8位乘8位模式。每一乘法器84(3)-84(0)还可被编程来根据分别控制可编程数据路径90(3)-90(0)、91和92(3)-92(0)的配置的输入提供较大位乘法运算(包括16位乘16位模式以及24位乘8位模式)的一部分。例如,如果每个乘法器84(3)-84(0)根据可编程数据路径90(3)-90(0)的配置被配置成8位乘8位乘法模式,则这多个乘法器84(3)-84(0)作为一单元可被配置成包括两(2)个独立的8位乘8位乘法器作为乘法器块62的一部分。如果每个乘法器84(3)-84(0)根据可编程数据路径91的配置被配置成16位乘16位乘法模式,则这多个乘法器84(3)-84(0)作为一单元可被配置成包括单个16位乘16位乘法器作为乘法器块62的一部分。如果乘法器84(3)-84(0)根据可编程数据路径92(3)-92(0)的配置被配置成24位乘8位乘法模式,则这多个乘法器84(3)-84(0)作为一单元可被配置成包括一(1)个16位乘24位乘8位乘法器作为乘法器块62的一部分。
继续参考图6,在这一示例中,乘法器84(3)-84(0)被示为被配置成16位乘16位乘法模式。由每一乘法器84(3)、84(2)分别生成十六(16)位输入和94(3)、94(2)以及输入进位96(3)、96(2)。由每一乘法器84(1)、84(0)分别生成十六(16)位输入和94(1)、94(0)以及输入进位96(1)、96(0)。16位输入和94(3)、94(2)以及输入进位96(3)、96(2)还与16位输入和94(1)、94(0)以及输入进位96(1)、96(0)一起被提供给24位4:2压缩器109,以将输入和94(3)-94(0)以及输入进位96(3)-96(0)一起相加。当可编程数据路径91活动并用输入和94(3)-94(0)以及输入进位96(3)-96(0)选通时,被相加的输入和94(3)-94(0)以及输入进位96(3)-96(0)提供16位乘16位乘法模式中的单个和98和单个进位100。可编程数据路径91由第一基于AND的门102(3)将组合的输入和94(3)、94(2)作为16位字来选通,并由第二基于AND的门102(2)将组合的输入进位96(3)、96(2)作为16位字来选通,以提供给24位4:2压缩器109。可编程数据路径91还由第三基于AND的门102(1)将组合的输入和94(1)、94(0)作为16位字来选通,并由第四基于AND的门102(0)将组合的输入进位96(1)、96(0)作为16位字来选通,以提供给24位4:2压缩器109。如果乘法器块62被配置成16位乘16位或24位乘8位乘法模式,则向可编程输出数据路径70[0]提供向量乘法输出样本集68[0]作为压缩的32位和S0与32位进位C0部分乘积。
如果乘法器块62中的乘法器84(3)-84(0)被配置成8位乘8位乘法模式,则可编程输出数据路径70[1]配置被提供为16位输入和94(3)-94(0)与相应的16位输入进位96(3)-96(0)作为部分乘积而没有压缩。如果乘法器块62中的乘法器84(3)-84(0)被配置成8位乘8位乘法模式,则可编程输出数据路径70[1]被提供为16位输入和94(3)-94(0)与相应的16位输入进位96(3)-96(0)作为向量乘法输出样本集68[1]而没有压缩。取决于乘法器块62的乘法模式,根据正在执行的向量指令,向量乘法输出样本集68[0]、68[1]被提供给累加器块72(3)-72(0)供对和与进位乘积的累加。
由于描述了图5和6中具有可编程数据路径配置的乘法器块62(3)-62(0),现在将参考图7一般描述VPE 22中要与以冗余进位保留格式配置的累加器块72(3)-72(0)熔合的乘法器块62(3)-62(0)的特征。
就这一点而言,图7是图2和3的VPE中的乘法器块和累加器块的一般化示意图,其中累加器块采用进位保留累加器结构,该结构采用冗余进位保留格式来减少进位传播。如上所述并如图7中所示,乘法器块62被配置成使被乘数输入66[H]和66[L]相乘,并在可编程输出数据路径70中提供至少一个输入和94与至少一个输入进位96作为向量乘法输出样本集68。为了消除为每一累加步骤在累加器块72中提供进位传播路径和进位传播加法器的需求,可编程输出数据路径70中的向量乘法输出样本集68中的至少一个输入和94与至少一个输入进位96以冗余进位保留格式熔合到至少一个累加器块72。换言之,向量乘法输出样本集68中的进位96以进位保留格式作为向量输入进位96被提供给累加器块72。以此方式,向量乘法输出样本集68中的输入和94与输入进位96可被提供给累加器块72的压缩器108,该压缩器108在这一实施例中为复杂门4:2压缩器。压缩器108被配置成将输入和94和输入进位96分别与之前的累加向量输出和112和之前的移位累加向量输出进位117累加在一起。之前的移位累加向量输出进位117实际上是在累加运算期间所保留的进位累加。
以此方式,在累加器块72中不需要提供仅单个的、最终进位传播加法器来向输入和94传播所接收到的输入进位96作为累加器块72生成的累加的一部分。在这一实施例中,减少了累加器块72中与每一累加步骤期间执行进位传播加法运算相关联的功率消耗。而且,在这一实施例中,累加器块72中每一累加步骤期间与执行进位传播加法运算相关联的门延迟也被消除。
继续参考图7,压缩器108被配置成以冗余形式分别将输入和94和输入进位96与之前的累加向量输出和112和之前的移位累加向量输出进位117累加。移位累加向量输出进位117是在由压缩器108执行对下一接收到的输入和94和输入进位96的下一累加之前,由压缩器108生成的累加向量输出进位114通过对该累加向量输出进位114移位而生成的。最终移位累加向量输出进位117由累加器块72中提供的单个、最终进位传播加法器119添加到最终累加向量输出和112,以传播最终移位累加向量输出进位117中的进位累加,以便将最终累加向量输出和112转换成最终累加器输出样本集76的二进制补码表示。最终累加向量输出和112在可编程输出数据路径74中作为累加器输出样本集76提供(见图3)。
由于已经描述了图示配置成冗余进位保留格式的乘法器块62与累加器块72的熔合的图7,现在将一般参考图8描述关于累加器块72(3)-72(0)的更多示例性细节。以下描述的图9A-9C提供了采用通用电路和硬件以不同累加模式配置成冗余进位保留格式以便提供不同的向量累加运算的累加器块72(3)-72(0)的更多示例性细节。
图8是图3的VPE 22中提供的累加器块72的示例性内部组件的详细示意图。如前所述并如以下更详细讨论地,累加器块72配置有可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0),以使得累加器块72可被编程来充当被设计成执行特定、不同类型的向量累加运算的专用电路。例如,累加器块72可被编程来提供多种不同的累加和加法,包括有符号和无符号累加运算。在以下讨论的图9A-9C中图示了被配置成提供不同类型的累加运算的累加器块72中的可编程输入数据路径78(3)-78(0)和/或可编程内部数据路径80(3)-80(0)的特定示例。而且,累加器块72被配置成包括进位保留累加器72[0]、72[1]以提供冗余进位算术,以避免或减少进位传播,以便以减少的组合逻辑提供高速累加运算。
在图8中示出了累加器块72的示例性内部组件。如其中所示地,这一实施例中的累加器块72被配置成从乘法器块62接收要被累加在一起的第一输入和94[0]与第一输入进位96[0],以及第二输入和94[1]与第二输入进位96[1]。参考图8,输入和94[0]、94[1]与输入进位96[0]、96[1]将被称为向量输入和94[0]、94[1]与向量输入进位96[0]、96[1]。如前所述并如图6中所示,在这一实施例中,向量输入和94[0]、94[1]与向量输入进位96[0]、96[1]各自是16位长。在这一示例中,累加器块72被提供为两个24位进位保留累加器72[0]、72[1],各自包含类似组件,带有‘[0]’的通用元素号的组件被设计成用于进位保留累加器72[0],而带有‘[1]’的组件被设计成用于进位保留累加器72[1]。进位保留累加器72[0]、72[1]可被配置成并发执行向量累加运算。
参考图8中的进位保留累加器72[0],向量输入和94[0]与向量输入进位96[0]是被作为可编程内部数据路径80[0]的一部分提供的多路复用器104(0)中的输入。还提供可由基于异或的门构成的负电路106(0),该电路根据输入107(0)生成负向量输入和94[0]'与负向量输入进位96[0]',作为对多路复用器104(0)的输入以用于需要负向量输入和94[0]'与负向量输入进位96[0]'的累加运算。多路复用器104(0)被配置成根据作为向量指令解码的结果而生成的选择器输入110(0)或者选择向量输入和94[0]与向量输入进位96[0]或者选择负向量输入和94[0]'与负向量输入进位96[0]'以便被提供给压缩器108(0)。就这一点而言,选择器输入110(0)允许进位保留累加器72[0]的可编程输入数据路径78[0]可编程,以便根据被配置成将由累加器块72执行的累加运算,或者将向量输入和94[0]与向量输入进位96[0]或者将负向量输入和94[0]'与负向量输入进位96[0]'提供给压缩器108(0)。
继续参考图8,在这一实施例中,进位保留累加器72[0]的压缩器108(0)是复杂门4:2压缩器。就这一点而言,压缩器108(0)被配置成在冗余进位保留运算中累加和与进位。压缩器108(0)被配置成将作为压缩器108(0)的四(4)个输入的当前的向量输入和94[0]与向量输入进位96[0],或当前的负向量输入和94[0]'与负向量输入进位96[0]',与之前的累加向量输入和94[0]与向量输入进位96[0]或者累加负向量输入和94[0]'与负向量输入进位96[0]'累加在一起。压缩器108(0)在可编程输出数据路径74[0]中提供累加向量输出和112(0)与累加向量输出进位114(0)作为累加器输出样本集76[0](见图3)以提供累加器输出样本集76(3)-76(0)。累加向量输出进位114(0)由位移位器116(0)在累加运算期间移位,以提供移位累加向量输出进位117(0)以便控制每一累加步骤期间的位宽度增长。例如,在这一实施例中,位移位器116(0)是以冗余进位保留格式熔合到压缩器108(0)的桶形移位器。以此方式,在累加器72[0]执行的累加运算期间,移位累加向量输出进位117(0)实际上被保留而不必被传播给累加向量输出和112(0)。以此方式,在这一实施例中,累加器块72中每一累加步骤期间与执行进位传播加法运算相关联的功率消耗和门延迟被消除。
附加的后续的向量输入和94[0]与向量输入进位96[0],或负向量输入和94[0]'与负向量输入进位96[0]',可与当前的累加向量输出和112(0)和当前的累加向量输出进位117(0)累加。向量输入和94[0]与向量输入进位96[0],或负向量输入和94[0]'与负向量输入进位96[0]',由作为可编程内部数据路径80[0]的一部分的多路复用器118(0)根据作为向量指令解码的结果而生成的和进位选择器120(0)来选择。当前的累加向量输出和112(0)与当前的移位累加向量输出进位117(0)可作为用于进位保留累加器72[0]的压缩器108(0)的输入提供,以便提供更新的累加向量输出和112(0)与累加向量输出进位114(0)。就这一点而言,和-进位选择器120(0)允许累加器72[0]的可编程内部数据路径80[0]可编程,以根据被配置成将由累加器块72执行的累加运算将向量输入和94[0]与向量输入进位96[0]提供给压缩器108(0)。在这一实施例中,还提供保持门122(0)、124(0),以使得多路复用器118(0)根据保持状态输入126(0),保持累加向量输出和112(0)与移位累加向量输出进位117(0)的当前状态,以便控制进位保留累加器72[0]中累加的运算时序。
继续参考图8,由控制门134(0)、136(0)以及134(1)、136(1)分别选通进位保留累加器72[0]的累加向量输出和112(0)与移位累加向量输出进位117(0),以及进位保留累加器72[1]的累加向量输出和112(1)与移位累加向量输出进位117(1)。控制门134(0)、136(0)以及134(1)、136(1)分别控制被返回给压缩器108(0)、108(1)的累加向量输出和112(0)与移位累加向量输出进位117(0),以及累加向量输出和112(1)与移位累加向量输出进位117(1)。
总而言之,采用图8中的累加器块72的累加器72[0]、72[1]的可编程输入数据路径78[0]、78[1]与可编程内部数据路径80[0]、80[1],累加器块72可被配置成不同模式。累加器块72可被配置成采用图8中所示的通用累加器电路,根据特定向量处理指令,提供不同的累加运算。以下在图9A-9C中示出,累加器块72被配置成采用通用累加器电路,根据特定向量处理指令,提供不同的累加运算的示例。
就这一点而言,图9A是图8中累加器块72的示意图。在这一示例中,累加器块72具有被编程以提供双24位累加器模式的可编程输入数据路径78[0]、78[1]与可编程内部数据路径80[0]、80[1]。图9A中累加器块72中的每一进位保留累加器72[0]、72[1]被配置成提供24位累加器。累加器72[0]、72[1]的24位累加容量由压缩器108(0)、108(1)的位容量提供。参考图8对于累加器72[0]、72[1]的讨论说明了图9A中累加器72[0]、72[1]提供的各个24位累加。在图9A中,分别在可编程累加数据路径132(0)与132(1)中,示出了用于提供累加块72中的双24位累加、由累加器72[0]、72[1]执行的累加的一般数据路径。
继续参考图9A,将描述进位保留累加器72[0]的示例性组件,但这些组件同等适用于进位保留累加器72[1]。在这一实施例中,由控制门134(0)、136(0)以及134(1)、136(1)分别选通进位保留累加器72[0]的累加向量输出和112(0)与移位累加向量输出进位117(0),以及进位保留累加器72[1]的累加向量输出和112(1)与移位累加向量输出进位117(1)。控制门134(0)、136(0)以及134(1)、136(1)分别控制被返回给压缩器108(0)、108(1)的累加向量输出和112(0)与移位累加向量输出进位117(0),以及累加向量输出和112(1)与移位累加向量输出进位117(1)。从向量指令的解码分别提供给控制门134(0)、136(0)以及134(1)、136(1)两者的控制输入138(0)、138(1)分别控制累加向量输出和112(0)与移位累加向量输出进位117(0),以及累加向量输出和112(1)与移位累加向量输出进位117(1)被返回给压缩器108(0)、108(1)。如以下参考图9B和9C更详细讨论地,控制输入138(0)、138(1)和控制门134(0)、136(0)控制累加器72[0]、72[1]是被编程为各自执行单独的累加运算还是执行组合的累加运算。因此,在这一实施例中,控制输入138(0)、138(1)以及控制门134(0)、136(0)和134(1)、136(1)分别构成累加器72[0]、72[1]的可编程内部数据路径80[0]、80[1]的一部分。
回来参考图8,累加器块72的可编程内部数据路径80[0]、80[1]还可被编程和/或重新编程以执行比个体累加器72[0]、72[1]的24位容量大的累加运算。就这一点而言,累加器72[0]、72[1]的可编程内部数据路径80[0]、80[1]可被编程以允许累加器72[0]、72[1]两者一起在单个向量累加运算中被采用。累加器72[0]、72[1]可被编程来提供比累加器72[0]、72[1]的个体位累加容量更大的位容量的单个累加运算。累加器72[0]、72[1]的可编程内部数据路径80[0]、80[1]可被配置成允许进位保留累加器72[0]传播溢出进位输出,作为来自压缩器108(0)的下一进位输出(NCO)137(0)。NCO 137(0)可作为下一进位输入(NCI)139(1)被提供给进位保留累加器72[1]中的压缩器108(1)。如之前参考图8所述,这种作为累加器72[0]、72[1]中的可编程内部数据路径80[0]、80[1]提供的,允许累加器72[0]、72[1]向24位进位与和累加提供24位溢出进位传播的进位传播配置能力在这一实施例中,提供40位累加。
就这一点而言,图9B是图8中的同一累加器块72的示意图。在图9B中,累加器块72被示为被配置成单个累加运算模式。在图9B中,累加器72[0]、72[1]具有被配置成用于在累加器块72中提供单个累加运算的可编程内部数据路径80[0]、80[1]。在累加器块72的单个累加器模式的这一示例中,累加器72[0]、72[1]累加单个40位累加向量输出和112与移位累加向量输出进位117。单个累加向量输出和112由作为可编程输出数据路径74[0]、74[1]中的累加器输出样本集76(也见图3)提供的累加向量输出和112(0)、112(1)构成。累加向量输出和112(0)包括单个40位累加向量输出和112的最低有效位。累加向量输出和112(1)包括单个40位累加向量输出和112的最高有效位。类似地,移位累加向量输出进位117由移位累加输出进位117(0)、117(1)构成。移位累加向量输出进位117(0)包括单个移位累加向量输出进位117的最低有效位。累加向量输出和114(1)包括单个40位累加向量输出进位114的最高有效位。在可编程输出数据路径74[0](见图3)中提供累加向量输出和114[0]与移位累加向量输出进位117(0)。
继续参考图9B,当累加器块72被配置成单个累加模式(例如,40位累加)时,累加器72[0]、72[1]执行的累加运算的一般数据路径被示为可编程累加数据路径146。就这一点而言,如前所述,累加器块72接收向量输入和94和向量输入进位96。进位保留累加器72[0]累加视情况而定来自向量输入和94[0]与向量输入进位96[0],或负向量输入和94[0]'与负向量输入进位96[0]'的累加的累加向量输出和112(0)与累加向量输出进位114(0)的最低有效位。进位保留累加器72[1]累加视情况而定来自向量输入和94[0]与向量输入进位96[0],或负向量输入和94[0]'与负向量输入进位96[0]'的累加的累加向量输出和112(1)与累加向量输出进位114(1)的最高有效位。
继续参考图9B,为了编程累加器72[0]、72[1]以提供单个累加向量输出和112和累加向量输出进位114,累加器72[0]、72[1]的可编程内部数据路径80[0]、80[1]被编程为提供单个累加运算。就这一点而言,进位保留累加器72[0]的压缩器108(0)的NCO 137(0)和进位保留累加器72[1]的压缩器108(1)的NCI 139(1)被配置成用于提供累加器块72中的单个累加器(例如,40位累加器)。进位保留累加器72[1]的NCI 139(1)由NCI门140(1)用NCI控制输入142(1)选通。以此方式,当期望累加器块72中的累加器72[0]、72[1]提供采用从进位保留累加器72[0]到进位保留累加器72[1]的溢出进位传播的单个累加运算时,可使得NCI控制输入142(1)活动,以作为进位保留累加器72[1]的可编程内部数据路径80[1]的一部分。NCI控制输入142(1)使得NCI门140(1)允许从压缩器108(0)到压缩器108(1)的溢出进位传播。NCI控制输入142(1)还被耦合至进位保留累加器72[0]中压缩器108(0)的进位传播输入144(0),以使得压缩器108(0)生成NCO 137(0)作为对压缩器108(1)的NCI 139(1)。这些配置允许进位保留累加器72[1]以可提供单个累加向量输出和112和累加向量输出进位114的方式累加向量输入和94[1]与向量输入进位96[1]。
注意,如图9B中所示,累加器块72中的进位保留累加器72[1]还包括由NCI 139(0)以及NCI控制输入142(0)选通的NCI门140(0)。然而,在这一实施例中,NCI控制输入142(0)和NCI 139(0)均被绑定至逻辑'0',因为进位保留累加器72[0]累加单个累加运算的最低有效位。还注意到,进位保留累加器72[1]的压缩器108(0)还包括进位传播输入144(1),但在这一实施例中,进位传播输入144(1)被绑定至逻辑'0'使得累加器72(1)不生成NCO 12(1)。在这一实施例中,进位保留累加器72[1]不需要执行对下一累加器的进位传播,因为在累加器块72的这一实施例中,没有提供除进位保留累加器72[1]以外的另一累加器。
图9C是图8中同一累加器块72的另一累加器模式的示意图。就这一点而言,图9C是图8中累加器块72的示意图,该累加器块具有被编程的数据路径配置以提供进位保留加法器继之以单个累加器,以便提供累加器块72中的另一累加模式。一些累加运算可能需要额外的加法器来执行复数算术。在图9C中,累加器72[0]、72[1]具有被配置成用于提供16位进位保留加法器继之以单个24位累加器的可编程内部数据路径80[0]、80[1]。
参考图9C,当累加器块72被配置成进位保留加法器继之以单个累加器时,累加器72[0]、72[1]执行的累加的一般数据路径由可编程数据路径148示出。就这一点而言,和-进位选择器120(0)作为向量指令解码的结果被生成,以使得多路复用器118(0)向控制门134(0)、136(0)提供向量输入和94[1]与向量输入进位96[0]。使控制输入138(0)活动,以编程进位保留累加器72[0]的可编程内部数据路径80[1],以便使得控制门134(0)、136(0)向压缩器108(0)提供向量输入和94[1]与向量输入进位96[1]。由进位保留累加器72[0]的压缩器108(0)将向量输入和94[1]与向量输入进位96[1]同向量输入和94[0]与向量输入进位96[1]累加,以提供累加向量输出和112(0)与累加向量输出进位114(0)。累加向量输出和112(0)与移位累加向量输出进位117(0)被作为可编程输出数据路径74[0]中的累加器输出样本集76[0](也见图3)提供,以提供进位保留加法器。如可编程数据路径148中所示,移位累加向量输出进位117(0)还被提供给进位保留累加器72[1],以便由多路复用器104(1)提供给压缩器108(1)以累加到向量输入和94[1]与向量输入进位96[1],以便作为24位累加器将累加向量输出和112(1)与移位累加向量输出进位117(1)提供为可编程输出数据路径74[1]中的累加器输出样本集76[1](也见图3)。
如上在图5-9C中所述,VPE 22中提供的乘法器块62(0-A)和累加器块72(0-A)还可被方便地编程以提供基-2X蝶形向量运算。基-2X蝶形向量运算可被用于执行FFT向量处理运算。FFT运算通常在各种数字信号处理应用中执行,诸如线性滤波、相关性分析和频谱分析。因此,提供可在减少的处理时间并以功率高效的方式执行FFT向量处理运算的VPE是有利的。
如所公知地,离散FFT(DFT)可通过给定长度N的另一数据序列{x(n)},根据以下公式计算N个复值数字的序列{X(k)}来计算:
WN=e-j2π/N
从以上X(k)的公式观察到,对每一k值,X(k)的直接计算涉及N次复数乘法(4N次实数乘法)以及N-1次复数加法(4N-2次实数加法)。因此,为计算DFT的所有N个值,需要N2次复数乘法以及N2-N次复数加法。通过认识到以下示出的相位因子WN的对称性和周期性,可采用各个击破的方法来计算N=2X个点DFT。
对称性:
周期性:
N个点的数据序列被划分成两个N/2点的数据序列f1(n)和f2(n),分别对应于x(n)的偶数和奇数样本,即:
f1(n)=x(2n)
f2(n)=x(2n+1),n=0,1,...,N/2-1
或
采用WN 2=WN/2代入,以上的后一等式可被表示为:
由于F1(k)和F2(k)是周期性的,对于周期N/2,F1(k+N/2)=F1(k)且F2(k+N/2)=F2(k)。此外,旋转因子是WN k+N/2=-WN k。由于等式可被如下表示,得到乘法次数从N2到N/2log2N次乘法的简并。
就这一点而言,如将在以下参考图10-12更详细描述地,VPE 22可采用可用于提供其它算术逻辑向量运算的相同的乘法器块62(0-A)和累加器块72(0-A)来提供FFT运算。乘法器块62(0)-62(A)(见图3)中每一乘法器块84(0)-84(3)(见图6)的相应的可编程数据路径90(3)-90(0)、91和92(3)-92(0)可被编程为根据正在执行的具体基-2X蝶形向量指令来为基-2X蝶形向量运算的点提供乘法。累加器块72(0)-72(A)(见图3)的可编程输入数据路径78(0)-78(A)、内部数据路径80(0)-80(A)和/或输出数据路径74(0)-74(A)可被编程以根据正在执行的基-2X蝶形向量指令来累加来自多个乘法器块62(0)-62(A)之中的乘法器块62的基-2X蝶形乘积。累加器块72(0)-72(A)的可编程输入数据路径78(0)-78(A)、内部数据路径80(0)-80(A)和/或输出数据路径74(0)-74(A)还可在其它周期中被重新编程以根据正在执行的基-2X蝶形向量指令,来累加来自多个乘法器块62(0)-62(A)之中的其它乘法器块62的基-2X蝶形乘积。由累加器块72(0)-72(A)累加的最终累加的基-2X蝶形乘积可提供N点FFT向量处理运算。
乘法器块62(0)-62(A)和累加器块72(0)-72(A)还可被配置成其它相关的FFT运算,诸如带有缩放的FFT、带有乘法的FFT、带有相位斜坡乘法的FFT、内插FFT、快速卷积和FHT变换。作为结果,较少的VPE可在向量处理器中提供所需的基-2X蝶形向量运算以及其它类型的算术逻辑向量运算,由此节省了向量处理器中的面积而仍保留与标量处理引擎相比较少的寄存器写以及较快的向量指令执行时间的向量处理优点。
当DFT中数据点的数目N是4的幂(即,N=4X)时,可采用基-2算法进行计算。然而,对这种情况,采用基-2X FFT算法是更为计算高效的。例如,基-4FFT算法可通过将N点输入序列拆分或抽取成四个子序列x(4n)、x(4n+1)、x(4n+2)、x(4n+3),n=0、1、...N/4-1来提供。
p=0,1,2,3;l=0,1,2,3;
且
x(l,m)=x(4m+1)
因此,从以上等式获得的四个N/4点DFT F(l,q)被组合以产生N点DFT。用于组合N/4点DFT的表达式定义了基-4时间抽取蝶形运算,该运算可如下被表示成矩阵形式:
以上所示的基-4蝶形运算矩阵可被求解以将所提供的N/4个点重新组合作为N点DFT中针对点q的单个点。为针对所有点q求解整个DFT,为N点DFT计算的单个点可被累加。
就这点而言,图10是图3中VPE 22的概念示意图,其中乘法向量处理级60(1)(见图5)中的乘法器84,与累加向量处理级60(2)(见图8)中并行的两个累加器块72(0)、72(1)熔合,以形成基蝶形电路146来对以上所示的基-4蝶形运算矩阵求解。参考图10,基蝶形电路146被配置成或者执行基-2蝶形向量运算或者执行基-4蝶形向量运算。在这一实施例中,为要与四个累加器,即累加器块72[1]中的累加器72[1][1]、72(1)(0)以及累加器块72[0]中的累加器72(0)(1)、72(0)(0)熔合的乘法器块62而对VPE 22编程,这些累加器块被配置成冗余进位保留格式以便提供基蝶形电路146。对能够被配置成冗余进位保留格式的累加器块72的讨论以上参考图7-9C在前文进行了讨论。乘法器块84可提供单个向量数据输入样本集66(即,N/4基点)乘以四(4)个旋转因子的四(4)个乘积,以提供N点DFT的一个点。乘法器块62中被编程以便被包括在基蝶形电路146中的乘法器84的数目基于将在根据正在执行的具体基蝶形向量指令执行基蝶形向量运算中使用的位宽度向量数据输入样本集66。
继续参考图10,在VPE 22中提供旋转因子生成器148(3)-148(0)。旋转因子生成器148(3)-148(0)分别在蝶形道149(3)-149(0)中生成旋转因子WN q,以便被提供给乘法器块62中被编程以被包括在基蝶形电路146中的乘法器84。通过提供旋转因子生成器148(3)-148(0),基蝶形向量运算的旋转因子WN q可被提供。如果基蝶形电路146被配置用于基-2蝶形向量运算,仅需来自旋转因子生成器148(0)的单个旋转因子WN 0,它是单位一(“1”)。然而,如果基蝶形电路146被配置用于基-4蝶形向量运算,则根据以下的旋转因子矩阵需要将由旋转因子生成器148(3)-148(0)生成的四个旋转因子WN 3-WN 0。
在这一实施例中,图10中的同一乘法器块62被重复四(4)次,并被熔合到四个累加器72(1)(1)、72(1)(0)、72(0)(1)、72(0)(0)。这是因为在这一实施例中,基蝶形电路146可被配置,其中单个乘法器块62可提供单个向量数据输入样本集66(即,N/4基点)乘以四(4)个旋转因子的四(4)个乘积,以提供N点DFT的一个点。乘法器块62中被编程以便被包括在基蝶形电路146中的乘法器84的数目基于将在根据正在执行的具体基蝶形向量指令执行基蝶形向量运算中使用的位宽度向量数据输入样本集66。而且,尽管图10中基蝶形电路146中累加器块72[1]中的每一累加器72[1][1]、72[1][0]以及累加器块72[0]中的累加器72[0](1)、72[0](0)被编程来累加N/4基点,但取决于基蝶形运算的位宽度,附加的累加器块72可被编程以便被包括在基蝶形电路146中。
而且,在这一实施例中,图10中的基蝶形电路146每个时钟周期可为N点基-4蝶形运算提供N/2log2N次乘法以及四(4)次累加。因此,仅需四(4)个时钟周期即可完成N点基-4蝶形向量运算的一个蝶形运算。这与基-2蝶形运算的吞吐量相同。因此,基蝶形电路146可在N个时钟周期中完成基-4蝶形向量运算。还注意到,根据此处各实施例的VPE 22可被配置成根据乘法器块62(0)-62(A)和累加器块72(0)-72(A)的数据路径配置,提供多个基蝶形电路146。因此,如果VPE 22可被配置成每个时钟周期执行M个N点基蝶形向量运算,诸如作为示例执行基-16蜻蜓向量运算,则VPE 22执行N点基-4蝶形事务的总的时钟周期计数被减少为(N/2 Log2 N)/M。此外,通过将乘法器块62与被配置成冗余进位保留格式的累加器块72[91]、72[0]熔合,如前所述,不要求在每一累加步骤期间提供进位传播路径和进位传播加法运算,从而节省了额外的处理时间和功率消耗。
为提供进一步说明,图11是图10中的基蝶形电路146的一个周期的示意图,该电路被配置成或者执行基-2蝶形向量运算或者执行基-4蝶形向量运算。将首先描述被配置成执行基-2蝶形向量运算的基蝶形电路146的描述,然后是基-4蝶形向量运算描述。就基-2蝶形向量运算而言,如上所述,要求解以下等式以提供N点基-2蝶形运算。
继续参考图11,在乘法向量处理级60(1)中接收到向量数据输入样本集66[1]、66[0]。向量数据输入样本集66[1]、66[0]由被划分成两个N/2点的数据序列F1(k)和F2(k)的DFT点构成,这两个序列对应于X(k)的偶数和奇数样本或点。‘k’表示序列中的一个N/2点,该点在每一周期累加。乘法器84正常需要提供两(2)次乘法来使F2(k)乘以作为蝶形道149上的输入的旋转因子W的‘e’分量和幂分量,以提供向量乘法输出样本集68[0](即WN kF2(k))。然而,在这一示例中,由于基-2蝶形运算的旋转因子是单位一,乘法器84可仅被用于使F2(k)乘以‘e’。因此,节省了对乘法器84中间乘法结果的寄存器保存。累加器72[1](1)使向量乘法输出样本集68[0]加到数据点F1(k)以提供偶数序列X(k)中的N/2点,作为累加向量输出和112[1](1)与累加向量输出进位117[1](1)。累加器72[0](1)使向量乘法输出样本集68[0]加到数据点F1(k)的负以提供奇数序列X(k+N/2)中的N/2点,作为累加向量输出和112[0](1)与累加向量输出进位117[0](1)。负电路106[0](1)在数据点F1(k)被加到向量乘法输出样本集68[0]之前对数据点F1(k)取负。附加的向量数据输入样本集66[1]、66[0]被接收到并被提供给累加器72[1](1)、72[0](1),并分别与累加向量输出和112[1](1)与累加向量输出进位117[1](1)、以及累加向量输出和112[0](1)与累加向量输出进位117[0](1)累加,直到数据序列被求和以提供分别表示偶数序列X(k)和奇数序列X(k+N/2)的求和的最终累加输出样本集76[1](1)、76[1](0)。
如上所述,基蝶形电路146还可被编程来提供基-4蝶形向量运算。就这一点而言,在乘法向量处理级60(1)中接收到包含向量格式的N/4基点的向量数据输入样本集66[0]。向量数据输入样本集66[0]由被划分成X(k)的样本或点的N/4点数据序列F2(k)的DFT点构成。‘k’表示序列中的一个N/4点,该点在每一周期累加。乘法器84正常将执行两次乘法以将F2(k)乘以‘e’分量,并确定旋转因子的幂分量(即WN k),以提供向量乘法输出样本集68[0](即,WN k F2(k))。然而,由于基-4蝶形运算仅包括四个可能的旋转因子1、-1、j、-j,可通过简单地提供F2(k)的负用于乘以旋转因子-1的乘法,提供F2(k)的交换用于乘以旋转因子j的乘法,以及提供F2(k)的负和交换用于乘以旋转因子-j的乘法,来避免旋转因子的幂分量的复数乘法。可在基蝶形电路146的相位斜坡运算期间对F2(k)的负和/或交换进行编程,使得乘法器84可改为仅在第一周期期间被用于执行F2(k)乘以旋转因子的‘e’分量的乘法,来进一步节省寄存器保存和功率消耗。
就这一点继续参考图11,累加器72[1](1)将总是根据以下再现的基-4旋转因子矩阵的第1行提供旋转因子1。然而,累加器72[1](0)必须能够根据以下重现的基-4旋转因子矩阵的第2行提供基-4旋转因子的任何旋转因子。因此,累加器72[1](0)包括负电路106[1](0)和交换电路109[1](0),该累加器被控制来根据基-4旋转因子的每一个向累加器块72[1]中的累加器72[1][1]、72[1][0]以及累加器块72[0]中的累加器72[0](1)、72[0](0)提供+F2(k)、-jF2(k)、-F2(k)和+jF2(k),以分别用于每一N/4点序列的累加。累加器72[0](1)必须能够根据以下重现的基-4旋转因子矩阵的第3行提供基-4旋转因子的任何旋转因子。因此,累加器72[0](1)仅需负电路106[0](1)来向累加器72[1](1)、72[0](1)提供+F2(k)以及向累加器72[1](0)、72[0](0)提供-F2(k),以分别用于每一N/4点序列的累加。累加器72[0](0)必须能够根据以下重现的基-4旋转因子矩阵的第4行提供基-4旋转因子的任何旋转因子。因此,累加器72[0](0)包括负电路106[0](0)和交换电路109[0](0),该累加器被控制来根据基-4旋转因子的每一个向累加器块72[1]中的累加器72[1][1]、72[1][0]以及累加器块72[0]中的累加器72[0](1)、72[0](0)提供+F2(k)、+jF2(k)、-F2(k)和-jF2(k),以分别用于每一N/4点序列的累加。
因此,总而言之,图11中基蝶形电路146中的累加器72[1][1]、72[1][0]、72[0](1)、72[0](0)被编程来执行基-4蝶形向量运算,将如下在四(4)个周期上执行以下计算。这些计算被累加以提供四(4)个N/4累加点序列,这些序列然后可被累加在一起以解决FFT。
VPE 22还可被编程以执行至多四(4)个如图11中的基蝶形电路146的基蝶形电路,以提供基-16蝶形运算(也被称为“蜻蜓运算”)的能力。在这一情形中,旋转因子变得比单单+1、=1、+j、-j更复杂,从而需要每一基蝶形电路146中乘法器84更复杂的乘法。
具有用于提供多模基-2X蝶形向量处理运算的可编程数据路径配置、并根据此处讨论的概念和实施例的VPE,包括但不限于图2和3中的VPE 22,可被设置或集成到任何基于处理器的设备中。不作为限定的示例包括机顶盒、娱乐单元、导航设备、通信设备、固定位置数据单元、移动位置数据单元、移动电话、蜂窝电话、计算机、便携式计算机、台式计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频光碟(DVD)播放器和便携式数字视频播放器。
就这一点而言,图12图示了基于处理器的系统150的示例。在这一示例中,基于处理器的系统150包括一个或多个处理单元(PU)152,各自包括一个或多个处理器或核154。作为非限定性示例,PU 152可以是图2中的基带处理器20。作为非限定性示例,处理器54可以是如图2中提供的基带处理器20的向量处理器。就这一点而言,处理器154还可包括VPE 156,包括但不限于图2中的VPE 22。PU 152可具有耦合到处理器154、用于对临时存储的数据的快速访问的高速缓存存储器158。PU 152被耦合到系统总线160,且可交互耦合被包括在基于处理器的系统150中的主设备和从设备。如公知地,PU 152通过在系统总线160上交换地址、控制和数据信息来与这些其它设备通信。例如,PU 152可向作为从设备的示例的存储器控制器162传输总线事务请求。尽管未在图12中图示,可提供多个系统总线160,其中每一系统总线160构成不同的组织。
其它主设备和从设备可被连接到系统总线160。如图12中所示,这些设备可例如包括存储器系统164、一个或多个输入设备166、一个或多个输出设备168、一个或多个网络接口设备170以及一个或多个显示控制器172。存储器系统164可包括可由存储器控制器162访问的存储器165。输入设备166可包括任何类型的输入设备,包括但不限于:输入按键、开关、语音处理器等。输出设备168可包括任何类型的输出设备,包括但不限于:音频、视频、其它视觉指示器等。网络接口设备170可以是被配置成允许与网络174交换数据的任何设备。网络174可以是任何类型的网络,包括但不限于:有线或无线网络、私有或公共网络、局域网(LAN)、广域网(WLAN)和因特网。网络接口设备170可被配置成支持所需的任何类型的通信协议。
PU 152还可被配置成通过系统总线160访问显示控制器172以控制发送给一个或多个显示器178的信息。显示控制器172经由一个或多个视频处理器170向显示器178发送要显示的信息,视频处理器将要被显示的信息处理成适于显示器178的格式。显示器178可包括任何类型的显示器,包括但不限于:阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
本领域的技术人员将理解,结合此处公开的双电压域存储器缓冲区的实施例描述的各种说明性逻辑块、模块、电路和算法可被实现为电子硬件、存储在存储器中或另一计算机可读介质中并由处理器或其它处理器设备执行的指令、或其组合。此处描述的仲裁器、主设备和从设备可例如在任何电路、硬件组件、集成电路(IC)或IC芯片中被采用。此处公开的存储器可以是任何类型和大小的存储器,且可被配置成存储所需的任何类型的信息。为清楚地说明这一可互换性,以上已经以其功能的形式一般地描述了各种说明性组件、框、模块、电路、和步骤。此类功能如何被实现取决于施加在整体系统上的具体应用、设计选择和/或设计约束。技术人员可针对每一具体应用以不同方式来实现所描述的功能,但此类实现决策不应被解读为致使脱离本公开的范围。
结合本文所公开的实施例描述的各种说明性逻辑块、模块、和电路可用设计成执行本文所描述的功能的处理器、DSP、专用集成电路(ASIC)、FPGA或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件、或其任何组合来实现或执行。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核协同的一个或多个微处理器或任何其它此类配置。
此处公开的各实施例可被实现为硬件和被存储在硬件中的指令,这些指令可例如驻留在随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其它形式的存储介质中。示例性存储介质被耦合到处理器,以使得处理器能从/向该存储介质读取/写入信息。替换地,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在远程站中。在替换方案中,处理器和存储介质可作为分立组件驻留在远程站、基站或服务器中。
还注意到,在此处的任何示例性实施例中描述的操作步骤被描述以提供示例和讨论。所描述的操作可在除了所示顺序以外的各种不同顺序中执行。而且,在单个操作步骤中描述的操作实际上可在多个不同步骤中执行。另外,在示例性实施例中讨论的一个或多个操作步骤可被组合。可以理解,如对本领域的技术人员显而易见地,在流程图中图示的操作步骤可进行各种不同的修改。本领域技术人员还将理解,可使用各种不同技术中的任何一种来表示信息和信号。例如,贯穿以上描述被述及的数据、指令、命令、信息、信号、位、码元、和芯片可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子、或其任何组合来表示。
提供对本公开的先前描述是为了使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其它变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中公开的原理和新颖特征一致的最广义的范围。
Claims (31)
1.一种被配置成提供至少一个多模基-2X蝶形向量处理电路的向量处理引擎(VPE),包括:
至少一个乘法向量处理级,包括至少一个乘法器块,所述乘法器块被配置成:
从多个输入数据路径之中的第一输入数据路径接收来自多个基向量数据输入样本集的基向量数据输入样本集;
根据所述至少一个乘法向量处理级执行的基蝶形向量指令,基于可编程乘法数据路径配置将所述基向量数据输入样本集与旋转因子分量相乘以在多个乘法输出数据路径中提供基向量乘法输出样本集;以及
包括多个累加器块的至少一个累加向量处理级,所述多个累加器块之中的每一累加器块被配置成:
基于累加器可编程累加器数据路径配置从所述多个乘法输出数据路径之中的乘法输出数据路径接收多个基向量乘法输出样本集;
基于所述累加器可编程累加器数据路径配置,累加所接收到的多个基向量乘法输出样本集以提供基向量累加结果样本集;并且
在多个输出数据路径之中的输出数据路径中提供所述基向量累加结果样本集;以及
输出处理级,被配置成从所述多个累加器块中的每一累加器块接收所述多个基向量累加结果样本集。
2.如权利要求1所述的VPE,其特征在于,还包括至少一个加法器,所述加法器被配置成使所述多个基向量累加结果样本集相加以便为所述基蝶形向量指令提供基蝶形结果。
3.如权利要求1所述的VPE,其特征在于,所述旋转因子分量为‘e’。
4.如权利要求1所述的VPE,其特征在于,所述多个累加器块之中的每一累加器块还被配置成根据所述基蝶形向量指令,基于每一累加器块的所述可编程累加器数据路径配置,对所接收到的多个基向量乘法输出样本集应用旋转因子输入。
5.如权利要求4所述的VPE,其特征在于,所述多个累加器块之中的每一累加器块还包括负电路,所述负电路被配置成根据所述基蝶形向量指令,基于每一累加器块的所述可编程累加器数据路径配置,对所述多个基向量乘法输出样本集之中的所接收到的基向量乘法输出样本集取负以便应用为负一(-1)的旋转因子输入。
6.如权利要求5所述的VPE,其特征在于,所述多个累加器块之中的每一累加器块还包括交换电路,所述交换电路被配置成根据所述基蝶形向量指令,基于每一累加器块的所述可编程累加器数据路径配置,将所述取负的基向量乘法输出样本集转换成取负的复数基向量乘法输出样本集,以便应用为‘-j’的旋转因子输入。
7.如权利要求4所述的VPE,其特征在于,所述多个累加器块之中的每一累加器块还包括交换电路,所述交换电路被配置成根据所述基蝶形向量指令,基于每一累加块的所述可编程累加器数据路径配置,将所述多个基向量乘法输出样本集之中的所接收到的基向量乘法输出样本集转换成复数基向量乘法输出样本集,以便应用为‘j’的旋转因子输入。
8.如权利要求4所述的VPE,其特征在于,所述多个累加器块之中的每一累加器块被配置成根据基-2蝶形向量指令,基于每一累加器块的所述可编程累加器数据路径配置,对所接收到的多个基向量乘法输出样本集应用所述旋转因子输入作为基-2蝶形旋转因子输入。
9.如权利要求4所述的VPE,其特征在于,所述多个累加器块之中的每一累加器块被配置成根据基-4蝶形向量指令,基于每一累加器块的所述可编程累加器数据路径配置,对所接收到的多个基向量乘法输出样本集应用所述旋转因子输入作为基-4蝶形旋转因子输入。
10.如权利要求4所述的VPE,其特征在于,还包括被配置成生成所述旋转因子输入的旋转因子生成器。
11.如权利要求1所述的VPE,其特征在于,所述至少一个乘法器块由多个乘法器块构成,以提供多个多模基-2X蝶形向量处理电路。
12.如权利要求1所述的VPE,其特征在于,所述可编程乘法数据路径配置和所述可编程累加器数据路径配置各自被配置成基于所执行的基蝶形向量指令来被重新配置。
13.如权利要求12所述的VPE,其特征在于,所述可编程乘法数据路径配置和所述可编程累加器数据路径配置各自被配置成针对所述VPE执行的每一基蝶形向量指令来被重新配置。
14.如权利要求13所述的VPE,其特征在于,所述可编程乘法数据路径配置和所述可编程累加器数据路径配置各自被配置成在所述VPE执行的所述基蝶形向量指令的每一时钟周期上被重新配置。
15.如权利要求1所述的VPE,其特征在于,所述多个累加器块之中的每一累加器块包括至少一个进位保留累加器,所述进位保留累加器各自被配置成:
接收所述多个基向量乘法输出样本集,所述样本集各自包括至少一个基向量输入和与至少一个基向量输入进位;
接收至少一个之前累加的基向量输出和与至少一个之前累加的基向量输出进位;
累加由累加到所述至少一个之前累加的基向量输出和的所述至少一个基向量输入和构成的至少一个当前累加的基向量输出和,作为至少一个当前基向量累加输出和;
累加由累加到所述至少一个之前累加的基向量输出进位的所述至少一个基向量输入进位构成的至少一个当前累加的基向量输出进位,作为至少一个当前累加的基向量输出进位;以及
在所述多个输出数据路径之中的所述输出数据路径中提供所述至少一个当前累加的基向量输出和与所述至少一个当前累加的基向量输出进位作为所述基向量累加结果样本集之中的至少一个基向量累加结果样本集。
16.如权利要求15所述的VPE,其特征在于,所述至少一个进位保留累加器被配置成,不将所述至少一个之前累加的基向量输出进位传播到所述至少一个基向量输入和与所述至少一个基向量输入进位。
17.如权利要求15所述的VPE,其特征在于,所述至少一个进位保留累加器还被配置成,在第一向量累加数据路径中维持所述至少一个当前累加的基向量输出和,并在与所述第一向量累加数据路径分开的第二向量累加数据路径中维持所述至少一个当前累加的基向量输出进位。
18.如权利要求15所述的VPE,其特征在于,所述至少一个进位保留累加器包括至少一个压缩器,所述压缩器被配置成:
接收所述至少一个基向量输入和与所述至少一个基向量输入进位;
接收所述至少一个之前累加的基向量输出和与所述至少一个之前累加的基向量输出进位;
生成由累加到所述至少一个之前累加的基向量输出和的所述至少一个基向量输入和构成的所述至少一个当前累加的基向量输出和,作为所述至少一个当前基向量累加输出和;以及
生成由累加到所述至少一个之前累加的基向量输出进位的所述至少一个基向量输入进位构成的所述至少一个当前累加的基向量输出进位,作为所述至少一个当前累加的基向量累加输出进位。
19.如权利要求18所述的VPE,其特征在于,所述至少一个压缩器由至少一个4:2压缩器构成。
20.如权利要求1所述的VPE,其特征在于,还包括输入读级,所述输入读级被配置成在所述多个输入数据路径之中的输入数据路径中提供向量数组宽度的所述多个基向量数据输入样本集。
21.如权利要求1所述的VPE,其特征在于,所述多个累加器块不被配置成在向量寄存器中存储所接收到的多个基向量乘法输出样本集。
22.如权利要求1所述的VPE,其特征在于,所述至少一个多模基-2X蝶形向量处理电路被配置成执行快速傅立叶变换(FFT)向量指令。
23.如权利要求1所述的VPE,其特征在于,所述至少一个基-2X蝶形向量处理电路被配置成执行内插FFT向量指令。
24.一种被配置成提供至少一个多模基-2X蝶形向量处理电路的向量处理引擎(VPE),包括:
至少一个乘法向量处理级装置,包括至少一个乘法器块装置,所述乘法器块装置被配置成:
从多个输入数据路径之中的第一输入数据路径接收来自多个基向量数据输入样本集的一基向量数据输入样本集;并且
根据所述至少一个乘法向量处理级装置执行的基蝶形向量指令,基于可编程乘法数据路径配置将所述基向量数据输入样本集与旋转因子分量相乘以在多个乘法输出数据路径中提供一基向量乘法输出样本集;以及
包括多个累加器块装置的至少一个累加向量处理级装置,所述多个累加器块装置之中的每一累加器块装置被配置成:
基于可编程累加器数据路径配置从所述多个乘法输出数据路径之中的一乘法输出数据路径接收多个基向量乘法输出样本集;
基于所述可编程累加器数据路径配置,累加所接收到的多个基向量乘法输出样本集以提供基向量累加结果样本集;并且
在多个输出数据路径之中的一输出数据路径中提供所述基向量累加结果集;以及
输出处理级装置,被配置成从所述多个累加器块中的每一累加器块接收多个基向量累加结果样本集。
25.一种在向量处理引擎(VPE)中的多模基-2X蝶形向量处理电路处理中处理基-2X向量数据的方法,包括:
从至少一个乘法向量处理级中的至少一个乘法器块中的多个输入数据路径之中的第一输入数据路径接收来自多个基向量数据输入样本集中的基向量数据输入样本集;
在所述至少一个乘法器块中,根据所述至少一个乘法向量处理级执行的基蝶形向量指令,基于可编程乘法数据路径配置将所述基向量数据输入样本集与旋转因子分量相乘以在多个乘法输出数据路径中提供基向量乘法输出样本集;
在至少一个累加向量处理级中的多个累加器块之中的每一累加器块中,基于累加器可编程累加器数据路径配置从所述多个乘法输出数据路径之中的乘法输出数据路径接收多个基向量乘法输出样本集;
基于所述累加器可编程累加器数据路径配置,累加所接收到的多个基向量乘法输出样本集以提供基向量累加结果样本集;
在多个输出数据路径之中的输出数据路径中提供所述基向量累加结果样本集;以及
在输出处理级中,从所述多个累加器块中的每一累加器块接收多个基向量累加结果样本集。
26.如权利要求25所述的方法,其特征在于,还包括使所述多个基向量累加结果样本集相加以便为所述基蝶形向量指令提供基蝶形结果。
27.如权利要求25所述的方法,其特征在于,还包括根据所述基蝶形向量指令,基于每一累加器块的所述可编程累加器数据路径配置,向所接收到的多个基向量乘法输出样本集应用旋转因子输入。
28.如权利要求27所述的方法,其特征在于,还包括根据所述基蝶形向量指令,基于每一累加器块的所述可编程累加器数据路径配置,对所述多个基向量乘法输出样本集之中所接收到的基向量乘法输出样本集取负,以应用为负一(-1)的所述旋转因子输入。
29.如权利要求28所述的方法,其特征在于,还包括根据所述基蝶形向量指令,基于每一累加器块的所述可编程累加器数据路径配置,交换所接收到的基向量乘法输出样本集以将所述取负的基向量乘法输出样本集转换成取负的复数基向量乘法输出样本集,以应用为‘-j’的所述旋转因子输入。
30.如权利要求27所述的方法,其特征在于,还包括根据所述基蝶形向量指令,基于每一累加器块的所述可编程累加器数据路径配置,交换所述基向量乘法输出样本集以将所述多个基向量乘法输出样本集之中所接收到的基向量乘法输出样本集转换成复数基向量乘法输出样本集,以应用为‘j’的所述旋转因子输入。
31.如权利要求25所述的方法,其特征在于,还包括不在向量寄存器中存储所接收到的多个基向量乘法输出样本集。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/798,599 | 2013-03-13 | ||
US13/798,599 US9275014B2 (en) | 2013-03-13 | 2013-03-13 | 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 |
PCT/US2014/021782 WO2014164298A2 (en) | 2013-03-13 | 2014-03-07 | 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 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104969215A true CN104969215A (zh) | 2015-10-07 |
CN104969215B CN104969215B (zh) | 2017-12-01 |
Family
ID=50473780
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480007022.9A Expired - Fee Related CN104969215B (zh) | 2013-03-13 | 2014-03-07 | 具有用于提供蝶形向量处理电路的可编程数据路径的向量处理引擎以及相关的向量处理器、系统和方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9275014B2 (zh) |
EP (1) | EP2972988A2 (zh) |
JP (1) | JP2016514330A (zh) |
KR (1) | KR20150132287A (zh) |
CN (1) | CN104969215B (zh) |
TW (1) | TWI601066B (zh) |
WO (1) | WO2014164298A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110780842A (zh) * | 2019-10-25 | 2020-02-11 | 无锡恒鼎超级计算中心有限公司 | 基于神威架构的船舶三维声弹性模拟计算的并行优化方法 |
CN111213125A (zh) * | 2017-09-08 | 2020-05-29 | 甲骨文国际公司 | 使用simd指令进行高效的直接卷积 |
WO2021038337A1 (en) * | 2019-08-29 | 2021-03-04 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
CN112800387A (zh) * | 2021-03-30 | 2021-05-14 | 芯翼信息科技(上海)有限公司 | 基-6蝶形运算单元、方法、电子设备及存储介质 |
US12061910B2 (en) | 2019-12-05 | 2024-08-13 | International Business Machines Corporation | Dispatching multiply and accumulate operations based on accumulator register index number |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
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 |
US9792118B2 (en) | 2013-11-15 | 2017-10-17 | Qualcomm Incorporated | Vector processing engines (VPEs) employing a tapped-delay line(s) for providing precision filter vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods |
US9619227B2 (en) | 2013-11-15 | 2017-04-11 | Qualcomm Incorporated | Vector processing engines (VPEs) employing tapped-delay line(s) for providing precision correlation / covariance vector processing operations with reduced sample re-fetching and power consumption, and related vector processor systems and methods |
US9977676B2 (en) | 2013-11-15 | 2018-05-22 | Qualcomm Incorporated | Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods |
US9880845B2 (en) | 2013-11-15 | 2018-01-30 | Qualcomm Incorporated | Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods |
US11544214B2 (en) | 2015-02-02 | 2023-01-03 | Optimum Semiconductor Technologies, Inc. | Monolithic vector processor configured to operate on variable length vectors using a vector length register |
US9952865B2 (en) | 2015-04-04 | 2018-04-24 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file |
US11847427B2 (en) | 2015-04-04 | 2023-12-19 | Texas Instruments Incorporated | Load store circuit with dedicated single or dual bit shift circuit and opcodes for low power accelerator processor |
US9817791B2 (en) | 2015-04-04 | 2017-11-14 | Texas Instruments Incorporated | Low energy accelerator processor architecture with short parallel instruction word |
US10349251B2 (en) * | 2015-12-31 | 2019-07-09 | Cavium, Llc | Methods and apparatus for twiddle factor generation for use with a programmable mixed-radix DFT/IDFT processor |
US10311018B2 (en) * | 2015-12-31 | 2019-06-04 | Cavium, Llc | Methods and apparatus for a vector subsystem for use with a programmable mixed-radix DFT/IDFT processor |
US10210135B2 (en) * | 2015-12-31 | 2019-02-19 | Cavium, Llc | Methods and apparatus for providing a programmable mixed-radix DFT/IDFT processor using vector engines |
US10503474B2 (en) | 2015-12-31 | 2019-12-10 | Texas Instruments Incorporated | Methods and instructions for 32-bit arithmetic support using 16-bit multiply and 32-bit addition |
CN105718424B (zh) * | 2016-01-26 | 2018-11-02 | 北京空间飞行器总体设计部 | 一种并行快速傅立叶变换处理方法 |
GB2553783B (en) * | 2016-09-13 | 2020-11-04 | Advanced Risc Mach Ltd | Vector multiply-add instruction |
US10401412B2 (en) | 2016-12-16 | 2019-09-03 | Texas Instruments Incorporated | Line fault signature analysis |
US10489877B2 (en) | 2017-04-24 | 2019-11-26 | Intel Corporation | Compute optimization mechanism |
US10331445B2 (en) | 2017-05-24 | 2019-06-25 | Microsoft Technology Licensing, Llc | Multifunction vector processor circuits |
US10910061B2 (en) | 2018-03-14 | 2021-02-02 | Silicon Storage Technology, Inc. | Method and apparatus for programming analog neural memory in a deep learning artificial neural network |
US20200142670A1 (en) * | 2018-05-29 | 2020-05-07 | Marwan A. Jaber | Radix-23 Fast Fourier Transform for an Embedded Digital Signal Processor |
US11277455B2 (en) | 2018-06-07 | 2022-03-15 | Mellanox Technologies, Ltd. | Streaming system |
US20200106828A1 (en) * | 2018-10-02 | 2020-04-02 | Mellanox Technologies, Ltd. | Parallel Computation Network Device |
US10942985B2 (en) * | 2018-12-29 | 2021-03-09 | Intel Corporation | Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions |
US11625393B2 (en) | 2019-02-19 | 2023-04-11 | Mellanox Technologies, Ltd. | High performance computing system |
EP3699770A1 (en) | 2019-02-25 | 2020-08-26 | Mellanox Technologies TLV Ltd. | Collective communication system and methods |
US11750699B2 (en) | 2020-01-15 | 2023-09-05 | Mellanox Technologies, Ltd. | Small message aggregation |
US11252027B2 (en) | 2020-01-23 | 2022-02-15 | Mellanox Technologies, Ltd. | Network element supporting flexible data reduction operations |
US11876885B2 (en) | 2020-07-02 | 2024-01-16 | Mellanox Technologies, Ltd. | Clock queue with arming and/or self-arming features |
US11556378B2 (en) | 2020-12-14 | 2023-01-17 | Mellanox Technologies, Ltd. | Offloading execution of a multi-task parameter-dependent operation to a network device |
US11922237B1 (en) | 2022-09-12 | 2024-03-05 | Mellanox Technologies, Ltd. | Single-step collective operations |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1109991C (zh) * | 1998-01-21 | 2003-05-28 | 艾利森电话股份有限公司 | 流水线式快速傅里叶变换处理器 |
CN102375805A (zh) * | 2011-10-31 | 2012-03-14 | 中国人民解放军国防科学技术大学 | 面向向量处理器的基于simd的fft并行计算方法 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04252372A (ja) * | 1991-01-28 | 1992-09-08 | Nippon Telegr & Teleph Corp <Ntt> | 可変パイプライン構造 |
EP0681236B1 (en) | 1994-05-05 | 2000-11-22 | Conexant Systems, Inc. | Space vector data path |
US5805875A (en) | 1996-09-13 | 1998-09-08 | International Computer Science Institute | Vector processing system with multi-operation, run-time configurable pipelines |
US6006245A (en) | 1996-12-20 | 1999-12-21 | Compaq Computer Corporation | Enhanced fast fourier transform technique on vector processor with operand routing and slot-selectable operation |
JP3951071B2 (ja) * | 1997-05-02 | 2007-08-01 | ソニー株式会社 | 演算装置および演算方法 |
WO1999045462A1 (de) | 1998-03-03 | 1999-09-10 | Siemens Aktiengesellschaft | Datenpfad für signalverarbeitungsprozessoren |
JP3940542B2 (ja) | 2000-03-13 | 2007-07-04 | 株式会社ルネサステクノロジ | データプロセッサ及びデータ処理システム |
JP2003016051A (ja) * | 2001-06-29 | 2003-01-17 | Nec Corp | 複素ベクトル演算プロセッサ |
US7107305B2 (en) * | 2001-10-05 | 2006-09-12 | Intel Corporation | Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions |
US6986021B2 (en) * | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US7159099B2 (en) | 2002-06-28 | 2007-01-02 | Motorola, Inc. | Streaming vector processor with reconfigurable interconnection switch |
AU2003286131A1 (en) | 2002-08-07 | 2004-03-19 | Pact Xpp Technologies Ag | Method and device for processing data |
US20040193837A1 (en) | 2003-03-31 | 2004-09-30 | Patrick Devaney | CPU datapaths and local memory that executes either vector or superscalar instructions |
US7702712B2 (en) * | 2003-12-05 | 2010-04-20 | Qualcomm Incorporated | FFT architecture and method |
US7272751B2 (en) | 2004-01-15 | 2007-09-18 | International Business Machines Corporation | Error detection during processor idle cycles |
KR100985110B1 (ko) | 2004-01-28 | 2010-10-05 | 삼성전자주식회사 | 단순한 구조의 4:2 csa 셀 및 4:2 캐리 저장 가산 방법 |
US7415595B2 (en) * | 2005-05-24 | 2008-08-19 | Coresonic Ab | Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory |
US7299342B2 (en) * | 2005-05-24 | 2007-11-20 | Coresonic Ab | Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement |
JP2009505486A (ja) * | 2005-08-08 | 2009-02-05 | フリースケール セミコンダクター インコーポレイテッド | マルチモード無線広帯域信号プロセッサシステムおよび方法 |
US20070106718A1 (en) | 2005-11-04 | 2007-05-10 | Shum Hoi L | Fast fourier transform on a single-instruction-stream, multiple-data-stream processor |
TWI361379B (en) | 2006-02-06 | 2012-04-01 | Via Tech Inc | Dual mode floating point multiply accumulate unit |
US7519646B2 (en) | 2006-10-26 | 2009-04-14 | Intel Corporation | Reconfigurable SIMD vector processing system |
US8051123B1 (en) | 2006-12-15 | 2011-11-01 | Nvidia Corporation | Multipurpose functional unit with double-precision and filtering operations |
DE102007014808A1 (de) | 2007-03-28 | 2008-10-02 | Texas Instruments Deutschland Gmbh | Multiplizier- und Multiplizier- und Addiereinheit |
US8320478B2 (en) | 2008-12-19 | 2012-11-27 | Entropic Communications, Inc. | System and method for generating a signal with a random low peak to average power ratio waveform for an orthogonal frequency division multiplexing system |
US20110072236A1 (en) | 2009-09-20 | 2011-03-24 | Mimar Tibet | Method for efficient and parallel color space conversion in a programmable processor |
CN102768654A (zh) | 2011-05-05 | 2012-11-07 | 中兴通讯股份有限公司 | 具有fft基2蝶运算处理能力的装置及其实现运算的方法 |
JP2013025468A (ja) * | 2011-07-19 | 2013-02-04 | Hitachi Advanced Digital Inc | 高速フーリエ変換装置 |
DE102011108576A1 (de) | 2011-07-27 | 2013-01-31 | Texas Instruments Deutschland Gmbh | Selbstgetaktete Multipliziereinheit |
CN102637124B (zh) | 2012-03-22 | 2015-09-30 | 中国电子科技集团公司第五十八研究所 | 一种基4fft算法的并行处理装置及方法 |
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 |
US20140280407A1 (en) | 2013-03-13 | 2014-09-18 | Qualcomm Incorporated | Vector processing carry-save accumulators employing redundant carry-save format to reduce carry propagation, and related vector processors, systems, and methods |
-
2013
- 2013-03-13 US US13/798,599 patent/US9275014B2/en not_active Expired - Fee Related
-
2014
- 2014-03-06 TW TW103107652A patent/TWI601066B/zh active
- 2014-03-07 CN CN201480007022.9A patent/CN104969215B/zh not_active Expired - Fee Related
- 2014-03-07 KR KR1020157028376A patent/KR20150132287A/ko not_active Application Discontinuation
- 2014-03-07 WO PCT/US2014/021782 patent/WO2014164298A2/en active Search and Examination
- 2014-03-07 JP JP2016500848A patent/JP2016514330A/ja not_active Ceased
- 2014-03-07 EP EP14716472.7A patent/EP2972988A2/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1109991C (zh) * | 1998-01-21 | 2003-05-28 | 艾利森电话股份有限公司 | 流水线式快速傅里叶变换处理器 |
CN102375805A (zh) * | 2011-10-31 | 2012-03-14 | 中国人民解放军国防科学技术大学 | 面向向量处理器的基于simd的fft并行计算方法 |
Non-Patent Citations (3)
Title |
---|
JARMO TAKALA ET AL: ""BUTTERFLY UNIT SUPPORTING RADIX-4 AND RADIX-2 FFT"", 《RESEARCHGATE》 * |
M.SCHOENES ET AL: ""A Novel SIMD DSP Architecture for software Defined Radio"", 《CIRCUITS AND SYSTEMS,2003 IEEE 46TH MIDWEST SYMPOSIUM ON》 * |
李小进: ""高速可配置基2FFT处理器的FGPA实现研究"", 《中国优秀博硕士学位论文全文数据库(硕士)-信息科技辑》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111213125A (zh) * | 2017-09-08 | 2020-05-29 | 甲骨文国际公司 | 使用simd指令进行高效的直接卷积 |
CN111213125B (zh) * | 2017-09-08 | 2023-11-07 | 甲骨文国际公司 | 使用simd指令进行高效的直接卷积 |
WO2021038337A1 (en) * | 2019-08-29 | 2021-03-04 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
US11132198B2 (en) | 2019-08-29 | 2021-09-28 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
GB2603653A (en) * | 2019-08-29 | 2022-08-10 | Ibm | Instruction handling for accumulation of register results in a microprocessor |
GB2603653B (en) * | 2019-08-29 | 2023-02-22 | Ibm | Instruction handling for accumulation of register results in a microprocessor |
US11755325B2 (en) | 2019-08-29 | 2023-09-12 | International Business Machines Corporation | Instruction handling for accumulation of register results in a microprocessor |
CN110780842A (zh) * | 2019-10-25 | 2020-02-11 | 无锡恒鼎超级计算中心有限公司 | 基于神威架构的船舶三维声弹性模拟计算的并行优化方法 |
US12061910B2 (en) | 2019-12-05 | 2024-08-13 | International Business Machines Corporation | Dispatching multiply and accumulate operations based on accumulator register index number |
CN112800387A (zh) * | 2021-03-30 | 2021-05-14 | 芯翼信息科技(上海)有限公司 | 基-6蝶形运算单元、方法、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
TW201502978A (zh) | 2015-01-16 |
TWI601066B (zh) | 2017-10-01 |
US9275014B2 (en) | 2016-03-01 |
WO2014164298A3 (en) | 2015-07-02 |
CN104969215B (zh) | 2017-12-01 |
US20140280420A1 (en) | 2014-09-18 |
EP2972988A2 (en) | 2016-01-20 |
KR20150132287A (ko) | 2015-11-25 |
JP2016514330A (ja) | 2016-05-19 |
WO2014164298A2 (en) | 2014-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104969215A (zh) | 具有用于提供多模基-2x蝶形向量处理电路的可编程数据路径的向量处理引擎以及相关的向量处理器、系统和方法 | |
CN105027109A (zh) | 具有用于提供多模向量处理的可编程数据路径配置的向量处理引擎、以及相关向量处理器、系统和方法 | |
CN105723328A (zh) | 在向量数据存储器与执行单元之间的数据流路径中采用格式转换电路系统的向量处理引擎和相关方法 | |
JP6373991B2 (ja) | フィルタベクトル処理動作のためのタップ付き遅延線を利用するベクトル処理エンジンと、関連するベクトル処理システムおよび方法 | |
CN105765523A (zh) | 在向量数据存储器与执行单元之间的数据流路径中采用重排序电路系统的向量处理引擎以及相关的方法 | |
JP6339197B2 (ja) | 実行ユニットとベクトルデータメモリとの間のマージング回路を備えるベクトル処理エンジンおよび関連する方法 | |
CN105723330A (zh) | 采用抽头延迟线进行相关向量处理操作的向量处理引擎(vpe)、以及相关向量处理器系统和方法 | |
CN105723332A (zh) | 在执行单元与向量数据存储器之间的数据流路径中采用解扩展电路系统的向量处理引擎以及相关的方法 | |
WO2014164931A2 (en) | Vector processing carry-save accumulators employing redundant carry-save format to reduce carry propagation, and related vector processors, systems, and methods |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171201 Termination date: 20190307 |
|
CF01 | Termination of patent right due to non-payment of annual fee |