欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

在處理器不同類型線程中分配內核資源的方法、裝置及其處理器的制造方法

文檔序號:6521110閱讀:246來源:國知局
在處理器不同類型線程中分配內核資源的方法、裝置及其處理器的制造方法
【專利摘要】本發(fā)明涉及一種在處理器不同類型線程中分配內核資源的方法,所述方法還包括如下步驟:判斷所述硬件線程管理單元中登記的線程數(shù)量是否大于由所述操作系統(tǒng)登記到所述硬件線程管理單元中的線程數(shù)量,如是,執(zhí)行步驟B);否則,返回;分配空閑的內核對所述登記在硬件線程管理單元中的GPU線程進行處理,當空閑線程分配完且有CPU線程釋放其內核時,該內核直接由硬件線程管理單元控制,并配置給在所述硬件線程管理單元中等待的GPU線程。本發(fā)明還涉及一種實現(xiàn)上述方法的裝置及其處理器。實施本發(fā)明的在處理器不同類型線程中分配內核資源的方法、裝置及其處理器,具有以下有益效果:使得不同類型的線程之間能夠到達動態(tài)的負載平衡。
【專利說明】在處理器不同類型線程中分配內核資源的方法、裝置及其處理器
【技術領域】
[0001]本發(fā)明涉及處理器,更具體地說,涉及一種在處理器不同類型線程中分配內核資源的方法、裝置及其處理器。
【背景技術】
[0002]在典型的多功能計算機平臺(處理器)中,CPU和GPU是單獨的硬件,其間通過并行的總線連接,并分別通過各自的軟件驅動。這兩個硬件之間,對于一個或多個任務而言,并沒有共享的成分。這是由于這兩個硬件是單獨的。當執(zhí)行一個CPU任務時(這些任務最后將分解為線程執(zhí)行),由該CPU的操作系統(tǒng)對其進行操作;當執(zhí)行一個GPU任務(這些任務最后同樣將分解為線程執(zhí)行),由該GPU內部的硬件控制執(zhí)行。因此,在傳統(tǒng)的多功能計算機平臺上,可能出現(xiàn)上述CPU和GPU中任何一個較忙,而另一個空閑的狀態(tài)。這使得其出現(xiàn)在不同類型的線程之間負載不平衡的情況。

【發(fā)明內容】

