執(zhí)行開(kāi)始操作員消息命令的制作方法
【專(zhuān)利摘要】提供了一種設(shè)施以使得能夠從多個(gè)不同的源向計(jì)算環(huán)境的耦合設(shè)施提供操作員消息命令以用于處理。這些命令被用來(lái)例如在耦合設(shè)施上執(zhí)行動(dòng)作,并且可以從耦合到耦合設(shè)施的控制臺(tái)以及被與之耦合的邏輯分區(qū)或其他系統(tǒng)接收。響應(yīng)于執(zhí)行命令,向命令的發(fā)起者返回響應(yīng)。
【專(zhuān)利說(shuō)明】執(zhí)行開(kāi)始操作員消息命令
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的一個(gè)或多個(gè)方面一般地涉及計(jì)算環(huán)境內(nèi)的處理,并且特別涉及計(jì)算環(huán)境 內(nèi)的處理操作員消息命令。
【背景技術(shù)】
[0002]計(jì)算環(huán)境的范圍從簡(jiǎn)單環(huán)境到更復(fù)雜的環(huán)境。簡(jiǎn)單環(huán)境可以包括執(zhí)行一個(gè)操作 系統(tǒng)的一個(gè)處理器,而復(fù)雜環(huán)境可以包括執(zhí)行各種系統(tǒng)的多個(gè)處理器或多個(gè)隔離存儲(chǔ)器空 間。例如,復(fù)雜環(huán)境可以包括執(zhí)行一個(gè)或多個(gè)操作系統(tǒng)的一個(gè)或多個(gè)邏輯分區(qū)及執(zhí)行耦合 設(shè)施控制代碼的至少一個(gè)邏輯分區(qū)。無(wú)論計(jì)算環(huán)境是簡(jiǎn)單的還是復(fù)雜的,必須充分地測(cè)試 計(jì)算環(huán)境的部件以確??煽啃院涂山邮芩降男阅?。
[0003]用于測(cè)試計(jì)算環(huán)境的部件的一種技術(shù)是通過(guò)在連接到部件的控制臺(tái)處發(fā)布操作 員命令,其然后被計(jì)算環(huán)境的預(yù)定部件處理。一旦操作員命令被處理,結(jié)果返回到控制臺(tái)以 便由控制臺(tái)的操作員驗(yàn)證。
[0004]還可以出于除測(cè)試之外的目的使用操作員命令。再次地,這些操作員命令由操作 員在控制臺(tái)處發(fā)布并由計(jì)算環(huán)境的預(yù)定部件處理。
【發(fā)明內(nèi)容】
[0005]通過(guò)提供一種用于在計(jì)算環(huán)境中處理開(kāi)始命令的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算環(huán)境 包括被耦合到計(jì)算環(huán)境的一個(gè)或多個(gè)處理器映像的耦合設(shè)施,克服了現(xiàn)有技術(shù)的缺點(diǎn)并提 供了優(yōu)點(diǎn)。該計(jì)算機(jī)程序產(chǎn)品包括可被處理電路讀取并存儲(chǔ)用于由處理電路執(zhí)行以便執(zhí) 行一種方法的指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。該方法包括例如:由耦合設(shè)施從被與之耦合的 處理器映像接收開(kāi)始操作員消息命令,該開(kāi)始操作員消息茗琳給包括消息命令塊,其包括 消息報(bào)頭、開(kāi)始操作員消息命令的指示、包括將由耦合設(shè)施處理的操作員消息命令的操作 員消息請(qǐng)求、操作員消息請(qǐng)求長(zhǎng)度和操作員消息令牌;響應(yīng)于接收到開(kāi)始操作員消息命令, 處理開(kāi)始操作員消息命令,其中,所述處理包括:在一個(gè)或多個(gè)緩沖器的所選緩沖器內(nèi)存儲(chǔ) 操作員消息令牌、操作員消息請(qǐng)求和操作員消息請(qǐng)求長(zhǎng)度,其中,所述操作員消息令牌唯一 地識(shí)別操作員消息命令并使所選緩沖器與操作員消息命令相關(guān)聯(lián);在所選緩沖器內(nèi)設(shè)置到 當(dāng)前時(shí)間的計(jì)數(shù)器;設(shè)置所選緩沖器的狀態(tài);以及為所述開(kāi)始操作員消息命令提供響應(yīng)代 碼。
[0006]在本文中還描述了關(guān)于本發(fā)明的一個(gè)或多個(gè)方面的方法和系統(tǒng)并要求保護(hù)。此 夕卜,還描述了關(guān)于本發(fā)明的一個(gè)或多個(gè)方面的服務(wù),并且可以在此要求保護(hù)。
[0007]通過(guò)本發(fā)明的一個(gè)或多個(gè)方面的技術(shù)實(shí)現(xiàn)了附加特征和優(yōu)點(diǎn)。在此詳細(xì)地描述了 本發(fā)明的其他實(shí)施例和方面并將其視為要求保護(hù)的本發(fā)明的一部分。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0008]特別地指出了本發(fā)明的一個(gè)或多個(gè)方面并在本說(shuō)明書(shū)結(jié)束時(shí)在權(quán)利要求中作為例子明確地要求保護(hù)。根據(jù)結(jié)合附圖進(jìn)行的以下詳細(xì)描述,本發(fā)明的一個(gè)或多個(gè)方面的前 述及其他目的、特征和優(yōu)點(diǎn)是顯而易見(jiàn)的,在所述附圖中:
[0009]圖1描述了將結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)例子。
[0010]圖2A描述了根據(jù)本發(fā)明的一方面的與計(jì)算環(huán)境的耦合設(shè)施通信的圖1的計(jì)算環(huán) 境的處理器的一個(gè)例子;
[0011]圖2B描述了根據(jù)本發(fā)明的一方面使用的關(guān)于發(fā)送消息(Send Message)指令的細(xì) 節(jié)的一個(gè)實(shí)施例;
[0012]圖3A描述了根據(jù)本發(fā)明的一方面的用來(lái)控制在耦合設(shè)施處接收到的操作員消息 命令的處理的復(fù)用器的一個(gè)例子;
[0013]圖3B描述了根據(jù)本發(fā)明的一方面的被圖3A的復(fù)用器用來(lái)控制操作員消息命令的 處理的邏輯的一個(gè)例子;
[0014]圖4A描述了根據(jù)本發(fā)明的一方面的在處理操作員信息命令時(shí)所使用的緩沖器的 一個(gè)例子;
[0015]圖4B描述了根據(jù)本發(fā)明的一方面的圖4A的緩沖器的更多細(xì)節(jié)的一個(gè)例子;
[0016]圖5描述了根據(jù)本發(fā)明的一方面的緩沖器的各種可能狀態(tài)的例子;
[0017]圖6描述了根據(jù)本發(fā)明的一方面的所使用的各種命令的一個(gè)實(shí)施例;
[0018]圖7A描述了根據(jù)本發(fā)明的一方面的關(guān)于使用發(fā)送消息指令來(lái)發(fā)布開(kāi)始操作員消 息(Start Operator Message)命令的細(xì)節(jié)的一個(gè)實(shí)施例;
[0019]圖7B描述了根據(jù)本發(fā)明的一方面的所使用的開(kāi)始操作員消息(Start Operator Message)命令的邏輯的一個(gè)實(shí)施例;
[0020]圖8A描述了根據(jù)本發(fā)明的一方面的關(guān)于使用發(fā)送消息(Send Message)指令來(lái)發(fā) 布讀取操作員消息(Read Operator Message)命令的細(xì)節(jié)的一個(gè)實(shí)施例;
[0021]圖8B描述了根據(jù)本發(fā)明的一方面所使用的讀取操作員消息(Read Operator Message)命令的邏輯的一個(gè)實(shí)施例;
[0022]圖9A描述了根據(jù)本發(fā)明的一方面的關(guān)于使用發(fā)送消息指令來(lái)發(fā)布刪除操作員消 息(Delete Operator Message)命令的細(xì)節(jié)的一個(gè)實(shí)施例;
[0023]圖9B描述了根據(jù)本發(fā)明的一方面所使用的刪除操作員消息(Delete Operator Message)指令的邏輯的一個(gè)實(shí)施例;
[0024]圖10描述了結(jié)合了本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)程序產(chǎn)品的一個(gè)實(shí)施例;
[0025]圖11描述了將結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面的主機(jī)計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí) 施例;
[0026]圖12描述了將結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面的主機(jī)計(jì)算機(jī)系統(tǒng)的另一例 子;
[0027]圖13描述了將結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面的包括計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī) 系統(tǒng)的另一例子;
[0028]圖14描述了將結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的各種元件的 一個(gè)實(shí)施例;
[0029]圖15A描述了將結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面的圖14的計(jì)算機(jī)系統(tǒng)的執(zhí) 行單元的一個(gè)實(shí)施例;[0030]圖15B描述了將結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面的圖14的計(jì)算機(jī)系統(tǒng)的分 支單元的一個(gè)實(shí)施例;
[0031]圖15C描述了將結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面的圖14的計(jì)算機(jī)系統(tǒng)的加 載/存儲(chǔ)單元的一個(gè)實(shí)施例;以及
[0032]圖16描述了將結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面的仿真主機(jī)計(jì)算機(jī)系統(tǒng)的一 個(gè)實(shí)施例。
【具體實(shí)施方式】
[0033]根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,提供了一種促進(jìn)從一個(gè)或多個(gè)源接收到的操作員 信息命令的處理的能力。在一個(gè)例子中,操作員消息命令是由耦合設(shè)施從一個(gè)或多個(gè)源接 收到的,并且該耦合設(shè)施處理該命令并向源返回響應(yīng)。在一個(gè)特定例子中,源中的至少一個(gè) 是耦合到耦合設(shè)施但與之分離的處理器映像。作為例子:
[0034]*該處理器映像是具有與之相關(guān)聯(lián)的中央處理器資源并能夠執(zhí)行操作系統(tǒng)的邏輯 分區(qū),并且該耦合設(shè)施在具有與之相關(guān)聯(lián)的中央處理器資源并能夠執(zhí)行耦合設(shè)施控制代碼 的另一邏輯分區(qū),其中,兩個(gè)邏輯分區(qū)都在同一中央處理復(fù)合體(即,同一機(jī)器)內(nèi);
[0035]*該處理器映像是具有與之相關(guān)聯(lián)的中央處理器資源并能夠執(zhí)行操作系統(tǒng)的邏輯 分區(qū),并且該耦合設(shè)施在具有與之相關(guān)聯(lián)的中央處理器資源并能夠執(zhí)行耦合設(shè)施控制代碼 的另一邏輯分區(qū),其中,兩個(gè)邏輯分區(qū)都在不同的中央處理復(fù)合體(即,不同的機(jī)器)內(nèi);以 及
[0036]*處理器映像與能夠執(zhí)行耦合設(shè)施的機(jī)器或邏輯分區(qū)分離的獨(dú)立機(jī)器(并未在邏 輯分區(qū)中虛擬化)。
[0037]每個(gè)處理器映像包括一個(gè)或多個(gè)處理器。
[0038]稱(chēng)合設(shè)施操作員命令的例子包括:
[0039]配置一使得CHPID (信道路徑)上線或離線;CP—使CP (中央處理器)上線或離 線;顯示一顯示資源;幫助〈command〉一命令特定幫助;定位一顯示SID (子信道id)向量 或SID幀;模式一設(shè)置易失性模式;PRY—將PRY (機(jī)器級(jí)調(diào)試工具)開(kāi)啟或關(guān)閉;檢索一檢 索耦合設(shè)施(CF)信息;安全渡過(guò)一設(shè)定電源故障安全渡過(guò)時(shí)間;RType—設(shè)置響應(yīng)類(lèi)型;關(guān) 斷一終止CF操作;SMI—將系統(tǒng)監(jiān)視儀表開(kāi)啟或關(guān)閉;時(shí)區(qū)一設(shè)置時(shí)區(qū)偏移;追蹤一設(shè)置追 蹤控制;補(bǔ)丁一應(yīng)用并發(fā)補(bǔ)丁 ;Dyndisp—將動(dòng)態(tài)耦合設(shè)施分派開(kāi)啟或關(guān)閉;MT0 —開(kāi)啟用 于命令表的MTO (消息超時(shí));VMDUMP—強(qiáng)制VM上的耦合設(shè)施hardlong ;CFDUMP—強(qiáng)制非 破壞性斷電(dump);以及 NDDUMP—nddump_command。在 2005 年 I 月的 IBM Publication N0.SB10-7036-04 第五版中的 “Processor Resource/Systems Manager Planning Guide,, 中描述了這些指令。
[0040]在一個(gè)例子中,命令正在測(cè)試耦合設(shè)施,在于該命令指定要在耦合設(shè)施上采取的 動(dòng)作,執(zhí)行該動(dòng)作,將結(jié)果返回至命令的發(fā)起者(例如,操作系統(tǒng)控制臺(tái)、耦合設(shè)施控制臺(tái)、 測(cè)試程序)并且由操作員、分析員等手動(dòng)地或變地分析那些結(jié)果。通過(guò)使得能夠從除耦合設(shè) 施控制臺(tái)之外的遠(yuǎn)程源發(fā)起和/或發(fā)送在耦合設(shè)施上采取動(dòng)作的操作員消息命令,增強(qiáng)了 能夠在耦合設(shè)施上執(zhí)行的測(cè)試以及能夠執(zhí)行的操作。這可以導(dǎo)致耦合設(shè)施的增加的可靠性 和/或性能。[0041]參考圖1來(lái)描述將結(jié)合和/或使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一 個(gè)實(shí)施例。在一個(gè)例子中,計(jì)算環(huán)境100包括中央處理器復(fù)合體(CPC) 102,其是基于 由國(guó)際商業(yè)機(jī)器公司(IBM?)提供的z/Architecture?。在2010年IBM Publication N0.SA22-7832-08 中的題為 “z/Architecture Principles of Operation” 的出版物中描 述了z/Architecture?的方面??梢园ㄖ醒胩幚砥鲝?fù)合體102的一個(gè)系統(tǒng)是由國(guó)際商業(yè) 機(jī)器公司提供的zEnterprisel96 (zl96)系統(tǒng)。IBM?和z/Architecture?是美國(guó)紐約 Armonk市的國(guó)際商業(yè)機(jī)器公司的注冊(cè)商標(biāo),并且zEnterprisel96和zl96是商標(biāo)。在此所 使用的其他名稱(chēng)可以是國(guó)際商業(yè)機(jī)器公司或其他公司的注冊(cè)商標(biāo)、商標(biāo)或產(chǎn)品名稱(chēng)。
[0042]中央處理器復(fù)合體102包括例如一個(gè)或多個(gè)分區(qū)(處理器映像)104、管理程序分區(qū) 106、一個(gè)或多個(gè)中央處理器108以及輸入/輸出子系統(tǒng)110的一個(gè)或多個(gè)部件。分區(qū)可以 是物理分區(qū)或邏輯分區(qū)104(例如,LPARS),并且每個(gè)分區(qū)包括一組系統(tǒng)的硬件資源(物理或 虛擬化)作為能夠運(yùn)行操作系統(tǒng)軟件的單獨(dú)系統(tǒng)。
[0043]每個(gè)邏輯分區(qū)104能夠作為單獨(dú)系統(tǒng)運(yùn)行。也就是說(shuō),每個(gè)邏輯分區(qū)能夠被獨(dú)立 地設(shè)置,最初被加載操作系統(tǒng)或其他控制單元(如果期望的話),并且用不同的程序進(jìn)行操 作。在邏輯分區(qū)中運(yùn)行的操作系統(tǒng)或應(yīng)用程序看起來(lái)可訪問(wèn)完整的整個(gè)系統(tǒng),但實(shí)際上,僅 其一部分是可用的。硬件與被稱(chēng)為固件的許可內(nèi)部代碼(LIC)的組合防止一個(gè)邏輯分區(qū)中 的程序與不同邏輯分區(qū)中的程序相干擾。這允許多個(gè)不同的邏輯分區(qū)以時(shí)間切片的方式在 單個(gè)或多個(gè)物理處理器上進(jìn)行操作。(本文所使用的固件包括例如處理器的偽代碼、毫代碼 和/或宏代碼。)其包括例如硬件級(jí)指令和/或在較高層機(jī)器代碼的實(shí)現(xiàn)中使用的數(shù)據(jù)結(jié) 構(gòu)。在一個(gè)實(shí)施例中,其包括例如專(zhuān)有代碼,該專(zhuān)有代碼通常被作為包括可信軟件的微代碼 或底層硬件所特定的微代碼傳送并控制操作系統(tǒng)對(duì)系統(tǒng)硬件的訪問(wèn)。
[0044]在本例子中,多個(gè)邏輯分區(qū)具有駐留操作系統(tǒng)(OS) 120,其對(duì)于一個(gè)或多個(gè)邏輯分 區(qū)而言可以是不同的。在一個(gè)實(shí)施例中,至少一個(gè)邏輯分區(qū)正在執(zhí)行由紐約Armonk市的國(guó) 際商業(yè)機(jī)器公司提供的z/OS?操作系統(tǒng)。此外,至少一個(gè)邏輯分區(qū)正在執(zhí)行也是由IBM? 提供的耦合設(shè)施控制代碼(CFCC) 122,并且因此被稱(chēng)為耦合設(shè)施。
[0045]耦合設(shè)施是例如非易失共享存儲(chǔ)器件(例如,硬件),包括多個(gè)存儲(chǔ)結(jié)構(gòu),諸如高速 緩存器、列表和/或鎖結(jié)構(gòu),其被用來(lái)為計(jì)算環(huán)境提供獨(dú)有的功能。其為具有存儲(chǔ)和處理能 力的可共享設(shè)施。例如,耦合設(shè)施是執(zhí)行耦合設(shè)施控制代碼(CFCC)的具有存儲(chǔ)器和特殊信 道(CF鏈路)的處理器而不是標(biāo)準(zhǔn)操作系統(tǒng)。耦合設(shè)施中的信息作為CFCC駐留在存儲(chǔ)器 上,并且除CF鏈路之外,耦合設(shè)施并不具有I/O設(shè)備。在1994年5月31日發(fā)布的Elko等 人的題為 “Method and Apparatus for Coupling Data Processing System” 的美國(guó)專(zhuān)利 號(hào)5,317, 739中描述了稱(chēng)合設(shè)施(也稱(chēng)為結(jié)構(gòu)化外部存儲(chǔ)器)的實(shí)施方式。
[0046]邏輯分區(qū)104被與在中央處理器108上運(yùn)行的固件實(shí)現(xiàn)的管理程序106管理。邏 輯分區(qū)104和管理程序106每個(gè)包括駐留在與中央處理器相關(guān)聯(lián)的主存儲(chǔ)器的各部分中的 一個(gè)或多個(gè)程序。管理程序106的一個(gè)例子是由紐約Armonk市的國(guó)際商業(yè)機(jī)器公司提供 的處理器資源/系統(tǒng)管理器(PR/SM?)。
[0047]中央處理器108是分配給邏輯分區(qū)的物理處理器資源。例如,邏輯分區(qū)104包括 一個(gè)或多個(gè)邏輯處理器,其中的每一個(gè)表示分配給該分區(qū)的物理處理器資源108的全部或一部分。特定分區(qū)104的邏輯處理器可以專(zhuān)用于該分區(qū),使得底層處理器資源專(zhuān)供該分區(qū) 之用;或者與另一分區(qū)共享,使得底層處理器資源潛在地可用于另一分區(qū)。
[0048]輸入/輸出子系統(tǒng)110 (僅描述了其一部分)提供到I/O設(shè)備的連接。在 z/Architecture?的一個(gè)特定例子中,I/O子系統(tǒng)包括信道子系統(tǒng),其指引I/O設(shè)備與主存 儲(chǔ)器之間的信息流。然而,I/O子系統(tǒng)可以是除信道子系統(tǒng)之外的。
[0049]信道子系統(tǒng)在管理到或來(lái)自I/O設(shè)備的信息流時(shí)使用一個(gè)或多個(gè)信道路徑作為 通信鏈路。在信道子系統(tǒng)內(nèi)的是子信道。
[0050]一個(gè)子信道被提供為用于且專(zhuān)用于信道子系統(tǒng)可訪問(wèn)的每個(gè)I/O設(shè)備。每個(gè)子信 道包含用于關(guān)于關(guān)聯(lián)I/o設(shè)備及其到信道子系統(tǒng)的附件的信息的存儲(chǔ)器。該子信道還提供 了用于關(guān)于I/o操作和涉及到關(guān)聯(lián)I/O設(shè)備的其他功能的信息的存儲(chǔ)器。包含在子信道中 的信息可以被CPU使用I/O指令以及被信道子系統(tǒng)訪問(wèn),并且充當(dāng)任何CPU與信道子系統(tǒng) 之間的關(guān)于關(guān)聯(lián)I/o設(shè)備的通信裝置。
[0051]雖然在本文中將邏輯分區(qū)環(huán)境描述為用以結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面 的一個(gè)計(jì)算環(huán)境,但其他環(huán)境也可以結(jié)合和/或使用本發(fā)明的一個(gè)或多個(gè)方面。例如,具有 耦合到耦合設(shè)施(不是邏輯分區(qū)環(huán)境)的環(huán)境也可以結(jié)合和使用本發(fā)明的一個(gè)或多個(gè)方面。 還可以有其他例子。
[0052]一個(gè)或多個(gè)系統(tǒng)間信道促進(jìn)了處理器與耦合設(shè)施之間的通信,無(wú)論是否在邏輯分 區(qū)環(huán)境中,如圖2A中所描述的。在本文所述的例子中,通信是在邏輯分區(qū)之間。例如,執(zhí)行 諸如z/OS?操作系統(tǒng)的操作系統(tǒng)204的邏輯分區(qū)200經(jīng)由至少一個(gè)系統(tǒng)間信道210來(lái)與 執(zhí)行耦合設(shè)施控制代碼208的邏輯分區(qū)206通信。特別地,在一個(gè)例子中,邏輯分區(qū)200經(jīng) 由發(fā)送消息(Send Message) (SMSG)協(xié)議220通過(guò)系統(tǒng)間信道與邏輯分區(qū)206通信。
[0053]在一個(gè)例子中,發(fā)送消息(Send Message )協(xié)議包括發(fā)起消息操作的發(fā)送消息 (Send Message)指令。該消息操作由發(fā)送消息(Send Message)指令中的信息以及在發(fā) 送消息(Send Message)指令中指定的消息操作控制。消息操作包括執(zhí)行在消息命令塊中 指定的命令(例如,對(duì)于本發(fā)明的一個(gè)或多個(gè)方面而言,下文所述的開(kāi)始操作員消息(Start Operator Message)命令、讀取操作員消息(Read Operator Message)命令和/或刪除操作 員消息(Delete Operator Message)命令)。此外,在操作的執(zhí)行期間,相應(yīng)信息被存儲(chǔ)在 主存儲(chǔ)器中的消息響應(yīng)塊中。
[0054]參考圖2B來(lái)描述關(guān)于發(fā)送消息(Send Message)協(xié)議的其他細(xì)節(jié)。發(fā)送消息指令 250具有兩個(gè)操作數(shù),包括消息操作塊(MOB)252和位于信道子系統(tǒng)256中的子信道254的 名稱(chēng)。消息操作塊包括例如指向消息命令塊264/消息響應(yīng)塊266對(duì)的消息命令塊地址258。 存在位于主存儲(chǔ)器中的256字節(jié)緩沖器。消息操作塊252還包括指向消息緩沖器地址列表 268的消息緩沖器地址列表(MBAL)地址260。MBAL列表是例如從I一 16的可變長(zhǎng)度列表。 其包括指定一個(gè)或多個(gè)消息緩沖器272的一個(gè)或多個(gè)消息緩沖器地址字(MBAW)268。該緩 沖器可以是用于到耦合設(shè)施206的寫(xiě)操作的源或來(lái)從耦合設(shè)施的讀取操作的目標(biāo)。在消息 操作塊252中還包括指示MBAL列表的長(zhǎng)度的MBAL長(zhǎng)度262。并不是所有命令都必須具有 消息緩沖器地址列表,并且因此該長(zhǎng)度可以是零。消息命令塊264包括被發(fā)送到耦合設(shè)施 的參數(shù),并且當(dāng)響應(yīng)返回時(shí),其被直接存儲(chǔ)到MRB。
[0055]當(dāng)執(zhí)行發(fā)送消息(Send Message)時(shí),來(lái)自消息操作塊的參數(shù)被傳遞至CPU或信道子系統(tǒng),其請(qǐng)求用與信道子系統(tǒng)的指定子信道相關(guān)聯(lián)的耦合設(shè)施來(lái)執(zhí)行發(fā)送功能。與發(fā)送 消息(Send Message)同步地或異步地執(zhí)行發(fā)送功能。
[0056]該發(fā)送功能是通過(guò)使用子信道中的信息以發(fā)現(xiàn)到耦合設(shè)施的路徑來(lái)執(zhí)行的。使用 該路徑,消息操作被換送至耦合設(shè)施。例如,通過(guò)將命令信息傳遞至耦合設(shè)施、對(duì)命令進(jìn)行 解碼并執(zhí)行、將指示結(jié)果的相應(yīng)信息公式化并將響應(yīng)信息存儲(chǔ)在消息響應(yīng)塊中來(lái)實(shí)現(xiàn)消息 操作的執(zhí)行。
[0057]概括在發(fā)送功能的執(zhí)行期間所檢測(cè)的條件的狀態(tài)指示被置于子信道處且可用于 操作系統(tǒng)。在1996年10月I日發(fā)布的Elko等人的題為“In A Multiprocessing System Having A Coupling Facility, Communicating Messages Between The Processors And The Coupling Facility In Either A Synchronous Operation Or An Asynchronous Operation”的美國(guó)專(zhuān)利號(hào)5,561, 809中描述了關(guān)于發(fā)送消息(Send Message)的附加細(xì)節(jié)。
[0058]繼續(xù)圖2A,在本例子中,耦合到邏輯分區(qū)200的是一個(gè)或多個(gè)操作系統(tǒng)控制臺(tái)230 以及一個(gè)或多個(gè)測(cè)試程序232,其可以在同一邏輯分區(qū)、同一中央處理復(fù)合體但不同邏輯分 區(qū)或另一系統(tǒng)內(nèi)運(yùn)行。同樣地,耦合到邏輯分區(qū)206的是至少一個(gè)耦合設(shè)施控制臺(tái)234。每 個(gè)控制臺(tái)使得用戶能夠像其各自邏輯分區(qū)輸入操作員消息命令。此外,測(cè)試程序232也能 夠向其各邏輯分區(qū)發(fā)布操作員消息命令。從控制臺(tái)234發(fā)布到邏輯分區(qū)206 (在本文中也 稱(chēng)為耦合設(shè)施)的操作員消息命令在一個(gè)例子中被耦合設(shè)施內(nèi)的操作員消息處理器240接 收,其服務(wù)于從耦合設(shè)施控制臺(tái)接收到的命令。
[0059]在本發(fā)明的一個(gè)或多個(gè)方面之前,可以直接地向耦合設(shè)施發(fā)送耦合設(shè)施操作員消 息命令并接收返回的響應(yīng)的唯一遠(yuǎn)程實(shí)體是耦合設(shè)施控制臺(tái)。耦合設(shè)施操作員命令的測(cè)試 要求一個(gè)人登錄到耦合設(shè)施控制臺(tái)以發(fā)布命令并檢驗(yàn)結(jié)果。諸如操作系統(tǒng)、操作系統(tǒng)控制 臺(tái)、測(cè)試程序和/或其他遠(yuǎn)程系統(tǒng)的其他遠(yuǎn)程實(shí)體不能直接地訪問(wèn)耦合設(shè)施以使操作員消 息命令被處理并返回結(jié)果。作為替代,任何此類(lèi)命令都必須被轉(zhuǎn)發(fā)至耦合設(shè)施控制臺(tái),并且 由于某些命令不能被傳送,所以那些命令不能被耦合設(shè)施處理。由耦合設(shè)施處理的命令的 任何將被返回至耦合設(shè)施控制臺(tái)并在控制臺(tái)上顯示。
[0060]根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,在耦合設(shè)施處從控制臺(tái)234以及邏輯分區(qū)2009 (和/或其他邏輯分區(qū)、處理器、系統(tǒng)等)接收操作員消息命令。例如,在邏輯分區(qū)200處從 控制臺(tái)230和/或測(cè)試程序232 (以及其他可能的發(fā)起者)接收操作員消息命令,并且然后 從邏輯分區(qū)200轉(zhuǎn)發(fā)至邏輯分區(qū)206。為了將操作員消息命令從邏輯分區(qū)200轉(zhuǎn)發(fā)至邏輯 分區(qū)206,在一個(gè)例子中,通過(guò)系統(tǒng)間信道使用發(fā)送消息(Send Message)協(xié)議從邏輯分區(qū) 200向邏輯分區(qū)206發(fā)送操作員消息(OM)請(qǐng)求222。該請(qǐng)求包括例如指定所請(qǐng)求的操作員 消息命令的命令。耦合設(shè)施處理該請(qǐng)求并使用SMSG來(lái)發(fā)送從邏輯分區(qū)206返回至邏輯分 區(qū)200的操作員消息(OM)響應(yīng)224。
[0061]由于耦合設(shè)施現(xiàn)在能夠從多個(gè)、不同的源接收操作員消息命令,包括例如耦合設(shè) 施控制臺(tái)和被與之耦合的一個(gè)或多個(gè)邏輯分區(qū)(或其他處理器、系統(tǒng)等),所以在耦合設(shè)施 內(nèi)提供了控制機(jī)構(gòu)以管理要處理的多個(gè)請(qǐng)求。一個(gè)此類(lèi)控制是復(fù)用器,在圖3A中描述了其 示例。
[0062]如圖3A中所示,復(fù)用器300從多個(gè)源302接收操作員消息,作為例子,包括執(zhí)行 操作系統(tǒng)的邏輯分區(qū)和耦合設(shè)施控制臺(tái)。特別地,在一個(gè)例子中,復(fù)用器使用SMSG經(jīng)由開(kāi)始操作員消息(Start Operator Message)命令直接地從稱(chēng)合設(shè)施控制臺(tái)且直接地從邏輯 分區(qū)接收操作員消息命令。復(fù)用器位于耦合設(shè)施內(nèi)且耦合到操作員消息處理器240。因 此,從耦合設(shè)施控制臺(tái)發(fā)布的操作員消息命令現(xiàn)在被轉(zhuǎn)發(fā)至復(fù)用器,其指引那些命令到操 作員消息處理器的轉(zhuǎn)發(fā)。同樣地,從邏輯分區(qū)(或其他遠(yuǎn)程實(shí)體)接收到的操作員消息命令 也被輸入到復(fù)用器300。此外,與操作員消息命令(例如,讀取操作員消息(Read Operator Message)和刪除操作員消息(Delete Operator Message))的處理相關(guān)聯(lián)的邏輯分區(qū)所發(fā) 布的其他命令也被輸入到復(fù)用器300。因此,為了方便起見(jiàn),包括操作員消息命令的命令以 及與之相關(guān)聯(lián)的其他操作在本文中被稱(chēng)為SMSG命令。復(fù)用器將接收到的命令(即,來(lái)自耦 合設(shè)施控制臺(tái)的操作員消息命令和SMSG命令)指引到操作員消息處理器。
[0063]參考圖3B來(lái)描述復(fù)用器用來(lái)控制命令的選擇以由操作員消息處理的邏輯的一個(gè) 實(shí)施例。最初,復(fù)用器是空閑的,等待接收命令,步驟350。如果不存在命令,詢(xún)問(wèn)352,則復(fù) 用器保持空閑,步驟350。否則,如果接收到至少一個(gè)命令,則命令中的一個(gè)被發(fā)送到操作員 消息處理以便處理,步驟354。例如,接收到的第一命令被發(fā)送,或者如果接收到操作員消息 命令和SMSG命令兩者,在本例子中,則發(fā)送SMSG命令中的一個(gè)。
[0064]操作員消息處理器處理命令,如下文進(jìn)一步所述,并且輸出結(jié)果,步驟356。如果命 令來(lái)自耦合設(shè)施控制臺(tái),則結(jié)果被輸出到控制臺(tái)。然而,在本例子中,如果命令來(lái)自處理器, 則結(jié)果被存儲(chǔ)在緩沖器中,如下文所述,并被提供給耦合設(shè)施控制臺(tái)。
[0065]其后,進(jìn)行關(guān)于是否存在來(lái)自除耦合設(shè)施控制臺(tái)的源之外的任何待決命令(例如, 待決SMSG命令),詢(xún)問(wèn)358。如果存在至少一個(gè)待決SMSG命令,則處理器以其中選擇命令并 發(fā)送到操作員消息處理器的步驟354繼續(xù)。否則,進(jìn)行檢查以查看是否存在來(lái)自耦合設(shè)施 控制臺(tái)的任何待決命令,詢(xún)問(wèn)360。如果存在一個(gè)或多個(gè)待決控制臺(tái)命令,則處理器以步驟 354繼續(xù)。然而,如果不存在更多的待決控制臺(tái)命令,則處理繼續(xù)至步驟350。
[0066]可以從耦合到耦合設(shè)施的一個(gè)或多個(gè)邏輯分區(qū)(S卩,從非CF邏輯分區(qū),其是不包 括耦合設(shè)施控制代碼的分區(qū))接收多個(gè)命令。因此,耦合設(shè)施包括一個(gè)或多個(gè)緩沖器(在本 文中稱(chēng)為操作員消息(OM)處理緩沖器)以存儲(chǔ)來(lái)自此類(lèi)分區(qū)的輸入命令。參考圖4A — 4B 來(lái)描述關(guān)于緩沖器的更多細(xì)節(jié)。
[0067]參考圖4A,在一個(gè)例子中,耦合設(shè)施包括一個(gè)或多個(gè)緩沖器400。在本例子中,存 在九個(gè)緩沖器,但此緩沖器數(shù)目是可配置的。每個(gè)緩沖器400具有與之相關(guān)聯(lián)的多個(gè)控制 機(jī)構(gòu),如參考圖4B所述。
[0068]參考圖4B,緩沖器400包括例如:
[0069]操作員消息狀態(tài)402,其指示緩沖器的狀態(tài),包括空閑;活動(dòng)和在正在進(jìn)行中;或 者活性,響應(yīng)待決,如下所述。
[0070]操作員消息令牌(OMTK) 404,其為當(dāng)開(kāi)始操作員消息過(guò)程時(shí)由操作系統(tǒng)(例如,操 作系統(tǒng)控制臺(tái),其包括操作系統(tǒng)代碼,或者在邏輯分區(qū)中運(yùn)行的操作系統(tǒng)的部分)提供的 值。操作員消息令牌唯一地識(shí)別操作員消息請(qǐng)求。當(dāng)操作員消息處理緩沖器是空閑的時(shí), 操作員消息令牌包括零。此令牌被用來(lái)識(shí)別緩沖器,一旦其被選擇。
[0071]操作員消息定時(shí)器(0MT)406,其為在開(kāi)始操作員消息請(qǐng)求時(shí)設(shè)定的日時(shí)值。其被 設(shè)置成日時(shí)鐘的當(dāng)前值。操作員消息定時(shí)器被用來(lái)確定操作員消息已經(jīng)活動(dòng)的時(shí)間長(zhǎng)度。 當(dāng)操作員處理緩沖器是空閑的時(shí),操作員消息定時(shí)器包含零。[0072]操作員消息請(qǐng)求長(zhǎng)度(OMREQL) 408,其為包含OM請(qǐng)求(例如,操作員消息命令)的 以字節(jié)為單位的長(zhǎng)度。當(dāng)OM處理緩沖器是空閑的時(shí),OMREQL對(duì)象的值是零。
[0073]操作員消息響應(yīng)長(zhǎng)度(OMRESL) 410,其為包含OM響應(yīng)的以字節(jié)為單位的長(zhǎng)度的 值。當(dāng)OM處理緩沖器是空閑的時(shí)或者當(dāng)OM處理緩沖器是活動(dòng)的且正在處理時(shí),OMRESL對(duì) 象的值是零。
[0074]操作員消息請(qǐng)求數(shù)據(jù)(OMREQD) 412,其包括由開(kāi)始操作員消息(Start Operator Message)命令(下文所述)傳遞至稱(chēng)合設(shè)施的OM請(qǐng)求的內(nèi)容。當(dāng)OM處理緩沖器是空閑的 時(shí),OM請(qǐng)求數(shù)據(jù)的內(nèi)容是未定義的。
[0075]操作員消息響應(yīng)數(shù)據(jù)(OMRESD) 414,其包括操作員消息命令的結(jié)果。當(dāng)操作員消 息處理緩沖器是空閑的時(shí),或者當(dāng)操作員消息處理緩沖器是活動(dòng)的且正在處理時(shí),OM響應(yīng) 數(shù)據(jù)的內(nèi)容是未定義的。
[0076]如上所述,每個(gè)緩沖器具有與之相關(guān)聯(lián)的各種狀態(tài)。參考圖5,最初,緩沖器處于空 閑狀態(tài)500。這指示其可用于開(kāi)始消息。響應(yīng)于開(kāi)始操作員消息(Start Operator Message) 命令,緩沖器過(guò)渡至活動(dòng)和正在進(jìn)行中狀態(tài)502,其指示操作員消息命令正在被耦合設(shè)施處 理。特別地,操作員消息處理器240在后臺(tái)中處理該請(qǐng)求,包括操作員消息命令,并提供響 應(yīng)。響應(yīng)于生成響應(yīng),緩沖器被置于活動(dòng),響應(yīng)待決狀態(tài)504。在這里,查詢(xún)緩沖器的讀取操 作能夠訪問(wèn)緩沖器并讀出響應(yīng)。
[0077]其后,可以經(jīng)由例如耦合設(shè)施(S卩,操作員消息處理器)所識(shí)別的超時(shí)或者明確 地由刪除操作員消息(Delete Operator Message)或開(kāi)始操作員消息(Start Operator Message)使緩沖器返回至空閑狀態(tài)。下面描述關(guān)于緩沖器及其處理的更多細(xì)節(jié)。
[0078]操作換消息(OM)處理緩沖器是包含與經(jīng)由開(kāi)始操作員消息(Start Operator Message) (SOM)命令發(fā)送的操作員消息命令的處理有關(guān)的信息的耦合設(shè)施存儲(chǔ)器的區(qū)域。 OM處理緩沖器是從不可用于結(jié)構(gòu)分配的耦合設(shè)施存儲(chǔ)器的區(qū)域分配的。
[0079]OM處理緩沖器是活動(dòng)的或空閑的。當(dāng)空閑時(shí),其可用于由開(kāi)始操作員消息(Start Operator Message) (SOM)命令選擇。當(dāng)活動(dòng)時(shí),操作員消息過(guò)程已經(jīng)開(kāi)始且尚未被刪除。 如果操作員消息響應(yīng)是可用的,則緩沖器狀態(tài)是活動(dòng)的,響應(yīng)待決。否則,緩沖器狀態(tài)是活 動(dòng)的且正在處理。
[0080]刪除具有響應(yīng)待決的活動(dòng)操作員消息過(guò)程將與OM處理緩沖器相關(guān)聯(lián)的對(duì)象重置 并將緩沖器置于空閑狀態(tài)(也稱(chēng)為將OM處理緩沖器重置)。
[0081]存在能夠刪除活動(dòng)操作員消息過(guò)程的三個(gè)方式:
[0082]1.執(zhí)行刪除操作員消息(Delete Operator Message)命令,其指定與OM令牌對(duì)象 匹配的OM令牌,并且OM處理緩沖器是活動(dòng)的,響應(yīng)待決。
[0083]2.操作員消息過(guò)程已經(jīng)活動(dòng)的時(shí)間長(zhǎng)度超過(guò)OM超時(shí)控制的值,并且OM處理緩沖 器是活動(dòng)的,響應(yīng)待決。這可以被內(nèi)部I禹合設(shè)施過(guò)程或被開(kāi)始操作員消息(Start Operator Message)命令檢測(cè)到。
[0084]3.執(zhí)行開(kāi)始操作員消息(Start Operator Message)命令,其指定與OM令牌對(duì)象 匹配的OM令牌,并且OM處理緩沖器是活動(dòng)的,響應(yīng)待決,并且所有消息緩沖器都是忙碌的, 并且至少一個(gè)具有超時(shí)。
[0085]時(shí)間的滯后可以在OM處理緩沖器超時(shí)的時(shí)間和其被檢測(cè)為超時(shí)并重置成空閑狀態(tài)時(shí)之間發(fā)生。在這種情況下,OM處理緩沖器仍是活動(dòng)的,響應(yīng)待決,直至OM請(qǐng)求被刪除。
[0086]處理OM請(qǐng)求是作為后臺(tái)操作執(zhí)行的。當(dāng)開(kāi)始操作員消息(Start Operator Message)命令成功地完成時(shí),發(fā)起后臺(tái)過(guò)程。后臺(tái)過(guò)程生成OM響應(yīng)數(shù)據(jù),將響應(yīng)數(shù)據(jù)存儲(chǔ) 在OMRESD對(duì)象中,并將響應(yīng)長(zhǎng)度存儲(chǔ)在OMRESL對(duì)象中。其然后將OM處理緩沖器的狀態(tài)變 成活動(dòng)的,響應(yīng)待決。
[0087]下面描述關(guān)于緩沖器處理且特別是操作員消息(Operator Message)命令的更多 細(xì)節(jié)。然而,在該描述之前,描述其他對(duì)象和操作數(shù)以幫助理解本發(fā)明的一個(gè)或多個(gè)方面。
[0088]作為示例,耦合設(shè)施包括用來(lái)處理操作員消息命令的許多全局對(duì)象。這些對(duì)象包 括例如:
[0089]固定全局控制一例如,操作員消息處理緩沖器計(jì)數(shù)(0MPBC),其為模型相關(guān)值,執(zhí) 行耦合設(shè)施所支持的OM處理緩沖器的數(shù)目;
[0090]程序可修改全局控制一例如,操作員消息處理緩沖器(0MPB),以及操作員消息超 時(shí)控制(0MT0C),其為確定操作員消息與OM處理緩沖器相關(guān)聯(lián)的以秒為單位的最大時(shí)間長(zhǎng) 度的值。如果操作員消息在超過(guò)超時(shí)值之前尚未被明確地刪除,則操作員消息被耦合設(shè)施 刪除,并且OM處理緩沖器被置于空閑狀態(tài)。在一個(gè)例子中,默認(rèn)值是300 ;以及
[0091]設(shè)施屬性(FACA) —例如,操作員消息設(shè)施指示符,其為指定用于處理操作員消息 命令的本文所述設(shè)施是否得到耦合設(shè)施的支持的值。
[0092]此外,耦合設(shè)施包括在處理操作員消息命令中所使用的多個(gè)全局操作數(shù)。在一個(gè) 例子中,這些操作數(shù)包括:
[0093]操作員消息(OM)請(qǐng)求(0MREQ):可變長(zhǎng)度字節(jié)串,具有預(yù)先指定數(shù)目的字節(jié)(例如, 192字節(jié))的最大長(zhǎng)度,其包括要處理的操作員消息命令。該長(zhǎng)度由OM請(qǐng)求長(zhǎng)度指定。
[0094]操作員消息(OM)響應(yīng)(OMRES):可變長(zhǎng)度字節(jié)串,具有預(yù)定義數(shù)目的字節(jié)(例如, 4096字節(jié))的最大長(zhǎng)度。該長(zhǎng)度由OM響應(yīng)長(zhǎng)度指定。
[0095]操作員消息(OM)超時(shí)控制(0MT0C):確定操作員消息與OM處理緩沖器相關(guān)聯(lián)的以 秒為單位的最大時(shí)間長(zhǎng)度的值。作為例子,有效值的范圍為從5至300。忽視此操作數(shù),除 非更新OMTOC指示符是有效的,并被設(shè)置成指示要更新OM超時(shí)控制的值。
[0096]操作員消息(OM)令牌(OMTK):唯一地識(shí)別操作員消息過(guò)程的值。
[0097]更新OMTOC指示符(UOMTCI):指示是否應(yīng)更新操作員消息超時(shí)控制的值。其具有 以下編碼,作為例子:不更新OM超時(shí)控制;更新OM超時(shí)控制。
[0098]根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,能夠?qū)⒉僮鲉T消息命令從耦合設(shè)施控制臺(tái)發(fā)送到 耦合設(shè)施以及耦合到耦合設(shè)施的邏輯分區(qū)或其他系統(tǒng)處理器等。參考圖6來(lái)描述與從除耦 合設(shè)施控制臺(tái)之外的源向耦合設(shè)施發(fā)送操作員消息命令相關(guān)聯(lián)的處理。
[0099]最初,由發(fā)起者輸入或生成命令,作為例子,諸如操作系統(tǒng)控制臺(tái)或測(cè)試程序,步 驟600。響應(yīng)于此,操作系統(tǒng)(例如,在控制臺(tái)上執(zhí)行或執(zhí)行測(cè)試程序的部分)生成操作員消 息令牌,步驟602。在一個(gè)例子中,通過(guò)將系統(tǒng)標(biāo)識(shí)符與日時(shí)鐘值串聯(lián)來(lái)生成令牌。其后,發(fā) 起者發(fā)布包括令牌的開(kāi)始操作員消息(Start Operator Message) (SOM)請(qǐng)求以及所請(qǐng)求 的操作員消息命令,步驟604。開(kāi)始操作員消息(Start Operator Message)請(qǐng)求被發(fā)送到 耦合到發(fā)起者的邏輯分區(qū)。
[0100]在邏輯分區(qū)處,操作系統(tǒng)通過(guò)將包括令牌和所請(qǐng)求操作員消息命令的開(kāi)始請(qǐng)求放置在開(kāi)始操作員消息(Start Operator Message)命令的消息命令塊中來(lái)創(chuàng)建開(kāi)始操作員 消息(Start Operator Message)命令。然后經(jīng)由SMSG命令將消息命令塊從操作系統(tǒng)發(fā)送 到耦合設(shè)施。復(fù)用器接收SMSG命令并及時(shí)地將其轉(zhuǎn)發(fā)至操作員消息處理器。操作員消息 處理器然后處理該命令,如下所述。作為處理的一部分,生成響應(yīng)。
[0101]對(duì)開(kāi)始操作員消息(Start Operator Message)命令的響應(yīng)被轉(zhuǎn)發(fā)至SOM的發(fā)起 者。例如,響應(yīng)被包括在經(jīng)由SMSG轉(zhuǎn)發(fā)至邏輯分區(qū)的消息響應(yīng)塊中。然后,從邏輯分區(qū),響 應(yīng)被轉(zhuǎn)發(fā)至發(fā)起者。
[0102]發(fā)起者(例如,操作系統(tǒng)控制臺(tái)、測(cè)試程序)接收響應(yīng)并檢查響應(yīng)代碼的值,詢(xún)問(wèn) 606。如果響應(yīng)代碼指示所有緩沖器都已是活動(dòng)的,并且因此不可用,則處理返回至步驟 604。然而,如果相應(yīng)代碼指示操作員消息已經(jīng)開(kāi)始,則處理以步驟610繼續(xù)。否則,發(fā)布錯(cuò) 誤消息,步驟608。
[0103]在步驟610處,由發(fā)起者讀取操作員消息(Read Operator Message)命令以讀取 緩沖器以獲得由I禹合設(shè)施響應(yīng)于處理開(kāi)始操作員消息(Start Operator Message)中的操 作員消息命令而提供的響應(yīng)。例如,在邏輯分區(qū)(例如,操作系統(tǒng))處接收由發(fā)起者發(fā)布的 讀取操作員消息(Read Operator Message)請(qǐng)求,其創(chuàng)建讀取操作員消息(Read Operator Message)命令并經(jīng)由SMSG將其從操作系統(tǒng)轉(zhuǎn)發(fā)至耦合設(shè)施。該耦合設(shè)施和特別地復(fù)用器 接收SMSG命令并隨后將其轉(zhuǎn)發(fā)至操作員消息處理器。操作員消息處理器如下所述地處理 讀取命令并發(fā)送響應(yīng)代碼。響應(yīng)代碼最終被返回至發(fā)起者,如上所述。檢查響應(yīng)代碼,詢(xún)問(wèn) 612,并且如果響應(yīng)指示OM響應(yīng)不可用,則處理返回至步驟610。然而,如果響應(yīng)代碼指示 OM響應(yīng)是可用的,則讀取緩沖器以獲得所請(qǐng)求操作員消息命令的結(jié)果。在一個(gè)實(shí)施例中,處 理然后以步驟616繼續(xù)。否則,發(fā)布錯(cuò)誤消息,步驟614。
[0104]在步驟616處,由發(fā)起者發(fā)布刪除操作員消息請(qǐng)求并在邏輯分區(qū)處接收。操作系 統(tǒng)生成刪除操作員消息(Delete Operator Message)命令并經(jīng)由SMSG將其發(fā)送到稱(chēng)合設(shè) 施,如上所述。由操作員消息處理器處理刪除操作員消息(Delete Operator Message)命 令,如下所述,并且向發(fā)起者返回響應(yīng)。發(fā)起者檢查對(duì)刪除操作員消息(Delete Operator Message)命令的響應(yīng)代碼,詢(xún)問(wèn)618。如果響應(yīng)代碼指示操作員消息被刪除,則向發(fā)布者提 供OM響應(yīng),步驟620。否則,發(fā)布錯(cuò)誤消息,步驟622。
[0105]如上文所指示的,存在根據(jù)本發(fā)明的一個(gè)或多個(gè)方面而使用的各種消息命令。一 個(gè)此列命令是開(kāi)始操作員消息(Start Operator Message)命令,參考圖7A—7B來(lái)描述其 實(shí)施例。
[0106]在一個(gè)例子中,通過(guò)例如z/OS?控制臺(tái)或測(cè)試程序來(lái)發(fā)起操作員消息命令。其流 入z/OS?邏輯分區(qū)并被通過(guò)開(kāi)始操作員消息(start Operator Message)命令中的發(fā)送消 息(Send Message)被發(fā)送到耦合設(shè)施。參考圖7A來(lái)描述此處理的一個(gè)實(shí)施例。
[0107]如上所述,發(fā)送消息(Send Message)指令250包括消息操作塊252和子信道254 的名稱(chēng)。然而,在這種情況下,對(duì)于開(kāi)始操作員消息(Start Operator Message)而言,消 息操作塊僅包括消息命令塊地址258,其指向MCB264/MRB266。對(duì)于此操作而言,不存在 消息塊。呈現(xiàn)給稱(chēng)合設(shè)施的消息命令塊包括開(kāi)始操作員消息(Start Operator Message) MCB780,其具有例如開(kāi)始操作員消息(Start Operator Message)請(qǐng)求參數(shù)782和指定所請(qǐng) 求的操作員命令的操作員消息請(qǐng)求784。返回的響應(yīng)是開(kāi)始操作員消息MRB790,其包括具有響應(yīng)代碼的開(kāi)始操作員消息(Start Operator Message)響應(yīng)參數(shù)792。
[0108]在一個(gè)例子中,開(kāi)始操作員消息(Start Operator Message)請(qǐng)求參數(shù)包括令牌、 請(qǐng)求以及請(qǐng)求長(zhǎng)度。耦合設(shè)施和特別地操作員消息處理器經(jīng)由復(fù)用器接收SMSG命令塊并 開(kāi)始處理開(kāi)始操作員消息(Start Operator Message)命令,如參考圖7B所述。
[0109]最初,操作員消息處理器掃描操作消息緩沖器,尋找空閑緩沖器(例如,OMTK具有 零),步驟700。進(jìn)行關(guān)于是否存在任何空閑緩沖器的確定,詢(xún)問(wèn)702。如果存在空閑緩沖器, 則選擇空閑緩沖器(例如,第一),步驟704。其后,將操作員消息令牌存儲(chǔ)在緩沖器中,步驟 706。此外,將緩沖器中的操作員消息定時(shí)器設(shè)置成當(dāng)前時(shí)間,步驟708。在一個(gè)例子中,從 日時(shí)鐘獲得時(shí)間。此外,將請(qǐng)求和請(qǐng)求長(zhǎng)度存儲(chǔ)在緩沖器中,步驟710,并且將緩沖器狀態(tài) 設(shè)置成活動(dòng)的和正在進(jìn)行中(也稱(chēng)為活動(dòng)和處理),步驟712。返回代碼被返回操作系統(tǒng)(例 如,Z/OS?)指示設(shè)置了緩沖器,步驟714,并且最后到發(fā)起者。此處理與z/OS?程序同步 地執(zhí)行。
[0110]返回詢(xún)問(wèn)702,如果不存在空閑緩沖器,則再一次操作操作員消息緩沖器,尋找已 經(jīng)超時(shí)的活動(dòng)緩沖器,步驟720。進(jìn)行關(guān)于是否存在已經(jīng)超時(shí)的任何活動(dòng)緩沖器的確定,詢(xún) 問(wèn)722。如果沒(méi)有,則提供指示不存在可用緩沖器的返回代碼,步驟724。
[0111]然而,如果存在已經(jīng)超時(shí)的任何活動(dòng)緩沖器,則選擇超時(shí)緩沖器,步驟726。在一個(gè) 例子中,選擇的是第一超時(shí)緩沖器。緩沖器被設(shè)置成空閑狀態(tài),步驟728,并且處理以步驟 706繼續(xù),其中緩沖器被初始化。
[0112]下面描述關(guān)于開(kāi)始操作員消息(Start Operator Message)命令的更多細(xì)節(jié)。如本 文所指示的,此命令以及讀取操作員消息(Read Operator Message)命令和刪除操作員消 息(Delete Operator message)命令被使用SMSG傳送至稱(chēng)合設(shè)施。SMSG從邏輯分區(qū)向稱(chēng) 合設(shè)施發(fā)送包括所請(qǐng)求命令的消息。為了發(fā)送該消息,消息被包括在消息命令塊(PCB)中, 并且在消息響應(yīng)開(kāi)(MRB)中包括對(duì)消息的任何響應(yīng)。
[0113]在一個(gè)例子中,用于開(kāi)始操作員消息(Start Operator Message)的消息命令塊包 括:消息報(bào)頭;命令(例如,開(kāi)始操作員消息(Start Operator Message)) ;0M請(qǐng)求長(zhǎng)度;操 作員消息令牌;以及操作員消息請(qǐng)求(例如,操作員消息命令)。
[0114]在操作中,將在請(qǐng)求中提供的OM令牌的值與每個(gè)OM處理緩沖器中的OM令牌對(duì)象 相比較。如果OM令牌是有效的且與任何OM令牌對(duì)象不匹配,并且如果至少一個(gè)OM處理緩 沖器是空閑的,則選擇空閑緩沖器。如果OM處理緩沖器處于空閑狀態(tài)且至少OM處理緩沖 器是活動(dòng)的,響應(yīng)待決且已超過(guò)了超時(shí)值,則選擇超時(shí)緩沖器并重置成空閑狀態(tài)。
[0115]一旦選擇了空閑緩沖器,則將OM令牌放置在OMTK對(duì)象中,將0M0請(qǐng)求放置在 OMREQD對(duì)象中,將OM請(qǐng)求長(zhǎng)度放置在OMREQL對(duì)象中,將OM定時(shí)器對(duì)象設(shè)置成日時(shí)鐘的值, 將緩沖器置于活動(dòng)和正在處理狀態(tài),并且發(fā)起后臺(tái)過(guò)程以處理OM響應(yīng)(S卩,開(kāi)始處理所請(qǐng) 求的操作員消息命令并將信息(流入,關(guān)于OM命令的結(jié)果)放置在緩沖器中)。返回代碼被 返回至操作系統(tǒng),指示操作員消息已經(jīng)開(kāi)始。
[0116]如果OM令牌與用于活動(dòng)OM處理緩沖器的OM令牌對(duì)象匹配,則不發(fā)生處理。該命 令完成并返回響應(yīng)代碼,指示操作員消息已經(jīng)開(kāi)始。
[0117]如果OM令牌是有效的,不與任何OM令牌對(duì)象匹配,并且所有緩沖器是活動(dòng)的且正 在處理或者活動(dòng)的,響應(yīng)待決而未超過(guò)超時(shí)控制,則該命令完成并返回響應(yīng)代碼,指示沒(méi)有可用緩沖器。
[0118]在消息響應(yīng)塊中返回響應(yīng),其包括例如響應(yīng)描述符和響應(yīng)代碼。
[0119]響應(yīng)于接收到指示操作員消息已經(jīng)開(kāi)始的響應(yīng),發(fā)布讀取操作員消息(Read Operator Message)命令以獲得對(duì)所請(qǐng)求操作員消息命令的響應(yīng)。返回圖8A,經(jīng)由發(fā)送消息 (Send Message)協(xié)議來(lái)發(fā)送讀取操作員消息(Read Operator Message)命令。如上所述, 發(fā)送消息(Send Message)指令250包括消息操作塊252和子信道254的名稱(chēng)。對(duì)于讀取 操作員消息(Read Operator Message)命令而言,消息操作塊252包括MCB地址258、MBAL 地址260以及MBAL長(zhǎng)度262。對(duì)于讀取操作員消息(Read Operator Message)命令而言, MBAL長(zhǎng)度等于一且MBAL地址260指向具有一個(gè)條目的MBAL268。MBAL268指向消息緩沖器 272。
[0120]MCB地址258指定MCB264/MRB266對(duì)。用于讀取操作員消息(Read Operator Message)命令的消息控制塊880包括讀取操作員消息(Read Operator Message)請(qǐng)求參數(shù) 882 (例如,消息報(bào)頭、讀取命令、OM令牌),其被傳送至耦合設(shè)施以用于處理。響應(yīng)于處理 讀取操作員消息(Read Operator Message)命令,在MRB266中返回讀取操作員消息(Read Operator Message)響應(yīng)參數(shù)(例如,響應(yīng)代碼)。另外,返回操作員消息(OM)響應(yīng)875并放 置在消息緩沖器272中。
[0121]參考圖SB來(lái)描述讀取操作員消息命令的邏輯的一個(gè)實(shí)施例。最初,在操作員消息 緩沖器中掃描具有與在命令中提供的OM令牌匹配的OM令牌的緩沖器,步驟800。如果不存 在具有匹配OM令牌的緩沖器,詢(xún)問(wèn)802,則返回指示未發(fā)現(xiàn)匹配令牌的響應(yīng)代碼,步驟804。
[0122]然而,如果存在具有匹配OM令牌的OM緩沖器,則進(jìn)行關(guān)于在緩沖器是否存在OM 響應(yīng)待決的確定,詢(xún)問(wèn)806。如果不存在OM響應(yīng)待決,則返回指示OM響應(yīng)不可用的響應(yīng)代 碼,步驟808。
[0123]返回詢(xún)問(wèn)806,如果存在OM響應(yīng)待決,則OM響應(yīng)被拷貝到由SMSG指定的數(shù)據(jù)塊 (例如,位于消息緩沖器272內(nèi)),步驟810,并且響應(yīng)長(zhǎng)度被拷貝到消息響應(yīng)塊,步驟812。返 回OM響應(yīng)(即,數(shù)據(jù)塊),以及指示OM響應(yīng)可用的響應(yīng)代碼,步驟814。
[0124]下面描述關(guān)于讀取操作員消息(Read Operator Message)命令的更多細(xì)節(jié)。在一 個(gè)例子中,用于讀取操作員消息(Read Operator Message)的消息命令塊包括消息報(bào)頭;讀 取命令;以及操作員消息令牌。
[0125]在操作中,當(dāng)提供了足夠的消息緩沖器空間(例如,緩沖器272)時(shí)(即等于或大于 預(yù)先指定尺寸的緩沖空間可用),則將OM令牌的值與每個(gè)OM處理緩沖器中的OM令牌對(duì)象 相比較。
[0126]如果OM令牌與用于OM處理緩沖器的OM令牌對(duì)象相比較且緩沖器是活動(dòng)的,響應(yīng) 待決,則OM響應(yīng)被放置在數(shù)據(jù)塊中。返回?cái)?shù)據(jù)塊、OM請(qǐng)求、OM請(qǐng)求長(zhǎng)度、OM響應(yīng)長(zhǎng)度以及 指示OM響應(yīng)可用的響應(yīng)代碼。除數(shù)據(jù)塊之外,在消息響應(yīng)塊中返回響應(yīng),其包括例如響應(yīng) 描述符、響應(yīng)代碼、OM請(qǐng)求長(zhǎng)度、OM響應(yīng)長(zhǎng)度以及OM請(qǐng)求。經(jīng)由SMSG但與響應(yīng)塊分開(kāi)地返 回?cái)?shù)據(jù)塊。
[0127]如果OM令牌與用于活動(dòng)且正在處理的OM處理緩沖器的OM令牌對(duì)象匹配,則不發(fā) 生處理。該命令完成并向程序返回指示OM響應(yīng)不可用的響應(yīng)代碼。在響應(yīng)塊中返回響應(yīng), 其包括例如響應(yīng)指示符和響應(yīng)代碼。[0128]如果OM令牌是有效的但并不與用于活動(dòng)OM處理緩沖器的任何OM令牌對(duì)象匹配, 則不發(fā)生處理。命令完成并返回指示未發(fā)現(xiàn)匹配令牌的響應(yīng)代碼。在響應(yīng)塊中返回響應(yīng), 其包括例如響應(yīng)指示符和響應(yīng)代碼。
[0129]當(dāng)消息緩沖器尺寸小于預(yù)先指定尺寸時(shí),存在不足以包含數(shù)據(jù)塊的消息緩沖器空 間(例如,緩沖器272)。(在這種情況下,不發(fā)生處理,命令完成并返回指示不足消息緩沖器 空間的響應(yīng)代碼。在響應(yīng)塊中返回響應(yīng),其包括例如響應(yīng)指示符和響應(yīng)代碼。
[0130]在接收到響應(yīng)之后,可以進(jìn)行將緩沖器重置的判定。因此,發(fā)布刪除操作員消息 (Delete Operator Message)命令。參考圖9A,如其他操作員消息命令的情況一樣,經(jīng)由發(fā) 送消息(Send Message)協(xié)議向f禹合設(shè)施發(fā)送刪除操作員消息(Delete Operator Message) 命令。再次地,發(fā)送消息(Send Message)指令250包括消息操作塊252和子信道254的名 稱(chēng)。在這種情況下,消息操作塊包括指向MCB264/MRB266對(duì)的MCB地址258。用于刪除操作 員消息(Delete Operator Message)的MCB980包括刪除操作員消息請(qǐng)求參數(shù)982(例如,消 息報(bào)頭、刪除命令以及OM令牌),其被轉(zhuǎn)發(fā)至耦合設(shè)施。響應(yīng)于執(zhí)行刪除操作員消息(Delete Operator Message)命令,在 MRB266 中返回刪除操作員消息(Delete Operator Message) MRB990,其包括刪除操作員消息(Delete Operator Message)響應(yīng)參數(shù)。
[0131]參考圖9B來(lái)描述由操作員消息處理器執(zhí)行的刪除操作員消息(Delete Operator Message)命令的邏輯的一個(gè)實(shí)施例。最初,在OM緩沖器中掃描具有匹配OM令牌的緩沖器, 步驟900。如果不存在具有匹配OM令牌的緩沖器,詢(xún)問(wèn)902,則返回指示操作員消息被刪除 的響應(yīng)代碼,步驟904。
[0132]然而,如果存在具有匹配OM令牌的緩沖器,詢(xún)問(wèn)902,則進(jìn)行關(guān)于OM響應(yīng)是否待決 的進(jìn)一步確定,詢(xún)問(wèn)906。如果OM響應(yīng)不是待決的,則返回指示緩沖器是活動(dòng)的且正在處理 的響應(yīng)代碼,步驟908。
[0133]如果存在OM響應(yīng)待決,詢(xún)問(wèn)906,則將OM令牌、OM定時(shí)器、請(qǐng)求長(zhǎng)度和響應(yīng)長(zhǎng)度重 置,例如重置成零,步驟910。此外,將OM緩沖器狀態(tài)設(shè)置成空閑,步驟912,并且返回指示 操作員消息被刪除的響應(yīng)代碼,步驟914。(在另一實(shí)施例中,將緩沖器設(shè)置成空閑狀態(tài)刪除 緩沖器;并且將空閑緩沖器設(shè)置成活動(dòng)狀態(tài)創(chuàng)建新的緩沖器。)
[0134]下面描述關(guān)于刪除操作員消息(Delete Operator Message)命令的更多細(xì)節(jié)。在 一個(gè)例子中,用于刪除操作員消息(Delete Operator Message)命令的消息命令塊包括消 息報(bào)頭;刪除操作員消息(Delete Operator Message)命令;以及操作員消息令牌。
[0135]在操作中,將OM令牌的值與每個(gè)OM處理緩沖器中的OM令牌對(duì)象相比較。如果OM 令牌與活動(dòng)OM處理緩沖器中的OM令牌對(duì)象的值匹配且緩沖器是活動(dòng)的,響應(yīng)待決,則將OM 處理緩沖器中的對(duì)象重置并將緩沖器置于空閑狀態(tài)。當(dāng)緩沖器對(duì)象已被重置時(shí),命令完成 并向操作系統(tǒng)返回指示操作員消息被刪除的響應(yīng)代碼。
[0136]當(dāng)OM處理緩沖器是活動(dòng)的且正在處理時(shí),不發(fā)生動(dòng)作。命令完成并返回指示緩沖 器是活動(dòng)的且正在處理的響應(yīng)代碼。
[0137]當(dāng)OM令牌是有效的且不與用于任何活動(dòng)OM處理緩沖器的OM令牌對(duì)象匹配時(shí),不 發(fā)生動(dòng)作。命令完成并向程序返回指示操作消息被刪除的響應(yīng)代碼。
[0138]在消息響應(yīng)塊中返回響應(yīng),其包括例如響應(yīng)描述符和響應(yīng)代碼。
[0139]上面詳細(xì)地描述了用以處理操作員消息請(qǐng)求的各種命令。在本例子中,這些命令是操作員消息(Operator Message)設(shè)施的一部分。操作員消息(Operator Message)設(shè)施包 括在本文中為了完整起見(jiàn)而描述的其他命令。這些命令包括讀取設(shè)施參數(shù)(Read Facility Parameters)命令和設(shè)置設(shè)施權(quán)限(Set Facility Authority)命令。
[0140]對(duì)于讀取設(shè)施參數(shù)(Read Facility Parameters)命令而言,消息請(qǐng)求塊包括例如 消息報(bào)頭和讀取設(shè)施參數(shù)(Read Facility Parameters)命令。在操作中,將稱(chēng)合設(shè)施控 制的值放置在響應(yīng)操作數(shù)中,并且指示成功(如果為真的話)的響應(yīng)代碼存儲(chǔ)在響應(yīng)代碼操 作數(shù)中。此命令可以將許多控制置于響應(yīng)操作數(shù)中,然而,對(duì)于操作員消息設(shè)施(Operator Message Facility)而言,操作員消息處理器緩沖器計(jì)數(shù)被放置在OMPBC中,并且操作員消 息超時(shí)控制被放置在OMTOC中。
[0141]當(dāng)響應(yīng)代碼指示返回了耦合設(shè)施控制值時(shí),返回的消息響應(yīng)塊包括例如用于操作 員消息設(shè)施(Operator Message Facility)的響應(yīng)描述符、響應(yīng)代碼、OM處理器緩沖器計(jì)數(shù) 以及OM超時(shí)控制。還可以返回用于其他設(shè)施的其他控制。
[0142]對(duì)于設(shè)置設(shè)施權(quán)限(Set Facility Authority)命令而言,消息請(qǐng)求塊包括例如 下文所述的消息報(bào)頭、設(shè)置設(shè)施權(quán)限(Set Facility Authority)命令、OM超時(shí)控制、更新 0MT0C指示符、比較權(quán)限控制和權(quán)限控制。
[0143]在操作中,將耦合設(shè)施權(quán)限控制值與在消息命令塊中接收到的比較權(quán)限(CAU)操 作數(shù)相比較。當(dāng)其比較為相等時(shí),將在消息命令塊中接收到的權(quán)限(AU)操作數(shù)的值存儲(chǔ)在 耦合設(shè)施權(quán)限控制中并更新耦合設(shè)施狀態(tài)。
[0144]當(dāng)耦合設(shè)施權(quán)限控制從零變成非零值時(shí),耦合設(shè)施狀態(tài)從未管理變成 被管理,OM超時(shí)控制被有條件地更新,在每個(gè)消息路徑上向遠(yuǎn)程耦合設(shè)施發(fā)布 activate-message-path (活動(dòng)消息路徑)命令,并且返回指示成功的響應(yīng)代碼。如果 update-0m-timeout (更新OM超時(shí))指示符是一,則OM超時(shí)控制操作數(shù)被存儲(chǔ)在0MT0C對(duì) 象中。否則,不對(duì)0MT0C對(duì)象進(jìn)行更新。還可以發(fā)生其他處理。
[0145]在包括例如響應(yīng)描述符和響應(yīng)代碼的消息響應(yīng)塊中返回響應(yīng)代碼。
[0146]根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,提供了用于由耦合設(shè)施來(lái)處理來(lái)自多個(gè)源的操作 員消息命令的操作員消息設(shè)施(Operator Message FaciIity),包括但不限于稱(chēng)合到I禹合 設(shè)施的耦合設(shè)施控制臺(tái)和邏輯分區(qū)(或其他處理器、系統(tǒng)等)。設(shè)施包括例如:
[0147]*操作員消息(OM)處理緩沖器集合。每個(gè)緩沖器能夠每次處理一個(gè)操作員消息請(qǐng) 求。緩沖器的數(shù)目是固定的(例如,9個(gè))且是模型相關(guān)的。
[0148]*所支持OM處理緩沖器的數(shù)目的計(jì)數(shù)器。
[0149]*到期超時(shí),稱(chēng)為OM超時(shí)控制,其額定操作員消息在其被刪除之前將在處理緩沖 器中維持的時(shí)間長(zhǎng)度。用于到期超時(shí)的默認(rèn)值是例如5分鐘。其可以被設(shè)置設(shè)施權(quán)限(Set Facility Authority)命令改變。
[0150]*全局命令,允許程序訪問(wèn)操作員消息設(shè)施(Operator Message Facility):
[0151]一開(kāi)始操作員消息(Start Operator Message) (SOM)
[0152]一讀取操作員消息(Read Operator Message) (ROM)
[0153]一刪除操作員消息(Delete Operator Message) (DOM)
[0154]*后臺(tái)處理功能,其生成操作員消息響應(yīng),將響應(yīng)放置在OM處理緩沖器中,并改變 緩沖器的狀態(tài)以指示響應(yīng)而用于檢索。[0155]此設(shè)施在一方面提供用于除耦合設(shè)施控制臺(tái)之外的遠(yuǎn)程實(shí)體發(fā)布操作員消息命 令以例如測(cè)試耦合設(shè)施的機(jī)構(gòu)。這允許更多的深入測(cè)試,例如在生產(chǎn)之前或者甚至在生產(chǎn) 中。操作員消息命令導(dǎo)致在耦合設(shè)施上執(zhí)行動(dòng)作。此類(lèi)命令/動(dòng)作的示例包括但不限于在 耦合設(shè)施上安裝一塊代碼,產(chǎn)生耦合設(shè)施的一部分的切斷,配置耦合設(shè)施,將耦合設(shè)施解除 配置或管理耦合設(shè)施的一個(gè)或多個(gè)部件。也可以有其他動(dòng)作,在本文中描述了其中的某些。 按照所請(qǐng)求命令,在耦合設(shè)施上執(zhí)行動(dòng)作,并且然后進(jìn)行關(guān)于動(dòng)作是否如預(yù)期的那樣執(zhí)行、 引起錯(cuò)誤等的確定。通過(guò)執(zhí)行該動(dòng)作,測(cè)試耦合設(shè)施以查看耦合是否按照該動(dòng)作表現(xiàn)如預(yù) 期的那樣。
[0156]在一個(gè)特定示例中,z/OS系統(tǒng)上的程序使用系統(tǒng)名和存儲(chǔ)時(shí)鐘(STCK)值來(lái)生成 sysplex范圍的唯一令牌,并發(fā)布SMSG指令以向耦合設(shè)施發(fā)送CFCC操作員命令。耦合設(shè)施 接受該命令并異步地處理命令。如果SMSG是成功的,則z/OS程序用緩沖器來(lái)輪詢(xún)命令完 成以使用在第一 SMSG上發(fā)布的唯一令牌來(lái)包含命令響應(yīng)。當(dāng)CFCC處理命令時(shí),其向耦合 設(shè)施控制臺(tái)發(fā)布消息并將消息保存到緩沖器中。當(dāng)命令完成時(shí),用來(lái)輪詢(xún)命令完成的SMSG 將獲得成功返回代碼并向指定緩沖器中返回命令響應(yīng)。z/OS程序然后處理該結(jié)果并發(fā)布 SMSG以將保存的命令響應(yīng)從耦合設(shè)施刪除。作為示例,程序可以是處理結(jié)果的測(cè)試用例或 在控制臺(tái)上顯示結(jié)果的z/OS命令接口。
[0157]作為示例,如本文所使用的獲得包括但不限于接收、具有、提供、生成或創(chuàng)建。
[0158]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。 因此,本公開(kāi)可以具體實(shí)現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括 固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱(chēng)為“電路”、“模 塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì) 中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
[0159]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì) 算機(jī)可讀信號(hào)介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限 于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算 機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便 攜式計(jì)算機(jī)磁盤(pán)、硬盤(pán)、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ) 器(EPR0M或閃存)、光纖、便攜式緊湊磁盤(pán)只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、 或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程 序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
[0160]現(xiàn)在參考圖10,在一個(gè)例子中,計(jì)算機(jī)程序產(chǎn)品1000包括,例如,一個(gè)或多個(gè)非易 失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)1002,在其上存儲(chǔ)有計(jì)算機(jī)可讀的程序代碼裝置或邏輯1004,以 提供并方便本發(fā)明的一個(gè)或多個(gè)方面。
[0161]體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括 但不限于:無(wú)線、有線、光纜、RF等,或上述的任意合適的組合。
[0162]可以以一種或多種程序設(shè)計(jì)語(yǔ)言或其組合來(lái)編寫(xiě)用于執(zhí)行本發(fā)明操作的計(jì)算機(jī) 程序代碼,所述程序設(shè)計(jì)語(yǔ)言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言一諸如Java、Smalltalk、C++, 還包括常規(guī)的過(guò)程式程序設(shè)計(jì)語(yǔ)言一諸如”C”語(yǔ)言或類(lèi)似的程序設(shè)計(jì)語(yǔ)言。程序代碼可以 完全地在用戶計(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ī)可以通過(guò)任意種類(lèi)的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或 廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提 供商來(lái)通過(guò)因特網(wǎng)連接)。
[0163]本文中將參照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/ 或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各 方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、 專(zhuān)用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程序 指令通過(guò)計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框 中規(guī)定的功能/操作的裝置。
[0164]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置 以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一 個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instruction means)的制造品(manufacture)。
[0165]也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備 上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì) 算機(jī)實(shí)現(xiàn)的過(guò)程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖 和/或框圖中的方框中規(guī)定的功能/操作的過(guò)程。
[0166]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程 序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以 代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè) 用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所 標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以 基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的 是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行 規(guī)定的功能或操作的專(zhuān)用的基于硬件的系統(tǒng)來(lái)實(shí)現(xiàn),或者可以用專(zhuān)用硬件與計(jì)算機(jī)指令的 組合來(lái)實(shí)現(xiàn)。
[0167]除了上述,本發(fā)明的一個(gè)或多個(gè)方面可由服務(wù)提供商提供、許諾(offer)、部署、管 理、服務(wù)等,該服務(wù)提供商提供用戶環(huán)境的管理。例如,服務(wù)提供商可創(chuàng)建、維持、支持等計(jì) 算機(jī)代碼和/或計(jì)算機(jī)基礎(chǔ)設(shè)施,其為一個(gè)或多個(gè)用戶執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。反 過(guò)來(lái),服務(wù)提供商可例如根據(jù)預(yù)訂和/或費(fèi)用協(xié)議從用戶接受付費(fèi)。額外地或可替換地,月艮 務(wù)提供商可從向一個(gè)或多個(gè)第三方銷(xiāo)售廣告內(nèi)容接受付費(fèi)。
[0168]在本發(fā)明的一個(gè)方面,可部署用于執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面的應(yīng)用。作為一 個(gè)例子,部署應(yīng)用包括提供計(jì)算機(jī)基礎(chǔ)設(shè)施,其可操作以執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。
[0169]作為本發(fā)明的又一個(gè)方面,可部署計(jì)算基礎(chǔ)設(shè)施,其包括將計(jì)算機(jī)可讀代碼集成 到計(jì)算機(jī)系統(tǒng),其中與計(jì)算系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。
[0170]作為本發(fā)明的再一個(gè)方面,可提供用于集成計(jì)算基礎(chǔ)設(shè)施包括將計(jì)算機(jī)可讀碼集 成到計(jì)算機(jī)系統(tǒng)的過(guò)程。計(jì)算機(jī)系統(tǒng)包括計(jì)算機(jī)可讀介質(zhì),其中計(jì)算機(jī)介質(zhì)包括本發(fā)明的 一個(gè)或多個(gè)方面。與計(jì)算機(jī)系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。[0171]雖然上文描述了各種實(shí)施例,但這些僅僅是例子。例如,其他架構(gòu)的計(jì)算環(huán)境可以 結(jié)合并使用本發(fā)明的一個(gè)或多個(gè)方面。作為例子,除zl96服務(wù)器之外的服務(wù)器可以包括、 使用和/或受益于本發(fā)明的一個(gè)或多個(gè)方面。此外,除邏輯分區(qū)環(huán)境之外的環(huán)境可以結(jié)合 和使用本發(fā)明的一個(gè)或多個(gè)方面。另外,可以使用更多、更少或其他操作員消息命令和/或 其他命令。此外,可以使用除SMSG之外的傳輸。此外,復(fù)用器可以使用其他邏輯來(lái)選擇要 處理的下一命令??梢杂性S多其他變化。
[0172]而且,其他類(lèi)型的計(jì)算環(huán)境可受益于本發(fā)明的一個(gè)或多個(gè)方面。作為例子,可使用 適于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個(gè)通過(guò)系統(tǒng)總線直接或間接 耦合到存儲(chǔ)元件的處理器。存儲(chǔ)器元件包括,例如,在程序代碼的實(shí)際執(zhí)行期間使用的本地 存儲(chǔ)器、大容量存儲(chǔ)器以及高速緩沖存儲(chǔ)器,其提供至少一些程序代碼的臨時(shí)存儲(chǔ),以便減 少在執(zhí)行期間必須從大容量存儲(chǔ)器取回代碼的次數(shù)。
[0173]輸入/輸出或I/O設(shè)備(包括但不限于鍵盤(pán)、顯示器、指點(diǎn)設(shè)備、DASD、磁帶、⑶、 DVD、拇指驅(qū)動(dòng)器(thumb drive)以及其他的存儲(chǔ)介質(zhì)等)可直接或通過(guò)介于其間的I/O控 制器耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過(guò)介于其間的私 有或公共網(wǎng)絡(luò)而耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、電纜 調(diào)制解調(diào)器和以太網(wǎng)卡僅是一些可獲得的網(wǎng)絡(luò)適配器類(lèi)型。
[0174]參考圖11,其描述了實(shí)施本發(fā)明的一個(gè)或多個(gè)方面的主機(jī)計(jì)算機(jī)系統(tǒng)5000的代 表性組件。代表性主機(jī)計(jì)算機(jī)5000包括與計(jì)算機(jī)存儲(chǔ)器(即,中央存儲(chǔ)器)5002通信的一 個(gè)或多個(gè)CPU5001,以及到存儲(chǔ)介質(zhì)設(shè)備5011和網(wǎng)絡(luò)5010的I/O接口,以用于與其他計(jì)算 機(jī)或SAN等通信。CPU5001符合具有架構(gòu)指令集和架構(gòu)功能的架構(gòu)。CPU5001可具有動(dòng)態(tài) 地址轉(zhuǎn)換(DAT)5003,其用于將程序地址(虛擬地址)轉(zhuǎn)變?yōu)榇鎯?chǔ)器的真實(shí)地址。DAT典型地 包括用于高速緩存轉(zhuǎn)換的轉(zhuǎn)換后備緩沖器(TLB)5007,這樣稍后對(duì)計(jì)算機(jī)存儲(chǔ)器5002塊的 訪問(wèn)不需要地址轉(zhuǎn)換的延遲。典型地,高速緩存5009被使用在計(jì)算機(jī)存儲(chǔ)器5002和處理 器5001之間。高速緩存5009可以是分層的,具有可被多于一個(gè)的CPU獲得的大高速緩存, 以及大高速緩存和每個(gè)CPU之間的較小、較快(較低級(jí))的高速緩存。在一些實(shí)施方式中,較 低級(jí)的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪問(wèn)提供單獨(dú)的低級(jí)高速緩存。在一個(gè)實(shí)施例 中,由指令提取單元5004經(jīng)由高速緩存5009從存儲(chǔ)器5002獲取指令。指令在指令解碼單 元5006中被解碼,且(在一些實(shí)施例中與其他指令一起)被發(fā)送到一個(gè)或多個(gè)指令執(zhí)行單元 5008。典型地,使用若干執(zhí)行單元5008,例如算術(shù)執(zhí)行單元、浮點(diǎn)執(zhí)行單元和分支指令執(zhí)行 單元。指令被執(zhí)行單元執(zhí)行,如需要,從指令指定的寄存器或存儲(chǔ)器訪問(wèn)操作數(shù)。如果將從 存儲(chǔ)器5002訪問(wèn)(加載或存儲(chǔ))操作數(shù),加載/存儲(chǔ)單元5005典型地在被執(zhí)行的指令的控 制下處理該訪問(wèn)。指令可在硬件電路或內(nèi)部微代碼(固件)中或其組合中被執(zhí)行。
[0175]需注意的是,計(jì)算機(jī)系統(tǒng)包括本地(或主)存儲(chǔ)器中的信息,以及尋址、保護(hù)以及引 用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類(lèi)型和其中一 種類(lèi)型的地址被轉(zhuǎn)換為另一種類(lèi)型的地址的方式。一些主存儲(chǔ)器包括永久分配的存儲(chǔ)位 置。主存儲(chǔ)器向系統(tǒng)提供直接可被尋址的快速訪問(wèn)的數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)和程序在可被處理之 前都將(從輸入設(shè)備)被加載到主存儲(chǔ)器。
[0176]主存儲(chǔ)器可包括一個(gè)或多個(gè)更小、更快速訪問(wèn)的緩沖存儲(chǔ)器,有時(shí)候被稱(chēng)為高速 緩存。高速緩存典型地與CPU或I/O處理器物理地關(guān)聯(lián)。物理結(jié)構(gòu)以及不同存儲(chǔ)介質(zhì)的使用的效果,除了在性能上,通常不會(huì)被程序觀察到。
[0177]可維護(hù)用于指令和數(shù)據(jù)操作數(shù)的單獨(dú)的高速緩存。高速緩存中的信息可被維護(hù)為 相鄰的字節(jié),所述字節(jié)位于被稱(chēng)為高速緩存塊或高速緩存線(或簡(jiǎn)稱(chēng)為線)的整數(shù)界限上。 模型可提供EXTRACT CACHE ATTRIBUTE(提取高速緩存屬性)指令,其返回高速緩存線的字節(jié) 大小。模型也可提供PREFETCH DATA (預(yù)取數(shù)據(jù))和PREFETCH DATA RELATIVE LONG (預(yù)取 較長(zhǎng)數(shù)據(jù))指令,其實(shí)現(xiàn)存儲(chǔ)到數(shù)據(jù)或指令高速緩存中的預(yù)取,或數(shù)據(jù)從高速緩存的釋放。
[0178]存儲(chǔ)器被視為位的長(zhǎng)水平串。對(duì)于大部分操作來(lái)說(shuō),以從左到右的順序進(jìn)行對(duì)存 儲(chǔ)器的訪問(wèn)。位串被細(xì)分為八個(gè)位的單位。八位單位被稱(chēng)為字節(jié),其是所有信息格式的基 本構(gòu)件。存儲(chǔ)器中的每個(gè)字節(jié)位置由唯一的非負(fù)整數(shù)標(biāo)識(shí),該非負(fù)整數(shù)是該字節(jié)位置的地 址,或簡(jiǎn)稱(chēng)為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從0開(kāi)始且以從左到右的 順序進(jìn)行。地址是無(wú)符號(hào)二進(jìn)制整數(shù),且是24、31或64位。
[0179]信息一次一個(gè)字節(jié)或一組字節(jié)地在存儲(chǔ)器和CPU或通道子系統(tǒng)之間傳遞。除非另 有指定,例如在z/Architecture?中,存儲(chǔ)器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組 中的字節(jié)的數(shù)量可由將被執(zhí)行的操作暗示或顯式地指定。當(dāng)在CPU操作中使用時(shí),一組字 節(jié)被稱(chēng)為字段。在字節(jié)的每個(gè)組內(nèi),例如在z/Architecture?中,位以從左到右的順序被編 號(hào)。在z/Architecture?中,最左邊的位有時(shí)候被稱(chēng)為“高階”位且最右邊的位被稱(chēng)為“低 階”位。但是,位數(shù)不是存儲(chǔ)器地址。僅字節(jié)可被尋址。為了操作存儲(chǔ)器中的字節(jié)的單個(gè) 位,訪問(wèn)整個(gè)字節(jié)。字節(jié)上的位從左到右被編號(hào)為0到7(例如在z/Architecture?中)。對(duì) 于24位地址,地址中的位被編號(hào)為8-31或40-63,對(duì)于31位地址,編號(hào)為1_31或33-63, 對(duì)于64位地址,編號(hào)為0-63。在多個(gè)字節(jié)的任何其他的固定長(zhǎng)度的格式中,構(gòu)成格式的位 從0開(kāi)始被連續(xù)編號(hào)。為了錯(cuò)誤檢測(cè),且優(yōu)選地為了校正,一個(gè)或多個(gè)校驗(yàn)位可與每一個(gè)字 節(jié)或一組字節(jié)一起被傳遞。這樣的校驗(yàn)位由機(jī)器自動(dòng)生成且不能被程序直接控制。存儲(chǔ)容 量以字節(jié)的數(shù)量來(lái)表示。當(dāng)存儲(chǔ)器操作數(shù)字段的長(zhǎng)度由指令的操作碼暗示時(shí),字段被稱(chēng)為 具有固定長(zhǎng)度,其可以是一個(gè)、兩個(gè)、四個(gè)、八個(gè)或十六個(gè)字節(jié)??蔀槟承┲噶畎凳靖蟮淖?段。當(dāng)存儲(chǔ)器操作數(shù)字段的長(zhǎng)度沒(méi)有被暗示,而是被顯式地表示時(shí),該字段被稱(chēng)為具有可變 長(zhǎng)度??勺冮L(zhǎng)度的操作數(shù)可以一個(gè)字節(jié)的增量(或者對(duì)于一些指令,以?xún)蓚€(gè)字節(jié)倍數(shù)或其他 倍數(shù))在長(zhǎng)度上可變。當(dāng)信息被放在存儲(chǔ)器中時(shí),僅替換被包括在指定的字段中的那些字節(jié) 位置的內(nèi)容,即使到存儲(chǔ)器的物理路徑的寬度可能大于正被存儲(chǔ)的字段的長(zhǎng)度。
[0180]某些信息單元位于存儲(chǔ)器中的整數(shù)界限上。對(duì)于信息單元,當(dāng)其存儲(chǔ)器地址是以 字節(jié)表示的單元長(zhǎng)度的倍數(shù)時(shí),界限被稱(chēng)為是整數(shù)的。特殊的名稱(chēng)被給予整數(shù)界限上的2、
4、8和16字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個(gè)連續(xù)的字節(jié),且是指令的基本構(gòu)件。 字是四字節(jié)邊界上的一組四個(gè)連續(xù)的字節(jié)。雙字是八字節(jié)邊界上一組八個(gè)連續(xù)的字節(jié)。四 倍長(zhǎng)字(quadword)是16字節(jié)邊界上的一組16個(gè)連續(xù)的字節(jié)。當(dāng)存儲(chǔ)器地址指定半字、字、 雙字和四倍長(zhǎng)字時(shí),地址的二進(jìn)制表示分別包括一個(gè)、兩個(gè)、三個(gè)或四個(gè)最右邊的零位。指 令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲(chǔ)器操作數(shù)不具有界限對(duì)準(zhǔn)要求。
[0181]在為指令和數(shù)據(jù)操作數(shù)實(shí)現(xiàn)單獨(dú)的高速緩存的設(shè)備上,如果程序在高速緩存線中 存儲(chǔ)且指令被隨后從該高速緩存線獲取,可經(jīng)歷顯著的延遲,不管該存儲(chǔ)是否改變隨后被 獲取的指令。[0182]在一個(gè)實(shí)施例中,本發(fā)明可被軟件(有時(shí)候被稱(chēng)為許可的內(nèi)部代碼、固件、微代碼、 毫代碼、微微代碼(pico-code)等,其任何一個(gè)都將符合本發(fā)明)實(shí)施。參考圖11,體現(xiàn)本發(fā) 明的軟件程序代碼可典型地由主系統(tǒng)5000的處理器5001從長(zhǎng)期存儲(chǔ)介質(zhì)設(shè)備5011(諸如 CD-ROM驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)或硬盤(pán)驅(qū)動(dòng)器)訪問(wèn)。軟件程序代碼可體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一 起使用的各種已知介質(zhì)(諸如軟磁盤(pán)、硬盤(pán)驅(qū)動(dòng)或CD-ROM)中的任何一個(gè)上。代碼可在這樣 的介質(zhì)上被分發(fā),或可從一個(gè)計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)存儲(chǔ)器5002或存儲(chǔ)設(shè)備通過(guò)網(wǎng)絡(luò)5010 被分發(fā)給其他計(jì)算機(jī)系統(tǒng)的用戶,以由這樣的其他系統(tǒng)的用戶使用。
[0183]軟件程序代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序的功 能和交互。程序代碼通常可從存儲(chǔ)介質(zhì)設(shè)備5011調(diào)頁(yè)到相對(duì)更高速的計(jì)算機(jī)存儲(chǔ)器5002, 在此它對(duì)于處理器5001是可用的。用于在存儲(chǔ)器中、物理介質(zhì)上體現(xiàn)軟件程序代碼和/或 經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是熟知的,且不會(huì)在此被進(jìn)一步討論。當(dāng)程序代碼被 創(chuàng)建并存儲(chǔ)在有形介質(zhì)(包括但不限于電子存儲(chǔ)模塊(RAM)、閃存、光盤(pán)(⑶)、DVD、磁帶等) 上時(shí),其經(jīng)常被稱(chēng)為“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)典型地可由優(yōu)選地位于計(jì)算 機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。
[0184]圖12示出了可在其中實(shí)施本發(fā)明的代表性工作站或服務(wù)器硬件系統(tǒng)。圖12的系 統(tǒng)5020包括代表性基本計(jì)算機(jī)系統(tǒng)(base computer system)5021,諸如個(gè)人計(jì)算機(jī)、工作 站或服務(wù)器,包括可選的外圍設(shè)備。根據(jù)已知技術(shù),基本計(jì)算機(jī)系統(tǒng)5021包括一個(gè)或多個(gè) 處理器5026以及被用于連接并使能處理器5026和系統(tǒng)5021的其他組件之間的通信的總 線。總線將處理器5026連接到存儲(chǔ)器5025以及可包括例如硬盤(pán)驅(qū)動(dòng)器(例如,包括磁介質(zhì)、 ⑶、DVD和閃存中的任何一個(gè))或磁帶驅(qū)動(dòng)器的長(zhǎng)期存儲(chǔ)器5027。系統(tǒng)5021也可包括用戶 接口適配器,其經(jīng)由總線將微處理器5026連接到一個(gè)或多個(gè)接口設(shè)備,諸如鍵盤(pán)5024、鼠 標(biāo)5023、打印機(jī)/掃描儀5030和/或其他接口設(shè)備,其可以是任何用戶接口設(shè)備,諸如觸 摸敏感屏、數(shù)字化輸入墊(digitized entry pad)等??偩€也可經(jīng)由顯示適配器將諸如IXD 屏幕或監(jiān)視器的顯示設(shè)備5022連接到微處理器5026。
[0185]系統(tǒng)5021可通過(guò)能與網(wǎng)絡(luò)5029通信5028的網(wǎng)絡(luò)適配器與其他計(jì)算機(jī)或計(jì)算機(jī) 網(wǎng)絡(luò)通信。示例性網(wǎng)絡(luò)適配器是通信通道、令牌環(huán)網(wǎng)、以太網(wǎng)或調(diào)制解調(diào)器?;蛘?,系統(tǒng)5021 可使用諸如⑶ro (蜂窩數(shù)字分組數(shù)據(jù))卡的無(wú)線接口來(lái)通信。系統(tǒng)5021可與局域網(wǎng)(LAN) 或廣域網(wǎng)(WAN)中的這樣的其他計(jì)算機(jī)關(guān)聯(lián),或系統(tǒng)5021可以是與另一個(gè)計(jì)算機(jī)的客戶機(jī) /服務(wù)器安排中的客戶機(jī)等。所有這些配置以及合適的通信硬件和軟件在本領(lǐng)域中是已知 的。
[0186]圖13示出了其中可實(shí)施本發(fā)明的數(shù)據(jù)處理網(wǎng)絡(luò)5040。數(shù)據(jù)處理網(wǎng)絡(luò)5040可包括 多個(gè)單獨(dú)的網(wǎng)絡(luò),諸如無(wú)線網(wǎng)和有線網(wǎng),其每個(gè)可包括多個(gè)單獨(dú)的工作站5041、5042、5043、 5044。此外,本領(lǐng)域技術(shù)人員將理解,可包括一個(gè)或多個(gè)LAN,其中LAN可包括多個(gè)耦合到主 處理機(jī)的智能工作站。
[0187]仍然參考圖13,網(wǎng)絡(luò)也可包括大型計(jì)算機(jī)或服務(wù)器,諸如網(wǎng)關(guān)計(jì)算機(jī)(客戶機(jī)服務(wù) 器5046)或應(yīng)用服務(wù)器(遠(yuǎn)程服務(wù)器5048,其可訪問(wèn)數(shù)據(jù)儲(chǔ)存庫(kù),且也可直接從工作站5045 被訪問(wèn))。網(wǎng)關(guān)計(jì)算機(jī)5046用作到每個(gè)單獨(dú)網(wǎng)絡(luò)的進(jìn)入點(diǎn)。當(dāng)將一個(gè)聯(lián)網(wǎng)協(xié)議連接到另一 個(gè)時(shí),需要網(wǎng)關(guān)。網(wǎng)關(guān)5046可通過(guò)通信鏈路優(yōu)選地耦合到另一個(gè)網(wǎng)絡(luò)(例如因特網(wǎng)5047)。 也可使用通信鏈路將網(wǎng)關(guān)5046直接耦合到一個(gè)或多個(gè)工作站5041、5042、5043、5044??梢岳每蓮膰?guó)際商業(yè)機(jī)器公司獲得的IBM eServerTMSystem Z?'服務(wù)器來(lái)實(shí)現(xiàn)網(wǎng)關(guān)計(jì)算機(jī)。
[0188]同時(shí)參考圖12和13,可體現(xiàn)本發(fā)明的軟件編程代碼可被系統(tǒng)5020的處理器5026 從諸如CD-ROM驅(qū)動(dòng)器或硬盤(pán)驅(qū)動(dòng)器的長(zhǎng)期存儲(chǔ)介質(zhì)5027訪問(wèn)。軟件編程代碼可被體現(xiàn)在 與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟盤(pán)、硬盤(pán)驅(qū)動(dòng)器或CD-ROM)中的任一個(gè) 上。代碼可在這樣的介質(zhì)上被分發(fā),或從一個(gè)計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器或存儲(chǔ)設(shè)備通過(guò)網(wǎng)絡(luò)被 分發(fā)到其他計(jì)算機(jī)系統(tǒng)的用戶5050、5051,以供這樣的其他系統(tǒng)的用戶使用。
[0189]或者,編程代碼可體現(xiàn)在存儲(chǔ)器5025中,且由處理器5026使用處理器總線訪問(wèn)。 這樣的編程代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序5032的功 能和交互。程序代碼通常從存儲(chǔ)介質(zhì)5027調(diào)頁(yè)到高速存儲(chǔ)器5025,在此它可用于由處理 器5026進(jìn)行處理。用于在存儲(chǔ)器中、在物理介質(zhì)上體現(xiàn)軟件編程代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā) 軟件代碼的技術(shù)和方法是公知的,不會(huì)在此進(jìn)一步討論。程序代碼,當(dāng)其被創(chuàng)建且在有形介 質(zhì)(包括但不限于電子存儲(chǔ)模塊(RAM)、閃存、光盤(pán)(⑶)、DVD、磁帶等)上存儲(chǔ)時(shí),通常被稱(chēng)為 “計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)典型地可以被優(yōu)選地位于計(jì)算機(jī)系統(tǒng)中的處理電 路讀取以由處理電路執(zhí)行。
[0190]最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更小)是最 低級(jí)(LI或級(jí)別I)高速緩存,且主存儲(chǔ)(主存儲(chǔ)器)是最高級(jí)高速緩存(如果有三個(gè)級(jí)別的 話是L3)。最低級(jí)高速緩存經(jīng)常被分為保持將被執(zhí)行的機(jī)器指令的指令緩存(1-高速緩 存),和保持?jǐn)?shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。
[0191]參考圖14,為處理器5026示出了示例性處理器實(shí)施例。典型地,使用一個(gè)或多個(gè) 級(jí)別的高速緩存5053來(lái)緩沖存儲(chǔ)器塊,以便改善處理器性能。高速緩存5053是高速緩沖 器,其保持很可能被使用的存儲(chǔ)器數(shù)據(jù)的高速緩存線。典型的高速緩存線是64、128或256 字節(jié)的存儲(chǔ)器數(shù)據(jù)。通常使用單獨(dú)的高速緩存以用于緩存指令而不是緩存數(shù)據(jù)。高速緩存 一致性(存儲(chǔ)器和高速緩存中的線的副本的同步)通常由本領(lǐng)域中熟知的各種“窺探”算法 提供。處理器系統(tǒng)的主存儲(chǔ)器5025通常被稱(chēng)為高速緩存。在具有4個(gè)級(jí)別的高速緩存5053 的處理器系統(tǒng)中,主存儲(chǔ)器5025有時(shí)候被稱(chēng)為級(jí)別5 (L5)高速緩存,因?yàn)樗湫偷馗欤?且僅保持可被計(jì)算機(jī)系統(tǒng)使用的非易失性存儲(chǔ)器(DASD、磁帶等)的一部分。主存儲(chǔ)器5025 可“高速緩存”由操作系統(tǒng)向主存儲(chǔ)器5025調(diào)頁(yè)入或從其調(diào)頁(yè)出的數(shù)據(jù)頁(yè)。
[0192]程序計(jì)數(shù)器(指令計(jì)數(shù)器)5061保持跟蹤將被執(zhí)行的當(dāng)前指令的地址。 z/Archit:ect:ure?.處理器中的程序計(jì)數(shù)器是64位的,且可被截短為31或24位以支持先前 的尋址界限。程序計(jì)數(shù)器典型地體現(xiàn)在計(jì)算機(jī)的PSW (程序狀態(tài)字)中,這樣它可在上下文 轉(zhuǎn)換中持續(xù)。因此,具有程序計(jì)數(shù)器值的進(jìn)行中的程序可被例如操作系統(tǒng)中斷(從程序環(huán)境 到操作系統(tǒng)環(huán)境的上下文轉(zhuǎn)換)。當(dāng)程序不活動(dòng)時(shí),程序的PSW維持程序計(jì)數(shù)器值,且在操 作系統(tǒng)執(zhí)行時(shí),操作系統(tǒng)的(PSW中的)程序計(jì)數(shù)器被使用。典型地,程序計(jì)數(shù)器以等于當(dāng)前 指令的字節(jié)數(shù)的量增量。RISC (精簡(jiǎn)指令集計(jì)算)指令典型地是固定長(zhǎng)度,而CISC (復(fù)雜 指令集計(jì)算)指令典型地是可變長(zhǎng)度。IBMz/Architecture?的指令是具有長(zhǎng)度為2、4或 6字節(jié)的CISC指令。程序計(jì)數(shù)器5061被例如上下文轉(zhuǎn)換操作或分支指令的分支采取操作 修改。在上下文轉(zhuǎn)換操作中,當(dāng)前的程序計(jì)數(shù)器值與關(guān)于正被執(zhí)行的程序的其他狀態(tài)信息 (諸如條件碼)一起被保存在程序狀態(tài)字中,且新程序計(jì)數(shù)器值被載入并指向?qū)⒈粓?zhí)行的新程序模塊的指令。執(zhí)行分支采取操作,以通過(guò)將分支指令的結(jié)果加載到程序計(jì)數(shù)器5061中 而允許程序進(jìn)行決定或在程序內(nèi)循環(huán)。
[0193]典型地,使用指令提取單元5055代表處理器5026獲取指令。獲取單元可獲取“下 一序列指令”、分支采取指令的目標(biāo)指令或上下文轉(zhuǎn)換后的程序的第一指令?,F(xiàn)在的指令獲 取單元通常使用預(yù)取技術(shù)基于被預(yù)取的指令將被使用的可能性來(lái)推測(cè)性地預(yù)取指令。例 如,獲取單元可獲取16字節(jié)的指令,其包括下一順序指令以及進(jìn)一步的順序指令的額外字 節(jié)。
[0194]獲取的指令隨后被處理器5026執(zhí)行。在一實(shí)施例中,獲取的指令被傳遞給獲取 單元的分派單元5056。分派單元解碼指令并將關(guān)于解碼的指令的信息轉(zhuǎn)發(fā)給合適的單元 5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關(guān)于解碼的算術(shù)指令 的信息,并將根據(jù)指令的操作碼對(duì)操作數(shù)執(zhí)行算術(shù)操作。優(yōu)選地從存儲(chǔ)器5025、架構(gòu)寄存 器5059或從正被執(zhí)行的指令的立即字段(immediate field)向執(zhí)行單元5057提供操作數(shù)。 執(zhí)行的結(jié)果,當(dāng)被存儲(chǔ)時(shí),被存儲(chǔ)在存儲(chǔ)器5025、寄存器5059或其他機(jī)器硬件(諸如控制寄 存器、PSW寄存器等)中。
[0195]處理器5026典型地具有一個(gè)或多個(gè)用于執(zhí)行指令的功能的單元5057、5058、 5060。參考圖15A,執(zhí)行單元5057可通過(guò)接口邏輯5071與架構(gòu)通用寄存器5059、解碼/分 派單元5056、加載存儲(chǔ)單元5060和其他5065處理器單元通信。執(zhí)行單元5057可使用幾個(gè) 寄存器電路5067、5068、5069來(lái)保持算術(shù)邏輯單元(ALU) 5066將操作的信息。ALU執(zhí)行諸 如加減乘除的算術(shù)操作,以及諸如和、或以及異或(X0R)、旋轉(zhuǎn)和移位的邏輯運(yùn)算。優(yōu)選地, ALU支持依賴(lài)于設(shè)計(jì)的專(zhuān)門(mén)操作。其他電路可提供其他架構(gòu)工具5072,例如包括條件碼和 恢復(fù)支持邏輯。典型地,ALU操作的結(jié)果被保持在輸出寄存電路5070中,該輸出寄存器電 路可將結(jié)果轉(zhuǎn)發(fā)到多種其他處理功能。有許多處理器單元安排,本說(shuō)明書(shū)僅旨在提供對(duì)一 個(gè)實(shí)施例的代表性理解。
[0196]例如,ADD指令將在具有算術(shù)和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點(diǎn) 指令將在具有專(zhuān)用浮點(diǎn)能力的浮點(diǎn)執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過(guò)在操作數(shù)上執(zhí)行 操作碼定義的功能在由指令標(biāo)識(shí)的操作數(shù)上操作。例如,ADD指令可被執(zhí)行單元5057在由 指令的寄存器字段標(biāo)識(shí)的兩個(gè)寄存器5059中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。
[0197]執(zhí)行單元5057對(duì)兩個(gè)操作數(shù)執(zhí)行算術(shù)加法,并在第三操作數(shù)中存儲(chǔ)結(jié)果,其中第 三操作數(shù)可以是第三寄存器或兩個(gè)源寄存器中的一個(gè)。執(zhí)行單元優(yōu)選地利用算術(shù)邏輯單 元(ALU)5066,其能執(zhí)行多種邏輯功能,諸如移位、旋轉(zhuǎn)、和、或、異或,以及多種代數(shù)函數(shù),包 括加減乘除中的任何一個(gè)。有些ALU5066被設(shè)計(jì)為用于標(biāo)量運(yùn)算,有些用于浮點(diǎn)。根據(jù)架 構(gòu),數(shù)據(jù)可以是大端(big endien)(其中最低有效字節(jié)位于最高字節(jié)地址)或小端(little endien)(其中最低有效字節(jié)位于最低字節(jié)地址)。IBM z./Architecture?是大端。根據(jù)架構(gòu), 帶符號(hào)字段可以是符號(hào)和幅度、I的補(bǔ)碼或2的補(bǔ)碼。2的補(bǔ)碼數(shù)是有利的,其在于ALU不 需要設(shè)計(jì)減法能力,因?yàn)椴还苁?的補(bǔ)碼中的負(fù)值還是正值,都僅要求ALU中的加法。數(shù)字 通常以速記描述,其中12位的字段定義了 4096字節(jié)塊的地址,且通常被描述為例如4Kbyte (千字節(jié))塊。
[0198]參考圖15B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058, 該分支單元經(jīng)常使用諸如分支歷史表5082的分支預(yù)測(cè)算法,在其他條件運(yùn)算完成前預(yù)測(cè)分支結(jié)果。在條件運(yùn)算完成前,當(dāng)前分支指令的目標(biāo)將被獲取并推測(cè)性地執(zhí)行。當(dāng)條件運(yùn)算 完成時(shí),基于條件運(yùn)算的條件和推測(cè)的結(jié)果,推測(cè)性執(zhí)行的分支指令或被完成或被丟棄。典 型的分支指令可測(cè)試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標(biāo)地址, 分支地址可基于若干數(shù)被計(jì)算,所述數(shù)包括例如在寄存器字段或是指令的立即字段中找到 的數(shù)。分支單元5058可利用具有多個(gè)輸入寄存器電路5075、5076、5077和一個(gè)輸出寄存器 電路5080的ALU5074。分支單元5058可與例如通用寄存器5059、解碼分派單元5056或其 他電路5073通信。
[0199]一組指令的執(zhí)行可由于多個(gè)原因中斷,所述原因包括例如由操作系統(tǒng)發(fā)起的上下 文轉(zhuǎn)換、引起上下文轉(zhuǎn)換的程序異?;蝈e(cuò)誤、引起上下文轉(zhuǎn)換的I/O中斷信號(hào)或多個(gè)程序 (在多線程環(huán)境中)的多線程活動(dòng)。優(yōu)選地,上下文轉(zhuǎn)換動(dòng)作保存關(guān)于當(dāng)前執(zhí)行的程序的狀 態(tài)信息,且隨后加載關(guān)于正被調(diào)用的另一個(gè)程序的狀態(tài)信息。狀態(tài)信息可被存儲(chǔ)在例如硬 件寄存器或存儲(chǔ)器中。狀態(tài)信息優(yōu)選地包括指向?qū)⒈粓?zhí)行的下一個(gè)指令的程序計(jì)數(shù)器值、 條件碼、存儲(chǔ)器轉(zhuǎn)換信息和架構(gòu)寄存器內(nèi)容。上下文轉(zhuǎn)換活動(dòng)可被硬件電路、應(yīng)用程序、操 作系統(tǒng)程序或固件代碼(微代碼、微微代碼或許可內(nèi)部碼(LIC))單獨(dú)地或其組合實(shí)現(xiàn)。
[0200]處理器根據(jù)指令定義的方法而訪問(wèn)操作數(shù)。指令可使用指令的一部分的值提供立 即操作數(shù),可提供一個(gè)或多個(gè)寄存器字段,其顯式地指向通用寄存器或?qū)S眉拇嫫?例如浮 點(diǎn)寄存器)。指令可利用由操作碼字段確定的暗示的寄存器作為操作數(shù)。指令可利用用于 操作數(shù)的存儲(chǔ)器位置。可由寄存器、立即字段或寄存器和立即字段的組合提供操作數(shù)的存 儲(chǔ)器位置,如由z/Architecture?長(zhǎng)位移工具(facility)所例示的,其中該指令定義了基 寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲(chǔ)器中的操作數(shù) 的地址。除非另外指明,此處的位置典型地意味著主存儲(chǔ)器(主存儲(chǔ)設(shè)備)中的位置。
[0201]參考圖15C,處理器使用加載/存儲(chǔ)單元5060訪問(wèn)存儲(chǔ)器。加載/存儲(chǔ)單元5060 可以通過(guò)獲取存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存 儲(chǔ)器5053位置中,來(lái)執(zhí)行加載操作,或可以通過(guò)獲取存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址并 將從寄存器5059或另一個(gè)存儲(chǔ)器5053位置獲得的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器5053中的目標(biāo)操作 數(shù)位置,來(lái)執(zhí)行存儲(chǔ)操作。加載/存儲(chǔ)單元5060可以是推測(cè)性的,且可以以相對(duì)于指令順 序來(lái)說(shuō)無(wú)序的順序訪問(wèn)存儲(chǔ)器,但是加載/存儲(chǔ)單元5060將向程序維持指令按順序執(zhí)行的 外觀。加載/存儲(chǔ)單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲(chǔ) 器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU5085和控制邏輯5090以 計(jì)算存儲(chǔ)器地址并提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存 儲(chǔ)單元提供功能以使不按順序執(zhí)行的操作對(duì)程序看起來(lái)如已按順序執(zhí)行一樣,如本領(lǐng)域所 熟知的。
[0202]優(yōu)選地,應(yīng)用程序“看到的”地址通常被稱(chēng)為虛擬地址。虛擬地址有時(shí)候被稱(chēng) 為“邏輯地址”和“有效地址”。這些虛擬地址之所以虛擬,在于它們由多種動(dòng)態(tài)地址轉(zhuǎn)換 (DAT)技術(shù)中的一種重定向到物理存儲(chǔ)器位置,所述動(dòng)態(tài)地址轉(zhuǎn)換技術(shù)包括但不限于簡(jiǎn)單 地給用偏移值給虛擬地址加前綴、經(jīng)由一個(gè)或多個(gè)轉(zhuǎn)換表轉(zhuǎn)換虛擬地址,所述轉(zhuǎn)換表優(yōu)選 地包括至少一個(gè)段表和一個(gè)頁(yè)表(單獨(dú)地或組合地),優(yōu)選地,段表具有指向頁(yè)表的項(xiàng)。在 z/Architecture?中,提供轉(zhuǎn)換分級(jí)結(jié)構(gòu),包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表 和可選的頁(yè)表。地址轉(zhuǎn)換的性能通常通過(guò)利用轉(zhuǎn)換后備緩沖器(TLB)被改善,該轉(zhuǎn)換后備緩沖器包括將虛擬地址映射到相關(guān)的物理存儲(chǔ)位置的項(xiàng)。當(dāng)DAT使用轉(zhuǎn)換表轉(zhuǎn)換虛擬地址 時(shí),創(chuàng)建項(xiàng)。于是,虛擬地址的隨后使用可利用快的TLB的項(xiàng),而不是慢的順序轉(zhuǎn)換表訪問(wèn)。 TLB內(nèi)容可由包括LRU (最少最近使用)的多個(gè)替換算法來(lái)管理。
[0203]在處理器是多處理器系統(tǒng)的處理器的情況下,每個(gè)處理器具有保持共享資源的責(zé) 任,所述共享資源諸如I/O、高速緩存、TLB和存儲(chǔ)器,它們互鎖以實(shí)現(xiàn)一致性。典型地,“窺 探”技術(shù)將被用于維持高速緩存一致性。在窺探環(huán)境中,每個(gè)高速緩存線可被標(biāo)記為正處于 共享狀態(tài)、獨(dú)占狀態(tài)、改變狀態(tài)、無(wú)效狀態(tài)等中的一個(gè),以便有助于共享。
[0204]I/O單元5054 (圖14)向處理器提供用于附加到例如包括磁帶、盤(pán)、打印機(jī)、顯示 器和網(wǎng)絡(luò)的外圍設(shè)備的裝置。I/O單元通常由軟件驅(qū)動(dòng)器向計(jì)算機(jī)程序呈現(xiàn)。在諸如來(lái)自 IBM?的System Z?的大型計(jì)算機(jī)中,通道適配器和開(kāi)放系統(tǒng)適配器是提供操作系統(tǒng)和外 圍設(shè)備之間的通信的大型計(jì)算機(jī)的I/O單元。
[0205]而且,其他類(lèi)型的計(jì)算環(huán)境可受益于本發(fā)明的一個(gè)或多個(gè)方面。作為例子,環(huán)境可 包括仿真器(例如,軟件或其他仿真機(jī)制),其中特定架構(gòu)(包括例如指令執(zhí)行、諸如地址轉(zhuǎn) 換的架構(gòu)功能、以及架構(gòu)寄存器)或其子集被仿真(例如,在具有處理器和存儲(chǔ)器的本機(jī)計(jì) 算機(jī)系統(tǒng)中)。在這樣的環(huán)境中,仿真器的一個(gè)或多個(gè)仿真功能可實(shí)施本發(fā)明的一個(gè)或多個(gè) 方面,即使執(zhí)行仿真器的計(jì)算機(jī)可具有與正被仿真的能力不同的架構(gòu)。作為一個(gè)例子,在仿 真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實(shí)施單個(gè)指令或操 作。
[0206]在仿真環(huán)境中,主計(jì)算機(jī)包括例如存儲(chǔ)器以存儲(chǔ)指令和數(shù)據(jù);指令獲取單元以從 存儲(chǔ)器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的 指令并確定已被獲取的指令的類(lèi)型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù) 從存儲(chǔ)器加載到寄存器;從寄存器將數(shù)據(jù)存儲(chǔ)回存儲(chǔ)器;或執(zhí)行如由解碼單元確定的某些 類(lèi)型的算術(shù)或邏輯運(yùn)算。在一個(gè)例子中,每個(gè)單元在軟件中實(shí)現(xiàn)。例如,被所述單元執(zhí)行的 操作被實(shí)現(xiàn)為仿真器軟件中的一個(gè)或多個(gè)子例程。
[0207]更具體地,在大型計(jì)算機(jī)中,程序員(通常是如今的“C”程序員)一般通過(guò)編譯器應(yīng) 用使用架構(gòu)機(jī)器指令。存儲(chǔ)在存儲(chǔ)介質(zhì)中的這些指令可以在z/Architecture?IBlVr?服務(wù) 器中本機(jī)地執(zhí)行,或在執(zhí)行其他架構(gòu)的機(jī)器中執(zhí)行。它們可在現(xiàn)有的和未來(lái)的IBM?大型 計(jì)算機(jī)服務(wù)器以及IBM?的其他機(jī)器(例如,Power Systems服務(wù)器和System x?服務(wù)器) 中被仿真。它們可在使用山IBM?、Intel?、AMD?等制造的硬件的各種機(jī)器上運(yùn)行Linux 的機(jī)器中被執(zhí)行。除了在z/Architecture? F的該硬件上執(zhí)行,Linux也可被用于這樣的機(jī) 器,其使用由Hercules、UMX或FSI (Fundamental Software, Inc)(其中一般地執(zhí)行是處于 仿真模式中)提供的仿真。在仿真模式中,仿真軟件由本機(jī)處理器執(zhí)行以仿真被仿真處理器 的架構(gòu)。
[0208]本機(jī)處理器典型地執(zhí)行仿真軟件,其包括固件或本機(jī)操作系統(tǒng),以執(zhí)行被仿真處 理器的仿真程序。仿真軟件負(fù)責(zé)獲取并執(zhí)行被仿真處理器架構(gòu)的指令。仿真軟件維護(hù)仿 真的程序計(jì)數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個(gè)或多個(gè)仿真的機(jī)器指令, 并將所述一個(gè)或多個(gè)仿真的機(jī)器指令轉(zhuǎn)換為對(duì)應(yīng)的本機(jī)機(jī)器指令組,以由本機(jī)處理器執(zhí) 行。這些轉(zhuǎn)換的指令可被高速緩存,這樣可完成更快的轉(zhuǎn)換。仿真軟件將維持被仿真的處理器架構(gòu)的架構(gòu)規(guī)則以保證為被仿真處理器編寫(xiě)的操作系統(tǒng)和應(yīng)用正確操作。而且,仿真 軟件將提供由被仿真的處理器架構(gòu)確定的資源,包括但不限于控制寄存器、通用寄存器、浮 點(diǎn)寄存器、例如包括段表和頁(yè)表的動(dòng)態(tài)地址轉(zhuǎn)換功能、中斷機(jī)制、上下文轉(zhuǎn)換機(jī)制、日中時(shí) 間(TOD)時(shí)鐘和到I/O子系統(tǒng)的架構(gòu)接口,這樣被設(shè)計(jì)為在被仿真處理器上運(yùn)行的操作系 統(tǒng)或應(yīng)用程序可在具有仿真軟件的本機(jī)處理器上運(yùn)行。
[0209]解碼正被仿真的特定指令,且調(diào)用子例程以執(zhí)行該單個(gè)指令的功能。仿真被仿真 處理器的功能的仿真軟件功能例如在“C”子例程或驅(qū)動(dòng)器中實(shí)現(xiàn),或由提供用于特定硬件 的驅(qū)動(dòng)器的其他方法實(shí)現(xiàn),如本領(lǐng)域技術(shù)人員在理解優(yōu)選實(shí)施例的描述后將理解的。包括 但不限于 Beausoleil 等人的標(biāo)題為 “Multiprocessor for Hardware Emulation” 的美國(guó) 專(zhuān)利證書(shū)號(hào) 5,551,013 ;以及 Scalzi 等人的標(biāo)題為 “Preprocessing of Stored Target Routines for Emulating Incompatible Instructions on a Target Processor,,的美國(guó) 專(zhuān)利證書(shū)號(hào) 6, 009, 261 ;以及 Davidian 等人的標(biāo)題為 “Decoding Guest Instruction to Directly Access Emulation Routines that Emulate the Guest Instructions,,的美國(guó) 專(zhuān)利證書(shū)號(hào),5,574,873 ;以及Gorishek等人的標(biāo)題為“Symmetrical Multiprocessing Bus and Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in a System”的美國(guó)專(zhuān)利證書(shū)號(hào)6,308, 255 ;以及Lethin等人的標(biāo)題為“Dynamic Optimizing Object Code Translator for Architecture Emulation and Dynamic Optimizing Object Code Translation Method”的美國(guó)專(zhuān)利證書(shū)號(hào)6,463,582,;以及Eric Traut的標(biāo)題為 “Method for Emulating Guest Instructions on a Host Computer Through Dynamic Recompilation of Host Instructions”的美國(guó)專(zhuān)利證書(shū)號(hào)5,790,825 ;以及許多其他專(zhuān)利 的各種軟件和硬件仿真專(zhuān)利示出各種已知的方式來(lái)實(shí)現(xiàn)針對(duì)可為本領(lǐng)域技術(shù)人員獲得的 目標(biāo)機(jī)器對(duì)為不同機(jī)器進(jìn)行架構(gòu)設(shè)計(jì)的指令格式的仿真。
[0210]在圖16中,提供了仿真主計(jì)算機(jī)系統(tǒng)5092的例子,其仿真主架構(gòu)的主計(jì)算機(jī)系統(tǒng) 5000’。在仿真主計(jì)算機(jī)系統(tǒng)5092中,主處理器(CPU) 5091是仿真主處理器(或虛擬主處 理器),并包括具有與主計(jì)算機(jī)5000’的處理器5091不同的本機(jī)指令集架構(gòu)的仿真處理器 5093。仿真主計(jì)算機(jī)系統(tǒng)5092具有可被仿真處理器5093訪問(wèn)的存儲(chǔ)器5094。在示例性實(shí) 施例中,存儲(chǔ)器5094被分區(qū)為主計(jì)算機(jī)存儲(chǔ)器5096部分和仿真例程5097部分。根據(jù)主計(jì) 算機(jī)架構(gòu),主計(jì)算機(jī)存儲(chǔ)器5096對(duì)于仿真主計(jì)算機(jī)5092的程序來(lái)說(shuō)是可用的。仿真處理 器5093執(zhí)行與被仿真處理器5091不同架構(gòu)的架構(gòu)指令集的本機(jī)指令(即來(lái)自仿真程序處 理器5097的本機(jī)指令),且可通過(guò)使用從順序和訪問(wèn)/解碼例程獲得的一個(gè)或多個(gè)指令從 主計(jì)算機(jī)存儲(chǔ)器5096中的程序訪問(wèn)用于執(zhí)行的主機(jī)指令,所述順序和訪問(wèn)/解碼例程可解 碼訪問(wèn)的主機(jī)指令,以確定用于仿真被訪問(wèn)的主機(jī)指令的功能的本機(jī)指令執(zhí)行例程。被定 義用于主計(jì)算機(jī)系統(tǒng)5000’架構(gòu)的其他工具可被架構(gòu)工具例程仿真,所述架構(gòu)工具例程包 括諸如通用寄存器、控制寄存器、動(dòng)態(tài)地址轉(zhuǎn)換和1/0子系統(tǒng)支持和處理器高速緩存等工 具。仿真例程也可利用在仿真處理器5093中可獲得的功能(諸如通用寄存器和虛擬地址的 動(dòng)態(tài)轉(zhuǎn)換)以改善仿真例程的性能。也可提供專(zhuān)用硬件和卸載引擎以輔助處理器5093來(lái)仿 真主計(jì)算機(jī)5000’的功能。
[0211]在此使用的術(shù)語(yǔ)僅是為了描述特定實(shí)施例,且不旨在限制本發(fā)明。如在此使用的, 單數(shù)形式“一”、“一個(gè)”和“該”也旨在包括復(fù)數(shù)形式,除非上下文另外清楚地指明。還將理解,當(dāng)在說(shuō)明書(shū)中使用時(shí),術(shù)語(yǔ)“包括”和/或“包含”指明存在所述的特征、整體、步驟、操 作、元件和/或組件,但不排除存在或附加一個(gè)或多個(gè)其他特征、整體、步驟、操作、元件和/ 或組件。
【權(quán)利要求】
1.一種用于在計(jì)算環(huán)境中處理開(kāi)始命令的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算環(huán)境包括耦合到計(jì)算環(huán)境的一個(gè)或多個(gè)處理器映像的耦合設(shè)施,所述計(jì)算機(jī)程序產(chǎn)品包括:計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其可被處理電路讀取并存儲(chǔ)指令以供處理電路執(zhí)行以便執(zhí)行一種方法,所述方法包括:由耦合設(shè)施從與之耦合的處理器映像接收開(kāi)始操作員消息命令,該開(kāi)始操作員消息命令包括消息命令塊,其包括消息報(bào)頭、開(kāi)始操作員消息命令的指示、包括將由耦合設(shè)施處理的操作員消息命令的操作員消息請(qǐng)求、操作員消息請(qǐng)求長(zhǎng)度和操作員消息令牌;響應(yīng)于接收到開(kāi)始操作員消息命令,處理開(kāi)始操作員消息命令,其中,所述處理包括: 在一個(gè)或多個(gè)緩沖器的所選緩沖器內(nèi)存儲(chǔ)操作員消息令牌、操作員消息請(qǐng)求和操作員消息請(qǐng)求長(zhǎng)度,其中,所述操作員消息令牌唯一地識(shí)別操作員消息命令并使所選緩沖器與操作員消息命令相關(guān)聯(lián);在所選緩沖器內(nèi)設(shè)置到當(dāng)前時(shí)間的計(jì)數(shù)器;設(shè)置所選緩沖器的狀態(tài);以及為所述開(kāi)始操作員消息命令提供響應(yīng)代碼。
2.如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述響應(yīng)代碼指示操作員消息已經(jīng)開(kāi)始。
3.如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述所選緩沖器的狀態(tài)被設(shè)置成活動(dòng)的且在進(jìn)行中。
4.如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述方法還包括:確定空閑緩沖器是否存 在,其中,所述空閑緩沖器由緩沖器的令牌字段為零指示;以及響應(yīng)于該確定指示空閑緩沖器存在,選擇空閑緩沖器作為所選緩沖器;以及響應(yīng)于該確定指示不存在空閑緩沖器,檢查活動(dòng)緩沖器是否已超時(shí);以及響應(yīng)于該檢查指示存在已經(jīng)超時(shí)的活動(dòng)緩沖器,將已經(jīng)超時(shí)的活動(dòng)緩沖器選作所選緩沖器。
5.如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,響應(yīng)于接收到開(kāi)始操作員消息命令,執(zhí)行由操作員消息請(qǐng)求指定的動(dòng)作并將操作員消息響應(yīng)存儲(chǔ)在緩沖器中。
6.如權(quán)利要求5所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述方法還包括由耦合設(shè)施獲得獲得操作員消息命令以讀取緩沖器以獲得操作員消息響應(yīng)。
7.如權(quán)利要求6所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述讀取操作員消息命令包括消息命令塊,其包括消息報(bào)頭、操作員消息令牌和指定讀取操作員消息命令的命令。
8.如權(quán)利要求7所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述方法還包括處理讀取操作員消息命令,其中,所述處理包括:確定耦合設(shè)施內(nèi)的緩沖器具有與操作員消息令牌匹配的令牌;響應(yīng)于確定緩沖器具有與操作員消息令牌匹配的令牌,檢查在具有與操作員消息令牌匹配的令牌的緩沖器內(nèi)操作員消息響應(yīng)是否待決;以及響應(yīng)于指示操作員消息響應(yīng)待決的確定,將操作員消息響應(yīng)從具有與操作員消息令牌匹配的令牌的緩沖器拷貝到數(shù)據(jù)塊,將響應(yīng)長(zhǎng)度拷貝到讀取操作員消息命令的消息響應(yīng)塊,并向處理器映像提供消息響應(yīng)塊和至少數(shù)據(jù)塊的指示。
9.如權(quán)利要求1所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述方法還包括:由耦合設(shè)施接收刪除操作員消息命令;以及處理刪除操作員消息命令以將所選緩沖器置于空閑狀態(tài)。
10.如權(quán)利要求9所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述刪除操作員消息命令包括消息命令塊,其包括消息報(bào)頭、指定刪除操作員消息命令的命令以及操作員消息令牌,并且其中, 該處理包括:確定耦合設(shè)施內(nèi)的緩沖器具有與操作員消息令牌匹配的令牌;響應(yīng)于確定緩沖器具有與操作員消息令牌匹配的令牌,檢查在具有與操作員消息令牌匹配的令牌的緩沖器內(nèi)操作員消息響應(yīng)是否待決;以及響應(yīng)于該確定指示操作員消息響應(yīng)是待決的,將具有與操作員消息令牌匹配的令牌的所選緩沖器的一個(gè)或多個(gè)字段重置并將所選緩沖器 的狀態(tài)設(shè)置成空閑;以及提供指示操作員消息被刪除的消息響應(yīng)塊。
11.如權(quán)利要求10所述的計(jì)算機(jī)程序產(chǎn)品,其中,所述重置包括將操作員消息令牌設(shè)置成零。
12.一種用于在計(jì)算環(huán)境中處理開(kāi)始命令的計(jì)算機(jī)系統(tǒng),所述計(jì)算環(huán)境包括耦合到計(jì)算環(huán)境的一個(gè)或多個(gè)處理器映像的耦合設(shè)施,所述計(jì)算機(jī)系統(tǒng)包括:存儲(chǔ)器;以及與存儲(chǔ)器通信的處理器,其中,所述計(jì)算機(jī)系統(tǒng)被配置成執(zhí)行一種方法,所述方法包括:由耦合設(shè)施從與之耦合的處理器映像接收開(kāi)始操作員消息命令,該開(kāi)始操作員消息命令包括消息命令塊,其包括消息報(bào)頭、開(kāi)始操作員消息命令的指示、包括將由耦合設(shè)施處理的操作員消息命令的操作員消息請(qǐng)求、操作員消息請(qǐng)求長(zhǎng)度和操作員消息令牌;響應(yīng)于接收到開(kāi)始操作員消息命令,處理開(kāi)始操作員消息命令,其中,所述處理包括: 在一個(gè)或多個(gè)緩沖器的所選緩沖器內(nèi)存儲(chǔ)操作員消息令牌、操作員消息請(qǐng)求和操作員消息請(qǐng)求長(zhǎng)度,其中,所述操作員消息令牌唯一地識(shí)別操作員消息命令并使所選緩沖器與操作員消息命令相關(guān)聯(lián);在所選緩沖器內(nèi)設(shè)置到當(dāng)前時(shí)間的計(jì)數(shù)器;設(shè)置所選緩沖器的狀態(tài);以及為所述開(kāi)始操作員消息命令提供響應(yīng)代碼。
13.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其中,所述計(jì)算機(jī)系統(tǒng)還包括:確定空閑緩沖器是否存在,其中,所述空閑緩沖器由緩沖器的令牌字段為零指示;以及響應(yīng)于該確定指示空閑緩沖器存在,選擇空閑緩沖器作為所選緩沖器;以及響應(yīng)于該確定指示不存在空閑緩沖器,檢查活動(dòng)緩沖器是否已超時(shí);以及響應(yīng)于該檢查指示存在已經(jīng)超時(shí)的活動(dòng)緩沖器,將已經(jīng)超時(shí)的活動(dòng)緩沖器選作所選緩沖器。
14.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其中,響應(yīng)于接收到開(kāi)始操作員消息命令,執(zhí)行由操作員消息請(qǐng)求指定的動(dòng)作并將操作員消息響應(yīng)存儲(chǔ)在緩沖器中。
15.如權(quán)利要求14所述的計(jì)算機(jī)系統(tǒng),其中,該方法還包括由耦合設(shè)施獲得讀取操作員命令以讀取緩沖器以獲得操作員消息響應(yīng),并且其中,該讀取操作員消息命令包括消息命令塊,其包括消息報(bào)頭、操作員消息令牌和指定讀取操作員消息命令的命令。
16.如權(quán)利要求15所述的計(jì)算機(jī)系統(tǒng),其中,所述方法還包括處理讀取操作員消息命令,其中,所述處理包括:確定耦合設(shè)施內(nèi)的緩沖器具有與操作員消息令牌匹配的令牌;響應(yīng)于確定緩沖器具有與操作員消息令牌匹配的令牌,檢查在具有與操作員消息令牌匹配的令牌的緩沖器內(nèi)操作員消息響應(yīng)是否待決;以及響應(yīng)于指示操作員消息響應(yīng)待決的確定,將操作員消息響應(yīng)從具有與操作員消息令牌匹配的令牌的緩沖器拷貝到數(shù)據(jù)塊,將響應(yīng)長(zhǎng)度拷貝到讀取操作員消息命令的消息響應(yīng)塊,并向處理器映像提供消息響應(yīng)塊和至少數(shù)據(jù)塊的指示。
17.如權(quán)利要求12所述的計(jì)算機(jī)系統(tǒng),其中,所述計(jì)算機(jī)系統(tǒng)還包括:由耦合設(shè)施接收刪除操作員消息命令;以及處理刪除操作員消息命令以將所選緩沖器置于空閑狀態(tài),其中,所述刪除操作員消息命令包括消息命令塊,其包括消息報(bào)頭、指定刪除操作員消息命令的命令以及操作員消息令牌,并且其中,該處理包括:確定耦合設(shè)施內(nèi)的緩沖器具有與操作員消息令牌匹配的令牌;響應(yīng)于確定緩沖器具有與操作員消息令牌匹配的令牌,檢查在具有與操作員消息令牌匹配的令牌的緩沖器內(nèi)操作員消息響應(yīng)是否待決;以及響應(yīng)于該確定指示操作員消息響應(yīng)是待決的,將具有與操作員消息令牌匹配的令牌的所選緩沖器的一個(gè)或多個(gè)字段重置并將所選緩沖器的狀態(tài)設(shè)置成空閑;以及提供指示操作員消息被刪除的消息響應(yīng)塊。
18.—種在計(jì)算環(huán)境中處理開(kāi)始命令的方法,該計(jì)算環(huán)境包括被耦合到計(jì)算環(huán)境的一個(gè)或多個(gè)處理器映像的耦合設(shè)施,該方法包括:由耦合設(shè)施從與之耦合的處理器映像接收開(kāi)始操作員消息命令,該開(kāi)始操作員消息命令包括消息命令塊,其包括消息報(bào)頭、開(kāi)始操作員消息命令的指示、包括`將由耦合設(shè)施處理的操作員消息命令的操作員消息請(qǐng)求、操作員消息請(qǐng)求長(zhǎng)度和操作員消息令牌;響應(yīng)于接收到開(kāi)始操作員消息命令,處理開(kāi)始操作員消息命令,其中,所述處理包括: 在一個(gè)或多個(gè)緩沖器的所選緩沖器內(nèi)存儲(chǔ)操作員消息令牌、操作員消息請(qǐng)求和操作員消息請(qǐng)求長(zhǎng)度,其中,所述操作員消息令牌唯一地識(shí)別操作員消息命令并使所選緩沖器與操作員消息命令相關(guān)聯(lián);在所選緩沖器內(nèi)設(shè)置到當(dāng)前時(shí)間的計(jì)數(shù)器;設(shè)置所選緩沖器的狀態(tài);以及為所述開(kāi)始操作員消息命令提供響應(yīng)代碼。
19.如權(quán)利要求18所述的方法,其中,響應(yīng)于接收到開(kāi)始操作員消息命令,執(zhí)行由操作員消息請(qǐng)求指定的動(dòng)作并將操作員消息響應(yīng)存儲(chǔ)在緩沖器中。
20.如權(quán)利要求18所述的方法,其中,所述方法還包括由耦合設(shè)施獲得讀取操作員消息命令以讀取緩沖器以獲得操作員消息響應(yīng),其中,所述讀取操作員消息命令包括消息命令塊,其包括消息報(bào)頭、操作員消息令牌和指定讀取操作員消息命令的命令。
【文檔編號(hào)】G06F9/445GK103562864SQ201280026040
【公開(kāi)日】2014年2月5日 申請(qǐng)日期:2012年6月6日 優(yōu)先權(quán)日:2011年6月10日
【發(fā)明者】T.肖, S.N.戈斯, D.埃爾科 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司