專利名稱:多線程虛擬流水線處理器的線程控制和調(diào)用方法及其處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器領(lǐng)域,更具體地說,涉及一種多線程虛擬流水線處理器的線程控制和調(diào)用方法及其處理器。
背景技術(shù):
對于一般的多核處理器而言,通常其線程的管理都是由CPU線程管理單元分配到其多個內(nèi)核上運行;在層? (Multi Thread Virtual Pipeline ,多線程虛擬流水線 )處理器中,在一些情況下,將GPU的線程等同為CPU線程處理,其CPU線程和GPU線程都是通過CPU線程管理單元進行調(diào)用和分配的。一般來講,這些線程在上述內(nèi)核上運行時,可能會產(chǎn)生一些新的線程調(diào)用,例如,渲染線程;在現(xiàn)有技術(shù)中,這些被調(diào)用的線程也會由上述CPU線程管理單元進行管理,也就是說,當上述新的線程由運行的線程調(diào)用時,被調(diào)用的新線程會被加入到上述CPU線程管理單元的運行隊列,并和其他在該隊列中的線程一起等待出現(xiàn)空閑的內(nèi)核,并在空閑的內(nèi)核出現(xiàn)且輪到其運行時才能在上述內(nèi)核上運行。此外,在這些新線程要求硬件加速時,由于其被作為CPU線程對待,在一些情況下、例如,較長的等待時間可能導(dǎo)致出現(xiàn)內(nèi)核的定時器中斷,此時,需要將運行這些線程(產(chǎn)生新線程調(diào)用的線程)運行的內(nèi)核讓給別的線程使用,這就涉及到復(fù)雜的數(shù)據(jù)的存儲及取出動作,不僅操作復(fù)雜,整個線程的完成時間也進一步拖延。所以,這些被調(diào)用的新線程在現(xiàn)有的處理方法下,需要等待的時間可能較長、操作較為復(fù)雜。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述等待時間較長、操作較為復(fù)雜的缺陷,提供一種等待時間較短、操作簡單的多線程虛擬流水線處理器的線程控制和調(diào)用方法及其處理器。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是構(gòu)造一種多線程虛擬流水線處理器的線程控制和調(diào)用方法,包括如下步驟
A)將CPU線程運行隊列中的線程直接依次分別分配到多線程虛擬流水線處理器的多路并行硬件線程時隙中運行;
B)所述運行的線程產(chǎn)生屬于其自身的硬件線程調(diào)用指令到硬件線程控制單元;
C)所述硬件線程控制單元將所述ithread(硬件線程)的調(diào)用指令按照接收時間形成其程序隊列,調(diào)用并準備所述ithread ;
D)所述ithread按照其在所述硬件線程控制單元中的隊列順序依次在所述多線程虛擬流水線處理器的、空閑的多路并行硬件線程時隙中運行。在本發(fā)明所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法中,所述ithread為硬件線程,所述ithread包括圖像引擎、DSP或/和通用圖像處理器中要求硬件加速的線程。
在本發(fā)明所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法中,所述步驟A)進一步包括如下步驟
Al)判斷所述硬件線程控制單元中是否有有效且未執(zhí)行完的硬件線程,如有,執(zhí)行步驟A2);否則,執(zhí)行步驟A3);
A2)將當前空閑的多路并行硬件線程時隙由CPU線程管理單元中移除,禁止該并行硬件線程時隙的線程定時器中斷,并將該空閑的多路并行硬件線程時隙配置給所述硬件線程控制單元控制;
A3)等待并返回該并行硬件線程時隙空閑的信息到CPU線程管理單元在本發(fā)明所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法中,所述步驟C)中,進一步包括如下步驟
Cl)取出所述硬件線程控制單元程序隊列中排列在前的ithread ;
C2)將得到的可執(zhí)行函數(shù)分配到所述空閑的硬件線程時隙運行。在本發(fā)明所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法中,所述步驟C)中的程序隊列排列規(guī)則為先進先出。在本發(fā)明所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法中,還包括如下步驟
E)當所述ithread執(zhí)行完畢或進入等待使其繼續(xù)執(zhí)行的事件發(fā)生時,所述ithread退出其運行的硬件線程時隙并使能該時隙的線程計時中斷。在本發(fā)明所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法中,還包括如下步驟
F)所述硬件線程控制單元檢測其程序隊列中的ithread的有效狀態(tài)是否被清除,如是,清除所述ithread ;否則,保持所述ithread。在本發(fā)明所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法中,在所述步驟B)中,當所述運行的線程在所述處理器的內(nèi)核模式下運行時,其驅(qū)動程序直接產(chǎn)生所述ithread調(diào)用指令并送到所述硬件線程控制器的命令隊列中。在本發(fā)明所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法中,在所述步驟
B)中,當所述運行的線程在所述處理器的用戶狀態(tài)模式下運行時,通過創(chuàng)建一個操作系統(tǒng)SMP( Symmetrical-Multi-Processing)調(diào)度器接受的虛擬 pthread,所述虛擬 pthread 運行產(chǎn)生所述ithread調(diào)用指令并送到所述硬件線程控制器的命令隊列中,其中,所述pthread為操作系統(tǒng)線程。本發(fā)明還涉及一種實現(xiàn)上述方法的多線程虛擬流水線處理器,包括多個并行的、用于運行線程的處理器硬件內(nèi)核,用于管理所述處理器中線程并將這些線程分配到所述處理器硬件內(nèi)核中運行的系統(tǒng)線程管理單元,還包括用于接收并管理運行中的線程產(chǎn)生的ithread,并將所述ithread分配到空閑的處理器硬件內(nèi)核上,并以協(xié)處理器線程方式運行的硬件線程管理單元;所述硬件線程管理單元分別與所述多個并行的處理器內(nèi)核連接,其中,所述ithread為硬件線程。在本發(fā)明所述的多線程虛擬流水線處理器中,所述硬件線程管理單元通過所述處理器硬件內(nèi)核上正在運行的線程發(fā)出的ithread調(diào)用指令;所述硬件線程管理單元還將被調(diào)用并準備就緒的線程發(fā)送到所述多個處理器硬件內(nèi)核上運行。
在本發(fā)明所述的多線程虛擬流水線處理器中,所述硬件線程管理單元還通過第三數(shù)據(jù)線將其中被調(diào)用線程的狀態(tài)傳送到所述系統(tǒng)線程控制單元。在本發(fā)明所述的多線程虛擬流水線處理器中,所述多個處理器硬件內(nèi)核還分別通過各自的第四數(shù)據(jù)線將處于用戶狀態(tài)下運行的線程發(fā)出的pthread/ithread線程調(diào)用指令傳輸?shù)剿鱿到y(tǒng)線程控制單元。在本發(fā)明所述的多線程虛擬流水線處理器中,所述多個處理器硬件內(nèi)核和所述系統(tǒng)線程控制單元之間還分別通過傳輸所述各硬件內(nèi)核定時器中斷信號的定時器中斷請求信號線連接。實施本發(fā)明的多線程虛擬流水線處理器的線程控制和調(diào)用方法及其處理器,具有以下有益效果由于新產(chǎn)生的硬件線程直接由硬件線程控制單元調(diào)用,不需要再到系統(tǒng)線程管理單元排隊;內(nèi)核空閑時馬上能夠運行上述硬件線程;這使得其線程等待的時間大大減??;同時,遇到定時器中斷的可能性也大大減小,使得操作也較為簡單。
圖I是本發(fā)明多線程虛擬流水線處理器的線程控制和調(diào)用方法及其處理器實施例中線程控制方法的流程 圖2是所述實施例線程控制方法中判斷硬件線程是否存在的流程 圖3是所述實施例線程控制方法中硬件線程時隙上線程的運行及轉(zhuǎn)換流程示意 圖4是所述實施例中應(yīng)用程序涉及計算量較為集中的部分的一種加速方式;
圖5是所述實施例中應(yīng)用程序涉及計算量較為集中的部分的另一種加速方式;
圖6是所述實施例中處理器的結(jié)構(gòu)示意圖。
具體實施例方式下面將結(jié)合附圖對本發(fā)明實施例作進一步說明。如圖I所示,在本發(fā)明的多線程虛擬流水線處理器的線程控制和調(diào)用方法及其處理器實施例中,其線程控制和調(diào)用方法包括如下步驟
步驟SlOl將系統(tǒng)運行隊列中的線程分配到多路并行硬件線程時隙中運行在本實施例中,MVP開始運行時或在該MVP出現(xiàn)并行硬件線程時隙空閑時,系統(tǒng)的監(jiān)控程序(具體來講是CPU的線程管理單元)需要將其運行隊列中的線程分配到該MVP的并行硬件線程時隙中運行;在本實施例中,上述各并行硬件線程時隙在某種意義上來講相當于一個處理器內(nèi)核,而整個MVP而言,相當于一個在硬件上具有多個內(nèi)核的并行處理器;在本實施例中,這些內(nèi)核與通常的處理器內(nèi)核的最大不同之處在于其可以在系統(tǒng)(即整個MVP的控制系統(tǒng)或監(jiān)控程序)的控制下將所有運行不同的線程,這些線程既可以是傳統(tǒng)意義上的CPU線程,也可以是傳統(tǒng)意義上的GPU線程。在系統(tǒng)開始運行時,所有的多路并行硬件線程時隙都是空閑的,而在系統(tǒng)運行之后,當一個多路并行硬件線程時隙空閑出來時,都會執(zhí)行本步驟。步驟S102運行的線程產(chǎn)生硬件線程(ithread)的調(diào)用指令到硬件線程控制單元在本實施例中,雖然一些系統(tǒng)線程在運行中不會產(chǎn)生新的線程或硬件線程,但是,并不是所有的運行線程都是如此;實際上,大多數(shù)GPU線程都會在運行時產(chǎn)生硬件線程,特別是如果這些GPU線程與渲染有關(guān)時;如果運行的線程并不產(chǎn)生新的硬件線程,則該線程在沒有外部中斷的情況下將會一直在分配的并行硬件線程時隙中運行,直到該線程完成為止;而另一種情況就是本步驟中的運行的線程(通常是GPU線程)產(chǎn)生了硬件線程,當然,在本步驟中,實際上是產(chǎn)生了硬件線程的調(diào)用指令,這些產(chǎn)生的硬件線程調(diào)用指令將會被發(fā)送到硬件線程控制單元。在本實施例中,上述硬件線程為ithread ;這些ithread包括圖像引擎、DSP或/和通用圖像處理器中要求硬件加速的線程。步驟S103 硬件線程控制單元準備好該硬件線程由上面的步驟內(nèi)容可以得知,上述運行線程由ithread的調(diào)用指令產(chǎn)生,這些ithread被送到硬件線程控制單元的程序隊列中進行排隊;硬件線程控制單元依次將其隊列中的線程調(diào)用到并行硬件線程處理時隙中運行。步驟S104準備好的硬件線程按照其順序在空閑的多路并行硬件線程時隙中運行在本步驟中,將上述硬件線程控制單元準備好的ithread按照其順序在空閑的并行硬件線程處理時隙中運行。值得一提的是,這些并行硬件線程處理時隙可以是由于操作系統(tǒng)線程控制單元的運行隊列中沒有線程而空閑下來的,也可以是由于上述硬件線程控制單元中存在ithread而由操作系統(tǒng)的控制中停止線程運行而交給硬件線程控制單元控制的;不管哪種情況,該并行硬件線程處理時隙只要開始運行上述ithread,操作系統(tǒng)就失去該線程時隙的控制權(quán),甚至該時隙的定時器中斷也會被禁止,直到設(shè)定的硬件線程退出的標志位出現(xiàn)才會將該時隙的控制權(quán)返還CPU。這樣設(shè)置的目的是使得運行ithread的時隙盡量不受操作系統(tǒng)的干擾,以最快的速度完成上述ithread的運行。在一些情況下,上述步驟S103和步驟S104可能融合為一個步驟或者可以不具有步驟S103而直接執(zhí)行步驟S104.
在現(xiàn)有技術(shù)中,最初OS直接分配線程到MVP的并行的多硬件線程處理時隙,這個動作通過線程運行隊列實現(xiàn),并不通過THDC ;這些線程作為CPU的線程運行且對于OS而言是可以觀察和控制的(也包括運行這些線程的時隙);其中,通過傳統(tǒng)的pthread API創(chuàng)建的線程(即硬件線程)到OS的運行隊列。這些特殊的線程在隊列中被OS直接分配到上述并行的多硬件線程處理時隙中。此時,這些多硬件線程處理時隙與SMP中的“內(nèi)核”相似。在本實施例中,上述ithread可以通過兩種方式創(chuàng)建,在內(nèi)核模式中,直接由THDC中的ithread創(chuàng)建,此時,ithread跳過OS的運行隊列;在用戶模式中,通過OS的隊列運行虛擬pthread,通過該pthread運作ithread而創(chuàng)建硬件線程。不管哪種方式,這些ithread在多硬件線程處理時隙中均作為脫離OS控制的協(xié)處理器線程運行的,這使得這些硬件線程在運行是受到OS干擾最小。由于在本實施例中,ithread —旦被創(chuàng)建到THDC,就有較OS線程更高的優(yōu)先級,THDC將使用一定數(shù)量的硬件線程處理時隙去處理這些硬件線程,所以,一旦THDC中存在有效且未完成的硬件線程,OS調(diào)度程序?qū)⒉粫⑵渥陨黻犃兄械木€程分配到相應(yīng)的并行硬件線程處理時隙,也就是說,此時,該硬件線程處理時隙由THDC控制。Ithread調(diào)動指令是由一個由程序員調(diào)用的類pthread API (pthread-like API)支持的,其可以直接在用戶模式中調(diào)用或通過一個應(yīng)用驅(qū)動程序調(diào)用。在本實施例中,ithread通過一個用戶API在THDC上運行線程。開始時,通常處于內(nèi)核模式(管理員模式),當ithread創(chuàng)建線程時,創(chuàng)建線程到THDC的命令隊列。THDC較OS的線程具有較高的優(yōu)先級。Ithread的產(chǎn)生能夠由運行在內(nèi)核模式的處理器上的一個驅(qū)動程序或直接由一個運行在用戶模式的處理器上的應(yīng)用程序?qū)崿F(xiàn)。在前一種情況下,ithread將直接被創(chuàng)建到THDC,且當其上載時,這些線程作為一個沒有系統(tǒng)干涉的嵌入式程序運行;在后一種情況下,ithread將通過一個被建立在內(nèi)核的運行隊列中的虛擬pthread,然后該pthread運行并創(chuàng)建一個真正的ithread到THDC ;這個額外的動作僅建立一個記錄在OS中,為其TLB異常處理程序可以處理TLB異常,這些異常是在用戶模式下ithread在MVP的并行多硬件線程處理時隙上作為協(xié)處理線程運行時產(chǎn)生的。在內(nèi)核的調(diào)度程序要將其運行隊列中的任何一個準備就緒的線程作為操作系統(tǒng)線程分配到上述并行多硬件線程處理時隙中運行時(通常的情況下,意味著線程處理時隙出現(xiàn)空閑),總要檢查THDC中是否有準備就緒的線程,通過傳統(tǒng)的調(diào)度機制,如果THDC中有準備好的線程在等待,系統(tǒng)的調(diào)度程序?qū)⑼顺鲈鹊挠布€程處理時隙,不再放入任何新的系統(tǒng)線程(CPU線程)。重要的一點是,系統(tǒng)調(diào)度程序在退出之前,將關(guān)閉(該時隙)的定時器中斷,允許ithread在沒有定時器中斷的情況下拿到該線程處理時隙的全部控制權(quán)。并且該定時器中斷只能在ithread退出時使能。系統(tǒng)調(diào)度程序退出后,THDC將得到空閑的硬件線程時隙,并將其用于運行準備好的ithread ;當一個ithread完成或等待使其繼續(xù)運行的任何事件時,該ithread將退出相應(yīng)的硬件線程處理時隙;當一個ithread的有效狀態(tài)被 清除時,該ithread將THDC。一個CPU線程將服從于當其準備開始運行并由系統(tǒng)調(diào)度程序檢查THDC狀態(tài)時發(fā)現(xiàn)的準備好的ithread線程。所有的ithread線程最終創(chuàng)建到MVP的THDC中,不管其是在內(nèi)核模式下創(chuàng)建的還是在用戶模式下創(chuàng)建的。圖2從一個并行硬件線程時隙的角度示出了該并行硬件線程時隙在分配到CPU線程控制單元或THDC的情況,其包括如下步驟
步驟S201定時器中斷在本步驟中,該硬件線程時隙出現(xiàn)定時器中斷,正如上面的描述所記載的一樣,硬件線程時隙在系統(tǒng)開始運行時或在其上運行的線程已經(jīng)運行完成或退出時,均會執(zhí)行定時器中斷。也就是說,定時器中斷時CPU系統(tǒng)控制下的硬件線程時隙接收一個新線程開始運行的開始。步驟S202運行隊列中有線程在等待?如是,執(zhí)行步驟S203 ;否則,跳轉(zhuǎn)執(zhí)行步驟S205 ;在本步驟中,運行隊列指的是系統(tǒng)調(diào)度程序中的運行隊列。步驟S203環(huán)境重存本步驟中執(zhí)行的是通常的線程運行時都會執(zhí)行的線程的環(huán)境重存(context restore),也就是將該線程的運行環(huán)境、配置、設(shè)定的參數(shù)等等重新存儲在制定的區(qū)域內(nèi),便于該線程在運行時調(diào)用;本步驟中的線程是CPU線程。步驟S204運行等待的線程在本步驟中,在該硬件線程時隙運行上述線程;當該線程運行完成或退出時,返回步驟S201 ;
步驟S205 THDC中有ithread在等待?如是執(zhí)行步驟S206 ;否則,跳轉(zhuǎn)到步驟S209 ;步驟S206線程時隙由系統(tǒng)中移除在本步驟中,由于在上述步驟S205中已經(jīng)判斷THDC中存在有效的線程(這些線程均為硬件線程),且這些線程正在等待運行,于是將該空閑的(經(jīng)過定時器中斷的)硬件線程時隙交由THDC控制并運行這些等待的硬件線程,為實現(xiàn)這一目的,首先要做的就是將該線程時隙由系統(tǒng)的控制中移除;再將其控制權(quán)交給THDC。所以在本步驟中,將硬件時隙由系統(tǒng)移除。步驟S207禁止定時器中斷在本步驟中,當將該硬件線程時隙由系統(tǒng)中移除時,關(guān)閉該硬件線程的定時器中斷,使得該線程時隙在運行上述硬件線程的過程中不會發(fā)生定時器中斷。步驟S208時隙退出在本步驟中,上述硬件線程時隙退出系統(tǒng);
步驟S209 CPU-idle線程本步驟是在上述THDC中不存在等待運行的硬件線程的情況下出現(xiàn)的,也就是說整個系統(tǒng)既沒有傳統(tǒng)的CPU線程等待、也沒有硬件線程等待運行,在此情況下,該硬件線程時隙調(diào)用CPU-idle線程,表示當前沒有新的線程需要處理,并返回步驟 S201 ;
步驟S210 THDC上載在本步驟中,THDC調(diào)用硬件線程程序,將調(diào)用的硬件線程處理后得到可執(zhí)行文件,并將得到的可執(zhí)行文件上載到上述硬件線程時隙中。步驟S211 ithread運行ithread線程(即硬件線程)在上述硬件線程時隙中運行。步驟S212線程等待?判斷是否出現(xiàn)ithread線程等待的情況,如是,返回步驟S211 ;否則,執(zhí)行步驟S213 ;
步驟S213時隙退出在本步驟中,上述硬件線程時隙退出THDC ;
步驟S214使能定時器中斷在本步驟中,使能該硬件線程時隙的定時器中斷,并返回步驟S201 ;具體來講,在本步驟中,上述硬件線程時隙由于硬件線程已經(jīng)運行完成,所以該硬件線程時隙退出THDC,并使能定時器中斷;也就是將該時隙移回系統(tǒng)。在本實施例中,上述ithread可以在兩種情況下產(chǎn)生,請參見圖3,圖3中包括 步驟S401用戶程序開始在本步驟中,開始用戶程序,也就是在上述硬件線程時隙上
開始運行線程。步驟S402驅(qū)動存在?判斷驅(qū)動是否存在,如是,執(zhí)行步驟S403 ;否則,執(zhí)行步驟S409 ;本步驟是創(chuàng)建或調(diào)用硬件線程之前對于該硬件線程時隙狀態(tài)的一個判斷,在運行的線程中判斷驅(qū)動程序是否存在,如存在,則該硬件線程時隙處于內(nèi)核模式,所以執(zhí)行步驟403 ;如不存在,則該硬件線程時隙處于用戶模式,所以執(zhí)行步驟S409。步驟S403驅(qū)動程序在內(nèi)核模式下運行在本步驟中,由于硬件線程時隙處于內(nèi)核模式,且硬件線程由驅(qū)動程序創(chuàng)建,要創(chuàng)建硬件線程,就要運行該驅(qū)動程序。步驟S404線程產(chǎn)生?如是,執(zhí)行步驟S405 ;否則,執(zhí)行步驟S408 ;在本步驟中,線程是硬件線程;運行的線程需要產(chǎn)生(或調(diào)用)硬件線程,就是在本步驟中進行一個判斷,如果是,則執(zhí)行步驟S405 ;否則,執(zhí)行步驟S408。步驟S405創(chuàng)建ithread線程在本步驟中,創(chuàng)建或調(diào)用一個ithread線程;實際上,是產(chǎn)生一個ithread (硬件線程)的調(diào)用指令。步驟S406 i thread傳輸?shù)絋HDC :在本步驟中,將上述產(chǎn)生的i thread傳輸?shù)絋HDC,并在其程序隊列中進行排隊。步驟S408繼續(xù)在本步驟中,由于運行的線程沒有產(chǎn)生硬件線程,所以,不需要進行其他處理,繼續(xù)運行當前正在運行的線程(該線程是CPU線程或GPU線程)。步驟S409用戶程序繼續(xù)由于不存在驅(qū)動程序,判斷該硬件線程時隙處于用戶模式。因此,繼續(xù)執(zhí)行該用戶程序。步驟S410線程產(chǎn)生?如是,執(zhí)行步驟S411 ;否則,執(zhí)行步驟S412 ;在本步驟中,線程是硬件線程;運行的線程需要產(chǎn)生(或調(diào)用)硬件線程,就是在本步驟中進行一個判斷,如果是,則執(zhí)行步驟S411 ;否則,執(zhí)行步驟S412。步驟S411創(chuàng)建虛擬pthread :在本步驟中,由于處于用戶模式且需要創(chuàng)建硬件線程,而在這種模式下,并不能直接創(chuàng)建一個硬件線程,需要進行一些額外的步驟,正如前面所述的一樣,通過一個被建立在內(nèi)核的運行隊列中的虛擬pthread,然后該pthread運行并創(chuàng)建一個真正的ithread到THDC ;所以本步驟中創(chuàng)建并運行一個虛擬的pthread,當執(zhí)行完步驟后,執(zhí)行步驟S405。步驟S412繼續(xù)在本步驟中,由于運行的線程沒有產(chǎn)生硬件線程,所以,不需要進行其他處理,繼續(xù)運行當前正在運行的線程(該線程是CPU線程或GPU線程)。傳統(tǒng)的應(yīng)用程序在執(zhí)行時,是“串行”的,也就是一步一步執(zhí)行的,每步執(zhí)行完后在執(zhí)行下一步;當這些應(yīng)用程序涉及一些計算量較為集中的部分,例如圖4和圖5中的“熱功能”,這些“熱功能”是應(yīng)用程序的瓶頸部分,最好可以對其進行加速;在本實施例中,通過ithread(硬件線程)API,至少有兩種方式實現(xiàn)上述“熱功能”的加速。 圖4示出了應(yīng)用程序涉及計算量較為集中的部分的一種加速方式,在圖4中,每次“熱功能”的調(diào)用,都產(chǎn)生一 ithread,該ithread作為一個協(xié)處理器線程與上述應(yīng)用程序本身分開處理;當上述ithread創(chuàng)建后,上述應(yīng)用程序作為CPU線程將繼續(xù)運行;直到其準備好在此再調(diào)用一次“熱功能”,此時,其再次創(chuàng)建一個ithread ;由于存在兩個或兩個以上的、脫離CPU控制且作為協(xié)處理器線程運行在硬件線程時隙上的ithread,該應(yīng)用程序需要準備某種形式上的重入緩沖以保障上述兩個單獨運行的線程輸出的數(shù)據(jù);在這種方式下,并行處理機制可以單獨保持每個“熱功能”的數(shù)據(jù)。圖5示出了應(yīng)用程序涉及計算量較為集中的部分的另一種加速方式,在圖5中,每次“熱功能”的調(diào)用,都產(chǎn)生預(yù)置的ithread創(chuàng)建;創(chuàng)建之后,應(yīng)用程序等待創(chuàng)建的ithread運行完成之后再繼續(xù)運行;從流程上來講,這種方式改變最??;但是,實行這種方式需要事先得知“熱功能”涉及的數(shù)據(jù),并且需要將數(shù)據(jù)分為較小的、獨立的子集,所以,事先要進行數(shù)據(jù)劃分。、
在本實施例中,還涉及一種MVP處理器,請參見圖6,該處理器包括多個并行的、用于運行線程的處理器硬件內(nèi)核(在圖6中標記為601、602、603、604),用于管理所述處理器中系統(tǒng)線程并將這些線程分配到所述處理器硬件內(nèi)核中運行的系統(tǒng)線程管理單元61,還包括用于接收并管理運行中的線程產(chǎn)生的硬件線程、將所述硬件線程分配到空閑的處理器硬件內(nèi)核上、并以協(xié)處理器線程方式運行的硬件線程管理單元62;硬件線程管理單元62分別與所述多個并行的處理器內(nèi)核(在圖6中標記為601、602、603、604)連接。值得一提的是,在圖6中示出4個內(nèi)核是示例性的,實際中可能是2、3、4或6個或更多。在本實施例中,硬件線程管理單元62通過第一數(shù)據(jù)線621取得所述處理器硬件內(nèi)核上正在運行的線程發(fā)出的硬件線程調(diào)用指令,每個硬件內(nèi)核均有一條第一數(shù)據(jù)線621連接到硬件線程管理單元62 ;在圖6中,這些第一數(shù)據(jù)線621也被標記為ithread calls ;硬件線程管理單元62還通過第二數(shù)據(jù)線622 (在圖6中也被標記為threacLlaunch)將被調(diào)用并準備就緒的線程發(fā)送到所述多個處理器硬件內(nèi)核上運行;硬件線程管理單元還通過第三數(shù)據(jù)線623將其中被調(diào)用線程的狀態(tài)傳送到所述系統(tǒng)線程控制單元。在本實施例中,所述多個處理器硬件內(nèi)核還分別通過各自的第四數(shù)據(jù)線63將處于用戶狀態(tài)下運行的線程發(fā)出的pthread/ithread線程調(diào)用指令傳輸?shù)较到y(tǒng)線程控制單元61 ;上述第四數(shù)據(jù)線63在圖6中標記為pthread/ithread_user_calls,每個硬件內(nèi)核均有一條第四數(shù)據(jù)線連接到系統(tǒng)線程控制單元61。多個處理器硬件內(nèi)核和系統(tǒng)線程控制單元61之間還分別通過傳輸所述各硬件內(nèi)核定時器中斷信號的定時器中斷請求信號線連接;每個硬件內(nèi)核均有一條定時器中斷請求信號線連接到系統(tǒng)線程控制單元61,在圖6中,這些信號線分另1J被標記為 timerO_intr> timerl_intr> timer2_intr 和 timer3_intr。以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應(yīng)當指出的是,對于本領(lǐng)域的普通技術(shù)人員 來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應(yīng)以所附權(quán)利要求為準。
權(quán)利要求
1.一種多線程虛擬流水線處理器的線程控制和調(diào)用方法,其特征在于,包括如下步驟A)將CPU線程運行隊列中的線程直接依次分別分配到多線程虛擬流水線處理器的多路并行硬件線程時隙中運行;B)所述運行的線程產(chǎn)生屬于其自身的ithread調(diào)用指令到硬件線程控制單元;C)所述硬件線程控制單元將所述ithread的調(diào)用指令按照接收時間形成其程序隊列,調(diào)用并準備所述i thread ;D)所述ithread按照其在所述硬件線程控制單元中的隊列順序依次在所述多線程虛擬流水線處理器的、空閑的多路并行硬件線程時隙中運行。
2.根據(jù)權(quán)利要求I所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法,其特征在于,所述ithread為硬件線程,所述ithread包括圖像引擎、DSP或/和通用圖像處理器中要求硬件加速的線程。
3.根據(jù)權(quán)利要求2所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法,其特征在于,所述步驟A)進一步包括如下步驟Al)判斷所述硬件線程控制單元中是否有有效且未執(zhí)行完的硬件線程,如有,執(zhí)行步驟A2);否則,執(zhí)行步驟A3);A2)將當前空閑的多路并行硬件線程時隙由CPU線程管理單元中移除,禁止該并行硬件線程時隙的線程定時器中斷,并將該空閑的多路并行硬件線程時隙配置給所述硬件線程控制單元控制;A3)等待并返回該并行硬件線程時隙空閑的信息到CPU線程管理單元。
4.根據(jù)權(quán)利要求3所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法,其特征在于,所述步驟C)中,進一步包括如下步驟Cl)取出所述硬件線程控制單元程序隊列中排列在前的ithread ;C2)將得到的可執(zhí)行函數(shù)分配到所述空閑的硬件線程時隙運行。
5.根據(jù)權(quán)利要求4所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法,其特征在于,所述步驟C)中的程序隊列排列規(guī)則為先進先出。
6.根據(jù)權(quán)利要求5所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法,其特征在于,還包括如下步驟E)當所述ithread執(zhí)行完畢或進入等待使其繼續(xù)執(zhí)行的事件發(fā)生時,所述ithread退出其運行的硬件線程時隙并使能該時隙的線程計時中斷。
7.根據(jù)權(quán)利要求6所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法,其特征在于,還包括如下步驟F)所述硬件線程控制單元檢測其程序隊列中的ithread的有效狀態(tài)是否被清除,如是,清除所述ithread ;否則,保持所述ithread。
8.根據(jù)權(quán)利要求7所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法,其特征在于,在所述步驟B)中,當所述運行的線程在所述處理器的內(nèi)核模式下運行時,其驅(qū)動程序直接產(chǎn)生所述ithread調(diào)用指令并送到所述硬件線程控制器的命令隊列中。
9.根據(jù)權(quán)利要求7所述的多線程虛擬流水線處理器的線程控制和調(diào)用方法,其特征在于,在所述步驟B)中,當所述運行的線程在所述處理器的用戶狀態(tài)模式下運行時,通過創(chuàng)建一個操作系統(tǒng)SMP調(diào)度器接受的虛擬pthread,所述虛擬pthread運行產(chǎn)生所述ithread調(diào)用指令并送到所述硬件線程控制器的命令隊列中,其中,所述pthread為操作系統(tǒng)線程。
10.一種多線程虛擬流水線處理器,其特征在于,包括多個并行的、用于運行線程的處理器硬件內(nèi)核,用于管理所述處理器中線程并將這些線程分配到所述處理器硬件內(nèi)核中運行的系統(tǒng)線程管理單元,還包括用于接收并管理運行中的線程產(chǎn)生的ithread,并將所述ithread分配到空閑的處理器硬件內(nèi)核上,并以協(xié)處理器線程方式運行的硬件線程管理單元;所述硬件線程管理單元分別與所述多個并行的處理器內(nèi)核連接。
11.根據(jù)權(quán)利要求10所述的多線程虛擬流水線處理器,其特征在于,所述硬件線程管理單元通過所述處理器硬件內(nèi)核上正在運行的線程發(fā)出的ithread調(diào)用指令;所述硬件線程管理單元還將被調(diào)用并準備就緒的線程發(fā)送到所述多個處理器硬件內(nèi)核上運行。
12.根據(jù)權(quán)利要求11所述的多線程虛擬流水線處理器,其特征在于,所述硬件線程管理單元還通過第三數(shù)據(jù)線將其中被調(diào)用線程的狀態(tài)傳送到所述系統(tǒng)線程控制單元。
13.根據(jù)權(quán)利要求12所述的多線程虛擬流水線處理器,其特征在于,所述多個處理器硬件內(nèi)核還分別通過各自的第四數(shù)據(jù)線將處于用戶狀態(tài)下運行的線程發(fā)出的pthread/ithread線程調(diào)用指令傳輸?shù)剿鱿到y(tǒng)線程控制單元。
14.根據(jù)權(quán)利要求13所述的多線程虛擬流水線處理器,其特征在于,所述多個處理器硬件內(nèi)核和所述系統(tǒng)線程控制單元之間還分別通過傳輸所述各硬件內(nèi)核定時器中斷信號的定時器中斷請求信號線連接。
全文摘要
本發(fā)明涉及一種多線程虛擬流水線處理器的線程控制方法,包括如下步驟將CPU線程運行隊列中的線程直接依次分別分配到多線程虛擬流水線處理器的多路并行硬件線程時隙中運行;所述運行的線程產(chǎn)生屬于其自身的硬件線程調(diào)用指令到硬件線程控制單元;所述硬件線程控制單元將所述ithread的調(diào)用指令按照接收時間形成其程序隊列,調(diào)用并準備所述硬件線程;所述硬件線程按照其在所述硬件線程控制單元中的隊列順序依次在所述多線程虛擬流水線處理器的、空閑的多路并行硬件線程時隙中運行。本發(fā)明還涉及一種處理器。實施本發(fā)明的多線程虛擬流水線處理器的線程控制方法及其處理器,具有以下有益效果其線程等待的時間大大減??;使得操作也較為簡單。
文檔編號G06F9/38GK102750132SQ201210195838
公開日2012年10月24日 申請日期2012年6月13日 優(yōu)先權(quán)日2012年6月13日
發(fā)明者梅思行 申請人:深圳中微電科技有限公司