[0003]本發(fā)明要解決的技術問題在于,針對現(xiàn)有技術的上述在不同類型的任務或線程之間出現(xiàn)負載不平衡的缺陷,提供一種在不同的任務或線程之間達到較好的負載平衡的在處理器不同類型線程中分配內核資源的方法、裝置及其處理器。
[0004]本發(fā)明解決其技術問題所采用的技術方案是:構造一種在處理器不同類型線程中分配內核資源的方法,所述處理器中并行運行CPU任務和GPU任務,所述CPU任務由操作系統(tǒng)分解為CPU線程并分配內核進行處理,所述CPU線程還登記到用于控制處理GPU線程的硬件線程管理單元中,GPU任務被分解為GPU線程并登記排列在所述硬件線程管理單元中等待分配內核進行處理;所述方法還包括如下步驟:
A)判斷所述硬件線程管理單元中登記的線程數(shù)量是否大于由所述操作系統(tǒng)登記到所述硬件線程管理單元中的線程數(shù)量,如是,執(zhí)行步驟B);否則,返回處理CPU線程;
B)分配空閑的內核對所述登記在硬件線程管理單元中的GPU線程進行處理,當空閑線程分配完且有CPU線程釋放其內核時,該內核直接由硬件線程管理單元控制,并配置給在所述硬件線程管理單元中等待的GPU線程。
[0005]更進一步地,還包括如下步驟:
C)當在所述硬件線程管理單元中等待的GPU線程執(zhí)行完成或所述GPU線程需要返回數(shù)據(jù)到操作系統(tǒng)時,當前所述CPU線程返回的內核由所述操作系統(tǒng)分配,不再直接由在硬件線程管理單元控制。
[0006]更進一步地,所述UPU在上電引導之后,分配設定數(shù)量的內核用于操作系統(tǒng)控制的CPU線程;每個線程在運行時均在所述硬件線程管理單元中登記。
[0007]更進一步地,所述設定數(shù)量為UPU內核總數(shù)的一半。
[0008]更進一步地,所述GPU任務通過GPU API或GPU DRIVER產(chǎn)生多個在硬件線程管理單元中等待的GPU線程,所述GPU線程同時登記在硬件線程管理單元中。
[0009]更進一步地,所述步驟A)中,包括比較由所述操作系統(tǒng)登記到所述硬件線程管理單元的有效線程數(shù)量和登記到所述硬件線程管理單元的總的有效線程數(shù)量是否相等。
[0010]本發(fā)明還涉及一種實現(xiàn)上述方法的裝置,所述處理器中并行運行CPU任務和GPU任務,所述CPU任務由操作系統(tǒng)分解為CPU線程并分配內核進行處理,所述CPU線程還登記到用于控制處理GPU線程的硬件線程管理單元中,GPU任務被分解為GPU線程并登記排列在所述硬件線程管理單元中等待分配內核進行處理;所述裝置包括:
線程數(shù)量判斷模塊:用于判斷所述硬件線程管理單元中登記的線程數(shù)量是否大于由所述操作系統(tǒng)登記到所述硬件線程管理單元中的線程數(shù)量,如是,調用空閑線程分配模塊;空閑線程分配模塊:用于分配空閑的內核對所述登記在硬件線程管理單元中的GPU線程進行處理,當空閑線程分配完且有CPU線程釋放其內核時,該內核直接由硬件線程管理單元控制,并配置給在所述硬件線程管理單元中等待的GPU線程。
[0011]更進一步地,還包括線程釋放判斷模塊,用于當在所述硬件線程管理單元中等待的GPU線程執(zhí)行完成或所述GPU線程需要返回數(shù)據(jù)到操作系統(tǒng)時,當前所述CPU線程返回的內核由所述操作系統(tǒng)分配,不再直接由硬件線程管理單元控制。
[0012]更近一步地,還包括初始CPU線程設置模塊和GPU線程產(chǎn)生模塊;所述初始CPU線程設置模塊用于在UPU在上電引導之后,分配設定數(shù)量的內核用于操作系統(tǒng)控制的CPU線程;每個線程在運行時均在所述硬件線程管理單元中登記;所述GPU線程產(chǎn)生模塊用于GPU任務通過GPU API或GPU DRIVER產(chǎn)生多個在硬件線程管理單元中等待的GPU線程,所述GPU線程同時登記在硬件線程管理單元中。
[0013]本發(fā)明還涉及一種處理器,所述處理器為在CPU任務和GPU任務之間動態(tài)共享其硬件資源的UPU,所述處理器采用上述方法中的任意一項分配其內核資源。
[0014]實施本發(fā)明的在處理器不同類型線程中分配內核資源的方法、裝置及其處理器,具有以下有益效果:由于在處理器上電時,所有的內核資源均由操作系統(tǒng)控制,且在GPU線程出現(xiàn)時分配一定數(shù)量的內核資源對所述GPU線程進行處理;同時,在GPU線程隊列不斷增加的情況下,使用原先配置到CPU線程的內核資源對GPU線程進行處理,使得整個處理器的內核資源在GPU線程和CPU線程之間動態(tài)地配置,從而使得不同類型的線程之間能夠到達動態(tài)的負載平衡。
【專利附圖】

