一個(gè)或多個(gè)方面一般地涉及多處理計(jì)算環(huán)境,并且具體地說,涉及在此類計(jì)算環(huán)境中控制程序執(zhí)行。
背景技術(shù):
在諸如對稱多處理(SMP)環(huán)境之類的多處理計(jì)算環(huán)境中,SMP環(huán)境的多個(gè)處理器使用傳統(tǒng)同步機(jī)制以便在環(huán)境中同步執(zhí)行。這些同步機(jī)制包括在共享存儲(chǔ)位置中實(shí)現(xiàn)的序列化技術(shù),并且可以包括旗號(hào)(semaphore)或其它共享存儲(chǔ)標(biāo)志或計(jì)數(shù)器。為了確保進(jìn)度,此類機(jī)制還可以包括額外代碼以便限制等待同步信號(hào)花費(fèi)的時(shí)間。這些限制可以包括簡單指令計(jì)數(shù)器、基于時(shí)間的機(jī)制或其它技術(shù)。
諸如同步多線程(SMT)環(huán)境之類的其它多處理環(huán)境可以使用上面技術(shù)或其它技術(shù)以便同步執(zhí)行。
技術(shù)實(shí)現(xiàn)要素:
通過提供一種用于在計(jì)算環(huán)境中執(zhí)行機(jī)器指令的計(jì)算機(jī)程序產(chǎn)品,克服現(xiàn)有技術(shù)的缺點(diǎn)并且提供優(yōu)點(diǎn)。所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其能夠由處理電路讀取并且存儲(chǔ)指令以便由所述處理電路執(zhí)行以執(zhí)行一種方法。所述方法例如包括:由處理器獲得機(jī)器指令以便執(zhí)行,所述機(jī)器指令根據(jù)計(jì)算機(jī)體系結(jié)構(gòu)被定義用于計(jì)算機(jī)執(zhí)行,所述機(jī)器指令包括:操作碼,其用于指定比較和延遲操作;一個(gè)或多個(gè)第一字段,其用于獲得第一操作數(shù);以及一個(gè)或多個(gè)第二字段,其用于獲得第二操作數(shù);以及由所述處理器執(zhí)行所述機(jī)器指令,所述執(zhí)行包括:比較所述第一操作數(shù)與所述第二操作數(shù)以便獲得比較結(jié)果;判定對應(yīng)于所述比較結(jié)果的屏蔽指示符是否被設(shè)置為定義值;以及基于判定對應(yīng)于所述比較結(jié)果的所述屏蔽指示符被設(shè)置為所述定義值,延遲所述機(jī)器指令的完成直到發(fā)生預(yù)定義事件。
在此還描述和要求保護(hù)涉及一個(gè)或多個(gè)實(shí)施例的方法和系統(tǒng)。進(jìn)一步,在此還描述并且可以要求保護(hù)涉及一個(gè)或多個(gè)實(shí)施例的服務(wù)。
實(shí)現(xiàn)其它特性和優(yōu)點(diǎn)。在此詳細(xì)描述其它實(shí)施例和方面,并且這些實(shí)施例和方面被視為所要求保護(hù)的發(fā)明的一部分。
附圖說明
在說明書結(jié)尾處的權(quán)利要求中作為實(shí)例具體指出并明確要求保護(hù)了一個(gè)或多個(gè)方面。從下面結(jié)合附圖的詳細(xì)描述,上述和其它目標(biāo)、特性和優(yōu)點(diǎn)顯而易見,這些附圖是:
圖1A示出計(jì)算環(huán)境的一個(gè)實(shí)施例;
圖1B示出圖1A的處理器的進(jìn)一步細(xì)節(jié);
圖2示出計(jì)算環(huán)境的另一個(gè)實(shí)例;
圖3A示出計(jì)算環(huán)境的另一個(gè)實(shí)例;
圖3B示出圖3A的存儲(chǔ)器的進(jìn)一步細(xì)節(jié);
圖4A示出比較和延遲(CAD)指令的一個(gè)實(shí)例;
圖4B示出比較和延遲(CADG)指令的另一個(gè)實(shí)例;
圖5A-5B示出與圖4A-4B的比較和延遲指令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例;
圖6A-6C示出與圖4A-4B的比較和延遲指令的各個(gè)方面關(guān)聯(lián)的處理的另一個(gè)實(shí)施例;
圖7示出計(jì)算機(jī)程序產(chǎn)品的一個(gè)實(shí)施例;
圖8示出主計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;
圖9示出計(jì)算機(jī)系統(tǒng)的另一實(shí)例;
圖10示出包括計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)的另一個(gè)實(shí)例;
圖11示出計(jì)算機(jī)系統(tǒng)的各種元件的一個(gè)實(shí)施例;
圖12A示出圖11的計(jì)算機(jī)系統(tǒng)的執(zhí)行單元的一個(gè)實(shí)施例;
圖12B示出圖11的計(jì)算機(jī)系統(tǒng)的分支單元的一個(gè)實(shí)施例;
圖12C示出圖11的計(jì)算機(jī)系統(tǒng)的加載/存儲(chǔ)單元的一個(gè)實(shí)施例;
圖13示出所仿真主計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;
圖14示出云計(jì)算節(jié)點(diǎn)的一個(gè)實(shí)施例;
圖15示出云計(jì)算環(huán)境的一個(gè)實(shí)施例;以及
圖16示出抽象模型層的一個(gè)實(shí)例。
具體實(shí)施方式
根據(jù)一個(gè)方面,提供一種能力以便延遲程序執(zhí)行直到發(fā)生預(yù)定義事件,例如存儲(chǔ)位置的比較導(dǎo)致真條件、到達(dá)超時(shí)、使中斷變成未決或者存在另一個(gè)條件。該能力例如包括延遲工具,其具有用于延遲執(zhí)行的一個(gè)或多個(gè)比較和延遲機(jī)器指令。
參考圖1A描述引入和使用延遲工具的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例。計(jì)算環(huán)境100例如包括處理器102(例如,中央處理單元)、存儲(chǔ)器104(例如,主存儲(chǔ)器),以及一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備和/或接口106,它們例如經(jīng)由一個(gè)或多個(gè)總線108和/或其它連接耦合到彼此。
在一個(gè)實(shí)例中,處理器102基于由國際商業(yè)機(jī)器公司提供的z/Architecture,并且是諸如System z服務(wù)器之類的服務(wù)器的一部分,System z服務(wù)器也由國際商業(yè)機(jī)器公司提供并且實(shí)現(xiàn)z/Architecture。在標(biāo)題為“z/Architecture Principles of Operation”(z/Architecture操作原理)的出版物(第SA22-7832-09號(hào)出版物第10版,2012年9月,在此全部引入作為參考)中描述了z/Architecture的一個(gè)實(shí)施例。在一個(gè)實(shí)例中,處理器執(zhí)行諸如z/OS之類的操作系統(tǒng),z/OS也由國際商業(yè)機(jī)器公司提供。和(以及下面引用的)是位于美國紐約阿蒙克的國際商業(yè)機(jī)器公司的注冊商標(biāo)。在此使用的其它名稱可以是國際商業(yè)機(jī)器公司或其它公司的注冊商標(biāo)、商標(biāo)或產(chǎn)品名稱。
在另一實(shí)施例中,處理器102基于由國際商業(yè)機(jī)器公司提供的Power Architecture。在“Power ISATM版本2.06修訂版B”(國際商業(yè)機(jī)器公司,2010年7月23日,在此全部引入作為參考)中描述了Power Architecture的一個(gè)實(shí)施例。POWER是位于紐約阿蒙克的國際商業(yè)機(jī)器公司的注冊商標(biāo)。
在再一實(shí)施例中,處理器102基于由英特爾公司提供的Intel架構(gòu)。在“64和IA-32架構(gòu)開發(fā)人員手冊:卷2B,指令集引用A-L”(序號(hào)253666-045US,2013年1月)和“64和IA-32架構(gòu)開發(fā)人員手冊:卷2B,指令集引用M-Z”(序號(hào)253667-045US,2013年1月)(其中的每一個(gè)在此全部引入作為參考)中描述了Intel架構(gòu)的一個(gè)實(shí)施例。是位于加利福尼亞圣克拉拉的英特爾公司的注冊商標(biāo)。
處理器102包括用于執(zhí)行指令的多個(gè)功能組件。如圖1B中所示,這些功能組件例如包括:指令取回組件120,其用于取回要執(zhí)行的指令;指令解碼單元122,其用于對所取回的指令解碼并且獲得所解碼的指令的操作數(shù);指令執(zhí)行組件124,其用于執(zhí)行所解碼的指令;存儲(chǔ)器訪問組件126,其用于訪問存儲(chǔ)器以便指令執(zhí)行(如果需要);以及回寫組件130,其用于提供所執(zhí)行的指令的結(jié)果。根據(jù)一個(gè)方面,這些組件的一個(gè)或多個(gè)可以通過包括延遲組件136的至少一部分或者具有對延遲組件136的訪問而提供延遲功能。下面進(jìn)一步詳細(xì)地描述該功能。
在一個(gè)實(shí)施例中,處理器120還包括一個(gè)或多個(gè)寄存器140,其用于由一個(gè)或多個(gè)所述功能組件使用。
參考圖2描述引入和使用延遲工具(包括比較和延遲指令)的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的另一個(gè)實(shí)施例。
參考圖2,在一個(gè)實(shí)例中,計(jì)算環(huán)境200基于由位于紐約阿蒙克的國際商業(yè)機(jī)器公司提供的z/Architecture。計(jì)算環(huán)境200例如包括中央處理器復(fù)合體(CPC)202,其經(jīng)由一個(gè)或多個(gè)控制單元208耦合到一個(gè)或多個(gè)輸入/輸出(I/O)設(shè)備206。中央處理器復(fù)合體202例如包括耦合到一個(gè)或多個(gè)中央處理器(又稱為中央處理單元(CPU))210的處理器存儲(chǔ)器204(又稱為主存儲(chǔ)器、主存儲(chǔ)裝置、中央存儲(chǔ)裝置),以及輸入/輸出子系統(tǒng)211,下面描述其中的每一個(gè)。
處理器存儲(chǔ)器204例如包括一個(gè)或多個(gè)分區(qū)212(例如,邏輯分區(qū))和處理器固件213,處理器固件213例如包括邏輯分區(qū)系統(tǒng)管理程序214和其它處理器固件215。邏輯分區(qū)系統(tǒng)管理程序214的一個(gè)實(shí)例是Processor Resource/System Manager(PR/SM),其由位于紐約阿蒙克的國際商業(yè)機(jī)器公司提供。
邏輯分區(qū)用作單獨(dú)系統(tǒng)并且具有一個(gè)或多個(gè)應(yīng)用220,以及可選地在其中具有常駐操作系統(tǒng)222,每個(gè)邏輯分區(qū)的常駐操作系統(tǒng)可能不同。在一個(gè)實(shí)施例中,操作系統(tǒng)是z/OS操作系統(tǒng)、z/VM操作系統(tǒng)、z/Linux操作系統(tǒng)或TPF操作系統(tǒng),其由位于紐約阿蒙克的國際商業(yè)機(jī)器公司提供。邏輯分區(qū)212由邏輯分區(qū)系統(tǒng)管理程序214管理,邏輯分區(qū)系統(tǒng)管理程序214由在處理器210上運(yùn)行的固件實(shí)現(xiàn)。如在此使用的,固件例如包括處理器的微代碼和/或毫代碼。它例如包括用于實(shí)現(xiàn)更高級(jí)機(jī)器代碼的硬件級(jí)指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個(gè)實(shí)施例中,它例如包括通常作為微代碼提供的專用代碼,專用代碼包括特定于底層硬件的可信軟件或微代碼,并且控制操作系統(tǒng)對系統(tǒng)硬件的訪問。
中央處理器210是分配給邏輯分區(qū)的物理處理器資源。具體地說,每個(gè)邏輯分區(qū)212具有一個(gè)或多個(gè)邏輯處理器,每個(gè)邏輯處理器表示分配給該分區(qū)的物理處理器210的全部或一部分。特定分區(qū)212的邏輯處理器可以專用于分區(qū),以使得針對該分區(qū)保留底層處理器資源210;或者與另一個(gè)分區(qū)共享,以使得底層處理器資源潛在可用于另一個(gè)分區(qū)。在一個(gè)實(shí)例中,一個(gè)或多個(gè)CPU包括在此描述的延遲工具224的各個(gè)方面。
輸入/輸出子系統(tǒng)211在輸入/輸出設(shè)備206與主存儲(chǔ)裝置204之間定向信息流。它耦合到中央處理復(fù)合體,其中它可以是中央處理復(fù)合體的一部分或者與其分離。I/O子系統(tǒng)減輕中央處理器直接與輸入/輸出設(shè)備通信的任務(wù),并且允許數(shù)據(jù)處理與輸入/輸出處理同時(shí)進(jìn)行。為了提供通信,I/O子系統(tǒng)采用I/O通信適配器。存在各種類型的通信適配器,例如包括通道、I/O適配器、PCI卡、以太網(wǎng)卡、小型計(jì)算機(jī)存儲(chǔ)接口(SCSI)卡等。在此處描述的特定實(shí)例中,I/O通信適配器是通道,并且因此I/O子系統(tǒng)在此被稱為通道子系統(tǒng)。但是,這僅是一個(gè)實(shí)例。可以使用其它類型的I/O子系統(tǒng)。
I/O子系統(tǒng)使用一個(gè)或多個(gè)輸入/輸出路徑作為通信鏈路,以便管理進(jìn)出輸入/輸出設(shè)備206的信息流。在該特定實(shí)例中,這些路徑被稱為通道路徑,因?yàn)橥ㄐ胚m配器是通道。
參考圖3A描述引入和使用延遲工具的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的另一個(gè)實(shí)施例。在該實(shí)例中,計(jì)算環(huán)境300例如包括本機(jī)中央處理單元(CPU)302、存儲(chǔ)器304,以及一個(gè)或多個(gè)輸入/輸出設(shè)備和/或接口306,它們例如經(jīng)由一個(gè)或多個(gè)總線308和/或其它連接耦合到彼此。作為實(shí)例,計(jì)算環(huán)境300可以包括由位于紐約阿蒙克的國際商業(yè)機(jī)器公司提供的PowerPC處理器、pSeries服務(wù)器或xSeries服務(wù)器;由位于加利福尼亞帕洛阿爾托的惠普公司提供的具有Intel Itanium II處理器的HP Superdome;和/或基于由國際商業(yè)機(jī)器公司、惠普公司、英特爾公司、Oracle公司或其它公司提供的架構(gòu)的其它機(jī)器。
本機(jī)中央處理單元302包括一個(gè)或多個(gè)本機(jī)寄存器310,例如在環(huán)境中的處理期間使用的一個(gè)或多個(gè)通用寄存器和/或一個(gè)或多個(gè)專用寄存器。這些寄存器包括表示環(huán)境在任何特定時(shí)間點(diǎn)的狀態(tài)的信息。
此外,本機(jī)中央處理單元302執(zhí)行存儲(chǔ)在存儲(chǔ)器304中的指令和代碼。在一個(gè)特定實(shí)例中,中央處理單元執(zhí)行存儲(chǔ)在存儲(chǔ)器304中的仿真器代碼312。該代碼使得在一個(gè)架構(gòu)中配置的計(jì)算環(huán)境能夠仿真另一個(gè)架構(gòu)。例如,仿真器代碼312允許基于除了z/Architecture之外的架構(gòu)的機(jī)器(例如PowerPC處理器、pSeries服務(wù)器、xSeries服務(wù)器、HP Superdome服務(wù)器等)仿真z/Architecture并且執(zhí)行基于z/Architecture開發(fā)的軟件和指令。
參考圖3B描述有關(guān)仿真器代碼312的進(jìn)一步細(xì)節(jié)。存儲(chǔ)在存儲(chǔ)器304中的客體指令350包括被開發(fā)以便在除了本機(jī)CPU 302的架構(gòu)之外的架構(gòu)中執(zhí)行的軟件指令(例如,與機(jī)器指令關(guān)聯(lián))。例如,客體指令350可以被設(shè)計(jì)為在z/Architecture處理器102上執(zhí)行,但改為在本機(jī)CPU 302上被仿真,本機(jī)CPU 302例如可以是Intel Itanium II處理器。在一個(gè)實(shí)例中,仿真器代碼312包括指令取回例程352,其用于從存儲(chǔ)器304獲得一個(gè)或多個(gè)客體指令350,并且可選地提供獲得的指令的本地緩沖。它還包括指令轉(zhuǎn)換例程354,其用于確定已獲得的客體指令的類型并且將客體指令轉(zhuǎn)換成一個(gè)或多個(gè)對應(yīng)的本機(jī)指令356。該轉(zhuǎn)換例如包括標(biāo)識(shí)要由客體指令執(zhí)行的功能以及選擇本機(jī)指令(多個(gè))以便執(zhí)行該功能。
進(jìn)一步,仿真器代碼312包括仿真控制例程360,其用于導(dǎo)致執(zhí)行本機(jī)指令。仿真控制例程360可以導(dǎo)致本機(jī)CPU 302執(zhí)行仿真一個(gè)或多個(gè)先前獲得的客體指令的本機(jī)指令的例程,并且在此類執(zhí)行結(jié)束時(shí),將控制返回給指令取回例程以便仿真下一客體指令或一組客體指令的獲得。本機(jī)指令356的執(zhí)行可以包括將數(shù)據(jù)從存儲(chǔ)器304加載到寄存器中;將數(shù)據(jù)從寄存器存儲(chǔ)回存儲(chǔ)器;或者執(zhí)行某一類型的算術(shù)或邏輯運(yùn)算,如由轉(zhuǎn)換例程所確定的。
每個(gè)例程例如以軟件實(shí)現(xiàn),所述軟件存儲(chǔ)在存儲(chǔ)器中并且由本機(jī)中央處理單元302執(zhí)行。在其它實(shí)例中,一個(gè)或多個(gè)例程或操作以固件、硬件、軟件或它們的某一組合來實(shí)現(xiàn)。所仿真處理器的寄存器可以使用本機(jī)CPU的寄存器310或者通過使用存儲(chǔ)器304中的位置來仿真。在多個(gè)實(shí)施例中,客體指令350、本機(jī)指令356和仿真器代碼312可以駐留在同一存儲(chǔ)器中或者可以分布在不同存儲(chǔ)設(shè)備中。
上述計(jì)算環(huán)境僅是可以使用的計(jì)算環(huán)境的實(shí)例??梢允褂闷渌h(huán)境,包括但不限于其它非分區(qū)環(huán)境、其它分區(qū)環(huán)境和/或其它所仿真環(huán)境;各實(shí)施例并不限于任何一個(gè)環(huán)境。
每個(gè)計(jì)算環(huán)境能夠被配置為包括用于延遲程序執(zhí)行的延遲工具。在此描述的實(shí)施例用于z/Architecture,但是,其它架構(gòu)可以引入和使用延遲工具,包括在此描述的COMPARE AND DELAY(比較和延遲)指令。在此描述的實(shí)施例并非旨在以任何方式進(jìn)行限制。
根據(jù)一個(gè)或多個(gè)方面,當(dāng)將z/Architecture的工具指示位(例如,位128)例如設(shè)置為1時(shí),該延遲工具被安裝。進(jìn)一步,可以使用控制寄存器(例如,CR 2)控制環(huán)境中的哪些實(shí)體(例如,操作系統(tǒng)、應(yīng)用編程等)可以使用該延遲工具。例如,如果將CR 2的選定位(例如,位60)例如設(shè)置為1,則當(dāng)處理器未處于監(jiān)控(supervisor)狀態(tài)(例如,特權(quán)狀態(tài))時(shí),屬于延遲工具一部分的COMPARE AND DELAY指令被授權(quán)在問題狀態(tài)(例如,非特權(quán)狀態(tài))下執(zhí)行。
在一個(gè)實(shí)施例中,延遲工具包括兩個(gè)指令:32位COMPARE AND DELAY指令(CAD)和64位COMPARE AND DELAY指令(CADG),下面描述其中的每一個(gè)。
參考圖4A描述32位COMPARE AND DELAY指令的格式的一個(gè)實(shí)施例。作為一個(gè)實(shí)例,COMPARE AND DELAY(CAD)指令400包括:多個(gè)操作碼字段402a、402b,其指定指明比較和延遲操作的操作碼;寄存器字段(R1)404,其指定寄存器,該寄存器的內(nèi)容包括第一操作數(shù);屏蔽字段(M3)406;基址字段(B2)408;第一位移字段(DL2)410;以及第二位移字段(DH2)412。將由B2字段指定的通用寄存器的內(nèi)容添加到串接的DH2和DL2字段的內(nèi)容,以便形成用于獲得第二操作數(shù)的第二操作數(shù)地址。第一和第二操作數(shù)是32位帶符號(hào)二進(jìn)制整數(shù)。第一操作數(shù)例如位于通用寄存器R1的位位置32-63中。第二操作數(shù)例如是存儲(chǔ)裝置中的字。
在另一個(gè)實(shí)施例中,提供64位COMPARE AND DELAY(CADG)指令450,該指令包括:多個(gè)操作碼字段452a、452b,其指定指明比較和延遲操作的操作碼;寄存器字段(R1)454,其指定寄存器,該寄存器的內(nèi)容包括第一操作數(shù);屏蔽字段(M3)456;基址字段(B2)458;第一位移字段(DL2)460;以及第二位移字段(DH2)462。將由B2字段指定的通用寄存器的內(nèi)容添加到串接的DH2和DL2字段的內(nèi)容,以便形成用于獲得第二操作數(shù)的第二操作數(shù)地址。在這種情況下,第一和第二操作數(shù)是64位帶符號(hào)二進(jìn)制整數(shù)。第一操作數(shù)例如位于通用寄存器R1的位位置0-63中。第二操作數(shù)是存儲(chǔ)裝置中的雙字。
在操作中,不管COMPARE AND DELAY指令的格式為何,將第一操作數(shù)與第二操作數(shù)相比較。如果例如對應(yīng)于比較結(jié)果的M3字段的位位置0-2中的屏蔽位為1,則延遲指令的完成;否則,完成指令的執(zhí)行。如果完成指令,則從最近操作數(shù)比較確定結(jié)果條件碼。
在延遲期間,由于以下任何一個(gè)原因(以先發(fā)生者為準(zhǔn))而結(jié)束指令:
·導(dǎo)致延遲的操作數(shù)值的關(guān)系不再由其值為1的M3字段中的位位置表示。在這種情況下,完成指令。
·使已啟用中斷變成未決。在這種情況下,可以使指令無效(指令執(zhí)行未進(jìn)展但返回到同一指令)或完成(指令執(zhí)行進(jìn)展到下一指令)。
·到達(dá)模型相關(guān)的時(shí)間限制。在該實(shí)例中,該限制未超過大約1毫秒。在這種情況下,完成指令。
·識(shí)別到模型相關(guān)的CPU確定的原因。在這種情況下,可以使指令無效或完成。
在延遲期間,可以多次取回第二操作數(shù)。在第二操作數(shù)的每次取回之前是特定操作數(shù)序列化。第二操作數(shù)的每次取回是塊并發(fā)的。
在比較和延遲指令正在延遲期間,當(dāng)快速連續(xù)地發(fā)生由另一個(gè)CPU或I/O子系統(tǒng)進(jìn)行的到第二操作數(shù)的多個(gè)存儲(chǔ)時(shí),可以發(fā)生也可以不發(fā)生該指令對照一個(gè)或多個(gè)先前存儲(chǔ)值的比較。
比較結(jié)果和對應(yīng)M3位的一個(gè)實(shí)例如下所示:
M3字段的位3被保留并且應(yīng)為0;否則,將來程序可能無法兼容運(yùn)行。
特殊條件:
·第二操作數(shù)將在對應(yīng)于其大小的整數(shù)邊界上,否則識(shí)別到規(guī)格異常。
·在問題狀態(tài)下,當(dāng)控制寄存器2的位60為0時(shí),識(shí)別到特權(quán)操作異常。
結(jié)果條件碼:
0 操作數(shù)相等
1 第一操作數(shù)低
2 第一操作數(shù)高
3 --
程序異常:
·訪問(取回,第二操作數(shù))
·操作異常(如果未安裝延遲工具)
·特權(quán)操作
·規(guī)格
·事務(wù)約束
編程備注:
1.當(dāng)M3字段的位位置0-2包含0時(shí),指令不會(huì)導(dǎo)致延遲。當(dāng)M3字段的位位置0-2包含111二進(jìn)制時(shí),發(fā)生延遲。
2.在完成COMPARE AND DELAY時(shí),由于來自另一個(gè)CPU或I/O子系統(tǒng)的存儲(chǔ)而不保證由條件碼指示的比較仍然為真。
3.取決于程序的要求,可能需要在更改第二操作數(shù)的值之前再次對其進(jìn)行檢驗(yàn),例如使用COMPARE AND SWAP(比較和交換)指令。
參考圖5A-5B描述關(guān)于COMPARE AND DELAY指令的處理的進(jìn)一步細(xì)節(jié)。參考圖5A,在一個(gè)實(shí)施例中,處理器獲得(例如,取回、接收、被提供或者以其它方式獲得)COMPARE AND DELAY指令(CAD或CADG)(步驟500),并且執(zhí)行該指令(步驟502)。在執(zhí)行中,從寄存器獲得第一操作數(shù)并且從存儲(chǔ)器取回第二操作數(shù)。第一操作數(shù)例如由程序基于程序想要針對什么延遲(例如,計(jì)數(shù)器到達(dá)特定值等)而預(yù)先加載。作為實(shí)例,例如由另一個(gè)處理器或I/O子系統(tǒng)來存儲(chǔ)第二操作數(shù)。
比較操作數(shù),從而提供比較結(jié)果,該比較結(jié)果是相等、操作數(shù)1小于操作數(shù)2(又稱為第一操作數(shù)低)或操作數(shù)1大于操作數(shù)2(又稱為第一操作數(shù)高)。檢查對應(yīng)于比較結(jié)果的M3字段的位位置0-2中的屏蔽位。例如,如果比較結(jié)果是相等,則檢查M3中的位0的值;如果比較結(jié)果是第一操作數(shù)小于第二操作數(shù),則檢查M3中的位1;以及如果比較結(jié)果是第一操作數(shù)大于第二操作數(shù),則檢查M3中的位2。
如果所檢查位的值被設(shè)置為0,則完成指令,并且結(jié)束COMPARE AND DELAY指令的處理。但是,如果對應(yīng)于比較結(jié)果的屏蔽位被設(shè)置為1,則延遲指令,例如直到發(fā)生預(yù)定義事件。
參考圖5B描述關(guān)于由獲得指令的處理器執(zhí)行COMPARE AND DELAY指令的進(jìn)一步細(xì)節(jié)。首先,判定執(zhí)行COMPARE AND DELAY指令(CAD或CADG)的處理器是否處于監(jiān)控狀態(tài)(查詢550)。如果處理器未處于監(jiān)控狀態(tài),則進(jìn)一步判定是否設(shè)置選定控制寄存器(例如,控制寄存器0)中的選定位(例如,位60),從而指示該指令被授權(quán)在問題狀態(tài)下執(zhí)行(查詢552)。如果將控制寄存器0的位60設(shè)置為0,則指令未被授權(quán)在問題狀態(tài)下執(zhí)行,并且出現(xiàn)異常,從而指示特權(quán)操作異常(步驟554)。但是,如果控制寄存器0的位60被設(shè)置為1,從而指示指令被授權(quán)在問題狀態(tài)下執(zhí)行,則處理繼續(xù)到查詢556。同樣,如果處理器處于監(jiān)控狀態(tài)(查詢550),則處理繼續(xù)到查詢556。
在查詢556,判定第二操作數(shù)是否被正確對齊(查詢556)。例如,針對CAD指令判定第二操作數(shù)是否在4字節(jié)邊界上,并且針對CADG指令判定第二操作數(shù)是否在8字節(jié)邊界上。如果第二操作數(shù)未正確對齊,則出現(xiàn)規(guī)格異常(步驟558)。但是,如果第二操作數(shù)被正確對齊,則從存儲(chǔ)器取回第二操作數(shù)(步驟558)。此外,從選定寄存器獲得第一操作數(shù)。
接下來,在一個(gè)實(shí)施例中,通過比較第一操作數(shù)與第二操作數(shù)確定條件碼(步驟560)。在該特定實(shí)例中,如果兩個(gè)操作數(shù)(OP1和OP2)相等,則將條件碼(CC)設(shè)置為0;如果操作數(shù)1小于操作數(shù)2,則將條件碼設(shè)置為1;以及如果操作數(shù)1大于操作數(shù)2,則將條件碼設(shè)置為等于2。條件碼表示比較結(jié)果,并且此類結(jié)果用于選擇要檢查的M3的屏蔽位。
檢查對應(yīng)于比較結(jié)果的屏蔽位,并且判定屏蔽條件為真或假(查詢562)。在一個(gè)實(shí)例中,屏蔽條件為真,前提是M3的位0為1并且CC等于0;或者M(jìn)3的位1為1并且CC等于1;或者M(jìn)3的位2為1并且CC等于2。即,如果對應(yīng)于比較結(jié)果(例如,相等、小于、大于)的M3字段的位位置0-2中的屏蔽位為1,則屏蔽條件為真。如果屏蔽條件為假,則完成指令,并且從最近操作數(shù)比較設(shè)置條件碼(步驟564)。
返回到查詢562,如果屏蔽條件為真,則延遲指令的完成(步驟566)。在一個(gè)實(shí)例中,延遲指令直到發(fā)生預(yù)定義事件。因此,在一個(gè)實(shí)例中,為了判定是繼續(xù)還是結(jié)束延遲,判定是否到達(dá)模型相關(guān)超時(shí)(查詢568)。如果是,則完成指令,并且基于最近操作數(shù)比較設(shè)置條件碼(步驟564)。但是,如果未到達(dá)模型相關(guān)超時(shí),則進(jìn)一步判定是否已使已啟用中斷變成未決(查詢570)。如果已使已啟用中斷變成未決,則采取中斷,并且使指令無效或完成(步驟572)。如果完成指令,則基于最近操作數(shù)比較設(shè)置條件碼。返回到查詢570,如果沒有中斷,則進(jìn)一步判定是否存在用于結(jié)束延遲的另一個(gè)CPU條件(例如,機(jī)器條件或另一個(gè)事件)(查詢574)。如果是,則使指令無效或完成(步驟576)。再次,如果完成指令,則基于最近操作數(shù)比較設(shè)置條件碼。但是,如果沒有用于結(jié)束延遲的另一個(gè)CPU條件,則處理繼續(xù)到重新取回第二操作數(shù)(步驟558)。即,延遲繼續(xù)。如在此所述,延遲繼續(xù),例如直到發(fā)生以下一個(gè)事件(它們沒有采取任何特定順序):
·導(dǎo)致延遲的操作數(shù)值的關(guān)系不再由其值為1的M3字段中的位位置表示;
·使已啟用中斷變成未決;
·到達(dá)模型相關(guān)的時(shí)間限制;或者
·識(shí)別到模型相關(guān)的CPU確定的條件。
盡管上文指時(shí)間限制,但可以使用任何其它限制。
上面詳細(xì)描述了包括COMPARE AND DELAY指令的延遲工具,這些指令用于延遲程序執(zhí)行直到發(fā)生定義的事件。一個(gè)CPU例如可以使用該延遲工具確保它與來自另一個(gè)CPU的信號(hào)同步。操作系統(tǒng)分派器可以使用這些指令和工具確保微細(xì)分派算法快速保持同步或者用于其它類型的控制。可以存在不同類型的用途。在進(jìn)一步實(shí)施例中,除了操作系統(tǒng)之外的程序也可以使用包括一個(gè)或多個(gè)延遲指令的延遲工具。
在一個(gè)方面,延遲工具提供例如SMT環(huán)境的同步CPU執(zhí)行(也被稱為線程)的高分辨率手段,以便實(shí)現(xiàn)有效的CPU分派。該工具在提供延遲中提供有效的處理器資源使用。在一個(gè)實(shí)例中,在多線程環(huán)境中,當(dāng)線程被延遲(即,使處理器無效使用)時(shí),能夠在處理器上分派另一個(gè)線程并且使其取得進(jìn)展。
多處理環(huán)境使用延遲工具的各個(gè)方面,其中特定指令流的進(jìn)度要與另一個(gè)指令流同步。通過使用存儲(chǔ)器中的公共可訪問的位置作為門控指示,能夠暫時(shí)延遲處理器,例如直到另一個(gè)處理器更新共享位置或者直到已經(jīng)過模型相關(guān)時(shí)間段。借助條件碼,提醒程序注意哪個(gè)原因結(jié)束了延遲。
除了上述之外,參考圖6A-6C描述延遲工具的各個(gè)方面。首先參考圖6A,處理器獲得機(jī)器指令(步驟600),并且執(zhí)行機(jī)器指令(步驟620)。在一個(gè)實(shí)施例中,機(jī)器指令包括:用于指定比較和延遲操作的操作碼602、用于獲得第一操作數(shù)的一個(gè)或多個(gè)第一字段604(例如,寄存器字段),以及用于獲得位于存儲(chǔ)位置中的第二操作數(shù)的一個(gè)或多個(gè)第二字段606(例如,基址字段、第一位移字段和第二位移字段)。在一個(gè)實(shí)施例中,處理器與另一個(gè)處理器和/或I/O子系統(tǒng)共享存儲(chǔ)位置,并且另一個(gè)處理器和/或I/O子系統(tǒng)用于存儲(chǔ)第二操作數(shù)。在另一實(shí)施例中,機(jī)器指令包括具有屏蔽指示符的屏蔽字段608。在一個(gè)特定實(shí)例中,屏蔽字段包括用于第一操作數(shù)與第二操作數(shù)相等的比較結(jié)果的第一屏蔽指示符、用于第一操作數(shù)小于第二操作數(shù)的比較結(jié)果的第二屏蔽指示符,以及用于第一操作數(shù)大于第二操作數(shù)的比較結(jié)果的第三屏蔽指示符。
在一個(gè)實(shí)施例中,用于獲得第一操作數(shù)的一個(gè)或多個(gè)第一字段包括寄存器字段,該寄存器字段包括寄存器的命名,并且該寄存器包括第一操作數(shù)604。在另一實(shí)施例中,通過將在基址字段中指定的寄存器的內(nèi)容添加到串接的第二位移字段和第一位移字段,提供第二操作數(shù)在存儲(chǔ)器中的地址(步驟610)。
在一個(gè)實(shí)施例中,如圖6B中所示,由處理器執(zhí)行機(jī)器指令包括比較第一操作數(shù)與第二操作數(shù)以便獲得比較結(jié)果(步驟630)。作為實(shí)例,從寄存器獲得第一操作數(shù)并且從存儲(chǔ)器取回第二操作數(shù)(步驟625)。在一個(gè)特定實(shí)施例中,首先,基于處理器未處于監(jiān)控狀態(tài),判定機(jī)器指令是否被授權(quán)在非特權(quán)狀態(tài)下執(zhí)行(查詢632)?;诟鶕?jù)處理器未處于監(jiān)控狀態(tài)而指示機(jī)器指令被授權(quán)在非特權(quán)狀態(tài)下執(zhí)行的判定,執(zhí)行第一操作數(shù)與第二操作數(shù)的比較(步驟636)。在一個(gè)實(shí)施例中,如果機(jī)器指令位被授權(quán),則出現(xiàn)異常(步驟634)。
此后,參考圖6C,判定對應(yīng)于比較結(jié)果的屏蔽指示符是否被設(shè)置為定義值(查詢638)?;趯?yīng)于比較結(jié)果的屏蔽指示符等于定義值(查詢638),延遲機(jī)器指令的完成直到發(fā)生預(yù)定義事件(步驟640)。在延遲期間,例如在多線程環(huán)境中,能夠執(zhí)行一個(gè)或多個(gè)其它線程的一個(gè)或多個(gè)其它機(jī)器指令或其它程序。
作為實(shí)例,預(yù)定義事件包括到達(dá)預(yù)定義限制(查詢642);使已啟用中斷變成未決(查詢644);發(fā)生選定處理器條件(查詢646);或者判定與從第一操作數(shù)與第二操作數(shù)的另一個(gè)比較產(chǎn)生的比較結(jié)果相對應(yīng)的屏蔽指示符未被設(shè)置為定義值(步驟648)。
在一個(gè)特定實(shí)例中,如果未到達(dá)預(yù)定義限制(查詢642)、未使已啟用中斷變成未決(查詢644)、以及未發(fā)生選定處理器條件(查詢646),則延遲繼續(xù)。重新取回第二操作數(shù)(步驟648),并且比較第一操作數(shù)與第二操作數(shù)(步驟650)。在查詢638,處理繼續(xù)。
在查詢638,如果對應(yīng)于比較結(jié)果的屏蔽指示符不等于定義值,則完成指令(例如,如果在延遲中,則結(jié)束延遲)(步驟660),并且確定條件碼(步驟622)。在一個(gè)實(shí)施例中,如果比較結(jié)果是第一操作數(shù)與第二操作數(shù)相等,則條件碼(CC)等于第一值(例如,0)。如果比較結(jié)果是第一操作數(shù)小于第二操作數(shù),則條件碼等于第二值(例如,1),以及如果比較結(jié)果是第一操作數(shù)大于第二操作數(shù),則條件碼等于第三值(例如,2)。
返回到查詢642,如果到達(dá)預(yù)定義限制,則處理繼續(xù)到步驟660,其中完成指令并且設(shè)置條件碼(步驟662)。
進(jìn)一步,返回到查詢644,如果使已啟用中斷變成未決或者發(fā)生選定處理器條件(查詢646),則完成指令并且設(shè)置條件碼,或者使指令無效(步驟664)。
如在此使用的,存儲(chǔ)裝置,中央存儲(chǔ)裝置、主存儲(chǔ)裝置、存儲(chǔ)器和主存儲(chǔ)器可以交換使用,除非通過使用隱式或顯式地另有說明。
參考圖7,在一個(gè)實(shí)例中,計(jì)算機(jī)程序產(chǎn)品700例如包括一個(gè)或多個(gè)非瞬時(shí)性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)702,其用于將計(jì)算機(jī)可讀程序代碼裝置、邏輯和/或指令704存儲(chǔ)在其上以便提供和促進(jìn)一個(gè)或多個(gè)實(shí)施例。
本發(fā)明可以是系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品。計(jì)算機(jī)程序產(chǎn)品可以包括計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其上載有用于使處理器實(shí)現(xiàn)本發(fā)明的各個(gè)方面的計(jì)算機(jī)可讀程序指令。
計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是可以保持和存儲(chǔ)由指令執(zhí)行設(shè)備使用的指令的有形設(shè)備。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是-但不限于-電存儲(chǔ)設(shè)備、磁存儲(chǔ)設(shè)備、光存儲(chǔ)設(shè)備、電磁存儲(chǔ)設(shè)備、半導(dǎo)體存儲(chǔ)設(shè)備或者上述的任意合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPROM或閃存)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、便攜式壓縮盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能盤(DVD)、記憶棒、軟盤、機(jī)械編碼設(shè)備、例如其上存儲(chǔ)有指令的打孔卡或凹槽內(nèi)凸起結(jié)構(gòu)、以及上述的任意合適的組合。這里所使用的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)不被解釋為瞬時(shí)信號(hào)本身,諸如無線電波或者其它自由傳播的電磁波、通過波導(dǎo)或其它傳輸介質(zhì)傳播的電磁波(例如,通過光纖電纜的光脈沖)、或者通過電線傳輸?shù)碾娦盘?hào)。
這里所描述的計(jì)算機(jī)可讀程序指令可以從計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)下載到各個(gè)計(jì)算/處理設(shè)備,或者通過網(wǎng)絡(luò)、例如因特網(wǎng)、局域網(wǎng)、廣域網(wǎng)和/或無線網(wǎng)下載到外部計(jì)算機(jī)或外部存儲(chǔ)設(shè)備。網(wǎng)絡(luò)可以包括銅傳輸電纜、光纖傳輸、無線傳輸、路由器、防火墻、交換機(jī)、網(wǎng)關(guān)計(jì)算機(jī)和/或邊緣服務(wù)器。每個(gè)計(jì)算/處理設(shè)備中的網(wǎng)絡(luò)適配卡或者網(wǎng)絡(luò)接口從網(wǎng)絡(luò)接收計(jì)算機(jī)可讀程序指令,并轉(zhuǎn)發(fā)該計(jì)算機(jī)可讀程序指令,以供存儲(chǔ)在各個(gè)計(jì)算/處理設(shè)備中的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。
用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)可讀程序指令可以是匯編指令、指令集架構(gòu)(ISA)指令、機(jī)器指令、機(jī)器相關(guān)指令、微代碼、固件指令、狀態(tài)設(shè)置數(shù)據(jù)、或者以一種或多種編程語言的任意組合編寫的源代碼或目標(biāo)代碼,所述編程語言包括面向?qū)ο蟮木幊陶Z言-諸如Smalltalk、C++等,以及常規(guī)的過程式編程語言-諸如“C”語言或類似的編程語言。計(jì)算機(jī)可讀程序指令可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)-包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)-連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。在一些實(shí)施例中,通過利用計(jì)算機(jī)可讀程序指令的狀態(tài)信息來個(gè)性化定制電子電路,例如可編程邏輯電路、現(xiàn)場可編程門陣列(FPGA)或可編程邏輯陣列(PLA),該電子電路可以執(zhí)行計(jì)算機(jī)可讀程序指令,從而實(shí)現(xiàn)本發(fā)明的各個(gè)方面。
這里參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述了本發(fā)明的各個(gè)方面。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)可讀程序指令實(shí)現(xiàn)。
這些計(jì)算機(jī)可讀程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,使得這些指令在通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行時(shí),產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的裝置。也可以把這些計(jì)算機(jī)可讀程序指令存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,這些指令使得計(jì)算機(jī)、可編程數(shù)據(jù)處理裝置和/或其它設(shè)備以特定方式工作,從而,存儲(chǔ)有指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)則包括一個(gè)制造品,其包括實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作的各個(gè)方面的指令。
也可以把計(jì)算機(jī)可讀程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)、其它可編程裝置、或其它設(shè)備上執(zhí)行的指令實(shí)現(xiàn)流程圖和/或框圖中的一個(gè)或多個(gè)方框中規(guī)定的功能/動(dòng)作。
附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的不同實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或指令的一部分,所述模塊、程序段或指令的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或動(dòng)作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
除了上述之外,可以由供應(yīng)客戶環(huán)境的管理的服務(wù)提供商提供、供應(yīng)、部署、管理、服務(wù)一個(gè)或多個(gè)方面等。例如,服務(wù)提供商可以建立、維護(hù)、支持計(jì)算機(jī)代碼和/或執(zhí)行用于一個(gè)或多個(gè)客戶的一個(gè)或多個(gè)方面的計(jì)算機(jī)基礎(chǔ)結(jié)構(gòu)等。作為實(shí)例,作為回報(bào),服務(wù)提供商可以在訂閱和/或收費(fèi)協(xié)議下從客戶收取付款。此外或備選地,服務(wù)提供商可以從廣告內(nèi)容銷售至一個(gè)或多個(gè)第三方而收取付款。
在一個(gè)方面,可以部署應(yīng)用以便執(zhí)行一個(gè)或多個(gè)實(shí)施例。作為一個(gè)實(shí)例,應(yīng)用的部署包括提供可操作以執(zhí)行一個(gè)或多個(gè)實(shí)施例的計(jì)算機(jī)基礎(chǔ)結(jié)構(gòu)。
作為進(jìn)一步方面,可以部署計(jì)算基礎(chǔ)結(jié)構(gòu),包括將計(jì)算機(jī)可讀代碼集成到計(jì)算系統(tǒng)中,其中代碼結(jié)合計(jì)算系統(tǒng)能夠執(zhí)行一個(gè)或多個(gè)實(shí)施例。
作為更進(jìn)一步方面,可以提供一種用于集成計(jì)算基礎(chǔ)結(jié)構(gòu)的過程,其包括將計(jì)算機(jī)可讀代碼集成到計(jì)算機(jī)系統(tǒng)中。計(jì)算機(jī)系統(tǒng)包括計(jì)算機(jī)可讀介質(zhì),其中計(jì)算機(jī)介質(zhì)包括一個(gè)或多個(gè)實(shí)施例。代碼結(jié)合計(jì)算機(jī)系統(tǒng)能夠執(zhí)行一個(gè)或多個(gè)實(shí)施例。
盡管上面描述了各種實(shí)施例,但其僅為實(shí)例。例如,其它架構(gòu)的計(jì)算環(huán)境能夠用于引入和使用一個(gè)或多個(gè)實(shí)施例。進(jìn)一步,可以使用不同指令、指令格式、指令字段和/或指令值。更進(jìn)一步,可以以不同方式提供和/或使用其它限制。在其它實(shí)例中,被比較的一個(gè)或多個(gè)操作數(shù)可能未在指令中被指定,但例如被暗示。在其它實(shí)施例中,單處理器程序可以執(zhí)行比較和延遲指令,并且取決于第二操作數(shù)(例如,由執(zhí)行該程序的處理器存儲(chǔ))的內(nèi)容,立即繼續(xù)進(jìn)行或者延遲該指令,例如直到超時(shí)或中斷。許多變型是可能的。
進(jìn)一步,其它類型的計(jì)算環(huán)境可以有益并且被使用。作為實(shí)例,適合于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng)為可使用的,其包括直接或通過系統(tǒng)總線間接耦合到存儲(chǔ)元件的至少兩個(gè)處理器。存儲(chǔ)元件例如包括在程序代碼的實(shí)際執(zhí)行期間采用的本地存儲(chǔ)器、大容量存儲(chǔ)裝置和高速緩沖存儲(chǔ)器,所述存儲(chǔ)元件對至少某程序代碼提供臨時(shí)存儲(chǔ)以便減少在執(zhí)行期間必須從大容量存儲(chǔ)裝置檢索代碼的次數(shù)。
輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點(diǎn)設(shè)備、DASD、磁帶、CD、DVD、拇指驅(qū)動(dòng)器(thumb drive)和其它存儲(chǔ)介質(zhì)等)可以直接或通過中間I/O控制器耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可以耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過中間專用或公共網(wǎng)絡(luò)耦合到其它數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)絡(luò)卡僅為可用類型的網(wǎng)絡(luò)適配器中的少數(shù)幾種。
參考圖8,描繪實(shí)現(xiàn)一個(gè)或多個(gè)實(shí)施例的主計(jì)算機(jī)系統(tǒng)5000的代表性組件。代表性主計(jì)算機(jī)5000包括與計(jì)算機(jī)存儲(chǔ)器(即,中央存儲(chǔ)裝置)5002通信的一個(gè)或多個(gè)CPU 5001,以及到存儲(chǔ)介質(zhì)設(shè)備5011和網(wǎng)絡(luò)5010以用于與其它計(jì)算機(jī)或SAN等通信的I/O接口。CPU 5001與具有架構(gòu)指令集和架構(gòu)功能的架構(gòu)兼容。CPU 5001可以具有存取寄存器轉(zhuǎn)換(ART)5012,其包括ART后備緩沖器(ALB)5013,用于選擇要由用于將存儲(chǔ)器的程序地址(虛擬地址)轉(zhuǎn)換為實(shí)地址的動(dòng)態(tài)地址轉(zhuǎn)換(DAT)5003使用的地址空間。DAT通常包括用于緩存轉(zhuǎn)換的轉(zhuǎn)換后備緩沖器(TLB)5007,以使得稍后對計(jì)算機(jī)存儲(chǔ)器5002的塊的訪問不需要地址轉(zhuǎn)換的延遲。通常,在計(jì)算機(jī)存儲(chǔ)器5002與處理器5001之間采用高速緩存5009。高速緩存5009可以為具有對一個(gè)以上CPU可用的大型高速緩存以及在大型高速緩存與每個(gè)CPU之間具有更小更快(更低級(jí)別)高速緩存的分層結(jié)構(gòu)。在某些實(shí)現(xiàn)中,分離更低級(jí)別的高速緩存以便提供用于指令取回和數(shù)據(jù)訪問的獨(dú)立低級(jí)別高速緩存。
在一個(gè)實(shí)施例中,由指令取回單元5004經(jīng)由高速緩存5009從存儲(chǔ)器5002取回指令。指令在指令解碼單元5006中進(jìn)行解碼,并且分派(在某些實(shí)施例中,與其它指令一起)到一個(gè)或多個(gè)指令執(zhí)行單元5008。通常,采用數(shù)個(gè)執(zhí)行單元5008,例如算術(shù)執(zhí)行單元、浮點(diǎn)執(zhí)行單元和分支指令執(zhí)行單元。由執(zhí)行單元執(zhí)行指令,從而根據(jù)需要從指令指定的寄存器或存儲(chǔ)器訪問操作數(shù)。如果從存儲(chǔ)器5002訪問(加載或存儲(chǔ))操作數(shù),則加載/存儲(chǔ)單元5005通常在被執(zhí)行指令的控制下處理訪問??梢栽谟布娐坊騼?nèi)部微代碼(固件)中執(zhí)行指令,或者由這兩者的組合執(zhí)行指令。
需注意的是,計(jì)算機(jī)系統(tǒng)包括本地(或主)存儲(chǔ)裝置中的信息,以及尋址、保護(hù)以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中一種類型的地址被轉(zhuǎn)換為另一種類型的地址的方式。一些主存儲(chǔ)裝置包括永久分配的存儲(chǔ)位置。主存儲(chǔ)裝置向系統(tǒng)提供直接可被尋址的快速訪問的數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)和程序在可以被處理之前都將(從輸入設(shè)備)被加載到主存儲(chǔ)裝置。
主存儲(chǔ)裝置可以包括一個(gè)或多個(gè)更小、更快速訪問的緩沖存儲(chǔ)裝置,有時(shí)被稱為高速緩存。高速緩存通常與CPU或I/O處理器物理地關(guān)聯(lián)。物理結(jié)構(gòu)以及不同存儲(chǔ)介質(zhì)的使用的效果,除了在性能上,通常不會(huì)被程序觀察到。
可以維護(hù)用于指令和數(shù)據(jù)操作數(shù)的單獨(dú)的高速緩存。高速緩存中的信息被維護(hù)為相鄰的字節(jié),所述字節(jié)位于被稱為高速緩存塊或高速緩存行(或簡稱為行)的整數(shù)邊界上。模型可以提供EXTRACT CACHE ATTRIBUTE指令,其返回高速緩存行的字節(jié)大小。模型也可以提供PREFETCH DATA和PREFETCH DATA RELATIVE LONG指令,其實(shí)現(xiàn)存儲(chǔ)到數(shù)據(jù)或指令高速緩存中的預(yù)取,或者數(shù)據(jù)從高速緩存的釋放。
將存儲(chǔ)裝置視為位的長水平字串。對于多數(shù)操作,對存儲(chǔ)裝置的存取以從左至右的順序進(jìn)行。將位字串再分為八個(gè)位的單元。八位單元被稱為字節(jié),其為所有信息格式的基礎(chǔ)構(gòu)建塊。通過唯一非負(fù)整數(shù)識(shí)別存儲(chǔ)裝置中的每一字節(jié)位置,其為該字節(jié)位置的地址或簡單地為字節(jié)地址。相鄰字節(jié)位置具有連續(xù)地址,在左側(cè)自0開始且以從左至右的順序進(jìn)行。地址為無符號(hào)的二進(jìn)制整數(shù)且為24個(gè)、31個(gè)或64個(gè)位。
信息在存儲(chǔ)裝置與CPU或通道子系統(tǒng)之間傳輸,一次一個(gè)字節(jié)或一組字節(jié)。除非另有指定,否則在(例如)z/Architecture中,存儲(chǔ)裝置中的一組字節(jié)由該組的最左字節(jié)尋址。該組中的字節(jié)的數(shù)目由待執(zhí)行的操作隱含或顯式地指定。當(dāng)用于CPU操作中時(shí),一組字節(jié)被稱為字段。在每一組字節(jié)內(nèi),在(例如)z/Architecture中,位以從左至右的順序編號(hào)。在z/Architecture中,最左位有時(shí)被稱作“高階”位,并且最右位被稱為“低階”位。然而,位編號(hào)并非存儲(chǔ)地址,僅可尋址字節(jié)。為對存儲(chǔ)裝置中的字節(jié)的個(gè)體位進(jìn)行操作,存取整個(gè)字節(jié)。字節(jié)中的位從左至右(在例如z/Architecture中)被編號(hào)為0至7。針對24位地址,地址中的位可被編號(hào)為8至31或40至63,或針對31位地址,其被編號(hào)為1至31或33至63;針對64位地址,所述位被編號(hào)為0至63。在一個(gè)實(shí)例中,位8至31及1至31適用于處于為32個(gè)位寬的一位置(例如,寄存器)中的地址,而位40至63及33至63適用于處于64位寬位置中的地址。在多個(gè)字節(jié)的任何其他固定長度格式內(nèi),構(gòu)成該格式的位自0開始連續(xù)編號(hào)。出于錯(cuò)誤檢測的目的且優(yōu)選地用于校正,一個(gè)或多個(gè)校驗(yàn)位可隨每一字節(jié)或隨一組字節(jié)傳輸。這些校驗(yàn)位由機(jī)器自動(dòng)產(chǎn)生且不可由程序直接控制。存儲(chǔ)容量以字節(jié)數(shù)表達(dá)。當(dāng)存儲(chǔ)裝置-操作數(shù)字段的長度通過指令的操作碼暗示時(shí),字段被稱為具有固定長度,其可為一個(gè)、兩個(gè)、四個(gè)、八個(gè)或十六個(gè)字節(jié)??舍槍σ恍┲噶畎凳据^大字段。當(dāng)不暗示而是顯式聲明存儲(chǔ)裝置-操作數(shù)字段的長度時(shí),字段被稱為具有可變長度??勺冮L度操作數(shù)的長度可變化一個(gè)字節(jié)的增量(或?qū)τ谝恍┲噶?,以兩個(gè)字節(jié)的倍數(shù)或其他倍數(shù)變化)。當(dāng)將信息放置于存儲(chǔ)裝置中時(shí),替換僅包括在指定字段中的那些字節(jié)位置的內(nèi)容,即使至存儲(chǔ)裝置的物理路徑的寬度可大于所存儲(chǔ)的字段的長度。
某些信息單元將在存儲(chǔ)裝置中的整體邊界上。當(dāng)信息單元的存儲(chǔ)地址為以字節(jié)為單位的單元長度的倍數(shù)時(shí),對于該信息單元,邊界被稱為整體的。為整體邊界上的2、4、8 16及32字節(jié)的字段給出特殊名稱。半字(halfword)為二字節(jié)邊界上的兩個(gè)連續(xù)字節(jié)的組且為指令的基礎(chǔ)構(gòu)建塊。字(word)為在四字節(jié)邊界上的四個(gè)連續(xù)字節(jié)的組。雙字(doubleword)為在八字節(jié)邊界上的八個(gè)連續(xù)字節(jié)的組。四倍字(quadword)為在16字節(jié)邊界上的16個(gè)連續(xù)字節(jié)的組。八倍字(octoword)為在32字節(jié)邊界上的32個(gè)連續(xù)字節(jié)的組。當(dāng)存儲(chǔ)地址指定半字、字、雙字、四倍字及八倍字時(shí),地址的二進(jìn)制表示分別含有一個(gè)、兩個(gè)、三個(gè)、四個(gè)或五個(gè)最右0位。指令將在二字節(jié)整體邊界上。多數(shù)指令的存儲(chǔ)操作數(shù)不具有邊界對準(zhǔn)要求。
在針對指令及數(shù)據(jù)操作數(shù)實(shí)施獨(dú)立高速緩存的設(shè)備上,無論存儲(chǔ)是否更改隨后取回的指令,如果程序存儲(chǔ)至隨后取回指令的高速緩存線中,則可能經(jīng)歷顯著延遲。
在一個(gè)實(shí)例中,可通過軟件(有時(shí)被稱作許可內(nèi)碼、固件、微碼、毫碼或微微碼及類似者,以上中的任一者將與一個(gè)或多個(gè)實(shí)施例相一致)實(shí)施該實(shí)施例。參考圖8,體現(xiàn)一個(gè)或多個(gè)方面的軟件程序代碼可由主機(jī)系統(tǒng)5000的處理器5001自長期存儲(chǔ)介質(zhì)設(shè)備5011(諸如CD-ROM驅(qū)動(dòng)器或磁帶驅(qū)動(dòng)器或硬盤驅(qū)動(dòng)器)存取。軟件程序代碼可體現(xiàn)于多種已知介質(zhì)中的任一者上以與數(shù)據(jù)處理系統(tǒng)(諸如,磁盤、硬盤驅(qū)動(dòng)器或CD-ROM)使用。代碼可分布于此類介質(zhì)上,或可自計(jì)算機(jī)存儲(chǔ)器5002或一個(gè)計(jì)算機(jī)系統(tǒng)的存儲(chǔ)裝置經(jīng)由至其他計(jì)算機(jī)系統(tǒng)的網(wǎng)絡(luò)5010分發(fā)給用戶,以供此類其他系統(tǒng)的用戶使用。
軟件程序代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件及一個(gè)或多個(gè)應(yīng)用程序的功能及交互。在程序代碼可用于由處理器5001進(jìn)行處理的情況下,通常自存儲(chǔ)介質(zhì)設(shè)備5011將程序代碼分頁至相對較高速度的計(jì)算機(jī)存儲(chǔ)裝置5002。在存儲(chǔ)器中、在物理介質(zhì)上體現(xiàn)軟件程序代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件程序代碼的技術(shù)及方法是公知的且本文將不對其進(jìn)行進(jìn)一步論述。在被創(chuàng)建及存儲(chǔ)于有形介質(zhì)(包括(但不限于)電子存儲(chǔ)模塊(RAM)、閃存、光盤(CD)、DVD、磁帶及其類似者)上時(shí),程序代碼常被稱作“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)通??捎蓛?yōu)選地在計(jì)算機(jī)系統(tǒng)中的處理電路讀取以供處理電路執(zhí)行。
圖9示出其中可實(shí)施一個(gè)或多個(gè)實(shí)施例的代表性工作站或服務(wù)器硬件系統(tǒng)。圖9的系統(tǒng)5020包括代表性基本計(jì)算機(jī)系統(tǒng)5021,諸如個(gè)人計(jì)算機(jī)、工作站或服務(wù)器,包括可選的周邊設(shè)備?;居?jì)算機(jī)系統(tǒng)5021包括一個(gè)或多個(gè)處理器5026及用于根據(jù)已知技術(shù)連接系統(tǒng)5021的處理器5026與其他組件及啟用其間的通信的總線。總線將處理器5026連接至存儲(chǔ)器5025及長期存儲(chǔ)裝置5027,其可(例如)包括硬盤驅(qū)動(dòng)器(包括(例如)磁介質(zhì)、CD、DVD及閃存中的任一者)或磁帶驅(qū)動(dòng)器。系統(tǒng)5021亦可包括用戶接口適配器,其經(jīng)由總線將微處理器5026連接至一個(gè)或多個(gè)接口設(shè)備(諸如鍵盤5024、鼠標(biāo)5023、打印機(jī)/掃描儀5030,和/或其他接口設(shè)備),所述一個(gè)或多個(gè)接口設(shè)備可為任何用戶接口設(shè)備,諸如觸敏式屏幕、數(shù)字化輸入板(entry pad)等??偩€亦經(jīng)由顯示器適配器將顯示設(shè)備5022(諸如LCD屏幕或監(jiān)視器)連接至微處理器5026。
系統(tǒng)5021可借助能夠與網(wǎng)絡(luò)5029通信的網(wǎng)絡(luò)適配器與其他計(jì)算機(jī)或計(jì)算機(jī)的網(wǎng)絡(luò)通信5028。實(shí)例網(wǎng)絡(luò)適配器為通信通道、令牌環(huán)、以太網(wǎng)或調(diào)制解調(diào)器。備選地,系統(tǒng)5021可使用諸如CDPD(蜂窩數(shù)字分組數(shù)據(jù))卡的無線接口進(jìn)行通信。系統(tǒng)5021可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的此類其他計(jì)算機(jī)相關(guān)聯(lián),或系統(tǒng)5021可為與另一計(jì)算機(jī)的客戶機(jī)/服務(wù)器配置中的客戶機(jī)等。所有這些配置以及適當(dāng)通信硬件及軟件在本領(lǐng)域中是公知的。
圖10示出其中可實(shí)施一個(gè)或多個(gè)實(shí)施例的數(shù)據(jù)處理網(wǎng)絡(luò)5040。數(shù)據(jù)處理網(wǎng)絡(luò)5040可包括多個(gè)個(gè)體網(wǎng)絡(luò),諸如無線網(wǎng)絡(luò)及有線網(wǎng)絡(luò),以上中的每一者可包括多個(gè)個(gè)體工作站5041、5042、5043、5044。另外,如本領(lǐng)域技術(shù)人員將了解的,可包括一個(gè)或多個(gè)LAN,其中LAN可包括耦合至主機(jī)處理器的多個(gè)智能工作站。
仍參考圖10,網(wǎng)絡(luò)亦可包括大型計(jì)算機(jī)或服務(wù)器,諸如,網(wǎng)關(guān)計(jì)算機(jī)(客戶機(jī)服務(wù)器5046)或應(yīng)用服務(wù)器(可存取數(shù)據(jù)存儲(chǔ)庫且亦可直接自工作站5045存取的遠(yuǎn)程服務(wù)器5048)。網(wǎng)關(guān)計(jì)算機(jī)5046充當(dāng)至每一個(gè)體網(wǎng)絡(luò)的進(jìn)入點(diǎn)。在將一個(gè)網(wǎng)絡(luò)連接協(xié)議連接至另一者時(shí),需要網(wǎng)關(guān)。網(wǎng)關(guān)5046可借助通信鏈路優(yōu)選地耦接至另一網(wǎng)絡(luò)(例如,因特網(wǎng)5047)。網(wǎng)關(guān)5046亦可使用通信鏈路直接耦接至一個(gè)或多個(gè)工作站5041、5042、5043、5044??梢岳每蓮膰H商業(yè)機(jī)器公司獲得的IBM eServer System z服務(wù)器來實(shí)現(xiàn)網(wǎng)關(guān)計(jì)算機(jī)。
同時(shí)參考圖9及圖10,可體現(xiàn)一個(gè)或多個(gè)方面的軟件編程碼5031可由系統(tǒng)5020的處理器5026自諸如CD-ROM驅(qū)動(dòng)器或硬盤驅(qū)動(dòng)器的長期存儲(chǔ)介質(zhì)5027存取。軟件編程碼可體現(xiàn)于多種已知介質(zhì)中的任一者上以與數(shù)據(jù)處理系統(tǒng)(諸如,磁盤、硬盤驅(qū)動(dòng)器或CD-ROM)使用。所述代碼可分布于此類介質(zhì)上,或可自一個(gè)計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器或存儲(chǔ)裝置經(jīng)由至其他計(jì)算機(jī)系統(tǒng)的網(wǎng)絡(luò)分發(fā)給用戶,以供此類其他系統(tǒng)的用戶使用。
備選地,編程碼可體現(xiàn)于存儲(chǔ)器5025中且由處理器5026使用處理器總線存取。此類編程碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件及一個(gè)或多個(gè)應(yīng)用程序5032的功能及交互。在程序代碼可用于由處理器5026進(jìn)行處理的情況下,通常自存儲(chǔ)介質(zhì)5027將程序代碼分頁至高速存儲(chǔ)器5025。在存儲(chǔ)器中、在物理介質(zhì)上體現(xiàn)軟件編程碼和/或經(jīng)由網(wǎng)絡(luò)分布軟件程序代碼的技術(shù)及方法是公知的且本文將不對其進(jìn)行進(jìn)一步論述。在被創(chuàng)建及存儲(chǔ)于有形介質(zhì)(包括(但不限于)電子存儲(chǔ)模塊(RAM)、閃存、光盤(CD)、DVD、磁帶及其類似者)上時(shí),程序代碼常被稱作“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)通常可由優(yōu)選地在計(jì)算機(jī)系統(tǒng)中的處理電路讀取以供處理電路執(zhí)行。
可最容易用于處理器的高速緩存(通常比處理器的其他高速緩存更快及更小)為最低(L1或?qū)蛹?jí)1)的高速緩存且主存儲(chǔ)(主存儲(chǔ)器)為最高層級(jí)高速緩存(如果存在3個(gè)層級(jí),則為L3)。最低層級(jí)高速緩存常劃分為保存待執(zhí)行的機(jī)器指令的指令高速緩存(I-高速緩存)及保存數(shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。
參考圖11,描繪處理器5026的例示性處理器實(shí)施例。通常,一個(gè)或多個(gè)層級(jí)的高速緩存5053用于緩沖存儲(chǔ)器塊以便改進(jìn)處理器性能。高速緩存5053為保存可能將使用的存儲(chǔ)器數(shù)據(jù)的高速緩存線的高速緩沖器。通常,高速緩存線為64個(gè)、128個(gè)或256個(gè)字節(jié)的存儲(chǔ)器數(shù)據(jù)。獨(dú)立高速緩存常用于緩存指令而非用于緩存數(shù)據(jù)。經(jīng)常通過本領(lǐng)域中公知的各種“窺探(snoop)”算法提供高速緩存一致性(線的復(fù)本在存儲(chǔ)器及高速緩存中的同步)。處理器系統(tǒng)的主存儲(chǔ)裝置5025常被稱作高速緩存。在具有4個(gè)層級(jí)的高速緩存5053的處理器系統(tǒng)中,主存儲(chǔ)裝置5025有時(shí)被稱作層級(jí)5(L5)高速緩存,這是因?yàn)槠渫ǔ8烨覂H保存可用于計(jì)算機(jī)系統(tǒng)的非易失性存儲(chǔ)器(DASD、磁帶等)的一部分。主存儲(chǔ)裝置5025“緩存”由操作系統(tǒng)頁入及頁出主存儲(chǔ)裝置5025的數(shù)據(jù)頁面。
程序計(jì)數(shù)器(指令計(jì)數(shù)器)5061保持待執(zhí)行的當(dāng)前指令的地址追蹤。z/Architecture處理器中的程序計(jì)數(shù)器為64個(gè)位且可被截?cái)喑?1或24個(gè)位以支持先前尋址限制。程序計(jì)數(shù)器通常體現(xiàn)于計(jì)算機(jī)的PSW(程序狀態(tài)字)中,以使得其在上下文切換期間持續(xù)。因此,正在進(jìn)行中的具有程序計(jì)數(shù)器值的程序可由(例如)操作系統(tǒng)(自程序環(huán)境至操作系統(tǒng)環(huán)境的上下文切換)中斷。在程序不活動(dòng)時(shí),程序的PSW維持程序計(jì)數(shù)器值,并且在操作系統(tǒng)正在執(zhí)行中時(shí),使用操作系統(tǒng)的(PSW中的)程序計(jì)數(shù)器。通常,程序計(jì)數(shù)器的增量等于當(dāng)前指令的字節(jié)數(shù)。RISC(精簡指令集計(jì)算)指令通常為長度固定的,而CISC(復(fù)雜指令集計(jì)算)指令通常為長度可變的。IBM z/Architecture的指令為具有2個(gè)、4個(gè)或6個(gè)字節(jié)的長度的CISC指令。通過(例如)分支指令的上下文切換操作或分支采取操作來修改程序計(jì)數(shù)器5061。在上下文切換操作中,將當(dāng)前程序計(jì)數(shù)器值連同關(guān)于正執(zhí)行的程序的其他狀態(tài)信息(諸如條件代碼)保存于程序狀態(tài)字中,并且加載新程序計(jì)數(shù)器值,該值指向新程序模塊的待執(zhí)行的指令。執(zhí)行分支采取操作以便通過將分支指令的結(jié)果加載至程序計(jì)數(shù)器5061中而準(zhǔn)許程序作出決策或在程序內(nèi)循環(huán)。
通常,指令取回單元5055用于代表處理器5026取回指令。取回單元取回“下一順序指令”、分支采取指令的目標(biāo)指令或上下文切換后的程序的第一指令?,F(xiàn)代指令取回單元常使用預(yù)取回技術(shù)以基于可使用預(yù)取回指令的可能性來以推測方式預(yù)取回指令。舉例而言,取回單元可取回16個(gè)字節(jié)的指令,其包括下一順序指令及額外字節(jié)的其他順序指令。
接著由處理器5026執(zhí)行被取回的指令。在一個(gè)實(shí)施例中,將被取回的指令(多個(gè))傳遞至取回單元的分派單元5056。分派單元將指令(多個(gè))解碼且將關(guān)于已解碼指令(多個(gè))的信息轉(zhuǎn)發(fā)至適當(dāng)單元5057、5058、5060。執(zhí)行單元5057通常將自指令取回單元5055接收關(guān)于已解碼算術(shù)指令的信息且將根據(jù)指令的操作碼對操作數(shù)執(zhí)行算術(shù)運(yùn)算。優(yōu)選地自存儲(chǔ)器5025、架構(gòu)化寄存器5059或自正被執(zhí)行的指令的立即字段提供操作數(shù)至執(zhí)行單元5057。在存儲(chǔ)時(shí),將執(zhí)行結(jié)果存儲(chǔ)于存儲(chǔ)器5025、寄存器5059中或存儲(chǔ)于其他機(jī)器硬件(諸如控制寄存器、PSW寄存器及類似者)中。
使用動(dòng)態(tài)地址轉(zhuǎn)換5062及可選地使用存取寄存器轉(zhuǎn)換5063將虛擬地址轉(zhuǎn)變?yōu)閷?shí)地址。
處理器5026通常具有用于執(zhí)行指令的功能的一個(gè)或多個(gè)單元5057、5058、5060。參考圖12A,執(zhí)行單元5057可借助接口連接邏輯5071與架構(gòu)化通用寄存器5059、解碼/分派單元5056、加載存儲(chǔ)單元5060及其他處理器單元5065通信5071。執(zhí)行單元5057可使用數(shù)個(gè)寄存器電路5067、5068、5069以保存信息,算術(shù)邏輯單元(ALU)5066將基于所述信息進(jìn)行操作。ALU執(zhí)行諸如加法、減法、乘法及除法的算術(shù)運(yùn)算以及諸如“與”、“或”及“異或(XOR)”、循環(huán)及移位的邏輯功能。優(yōu)選地,ALU支持設(shè)計(jì)相關(guān)的專用運(yùn)算。其他電路可提供其他架構(gòu)化工具5072,包括(例如)條件代碼及恢復(fù)支持邏輯。通常,將ALU運(yùn)算的結(jié)果保存在輸出寄存器電路5070中,其可將結(jié)果轉(zhuǎn)發(fā)至多種其他處理功能。存在處理器單元的許多配置,本描述僅意欲提供對一個(gè)實(shí)施例的代表性理解。
ADD指令例如在具有算術(shù)和邏輯功能的執(zhí)行單元5057中執(zhí)行,而浮點(diǎn)指令例如在具有專門浮點(diǎn)能力的浮點(diǎn)執(zhí)行中執(zhí)行。優(yōu)選地,執(zhí)行單元通過針對操作數(shù)執(zhí)行操作碼定義的功能來處理由指令標(biāo)識(shí)的操作數(shù)。例如,執(zhí)行單元5057可以對在由指令的寄存器字段標(biāo)識(shí)的兩個(gè)寄存器5059中找到的操作數(shù)執(zhí)行ADD指令。
執(zhí)行單元5057對兩個(gè)操作數(shù)執(zhí)行算術(shù)加法并將結(jié)果存儲(chǔ)在第三操作數(shù)中,其中第三操作數(shù)可以是第三寄存器或兩個(gè)源寄存器之一。執(zhí)行單元優(yōu)選地使用算術(shù)邏輯單元(ALU)5066,算術(shù)邏輯單元(ALU)5066能夠執(zhí)行各種邏輯功能(例如Shift、Rotate、“與”、“或”和“異或”)以及各種代數(shù)功能(包括加、減、乘、除中的任一種)。有些ALU 5066設(shè)計(jì)用于標(biāo)量運(yùn)算而有些用于浮點(diǎn)運(yùn)算。根據(jù)體系結(jié)構(gòu),數(shù)據(jù)可以是大端(Big Endian)(其中最低有效字節(jié)在最高字節(jié)地址處)或小端(其中最低有效字節(jié)在最低字節(jié)地址處)。IBM z/Architecture是大端。根據(jù)體系結(jié)構(gòu),帶符號(hào)字段可以是符號(hào)以及1的補(bǔ)碼或2的補(bǔ)碼的量值。2的補(bǔ)碼數(shù)是有利的,因?yàn)锳LU不需要設(shè)計(jì)減法功能,原因是采用2的補(bǔ)碼的負(fù)值或正值在ALU內(nèi)僅需要加法。數(shù)字通常以速記法描述,例如其中一個(gè)12位字段定義一個(gè)4,096字節(jié)塊的地址,并且通常被描述為4KB(千字節(jié))塊。
參考圖12B,通常將用于執(zhí)行分支指令的分支指令信息發(fā)送到分支單元5058,分支單元5058通常采用分支預(yù)測算法(例如分支歷史表5082)以便在其他條件運(yùn)算完成之前預(yù)測分支的結(jié)果。在條件運(yùn)算完成之前,將取回并推測地執(zhí)行當(dāng)前分支指令的目標(biāo)。當(dāng)條件運(yùn)算完成時(shí),根據(jù)條件運(yùn)算的條件以及推測的結(jié)果,將完成或丟棄推測地執(zhí)行的分支指令。典型的分支指令可以測試條件碼并分支到目標(biāo)地址,如果條件碼滿足分支指令的分支要求,則可以根據(jù)若干數(shù)值(例如包括在寄存器字段或指令的立即字段中找到的數(shù)值)計(jì)算目標(biāo)地址。分支單元5058可以采用具有多個(gè)輸入寄存器電路5075、5076、5077以及一個(gè)輸出寄存器電路5080的ALU 5074。分支單元5058可以例如與通用寄存器5059、解碼分派單元5056或其他電路5073通信5081。
一組指令的執(zhí)行可以因各種原因被中斷,這些原因例如包括由操作系統(tǒng)發(fā)起的上下文切換、導(dǎo)致上下文切換的程序異常或錯(cuò)誤、導(dǎo)致上下文切換的I/O中斷信號(hào)或多個(gè)程序的多線程活動(dòng)(在多線程環(huán)境中)。優(yōu)選地,上下文切換操作將保存有關(guān)當(dāng)前正在執(zhí)行的程序的狀態(tài)信息,然后加載有關(guān)被調(diào)用的其他程序的狀態(tài)信息。例如,可以將狀態(tài)信息保存在硬件寄存器或存儲(chǔ)器中。狀態(tài)信息優(yōu)選地包括指向要執(zhí)行的下一指令的程序計(jì)數(shù)器值、條件碼、存儲(chǔ)器轉(zhuǎn)換信息以及架構(gòu)寄存器內(nèi)容??梢杂捎布娐?、應(yīng)用程序、操作系統(tǒng)程序或固件代碼(微碼、微微碼或許可內(nèi)碼(LIC))單獨(dú)或聯(lián)合實(shí)施上下文切換活動(dòng)。
處理器根據(jù)指令定義的方法存取操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供顯式指向通用寄存器或?qū)S眉拇嫫?例如,浮點(diǎn)寄存器)的一個(gè)或多個(gè)寄存器字段。指令可利用由操作碼字段識(shí)別為操作數(shù)的隱含寄存器。指令可利用操作數(shù)的存儲(chǔ)器位置。操作數(shù)的存儲(chǔ)器位置可由寄存器、立即字段或寄存器及立即字段的組合提供,如由以下各者所例示的:z/Architecture長位移工具,其中指令定義基寄存器、索引寄存器及立即字段(位移字段),以上各者加在一起提供(例如)存儲(chǔ)器中的操作數(shù)的地址。除非另有指示,否則本文中的位置通常暗示主存儲(chǔ)器(主存儲(chǔ)裝置)中的位置。
參考圖12C,處理器使用加載/存儲(chǔ)單元5060存取存儲(chǔ)裝置。加載/存儲(chǔ)單元5060可通過獲得存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址及將所述操作數(shù)加載到寄存器5059或另一存儲(chǔ)器5053位置中來執(zhí)行加載操作,或可通過獲得存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址及將自寄存器5059或另一存儲(chǔ)器5053位置獲得的數(shù)據(jù)存儲(chǔ)于存儲(chǔ)器5053中的目標(biāo)操作數(shù)位置來執(zhí)行存儲(chǔ)操作。加載/存儲(chǔ)單元5060可為推測式的且可以以相對于指令順序無序的順序來存取存儲(chǔ)器;然而,加載/存儲(chǔ)單元5060用于對程序維持按次序執(zhí)行指令的表象。加載/存儲(chǔ)單元5060可與通用寄存器5059、解碼/分派單元5056、高速緩存/存儲(chǔ)器接口5053或其他組件5083通信5084,并且包括各種寄存器電路5086、5087、5088及5089、ALU 5085及控制邏輯5090以計(jì)算存儲(chǔ)地址及提供管線定序以保持操作有序。一些操作可為無序的,但加載/存儲(chǔ)單元提供功能性以使無序操作對程序表現(xiàn)為已按次序執(zhí)行,如本領(lǐng)域中公知的那樣。
優(yōu)選地,應(yīng)用程序“看到”的地址通常被稱為虛擬地址。虛擬地址有時(shí)被稱為“邏輯地址”和“有效地址”。這些地址是虛擬的,因?yàn)樗鼈兺ㄟ^各種動(dòng)態(tài)地址轉(zhuǎn)換(DAT)技術(shù)之一被重定向到物理存儲(chǔ)器位置,這些技術(shù)包括但不限于僅使用偏移值向虛擬地址添加前綴、通過一個(gè)或多個(gè)轉(zhuǎn)換表轉(zhuǎn)換虛擬地址,所述轉(zhuǎn)換表優(yōu)選地單獨(dú)或同時(shí)包括至少一個(gè)段表和頁表,優(yōu)選地,所述段表具有指向頁表的表項(xiàng)。在z/Architecture中,提供了包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表以及可選的頁表的轉(zhuǎn)換層次結(jié)構(gòu)。通常通過使用轉(zhuǎn)換后備緩沖器(TLB)提高地址轉(zhuǎn)換的性能,轉(zhuǎn)換后備緩沖器包括將虛擬地址映射到關(guān)聯(lián)的物理存儲(chǔ)器位置的表項(xiàng)。當(dāng)DAT使用轉(zhuǎn)換表來轉(zhuǎn)換虛擬地址時(shí),將創(chuàng)建表項(xiàng)。然后,虛擬地址的后續(xù)使用能夠使用快速TLB而不是緩慢順序轉(zhuǎn)換表存取的表項(xiàng)??梢杂砂↙RU(最近最少使用)在內(nèi)的各種替換算法管理TLB內(nèi)容。
如果處理器是多處理器系統(tǒng)的處理器,則每個(gè)處理器都有責(zé)任保持諸如I/O、高速緩存、TLB以及存儲(chǔ)器之類的共享資源互鎖以實(shí)現(xiàn)一致性。通常,將使用“窺探”技術(shù)保持高速緩存一致性。在窺探環(huán)境中,每個(gè)高速緩存行可以被標(biāo)記為處于共享狀態(tài)、獨(dú)占狀態(tài)、已更改狀態(tài)、無效狀態(tài)等中的任何一種狀態(tài)以便于共享。
I/O單元5054(圖11)提供用于附接至周邊設(shè)備(包括(例如)磁帶、光盤、打印機(jī)、顯示器及網(wǎng)絡(luò))的構(gòu)件給處理器。I/O單元通常由軟件驅(qū)動(dòng)器呈現(xiàn)至計(jì)算機(jī)程序。在大型計(jì)算機(jī)(諸如來自的System z)中,通道適配器及開放系統(tǒng)適配器為在操作系統(tǒng)與周邊設(shè)備之間提供通信的大型計(jì)算機(jī)的I/O單元。
此外,其他類型的計(jì)算環(huán)境可受益于一個(gè)或多個(gè)方面。作為一實(shí)例,環(huán)境可包括仿真器(例如,軟件或其他仿真機(jī)制),其中特定架構(gòu)(包括(例如)指令執(zhí)行、架構(gòu)化功能(諸如,地址轉(zhuǎn)換)及架構(gòu)化寄存器)或其子集被仿真(例如,在具有處理器及存儲(chǔ)器的本機(jī)計(jì)算機(jī)系統(tǒng)上)。在此類環(huán)境中,仿真器的一個(gè)或多個(gè)仿真功能能夠?qū)嵤┮粋€(gè)或多個(gè)實(shí)施例,即使執(zhí)行仿真器的計(jì)算機(jī)可能具有不同于正被仿真的能力的架構(gòu)也是如此。作為一個(gè)實(shí)例,在仿真模式中,對特定指令或正被仿真的操作進(jìn)行解碼,并且構(gòu)建適當(dāng)仿真功能以實(shí)施個(gè)體指令或操作。
在一仿真環(huán)境中,主計(jì)算機(jī)包括(例如):存儲(chǔ)器,其存儲(chǔ)指令及數(shù)據(jù);指令取回單元,其自存儲(chǔ)器取回指令,并且可選地,提供所取回的指令的本地緩沖;指令解碼單元,其接收所取回的指令且判定已取回指令的類型;及指令執(zhí)行單元,其執(zhí)行所述指令。執(zhí)行可包括將數(shù)據(jù)自存儲(chǔ)器加載至寄存器中;將數(shù)據(jù)自寄存器存儲(chǔ)回至存儲(chǔ)器;或執(zhí)行某一類型的算術(shù)或邏輯運(yùn)算(如由解碼單元所判定的)。在一個(gè)實(shí)例中,在軟件中實(shí)施每一單元。舉例而言,由所述單元執(zhí)行的操作被實(shí)施為仿真器軟件內(nèi)的一個(gè)或多個(gè)子例程。
更具體地說,在大型計(jì)算機(jī)中,經(jīng)常由編程人員(通常為當(dāng)今的“C”編程人員)借助編譯器應(yīng)用使用架構(gòu)化機(jī)器指令??杀緳C(jī)地在z/Architecture服務(wù)器中或替代地在執(zhí)行其他架構(gòu)的機(jī)器中執(zhí)行存儲(chǔ)于存儲(chǔ)介質(zhì)中的這些指令。這些指令可在現(xiàn)有及在未來大型計(jì)算機(jī)服務(wù)器、及在的其他機(jī)器(例如,Power Systems服務(wù)器和System x服務(wù)器)上進(jìn)行仿真??稍谑褂糜葾MD及其他公司制造的硬件的多種機(jī)器上運(yùn)行Linux的機(jī)器中執(zhí)行這些指令。除了在z/Architecture下的該硬件上執(zhí)行以外,可使用Linux以及使用由Hercules、UMX或FSI(Fundamental Software公司)的仿真的機(jī)器,其中總體上執(zhí)行處于仿真模式中。在仿真模式中,由本機(jī)處理器執(zhí)行仿真軟件以仿真所仿真處理器的架構(gòu)。
本機(jī)處理器通常執(zhí)行包括固件或本機(jī)操作系統(tǒng)的仿真軟件,以執(zhí)行所仿真處理器的仿真。仿真軟件負(fù)責(zé)取回及執(zhí)行所仿真的處理架構(gòu)的指令。仿真軟件維護(hù)所仿真的程序計(jì)數(shù)器以保持對指令邊界的追蹤。仿真軟件可一次取回一個(gè)或多個(gè)所仿真的機(jī)器指令且將所述一個(gè)或多個(gè)所仿真的機(jī)器指令轉(zhuǎn)換為一組對應(yīng)的本機(jī)機(jī)器指令以供本機(jī)處理器執(zhí)行。這些轉(zhuǎn)換后的指令可被緩存,使得可實(shí)現(xiàn)更快的轉(zhuǎn)換。盡管如此,仿真軟件用于維持所仿真的處理器架構(gòu)的架構(gòu)規(guī)則以確保被編寫以用于所仿真處理器的操作系統(tǒng)及應(yīng)用正確地進(jìn)行操作。此外,仿真軟件用于提供由所仿真的處理器架構(gòu)識(shí)別的資源,其包括(但不限于)控制寄存器、通用寄存器、浮點(diǎn)寄存器、包括(例如)段表及頁表的動(dòng)態(tài)地址轉(zhuǎn)換功能、中斷機(jī)制、上下文切換機(jī)制、當(dāng)日時(shí)間(TOD)時(shí)鐘及至I/O子系統(tǒng)的架構(gòu)化接口,使得被設(shè)計(jì)以在所仿真處理器上運(yùn)行的操作系統(tǒng)或應(yīng)用程序能夠在具有仿真軟件的本機(jī)處理器上運(yùn)行。
對正被仿真的特定指令進(jìn)行解碼且調(diào)用子例程以執(zhí)行個(gè)體指令的功能。例如在“C”子例程或驅(qū)動(dòng)程序中或在為特定硬件提供驅(qū)動(dòng)程序的某一其他方法(如在理解優(yōu)選實(shí)施例的描述后將屬于本領(lǐng)域技術(shù)內(nèi))中實(shí)施仿真所仿真處理器的功能的仿真軟件功能。針對本領(lǐng)域技術(shù)人員可獲得的目標(biāo)機(jī)器,各種軟件及硬件仿真專利及許多其他專利例示了達(dá)成對針對不同機(jī)器架構(gòu)化的指令格式的仿真的多種已知方式,所述軟件及硬件仿真專利包括(但不限于):Beausoleil等人的標(biāo)題為“Multiprocessor for Hardware Emulation”的美國專利證書第5,551,013號(hào);及Scalzi等人的標(biāo)題為“Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor”的美國專利證書第6,009,261號(hào);及Davidian等人的標(biāo)題為“Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions”的美國專利證書第5,574,873號(hào);及Gorishek等人的標(biāo)題為“Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System”的美國專利證書第6,308,255號(hào);及Lethin等人的標(biāo)題為“Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method”的美國專利證書第6,463,582號(hào);及Eric Traut的標(biāo)題為“Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions”的美國專利證書第5,790,825號(hào),以上中的每一者在此以全文引用的方式并入本文中。
在圖13中,提供所仿真主計(jì)算機(jī)系統(tǒng)5092的一個(gè)實(shí)例,其仿真主機(jī)架構(gòu)的主計(jì)算機(jī)系統(tǒng)5000'。在所仿真的主計(jì)算機(jī)系統(tǒng)5092中,主機(jī)處理器(CPU)5091為所仿真的主機(jī)處理器(或虛擬主機(jī)處理器)且包括仿真處理器5093,其具有不同于主計(jì)算機(jī)5000'的處理器5091的本機(jī)指令設(shè)定架構(gòu)。所仿真的主計(jì)算機(jī)系統(tǒng)5092具有對仿真處理器5093可存取的存儲(chǔ)器5094。在該實(shí)例實(shí)施例中,存儲(chǔ)器5094被分區(qū)為主計(jì)算機(jī)存儲(chǔ)器5096部分及仿真例程5097部分。根據(jù)主計(jì)算機(jī)架構(gòu),主計(jì)算機(jī)存儲(chǔ)器5096可用于所仿真的主計(jì)算機(jī)5092的程序。仿真處理器5093執(zhí)行架構(gòu)與所仿真處理器5091的架構(gòu)不同的架構(gòu)化指令集的本機(jī)指令,所述本機(jī)指令自仿真例程存儲(chǔ)器5097獲得,并且所述仿真處理器可通過使用在順序及存取/解碼例程中獲得的一個(gè)或多個(gè)指令來從主計(jì)算機(jī)存儲(chǔ)器5096中的程序存取用于執(zhí)行的主機(jī)指令,所述順序及存取/解碼例程可解碼所存取的主機(jī)指令(多個(gè))以確定用于仿真所存取主機(jī)指令的功能的本機(jī)指令執(zhí)行例程。舉例而言,被定義用于主計(jì)算機(jī)系統(tǒng)5000'架構(gòu)的其他工具可由架構(gòu)化工具例程仿真,所述工具包括諸如以下各者的工具:通用寄存器、控制寄存器、動(dòng)態(tài)地址轉(zhuǎn)換及I/O子系統(tǒng)支持及處理器高速緩存。仿真例程亦可利用仿真處理器5093中可獲得的功能(諸如通用寄存器及虛擬地址的動(dòng)態(tài)轉(zhuǎn)換)以改進(jìn)仿真例程的性能。亦可提供專用硬件及卸載引擎以幫助處理器5093仿真主計(jì)算機(jī)5000'的功能。
在進(jìn)一步實(shí)施例中,一個(gè)或多個(gè)方面涉及云計(jì)算。首先應(yīng)當(dāng)理解,盡管本公開包括關(guān)于云計(jì)算的詳細(xì)描述,但其中記載的技術(shù)方案的實(shí)現(xiàn)卻不限于云計(jì)算環(huán)境,而是能夠結(jié)合現(xiàn)在已知或以后開發(fā)的任何其它類型的計(jì)算環(huán)境而實(shí)現(xiàn)。
云計(jì)算是一種服務(wù)交付模式,用于對共享的可配置計(jì)算資源池進(jìn)行方便、按需的網(wǎng)絡(luò)訪問??膳渲糜?jì)算資源是能夠以最小的管理成本或與服務(wù)提供者進(jìn)行最少的交互就能快速部署和釋放的資源,例如可以是網(wǎng)絡(luò)、網(wǎng)絡(luò)帶寬、服務(wù)器、處理、內(nèi)存、存儲(chǔ)、應(yīng)用、虛擬機(jī)和服務(wù)。這種云模式可以包括至少五個(gè)特征、至少三個(gè)服務(wù)模型和至少四個(gè)部署模型。
特征包括:
按需自助式服務(wù):云的消費(fèi)者在無需與服務(wù)提供者進(jìn)行人為交互的情況下能夠單方面自動(dòng)地按需部署諸如服務(wù)器時(shí)間和網(wǎng)絡(luò)存儲(chǔ)等的計(jì)算能力。
廣泛的網(wǎng)絡(luò)接入:計(jì)算能力可以通過標(biāo)準(zhǔn)機(jī)制在網(wǎng)絡(luò)上獲取,這種標(biāo)準(zhǔn)機(jī)制促進(jìn)了通過不同種類的瘦客戶機(jī)平臺(tái)或厚客戶機(jī)平臺(tái)(例如移動(dòng)電話、膝上型電腦、個(gè)人數(shù)字助理PDA)對云的使用。
資源池:提供者的計(jì)算資源被歸入資源池并通過多租戶(multi-tenant)模式服務(wù)于多重消費(fèi)者,其中按需將不同的實(shí)體資源和虛擬資源動(dòng)態(tài)地分配和再分配。一般情況下,消費(fèi)者不能控制或甚至并不知曉所提供的資源的確切位置,但可以在較高抽象程度上指定位置(例如國家、州或數(shù)據(jù)中心),因此具有位置無關(guān)性。
迅速彈性:能夠迅速、有彈性地(有時(shí)是自動(dòng)地)部署計(jì)算能力,以實(shí)現(xiàn)快速擴(kuò)展,并且能迅速釋放來快速縮小。在消費(fèi)者看來,用于部署的可用計(jì)算能力往往顯得是無限的,并能在任意時(shí)候都能獲取任意數(shù)量的計(jì)算能力。
可測量的服務(wù):云系統(tǒng)通過利用適于服務(wù)類型(例如存儲(chǔ)、處理、帶寬和活躍用戶帳號(hào))的某種抽象程度的計(jì)量能力,自動(dòng)地控制和優(yōu)化資源效用??梢员O(jiān)測、控制和報(bào)告資源使用情況,為服務(wù)提供者和消費(fèi)者雙方提供透明度。
服務(wù)模型如下:
軟件即服務(wù)(SaaS):向消費(fèi)者提供的能力是使用提供者在云基礎(chǔ)架構(gòu)上運(yùn)行的應(yīng)用??梢酝ㄟ^諸如網(wǎng)絡(luò)瀏覽器的瘦客戶機(jī)接口(例如基于網(wǎng)絡(luò)的電子郵件)從各種客戶機(jī)設(shè)備訪問應(yīng)用。除了有限的特定于用戶的應(yīng)用配置設(shè)置外,消費(fèi)者既不管理也不控制包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲(chǔ)、乃至單個(gè)應(yīng)用能力等的底層云基礎(chǔ)架構(gòu)。
平臺(tái)即服務(wù)(PaaS):向消費(fèi)者提供的能力是在云基礎(chǔ)架構(gòu)上部署消費(fèi)者創(chuàng)建或獲得的應(yīng)用,這些應(yīng)用利用提供者支持的程序設(shè)計(jì)語言和工具創(chuàng)建。消費(fèi)者既不管理也不控制包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)或存儲(chǔ)的底層云基礎(chǔ)架構(gòu),但對其部署的應(yīng)用具有控制權(quán),對應(yīng)用托管環(huán)境配置可能也具有控制權(quán)。
基礎(chǔ)架構(gòu)即服務(wù)(IaaS):向消費(fèi)者提供的能力是消費(fèi)者能夠在其中部署并運(yùn)行包括操作系統(tǒng)和應(yīng)用的任意軟件的處理、存儲(chǔ)、網(wǎng)絡(luò)和其它基礎(chǔ)計(jì)算資源。消費(fèi)者既不管理也不控制底層的云基礎(chǔ)架構(gòu),但是對操作系統(tǒng)、存儲(chǔ)和其部署的應(yīng)用具有控制權(quán),對選擇的網(wǎng)絡(luò)組件(例如主機(jī)防火墻)可能具有有限的控制權(quán)。
部署模型如下:
私有云:云基礎(chǔ)架構(gòu)單獨(dú)為某個(gè)組織運(yùn)行。云基礎(chǔ)架構(gòu)可以由該組織或第三方管理并且可以存在于該組織內(nèi)部或外部。
共同體云:云基礎(chǔ)架構(gòu)被若干組織共享并支持有共同利害關(guān)系(例如任務(wù)使命、安全要求、政策和合規(guī)考慮)的特定共同體。共同體云可以由共同體內(nèi)的多個(gè)組織或第三方管理并且可以存在于該共同體內(nèi)部或外部。
公共云:云基礎(chǔ)架構(gòu)向公眾或大型產(chǎn)業(yè)群提供并由出售云服務(wù)的組織擁有。
混合云:云基礎(chǔ)架構(gòu)由兩個(gè)或更多部署模型的云(私有云、共同體云或公共云)組成,這些云依然是獨(dú)特的實(shí)體,但是通過使數(shù)據(jù)和應(yīng)用能夠移植的標(biāo)準(zhǔn)化技術(shù)或私有技術(shù)(例如用于云之間的負(fù)載平衡的云突發(fā)流量分擔(dān)技術(shù))綁定在一起。
云計(jì)算環(huán)境是面向服務(wù)的,特點(diǎn)集中在無狀態(tài)性、低耦合性、模塊性和語意的互操作性。云計(jì)算的核心是包含互連節(jié)點(diǎn)網(wǎng)絡(luò)的基礎(chǔ)架構(gòu)。
現(xiàn)在參考圖14,其中顯示了云計(jì)算節(jié)點(diǎn)的一個(gè)例子。圖14顯示的云計(jì)算節(jié)點(diǎn)6010僅僅是適合的云計(jì)算節(jié)點(diǎn)的一個(gè)示例,不應(yīng)對本發(fā)明實(shí)施例的功能和使用范圍帶來任何限制。總之,云計(jì)算節(jié)點(diǎn)10能夠被用來實(shí)現(xiàn)和/或執(zhí)行以上所述的任何功能。
云計(jì)算節(jié)點(diǎn)6010具有計(jì)算機(jī)系統(tǒng)/服務(wù)器6012,其可與眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起操作。眾所周知,適于與計(jì)算機(jī)系統(tǒng)/服務(wù)器6012一起操作的計(jì)算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個(gè)人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶機(jī)、厚客戶機(jī)、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)個(gè)人電腦、小型計(jì)算機(jī)系統(tǒng)﹑大型計(jì)算機(jī)系統(tǒng)和包括上述任意系統(tǒng)的分布式云計(jì)算技術(shù)環(huán)境,等等。
計(jì)算機(jī)系統(tǒng)/服務(wù)器6012可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括執(zhí)行特定的任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類型的例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等。計(jì)算機(jī)系統(tǒng)/服務(wù)器6012可以在通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行任務(wù)的分布式云計(jì)算環(huán)境中實(shí)施。在分布式云計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備的本地或遠(yuǎn)程計(jì)算系統(tǒng)存儲(chǔ)介質(zhì)上。
如圖14所示,云計(jì)算節(jié)點(diǎn)6010中的計(jì)算機(jī)系統(tǒng)/服務(wù)器6012以通用計(jì)算設(shè)備的形式表現(xiàn)。計(jì)算機(jī)系統(tǒng)/服務(wù)器6012的組件可以包括但不限于:一個(gè)或者多個(gè)處理器或者處理單元6016,系統(tǒng)存儲(chǔ)器6028,連接不同系統(tǒng)組件(包括系統(tǒng)存儲(chǔ)器6028和處理單元6016)的總線6018。
總線6018表示幾類總線結(jié)構(gòu)中的一種或多種,包括存儲(chǔ)器總線或者存儲(chǔ)器控制器,外圍總線,圖形加速端口,處理器或者使用多種總線結(jié)構(gòu)中的任意總線結(jié)構(gòu)的局域總線。舉例來說,這些體系結(jié)構(gòu)包括但不限于工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線,微通道體系結(jié)構(gòu)(MCA)總線,增強(qiáng)型ISA(EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局域總線以及外圍組件互連(PCI)總線。
計(jì)算機(jī)系統(tǒng)/服務(wù)器6012典型地包括多種計(jì)算機(jī)系統(tǒng)可讀介質(zhì)。這些介質(zhì)可以是能夠被計(jì)算機(jī)系統(tǒng)/服務(wù)器6012訪問的任意可獲得的介質(zhì),包括易失性和非易失性介質(zhì),可移動(dòng)的和不可移動(dòng)的介質(zhì)。
系統(tǒng)存儲(chǔ)器6028可以包括易失性存儲(chǔ)器形式的計(jì)算機(jī)系統(tǒng)可讀介質(zhì),例如隨機(jī)存取存儲(chǔ)器(RAM)6030和/或高速緩存存儲(chǔ)器6032。計(jì)算機(jī)系統(tǒng)/服務(wù)器6012可以進(jìn)一步包括其它可移動(dòng)/不可移動(dòng)的、易失性/非易失性計(jì)算機(jī)系統(tǒng)存儲(chǔ)介質(zhì)。僅作為舉例,存儲(chǔ)系統(tǒng)6034可以用于讀寫不可移動(dòng)的、非易失性磁介質(zhì)(圖中未顯示,通常稱為“硬盤驅(qū)動(dòng)器”)。盡管圖14中未示出,可以提供用于對可移動(dòng)非易失性磁盤(例如“軟盤”)讀寫的磁盤驅(qū)動(dòng)器,以及對可移動(dòng)非易失性光盤(例如CD-ROM、DVD-ROM或者其它光介質(zhì))讀寫的光盤驅(qū)動(dòng)器。在這些情況下,每個(gè)驅(qū)動(dòng)器可以通過一個(gè)或者多個(gè)數(shù)據(jù)介質(zhì)接口與總線6018相連。存儲(chǔ)器6028可以包括至少一個(gè)程序產(chǎn)品,該程序產(chǎn)品具有一組(例如至少一個(gè))程序模塊,這些程序模塊被配置以執(zhí)行本發(fā)明各實(shí)施例的功能。
具有一組(至少一個(gè))程序模塊6042的程序/實(shí)用工具6040,可以存儲(chǔ)在存儲(chǔ)器6028中,這樣的程序模塊6042包括但不限于操作系統(tǒng)、一個(gè)或者多個(gè)應(yīng)用程序、其它程序模塊以及程序數(shù)據(jù),這些示例中的每一個(gè)或某種組合中可能包括網(wǎng)絡(luò)環(huán)境的實(shí)現(xiàn)。程序模塊6042通常執(zhí)行本發(fā)明所描述的實(shí)施例中的功能和/或方法。
計(jì)算機(jī)系統(tǒng)/服務(wù)器6012也可以與一個(gè)或多個(gè)外部設(shè)備6014(例如鍵盤、指向設(shè)備、顯示器6024等)通信,還可與一個(gè)或者多個(gè)使得用戶能與該計(jì)算機(jī)系統(tǒng)/服務(wù)器6012交互的設(shè)備通信,和/或與使得該計(jì)算機(jī)系統(tǒng)/服務(wù)器6012能與一個(gè)或多個(gè)其它計(jì)算設(shè)備進(jìn)行通信的任何設(shè)備(例如網(wǎng)卡,調(diào)制解調(diào)器等等)通信。這種通信可以通過輸入/輸出(I/O)接口6022進(jìn)行。并且,計(jì)算機(jī)系統(tǒng)/服務(wù)器6012還可以通過網(wǎng)絡(luò)適配器6020與一個(gè)或者多個(gè)網(wǎng)絡(luò)(例如局域網(wǎng)(LAN),廣域網(wǎng)(WAN)和/或公共網(wǎng)絡(luò),例如因特網(wǎng))通信。如圖所示,網(wǎng)絡(luò)適配器6020通過總線6018與計(jì)算機(jī)系統(tǒng)/服務(wù)器6012的其它模塊通信。應(yīng)當(dāng)明白,盡管圖中未示出,其它硬件和/或軟件模塊可以與計(jì)算機(jī)系統(tǒng)/服務(wù)器6012一起操作,包括但不限于:微代碼、設(shè)備驅(qū)動(dòng)器、冗余處理單元、外部磁盤驅(qū)動(dòng)陣列、RAID系統(tǒng)、磁帶驅(qū)動(dòng)器以及數(shù)據(jù)備份存儲(chǔ)系統(tǒng)等。
現(xiàn)在參考圖15,其中顯示了示例性的云計(jì)算環(huán)境6050。如圖所示,云計(jì)算環(huán)境6050包括云計(jì)算消費(fèi)者使用的本地計(jì)算設(shè)備可以與其相通信的一個(gè)或者多個(gè)云計(jì)算節(jié)點(diǎn)6010,本地計(jì)算設(shè)備例如可以是個(gè)人數(shù)字助理(PDA)或移動(dòng)電話6054A,臺(tái)式電腦6054B、筆記本電腦6054C和/或汽車計(jì)算機(jī)系統(tǒng)6054N。云計(jì)算節(jié)點(diǎn)6010之間可以相互通信。可以在包括但不限于如上所述的私有云、共同體云、公共云或混合云或者它們的組合的一個(gè)或者多個(gè)網(wǎng)絡(luò)中將云計(jì)算節(jié)點(diǎn)6010進(jìn)行物理或虛擬分組(圖中未顯示)。這樣,云的消費(fèi)者無需在本地計(jì)算設(shè)備上維護(hù)資源就能請求云計(jì)算環(huán)境6050提供的基礎(chǔ)架構(gòu)即服務(wù)(IaaS)、平臺(tái)即服務(wù)(PaaS)和/或軟件即服務(wù)(SaaS)。應(yīng)當(dāng)理解,圖15顯示的各類計(jì)算設(shè)備6054A-N僅僅是示意性的,云計(jì)算節(jié)點(diǎn)6010以及云計(jì)算環(huán)境6050可以與任意類型網(wǎng)絡(luò)上和/或網(wǎng)絡(luò)可尋址連接的任意類型的計(jì)算設(shè)備(例如使用網(wǎng)絡(luò)瀏覽器)通信。
現(xiàn)在參考圖16,其中顯示了云計(jì)算環(huán)境6050(圖15)提供的一組功能抽象層。首先應(yīng)當(dāng)理解,圖16所示的組件、層以及功能都僅僅是示意性的,本發(fā)明的實(shí)施例不限于此。如圖16所示,提供下列層和對應(yīng)功能:
硬件和軟件層6060包括硬件和軟件組件。硬件組件的例子包括:主機(jī),例如系統(tǒng);基于RISC(精簡指令集計(jì)算機(jī))架構(gòu)的服務(wù)器,例如IBM系統(tǒng);IBM系統(tǒng);IBM系統(tǒng);存儲(chǔ)裝置;網(wǎng)絡(luò)和網(wǎng)絡(luò)組件。軟件組件的例子包括:網(wǎng)絡(luò)應(yīng)用服務(wù)器軟件,例如IBM應(yīng)用服務(wù)器軟件;數(shù)據(jù)庫軟件,例如數(shù)據(jù)庫軟件。(IBM、zSeries、pSeries、xSeries、BladeCenter、WebSphere以及DB2是國際商業(yè)機(jī)器公司在全世界各地的注冊商標(biāo))。
虛擬層6062提供一個(gè)抽象層,該層可以提供下列虛擬實(shí)體的例子:虛擬服務(wù)器、虛擬存儲(chǔ)、虛擬網(wǎng)絡(luò)(包括虛擬私有網(wǎng)絡(luò))、虛擬應(yīng)用和操作系統(tǒng),以及虛擬客戶機(jī)。
在一個(gè)示例中,管理層6064可以提供下述功能:資源供應(yīng)功能:提供用于在云計(jì)算環(huán)境中執(zhí)行任務(wù)的計(jì)算資源和其它資源的動(dòng)態(tài)獲??;計(jì)量和定價(jià)功能:在云計(jì)算環(huán)境內(nèi)對資源的使用進(jìn)行成本跟蹤,并為此提供帳單和發(fā)票。在一個(gè)例子中,該資源可以包括應(yīng)用軟件許可。安全功能:為云的消費(fèi)者和任務(wù)提供身份認(rèn)證,為數(shù)據(jù)和其它資源提供保護(hù)。用戶門戶功能:為消費(fèi)者和系統(tǒng)管理員提供對云計(jì)算環(huán)境的訪問。服務(wù)水平管理功能:提供云計(jì)算資源的分配和管理,以滿足必需的服務(wù)水平。服務(wù)水平協(xié)議(SLA)計(jì)劃和履行功能:為根據(jù)SLA預(yù)測的對云計(jì)算資源未來需求提供預(yù)先安排和供應(yīng)。
工作負(fù)載層6066提供云計(jì)算環(huán)境可能實(shí)現(xiàn)的功能的示例。在該層中,可提供的工作負(fù)載或功能的示例包括:地圖繪制與導(dǎo)航;軟件開發(fā)及生命周期管理;虛擬教室的教學(xué)提供;數(shù)據(jù)分析處理;交易處理。
本文中所用的術(shù)語,僅僅是為了描述特定的實(shí)施例,而不意圖限定本發(fā)明。本文中所用的單數(shù)形式的“一”和“該”,旨在也包括復(fù)數(shù)形式,除非上下文中明確地另行指出。還要知道,“包含”和/或“包括”在本說明書中使用時(shí),說明存在所指出的特征、整體、步驟、操作、單元和/或組件,但是并不排除存在或增加一個(gè)或多個(gè)其它特征、整體、步驟、操作、單元和/或組件,以及/或者它們的組合。
以下的權(quán)利要求中的對應(yīng)結(jié)構(gòu)、材料、操作以及所有功能性限定的裝置(means)或步驟的等同替換,旨在包括任何用于與在權(quán)利要求中具體指出的其它單元相組合地執(zhí)行該功能的結(jié)構(gòu)、材料或操作。所給出的對一個(gè)或多個(gè)實(shí)施例的描述其目的在于示意和描述,并非是窮盡性的,也并非是要將本發(fā)明限定到所表述的形式。對于所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,顯然可以作出許多修改和變型。對實(shí)施例的選擇和描述,是為了最好地解釋本發(fā)明的原理和實(shí)際應(yīng)用,使所屬技術(shù)領(lǐng)域的普通技術(shù)人員能夠明了,本發(fā)明可以有適合所要的特定用途的具有各種改變的各種實(shí)施例。