用於增強的計算能力的處理器體系結構的製作方法
2023-09-17 06:48:55 2
專利名稱:用於增強的計算能力的處理器體系結構的製作方法
技術領域:
本發明涉及處理器體系結構,更具體地,涉及有利於高性能數位訊號 處理計算的數位訊號處理器體系結構。所公開的數位訊號處理器可以隨其 它處理器一起^吏用,或者作為獨立的處理器4吏用。
背景技術:
數位訊號處理器(DSP)是被設計用於對數位訊號處理應用的性能進 行優化的專用計算機,所述數位訊號處理應用例如為快速傅立葉變換、教 字濾波、圖像處理、無線系統中的信號處理以及語音識別。數位訊號處理 器應用典型地具有實時操作、高中斷率以及密集的數值計算的特徵。此夕卜, 數位訊號處理器應用趨向於存儲器訪問操作密集以及需要對大量數據的 輸入和輸出。數位訊號處理器體系結構典型地被優化用於有效地執行這種 計算。
數位訊號處理器的核心處理器典型地包括計算塊、程序序列發生器、 指令解碼器、以及執行數位訊號計算所需要的所有其它元件。計算塊是數
字信號處理器的基本計算元件,並且典型地包括寄存器堆以及一個或更多 個計算單元,所述計算單元例如為乘法器和算術邏輯單元(ALU)。
數位訊號計算實際上經常是重複性的。也就是說,可能多次用不同的 數據來執行相同或相類似的計算。因此,各個計算的l變的任何提高可能 提供數位訊號處理器的性能的顯著增強。
諸如無線系統中的基站之類的一些應用具有超出當前數位訊號處理 器的能力的性能需求和時序需求。為了滿足這些需求,設計者使用了與 ASIC (專用集成電路)和/或FPGA (現場可編程門陣列)相組合的數字 信號處理器。這種系統缺乏靈活性Jbf目對昂貴。此外,所需要的性能隨著 下一代無線系統的引入而提高。高功耗通常是高性能處理器中存在的問 題。
可以取決於預期應用而針對不同的操作參數來優化數位訊號處理器設計,所述不同的操作參數例如為計算速度、功耗以及編程的簡易性。此
外,數位訊號處理器可以被設計用於不同的字長。在1999年9月21日授 權給Garde的美國專利5954811中7>開了利用長指令字和寬數據總線並 且實現了高運算速度的32位體系結構。核心處理器包括兩個計算塊。盡 管具有很高的性能,但是該公開的處理器並未提供用於所有應用的優化的 解決方案。
因此,存在對數位訊號處理器體系結構和性能的進一步創新的需求。
發明內容
根據本發明的第一方面, 一種數位訊號處理器包括控制塊,被配置 用於基於已存儲的程序來發出指令;以及計算陣列,包括兩個或更多個計 算引擎,所述計算陣列被配置成使得所發出的指令中的每個指令在連續的 時段、在至少所述計算引擎的子集中的連續的計算引擎中執行。所述計算 陣列可以被配置成使得所發出的指令中的每個指令在連續的時段流經至 少所述計算引擎的子集中的、連續的計算引擎。
所述計算引擎中的每個計算引擎可以包括指令管道,被配置用於控 制指令經過計算陣列的流動;以及至少一個流單元,被配置用於對與所述 指令相關聯的數據執行流操作。所述計算引擎中的每個計算引擎還可以包 括 一個或更多個計算單元,用於執行數位訊號計算;以及寄存器堆,用 於保存數位訊號計算的操作數。
所述計算陣列包括至少一個存儲器。在一些實施例中,所述計算引擎
中的每個計算引擎包括第一存儲器和第二存儲器。在其它實施例中,所述 計算陣列包括被配置用於隨所述計算引擎中的每個計算引擎一起操作的
第一存儲器和第二存儲器。所述計算陣列中的計算引擎可以被配置用於對 所述存儲器的內容執行逐列操作、逐行逐列的操作、以及逐行操作。
在一些應用中,所述流單元可以被配置用於從存儲器加栽數據、以及 將數據移位到連續的計算引擎中的一個或更多個所選寄存器中。在其它應 用中,所述流單元可以被配置用於從存儲器加載數據、以及向所述計算引 擎中的每個計算引擎中的一個或更多個所選寄存器廣播數據。在另外的應 用中,所述流單元可以被配置用於對來自連續的計算引擎中的一個或更多 個所選寄存器的數據進行累加以及存儲結果。在一些實施例中,流單元中 的寄存器與寄存器堆中的寄存器相交互。在一些應用中,可以將所述計算引擎形成為組。在其它應用中,可以 使數據再循環經過計算陣列。
根據本發明的第二方面, 一種用於數位訊號處理的方法包括提供一 種包括控制塊和計算陣列的數位訊號處理器,其中該計算陣列包括兩個或 更多個計算引擎;在所述控制塊中基於已存儲的程序來發出指令;以及在 連續的時段、在至少所述計算引擎的子集中的連續的計算引擎中執行所發 出的指令中的每個指令。
根據本發明的第三方面, 一種數位訊號處理器包括控制處理器;處 理器,所述處理器包括被配置用於基於已存儲的程序來發出指令的控制 塊,以及計算陣列,所述計算陣列包括兩個或更多個計算引擎,所述所述 計算陣列被配置成使得在連續的時段、在至少所述計算引擎的子集中的連 續的計算引擎中執行所發出的指令中的每個指令;以及能夠被所述控制處 理器和所述處理器訪問的主存儲器。所述計算陣列可以被配置成使得所發 出的指令中的每個指令在連續的時段流經至少所述計算引擎的子集中的、 連續的計算引擎。
為了更好地理解本發明,參考通過引用而合併於此的附圖,在附圖中
圖l是根據本發明的實施例的數位訊號處理器的示意性框圖2是圖1所示的處理器的實施例的示意性框圖3是圖2所示的計算引擎之一的實施例的示意性框圖4是圖2所示的計算陣列的第二實施例的示意性框圖5是示出了根據本發明的實施例的、用於流^Mt的存儲器地址空間 的示意性;f匡圖6是示出了根據本發明的實施例的、用於SIMD操作的存儲器地 址空間的示意性4匡圖6A是示出了根據本發明的另一實施例的、用於SIMD操作的存儲 器地址空間的示意性框圖7是根據本發明的實施例的流單元的示意性框圖8A是執行流加載指令的流單元的示意性框圖;圖8B是示出了流加載指令的執行的示意性框圖9A是執行流存儲指令的流單元的示意性框圖9B是示出了 ;i^儲指令的操作的示意性框圖IO是計算陣列的示意性框圖,其示出了根據本發明的實施例的數 據通路總線;
圖11是示出了根據本發明的實施例的對稱濾波計算的示意性框圖12是根據本發明的實施例的計算引擎的示意性框圖13是示出了計算引擎的分組的示意性框圖14是圖2所示的控制塊的實施例的示意性框圖15是示出了根據本發明的實施例的DMA交織的示意性框圖16是示出了使用根據本發明的實施例的處理器的逐列處理的示意 性圖示;
圖17是示出了使用根據本發明的實施例的處理器的逐行逐列的處理 的示意性圖示;
圖18是示出了使用根據本發明的實施例的處理器的逐行處理的示意 性圖示;
圖19是示出了使用根據本發明的實施例的處理器的帶移位的逐行處 理的示意性圖示;以及
圖20是示出了使用根據本發明的實施例的處理器的帶移位和廣播的 逐行處理的示意性圖示。
具體實施例方式
圖1中示出了根據本發明的實施例的數位訊號處理器的示意性框圖。 數位訊號處理器(DSP) 10包括控制處理器12、存儲器14、 1/0埠 16 和處理器20。控制處理器12與處理器20進行交互,並訪問存儲器14。 DMA1總線22在存儲器14與處理器20之間傳送數據。DMA2總線24 在存儲器14、處理器20和I/O埠 16之間傳送數據。1/0埠 16可以 經由FIFO或I/O緩衝器直接與處理器20進行通信。I/O埠 16提供了 去向諸如主機計算機之類的外部存儲器、外部裝置和/或外部處理器的接 O 。作為示例,控制處理器12可以具有在美國專利5896543中^>開的類 型的體系結構,該美國專利5896543在1999年4月20日被授權給Garde, 並被模擬裝置公司(Analog Devices, Inc.)作為TigerSharc數位訊號處 理器出售。存儲器14可以包括三個獨立的大容量存儲體。在優選的實施 例中,所述存儲體中的每個存儲體可以具有64K個各為32位的字的容量。 所述存儲體中的每個存儲體可以具有128位數據總線,使得可以在單個時 鍾周期內,將多達四個的連續的對準的各為32位的數據字傳送至每個存 儲體,或從每個存儲體傳送多達四個的連續的對準的各為32位的數據字。
圖2中示出了處理器20的第一實施例的示意性框圖。處理器20可以 包括控制塊30和計算陣列32。控制塊30可以包括控制邏輯34、 DMA 控制器36、整數ALU38和40、程序序列發生器42、程序存儲器44和數 據存儲器46。控制塊30基於已存儲的程序而將指令和數據地址發給計算 陣列32。
計算陣列32包括兩個或更多個計算引擎。在圖2的實施例中,計算
陣列32包括八個計算邏輯50、 51、 52.....57。每個計算引擎可以被稱
為計算陣列的"段"。計算引擎是串聯的,使得控制塊30發出的指令以及
對應的數據行進經過或"流動"經過計算引擎50、 51、 52.....57,並在
連續的時段在所述計算引擎中的每個計算引擎中執行。如同下面所公開的 那樣,在利用對計算引擎的分組的應用中,控制塊30所發出的指令以及 對應的數據流經所述計算引擎的子集或組,並在連續的時段執行。在一個 實施例中,指令在連續的時鐘周期行進經過連續的計算引擎。作為示例, 控制塊30發出的指令可以在時鐘周期1行進至計算引擎50,在時鐘周期 2行進至計算引擎51,以及在時鐘周期8行進至計算引擎57。但是,本 發明並不限於這方面,並且每個指令可以在任意數量的時鐘周期之後從一 個計算引擎行進至下個計算引擎。此外,指令不一定在第一個計算引擎處
l計算陣列32,而是可以在所述計算引擎中的任一計算引擎處^。 該特性例如在利用對計算引擎的分組的應用中是有益的。所述計算引擎中 的每個計算引擎可以被單獨地流水線化,因此可能需要若干時鐘周期來完 成指令的執樸。此外,數據在連續的時段流至連續的計算引擎,這將在下 面詳細描述。
在圖2的實施例中,指令在連續的時鐘周期流經所述計算引擎中的所 有計算引擎或所述計算引擎的子集。在其它實施例中,控制塊30發出的 指令可以被廣播至所述計算引擎中的所有計算引擎或所述計算引擎的子集。在該實施例中,根據計算引擎在計算陣列中的位置來延遲所廣播的指 令,使得每個廣播的指令在連續的時段在連續的計算引擎中執行。例如,
所廣播的指令可以在計算引擎50中無延遲,在計算引擎51中有一個時鐘 周期的延遲,在計算引擎52中有兩個時鐘周期的延遲,等等。在每種情 況下,每個發出的指令在連續的時a^連續的計算引擎中執行。在利用對 計算引擎的分組的情況下,每個指令在連續的時段在所述組中的連續的計 算引擎中執行。
圖3中示出了單個計算引擎的實施例的示意性框圖。每個計算引擎包 括指令管道70和流單元72,指令管道70用於控制經過計算引擎的陣列 的指令流,流單元72用於控制計算引擎的陣列中的數據流。連續的計算 引擎中的指令管道70通過指令總線120耦合在一起。連續的計算引擎中 的流單元72通過流總線102耦合在一起。每個計算引擎一般可以配置有 一個或更多個流單元以及一個或更多個流總線。指令管道70保存指令並 向計算引擎提供控制信號以用於執行指令。每個計算引擎中的指令管道 70在長度上可以是一個或更多個時鐘周期。在一個實施例中,每個計算 引擎中的指令管道70在長度上是一個時鐘周期。
每個計算引擎還包括計算塊74、寄存器堆76和DMA緩衝器82。在 圖2的實施例中,每個計算引擎包括X存儲器78和Y存儲器80。可以 將與所述計算引擎中的每個計算引擎相關聯的存儲器實現為SRAM。如 同下面所討論的,可以以不同的方式來實現該存儲器。在另一實施例中, 每個計算引擎可以包括單個存儲器。計算塊74可以包括一個或更多個計 算單元。例如,計算塊74可以包括乘法器卯、算術邏輯單元(ALU) 92 和MAC (乘法累加器)加法器96 (圖12)。計算塊74與寄存器堆76相 交互,以便響應於指令管道70中的指令而執行數位訊號計算。寄存器堆 76與存儲器78和80以及流單元72相交互,以獲得用於數位訊號計算的 指定數據以及將結果提供給指定目的地。通過指令來指定數據的位置和結 果的目的地。通過DMA緩衝器82以及DMA總線22和24,將數據傳送 至存儲器78和80以及從存儲器78和80傳送數據。在一些實施例中,計 算塊74可以包括可配置門陣列(CGA) 98。
流存儲器數據(FMD)總線94、流總線102和回流數據(BFD)總 線124經由開關104耦合到流單元72的輸入端。FMD總線94、流總線 102和BFD總線124經由開關106耦合到流單元72的輸出端。在正常的 操作模式中,開關104經由流總線102將流單元72的輸入端連接到在先
12的計算引擎中的流單元,並且流數據在流總線102上從在先的計算引擎接 收。在正常模式中,開關106經由流總線102將流單元72的輸出端連接 到下個計算引擎中的流單元,並且流數據在流總線102上被提供給下個計 算引擎。如下文所述,當利用對計算引擎的分組時,開關106將流輸出端 102連接到組中的最後一個計算引擎中的BFD總線124,使得流數據被保 持在計算引擎的組內。在流加載操作的情況下,FMD總線94經由開關 104連接到所選計算引擎中的流單元72的輸入端,由此將存儲器連接到 流單元72。在流存儲操作的情況下,經由開關106將所選計算引擎中的 流單元72的輸出端連接到FMD總線94。如圖10所示,當以再循環模式 使用計算陣列32時,從最後一個計算引擎57輸出的流數據在流總線102 上被耦合至第一個計算引擎50的流數據輸入端。
圖4中示出了計算陣列32的第二實施例的示意性框圖。圖2和4中 的相似元件具有相同的附圖標記。圖4的實施例包括計算引擎50、 51、 52、 ...、 57。在圖4的實施例中,每個計算引擎不包括單獨的X存儲器和 Y存儲器。替代地,計算陣列32包括由所述計算引擎中的每個計算引擎 所訪問的單個X存儲器84和單個Y存儲器86。每個存儲器84, 86可以 是DRAM,並且可以具有足夠用於與所述計算引擎中的每個計算引擎相 關的並行的加載/存儲操作的行寬度。例如,存儲器84和86可以為1024 位寬,以便對於所述八個計算引擎中的每個計算引擎並行地加載/存儲四 個32位的字。與八個較小的SRAM相比,使用大的DRAM在空間上更 為有效。替代實現八個存儲器,,可以通it^DRAM與計算引擎之間 插入分級緩衝器來4吏用單個DRAM,以順序地將數據按行提供給計算陣 列的每個段。存儲器訪問經過與延遲線起類似作用的分m衝器88。分 級緩沖器88中的負栽延遲線具有隨段號而增加的延遲。也就是說,段0 無延遲,段1具有1個周期的延遲,等等,以及段7具有7個周期的延遲。 對於分M衝器88中的存儲延遲線而言,延遲是相反的。也就是說,段 0具有7個周期的延遲,段1具有6個周期的延遲,等等,以及段7無延 遲。由於分級緩衝器88在8個時鐘周期內被清空,因此可以用動態邏輯 來構建分級緩衝器88。
在本發明的範圍之內,計算陣列32可以具有不同的存儲器配置。圖 2示出了每個計算引擎包括X存儲器78和Y存儲器80的實施例,圖4 示出了計算陣列32包括單個X存儲器84和單個Y存儲器86的實施例。 在其它實施例中,每個計算引擎可以包括單個存儲器或多於兩個的存儲 器。在另外的實施例中,單個存儲器可以服務於整個計算陣列。在另外的實施例中,計算陣列可以包括與相應的計算引擎相關聯的單獨的段存儲器 (典型地是較小的存儲器),以及一個服務於整個計算陣列的存儲器(典 型地是較大的存儲器)。在這些具有八個計算引擎的實施例中一般可以配
置一個或更多個存儲器來服務於l個、2個、4個或8個計算引擎。
計算陣列32可以包括行高速緩存130 (圖4 ),行高速緩存130允許 在單個周期內緩存1024位的數據行以用於流訪問。這在後續對該行的流 訪問中釋放了存儲器。由於行高速緩存,程式設計師不需要訪問四倍長字,從 而最小化存儲器訪問。這通常簡化和減小了程序大小。這還減少了功耗, 並且允許對存儲器的較優的DMA訪問。行高速緩存130優選地包括加載 行高速緩存(LRC)和存儲行高速緩存(SRC)。優選地,行高速緩存只 支持流訪問而不支持SIMD訪問。行高速緩存可以在圖2和2A的實施例 中使用。計算陣列32可以包括一個或更多個加載行高速緩存以及一個或 更多個存儲行高速緩存。
加載行高速緩存保存存儲器中當前訪問的整個行。該行是在第一次執 行流加載指令時自動加載的。加載行高速緩存的功能是如同高速緩存一樣 起作用,以減少後續對存儲器的流訪問的數量。加載行高速緩存還提供了 拆分功能,特別是用於短字。控制器不再對存儲器進行流訪問,直到行地 址改變。例如,該緩衝器可以保存64個短字,並省去了 63次對存儲器的 訪問。
存儲行高速緩存在被充滿之前對輸入流結果進行打包。當被充滿時, 存儲行高速緩存^向存儲器的存儲。存儲行高速緩存如同高速緩存一樣 起作用,以減少對存儲器的多次單獨訪問。存儲行高速緩存還提供打包功 能,特別是用於短字。控制器不將存儲行高速緩存的內M儲到存儲器中, 直到行地址改變或者直到行高速緩存被充滿。例如,該緩衝器可以保存 64個短字結果,並省去對存儲器的63次訪問。
控制塊30發出用於計算陣列32的加載/存儲指令和計算指令。指令 從左側1計算陣列,並在每個時鐘周期從一個段流到下個段,直到它們 在八個時鐘周期之後離開該陣列。進入陣列的數據按照指令所指定地以相 同的方式流經該陣列。計算的結果按照指令所指定地以類似的方式跨計算 引擎地流動,當流動結束時,可以將結果存儲在存儲器中。如果應用需要 多於八個的計算引擎,則數據和結果可以再循環經過計算陣列32。相反 地,對於需要較少的計算引擎的應用,八個計算引擎可以被配置成組。通 過每個計算引擎中的開關來實現組。每個計算引擎中的存儲器在使用流指令時是所有計算引擎的共用資源,但是對於SIMD (單個指令,多個數據) 指令而言是局部資源。
指令、數據和結果在每個時鐘周期水平地逐段流過陣列。該流產生了 以下編程假象不管處理是水平地跨過陣列、是以SIMD方式垂直,過 陣列、還是以二者的組合(因此是SIMD-流)跨過陣列,都存在一個處 理器和一個存儲器。同時執行SIMD操作和流操作的能力顯著地增強了體 繫結構的通用性。通it^流操作期間對段進行分組以允許需要較少量操作 的任務得到優化管理的能力,來增強流體系結構的通用性。利用SIMD 操作,每個段所作的工作可以有相當大的差別。這是因為,大多數指令可 以是有條件的,或者可以根據每個段的唯一 ID來進行修改。
在計算陣列的每個段中包括單獨的存儲器的實施例中,每個段可以執 行獨立的表查找。通過由控制塊30中的地址生成器將每個段中的地址偏 移量寄存器的內容與廣播給所有段的公共地址相加,可以在每個段中執行 對存儲器的表查找。這允許在每個段中執行單獨的表查找。在每個段中復 制表以允許同時查找。存儲器訪問指令具有指定是否調用地址偏移量寄存 器的位。
可以利用不同的尋址方案來進行SIMD操作(單個計算引擎中的非 流操作)和流操作(跨計算引擎的操作)。基於指令類型來選擇尋址方案。
對於流存儲器訪問,存儲器表現為單個字長很寬的存儲器,並且在包 括八個段的實施例中每一行具有1024位或具有32個各為32位的字,其 中每一段具有存儲器行,所述存儲器行具有四個32位的字。為實現它, 每個存儲器段只響應於其列地址。流地址只應用於一個存儲器段。所選的 段將其數據置於FMD總線94上。當使用組時,流地址為每個組所共用。 因此,對於各具有四個段的兩個組而言,行大小為16個字,但是存在兩 組該行地址。圖5中示出了賴^據本發明的實施例的流尋址方案。如圖5 所示,流地址跨所有段地線性增加。
對於SIMD存儲器訪問,X存儲器和Y存儲器各表現為八個並列的 存儲體。每個存儲器段接JlM目同的地址並相同地進行操作。因此,數據被 存儲為八+數據集。用於存儲器段的地址和控制在每個時鐘周期在指令流 總線120上從左流向右,使得連續的段在連續的周期進行響應。SIMD存 儲器可以被概括為包括八個相同的存儲器,每個段具有公共地址。該地址 被廣播給所有段,並且每個段每行有四個32位的字。地址空間是一個段 的地址空間。因此,加載指令從每個存儲器段中的相同地址處加載每個段中的一個或更多個寄存器的內容。但是,由於指令跨陣列地流動,因此每
個段比在先段晚一個周期進行響應。圖6中示出了根據本發明的實施例的 SIMD存儲器尋址方案。如圖6所示,在每個段中SIMD地址增加。
雖然圖5和6示出了針對流操作和SIMD操作的不同尋址方案,但 是應當理解,並不要求不同的尋址方案。更具體地,可以^使用線性地址空 間來進行流操作和SIMD操作。在這種情況下,SIMD存儲器訪問使用較 大的地址增量來訪問下個存儲器行。
圖6A中示出了根據本發明的另一實施例的SIMD存儲器尋址方案。 該尋址方案允許使用相同的存儲器地址空間來進行流操作和SIMD操作。 對於SIMD存儲器訪問,地址生成器在每個四倍邊界處基於模數32來增 加SIMD地址,即,來自地址位al的進位進位到地址位a5。這是因為計 算陣列自身隱含地增加位a4:2。因此,對於SIMD操作和流操作而言, 地址空間可以保持為相同的和線性的。地址生成器修改地址使得來自位 al的進位被關聯到位a5,以針對中間的位在陣列中被隱含地增加的事實 而進4亍調整。因此,增加一將4吏地址從0、 1、 2、 3、 32、 34、 35、 64、 65、 66等處開始。中間的地址在陣列中被隱含地用於SIMD訪問。X存 儲器和Y存儲器各表現為八個並列的存儲體。每個存儲器段接i!M目同的 地址並相同地進行操作。因此,數據被存儲為八個數據集。用於存儲器段 的地址和控制在每個時鐘周期(在指令流總線上)從左流向右,使得連續 的段在連續的時鐘周期進行響應。
圖7中示出了才艮據本發明的實施例的流單元72的示意性框圖。四位 (quad) D寄存器100 (D3:0 )接收流總線102上的輸入,並在流總線 102上提供輸出。D寄存器100與寄存器堆76中的所選寄存器進行交互。 流單元72還可以包括四位加法器110和四位A寄存器112 (A3:0 )。加法 器110接收流總線102上的輸入以及來自寄存器堆76中的所選寄存器的 輸入。結果被置於A寄存器112中,並且A寄存器112在流總線102上 提供輸出。流單元72還可以包括四位D,寄存器114 (D,3:0),該四位D' 寄存器接收BFD總線124上的輸入並在BFD總線124上提供輸出。流單 元72可以包括可配置門陣列(CGA) 117以及諸如傳送、比較、異或之 類的其它功能116,以提供靈活性。
流操作有兩種基本類型(l)M儲器進行流加載的操作,其利用諸 如跨所有段的移位之類的操作,以及(2)向存儲器進行流存儲的操作, 其利用諸如跨所有段的累加之類的操作。除了流存儲器訪問是按行訪問存儲器而不是按列訪問存儲器之夕卜,流存儲器訪問與SIMD存儲器訪問相類 似。
以下指令支持流操作
OP Rm = = [Jml; 〃流加載指令
[JmOP = = Rm; 〃流存儲指令
流加載指令從存儲器位置Jm處加載Rm寄存器的內容,並跨所有段 地執行操作OP (典型地是延遲線移位或廣播)。流存儲指令跨所有段地 對寄存器Rm執行操作OP (典型地是累加),並將結果存儲到存儲器位 置Jm處。"==,,符號表示流指令。OP操作表示可以在流操作期間執行 的若干類型的操作,例如累加、移位、傳送、廣播以及異或。流操作是在 流單元72中執行的,流單元72可以以與存儲器訪問相類似的方式來訪問 寄存器堆76,並且可以被看作替代性的存儲器訪問。
參照圖8A和8B來描述流加載^Mt或DFLOW操作。針對流加載操 作,每個計算引擎中的流單元72利用定義流加載路徑的四位D寄存器100 (D3:0 )。在第一計算引擎50中,流加栽操作包括從FMD總線94上的 存儲器進行加載。在其它計算引擎51、 52、 ...、 57中的每個計算引擎中, 流加載操作包括在流總線102上的段之間的流,其細節取決於指定的操作 OP以及指定的一個或多個寄存器。
考慮通過SH R6 = = [J3 + = 1給出的流移位IMt的示例,該示例實現 了每個段中三個周期的延遲。流加栽操作在連續的時鐘周期在計算陣列 32的連續段中開始。該指令包括在每個計算引擎中的以下操作。首先, 從寄存器堆76中將寄存器R6:4的內容讀取到四位D寄存器100中的位置 D2:0中。接著,將寄存器D0的內^位出到流總線102上。然後,將寄 存器D2:1的內容移位到寄存器D1:0中,並將輸入流移位到寄存器D2中。 在第一段(計算引擎50)中,輸入流來自FMD總線94上的存儲器。在 其它段中,輸入流來自流總線102上的在先段。最終,將寄存器D2:0的 內容寫入寄存器堆76中的寄存器R6:4中。
在流加載操作中,通過DFLOW指令的入口點來確定移位寄存器長 度。在流加載指令中,寄存器編號是指定的模數4。因此,SH R2和SH R14 均定義了長度為三個字的移位寄存器。此外,該指令可以指定一個至四個 字。被移位出內容的寄存器的數量與被移位入內容的寄存器的數量相同。 針對流加載操作的寄存器選項為R0、 Rl、 R1:0、 R2、 R2:l、 R2:0、 R3、R3:2、 R3:1以及R3:0。使用模4符號來指定較高編號的寄存器。
B類型的廣播指令R15:12 = = [mem將存儲器內容廣播到計算陣列 的每個段中的寄存器R15:12中。
參照圖9A和9B來描述^^儲操作或AFLOW操作。針對流存儲操 作,流單元72利用定義流存儲路徑的加法器110和四位A寄存器112 (A3:0)。流單元72在數據在計算陣列的段之間流動時對該數據進行操 作。主要的AFLOW操作是累加,但是可以利用其它操作,例如異或、 比較、取最大值/最小值、傳送、邏輯和移位。流可以來自寄存器堆76中 的任何寄存器。A寄存器112^^段之間的累加結果。最後一個段(計算 引擎57)的輸出被存儲在FMD總線94上的存儲器中。^W^可以對來 自計算陣列的每個段的Rn寄存器的內M行求和,使得AFLOW輸出是 計算陣列中的所有Rn寄存器的內容的總和。當AFLOW數據i^V段時, 該數據被與局部Rn寄存器的內斜目加,並在l^的周期中被輸出至接收 數據的下個段。對所有段重複此操作。在八個時鐘周期之後在最後一個段 處出現結果。例如,指令[3^1+ = = 110;對來自計算陣列的八個段中的每 個段的寄存器R0的內M行求和,並將結果存儲在存儲器中的地址adrl 處。AFLOW操作將去向計算陣列的第一段的流輸入初始化為零。
考慮如圖9A所示的、通過[13 + = 1==+ 115:4給出的流累加指令的 示例。流存儲操作在連續的時鐘周期在計算陣列32的連續的段中開始。 首先,從寄存器堆76中讀取寄存器R5:4的內容,並將寄存器R5:4的內 容與輸入^^目加。結果被暫時置於A寄存器112中。從A寄存器112輸 出的總和表示流輸入加上寄存器R5:4的內容的結果。
上文描述了流單元72與寄存器堆76中的所選寄存器相交互。例如, 可以將D寄存器100的內容寫入到寄存器堆76中的所選寄存器中,>^之 也可以將寄存器堆76的所選寄存器的內容寫入到D寄存器100中。此外, 可以將寄存器堆76中的所選寄存器的內容與流數據相加。在其它的實施 例中,流單元72並不與寄存器堆76相交互。替代地,計算塊74可以對 流單元72中的寄存器進M取和寫入。
參照圖IO來描述計算陣列32的計算引擎50-57之間的數據通路總線。 指令總線120連接在連續的計算引擎的指令管道70之間。指令i^指令 總線120上的計算陣列,並流經該計算陣列。指令l第一段(計算引擎 50),並被時鐘控制為在每個時鐘周期1每個連續的段。該總線提供用 於兩次或三次存儲器訪問的地址以及用於兩個計算操作的控制。計算陣列的大部分控制邏輯可以位於控制塊30中,以避免每個段中的重複。每個 周期中的三次存儲器訪問可以是針對X存儲器78或84、針對Y存儲器 80或86、以及針對DMA緩衝器82。 DMA總線22和24向計算陣列提 供DMA數據,可以通過若干輸入源之一來驅動該DMA數據,或者可以 將該DMA數據發送至若干輸出目的地。DMA數據被置於每個段中的兩 個四倍長字的DMA緩衝器82中。主處理器12可以使用DMA總線來直 接訪問計算陣列存儲器。DMA總線22和24可以用作兩個128位總線或 單個256位總線。DMA總線22和24可以經由緩衝器122而相耦合。
流總線102允許數據逐段地傳送、廣播或移位以及在需要多於八個的 段的情況下進行再循環。典型地,要共享的或要跨計算陣列地進行移位的 流數據在第一段中ii^陣列,並被跨所有段地進行移位。流總線102也用 於通過使計算結果在每個段中從左流向右來對該結果進行累加或以其它 方式進行操作。通常都需要用於移位功能的流以及用於累加或廣播功能的 流,但是不一定要在同一周期中。由於可以配置流操作以使其不需要在每 個周期進行,因此在在不同的周期中使用流總線102的情況下,可以將流
總線102用於DFLOW^Mt和AFLOW^Mt。在其它的實施例中,計算 陣列32可以包括兩個或更多個流總線,並且DFLOW操作和AFLOW操 作可以同時執行。
在未選擇分組時,使用FMD總線94來加載數據。FMD總線94還 用於將流數據存儲到存儲器中。組中的最後一個計算引擎提供數據以及存 儲位置的地址標記。對於加載,只有第一段提供地址,並且段l-7之一通 過將其數據驅動至段0來進行響應。對於無分組的存儲,最後一個段提供 數據和地址。FMD總線94經由緩衝器122耦合到控制塊30。
在選擇了兩個或四個計算引擎的組時,使用BFD總線124。 BFD總 線124被切換以支持段的分組。BFD總線124允許流數據返回至組的起 始處,並且還用於組內的流存儲器訪問。對於兩個或四個計算引擎的組, BFD總線124用於再循環、數據置亂以及流存儲器訪問。
DFLOW通路允許對對稱濾波器的抽頭進行預先相加以使性能加倍。 對稱濾波器具有關於濾波器的中心點對稱的係數。可以在將與相等的係數 相對應的數據值與所述係數相乘之前,對所述數據值進行預先相加,從而 減少所需要的相乘的數量。通過如圖11所示地使BFD總線124流經D' 3:0 寄存器,可以使預先相加所需要的抽頭可用。當使用16位數據時,將該 數據作為兩對長字來進行訪問。寄存器D'1:0和D1:0的內容在ALU中被相加,然後被與四個帶數位疊加和的短係數相乘。對於32位數據,每 段的抽頭數量可以是兩個、四個或八個。對於16位數據,最有效的使用 是每段有八個或十六個抽頭。為了實現回流移位寄存器,BFD總線124 的16位或32位被重定向為流經D'3:0寄存器。這是沿DFLOW通路的 相反方向移位。
在從X存儲器78或84或者Y存儲器80或86進行加載或存儲時, 存儲器地址總線118 (圖4)提供了流存儲器地址。該地址可以在相同的 周期用於組中的所有段,但是只有該組中的具有對應地址的段作出響應。
圖12中更詳細地示出了計算引擎之一。寄存器堆76可以是具有32 個至64個之間的寄存器的多埠寄存器堆。寄存器堆76支持乘法器卯、 ALU 92、流單元72、 MAC加法器96、以及存儲體78或84和80或86, 並且可以具有用於支持這些單元的十個埠 。乘法器90和流單元72在每 個周期中執M-改-寫。寄存器堆76還可以具有可用於單周期上下文切 換的陰影副本(shadow copy ),以支持在流式傳輸數據時的中斷。
乘法器卯可以是32 x 32定點乘法器,並且具有內置的相關功能和可 選的數據精度。乘法器可以執行具有實數數據類型和複數數據類型的四倍 的16位相乘。複數16位數據包括8位實數數據和8位虛數數據。對於 32x32相乘,需要附加的延遲周期。MAC加法器96和乘法器卯是半獨 立的單元。從乘法器至MAC加法器的通路可以包含可在MAC加法器中 分解的部分和。
通過用於在流操作期間對段進行分組的能力可以增強流體系結構的 通用性。這允許優化地管理需要較小數量的^Mt的任務。示例包括4抽頭 FIR (有限脈衝響應)操作和4x4矩陣操作。分組使用對BFD總線124 的特定組織,以選擇不同的存儲器段用於該目的。在逐個周期的基礎上通 過流指令來指定組操作。分組允許流操作在八個段的子集中進行。如圖8 所示,例如可以將前四個段(0-3)組合成第一組140,並且可以將後四個 段(4-7)組合成第二組142。每個組在該組內對其數據進行再循環,並且 每個組可以對不同的數據進行操作。計算陣列可以被細分成四組、每組兩 個,或者可以被細分成兩組、每組四個。分組也可用於提供一起工作的奇 數數量的段,例如三個或七個段。未使用的段應用自動補零。組控制可以 應用兩種類型的動作(a)為所有組所共用的數據,或(b)在組內使用 組存儲器數據的獨立的組。
使用適當的計算引擎中的開關104和106 (圖3)來配置組。圖13中示意性地示出了被配置為組140和142的計算陣列32的示例,其中每 個組具有四個計算引擎,並且每個組具有流數據的再循環。段3和4之間 的開關150將段3的流總線102的輸出端連接到段3中的BFD總線124, 並將段4的流總線102的輸入端連接到段4中的BFD總線124。此外, 段0中的開關152將段0的流總線102的輸入端連接到段0中的BFD總 線124。這允許組140和142內的獨立的流^Mt。
當應用需要多於八個的段時,計算陣列允許流操作再循環,從而產生 了很長的流陣列的效果。再循環的次數實際上是無限制的,但是吞吐量仍 然受到計算引擎的數量的限制,即,計算引擎是分時的。再循環將來自最 後一個段的DFLOW操作和AFLOW操作^J績到第一個段,或者從組的 末端反饋到組的起始處。在再循環序列結束時,將累加結果寫入存儲器。
置亂是在計算陣列的段之間互換存儲器數據的操作。可以以兩個、四 個或八個為一組來置亂數據或互換數據。該操作可用於當數據被順序地按 行存儲在存儲器中時前三級在段間互換數據的快速傅立葉變換。置亂操作 使用加載行高速緩存和存儲行高速緩存作為緩衝器。數據最初從每段中的 所選存儲器位置中被傳送至加載行高速緩存。然後,在置亂操作中,使用 流總線和BFD總線#*段的加栽行高速緩存的內容移動至下個段的存儲 行高速緩存中。針對期望的置亂移位而重複該操作。然後,將存儲行高速 緩存的內^儲到所有段中的指定存儲器位置。每次執行置亂操作時傳送 四倍長字。如果置亂是在最近的相鄰段之間進行的,則執行一次置亂操作。 如果置亂是在相隔四個間隔的段間進行的,則重複兩次置亂操作。如果置 亂是在相隔八個間隔的段間進行的,則重複四次置亂操作。
圖14示出了控制塊30的元件以及所述元件與計算陣列32和系統總 線之間的交互。控制塊30包括程序存儲器44、程序序列發生器42、整數 ALU JALU 38和KALU 40 、中斷控制器和中斷堆棧48 、 DMA控制器36 、 以及控制邏輯34。此外,數據存儲器46用於存儲參數以及在上下文切換 期間進行保存和恢復。數據存儲器46可以包括例如兩個1K字的小存儲 體。控制塊30還可以包括解碼單元60和數字振蕩器62。控制塊30中的 兩個局部總線允許ALU 38和40保存和恢復到數據存儲器46的存儲體的 內容。M/恢復可以同時在計算陣列32和控制塊30中進行操作,從而 使性能與主處理器相比加倍。
控制塊30向計算陣列32發出指令(加載/存儲和計算)。指令在計算 引擎50處i^計算陣列32,並在連續的時鐘周期順序地1每個計算引擎,直到所述指令在八個時鐘周期後離開。在指令中指定的流數據i^陣 列,並以相同的方式流經計算陣列。
DMA總線22隻連接到計算陣列32,並且主要用於將I/O數據傳送 至計算陣列32的存儲器。DMA總線22還可以用於從主存儲器14傳送 數據。DMA總線24可以連接到計算陣列32或控制塊30,並且允許在處 理器20和主存儲器14之間沿任一方向直接進#^取/寫入。所述傳送可 以經由DMA或程序控制。控制處理器12 (圖1)可以經由DMA總線24 訪問處理器20,以便對特定寄存器進行讀取或寫入、寫入中斷矢量或檢 查狀態、下載程序存儲器的內容、或者下載或上傳控制塊30或計算陣列 32中的數據存儲器的內容。
程序存儲器44與控制處理器12中可用的程序存儲器相比相對小。該 存儲器可以是4K個32位的字,並且可以被實現為高速緩存。程序存儲 器可以是256位寬,以允許每周期發出多達八個指令,包括用於IALU的 兩個指令、用於程序序列發生器的一個指令、用於計算陣列計算的兩個指 令、加上一個額外的用於即時數據的指令。數據存儲器46主要用於* 用於IALU的附加^故以及與上下文切換相關的*/恢復。程序序列發 生器42是在主處理器12中使用的程序序列發生器的簡化版本,並且每周 期取出多達八個指令。程序序列發生器包括程序計數器、分支硬體、分支 目標緩衝器、中斷矢量表等。JALU 38和KALU 40是具有32位的地址 空間的整數ALU。 JALU 38和KALU 40中的每個都可以訪問任一計算陣 列存儲體。中斷堆棧48允許多個中斷根據其優先級而順序地得到服務。
處理器20可以支持從DMA或直接從I/O埠經由FIFO流式傳輸 至流路徑的數據。流式傳輸的數據經過計算陣列32,並且在不從存儲器 加載所述流式傳輸的數據的情況下處理所述流式傳輸的數據。可以通過快 速上下文切換來支持數據流式傳輸。在數據流式傳輸中,I/O數據並不被 寫入存儲器中,而是被置於DMA緩衝器82中,以便直接由計算引擎進 行處理。
可以如圖15所示地使用DMA交織。在圖15中示出了用於每個段的 DMA緩衝器82。如圖15的第一行所示,為了按四進行交織,將兩個四 倍長字加載到每個緩衝器中的位置DMAB(0)中。然後將兩個四倍長字加 載到每個DMA緩衝器中的DMAB(1)中,將兩個四倍長字加載到每個 DMA緩衝器中的DMAB(2)中,並將兩個四倍長字加載到每個DMA緩衝 器中的DMAB(3)中。如圖15的第二行所示,為了按二進行交織,將四四倍長字加載到每個DMA緩衝器中的位置DMAB(2, O)中,然後將四個 四倍長字加載到每個DMA緩衝器中的位置DMAB(3,1)中。如圖15的第 三行所示,為了按對進行交織,將四個四倍長字加載到每個DMA緩衝器 中的位置DMAB(l, O)中,然後將四個四倍長字加載到每個DMA緩衝器 中的位置DMAB(3, 2)中。對於無交織的DMA傳送,按段順序地加載四 倍長字。為了執行SIMD加載, 一次對DMA緩衝器中的一段進行加栽。 此外,可以通過對DMA緩衝器組進行加載來執行組加栽。
計算陣列32的SIMD-FLOW體系結構良好地適合於按列或按行或按 行和列的組合來對數據集進行操作。以下示例舉例說明了這種^Mt。
圖16中示出了其中計算陣列的每一段在單個通道(八個通道DA至 DH )上進行SIMD型操作的逐列點積。在計算陣列的段之間不共享數據。 這在到達的數據集被按列布置並且沒有數據要共享的情況下良好地工作。 因此,在段0中,將係數CA0與數據DA0相乘,將係數CA1與數據DA1 相乘,等等,並且對結果進行累加以提供通道A總和。在其它段中執行 類似的操作。
圖17中示出了逐行逐列的處理。係數CA0-CA7被按行水平地布置 在存儲器中,而數據DAO-Dan被按列垂直地布置在存儲器中。使每個系 數利用DFLOW通路而跨整個陣列地流動(廣播)。係數連同對應的指令 一起流經每個段,使每個M似執行相同的^時間延遲的操作。這是有 共享係數的SIMD乘法累加操作的示例。對于波束形成,這允許由每個天 線(水平的)的所有時間樣本共享一組係數,而跨所有天線地(垂直地) 完成求和。如果對數據和係數進行互換,則可以實現多相FIR濾波器, 其中每一段根據相同的數據實現了該濾波器的不同相位。利用圖17的方 法可以完成矩陣相乘。 一個矩陣C的M廣播並被與第二矩陣D的八列 相乘。八個結果位於每一段的MAC中。
圖18中示出了逐行處理。圖18的示例示出了逐個矢量的相乘中的逐 行點積。在逐行操作中,數據或係數均不流動,而是在AFLOW通路中 對來自每一段的乘法器結果進行累加。每一段對其乘積和到達的總和進行 求和,並將結果傳遞至下一段。
圖19中示出了帶移位的逐行^Mt。圖19的示例示出了可以如何利用 逐行操作來實現FIR濾波器。數據^L存儲在移位寄存器(DFLOW通 路)中,以實現帶抽頭的延遲線。數據被保持在存儲器中,然後被加載到 流路徑中,被移位,並且可選地被返回到存儲器中。為了節省功率和存儲器帶寬,可以在多次移位之後執行加載操作和存儲操作。當在小數量的通
道上進行操作時,DFLOW數據可以被保留在寄存器堆中,並且不將該數 據複製到存儲器中。
圖20的示例中示出了具有移位和廣播的逐行處理。圖20示出了 FIR 濾波器實施方案的變型,其中數據如常地在延遲線中被移位,但是係數被 流廣播至所有段。在每個段中的累加寄存器MRO中原地完成累加,並利 用SIMD指令存儲這些結果。
圖1中示出了處理器20,並且在上文中將其描述為隨控制處理器一 起進行操作。但是,處理器20不限於這方面。處理器20的體系結構允許 作為被配置用於計算密集的應用的獨立處理器來進行IMt。
如上文所述,處理器20可以執行在連續的周期從計算引擎流向計算 引擎的流操作,可以在單獨的計算引擎內執行SIMD操作,並且可以執行 流操作和SIMD操作的組合。流操作由流指令驅動,SIMD操作由SIMD 指令驅動。可以根據正在執行的操作的類型來訪問存儲器。在計算陣列中, 多個計算引擎接^目同的^fr時間上有延遲的指令。處理器20包括公用 序列發生器和用於多個計算引擎的地址生成器。
在此描述的處理器體系結構實現了低功耗。該設計是緊湊的,並且使 用了短的總線長度和小驅動器。控制塊中的功耗被分攤到多個計算引擎 上。利用了小的存儲器,並且對於許多應用而言需要減少的數據移動。寄 存器堆可以具有256字的容量,使得需要較少的存儲器訪問。該設計可以 被優化用於深流水線和低電壓,而不是用於快速設備。
應當理解,在具有本發明的至少一個實施例的上述若干方面的情況 下,本領域的技術人員可以容易地想到各種更改、修改和改進。這種更改、 修改和改進旨在為本公開的 一部分,並且旨在在本發明的精神和範圍之 內。因此,上述描述和附圖僅>(31作為示例。
權利要求
1. 一種數位訊號處理器,包括控制塊,被配置用於基於存儲的程序來發出指令;以及計算陣列,包括兩個或更多個計算引擎,所述計算陣列被配置成使得發出的指令中的每個指令在連續的時段、在至少所述計算引擎的子集中的連續的計算引擎中執行。
2. 根據權利要求1所述的數位訊號處理器,其中所述計算陣列被配 置成使得發出的指令中的每個指令在連續的時段流經至少所述計算引擎 的子集中的、連續的計算引擎。
3. 根據權利要求2所述的數位訊號處理器,其中所述計算引擎中的 每個計算引擎包括:指令管道,被配置用於控制指令經過計算陣列的流動。
4. 根據權利要求3所述的數位訊號處理器,其中所述計算引擎中的 每個計算引擎還包括至少一個流單元,被配置用於對與發出的指令相關 聯的數據執行流操作。
5. 根據權利要求4所述的數位訊號處理器,其中所述計算引擎中的 每個計算引擎還包括 一個或更多個計算單元,用於執行數位訊號計算; 以及寄存器堆,用於保存數位訊號計算的操作數。
6. 根據權利要求5所述的數位訊號處理器,其中所述計算引擎中的 每個計算引擎還包括至少一個存儲器。
7. 根據權利要求2所述的數位訊號處理器,其中所述計算陣列還包 括至少一個存儲器,被配置用於隨所述計算引擎中的每個計算引擎一起 進行操作。
8. 根據權利要求7所述的數位訊號處理器,其中所述計算陣列還包 括耦合在存儲器與計算引擎之間的分級緩沖器,所述分級緩衝器具有有 延遲的段,所^J1遲與對應的計算引擎在計算陣列中的位置相對應。
9. 根據權利要求7所述的數位訊號處理器,其中所述計算陣列中的 計算引擎被配置用於對存儲器的內容執行逐列操作。
10. 根據權利要求7所述的數位訊號處理器,其中所述計算陣列中的 計算引?^配置用於對存儲器的內容執行逐行逐列的操作。
11. 根據權利要求7所述的數位訊號處理器,其中所述計算陣列中的計算引擎被配置用於對存儲器的內容執行逐行操作。
12. 根據權利要求7所述的數位訊號處理器,其中所述計算引擎中的 每個計算引擎還包括DMA緩衝器,其與所述存儲器相關聯,並被配置 用於將數據傳送至所述存儲器以及從所述存儲器傳送數據。
13. 根據權利要求l所述的數位訊號處理器,其中所述計算引擎中的 每個計算引擎具有流水線體系結構。
14. 根據權利要求2所述的數位訊號處理器,其中所述指令中的每個 指令在連續的時鐘周期流經所述連續的計算引擎。
15. 根據權利要求2所述的數位訊號處理器,其中所述計算陣列包括: 一個或更多個開關,被配置用於將計算引擎形成為組。
16. 根據權利要求2所述的數位訊號處理器,其中所述計算陣列被配 置用於使數據再循環經過計算引擎。
17. 根據權利要求2所述的數位訊號處理器,其中所述計算陣列包括 以串聯配置的八個計算引擎。
18. 根據權利要求7所述的數位訊號處理器,其中所述計算陣列包括 至少一個加載行高速緩存,用於保存來自存儲器行的數據以用於加載操 作。
19. 根據權利要求7所述的數位訊號處理器,其中所述計算陣列包括 至少一個存儲行高速緩存,用於*數據以用於存儲器行中的存儲操作。
20. 根據權利要求7所述的數位訊號處理器,其中所述計算陣列包括 一個或更多個總線,被配置用於在計算引擎之間傳送指令和數據。
21. 根據權利要求20所述的數位訊號處理器,其中所述計算引擎中 的每個計算引擎包括 一個或更多個總線,被配置用於向存儲器傳送信息 以及從存儲器傳送信息。
22. 根據權利要求5所述的數位訊號處理器,其中所述流單元被配置 用於從存儲器加載數據、以及使數據在連續的計算引擎中的一個或更多個 所選寄存器之間進行移位。
23. 根據權利要求5所述的數位訊號處理器,其中所述流單元被配置 用於M儲器加載數據、以及向所述計算引擎中的每個計算引擎中的一個 或更多個寄存器廣播數據。
24. 根據權利要求5所述的數位訊號處理器,其中所述流單元被配置 用於對來自連續的計算引擎中的一個或更多個所選寄存器的數據進行累 加以及存儲結果。
25. 根據權利要求7所述的數位訊號處理器,其中所述計算陣列被配 置用於訪問寬的存儲器字以用於流操作,並被配置用於訪問與每個計算引 擎相關聯的存儲器段以用於計算引擎內的操作。
26. 根據權利要求12所述的數位訊號處理器,其中所述DMA緩沖 器被配置用於4艮據指定的交織^iM"lt據ii行交織。
27. 根據權利要求2所述的數位訊號處理器,其中所述計算陣列被配 置用於響應於第一類型的指令而執行各個計算引擎內的操作,並被配置用 於響應於第二類型的指令而執行跨計算引擎的流操作。
28. 根據權利要求6所述的數位訊號處理器,其中所述計算引擎中的 每個計算引擎被配置用於在其存儲器中執行獨立的表查找。
29. —種用於數位訊號處理的方法,包括提供包括控制塊和計算陣列的數位訊號處理器,所述計算陣列包括兩 個或更多個計算引擎;在所述控制塊中基於所存儲的程序而發出指令;以及在連續的時段、在至少所述計算引擎的子集中的連續的計算引擎中執 行發出的指令中的每個指令。
30. 根據權利要求29所述的方法,其中對發出的指令中的每個指令 的執行包括執行流加載操作,所述流加載操作從存儲器位置處加栽寄存 器的內容並執行跨計算引擎的操作。
31. 根據權利要求29所述的方法,其中執行發出的指令中的每個指 令包括執行it^儲操作,所述流存儲操作執行跨計算引擎的操作並將結 果存儲到存儲器位置中。
32. 根據權利要求29所述的方法,其中執行發出的指令中的每個指 令包括形成計算引擎的組,以用於單獨的控制。
33. 根據權利要求29所述的方法,其中執行發出的指令中的每個指 令包括使數據再循環經過所述計算陣列的計算引擎。
34. 根據權利要求29所述的方法,其中執行發出的指令中的每個指令包括通過數據流式傳輸來向所述計算引擎提供數據,而不進行存儲器 訪問。
35. —種數位訊號處理器,包括 控制處理器;處理器,包括控制塊和計算陣列,所述控制塊被配置用於基於已存儲 的程序來發出指令,所述計算陣列包括兩個或更多個計算引擎,所述計算 陣列被配置成使得發出的指令中的每個指令在連續的時段、在至少所述計 算引擎的子集中的連續的計算引擎中執行;以及主存儲器,其能夠被所述控制處理器和所述處理器訪問。
36. 根據權利要求35所述的數位訊號處理器,其中所述計算陣列被 配置成使得發出的指令中的每個指令在連續的時段流經至少所述計算引 擎的子集中的、連續的計算引擎。
37. 根據權利要求36所述的數位訊號處理器,其中所述計算引擎中 的每個計算引擎包括指令管道,被配置用於控制指令經過計算陣列的流動。
38. 根據權利要求37所述的數位訊號處理器,其中所述計算引擎中 的每個計算引擎還包括流單元,被配置用於對與發出的指令相關聯的數 據執行流操作。
39. 根據權利要求38所述的數位訊號處理器,其中所述計算引擎中 的每個計算引擎還包括: 一個或更多個計算單元,用於執行數位訊號計算;以及寄存器堆,用於保存數位訊號計算的操作數。
40. 根據權利要求39所述的數位訊號處理器,其中所述計算引擎中 的每個計算引擎還包括至少一個計算陣列存儲器,被配置用於隨所述寄存器堆一起進行操作。
41. 根據權利要求38所述的數位訊號處理器,其中所述計算陣列還 包括至少一個存儲器,被配置用於隨所述計算引擎中的每個計算引擎一 起進行操作;其中所述計算陣列存儲器能夠被所述控制處理器所訪問。
42. 根據權利要求41所述的數位訊號處理器,其中所述計算陣列還包括分級緩衝器,其耦合在所述計算陣列存儲器與所述計算引擎中的每 個計算引擎之間。
43. 根據權利要求41所述的數位訊號處理器,其中所述計算陣列中的計算引擎被配置用於對所述計算陣列存儲器的內容執行逐列^Mt。
44. 根據權利要求41所述的數位訊號處理器,其中所述計算陣列中 的計算引擎被配置用於對所述計算陣列存儲器的內容執行逐行逐列的操 作。
45. 根據權利要求41所述的數位訊號處理器,其中計算陣列中的計 算引擎被配置用於對所述計算陣列存儲器的內容執行逐行操作。
46. 根據權利要求36所述的數位訊號處理器,其中所述計算陣列包 括 一個或更多個開關,被配置用於將所述計算引擎形成為組。
47. 根據權利要求36所述的數位訊號處理器,其中所述計算陣列被 配置用於使數據再循環經過所述計算引擎。
48. 根據權利要求41所述的數位訊號處理器,其中所述計算陣列包 括至少一個加載行高速緩存,用於保存來自存儲器行的數據以用於加載 操作。
49. 根據權利要求41所述的數位訊號處理器,其中所述計算陣列包 括至少一個存儲行高速緩存,用於M數據以用於存儲器行中的存儲操 作。
50. 根據權利要求40所述的數位訊號處理器,其中所述計算引擎中 的每個計算引擎被配置用於在其計算陣列存儲器中進行獨立的表查找。
全文摘要
公開了一種用於增強的計算能力的處理器體系結構。一種數位訊號處理器包括控制塊,被配置用於基於存儲的程序來發出指令;以及計算陣列,包括兩個或更多個計算引擎,所述計算陣列被配置成使得所發出的所述指令中的每個指令在連續的時段、在至少所述計算引擎的子集中的連續的計算引擎中執行。該數位訊號處理器可以隨控制處理器一起使用,或者可以作為獨立的處理器來使用。該計算陣列可以被配置成使得所發出的指令中的每個指令在連續的時段流經至少所述計算引擎的子集中的、連續的計算引擎。
文檔編號G06F9/38GK101482811SQ200910000709
公開日2009年7月15日 申請日期2009年1月7日 優先權日2008年1月9日
發明者道格拉斯·戈德 申請人:模擬裝置公司