【附圖說明】
[0015]圖1是本發(fā)明在處理器不同類型線程中分配內核資源的方法、裝置及其處理器實施例中分配內核的方法流程圖;
圖2是所述實施例中登記的線程示意圖;
圖3是所述實施例中裝置結構示意圖。
【具體實施方式】
[0016]下面將結合附圖對本發(fā)明實施例作進一步說明。
[0017]如圖1所示,在本發(fā)明的在處理器不同類型線程中分配內核資源的方法、裝置及其處理器實施例中,該在處理器不同類型線程中分配內核資源的方法包括如下步驟: 步驟SlOl處理器上電、引導,操作系統(tǒng)控制所有內核資源:在本實施例中,處理器中具有多個獨立的內核(由硬件構成的、用于對線程進行計算或處理的內核),這些內核可以分配給不同的線程(進行線程處理),并同時運行。在本實施例中,處理器中可能存在兩種線程,一種是傳統(tǒng)意義上由CPU進行處理的任務得到的線程,稱為CPU線程;一種是傳統(tǒng)意義上由GPU進行處理的任務得到的線程,稱為GPU線程。當然,在本實施例中,并不刻意區(qū)分線程的類型,從處理器的角度而言,所有的任務都是一樣的,只不過調用不同的功能模塊處理而已。當處理器中并行運行CPU任務和GPU任務時,CPU任務由操作系統(tǒng)分解為CPU線程并分配內核進行處理,這些CPU線程還登記到用于控制處理GPU線程的硬件線程管理單元中;GPU任務一開始也是被視為CPU任務處理,當操作系統(tǒng)發(fā)現(xiàn)其實際上是GPU任務時,調用不同的功能模塊將其分解為GPU線程并登記排列在所述硬件線程管理單元中等待分配內核進行處理。在本步驟中,當系統(tǒng)上電引導后,一般來講,系統(tǒng)中馬上要執(zhí)行任務都是通常的CPU任務,因此,所有的內核資源都是處于操作系統(tǒng)的控制之下的。
[0018]步驟S102分解CPU任務為CPU線程,在操作系統(tǒng)中排列,等待處理:在本步驟中,執(zhí)行CPU任務,將其分解為CPU線程,并形成隊列,在操作系統(tǒng)中等待分配內核資源并處理。這些動作均是在操作系統(tǒng)的控制之下進行的,分配在操作系統(tǒng)控制下的內核資源處理上述(PU線程。由于內核資源如何處理一個線程與本實施例中描述的內容關系不大,所以在此不再對其進行詳細描述。
[0019]步驟S103將上述線程登記到硬件線程管理和控制單元:在本步驟中,在本步驟中,上述得到的CPU線程除了在操作系統(tǒng)中形成隊列并處理之外,還將上述步驟中得到的CPU線程登記到處理器的硬件線程管理和控制單元(THDC)中。
[0020]步驟S104是否有GPU任務:在本步驟中,判斷是否存在GPU任務需要處理,也就是說,判斷當前處理的任務是否GPU任務,如是,執(zhí)行步驟S105 ;否則,執(zhí)行步驟S106。判斷一個任務是否是GPU任務的具體方法包括判斷該線程是否調用了專用于產(chǎn)生GPU線程的功能模塊,例如,GPU API或GPU DRIVER。這是由于一個GPU任務必然需要類似的模塊來產(chǎn)生GPU線程。
[0021]步驟S105產(chǎn)生GPU線程,使其在硬件線程管理和控制單元中形成隊列等待處理,同時,將其登記:在本步驟中,調用上述的GPU API (GPU應用接口)或GPU DRIVER (GPU驅動器)使得GPU任務分解為GPU線程,得到的GPU線程在硬件線程管理和控制單元中形成隊列等待處理,同時,將其在THDC登記;也就是說,GPU任務通過GPU API或GPU DRIVER產(chǎn)生多個在硬件線程管理單元中等待的GPU線程,這些GPU線程同時登記在硬件線程管理單元中。
[0022]步驟S106登記的線程數(shù)是否大于來自系統(tǒng)的線程數(shù):判斷硬件線程管理單元中登記的總的線程數(shù)量是否大于由操作系統(tǒng)登記到所述硬件線程管理單元中的線程數(shù)量,如是,執(zhí)行下一步驟;否則,返回執(zhí)行步驟S102,也就是仍然回到處理CPU線程或任務中,并不會使得內核資源重新配置;在本步驟中,判斷登記的總的線程數(shù)量是否大于由操作系統(tǒng)登記而來的線程數(shù)量的具體方法是比較由操作系統(tǒng)登記到所述硬件線程管理單元的有效線程數(shù)量和登記到硬件線程管理單元的總的有效線程數(shù)量是否相等。請參見圖2,圖2中給出了一個登記線程的結構示意圖,由圖2中可以得知,登記總的有效線程數(shù)量只能大于或等于由操作系統(tǒng)登記的有效線程數(shù)量,不可能小于該值,所以,只要比較其是否相等,就可以判斷出是否由GPU線程存在。二者相等時,必然不存在GPU線程,而二者不等時,必然有GPU線程存在。
[0023]步驟S107分配空閑的內核給GPU線程,并在CPU線程釋放內核資源時,將釋放的內核配置到GPU線程:分配空閑的內核對所述登記在硬件線程管理單元中的GPU線程進行處理,當空閑線程分配完且有CPU線程釋放其內核時,將該內核配置給在所述硬件線程管理單元中等待的GPU線程。也就是說,在本步驟中,當存在空閑的內核資源由THDC控制時,自然先將這些內核資源分配到GPU線程,對其進行處理。當已經(jīng)沒有空閑內核資源或本來THDC就沒有控制內核資源時,首先是等待現(xiàn)在正在運行的內核被釋放,即使是CPU線程釋放的內核支援,且有其他的CPU線程在等待執(zhí)行,這些被釋放的內核資源也不會被分配到CPU線程,而是使得CPU線程等待,將這些內核的控制權由原先的操作系統(tǒng)轉移到上述THDC,使得THDC能夠控制該內核,并將其分配到GPU線程,使得該內核資源處理GPU線程。從而實現(xiàn)內核資源在不同的類型的線程之間的重新配置,使得處理器在處理不同的類型的線程時能夠實現(xiàn)動態(tài)的內核調整,進而達到動態(tài)的負載平衡。
[0024]在本實施例中,上述處理器通常是UPU,其上電后可以將所有的內核交給操作系統(tǒng)控制,等到GPU任務開始執(zhí)行時再對這些內核進行分配。其好處是對于傳統(tǒng)的CPU任務處理較快,但是,由于在執(zhí)行GPU任務時需要重新分配,所以其對于GPU任務的處理速度稍慢。為了加快GPU任務的處理速度,在本實施例中,一種情況下,也可以在處理器上電引導之后,分配設定數(shù)量的內核用于操作系統(tǒng)控制的CPU線程;同樣地,每個線程在等待時均在所述硬件線程管理單元中登記。這個設定數(shù)量可以為UPU內核總數(shù)的一半,以兼顧CPU任務和GPU任務的處理速度。
[0025]總之,在本實施例中,該UPU的調度器具有CPU特殊內核功能,即利用UPU的獨特硬件特性,動態(tài)地調度操作系統(tǒng)軟件隊列能夠CPU任務和UPU硬件線程管理和控制單元(THDC)中的GPU任務。當UPU上電引導之后,所有的硬件線程資源(即內核資源)均由操作系統(tǒng)控制,同時,所有的線程(包括CPU和GPU線程)均會送入到THDC中。當只有CPU任務(或線程)運行時,THDC僅僅繼續(xù)保持這些記錄了送入線程的記錄,所有的內核資源均作為SMP核由操作系統(tǒng)控制。當一個GPU任務被作為一個CPU任務開始運行時(這是UPU的一個重要特點),該任務通過GPU ADI CALLS或GPU DRIVER,創(chuàng)建多個GPU線程到THDC中;使得在THDC中的記載線程數(shù)量的清單上所記載的線程多于原先記載的線程數(shù)量(原先可能只有CPU線程)。這樣,當一個由操作系統(tǒng)本身控制的SMP核運行線程完成或由用戶空間返回內核空間時,該線程將釋放上述內核,同時,標記該線程的、在THDC中的線程清單將進入等待的狀態(tài),該內核資源的控制權將由操作系統(tǒng)轉移到THDC,THDC將不再將該內核資源分配給其他CPU線程或原先的CPU線程,而是將其分配到在THDC中等待的GPU線程,使得該GPU線程得到該內核的處理時隙。當在THDC中的GPU目錄(或清單)變得越來越多的時候,越來越多的退出的CPU線程所占用的內核資源被按照上述的方法配置到GPU線程中,以便對其進行處理,直到GPU的隊列減少或CPU線程出現(xiàn)瓶頸(例如,有返回CPU的數(shù)據(jù)等等),才會有內核資源被分配到CPU線程。
[0026]請參見圖3,在本實施例中,還涉及一種實現(xiàn)上述方法的裝置,該裝置包括:線程數(shù)量判斷模塊31、空閑線程分配模塊32、線程釋放判斷模塊33、初始CPU線程設置模塊34和GPU線程產(chǎn)生模塊35。其中線程數(shù)量判斷模塊31用于判斷所述硬件線程管理單元中登記的線程數(shù)量是否大于由所述操作系統(tǒng)登記到所述硬件線程管理單元中的線程數(shù)量,如是,調用空閑線程分配模塊;空閑線程分配模塊32用于分配空閑的內核對所述登記在硬件線程管理單元中的GPU線程進行處理,當空閑線程分配完且有CPU線程釋放其內核時,將該內核配置給在所述硬件線程管理單元中等待的GPU線程;線程釋放判斷模塊33用于當在所述硬件線程管理單元中等待的GPU線程執(zhí)行完成或所述GPU線程需要返回數(shù)據(jù)到操作系統(tǒng)時,當前所述CPU線程返回的內核由所述操作系統(tǒng)分配,不再直接分配給在硬件線程管理單元中等待的GPU線程;初始CPU線程設置模塊34用于在UPU在上電引導之后,分配設定數(shù)量的內核用于操作系統(tǒng)控制的CPU線程;每個線程在運行時均在所述硬件線程管理單元中登記;GPU線程產(chǎn)生模塊35用于GPU任務通過GPU API或GPU DRIVER產(chǎn)生多個在硬件線程管理單元中等待的GPU線程,所述GPU線程同時登記在硬件線程管理單元中。
[0027]此外,本實施例還涉及一種處理器,所述處理器為在CPU任務和GPU任務之間動態(tài)共享其硬件資源的UPU,所述處理器采用上述方法中的任意一項分配其內核資源。
[0028]以上所述實施例僅表達了本發(fā)明的幾種實施方式,其描述較為具體和詳細,但并不能因此而理解為對本發(fā)明專利范圍的限制。應當指出的是,對于本領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干變形和改進,這些都屬于本發(fā)明的保護范圍。因此,本發(fā)明專利的保護范圍應以所附權利要求為準。
【權利要求】
1.一種在處理器不同類型線程中分配內核資源的方法,其特征在于,所述處理器中并行運行CPU任務和GPU任務,所述CPU任務由操作系統(tǒng)分解為CPU線程并分配內核進行處理,所述CPU線程還登記到用于控制處理GPU線程的硬件線程管理單元中,GPU任務被分解為GPU線程并登記排列在所述硬件線程管理單元中等待分配內核進行處理;所述方法還包括如下步驟: A)判斷所述硬件線程管理單元中登記的線程數(shù)量是否大于由所述操作系統(tǒng)登記到所述硬件線程管理單元中的線程數(shù)量,如是,執(zhí)行步驟B);否則,返回處理CPU線程; B)分配空閑的內核對所述登記在硬件線程管理單元中的GPU線程進行處理,當空閑線程分配完且有CPU線程釋放其內核時,該內核直接由硬件線程管理單元控制,并配置給在所述硬件線程管理單元中等待的GPU線程。
2.根據(jù)權利要求1所述的在處理器不同類型線程中分配內核資源的方法,其特征在于,還包括如下步驟: C)當在所述硬件線程管理單元中等待的GPU線程執(zhí)行完成或所述GPU線程需要返回數(shù)據(jù)到操作系統(tǒng)時,當前所述CPU線程返回的內核由所述操作系統(tǒng)分配,不再直接由硬件線程管理單元控制。
3.根據(jù)權利要求2所述的在處理器不同類型線程中分配內核資源的方法,其特征在于,所述UPU在上電引導之后,分配設定數(shù)量的內核用于操作系統(tǒng)控制的CPU線程;每個線程在運行時均在所述硬件線程管理單元中登記。
4.根據(jù)權利要求3所述的在處理器不同類型的線程中分配內核資源的方法,其特征在于,所述設定數(shù)量為UPU內核總數(shù)的一半。
5.根據(jù)權利要求4所述 的在處理器不同類型線程中分配內核資源的方法,其特征在于,所述GPU任務通過GPU API或GPU DRIVER產(chǎn)生多個在硬件線程管理單元中等待的GPU線程,所述GPU線程同時登記在硬件線程管理單元中。
6.根據(jù)權利要求5所述的在處理器不同類型線程中分配內核資源的方法,其特征在于,所述步驟A)中,包括比較由所述操作系統(tǒng)登記到所述硬件線程管理單元的有效線程數(shù)量和登記到所述硬件線程管理單元的總的有效線程數(shù)量是否相等。
7.一種實現(xiàn)如權利要求1所述方法的在處理器不同類型線程中分配內核資源的裝置,其特征在于,所述處理器中并行運行CPU任務和GPU任務,所述CPU任務由操作系統(tǒng)分解為(PU線程并分配內核進行處理,所述CPU線程還登記到用于控制處理GPU線程的硬件線程管理單元中,GPU任務被分解為GPU線程并登記排列在所述硬件線程管理單元中等待分配內核進行處理;所述裝置包括: 線程數(shù)量判斷模塊:用于判斷所述硬件線程管理單元中登記的線程數(shù)量是否大于由所述操作系統(tǒng)登記到所述硬件線程管理單元中的線程數(shù)量,如是,調用空閑線程分配模塊; 空閑線程分配模塊:用于分配空閑的內核對所述登記在硬件線程管理單元中的GPU線程進行處理,當空閑線程分配完且有CPU線程釋放其內核時,該內核直接由硬件線程管理單元控制,并配置給在所述硬件線程管理單元中等待的GPU線程。
8.根據(jù)權利要求7所述的裝置,其特征在于,還包括線程釋放判斷模塊,用于當在所述硬件線程管理單元中等待的GPU線程執(zhí)行完成或所述GPU線程需要返回數(shù)據(jù)到操作系統(tǒng)時,當前所述CPU線程返回的內核由所述操作系統(tǒng)分配,不再直接由硬件線程管理單元控制。
9. 根據(jù)權利要求8所述的裝置,其特征在于,還包括初始CPU線程設置模塊和GPU線程產(chǎn)生模塊;所述初始(PU線程設置模塊用于在UPU在上電引導之后,分配設定數(shù)量的內核用于操作系統(tǒng)控制的CPU線程;每個線程在運行時均在所述硬件線程管理單元中登記;所述GPU線程產(chǎn)生模塊用于GPU任務通過GPU API或GPU DRIVER產(chǎn)生多個在硬件線程管理單元中等待的GPU線程,所述GPU線程同時登記在硬件線程管理單元中。
10.一種處理器,所述處理器為在CPU任務和GPU任務之間動態(tài)共享其硬件資源的UPU,其特征在于,所述處理器采用如權利要求1-6中任意一項的方法分配其內核資源。
【文檔編號】G06F9/50GK103617088SQ201310619787
【公開日】2014年3月5日 申請日期:2013年11月29日 優(yōu)先權日:2013年11月29日
【發(fā)明者】梅思行, 廖暢, 盧佳文, 冀謙祥 申請人:深圳中微電科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
会同县| 象州县| 德安县| 临桂县| 万荣县| 普定县| 永济市| 舒城县| 宽城| 称多县| 焦作市| 南木林县| 元氏县| 武汉市| 冷水江市| 紫阳县| 江城| 晴隆县| 荣昌县| 大邑县| 西宁市| 文成县| 遂宁市| 阿合奇县| 凤翔县| 承德市| 乌审旗| 安西县| 阜康市| 朝阳县| 龙井市| 承德县| 保靖县| 正镶白旗| 东丰县| 永顺县| 呼和浩特市| 博白县| 思茅市| 遂溪县| 余干县|