Mvp處理器中有dma參與的線程管理方法及裝置制造方法
【專利摘要】本發(fā)明涉及一種MVP處理器中有DMA參與的線程管理方法,包括如下步驟:將所述DMA虛擬通道與在該硬件內(nèi)核上運行的軟件線程綁定;判斷是否進行DMA且軟件線程必須等待所述DMA數(shù)據(jù)返回,如是,執(zhí)行下一步驟,否則,執(zhí)行線程中的其他指令;使所述軟件內(nèi)核除虛擬DMA通道外的其他部分進入休眠狀態(tài),并釋放所述硬件內(nèi)核;當所述DMA數(shù)據(jù)返回時,喚醒所述軟件線程,在其得到空閑的硬件內(nèi)核后配置該軟件內(nèi)核綁定的虛擬DMA通道到所述硬件內(nèi)核。本發(fā)明還涉及一種實現(xiàn)上述方法的裝置。實施本發(fā)明的MVP處理器中有DMA參與的線程管理方法及裝置,具有以下有益效果:其硬件資源的使用效率較高。
【專利說明】MVP處理器中有DMA參與的線程管理方法及裝置
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明涉及處理器領(lǐng)域,更具體地說,涉及一種MVP處理器中有DMA參與的線程管理方法及裝置。
【背景技術(shù)】
[0002]在處理器操作過程中,在大多數(shù)情況下,都會涉及DMA (Direct Memory Access,直接內(nèi)存存取),其包括請求、響應、傳輸和結(jié)束等階段。DMA的作用是將數(shù)據(jù)由一個地址空間復制到另一個地址空間,例如,移動一個外部內(nèi)存區(qū)塊到處理器內(nèi)部更快的內(nèi)存區(qū)。在傳統(tǒng)的DMA設(shè)計中,當軟件線程發(fā)起DMA操作后,該軟件線程可以執(zhí)行其它的操作。這樣DMA數(shù)據(jù)傳輸和CPU指令可并行執(zhí)行。但對于有DMA數(shù)據(jù)依賴的軟件線程來說,例如,該軟件線程的下一步動作是處理這些通過DMA傳輸?shù)臄?shù)據(jù),發(fā)起DMA后需要等待DMA數(shù)據(jù)傳輸完成才能繼續(xù)下一步操作。這樣軟件線程不得不做些無用的操作(例如,執(zhí)行nop指令)來等待DMA操作的結(jié)束。這種無用的等待操作造成硬件資源的浪費,影響軟件的運行效率。在傳統(tǒng)的處理器領(lǐng)域,該問題的解決由于處理器的內(nèi)核(或硬件線程資源)的特性而較難,同時由于處理器的性能要求,對該問題的處理也不是非常迫切。一般依靠軟件程序員在程序開發(fā)過程中盡可能避免這種硬件資源浪費。但是對于MVP處理器(一種具有多個MVP (Multithread Virtual Pipeline)硬件內(nèi)核的處理器)而言,由于其具有多個處理器硬件內(nèi)核資源,且由于其設(shè)計目的就是要達到較高的性能。所以,解決上述問題不僅是可能的,也是必要的。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述的在執(zhí)行DMA時其軟件線程可能出現(xiàn)等待進而帶來硬件內(nèi)核資源的浪費的缺陷,提供一種不會出現(xiàn)因執(zhí)行DMA而造成硬件內(nèi)核資源的浪費的MVP處理器中線程的管理方法及裝置。
[0004]本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:構(gòu)造一種MVP處理器中有DMA參與的線程管理方法,所述MVP處理器包括多個硬件內(nèi)核,一個軟件線程在得到空閑的硬件內(nèi)核并在其上運行時形成一個線程;一個線程配置有一個專用的虛擬DMA通道;所述線程的管理方法包括如下步驟:
A)將所述DMA虛擬通道與在該硬件內(nèi)核上運行的軟件線程綁定;
B)判斷是否進行DMA且軟件線程必須等待所述DMA數(shù)據(jù)返回,如是,執(zhí)行下一步驟,否貝U,執(zhí)行線程中的其他指令;
C)使所述軟件內(nèi)核除虛擬DMA通道外的其他部分進入休眠狀態(tài),并釋放所述硬件內(nèi)
核;
D)當所述DMA數(shù)據(jù)返回時,喚醒所述軟件線程,在其得到空閑的硬件內(nèi)核后配置該軟件內(nèi)核綁定的虛擬DMA通道到所述硬件內(nèi)核,形成線程并運行。
[0005]更進一步地,所述步驟C)中進一步包括: Cl)標記所述硬件內(nèi)核的狀態(tài)為空閑,使其進入處理器的空閑硬件內(nèi)核等待隊列,并由處理器的硬件線程控制器控制;
C2)標記所述硬件線程原先配置的虛擬DMA通道為忙碌,使所述處理器硬件線程管理器在為其分配軟件線程時重新配置新的虛擬DMA通道。
[0006]更進一步地,所述處理器硬件線程控制器在分配空閑的硬件內(nèi)核時優(yōu)先分配其虛擬DMA通道空閑的硬件內(nèi)核。
[0007]更進一步地,所述硬件內(nèi)核通過與所述硬件線程控制器連接的寄存器標志位表示該硬件內(nèi)核本身及其原先配置的虛擬DMA通道是否空閑。
[0008]更進一步地,所述DMA數(shù)據(jù)返回時,通過設(shè)置設(shè)定的寄存器標志位通知所述硬件線程控制器。
[0009]本發(fā)明還涉及一種實現(xiàn)上述方法的裝置,所述MVP處理器包括多個硬件內(nèi)核,一個軟件線程在得到空閑的硬件內(nèi)核并在其上運行時形成一個線程;一個線程配置有一個專用的虛擬DMA通道;所述線程的管理裝置包括:
軟件線程綁定單元:用于將所述DMA虛擬通道與在該硬件內(nèi)核上運行的軟件線程綁
定;
DMA判斷單元:用于判斷是否進行DMA且軟件線程必須等待所述DMA數(shù)據(jù)返回,如是,調(diào)用軟件線程休眠單元;
軟件線程休眠單元:用于使所述軟件內(nèi)核除虛擬DMA通道外的其他部分進入休眠狀態(tài),并釋放所述硬件內(nèi)核;
軟件線程喚醒單元:用于當DMA數(shù)據(jù)返回時,喚醒所述軟件線程,在其得到空閑的硬件內(nèi)核后配置該軟件內(nèi)核綁定的虛擬DMA通道到所述硬件內(nèi)核,形成線程并運行。
[0010]更進一步地,所述軟件線程休眠單元中進一步包括:
硬件內(nèi)核標記模塊:用于標記所述硬件內(nèi)核的狀態(tài)為空閑,使其進入處理器的空閑硬件內(nèi)核等待隊列,并由處理器的硬件線程控制器控制;
DMA通道標記模塊:用于標記所述硬件線程原先配置的虛擬DMA通道為忙碌,使所述處理器硬件線程管理器在為其分配軟件線程時重新配置新的虛擬DMA通道。
[0011]更進一步地,所述處理器硬件線程控制器在分配空閑的硬件內(nèi)核時優(yōu)先分配其原先配置的虛擬DMA通道空閑的硬件內(nèi)核。
[0012]更進一步地,所述硬件內(nèi)核標記模塊和所述DMA通道標記模塊分別通過設(shè)置與所述硬件線程控制器連接的寄存器標志位表示該硬件內(nèi)核本身及其原先配置的虛擬DMA通道是否空閑。
[0013]更進一步地,所述軟件線程喚醒單元通過設(shè)置設(shè)定的寄存器標志位通知所述硬件線程控制器DMA數(shù)據(jù)已返回。
[0014]實施本發(fā)明的MVP處理器中有DMA參與的線程管理方法及裝置,具有以下有益效果:由于在執(zhí)行DMA且在軟件線程必須等待DMA數(shù)據(jù)返回時,將軟件線程休眠,同時釋放處理器的、該軟件線程占用的硬件內(nèi)核,使其可以被別的軟件線程所使用。所以,其硬件資源不會因為軟件線程等待DMA數(shù)據(jù)返回而空置,進而造成硬件資源的浪費。因此,其硬件資源的使用效率較高。【專利附圖】
【附圖說明】
[0015]圖1是本發(fā)明MVP處理器中線程的管理方法及裝置實施例中的方法流程圖;
圖2是所述實施例中裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0016]下面將結(jié)合附圖對本發(fā)明實施例作進一步說明。
[0017]如圖1所示,在本發(fā)明的MVP處理器中有DMA參與的線程管理方法及裝置實施例中,該線程管理方法包括如下步驟:
步驟Sll在硬件內(nèi)核上運行軟件線程:在本實施例中,MVP處理器是一種新型的處理器,其包括多個硬件內(nèi)核,這些硬件內(nèi)核是并行的,可以供與其數(shù)量一致的軟件線程在其上運行。這些軟件線程可以是各種類型的,例如,在傳統(tǒng)意義上由CPU處理的數(shù)據(jù)或控制線程或在傳統(tǒng)意義上由GPU處理的圖像數(shù)據(jù)處理線程。MVP并不對其加以區(qū)分。為達到此目的,在本實施例所涉及的MVP中,其硬件內(nèi)核具有較為基本的結(jié)構(gòu),其他的一些運行線程所需要的資源,是通過軟件線程得到硬件資源時進行配置而附屬于該硬件內(nèi)核的,例如,在本實施例中涉及的虛擬DMA通道。在本實施例中,上述硬件內(nèi)核由硬件線程控制器對其進行控制,將其分配給在系統(tǒng)等待隊列中軟件線程。軟件線程在得到硬件內(nèi)核后,通過配置運行該軟件線程所必需的一些硬件或軟件資源,開始在該硬件內(nèi)核上運行,形成一個流水線對軟件線程中的指令進行處理或執(zhí)行,這種情況被稱為形成了一個處理器的線程(此處的線程并不僅僅是特指軟件線程)。因此,在本實施例中,一個軟件線程在得到空閑的硬件內(nèi)核并在其上運行時形成一個線程;一個線程配置有一個專用的虛擬DMA通道;在本實施例中,當軟件線程開始運行時,將上述DMA虛擬通道與在該硬件內(nèi)核上運行的軟件線程綁定,SP該DMA虛擬通道在與該軟件線程一起,在該軟件線程完成之前不會改變。即使該軟件線程在執(zhí)行的過程中由于某種原因進入休眠。再次喚醒該線程時,其DMA虛擬通道仍然是之前的那個,不會改變,也不會由于更換為在新的硬件內(nèi)核上運行而被替換。在本實施例中,DMA虛擬通道可以理解為映射到每個硬件內(nèi)核的DMA通道,它是和被映射的硬件內(nèi)核的存儲區(qū)域是綁定的,因此每個DMA虛擬通道只能看到與之綁定硬件內(nèi)核的存儲區(qū)域。同樣,當軟件在一個硬件內(nèi)核上運行形成一個軟件線程時,軟件線程和這個硬件內(nèi)核的存儲區(qū)域是綁定的,這種綁定關(guān)系是在控制器為軟件線程分配空閑的硬件內(nèi)核時建立或設(shè)置的(不管軟件在哪個空閑的硬件內(nèi)核上運行都一樣)。因此,一旦軟件線程開始運行,軟件線程,硬件內(nèi)核和虛擬DMA通道所看到的存儲區(qū)域是一致的。這種一致性是由線程控制器維護的。
[0018]步驟S12判斷是否在執(zhí)行DMA且軟件線程需等待其數(shù)據(jù)返回,如是,執(zhí)行下一步驟,否則,跳轉(zhuǎn)到步驟S16:在上述步驟中,軟件線程開始在硬件內(nèi)核上運行,其運行的方式與通常的情況并無不同,都是依次將軟件線程中的指令逐一執(zhí)行。在本步驟中,就是判斷當前執(zhí)行的指令是否是進行DMA操作,且后續(xù)的指令必須等待DMA數(shù)據(jù)返回后才能執(zhí)行。如果是,則執(zhí)行步驟S13 ;否則執(zhí)行步驟S16。在本實施例中,上述判斷的具體方法為當指令在指令處理流水線解碼時,發(fā)現(xiàn)出現(xiàn):“DMA啟動-> 硬件內(nèi)核休眠”這樣的操作序列或者在指令處理流水線上返現(xiàn)DMA啟動,且其后面的指令是多個“Ν0Ρ”,即空操作。
[0019]步驟S13使軟件線程休眠:在本步驟中,由于軟件線程在等待DMA數(shù)據(jù)返回,因此其操作對于軟件線程或系統(tǒng)而言是毫無意義的,也就是通常所講的“空操作”,其目的是使得軟件線程在不做任何動作的情況,通過等待DMA數(shù)據(jù)返回過程中的多個操作周期。在這種情況下,軟件線程不做任何動作,但是其占用了寶貴的硬件內(nèi)核,使得硬件內(nèi)核也處于等待狀態(tài)中,浪費了資源,同時使得處理器對軟件的處理效率降低。為此在本步驟中,使得該軟件線程進入休眠狀態(tài),具體而言,當運行在某硬件內(nèi)核上的軟件執(zhí)行“休眠”指令時,軟件進程釋放它占有的硬件資源進入休眠狀態(tài)。
[0020]步驟S14標記硬件資源空閑:在本步驟中,由于軟件線程進入休眠狀態(tài),所以,其使用的硬件內(nèi)核被釋放,為此,設(shè)置指定寄存器的標志位,使得硬件線程控制器能夠得知該硬件內(nèi)核當前是空閑的,進而將該硬件內(nèi)核分配給等待隊列中的軟件線程。同時,在本實施例中,除了對上述設(shè)定寄存器的指定標志位進行置位,以表示其空閑外,還會設(shè)置另外一個標志位,表示原先為該硬件內(nèi)核配置的虛擬DMA通道并沒有空閑(在本實施例中,該通道當前被綁定在上述軟件線程上,并正在進行DMA數(shù)據(jù)傳輸)。這些標記都會傳輸給上述硬件線程控制器或被上述硬件線程控制器讀取。當該硬件線程控制器將上述由于軟件線程休眠而空閑的硬件內(nèi)核配置到另外一個軟件線程時,需要為其配置另外的虛擬DMA通道。同樣地,該虛擬DMA通道也被綁定于軟件線程。值得一提的是,在硬件線程控制器分配硬件內(nèi)核時,會讀取上述兩個標志位,其優(yōu)先使用的是原先配置的虛擬DMA通道空閑的硬件內(nèi)核。只有在原先配置的虛擬DMA通道空閑的硬件內(nèi)核已經(jīng)分配完成之后,才會分配上述需要為其配置另外的虛擬DMA通道的硬件內(nèi)核。
[0021]步驟S15表示DMA數(shù)據(jù)返回的標志位被置位,喚醒軟件線程:在本步驟中,通過多個操作周期,需要通過DMA得到的數(shù)據(jù)已經(jīng)返回,因此,將表示數(shù)據(jù)取得完成的標志位置位,通知硬件線程控制器。于是,在其控制下,將前面步驟休眠的軟件線程喚醒,進入等待隊列,等待空閑的硬件內(nèi)核的出現(xiàn),將該軟件線程分配到該硬件內(nèi)核上運行,以便完成該線程。實際上,DMA數(shù)據(jù)返回,說明DMA已經(jīng)做完,此時,由于軟件線程已經(jīng)休眠,所以在本實施例中,DMA可以被釋放,使其能夠配置到硬件線程(這些硬件內(nèi)核可能由于某種原因,沒有或暫時沒有配置DMA通道,例如,在本實施例中的情況下,由于軟件線程應為等待DMA結(jié)果而休眠,從而導致硬件內(nèi)核被釋放);也可以不被釋放,繼續(xù)保持和軟件線程的綁定,使其在休眠的軟件線程被喚醒后配置到分配給該被喚醒軟件線程的硬件內(nèi)核。因此,在軟件線程被喚醒時候,被釋放的虛擬DMA不需要再和軟件線程綁定。因為,如上面步驟中所述,軟件線程,硬件內(nèi)核和虛擬DMA的存儲區(qū)域是一致的,因此在虛擬DMA被釋放,軟件線程被喚醒后,盡管軟件線程可能運行在和它休眠前不同的硬件內(nèi)核上,但虛擬DMA返回的數(shù)據(jù)的目標地址是確定的。所以,軟件線程即使使用不同的硬件內(nèi)核和DMA通道,也是可以繼續(xù)往下執(zhí)行的,可以通過線程控制單元將該硬件內(nèi)核和DMA訪問的地址設(shè)置為該軟件線程的存儲地址,就可以直接使用DMA結(jié)果數(shù)據(jù)即可L在本實施例中,DMA完成數(shù)據(jù)傳輸后,DMA硬件會發(fā)一個喚醒信號給線程控制器,線程控制器根據(jù)DMA ID (即DMA的編號)找到與之對應的、休眠的軟件線程,并喚醒該軟件線程。在實際操作中,完成DMA數(shù)據(jù)轉(zhuǎn)移的DMA通道被釋放,軟件線程在被喚醒后重新配置新的虛擬DMA通道(和一個新的軟件線程一樣,不過其存儲區(qū)域或DMA可以訪問的區(qū)域是不變的,還是休眠之前的存儲區(qū)域)。軟件線程在分配硬件內(nèi)核時指定了存儲區(qū)域,也就是虛擬DMA通道能夠訪問的區(qū)域當一個軟件線程被喚醒時,其存儲區(qū)域是不變的。當其被喚醒時,雖然其原先的DMA被釋放,線程控制器重新為軟件線程配置了硬件內(nèi)核和DMA,但是由于該軟件線程的存儲區(qū)域是已經(jīng)指定的,所以新配置的硬件內(nèi)核和DMA的存儲區(qū)域就必然被指定為該軟件線程原先的存儲區(qū)域。這種情況下,是不是釋放DMA看起來沒有很大的關(guān)系,因為重新配置的DMA的存儲地址是一樣的;但是,在釋放DMA的方式在一些情況下,例如,有多個使用本實施例中方法的軟件線程是,有利于其他被釋放的硬件線程得到DMA。軟件線程休眠時,其存儲區(qū)域被保存在線程控制器中,這樣線程控制器才知道重新配置硬件內(nèi)核和DMA的具體數(shù)據(jù)。在另外一些情況下,如果不釋放該軟件線程的DMA,則僅僅需要將該DMA和軟件線程繼續(xù)綁定在分配的硬件內(nèi)核上,該硬件內(nèi)核能夠訪問的存儲地址就是上述軟件線程和DMA的存儲地址,當然,這也是通過線程控制器配置的??傮w上來講,在本實施例中,選擇釋放DMA的方法的好處多一些。這是由于這種方法可以兼顧另外一個正在使用本實施例中方法的軟件線程。在本實施例中,在釋放軟件線程休眠后完成數(shù)據(jù)搬移的DMA的情況下,當喚醒該休眠的軟件線程時,分配給該軟件線程的硬件內(nèi)核優(yōu)選其原先配置的DMA空閑的硬件內(nèi)核。在本實施例中,所述硬件內(nèi)核通過與所述硬件線程控制器連接的寄存器標志位表示該硬件內(nèi)核本身及其原先配置的虛擬DMA通道是否空閑。執(zhí)行完本步驟后,返回步驟S11。
[0022]步驟S16執(zhí)行軟件線程中后續(xù)的指令:在本步驟中,由于判斷指令與DMA無關(guān),所以不需要對其采取任何特殊的步驟,按照通常的流水線處理即可。也就是說,本步驟中,處理與DMA無關(guān)的其他指令。執(zhí)行完本步驟后,返回步驟S11。
[0023]本實施例還涉及一種實現(xiàn)上述方法的裝置,其結(jié)構(gòu)如圖2所示。在本實施例中,上述MVP處理器包括多個硬件內(nèi)核,一個軟件線程在得到空閑的硬件內(nèi)核并在其上運行時形成一個線程;一個線程配置有一個專用的虛擬DMA通道。圖2示出了本實施例中該裝置的結(jié)構(gòu),該裝置包括軟件線程綁定單元11、DMA判斷單元12、軟件線程休眠單元13和軟件線程喚醒單元14。其中,軟件線程綁定單元11用于將所述DMA虛擬通道與在該硬件內(nèi)核上運行的軟件線程綁定;DMA判斷單元12用于判斷是否進行DMA且軟件線程必須等待所述DMA數(shù)據(jù)返回,如是,調(diào)用軟件線程休眠單元;軟件線程休眠單元13用于使所述軟件內(nèi)核除虛擬DMA通道外的其他部分進入休眠狀態(tài),并釋放所述硬件內(nèi)核;軟件線程喚醒單元14用于當DMA數(shù)據(jù)返回時,喚醒所述軟件線程,在其得到空閑的硬件內(nèi)核后配置虛擬DMA通道,形成線程并運行。
[0024]在本實施例中,軟件線程休眠單元13中進一步包括硬件內(nèi)核標記模塊131和DMA通道標記模塊132。其中,硬件內(nèi)核標記模塊131用于標記所述硬件內(nèi)核的狀態(tài)為空閑,使其進入處理器的空閑硬件內(nèi)核等待隊列,并由處理器的硬件線程控制器控制;DMA通道標記模塊132用于標記所述硬件線程原先配置的虛擬DMA通道為忙碌,使所述處理器硬件線程管理器在為其分配軟件線程時重新配置新的虛擬DMA通道。
[0025]在本實施例中,是通過處理器硬件線程控制器(MVP處理器中現(xiàn)有的硬件控制機構(gòu))來對上述各單元進行控制或調(diào)用的。其中,在處理器硬件線程控制器分配空閑的硬件內(nèi)核時優(yōu)先分配其原先配置的虛擬DMA通道空閑的硬件內(nèi)核。
[0026]此外,上述硬件內(nèi)核標記模塊131和DMA通道標記模塊132分別通過設(shè)置與上述硬件線程控制器連接的寄存器標志位表示該硬件內(nèi)核本身及其原先配置的虛擬DMA通道是否空閑。而軟件線程喚醒單元14通過設(shè)置設(shè)定的寄存器標志位通知所述硬件線程控制器DMA數(shù)據(jù)已返回。
[0027]以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應當指出的是,對于本領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權(quán)利要求為準。
【權(quán)利要求】
1.一種MVP處理器中有DMA參與的線程管理方法,其特征在于,所述MVP處理器包括多個硬件內(nèi)核,一個軟件線程在得到空閑的硬件內(nèi)核并在其上運行時形成一個線程;一個線程配置有一個專用的虛擬DMA通道;所述有DMA參與的線程管理方法包括如下步驟: A)將所述DMA虛擬通道與在該硬件內(nèi)核上運行的軟件線程綁定; B)判斷是否進行DMA且軟件線程必須等待所述DMA數(shù)據(jù)返回,如是,執(zhí)行下一步驟,否貝U,執(zhí)行線程中的其他指令; C)使所述軟件內(nèi)核除虛擬DMA通道外的其他部分進入休眠狀態(tài),并釋放所述硬件內(nèi)核; D)當所述DMA數(shù)據(jù)返回時,喚醒所述軟件線程,在其得到空閑的硬件內(nèi)核后重新配置虛擬DMA通道或配置該軟件內(nèi)核綁定的虛擬DMA通道到所述硬件內(nèi)核,形成線程并運行。
2.根據(jù)權(quán)利要求1所述的MVP處理器中有DMA參與的線程管理方法,其特征在于,所述步驟C)中進一步包括: Cl)標記所述硬件內(nèi)核的狀態(tài)為空閑,使其進入處理器的空閑硬件內(nèi)核等待隊列,并由處理器的硬件線程控制器控制; C2)標記所述硬件線程原先配置的虛擬DMA通道為忙碌,使所述處理器硬件線程管理器在為其分配軟件線程時重新配置新的虛擬DMA通道。
3.根據(jù)權(quán)利要求2所述的MVP處理器中有DMA參與的線程管理方法,其特征在于,所述處理器硬件線程控制器在分配空閑的硬件內(nèi)核時優(yōu)先分配其虛擬DMA通道空閑的硬件內(nèi)核。
4.根據(jù)權(quán)利要求3所述的MVP處理器中有DMA參與的線程管理方法,其特征在于,所述硬件線程控制器通過讀取來自所述硬件內(nèi)核的寄存器標志位判斷該硬件內(nèi)核本身及其原先配置的虛擬DMA通道是否空閑;所述步驟D)中,所述線程控制器將所述硬件內(nèi)核的存儲區(qū)域或所述硬件內(nèi)核的存儲區(qū)域及原先配置的虛擬DMA通道配置為所述軟件線程的存儲區(qū)域。
5.根據(jù)權(quán)利要求4所述的MVP處理器中有DMA參與的線程管理方法,其特征在于,所述DMA數(shù)據(jù)返回時,通過設(shè)置設(shè)定的寄存器標志位通知所述硬件線程控制器。
6.一種MVP處理器中有DMA參與的線程管理裝置,其特征在于,所述MVP處理器包括多個硬件內(nèi)核,一個軟件線程在得到空閑的硬件內(nèi)核并在其上運行時形成一個線程;一個線程配置有一個專用的虛擬DMA通道;所述線程的管理裝置包括: 軟件線程綁定單元:用于將所述DMA虛擬通道與在該硬件內(nèi)核上運行的軟件線程綁定; DMA判斷單元:用于判斷是否進行DMA且軟件線程必須等待所述DMA數(shù)據(jù)返回,如是,調(diào)用軟件線程休眠單元; 軟件線程休眠單元:用于使所述軟件內(nèi)核除虛擬DMA通道外的其他部分進入休眠狀態(tài),并釋放所述硬件內(nèi)核; 軟件線程喚醒單元:用于當DMA數(shù)據(jù)返回時,喚醒所述軟件線程,在其得到空閑的硬件內(nèi)核后配置該軟件內(nèi)核綁定的虛擬DMA通道到所述硬件內(nèi)核,形成線程并運行。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述軟件線程休眠單元中進一步包括: 硬件內(nèi)核標記模塊:用于標記所述硬件內(nèi)核的狀態(tài)為空閑,使其進入處理器的空閑硬件內(nèi)核等待隊列,并由處理器的硬件線程控制器控制; DMA通道標記模塊:用于標記所述硬件線程原先配置的虛擬DMA通道為忙碌,使所述處理器硬件線程管理器在為其分配軟件線程時重新配置新的虛擬DMA通道。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述處理器硬件線程控制器在分配空閑的硬件內(nèi)核時優(yōu)先分配其原先配置的虛擬DMA通道空閑的硬件內(nèi)核。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述硬件內(nèi)核標記模塊和所述DMA通道標記模塊分別通過設(shè)置與所述硬件線程控制器連接的寄存器標志位表示該硬件內(nèi)核本身及其原先配置的虛擬DMA通道是否空閑。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述軟件線程喚醒單元通過設(shè)置設(shè)定的寄存器標志位通知所述硬件線程控制器DMA數(shù)據(jù)已返回。
【文檔編號】G06F9/48GK103955408SQ201410166208
【公開日】2014年7月30日 申請日期:2014年4月24日 優(yōu)先權(quán)日:2014年4月24日
【發(fā)明者】丘正前, 王世好, 陳俊銳, 李晶晶 申請人:深圳中微電科技有限公司