一個或更多示例一般涉及多處理器計算環(huán)境內(nèi)的處理,并且特別涉及更新由多處理器計算環(huán)境使用的頁表中的狀態(tài)指示符。
背景技術(shù):
頁表是用于存儲虛擬地址和物理地址之間的映射的數(shù)據(jù)結(jié)構(gòu)。虛擬地址和虛擬存儲器相關(guān)聯(lián),該虛擬內(nèi)存用于提供額外的物理存儲器。如已知的,物理存儲器是定義了大小的,并且為了使物理存儲器看來比原有的更大,使用虛擬存儲器。虛擬存儲器被映射到物理存儲器,并且提供技術(shù)以使用虛擬地址定位頁表項,該頁表項包括用于訪問物理存儲器的物理地址。
每個頁表項包括狀態(tài)指示符,用于管理項目以及/或者與項目相關(guān)聯(lián)的存儲器的頁面。更進(jìn)一步地,為優(yōu)化性能,在高速緩存如變換索引緩沖(TLB)中維護(hù)頁表項的緩存副本。因此,當(dāng)頁表項修改時,緩存副本要更新或者使無效,以及當(dāng)緩存副本更新時,在頁表中要反映更新。
技術(shù)實現(xiàn)要素:
通過提供用于同步計算環(huán)境中對狀態(tài)指示符的更新的方法、系統(tǒng)和計算機程序產(chǎn)品,克服了先前技術(shù)的缺點,提供了有點。計算機程序產(chǎn)品包括處理電路可讀的計算機可讀存儲媒體以及用于執(zhí)行方法的由處理電路執(zhí)行的存儲的指令。方法包括:例如,由第一處理器從第二處理器接收同步請求,指示第一處理器提交位于存儲器中的地址轉(zhuǎn)換結(jié)構(gòu)的一個或多個條目的一個或多個狀態(tài)指示符的掛起的更新;根據(jù)接收的同步請求,由第一處理器執(zhí)行同步操作以提交一個或多個狀態(tài)指示符的掛起的更新;以及根據(jù)完成同步操作,由第一處理器向第二處理器指示完成。
涉及一個或多個實施例的方法和系統(tǒng)也在這里也說明并且要求權(quán)利。更進(jìn)一步地,涉及一個或多個實施例的服務(wù)也在這里說明并且可以要求權(quán)利。
實現(xiàn)了額外的特征和優(yōu)點。在這里詳細(xì)說明了其它實施例和方面,并且被認(rèn)為是要求權(quán)利的發(fā)明的一部分。
附圖說明
在說明書的結(jié)束處的權(quán)利要求中,作為示例特別指出和明確要求一個或更多方面。從下面與附圖一起做出的詳細(xì)說明,前述的和其它的對象、特征和優(yōu)點是顯然的,在附圖中:
圖1描述合并和使用同步能力的一個或更多方面的計算環(huán)境的一個示例;
圖2描述合并和使用同步能力的一個或更多方面的計算環(huán)境的另一個示例;
圖3A還是描述合并和使用同步能力的一個或更多方面的計算環(huán)境的另一個示例;
圖3B描述圖3A的存儲器的更進(jìn)一步的細(xì)節(jié);
圖4描述頁表項的一個示例;
圖5描述同步指令的一個實現(xiàn);
圖6描述同步邏輯的一個實施例;
圖7描述同步邏輯的另一個實施例;
圖8描述與存儲操作相關(guān)聯(lián)的邏輯的一個實施例;
圖9描述與存儲器指令相關(guān)聯(lián)的邏輯的一個實施例;
圖10描述與存儲器指令相關(guān)聯(lián)的邏輯的另一個實施例;
圖11描述重配置地址空間的一個示例;
圖12描述使頁只讀的一個實施例;
圖13描述使頁只讀的另一個實施例;
圖14描述管理存儲器頁的自由列表的邏輯的一個實施例;
圖15描述根據(jù)終結(jié)進(jìn)程管理存儲器的邏輯的一個實施例;
圖16描述計算機程序產(chǎn)品的一個實施例;
圖17描述云計算節(jié)點的一個實施例;
圖18描述描述云計算環(huán)境的一個實施例;以及
圖19描述提取模型層的一個示例。
具體實現(xiàn)方式
根據(jù)一個或更多方面,提供同步能力,以通過強制緩存的條目中掛起的更新在存儲器中可見(即,在存儲器內(nèi)頁表項中),同步對頁表的更新。作為一個示例,使用同步指令,確保指令完成之后對同步指令之前的緩存條目的更新在存儲器中可見。這里在特定的示例中,同步指令稱為RCsync指令,因為它正在同步頁表的參考(R)和變化(C)指示符的更新。但是,在其它實施例中,對頁表的狀態(tài)指示符的其它更新可以使用相同的指令或不同的指令更新。
在一個實施例中,使用同步以幫助存儲器管理操作,如用于將大部分存儲器變?yōu)橹蛔x的批量操作,管理存儲器頁的自由列表的操作,以及/或者與終結(jié)進(jìn)程相關(guān)聯(lián)的操作。
不同架構(gòu)的計算環(huán)境可以合并和使用這里提供的同步能力的一個或更多方面。例如,基于PowerPC架構(gòu)的環(huán)境,也稱為PowerISA,由國際商業(yè)機器公司提供并在2013年5月3日的Power ISATM Version 2.07中說明,據(jù)此在這里通過引用合并它的全部,可以包括一個或多個方面,以及其它架構(gòu)的計算環(huán)境,如z/Architecture,由國際商業(yè)機器公司提供并在z/Architecture-操作的原理,出版號SA22-7932-09,第10版,2012年9月中說明,據(jù)此在這里通過引用合并它的全部。
POWER,POWER ARCHITECTURE,POWERPC,Z/ARCHITECTURE,IBM,AIX,POWERVM,Z/OS和Z/VM(在這里被引用)是New York Armonk的國際商業(yè)機器公司的注冊商標(biāo)。這里使用的其它名稱可以是國際商業(yè)機器公司或其它公司的注冊商標(biāo)、商標(biāo)或產(chǎn)品名稱。
參考圖1說明合并和使用同步能力的一個或更多方面的計算環(huán)境的一個示例。在一個示例中,計算環(huán)境100包括多個處理器(中央處理單元-CPU)102,并且每個處理器包括例如至少一個存儲器管理單元(MMU)104、一個或更多地址轉(zhuǎn)換結(jié)構(gòu)105、一個或更多高速緩存106和同步單元107以提供這里說明的同步能力。
每個處理器102可通信地連接到包含一個或更多高速緩存110的存儲器部分108(相同的部分或不同的部分),并且連接到輸入/輸出(I/O)子系統(tǒng)112(又是相同的子系統(tǒng)或不同的子系統(tǒng))。I/O子系統(tǒng)112可通信地連接到外部I/O設(shè)備114,該外部I/O設(shè)備114可以包括例如數(shù)據(jù)輸入設(shè)備、傳感器和/或輸出設(shè)備如顯示器。
存儲器管理單元104用于管理存儲器部分108,包括通過提供地址轉(zhuǎn)換幫助訪問存儲器。為改善地址轉(zhuǎn)換,存儲器管理單元利用一個或更多地址轉(zhuǎn)換結(jié)構(gòu)105,包括變換索引緩沖(TLB)和段后備緩沖器(SLB),該TLB和SLB在一個實施例中位于MMU中。在更進(jìn)一步的實施例中,地址轉(zhuǎn)換結(jié)構(gòu)105也包括有效到真實地址轉(zhuǎn)換(ERTA)結(jié)構(gòu),該ERTA結(jié)構(gòu)例如位于處理器中的MMU外。
圖2中描述了合并和使用同步能力的一個或更多方面的計算環(huán)境的更進(jìn)一步的實施例。參考圖2,在一個示例中,計算環(huán)境200包括通過一個或更多控制單元206連接到一個或更多輸入/輸出(I/O)設(shè)備204的中央處理聯(lián)合(CPC)202。中央處理聯(lián)合202包括連接到一個或更多中央處理器(也稱為中央處理單元(CPU))210和I/O子系統(tǒng)212的處理器存儲器208(也稱為主存儲器、主存儲、中央存儲),下面會說明它們中的每一個。
處理器存儲器208包括一個或更多虛機214(一個示例是PowerPC結(jié)構(gòu))或一個或更多邏輯分區(qū)214(一個示例是z/Architecture),以及包括管理程序218和其它處理器固件220的處理器固件216。如這里使用的,固件包括例如處理器的微碼和毫碼。它包括例如更高級別機器代碼的實現(xiàn)中使用的硬件級別的指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,它包括例如通常作為微碼交付的私有代碼,該私有代碼包括被信任的軟件或底層硬件特有的微碼并控制操作系統(tǒng)對系統(tǒng)硬件的訪問。
每個虛機或邏輯分區(qū)214作為單獨的系統(tǒng)起作用,并且包含一個或更多應(yīng)用222以及其中可選地包含常駐操作系統(tǒng)224,每個虛機或邏輯分區(qū)情況可能不同。在一個實施例中,操作系統(tǒng)是z/VM操作系統(tǒng)、z/OS操作系統(tǒng)、z/Linux操作系統(tǒng)、TPF操作系統(tǒng)、AIX操作系統(tǒng)、Power Linux操作系統(tǒng)、IBM i/OS操作系統(tǒng)或者由New York Armonk的國際商業(yè)機器公司提供的另一種操作系統(tǒng);或者由另一個公司提供的另一個操作系統(tǒng)。虛機由管理程序218管理,如由New York Armonk的國際商業(yè)機器公司提供的PowerVM;以及邏輯分區(qū)由管理程序218管理,如由New York Armonk的國際商業(yè)機器公司提供的處理器資源/系統(tǒng)管理器(PR/SM)。
中央處理器210是可分配給虛機或分配給邏輯分區(qū)的物理處理器資源。例如,每個虛機或邏輯分區(qū)214包括一個或更多邏輯處理器,每個邏輯處理器表示可以動態(tài)分配給虛機或分區(qū)的一個或更多物理處理器210的全部或一部分。中央處理器可以包括存儲器管理單元(MMU)230、一個或更多地址轉(zhuǎn)換結(jié)構(gòu)231、至少一個高速緩存232和用于提供這里說明的同步能力的同步單元234。
輸入/輸出子系統(tǒng)212指引輸入/輸出設(shè)備204和主存儲器208之間的信息流。它連接到中央處理聯(lián)合,因為它可以是中央處理聯(lián)合的一部分或從其分離。I/O子系統(tǒng)緩解了中央處理器直接與輸入/輸出設(shè)備通信的任務(wù),并且允許數(shù)據(jù)處理與輸入/輸出處理并發(fā)進(jìn)行。為提供通信,I/O子系統(tǒng)使用I/O通信適配器。有各種類型的通信適配器,包括例如信道、I/O適配器、PCI卡、以太網(wǎng)卡、小型計算機存儲接口(SCSI)卡等。更進(jìn)一步地,在管理到或來自輸入/輸出設(shè)備204的信息流中,I/O子系統(tǒng)使用一個或更多輸入/輸出路徑作為通信鏈路。
參考圖3A說明合并和使用同步能力的一個或更多方面的計算環(huán)境的另一個實施例。在這個示例中,計算環(huán)境300包括例如本地中央處理單元(CPU)302、存儲器304以及通過例如一個或更多總線308和/或其它連接互相連接的一個或更多輸入/輸出設(shè)備和/或接口306。作為示例,計算環(huán)境300可以包括PowerPC處理器或者由New York Armonk的國際商業(yè)機器公司提供的Power Systems服務(wù)器;由California Alto Palo的惠普公司提供的帶有Intel Itanium II處理器的HP Superdome;以及/或者基于由國際商業(yè)機器公司、惠普、英特爾、Oracle或其它公司提供的結(jié)構(gòu)的其它機器。
本地中央處理單元302包括一個或更多本地寄存器310,如環(huán)境內(nèi)處理期間使用的一個或更多一般用途寄存器和/或一個或更多特殊用途寄存器,以及一個或更多地址轉(zhuǎn)換結(jié)構(gòu)311。這些寄存器包括表示在任何特殊時間點的環(huán)境的狀態(tài)的信息。
此外,本地中央處理單元302執(zhí)行存儲器304中存儲的指令和代碼。在一個特殊的示例中,中央處理單元執(zhí)行存儲器304中存儲的仿真器代碼312。這個代碼使在一個結(jié)構(gòu)中配置的計算環(huán)境能夠仿真另一個結(jié)構(gòu)。例如,仿真器代碼312允許基于不同于z/Architecture的結(jié)構(gòu)的機器,如PowerPC處理器、Power System服務(wù)器、HP Superdome服務(wù)器或者其它來仿真z/Architecture并執(zhí)行基于z/Architecture開發(fā)軟件和指令,或者允許基于不同于Power Architecture的結(jié)構(gòu)的機器,如HP Superdome服務(wù)器或者其它來仿真Power Architecture并執(zhí)行基于Power Architecture開發(fā)軟件和指令。
參考圖3B說明涉及仿真器代碼312的更進(jìn)一步的細(xì)節(jié)。存儲器304中存儲的賓客指令350包含軟件指令(例如,與機器指令相關(guān)聯(lián)),開發(fā)該軟件指令以在不同于本地CPU 302的結(jié)構(gòu)中執(zhí)行。例如,賓客指令350可能已經(jīng)被設(shè)計在Power Architecture或z/Architecture處理器102上執(zhí)行,但是正在本地CPU 302上仿真,該本地CPU 302可能是例如Intel Itanium II處理器。在一個示例中,仿真器代碼312包括取指令例程352以從存儲器304獲得一個或更多賓客指令350,并且可選地提供本地緩存給獲得的指令。它也包括指令轉(zhuǎn)換例程354以確定已經(jīng)獲得的賓客指令的類型,并且將賓客指令轉(zhuǎn)換為一個或更多相應(yīng)的本地指令356。這個轉(zhuǎn)換包括:例如,識別要由賓客指令執(zhí)行的功能以及選擇執(zhí)行那個功能的本地指令。
更進(jìn)一步地,仿真器代碼312包括仿真控制例程360以促使執(zhí)行本地指令。仿真控制例程360可以促使本地CPU 302執(zhí)行本地指令的程序,該本地指令仿真一個或更多以前得到的賓客指令,并且在這樣的執(zhí)行結(jié)束時將控制返還給取指令例程以仿真獲得下一個賓客指令或一組賓客指令。本地指令356的執(zhí)行可以包括:從存儲器304裝載數(shù)據(jù)到寄存器;將數(shù)據(jù)從寄存器存儲回存儲器;或者執(zhí)行由轉(zhuǎn)換例程確定的某種類型的結(jié)構(gòu)或邏輯操作。
每個程序例如以軟件實現(xiàn),該軟件在存儲器中存儲并由本地中央處理單元302執(zhí)行。換句話說,一個或更多程序或操作以固件、硬件、軟件或其某種組合實現(xiàn)??梢允褂帽镜谻PU的寄存器310或通過使用存儲器304中的位置仿真仿真處理器的寄存器。在實施例中,賓客指令350、本地指令356和仿真器代碼312可以駐留在相同的存儲器中,或者可以在不同存儲器設(shè)備之間分配。
在實現(xiàn)中,這里說明的同步能力可以由正在執(zhí)行仿真的CPU提供,或者由仿真軟件提供。各種實現(xiàn)是可能的。
上面說明的計算環(huán)境只是可以使用的計算環(huán)境的示例。可以使用其它環(huán)境,包括但不限于:具有多個處理器的其它環(huán)境、其它分區(qū)的環(huán)境和/或其它仿真的環(huán)境;實施例不限于任何一種環(huán)境。
但是,每個計算環(huán)境使用虛擬尋址的方面,包括稱為頁表的數(shù)據(jù)結(jié)構(gòu)。如已知的,物理存儲器是定義了大小的,并且為了使物理存儲器看來比原有的更大,使用虛擬存儲器。虛擬存儲器通過例如定位頁表項(PTE)的hash頁表(HPT)技術(shù)被映射到真實的存儲器。虛擬存儲器的每個段被映射到由有效的段ID(ESID)識別的段ID(SID)項。由程序使用的有效地址包括例如ESID、頁部分和字節(jié)部分,并且用于選擇SID項,該SID項包括ESID值以及虛擬段ID(VSID)值。VSID值表示由hashing算法使用搜索hash頁表的虛擬地址的高位比特。基于VSID的hash過的值用于定位頁表項(PTE)。頁表項包括物理存儲器的頁的地址。為了改善性能,一旦找到PTE,有效地址的頁部分PTE中找到的物理存儲器頁的地址存儲在高速緩存結(jié)構(gòu)中,如變換索引緩沖(TLB),使得對相同有效地址頁的訪問將在TLB中“找到”并避免PTE搜索。在其它實施例中,可以使用其它高速緩存結(jié)構(gòu)代替或者除了TLB之外,以存儲頁表項,包括但不限于有效到真實地址轉(zhuǎn)換(ERAT)結(jié)構(gòu)。
參考圖4說明與頁表項相關(guān)聯(lián)的更進(jìn)一步的細(xì)節(jié)。每個頁表項400映射一個虛擬數(shù)字到一個真實頁號。作為用于Power ISA結(jié)構(gòu)的示例,頁表項包括下面的:
與LP((ARPN||LP)0:59-P)連接的APRN提供真實地址440的第一部分442,以及來自有效地址的字節(jié)部分444提供真實地址的第二部分。
關(guān)于頁表和頁表項的一個實現(xiàn)的更進(jìn)一步的細(xì)節(jié)在2013年5月3日的Power ISATMVersion 2.07規(guī)范中說明,該規(guī)范由國際商業(yè)機器公司提供,并且在這里通過引用合并它的全部。
使用hash頁表轉(zhuǎn)換地址只是轉(zhuǎn)換技術(shù)的一個示例。其它地址轉(zhuǎn)換方法,包括使用轉(zhuǎn)換表的層次的那些,在下面的出版物中說明:z/Architecture-操作的原理,出版號SA22-7932-09,第10版,2012年9月,以及Intel Itanium Architecture軟件開發(fā)者手冊第2卷:系統(tǒng)結(jié)構(gòu),文檔號:245318,2010年10月,每個因此在這里通過引用合并它的全部。在一個示例中,對于z/Architecture,表的層次稱為動態(tài)地址轉(zhuǎn)換(DAT)表;以及對于Power ISA,表稱為根表。
如這里說明的,提供同步能力以同步對頁表項的更新。參考圖5說明可以使用的這里稱為RCsync的同步指令的一個示例。在一個實現(xiàn)中,RCsync指令500包括:指示同步操作的操作碼502a、502b;用于指示同步操作的類型的L域504(例如,L=3指示RCsync操作);以及元素障礙(E)域506,在這個實施例中該域是0。在其它實施例中,RCsync指令有它自己的opcode,而不是對多種同步操作使用通用的opcode并通過L域指定RCsync。很多變化是可能的。
參考圖6說明使用例如RCsync的同步邏輯的一個實施例。在一個實施例中,多個處理器正在執(zhí)行這個邏輯,包括:本地處理器和一個或更多遠(yuǎn)程處理器,該本地處理器是初始化同步進(jìn)程的處理器,該遠(yuǎn)程處理器正在執(zhí)行響應(yīng)同步進(jìn)程初始化的處理。
參考圖6,最初,本地處理器發(fā)起RCsync指令,步驟600,該本地處理器廣播RCsync請求給一個或更多遠(yuǎn)程處理器,步驟602。在實施例中,作為示例,RCsync請求被廣播給相同邏輯分區(qū)(LPAR)、虛機(VM)或其它組中的所有處理器;給使用相同地址空間的處理器;或者給配置的所有處理器。在一個特殊的示例中,如果廣播發(fā)給所有處理器,那么使用LPAR id、VM id或其它標(biāo)識符發(fā)送它,以及如果接收請求的處理器不是LPAR、VM或其它組的一部分,那么它立即確認(rèn)完成。
廣播請求之后,本地處理器等待遠(yuǎn)程處理器的確認(rèn)它們已經(jīng)完成RCsync處理,步驟604。在可供選擇的實施例中,本地處理器檢查它是否已經(jīng)連續(xù)地或以預(yù)先確定的間隔收到確認(rèn)。如果它還未從向其廣播請求的遠(yuǎn)程處理器收到確認(rèn),查詢606,那么它繼續(xù)等待,步驟604。否則,同步完成,這意味著存儲器中的頁表項已經(jīng)更新以反映緩存的項(例如,TLB)的變化(例如,更新的R/C指示符),步驟608。
在每個遠(yuǎn)程處理器上,從本地處理器接收RCsync請求,步驟620,并且標(biāo)記所有掛起的參考和變化(R/C)更新請求,步驟622。例如,當(dāng)參考和/或變化(R/C)更新發(fā)生在高速緩存(例如TLB)中時,掛起的更新被放到存儲隊列中用于逐漸寫到存儲器。(在更進(jìn)一步的實施例中,掛起的R/C更新存儲在獨立的R/C更新隊列中。)因此,當(dāng)接收到RCsync請求時,在隊列中標(biāo)記RCsync請求之前到來的每個更新,并且發(fā)起提交掛起的對存儲器的地址轉(zhuǎn)換緩存更新。更進(jìn)一步地,在一個實施例中,執(zhí)行可選的步驟,在該步驟中處理標(biāo)記的R/C更新請求的加速的寫回,步驟624。
在更進(jìn)一步的實施例中,對接收RCsync請求響應(yīng),并且在執(zhí)行標(biāo)記之前,如果沒有掛起的更新的隊列,那么創(chuàng)建一個;以及/或者可以執(zhí)行處理以確保隊列最新。
遠(yuǎn)程處理器然后等待,直到至少一個存儲隊列的R/C更新被寫到存儲器(例如,PTE),步驟626。在可供選擇的實現(xiàn)中,遠(yuǎn)程處理器可以不斷地檢查是否更新被寫到存儲器或者以預(yù)先確定的間隔檢查。至少一個R/C更新被寫到存儲器之后,遠(yuǎn)程處理器檢查是否所有標(biāo)記的更新被寫到存儲器,查詢628。如果所有標(biāo)記的R/C更新未被寫到存儲器,查詢628,那么處理器繼續(xù)等待,步驟626。否則,指示遠(yuǎn)程RCsync的完成給請求者,即本地處理器,步驟630。
在一個可供選擇的實施例中,在步驟622,技術(shù)可以確定存儲或其它隊列中R/C更新項的數(shù)目,并且等待在步驟626中要處理的被計算的項的數(shù)目。
仍然在另一個可供選擇的實施例中,額外的對存儲或其它隊列的存儲器請求的產(chǎn)生在步驟622中可選地被停止,并且處理器等待,直到指示RCsync請求完成之前存儲或其它隊列在步驟626中為空。
除了上面的,在一個實施例中,本地處理器也在本地執(zhí)行同步,確保本地緩存的頁表(例如,本地TLB)中的任何變化被寫到存儲器(例如,到PTE的存儲器中副本)。
參考圖7說明使用例如RCsync的同步邏輯的另一個實施例。在一個實施例中,多個處理器正在執(zhí)行這個邏輯,包括本地處理器和一個或更多遠(yuǎn)程處理器,該本地處理器是發(fā)起同步進(jìn)程的處理器,該遠(yuǎn)程處理器正在執(zhí)行響應(yīng)同步進(jìn)程的發(fā)起的處理。
參考圖7,最初,本地處理器發(fā)起RCsync指令,步驟700,該本地處理器向一個或更多遠(yuǎn)程處理器(例如,系統(tǒng)或其子集中所有遠(yuǎn)程處理器)廣播RCsync請求,步驟702。本地處理器然后等待來自遠(yuǎn)程處理器的確認(rèn):它們完成了RCsync處理,步驟704。在可供選擇的實施例中,本地處理器檢查它是否連續(xù)地或以預(yù)先確定的間隔接收到確認(rèn)。如果它還未從向其廣播請求的所有遠(yuǎn)程處理器接收到確認(rèn),查詢706,那么它繼續(xù)等待,步驟704.否則,同步完成,步驟708。
在每個遠(yuǎn)程處理器上,從本地處理器接收到RCsync請求,步驟720,并且標(biāo)記被放置在存儲隊列中而不是標(biāo)記存儲隊列中每個飛行中的R/C更新請求,然后假定按順序處理隊列,當(dāng)標(biāo)記來到對頭時,它知道RCsync被接收到之前到來的所有更新被處理,步驟722。
通過開始將R/C更新寫到頁表處理隊列,步驟723。更進(jìn)一步地,在一個實施例中,執(zhí)行可選的步驟,在該步驟中處理R/C更新請求的加速的寫回,步驟724。
在更進(jìn)一步的實施例中,對接收RCsync請求響應(yīng),并且在執(zhí)行標(biāo)記之前,如果沒有掛起的更新的隊列,那么創(chuàng)建一個;以及/或者可以執(zhí)行處理以確保隊列最新。
遠(yuǎn)程處理器然后等待,直到來到隊列的前端或頭,步驟726。根據(jù)來到對頭的標(biāo)記,遠(yuǎn)程處理器向請求者(即,本地處理器)指示遠(yuǎn)程RCsync完成,步驟728。
在一個實施例中,技術(shù)可以確定步驟722中存儲或其它隊列中項數(shù),并且等待在步驟726中要處理的被計算的項的數(shù)目。
仍然在另一個可供選擇的實施例中,額外的對存儲或其它隊列的存儲器請求的產(chǎn)生在步驟722中可選地被停止,并且處理器等待,直到指示RCsync請求完成之前存儲或其它隊列在步驟726中為空。
此外,除了上面的,在一個實施例中,本地處理器也在本地執(zhí)行同步,確保本地高速緩存的頁表(例如,本地TLB)中的任何變化被寫到存儲器(例如,到PTE的存儲器中副本)。
在一個方面,RCsync確保掛起的遠(yuǎn)程參考和變化(R/C)更新已經(jīng)在所有確定要接收RCsync請求的遠(yuǎn)程節(jié)點完成。在一個實現(xiàn)中,當(dāng)發(fā)出RCsync時,對應(yīng)于RCsync之前的存儲器狀態(tài)R/C更新已經(jīng)完成。在完成RCsync之后,對每個頁表項,只有反映RCsync時或之后的頁表項的值的頁表項更新是可能的。因此,如果RCsync之前設(shè)置頁表項為只讀,但是以前是可寫的,那么RCsync強制頁表項中任何C指示符設(shè)置,并且完成RCsync之后不對C指示符做更進(jìn)一步的改變,因為新的PTE值禁止它。但是,如果在TLB中設(shè)置C指示符,指示寫已經(jīng)發(fā)生,那么將來使用TLB的寫是可能的,直到TLB是無效的或被更新。類似地,如果設(shè)置PTE為無效,那么RCsync操作之后沒有R/C更新發(fā)生,因為新的PTE值禁止它。
根據(jù)現(xiàn)有的存儲器系統(tǒng),當(dāng)緩存的TLB項從為了允許讀取被從緩存轉(zhuǎn)變?yōu)樵试S寫時,頁表項(它的有效和/或?qū)懺试S)在給TLB項添加寫允許之前被讀取和更新。因此,一旦存儲器中PTE項已經(jīng)更新為無效和/或沒有寫允許,TLB項不觸發(fā)C指示符更新。
參考圖8說明與存儲操作以及喚醒使用RCsync中使用緩存項相關(guān)聯(lián)的邏輯的實施例。存儲操作之前和或之后可以執(zhí)行RCsync,并且因此不管什么時候執(zhí)行RCsync都使用這個邏輯。
參考圖8,最初,處理器接收到存儲指令,在該指令中數(shù)據(jù)被寫到存儲器中的特定頁,步驟800。根據(jù)接收的存儲指令,處理器在一個或更多地址轉(zhuǎn)換結(jié)構(gòu)中執(zhí)行查找,如變換索引緩沖(TLB)或有效地址到真實地址轉(zhuǎn)換結(jié)構(gòu)(ERAT),以確定是否對應(yīng)于頁的轉(zhuǎn)換項已經(jīng)緩存,步驟802。如果緩存項如TLB和/或ERAT項存在,查詢804,那么關(guān)于下述做進(jìn)一步確定:是否緩存項顯示變化指示符為更新的(例如,C=1),指示這個頁以前已經(jīng)被寫,查詢806。如果它被設(shè)置(例如,C=1),那么在地址轉(zhuǎn)換中使用該項以提供真實地址,步驟808,并且處理隨著存儲前進(jìn),步驟810。
返回到查詢804,但是如果緩存項未存在,那么通過從存儲器檢索至少一個有關(guān)頁表項創(chuàng)建對應(yīng)于當(dāng)前頁轉(zhuǎn)換的緩存項,步驟814。其后,檢查頁表項的有效性和寫允許以得到最新的讀/寫狀態(tài),步驟816。假定頁表項是有效的并且已經(jīng)授予寫允許,那么對應(yīng)于當(dāng)前頁轉(zhuǎn)換的緩存項中的變化指示符轉(zhuǎn)換這個,例如C=1(參考指示符和/或其它指示符也可選地在TLB中設(shè)置),步驟818。在一個實施例中,在存儲隊列中輸入寫更新以更新至少C比特以指示當(dāng)前頁已經(jīng)修改,即C=1。
然后添加更新的緩存項到一個或更多高速緩存(例如,TLB和/或ERAT),步驟820,并且處理在步驟808繼續(xù)。但是,在上面的處理中,如果要么頁表項是無效的,那么未授予寫允許,那么存儲不前進(jìn),以及可選地呈現(xiàn)錯誤。
返回到查詢806,如果緩存項不顯示變化指示符為寫設(shè)置,那么使緩存項無效(例如,緩存項中的V指示符設(shè)置為0或項被刪除)或者被忽略,步驟830,并且處理前進(jìn)到步驟814。
除了上面的存儲處理,RCsync指令之前或之后也可以執(zhí)行其它處理。即,RCsync之前或之后可以發(fā)出存儲器指令(例如加載、存儲等)。在一個特殊的示例中,在允許緩存項預(yù)取的實現(xiàn)中,如TLB或ERAT項,執(zhí)行邏輯以檢查參考指示符,從而確認(rèn)第一次使用的緩存項的有效性。在其它實施例中,TLB項在它們第一次使用以對應(yīng)于存儲器指令執(zhí)行存儲器地址轉(zhuǎn)換之前不預(yù)取。
參考圖9說明處理存儲器指令的邏輯的實施例。在一個示例中,如果允許緩存項(例如,TLB項、ERAT項等)的預(yù)取而不設(shè)置參考指示符(例如,R=1),那么使用這個邏輯。
參考圖9,最初,處理器接收到訪問所選擇的存儲器頁的存儲器指令,步驟900。根據(jù)接收到的存儲器指令,處理器在高速緩存如TLB或ERAT中執(zhí)行查找以確定是否以前已經(jīng)緩存對應(yīng)于要訪問的頁地址轉(zhuǎn)換,步驟902。如果對應(yīng)于要訪問的存儲器頁的項在高速緩存中存在,查詢904,那么關(guān)于下述做進(jìn)一步確定:是否緩存項指示參考指示符被更新(例如,R=1),指示這個頁以前已經(jīng)被訪問,查詢906。如果它未指示參考指示符被設(shè)置,那么使用緩存項執(zhí)行地址轉(zhuǎn)換以及計算用于存儲器訪問的真實地址,步驟908。然后處理隨著存儲器指令前進(jìn),步驟910。
返回到查詢904,如果緩存項未存在,那么通過從存儲器檢索有關(guān)的頁表項創(chuàng)建緩存項,步驟914。其后,如果存儲器指令是存儲指令,那么檢查頁表項的有效性以及可選地寫允許以得到最新的狀態(tài),步驟916。假定頁表項是有效的,參考指示符是更新的,例如R=1(以及可選地,變化指示符和/或頁表項的其它指示符),步驟918。在至少一個實施例中,在存儲隊列中輸入寫更新以更新至少R比特以指示當(dāng)前頁已經(jīng)修改,即R=1。在另一個實施例中,響應(yīng)正在執(zhí)行的存儲操作,C=1也可以同時更新。
然后添加對應(yīng)于用于當(dāng)前頁地址的地址轉(zhuǎn)換的更新的緩存到一個或更多高速緩存(例如,TLB和/或ERAT),并且參考指示符(和/或可選地,一個或更多其它指示符)被指示為更新的,步驟920。然后處理在步驟908繼續(xù)。但是,在上面的處理中,如果頁表項是無效的,存儲器指令不前進(jìn),以及可選地,呈現(xiàn)錯誤。
返回到查詢906,如果緩存項未顯示參考指示符為被設(shè)置,那么使緩存項無效或被忽略,步驟930,以及處理到步驟914繼續(xù)。
參考圖10說明與處理存儲器指令相關(guān)聯(lián)的邏輯的另一個實施例。在一個示例中,如果允許緩存項(例如TLB項、ERAT項等)的預(yù)取而不設(shè)置參考指示符(例如R=1),那么使用這個邏輯。
參考圖10,最初,處理器接收到訪問所選擇的存儲器頁的存儲器指令,步驟1000。根據(jù)接收到的存儲器指令,處理器在高速緩存如TLB或ERAT中執(zhí)行查找以確定是否以前已經(jīng)緩存要訪問的頁,步驟1002。如果對應(yīng)于要訪問的存儲器頁的項在高速緩存中存在,查詢1004,那么關(guān)于下述做進(jìn)一步確定:是否緩存項指示參考指示符被更新(例如,R=1),指示這個頁以前已經(jīng)被訪問,查詢1006。如果它未指示參考指示符被設(shè)置,那么使用緩存項執(zhí)行地址轉(zhuǎn)換以及計算用于存儲器訪問的真實地址,步驟1008。然后處理隨著存儲器指令前進(jìn),步驟1010。更進(jìn)一步地,在一個實施例中,如果希望,那么操作是合法的,步驟1012。
返回到查詢1004,如果緩存項未存在,那么通過從存儲器檢索有關(guān)頁表項創(chuàng)建緩存項,步驟1014。其后,如果存儲器指令是存儲指令,那么檢查頁表項的有效性和寫允許以得到最新的狀態(tài),步驟1016。假定頁表項是有效的,參考指示符是更新的,例如R=1(以及可選地,變化指示符和/或頁表項的其它指示符),步驟1018。
然后添加更新的緩存項到一個或更多高速緩存(例如,TLB和/或ERAT),并且參考指示符(和/或可選地,一個或更多其它指示符)被指示為更新的,步驟1020。然后處理在步驟1008繼續(xù)。但是,在上面的處理中,如果頁表項是無效的,存儲器指令不前進(jìn),以及可選地,呈現(xiàn)錯誤。
返回到查詢1006,如果緩存項未顯示參考指示符為更新的,那么從要在驗證中使用的存儲器檢索頁表項,這個與一個或更多的步驟1008和1010并行進(jìn)行,該一個或更多的步驟1008和1010與頁項的并發(fā)驗證并行地使用緩存項執(zhí)行處理步驟,步驟1030。例如,如果緩存項未顯示參考指示符為更新的,那么處理器發(fā)起并行的驗證(該驗證包含步驟1014、1016、1018、1020,并且并行執(zhí)行步驟1008和1010。然后,如果這是有效的項,那么處理應(yīng)該被驗證(即,應(yīng)該允許完成在步驟1008和1010做的工作)。然后處理繼續(xù)到步驟1012,在該步驟如果使能位于步驟1002的緩存項,那么操作被驗證。
根據(jù)一個或更多方面,處理器執(zhí)行同步操作,從而早晚強制對頁表項掛起的更新。即,在弱有序的存儲器系統(tǒng)中,頁表項可以最終被更新,但是沒有關(guān)于更新它們的時間的保證。因此,同步處理根據(jù)接收的同步指令強制更新。更進(jìn)一步地,在一個實現(xiàn)中,執(zhí)行同步而不要求使各高速緩存和/或頁表項無效。
存在可以使用這樣的同步進(jìn)程的很多情況,包括存儲器頁上執(zhí)行的批量操作,作為示例,如重配置、管理存儲器頁的自由列表以及進(jìn)程終結(jié)時執(zhí)行拆卸。執(zhí)行同步以強制頁表項的更新,以及因此在例如要使無效(例如C=1)的項中提供選擇性,而不是使所有項無效。
可以使用同步操作的示例情況是重配置地址空間,如參考圖11說明的。參考圖11,最初,本地處理器發(fā)出RCsync操作以強制具有任何掛起的R/C更新(或者在其它示例中的其它狀態(tài)更新)的頁表項的更新,步驟1100。其后,從執(zhí)行RCsync指令的本地處理器接收到RCsync請求的每個遠(yuǎn)程處理器執(zhí)行如這里說明的同步操作。與正在進(jìn)行的RCsync操作并行地,步驟1100,本地處理器使用例如TLBIEL指令或本地IPTE指令(例如,當(dāng)安裝了本地TLB清除工具并且M4中的LC比特是1時的IPTE指令),請求每個遠(yuǎn)程處理器執(zhí)行對應(yīng)于遠(yuǎn)程處理器的一個或更多高速緩存中的多個頁表項的批量無效化,步驟1102a到1102c。作為示例,項的無效化包括設(shè)置項中的有效指示符為特殊值(例如,V=0);或者否則使項不可用等。
完成由本地處理器請求的遠(yuǎn)程RCsync操作之后,每個遠(yuǎn)程處理器發(fā)送指示給本地處理器,指示RCsync操作的完成,不管各遠(yuǎn)程處理器上的本地?zé)o效化是否完成,步驟1103。根據(jù)本地處理器接收到遠(yuǎn)程處理器已經(jīng)完成RCsync同步操作的指示,本地處理器繼續(xù)通過更新存儲器中一個或更多頁表項重配置地址空間以反映重配置的地址空間的狀態(tài),以及對處理器的緩存項執(zhí)行本地?zé)o效化操作,步驟1104,從而確保沒有對應(yīng)于重配置之前的地址空間的C=過時的緩存項存儲在本地處理器上。當(dāng)遠(yuǎn)程處理器完成無效化時,遠(yuǎn)程處理器等待地址重配置完成,例如通過步驟1106。其后,在本地和遠(yuǎn)程處理器上可以重新開始執(zhí)行,步驟1106。通過執(zhí)行RCsync,在一個實施例中,本地處理器不需要等待直到遠(yuǎn)程處理器上的本地?zé)o效化已經(jīng)完成,而是接收到遠(yuǎn)程處理器已經(jīng)完成RCsync同步處理的指示之后可以并行進(jìn)行,并且因此存儲在存儲器中的頁表項包含R和C狀態(tài)指示符的最近狀態(tài)以及可選地PTE中包含的其它信息,該PTE根據(jù)一個或更多方面由遠(yuǎn)程處理器更新并可以用RCsync同步。
在一個特殊的示例中,可以使用同步操作重配置地址空間以對應(yīng)只讀地址空間。根據(jù)一個實施例,已經(jīng)被寫的頁是已知的,所以它們可以被跟蹤、寫到磁盤等。作為特殊的示例,因為技術(shù)的原因,如分區(qū)遷移以及寫時復(fù)制技術(shù)的使用,使地址空間只讀。例如,使用寫時復(fù)制,用于Unix操作系統(tǒng)中的fork()操作以及用于其它操作。在一個這樣的實施例中,使用寫時復(fù)制大的存儲器區(qū)域而不會招致與復(fù)制對應(yīng)于這樣的區(qū)域的所有存儲器頁相關(guān)聯(lián)的長初始延遲。例如,作為一個示例,使用寫時復(fù)制技術(shù),使整個存儲器只讀,允許多個進(jìn)程共享存儲器頁。然后,當(dāng)特殊的進(jìn)程希望寫它的存儲器空間的副本到特定的頁時,在允許進(jìn)程開始寫到這樣的頁之前,實現(xiàn)寫時復(fù)制的系統(tǒng)功能復(fù)制那頁,并且使它可寫。
參考圖12說明使頁只讀的邏輯的一個實施例。在一個示例中,本地處理器(即,想使地址空間只讀的那個)更新對應(yīng)于被使只讀的存儲器頁的頁表項以指示只讀(例如,設(shè)置圖4的標(biāo)記pp的頁保護(hù)比特,即頁表項的第二個雙字的比特0、62和63,以不準(zhǔn)許寫到主題頁),步驟1200,然后執(zhí)行同步操作,如RCsync以同步(例如,擠出)所有參考和變化指示符,用于這些指示符的更新可能處于飛行中,直到發(fā)出RCsync操作的點,步驟1202。
遠(yuǎn)程處理器接收到RCsync操作,繼續(xù)進(jìn)行它,如上所述,步驟1204,并且指示完成。步驟1206。其它遠(yuǎn)程處理也繼續(xù),步驟1208。
本地處理器接收到完成指示,以及同步操作由遠(yuǎn)程處理器完成之后,本地處理器具有遠(yuǎn)程存入頁(例如,那些具有C=1的)的精確列表。更進(jìn)一步地,遠(yuǎn)程處理器不能使用新的頁用于存儲操作,因為頁表項被設(shè)置為只讀,并且因此使例如圖8中說明的變化指示符檢查技術(shù)失敗。
本地處理器現(xiàn)在使對應(yīng)于具有設(shè)置的變化指示符(例如,C=1)的頁表項的地址轉(zhuǎn)換緩存項無效,步驟1210。例如,本地處理器使它自己本地的項無效,并且廣播指示給遠(yuǎn)程處理器,指揮遠(yuǎn)程處理器使它們自己的緩存項無效。這些緩存的頁表項對應(yīng)于所有頁,該頁在步驟1200中的更新之后可能仍然由遠(yuǎn)程處理器寫更新(因為存入其它頁的企圖將使圖8的技術(shù)失敗),并且表示較小集合的頁要被無效化,如果不得不被無效化而所有頁表項中不存在精確的R/C信息。這些緩存的頁表項的無效化可以使用廣播全局硬件無效指令如TLBIE或IPTE,或者包括廣播單個批量無效化請求的軟件序列(例如,使用處理器間中斷工具),連同軟件協(xié)調(diào)的每個遠(yuǎn)程處理器上的本地緩存無效化,例如使用TLBIEL指令或本地IPTE指令響應(yīng)要無效化的頁的列表。此外,處理具有設(shè)置了的變化指示符的頁,如將頁寫到磁盤等。
在另一個實施例中,對應(yīng)于步驟1200的第一頁表項更新技術(shù)在執(zhí)行RCsync之前更新所有要無效化的頁表項,以及第二處理步驟1210更新為只讀,以便更進(jìn)一步同步對正在由遠(yuǎn)程處理器執(zhí)行的頁表項的更新以響應(yīng)RCsync。
參考圖13說明使頁只讀的邏輯的另一個實施例。在一個示例中,本地處理器(即,想使地址空間只讀的那個)發(fā)出第一同步操作,如RCsync指令給遠(yuǎn)程處理器,步驟1300。遠(yuǎn)程處理器接收到同步操作并且繼續(xù)它,如上所述,步驟1302,然后發(fā)送指示完成的指示,步驟1304。更進(jìn)一步地,在遠(yuǎn)程處理器的處理繼續(xù),步驟1305。(在另一個實施例中,不執(zhí)行第一同步操作,如圖12中所示)。
根據(jù)從遠(yuǎn)程處理器接收到的用于同步操作的完成指示,本地處理器更新對應(yīng)于要使只讀的存儲器頁的頁表項以指示只讀,以及使具有設(shè)置了的變化指示符(例如,C=1)的緩存項無效化,如上所述,并且調(diào)度用于那些頁的處理,步驟1306。在修改的頁的處理的一個實施例中,修改的頁寫到外部存儲器(例如,如硬盤或閃存)。其后,第二同步操作如RCsync由本地處理器發(fā)出以同步(例如,擠出)所有剩余頁表R和C狀態(tài)更新,該更新從初始RCsync已經(jīng)存在,步驟1300,該初始RCsync處于飛行中直到發(fā)出第二同步操作的點,步驟1308。
如上所述,遠(yuǎn)程處理器接收到RCsync操作并處理它,步驟1310,,以及指示完成,步驟1311。其它遠(yuǎn)程處理也繼續(xù),步驟1312。第二同步操作由遠(yuǎn)程處理器完成之后,本地處理器擁有了遠(yuǎn)程存入頁(例如(C=1)的精確列表。更進(jìn)一步地,遠(yuǎn)程處理器不能使用新的頁用于存儲,因為頁表項被設(shè)置為只讀,并且因此使變化指示符檢查技術(shù)失敗。
如這里說明的,本地處理器使具有設(shè)置了的變化指示符(例如(C=1)的緩存項無效,步驟1314。根據(jù)一個或更多方面,這個第二處理步驟,步驟1314,對應(yīng)于任何在第一和第二RCsync之間已經(jīng)修改的頁的處理。在這個實施例中,多數(shù)更新在步驟1306期間可以發(fā)起并被無效化,并且其它處理(如對應(yīng)于寫修改的頁到外部存儲器的I/O操作)可以與RCsync的處理重疊,步驟1308。另外,處理具有設(shè)置了變化指示符的頁,如寫頁到磁盤等。
此外,通過執(zhí)行TLBIE或IPTE連同無效化請求的硬件廣播,或者通過本地和遠(yuǎn)程處理器中的每個上正在執(zhí)行的的軟件同步的本地?zé)o效化,可以執(zhí)行無效化。
在至少一個可供替換的實施例中,步驟1306通過設(shè)置有效的指示符為無效指示存儲器中頁表項被無效化,以及第二步驟1314更新頁表項到只讀狀態(tài),例如為了更進(jìn)一步同步頁表項更新。
在其它使頁只讀的實施例中,首先可以使頁表項無效,然后可以標(biāo)記項為只讀。
同步操作的另一個用途是更新存儲器頁的自由列表。在使用虛擬存儲器的系統(tǒng)中,操作系統(tǒng)保留存儲器頁的自由列表,例如當(dāng)頁被頁入、分配緩存器或由應(yīng)用請求新的頁時,使用該自由列表。保留自由列表的目標(biāo)是將很少使用的頁放到自由列表。因此,操作系統(tǒng)尋找具有R=0的頁或檢查額外的參考信息用于更小粒度的處理。在一個實施例中,額外的信息對應(yīng)于最后引用(例如,對頁的讀或?qū)?的時間戳,或者指示是否引用已經(jīng)在多個時間片中的每個發(fā)生的比特向量,比特向量的每個比特對應(yīng)于一個這樣的時間片。
參考圖14說明了使用同步操作管理自由列表的一個實施例。最初,本地處理器(例如,正在管理自由列表的處理器)發(fā)出第一同步操作,如RCSync以便得到最新信息,步驟1400。如上所述,接收到同步請求的遠(yuǎn)程處理器處理它,步驟1402,然后指示完成,步驟1404。另外,遠(yuǎn)程處理繼續(xù),步驟1406。(在另一個實施例中,不執(zhí)行這個第一同步操作)。
根據(jù)從要執(zhí)行同步操作的所有遠(yuǎn)程處理器接收到完成指示,本地處理器執(zhí)行一些任務(wù),步驟1408。這些任務(wù)包括:例如,識別用于自由列表的一個或更多頁,如參考指示符未設(shè)置(例如,R=0)的那些頁;可選地,如果變化指示符被設(shè)置(例如,C=1),那么調(diào)度一個或更多頁用于寫磁盤;在頁表項中設(shè)置一個或更多頁為無效(或者在自由列表上標(biāo)記它們這樣);以及/或者如這里說明的(例如,使用IPTE、TLBIE),對任何緩存地址轉(zhuǎn)換項執(zhí)行無效化,該緩存地址轉(zhuǎn)換項對應(yīng)于需要無效化的頁。
其后,本地處理器發(fā)出第二同步操作如RCsync給遠(yuǎn)程處理器,步驟1410。遠(yuǎn)程處理器處理第二同步操作,步驟1412,并且指示完成,步驟1414。更進(jìn)一步地,其它遠(yuǎn)程處理繼續(xù),步驟1416。
由要執(zhí)行同步操作的遠(yuǎn)程處理器完成同步操作之后,本地處理器擁有了被遠(yuǎn)程使用的頁的精確列表。如這里說明的,本地處理器現(xiàn)在只無效化具有設(shè)置了的變化或參考指示符(例如,C=1或R=1)的頁表項和/或緩存項,步驟1418。這是對于從第一同步操作變到第二同步操作的頁的清理。在一個實施例中,只有已知已經(jīng)由一個或更多處理器引用并且可能在一個或更多轉(zhuǎn)換緩存器中的頁需要無效化,因此減少了對頁無效化的需要。此外,處理具有設(shè)置了的變化指示符的頁,如將頁寫到磁盤等。
使用同步處理的另一個示例是在進(jìn)程結(jié)束時發(fā)生的進(jìn)程拆除中。在進(jìn)程拆除中,如果這個進(jìn)程是唯一的用戶,那么那個進(jìn)程的所有頁要無效化或放到自由列表上。同樣在進(jìn)程拆除中,如果頁要寫回,那么發(fā)起寫回處理。
參考圖15說明使用同步操作執(zhí)行進(jìn)程拆除的一個實施例。最初,本地處理器(例如,正在執(zhí)行進(jìn)程拆除的處理器)發(fā)出第一同步操作,如RCSync以便得到最新信息,步驟1500。如上所述,接收到同步請求的遠(yuǎn)程處理器處理它,步驟1502,然后指示完成,步驟1504。另外,遠(yuǎn)程處理繼續(xù),步驟1506。(在另一個實施例中,不執(zhí)行這個第一同步操作)。
根據(jù)從要執(zhí)行同步操作的所有遠(yuǎn)程處理器接收到完成指示,本地處理器執(zhí)行一些任務(wù),步驟1508。這些任務(wù)包括:例如,對進(jìn)程的每個頁,如果頁只在進(jìn)程中使用,那么設(shè)置頁為無效;可選地,如這里說明的(例如,使用IPTE、TLBIE),對任何需要無效化的頁,執(zhí)行緩存的地址轉(zhuǎn)換的無效化;以及如果頁要寫回到磁盤,那么發(fā)起寫回操作。
其后,本地處理器發(fā)出第二同步操作如RCsync給遠(yuǎn)程處理器,步驟1510。遠(yuǎn)程處理器處理第二同步操作,步驟1512,并且指示完成,步驟1514。更進(jìn)一步地,其它遠(yuǎn)程處理繼續(xù),步驟1516。
由要執(zhí)行同步操作的遠(yuǎn)程處理器完成同步操作之后,本地處理器擁有了被遠(yuǎn)程使用的頁的精確列表。如這里說明的,本地處理器現(xiàn)在只無效化具有設(shè)置了的變化或參考指示符(例如,C=1或R=1)的頁表項和/或緩存項,步驟1518。這是對于從第一同步操作變到第二同步操作的頁的清理。此外,處理具有設(shè)置了的變化指示符的頁,如將頁寫到磁盤等。
這里詳細(xì)說明的是可以由一些技術(shù)使用以得到用于頁表項的最新狀態(tài)信息的同步能力。在一個示例中,同步操作使用RCsync指令,該指令確保在多處理器系統(tǒng)中對頁表項的動態(tài)更新部分的所有更新已經(jīng)完成,該頁表項在執(zhí)行RCsync之前已經(jīng)存在。在一個實施例中,單個RCsync確保所有類型的更新已經(jīng)完成;以及在另一個實施例中,RCsync提供額外的參數(shù)以指定某些域(例如,更新C域而不是R等)。很多變化是可能的。
在更進(jìn)一步的實施例中,可以由執(zhí)行一系列指令以及/或由寫一個或更多控制寄存器指示RCsync。其它變化也是可能的。
在一個實施例中,根據(jù)在接收到RCsync時識別的緩存項中掛起的更新,使用單個指令而不無效化緩存項(即,當(dāng)允許緩存項保持有效)RCsync更新要被更新的所有頁表項。
目前接收最新R/C指示符的方法需要每個PTE無效化(例如,TLBIE)。但是,根據(jù)一個或更多方面,單個廣播可以更新R/C(以及/或者其它PTE狀態(tài)信息)并加速處理。例如,在到每個遠(yuǎn)程處理器的單個往返中,所有RCsync執(zhí)行之前掛起的R/C更新交付給存儲器。這個同步處理可以與使用單個軟件請求執(zhí)行本地TLB無效化的基于處理器間中斷(IPI)的TLB無效化一起使用。
根據(jù)一個或更多方面,提供同步進(jìn)程,該同步進(jìn)程使具有弱有序的存儲器的計算環(huán)境能夠在本地執(zhí)行例如批量降級、無效化等,該具有弱有序的存儲器具有延遲的R/C更新(即,沒有連貫的的更新配置計算系統(tǒng),因為不在任何特定的時間量保證更新)。
這里這在一些示例中,雖然它是被更新的頁表,但是一個或更多方面可以應(yīng)用到其它地址轉(zhuǎn)換結(jié)構(gòu)。更進(jìn)一步地,除了頁的其它存儲器單元可以被訪問并/或存儲。頁和頁表的使用只是示例。更進(jìn)一步地,存儲器的頁可以是任何大小,4K或大于或小于4K。
參考圖16,在一個示例中,計算機程序產(chǎn)品1600包括,例如一個或更多永久的計算機可讀存儲媒體1602以在其上存儲計算機可讀程序代碼工具、邏輯和/或指令1604,以提供并促進(jìn)一個或更多實施例。
本發(fā)明可以是系統(tǒng)、方法和/或計算機程序產(chǎn)品。計算機程序產(chǎn)品可以包括計算機可讀存儲介質(zhì),其上載有用于使處理器實現(xiàn)本發(fā)明的各個方面的計算機可讀程序指令。
計算機可讀存儲介質(zhì)可以是可以保持和存儲由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計算機可讀存儲介質(zhì)例如可以是――但不限于――電存儲設(shè)備、磁存儲設(shè)備、光存儲設(shè)備、電磁存儲設(shè)備、半導(dǎo)體存儲設(shè)備或者上述的任意合適的組合。計算機可讀存儲介質(zhì)的更具體的示例(非窮舉的列表)包括:便攜式計算機盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPROM或閃存)、靜態(tài)隨機存取存儲器(SRAM)、便攜式壓縮盤只讀存儲器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機械編碼設(shè)備、例如其上存儲有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計算機可讀存儲介質(zhì)不被解釋為瞬時信號本身,諸如無線電波或者其他自由傳播的電磁波、通過波導(dǎo)或其他傳輸介質(zhì)傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘枴?/p>
這里所描述的計算機可讀程序指令可以從計算機可讀存儲介質(zhì)下載到各個計算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計算機或外部存儲設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機、網(wǎng)關(guān)計算機和/或邊緣服務(wù)器。每個計算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計算機可讀程序指令,并轉(zhuǎn)發(fā)該計算機可讀程序指令,以供存儲在各個計算/處理設(shè)備中的計算機可讀存儲介質(zhì)中。
用于執(zhí)行本發(fā)明操作的計算機程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機器指令、機器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言—諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言—諸如“C”語言或類似的編程語言。計算機可讀程序指令可以完全地在用戶計算機上執(zhí)行、部分地在用戶計算機上執(zhí)行、作為一個獨立的軟件包執(zhí)行、部分在用戶計算機上部分在遠(yuǎn)程計算機上執(zhí)行、或者完全在遠(yuǎn)程計算機或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計算機的情形中,遠(yuǎn)程計算機可以通過任意種類的網(wǎng)絡(luò)—包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實施例中,通過利用計算機可讀程序指令的狀態(tài)信息來個性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計算機可讀程序指令,從而實現(xiàn)本發(fā)明的各個方面。
這里參照根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由計算機可讀程序指令實現(xiàn)。
這些計算機可讀程序指令可以提供給通用計算機、專用計算機或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機器,使得這些指令在通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時,產(chǎn)生了實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的裝置。也可以把這些計算機可讀程序指令存儲在計算機可讀存儲介質(zhì)中,這些指令使得計算機、可編程數(shù)據(jù)處理裝置和/或其他設(shè)備以特定方式工作,從而,存儲有指令的計算機可讀介質(zhì)則包括一個制造品,其包括實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作的各個方面的指令。
也可以把計算機可讀程序指令加載到計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計算機、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計算機實現(xiàn)的過程,從而使得在計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行的指令實現(xiàn)流程圖和/或框圖中的一個或多個方框中規(guī)定的功能/動作。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以用專用硬件與計算機指令的組合來實現(xiàn)。
除了上面的,可以由提供客戶環(huán)境的管理的服務(wù)提供者提供、提供、部署、管理、服務(wù)于等一個或更多方面。例如,服務(wù)提供者可以為一個或更多客戶創(chuàng)建、維護(hù)、支持等執(zhí)行一個或更多示例的計算機代碼和/或計算機基礎(chǔ)設(shè)施。作為回報,服務(wù)提供者按照例如合同和/或協(xié)議可以從客戶收到報酬。此外或可供選擇地,服務(wù)提供者可以從向一個或更多第三方銷售廣告內(nèi)容獲得報酬。
在一個示例,可以部署應(yīng)用用于執(zhí)行一個或更多實施例。作為一個示例,應(yīng)用的部署包含提供可操作的計算機基礎(chǔ)設(shè)施以執(zhí)行一個或更多實施例。
作為更進(jìn)一步的方面,可以部署計算基礎(chǔ)設(shè)施,包含集成計算機可讀代碼到計算系統(tǒng)中,在該計算系統(tǒng)中,與計算系統(tǒng)結(jié)合的代碼能夠執(zhí)行一個或更多實施例。
還是作為更進(jìn)一步的方面,可以提供用于集成計算基礎(chǔ)設(shè)施的過程,包含集成計算機可讀代碼到計算系統(tǒng)中。計算機系統(tǒng)包含計算機可讀介質(zhì),在該計算機系統(tǒng)中,計算機介質(zhì)包含一個或更多實施例。與計算機系統(tǒng)結(jié)合的代碼能夠執(zhí)行一個或更多實施例。
雖然上面說明了各種實施例,但是這些只是示例。例如,其它結(jié)構(gòu)的計算環(huán)境可以用于合并和使用一個或更多實施例。更進(jìn)一步地,可以使用不同指令、指令格式、指令域和/或指令值。仍然更進(jìn)一步地,同步可以以其它方式執(zhí)行。很多變化是可能的。
更進(jìn)一步地,其它類型的計算環(huán)境可能受益并被使用。作為示例,適于存儲和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)是可用的,該數(shù)據(jù)處理系統(tǒng)包括至少兩個通過系統(tǒng)總線與存儲器元件直接或間接連接的處理器。存儲器元件包括:例如,程序代碼的實際執(zhí)行期間使用的本地存儲器、大容量存儲器和高速緩存存儲器,該高速緩沖存儲器提供至少一些代碼的臨時存儲,以便減少執(zhí)行期間從大規(guī)模存儲器檢索代碼的次數(shù)。
輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指向設(shè)備、DASD、磁帶、CD、DVD、拇指存儲器和其它存儲器媒體等)可以直接或通過插入I/O控制器連接到系統(tǒng)。網(wǎng)絡(luò)適配器也可以連接到系統(tǒng)以使數(shù)據(jù)處理系統(tǒng)能夠通過插入的私有或公共網(wǎng)絡(luò)變?yōu)檫B接到其它數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機或存儲設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡只是一些可用類型的網(wǎng)絡(luò)適配器。
在進(jìn)一步的實施例中,一個或多個示例是關(guān)于云計算的。首先應(yīng)當(dāng)理解,盡管本公開包括關(guān)于云計算的詳細(xì)描述,但其中記載的技術(shù)方案的實現(xiàn)卻不限于云計算環(huán)境,而是能夠結(jié)合現(xiàn)在已知或以后開發(fā)的任何其它類型的計算環(huán)境而實現(xiàn)。
云計算是一種服務(wù)交付模式,用于對共享的可配置計算資源池進(jìn)行方便、按需的網(wǎng)絡(luò)訪問??膳渲糜嬎阗Y源是能夠以最小的管理成本或與服務(wù)提供者進(jìn)行最少的交互就能快速部署和釋放的資源,例如可以是網(wǎng)絡(luò)、網(wǎng)絡(luò)帶寬、服務(wù)器、處理、內(nèi)存、存儲、應(yīng)用、虛擬機和服務(wù)。這種云模式可以包括至少五個特征、至少三個服務(wù)模型和至少四個部署模型。
特征包括:
按需自助式服務(wù):云的消費者在無需與服務(wù)提供者進(jìn)行人為交互的情況下能夠單方面自動地按需部署諸如服務(wù)器時間和網(wǎng)絡(luò)存儲等的計算能力。
廣泛的網(wǎng)絡(luò)接入:計算能力可以通過標(biāo)準(zhǔn)機制在網(wǎng)絡(luò)上獲取,這種標(biāo)準(zhǔn)機制促進(jìn)了通過不同種類的瘦客戶機平臺或厚客戶機平臺(例如移動電話、膝上型電腦、個人數(shù)字助理PDA)對云的使用。
資源池:提供者的計算資源被歸入資源池并通過多租戶(multi-tenant)模式服務(wù)于多重消費者,其中按需將不同的實體資源和虛擬資源動態(tài)地分配和再分配。一般情況下,消費者不能控制或甚至并不知曉所提供的資源的確切位置,但可以在較高抽象程度上指定位置(例如國家、州或數(shù)據(jù)中心),因此具有位置無關(guān)性。
迅速彈性:能夠迅速、有彈性地(有時是自動地)部署計算能力,以實現(xiàn)快速擴(kuò)展,并且能迅速釋放來快速縮小。在消費者看來,用于部署的可用計算能力往往顯得是無限的,并能在任意時候都能獲取任意數(shù)量的計算能力。
可測量的服務(wù):云系統(tǒng)通過利用適于服務(wù)類型(例如存儲、處理、帶寬和活躍用戶帳號)的某種抽象程度的計量能力,自動地控制和優(yōu)化資源效用??梢员O(jiān)測、控制和報告資源使用情況,為服務(wù)提供者和消費者雙方提供透明度。
服務(wù)模型如下:
軟件即服務(wù)(SaaS):向消費者提供的能力是使用提供者在云基礎(chǔ)架構(gòu)上運行的應(yīng)用。可以通過諸如網(wǎng)絡(luò)瀏覽器的瘦客戶機接口(例如基于網(wǎng)絡(luò)的電子郵件)從各種客戶機設(shè)備訪問應(yīng)用。除了有限的特定于用戶的應(yīng)用配置設(shè)置外,消費者既不管理也不控制包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲、乃至單個應(yīng)用能力等的底層云基礎(chǔ)架構(gòu)。
平臺即服務(wù)(PaaS):向消費者提供的能力是在云基礎(chǔ)架構(gòu)上部署消費者創(chuàng)建或獲得的應(yīng)用,這些應(yīng)用利用提供者支持的程序設(shè)計語言和工具創(chuàng)建。消費者既不管理也不控制包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)或存儲的底層云基礎(chǔ)架構(gòu),但對其部署的應(yīng)用具有控制權(quán),對應(yīng)用托管環(huán)境配置可能也具有控制權(quán)。
基礎(chǔ)架構(gòu)即服務(wù)(IaaS):向消費者提供的能力是消費者能夠在其中部署并運行包括操作系統(tǒng)和應(yīng)用的任意軟件的處理、存儲、網(wǎng)絡(luò)和其他基礎(chǔ)計算資源。消費者既不管理也不控制底層的云基礎(chǔ)架構(gòu),但是對操作系統(tǒng)、存儲和其部署的應(yīng)用具有控制權(quán),對選擇的網(wǎng)絡(luò)組件(例如主機防火墻)可能具有有限的控制權(quán)。
部署模型如下:
私有云:云基礎(chǔ)架構(gòu)單獨為某個組織運行。云基礎(chǔ)架構(gòu)可以由該組織或第三方管理并且可以存在于該組織內(nèi)部或外部。
共同體云:云基礎(chǔ)架構(gòu)被若干組織共享并支持有共同利害關(guān)系(例如任務(wù)使命、安全要求、政策和合規(guī)考慮)的特定共同體。共同體云可以由共同體內(nèi)的多個組織或第三方管理并且可以存在于該共同體內(nèi)部或外部。
公共云:云基礎(chǔ)架構(gòu)向公眾或大型產(chǎn)業(yè)群提供并由出售云服務(wù)的組織擁有。
混合云:云基礎(chǔ)架構(gòu)由兩個或更多部署模型的云(私有云、共同體云或公共云)組成,這些云依然是獨特的實體,但是通過使數(shù)據(jù)和應(yīng)用能夠移植的標(biāo)準(zhǔn)化技術(shù)或私有技術(shù)(例如用于云之間的負(fù)載平衡的云突發(fā)流量分擔(dān)技術(shù))綁定在一起。
云計算環(huán)境是面向服務(wù)的,特點集中在無狀態(tài)性、低耦合性、模塊性和語意的互操作性。云計算的核心是包含互連處理器網(wǎng)絡(luò)的基礎(chǔ)架構(gòu)。
現(xiàn)在參考圖17,其中顯示了云計算處理器的一個示例。圖17顯示的云計算處理器6010僅僅是適合的云計算節(jié)點的一個示例,不應(yīng)對本發(fā)明實施例的功能和使用范圍帶來任何限制??傊?,云計算處理器6010能夠被用來實現(xiàn)和/或執(zhí)行以上所述的任何功能。
云計算處理器6010具有計算機系統(tǒng)/服務(wù)器6012,其可與眾多其它通用或?qū)S糜嬎阆到y(tǒng)環(huán)境或配置一起操作。眾所周知,適于與計算機系統(tǒng)/服務(wù)器6012一起操作的計算系統(tǒng)、環(huán)境和/或配置的示例包括但不限于:個人計算機系統(tǒng)、服務(wù)器計算機系統(tǒng)、瘦客戶機、厚客戶機、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機頂盒、可編程消費電子產(chǎn)品、網(wǎng)絡(luò)個人電腦、小型計算機系統(tǒng)﹑大型計算機系統(tǒng)和包括上述任意系統(tǒng)的分布式云計算技術(shù)環(huán)境,等等。
計算機系統(tǒng)/服務(wù)器6012可以在由計算機系統(tǒng)執(zhí)行的計算機系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括執(zhí)行特定的任務(wù)或者實現(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等。計算機系統(tǒng)/服務(wù)器6012可以在通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)的分布式云計算環(huán)境中實施。在分布式云計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備的本地或遠(yuǎn)程計算系統(tǒng)存儲介質(zhì)上。
如圖17所示,云計算處理器6010中的計算機系統(tǒng)/服務(wù)器6012以通用計算設(shè)備的形式表現(xiàn)。計算機系統(tǒng)/服務(wù)器6012的組件可以包括但不限于:一個或者多個處理器或者處理單元6016,系統(tǒng)存儲器6028,連接不同系統(tǒng)組件(包括系統(tǒng)存儲器6028和處理單元6016)的總線6018。
總線6018表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲器總線或者存儲器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MAC)總線,增強型ISA總線、視頻電子標(biāo)準(zhǔn)協(xié)會(VESA)局域總線以及外圍組件互連(PCI)總線。
計算機系統(tǒng)/服務(wù)器6012典型地包括多種計算機系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是能夠被計算機系統(tǒng)/服務(wù)器6012訪問的任意可獲得的介質(zhì),包括易失性和非易失性介質(zhì),可移動的和不可移動的介質(zhì)。
系統(tǒng)存儲器6028可以包括易失性存儲器形式的計算機系統(tǒng)可讀介質(zhì),例如隨機存取存儲器(RAM)6030和/或高速緩存存儲器6032。計算機系統(tǒng)/服務(wù)器6012可以進(jìn)一步包括其它可移動/不可移動的、易失性/非易失性計算機系統(tǒng)存儲介質(zhì)。僅作為舉例,存儲系統(tǒng)6034可以用于讀寫不可移動的、非易失性磁介質(zhì)(未顯示,通常稱為“硬盤驅(qū)動器”)。盡管未示出,可以提供用于對可移動非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動器,以及對可移動非易失性光盤(例如CD-ROM,DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動器。在這些情況下,每個驅(qū)動器可以通過一個或者多個數(shù)據(jù)介質(zhì)接口與總線6018相連。存儲器6028可以包括至少一個程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個)程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實施例的功能。
具有一組(至少一個)程序模塊6042的程序/實用工具6040,可以存儲在存儲器6028中,這樣的程序模塊6042包括但不限于操作系統(tǒng)、一個或者多個應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實現(xiàn)。程序模塊6042通常執(zhí)行本發(fā)明所描述的實施例中的功能和/或方法。
計算機系統(tǒng)/服務(wù)器6012也可以與一個或多個外部設(shè)備6014(例如鍵盤、指向設(shè)備、顯示器6024等)通信,還可與一個或者多個使得用戶能與該計算機系統(tǒng)/服務(wù)器6012交互的設(shè)備通信,和/或與使得該計算機系統(tǒng)/服務(wù)器6012能與一個或多個其它計算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口6022進(jìn)行。并且,計算機系統(tǒng)/服務(wù)器6012還可以通過網(wǎng)絡(luò)適配器6020與一個或者多個網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器6020通過總線6018與計算機系統(tǒng)/服務(wù)器6012的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,其它硬件和/或軟件模塊可以與計算機系統(tǒng)/服務(wù)器6012一起操作,包括但不限于:微代碼、設(shè)備驅(qū)動器、冗余處理單元、外部磁盤驅(qū)動陣列、RAID系統(tǒng)、磁帶驅(qū)動器以及數(shù)據(jù)備份存儲系統(tǒng)等。
現(xiàn)在參考圖18,其中顯示了示例性的云計算環(huán)境6050。如圖所示,云計算環(huán)境6050包括云計算消費者使用的本地計算設(shè)備可以與其相通信的一個或者多個云計算處理器6010,本地計算設(shè)備例如可以是個人數(shù)字助理(PDA)或移動電話6054A,臺式電腦6054B、筆記本電腦6054C和/或汽車計算機系統(tǒng)6054N。云計算處理器6010之間可以相互通信??梢栽诎ǖ幌抻谌缟纤龅乃接性?、共同體云、公共云或混合云或者它們的組合的一個或者多個網(wǎng)絡(luò)中將云計算處理器6010進(jìn)行物理或虛擬分組(圖中未顯示)。這樣,云的消費者無需在本地計算設(shè)備上維護(hù)資源就能請求云計算環(huán)境6050提供的基礎(chǔ)架構(gòu)即服務(wù)(IaaS)、平臺即服務(wù)(PaaS)和/或軟件即服務(wù)(SaaS)。應(yīng)當(dāng)理解,圖18顯示的各類計算設(shè)備54A-N僅僅是示意性的,云計算處理器6010以及云計算環(huán)境6050可以與任意類型網(wǎng)絡(luò)上和/或網(wǎng)絡(luò)可尋址連接的任意類型的計算設(shè)備(例如使用網(wǎng)絡(luò)瀏覽器)通信。
現(xiàn)在參考圖19,其中顯示了云計算環(huán)境6050(圖18)提供的一組功能抽象層。首先應(yīng)當(dāng)理解,圖3所示的組件、層以及功能都僅僅是示意性的,本發(fā)明的實施例不限于此。如圖19所示,提供下列層和對應(yīng)功能:
硬件和軟件層6060包括硬件和軟件組件。硬件組件的示例包括:主機,例如系統(tǒng);基于RISC(精簡指令集計算機)體系結(jié)構(gòu)的服務(wù)器,例如IBM系統(tǒng);IBM系統(tǒng);IBM系統(tǒng);存儲設(shè)備;網(wǎng)絡(luò)和網(wǎng)絡(luò)組件。軟件組件的示例包括:網(wǎng)絡(luò)應(yīng)用服務(wù)器軟件,例如IBM應(yīng)用服務(wù)器軟件;數(shù)據(jù)庫軟件,例如IBM數(shù)據(jù)庫軟件。(IBM,zSeries,pSeries,xSeries,BladeCenter,WebSphere以及DB2是國際商業(yè)機器公司在全世界各地的注冊商標(biāo))。
虛擬層6062提供一個抽象層,該層可以提供下列虛擬實體的示例:虛擬服務(wù)器、虛擬存儲、虛擬網(wǎng)絡(luò)(包括虛擬私有網(wǎng)絡(luò))、虛擬應(yīng)用和操作系統(tǒng),以及虛擬客戶端。
在一個示例中,管理層6064可以提供下述功能:資源供應(yīng)功能:提供用于在云計算環(huán)境中執(zhí)行任務(wù)的計算資源和其它資源的動態(tài)獲取;計量和定價功能:在云計算環(huán)境內(nèi)對資源的使用進(jìn)行成本跟蹤,并為此提供帳單和發(fā)票。在一個示例中,該資源可以包括應(yīng)用軟件許可。安全功能:為云的消費者和任務(wù)提供身份認(rèn)證,為數(shù)據(jù)和其它資源提供保護(hù)。用戶門戶功能:為消費者和系統(tǒng)管理員提供對云計算環(huán)境的訪問。服務(wù)水平管理功能:提供云計算資源的分配和管理,以滿足必需的服務(wù)水平。服務(wù)水平協(xié)議(SLA)計劃和履行功能:為根據(jù)SLA預(yù)測的對云計算資源未來需求提供預(yù)先安排和供應(yīng)。
工作負(fù)載層6066提供云計算環(huán)境可能實現(xiàn)的功能的示例。在該層中,可提供的工作負(fù)載或功能的示例包括:地圖繪制與導(dǎo)航;軟件開發(fā)及生命周期管理;虛擬教室的教學(xué)提供;數(shù)據(jù)分析處理;以及交易處理。
這里使用的術(shù)語的目的只是為了說明特殊的實施例并且不打算做限制。如這里使用的,單數(shù)形式“a”、“an”和“the”也打算包括復(fù)數(shù)形式,除非上下文另外明確指示。將更進(jìn)一步被理解的是:當(dāng)在這個規(guī)范中使用時,術(shù)語“包含”和/或“包含”指定陳述的特征、整體、步驟、操作、元件和/或組件,但是不排除一個或更多其它特征、整體、步驟、操作、元件、組件和/或它們的組的存在或增加。
如果存在,下面的強烈要求中的所有方法或步驟的相應(yīng)的結(jié)構(gòu)、材料、行為和等價物加上功能元素打算包括任何結(jié)構(gòu)、材料或行為用于執(zhí)行功能結(jié)合其它要求的元素,如特別要求的。為了圖解和說明的目的已經(jīng)提供了一個或更多實施例的說明,但是不打算以公開的形式成為詳盡的或限制的。很多修改和變化對那些本領(lǐng)域的一般技術(shù)人員將是顯然的。選擇和說明實施例以便最好地解釋各種方面和實際應(yīng)用以及使本領(lǐng)域的其他一般技術(shù)人員能夠理解具有各種修改的各種實施例適合預(yù)期的特殊用途。