TWI601066B - 具有用於提供多模基-2x蝶形向量處理電路的可程式設計資料路徑的向量處理引擎以及相關的向量處理器、系統和方法 - Google Patents

具有用於提供多模基-2x蝶形向量處理電路的可程式設計資料路徑的向量處理引擎以及相關的向量處理器、系統和方法 Download PDF

Info

Publication number
TWI601066B
TWI601066B TW103107652A TW103107652A TWI601066B TW I601066 B TWI601066 B TW I601066B TW 103107652 A TW103107652 A TW 103107652A TW 103107652 A TW103107652 A TW 103107652A TW I601066 B TWI601066 B TW I601066B
Authority
TW
Taiwan
Prior art keywords
vector
base
input
accumulator
output
Prior art date
Application number
TW103107652A
Other languages
English (en)
Other versions
TW201502978A (zh
Inventor
坎拉席爾
Original Assignee
高通公司
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 高通公司 filed Critical 高通公司
Publication of TW201502978A publication Critical patent/TW201502978A/zh
Application granted granted Critical
Publication of TWI601066B publication Critical patent/TWI601066B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • 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/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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
    • 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
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/38Indexing scheme relating to groups G06F7/38 - G06F7/575
    • G06F2207/3804Details
    • G06F2207/3808Details concerning the type of numbers or the way they are handled
    • G06F2207/3812Devices capable of handling different types of numbers
    • G06F2207/382Reconfigurable for different fixed word lengths

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Discrete Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Complex Calculations (AREA)
  • Advance Control (AREA)
  • Computer Hardware Design (AREA)

Description

具有用於提供多模基-2 X 蝶形向量處理電路的可程式設計資料路徑的向量處理引擎以及相關的向量處理器、系統和方法 【相關申請案】
本案亦涉及2013年3月13日提出申請的、名為「Vector Processing Carry-Save Accumulators Employing Redundant Carry-Save Format To Reduce Carry Propagation,And Related Vector Processors,Systems,And Methods(採用冗餘進位保留格式來減少進位傳播的向量處理進位備用累加器及相關向量處理器、系統和方法)」的美國專利申請案S/N.XX/XXX,XXX(高通編號No.123248),該申請案經由引用其整體被包含於此。
本案涉及2013年3月13日提出申請的、名為「Vector Processing Engines Having Programmable Data Path Configurations For Providing Multi-Mode Vector Processing,And Related Vector Processors,Systems,and Methods(具有用於提供多模向量處理的可程式設計資料路徑配置的向量處理引擎及相關向量處理器、系統和方法)」的美國專利申請案S/N.XX/XXX,XXX(高通編號No.123249),該申請案經由引用其整體被包含於此。
本案領域係關於用於處理向量和標量運算的向量處理器和相關系統,包括單指令多資料(SIMD)處理器和多指令多資料(MIMD)處理器。
無線計算系統正迅速成為數位資訊領域中最流行的技術之一。技術進步已導致越來越小且越來越強大的無線通訊設備。例如,無線計算設備通常包括小、輕量且易於由使用者攜帶的可攜式無線電話、個人數位助理(PDA)和傳呼設備。更具體地,可攜式無線電話(諸如蜂巢式電話和網際網路協定(IP)電話)可經由無線網路傳輸語音和資料封包。此外,許多此類無線通訊設備包括其他類型的設備。例如,無線電話可包括數位相機、數位攝像機、數位記錄器、及/或音訊檔播放機。同樣,無線電話可包括可用於存取網路際網路的web介面。此外,無線通訊設備可包括用於根據所設計的無線通訊技術標準(例如,分碼多工存取(CDMA)、寬頻CDMA(WCDMA)以及長期進化(LTE))來處理高速無線通訊資料的複雜處理資源。因此,這些無線通訊設備包括相當 的計算能力。
隨著無線計算設備變得越來越小且越來越強大,它們越來越變得資源受限。例如,螢幕尺寸、可用記憶體和檔案系統空間的量以及輸入和輸出能力的量可能受到設備的小尺寸的限制。此外,電池大小、電池提供的電量以及電池的壽命亦受到限制。增加設備的電池壽命的一種方式是設計消耗較少功率的處理器。
就這一點而言,對包括向量處理器的無線通訊設備可採用基頻處理器。向量處理器具有提供對資料向量(亦即,陣列)工作的高級運算的向量體系結構。與對一組資料執行向量指令然後再次取回和解碼向量指令以用於向量內的後續元素相反,向量處理涉及取回向量指令一次,然後在資料元素的整個陣列上執行向量指令多次。這種程序允許降低執行程式所需的能量,因為每一向量指令需要被取回的次數較少等等。由於向量指令同時在多個時鐘週期上對長向量操作,高度並行性可用簡單的按次序向量指令分派來實現。
圖1圖示可在諸如無線電腦設備等計算設備中採用的示例性基頻處理器10。基頻處理器10包括多個處理引擎(PE)12,它們各自專用於為特定應用提供因功能而異的向量處理。在此示例中,在基頻處理器10中提供了六(6)個分開的PE 12(0)-12(5)。PE 12(0)-12(5)各自被配置成為從共用記憶體16向PE 12(0)-12(5)提供的固定X位元寬的向量資料14提供向量處理。例如,向量資料14可以是512位元寬。向量資料14可被定義成較小的多個X位元寬的向量資料取樣集 18(0)-18(Y)(例如,16位元和32位元取樣集)。以此方式,PE 12(0)-12(5)能夠提供對並行向PE 12(0)-12(5)提供的多個向量資料取樣集的向量處理以實現高度並行性。每個PE 12(0)-12(5)可包括用於儲存對向量資料14處理向量指令的結果的向量暫存器檔(VR)。
圖1中的基頻處理器10中的每一PE 12(0)-12(5)包括專門設計來高效執行特定類型的固定運算的特定、專用的電路和硬體。例如,圖1中的基頻處理器10包括分開的寬頻分碼多工存取(WCDMA)PE 12(0)、12(1)以及長期進化(LTE)PE 12(4)、12(5),因為WCDMA和LTE涉及不同類型的專門運算。因此,經由提供分開的WCDMA特定PE 12(0)、12(1)以及LTE特定PE 12(4)、12(5),PE 12(0)、12(1)、12(4)、12(5)中的每一個可被設計成包括特別針對WCDMA和LTE頻繁執行的功能的專門、專用電路以便進行高效運算。這種設計與標量處理引擎形成對照,標量處理引擎包括被設計成靈活以支援較大量的不相關運算但效率較低的更為通用的電路和硬體。
通常在PE中執行向量累加運算。就這一點而言,PE包括因功能而異的累加器結構,這些結構各自具有支援特定向量累加運算的專門的電路和硬體以便進行高效處理。採用向量累加運算的PE所支援的普通向量運算的示例包括濾波運算、相關運算以及通常用於為無線通訊演算法執行快速傅立葉轉換(FFT)向量處理運算的基-2X(例如,基-2以及基-4)蝶形運算。在PE中提供因功能而異的累加器結構對頻繁執 行的、專門的累加運算是有利的。然而,在PE中提供因功能而異的累加器結構可增加基頻處理器所需的面積和功率,因為在PE中提供的分開的因功能而異的累加器結構各自包括專門的電路和記憶體。
此處揭示的實施例包括具有用於提供多模基-2X蝶形向量處理電路的可程式設計資料路徑配置的向量處理引擎(VPE)。亦揭示相關的向量處理器、系統和方法。此處揭示的VPE包括各自具有向量處理塊的複數個向量處理級,向量處理塊具有用於執行基-2X蝶形向量運算以便高效執行快速傅立葉轉換(FFT)向量處理的可程式設計資料路徑配置。向量處理塊的資料路徑配置可被程式設計來提供不同類型的基-2X蝶形向量運算以及其他算術邏輯向量運算。作為結果,較少的VPE可在一向量處理器中提供所需的基-2X蝶形向量運算以及其他類型的算術邏輯向量運算,由此節省了向量處理器中的面積,而仍保留與標量處理引擎相比較少的暫存器寫以及較快的向量指令執行時間的向量處理優點。
就這一點而言,在此處揭示的某些實施例中,在VPE的向量處理級中提供具有可程式設計資料路徑配置的複數個乘法器塊。複數個乘法器塊與在VPE的另一向量處理級中提供的具有可程式設計資料路徑配置的複數個累加器塊熔合。每一乘法器塊的資料路徑可被程式設計,以便根據正在執行的具體基-2X蝶形向量指令為基-2X蝶形向量運算的點提供乘法。每一累加器塊的資料路徑可被程式設計,以便根據正在執 行的基-2X蝶形向量指令累加來自複數個乘法器塊之中的乘法器塊的基-2X蝶形乘積。累加器塊的資料路徑配置亦可在其他週期中被重新程式設計,以便根據正在執行的基-2X蝶形向量指令累加來自複數個乘法器塊之中的其他乘法器塊的基-2X蝶形乘積。由累加器塊累加的最終累加的基-2X蝶形乘積可提供N點FFT向量處理運算。
具有用於提供多模基-2X蝶形向量處理的可程式設計資料路徑配置的VPE與僅包括提供固定功能的固定資料路徑配置的VPE是有區別的。此處所揭示的具有用於提供多模基-2X蝶形向量處理的可程式設計資料路徑配置的VPE亦可與標量處理引擎(諸如在舉例而言數位信號處理器(DSP)中提供的標量處理引擎)相區分。標量處理引擎採用靈活、通用的電路和邏輯來執行不同類型的非固定功能,但亦在向量指令執行期間將中間結果寫入暫存器檔,從而消耗額外的功率並增加了向量指令執行時間。
就這一點而言,在一個實施例中,提供了被配置成提供至少一個多模基-2X蝶形向量處理電路的VPE。VPE包括至少一個乘法向量處理級,該處理級包括至少一個乘法器塊。每一乘法器塊被配置成從複數個輸入資料路徑之中的第一輸入資料路徑接收來自複數個基向量資料輸入取樣集的基向量資料輸入取樣集。每一乘法器塊亦被配置成根據至少一個乘法向量處理級執行的基蝶形向量指令,基於可程式設計乘法資料路徑配置將基向量資料輸入取樣集與旋轉因數分量相乘以在複數個乘法輸出資料路徑中提供一基向量乘法輸出取 樣集。VPE亦包括至少一個累加向量處理級,該處理級包括複數個累加器塊。複數個累加器塊之中的每一累加器塊被配置成基於累加器可程式設計累加器資料路徑配置從複數個乘法輸出資料路徑之中的乘法輸出資料路徑接收複數個基向量乘法輸出取樣集。複數個累加器塊之中的每一累加器塊亦被配置成基於累加器可程式設計累加器資料路徑配置累加所接收到的複數個基向量乘法輸出取樣集以提供基向量累加結果取樣集。複數個累加器塊之中的每一累加器塊亦被配置成在複數個輸出資料路徑之中的輸出資料路徑中提供基向量累加結果取樣集。VPE亦包括輸出處理級,該處理級被配置成從複數個累加器塊中的每一累加器塊接收複數個基向量累加結果取樣集。
在另一實施例中,提供了被配置成提供至少一個多模基-2X蝶形向量處理電路的VPE。VPE包括至少一個乘法向量處理級裝置,該裝置包括至少一個乘法器塊裝置。每一乘法器塊裝置被配置成從複數個輸入資料路徑之中的第一輸入資料路徑中接收來自複數個基向量資料輸入取樣集的基向量資料輸入取樣集。每一乘法器塊裝置亦被配置成根據至少一個乘法向量處理級裝置執行的基蝶形向量指令,基於可程式設計乘法資料路徑配置將基向量資料輸入取樣集與旋轉因數分量相乘以在複數個乘法輸出資料路徑中提供基向量乘法輸出取樣集。VPE亦包括至少一個累加向量處理級裝置,該裝置包括複數個累加器塊裝置。複數個累加器塊裝置之中的每一累加器塊裝置被配置成基於可程式設計累加器資料路徑配置 從複數個乘法輸出資料路徑之中的乘法輸出資料路徑接收複數個基向量乘法輸出取樣集。複數個累加器塊裝置之中的每一累加器塊裝置亦被配置成基於可程式設計累加器資料路徑配置累加所接收到的複數個基向量乘法輸出取樣集以提供基向量累加結果取樣集。複數個累加器塊裝置之中的每一累加器塊裝置亦被配置成在複數個輸出資料路徑之中的輸出資料路徑中提供基向量累加結果取樣集。VPE亦包括輸出處理級裝置,該裝置被配置成從複數個累加器塊中的每一累加器塊接收複數個基向量累加結果取樣集。
在另一實施例中,提供了在向量處理引擎(VPE)中的多模基-2X蝶形向量處理電路處理中處理基-2X向量資料的方法。方法包括從至少一個乘法向量處理級中的至少一個乘法器塊中的複數個輸入資料路徑之中的第一輸入資料路徑接收來自複數個基向量資料輸入取樣集中的基向量資料輸入取樣集。方法亦包括在至少一個乘法器塊中根據至少一個乘法向量處理級執行的基蝶形向量指令,基於可程式設計乘法資料路徑配置將基向量資料輸入取樣集與旋轉因數分量相乘以在複數個乘法輸出資料路徑中提供基向量乘法輸出取樣集。方法亦包括在至少一個累加向量處理級中的複數個累加器塊之中的一累加器塊中,基於累加器可程式設計累加器資料路徑配置從複數個乘法輸出資料路徑之中的乘法輸出資料路徑接收複數個基向量乘法輸出取樣集。方法亦包括基於累加器可程式設計累加器資料路徑配置,累加所接收到的複數個基向量乘法輸出取樣集以提供基向量累加結果取樣集。方法 亦包括在複數個輸出資料路徑之中的輸出資料路徑中提供基向量累加結果取樣集。方法亦包括在輸出處理級中從複數個累加器塊中的每一累加器塊接收複數個基向量累加結果取樣集。
在另一實施例中,提供了向量處理器。向量處理器包括至少一個向量暫存器,該向量暫存器被配置成從向量資料記憶體接收基向量資料輸入取樣集。向量處理器亦包括至少一個向量結果暫存器,該向量結果暫存器被配置成儲存基向量結果輸出取樣集。向量處理器亦包括VPE。VPE包括至少一個乘法向量處理級。乘法向量處理級被配置成從至少一個乘法向量處理級中的至少一個乘法器塊中的複數個輸入資料路徑之中的第一輸入資料路徑接收來自複數個基向量資料輸入取樣集中的基向量資料輸入取樣集。乘法向量處理級亦被配置成在至少一個乘法器塊中,根據至少一個乘法向量處理級執行的基蝶形向量指令,基於可程式設計乘法資料路徑配置將基向量資料輸入取樣集與旋轉因數分量相乘以在複數個乘法輸出資料路徑中提供基向量乘法輸出取樣集。VPE亦包括至少一個累加向量處理級。累加向量處理級被配置成在至少一個累加向量處理級中的複數個累加器塊之中的每一累加器塊中,基於可程式設計累加器資料路徑配置從複數個乘法輸出資料路徑之中的乘法輸出資料路徑接收複數個基向量乘法輸出取樣集。累加向量處理級亦被配置成基於可程式設計累加器資料路徑配置,在至少一個累加器塊中,累加所接收到的複數個基向量乘法輸出取樣集以提供基向量累加結果取樣 集。累加向量處理級亦被配置成在複數個輸出資料路徑之中的輸出資料路徑中提供基向量累加結果取樣集。VPE亦包括輸出處理級,該處理級被配置成從複數個累加器塊中的每一累加器塊接收複數個基向量累加結果取樣集。
10‧‧‧基頻處理器
12‧‧‧處理引擎(PE)
14‧‧‧向量資料
16‧‧‧共用記憶體
20‧‧‧基頻處理器
22‧‧‧向量處理引擎(VPE)
24‧‧‧半導體晶粒
28‧‧‧向量暫存器
30‧‧‧向量資料
32‧‧‧向量單元資料記憶體(LMEM)
34‧‧‧向量資料取樣集
36‧‧‧條件暫存器
38‧‧‧累加暫存器
40‧‧‧全域暫存器
42‧‧‧位址暫存器
44‧‧‧標量處理器
48‧‧‧指令分派電路
49‧‧‧向量資料路徑
50‧‧‧程式記憶體
52‧‧‧通用暫存器
54‧‧‧整數單元資料記憶體(DMEM)
56‧‧‧記憶體控制器
58‧‧‧記憶體控制器暫存器
59‧‧‧記憶體控制器資料路徑
60‧‧‧向量處理級
62‧‧‧乘法器塊
64‧‧‧鎖存器
66‧‧‧量資料登錄取樣集
67‧‧‧可程式設計內部資料路徑
68‧‧‧向量乘法輸出取樣集
70‧‧‧可程式設計輸出資料路徑
72‧‧‧累加器塊
74‧‧‧可程式設計輸出資料路徑
76‧‧‧累加器輸出取樣集
78‧‧‧可程式設計輸入資料路徑
80‧‧‧可程式設計內部資料路徑
81‧‧‧方塊
82‧‧‧方塊
83‧‧‧方塊
84‧‧‧方塊
85‧‧‧方塊
86‧‧‧方塊
87‧‧‧方塊
88‧‧‧方塊
89‧‧‧方塊
90‧‧‧可程式設計資料路徑
91‧‧‧可程式設計資料路徑
92‧‧‧可程式設計資料路徑
93‧‧‧方塊
94‧‧‧輸入和
95‧‧‧方塊
96‧‧‧輸入進位
97‧‧‧方塊
98‧‧‧單個和
99‧‧‧方塊
100‧‧‧單個進位
101‧‧‧方塊
102‧‧‧基於AND的閘
103‧‧‧方塊
104‧‧‧多工器
105‧‧‧方塊
106‧‧‧負電路
107‧‧‧輸入
108‧‧‧壓縮器
109‧‧‧交換電路
110‧‧‧選擇器輸入
112‧‧‧累加向量輸出和
114‧‧‧累加向量輸出進位
116‧‧‧位元移位器
117‧‧‧移位累加向量輸出進位
118‧‧‧多工器
119‧‧‧進位傳播加法器
120‧‧‧和進位選擇器
122‧‧‧保持閘
124‧‧‧保持閘
126‧‧‧保持狀態輸入
132‧‧‧可程式設計累加資料路徑
134‧‧‧控制閘
136‧‧‧控制閘
137‧‧‧進位輸出
138‧‧‧控制輸入
139‧‧‧進位輸入
142‧‧‧NCI控制輸入
144‧‧‧進位傳播輸入
146‧‧‧基蝶形電路
148‧‧‧旋轉因數產生器
149‧‧‧蝶形道
150‧‧‧基於處理器的系統
152‧‧‧處理單元(PU)
154‧‧‧處理器或核
156‧‧‧向量處理引擎(VPE)
158‧‧‧快取緩衝記憶體
160‧‧‧系統匯流排
162‧‧‧記憶體控制器
164‧‧‧記憶體系統
165‧‧‧記憶體
166‧‧‧輸入設備
168‧‧‧輸出設備
170‧‧‧網路周邊設備
172‧‧‧顯示控制器
174‧‧‧網路
178‧‧‧顯示器
圖1是包括各自專用於為特定應用提供因功能而異的向量處理的多個向量處理引擎(VPE)的一示例性向量處理器的示意圖;圖2是包括具有可程式設計資料路徑配置的通用VPE的一示例性向量處理器的示意圖,該可程式設計資料路徑配置使得VPE中提供的通用電路和硬體可被程式設計為多個模式,以便以高效的方式為多個應用或技術執行特定類型的向量運算而無需提供分開的VPE;圖3是圖2的VPE中提供的示例性向量處理級的示意圖,其中向量處理級中的某些包括具有可程式設計資料路徑配置的示例性向量處理塊;圖4A是示出包括在圖2和3的示例性向量處理器中的、具有可程式設計資料路徑配置的至少一個向量處理塊的示例性向量處理的流程圖;圖4B是示出乘法器塊和累加器塊的示例性向量處理的流程圖,這些塊各自具有可程式設計資料路徑配置並在圖2和3的示例性向量處理器中的不同向量處理級中提供;圖5是圖2和3的VPE的向量處理級中提供的複數個乘法器塊的更詳細的示意圖,其中複數個乘法器塊各自具有 可程式設計資料路徑配置,以使得複數個乘法器塊可被程式設計為多個模式以執行特定的、不同類型的向量乘法運算;圖6是圖5中複數個乘法器塊之中的一乘法器塊的內部元件的示意圖,該乘法器塊具有能夠被程式設計以提供8位元乘8位元向量資料輸入取樣集和16位元乘16位元向量資料輸入取樣集的乘法運算的可程式設計資料路徑配置;圖7是圖2和3的VPE中的乘法器塊和累加器塊的一般化示意圖,其中累加器塊採用進位備用累加器結構,該結構採用冗餘進位保留格式來減少進位傳播;圖8是圖7的累加器塊的示例性內部元件的詳細示意圖,該累加器塊在圖2和3的VPE中提供,其中累加器塊具有可程式設計資料路徑配置,以使得累加器塊可被程式設計為多個模式以便用冗餘進位保留格式執行特定的、不同類型的向量累加運算;圖9A是圖8的累加器塊的示意圖,該累加器塊具有被程式設計用於提供雙24位元累加器模式的資料路徑配置;圖9B是圖8的累加器塊的示意圖,該累加器塊具有被程式設計用於提供單個40位元累加器模式的資料路徑配置;圖9C是圖8的累加器塊的示意圖,該累加器塊具有被程式設計用於提供16位進位保留加法器繼之以單個24位元累加器模式的資料路徑配置;圖10是一乘法器的概念示意圖,該乘法器具有被程式設計以在圖2和3的VPE中與冗餘進位保留格式的四(4)個累加器熔合從而形成被配置成執行基-4蝶形向量運算的每一 週期的基蝶形電路的資料路徑配置;圖11是圖10中的基蝶形電路的一個週期的示意圖,該電路被配置成或者執行基-2蝶形向量運算或者執行基-4蝶形向量運算;及圖12是根據此處揭示的實施例的可包括向量處理器的示例性的基於處理器的系統的方塊圖,該向量處理器包括具有可程式設計資料路徑配置的VPE,所以VPE中的通用電路和硬體可被程式設計以用作被設計成以高效方式為多個應用或技術執行特定類型的向量運算的專用電路,而無需提供分開的VPE。
現在參考附圖,描述了本發明的若干示例性實施例。措辭「示例性」在本文中用於表示「用作示例、實例或圖示」。本文中描述為「示例性」的任何實施例並不必然被解釋為優於或勝過其他實施例。
此處揭示的實施例包括具有用於提供多模基-2X蝶形向量處理的可程式設計資料路徑配置的向量處理引擎(VPE)。亦揭示相關的向量處理器、系統和方法。此處揭示的VPE包括各自具有向量處理塊的複數個向量處理級,這些向量處理塊具有用於執行基-2X蝶形向量運算以便高效執行快速傅立葉轉換(FFT)向量處理運算的可程式設計資料路徑配置。向量處理塊的資料路徑配置可被程式設計來提供不同類型的基-2X蝶形向量運算以及其他算術邏輯向量運算。作為結果,較少的VPE可在向量處理器中提供所需的基-2X蝶形向量運算以 及其他類型的算術邏輯向量運算,由此節省了向量處理器中的面積而仍保留與標量處理引擎相比較少的暫存器寫以及較快的向量指令執行時間的向量處理優點。
就這一點而言,在此處揭示的某些實施例中,在VPE的向量處理級中提供具有可程式設計資料路徑配置的複數個乘法器塊。這複數個乘法器塊與在VPE的另一向量處理級中提供的具有可程式設計資料路徑配置的複數個累加器塊熔合。每一乘法器塊的資料路徑可被程式設計以便根據正在執行的具體基-2X蝶形向量指令為基-2X蝶形向量運算的點提供乘法。每一累加器塊的資料路徑可被程式設計,以便根據正在執行的基-2X蝶形向量指令累加來自複數個乘法器塊之中的一乘法器塊的基-2X蝶形乘積。累加器塊的資料路徑配置亦可在其他週期中被重新程式設計,以便根據正在執行的基-2X蝶形向量指令累加來自複數個乘法器塊之中的其他乘法器塊的基-2X蝶形乘積。由累加器塊累加的最終累加的基-2X蝶形乘積可提供N點的FFT向量處理運算。
具有用於提供多模基-2X蝶形向量處理的可程式設計資料路徑配置的VPE與僅包括提供固定功能的固定資料路徑配置的VPE是有區別的。此處所揭示的具有用於提供多模基-2X蝶形向量處理的可程式設計資料路徑配置的VPE與標量處理引擎(諸如在數位信號處理器(DSP)中提供的標量處理引擎)亦是有區別的。標量處理引擎採用靈活、通用的電路和邏輯來執行不同類型的非固定功能,但亦在向量指令執行期間將中間結果寫入暫存器檔,從而消耗額外的功率並增加了 向量指令執行時間。
就這一點而言,圖2是包括示例性向量處理單元22(亦被稱為向量處理引擎(VPE)22)的基頻處理器20的示意圖。基頻處理器20及其VPE 22可在半導體晶粒24中提供。在這一實施例中,如以下從圖3開始更詳細討論地,基頻處理器20包括具有可程式設計資料路徑配置的通用VPE 22。以此方式,VPE 22包括可被程式設計和重新程式設計以便在不同運算模式中提供不同、特定類型的向量運算的通用電路和硬體,而無需在基頻處理器20中提供分開的VPE。VPE 22亦可被程式設計為向量算術模式,用於以高效方式為多個應用或技術執行一般的算數運算,而無需在基頻處理器20中提供分開的VPE。
在從圖3開始的討論VPE 22中提供的、用於向量多模處理的可程式設計資料路徑配置之前,首先描述圖2中的基頻處理器20的組件。在此非限定性示例中的基頻處理器20是512位元向量處理器。基頻處理器20包括除VPE 22之外的用以支援VPE 22在基頻處理器20中提供向量處理的額外元件。基頻處理器20包括向量暫存器28,該暫存器28被配置成從向量單元資料記憶體(LMEM)32接收並儲存向量資料30。例如,向量資料30是X位元寬,其中‘X’是根據設計選擇來定義的(例如,512位元)。向量資料30可被劃分成向量資料取樣集34。例如,向量資料30可以是256位元寬,且可包括更小的向量資料取樣集34(Y)-34(0),其中向量資料取樣集34(Y)-34(0)中的一些是16位元寬,而向量資料取樣集34(Y)-34(0)中的另一 些是32位元寬。VPE 22能夠對向VPE 22並行提供的某些所選乘法向量資料取樣集34(Y)-34(0)提供向量處理以實現高度並行性。向量暫存器28亦被配置成儲存在VPE 22處理向量資料30時產生的結果。在某些實施例中,VPE 22被配置成不在向量暫存器28中儲存中間向量處理結果,以減少暫存器寫以便提供更快速的向量指令執行時間。這種配置與標量處理引擎執行的標量指令相反,標量處理引擎在暫存器中儲存中間結果,諸如標量處理DSP。
圖2中的基頻處理器20亦包括條件暫存器36,該暫存器36被配置成向VPE 22提供條件以供在向量指令的有條件執行中使用,並儲存作為向量指令執行的結果的經更新條件。基頻處理器20亦包括累加暫存器38、全域暫存器40和位址暫存器42。累加暫存器38被配置成被VPE 22用來儲存作為對向量資料30執行某些專門運算的結果的累加結果。全域暫存器40被配置成為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或者經由向量資料路徑49定向到VPE 22。標量處理器44包括通用暫存器52,供標量處理器44在執行標量指令時使用。整數單元資料記憶體(DMEM)54被包括在基頻處理器20中,以便將來自主記憶體的資料提供到通用暫存器52中,供標量處理器44存取用於標量指令執行。作為非限定性示例,DMEM 54可以是快取緩衝記憶體。基頻處理器20亦包括記憶體控制器56,該記憶體控制器56包括記憶體控制器暫存器58,該記憶體控制器暫存器58被配置成當標量處理器44正在執行要求經由記憶體控制器資料路徑59存取主記憶體的向量指令時從通用暫存器52接收記憶體位址。
由於已經描述了圖2中基頻處理器20的示例性元件,現在將討論關於VPE 22及其經由通用電路和硬體提供基-2X蝶形向量處理以及其他算術邏輯向量運算的可程式設計資料路徑配置的更多細節。以下更詳細討論的圖3-8C包括圖2中VPE 22中所包括的示例性向量處理塊,這些向量處理塊具有用於提供多模基-2X蝶形向量處理以及其他算術邏輯向量運算的可程式設計資料路徑配置。亦在以下更詳細討論的圖9-11提供示例性程式設計的資料路徑配置以將乘法器塊與示例性累加器塊熔合,從而形成被配置成執行基-2X蝶形運算的每一週期的基蝶形電路。
就這一點而言,圖3圖示圖2中的VPE 22的示例性示意圖。如圖3中所示並將在以下在圖4-8C中更詳細描述地,VPE 22包括複數個示例性向量處理級60,這些處理級60具有可用可程式設計資料路徑配置來配置的示例性向量處理塊。如將在以下更詳細討論地,在向量處理塊中提供的可程式設計資料路徑配置允許特定電路和硬體被程式設計和重新程式設計以支援對從圖2中的向量單元資料記憶體32接收到的向量資料30執行不同的、特定的向量處理運算。例如,某些向量處理運算可共同要求向量資料30的乘法,繼之以相乘後的向量資料結果的累加。此類向量處理的非限定性示例包括濾波運算、相關運算以及通常用於為無線通訊演算法執行快速傅立葉轉換(FFT)運算的基-2和基-4蝶形運算,其中提供了一系列並行乘法,繼之以對乘法結果的一系列並行累加。如亦將在以下參考圖7-9C更詳細討論地,圖2中的VPE 22亦具有將乘法器與進位備用累加器熔合以在進位備用累加器中提供冗餘進位保留格式的選項。在進位備用累加器中提供冗餘進位保留格式可消除對在累加的每一步期間提供進位傳播路徑和進位傳播加法運算的需求。
就這一點,並進一步參考圖3,將首先描述VPE 22的M0乘法向量處理級60(1)。M0乘法向量處理級60(1)是第二向量處理級,其包含任何所需數量的乘法器塊62(A)-62(0)形式的複數個向量處理塊,這些塊各自具有可程式設計資料路徑配置。提供乘法器塊62(A)-62(0)來執行VPE 22中的向量乘法運算。複數個乘法器塊62(A)-62(0)在M0乘法向量處理級 60(1)中彼此並行安置,用於提供至多十二(12)個乘法向量資料取樣集34(Y)-34(0)的乘法。在這一實施例中,‘A’等於三(3),意味著在這一示例中,在M0乘法向量處理級60(1)中包括四(4)個乘法器塊62(3)-62(0)。乘法向量資料取樣集34(Y)-34(0)被載入到VPE 22中以便向量處理至輸入讀取(RR)向量處理級中提供的複數個鎖存器64(Y)-64(0),輸入讀取向量處理級是VPE 22中的第一向量處理級60(0)。在這一實施例中,在VPE 22中有十二(12)個鎖存器64(11)-64(0),意味著在這一實施例中‘Y’等於十一(11)。鎖存器64(11)-64(0)被配置成將檢索自向量暫存器28(見圖2)的乘法向量資料取樣集34(11)-34(0)鎖存為向量資料輸入取樣集66(11)-66(0)。在這一示例中,每一鎖存器64(11)-64(0)是8位元寬的。鎖存器64(11)-64(0)各自分別被配置成對總共96位元寬的向量資料30(亦即,12個鎖存器x各自8位元)鎖存乘法向量資料輸入取樣集66(11)-66(0)。
繼續參考圖3,複數個乘法器塊62(3)-62(0)被配置成能夠接收向量資料輸入取樣集66(11)-66(0)的某些組合用於提供向量乘法運算,其中在這一示例中‘Y’等於十一(11)。根據VPE 22的設計,在複數個輸入資料路徑A3-A0、B3-B0以及C3-C0中提供乘法向量資料輸入取樣集66(11)-66(0)。如圖3中所示,向量資料輸入取樣集66(3)-66(0)對應於輸入資料路徑C3-C0。如圖3中所示,向量資料輸入取樣集66(7)-66(4)對應於輸入資料路徑B3-B0。如圖3中所示,向量資料輸入取樣集66(11)-66(8)對應於輸入資料路徑A3-A0。複數個乘法器塊 62(3)-62(0)被配置成分別根據向複數個乘法器塊62(3)-62(0)提供的輸入資料路徑A3-A0、B3-B0、C3-C0來處理接收到的向量資料輸入取樣集66(11)-66(0),以提供向量乘法運算。
如以下將參考圖4和5更詳細討論地,在圖3中的乘法器塊62(3)-62(0)中提供的可程式設計內部資料路徑67(3)-67(0)可被程式設計以具有不同的資料路徑配置。這些不同的資料路徑配置根據向每一乘法器塊62(3)-62(0)提供的具體輸入資料路徑A3-A0、B3-B0、C3-C0對向乘法器塊62(3)-62(0)提供的具體接收到的向量資料輸入取樣集66(11)-66(0)提供乘法的不同組合及/或不同位元長度。就這一點而言,複數個乘法器塊62(3)-62(0)合起來提供向量乘法輸出取樣集68(3)-68(0)作為包括將向量資料輸入取樣集66(11)-66(0)的具體組合相乘的乘法結果的向量結果輸出取樣集。
例如,乘法器塊62(3)-62(0)的可程式設計內部資料路徑67(3)-67(0)可根據從圖2中的基頻處理器20的指令分派48中的向量指令解碼器提供的設置來被程式設計。在這一實施例中,存在乘法器塊62(3)-62(0)的四(4)個可程式設計內部資料路徑67(3)-67(0)。向量指令指定要由VPE 22執行的運算的特定類型。因此,VPE 22可被程式設計和重新程式設計來配置乘法器塊62(3)-62(0)的可程式設計內部資料路徑67(3)-67(0),以便以高效方式採用同一通用電路來提供不同類型的向量乘法運算。例如,根據指令分派48中指令流水線中的向量指令的解碼,VPE 22可被程式設計來為所執行的每一 向量指令在逐個時鐘週期的基礎上配置和重新配置乘法器塊62(3)-62(0)的可程式設計內部資料路徑67(3)-67(0)。因此,若VPE 22中的M0乘法向量處理級60(1)被配置成每個時鐘週期處理向量資料輸入取樣集66,則乘法器塊62(3)-62(0)根據指令分派48中的指令流水線中的向量指令的解碼在每個時鐘週期上執行向量乘法運算。
乘法器塊62可被程式設計來執行實數和複數乘法。繼續參考圖3,在一個向量處理塊資料路徑配置中,乘法器塊62可被配置成使兩個8位元向量資料輸入取樣集66一起相乘。在一個乘法塊資料路徑配置中,乘法器塊62可被配置成使兩個16位元向量資料輸入取樣集66一起相乘,這些16位元向量資料輸入取樣集是由第一對8位元向量資料輸入取樣集66乘以第二對8位元向量資料輸入取樣集66來形成的。這在圖6中示出並在以下更詳細討論。再一次,在乘法器塊62(3)-62(0)中提供可程式設計資料路徑配置提供了靈活性,因為乘法器塊62(3)-62(0)可被配置和重新配置來執行不同類型的乘法運算以減少VPE 22中的面積,以及可能允許在基頻處理器20中提供較少的VPE 22以實現所需向量處理運算。
回過來參考圖3,複數個乘法器塊62(3)-62(0)被配置成在可程式設計輸出資料路徑70(3)-70(0)中或者向下一向量處理級60或者向輸出處理級提供向量乘法輸出取樣集68(3)-68(0)。根據基於複數個乘法器塊62(3)-62(0)正在執行的向量指令的被程式設計配置,在可程式設計輸出資料路徑70(3)-70(0)中提供向量乘法輸出取樣集68(3)-68(0)。在這一示 例中,如以下所討論地,可程式設計輸出資料路徑70(3)-70(0)中的向量乘法輸出取樣集68(3)-68(0)被提供給M1累加向量處理級60(2)供累加。在VPE 22的這一特定設計中,期望提供複數個乘法器塊62(3)-62(0)繼之以累加器,以支援要求向量資料登錄的相乘繼之以相乘結果的累加的專門向量指令。例如,通常用於提供FFT運算的基-2和基-4蝶形運算包括一系列乘法運算,繼之以乘法結果的累加。然而,注意到VPE 22中提供的向量處理塊的這些組合是示例性的而非限制性的。具有可程式設計資料路徑配置的VPE可被配置成包括具有向量處理塊的一個或任何其他數目的向量處理級。向量處理塊可被提供以根據設計和被設計成由VPE支援的特定向量指令執行任何類型的運算。
繼續參考圖3,在這一實施例中,向量乘法輸出取樣集68(3)-68(0)被提供給在下一向量處理級(即M1累加向量處理級60(2))中提供的複數個累加器塊72(3)-72(0)。複數個累加器塊72(A)-72(0)之中的每一累加器塊包含兩個累加器72(X)(1)和72(X)(0)(即72(3)(1)、72(3)(0)、72(2)(1)、72(2)(0)、72(1)(1)、72(1)(0)以及72(0)(1)、72(0)(0))。複數個累加器塊72(3)-72(0)累加向量乘法輸出取樣集68(3)-68(0)的結果。如將在以下參考圖7-9C更詳細討論地,複數個累加器塊72(3)-72(0)可作為進位備用累加器提供,其中進位結果在累加程序期間實際上被保留而不被傳播,直到累加運算完成。複數個累加器塊72(3)-72(0)亦具有與圖5和6中的複數個乘法器塊62(3)-62(0)熔合以在複數個累加器塊72(3)-72(0)中提供冗 餘進位保留格式的選項。在複數個累加器塊72(3)-72(0)中提供冗餘進位保留格式可消除在複數個累加器塊72(3)-72(0)的累加的每一步期間提供進位傳播路徑和進位傳播相加運算的需求。現在將參考圖3介紹M1累加向量處理級60(2)及其複數個累加器塊72(3)-72(0)。
參考圖3,M1累加向量處理級60(2)中的複數個累加器塊72(3)-72(0)被配置成根據可程式設計輸出資料路徑配置在可程式設計輸出資料路徑74(3)-74(0)(即74(3)(1)、74(3)(0)、74(2)(1)、74(2)(0)、74(1)(1)、74(1)(0)以及74(0)(1)、74(0)(0))中累加向量乘法輸出取樣集68(3)-68(0),以或者在下一向量處理級60中或者在輸出處理級中提供累加器輸出取樣集76(3)-76(0)(即76(3)(1)、76(3)(0)、76(2)(1)、76(2)(0)、76(1)(1)、76(1)(0)以及76(0)(1)、76(0)(0))。在這一示例中,累加器輸出取樣集76(3)-76(0)被提供給輸出處理級,後者是ALU處理級60(3)。例如,如以下更詳細討論地,作為非限定性示例,累加器輸出取樣集76(3)-76(0)亦可被提供給圖2中的基頻處理器20中的標量處理器44中的ALU 46。例如,ALU 46可根據VPE 22執行的專門向量指令取得累加器輸出取樣集76(3)-76(0)以便在更一般的處理運算中使用。
返回參考圖3,累加器塊72(3)-72(0)的可程式設計輸入資料路徑78(3)-78(0)及/或可程式設計內部資料路徑80(3)-80(0)可被程式設計來被重新配置成接收從乘法器塊62(3)-62(0)向累加器塊72(3)-72(0)提供的向量乘法輸出取樣集68(3)-68(0)的不同組合及/或位元長度。因為每一累加器塊 72由兩個累加器72(X)(1)、72(X)(0)構成,可程式設計輸入資料路徑78(A)-78(0)在圖3中被示為78(3)(1)、78(3)(0)、78(2)(1)、78(2)(0)、78(1)(1)、78(1)(0)以及78(0)(1)、78(0)(0)。類似地,可程式設計內部資料路徑80(3)-80(A)在圖3中被示為80(3)(1)、80(3)(0)、80(2)(1)、80(2)(0)、80(1)(1)、80(1)(0)、80(0)(1)、80(0)(0)。以下參考圖8-9C更詳細地討論在累加器塊72(3)-72(0)中提供可程式設計輸入資料路徑78(3)-78(0)及/或可程式設計內部資料路徑80(3)-80(0)。以此方式,根據累加器塊72(3)-72(0)的可程式設計輸入資料路徑78(3)-78(0)及/或可程式設計內部資料路徑80(3)-80(0),累加器塊72(3)-72(0)可根據所累加的向量乘法輸出取樣集68(3)-68(0)的程式設計組合來提供累加器輸出取樣集76(3)-76(0)。再一次這提供了靈活性,因為累加器塊72(3)-72(0)可被配置並被重新配置成基於可程式設計輸入資料路徑78(3)-78(0)及/或可程式設計內部資料路徑80(3)-80(0)的程式設計執行不同類型的累加運算以減少VPE 22中的面積,並有可能允許在基頻處理器20中提供較少的VPE 22以實現所需的向量處理運算。
例如,作為非限定性示例,在一個累加器模式配置中,兩個累加器塊72的可程式設計輸入資料路徑78及/或可程式設計內部資料路徑80可被程式設計以提供單個40位元累加器。這在圖9A中示出並在以下更詳細地討論。作為非限定性示例,在另一個累加器模式配置中,兩個累加器塊72的可程式設計輸入資料路徑78及/或可程式設計內部資料路徑80可被程式設計以提供雙24位元累加器。這在圖9B中示出並在以下 更詳細討論。在另一個累加器模式配置中,兩個累加器塊72的可程式設計輸入資料路徑78及/或可程式設計內部資料路徑80可被程式設計以提供16位元進位保留加法器繼之以單個24位元累加器。這在圖9C中示出並在以下更詳細地討論。乘法和累加運算的特定不同組合亦可根據乘法器塊62(3)-62(0)和累加器塊72(3)-72(0)的程式設計(例如,16位元複數乘法與16位元累加、以及32位元複數乘法與16位元累加)被VPE 22支援。
累加器塊72(3)-72(0)的可程式設計輸入資料路徑78(3)-78(0)及/或可程式設計內部資料路徑80(3)-80(0)可根據從圖2中的基頻處理器20的指令分派48中的向量指令解碼器提供的設置來被程式設計。向量指令指定要由VPE 22執行的特定類型的運算。因此,VPE 22可被配置成針對根據指令分派48中的指令流水線中的向量指令的解碼而執行的每一向量指令,對累加器塊72(3)-72(0)的可程式設計輸入資料路徑78(3)-78(0)及/或可程式設計內部資料路徑80(3)-80(0)重新程式設計。向量指令可在VPE 22的一或多個時鐘週期上執行。亦在這一示例中,VPE 22可被配置成在逐個時鐘週期的基礎上,針對向量指令的每一時鐘週期,對累加器塊72(3)-72(0)的可程式設計輸入資料路徑78(3)-78(0)及/或可程式設計內部資料路徑80(3)-80(0)重新程式設計。因此,例如,若VPE 22中的M1累加向量處理級60(2)執行的向量指令每個時鐘週期處理向量乘法輸出取樣集68(3)-68(0),則作為結果,累加器塊72(3)-72(0)的可程式設計輸入資料路徑78(3)-78(0)及/或可程 式設計內部資料路徑80(3)-80(0)可在向量指令的執行期間的每一時鐘週期被重新配置。圖4A和4B是示出圖2和3中的VPE 22中的乘法器塊62(A)-62(0)和累加器塊72(A)(1)-72(0)(0)的示例性向量處理的流程圖,以提供對示例性向量處理的更多闡述。圖4A是示出一般向量處理塊的示例性向量處理的流程圖,該一般向量處理塊可以是包括在圖2和3的示例性VPE中的具有可程式設計資料路徑配置的乘法器塊62(A)-62(0)、累加器塊72(A)(1)-72(0)(0)或兩者。圖4B是示出乘法器塊62(A)-62(0)和累加器塊72(A)(1)-72(0)(0)的示例性向量處理的流程圖,這些塊各自具有可程式設計資料路徑配置並在圖2和3的示例性VPE 22中的不同向量處理級中提供。
就這一點而言,如圖4A中所示,VPE 22的程序包括在輸入處理級60(0)中在複數個輸入資料路徑(A3-C0)之中的一輸入資料路徑中接收一向量陣列寬度的複數個向量資料輸入取樣集34(Y)-34(0)(方塊81)。向量處理接下來包括在向量處理塊62(A)-62(0)及/或72(A)(1)-72(0)(0)中從複數個輸入資料路徑A3-C0接收向量資料輸入取樣集34(Y)-34(0)(方塊83)。向量處理接下來包括根據向量處理級60(1)、60(2)執行的向量指令,基於向量處理塊62(A)-62(0)、72(A)(1)-72(0)(0)的可程式設計資料路徑配置67(A)-67(0)、70(3)-70(0)、78(A)(1)-78(0)(0)、80(A)(1)-80(0)(0)、74(A)(1)-74(0)(0)處理向量資料輸入取樣集34(Y)-34(0),以提供向量結果輸出取樣集68(A)-68(0)、76(A)(1)-76(0)(0)(方塊85)。向量處理接下來包括在輸出資料路徑70(A)-70(0)、74(A)(1)-74(0)(0)中提供 向量結果輸出取樣集68(A)-68(0)、76(A)(1)-76(0)(0)(方塊87)。向量處理接下來包括在輸出處理級60(3)中從向量處理級60(1)、60(2)接收向量結果輸出取樣集68(A)-68(0)、76(A)(1)-76(60)(0)(方塊89)。
注意到,以上參考圖4A描述的向量處理中的每一處理級60(0)-60(3)併發地進行並行向量處理,其中向量處理塊62(A)-62(0)、72(A)(1)-72(0)(0)的可程式設計資料路徑配置67(A)-67(0)、70(3)-70(0)、78(A)(1)-78(0)(0)、80(A)(1)-80(0)(0)、74(A)(1)-74(0)(0)可頻繁地每一時鐘週期地進行重新程式設計。如上所述,這允許向量處理塊62(A)-62(0)、72(A)(1)-72(0)(0)經由使用通用的向量處理塊62(A)-62(0)、72(A)(1)-72(0)(0)針對不同的向量指令高效執行不同運算。
圖4B是示出圖3中的VPE 22中的乘法器塊62(A)-62(0)和累加器塊72(A)(1)-72(0)(0)用於涉及乘法運算繼之以累加運算的向量指令的示例性向量處理的流程圖。例如,FFT向量運算涉及乘法運算,繼之以累加運算。圖4B的流程圖提供以上在圖4A中描述的VPE 22的示例性一般向量處理的進一步的示例性細節。就這一點而言,向量處理涉及在輸入處理級60(0)中在複數個輸入資料路徑A3-C0之中的輸入資料路徑中接收一向量陣列寬度的複數個向量資料輸入取樣集34(Y)-34(0)(方塊93)。向量處理隨後包括在複數個乘法器塊62(A)-62(0)中從複數個輸入資料路徑A3-C0接收向量資料輸入取樣集34(Y)-34(0)(方塊95)。向量處理隨後包括根據向量處理級60(1)所執行的向量指令,基於乘法器塊62(A)-62(0)的 可程式設計資料路徑配置67(A)-67(0)、70(3)-70(0),使向量資料輸入取樣集34(Y)-34(0)相乘,以在複數個乘法輸出資料路徑70(A)-70(0)之中的乘法輸出資料路徑70(A)-70(0)中提供乘法向量結果輸出取樣集68(A)-68(0)(方塊97)。向量處理接下來包括在複數個累加器塊72(A)(1)-72(0)(0)中從複數個乘法輸出資料路徑70(A)-70(0)接收乘法向量結果輸出取樣集68(A)-68(0)(方塊99)。向量處理接下來包括根據第二向量處理級60(2)執行的向量指令,基於累加器塊72(A)(1)-72(0)(0)的可程式設計資料路徑78(A)(1)-78(0)(0)、80(A)(1)-80(0)(0)、74(A)(1)-74(0)(0)配置,將乘法向量結果輸出取樣集68(A)-68(0)累加在一起以提供向量累加結果取樣集76(A)(1)-76(0)(0)(方塊101)。向量處理隨後包括在輸出資料路徑74(A)(1)-74(0)(0)中提供向量累加結果取樣集76(A)(1)-76(0)(0)(方塊103)。向量處理隨後包括在輸出處理級60(3)中從累加器塊72(A)(1)-72(0)(0)接收向量結果輸出取樣集76(A)(1)-76(0)(0)(方塊105)。
由於已經描述了圖3的示例性VPE 22與圖4A和4B中採用具有可程式設計資料路徑配置的向量處理塊的向量處理的概覽,描述的其餘部分在圖5-9C中描述這些向量處理塊的更多示例性、非限定性細節。
就這一點而言,圖5是對圖3的VPE 22的M0乘法向量處理級60(1)中的複數個乘法器塊62(3)-62(0)的更詳細示意圖。圖6是圖5中的乘法器塊62的內部元件的示意圖。如圖5中所示,圖示乘法器塊62(3)-62(0)根據具體的輸入資料路徑A3-A0 、B3-B0、C3-C0接收的向量資料輸入取樣集66(11)-66(0)。如將在以下參考圖6更詳細討論地,在這一示例中,乘法器塊62(3)-62(0)中的每一個包括四(4)個8位元乘8位元乘法器。返回參考圖5,在這一示例中乘法器塊62(3)-62(0)中的每一個被配置成使被乘數輸入‘A’或者與被乘數輸入‘B’或者與被乘數輸入‘C’相乘。如圖5中所示,可在乘法器塊62中一起相乘的被乘數輸入‘A’以及‘B’或‘C’受到哪個輸入資料路徑A3-A0、B3-B0、C3-C0被連接到乘法器塊62(3)-62(0)的控制。被乘數選擇器輸入82(3)-82(0)被提供作為對每一乘法器塊62(3)-62(0)的輸入,以控制每一乘法器塊62(3)-62(0)中的可程式設計內部資料路徑67(3)-67(0)來選擇是被乘數輸入‘B’還是被乘數輸入‘C’被選擇來乘以被乘數輸入‘A’。以此方式,向乘法器塊62(3)-62(0)提供了其可程式設計內部資料路徑67(3)-67(0)可被重新程式設計以依須求提供不同的乘法運算的能力。
繼續參考圖5,使用乘法器塊62(3)作為示例,輸入資料路徑A3和A2被分別連接到輸入AH和AL。輸入AH表示被乘數輸入A的高位元,而AL意味著所輸入的被乘數輸入‘A’的低位元。輸入資料路徑B3和B2被分別連接至輸入BH和BL。輸入BH表示被乘數輸入‘B’的高位元,而AL表示所輸入的被乘數輸入‘B’的低位元。輸入資料路徑C3和C2被分別連接至輸入CI和CQ。在這一示例中,輸入CI表示所輸入的被乘數輸入‘C’的實數位元部分。在這一示例中,CQ表示所輸入的被乘數輸入‘C’的虛數位元部分。如將在以下參考圖6更詳細 討論地,在這一示例中,被乘數選擇器輸入82(3)亦控制乘法器塊62(3)的可程式設計內部資料路徑67(3)被配置成是對被乘數輸入‘A’與被乘數輸入‘B’還是與被乘數輸入‘C’來執行8位元乘法,或者乘法器塊62(3)被配置成是對被乘數輸入‘A’與被乘數輸入‘B’還是與被乘數輸入‘C’來執行16位元乘法。
繼續參考圖5,乘法器塊62(3)-62(0)被配置成基於其可程式設計內部資料路徑67(3)-67(0)的配置,各自產生向量乘法輸出取樣集68(3)-68(0)作為乘法運算的進位‘C’與和‘S’向量輸出取樣集。如將在以下參考圖7-9C更詳細討論地,向量乘法輸出取樣集68(3)-68(0)的進位‘C’與和‘S’被熔合,意味著進位‘C’與和‘S’以冗餘進位保留的格式向複數個累加器72(3)-72(0)提供,以在複數個累加器72(3)-72(0)中提供冗餘進位保留格式。如將在以下更詳細討論的,在複數個累加器塊72(3)-72(0)中提供冗餘進位保留格式可消除在複數個累加器塊72(3)-72(0)執行的累加運算期間提供進位傳播路徑和進位傳播相加運算的需求。
在圖5中示出乘法器塊62(3)-62(0)基於其可程式設計內部資料路徑67(3)-67(0)的配置,產生向量乘法輸出取樣集68(3)-68(0)作為乘法運算的進位‘C’與和‘S’向量輸出取樣集的示例。例如,乘法器塊62(3)被配置成對於8位元乘法產生作為32位元值的進位C00與和S00,並對於16位元乘法產生作為64位元值的進位C01與和S01。在這一示例中,其他乘法器塊62(2)-62(0)具有相同的能力。就這一點而言,乘法器塊 62(2)被配置成對於8位元乘法產生作為32位元值的進位C10與和S10,並對於16位元乘法產生作為64位元值的進位C11與和S11。乘法器塊62(1)被配置成對於8位元乘法產生作為32位元值的進位C20與和S20,並對於16位元乘法產生作為64位元值的進位C21與和S21。乘法器塊62(0)被配置成對於8位元乘法產生作為32位元值的進位C30與和S30,並對於16位元乘法產生作為64位元值的進位C31與和S31。
為了說明圖5中乘法器塊62中提供的可程式設計資料路徑配置的更多示例性細節,提供了圖6。圖6是圖3和5中乘法器塊62的內部元件的示意圖,乘法器塊62具有能夠使8位元乘8位元向量資料輸入取樣集66相乘以及使16位元乘16位元向量資料輸入取樣集16相乘的可程式設計資料路徑配置。就這一點而言,在這一示例中,乘法器塊62包括四個8x8位元乘法器84(3)-84(0)。可提供任何所需數量的乘法器84。第一乘法器84(3)被配置成接收8位元向量資料輸入取樣集66A[H](其是所輸入的被乘數輸入‘A’的高位元)並使向量資料輸入取樣集66A[H]或者與8位元向量資料輸入取樣集66B[H](其是所輸入的被乘數輸入‘B’的高位元)或者與8位元向量資料輸入取樣集66C[I](其是所輸入的被乘數輸入‘C’的高位元)相乘。提供了多工器86(3),該多工器86(3)被配置成或者選擇8位元向量資料輸入取樣集66B[H]或者選擇8位元向量資料輸入取樣集66C[I]作為被乘數提供給乘法器84(3)。多工器86(3)受被乘數選擇器位元輸入82[3]控制,被乘數選擇器位元輸入82[3]在這一實施例中是被乘數選擇器輸入82中的高位元。以 此方式,多工器86(3)和被乘數選擇器位元輸入82[3]為乘法器84(3)提供可程式設計內部資料路徑67[0],以便控制是8位元向量資料輸入取樣集66B[H]還是8位元向量資料輸入取樣集66C[I]與所接收到的向量資料輸入取樣集66A[H]相乘。
繼續參考圖6,其他乘法器84(2)-84(0)亦包括與為第一乘法器84(3)提供的類似的可程式設計內部資料路徑67[2]-67[0]。乘法器84(2)包括可程式設計內部資料路徑67[2],該路徑具有可程式設計配置以在可程式設計內部資料路徑67[1]中或者提供8位元向量資料輸入取樣集66B[H]或者提供8位元向量資料輸入取樣集66C[I]來與8位元向量資料輸入取樣集66A[L]相乘,該8位元向量資料輸入取樣集66A[L]是被乘數輸入‘A’的低位元。在這一實施例中,選擇由多工器86(2)根據被乘數選擇器輸入82中的被乘數選擇器位元輸入82[2]進行控制。乘法器84(1)包括可程式設計內部資料路徑67[1],該路徑可被程式設計以在可程式設計內部資料路徑67[1]中或者提供8位元向量資料輸入取樣集66B[L](其是被乘數輸入‘B’的低位元)或者提供8位元向量資料輸入取樣集66C[Q](其是被乘數輸入‘C’的低位元)來與8位元向量資料輸入取樣集66A[H]相乘。在這一實施例中,選擇由多工器86(1)根據被乘數選擇器輸入82中的被乘數選擇器位元輸入82[1]進行控制。此外,乘法器84(0)包括可程式設計內部資料路徑67[0],該路徑可被程式設計以在可程式設計內部資料路徑67[0]中或者提供8位元向量資料輸入取樣集66B[L]或者提供8位元向量資料輸入取樣集66C[Q]來與8位元向量資料輸入取樣集66A[L] 相乘。在這一實施例中,選擇由多工器86(0)根據被乘數選擇器輸入82中的被乘數選擇器位元輸入82[0]進行控制。
繼續參考圖6,如上所述,乘法器84(3)-84(0)可被配置成執行不同的位元長度乘法運算。就這一點而言,每一乘法器84(3)-84(0)分別包括位元長度乘法模式輸入88(3)-88(0)。在這一示例中,每一乘法器84(3)-84(0)可根據分別控制可程式設計資料路徑90(3)-90(0)、91和92(3)-92(0)的配置的輸入來程式設計為8位元乘8位元模式。每一乘法器84(3)-84(0)亦可被程式設計來根據分別控制可程式設計資料路徑90(3)-90(0)、91和92(3)-92(0)的配置的輸入提供較大位元乘法運算(包括16位元乘16位元模式以及24位元乘8位元模式)的一部分。例如,若每個乘法器84(3)-84(0)根據可程式設計資料路徑90(3)-90(0)的配置被配置成8位元乘8位元乘法模式,則這複數個乘法器84(3)-84(0)作為一單元可被配置成包括兩(2)個獨立的8位元乘8位元乘法器作為乘法器塊62的一部分。若每個乘法器84(3)-84(0)根據可程式設計資料路徑91的配置被配置成16位元乘16位元乘法模式,則這複數個乘法器84(3)-84(0)作為一單元可被配置成包括單個16位元乘16位元乘法器作為乘法器塊62的一部分。若乘法器84(3)-84(0)根據可程式設計資料路徑92(3)-92(0)的配置被配置成24位元乘8位元乘法模式,則這複數個乘法器84(3)-84(0)作為一單元可被配置成包括一(1)個16位元乘24位元乘8位元乘法器作為乘法器塊62的一部分。
繼續參考圖6,在這一示例中,乘法器84(3)-84(0)被 示為被配置成16位元乘16位元乘法模式。由每一乘法器84(3)、84(2)分別產生十六(16)位元輸入和94(3)、94(2)以及輸入進位96(3)、96(2)。由每一乘法器84(1)、84(0)分別產生十六(16)位元輸入和94(1)、94(0)以及輸入進位96(1)、96(0)。16位元輸入和94(3)、94(2)以及輸入進位96(3)、96(2)亦與16位元輸入和94(1)、94(0)以及輸入進位96(1)、96(0)一起被提供給24位元4:2壓縮器109,以將輸入和94(3)-94(0)以及輸入進位96(3)-96(0)一起相加。當可程式設計資料路徑91活動並用輸入和94(3)-94(0)以及輸入進位96(3)-96(0)選通時,被相加的輸入和94(3)-94(0)以及輸入進位96(3)-96(0)提供16位元乘16位元乘法模式中的單個和98和單個進位100。可程式設計資料路徑91由第一基於AND的閘102(3)將組合的輸入和94(3)、94(2)作為16位元字來選通,並由第二基於AND的閘102(2)將組合的輸入進位96(3)、96(2)作為16位元字來選通,以提供給24位元4:2壓縮器109。可程式設計資料路徑91亦由第三基於AND的閘102(1)將組合的輸入和94(1)、94(0)作為16位元字來選通,並由第四基於AND的閘102(0)將組合的輸入進位96(1)、96(0)作為16位元字來選通,以提供給24位元4:2壓縮器109。若乘法器塊62被配置成16位元乘16位元或24位元乘8位元乘法模式,則向可程式設計輸出資料路徑70[0]提供向量乘法輸出取樣集68[0]作為壓縮的32位元和S0與32位元進位C0部分乘積。
若乘法器塊62中的乘法器84(3)-84(0)被配置成8位元乘8位元乘法模式,則可程式設計輸出資料路徑70[1]配置被提供為16位元輸入和94(3)-94(0)與相應的16位元輸入進位 96(3)-96(0)作為部分乘積而沒有壓縮。若乘法器塊62中的乘法器84(3)-84(0)被配置成8位元乘8位元乘法模式,則可程式設計輸出資料路徑70[1]被提供為16位元輸入和94(3)-94(0)與相應的16位元輸入進位96(3)-96(0)作為向量乘法輸出取樣集68[1]而沒有壓縮。取決於乘法器塊62的乘法模式,根據正在執行的向量指令,向量乘法輸出取樣集68[0]、68[1]被提供給累加器塊72(3)-72(0)供對和與進位乘積的累加。
由於描述了圖5和6中具有可程式設計資料路徑配置的乘法器塊62(3)-62(0),現在將參考圖7一般描述VPE 22中要與以冗餘進位保留格式配置的累加器塊72(3)-72(0)熔合的乘法器塊62(3)-62(0)的特徵。
就這一點而言,圖7是圖2和3的VPE中的乘法器塊和累加器塊的一般化示意圖,其中累加器塊採用進位備用累加器結構,該結構採用冗餘進位保留格式來減少進位傳播。如上所述並如圖7中所示,乘法器塊62被配置成使被乘數輸入66[H]和66[L]相乘,並在可程式設計輸出資料路徑70中提供至少一個輸入和94與至少一個輸入進位96作為向量乘法輸出取樣集68。為了消除為每一累加步驟在累加器塊72中提供進位傳播路徑和進位傳播加法器的需求,可程式設計輸出資料路徑70中的向量乘法輸出取樣集68中的至少一個輸入和94與至少一個輸入進位96以冗餘進位保留格式熔合到至少一個累加器塊72。換言之,向量乘法輸出取樣集68中的進位96以進位保留格式作為向量輸入進位96被提供給累加器塊72。以此方式,向量乘法輸出取樣集68中的輸入和94與輸入進位96可被 提供給累加器塊72的壓縮器108,該壓縮器108在這一實施例中為複雜閘4:2壓縮器。壓縮器108被配置成將輸入和94和輸入進位96分別與之前的累加向量輸出和112和之前的移位累加向量輸出進位117累加在一起。之前的移位累加向量輸出進位117實際上是在累加運算期間所保留的進位累加。
以此方式,在累加器塊72中不需要提供僅單個的、最終進位傳播加法器來向輸入和94傳播所接收到的輸入進位96作為累加器塊72產生的累加的一部分。在這一實施例中,減少了累加器塊72中與每一累加步驟期間執行進位傳播加法運算相關聯的功率消耗。而且,在這一實施例中,累加器塊72中每一累加步驟期間與執行進位傳播加法運算相關聯的閘延遲亦被消除。
繼續參考圖7,壓縮器108被配置成以冗餘形式分別將輸入和94和輸入進位96與之前的累加向量輸出和112和之前的移位累加向量輸出進位117累加。移位累加向量輸出進位117是在由壓縮器108執行對下一接收到的輸入和94和輸入進位96的下一累加之前,由壓縮器108產生的累加向量輸出進位114經由對累加向量輸出進位114移位而產生的。最終移位累加向量輸出進位117由累加器塊72中提供的單個、最終進位傳播加法器119添加到最終累加向量輸出和112,以傳播最終移位累加向量輸出進位117中的進位累加,以便將最終累加向量輸出和112轉換成最終累加器輸出取樣集76的二進位補數表示。最終累加向量輸出和112在可程式設計輸出資料路徑74中作為累加器輸出取樣集76提供(見圖3)。
由於已經描述了圖示配置成冗餘進位保留格式的乘法器塊62與累加器塊72的熔合的圖7,現在將一般參考圖8描述關於累加器塊72(3)-72(0)的更多示例性細節。以下描述的圖9A-9C提供了採用通用電路和硬體以不同累加模式配置成冗餘進位保留格式以便提供不同的向量累加運算的累加器塊72(3)-72(0)的更多示例性細節。
圖8是圖3的VPE 22中提供的累加器塊72的示例性內部元件的詳細示意圖。如前所述並如以下更詳細討論地,累加器塊72配置有可程式設計輸入資料路徑78(3)-78(0)及/或可程式設計內部資料路徑80(3)-80(0),以使得累加器塊72可被程式設計來充當被設計成執行特定、不同類型的向量累加運算的專用電路。例如,累加器塊72可被程式設計來提供多種不同的累加和加法,包括有符號和無符號累加運算。在以下討論的圖9A-9C中圖示了被配置成提供不同類型的累加運算的累加器塊72中的可程式設計輸入資料路徑78(3)-78(0)及/或可程式設計內部資料路徑80(3)-80(0)的特定示例。而且,累加器塊72被配置成包括進位備用累加器72[0]、72[1]以提供冗餘進位算術,以避免或減少進位傳播,以便以減少的組合邏輯提供高速累加運算。
在圖8中圖示累加器塊72的示例性內部元件。如其中所示地,這一實施例中的累加器塊72被配置成從乘法器塊62接收要被累加在一起的第一輸入和94[0]與第一輸入進位96[0],以及第二輸入和94[1]與第二輸入進位96[1]。參考圖8,輸入和94[0]、94[1]與輸入進位96[0]、96[1]將被稱為向量 輸入和94[0]、94[1]與向量輸入進位96[0]、96[1]。如前所述並如圖6中所示,在這一實施例中,向量輸入和94[0]、94[1]與向量輸入進位96[0]、96[1]各自是16位元長。在這一示例中,累加器塊72被提供為兩個24位元進位備用累加器72[0]、72[1],各自包含類似組件,帶有‘[0]’的通用元素號的元件被設計成用於進位備用累加器72[0],而帶有‘[1]’的組件被設計成用於進位備用累加器72[1]。進位備用累加器72[0]、72[1]可被配置成併發執行向量累加運算。
參考圖8中的進位備用累加器72[0],向量輸入和94[0]與向量輸入進位96[0]是被作為可程式設計內部資料路徑80[0]的一部分提供的多工器104(0)中的輸入。亦提供可由基於異或的閘構成的負電路106(0),該電路根據輸入107(0)產生負向量輸入和94[0]'與負向量輸入進位96[0]',作為對多工器104(0)的輸入以用於需要負向量輸入和94[0]'與負向量輸入進位96[0]'的累加運算。多工器104(0)被配置成根據作為向量指令解碼的結果而產生的選擇器輸入110(0)或者選擇向量輸入和94[0]與向量輸入進位96[0]或者選擇負向量輸入和94[0]'與負向量輸入進位96[0]'以便被提供給壓縮器108(0)。就這一點而言,選擇器輸入110(0)允許進位備用累加器72[0]的可程式設計輸入資料路徑78[0]可程式設計,以便根據被配置成將由累加器塊72執行的累加運算,或者將向量輸入和94[0]與向量輸入進位96[0]或者將負向量輸入和94[0]'與負向量輸入進位96[0]'提供給壓縮器108(0)。
繼續參考圖8,在這一實施例中,進位備用累加器 72[0]的壓縮器108(0)是複雜閘4:2壓縮器。就這一點而言,壓縮器108(0)被配置成在冗餘進位保留運算中累加和與進位。壓縮器108(0)被配置成將作為壓縮器108(0)的四(4)個輸入的當前的向量輸入和94[0]與向量輸入進位96[0],或當前的負向量輸入和94[0]'與負向量輸入進位96[0]',與之前的累加向量輸入和94[0]與向量輸入進位96[0]或者累加負向量輸入和94[0]'與負向量輸入進位96[0]'累加在一起。壓縮器108(0)在可程式設計輸出資料路徑74[0]中提供累加向量輸出和112(0)與累加向量輸出進位114(0)作為累加器輸出取樣集76[0](見圖3)以提供累加器輸出取樣集76(3)-76(0)。累加向量輸出進位114(0)由位元移位器116(0)在累加運算期間移位,以提供移位累加向量輸出進位117(0)以便控制每一累加步驟期間的位元寬度增長。例如,在這一實施例中,位元移位器116(0)是以冗餘進位保留格式熔合到壓縮器108(0)的區段形移位器。以此方式,在累加器72[0]執行的累加運算期間,移位累加向量輸出進位117(0)實際上被保留而不必被傳播給累加向量輸出和112(0)。以此方式,在這一實施例中,累加器塊72中每一累加步驟期間與執行進位傳播加法運算相關聯的功率消耗和閘延遲被消除。
額外的後續的向量輸入和94[0]與向量輸入進位96[0],或負向量輸入和94[0]'與負向量輸入進位96[0]',可與當前的累加向量輸出和112(0)和當前的累加向量輸出進位117(0)累加。向量輸入和94[0]與向量輸入進位96[0],或負向量輸入和94[0]'與負向量輸入進位96[0]',由作為可程式設計 內部資料路徑80[0]的一部分的多工器118(0)根據作為向量指令解碼的結果而產生的和進位選擇器120(0)來選擇。當前的累加向量輸出和112(0)與當前的移位累加向量輸出進位117(0)可作為用於進位備用累加器72[0]的壓縮器108(0)的輸入提供,以便提供更新的累加向量輸出和112(0)與累加向量輸出進位114(0)。就這一點而言,和-進位選擇器120(0)允許累加器72[0]的可程式設計內部資料路徑80[0]可程式設計,以根據被配置成將由累加器塊72執行的累加運算將向量輸入和94[0]與向量輸入進位96[0]提供給壓縮器108(0)。在這一實施例中,亦提供保持閘122(0)、124(0),以使得多工器118(0)根據保持狀態輸入126(0),保持累加向量輸出和112(0)與移位累加向量輸出進位117(0)的當前狀態,以便控制進位備用累加器72[0]中累加的運算時序。
繼續參考圖8,由控制閘134(0)、136(0)以及134(1)、136(1)分別選通進位備用累加器72[0]的累加向量輸出和112(0)與移位累加向量輸出進位117(0),以及進位備用累加器72[1]的累加向量輸出和112(1)與移位累加向量輸出進位117(1)。控制閘134(0)、136(0)以及134(1)、136(1)分別控制被返回給壓縮器108(0)、108(1)的累加向量輸出和112(0)與移位累加向量輸出進位117(0),以及累加向量輸出和112(1)與移位累加向量輸出進位117(1)。
總而言之,採用圖8中的累加器塊72的累加器72[0]、72[1]的可程式設計輸入資料路徑78[0]、78[1]與可程式設計內部資料路徑80[0]、80[1],累加器塊72可被配置成不同模式 。累加器塊72可被配置成採用圖8中所示的通用累加器電路,根據特定向量處理指示,提供不同的累加運算。以下在圖9A-9C中示出,累加器塊72被配置成採用通用累加器電路,根據特定向量處理指示,提供不同的累加運算的示例。
就這一點而言,圖9A是圖8中累加器塊72的示意圖。在這一示例中,累加器塊72具有被程式設計以提供雙24位元累加器模式的可程式設計輸入資料路徑78[0]、78[1]與可程式設計內部資料路徑80[0]、80[1]。圖9A中累加器塊72中的每一進位備用累加器72[0]、72[1]被配置成提供24位元累加器。累加器72[0]、72[1]的24位元累加容量由壓縮器108(0)、108(1)的位元容量提供。參考圖8對於累加器72[0]、72[1]的討論說明了圖9A中累加器72[0]、72[1]提供的各個24位元累加。在圖9A中,分別在可程式設計累加資料路徑132(0)與132(1)中,圖示用於提供累加塊72中的雙24位元累加、由累加器72[0]、72[1]執行的累加的一般資料路徑。
繼續參考圖9A,將描述進位備用累加器72[0]的示例性元件,但這些元件同等適用於進位備用累加器72[1]。在這一實施例中,由控制閘134(0)、136(0)以及134(1)、136(1)分別選通進位備用累加器72[0]的累加向量輸出和112(0)與移位累加向量輸出進位117(0),以及進位備用累加器72[1]的累加向量輸出和112(1)與移位累加向量輸出進位117(1)。控制閘134(0)、136(0)以及134(1)、136(1)分別控制被返回給壓縮器108(0)、108(1)的累加向量輸出和112(0)與移位累加向量輸出進位117(0),以及累加向量輸出和112(1)與移位累加向量輸出 進位117(1)。從向量指令的解碼分別提供給控制閘134(0)、136(0)以及134(1)、136(1)兩者的控制輸入138(0)、138(1)分別控制累加向量輸出和112(0)與移位累加向量輸出進位117(0),以及累加向量輸出和112(1)與移位累加向量輸出進位117(1)被返回給壓縮器108(0)、108(1)。如以下參考圖9B和9C更詳細討論地,控制輸入138(0)、138(1)和控制閘134(0)、136(0)控制累加器72[0]、72[1]是被程式設計為各自執行單獨的累加運算還是執行組合的累加運算。因此,在這一實施例中,控制輸入138(0)、138(1)以及控制閘134(0)、136(0)和134(1)、136(1)分別構成累加器72[0]、72[1]的可程式設計內部資料路徑80[0]、80[1]的一部分。
返回參考圖8,累加器塊72的可程式設計內部資料路徑80[0]、80[1]亦可被程式設計及/或重新程式設計以執行比個體累加器72[0]、72[1]的24位元容量大的累加運算。就這一點而言,累加器72[0]、72[1]的可程式設計內部資料路徑80[0]、80[1]可被程式設計以允許累加器72[0]、72[1]兩者一起在單個向量累加運算中被採用。累加器72[0]、72[1]可被程式設計來提供比累加器72[0]、72[1]的個體位元累加容量更大的位元容量的單個累加運算。累加器72[0]、72[1]的可程式設計內部資料路徑80[0]、80[1]可被配置成允許進位備用累加器72[0]傳播溢出進位輸出,作為來自壓縮器108(0)的下一進位輸出(NCO)137(0)。NCO 137(0)可作為下一進位輸入(NCI)139(1)被提供給進位備用累加器72[1]中的壓縮器108(1)。如之前參考圖8所述,這種作為累加器72[0]、72[1]中的可程式設計內 部資料路徑80[0]、80[1]提供的,允許累加器72[0]、72[1]向24位元進位與和累加提供24位元溢出進位傳播的進位傳播配置能力在這一實施例中,提供40位元累加。
就這一點而言,圖9B是圖8中的同一累加器塊72的示意圖。在圖9B中,累加器塊72被示為被配置成單個累加運算模式。在圖9B中,累加器72[0]、72[1]具有被配置成用於在累加器塊72中提供單個累加運算的可程式設計內部資料路徑80[0]、80[1]。在累加器塊72的單個累加器模式的這一示例中,累加器72[0]、72[1]累加單個40位元累加向量輸出和112與移位累加向量輸出進位117。單個累加向量輸出和112由作為可程式設計輸出資料路徑74[0]、74[1]中的累加器輸出取樣集76(亦見圖3)提供的累加向量輸出和112(0)、112(1)構成。累加向量輸出和112(0)包括單個40位元累加向量輸出和112的最低有效位元。累加向量輸出和112(1)包括單個40位元累加向量輸出和112的最高有效位元。類似地,移位累加向量輸出進位117由移位累加輸出進位117(0)、117(1)構成。移位累加向量輸出進位117(0)包括單個移位累加向量輸出進位117的最低有效位元。累加向量輸出和114(1)包括單個40位元累加向量輸出進位114的最高有效位元。在可程式設計輸出資料路徑74[0](見圖3)中提供累加向量輸出和114[0]與移位累加向量輸出進位117(0)。
繼續參考圖9B,當累加器塊72被配置成單個累加模式(例如,40位元累加)時,累加器72[0]、72[1]執行的累加運算的一般資料路徑被示為可程式設計累加資料路徑146。就 這一點而言,如前所述,累加器塊72接收向量輸入和94和向量輸入進位96。進位備用累加器72[0]累加視情況而定來自向量輸入和94[0]與向量輸入進位96[0],或負向量輸入和94[0]'與負向量輸入進位96[0]'的累加的累加向量輸出和112(0)與累加向量輸出進位114(0)的最低有效位元。進位備用累加器72[1]累加視情況而定來自向量輸入和94[0]與向量輸入進位96[0],或負向量輸入和94[0]'與負向量輸入進位96[0]'的累加的累加向量輸出和112(1)與累加向量輸出進位114(1)的最高有效位元。
繼續參考圖9B,為了程式設計累加器72[0]、72[1]以提供單個累加向量輸出和112和累加向量輸出進位114,累加器72[0]、72[1]的可程式設計內部資料路徑80[0]、80[1]被程式設計為提供單個累加運算。就這一點而言,進位備用累加器72[0]的壓縮器108(0)的NCO 137(0)和進位備用累加器72[1]的壓縮器108(1)的NCI 139(1)被配置成用於提供累加器塊72中的單個累加器(例如,40位元累加器)。進位備用累加器72[1]的NCI 139(1)由NCI閘140(1)用NCI控制輸入142(1)選通。以此方式,當期望累加器塊72中的累加器72[0]、72[1]提供採用從進位備用累加器72[0]到進位備用累加器72[1]的溢出進位傳播的單個累加運算時,可使得NCI控制輸入142(1)活動,以作為進位備用累加器72[1]的可程式設計內部資料路徑80[1]的一部分。NCI控制輸入142(1)使得NCI閘140(1)允許從壓縮器108(0)到壓縮器108(1)的溢出進位傳播。NCI控制輸入142(1)亦被耦合至進位備用累加器72[0]中壓縮器108(0)的進 位傳播輸入144(0),以使得壓縮器108(0)產生NCO 137(0)作為對壓縮器108(1)的NCI 139(1)。這些配置允許進位備用累加器72[1]以可提供單個累加向量輸出和112和累加向量輸出進位114的方式累加向量輸入和94[1]與向量輸入進位96[1]。
注意,如圖9B中所示,累加器塊72中的進位備用累加器72[1]亦包括由NCI 139(0)以及NCI控制輸入142(0)選通的NCI閘140(0)。然而,在這一實施例中,NCI控制輸入142(0)和NCI 139(0)均被拘束至邏輯'0',因為進位備用累加器72[0]累加單個累加運算的最低有效位元。亦注意到,進位備用累加器72[1]的壓縮器108(0)亦包括進位傳播輸入144(1),但在這一實施例中,進位傳播輸入144(1)被拘束至邏輯'0'使得累加器72(1)不產生NCO 12(1)。在這一實施例中,進位備用累加器72[1]不需要執行對下一累加器的進位傳播,因為在累加器塊72的這一實施例中,沒有提供除進位備用累加器72[1]以外的另一累加器。
圖9C是圖8中同一累加器塊72的另一累加器模式的示意圖。就這一點而言,圖9C是圖8中累加器塊72的示意圖,該累加器塊具有被程式設計的資料路徑配置以提供進位保留加法器繼之以單個累加器,以便提供累加器塊72中的另一累加模式。一些累加運算可能需要額外的加法器來執行複數算術。在圖9C中,累加器72[0]、72[1]具有被配置成用於提供16位元進位保留加法器繼之以單個24位元累加器的可程式設計內部資料路徑80[0]、80[1]。
參考圖9C,當累加器塊72被配置成進位保留加法器 繼之以單個累加器時,累加器72[0]、72[1]執行的累加的一般資料路徑由可程式設計資料路徑148示出。就這一點而言,和-進位選擇器120(0)作為向量指令解碼的結果被產生,以使得多工器118(0)向控制閘134(0)、136(0)提供向量輸入和94[1]與向量輸入進位96[0]。使控制輸入138(0)活動,以程式設計進位備用累加器72[0]的可程式設計內部資料路徑80[1],以便使得控制閘134(0)、136(0)向壓縮器108(0)提供向量輸入和94[1]與向量輸入進位96[1]。由進位備用累加器72[0]的壓縮器108(0)將向量輸入和94[1]與向量輸入進位96[1]同向量輸入和94[0]與向量輸入進位96[1]累加,以提供累加向量輸出和112(0)與累加向量輸出進位114(0)。累加向量輸出和112(0)與移位累加向量輸出進位117(0)被作為可程式設計輸出資料路徑74[0]中的累加器輸出取樣集76[0](亦見圖3)提供,以提供進位保留加法器。如可程式設計資料路徑148中所示,移位累加向量輸出進位117(0)亦被提供給進位備用累加器72[1],以便由多工器104(1)提供給壓縮器108(1)以累加到向量輸入和94[1]與向量輸入進位96[1],以便作為24位元累加器將累加向量輸出和112(1)與移位累加向量輸出進位117(1)提供為可程式設計輸出資料路徑74[1]中的累加器輸出取樣集76[1](亦見圖3)。
如上在圖5-9C中所述,VPE 22中提供的乘法器塊62(0-A)和累加器塊72(0-A)亦可被方便地程式設計以提供基-2X蝶形向量運算。基-2X蝶形向量運算可被用於執行FFT向量處理運算。FFT運算通常在各種數位信號處理應用中執行,諸 如線性濾波、相關性分析和頻譜分析。因此,提供可在減少的處理時間並以功率高效的方式執行FFT向量處理運算的VPE是有利的。
如所公知地,離散FFT(DFT)可經由給定長度N的另一資料序列{x(n)},根據以下公式計算N個複值數字的序列{X(k)}來計算:
從以上X(k)的公式觀察到,對每一k值,X(k)的直接計算涉及N次複數乘法(4N次實數乘法)以及N-1次複數加法(4N-2次實數加法)。因此,為計算DFT的所有N個值,需要N2次複數乘法以及N2-N次複數加法。經由認識到以下示出的相位因數WN的對稱性和週期性,可採用各個擊破的方法來計算N=2X個點DFT。
N個點的資料序列被劃分成兩個N/2點的資料序列f1(n)和f2(n),分別對應於x(n)的偶數和奇數取樣,即:f 1(n)=x(2n)
採用WN 2=WN/2代入,以上的後一等式可被表示為:
由於F1(k)和F2(k)是週期性的,對於週期N/2,F1(k+N/2)=F1(k)且F2(k+N/2)=F2(k)。此外,旋轉因數是WN k+N/2=-WN k。由於等式可被如下表示,得到乘法次數從N2到N/2 log2N次乘法的簡並。
就這一點而言,如將在以下參考圖10-12更詳細描述地,VPE 22可採用可用於提供其他算術邏輯向量運算的相同的乘法器塊62(0-A)和累加器塊72(0-A)來提供FFT運算。乘法器塊62(0)-62(A)(見圖3)中每一乘法器塊84(0)-84(3)(見圖6)的相應的可程式設計資料路徑90(3)-90(0)、91和92(3)-92(0)可被程式設計為根據正在執行的具體基-2X蝶形向量指令來為基-2X蝶形向量運算的點提供乘法。累加器塊72(0)-72(A)(見圖3)的可程式設計輸入資料路徑78(0)-78(A)、內部資料路徑80(0)-80(A)及/或輸出資料路徑74(0)-74(A)可被程式設計以根據正在執行的基-2X蝶形向量指令來累加來自多個乘法器塊62(0)-62(A)之中的乘法器塊62的基-2X蝶形乘積。累加器塊72(0)-72(A)的可程式設計輸入資料路徑78(0)-78(A)、內部資料路徑80(0)-80(A)及/或輸出資料路徑74(0)-74(A)亦可在其他週期中被重新程式設計以根據正在執行的基-2X蝶形向量指令,來累加來自複數個乘法器塊62(0)-62(A)之中的其他乘法器塊62的基-2X蝶形乘積。由累加器塊72(0)-72(A)累加的最終累 加的基-2X蝶形乘積可提供N點FFT向量處理運算。
乘法器塊62(0)-62(A)和累加器塊72(0)-72(A)亦可被配置成其他相關的FFT運算,諸如帶有縮放的FFT、帶有乘法的FFT、帶有相位斜坡乘法的FFT、內插FFT、快速迴旋和FHT變換。作為結果,較少的VPE可在向量處理器中提供所需的基-2X蝶形向量運算以及其他類型的算術邏輯向量運算,由此節省了向量處理器中的面積而仍保留與標量處理引擎相比較少的暫存器寫以及較快的向量指令執行時間的向量處理優點。
當DFT中資料點的數目N是4的冪(亦即,N=4X)時,可採用基-2演算法進行計算。然而,對這種情況,採用基-2X FFT演算法是更為計算高效的。例如,基-4 FFT演算法可經由將N點輸入序列拆分或抽取成四個子序列x(4n)、x(4n+1)、x(4n+2)、x(4n+3),n=0、1、...N/4-1來提供。
因此,從以上等式獲得的四個N/4點DFT F(l,q)被組合以產生N點DFT。用於組合N/4點DFT的運算式定義了基-4時間抽取蝶形運算,該運算可如下被表示成矩陣形式:
以上所示的基-4蝶形運算矩陣可被求解以將所提供的N/4個點重新組合作為N點DFT中針對點q的單個點。為針對所有點q求解整個DFT,為N點DFT計算的單個點可被累加。
就這點而言,圖10是圖3中VPE 22的概念示意圖,其中乘法向量處理級60(1)(見圖5)中的乘法器84,與累加向量處理級60(2)(見圖8)中並行的兩個累加器塊72(0)、72(1)熔合,以形成基蝶形電路146來對以上所示的基-4蝶形運算矩陣求解。參考圖10,基蝶形電路146被配置成或者執行基-2蝶形向量運算或者執行基-4蝶形向量運算。在這一實施例中,為要與四個累加器,即累加器塊72[1]中的累加器72[1][1]、72(1)(0)以及累加器塊72[0]中的累加器72(0)(1)、72(0)(0)熔合的乘法器塊62而對VPE 22程式設計,這些累加器塊被配置成冗餘進位保留格式以便提供基蝶形電路146。對能夠被配置成冗餘進位保留格式的累加器塊72的討論以上參考圖7-9C在前文進行了討論。乘法器塊84可提供單個向量資料輸入取樣集66(亦即,N/4基點)乘以四(4)個旋轉因數的四(4)個乘積,以提供N點DFT的一個點。乘法器塊62中被程式設計以便被包括在基蝶形電路146中的乘法器84的數目基於將在根據正在執行的具體基蝶形向量指令執行基蝶形向量運算中使用的位元寬度向量資料輸入取樣集66。
繼續參考圖10,在VPE 22中提供旋轉因數產生器148(3)-148(0)。旋轉因數產生器148(3)-148(0)分別在蝶形道149(3)-149(0)中產生旋轉因數WN q,以便被提供給乘法器塊62中被程式設計以被包括在基蝶形電路146中的乘法器84。經由 提供旋轉因數產生器148(3)-148(0),基蝶形向量運算的旋轉因數WN q可被提供。若基蝶形電路146被配置用於基-2蝶形向量運算,僅需來自旋轉因數產生器148(0)的單個旋轉因數WN 0,它是單位一(「1」)。然而,若基蝶形電路146被配置用於基-4蝶形向量運算,則根據以下的旋轉因數矩陣需要將由旋轉因數產生器148(3)-148(0)產生的四個旋轉因數WN 3-WN 0
在這一實施例中,圖10中的同一乘法器塊62被重複四(4)次,並被熔合到四個累加器72(1)(1)、72(1)(0)、72(0)(1)、72(0)(0)。這是因為在這一實施例中,基蝶形電路146可被配置,其中單個乘法器塊62可提供單個向量資料輸入取樣集66(亦即,N/4基點)乘以四(4)個旋轉因數的四(4)個乘積,以提供N點DFT的一個點。乘法器塊62中被程式設計以便被包括在基蝶形電路146中的乘法器84的數目基於將在根據正在執行的具體基蝶形向量指令執行基蝶形向量運算中使用的位元寬度向量資料輸入取樣集66。而且,儘管圖10中基蝶形電路146中累加器塊72[1]中的每一累加器72[1][1]、72[1][0]以及累加器塊72[0]中的累加器72[0](1)、72[0](0)被程式設計來累加N/4基點,但取決於基蝶形運算的位元寬度,額外的累加器塊72可被程式設計以便被包括在基蝶形電路146中。
而且,在這一實施例中,圖10中的基蝶形電路146每個時鐘週期可為N點基-4蝶形運算提供N/2 log2 N次乘法以及四(4)次累加。因此,僅需四(4)個時鐘週期即可完成N 點基-4蝶形向量運算的一個蝶形運算。這與基-2蝶形運算的輸送量相同。因此,基蝶形電路146可在N個時鐘週期中完成基-4蝶形向量運算。亦注意到,根據此處各實施例的VPE 22可被配置成根據乘法器塊62(0)-62(A)和累加器塊72(0)-72(A)的資料路徑配置,提供多個基蝶形電路146。因此,若VPE 22可被配置成每個時鐘週期執行M個N點基蝶形向量運算,諸如作為示例執行基-16蜻蜓向量運算,則VPE 22執行N點基-4蝶形事務的總的時鐘週期計數被減少為(N/2 Log2 N)/M。此外,經由將乘法器塊62與被配置成冗餘進位保留格式的累加器塊72[91]、72[0]熔合,如前所述,不要求在每一累加步驟期間提供進位傳播路徑和進位傳播加法運算,從而節省了額外的處理時間和功率消耗。
為提供進一步說明,圖11是圖10中的基蝶形電路146的一個週期的示意圖,該電路被配置成或者執行基-2蝶形向量運算或者執行基-4蝶形向量運算。將首先描述被配置成執行基-2蝶形向量運算的基蝶形電路146的描述,隨後是基-4蝶形向量運算描述。就基-2蝶形向量運算而言,如上所述,要求解以下等式以提供N點基-2蝶形運算。
繼續參考圖11,在乘法向量處理級60(1)中接收到向量資料輸入取樣集66[1]、66[0]。向量資料輸入取樣集66[1]、66[0]由被劃分成兩個N/2點的資料序列F 1(k)和F 2(k)的DFT點構成,這兩個序列對應於X(k)的偶數和奇數取樣或點。‘k ’表示序列中的一個N/2點,該點在每一週期累加。乘法器84正常需要提供兩(2)次乘法來使F 2(k)乘以作為蝶形道149上的輸入的旋轉因數W的‘e’分量和冪分量,以提供向量乘法輸出取樣集68[0](即W N k F 2(k))。然而,在這一示例中,由於基-2蝶形運算的旋轉因數是單位一,乘法器84可僅被用於使F 2(k)乘以‘e’。因此,節省了對乘法器84中間乘法結果的暫存器保存。累加器72[1](1)使向量乘法輸出取樣集68[0]加到資料點F 1(k)以提供偶數序列X(k)中的N/2點,作為累加向量輸出和112[1](1)與累加向量輸出進位117[1](1)。累加器72[0](1)使向量乘法輸出取樣集68[0]加到資料點F 1(k)的負以提供奇數序列X(k+N/2)中的N/2點,作為累加向量輸出和112[0](1)與累加向量輸出進位117[0](1)。負電路106[0](1)在資料點F 1(k)被加到向量乘法輸出取樣集68[0]之前對資料點F 1(k)取負。額外的向量資料輸入取樣集66[1]、66[0]被接收到並被提供給累加器72[1](1)、72[0](1),並分別與累加向量輸出和112[1](1)與累加向量輸出進位117[1](1)、以及累加向量輸出和112[0](1)與累加向量輸出進位117[0](1)累加,直到資料序列被求和以提供分別表示偶數序列X(k)和奇數序列X(k+N/2)的求和的最終累加輸出取樣集76[1](1)、76[1](0)。
如上所述,基蝶形電路146亦可被程式設計來提供基-4蝶形向量運算。就這一點而言,在乘法向量處理級60(1)中接收到包含向量格式的N/4基點的向量資料輸入取樣集66[0]。向量資料輸入取樣集66[0]由被劃分成X(k)的取樣或點的N/4點數據序列F 2(k)的DFT點構成。‘k’表示序列中的一個N/4 點,該點在每一週期累加。乘法器84正常將執行兩次乘法以將F 2(k)乘以‘e’分量,並決定旋轉因數的冪分量(即W N k),以提供向量乘法輸出取樣集68[0](亦即,W N k F 2(k))。然而,由於基-4蝶形運算僅包括四個可能的旋轉因數1、-1、j、-j,可經由簡單地提供F 2(k)的負用於乘以旋轉因數-1的乘法,提供F 2(k)的交換用於乘以旋轉因數j的乘法,以及提供F 2(k)的負和交換用於乘以旋轉因數-j的乘法,來避免旋轉因數的冪分量的複數乘法。可在基蝶形電路146的相位斜坡運算期間對F 2(k)的負及/或交換進行程式設計,使得乘法器84可改為僅在第一週期期間被用於執行F 2(k)乘以旋轉因數的‘e’分量的乘法,來進一步節省暫存器保存和功率消耗。
就這一點繼續參考圖11,累加器72[1](1)將總是根據以下再現的基-4旋轉因數矩陣的第1行提供旋轉因數1。然而,累加器72[1](0)必須能夠根據以下重現的基-4旋轉因數矩陣的第2行提供基-4旋轉因數的任何旋轉因數。因此,累加器72[1](0)包括負電路106[1](0)和交換電路109[1](0),該累加器被控制來根據基-4旋轉因數的每一個向累加器塊72[1]中的累加器72[1][1]、72[1][0]以及累加器塊72[0]中的累加器72[0](1)、72[0](0)提供+F 2(k)、-jF 2(k)、-F 2(k)和+jF 2(k),以分別用於每一N/4點序列的累加。累加器72[0](1)必須能夠根據以下重現的基-4旋轉因數矩陣的第3行提供基-4旋轉因數的任何旋轉因數。因此,累加器72[0](1)僅需負電路106[0](1)來向累加器72[1](1)、72[0](1)提供+F 2(k)以及向累加器72[1](0)、72[0](0)提供-F 2(k),以分別用於每一N/4點序列的累加。累加器 72[0](0)必須能夠根據以下重現的基-4旋轉因數矩陣的第4行提供基-4旋轉因數的任何旋轉因數。因此,累加器72[0](0)包括負電路106[0](0)和交換電路109[0](0),該累加器被控制來根據基-4旋轉因數的每一個向累加器塊72[1]中的累加器72[1][1]、72[1][0]以及累加器塊72[0]中的累加器72[0](1)、72[0](0)提供+F 2(k)、+jF 2(k)、-F 2(k)和-jF 2(k),以分別用於每一N/4點序列的累加。
因此,總而言之,圖11中基蝶形電路146中的累加器72[1][1]、72[1][0]、72[0](1)、72[0](0)被程式設計來執行基-4蝶形向量運算,將如下在四(4)個週期上執行以下計算。這些計算被累加以提供四(4)個N/4累加點序列,這些序列隨後可被累加在一起以解決FFT。
週期 A0(116[1](1))A1(116[1](0)) A2(116[0](1)) A3(116[0](0))
週期0 F 2(0)*W(0) F 2(0)*W(0) F 2(0)*W(0) F 2(0)*W(0)
週期1 F 2(1)*W(1) -jF 2(1)*W(1) -F 2(1)*W(1) +jF 2(1)*W(1)
週期2 F 2(2)*W(2) -F 2(2)*W(2) F 2(2)*W(2) +F 2(2)*W(2)
週期3 F 2(3)*W(3) +jF 2(1)*W(3) -F 2(1)*W(3) -jF 2(1)*W(3)
VPE 22亦可被程式設計以執行至多四(4)個如圖11中的基蝶形電路146的基蝶形電路,以提供基-16蝶形運算(亦被稱為「蜻蜓運算」)的能力。在這一情形中,旋轉因數變得比單單+1、=1、+j、-j更複雜,從而需要每一基蝶形電路146中乘法器84更複雜的乘法。
具有用於提供多模基-2X蝶形向量處理運算的可程式設計資料路徑配置、並根據此處討論的概念和實施例的VPE,包括但不限於圖2和3中的VPE 22,可被設置或整合到任何基於處理器的設備中。不作為限定的示例包括機上盒、娛樂單元、導航設備、通訊設備、固定位置資料單元、行動位置資料單元、行動電話、蜂巢式電話、電腦、可攜式電腦、桌上型電腦、個人數位助理(PDA)、監視器、電腦監視器、電視機、調諧器、無線電、衛星無線電、音樂播放機、數位音樂播放機、可攜式音樂播放機、數位視訊播放機、視訊播放機、數位視訊光碟(DVD)播放機和可攜式數位視訊播放機。
就這一點而言,圖12圖示了基於處理器的系統150的示例。在這一示例中,基於處理器的系統150包括一或多個處理單元(PU)152,各自包括一或多個處理器或核154。作為非限定性示例,PU 152可以是圖2中的基頻處理器20。作為非限定性示例,處理器54可以是如圖2中提供的基頻處理器20的向量處理器。就這一點而言,處理器154亦可包括VPE 156,包括但不限於圖2中的VPE 22。PU 152可具有耦合到處理器154、用於對臨時儲存的資料的快速存取的快取緩衝記憶體 158。PU 152被耦合到系統匯流排160,且可互動耦合被包括在基於處理器的系統150中的主設備和從設備。如公知地,PU 152經由在系統匯流排160上交換位址、控制和資料資訊來與這些其他設備通訊。例如,PU 152可向作為從設備的示例的記憶體控制器162傳輸匯流排事務請求。儘管未在圖12中圖示,可提供多個系統匯流排160,其中每一系統匯流排160構成不同的組織。
其他主設備和從設備可被連接到系統匯流排160。如圖12中所示,這些設備可例如包括記憶體系統164、一或多個輸入設備166、一或多個輸出設備168、一或多個網路周邊設備170以及一或多個顯示控制器172。記憶體系統164可包括可由記憶體控制器162存取的記憶體165。輸入裝置166可包括任何類型的輸入裝置,包括但不限於:輸入按鍵、開關、語音處理器等。輸出設備168可包括任何類型的輸出設備,包括但不限於:音訊、視訊、其他視覺指示器等。網路周邊設備170可以是被配置成允許與網路174交換資料的任何設備。網路174可以是任何類型的網路,包括但不限於:有線或無線網路、私有或公共網路、區域網路(LAN)、廣域網(WLAN)和網際網路。網路周邊設備170可被配置成支援所需的任何類型的通訊協定。
PU 152亦可被配置成經由系統匯流排160存取顯示控制器172以控制發送給一或多個顯示器178的資訊。顯示控制器172經由一或多個視訊處理器170向顯示器178發送要顯示的資訊,視訊處理器將要被顯示的資訊處理成適於顯示器 178的格式。顯示器178可包括任何類型的顯示器,包括但不限於:陰極射線管(CRT)、液晶顯示器(LCD)、等離子顯示器等。
熟習此項技術者將理解,結合此處揭示的雙電壓域記憶體緩衝區的實施例描述的各種說明性邏輯區塊、模組、電路和演算法可被實現為電子硬體、儲存在記憶體中或另一電腦可讀取媒體中並由處理器或其他處理器設備執行的指令、或其組合。此處描述的仲裁器、主設備和從設備可例如在任何電路、硬體元件、積體電路(IC)或IC晶片中被採用。此處揭示的記憶體可以是任何類型和大小的記憶體,且可被配置成儲存所需的任何類型的資訊。為清楚地說明這一可互換性,以上已經以其功能的形式一般地描述了各種說明性元件、方塊、模組、電路、和步驟。此類功能如何被實現取決於施加在整體系統上的具體應用、設計選擇及/或設計約束。熟習此項技術者可針對每一具體應用以不同方式來實現所描述的功能,但此類實現決策不應被解讀為致使脫離本案的範疇。
結合本文所揭示的實施例描述的各種說明性邏輯區塊、模組、和電路可用設計成執行本文所描述的功能的處理器、DSP、特殊應用積體電路(ASIC)、FPGA或其他可程式設計邏輯裝置、個別閘或電晶體邏輯、個別硬體元件、或其任何組合來實現或執行。處理器可以是微處理器,但在替代方案中,處理器可以是任何習知處理器、控制器、微控制器、或狀態機。處理器亦可以被實現為計算設備的組合,例如 DSP與微處理器的組合、複數個微處理器、與DSP核協同的一或多個微處理器或任何其他此類配置。
此處揭示的各實施例可被實現為硬體和被儲存在硬體中的指令,這些指令可例如常駐在隨機存取記憶體(RAM)、快閃記憶體、唯讀記憶體(ROM)、電子可程式設計ROM(EPROM)、電子可抹除可程式設計ROM(EEPROM)、暫存器、硬碟、可移除磁碟、CD-ROM、或此項技術中所知的任何其他形式的儲存媒體中。示例性儲存媒體被耦合到處理器,以使得處理器能從/向儲存媒體讀取/寫入資訊。替換地,儲存媒體可以被整合到處理器。處理器和儲存媒體可常駐在ASIC中。ASIC可常駐在遠端站中。在替換方案中,處理器和儲存媒體可作為個別元件常駐在遠端站、基地台或伺服器中。
亦注意到,在此處的任何示例性實施例中描述的操作步驟被描述以提供示例和討論。所描述的操作可在除了所示順序以外的各種不同順序中執行。而且,在單個操作步驟中描述的操作實際上可在多個不同步驟中執行。另外,在示例性實施例中討論的一或多個操作步驟可被組合。可以理解,如對熟習此項技術者顯而易見地,在流程圖中圖示的操作步驟可進行各種不同的修改。熟習此項技術者亦將理解,可使用各種不同技術中的任何一種來表示資訊和信號。例如,貫穿以上描述被述及的資料、指令、命令、資訊、信號、位元、符號、和晶片可由電壓、電流、電磁波、磁場或磁粒子、光場或光粒子、或其任何組合來表示。
提供對本案的先前描述是為了使得任何熟習此項技 術者皆能夠製作或使用本案。對本案的各種修改對熟習此項技術者來說都將是顯而易見的,且本文中所定義的普適原理可被應用到其他變體而不會脫離本案的精神或範疇。由此,本案並非旨在被限定於本文中所描述的示例和設計,而是應被授予與本文中揭示的原理和新穎特徵一致的最廣義的範疇。
10‧‧‧基頻處理器
12‧‧‧處理引擎(PE)
14‧‧‧向量資料
16‧‧‧共用記憶體

Claims (29)

  1. 一種被配置成提供至少一個多模基-2X蝶形向量處理電路的向量處理引擎(VPE),包括:至少一個乘法向量處理級,該至少一個乘法向量處理級包括至少一個乘法器塊,該乘法器塊被配置成:從複數個輸入資料路徑之中的一第一輸入資料路徑接收來自複數個基向量資料輸入取樣集的一基向量資料輸入取樣集;根據由該至少一個乘法向量處理級執行的一基蝶形向量指令,而基於一可程式設計之乘法資料路徑配置以將該基向量資料輸入取樣集與一旋轉因數分量相乘,以在複數個乘法輸出資料路徑中提供一基向量乘法輸出取樣集;及包括複數個累加器塊的至少一個累加向量處理級,該複數個累加器塊之中的每一累加器塊被配置成:基於一可程式設計累加器之資料路徑配置而從該複數個乘法輸出資料路徑之中的一乘法輸出資料路徑接收複數個基向量乘法輸出取樣集;基於該可程式設計累加器之資料路徑配置,對該接收到的該複數個基向量乘法輸出取樣集應用一旋轉因數輸入;及基於該可程式設計累加器之資料路徑配置,以該經應用之旋轉因數輸入累加該複數個基向量乘法輸出取樣集,以提供一基向量累加結果取樣集; 在複數個輸出資料路徑之中的一輸出資料路徑中提供該基向量累加結果取樣集;及一輸出處理級,該輸出處理級被配置成從該複數個累加器塊中的每一累加器塊接收該複數個基向量累加結果取樣集。
  2. 如請求項1述及之VPE,更包括至少一個加法器,該至少一個加法器被配置成使該複數個基向量累加結果取樣集相加以便為該基蝶形向量指令提供一基蝶形結果。
  3. 如請求項1述及之VPE,其中該旋轉因數分量為一「e」分量。
  4. 如請求項1述及之VPE,其中該複數個累加器塊之中的每一累加器塊亦包括一負電路,該負電路被配置成根據該基蝶形向量指令,而基於每一累加器塊的該可程式設計累加器之資料路徑配置,以對該複數個基向量乘法輸出取樣集之中的一所接收到的基向量乘法輸出取樣集取負,以便應用為負一(-1)的該旋轉因數輸入。
  5. 如請求項4述及之VPE,其中該複數個累加器塊之中的每一累加器塊更包括一交換電路,該交換電路被配置成根據該基蝶形向量指令,而基於每一累加器塊的該可程式設計累加器之資料路徑配置,以將該取負的基向量乘法輸出取樣集轉 換成一取負的複數基向量乘法輸出取樣集,以便應用為「-j」的該旋轉因數輸入。
  6. 如請求項1述及之VPE,其中該複數個累加器塊之中的每一累加器塊更包括一交換電路,該交換電路被配置成根據該基蝶形向量指令,而基於每一累加塊的該可程式設計累加器之資料路徑配置,以將該複數個基向量乘法輸出取樣集之中的一所接收到的基向量乘法輸出取樣集轉換成一複數基向量乘法輸出取樣集,以便應用為「j」的該旋轉因數輸入。
  7. 如請求項1述及之VPE,其中該複數個累加器塊之中的每一累加器塊被配置成根據一基-2蝶形向量指令,而基於被配置之每一累加器塊的該可程式設計累加器之資料路徑配置,對所接收到的該複數個基向量乘法輸出取樣集應用該旋轉因數輸入以作為一基-2蝶形旋轉因數輸入。
  8. 如請求項1述及之VPE,其中該複數個累加器塊之中的每一累加器塊被配置成根據一基-4蝶形向量指令,而基於被配置之每一累加器塊的該可程式設計累加器之資料路徑配置,對所接收到的該複數個基向量乘法輸出取樣集應用該旋轉因數輸入以作為一基-4蝶形旋轉因數輸入。
  9. 如請求項1述及之VPE,更包括被配置成產生該旋轉因數輸入的一旋轉因數產生器。
  10. 如請求項1述及之VPE,其中該至少一個乘法器塊由複數個乘法器塊構成,以提供複數個多模基-2X蝶形向量處理電路。
  11. 如請求項1述及之VPE,其中該可程式設計之乘法資料路徑配置和該可程式設計累加器之資料路徑配置各自被配置成基於所執行的該基蝶形向量指令來被重新配置。
  12. 如請求項11述及之VPE,其中該可程式設計之乘法資料路徑配置和該可程式設計累加器之資料路徑配置各自被配置成針對該VPE執行的每一基蝶形向量指令來被重新配置。
  13. 如請求項12述及之VPE,其中該可程式設計之乘法資料路徑配置和該可程式設計累加器之資料路徑配置各自被配置成在該VPE執行的該基蝶形向量指令的每一時鐘週期上被重新配置。
  14. 如請求項1述及之VPE,其中該複數個累加器塊之中的每一累加器塊包括至少一個進位備用(carry-save)累加器,該進位備用累加器各自被配置成:接收該複數個基向量乘法輸出取樣集,該取樣集各自包括至少一個基向量輸入和與至少一個基向量輸入進位;接收至少一個之前累加的基向量輸出和與至少一個之前 累加的基向量輸出進位;累加由累加到該至少一個之前累加的基向量輸出和的該至少一個基向量輸入和構成的至少一個當前累加的基向量輸出和,作為至少一個當前基向量累加輸出和;累加由累加到該至少一個之前累加的基向量輸出進位的該至少一個基向量輸入進位構成的至少一個當前累加的基向量輸出進位,作為至少一個當前累加的基向量輸出進位;及在該複數個輸出資料路徑之中的該輸出資料路徑中,提供該至少一個當前累加的基向量輸出和與該至少一個當前累加的基向量輸出進位,以作為該基向量累加結果取樣集之中的至少一個基向量累加結果取樣集。
  15. 如請求項14述及之VPE,其中該至少一個進位備用累加器被配置成:不將該至少一個之前累加的基向量輸出進位傳播到該至少一個基向量輸入和與該至少一個基向量輸入進位。
  16. 如請求項14述及之VPE,其中該至少一個進位備用累加器更被配置成:在一第一向量累加資料路徑中維持該至少一個當前累加的基向量輸出和,並在與該第一向量累加資料路徑分開的一第二向量累加資料路徑中維持該至少一個當前累加的基向量輸出進位。
  17. 如請求項14述及之VPE,其中該至少一個進位備用累加 器包括至少一個壓縮器,該壓縮器被配置成:接收該至少一個基向量輸入和與該至少一個基向量輸入進位;接收該至少一個之前累加的基向量輸出和與該至少一個之前累加的基向量輸出進位;產生由累加到該至少一個之前累加的基向量輸出和的該至少一個基向量輸入和構成的該至少一個當前累加的基向量輸出和,作為該至少一個當前基向量累加輸出和;及產生由累加到該至少一個之前累加的基向量輸出進位的該至少一個基向量輸入進位構成的該至少一個當前累加的基向量輸出進位,作為該至少一個當前累加的基向量累加輸出進位。
  18. 如請求項17述及之VPE,其中該至少一個壓縮器由至少一個4:2壓縮器構成。
  19. 如請求項1述及之VPE,更包括一輸入讀取級,該輸入讀取級被配置成在該複數個輸入資料路徑之中的一輸入資料路徑中提供一向量陣列之一寬度的該複數個基向量資料輸入取樣集。
  20. 如請求項1述及之VPE,其中該複數個累加器塊不被配置成在一向量暫存器中儲存該等所接收到的複數個基向量乘法輸出取樣集。
  21. 如請求項1述及之VPE,其中該至少一個多模基-2X蝶形向量處理電路被配置成執行一快速傅立葉轉換(FFT)向量指令。
  22. 如請求項1述及之VPE,其中該至少一個基-2X蝶形向量處理電路被配置成執行一內插FFT向量指令。
  23. 一種在一向量處理引擎(vPE)中的一多模基-2X蝶形向量處理電路處理中處理基-2X向量資料的設備,包括:用於從至少一個乘法向量處理級中的至少一個乘法器塊中的複數個輸入資料路徑之中的一第一輸入資料路徑接收來自複數個基向量資料輸入取樣集中的一基向量資料輸入取樣集之裝置;用於在該至少一個乘法器塊中,根據由該至少一個乘法向量處理級執行的一基蝶形向量指令,而基於一可程式設計之乘法資料路徑配置以將該基向量資料輸入取樣集與一旋轉因數分量相乘,以在複數個乘法輸出資料路徑中提供一基向量乘法輸出取樣集之裝置;用於在至少一個累加向量處理級中的複數個累加器塊之中的每一累加器塊中,基於一可程式設計累加器之資料路徑配置,從該複數個乘法輸出資料路徑之中的一乘法輸出資料路徑接收複數個基向量乘法輸出取樣集之裝置;用於基於該可程式設計累加器之資料路徑配置,對該接 收到的該複數個基向量乘法輸出取樣集應用一旋轉因數輸入之裝置;用於基於該可程式設計累加器之資料路徑配置,以該經應用之旋轉因數輸入累加該複數個基向量乘法輸出取樣集,以提供一基向量累加結果取樣集之裝置;用於在複數個輸出資料路徑之中的一輸出資料路徑中提供該基向量累加結果取樣集之裝置;用於在一輸出處理級中,從該複數個累加器塊中的每一累加器塊接收複數個基向量累加結果取樣集之裝置。
  24. 一種在一向量處理引擎(VPE)中的一多模基-2X蝶形向量處理電路處理中處理基-2X向量資料的方法,包括以下步驟:從至少一個乘法向量處理級中的至少一個乘法器塊中的複數個輸入資料路徑之中的一第一輸入資料路徑接收來自複數個基向量資料輸入取樣集中的一基向量資料輸入取樣集;在該至少一個乘法器塊中,根據由該至少一個乘法向量處理級執行的一基蝶形向量指令,而基於一可程式設計之乘法資料路徑配置以將該基向量資料輸入取樣集與一旋轉因數分量相乘,以在複數個乘法輸出資料路徑中提供一基向量乘法輸出取樣集;在至少一個累加向量處理級中的複數個累加器塊之中的每一累加器塊中,基於一可程式設計累加器之資料路徑配置,從該複數個乘法輸出資料路徑之中的一乘法輸出資料路徑 接收複數個基向量乘法輸出取樣集;基於該可程式設計累加器之資料路徑配置,對該接收到的該複數個基向量乘法輸出取樣集應用一旋轉因數輸入;基於該可程式設計累加器之資料路徑配置,以該經應用之旋轉因數輸入累加該複數個基向量乘法輸出取樣集,以提供一基向量累加結果取樣集;在複數個輸出資料路徑之中的一輸出資料路徑中提供該基向量累加結果取樣集;及在一輸出處理級中,從該複數個累加器塊中的每一累加器塊接收複數個基向量累加結果取樣集。
  25. 如請求項24述及之方法,更包括以下步驟:使該複數個基向量累加結果取樣集相加,以便為該基蝶形向量指令提供一基蝶形結果。
  26. 如請求項24述及之方法,更包括以下步驟:根據該基蝶形向量指令,而基於每一累加器塊的該可程式設計累加器之資料路徑配置,對該複數個基向量乘法輸出取樣集之中所接收到的一基向量乘法輸出取樣集取負,以應用為負一(-1)的該旋轉因數輸入。
  27. 如請求項26述及之方法,更包括以下步驟:根據該基蝶形向量指令,而基於每一累加器塊的該可程式設計累加器之資料路徑配置,交換所接收到的該基向量乘法輸出取樣集, 以將該取負的基向量乘法輸出取樣集轉換成一取負的複數基向量乘法輸出取樣集,以應用為「-j」的該旋轉因數輸入。
  28. 如請求項24述及之方法,更包括以下步驟:根據該基蝶形向量指令,而基於每一累加器塊的該可程式設計累加器之資料路徑配置,交換該基向量乘法輸出取樣集,以將該複數個基向量乘法輸出取樣集之中所接收到的該基向量乘法輸出取樣集轉換成一複數基向量乘法輸出取樣集,以應用為「j」的該旋轉因數輸入。
  29. 如請求項24述及之方法,更包括以下步驟:不在一向量暫存器中儲存所接收到的該複數個基向量乘法輸出取樣集。
TW103107652A 2013-03-13 2014-03-06 具有用於提供多模基-2x蝶形向量處理電路的可程式設計資料路徑的向量處理引擎以及相關的向量處理器、系統和方法 TWI601066B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US13/798,599 US9275014B2 (en) 2013-03-13 2013-03-13 Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods

Publications (2)

Publication Number Publication Date
TW201502978A TW201502978A (zh) 2015-01-16
TWI601066B true TWI601066B (zh) 2017-10-01

Family

ID=50473780

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103107652A TWI601066B (zh) 2013-03-13 2014-03-06 具有用於提供多模基-2x蝶形向量處理電路的可程式設計資料路徑的向量處理引擎以及相關的向量處理器、系統和方法

Country Status (7)

Country Link
US (1) US9275014B2 (zh)
EP (1) EP2972988A2 (zh)
JP (1) JP2016514330A (zh)
KR (1) KR20150132287A (zh)
CN (1) CN104969215B (zh)
TW (1) TWI601066B (zh)
WO (1) WO2014164298A2 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI810613B (zh) * 2018-03-14 2023-08-01 美商超捷公司 用於程式化深度學習人工類神經網路中的類比神經記憶體之設備

Families Citing this family (35)

* 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
US9977676B2 (en) 2013-11-15 2018-05-22 Qualcomm Incorporated Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods
US9880845B2 (en) 2013-11-15 2018-01-30 Qualcomm Incorporated Vector processing engines (VPEs) employing format conversion circuitry in data flow paths between vector data memory and execution units to provide in-flight format-converting of input vector data to execution units for vector processing operations, and related vector processor systems and methods
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
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
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
US9817791B2 (en) 2015-04-04 2017-11-14 Texas Instruments Incorporated Low energy accelerator processor architecture with short parallel instruction word
US9952865B2 (en) 2015-04-04 2018-04-24 Texas Instruments Incorporated Low energy accelerator processor architecture with short parallel instruction word and non-orthogonal register data file
US11847427B2 (en) 2015-04-04 2023-12-19 Texas Instruments Incorporated Load store circuit with dedicated single or dual bit shift circuit and opcodes for low power accelerator processor
US10311018B2 (en) * 2015-12-31 2019-06-04 Cavium, Llc Methods and apparatus for a vector subsystem for use with a programmable mixed-radix DFT/IDFT processor
US10503474B2 (en) 2015-12-31 2019-12-10 Texas Instruments Incorporated Methods and instructions for 32-bit arithmetic support using 16-bit multiply and 32-bit addition
US10210135B2 (en) * 2015-12-31 2019-02-19 Cavium, Llc Methods and apparatus for providing a programmable mixed-radix DFT/IDFT processor using vector engines
US10349251B2 (en) * 2015-12-31 2019-07-09 Cavium, Llc Methods and apparatus for twiddle factor generation for use with a programmable mixed-radix DFT/IDFT processor
CN105718424B (zh) * 2016-01-26 2018-11-02 北京空间飞行器总体设计部 一种并行快速傅立叶变换处理方法
GB2553783B (en) * 2016-09-13 2020-11-04 Advanced Risc Mach Ltd Vector multiply-add instruction
US10401412B2 (en) 2016-12-16 2019-09-03 Texas Instruments Incorporated Line fault signature analysis
US10489877B2 (en) * 2017-04-24 2019-11-26 Intel Corporation Compute optimization mechanism
US10331445B2 (en) 2017-05-24 2019-06-25 Microsoft Technology Licensing, Llc Multifunction vector processor circuits
US11803377B2 (en) * 2017-09-08 2023-10-31 Oracle International Corporation Efficient direct convolution using SIMD instructions
US20200142670A1 (en) * 2018-05-29 2020-05-07 Marwan A. Jaber Radix-23 Fast Fourier Transform for an Embedded Digital Signal Processor
US11277455B2 (en) 2018-06-07 2022-03-15 Mellanox Technologies, Ltd. Streaming system
US20200106828A1 (en) * 2018-10-02 2020-04-02 Mellanox Technologies, Ltd. Parallel Computation Network Device
US10942985B2 (en) * 2018-12-29 2021-03-09 Intel Corporation Apparatuses, methods, and systems for fast fourier transform configuration and computation instructions
US11625393B2 (en) 2019-02-19 2023-04-11 Mellanox Technologies, Ltd. High performance computing system
EP3699770A1 (en) 2019-02-25 2020-08-26 Mellanox Technologies TLV Ltd. Collective communication system and methods
US11132198B2 (en) 2019-08-29 2021-09-28 International Business Machines Corporation Instruction handling for accumulation of register results in a microprocessor
CN110780842A (zh) * 2019-10-25 2020-02-11 无锡恒鼎超级计算中心有限公司 基于神威架构的船舶三维声弹性模拟计算的并行优化方法
US12061910B2 (en) 2019-12-05 2024-08-13 International Business Machines Corporation Dispatching multiply and accumulate operations based on accumulator register index number
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
CN112800387B (zh) * 2021-03-30 2021-08-03 芯翼信息科技(上海)有限公司 基-6蝶形运算单元、方法、电子设备及存储介质
US11922237B1 (en) 2022-09-12 2024-03-05 Mellanox Technologies, Ltd. Single-step collective operations

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009502A1 (en) * 2001-06-29 2003-01-09 Nec Corporation Complex vector operation processor with pipeline processing function and system using the same
US20030105949A1 (en) * 2001-11-30 2003-06-05 Quicksilver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
TW200534121A (en) * 2003-12-05 2005-10-16 Qualcomm Inc Fft architecture and method
US7299342B2 (en) * 2005-05-24 2007-11-20 Coresonic Ab Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement
CN102375805A (zh) * 2011-10-31 2012-03-14 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN102637124A (zh) * 2012-03-22 2012-08-15 中国电子科技集团公司第五十八研究所 一种基4fft算法的并行处理装置及方法

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04252372A (ja) * 1991-01-28 1992-09-08 Nippon Telegr & Teleph Corp <Ntt> 可変パイプライン構造
EP0681236B1 (en) 1994-05-05 2000-11-22 Conexant Systems, Inc. Space vector data path
US5805875A (en) 1996-09-13 1998-09-08 International Computer Science Institute Vector processing system with multi-operation, run-time configurable pipelines
US6006245A (en) 1996-12-20 1999-12-21 Compaq Computer Corporation Enhanced fast fourier transform technique on vector processor with operand routing and slot-selectable operation
JP3951071B2 (ja) * 1997-05-02 2007-08-01 ソニー株式会社 演算装置および演算方法
US6061705A (en) 1998-01-21 2000-05-09 Telefonaktiebolaget Lm Ericsson Power and area efficient fast fourier transform processor
WO1999045462A1 (de) 1998-03-03 1999-09-10 Siemens Aktiengesellschaft Datenpfad für signalverarbeitungsprozessoren
JP3940542B2 (ja) 2000-03-13 2007-07-04 株式会社ルネサステクノロジ データプロセッサ及びデータ処理システム
US7107305B2 (en) * 2001-10-05 2006-09-12 Intel Corporation Multiply-accumulate (MAC) unit for single-instruction/multiple-data (SIMD) instructions
US7159099B2 (en) 2002-06-28 2007-01-02 Motorola, Inc. Streaming vector processor with reconfigurable interconnection switch
AU2003286131A1 (en) 2002-08-07 2004-03-19 Pact Xpp Technologies Ag Method and device for processing data
US20040193837A1 (en) 2003-03-31 2004-09-30 Patrick Devaney CPU datapaths and local memory that executes either vector or superscalar instructions
US7272751B2 (en) 2004-01-15 2007-09-18 International Business Machines Corporation Error detection during processor idle cycles
KR100985110B1 (ko) 2004-01-28 2010-10-05 삼성전자주식회사 단순한 구조의 4:2 csa 셀 및 4:2 캐리 저장 가산 방법
US7415595B2 (en) * 2005-05-24 2008-08-19 Coresonic Ab Data processing without processor core intervention by chain of accelerators selectively coupled by programmable interconnect network and to memory
WO2007018553A1 (en) * 2005-08-08 2007-02-15 Commasic Inc. Multi-mode wireless broadband signal processor system and method
US20070106718A1 (en) 2005-11-04 2007-05-10 Shum Hoi L Fast fourier transform on a single-instruction-stream, multiple-data-stream processor
CN101359284B (zh) 2006-02-06 2011-05-11 威盛电子股份有限公司 处理数个不同数据格式的乘法累加单元及其方法
US7519646B2 (en) 2006-10-26 2009-04-14 Intel Corporation Reconfigurable SIMD vector processing system
US8051123B1 (en) 2006-12-15 2011-11-01 Nvidia Corporation Multipurpose functional unit with double-precision and filtering operations
DE102007014808A1 (de) 2007-03-28 2008-10-02 Texas Instruments Deutschland Gmbh Multiplizier- und Multiplizier- und Addiereinheit
US8320478B2 (en) 2008-12-19 2012-11-27 Entropic Communications, Inc. System and method for generating a signal with a random low peak to average power ratio waveform for an orthogonal frequency division multiplexing system
US20110072236A1 (en) 2009-09-20 2011-03-24 Mimar Tibet Method for efficient and parallel color space conversion in a programmable processor
CN102768654A (zh) 2011-05-05 2012-11-07 中兴通讯股份有限公司 具有fft基2蝶运算处理能力的装置及其实现运算的方法
JP2013025468A (ja) * 2011-07-19 2013-02-04 Hitachi Advanced Digital Inc 高速フーリエ変換装置
DE102011108576A1 (de) 2011-07-27 2013-01-31 Texas Instruments Deutschland Gmbh Selbstgetaktete Multipliziereinheit
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
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030009502A1 (en) * 2001-06-29 2003-01-09 Nec Corporation Complex vector operation processor with pipeline processing function and system using the same
US20030105949A1 (en) * 2001-11-30 2003-06-05 Quicksilver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
TW200534121A (en) * 2003-12-05 2005-10-16 Qualcomm Inc Fft architecture and method
US7299342B2 (en) * 2005-05-24 2007-11-20 Coresonic Ab Complex vector executing clustered SIMD micro-architecture DSP with accelerator coupled complex ALU paths each further including short multiplier/accumulator using two's complement
CN102375805A (zh) * 2011-10-31 2012-03-14 中国人民解放军国防科学技术大学 面向向量处理器的基于simd的fft并行计算方法
CN102637124A (zh) * 2012-03-22 2012-08-15 中国电子科技集团公司第五十八研究所 一种基4fft算法的并行处理装置及方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI810613B (zh) * 2018-03-14 2023-08-01 美商超捷公司 用於程式化深度學習人工類神經網路中的類比神經記憶體之設備
US12046290B2 (en) 2018-03-14 2024-07-23 Silicon Storage Technology, Inc. Verifying or reading a cell in an analog neural memory in a deep learning artificial neural network

Also Published As

Publication number Publication date
US9275014B2 (en) 2016-03-01
CN104969215A (zh) 2015-10-07
WO2014164298A3 (en) 2015-07-02
CN104969215B (zh) 2017-12-01
WO2014164298A2 (en) 2014-10-09
EP2972988A2 (en) 2016-01-20
US20140280420A1 (en) 2014-09-18
TW201502978A (zh) 2015-01-16
KR20150132287A (ko) 2015-11-25
JP2016514330A (ja) 2016-05-19

Similar Documents

Publication Publication Date Title
TWI601066B (zh) 具有用於提供多模基-2x蝶形向量處理電路的可程式設計資料路徑的向量處理引擎以及相關的向量處理器、系統和方法
KR101735742B1 (ko) 다중-모드 벡터 프로세싱을 제공하기 위한 프로그램 가능 데이터 경로 구성들을 가진 벡터 프로세싱 엔진들, 및 관련 벡터 프로세서들, 시스템들, 및 방법들
US9792118B2 (en) 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
US20140280407A1 (en) Vector processing carry-save accumulators employing redundant carry-save format to reduce carry propagation, and related vector processors, systems, and methods
US9684509B2 (en) 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
US9977676B2 (en) Vector processing engines (VPEs) employing reordering circuitry in data flow paths between execution units and vector data memory to provide in-flight reordering of output vector data stored to vector data memory, and related vector processor systems and methods
US9880845B2 (en) 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
US20150143076A1 (en) 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
US20150143079A1 (en) 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
TWI803634B (zh) 子向量數值之加載及複製之處理器、操作一處理器之方法、處理設備及包含指令的非暫時性電腦可讀媒體
JP6737869B2 (ja) スライディングウィンドウ演算