新四季網

一種流數據處理方法及流處理器的製作方法

2023-11-04 02:11:37

專利名稱:一種流數據處理方法及流處理器的製作方法
技術領域:
本發明涉及數據處理領域,更具體地說,涉及一種流數據處理方法及流處理器。
背景技術:
電子技術的發展對處理器提出越來越高的需求,通常集成電路工程師通過增加 時鐘速度、硬體資源以及特殊應用功能來為使用者提供更多或更好的性能。這種做法在 一些應用場合,特別是移動應用時並不是太恰當。通常,處理器時鐘的原始速度的提高並 不能打破處理器由於訪問儲存器及外設速度的限制而帶來的瓶頸。對於處理器而言,增 加硬體需要大量的該處理器在使用中的更高的使用效率,由於ILP(Instruction Level Parallelism)的缺少,上述增加硬體通常是不可能的。而使用特殊的功能模塊又會帶來對 於該處理器應用範圍的限定以及對產品上市時間的拖延。特別是對於現在使用廣泛的流媒 體而言,因其使用的範圍較廣,尤其是在終端設備中,大都用於採用電池供電的可攜式移動 終端,其上述問題更加突出。單獨提高硬體性能,例如增加時鐘頻率、增加處理器中核的數 量,雖然可以在一定程度上解決問題,但是可能帶來成本及耗電量的增加,其代價太大,其 性價比不高。

發明內容
本發明要解決的技術問題在於,針對現有技術的上述成本及耗電量的增加,其代
價太大,性價比不高的缺陷,提供一種性價比較高的流數據處理方法及流處理器。 本發明解決其技術問題所採用的技術方案是構造一種流數據處理方法,包括如
下步驟 A)得到數據中指示其所屬任務的程序指針,並依據所述程序指針配置一個線程處 理引擎; B)多個線程引擎同時處理所述任務不同時段的數據或多個線程引擎同時處理所 述不同任務的數據; C)判斷是否還有數據未處理,如有,返回步驟A);如沒有,退出本次數據處理。 在本發明所述的流數據處理方法中,所述步驟A)進一步包括 Al)將同一個任務中不同時段的數據或多個任務的數據分別分配到不同的、空閒
的、通過虛擬直接存儲器訪問通道與所述線程處理引擎連接的本地存儲單元中。 在本發明所述的流數據處理方法中,所述步驟A)進一步包括 A2)將同一任務分配到所述多個線程處理引擎; A3)初始化每個線程處理引擎,通過設置存儲指針使其通過所述虛擬直接存儲器 訪問通道與一個本地存儲單元連接; A4)所述多個線程處理引擎同時處理與其連接的本地存儲單元中數據。
在本發明所述的流數據處理方法中,所述步驟A)進一步包括如下步驟
A2')將多個任務分別分配到所述多個線程處理引擎;
A3')初始化每個線程處理引擎,通過設置存儲指針使其通過所述虛擬直接存儲 器訪問通道與一個本地存儲單元連接; A4')所述多個線程處理引擎同時處理與其連接的本地存儲單元中數據。
在本發明所述的流數據處理方法中,所述步驟C)進一步包括
CI)釋放通過所述虛擬直接存儲器訪問通道與所述多線程處理引擎連接的本地存 儲單元; C2)判斷未連接到多個線程處理引擎的本地存儲單元中是否存在未處理數據,如
有,返回步驟A);如無,執行步驟C3); C3)釋放所有資源,結束本次數據處理。 在本發明所述的流數據處理方法中,所述線程處理引擎的數量為4個,所述本地 存儲單元的數量為4個或8個。 在本發明所述的流數據處理方法中,還包括如下步驟接收到所述任務或硬體發
出的中斷請求時,中斷分配給所述任務的線程處理引擎的處理,執行中斷處理程序。
在本發明所述的流數據處理方法中,還包括如下步驟當任意一個正在運行的線
程處理引擎需要等待較長時間,釋放該線程處理引擎,並將其配置到其他正在運行的同一
個或不同的任務中。
本發明還涉及一種用於處理流數據的處理器,包括 並行的多個線程處理引擎用於處理被分配給該線程處理引擎的任務或線程;
管理單元用於取得、判斷和控制所述多個線程處理引擎的狀態,將處於等待隊列 中的線程或任務分配到所述多個線程處理引擎中; 本地存儲區域用於存儲所述線程處理引擎處理的數據,配合所述線程處理引擎 完成數據處理。 在本發明所述的處理器中,還包括用於數據及線程緩衝、指令緩衝的內部存儲系 統以及用於存儲所述並行處理器的各種狀態的寄存器。 在本發明所述的處理器中,所述線程處理引擎包括算術邏輯運算單元以及與所述 算術邏輯運算單元對應的乘加器。 在本發明所述的處理器中,所述本地存儲區域包括多個本地存儲單元,所述本地
存儲單元在所述線程處理引擎工作時被配置對應於所述線程處理引擎。 在本發明所述的處理器中,所述線程處理引擎為4個,所述本地存儲單元為8個,
所述線程處理引擎工作時任意4個本地存儲單元被分別配置與所述線程處理引擎一一對應。
在本發明所述的處理器中,,所述管理單元包括 軟體配置模塊用於依據起始程序指針為所述線程處理引擎設置其任務; 任務初始化模塊用於設置所述任務的本地存儲區域指針和全局存儲區域指針; 線程配置模塊用於設置一個任務的優先級和運行模式; 中斷處理模塊用於處理所述流處理器接收到的外部和內部中斷; 暫停控制模塊用於控制所述線程處理引擎在處理任務時暫時停止或重新開始。 在本發明所述的處理器中,所述管理單元還包括線程控制寄存器,所述線程控制
寄存器進一步包括用於表明任務程序的起始物理地址的起始程序指針寄存器,用於表明本地存儲區域的起始地址的本地存儲區域起始基點寄存器,用於表明線程全局存儲區域的 起始地址的全局存儲區域起始基點寄存器以及用於設置該線程優先級、運行模式的線程配 置寄存器。 在本發明所述的處理器中,所述管理單元通過改變所述線程處理引擎的配置來改 變所述線程處理引擎運行的任務;所述配置包括改變所述起始程序指針寄存器的值或改變 指向所述本地存儲單元的本地存儲單元指針。 在本發明所述的處理器中,所述中斷處理模塊包括中斷處理單元,所述線程中斷
單元在其中斷寄存器控制位置位時控制所述內核或其他內核中的線程中斷。 實施本發明的一種流數據處理方法及流處理器,具有以下有益效果由於在一定
程度上提高了硬體,使用多個並行的算術邏輯單元及其對應的核內存儲系統,並且通過軟
件及線程管理單元對該處理器要處理的線程進行管理,使得該多個算術邏輯單元在工作任
務飽和時達到動態負載平衡,而在其任務不飽和時關掉其中部分算術邏輯運算單元,以節
省其電能消耗。因此,可以花費較小的代價來達到較高的性能,其性價比較高。


