專利名稱:啟用同時多線程(smt)的系統(tǒng)及其管理方法
技術(shù)領(lǐng)域:
本發(fā)明主要地涉及處理器和計算系統(tǒng),并且具體地涉及同時多 線程(SMT)處理器。另夕卜,本發(fā)明涉及在啟用SMT的系統(tǒng)中管理 單線程(ST)工作負(fù)荷和SMT工作負(fù)荷的執(zhí)行,而無需將該系統(tǒng)的 處理器在ST模式與SMT模式之間切換。
背景技術(shù):
計算技術(shù)的進(jìn)步要求改進(jìn)在動態(tài)改變的負(fù)荷要求之下操作的計 算機(jī)系統(tǒng)的性能特征。 一種改進(jìn)計算機(jī)系統(tǒng)性能的方法是通過使用 多個處理器,這些處理器通過并行地執(zhí)行一個計算機(jī)程序的多個部 分或者多個不同的計算機(jī)程序來分擔(dān)處理負(fù)荷。另 一種改進(jìn)計算機(jī) 系統(tǒng)性能的方法是通過使多個硬件線程能夠在每個處理器上執(zhí)行, 其中每個線程處理一個不同的工作負(fù)荷或者一個或者多個工作負(fù)荷 的不同部分。在有多個硬件線程激活的處理系統(tǒng)中,操作系統(tǒng)可以 支持同時多線程(SMT),其中多個線程在每個處理器上"同時地" 運行。為了工作負(fù)荷跨多個線程而運行,操作系統(tǒng)為SMT模式下的 每個處理器激活多個硬件線程。
然而,盡管實現(xiàn)SMT模式改善了一些類型的工作負(fù)荷的執(zhí)行時 間,但是有如下其他類型的工作負(fù)荷,針對這些工作負(fù)荷,每一處 理器激活僅一個硬件線程將更為高效。例如,要求作業(yè)以相同速度 通過每個處理器的高性能計算(HPC)工作負(fù)荷在僅一個硬件線程 在每個處理器上激活時執(zhí)行得更為高效。為了適應(yīng)在僅一個硬件線 程在每個處理器上激活時運行得更為高效的工作負(fù)荷,操作系統(tǒng)可 以幫助將系統(tǒng)中的所有處理器從在SMT模式下運行切換到在單線程 (ST)模式下運行。在ST模式下,在每個處理器上僅有一個硬件線
程激活。因此,為了從SMT模式切換到ST模式,在處理器級去除 每個處理器上除一個硬件線程之外的所有硬件線程。
基于對于工作負(fù)荷類型而言最為高效的模式而在SMT模式與 ST模式之間操作切換的一個限制在于,每次模式切換對于在處理器 級去除或者激活的每一硬件線程都要求動態(tài)的重新配置事件。動態(tài) 的重新配置事件之所以耗費時間是因為硬件線程被操作系統(tǒng)表示為 邏輯處理單元。因此,對每個硬件線程的去除或者激活都要求分別 在硬件級、操作系統(tǒng)級和應(yīng)用級的中斷,以便實際地禁止在硬件級 的硬件線程、將可用邏輯處理器動態(tài)地重新配置成每一物理處理器 僅一個邏輯處理器、并且將所有內(nèi)核擴(kuò)展和應(yīng)用適應(yīng)成僅綁定到重 新配置的邏輯處理器。在每個處理器上執(zhí)行動態(tài)的重新配置事件隨 著處理器的數(shù)目增加而進(jìn)一步受限。例如,如果每個動態(tài)的重新配 置事件對于每一處理器需要三秒并且有64個處理器,則啟用SMT 的處理器從ST模式到SMT模式或者從SMT模式到ST模式的每次
切換可能需要約3分鐘。
基于對于工作負(fù)荷類型而言最為高效的模式而在SMT模式與 ST模式之間操作系統(tǒng)切換的另一個限制在于,操作系統(tǒng)運行SMT 模式或者ST模式下的系統(tǒng)中的所有處理器。由于該系統(tǒng)在一個模式 或者另一模式下操作,所以當(dāng)系統(tǒng)在SMT模式下啟用時,即使處理 器可能處于空閑,但是ST工作負(fù)荷將一直等到在SMT模式下處理 的工作負(fù)荷完成并且操作系統(tǒng)從SMT模式切換到ST模式為止。
因此有鑒于上文所述,需要一種方法、系統(tǒng)和程序,該方法和 系統(tǒng)和程序用于在啟用SMT的系統(tǒng)上運行SMT工作負(fù)荷和ST工作 負(fù)荷,而無需在模式之間切換,并具有可與在ST模式下運行ST工 作負(fù)荷相當(dāng)?shù)男阅?。此外還需要一種方法、系統(tǒng)和程序,該方法、 系統(tǒng)和程序用于在運行于SMT模式下的啟用SMT的系統(tǒng)上并發(fā)地 運行SMT工作負(fù)荷和ST工作負(fù)荷的混合型工作負(fù)荷。
發(fā)明內(nèi)容
因此,本發(fā)明提供對啟用SMT的處理系統(tǒng)的改進(jìn)管理。具體而 言,本發(fā)明提供一種方法、系統(tǒng)和程序,該方法、系統(tǒng)和程序用于
管理混合型ST工作負(fù)荷和SMT工作負(fù)荷在啟用SMT的系統(tǒng)中的執(zhí) 行,而無需將該系統(tǒng)的處理器在ST模式與SMT模式之間切換。
在一個實施例中,在啟用SMT的處理系統(tǒng)中,對于ST工作負(fù) 荷,啟用S M T的處理系統(tǒng)的內(nèi)核幫助構(gòu)造獨占處理器組用以處理S T 工作負(fù)荷的任務(wù),其中ST工作負(fù)荷在單線程處理器上運行得更為高 效。內(nèi)核通過選擇所述獨占處理器組內(nèi)每一處理器一個硬件線程用 以處理ST工作負(fù)荷的任務(wù)中的不同的一個任務(wù),同時要求獨占組內(nèi) 每一處理器的其余硬件線程空閑,從而在獨占處理器組上調(diào)度S丁工 作負(fù)荷。因此,如同獨占處理器組中每個處理器的每個所選擇的一 個硬件線程在ST模式下運行那樣,在啟用SMT的處理系統(tǒng)上執(zhí)行 ST工作負(fù)荷,而無需去激承獨占處理器組內(nèi)每一處理器的其余空閑 硬件線程。
對于獨占處理器組,內(nèi)核命令處理器僅從本地運行隊列中搜索 任務(wù)而不在全局運行隊列中搜索更多任務(wù)。內(nèi)核然后將所有未綁定
完成所有綁定的工作,并且將獨占處理器組中的每個硬件線程設(shè)置 于空閑模式。內(nèi)核將ST工作負(fù)荷的任務(wù)放置于獨占處理器組中每一 處理器的所選擇的 一個硬件線程的本地運行隊列,并且阻止在獨占 處理器組的其余硬件線程上放置任務(wù)。
在 一 個例子中,將獨占處理器組的每個硬件線程設(shè)置于空閑模 式包括將每個硬件線程傳遞到對每個硬件線程的本地運行隊列進(jìn)行 檢查的空閑進(jìn)程,并且在檢測到空的本地運行隊列時設(shè)置每個硬件 線程為空閑并且將每個硬件線程讓與給管理程序(hypervisor)。
在 一 個實施例中,管理程序在收到所讓與的硬件線程時將該硬 件線程設(shè)置于打盹(snooze)模式,其中在打盹模式下,硬件線程沒 有^f吏用處理器資源,并且僅響應(yīng)于特定中斷而喚醒和返回到空閑進(jìn) 程。當(dāng)內(nèi)核調(diào)度獨占處理器的硬件線程之一上的任務(wù)時,內(nèi)核觸發(fā)
中斷以喚醒每一處理器的所選擇的一個硬件線程。然后,空閑進(jìn)程 檢測到用于硬件線程的調(diào)度的任務(wù),并且觸發(fā)用于硬件線程的調(diào)度 器來執(zhí)行任務(wù)。比如當(dāng)每 一 處理器的其余硬件線程被定時器中斷定 期地喚醒并且被傳遞給檢測到每 一 處理器的其余硬件線程仍然沒有 任務(wù)要執(zhí)行的空閑進(jìn)程時,每 一 處理器的其余硬件線程繼續(xù)保持于 打盹模式,處于對處理器資源最小限度的使用內(nèi)。
在另 一 實施例中,管理程序檢測用于特定處理器的所有硬件線 程何時空閑,并且自動地將空閑硬件線程返回到空閑進(jìn)程而不是將 每個硬件線程設(shè)置于打盹模式。通過將獨占組中的硬件線程立即返 回到空閑進(jìn)程,空閑進(jìn)程持續(xù)地檢查將要放置于獨占處理器組的硬 件線程的本地運行隊列上的任務(wù),并且一旦ST工作負(fù)荷任務(wù)被調(diào)度 就快速地開始執(zhí)行這些任務(wù)。 一旦管理程序檢測到從空閑進(jìn)程讓與 的一個硬件線程,但是由于ST任務(wù)正在處理中所以用于處理器的其 他硬件線程不再設(shè)置為空閑,管理程序?qū)⑵溆嘤布€程設(shè)置于打盹 模式并且限制觸發(fā)喚醒獨占處理器組的其余硬件線程的中斷的類 型。
與管理ST工作負(fù)荷在啟用SMT的處理系統(tǒng)上執(zhí)行的同時,內(nèi) 核在未包含于獨占組中的處理器上處理對在啟用SMT的處理系統(tǒng)上 的SMT工作負(fù)荷的管理。此外,當(dāng)ST工作負(fù)荷完成時,釋放獨占 處理器組中包含的處理器以供內(nèi)核在處理對S M T工作負(fù)荷的管理時使用。
在構(gòu)造獨占處理器組時,內(nèi)核可以創(chuàng)建每一物理處理器僅有一 個邏輯處理器這樣的邏輯處理器組,從而僅一個對應(yīng)于邏輯處理器 的硬件線程存在于處理器組中。
此外,內(nèi)核幫助經(jīng)由應(yīng)用編程接口來構(gòu)造獨占處理器組。內(nèi)核 檢測可用于包含在獨占處理器組中的處理器的選擇,并且將可用處 理器的列表返回到應(yīng)用層。此外,內(nèi)核使得能夠利用從返回的可用 處理器列表之中指定的處理器來構(gòu)造獨占處理器組。此外,內(nèi)核使 得能夠根據(jù)從應(yīng)用層接收的命令來構(gòu)造獨占處理器組,該命令指示
了 ST工作負(fù)荷的任務(wù)數(shù)目,其中內(nèi)核創(chuàng)建處理器數(shù)目與ST工作負(fù) 荷的任務(wù)數(shù)目相匹配的獨占處理器組。
所附權(quán)利要求書闡述了被認(rèn)為是本發(fā)明之特征的新穎特征。然 而,通過連同附圖一起閱讀說明性的實施方式的下述詳細(xì)描述,將 更好地理解該發(fā)明本身、其優(yōu)選使用方式、其他目的及其優(yōu)點,其
中
圖1是描繪了本發(fā)明可以在其中實施的多處理器計算機(jī)系統(tǒng)的 一個實施例的框圖2是圖示了用于運行SMT工作負(fù)荷和ST工作負(fù)荷的啟用 SMT的處理系統(tǒng)的一個例子的框圖,其中ST工作負(fù)荷在模擬ST模 式的處理器上運行,無需切換到ST模式卻具有與如同工作負(fù)荷在切 換到ST模式的處理器上運行那樣可當(dāng)?shù)男阅埽?br>
圖3是描繪了啟用SMT的處理系統(tǒng)的一個例子的框圖,該處理 系統(tǒng)具有用于幫助實現(xiàn)硬件線程打盹的軟件層;
圖4是圖示了運行混合型工作負(fù)荷的啟用SMT的系統(tǒng)的原理
圖5是描繪了用于在啟用SMT的系統(tǒng)中運行ST工作負(fù)荷的過 程和程序的高級邏輯流程圖6是圖示了用于在啟用SMT的系統(tǒng)中使用管理程序功能來控 制空閑硬件線程來模擬ST模式的過程和程序的高級邏輯流程圖7是描繪了用于組控制器為ST工作負(fù)荷自動地創(chuàng)建獨占處理 器組的過程和程序的高級邏輯流程圖8是圖示了用于組API與應(yīng)用層進(jìn)行接口通信以便幫助為ST 工作負(fù)荷創(chuàng)建處理器組的過程和程序的高級邏輯流程圖9是描繪了用于管理程序控制空閑硬件線程以便幫助進(jìn)行ST 模式的高效模擬的過程和程序的高級邏輯流程圖。
具體實施例方式
現(xiàn)在參照附圖并且具體參照圖1 ,描繪了本發(fā)明可以在其中實施 的多處理器計算機(jī)系統(tǒng)的一個實施例。將理解到盡管圖l描繪了系 統(tǒng)的 一 個實施例,但是本發(fā)明可以在包括各種計算系統(tǒng)和電子設(shè)備 的各種系統(tǒng)中執(zhí)行。此外將理解到圖1并不意味著結(jié)構(gòu)性的限制而 僅僅說明在多處理器計算系統(tǒng)中可以包含的組件類型。
如圖所示,計算機(jī)系統(tǒng)100包括用于在計算機(jī)系統(tǒng)100內(nèi)傳送
信息的總線U6或者其他通信設(shè)備??偩€116優(yōu)選地包括通過橋和 適配器來連接的并且在計算機(jī)系統(tǒng)100內(nèi)由多個總線控制器來控制 的低延遲路徑和高延遲路徑。
耦合到總線116的是多個處理器(比如處理器110a-110n)、海 量存儲設(shè)備接口 117、輸入/輸出(I/O)接口 130、主存儲器120和 通信接口 132。將理解到在計算機(jī)系統(tǒng)100中替代的和附加的組件可 以連接到總線116。
海量存儲設(shè)4^.接口 117用來將比如直接存取存儲設(shè)備(DASD) 118這樣的海量存儲設(shè)備連接到計算機(jī)系統(tǒng)100。將理解到多種類型 的海量存儲設(shè)備可以連接到計算機(jī)系統(tǒng)100并且在邏輯上視為單個 數(shù)據(jù)存儲邏輯盤或者多個數(shù)據(jù)存儲邏輯盤。
處理器110a-110n可以是通用處理器,比如1MB的PowerPC 處理器,這些處理器在正常操作過程中在操作系統(tǒng)122、中間件(未 示出)、應(yīng)用軟件(未示出)和可從主存儲器120、海量存儲設(shè)備或
個^施例中,操作系統(tǒng)122包i舌多線程控制器128和其他控制器, 其包含用于對每個處理器110a-110n的硬件線程的使用進(jìn)行管理的 機(jī)器可執(zhí)行指令,這些指令在處理器U0a-110n上執(zhí)行時實現(xiàn)流程圖 中描繪的操作和這里描述的其他操作??蛇x地,本發(fā)明的步驟可以 通過包含用于執(zhí)行這些步驟的硬連接邏輯的專用硬件組件來執(zhí)行、 或者通過編程的計算機(jī)組件和定制硬件組件的任何組合來執(zhí)行。
主存儲器120優(yōu)選地存儲數(shù)據(jù)121和操作系統(tǒng)122。主存儲器
120可以包括如隨機(jī)存取存儲器(RAM)的動態(tài)存儲設(shè)備和如只讀 存儲器(ROM)的靜態(tài)存儲設(shè)備。數(shù)據(jù)121代表任何如下數(shù)據(jù),該 數(shù)據(jù)用作對計算機(jī)系統(tǒng)100中任何程序的輸入或者來自計算機(jī)系統(tǒng) 100中任何程序的輸出。將理解到計算機(jī)系統(tǒng)100可以實施邏輯尋 址,該尋址將系統(tǒng)的所有可用存儲器組織成邏輯盤而不是個體存儲 器組件如主存儲器120和DASD 118。因此,盡管數(shù)據(jù)121和操作系 統(tǒng)122被描繪成駐留于主存儲器120中,但是本領(lǐng)域技術(shù)人員將認(rèn) 識到這些組件不是必須同時包含于主存儲器120中。也應(yīng)當(dāng)注意, 術(shù)語"存儲器"在這里用來一般性地指代計算機(jī)系統(tǒng)100的整個邏輯 存儲器,并且可以包括耦合到計算機(jī)系統(tǒng)100的其他計算機(jī)系統(tǒng)的 邏輯存儲器。
在一個實施例中,操作系統(tǒng)122包括為處理器110a-110n調(diào)整多 線程特征的多線程控制器128。當(dāng)在SMT模式下運行處理器 H0a-110n時,多線程控制器128在每個處理器110a-110n上激活多 個硬件線程。此外,多線程控制器128在從處理器110a-110n之中選 擇的處理器上模擬ST模式,并且在所選處理器上運行被設(shè)計為在單 線程處理器上運行得更為高效的工作負(fù)荷,而具有與如同所選處理 器被重新配置到ST模式那樣相似的性能效率,但是無需花費時間將 每個處理器實際地重新配置成在ST模式下操作。
I/O接口 130被用來將輸入接口和輸出接口連接到計算機(jī)系統(tǒng) 100。輸入接口的例子包括但不限于鍵盤、鼠標(biāo)、觸摸屏和麥克風(fēng)。 輸出接口的例子包括但不限于顯示器、揚聲器和打印機(jī)。經(jīng)由I/O 接口 130連接到計算機(jī)系統(tǒng)100的接口如顯示器可以用來允許系統(tǒng) 管理員和用戶與計算機(jī)系統(tǒng)100通信。重要的是注意到盡管1/0接口 130提供了 一種用以與計算機(jī)系統(tǒng)100通信的方式,但是用戶也可以 經(jīng)由通信接口 132與計算機(jī)系統(tǒng)IOO通信,這一點將會進(jìn)一步描述。
重要的是注意到本發(fā)明可以作為在機(jī)器可讀介質(zhì)上包含的計算 機(jī)程序產(chǎn)品來提供,該機(jī)器可讀介質(zhì)上存儲有用來對計算機(jī)系統(tǒng)100 編程以執(zhí)行根據(jù)本發(fā)明的過程的機(jī)器可執(zhí)行指令。如這里所使用的術(shù)語"機(jī)器可讀介質(zhì)"包括任何參與向處理器110a-110n或者計算機(jī) 系統(tǒng)100的其他組件提供指令以供^L行的介質(zhì)。這樣的介質(zhì)可以采 用許多形式,包括但不限于非易失性介質(zhì)、易失性介質(zhì)和傳輸介質(zhì)。 非易失性介質(zhì)的普通形式例如包括軟盤、軟磁盤、硬盤、磁帶或者 任何其他磁介質(zhì)、光盤ROM (CD-ROM)或者任何其他光學(xué)介質(zhì)、 打孔卡或者任何其他具有孔圖案的物理介質(zhì)、可編程ROM( PROM)、 可擦除PROM (EPROM)、電EPROM ( EEPROM )、閃存、任何 其他存儲器芯片或者盒或者計算機(jī)系統(tǒng)100可以從中讀取并且適合 于存儲指令的任何其他介質(zhì)。在本實施例中,非易失性介質(zhì)的一個 例子是被描繪成計算機(jī)系統(tǒng)100的內(nèi)部組件的海量存儲設(shè)備118,但 是將理解到也可由外部設(shè)備來提供。易失性介質(zhì)包括動態(tài)存儲器如 RAM。傳輸介質(zhì)包括同軸電纜、銅線或者光纖,包括包含總線116 的接線。傳輸介質(zhì)也可以采用聲波或者光波的形式,比如在射頻或 者紅外線數(shù)據(jù)通信過程中生成的那些。
另外,本發(fā)明可以作為計算機(jī)程序產(chǎn)品來下載,其中可以經(jīng)由 通向耦合至總線116的通信接口 132的網(wǎng)絡(luò)鏈路134(例如調(diào)制解調(diào) 器或者網(wǎng)絡(luò)連接)作為在載波或者其他傳播介質(zhì)中具體化的數(shù)據(jù)信 號將程序指令從比如服務(wù)器140這樣的遠(yuǎn)程計算機(jī)傳送到進(jìn)行請求 的計算機(jī)系統(tǒng)100直至操作系統(tǒng)122。通信接口 132提供耦合到網(wǎng)絡(luò) 鏈路134的雙向數(shù)據(jù)通信,該網(wǎng)絡(luò)鏈路134可以連接到例如局域網(wǎng)
具體而言,網(wǎng)絡(luò)鏈^各134可以l是供到比如網(wǎng)絡(luò)102這樣的一個或者 多個網(wǎng)絡(luò)的有線和/或無線網(wǎng)絡(luò)通信。網(wǎng)絡(luò)102可以指代使用比如傳 輸控制協(xié)議(TCP)和網(wǎng)際協(xié)議(IP)這樣的協(xié)議來相互通信的網(wǎng)絡(luò) 和網(wǎng)關(guān)的全球集合。網(wǎng)絡(luò)102使用攜帶數(shù)字?jǐn)?shù)據(jù)流的電信號、電磁 信號或者光學(xué)信號。將數(shù)字?jǐn)?shù)據(jù)攜帶到計算機(jī)系統(tǒng)100和從計算機(jī) 系統(tǒng)100攜帶數(shù)字?jǐn)?shù)據(jù)的通過各種網(wǎng)絡(luò)的信號以及網(wǎng)絡(luò)鏈路134上 和通過通信接口 132的信號是傳送信息的載波的示例性形式。另夕卜, 雖然沒有示出,但是通信接口 132可以包括軟件比如設(shè)備驅(qū)動程序、
硬件如適配器和其他實現(xiàn)通信的控制器。
本領(lǐng)域技術(shù)人員將意識到圖1中所示硬件可以變化。另外,本 領(lǐng)域技術(shù)人員將意識到所示例子并不意味著針對本發(fā)明有架構(gòu)性的 限制。
現(xiàn)在參照圖2,描繪了如下框圖,該框示了用于運行SMT
工作負(fù)荷和ST工作負(fù)荷的啟用SMT的處理系統(tǒng)的一個例子,其中 ST工作負(fù)荷在這樣的處理器上運行,這些處理器模擬ST模式而不 切換到ST模式卻具有與如同工作負(fù)荷在切換到ST模式的處理器上 運行那樣可當(dāng)?shù)男阅堋T趩⒂肧MT的處理系統(tǒng)中,從硬件觀點來看, 比如處理器200和220這樣的每個處理器支持多個硬件線程,比如 處理器200的硬件線程202和204以及處理器220的硬件線程222 和224。在一個例子中,每個硬件線程代表處理器內(nèi)的不同執(zhí)行單元 或者中央處理單元(CPU),其中處理器內(nèi)的每個執(zhí)行單元共享該 處理器的資源,比如資源206和226,其中共享資源可以包括但不限 于高速緩存、轉(zhuǎn)換預(yù)覽緩存器(TLB)、寄存器和控制器。
從內(nèi)核角度來看,為了在處理器200和220上實現(xiàn)SMT模式, 就必須激活每個處理器的硬件線程,比如處理器200的硬件線程202 和204以及處理器220的硬件線程222和224。內(nèi)核4巴激活的硬件線 程視為邏輯處理器,該邏輯處理器在圖中被表示為代表硬件線程202 和204的邏輯處理器210和212以及代表^_件線程222和224的邏 輯處理器230和232。例如,多線程控制器128激活每個硬件線程 202、 204、 222和224并且將操作系統(tǒng)配置為在邏輯處理器210、 212、 230和232上處理工作負(fù)荷。
在正常操作過程中,用于每個硬件線程的調(diào)度器(比如硬件線 程202和204的調(diào)度器208和209以及硬件線程222和224的調(diào)度 器228和229 )讀取該硬件線程的本地運行隊列以訪問下一任務(wù)用于 處理。例如,本地運行隊列214和216分別地與硬件線程202和204 相關(guān)^:,而本地運行隊列234和236分別地與^5更件線程222和224 相關(guān)聯(lián)。如果本地運行隊列為空,則調(diào)度器可以在全局運行隊列250
中搜索下一作業(yè)。如果在全局運行隊列中沒有作業(yè)或者如果為調(diào)度 器設(shè)置了僅搜索本地運行隊列的標(biāo)志而本地運行隊列為空,則處理 器線程調(diào)用空閑進(jìn)程。在一個實施例中,正如將要進(jìn)一步描迷的, 空閑進(jìn)程可以將空閑處理器讓與給管理程序應(yīng)用編程接口 ,其中管 理程序提供對空閑硬件線程的附加控制。在一個例子中,在正常操 作過程中,管理程序?qū)⒖臻e硬件線程設(shè)置為打盹。被設(shè)置為打盹的 硬件線程不使用處理器資源而調(diào)度器也不使用處理器周期,但是硬 件線程可以通過中斷來喚醒。將理解到附加或者替代的應(yīng)用編程接 口或者進(jìn)程可以控制空閑硬件線程。
此外,在正常操作過程中,組控制器260可以從處理器組中的 全部處理器之中指定對處理器或者邏輯處理器的選擇以便處理工作
負(fù)荷的任務(wù)。每組處理器與隊列264中的相應(yīng)工作負(fù)荷相關(guān)聯(lián)。在 調(diào)度器262針對隊列264中的每個工作負(fù)荷創(chuàng)建任務(wù)時,調(diào)度器262
將工作負(fù)荷的每個任務(wù)施加到所選邏輯處理器的本地運行隊列。例 如,邏輯處理器組可以包括邏輯處理器212、 222和224,而調(diào)度器 262將工作負(fù)荷的任務(wù)施加到每個本地運行隊列216、 234和236。 在另一例子中,組可以被指定為全局運行隊列250,其中調(diào)度器262 可以將工作負(fù)荷的任務(wù)分配到全局運行隊列250,而這些任務(wù)然后在 負(fù)荷上加以平衡并且從全局運行隊列250分配到可用來接收任務(wù)的 本地運行隊列。將理解到內(nèi)核可以實施多種類型的調(diào)度策略和選項。 當(dāng)內(nèi)核^f企測到比如從啟用SMT的處理系統(tǒng)中的應(yīng)用層傳遞的 ST工作負(fù)荷280這樣的ST工作負(fù)荷時,多線程控制器128控制對 獨占處理器組的選擇,并且指引調(diào)度器262對ST工作負(fù)荷280在獨 占處理器組上的調(diào)度,其是根據(jù)策略270而進(jìn)行,該策略270要求 為每個處理器選擇僅一個邏輯處理器用以接收ST工作負(fù)荷的每個 任務(wù)。
首先,在控制對獨占處理器組的選擇時,組控制器260實現(xiàn)將 對處理器的選擇聲明為獨占。在一個實施例中,當(dāng)處理器在獨占組 中被聲明時,該處理器的兩個硬件線程以及因此兩個邏輯處理器都
在獨占列表268中被自動地聲明為獨占。在另一例子中,處理器的
每個硬件線程可以分別地被聲明為獨占,然而為了模擬用于運行ST 工作負(fù)荷的ST模式,處理器的兩個硬件線程必須被聲明為獨占。
當(dāng)硬件線程被聲明為獨占時,多線程控制器128將任何未綁定 的等待任務(wù)從硬件線程的本地運行隊列自動地排放到全局運行隊列 250。接著,當(dāng)硬件線程被聲明為獨占時,通過位選擇或者進(jìn)程將用 于該硬件線程的調(diào)度器設(shè)置為僅針對該硬件線程的本地運行隊列來 搜索和訪問新任務(wù)。例如,如果硬件線程202和204被聲明為獨占, 則調(diào)度器208和209將分別地僅在本地運行隊列214和216中查找 新任務(wù)。由于所有任務(wù)都從本地運行隊列214和216中被排放,所 以調(diào)度器208和209檢測到硬件線程202和204空閑,而空閑進(jìn)程 可以將每個空閑硬件線程讓與給管理程序。
其次,在控制ST工作負(fù)荷280在獨占處理器組上的調(diào)度時,調(diào) 度器262檢測到與隊列264中的工作負(fù)荷相關(guān)聯(lián)的處理器組被聲明 為獨占,并且在將該工作負(fù)荷的任務(wù)分配到該組中的處理器時實施 ST策略270。在一個例子中,ST策略270要求調(diào)度器2W從獨占處 理器組中動態(tài)地創(chuàng)建對于所表示的每一處理器有一個邏輯處理器這 樣的組、并且將用于該工作負(fù)荷的任務(wù)放置于新邏輯處理器組的本 地運行隊列上。
一旦調(diào)度器262根據(jù)ST策略270選擇了邏輯處理器,調(diào)度器 262將ST工作負(fù)荷280的任務(wù)放置于所選邏輯處理器的本地運行隊 列上。接著,如果所選邏輯處理器仍然被讓與給管理程序,則調(diào)度 器262觸發(fā)中斷以喚醒所選邏輯處理器的硬件線程。當(dāng)每一處理器 的一個硬件線程被喚醒時,用于每個處理器的調(diào)度器仍然被設(shè)置為 僅從用于硬件線程的本地運行隊列中選擇任務(wù)。例如,如果獨占組 包括處理器200,則調(diào)度器262選擇邏輯處理器210和212中的僅一 個,比如邏輯處理器210。調(diào)度器262將任務(wù)放置于本地運行隊列 214上并且如由必要則發(fā)送中斷以喚醒硬件線程202。調(diào)度器208檢 測到硬件線程202被喚醒并且僅從本地運行隊列214中訪問任務(wù)。
在本地運行隊列216上沒有放置工作并且硬件線程204繼續(xù)打盹,
而處理器200被標(biāo)記為獨占并且硬件線程202處理ST工作負(fù)荷的任務(wù)。
因此,當(dāng)處理器200或者任何其他處理器被標(biāo)記為獨占時,多 線程控制器128控制那一處理器在模擬的ST模式下的操作而無需在 硬件層對硬件線程的去激活以及在內(nèi)核層和應(yīng)用層對邏輯處理器的 動態(tài)重新配置。另外有利地,多線程控制器128在可與通過在ST模 式下運行ST工作負(fù)荷所實現(xiàn)的性能相當(dāng)?shù)男阅芗墑e來控制被標(biāo)記 為獨占的處理器在模擬的ST模式下的操作,其中在該ST模式下除 一個硬件線程之外的所有硬件線程在每個處理器上都被激活。
將理解到,當(dāng)處理器不被標(biāo)記為獨占時,多線程控制器128控 制那一處理器在SMT模式下的正常操作。例如,如果在分配給ST 工作負(fù)荷280的獨占組中包含處理器200,則ST工作負(fù)荷運行在處 理器200的一個硬件線程上,而其他硬件線程維持于空閑狀態(tài);同 時,從應(yīng)用層傳遞的SMT工作負(fù)荷282由調(diào)度器262來調(diào)度并且在 處理器220的兩個^ 更件線程上運行。
/人應(yīng)用觀點來看,用戶或者應(yīng)用可以通過一組應(yīng)用編程接口 (API) 266將工作負(fù)荷規(guī)定為ST工作負(fù)荷并且規(guī)定獨占處理器組。 在一個例子中,用戶通過組API 266對處理ST工作負(fù)荷所需要的處 理器數(shù)目進(jìn)行指定來定義獨占處理器組,并且指引組API 266在獨 占組上將特定工作負(fù)荷作為ST工作負(fù)荷來運行。該工作負(fù)荷作為 ST工作負(fù)荷被添加到隊列264。組控制器260從API 266接收對于 工作負(fù)荷的組規(guī)定,并且搜索和選擇可用來包含于獨占組中的所需 處理器數(shù)目的處理器組。在另一例子中,該應(yīng)用通過組API 266來 請求可用來包含于獨占組中的處理器的列表。API 266返回可用來包 含于獨占組中的處理器的列表。該應(yīng)用然后在獨占組中限定可用處 理器的具體范圍,并且指引API 266在獨占組中限定的具體處理器 上將特定工作負(fù)荷作為ST工作負(fù)荷來運行。在另一例子中,API 266 可以運行工作負(fù)荷來檢測工作負(fù)荷中包含的線程數(shù)目并且限定處理
器數(shù)目與檢測到的線程數(shù)目相等的用于運行工作負(fù)荷的獨占處理器組。
在該實施例中,當(dāng)處理器包含于獨占組中時,該處理器包含于
獨占列表268中。當(dāng)處理器包含于獨占列表268中時,組控制器260 可以阻止任何其他工作負(fù)荷將工作綁定到該處理器的任何邏輯處理 器。例如,組API 266可以拒絕來自如下應(yīng)用的組創(chuàng)建請求,該應(yīng) 用包含到如下處理器的特定邏輯處理器的具體綁定,該處理器在獨 占列表268中被標(biāo)記為獨占。此外,組API 266不會把獨占列表268 中所含的處理器包含作為可用于新組的處理器。將理解到獨占列表 268也可以實施隊列或者其他管理工具以便幫助將處理器動態(tài)調(diào)度 為獨占或者非獨占。
重要的是注意到,盡管結(jié)合了模擬ST模式來描述本發(fā)明,但是 內(nèi)核也可以控制將處理器切換到ST模式并且在運行于ST模式下的 處理器上運行ST工作負(fù)荷。此外,重要的是注意到,盡管結(jié)合了運 行于SMT模式下的每個處理器來描述本發(fā)明,但是內(nèi)核也可以運行 對ST模式下的處理器的選擇。另外,盡管結(jié)合了啟用SMT的處理 器來描述本發(fā)明,但是內(nèi)核所管理的對處理器的選擇可以僅提供單 線程選項。
現(xiàn)在參照圖3,框圖描繪了啟用SMT的處理系統(tǒng)的一個例子, 該處理系統(tǒng)具有用于幫助實現(xiàn)硬件線程打盹的軟件層。在該例中, 當(dāng)硬件線程的調(diào)度器(比如硬件線程202的調(diào)度器208 )檢測到本地 運行隊列為空、并且調(diào)度器208被設(shè)置為僅在本地運行隊列214中 搜索任務(wù)時,調(diào)度器208調(diào)用空閑進(jìn)程,比如空閑進(jìn)程312。在所示 實施例中,空閑進(jìn)程312是由內(nèi)核控制的函數(shù),然而在可選實施中 每個處理器或者硬件線程可以包含不同空閑進(jìn)程或者空閑進(jìn)程可以 在另一應(yīng)用層中與內(nèi)核相分離地運行。
空閑進(jìn)程312針對等待作業(yè)搜索硬件線程的本地運行隊列,并 且如果沒有作業(yè)在等待則為硬件線程設(shè)置空閑位并且將硬件線程讓 與給管理程序300。例如,空閑進(jìn)程312為硬件線程202設(shè)置空閑位
302以及為硬件線程204設(shè)置空閑位304。盡管在該實施例中空閑位 302和304示出在硬件層中,但是將理解到在可選實施例中空閑位可 以在比如內(nèi)核層這樣的替代層中設(shè)置。
在一個例子中,當(dāng)硬件線程的空閑位被設(shè)置時,管理程序300 將硬件線程維持于打盹模式下。當(dāng)在打盹模式下時,管理程序300 阻止硬件線程使用調(diào)度周期或者控制任何處理器共享資源并且僅在 收到中斷時才喚醒硬件線程。因此,當(dāng)硬件線程被設(shè)置于打盹模式 下時,管理程序300等待來自內(nèi)核的中斷或者等待定時器中斷,以 及當(dāng)檢測到中斷時,管理程序300將硬件線程返回到空閑進(jìn)程312。 空閑進(jìn)程312檢查所喚醒的硬件線程的本地運行隊列中的任務(wù),以 及如果任務(wù)正在本地運行隊列中等待,則空閑進(jìn)程為喚醒的硬件線 程重新設(shè)置空閑位并且觸發(fā)調(diào)度器以在所喚醒的硬件線程上運行任 務(wù)。如果空閑進(jìn)程312沒有檢測到等待任務(wù),則喚醒的硬件線程的 空閑位保持設(shè)置并且硬件線程再次被讓與給管理程序3 00 。
因此在該例中,在管理程序300將空閑硬件線程維持于打盹模 式下的一個實施例中,當(dāng)調(diào)度器262將任務(wù)放置于硬件線程202和 204之一上,并且處理器200被標(biāo)記為獨占時,調(diào)度器262將中斷發(fā) 送到管理程序300以觸發(fā)管理程序300把對所選硬件線程的控制返 回到空閑進(jìn)程312。例如,調(diào)度器262可以將任務(wù)放置于本地硬件隊 列214上并且將中斷發(fā)送到管理程序300以喚醒硬件線程202并且 把對硬件線程的控制返回到空閑進(jìn)程312。空閑進(jìn)程312檢測到本地 硬件隊列214上的任務(wù)并且調(diào)用調(diào)度器208來處理該任務(wù)。硬件線 程204如管理程序300所控制的那樣保持于打盹模式下,并且組控 制器260防止其他應(yīng)用將任務(wù)綁定到硬件線程202和204中的任一 個(其中處理器200被標(biāo)記為獨占),從而硬件線程202在模擬的 ST模式下運行。
有利地,根據(jù)一個實施例,為了在模擬的ST模式下更高效地管 理硬件線程,管理程序300可以根據(jù)空閑策略310來提供附加功能。 具體而言,為了更高效地實施模擬的ST模式,空閑策略310可以包
括用于在兩個硬件線程為空閑時、以及然后在 一 個硬件線程激活而 一個線程保持空閑時控制硬件線程的指令。
首先,空閑策略310可以指引管理程序300在一個處理器的所 有硬件線程都被設(shè)置為空閑時一旦管理程序300收到所讓與的硬件 線程就將硬件線程返回到空閑進(jìn)程312。通過在一個處理器的兩個硬 件線程保持空閑時將硬件線程從管理程序300立即返回到空閑進(jìn)程 312,當(dāng)處理器200被標(biāo)記為獨占并且調(diào)度器262將任務(wù)放置于硬件 線程202和204之一的本地運行隊列(比如硬件線程202的本地運 行隊列214)中時,更有可能的是空閑進(jìn)程312將會已經(jīng)從管理程序 300收到硬件線程202、將在本地運行隊列214中搜索新作業(yè),因此 空閑進(jìn)程312將更高效地調(diào)用調(diào)度器208以運行任務(wù)。此外,如果 在將任務(wù)放置于本地運行隊列214上時調(diào)度器262檢測到硬件線程 202仍然讓與給管理程序300,則調(diào)度器262可以將中斷發(fā)送到管理 程序300以立即喚醒硬件線程202。在一個例子中,空閑進(jìn)程312 可以在它將硬件線程讓與給管理程序300時設(shè)置一個位而在硬件線 程從管理程序300返回時去除該位的設(shè)置,從而調(diào)度器262可以高 效地檢測硬件線程當(dāng)前是否讓與給管理程序3 00 。
其次,空閑策略310可以指引管理程序300 —旦一個硬件線程 不再被設(shè)置為空閑而其他硬件線程為空閑就將其余空閑硬件線程設(shè) 置于僅可通過定時器中斷和規(guī)定的內(nèi)核中斷來中斷的打盹才莫式。通 過在處理器被標(biāo)記為獨占時限制喚醒打盹硬件線程的中斷類型,空 閑線程就被更少次數(shù)地喚醒、更少次數(shù)地觸發(fā)空閑進(jìn)程和使用更少 的處理器資源。具體而言,在一個例子中,當(dāng)處理器200被聲明為 獨占而調(diào)度器262將任務(wù)放置于本地運行隊列214上時,在空閑進(jìn) 程312從管理程序300收到硬件線程202時,空閑進(jìn)程312檢測到 等待任務(wù),去除空閑位302的設(shè)置并且調(diào)用調(diào)度器208來處理任務(wù)。 然而在該例中,空閑進(jìn)程312將繼續(xù)檢測到在本地運行隊列216中 沒有任務(wù)在等待并且把對硬件線程204的控制讓與給管理程序300。 根據(jù)策略310,當(dāng)管理程序300檢測到空閑位302和304均被設(shè)置、
并且然后收到空閑位302不再設(shè)置的硬件線程204的控制時,管理 程序300將硬件線程204設(shè)置于打盹模式,該打盹模式具有用于中 斷的有限觸發(fā)。在一個例子中,空閑策略310允許定時器中斷,比 如定時器每10毫秒中斷,該每10毫秒中斷觸發(fā)管理程序300以將 硬件線程204返回到空閑進(jìn)程312。
重要的是注意到,在模擬ST模式的過程中使用管理程序300來 控制空閑硬件線程是多線程控制器128在處理器中模擬ST模式的一 種方式。將理解到其他啟用SMT的處理系統(tǒng)可以實施在系統(tǒng)各層之 中的其他類型的功能以便將硬件線程設(shè)置于這樣 一 個狀態(tài),在該狀 態(tài)中它沒有使用處理器資源或者調(diào)度周期直至特定類型的中斷被檢 測到為止。此外,將理解到,可以實施其他類型的空閑策略以最小 化獨占硬件線程檢測到等待任務(wù)所花費的時間量,并且一旦獨占硬 件線程在處理任務(wù)就最小化其余硬件線程搜索等待任務(wù)的次數(shù)。
現(xiàn)在參照圖4,原理圖描繪了運行混合型工作負(fù)荷的啟用SMT 的系統(tǒng)。如圖所示,啟用SMT的系統(tǒng)400包括具有激活硬件線程410 和412的處理器402、具有激活硬件線程414和416的處理器404、 具有激活硬件線程418和420的處理器406和具有激活硬件線程422 和424的處理器408。
隊列264包括設(shè)置為在獨占組432上運行的ST工作負(fù)荷430和 設(shè)置為在非獨占組436上運行的SMT工作負(fù)荷434。在該例中,獨 占組432包括與^5更件線程410、 412、 414和416相對應(yīng)的邏輯處理 器LP1、 LP2、 LP3和LP4。非獨占組436包括與硬件線程418、 420、 424和424相對應(yīng)的道輯處理器LP5、 LP6、 LP7和LP8。
在該例中,調(diào)度器262通過將SMT工作負(fù)荷434的任務(wù)放置于 每個硬件線程418、 420、 422和424的本地運行隊列上來4巴這些任 務(wù)分配于LP5、 LP6、 LP7和LP8以便在硬件線程418、 420、 422和 424上運行。在該例中,"R"指示了運行來自本地和全局運行隊列的 任務(wù)的硬件線程。具體而言,雖然沒有示出,但是SMT工作負(fù)荷434 的特定任務(wù)可以綁定到特定邏輯處理器,或者調(diào)度器262可以在所
選邏輯處理器上平衡負(fù)荷。
此外,在該例中,組控制器260檢測獨占組432并且從用于硬 件線程410、 414、 414和416的本地運^f亍隊列中排;故任何任務(wù)。每 個硬件線程410、 412、 414和416又如"I"所示那樣被設(shè)置為空閑并 且讓與給管理程序。在一個例子中,管理程序?qū)⒚總€硬件線程維持 于可通過內(nèi)核中斷和定時器中斷來中斷的打盹模式。在另一例子中, 由于每個獨占處理器的兩個硬件線程為空閑,所以管理程序可以立
即將硬件線程返回到空閑進(jìn)程直至用于每個獨占處理器的一個硬件 線程不再空閑為止。
接著,調(diào)度器262將ST策略270應(yīng)用于獨占組432并且選擇 LP1和LP4來接收ST工作負(fù)荷430的任務(wù)。調(diào)度器262將ST工作 負(fù)荷430的任務(wù)放置于硬件線程410和416的本地運行隊列上并且 觸發(fā)硬件線程410和416從管理程序返回。如在標(biāo)號444所示,硬
上的任務(wù),如"R,,所示。硬件線程412和414被設(shè)置于打盹模式或者 在打盹模式下繼續(xù),如"S"所示,直至ST工作負(fù)荷430完成并且調(diào) 度器262觸發(fā)硬件線程412和414喚醒為止。具體而言, 一旦ST工 作負(fù)荷430完成,調(diào)度器262就將處理器402和404從獨占列表268 中去除,從而處理器402和404可用于接收SMT工作負(fù)荷任務(wù)或者 可用來包含于用于另一 ST工作負(fù)荷的另 一獨占組中。
如圖所示,啟用SMT的系統(tǒng)400通過留出用于運行ST工作負(fù) 荷的處理器的選擇為獨占、并且控制每個獨占處理器的僅 一 個線程 來運行和訪問來自本地運行隊列的任務(wù),從而并發(fā)地運行ST工作負(fù) 荷和SMT工作負(fù)荷的混合型工作負(fù)荷。將理解到雖然結(jié)合了在啟用 SMT的系統(tǒng)400中的所有處理器來描述該例,其中所有硬件線程都 被激活用來在每個處理器上實現(xiàn)SMT,但是在其他例子中啟用SMT 的系統(tǒng)可以包括不啟用SMT的而是僅運行單線程的處理器的選擇, 并且獨占組可以包括ST處理器的單個硬件線程。
現(xiàn)在參照圖5,高級邏輯流程圖描繪了用于在啟用SMT的系統(tǒng)
中運行ST工作負(fù)荷的過程和程序。如圖所示,該過程始于塊500、 隨后進(jìn)行到塊502。塊502描繪了對內(nèi)核是否收到ST工作負(fù)荷的判 斷。ST工作負(fù)荷可以通過工作負(fù)荷請求中設(shè)置的位來指示、通過被 標(biāo)記為獨占的用于工作負(fù)荷的指定處理器組來指示,或者通過如下 其他指示來指示,該其他指示即為工作負(fù)荷在啟用SMT的系統(tǒng)上應(yīng) 當(dāng)在模擬的ST模式下運行。此外,用戶或者應(yīng)用可以經(jīng)由組API 與內(nèi)核進(jìn)行接口通信并且發(fā)送ST工作負(fù)荷請求。當(dāng)檢測到ST工作 負(fù)荷時,該過程進(jìn)行到塊504。
塊5 04描繪了將處理S T工作負(fù)荷每個任務(wù)所需數(shù)目的處理器設(shè) 置為獨占,其中用于獨占處理器的本地運行隊列被清空而獨占處理 器的硬件線程被設(shè)置為空閑。在一個例子中,分配給ST工作負(fù)荷的 處理器組指示了所需處理器的數(shù)目,而在另一例子中,分配給ST工 作負(fù)荷的處理器組規(guī)定了設(shè)置為獨占的特定處理器。
接著,塊506圖示了根據(jù)ST策略來選擇每個獨占處理器有一個 邏輯處理器這樣的新組。隨后,塊508描繪了將ST工作負(fù)荷任務(wù)施 加到所選邏輯處理器的本地運行隊列并且觸發(fā)所選邏輯處理器運行 ST工作負(fù)荷任務(wù)。隨后,塊510圖示了阻止把任何任務(wù)放置于獨占 處理器的未選邏輯處理器的本地運行隊列上。接著,塊512描繪了 對ST工作負(fù)荷是否完成的判斷。如果ST工作負(fù)荷完成,則該過程 進(jìn)行到塊514。塊514圖示了將獨占設(shè)置從所選處理器中去除,并且 該過程結(jié)束。
現(xiàn)在參照圖6,高級邏輯流程示了用于在啟用SMT的系統(tǒng) 中使用管理程序功能來控制空閑硬件線程來模擬ST模式的過程和 程序。如圖所示,該過程始于塊600、隨后進(jìn)行到塊602。塊602描 繪了對內(nèi)核是否檢測到獨占處理器組的判斷。如果內(nèi)核檢測到獨占 處理器組,則該過程進(jìn)行到塊604。塊604圖示了將獨占組中每個硬 件線程的調(diào)度器設(shè)置為僅訪問本地運行隊列。接著,塊606描繪了 排放獨占處理器組中硬件線程的本地運行隊列。隨后,塊608圖示 了選擇獨占組中每一處理器的一個邏輯處理器。接著,塊610描繪
了將任務(wù)施加到所選處理器的本地運行隊列。隨后,塊612圖示了 如果每一獨占處理器的所選線程當(dāng)前沒有從管理程序返回到空閑進(jìn) 程則將中斷發(fā)送到管理程序以喚醒所選線程。接著,塊614描繪對
ST工作負(fù)荷是否完成的判斷。如果ST工作負(fù)荷完成,則該過程進(jìn) 行到塊616。塊616描繪了去除將獨占硬件線程的調(diào)度器設(shè)置為僅從 本地運行隊列中讀取的標(biāo)志。接著,塊618圖示了將中斷發(fā)送到管 理程序以喚醒每一獨占處理器的未選線程。
現(xiàn)在參照圖7,高級邏輯流程圖描繪了用于組控制器為ST工作 負(fù)荷自動地創(chuàng)建獨占處理器組的過程和程序。如圖所示,該過程始 于塊700、隨后進(jìn)行到塊702。塊702圖示了對內(nèi)核是否收到如下ST 工作負(fù)荷的判斷,該ST工作負(fù)荷具有按照所需獨占處理器的數(shù)目來 限定的處理器組。如果收到具有處理器組數(shù)目的ST工作負(fù)荷,則該 過程進(jìn)行到塊704 。塊704描繪了搜索用以在獨占組中規(guī)定的可用處 理器。在搜索可用處理器時,組控制器可以將綁定任務(wù)從一個處理 器重新分配到另一處理器以便釋放足量處理器用以僅運行ST工作 負(fù)荷任務(wù)。接著,塊706圖示了創(chuàng)建具有所需處理器數(shù)目的獨占處 理器組。隨后,塊708描繪了將獨占組與工作負(fù)荷相聯(lián)系,并且該 過程結(jié)束。
現(xiàn)在參照圖8 ,高級邏輯流程示了用于組API與應(yīng)用層進(jìn)行 接口通信以便幫助為ST工作負(fù)荷創(chuàng)建處理器組的過程和程序。如圖 所示,該過程始于塊800,隨后進(jìn)行到塊802。塊802描繪了對收到 什么命令請求的判斷。如果該命令請求是針對用于獨占組的可用處 理器,則該過程進(jìn)行到塊804。塊804圖示了觸發(fā)組控制器來搜索用 以包含在獨占組中的可用處理器。接著,塊806描繪了向進(jìn)行請求 的應(yīng)用返回用以包含于獨占組中的可用處理器的列表。
回到塊802,如果該命令請求是為了創(chuàng)建獨占處理器組,該組具 有對所列舉的處理器的選擇,則該過程進(jìn)行到塊808。塊808圖示了 檢查處理器是否可用于獨占組。如果處理器不可用,則該過程進(jìn)行 到描繪了將錯誤消息發(fā)送到應(yīng)用的塊810,并且該過程結(jié)束。如果處
理器可用,則該過程進(jìn)行到塊812。塊812描繪了返回關(guān)于組已創(chuàng)建 的指示符,并且該過程結(jié)束。
回到塊802,如果該命令請求是為了將工作負(fù)荷作為具有獨占處 理器組的ST工作負(fù)荷來處理,則該過程進(jìn)行到塊814。塊814描繪 了組API將具有與處理器組相聯(lián)系的工作負(fù)荷請求傳遞到組控制器 和調(diào)度器隊列,其中指示了將工作負(fù)荷作為具有獨占處理器組的ST 工作負(fù)荷來處理,并且該過程結(jié)束。
現(xiàn)在參照圖9,高級邏輯流程圖描繪了用于管理程序控制空閑硬 件線程以便幫助實現(xiàn)對ST模式的高效模擬的過程和程序。在該例 中,該過程始于塊900、隨后進(jìn)行到塊902。塊902描繪了對管理程 序是否從空閑進(jìn)程收到所讓與的硬件線程的判斷。如果管理程序從 空閑進(jìn)程收到所讓與的硬件線程,則該過程進(jìn)行到塊904。塊904 描繪了對同 一 處理器的所有其他硬件線程是否為空閑的判斷。如果
同 一 處理器的所有其他處理器線程并非都空閑,.則該過程進(jìn)行到塊 912。塊912描繪了將硬件線程設(shè)置于打盹模式。接著,塊914描繪 了對管理程序是否檢測到用于硬件線程的可觸發(fā)中斷的判斷。如果 管理程序檢測到用于硬件線程的可觸發(fā)中斷,則該過程進(jìn)行到塊 916。塊916描繪了將打盹的硬件線程返回到空閑進(jìn)程,并且該過程 結(jié)束。
回到塊卯4,如果管理程序檢測到同一處理器的所有其他硬件線 程為空閑,則該過程進(jìn)行到塊906。塊906描繪了將硬件線程立即返 回到空閑進(jìn)程。接著塊908圖示了對管理程序是否檢測到再次讓與 給管理程序的同 一硬件線程的判斷。如果管理程序檢測到讓與給管 理程序的同一硬件線程,則該過程進(jìn)行到塊910。塊910描繪了對同 一處理器的一個其他硬件線程是否不再空閑的判斷。如果同一處理 器的一個硬件線程不再空閑,則該過程進(jìn)行到塊912并且如前所述 那樣繼續(xù)。如果同一處理器的兩個硬件線程仍然空閑,則該過程返 回到塊906。
盡管已經(jīng)結(jié)合優(yōu)選實施例具體示出和描述了本發(fā)明,但是本領(lǐng)
域技術(shù)人員將理解到可以在優(yōu)選實施例中做出形式和細(xì)節(jié)上的各種 變化而不脫離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種用于管理啟用同時多線程(SMT)的處理系統(tǒng)的方法,所述處理系統(tǒng)包括多個處理器,其中每個處理器被激活用于同時執(zhí)行多個硬件線程,所述方法包括幫助從所述多個處理器之中構(gòu)造獨占處理器組,以在所述啟用SMT的處理系統(tǒng)中處理單線程(ST)工作負(fù)荷的多個任務(wù);以及通過選擇所述獨占處理器組內(nèi)每一處理器僅一個硬件線程用以處理所述ST工作負(fù)荷的所述多個任務(wù)中的不同的一個任務(wù),同時要求所述獨占處理器組內(nèi)每一處理器的其余硬件線程空閑,從而在所述獨占處理器組上調(diào)度所述ST工作負(fù)荷,以便如同所述獨占處理器組在ST模式下運行那樣,在啟用SMT的處理系統(tǒng)上執(zhí)行所述ST工作負(fù)荷,而無需去激活所述獨占處理器組內(nèi)每一處理器的其余空閑硬件線程。
2. 根據(jù)權(quán)利要求1所述的方法,還包括將用于所述獨占處理器組的每個硬件線程的不同調(diào)度器設(shè)置為 僅執(zhí)行在與所述獨占處理器組的每個所述硬件線程相關(guān)聯(lián)的每個本 地運行隊列上的工作;排放在與所述獨占處理器組的每個所述硬件線程相關(guān)聯(lián)的每個 本地運行隊列上等待的任何任務(wù);響應(yīng)于將所述獨占處理器組的每個所述硬件線程設(shè)置于不執(zhí)行 任何任務(wù)的空閑模式,將所述獨占處理器組的每個所述硬件線程設(shè) 置于打盹模式,其中只有中斷才喚醒設(shè)置于打盹模式下的每個所述 硬件線程以在相關(guān)聯(lián)的本地運行隊列中搜索等待任務(wù);將所述ST工作負(fù)荷的每個不同任務(wù)施加到所述獨占處理器組內(nèi) 每一處理器的每個所述選擇的 一個硬件線程的不同本地運行隊列;發(fā)送中斷以喚醒每一處理器的所述選擇的一個硬件線程。
3. 根據(jù)權(quán)利要求1所述的方法,還包括將用于所述獨占處理器組的每個硬件線程的不同調(diào)度器設(shè)置為 僅執(zhí)行在與所述獨占處理器組的每個所述硬件線程相關(guān)聯(lián)的每個本 地運行隊列上的工作;.排放在與所述獨占處理器組的每個所述硬件線程相關(guān)聯(lián)的每個本地運行隊列上等待的任何任務(wù);將所述獨占處理器組的每個所述硬件線程傳遞到空閑進(jìn)程,其中 所述空閑進(jìn)程搜索每個本地運行隊列,并且當(dāng)與所述獨占處理器組 的每個硬件線程相關(guān)聯(lián)的每個本地運行隊列保持為空時,將所述獨 占處理器組的每個所述硬件線程讓與給管理程序,其中當(dāng)與所述獨空時,所述管理程序自動地將每個所述硬件線程返回到所述空閑進(jìn)程;將所述ST工作負(fù)荷的每個不同任務(wù)施加到所述獨占處理器組內(nèi) 每一處理器的每個所述選擇的一個硬件線程的不同本地運行隊列;發(fā)送中斷以指引所述管理程序返回那些當(dāng)前讓與給所述管理程 序的每一處理器的所選擇的一個硬件線程;以及響應(yīng)于檢測到讓與給所述管理程序的所述其余硬件線程,將每個 所述其余硬件線程設(shè)置于打盹模式,其中只有中斷的特定選擇才喚 醒設(shè)置于打盹模式下的每個硬件線程以返回到所述空閑模式。
4. 根據(jù)權(quán)利要求1所述的方法,還包括將所述ST工作負(fù)荷的每個不同任務(wù)施加到每一處理器的每個所 選擇的一個硬件線程的不同本地運行隊列;以及阻止在所述獨占處理器組內(nèi)每一處理器的所述其余空閑硬件線程的本地運行隊列的其余選擇上放置任何其他任務(wù)。
5. 根據(jù)權(quán)利要求1所述的方法,還包括在其余非獨占處理器的多個激活硬件線程上并發(fā)地執(zhí)行SMT工 作負(fù)荷。
6. 根據(jù)權(quán)利要求1所述的方法,其中調(diào)度所述ST工作負(fù)荷還 包括檢測可用于包含在所述獨占處理器組中的處理器的選擇;以及 使所述ST工作負(fù)荷能夠請求利用從所述處理器的選擇之中指定 的處理器來構(gòu)造所述獨占處理器組。
7. 根據(jù)權(quán)利要求1所述的方法,其中幫助構(gòu)造獨占處理器組還包括接收具有如下請求的ST工作負(fù)荷,所述請求要求僅按照所述ST 工作負(fù)荷的所述多個任務(wù)的所述數(shù)目來限定的所述獨占處理器組;檢測可用于包含在所述獨占處理器組中的處理器的選擇;以及觸發(fā)如下命令,所述命令是為了利用從所述處理器的選擇之中指 定的處理器來創(chuàng)建所述獨占處理器組,其中所述創(chuàng)建的獨占處理器 組的處理器數(shù)目與所述多個任務(wù)的所述數(shù)目相同;以及將所述獨占處理器組與所述ST工作負(fù)荷相聯(lián)系。
8. 根據(jù)權(quán)利要求1所述的方法,還包括在所述啟用SMT的處理系統(tǒng)的內(nèi)核層接收ST工作負(fù)荷和處理 器的選擇,所述處理器選擇中的處理器經(jīng)由與應(yīng)用層的應(yīng)用編程接 口標(biāo)記為獨占。
9. 一種啟用SMT的處理系統(tǒng),包括多個處理器,其中每個處理器被激活用于同時執(zhí)行多個硬件線程;存儲器,用于存儲用于控制將工作負(fù)荷施加到所述多個處理器的 內(nèi)核;所述內(nèi)核用于幫助從所述多個處理器之中構(gòu)造獨占處理器組,以 處理單線程(ST)工作負(fù)荷的多個任務(wù);以及所述內(nèi)核用于通過選擇所述獨占處理器組內(nèi)每一處理器僅一個 硬件線程用以處理所述ST工作負(fù)荷的所述多個任務(wù)中的不同的一 個任務(wù),同時要求所述獨占處理器組內(nèi)每一處理器的其余硬件線程 空閑,從而在所述獨占處理器組上調(diào)度所述ST工作負(fù)荷,以便如同 所述獨占處理器組在ST模式下運行那樣,在為同時執(zhí)行而實現(xiàn)的多 線程處理系統(tǒng)上執(zhí)行所述S T工作負(fù)荷,而無需去激活所述獨占處理 器組內(nèi)每一處理器的其余空閑硬件線程。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),所述內(nèi)核還包括 用于將用于所述獨占處理器組的每個硬件線程的不同調(diào)度器設(shè) 置為僅執(zhí)行在與所述獨占處理器組的每個所述硬件線程相關(guān)聯(lián)的每個本地運行隊列上的工作的裝置;用于排放在與所述獨占處理器組的每個所述硬件線程相關(guān)聯(lián)的每個本地運行隊列上等待的任何任務(wù)的裝置;用于響應(yīng)于將所述獨占處理器組的每個所述硬件線程設(shè)置于不 執(zhí)行任何任務(wù)的空閑模式而將所述獨占處理器組的每個所述硬件線 程設(shè)置于打盹模式的裝置,其中只有中斷才喚醒設(shè)置于打盹模式下器用于將所述ST工作負(fù)荷的每個不同任務(wù)施加到所述獨占處理 組內(nèi)每一處理器的每個所述選擇的 一個硬件線程的不同本地運行隊 列的裝置;用于發(fā)送中斷以喚醒每一處理器的所述選擇的 一個硬件線程的裝置。
11.根據(jù)權(quán)利要求9所述的系統(tǒng),所述內(nèi)核還包括用于將用于所述獨占處理器組的每個硬件線程的不同調(diào)度器設(shè) 置為僅執(zhí)行在與所述獨占處理器組的每個所述硬件線程相關(guān)聯(lián)的每 個本地運行隊列上的工作的裝置;用于排放在與所述獨占處理器組的每個所述硬件線程相關(guān)聯(lián)的 每個本地運行隊列上等待的任何任務(wù)的裝置;用于將所述獨占處理器組的每個所述硬件線程傳遞到空閑進(jìn)程 的裝置,其中所述空閑進(jìn)程搜索每個本地運行隊列,并且當(dāng)與所述 獨占處理器組的每個硬件線程相關(guān)聯(lián)的每個本地運行隊列保持為空 時,將所述獨占處理器組的每個所述硬件線程讓與給管理程序,其 中當(dāng)與所述獨占處理器組的每個所述硬件線程相關(guān)聯(lián)的每個本地運 行隊列保持為空時,所述管理程序自動地將每個所述硬件線程返回 到所述空閑進(jìn)程;用于將所述S T工作負(fù)荷的每個不同任務(wù)施加到所述獨占處理器 組內(nèi)每一處理器的每個所述選擇的一個硬件線程的不同本地運行隊 列的裝置;用于發(fā)送中斷以指引所述管理程序返回那些當(dāng)前讓與給所述管理程序的每一處理器的所選擇的一個硬件線程的裝置;以及將每個所述其余硬件線程設(shè)置于打盹模式的裝置,其中只有中斷的 特定選擇才喚醒設(shè)置于打盹模式下的每個硬件線程以返回到所述空 閑模式。
12. 根據(jù)權(quán)利要求9所述的系統(tǒng),所述內(nèi)核還包括用于將所述ST工作負(fù)荷的每個不同任務(wù)施加到每一處理器的每 個所選擇的 一 個硬件線程的不同本地運行隊列的裝置;以及用于阻止在所述獨占處理器組內(nèi)每一處理器的所述其余空閑硬 件線程的本地運行隊列的其余選擇上放置任何其他任務(wù)的裝置。
13. 根據(jù)權(quán)利要求9所述的系統(tǒng),所述內(nèi)核還包括用于在其余非獨占處理器的多個激活硬件線程上并發(fā)地執(zhí)行SMT工作負(fù)荷的裝置。
14. 根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述用于調(diào)度所述ST工作負(fù)荷的內(nèi)核還包括用于檢測可用于包含在所述獨占處理器組中的處理器的選擇的 裝置;以及用于使所述S T工作負(fù)荷能夠請求利用從所述處理器的選擇之中 指定的處理器來構(gòu)造所述獨占處理器組的裝置。
15. 根據(jù)權(quán)利要求9所述的系統(tǒng),其中所述用于幫助構(gòu)造獨占處 理器組的內(nèi)核還包括用于接收具有如下請求的ST工作負(fù)荷的裝置,所述請求要求僅按照所述ST工作負(fù)荷的所述多個任務(wù)的所述數(shù)目來限定的所述獨 占處理器組;用于檢測可用于包含在所述獨占處理器組中的處理器的選擇的 裝置;以及 用于觸發(fā)如下命令的裝置,所述命令是為了利用從所述處理器的 選擇之中指定的處理器來創(chuàng)建所述獨占處理器組,其中所述創(chuàng)建的 獨占處理器組的處理器數(shù)目與所述多個任務(wù)的所述數(shù)目相同;以及用于將所述獨占處理器組與所述ST工作負(fù)荷相聯(lián)系的裝置。
16. 根據(jù)權(quán)利要求9所述的系統(tǒng),所述內(nèi)核還包括 用于在所述啟用SMT的處理系統(tǒng)的內(nèi)核層接收ST工作負(fù)荷和處理器的選擇的裝置,所述處理器選擇中的處理器經(jīng)由與應(yīng)用層的 應(yīng)用編禾呈才妄口標(biāo)i己為獨占。
17. —種用于管理啟用同時多線程(SMT)的處理系統(tǒng)的程序, 所述處理系統(tǒng)包括各自被激活用以同時執(zhí)行多個硬件線程的多個處 理器,所述程序具體化于計算機(jī)可讀介質(zhì)中,所述程序包括使計算 機(jī)執(zhí)行根據(jù)權(quán)利要求1至8中任一權(quán)利要求所述的步驟的計算機(jī)可 執(zhí)行指令。
全文摘要
提供了一種方法、系統(tǒng)和程序,用于管理混合型工作負(fù)荷在啟用同時多線程(SMT)的系統(tǒng)中的執(zhí)行。在一個實施例中,在具有各自被激活用于在每個處理器上交錯執(zhí)行多個硬件線程的多個處理器的、啟用SMT的處理系統(tǒng)中,對于ST工作負(fù)荷,啟用SMT的處理系統(tǒng)的內(nèi)核幫助構(gòu)造獨占處理器組以便模擬用于處理ST工作負(fù)荷的任務(wù)的ST模式,其中ST工作負(fù)荷在單線程處理器上運行得更為高效。內(nèi)核通過選擇所述獨占處理器組內(nèi)每一處理器一個硬件線程用以處理ST工作負(fù)荷的任務(wù)中的不同的一個任務(wù),同時要求獨占組內(nèi)每一處理器的其余硬件線程空閑,從而在獨占處理器組上調(diào)度ST工作負(fù)荷。
文檔編號G06F9/38GK101097514SQ20071010485
公開日2008年1月2日 申請日期2007年5月22日 優(yōu)先權(quán)日2006年6月27日
發(fā)明者J·B·穆迪, M·G·馬爾, S·E·沃里厄爾 申請人:國際商業(yè)機(jī)器公司