CN105765523B - 在向量数据存储器与执行单元之间的数据流路径中采用重排序电路系统的向量处理引擎以及相关的方法 - Google Patents

在向量数据存储器与执行单元之间的数据流路径中采用重排序电路系统的向量处理引擎以及相关的方法 Download PDF

Info

Publication number
CN105765523B
CN105765523B CN201480062406.0A CN201480062406A CN105765523B CN 105765523 B CN105765523 B CN 105765523B CN 201480062406 A CN201480062406 A CN 201480062406A CN 105765523 B CN105765523 B CN 105765523B
Authority
CN
China
Prior art keywords
vector
data
input
data samples
sample
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.)
Expired - Fee Related
Application number
CN201480062406.0A
Other languages
English (en)
Other versions
CN105765523A (zh
Inventor
R·汗
F·A·穆加希德
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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN105765523A publication Critical patent/CN105765523A/zh
Application granted granted Critical
Publication of CN105765523B publication Critical patent/CN105765523B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/76Arrangements for rearranging, permuting or selecting data according to predetermined rules, independently of the content of the data
    • 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
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30181Instruction operation extension or modification
    • 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/3887Concurrent 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]
    • 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/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent 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/3897Concurrent 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

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)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

公开了在执行单元与向量数据存储器之间的数据流路径中采用重排序电路系统以提供对存储到向量数据存储器的输出向量数据的进行中重排序的向量处理引擎(VPE)。还公开了相关的向量处理器系统和方法。重排序电路系统被提供在VPE中的执行单元与向量数据存储器之间的数据流路径中。重排序电路系统被配置成在进行中对作为执行向量处理操作的结果的来自执行单元的输出向量数据样本集进行重排序,同时该输出向量数据样本集在这些数据流路径上从执行单元被提供至向量数据存储器以被存储。以此方式,输出向量数据样本集以经重排序格式被存储在向量数据存储器中而无需额外的后处理步骤,而额外的后处理步骤可能延迟要在执行单元中执行的后续向量处理操作。

Description

