專(zhuān)利名稱(chēng):用于向一處理器讓與資源的系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算系統(tǒng),更具體地說(shuō),涉及在一邏輯分區(qū)的環(huán)境中讓與(yield)處理器,在該環(huán)境中,諸分區(qū)共享諸中央處理單元(CPU)。
背景技術(shù):
很多計(jì)算應(yīng)用的速度和效率取決于處理資源的可用性。為此目的,諸如由國(guó)際商業(yè)機(jī)器公司開(kāi)發(fā)的“虛擬機(jī)”設(shè)計(jì)等計(jì)算體系結(jié)構(gòu)在多個(gè)進(jìn)程之間共享共同的處理資源。這樣一個(gè)體系結(jié)構(gòu)通??赡芤蕾?lài)于具有一個(gè)或多個(gè)物理控制器,或中央處理單元(CPU)的單個(gè)計(jì)算機(jī)器。這些CPU可以執(zhí)行被配置為模擬多個(gè)虛擬處理器的軟件。
這種多處理器環(huán)境支持邏輯“分區(qū)”的概念實(shí)踐。分區(qū)提供了一種適于分配和共享計(jì)算資源的程序體系結(jié)構(gòu)。一個(gè)分區(qū)可以邏輯地包含如由一管理員所分配的一個(gè)機(jī)器的CPU、存儲(chǔ)器和其他資源中的一部分。這樣,管理員可以將相同的資源分配給一個(gè)以上的分區(qū)。每個(gè)分區(qū)除了有多個(gè)虛擬處理器之外還可以有一個(gè)操作系統(tǒng)。以這種方式,每個(gè)分區(qū)大體上如同它是一個(gè)單獨(dú)的計(jì)算機(jī)一樣運(yùn)行。
原則上講,每個(gè)虛擬處理器可以訪問(wèn)底層物理機(jī)器的很多物理資源。除了CPU之外,示例性的資源還可以包括存儲(chǔ)器資源和硬件寄存器。諸虛擬處理器另外可以共享一個(gè)優(yōu)先權(quán)方案或調(diào)度表,該優(yōu)先權(quán)方案或調(diào)度表部分地規(guī)定了處理周期在不同虛擬處理器之間的分配。一個(gè)被稱(chēng)為“系統(tǒng)管理程序”(hypervisor)或分區(qū)管理器的底層程序可以使用該方案向每個(gè)虛擬處理器分配和發(fā)派CPU。例如,該系統(tǒng)管理程序可能截獲來(lái)自諸操作系統(tǒng)的對(duì)諸資源的請(qǐng)求,以全局性地共享和分配這些資源。
以這種方式,諸虛擬處理器擔(dān)當(dāng)了一宿主分區(qū)的執(zhí)行的諸邏輯線程。這樣,這些虛擬處理器可以在共享資源的同時(shí)單獨(dú)地執(zhí)行指令。通過(guò)重復(fù)利用某些物理資源,一分區(qū)環(huán)境可以促進(jìn)更高的性能和效率。諸分區(qū)的可編程靈活性可以進(jìn)一步使它們動(dòng)態(tài)地對(duì)負(fù)荷的變化作出反應(yīng),而無(wú)需重新啟動(dòng)。例如,包含10個(gè)虛擬處理器的2個(gè)分區(qū)中的每一個(gè)分區(qū)都可以在工作負(fù)荷轉(zhuǎn)移時(shí)接管一共享物理系統(tǒng)的全部10個(gè)CPU,而無(wú)需重新啟動(dòng)或操作員的介入。
為促進(jìn)均衡的資源分配,管理員可以對(duì)可由一虛擬處理器訪問(wèn)的資源的數(shù)量設(shè)置限制。例如,系統(tǒng)管理程序可以從不向某個(gè)虛擬處理器發(fā)派超過(guò)50%的可用CPU。類(lèi)似地,系統(tǒng)管理程序可以保證一虛擬處理器對(duì)一CPU的使用不超過(guò)一指定的持續(xù)時(shí)間。在這種方式中,可以向該虛擬處理器分配一CPU的一“時(shí)間片”,當(dāng)該時(shí)間片到期時(shí),系統(tǒng)管理程序可以搶占該虛擬處理器對(duì)該CPU的使用。通過(guò)類(lèi)似的編程,一個(gè)復(fù)雜的應(yīng)用可以在理論上分配于多個(gè)處理器中,而不是等待由一單個(gè)處理器執(zhí)行。
然而,盡管有這種多處理系統(tǒng)提供的靈活性,與資源分配有關(guān)的復(fù)雜性依然存在。某些這種障礙來(lái)自于諸操作系統(tǒng)的動(dòng)態(tài)的、相互交錯(cuò)的處理要求。例如,某些虛擬進(jìn)程的初始化可能是以其他一些進(jìn)程的在先執(zhí)行為前提的。這種依賴(lài)可能將它自己的復(fù)雜性和無(wú)效率引入一多進(jìn)程應(yīng)用。在一共享處理器環(huán)境中,同樣的障礙可能對(duì)諸虛擬處理器產(chǎn)生。例如,系統(tǒng)管理程序可能將CPU分配給這樣的一虛擬處理器,其正在請(qǐng)求一旋轉(zhuǎn)鎖(spin-lock),而且同時(shí)正在等待持有該旋轉(zhuǎn)鎖的先決的一虛擬處理器以獲得它自己的CPU。這樣一來(lái),不僅所分配的CPU無(wú)法執(zhí)行該虛擬處理器,而且它也被阻止執(zhí)行該分區(qū)中的其他虛擬處理器。
某些管理員試圖通過(guò)引入編程的讓與函數(shù)來(lái)解決多處理器的無(wú)效率。例如,每當(dāng)一虛擬處理器即將旋轉(zhuǎn)等待(spin)時(shí),該虛擬處理器可能向系統(tǒng)管理程序發(fā)出一“讓與給活動(dòng)者”命令。當(dāng)一虛擬處理器等待一先決進(jìn)程執(zhí)行或一資源變?yōu)榭捎脮r(shí),它可能會(huì)“旋轉(zhuǎn)等待”。由于該資源的持有者可能不是處于活動(dòng)狀態(tài),所以當(dāng)該虛擬處理器旋轉(zhuǎn)等待時(shí),它將浪費(fèi)CPU周期。響應(yīng)于該“讓與給活動(dòng)者”命令,該虛擬處理器可以進(jìn)入一讓與的狀態(tài),而放棄它的CPU。系統(tǒng)管理程序可以將被讓與的該CPU重新分配給在調(diào)度表中出現(xiàn)的下一個(gè)虛擬處理器。
盡管這一技術(shù)代表了資源管理方面的一個(gè)進(jìn)步,它依然容忍了無(wú)效率。就是說(shuō),讓與的進(jìn)程在等待系統(tǒng)管理程序相繼地向所有其他虛擬處理器分配諸CPU時(shí),常常必須在延長(zhǎng)的時(shí)間內(nèi)保持在非活動(dòng)狀態(tài)。又加之以多個(gè)處理層和迭代,這種非活動(dòng)狀態(tài)就轉(zhuǎn)化成低處理速度和無(wú)效率。因此,需要一種管理物理計(jì)算資源的更有效的方式。
發(fā)明內(nèi)容
與本發(fā)明的原理一致的一實(shí)施例包括一裝置、方法和程序產(chǎn)品,其被配置為在一邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)中讓與CPU。這樣的系統(tǒng)可以支持多個(gè)虛擬處理器。這樣,本實(shí)施例可以從一讓與虛擬處理器發(fā)起一請(qǐng)求。該請(qǐng)求可以促使由該讓與虛擬處理器控制的一CPU的讓與。更具體地說(shuō),該請(qǐng)求可以從多個(gè)虛擬處理器中指定一個(gè)目標(biāo)虛擬處理器。例如,該信號(hào)可能包含關(guān)于該目標(biāo)處理器的指針和/或狀態(tài)信息。
該目標(biāo)虛擬處理器可能請(qǐng)求訪問(wèn)由該讓與虛擬處理器控制的且請(qǐng)求讓與的CPU。然后,該實(shí)施例可以將對(duì)該CPU的控制從該讓與虛擬處理器重新分配或“切換”到該目標(biāo)虛擬處理器。在將該CPU發(fā)派到該目標(biāo)虛擬處理器之前,系統(tǒng)管理程序可能要驗(yàn)證該讓與虛擬處理器依然處于非活動(dòng)狀態(tài),并且進(jìn)一步地該目標(biāo)虛擬處理器本身未處于讓與的狀態(tài)。系統(tǒng)管理程序可以進(jìn)一步地在將控制傳給一調(diào)度器之前,保存該讓與虛擬處理器的狀態(tài)。
本發(fā)明的上述和其他目的和優(yōu)點(diǎn)通過(guò)參照附圖及其描述將會(huì)變得清楚起來(lái)。程序代碼可以存儲(chǔ)該讓與虛擬處理器的狀態(tài)。
納入本說(shuō)明書(shū)并構(gòu)成其中一部分的附圖示出了本發(fā)明的實(shí)施例,這些附圖和上面對(duì)本發(fā)明的一般描述以及下面對(duì)本發(fā)明的具體描述一起,可用于解釋本發(fā)明的原理。
圖1是與本發(fā)明一致的計(jì)算機(jī)的框圖。
圖2是圖1所示計(jì)算機(jī)中的主要軟件組件和資源的框圖。
圖3是一流程圖,其示出了在圖1和2所示環(huán)境中所支持的、在諸分區(qū)中重新分配諸CPU的方法。
圖4是一流程圖,其示出了與圖3所示的一處理步驟相關(guān)的順序執(zhí)行的諸步驟。
具體實(shí)施例方式
本發(fā)明的一實(shí)施例可以包括用于在經(jīng)過(guò)邏輯分區(qū)的諸虛擬處理器之間協(xié)調(diào)和重新分配諸CPU的裝置、程序產(chǎn)品和方法。該實(shí)施例可以讓與CPU,以促進(jìn)一虛擬處理器自身的執(zhí)行可能基于其上的事件的發(fā)生。大體說(shuō)來(lái),該實(shí)施例可以通過(guò)有效地將諸CPU讓與諸目標(biāo)虛擬處理器而協(xié)調(diào)諸虛擬處理器的執(zhí)行。
更具體地說(shuō),讓與虛擬處理器可以確定和指定一“目標(biāo)”虛擬處理器。一示例性目標(biāo)處理器可能需要該讓與虛擬處理器持有的一CPU。該目標(biāo)處理器可能進(jìn)一步包含在該讓與處理器執(zhí)行之前所需的條件。本實(shí)施例的讓與特征可以使一系統(tǒng)管理程序能夠?qū)⒃撟屌c處理器放棄的一CPU或存儲(chǔ)器資源分配給該指定的虛擬處理器。通過(guò)激活該目標(biāo)處理器,本實(shí)施例的方法可以消除阻止該讓與處理器執(zhí)行的條件。圖1和2示出了適合于實(shí)施這樣一實(shí)施例的環(huán)境。
硬件和軟件環(huán)境現(xiàn)參照附圖,其中同樣的標(biāo)號(hào)在這些圖中表示同樣的部件,圖1示出了與本發(fā)明的一致的一數(shù)據(jù)處理裝置或計(jì)算機(jī)10。裝置10一般性地代表例如若干諸如網(wǎng)絡(luò)服務(wù)器、中型計(jì)算機(jī)、大型計(jì)算機(jī)等多用戶(hù)計(jì)算機(jī)系統(tǒng)中的任何一個(gè)。然而,應(yīng)當(dāng)認(rèn)識(shí)到,本發(fā)明也可以在其他數(shù)據(jù)處理裝置中實(shí)施,例如在諸如工作站、桌面計(jì)算機(jī)、便攜式計(jì)算機(jī)之類(lèi)的獨(dú)立或單用戶(hù)的計(jì)算機(jī)中實(shí)施,或在諸如嵌入式控制器之類(lèi)的其他計(jì)算設(shè)備中實(shí)施。裝置10的一種合適的實(shí)現(xiàn)是在諸如由國(guó)際商業(yè)機(jī)器公司提供的AS/400或e系列計(jì)算機(jī)等中型計(jì)算機(jī)中。
裝置10通常包含一個(gè)或多個(gè)系統(tǒng)處理器12,這些系統(tǒng)處理器與一存儲(chǔ)器子系統(tǒng)連接,該存儲(chǔ)器子系統(tǒng)包括主存儲(chǔ)器14,例如一動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)陣列。圖中也示出了處于諸處理器12和主存儲(chǔ)器14之間的一高速緩存子系統(tǒng)16,其通常包含一級(jí)或多級(jí)數(shù)據(jù)、指令和/或其組合的高速緩存,其中某些高速緩存或者服務(wù)于單個(gè)處理器,或者服務(wù)于多個(gè)處理器,正如在本領(lǐng)域中眾所周知的那樣。此外,主存儲(chǔ)器14通過(guò)一系統(tǒng)總線18和多個(gè)接口設(shè)備與若干類(lèi)型的外部(I/O)設(shè)備連接,這些接口設(shè)備例如有輸入/輸出總線附加裝置接口20、工作站控制器22和存儲(chǔ)控制器24,其分別提供對(duì)一個(gè)或多個(gè)外部網(wǎng)絡(luò)26、一個(gè)或多個(gè)工作站28、和/或一個(gè)或多個(gè)存儲(chǔ)設(shè)備例如直接存取存儲(chǔ)設(shè)備(DASD)30的外部訪問(wèn)。
圖2更詳細(xì)地描述了在計(jì)算機(jī)10上實(shí)現(xiàn)一邏輯分區(qū)的計(jì)算環(huán)境時(shí)所利用的主要軟件組件和資源,包括由一分區(qū)管理器或系統(tǒng)管理程序46所管理的多個(gè)邏輯分區(qū)40、42、44。正如在本領(lǐng)域中眾所周知的那樣,可以支持任何數(shù)量的邏輯分區(qū)。
在所描述的實(shí)施方式中,邏輯分區(qū)40作為主邏輯分區(qū)運(yùn)行,而邏輯分區(qū)42和44作為從邏輯分區(qū)運(yùn)行。在此環(huán)境中的主分區(qū)共享該計(jì)算機(jī)的某些分區(qū)管理功能,如處理該計(jì)算機(jī)10上的這些從邏輯分區(qū)的電源開(kāi)啟和關(guān)閉,或發(fā)起這些從邏輯分區(qū)的存儲(chǔ)器轉(zhuǎn)儲(chǔ)。這樣,系統(tǒng)管理程序46的一部分由主分區(qū)控制塊50表示,該主分區(qū)控制塊處于主分區(qū)40中的操作系統(tǒng)52中。其他可由所有邏輯分區(qū)訪問(wèn)的分區(qū)管理服務(wù)由共享服務(wù)塊48表示。然而,在與本發(fā)明一致的其他實(shí)施方式中,分區(qū)管理功能不必實(shí)現(xiàn)在任何特定的邏輯分區(qū)中。
每個(gè)邏輯分區(qū)使用一操作系統(tǒng)(例如邏輯分區(qū)40、42和44各自的操作系統(tǒng)52、54和56),該操作系統(tǒng)以與不分區(qū)計(jì)算機(jī)的操作系統(tǒng)相同的方式控制該邏輯分區(qū)的主要操作。每個(gè)邏輯分區(qū)40-44在一表示為虛擬存儲(chǔ)器60的單獨(dú)的存儲(chǔ)器空間中運(yùn)行。此外,向每個(gè)邏輯分區(qū)40-44靜態(tài)地或動(dòng)態(tài)地分配計(jì)算機(jī)10中的諸可用資源的一部分。例如,每個(gè)邏輯分區(qū)可能共享一個(gè)或多個(gè)處理器12,以及可用的存儲(chǔ)器空間的一部分以便在虛擬存儲(chǔ)器60中使用。以這種方式,一給定的處理器可以由多于一個(gè)邏輯分區(qū)使用。其他資源,如海量存儲(chǔ)器、備份存儲(chǔ)器、用戶(hù)輸入、網(wǎng)絡(luò)連接之類(lèi),通常以在本領(lǐng)域中眾所周知的方式分配給一個(gè)或多個(gè)邏輯分區(qū)。資源的分配可以采用多種方式,如基于逐個(gè)總線的,或基于逐個(gè)資源的,其中多個(gè)邏輯分區(qū)共享同一總線上的諸資源。某些資源甚至可以同時(shí)分配給多個(gè)邏輯分區(qū)。例如,圖2示出了3個(gè)邏輯總線62、64和66,在總線62上有分配給主邏輯分區(qū)40的多個(gè)資源,包括一直接存取存儲(chǔ)設(shè)備(DASD)68、一控制面板70、一磁帶驅(qū)動(dòng)器72和一光盤(pán)驅(qū)動(dòng)器74。而另一方面,總線64可以具有基于逐個(gè)資源而分配的多個(gè)資源,例如,分配給從邏輯分區(qū)42的局域網(wǎng)(LAN)適配器76、光盤(pán)驅(qū)動(dòng)器78和DASD 80,以及分配給從邏輯分區(qū)44的LAN適配器82和84??偩€66可以代表例如特別分配給邏輯分區(qū)44的一總線,這樣該總線上的所有資源,例如DASD 86和88,都分配給同一邏輯分區(qū)。
應(yīng)當(dāng)理解的是,對(duì)圖2所示特定資源的描述只是示例性的,在其它實(shí)施方式中,可以把資源的任何組合和安排分配給任何邏輯分區(qū)。而且還應(yīng)當(dāng)理解,在某些實(shí)施方式中,資源可以動(dòng)態(tài)地重新分配,以服務(wù)于其他邏輯分區(qū)的需要。此外,應(yīng)當(dāng)理解,資源也可以按照輸入/輸出處理器(IOP)來(lái)表示,這些輸入/輸出處理器用于在該計(jì)算機(jī)和特定硬件設(shè)備之間提供接口。
圖2所示的、實(shí)現(xiàn)本發(fā)明的實(shí)施例的各種軟件組件和資源可以以若干種方式實(shí)現(xiàn),包括使用各種計(jì)算機(jī)軟件應(yīng)用、例程、組件、程序、對(duì)象、模塊、數(shù)據(jù)結(jié)構(gòu)等,在下文中這些被稱(chēng)為“計(jì)算機(jī)程序”,或簡(jiǎn)單地被稱(chēng)為“程序”。計(jì)算機(jī)程序通常包含一個(gè)或多個(gè)指令,這些指令在不同的時(shí)候駐留在計(jì)算機(jī)的不同的存儲(chǔ)器和存儲(chǔ)設(shè)備中,并且當(dāng)其由該計(jì)算機(jī)中的一個(gè)或多個(gè)處理器讀取并執(zhí)行時(shí),導(dǎo)致該計(jì)算機(jī)完成一些步驟,這些步驟是為執(zhí)行體現(xiàn)本發(fā)明的各個(gè)方面的各步驟或要素所必需的。
此外,盡管本發(fā)明已經(jīng)并將要在具有完整功能的計(jì)算機(jī)的環(huán)境中進(jìn)行描述,本領(lǐng)域的技術(shù)人員將會(huì)理解,本發(fā)明的各種實(shí)施例能夠作為各種形式的程序產(chǎn)品發(fā)布,并且不管實(shí)際用來(lái)進(jìn)行發(fā)布的信號(hào)承載介質(zhì)的特殊類(lèi)型是什么,本發(fā)明都同樣適用。信號(hào)承載介質(zhì)的例子包括但不限于可記錄類(lèi)型的介質(zhì),例如易失的和非易失的存儲(chǔ)器設(shè)備、軟盤(pán)和其他可移動(dòng)盤(pán)、硬盤(pán)驅(qū)動(dòng)器、磁帶、光盤(pán)(例如CD-ROM、DVD等)及其他,以及傳輸類(lèi)型的介質(zhì),例如數(shù)字和模擬通信鏈路。
還有,可以基于應(yīng)用辨別下文描述的各個(gè)程序,針對(duì)所述的應(yīng)用,在本發(fā)明的具體實(shí)施例中實(shí)現(xiàn)所述的各個(gè)程序。然而,應(yīng)當(dāng)理解,下文中任何特定的程序命名只是為了方便,因此本發(fā)明不應(yīng)限于僅使用在由這種命名所標(biāo)識(shí)和/或暗示的任何特殊應(yīng)用中。
本領(lǐng)域的技術(shù)人員將會(huì)認(rèn)識(shí)到,圖1和2所示的示例性環(huán)境并非意在限制本發(fā)明。實(shí)際上,本領(lǐng)域的技術(shù)人員將會(huì)認(rèn)識(shí)到,也可以使用其它硬件/軟件環(huán)境,而不脫離本發(fā)明的范圍。
“讓與給處理器”功能圖3的流程圖示出了用于在前兩圖所示的硬件和軟件環(huán)境中讓與CPU的示例性實(shí)施方式。總的說(shuō)來(lái),所示出的過(guò)程步驟通過(guò)有效地讓與CPU而協(xié)調(diào)虛擬處理器的執(zhí)行。在圖3的實(shí)施例中,一讓與虛擬處理器可以確定和指定一“目標(biāo)”虛擬處理器。值得注意的是,該目標(biāo)虛擬處理器可以位于與該讓與虛擬處理器相同的分區(qū)中。在一種情況中,一目標(biāo)虛擬處理器可能需要由該讓與虛擬處理器控制的一CPU。該目標(biāo)虛擬處理器可能進(jìn)一步包含在該讓與虛擬處理器執(zhí)行前所需要的一條件。
本實(shí)施例的讓與功能可以使得一系統(tǒng)管理程序或分區(qū)管理器可以重新分配已由一讓與操作系統(tǒng)放棄的一CPU或存儲(chǔ)器資源。在這種方式中,該系統(tǒng)管理程序可以啟動(dòng)一目標(biāo)虛擬處理器,從而緩解阻止所述讓與虛擬處理器執(zhí)行的條件。值得注意的是,本實(shí)施例的目標(biāo)指定特征代表了對(duì)不加區(qū)別地剝奪和重新分配所讓與的資源的傳統(tǒng)管理應(yīng)用的偏離。如上面討論的,這樣的現(xiàn)有技術(shù)的應(yīng)用由于不能專(zhuān)注于有目標(biāo)地讓與操作,因而可以造成顯著的處理延遲。
在圖3中的塊150,一分區(qū)的一虛擬處理器可以認(rèn)識(shí)到系統(tǒng)管理程序已向其分配了一CPU。當(dāng)記錄下已有一CPU提供給它之后,該虛擬處理器可以在塊152評(píng)估它是否能夠利用所述分配的CPU。更具體地說(shuō),該虛擬處理器可能評(píng)估一旋轉(zhuǎn)鎖,以確定它是否當(dāng)前可用。例如,該系統(tǒng)管理程序可能在該虛擬處理器正在旋轉(zhuǎn)等待由另一虛擬處理器持有的一鎖時(shí)向其發(fā)派了一CPU。在另一種情況下,該系統(tǒng)管理程序可能以時(shí)間片的方式或其他方式搶占了該虛擬處理器對(duì)所發(fā)派的CPU的訪問(wèn)權(quán)。
如果在圖3中的塊152中檢測(cè)到這樣的條件,則本實(shí)施例可以在塊154獲取并存儲(chǔ)與位于同一分區(qū)中的一“目標(biāo)”虛擬處理器有關(guān)的信息。一示例性目標(biāo)虛擬存儲(chǔ)器可能需要由該讓與虛擬處理器控制的一CPU。而該讓與虛擬處理器又可能邏輯上依賴(lài)于該目標(biāo)虛擬處理器的執(zhí)行。這樣,該讓與虛擬處理器被稱(chēng)為等待該目標(biāo)虛擬處理器以便執(zhí)行。
在圖3中的塊154從該目標(biāo)虛擬處理器獲取的信息可能包括該目標(biāo)虛擬處理器的一地址和目標(biāo)計(jì)數(shù)。一目標(biāo)計(jì)數(shù)可能與分配給每個(gè)虛擬處理器的一存儲(chǔ)部件的一值有關(guān)。正如下面詳細(xì)討論的那樣,一實(shí)施例可以維護(hù)和使用這種目標(biāo)計(jì)數(shù)來(lái)確定處理狀態(tài)。系統(tǒng)管理程序可能響應(yīng)于一程序事件的發(fā)生,而遞增一虛擬處理器的目標(biāo)計(jì)數(shù)。例如,系統(tǒng)管理程序可能在每次當(dāng)一虛擬處理器讓與或被搶占時(shí),使該目標(biāo)計(jì)數(shù)增加一個(gè)增量。
在一實(shí)施例中,這樣的增加可以使該計(jì)數(shù)具有奇數(shù)值。類(lèi)似地,系統(tǒng)管理程序可以在每當(dāng)一虛擬處理器開(kāi)始執(zhí)行時(shí)遞增目標(biāo)計(jì)數(shù)。這樣的增加可以使一虛擬處理器的目標(biāo)計(jì)數(shù)返回到一偶數(shù)值。這樣,偶數(shù)目標(biāo)計(jì)數(shù)可以對(duì)應(yīng)于其資源要求已經(jīng)得到滿(mǎn)足的虛擬處理器(即擁有了一物理處理器)。
與所述目標(biāo)虛擬處理器有關(guān)的、包括上面討論的目標(biāo)計(jì)數(shù)的信息可以對(duì)于一讓與虛擬處理器和該系統(tǒng)管理程序二者都是可用的。一體系結(jié)構(gòu)可以允許一分區(qū)中的所有虛擬處理器訪問(wèn)一共享存儲(chǔ)器位置中的這種信息。在圖3的塊156中,一操作系統(tǒng)或一讓與虛擬處理器可以向該系統(tǒng)管理程序發(fā)送一“讓與給處理器”調(diào)用信號(hào)。該調(diào)用可以包括在塊154從該目標(biāo)處理器采樣的信息的快照。這樣,該快照可以包括該目標(biāo)虛擬存儲(chǔ)器的一目標(biāo)計(jì)數(shù)和一地址二者。以這種方式,該系統(tǒng)管理程序可以在塊158評(píng)估在該調(diào)用中呈現(xiàn)的該目標(biāo)計(jì)數(shù)。值得注意的是,把圖3分成兩半的虛線劃分了由該系統(tǒng)管理程序所執(zhí)行的功能和由操作系統(tǒng)所執(zhí)行的功能。更具體地說(shuō),操作系統(tǒng)發(fā)起塊150至156的示例性步驟,而該系統(tǒng)管理程序執(zhí)行塊158至165。
如上面所討論的,如果在塊158確定該目標(biāo)虛擬存儲(chǔ)器的讓與計(jì)數(shù)為偶數(shù),則該系統(tǒng)管理程序可能已經(jīng)在塊156中的所述虛擬處理器的讓與之后將一CPU發(fā)派給了該目標(biāo)虛擬處理器。因?yàn)檫@樣一來(lái)讓與條件可能已經(jīng)滿(mǎn)足了,可能就不再需要該讓與虛擬處理器放棄它自己的CPU了。例如,該目標(biāo)虛擬處理器的執(zhí)行可能已經(jīng)解除了先前阻礙該讓與虛擬處理器執(zhí)行的鎖機(jī)制。因而,一偶數(shù)目標(biāo)計(jì)數(shù)可以導(dǎo)致本實(shí)施例重新在塊150評(píng)估該讓與虛擬處理器事實(shí)上是否仍然在旋轉(zhuǎn)等待。值得注意的是,由該虛擬處理器在塊156發(fā)出的讓與調(diào)用可以導(dǎo)致該系統(tǒng)管理程序相應(yīng)調(diào)整該虛擬處理器的讓與計(jì)數(shù)。如下面將說(shuō)明的那樣,這一特征可以影響到可能指定該讓與虛擬處理器或者說(shuō)將該讓與虛擬處理器設(shè)為目標(biāo)的其他虛擬處理器。
一旦在圖3中的塊158檢測(cè)到一奇數(shù)目標(biāo)計(jì)數(shù),則該系統(tǒng)管理程序可以在塊160比較在該讓與調(diào)用中呈現(xiàn)的目標(biāo)計(jì)數(shù)與實(shí)際的目標(biāo)計(jì)數(shù)。系統(tǒng)管理程序可以通過(guò)在接收到該讓與調(diào)用時(shí)采樣一目標(biāo)虛擬處理器字段或硬件寄存器來(lái)獲取實(shí)際的目標(biāo)計(jì)數(shù)。塊160的比較步驟可以確保該目標(biāo)虛擬處理器在所述虛擬處理器發(fā)出讓與調(diào)用后未曾獲得所需要的一CPU。在那樣的情況下,在該調(diào)用中呈現(xiàn)的目標(biāo)計(jì)數(shù)將與系統(tǒng)管理程序所檢驗(yàn)的目標(biāo)計(jì)數(shù)不匹配。從而,系統(tǒng)管理程序可以使得該讓與虛擬處理器回到塊150,重新評(píng)估其狀態(tài)。
相反地,如果在塊160所呈現(xiàn)的讓與計(jì)數(shù)與采樣的、實(shí)際的計(jì)數(shù)匹配,則該系統(tǒng)管理程序可以認(rèn)識(shí)到該目標(biāo)虛擬處理器事實(shí)上需要一CPU。然而,在重新分配CPU之前,系統(tǒng)管理程序可以確保該目標(biāo)虛擬處理器不是處于“讓與給活動(dòng)者”調(diào)用中。該目標(biāo)虛擬處理器可能已經(jīng)發(fā)出了一傳統(tǒng)的“讓與給活動(dòng)者”調(diào)用,要求它放棄諸資源,直至所有未讓與的虛擬處理器已得到服務(wù)。在這種情況下,讓與給一讓與目標(biāo)虛擬處理器會(huì)是循環(huán)的和無(wú)益的,從而妨礙了系統(tǒng)的性能。因而,塊162的預(yù)防步驟可以阻止在一給定應(yīng)用中形成功能性循環(huán)。這樣,本實(shí)施例可以在塊153中止塊156的“讓與給處理器”調(diào)用。值得注意的是,本實(shí)施例的這一特征進(jìn)一步允許本實(shí)施例的讓與程序在現(xiàn)有技術(shù)的讓與應(yīng)用的范圍內(nèi)執(zhí)行。
在圖3中的塊163,該系統(tǒng)管理程序可以將與該讓與虛擬處理器相應(yīng)的存儲(chǔ)區(qū)指定或“標(biāo)記”為正在等待該目標(biāo)處理器。虛擬處理器的存儲(chǔ)區(qū)是從系統(tǒng)管理程序的存儲(chǔ)區(qū)中分配的。這樣,系統(tǒng)管理程序可以另外將與該目標(biāo)處理器對(duì)應(yīng)的存儲(chǔ)區(qū)標(biāo)記為有讓與處理器正在等待它。當(dāng)在塊163描述了目標(biāo)和虛擬處理器之間的相互關(guān)系后,系統(tǒng)管理程序可以在塊164存儲(chǔ)該讓與虛擬處理器的操作系統(tǒng)的狀態(tài)。
例如,本實(shí)施例可以在塊164記錄與該虛擬處理器相關(guān)的所有寄存器,以便該虛擬處理器的所有條件都得到滿(mǎn)足和保存。以這種方式,所保存的虛擬處理器只是等待一CPU。就是說(shuō),該系統(tǒng)管理程序可以恢復(fù)該讓與虛擬處理器的已保存狀態(tài),以便操作系統(tǒng)可以在所有邏輯和物理?xiàng)l件都滿(mǎn)足后立即執(zhí)行。這樣的條件既可以包括先決處理器的執(zhí)行,也可以包括CPU的分配。
在圖3中的塊165,該系統(tǒng)管理程序?qū)⒖刂苽鹘o系統(tǒng)管理程序調(diào)度器。系統(tǒng)管理程序調(diào)度器可以協(xié)調(diào)與一分區(qū)中的諸虛擬處理器相應(yīng)的代碼片斷,以便決定哪個(gè)虛擬處理器下次將在一給定CPU上運(yùn)行。例如,系統(tǒng)管理程序調(diào)度器可能以這樣的方式操縱一資源分配調(diào)度表,以至于使該目標(biāo)虛擬處理器可以立即接收到下一個(gè)可用CPU的一時(shí)間片。如下面將詳細(xì)討論的,當(dāng)該系統(tǒng)管理程序調(diào)度器已決定“切換入”該目標(biāo)處理器,系統(tǒng)管理程序可以將該CPU發(fā)派給該目標(biāo)虛擬處理器。以這種方式,該目標(biāo)處理器可以最終獲得執(zhí)行,從而緩解加在所述虛擬處理器上的條件鎖。
圖4的流程圖描述了與該系統(tǒng)管理程序調(diào)度器在圖3中的塊165所執(zhí)行的步驟一致的諸過(guò)程步驟。更具體地說(shuō),該流程圖示出了該調(diào)度器必須采取以決定它是否將切換入一給定目標(biāo)處理器到一CPU資源上的步驟。就是說(shuō),系統(tǒng)管理程序必須執(zhí)行塊165至168,以確保將被分配一CPU的虛擬處理器是一“讓與給處理器”調(diào)用的目標(biāo)。
這樣,系統(tǒng)管理程序在塊166指示調(diào)度器電路啟動(dòng)對(duì)所有呈現(xiàn)給它的虛擬處理器的適當(dāng)?shù)脑u(píng)估過(guò)程。系統(tǒng)管理程序可以通過(guò)向該調(diào)度器指明一切換入例程即將來(lái)臨而觸發(fā)這種過(guò)程。作為響應(yīng),該系統(tǒng)管理程序調(diào)度器可以在塊167檢查虛擬處理器的存儲(chǔ)區(qū),以確定一呈現(xiàn)的虛擬處理器是否是一“讓與給處理器”調(diào)用的目標(biāo)。
如果塊167的條件能夠被這樣滿(mǎn)足,則系統(tǒng)管理程序可以在塊169將讓與的處理器的存儲(chǔ)區(qū)標(biāo)記為“準(zhǔn)備好運(yùn)行”。系統(tǒng)管理程序以這種方式編碼或指定該讓與處理器,是因?yàn)樗鸪踝屌c的條件,即所述目標(biāo)處理器的執(zhí)行條件已經(jīng)得到滿(mǎn)足了。這樣,讓與的虛擬處理器只需通過(guò)系統(tǒng)管理程序等待一CPU成為可用的。
在讓與處理器如此編碼后,系統(tǒng)管理程序可以在塊168將該虛擬處理器的狀態(tài)和相關(guān)的寄存器置于硬件(CPU),并將控制返回給分區(qū)。值得注意的是,如果在塊167評(píng)估的虛擬處理器不是一“讓與給處理器”調(diào)用的目標(biāo),則在塊168此一虛擬處理器的狀態(tài)被恢復(fù),并且把控制傳給分區(qū)。這樣,系統(tǒng)管理程序不改變讓與的虛擬處理器的狀態(tài),因?yàn)樗淖屌c條件依然未被滿(mǎn)足。
盡管本發(fā)明已通過(guò)各種實(shí)施例進(jìn)行了說(shuō)明,并且以相當(dāng)?shù)募?xì)節(jié)描述了這些實(shí)施例,申請(qǐng)人并無(wú)意于將所附權(quán)利要求的范圍限定或以任何方式限制于這樣的細(xì)節(jié)。
本發(fā)明的其他優(yōu)點(diǎn)和修改對(duì)于本領(lǐng)域的技術(shù)人員是顯而易見(jiàn)的。因而本發(fā)明在其更廣闊的方面不限于所示出和描述的特定細(xì)節(jié)、代表性裝置和方法、以及說(shuō)明性示例。因而,可以偏離這樣的細(xì)節(jié),而不脫離申請(qǐng)人的總體發(fā)明構(gòu)思的精神或范圍。
權(quán)利要求
1.一種用于在一邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)中使一虛擬處理器讓與資源的方法,其中該系統(tǒng)支持多個(gè)分區(qū),這些分區(qū)中的一第一分區(qū)包括共享至少一個(gè)CPU的多個(gè)虛擬處理器,該方法包括請(qǐng)求一讓與虛擬處理器讓與該虛擬處理器正執(zhí)行于其上的CPU,包括從所述多個(gè)虛擬處理器中指定一目標(biāo)虛擬存儲(chǔ)器;以及響應(yīng)于所請(qǐng)求的讓與,切換入所述目標(biāo)虛擬處理器,以便由所述CPU執(zhí)行。
2.根據(jù)權(quán)利要求1的方法,其中所述目標(biāo)虛擬處理器要求訪問(wèn)所述CPU,其中所述讓與的虛擬存儲(chǔ)器控制著所述CPU。
3.根據(jù)權(quán)利要求1的方法,其進(jìn)一步包括從所述虛擬處理器產(chǎn)生一讓與命令,其中所述讓與命令包括與所述目標(biāo)虛擬處理器相關(guān)的指針和狀態(tài)信息。
4.根據(jù)權(quán)利要求1的方法,其進(jìn)一步包括向所述目標(biāo)虛擬處理器指定狀態(tài)信息。
5.根據(jù)權(quán)利要求1的方法,其進(jìn)一步包括向所述目標(biāo)虛擬處理器指定一目標(biāo)計(jì)數(shù)。
6.根據(jù)權(quán)利要求5的方法,其進(jìn)一步包括將所述目標(biāo)計(jì)數(shù)與在所述讓與命令中傳送的一給出的計(jì)數(shù)相比較。
7.根據(jù)權(quán)得要求1的方法,其進(jìn)一步包括響應(yīng)于一“讓與給活動(dòng)者”命令,中止所述讓與。
8.根據(jù)權(quán)利要求1的方法,其進(jìn)一步包括將所述讓與虛擬處理器標(biāo)明為正在等待所述目標(biāo)處理器。
9.根據(jù)權(quán)利要求1的方法,其進(jìn)一步包括將所述目標(biāo)虛擬處理器標(biāo)明為具有一讓與處理器正在等待所述目標(biāo)虛擬處理器。
10.根據(jù)權(quán)利要求1的方法,其進(jìn)一步包括存儲(chǔ)所述讓與虛擬處理器的狀態(tài)。
11.一種裝置,其包括一邏輯分區(qū)的計(jì)算機(jī),其包括多個(gè)邏輯分區(qū),這些邏輯分區(qū)中的一個(gè)第一邏輯分區(qū)包括共享至少一個(gè)CPU的多個(gè)虛擬處理器;以及駐留在該計(jì)算機(jī)中的一程序,該程序被配置為發(fā)起一請(qǐng)求,請(qǐng)求由一讓與虛擬處理器控制的一CPU的讓與,其中該請(qǐng)求從多個(gè)虛擬處理器中指定一目標(biāo)虛擬處理器;并進(jìn)一步配置為將對(duì)所述CPU的控制從所述讓與虛擬處理器邏輯地重新分配給所述目標(biāo)虛擬處理器。
12.根據(jù)權(quán)利要求11的裝置,其中所述目標(biāo)虛擬處理器要求對(duì)所述CPU的訪問(wèn),其中所述讓與虛擬處理器控制著所述CPU。
13.根據(jù)權(quán)利要求11的裝置,其中所述程序發(fā)起從所述虛擬處理器產(chǎn)生一讓與命令,其中所述讓與命令包括與所述目標(biāo)虛擬處理器相關(guān)的指針和狀態(tài)信息。
14.根據(jù)權(quán)利要求11的裝置,其中所述程序發(fā)起將一目標(biāo)計(jì)數(shù)分配給所述目標(biāo)虛擬處理器。
15.根據(jù)權(quán)利要求14的裝置,其中所述程序發(fā)起將所述目標(biāo)計(jì)數(shù)與在所述讓與命令中傳送的一給出的計(jì)數(shù)相比較。
16.根據(jù)權(quán)利要求11的裝置,其中所述程序響應(yīng)于一“讓與給活動(dòng)者”命令,發(fā)起放棄所述讓與。
17.根據(jù)權(quán)利要求11的裝置,其中所述程序發(fā)起將所述讓與虛擬處理器標(biāo)明為正在等待所述目標(biāo)處理器。
18.根據(jù)權(quán)利要求11的裝置,其中所述程序?qū)⑺瞿繕?biāo)虛擬處理器標(biāo)明為具有一讓與處理器正在等待該目標(biāo)虛擬處理器。
19.一種程序產(chǎn)品,其包括(a)一程序,其配置為發(fā)起一請(qǐng)求,請(qǐng)求讓與由一邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)中的多個(gè)虛擬處理器中的一個(gè)讓與虛擬處理器所控制的一CPU,其中所述請(qǐng)求在所述多個(gè)虛擬控制器中指定一個(gè)目標(biāo)虛擬控制器;以及進(jìn)一步配置為將對(duì)所述CPU的控制從所述讓與虛擬處理器邏輯地重新分配給所述目標(biāo)虛擬處理器,(b)承載所述程序的一信號(hào)承載介質(zhì)。
20.權(quán)利要求19的程序產(chǎn)品,其中所述信號(hào)承載介質(zhì)包括一可記錄型介質(zhì)和一傳輸型介質(zhì)中的至少一個(gè)。
全文摘要
一種用于協(xié)調(diào)邏輯分區(qū)的諸虛擬處理器之間的諸CPU的分配的裝置、程序產(chǎn)品和方法。一虛擬處理器可以讓與一CPU,以加速其自身的執(zhí)行基于其上的事件發(fā)生。這樣,程序代碼可以將所述被放棄的CPU發(fā)派給一指定的虛擬處理器。
文檔編號(hào)G06F15/00GK1541357SQ02815812
公開(kāi)日2004年10月27日 申請(qǐng)日期2002年7月24日 優(yōu)先權(quán)日2001年8月24日
發(fā)明者W·J·阿姆斯特朗, C·弗朗索瓦, N·納亞爾, W J 阿姆斯特朗, 仕魍, 嵌 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司