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