專利名稱:用于在多處理器計(jì)算機(jī)中提供有效虛擬時(shí)基的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多處理器系統(tǒng)領(lǐng)域,并且更特別地涉及一種用于在可擴(kuò)展的多處理器計(jì)算機(jī)系統(tǒng)中提供有效的虛擬化時(shí)基(time base)的方法和設(shè)備。
背景技術(shù):
對(duì)稱多處理(SMP)數(shù)據(jù)處理系統(tǒng)具有對(duì)稱的多個(gè)處理器內(nèi)核,其中每個(gè)處理器內(nèi)核具有相同的處理速度和處理延遲。SMP系統(tǒng)具有一個(gè)操作系統(tǒng),該操作系統(tǒng)通過(guò)一次將作業(yè)的一個(gè)軟件線程分發(fā)給每個(gè)處理器內(nèi)核而將作業(yè)劃分為均勻地分布在各內(nèi)核中的任務(wù)。因此,SMP系統(tǒng)中的一個(gè)處理器內(nèi)核一次只執(zhí)行一個(gè)線程。
同時(shí)多線程(SMT)數(shù)據(jù)處理系統(tǒng)包括多個(gè)處理器內(nèi)核,每個(gè)處理器內(nèi)核一次均能并行地執(zhí)行多個(gè)線程。當(dāng)兩個(gè)線程運(yùn)行于同一處理器內(nèi)核上時(shí),SMT系統(tǒng)能夠使一個(gè)線程優(yōu)先于另一線程而執(zhí)行。
已知的系統(tǒng)可以包括一個(gè)或多個(gè)共享的處理器內(nèi)核,其中在系統(tǒng)正在執(zhí)行的各進(jìn)程之間共享這些共享處理器內(nèi)核。處理器內(nèi)核可以是SMT處理器內(nèi)核。共享處理器內(nèi)核可以是邏輯分區(qū)的系統(tǒng)的一部分,并且可以在該系統(tǒng)的各分區(qū)之間進(jìn)行共享。虛擬分區(qū)的數(shù)目和分配給每個(gè)分區(qū)的系統(tǒng)容量可以由系統(tǒng)的操作者在引導(dǎo)系統(tǒng)時(shí)定義或修改。
這些系統(tǒng)典型地包括固件(又稱系統(tǒng)管理程序),該固件管理和執(zhí)行對(duì)系統(tǒng)中所有處理器內(nèi)核的分區(qū)和/或共享。例如,系統(tǒng)管理程序可以將一個(gè)虛擬分區(qū)分發(fā)給一個(gè)或多個(gè)物理處理器內(nèi)核。虛擬分區(qū)包括對(duì)將由每個(gè)物理處理器內(nèi)核所完成的作業(yè)的定義以及在每個(gè)物理處理器內(nèi)核中需要設(shè)定的各種設(shè)置和狀態(tài)信息,以便使物理處理器內(nèi)核執(zhí)行作業(yè)。因此,每個(gè)虛擬分區(qū)可以是一個(gè)“虛擬”SMP系統(tǒng)。
在已知的共享處理器系統(tǒng)中,系統(tǒng)管理程序監(jiān)督和管理每個(gè)物理處理器內(nèi)核在所有的邏輯分區(qū)之間的共享。系統(tǒng)管理程序?yàn)槊總€(gè)邏輯分區(qū)分配一個(gè)分發(fā)時(shí)間片(dispatch time slice)。系統(tǒng)管理程序可通過(guò)將邏輯分區(qū)分發(fā)給物理處理器內(nèi)核來(lái)為所有的邏輯分區(qū)提供服務(wù)。系統(tǒng)管理程序通過(guò)為每個(gè)邏輯分區(qū)分配時(shí)間來(lái)為邏輯分區(qū)服務(wù),在此時(shí)間內(nèi)會(huì)在一個(gè)或多個(gè)物理處理器內(nèi)核上執(zhí)行邏輯分區(qū)。系統(tǒng)管理程序可以同時(shí)將多個(gè)邏輯分區(qū)分發(fā)給不同的多組物理處理器內(nèi)核。
每個(gè)邏輯分區(qū)可由特定的配置數(shù)據(jù)來(lái)確定,物理處理器內(nèi)核需要用該特定配置數(shù)據(jù)來(lái)處理邏輯分區(qū)。該配置數(shù)據(jù)包括特定的數(shù)據(jù)、寄存器值、狀態(tài)、設(shè)置和信息。所有的配置數(shù)據(jù)由系統(tǒng)管理程序存儲(chǔ)于該系統(tǒng)管理程序的存儲(chǔ)器中。當(dāng)要將特定的邏輯分區(qū)分發(fā)給物理處理器內(nèi)核時(shí),系統(tǒng)管理程序?qū)⑷』卦摲謪^(qū)的配置數(shù)據(jù),恢復(fù)對(duì)寄存器的所有設(shè)置和處理器內(nèi)核中的狀態(tài),并且從該分區(qū)最后一次掛起的時(shí)間點(diǎn)繼續(xù)進(jìn)行處理。一旦分配給物理分區(qū)的時(shí)間片已經(jīng)過(guò)期,系統(tǒng)管理程序就會(huì)將所有配置數(shù)據(jù)的當(dāng)前值保存回其存儲(chǔ)器中,待稍后的時(shí)間對(duì)該邏輯分區(qū)進(jìn)行進(jìn)一步處理時(shí)取回。
每個(gè)處理器內(nèi)核包括其自己的時(shí)基(TB)寄存器。TB寄存器是自由運(yùn)行(free-running)的64位寄存器,其以恒定的速率遞增,以便其值代表相對(duì)時(shí)間。在SMP系統(tǒng)中的所有處理器之間對(duì)TB寄存器進(jìn)行初始同步,使得系統(tǒng)中的所有處理器具有相同的相對(duì)時(shí)間。TB寄存器所指示的時(shí)間是自重啟機(jī)器開(kāi)始已經(jīng)逝去的時(shí)間。
TB寄存器是多線程處理器中的所有線程之間的共享資源,并且對(duì)在每個(gè)線程上執(zhí)行的軟件來(lái)說(shuō)TB寄存器遞增的恒定速率是已知的。系統(tǒng)管理程序還為每個(gè)邏輯分區(qū)保持實(shí)時(shí)偏移(RTO)。該RTO是TB從零開(kāi)始遞增時(shí)的掛鐘時(shí)間(wall-clock time)。在由系統(tǒng)管理程序?qū)ζ溥M(jìn)行更新之前RTO保持不變。
通過(guò)用TB值乘以TB遞增的周期并加上RTO,系統(tǒng)管理程序能夠?qū)B值轉(zhuǎn)換為當(dāng)前的掛鐘時(shí)間。系統(tǒng)管理程序?qū)TO作為每個(gè)分區(qū)的配置數(shù)據(jù)的一部分進(jìn)行維護(hù)。當(dāng)操作系統(tǒng)軟件想要改變其掛鐘時(shí)間時(shí),該操作系統(tǒng)軟件通知系統(tǒng)管理程序,并且系統(tǒng)管理程序只修改分區(qū)的RTO而不改變硬件TB。通常,軟件任務(wù)只需要相對(duì)時(shí)間,可以簡(jiǎn)單地通過(guò)讀取存儲(chǔ)于TB中的當(dāng)前值來(lái)確定該相對(duì)時(shí)間。
可以將一個(gè)邏輯分區(qū)同時(shí)分發(fā)給一個(gè)或多個(gè)物理處理器內(nèi)核。這些處理器內(nèi)核可以位于同一芯片內(nèi),或位于同一機(jī)器中的不同芯片內(nèi)。此外,一次可以將一個(gè)邏輯分區(qū)分發(fā)給一個(gè)特定的處理器內(nèi)核,并隨后在稍后的時(shí)間將該邏輯分區(qū)分發(fā)給一個(gè)完全不同的處理器內(nèi)核。兩個(gè)處理器內(nèi)核可以位于同一芯片內(nèi),或位于同一機(jī)器中的不同芯片內(nèi)。
分區(qū)通過(guò)讀取當(dāng)前正在執(zhí)行該分區(qū)的處理器內(nèi)核的TB寄存器中當(dāng)前所存儲(chǔ)的值來(lái)獲得當(dāng)前的相對(duì)時(shí)間。如果分區(qū)被掛起并隨后在第二處理器內(nèi)核上得以繼續(xù),則該分區(qū)可使用該第二處理器內(nèi)核中所包括的TB寄存器中所存儲(chǔ)的值來(lái)獲得當(dāng)前的相對(duì)時(shí)間。
運(yùn)行于不同的邏輯分區(qū)中的軟件可以具有不同的掛鐘時(shí)間,但所有分區(qū)中的所有線程必須始終觀察時(shí)間的推進(jìn),包括掛鐘時(shí)間和相對(duì)時(shí)間。較小的時(shí)間前跳是可允許的,但時(shí)間后跳則是不允許的。
由于操作系統(tǒng)或所分發(fā)的處理線程可以以任意順序從運(yùn)行該分區(qū)的不同處理器中讀取TB,因此必須在執(zhí)行相同的邏輯分區(qū)的所有物理處理器之間對(duì)TB寄存器進(jìn)行同步,并且TB寄存器必須始終觀察時(shí)間的推進(jìn)。由于運(yùn)行相同分區(qū)的所有處理器必須使其TB寄存器同步,并且系統(tǒng)管理程序能夠?qū)⑷我獾倪壿嫹謪^(qū)分發(fā)給機(jī)器中的任意物理處理器,因此必須在整臺(tái)機(jī)器中的所有處理器內(nèi)核之間對(duì)TB寄存器進(jìn)行同步。
由于TB寄存器在同一機(jī)器中的所有處理器之間是同步的,因此在同一機(jī)器中的不同處理器上得以繼續(xù)的曾被掛起的邏輯分區(qū)會(huì)觀察到時(shí)間前跳,時(shí)間前跳量為該分區(qū)被掛起的時(shí)間。為了分發(fā)分區(qū)而分配的時(shí)間片會(huì)將該時(shí)間前跳保持為小到可以接受的程度。
如果TB寄存器不同步,則在具有不同TB值的處理器上繼續(xù)曾被掛起的分區(qū)將顯示出較大的時(shí)間前跳或時(shí)間后跳,這是該體系結(jié)構(gòu)所不允許的。由于不同機(jī)器內(nèi)的處理器內(nèi)核中的TB一般具有不同的值,因此現(xiàn)有技術(shù)的一個(gè)局限是邏輯分區(qū)僅限于在同一機(jī)器的處理器上運(yùn)行。所希望的是能夠在同一機(jī)器或不同機(jī)器上掛起和繼續(xù)邏輯分區(qū)。
根據(jù)現(xiàn)有技術(shù),一種不可接受的情形是每當(dāng)分發(fā)邏輯分區(qū)時(shí)都使得每個(gè)邏輯分區(qū)可以改變其所有的處理器內(nèi)核中的TB的值。如果改變了分區(qū)內(nèi)的一個(gè)內(nèi)核中的TB值,則該分區(qū)內(nèi)的所有TB的值就不會(huì)再是全部彼此同步的。TB中的值有可能需要彼此重新同步,為此應(yīng)掛起機(jī)器中正在執(zhí)行的所有分區(qū),阻止所有的TB值前移,更新運(yùn)行該分區(qū)的其他內(nèi)核中所需的TB值,由所有的時(shí)基重新開(kāi)始計(jì)數(shù),然后繼續(xù)所有的分區(qū)。該方法是不可接受的,其原因在于該方法由于掛起邏輯分區(qū)的處理而影響了機(jī)器的性能,并且該方法由于頻繁地中止TB寄存器而在該機(jī)器和其他機(jī)器以及時(shí)鐘之間造成了明顯的時(shí)間漂移。
一個(gè)可能的解決方案可以是使系統(tǒng)管理程序固件通過(guò)中斷來(lái)截取到TB的所有軟件訪問(wèn),并應(yīng)用由該系統(tǒng)管理程序?yàn)槊總€(gè)分區(qū)保持的附加偏移。然而,由于處理到TB的每個(gè)訪問(wèn)的中斷的開(kāi)銷,這種解決方案會(huì)對(duì)性能產(chǎn)生消極影響。
因此,需要一種用于在可擴(kuò)展的多處理器系統(tǒng)中提供虛擬化時(shí)基的方法和設(shè)備,當(dāng)在同一機(jī)器或不同機(jī)器上掛起和繼續(xù)邏輯分區(qū)時(shí),該方法和設(shè)備在邏輯分區(qū)中的所有軟件線程之間提供了準(zhǔn)確的單調(diào)非減(monotonically non-decreasing)時(shí)間同步,同時(shí)保持了與其他機(jī)器或時(shí)鐘的實(shí)時(shí)相關(guān)性。
發(fā)明內(nèi)容
本發(fā)明公開(kāi)了一種用于在邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)中提供虛擬化時(shí)基的數(shù)據(jù)處理系統(tǒng)中的方法和設(shè)備。為多個(gè)處理器內(nèi)核中的每一個(gè)處理器內(nèi)核確定時(shí)基。該時(shí)基用于向所確定的時(shí)基所對(duì)應(yīng)的一個(gè)處理器內(nèi)核指示當(dāng)前時(shí)間。針對(duì)這些處理器內(nèi)核共同地對(duì)時(shí)基進(jìn)行同步,使得每一個(gè)處理器內(nèi)核包括其自己的同步時(shí)基副本。對(duì)于一個(gè)處理器內(nèi)核,產(chǎn)生不同于同步時(shí)基但與該同步時(shí)基的至少一部分保持同步的一個(gè)虛擬化時(shí)基。處理器內(nèi)核利用虛擬化時(shí)基而不是同步時(shí)基來(lái)向處理器內(nèi)核指示當(dāng)前時(shí)間。同步時(shí)基與虛擬化時(shí)基的一部分保持共同的同步。
在以下的詳細(xì)描述中,本發(fā)明的以上以及附加的目的、特征和優(yōu)點(diǎn)將變得明顯。
在所附權(quán)利要求中闡明了保證本發(fā)明特性的新穎特征。然而,當(dāng)結(jié)合附圖閱讀時(shí),通過(guò)參考以下對(duì)說(shuō)明性實(shí)施例的詳細(xì)描述,可以最好地理解本發(fā)明本身及優(yōu)選使用方式、其另外的目的和優(yōu)點(diǎn),其中圖1示出了根據(jù)本發(fā)明的芯片,在該芯片中具有多個(gè)處理器內(nèi)核;圖2示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的多處理器芯片的物理配置,該多處理器芯片諸如圖1的芯片,其位于包括在一個(gè)計(jì)算機(jī)系統(tǒng)機(jī)器內(nèi)的電路板上的對(duì)稱多處理器(SMP)結(jié)構(gòu)中;圖3示出了一張高級(jí)流程圖,其說(shuō)明,根據(jù)本發(fā)明使機(jī)器內(nèi)的每個(gè)芯片與該機(jī)器中的其他芯片同步,使每個(gè)處理器內(nèi)核的TB與該芯片中的每個(gè)其他的處理器內(nèi)核中的TB同步,并使多個(gè)獨(dú)立的機(jī)器彼此同步;圖4示出了一張高級(jí)流程圖,其說(shuō)明的過(guò)程由特定機(jī)器的系統(tǒng)管理程序根據(jù)本發(fā)明執(zhí)行,以將處理器內(nèi)核中的TB值調(diào)整為與正常的分區(qū)處理期間在該處理器上繼續(xù)的特定分區(qū)相關(guān)聯(lián)的相對(duì)時(shí)間;圖5示出了一張高級(jí)流程圖,其說(shuō)明的過(guò)程由特定機(jī)器的系統(tǒng)管理程序根據(jù)本發(fā)明執(zhí)行,以將處理器內(nèi)核中的TB值調(diào)整為與發(fā)生機(jī)器檢查(machine check)之后在該處理器上得以繼續(xù)的特定分區(qū)相關(guān)聯(lián)的相對(duì)時(shí)間;圖6示出了一張高級(jí)流程圖,其說(shuō)明,根據(jù)本發(fā)明創(chuàng)建邏輯分區(qū),為該分區(qū)分配初始時(shí)基偏移(TBO)0,并在該分區(qū)的配置數(shù)據(jù)中存儲(chǔ)該TBO;圖7A示出,根據(jù)本發(fā)明,第一機(jī)器中的系統(tǒng)管理程序?qū)⑦壿嫹謪^(qū)發(fā)送給第二機(jī)器以便由第二機(jī)器中的處理器內(nèi)核執(zhí)行該邏輯分區(qū);圖7B示出,根據(jù)本發(fā)明,第一機(jī)器中的系統(tǒng)管理程序接收來(lái)自第二機(jī)器的邏輯分區(qū)以便由第一機(jī)器中的處理器內(nèi)核執(zhí)行該邏輯分區(qū);圖8是根據(jù)本發(fā)明的包括本發(fā)明的機(jī)器的網(wǎng)絡(luò)的圖示;圖9是包括根據(jù)本發(fā)明的處理器的計(jì)算機(jī)系統(tǒng)機(jī)器的圖示;圖10是包括系統(tǒng)管理程序的可以實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)系統(tǒng)機(jī)器的框圖;以及圖11是包括本發(fā)明的邏輯分區(qū)平臺(tái)的框圖。
具體實(shí)施例方式
通過(guò)參考附圖,可以更好地理解本發(fā)明的優(yōu)選實(shí)施例及其優(yōu)點(diǎn),相同的標(biāo)號(hào)用于附圖的相同或相應(yīng)的部分。
當(dāng)在同一機(jī)器或不同機(jī)器上掛起和繼續(xù)邏輯分區(qū)時(shí),本發(fā)明在邏輯分區(qū)中的所有軟件線程之間提供了準(zhǔn)確的單調(diào)非減時(shí)間同步,同時(shí)保持了與其他機(jī)器的時(shí)間或其他時(shí)鐘的實(shí)時(shí)相關(guān)性。
每個(gè)多內(nèi)核處理器芯片保持其自己的時(shí)刻(TOD)寄存器,該時(shí)刻寄存器在機(jī)器中的所有處理器芯片之間是同步的。處理器芯片中的每個(gè)處理器內(nèi)核包括其自己的時(shí)基(TB)寄存器。使每個(gè)處理器內(nèi)核中的每個(gè)TB內(nèi)的值與該芯片中的TOD寄存器初始同步。這種同步由硬件中的狀態(tài)機(jī)響應(yīng)于系統(tǒng)管理程序通過(guò)MTSPR(移動(dòng)到專用寄存器)指令在TFMR(定時(shí)器設(shè)施管理寄存器)中寫(xiě)入一位而完成。TFMR是一種專用寄存器。使用32MHz階躍信號(hào)來(lái)完成這種同步,該階躍信號(hào)由系統(tǒng)中的所有芯片TOD同時(shí)接收到并從芯片TOD轉(zhuǎn)發(fā)到同一芯片內(nèi)的處理器內(nèi)核中的TB。該32MHz階躍信號(hào)的周期為0.03125微秒,其對(duì)應(yīng)于該優(yōu)選實(shí)施例中的TB的第59位。
2.0微秒對(duì)應(yīng)于TB寄存器的第53位,因此在每2.0微秒的邊界上,TB的第54-63位為零。當(dāng)系統(tǒng)管理程序?qū)FMR進(jìn)行寫(xiě)入時(shí),硬件等待下一個(gè)2.0微秒的邊界并隨后使用32MHz階躍信號(hào)來(lái)開(kāi)始步進(jìn),從零開(kāi)始加載TB值的第54-59位,同時(shí)從該芯片的TOD值中加載TB的第0-53位。TB與芯片的TOD之間的這種重同步可以在穩(wěn)態(tài)運(yùn)行期間的任意時(shí)間上(例如在機(jī)器檢查之后)執(zhí)行。
由于機(jī)器內(nèi)的所有芯片中的TOD是彼此同步的并且芯片中的TB寄存器是與其芯片的TOD初始同步的,因此TB寄存器在整臺(tái)機(jī)器上彼此之間也是初始同步的。一旦完成了初始同步,每個(gè)處理器內(nèi)核中的TB寄存器就由從該芯片的TOD轉(zhuǎn)發(fā)的同步的32MHz階躍信號(hào)遞增。因此,所有的TB寄存器都同時(shí)步進(jìn)以保持精確的相對(duì)時(shí)間同步。
通過(guò)用TB的遞增周期乘以TB值并加上分區(qū)的RTO,將TB中的相對(duì)時(shí)間轉(zhuǎn)換為分區(qū)的掛鐘時(shí)間。該RTO是TB中的相對(duì)時(shí)間為零時(shí)遞增時(shí)分區(qū)的掛鐘時(shí)間。顯然,不同的邏輯分區(qū)可以具有不同的掛鐘時(shí)間設(shè)置,但由于不同的機(jī)器很有可能在不同的時(shí)間啟動(dòng),因此具有相同掛鐘時(shí)間但在不同機(jī)器上的分區(qū)很有可能具有不同的相對(duì)時(shí)間。對(duì)于簡(jiǎn)化的示例,假定兩個(gè)不同機(jī)器中的分區(qū)的掛鐘時(shí)間為4:00pm。第一機(jī)器已經(jīng)在1:00pm啟動(dòng),因此第一機(jī)器上的分區(qū)的RTO將為4:00pm,并且其TB中表示相對(duì)時(shí)間為3小時(shí)。第二機(jī)器已經(jīng)在3:00pm啟動(dòng),因此第二機(jī)器上的分區(qū)的RTO將為3:00pm,并且其TB中表示相對(duì)時(shí)間為1小時(shí)。在本例中,如果第二機(jī)器上的分區(qū)被掛起并隨后在第一機(jī)器上再繼續(xù)處理,則對(duì)該分區(qū)將顯示出時(shí)間從4:00pm回退到2:00pm。這是因?yàn)榈诙C(jī)器中執(zhí)行該分區(qū)的處理器內(nèi)核中的TB寄存器包括指示相對(duì)時(shí)間為3小時(shí)的值,而第一機(jī)器中將執(zhí)行該分區(qū)的處理器內(nèi)核中的TB寄存器包括指示相對(duì)時(shí)間為1小時(shí)的TB值。由于該分區(qū)是從執(zhí)行該分區(qū)的TB寄存器中獲得當(dāng)前相對(duì)時(shí)間的,因此該分區(qū)將觀察到時(shí)間從4:00pm回退到2:00pm。有必要使分區(qū)不會(huì)觀察到時(shí)間在回退。
本發(fā)明是一種在可擴(kuò)展的多處理器系統(tǒng)中提供虛擬化時(shí)基的方法和設(shè)備,其中無(wú)論選擇了哪個(gè)系統(tǒng)中的哪個(gè)處理器來(lái)處理特定的邏輯分區(qū),邏輯分區(qū)中正在執(zhí)行的軟件都始終觀察到時(shí)間在前進(jìn)。
邏輯分區(qū)中正在執(zhí)行的軟件和操作系統(tǒng)使用正在執(zhí)行該分區(qū)的處理器內(nèi)核中所包括的TB寄存器中當(dāng)前所存儲(chǔ)的值來(lái)獲得當(dāng)前的相對(duì)時(shí)間。
此外,本發(fā)明提供一種時(shí)基偏移(TBO),其由系統(tǒng)管理程序針對(duì)每個(gè)邏輯分區(qū)而計(jì)算并被存儲(chǔ)在每個(gè)邏輯分區(qū)的配置數(shù)據(jù)中。TBO代表首先創(chuàng)建分區(qū)的機(jī)器的TB與當(dāng)前運(yùn)行該分區(qū)的機(jī)器的TB之間的差值。
每個(gè)TB值優(yōu)選地是一個(gè)64位的值。該64位的值的精度從高階位到低階位增加,因此低階位代表最精確的時(shí)間。低階位優(yōu)選地是第40-63位,而高階位是第0-39位。在優(yōu)選實(shí)施例中,第53位代表2.0微秒,并且第39位代表32.768微秒(0.032768秒)。
每個(gè)TBO優(yōu)選地是有符號(hào)的40位的值,因此其可以代表正數(shù)或負(fù)數(shù)。TBO的40位與TB值的高40位代表相同的解析度。TBO的單位對(duì)應(yīng)于由TB的第39位代表的時(shí)間量,其為32.768微秒。例如,代表1小時(shí)的TBO的十六進(jìn)制值為0x000001AD27。該有符號(hào)的值采用標(biāo)準(zhǔn)的二進(jìn)制的補(bǔ)數(shù),因此代表-1小時(shí)的TBO的十六進(jìn)制值為0xFFFFFE52D9。
當(dāng)系統(tǒng)管理程序創(chuàng)建新的邏輯分區(qū)時(shí),TBO值為零。只要僅將邏輯分區(qū)分發(fā)在創(chuàng)建該分區(qū)的同一臺(tái)機(jī)器上,TBO就會(huì)保持為零。如果將邏輯分區(qū)移植到不同的機(jī)器上,就需要調(diào)整TBO以使其運(yùn)行于該不同的機(jī)器上。
對(duì)于簡(jiǎn)化的示例,假定第一機(jī)器運(yùn)行于其重啟之后的1小時(shí)的相對(duì)時(shí)間上,第二機(jī)器運(yùn)行于其重啟之后的3小時(shí)的相對(duì)時(shí)間上,并且第三機(jī)器運(yùn)行于其重啟之后的6小時(shí)的相對(duì)時(shí)間上。如果最初創(chuàng)建于第二機(jī)器上的第一邏輯分區(qū)在第二機(jī)器上被掛起并在第一機(jī)器上得以繼續(xù),則針對(duì)運(yùn)行于第一機(jī)器上的該第一邏輯分區(qū)而計(jì)算的TBO代表2小時(shí),其原因在于第二機(jī)器運(yùn)行在比第一機(jī)器晚2小時(shí)的時(shí)間上。
如果最初創(chuàng)建于第三機(jī)器上的第二邏輯分區(qū)在第三機(jī)器上被掛起并在第一機(jī)器上得以繼續(xù),則針對(duì)運(yùn)行于第一機(jī)器上的該第二邏輯分區(qū)而計(jì)算的TBO代表5小時(shí),其原因在于第三機(jī)器運(yùn)行在比第一機(jī)器晚5小時(shí)的時(shí)間上。
如果創(chuàng)建于第三機(jī)器上的第二邏輯分區(qū)隨后在第一機(jī)器上被掛起并在第二機(jī)器上得以繼續(xù),則必須重新計(jì)算TBO。該第二邏輯分區(qū)的TBO不再代表5小時(shí),其被重新計(jì)算為代表3小時(shí),其原因在于第三機(jī)器運(yùn)行在比第二機(jī)器晚3小時(shí)的時(shí)間上。
TBO是一個(gè)有符號(hào)的值。因此,TBO可以代表正數(shù)或負(fù)數(shù)。例如,如果創(chuàng)建于第一機(jī)器上的第三邏輯分區(qū)在第一機(jī)器上被掛起并在第三機(jī)器上得以繼續(xù),則針對(duì)該第三邏輯分區(qū)而計(jì)算的TBO代表-5小時(shí),其原因在于第一機(jī)器運(yùn)行在比第三機(jī)器早5小時(shí)的時(shí)間上。
如果分區(qū)在不同的機(jī)器上掛起和繼續(xù),則新機(jī)器上的系統(tǒng)管理程序?qū)⒔邮赵摲謪^(qū)的配置數(shù)據(jù)。這種情況下的配置數(shù)據(jù)將包括由第一機(jī)器存儲(chǔ)于該分區(qū)的配置數(shù)據(jù)中的TBO。此外,當(dāng)?shù)谝粰C(jī)器中的系統(tǒng)管理程序?qū)⒎謪^(qū)發(fā)送給另一機(jī)器以便執(zhí)行時(shí),該第一機(jī)器同樣會(huì)發(fā)送最后執(zhí)行該分區(qū)的處理器內(nèi)核的TB寄存器的當(dāng)前值。因此,第二機(jī)器中的系統(tǒng)管理程序根據(jù)其自己的數(shù)據(jù)和該分區(qū)的配置數(shù)據(jù)以及從原始機(jī)器上的系統(tǒng)管理程序傳遞給該第二機(jī)器的TB值來(lái)計(jì)算新的TBO值。
按照以上給出的這一個(gè)示例,假定第二邏輯分區(qū)創(chuàng)建于第三機(jī)器上。當(dāng)創(chuàng)建該分區(qū)時(shí),該分區(qū)的TBO為零。只要第三機(jī)器中的處理器內(nèi)核繼續(xù)處理該第二分區(qū),該分區(qū)的TBO就會(huì)保持為零。如果第二分區(qū)在第三機(jī)器上被掛起并在第一機(jī)器上得以繼續(xù),則第三機(jī)器中的系統(tǒng)管理程序就會(huì)將該分區(qū)的配置數(shù)據(jù)發(fā)送給第一機(jī)器。
該分區(qū)配置數(shù)據(jù)會(huì)包括為零的TBO,其原因在于已經(jīng)在創(chuàng)建該分區(qū)的機(jī)器上執(zhí)行過(guò)該分區(qū)。此外,第三機(jī)器中的系統(tǒng)管理程序同樣會(huì)發(fā)送最后執(zhí)行第二分區(qū)的內(nèi)核的TB寄存器的值。該TB寄存器的值將指示出第三機(jī)器內(nèi)的該內(nèi)核中的相對(duì)時(shí)間是6小時(shí)。
然后,第一機(jī)器中的系統(tǒng)管理程序會(huì)為第二分區(qū)計(jì)算新的TBO值。第一機(jī)器中的系統(tǒng)管理程序?qū)⑹褂闷渥约旱臄?shù)據(jù)來(lái)確定該第一機(jī)器的相對(duì)時(shí)間為1小時(shí)。第一機(jī)器中的系統(tǒng)管理程序?qū)⒎治銎湓诘诙謪^(qū)的配置數(shù)據(jù)中所接收的TBO以及其從第三機(jī)器中接收的TB值。然后,第一機(jī)器中的系統(tǒng)管理程序會(huì)確定該新的TBO值應(yīng)該代表5小時(shí)。然后,第一機(jī)器中的系統(tǒng)管理程序會(huì)將該新的TBO值存儲(chǔ)于該分區(qū)的配置數(shù)據(jù)中作為第二分區(qū)的TBO的當(dāng)前值。
通過(guò)從系統(tǒng)管理程序的存儲(chǔ)器中取回已掛起的邏輯分區(qū)的配置數(shù)據(jù),并在選定為處理該邏輯分區(qū)的每個(gè)處理器內(nèi)核中恢復(fù)所有已建立的寄存器值和狀態(tài),可在處理器上繼續(xù)已掛起的邏輯分區(qū)。這種配置數(shù)據(jù)包括時(shí)基偏移(TBO)值。系統(tǒng)管理程序?qū)⑿路职l(fā)的分區(qū)的TBO應(yīng)用于選定為處理該邏輯分區(qū)的每個(gè)處理器內(nèi)核的TB。以下各段說(shuō)明了如何將TBO應(yīng)用于TB。
在可以于選定的處理器內(nèi)核上繼續(xù)已掛起的分區(qū)之前,必須首先掛起當(dāng)前正在這些相同的處理器內(nèi)核上執(zhí)行的分區(qū)。掛起分區(qū)包括提取稍后繼續(xù)執(zhí)行該分區(qū)所需的所有已建立的寄存器內(nèi)容和其他狀態(tài),以及將該數(shù)據(jù)保存到為該分區(qū)分配的系統(tǒng)管理程序的存儲(chǔ)區(qū)域。掛起的分區(qū)有可能已經(jīng)將其TBO應(yīng)用于處理該分區(qū)的每個(gè)處理器內(nèi)核中的TB。
當(dāng)繼續(xù)一個(gè)分區(qū)時(shí),系統(tǒng)管理程序必須在將新分區(qū)的TBO應(yīng)用于TB寄存器時(shí)將來(lái)自舊分區(qū)的TBO考慮在內(nèi)。系統(tǒng)管理程序通過(guò)MFSPR(從專用寄存器中移出)指令來(lái)讀取TB寄存器的當(dāng)前值。然后,系統(tǒng)管理程序?qū)⑴f分區(qū)的TBO與新分區(qū)的TBO之間的差值加到從TB寄存器中讀取的值上,并采用MTSPR(移動(dòng)到專用寄存器)指令只將結(jié)果寫(xiě)入TB寄存器的高階位。將新的SPR(專用寄存器)號(hào)即助記碼TBU40(時(shí)基的高40位)分配為僅表示TB寄存器的高階40位。為T(mén)B的高40位分配新的助記碼(SPR號(hào))使得處理器內(nèi)核硬件可以將MTSPR TBU40指令識(shí)別為新的操作。
當(dāng)執(zhí)行MTSPR TBU40指令時(shí),硬件只將第0-39位寫(xiě)到TB寄存器中。TB值的低階位即第40-63位不受MTSPR的影響,并且保持與芯片的TOD的精確同步。在執(zhí)行該指令之后,芯片的TOD保持不變。
由于讀取TB寄存器、計(jì)算舊分區(qū)的TBO與新分區(qū)的TB0之間的差值以及執(zhí)行MTSPR指令的一系列動(dòng)作會(huì)占用若干個(gè)機(jī)器周期,因此TB值有可能已經(jīng)在讀取該TB值與將新值寫(xiě)到高階40位之間的時(shí)間內(nèi)進(jìn)行了遞增。在將高階位寫(xiě)入到TB寄存器中之前,低階位的值有可能正好進(jìn)位到高階位中。因此,通過(guò)執(zhí)行MTSPR TBU40指令來(lái)覆蓋進(jìn)入高階位的進(jìn)位。這有可能導(dǎo)致顯示出TB發(fā)生回退,或使得不同物理處理器內(nèi)核上的TB值不同。
由于TB寄存器中的第39位經(jīng)過(guò)大約32微秒才發(fā)生改變,因此這可以通過(guò)檢查最初讀取的TB值是否在有限的遞增數(shù)目?jī)?nèi)來(lái)比較容易地避免進(jìn)位到第39位。例如,如果第40-53位全是1,這將意味著遞增值將在接下來(lái)的2微秒內(nèi)進(jìn)位到第39位(原因是第53位對(duì)應(yīng)于2微秒)。如果第40-53位中的任意一位是0,這將意味著在進(jìn)位到第39位之前系統(tǒng)管理程序有至少2微秒的時(shí)間來(lái)完成上述一系列動(dòng)作。如果所讀取的值未給出足夠的時(shí)間以確保上述一系列動(dòng)作在進(jìn)位到第39位之前完成,則系統(tǒng)管理程序會(huì)在一個(gè)循環(huán)中等待,讀取TB,直到觀察到進(jìn)位到第39位,在此情況下,整個(gè)32微秒的窗口都是可用的。
這種有界機(jī)制會(huì)引起因等待進(jìn)位到第39位而產(chǎn)生的顯著延遲。為避免這些延遲,本優(yōu)選實(shí)施例檢查是否進(jìn)位到第39位,并且如果進(jìn)位到第39位,則糾正該值。要完成這一過(guò)程,可在更新之后再次讀取TB值并將低階位與初始值相比較,并且如果新的TB寄存器值小于初始的TB寄存器值,則再次遞增該值。
機(jī)器檢查是必須由系統(tǒng)管理程序立刻處理的高優(yōu)先級(jí)的中斷。在某些情況下,在中斷之后將返回的指令地址有可能丟失。系統(tǒng)管理程序有可能正處于掛起或繼續(xù)的進(jìn)程中,并且不能準(zhǔn)確地返回到發(fā)生中斷的指令,因此系統(tǒng)管理程序無(wú)法再跟蹤目前是將哪一個(gè)分區(qū)的TB0應(yīng)用于TB的高位。在機(jī)器檢查的情況下,從芯片的TOD中恢復(fù)TB的值,并將處理器內(nèi)核將要執(zhí)行的下一邏輯分區(qū)的TBO加到TB寄存器的高階位上。檢查該值以觀察當(dāng)應(yīng)用TBO時(shí)TB的低階位是否進(jìn)位到第39位,并且如果當(dāng)應(yīng)用TBO時(shí)TB的低階位進(jìn)位到第39位,則TB在第39位在此遞增。
一旦將TBO應(yīng)用到TB,TB就代表分區(qū)的相對(duì)時(shí)間,而芯片TOD代表機(jī)器的相對(duì)時(shí)間。
當(dāng)邏輯分區(qū)從第一機(jī)器中的處理器內(nèi)核移植到第二機(jī)器中的不同的處理器內(nèi)核時(shí),兩臺(tái)機(jī)器都必須支持虛擬化并具有支持分區(qū)移植的系統(tǒng)管理程序固件層,具有相同的固定TB遞增速率,并由可將數(shù)據(jù)從任一系統(tǒng)管理程序發(fā)送到另一系統(tǒng)管理程序的網(wǎng)絡(luò)連接。由于分區(qū)中的作系統(tǒng)有可能需要得知已將分區(qū)移植到不同的機(jī)器,因此不能直接移植已經(jīng)掛起的分區(qū)。系統(tǒng)管理程序?qū)⒁呀?jīng)不再運(yùn)行的分區(qū)分發(fā)給該系統(tǒng)管理程序的機(jī)器中的處理器內(nèi)核,通知待移植的邏輯分區(qū)的作系統(tǒng)準(zhǔn)備進(jìn)行移植,并使該分區(qū)不再在該處理器內(nèi)核上執(zhí)行以準(zhǔn)備將其移植到不同的機(jī)器。
第一機(jī)器中的系統(tǒng)管理程序?qū)⒃诓煌臋C(jī)器上繼續(xù)處理邏輯分區(qū)所需的分區(qū)配置數(shù)據(jù)打包,這些數(shù)據(jù)包括該分區(qū)的RTO值。這些數(shù)據(jù)還包括來(lái)自發(fā)送這些數(shù)據(jù)的機(jī)器中的最后掛起對(duì)該分區(qū)的處理的處理器的TB值。應(yīng)當(dāng)注意,TB值包括這個(gè)時(shí)間點(diǎn)上的該分區(qū)的TBO。通過(guò)網(wǎng)絡(luò)將該配置數(shù)據(jù)發(fā)送給第二機(jī)器。每臺(tái)機(jī)器上的系統(tǒng)管理程序定義一個(gè)服務(wù)分區(qū)以執(zhí)行打包、發(fā)送和接收數(shù)據(jù)的作業(yè)。
出于說(shuō)明的目的,已將前面的確定TBO的示例進(jìn)行了簡(jiǎn)化,即假定將分區(qū)從一臺(tái)機(jī)器移動(dòng)到另一機(jī)器的過(guò)程是時(shí)的。實(shí)際上,通過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)會(huì)耗費(fèi)相當(dāng)?shù)臅r(shí)間量,并且在計(jì)算新的TBO時(shí)應(yīng)將該逝去時(shí)間計(jì)算在內(nèi)。
為了在計(jì)算第二機(jī)器(接收機(jī)器)上的新TBO值時(shí)將用以通過(guò)網(wǎng)絡(luò)發(fā)送分區(qū)數(shù)據(jù)的逝去時(shí)間計(jì)算在內(nèi),兩臺(tái)機(jī)器上的服務(wù)分區(qū)采用相同的掛鐘時(shí)間,即格林尼治標(biāo)準(zhǔn)時(shí)間(GMT)。在每臺(tái)機(jī)器中保持時(shí)間的32MHz階躍信號(hào)典型地只精確到+/-20ppm(正負(fù)百萬(wàn)分之二十),意味著兩臺(tái)機(jī)器中的服務(wù)分區(qū)的掛鐘時(shí)間可以隨時(shí)間緩慢地互相遠(yuǎn)離。運(yùn)行于兩臺(tái)機(jī)器上的服務(wù)分區(qū)中的系統(tǒng)管理程序定期地通過(guò)網(wǎng)絡(luò)利用消息來(lái)彼此同步以糾正任意的長(zhǎng)時(shí)間漂移。
服務(wù)分區(qū)只運(yùn)行于其自己的機(jī)器上,因此其TBO值始終為零。因此,運(yùn)行服務(wù)分區(qū)的處理器上的TB值始終與代表該機(jī)器的相對(duì)時(shí)間的芯片TOD值相同。第一機(jī)器(發(fā)送機(jī)器)上的系統(tǒng)管理程序包括來(lái)自服務(wù)分區(qū)的TB值和分區(qū)時(shí)間(TB遞增周期×TB值+RTO),該服務(wù)分區(qū)具有發(fā)送給第二機(jī)器(接收機(jī)器)的用于移植分區(qū)的數(shù)據(jù)。
當(dāng)?shù)诙C(jī)器中的系統(tǒng)管理程序接收到用于移植分區(qū)數(shù)據(jù)的數(shù)據(jù)時(shí),該系統(tǒng)管理程序通過(guò)在第一機(jī)器(發(fā)送機(jī)器)中從其自己的服務(wù)分區(qū)的掛鐘時(shí)間中減去該服務(wù)分區(qū)的掛鐘時(shí)間來(lái)確定發(fā)送數(shù)據(jù)的同時(shí)逝去的時(shí)間量。
第二機(jī)器(接收機(jī)器)中的系統(tǒng)管理程序還必須計(jì)算移植分區(qū)的新的TBO。通過(guò)用逝去的掛鐘時(shí)間乘以恒定的TB遞增速率來(lái)將用于發(fā)送數(shù)據(jù)的逝去時(shí)間轉(zhuǎn)換為T(mén)B的單位。然后,新的TBO值就是來(lái)自移植分區(qū)的TB加上轉(zhuǎn)換為T(mén)B的單位的用于發(fā)送數(shù)據(jù)的逝去時(shí)間再減去第二機(jī)器(接收機(jī)器)的服務(wù)分區(qū)的TB。
將新的TBO值連同移植后的分區(qū)數(shù)據(jù)存儲(chǔ)于第二機(jī)器(接收機(jī)器)的系統(tǒng)管理程序的存儲(chǔ)器中。然后,第二機(jī)器中的系統(tǒng)管理程序可以如上所述應(yīng)用TBO將邏輯分區(qū)分發(fā)給第二機(jī)器中的特定處理器內(nèi)核。
圖1是可以執(zhí)行接收和分發(fā)定時(shí)信號(hào)以及偶爾在一個(gè)或多個(gè)輸入的振蕩器信號(hào)發(fā)生故障時(shí)進(jìn)行恢復(fù)的功能的代表性微處理器或芯片。芯片100包括第一處理器內(nèi)核101a和第二處理器內(nèi)核101b??梢院?jiǎn)單地將每個(gè)處理器內(nèi)核稱為內(nèi)核。處理器內(nèi)核可以具有多線程能力、檢錯(cuò)和恢復(fù)功能、大量的通用寄存器(GPR)和專用寄存器(SPR)。
優(yōu)選地采用第2級(jí)緩存103(或L2緩存103)以及不可緩存單元105(或NCQ 105)來(lái)實(shí)現(xiàn)第一內(nèi)核101a與第二內(nèi)核101b的連通性。NCU 105處理用于存儲(chǔ)經(jīng)由交換總線110從內(nèi)核接收的數(shù)據(jù)的命令以將這些數(shù)據(jù)存儲(chǔ)到主存儲(chǔ)器。這些存儲(chǔ)器可以是存儲(chǔ)映射I/O(memory-mapped I/O)??梢詫?duì)稍后有可能受到頻訪問(wèn)的存儲(chǔ)器的訪問(wèn)存儲(chǔ)到L2 103,以便減小由內(nèi)核所執(zhí)行的作的延遲。
L2緩存103可以類似地提供經(jīng)由交換總線110對(duì)其內(nèi)容的訪問(wèn),交換總線110可以與放置芯片100的同一電路板上以及在該電路板以外的其他芯片互連。
可以提供附近的但又在芯片外(off-chip)的第3級(jí)緩存(或L3緩存)。管理內(nèi)核與L3之間的存取的控制在L3緩存控制113中進(jìn)行。與此類似,可以在芯片內(nèi)(on-chip)提供存儲(chǔ)控制器115和I/O接口117以分別促進(jìn)對(duì)通用RAM和對(duì)各外圍設(shè)備的較長(zhǎng)延遲的訪問(wèn)。
對(duì)稱多處理器(SMP)交換控制119是對(duì)所連接的各設(shè)備對(duì)交換總線的爭(zhēng)用進(jìn)行仲裁的專用設(shè)備,并且SMP交換控制119經(jīng)由擴(kuò)展端口A、B、X、Y和Z提供SMP拓?fù)渑渲?。本?shí)施例中示出了五個(gè)擴(kuò)展端口,然而,應(yīng)當(dāng)理解,要實(shí)現(xiàn)不同級(jí)別的復(fù)雜多芯片拓?fù)?,可以采用更少或更多的擴(kuò)展端口。預(yù)期五個(gè)端口可以在64個(gè)芯片之間或64個(gè)芯片中提供快速的指令、數(shù)據(jù)和定時(shí)信號(hào)。
普遍控制(pervasive control)121是存在于形成在芯片上的各處理模塊(block)之外或集成在這些處理模塊內(nèi)的電路。普遍控制121的功能之一是通過(guò)在每個(gè)處理器內(nèi)核的方便的指令邊界上提供各GPR和SPR的冗余副本來(lái)提供對(duì)處理器狀態(tài)的備份。此外,普遍控制121可以在檢測(cè)錯(cuò)誤和將這些錯(cuò)誤傳送給外部服務(wù)處理器以便由例如固件進(jìn)行進(jìn)一步作時(shí)提供輔助。
普遍控制121是冗余振蕩器或者提供或接收派生定時(shí)信號(hào)的其他電路的選通點(diǎn)(gating point)。應(yīng)當(dāng)意識(shí)到,有可能因故障或其他原因而將一個(gè)或多個(gè)冗余振蕩器從配置中去掉,并且普遍控制的一個(gè)目的是從冗余的振蕩器中選擇更好的定時(shí)信號(hào)(或至少一個(gè)在容限內(nèi)的定時(shí)信號(hào)),并選擇有可能經(jīng)由擴(kuò)展端口而到達(dá)的階躍編碼信號(hào)(step-encoded signal)。
每個(gè)處理器內(nèi)核包括其自己的時(shí)基寄存器(TBR)。例如處理器內(nèi)核101a包括時(shí)基寄存器101aa,并且處理器內(nèi)核101b包括時(shí)基寄存器101bb。當(dāng)重啟包括特定芯片的機(jī)器時(shí),將包括在該芯片內(nèi)的每個(gè)處理器內(nèi)核中的每個(gè)時(shí)基寄存器與包括在該芯片內(nèi)的時(shí)刻(TOD)寄存器同步。例如,當(dāng)重啟包括芯片100的機(jī)器時(shí),會(huì)將一個(gè)值寫(xiě)入到該系統(tǒng)內(nèi)的每個(gè)芯片中所包括的時(shí)刻寄存器中。因此,會(huì)將一個(gè)值寫(xiě)入到TOD 130中。在此之后,通過(guò)以已知的時(shí)間邊界單位將TOD130中的值寫(xiě)入到每個(gè)TB寄存器101aa和101bb中,可將TB寄存器101aa和TB寄存器101bb與TOD 130同步,之后它們通過(guò)根據(jù)公共階躍信號(hào)來(lái)進(jìn)行遞增而保持同步。
在芯片100中由TOD 130、TB寄存器MTSPR TBU40指令101aa和TB寄存器101bb接收32MHz階躍信號(hào)132。
圖2示出了根據(jù)本發(fā)明的優(yōu)選實(shí)施例的多處理器芯片的物理配置,該多處理器芯片諸如圖1的芯片,其位于包括在一個(gè)計(jì)算機(jī)系統(tǒng)機(jī)器內(nèi)的電路板上的對(duì)稱多處理器(SMP)結(jié)構(gòu)中。處理器節(jié)點(diǎn)200可以包含存儲(chǔ)器組201a和存儲(chǔ)器組201b,I/O集線器203,服務(wù)處理器205a和服務(wù)處理器205b,以及端口或連接器207a和207b,端口或連接器207a和207b處理來(lái)自每個(gè)多芯片模塊(MCM)221a、221b、221c和221d的SMP交換擴(kuò)展端口A和B。SMP交換擴(kuò)展端口X、Y、Z對(duì)節(jié)點(diǎn)200內(nèi)的多個(gè)MCM221進(jìn)行互連,而端口A、B對(duì)多個(gè)不同節(jié)點(diǎn)上的MCM進(jìn)行互連。每個(gè)多芯片模塊在硬件配置上可以是相同的,但通過(guò)軟件配置為具有不同的拓?fù)浜凸δ?,例如存在主模塊功能與從模塊功能之分。在MCM中可以存在圖2的芯片222a-222d,以及第3級(jí)緩存存儲(chǔ)器223a和223b。處理器節(jié)點(diǎn)200可以具有初級(jí)振蕩器231和次級(jí)振蕩器233,每個(gè)振蕩器都連接到存在于該處理器節(jié)點(diǎn)上的每個(gè)芯片。振蕩器和功能單元之間的連接在整個(gè)電路板和芯片上延伸,但在圖2中未示出,以避免引起混淆。與此類似,應(yīng)當(dāng)理解,在端口和I/O集線器之間,在其他組件中,存在很多旋繞的互連,但在此并未示出這些互連。
每個(gè)MCM均包括一個(gè)芯片。例如,MCM 221a包括芯片222a,MCM 221b包括芯片222b,MCM 221c包括芯片222c,MCM221d包括芯片222d。
每個(gè)芯片包括它自己的時(shí)刻(TOD)寄存器。例如,芯片222a包括TOD 230a,芯片222b包括TOD 230b,芯片222c包括TOD 230c,芯片222d包括TOD 230d。
對(duì)機(jī)器內(nèi)的所有芯片中的TOD寄存器共同進(jìn)行初始同步。通過(guò)使TOD寄存器值步進(jìn)到分布在整臺(tái)機(jī)器中的32MHz脈沖來(lái)保持同步。除32MHz脈沖之外,在每2微秒的邊界上發(fā)送同步脈沖。在本優(yōu)選實(shí)施例中,該32MHz脈沖糾正該64位的值的第59位,并且2微妙的邊界發(fā)生于第54-63位全部為零時(shí)。
圖3示出了一張高級(jí)流程圖,其說(shuō)明,根據(jù)本發(fā)明使機(jī)器內(nèi)的每個(gè)芯片與該機(jī)器中的其他芯片同步,使每個(gè)處理器內(nèi)核的TB與該芯片中的每個(gè)其他的處理器內(nèi)核中的TB同步,以及使多個(gè)獨(dú)立的機(jī)器彼此同步。如方框300所示,進(jìn)程開(kāi)始,并隨后進(jìn)行到方框302,方框302示出,對(duì)機(jī)器進(jìn)行開(kāi)機(jī)和引導(dǎo),例如在該機(jī)器上執(zhí)行上電復(fù)位(Power-on-Reset)。機(jī)器引導(dǎo)包括加載和啟動(dòng)系統(tǒng)管理程序固件。
接著,方框304示出,在所有芯片之間對(duì)時(shí)刻(TOD)寄存器中的值進(jìn)行同步。在一個(gè)優(yōu)選的方法中,這種同步包括將初始值(通常是0)寫(xiě)到一個(gè)芯片TOD,然后例如通過(guò)對(duì)TFMR(定時(shí)器設(shè)施管理寄存器)進(jìn)行寫(xiě)入來(lái)調(diào)用硬件狀態(tài)機(jī)(這就將該值在整臺(tái)機(jī)器中傳播到所有的其他芯片,使得所有芯片上的TOD能夠同時(shí)根據(jù)同步信號(hào)在每2微秒的邊界上進(jìn)行遞增),以及使用對(duì)應(yīng)于TOD值的一位(第59位)的32MHz階躍信號(hào)來(lái)保持同步。
接著,方框306示出,對(duì)于該機(jī)器中的每個(gè)芯片,將該芯片內(nèi)的每個(gè)處理器內(nèi)核中的時(shí)基(TB)寄存器中的值與該芯片的TOD值同步。在本優(yōu)選方法中,這由系統(tǒng)管理程序采用MTSPR(移動(dòng)到專用寄存器)指令對(duì)每個(gè)處理器內(nèi)核中的TFMR(定時(shí)器設(shè)施管理寄存器)進(jìn)行寫(xiě)入而完成,TFMR使得該芯片的TOD值在下一個(gè)2微秒的同步邊界上被傳送到TB寄存器,TB寄存器隨后通過(guò)將TB寄存器步進(jìn)到與該芯片的TOD所步進(jìn)到的脈沖相同的32MHz階躍脈沖而保持同步。接著,方框308示出,開(kāi)始該機(jī)器的系統(tǒng)管理程序的服務(wù)分區(qū)。
然后,進(jìn)程進(jìn)行到方框310,其示出,在該機(jī)器和連接到該機(jī)器的支持邏輯分區(qū)的移植的所有機(jī)器的服務(wù)分區(qū)中設(shè)置相同的掛鐘時(shí)間(例如GMT)。每個(gè)機(jī)器上的系統(tǒng)管理程序?qū)⒎?wù)分區(qū)的相對(duì)時(shí)間偏移(RTO)存儲(chǔ)于其存儲(chǔ)器中。通過(guò)用特定的掛鐘時(shí)間減去TB值與TB遞增周期的乘積來(lái)確定RTO。確定哪臺(tái)機(jī)器可用于分區(qū)移植的過(guò)程由網(wǎng)絡(luò)管理員和系統(tǒng)操作者來(lái)進(jìn)行。
然后,進(jìn)程進(jìn)行到方框312,其示出了確定是否已經(jīng)諸如通過(guò)循環(huán)地關(guān)機(jī)/開(kāi)機(jī)或通過(guò)重新引導(dǎo)(reboot)機(jī)器重啟了機(jī)器。如果確定已經(jīng)重啟了機(jī)器,則進(jìn)程返回方框304。再次參考方框312,如果確定還未重啟機(jī)器,則進(jìn)程進(jìn)行到方框314,方框314示出,該機(jī)器中的系統(tǒng)管理程序繼續(xù)通過(guò)其他機(jī)器的系統(tǒng)管理程序來(lái)查詢這些機(jī)器中的服務(wù)分區(qū),以便繼續(xù)將該服務(wù)分區(qū)中的時(shí)間與其他機(jī)器內(nèi)的服務(wù)分區(qū)中的時(shí)間同步。然后,進(jìn)程循環(huán)回到方框312。
圖4示出了一張高級(jí)流程圖,其說(shuō)明的過(guò)程由特定機(jī)器的系統(tǒng)管理程序根據(jù)本發(fā)明執(zhí)行,以便將處理器內(nèi)核中的TB值調(diào)整為與正常的分區(qū)處理期間在該處理器上繼續(xù)的特定分區(qū)相關(guān)聯(lián)的相對(duì)時(shí)間。如方框400所示,進(jìn)程開(kāi)始,并隨后進(jìn)行到方框402,方框402示出,用于特定處理器內(nèi)核上當(dāng)前正在執(zhí)行的邏輯分區(qū)的時(shí)間片結(jié)束。接著,方框404示出,系統(tǒng)管理程序掛起特定處理器內(nèi)核上當(dāng)前正在執(zhí)行的分區(qū)并確定在該處理器內(nèi)核上繼續(xù)哪個(gè)分區(qū)。然后,方框406示出,將先前在特定處理器內(nèi)核上執(zhí)行的分區(qū)的所有的配置數(shù)據(jù)和狀態(tài)信息存儲(chǔ)到系統(tǒng)管理程序的存儲(chǔ)器,這些配置數(shù)據(jù)和狀態(tài)信息是稍后繼續(xù)處理分區(qū)所需要的。
然后,進(jìn)程進(jìn)行到方框408,其示出,系統(tǒng)管理程序根據(jù)存儲(chǔ)于該系統(tǒng)管理程序的存儲(chǔ)器中的配置數(shù)據(jù)來(lái)得到已分發(fā)給特定內(nèi)核的前一分區(qū)的TBO。接著,方框410示出,系統(tǒng)管理程序根據(jù)存儲(chǔ)于該系統(tǒng)管理程序的存儲(chǔ)器中的配置數(shù)據(jù)來(lái)得到將分發(fā)給特定內(nèi)核的下一分區(qū)的TBO。
在此之后,方框412示出,確定這兩個(gè)TBO是否相等。如果確定這兩個(gè)TBO相同,則進(jìn)程進(jìn)行到方框414,其表明該特定的處理器內(nèi)核的TB寄存器值未改變。然后,如方框416所示,進(jìn)程結(jié)束。
再次參考方框412,如果確定這兩個(gè)TBO不同,則進(jìn)程進(jìn)行到方框418,其示出,計(jì)算先前分發(fā)給該處理器內(nèi)核的分區(qū)的TBO與將要分發(fā)給該處理器內(nèi)核的下一分區(qū)的TBO之間的差值。在此之后,方框420示出,從該處理器內(nèi)核中讀取當(dāng)前的TB寄存器值并用從該內(nèi)核中讀取的TB寄存器值減去前一分區(qū)的TBO與下一分區(qū)的TBO之間的差值以計(jì)算新的TB寄存器值。
接著,方框422示出,通過(guò)對(duì)TBU40(時(shí)基的高40位)執(zhí)行MTSPR(移動(dòng)到專用寄存器)指令而將新的TB值的高40位寫(xiě)到該內(nèi)核的TB寄存器的高40位。然后,進(jìn)程進(jìn)行到方框423,其示出,低階位即第40-63位通過(guò)與該芯片的TOD同步地步進(jìn)來(lái)繼續(xù)計(jì)時(shí)。
然后,方框424示出,讀取該內(nèi)核的TB寄存器的當(dāng)前值(更新后的值)。在此之后,方框426示出,只將更新后的值的低階位與如方框420所示而讀取的舊值的低階位相比較。
在此之后,方框428示出,確定剛讀取的當(dāng)前值(更新后的值)的低階位是否大于或等于舊值的低階位。如果確定剛讀取的當(dāng)前值的低階位大于或等于舊值的低階位,則這一進(jìn)程完成并且如方框434所示,處理繼續(xù)。再次參考方框428,如果確定剛讀取的當(dāng)前值的低階位并不大于或等于舊值的低階位,則進(jìn)程進(jìn)行到方框430,其示出,通過(guò)遞增第39位來(lái)遞增剛讀取的當(dāng)前TB值。方框428中的比較結(jié)果為“否”表明TB寄存器值已經(jīng)遞增并在第一次讀取該TB寄存器值的時(shí)間與將改變后的值寫(xiě)回高40位的時(shí)間之間進(jìn)位到第39位。遞增第39位上的值對(duì)由于被覆蓋而丟失的增量進(jìn)行了調(diào)整。
在此之后,方框432示出,采用對(duì)TBU40的MTSPR指令將遞增后的TB值的高40位寫(xiě)到該內(nèi)核的TB寄存器的高40位。然后,這一進(jìn)程完成并且如方框434所示,處理繼續(xù)。
圖5示出了一張高級(jí)流程圖,其說(shuō)明的過(guò)程由特定機(jī)器的系統(tǒng)管理程序根據(jù)本發(fā)明執(zhí)行,以便將處理器內(nèi)核中的TB值調(diào)整為與發(fā)生機(jī)器檢查(machine check)之后在該處理器上得以繼續(xù)的特定分區(qū)相關(guān)聯(lián)的相對(duì)時(shí)間。如方框500所示,進(jìn)程開(kāi)始,并隨后進(jìn)行到方框502,該方框502示出該機(jī)器中發(fā)生機(jī)器檢查。當(dāng)發(fā)生機(jī)器檢查時(shí),每個(gè)芯片的TOD中的值不受影響。因此,該TOD值仍然有效。
然后,進(jìn)程進(jìn)行到方框504,其示出,系統(tǒng)管理程序通過(guò)對(duì)該處理器內(nèi)核中的定時(shí)器設(shè)施管理寄存器(TFMR)進(jìn)行寫(xiě)入而從芯片的TOD中恢復(fù)特定處理器內(nèi)核中的TB值。這使得硬件等待下一個(gè)2微秒邊界,然后將該值從芯片的TOD傳送到內(nèi)核的TB并繼續(xù)進(jìn)行同步步進(jìn)。
然后,方框506示出,從存儲(chǔ)于系統(tǒng)管理程序的存儲(chǔ)器中的該分區(qū)的配置數(shù)據(jù)中得到將分發(fā)給特定內(nèi)核的下一分區(qū)的時(shí)基偏移(TBO)。接著,方框507示出,從該處理器內(nèi)核中的該TB寄存器內(nèi)讀取當(dāng)前TB值并將下一分區(qū)的TBO加到剛讀取的TB值上以便計(jì)算新的TB值。然后,方框508示出,采用對(duì)TBU40的MTSPR指令將新的TB值的高40位寫(xiě)到該內(nèi)核的TB寄存器的高40位。
接著,方框510示出,從該內(nèi)核的TB寄存器中讀取該內(nèi)核的TB的當(dāng)前值(更新后的值)。然后,方框512示出,只將更新后的值的低階位與舊值的低階位相比較。
然后,進(jìn)程進(jìn)行到方框514,其示出,確定剛讀取的當(dāng)前值(更新后的值)是否大于或等于舊值的低階位。如果確定剛讀取的當(dāng)前值(更新后的值)并不大于或等于舊值的低階位,則進(jìn)程進(jìn)行到方框518,其示出,通過(guò)遞增第39位來(lái)遞增剛讀取的當(dāng)前TB值。方框518中的比較結(jié)果為“否”表明TB寄存器值已經(jīng)遞增并在第一次讀取該TB寄存器值的時(shí)間與將改變后的值寫(xiě)回TB寄存器的高40位的時(shí)間之間進(jìn)位到第39位。遞增第39位上的值對(duì)由于被覆蓋而丟失的增量進(jìn)行了調(diào)整。
接著,方框520示出,采用對(duì)TBU40的MTSPR指令將遞增后的TB值的高40位寫(xiě)到該內(nèi)核的TB寄存器的高40位。然后,這一進(jìn)程進(jìn)行到方框516并繼續(xù)進(jìn)行處理。
再次參考方框514,如果確定剛讀取的當(dāng)前值(更新后的值)的低階位大于或等于舊值的低階位,則進(jìn)程進(jìn)行到示出繼續(xù)進(jìn)行處理的方框514。
圖6示出了一張高級(jí)流程圖,其說(shuō)明,根據(jù)本發(fā)明創(chuàng)建邏輯分區(qū),為該分區(qū)分配初始時(shí)基偏移(TBO)0,并在該分區(qū)的配置數(shù)據(jù)中存儲(chǔ)該TBO。圖6所示的進(jìn)程由系統(tǒng)管理程序執(zhí)行。如方框600所示,進(jìn)程開(kāi)始,并隨后進(jìn)行到示出配置邏輯分區(qū)的方框602。接著,方框604示出,將該分區(qū)的包括寄存器數(shù)據(jù)、值和狀態(tài)的所有配置數(shù)據(jù)存儲(chǔ)于系統(tǒng)管理程序的存儲(chǔ)器中。
然后,進(jìn)程進(jìn)行到方框606,其示出,將該分區(qū)的初始TBO分配為零。當(dāng)系統(tǒng)管理程序創(chuàng)建新的邏輯分區(qū)時(shí),TBO值初始為零。只要僅將邏輯分區(qū)分發(fā)在創(chuàng)建該分區(qū)的同一臺(tái)機(jī)器上,TBO就會(huì)保持為零。接著,方框608示出,在存儲(chǔ)器中存儲(chǔ)該分區(qū)的時(shí)基偏移以及該分區(qū)的其他配置數(shù)據(jù)、值和狀態(tài)。然后,如方框610所示,進(jìn)程結(jié)束。
圖7A示出,根據(jù)本發(fā)明,第一計(jì)算機(jī)系統(tǒng)機(jī)器中的系統(tǒng)管理程序發(fā)送邏輯分區(qū)給第二計(jì)算機(jī)系統(tǒng)機(jī)器以便由第二計(jì)算機(jī)系統(tǒng)機(jī)器中的處理器內(nèi)核執(zhí)行該邏輯分區(qū)。如方框700所示,進(jìn)程開(kāi)始,并隨后進(jìn)行到方框702,該方框702示出,由第一機(jī)器中的系統(tǒng)管理程序確定將特定的邏輯分區(qū)分發(fā)到第二機(jī)器中的處理器內(nèi)核上執(zhí)行。
接著,方框704示出,如果內(nèi)核還沒(méi)有執(zhí)行特定分區(qū),則系統(tǒng)管理程序?qū)⒃摲謪^(qū)分發(fā)給當(dāng)前機(jī)器上的處理器內(nèi)核。系統(tǒng)管理程序通知該分區(qū)的操作系統(tǒng)準(zhǔn)備移植到第二機(jī)器。然后,方框706示出,系統(tǒng)管理程序掛起該分區(qū)使其不再在該內(nèi)核上執(zhí)行,并將該分區(qū)的配置數(shù)據(jù)和狀態(tài)存儲(chǔ)到系統(tǒng)管理程序的存儲(chǔ)器,這些配置數(shù)據(jù)和狀態(tài)包括該分區(qū)的實(shí)時(shí)偏移(RTO)。系統(tǒng)管理程序還包括來(lái)自最后執(zhí)行該分區(qū)的處理器內(nèi)核的時(shí)基(TB)值。最后執(zhí)行該分區(qū)的處理器內(nèi)核就是最后一個(gè)掛起該分區(qū)的內(nèi)核。該TB值應(yīng)用了該分區(qū)的TBO。
然后,方框708示出,第一機(jī)器中的系統(tǒng)管理程序?qū)⑴渲脭?shù)據(jù)發(fā)送給第二機(jī)器。系統(tǒng)管理程序還發(fā)送第一機(jī)器上的服務(wù)分區(qū)的掛鐘時(shí)間,該掛鐘時(shí)間是與第二機(jī)器上的服務(wù)分區(qū)的掛鐘時(shí)間同步的。然后,如方框710所示,進(jìn)程結(jié)束。
圖7B示出,根據(jù)本發(fā)明,第一計(jì)算機(jī)系統(tǒng)機(jī)器中的系統(tǒng)管理程序接收來(lái)自第二計(jì)算機(jī)系統(tǒng)機(jī)器的邏輯分區(qū)以便由第一計(jì)算機(jī)系統(tǒng)機(jī)器中的處理器內(nèi)核執(zhí)行該邏輯分區(qū)。如方框720所示,進(jìn)程開(kāi)始,并隨后進(jìn)行到方框722,該方框722示出,由第一機(jī)器從第二機(jī)器接收特定邏輯分區(qū)的配置數(shù)據(jù),包括移植分區(qū)的RTO,應(yīng)用了TBO的來(lái)自先前在第二機(jī)器中運(yùn)行該分區(qū)的處理器內(nèi)核的TB值,以及第二機(jī)器上的服務(wù)分區(qū)的掛鐘時(shí)間。在此之后,方框724示出,計(jì)算用于發(fā)送配置數(shù)據(jù)的逝去時(shí)間。
接著,方框726示出,使用應(yīng)用了移植分區(qū)的TBO的來(lái)自第二機(jī)器的TB、來(lái)自在第一機(jī)器上運(yùn)行服務(wù)分區(qū)的處理器的TB以及用于數(shù)據(jù)發(fā)送的逝去時(shí)間來(lái)計(jì)算新的TBO。通過(guò)用逝去的掛鐘時(shí)間乘以恒定的TB遞增速率來(lái)將用于發(fā)送數(shù)據(jù)的逝去時(shí)間轉(zhuǎn)換為T(mén)B的單位。然后,新的TBO值就是來(lái)自移植分區(qū)的TB加上轉(zhuǎn)換為T(mén)B的單位的用于發(fā)送數(shù)據(jù)的逝去時(shí)間再減去第一機(jī)器(接收機(jī)器)的服務(wù)分區(qū)的TB。
接著,方框728示出,在第一機(jī)器中的系統(tǒng)管理程序內(nèi)的存儲(chǔ)器中存儲(chǔ)所接收的配置數(shù)據(jù)和已移植的邏輯分區(qū)的新TBO。然后,如方框730所示,進(jìn)程結(jié)束。
圖8是根據(jù)本發(fā)明的包括本發(fā)明的計(jì)算機(jī)系統(tǒng)機(jī)器的網(wǎng)絡(luò)的圖示。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)800是可以實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)系統(tǒng)機(jī)器的網(wǎng)絡(luò)。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)800包含網(wǎng)絡(luò)802,該網(wǎng)絡(luò)802是用于在網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)800中為連接在一起的各個(gè)設(shè)備和計(jì)算機(jī)之間提供通信鏈路的媒介。網(wǎng)絡(luò)802可以包括諸如有線通信鏈路、無(wú)線通信鏈路或光纖電纜之類的連接。
在所述示例中,將諸如服務(wù)器之類的機(jī)器804連同存儲(chǔ)單元806一起連接到網(wǎng)絡(luò)802。此外,還將其他機(jī)器808、810和812連接到網(wǎng)絡(luò)802。這些機(jī)器808、810和812可以是客戶機(jī)。例如,機(jī)器808、810和812可以是個(gè)人計(jì)算機(jī)、網(wǎng)絡(luò)計(jì)算機(jī)或其他計(jì)算設(shè)備。在所述示例中,服務(wù)器804向客戶機(jī)808-812提供數(shù)據(jù)和應(yīng)用程序,這些數(shù)據(jù)諸如引導(dǎo)文件和操作系統(tǒng)映像??蛻魴C(jī)808、810和812是服務(wù)器804的客戶端。網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)800可以包括未示出的另外的服務(wù)器、客戶機(jī)以及其他設(shè)備。在所述示例中,網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)800是具有網(wǎng)絡(luò)802的因特網(wǎng),其代表采用TCP/IP協(xié)議組來(lái)彼此通信的世界范圍內(nèi)的網(wǎng)絡(luò)和網(wǎng)關(guān)的集合。因特網(wǎng)的核心是主節(jié)點(diǎn)或主計(jì)算機(jī)之間的高速數(shù)據(jù)通信線路組成的主干,包括成千上萬(wàn)的對(duì)數(shù)據(jù)和消息進(jìn)行路由的商業(yè)、政府、教育和其他的計(jì)算機(jī)系統(tǒng)。
當(dāng)然,還可以將網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)800實(shí)現(xiàn)為多種不同類型的網(wǎng)絡(luò),諸如內(nèi)網(wǎng)、局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或無(wú)線網(wǎng)絡(luò)。圖8旨在作為示例,而不是作為對(duì)本發(fā)明的結(jié)構(gòu)性限制。
圖9是包括根據(jù)本發(fā)明的處理器的計(jì)算機(jī)系統(tǒng)機(jī)器的圖示。數(shù)據(jù)處理系統(tǒng)900可以是對(duì)稱多處理器(SMP)系統(tǒng),其包括連接到系統(tǒng)總線906的多個(gè)處理器902和904。作為替代,可以采用單處理器系統(tǒng)。一個(gè)處理器可以是服務(wù)處理器,例如服務(wù)處理器904。同樣連接到系統(tǒng)總線906的還有存儲(chǔ)控制器/緩存908,其提供到本地存儲(chǔ)器909的接口。I/O總線橋910連接到系統(tǒng)總線906并提供到I/O總線912的接口??梢匀鐖D所示將存儲(chǔ)控制器/緩存908與I/O總線橋910集成在一起。
連接到I/O總線912的外圍組件互連(PCI)總線橋914提供到PCI本地總線916的接口。可以將多個(gè)調(diào)制解調(diào)器連接到PCI總線916。典型的PCI總線實(shí)現(xiàn)可支持四個(gè)本地?cái)U(kuò)展插槽或插入連接器(add-in connector)??梢酝ㄟ^(guò)經(jīng)由插入板(add-in board)連接到PCI本地總線916的調(diào)制解調(diào)器918和網(wǎng)絡(luò)適配器920提供到其他計(jì)算機(jī)的通信鏈路。
網(wǎng)絡(luò)適配器920包括物理層982,該物理層982對(duì)將通過(guò)R45連接器輸出到諸如以太網(wǎng)之類的網(wǎng)絡(luò)的模擬信號(hào)進(jìn)行調(diào)節(jié)。媒體接入控制器(MAC)980包括在網(wǎng)絡(luò)適配器920內(nèi)。媒體接入控制器(MAC)980連接到總線916并處理數(shù)字網(wǎng)絡(luò)信號(hào)。MAC 980用作總線916和物理層982之間的接口。
附加的PCI總線橋922和924為附加的PCI總線926和928提供接口,這些接口可以支持附加的調(diào)制解調(diào)器或網(wǎng)絡(luò)適配器。以這種方式,數(shù)據(jù)處理系統(tǒng)900可以連接到多個(gè)網(wǎng)絡(luò)計(jì)算機(jī)。如圖所示,存儲(chǔ)映射(memory-mapped)圖形適配器930和硬盤(pán)932也可以直接或間接地連接到I/O總線912。
本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)意識(shí)到,圖9中示出的硬件是可以改變的。例如,除所述硬件之外,還可以使用諸如光驅(qū)等其他外圍設(shè)備,或者用諸如光驅(qū)等其他外圍設(shè)備來(lái)替代所示硬件。所述示例并非旨在暗示對(duì)本發(fā)明的結(jié)構(gòu)性限制。
圖10是包括系統(tǒng)管理程序的可以實(shí)現(xiàn)本發(fā)明的計(jì)算機(jī)系統(tǒng)機(jī)器的框圖。系統(tǒng)1000優(yōu)選地是對(duì)稱多處理(SMP)服務(wù)器計(jì)算機(jī)系統(tǒng)。SMP服務(wù)器計(jì)算機(jī)系統(tǒng)1000包括能夠映射到用戶應(yīng)用程序(即由用戶應(yīng)用程序暫時(shí)占用)以執(zhí)行該應(yīng)用程序的物理硬件設(shè)備。
SMP服務(wù)器計(jì)算機(jī)系統(tǒng)1000包括物理SMP服務(wù)器1002。物理SMP服務(wù)器1002包括諸如處理器1004、存儲(chǔ)器1006和I/O適配器1008之類的物理硬件設(shè)備。這些物理設(shè)備由系統(tǒng)管理程序1010管理。每一個(gè)處理器1004優(yōu)選地是同時(shí)多線程(SMT)處理器,可以在該處理器上并行地執(zhí)行多個(gè)不同的線程。
虛擬服務(wù)器是物理服務(wù)器的代理,其具有與物理服務(wù)器相同的能力、接口和狀態(tài)。虛擬服務(wù)器由駐留在SMP服務(wù)器計(jì)算機(jī)系統(tǒng)1000上的系統(tǒng)管理程序創(chuàng)建和管理。虛擬服務(wù)器對(duì)其用戶表現(xiàn)為物理SMP服務(wù)器,操作系統(tǒng)、中間件和應(yīng)用軟件在其上運(yùn)行。SMP服務(wù)器計(jì)算機(jī)系統(tǒng)1000包括一個(gè)或多個(gè)虛擬服務(wù)器,諸如虛擬服務(wù)器1012和虛擬服務(wù)器1012a。
每個(gè)虛擬服務(wù)器對(duì)其軟件表現(xiàn)為包括其自己的專用于該虛擬服務(wù)器的虛擬處理器、存儲(chǔ)器和適配器。例如,虛擬服務(wù)器1012包括虛擬處理器1020、虛擬存儲(chǔ)器1022和虛擬I/O適配器1024。虛擬服務(wù)器1012a包括虛擬處理器1020a、虛擬存儲(chǔ)器1022a和虛擬I/O適配器1024a。
每個(gè)虛擬服務(wù)器支持其自己的軟件環(huán)境,包括操作系統(tǒng)、中間件和應(yīng)用程序。每個(gè)虛擬服務(wù)器的軟件環(huán)境可以不同于其他虛擬服務(wù)器的軟件環(huán)境。例如,由每個(gè)虛擬服務(wù)器執(zhí)行的操作系統(tǒng)可以彼此不同。
例如,虛擬服務(wù)器1012支持操作系統(tǒng)1014、中間件1016和應(yīng)用程序1018。虛擬服務(wù)器1012a支持操作系統(tǒng)1014a、中間件1016a和應(yīng)用程序1018a。操作系統(tǒng)1014和操作系統(tǒng)1014a可以是相同的或不同的操作系統(tǒng)。
虛擬服務(wù)器是對(duì)服務(wù)器的邏輯描述,其定義了服務(wù)器環(huán)境,對(duì)用戶來(lái)說(shuō),虛擬服務(wù)器表現(xiàn)得好像是物理服務(wù)器,以與物理服務(wù)器相同的方式被訪問(wèn)和提供信息。為每個(gè)虛擬服務(wù)器定義的虛擬處理器、虛擬存儲(chǔ)器和虛擬I/O適配器是對(duì)物理處理器、物理存儲(chǔ)器和物理I/O適配器的邏輯替代。
系統(tǒng)管理程序1010管理具有其虛擬處理器、虛擬存儲(chǔ)器和虛擬I/O適配器的虛擬服務(wù)器與選定為實(shí)現(xiàn)這些虛擬設(shè)備的物理硬件設(shè)備之間的映射。例如,當(dāng)分發(fā)虛擬處理器時(shí),系統(tǒng)管理程序1010選擇諸如一個(gè)物理處理器1004之類的物理處理器以用于執(zhí)行和實(shí)現(xiàn)該虛擬處理器。系統(tǒng)管理程序1010負(fù)責(zé)選擇物理設(shè)備并將這些物理設(shè)備臨時(shí)地分配給虛擬設(shè)備。
系統(tǒng)管理程序1010負(fù)責(zé)動(dòng)態(tài)地創(chuàng)建、管理和去除虛擬SMP服務(wù)器。系統(tǒng)管理程序1010可以去除或添加整個(gè)虛擬處理器、虛擬I/O適配器和虛擬存儲(chǔ)器模塊(block)。系統(tǒng)管理程序1010還負(fù)責(zé)在不涉及操作系統(tǒng)的情況下進(jìn)行動(dòng)態(tài)資源分配、管理物理資源的時(shí)間共享以及改變映射到處理器的物理資源。系統(tǒng)管理程序1010負(fù)責(zé)將邏輯分區(qū)分發(fā)給系統(tǒng)1000中的一個(gè)或多個(gè)物理處理器內(nèi)核。對(duì)于不希望共享的情形,系統(tǒng)管理程序1010還能夠?qū)⑽锢碣Y源專用為虛擬資源。系統(tǒng)管理程序1010負(fù)責(zé)管理對(duì)物理資源的添加或去除。系統(tǒng)管理程序1010使得這些添加和去除對(duì)于上級(jí)應(yīng)用來(lái)說(shuō)是透明的。
圖11是包括本發(fā)明的邏輯分區(qū)平臺(tái)的框圖。數(shù)據(jù)處理系統(tǒng)1120包括邏輯分區(qū)平臺(tái)1150。平臺(tái)1150包括分區(qū)硬件1152、又稱系統(tǒng)管理程序的分區(qū)管理固件1154以及分區(qū)1156-1159。
操作系統(tǒng)1161-1164存在于分區(qū)1156-1159中。操作系統(tǒng)1161-1164可以是一個(gè)操作系統(tǒng)的多個(gè)副本或同時(shí)運(yùn)行于平臺(tái)1150上的多個(gè)不同種類的操作系統(tǒng)。
服務(wù)分區(qū)1155包括在系統(tǒng)1120中并專用于系統(tǒng)管理程序1154。
分區(qū)硬件1152包括多個(gè)處理器節(jié)點(diǎn)1165-1168、多個(gè)系統(tǒng)存儲(chǔ)單元(system memory unit)1170-1173、多個(gè)輸入/輸出(I/O)適配器1174-1181以及一個(gè)存儲(chǔ)單元(storage unit)1182??梢詫ㄔ谔幚砥鞴?jié)點(diǎn)1165-1168、存儲(chǔ)單元1170-1173、NVRAM存儲(chǔ)器(非易失性隨機(jī)存取存儲(chǔ)器)1183以及I/O適配器1174-1181中的每個(gè)處理器內(nèi)核分配給多個(gè)分區(qū)1156-1159中的一個(gè)分區(qū)。分區(qū)硬件1152還包括服務(wù)處理器1190。諸如設(shè)備之類的非易失性存儲(chǔ)設(shè)備1191可以包括在服務(wù)處理器1190內(nèi)。
分區(qū)管理固件(系統(tǒng)管理程序)1154執(zhí)行分區(qū)1156-1159的多種功能和服務(wù)以創(chuàng)建和加強(qiáng)邏輯分區(qū)平臺(tái)1150的分區(qū)。系統(tǒng)管理程序1154是與下層硬件相同的固件實(shí)現(xiàn)的虛擬機(jī)。固件是存儲(chǔ)于不加電地保存其內(nèi)容的存儲(chǔ)芯片中的“軟件”,這些存儲(chǔ)芯片諸如只讀存儲(chǔ)器(ROM)、可編程ROM(PROM)可擦除可編程ROM(EPROM)、電可擦除可編程只讀存儲(chǔ)器ROM(EEPROM)以及非易失性隨機(jī)存取存儲(chǔ)器(非易失性RAM)。因此,系統(tǒng)管理程序1154可以通過(guò)對(duì)邏輯分區(qū)平臺(tái)1150的所有硬件資源進(jìn)行虛擬化來(lái)同時(shí)執(zhí)行獨(dú)立的OS(操作系統(tǒng))映像1161-1164。系統(tǒng)管理程序1154可以通過(guò)I/O適配器1174-1181以專用模式將I/O設(shè)備連接到單一的虛擬機(jī),以便由一個(gè)OS映像1161-1164所用。
將存儲(chǔ)器1154a保留為專用于系統(tǒng)管理程序1154。
硬件管理控制臺(tái)(HMC)1180可以連接到數(shù)據(jù)處理系統(tǒng)1120中的服務(wù)處理器1190。HMC 1180是連接到服務(wù)處理器1190的獨(dú)立計(jì)算機(jī)系統(tǒng)并且用戶可以使用HMC 1180通過(guò)服務(wù)處理器1190來(lái)控制系統(tǒng)1120的各種功能。
重要的是注意到,雖然已經(jīng)在全功能數(shù)據(jù)處理系統(tǒng)的環(huán)境下對(duì)本發(fā)明進(jìn)行了描述,但本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)意識(shí)到,本發(fā)明的處理能夠以包括指令的計(jì)算機(jī)可讀介質(zhì)的形式以及各種形式分布,并且不管用于實(shí)際執(zhí)行這種分布的信號(hào)承載介質(zhì)的具體類型如何,本發(fā)明都同樣適用。計(jì)算機(jī)可讀介質(zhì)的例子包括可記錄型介質(zhì)和傳輸型介質(zhì),可記錄型介質(zhì)諸如軟盤(pán)、硬盤(pán)驅(qū)動(dòng)器、RAM、CD-ROM、DVD-ROM,傳輸型介質(zhì)諸如模擬通信鏈路和數(shù)字通信鏈路、有線通信鏈路和無(wú)線通信鏈路,無(wú)線通信鏈路采取諸如射頻傳輸和光波傳輸之類的傳輸形式。計(jì)算機(jī)可讀介質(zhì)可以采取編碼格式的形式,可以對(duì)該編碼格式進(jìn)行解碼以便在特定的數(shù)據(jù)處理系統(tǒng)中實(shí)際使用。
至此已經(jīng)出于說(shuō)明和描述的目的提供了本發(fā)明的說(shuō)明書(shū),并且本發(fā)明的說(shuō)明書(shū)并非旨在窮舉和局限于所公開(kāi)的發(fā)明形式。本領(lǐng)域的普通技術(shù)人員可以很容易地想到各種修改和變型。選擇和描述這些實(shí)施例是為了最好地說(shuō)明本發(fā)明的原理和實(shí)際應(yīng)用,并使得本領(lǐng)域的普通技術(shù)人員能夠理解,進(jìn)行了各種修改的本發(fā)明的各種實(shí)施例將適用于預(yù)期的特定應(yīng)用。
權(quán)利要求
1.一種用于在邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)中提供虛擬化時(shí)基的方法,所述方法包括為多個(gè)處理器內(nèi)核中的每一個(gè)處理器內(nèi)核確定時(shí)基,所述時(shí)基用于向所確定的所述時(shí)基所對(duì)應(yīng)的所述多個(gè)處理器內(nèi)核中的一個(gè)處理器內(nèi)核指示當(dāng)前時(shí)間;針對(duì)所述多個(gè)處理器內(nèi)核共同地對(duì)所述時(shí)基進(jìn)行同步,其中所述多個(gè)處理器內(nèi)核中的每一個(gè)處理器內(nèi)核包括其自己的同步時(shí)基副本;對(duì)于所述多個(gè)處理器內(nèi)核中的一個(gè)處理器內(nèi)核,產(chǎn)生不同于所述同步時(shí)基但與所述同步時(shí)基的至少一部分保持同步的一個(gè)虛擬化時(shí)基;所述多個(gè)處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核利用所述虛擬化時(shí)基而不是所述同步時(shí)基來(lái)向所述多個(gè)處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核指示所述當(dāng)前時(shí)間;以及所述同步時(shí)基與所述虛擬化時(shí)基的所述一部分保持共同的同步。
2.根據(jù)權(quán)利要求1所述的方法,還包括采用包括第一組數(shù)位和第二組數(shù)位的多個(gè)數(shù)位來(lái)表示所述同步時(shí)基和所述虛擬化時(shí)基;以及通過(guò)修改所述時(shí)基的所述第一組數(shù)位而不影響所述時(shí)基的所述第二組數(shù)位來(lái)產(chǎn)生所述虛擬化時(shí)基,所述虛擬化時(shí)基包括所述經(jīng)修改的第一組數(shù)位和所述第二組數(shù)位。
3.根據(jù)權(quán)利要求2所述的方法,還包括執(zhí)行“移動(dòng)到專用寄存器”指令,所述指令只修改所述第一組數(shù)位而不影響所述第二組數(shù)位;以及所述指令只向所述第一組數(shù)位中寫(xiě)入新值。
4.根據(jù)權(quán)利要求2所述的方法,還包括在修改所述第一組數(shù)位之后,所述時(shí)基的所述第二組數(shù)位繼續(xù)保持與所述同步時(shí)基的所述第二組數(shù)位同步。
5.根據(jù)權(quán)利要求4所述的方法,還包括在第一機(jī)器中的所述多個(gè)處理器內(nèi)核中的第一個(gè)處理器內(nèi)核上執(zhí)行多個(gè)邏輯分區(qū)中的一個(gè)邏輯分區(qū),所述多個(gè)處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核使用所述同步時(shí)基;為所述多個(gè)處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核確定時(shí)基偏移;以及利用所述時(shí)基偏移來(lái)修改所述時(shí)基的所述第一組數(shù)位。
6.根據(jù)權(quán)利要求5所述的方法,還包括在修改所述第一組數(shù)位之后,確定在修改所述第一組數(shù)位時(shí)由所述第二組數(shù)位代表的所述時(shí)基是否已經(jīng)進(jìn)位到所述第一組數(shù)位;響應(yīng)于確定在修改所述第一組數(shù)位時(shí)由所述第二組數(shù)位代表的所述時(shí)間已經(jīng)進(jìn)位到所述第一組數(shù)位,更新所述第一組數(shù)位以表示所述進(jìn)位。
7.根據(jù)權(quán)利要求1所述的方法,還包括在第一機(jī)器中的所述多個(gè)處理器內(nèi)核中的第一個(gè)處理器內(nèi)核上執(zhí)行第一批邏輯分區(qū)中的一個(gè)邏輯分區(qū),所述多個(gè)處理器內(nèi)核中的所述第一個(gè)處理器內(nèi)核使用所述同步時(shí)基;掛起對(duì)所述第一機(jī)器上的所述多個(gè)邏輯分區(qū)中的所述一個(gè)邏輯分區(qū)的處理;將所述多個(gè)邏輯分區(qū)中的所述一個(gè)邏輯分區(qū)發(fā)送給第二機(jī)器以便在包括于所述第二機(jī)器中的第二批處理器內(nèi)核中的一個(gè)處理器內(nèi)核上進(jìn)行處理;為所述第二批處理器內(nèi)核中的每一個(gè)處理器內(nèi)核確定第二時(shí)基;針對(duì)所述第二批處理器內(nèi)核對(duì)所述第二時(shí)基進(jìn)行共同的同步,其中所述第二批處理器內(nèi)核中的每一個(gè)處理器內(nèi)核包括其自己的第二同步時(shí)基副本;為所述第二批處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核產(chǎn)生第二虛擬化時(shí)基,所述第二虛擬化時(shí)基不同于所述第二同步時(shí)基但與所述第二同步時(shí)基的至少一部分保持同步;以及利用所述第二批處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核來(lái)執(zhí)行所述多個(gè)邏輯分區(qū)中的所述一個(gè)邏輯分區(qū),所述第二批處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核使用所述第二虛擬化時(shí)基。
8.根據(jù)權(quán)利要求7所述的方法,還包括在所述第一機(jī)器上創(chuàng)建所述第一批邏輯分區(qū)中的所述一個(gè)邏輯分區(qū);以及由所述第二機(jī)器為所述第一批邏輯分區(qū)中的所述一個(gè)邏輯分區(qū)產(chǎn)生時(shí)基偏移,所述時(shí)基偏移指示了所述第一機(jī)器中的所述同步時(shí)基與所述第二機(jī)器中的所述第二同步時(shí)基之間的相對(duì)時(shí)間差。
9.根據(jù)權(quán)利要求7所述的方法,還包括在所述第一機(jī)器上創(chuàng)建所述第一批邏輯分區(qū)中的所述一個(gè)邏輯分區(qū);在將所述第一批邏輯分區(qū)中的所述一個(gè)邏輯分區(qū)發(fā)送給所述第二機(jī)器之前,由所述第一機(jī)器為所述第一批邏輯分區(qū)中的所述一個(gè)邏輯分區(qū)產(chǎn)生時(shí)基偏移,將所述時(shí)基偏移初始地設(shè)置為等于零,只要所述第一批邏輯分區(qū)中的所述一個(gè)邏輯分區(qū)是由所述第一機(jī)器處理的并且沒(méi)有發(fā)送給另一機(jī)器,所述時(shí)基偏移就保持不變;由所述第二機(jī)器修改所述時(shí)基偏移以指示所述第一機(jī)器中的所述同步時(shí)基與所述第二機(jī)器中的所述第二同步時(shí)基之間的相對(duì)時(shí)間差;以及只要所述第一批邏輯分區(qū)中的所述一個(gè)邏輯分區(qū)是由所述第二機(jī)器處理的并且沒(méi)有發(fā)送給另一機(jī)器,所述第二機(jī)器中的所述經(jīng)修改的時(shí)基偏移就保持不變。
10.根據(jù)權(quán)利要求1所述的方法,還包括由包括使用所述同步時(shí)基的所述多個(gè)處理器內(nèi)核的第一機(jī)器創(chuàng)建邏輯分區(qū);將所述邏輯分區(qū)發(fā)送給第二機(jī)器以便由所述第二機(jī)器執(zhí)行,所述第二機(jī)器使用第二同步時(shí)基;以及為所述邏輯分區(qū)確定時(shí)基偏移,所述時(shí)基偏移代表了所述第一同步時(shí)基與所述第二同步時(shí)基之間的差值。
11.根據(jù)權(quán)利要求10所述的方法,還包括利用所述時(shí)基偏移來(lái)確定第二虛擬化時(shí)基;以及由所述第二機(jī)器中的處理器內(nèi)核來(lái)執(zhí)行所述邏輯分區(qū),所述處理器內(nèi)核利用所述第二虛擬化時(shí)基而不是所述同步時(shí)基來(lái)向所述第二機(jī)器中的所述處理器內(nèi)核指示當(dāng)前時(shí)間。
12.根據(jù)權(quán)利要求11所述的方法,還包括使所述第一機(jī)器與所述第二機(jī)器同步;確定在將所述邏輯分區(qū)從所述第一機(jī)器發(fā)送到所述第二機(jī)器期間所經(jīng)過(guò)的逝去時(shí)間;以及通過(guò)將所述逝去時(shí)間加到所述時(shí)基偏移上而利用所述逝去時(shí)間來(lái)調(diào)整所述第二虛擬化時(shí)基。
13.根據(jù)權(quán)利要求1所述的方法,還包括利用所述多個(gè)處理器內(nèi)核中的一個(gè)特定的處理器內(nèi)核來(lái)執(zhí)行具有第一時(shí)基偏移的第一邏輯分區(qū);掛起對(duì)所述第一邏輯分區(qū)的執(zhí)行;確定將由所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核執(zhí)行的第二邏輯分區(qū);為所述第二邏輯分區(qū)確定第二時(shí)基偏移;確定所述第一時(shí)基偏移與所述第二時(shí)基偏移之間的差值;通過(guò)修改虛擬化時(shí)基的第一組數(shù)位來(lái)為所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核確定所述虛擬化時(shí)基,其中所述第一組數(shù)位代表所述差值。
14.根據(jù)權(quán)利要求1所述的方法,還包括確定將由所述多個(gè)處理器內(nèi)核中的所述的一個(gè)特定的處理器內(nèi)核執(zhí)行的下一邏輯分區(qū);為所述下一邏輯分區(qū)確定第一時(shí)基偏移;為剛剛完成的由所述多個(gè)處理器內(nèi)核中的所述的一個(gè)特定的處理器內(nèi)核執(zhí)行的前一邏輯分區(qū)確定第二時(shí)基偏移;確定所述第一時(shí)基偏移與所述第二時(shí)基偏移之間的差值;通過(guò)修改虛擬化時(shí)基的第一組數(shù)位來(lái)為所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核確定所述虛擬化時(shí)基,其中所述第一組數(shù)位代表所述差值。
15.根據(jù)權(quán)利要求14所述的方法,還包括在所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核中執(zhí)行機(jī)器檢查;恢復(fù)來(lái)自時(shí)刻寄存器的所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核的同步時(shí)基,所述時(shí)刻寄存器由包括所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核的芯片維護(hù);在發(fā)生所述機(jī)器檢查之后,所述第二時(shí)基偏移是不可知的;確定所述第一時(shí)基偏移與從所述時(shí)刻寄存器中恢復(fù)的時(shí)基之間的差值;通過(guò)修改虛擬化時(shí)基的第一組數(shù)位來(lái)為所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核確定所述虛擬化時(shí)基,其中所述第一組數(shù)位代表所述差值。
16.一種用于在邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)中提供虛擬化時(shí)基的設(shè)備,所述設(shè)備包括為多個(gè)處理器內(nèi)核中的每一個(gè)處理器內(nèi)核確定的時(shí)基,所述時(shí)基用于向所確定的所述時(shí)基所對(duì)應(yīng)的所述多個(gè)處理器內(nèi)核中的一個(gè)處理器內(nèi)核指示當(dāng)前時(shí)間;針對(duì)所述多個(gè)處理器內(nèi)核共同地對(duì)所述時(shí)基進(jìn)行同步,其中所述多個(gè)處理器內(nèi)核中的每一個(gè)處理器內(nèi)核包括其自己的同步時(shí)基副本;對(duì)于所述多個(gè)處理器內(nèi)核中的一個(gè)處理器內(nèi)核產(chǎn)生的一個(gè)虛擬化時(shí)基,其不同于所述同步時(shí)基但與所述同步時(shí)基的至少一部分保持同步;所述多個(gè)處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核利用所述虛擬化時(shí)基而不是所述同步時(shí)基來(lái)向所述多個(gè)處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核指示所述當(dāng)前時(shí)間;以及所述同步時(shí)基與所述虛擬化時(shí)基的所述一部分保持共同的同步。
17.根據(jù)權(quán)利要求16所述的設(shè)備,還包括所述多個(gè)處理器內(nèi)核中的一個(gè)特定的處理器內(nèi)核,其執(zhí)行具有第一時(shí)基偏移的第一邏輯分區(qū);掛起對(duì)所述第一邏輯分區(qū)的執(zhí)行;確定將由所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核執(zhí)行的第二邏輯分區(qū);為所述第二邏輯分區(qū)確定的第二時(shí)基偏移;所述系統(tǒng)包括CPU執(zhí)行碼,所述CPU執(zhí)行碼用于確定所述第一時(shí)基偏移與所述第二時(shí)基偏移之間的差值;所述碼用于通過(guò)修改虛擬化時(shí)基的第一組數(shù)位來(lái)為所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核確定所述虛擬化時(shí)基,其中所述第一組數(shù)位代表所述差值。
18.根據(jù)權(quán)利要求16所述的設(shè)備,還包括用于執(zhí)行下一邏輯分區(qū)的所述多個(gè)處理器內(nèi)核中的一個(gè)特定的處理器內(nèi)核;為所述下一邏輯分區(qū)確定的第一時(shí)基偏移;所述系統(tǒng)包括CPU執(zhí)行碼,所述CPU執(zhí)行碼用于為剛剛完成的由所述多個(gè)處理器內(nèi)核中的所述的一個(gè)特定的處理器內(nèi)核執(zhí)行的前一邏輯分區(qū)確定第二時(shí)基偏移;所述碼用于確定所述第一時(shí)基偏移與所述第二時(shí)基偏移之間的差值;所述碼用于通過(guò)修改虛擬化時(shí)基的第一組數(shù)位來(lái)為所述多個(gè)處理器內(nèi)核中的所述一個(gè)特定的處理器內(nèi)核確定所述虛擬化時(shí)基,其中所述第一組數(shù)位代表所述差值。
19.根據(jù)權(quán)利要求16所述的設(shè)備,還包括在第一機(jī)器中的所述多個(gè)處理器內(nèi)核中的第一個(gè)處理器內(nèi)核,其執(zhí)行第一批邏輯分區(qū)中的一個(gè)邏輯分區(qū),所述多個(gè)處理器內(nèi)核中的所述第一個(gè)處理器內(nèi)核使用所述同步時(shí)基;掛起對(duì)所述第一機(jī)器上的所述多個(gè)邏輯分區(qū)中的所述一個(gè)邏輯分區(qū)的處理;將所述多個(gè)邏輯分區(qū)中的所述一個(gè)邏輯分區(qū)發(fā)送給第二機(jī)器以便在包括于所述第二機(jī)器中的第二批處理器內(nèi)核中的一個(gè)處理器內(nèi)核上進(jìn)行處理;為所述第二批處理器內(nèi)核中的每一個(gè)處理器內(nèi)核確定的第二時(shí)基;針對(duì)所述第二批處理器內(nèi)核對(duì)所述第二時(shí)基進(jìn)行共同的同步,其中所述第二批處理器內(nèi)核中的每一個(gè)處理器內(nèi)核包括其自己的第二同步時(shí)基副本;為所述第二批處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核產(chǎn)生的第二虛擬化時(shí)基,所述第二虛擬化時(shí)基不同于所述第二同步時(shí)基但與所述第二同步時(shí)基的至少一部分保持同步;以及所述第二批處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核執(zhí)行所述多個(gè)邏輯分區(qū)中的所述一個(gè)邏輯分區(qū),所述第二批處理器內(nèi)核中的所述一個(gè)處理器內(nèi)核使用所述第二虛擬化時(shí)基。
20.一種用于在邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)中提供虛擬化時(shí)基的計(jì)算機(jī)程序產(chǎn)品,所述產(chǎn)品包括用于執(zhí)行權(quán)利要求1-13之任意一項(xiàng)中的步驟的指令。
全文摘要
本發(fā)明公開(kāi)了一種用于在邏輯分區(qū)的數(shù)據(jù)處理系統(tǒng)中提供虛擬化時(shí)基的數(shù)據(jù)處理系統(tǒng)中的方法和設(shè)備。為多個(gè)處理器內(nèi)核中的每一個(gè)處理器內(nèi)核確定時(shí)基。該時(shí)基用于向所確定的時(shí)基所對(duì)應(yīng)的一個(gè)處理器內(nèi)核指示當(dāng)前時(shí)間。針對(duì)這些處理器內(nèi)核共同地對(duì)時(shí)基進(jìn)行同步,使得每一個(gè)處理器內(nèi)核包括其自己的同步時(shí)基副本。對(duì)于一個(gè)處理器內(nèi)核,產(chǎn)生不同于同步時(shí)基但與該同步時(shí)基的至少一部分保持同步的一個(gè)虛擬化時(shí)基。處理器內(nèi)核利用虛擬化時(shí)基而不是同步時(shí)基來(lái)向處理器內(nèi)核指示當(dāng)前時(shí)間。同步時(shí)基與虛擬化時(shí)基的一部分保持共同的同步。
文檔編號(hào)G06F1/12GK1855085SQ20061005766
公開(kāi)日2006年11月1日 申請(qǐng)日期2006年2月22日 優(yōu)先權(quán)日2005年4月20日
發(fā)明者威廉·約瑟夫·阿姆斯特朗, 邁克爾·J·科里甘, 內(nèi)爾施·內(nèi)伊阿, 斯科特·巴尼特·斯沃尼 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司