国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法及裝置的制作方法

      文檔序號:6439296閱讀:123來源:國知局
      專利名稱:非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法及裝置的制作方法
      技術領域
      本發(fā)明涉及多線程技術領域,尤其涉及一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法及裝置。
      背景技術
      隨著多核芯片(Chip Multi-Processor, CMP)技術的發(fā)展,多核處理器得到廣泛應用?,F(xiàn)有的多核處理器主要有UMA (Uniform Memory Access,統(tǒng)一內存訪問)和 NUMA(Non-Uniform Memory Access,非統(tǒng)一內存訪問)這兩種結構形式。在UMA中,設備中有多個CPU (Central Processing Unit,中央處理器/處理器) 對稱工作,共享相同的物理內存,除CPU以外的所有資源都是共享的,每個CPU訪問內存中的任何地址所需時間相同的;在NUMA中具有多個CPU模塊,每個CPU模塊由多個CPU核組成并且具有獨立的本地內存、輸入輸出接口等。不同CPU模塊可以進行連接和信息交互,故每個CPU模塊可以訪問其他CPU模塊的內存。在使用多核處理器處理傳統(tǒng)的串行程序時,需要將串行程序線程化,從而加速串行程序在多核處理器上的執(zhí)行速度,并使多核處理器的獲取資源得到更充分的利用。推測多線程技術(Speculative Multithreading, SMT)就是線程化串行程序的一種方案。推測多線程技術的基本思路是將串行程序的串行部分和循環(huán)部分(循環(huán)部分包含串行程序中的多個循環(huán)體)劃分為新的線程,并將這些線程分配至多個CPU (Central Processing Unit,中央處理器)核上執(zhí)行。在NUMA中實行推測多線程技術的方法與在UMA中實行推測多線程技術的方法基本相同。即將串行程序線程化為多線程程序,并將不同的線程隨機分配至CPU核上執(zhí)行; CPU核在執(zhí)行線程的過程中,需要不斷訪問內存以支持CPU核的獲取功能,具體的,就是CPU 核在執(zhí)行線程的過程中根據(jù)線程的具體執(zhí)行代碼,訪問本地內存,或是通過NUMA中CPU模塊之間的互聯(lián)網(wǎng)絡訪問其他CPU模塊中的內存,從而完成線程的執(zhí)行過程。在將上述方案應用在NUMA中時,CPU核在訪問內存時存在訪存延時,訪存延時會影響推測多線程機制的執(zhí)行效果,從而降低多核處理器的性能。

      發(fā)明內容
      本發(fā)明的實施例提供一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法及裝置, 能夠緩減在非統(tǒng)一內存訪問系統(tǒng)中由于訪存延時所導致的多核處理器性能的降低。本發(fā)明的實施例采用如下技術方案一方面,本發(fā)明的實施例提供一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,包括接收待處理的串行程序;獲取多核處理器的信息,所述多核處理器的信息包括所述多核處理器的互聯(lián)結構信息、所有處理器核的延時信息中的至少一項,所述延時信息包含每個所述處理器核的訪存延時;將所述串行程序中的循環(huán)部分線程化為推測線程,將所述串行程序中的串行部分線程化為控制線程;根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述控制線程和所述推測線程分配至處理器核。另一方面,本發(fā)明的實施例提供一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,包括接收模塊,用于接收待處理的串行程序;提取模塊,獲取多核處理器的信息,所述多核處理器的信息包括所述多核處理器的互聯(lián)結構信息、所有處理器核的延時信息中的至少一項,所述延時信息包含每個所述處理器核的訪存延時;線程化模塊,用于將所述串行程序中的循環(huán)部分線程化為推測線程,將所述串行程序中的串行部分線程化為控制線程;分配模塊,用于根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述控制線程和所述推測線程分配至處理器核。本發(fā)明實施例提供的方法和裝置,能夠在非統(tǒng)一內存訪問系統(tǒng)中,根據(jù)CPU核訪問內存時的延遲信息、各多核處理器的互聯(lián)結構信息和各CPU核的狀態(tài)信息等對串行程序進行線程劃分,并根據(jù)這些信息,通過相應的調度計劃,將推測線程調度至CPU核上執(zhí)行。 與現(xiàn)有技術相比,本發(fā)明實施例能夠對串行程序進行合理的線程劃分,并將這些線程以最佳策略分配至CPU核上執(zhí)行,從而緩減在非統(tǒng)一內存訪問系統(tǒng)中由于訪存延時所導致的多核處理器性能的降低。


      為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其它的附圖;圖1為本發(fā)明實施例1提供的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法的流程圖;圖2為本發(fā)明實施例2提供的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法的流程圖;圖3為本發(fā)明實施例1、實施例2提供的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法中的具體實例的流程圖;圖4為本發(fā)明實施例2提供的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法中的具體實例的結構圖;圖5為本發(fā)明實施例3提供的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置的結構示意圖;圖6為本發(fā)明實施例4提供的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置的結構示意圖。
      具體實施例方式下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。為使本發(fā)明技術方案的優(yōu)點更加清楚,下面結合附圖和實施例對本發(fā)明作詳細說明。實施例1本發(fā)明實施例提供一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,如圖1所示,該方法包括步驟101,接收待處理的串行程序。具體的,在本實施例中,在NUMA系統(tǒng)中,計算機通過操作系統(tǒng)中的程序剖析工具接受待處理的串行程序,并對該串行程序的代碼進行前段編譯及優(yōu)化,將串行程序的程序代碼轉化為中間代碼,為進一步的代碼剖析做準備,例如如圖3所示,計算機通過程序剖析工具中的SUIF前端編譯工具對串行程序的代碼進行編譯,得到中間代碼,并通過SUIF優(yōu)化器對該中間代碼進行優(yōu)化,得到優(yōu)化的中間代碼。步驟102,獲取多核處理器的信息。其中,所述多核處理器的信息包括所述多核處理器的互聯(lián)結構信息、所有處理器核的延時信息中的至少一項,所述延時信息包含所述所有處理器核的訪存延時。具體的,在本實施例中,在NUMA系統(tǒng)中,計算機可以建立兩個數(shù)據(jù)結構NUMA基本信息表和可用節(jié)點狀態(tài)信息表。收集NUMA系統(tǒng)的互聯(lián)結構信息(可以包括NUMA系統(tǒng)互聯(lián)拓撲互聯(lián)結構信息等)和延時信息(可以各核訪問不同內存段的平均延時等),并保存在 NUMA基本信息表中。同時,通過查詢系統(tǒng)狀態(tài)和運行測試程序,獲取計算機中多核處理器的使用情況,進一步的,將該多核處理器中所有CPU核的狀態(tài)信息(可以包括CPU核使用率、 CPU核之間的訪存沖突的情況等)保存在可用節(jié)點狀態(tài)信息表中,例如如圖3所示,計算機通過操作系統(tǒng)中的信息收集工具收集諸如互聯(lián)結構信息、延時信息、狀態(tài)信息等NUMA系統(tǒng)信息,并將這些信息作為NUMA啟發(fā)信息發(fā)送至線程生成器, 從而使線程生成器能夠根據(jù)互聯(lián)結構信息、延時信息、狀態(tài)信息等NUMA系統(tǒng)信息以更加合理的策略將串行程序線程化。步驟103,將所述串行程序中的可用循環(huán)部分線程化為推測線程,將所述串行程序中的串行部分和非可用循環(huán)部分線程化為控制線程。具體的,在本實施例中,將所述串行程序中的循環(huán)部分線程化為推測線程的過程可以是計算機通過剖析工具對串行程序的中間代碼進行剖析,收集循環(huán)部分的信息;對于循環(huán)部分中可被線程化的循環(huán)體,進行依賴分析,得到各個循環(huán)體之間的依賴信息;線程生成器根據(jù)循環(huán)部分的信息和循環(huán)體之間的數(shù)據(jù)傳輸信息,根據(jù)互聯(lián)結構信息、延時信息、 狀態(tài)信息等NUMA系統(tǒng)信息所衍生的線程化的規(guī)則,通過SUIF后端編譯工具將中間代碼編譯為線程化可執(zhí)行代碼,例如如圖3所示,計算機通過剖析工具(GNU Prof)對優(yōu)化的中間代碼進行動態(tài)剖析, 收集包括循環(huán)體起點_終點位置,循環(huán)次數(shù),循環(huán)體大小等信息;并對于潛在的派生循環(huán)體,進行深入的依賴分析,包括數(shù)據(jù)依賴分析和控制依賴分析,并獲得循環(huán)間依賴信息。線程生成器利用剖析信息和循環(huán)間依賴信息,根據(jù)從NUMA啟發(fā)信息衍生得到啟發(fā)式規(guī)則,確定適合派生為推測多線程的區(qū)域和派生線程數(shù)目,并在派生區(qū)域首尾加入多線程代碼和控制信息,并對循環(huán)判定條件和推測線程的部分初始化數(shù)據(jù)進行預測賦值。最后,使用SUIF 后端編譯工具將線程生成器生成的代碼編譯為線程化可執(zhí)行代碼。步驟104,根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述控制線程和所述推測線程分配至處理器核。具體的,在本實施例中,計算機將串行程序經(jīng)過線程化所得到的各個線程的執(zhí)行代碼,根據(jù)互聯(lián)結構信息和/或延時信息所衍生的分配規(guī)則,以更加合理的策略分配至CPU 核中。本發(fā)明實施例提供的方法,能夠在非統(tǒng)一內存訪問系統(tǒng)中,根據(jù)CPU核的訪問內存時的延遲信息、各多核處理器的互聯(lián)結構信息和各CPU核的狀態(tài)信息等對串行程序進行線程劃分,并根據(jù)這些信息,通過相應的調度計劃,將推測線程調度至CPU核上執(zhí)行。與現(xiàn)有技術相比,本發(fā)明實施例能夠對串行程序進行合理的線程劃分,并將這些線程以最佳策略分配至CPU核上執(zhí)行,從而緩減在非統(tǒng)一內存訪問系統(tǒng)中由于訪存延時所導致的多核處理器性能的降低。實施例2本發(fā)明實施例提供一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,如圖2所示,該方法包括步驟201,接收待處理的串行程序。步驟202,獲取多核處理器的信息,所述多核處理器的信息包括所述多核處理器的互聯(lián)結構信息、所有處理器核的延時信息中的至少一項。其中,所述延時信息包含所述所有處理器核的訪存延時。步驟203,確定所述循環(huán)部分中的循環(huán)體,獲取每一個循環(huán)體在每兩次循環(huán)之間的
      數(shù)據(jù)傳輸量。步驟204,判斷所述數(shù)據(jù)傳輸量是否小于預設值。其中,若所述數(shù)據(jù)傳輸量小于預設值,則所述循環(huán)體為串行程序中的可用循環(huán)體; 若所述數(shù)據(jù)傳輸量不小于預設值,則所述循環(huán)體為不可用循環(huán)體。關于預設值的設定可以由本領域技術人員根據(jù)實際需要進行,在此不再贅述。進一步的,計算機可以根據(jù)線程提交時的時延自動反饋調節(jié)預設值。步驟205,根據(jù)所述使用率獲取可用處理器核的數(shù)量。其中,所述多核處理器的信息還包括所有處理器核的狀態(tài)信息,所述狀態(tài)信息包含所有處理器的使用率。具體的,在本實施例中,計算機可以從可用節(jié)點狀態(tài)信息表里獲取狀態(tài)信息,該狀態(tài)信息中包含的可用CPU核數(shù)目。步驟206,獲取所述串行程序中所有可用循環(huán)體所包含的循環(huán)次數(shù)。
      具體的,在本實施例中,計算機可以通過剖析工具對中間代碼進行剖析,并根據(jù)剖析所得到的信息獲取循環(huán)體循環(huán)次數(shù)。步驟207,取所述可用處理器核的數(shù)量和所述循環(huán)次數(shù)的最小值作為推測線程的數(shù)目。具體的,在本實施例中,計算機取所述可用處理器核的數(shù)量和所述循環(huán)次數(shù)的最小值作為推測線程的數(shù)目,例如node表示可用CPU核的數(shù)目,loop表示計算機在通過剖析工具對中間代碼進行剖析所得到的循環(huán)體循環(huán)次數(shù),從而推測線程數(shù)目等于node和loop中的較小值,即推測線程數(shù)目=Min {node, loop},例如可用CPU核數(shù)目node = 2,循環(huán)體循環(huán)次數(shù)loop = 3,則推測線程數(shù)目為2。步驟208,依次獲取所述串行程序中的可用循環(huán)體,并將獲取到的可用循環(huán)體依次生成為推測線程。具體的,在本實施例中,計算機可以通過線程生成器將可用循環(huán)體逐個依次生成為推測線程中。步驟209,獲取當前推測線程的執(zhí)行時間,判斷所述執(zhí)行時間是否不小于閾值。其中,所述閾值根據(jù)所有處理器核的訪存延時的平均值獲得。其中,若所述執(zhí)行時間小于所述閾值,則重復步驟208,獲取下一個可用循環(huán)體并將其加入至當前的推測線程中,直至當前推測線程的執(zhí)行時間不小于所述閾值。具體的,在本實施例中,計算機可以通過線程生成器將一個可用循環(huán)體加入到推測線程中,并檢測該推測線程執(zhí)行時間是否大于等于所有處理器核的訪存延時的平均值。 如果這個條件不滿足,則可以選取另一個可用循環(huán)體并加入到該推測線程中,并再次檢測該推測線程執(zhí)行時間是否大于等于所有處理器核的訪存延時的平均值,直至推測線程執(zhí)行時間大于等于所有處理器核的訪存延時的平均值為止。從而,使該推測線程中包含了足夠數(shù)量的循環(huán)體,以便該推測線程在CPU核上執(zhí)行時,能夠更多地利用CPU核的計算功能。步驟210,將所有不可用循環(huán)體加入到控制線程中。具體的,在本實施例中,計算機將經(jīng)過步驟204所得到的不可用循環(huán)體加入到控制線程中,從而使包含了可用循環(huán)體的推測線程在CPU核上執(zhí)行時,能夠更多地利用CPU核的計算功能。步驟211,根據(jù)所述延時信息,將所述控制線程分配至所述可用處理器核中延時時間最小的處理器核。具體的,在本實施例中,計算機可以從可用節(jié)點狀態(tài)信息表中所包含的延時信息中,鎖定平均時延最小的CPU核,并將控制線程分配至該CPU核上。步驟212,根據(jù)所述互聯(lián)結構信息確定與控制線程所在的處理器核位于同一個處理器模塊的處理器核。具體的,在本實施例中,如圖4所示,為一個16核NUMA結構的多核處理器。其中, 該多核處理器由4個CPU模塊組成,并且每個CPU模塊都包含獨立的4個CPU核、本地內存、1/0槽口等元件,同時這4個CPU模塊共享一個高速緩沖存儲器。由于各個CPU模塊之間可以通過互聯(lián)網(wǎng)絡進行連接和信息交互,因此每個CPU核可以訪問其他CPU模塊的本地內存。但是,CPU核訪問本地內存的速度將遠高于訪問系統(tǒng)內其它節(jié)點的本地內存的速度,
      9并且訪問其他CPU模塊的本地內存的CPU核會產生較大的延時。計算機可以根據(jù)互聯(lián)結構信息確定與控制線程所在的CPU核位于同一個處理器模塊的CPU核,例如控制線程所在的CPU核為CPU模塊1中的Cl,計算機根據(jù)互聯(lián)結構信息獲知同樣是CPU模塊1中的C2、C3、C4為與控制線程所在的處理器核位于同一個處理器模塊的處理器核。步驟213,將推測線程優(yōu)先分配至與控制線程所在的處理器核位于同一個處理器模塊的處理器核。步驟214,在沒有被分配的推測線程中,獲得相互間具有數(shù)據(jù)依賴關系的推測線程及具有數(shù)據(jù)依賴的推測線程的數(shù)據(jù)傳輸量。具體的,在本實施例中,如圖3所示,由于串行程序的源代碼是前后連續(xù)的,所以在一個推測線程的執(zhí)行過程中,會需要另一個推測線程的數(shù)據(jù)、程序代碼或執(zhí)行結果等,即推測線程中之間會存在數(shù)據(jù)依賴,計算機可以通過剖析工具對中間代碼進行動態(tài)剖析,從而確定相互之間具有數(shù)據(jù)依賴的推測線程,并獲取具有數(shù)據(jù)依賴的推測線程的數(shù)據(jù)傳輸量。步驟215,將有具有數(shù)據(jù)依賴的推測線程中的數(shù)據(jù)傳輸量大的推測線程優(yōu)先分配至位于同一個處理器模塊中的處理器核。具體的,在本實施例中,計算機將相互之間具有數(shù)據(jù)依賴的推測線程分配至位于同一個處理器模塊中的處理器核,例如如圖3所示,計算機可以通過剖析工具對中間代碼進行動態(tài)剖析,并得知推測線程A和推測線程B之間、推測線程C和推測線程D之間、推測線程E和推測線程F之間存在數(shù)據(jù)依賴并獲得了推測線程A和推測線程B之間的數(shù)據(jù)傳輸量1、推測線程C和推測線程D 之間的數(shù)據(jù)傳輸量2、推測線程E和推測線程F之間的數(shù)據(jù)傳輸量3,并且數(shù)據(jù)傳輸量1大于數(shù)據(jù)傳輸量2,數(shù)據(jù)傳輸量2大于數(shù)據(jù)傳輸量3。如圖4所示,由于數(shù)據(jù)傳輸量1大于數(shù)據(jù)傳輸量2,數(shù)據(jù)傳輸量2大于數(shù)據(jù)傳輸量 3,則計算機優(yōu)先將推測線程A和推測線程B分別分配至CPU模塊2中的Cl和C2上;之后計算機采用相同方法,由于數(shù)據(jù)傳輸量2大于數(shù)據(jù)傳輸量3,則計算機優(yōu)先將推測線程C和推測線程D分別分配至CPU模塊2中的C3和C4上;對于推測線程E和推測線程F,若還有可以同時容納推測線程E和推測線程F這兩個推測線程的CPU模塊,則將推測線程E和推測線程F分配至該CPU模塊中,若已沒有可以同時容納兩個推測線程的CPU模塊,則將推測線程E和推測線程F歸入其余沒有被分配的推測線程,并采用步驟216的方法處理其余沒有被分配的推測線程。在線程的執(zhí)行過程中,Cl執(zhí)行推測線程A,并將執(zhí)行過程中推測線程A的信息儲存至本地內存2中,同時,C2執(zhí)行推測線程B的過程中需要讀取推測線程A的信息,則C2能夠直接從本地內存2讀取Cl儲存在本地內存2中的推測線程A的信息,從而避免了 CPU核在訪問其他CPU模塊的本地內存時所產生的延時,從而緩減了因延時導致的CPU執(zhí)行多線程程序時的性能降低。步驟216,將其余沒有被分配的推測線程優(yōu)先分配至延時時間與控制線程所在處理器核的延時時間的差值小的處理器核。具體的,在本實施例中,計算機將控制線程所在處理器核的延時時間與剩余的可用CPU核的訪存時延時間之間的差值由小到大排序,并將沒有被分配的推測線程優(yōu)先分配至差值小的處理器核上,從而保證了在每次分配CPU核的過程中,使用的都是與控制線程所在處理器核的延時時間的差值最小的那一部分CPU核,從而緩減了因延時導致的CPU執(zhí)行多線程程序時的性能降低。本發(fā)明實施例提供的方法,能夠在非統(tǒng)一內存訪問系統(tǒng)中,根據(jù)CPU核的訪問內存時的延遲信息、各多核處理器的互聯(lián)結構信息和各CPU核的狀態(tài)信息等對串行程序進行線程劃分,并根據(jù)這些信息,通過相應的調度計劃,將推測線程調度至CPU核上執(zhí)行。與現(xiàn)有技術相比,本發(fā)明實施例能夠對串行程序進行合理的線程劃分,并將這些線程以最佳策略分配至CPU核上執(zhí)行,從而緩減在非統(tǒng)一內存訪問系統(tǒng)中由于訪存延時所導致的多核處理器性能的降低。實施例3本發(fā)明實施例提供一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,如圖3所示,該裝置包括接收模塊501、提取模塊502、線程化模塊503、分配模塊504。接收模塊501,用于接收待處理的串行程序。提取模塊502,用于獲取多核處理器的信息,所述多核處理器的信息包括所述多核處理器的互聯(lián)結構信息、所有處理器核的延時信息中的至少一項。其中,所述延時信息包含所述所有處理器核的訪存延時。線程化模塊503,用于將所述串行程序中的循環(huán)部分線程化為推測線程,將所述串行程序中的串行部分線程化為控制線程。分配模塊504,用于根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述控制線程和所述推測線程分配至處理器核。本發(fā)明實施例提供的裝置,能夠在非統(tǒng)一內存訪問系統(tǒng)中,通過接收模塊接受待處理的串行程序,并通過提取模塊獲取CPU核的訪問內存時的延遲信息、各多核處理器的互聯(lián)結構信息和各CPU核的狀態(tài)信息等信息,再通過線程化模塊根據(jù)這些信息對串行程序進行線程劃分,并根據(jù)這些信息,使用分配模塊,通過相應的調度計劃,將推測線程調度至 CPU核上執(zhí)行。與現(xiàn)有技術相比,本發(fā)明實施例能夠對串行程序進行合理的線程劃分,并將這些線程以最佳策略分配至CPU核上執(zhí)行,從而緩減在非統(tǒng)一內存訪問系統(tǒng)中由于訪存延時所導致的多核處理器性能的降低。實施例4本發(fā)明實施例提供一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,如圖3所示,該裝置50包括接收模塊501、提取模塊502、線程化模塊503、分配模塊504,其中,線程化模塊503包括第一提取單元5031、第一檢測單元5032、第二提取單元5033、第三提取單元5034、比較單元5035、第一添加單元5036、第二檢測單元5037、第二添加單元5038 ;分配模塊504包括第一分配單元5041、定位單元5042、第二分配單元5043、篩選單元5044、第三分配單元5045、第四分配單元5046。接收模塊501,用于接收待處理的串行程序。提取模塊502,用于獲取多核處理器的互聯(lián)結構信息、所有處理器核的延時信息和所有處理器核的狀態(tài)信息中的至少一項。其中,所述延時信息包含所述所有處理器核的訪存延時。
      線程化模塊503,用于將所述串行程序中的可用循環(huán)部分線程化為推測線程,將所述串行程序中的串行部分和非可用循環(huán)部分線程化為控制線程。其中所述線程化模塊503包括第一提取單元5031,用于確定所述循環(huán)部分中的循環(huán)體,獲取每一個循環(huán)體在每兩次循環(huán)之間的數(shù)據(jù)傳輸量。第一檢測單元5032,用于判斷所述數(shù)據(jù)傳輸量是否小于預設值。其中,若所述數(shù)據(jù)傳輸量小于預設值,則所述循環(huán)體為串行程序中的可用循環(huán)體; 若所述數(shù)據(jù)傳輸量不小于預設值,則所述循環(huán)體為不可用循環(huán)體。第二提取單元5033,用于根據(jù)所述使用率獲取可用處理器核的數(shù)量。其中,所述多核處理器的信息還包括所有處理器核的狀態(tài)信息,所述狀態(tài)信息包含所有處理器的使用率。第三提取單元5034,用于獲取所述串行程序中所有可用循環(huán)體所包含的循環(huán)次數(shù)。比較單元5035,用于取所述可用處理器核的數(shù)量和所述循環(huán)次數(shù)的最小值作為推測線程的數(shù)目。第一添加單元5036,用于依次獲取所述串行程序中的可用循環(huán)體,并將獲取到的可用循環(huán)體依次生成為推測線程,獲取下一個可用循環(huán)體并加入到當前推測線程中,直至當前推測線程的執(zhí)行時間不小于所述閾值。第二檢測單元5037,用于獲取當前推測線程的執(zhí)行時間,判斷所述執(zhí)行時間是否不小于閾值,所述閾值根據(jù)所有處理器核的訪存延時的平均值獲得。若小于,則通過所述第一添加單元5036獲取下一個可用循環(huán)體并加入到當前推測線程中,直至當前推測線程的執(zhí)行時間不小于所述所有處理器核的訪存延時的平均值。第二添加單元5038,用于將所有不可用循環(huán)體加入到控制線程中。分配模塊504,用于根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述控制線程和所述推測線程分配至處理器核。其中所述分配模塊504包括第一分配單元5041,用于根據(jù)所述延時信息,將所述控制線程分配至所述可用處理器核中相互訪存平均延時時間最小的處理器核。定位單元5042,用于根據(jù)所述互聯(lián)結構信息確定與控制線程所在的處理器核位于同一個處理器模塊的處理器核。第二分配單元5043,用于將推測線程優(yōu)先分配至與控制線程所在的處理器核位于同一個處理器模塊的處理器核。篩選單元5044,用于在沒有被分配的推測線程中,獲取具有數(shù)據(jù)依賴的推測線程, 并獲取所述具有數(shù)據(jù)依賴的推測線程的數(shù)據(jù)傳輸量。第三分配單元5045,用于將有具有數(shù)據(jù)依賴的推測線程中的數(shù)據(jù)傳輸量大的推測線程優(yōu)先分配至位于同一個處理器模塊中的處理器核。第四分配單元5046,用于將其余沒有被分配的推測線程優(yōu)先分配至延時時間與控制線程所在處理器核的延時時間的差值小的處理器核。本發(fā)明實施例提供的裝置,能夠在非統(tǒng)一內存訪問系統(tǒng)中,通過接收模塊接受待處理的串行程序,并通過提取模塊獲取CPU核的訪問內存時的延遲信息、各多核處理器的互聯(lián)結構信息和各CPU核的狀態(tài)信息等信息,再通過線程化模塊根據(jù)這些信息對串行程序進行線程劃分,并根據(jù)這些信息,使用分配模塊,通過相應的調度計劃,將推測線程調度至 CPU核上執(zhí)行。與現(xiàn)有技術相比,本發(fā)明實施例能夠對串行程序進行合理的線程劃分,并將這些線程以最佳策略分配至CPU核上執(zhí)行,從而緩減在非統(tǒng)一內存訪問系統(tǒng)中由于訪存延時所導致的多核處理器性能的降低。本領域普通技術人員可以理解實現(xiàn)上述實施例裝置中的全部或部分流程,是可以通過獲取機程序來指令相關的硬件來完成,所述的程序可存儲于一獲取機可讀取存儲介質中,該程序在執(zhí)行時,可包括如上述各裝置的實施例的流程。其中,所述的存儲介質可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random Access Memory, RAM)等。以上所述,僅為本發(fā)明的具體實施方式
      ,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應該以權利要求的保護范圍為準。
      權利要求
      1.一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,其特征在于,包括接收待處理的串行程序;獲取多核處理器的信息,所述多核處理器的信息包括所述多核處理器的互聯(lián)結構信息、所有處理器核的延時信息中的至少一項,所述延時信息包含每個所述處理器核的訪存延時;將所述串行程序中的可用循環(huán)部分線程化為推測線程,將所述串行程序中的串行部分和非可用循環(huán)部分線程化為控制線程;根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述控制線程和所述推測線程分配至處理器核。
      2.根據(jù)權利要求1所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,其特征在于,所述將所述串行程序中的可用循環(huán)部分線程化為推測線程包括確定所述循環(huán)部分中的循環(huán)體,獲取每一個循環(huán)體在每兩次循環(huán)之間的數(shù)據(jù)傳輸量;判斷所述數(shù)據(jù)傳輸量是否小于預設值,若所述數(shù)據(jù)傳輸量小于預設值,則所述循環(huán)體為串行程序中的可用循環(huán)體,若所述數(shù)據(jù)傳輸量不小于預設值,則所述循環(huán)體為不可用循環(huán)體;將可用循環(huán)體生成為推測線程,將不可用循環(huán)體加入到控制線程中。
      3.根據(jù)權利要求2所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,其特征在于,所述多核處理器的信息還包括所有處理器核的狀態(tài)信息,所述狀態(tài)信息包含所有處理器的使用率,在所述將可用循環(huán)體生成為推測線程之前,所述方法還包括根據(jù)所述使用率獲取可用處理器核的數(shù)量;獲取所述串行程序中所有可用循環(huán)體所包含的循環(huán)次數(shù);取所述可用處理器核的數(shù)量和所述循環(huán)次數(shù)的最小值作為推測線程的數(shù)目。
      4.根據(jù)權利要求2所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,其特征在于,所述將可用循環(huán)體生成為推測線程包括依次獲取所述串行程序中的可用循環(huán)體,并將獲取到的可用循環(huán)體依次生成為推測線程,獲取當前推測線程的執(zhí)行時間,判斷所述執(zhí)行時間是否不小于閾值,所述閾值根據(jù)所有處理器核的訪存延時的平均值獲得;若小于,則獲取下一個可用循環(huán)體并加入到當前推測線程中,直至當前推測線程的執(zhí)行時間不小于所述閾值。
      5.根據(jù)權利要求1所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,其特征在于,所述將所述控制線程分配至處理器核為根據(jù)所述延時信息,將所述控制線程分配至所述可用處理器核中相互訪存平均延時時間最小的處理器核。
      6.根據(jù)權利要求1至5任一項所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法, 其特征在于,所述根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述推測線程分配至處理器核包括根據(jù)所述互聯(lián)結構信息確定與控制線程所在的處理器核位于同一個處理器模塊的處理器核;將推測線程優(yōu)先分配至與控制線程所在的處理器核位于同一個處理器模塊的處理器核。
      7.根據(jù)權利要求6所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,其特征在于,所述根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述推測線程分配至處理器核還包括在沒有被分配的推測線程中,獲得推測線程相互間的數(shù)據(jù)依賴及數(shù)據(jù)傳輸量。 將有具有數(shù)據(jù)依賴的推測線程中的數(shù)據(jù)傳輸量大的推測線程優(yōu)先分配至位于同一個處理器模塊中的處理器核。
      8.根據(jù)權利要求7所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法,其特征在于,所述根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述推測線程分配至處理器核還包括將其余沒有被分配的推測線程優(yōu)先分配至延時時間與控制線程所在處理器核的延時時間的差值小的處理器核。
      9.一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,其特征在于,包括 接收模塊,用于接收待處理的串行程序;提取模塊,獲取多核處理器的信息,所述多核處理器的信息包括所述多核處理器的互聯(lián)結構信息、所有處理器核的延時信息中的至少一項,所述延時信息包含每個所述處理器核的訪存延時;線程化模塊,用于將所述串行程序中的可用循環(huán)部分線程化為推測線程,將所述串行程序中的串行部分和非可用循環(huán)部分線程化為控制線程;分配模塊,用于根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述控制線程和所述推測線程分配至處理器核。
      10.根據(jù)權利要求9所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,其特征在于,所述線程化模塊包括第一提取單元,用于確定所述循環(huán)部分中的循環(huán)體,獲取每一個循環(huán)體在每兩次循環(huán)之間的數(shù)據(jù)傳輸量;第一檢測單元,用于判斷所述數(shù)據(jù)傳輸量是否小于預設值,若所述數(shù)據(jù)傳輸量小于預設值,則所述循環(huán)體為串行程序中的可用循環(huán)體;若所述數(shù)據(jù)傳輸量不小于預設值,則所述循環(huán)體為不可用循環(huán)體;第一添加單元,用于將可用循環(huán)體生成為推測線程; 第二添加單元,用于將所有不可用循環(huán)體加入到控制線程中。
      11.根據(jù)權利要求10所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,其特征在于,所述多核處理器的信息還包括所有處理器核的狀態(tài)信息,所述狀態(tài)信息包含所有處理器的使用率,在所述第一添加單元之前,所述裝置還包括第二提取單元,用于根據(jù)所述使用率獲取可用處理器核的數(shù)量; 第三提取單元,用于獲取所述串行程序中所有可用循環(huán)體所包含的循環(huán)次數(shù); 比較單元,用于取所述可用處理器核的數(shù)量和所述循環(huán)次數(shù)的最小值作為推測線程的數(shù)目。
      12.根據(jù)權利要求10所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,其特征在于,所述線程化模塊還包括所述第一添加單元,用于將可用循環(huán)體生成為推測線程,所述將可用循環(huán)體加入至推測線程為依次獲取所述串行程序中的可用循環(huán)體,并將獲取到的可用循環(huán)體依次生成為推測線程,獲取下一個可用循環(huán)體并加入到當前推測線程中,直至當前推測線程的執(zhí)行時間不小于所述閾值;第二檢測單元,用于獲取當前推測線程的執(zhí)行時間,判斷所述執(zhí)行時間是否不小于閾值,所述閾值根據(jù)所有處理器核的訪存延時的平均值獲得。
      13.根據(jù)權利要求9所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,其特征在于,所述分配模塊包括第一分配單元,用于根據(jù)所述延時信息,將所述控制線程分配至所述可用處理器核中相互訪存平均延時時間最小的處理器核。
      14.根據(jù)權利要求9至13任一項所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,其特征在于,所述分配模塊包括定位單元,用于根據(jù)所述互聯(lián)結構信息確定與控制線程所在的處理器核位于同一個處理器模塊的處理器核;第二分配單元,用于將推測線程優(yōu)先分配至與控制線程所在的處理器核位于同一個處理器模塊的處理器核。
      15.根據(jù)權利要求14所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,其特征在于,所述分配模塊包括篩選單元,用于在沒有被分配的推測線程中,獲取具有數(shù)據(jù)依賴的推測線程,并獲取所述具有數(shù)據(jù)依賴的推測線程的數(shù)據(jù)傳輸量;第三分配單元,用于將有具有數(shù)據(jù)依賴的推測線程中的數(shù)據(jù)傳輸量大的推測線程優(yōu)先分配至位于同一個處理器模塊中的處理器核。
      16.根據(jù)權利要求15所述的非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的裝置,其特征在于,所述分配模塊包括第四分配單元,用于將其余沒有被分配的推測線程優(yōu)先分配至延時時間與控制線程所在處理器核的延時時間的差值小的處理器核。
      全文摘要
      本發(fā)明實施例公開了一種非統(tǒng)一內存訪問系統(tǒng)中線程化串行程序的方法及裝置,涉及多線程技術領域,能夠緩減在非統(tǒng)一內存訪問系統(tǒng)中由于訪存延時差異所導致的多核處理器執(zhí)行串行程序時的性能的降低。本發(fā)明的方法包括接收待處理的串行程序;獲取多核處理器的信息,其中包括多核處理器的互聯(lián)結構信息、每個所述處理器核的訪存延時中的至少一項;將所述串行程序中的可用循環(huán)部分線程化為推測線程,將所述串行程序中的串行部分和非可用循環(huán)部分線程化為控制線程;根據(jù)所述互聯(lián)結構信息和所述延時信息中的至少一項,將所述控制線程和所述推測線程分配至處理器核。本發(fā)明用于支持推測多線程機制的非統(tǒng)一內存訪問系統(tǒng)中線程化執(zhí)行串行程序。
      文檔編號G06F9/50GK102520915SQ20111038186
      公開日2012年6月27日 申請日期2011年11月25日 優(yōu)先權日2011年11月25日
      發(fā)明者張悠慧, 李艷華, 譚璽 申請人:華為技術有限公司, 清華大學
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1