在向量数据存储器与执行单元之间的数据流路径中采用重排 序电路系统的向量处理引擎以及相关的方法
相关申请
本申请涉及2013年3月13日提交的、题为“VECTOR PROCESSING ENGINES HAVINGPROGRAMMABLE DATA PATH CONFIGURATIONS FOR PROVIDING MULTI-MODE VECTORPROCESSING,AND RELATED VECTOR PROCESSORS,SYSTEMS,AND METHODS”(具有用于提供多模式向量处理的可编程数据路径配置的向量处理引擎以及相关的向量处理器、系统和方法)的美国专利申请号13/798,641,123249,该申请通过引用整体上被结合于此。
本申请涉及2013年3月13日提交的、题为“VECTOR PROCESSING CARRY-SAVEACCUMULATORS EMPLOYING REDUNDANT CARRY-SAVE FORMAT TO REDUCE CARRYPROPAGATION,AND RELATED VECTOR PROCESSORS,SYSTEMS,AND METHODS”(采用冗余进位保留格式以减少进位传播的向量处理进位保留累加器以及相关的向量处理器、系统和方法)的美国专利申请号13/798,618,123248,该申请通过引用整体上被结合于此。
本申请还涉及2013年11月15日提交的、题为“VECTOR PROCESSING ENGINES(VPEs)EMPLOYING A TAPPED-DELAY LINE(S)FOR PROVIDING PRECISION FILTER VECTORPROCESSING OPERATIONS WITH REDUCED SAMPLE RE-FETCHING AND POWER CONSUMPTION,AND RELATED VECTOR PROCESSOR SYSTEMS AND METHODS”(采用抽头延迟线用于以减少了的样本重新取回和功耗提供精确的滤波器向量处理操作的向量处理引擎(VPE)以及相关的向量处理系统和方法)的美国专利申请号14/082,075,124362,该申请通过引用整体上被结合于此。
本申请还涉及2013年11月15日提交的、题为“VECTOR PROCESSING ENGINES(VPES)EMPLOYING TAPPED-DELAY LINE(S)FOR PROVIDING PRECISION CORRELATION/COVARIANCEVECTOR PROCESSING OPERATIONS WITH REDUCED SAMPLE RE-FETCHING AND POWERCONSUMPTION,AND RELATED VECTOR PROCESSOR SYSTEMS AND METHODS”(采用抽头延迟线用于以减少了的样本重新取回和功耗提供精确的相关/协方差向量处理操作的向量处理引擎(VPE)以及相关的向量处理系统和方法)的美国专利申请号14/082,079,124364,该申请通过引用整体上被结合于此。
本申请还涉及2013年11月15日提交的、题为“VECTOR PROCESSING ENGINES(VPEs)EMPLOYING FORMAT CONVERSION CIRCUITRY IN DATA FLOW PATHS BETWEEN VECTOR DATAMEMORY AND EXECUTION UNITS TO PROVIDE IN-FLIGHT FORMAT-CONVERTING OF INPUTVECTOR DATA TO EXECUTION UNITS FOR VECTOR PROCESSING OPERATIONS,AND RELATEDVECTOR PROCESSOR SYSTEMS AND METHODS”(在向量数据存储器与执行单元之间的数据流路径中采用格式转换电路系统以向执行单元提供输入向量数据的进行中格式转换以便进行向量处理操作的向量处理引擎(VPE)以及相关的向量处理系统和方法)的美国专利申请号14/082,088,124365,该申请通过引用整体上被结合于此。
本申请还涉及2013年11月15日提交的、题为“VECTOR PROCESSING ENGINES(VPEs)EMPLOYING MERGING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITS ANDVECTOR DATA MEMORY TO PROVIDE IN-FLIGHT MERGING OF OUTPUT VECTOR DATA STOREDTO VECTOR DATA MEMORY,AND RELATED VECTOR PROCESSING INSTRUCTIONS,SYSTEMS,ANDMETHODS”(在执行单元与向量数据存储器之间的数据流路径中采用合并电路以提供对存储到向量数据存储器的输出向量数据的进行中合并的向量处理引擎(VPE)以及相关的向量处理指令、系统和方法)的美国专利申请S/N.14/082,073,124363U1,该申请通过引用整体上被结合于此。
本申请还涉及2013年11月15日提交的、题为“VECTOR PROCESSING ENGINES(VPES)EMPLOYING DESPREADING CIRCUITRY IN DATA FLOW PATHS BETWEEN EXECUTION UNITSAND VECTOR DATA MEMORY TO PROVIDE IN-FLIGHT DESPREADING OF SPREAD-SPECTRUMSEQUENCES,AND RELATED VECTOR PROCESSING INSTRUCTIONS,SYSTEMS,AND METHODS”(在执行单元与向量数据存储器之间的数据流路径中采用解扩电路系统以提供扩频序列的进行中解扩的向量处理引擎(VPE)以及相关的向量处理指令、系统和方法)的美国专利申请号14/082,067,124363U2,该申请通过引用整体上被结合于此。
背景
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频繁执行的功能的专门、专用电路系统以便进行高效操作。这种设计与标量处理引擎形成对照,标量处理引擎包括被设计成灵活以支持大量不相关操作但效率较低的更为通用的电路系统和硬件。
某些无线基带操作要求对经重排序的从先前处理操作中确定的数据样本执行后续处理操作。由此,从先前处理操作中得到的输出数据样本在初始存储在向量数据存储器中之后必须被重排序和重存储,使得这些数据样本从后续处理操作中被重排序。例如,后续处理操作可要求先前经处理的数据样本在被存回数据存储器中时被交织。作为另一示例,后续处理操作可要求先前经处理的数据样本在被存回数据存储器中时被解交织。例如,在CDMA处理操作中,表示信号的数据样本可能需要根据该信号的偶数(即,准时)和奇数(即,迟到)相位被存储和交织。为了解决向量处理器中的这个问题,向量处理器可包括在来自执行单元的输出向量数据被存储在向量数据存储器中之后对该输出向量数据执行后处理重排序的电路系统。存储在向量数据存储器中的经后处理的输出向量数据样本从向量数据存储器中被取回,被重排序,并被存回向量数据存储器。该后处理延迟了执行单元对经重排序的向量数据样本的后续处理,且造成执行单元中的计算组件未被充分利用。
公开概述
本文公开的实施例包括在执行单元与向量数据存储器之间的数据流路径中采用重排序电路系统以提供对存储到向量数据存储器的输出向量数据的进行中重排序的向量处理引擎(VPE)。还公开了相关的向量处理器系统和方法。重排序电路系统被提供在VPE中的执行单元与向量数据存储器之间的数据流路径中。重排序电路系统被配置成在进行中对作为执行向量处理操作的结果的来自执行单元的输出向量数据样本集进行重排序,同时该输出向量数据样本集在这些数据流路径上从执行单元被提供至向量数据存储器以被存储。对输出向量数据样本集的进行中重排序意味着执行单元所提供的输出向量数据样本集在被存储在向量数据存储器之前被重排序,使得该输出向量数据样本集以经重排序格式被存储在向量数据存储器中。作为非限定性示例,对输出向量数据样本集的重排序可包括交织或解交织存储在向量数据存储器中的输出向量数据样本集。以此方式,输出向量数据样本集以经重排序格式被存储在向量数据存储器中而无需额外的后处理步骤,而额外的后处理步骤可能延迟要在执行单元中执行的后续向量处理操作。从而,VPE中的数据流路径的效率不受到输出向量数据样本集的重排序的限制。当向量数据输出要以经重排序格式被存储在向量数据存储器中时,执行单元中的后续向量处理仅受到计算资源而非数据流限制的限制。
就这一点而言,在一个实施例中,提供了配置成在进行中对由执行向量处理操作的至少一个执行单元生成的结果输出向量数据样本集进行重排序的VPE。该VPE包括至少一个向量数据文件。(诸)向量数据文件被配置成在至少一个输入数据流路径中提供经取回的输入向量数据样本集以用于向量处理操作。(诸)向量数据文件还被配置成从至少一个输出数据流路径接收经重排序的结果输出向量数据样本集以便被存储。该VPE还包括在该至少一个输入数据流路径中提供的至少一个执行单元。(诸)执行单元被配置成在该至少一个输入数据流路径上接收该输入向量数据样本集。(诸)执行单元还被配置成对该输入向量数据样本集执行该向量处理操作以在该至少一个输出数据流路径上提供结果输出向量数据样本集。该VPE还包括至少一个重排序电路系统。该重排序电路系统被配置成在该至少一个输出数据流路径上接收该结果输出向量数据样本集。该重排序电路系统还被配置成将该结果输出向量数据样本集重排序成经重排序的结果输出向量数据样本集,而无需将该结果输出向量数据样本集存储在该至少一个向量数据文件中。该重排序电路系统还被配置成在该至少一个输出数据流路径上提供该经重排序的结果输出向量数据样本集。
在另一个实施例中,提供了配置成在进行中对执行向量处理操作的至少一个执行单元生成的结果输出向量数据样本集进行重排序的VPE。该VPE包括至少一个向量数据文件装置。该向量数据文件装置包括用于在至少一个输入数据流路径装置中取回输入向量数据样本集以用于向量处理操作的装置。该向量数据文件装置还包括用于从至少一个输出数据流路径装置接收经重排序的结果输出向量数据样本集以便被存储的装置。该VPE还包括在该至少一个输入数据流路径装置中提供的至少一个执行单元装置。该执行单元装置包括用于在该至少一个输入数据流路径装置上接收该输入向量数据样本集的装置。该执行单元装置还包括用于对该输入向量数据样本集执行该向量处理操作以在该至少一个输出数据流路径装置上提供结果输出向量数据样本集的执行装置。该VPE还包括至少一个重排序装置。该重排序装置包括用于在该至少一个输出数据流路径装置上接收该结果输出向量数据样本集的装置。该重排序装置还包括用于将该结果输出向量数据样本集重排序成经重排序的结果输出向量数据样本集的重排序装置,而无需将该结果输出向量数据样本集存储在该至少一个向量数据文件装置中。该重排序装置还包括用于在该至少一个输出数据流路径装置上提供该经重排序的结果输出向量数据样本集的装置。
在另一个实施例中,提供了在进行中对由执行向量处理操作的至少一个执行单元生成的结果输出向量数据样本集进行重排序的方法。该方法包括在至少一个输入数据流路径中从至少一个向量数据文件提供经取回的输入向量数据样本集以用于向量处理操作。该方法还包括在该至少一个输入数据流路径中提供的至少一个执行单元中在该至少一个输入数据流路径上接收该输入向量数据样本集。该方法还包括对所接收的输入向量数据样本集执行该向量处理操作以在至少一个输出数据流路径上提供结果输出向量数据样本集。该方法还包括在该至少一个输出数据流路径上将该结果输出向量数据样本集重排序成经重排序的结果输出向量数据样本集,而无需将该结果输出向量数据样本集存储在该至少一个向量数据文件中。该方法还包括在该至少一个输出数据流路径中将该经重排序的结果输出向量数据样本集存储在该至少一个向量数据文件中。
附图简述
图1是包括多个向量处理引擎(VPE)的示例性向量处理器的示意图,每个向量处理引擎专用于为特定应用提供因功能而异的向量处理;
图2是包括具有可编程数据路径配置的VPE的示例性基带处理器的示意图,使得VPE中提供的通用电路系统和硬件可按多个模式被编程,以便以高效的方式为多个应用或技术执行特定类型的向量操作,而不要求提供分开的VPE;
图3是可在由VPE支持的滤波器向量处理操作中提供的离散有限脉冲响应(FIR)滤波器的示意图;
图4是用于以减少了的重新取回和功耗提供精确的滤波器向量处理操作的示例性VPE的示意图,该示例性VPE采用抽头延迟线以接收经移位的输入向量数据样本集并将其提供至执行单元以便用滤波器系数数据来处理;
图5是例示出可在图4中的VPE中根据一示例性向量指令执行的示例性滤波器向量处理操作;
图6A是图4的VPE中寄存器文件中所存储的滤波器抽头系数的示意图;
图6B是图4中的VPE中向量数据文件中所存储的示例性输入向量数据样本集的示意图;
图7是例示出可在图4中的VPE中提供的示例性抽头延迟线和可选的影子抽头延迟线的示意图,其中该示例性抽头延迟线各自包括用于在由VPE所执行的滤波器向量处理操作期间接收来自向量数据存储器的输入向量数据样本集以及经移位的输入向量数据样本集并将它们提供给执行单元的多个流水线寄存器;
图8是例示出图7中的抽头延迟线的更多示例性细节的示意图,例示出数据通道中流水线寄存器的示例性细节,包括流水线寄存器之间的通道内和通道间路由,用于在滤波器向量处理操作期间对输入向量数据样本集中的输入向量数据样本进行移位;
图9A是作为示例性八(8)抽头滤波器向量处理操作的第一滤波器抽头执行的一部分、初始存储在图4的VPE中的主抽头延迟线中的输入向量数据样本集的示意图;
图9B是作为图9A中所例示的示例性八(8)抽头滤波器向量处理操作滤波器向量处理操作的第一滤波器抽头执行的一部分、在图4的VPE中存储在寄存器文件中的滤波器抽头系数以及初始存储在影子抽头延迟线中的影子输入向量数据样本集的示意图;
图9C是作为示例性八(8)抽头滤波器向量处理操作的第二滤波器抽头执行的一部分、在图4的VPE中存储在主抽头延迟线和影子抽头延迟线中的经移位的输入向量数据样本集以及存储在寄存器文件中的滤波器抽头系数的示意图;
图9D是作为示例性八(8)抽头滤波器向量处理操作的第八滤波器抽头执行的一部分、在图4的VPE中存储在主抽头延迟线和影子抽头延迟线中的经移位的输入向量数据样本集以及存储在寄存器文件中的滤波器抽头系数的示意图;
图10是在示例性八(8)抽头滤波器向量处理操作已完全执行之后图4的VPE中的执行单元的累加器的内容的示意图;
图11是用于以减少了的重新取回和功耗提供精确的相关/协方差向量处理操作的示例性VPE的示意图,该示例性VPE采用抽头延迟线以接收经移位的输入向量数据样本集并将其提供至执行单元以便用序列号数据来处理;
图12A和12B是例示出可在图11中的VPE中根据一示例性相关/协方差向量处理操作利用取回的经交织准时和迟到输入向量数据样本集并行执行的示例性相关/协方差向量处理操作的流程图;
图13是图11的VPE中的寄存器文件中所存储的相关/协方差输入向量数据样本集的示意图;
图14是例示出可在图11中的VPE中提供的示例性抽头延迟线和可选的影子抽头延迟线的示意图,其中该示例性抽头延迟线各自包括用于在由VPE所执行的相关/协方差向量处理操作期间接收来自向量数据存储器的输入向量数据样本集以及经移位的输入向量数据样本集并将它们提供给执行单元的多个流水线寄存器;
图15A是作为相关/协方差向量处理操作的第一处理级的一部分、在图11的VPE中的主抽头延迟线中初始提供的来自向量数据文件的输入向量数据样本集的示意图;
图15B是作为相关/协方差向量处理操作的第一处理级的一部分、在图11的VPE中的影子抽头延迟线中初始存储的来自向量数据文件的影子输入向量数据样本集的示意图;
图15C是作为相关/协方差向量处理操作的第二处理级的一部分、在图11的VPE中存储在主抽头延迟线和影子抽头延迟线中的经移位的输入向量数据样本集以及存储在寄存器文件中的经移位的输入向量数据样本集的示意图;
图15D是作为相关/协方差向量处理操作的第十四处理级的一部分、在图11的VPE中存储在主抽头延迟线和影子抽头延迟线中的经移位的输入向量数据样本集以及存储在寄存器文件中的经移位的输入向量数据样本集的示意图;
图16是在示例性相关/协方差向量处理操作已完全执行之后图11的VPE中的执行单元的累加器的内容的示意图;
图17A是示出存储的结果滤波器输出向量数据样本集的示例性向量数据文件的图示,所述结果滤波器输出向量数据样本集以结果滤波器输出向量数据样本的实分量和虚分量被分开存储的方式被存储;
图17B是示出存储的结果滤波器输出向量数据样本集的示例性向量数据文件的图示,所述结果滤波器输出向量数据样本集以其偶数和奇数结果滤波器输出向量数据样本被分开存储的方式被存储;
图18A和18B是分别以有符号的复十六(16)位格式以及复八(8)位格式存储在VPE的向量数据文件中的向量数据样本集的示例性经交织向量数据样本的图示;
图19是采用格式转换电路系统的示例性VPE的示意图,该示例性VPE被配置成在向量数据文件与至少一个执行单元之间的至少一个输入数据流路径中提供对输入向量数据样本集的进行中格式转换,而不需要从向量数据文件重新取回输入向量数据样本集,以便将经格式转换的输入向量数据样本集提供至所述至少一个执行单元用于执行向量处理操作;
图20是例示出可在图19的VPE中在向量数据文件与至少一个执行单元之间的至少一个数据流路径中对输入向量数据样本集执行的示例性进行中格式转换的流程图;
图21是图19的VPE中抽头延迟线与执行单元之间提供的示例性格式转换电路系统的示意图,其中该格式转换电路系统被配置成在到执行单元的输入数据流路径中提供由抽头延迟线所提供的输入向量数据样本集的进行中格式转换;
图22例示出向图19的VPE提供编程的示例性向量指令数据格式,以便在执行单元接收之前在输入数据流路径中提供输入向量数据样本集的进行中格式转换;
图23是采用重排序电路系统的示例性VPE的示意图,该示例性VPE被配置成在至少一个执行单元与至少一个向量数据文件之间的至少一个输出数据流路径中提供对结果输出向量数据样本集的进行中重排序,而不需要将结果输出向量数据样本集存储在所述至少一个向量数据文件中,以便提供并存储经重排序的结果输出数据样本集;
图24是例示出可在图23的VPE中在向量数据文件与至少一个执行单元之间的至少一个数据流路径中对输出向量数据样本集的示例性进行中解交织(以便以经重排序的形式存储在向量数据文件中)的流程图;
图25是在执行单元与向量数据文件之间的输出数据流路径中采用重排序电路系统以便提供对存储到向量数据文件的输出向量数据样本集的进行中重排序的示例性VPE的示意图;
图26A是表示通信信号的示例性向量数据样本序列的图示;
图26B是示例性码分多址(CDMA)码片序列的图示;
图26C是图26A中的向量数据样本序列在用图26B中的CDMA码片序列扩展之后的图示;
图26D是用图26B中的CDMA码片序列对图26C中的经扩展向量数据样本序列解扩展以恢复图26A中的原始向量数据样本序列的图示。
图27是采用解扩展电路系统的示例性VPE的示意图,该示例性VPE被配置成在至少一个执行单元与至少一个向量数据文件之间的至少一个输出数据流路径中提供对结果输出向量数据样本集的解扩展,而不需要将结果输出向量数据样本集存储在所述至少一个向量数据文件中,以便提供并存储解扩展结果输出向量数据样本集;
图28是例示出在图27的VPE中在至少一个向量数据文件与至少一个执行单元之间的至少一个数据流路径中对结果输出向量数据样本集的示例性解扩展(以便提供解扩展结果输出向量数据样本集并将其存储在所述至少一个向量数据文件中)的流程图;
图29是在图27的VPE中的至少一个执行单元与至少一个向量数据文件之间的输出数据流路径中的示例性解扩展电路系统(以提供对结果输出向量数据样本集的解扩展,从而提供解扩展结果输出向量数据样本集并将其存储在所述至少一个向量数据文件中)的示意图;
图30是要被合并的示例性向量数据样本的图示,且例示出经合并的结果向量数据样本;
图31是采用合并电路系统的示例性VPE的示意图,该示例性VPE被配置成在至少一个执行单元与至少一个向量数据文件之间的至少一个输出数据流路径中提供对结果输出向量数据样本集的合并,而不需要将结果输出向量数据样本集存储在所述至少一个向量数据文件中,以便提供并存储经合并的结果输出向量数据样本集;
图32是例示出在图31的VPE中在至少一个向量数据文件与至少一个执行单元之间的至少一个数据流路径中对结果输出向量数据样本集的示例性加法合并(以便提供加法合并后结果输出向量数据样本集并将其存储在所述向量数据文件中)的流程图;
图33是在图31的VPE中在执行单元与一向量数据文件之间的输出数据流路径中的示例性合并电路系统(以便提供对结果输出向量数据样本集的加法合并并将加法合并后结果输出向量数据样本集存储在所述向量数据文件中)的示意图;
图34是在图31的VPE中在执行单元与一向量数据文件之间的输出数据流路径中的示例性合并电路系统(以便提供对结果输出向量数据样本集的最大/最小合并并将最大/最小合并后结果输出向量数据样本集存储在所述向量数据文件中)的示意图;
图35是可在VPE中提供的示例性向量处理级的示意图,其中向量处理级中的某些级包括具有可编程数据路径配置的示例性向量处理块;
图36是例示出乘法器块和累加器块的示例性向量处理的流程图,这些块各自具有可编程数据路径配置并在图35的示例性VPE中的不同向量处理级中被提供;
图37是图35的VPE的向量处理级中提供的多个乘法器块的更详细的示意图,其中多个乘法器块各自具有可编程数据路径配置,使得可按多个模式来编程多个乘法器块以执行特定的、不同类型的向量乘法操作;
图38是图37中的多个乘法器块当中的一乘法器块的内部组件的示意图,该乘法器块具有能够被编程以提供8位乘8位输入向量数据样本集和16位乘16位输入向量数据样本集的乘法操作的可编程数据路径配置;
图39是图38的VPE中的乘法器块和累加器块的一般化示意图,其中累加器块采用进位保留累加器结构,该结构采用冗余进位保留格式来减少进位传播;
图40是图39的累加器块的示例性内部组件的详细示意图,该累加器块在图35的VPE中提供,其中该累加器块具有可编程数据路径配置,使得该累加器块可按多个模式被编程以便用冗余进位保留格式执行特定的、不同类型的向量累加操作;
图41是根据本文公开的实施例的可包括向量处理器的示例性基于处理器的系统的框图,所述向量处理器可包括本文所公开的VPE以便提供向量处理电路和向量处理操作。
详细描述
现在参照附图,描述了本公开的若干示例性实施例。措辞“示例性”在本文中用于表示“用作示例、实例或解说”。本文中描述为“示例性”的任何实施例不必被解释为优于或胜过其他实施例。
本文公开的实施例包括在执行单元与向量数据存储器之间的数据流路径中采用重排序电路系统以提供对存储到向量数据存储器的输出向量数据的进行中重排序的向量处理引擎(VPE)。还公开了相关的向量处理器系统和方法。重排序电路系统被提供在VPE中的执行单元与向量数据存储器之间的数据流路径中。重排序电路系统被配置成在进行中对作为执行向量处理操作的结果的来自执行单元的输出向量数据样本集进行重排序,同时该输出向量数据样本集在这些数据流路径上从执行单元被提供至向量数据存储器以被存储。对输出向量数据样本集的进行中重排序意味着执行单元所提供的输出向量数据样本集在被存储在向量数据存储器之前被重排序,使得该输出向量数据样本集以经重排序格式被存储在向量数据存储器中。作为非限定性示例,对输出向量数据样本集的重排序可包括交织或解交织存储在向量数据存储器中的输出向量数据样本集。以此方式,输出向量数据样本集以经重排序格式被存储在向量数据存储器中而无需额外的后处理步骤,而额外的后处理步骤可能延迟要在执行单元中执行的后续向量处理操作。从而,VPE中的数据流路径的效率不受到输出向量数据样本集的重排序的限制。当向量数据输出要以经重排序格式被存储在向量数据存储器中时,执行单元中的后续向量处理仅受到计算资源而非数据流限制的限制。
就这一点而言,图2是包括示例性向量处理单元22(也被称为向量处理引擎(VPE)22)的基带处理器20的示意图。如下文将更详细讨论的,VPE 22包括执行单元84以及提供包括本文所公开的示例性向量处理操作在内的向量处理操作的其他特定示例性电路系统和功能性。基带处理器20及其VPE 22可在半导体管芯24中提供。在该实施例中,如下文将更详细讨论的,基带处理器20包括通用VPE 22,该通用VPE 22包括可被编程以提供不同可编程数据路径配置的可编程数据路径26。以此方式,VPE 22中的执行单元84与向量数据文件82之间的可编程数据路径26可被编程和重新编程,以便以不同的操作模式提供不同的、特定类型的向量处理操作,而不要求在基带处理器20中提供分开的VPE 22。
在从图3开始讨论本公开中被配置成要由VPE 22提供的用于高效处理的特定电路系统和向量处理操作之前,首先描述图2中的基带处理器20的组件。在此非限制性示例中的基带处理器20是512位向量处理器。基带处理器20包括除VPE 22之外的组件,以支持VPE 22在基带处理器20中提供向量处理。基带处理器20包括被配置成接收并存储来自向量单元数据存储器(LMEM)32的向量数据30的向量寄存器(也称为向量数据文件82)。例如,向量数据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)提供向量处理以实现高度并行性。向量数据文件82还被配置成存储在VPE 22处理向量数据30时生成的结果。在某些实施例中,VPE 22被配置成不将中间向量处理结果存储在向量数据文件82中,以减少寄存器写入,以便提供更快速的向量指令执行时间。这种配置与在寄存器中存储中间结果的标量处理引擎(诸如标量处理数字信号处理器(DSP))执行的标量指令相反。
图2中的基带处理器20还包括条件寄存器36,条件寄存器36被配置成向VPE 22提供条件以供在向量指令的有条件执行中使用,并存储作为向量指令执行的结果的更新后条件。基带处理器20还包括累加寄存器38、包括全局寄存器的全局寄存器文件40、以及地址寄存器42。累加寄存器38被配置成由VPE 22用来存储作为对向量数据30执行某些专门操作的结果的累加结果。全局寄存器文件40被配置成存储用于VPE 22所支持的某些向量指令的标量操作数。地址寄存器42被配置成存储可由VPE 22所支持的向量加载和存储指令寻址的地址,以从向量单元数据存储器32检索向量数据30以及在向量单元数据存储器32中存储向量处理结果。
继续参照图2,这一实施例中的基带处理器20还包括标量处理器44(也被称为“整数单元”),以便除了VPE 22所提供的向量处理之外还在基带处理器20中提供标量处理。可能期望提供被配置成基于所执行的指令的类型支持向量和标量指令操作两者以便进行高效操作的中央处理单元(CPU)。在这一实施例中,作为非限制性示例,标量处理器44是32位精简指令集计算(RISC)标量处理器。在这一示例中,标量处理器44包括用于支持标量指令处理的算术逻辑单元(ALU)46。基带处理器20包括指令分派电路48,该电路被配置成从程序存储器50取回指令,对所取回的指令解码,以及基于指令类型将所取回的指令要么定向到标量处理器44要么通过向量数据路径53定向到VPE 22。标量处理器44包括通用寄存器54,供标量处理器44执行标量指令时使用。整数单元数据存储器(DMEM)56被包括在基带处理器20中,以便将来自主存储器的数据提供到通用寄存器54中,供标量处理器44存取以用于标量指令执行。作为一非限定性示例,DMEM 56可以是高速缓存存储器。基带处理器20还包括存储器控制器58,存储器控制器58包括存储器控制器寄存器60,存储器控制器寄存器60被配置成当标量处理器44正在执行要求通过存储器控制器数据路径62访问主存储器的向量指令时从通用寄存器54接收存储器地址。
可能希望由VPE 22进行的向量指令处理支持的一种类型的专门向量处理操作是滤波。滤波操作计算滤波器的经采样的输入时间函数与加权函数表示的卷积的经量化时域表示。时域中的卷积对应于频域中的乘法。从而,可通过以均匀间隔的采样间隔执行的乘法和加法的扩展序列在VPE 22中实现数字滤波器。例如,可使用具有“Y”个计算滤波器系数的延迟线上的有限数量(Y)个延迟抽头以计算滤波器函数,来实现离散有限脉冲响应(FIR)滤波器。
就这一点而言,图3是可能希望通过图2中的VPE 22中的滤波器向量处理操作支持的示例性离散FIR滤波器64的示意图。可通过将数字化输入信号样本(x[0],x[1],…x[n])传递通过称为“滤波器延迟抽头”68(1)-68(Y-1)的延迟结构来对数字化输入信号66(x[n])进行滤波。滤波器延迟抽头68(1)-68(Y-1)将时钟控制的数字化输入信号样本(即x[0],x[1],…x[n])移位至用于全部数字化输入信号样本(即x[0],x[1],…x[n])的乘法器70(0)-70(Y-1)中,以便各自乘以滤波器系数(h[0]-h(Y-1))以提供滤波器样本被乘数72(0)-72(Y-1)(即h(l)*x[n-l])。滤波器样本被乘数72(0)-72(Y-1)被求和器(即加法器)74(1)-74(Y-1)加在一起以提供结果经滤波的输出信号76(即y[n])。从而,图3中的离散FIR滤波器64可被归纳如下:
其中:
n是输入信号样本数;
x[n]是数字化输入信号66;
y[n]是结果经滤波的输出信号76;
h(l)是滤波器系数;以及
Y是滤波器系数的数量。
滤波器系数h(l)可以是复数。在一个方面中,VPE 22可(例如从全局寄存器文件40)接收滤波器系数。VPE 22可直接使用接收到的滤波器系数来执行FIR滤波器函数,在该情况下,上述等式中的滤波器系数h(l)可表示接收到的滤波器系数。替代地,VPE 22可在使用接收到的滤波器系数来执行FIR滤波器函数之前计算接收到的滤波器系数的复共轭,在该情况下,上述等式中的滤波器系数h(l)可表示接收到的滤波器系数的共轭。
图3中的上述离散FIR滤波器64可被改写为:
y[n]=x[n]*h0+x[n-1]*h1+...+x[n-7]*h7
然而,由于向量处理器中所提供的专门化的数据流路径,滤波操作(诸如图3中的离散FIR滤波器64)可能难以在向量处理器中并行化。当要被滤波的输入向量数据样本集(如向量化的数字化输入信号66)在滤波器延迟抽头(如68(1)-68(Y-1))之间移位时,该输入向量数据样本集从向量数据文件中被重新取回,从而增加了功耗并减少了吞吐量。为了使从向量数据文件重新取回输入向量数据样本集最少化,向量处理器中的数据流路径可被配置成提供与滤波器延迟抽头(例如68(1)-68(Y-1))相同数量的乘法器(例如70(0)-70(Y-1))以用于高效的并行化处理。然而,其他向量处理操作可能要求较少的乘法器,从而在数据流路径中提供了对乘法器的低效缩放和未充分利用。如果将乘法器的数量减少为少于滤波器延迟抽头的数量以提供可缩放性,则并行性受到需要更多的重新取回到存储器以为滤波处理的不同阶段获得相同的输入向量数据样本集的限制。
就这一点而言,图4是可作为图2中的VPE 22被提供的示例性VPE 22(1)的示意图。如下文将更详细描述的,图4中的VPE 22(1)在VPE 22(1)中以消除了的或减少了的向量数据样本重新取回以及减少了的功耗提供了精确的滤波器向量处理操作。与要求对中间结果的存储的滤波器向量处理操作(要求向量数据样本重新取回,从而作为结果增加了功耗)相比,可在VPE 22(1)中提供该精确的滤波器向量处理操作。为了消除或使从向量数据文件对输入向量数据样本的重新取回最少化以减少功耗并提高处理效率,抽头延迟线78被包括在VPE 22(1)中的向量数据文件82(0)-82(X)与执行单元84(0)-84(X)(也标记为“EU”)之间的输入数据流路径80(0)-80(X)中。‘X’+1是在该示例中VPE 22(1)中提供的用于向量数据样本的处理的并行输入数据通道的最大数量。抽头延迟线78被配置成在抽头延迟线输入88(0)-88(X)上从向量数据文件82(0)-82(X)的对应子集或全部接收输入向量数据样本集86(0)-86(X)作为输入向量数据样本集86(0)-86(X)的输入向量数据样本86的子集或全部。输入向量数据样本集86(0)-86(X)由‘X+1’个输入向量数据样本86组成,在该示例中是86(0)、86(1)、…、以及86(X)。
继续参照图4,抽头延迟线78存储从向量数据文件82(0)-82(X)取回的要由执行单元84(0)-84(X)处理来进行滤波器向量处理操作的输入向量数据样本集86(0)-86(X)。如下文关于下图6和7更详细讨论的,抽头延迟线78被配置成根据要由VPE 22(1)执行的滤波器向量指令来为滤波器向量处理操作的每个滤波器延迟抽头(即滤波器处理级)对输入向量数据样本集86(0)-86(X)进行移位,以将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X)。所有经移位的输入向量数据样本86S构成经移位的输入向量数据样本集86S(0)-86S(X)。在滤波器向量处理操作期间,抽头延迟线78将经移位的输入向量数据样本86S(0)-86S(X)提供至执行单元84(0)-84(X)的执行单元输入90(0)-90(X)。以此方式,在VPE 22(1)所执行的滤波器向量处理操作的每个处理级期间,基于针对滤波器向量处理操作的滤波器抽头对经移位的输入向量数据样本集86S(0)-86S(X)执行的操作的中间滤波器结果不必被存储、移位以及从向量数据文件82(0)-82(X)中重新取回。从而,抽头延迟线78能够为VPE 22(1)所执行的滤波器向量处理操作降低功耗以及增加处理效率。
VPE 22(1)中的一处理级(也称为“向量处理级”)包括被设计成执行特定的任务或操作的电路系统和相关联的向量数据路径。向量处理操作可由VPE 22(1)在若干不同处理级中执行。每个处理级可在VPE 22(1)的一个或多个时钟循环上被执行。因此,VPE 22(1)中的向量处理操作的执行可花费许多时钟循环来完成,因为该向量处理操作的每个处理级可能各自消耗一个或多个时钟循环。例如,一处理级可包括将输入向量数据样本集86(0)-86(X)取回到图4中的VPE 22(1)中的抽头延迟线78中。VPE 22(1)中的向量处理级可被流水线化。
执行单元84(0)-84(X)可包括处理经取回的输入向量数据样本集86(0)-86(X)的一个或多个流水线级。例如,执行单元84(0)-84(X)中的一个流水线级可包括由被配置成执行累加操作的累加器组成的累加级。作为另一示例,执行单元84(0)-84(X)中的另一个流水线级可包括由被配置成执行乘法操作的乘法器组成的乘法级。
继续参照图4,执行单元84(0)-84(X)从图2的全局寄存器文件40中所存储的滤波器系数92(0)-92(Y-1)中接收滤波器系数92以用于滤波器向量处理操作,其中‘Y’可等于用于滤波器向量处理操作的滤波器系数的数量。执行单元84(0)-84(X)各自被配置成在向量滤波器处理操作的每个处理级期间将接收到的滤波器系数92(0)、90(1)、…、90(Y-1)之一与经移位的输入向量数据样本集86S(0)-86S(X)中的一经移位的输入向量数据样本86S(0)、86S(1)、…、86S(X)相乘,以在执行单元84(0)-84(X)中提供中间滤波器向量数据输出样本。中间滤波器向量数据输出样本集在执行单元84(0)-84(X)中的每一个中被累加(即前一累加后滤波器输出向量数据样本被加到当前的累加后滤波器输出向量数据样本)。这为经移位的输入向量数据样本集86S(0)-86S(X)中的每个经移位的输入向量数据样本86S(0)、86S(1)、…、86S(X)提供了分别由执行单元84(0)-84(X)在执行单元输出96(0)-96(X)上在输出数据流路径98(0)-98(X)上提供的最终的、结果滤波器输出向量数据样本集94(0)-94(X)。结果滤波器输出向量数据样本集94(0)-94(X)由‘X+1’个结果滤波器输出向量数据样本94组成,在该示例中是 94(0)、94(1)、…、以及94(X)。结果滤波器输出向量数据样本集94(0)–94(X)被存储回相应的向量数据文件82(0)-82(X),供VPE 22(1)进一步使用和/或处理,而不必存储并移位由执行单元84(0)-84(X)生成的中间滤波器向量数据输出样本集。
继续参照图4以及如将在下文更详细讨论的,抽头延迟线78是可编程的以便根据正被处理的向量指令受到控制。如果一滤波器向量指令不在被处理,则抽头延迟线78可被编程以不被包括在向量数据文件82(0)-82(X)与执行单元84(0)-84(X)之间的输入数据流路径80(0)-80(X)中。在该实施例中,抽头延迟线78被配置成加载并移位从向量数据文件82(0)-82(X)接收的输入向量数据样本集86(0)-86(X),以便为滤波器向量处理操作的每个滤波器抽头提供经移位的输入向量数据样本集86S(0)-86S(X)。从而,经移位的输入向量数据样本集86S(0)-86S(X)可被提供给执行单元84(0)-84(X)以用于滤波器向量处理操作的滤波器抽头的执行。如果没有抽头延迟线78,则将需要执行分开的移位过程以便将经移位的中间输入向量数据样本集再次提供给执行单元84(0)-84(X)以用于滤波器向量处理操作的后续滤波器抽头,从而增加了时延并消耗了额外功率。进一步,VPE 22(1)中的输入和输出数据流路径80(0)-80(X)、98(0)-98(X)的效率不受到滤波器向量处理操作期间从向量数据文件82(0)-82(X)对经移位的输入向量数据样本集86S(0)-86S(X)的重新取回延迟的限制。
经移位的输入向量数据样本集86S(0)-86S(X)由抽头延迟线78本地化地提供给执行单元84(0)-84(X)。执行单元84(0)-84(X)中的向量处理仅受到计算资源而非数据流限制的限制。这意味着执行单元84(0)-84(X)持续地或基本持续地忙于接收经移位的输入向量数据样本集86S(0)-86S(X)来执行向量处理操作,而不必等待从向量数据文件82(0)-82(X)取回经移位的输入向量数据样本集86S(0)-86S(X)。
进一步,通过采用抽头延迟线78,图4中由VPE 22(1)执行的滤波器向量处理操作可更为精确,因为执行单元84(0)-84(X)中的中间滤波器处理级的输出累加不必被存储在向量数据文件82(0)-82(X)中。将来自执行单元84(0)-84(X)的中间输出向量数据样本集存储在向量数据文件82(0)-82(X)中可能导致舍入(rounding)。从而,当下一中间输出向量数据样本集将被提供给执行单元 84(0)-84(X)以用于向量处理操作时,在向量处理操作的每个乘法阶段期间,任何舍入误差将被传播并相加。相反,在图4中的VPE 22(1)的示例中,由执行单元84(0)-84(X)计算出的中间输出向量数据样本集不必被存储在向量数据文件82(0)-82(X)中。执行单元84(0)-84(X)可将在先的中间输出向量数据样本集与针对接下来的滤波器延迟抽头的中间输出向量数据样本集相累加,因为在要被处理的向量处理操作期间,抽头延迟线78将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X),且结果与针对在先的滤波器延迟抽头的在先的向量数据样本集相累加。
继续参照图4,该实施例中的VPE 22(1)由用于并行化处理的多个向量数据通道(标记为VLANE0-VLANEX)100(0)-100(X)组成。在该实施例中,每个向量数据通道100(0)-100(X)包含一向量数据文件82和一执行单元84。取向量数据通道100(0)作为示例,其中的向量数据文件82(0)被配置成在输入数据流路径80(0)上提供要由执行单元84(0)接收以用于滤波器向量处理的输入向量数据样本86(0)。如上所讨论的,抽头延迟线78被提供在输入数据流路径80(0)中以移位输入向量数据样本86(0)以及将经移位的输入向量数据样本86S(0)提供至执行单元84(0)以用于滤波器向量处理。向量数据文件82(0)还被配置成从输出数据流路径98(0)接收作为滤波器向量处理的结果、由执行单元84(0)提供的结果滤波器输出向量数据样本94(0),以根据要由VPE 22(1)处理的当前或下一向量指令按照需要或按照期望存储回向量数据文件82(0)供后续向量处理操作。
任何数量的向量数据通道100(0)-100(X)可按需被提供在VPE 22(1)中。VPE 22(1)中所提供的向量数据通道100(0)-100(X)的数量可基于为效率目的进行并行化向量处理与提供额外的向量数据通道100(0)-100(X)时所涉及的额外电路系统、空间和功耗的折衷。作为一非限制性示例,可在VPE 22(1)中提供16个向量数据通道100,其中每个向量数据通道100具有三十二(32)位的数据宽度能力,以在VPE 22(1)中提供多达512位向量数据的并行化处理。
继续参照图4,使用向量数据通道100(0)中的向量数据文件82(0)作为示例但适用于所有向量数据文件82(0)-82(X),向量数据文件82(0)允许输入向量数据样本86(0)的一个或多个样本被存储以用于向量处理。输入向量数据样本86(0)的宽度是根据输入向量数据样本86(0)根据VPE 22(1)正在执行的特定向量指令进行编程而提供的。输入数据流路径80(0)的宽度是以逐向量指令的方式可编程的和可重新编程的,包括对于给定向量指令以逐时钟循环的方式,以便将不同宽度的输入向量数据样本86(0)提供给抽头延迟线78和执行单元84(0)。以此方式,向量数据通道100(0)可被编程和重新编程,以便根据正被执行的向量指令的类型提供对不同宽度的输入向量数据样本86(0)的处理。
例如,向量数据文件82(0)可以是三十二(32)位宽且能够存储同样多达三十二(32)位宽的输入向量数据样本86。输入向量数据样本86(0)可消耗向量数据文件82(0)的整个宽度(如32位),或者可按向量数据文件82(0)宽度的较小样本尺寸来被提供。输入向量数据样本86(0)尺寸可基于针对输入向量数据样本86(0)的尺寸的输入数据流路径80(0)配置基于VPE 22(1)正在执行的向量指令的编程而被配置。例如,对于一个向量指令,输入向量数据样本86(0)可包括两(2)个分开的16位向量数据样本。作为另一示例,与一(1)个32位向量数据样本相对,对于另一个向量指令,输入向量数据样本86(0)可包括向量数据文件82(0)中的四(4)个8位向量数据样本。在另一示例中,输入向量数据样本86(0)可包括一(1)个32位向量数据样本。VPE 22(1)还能够为向量数据文件82(0)编程和重新编程输出数据流路径98(0),以便接收由执行单元84(0)针对每个向量指令和/或给定向量指令的每个时钟循环提供给向量数据文件82(0)的不同尺寸的结果滤波器输出向量数据样本94(0)。
现在将描述本实施例中图4中的VPE 22(1)以及用于在输入数据流路径80(0)-80(X)中将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X)的抽头延迟线78的附加细节和特征的进一步描述。就这一点而言,图5是例示出可在图4中的采用抽头延迟线78的VPE 22(1)中根据示例性滤波器向量指令执行的示例性滤波器向量处理操作102的流程图。图5中的滤波器向量处理操作102中执行的示例性任务将参照图6A-10中所提供的示例来描述。
参照图5,要根据滤波器向量指令在滤波器向量处理操作102中处理的输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被取回到输入数据流路径80(0)-80(X)中以用于滤波器向量处理操作102(框104)。如上关于图4中的VPE 22(1)所讨论的,在执行单元84(0)-84(X)中将输入向量数据样本集 86(0)-86(X)乘以从全局寄存器文件40接收的滤波器系数92(0)-92(Y-1)。例如,图6A例示出全局寄存器文件40中的滤波器系数92(0)-92(Y-1)(即h7-h0)。在该示例中,全局寄存器文件40中存储了八(8)个滤波器系数92,在要被执行的滤波器向量处理操作102中提供了八(8)个滤波器抽头。注意,在该示例中,根据上文讨论的图3中的离散FIR滤波器64等式的滤波器向量处理操作102是
y[n]=x[n]*h0+x[n-1]*h1+...+x[n-7]*h7。
图6B例示出图4中的VPE 22(1)中向量数据文件82(0)-82(X)中所存储的示例性输入向量数据样本集86(0)-86(X),表示要由滤波器向量处理操作102滤波的输入信号。在该示例中,样本X0是最老的样本,而样本X63是最新的样本。换言之,在该示例中,样本X63在时间上发生在样本X0之后。由于向量数据文件82(0)-82(X)的每个地址都是16位宽,因此向量数据文件82(0)-82(X)中所存储的第一个输入向量数据样本集86(0)-86(X)跨越地址0和地址1,如图6B中所示。这允许向量数据文件82(0)-82(X)提供32位宽的输入向量数据样本86以支持图4中的VPE 22(1)示例中的执行单元84(0)-84(X)的32位宽能力。就这一点而言,共有六十四(64)个输入向量数据样本子集(即X0-X63),每个宽度是8位,总计512位,构成第一个输入向量数据样本集86(0)-86(X)。类似地,地址2和地址3存储向量数据文件82(0)-82(X)中所存储的另一、第二输入向量数据样本集86(0)-86(X)。注意,在图6B的示例中,每个向量数据文件82(0)-82(X)的八(8)个地址(地址0-7)被示出,例示出总计256个输入向量数据样本86(即X0-X255),但这并非限制。
图4中的VPE 22(1)中的向量数据通道100(0)-100(X)中的任一个、一些或全部可被采用以根据向量指令取决于滤波器向量处理操作102中所涉及的输入向量数据样本集86(0)-86(X)的宽度的编程来提供滤波器向量处理操作102。如果需要向量数据文件82(0)-82(X)的整个宽度,则所有的向量数据通道100(0)-100(X)可被用于滤波器向量处理操作102。注意,滤波器向量处理操作102可能仅需要可被用于滤波器向量处理操作102的向量数据通道100(0)-100(X)的某一子集。这可能是由于输入向量数据样本集86(0)-86(X)的宽度小于所有向量数据文件82(0)-82(X)的宽度,其中希望采用额外的向量数据通道100以用于要与该滤波器向量处理操作102并行执行的其他向量处理操作。出于讨论当前示例的目的,假设滤波器向量处理操作102中所采用的输入向量数据样本集86(0)-86(X)涉及所有向量数据通道100(0)-100(X)。
返回参照图5,经取回的输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被提供至输入数据流路径80(0)-80(X),以被加载到抽头延迟线78中作为当前输入向量数据样本集86(0)-86(X)(框106)。输入向量数据样本集86(0)-86(X)被加载到主抽头延迟线78(0)中作为要由执行单元84(0)-84(X)为滤波器向量处理操作102处理的输入向量数据样本集86(0)-86(X)。对于滤波器向量处理操作102的第一个滤波器抽头操作,加载到主抽头延迟线78(0)的输入向量数据样本集86(0)-86(X)不被移位。然而,如上所讨论且在下文关于图7更详细讨论的那样,抽头延迟线78的目的是提供输入向量数据样本集86(0)-86(X)的移位以便将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X)以用于滤波器向量处理操作102的后续滤波器抽头操作。在执行单元84(0)-84(X)所执行的滤波器向量处理操作102的每个处理级期间,输入向量数据样本86在主抽头延迟线78(0)中被移位以将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X)。以此方式,输入向量数据样本集86(0)-86(X)不必在向量数据文件82(0)-82(X)中被存储、移位,以及对滤波器向量处理操作102的每个滤波器抽头操作被重新取回。
如果在VPE 22(1)中提供可选的影子抽头延迟线78(1),则下一输入向量数据样本集86N(0)-86N(X)也可从向量数据文件82(0)-82(X)被加载到影子抽头延迟线78(1)中。如下文将关于图7更详细讨论的,在滤波器向量处理操作102期间,该下一输入向量数据样本集86N(0)-86N(X)被移位至主抽头延迟线78(0)中,以成为经移位的输入向量数据样本集86S(0)-86S(X)的至少一部分。从而,主抽头延迟线78(0)可在滤波器向量处理操作102期间使经移位的输入向量数据样本集86S(0)-86S(X)可用,而没有取回延迟,如果要求执行单元84(0)-84(X)等待直到要对滤波器向量处理操作102执行的下一输入向量数据样本集86N(0)-86N(X)从向量数据文件82(0)-82(X)被取回到主抽头延迟线78(0)为止,则会发生取回延迟。
就这一点而言,图7例示出可在图4中的VPE 22(1)中提供的示例性抽头延迟线78。在该实施例中,抽头延迟线78包括影子抽头延迟线78(1)和主抽头延迟线78(0)。该示例中的主抽头延迟线78(0)由多个8位主流水线寄存器120组成,以允许输入向量数据样本86的分辨率降至8位长度。在该示例中,对于滤波器向量处理操作102的第一个滤波器抽头,由执行单元84(0)-84(X)处理的第一个输入向量数据样本集86(0)-86(X)将不被移位,如下文将关于图9A所讨论的。在执行单元84(0)-84(X)为滤波器向量处理操作102处理后续滤波器抽头时,主抽头延迟线78(0)中所存储的输入向量样本集86(0)-86(X)中的输入向量数据样本86在主流水线寄存器120(0)-120(4X+3)中被移位(如图7中箭头所指示的),以成为经移位的输入向量数据样本集86S(0)-86S(X)。以此方式,通过接收经移位的输入向量数据样本集86S(0)-86S(X)并执行其滤波器向量处理操作102而不必存储并移位输入向量数据样本集86S(0)-86S(X)并从向量数据文件82(0)-82(X)重新取回经移位的输入向量数据样本集86S(0)-86S(X),执行单元84(0)-84(X)被充分利用。
在该实施例中,主流水线寄存器120(0)-120(4X+3)一起是图4中的向量数据文件82(0)-82(X)的宽度。在向量数据文件82(0)-82(X)是512位宽且“X”等于十五(15)的示例中,将有总计六十四(64)个主流水线寄存器120(0)-120(63),各自为八(8)位宽,以提供总计512位宽(即64个寄存器×每个8位)。从而在该示例中,主抽头延迟线78(0)能够存储一(1)个输入向量数据样本集86(0)-86(X)的整个宽度。通过在该示例中提供八(8)位宽的主流水线寄存器120(0)-120(4X+3),输入向量数据样本集86(0)-86(X)可在主流水线寄存器120(0)-120(4X+3)中被向下移位成八(8)位的向量数据样本尺寸以用于8位滤波器向量处理操作。如果对于某一滤波器向量处理操作希望更大尺寸的输入向量数据样本86尺寸,诸如举例来说16位或32位,则输入向量数据样本集86(0)-86(X)可在主流水线寄存器120(0)-120(4X+3)中一次移位两(2)个主流水线寄存器120。
继续参照图7,抽头延迟线78中还提供了影子抽头延迟线78(1)。影子抽头延迟线78(1)可被用来对来自向量数据文件82(0)-82(X)的下一输入向量数据样本集86N(0)-86N(X)进行锁存和流水线化,以供后续向量处理操作。当滤波器向量处理操作102的每个滤波器抽头由执行单元84(0)-84(X)执行时,来自该下一输入向量数据样本集86N(0)-86N(X)的下一输入向量数据样本86N从影子抽头延迟线78(1)被移位至主抽头延迟线78(0)中。影子抽头延迟线78(1)也由多个8位影子流水线寄存器122组成,以允许输入向量数据样本86的分辨率降至8位长度,类似于主抽头延迟线78(0)。和主流水线寄存器120(0)-120(4X+3)一样,影子抽头延迟线78(1)中所提供的影子流水线寄存器122(0)-122(4X+3)一起是向量数据文件82(0)-82(X)的宽度,该宽度在本示例中是512位。从而,影子抽头延迟线78(1)的影子流水线寄存器122(0)-122(4X+3)也能够存储一(1)个输入向量数据样本集86(0)-86(X)的整个宽度。从而,在该实施例中,包括在主抽头延迟线78(0)中的影子流水线寄存器122(0)-122(4X+3)的数量是向量数据通道100(0)-100(X)的数量的四倍,在该示例中向量数据通道的数量总计是十六(16)(即X=15)。从而,在该示例中,影子流水线寄存器122的数量也是总计六十四(64),对应于总计512位(即64个寄存器×每个8位)。如上关于主抽头延迟线78(0)所讨论的,通过在该示例中提供八(8)位宽的影子流水线寄存器122(0)-122(4X+3),下一输入向量数据样本集86N(0)-86N(X)可被向下移位成八(8)位的向量数据样本尺寸以用于8位滤波器向量处理操作。
图8是例示出存在于图7的主和影子抽头延迟线78(0)、78(1)中的所选主流水线和影子流水线寄存器120、122的示意图。提供图8以便于讨论在主和影子流水线寄存器120、122之间移位输入向量数据样本86的示例。如上所讨论的,输入向量数据样本86也可在主和影子抽头延迟线78(0)、78(1)内被移位,以及从影子抽头延迟线78(1)移位至主抽头延迟线78(0)。在本示例中,流水线寄存器120、122各自是8位宽以允许输入向量数据样本86在需要的情况下以8位分辨率进行移位。这将在下文更详细地讨论。主和影子抽头延迟线78(0)、78(1)还能够执行输入向量数据样本86的16位和32位移位分辨率,如也将在下文更详细讨论的。
就这一点而言,图8例示出将输入向量数据样本86移位至主流水线寄存器120(4X+3)、120(2X+1)、120(4X+2)和120(2X)中,这些寄存器构成了用于图7中的主抽头延迟线78(0)中的输入向量数据样本86S(X)的存储寄存器。主流水线寄存器120(4X+3)和120(4X+2)分别是图7中主抽头延迟线78(0)中的寄存器B31和B30。主流水线寄存器120(2X+1)和120(2X)分别是图7中主抽头延迟线 78(0)中的寄存器A31和A30。如图7中所例示,用于寄存器B31和B30的主流水线寄存器120(4X+3)和120(4X+2)被配置成从影子抽头延迟线78(1)中的相邻影子流水线寄存器122接收经移位的输入向量数据样本86。从而,在图8的示例中,分别用于寄存器A’0和A’1的影子流水线寄存器122(0)、122(1)被例示为被配置成将输入向量数据样本86移位至用于B31和B30的主流水线寄存器120(4X+3)和120(4X+2)中。类似地,在图8中的示例中,主抽头延迟线78(0)中分别用于寄存器B1和B0的主流水线寄存器120(2X+3)和120(2X+2)被例示为被配置成将输入向量数据样本86移位至用于寄存器A31和A30的相邻的主流水线寄存器120(2X+1)和120(2X)中。现在将讨论输入向量数据样本86在这些寄存器之间的示例性移位。
继续参照图8,为了提供配置主和影子流水线寄存器120、122以便从图4中的向量数据文件82(0)-82(X)加载新的输入向量数据样本集86(0)-86(X)以及对输入向量数据样本86进行移位的灵活性,输入向量数据样本选择器与主和影子流水线寄存器120、122各自相关联。就这一点而言,输入向量数据样本选择器124(0)-124(4X+3)被分别提供给加载到或移位至主抽头延迟线78(0)中的主流水线寄存器120(0)-120(4X+3)的向量数据。输入向量数据样本选择器126(0)-126(4X+3)被分别提供给加载到或移位至影子抽头延迟线78(1)中的影子流水线寄存器122(0)-122(4X+3)的向量数据。输入向量数据样本选择器124(0)-124(4X+3)和输入向量数据样本选择器126(0)-126(4X+3)在本示例中各自是多路复用器。如将在下文更详细讨论的,输入向量数据样本选择器124(0)-124(4X+3)、126(0)-126(4X+3)可各自由数据宽度移位控制输入125控制来选择输入向量数据以要么被加载要么被移位至主和影子流水线寄存器120(0)-120(4X+3)、122(0)-122(4X+3)中。
注意,在图8中,仅输入向量数据样本选择器124(4X+3)、124(4X+2)、124(2X+1)、124(2X)被示出以分别用于分别对应于寄存器B31、B30、A31和A30的主流水线寄存器120(4X+3)、120(4X+2)、120(2X+1)、120(2X)。图8中仅示出输入向量数据样本选择器126(1)、126(0)、124(2X+3)、124(2X+2)以分别用于分别对应于A’1、A’0、B1和B0的流水线寄存器122(1)、122(0)、120(2X+3)、120(2X+2)。
继续参照图8,如果新的输入向量数据要被加载到主和影子抽头延迟线78(0)、78(1)以用于向量处理操作,则数据宽度移位控制输入125可由图4中的VPE 22(1)配置成使得输入向量数据样本选择器124(4X+3)、124(4X+2)、124(2X+1)、124(2X)选择加载数据流路径133(4X+3)、133(4X+2)、133(2X+1)、133(2X)。选择加载数据流路径133(4X+3)、133(4X+2)、133(2X+1)、133(2X)允许来自向量数据文件82(0)-82(X)的输入向量数据被存储在主流水线寄存器120(4X+3)、120(4X+2)、120(2X+1)、120(2X)中。作为一示例,加载来自向量数据文件82(0)-82(X)的输入向量数据可在要由VPE 22(1)执行的新的或下一向量指令上执行。类似地,数据宽度移位控制输入125也可由图4中的VPE 22(1)配置成使得输入向量数据样本选择器126(1)、124(2X+3)、126(0)、124(2X+2)选择输入数据流路径135(1)、133(2X+3)、135(0)、133(2X+2)。选择加载数据流路径135(1)、133(2X+3)、135(0)、133(2X+2)允许来自向量数据文件82(0)-82(X)的输入向量数据被存储在流水线寄存器122(1)、120(2X+3)、124(0)、120(2X+2)中。
继续参照图8,如果希望主抽头延迟线78(0)和影子抽头延迟线78(1)中所存储的向量数据被移位来用于向量处理操作,则数据宽度移位控制输入125可由图4中的VPE 22(1)配置成使得输入向量数据样本选择器124(4X+3)、124(4X+2)、124(2X+1)、124(2X)选择输入数据流路径137(4X+3)、137(4X+2)、137(2X+1)、137(2X)以用于向量数据样本移位。数据宽度移位控制输入125还使得输入向量数据样本选择器126(1)、124(2X+3)、126(0)、124(2X+2)选择输入数据流路径139(1)、137(2X+3)、139(0)、137(2X+2)以用于向量数据样本移位。如其中所例示的,输入向量数据样本选择器124(4X+3)、124(4X+2)、124(2X+1)、124(2X)和输入向量数据样本选择器126(1)、124(2X+3)、126(0)、124(2X+2)各自分别包括允许向量数据被移位至其他寄存器的输出数据流路径141(4X+3)、141(4X+2)、141(2X+1)、141(2X)和143(1)、141(2X+3)、143(0),124(2X+2)。图8中所示的输出数据流路径是现在一起示出但被包括以分别用于主抽头延迟线78(0)中的输入向量数据样选择器124(0)-124(4X+3)和影子抽头延迟线78(1)中的输入向量数据样本选择器126(0)-126(4X+3)的输出数据流路径141(0)-141(4X+3)和143(0)-143(4X+3)的一部分。
作为示例,在8位向量数据移位期间,输入向量数据样本选择器124(4X+3)、124(4X+2)、124(2X+1)、124(2X)和输入向量数据样本选择器126(1)、124(2X+3)、126(0)、124(2X+2)被配置成分别选择输入数据流路径137(4X+3)、137(4X+2)、137(2X+1)、137(2X)、139(1)、137(2X+3)、139(0)、137(2X+2)。就这一点而言,作为一示例,主流水线寄存器120(2X+1)(即A31)中的向量数据在输出数据流路径141(2X+1)上被移位至主流水线寄存器120(2X)(即A30),如图8中所例示。主流水线寄存器120(4X+3)(即B31)中的向量数据在输出数据流路径141(4X+3)上被移位至主流水线寄存器120(4X+2)(即B30),如图8中所例示。影子流水线寄存器120(0)(即A’0)中的向量数据在输出数据流路径143(0)上被移位至主流水线寄存器120(4X+3)(即B31),如图8中所例示。主流水线寄存器120(2X+3)(即B1)中的向量数据在输出数据流路径141(2X+3)上被移位至主流水线寄存器120(4X+2)(即B30),如图8中所例示。影子流水线寄存器122(1)(即A’1)中的向量数据在输出数据流路径143(1)上被移位至影子流水线寄存器122(0)(即A’0),如图8中所例示。主流水线寄存器120(2X+2)(即B0)中的向量数据在输出数据流路径141(2X+2)上被移位至主流水线寄存器120(2X+1)(即A31),如图8中所例示。
继续参照图8,在16位向量数据移位期间,输入向量数据样本选择器124(4X+3)、124(4X+2)、124(2X+1)、124(2X)和输入向量数据样本选择器126(1)、124(2X+3)、126(0)、124(2X+2)被配置成分别选择输入数据流路径145(4X+3)、145(4X+2)、145(2X+1)、145(2X)、147(1)、145(2X+3)、147(0)、145(2X+2)。就这一点而言,作为一示例,主流水线寄存器120(2X+2)(即B0)中的向量数据在输出数据流路径141(2X+2)上被移位至主流水线寄存器120(2X)(即A30),如图8中所例示。影子流水线寄存器122(0)(即A’0)中的向量数据在输出数据流路径143(0)上被移位至主流水线寄存器120(4X+2)(即B30),如图8中所例示。主流水线寄存器120(2X+3)(即B1)中的向量数据在输出数据流路径141(2X+3)上被移位至主流水线寄存器120(2X+1)(即A31),如图8中所例示。影子流水线寄存器122(1)(即A’1)中的向量数据在输出数据流路径143(1)上被移位至主流水线寄存器120(4X+3)(即B31),如图8中所例示。
如果在主和影子抽头延迟线78(0)、78(1)中希望32位向量数据移位,则主流水线寄存器120(0)-120(4X+3)和影子流水线寄存器122(0)-122(4X+3)中所存储的向量数据可按需在两(2)个16位向量数据移位操作中被移位。
注意在图7中用于寄存器B31和B30的主流水线寄存器120(4X+3)、120(4X+2)和用于寄存器A31和A30的主流水线寄存器120(2X+1)、120(2X)逻辑上彼此相关联到经移位的输入向量数据样本86S(X),但物理上不彼此相邻,如图8中所例示。在该示例中提供这一安排是由于输入向量数据样本集86(0)-86(X)在向量数据文件82(0)-82(X)中的存储模式,如图6B中所例示。同样如图6B中所例示,向量数据文件82(0)-82(X)中所存储的输入向量数据样本集86(0)-86(X)跨越地址0和地址1。然而,注意本文的公开不限于输入向量样本集86(0)-86(X)在向量数据文件82(0)-82(X)中的这一存储模式。
进一步,关于图8,抽头延迟线78(0)、78(1)是可配置的,以便基于根据要被执行的向量指令用于抽头延迟线78(0)、78(1)的可编程的输入数据路径配置在向量数据文件82(0)-82(X)与执行单元84(0)-84(X)之间的输入数据流路径80(0)-80(X)中被选择性地提供或不提供。例如,如果该向量指令不是滤波器向量处理指令和/或不另外要求抽头延迟线78(0)、78(1)移位输入向量数据样本集86(0)-86(X),则抽头延迟线78(0)、78(1)可被配置成不锁存输入向量数据样本集86(0)-86(X)。通过旁路主和影子抽头延迟线78(0)、78(1),输入向量数据样本集86(0)-86(X)可从向量数据文件82(0)-82(X)被提供至相应的执行单元84(0)-84(X)。这种可编程的数据路径配置进一步允许在输入数据流路径80(0)-80(X)中提供或不提供主和影子抽头延迟线78(0)、78(1)。可按需对每个向量指令编程主和影子抽头延迟线78(0)、78(1)以在输入数据流路径80(0)-80(X)中被提供或不被提供。
图9A例示出在滤波器向量处理指令的第一时钟循环(循环0)期间从向量数据文件82(0)-82(X)加载到主抽头延迟线78(0)的输入向量数据样本集86(0)-86(X)。主抽头延迟线78(0)和影子抽头延迟线78(1)以图7的简化形式示出。全局寄存器文件40也被示出。第一输入向量数据样本集86(0)-86(X)被加载到主抽头延迟线78(0)作为输入向量数据样本X0-X63。例如,一专用向量指令可被支持以将第一输入向量数据样本集86(0)-86(X)加载到主抽头延迟线78(0)(以及影子抽头延迟线78(1),如下文更详细讨论的那样)中。第一输入向量数据样本集86(0)-86(X)被存储在图6B中所示的向量数据文件82(0)-82(X)中的地址0和1中。注意在该示例中,X0、X1、X32和X33构成了第一输入向量数据样本86(0),这只是由于用于该示例的图4中的VPE 22(1)中的向量数据文件82(0)-82(X)的存储模式。其他输入向量数据样本86被类似地构成,如图9A中所示(如86(1)、86(2)、…、86(X))。其他模式可被提供以将输入向量数据样本86分组在一起以构成输入向量数据样本集86(0)-86(X)。
图9B例示出在滤波器向量处理指令的第二时钟循环(循环1)期间被加载到影子抽头延迟线78(1)中的下一输入向量数据样本集86N(0)-86N(X)。在第一输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被加载到主抽头延迟线78(0)之后,该下一输入向量数据样本集86N(0)-86N(X)被加载到影子抽头延迟线78(1)以便建立滤波器处理操作的执行。该下一输入向量数据样本集86N(0)-86N(X)被加载到影子抽头延迟线78(1)作为输入向量数据样本X64-X127。该下一输入向量数据样本集86N(0)-86N(X)被存储在图6B中所示的向量数据文件82(0)-82(X)中的地址2和3中。注意在该示例中,X64、X65、X96和X97构成了第一输入向量数据样本86(0),这只是由于用于该示例的图4中的VPE 22(1)中的向量数据文件82(0)-82(X)的存储模式。其他模式可被提供以将输入向量数据样本86分组在一起以构成输入向量数据样本集86(0)-86(X)。来自全局寄存器文件40的第一滤波器系数92(0)也在图9B中被示为在寄存器(“C”)中被提供给执行单元84(0)-84(X)以用于滤波器向量处理操作102。
返回参照图7,当输入向量数据样本86在滤波器向量处理操作102的每个处理级期间在主抽头延迟线78(0)中被移位时,存储在影子流水线寄存器122中的下一输入向量数据样本86N也在影子抽头延迟线78(1)的影子流水线寄存器122中被移位。存储在图7中的第一影子流水线寄存器122(0)中的输入向量数据样本86在每个移位期间被移位至主抽头延迟线78(0)的最后一个主流水线寄存器120(4X+3)中。从而,以此方式,当滤波器向量处理操作102处理级在执行单元84(0)-84(X)中进行时,影子抽头延迟线78(1)中初始存储的下一输入向量数据样本集86N(0)-86N(X)的至少一部分被移位至主抽头延迟线78(0)中以便被提供给执行单元84(0)-84(X)供处理。在本示例中,移位数将取决于滤波器向量处理操作102中所提供的滤波器抽头数。如果从向量数据文件82(0)-82(X) 被取入主抽头延迟线78(0)和影子抽头延迟线78(1)的输入向量数据样本集86(0)-86(X)中的输入向量数据样本86的数量大于滤波器向量处理操作102中的滤波器抽头数,则执行单元84(0)-84(X)可执行滤波器向量处理操作102而无需任何进一步的输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被取回。然而,如果滤波器向量处理操作102中的滤波器抽头数大于从向量数据文件82(0)-82(X)被取入主抽头延迟线78(0)和影子抽头延迟线78(1)的输入向量数据样本集86(0)-86(X)中的输入向量数据样本86,则额外的输入向量数据样本集86(0)-86(X)可从向量数据将文件82(0)-82(X)被取回作为滤波器向量处理操作102的一部分。在滤波器向量处理操作102在经移位的输入向量数据样本集86S(0)-86S(X)上完成之后,如果未经处理的输入向量数据样本86S存在于抽头延迟线78(0)、78(1)中,则执行单元84(0)-84(X)然后可被提供主抽头延迟线78(0)中所存储的先前的下一输入向量样本数据集86N(0)-86N(X)作为用于下一向量处理操作的经移位的输入向量数据样本集86S(0)-86S(X)。
提供影子抽头延迟线78(1)的另一示例性基本原理如下。如果当前滤波器向量处理操作102涉及比向量数据通道100(0)-100(X)的宽度中所能提供的更多的输入向量数据样本86,则加载到影子抽头延迟线78(1)的额外的输入向量数据样本集86(0)-86(X)将在该滤波器向量处理操作期间102可无延迟地用于执行单元84(0)-84(X)。当滤波器向量处理操作102在执行期间通过经移位的输入向量数据样本集86S(0)-86S(X)进行时,如上所讨论的,加载到影子抽头延迟线78(1)中的额外的下一输入向量数据样本集86N(0)-86N(X)被移位至主抽头延迟线78(0)中。从而以此方式,供执行单元84(0)-84(X)进行向量处理时使用的该下一输入向量数据样本集86N(0)-86N(X)无延迟地可用。不管具有向量数据文件82(0)-82(X)的宽度的单个经取回的输入向量数据样本集86(0)-86(X)是否足以执行整个滤波器向量处理操作102,执行单元84(0)-84(X)都可在滤波器向量处理操作102期间持续充分利用。
在第一输入向量数据样本集86(0)-86(X)和下一输入向量数据样本集86N(0)-86N(X)被分别加载到主抽头延迟线78(0)和影子抽头延迟线78(1)中之后,主抽头延迟线78(0)中所提供的第一输入向量数据样本集86(0)-86(X)被提供至相应的执行单元84(0)-84(X)以在滤波器向量处理操作102的第一处理级中被处理(图5中的框108)。第一输入向量数据样本集86(0)-86(X)在主抽头延迟线78(0)中被移位以成为经移位的输入向量数据样本集86S(0)-86S(X),以便在第一输入向量数据样本集86(0)-86(X)被执行单元84(0)-84(X)处理之后由执行单元84(0)-84(X)处理。经移位的输入向量数据样本86S(0)被提供至执行单元84(0),经移位的输入向量数据样本86S(1)被提供至执行单元84(1),以此类推,如图4中的VPE 22(1)中所例示。
接着,执行单元84(0)-84(X)执行滤波器向量处理操作102(图5中的框110)。更为具体地,在该示例中,在第一次迭代中,执行单元84(0)-84(X)根据操作y[n]=x[n-7]*h7将第一输入向量数据样本集86(0)-86(X)乘以当前滤波器系数92(0)以提供结果滤波器输出向量数据样本集94(0)-94(X),其中x[n-7]是第一输入向量数据样本集86(0)-86(X)。在滤波器向量处理操作102的后续迭代中(图5的框110),用于滤波器向量处理操作102的后续经移位的输入向量数据样本集86S(0)-86S(X)乘以当前滤波器系数92(1)-92(Y-1)。执行单元84(0)-84(X)将结果滤波器向量输出向量数据样本集94(0)-94(X)与执行单元84(0)-84(X)计算出的在先的结果滤波器输出向量数据样本集94(0)-94(X)累加,以提供新的在先的结果滤波器输出向量数据样本集94(0)-94(X)(图5中的框112)。在滤波器向量处理操作102的第一处理级中,没有在先的结果滤波器输出向量数据样本集。
如果滤波器向量处理操作102的所有处理级都已完成(图5中的框114),则累加后的在先的结果滤波器输出向量数据样本集94(0)-94(X)在输出数据流路径98(0)-98(X)中被提供作为要被提供并存储在向量数据文件82(0)-82(X)中的结果滤波器输出向量数据样本集94(0)-94(X)(图5中的框116)。如果滤波器向量处理操作102的所有处理级还未完成(图5中的框114),则抽头延迟线78(0)和78(1)中所存储的样本在抽头延迟线78(0)、78(1)内被移位以提供用于滤波器处理操作102的下一经移位的输入向量数据样本集86S(0)-86S(X)(图5中的框118)。经移位的输入向量数据样本集86S(0)-86S(X)被提供用于计算下一结果滤波器输出向量数据样本集作为中间结果,该中间结果要与在先的结果滤波器输出向量数据样本集累加,直到滤波器向量处理操作102完成为止。上文先前关于图7详细描述了输入向量数据样本86在抽头延迟线78(0)、78(1)中的移位以便提供经移位的输入向量数据样本集86S(0)-86S(X)。执行单元84(0)-84(X)针对该滤波器向量处理操作102提供的中间结果的最终累加被提供作为来自执行单元84(0)-84(X)的结果滤波器输出向量数据样本集94(0)-94(X),如图4中所例示。
图9C例示出当输入向量数据样本集86(0)-86(X)在滤波器向量处理操作102的第二处理级中被移位以成为下一经移位的输入向量数据样本集86S(0)-86S(X)以用于下一滤波器处理操作y[n]=x[n-6]*h6时,抽头延迟线78的内容。主抽头延迟线78(0)中的经移位的输入向量数据样本集86S(0)-86S(X)在主流水线寄存器120(0)-120(4X+3)根据正被执行的向量指令所规定的输入向量数据样本移位的宽度被移位。例如,如图9C中所例示,在经移位的输入向量数据样本86S(0)中,样本X2被移位。新的经移位的输入向量数据样本集86S(0)-86S(X)被提供给执行单元84(0)-84(X)以用于滤波器向量处理操作102的下一滤波器抽头的执行。提供给执行单元84(0)-84(X)的滤波器系数92也是下一滤波器系数92,在本示例中为“h6”。
继续参照图5,通过将经移位的输入向量数据样本集86S(0)-86S(X)从主抽头延迟线78(0)提供至执行单元84(0)-84(X)(图5中的框108)以便与下一滤波器系数92相乘(图5中的框110),过程重复。结果滤波器输出向量数据样本集94(0)-94(X)与在先的结果滤波器输出向量数据样本集94(0)-94(X)累加(图5中的框112)。图9D例示出在示例性滤波器向量处理操作102的最后处理级期间抽头延迟线78(0)、78(1)中存在的输入向量数据样本86的状态。在该示例中,如图9D中所示,因为滤波器系数92“h7”-“h0”(即92(0)-92(Y-1)),滤波器向量处理操作102中有八(8)个滤波器抽头(Y)。“h0”是滤波器向量处理操作102中的最后一个滤波器系数92,如图9D中所示。经移位的输入向量数据样本集86S(0)-86S(X)已被移位七(7)次(比滤波器抽头数少一次),使得在滤波器向量处理操作102的最终的第八处理级中,输入向量数据样本X39被存储在主抽头延迟线78(0)中的经移位的输入向量数据样本86S(0)中。
注意,尽管上述的滤波器向量处理操作102的示例采用VPE 22(1)中的向量数据通道100(0)-100(X)中的每一条来提供滤波器向量处理操作102,但并不需要这样。滤波器向量处理操作102可能仅需要向量数据通道100(0)-100(X) 的某一子集被用于滤波器向量处理操作102。例如,输入向量数据样本集86(0)-86(X)的宽度可小于所有向量数据文件82(0)-82(X)的宽度,其中希望采用额外的向量数据通道100以用于要与该滤波器向量处理操作102并行执行的其他向量处理操作。在此情形中,图7中抽头延迟线78(0)、78(1)可能需要被修改,以便在到达最终向量数据通道100(X)之前,将下一输入向量数据样本集86N(0)-86N(X)从影子抽头延迟线78(1)移位至主抽头延迟线78(0)作为向量数据通道100中的经移位的向量数据样本集86S(0)-86S(X)。
图10是在上述示例中示例性八(8)抽头滤波器向量处理级根据y[n]=x[n]*h0+x[n-1]*h1+...x[n-7]*h7已被完全执行后,图4的VPE 22(1)中的执行单元84(0)-84(X)中累加器的内容(即结果滤波器输出向量数据样本94)的示意图。累加器Acc0-Acc3被示于图10中,因为在该示例中,每个执行单元84(0)-84(X)具有为每个向量数据通道100(0)-100(X)并行布置的四个累加器。累加后的结果输出向量数据样本可在输出数据流路径98(0)-98(X)上被提供给向量数据文件82(0)-82(X)作为总的结果滤波器输出向量数据样本集94(0)-94(X)以便被存储在其中用于进一步的分析和/或处理。VPE 22(1)可支持专门化的向量指令以便按需将结果滤波器输出向量数据样本集94(0)-94(X)的行从向量数据文件82(0)-82(X)移动到图2的向量单元数据存储器32。
通过使用上文讨论的图4中的VPE 22(1)中所提供的相同或类似的抽头延迟线78,除了滤波器向量处理操作102之外的其他类型的向量处理操作也可在VPE中享受到处理效率。例如,涉及在VPE中对输入向量数据样本集86移位的另一专门化的向量处理操作是相关/协方差向量处理操作(本文称为“相关向量处理操作”)。作为一示例,在CDMA系统中,可能希望采用向量处理来提供相关操作以便选择用于解调用户信号的直接扩频码(DSSC)(即码片序列),以便在CDMA系统中在该用户信号与其他用户的信号之间提供良好隔离。信号的隔离是通过将接收到的信号与期望用户的本地生成的码片序列相关来进行的。如果信号匹配期望用户的码片序列,则相关函数将为高,且CDMA系统可提取该信号。如果期望用户的码片序列与所述信号几乎没有或没有共同之处,则相关应尽可能接近于0(从而消除该信号),这称为互相关。如果码片序列以除了0之外的任何时间偏移与该信号相关,则相关应尽可能接近于0。这被称为自相关,且被用于抵制多径干扰。
然而,由于向量处理器中所提供的专门化数据流路径,相关操作可能难以在向量处理器中并行化。当表示要被相关的该信号的输入向量数据样本集在延迟抽头之间移位时,输入向量数据样本集从向量数据文件中被重新取回,从而增加了功耗并降低了吞吐量。为了使得从存储器对输入向量数据样本集的重新取回最少化,数据流路径可被配置成提供与延迟抽头相同数量的乘法器用于高效的并行化处理。然而,其他向量处理操作可能要求较少的乘法器,从而在数据流路径中提供了对乘法器的低效缩放和未充分利用。如果将乘法器的数量减少为少于延迟抽头的数量以提供可缩放性,并行性受到需要更多的重新取回到存储器以为相关处理的不同阶段获得相同的输入向量数据样本集的限制。
就这一点而言,图11是可作为图2中的VPE 22被提供的另一示例性VPE 22(2)的示意图。如下文将更详细描述的,图11中的VPE 22(2)被配置成在VPE 22(2)中以消除了的或减少了的向量数据样本重新取回以及减少了的功耗提供精确的相关向量处理操作。与要求对中间结果的存储的相关向量处理操作(要求向量数据样本重新取回,从而作为结果增加了功耗)相比,可在VPE 22(2)中提供该精确的相关向量处理操作。为了消除或使从向量数据文件对输入向量数据样本的重新取回最少化以减少功耗并提高处理效率,包括在图4中的VPE 22(1)中的抽头延迟线78也被包括在VPE 22(2)中的向量数据文件82(0)-82(X)与执行单元84(0)-84(X)(也标记为“EU”)之间的输入数据流路径80(0)-80(X)中。‘X’+1是在该示例中VPE 22(2)中提供的用于向量数据样本的处理的并行输入数据通道的最大数量。如上文先前所讨论的,抽头延迟线78被配置成在抽头延迟线输入88(0)-88(X)上从向量数据文件82(0)-82(X)的对应子集或全部接收输入向量数据样本集86(0)-86(X)作为输入向量数据样本集86(0)-86(X)的输入向量数据样本86的子集或全部。所有输入向量数据样本86构成输入向量数据样本集86(0)-86(X)。如将在下文更详细讨论的,来自向量数据文件82(0)-82(X)的输入向量数据样本集86(0)-86(X)在VPE 22(2)中与参考向量数据样本集130(0)-130(X)相关,以提供结果相关输出向量数据样本集132(0)-132(X)。参考向量数据样本集130(0)-130(X)由‘X+1’个参考向量数据样本130组成,在该示例中是130(0)、130(1)、…、以及130(X)。结果相关输出向量数据样本集 132(0)-132(X)由‘X+1’个结果相关输出向量数据样本132组成,在该示例中是132(0)、132(1)、…、以及132(X)。
继续参照图11,抽头延迟线78根据要由VPE 22(2)执行的相关向量指令来为相关向量处理操作的每个相关延迟抽头(即相关处理级)移位输入向量数据样本集86(0)-86(X),以提供经移位的输入向量数据样本集86S(0)-86S(X)。所有经移位的输入向量数据样本86S构成经移位的输入向量数据样本集86S(0)-86S(X)。在相关向量处理操作期间,抽头延迟线78移位输入向量数据样本集86(0)-86(X)以将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X)的执行单元输入90(0)-90(X)。以此方式,在VPE22(2)所执行的相关向量处理操作的每个处理级期间,基于对经移位的输入向量数据样本集86S(0)-86S(X)执行的操作的中间相关结果不必被存储、移位以及从向量数据文件82(0)-82(X)中重新取回。从而,抽头延迟线78能够为VPE 22(2)所执行的相关向量处理操作降低功耗以及增加处理效率。
继续参照图11,执行单元84(0)-84(X)还从序列号生成器(SNG)134中所存储的参考向量数据样本集130(0)-130(X)中接收参考向量数据样本130,以用于相关向量处理操作。执行单元84(0)-84(X)被配置成将参考向量数据样本集130(0)-130(X)与输入向量数据样本集86(0)-86(X)相关,作为相关向量处理操作的一部分。然而,注意序列号生成器134也可以是寄存器或其他文件。在该实施例中提供序列号生成器134以便提供参考向量数据样本集130(0)-130(X),因为在该示例中相关向量处理操作用于CDMA相关向量指令。如果参考向量数据样本集130(0)-130(X)与输入向量数据样本集86(0)-86(X)之间的相关为高,则参考向量数据样本集130(0)-130(X)被提供作为生成的码片序列以便在从输入向量数据样本集86(0)-86(X)进行信号提取时使用。
例如,针对CDMA向量相关指令的相关向量处理操作可在输入向量数据样本集86(0)-86(X)中的准时输入向量数据样本86与输入向量数据样本集86(0)-86(X)中的迟到输入向量数据样本之间提供相关。例如,输入向量数据样本集86(0)-86(X)中的准时输入向量数据样本86可以是输入向量数据样本集86(0)-86(X)中的偶数输入向量数据样本86(如86(0)、86(2)、86(4)、…、86(X-1))。输入向量数据样本集86(0)-86(X)中的迟到输入向量数据样本86可以是输入向量数据样本集86(0)-86(X)中的奇数输入向量数据样本86(如86(1)、86(3)、86(5)、…、86(X))。替代地,准时输入向量数据样本86可以是奇数输入向量数据样本86,而迟到输入向量数据样本86可以是偶数输入向量数据样本86。相关向量处理操作的结果,针对准时输入向量数据样本86以及迟到输入向量数据样本86的结果相关输出向量数据样本集132(0)-132(X)可被用于确定使用来自输入向量数据样本集86(0)-86(X)的准时输入向量数据样本还是迟到输入向量数据样本以用于信号提取。例如,准时相关向量处理操作可根据下式提供:
其中:
n是输入信号样本数;
x[n]是数字化输入信号66;
y[n]是参考信号;以及
l是样本数。
迟到相关向量处理操作可根据下式提供:
其中:
n是输入信号样本数;
x[n]是数字化输入信号66;
y[n]是参考信号;以及
l是样本数。
参考信号y[n](即参考向量数据样本)可以是复数。在一个方面中,VPE 22(2)可(例如从序列号生成器134)接收参考信号。VPE 22(2)可直接使用接收到的参考信号来执行准时和迟到相关操作,在该情况下,上述等式中的参考信号y[n]可表示接收到的参考信号。替代地,VPE 22(2)可在使用参考信号来执行准时和迟到相关操作之前计算接收到的参考信号的复共轭,在该情况下,上述等式中的参考信号y[n]可表示接收到的参考信号的共轭。
继续参照图11,执行单元84(0)-84(X)各自被配置成在相关向量处理操作的每个处理级期间将参考向量数据样本集130(0)-130(X)与经移位的输入向量数据样本集86S(0)-86S(X)中的经移位的输入向量数据样本86S(0)、86S(1)、…、86S(X)相乘,以在执行单元84(0)-84(X)中提供中间相关输出向量数据样本。中间相关输出向量数据样本集在执行单元84(0)-84(X)中的每一个中被累加(即前一累加后相关输出向量数据样本被加到当前的相关输出向量数据样本)。这为每个输入向量数据样本集86(0)、86(1)、…、86(X)提供了分别由执行单元84(0)-84(X)在执行单元输出96(0)-96(X)上在输出数据流路径98(0)-98(X)上提供的最终的、结果相关输出向量数据样本集132(0)-132(X),以便被存储回相应的向量数据文件82(0)-82(X)供VPE 22(2)进一步使用和/或处理,而不必存储并移位由执行单元84(0)-84(X)生成的中间相关输出向量数据样本集。
进一步,注意图11中VPE 22(2)中提供的相同的组件和架构在图4中的VPE 22(1)中被提供。序列号生成器134由多路复用器136与全局寄存器文件40相加并复用,全局寄存器文件40可提供滤波器系数92(0)-92(Y-1)或要与参考向量数据样本集130(0)-130(X)一起被处理的其他数据。从而,通过对多路复用器136的控制,图11中的VPE 22(2)可提供上述的滤波器向量处理操作和此处且在下文更详细讨论的相关向量处理操作两者。多路复用器136可由选择器信号138控制,选择器信号138基于VPE 22(2)正在执行的向量指令而被控制。对于滤波器向量指令,选择器信号138可被配置成从全局寄存器文件40提供要被提供给执行单元84(0)-84(X)的滤波器系数92(0)-92(Y-1)。对于相关向量指令,选择器信号138可被配置成从序列号生成器134选择要被提供给执行单元84(0)-84(X)的参考向量数据样本集130(0)-130(X)。
继续参照图11以及如将在下文更详细讨论的,抽头延迟线78(0)、78(1)是可编程的以便根据正被处理的向量指令受到控制。如果一相关向量指令或不采用抽头延迟线78的其他指令不在被处理,抽头延迟线78可被编程以不被包括在向量数据文件82(0)-82(X)与执行单元84(0)-84(X)之间的输入数据流路径80(0)-80(X)中。在该实施例中,如先前所讨论的,提供了两个抽头延迟线78,即主抽头延迟线78(0)和影子抽头延迟线78(1),其中在该实施例中影子抽头延迟线78(1)是可选的。如先前所讨论的,如果没有抽头延迟线78,则需要执行分开的移位过程以便将经移位的中间输入向量数据样本集再次提供给执行单元84(0)-84(X),从而增加了时延并消耗了额外功率。进一步,VPE 22(2)中的输入和输出数据流路径80(0)-80(X)、98(0)-98(X)的效率不受到相关向量处理操作期间从向量数据文件82(0)-82(X)对经移位的输入向量数据样本集86S(0)-86S(X)的重新取回延迟的限制。经移位的输入向量数据样本集86S(0)-86S(X)由抽头延迟线78本地化地提供给执行单元84(0)-84(X)。执行单元84(0)-84(X)中的向量处理仅受到计算资源而非数据流限制的限制。
进一步,通过采用抽头延迟线78,可使得图11中由VPE 22(2)执行的相关向量处理操作更为精确,因为执行单元84(0)-84(X)中的中间相关处理级的输出累加不必被存储在向量数据文件82(0)-82(X)中。将来自执行单元84(0)-84(X)的中间向量数据样本集存储在向量数据文件82(0)-82(X)中可能导致舍入。从而,当下一中间向量数据样本集将被提供给执行单元84(0)-84(X)用于向量处理操作时,在向量处理操作的每个乘法阶段期间,任何舍入误差将被传播并相加。相反,在图11中的VPE 22(2)的示例中,由执行单元84(0)-84(X)计算出的中间相关输出向量数据样本集不必被存储在向量数据文件82(0)-82(X)中。在先的中间相关输出向量数据样本集可与针对接下来的相关输出向量数据样本集的中间相关输出向量数据样本集相累加,因为在要被处理的向量处理操作期间,抽头延迟线78将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X),且结果与针对在先的相关输出向量数据样本集的在先的向量数据样本集相累加。
上文对图4中的VPE 22(1)中所提供的组件的先前讨论同样适用于图11中的VPE22(2),从而将不再被描述。
现在将描述本实施例中图11中的VPE 22(2)以及用于在输入数据流路径80(0)-80(X)中将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X)的抽头延迟线78的附加细节和特征的进一步描述。就这一点而言,图12A和12B是例示出可在图11中的采用抽头延迟线78的VPE 22(2)中根据一示例性相关向量指令执行的示例性相关向量处理操作140的流程图。图12A和12B是例示出可在图11中的VPE 22(2)中根据一示例性相关/协方差向量处理操作利用取回的经交织准时和迟到输入向量数据样本集并行执行的示例性相关/协方差向量处理操作的流程图。
图12A和12B中的相关向量处理操作140中执行的示例性任务将参照图 13-17B中所提供的示例来描述。参照图12A,要根据一相关向量指令在相关向量处理操作140中处理的输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被取回到输入数据流路径80(0)-80(X)中以用于相关向量处理操作140(框142)。如上关于图11中的VPE 22(2)所讨论的,在执行单元84(0)-84(X)中将输入向量数据样本集86(0)-86(X)乘以从序列号生成器134接收的参考向量数据样本集130(0)-130(X)。例如,图13例示出序列号生成器134中的参考向量数据样本集130(0)-130(X)。在该示例中,全局寄存器文件40中存储了十六(16)个参考向量数据样本130(0)、130(1)、…、130(15),以便与输入向量数据样本集86(0)-86(X)中的十六(16)个输入向量数据样本86(0)、86(1)、…、86(15)相关。上文先前讨论的图6B例示出向量数据文件82(0)-82(X)中存储的示例性输入向量数据样本集86(0)-86(X),它同样适用于该示例,从而此处将不再被描述。
图11中的VPE 22(2)中的向量数据通道100(0)-100(X)中的任一个、一些或全部可被采用以根据向量指令取决于要在相关向量处理操作140中相关的输入向量数据样本集86(0)-86(X)和参考向量数据样本集130(0)-130(X)的宽度的编程来提供相关向量处理操作140。如果需要向量数据文件82(0)-82(X)的整个宽度,则所有的向量数据通道100(0)-100(X)可被用于相关向量处理操作140。注意,相关向量处理操作140可能仅需要可被用于相关向量处理操作140的向量数据通道100(0)-100(X)的某一子集。这可能是由于输入向量数据样本集86(0)-86(X)的宽度小于所有向量数据文件82(0)-82(X)的宽度,其中希望采用额外的向量数据通道100用于要与该相关向量处理操作140并行执行的其他向量处理操作。出于讨论当前示例的目的,假设在VPE 22(2)中相关向量处理操作102中所采用的输入向量数据样本集86(0)-86(X)和参考向量数据样本集涉及所有向量数据通道100(0)-100(X)。
返回参照图12A,经取回的输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被提供至输入数据流路径80(0)-80(X),以被加载到抽头延迟线78中作为第一输入向量数据样本集86S(0)-86(X)以用于相关向量处理操作140(框144)。输入向量数据样本集86(0)-86(X)被加载到主抽头延迟线78(0)中作为要由执行单元84(0)-84(X)为相关向量处理操作140处理的输入向量数据样本集86(0)-86(X)。对于相关向量处理操作140的第一个操作,加载到主抽头延迟线78(0)的输入向量数据样本集86(0)-86(X)不被移位。下一输入向量数据样本集86N(0)-86N(X)也可被加载到影子抽头延迟线78(1)中作为要由执行单元84(0)-84(X)处理的下一输入向量数据样本集86N(0)-86N(X)。如上文先前所讨论且在下文更详细讨论的那样,抽头延迟线78的目的是提供输入向量数据样本集86(0)-86(X)的移位以便将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X)以用于相关向量处理操作140的后续相关操作。在执行单元84(0)-84(X)所执行的相关向量处理操作140的每个处理级期间,输入向量数据样本86在主抽头延迟线78(0)中被移位以将经移位的输入向量数据样本集86S(0)-86S(X)提供给执行单元84(0)-84(X)。以此方式,输入向量数据样本集86(0)-86(X)不必在向量数据文件82(0)-82(X)中被存储、移位,以及对相关向量处理操作140的每个相关操作被重新取回。
就这一点而言,图14例示出可在图11中的VPE 22(2)中提供的示例性抽头延迟线78。在该实施例中,抽头延迟线78包括影子抽头延迟线78(1)和主抽头延迟线78(0)。如上文先前所讨论的,该示例中的主抽头延迟线78(0)由多个8位主流水线寄存器120组成,以允许输入向量数据样本86的分辨率降至8位长度。在该示例中,对于相关向量处理操作140的第一个相关操作,由执行单元84(0)-84(X)处理的第一个输入向量数据样本集86(0)-86(X)将不被移位。在执行单元84(0)-84(X)为相关向量处理操作140处理后续相关操作时,主抽头延迟线78(0)中所存储的输入向量数据样本集86(0)-86(X)中的输入向量数据样本86在主流水线寄存器120(0)-120(4X+3)中被移位,如图14中箭头所指示的,以成为经移位的输入向量数据样本集86S(0)-86S(X)。以此方式,通过接收经移位的输入向量数据样本集86S(0)-86S(X)并执行其相关向量处理操作140而不必存储、移位以及从向量数据文件82(0)-82(X)重新取回输入向量数据样本集86(0)-86(X),执行单元84(0)-84(X)被充分利用。
针对相关向量处理操作140,主和影子抽头延迟线78(0)、78(1)中执行的移位数将取决于要被相关的样本数。如果从向量数据文件82(0)-82(X)被取入主抽头延迟线78(0)和影子抽头延迟线78(1)的输入向量数据样本集86(0)-86(X)中的输入向量数据样本86的数量大于相关向量处理操作140中的相关操作的数量,则执行单元84(0)-84(X)可执行相关向量处理操作140而无需任何进一步的输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被取回。然而,如果相关向量处理操作140中的相关操作的数量大于从向量数据文件82(0)-82(X)被取入主抽头延迟线78(0)和影子抽头延迟线78(1)的输入向量数据样本集86(0)-86(X)中的输入向量数据样本86的数量,则额外的输入向量数据样本集86(0)-86(X)可从向量数据将文件82(0)-82(X)被取回作为相关向量处理操作140的一部分。
在该实施例中,主流水线寄存器120(0)-120(4X+3)一起是向量数据文件82(0)-82(X)的宽度。在向量数据文件82(0)-82(X)是512位宽且“X”等于十五(15)的示例中,将有总计六十四(64)个主流水线寄存器120(0)-120(63),各自为八(8)位宽,以提供总计512位宽(即64个寄存器×每个8位)。从而在该示例中,主抽头延迟线78(0)能够存储一(1)个输入向量数据样本集86(0)-86(X)的整个宽度。通过在该示例中提供八(8)位宽的主流水线寄存器120(0)-120(4X+3),输入向量数据样本集86(0)-86(X)可被向下移位成八(8)位的向量数据样本尺寸以用于8位相关向量处理操作。如果对于某一相关向量处理操作140希望更大的输入向量数据样本86尺寸,诸如举例来说16位或32位,则输入向量数据样本集86(0)-86(X)可在主流水线寄存器120(0)-120(4X+3)中一次移位两(2)个主流水线寄存器120。
图15A例示出在相关向量处理指令140的第一时钟循环(循环0)期间从向量数据文件82(0)-82(X)加载到主抽头延迟线78(0)的输入向量数据样本集86(0)-86(X)。第一输入向量数据样本集86(0)-86(X)被加载到主抽头延迟线78(0)作为输入向量数据样本X1-X32,但是提供了六十四(64)个输入向量数据样本。主流水线寄存器120(0)-120(2X+1)(也参见图14)被加载来自输入向量数据样本集86(0)-86(X)的准时和迟到输入向量数据样本86。例如,一专用向量指令可被支持以将输入向量数据样本集86(0)-86(X)的准时和迟到输入向量数据样本加载到主抽头延迟线78(0)(以及影子抽头延迟线78(1),如下文更详细讨论的那样)中。例如,主流水线寄存器122(0)、122(1)、122(2X+2)和122(2X+3)一起包含输入向量数据样本86(0)。主流水线寄存器122(0)、122(1)包含准时输入向量数据样本86OT(0),它们是X(0)和X(1),其中“OT”指的是“准时”。主流水线寄存器122(2X+2)、122(2X+3)包含迟到输入向量数据样本86L(0),它们是X(1)和X(2),其中“L”指的是“迟到”。主抽头延迟线78(0)中的这种输入向量数据样本86的存储模式对于其他主流水线寄存器122(2)-122(2X+1)和122(2X+4)-122(4X+3)(见图14)重复。
返回参照图14,抽头延迟线78中还提供了影子抽头延迟线78(1)。影子抽头延迟线78(1)可被用来对来自向量数据文件82(0)-82(X)的下一输入向量数据样本集86N(0)-86N(X)进行锁存和流水线化,供后续向量处理操作。影子抽头延迟线78(1)也由多个8位影子流水线寄存器122组成,以允许输入向量数据样本的分辨率降至8位长度,类似于主抽头延迟线78(0)。影子流水线寄存器122一起是向量数据文件82(0)-82(X)的宽度,该宽度在本示例中是512位,使得影子抽头延迟线78(1)也能够存储一(1)个输入向量数据样本集86(0)-86(X)的整个宽度,正如主抽头延迟线78(0)那样。从而,在该实施例中,包括在主抽头延迟线78(0)中的影子流水线寄存器122(0)-122(4X+3)的数量是向量数据通道100(0)-100(X)的数量的四倍,在该示例中向量数据通道的数量总计是十六(16),每个向量数据通道100(0)-100(X)各自能够支持32位。从而,在该示例中,主流水线寄存器120的数量也是总计六十四(64),对应于总计512位(即64个寄存器×每个8位)。
图15B例示出在相关向量处理指令140的第二时钟循环(循环1)期间被加载到影子抽头延迟线78(1)中的下一输入向量数据样本集86N(0)-86N(X)。在第一输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被加载到主抽头延迟线78(0)之后,该下一输入向量数据样本集86N(0)-86N(X)被加载到影子抽头延迟线78(1)以便建立相关向量处理操作140的执行。该下一输入向量数据样本集86N(0)-86N(X)被加载到影子抽头延迟线78(1)作为输入向量数据样本X(32)-X(63),带有准时和迟到输入向量数据样本86OT、86L两者。注意,在该示例中,X(32)和X(33)构成了输入向量数据样本86(0)的准时输入向量数据样本86OT,而X(33)和X(34)构成了输入向量数据样本86(0)的迟到输入向量数据样本86L,就像上文讨论的主抽头延迟线78(0)中提供的存储模式那样。其他模式可被提供以将输入向量数据样本86分组在一起以构成输入向量数据样本集86(0)-86(X)。在图15B中,在相关向量处理操作140的第一处理级期间相关的来自序列生成器134的参考向量数据样本集130(0)-130(X)的参考向量数据样本130(即Y(0)和Y(1))也被示为在寄存器(“C”)中被提供给执行单元84(0)-84(X)以用于相关向量处理操作104。
返回参照图14,当输入向量数据样本集86(0)-86(X)中的输入向量数据样本86在相关向量处理操作140的每个处理级期间在主抽头延迟线78(0)中被移位时,存储在影子流水线寄存器122中的下一输入向量数据样本86N也在影子抽头延迟线78(1)的影子流水线寄存器122中被移位。因为在该示例中输入向量数据样本集86(0)-86(X)的输入向量数据样本86按照准时和迟到版本被存储,图14中的抽头延迟线78(0)和78(1)之间所提供的移位模式与图7中的抽头延迟线78(0)和78(1)之间所提供的移位模式不同。如图14中所示,准时输入向量数据样本86OT从影子抽头延迟线78(1)中的影子流水线寄存器122(0)被移位至主抽头延迟线78(0)中的主流水线寄存器122(2X+1)。类似地,迟到输入向量数据样本86L从影子抽头延迟线78(1)中的影子流水线寄存器122(2X+2)被移位至主抽头延迟线78(0)中的主流水线寄存器122(4X+3)。以此方式,当在相关向量处理操作140期间发生输入向量数据样本86的移位时,准时输入向量数据样本86OT与迟到输入向量数据样本86OT在抽头延迟线78(0)、78(1)中保持彼此隔离。
相关向量处理操作140处理级在执行单元84(0)-84(X)中进行,最终,影子抽头延迟线78(1)中初始存储的整个下一输入向量数据样本集86N(0)-86N(X)被完全移位至主抽头延迟线78(0)中以便被提供给执行单元84(0)-84(X)供处理。以此方式,在相关向量处理操作140在当前输入向量数据样本集86(0)-86(X)上完成之后,然后可按需无延迟地向执行单元84(0)-84(X)提供主抽头延迟线78(0)中所存储的先前的下一输入向量样本数据集86N(0)-86N(X)作为当前输入向量数据样本集86(0)-86(X)以用于下一相关向量处理操作140。
在第一输入向量数据样本集86(0)-86(X)和下一输入向量数据样本集86N(0)-86N(X)被分别加载到主抽头延迟线78(0)和影子抽头延迟线78(1)中之后,如图15B中所示,主抽头延迟线78(0)中所提供的第一输入向量数据样本集86(0)-86(X)被提供至相应的执行单元84(0)-84(X)以在相关向量处理操作140的第一处理级中被处理(图12A中的框146)。该第一输入向量数据样本集 86(0)-86(X)变为正被执行单元84(0)-84(X)处理的当前输入向量数据样本集86(0)-86(X)。当前输入向量数据样本86(0)被提供至执行单元84(0),当前输入向量数据样本86(1)被提供至执行单元84(1),以此类推,如图11中的VPE 22(2)中所例示。在相关向量处理操作140的当前处理级中,要与输入向量数据样本集86(0)-86(X)相关的参考向量数据输入样本130(0)-130(X)被提供给执行单元84(0)-84(X)(图12A中的框148)。
接着,执行单元84(0)-84(X)执行相关向量处理操作140(图12A中的框150)。更为具体地,在第一处理级期间,执行单元84(0)-84(X)根据操作R(OT)[n]=y[0]*x[n](针对准时输入向量数据样本86OT)和R(L)[n]=y[1]*x[1+n](针对迟到输入向量数据样本86L)将当前输入向量数据样本集86(0)-86(X)乘以参考向量数据样本130,其中y[]是指定的参考向量数据样本130,而x[n]是当前输入向量数据样本集86(0)-86(X)。该相关的结果是当前准时相关输出向量数据样本集R(OT)[n]和当前迟到相关输出向量数据样本集R(L)[n]。执行单元84(0)-84(X)然后将每个当前结果相关向量数据样本集与执行单元84(0)-84(X)计算出的其对应的在先的结果相关向量数据样本集累加,以提供新的在先的输入向量数据样本集86(0)-86(X)(图12B中的框152)。在相关向量处理操作140的第一处理级中,没有在先的结果相关输出向量数据样本集132(0)-132(X)。从而,第一/当前结果相关输出向量数据样本集132(0)-132(X)将简单地变为用于相关向量处理操作140的第二、下一处理级的在先的输入向量数据样本集86(0)-86(X)。
如果相关向量处理操作140的所有处理级都已完成(图12B中的框154),则累加后的在先的结果相关输出向量数据样本集132(0)-132(X)在输出数据流路径98(0)-98(X)中被提供作为要被提供并存储在向量数据文件82(0)-82(X)中的结果相关输出向量数据样本集132(0)-132(X)(图12B中的框157)。如果相关向量处理操作140的所有处理级还未完成(图12A中的框154),则经移位的输入向量输入样本集86S(0)-86S(X)在抽头延迟线78(0)、78(1)中被移位到用于相关向量处理操作140的下一位置,以提供经移位的输入向量数据样本集86S(0)-86S(X)(图12B中的框156)。经移位的输入向量数据样本集86S(0)-86S(X)被提供用于计算下一结果相关输出向量数据样本集132(0)-132(X),以便与在先的结果相关输出向量数据样本集132(0)-132(X)累加。在上文先前关于图14详细描述了抽头延迟线78(0)、78(1)中输入向量数据样本86的移位。
图15C例示出当输入向量数据样本集86(0)-86(X)在相关向量处理操作140的第二处理级中被移位以成为新的经移位的输入向量数据样本集86S(0)-86S(X)以用于下一相关处理操作140(针对准时输入向量数据样本86SOT的R(OT)[n]=y[2]*x[2+n]以及针对迟到输入向量数据样本86SL的R(L)[n]=y[3]*x[3+n])时,抽头延迟线78的内容。主抽头延迟线78(0)中的输入向量数据样本集86(0)-86(X)移位两个输入向量数据样本86。例如,图15B中输入向量数据样本86OT(1)(为X(2)和X(3))现在被移位至图15C中的输入向量数据样本86S(0)中。经移位的输入向量数据样本集86S(0)-86S(X)变为当前输入向量数据样本集86(0)-86(X)。提供给执行单元84(0)-84(X)的参考向量数据样本130也是参考向量数据样本130,在该示例中为Y(2)和Y(3)。
继续参照图12B,通过将下一经移位的输入向量数据样本集86S(0)-86S(X)从主抽头延迟线78(0)(以及从影子抽头延迟线78(1)的一部分)提供至执行单元84(0)-84(X)以便与下一参考向量数据样本130相乘(图12A中的框150),过程重复,其中结果相关输出向量数据样本集132(0)-132(X)与在先的结果相关输出向量数据样本集132(0)-132(X)相累加(图12B中的框152)。图15D例示出在示例性相关向量处理操作140的最后处理级期间抽头延迟线78(0)、78(1)中存在的输入向量数据样本86的状态。在该示例中,如图15D中所示,因为抽头延迟线78的全部数据宽度都被用于输入向量数据样本集86(0)-86(X),因此相关向量处理操作140有十六(16)个处理级,但在准时和迟到输入向量数据样本86OT、86L之间分割。如图15D中所示,Y(30)和Y(31)是相关向量处理操作140的最后的参考向量数据样本130(X),在图13的示例中是参考向量数据样本130(15)。经移位的输入向量数据样本集86S(0)-86S(X)已被移位十六(16)次(在该示例中向量数据通道100(0)-100(X)的宽度),使得在相关向量处理操作140的最终第十六个处理级中,输入向量数据样本X(30)和X(31)被存储在主抽头延迟线78(0)中的经移位的输入向量数据样本86S(0)中。
图16是在上述示例中示例性十六(16)个相关向量处理级已完全执行之后,图11的VPE 22(2)中的执行单元84(0)-84(X)中的累加器的内容(即结果相关输出向量数据样本132)的示意图。结果相关输出向量数据样本集被示为132(0)-132(X)。累加器Acc0-Acc3被示于图16中,因为在该示例中,每个执行单元84(0)-84(X)具有为每个向量数据通道100(0)-100(X)并行布置的四个累加器。累加后的结果输出向量数据样本可在输出数据流路径98(0)-98(X)上被提供给向量数据文件82(0)-82(X)作为总的结果相关输出向量数据样本集132(0)-132(X)以便被存储在其中用于进一步的分析和/或处理。VPE 22(2)可支持专门化的向量指令以便按需将结果相关输出向量数据样本集132(0)-132(X)的行从向量数据文件82(0)-82(X)移动到向量单元数据存储器32(见图2)。
执行单元84(0)-84(X)所提供的结果输出向量数据样本集(包括上述的结果滤波器向量输出数据样本集94(0)-94(X)和结果相关输出向量数据样本集132(0)-132(X))可按取决于VPE所执行的向量指令的不同交织格式被存回向量数据文件82(0)-82(X)(即82(31))。在本示例中‘X’等于三十一(31),以便提供向量数据文件82(0)-82(X),每个是三十二(32)位宽。例如,如图17A中所例示,结果输出向量数据样本集158(0)-158(X)(即158(31))可以它们的实(“q”)分量和虚(“i”)分量分开地被存储在向量数据文件82(0)-82(X)中。结果输出向量数据样本集158(0)-158(X)由‘X+1’个结果输出向量数据样本158组成,在该示例中是158(0)、158(1)、…、以及158(X)。出于效率目的,存储以它们的实(“q”)分量和虚(“i”)分量分开的结果输出向量数据样本集158(0)-158(X)(即158(31))可能更为高效,诸如在下一向量指令作用于结果输出向量数据样本集158(0)-158(X)(即158(31))的实分量和虚分量上作为输入向量数据样本集的情况下。或者可能不可能将结果输出向量数据文件158存储在向量数据文件82中以使得结果输出向量数据样本158分成其实分量和虚分量。例如,如果将十六(16)位向量数据样本乘以另一十六(16)位向量数据样本,则产生三十二(32)位结果向量数据样本。例如,该三十二(32)位结果输出向量数据样本158可以是图17A中的Y0。Y0的虚分量,即Y0.i 158(I),可被存储在向量数据文件82(0)的地址‘0’中,而Y0的实分量,即Y0.q 158(Q),可被存储在另一地址(诸如地址‘A’)中。
图17A中的结果输出向量数据样本集158(0)-158(X)(即158(31))可按偶数和奇数结果输出向量数据样本交织地被存储在向量数据文件82(0)-82(X)(即 82(31))中。这由图17B通过例子例示出。如图17B所例示,结果输出向量数据样本Y0-Y31,即158(0)-158(X)(即158(31))以偶数和奇数向量数据样本的经交织格式被存储在向量数据文件82(0)-82(31)的地址‘0’和地址‘A’之中。结果输出向量数据样本Y0 158(0)被存储在向量数据文件82(0)的地址‘0’中。结果输出向量数据样本Y1 158(1)不被存储在向量数据文件82(1)的地址‘0’中,但被存储在向量数据文件82(0)的地址‘A’中。结果输出向量数据样本Y2 158(2)被存储在向量数据文件82(1)的地址‘0’中,以此类推。
某些无线基带操作要求数据样本在被处理之前进行格式转换。例如,在图17A和17B中以经交织格式存储在向量数据文件82(0)-82(X)中的结果输出向量数据样本集158(0)-158(X)可能需要被解交织以用于下一向量处理操作。例如,如果结果输出向量数据样本158(0)-158(X)表示CDMA信号,则结果输出向量数据样本158(0)-158(X)需要被解交织以分出信号的偶相位和奇相位。经解交织的信号也可在一相关处理操作中与本地生成的码或序列号相关,以确定CDMA系统是否能够提取该信号,诸如利用上文关于图11-16所述的示例性相关向量处理操作。常规的可编程处理器采用多个步骤实现数据样本的格式转换,在向量数据样本格式转换中增加了循环、功耗、以及数据流复杂性。在经格式转换的向量数据样本被提供给执行单元之前,向量处理器可预处理向量数据样本以提供格式转换。经格式转换的向量数据样本被存储在向量数据存储器中且作为要求数据格式转换要由执行单元处理的向量处理操作的一部分被重新取回。然而,对向量数据样本的这种格式预处理延迟了执行单元对经格式转换的向量数据样本的后续处理,且造成执行单元中的计算组件未被充分利用。
此处以及下文所公开的实施例提供了经交织向量数据样本集的转换,诸如图18A和18B中所例示的那些。例如,图18A和18AB例示出以不同格式存储在向量数据文件82(0)-82(X)中的向量数据样本集D(0)-D(X)。图18A例示出以有符号的复(SC)十六位样本(SC16)存储且按实分量和虚分量进行格式交织的向量数据样本集D(0)-D(X)。三十二(32)位向量数据样本D(0)的十六(16)位实分量和虚分量(D(0)(Q)和D(0)(I))被存储在三十二(32)位向量数据文件82(0)中。向量数据样本D(X)的十六(16)位实分量和虚分量(D(X)(Q)和D(X)(I))被存储在三十二(32)位向量数据文件82(X)中。图18B例示出以SC八位样本(SC8)存储且按实分量和虚分量进行格式交织的向量数据样本集D(0)-D(X)。十六(16)位向量数据样本D(0)(1)的八(8)位实分量和虚分量(D(0)(1)(Q)、D(0)(1)(I))被存储在向量数据文件82(0)中。十六(16)位向量数据样本D(0)(0)的八(8)位实分量和虚分量(D(0)(0)(Q)、D(0)(0)(I))也被存储在三十二(32)位向量数据文件82(0)中。同样,十六(16)位向量数据样本D(X)(1)的八(8)位实分量和虚分量(D(X)(1)(Q)、D(X)(1)(I))被存储在三十二(32)位向量数据文件82(X)中。十六(16)位向量数据样本D(X)(0)的八(8)位实分量和虚分量(D(X)(0)(Q)、D(X)(0)(I))也被存储在三十二(32)位向量数据文件82(X)中。
就这一点而言,图19是可作为图2中的VPE 22被提供的另一示例性VPE22(3)的示意图。如下文将更详细描述的,图19中的VPE 22(3)被配置成以消除了的或减少了的向量数据样本重新取回和减少了的功耗提供输入向量数据样本集的进行中格式转换(如解交织),所述输入向量数据样本集被提供给执行单元用于在VPE 22(3)中进行向量处理操作。输入向量数据样本集的进行中格式转换意味着从向量数据存储器检索出的输入向量数据样本集在被提供给执行单元用于执行之前被格式转换,而无需被存储并从向量数据存储器重新取回。为了消除或使从向量数据文件对输入向量数据样本的重新取回最少化以减少功耗并提高处理效率,格式转换电路系统159(0)-159(X)被包括在向量数据文件82(0)-82(X)与执行单元84(0)-84(X)之间的每条向量数据通道100(0)-100(X)中。如将在下文更详细讨论的,来自向量数据文件82(0)-82(X)的输入向量数据样本集86(0)-86(X)在VPE 22(3)中的格式转换电路系统159(0)-159(X)中被格式转换(例如解交织),以将经格式转换的输入向量数据样本集86F(0)-86F(X)提供至执行单元84(0)-84(X)以用于要求输入向量数据样本集86(0)-86(X)的解交织的向量处理操作。在本示例中,所有经格式转换的输入向量数据样本86F构成经格式转换的输入向量数据样本集86F(0)-86F(X)。‘X’+1是在该示例中VPE 22(3)中提供的用于输入向量数据样本86的处理的并行输入数据通道的最大数量。
以此方式,VPE 22(3)中对输入向量数据样本集86(0)-86(X)的格式转换不要求预处理、存储以及从向量数据文件82(0)-82(X)重新取回,从而减少了功耗。进一步,由于输入向量数据样本集86(0)-86(X)的格式转换不要求经格式转换的输入向量数据样本集86(0)-86(X)的预处理、存储以及从向量数据文件82(0)-82(X)重新取回,因此执行单元84(0)-84(X)不会延迟执行向量处理操作。从而,VPE 22(3)中的数据流路径的效率不受到输入向量数据样本集86(0)-86(X)的格式转换预处理延迟的限制。经格式转换的(例如经解交织的)输入向量数据样本集86F(0)-86F(X)被本地化地提供给执行单元84(0)-84(X)。执行单元84(0)-84(X)中的向量处理仅受到计算资源而非数据流限制的限制。
注意,尽管图19中的VPE 22(3)中例示出主和影子抽头延迟线78(0)、78(1),但并不要求在图19中的VPE 22(3)中包括抽头延迟线。在如图19中所例示的该示例中,格式转换电路系统159(0)-159(X)可被包括在可选的主抽头延迟线78(0)中。这种安排在图19中的VPE 22(3)中的向量数据文件82(0)-82(X)与执行单元84(0)-84(X)之间的输入数据流路径80(0)-80(X)中提供格式转换电路系统159(0)-159(X)。主抽头延迟线78(0)的操作先前关于VPE 22(1)和22(2)被描述过了。如上文先前所讨论的,主和影子抽头延迟线78(0)、78(1)可被用于向量处理操作,要求经格式转换的输入向量数据样本集86F(0)-86F(X)被提供给执行单元84(0)-84(X),执行单元继而也要求经格式转换的经移位的输入向量数据样本集,称为86SF(0)-86SF(X)。
注意,图19中VPE 22(3)中提供的相同的组件和架构在图11中的VPE 22(2)中被提供。图19中的VPE 22(3)与图11中的VPE 22(2)之间的公共组件在图19中用与图11中VPE 22(2)的组件共同的元素编号例示出。上文对图11中的VPE22(2)的这些公共组件的先前描述和讨论也适用于图19中的VPE 22(3),且因此这里将不再描述。
现在将描述本实施例中图19中的VPE 22(3)以及用于在输入数据流路径80(0)-80(X)中将经格式转换的输入向量数据样本集86F(0)-86F(X)提供给执行单元84(0)-84(X)的抽头延迟线78的附加细节和特征的进一步描述。就这一点而言,图20是例示出可在图19中的VPE 22(3)中根据要求输入向量数据样本集86(0)-86(X)的格式转换的示例性向量指令采用格式转换电路系统159(0)-159(X)执行的示例性解交织格式转换向量处理操作160的流程图。
参照图20,根据向量指令用于向量处理操作160的输入向量数据样本集 86(0)-86(X)从向量数据文件82(0)-82(X)被取回到输入数据流路径80(0)-80(X)中(框162)。例如,用于向量处理操作160的格式转换可以是解交织向量处理操作160,其中输入向量数据样本集86(0)-86(X)从其在向量数据文件82(0)-82(X)中的经交织状态被解交织成经解交织的输入向量数据样本集86F(0)-86F(X)。图19中的VPE 22(3)中的向量数据通道100(0)-100(X)中的任一个、一些或全部可被采用以根据向量指令取决于要针对向量处理操作160进行格式转换的输入向量数据样本集86(0)-86(X)的宽度的编程来提供向量处理操作160。如果需要向量数据文件82(0)-82(X)的整个宽度,则所有的向量数据通道100(0)-100(X)可被用于向量处理操作160。向量处理操作160可能仅需要向量数据通道100(0)-100(X)的某一子集,该子集可被用于向量处理操作160。这可能是由于输入向量数据样本集86(0)-86(X)的宽度小于所有向量数据文件82(0)-82(X)的宽度,其中希望采用额外的向量数据通道100用于要与该向量处理操作160并行执行的其他向量处理操作。出于讨论当前示例的目的,假设在图19中的VPE 22(3)中被格式转换成用于向量处理操作160的输入向量数据样本集86F(0)-86F(X)的输入向量数据样本集86(0)-86(X)涉及所有向量数据通道100(0)-100(X)。
继续参照图20,经取回的输入向量数据样本集86(0)-86(X)被提供至到格式转换电路系统159(0)-159(X)的输入数据流路径80(0)-80(X)中,以便根据向量处理操作160进行格式转换(框164)。作为一非限制性示例,在被提供给执行单元84(0)-84(X)用于向量处理操作160之前,当前输入向量数据样本集86(0)-86(X)可任选地被加载到主抽头延迟线78(0)中作为要被格式转换的输入向量数据样本集86(0)-86(X)。如先前所讨论的,下一输入向量数据样本集86(0)-86(X)也可被任选地加载到影子抽头延迟线78(1)中作为要由执行单元84(0)-84(X)处理的下一输入向量数据样本集86N(0)-86N(X)。如上文先前所讨论的,抽头延迟线78的目的是在作用于经移位的输入向量数据样本86S的向量处理操作160的操作期间将输入向量数据样本集86(0)-86(X)移位成要被提供给执行单元84(0)-84(X)的经移位的输入向量数据样本86S(0)-86S(X)。如果经格式转换的输入向量数据样本集86F(0)-86F(X)在向量处理操作160期间也在抽头延迟线78中被移位,则经移位的经格式转换的输入向量数据样本集被称为 86SF(0)-86SF(X)。
继续参照图20,执行单元84(0)-84(X)可接着使用经格式转换的输入向量数据样本集86F(0)-86F(X)来执行向量处理操作160(框166)。执行单元84(0)-84(X)可被配置成使用经格式转换的输入向量数据样本集86F(0)-86F(X)提供乘法和/或累加。如果在向量处理操作160期间抽头延迟线78被采用来移位经格式转换的输入向量数据样本集86F(0)-86F(X),则执行单元84(0)-84(X)可在向量处理操作160的每个处理级期间接收经移位的经格式转换的输入向量数据样本集86SF0)-86SF(X),直到向量处理操作160完成为止(框168)。一旦向量处理操作160已完成,则基于用经格式转换的输入向量数据样本集86F(0)-86F(X)或经移位的经格式转换输入向量数据样本集86SF(0)-86SF(X)进行的向量处理的结果输出向量数据样本集172(0)-172(X)被提供在输出数据流路径98(0)-98(X)中,以便被提供并存储在向量数据文件82(0)-82(X)中(框170)。结果输出向量数据样本集172(0)-172(X)由‘X+1’个结果输出向量数据样本172组成,在该示例中是172(0)、172(1)、…、以及172(X)。
图21是从主抽头延迟线78(0)接收经移位的输入向量数据样本集86S(0)-86S(X)的示例性格式转换电路系统159(0)-159(X)的示意图。在该示例中,格式转换电路系统159(0)-159(X)被提供在输入数据流路径80(0)-80(X)中的主抽头延迟线78(0)的输出上。现在将描述该示例性格式转换电路系统159(0)-159(X)。
现在将描述该示例性格式转换电路系统159(0)-159(X)。格式转换电路系统159(0)的内部组件的示例性细节在图21中提供,但是这同样适用于格式转换电路系统159(1)-159(X)。取图21中的格式转换电路系统159(0)作为示例,该示例中的格式转换电路系统159(0)被配置成在向量数据通道100(0)中提供来自主流水线寄存器120(0)、120(1)、120(2X+2)、120(2X+3)的输入向量数据样本86(0)或经移位的输入向量数据样本86S(0)的解交织和符号扩展,以便分别提供经格式转换的输入向量数据样本86F(0)或经移位的经格式转换的输入向量数据样本86SF(0)。就这一点而言,在本示例中提供了分别根据所指派的主流水线寄存器120(0)-120(2X+3)安排的四个多路复用器174(3)-174(0)。每个多路复用器174(3)-174(0)被配置成要么选择经移位的输入向量数据样本86S(0)中所指派的主流水线寄存器120(0)、120(1)、120(2X+2)、120(2X+3)中的一部分,要么选择经移位的输入向量数据样本86S(0)中要存储在相邻于所指派的主流水线寄存器120(0)、120(1)、120(2X+2)、120(2X+3)的一主流水线寄存器120中的一部分。
例如,如果主流水线寄存器120(0)、120(1)、120(2X+2)、120(2X+3)以复交织形式将经交织的经移位的输入向量数据样本86S(0)存储为实[15:8]、虚[15:8]、实[7:0]、虚[7:0],且根据要被执行的向量指令所希望的经解交织的格式是实[15:0]和虚[15:0],则多路复用器174(3)-174(0)选择将如下。多路复用器174(3)将选择经移位的输入向量数据样本86S的存储在其所指派的主流水线寄存器120(0)中的一部分。然而,多路复用器174(2)将选择经移位的输入向量数据样本86S的存储在主流水线寄存器120(1)中的一部分。这将在相邻的输入数据流路径80(0)(3)、80(0)(2)中提供输入向量数据样本86S(0)的经解交织的实部(即,实[15:0])。类似地,多路复用器174(0)将选择经移位的输入向量数据样本86S的存储在其所指派的主流水线寄存器120(2X+3)中的一部分。然而,多路复用器174(1)将选择经移位的输入向量数据样本86S的存储在主流水线寄存器120(2X+2)中的一部分。这将在相邻的输入数据流路径80(0)(1)、80(0)(0)中提供经移位的输入向量数据样本86S(0)的经解交织的虚部(即,虚[15:0])。多路复用器176(1)、176(0)向每个多路复用器174(3)-174(0)提供了从非指派的非相邻的主流水线寄存器120(0)、120(1)、120(2X+2)、120(2X+3)中选择经移位的输入向量数据样本86S(0)的一部分的能力,如图21中所例示。
继续参照图21,格式转换电路系统159(0)-159(X)也可被配置成对经格式转换的输入向量数据样本集86F(0)-86F(X)进行符号扩展。例如,如果输入向量数据样本集86(0)-86(X)的格式转换涉及有符号的向量数据样本从小位宽转换成大位宽,则格式转换电路系统159(0)-159(X)可被配置成通过对非负数将最高有效位扩展为‘0’以及对负数将最高有效位扩展为‘F’来对经解交织的向量数据样本进行符号扩展。格式转换电路系统159(0)-159(X)可具有根据正被执行的向量指令设置的符号扩展(SC)输入178(0)-178(X),以便指示出是否要对经格式转换的输入向量数据样本集86F(0)-86F(X)执行符号扩展。SC输入178(0)-178(X)可被提供给格式转换电路系统159(0)-159(X)中所提供的符号扩展电路系统180(0)-180(X),以便根据SC输入178(0)-178(X)根据正被处理的向量指令提供的可编程数据路径配置来执行符号扩展。可对每个向量指令配置和重新配置SC输入178(0)-178(X),以便在VPE 22(3)进行的向量处理中提供灵活性。例如,如果希望的话,格式转换电路系统159(0)-159(X)中的可编程数据路径可由SC输入178(0)-178(X)配置,可按需以逐时钟循环的方式对向量指令的每个时钟循环配置和重新配置SC输入178(0)-178(X),以便按需提供格式转换,同时充分利用执行单元84(0)-84(X)。
但是如上所讨论的,格式转换电路系统159(0)-159(X)不需要被作为主抽头延迟线78(0)的一部分被提供。主和影子抽头延迟线78(0)、78(1)是可选的。格式转换电路系统159(0)-159(X)可直接从向量数据文件82(0)-82(X)接收输入向量数据样本集86(0)-86(X)。在该情形中,作为一示例,参照图21,输入向量数据样本集86(0)-86(X)可从向量寄存器文件82(0)-82(X)直接被加载到主寄存器120(0)-120(4X+3)中。
进一步,注意,尽管格式转换电路系统159(0)-159(X)被提供在主抽头延迟线78(0)的输出上以对输入向量数据样本集86(0)-86(X)进行格式转换,但这并不要求这样。图21中的格式转换电路系统159(0)-159(X)可被提供在主和影子抽头延迟线78(0)、78(1)的输入侧,使得从向量数据文件82(0)-82(X)取回的输入向量数据样本集86(0)-86(X)在被加载到主和影子抽头延迟线78(0)、78(1)之前在格式转换电路系统159(0)-159(X)中被格式转换。以此方式,输入向量数据样本集86(0)-86(X)将在主和影子抽头延迟线78(0)、78(1)中被存储为经格式转换的输入向量数据样本集86F(0)-86F(X)(或移位后的86SF(0)-86SF(X))。经格式转换的输入向量数据样本集86F(0)-86F(X)(或移位后的86SF(0)-86SF(X))然后可从主抽头延迟线78(0)被直接提供至执行单元84(0)-84(X)供在向量处理操作中执行。
如上所讨论的,根据要被执行的向量指令,输入数据流路径80(0)-80(X)可根据可编程的输入数据路径配置来被编程以采用格式转换电路系统159(0)-159(X)。就这一点而言,图22是提供了向量指令的各位的示例性数据格式的图表182,以在图19中的VPE 22(3)中控制对输入向量数据样本集86(0)-86(X)的移位和格式转换的编程。图表182中的字段中所提供的数据提供了对VPE 22(3)的编程,以根据要被处理的向量指令是否需要格式转换电路系统159(0)-159(X)和/或抽头延迟线78的功能性来控制格式转换电路系统159(0)-159(X)和/或抽头延迟线78是否要被包括在输入数据流路径80(0)-80(X)中。
例如在图22中,在一向量指令或向量编程的位[7:0]中提供偏移字段184(BIAS_SC16)以指示出在抽头延迟线78使用有符号的复十六(16)位格式(SC16)时是否提供用于算数指令的移位偏移。在该向量指令或向量编程的位[16]中提供第一源数据格式转换字段186(DECIMATE_SRC1)以指示出第一源数据(即输入向量数据样本集86(0)-86(X))是否应被抽取(decimate)(即解交织)并从SC8转换成SC16格式。在该向量指令或向量编程的位[17]中提供第二源数据格式转换字段188(DECIMATE_SRC2)以指示出第二源数据(即输入向量数据样本集86(0)-86(X))是否应被抽取(decimate)(即解交织)并从SC8转换成SC16格式。位[18]中提供输出数据格式字段190(DEST_FMT)以指示出输出源数据(如图19中的VPE 22(3)中的结果输出向量数据样本集172(0)-172(X))在被存储在向量数据文件82(0)-82(X)中时是应以SC16格式存储还是从SC16转换成SC8格式并进行重排序。位[19]中提供相位格式字段192(DECIMATE_PHASE)以指示出是否应沿偶数(例如准时)和奇数(例如迟到)样本对输入源数据(即输入向量数据样本集86(0)-86(X))和输出数据(例如图19中的VPE 22(3)中的结果输出向量数据样本集172(0)-172(X))进行抽取(即解交织),这尤其对于特定于CDMA的向量处理操作可能是有用的,如上文以及在图17B中先前所讨论的。
如上所讨论的,在VPE 22中的执行单元84(0)-84(X)对输入向量数据样本集执行向量处理并作为结果在输出数据流路径98(0)-98(X)上提供结果输出向量数据样本集之后,可能需要对结果输出向量数据样本集执行后续向量处理操作。然而,对于后续向量处理操作,结果输出向量数据样本集可能需要被重排序。从而,从先前的处理操作产生的结果输出向量数据样本集必须被存储在向量数据文件82(0)-82(X)中,被取回用于重排序,以及以经重排序的格式被重新存储在向量数据文件82(0)-82(X)中。例如,后续处理操作可能要求先前处理的向量数据样本在被存储在向量数据文件82(0)-82(X)中时被交织,如上在图17A和17B中所讨论的那样。
作为另一示例,后续处理操作可能要求先前处理的向量数据样本在被存储在向量数据文件82(0)-82(X)中时被解交织。例如,在CDMA处理操作中,表示某一信号的数据样本可能需要根据该信号的偶数(准时)和奇数(迟到)相位被存储和交织。为了解决这个问题,向量处理器可包括在来自执行单元的输出向量数据被存储在向量数据存储器中之后对输出向量数据执行后处理重排序的电路系统。存储于向量数据存储器中的经后处理的输出向量数据样本从向量数据存储器中被取回,被重排序,以及被存回向量数据存储器。该后处理延迟了执行单元对经重排序的向量数据样本的后续处理,且造成执行单元中的计算组件未被充分利用。
就这一点而言,图23是可作为图2中的VPE 22被提供的另一示例性VPE22(4)的示意图。如下文将更详细描述的,图23中的VPE 22(4)被配置成以消除了的或减少了的向量数据样本重新取回和减少了的功耗提供对执行单元84(0)-84(X)所提供的用于向量处理操作的结果输出向量数据样本集194(0)-194(X)的进行中重排序,以便存储在VPE 22(4)中的向量数据文件82(0)-82(X)中。结果输出向量数据样本集194(0)-194(X)由‘X+1’个结果输出向量数据样本194组成,在该示例中是194(0)、194(1)、…、以及194(X)。例如,重排序可包括在结果输出向量数据样本集194(0)-194(X)被存储在向量数据文件82(0)-82(X)中之前对其进行交织。
如图23中所示且在下文更详细讨论的,重排序电路系统196(0)-196(X)在每条向量数据通道100(0)-100(X)中被提供在执行单元84(0)-84(X)与向量数据文件82(0)-82(X)之间的输出数据流路径98(0)-98(X)中。重排序电路系统196(0)-196(X)基于根据要被执行的向量指令的编程来被配置,以便在输出数据流路径98(0)-98(X)中提供结果输出向量数据样本集194(0)-194(X)的重排序作为经重排序的结果输出向量数据样本集194R(0)-194R(X)。图23中的VPE 22(4)中对结果输出向量数据样本集194(0)-194(X)的进行中重排序意味着执行单元84(0)-84(X)提供的结果输出向量数据样本集194(0)-194(X)在被存储在向量数据文件82(0)-82(X)中之前被重排序为经重排序的结果输出向量数据样本集194R(0)-194R(X)。以此方式,结果输出向量数据样本集194(0)-194(X)以经重排序的格式按照经重排序的结果输出向量数据样本集194R(0)-194R(X)被存储在向量数据文件82(0)-82(X)中。作为一非限制性示例,对结果输出向量数据样本集194(0)-194(X)的重排序可包括对结果输出向量数据样本集194(0)-194(X)的交织或解交织,以作为经重排序的结果输出向量数据样本集194R(0)-194R(X)被存储在向量数据文件82(0)-82(X)中。
从而,利用输出数据流路径98(0)-98(X)中所提供的重排序电路系统196(0)-196(X),不需要结果输出向量数据样本集194(0)-194(X)被首先存储在向量数据文件82(0)-82(X)中,然后从向量数据文件82(0)-82(X)中取回,进行重排序,并重新存储到向量数据文件82(0)-82(X)中。结果输出向量数据样本集194(0)-194(X)在被存储在向量数据文件82(0)-82(X)中之前被重排序。以此方式,结果输出向量数据样本集194(0)-194(X)以经重排序的格式被存储在向量数据文件82(0)-82(X)中,而不需要额外的后处理步骤,而额外的后处理步骤可能延迟要在执行单元84(0)-84(X)中执行的后续向量处理操作。从而,VPE 22(4)中的数据流路径的效率不受到结果输出向量数据样本集194(0)-194(X)的重排序的限制。当结果输出向量数据样本集194(0)-194(X)要以经重排序的格式作为经重排序的结果输出向量数据样本集194R(0)-194R(X)被存储在向量数据文件82(0)-82(X)中时,执行单元84(0)-84(X)中的后续向量处理仅受到计算资源而非数据流限制的限制。
在如图23中所例示的该示例中,包括重排序电路系统196(0)-196(X)的VPE22(4)也可任选地包括主抽头延迟线78(0)和/或影子抽头延迟线78(1)。抽头延迟线78(0)、78(1)的操作先前关于VPE 22(1)和22(2)被描述过了。如上文先前所讨论的,抽头延迟线78(0)、78(1)可被用于要求经移位的输入向量数据样本集86S(0)-86S(X)被提供给执行单元84(0)-84(X)的向量处理操作。同样,注意图23中的VPE 22(4)提供了图4、11和19中的VPE 22(1)-22(3)中所提供的公共组件。公共组件在图23中的VPE 22(4)中用共同的元素编号例示出。上文关于VPE 22(1)-22(3)对这些公共组件的先前描述和讨论也适用于图23中的VPE22(4),且因此这里将不再描述。
继续参照图23,更为具体地,重排序电路系统196(0)-196(X)被配置成在输出数据流路径98(0)-98(X)上在重排序电路系统输入198(0)-198(X)上接收结果输出向量数据样本集194(0)-194(X)。重排序电路系统196(0)-196(X)被配置成对结果输出向量数据样本集194(0)-194(X)进行重排序以提供经重排序的结果输出向量数据样本集194R(0)-194R(X)。重排序电路系统196(0)-196(X)被配置成在输出数据流路径98(0)-98(X)中在重排序电路系统输出200(0)-200(X)上提供经重排序的结果输出向量数据样本集194R(0)-194R(X),以便提供给向量数据文件82(0)-82(X)供存储。
现在将描述本实施例中图23中的VPE 22(4)的用于在输出数据流路径98(0)-98(X)中将经重排序的结果输出向量数据样本集194R(0)-194R(X)提供给向量数据文件82(0)-82(X)的附加细节和特征的进一步描述。就这一点而言,图24是例示出可在图23中的VPE 22(4)中采用重排序电路系统196(0)-196(X)根据要求对结果输出向量数据样本集194(0)-194(X)进行重排序的示例性向量指令执行的,对向量处理操作202所产生的结果输出向量数据样本集194(0)-194(X)的示例性重排序的流程图。
参照图23和24,根据向量指令要根据向量处理操作202处理的输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被取回并提供到输入数据流路径80(0)-80(X)中(图24中的框204)。例如,向量处理操作202可涉及根据要被执行的向量指令所希望的任何向量处理操作。非限制性示例包括上述的滤波器、相关、以及格式转换向量处理操作。图23中的VPE 22(4)中的向量数据通道100(0)-100(X)中的任一个、一些或全部可被采用以根据向量指令取决于用于向量处理操作202的输入向量数据样本集86(0)-86(X)的宽度的编程来提供向量处理操作202。如果需要向量数据文件82(0)-82(X)的整个宽度,则所有的向量数据通道100(0)-100(X)可被用于向量处理操作202。向量处理操作202可仅需要向量数据通道100(0)-100(X)的某一子集。这可能是由于输入向量数据样本集86(0)-86(X)的宽度小于所有向量数据文件82(0)-82(X)的宽度,其中希望采用额外的向量数据通道100用于要与该向量处理操作202并行执行的其他向量处理操作。
继续参照图23和24,在执行单元84(0)-84(X)处从输入数据流路径80(0)-80(X)接收经取回的输入向量数据样本集86(0)-86(X)(图24中的框206)。执行单元84(0)-84(X)根据按照向量指令提供的向量处理操作202对接收到的输入向量数据样本集86(0)-86(X)执行向量处理(图24中的框208)。作为一非限制性示例,在由涉及输入向量数据样本集86(0)-86(X)的移位的执行单元84(0)-84(X)所执行的向量处理操作202的每个处理级期间,输入向量数据样本集86(0)-86(X)可任选地被加载到主抽头延迟线78(0)中作为要在向量处理操作202的执行期间被移位的输入向量数据样本集86(0)-86(X)。如先前所讨论的,下一输入向量数据样本集86N(0)-86N(X)也可被任选地加载到影子抽头延迟线78(1)中作为要由执行单元84(0)-84(X)处理的下一输入向量数据样本集86N(0)-86N(X)。如上文先前所讨论的,抽头延迟线78的目的是在作用于经移位的输入向量数据样本86S的向量处理操作202的操作期间将输入向量数据样本集86(0)-86(X)移位成要被提供给执行单元84(0)-84(X)的经移位的输入向量数据样本86S(0)-86S(X)。
继续参照图23和24,执行单元84(0)-84(X)可被配置成使用输入向量数据样本集86(0)-86(X)提供乘法和/或累加。如果在向量处理操作202期间抽头延迟线78被采用来移位经格式转换的输入向量数据样本集86F(0)-86F(X),则执行单元84(0)-84(X)可在向量处理操作202的每个处理级期间接收经移位的输入向量数据样本集86S(0)-86S(X),直到向量处理操作202完成为止,如先前通过示例所描述的。一旦向量处理操作202已完成,基于对输入向量数据样本集86(0)-86(X)或经移位的经格式转换的输入向量数据样本集86S(0)-86S(X)进行的向量处理的结果输出向量数据样本集194(0)-194(X)被提供在输出数据流路径98(0)-98(X)中。
继续参照图23和24,在结果输出向量数据样本集194(0)-194(X)被存储在向量数据文件82(0)-82(X)之前,结果输出向量数据样本集194(0)-194(X)被提供至执行单元84(0)-84(X)与向量数据文件82(0)-82(X)之间所提供的输出数据流路径98(0)-98(X)中提供的重排序电路系统196(0)-196(X)。根据正被执行的向量指令,以及如果向量指令要求对结果输出向量数据样本集194(0)-194(X)进行重排序以便存储在向量数据文件82(0)-82(X)中,重排序电路系统196(0)-196(X)是可编程的以便被包括在输出数据流路径98(0)-98(X)中,如下文更详细讨论的那样。重排序电路系统196(0)-196(X)根据按照正被执行的所述向量指令的编程中所提供的重排序来对结果输出向量数据样本集194(0)-194(X)进行重排序,而不将结果输出向量数据样本集194(0)-194(X)存储在向量数据文件82(0)-82(X)中(图24中的框210)。以此方式,结果输出向量数据样本集194(0)-194(X)不必首先被存储在向量数据文件82(0)-82(X)中,被重新取回,在后处理操作中被重排序,以及以重排序格式存储在向量数据文件82(0)-82(X)中,从而在执行单元84(0)-84(X)中提供了延迟。结果输出向量数据样本集194(0)-194(X)按照经重排序的结果输出向量数据样本集194R(0)-194R(X)被存储在向量数据文件82(0)-82(X)中,而不需要重排序后处理(图24中的框212)。例如,结果输出向量数据样本集194(0)-194(X)可在被重排序电路系统196(0)-196(X)重排序之前以类似于图18A和18B中所提供的格式那样的格式出现。
现在将关于图25描述重排序电路系统196(0)-196(X)的示例。以在图25中提供的向量数据通道100(0)中所提供的重排序电路系统196(0)的一个实例提供了重排序电路系统196(0)-196(X)的内部组件的示例性细节,但这也适用于重排序电路系统196(1)-196(X)。取图25中的重排序电路系统196(0)作为示例,该示例中的重排序电路系统196(0)被配置成在向量数据通道100(0)中对执行单元84(0)在输出数据流路径98(0)中提供的结果输出向量数据样本194(0)进行重排序,以便提供经重排序的结果输出向量数据样本194R(0)。就这一点而言,在本示例中提供了在本示例中以多路复用器形式提供的四个输出向量数据样本选择器214(3)-214(0),它们根据执行单元输出96(0)的位宽来安排,在本示例中是四(4)个,每个八(8)位宽96(0)(3)-96(0)(0)。每个输出向量数据样本选择器214(3)-214(0)被配置成要么选择所指派的执行单元输出96(0)(3)-96(0)(0)中的结果输出向量数据样本194(0)的一部分,要么选择来自邻近于所指派的执行单元96(0)(3)-96(0)(0)的一执行单元输出96的结果经移位的输出向量数据样本194(0)的一部分。
例如,如果执行单元输出96(0)(3)-96(0)(0)以十六(16)位有符号的复格式实[31:24]、实[23:16]、虚[15:8]、虚[7:0]提供输出向量数据样本194(0),且根据要被执行的向量指令所希望的经重排序的(例如解交织的)格式是实[31:24]、虚[23:16]、实[15:8]、虚[7:0],则输出向量数据样本选择器214(3)-214(0)选择将如下。输出向量数据样本选择器214(3)将选择来自执行单元输出96(0)(3)的结果输出向量数据样本194(0)(3),以在输出数据流路径98(0)(3)上提供。然而,输出向量数据样本选择器214(2)将选择执行单元输出96(0)(1)上的结果输出向量数据样本194(0)(1),以在输出数据流路径98(0)(2)上提供。这将在相邻的输入数据流路径98(0)(3)、98(0)(2)中提供结果经移位的输出向量数据样本194(0)的经交织的实部(即实[31:24]、虚[23:16]),作为经重排序的结果输出向量数据样本194R(0)的经重排序的结果输出向量数据样本194R(0)(3)、194R(0)(2)。类似地,输出向量数据样本选择器214(0)将选择来自执行单元输出96(0)(0)的结果输出向量数据样本194(0)(0),以在输出数据流路径98(0)(0)上提供。然而,输出向量数据样本选择器214(1)将选择执行单元输出96(0)(2)上的结果输出向量数据样本194(0)(2),以在输出数据流路径98(0)(1)上提供。这将在相邻的输入数据流路径98(0)(1)、98(0)(0)中提供经重排序的经交织的结果输出向量数据样本194(0)(2)、194(0)(0)(即,实[15:8]、虚[7:0]),作为经重排序的结果输出向量数据样本194R(0)的经重排序的结果输出向量数据样本194R(0)(1)、194R(0)(0)。同样以多路复用器形式提供的输出向量数据样本选择器216(1)、216(0)提供了在来自非指派的非相邻执行单元输出96(0)(3)-96(0)(0)的结果输出向量数据样本194(0)(3)-194(0)(0)之间进行选择的能力,如图25中所例示。
继续参照图23和25,重排序电路系统196(0)-196(X)可被提供为可编程的,以根据要被执行的向量指令被配置或重新配置成不对结果输出向量数据样本集194(0)-194(X)进行重排序。在该示例中,重排序电路系统196(0)-196(X)可被编程以规定输出数据流路径98(0)-98(X)直接流至重排序电路系统196(0)-196(X)而不形成任何重排序操作。如上文先前所讨论以及图22中所例示的,作为一非限制性示例的向量指令的位[18]中可提供图表182中的输出数据格式字段190(DEST_FMT)以指示出输出源数据(如图23中的VPE 22(4)中的结果输出向量数据样本集194(0)-194(X))在被存储在向量数据文件82(0)-82(X)中时是应以SC16格式存储还是从SC16转换成SC8格式并进行重排序。
就这一点而言,图25中可向重排序电路系统196(0)提供可编程的重排序数据路径配置输入218(0)以将所述重排序电路系统196(0)编程为对输出数据流路径98(0)中的结果输出向量数据样本194(0)(3)-194(0)(0)进行重排序或不进行重排序。可编程的重排序数据路径配置输入218(1)-218(X)(未示出)也可类似地被提供给重排序电路系统196(1)-196(X)以分别将所述重排序电路系统 196(1)-196(X)编程为对输出数据流路径98(1)-98(X)中的结果输出向量数据样本集194(1)-194(X)进行重排序或不进行重排序。以此方式,如果向量指令不规定要执行这样的处理,则重排序电路系统196(0)-196(X)可被编程为不对结果输出向量数据样本集194(0)-194(X)进行重排序。可对每个向量指令配置和重新配置可编程的重排序数据路径配置输入218(0)-218(X),以便在VPE 22(4)进行的向量处理中提供灵活性。例如,如果希望的话,可编程的重排序数据路径配置输入218(0)-218(X)可按需以逐时钟循环的方式对向量指令的每个时钟循环配置和重新配置,以便按需提供重排序,同时充分利用执行单元84(0)-84(X)。
也可提供涉及对来自执行单元84(0)-84(X)的结果输出向量数据样本集的进行中处理的其他向量处理操作,而不需要额外的后处理步骤,而额外的后处理步骤可能延迟要在执行单元84(0)-84(X)中执行的后续向量处理操作。例如,需要根据变化长度的扩展信号数据序列解扩展码片序列的CDMA无线基带操作可受益于进行中向量处理。
例如,图26A例示出可使用CDMA调制的数据信号220。数据信号220的周期为2T。在该示例中数据信号220表示数据序列1010,其中高信号电平表示逻辑‘1’,而低信号电平表示逻辑‘0’,如图26A中所例示。在CDMA调制中,数据信号220由码片序列222(诸如图26B中的码片序列222)扩展,码片序列可以是伪随机码。在该示例中,码片序列222具有比数据信号220的周期小十(10)倍的周期,以在该示例中对数据信号220的每个样本提供具有十(10)个码片的扩展率或因子的码片序列222。在该示例中为了扩展数据信号220,数据信号220与码片序列22进行异或(即XOR),以提供经扩展的所传送数据信号224,如图26C中所例示。用与码片序列222正交且彼此正交的其他码片序列扩展以与经扩展的所传送数据信号224相同带宽传送的用于其他用户的其他数据信号。以此方式,当原始数据信号220被恢复时,经扩展的所传送数据信号224与序列号相关,如上文关于图11-16先前所述。如果在序列号与经扩展的所传送数据信号224之间有高度相关,诸如对于码片序列222就是这样的情况,则可使用与高度相关序列号相关联的码片序列来恢复原始数据信号220。用高度相关的码片序列解扩展经扩展的所传送数据信号224,在本例中是码片序列222,以便恢复原始数据信号作为图26D中的经恢复的数据信号 226。
对图26C中的经扩展的所传送数据信号224的解扩展可在解扩展向量处理操作中按照经扩展的所传送数据信号224与可能的码片序列之间的内积来执行,类似于上文关于图11中VPE 22(2)描述的相关向量处理操作,以确定高度相关码片序列。经扩展的所传送数据信号224可用被确定为已被用于对原始数据信号220进行CDMA调制的码片序列222解扩展,以提供图26D中的经恢复的数据信号226。
在包括CDMA处理操作的向量处理器中,向量处理器可包括在经扩展信号向量数据序列从执行单元输出并存储在向量数据存储器之后对其执行解扩展的电路系统。就这一点而言,存储在向量数据存储器中的经扩展信号向量数据序列在后处理操作中从向量数据存储器中被取回,并用相关的扩展码序列或码片序列解扩展以恢复原始数据信号。经解扩展向量数据序列(是扩展前的原始数据样本)被存回向量数据存储器。该后处理操作可能延迟执行单元进行的后续向量操作处理,且造成执行单元中的计算组件未被充分利用。进一步,使用扩展码序列对经扩展信号向量数据序列进行解扩展难以并行化,因为要被解扩展的经扩展信号向量数据序列跨越来自不同执行单元的不同数据流路径。
为了解决这个问题,在下文所公开的实施例中,提供了包括在VPE中的执行单元与向量数据存储器之间的数据流路径中提供的解扩展电路系统的VPE。解扩展电路系统被配置成使用来自执行单元的输出向量样本集对扩展频谱序列进行进行中解扩展,同时输出向量数据样本集通过输出数据流路径从执行单元被提供至向量数据存储器。对输出向量数据样本集的进行中解扩展意味着执行单元所提供的输出向量数据样本集在被存储在向量数据存储器之前被解扩展,使得该输出向量数据样本集以解扩展格式被存储在向量数据存储器中。经解扩展扩展频谱序列(DSSS)可按解扩展形式被存储在向量数据存储器中而无需额外的后处理步骤,而额外的后处理步骤可能延迟要在执行单元中执行的后续向量处理操作。从而,VPE中的数据流路径的效率可能不受到扩展频谱序列的解扩展的限制。当经解扩展扩展频谱序列被存储在向量数据存储器中时,执行单元中的后续向量处理可能仅受到计算资源而非数据流限制的限制。
就这一点而言,图27是可作为图2中的VPE 22被提供的另一示例性VPE 22(5)的示意图。如下文将更详细描述的,图27中的VPE 22(5)被配置成以消除了的或减少了的向量数据样本重新取回和减少了的功耗提供使用码序列对执行单元84(0)-84(X)所提供的用于向量处理操作的结果输出向量数据样本集228(0)-228(X)的进行中解扩展,以便存储在VPE22(5)中的向量数据文件82(0)-82(X)中。结果输出向量数据样本集228(0)-228(X)由‘X+1’个输入结果输出向量数据样本228组成,在该示例中是228(0)、228(1)、…、以及228(X)。作为一非限制性示例,码序列可以是用于CDMA解扩展向量处理操作的扩展频谱CDMA码片序列。在图27中的VPE 22(5)中,结果输出向量数据样本集228(0)-228(X)可在被存储在向量数据文件82(0)-82(X)之前用码序列解扩展。
如图27中所示且在下文更详细讨论的,解扩展电路系统230在每条向量数据通道100(0)-100(X)中被提供在执行单元84(0)-84(X)与向量数据文件82(0)-82(X)之间的输出数据流路径98(0)-98(X)中。解扩展电路系统230基于根据要被执行的向量指令的编程来被配置,以便提供用码序列对结果输出向量数据样本集228(0)-228(X)进行解扩展,所述码序列是按照由序列号生成器134生成的参考向量数据样本集130(0)-130(X)提供的,如上文在图11-16中关于相关向量处理操作先前所描述的。经解扩展结果输出向量数据样本集229(0)-229(Z)由输出数据流路径98(0)-98(X)中的解扩展电路系统230提供。经解扩展结果输出向量数据样本集229(0)-229(Z)由‘Z+1’个经解扩展结果输出向量数据样本229组成,在该示例中是229(0)、229(1)、…、以及229(Z)。图27中的VPE 22(5)中对结果输出向量数据样本集228(0)-228(X)的进行中解扩展意味着执行单元84(0)-84(X)提供的结果输出向量数据样本集228(0)-228(X)在被存储在向量数据文件82(0)-82(X)中之前用结果输出向量数据样本集228(0)-228(X)中的码序列解扩展。以此方式,结果输出向量数据样本集228(0)-228(X)以解扩展的形式作为经解扩展结果输出向量数据样本集229(0)-229(X)被存储在向量数据文件82(0)-82(X)中。
从而,利用输出数据流路径98(0)-98(X)中所提供的解扩展电路系统230,不需要结果输出向量数据样本集228(0)-228(X)被首先存储在向量数据文件82(0)-82(X)中,然后从向量数据文件82(0)-82(X)中取回,解扩展,并以解扩展的形式重新存储到向量数据文件82(0)-82(X)中。结果输出向量数据样本集 228(0)-228(X)在被存储在向量数据文件82(0)-82(X)中之前被解扩展。以此方式,经解扩展结果输出向量数据样本集229(0)-229(Z)被存储在向量数据文件82(0)-82(X)中,而不需要额外的后处理步骤,而额外的后处理步骤可能延迟要在执行单元84(0)-84(X)中执行的后续向量处理操作。从而,VPE 22(5)中的数据流路径的效率不受到结果输出向量数据样本集228(0)-228(X)的解扩展的限制。当结果输出向量数据样本集228(0)-228(X)以解扩展的形式作为经解扩展的结果输出向量数据样本集229(0)-229(Z)被存储在向量数据文件82(0)-82(X)中时,执行单元84(0)-84(X)中的后续向量处理仅受到计算资源而非数据流限制的限制。
进一步,通过在执行单元84(0)-84(X)与向量数据文件82(0)-82(X)之间的输出数据流路径98(0)-98(X)中提供解扩展电路系统230,结果输出向量数据样本集228(0)-228(X)不必在向量数据文件82(0)-82(X)与执行单元84(0)-84(X)之间的输入数据流路径80(0)-80(X)中跨越向量数据通道100。在不同向量数据通道100之间提供数据流路径用于对输入向量数据样本集86(0)-86(X)中的输入向量数据样本86的解扩展将增加路由复杂性。结果,在解扩展操作在输入数据流路径80(0)-80(X)中被执行的同时,执行单元84(0)-84(X)可能未被充分利用。同样,如上所讨论的,在输入数据流路径80(0)-80(X)中对结果输出向量数据样本集228(0)-228(X)解扩展将需要结果输出向量数据样本集228(0)-228(X)被首先存储在图27中的VPE 22(5)中的向量数据文件82(0)-82(X)中,从而在重新取回和解扩展时增加了功耗,和/或具有未对执行单元84(0)-84(X)充分利用的风险,执行单元在解扩展操作正被执行的同时可能被延迟。
注意图27中的VPE 22(5)提供了图4、11、19和23中的VPE 22(1)-22(4)中所提供的公共组件。公共组件在图27中的VPE 22(5)中用共同的元素编号例示出。上文在VPE 22(1)-22(4)对这些公共组件的先前描述和讨论也适用于图27中的VPE 22(5),且因此这里将不再描述。
继续参照图27,更为具体地,解扩展电路系统230被配置成在输出数据流路径98(0)-98(X)上在解扩展电路系统输入232(0)-232(X)上接收结果输出向量数据样本集228(0)-228(X)。解扩展电路系统230被配置成对结果输出向量数据样本集228(0)-228(X)进行解扩展以提供经解扩展结果输出向量数据样本集 229(0)-229(Z)。如下文更详细讨论的,在经解扩展结果输出向量数据样本集229(0)-229(Z)中,经解扩展结果输出向量数据样本229的数量是‘Z+1’。经解扩展结果输出向量数据样本集229(0)-229(Z)中的经解扩展结果输出向量数据样本229的数量取决于用于对结果输出向量数据样本集228(0)-228(X)进行解扩展的扩展因子。解扩展电路系统230被配置成在输出数据流路径98(0)-98(X)中在解扩展电路系统输出234(0)-234(X)上提供经解扩展结果输出向量数据样本集229(0)-229(Z),以便提供给向量数据文件82(0)-82(X)供存储。
现在将描述本实施例中图27中的VPE 22(5)的用于在输出数据流路径98(0)-98(X)中将经解扩展结果输出向量数据样本集229(0)-229(Z)提供给向量数据文件82(0)-82(X)的附加细节和特征的进一步描述。就这一点而言,图28是例示出可在图27中的VPE 22(5)中采用解扩展电路系统230根据要求对结果输出向量数据样本集228(-228)-228(X)进行解扩展的示例性向量指令执行的,对解扩展向量处理操作236所产生的结果输出向量数据样本集228(0)-228(X)的示例性解扩展的流程图。
参照图27和28,根据向量指令要根据解扩展向量处理操作236处理的输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被取回并提供到输入数据流路径80(0)-80(X)中(图28中的框238)。图27中的VPE 22(5)中的向量数据通道100(0)-100(X)中的任一个、一些或全部可被采用以根据向量指令取决于用于解扩展向量处理操作236的结果输出向量数据样本集228(0)-228(X)的宽度的编程来提供解扩展向量处理操作236。如果解扩展向量处理操作236涉及对结果输出向量数据样本集228(0)-228(X)中的所有结果输出向量数据样本228的解扩展,则来自执行单元84(0)-84(X)的输出数据流路径98(0)-98(X)中的所有向量数据通道100(0)-100(X)可被用于解扩展向量处理操作236。替代地,解扩展向量处理操作236可能仅涉及对结果输出向量数据样本集228(0)-228(X)中的结果输出向量数据样本228的某一子集的解扩展,从而仅涉及输出数据流路径98中对应于结果输出向量数据样本228的所述子集的向量数据通道100。
继续参照图27和28,在图27中的VPE 22(5)中的解扩展电路系统230执行解扩展向量处理操作之前,在执行单元84(0)-84(X)处从输入数据流路径 80(0)-80(X)接收经取回的输入向量数据样本集86(0)-86(X)(图28中的框240)。执行单元84(0)-84(X)根据按照向量指令所提供的向量处理操作对接收到的输入向量数据样本集86(0)-86(X)执行一个或多个向量处理操作(图28中的框242)。例如,执行单元84(0)-84(X)使用输入向量数据样本集86(0)-86(X)和参考向量数据样本集130(0)-130(X)中的码序列提供乘法和/或累加以用于执行向量处理操作以便提供结果输出向量数据样本集228(0)-228(X)。例如,结果输出向量数据样本集228(0)-228(X)可基于用参考向量数据样本集130(0)-130(X)对输入向量数据样本集86(0)-86(X)的向量处理,在图27中的VPE 22(5)的输出数据流路径98(0)-98(X)中提供。
继续参照图27和28,如果希望对结果输出向量数据样本集228(0)-228(X)进行解扩展,解扩展向量处理操作236可在结果输出向量数据样本集228(0)-228(X)被存储在向量数据文件82(0)-82(X)中之前执行。在该示例中,结果输出向量数据样本集228(0)-228(X)被提供至图27中的VPE 22(5)中的执行单元84(0)-84(X)与向量数据文件82(0)-82(X)之间所提供的输出数据流路径98(0)-98(X)中提供的解扩展电路系统230。根据正被执行的向量指令,以及如果向量指令要求对结果输出向量数据样本集194(0)-194(X)进行解扩展以便存储在向量数据文件82(0)-82(X)中,解扩展电路系统230是可编程的以便选择性地在输出数据流路径98(0)-98(X)中对结果输出向量数据样本集228(0)-228(X)进行解扩展。解扩展电路系统230根据按照正被执行的所述向量指令的解扩展编程来对结果输出向量数据样本集228(0)-228(X)进行解扩展,而不将结果输出向量数据样本集228(0)-228(X)存储在向量数据文件82(0)-82(X)中(图28中的框244)。
以此方式,结果输出向量数据样本集228(0)-228(X)不必首先被存储在向量数据文件82(0)-82(X)中,被重新取回,在后处理操作中被解扩展,以及以解扩展的格式存储在向量数据文件82(0)-82(X)中,从而在执行单元84(0)-84(X)中提供了延迟。结果输出向量数据样本集228(0)-228(X)按照经解扩展结果输出向量数据样本集229(0)-229(Z)被存储在向量数据文件82(0)-82(X)中,而不需要解扩展后处理(图28中的框246)。
图29是可在图27的VPE 22(5)中的执行单元84(0)-84(X)与向量数据文件 82(0)-82(X)之间的输出数据流路径98(0)-98(X)中提供的示例性解扩展电路系统230的示意图。解扩展电路系统230被配置成针对参考向量数据样本集130(0)-130(X)中的重复码序列的不同扩展因子提供对结果输出向量数据样本集228(0)-228(X)的解扩展以提供经解扩展结果输出向量数据样本集229(0)-229(Z)。如图27中所例示,结果输出向量数据样本集228(0)-228(X)从执行单元输出96(0)-96(X)被提供给解扩展电路系统230。可能希望在图27中用序列号生成器134生成的参考向量数据样本集130(0)-130(X)中的重复序列号的不同扩展因子来对结果输出向量数据样本集228(0)-228(X)进行解扩展,因为结果输出向量数据样本集228(0)-228(X)的扩展因子可能是未知的。
例如,如果结果输出向量数据样本集228(0)-228(X)包含32个样本,且整个结果输出向量数据样本集228(0)-228(X)是在假设扩展因子为四(4)的情况下被解扩展的,则在执行了对结果输出向量数据样本集228(0)-228(X)的解扩展之后,经解扩展结果输出向量数据样本集229(0)-229(Z)将包含八(8)个解扩展样本(即32个样本/扩展因子4)。然而,在该同一示例中,如果整个结果输出向量数据样本集228(0)-228(X)是在假设扩展因子为八(8)的情况下被解扩展的,则在执行了对结果输出向量数据样本集228(0)-228(X)的解扩展之后,解扩展结果输出向量数据样本集229(0)-229(Z)将包含四(4)个解扩展样本(即32个样本/扩展因子8)。
从而,继续参照图29,解扩展电路系统230被配置成针对不同数量的扩展因子来对结果输出向量数据样本集228(0)-228(X)进行解扩展。在该实施例中的解扩展电路系统230被配置成针对一个向量处理操作/一个向量指令中的不同扩展因子来提供经解扩展结果输出向量数据样本集229(0)-229(Z)。就这一点而言,解扩展电路系统230包含与执行单元输出96(0)-96(X)耦合以接收结果输出向量数据样本集228(0)-228(X)的加法器树248。解扩展电路系统230的加法器树248被配置成在相应的向量数据通道100(0)-100(X)中接收结果输出向量数据样本集228(0)-228(X)的每个样本228。加法器树248中提供第一加法器树级248(1)。第一加法器树级248(1)由加法器250(0)-250(((X+1)*2)-1)(即250(7))组成,以便能够以扩展因子四(4)对结果输出向量数据样本集228(0)-228(X)中的样本228进行扩展。锁存器251(0)-251(X)被提供在解扩展电路系统230中以便对来自输出数据流路径98(0)-98(X)的结果输出向量数据样本集228(0)-228(X)进行锁存。
例如,如果结果输出向量数据样本集228(0)-228(X)中的每个样本228是32位宽且由两(2)个16位复向量数据(即根据格式I8Q8的第一向量数据和根据格式I8Q8的第二向量数据)组成,则扩展因子四(4)可被应用来将结果输出向量数据样本集228(0)-228(X)中的两(2)个结果输出向量数据样本228中的四(4)个数据样本解扩展成一个经解扩展结果输出向量数据样本。例如,如图29中所例示,加法器250(0)被配置成按照用于结果输出向量数据样本228(0)和228(1)的扩展因子四(4)对这些样本进行解扩展。类似地,加法器250(1)被配置成按照用于结果输出向量数据样本228(2)和228(3)的扩展因子四(4)对这些样本进行解扩展。加法器250(((X+1)/2)-1)(即250(7))被配置成对结果输出向量样本集228(X-1)和228(X)进行解扩展,以提供具有扩展因子四(4)的经解扩展向量数据样本集252(0)-252(((X+1)/2)-1)(即252(7))。来自加法器250(((X+1)/2)-1)(即250(7))执行的解扩展的经解扩展向量数据样本集252(0)-252(((X+1)/2)-1)(即252(7))被锁存到锁存器255(0)-255(((X+1)/2)-1)(即255(7))中。
如果解扩展向量处理操作236要求按照扩展因子四(4)对结果输出向量数据样本集228(0)-228(X)进行解扩展,如下文将更详细讨论的,则经解扩展向量数据样本集252(0)-252(((X+1)/2)-1)(即252(7))可被提供作为经解扩展结果输出向量数据样本集229(0)-229(Z),其中‘Z’是七(7)。然而,如果解扩展向量处理操作236要求更高的扩展因子(例如8、16、32、64、128、256),则经解扩展向量数据样本集252(0)-252(((X+1)/2)-1)(即252(7))不被提供作为经解扩展结果输出向量数据样本集229(0)-229(Z)。经解扩展向量数据样本集252(0)-252(((X+1)/2)-1)(即252(7))被提供至第二加法器树级248(2),即至加法器254(0)-254(((X+1)/4)-1)(即254(3))。就这一点而言,加法器254(0)被配置成对经解扩展向量数据样本252(0)和252(1)执行解扩展,以提供具有用于这些样本的扩展因子八(8)的结果解扩展向量数据样本256(0)。类似地,加法器254(1)被配置成对解扩展向量数据样本252(2)和252(3)执行解扩展,以提供具有用于这些样本的扩展因子八(8)的结果解扩展向量数据样本256(1)。加法器 254(((X+1)/4)-1)(即254(3))被配置成对经解扩展向量数据样本集252(((X+1)/4)-2)、252(((X+1)/4)-1)(即252(3))执行解扩展以提供具有扩展因子八(8)的结果解扩展向量数据样本256(((X+1)/4)-1)(即256(3))。来自加法器254(0)-254(((X+1)/4)-1)(即254(3))执行的解扩展的结果经解扩展向量数据样本集256(0)-256(((X+1)/4)-1)(即256(3))被锁存到锁存器257(0)-257(((X+1)/4)-1)(即257(3))中。
继续参照图29,如果解扩展向量处理操作236要求按照扩展因子八(8)对结果输出向量数据样本集228(0)-228(X)进行解扩展,如下文将更详细讨论的,则经解扩展向量数据样本集256(0)-256(((X+1)/4)-1)(即256(3))可被提供作为经解扩展结果输出向量数据样本集229(0)-229(Z),其中‘Z’是三(3)。然而,如果解扩展向量处理操作236要求比八(8)更高的扩展因子(例如16、32、64、128、256),则经解扩展向量数据样本集256(0)-256(((X+1)/4)-1)(即256(3))不被提供作为经解扩展结果输出向量数据样本集229(0)-229(Z)。经解扩展向量数据样本集256(0)-256(((X+1)/4)-1)(即256(3))被提供至第三加法器树级248(3),即至加法器258(0)-258(((X+1)/8)-1)(即258(1))。就这一点而言,加法器258(0)被配置成对经解扩展向量数据样本256(0)和252(1)执行解扩展,以为这些样本提供扩展因子十六(16)。类似地,加法器258(1)被配置成对经解扩展向量数据样本256(2)和256(3)执行解扩展,以提供具有扩展因子十六(16)的经解扩展向量数据样本集260(0)-260(((X+1)/8)-1)(即260(1))。来自加法器258(0)-258(((X+1)/8)-1)(即258(1))执行的解扩展的经解扩展向量数据样本集260(0)-260(((X+1)/8)-1)(即260(1))被锁存到锁存器259(0)-259(((X+1)/8)-1)(即259(2))中。
继续参照图29,如果解扩展向量处理操作236要求按照扩展因子十六(16)对结果输出向量数据样本集228(0)-228(X)解扩展,如下文将更详细讨论的,则经解扩展向量数据样本集260(0)-260(((X+1)/8)-1)(即256(1))可被提供作为经解扩展结果输出向量数据样本集229(0)-229(Z),其中‘Z’是一(1)。然而,如果解扩展向量处理操作236要求比十六(16)更高的扩展因子(例如32、64、128、256),则经解扩展向量数据样本集260(0)-260(((X+1)/8)-1)(即260(1))不被提供作为经解扩展结果输出向量数据样本集229(0)-229(Z)。经解扩展向量数据样本集260(0)-260(((X+1)/8)-1)(即260(1))被提供至第四加法器树级248(4),即至加法器262。就这一点而言,加法器262被配置成对经解扩展向量数据样本260(0)和260(1)执行解扩展,以提供具有扩展因子三十二(32)的解扩展向量数据样本264。来自加法器262执行的解扩展的经解扩展向量数据样本264被锁存到锁存器266和268中。
继续参照图29,如果解扩展向量处理操作236要求按照扩展因子三十二(32)对结果输出向量数据样本集228(0)-228(X)解扩展,如下文将更详细讨论的,则经解扩展向量数据样本264可被提供作为经解扩展结果输出向量数据样本229。然而,如果解扩展向量处理操作236要求比三十二(32)更高的扩展因子(如64、128、256),则经解扩展向量数据样本264不被提供作为经解扩展结果输出向量数据样本229。经解扩展向量数据样本264保持被所存在锁存器268中,而不必被存储在向量数据文件82中。另一结果输出向量数据样本集228(0)-228(X)通过另外的处理循环被加载到锁存器251(0)-251(X)中以使用扩展因子三十二(32)被解扩展,如上所述。所产生的经解扩展向量数据样本264’由第五加法器树248(5)中的加法器270加到先前的经解扩展向量数据样本264,以便提供具有扩展因子六十四(64)的经解扩展向量数据样本272。当经解扩展向量数据样本272被锁存到锁存器274中时,选择器273控制具有扩展因子三十二(32)的经解扩展向量数据样本264还是具有扩展因子六十四(64)的经解扩展向量数据样本264’被锁存。可以执行锁存附加的结果输出向量数据样本集228(0)-228(X)并对其进行解扩展的相同过程,以便按需实现比六十四(64)更大的扩展因子。解扩展向量数据样本272最终将被锁存在锁存器274中,作为根据用于解扩展向量处理操作236的所需扩展因子的所需经解扩展结果输出向量数据样本229。
继续参照图29,无论解扩展向量处理操作236中要求什么扩展因子,经解扩展结果输出向量数据样本集229(0)-229(Z)都将需要被存储在图27中的向量数据文件82(0)-82(X)中。如现在将讨论的,图29中的解扩展电路系统230还被配置成将作为对结果输出向量数据样本228(0)-228(X)执行解扩展向量处理操作236所产生的结果而提供的经解扩展结果输出向量数据样本229加载到锁存器276(0)-276(X)中,以形成经解扩展结果输出向量数据样本集229(0)-229(Z)。经解扩展结果输出向量数据样本集229(0)-229(Z)可被提供至向量数据文件82(0)-82(X)以便被存储。以此方式,仅需要对向量数据文件82(0)-82(X)进行一(1)次写入以便存储由解扩展电路系统230创建的经解扩展结果输出向量数据样本集229(0)-229(Z)。图29中的解扩展电路系统230中的加法器树248(1)-248(5)可为所有解扩展因子4、8、16和32生成经解扩展结果输出向量数据样本229,而不管解扩展向量处理操作236中要求什么扩展因子。替代地,加法器树中根据所需扩展因子执行解扩展向量处理操作236不需要的加法器可被禁用或配置为加0。然而,为了确定这些经解扩展结果输出向量数据样本229中哪些样本将被提供给锁存器276(0)-276(X)以便被存储,提供选择器278(0)-278(((X+1)/4)-1)(即278(3)),如现在将讨论的。
就这一点而言,继续参照图29,基于正被执行的解扩展向量处理操作236,选择器278(0)可对分别来自加法器250(0)、254(0)、258(0)的扩展因子4、8和16以及来自加法器262、270的扩展因子32、64、128、256中的任一个选择经解扩展结果输出向量数据样本229。基于正被执行的解扩展向量处理操作236,选择器278(1)可对分别来自加法器250(1)、254(1)和258(1)的扩展因子4、8和16选择经解扩展结果输出向量数据样本229。基于正被执行的解扩展向量处理操作236,选择器278(2)可对分别来自加法器250(2)和254(2)的扩展因子4和8选择经解扩展结果输出向量数据样本229。基于正被执行的解扩展向量处理操作236,选择器278(3)可对分别来自加法器250(3)和254(3)的扩展因子4和8选择经解扩展结果输出向量数据样本229。基于正被执行的解扩展向量处理操作236,选择器278(4)可对分别来自加法器248(1)和248(2)的扩展因子4和8选择经解扩展结果输出向量数据样本229。不提供选择器来控制从加法器250(4)-250(7)提供的经解扩展结果输出向量数据样本229,因为选择器278(0)-278(3)可充分满足提供扩展因子八(8)。
继续参照图29,一系列数据限幅器(data slicer)280(0)-280(((X+1)/2)-1(即280(7))被提供以接收分别由选择器278(0)-278(((X+1)/4)-1)(即278(3))和加法器250(4)-250(((X+1)/2)-1)(即250(7))选择的经解扩展结果输出向量数据样本229。数据限幅器(280(0)-280(((X+1)/2)-1)(即280(7))被配置成选择其接收的经解扩展结果输出向量数据样本229将被表征为逻辑高电平(如逻辑‘1’) 还是逻辑低电平(如逻辑‘0’)。经解扩展结果输出向量数据样本229然后通过连接被路由至纵横式交换矩阵(crossbar)282,以便路由至锁存器276(0)-276(X)中的所需锁存器276以被存储。纵横式交换矩阵282提供了根据解扩展向量处理操作236将经解扩展结果输出向量数据样本229提供至不同锁存器276(0)-276(X)的灵活性。以此方式,在被存储在向量数据文件82(0)-82(X)中之前,在解扩展向量处理操作236的不同迭代中,经解扩展结果输出向量数据样本229可在锁存器276(0)-276(X)中堆叠。例如,在被存储在向量数据文件82(0)-82(X)中之前,在解扩展向量处理操作236的不同迭代中,经解扩展结果输出向量数据样本集229(0)-229(Z)可在锁存器276(0)-276(X)中堆叠。以此方式,为了存储经解扩展结果输出向量数据样本集229(0)-229(Z)而对向量数据文件82(0)-82(X)的访问可被最少化,以便获得操作效率。
例如,如图29中所例示,耦合至纵横式交换矩阵282的选择器284(0)-284(X)可被控制以便将来自数据限幅器280(0)的经解扩展结果输出向量数据样本229存储在锁存器276(0)-276(X)中的任一个中。耦合至纵横式交换矩阵282的选择器284(1)、284(3)、284(5)、284(7)、284(9)、284(11)、284(13)、284(15)可被控制以便将来自数据限幅器280(1)的经解扩展结果输出向量数据样本229存储在锁存器276(1)、276(3)、276(5)、276(7)、276(9)、276(11)、276(13)和276(15)中。耦合至纵横式交换矩阵282的选择器284(2)、284(6)、284(10)、284(14)可被控制以便将来自数据限幅器280(2)的经解扩展结果输出向量数据样本229存储在锁存器276(2)、276(6)、276(10)和276(14)中。耦合至纵横式交换矩阵282的选择器284(3)、284(7)、284(11)、284(15)可被控制以便将来自数据限幅器280(3)的经解扩展结果输出向量数据样本229存储在锁存器276(3)、276(7)、276(11)和276(15)中。耦合至纵横式交换矩阵282的选择器284(4)和284(12)可被控制以便将来自数据限幅器280(4)的经解扩展结果输出向量数据样本229存储在锁存器276(4)和276(12)中。耦合至纵横式交换矩阵282的选择器284(5)和284(13)可被控制以便将来自数据限幅器280(5)的要被存储的经解扩展结果输出向量数据样本229存储在锁存器276(5)和276(13)中。耦合至纵横式交换矩阵282的选择器284(6)和284(14)可被控制以便将来自数据限幅器280(6)的经解扩展结果输出向量数据样本229存储在锁存器276(6)或276(14)中。耦合至纵横式交换矩阵 282的选择器284(7)和284(15)可被控制以便将来自数据限幅器280(7)的经解扩展结果输出向量数据样本229存储在锁存器276(7)或276(15)中。
继续参照图29,解扩展电路系统230可根据要被执行的向量指令被编程以便被配置成对结果输出向量数据样本228(0)-228(X)执行或不执行解扩展操作。就这一点而言,图29中的解扩展配置输入286可被提供至解扩展电路系统230以便对结果输出向量数据样本228(0)-228(X)执行解扩展操作,或简单地将结果输出向量数据样本228(0)-228(X)分别提供至锁存器276(0)-276(X),以便存储在向量数据文件82(0)-82(X)中。以此方式,如果向量指令不规定要执行这样的处理,则解扩展电路系统230可被编程为不对结果输出向量数据样本集228(0)-228(X)进行解扩展。可对每个向量指令配置和重新配置解扩展配置输入284,以便在图27中的VPE 22(5)进行的向量处理中提供灵活性。例如,如果希望的话,解扩展配置输入284可按需以逐时钟循环的方式对向量指令的每个时钟循环配置和重新配置,以便按需提供解扩展,同时充分利用执行单元84(0)-84(X)。
出于除了经扩展频谱数据序列的解扩展之外的原因,某些其他无线基带操作要求对从先前的处理操作确定的数据样本进行合并。例如,可能希望累加比向量数据通道100(0)-100(X)所提供的用于执行单元84(0)-84(X)的数据流路径更宽的变化宽度的向量数据样本。作为另一示例,可能希望提供对来自不同执行单元84(0)-84(X)的输出向量数据样本的点积乘法,以在向量处理操作中提供输出向量数据的合并。VPE中的向量数据通道100(0)-100(X)可包括复路由,以便提供用于跨越向量数据通道100(0)-100(X)的向量内数据通道,从而提供合并后向量处理操作。然而,由于跨越不同向量数据通道要被合并的输出向量数据的并行化难度,这增加了复杂性且可能降低VPE的效率。向量处理器可包括对来自执行单元的存储于向量数据存储器中的输出向量数据执行后处理合并的电路系统。存储于向量数据存储器中的经后处理的输出向量数据样本从向量数据存储器中被取回,根据需要被合并,以及被存回向量数据存储器。然而,这种后处理可能延迟VPE的后续向量处理操作,且造成执行单元中的计算组件未被充分利用。
例如,先前所述的VPE中的向量数据文件82(0)、82(1)中所提供的两个输入向量数据样本290(0)、290(1)被示于图30。可能希望将这两个输入向量数据样本290(0)、290(1)加在一起。在该示例中,两个输入向量数据样本290(0)、290(1)的和是‘0x11250314E’,它具有比任一个向量数据通道100(0)或100(1)都大的数据宽度。可在VPE 22中提供数据流路径以便在向量数据通道100(0)、100(1)之间提供向量数据路由,以便允许执行单元84(0)、84(1)执行将两个输入向量数据样本290(0)、290(1)加在一起,包括跨向量数据通道100(0)、100(1)在两个执行单元84(0)、84(1)之间提供进位逻辑。可能需要跨越所有向量数据通道100(0)-100(X)的能力以便提供合并后向量数据样本的标量结果,这可进一步在数据流路径中增加复杂性。然而,如上所讨论的,这会在数据流路径中增加复杂性,从而增加复杂性,且可能降低效率。
为了解决这个问题,下文所公开的实施例包括VPE,所述VPE包括在VPE中的执行单元与向量数据存储器之间的输出数据流路径中提供的合并电路系统。合并电路系统被配置成将来自执行单元所提供的输出向量数据样本集的输出向量数据样本进行进行中合并,同时该输出向量数据样本集通过输出数据流路径从执行单元被提供至向量数据存储器。对输出向量数据样本的进行中合并意味着执行单元所提供的输出向量数据样本在被存储在向量数据存储器之前可被合并,使得所产生的输出向量数据样本集以合并后格式被存储在向量数据存储器中。合并后输出向量数据样本可被存储在向量数据文件中而无需额外的后处理步骤,而额外的后处理步骤可能延迟要在执行单元中执行的后续向量处理操作。从而,VPE中的数据流路径的效率不受到向量数据合并操作的限制。当合并后向量数据样本被存储在向量数据存储器中时,执行单元中的后续向量处理仅受到计算资源而非数据流限制的限制。
就这一点而言,图31是可作为图2中的VPE 22被提供的另一示例性VPE 22(6)的示意图。如下文将更详细描述的,图31中的VPE 22(6)被配置成以消除了的或减少了的向量数据样本重新取回和减少了的功耗提供使用码序列对执行单元84(0)-84(X)所提供的用于向量处理操作的结果输出向量数据样本集292(0)-292(X)的进行中合并,以便存储在VPE 22(6)中的向量数据文件82(0)-82(X)中。结果输出向量数据样本集292(0)-292(X)由结果输出向量数据样本292(0)、…、292(X)组成。作为非限制性示例,合并向量处理操作可包括将结果输出向量数据样本292相加,确定多个结果输出向量数据样本292中的最大向量数据样本值,或者确定多个输出向量数据样本292中的最小向量数据样本值。在图31中的VPE 22(6)中,结果输出向量数据样本集292(0)-292(X)中的结果输出向量数据样本229可在被存储在向量数据文件82(0)-82(X)中之前被合并。
合并电路系统294基于根据要被执行的向量指令的编程被配置成提供结果输出向量数据样本集228(0)-228(X)中的结果输出向量数据样本228的进行中合并。合并后结果输出向量数据样本296(0)-296(Z)由输出数据流路径98(0)-98(X)中的合并电路系统294提供。合并后结果输出向量数据样本296(0)-296(Z)中的‘Z’表示合并后结果输出向量数据样本集296(0)-296(Z)中的合并后结果输出向量数据样本296的数量。合并后结果输出向量数据样本集296(0)-296(Z)由结果输出向量数据样本296组成,在该示例中是296(0)、296(1)、…、以及296(Z)。合并后结果输出向量数据样本集296(0)-296(Z)中的合并后结果输出向量数据样本296的数量取决于对结果输出向量数据样本集292(0)-292(X)执行的合并操作。在图31中的VPE 22(6)中对结果输出向量数据样本292的进行中合并意味着由执行单元84(0)-84(X)所提供的结果输出向量数据样本集292(0)-292(X)中的结果输出向量数据样本292可在被存储在向量数据文件82(0)-82(X)中之前被合并在一起。以此方式,合并后结果输出向量数据样本集296(0)-296(Z)的合并后结果输出向量数据样本296可按合并后形式作为合并后结果输出向量数据样本集296(0)-296(Z)被存储在向量数据文件82(0)-82(X)中。
从而,利用输出数据流路径98(0)-98(X)中所提供的合并电路系统294,不需要结果输出向量数据样本集292(0)-292(X)被首先存储在向量数据文件82(0)-82(X)中,然后从向量数据文件82(0)-82(X)中取回。所需的结果输出向量数据样本292被合并,而结果输出向量数据样本292以合并后形式被重新存储在向量数据文件82(0)-82(X)中。来自结果输出向量数据样本集292(0)-292(X)的结果输出向量数据样本292可在被存储在向量数据文件82(0)-82(X)中之前被合并。以此方式,来自合并后结果输出向量数据样本集296(0)-229(Z)的合并后结果输出向量数据样本296被存储在向量数据文件82(0)-82(X)中,而不需要额外的后处理步骤,而额外的后处理步骤可能延迟要在执行单元84(0)-84(X)中执行的后续向量处理操作。从而,VPE 22(6)中的数据流路径的效率不受到结果输出向量数据样本292的合并的限制。当结果输出向量数据样本292以合并后形式被存储在向量数据文件82(0)-82(X)中时,执行单元84(0)-84(X)中的后续向量处理仅受到计算资源而非数据流限制的限制。
进一步,通过在执行单元84(0)-84(X)与向量数据文件82(0)-82(X)之间的输出数据流路径98(0)-98(X)中提供合并电路系统294,结果输出向量数据样本集292(0)-292(X)不必在向量数据文件82(0)-82(X)与执行单元84(0)-84(X)之间的输入数据流路径80(0)-80(X)中跨越向量数据通道100。在不同向量数据通道100之间提供数据流路径用于对输入向量数据样本集86(0)-86(X)中的输入向量数据样本86的合并将增加路由复杂性。结果,在合并操作在输入数据流路径80(0)-80(X)中被执行的同时,执行单元84(0)-84(X)可能未被充分利用。同样,如上所讨论的,在输入数据流路径80(0)-80(X)中对来自结果输出向量数据样本集292(0)-292(X)的结果输出向量数据样本292的合并将需要结果输出向量数据样本集292(0)-292(X)被首先存储在图31中的VPE 22(6)中的向量数据文件82(0)-82(X)中,从而在重新取回和合并时增加了功耗,和/或具有未对执行单元84(0)-84(X)充分利用的风险,执行单元在合并操作正被执行的同时可能被延迟。
注意图31中的VPE 22(6)提供了图4、11、19、23和27中的VPE 22(1)-22(5)中所提供的公共组件。公共组件在图31中的VPE 22(6)中用共同的元素编号例示出。上文在VPE 22(1)-22(5)对这些公共组件的先前描述和讨论也适用于图31中的VPE 22(6),且因此这里将不再描述。
继续参照图31,更为具体地,合并电路系统294被配置成在输出数据流路径98(0)-98(X)上在合并电路系统输入300(0)-300(X)上接收结果输出向量数据样本集292(0)-292(X)。合并电路系统294被配置成合并来自结果输出向量数据样本集292(0)-292(X)的所需结果输出向量数据样本292以提供合并后结果输出向量数据样本集296(0)-296(Z)。合并后结果输出向量数据样本集296(0)-296(Z)中的‘Z’表示合并后结果输出向量数据样本集296(0)-296(Z)的位宽。由于合并操作,‘Z’可小于由‘X’表示的结果输出向量数据样本集292(0)-292(X)的位宽。如下文更详细讨论的,合并后结果输出向量数据样本集296(0)-296(Z)中的合并后结果输出向量数据样本296的数量‘Z+1’取决于来自结果输出向量数据样本集292(0)-292(X)的要被合并在一起的结果输出向量数据样本292。合并电路系统294被配置成在输出数据流路径98(0)-98(X)中在合并电路系统输出301(0)-301(X)上提供合并后结果输出向量数据样本集296(0)-296(Z),以便提供给向量数据文件82(0)-82(X)供存储。
现在将描述本实施例中图31中的VPE 22(6)的用于在输出数据流路径98(0)-98(X)中将合并后结果输出向量数据样本集296(0)-296(X)提供给向量数据文件82(0)-82(X)的附加细节和特征的进一步描述。就这一点而言,图32是例示出可在图31中的VPE 22(6)中采用合并电路系统294根据要求对结果输出向量数据样本292进行合并的示例性向量指令执行的,对向量处理操作302所产生的结果输出向量数据样本集292(0)-292(X)的结果输出向量数据样本292的示例性合并的流程图。
参照图31和32,根据向量指令要根据向量处理操作302处理的输入向量数据样本集86(0)-86(X)从向量数据文件82(0)-82(X)被取回并提供到输入数据流路径80(0)-80(X)中(图32中的框304)。图31中的VPE 22(6)中的向量数据通道100(0)-100(X)中的任一个、一些或全部可被采用以根据向量指令取决于用于向量处理操作302的输入向量数据样本集86(0)-86(X)的宽度的编程来提供向量处理操作302。如果需要向量数据文件82(0)-82(X)的整个宽度,则所有的向量数据通道100(0)-100(X)可被用于向量处理操作302。向量处理操作302可仅需要向量数据通道100(0)-100(X)的某一子集。这可能是由于输入向量数据样本集86(0)-86(X)的宽度小于所有向量数据文件82(0)-82(X)的宽度,其中希望采用额外的向量数据通道100用于要与该向量处理操作302并行执行的其他向量处理操作。
继续参照图31和32,在执行单元84(0)-84(X)处从输入数据流路径80(0)-80(X)接收经取回的输入向量数据样本集86(0)-86(X)(图32中的框306)。执行单元84(0)-84(X)根据按照向量指令提供的向量处理操作302对接收到的输入向量数据样本集86(0)-86(X)执行向量处理操作302(图32中的框308)。执行单元84(0)-84(X)可使用输入向量数据样本集86(0)-86(X)提供乘法和/或累加以用于向量处理操作302,以提供结果输出向量数据样本集292(0)-292(X)。一旦向量处理操作302已完成,基于对输入向量数据样本集86(0)-86(X)执行的向量处理操作302的结果输出向量数据样本集292(0)-292(X)被提供在图31中的VPE22(6)的输出数据流路径98(0)-98(X)中。
继续参照图31和32,在结果输出向量数据样本集292(0)-292(X)被存储在向量数据文件82(0)-82(X)之前,结果输出向量数据样本集292(0)-292(X)被提供至执行单元84(0)-84(X)与向量数据文件82(0)-82(X)之间所提供的输出数据流路径98(0)-98(X)中提供的合并电路系统294。根据正被执行的向量指令,以及如果向量指令要求对来自结果输出向量数据样本集292(0)-292(X)的结果输出向量数据样本292进行合并以便存储在向量数据文件82(0)-82(X)中,合并电路系统294(0)-196(X)是可编程的以便被包括在输出数据流路径98(0)-98(X)中,如下文更详细讨论的那样。合并电路系统294根据正被执行的向量指令对来自结果输出向量数据样本集292(0)-292(X)的结果输出向量数据样本292进行合并,而无需要将结果输出向量数据样本集292(0)-292(X)存储在向量数据文件82(0)-82(X)中(图32中的框310)。以此方式,结果输出向量数据样本集292(0)-292(X)不必首先被存储在向量数据文件82(0)-82(X)中,被重新取回,在后处理操作中被合并,以及以合并后格式存储在向量数据文件82(0)-82(X)中,从而在执行单元84(0)-84(X)中提供了延迟。结果输出向量数据样本集292(0)-292(X)按照合并后结果输出向量数据样本集296(0)-296(Z)被存储在向量数据文件82(0)-82(X)中,而不需要合并后处理(图32中的框312)。
图33是可在图31的VPE 22(6)中的执行单元84(0)-84(X)与向量数据文件82(0)-82(X)之间的输出数据流路径98(0)-98(X)中提供的示例性合并电路系统294的示意图。合并电路系统294被配置成提供结果输出向量数据样本集292(0)-292(X)的合并以提供合并后结果输出向量数据样本集296(0)-296(Z)。如图31中所例示,结果输出向量数据样本集292(0)-292(X)从执行单元输出96(0)-96(X)被提供给合并电路系统294。
继续参照图33,合并电路系统294被配置成合并结果输出向量数据样本集292(0)-292(X)。在该实施例中,合并电路系统294被配置成提供合并后结果输出向量数据样本集296(0)-296(Z)。就这一点而言,合并电路系统294包含与执行单元输出96(0)-96(X)耦合以接收结果输出向量数据样本集292(0)-292(X)的加法器树318。合并电路系统294的加法器树318被配置成在相应的向量数据通道100(0)-100(X)中接收结果输出向量数据样本集292(0)-292(X)的每个样本292。加法器树318中提供第一加法器树级318(1)。第一加法器树级318(1)由加法器320(0)-320(((X+1)/2)-1)(即320(7))组成,以便能够合并结果输出向量数据样本集292(0)-292(X)中的相邻样本292。锁存器321(0)-321(X)被提供在合并电路系统294中以便对来自输出数据流路径98(0)-98(X)的结果输出向量数据样本集292(0)-292(X)进行锁存。
例如,如果结果输出向量数据样本集292(0)-292(X)中的每个样本292是32位宽且由两(2)个16位复向量数据(即根据格式I8Q8的第一向量数据和根据格式I8Q8的第二向量数据)组成,则合并操作可被应用来将结果输出向量数据样本集292(0)-292(X)中的两(2)个结果输出向量数据样本292中的四(4)个数据样本合并成一个合并后结果输出向量数据样本296。例如,如图33中所例示,加法器320(0)被配置成合并结果输出向量数据样本292(0)和292(1)。类似地,针对这些样本,加法器320(1)被配置成合并结果输出向量数据样本292(2)和292(3)。加法器320(((X+1)/2)-1)(即320(7))被配置成对结果输出向量样本集292(X-1)和292(X)进行合并,以提供合并向量数据样本集322(0)-322(((X+1)/2)-1)(即322(7))。来自加法器320(((X+1)/2)-1)(即320(7))执行的合并的合并后向量数据样本集320(0)-322(((X+1)/2)-1)(即322(7))被锁存到锁存器325(0)-325(((X+1)/2)-1)(即325(7))中。
如果合并向量处理操作302要求结果输出向量数据样本集292(0)-292(X)的合并,如下文将更详细讨论的,则合并向量数据样本集322(0)-322(((X+1)/2)-1)(即322(7))可被提供作为合并结果输出向量数据样本集296(0)-296(Z),其中‘Z’是七(7)。然而,如果合并向量处理操作302要求结果输出向量数据样本集292(0)-292(X)中非相邻结果输出向量数据样本292的合并,则合并向量数据样本集322(0)-322(((X+1)/2)-1)(即322(7))不被提供作为合并结果输出向量数据样本集296(0)-296(Z)。合并向量数据样本集322(0)-322(((X+1)/2)-1)(即322(7))被提供至第二加法器树级318(2),即至加法器324(0)-324(((X+1)/4)-1)(即324(3))。就这一点而言,加法器324(0)被配置成对合并向量数据样本322(0)和322(1)执行合并,以提供结果合并向量数据样本326(0)。类似地,加法器324(1)被配置成对合并向量数据样本322(2)和322(3)执行合并,以提供结果合并向量数据样本326(1)。加法器324(((X+1)/4)-1)(即324(3))被配置成对合并向量数据样本集322(((X+1)/4)-2)、322(((X+1)/4)-1)(即322(3))执行合并以提供结果合并向量数据样本326(((X+1)/4)-1)(即326(3))。来自加法器324(0)-324(((X+1)/4)-1)(即324(3))执行的合并的结果合并向量数据样本集326(0)-326(((X+1)/4)-1)(即326(3))被锁存到锁存器327(0)-327(((X+1)/4)-1)(即327(3))中。
继续参照图33,如果合并向量处理操作302要求按照合并因子八(8)对结果输出向量数据样本集292(0)-292(X)合并,如下文将更详细讨论的,则合并向量数据样本集326(0)-326(((X+1)/4)-1)(即326(3))可被提供作为合并结果输出向量数据样本集296(0)-296(Z),其中‘Z’是三(3)。然而,如果合并向量处理操作302要求比八(8)更高的合并因子(例如16、32、64、128、256),则合并向量数据样本集326(0)-326(((X+1)/4)-1)(即326(3))不被提供作为合并结果输出向量数据样本集296(0)-296(Z)。合并向量数据样本集326(0)-326(((X+1)/4)-1)(即326(3))被提供至第三加法器树级318(3),即至加法器328(0)-328(((X+1)/8)-1)(即328(1))。就这一点而言,加法器328(0)被配置成对合并向量数据样本326(0)和326(1)执行合并,以为这些样本提供合并因子十六(16)。类似地,加法器328(1)被配置成对合并向量数据样本326(2)和326(3)执行合并,以提供具有合并因子十六(16)的合并向量数据样本集330(0)-330(((X+1)/8)-1)(即330(1))。来自加法器328(0)-328(((X+1)/8)-1)(即328(1))执行的合并的合并向量数据样本集330(0)-330(((X+1)/8)-1)(即330(1))被锁存到锁存器329(0)-329(((X+1)/8)-1)(即329(1))中。
继续参照图33,如果合并向量处理操作302要求按照合并因子十六(16)对结果输出向量数据样本集292(0)-292(X)合并,如下文将更详细讨论的,则合并向量数据样本集330(0)-330(((X+1)/8)-1)(即330(1))可被提供作为合并结果输出向量数据样本集296(0)-296(Z),其中‘Z’是一(1)。然而,如果合并向量处理操作236要求比十六(16)更高的扩展因子(例如32、64、128、256),则合并向量数据样本集330(0)-330(((X+1)/8)-1)(即330(1))不被提供作为合并结果输出向量数据样本集296(0)-296(Z)。合并向量数据样本集330(0)-330(((X+1)/8)-1)(即330(1))被提供至第四加法器树级318(4),即至加法器332。就这一点而言,加法器332被配置成对合并向量数据样本330(0)和330(1)执行合并,以提供具有合并因子三十二(32)的合并向量数据样本334。来自加法器332执行的合并的合并向量数据样本334被锁存到锁存器336和338中。
继续参照图33,如果合并向量处理操作302要求按照合并因子三十二(32)对结果输出向量数据样本集292(0)-292(X)合并,如下文将更详细讨论的,则合并向量数据样本334可被提供作为合并结果输出向量数据样本296。然而,如果合并向量处理操作302要求比三十二(32)更高的合并因子(如64、128、256),则合并向量数据样本334不被提供作为合并结果输出向量数据样本296。合并向量数据样本334保持被所存在锁存器338中,而不必被存储在向量数据文件82中。另一结果输出向量数据样本集292(0)-292(X)通过另外的处理循环被加载到锁存器321(0)-321(X)中以使用合并因子三十二(32)被合并,如上所述。所产生的合并向量数据样本334’由第五加法器树318(5)中的加法器340加到先前的合并向量数据样本334,以便提供具有扩展因子六十四(64)的合并向量数据样本342。当合并向量数据样本342被锁存到锁存器344中时,选择器343控制具有合并因子三十二(32)的合并向量数据样本334还是具有合并因子六十四(64)的合并向量数据样本334’被锁存。可以执行锁存附加的结果输出向量数据样本集292(0)-292(X)并对其进行合并的相同过程,以便按需实现比六十四(64)更大的合并因子。合并向量数据样本342最终将被锁存在锁存器344中,作为根据用于合并向量处理操作302的所需合并因子的所需解合并结果输出向量数据样本296。
继续参照图33,无论合并向量处理操作302中要求什么合并向量处理操作,合并结果输出向量数据样本集296(0)-296(Z)都将需要被存储在向量数据文件82(0)-82(X)中。如现在将讨论的,图33中的合并电路系统294还被配置成将作为对结果输出向量数据样本292(0)-292(X)执行合并向量处理操作302所产生的结果而提供的合并结果输出向量数据样本296加载到锁存器346(0)-346(X)中,以形成合并结果输出向量数据样本集296(0)-296(Z)。合并结果输出向量数据样本集296(0)-296(Z)可被提供至向量数据文件82(0)-82(X)以便被存储。以此方式,仅需要对向量数据文件82(0)-82(X)进行一(1)次写入以便存储由合并电路系统294创建的合并结果输出向量数据样本集296(0)-296(Z)。图33中的合并电路系统294中的加法器树318(1)-318(5)可为所有合并因子4、8、16和32生成合并结果输出向量数据样本296,而不管合并向量处理操作302中要求什么合并因子。替代地,加法器树中根据所需合并因子执行合并向量处理操作302不需要的加法器可被禁用或配置为加0。然而,为了确定这些合并结果输出向量数据样本296中哪些将被提供给锁存器346(0)-346(X)以便被存储,提供选择器348(0)-348(((X+1)/4)-1)(即348(3)),如现在将讨论的。
就这一点而言,继续参照图33,基于正被执行的合并向量处理操作302,选择器348(0)可对分别来自加法器320(0)、324(0)、328(0)的合并因子4、8和16以及来自加法器332、340的合并因子32、64、128、256中的任一个选择合并结果输出向量数据样本296。基于正被执行的合并向量处理操作302,选择器348(1)可对分别来自加法器320(1)、324(1)和328(1)的合并因子4、8和16选择合并结果输出向量数据样本296。基于正被执行的合并向量处理操作302,选择器348(2)可对分别来自加法器320(2)和324(2)的合并因子4和8选择合并结果输出向量数据样本296。基于正被执行的合并向量处理操作302,选择器348(3)可对分别来自加法器320(3)和324(3)的合并因子4和8选择合并结果输出向量数据样本296。不提供选择器来控制从加法器320(4)-320(7)提供的合并结果输出向量数据样本296,因为选择器348(0)-348(3)可充分满足提供合并因子八(8)被。
继续参照图33,被提供用于合并向量处理操作的数据限幅器(data slicer)350(0)-350(((X+1)/2)-1(即350(7))可被旁路或配置成不对接收到的分别由选择器348(0)-348(((X+1)/4)-1)(即348(3))和加法器320(4)-320(((X+1)/2)-1)(即320(7))选择的合并结果输出向量数据样本296执行数据限幅。合并结果输出向量数据样本296然后通过连接被路由至纵横式交换矩阵(crossbar)352,以便路由至锁存器346(0)-346(X)中的所需锁存器346以被存储。纵横式交换矩阵352提供了根据合并向量处理操作302将合并结果输出向量数据样本296提供至不同锁存器346(0)-346(X)的灵活性。以此方式,在被存储在向量数据文件82(0)-82(X)中之前,在合并向量处理操作302的不同迭代中,合并结果输出向量数据样本296可在锁存器346(0)-346(X)中堆叠。例如,在被存储在向量数据文件82(0)-82(X)中之前,在合并向量处理操作302的不同迭代中,合并结果输出向量数据样本集296(0)-296(Z)可在锁存器346(0)-346(X)中堆叠。以此方式,为了存储合并结果输出向量数据样本集296(0)-296(Z)而对向量数据文件82(0)-82(X)的访问可被最少化,以便获得操作效率。
例如,如图33中所例示,耦合至纵横式交换矩阵352的选择器354(0)-354(X)可被控制以便将来自选择器348(0)的合并结果输出向量数据样本296存储在锁存器346(0)-346(X)中的任一个中。耦合至纵横式交换矩阵352的选择器354(1)、354(3)、354(5)、354(7)、354(9)、354(11)、354(13)、354(15)可被控制以便将来自选择器348(1)的合并结果输出向量数据样本296存储在锁存器346(1)、346(3)、346(5)、346(7)、346(9)、346(11)、346(13)和346(15)中。耦合至纵横式交换矩阵352的选择器354(2)、354(6)、354(10)、354(14)可被控制以便将来自选择器348(2)的合并结果输出向量数据样本296存储在锁存器346(2)、346(6)、346(10)和346(14)中。耦合至纵横式交换矩阵352的选择器354(3)、354(7)、354(11)、354(15)可被控制以便将来自选择器348(3)的合并结果输出向量数据样本296存储在锁存器346(3)、346(7)、346(11)和346(15)中。耦合至纵横式交换矩阵352的选择器354(4)和354(12)可被控制以便将来自加法器320(4)的合并结果输出向量数据样本296存储在锁存器346(4)和346(12)中。耦合至纵横式交换矩阵352的选择器354(5)和354(13)可被控制以便将来自加法器320(5)的要被存储的合并结果输出向量数据样本296存储在锁存器346(5)和346(13)中。耦合至纵横式交换矩阵352的选择器354(6)和354(14)可被控制以便将来自加法器320(6)的合并结果输出向量数据样本296存储在锁存器346(6)和346(14)中。耦合至纵横式交换矩阵352的选择器354(7)和354(15)可被控制以便将来自加法器320(7)的合并结果输出向量数据样本296存储在锁存器346(7)和346(15)中。
注意,在图33中的合并电路系统294中,加法器可被配置成允许结果输出向量数据样本集292(0)-292(X)中的非相邻结果输出向量数据样本282被合并。例如,如果希望将结果输出向量数据样本292(0)与结果输出向量数据样本292(9)合并,则加法器树级318(1)-318(3)中的加法器可被配置成简单地将结果输出向量数据样本292(0)与结果输出向量数据样本292(9)合并传递至加法器树级318(4)。加法器树级318(4)中的加法器332然后可将结果输出向量数据样本292(0)与结果输出向量数据样本292(9)合并以提供合并后输出向量数据样本296。
合并电路系统也可被提供在执行单元84(0)-84(X)与向量数据文件82(0)-82(X)之间的提供除了向量和/或标量相加之外的其他类型的向量合并操作的输出数据流路径98(0)-98(X)中。例如,图33中的合并电路系统294可被配置成提供最大或最小向量和/或标量合并操作。例如,可用最大或最小函数电路系统替换图33中的加法器树318中的加法器树级318(1)-318(5)中的加法器。换言之,所述电路系统将选择传递来自结果输出向量数据样本集292(0)-292(X)的两个结果输出向量数据样本292中的较大者或较小者。例如,如果来自结果输出向量数据样本集292(0)-292(X)的两个结果输出向量数据样本292是图30中的两个输入向量数据样本290(0)、290(1),如果合并电路系统294被配置成选择最大向量样本,则合并电路系统294可被配置成选择向量数据样本290(1)。
就这一点而言,参照图34,图33中的第一加法器树级318(1)中的加法器320(0)-320(((X+1)/2)-1)(即320(7))可用最大或最小合并选择器加法器320’(0)-320’(((X+1)/2)-1)(即320’(7))替换,如图34中所例示。第二加法器树级318(2)中的加法器324(0)-324(((X+1)/4)-1)(即324(3))可用最大或最小选择器324’(0)-324’(((X+1)/4)-1)(即324’(3))替换,如图34中所例示。第三加法器树级318(3)中的加法器328(0)-328(((X+1)/8)-1)(即328(1))可用最大或最小选择器328’(0)-328’(((X+1)/8)-1)(即328’(1))替换,如图34中所例示。第四加法器树级318(4)中的加法器332可用最大或最小选择器332’替换,如图34中所例示。第五加法器树级318(5)中的加法器340可用最大或最小选择器340’替换,如图34中所例示。注意,在图34中的合并电路系统294中,加法器可被配置成选择结果输出向量数据样本集292(0)-292(X)中的非相邻结果输出向量数据样本292之间的最大或最小结果输出向量数据样本292来合并。例如,如果希望将结果输出向量数据样本292(0)与结果输出向量数据样本292(9)进行最大合并,则加法器树级318(1)-318(3)中的加法器可被配置成简单地将结果输出向量数据样本292(0)与结果输出向量数据样本292(9)合并传递至加法器树级318(4)。加法器树级318(4)中的加法器332’然后可将结果输出向量数据样本 292(0)与结果输出向量数据样本292(9)进行最大合并以提供合并后输出向量数据样本264。
如上所讨论的,在VPE 22(1)-22(6)中提供执行单元84(0)-84(X)来对输入向量数据样本集86(0)-86(X)执行向量处理操作。执行单元84(0)-84(X)还包括允许执行单元84(0)-84(X)针对不同向量处理操作用公共的电路系统和硬件提供多种操作模式的可编程数据路径配置。现在将讨论关于执行单元84(0)-84(X)以及它们的用于用公共的电路系统和硬件提供多种操作模式的可编程数据路径配置的更多示例性细节。
就这一点而言,图35例示出可被提供用于VPE 22(1)-22(6)中的执行单元84(0)-84(X)中的每一个的示例性执行单元的示例性示意图。如图35中所例示并将下文在图36-39中更详细描述的,执行单元84包括多个示例性向量流水线级460,这些向量流水线级460具有可用可编程数据路径配置来配置的示例性向量处理块。如将在下文更详细讨论的,在向量处理块中提供的可编程数据路径配置允许特定电路系统和硬件被编程和重新编程以支持对从图2中的向量单元数据存储器32接收到的向量数据30执行不同的、特定的向量处理操作。
例如,某些向量处理操作可共同要求向量数据30的乘法,继之以相乘后的向量数据结果的累加。这样的向量处理的非限制性示例包括滤波操作、相关操作以及通常用于为无线通信算法执行快速傅立叶变换(FFT)操作的根-2和根-4蝶形操作,其中提供了一系列并行乘法,继之以对乘法结果的一系列并行累加。如也将在下文关于图39和40更详细讨论的,图35中的执行单元还具有将乘法器与进位保留累加器熔合以在进位保留累加器中提供冗余进位保留格式的选项。在进位保留累加器中提供冗余进位保留格式可消除对在累加的每一步期间提供进位传播路径和进位传播加法操作的需求。
就这一点而言,进一步参照图35,将首先描述VPE 22的M0乘法向量流水线级460(1)。M0乘法向量流水线级460(1)是第二向量流水线级,它包含任何所需数量的乘法器块462(A)-462(0)形式的多个向量处理块,这些块各自具有可编程数据路径配置。提供乘法器块462(A)-462(0)来在执行单元84中执行向量乘法操作。多个乘法器块462(A)-462(0)在M0乘法向量流水线级460(1)中彼此并行安置,用于提供多达十二(12)个乘法向量数据样本集34(Y)-34(0)的乘法。在这一实施例中,‘A’等于三(3),意味着在这一示例中,在M0乘法向量流水线级460(1)中包括四(4)个乘法器块462(3)-462(0)。乘法向量数据样本集34(Y)-34(0)被加载到执行单元84中以便进行向量处理,进入输入读(RR)向量流水线级中提供的多个锁存器464(Y)-464(0),输入读向量流水线级是执行单元84中的第一向量流水线级460(0)。在这一实施例中,在执行单元84中有十二(12)个锁存器464(11)-464(0),意味着在这一实施例中‘Y’等于十一(11)。锁存器464(11)-464(0)被配置成将检索自向量寄存器28(见图2的向量数据文件28)的乘法向量数据样本集34(11)-34(0)锁存为向量数据输入样本集466(11)-466(0)。在这一示例中,每一锁存器464(11)-464(0)是8位宽的。锁存器464(11)-464(0)各自分别被配置成对总共96位宽的向量数据30(即,12个锁存器×各自8位)锁存乘法向量数据输入样本集466(11)-466(0)。
继续参照图35,多个乘法器块462(3)-462(0)被配置成能够接收向量数据输入样本集466(11)-466(0)的某些组合以用于提供向量乘法操作,其中在这一示例中‘Y’等于十一(11)。根据执行单元84的设计,在多个输入数据路径A3-A0、B3-B0以及C3-C0中提供乘法向量数据输入样本集466(11)-466(0)。如图35中所例示,向量数据输入样本集466(3)-466(0)对应于输入数据路径C3-C0。如图35中所例示,向量数据输入样本集466(7)-466(4)对应于输入数据路径B3-B0。如图35中所例示,向量数据输入样本集466(11)-466(8)对应于输入数据路径A3-A0。多个乘法器块462(3)-462(0)被配置成分别根据被提供给多个乘法器块462(3)-462(0)的输入数据路径A3-A0、B3-B0、C3-C0来处理接收到的向量数据输入样本集466(11)-466(0),以提供向量乘法操作。
如下文将参考图37和38更详细讨论的,在图35中的乘法器块462(3)-462(0)中提供的可编程内部数据路径467(3)-467(0)可被编程为具有不同的数据路径配置。这些不同的数据路径配置根据被提供给每个乘法器块462(3)-462(0)的具体输入数据路径A3-A0、B3-B0、C3-C0对被提供给乘法器块462(3)-462(0)的具体接收到的向量数据输入样本集466(11)-466(0)提供不同的组合和/或不同位长度的乘法。就这一点而言,多个乘法器块462(3)-462(0)提供向量乘法输出样本集468(3)-468(0)作为包括将向量数据输入样本集466(11)-466(0)的具体组合相乘在一起的乘法结果的向量结果输出样本集。
例如,乘法器块462(3)-462(0)的可编程内部数据路径467(3)-467(0)可根据从图2中的基带处理器20的指令分派电路系统48中的向量指令解码器提供的设置来被编程。在这一实施例中,存在乘法器块462(3)-462(0)的四(4)个可编程内部数据路径467(3)-467(0)。向量指令指定要由执行单元84执行的特定类型的操作。从而,执行单元84可被编程和重新编程来配置乘法器块462(3)-462(0)的可编程内部数据路径467(3)-467(0),以便以高效方式采用同一公共电路系统来提供不同类型的向量乘法操作。例如,根据指令分派电路系统48中的指令流水线中的向量指令的解码,执行单元84可被编程来为所执行的每个向量指令以逐时钟循环的方式配置和重新配置乘法器块462(3)-462(0)的可编程内部数据路径467(3)-467(0)。从而,如果执行单元84中的M0乘法向量流水线级460(1)被配置成每个时钟循环处理向量数据输入样本集466,则作为结果,乘法器块462(3)-462(0)根据指令分派电路系统48中的指令流水线中的向量指令的解码在每个时钟循环上执行向量乘法操作。
乘法器块462可被编程来执行实和复乘法。继续参照图35,在一个向量处理块数据路径配置中,乘法器块462可被配置成使两个8位向量数据输入样本集466相乘。在一个乘法块数据路径配置中,乘法器块462可被配置成使两个16位向量数据输入样本集466相乘,这些16位向量数据输入样本集是由第一对8位向量数据输入样本集466乘以第二对8位向量数据输入样本集466来形成的。这在图38中例示出并在下文更详细讨论。再一次,在乘法器块462(3)-462(0)中提供可编程数据路径配置提供了乘法器块462(3)-462(0)可被配置和重新配置来执行不同类型的乘法操作以减少执行单元84中的面积以及有可能允许在基带处理器20中提供较少的执行单元84以实现所需向量处理操作的灵活性。
返回参照图35,多个乘法器块462(3)-462(0)被配置成在可编程输出数据路径470(3)-470(0)中要么向下一向量处理级460要么向输出处理级提供向量乘法输出样本集468(3)-468(0)。根据基于多个乘法器块462(3)-462(0)正在执行的向量指令被编程的配置,在可编程输出数据路径470(3)-470(0)中提供向量乘法输出样本集468(3)-468(0)。在这一示例中,如将在下文讨论的,可编程输出数据路径470(3)-470(0)中的向量乘法输出样本集468(3)-468(0)被提供给M1累加向量流水线级460(2)供累加。在执行单元84的这一特定设计中,期望提供多个乘法器块462(3)-462(0),继之以累加器,以支持要求向量数据输入的乘法继之以相乘结果的累加的专门的向量指令。例如,通常用于提供FFT操作的根-2和根-4蝶形操作包括一系列乘法操作,继之以乘法结果的累加。然而,注意到执行单元84中提供的向量处理块的这些组合是示例性的而非限制性的。具有可编程数据路径配置的VPE可被配置成包括具有向量处理块的一个或任何其它数目的向量处理级。向量处理块可被提供以根据被设计成由执行单元支持的设计和特定向量指令来执行任何类型的操作。
继续参照图35,在这一实施例中,向量乘法输出样本集468(3)-468(0)被提供给在下一向量处理级(即M1累加向量处理级460(2))中提供的多个累加器块472(3)-472(0)。多个累加器块472(A)-472(0)当中的每个累加器块包含两个累加器472(X)(1)和472(X)(0)(即472(3)(1)、472(3)(0)、472(2)(1)、472(2)(0)、472(1)(1)、472(1)(0)以及472(0)(1)、472(0)(0))。多个累加器块472(3)-472(0)累加向量乘法输出样本集468(3)-468(0)的结果。如将在下文关于图39和40更详细讨论的,多个累加器块472(3)-472(0)可作为进位保留累加器被提供,其中进位结果在累加过程期间实际上被保留而不被传播,直到累加操作完成。多个累加器块472(3)-472(0)还具有与图35和37中的多个乘法器块462(3)-462(0)熔合以在多个累加器块472(3)-472(0)中提供冗余进位保留格式的选项。在多个累加器块472(3)-472(0)中提供冗余进位保留格式可消除在多个累加器块472(3)-472(0)的累加的每一步期间提供进位传播路径和进位传播相加操作的需求。现在将参照图35介绍M1累加向量处理级460(2)及其多个累加器块472(3)-472(0)。
参照图35,M1累加向量处理级460(2)中的多个累加器块472(3)-472(0)被配置成根据可编程输出数据路径配置在可编程输出数据路径474(3)-474(0)(即474(3)(1)、474(3)(0)、474(2)(1)、474(2)(0)、474(1)(1)、474(1)(0)以及474(0)(1)、474(0)(0))中累加向量乘法输出样本集468(3)-468(0),以要么在下一向量处理级460中要么在输出处理级中提供累加器输出样本集476(3)-476(0)(即476(3)(1)、476(3)(0)、476(2)(1)、476(2)(0)、476(1)(1)、476(1)(0)以及476(0)(1),476(0)(0))。在这一示例中,累加器输出样本集476(3)-476(0)被提供给输出处理级,后者是ALU处理级460(3)。例如,如下文更详细讨论的,作为非限制性示例,累加器输出样本集476(3)-476(0)还可被提供给图2中的基带处理器20中的标量处理器44中的ALU 46。例如,ALU 46可根据执行单元84执行的专门的向量指令获取累加器输出样本集476(3)-476(0)以便在更一般的处理操作中使用。
返回参照图35,累加器块472(3)-472(0)的可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0)可被编程来被重新配置成接收从乘法器块462(3)-462(0)向累加器块472(3)-472(0)提供的不同组合和/或位长度的向量乘法输出样本集468(3)-468(0)。因为每个累加器块472由两个累加器472(X)(1)、472(X)(0)构成,所以可编程输入数据路径478(A)-478(0)在图35中被示为478(3)(1)、478(3)(0)、478(2)(1)、478(2)(0)、478(1)(1)、478(1)(0)以及478(0)(1)、478(0)(0)。类似地,可编程内部数据路径480(3)-480(0)在图35中被示为480(3)(1)、480(3)(0)、480(2)(1)、480(2)(0)、480(1)(1)、480(1)(0)、480(0)(1)、480(0)(0)。下文关于图39和40更详细地讨论在累加器块472(3)-472(0)中提供可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0)。以此方式,根据累加器块472(3)-472(0)的可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0),累加器块472(3)-472(0)可根据所累加的向量乘法输出样本集468(3)-468(0)的编程组合来提供累加器输出样本集476(3)-476(0)。再一次,这提供了累加器块472(3)-472(0)可基于可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0)的编程被配置和被重新配置成执行不同类型的累加操作,以减少执行单元84中的面积并有可能允许在基带处理器20中提供较少的执行单元84以实现所需的向量处理操作的灵活性。
例如,作为非限制性示例,在一个累加器模式配置中,两个累加器块472的可编程输入数据路径478和/或可编程内部数据路径480可被编程以提供单个40位累加器。作为非限制性示例,在另一个累加器模式配置中,两个累加器块472的可编程输入数据路径478和/或可编程内部数据路径480可被编程以提供双24位累加器。在另一个累加器模式配置中,两个累加器块472的可编程输入数据路径478和/或可编程内部数据路径480可被编程以提供16位进位保留加法器继之以单个24位累加器。乘法和累加操作的特定的、不同组合也可根据乘法器块462(3)-462(0)和累加器块472(3)-472(0)的编程(例如,16位复乘法与16位累加,以及32位复乘法与16位累加)被执行单元84支持。
累加器块472(3)-472(0)的可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0)可根据从图2中的基带处理器20的指令分派电路系统48中的向量指令解码器提供的设置来被编程。向量指令指定要由执行单元84执行的特定类型的操作。从而,执行单元84可被配置成为根据指令分派电路系统48中的指令流水线中的向量指令的解码而执行的每个向量指令,对累加器块472(3)-472(0)的可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0)重新编程。向量指令可在执行单元84的一个或多个时钟循环上执行。同样在该示例中,执行单元84可被配置成以逐时钟循环的方式,针对向量指令的每个时钟循环,对累加器块472(3)-472(0)的可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0)重新编程。因此,例如,如果执行单元84中的M1累加向量处理级460(2)执行的向量指令每个时钟循环处理向量乘法输出样本集468(3)-468(0),则作为结果,累加器块472(3)-472(0)的可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0)可在该向量指令的执行期间的每个时钟循环被重新配置。
图36是例示出图2和35中的执行单元84中的乘法器块462(A)-462(0)和累加器块472(A)(1)-472(0)(0)的示例性向量处理(以提供对示例性向量处理的更多阐述)的流程图。乘法器块462(A)-462(0)和累加器块472(A)(1)-472(0)(0)各自具有可编程数据路径配置,且被提供在图2和35的示例性执行单元84中的不同向量处理级中。例如,FFT向量操作涉及乘法操作,继之以累加操作。
就这一点而言,关于图36,向量处理涉及在输入处理级460(0)中在多个输入数据路径A3-C0当中的一输入数据路径中接收向量阵列宽度的多个乘法向量数据样本集34(Y)-34(0)(框501)。向量处理接下来包括在多个乘法器块462(A)-462(0)中从多个输入数据路径A3-C0接收乘法向量数据样本集34(Y)-34(0)(框503)。向量处理接下来包括根据向量处理级460(1)所执行的向量指令,基于乘法器块462(A)-462(0)的可编程数据路径配置,使乘法向量数据样本集34(Y)-34(0)相乘,以在多个乘法输出数据路径470(A)-470(0)当中的乘法输出数据路径470(A)-470(0)中提供乘法向量结果输出样本集468(A)-468(0)(框505)。向量处理接下来包括在多个累加器块472(A)(1)-472(0)(0)中从多个乘法输出数据路径470(A)-470(0)接收乘法向量结果输出样本集468(A)-468(0)(框507)。向量处理接下来包括根据第二向量处理级460(2)执行的向量指令,基于累加器块472(A)(1)-472(0)(0)的可编程输入数据路径478(A)(1)-478(0)(0)、可编程内部数据路径480(A)(1)-480(0)(0)、以及可编程输出数据路径474(A)(1)-474(0)(0)配置,将乘法向量结果输出样本集468(A)-468(0)累加在一起以提供累加器输出样本集476(A)(1)-476(0)(0)(框509)。向量处理接下来包括在可编程输出数据路径474(A)(1)-474(0)(0)中提供累加器输出样本集476(A)(1)-476(0)(0)(框511)。向量处理接下来包括在输出向量处理级460(3)中从累加器块472(A)(1)-472(0)(0)接收累加器输出样本集476(A)(1)-476(0)(0)(框513)。
由于已经描述了图35的示例性执行单元84以及图36中采用具有可编程数据路径配置的向量处理块的向量处理的概览,说明书的剩余部分在图37-40中描述这些向量处理块的更多示例性、非限制性细节。
就这一点而言,图37是对图35的执行单元84的M0乘法向量处理级460(1)中的多个乘法器块462(3)-462(0)的更详细示意图。图38是图37中的乘法器块62的内部组件的示意图。如图37中所例示,示出了乘法器块462(3)-462(0)根据具体的输入数据路径A3-A0、B3-B0、C3-C0接收的向量数据输入样本集466(11)-466(0)。如将在下文关于图38更详细讨论的,在这一示例中,乘法器块462(3)-462(0)中的每一个包括四(4)个8位乘8位乘法器。返回参照图37,在这一示例中乘法器块462(3)-462(0)中的每一个被配置成使被乘数输入‘A’要么与被乘数输入‘B’要么与被乘数输入‘C’相乘。如图37中所示,可在乘法器块462中相乘在一起的被乘数输入‘A’以及‘B’或‘C’受到哪些输入数据路径A3-A0、B3-B0、C3-C0被连接到乘法器块462(3)-462(0)的控制。被乘数选择器输入482(3)-482(0)被提供作为对每个乘法器块462(3)-462(0)的输入,以控制每个乘法器块462(3)-462(0)中的可编程内部数据路径467(3)-467(0)来选择是被乘数输入‘B’还是被乘数输入‘C’被选择来乘以被乘数输入‘A’。以此方式,向乘法器块462(3)-462(0)提供了其可编程内部数据路径467(3)-467(0)被重新编程以按需提供不同的乘法操作的能力。
继续参照图37,使用乘法器块462(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’的虚数位部分。如将在下文关于图38更详细讨论的,在这一示例中,被乘数选择器输入482(3)还控制乘法器块462(3)的可编程内部数据路径467(3)被配置成对被乘数输入‘A’与被乘数输入‘B’还是与被乘数输入‘C’来执行8位乘法,或者乘法器块462(3)被配置成对被乘数输入‘A’与被乘数输入‘B’还是与被乘数输入‘C’来执行16位乘法。
继续参照图37,乘法器块462(3)-462(0)被配置成基于其可编程内部数据路径467(3)-467(0)的配置,各自生成向量乘法输出样本集468(3)-468(0)作为乘法操作的进位‘C’与和‘S’向量输出样本集。如将在下文关于图39和40更详细讨论的,向量乘法输出样本集468(3)-468(0)的进位‘C’与和‘S’被熔合,意味着进位‘C’与和‘S’以冗余进位保留格式被提供给多个累加器块472(3)-472(0),以在多个累加器块472(3)-472(0)中提供冗余进位保留格式。如将在下文更详细讨论的,在多个累加器块472(3)-472(0)中提供冗余进位保留格式可消除在多个累加器块472(3)-472(0)执行的累加操作期间提供进位传播路径和进位传播加法操作的需求。
在图37中示出乘法器块462(3)-462(0)基于其可编程内部数据路径467(3)-467(0)的配置,生成向量乘法输出样本集468(3)-468(0)作为乘法操作的进位‘C’与和‘S’向量输出样本集的示例。例如,乘法器块462(3)被配置成生成进位C00与和S00作为8位乘法的32位值,并生成进位C01与和S01作为16位乘法的64位值。在这一示例中,其它乘法器块462(2)-462(0)具有相同的能力。就这一点而言,乘法器块462(2)被配置成生成进位C10与和S10作为8位乘法的32位值,并生成进位C11与和S11作为16位乘法的64位值。乘法器块462(1)被配置成生成进位C20与和S20作为8位乘法的32位值,并生成进位C21与和S21作为16位乘法的64位值。乘法器块462(0)被配置成生成进位C30与和S30作为8位乘法的32位值,并生成进位C31与和S31作为16位乘法的64位值。
为了阐述图37中乘法器块462中提供的可编程数据路径配置的更多示例性细节,提供了图38。图38是图37中乘法器块462的内部组件的示意图,乘法器块462具有能够使8位乘8位向量数据输入样本集466相乘以及使16位乘16位向量数据输入样本集466相乘的可编程数据路径配置。就这一点而言,在这一示例中,乘法器块462包括四个8×8位乘法器484(3)-484(0)。可提供任何所需数量的乘法器484。第一乘法器484(3)被配置成接收8位向量数据输入样本集466A[H](它是输入的被乘数输入‘A’的高位)并使该向量数据输入样本集466A[H]要么与8位向量数据输入样本集466B[H](它是输入的被乘数输入‘B’的高位)要么与8位向量数据输入样本集466C[I](它是输入的被乘数输入‘C’的高位)相乘。提供了多路复用器486(3),该多路复用器486(3)被配置成要么选择8位向量数据输入样本集466B[H]要么选择8位向量数据输入样本集466C[I]作为被乘数提供给乘法器484(3)。多路复用器486(3)受被乘数选择器输入482[3]控制,被乘数选择器输入482[3]在这一实施例中是被乘数选择器输入482中的高位。以此方式,多路复用器486(3)和被乘数选择器输入482[3]为乘法器484(3)提供可编程内部数据路径467[0]配置,以便控制是8位向量数据输入样本集466B[H]还是8位向量数据输入样本集466C[I]与所接收到的向量数据输入样本集466A[H]相乘。
继续参照图38,其它乘法器484(2)-484(0)也包括与为第一乘法器484(3)提供的类似的可编程内部数据路径467[2]-467[0]。乘法器484(2)包括可编程内部数据路径467[2],该路径具有可编程配置以在可编程内部数据路径467[1]中要么提供8位向量数据输入样本集466B[H]要么提供8位向量数据输入样本集466C[I]来与8位向量数据输入样本集466A[L]相乘,8位向量数据输入样本集466A[L]是被乘数输入‘A’的低位。在这一实施例中,该选择根据被乘数选择器输入482中的被乘数选择器输入482[2]受到多路复用器486(2)的控制。乘法器484(1)包括可编程内部数据路径467[1],该路径可被编程以在可编程内部数据路径467[1]中要么提供8位向量数据输入样本集466B[L](它是被乘数输入‘B’的低位)要么提供8位向量数据输入样本集466C[Q](它是被乘数输入‘C’的低位)来与8位向量数据输入样本集466A[H]相乘。在这一实施例中,该选择根据被乘数选择器输入482中的被乘数选择器输入482[1]受到多路复用器486(1)的控制。此外,乘法器484(0)包括可编程内部数据路径467[0],该路径可被编程以在可编程内部数据路径467[0]中要么提供8位向量数据输入样本集466B[L]要么提供8位向量数据输入样本集466C[Q]来与8位向量数据输入样本集466A[L]相乘。在这一实施例中,该选择根据被乘数选择器输入482中的被乘数选择器输入482[0]受到多路复用器486(0)的控制。
继续参照图38,如上所讨论的,乘法器484(3)-484(0)可被配置成执行不同的位长度乘法操作。就这一点而言,每个乘法器484(3)-484(0)分别包括位长度乘法模式(mode)输入488(3)-488(0)。在这一示例中,每个乘法器484(3)-484(0)可根据分别控制可编程数据路径490(3)-490(0)、491和492(3)-492(0)的配置的输入来编程为8位乘8位模式。每个乘法器484(3)-484(0)还可根据分别控制可编程数据路径490(3)-490(0)、491和492(3)-492(0)的配置的输入来被编程以提供较大位乘法操作(包括16位乘16位模式以及24位乘8位模式)的一部分。例如,如果每个乘法器484(3)-484(0)根据可编程数据路径490(3)-490(0)的配置被配置成8位乘8位乘法模式,则这多个乘法器484(3)-484(0)作为一个单元可被配置成包括两(2)个独立的8位乘8位乘法器作为乘法器块462的一部分。如果每个乘法器484(3)-484(0)根据可编程数据路径491的配置被配置成16位乘16位乘法模式,则这多个乘法器484(3)-484(0)作为一个单元可被配置成包括单个16位乘16位乘法器作为乘法器块462的一部分。如果乘法器484(3)-484(0)根据可编程数据路径492(3)-492(0)的配置被配置成24位乘8位乘法模式,则这多个乘法器484(3)-484(0)作为一个单元可被配置成包括一(1)个16位乘24位乘8位乘法器作为乘法器块462的一部分。
继续参照图38,在这一示例中,乘法器484(3)-484(0)被示为被配置成16位乘16位乘法模式。由每个乘法器484(3)、484(2)分别生成十六(16)位输入和494(3)、494(2)以及输入进位496(3)、496(2)。由每个乘法器484(1)、484(0)分别生成十六(16)位输入和494(1)、494(0)以及输入进位496(1)、496(0)。16位输入和494(3)、494(2)以及输入进位496(3)、496(2)还与16位和输入494(1)、 494(0)以及输入进位496(1)、496(0)一起被提供给24位4:2压缩器515,以将输入和494(3)-494(0)以及输入进位496(3)-496(0)相加在一起。当可编程数据路径491有效且用输入和494(3)-494(0)以及输入进位496(3)-496(0)选通时,被相加的输入和494(3)-494(0)以及输入进位496(3)-496(0)提供16位乘16位乘法模式中的单个和498以及单个进位500。可编程数据路径491由第一基于AND(与)的门502(3)用作为16位字的组合的输入和494(3)、494(2)选通,并由第二基于AND的门502(2)用作为16位字的组合的输入进位496(3)、496(2)选通,以提供给24位4:2压缩器515。可编程数据路径491还由第三基于AND的门502(1)用作为16位字的组合的输入和494(1)、494(0)选通,并由第四基于AND的门502(0)用作为16位字的组合的输入进位496(1)、496(0)选通,以提供给24位4:2压缩器515。如果乘法器块462被配置成16位乘16位或24位乘8位乘法模式,则向可编程输出数据路径470[0]提供向量乘法输出样本集468[0]作为经压缩的32位和S0与32位进位C0部分积。
如果乘法器块462中的乘法器484(3)-484(0)被配置成8位乘8位乘法模式,则可编程输出数据路径470[1]配置被提供为16位输入和494(3)-494(0)与相应的16位输入进位496(3)-496(0)作为部分结果而没有压缩。如果乘法器块462中的乘法器484(3)-484(0)被配置成8位乘8位乘法模式,则可编程输出数据路径470[1]被提供为16位输入和494(3)-494(0)与相应的16位输入进位496(3)-496(0)作为向量乘法输出样本集468[1]而没有压缩。取决于乘法器块462的乘法模式,根据正被执行的向量指令,向量乘法输出样本集468[0]、468[1]被提供给累加器块472(3)-472(0)供对和与进位结果的累加。
由于已经描述了图37和38中具有可编程数据路径配置的乘法器块462(3)-462(0),现在将关于图39一般地描述执行单元84中要与以冗余进位保留格式配置的累加器块472(3)-472(0)熔合的乘法器块462(3)-462(0)的特征。
就这一点而言,图39是上述执行单元84(0)-84(X)中的乘法器块和累加器块的一般化示意图,其中累加器块采用进位保留累加器结构,该结构采用冗余进位保留格式来减少进位传播。如先前所讨论并在图38中所例示,乘法器块462被配置成使被乘数输入466[H]和466[L]相乘,并在可编程输出数据路径470中提供至少一个输入和494与至少一个输入进位496作为向量乘法输出样本集 468。为了消除为每个累加步骤在累加器块472中提供进位传播路径和进位传播加法器的需求,可编程输出数据路径470中的向量乘法输出样本集468中的至少一个输入和494与至少一个输入进位496以冗余进位保留格式熔合到至少一个累加器块472。换言之,向量乘法输出样本集468中的进位496以进位保留格式作为向量输入进位496被提供给累加器块472。以此方式,向量乘法输出样本集468中的输入和494和输入进位496可被提供给累加器块472的压缩器508,该压缩器508在这一实施例中为复数门4:2压缩器。压缩器508被配置成将输入和494和输入进位496分别与先前的累加向量输出和512与先前的移位累加向量输出进位517累加在一起。先前的经移位累加向量输出进位517实际上是在累加操作期间所保留的进位累加。
以此方式,在累加器块472中仅需要提供单个、最终进位传播加法器来向输入和494传播所接收到的输入进位496作为累加器块472生成的累加的一部分。在这一实施例中,减少了累加器块472中与每个累加步骤期间执行进位传播加法操作相关联的功耗。而且,在这一实施例中,累加器块472中与每个累加步骤期间执行进位传播加法操作相关联的门延迟也被消除。
继续参照图39,压缩器508被配置成以冗余形式分别将输入和494和输入进位496与先前的累加向量输出和512与先前的经移位累加向量输出进位517累加。经移位累加向量输出进位517是在由压缩器508执行对下一接收到的输入和494与输入进位496的下一累加之前,由压缩器508生成的累加向量输出进位514通过对该累加向量输出进位514进行移位而生成的。最终经移位累加向量输出进位517由累加器块472中提供的单个、最终进位传播加法器519添加到最终累加向量输出和512,以在最终经移位累加向量输出进位517中传播进位累加,以便将最终累加向量输出和512转换成最终累加器输出样本集476的二进制补码法。最终累加向量输出和512在可编程输出数据路径474中作为累加器输出样本集476提供(见图35)。
由于已经描述了例示出乘法器块462与以冗余进位保留格式配置的累加器块472的熔合的图39,现在将关于图40一般地描述关于累加器块472(3)-472(0)的更多示例性细节。图40是图35的执行单元84中提供的累加器块472的示例性内部组件的详细示意图。如先前所讨论并在下文更详细讨论的,累加器块 472被配置有可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0),使得累加器块472可被编程来充当被设计成执行特定、不同类型的向量累加操作的专用电路系统。例如,累加器块472可被编程来提供多种不同的累加和加法,包括有符号和无符号累加操作。公开了被配置成提供不同类型的累加操作的累加器块472中的可编程输入数据路径478(3)-478(0)和/或可编程内部数据路径480(3)-480(0)的特定示例。而且,累加器块472被配置成包括进位保留累加器472[0]、472[1]以提供冗余进位算术,以避免或减少进位传播,以便以减少的组合逻辑提供高速累加操作。
在图40示出累加器块472的示例性内部组件。如其中所例示,这一实施例中的累加器块472被配置成从乘法器块462接收要被累加在一起的第一输入和494[0]与第一输入进位496[0],以及第二输入和494[1]与第二输入进位496[1]。关于图40,输入和494[0]、494[1]与输入进位496[0]、496[1]将被称为向量输入和494[0]、494[1]与向量输入进位496[0]、496[1]。如先前所述并在图39中所例示,在这一实施例中,向量输入和494[0]、494[1]与向量输入进位496[0]、496[1]各自是16位长。在这一示例中,累加器块472被提供为两个24位进位保留累加器块472[0]、472[1],各自包含类似组件,其中带有‘[0]’的公共元素号的组件被指定成用于进位保留累加器块472[0],而带有‘[1]’的组件被指定成用于进位保留累加器块472[1]。进位保留累加器块472[0]、472[1]可被配置成并发地执行向量累加操作。
参照图40中的进位保留累加器块472[0],向量输入和494[0]与向量输入进位496[0]是作为可编程内部数据路径480[0]的一部分被提供的多路复用器504(0)中的输入。还提供了可由基于异或的门构成的负电路系统506(0),该电路系统根据输入521(0)生成负向量输入和494[0]’与负向量输入进位496[0]’,作为对多路复用器504(0)的输入以用于需要负向量输入和494[0]’与负向量输入进位496[0]’的累加操作。多路复用器504(0)被配置成根据作为向量指令解码的结果而生成的选择器输入510(0)要么选择向量输入和494[0]与向量输入进位496[0]要么选择负向量输入和494[0]’与负向量输入进位496[0]’以便提供给压缩器508(0)。就这一点而言,选择器输入510(0)允许进位保留累加器块472[0]的可编程输入数据路径478[0]被编程,以便根据被配置成要由累加器块472执行的累加操作,要么将向量输入和494[0]与向量输入进位496[0]要么将负向量输入和494[0]’与负向量输入进位496[0]’提供给压缩器508(0)。
继续参照图40,在这一实施例中,进位保留累加器块472[0]的压缩器508(0)是复数门4:2压缩器。就这一点而言,压缩器508(0)被配置成在冗余进位保留操作中累加和与进位。压缩器508(0)被配置成将作为压缩器508(0)的四(4)个输入的当前向量输入和494[0]与向量输入进位496[0],或当前负向量输入和494[0]’与负向量输入进位496[0]’,与先前的累加向量输入和494[0]与向量输入进位496[0]或者累加负向量输入和494[0]’与负向量输入进位496[0]’累加在一起。压缩器508(0)在可编程输出数据路径474[0]中提供累加向量输出和512(0)与累加向量输出进位514(0)作为累加器输出样本集476[0](见图35)以提供累加器输出样本集476(3)-476(0)。累加向量输出进位514(0)由位移位器516(0)在累加操作期间移位,以提供经移位累加向量输出进位517(0)以便控制每个累加步骤期间的位宽度增长。例如,在这一实施例中,位移位器516(0)是以冗余进位保留格式熔合到压缩器508(0)的桶式移位器。以此方式,在累加器块472[0]执行的累加操作期间,经移位累加向量输出进位517(0)实际上被保留而不必被传播给累加向量输出和512(0)。以此方式,在这一实施例中,累加器块472[0]中与每个累加步骤期间执行进位传播加法操作相关联的功耗和门延迟被消除。
另外的之后的向量输入和494[0]与向量输入进位496[0],或负向量输入和494[0]’与负向量输入进位496[0]’,可与当前累加向量输出和512(0)和当前的累加向量输出进位517(0)累加。向量输入和494[0]与向量输入进位496[0],或负向量输入和494[0]’与负向量输入进位496[0]’,由作为可编程内部数据路径480[0]的一部分的多路复用器518(0)根据作为向量指令解码的结果而生成的和进位选择器520(0)来选择。当前累加向量输出和512(0)与当前经移位累加向量输出进位517(0)可作为用于进位保留累加器块472[0]的压缩器508(0)的输入被提供,以便提供更新的累加向量输出和512(0)与累加向量输出进位514(0)。就这一点而言,和-进位选择器520(0)允许累加器块472[0]的可编程内部数据路径480[0]被编程,以根据被配置成要由累加器块472执行的累加操作将向量输入和494[0]与向量输入进位496[0]提供给压缩器508(0)。在这一实施例中还提供保持门522(0)、524(0),以使得多路复用器518(0)根据保持状态输入526(0)来保持累加向量输出和512(0)与经移位累加向量输出进位517(0)的当前状态,以便控制进位保留累加器块472[0]中累加的操作时序。
继续参照图40,由控制门534(0)、536(0)以及534(1)、536(1)分别选通进位保留累加器块472[0]的累加向量输出和512(0)与经移位累加向量输出进位517(0),以及进位保留累加器块472[1]的累加向量输出和512(1)与经移位累加向量输出进位517(1)。控制门534(0)、536(0)以及534(1)、536(1)分别控制被返回给压缩器508(0)、508(1)的累加向量输出和512(0)与经移位累加向量输出进位517(0),以及累加向量输出和512(1)与经移位累加向量输出进位517(1)。
总而言之,采用图40中的累加器块472的累加器块472[0]、472[1]的可编程输入数据路径478[0]、478[1]与可编程内部数据路径480[0]、480[1],累加器块472可被配置成不同模式。累加器块472可被配置成采用图40中所例示的公共累加器电路系统,根据特定向量处理指令,提供不同的累加操作。
根据本文所讨论的概念与实施例的VPE可在任何基于处理器的设备中提供或集成到任何基于处理器的设备中。不作为限定的示例包括机顶盒、娱乐单元、导航设备、通信设备、固定位置数据单元、移动位置数据单元、移动电话、蜂窝电话、计算机、便携式计算机、台式计算机、个人数字助理(PDA)、监视器、计算机监视器、电视机、调谐器、无线电、卫星无线电、音乐播放器、数字音乐播放器、便携式音乐播放器、数字视频播放器、视频播放器、数字视频碟(DVD)播放器、以及便携式数字视频播放器。
就这一点而言,图41例示出基于处理器的系统550的示例。在这一示例中,基于处理器的系统550包括一个或多个处理单元(PU)552,各自包括一个或多个处理器或核554。作为非限制性示例,(诸)PU 552可以是图2中的基带处理器20。作为非限制性示例,处理器54可以是向量处理器,如同图2中提供的基带处理器20。就这一点而言,处理器554还可包括VPE 556,包括但不限于图2中的执行单元84。(诸)PU 552可具有耦合到(诸)处理器554、用于对临时存储的数据进行快速访问的高速缓存存储器558。(诸)PU 552被耦合到系统总线560,且可相互耦合被包括在基于处理器的系统550中的主设备和从设备。如公知地,(诸)PU552通过在系统总线560上交换地址、控制和数据信息来与这些其它设备通信。例如,(诸)PU552可向作为从设备的示例的存储器控制器562传达总线事务请求。尽管未在图41中例示出,但可提供多条系统总线560,其中每条系统总线560构成不同的织构。
其他主设备和从设备可被连接到系统总线560。如图41中所例示的,作为示例,这些设备可包括存储器系统564、一个或多个输入设备566、一个或多个输出设备568、一个或多个网络接口设备570、以及一个或多个显示器控制器572。存储器系统564可包括可由存储器控制器562访问的存储器565。(诸)输入设备566可包括任何类型的输入设备,包括但不限于输入键、开关、语音处理器等。(诸)输出设备568可包括任何类型的输出设备,包括但不限于音频、视频、其他视觉指示器等。(诸)网络接口设备570可以是被配置成允许往来于网络574的数据交换的任何设备。网络574可以是任何类型的网络,包括但不限于:有线或无线网络、私有或公共网络、局域网(LAN)、广域网(WLAN)和因特网。(诸)网络接口设备570可被配置成支持所期望的任何类型的通信协议。
PU 552还可被配置成通过系统总线560访问(诸)显示器控制器572以控制发送给一个或多个显示器578的信息。(诸)显示器控制器572经由一个或多个视频处理器580向(诸)显示器578发送要显示的信息,视频处理器164将要显示的信息处理成适于(诸)显示器578的格式。(诸)显示器578可包括任何类型的显示器,包括但不限于:阴极射线管(CRT)、液晶显示器(LCD)、等离子显示器等。
本领域的技术人员将理解,结合此处公开的双电压域存储器缓冲区的实施例描述的各种说明性逻辑块、模块、电路和算法可被实现为电子硬件、存储在存储器中或另一计算机可读介质中并由处理器或其它处理器设备执行的指令、或其组合。作为示例,本文描述的仲裁器、主设备和从设备可用在任何电路、硬件组件、集成电路(IC)、或IC芯片中。本文所公开的存储器可以是任何类型和大小的存储器,且可被配置成存储所需的任何类型的信息。为清楚地解说这种可互换性,以上已经以其功能性的形式一般地描述了各种解说性组件、框、模块、电路和步骤。此类功能性如何被实现取决于具体应用、设计选择和/或加诸于整体系统上的设计约束。技术人员可针对每种特定应用以不同方式来实现所描述的功能性,但此类实现决策不应被解读为致使脱离本发明的范围。
结合本文所公开的实施例描述的各种说明性逻辑块、模块、和电路可用设计成执行本文所描述的功能的处理器、DSP、专用集成电路(ASIC)、FPGA或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件、或其任何组合来实现或执行。处理器可以是微处理器,但在替代方案中,处理器可以是任何常规处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协同的一个或多个微处理器、或任何其它此类配置。
本文所公开的各实施例可被体现为硬件和存储在硬件中的指令,并且可驻留在例如随机存取存储器(RAM)、闪存、只读存储器(ROM)、电可编程ROM(EPROM)、电可擦可编程ROM(EEPROM)、寄存器、硬盘、可移动盘、CD-ROM、或本领域中所知的任何其他形式的计算机可读介质中。示例性存储介质耦合到处理器以使得该处理器能从该存储介质读取信息以及向该存储介质写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在ASIC中。ASIC可驻留在远程站中。在替换方案中,处理器和存储介质可作为分立组件驻留在远程站、基站或服务器中。
还注意到,本文任何示例性实施例中描述的操作步骤被描述是为了提供示例和讨论。所描述的操作可按除了所解说的顺序以外的众多不同顺序来执行。而且,在单个操作步骤中描述的操作实际上可在多个不同步骤中执行。另外,在示例性实施例中讨论的一个或多个操作步骤可被组合。应理解,如对本领域技术人员显而易见地,在流程图中解说的操作步骤可进行众多不同的修改。本领域技术人员还将理解,可使用各种不同技术中的任何一种来表示信息和信号。例如,贯穿上面描述始终可能被述及的数据、指令、命令、信息、信号、位(比特)、码元、和码片可由电压、电流、电磁波、磁场或磁粒子、光场或光粒子、或其任何组合来表示。
提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变型而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖特征一致的最广义的范围。

