專利名稱:用于多核處理器的多線程應(yīng)用識別存儲器調(diào)度方案的制作方法
用于多核處理器的多線程應(yīng)用識別存儲器調(diào)度方案
背景技術(shù):
向多/許多核(多核)處理器的轉(zhuǎn)變已使多線程應(yīng)用在客戶端和服務(wù)器平臺上都很流行。此類應(yīng)用的高線程級并行(TLP)有效地利用了多核處理器(如芯片多處理器(CMP)系統(tǒng))支持的硬件并行。存在對于加速多線程應(yīng)用的執(zhí)行的軟件和硬件提議,例如一起執(zhí)行應(yīng)用的線程的操作系統(tǒng)的協(xié)調(diào)線程調(diào)度。然而,沒有提議解決用于多線程應(yīng)用的存儲器調(diào)度(如由存儲器控制器)中可使性能顯著降級的性能問題。諸如先就緒先來到先服務(wù)(FRFCFS)機制和并行識別批量調(diào)度(PAR-BS)機制的一些機制試圖改善存儲器控制器的性能。例如,F(xiàn)RFCFS機制通過調(diào)度訪問存儲體的行緩沖器的存儲器請求來提高存儲器控制器的性能。PAR-BS機制將存儲器請求分批,一批一批地執(zhí)行存儲器請求,并且通過對每個批次應(yīng)用最短作業(yè)優(yōu)先法(SJF)調(diào)度來改善存儲器控制器的性能。然而,這兩種機制只優(yōu)化了用于單線程應(yīng)用的存儲器調(diào)度,而不能優(yōu)化用于多線程應(yīng)用的存儲器調(diào)度?!ぐl(fā)明的實施例的概要根據(jù)一個實施例,一種計算設(shè)備實現(xiàn)的方法可包括由計算設(shè)備識別多線程應(yīng)用和由計算設(shè)備基于對多線程應(yīng)用的識別調(diào)整用于多線程應(yīng)用的存儲器調(diào)度方案。根據(jù)一個方面,多線程應(yīng)用可與第一組相關(guān);識別多線程應(yīng)用可包括接收與第一組相關(guān)的多線程應(yīng)用的線程;并且該方法還可包括接收與第二組相關(guān)的單線程應(yīng)用的線程。根據(jù)另一方面,調(diào)整存儲器調(diào)度方案可包括確定第一組和第二組中的空閑線程的數(shù)量;基于確定的第一組中的空閑線程的數(shù)量對第一組進行排名;基于確定的第二組中的空閑線程的數(shù)量對第二組進行排名;以及使與第一組和第二組中排名較高的一個組相關(guān)的存儲器請求優(yōu)先于與第一組和第二組中排名較低的一個組相關(guān)的存儲器請求。根據(jù)另一個實施例,設(shè)備的存儲器控制器可包括用來接收與組相關(guān)的多線程應(yīng)用的線程以及接收與其它組相關(guān)的單線程應(yīng)用的線程的處理邏輯。該處理邏輯還可確定所述組和所述其它組中空閑線程的數(shù)量;基于確定的所述組中的空閑線程的數(shù)量對所述組進行排名;以及基于確定的所述其它組中的空閑線程的數(shù)量對所述其它組進行排名。處理邏輯還可使與所述組和所述其它組中排名較高的一個組相關(guān)的存儲器請求優(yōu)先于與所述組和所述其它組中排名較低的一個組相關(guān)的存儲器請求。根據(jù)又一個實施例,設(shè)備可包括用來識別多線程應(yīng)用并基于對多線程應(yīng)用的識別調(diào)整用于多線程應(yīng)用的存儲器調(diào)度方案的存儲器控制器。根據(jù)又一個實施例,一種計算機可讀存儲設(shè)備可存儲一個或多個計算機可執(zhí)行指令,并且可包括用來從一組其它應(yīng)用中識別多線程應(yīng)用的一個或多個指令以及用來基于對多線程應(yīng)用的識別調(diào)整用于多線程應(yīng)用的存儲器調(diào)度方案的一個或多個指令。附圖簡述 并入本說明書中并構(gòu)成本說明書的一部分的附圖示出了本文描述的一個或多個實施例,并且與其它描述一起對這些實施例進行了解釋。其中
圖I是經(jīng)歷性能降級的示例性存儲器調(diào)度布置的示意圖;圖2是可根據(jù)本文描述的實施例的可執(zhí)行多線程應(yīng)用識別存儲器調(diào)度方案的設(shè)備的示例性組件的示意圖;圖3是圖2中描述的設(shè)備的處理單元和主存儲器的示例性組件的示意圖;圖4是圖3中描述的處理單元的存儲器控制器的示例性功能組件的示意圖;圖5是圖4中描述的存儲器控制器的線程組接收器的示例性功能組件的示意圖;圖6是圖4中描述的存儲器控制器的空閑線程檢測器的示例性功能組件的示意圖;圖7是圖4中描述的存儲器控制器的組排名器的示例性功能組件的示意圖;圖8是圖4中描述的存儲器控制器的存儲器調(diào)度器的示例性功能組件的示意圖;圖9A和圖9B是能夠由圖5中描述的線程組接收器執(zhí)行的示例性操作的示意圖;圖IOA和圖IOB是能夠由圖6中描述的空閑線程檢測器執(zhí)行的示例性操作的示意圖;
圖11是能夠由圖7中描述的組排名器執(zhí)行的示例性操作的示意圖;圖12A和圖12B是能夠由圖8中描述的存儲器調(diào)度器執(zhí)行的示例性操作的示意圖;圖13-圖15是根據(jù)本文描述的實施例的用于多線程應(yīng)用識別存儲器調(diào)度的示例性過程的流程圖。
具體實施例方式以下詳細描述參考附圖。不同附圖中的相同參考數(shù)字可標(biāo)識相同或相似的元件。此外,以下詳細描述不限制本發(fā)明。概述本文描述的系統(tǒng)和/或方法可使設(shè)備(如帶有多核處理器的設(shè)備,例如個人計算機、膝上型計算機、平板計算機、服務(wù)器設(shè)備、手持或移動設(shè)備和/或其它類型的計算或通信設(shè)備)的存儲器控制器能夠識別一個或多個多線程應(yīng)用,并基于對多線程應(yīng)用的識別調(diào)整或優(yōu)化用于多線程應(yīng)用的存儲器調(diào)度方案。此類系統(tǒng)和/或方法可防止歸因于不充足的存儲器調(diào)度的(如設(shè)備中的)性能降級。在一個實施例中,存儲器控制器可接收與第一組相關(guān)的多線程應(yīng)用的線程,并可接收與第二組相關(guān)的單線程應(yīng)用的線程。存儲器控制器可確定第一和第二組中的空閑線程的數(shù)量,可基于空閑線程的數(shù)量對第一組和第二組進行排名,并可使來自具有較高排名的組的存儲器請求優(yōu)先于來自具有較低排名的組的存儲器請求。如本文所使用的,術(shù)語“線程”旨在被寬泛地解釋為包括允許應(yīng)用執(zhí)行順序的動作或一次執(zhí)行許多動作的計算機程序(或應(yīng)用)的部分(如任務(wù))。應(yīng)用中的每個線程可識別在被應(yīng)用指示時執(zhí)行的進程。如本文所使用的,術(shù)語“組件”和“設(shè)備”旨在被寬泛地理解為包括硬件(如處理器、微處理器、專用集成電路(ASIC)、現(xiàn)場可編程門陣列(FPGA)、芯片、存儲設(shè)備(如只讀存儲器(ROM)、隨機存取存儲器(RAM)等)等)或硬件和軟件的組合(如執(zhí)行存儲設(shè)備中包含的軟件的處理器、微處理器、ASIC等)。
示例性存儲器調(diào)度布置圖I是經(jīng)歷性能降級的示例性存儲器調(diào)度布置100的示意圖。如圖所示,單線程應(yīng)用(如APP_A)可包括與多核處理器的第一存儲體(如BANKl)和第一核(如C0RE_1)相關(guān)的兩個存儲器請求。多線程應(yīng)用(如APP_B)可包括兩個線程(如線程APP_B1和APP_B2)和用于同步的障礙。在一個實例中,用于同步的障礙可指示多核處理器對在障礙之前和之后提供的存儲器請求實施排序約束。線程APP_B1可與多核處理器的第二核(如C0RE_2)相關(guān),可包括在障礙之后提供的兩個存儲器請求,并可包括在障礙之前提供的且與第一存儲體BANKl相關(guān)的三個存儲器請求。線程APP_B2可與多核處理器的第三核(如C0RE_3)相關(guān),并可包括在障礙之后提供的兩個存儲器請求。多線程應(yīng)用APP_B可被設(shè)計為通過使線程APP_B1訪問第一存儲體BANKl且使線程APP_B2訪問第二存儲體BANK2來利用存儲體級并行。由于在障礙周圍可能的負載不平衡(如由于實現(xiàn)完美的運行時負載平衡可能很難而可能發(fā)生這種情況),線程APP_B2可在線程APP_B1之前到達障礙。負載不平衡可阻止與線程APP_B2相關(guān)的存儲器請求訪問第二存 儲體BANK2,從而可導(dǎo)致第三核C0RE_3處于空閑狀態(tài)。第三核C0RE_3可保持在空閑狀態(tài),直到與線程APP_B1相關(guān)的(如在障礙之下提供的)三個存儲器請求被處理。因此,與線程APP_B1相關(guān)的(如在障礙之下提供的)三個存儲器請求應(yīng)被賦予高于與單線程應(yīng)用APP_A相關(guān)的存儲器請求的優(yōu)先級(如使得第三核C0RE_3保持空閑達三個周期)。然而,當(dāng)前存儲器調(diào)度方案不識別多線程應(yīng)用且試圖調(diào)度存儲器請求以加速語義地阻止多線程應(yīng)用的其它線程取得進展的同一多線程應(yīng)用的線程。例如,由于障礙,線程APP_B1可阻止線程APP_B2取得進展。如果在布置100中采用FRFCFS存儲器調(diào)度方案,則由于單線程應(yīng)用APP_A具有高于線程APP_B1的行緩沖器命中率,F(xiàn)RFCFS方案可使性能降級。在FRFCFS方案中,命中行緩沖器的存儲器請求可被優(yōu)先化。因此,單線程應(yīng)用
存儲器請求可優(yōu)先于線程APP_B1的存儲器請求,因為單線程應(yīng)用APP_A的存儲器請求與第一存儲體BANKl的相同行(如行I)相關(guān),而線程APP_B1的存儲器請求與第一存儲體BANKl的不同行(如行2-4)相關(guān)。這可將第三核C0RE_3的空閑時間從三個周期增加到五個周期,并可阻止第三核C0RE_3在障礙之后執(zhí)行多線程應(yīng)用APP_B。如果布置100中采用PAR-BS存儲器調(diào)度方案,則根據(jù)最短作業(yè)優(yōu)先法(SJF)策略,PAR-BS方案可將具有最少數(shù)量的存儲器請求的線程的存儲器請求在存儲器請求隊列中優(yōu)先化。因此,單線程應(yīng)用APP_A的存儲器請求可優(yōu)先于線程APP_B1的存儲器請求,因為單線程應(yīng)用APP_A的存儲器請求的數(shù)量為二,而線程APP_B1的存儲器請求的數(shù)量為三。這可將第三核C0RE_3的空閑時間從三個周期增加到五個周期,并可阻止第三核C0RE_3在障礙之后執(zhí)行多線程應(yīng)用APP_B。FRFCFS和PAR-BS存儲器調(diào)度方案以及其它存儲器調(diào)度方案不識別多線程應(yīng)用,使性能降級,并使操作系統(tǒng)對協(xié)調(diào)線程調(diào)度的努力徒勞。相反,本文描述的系統(tǒng)和/或方法可使設(shè)備的存儲器控制器能夠識別一個或多個多線程應(yīng)用,并基于對多線程應(yīng)用的識別優(yōu)化用于多線程應(yīng)用的存儲器調(diào)度方案。例如,本文描述的系統(tǒng)和/或方法可將可使一組線程而不是僅單個線程受益的存儲器請求優(yōu)先化(如服務(wù)于線程APP_B1的請求以使線程APP_B1和線程APP_B2都受益)。示例性設(shè)備配置圖2是根據(jù)本文描述的實施例的可執(zhí)行多線程應(yīng)用識別存儲器調(diào)度方案的設(shè)備200的示例性組件的示意圖。設(shè)備200可包括利用多核處理器和/或多線程應(yīng)用的任何計算或通信設(shè)備。例如,設(shè)備200可包括個人計算機、臺式計算機、膝上型計算機、平板計算機、服務(wù)器設(shè)備、無線電話、個人通信系統(tǒng)(PCS)終端、個人數(shù)字助理(PDA)、蜂窩電話、智能電話和/或其它類型的計算或通信設(shè)備。如圖2所示,設(shè)備200可包括總線210、處理單元220、主存儲器230、R0M240、存儲設(shè)備250、輸入設(shè)備260、輸出設(shè)備270和/或通信接口 280??偩€210可包括允許設(shè)備200的組件之間通信的路徑。處理單元220可包括一個或多個處理器(如多核處理器)、微處理器或可解釋并執(zhí)行指令的其它類型的處理單元。在一個實施例中,處理單元220可包括其包括多個核的單個處理器。主存儲器230可包括RAM、動態(tài)RAM(DRAM)和/或可存儲供處理單元220執(zhí)行的信息和指令的另一類型的動態(tài)存儲設(shè)備。R0M240可包括ROM設(shè)備或可存儲供處理單元220使用的靜態(tài)信息和/或指令的另一類型的靜態(tài)存儲設(shè)備。存儲設(shè)備250可包括磁和/或光學(xué)記錄介質(zhì)及其對應(yīng)的驅(qū)動器。輸入設(shè)備260可包括允許操作者向設(shè)備200輸入信息的機制,例如鍵盤、鼠標(biāo)、筆、麥克風(fēng)、語音識別和/或生物特征機制、觸摸屏等。輸出設(shè)備270可包括向操作者輸出信息的機制,包括顯示器、打印機、揚聲器等。通信接口 280可包括使設(shè)備200能夠與其它設(shè)備和/或系統(tǒng)通信的任何收發(fā)器類的機制。例如,通信接口 280可包括用于通過網(wǎng)絡(luò)與另一設(shè)備或系統(tǒng)通信的機制。如本文所述,設(shè)備200可響應(yīng)于處理單元220執(zhí)行包含在計算機可讀介質(zhì)(例如主存儲器230)中的軟件指令而執(zhí)行某些操作。計算機可讀介質(zhì)可被定義為物理或邏輯存儲設(shè)備。邏輯存儲設(shè)備可包括單個物理存儲設(shè)備內(nèi)或分布在多個物理存儲設(shè)備間的存儲空間。軟件指令可從另一計算機可讀介質(zhì)(例如存儲設(shè)備250)或通過通信接口 280從另一設(shè)備讀入到主存儲器230中。包含在主存儲器230中的軟件指令可使處理單元220執(zhí)行本文描述的過程。或者,硬連線電路可代替或結(jié)合軟件指令用來實現(xiàn)本文描述的過程。因此,本文描述的實施例不限于硬件電路和軟件的任何特定組合。盡管圖2示出了設(shè)備200的示例性組件,但在其它實施例中,相對于圖2所示,設(shè)備200可包括更少的組件、不同的組件、以不同方式布置的組件或附加的組件?;蛘呋蛄硐Σ?,設(shè)備200的一個或多個組件可執(zhí)行被描述為由設(shè)備200的一個或多個其它組件執(zhí)行的一個或多個其它任務(wù)。圖3是設(shè)備200的處理單元220和主存儲器230的示例性組件的示意圖。在一個實施例中,圖3所示的組件可形成存儲器調(diào)度布置300。如圖所示,處理單元220可包括多個核310-1、310-2、310-3等(在本文統(tǒng)稱為“核310”)和存儲器控制器320。主存儲器230可包括多個存儲器存儲體330-1、330-2等(在本文統(tǒng)稱為“存儲體330”)。核310可集成到單個集成電路管芯(如芯片多處理器(CMP))上或可集成到單個芯片封裝中的多個管芯上。核310中的每個核可包括處理器、微處理器或可解釋并執(zhí)行指令的另一類型的處理單元。存儲器控制器320可包括一個或多個處理器、微處理器、ASIC、FPGA或可解釋并執(zhí)行(如包含在存儲器控制器320的計算機可讀介質(zhì)中的)指令的其它類型的處理邏輯,以便執(zhí)行本文描述的操作。在一個實施例中,存儲器控制器320可包括管理去往或來自主存儲·器230的數(shù)據(jù)流的數(shù)字電路。存儲器控制器320可為單獨的芯片,或可集成到另一芯片中,例如在處理單元220的管芯上。存儲器控制器320可包括邏輯,其用來從主存儲器230讀取和向其寫入以及通過發(fā)送經(jīng)過主存儲器230的電流來刷新主存儲器230。可通過使用多路復(fù)用器和多路分用器來促進從主存儲器230讀取和向其寫入。存儲器控制器320可選擇主存儲器230的正確的行和列地址,作為向多路復(fù)用器的輸入。多路分用器可選擇主存儲器230的正確的存儲器位置,并可返回與該存儲器位置相關(guān)的數(shù)據(jù)。在另一實施例中,存儲器控制器320可為處理單元220的功能組件。存儲體330中的每個可包括存儲在主存儲器230中的數(shù)據(jù)的個別部分。在一個實例中,存儲體330中的每個可包含臨時存儲的數(shù)據(jù)并用作存儲器緩存。存儲體330可連續(xù)地排序,從而可提供對存儲在主存儲器230中的個別項目的容易訪問。存儲體330中的每個可包括可被設(shè)計為獨立處理信息傳輸?shù)闹鞔鎯ζ?30的物理部分。如圖3中進一步所示,存儲器控制器320可提供用于單線程應(yīng)用(APP_A)340和包括兩個線程(如線程(APP_B1) 350-1和線程(APP_B2) 350-2)的多線程應(yīng)用(APP_B) 350的存儲器調(diào)度方案。單線程應(yīng)用340可由核310-1執(zhí)行且可與存儲體330-1相關(guān)。線程350-1·可由核310-2執(zhí)行且可與存儲體330-1相關(guān)。線程350-2可由核310-3執(zhí)行且可與存儲體330-2相關(guān)。因此,圖3所示的存儲器調(diào)度布置300可類似于圖I所示的存儲器調(diào)度布置100。然而,與傳統(tǒng)的存儲器調(diào)度方案(如上文參照圖I所述的)不同,存儲器控制器320可提供成本有效的存儲器調(diào)度方案,其在多線程應(yīng)用(如多線程應(yīng)用350)包括空閑線程時將多線程應(yīng)用的線程(如線程350-1和350-2)優(yōu)先化。為了解釋的目的,假定多線程應(yīng)用350包括空閑線程(如線程350-2可以是空閑的)。線程可出于幾種原因而空閑。例如,如上文參照圖I所述,在障礙處的負載不平衡可使在較早的時間到達障礙的線程空閑。在另一實例中,被鎖定保護的關(guān)鍵部分可只允許多線程應(yīng)用的一個線程進入,而等待進入該關(guān)鍵部分的(如多線程應(yīng)用的)其它線程變得空閑。在又一個實例中,多線程應(yīng)用的在算法上順序的區(qū)域可由多線程應(yīng)用的單個線程執(zhí)行,從而可使多線程應(yīng)用的其它線程空閑。通過使具有空閑線程的多線程應(yīng)用的線程優(yōu)先化,存儲器控制器320可幫助空閑線程迅速結(jié)束無效率的執(zhí)行階段并使多線程應(yīng)用返回到所有線程被并行地完全執(zhí)行的執(zhí)行階段。在一個實施例中,存儲器控制器320可接收(如與通過操作系統(tǒng)與第一組相關(guān)的)多線程應(yīng)用350的線程350-1和350-2,并可接收(如通過操作系統(tǒng)與第二組相關(guān)的)單線程應(yīng)用340的線程。存儲器控制器320可確定第一和第二組中空閑線程(如線程350-2)的數(shù)量,并基于該空閑線程的數(shù)量對第一組和第二組進行排名。例如,由于第一組可能包括空閑線程(如線程350-2)而第二組可能不包括空閑線程,所以存儲器控制器320可使第一組的排名高于第二組。存儲器控制器320可使來自具有較高排名的組的存儲器請求優(yōu)先于來自具有較低排名的組的存儲器請求。例如,存儲器控制器320可使來自第一組(如來自線程350-2)的存儲器請求優(yōu)先于來自第二組(如來自單線程應(yīng)用340)的存儲器請求。盡管圖3示出了處理單元220和主存儲器230的示例性組件,但在其它實施例中,相對于圖3所示,處理單元220和/或主存儲器230可包括更少的組件、不同的組件、以不同方式布置的組件或附加的組件?;蛘呋蛄硗?,處理單元220和/或主存儲器230的一個或多個組件可執(zhí)行被描述為由處理單元220和/或主存儲器230的一個或多個其它組件執(zhí)行的一個或多個其它任務(wù)。 示例性存儲器控制器配置圖4是存儲器控制器320的示例性功能組件的示意圖。在一個實施例中,結(jié)合圖4所描述的功能組件可由包括在存儲器控制器320中的一個或多個處理器、微處理器、ASIC、FPGA或其它類型的處理邏 輯來實現(xiàn)。如圖4所示,存儲器控制器320可包括線程組接收器400、空閑線程檢測器410、組排名器420和存儲器調(diào)度器430。線程組接收器400可包括可接收與一個或多個應(yīng)用相關(guān)的一個或多個線程440并可產(chǎn)生線程440的線程組信息450-1 (如針對由設(shè)備200的操作系統(tǒng)定義的第一線程組)和線程組信息450-2 (如針對由設(shè)備200的操作系統(tǒng)定義的第二線程組)的硬件或硬件和軟件的組合。例如,線程組接收器400可產(chǎn)生單線程應(yīng)用的線程的線程組信息450-1并可產(chǎn)生多線程應(yīng)用的線程的線程組信息450-2。如圖4所示,線程組接收器400可將線程組信息450-1 (如針對第一定義的線程組)和線程組信息450-2 (如針對第二定義的線程組)提供到空閑線程檢測器410和組排名器420。下文將結(jié)合例如圖5提供線程組接收器400更多詳細信息??臻e線程檢測器410可包括可接收來自線程組接收器400的線程組信息450_1和450-2并可接收與線程440相關(guān)的一個或多個存儲器請求460的硬件或硬件和軟件的組合??臻e線程檢測器410可基于線程組信息450-1/450-2和存儲器請求460確定線程440中的哪些線程是空閑的,并可將所確定的空閑線程提供到組排名器420,如參考數(shù)字470所指示。下文將結(jié)合例如圖6提供空閑線程檢測器410的更多詳細信息。組排名器420可包括可接收來自線程組接收器400的線程組信息450-1和450-2并可接收來自空閑線程檢測器410的空閑線程470的硬件或硬件和軟件的組合。組排名器420可基于每個線程組中的空閑線程470的數(shù)量對(如由線程組信息450-1和450-2所定義的)線程組中的線程進行排名。組排名器420可將線程組的排名提供到存儲器調(diào)度器430,如參考數(shù)字480所指示。下文將結(jié)合例如圖7提供組排名器420的更多詳細信息。存儲器調(diào)度器430可包括可接收來自組排名器420的線程組排名480并可接收與線程440相關(guān)的一個或多個存儲器請求460的硬件或硬件和軟件的組合。存儲器調(diào)度器430可基于線程組排名480將存儲器請求460優(yōu)先化,如參考數(shù)字490所指示,并可在設(shè)備200中實現(xiàn)經(jīng)過優(yōu)先化的存儲器請求490。下文將結(jié)合例如圖8提供存儲器調(diào)度器430的更多詳細信息。盡管圖4示出了存儲器控制器320的示例性功能組件,但在其它實施例中,相對于圖4中所示,存儲器控制器320可包括更少的功能組件、不同的功能組件、以不同方式布置的功能組件或附加的功能組件?;蛘呋蛄硗猓鎯ζ骺刂破?20的一個或多個功能組件可執(zhí)行被描述為由存儲器控制器320的一個或多個其它功能組件執(zhí)行的一個或多個其它任務(wù)。圖5是存儲器控制器320的線程組接收器400的示例性功能組件的示意圖。在一個實施例中,結(jié)合圖5所述的功能組件可由包括在存儲器控制器320中的一個或多個處理器、微處理器、ASIC、FPGA或其它類型的處理邏輯來實現(xiàn)。如圖5所示,線程組接收器400可包括每核組標(biāo)識(ID)寄存器500。每核組ID寄存器500可包括可接收例如來自設(shè)備200的操作系統(tǒng)的線程信息510和組ID信息520的硬件或硬件和軟件的組合。在一個實例中,當(dāng)一起執(zhí)行同一應(yīng)用的線程時,操作系統(tǒng)可產(chǎn)生線程信息510 (如用于協(xié)調(diào)線程調(diào)度)。組ID信息520可包括在每個核(如核310中的每個核)上被執(zhí)行的線程的組ID。當(dāng)操作系統(tǒng)在核(如核310中的一個核)上調(diào)度特定線程時,操作系統(tǒng)可用該特定線程的組ID (如組ID信息520)更新每核組ID寄存器500。
在一個示例實施例中,多線程應(yīng)用的主線程如同該主線程是單線程應(yīng)用那樣被操作系統(tǒng)執(zhí)行。操作系統(tǒng)可向主線程分配組標(biāo)識(ID)。當(dāng)主線程生成更多線程時,操作系統(tǒng)可向生成的線程分配組ID (如組ID信息520)。當(dāng)多線程應(yīng)用的線程中的一個線程被調(diào)度來在特定核(如核310中的一個核)上執(zhí)行時,每核組ID寄存器500可將待執(zhí)行的線程設(shè)置為該組ID。如圖5進一步所示,每核組ID寄存器500可基于線程信息510和組ID信息520產(chǎn)生線程組信息450-1和線程組信息450-2。盡管圖5示出了線程組接收器400的示例性功能組件,但在其它實施例中,相對于圖5所示,線程組接收器400可包括更少的功能組件、不同的功能組件、以不同方式布置的功能組件或附加的功能組件?;蛘呋蛄硗猓€程組接收器400的一個或多個功能組件可執(zhí)行被描述為由線程組接收器400的一個或多個其它功能組件執(zhí)行的一個或多個其它任務(wù)。圖6是存儲器控制器320的空閑線程檢測器410的示例性功能組件的示意圖。在一個實施例中,結(jié)合圖6所述的功能組件可由包括在存儲器控制器320中的一個或多個處理器、微處理器、ASIC、FPGA或其它類型的處理邏輯來實現(xiàn)。如圖6所示,空閑線程檢測器410可包括未激活核位向量600,該未激活核位向量600可包括一個或多個位610-1、…、610-4 (在本文統(tǒng)稱為“位610”)。未激活核位向量600可包括可接收來自線程組接收器400的線程組信息450_1和450-2、可接收存儲器請求460并可接收時間段620的硬件或硬件和軟件的組合。未激活核位向量600可基于線程組信息450-1和450-2將位610中的每個位關(guān)聯(lián)到線程440之一及其對應(yīng)的核(如核310之一)。例如,未激活核位向量600可將位610-1與單線程應(yīng)用的線程關(guān)聯(lián),可將位610-2與多線程應(yīng)用的第一線程關(guān)聯(lián),并可將位610-3與多線程應(yīng)用的第二線程關(guān)聯(lián)。未激活核位向量600可定期地在時間段620開始時設(shè)置位610中的每個位(如為特定的值)。時間段620可為可變參數(shù)并可基于利用存儲器控制器320的設(shè)備200的類型和/或由設(shè)備200執(zhí)行的應(yīng)用的類型來設(shè)置。在一個實例中,時間段620可為足夠短以迅速適應(yīng)應(yīng)用階段變化,但可為足夠長以防止在核(如核310中的一個核)未空閑時將其誤判為空閑。在一個實施例中,時間段620可被設(shè)置為約一千(1,000)個時鐘周期的值。當(dāng)存在來自在對應(yīng)的核上執(zhí)行的線程(如按線程組信息450-1和450-2所定義的)的存儲器請求(如存儲器請求460)時,未激活核位向量600可重置位610之一。例如,如圖6所示,位610-1、610-2和610-4可與來自在對應(yīng)的核上執(zhí)行的線程的存儲器請求460相關(guān)。因此,未激活核位向量600可重置位610-1、610-2和610-4。由于位610-3不與存儲器請求相關(guān),所以未激活核位向量600可不重置位610-3。如果在時間段620結(jié)束時位(如位610-3)保持被設(shè)置,則未激活核位向量600可確定在對應(yīng)于位610-3的核上執(zhí)行的線程在時間段620期間是空閑的,如參考數(shù)字470所指示。未激活核位向量600可輸出空閑線程的指示470。盡管圖6示出了空閑線程檢測器410的示例性功能組件,但在其它實施例中,相對于圖6所示,空閑線程檢測器410可包括不同的功能組件、以不同方式布置的功能組件或附加的功能組件。圖7是存儲器控制器320的組排名器420的示例性功能組件的示意圖。在一個實施例中,結(jié)合圖7所述的功能組件可由包括在存儲器控制器320中的一個或多個處理器、微處理器、ASIC、FPGA或其它類型的處理邏輯來實現(xiàn)。如圖7所示,組排名器420可包括排名機制700。排名機制700可包括可接收來自線程組接收器400的線程組信息450_1和450_2(未示出)并可接收來自空閑線程檢測器410的空閑線程的指示470 (未示出)的硬件或硬件和軟件的組合。排名機制700可接收一個或多個線程組(如按線程組信息450-1和450-2所定義的)中的位610和與該一個或多個線程組相關(guān)的線程(如按線程組信息450-1和450-2所定義的)。例如,如圖7所示,排名機制700可(如在時間段620結(jié)束時)接收線程組(g) 720中的位610-2和610-3并可接收與線程組(g) 720相關(guān)的線程730。排名機制700可基于線程組(g)720中的位610-2和610-3確定線程組(g) 720的排名740-1。在一個實施例中,排名機制700可通過將位610-2和610-3 (如其對應(yīng)于線程組(g) 720占用的空閑核)的值相·加來確定線程組(g)720的排名740-1。在一個實施例中,排名機制700可根據(jù)如下方程式來確定線程組(g)720的排名740-1 Rankg = ^ IC^CoreIDm ]其中,Rankg可對應(yīng)于線程組(g)的排名,M可對應(yīng)于屬于線程組(g)的線程的總數(shù),m可對應(yīng)于線程組(g)使用的核,IC可對應(yīng)于線程組(g)占用的空閑核的數(shù)量,且CoreIDm可對應(yīng)于線程組(g)使用的第m個核的ID。因此,線程組(g)的排名可等于該線程組占用的空閑核的數(shù)量。如果線程組的所有線程已激活(如由核310之一執(zhí)行),該線程組的所有對應(yīng)的位610可被重置,并且該線程組的排名可被確定為零。如果線程組的一個或多個線程空閑(如未由核310之一執(zhí)行,例如空閑線程470),則該線程組的一個或多個位610可被設(shè)置(如不重置),并且該線程組的排名可被確定為大于零。例如,如圖7所示,由于位610-3被設(shè)置(如指示線程組(g)包括空閑線程470),排名機制700可確定線程組(g)的排名740-1為大于零的值。排名機制700可確定其它線程組的排名740-2和740-3,并可輸出排名740-1、740-2和740-3 (如其可對應(yīng)于線程組排名480)。如圖6進一步所示,排名740-2可為零,這可指示對應(yīng)線程組的所有線程已激活(如由核310之一執(zhí)行)。盡管圖7示出了組排名器420的示例性功能組件,但在其它實施例中,相對于圖7所示,組排名器420可包括不同的功能組件、以不同方式布置的功能組件或附加的功能組件。圖8是存儲器控制器320的存儲器調(diào)度器430的示例性功能組件的示意圖。在一個實施例中,結(jié)合圖8所述的功能組件可由包括在存儲器控制器320中的一個或多個處理器、微處理器、ASIC、FPGA或其它類型的處理邏輯來實現(xiàn)。如圖8所示,存儲器調(diào)度器430可包括組排名規(guī)則組件800、先就緒規(guī)則組件810和先來到先服務(wù)規(guī)則組件820。組排名規(guī)則組件800可包括可接收存儲器請求460和(如來自組排名器420的)線程組排名480并可基于線程組排名480將存儲器請求460優(yōu)先化(如參考數(shù)字830所指示)的硬件或硬件和軟件的組合。例如,組排名規(guī)則組件800可將來自具有較高線程組排名的線程組的存儲器請求優(yōu)先于來自具有較低線程組排名的線程組的存儲器請求。組排名規(guī)則組件800可確保(如與空閑線程組和核相關(guān)的)存儲器請求被優(yōu)先化??臻e線程組和核可將其空閑狀態(tài)通知存儲器控制器320 (如通過線程組排名480),從而可向存儲器控制器320指示空閑的核希望與相鄰的核(如由相同線程組占用的其它核)分享存儲器帶寬。存儲器控制器320又可嘗試將相鄰的核優(yōu)先化。這可通過空閑時間的減少使總系統(tǒng)吞吐量增加。這還可通過降低可能由空閑的核消耗的靜態(tài)功率和/或泄露功率來減少系統(tǒng)功耗。先就緒規(guī)則組件810可包括可接收存儲器請求460和與存儲器請求460相關(guān)的行緩沖器信息840的硬件或硬件和軟件的組合。行緩沖器信息840可指示存儲器請求460中的哪些會命中(如主存儲器230的)行緩沖器或未命中行緩沖器。先就緒規(guī)則組件810可基于行緩沖器信息840將存儲器請求460優(yōu)先化,如參考數(shù)字850所指示。例如,先就緒規(guī)則組件810可將命中行緩沖器的存儲器請求優(yōu)先于未命中行緩沖器的存儲器請求?!は葋淼较确?wù)組件820可包括可接收存儲器請求460和與存儲器請求460相關(guān)的時間信息860的硬件或硬件和軟件的組合。時間信息860可指示存儲器請求460到達(如主存儲器230)的時間。先來到先服務(wù)組件820可基于時間信息860將存儲器請求460優(yōu)先化,如參考數(shù)字870所指示。例如,先來到先服務(wù)組件820可將在時間上更早到達(如主存儲器230)的存儲器請求優(yōu)先于在時間上更晚到達(如主存儲器230)的存儲器請求。如圖8進一步所示,組優(yōu)先化的存儲器請求830、行緩沖器優(yōu)先化的存儲器請求850和/或時間優(yōu)先化的存儲器請求870可形成優(yōu)先化的存儲器請求490。在一個實施例中,存儲器調(diào)度器430可首先使用組排名規(guī)則組件800、然后使用先就緒規(guī)則組件810、最后使用先來到先服務(wù)規(guī)則組件820來調(diào)度(如優(yōu)先化)存儲器請求460。盡管圖8示出了存儲器調(diào)度器430的示例性功能組件,但在其它實施例中,相對于圖8所示,存儲器調(diào)度器430可包括更少的功能組件、不同的功能組件、以不同方式布置的功能組件或附加的功能組件。或者或另外,存儲器調(diào)度器430的一個或多個功能組件可執(zhí)行被描述為由存儲器調(diào)度器430的一個或多個其它功能組件執(zhí)行的一個或多個其它任務(wù)。示例性存儲器控制器操作圖9A和圖9B是能夠由線程組接收器400 (圖4)執(zhí)行的示例性操作900的示意圖。如圖9A所示,單線程應(yīng)用910 (如APP_A)可包括與多核處理器(如處理單元220)的核310-1和存儲體330-1 (未示出)相關(guān)的兩個存儲器請求920-1和920-2。多線程應(yīng)用(如APP_B)可包括兩個線程(如APP_B1線程930和APP_B2線程950)和用于同步的障礙。線程930可與處理單元220的核310-2和存儲體330-1 (未示出)相關(guān),可包括在障礙之后提供的兩個存儲器請求940-6和940-7,并可包括在障礙之前提供的三個存儲器請求940-3、940-4和940-5。線程950可與處理單元220的核310-3和存儲體330-2 (未示出)相關(guān),并可包括在障礙之后提供的兩個存儲器請求940-1和940-2。多線程應(yīng)用APP_B可被設(shè)計為通過使線程930訪問存儲體330_1且線程950訪問存儲體330-2來利用存儲體級并行。為了解釋的目的,假定由于障礙周圍可能的負載不平衡(如其可能由于可能無法實現(xiàn)完美的運行時負載平衡而發(fā)生),線程950在線程930之前到達障礙。負載不平衡可能阻止與線程950相關(guān)的存儲器請求940-1和940-2訪問存儲體330-2,從而可能使核310-3處于空閑狀態(tài)。核310-3可能保持在空閑狀態(tài)下,直到與線程930相關(guān)的存儲器請求940-3、940-4和940-5被處理。因此,與線程930相關(guān)的存儲器請求940-3,940-4和940-5應(yīng)被賦予高于與單線程應(yīng)用910相關(guān)的存儲器請求920-1和920-2的優(yōu)先級(如使得核310-3僅在三個周期而不是五個周期內(nèi)保持空閑)。如圖9B所示,(如存儲器控制器320的)線程組接收器400可接收線程910、930和950 (如其對應(yīng)于線程440)、線程信息510和組ID信息520。例如,線程組接收器400可接收單線程應(yīng)用APP—A的線 程910的組ID,并可接收多線程應(yīng)用APP_B的線程930和950的另一組ID。線程組接收器400可基于線程信息510和組ID信息520產(chǎn)生線程910、930和950的線程組信息450-1和450-2。例如,線程組接收器400可產(chǎn)生線程組信息450-1 (如針對單線程應(yīng)用APP_A的線程910)和線程組信息450-2 (如針對多線程應(yīng)用APP_B的線程930 和 950)。盡管圖9A和圖9B示出了能夠由線程組接收器400執(zhí)行的示例性操作,但在其它實施例中,相對于圖9A和圖9B所示,線程組接收器400可執(zhí)行更少的操作、不同的操作或附加的操作。圖IOA和圖IOB是能夠由空閑線程檢測器410 (圖6)執(zhí)行的示例性操作1000的示意圖。如圖IOA所示,由于障礙周圍可能的負載不平衡,線程950可在線程930之前到達障礙。負載不平衡可阻止與線程950相關(guān)的存儲器請求940-1和940-2訪問存儲體330-2(未示出),從而可能使核310-3處于空閑狀態(tài),并且可能使線程950空閑,如參考數(shù)字1010所指示。如圖IOB所示,空閑線程檢測器410的未激活核位向量600可包括位610_1 (如針對核310-1)、位610-2 (如針對核310-2)和位610-3 (如針對核310-3)。位610-1可通過未激活核位向量600被重置(如為零的值),因為位610-1可與來自在對應(yīng)的核(如核310-1)上執(zhí)行的線程(如線程910)的存儲器請求920-1和920-1相關(guān)。位610-2可通過未激活核位向量600被重置(如為零的值),因為位610-2可與來自在對應(yīng)的核(如核310-2)上執(zhí)行的線程(如線程930)的存儲器請求940-3、940-4和940-5相關(guān)。位610-3可被設(shè)置(如為大于零的值),因為位610-3可不與來自在對應(yīng)的核(如核310-3)上執(zhí)行的線程的存儲器請求相關(guān)。如果位610-3在時間段620結(jié)束時保持被設(shè)置,則未激活核位向量600可確定在對應(yīng)于位610-3的核(如核310-3)上執(zhí)行的線程(如線程950)在時間段620期間空閑,如參考數(shù)字1020所指示。未激活核位向量600可輸出空閑線程的指示1020。盡管圖IOA和圖IOB示出了能夠由空閑線程檢測器410執(zhí)行的示例性操作,但在其它實施例中,相對于圖IOA和圖IOB所示,空閑線程檢測器410可執(zhí)行更少的操作、不同的操作或附加的操作。圖11是能夠由組排名器420 (圖7)執(zhí)行的示例性操作1100的示意圖。如圖所示,組排名器420的排名機制700可接收單線程應(yīng)用APP_A的位1110和多線程應(yīng)用APP_B的位1120。位1110可包括位610-1,如上文結(jié)合圖IOB所述,位610-1可被重置(如為零的值)。位1120可包括位610-2和位610-3,如上文結(jié)合圖IOB所述,位610-2可被重置(如為零的值),且位610-3可被設(shè)置(如為大于零的值)。排名機制700可基于與位1110相關(guān)的值確定單線程應(yīng)用APP_A的排名1130。如圖11所示,由于位610-1被設(shè)置為零的值,單線程應(yīng)用APP_A的排名1130可被確定為零。排名機制700可基于位1120確定多線程應(yīng)用APP_B的排名1140。在一個實施例中,排名機制700可通過將位610-2和位610-3的值相加來確定多線程應(yīng)用APP_B的排名1140。如圖11所示,由于位610-2被設(shè)置為零的值且位610-3被設(shè)置為大于零的值,多線程應(yīng)用APP_B的排名1140可被確定為大于零的值。盡管圖11示出了能夠由組排名器420執(zhí)行的示例性操作,但在其它實施例中,相對于圖11所示,組排名器420可執(zhí)行更少的操作、不同的操作或附加的操作。圖12A和圖12B是能夠由存儲器調(diào)度器430 (圖8)執(zhí)行的示例性操作1200的示意圖。如圖12A所示,(如單線程應(yīng)用APP_A的)線程910可包括請求來自存儲體330-1的存儲的存儲器請求920-1和920-2。(如多線程應(yīng)用APP_B的)線程930可包括請求來自存儲體330-1的存儲的存儲器請求940-3、940-4和940-5。參照圖12B,存儲器調(diào)度器430的組排名規(guī)則組件800可將與線程930相關(guān)的存儲器請求940-3、940-4和940-5優(yōu)先于與線程910相關(guān)的存儲器請求920-1和920-2,使得核310-3僅在三個周期而不是五個周期內(nèi)保持空閑。如圖12B所示,組排名規(guī)則組件800可接收單線程應(yīng)用APP_A的排名1130和多線程應(yīng)用APP_B的排名1140,并可基于排名1130和1140使多線程應(yīng)用APP_B優(yōu)先于單線程應(yīng)用APP_A,如參考數(shù)字1210所指示。例如,參照圖12A,(如線程930的)存儲器請求940-3、940-4和940-5可被分別指定存儲體330-1的行1、2和3,而(如線程910的)存儲器請求920-1和920-2可被指定存儲體330-1的行4。由于存儲體330-1的行1-3在存儲體330-1的行4之前出現(xiàn),所以存儲器請求940_3、940_4和940-5可在存儲器請求920-1和920-2之前被操作。通過使多線程應(yīng)用APP_B優(yōu)先于單線程應(yīng)用APP_A,存儲器控制器320可將多線程應(yīng)用APP_B的空閑時間從五個周期(如采用FRFCFS和PAR-BS機制時就將是這樣的情況)減少到三個周期。這可以改善總體的系統(tǒng)吞吐量,因為核310-3可更早地開始執(zhí)行有用的工作。這也可以通過減少可被空閑的核310-3消耗的靜態(tài)功率和/或泄露功率來降低系統(tǒng)功耗。盡管圖12A和圖12B示出了能夠由存儲器調(diào)度器430執(zhí)行的示例性操作,但在其它實施例中,相對于圖12A和圖12B所示,存儲器調(diào)度器430可執(zhí)行更少的操作、不同的操作或附加的操作。圖13-15是根據(jù)本文描述的實施例的用于多線程應(yīng)用識別存儲器調(diào)度的示例性過程1300的流程圖。在一個實施例中,過程1300可由設(shè)備200 (圖2)執(zhí)行。在另一實施例中,過程1300的部分或全部可由設(shè)備200的一個或多個組件(例如,存儲器控制器320)執(zhí)行。如圖13所示,過程1300可包括接收與第一組相關(guān)的多線程應(yīng)用的線程(塊1310)和接收與第二組相關(guān)的單線程應(yīng)用的線程(塊1320)。例如,在上文結(jié)合圖4描述的實施例中,存儲器控制器320的線程組接收器400可接收與一個或多個應(yīng)用相關(guān)的一個或多個線程440,并可產(chǎn)生線程440的線程組信息450-1 (如針對由設(shè)備200的操作系統(tǒng)定義的第一線程組)和線程組信息450-2 (如針對由設(shè)備200的操作系統(tǒng)定義的第二線程組)。在一個實例中,線程組接收器400可產(chǎn)生單線程應(yīng)用的線程的線程組信息450-1 (例如,如由操作·系統(tǒng)所定義的),并可產(chǎn)生多線程應(yīng)用的線程的線程組信息450-2 (例如,如由操作系統(tǒng)所定義的)。
如圖13進一步所示,過程1300可包括確定第一組和第二組中的空閑線程的數(shù)量(塊1330)。例如,在上文結(jié)合圖4描述的實施例中,存儲器控制器320的空閑線程檢測器410可接收來自線程組接收器400的線程組信息450-1和450-2,并可接收與線程440相關(guān)的一個或多個存儲器請求460。空閑線程檢測器410可基于線程組信息450-1/450-2和存儲器請求460確定線程440中的哪些線程是空閑的,并可將所確定的空閑線程提供到組排名器420,如參考數(shù)470所指示。返回到圖13,過程1300可包括基于所確定的空閑線程的數(shù)量對第一組和第二組進行排名(塊1340)。例如,在上文結(jié)合圖4描述的實施例中,存儲器控制器320的組排名器420可接收來自線程組接收器400的線程組信息450-1和450-2,并可接收來自空閑線程檢測器410的空閑線程470。組排名器420可基于每個線程組中空閑線程470的數(shù)量對(如按線程組信息450-1和450-2所定義的)線程組中的線程進行排名。組排名器420可將線程組的排名提供到存儲器調(diào)度器430,如參考數(shù)字480所指示。如圖13中進一步所示,過程1300可包括將來自具有較高排名的組的存儲器請求優(yōu)先于來自具有較低排名的組的存儲器請求(塊1350)。例如,在結(jié)合圖4描述的實施例中,存儲器控制器320的存儲器調(diào)度器430可接收來自組排名器420的線程組排名480,并可接收與線程440相關(guān)的一個或多個存儲器請求460。存儲器調(diào)度器430可基于線程組排名480將存儲器請求460優(yōu)先化,如參考數(shù)字490所指示,并可在設(shè)備200中實現(xiàn)經(jīng)過優(yōu)先化的存儲器請求490。過程塊1330和1340可包括圖14中所示的過程塊。如圖14所示,過程塊1330和1340可包括將位向量中的第一位與第一組中的線程的部分相關(guān)(塊1400)、將位向量中的第二位與第一組中的線程的剩余部分相關(guān)(塊1410)以及將位向量中的第三位與第二組中的線程相關(guān)(塊1420)。例如,在上文結(jié)合圖6描述的實施例中,存儲器控制器320的未激活核位向量600可基于線程組信息450-1和450-2將位610中的每個位與線程440之一及其對應(yīng)的核(如核310之一)相關(guān)。在一個實例中,未激活核位向量600可將位610-1與單線程應(yīng)用的線程相關(guān),可將位610-2與多線程應(yīng)用的第一線程相關(guān),并可將位610-3與多線程應(yīng)用的第二線程相關(guān)。如圖14進一步所示,過程塊1330和1340可包括在時間段開始時設(shè)置位向量中的位(塊1430),以及在接收到與一個或多個位相關(guān)的線程的一個或多個存儲器請求時重置位向量中的這一個或多個位(塊1440)。例如,在上文結(jié)合圖6所述的實施例中,未激活核位向量600可在時間段620開始時定期地設(shè)置位610中的每個位(如為特定的值)。當(dāng)存在來自在對應(yīng)的核上執(zhí)行的(如按線程組信息450-1和450-2所定義的)線程的存儲器請求(如存儲器請求460)時,未激活核位向量600可重置位610中的一個位。在一個實例中,位610-1、610-2和610-4可與來自在對應(yīng)的核上執(zhí)行的線程的存儲器請求460相關(guān)。因此,未激活核位向量600可重置位610-1、610-2和610-4。由于位610-3不與存儲器請求相關(guān),所以未激活核位向量600可不重置位610-3。返回到圖14,過程塊1330和1330可包括基于在時間段結(jié)束時在位向量中保留的所設(shè)置的位確定空閑線程的數(shù)量(塊1450),以及基于在時間段結(jié)束時保留的所設(shè)置的位的值對第一組和第二組進行排名(塊1460)。例如,在上文結(jié)合圖6和圖7所述的實施例中,如果位(如位610-3)在時間段620結(jié)束時保持被設(shè)置,則未激活核位向量600可確定在對應(yīng)于位610-3的核上執(zhí)行的線程在時間段620期間空閑,如參考數(shù)字470所指示。未激活核位向量600可輸出空閑線程的指示470。存儲器控制器320的組排名規(guī)則組件800可(如從組排名器420)接收存儲器請求460和線程組排名480,并可基于線程組排名480將存儲器請求460優(yōu)先化,如參考數(shù)字830所指示。在一個實例中,組排名規(guī)則組件800可將來自具有較高線程組排名的線程組的存儲器請求優(yōu)先于來自具有較低線程組排名的線程組的存儲器請求。過程塊1350可包括圖15中所示的過程塊。如圖15所示,過程塊1350可包括基于與存儲器請求相關(guān)的組排名確定存儲器請求的第一優(yōu)先級(塊1500),基于先就緒規(guī)則確定存儲器請求的第二優(yōu)先級(塊1510),以及基于先來到先服務(wù)規(guī)則確定存儲器請求的第三優(yōu)先級(塊1520)。例如,在上文結(jié)合圖8描述的實施例中,存儲器控制器320的存儲器調(diào)度器430可首先使用組排名規(guī)則組件800、再使用先就緒規(guī)則組件810、最后使用先來到先服務(wù)規(guī)則組件820來調(diào)度(如優(yōu)先化)存儲器請求460。本文描述的系統(tǒng)和/或方法可使設(shè)備(如帶有多核處理器的設(shè)備,例如個人計算機、膝上型計算機、平板計算機、服務(wù)器設(shè)備和/或其它類型的計算或通信設(shè)備)的存儲器控·制器能夠識別一個或多個多線程應(yīng)用并基于對多線程應(yīng)用的識別調(diào)整或優(yōu)化用于多線程應(yīng)用的存儲器調(diào)度方案。此類系統(tǒng)和/或方法可防止歸因于不充足的存儲器調(diào)度的(如設(shè)備中的)性能降級。上文對實施例的描述提供示例和說明,但非旨在窮舉或?qū)⒈景l(fā)明限制為所公開的精確形式。按照上文的教導(dǎo),可進行各種修改和變化,或者可通過實施本發(fā)明獲得各種修改和變化。例如,雖然對于圖13-圖15描述了很多塊,但在其它實施例中可修改這些塊的順序。此外,可以并行地執(zhí)行非依賴塊。在另一實例中,本文描述的多個不同的應(yīng)用和線程僅為了說明目的而提供。顯然,在附圖中示出的實施例中,如上文描述的各方面可以軟件、固件和硬件的很多不同形式來實現(xiàn)。用于實現(xiàn)這些方面的實際的軟件代碼或?qū)iT的控制硬件不應(yīng)被理解為具有限制性。因此,各方面的操作和行為是在沒有參考特定軟件代碼的情況下描述的,即應(yīng)理解可基于本文的描述來設(shè)計軟件和控制硬件以實現(xiàn)這些方面。軟件也可以包括用于描述電路及其布置的硬件描述語言(HDL)、Verilog、寄存器傳輸級(RTL)、圖形數(shù)據(jù)庫系統(tǒng)(⑶S) II數(shù)據(jù)或其它軟件。此類軟件可存儲在計算機可讀介質(zhì)中并用來配置制造過程,以產(chǎn)生能夠以實施本發(fā)明的各方面的方式操作的物理電路。此外,本文描述的某些實施例可被實現(xiàn)為執(zhí)行一個或多個功能的“邏輯”。此邏輯可包括硬件(例如,處理器、ASIC或FPGA)或硬件和軟件的組合。盡管在權(quán)利要求書中陳述和/或在說明書中公開了特征的特定組合,但這些組合不旨在限制本發(fā)明。實際上,這些特征中的很多特征可以未專門在權(quán)利要求書中陳述和/或在說明書中公開的方式組合。除非明確指出,否則本申請中使用的元件、塊或指令不應(yīng)被理解為對于本發(fā)明是關(guān)鍵的或必不可少的。另外,如本文所使用的,冠詞(“a”)旨在包括一個或多個項目。在僅意指一個項目時,使用術(shù)語“一個”或類似語言。此外,除非明確注明,否則短語“基于”意在指“至少部分地基于”。
權(quán)利要求
1.一種計算設(shè)備實現(xiàn)的方法,其包括 通過所述計算設(shè)備識別多線程應(yīng)用;以及 通過所述計算設(shè)備基于對所述多線程應(yīng)用的識別調(diào)整用于所述多線程應(yīng)用的存儲器調(diào)度方案。
2.如權(quán)利要求I所述的計算設(shè)備實現(xiàn)的方法,其中 所述多線程應(yīng)用與第一組相關(guān); 識別多線程應(yīng)用包括接收與所述第一組相關(guān)的所述多線程應(yīng)用的線程;并且 所述方法還包括 接收與第二組相關(guān)的單線程應(yīng)用的線程。
3.如權(quán)利要求2所述的計算設(shè)備實現(xiàn)的方法,其中調(diào)整存儲器調(diào)度方案包括 確定所述第一組和所述第二組中的空閑線程的數(shù)量; 基于所確定的所述第一組中的空閑線程的數(shù)量對所述第一組進行排名; 基于所確定的所述第二組中的空閑線程的數(shù)量對所述第二組進行排名;以及使與所述第一組或所述第二組中排名較高的一個組相關(guān)的存儲器請求優(yōu)先于與所述第一組或所述第二組中排名較低的一個組相關(guān)的存儲器請求。
4.如權(quán)利要求3所述的計算設(shè)備實現(xiàn)的方法,其中確定空閑線程的數(shù)量包括 使位向量中的第一位與所述第一組中的第一線程相關(guān); 使所述位向量中的第二位與所述第一組中的第二線程相關(guān); 使所述位向量中的第三位與所述第二組中的線程相關(guān); 在時間段開始時設(shè)置所述位向量中的所述第一、第二和第三位; 當(dāng)接收到與所述位向量中的所述第一、第二或第三位中的一個或多個位相關(guān)的一個或多個線程的一個或多個存儲器請求時,重置所述第一、第二或第三位中的所述一個或多個位;以及 基于在所述時間段結(jié)束時在所述位向量中保留的所設(shè)置的位確定所述第一組和所述第二組中空閑線程的數(shù)量。
5.如權(quán)利要求4所述的計算設(shè)備實現(xiàn)的方法,其還包括 基于在所述時間段結(jié)束時在所述位向量中保留的所設(shè)置的位對所述第一組和所述第二組進行排名。
6.如權(quán)利要求3所述的計算設(shè)備實現(xiàn)的方法,其中使存儲器請求優(yōu)先包括 基于與所述存儲器請求相關(guān)的組的排名確定所述存儲器請求的第一優(yōu)先級; 基于先就緒規(guī)則確定所述存儲器請求的第二優(yōu)先級;以及 基于先來到先服務(wù)規(guī)則確定所述存儲器請求的第三優(yōu)先級。
7.一種設(shè)備的存儲器控制器,所述存儲器控制器包括 處理邏輯,其用來 接收與組相關(guān)的多線程應(yīng)用的線程; 接收與其它組相關(guān)的單線程應(yīng)用的線程; 確定所述組和所述其它組中空閑線程的數(shù)量; 基于所確定的所述組中的空閑線程的數(shù)量對所述組進行排名; 基于所確定的所述其它組中的空閑線程的數(shù)量對所述其它組進行排名;以及使與所述組或所述其它組中排名較高的一個組相關(guān)的存儲器請求優(yōu)先于與所述組或所述其它組中排名較低的一個組相關(guān)的存儲器請求。
8.如權(quán)利要求7所述的存儲器控制器,其中當(dāng)確定空閑線程的數(shù)量時,所述處理邏輯還用來 使位向量中的第一位與所述組中的第一線程相關(guān); 使所述位向量中的第二位與所述組中的第二線程相關(guān); 使所述位向量中的第三位與所述其它組中的線程相關(guān); 在時間段開始時將所述位向量中的所述第一、第二和第三位設(shè)置為大于零的值; 當(dāng)接收到與所述位向量中的所述第一、第二或第三位中的一個或多個位相關(guān)的一個或多個線程的一個或多個存儲器請求時,將所述第一、第二或第三位中的所述一個或多個位重置為零的值;以及 基于在所述時間段結(jié)束時在所述位向量中保留的所設(shè)置的位的值確定所述組和所述其它組中的空閑線程的所述數(shù)量。
9.如權(quán)利要求8所述的存儲器控制器,其中所述處理邏輯還用來 基于在所述時間段結(jié)束時在所述位向量中保留的所設(shè)置的位的值對所述組和所述其它組進行排名。
10.如權(quán)利要求7所述的存儲器控制器,其中當(dāng)使存儲器請求優(yōu)先時,所述處理邏輯還用來 基于與所述存儲器請求相關(guān)的組的排名確定所述存儲器請求的第一優(yōu)先級; 基于先就緒規(guī)則確定所述存儲器請求的第二優(yōu)先級;以及 基于先來到先服務(wù)規(guī)則確定所述存儲器請求的第三優(yōu)先級。
11.一種設(shè)備,其包括 存儲器控制器,其用來 識別多線程應(yīng)用;以及 基于對所述多線程應(yīng)用的識別調(diào)整用于所述多線程應(yīng)用的存儲器調(diào)度方案。
12.如權(quán)利要求11所述的設(shè)備,其中所述存儲器控制器包括 每核組標(biāo)識寄存器,其用來 接收所述多線程應(yīng)用的線程,其中所述多線程應(yīng)用與第一組相關(guān); 接收與第二組相關(guān)的單線程應(yīng)用的線程。
13.如權(quán)利要求12所述的設(shè)備,其中所述存儲器控制器還包括 空閑線程檢測器,其用來確定所述第一組和所述第二組中的空閑線程的數(shù)量。
14.如權(quán)利要求13所述的設(shè)備,其中所述空閑線程檢測器還用來 使位向量中的第一位與所述第一組中的第一線程相關(guān); 使所述位向量中的第二位與所述第一組中的第二線程相關(guān); 使所述位向量中的第三位與所述第二組中的線程相關(guān); 在時間段開始時將所述位向量中的所述第一、第二和第三位設(shè)置為大于零的值; 當(dāng)接收到與所述位向量中的所述第一、第二或第三位中的一個或多個位相關(guān)的一個或多個線程的一個或多個存儲器請求時,將所述第一、第二或第三位中的所述一個或多個位重置為零的值;以及基于在所述時間段結(jié)束時在所述位向量中保留的所設(shè)置的位的值確定所述第一組和所述第二組中的空閑線程的數(shù)量。
15.如權(quán)利要求13所述的設(shè)備,其中所述存儲器控制器還包括 組排名器,其用來根據(jù)下式對組(g)進行排名 咖七二 Σ,:ν( ( 其中,Rankg對應(yīng)于所述組(g)的排名,M對應(yīng)于屬于所述組(g)的線程的總數(shù),m對應(yīng)于所述組(g)使用的核處理器,IC對應(yīng)于所述組(g)占用的空閑核處理器的數(shù)量,且CoreIDm對應(yīng)于所述組(g)使用的第m個核處理器的標(biāo)識。
16.如權(quán)利要求13所述的設(shè)備,其中所述存儲器控制器還包括 組排名器,其用來 基于所確定的所述第一組中的空閑線程的數(shù)量對所述第一組進行排名;以及 基于所確定的所述第二組中的空閑線程的數(shù)量對所述第二組進行排名。
17.如權(quán)利要求16所述的設(shè)備,其中所述存儲器控制器還包括 存儲器調(diào)度器,其用來使與所述第一組或所述第二組中排名較高的一個組相關(guān)的存儲器請求優(yōu)先于與所述第一組或所述第二組中排名較低的一個組相關(guān)的存儲器請求。
18.如權(quán)利要求17所述的設(shè)備,其中所述存儲器調(diào)度器還用來 基于與所述存儲器請求相關(guān)的組的排名確定所述存儲器請求的第一優(yōu)先級; 基于先就緒規(guī)則確定所述存儲器請求的第二優(yōu)先級;以及 基于先來到先服務(wù)規(guī)則確定所述存儲器請求的第三優(yōu)先級。
19.如權(quán)利要求11所述的設(shè)備,其中所述設(shè)備包括利用多核處理器和多線程應(yīng)用的計算或通信設(shè)備。
20.一種計算機可讀存儲設(shè)備,其存儲一個或多個計算機可執(zhí)行指令,所述計算機可讀存儲設(shè)備包括 用來從多個其它應(yīng)用中識別多線程應(yīng)用的一個或多個指令;以及用來基于對所述多線程應(yīng)用的識別調(diào)整用于所述多線程應(yīng)用的存儲器調(diào)度方案的一個或多個指令。
21.如權(quán)利要求20所述的計算機可讀存儲設(shè)備,其中所述計算機可讀存儲設(shè)備以處理單元的存儲器控制器來提供。
22.如權(quán)利要求20所述的計算機可讀存儲設(shè)備,其中用來識別多線程應(yīng)用的所述一個或多個指令包括 用來接收所述多線程應(yīng)用的線程的一個或多個指令,其中所述多線程應(yīng)用與第一組相關(guān);并且 其中所述計算機可讀存儲設(shè)備還包括 用來接收與第二組相關(guān)的單線程應(yīng)用的線程的一個或多個指令。
23.如權(quán)利要求22所述的計算機可讀存儲設(shè)備,其中用來調(diào)整存儲器調(diào)度方案的所述一個或多個指令包括 用來確定所述第一組和所述第二組中的空閑線程的數(shù)量的一個或多個指令; 用來基于所確定的所述第一組中的空閑線程的數(shù)量對所述第一組進行排名的一個或多個指令;用來基于所確定的所述第二組中的空閑線程的數(shù)量對所述第二組進行排名的一個或多個指令;以及 用來使與所述第一組和所述第二組中排名較高的一個組相關(guān)的存儲器請求優(yōu)先于與所述第一組和所述第二組中排名較低的一個組相關(guān)的存儲器請求的一個或多個指令。
24.如權(quán)利要求23所述的計算機可讀存儲設(shè)備,其中用來確定空閑線程的數(shù)量的所述一個或多個指令包括 用來使位向量中的第一位與所述第一組中的第一線程相關(guān)的一個或多個指令; 用來使所述位向量中的第二位與所述第一組中的第二線程相關(guān)的一個或多個指令; 用來使所述位向量中的第三位與所述第二組中的線程相關(guān)的一個或多個指令; 用來在時間段開始時將所述位向量中的所述第一、第二和第三位設(shè)置為大于零的值的一個或多個指令; 用來在接收到與所述位向量中的所述第一、第二或第三位中的一個或多個位相關(guān)的一個或多個線程的一個或多個存儲器請求時將所述第一、第二或第三位中的所述一個或多個位重置為零的值的一個或多個指令;以及 用來基于在所述時間段結(jié)束時在所述位向量中保留的所設(shè)置的位確定所述第一組和所述第二組中的空閑線程的數(shù)量的一個或多個指令。
25.如權(quán)利要求24所述的計算機可讀存儲設(shè)備,其中所述時間段大體上等于約1000個時鐘周期。
26.如權(quán)利要求24所述的計算機可讀存儲設(shè)備,其還包括 用來基于在所述時間段結(jié)束時在所述位向量中保留的所設(shè)置的位對所述第一組和所述第二組進行排名的一個或多個指令。
27.如權(quán)利要求23所述的計算機可讀存儲設(shè)備,其中用來使存儲器請求優(yōu)先的所述一個或多個指令包括 用來基于與所述存儲器請求相關(guān)的組的排名確定所述存儲器請求的第一優(yōu)先級的一個或多個指令; 用來在確定所述第一優(yōu)先級之后基于先就緒規(guī)則確定所述存儲器請求的第二優(yōu)先級的一個或多個指令;以及 用來在確定所述第二優(yōu)先級之后基于先來到先服務(wù)規(guī)則確定所述存儲器請求的第三優(yōu)先級的一個或多個指令。
全文摘要
一種設(shè)備可包括存儲器控制器,其識別多線程應(yīng)用,并基于對所述多線程應(yīng)用的識別調(diào)整用于所述多線程應(yīng)用的存儲器調(diào)度方案。
文檔編號G06F9/48GK102939596SQ201180028331
公開日2013年2月20日 申請日期2011年5月31日 優(yōu)先權(quán)日2010年6月8日
發(fā)明者鐘在雄 申請人:超威半導(dǎo)體公司