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