Claims (19)

1.一种被配置成在进行中对执行向量处理操作的至少一个执行单元生成的结果输出向量数据样本集进行重排序的向量处理引擎VPE,包括:
至少一个向量数据文件,所述至少一个向量数据文件被配置成:
在至少一个输入数据流路径中提供经取回的输入向量数据样本集以用于所述向量处理操作;以及
从至少一个输出数据流路径接收经重排序的结果输出向量数据样本集以便被存储;
在所述至少一个输入数据流路径中提供的至少一个执行单元;
在所述至少一个输入数据流路径中在所述至少一个向量数据文件与所述至少一个执行单元之间提供的至少一个抽头延迟线,所述至少一个抽头延迟线被配置成:
从所述至少一个向量数据文件接收所述输入向量数据样本集;以及
针对等于所述向量处理操作中的向量处理级的数目的多个处理级中的每个处理级,在多个流水线寄存器中将所述输入向量数据样本集移位向量数据样本宽度,以在所述至少一个输入数据流路径中针对所述多个处理级中的每个处理级提供经移位的输入向量数据样本集;以及
所述至少一个执行单元被配置成:
针对所述多个处理级中的每个处理级,在所述至少一个输入数据流路径上接收所述经移位的输入向量数据样本集;以及
针对所述多个处理级中的每个处理级,对所述经移位的输入向量数据样本集执行所述向量处理操作以在所述至少一个输出数据流路径上提供所述结果输出向量数据样本集;以及
至少一个重排序电路系统,所述至少一个重排序电路系统被配置成:
在所述至少一个输出数据流路径上接收所述结果输出向量数据样本集;
将所述结果输出向量数据样本集重排序成经重排序的结果输出向量数据样本集,而无需将所述结果输出向量数据样本集存储在所述至少一个向量数据文件中;以及
在所述至少一个输出数据流路径上提供所述经重排序的结果输出向量数据样本集。
2.如权利要求1所述的VPE,其特征在于,所述至少一个向量数据文件被配置成:
在所述至少一个输入数据流路径中提供具有所述至少一个向量数据文件的宽度的所述输入向量数据样本集以用于所述向量处理操作;以及
从所述至少一个输出数据流路径接收具有所述至少一个向量数据文件的宽度的所述经重排序的结果输出向量数据样本集以便被存储。
3.如权利要求1所述的VPE,其特征在于:
所述至少一个向量数据文件被进一步配置成:
在所述至少一个输入数据流路径中在至少一个向量数据文件输出上提供所述输入向量数据样本集;以及
在所述至少一个输出数据流路径中在至少一个向量数据文件输入上接收所述经重排序的结果输出向量数据样本集;
所述至少一个执行单元被进一步配置成:
在所述至少一个输入数据流路径中在至少一个执行单元输入上接收所述输入向量数据样本集;以及
对所述输入向量数据样本集执行所述向量处理操作以在所述至少一个输出数据流路径中在至少一个执行单元输出上提供所述结果输出向量数据样本集;以及
所述至少一个重排序电路系统被进一步配置成:
在所述至少一个输出数据流路径中在至少一个重排序电路系统输入上从所述至少一个执行单元接收所述结果输出向量数据样本集;以及
在所述至少一个输出数据流路径中在至少一个重排序电路系统输出上提供所述经重排序的结果输出向量数据样本集。
4.如权利要求1所述的VPE,其特征在于,所述至少一个重排序电路系统进一步包括多个输出向量数据样本选择器,每个输出向量数据样本选择器被配置成:
从所述结果输出向量数据样本集接收第一结果输出向量数据样本并且从所述结果输出向量数据样本集接收第二结果输出向量数据样本,所述第二结果输出向量数据样本在所述结果输出向量数据样本集中不与所述第一结果输出向量数据样本毗邻;以及
在所述第一结果输出向量数据样本与所述第二结果输出向量数据样本之间进行选择以在所述至少一个输出数据流路径中提供所述经重排序的结果输出向量数据样本集。
5.如权利要求1所述的VPE,其特征在于,所述至少一个重排序电路系统是能配置的以便基于可编程重排序数据路径配置输入被重新配置成选择性地对所述结果输出向量数据样本集进行重排序。
6.如权利要求5所述的VPE,其特征在于,所述至少一个重排序电路系统被进一步配置成基于所述可编程重排序数据路径配置输入被重新配置成在要由所述至少一个执行单元执行的所述VPE的每个时钟循环上选择性地对所述结果输出向量数据样本集进行重排序。
7.如权利要求1所述的VPE,其特征在于,所述至少一个抽头延迟线包括:
影子抽头延迟线,其被配置成:
在所述至少一个输入数据流路径中将来自所述至少一个向量数据文件的所述输入向量数据样本集接收到多个影子流水线寄存器中;以及
针对每个处理级,将所述多个影子流水线寄存器中的所述输入向量数据样本集移位所述向量数据样本宽度以进入主抽头延迟线,从而提供所述经移位的输入向量数据样本集;并且
所述主抽头延迟线被配置成在所述多个处理级中的每个处理级中在所述至少一个输入数据流路径中提供所述经移位的输入向量数据样本集。
8.如权利要求7所述的VPE,其特征在于,进一步包括多个输入向量数据样本选择器,所述多个输入向量数据样本选择器中的每一者被指派给所述至少一个抽头延迟线中的所述多个流水线寄存器中的一流水线寄存器;
所述多个输入向量数据样本选择器各自被配置成在来自所述至少一个向量数据文件的所述输入向量数据样本集中的输入向量数据样本与存储在毗邻流水线寄存器中的输入向量数据样本之间进行选择,以在所指派的流水线寄存器中存储经移位的输入向量数据样本。
9.如权利要求8所述的VPE,其特征在于,所述多个输入向量数据样本选择器中的每一者被配置成选择共同将输入向量数据样本字存储在多个成群的毗邻流水线寄存器中的多个成群的输入向量数据样本,以将经移位的输入向量数据样本字存储在所述多个流水线寄存器中的多个成群的流水线寄存器中。
10.如权利要求1所述的VPE,其特征在于,所述至少一个抽头延迟线是能配置的,以便根据要由所述至少一个执行单元执行的向量指令基于用于所述至少一个抽头延迟线的可编程重排序数据路径配置输入被选择性地提供在所述至少一个向量数据文件与所述至少一个执行单元之间的所述至少一个输入数据流路径中。
11.如权利要求10所述的VPE,其特征在于,所述至少一个抽头延迟线被配置成根据要由所述至少一个执行单元执行的下一向量指令基于用于所述至少一个抽头延迟线的所述可编程重排序数据路径配置输入而被重新配置成被选择性地提供在所述至少一个输入数据流路径中。
12.如权利要求11所述的VPE,其特征在于,所述至少一个抽头延迟线被配置成在要由所述至少一个执行单元执行的所述VPE的每个时钟循环上被重新配置成被选择性地提供在所述至少一个输入数据流路径中。
13.如权利要求1所述的VPE,其特征在于,所述至少一个执行单元能基于用于所述至少一个执行单元的可编程重排序数据路径配置输入来配置成处理来自所述输入向量数据样本集的不同位宽的输入向量数据样本。
14.一种被配置成在进行中对执行向量处理操作的至少一个执行单元装置生成的结果输出向量数据样本集进行重排序的向量处理引擎VPE,包括:
至少一个向量数据文件装置,所述至少一个向量数据文件装置包括:
用于在至少一个输入数据流路径装置中取回输入向量数据样本集以用于所述向量处理操作的装置;以及
用于从至少一个输出数据流路径装置接收经重排序的结果输出向量数据样本集以便被存储的装置;
在所述至少一个输入数据流路径装置中提供的至少一个执行单元装置;
在所述至少一个输入数据流路径装置中在所述至少一个向量数据文件装置与所述至少一个执行单元装置之间提供的至少一个抽头延迟线装置,
所述至少一个抽头延迟线装置被配置成:
用于从所述至少一个向量数据文件装置接收所述输入向量数据样本集的装置;以及
用于针对等于所述向量处理操作中的向量处理级的数目的多个处理级中的每个处理级,在多个流水线寄存器中将所述输入向量数据样本集移位向量数据样本宽度,以在所述至少一个输入数据流路径装置中针对所述多个处理级中的每个处理级提供经移位的输入向量数据样本集的装置;以及
所述至少一个执行单元装置被配置成:
用于针对所述多个处理级中的每个处理级,在所述至少一个输入数据流路径装置上接收所述经移位的输入向量数据样本集的装置;以及
用于针对所述多个处理级中的每个处理级,对所述经移位的输入向量数据样本集执行所述向量处理操作以在所述至少一个输出数据流路径装置上提供所述结果输出向量数据样本集的装置;以及
至少一个重排序装置,所述至少一个重排序装置包括:
用于在所述至少一个输出数据流路径装置上接收所述结果输出向量数据样本集的装置;
用于将所述结果输出向量数据样本集重排序成经重排序的结果输出向量数据样本集的装置,而无需将所述结果输出向量数据样本集存储在所述至少一个向量数据文件装置中;以及
用于在所述至少一个输出数据流路径装置上提供所述经重排序的结果输出向量数据样本集的装置。
15.一种在进行中对执行向量处理操作的至少一个执行单元生成的结果输出向量数据样本集进行重排序的方法,包括:
在至少一个输入数据流路径中从至少一个向量数据文件提供经取回的输入向量数据样本集以用于所述向量处理操作;
在所述至少一个输入数据流路径中将所述经取回的输入向量数据样本集接收到至少一个抽头延迟线中,所述至少一个抽头延迟线被提供在所述至少一个向量数据文件与所述至少一个执行单元之间的所述至少一个输入数据流路径中;
针对等于所述向量处理操作中的向量处理级的数目的多个处理级中的每个处理级,在多个流水线寄存器中将所述输入向量数据样本集移位向量数据样本宽度,以在所述至少一个输入数据流路径中针对所述多个处理级中的每个处理级向至少一个重排序电路系统提供经移位的输入向量数据样本集;
针对所述多个处理级中的每个处理级,在所述至少一个输入数据流路径上从所述至少一个向量数据文件接收所述经移位的输入向量数据样本集;
针对所述多个处理级中的每个处理级,在所述至少一个输入数据流路径上提供所述经移位的输入向量数据样本集;
针对所述多个处理级中的每个处理级,在所述至少一个输入数据流路径上接收所述经移位的输入向量数据样本集;以及
通过以下动作来执行所述向量处理操作:针对所述多个处理级中的每个处理级,对所述经移位的输入向量数据样本集执行所述向量处理操作以在至少一个输出数据流路径上提供所述结果输出向量数据样本集;
在所述至少一个输出数据流路径上将所述结果输出向量数据样本集重排序成经重排序的结果输出向量数据样本集,而无需将所述结果输出向量数据样本集存储在所述至少一个向量数据文件中;以及
在所述至少一个输出数据流路径中将所述经重排序的结果输出向量数据样本集存储在所述至少一个向量数据文件中。
16.如权利要求15所述的方法,其特征在于,将所述结果输出向量数据样本集重排序成所述经重排序的结果输出向量数据样本集进一步包括:
从所述结果输出向量数据样本集接收第一结果输出向量数据样本并且从所述结果输出向量数据样本集接收第二结果输出向量数据样本,所述第二结果输出向量数据样本在所述结果输出向量数据样本集中不与所述第一结果输出向量数据样本毗邻;以及
在所述第一结果输出向量数据样本与所述第二结果输出向量数据样本之间进行选择以在所述至少一个输出数据流路径中提供所述经重排序的结果输出向量数据样本集。
17.如权利要求15所述的方法,其特征在于,进一步包括:
接收可编程重排序数据路径配置输入;以及
基于所述重排序数据路径配置输入来选择性地对所述结果输出向量数据样本集进行重排序。
18.如权利要求17所述的方法,其特征在于,进一步包括针对要由所述至少一个执行单元执行的VPE的每个时钟循环,基于所述可编程重排序数据路径配置输入来选择性地对所述结果输出向量数据样本集进行重排序。
19.如权利要求17所述的方法,其特征在于,进一步包括基于用于要由所述至少一个执行单元执行的下一向量指令的所述可编程重排序数据路径配置输入来选择性地对所述结果输出向量数据样本集进行重排序。
CN201480062406.0A 2013-11-15 2014-11-13 在向量数据存储器与执行单元之间的数据流路径中采用重排序电路系统的向量处理引擎以及相关的方法 Expired - Fee Related CN105765523B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/082,081 2013-11-15
US14/082,081 US9977676B2 (en) 2013-11-15 2013-11-15 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
PCT/US2014/065412 WO2015073646A1 (en) 2013-11-15 2014-11-13 Vector processing engine employing reordering circuitry in data flow paths between vector data memory and execution units, and related method

