智能上下文管理的制作方法
【專利摘要】用于線程切換的智能上下文管理通過確定寄存器組未被線程用于預(yù)定數(shù)目的分派并且響應(yīng)地禁用寄存器組被該線程使用而得到實現(xiàn)。在每次線程被分派但是寄存器組不被使用時遞增計數(shù)器。通過比較針對寄存器組的先前校驗和和當前校驗和而推斷使用或不使用寄存器組。如果先前校驗和和當前校驗和匹配,則系統(tǒng)得出寄存器組未被使用的結(jié)論。如果線程嘗試訪問被禁用的組,則處理器中斷,并且將對應(yīng)的計數(shù)器復(fù)位。對于利用事務(wù)存儲器的系統(tǒng),優(yōu)選地在線程處理開始時啟用所有的寄存器組,以避免來自被懈怠上下文管理技術(shù)禁用的寄存器組的異常終止的事務(wù)。
【專利說明】智能上下文管理
【技術(shù)領(lǐng)域】
[0001]本發(fā)明總體涉及計算機系統(tǒng),并且更特別地涉及一種管理多線程處理器中的線程上下文的方法。
【背景技術(shù)】
[0002]當今的高性能計算機系統(tǒng)使用多處理器來執(zhí)行各種計算機程序,諸如軟件應(yīng)用和操作系統(tǒng)。在對稱多處理器(SMP)計算機中,所有的處理單元通常是相同的,即,它們均使用共同的指令和協(xié)議的集或子集來操作,并且通常具有相同的架構(gòu)。每個處理單元可以進一步包括多個實際執(zhí)行程序指令來操作計算機的處理器核。處理器核可以根據(jù)精簡指令集計算(RISC)技術(shù)運作,并且可以采用指令的流水線執(zhí)行和亂序執(zhí)行來進一步提高超標量架構(gòu)的性能。
[0003]在超標量架構(gòu)中,指令可以順序或亂序完成。順序完成意味著指令不能在其之iu分派(dispatch)的所有指令完成之如完成。亂序完成意味著允許指令在其之如分派的所有指令完成之前完成,只要滿足了預(yù)定的規(guī)則。在流水線超標量處理器內(nèi),指令首先被提取、解碼、并且然后被緩沖。指令可以被分派到執(zhí)行單元作為資源,并且操作數(shù)變得可用。附加地,指令可以被提取并以關(guān)于選取的分支(branches taken)的預(yù)測為基礎(chǔ)被推測地分派。結(jié)果是不同執(zhí)行階段中的指令的池,這些指令均未通過將最終結(jié)果寫入系統(tǒng)存儲器層次而完成。隨著資源變得可用并且分支被分解,指令按程序順序引退,因此保存了按程序順序執(zhí)行指令的機器外觀。整體的指令吞吐量可以通過修改處理器內(nèi)的硬件被進一步提高,例如,通過使單個處理器核內(nèi)具有多個執(zhí)行單元。
[0004]現(xiàn)代計算機系統(tǒng)還使用公知為硬件多線程的計算技術(shù)來獨立地執(zhí)行較小的指令序列,稱為線程或上下文。當處理器不管何種原因停止并且無法繼續(xù)處理或執(zhí)行這些線程之一時,處理器可以切換到另一線程。計算機處理器架構(gòu)【技術(shù)領(lǐng)域】的技術(shù)人員使用的術(shù)語“多線程”與該術(shù)語的軟件使用不同,軟件使用中進程被細分成多個相關(guān)的線程。軟件多線程要求操作系統(tǒng)的實質(zhì)參與,操作系統(tǒng)在線程切換可以發(fā)生之前通過實質(zhì)參與對來自寄存器的數(shù)據(jù)進行操作并且將其保存至主存儲器,并且維持相關(guān)且依賴的指令的程序順序。軟件多線程不要求或者其不涉及到硬件多線程,并且反之亦然。硬件多線程操作硬件架構(gòu)的寄存器、執(zhí)行單元和流水線處理器,以維持處理器硬件中的一個或多個獨立執(zhí)行的指令集(線程)的狀態(tài)。硬件線程可以例如來源于多任務(wù)系統(tǒng)中的不同任務(wù)、從軟件多線程系統(tǒng)編譯的不同線程、或來源于不同的輸入/輸出處理器。在硬件多線程的這些示例的每個中,不止一個線程可以被獨立地維持在處理器的寄存器中。圖1圖示了簡化的多線程示例。三個任務(wù)上下文2相應(yīng)具有相關(guān)聯(lián)的線程上下文4,線程上下文4間歇地換出,以用于在四個處理器(處理器核)6中執(zhí)行。來自同一任務(wù)的多個線程不需要在單個處理器上執(zhí)行,而是可以在所有的可用處理器之間進行分配。當包括線程的指令集完成時,線程及其上下文從處理器引退。
[0005]同步多線程(SMT)是將硬件多線程與超標量處理器技術(shù)結(jié)合以允許多線程在每個循環(huán)發(fā)出指令的處理器設(shè)計特征。不像其他的其中任何給定的循環(huán)上僅單個硬件上下文(即,線程)活躍的硬件多線程架構(gòu),SMT允許所有的線程上下文同時競爭并共享處理器資源。不像傳統(tǒng)的超標量處理器,其受缺乏每個線程的指令級并行(ILP)的限制,同時多線程使用多個線程來補償?shù)蛦尉€程ILP。性能結(jié)果是各種工作負荷上更高的指令吞吐量和程序加速,工作負荷包括多道程序和并行環(huán)境中的商業(yè)數(shù)據(jù)庫、web服務(wù)器以及科學應(yīng)用。
[0006]國際商用機器公司設(shè)計的P0WER7處理單元具有八個核并且可以在使用每核單個線程、兩個線程、或四個線程的三種線程模式之間選擇,以實現(xiàn)最多32個可能的線程同時在處理單元中運行。在POWER處理器架構(gòu)中,軟件可視機器狀態(tài)(機器寄存器/上下文)在定點或通用寄存器(GPR)、浮點寄存器(FPR)、向量寄存器(VR)、以及向量-標量寄存器(VSR)之間劃分。處理器硬件在機器狀態(tài)寄存器中包括啟用或禁用對FPR、VR和/或VSR的訪問以用于上下文切換的比特。這一特征使得操作系統(tǒng)能夠管理對那些諸如延遲(“懈怠(lazy)”)狀態(tài)管理之類的設(shè)備或?qū)嵤┓桨傅脑L問。也即,當分派線程時,操作系統(tǒng)將僅恢復(fù)其定點狀態(tài)(GPR),并且將禁用對其他設(shè)備(FPR、VR、VSR)的訪問。如果線程其后嘗試使用這些設(shè)備之一,將會導(dǎo)致中斷并且操作系統(tǒng)可以繼而恢復(fù)所需的狀態(tài)并啟用對所請求的設(shè)備的訪問。
【發(fā)明內(nèi)容】
[0007]本發(fā)明總體涉及一種用于通過確定給定的寄存器組未被特定線程使用預(yù)定數(shù)目個該特定線程的分派并且響應(yīng)地禁用給定的寄存器組以供特定線程使用,來對處理器中的線程切換進行智能上下文管理的方法。在示意性實施方式中,通過每次線程被分派但是寄存器組不被使用時遞增計數(shù)器來確定計數(shù)器組最近未被使用。通過比較針對來自先前分派的寄存器組的狀態(tài)的先前校驗和與針對來自當前分派的寄存器組的狀態(tài)的當前校驗和來推斷使用或不使用寄存器組。如果先前校驗和和當前檢驗和相同,則系統(tǒng)得出寄存器組未被使用的結(jié)論。發(fā)明可以被實現(xiàn)在軟件(例如,計算機的操作系統(tǒng))中或硬件(例如,嵌入在處理器核中的控制邏輯電路裝置)中。對于利用事務(wù)存儲器的系統(tǒng),優(yōu)選地在線程的處理開始時啟用所有的寄存器組。在示例性實施例中,寄存器組包括通用寄存器、浮點寄存器、向量寄存器、以及向量-標量寄存器,但是僅浮點寄存器、向量寄存器、以及向量-標量寄存器被選擇性地禁用,即,通用寄存器總是啟用(存儲/恢復(fù))。
[0008]本發(fā)明的以上和附加目的、特征以及優(yōu)點將在以下詳細書面描述中變得明顯。
【專利附圖】
【附圖說明】
[0009]通過參考附圖,本發(fā)明可以得到更好的理解,并且其許多目的、特征以及優(yōu)點將對本領(lǐng)域技術(shù)人員變得明顯。
[0010]圖1是傳統(tǒng)的硬件多線程的簡化示例的圖形表示;
[0011]圖2是根據(jù)本發(fā)明的一個實施例構(gòu)造的計算機系統(tǒng)的框圖,其中處理單元使用針對線程切換的智能上下文管理;
[0012]圖3是根據(jù)本發(fā)明的一個實施例構(gòu)造的處理器核的框圖,處理器核具有包括各種執(zhí)行單元和寄存器組的設(shè)備;
[0013]圖4是圖示如下內(nèi)容的表格:如何針對所選擇的處理器設(shè)備(寄存器組)維持校驗和以確定給定的設(shè)備是否自特定線程的先前分派以后被特定線程使用,并且遞增計數(shù)器以跟蹤有多少分派在未使用給定的設(shè)備的特定線程的情況下發(fā)生;以及
[0014]圖5A和圖5B—起形成圖不根據(jù)本發(fā)明的一個實施方式的針對圖3的處理器核執(zhí)行的智能上下文管理進程的邏輯流程的單個圖表。
[0015]不同附圖中使用相同的參考標號指示相似或相同項。
【具體實施方式】
[0016]盡管硬件多線程大大增加了現(xiàn)代微處理器的處理吞吐量,但是仍存在與不同的線程切換的途徑相關(guān)聯(lián)的許多限制。懈怠上下文管理在線程僅偶爾或間歇地需要訪問FPR、VR、或VSR時起作用,由此減少正常上下文切換時間。然而,如果線程持續(xù)使用這些設(shè)備之一,則在每次上下文切換之后就有使狀態(tài)恢復(fù)所需的持續(xù)中斷造成的延遲增加。
[0017]這一問題在最新水平的系統(tǒng)中由于近來添加的事務(wù)存儲器而被放大。事務(wù)存儲器是確保原子性(atomicity)的、允許對共享存儲器的投機并發(fā)訪問的方式。其代替了鎖定數(shù)據(jù)直到完成復(fù)雜工作的實踐,一種可以使其他計算機操作減速的途徑。事務(wù)存儲器嘗試通過允許一組加載和存儲指令以原子方式執(zhí)行來簡化并發(fā)或并行編程。其或者保證事務(wù)的所有指令成功完成,或者保證事務(wù)的指令均不發(fā)生作用,即,事務(wù)被異常終止并且事務(wù)中的任何指令運行做出的任何改變都被回滾。當程序進入事務(wù)時,在回滾的情況下,所有的機器寄存器狀態(tài)的快照在處理器芯片的內(nèi)部被捕獲。由于每個中斷引起活躍事務(wù)異常終止并重新開始,事務(wù)中的線程因此不能使其寄存器狀態(tài)被懈怠恢復(fù)以繼續(xù)事務(wù)。
[0018]作為懈怠上下文管理的備選,線程控制邏輯可以總是在上下文切換時間保存并恢復(fù)FPR、VR、和VSR中的每一個。如果線程不斷使用這些設(shè)備,則這一途徑將起作用并且避免過度中斷或干涉事務(wù)存儲器。然而,如果線程需要不頻繁地訪問這些寄存器組之一(或僅一次使用),則每個上下文切換變得低效,因為其存儲并恢復(fù)了不需要的狀態(tài)信息。
[0019]根據(jù)前述內(nèi)容,將期望設(shè)計出一種改進的上下文管理方法,其可以使得線程切換對于各種環(huán)境具有較少的計算密集性。如果方法可以保持諸如懈怠上下文管理之類的備選途徑的益處將更加有利。本發(fā)明通過基于當前線程行為動態(tài)地調(diào)整并優(yōu)化性能來實現(xiàn)這些目標。根據(jù)本發(fā)明的智能上下文管理系統(tǒng)可以在檢測何時線程持續(xù)地在每個分派上使用所有的資源,以及何時線程未使用資源,允許狀態(tài)/恢復(fù)的自調(diào),以匹配當前需要。在示意性實施例中,操作系統(tǒng)維持多個機器狀態(tài)校驗和,每個校驗和將被選擇性地恢復(fù)功能單元各一個(例如,用于浮點狀態(tài)的校驗和、用于向量介質(zhì)擴展狀態(tài)的校驗和、以及用于向量-標量狀態(tài)的校驗和),并且使用可調(diào)統(tǒng)計數(shù)據(jù)來將決定基于何時存儲單元的狀態(tài)、以及是否恢復(fù)其狀態(tài)之上。
[0020]現(xiàn)在參考附圖,并且尤其參考圖2,描繪了根據(jù)本發(fā)明的一個實施方式構(gòu)造的計算機系統(tǒng)的一個實施例10。計算機系統(tǒng)10是具有連接至系統(tǒng)總線14的多個處理單元12a、12b的對稱多處理器(SMP)系統(tǒng)。處理單元12a、12b可以相應(yīng)包括多個處理器核。系統(tǒng)總線14還連接至提供到系統(tǒng)存儲器18的接口的合并的存儲器控制器/主機橋(MC/HB) 16。系統(tǒng)存儲器18可以是本地存儲設(shè)備或備選地可以包括多個分布式存儲設(shè)備,優(yōu)選為動態(tài)隨機存取存儲器(DRAM)。存儲器層次中可以存在未描繪的附加結(jié)構(gòu),諸如板上(LI)和二級(L2)或三級(L3)緩存。[0021]MC/HB16還具有去往外部部件互連(PCI)快捷鏈路20a、20b、20c的接口。每個PCI快捷(PCIe)鏈路20a、20b連接至相應(yīng)的PCIe適配器22a、22b,并且每個PCIe適配器22a、22b連接至相應(yīng)的輸入/輸出(I/O)設(shè)備24a、24b。MC/HB 16可以附加地具有到連接至開關(guān)(I/O結(jié)構(gòu))28的I/O總線26的接口。開關(guān)28為I/O總線提供到多個PCI鏈路20d、20e、20f的扇出。這些PCI鏈路連接至多個PCIe適配器22c、22d、22e,多個PCIe適配器22c、22d、22e繼而支持多個I/O設(shè)備24c、24d、24e。I/O設(shè)備可以不受限制地包括鍵盤、圖形定位設(shè)備(鼠標)、麥克風、顯示器設(shè)備、揚聲器、永久存儲設(shè)備(硬盤驅(qū)動器)或此類存儲器設(shè)備陣列、光盤驅(qū)動器、以及網(wǎng)卡。每個PCIe適配器提供PCI鏈路和相應(yīng)I/O設(shè)備之間的接口。MC/HB16提供低延遲路徑,處理單元12a、12b可以通過其訪問被映射到總線存儲器或I/O地址空間內(nèi)的任何位置的PCI設(shè)備。MC/HB16還提供高帶寬路徑,以允許PCI設(shè)備訪問存儲器18。開關(guān)28可以提供不同末端之間的對等通信,并且如果這一數(shù)據(jù)流量不涉及緩存一致存儲器轉(zhuǎn)移,則其無需被轉(zhuǎn)發(fā)至MC/HB16。開關(guān)28被示出為分離的邏輯部件,但是其可以被集成到MC/HB16中。
[0022]在該實施例中,PCI鏈路20c將MC/HB16連接至服務(wù)處理器接口 30,以允許在I/O設(shè)備24a和服務(wù)處理器32之間的通信。服務(wù)處理器32經(jīng)由JTAG接口 34連接至處理器12a、12b,并且使用中斷處理器12a、12b的操作的注意(attention)線36。服務(wù)處理器32可以具有其自己的本地存儲器38,并且連接至存儲各種用于系統(tǒng)啟動的程序指令的只讀存儲器(ROM) 40。服務(wù)處理器32還可以利用硬件操作面板42來提供系統(tǒng)狀態(tài)和診斷信息。
[0023]在備選實施例中,計算機系統(tǒng)10可以包括對這些硬件元件或其互聯(lián)的修改、或附加元件,所以描述的示例不應(yīng)被解釋為暗示任何關(guān)于本發(fā)明的架構(gòu)限制。
[0024]當計算機系統(tǒng)10最初被加電時,服務(wù)處理器32使用JTAG接口 34來詢問系統(tǒng)(主機)處理單元12a、12b和MC/HB16。在完成詢問之后,服務(wù)處理器32獲得針對計算機系統(tǒng)10的詳細信息和拓撲結(jié)構(gòu)。服務(wù)處理器32繼而執(zhí)行諸如內(nèi)建自測試(BIST)、基本保證測試(BAT)、以及計算機系統(tǒng)10的元件上的存儲器測試之類的各種測試。在測試期間檢測的針對故障的任何錯誤信息由服務(wù)處理器32報告至操作面板42。如果拿走在測試期間發(fā)現(xiàn)故障的元件之后系統(tǒng)資源的有效配置仍有可能,則允許計算機系統(tǒng)10繼續(xù)??蓤?zhí)行代碼被加載進存儲器18并且服務(wù)處理器32釋放主機處理器12a、12b以用于執(zhí)行程序代碼,例如,用于啟動應(yīng)用的操作系統(tǒng)(OS),其結(jié)果可以被存儲在系統(tǒng)的硬盤驅(qū)動器(I/O設(shè)備24)中。主機處理器12a、12b執(zhí)行程序代碼時,服務(wù)處理器32可以進入監(jiān)測并報告任何操作參數(shù)或錯誤的模式,諸如冷卻風扇速度以及操作、熱傳感器、電源調(diào)節(jié)器、以及處理器12a、12b中任一個報告的可恢復(fù)和不可恢復(fù)錯誤、存儲器18和MC/HB16。服務(wù)處理器32可以基于錯誤的類型或預(yù)定閾值采取進一步的措施。
[0025]本【技術(shù)領(lǐng)域】的技術(shù)人員將理解,本發(fā)明的方面可以被體現(xiàn)為系統(tǒng)、方法、或計算機程序產(chǎn)品。因此,本發(fā)明可以采取完全硬件實現(xiàn)、完全軟件實現(xiàn)(包括固件、常駐軟件、微代碼等)或?qū)⒕赏ǔ7Q為“電路”、“模塊”或“系統(tǒng)”的軟件與硬件方面結(jié)合實現(xiàn)的形式。此夕卜,本發(fā)明可以采取體現(xiàn)在任何有形介質(zhì)中的計算機程序產(chǎn)品的形式,該有形介質(zhì)具有體現(xiàn)在介質(zhì)中的計算機可用程序代碼的表達。
[0026]可以使用一個或多個計算機可用或計算機可讀介質(zhì)的任意組合。計算機可用或計算機可讀介質(zhì)可以例如是但不限于電、磁、光、電磁、紅外、或半導(dǎo)體系統(tǒng)、裝置、設(shè)備、或傳播介質(zhì)。計算機可讀介質(zhì)的更具體的示例(未窮盡列舉)可以包括下列:具有一個或多個導(dǎo)線的電連接、便攜式計算機磁盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPR0M或閃存)、光纖、便攜式壓縮盤只讀存儲器(CDR0M)、光存儲器設(shè)備、諸如那些支持因特網(wǎng)或內(nèi)聯(lián)網(wǎng)之類的傳輸介質(zhì)、或磁存儲器設(shè)備。計算機可用或計算機可讀介質(zhì)甚至可以是紙張或程序打印在其上的另一合適介質(zhì),因為程序可以例如經(jīng)由對紙張或其他介質(zhì)的光學掃描被捕獲、繼而被編譯、解譯、或另外以合適方式被處理,如果有必要,并且然后被存儲到計算機存儲器中。本發(fā)明的上下文中,計算機可用或計算機可讀介質(zhì)可以是包含、存儲、通信、傳播、或傳輸程序以供或結(jié)合指令執(zhí)行系統(tǒng)、裝置或設(shè)備使用的任何介質(zhì)。計算機可用介質(zhì)可以包括傳播的數(shù)據(jù)信號,該數(shù)據(jù)信號具有利用其或者在基帶中或者作為載波的一部分得到體現(xiàn)的計算機可用程序代碼。計算機可用程序代碼可以使用任何適當?shù)慕橘|(zhì)發(fā)送,包括但不限于無線、有線、光纖電纜、RF等。
[0027]用于執(zhí)行本發(fā)明的操作的計算機程序代碼可以用一個或多個編程語言的任意組合編寫,包括諸如Java、Smalltalk、C++之類的面向?qū)ο缶幊陶Z言以及傳統(tǒng)的面向過程變成語言,被編寫用于諸如AIX環(huán)境的各種平臺或諸如Wind0ws7或Linux之類的操作系統(tǒng)。程序代碼可以完全在用戶的計算機上、部分在用戶的計算機上、作為孤立的軟件包、部分在用戶的計算機上并且部分在遠程計算機上或完全在遠程計算機或服務(wù)器上執(zhí)行。后一場景中,遠程計算機可以通過包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)的任意類型的網(wǎng)絡(luò)連接至用戶的計算機,或者可以(例如,使用因特服務(wù)提供商通過因特網(wǎng))連接至外部計算機。
[0028]下面參考根據(jù)本發(fā)明的實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖對本發(fā)明進行描述。將理解流程圖和/或框圖的每個方框,以及流程圖和/或框圖中的方框的組合可以由計算機程序指令實現(xiàn)。這些計算機程序指令可以被提供至通用計算機、專用計算機、或其他可編程數(shù)據(jù)處理裝置的處理器,以產(chǎn)生一種機器,使得經(jīng)由計算機或其他可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)流程圖和/或框圖框中指定的功能/行為的裝置。
[0029]這些計算機程序指令還可以存儲在可以指導(dǎo)計算機或其他可編程數(shù)據(jù)處理裝置以特定方式運作的計算機可讀介質(zhì)中,該特定方式使得存儲在計算機可讀介質(zhì)中的指令產(chǎn)生一件包括實現(xiàn)流程圖和/或框圖框中指定的功能/行為的指令裝置的制造品。此種存儲介質(zhì)排除瞬態(tài)介質(zhì)。
[0030]計算機程序指令還可以被加載到計算機或其他可編程數(shù)據(jù)處理裝置上以引起一系列操作步驟在計算機或其他可編程裝置上被執(zhí)行,從而產(chǎn)生計算機實現(xiàn)的處理操作,使得在計算機或其他可編程裝置上執(zhí)行的指令提供用于實現(xiàn)流程圖和/或框圖框中指定的功能/行為的處理。
[0031]附圖中的流程圖和框圖說明了根據(jù)本發(fā)明的實施例的系統(tǒng)、方法以及計算機程序產(chǎn)品的可能實施方式的架構(gòu)、功能和操作。在這一方面,流程圖或框圖中的每個方框可以表示代碼模塊、代碼段或部分代碼,其包括一個或多個用于實現(xiàn)指定的邏輯功能的可執(zhí)行指令。一些備選實現(xiàn)中,方框中記錄的功能可以不按附圖中記錄的順序發(fā)生。例如,接連示出的兩個方框事實上可以基本上并發(fā)執(zhí)行,或方框可以偶爾逆序執(zhí)行,這取決于所涉及的功能。框圖和/或流程圖的每個方框以及框圖和/或流程圖的方框的組合可以由執(zhí)行指定的功能或行為的專用硬件系統(tǒng)實現(xiàn)、或者由專用硬件和計算機指令的組合實現(xiàn)。[0032]由于計算機系統(tǒng)10執(zhí)行用于OR或軟件應(yīng)用的程序指令,因此其將新的上下文管理技術(shù)用于不同處理器核之間的線程切換。相應(yīng)地,體現(xiàn)本發(fā)明的系統(tǒng)可以包括線程技術(shù)的常規(guī)方面,并且參考本公開,這些細節(jié)將對本領(lǐng)域的技術(shù)人員變得明顯。
[0033]現(xiàn)在參考圖3,描繪了根據(jù)本發(fā)明的一個實施例構(gòu)造的處理器核的一個實施例50。圖2的每個處理單元12a、12b可以包括處理器核50的多個實例,諸如每個處理單元八個處理器核??梢栽谔幚砥鲉卧獌?nèi)包括其他未示出的特征,諸如用于每個核的L2緩存、以及同一單元上的所有核使用的L3緩存。
[0034]處理器50通常是單個集成的電路超標量微處理器,并且包括各種執(zhí)行單元、寄存器、緩沖器、存儲器、以及其他均由集成電路裝置形成的功能單元。處理器50根據(jù)精簡指令集計算(RISC)技術(shù)操作,并且經(jīng)由處理器50內(nèi)的總線接口單元(BIU)54耦合至系統(tǒng)或結(jié)構(gòu)總線52。BIU54通過參與總線仲裁來控制處理器50和其他耦合至系統(tǒng)總線52的設(shè)備(諸如,主存儲器或L2緩存存儲器)之間的信息傳遞。處理器50、系統(tǒng)總線52、以及其他耦合至系統(tǒng)總線52的設(shè)備一起形成主機數(shù)據(jù)處理系統(tǒng)。
[0035]BIU54連接至處理器50內(nèi)的指令緩存56和數(shù)據(jù)緩存58。高速緩存(諸如那些在指令緩存56和數(shù)據(jù)緩存58中的高速緩存)使得處理器50能夠?qū)崿F(xiàn)對之前從主存?zhèn)鬟f至緩存的數(shù)據(jù)或指令子集的相當快速的訪問時間,因此提高了主機數(shù)據(jù)處理系統(tǒng)的操作速度。指令緩存56還耦合至提取器60,提取器60在每個循環(huán)期間從指令緩存56提取指令用于執(zhí)行。提取器60將順序指令臨時存儲在指令隊列62中,以供處理器50內(nèi)的其他執(zhí)行電路裝置執(zhí)行。指令從指令隊列62順序地通過解碼單元64,在解碼單元64中它們被翻譯成更簡單的操作代碼(iops)以及下游單元使用的許多控制信號。解碼之后,指令被分派單元66處理,將它們集合成適于同時處理的組,并且將它們分派至發(fā)出單元90。指令緩存56、提取器60、指令隊列62、解碼單元64以及分派單元66統(tǒng)稱為指令提取單元68。
[0036]處理器50的執(zhí)行電路裝置具有用于執(zhí)行順序指令的多個執(zhí)行單元,包括一個或多個加載-存儲單元(LSU) 70、一個或多個定點單元(FXU) 72、浮點單元(FPU) 74、分支處理單元(BPU)76、向量多媒體擴展(VMX)78、以及向量-標量擴展(VSX)80。這些執(zhí)行單元70、72、74、76、78和80在每個處理器循環(huán)期間執(zhí)行特定類型的序列指令中的一個或多個指令。例如,F(xiàn)XU72利用從指定的通用寄存器(GPR) 82接收的源操作數(shù)來執(zhí)行定點數(shù)學和邏輯操作,諸如加法、減法、位移、環(huán)移、以及X0R。在定點指令執(zhí)行之后,F(xiàn)XU72將指令的數(shù)據(jù)結(jié)果輸出至所選的GPR82。FPU74在從浮點寄存器(FPR) 84接收的源操作數(shù)上執(zhí)行單精度和雙精度浮點算數(shù)和邏輯操作,諸如浮點乘法和除法。FPU74將從浮點指令的執(zhí)行得到的數(shù)據(jù)輸出至所選的FPR84。LSU70執(zhí)行浮點或定點指令,其將數(shù)據(jù)從存儲器(即,數(shù)據(jù)緩存58或主存儲器)加載到所選的GPR82或FPR84中、或?qū)碜运x的GPR82或FPR84的數(shù)據(jù)存儲到系統(tǒng)存儲器。BPU76執(zhí)行條件代碼操作指令和分支指令。VMX78執(zhí)行作用于多個操作數(shù)上的單個指令操作,以使用向量計算產(chǎn)生多個結(jié)果,并且將從向量指令的執(zhí)行得到的數(shù)據(jù)輸出至所選的向量寄存器(VR) 86。VSX80執(zhí)行向量-標量指令,其擴展單指令、多數(shù)據(jù)(SMD)處理,使其支持常規(guī)浮點、十進制浮點和向量執(zhí)行,并且將從向量-標量指令的執(zhí)行得到的數(shù)據(jù)輸出至所選的向量-標量寄存器(VSR) 88。
[0037]處理器50可以采用流水線和亂序指令執(zhí)行來進一步提高其超標量架構(gòu)的性能,但是本發(fā)明在與順序程序執(zhí)行一起使用時或在亂序執(zhí)行能力受限的情況下尤其有利。對于亂序處理,指令可以被LSU70、FXU72、FPU74、BPU76、VMX78以及VSX80以任意順序執(zhí)行,只要是遵守了數(shù)據(jù)相關(guān)性。此外,指令可以被這些設(shè)備中的每個按流水線階段的序列處理,尤其是五個不同的流水線階段:提取、解碼/分派、執(zhí)行、結(jié)束、以及完成。
[0038]在提取階段期間,提取器60從指令緩存檢索與一個或多個存儲器地址相關(guān)聯(lián)的一個或多個指令。從指令緩存56提取的序列指令被提取器60存儲到指令隊列62內(nèi)。指令被解碼單元64處理并通過分派單元66形成組。分派單元66將寄存器組82、84、86或88內(nèi)的寄存器分配用于每個分派的指令的結(jié)果數(shù)據(jù),并且發(fā)出單元90發(fā)出一個或多個指令至執(zhí)行單元。在分派時,指令還被存儲到完成單元92的多槽完成緩沖內(nèi)以等待完成。處理器10在亂序執(zhí)行期間利用唯一的指令標識符跟蹤分派的指令的程序順序。
[0039]在執(zhí)行階段期間,由于用于所指示的操作的操作數(shù)和執(zhí)行資源變得可用,執(zhí)行單元70、72、74、76、78和80伺機執(zhí)行從發(fā)出單元90接收的指令。每個執(zhí)行單元優(yōu)選地配備有保留站,該保留站將分派的指令存儲到該執(zhí)行單元直到操作數(shù)或執(zhí)行資源變得可用。然后,執(zhí)行單元通知完成單元92哪些指令完成了執(zhí)行。最終,指令在完成單元92的完成緩沖之外以程序順序完成。FXU72、FPU72、VMX78以及VSX80執(zhí)行的指令通過將指令的數(shù)據(jù)結(jié)果從執(zhí)行單元傳遞至GPR82、FPR84、VR86以及VSR88而完成。LSU70執(zhí)行的加載和存儲指令通過將結(jié)束的指令傳遞至完成的存儲隊列或完成的加載隊列而完成,所指示的加載/存儲操作將從完成的存儲隊列或完成的加載隊列中執(zhí)行。
[0040]執(zhí)行單元可以利用未示出的附加的寄存器,例如專用寄存器、條件寄存器、模型專用(機器專用)寄存器、控制和狀態(tài)寄存器、或保存只讀值的常數(shù)寄存器。處理器50的各個寄存器和執(zhí)行單元可以被復(fù)制以允許多個線程在單個處理器核中處理。因此處理器50包括用于實現(xiàn)線程的并發(fā)操作的線程控制單元。單獨線程必須彼此合作,因為一旦線程運行,其他線程均無法運行,直到當前線程釋放控制。線程控制單元94包括用于使線程優(yōu)先排序(調(diào)度)的一個或多個隊列,用于控制被用于使被優(yōu)先排序的線程的執(zhí)行的仲裁器、以及用于執(zhí)行控制在線程間轉(zhuǎn)移的狀態(tài)機器。
[0041]線程控制單元94還包括用于保存和恢復(fù)線程上下文(B卩,各個寄存器組82、84、86,88的狀態(tài))的保存區(qū)。然而,在本發(fā)明中,根據(jù)線程的實時行為僅保存或恢復(fù)被選擇的設(shè)備。對于每個線程,OS可以被編程用于在線程機器狀態(tài)保存區(qū)中維持FPU、VMX和VSX寄存器上下文上的校驗和。當線程被切出(未分派)時,可以計算針對給定的單元(FPU、VMX、VSX)的內(nèi)寄存器狀態(tài)的校驗和,并且與前一保存的校驗和進行比較。如果針對一組的當前校驗和匹配其舊的校驗和,OS可以推斷線程自同一線程的上一分派之后未使用對應(yīng)的執(zhí)行單元。校驗和匹配不確定狀態(tài)均未改變,因為狀態(tài)可能改變但是非常碰巧計算得到了相同的校驗和。然而,校驗和匹配仍是指示線程可能不在使用該單元的智能提示。雖然可以采用更復(fù)雜的方案來更準確地跟蹤寄存器組利用,但是可以快速生成校驗和并且沒有過多開銷。
[0042]如果OS確定校驗和匹配,其可以遞增計數(shù)器以保持跟蹤特定線程在未使用給定的寄存器組的情況下已經(jīng)歷多少分派。之后(當線程之后被重分派時),OS可以將組沒有使用的分派的當前計數(shù)與某一預(yù)定閾值進行比較,并且如果OS確定閾值被超過,則其可以響應(yīng)地禁用該組,直到線程再次嘗試訪問該組(例如,恢復(fù)至懈怠保存/恢復(fù))。任何已被禁用的組在將來的上下文切出時無需被存儲。如果線程之后確實訪問該組,則OS可以復(fù)位針對該線程/組的計數(shù)器,并且重復(fù)前述過程。
[0043]針對未使用的分派計數(shù)的閾值優(yōu)選為可配置(可編程),并且OS甚至可以基于其他因素調(diào)整閾值。例如,OS可以將閾值調(diào)高以用于使用事務(wù)存儲器的線程,并且調(diào)低以用于未使用事務(wù)存儲器的線程。還可以在調(diào)整閾值中將線程異常終止的事務(wù)的頻率作為考慮因素。對于長壽命線程,OS還可以累積較長的推斷(heuristics)采樣并進一步調(diào)整閾值。例如,如果默認閾值N是校驗和中沒有改變的三個分派,但是OS隨著時間的推移學習到特定的線程平均似乎總是在每四個或五個分派使用特定的功能單元,則OS可能想要將針對該線程將閾值調(diào)整成六個分派而不改變。OS可以在線程的壽命中繼續(xù)將閾值調(diào)高或調(diào)低,從而嘗試總是針對線程的最近行為處于最優(yōu)設(shè)置。所有情況下,必須在確定閾值時考慮在保存和恢復(fù)每個上下文切換的附加狀態(tài)的附加處理路徑長度和通過延遲懈怠管理和/或減少事務(wù)存儲器接口獲得的效率之間的權(quán)衡。可以向不同設(shè)備提供不同閾值。
[0044]圖4描繪了針對每個線程和每個目標設(shè)備的校驗和和計數(shù)器單元的陣列96。陣列96優(yōu)選位于線程控制單元94內(nèi),但可以位于其他位置,甚至片外。OS可以針對其管理的每個線程上下文維持單獨的校驗和和計數(shù)器單元。盡管示意性實施例使用OS (軟件)來執(zhí)行這一智能上下文管理的控制邏輯,本領(lǐng)域的技術(shù)人員將理解各個方面可以在硬件中實現(xiàn),即,具有用于自動維護和比較校驗和和/或自動遞增計數(shù)器并將它們與閾值進行比較的控制邏輯電路裝置98的未來處理器設(shè)計,從而使得線程切換的效率大大增加。有利地,由于計算校驗和所需的所有數(shù)據(jù)已在寄存器中,因此除存入一對暫存(臨時)寄存器之外,再無需存儲器操作來計算總和。
[0045]在上下文切出時,如果針對單元的當前校驗和不匹配線程的最后保存的校驗和,OS得出線程仍在活躍使用單元的結(jié)論,并且清除相應(yīng)的歷史計數(shù)(重置到零)。校驗和因此用作形成確定何時停止推測地保存/恢復(fù)狀態(tài)并且反而恢復(fù)到懈怠(禁用和中斷)方法的推斷。由此,這一用于上下文管理的智能途徑允許處理器實現(xiàn)懈怠上下文管理及其備選(總是保存/恢復(fù)寄存器組)的益處。如果針對線程的當前的和舊的校驗和恰好跨N個間隔都匹配,即使存在寄存器狀態(tài)的改變,最壞的情況僅僅是需要禁用對單元的訪問并經(jīng)由中斷快速確定線程仍在使用單元,所以相比于傳統(tǒng)的上下文管理技術(shù)可能出現(xiàn)的重復(fù)中斷,不便是短暫且次要的。
[0046]執(zhí)行本發(fā)明的OS可以初始地以兩個可能的默認策略中的任何一個開始。在一個策略中,對目標設(shè)備(FPR、VR、VSR)的訪問被初始禁用,并且一旦線程引用這些設(shè)備之一,對應(yīng)訪問比特就被啟用,以允許該線程在每次上下文切換時的自動保存/恢復(fù)(直到其計數(shù)器超過預(yù)設(shè)閾值)。在另一策略中,OS恢復(fù)針對分派的線程的所有寄存器狀態(tài),并且通過訪問所有單元進行分派。這一后者策略避免了任何額外中斷并且還避免干涉事務(wù)存儲器,所以其被認為優(yōu)選用于利用事務(wù)存儲器的系統(tǒng)。
[0047]還可以參考圖5A和圖5B的圖標來進一步理解本發(fā)明,圖5A和圖5B示出了根據(jù)一個實施方式的用于智能上下文管理處理的邏輯流程。以將所有的校驗和和計數(shù)器初始化為零并且啟用針對任意線程的所有寄存器組開始該處理(102)。優(yōu)先的線程然后開始執(zhí)行
(104)。在處理線程的一段時間之后,其被OS切出,例如,由于其時間片期滿、中斷、I/O請求、產(chǎn)生(yield)等(106)。在這一實施方式中,總是在上下文切換時保存GPR。然而,必須進行進一步的處理來確定是否保存其他寄存器狀態(tài)。這一確定通過檢查每個目標設(shè)備當前是否啟用用于該線程(由于方框102中的初始啟用設(shè)置,它們將針對第一上下文切換)而開始。如果啟用FPR (108),就保存該寄存器狀態(tài),并且計算并存儲其校驗和(110)。如果新的FPR校驗和等于舊的校驗和(112),則遞增FPR計數(shù)器(114)。如果校驗和不相同,則復(fù)位FPR計數(shù)器(116)。相同的流程發(fā)生于VR和VSR。如果啟用VR (118),則保存該寄存器狀態(tài),并且計算并存儲其校驗和(120)。如果新的VR校驗和等于舊的校驗和(122),則遞增VR計數(shù)器(124)。如果校驗和不相同,則復(fù)位VR計數(shù)器(126)。如果啟用VSR (128),則保存該寄存器狀態(tài),并且計算并且存儲其校驗和(130)。如果新的VSR校驗和等于舊的校驗和
(132),則遞增VSR計數(shù)器(134)。如果校驗和不相同,則復(fù)位VSR計數(shù)器(136)。不需要針對任何仍被禁用的單元在上下文切出時保存狀態(tài)信息或計算校驗和。
[0048]處理從圖5A中的“A”氣泡繼續(xù)至圖5B中的“A”氣泡?!癆”氣泡表示線程未運行的時間段,例如,OS決定運行一些其他的線程,等待I/O等等,直到是時候再次運行該線程。此時,存在上下文切入并且GPR自動恢復(fù)(140)。目標設(shè)備然后再次被檢查,以查看它們是否被啟用。沒有對任何被禁用的設(shè)備采取行動。如果啟用FPR (142),則FPR計數(shù)器與閾值相比較(144)。如果計數(shù)器超過閾值,則禁用FPR (146)。如果計數(shù)器還未達到閾值,則FPR狀態(tài)恢復(fù)(148)。如果啟用VR (150),將VR計數(shù)器與閾值相比較(152)。如果計數(shù)器超過閾值,則禁用VR (154)。如果計數(shù)器還未達到閾值,則VR狀態(tài)恢復(fù)(156)。如果啟用VSR (158),則將VSR計數(shù)器與閾值相比較(160)。如果計數(shù)器超過閾值,則禁用VSR (162)。如果計數(shù)器還未達到閾值,則VSR狀態(tài)恢復(fù)(164)。一旦恢復(fù)了任何需要的設(shè)備,線程就重新開始處理(166)。如果線程嘗試訪問被禁用的寄存器組(168),則處理器就中斷,恢復(fù)所請求的寄存器,啟用寄存器組,并且將針對組的寄存器復(fù)位到零(170)。如果線程處理完成
(172),則線程管理過程結(jié)束。否則,過程在“B”氣泡處迭代繼續(xù),表示線程直到其再次被OS切出都在運行的時間段。
[0049]本領(lǐng)域的技術(shù)人員將理解這一自我優(yōu)化、自我調(diào)整的狀態(tài)管理的關(guān)鍵價值在于其如何使自己適應(yīng)于工作加載行為和CPU功能單元利用的改變。效率對于使用事務(wù)存儲器的系統(tǒng)尤其具有意義。隨著傳統(tǒng)的懈怠狀態(tài)管理在每次使用事務(wù)存儲器的線程被上下文切出,移除對FPU、VMX以及VSX的訪問,直到線程需要再次使用它們。在下一分派之后,如果線程的第一使用在事務(wù)之下,處理器不僅需要中斷來進行懈怠上下文恢復(fù),還需要異常終止事務(wù),其必須被重新啟動。在最壞的情況下,線程試圖在事務(wù)之下按順序使用全部三個單元,因此在重分派之后可能遇到三個中斷和三個異常終止/重新啟動的事務(wù)。基于確定使用頻率的更智能的上下文管理的新方法不僅總體上更有效,而且還有助于避免對事務(wù)存儲器的這一干涉。
[0050]盡管已經(jīng)參考特定實施例描述了本發(fā)明,但是這一說明并不意味著以限制意義被解釋。參考本發(fā)明的描述時,對公開的實施例的各種修改以及本發(fā)明的備選實施例將對本領(lǐng)域的技術(shù)人員變得明顯。例如,盡管優(yōu)選的實施方式總是恢復(fù)GPR并且選擇性地進恢復(fù)FPR、VR和VSR,處理器可以利用發(fā)明來選擇性地恢復(fù)寄存器組或其他設(shè)備的任意組合。因此可預(yù)見可以做出此類修改而不脫離所附權(quán)利要求定義的本發(fā)明的精神和范圍。
【權(quán)利要求】
1.一種用于具有執(zhí)行單元和由所述執(zhí)行單元使用的寄存器組的處理單元中的線程切換的智能上下文管理方法,所述方法包括: 確定給定的寄存器組沒有被特定線程使用預(yù)定數(shù)目個所述特定線程的分派;以及 響應(yīng)于所述確定,禁用所述給定的寄存器組被所述特定線程使用。
2.根據(jù)權(quán)利要求1所述的方法,其中所述確定包括: 在所述特定線程的當前分派之后推斷所述特定線程自所述特定線程的先前分派以后未使用所述給定的寄存器組;以及 響應(yīng)于所述推斷,遞增對應(yīng)于所述特定線程以及所述給定的寄存器組超過預(yù)定閾值的計數(shù)器。
3.根據(jù)權(quán)利要求2所述的方法,其中所述推斷包括: 存儲針對來自所述先前分派的所述給定的寄存器組的狀態(tài)的先前校驗和;以及 確定針對來自所述當前分派的所述給定的寄存器組的狀態(tài)的當前校驗和等于所述先前校驗和。
4.根據(jù)權(quán)利要求1所述的方法,其中所述確定和所述禁用由包括所述處理單元的計算機系統(tǒng)的操作系統(tǒng)軟件控制。
5.根據(jù)權(quán)利要求1所述的方法,其中對所述特定線程的處理始于所有所述寄存器組被啟用。
6.根據(jù)權(quán)利要求1所述的方法,其中: 所述寄存器組包括通用寄存器、浮點寄存器、向量寄存器以及向量-標量寄存器;以及 所述禁用選擇性地禁用所述浮點寄存器、所述向量寄存器以及所述向量-標量寄存器之一 O
7.一種處理器,包括: 多個執(zhí)行單元; 將程序指令集分派至所述執(zhí)行單元的指令取得單元,所述集構(gòu)成多個線程;以及 由所述執(zhí)行單元使用的多個寄存器組;以及 管理所述多個線程的操作的線程控制單元,所述線程控制單元包括計數(shù)器,所述計數(shù)器指示在不使用所述寄存器組中的給定的寄存器組的情況下所述線程中的特定線程被分派多少次。
8.根據(jù)權(quán)利要求7所述的處理器,其中所述線程控制單元還包括針對所述寄存器組的內(nèi)容的相應(yīng)校驗和。
9.根據(jù)權(quán)利要求8所述的處理器,其中所述線程控制單元還包括控制邏輯,所述控制邏輯存儲針對來自先前分派的所述給定的寄存器組的狀態(tài)的先前校驗和,確定針對來自當前分派的所述給定的寄存器組的狀態(tài)的當前校驗和等于所述先前校驗和,并且響應(yīng)地遞增所述計數(shù)器中與所述特定線程和所述給定的寄存器組對應(yīng)的計數(shù)器。
10.根據(jù)權(quán)利要求7所述的處理器,其中: 所述寄存器組包括通用寄存器組、浮點寄存器組、向量寄存器組以及向量-標量寄存器組;以及 所述計數(shù)器僅被提供有所述浮點寄存器組、所述向量寄存器組以及所述向量-標量寄存器組。
11.一種計算機系統(tǒng),包括: 具有處理構(gòu)成多個線程的程序指令集的至少一個處理器核的至少一個處理單元,所述處理器核包括多個執(zhí)行單元、由所述執(zhí)行單元使用的多個寄存器組以及管理所述多個線程的操作的線程控制單元; 耦合至所述處理器核的系統(tǒng)存儲器,所述系統(tǒng)存儲器存儲所述程序指令;以及 用于響應(yīng)于確定給定的寄存器組未被特定線程使用所述特定線程的預(yù)定數(shù)目的分派而禁用所述給定的寄存器組被所述特定線程使用的裝置。
12.根據(jù)權(quán)利要求11所述的計算機系統(tǒng),其中所述禁用裝置在所述特定線程的當前分派之后推斷所述特定線程自所述特定線程的先前分派以后還未使用所述給定的寄存器組,并且響應(yīng)地遞增對應(yīng)于所述特定線程和所述給定的寄存器組超過預(yù)定閾值的計數(shù)器。
13.根據(jù)權(quán)利要求12所述的計算機系統(tǒng),其中所述禁用裝置還存儲針對來自所述先前分派的所述給定的寄存器的狀態(tài)的先前校驗和,并且確定針對來自所述當前分派的所述給定的寄存器組的狀態(tài)的當前校驗和等于所述先前校驗和。
14.根據(jù)權(quán)利要求11所述的計算機系統(tǒng),其中: 所述系統(tǒng)存儲器包括操作系統(tǒng);以及 所述操作系統(tǒng)控制所述禁用裝置。
15.根據(jù)權(quán)利要求14所述的計算機系統(tǒng),其中所述操作系統(tǒng)在所述特定線程的處理開始時啟用所有所述寄存器組。
16.在提供具有執(zhí)行單元和由所述執(zhí)行單元使用的寄存器組的處理器核內(nèi)的多個線程的并發(fā)執(zhí)行的多線程計算機系統(tǒng)中,改進包括: 基于所述多個線程的實時行為動態(tài)地啟用和禁用對選擇的寄存器組的訪問的控制邏輯。
17.根據(jù)權(quán)利要求16所述的改進,其中所述控制邏輯存儲針對來自特定線程的先前分派的給定的寄存器組的狀態(tài)的先前校驗和,確定針對來自所述特定線程的當前分派的所述給定的寄存器組的狀態(tài)的當前校驗和等于所述先前校驗和,并且響應(yīng)地遞增對應(yīng)于所述特定線程和所述給定寄存器組的計數(shù)器。
18.根據(jù)權(quán)利要求17所述的改進,其中所述控制邏輯至少部分地體現(xiàn)在計算所述檢驗和和遞增所述計數(shù)器的所述計算機系統(tǒng)的操作系統(tǒng)中。
19.根據(jù)權(quán)利要求17所述的改進,其中所述控制邏輯至少部分地體現(xiàn)在計算所述校驗和和遞增所述計數(shù)器的所述處理器核的硬件電路裝置中。
20.根據(jù)權(quán)利要求16所述的改進,其中所述控制邏輯在特定線程的處理開始時啟用所有所述寄存器組。
【文檔編號】G06F9/38GK103810035SQ201310521980
【公開日】2014年5月21日 申請日期:2013年10月29日 優(yōu)先權(quán)日:2012年11月1日
【發(fā)明者】R·C·斯旺貝格 申請人:國際商業(yè)機器公司