圖1是本發明流數據處理方法及流處理器實施例中方法流程圖;圖2是所述實施例中該處理器的結構示意圖;圖3是所述實施例中數據線程結構示意圖;圖4是所述實施例中任務線程結構示意圖;圖5是所述實施例中MVP線程結構示意圖;圖6是所述實施例中MVP線程結構示意圖;圖7是所述實施例中操作MVP線程及操作模式結構示意圖;圖8是所述實施例中MVP線程本地存儲結構示意圖;圖9是所述實施例中指令輸出結構示意圖;圖10是所述實施例中MVP線程緩衝配置示意圖;圖11是所述實施例中本地存儲單元與線程處理引擎配置示意圖。
具體實施例方式
下面將結合附圖對本發明實施例作進一步說明。 如圖1所示,在本發明一種流數據處理方法及流處理器實施例中,其流數據處理 方法包括如下步驟 步驟S11取得數據中的程序指針通常在處理器中,會出現同時需要處理不同任 務的情況,而在流數據處理中,這種情況也是常見的。例如,同時有兩路不同的流數據輸入, 需要同時對其處理。當然,可以先處理其中一個,再處理另一個,這樣的方法會帶來時間上 的延遲。而在對時間敏感的任務中,需要同時對上述流數據進行處理,這一點也是本實施例 的基礎。當然,在另外一種情況下,也可能只有一路數據輸入,只需要一個處理程序即可,在 這種情況下,當然也可以只使用一個線程處理引擎來處理該路數據,但其所用時間顯然比 用多個線程處理引擎同時處理該路數據要長。在本實施例中,輸入的數據在需要處理時其 中已經帶有程序指針,這些程序指針表示了處理這些數據所需要的程序所在。
步驟S12依據程序指針,不同任務分配到不同引擎或同一任務分別分配到不同引 擎在本步驟中,分為兩種情況, 一種情況是只有一個任務,而在本實施例中,有四個線程處 理引擎,如果只用一個線程處理引擎處理這一個任務,當然是可以的。但是,在這種情況下, 會延長處理時間,並且,剩下3個線程處理引擎未工作,也是一種浪費。因此,在本步驟中, 將該一個任務同時配置到4個線程處理引擎但處理不同數據,使得這4個線程處理引擎並 行處理該任務的不同時段數據,以較快的時間完成該任務。另一種情況是其數據分別屬於 多個任務,上述4個線程處理弓I擎需要同時處理所述多個任務但處理不同數據。當任務數 多於上述引擎數時,將4個任務配置到上述4個線程處理引擎,每個引擎處理一個任務,多 出來的任務排隊等候上述引擎處理完成當前任務後再配置;當任務數剛剛好是4個時,每 個引擎配置一個;當任務數小於4個而大於1個時,可以平均分配上述線程處理引擎或每個 任務分配一個線程處理引擎後再將剩下的引擎分配執行任務優先級較高的任務。
步驟S13數據存放於本地存儲單元在本步驟中,將當前任務的流數據按照其任 務或輸入的時間段不同,分別存放到所述本地存儲單元。當然,流數據是不斷輸入的,這些 不斷輸入的數據在經過輸入緩存之後被送入上述本地存儲單元,至於存入每個本地存儲單 元的數據量,可以是相同的,也可以是依據流數據的特點,輸入不同的數據量。在本實施例 中,各個本地存儲單元的大小相同,因此,輸入到其中的數據量也是相同的。並且,這些來自 不同流數據的數據存放在不同的本地存儲單元時,標記該本地存儲單元,使得可以識別出 這些本地存儲單元內存儲的數據來源。 步驟S14初始化引擎,分配本地存儲單元在本步驟中,開始初始化線程處理引 擎,準備處理數據,在對上述引擎初始化的過程中,較重要的一點,是將上述已經存儲有任 務數據的本地存儲單元配置到相應的線程處理引擎中,即使一個本地存儲單元通過虛擬 存儲通道與一個線程處理器連接。這些虛擬存儲通道在本實施例中是虛擬的DMA (Direct Memory Access,直接存儲器訪問)連接,其並不存在相應的硬體。上述相應的線程處理引 擎也就是已經與本地存儲單元連接的、取得任務執行代碼的線程處理引擎。值得一提的是, 在本實施例中,包括8個本地存儲單元,除4個被配置給線程處理單元外,其餘4個組成一 個隊列,等待配置到線程處理引擎中,這4個等待的本地存儲單元中存放有來自輸入緩存 的數據,當然,如果輸入緩存中已經沒有數據,上述本地存儲單元中也可以是空的,不存放 數據。此外初始化引擎的任務還包括對其賦予本地存儲區域指針和全局存儲區域指針,以 及設置其優先級和運行模式等等。 步驟S15處理數據在本步驟中,上述線程處理引擎處理其配置的本地存儲單元 中的數據。當然,處理是在其任務的執行代碼的控制下按照其要求執行的。值得一提的是, 在本步驟中,各線程處理引擎處理的數據可能是同一個任務中不同時段輸入的數據,也可 能是不同任務同一時段輸入的數據,還可能是不同任務不同時段輸入的數據。
步驟S16釋放通過虛擬存儲通道與線程處理引擎連接的本地存儲單元當一個線 程處理引擎處理完配置(即通過上述虛擬DMA通道連接)的本地存儲單元中數據之後,其 首先釋放配置的本地存儲單元並通過上述虛擬DMA通道連接將數據傳送到下一個線程處 理引擎,該本地存儲單元被釋放後,加入上述等待配置到線程處理引擎的隊列。與其他未分 配到線程處理引擎的本地存儲單元一樣,輸入緩存中的數據(如果有的話)將輸入到其中。
步驟S17所有任務處理完成?在本步驟中,判斷是否所有任務都已完成,如果完成,則執行步驟S18);如果沒有完成,則執行步驟S19)。 一個較為明顯的判斷標準,是判斷 在輸入緩存以及未配置到線程處理器中的本地存儲單元是否有數據,如果已經沒有數據, 即可判斷出任務是否處理完。 步驟S18退出本次數據處理在本步驟中,一個或多個任務已被處理完畢,其對應 的一個或多個本地存儲單元已被釋放,在此,釋放該任務對應的一個或多個線程處理引擎 及其他資源,退出該任務的本次數據處理。 步驟S19任務已配置?在本步驟中,如果有未處理完的任務,而該任務又已經配 置到線程處理器中,則返回執行步驟S13),為該已配置任務的線程處理器分配新的本地存 儲單元,再執行處理該本地存儲單元的數據;如果有未處理的任務,而該任務沒有配置到線 程處理引擎,則返回執行步驟S11),為該任務配置線程處理引擎,如果沒有空閒的線程處理 引擎,則等待空閒的線程處理引擎出現。在其他實施例中,如果任務已經配置,但仍有空閒 的線程處理引擎,也可以返回步驟S11),再次為該任務配置線程處理引擎,使其處理速度加 快。而判斷任務是否被配置,仍然是使用其數據中的程序指針,如果數據中的程序指針已經 被讀出過且配置到該指針的線程處理引擎未退出,則可以認為該任務已經被配置;否則,可 以判斷為該任務未被配置。 本發明還涉及一種用於處理流數據的處理器,如圖2所示,在本實施例中,該處 理器是一個並行多線程虛擬通道處理器(MVP, Multi-thread VirtualPipelined stream processor),所述處理器包括線程管理及控制單元1、指令取得單元2、指令輸出單元3、算 術邏輯單元[3:0]4、乘加器(Multiply-Add皿it) [3:0] 5、特定功能單元6、寄存器7、指令 緩衝單元8、數據及線程緩衝單元9、存儲器直接讀取單元10、系統總線接口 11以及中斷控 制器12 ;其中,線程管理及控制單元1用於管理、控制當前已準備好的線程、正在運行的線 程等,其分別與系統總線接口 11、指令取得單元以及中斷控制器12等單元連接;指令取得 單元2在上述線程管理及控制單元1的控制下,通過指令緩衝單元8及系統總線接口 ll取 得指令,並在線程管理及控制單元1的控制下將取得指令輸出到指令輸出單元3,同時,上 述指令取得單元2還與上述中斷控制器12連接,在中斷控制器12有輸出時接受其控制, 停止取指令;指令輸出單元3的輸出通過並行的總線與上述算術邏輯單元[3:0]4、乘加器 [3:0] 5以及特定功能單元6連接,將取得指令中的操作碼及操作數分別根據其需要傳送到 上述4個算術邏輯單元、4個乘加器以及特定功能單元6中;而上述算術邏輯單元[3:0]4、 乘加器[3:0]5以及特定功能單元6還分別通過總線與寄存器7連接,便於將其中狀態的 變化情況及時寫入上述寄存器7 ;寄存器7又分別與上述算術邏輯單元[3:0]4、乘加器 [3:0]5以及特定功能單元6連接(與上述連接不同),便於將其中狀態變化(不是由上述 三個單元引起的,例如,由軟體直接寫入的)寫入上述三個單元;數據及線程緩衝單元9連 接在上述系統總線接口 ll上,其通過上述系統總線接口 ll取得數據及指令,並存儲起來, 供其他單元(特別是取指單元2讀取),數據及線程緩衝單元9還分別與存儲器直接讀取單 元10、算術邏輯單元[3:0]4以及寄存器7連接。在本實施例中,一個線程處理引擎包括一 個算術邏輯單元和一個乘加器,因此,在本實施例中,就包括了 4個在硬體上並行的線程處 理引擎。 在本實施例中,線程管理及控制單元1進一步包括軟體配置模塊用於依據起 始程序指針為所述線程處理引擎設置其任務;任務初始化模塊用於設置所述任務的本地存儲區域指針和全局存儲區域指針;線程配置模塊用於設置一個任務的優先級和運行模 式;中斷處理模塊用於處理所述流處理器接收到的外部和內部中斷;暫停控制模塊用於 控制所述線程處理引擎在處理任務時暫時停止或重新開始;以及結束模塊,該結束模塊用 於退出本次數據處理,該模塊運行命令EXIT使得線程處理引擎退出數據處理。
在本實施例中,上述MVP的實現通道包括4個ALU (算術邏輯單元)、4個MAC (乘 加器,Multiply-Add unit)、以及一個128X32_bit的寄存器,此外,還包括一個64KB的指令 緩衝單元,一個32KB的數據緩衝單元,一個作為線程緩衝器的64KB的SRAM,以及一個線程 管理單元。 MVP支持兩種並行計算模式,數據並行計算模式及任務並行計算模式。在處理數據 並行計算模式時,MVP核在一個工作組(work group)中能夠最多處理4個工作項目(work item),這4個工作項目被映射到MVP核的4個並行的線程。在處理任務並行計算模式時, MVP核能夠最多處理8個工作組,每個工作組包括一個工作項目。這8個工作項目也被映 射到MVP核的8個並行的線程,從硬體的角度來看,與數據並行模式沒有不同。更為重要的 是,為達到最大的性價比,MVP核還包括一種專有的模式,即MVP線程模式,在這種模式中, 可以將最多8個線程配置為MVP線程模式,這8個線程表現為專用晶片通道層次。在上述 MVP模式中,上述8個線程都可以無中斷地運用於不同的、用於流處理或處理流數據的內核 中。典型地,在多種流處理運用中,上述MVP模式具有更高的性價比。 多線程及其運用是MVP與其他處理器不同的重點之一,其可以較為明確地達成一 個最終的較佳解決方案。在MVP中,多線程的目的如下提供任務並行和數據並行處理模 式,並提供針對流通道設計的、專有的功能並行模式;在MVP中,為達到最大硬體資源利用 而採用的負載平衡;減少依賴於存儲器、外設速度的延遲隱蔽能力。為了發掘使用多線程的 及其在性能上的先進性,MVP去掉或減少過多的特殊硬體,特別是為達到特殊應用而設置的 硬體。對比單獨提升硬體性能,例如升高CPU的時鐘速率,MVP具有更好的通用性及面對不 同運用時的靈活性。 在本實施例中,MVP支持3中不同的並行線程模式,包括數據並行線程模式、任務 線程並行模式以及MVP並行線程模式,其中,數據並行線程模式用於處理通過同一個內核 的不同的流數據,例如,在MVP內的同一個程序。(參見圖3),數據在不同的時間到達,其開 始處理的時間也不同。當這些線程運行時,即使處理他們的程序是同一個,也處於不同的操 作流程中。由MVP指令通道的觀點來看,與操作不同的程序沒有不同的地方,例如,不同的 任務。每個被放到同一個線程的數據集將是一個自包含(self-contained)的最小集合,例 如,不需要與別的數據集進行通訊。這就意味著數據線程不會被因與別的線程通訊而中斷。 每個數據線程表現為一個工作項目。在圖3中,包括對應於數據0到數據3的4個線程,其 分別是線程0到線程4(201、202、203、204),超標量執行通道206,線程緩衝單元208 (即本 地存儲單元),以及連接上述線程(數據)與超標量執行通道206的總線205,連接上述超 標量執行通道206與線程緩衝單元208(即本地存儲單元)的總線206。如上所述,在數據 並行模式下,上述4個線程實際上是相同的,其數據是該線程在不同時間的數據。其實質是 將不同時間輸入的同一個程序的數據在同一個時間處理。在這種模式下,上述本地存儲單 元是作為一個整體參加上述處理的。 任務線程並發地運行在不同的內核上。參見圖4,在作業系統的觀點看來,他們表現為不同的程序或不同的功能。為得到更高的靈活性,任務線程的特性完全上升到軟體分 類。每個任務運行在不同的程序上。任務線程不會被因與別的線程通訊而中斷。每個任 務線程表現為具有一個工作項目的工作組。在圖4中,包括與任務0到任務3對應的線程 0 301、線程1 302、線程2 303以及線程3 304,這些任務分別通過4個並行I/O線305與 超標量執行通道306連接,同時,上述超標量執行通道306還通過存儲總線307與本地存儲 區域連接,該本地存儲區域此時被分為4個部分(即4個本地存儲單元),分別是用於存儲 上述4個線程(301、302、303、304)所對應的數據的區域,他們分別是對應於線程0的區域 308、對應於線程1的區域309、對應於線程2的區域310以及對應於線程3的區域311。上 述每個線程(301、302、303、304)分別在其對應的區域(308、309、310、311)中讀取數據。
由專用集成電路的觀點來看,MVP線程表現為不同的功能通道層面。這也是其設計 點及關鍵特性。MVP線程的每個功能層面都類似運行中的不同的內核,正如任務線程一樣。 MVP線程的最大的特點是能夠依據其輸入數據狀態及輸出緩衝的能力自動激活或關閉其本 身。MVP線程的自動激活或關閉其本身的能力使得這種線程能夠從當前正在執行的通道中 移開已經完成的線程以及釋放硬體資源用於其它以激活的線程。這就提供了我們希望的負 載平衡能力。此外,還使得MVP線程可以激活比正在運行的線程更多的線程。其支持最多 8個已激活線程。這8個線程被動態管理,最多4個線程可以被運行,而其他4個已激活線 程則等待空閒的運行時段。參見圖5、圖6。圖5示出了在MVP模式下線程與本地存儲單元 之間的關係,其中,線程O 401、線程1 402、線程2 403和線程3 404分別通過並行的I/O 連接線405與超標量執行通道406連接,同時,這些線程(任務)還單獨與本地存儲單元中 被劃分到該線程的區域(407、408、409、410)連接,在這些區域之間,通過虛擬的DAM引擎連 接,這些虛擬的DMA引擎使得在需要的時候可以在上述被劃分的區域之間快速轉移其中的 數據;此外,這些被劃分的區域分別與總線411連接,而該總線411還與上述超標量執行通 道406連接。圖6從另一個角度描述了在MVP模式下的線程情況。在圖6中,包括4個正 在運行的線程,即運行線程O 501、運行線程1 502、運行線程2 503以及運行線程3 504, 這4個線程分別在上述4個ALU上運行,其分別通過並行的I/O線連接在超標量執行通道 505上;同時,上述4個正在運行的線程分別與準備完畢的線程隊列507連接(實際上,上 述4個運行線程就是由上述線程隊列507中取出的),由上面的描述可知,上述隊列中排列 有已經準備好但是尚未運行的線程,這些線程最多可以有8個,當然,根據實際情況,在其 中可能也不足8個;其中,這些準備好的線程可以是同一個內核(應用程式或任務,圖6中 的內核l 508到內核n 509)的,也可以不是,在極端的情況下,這些線程可能是分別屬於8 個不同的內核(應用程式或任務)的,當然,實際情況可能是其他數字,例如,可能是屬於4 個應用程式,而每個應用程式可能有兩個線程被準備(在線程的優先權相同的情況下)。該 隊列507中的線程是通過圖6中的命令隊列509由外部的主機而來的。
此外,如果一個特殊的耗時線程(time-consuming thread)在其循環緩衝隊列中 後續一個線程有需求,同一個線程(內核)可以在多個運行時間段之間被啟動。這種情況 下,該同一個內核可以一次啟動更多(的線程),以加快在循環緩衝器中後續的數據處理。
上述線程的不同的執行模式的組合增加了 4個線程同時運行的機會,這是一個較 為理想的狀態,其最大限度地增加指令輸出速率。 通過傳遞最好的負載平衡、最小的MVP與主機CPU之間的交互及任何數據在MVP及主機存儲器之間的移動,MVP線程是最具性價比的配置。 對於在多任務或/和多數據室全面利用硬體計算資源,負載平衡是有效的方法, MVP有兩個途徑管理負載平衡一是利用軟體使用其能用的任何方式(典型地,通過公共的 IPA)配置4個激活的線程(在任務線程模式和MVP線程模式,8個線程被激活);另一個途 徑是使用硬體在運行時間動態地更新、檢查及調整正在運行的線程。在軟體配置途徑中,正 如我們所知的大多數運用特性,初始時就需要針對特殊的運用設置其靜態的任務劃分;而 第二種方式要求硬體具有在不同的運行時間情況下動態調節的能力。上述兩種方式使得 MVP在最大硬體利用率的情況下達到最大的指令輸出帶寬。而延時隱藏(latency hiding) 則依賴於為保持4輸出速率的雙輸出能力。 MVP通過軟體配置線程控制寄存器來配置4個線程。每個線程包括一個寄存器配 置集合,該集合包括Starting_PC寄存器,Starting_GM_base寄存器,Starting_LM_base 寄存器以及ThreacLcfg寄存器。其中,Starting_PC寄存器用於表示一個任務程序的開始 物理位置;Starting_GM_baSe寄存器用於表示開始一個線程的線程本地存儲單元的基點 位置;StartingJiLbase寄存器用於表示開始一個線程的線程全局存儲器的基點位置(僅 限於MVP線程);而ThreacLcfg寄存器用於配置線程,該寄存器又包括Running Mode位, 其為0時表示普通,為1時表示優先;ThreacLPri位設置線程的運行優先級(0_7級); Thread Types位其為0時表示線程不可用,為1時表示是數據線程,為2時表示是任務線 程,為3時表示是MVP線程。 如果線程是數據線程或任務線程模式,當線程被激活後,線程將在下一個周期進 入運行狀態;如果線程是MVP模式,其線程緩衝及輸入數據的有效性將在每個周期被檢 查。 一旦他們已經準備好,該被激活的線程進入運行狀態。 一個進入運行狀態的線程將其 Starting—PC寄存器中的值上載到運行通道程序4個程序計數器(PC)中的一個,於是該線 程開始運行。關於線程管理及配置參見圖7。在圖7中,線程運行601,讀取或接受線程配 置寄存器602、線程狀態寄存器603以及I/O緩衝狀態寄存器604的值,並將其轉換為三個 控制信號輸出。其中,這些控制信號包括Launch-valid、Launch-tid和Launch infor。
當線程運行到EXIT指令時,該線程完成。 上述3種線程都只能通過軟體來關閉(disable) 。 MVP線程能夠在硬體結束現行 數據集時被置於等待狀態,等待該線程的下一個數據集被準備或送入其對應的本地存儲區 域。 在數據線程和任務線程之間MVP沒有任何內在的硬體連接,除了其共享的存儲器 和有API定義的隔層特徵(barrier feature)。這些線程中的每一個都被作為完全獨立的 硬體來對待。雖然如此,MVP提供線程間的中斷特性,於是,每個線程可以被任何一個其他 內核中斷。線程間中斷(inter-threadinterrupt)是軟體中斷,其通過運行的線程寫入軟 件中斷寄存器特別地中斷一個指定內核,包括其本身的內核。在這樣一個線程間中斷之後, 被中斷的內核的終端程序將被調用。 正如一個傳統的中斷處理程序一樣,在MVP中的中斷,如果其被使能並配置,對於
每一個被中斷的線程,將跳轉到一個事先設置好的中斷處理程序。如果軟體使能,每一個 MVP將響應外部中斷。中斷控制器處理所有的中斷。 對於MVP線程而言,所有的線程被視為一個硬體的專用集成電路通道,於是,每個中斷寄存器將用於調整單個的線程的睡眠和喚醒。線程緩衝器將作為一個線程間的數據通道。利用軟體來劃分MVP線程的規則,類似多處理器在任務並行計算模式下的特性,是任何通過所有線程的數據流都是單向的。以避免任何線程之間互鎖的機會。這就意味著具有數據前向或後向交換的功能都被作為一個內核保持在一個單項任務中。因此,當軟體初始化配置後,在運行時間內線程間的通訊將固有地通過虛擬DMA通道並由硬體自動處理。於是,該通訊變得對軟體透明並不會非必要地激活中斷處理程序。參見圖10,圖10中示出了 8個內核(應用程式或任務,K1到K8)及其對應的緩衝區域(Buf A到BufH),其中,上述緩衝區域之間通過虛擬DMA通道連接,用於數據的快速拷貝。 MVP有64KB的核內SRAM作為線程緩衝器,其被配置為16區,每區4KB。他們由每一個線程存儲器映射到本地存儲單元的一個固定空間。對於數據線程,這64KB的線程緩衝器是整個的本地存儲單元,就像一個典型的SRAM。由於最大有4個工作項目,例如,4個線程,屬於同一個工作組,對於線程處理,其可以被線性尋址。(參見圖3)
對於任務線程,上述64KB線程緩衝器可以被配置為最多8個不同的本地存儲單元集合,每個對應一個線程。(參見圖4)每個本地存儲單元的數值可以通過軟體配置來調節。
對於MVP線程模式,該64KB的線程緩衝器的配置方式只有如圖8所示的一種。正如任務線程模式,每個MVP線程具有其指向的、作為該內核本身的本地存儲單元的線程緩衝區,在如圖8所示4個線程被配置的情況下,每個線程有64KB/4 = 16KB的本地存儲單元。此外,該內核可以被視為一個虛擬的DMA引擎,該引擎能瞬間整體拷貝一個線程的本地存儲單元內容到下一個線程的本地存儲單元。該瞬間拷貝流數據通過虛擬DMA引擎在被激活線程中動態改變虛擬的物理映射而達到。每個線程具有其自身的映射而當該線程執行完畢時,線程將升級其自身的映射並依照下述準則重新開始執行如果本地存儲單元使能並有效(輸入數據到達),線程準備啟動;在線程完成、轉換映射到下一個本地存儲單元並標記現行映射的本地存儲單元有效(輸出數據準備為下一個線程);返回第一步。
在圖8中,線程0 701、線程1 702、線程2 703以及線程3 704分別與被映射作為其本地存儲單元的存儲區域(即705、706、707、708)連接,在上述這些存儲區域之間,通過虛擬DMA連接(709、710、711)連接。值得一提的是,在圖8中,該虛擬DMA連接(709、710、711)在硬體上不存在的,在本實施例中,通過改變線程的配置而實現上述存儲區域中的數據轉移,使得其從外面看起來好像存在連接一樣,但實際上並不存在硬體的連接。圖io中的Buf A到Buf H之間的連接也是如此。 注意當線程已經準備好啟動時,如果有其他準備好的線程,則可能仍未啟動,特別是在多於4個激活線程的情況下。 上述線程緩衝器的操作主要在MVP線程模式下提供一種不實施任何形式的數據拷貝而將較早線程的本地存儲單元內容搬移到較晚線程的本地存儲單元中的通道數據流模式,以節省時間和電力。 對於線程緩衝器的輸入和輸出流數據,MVP具有一個單獨的32-bit數據輸入和一個單獨的32-bit數據輸出通過外界接口總線連接到系統總線,於是,MVP核能夠通過load/store指令或虛擬DMA引擎傳輸數據到/由線程緩衝器。 如果一個特定的線程緩衝區被激活,意味著其與線程一起被執行且可以被線程程序使用。當一個外部訪問試圖寫入時,該訪問將會被失步緩衝延遲。
每個周期,對於單個線程而言,有4條指令被取出。在普通模式下,該取指時隙以循環的方式在所有正在運行的線程中傳遞。例如,如果有4個正在運行的線程,同一個線程將每隔4個周期取得一次指令;如果有4個正在運行的線程,其中有兩個處於優先模式,而該優先模式允許每周期輸出兩條指令,那麼,上述間隙將減少到2。於是,線程的取值選擇取決於循環的取指令牌、運行模式以及指令緩衝器的狀態。 MVP被設計為支持4個線程同時運行,最少線程運行的情況是2個線程。為此,並不是每個周期都取指,這給出足夠的時間為不受限制的任何種類的流程序建立下一個PC(程序計數器)指向地址。由於設計點是4個運行的線程,MVP在同一個線程下一次取指之前有4個周期,這為支路解析延遲提供了 3個周期。雖然,尋址很少會超過3個周期,MVP具有簡單支路預測策略用來減少3周期的支路解析延遲。其採用靜態的不採用(always-not-taken)策略。在4個運行線程的情況下,該簡單的支路預測策略將不會帶來導致可能錯誤的效果,因為線程的PC在取指的同時就進行支路解析。於是該特性將由設計性能決定其開關,不需要進一步的設定來適應不同的數量的正在運行的線程。
如圖9所示,MVP在每個周期內總能輸出4條指令(見圖8中的輸出選擇806,)是一個重點。為從線程指令緩衝器中找出4條準備好的指令,MVP將檢查8條指令,每個正在運行的線程(801、802、803、804)兩條,這些指令通過冒險檢查805傳送給輸出選擇806。通常情況下,如果不存在失配,每個正在運行的線程輸出一條指令。如果存在失配,例如,長時間等待實施結果,或者沒有足夠的正在運行的線程,於是這兩條每個線程被檢測的指令將探測同一個線程中的任何ILPs,以便於隱藏暫停的線程延時,達到最大的動態平衡。此外在優先模式下,為了達到最大的負載平衡,較高優先級線程2條已準備指令將先於較低優先級的一個被選擇。這將有利於較好地利用較高優先級線程的任意ILPs,這將縮短更多時間敏感任務的操作時間,以及增加能夠被用於任何線程模式的能力。 由於MVP有4個LAU、4個MAC,以及最多每周期4個輸出,通常沒有資源冒險,除非涉及固定功能單元。然而,和通常的處理器類似,其存在需要在指令能夠輸出前被清除的數據冒險。在任意兩個不同周期中輸出的指令之間,其可能具有長延時冒險(long latencyproduce-to-cons咖e),例如佔用n個周期的長延時指定功能單元的產生者指令(producerinstruction),或一個至少佔用兩個周期的負載指令(load instruction)。在這種情況下,任何消費者指令(consumer instruction)將失配知道該冒險被清除。如果為了負載平衡,需要在一個周期內發出多於一個的指令,或者為了延時隱藏的理由,在第二輸出指令發出時冒險檢查應該被執行,以確認在第一個指令上不會產生相關性。 延時隱藏(latency hiding)是MVP非常重要的特性。在MVP指令實施通道中,有兩種長延時的情況一個是特定功能單元另一個是訪問外接存儲器或10。在任何一種情況中,該請求線程將被置於暫停狀態,沒有指令輸出直到該長延時操作被完成。在此期間,將少一個線程在運行而其他正在運行的線程將填充空閒的時隙以利用額外的硬體,現假設每個特定功能單元僅與一個線程聯合,如果任何時候,有多於1個的線程在指定的特定功能單元運行,不用擔心特定功能單元資源的缺乏。此時不能由一個ALU去實施負載指令處理,如果負載指令失去一個緩衝,於是負載指令就不能佔用指定ALU的通道,因為ALU是通用執行單元,可以被其他線程自由使用。於是,對於長延時負載訪問,我們使用指令取消的辦法來釋放ALU的通道。長延時負載指令不需要和通常的處理器一樣在ALU的通道中等待,反之,其將在該線程從暫停狀態到再次運行時再發一次該指令。 如上所述,MVP不做任何支路預測,因此也沒有執行推測。於是,唯一導致指令取消的情形來自於負載延遲暫停,對於任何已知的緩衝丟失,在MVP的指令提交階段, 一個指令在當然可以完成的WB(Write Back)階段,為MEM(Data memory access)階段。如果緩衝丟失已經發生,佔用的負載指令取消,於是所有的由MEM階段上升到IS階段,即上述MEM加上EX (Execution oraddress calculation),其後續指令也將會取消。在線程指令緩衝中的線程將進入暫停狀態直到其被喚醒信號喚醒。其意味著在線程指令緩衝器的線程將不得不等待,直到其查找到EME階段。同時,指令指針的操作需要考慮任意一種指令取消的可能。
圖11是本實施例中的一個例子,其中4個線程處理引擎分別被配置執行4個任務,本地存儲單元l-4分別被配置到上述線程處理引擎l-4運作,其中分別存儲各任務的數據,此外,本地存儲單元5存儲的是任務2的數據,於是當線程處理引擎2處理完本地存儲單元2的數據並釋放本地存儲單元2時,通過管理單元(即圖2中的線程管理及控制單元1),將本地存儲單元5配置到線程處理引擎2,該線程處理引擎2直接處理本地存儲單元5的數據,不需要再將本地存儲單元5中的數據拷貝到本地存儲單元2中。這樣就節省了時間及拷貝時所用的電量。具有較高的性價比。當然,其他的線程處理引擎及其他的本地存儲單元的動作也是大致相同的。 以上所述實施例僅表達了本發明的幾種實施方式,其描述較為具體和詳細,但並不能因此而理解為對本發明專利範圍的限制。應當指出的是,對於本領域的普通技術人員來說,在不脫離本發明構思的前提下,還可以做出若干變形和改進,這些都屬於本發明的保護範圍。因此,本發明專利的保護範圍應以所附權利要求為準。
權利要求
一種流數據處理方法,其特徵在於,包括如下步驟A)得到數據中指示其所屬任務的程序指針,並依據所述程序指針配置一個線程處理引擎;B)多個線程引擎同時處理所述任務不同時段的數據或多個線程引擎同時處理所述不同任務的數據;C)判斷是否還有數據未處理,如有,返回步驟A);如沒有,退出本次數據處理。
2. 根據權利要求1所述的流數據處理方法,其特徵在於,所述步驟A)進一步包括 Al)將同一個任務中不同時段的數據或多個任務的數據分別分配到不同的、空閒的、通過虛擬直接存儲器訪問通道與所述線程處理引擎連接的本地存儲單元中。
3. 根據權利要求1所述的流數據處理方法,其特徵在於,所述步驟A)進一步包括 A2)將同一任務分配到所述多個線程處理引擎;A3)初始化每個線程處理引擎,通過設置存儲指針使其通過所述虛擬直接存儲器訪問 通道與一個本地存儲單元連接;A4)所述多個線程處理引擎同時處理與其連接的本地存儲單元中數據。
4. 根據權利要求1所述的流數據處理方法,其特徵在於,所述步驟A)進一步包括如下 步驟A2')將多個任務分別分配到所述多個線程處理引擎;A3')初始化每個線程處理引擎,通過設置存儲指針使其通過所述虛擬直接存儲器訪 問通道與一個本地存儲單元連接;A4')所述多個線程處理引擎同時處理與其連接的本地存儲單元中數據。
5. 根據權利要求3或4所述的流數據處理方法,其特徵在於,所述步驟C)進一步包括 CI)釋放通過所述虛擬直接存儲器訪問通道與所述多線程處理引擎連接的本地存儲單元;C2)判斷未連接到多個線程處理引擎的本地存儲單元中是否存在未處理數據,如有,返 回步驟A);如無,執行步驟C3);C3)釋放所有資源,結束本次數據處理。
6. 根據權利要求5所述的流數據處理方法,其特徵在於,所述線程處理引擎的數量為4 個,所述本地存儲單元的數量為4個或8個。
7. 根據權利要求3或4所述的流數據處理方法,其特徵在於,還包括如下步驟接收到 所述任務或硬體發出的中斷請求時,中斷分配給所述任務的線程處理引擎的處理,執行中 斷處理程序。
8. 根據權利要求3或4所述的流數據處理方法,其特徵在於,還包括如下步驟當任意 一個正在運行的線程處理引擎需要等待較長時間,釋放該線程處理引擎,並將其配置到其 他正在運行的同一個或不同的任務中。
9. 一種流數據處理器,其特徵在於,包括並行的多個線程處理引擎用於處理被分配給該線程處理引擎的任務或線程; 管理單元用於取得、判斷和控制所述多個線程處理引擎的狀態,將處於等待隊列中的 線程或任務分配到所述多個線程處理引擎中;本地存儲區域用於存儲所述線程處理引擎處理的數據,配合所述線程處理引擎完成數據處理。
10. 根據權利要求9所述的流數據處理器,其特徵在於,還包括用於數據及線程緩衝、 指令緩衝的內部存儲系統以及用於存儲所述並行處理器的各種狀態的寄存器。
11. 根據權利要求9所述的流數據處理器,其特徵在於,所述線程處理引擎包括算術邏 輯運算單元以及與所述算術邏輯運算單元對應的乘加器。
12. 根據權利要求9所述的流數據處理器,其特徵在於,所述本地存儲區域包括多個本 地存儲單元,所述本地存儲單元在所述線程處理引擎工作時被配置對應於所述線程處理引 擎。
13. 根據權利要求12所述的流數據處理器,其特徵在於,所述線程處理引擎為4個,所 述本地存儲單元為8個,所述線程處理引擎工作時任意4個本地存儲單元被分別配置與所 述線程處理引擎一一對應。
14. 根據權利要求9-12任意一項所述的流處理器,其特徵在於,所述管理單元包括 軟體配置模塊用於依據起始程序指針為所述線程處理引擎設置其任務; 任務初始化模塊用於設置所述任務的本地存儲區域指針和全局存儲區域指針; 線程配置模塊用於設置一個任務的優先級和運行模式;中斷處理模塊用於處理所述流處理器接收到的外部和內部中斷; 暫停控制模塊用於控制所述線程處理引擎在處理任務時暫時停止或重新開始。
15. 根據權利要求14所述的流數據處理器,其特徵在於,所述管理單元還包括線程控 制寄存器,所述線程控制寄存器進一步包括用於表明任務程序的起始物理地址的起始程 序指針寄存器,用於表明本地存儲區域的起始地址的本地存儲區域起始基點寄存器,用於 表明線程全局存儲區域的起始地址的全局存儲區域起始基點寄存器以及用於設置該線程 優先級、運行模式的線程配置寄存器。
16. 根據權利要求15所述的流數據處理器,其特徵在於,所述管理單元通過改變所述 線程處理引擎的配置來改變所述線程處理引擎運行的任務;所述配置包括改變所述起始程 序指針寄存器的值或改變指向所述本地存儲單元的本地存儲單元指針。
17. 根據權利要求16所述的流數據處理器,其特徵在於,所述中斷處理模塊包括中斷 處理單元,所述線程中斷單元在其中斷寄存器控制位置位時控制所述內核或其他內核中的 線程中斷。
全文摘要
本發明涉及一種流數據處理方法,包括如下步驟得到數據中指示其所屬任務的程序指針,並依據所述程序指針配置一個線程處理引擎;多個線程引擎同時處理所述任務不同時段的數據或多個線程引擎同時處理所述不同任務的數據;判斷是否還有數據未處理,如有,返回上述第一步驟;如沒有,退出本次數據處理。本發明還涉及一種用於處理流數據的處理器。實施本發明的一種流數據處理方法及流處理器,具有以下有益效果可以花費較小的代價來達到較高的性能,其性價比較高。
文檔編號G06F9/46GK101739242SQ200910188409
公開日2010年6月16日 申請日期2009年11月27日 優先權日2009年11月27日
發明者馮凱敏, 勞詠儀, 梅思行, 王世好, 白華 申請人:宇盛通信科技(深圳)有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