Publications (2)

Publication Number Publication Date
CN105765523A CN105765523A (zh) 2016-07-13
CN105765523B true CN105765523B (zh) 2018-07-17

Family

ID=52023626

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480062406.0A Expired - Fee Related CN105765523B (zh) 2013-11-15 2014-11-13 在向量数据存储器与执行单元之间的数据流路径中采用重排序电路系统的向量处理引擎以及相关的方法

Country Status (6)

Country Link
US (1) US9977676B2 (zh)
EP (1) EP3069233A1 (zh)
JP (1) JP2016541057A (zh)
KR (1) KR20160085335A (zh)
CN (1) CN105765523B (zh)
WO (1) WO2015073646A1 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
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
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
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
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
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
KR102240728B1 (ko) * 2015-01-27 2021-04-16 한국전자통신연구원 길이가 64800이며, 부호율이 4/15인 ldpc 부호어 및 64-심볼 맵핑을 위한 비트 인터리버 및 이를 이용한 비트 인터리빙 방법
KR102287614B1 (ko) * 2015-02-12 2021-08-10 한국전자통신연구원 길이가 64800이며, 부호율이 2/15인 ldpc 부호어 및 16-심볼 맵핑을 위한 비트 인터리버 및 이를 이용한 비트 인터리빙 방법
KR102287630B1 (ko) * 2015-02-17 2021-08-10 한국전자통신연구원 길이가 16200이며, 부호율이 3/15인 ldpc 부호어 및 16-심볼 맵핑을 위한 비트 인터리버 및 이를 이용한 비트 인터리빙 방법
US11977968B2 (en) * 2017-04-20 2024-05-07 Shanghai Cambricon Information Technology Co., Ltd. Sparse processing in neural network processors
KR102343652B1 (ko) 2017-05-25 2021-12-24 삼성전자주식회사 벡터 프로세서의 서열 정렬 방법
GB2569271B (en) 2017-10-20 2020-05-13 Graphcore Ltd Synchronization with a host processor
GB2569844B (en) * 2017-10-20 2021-01-06 Graphcore Ltd Sending data off-chip
GB2569775B (en) 2017-10-20 2020-02-26 Graphcore Ltd Synchronization in a multi-tile, multi-chip processing arrangement
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
GB2575294B8 (en) 2018-07-04 2022-07-20 Graphcore Ltd Host Proxy On Gateway
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
GB2579412B (en) 2018-11-30 2020-12-23 Graphcore Ltd Gateway pull model
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
CN110795687A (zh) * 2019-10-29 2020-02-14 南京宁麒智能计算芯片研究院有限公司 一种自相关算法的层次化分割系统及方法
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 (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101208658A (zh) * 2005-04-08 2008-06-25 艾色拉公司 数据访问和置换单元
CN101482811A (zh) * 2008-01-09 2009-07-15 模拟装置公司 用于增强的计算能力的处理器体系结构
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5524256A (en) * 1993-05-07 1996-06-04 Apple Computer, Inc. Method and system for reordering bytes in a data stream
GB9509989D0 (en) 1995-05-17 1995-07-12 Sgs Thomson Microelectronics Manipulation of data
GB9801713D0 (en) * 1998-01-27 1998-03-25 Sgs Thomson Microelectronics Executing permutations
US7395538B1 (en) 2003-03-07 2008-07-01 Juniper Networks, Inc. Scalable packet processing systems and methods
GB2399900B (en) 2003-03-27 2005-10-05 Micron Technology Inc Data reording processor and method for use in an active memory device
US20050050303A1 (en) 2003-06-30 2005-03-03 Roni Rosner Hierarchical reorder buffers for controlling speculative execution in a multi-cluster system
GB2409063B (en) 2003-12-09 2006-07-12 Advanced Risc Mach Ltd Vector by scalar operations
JP2007034731A (ja) 2005-07-27 2007-02-08 Toshiba Corp パイプラインプロセッサ
JP4686435B2 (ja) * 2006-10-27 2011-05-25 株式会社東芝 演算装置
US8255446B2 (en) 2006-12-12 2012-08-28 Arm Limited Apparatus and method for performing rearrangement and arithmetic operations on data
US8140932B2 (en) 2007-11-26 2012-03-20 Motorola Mobility, Inc. Data interleaving circuit and method for vectorized turbo decoder
US8868885B2 (en) 2010-11-18 2014-10-21 Ceva D.S.P. Ltd. On-the-fly permutation of vector elements for executing successive elemental instructions
KR20140092292A (ko) * 2011-10-17 2014-07-23 파나소닉 주식회사 적응 등화기
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
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
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
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
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
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
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
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101208658A (zh) * 2005-04-08 2008-06-25 艾色拉公司 数据访问和置换单元
CN101482811A (zh) * 2008-01-09 2009-07-15 模拟装置公司 用于增强的计算能力的处理器体系结构
CN102197369A (zh) * 2008-10-08 2011-09-21 Arm有限公司 用于执行simd乘法-累积运算的装置及方法

Also Published As

Publication number Publication date
CN105765523A (zh) 2016-07-13
WO2015073646A1 (en) 2015-05-21
JP2016541057A (ja) 2016-12-28
KR20160085335A (ko) 2016-07-15
US9977676B2 (en) 2018-05-22
EP3069233A1 (en) 2016-09-21
US20150143085A1 (en) 2015-05-21

Similar Documents

Publication Publication Date Title
CN105765523B (zh) 在向量数据存储器与执行单元之间的数据流路径中采用重排序电路系统的向量处理引擎以及相关的方法
CN105723333B (zh) 在执行单元与向量数据存储器之间具有合并电路系统的向量处理引擎以及相关的方法
CN105723331A (zh) 采用抽头延迟线用于滤波器向量处理操作的向量处理引擎(vpe)以及相关的向量处理系统和方法
CN105723328A (zh) 在向量数据存储器与执行单元之间的数据流路径中采用格式转换电路系统的向量处理引擎和相关方法
CN105723332A (zh) 在执行单元与向量数据存储器之间的数据流路径中采用解扩展电路系统的向量处理引擎以及相关的方法
CN105723330A (zh) 采用抽头延迟线进行相关向量处理操作的向量处理引擎(vpe)、以及相关向量处理器系统和方法
CN104969215B (zh) 具有用于提供蝶形向量处理电路的可编程数据路径的向量处理引擎以及相关的向量处理器、系统和方法
US7353243B2 (en) Reconfigurable filter node for an adaptive computing machine
CN105027109A (zh) 具有用于提供多模向量处理的可编程数据路径配置的向量处理引擎、以及相关向量处理器、系统和方法

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: 20180717

Termination date: 20191113

CF01 Termination of patent right due to non-payment of annual fee