釋放存儲級內存的塊的製作方法
2023-04-30 01:38:31
釋放存儲級內存的塊的製作方法
【專利摘要】提供了用於存儲級內存的抽象,其向程序隱藏了存儲級內存的實現細節,且提供了用於執行諸如控制主存儲器和存儲級內存之間的數據移動或管理存儲級內存等特定動作的標準通道編程接口。
【專利說明】釋放存儲級內存的塊
【技術領域】
[0001]本發明的一個或多個方面一般涉及計算環境的輔助存儲器,特別涉及輔助存儲器的管理方面。
【背景技術】
[0002]計算環境可包括主存儲器(也稱為主內存),以及輔助存儲器。主存儲器是可被處理器訪問的存儲器,其可例如由絕對地址隨機尋址。與諸如直接存取存儲設備(DASD)或存儲級內存的輔助存儲器相比,主存儲器被認為是快速存取存儲器,而且,主存儲器的尋址被認為是比DASD或存儲級內存的尋址更簡單。
[0003]存儲級內存,其是經典主存儲器外的外部存儲空間,提供了比直接存取存儲設備更快的存取。與DASD不同,存儲級內存典型地沒有被實施為機械臂旋轉盤,而是非機械地固態部件。典型地,存儲級內存被實施為通過若干輸入/輸出(I/O)適配器連接到計算系統的固態設備組,所述輸入/輸出適配器被用來將I/O設備的技術映射到中央處理單元的存儲總線。
【發明內容】
[0004]通過提供用於在包括主存儲器和存儲級內存的計算環境中執行啟動子通道指令的電腦程式產品,克服了現有技術的缺點並且提供了優點。該電腦程式產品包括計算機可讀的存儲介質,其可由處理電路讀取,並存儲用於由該處理電路執行以執行方法的指令。該方法包括,例如,響應於確定由啟動子通道指令指示的子通道是異步數據移動器(ADM)子通道,執行:從主存儲器中獲得操作請求塊,操作請求塊包括操作塊的地址;基於操作塊的地址,從主存儲器中獲得操作塊,所述操作塊包括:請求塊、響應塊、和一個或多個移動規格塊(MSB),其中請求塊包括具有指示一個或多個MSB的數目的值的MSB計數欄位,所述MSB被包括在操作塊中並且被操作塊引用,其中響應塊被配置為包括:操作代碼欄位、塊計數欄位、用於尋址主存儲器的主存儲器地址欄位、用於尋址存儲級內存的存儲級內存地址欄位、塊大小欄位和標誌欄位;為包括具有第一值的標誌欄位的一個或多個MSB中的每個MSB執行方法,該方法包括:獲得所述一個或多個移動規格塊中的一個移動規格塊;基於所獲得的移動規格塊中的操作代碼,確定所獲得的移動規格塊被配置為釋放存儲級內存的塊;基於所獲得的移動規格塊的塊大小欄位和塊計數欄位,確定將被釋放的存儲級內存的塊的大小和將被釋放的存儲級內存的塊的數目;和基於所獲得的移動規格塊,釋放與所獲得的MSB的存儲級內存地址欄位的存儲級內存地址相關聯的存儲級內存的塊。
[0005]涉及本發明的一個或多個方面的方法和系統也在此描述並要求保護。而且,與本發明的一個或多個方面有關的服務也在此描述並可要求保護。
[0006]額外的特點和優勢通過本發明的技術被實現。本發明的其他實施例和方面在此被詳細描述並被認為是所要求保護的發明的一部分。【專利附圖】
【附圖說明】
[0007]在本說明書的結尾處,本發明的一個或多個方面作為示例被特別指出並且明確要求保護。從以下結合附圖的詳細描述中本發明的上述和其他目的、特徵和優點將變得明顯,在附圖中:
[0008]圖1A示出了包含並使用本發明的一個或多個方面的計算環境的一個實施例;
[0009]圖1B示出了包含並使用本發明的一個或多個方面的計算環境的另一個實施例;
[0010]圖2A示出了根據本發明的一個方面使用的擴展異步數據移動器操作請求塊的一個實施例;
[0011]圖2B示出了根據本發明的一個方面使用的擴展異步數據移動器操作塊的一個實施例;
[0012]圖2C示出了根據本發明的一個方面使用的擴展異步數據移動器請求塊的一個實施例;
[0013]圖2D示出了根據本發明的一個方面使用的擴展異步數據移動器響應塊的一個實施例;
[0014]圖2E示出了根據本發明的一個方面使用的擴展異步數據移動器移動規格塊的一個實施例;
[0015]圖2F示出了根據本發明的一個方面使用的擴展異步數據移動器間接數據地址字的一個實施例;
[0016]圖3A示出了根據本發明的一個方面使用的開始子通道指令的一個實施例;
[0017]圖3B示出了根據本發明的一個方面的與開始子通道指令有關的邏輯的一個實施例;
[0018]圖3C示出了根據本發明的一個方面使用的清除子通道指令的一個實施例;
[0019]圖3D示出了根據本發明的一個方面使用的測試子通道指令的一個實施例;
[0020]圖3E示出了根據本發明的一個方面使用的修改子通道指令的一個實施例;
[0021]圖3F示出了根據本發明的一個方面使用的存儲子通道指令的一個實施例;
[0022]圖4A示出了根據本發明的一個方面使用的擴展異步數據移動器子通道信息塊的一個實施例;
[0023]圖4B示出了根據本發明的一個方面使用的擴展異步數據移動器路徑管理控制字的一個實施例;
[0024]圖4C示出了根據本發明的一個方面使用的子通道狀態字的一個實施例;
[0025]圖4D示出了根據本發明的一個方面使用的擴展異步數據移動器擴展狀態字的一個實施例;
[0026]圖5A示出了根據本發明的一個方面使用的存儲存儲級內存信息請求塊的一個實施例;
[0027]圖5B不出了根據本發明的一個方面使用的存儲存儲級內存信息響應塊的一個實施例;
[0028]圖5C示出了根據本發明的一個方面使用的存儲級內存地址列表項的一個實施例;
[0029]圖示出了根據本發明的一個方面的與存儲存儲級內存信息命令有關的邏輯的一個實施例;
[0030]圖6A示出了根據本發明的一個方面表示存儲級內存的各個狀態的狀態圖的一個例子;
[0031]圖6B示出了根據本發明的一個方面示出操作狀態和數據狀態的狀態圖的一個實施例;
[0032]圖7A示出了根據本發明的一個方面使用的配置存儲級內存請求塊的一個實施例;
[0033]圖7B示出了根據本發明的一個方面使用的配置存儲級內存響應塊的一個實施例;
[0034]圖7C-7D示出了根據本發明的一個方面使用的與配置存儲級內存命令有關的邏輯的一個實施例;
[0035]圖8A示出了根據本發明的一個方面使用的通知響應塊的一個例子;
[0036]圖SB示出了根據本發明的一個方面使用的存儲事件信息請求塊的一個實施例;
[0037]圖SC示出了根據本發明的一個方面使用的存儲事件信息響應塊的一個實施例;
[0038]圖9A示出了根據本發明的一個方面使用的解除配置存儲級內存請求塊的一個實施例;
[0039]圖9B示出了根據本發明的一個方面使用的存儲級內存增量請求列表項的一個實施例;
[0040]圖9C示出了根據本發明的一個方面使用的解除配置存儲級內存響應塊的一個實施例;
[0041]圖9D-9E示出了根據本發明的一個方面使用的與解除配置存儲級內存命令有關的邏輯的一個實施例;
[0042]圖10示出了包含本發明的一個或多個方面的電腦程式產品的一個實施例;
[0043]圖11示出了包含並使用本發明的一個或多個方面的主機計算機系統的一個實施例;
[0044]圖12示出了包含並使用本發明的一個或多個方面的計算機系統的又一個例子;
[0045]圖13示出了包括包含並使用本發明的一個或多個方面的計算機網絡的計算機系統的另一個例子;
[0046]圖14示出了包含並使用本發明的一個或多個方面的計算機系統的各種組件的一個實施例;
[0047]圖15A示出了包含並使用本發明的一個或多個方面的圖14的計算機系統的執行單元的一個實施例;
[0048]圖15B示出了包含並使用本發明的一個或多個方面的圖14的計算機系統的分支單元的一個實施例;
[0049]圖15C示出了包含並使用本發明的一個或多個方面的圖14的計算機系統的加載/存儲單元的一個實施例;以及
[0050]圖16示出了包含並使用本發明的一個或多個方面的仿真的主機計算機系統的一個實施例。【具體實施方式】
[0051]根據一個或多個實施例,提供了一種用於存儲級內存的抽象,其對程序(例如作業系統)隱藏了存儲級內存的實施細節,並提供了標準的通道編程接口以執行特定動作,諸如控制主存儲器和存儲級內存之間的數據移動。
[0052]在一個例子中,提供了被稱為擴展異步數據移動器(EADM)設施的設施,其允許程序請求主存儲器和存儲級內存之間的數據塊的傳送,以及請求其他操作。關於該設施的方面將在以下詳細描述。
[0053]而且,與EADM設施有關的是被稱為EAMD釋放設施的可選設施。當被安裝時,EADM釋放設施提供了一種手段,用於由程序指定其不再需要求在一個或多個存儲級內存塊中保留數據。釋放操作是否被支持用於所有的存儲級內存塊或僅用於存儲級內存的一個子集是取決於模型的。
[0054]一旦一個存儲級內存塊已被釋放,程序可將新數據傳遞到塊中,否則隨後將數據從該塊傳送到主存儲器的請求將會失敗。
[0055]將參考圖1A描述包含並使用本發明的一個或多個方面的計算環境的一個實施例。計算環境100是基於例如位於紐約州阿蒙克市的國際商業機器公司(IBM?)提供的 z/Architecture?。z/Architecture? 的一個例子在 2010 年 8 月的 IBM 出版
號 SA22-7832-08 的標題為 「z/Architecture Principles of Operation」 的 IBM?出版物中被描述,該出版物的全部內容通過引用結合於此。在一個例子中,一種基於z/Architecture?的計算環境包括由國際商業機器公司提供的zEnterprisel96 (zl96)系統。IBM?和z/Architecture?以及zEnterprisel96和zl96是位於美國紐約州阿蒙克市的國際商業機器公司的註冊商標。在此使用的其他名稱也可能是國際商業機器公司或其他公司的註冊商標、商標或產品名。
[0056]作為一個例子,計算環境100包括經由一條或多條總線106連接到主存儲器104的一個或多個中央處理單元102。一個或多個中央處理單元可執行作業系統108,諸如由國際商業機器公司提供的Z/OS?作業系統。在其他例子中,一個或多個中央處理單元可執行其他的作業系統或不執行作業系統。ζ/OS?是位於美國紐約州阿蒙克市的國際商業機器公司的註冊商標。
[0057]中央處理單元102和主存儲器104還可經由一個或多個連接122 (例如總線或其他連接)耦合到I/o集線器120。I/O集線器提供到一個或多個I/O適配器130的連接,所述I/O適配器又耦合到一個或多個固態設備140。適配器和固態設備是存儲級內存(例如閃速存儲器)的實現。I/O集線器是促進實施例的一個或多個方面的I/O子系統145的一部分。
[0058]在又一個實施例中,如圖1B所示,計算環境150可包括中央處理複合體(CPC)152,其基於由國際商業機器公司提供的z/Architecture?。中央處理複合體152包括例如一個或多個分區154、管理程序156、一個或多個中央處理器158、以及輸入/輸出子系統160的一個或多個組件。在該例子中,分區154是邏輯分區(例如LPAR),其每個包括被虛擬化為單獨系統的一組系統硬體資源。[0059]每個邏輯分區154能用作單獨系統。即,每個邏輯分區可被獨立重置,如需要,初始加載作業系統或其他控制代碼,並用不同的程序操作。在邏輯分區中運行的作業系統或應用程式看起來能訪問完整和完全的系統,但是實際上,僅其一部分是可用的。硬體和許可內部代碼(LIC)的組合,被稱為固件,使一個邏輯分區中的程序避免受到不同邏輯分區中的程序幹擾。這允許幾個不同的邏輯分區以時間片的方式在單個或多個物理處理器上操作。如在此使用的,固件包括例如處理器(或執行處理的實體)的微代碼、毫代碼和/或宏代碼。它包括例如在實現更高級的機器代碼中使用的硬體級的指令和/或數據結構。在一個實施例中,它包括例如專有代碼,其典型地被輸送為微代碼,該微代碼包括可信軟體或特定於底層硬體的微代碼,並控制對系統硬體的作業系統訪問。
[0060]在該例子中,幾個邏輯分區具有駐留作業系統(OS) 170,其可於一個或多個邏輯分區不同。在一個實施例中,至少一個邏輯分區正在執行由紐約州阿蒙克市的國際商業機器公司提供的z/OS?作業系統。
[0061]邏輯分區154由管理程序156管理,所述管理程序被在中央處理器158上運行的固件實施。邏輯分區154和管理程序156每個都包括駐留在與中央處理器關聯的主存儲器159的相應部分中的一個或多個程序。管理程序156的一個例子是由紐約州阿蒙克市的國際商業機器公司提供的處理器資源/系統管理器(RP/SM?)。
[0062]中央處理器158是被分配給邏輯分區的物理處理器資源。例如,邏輯分區154包括一個或多個邏輯處理器,其每個表示被分配給該分區的物理處理器資源158的全部或一部分。特定分區154的邏輯處理器可以專用於該分區,這樣底層處理器資源被保留用於該分區;或與其他分區共享,這樣底層處理器資源潛在地可被另一個分區訪問。
[0063]輸入/輸出子系統160 (僅描述其一部分)提供了到存儲級內存180的連接。在該例子中,地址空間被提供給存儲級內存,該地址空間呈現內存是平坦(flat)的,對程序隱藏了物理實現的細節。作為一個例子,存在用於存儲級內存的整個系統的一個地址空間,但從配置的角度(例如LPAR或在另一個實施例中是虛擬化客戶(guest)),存在如下這樣的地址空間,在其中為系統的每個配置填充存儲級內存增量。存儲級內存地址空間是單獨的,且與主存儲器地址空間分開。
[0064]在z/Architecture?的一個特定例子中,i/o子系統包括通道子系統,其不僅指引I/o外圍控制單元(以及設備)和主存儲器之間的信息流,也指引存儲級內存和主存儲器之間的信息流。但是,I/o子系統也可以不是通道子系統。
[0065]在通道子系統的情況下,子通道被用來執行EADM操作。這些子通道被稱為異步數據移動器(ADM)類型的子通道,且與EADM操作有關,而不是I/O設備,像其他I/O類型的子通道那樣。ADM類型的子通道不包含設備號,也不包含通道路徑信息。被提供給配置的ADM類型的子通道的號碼是取決於模型的。ADM類型的子通道由子系統識別字(SID)尋址。
[0066]ADM類型的子通道被擴展異步數據移動器設施使用,該設施是通道子系統的擴展。如在此描述的,EADM設施允許程序請求在主存儲器和存儲級內存之間的數據塊的移動,以及執行其他操作,諸如清除存儲級內存塊或釋放存儲級內存塊。在一個實施例中,當EADM設施被安裝時:
[0067].一個或多個ADM類型的子通道被提供,其被用於EADM操作。
[0068].EADM操作被指定的EADM操作塊(AOB)指定。AOB包括EADM請求塊(ARQB)和EADM響應塊(ARSB),並指定EADM移動規格塊(MSB)的列表。對於移動操作,MSB含有關於將被移動的數據塊的信息,諸如塊大小、塊的源和目標位置以及數據移動的方向。
[0069].可被AOB指定的MSB的最大數量是取決於模型的。MSB可指定要被移動或操作的最大的塊計數也是取決於模型的。
[0070]?程序通過發出指定ADM類型的子通道和EADM操作請求塊(ORB)的開始子通道指令而啟動EADM操作。EADM ORB轉而指定Α0Β。該指令將EADM ORB的內容傳遞給指定的子通道。
[0071].當開始子通道被發出以啟動EADM操作時,通道子系統異步地執行指定的操作。
[0072]?如由程序所觀察到的,存儲級內存在取決於模型的最小塊大小上是塊並行的。該取決於模型的值被稱為SCM塊並行大小。
[0073]?當EADM操作完成時,針對操作在其上被啟動的ADM類型的子通道,使得I/O中斷對程序待決。
[0074]EADM ORB包括子通道和將被使用的AOB的地址的指定。AOB被指定為例如在4位元組的邊界上且大小可最多達4K字節。如果需要比適合於4K字節的AOB更多的MSB,A0B可指定一個MSB列表,其通過使用指定列表中的下一個MSB的地址、而不是指定將被用於數據傳輸的存儲區域的MSB,擴展到額外的存儲區域。
[0075]使用指定的EADM ORB中的信息和指定的AOB中的ARQB以獲得MSB,由通道子系統開始第一個EADM操作。MSB包括指定和控制將被處理的EADM操作的信息。
[0076]每個EADM操作被一個MSB表示。MSB可指定例如從主存儲器到存儲級內存的數據塊的傳輸;從存儲級內存到主存`儲器的數據塊的傳輸;存儲級內存的塊的清除;以及存儲級內存的塊的釋放。
[0077]如果將被傳送的存儲塊在主存儲器中不是連續的,可使用新的MSB,或者MSB可通過指定EADM間接數據地址字(AIDAW)的列表以指定不連續的塊,來使用間接尋址。
[0078]由於MSB僅指定一個方向的數據傳輸,當傳輸方向有變化時可使用新的MSB。
[0079]EADM操作的結束通常是由通道端和設備端的組合狀態條件指示的。這種狀態組合表示主要和次要狀態的組合,其指示在狀態被清除後,子通道可用於另一個開始功能。
[0080]EADM操作可被清除子通道指令提前終止。清除子通道指令的執行終止子通道處的AOB的執行,從子通道清除執行中的AOB的指示,以及異步地執行清除功能。
[0081]以下將參考圖2A-2F描述關於EADM ORB的進一步細節和相關控制結構。開始,參考圖2A,其描述了 EADM ORB的一個實施例。
[0082]作為一個例子,EADM 0RB200包括:
[0083]中斷參數202:該欄位在子通道中被保持為未修改,直到被隨後的修改子通道或開始子通道指令替換。當針對子通道發生I/o中斷時且當中斷請求被例如測試待決中斷的執行清除時,這些位被放置在I/o中斷代碼中。
[0084]子通道鍵204:該欄位形成了用於由ARQB指定的EADM操作的子通道鍵,並應用於獲取ARQB、獲取MSB、存儲ARSB以及用於存取主存儲器以便數據傳輸。該欄位的值是定義的值;否則,程序檢驗條件被通道子系統識別或操作數異常被識別。
[0085]ORB擴展控制(X) 205:該欄位指定ORB是否被擴展。當ADM類型的子通道被指定時,該欄位是指定值;否則,識別操作數異常或程序檢驗條件。[0086]EADM操作塊(AOB)地址206:該欄位指定了 EADM操作塊(AOB)的地址。如果該欄位的特定位不包括定義的值,則識別操作數異常或程序檢驗條件。
[0087]如果該欄位指定了被保護免於獲取的位置或指定了配置外的位置,則不啟動開始功能。在這種情況下,子通道變成以主要、次級和警告狀態待決的狀態。
[0088]通道子系統(CSS)優先級208:該欄位包括被分配給指定的子通道的通道子系統優先級號,並且當開始功能將針對一個或多個以待決開始的子通道而啟動時被用來對ADM類型的子通道的選擇進行排序。
[0089]存儲級內存(SCM)優先級210:該欄位包括存儲級內存優先級(SCM)號,其指定了被施加給與開始功能關聯的所有EADM操作的優先級別。
[0090]SCM優先級欄位的內容是否被EADM設施識別是取決於模型的。在不識別該欄位的模型上,欄位內容被忽略,且與開始功能關聯的所有的EADM操作被分配一個隱含的優先級號碼。
[0091]格式(FMT)212::該欄位指定了 ORB的布局。當ADM類型的子通道被指定時,該欄位將包括指定值;否則,識別操作數異常或設置特定條件代碼。
[0092]由EADM ORB的EADM AOB地址206指定的EADM操作塊(AOB )包括被用來發起EADM操作的信息。在一個例子中AOB被分配在4K字節的邊界上且長度可變。
[0093]在一個例子中,如圖2B所示,EADM A0B220包括三個部分:EADM請求塊(ARQB)222 ;EADM響應塊(ARSB) 224 ;以及包含高達定義數量(例如124)的MSB的MSB區域226。但是當使用MSB分支時(即,通過使用MSB中的分支到下一個MSB標誌),ARQB可指定使用多於定義的MSB。`
[0094]參考圖2C描述EADM請求塊(ARQB) 222的一個實施例。在一個例子中,ARQB222包括:
[0095]格式(FMT) 230:該欄位指定了 ARQB的布局。該欄位的值是定義的值;否則,程序檢查條件被通道子系統識別,且命令代碼錯誤在ARSB的異常限定器代碼欄位中被指示。
[0096]命令代碼232:該欄位將指定EADM移動塊命令;否則,程序檢驗條件被通道子系統識別,且命令代碼錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0097]MSB計數234:該欄位指定了組成EADM請求的MSB的計數。可被指定的最大的MSB計數是取決於模型的。該欄位的值大於零且小於或等於取決於模型的最大MSB計數值;否貝1J,程序檢查條件被通道子系統識別,且MSB計數錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0098]除了 EADM請求塊,EADM ORB也指定EADM響應塊(ARSB)。在該實施例中,僅當異常條件被識別時,EADM響應塊是有意義的。特別地,僅當告警狀態出現在EADM子通道狀態字中(SCSW)、EADM擴展狀態字(ESW)是有意義的、且EADM響應塊存儲(R)位在EADM擴展報告字(ERW)中是I (這些情況中的每個都將在以下描述)時,ARSB是有意義的。當ARSB無意義時,AOB中的ARSB的內容時不可預測的。
[0099]如果當相關子通道是子通道活動的時程序存儲到ARSB,可能發生不可預測的結
果O
[0100]當ARSB被存儲時,已被傳遞的數據量(如有)是不可預測的。
[0101]參考圖2D描述EADM響應塊的一個實施例。在一個例子中,ARSB224包括:[0102]格式(FMT) 240:該欄位指定了 ARSB的布局。當ARSB被存儲時,該欄位的值被存儲為定義的值。
[0103]異常標誌(EF)242:當ARSB被存儲時,該欄位,當被設置時,指明ARSB被存儲的異常原因。示例性異常原因包括:
[0104]程序檢驗:檢測到編程錯誤。
[0105]保護檢驗:存儲訪問被保護機制阻止。保護適用於獲取ARQB、MSB、AIDAW的獲取,以及將被傳送到存儲級內存的數據,以及適用於在ARSB中存儲信息以及從存儲級內存傳送的數據。
[0106]通道數據檢驗:針對包含在主存儲器中且當前被用於執行EADM操作的數據,已檢測到不正確的存儲錯誤。當檢測到時可指示該條件,即使在預取時數據未被使用。當數據或相關鍵在數據被通道子系統引用時在主存儲器中具有無效檢驗塊代碼(CBC)時,通道數據檢驗被指示。
[0107]通道控制檢驗:通道控制檢驗是由影響通道子系統控制的任何機器故障引起的。該情況包括ARQB、ARSB, MSB、AIDAff或相應相關鍵上的無效CBC。當在預取的ARQB、MSB、AIDAff或相應相關鍵上檢測到無效CBC時,該條件可以被指示,即使該ARQB、MSB或AIDAW未
被使用。
[0108]擴展異步數據移動設施檢驗:關於包含在存儲級內存中的、且當前在EADM操作的執行中被使用的數據已檢測到不正確的錯誤。
[0109]異常控制塊標識符(ECBI)244:當存儲ARSB時,該欄位是多位掩碼,其位當被設置時,指定與由EF欄位指定的識別的異常關聯的任何單個以下組件或其組合:
[0110]?一個或多個控制塊`
[0111]?主存儲器數據區域
[0112]?存儲級內存
[0113]可被設置的位表示例如EADM移動規格塊、EADM間接數據地址、主存儲器中的數據以及/或存儲級內存中的數據。
[0114]ECBI欄位中的位描述了與單個異常條件關聯的組件。如果針對異常條件沒有組件可被識別,該欄位包含例如零。
[0115]欄位有效性標誌(FVF) 246:當ARSB被存儲時,該欄位包括多位掩碼,其位指示ARSB中特定欄位的有效性。當有效性位被設置時,對應的欄位已被存儲且可用於恢復目的。可被設置的位表示例如失敗的MSB地址欄位、失敗的AIDAW欄位、失敗的主存儲器地址欄位和/或失敗的存儲級內存地址欄位。
[0116]異常修飾符代碼(EQC) 248:當ARSB被存儲時,該欄位包括代碼值,其進一步描述了由異常標誌欄位指定的異常。代碼值可表示以下,例如:
[0117]不提供額外的描述。對於這種情況,異常控制塊標識符(ECBI)欄位和那些被欄位有效性標誌欄位驗證的欄位可識別對其識別了異常的控制塊。
[0118]格式錯誤:由格式欄位指定的格式被保存。對於這種情況,異常控制塊標識符(ECBI)欄位和那些被欄位有效性標誌欄位驗證的欄位可識別已對其識別了異常的控制塊。
[0119]命令代碼錯誤:在ARQB的命令代碼欄位中指定的值不被識別。
[0120]MSB計數錯誤:在ARQB的MSB計數欄位中指定的值是零或超過可被指定的取決於模型的MSB最大值。
[0121]標誌錯誤:由標誌欄位指定的標誌位被保存。對於這種情況,異常控制塊標識符(ECBI)欄位和那些被欄位有效性標誌欄位驗證的欄位識別已對其識別了異常的控制塊。
[0122]操作代碼錯誤:指定保存的操作代碼值。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位含有已對其識別了異常的MSB的地址。
[0123]塊大小錯誤:指定保存的塊大小值。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。
[0124]塊計數錯誤:在MSB的塊計數欄位中指定的值是零或超過可被MSB指定的取決於模型的塊的最大計數。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。
[0125]主存儲器地址規格錯誤:在不正確的邊界上指定了主存儲器地址。這樣的地址可能已被MSB指定或被AIDAW指定。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。如果欄位有效性標誌欄位指示失敗的AIDAW地址欄位是有效的,該欄位包含已對其識別了異常的AIDAW的地址。如果欄位有效性標誌欄位指示失敗的主存儲器地址欄位是有效的,欄位包含已對其識別了異常的主存儲器地址。
[0126]存儲級內存地址規格錯誤:在不正確的邊界上指定了存儲級內存地址。這樣的地址被MSB指定。如果欄位有效性標誌指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB地址。.如果欄位有效性標誌欄位指示失敗的AIDAW地址欄位是有效的,該欄位包含已對其識別了異常的AIDAW的地址。如果欄位有效性標誌欄位指示失敗的存儲級內存地址欄位是有效的,該欄位包含已對其識別了異常的存儲級內存地址
[0127]主存儲器地址異常:EADM設施嘗試使用在配置中不可用地址或迴繞(wrap)最大存儲器地址。這樣的地址可能已被MSB指定,或來自於數據傳送期間增加主存儲器地址。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。如果欄位有效性標誌欄位指示失敗的AIDAW地址欄位是有效的,該欄位包含已對其識別了異常的AIDAW地址。如果欄位有效性標誌欄位指示失敗的主存儲器地址欄位是有效的,該欄位包含已對其識別了異常的主存儲器地址。
[0128]存儲級內存地址異常:EADM設施嘗試使用在配置中不可用的存儲級內存地址。這樣的地址可能已被MSB指定,或產生於在數據傳送期間增加存儲級內存地址。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。如果欄位有效性標誌欄位指示失敗的AIDAW地址欄位是有效的,該欄位包含已對其識別了異常的AIDAW的地址。如果欄位有效性標誌欄位指示失敗的存儲級內存地址欄位是有效的,該欄位包含已對其識別了異常的存儲級內存地址。
[0129]主存儲器錯誤:檢測到不正確的主存儲器錯誤。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。如果欄位有效性標誌欄位指示失敗的AIDAW地址欄位是有效的,該欄位包含已對其識別了異常的AIDAW的地址。如果欄位有效性標誌指示失敗的主存儲器地址欄位是有效的,該欄位包含已對其識別了異常的主存儲器地址。
[0130]MSB列表錯誤:Α0Β指定跨過4K字節邊界的MSB列表,而不指定跨過邊界的分支到下一個MSB (BNM),或者MSB是指定的MSB列表中的最後一個MSB,且B匪由該MSB指定。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。
[0131]MSB分支錯誤:Α0Β指定MSB列表,其中MSB (分支源MSB)指定分支到下一個MSB(BW),以及作為分支目標的MSB也指定BW。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的分支源MSB的地址。
[0132]AIDAff列表錯誤:MSB指定跨過4K字節邊界的EADM間接數據地址字(AIDAW)列表,而沒有指定跨過邊界的分支到下一個AWIDAW (BNA)0如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。如果欄位有效性標誌欄位指示失敗的AIDAW地址欄位是有效的,該欄位包含已對其識別了異常的AIDAW的地址。
[0133]AIDAff分支錯誤:MSB指定EADM間接數據地址字(AIDAW)列表,其中AIDAW (分支源AIDAW)指定了分支到源AIDAW (BNA)且作為分支目標的AIDAW也指定了 BNA。如果欄位有效性標誌欄位指定失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。如果欄位有效性標誌欄位指示失敗的AIDAW地址欄位是有效的,該欄位包含已對其識別了異常的分支源AIDAW的地址。
[0134]存儲級內存臨時錯誤:檢測到可恢復的存儲級內存錯誤。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。如果欄位有效性標誌欄位指示失敗的AIDAW地址時有效的,該欄位包含已對其識別了異常的AIDAW的地址。如果欄位有效性標誌欄位指示失敗的存儲級內存地址欄位是有效的,該欄位包含已對其識別了異常的存儲級內存地址。
[0135]釋放操作不支持錯誤:針對釋放操作不被支持的存儲級內存,指定了釋放操作。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。如果欄位有效性標誌欄位指示失敗的AIDAW地址欄位是有效的,該欄位包含已對其識別了異常的AIDAW的地址。如果欄位有效性標誌欄位指示失敗的存儲級內存地址欄位是有效的,該欄位包含已對其識別了異常的存儲級內存地址。
[0136]釋放數據讀取錯誤:針對最後成功的操作是釋放操作的存儲級內存,指定了讀取操作。如果欄位有效性標誌欄位指示失敗的MSB地址欄位是有效的,該欄位包含已對其識別了異常的MSB的地址。如果欄位有效性標誌欄位指示失敗的AIDAW地址欄位是有效的,該欄位包含已對其識別了異常的AIDAW的地址。如果欄位有效性標誌欄位指示失敗的存儲級內存地址欄位是有效的,該欄位包含已對其識別了異常的存儲級內存地址。
[0137]失敗的MSB地址250:當設置了欄位有效性標誌欄位的指定位時,該欄位指示已對其識別了異常的MSB的地址。
[0138]失敗的AIDAW地址252:當設置了欄位有效性標誌欄位的指定位時,該欄位指示已對其識別了異常的AIDAW的地址。
[0139]失敗的主存儲器地址254:當設置了欄位有效性標誌欄位的指定位時,該欄位指示已對其識別了異常的主存儲器的塊的地址。
[0140]失敗的存儲級內存地址256:當設置了欄位有效性標誌欄位的指定位時,該欄位包括已對其識別了異常的存儲級內存的塊的(例如64位的)SMC地址。[0141]除了 EADM請求塊和EADMD響應塊,EADM操作塊(AOB)也指定一個或多個EADM移動規格塊(MSB)。AOB可包含多達例如124個MSB。但是,程序可通過在ARQB的計數欄位中指定更大數量的MSB並通過使用分支到下一個MSB (B匪)標誌來分支到MSB列表的延續,來指定超過124個的MSB。可能存在多個MSB列表的延續,但是在一個實施例中,這些延續中沒有一個可跨過4K字節的邊界而不使用B匪來跨過該邊界。MSB的延續不要求是連續的。MSB列表的每個延續,如果被指定為在4K字節的邊界上開始,可包含多達128個MSB。MSB列表中的MSB總數由ARQB中的MSB計數欄位指定。
[0142]EADM移動規格塊描述例如將在主存儲器和存儲級內存之間被移動的存儲器塊,或將在存儲器塊上被執行的操作。MSB226的一個實施例參考圖2E被描述,且包括例如:
[0143]格式(FMT) 260:該欄位指定MSB的布局。該欄位的值是定義的值;否則,在ARSB的異常修飾符代碼欄位中指示MSB格式錯誤。
[0144]操作代碼(0C)262:該欄位指定將被執行的操作。在一個例子中,當如下所述標誌欄位的指定位是定義的值時,該欄位指定將被執行的操作。示例性操作包括:
[0145]清除存儲級內存:當該代碼被指定時,由存儲級內存地址、塊大小和塊計數欄位指定的存儲級內存被清除(例如被設置為零)。主存儲器地址欄位對於該操作無意義。
[0146]讀取:當該代碼被指定時,數據被指定為從存儲級內存傳遞到主存儲器。塊計數、塊大小、主存儲器地址和存儲級內存地址欄位對於該操作有意義。
[0147]寫入:當該代碼被指定時,數據被指定為從主存儲器傳遞到存儲級內存。塊計數、塊大小、主存儲器地址和存儲級內存地址欄位對該操作有意義。
[0148]釋放:當該代碼被指定且EADM釋放設施被安裝時,由存儲級內存地址、塊大小和塊計數欄位指定的存儲級內存被釋放。主存儲器地址欄位對該操作無意義。當EADM釋放設施未被安裝時,該代碼被保留。
[0149]如果保留值被指定,程序檢驗條件被通道子系統識別,且操作代碼錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0150]當標誌欄位的指定標誌位不是定義的值時,該欄位被保留且不被檢驗。
[0151]標誌264:該欄位識別可被設置的一個或多個標誌。被保留的標誌位被設為定義的值;否則,標誌錯誤在ARSB的異常修飾符代碼欄位中被指示。示例性標誌包括:
[0152].分支到下一個MSB (B匪):當被設置時,該標誌指示MSB不指定EADM操作,且不被用來傳送數據。反而,主存儲器地址欄位指定將被使用以指定EADM操作的下一個MSB的地址。
[0153]當B匪標誌被設置(例如為I)且主存儲器地址欄位指定其中也被設置了 B匪標誌的MSB時,程序檢驗條件被通道子系統識別,分支源MSB的地址被存儲在ARSB的失敗的MSB地址欄位中,且MSB分支錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0154]如果MSB在4K字節的邊界結束,AOB指定額外的MSB,且B匪標誌未被設置,程序檢驗條件被通道子系統識別,MSB的地址被存儲在ARSB的失敗的MSB地址欄位中,且MSB列表錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0155]如果MSB是指定的MSB列表中的最後一個MSB且B匪標誌被設置,程序檢驗條件被通道子系統識別,MSB的地址被存儲在ARSB的失敗的MSB地址欄位中,且MSB列表錯誤在ARSB的異常修飾符代碼欄位中被指示。[0156]當B匪標誌被設置時,剩餘的標誌、操作代碼欄位、塊大小欄位、塊設置計數欄位和存儲級內存地址無意義。
[0157].間接尋址:當被設置時,該標誌指示主存儲器地址欄位指定EAM間接數據地址字(AIDAff)的地址或指定分別將被用於數據傳送的一個或多個主存儲器位置的AIDAW列表的第一個AIDAW的地址。當未設置時,該標誌指示主存儲器地址欄位指定將被用於數據傳送的主存儲器位置的地址。
[0158]塊大小(BS) 266:該欄位指定將針對主存儲器和存儲級內存兩者被傳送的數據塊的大小和邊界,或將被操作(例如清除或釋放)的存儲級內存的塊的大小和邊界。
[0159]4K:當代碼值是一個定義的值時,將被傳送的數據塊是在4K字節邊界上且大小是4K字節。
[0160]IM:當代碼值是另一個定義的值時,將被傳送的數據塊是在IM字節邊界上且大小是IM字節。
[0161]如果指定了保留值,程序檢驗條件被通道子系統識別,且塊大小錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0162]當B匪標誌被設置時,該欄位被忽略。
[0163]塊計數268:該欄位包括將被傳送或被操作(例如清除或釋放)的數據塊的計數。基於塊大小欄位,這是4K字節或IM字節塊的計數。
[0164]該欄位的值將大於零,並小於或等於可由MSB指定的取決於模型的最大塊計數;否則,程序檢驗條件被通道子系統識別,且塊計數錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0165]當B匪標誌被設置時,該欄位被保留且不被檢驗。
[0166]主存儲器地址270:當操作代碼欄位有意義(例如B匪標誌未被設置)並指定讀或寫操作,且標誌欄位中的間接尋址指示符未被設置時,該欄位包括將被用於數據傳送的主存儲器地址,且以下各項適用:
[0167].當塊大小欄位指定4K字節的塊時,該欄位的指定位包含定義的值(例如零);否貝IJ,程序檢驗條件被通道子系統識別,且主存儲器規格錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0168].當塊大小欄位指定IM字節塊時,該欄位的指定位包含定義的值(例如零);否則,程序檢驗條件被通道子系統識別,且主存儲器規格錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0169]當操作代碼欄位有意義並指定讀或寫操作,且標誌欄位中的間接尋址指示符被設置時,該欄位包括將被用於數據傳送的AIDAW的主存儲器地址或AIDAW列表中的第一個的地址。對於這種情況,該欄位的特定位包含定義的值;否則,程序檢驗條件被通道子系統識另Ij,且主存儲器規格錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0170]當B匪標誌被設置時,操作代碼無意義,且MSB不指定EADM操作。反而,該欄位包括指定EADM操作的下一個MSB的主存儲器地址。對於這種情況,該欄位的指定位包含定義的值;否則,程序檢驗條件被通道子系統識別,且主存儲器規格錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0171]存儲級內存地址272:當操作代碼欄位有意義時,該欄位包括將被用於數據傳送或將被操作(例如清除、釋放)的(例如64位)存儲級內存地址,且以下各項適用:
[0172].當塊大小欄位指定4K字節的塊時,該欄位的指定位包含定義的值(例如零);否貝1J,程序檢驗條件被通道子系統識別,且存儲級內存規格錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0173].當塊大小欄位指定IM字節塊時,該欄位的指定位包含定義的值;否則,程序檢驗條件被通道子系統識別,且存儲級內存規格錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0174]當B匪標誌被設置時,該欄位被保留且不被檢驗。
[0175]如上指示,EADM間接數據地址字可被指定。EADM間接數據地址字(AIDAW)允許程序指定在存儲級內存和主存儲器的非連續塊之間的數據塊傳送。當MSB中的間接尋址標誌被設置時,一個AIDAW或AIDAW列表由MSB指定。
[0176]由單個AIDAW傳送的數據量由MSB中的塊大小欄位指定。AIDAW列表中AIDAW的數量是MSB中的塊計數欄位指定的數量加上指定分支到下一個AIDAW的AIDAW的數量的和。數據傳送可以與在AIDAW列表中指定的順序不同的順序被處理。而且,由AIDAW列表中的多個AIDAW指定的數據傳送可被並行處理。
[0177]AIDAW在例如四字邊界上被分配。AIDAW列表可以是任何長度,但在一個例子中不跨過4K字節邊界,除非指定了分支到下一個AIDAW (BNA)來跨過邊界。不要求作為分支目標的AIDAW與指定BNA的 AIDAW是連續。但是,程序應當在儘可能少的4K字節塊中創建AIDAff列表;否則,可能發生性能下降。
[0178]參考圖2F,在一個例子中,EADM間接數據地址字280包括:
[0179]標誌282:示例性標誌包括:
[0180]分支到下一個AIDAW(BNA):當被設置時,該標誌指示主存儲器地址欄位不指定將被用於傳送數據的主存儲器地址。反而,主存儲器地址欄位指定將被用來傳送數據的下一個AIDAW的地址。
[0181]當BNA標誌被設置且主存儲器地址欄位指定了其中BNA標誌也被設置的AIDAW時,MSB的地址被存儲在ARSB的失敗的MSB地址欄位中,分支源AIDAW的地址被存儲在ARSB的失敗的主存儲器地址欄位中,且AIDAW分支錯誤在ARSB的異常修飾符代碼欄位中被指
/Jn ο
[0182]如果AIDAW在4K字節邊界處結束,MSB指定額外的AIDAW,且BNA標誌未被設置,則MSB的地址被存儲在ARSB的失敗的MSB地址欄位中,AIDAff的地址被存儲在ARSB的失敗的主存儲器地址欄位中,且AIDAW列表錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0183]主存儲器地址284:當BNA欄位未被設置時,該欄位包括將被用於數據傳送的主存儲器地址,且以下各項適用:
[0184]?當MSB中的塊大小欄位指定4K字節的塊時,該欄位的指定位包含定義的值(例如零);否則,程序檢驗條件被通道子程序識別,且主存儲器規格錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0185]?當MSB中的塊大小指定IM字節的塊時,該欄位的指定位包含定義的值(例如零);否則,程序檢驗條件被通道子程序識別,且主存儲器規格錯誤在ARSB的異常修飾符代碼欄位中被指示。
[0186]?當BNA標誌被設置時,該欄位包括將被用於數據傳送的下一個AIDAW的主存儲器地址。
[0187]如上所述,EADM操作被開始子通道指令指定。即,程序通過發出指定ADM類型的子通道和EADM ORB的開始子通道指令而啟動EADM操作。指令的執行將EADM ORB的內容傳遞給指定的子通道。EADM ORB包括子通道鍵的指定(用於保護)和將被使用的AOB的地址。
[0188]在一個例子中,如圖3A所示,開始子通道指令300包括指定開始子通道功能的操作代碼302、第一操作數304,其是位於例如通用寄存器I中的暗示的操作數,其包括指定將被開始的ADM類型的子通道的子系統標識符;以及第二操作數306,其是EADM ORB的邏輯地址。EADM ORB指定用於控制開始功能的參數。在開始子通道的執行期間,在設置條件代碼前,EADM ORB的內容被放置在指定的子通道中。如果開始子通道的執行導致設置了指示成功的代碼之外的條件代碼,EADM ORB的內容不被放置在指定的子通道中。
[0189]在用於ADM類型的子通道的開始子通道的執行後,通道子系統異步地執行開始功能以用EADM設施啟動EADM操作。開始功能包括例如以下各項:
[0190]1.從 AOB 獲取 ARQB。
[0191]2.執行由ARQB及其指定的MSB指定的EADM操作。
[0192]3.有條件地將ARSB中的完成信息存儲在AOB中。
[0193]4.使得ADM類型的子通道變成狀態待決,指示開始功能的完成。
[0194]在一個實施例中,參考圖3B,當開始子通道執行令被執行且SID指定ADM類型的子通道且第二操作數指定EADM 0RB,在步驟320指定EADM操作。在步驟322EADM ORB中的參數被傳遞給指定的子通道,且在步驟324通道子系統被請求以利用EADM設施執行開始功能。在步驟326,通道子系統通過使用子通道處的信息(包括在開始子通道指令的執行期間傳遞的信息)啟動EADM操作,來異步地執行開始功能。
[0195]在步驟328,EADM操作(例如第一操作)的執行包括使用來自EADM ORB的信息獲得Α0Β,且在步驟330該信息被用在AOB中以獲得EADM請求塊(ARQB)以及指定一個或多個EADM移動規格塊(MSB)。然後在步驟332 —個或多個指定的MSB從主存儲器被獲取,並且在MSB中指定的信息被用於控制所請求的EADM操作。當通道子系統試圖開始數據傳送或試圖清除或釋放操作時,第一操作被認為開始了。
[0196]在步驟334通道子系統執行MSB中請求的操作。該處理與開始處理的執行是異步的。
[0197]當在步驟336被開始子通道啟動的EADM操作結束時,通道子系統在步驟338產生狀態條件。在步驟339,通過I/O中斷使這些條件的生成引起程序的注意。程序也會通過執行測試待決中斷指令來查詢這些條件。
[0198]生成的狀態條件以EADM子通道狀態字(SCSW)的形式被呈現給程序。通過執行測試子通道指令,EADM SCSW被存儲為EADM中斷響應塊(IRB)的一部分。
[0199]當在EADM操作塊(AOB)中指定的EADM操作被結束時,通道子系統產生初級和次級中斷狀態。EADM操作可被清除子通道終止或者在執行開始功能時異常條件被識別。
[0200]對於移動操作,由通道子系統進行的MSB的處理控制信息單位到主存儲器或來自主存儲器的流。為了改變MSB處理期間數據移動的方向,需要新的MSB。ARQB指定構成請求的MSB的計數。[0201]每個EADM操作由一個MSB表示。MSB可指定以下各項中的任一個:
[0202].從主存儲器到存儲級內存的數據塊的傳送。
[0203].從存儲級內存到主存儲器的數據塊的傳送。
[0204].清除存儲級內存的塊。
[0205].當安裝了 EADM釋放設施時,釋放存儲級內存的塊。
[0206]如果將為移動操作而傳送的存儲塊在主存儲器中不是連續的,可使用新的MSB,或者MSB可通過指定EADM間接數據地址字(AIDAW)列表而使用間接地址,以指定不連續塊。由於MSB可僅在一個方向指定數據傳送,當數據傳送方向有變化時要使用新的MSB。
[0207]以下是EADM數據傳送的特點:
[0208].數據傳送可不按指定的MSB列表的順序被處理。
[0209].由MSB列表中的多個MSB指定的數據傳送可被並行處理。
[0210].數據傳送可以不按指定AIDAW列表的順序被處理。
[0211]?在AIDAW列表中的多個AIDAW中指定的數據傳送可被同時處理。
[0212].對主存儲器和存儲級內存的訪問不必須是單一訪問引用,且不必須以從左到右的方向被執行,如程序和其他CPU所觀察到的。
[0213].如果兩個或更多個EADM操作當前是活動`的並尋址相同的SCM位置、主存儲器位置或這兩者,操作可被同時執行且來自不同操作的內容可被交錯;但是:
[0214]一對於輸入操作,被EADM設施存儲到主存儲器的每個塊的、其大小等於SCM塊並行大小的數據由僅通過一個並行EADM操作而從存儲級內存傳送的數據組成。
[0215]一對於輸出操作,存儲級內存的位於邊界上的、且大小等於SCM塊並行大小的每個塊包含僅被一個並行EADM操作指定的數據。
[0216]以上是真實的,而不考慮EADM操作是否被單個AOB指定,且被開始功能的相同實例處理,或EADM操作被不同的AOB指定,且被開始功能的不同實例處理。
[0217].當EADM操作對於子通道是活動的時,無法預測是否由程序對ARQB、MSB、AIDAff和與該活動的操作關聯的傳送數據作出的更改被EADM設施觀察到。
[0218]當被AOB指定的所有MSB指定的所有的塊已被傳送或清除或釋放時,子通道生成狀態,其被存儲在子通道中,並請求用於ADM類型的子通道的I/O中斷。
[0219]EADM操作的結束通常由通道和設備終端的的組合狀態條件指示。該狀態組合表示初級和次級狀態的組合,其指示狀態被清除後,子通道可用於另一個開始功能。
[0220]如上所述,MSB可指定數據傳送操作、清除操作或釋放操作,每種操作都在以下被描述。
[0221]當請求移動操作時,一個或多個數據塊在主存儲器和存儲級內存之間移動。例如,對於讀取操作,SCM數據從提供由指定的SCM地址指定的內容的SSD獲取,隨後該內容被存儲在主存儲器中。對於寫操作,該過程被保留。控制SSD的適配器執行存儲。在進一步的細節中,為了執行移動操作,系統固件首先將給定SCM地址轉換為適配器地址(例如邏輯捲地址,其中邏輯卷包括一個或多個SSD)。例如,將SCM地址與適配器地址關聯的轉換表被使用。系統固件隨後向一個或多個I/o適配器提交一個或多個對應的適配器移動命令(例如讀或寫)。適配器移動命令包含主存儲器地址、適配器地址和傳送大小。適配器隨後使用另一個轉換表來定位一個或多個物理SSD地址,其對應於適配器地址。I/O適配器通過從主存儲器獲取數據並將其存儲在SSD中,或從SSD獲取數據並將其存儲在主存儲器中來實現移動操作。在文檔號為 P0U920110090US1 的、標題為 「Firmware Management of StorageClass Memory」(存儲級內存的固件管理)的共同提交的專利申請中進一步提供額外的細節,該文獻在此通過引用全文併入本文。
[0222]當執行清除操作時,通過將內容設為零,指定的存儲級內存增量被清除。
[0223]而且,當釋放操作被執行時,一個或多個標準TRIM命令可被提交給包含對應的SCM地址的SSD。TRM命令允許程序給出關於塊使用的暗示,從而允許由SSD進行的更好的垃圾收集。TRM命令允許作業系統通知SSD,哪些存儲塊不再被認為在使用中且可被消除。
[0224]EADM操作可被清除子通道指令提前中斷。清除子通道指令的執行終止子通道處的AOB的執行,從子通道清除執行中的AOB的指示,並異步地執行清除功能。當清除功能被執行時,在子通道變成狀態待決之前,數據傳送被終止且傳送的數據量是不可預測的。清除功能的執行不會導致狀態生成,但是會引起通道子系統使得I/o中斷待決。
[0225]在一個實施例中,參考圖3C,清除子通道指令350包括操作代碼352,其指定清除子通道功能。將被清除的子通道被例如通用寄存器中的子系統識別字指定。用於ADM類型的子通道的清除功能包括:
[0226]1.保證當前數據傳送被終止。
[0227]2.修改子通道處的欄位以及有條件地修改ARSB。例如,子通道狀態字被修改為在功能控制欄位中和活動的控制欄位中指示清除功能。ARSB可被修改為反應任何檢測到的錯誤。
[0228]3.使得子通道變為狀態待決,指示清除功能的完成。
[0229]也可發出可指定ADM類型的子通道的其他指令,包括測試子通道、修改子通道和存儲子通道,每種指令都在以下描述。
[0230]參考圖3D,在一個例子中,測試子通道指令360包括例如操作代碼362,其指定測試子通道功能;第一操作數364,其是位於例如通用寄存器I中的暗示的操作數,其包含指定將被測試的子通道的子系統識別字;以及第二操作數366,其是其中存儲了信息的信息響應塊(IRB)的邏輯地址。
[0231]當測試子通道被執行,且指定ADM類型的子通道,子通道是狀態待決的,且信息被存儲在指定的EADM IRB (中斷響應塊)中時,設置指定的條件代碼。當子通道不是狀態待決的且狀態信息被存儲在指定的EADMIRB中時,定義的條件代碼被設置。當子通道未被提供或未被使能時,不採取動作。
[0232]在一個例子中,EADM IRB包括子通道狀態字(SSW)和擴展狀態字(ESW),以及可提供額外的取決於模型的信息的擴展控制字,其描述可能在設施中存在的條件。在討論可指定ADM類型的子通道的各種指令後,這些字的每個在以下被進一步描述。
[0233]參考圖3E,在一個實施例中,修改子通道指令370包括操作代碼372,其指示修改子通道功能;第一操作數374,其是位於例如通用寄存器I中的暗示的操作數,其包括指定將被修改的子通道的子系統識別字;以及第二操作數376,其是與子通道關聯的子通道信息塊(SCHIB)的邏輯地址。
[0234]當修改子通道被執行且指定ADM類型的子通道,且來自指定的子通道信息塊(SCHIB)的信息被放置在子通道中時,設置特定條件代碼。當子通道是狀態待決的,不採取動作,且設置定義的狀態代碼。當子通道忙於開始或清除功能時,不採取動作。
[0235]參考圖3F,描述了存儲子通道指令的一個例子。在一個例子中,存儲子通道指令380包括操作代碼380,其識別存儲子通道功能;第一操作數384,其是位於例如通用寄存器I中的暗示的操作數,其包括指定信息正被存儲的子通道的子系統識別字;以及第二操作數386,其是SCHIB的邏輯地址。
[0236]當存儲子通道被發出且指定ADM類型的子通道,且SCHIB被存儲時,指定的條件代碼被設置。當指定的子通道在通道子系統中未被提供時,不採取動作。
[0237]參考圖4A描述了用於ADM類型的子通道EADM (SCHIB)的子通道信息塊的一個例子。在一個例子中,EADM SCHIB400包括取決於模型的區域401,其包括取決於模型的信息。而且,SCHIB400包括路徑管理控制字(PMCW) 402,以及子通道狀態字(SCSW) 404,其每種將在以下被描述。
[0238]在一個實施例中,EADM PMCW402包括例如在圖4B中示出的以下欄位:
[0239]中斷參數410:該欄位包括被存儲在I/O中斷代碼中的中斷參數。中斷參數可被設開始子通道和修改子通道設為任何值。子通道中的中斷參數欄位的初始值是零。
[0240]中斷子類(ISC) 412:該欄位包括多個位,其是指定範圍內的無符號的二進位整數,對應於配置中的每個CPU的指定控制寄存器中的I/O中斷子類掩碼位的位位置。在CPU的控制寄存器中的掩碼位的設置控制了該CPU對與子通道關聯的中斷請求的識別。ISC可被修改子通道設為一個值。子通道中的ISC欄位的初始值是例如零。
[0241]使能(E) 414:當被設置時,該欄位指示子通道被使能用於所有EADM功能。
[0242]子通道類型(ST)416:`該欄位指示子通道類型。根據模型和配置,一個或多個以下子通道類型可被提供:1/0子通道或ADM子通道。
[0243]當子通道被配置時該欄位的值被確定,且不能被修改子通道改變。
[0244]當修改子通道指令被執行並制定ADM類型的子通道時,ST將指示ADM子通道;否貝U,操作數異常被識別。
[0245]參考圖4A,子通道信息塊也包括子通道狀態字404。EADM子通道狀態字(SCSW)提供了對程序的指示,其描述了 ADM類型的子通道和相關EADM操作的狀態。在一個例子中,如圖4C所示,子通道狀態字404包括:
[0246]子通道鍵(鍵)420:當功能控制欄位(如下描述的)中的EADM開始功能指示符被設置時,該欄位包括被通道子系統使用的存儲訪問鍵。當開始子通道被執行時,這些位與在EADM ORB中指定的鍵相同。
[0247]擴展狀態字格式(L)422:當狀態控制欄位(如下描述的)的狀態待決指示符被設置時,該欄位,當被設置時,指示格式-OESW已被存儲。當包含以下任何指示的中斷條件被測試子通道清除時,格式-OESW被存儲:
[0248].程序檢驗
[0249].保護檢驗
[0250].通道數據檢驗
[0251]?通道控制檢驗
[0252]?擴展的異步數據移動設施(EADMF)
[0253]延遲條件代碼(CC)424:當EADM開始功能指示符被設置且狀態待決指示符也被設置時,該欄位指示當測試子通道或存儲子通道被執行時子通道是狀態待決的一般原因。當子通道以任何狀態組合是狀態待決的,且僅當SCSW中的功能控制欄位的開始功能指示符被設置時,延遲條件代碼是有意義的。
[0254]如被設置,延遲條件代碼被用來指示是否遇到在子通道是開始待決時阻止子通道變為子通道活動的情況。
[0255]示例性延遲條件代碼包括:
[0256].正常的I/O中斷已被呈現。
[0257].狀態存在於EADM SCSff中,其是由通道子系統為阻止EADM開始功能被成功啟動的情況生成的。即,子通道不會轉換到子通道活動狀態。
[0258]CCff格式(F) 426:當EADM開始功能指示符被設置時,該欄位被存儲為定義的值。
[0259]預獲取(P) 428:當EADM開始功能指示符被設置時,該欄位被存儲為定義的值。
[0260]擴展控制(E)430:當被設置時,該欄位指示取決於模型的信息被存儲在EADM擴展控制字(ECW)中。
[0261]功能控制(FC)432:功能控制欄位指示在子通道處被指示的EADM功能。示例性功能包括:
[0262]?EADM開始功能:當被設置時,指示EADM開始功能已被請求,且在ADM類型的子通道處處於待決或進行中狀 態。當對於開始子通道成功的條件代碼被設置時,EADM開始功能在子通道中被指示。當測試子通道被執行且子通道是狀態待決的時,EADM開始功能在子通道被清除。在清除子通道的執行期間,EADM開始功能也在子通道處被清除。
[0263].EADM清除功能:當被設置時,指示EADM清除功能已被請求且在ADM類型的子通道處處於待決或進行中狀態。當為清除子通道設置了成功的條件代碼時,EADM清除功能在子通道處被指示。當測試子通道被執行且子通道是狀態待決的時,EADM清除功能指示在子通道處被清除。
[0264]活動控制(AC)434:活動控制欄位指示之前在子通道處接受的EADM功能的當前進度。
[0265]當測試子通道被執行且子通道是狀態待決的時,在活動控制欄位中由位表示的所有條件在ADM類型的子通道處被重置。
[0266]示例性活動包括:
[0267].開始待決:當被設置時,指示子通道是開始待決的。通道子系統可能處於或不處於執行EADM開始功能的過程中。當為開始子通道設置成功的條件代碼時,子系統變為開始待決的。當執行EADM開始功能且通道子系統確定阻止獲取ARQB的條件存在時,子通道保持開始待決。
[0268]當以下各項中的任何一個發生時,子通道不再是開始待決的,
[0269].通道子系統試圖啟動由AOB指定的第一個數據傳送。
[0270].清除子通道被執行。
[0271].測試子通道清除子通道處的狀態條件。
[0272]清除待決:當被設置時,子通道是清除待決的。通道子系統可以處於或不處於執行EADM清除功能的過程中。當為清除子通道設置指定的條件代碼時,子通道變成清除待決的。
[0273]當以下各項中的任一個發生時,子通道不再是清除待決的:[0274].EADM清除功能被執行。
[0275].測試子通道單獨清除狀態待決條件。
[0276]子通道活動的:當被設置時,指示ADM類型的子通道是子通道活動的。當通道子系統試圖啟動由AOB指定的第一個數據傳送或執行第一個操作(看哪個先發生)時,ADM類型的子通道被稱為是子通道活動的。
[0277]當以下各項中的任何一個發生時,子通道不再是子通道活動的:
[0278].子通道變成狀態待決。
[0279].執行了清除子通道。
[0280]狀態控制(SC) 436:狀態控制欄位向程序提供了由子通道狀態和設備狀態欄位中的信息描述的中斷條件的摘要級指示。多於一個的狀態控制指示符可被設置,作為子通道處的條件的結果。
[0281]示例性狀態控制包括:
[0282]告警狀態:當被設置時,指示存在告警中斷條件。當告警狀態出現在子通道時,告警中斷條件被識別。在以下任何條件下告警狀態被通道子系統生成:
[0283].ADM類型的子通道是開始待決的,且狀態條件阻止第一個數據傳送的啟動。
[0284].子通道是子通道活動的,且被報告為子通道狀態的異常條件已終止了 EADM操作。
[0285]當測試子通道或清除子通道被執行時,告警狀態在子通道處被清除。
[0286]初級狀態:當被設置時,指示存在初級狀態。當初級狀態出現在子通道時,初級中斷條件被識別。初級中斷條件是請求的中斷條件,當伴隨有次級中斷條件時,其指示EADM開始功能在子通道處完成。
[0287]當執行測試子通道或清除子通道時,初級中斷條件在子通道處被清除。
[0288]次級狀態:當被設置時,指示存在次級中斷條件。當次級狀態出現在子通道時,次級中斷條件被識別。次級中斷條件時請求的中斷條件,當伴隨有初級中斷條件時,其指示子通道處的EADM開始功能的完成。
[0289]當測試子通道或清除子通道被執行時,次級中斷條件在子通道處被清除。
[0290]狀態待決:當被設置時,指示子通道是狀態待決的,且描述中斷條件的原因的信息是可用的。當測試子通道被執行從而以設置的狀態待決位存儲EADM SCSW時,所有的EADMSCSW指示在子通道處被清除,從而將子通道置於空閒狀態。在清除子通道的執行期間,狀態待決條件也在子通道處被清除。
[0291]當狀態待決被設置時,所有對用於子通道ARSB的主存儲器和存儲級內存的訪問都被終止。
[0292]子通道狀態438 =ADM類型的子通道狀態條件被通道子系統檢測並存儲在子通道狀態欄位中。當子通道是狀態待決的時,子通道狀態欄位是有意義的。除了由設備故障引起的條件,僅當通道子系統涉及EADB功能的處理時,可產生子通道狀態。
[0293]狀態條件的例子包括:
[0294].程序檢驗:當編程錯誤被通道子系統檢測到時,發生程序檢驗。
[0295].保護檢驗:當通道子系統試圖進行被保護機制阻止的存儲訪問時,保護檢驗發生。保護適用於獲取ARQB、MSB、AIDAW,以及將被傳送給存儲級內存的數據,以及適用於ARSB中的信息存儲和從存儲級內存傳送的數據。
[0296].通道數據檢驗:通道數據檢驗指示針對從主存儲器的數據獲取或將數據存儲到主存儲器中而檢驗到不正確的存儲錯誤。
[0297].通道控制檢驗:通道控制檢驗指示針對AOB、MSB或AIDAW的獲取或存儲檢測到不正確的存儲錯誤,或通道子系統遇到機器故障且故障影響EADM操作。
[0298]?擴展的異步數據移動(EADM)設施檢驗:EADM設施檢驗指示針對到存儲級內存的數據傳送或來自存儲級內存的數據傳送,或針對在存儲級內存上執行操作,錯誤被EADM設施檢驗到。
[0299]當程序檢驗、保護檢驗、通道數據檢驗、通道控制檢驗或EADM設施檢驗條件被通道子系統識別時,EADM操作被終止,且通道變成狀態待決的,具有初級、次級和告警狀態。
[0300]EADM操作塊地址440:該欄位指示EADM操作塊地址。
[0301]設備狀態442:這包括設備端或通道端。
[0302]當子通道狀態字的ESW格式422被設置,且子通道是狀態待決的,提供EADM子通道擴展狀態字(EADM ESW),其指定關於ADM類型的子通道的額外信息。
[0303]在一個例子中,參考圖4D,EADM子通道擴展狀態字450包括:
[0304]EADM子通道註銷452:在一個例子中,EADM子通道註銷包括:
[0305].擴展狀態標誌(ESF):當其位是一時,該欄位指定錯誤已被通道子系統檢測到。
[0306]擴展狀態標誌的例子包括:`
[0307]鍵檢驗:當被設置時,指示通道子系統已檢測到當引用EADM操作塊(AOB)、EADM移動規格塊(MSB)、或EADM間接數據地址字中(AIDAW)中的數據時相關存儲鍵上的無效的檢驗塊代碼(CBC)。
[0308]-AOB地址有效性:當被設置時,指示存儲在SCSW的AOB地址欄位中的地址不能被用於恢復目的。
[0309]EADM擴展報告字454,其包括例如:
[0310]EADM操作塊錯誤指示符,當被設置時,指示存儲在EADM SCSff中的異常狀態與指定的EADM操作塊(AOB)關聯;且EADM響應塊存儲(R)指示符,當被設置時,指示EADM響應塊(ARSB)被存儲。
[0311]當SCSW的擴展的控制指示符和SCSW的擴展的狀態字格式指示符被設置時,EADM擴展控制字提供取決於模型的性質的額外信息,其描述了可能在EADM設施中存在的條件。
[0312]此外,以下通道報告字(CRW)可針對ADM類型的子通道被報告;子通道安裝的參數被初始化;子通道安裝的參數被恢復;子通道可用;子通道事件信息待決。
[0313]發生在EADM設施中的未經請求的事件和故障可被通道事件信息待決CRW報告。
[0314]以上詳細描述了擴展異步數據移動器設施,其用於在主存儲器和存儲級內存之間移動數據塊,並執行存儲級內存上的其他操作。在一個實施例中,使用EADM命令獲得關於EADM設施和存儲級內存的信息。特別地,由於存儲級內存不是直接可被訪問的,提供能力以確定存儲級內存是否被分配,以及如果是這樣,獲取關於配置的信息。特別地,在一個例子中,提供能力以與控制程序(例如作業系統)交流是否存儲級內存已被分配,以及如果是這樣,分配了多少以及在什麼位置。確定可用的存儲級內存的能力在此被稱為發現,且發現功能的一個例子是由存儲存儲級內存(SCM)信息(SSI)命令提供的。[0315]存儲存儲級內存信息(SSI)命令被用於獲取關於存儲級內存以及擴展異步數據移動器設施的信息。SSI命令返回以下從例如通道子系統獲取的信息。
[0316]1.EADM設施的特徵,包括:
[0317].每個AOB的移動規格塊(MSB)的最大計數。
[0318].每個MSB的最大塊計數。
[0319]2.存儲級內存的特徵,包括:
[0320].SCM增量大小。
[0321 ].SCM地址空間內的SCM地址增量列表。
[0322].取決於模型的最大SCM地址。
[0323]執行存儲SCM信息命令,其是同步的,不改變包含在通道子系統中的任何信息。
[0324]關於SSI命令的進一步信息將參考圖5A-?進行描述。首先參考圖5A,在一個實施例中,用於存儲SCM信息命令的命令請求塊500包括例如:
[0325]長度502:指定命令請求快的長度的值。
[0326]命令代碼504:指定用於存儲SCM信息命令的命令代碼的值。
[0327]格式(FMT) 506:指定命令請求塊的格式的值。
[0328]繼續令牌508:可請求從未完成的之前響應恢復的繼續點的值。如果繼續令牌的值是零,作出新的開始。如果繼續令牌的值是非零且不被識別,作出新的開始。
[0329]SSI命令的響應塊520的一個實施例將參考圖5B描述,且包括例如:
[0330]長度522:指示命令響應塊的字節長度的值。
[0331]響應代碼524:描述嘗試執行SSI命令的結果的值。響應代碼值指定響應塊的長度。例如,如果選定的響應代碼被存儲,長度指示96+Nxl6位元組,其中N是存儲級內存地址列表項的數量,如以下描述的。在一個例子中,N位於NS 248的範圍。
[0332]格式(FMT) 526:指示命令響應塊的格式的值。該欄位的值是例如零。
[0333]RQ528:響應修飾符值,如以下描述的:
[0334]不存在響應修飾。
[0335]指定的繼續令牌不被識別,且被處理為如同零已被指定。
[0336]每個MSB最大塊計數(MBC) 530:指示可被用在移動規格塊(MSB)的塊計數欄位中的最大值的值。
[0337]最大SCM地址(MSA)532:指示取決於模型的最大SCM地址的值。它是最高可尋址的SCM增量中的最後一個字節的SCM地址。
[0338]SCM增量大小(IS) 534:表示SCM地址列表中的每個SCM增量的大小的值,且例如是2的冪。
[0339]最大MSB計數(MMC) 536:指示可在EADM操作塊(AOB)中被指定的移動規格塊(MSB)的最大計數的值。
[0340]最大可配置SCM增量(MCI) 538:可被配置到請求配置的SCM增量的最大數量的值。
[0341]在一個實施例中,MCI不超過2(64_is)。例如,對於16G字節的SCM增量大小,MCI ( 2(64_34),因為所有的16G字節的SCM增量可在64位地址的尋址約束中被尋址。而且,((MCI+1) XIS)-1不超過取決於模型的最大SCM地址。[0342]配置的SCM增量(NIC)的數量降低了當如下描述的成功的配置存儲級內存命令被執行時可被指定的總大小(TS),這樣TS < (MC1-NCI)。但是,基於系統的整個容量和已對其他配置作出的分配,初始化狀態中的SCM增量的數量可以能夠或不能夠完全滿足請求,以便以其他方式有效地配置到請求的配置的MCI界限。
[0343]CPC的總初始化SCM增量540:表示用於系統(例如,用於中央處理複合體(CPC))的初始化狀態中的SCM增量的數量的值。如果系統被邏輯分區,這是分配給分區的/可由分區分配的總的可用增量的數量。
[0344]CPC的總的未初始化SCM增量542:表示用於系統(例如用於CPC)的未初始化狀態中的SCM增量的數量。
[0345]SCM測量塊大小514 =SCM測量塊的以字節表示的塊大小(BS)的值。在一個例子中,它是2的冪,且最大的SCM測量塊大小是例如4096位元組。
[0346]SCM資源部件546的最大數量:作為CPC上的SCM資源部件(RP)(例如I/O適配器)的最大數量的值。每個SCM增量與SCM資源部件關聯。每個SCM資源(例如一個或多個I/O適配器和一個或多個SSD)包括一個或多個部件。SCM資源部件的最大數量是例如509。
[0347]在一個例子中,術語「資源部件」被定義以用於獲取與存儲級內存有關的測量信息。每個SCM增量可被分配給多個適配器,且每個適配器具有與可告知的一些使用/測量數據。這樣,返回的每個測量塊被由增量標識符加上資源標識符組成的元組識別。
[0348]SCM數據單元大小548:取決於模型的值,其指示包括在SCM數據單元中的字節的數量。在一個例子中,數據單元被定義為用於獲得與存儲級內存有關的測量信息。被報告的計數是數據單元而不是字節的計數。
[0349]繼續令牌550:取決於模型的值,通過該值SSI命令的隨後發出可在由令牌表示的繼續點繼續。繼續令牌的內容是取決於模型的。
[0350]存儲級內存地址列表552:SCM地址列表的起點。當存儲的響應代碼是預定值時,多個SCM地址列表項(SALE)被存儲(例如(長度-96) /16個SALE被存儲)。
[0351]在一個例子中,存儲的SALE的數量取決於請求者的配置中的SCM增量的數量,當命令被執行時其每個的狀態,以及通道子系統模型。零個或更多個SALE被存儲,且在一個例子中,被存儲的實際數量通過從響應塊的大小(長度)減去96並將該結果除以16來確定。
[0352]每個SCM地址列表項(SALE)表示一個SCM增量,其佔用SCM地址的一個範圍。由SALE表示的SCM增量的開始SCM地址包含在SALE中,且是對應的SCM增量的第一字節的SCM地址。在一個例子中,通過將以字節表示的SCM增量大小添加到起始SCM地址且隨後減一來計算結束地址。這是SCM增量的最後一個字節的SCM地址。在一個實施例中,由SALE表示的存儲級內存是連續一組SCM字節位置,其從自然2IS字節邊界開始。
[0353]當對應的SCM增量處於配置狀態且空間在用於SALE的響應塊中可用時,存儲SALE。如果響應塊的SCM地址列表中的空間耗盡,一值被存儲在繼續令牌中且以特定的響應代碼完成執行。
[0354]兩個或更多個SALE以升序順序被存儲在其SCM地址中。
[0355]參考圖5C描述的SALE的一個實施例。在一個實施例中,SALE552包括例如:
[0356]SCM地址(SA)560:作為SCM地址空間中的對應SCM增量的字節O的起始SCM地址的值,在由SCM增量大小(2IS字節)確定的自然邊界上對齊。[0357]持久性屬性(P) 562:作為指示適用於SCM增量的當前持久規則的值。SCM增量中的任何位置繼承了持久性規則。可能的持久性規則包括:
[0358]規則I —當斷電時保留數據。
[0359]規則2 —保留數據直到上電重置或ML。
[0360]操作狀態564:指示由SALE表示的存儲級內存增量的操作狀態的值。僅當相關SCM增量處於配置狀態時,操作狀態是有效的。
[0361]操作狀態的例子包括:
[0362]可操作(Op):由SALE表示的存儲級內存可用於所有的I/O操作。一經成功配置就進入該可操作狀態,且當從臨時或永久錯誤狀態退出時可重新進入該可操作狀態。
[0363]臨時錯誤(TE):由SALE表示的存儲級內存不能用於任何I/O操作。數據狀態是無效的,但是從可操作到臨時錯誤的轉變中的數據內容被保留。當對SCM增量的訪問不存在時,從可操作狀態進入臨時錯誤狀態。
[0364]永久錯誤(PE):由SALE表示的存儲級內存不可用於任何I/O操作。數據狀態是無效的,且數據丟失。當識別了不可校正的錯誤條件時,從臨時錯誤狀態或可操作狀態進入永久錯誤狀態。
[0365]當操作以在EADM響應塊的異常標識符代碼中設置永久錯誤指示完成時,至少該對應的SCM增量已進入到永久錯誤狀態。但是,超過一個的SCM增量可能進入到永久錯誤狀態。
[0366]當SCM增量不在可操作狀態時,引用增量中的位置的I/O操作以設置在EADM響應塊的異常標識符代碼中的臨時或永久錯誤,識別擴展的異步數據移動設施檢驗。
[0367]數據狀態566:指示由SALE表示的存儲級內存增量的內容的數據狀態的值。當相關的SCM增量處於配置和可操作狀態時,數據狀態是有效的。
[0368]示例性數據狀態包括:
[0369]置零一SCM增量的內容都是零。
[0370]有效一 SCM增量的內容是所有成功的寫類型操作的積累。未被寫入的增量中的位置保持置零或不可預測。
[0371]不可預測一在任何寫類型I/O操作之前,SCM增量的內容是未知的。在一個或多個寫類型操作已被執行後,即使成功寫入的位置導致SCM增量的數據狀態變得有效,其他未寫入位置的數據內容保持為不可預測。
[0372]利用第一次成功寫入,發生從置零或不可預測到有效狀態的轉變。由於寫入的數據大小和目標SCM增量的大小之間的任何差異,到有效的變化不會描述尚未被寫入的任何數據位置的實際情況。這樣的還未被訪問用於寫入的位置仍然被有效地描述為置零或不可預測。
[0373]等級568:指示由SALE表示的存儲級內存增量的概念性質量的值。僅當SCM增量處於配置和可操作狀態時,等級是有效的。零值意味著沒有等級。指定範圍中的非零值指不存在等級。在該例子中,I的等級值是最聞或最佳等級。15的等級值是最低或最差等級。其他相同時,具有較高等級的SCM比具有較低等級的SCM更優先。
[0374]R570:該欄位指示SCM增量識別釋放操作。以下行為是相關的:
[0375]1.釋放的塊在被讀取前先被寫入,否則如果讀取在寫入之前,識別讀取操作錯誤。對於這樣的錯誤,SCM增量保持在可操作狀態中。
[0376]2.一旦進行初始配置,數據狀態為置零。
[0377]3.程序可執行特殊操作,被稱為釋放,其將指定的塊置於釋放條件中。
[0378]資源ID572:非零值是提供由SALE表示的SCM增量的資源的資源標識符(RID)。當RID是零時,沒有資源ID被指示。在一個特定例子中,RID表示提供用於SCM增量的存儲的同樣多的適配器和SSD。因為可應用特定的RAID算法,或通過允許跨過多個適配器/SSD的並行I/o操作來條帶化(striping)以改善性能,RID可表示複合實體。
[0379]關於存儲級內存的配置狀態的進一步細節,以及存儲級內存地址列表的操作和數據狀態將在以下描述。
[0380]首先,參考圖6A,描述配置狀態和導致這些狀態內的轉變的事件/動作。如圖所示,SCM狀態是配置、備用和保留。SCM可由保留被置於備用,隨後由備用到配置。從配置,SCM可被解除配置並進入保留狀態。
[0381]參考圖6B,示出了操作狀態和在這些狀態內導致轉變的事件。SCM增量將是處於備用狀態以便被配置,且在配置動作成功完成後處於操作狀態。到置零狀態中的SCM增量的第一寫入將其移動到有效狀態。對於未被指示為具有規則I持久性的SCM增量的居間的斷電和上電將SCM增量移動到不可預測狀態。
[0382]錯誤(E)可引起到臨時錯誤(TE)狀態或永久錯誤(PE)狀態的轉變,這取決於錯誤的取決於模型的特定細節。連接的獲取(A)可引起從臨時錯誤狀態到操作(Op)狀態的轉變。可發生SCM增量的解除配置,而不管其操作狀態。
[0383]圖6B也示出了當在可操`作狀態時取決於如何進入了可操作狀態的數據狀態。當被配置且處於可操作狀態時,數據狀態時有效的,並被施加給對應的SCM增量。有效數據狀態是置零、不可預測和有效。以下是到可操作狀態的各種進入時可能的數據狀態:
[0384]?從備用一置零(Z)
[0385]?從臨時錯誤一效性(V)
[0386].從永久錯誤一不可預測(U)或置零(V)
[0387]?從可操作一有效(V) —第一次寫入
[0388].從可操作一不可預測(U) —功率循環且持久性不是規則I。
[0389]當未處於操作狀態時,數據狀態是無效。
[0390]當第一次被配置且在第一次寫入之前,SCM增量的數據處於置零狀態,意味著其內容都是零。
[0391]儘管當移動到或處於臨時錯誤狀態時,SCM增量的數據內容不被改變,增量是不可訪問的。因此,說數據是無效的可能是描述性的,但由於缺乏程序可訪問性不會過於有意義。因此,數據狀態在該場景下是無效。而且,基於引起從可操作到臨時錯誤的轉變的錯誤,如果數據整體性被影響,進入永久錯誤狀態,數據狀態保持為無效,且數據丟失。如果並行修復可將SCM增量從永久錯誤狀態移動到可操作狀態而不會即被解除配置,又隨後再次配置,原始數據仍然丟失,且數據狀態是不可預測還是置零,這取決於模型。
[0392]SCM增量的持久性及其RAS (可靠性、可訪問性和可服務性)特點也可確定從有效到不可預測數據狀態的變化。如果持久性被超過,可預期從有效到不可預測的數據狀態轉變。[0393]隨著第一成功寫入,發生從置零或不可預測的數據狀態到有效數據狀態的變化。由於寫入的數據大小和目標SCM增量大小之間的任何差別,到有效的變化不會描述任何尚未被寫入的數據位置的實際情況。這樣的位置,在首次寫入訪問之間,仍然被有效地描述為置零或不可預測。
[0394]在SCM增量被配置後,當任何一個或多個可在存儲SCM信息命令的響應中觀察到的事件發生,使未經請求的通知待決。例子如下:
[0395]1.操作狀態從可操作變化到臨時錯誤或永久錯誤,但不會在失敗操作中被報告。
[0396]2.操作狀態從臨時錯誤變化到可操作。
[0397]3.操作狀態從臨時錯誤變化到永久錯誤。
[0398]4.等級變化。
[0399]其中未經請求的通知沒有變得待決的例子包括以下:
[0400]1.數據狀態從置零或不可預測改變到有效。
[0401]2.配置存儲級內存命令完成。
[0402]3.解除配置存儲級內存命令完成。
[0403]當通知待決時,程序觀察到通知並可發出存儲SCM信息命令以獲取信息。存儲SCM信息命令也可在其他時間被發出,在所述時間程序將需要關於SCM和/或SALE的信息。
[0404]在一個例子中,通知包括被發出給程序的機器檢查中斷,其具有指示事件報告的對應CRW。程序發出CHSC存儲事件信息命令並獲取具有內容代碼的響應塊,其信號通知存儲級內存變化通知。
[0405]在一個實施例中,存儲SCM信息(SSI)命令是由程序(例如作業系統)發出的通道子系統命令以獲取關於存儲級內存和/或SCM地址列表項的信息。在一個例子中,程序發出通道子系統調用指令,且SSI命令在該指令的命令塊中被指示,其被發出到通道子系統。命令在通道子系統處被執行,且響應在響應塊被返回,響應塊是4K字節控制塊的剩餘部分(即,請求的信息存儲在為響應塊指定的主存儲器區域中)。參考圖描述關於該命令的操作的進一步細節。
[0406]首先,在步驟580程序生成以上指示的請求塊以請求存儲SCM信息命令。在步驟582請求塊被通道子系統獲得,且進行一個或多個有效性檢驗,以檢驗請求快的有效性(例如,有效長度欄位、有效命令請求塊格式、命令已安裝等)。如果在詢問584請求不是有效的,則在步驟586指示問題的響應代碼被放置在響應塊中,且在步驟592響應塊被返回。
[0407]但是,如果在詢問584請求是有效的,則在步驟588通道子系統獲取來自機器(例如處理器等)的信息,並在步驟590填充響應塊。在步驟592返迴響應塊。例如,信息被包含在機器的非易失性存儲器中,且在系統初始化期間,被固件加載到僅可被固件訪問的主存儲器中。通過將信息從僅可被固件訪問的主存儲器讀取,通道子系統(即該例子中的固件)獲取信息,並填充響應塊。
[0408]響應於接收到關於存儲級內存的信息或沒有接收到該信息,可做出決定改變存儲級內存的配置。該決定可手動做出或者被程序或其他實體自動做出。如以下描述的,可通過添加增量或刪除增量來改變配置。
[0409]在一個例子中,為了配置存儲級內存,使用配置存儲級內存命令。該命令請求將從系統的可用池被配置的存儲級內存的量。該量被指定為大小,被編碼為SCM增量的計數。[0410]除非另外清楚說明,被用來滿足請求的SCM增量的數量處於初始化狀態。如果請求的SCM增量的數量使得最大可配置的SCM增量界限被超過,提供特定的響應代碼。
[0411]每個增量的內容是具有有效CBC的零。與每個配置的SCM增量關聯的可應用持久規則是由例如手動控制設置的。
[0412]用於配置存儲級內存命令的命令請求塊的一個實施例在圖7A中示出。在一個例子中,配置存儲級內存請求塊700包括:
[0413]長度702:指示命令請求塊長度的長度的值。
[0414]命令代碼704:指示用於配置存儲級內存命令的命令代碼的值。
[0415]格式(FMT) 706:指示命令請求塊的格式的值。
[0416]總大小(TS) 708:指示被編碼為SCM增量的計數的、請求的存儲級內存的大小的值。已被配置的SMC增量的計數加上TS不應超過最大可配置SCM增量(MCI)界限。如果初始化狀態中的SCM增量的數量小於指定的總大小,提供特定的響應代碼。
[0417]異步完成相關器(ACC) 710:在以下描述通知響應的異步完成通知欄位中返回的值。相關器用於恢復啟動請求的原始線程。
[0418]用於配置存儲級內存命令的命令響應塊的一個實施例在圖7B中描述。在一個實施例中,命令響應塊730包括:
[0419]長度732:指示命令響應塊的長度的值。
[0420]響應代碼734:描述嘗試執行配置存儲級內存命令的的結果的值。
[0421]如果定義的響應代碼被存儲在響應代碼欄位中,異步過程被啟動以完成命令的處理。如果定義的代碼之外的響應代碼被存儲在響應代碼欄位中,沒有SCM增量被配置,沒有異步過程被啟動,且不做出隨後的通知。異步過程的完成在通知響應中被指示。
[0422]格式(FMT) 746:指示命令響應塊的格式的值。
[0423]配置存儲級內存命令由程序發出以請求將被配置到SCM地址空間中的存儲級內存的量。用於配置SCM的邏輯的一個實施例將參考圖7C進行描述。
[0424]開始,在步驟740程序發出通道子系統調用指令,其包括配置SCM命令。在步驟742,配置SCM命令的請求塊由通道子系統獲得,且在步驟744通道子系統試圖執行命令。如果在詢問746嘗試執行命令產生不指示成功的響應代碼,則在步驟748響應代碼被放置在配置SCM命令的響應塊中,且在步驟750響應塊被返回。
[0425]如果在詢問746成功的響應代碼被指示,則在步驟752響應代碼被放置在響應塊中,且在步驟754響應塊被返回。在該例子中,成功的響應代碼指示請求快的長度欄位是有效的;命令在系統中是可用的;命令請求塊具有有效格式;通道子系統能執行命令(即,不忙);請求的總大小不超過請求的配置的最大可配置SCM增量界限;且請求的總大小不超過初始化狀態中的SCM增量的數量。
[0426]此外,在步驟756啟動完成配置的異步過程。參考圖7D描述關於該處理的進一步細節。
[0427]在一個實施例中,在步驟760異步處理執行配置以分配一個或多個增量。例如,對於每個配置的SCM增量,內部控制被改變以允許新配置的增量可被對該分區的I/O移動請求訪問。特別地,響應於通道子系統接收CHSC配置命令,通道子系統的固件檢查內部表以確認存在足夠的增量以滿足請求,並確保請求不超過用於配置的最大可配置SCM增量。如果請求是有效的,固件更新一個或多個表以分配增量到配置,並將增量放置到用於配置的可操作狀態。增量隨後可被來自配置的I/o移動請求(如上描述的)訪問。在步驟762異步過程的完成在通知響應中被指示。
[0428]用於配置存儲級內存命令的通知響應數據在存儲事件信息(SEI)命令的響應塊中被返回。參考圖8A描述用於配置存儲級內存命令的通知響應塊的格式的一個實施例。
[0429]在一個實施例中,配置存儲級內存命令的通知響應塊800包括:
[0430]長度802:指示命令響應塊的長度的值。
[0431]響應代碼804:描述試圖執行存儲事件信息CHSC命令的結果的值。
[0432]格式(FMT) 806:指示命令響應塊的格式的值。
[0433]通知類型808:指示這是一個EADM相關通知的值。
[0434]P810:當被設置時,指定除了響應於該CHSC命令被提供的信息外,通道子系統具有待決事件信息。
[0435]V812:當被設置時,指定通道子系統已識別溢出條件且事件信息已被丟失。
[0436]內容代碼814:指示這是對由配置存儲級內存命令請求啟動的異步過程的執行完成的響應的值。
[0437]次級響應代碼816:進一步描述嘗試執行配置SCM命令的結果的值。
[0438]當次級響應代碼是指定值時,如開始請求的存儲級內存的完全量已被配置。否則,響應代碼可被提供,其指示例如無效的長度欄位、配置SCM命令未安裝、配置SCM命令塊具有無效格式、總請求大小將超過MCI界限、請求的總大小超過初始化狀態中的SCM增量的數量、通道子系統忙。
[0439]異步完成相關器(ACC) 818:在對應的命令請求塊中初始指定的值。
[0440]參考圖8B-8C描述用於返回配置存儲級內存命令的通知響應塊的存儲事件信息命令的一個實施例。
[0441]存儲事件信息命令用來存儲已被通道子系統變得待決的事件信息。通常,該命令作為已接收了事件信息待決通道報告的程序的結果而被執行。
[0442]存儲事件信息命令的執行可改變包含在通道子系統中的信息。存儲事件信息命令被同步執行。
[0443]參考圖SB描述用於存儲事件信息命令的命令請求塊的一個實施例。在一個例子中,請求塊830包括:
[0444]長度832:該欄位指定命令請求塊的長度。
[0445]命令代碼834:該欄位指定存儲事件信息命令。
[0446]格式(FMT) 836:指定命令請求塊的格式的值。
[0447]通知類型選擇掩碼(NTSM) 838:掩碼,其每個位位置對應於相同數字值的邏輯處理器選擇器(LPS)值。在一個實施例中,位O被忽略並被假設是I。當從I開始的指定範圍中的位位置是零時,對應於該位位置的通知類型沒有被存儲在響應塊中,且如果被識別為待決,則被丟棄。當這樣的位是I時,對應於位位置的通知類型可被存儲在響應塊中。
[0448]在一個實施例中,參考圖8C,用於存儲事件信息命令的響應塊850被如下描述:
[0449]長度852:指定命令響應塊的初始長度的值。完成長度取決於作為試圖執行存儲事件信息命令的結果而被存儲的響應代碼。[0450]如果指示成功的代碼之外的響應代碼被存儲在響應代碼欄位中,沒有信息被存儲在響應數據區域中。
[0451]如果指示成功的響應代碼被存儲在響應代碼欄位中,事件信息被存儲在響應數據區域中。
[0452]響應代碼854:描述試圖執行存儲事件信息命令的結果的值。
[0453]對於存儲事件信息命令,響應數據區域包含固定長度部分和可變長度部分。
[0454]對於指定的格式響應,當NT是非零時,格式取決於特定通知類型,且取決於欄位的內容代碼的格式取決於特定通知類型和內容代碼(CO欄位的組合。
[0455]格式(FMT) 856:指示命令響應塊的格式的值。
[0456]通知類型(NT) 858:指示通知類型(NT)的值。提供用於配置SCM命令的特定值。
[0457]F標誌860:當被設置時,指定通道子系統除了響應於該CHSC命令而被提供的信息,具有待決的事件信息。程序可通過再次執行存儲事件信息命令獲得額外的信息。當未被設置時,該標誌指定通道子系統不具有額外的待決事件信息。
[0458]V標誌862:當被設置時,指定通道子系統已識別了溢出狀況且事件信息已被丟失。當沒有被包含在響應數據區域中的事件信息是最近的待決信息時,溢出狀況被識別。溢出不影響包含在響應數據區域中的信息。
[0459]內容代碼(CC) 864:描述包含在響應數據區域中的信息的類型的值。在一個例子中,該值指示存儲級內存變化通知,其中一個或多個SCM增量已改變了狀況或狀態。
[0460]內容代碼依賴欄位866:該欄位包括關於事件的額外信息。
[0461]配置變化的成功通知可促使程序發出存儲SCM信息命令以獲得關於配置的細節。
[0462]除了增加存儲級內存,存儲級內存也可被減少。解除配置存儲級內存命令請求存儲級內存的量從請求配置的SCM地址空間移除。將被解除配置的SCM增量將處於配置狀態。
[0463]如在此描述的,將被解除配置的SCM增量在SCM增量請求列表中被指定。一個或多個連續的SCM增量可在SCM增量請求列表項(SIRLE)中被指定。單獨的SIRLE可被指定用於增量(也稱為區段(extent))的每個列表,其不與任何其他增量列表連續。
[0464]不管持久規則,SCM增量的成功解除配置將增量放到未初始化狀態。當置零完成時,SCM增量從未初始化狀態轉變到初始化狀態。
[0465]用於解除配置存儲級內存命令的命令請求塊的一個實施例在圖9A中示出。用於解除配置存儲級內存命令的命令請求塊900包括例如:
[0466]長度902:指定命令請求塊的長度的值。在一個實施例中,該長度是32+(NX 16)字節,其中N是SCM增量請求列表項(SIRLE)的計數。在該例子中長度可被16整除,且處於(32+1X16) ^ LI ^ (32+253X 16)的範圍。
[0467]命令代碼904:指定用於解除配置存儲級內存命令的命令代碼的值。
[0468]格式(FMT) 906:指定命令請求快的格式的值。
[0469]異步完成相關器(ACC) 908:在如上所述的異步完成通知中返回的值。
[0470]SCM增量請求列表910:該欄位包括SCM增量請求列表(SIRL)。SCM增量請求列表包括一個或多個項(SIRLE)。SIRL的長度是從長度欄位的值確定的。
[0471]SCM增量請求列表項(SIRLE)指定存儲級內存(例如增量列表)的所指定區段的大小和位置。區段或SCM區段是存儲級內存的指定大小。[0472]參考圖9B,在一個例子中,SIRLE920包括:
[0473]總大小(TS)922:指定編碼為SCM增量的計數的、將被解除配置的存儲級內存的大小。
[0474]開始SCM地址(SA) 924:該值是SCM地址,且是SCM地址空間中的位置,從其移除由SIRLE解除配置的第一個或僅有的SCM增量。在該例子中,將構成第一 SCM增量內的偏移的最低位位置被忽略,且被假設是零。
[0475]當總大小大於I時,超過第一增量的每個額外的SCM增量位於可被SCM增量大小整除的SCM地址處,其包含配置的SCM增量,且其位置與先前的SCM增量的最後一個字節連續。換句話說,位於下一個連續位置。
[0476]如果由開始位置和總大小的組合描述的空間不是完全充滿配置的SCM增量,提供指定的響應代碼,沒有SCM增量被配置,沒有異步過程被啟動,且沒有隨後的通知發生。
[0477]一旦成功完成,每個解除配置的SCM增量進入到保留狀態,且隨後在被放置到備用狀態前被置零。
[0478]用於解除配置存儲級內存命令的命令響應塊在圖9C中示出。在一個實施例中,命令響應塊950包括:
[0479]長度952:指示命令響應塊的長度的值。
[0480]響應代碼954:描述試圖執行解除配置存儲級內存命令的結果的值。
[0481]如果指定值的響應代碼被存儲在響應代碼欄位中,異步過程被啟動以完成命令的處理。如果指定值以外的響應代碼被存儲在響應代碼欄位中,沒有SCM增量被解除配置,沒有異步過程被啟動,且沒有隨後的通知被做出。異步過程的完成在通知響應中被指示。
[0482]在解除配置存儲級內存命令的同步部分以指定的響應代碼完成前,SCM增量請求列表中的所有項被檢查以確保所有指定的SCM增量處於配置狀態。
[0483]格式(FMT) 956:指示命令響應塊的格式的值。參考圖9D-9E描述與解除配置SCM命令關聯的邏輯的一個實施例。
[0484]開始,在步驟970程序發出包括解除配置SCM命令的通道子系統調用指令。在步驟972解除配置SCM命令的請求塊被通道子系統獲取,且在步驟974通道子系統試圖執行命令。如果在詢問976嘗試執行命令產生不指示成功的響應代碼,則在步驟978響應代碼被放置在解除配置SCM命令的響應塊中,且在步驟980響應塊被返回。
[0485]如果在詢問976成功的響應代碼被指示,則在步驟982響應代碼被放置在響應塊中,且在步驟984響應塊被返回。在該例子中,成功的響應代碼指示請求塊的長度是有效的;命令在系統中可用;命令請求塊具有有效格式;通道子系統能執行命令(即,不忙);且SCM增量原始地處於配置狀態。
[0486]此外,在步驟986完成解除配置的異步處理被啟動。關於該處理的進一步細節將參考圖9E進行描述。
[0487]在一個實施例中,在步驟900異步處理執行解除配置。例如,一個或多個增量被解除分配。SCM增量從配置狀態移動到保留狀態。一旦進入到保留狀態,接著發生置零處理,且當完成時,SCM增量轉變到備用狀態。在步驟992異步過程的完成在通知響應中被指示。
[0488]用於解除配置存儲級內存命令的通知響應數據在存儲事件信息(SEI) CHSC命令的響應塊中被返回。參考圖8A描述該響應塊的一個例子。但是,該例子中的內容代碼指示這是對於由解除配置存儲級內存命令請求啟動的異步過程的執行完成的響應。類似地,次級響應代碼還描述了試圖執行解除配置存儲級內存命令的結果。
[0489]在又一個實施例中,存儲增量的分配和解除分配可經由呈現給用戶的面板而被請求。例如,服務元件被用來提供圖形界面,通過該圖形界面用戶可對系統指定參數。對於存儲級內存,稱為存儲級內存分配面板的面板允許用戶執行以下操作:
[0490]1.指定用於給定配置的最大可配置增量(MCI);
[0491]2.分配增量給配置;
[0492]3.從配置解除分配增量。
[0493]面板也允許查看配置增量分配和MCI,以及可用、不可用和未初始化池中的增量的數量。當由於SE處的動作,增量分配改變或當一個池的大小改變時,通知被發送到配置。
[0494]以上詳細描述了管理存儲級內存的設施。它提供了抽象以允許程序訪問存儲器,而不需要對存儲器的特定知識。根據本發明的一個或多個方面,提供能力以在主存儲器和SCM之間移動數據;以清除或釋放SCM;以配置或解除配置SCM;以及以發現SCM的配置。也提供了其他的能力。
[0495]在一個實施例中,存儲級內存對用戶級別程序被呈現為平坦內存空間,獨立於其跨過多個設備和I/o適配器的物理實現。
[0496]關於通道子系統和/或ADM設施的細節在以下文獻中被描述:Antognini等人的、於 1994 年 12 月 27 日發布的、標題為 「Method and Means for Enabling VirtualAddressing Control By Software Users Over A Hardware Page Transfer ControlEntity」的美國專利號5377337 ;Brent等人的、於1995年8月15日發布的、標題為「Asynchronous Co-Processor Data Mover Method and Means,,的美國序列號544802 ;以及1996 年 6 月 11 日發布的、標題為 「Method and System for Pipelining the Processingof Channel Command Words」的美國專利號5526484,這些文獻中的每一個通過全文引用結合於此。
[0497]此夕卜,關於通道子系統和與其相關的指令的進一步的信息(用於z/Architecture?的特定實現)被提供如下:
[0498]輸入/輸出(1/0)
[0499]術語「輸入」和「輸出」被用來描述1/0設備和主存儲器之間的數據傳送。涉及這種類型的傳送的操作被稱為I/o操作。用於控制I/O操作的設施被統稱為通道子系統。(I/O設備及其控制單元附著於通道子系統。)
[0500]通道子系統
[0501]通道子系統引導1/0設備和主存儲器之間的信息流。它解除了 CPU直接與1/0設備通信的任務,並允許數據處理與I/o處理並行進行。通道子系統使用一個或多個通道路徑作為通信鏈路,以管理到或來自I/o設備的信息流。作為1/0處理的一部分,通道子系統也通過測試通道路徑可用性執行路徑管理操作,選擇可用的通道路徑,並啟動由設備執行的I/o操作。
[0502]在通道子系統內的是子通道。一個子通道被提供並專用於通過通道子系統可由程序訪問的每個I/o設備。
[0503]多個子通道組設施是可選設施。當其被安裝時,子通道被分區為多個子通道組,且每個子通道組可提供一個專用的子通道給I/o設備。根據使用的模型和界面,一些I/O設備可僅被允許經由特定的子通道組來訪問。
[0504]每個子通道提供了關於相關I/O設備及其到通道子系統的連接的信息。子通道也提供關於I/o操作和涉及相關I/O設備的其他功能的信息。子通道是通道子系統提供關於相關I/o設備的信息給CPU的手段,CPU通過執行I/O指令獲取該信息。所提供的子通道的實際數量取決於模型和配置;每個子通道組中的最大可尋址性是0-65535。
[0505]I/O設備通過控制單元經由通道路徑被附加到通道子系統。控制單元可通過多於一個通道路徑被附加到通道子系統,且I/O設備可被附加到多於一個的控制單元。總之,單個I/o設備可經由子通道通過多達8條不同的通道路徑被通道子系統訪問,這取決於模型和配置。通道子系統提供的通道路徑的總數取決於模型和配置;最大可尋址性是0-255。
[0506]通道子系統的性能取決於其使用和其被實施於其中的系統模型。通道路徑被提供有不同的數據傳送能力,且被設計為僅以特定速率傳送數據的I/o設備(例如磁帶單元或盤存儲器)可在能允許至少該數據速率的通道路徑上操作。
[0507]通道子系統包含用於I/O操作的控制的共同設施。當這些設施以被特別設計為控制I/o設備的單獨的自主設備的形式提供時,I/O操作完全與CPU中的活動重疊。在I/O操作期間由通道子系統要求的僅有的主存儲器循環是傳送數據和控制信息到或來自主存儲器中的最終位置的所需要的那些循環,以及當子通道被實施為不可尋址的主存儲器的一部分時,由通道子系統訪問子通道所需的那些循環。這些循環不會延遲CPU程序,除了當CPU和通道子系統同時試圖引用相同的主存儲器區域時。
[0508]子通道組
[0509]當多個子通道組設施被安裝時,子通道被分區為多個子通道組。可以有多達4個子通道組,每個被子通道組標識符(SSID)標識。當多個子通道組設施未被安裝時,僅有一個子通道組,其具有為零的SSID。當多個子通道組設施未被使能時,僅子通道組零對於程序是可見的。
[0510]子通道
[0511]子通道向程序提供了設備的邏輯外表,並包含用於維持單個I/O操作所需的信息。子通道由內部存儲構成,該內部存儲包含的信息形式為通道一程序指定、通道一路徑標識符、設備號、計數、狀態指示以及I/o中斷子類代碼,以及關於路徑可用性和待決或正被執行的功能的信息。I/o操作通過執行I/O指令針對設備啟動,所述I/O指令指定與設備關聯的子通道。
[0512]每個設備可通過每個通道子系統中的一個子通道訪問,在安裝時的配置期間它被分配給該子通道。設備可以是物理可識別單元,或可被放置到控制單元的內部。例如,在特定的盤存儲設備中,用於檢索數據的每個致動器被認為是一個設備。在所有的情況下,從通道子系統的觀點來看,設備是與一個子通道唯一關聯的一個實體,且對通道子系統通過使用通信協議進行的選擇進行響應,所述通信協議是為通道路徑的類型定義的,通過該通道路徑可訪問該設備。
[0513]在一些模型上,子通道按塊被提供。在這些模型上,比附加設備更多的子通道可被提供。被提供但不具有分配給其的設備的子通道被通道子系統使用以執行任何功能,且通過將關聯的設備號有效位作為零存儲在子通道的子通道信息塊中而被指示。[0514]由通道子系統提供的子通道的數量與被提供給相關設備的通道路徑的數量無關。例如,可通過替代通道路徑被訪問的設備仍然被單個子通道表示。當子通道組設施被安裝時,通過使用16位的二進位子通道號和二位的SSID,每個子通道被尋址。
[0515]在子通道處的I/O處理已被START SUBCHANNEL的執行請求之後,CPU被釋放用於其他工作,且通道子系統裝配或拆開數據並同步I/O設備和主存儲器之間的數據字節的傳送。為了完成這一點,通道子系統維護並更新地址,以及描述主存儲器中的數據的目的或源的計數。類似地,當I/o設備提供應當引起程序注意的信號時,通道子系統將信號轉變為狀態信息,並將信息存儲在子通道中,在此它可被程序檢索。
[0516]輸入/輸出設備的附加
[0517]通道路徑
[0518]通道子系統通過通道子系統和控制單元之間的通道路徑與I/O設備通信。控制單元可通過多於一個的通道路徑被通道子系統訪問。類似地,I/o設備可通過多於一個的控制單元被通道子系統訪問,每個控制單元具有一個或多個到通道子系統的通道路徑。
[0519]通過被配置到子通道的多個通道路徑附加到通道子系統的設備可被通道子系統使用任何可用的通道路徑訪問。類似地,具有動態重連特徵並在多路徑模式中操作的設備可被初始化以操作,使得當邏輯重連到通道子系統以繼續I/o操作鏈時,設備可選擇被配置到子通道的任何可用的通道路徑。
[0520]通道子系統可包含多於一種類型的通道路徑。通道子系統使用的通道路徑類型的例子是 ESCON I/O 接口、FICON I/O 接口、FICON 轉換的 I/O 接口以及 IBM System/360 和System/370I/0 接口。術語「串行 I/O 接 口」被用來指 ESCON I/O 接口、FICON I/O 接口、FICON轉換的I/O接口。術語「並行I/O接口」被用來指IBM System/360和System/3701/O接口。
[0521]ESCON I/O接口在系統庫公開 IBM Enterprise Systems Architecture/390ESC0NI/O Interface, SA22-7202中描述,其通過全文引用結合於此。
[0522]FICON I/O 接口在 ANSI 標準文檔 Fibre Channel-Single-Byte Command CodeSets-2 (FC-SB-2)中被描述。
[0523]IBM System/360 和 System/370I/0 接 口系統庫公開 IBM System/360andSystem/370I/0 Interface Channel to Control Unit 0ΕΜΙ, GA22-6974 中被描述,其通過全文引用結合於此。
[0524]根據通道路徑的類型、通道路徑提供的設施、以及1/0設備,1/0操作可發生在三種模式中的一種中:幀復用模式、猝發模式和字節復用模式。
[0525]在幀復用模式中,在通道程序的執行期間1/0設備可保持邏輯連接到通道路徑。能夠在幀復用模式中操作的通道路徑的設施可被若干個並行操作的I/o設備共享。在該模式中,完成I/o操作所需要的信息被分為幀,所述幀可與來自用於其他I/O設備的1/0操作的幀交錯。在該期間,多個I/o設備被認為邏輯連接到通道路徑。
[0526]在猝發模式中,1/0設備獨佔通道路徑並保持邏輯連接到通道路徑以用於信息猝發的傳送。在猝發被傳送期間,沒有設備可在通道路徑上通信。猝發可由若干字節、整塊數據、具有相關控制和狀態信息的塊序列(塊長度可以是零)或獨佔通道路徑的狀態信息組成。能在猝發模式中操作的通道路徑的設施可被若干個並行操作的I/o設備共享。[0527]—些通道路徑可忍受在猝發模式操作期間大約半分鐘的數據傳送缺失,諸如當磁帶上的長空隙被讀取時發生的。當數據傳送缺失超過規定界限時,可指示設備故障。
[0528]在字節復用模式中,I/O設備僅可在較短時間間隔保持邏輯連接到通道路徑。能在字節復用模式中操作的通道路徑的設施可被若干並行操作的I/o設備共享。在該模式中,所有的I/o操作被分為一些短的時間間隔,在時間間隔期間僅一段信息通過通道路徑被傳送。在這樣的間隔期間,僅一個設備及其相關子通道邏輯連接到通道路徑。與多個I/o設備的並行操作關聯的間隔響應於來自設備的要求而被排序。與子通道關聯的通道子系統設施僅在傳送信息段所需的時間為任一個操作實施其控制。段可由單個字節的數據、若干字節的數據、來自設備的狀態報告或用於啟動新操作的控制序列組成。
[0529]通常,具有高數據傳送速率要求的設備使用幀復用模式中的通道路徑操作,較慢的設備在猝發模式中操作,且最慢的設備在字節復用模式中操作。一些控制單元具有用於設置希望的操作模式的手動開關。
[0530]發生在並行I/O接口類型的通道路徑的I/O操作可發生在猝發模式或字節復用模式中,這取決於通道路徑和I/o設備提供的設施。為了改善的性能,一些通道路徑和控制單元可被提供有用於高速傳送和數據流式傳輸的設施。參考系統庫公開IBM System/360andSystem/370I/0 Interface Channel to Control Unit OEMI, GA22-6974來獲得這兩個設施的描述,該公開通過全文引用結合於此。
[0531]發生在串行I/O接口類型的通道路徑的I/O操作可發生在幀復用模式或猝發模式中。為了改善的性能,附加到串行I/o接口的一些控制單元提供能力以與呈現單元檢驗狀態並行地提供感測數據(sense data)給程序,如果被程序允許這麼做的話。
[0532]根據控制單元或通道子系統,通過子通道訪問設備可被限制為單通道路徑類型。
[0533]上述模式和特點僅影響用於在通道路徑傳送信息的協議以及傳輸速率。CPU或通道程序不會觀察到針對這些程序被執行的方式的影響。
[0534]控制單元
[0535]控制單元提供操作和控制I/O設備所需的邏輯能力,並適應性調整每個設備的特點,這樣它可響應於通道子系統提供的控制的標準形式。
[0536]控制單元和通道子系統之間的通信發生在通道路徑上。控制單元接收來自通道子系統的控制信號,控制經過通道路徑的數據傳送的時間,並提供關於設備狀態的指示。
[0537]附加到控制單元的I/O設備可被設計為僅執行特定的有限操作,或者它可執行許多不同的操作。典型的操作移動記錄介質並記錄數據。為了完成其操作,設備需要其設備類型特有的詳細的信號序列。控制單元解碼從通道子系統接受的命令,將其解釋為用於特定類型的設備,並提供執行操作所需要的信號序列。
[0538]控制單元可被單獨放置,或其可被物理地和邏輯地與I/O設備、通道子系統或CPU集成。在大多數機電設備的情況下,由於控制單元和設備要求的設備類型差異,定義良好的接口存在於設備和控制單元之間。這些機電設備通常是這樣的類型,其中在一時間僅要求附加到控制單元的組中的一個設備傳送數據(例如磁帶單元或盤訪問裝制),且控制單元在若干個I/o設備之間共享。另一方面,在諸如通道到通道適配器的一些電子I/O設備中,控制單元不具有其自己的身份。
[0539]從程式設計師的角度,由控制單元執行的大部分功能可與I/O設備執行的功能合併。因此,通常在該本說明書中沒有特別提到控制單元功能;1/0操作的執行被描述,就好比I/O設備直接與通道子系統通信。僅當強調控制單元執行的功能或描述在若干設備間共享控制單元會如何影響I/o操作的執行時,才參考控制單元。
[0540]I/O 設備
[0541]輸入/輸出(I/O)設備提供了外部存儲器、數據處理系統之間的通信手段或系統及其環境之間的通信手段。I/o設備包括這樣的設備,諸如磁帶單元、直接訪問存儲設備(例如盤)、顯示單元、打字機一鍵盤設備、印表機、遠程處理設備和基於傳感器的設備。I/O設備可以是物理上單獨的設備,或者其可與其他I/o設備共享設備。
[0542]大多數類型的I/O設備,諸如印表機或磁帶設備,使用外部介質,且這些設備是物理可區分和可識別的。其他類型是完全電子的,且不直接處理物理記錄介質。例如,通道到通道適配器提供兩個通道路徑之間的數據傳送,且數據從來不到達主存儲器外的物理記錄介質。類似地,通信控制器可處理數據處理系統和遠程站之間的信息傳輸,且其輸入和輸出是傳輸線上的信號。
[0543]在最簡單的情況下,I/O設備被附加到一個控制單元,且可從一個通道路徑被訪問。開關設備通過控制單元間切換設備以及通過通道路徑間切換控制單元,可用於使得一些設備可從兩條或更多條通道路徑被訪問。這樣的開關設備提供多條路徑,通過所述路徑I/o設備可被訪問。多條到I/O設備的通道路徑被提供以改善系統內的性能或I/O可用性或這兩者。到設備的多條通道路徑的管理是在通道子系統和設備的控制下,但是通道路徑可被程序間接控制。
[0544]I/O 尋址
[0545]由通道子系統提供4種不同類型的I/O尋址,以用於各種組件的必要尋址:通道路徑標識符、子通道號、設備號,以及雖然對程序來說不可見,取決於通道路徑類型的地址。當多子通道組設施已安裝時,子通道組標識符(SSID)也在I/O尋址中被使用。
[0546]子通道組標識符
[0547]子通道組標識符(SSID)是被分配給每個提供的子通道組的二位值。
[0548]通道路徑標識符
[0549]通道路徑標識符(CHPID)是被分配給系統的每個安裝的通道路徑的系統唯一的8位值。CHPID被用來尋址通道路徑。CHPID被RESET CHANNEL PATH (重置通道路徑)的第二操作數地址指定,且被用來指定將被重置的通道路徑。當STORE SUBCHANNEL (存儲子通道)被執行時,設備經其可被訪問的通道路徑在通道信息塊(SCHIB)中被識別,每個設備由其相關CHPID識別。當需要識別特定通道路徑時,CHPID也可被用在操作符消息中。系統模型可提供多達256條通道路徑。通道路徑的最大數量和向通道路徑分配CHPID取決於系統模型。
[0550]子通道號
[0551]子通道號是用於尋址子通道的系統唯一的16位值。該值在通道子系統的子通道組內是唯一的。子通道被8個I/O指令尋址:CANCEL SUBCHANNEL (取消子通道)、CLEARSUBCHANNEL (清除子通道)、HALT SUBCHANNEL (暫停子通道)、M0DIFY SUBCHANNEL (修改子通道)、RESUME SUBCHANNEL(恢復子通道)、START SUBCHANNEL(開始子通道)、STORE SUBCHANNEL(存儲子通道)和TEST SUBCHANNEL (測試子通道)。相對於特定I/O設備的所有I/O功能由程序通過指定被分配給I/o設備的子通道來指定。每個子通道組中的子通道總是被分配單個範圍的連續編號內的子通道號。最低編號的子通道是子通道O。通道子系統的最高編號的子通道具有等於比提供的子通道的數量少I的子通道編號。在每個子通道組中最多可提供65536個子通道。通常,子通道編號僅被用於CPU程序和通道子系統之間的通信。
[0552]設備號
[0553]具有分配給其的I/O設備的每個子通道也包含被稱為設備號的參數。設備號是16位的值,其在設備被分配給子通道時被分配作為子通道的參數中的一個。設備號唯一地向程序標識設備。
[0554]設備號提供了識別設備的手段,這跟系統模型、配置或通道路徑協議施加的任何限制無關。設備號被用在關於設備的在系統和系統操作者之間發生的通信中。例如,設備號由系統操作者輸入,以指定將被用於初始程序加載的輸入設備。
[0555]編程說明:設備號在設備安裝時間被分配,且可具有任何值。但是,用戶必須遵守對設備號分配的任何限制,其可被控制程序、支持程序或特定的控制單元或I/O設備所要求。
[0556]設備標識符
[0557]設備標識符是由通道子系統使用以與I/O設備通信的地址,其對於程序來說不明顯(apparent)。所使用的設備標識符的類型取決於所提供的特定通道路徑類型和協議。每個子通道包含一個或多個設備標識符。
[0558]對於並行I/O接口類型的通道路徑,設備標識符被稱為設備地址且由一個8位值組成。對於ESCON I/O接口,設備標識符由4位控制單元地址和8位設備地址組成。對於FICON I/O接口,設備標識符由8位控制單元映像ID和8位設備地址組成。對於FICON轉換的I/O接口,設備標識符由4位控制單元地址和8位設備地址組成。
[0559]設備地址識別與子通道關聯的特定I/O設備(且在並行IO接口上是控制單元)。設備地址可識別例如特定磁帶驅動器、盤訪問裝置或傳輸線。範圍0-255中的任何編號可被分配為設備地址。
[0560]光纖通道擴展
[0561]光纖通道擴展(FCX)設施是可選的設施,其提供由傳輸控制字(TCW)組成的通道程序的形成,所述傳輸控制字指定傳輸命令控制塊(TCCB)和傳輸狀態塊(TSB)。TCCB包括傳輸命令區域(TCA),其包含多達30個形式為設備命令字(DCW)的I/O命令的列表。TCW和其TCCB可指定讀或寫操作。除了 IRB,TSB包含完成狀態和與TCW通道程序關聯的其他信
肩、O
[0562]FCX設施提供直接或間接指定TCCB、輸入數據存儲區域和輸出數據存儲區域中的任何一個或全部的能力。當存儲區域被直接指定時,TCW指定單個、連續存儲塊的位置。當存儲區域被間接指定時,TCW指定一個或多個傳輸間接數據地址字(TIDAW)的列表的位置。TIDAff列表和由列表中每個TIDAW指定的存儲區域被限制跨過4K字節的邊界。
[0563]FCX設施也提供詢問操作,其可被取消子通道(CANCELSUBCHANNEL)指令啟動以確定I/o操作的狀態。
[0564]I/O命令字
[0565]I/O命令字指定命令並包含與命令相關的信息。當FCX設施已被安裝時,存在兩種基本形式的I/o命令字,其是通道命令字(CCW)和設備命令字(DCW)。
[0566]CCW是8位元組的長度,並指定將被執行的命令。對於啟動特定操作的命令,CCW也指定與操作相關的存儲區域、數據字節的計數、當命令完成時將採取的動作、以及其他選項。所有的I/o設備識別CCW。
[0567]DCW長度是8位元組,並指定將被執行的命令、數據字節的計數和其他選項。支持FCX的I/o設備識別DCW。
[0568]傳輸命令字(TCW)
[0569]TCff指定傳輸命令控制塊(TCCB),其包含將被傳輸給I/O設備並由其執行的命令列表。TCW也指定用於TCCB中的命令的存儲區域,以及包含I/O操作的狀態的傳輸狀態塊(TSB)0
[0570]通道程序組織
[0571 ] 當FCX設施未被安裝時,有單個形式的通道程序,其是CCW通道程序。當FCX設施已被安裝時,存在額外形式的通道程序,其是TCW通道程序。兩種形式的通道程序都在以下描述。
[0572]CCff通道程序
[0573]由一個或多個CCW組成的通道程序被稱為CCW通道程序(CCP)。這樣的通道程序包含一個或多個CCW,其被邏輯連接並被安排為由通道子系統順序執行。
[0574]TCff通道程序
[0575]由單個TCW組成的通道程序被稱為TCW通道程序。TCW指定傳輸命令控制塊(TCCB),其包含I到30個DCW。TCCB內的DCW被邏輯連接,且被安排為順序執行。對於指定控制信息的DCW,TCCB也包含用於這些命令的控制信息。TCW也指定用於DCW的一個或多個存儲區域,所述DCW指定從設備或到設備的數據傳送,以及用於完成狀態的傳輸狀態塊(TSB)的位置。TCCB和用於數據傳送的存儲區域可被指定為連續或不連續的存儲。
[0576]TCff也指定用於完成狀態的TSB。
[0577]I/O操作的執行
[0578]I/O操作被啟動,且被具有4種類型的格式的信息控制:指令START SUBCHANNEL(開始子通道)、傳輸命令字、I/O命令字以及順序。START SUBCHANNEL指令由CPU執行,且是CPU程序的一部分,該CPU程序監督來自管理或處理I/O數據的其他程序的、用於I/O操作的請求流。
[0579]當START SUBCHANNEL被執行時,參數被傳遞給目標子通道,請求通道子系統利用與子通道關聯的I/o設備執行開始功能。通道子系統通過使用子通道處的信息執行開始功能,所述信息包括在START SUBCHANNEL指令的執行期間傳遞的信息,以找到到設備的可訪問的通道路徑。一旦設備已被選擇,對於CCW通道程序,I/O操作的執行通過通道子系統和I/O設備對CCW的解碼和執行而完成,或者對於TCW通道程序,通過由通道子系統傳輸TCCB到I/O設備,並由設備解碼並執行DCW而完成。I/O命令字以及傳輸命令字從主存儲器中獲取,儘管CCW DCff的命令代碼中的修改符位可為設備處的操作的執行指定取決於設備的條件。
[0580]特定於設備的操作,諸如重繞磁帶或將訪問機構放置在磁碟驅動上,由I/O設備解碼和執行的命令指定。命令可作為控制命令的命令代碼中的修改符位被傳遞到設備中,作為在控制或寫操作期間的數據被傳送給設備,或可通過其他手段對設備可用。
[0581]開始功能啟動
[0582]CPU程序利用指令START SUBCHANNEL啟動I/O操作。該指令將操作請求塊(ORB)的內容傳遞給子通道。如果ORB指定CCW通道程序,ORB的內容包括子通道鍵、將被執行的第一個CCW的地址和CCW的格式的指定。CCW指定將被執行的命令和將被使用的存儲區域(如有)。如果ORB指定TCW通道程序,ORB的內容包括子通道鍵和將被執行的TCW的地址。TCW指定TCCB,其包含將被傳輸給設備來執行的命令、將用於數據傳送的一個或多個存儲區域(如有),以及包含I/O操作的狀態的TSB。
[0583]當ORB內容已被傳遞給子通道,START SUBCHANNEL的執行完成。該指令執行的結果由程序狀態字中設置的條件代碼指示。
[0584]當設施變得可用且ORB指定CCW通道程序,通道子系統獲取第一個CCW並根據ORB中指定的格式位對其解碼。如果格式位是零,指定格式0CCW。如果格式位是1,指定格式ICCff0格式O和格式ICCW包含相同的信息,但是欄位在格式ICCW中被不同地安排,這樣31位地址可在CCW中被直接指定。當設施變得可用且ORB指定TCW通道程序,通道子系統獲取指定的TCW並將指定的TCCB傳輸給設備。由TCW指定用於傳送數據到設備或從設備傳送數據的存儲區域是64位地址。
[0585]子通道操作模式
[0586]存在兩種子通道操作模式。當FCX設施被安裝,且作為指定了 TCW通道程序的START SUBCHANNEL指令的執行結果,開始功能在子通道處被設置,子通道進入傳輸模式。子通道保持在傳輸模式,直到開始功能在子通道處被重置。在所有其他時刻,子通道處於命令模式。
[0587]路徑管理
[0588]如果ORB指定CCW通道程序,且第一個CCW傳遞特定的有效性測試且不具有被指定為I的暫停標誌,或者如果ORB指定TCW通道程序,且指定的TCW傳遞特定的有效性測試,通道子系統通過從可供選擇的通道路徑組選擇通道路徑,來嘗試設備選擇。識別設備標識符的控制單元將其自己邏輯連接到通道路徑並響應於其選擇。
[0589]如果ORB指定CCW通道程序,通道子系統通過通道路徑發送CCW的命令代碼部分,且設備以指示命令是否可被執行的狀態字節進行響應。此時控制單元可邏輯地從通道路徑斷開,或它可保持連接以啟動數據傳送。
[0590]如果ORB指定TCW通道程序,通道子系統使用指定的TCW中的信息以將TCCB傳送到控制單元。TCCB的內容被通道子系統忽略,且僅對控制單元和I/O設備有意義。
[0591]如果由於忙指示或通道不可操作條件的結果,沒有發生嘗試的選擇,通道子系統試圖通過可替換的通道路徑(如果其可用)選擇設備。當選擇已在所有可供選擇的路徑上被嘗試且忙條件持續,操作保持為待決直到通道空閒。如果通道不可操作條件在嘗試了設備選擇的一條或多條路徑上被檢測,程序被隨後的I/o中斷警告。I/O中斷發生在通道程序的執行時(假設設備在可選的通道路徑上被選擇)或作為因為路徑不可操作條件在嘗試了設備選擇的所有的通道路徑上被檢測執行被放棄的結果。
[0592]通道程序執行
[0593]如果命令在設備上被啟動且命令執行不要求任何數據被傳送到設備或從設備被傳送,設備可在收到命令代碼後立即信號通知操作結束。在涉及數據傳送的操作中,子通道被建立,這樣通道子系統將響應於來自設備的服務請求並採取對操作的進一步控制。
[0594]I/O操作可涉及到或來自由單個CCW或TCW指定的一個存儲區域的數據傳送,或者到或來自若干不連續的存儲區域的數據傳送。在後一種情況中,通常CCW列表被用於I/O操作的執行,每個CCW指定連續的存儲區域且CCW被數據連結(chaining)耦合。數據連結被CCW中的標誌指定,且使得通道子系統一旦當前CCW指定的存儲區域被耗盡或填充,獲取另一個CCW。由在數據連結上獲取的CCW指定的存儲區域屬於I/O設備處已在進行中的I/o操作,且當新的CCW被獲取時,I/O設備不會被通知。
[0595]在CCW格式中提供了規定,以使程式設計師可指定當CCW被解碼時,通道子系統儘快請求I/o中斷,由此向CPU程序通知連結已至少前進了跟CCW在通道程序前進的一樣遠。
[0596]為了補充CPU中的動態地址轉換,CCff間接數據尋址和修改的CCW間接數據尋址被提供。
[0597]當ORB指示CCW通道程序以及CCW間接數據尋址被使用時,CCff中的標誌指定間接數據地址列表被用於指定用於該CCW的存儲區域。每次到達存儲塊的邊界時,列表被引用以確定將被使用的下一個存儲塊。ORB指定每個存儲塊的大小是2K字節還是4K字節。
[0598]當ORB指定CCW通道程序且修改的CCW間接數據尋址被使用時,ORB中的標誌和CCff中的標誌指示修改的間接數據地址列表將被用來指定用於該CCW的存儲區域。每次達到指定用於存儲塊的字節計數時,引用該列表以確定下一個將被使用的存儲塊。與當間接數據尋址被使用不同,塊可在任何邊界上被指定,且長度可多達4K,假設跨過4K字節邊界的數據傳送未被指定的話。
[0599]當ORB指定TCW通道程序且傳輸間接數據尋址被使用,TCW中的標誌指示傳輸間接數據地址列表是否被使用以指定包含TCCB的存儲區域,以及傳輸間接數據地址列表是否被使用以指定與TCCB中的DCW關聯的數據存儲區域。每次達到指定用於存儲塊的字節的計數時,對應的傳輸間接數據地址列表被引用以確定將被使用的下一個存儲塊。
[0600]CCff間接數據尋址和修改的CCW間接數據尋址允許基本上相同的CCW序列被用於利用在CPU中活動的動態地址轉換運行的程序,就像其在CPU利用等效的連續真實存儲來運行的情況下將被使用那樣。CCW間接數據尋址允許程序指定數據塊具有多達264-1的絕對存儲地址,而不考慮是否在ORB中指定了格式O或格式1CCW。修改的CCW間接數據尋址允許程序指定數據塊具有多達264-1的絕對存儲地址,而不考慮是否在ORB中指定了格式O或格式1CCW。
[0601]一般而言,I/O操作或操作鏈的執行涉及多達3級的參與:
[0602]1.除了由於CPU和通道子系統的集成引起的效果,CPU在START SUBCHANNEL的執行期間是忙的,其持續直到尋址的子通道已被傳遞ORB內容。
[0603]2.對於新的START SUBCHANNEL,從接收到ORB內容直到初級中斷條件在子通道處被清除,子通道是忙的。
[0604]3.從設備處啟動第一個操作直到子通道變得暫停或次級中斷條件被放置在子通道處,I/O設備是忙的。在暫停子通道的情況下,當恢復執行暫停的通道程序時,設備再次變得忙。
[0605]I/O操作的結束[0606]I/O操作的結束通常由兩種狀態條件指示:通道端和設備端。通道端條件指示I/O設備已接收或提供與操作相關的所有數據,且不再需要通道子系統設施。該條件被稱為初級中斷條件,且在該情況下通道端是初級狀態。通常,初級中斷條件是涉及I/o操作且信號通知I/o操作或I/O操作鏈的子通道處處的結束的任何中斷條件。
[0607]設備端信號指示I/O設備已結束執行,且準備好執行另一操作。該條件被稱為次級中斷條件,且該情況下的設備端處於次級狀態。通常次級中斷條件是涉及I/o操作且信號通知I/o操作或操作鏈的設備處的結束的任何中斷條件。次級中斷條件可與初級中斷條件並行發生或晚於其發生。
[0608]與初始或次級中斷條件並行地,通道子系統和/或I/O設備都可提供不平常情況的指示。
[0609]信號通知I/O操作的結束的條件可由I/O中斷引起程序的注意,或者當CPU被禁止用於I/o中斷時,通過通道子系統的編程詢問來引起程序的注意。在前一種情況下,這些條件造成存儲I/o中斷代碼,其包含關於中斷源的信息。在後一種情況下,中斷代碼被存儲為測試待決中斷(TESTPENDING INTERRUPTION)的執行結果。
[0610]當識別初級中斷條件時,通道子系統試圖通過中斷請求的方式向程序通知子通道包含描述子通道處的I/o操作的結束的信息。對於命令模式中斷,該信息標識使用的最後一個CCW,且可提供其剩餘字節計數,由此描述所使用的主存儲器的區段。對於傳輸模式中斷,該信息標識當前TCW以及與通道程序關聯的TSB,其包含關於I/O操作的額外狀態,諸如剩餘字節計數。除了關於通道程序的信息,通道子系統和I/o設備都可提供作為初始或次級中斷條件的一部分的不平常情況的額外指示。包含在子通道處的信息可被測試子通道(TEST SUBCHANNEL)的執行或存儲子通道(STORE SUBCHANNEL)的執行存儲。當被存儲時,該信息被稱為子通道狀態字(SCSW)。
[0611]當使用CCW通道程序時的連結
[0612]當ORB指定CCW通道程序時,設施被提供,以使程序利用單個START SUBCHANNEL指令啟動I/o操作鏈的執行。噹噹前CCW指定命令連結且在執行期間沒有檢測到不平常條件時,接收到設備端信號使得通道子系統獲取新的CCW。如果CCW通過特定的有效性測試且暫停標籤沒有在新的CCW中被指定為1,新命令的執行在設備處被啟動。如果CCW未能通過有效性測試,新命令不被啟動,命令鏈被暫停,且與新CCW關聯的狀態引起中斷條件的產生。如果暫停標誌被指定為I且該值由於暫停控制(相關ORB的字I的位4)中的I值而是有效的,新命令的執行不會被啟動,且命令鏈被結束。
[0613]新命令的執行由通道子系統以與之前操作相同的方式被啟動。使得在指定命令鏈的CCW引起的操作的結束時發生的結束信號不可用於程序,當另一個I/O操作被命令鏈啟動時,通道子系統繼續通道程序的執行。但是如果已檢測到不平常的條件,抑制命令鏈,終止通道程序,生成中斷條件,且使得引起終止的結束信號對程序可用。
[0614]暫停和恢復功能向程序提供對於通道程序的執行的控制。暫停功能的啟動由ORB中的暫停控制位的設置控制。當ORB中的暫停控制位是I且第一個CCW中或命令鏈期間獲取的CCW中的暫停標誌是I時,暫停功能在通道程序執行期間被信號通知給通道子系統。
[0615]當通道子系統獲取具有被有效地指定為I (由於ORB中的暫停控制位的I值)的暫停標誌的CCW時,發生暫停。該CCW中的命令不被發給I/O設備,且設備被信號通知命令鏈被結束。隨後的恢復子通道(RESUME SUBCHANNEL)指令向通道子系統通知產生暫停的CCW可能已被修改,且該通道子系統必須重新獲取CCW並檢查暫停標誌的當前設置。如果在該CCff中暫停標誌被發現是零,通道子系統恢復命令鏈針對I/O設備的執行。
[0616]使用TCW通道程序時的連結
[0617]當ORB指定TCW通道程序時,設施也被提供以便程序利用單個START SUBCHANNEL指令啟動設備操作鏈的執行。命令連結可被指定用於由單個TCW指定的那些DCW。噹噹前DCW指定命令鏈且在操作期間沒有檢測到不平常條件時,識別DCW的成功執行使得當前TCCB中的下一個DCW被處理。
[0618]如果下一個DCW通過特定的有效性測試,新命令的執行在設備處啟動,且DCW變成當前DCW。如果DCW未能通過有效性測試,新命令不被啟動,命令連結被抑制,通道程序被終止,且與新DCW關聯的狀態引起中斷條件被生成。
[0619]新命令的執行以與之前的操作相同的方式被啟動。使得發生在由不是最後指定的DCff的DCW引起的操作的結束處的結束信號不對程序可用。當另一個I/O操作被命令鏈啟動時,通道程序的執行繼續。但是如果檢測到不平常條件時,命令鏈被抑制,通道程序被終止,中斷條件被生成,且使得狀態對識別不平常條件的程序可用。
[0620]I/O操作的提前結束
[0621]通道程序執行可被CANCEL SUBCHANNEL, HALT SUBCHANNEL 或 CLEAR SUBCHANNEL提前終止。如果通道程序沒有在設備處被啟動,CANCEL SUBCHANNEL的執行使得通道子系統終止在子通道處的開始功能。當開始功能被CANCEL SUBCHANNEL的執行終止時,響應於CANCEL SUBCHANNEL指令,通道子系統設置條件代碼(LHALT SUBCHANNEL的執行使得通道子系統發出暫停信號給I/O設備,並終止子通道處的通道程序執行。當通道程序執行被HALTSUBCHANNEL的執行終止時,通過I/O中斷請求的方式,程序被通知終止。當子通道處於命令模式時,當設備呈現用於中斷的操作的狀態時,中斷請求生成。當子通道處於傳輸模式時,中斷請求被立即生成。但是如果在命令結鏈期間在設備端接收到但在下一個命令被傳送給設備之前,暫停信號被發出給設備,在設備被信號通知後生成中斷請求。在後一種情況中,SCSW的設備狀態欄位將包含零。CLEAR SUBCHANNEL的執行從子通道清除執行中的通道程序的指示,使得通道子系統發出清除信號到I/O設備,並使得通道子系統生成I/O中斷請求以向程序通知清除功能的完成。
[0622]I/O 中斷
[0623]引起I/O中斷請求的條件對於CPU中的活動是異步的,且多於一個的條件可同時發生。條件被保留在子通道,直到被TEST SUBCHANNEL或CLEAR SUBCHANNEL清除,或被I/O系統重置。
[0624]當I/O中斷條件已被通道子系統識別並在子通道被指示,使得I/O中斷請求變得對於在子通道處指定的I/o中斷子通道是待決的。使得中斷對其變得待決的I/O中斷子類通過使用MODIFY SUBCHANNEL而被編程控制。待決的I/O中斷可被任何針對來自其I/O中斷子類的中斷被使能的CPU接受。每個CPU在控制寄存器6中具有8個掩碼位,其控制該CPU針對8個I/O中斷子類中的每個的使能,其中,I/O掩碼,即PSW中的位6,是用於CPU的主I/O中斷掩碼。
[0625]當I/O中斷發生在CPU時,I/O中斷代碼被存儲在該CPU的I/O通信區域,且I/O中斷請求被清除。I/o中斷代碼識別子通道,對該子通道中斷是待決的。引起中斷請求產生的條件可隨後被TEST SUBCHANNEL或STORE SUBCHANNEL顯式地從子通道獲取。
[0626]當對應地I/O中斷子類被使能但PSW使得I/O中斷被禁止時,待決的I/O中斷請求也可被TEST PENDING INTERRUPTION清除,或當CPU針對來自對應的I/O中斷子類的I/
O中斷被禁止時,該請求也可被TEST SUBCHANNEL禁止。待決的I/O中斷請求也可被CLEARSUBCHANNEL清除。CLEAR SUBCHANNEL和TEST SUBCHANNEL兩者也清除子通道處的保留的中斷條件。
[0627]通常,除非中斷請求被CLEAR SUBCHANNEL清除,程序發出TEST SUBCHANNEL以獲取關於操作執行的信息。
[0628]清除子通道
[0629]指定的子通道被清除,當前開始或停止功能(如有)在指定的子通道處被終止,且通道子系統被信號通知以在指定的子通道和在相關設備處異步地執行清除功能。
[0630]通用寄存器I包含子系統識別字(SID),其指定將被清除的子通道。
[0631]如果開始或暫停功能正在進行,其在子通道處終止。
[0632]使得子通道不再狀態待決。所有的活動,如SCSW的活動控制欄位所指示的,在子通道處被清除,除非使得子通道變得清除待決。進行中的任何功能,如在SCSW的功能控制欄位中指示的,在子通道處被清除,除了由於該指令的執行而將被執行的清除功能。
[0633]當子通道在傳輸模式中運行且條件代碼2被設置,CPU可信號通知通道子系統異步地執7TT詢問功能,並結束指令。
[0634]通道子系統被信號通知異步地執行清除功能。清除功能在以下「相關功能」小節中被概述,並在此後被詳細描述。
[0635]條件代碼O被設置以指示上述動作已被採取。
[0636]相關功能
[0637]在CLEAR SUBCHANNEL執行之後,通道子系統異步地執行清除功能。如果條件允許,通道子系統選擇通道路徑,並試圖發出清除信號給設備以終止I/O操作(如有)。子通道隨後變為狀態待決。通道子系統遇到的排除發出清除信號到設備的條件不會阻止子通道變得狀態待決。
[0638]當由於執行清除功能,子通道變為狀態待決時,與相關設備的數據傳送(如有)已被終止。當產生的狀態被TEST SUBCHANNEL清除時存儲的SCSW具有存儲為I的清除功能位。如果通道子系統可確定清除信號被發出給設備,清除待決位作為零被存儲在SCSW中。否則,清除待決位被存儲為1,且其他指示被提供,其描述所遇到的條件的進一步細節。
[0639]對於被CLEAR SUBCHANNEL終止的開始功能,沒有積聚測量數據,且設備連接時間沒有被存儲在用於子通道的擴展狀態字中。
[0640]特殊條件
[0641]當子通道對於CLEAR SUBCHANNEL不可操作時,條件代碼3被設置,且不採取其他動作。當子通道沒有在通道子系統中被提供、沒有有效設備號被分配給它、或未被使能時,子通道對於CLEAR SUBCHANNEL不可操作用。
[0642]CLEAR SUBCHANNEL可遇到下述或下列程序異常。當多子通道組設施未被安裝時,通用寄存器I的位32-47必須包含OOOlhex ;否則,操作數異常被識別。[0643]當多子通道組設施已被安裝時,通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,且位47必須包含值I ;否則,操作數異常被識別。
[0644]產生的條件代碼:
[0645]O功能被啟動
[0646]I —
[0647]2 —
[0648]3不可操作
[0649]程序異常:
[0650].操作數
[0651]?特許操作
[0652]清除功能
[0653]隨著CLEAR SUBCHANNEL的執行,通道子系統執行清除功能。清除功能的執行包括
(I)執行路徑管理操作,(2)修改子通道處的欄位,(3)發出清除信號給相關設備,以及(4)使得子通道變為狀態待決,指示清除功能的完成。
[0654]清除功能路徑管理
[0655]路徑管理操作作為清除功能的一部分被執行,以檢查用於相關子通道的通道路徑條件,並試圖選擇可用的通道路徑,在其上清除信號可被發出給相關設備。
[0656]通道路徑條件按以下順序被檢查:
[0657]1.如果通道子系統活動地與將被信號通知的設備通信或嘗試建立與其的活動通信,選擇使用中的通道路徑。
[0658]2.如果通道子系統正在接受來自將被信號通知的設備的不再忙指示(其將不會引起中斷條件被識別)的過程中,且相關的子通道對於任何通道路徑沒有忠誠度(allegiance),選擇使用中的通道路徑。
[0659]3.如果相關的子通道對於一通道路徑具有專用忠誠度,該通道路徑被選擇。
[0660]4.如果相關的子通道對於一條或多條通道路徑具有工作忠誠度,選擇這些通道路徑中的一條。
[0661 ] 5.如果相關子通道對於任何通道路徑沒有忠誠度,如果最後使用的通道路徑被指示,且如果該通道路徑可供選擇,該通道路徑被選擇。如果該通道路徑不可供選擇,則沒有通道路徑被選擇,或通道路徑從可供選擇的一組通道路徑(如有)中被選擇(儘管沒有指示最後使用的通道路徑)。
[0662]6.如果相關子通道對於任何通道路徑沒有忠誠度,如果沒有指示最後使用的通道路徑,且如果存在可供選擇的一條或多條通道路徑,選擇這些通道路徑中的一條。
[0663]如果以上列出的通道路徑條件都不試用,不選擇通道路徑。對於項目4,對於位於指定條件下的項目5,且對於項目6,通道子系統從一組通道路徑中選擇通道路徑。在這些情況下,如果以下條件不適用,通道子系統可嘗試選擇通道路徑:
[0664]1.通道路徑終止條件對於通道路徑存在。
[0665]2.對於並行或ESCON通道路徑:另一條子通道對於通道路徑具有有效忠誠度。
[0666]對於FICON通道路徑:通道路徑當前被使用以與最大數量的可具有並行活動通信的子通道通信。[0667]3.將被信號通知的設備被附加到類型I控制單元,且用於被附加到相同的控制單元的另一個設備的子通道對於相同的通道路徑具有忠誠度,除非該忠誠度是工作忠誠度,且初級狀態已被該子通道接受。
[0668]4.將被信號通知的設備被附加到類型3控制單元,且用於被附加到相同的控制單元的另一個設備的子通道對於相同的通道路徑具有專用忠誠度。
[0669]清除功能子通道修改
[0670]在清除功能執行期間,子通道處的路徑管理控制指示被修改。有效地,該修改在嘗試選擇通道路徑後但是在嘗試選擇設備以發出清除信號前發生。被修改的路徑管理控制指示如下:
[0671]1.子通道處的所有8個可能的通道路徑的狀態被設置為對於該子通道是可操作的。
[0672]2.最後使用的路徑指示被重置以指示沒有最後使用的通道路徑。
[0673]3.路徑不可操作條件(如有)被重置。
[0674]清除功能信令和完成
[0675]在嘗試選擇通道路徑和路徑管理控制欄位的修改後,如果條件允許,通道子系統嘗試選擇設備以發出清除信號。與子通道和選擇的通道路徑(如有)關聯的條件影響(I)是否做出嘗試以發出清除信號,以及(2)嘗試發出清除信號是否成功。不考慮這些條件,子通道隨後被設置狀態待決,且清除功能的執行完成。這些條件及其對於清除功能的效果被如下描述:
[0676]不嘗試發出清除信號:如果存在任何以下條件,通道子系統不試圖發出清除信號給設備:
[0677]1.未選擇通道路徑。
[0678]2.選擇的通道路徑不再可供選擇。
[0679]3.對於選定的通道路徑存在通道路徑終止條件。
[0680]4.對於並行和ESCON通道路徑:選定的通道路徑當前被使用以活動地與不同設備通信。對於FICON通道路徑:選定的通道路徑當前被使用以活動地與最大數量的可具有並行活動通信的設備通信。
[0681]5.將被信號通知的設備被附加到類型I控制單元,且用於被附加到相同的控制單元的另一個設備的子通道對於相同的通道路徑具有忠誠度,除非該忠誠度是工作忠誠度且初級狀態已被該子通道接受。
[0682]6.將被信號通知的設備被附加到類型3控制單元,且用於被附加到相同的控制單元的另一個設備的子通道對於相同的路徑具有專用忠誠度。
[0683]如果存在上述任何條件,子通道保持清除待決且被設為狀態待決,且清除功能的執行完成。
[0684]嘗試發出清除信號沒有成功:當通道子系統試圖發出清除信號給設備時,由於以下條件,嘗試可能不成功:
[0685]1.當通道子系統試圖選擇設備以發出清除信號時,控制單元或設備提示忙條件。
[0686]2.當通道子系統試圖選擇設備以發出清除信號時,路徑不可操作條件被識別。
[0687]3.當通道子系統試圖發出清除信號時,遇到錯誤條件。[0688]如果任何上述條件存在,且通道子系統確定試圖發出清除信號不成功,或不能確定嘗試是否成功,子通道保持清除待決,且被設為狀態待決,且清除功能的執行完成。
[0689]嘗試發出清除信號是成功的:當通道子系統確定嘗試發出清除信號是成功的,子通道不再是清除待決的,且被設為狀態待決,且清除功能的執行完成。當子通道變為狀態待決時,針對相關設備的I/O操作(如有)已被終止。
[0690]編程說明:在清除功能執行後,被設備呈現給通道子系統的任何非零狀態,除了僅控制單元端之外,作為未被請求的告警狀態被傳送給程序。包含僅控制單元端或零狀態的未被請求的狀態不會被呈現給程序。
[0691]修改子通道
[0692]包含在子通道信息塊(SCHIB)中的信息被放置在子通道處的程序可修改欄位。結果,對於該子通道,程序影響相對於清除、暫停、恢復和開始功能和特定I/o支持功能的I/O處理的特定方面。
[0693]通用寄存器I包含子系統識別字(SID),其指定將被修改的子通道,如被SCHIB的特定欄位指定的。第二操作數地址是SCHIB的邏輯地址,且必須被指定在字邊界上;否則,識別規格異常。
[0694]由於SCHIB信息在子通道中的放置而可被影響的通道子系統操作是:
[0695].I/O 處理(E 欄位)
[0696].中斷處理(中斷參數和ISC欄位)
[0697].路徑管理(D、LPM和POM欄位)
[0698].監視和地址界限檢驗(測量-塊索弓丨、LM和麗欄位)
[0699].測量塊格式控制(F欄位)
[0700].擴展測量字模式使能(X欄位)
[0701].並行感測設施(S欄位)
[0702].測量塊地址(MBA )
[0703]字I的位0、6和7,以及SCHIB操作數的字6的位0_28必須是零,且字I的位9和10必須不同時為I。當擴展I/O測量塊設施被安裝,且格式I測量塊被指定時,字11的位26-31必須被指定為零。當擴展I/O測量塊設施未被安裝時,字6的位29必須被指定為零;否則,識別操作數異常。當擴展的I/O測量字設施未被安裝時,或被安裝但未被使能時,字6的位30必須被指定為零;否則,操作數異常被識別。SCHIB的剩餘欄位被忽略,且不影響MODIFY SUBCHANNEL 的處理。
[0704]設置條件代碼O以指示來自SCHIB的信息已被放置在子通道處的程序可修改欄位中,除非當指定子通道處的設備號有效位(V)是零,則條件代碼O被設置,且來自SCHIB的信息不被放置在程序可修改欄位中。
[0705]特殊條件
[0706]當子通道是狀態待決時,條件代碼I被設置,且不採取其他動作。
[0707]當清除、暫停或開始功能在子通道處進行時,條件代碼2被設置,且不採取其他動作。
[0708]當子通道對於MODIFY SUBCHANNEL不可操作時,條件代碼3被設置且不採取其他動作。當子通道在通道子系統中沒有被提供時,子通道對於MODIFY SUBCHANNEL不可操作。[0709]MODIFY SUBCHANNEL可遇到如下所述或所列程序異常。
[0710]在SCHIB的字I中,位0、1、6和7必須是零,且當地址界限檢驗設施被安裝時,位9和10必須不都為零。在SHICB的字6中,位0-28必須是零。否則,識別操作數異常。
[0711]當擴展的I/O測量塊設施被安裝且格式I測量塊被指定時,字11的位26-31必須被指定為零;否則,識別操作數異常。當擴展的I/o測量塊設施未被安裝時,字6的位29必須被指定為零;否則,操作數異常被識別。當擴展的I/O測量字設施未被安裝時,或被安裝但未被使能時,字6的位30必須被指定為零;否則,操作數異常被識別。
[0712]當多子通道組設施未被安裝時,通用寄存器I的位32-47必須包含OOOlhex;否貝U,操作數異常被識別。
[0713]當多通道組設施被安裝時,通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,且位47必須包含值I ;否則,操作數異常被識別。
[0714]第二操作數必須在字邊界上指定;否則,規格異常被識別。MODIFY SUBCHANNEL的執行在所有尋址和保護異常上被抑制。
[0715]產生的條件代碼:
[0716]O功能完成
[0717]I狀態待決
[0718]2 忙
[0719]3不可操作`
[0720]程序異常:
[0721]?訪問(獲取,操作數2 )
[0722].操作數
[0723].特許操作
[0724].規格
[0725]編程說明:
[0726]1.如果當相關子通道被禁止時設備信號通知I/O錯誤告警,通道子系統發出清除信號給設備並丟棄I/O錯誤告警指示,而不生成I/O中斷條件。
[0727]2.如果當相關子通道被禁止時設備呈現未請求的狀態,該狀態被通道子系統丟棄而不生成I/o中斷條件。但是,如果呈現的狀態包含單元檢驗,通道子系統發出用於相關子通道的清除信號,且不生成I/O中斷條件。當程序使用MODIFY SUBCHANNEL來使能子通道時,這應被考慮。例如,當子通道被禁止時存在的相關設備上的介質可能已被替換,且因此程序應當驗證該介質的完整性。
[0728]3.建議當MODIFY SUBCHANNEL設置條件代碼O時,程序通過隨後發出STORESUBCHANNEL來檢驗子通道的內容。使用STORE SUBCHANNEL是確定指定的子通道是否改變的方法。MODIFY SUBCHANNEL設置條件代碼O之後未能檢驗子通道可導致程序不會預期發生的條件。
[0729]START SUBCHANNEL
[0730]通道子系統被信號通知異步執行用於相關設備的開始功能,且包含在指定的ORB中的執行參數被放置在指定的子通道。
[0731]通用寄存器I包含子系統識別字,其指定將被開始的子通道。第二操作數地址是ORB的邏輯地址,且必須在字邊界上指定;否則,規格異常被識別。
[0732]包含在ORB中的執行參數被放置在子通道處。
[0733]當START SUBCHANNEL被執行時,子通道是狀態待決,僅具有次級狀態,且擴展狀態字格式位(L)是零,狀態待決條件在子通道處被丟棄。
[0734]使子通道變得開始待決,且開始功能在子通道處被指示。如果第二操作數指定命令模式0RB,子通道保持在命令模式中。如果第二操作數指定傳輸模式0RB,子通道進入到傳輸模式。當子通道進入到傳輸模式時,如果沒有之前的專用忠誠度存在,LPUM被設為零;否則LPUM不被改變。
[0735]邏輯地,在設置條件代碼O之前,子通道處的路徑不可操作條件(如有)被清除。
[0736]通道子系統被信號通知異步地執行開始功能。開始功能在以下小節「相關功能」中被概念,且在以後被詳細描述。
[0737]條件代碼O被設置以指示已採取上述動作。
[0738]相關功能
[0739]在START SUBCHANNEL執行後,通道子系統異步地執行開始功能。
[0740]檢驗ORB內容的有效性,除了必須包含全零的欄位。在一些模型上,必須包含零的ORB的欄位被異步檢驗,而不是在指令的執行期間。當無效欄位被異步檢測時,子通道變為狀態待決,具有初級、次級和告警狀態,且延遲條件代碼I和程序檢驗被指示。在這種情況下,I/o操作或I/O操作鏈不在設備處被啟動,且當SCSW被TEST SUBCHANNEL的執行清除時,條件被存儲為I的開始待決位指不。
[0741]在一些模型上,異步地而不是在指令的執行期間測試路徑可用性。當沒有通道路徑可供選擇時,子通道變為狀態待決,具有初級和次級狀態,且延遲條件代碼3被指示。I/O操作或I/O操作鏈不在設備處被啟動,且當SCCW被TEST SUBCHANNEL的執行清除時,該條件被存儲在為I的開始待決位指不。
[0742]如果條件允許,選擇通道路徑,且啟動在ORB中指定的通道程序的執行。
[0743]特殊條件
[0744]當START SUBCHANNEL被執行時且子通道是狀態待決時,條件代碼I被設置,且不採取其他動作。在一些模型上,當子通道僅以次級狀態是狀態待決時,條件代碼I不被設置;反而,狀態待決條件被丟棄。
[0745]當開始、暫停或清除功能當前正在子通道處進行時,條件代碼2被設置,且不採取其他動作。
[0746]當子通道對於START SUBCHANNEL不可操作時,條件代碼3被設置,且不採取其他動作。如果子通道在通道子系統中沒有被提供,沒有與其相關的有效設備號或未被使能,子通道對於START SUBCHANNEL不可操作。
[0747]在一些模型上,當沒有通道路徑可供選擇時,子通道對於START SUBCHANNEL也不可操作。在這些模型中,缺少可用通道路徑作為START SUBCHANNEL執行的一部分被檢測。在其他模型上,通道路徑可用性僅作為異步開始功能的一部分被測試。
[0748]START SUBCHANNEL可遇到以下所述或所列的程序異常。
[0749]在命令模式ORB的字I中,位26-30必須是零,且在命令模式ORB的字2中,位O必須是零。否則,在一些模型上,操作數異常被識別。在其他模型上,I/o中斷條件被生成,指示程序檢驗,作為異步開始功能的一部分。
[0750]START SUBCHANNEL也可遇到以下列出的程序異常。當多子通道組設施未被安裝時,通用寄存器I的位32-47必須包含OOOlhex ;否則,操作數異常被識別。
[0751]當多子通道組設施被安裝時,通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,且位47必須包含值I ;否則,操作數異常被識別。
[0752]第二操作數必須在字邊界上指定;否則,規格異常被識別。STARTSUBCHANNEL的執行在所有尋址和保護異常上被抑制。
[0753]產生的條件代碼:
[0754]O功能啟動
[0755]I狀態待決
[0756]2 千亡
[0757]3不可操作
[0758]程序異常
[0759].訪問(獲取,操作數2 )
[0760].操作數
[0761]?特許操作
[0762].規格`
[0763]開始功能和恢復功能
[0764]開始和恢復功能如下所述啟動I/O操作。開始功能適用於在命令模式或傳輸模式中操作的子通道。恢復功能僅適用於在命令模式中操作的子通道。
[0765]在執行START SUBCHANNE和RESUME SUBCHANNEL後,通道子系統分別執行開始和恢復功能,以針對相關設備啟動I/o操作。開始或恢復功能的執行包括:(I)執行路徑管理操作,(2)以相關設備執行I/O操作或I/O操作鏈,以及(3)使得子通道變為狀態待決,指示開始功能的完成。開始功能啟動在ORB中指定的通道程序的執彳丁,ORB轉而被指定為STARTSUBCHANNEL的操作數,這與在引起暫停的CCW開始啟動執行暫停的通道程序(如有)的恢復功能相反;否則,執行恢復功能就好象它是開始功能。
[0766]開始功能和恢復功能路徑管理
[0767]在執行開始或恢復功能時由通道子系統來執行路徑管理,以選擇可被用於設備選擇的可用通道路徑,以使用該設備啟動I/O操作。採取的動作如下:
[0768]1.如果子通道目前是開始待決且設備是活動的,開始功能在子通道處保持待決,直到從相關的設備接受用於之前的開始功能的次級狀態並且使該子通道獨自開始待決。當該狀態被接受並且沒有描述告警中斷條件,不使子通道變為狀態待決,並且隨後啟動執行待決開始功能。如果狀態描述了告警中斷條件,子通道變成具有次級和告警狀態的狀態待決,待決開始功能不會啟動,延遲條件代碼I被設置,並且開始待決位保持為I。如果子通道當前獨自開始待決,如下所述啟動執行開始功能。
[0769]2.如果在子通道上存在對通道路徑的專用忠誠度,通道子系統選擇該路徑以用於設備選擇。如果在嘗試選擇設備時遇到忙條件並且在子通道上存在專用忠誠度,則開始功能保持待決,直到針對該通道路徑重置忙的內部指示。當忙的內部指示被重置,在該通道路徑上啟動執行待決的開始功能。[0770]3.如果沒有通道路徑可供選擇並且在子通道中不存在對通道路徑的專用忠誠度,則通道路徑不會被選擇。
[0771]4.如果已經嘗試了所有可供選擇的通道路徑,並且其中一個或多個被用於與其他設備的活動地通信,或者,如果通道子系統在這些通道路徑的一個或多個上遇到控制單元忙或設備忙條件,或在這些通道路徑的一個或多個上遇到這些條件的組合,開始功能在子通道上保持待決,直到通道路徑、控制單元或設備在適當的情況下變得可用。
[0772]5.如果(I)在通道路徑上啟動開始功能,設備連接到類型I控制單元,並且(2)沒有其他設備連接到相同的控制單元,該控制單元的子通道具有對相同通道路徑的專用忠誠度或者對相同通道路徑的工作忠誠度,其中,還未接收對於該子通道的初級狀態,則選擇該通道路徑,如果它可供選擇的話;否則,該通道路徑不被選擇。但是,如果到該設備的另一通道路徑可供選擇並且不存在如上所述的忠誠度,則通道路徑被選擇。如果沒有其他通道路徑可供選擇,如果合適,開始和恢復功能保持待決,直到通道路徑變得可用。
[0773]6.如果設備連接到類型3控制單元,並且如果至少一個其他設備連接到相同的控制單元,該控制單元的子通道具有對相同通道路徑的專用忠誠度,則可以選擇可供選擇的另一通道路徑,或者開始功能保持待決,直到用於該其他設備的專用忠誠度被清除。
[0774]7.如果選擇了通道路徑,並且在設備選擇以啟動執行待決的CCW通道程序的第一命令或者傳輸待決的TCW通道程序的TCCB期間接收到忙指示,則接收到忙指示的通道路徑不會被再次用於該設備或控制單元(取決於接收到的設備忙或控制單元忙指示),直到忙的內部指示被重置。
[0775]8.如果在嘗試選擇設備以啟動執行為開始指定或者CCW通道程序的恢復功能所隱含的第一命令或者啟動針對TCW通道程序的開始功能的TCCB的傳輸的期間(如上動作7中所述),通道子系統接收到忙指示,它執行下列動作中的一個:
[0776]a.如果設備被指定為在多路徑模式下操作並且接收到的忙指示是設備忙,則開始或恢復功能保持待決,直到忙的內部指示被重置。
[0777]b.如果設備被指定為在多路徑模式下操作並且接收到忙指示是控制單元忙,或者如果設備被指定為在單路徑模式下操作,則通道子系統通過選擇可供選擇的替代通道路徑來嘗試設備選擇,並繼續路徑管理操作直到發起開始或恢復功能或者已經在可供選擇的所有通道路徑上嘗試設備選擇。如果在所有可供選擇的通道路徑都已被選擇之後,通道子系統還未啟動開始或恢復功能,則開始或恢復功能保持待決,直到忙的內部指示被重置。
[0778]c.如果子通道具有專用忠誠度,則應用15-20頁上的動作2。
[0779]9.當在嘗試選擇以傳送CCW通道程序的第一個命令或者傳送TCW通道程序的TCCB的期間,設備看起來不可操作且相應的通道路徑對於子通道可以操作時,路徑不可操作條件被識別,並且通道路徑的狀態在子通道處從對於子通道可操作改變為對於子通道不可操作。子通道上的路徑不可操作條件(如有)被保留,直到子通道接下來變為清除待決、開始待決或恢復待決(如果子通道被暫停),此時路徑不可操作條件被清除。但是,如果相應的通道路徑對於子通道不可操作,路徑不可操作條件不被識別。當在嘗試選擇以在可供選擇的通道路徑上傳送第一個命令或TCCB期間設備看起來不可操作時,出現下列動作中的一個:
[0780]a.如果對該通道路徑存在專用忠誠度,則它是可供選擇的唯一通道路徑;因此,放棄啟動開始或恢復功能的進一步嘗試,且中斷條件被識別。
[0781]b.如果不存在專用忠誠度並且存在還未被嘗試的可供選擇的替代通道路徑,則選擇其中一個通道路徑以嘗試設備選擇並傳送CCW通道程序的第一個命令或TCW通道程序的TCCB。
[0782]c.如果不存在專用忠誠度、沒有還未被嘗試的可供選擇的替代通道路徑、並且設備看起來在已經嘗試的至少一個通道路徑上看來可操作,則開始和恢復功能在子通道上保持待決,直到通道路徑、控制單元、或設備在適當的情況下變得可用。
[0783]d.如果不存在專用忠誠度、沒有還未被嘗試的可供選擇的替代通道路徑、並且設備看起來在已經嘗試的所有通道路徑上看起來不可用,則放棄啟動開始或恢復功能的進一步嘗試,且中斷條件被識別。
[0784]10.當子通道是活動的並且將針對設備啟動I/O操作,如果在子通道上未指定多路徑模式,則根據LPUM指示來進行所有設備選擇。例如,如果為CCW通道程序指定了命令連結,則通道子系統在相同通道路徑上傳送描述了的I/O操作鏈的第一個和所有後續命令。
[0785]I/O操作的執行
[0786]在選擇通道路徑後,如果條件允許,通道子系統啟動執行針對相關設備的I/O操作。額外的I/o操作的執行可以在第一次I/O操作的啟動和執行之後。
[0787]對於在命令模式下操作的子通道,通道子系統可以執行七種類型的命令:寫入、讀取、往回讀、控制、感知、感知ID以及通道中的傳送。除了通道中的傳送,每個命令啟動相應的I/O操作。除了通道程序執行在子通道上暫停的期間,從接受第一命令直到在子通道上識別初級中斷條件,子通道都是活動的。如果在接受第一命令之前識別初級中斷條件,子通道不會變成活動的。通常,初級中斷條件是由通道結束信號或者在命令連結的情形下是由用於鏈中最後的CCW的通道結束信號引起的。設備是活動的,直到在子通道中識別次級中斷條件。通常,次級中斷條件是由設備結束信號或者在命令連結的情形下是由用於鏈中最後的CCW的設備結束信號引起的。對於在傳輸模式下操作的子通道,通道子系統可以傳輸六種類型的命令來執行:寫入、讀取、控制、感知、感知ID以及詢問。每種命令啟動相應的設備操作。當一個或多個命令在TCCB中被發送到I/O設備,子通道保持開始待決,直到出現初級狀態。
[0788]編程說明
[0789]在單路徑模式下,用於I/O操作或者I/O操作鏈的命令、數據和狀態的所有傳送發生在第一個命令在其上被傳送到設備的通道路徑上。
[0790]當設備安裝了動態重連特徵,可以在多路徑模式下執行I/O操作或I/O操作鏈。為了在多路徑模式下操作,之前必須已經針對SCHIB的字I的位13被指定為I的子通道來執行MODIFY SUBCHANNEL ο此外,必須通過執行對於該類型的設備來說合適的特定的依賴於模式的命令,針對多路徑模式來設置該設備。用於處理多路徑模式操作的一般過程如下:
[0791]1.設置
[0792]a.必須由設備在每個通道路徑上成功地執行設置多路徑模式類型的命令,該通道路徑是被設置的多路徑組的成員;否則,操作的多路徑模式會在子通道上給出不可預測的結果。如果因為任何原因,在多路徑組中不包含到設備的一個或多個物理可用的通道路徑,當子通道在多路徑模式下操作時,這些通道路徑必然不可供選擇。可以通過在執行MODIFYSUBCHANNEL之前在SCHIB中或者在執行START SUBCHANNEL之前在ORB中將相應的LPM位設置為零,使通道路徑不可供選擇。
[0793]b.當設置多路徑模式類型的命令被傳送到設備,必須只有單個通道路徑邏輯可用,以避免替代的通道路徑選擇來執行該開始功能;否則,通道子系統可以在多於一個通道路徑上檢測到設備忙條件,這會導致後續多路徑模式操作的不可預測的結果。每當多路徑組的成員關係被改變,該類型的設置過程應被使用。
[0794]2.離開多路徑模式
[0795]為了離開多路徑模式並且繼續在單路徑模式下處理,可以使用下列兩個過程中的任一個:
[0796]a.可以針對多路徑組的任何通道路徑來執行解散多路徑模式類型的命令。該命令之後必須:(I)執行MODIFY SUBCHANNEL,且SCHIB的字I的位13被指定為零,或者(2)僅將單通道路徑指定為在LPM中邏輯可用。當設備在單路徑模式下運行時,一定不能在具有可供選擇的多條通道路徑的多路徑模式中操作的子通道上執行開始功能;否則,在子通道上會出現該功能或後續的開始功能的不可預測的結果。
[0797]b.在多路徑組的每個通道路徑上執行放棄多路徑模式類型的命令(與設置相反)。該命令之後必須:(I)執行MODIFY SUBCHANNEL,且SCHIB的字I的位13被指定為零,或者
(2)僅將單個通道路徑指定為在LPM中邏輯可用。當設備在單路徑模式下運行時,一定不能在具有可供選擇的多條通道路徑的多路徑模式中操作的子通道上執行開始功能;否則,在子通道上會出現該功能或後續的開始功能的不可預測的結果。
[0798]數據分塊
[0799]I/O設備記錄的數據被劃分為塊。塊的長度取決於設備;例如,塊可以是卡、列印行或在磁帶的兩個相鄰空隙之間記錄的信息。
[0800]在一個I/O操作中能被傳送的最大數量的信息是一個塊。當相關的主存儲區域被耗盡或者達到塊的結束時,不管哪個先出現,I/o操作被終止。對於某些操作,例如在磁帶單元或在詢問站上寫入,塊未被定義,並且傳送的信息量僅受程序控制。
[0801]操作請求塊
[0802]操作-請求塊(ORB)是START SUBCHANNEL的操作數。ORB指定了在控制該特定開始功能時使用的參數。這些參數包括中斷參數、子通道鍵、第一個CCW或TCW的地址、操作控制位、優先級控制號以及到指定設備的通道路徑的邏輯可用性的指定。
[0803]在執行START SUBCHANNEL時,在設置條件代碼O之前,ORB的內容被放在指定的子通道中。如果執行將帶來非零的條件代碼,ORB的內容不會被放在指定的子通道中。
[0804]ORB地址的兩個最右側的位必須為零,從而將ORB放在字邊界上;否則,規格異常被識別。當光纖通道擴展(FCX)設施被安裝,ORB的通道程序類型控制(B)(字1,位13)指定了 ORB所指定的通道程序的類型。當B是零,ORB指定了 CCW通道程序。當B是1,ORB指定了 TCW通道程序。只有支持FCX的I/O設備才能識別TCW通道程序。
[0805]在執行START SUBCHANNEL時,如果指定CCW通道程序的ORB的內容被放在指定的子通道中,子通道保持在命令模式下。於是,這樣的ORB也被稱為命令模式0RB。在執行START CHANNEL時,如果指定TCW通道程序的ORB的內容被放在子通道中,則子通道進入傳輸模式。於是,這樣的ORB也被稱為傳輸模式0RB。[0806]TEST PENDING INTERRUPTION
[0807]用於子通道上的待決I/O中斷的I/O中斷代碼被存儲在第二操作數地址指定的位置,且待決的I/o中斷請求被清除。
[0808]當第二操作數地址不是零時,它是存儲由字O和I構成的雙字I/O中斷代碼的位置的邏輯地址。第二操作數地址必須在字邊界上指定;否則,規格異常被識別。
[0809]如果第二操作數地址是零,由字0-2構成的三字I/O中斷代碼被存儲在真實位置184-195。在該情形下,不會應用低地址保護和鍵控制保護。
[0810]在訪問寄存器模式下當第二操作數地址是零時,無法預測訪問寄存器B2是否發生訪問寄存器轉換。如果發生轉換,產生的地址空間控制元素未被使用;即,中斷代碼仍被存儲在真實位置184-195。
[0811]僅針對執行指令的CPU的控制寄存器6中的I/O中斷子類掩碼所允許的那些I/O中斷子類來接受待決的I/o中斷請求。如果不存在控制寄存器6所允許的I/O中斷請求,I/O中斷代碼不會被存儲,第二操作數位置不會被修改,且條件代碼O被設置。
[0812]如果待決的I/O中斷請求被接受,I/O中斷代碼被存儲,待決的I/O中斷請求被清除,且條件代碼I被設置。存儲的I/o中斷代碼與出現I/O中斷時將會存儲的相同。但是,PSW不像在出現I/O中斷時那樣被交換。指令的執行定義如下:
[0813]子系統識別字(SID)
[0814]SID的位32-63被放在字O中。
[0815]中斷參數:字I包括程序指定的四字參數,且被傳遞到ORB或PMCW的字O中。當設備呈現告警狀態,且中斷參數之前沒有通過執行START SUBCHANNEL或MODIFY SUBCHANNEL而被傳遞到子通道,該欄位包含零。
[0816]中斷識別字:當字2被存儲時,它包含中斷識別字,其還識別I/O中斷的源。僅在第二操作數地址為零時才存儲字2。
[0817]中斷識別字被定義如下:
[0818]A位(A):中斷識別字的位O指定了被清除的待決I/O中斷請求的類型。當位O是零,I/o中斷請求與子通道關聯。
[0819]I/O中斷子類(ISC):中斷識別字的位位置2-4包含無符號二進位整數,範圍為0-7,其指定了與子通道關聯的I/O中斷子類,針對該子通道待決中斷請求被清除。剩餘的位位置被保留並存儲為零。
[0820]特殊條件
[0821]TEST PENDING INTERRUPTION會遇到如下描述或列出的程序異常。
[0822]第二操作數必須在字邊界上指定;否則,規格異常被識別。
[0823]TEST PENDING INTERRUPTION的執行在所有尋址和保護異常上被抑制。
[0824]產生的條件代碼:
[0825]O中斷代碼未被存儲
[0826]I中斷代碼被存儲
[0827]2—
[0828]3—
[0829]程序異常:[0830].訪問(存儲,操作數2,第二操作地址僅為非零)
[0831]?特許操作
[0832].規格
[0833]編程說明
[0834]1.當I/O中斷被屏蔽,TEST PENDING INTERRUPTION應該僅以為零的第二操作數地址來執行。否則,如果出現I/o中斷,指令存儲的I/O中斷代碼會丟失。識別TEST PENDINGINTTERUPT10N之後出現的I/O中斷的源的I/O中斷代碼也被存儲在真實位置184-195,代替由指令存儲的I/O中斷代碼。
[0835]2.在訪問寄存器模式下當第二操作數地址為零時,如果出現訪問寄存器轉換並且訪問寄存器有錯誤,則訪問異常被識別。可以通過使B2欄位變成零或在訪問寄存器中放置OOOOOOOOhex、0000000 Ihex或任何其他有效的內容來避免該異常。
[0836]STORE SUBCHANNEL
[0837]指定的子通道的控制和狀態信息被存儲在指定的SCHIB中。
[0838]通用寄存器I包含子系統識別字,其指定了要為其存儲信息的子通道。第二操作數地址是SCHIB的邏輯地址且必須在字邊界上指定;否則,規格異常被識別。
[0839]當擴展1/0測 量塊設施未被安裝時,在SCHIB中存儲的信息由路徑管理控制字、SCSC以及依賴於模型的信息的三個字構成。當擴展1/0測量塊設施已被安裝,在SCHIB中存儲的信息由路徑管理控制字、SCSW、測量塊地址欄位以及依賴於模型的信息的一個字構成。
[0840]STORE SUBCHANNEL的執行不會改變子通道處的任何信息。
[0841]設置條件代碼O以指示指定的子通道的控制和狀態信息已被存儲在SCHIB中。當STORE SUBCHANNEL的執行導致條件代碼O的設置,SCHIB中的信息指示子通道的一致狀態。
[0842]特殊條件
[0843]當指定的子通道對於STORE SUBCHANNEL不可操作時,設置條件代碼3,且不採取其他動作。如果在通道子系統中未提供子通道,則子通道對於STORE SUBCHANNEL不可操作。
[0844]STORE SUBCHANNEL會遇到以下描述或列出的程序異常。
[0845]當多子通道組設施未被安裝,通用寄存器I的位32-47必須包含OOOlhex ;否則,操作數異常被識別。
[0846]當多子通道組設施已被安裝,通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,且位47必須包含值I ;否則,操作數異常被識別。
[0847]第二操作數必須在字邊界上指定;否則,規格異常被識別。
[0848]產生的條件代碼:
[0849]OSCHIB 被存儲
[0850]I—
[0851]2—
[0852]3不可操作
[0853]程序異常
[0854].訪問(存儲,操作數2 )
[0855].操作數[0856].特許操作
[0857].規格
[0858]編程說明
[0859]1.在SCSW中存儲的設備狀態可以包括設備忙、控制單元忙或控制單元結束指示。
[0860]2.從子通道獲取在SCHIB中存儲的信息。STORE SUBCHANNEL指令不會使通道子系統詢問被尋址的設備。
[0861]3.STORE SUBCHANNEL可以任何時間執行,以對子通道中存在的條件進行抽樣,而不會使任何待決狀態條件被清除。
[0862]4.應避免重複執行STORE SUBCHANNEL而沒有中間的延遲(例如,以確定子通道何時改變狀態),因為CPU對子通道的重複訪問會延遲或阻止通道子系統訪問子通道來更新該子通道。
[0863]TEST SUBCHANNEL
[0864]子通道的控制和狀態信息被存儲在指定的IRB中。通用寄存器I包含子系統識別字,其指定了要為其存儲信息的子通道。第二操作數地址是IRB的邏輯地址,且必須在字邊界上指定;否則,規格異常被識別。
[0865]在IRB中存儲的信息由SCSW字、擴展狀態字和擴展控制字構成。
[0866]如果子通道是狀態待決的,狀態控制欄位的狀態待決位被存儲為I。子通道是否是狀態待決的對執行TEST SUBCHANNEL時執行的功能具有影響。
[0867]當子通道是狀態待決的並且TEST SUBCHANNEL被執行,如上所述,信息被存儲在IRB中,接著清除在子通道中存在的特定條件和指示。如果子通道是在傳輸模式中,這些條件的清除特別是開始功能將子通道置於命令模式。如果I/o中斷請求對於子通道是待決的,該請求被清除。設置條件代碼O以指示已採取這些動作。
[0868]當子通道不是狀態待決的並且TEST SUBCHANNEL被執行,信息被存儲在IRB中,並且沒有條件或指示被清除。設置條件代碼I以指示已採用這些動作。
[0869]特殊條件
[0870]當子通道對於TEST SUBCHANNEL不可操作時,設置條件代碼3,且不採取其他動作。如果子通道未被提供、不具有與之相關的有效設備編號或未被啟用,則子通道對於TESTSUBCHANNEL不可操作。
[0871]TEST SUBCHANNEL可以遇到如下描述或列出的程序異常。
[0872]當多子通道組設施未被安裝,通用寄存器I的位32-47必須包含OOOlhex ;否則,操作數異常被識別。
[0873]當多子通道組設施已被安裝,通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,並且位47必須包含值I ;否則,操作數異常被識別。
[0874]第二操作數必須在字邊界上指定;否則,規格異常被識別。
[0875]在在尋址和保護異常上結束TEST SUBCHANNEL的執行時,子通道的狀態未被改變。產生條件代碼:
[0876]OIRB被存儲;子通道狀態待決
[0877]IIRB被存儲;子通道不是狀態待決
[0878]2一[0879]3不可操作
[0880]程序異常:
[0881 ].訪問(存儲、操作數2 )
[0882].操作數
[0883].特許操作
[0884].規格
[0885]編程說明
[0886]1.SCSff中存儲的設備狀態可以包括設備忙、控制單元忙或控制單元結束的指示。
[0887]2.從子通道獲取IRB中存儲的信息。TEST SUBCHANNEL指令不會使通道子系統詢問被尋址的設備。
[0888]3.當出現I/O中斷,這是在子通道處的狀態待決條件的結果,且典型地執行TESTSUBCHANNEL來清除該狀態。TEST SUBCHANNEL也可以在任何其他時間執行以對子通道中存在的條件進行抽樣。
[0889]4.應避免重複執行TEST SUBCHANNEL來確定何時已完成開始功能,因為存在某些條件,在這些條件下可以指示或不指示開始功能的完成。例如,如果由於另一子通道已經是狀態待決的從而通道子系統保持接口控制檢查(IFCC)條件無效(abeyance)(針對任何子通道),並且如果由TEST SUBCHANNEL測試的開始功能僅具有帶有IFCC條件的通道路徑作為僅有的可供選擇的路徑,則可以不啟動開始功能,直到另一子通道中的狀態待決條件被清除,從而允許IFCC條件在其應用的子通道處被指示。
[0890]5.應避免重複執行TEST SUBCHANNEL而沒有中間的延遲例如來確定子通道何時改變狀態,因為CPU對子通道的重複訪問會延遲或阻止通道子系統對子通道的訪問。在幾乎同一時間由多個CPU對同一子通道執行TEST SUBCHANNEL可以具有相同的效果,並且也應被避免。
[0891]6.可以通過執行TEST SUBCHANNEL來修改CPU進行的I/O中斷處理的優先級。當TEST SUBCHANNEL被執行,且指定的子通道具有I/O中斷請求待決,該I/O中斷請求被清除,且SCSW被存儲,而與之前建立的任何優先級無關。剩餘的I/O中斷請求的相對優先級不改變。
[0892]所屬【技術領域】的技術人員知道,本發明可以實現為系統、方法或電腦程式產品。因此,本公開可以具體實現為以下形式,即:可以是完全的硬體、也可以是完全的軟體(包括固件、駐留軟體、微代碼等),還可以是硬體和軟體結合的形式,本文一般稱為「電路」、「模塊」或「系統」。此外,在一些實施例中,本發明還可以實現為在一個或多個計算機可讀介質中的電腦程式產品的形式,該計算機可讀介質中包含計算機可讀的程序代碼。
[0893]可以採用一個或多個計算機可讀的介質的任意組合。計算機可讀介質可以是計算機可讀信號介質或者計算機可讀存儲介質。計算機可讀存儲介質例如可以是一但不限於——電、磁、光、電磁、紅外線、或半導體的系統、裝置或器件,或者任意以上的組合。計算機可讀存儲介質的更具體的例子(非窮舉的列表)包括:具有一個或多個導線的電連接、可攜式計算機磁碟、硬碟、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦式可編程只讀存儲器(EPR0M或快閃記憶體)、光纖、可攜式緊湊磁碟只讀存儲器(CD-ROM)、光存儲器件、磁存儲器件、或者上述的任意合適的組合。在本文件中,計算機可讀存儲介質可以是任何包含或存儲程序的有形介質,該程序可以被指令執行系統、裝置或者器件使用或者與其結合使用。
[0894]現在參考圖10,在一個例子中,電腦程式產品1000包括,例如,一個或多個非易失性計算機可讀存儲介質1002,在其上存儲有計算機可讀的程序代碼裝置或邏輯1004,以提供並方便本發明的一個或多個方面。
[0895]體現在計算機可讀介質上的程序代碼可以用任何適當的介質傳輸,所述介質包括但不限於:無線、有線、光纜、RF等,或上述的任意合適的組合。
[0896]可以以一種或多種程序設計語言或其組合來編寫用於執行本發明操作的電腦程式代碼,所述程序設計語言包括面向對象的程序設計語言一諸如Java、Smalltalk、C++,還包括常規的過程式程序設計語言一諸如」C」語言或類似的程序設計語言。程序代碼可以完全地在用戶計算機上執行、部分地在用戶計算機上執行、作為一個獨立的軟體包執行、部分在用戶計算機上部分在遠程計算機上執行、或者完全在遠程計算機或伺服器上執行。在涉及遠程計算機的情形中,遠程計算機可以通過任意種類的網絡一包括區域網(LAN)或廣域網(WAN)—連接到用戶計算機,或者,可以連接到外部計算機(例如利用網際網路服務提供商來通過網際網路連接)。
[0897]本文中將參照本發明實施例的方法、裝置(系統)和電腦程式產品的流程圖和/或框圖描述本發明。應當理解,流程圖和/或框圖的每個方框以及流程圖和/或框圖中各方框的組合,都可以由電腦程式指令實現。這些電腦程式指令可以提供給通用計算機、專用計算機或其它可編程數據處理裝置的處理器,從而生產出一種機器,這些電腦程式指令通過計算機或其它可編程數據處理裝置執行,產生了實現流程圖和/或框圖中的方框中規定的功能/操作的裝置。
[0898]也可以把這些電腦程式指令存儲在能使得計算機或其它可編程數據處理裝置以特定方式工作的計算機可讀介質中,這樣,存儲在計算機可讀介質中的指令就產生出一個包括實現流程圖和/或框圖中的方框中規定的功能/操作的指令裝置(instructionmeans)的製造品(manufacture)。
[0899]也可以把電腦程式指令加載到計算機、其它可編程數據處理裝置、或其它設備上,使得在計算機、其它可編程數據處理裝置或其它設備上執行一系列操作步驟,以產生計算機實現的過程,從而使得在計算機或其它可編程裝置上執行的指令能夠提供實現流程圖和/或框圖中的方框中規定的功能/操作的過程。
[0900]附圖中的流程圖和框圖顯示了根據本發明的多個實施例的系統、方法和電腦程式產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個或多個用於實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標註的功能也可以以不同於附圖中所標註的順序發生。例如,兩個連續的方框實際上可以基本並行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或操作的專用的基於硬體的系統來實現,或者可以用專用硬體與計算機指令的組合來實現。
[0901]除了上述,本發明的一個或多個方面可由服務提供商提供、許諾(offer)、部署、管理、服務等,該服務提供商提供用戶環境的管理。例如,服務提供商可創建、維持、支持等計算機代碼和/或計算機基礎設施,其為一個或多個用戶執行本發明的一個或多個方面。反過來,服務提供商可例如根據預訂和/或費用協議從用戶接受付費。額外地或可替換地,月艮務提供商可從向一個或多個第三方銷售廣告內容接受付費。
[0902]在本發明的一個方面,可部署用於執行本發明的一個或多個方面的應用。作為一個例子,部署應用包括提供計算機基礎設施,其可操作以執行本發明的一個或多個方面。
[0903]作為本發明的又一個方面,可部署計算基礎設施,其包括將計算機可讀代碼集成到計算機系統,其中與計算系統結合的代碼能夠執行本發明的一個或多個方面。
[0904]作為本發明的再一個方面,可提供用於集成計算基礎設施包括將計算機可讀碼集成到計算機系統的過程。計算機系統包括計算機可讀介質,其中計算機介質包括本發明的一個或多個方面。與計算機系統結合的代碼能夠執行本發明的一個或多個方面。
[0905]儘管以上描述了各種實施例,這些僅是示例。例如,其他架構的計算環境可包含和使用本發明的一個或多個方面。作為示例,zl96伺服器之外的伺服器可包括、使用和/或受益於本發明的一個或多個方面。此外,其他指令和/或命令可被使用;且指令和/或命令可包括與這裡描述的相比附加的、更少和和/或不同的信息。許多變化是可能的。
[0906]而且,其他類型的計算環境可受益於本發明的一個或多個方面。作為例子,可使用適於存儲和/或執行程序代碼的數據處理系統,其包括至少兩個通過系統總線直接或間接耦合到存儲元件的處理器。存儲器元件包括,例如,在程序代碼的實際執行期間使用的本地存儲器、大容量存儲器以及高速緩衝存儲器,其提供至少一些程序代碼的臨時存儲,以便減少在執行期間必須從大容量存儲器取回代碼的次數。
[0907]輸入/輸出或I/O設備(包括但不限於鍵盤、顯示器、指點設備、DASD、磁帶、⑶、DVD、拇指驅動器(thumb drive)以及其他的存儲介質等)可直接或通過介於其間的I/O控制器被耦合到系統。網絡適配器也可被耦合到系統以使得數據處理系統能夠通過介於其間的私有或公共網絡而耦合到其他的數據處理系統或遠程印表機或存儲設備。數據機、電纜數據機和乙太網卡僅是一些可獲得的網絡適配器類型。
[0908]參考圖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典型地在被執行的指令的控制下處理該訪問。指令可在硬體電路或內部微代碼(固件)中或其組合中被執行。[0909]需注意的是,計算機系統包括本地(或主)存儲器中的信息,以及尋址、保護以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中一種類型的地址被轉換為另一種類型的地址的方式。一些主存儲器包括永久分配的存儲位置。主存儲器向系統提供直接可被尋址的快速訪問的數據存儲。數據和程序在可被處理之前都將(從輸入設備)被加載到主存儲器。
[0910]主存儲器可包括一個或多個更小、更快速訪問的緩衝存儲器,有時候被稱為高速緩存。高速緩存典型地與CPU或I/O處理器物理地關聯。物理結構以及不同存儲介質的使用的效果,除了在性能上,通常不會被程序觀察到。
[0911]可維護用於指令和數據操作數的單獨的高速緩存。高速緩存中的信息可被維護為相鄰的字節,所述字節位於被稱為高速緩存塊或高速緩存線(或簡稱為線)的整數界限上。模型可提供EXTRACT CACHE ATTRIBUTE(提取高速緩存屬性)指令,其返回高速緩存線的字節大小。模型也可提供PREFETCH DATA (預取數據)和PREFETCH DATA RELATIVE LONG (預取較長數據)指令,其實現存儲到數據或指令高速緩存中的預取,或數據從高速緩存的釋放。
[0912]存儲器被視為位的長水平串。對於大部分操作來說,以從左到右的順序進行對存儲器的訪問。位串被細分為八個位的單位。八位單位被稱為字節,其是所有信息格式的基本構件。存儲器中的每個字節位置由唯一的非負整數標識,該非負整數是該字節位置的地址,或簡稱為字節地址。相鄰的字節位置具有連續的地址,在左邊從O開始且以從左到右的順序進行。地址是無符號二進位整數,且是24、31或64位。
[0913]信息一次一個字節或一組字節地在存儲器和CPU或通道子系統之間傳遞。除非另有指定,例如在z/Architecture O R中,存儲器中的一組字節由該組的最左邊的字節尋址。組中的字節的數量可由將被執行的操作暗示或顯式地指定。當在CPU操作中使用時,一組字節被稱為欄位。在字節的每個組內,例如在z/Architecture〇R中,位以從左到右的順序被編號。在z/Architecture O R中,最左邊的位有時候被稱為「高階」位且最右邊的位被稱為「低階」位。但是,位數不是存儲器地址。僅字節可被尋址。為了操作存儲器中的字節的單個位,訪問整個字節。字節上的位從左到右被編號為O到7(例如在z/Architecture O R中)。對於24位地址,地址中的位被編號為8-31或40-63,對於31位地址,編號為1_31或33-63,對於64位地址,編號為0-63。在多個字節的任何其他的固定長度的格式中,構成格式的位從O開始被連續編號。為了錯誤檢測,且優選地為了校正,一個或多個校驗位可與每一個字節或一組字節一起被傳遞。這樣的校驗位由機器自動生成且不能被程序直接控制。存儲容量以字節的數量來表示。當存儲器操作數欄位的長度由指令的操作碼暗示時,欄位被稱為具有固定長度,其可以是一個、兩個、四個、八個或十六個字節。可為某些指令暗示更大的欄位。當存儲器操作數欄位的長度沒有被暗示,而是被顯式地表示時,該欄位被稱為具有可變長度。可變長度的操作數可以一個字節的增量(或者對於一些指令,以兩個字節倍數或其他倍數)在長度上可變。當信息被放在存儲器中時,僅替換被包括在指定的欄位中的那些字節位置的內容,即使到存儲器的物理路徑的寬度可能大於正被存儲的欄位的長度。
[0914]某些信息單元位於存儲器中的整數界限上。對於信息單元,當其存儲器地址是以字節表示的單元長度的倍數時,界限被稱為是整數的。特殊的名稱被給予整數界限上的2、4、8和16位元組的欄位。半字是兩字節邊界上的一組兩個連續的字節,且是指令的基本構件。字是四字節邊界上的一組四個連續的字節。雙字是八字節邊界上一組八個連續的字節。四倍長字(quadword)是16位元組邊界上的一組16個連續的字節。當存儲器地址指定半字、字、雙字和四倍長字時,地址的二進位表示分別包括一個、兩個、三個或四個最右邊的零位。指令將位於二字節整數邊界上。大多數指令的存儲器操作數不具有界限對準要求。
[0915]在為指令和數據操作數實現單獨的高速緩存的設備上,如果程序在高速緩存線中存儲且指令被隨後從該高速緩存線獲取,可經歷顯著的延遲,不管該存儲是否改變隨後被獲取的指令。
[0916]在一個實施例中,本發明可被軟體(有時候被稱為許可的內部代碼、固件、微代碼、毫代碼、微微代碼(pico-code)等,其任何一個都將符合本發明)實施。參考圖11,體現本發明的軟體程序代碼可典型地由主系統5000的處理器5001從長期存儲介質設備5011(諸如CD-ROM驅動器、磁帶驅動或硬碟驅動器)訪問。軟體程序代碼可體現在與數據處理系統一起使用的各種已知介質(諸如軟磁碟、硬碟驅動或CD-ROM)中的任何一個上。代碼可在這樣的介質上被分發,或可從一個計算機系統的計算機存儲器5002或存儲設備通過網絡5010被分發給其他計算機系統的用戶,以由這樣的其他系統的用戶使用。
[0917]軟體程序代碼包括作業系統,其控制各種計算機組件和一個或多個應用程式的功能和交互。程序代碼通常可從存儲介質設備5011調頁到相對更高速的計算機存儲器5002,在此它對於處理器5001是可用的。用於在存儲器中、物理介質上體現軟體程序代碼和/或經由網絡分發軟體代碼的技術和方法是熟知的,且不會在此被進一步討論。當程序代碼被創建並存儲在有形介質(包括但不限於電子存儲模塊(RAM)、快閃記憶體、光碟(⑶)、DVD、磁帶等)上時,其經常被稱為「電腦程式產品」。電腦程式產品介質典型地可由優選地位於計算機系統中的處理電路讀取以由處理電路執行。
[0918]圖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。
[0919]系統5021可通過能與網絡5029通信5028的網絡適配器與其他計算機或計算機網絡通信。示例性網絡適配器是通信通道、令牌環網、乙太網或數據機。或者,系統5021可使用諸如⑶ro (蜂窩數字分組數據)卡的無線接口來通信。系統5021可與區域網(LAN)或廣域網(WAN)中的這樣的其他計算機關聯,或系統5021可以是與另一個計算機的客戶機/伺服器安排中的客戶機等。所有這些配置以及合適的通信硬體和軟體在本領域中是已知的。
[0920]圖13示出了其中可實施本發明的數據處理網絡5040。數據處理網絡5040可包括多個單獨的網絡,諸如無線網和有線網,其每個可包括多個單獨的工作站5041、5042、5043、5044。此外,本領域技術人員將理解,可包括一個或多個LAN,其中LAN可包括多個耦合到主處理機的智能工作站。
[0921]仍然參考圖13,網絡也可包括大型計算機或伺服器,諸如網關計算機(客戶機伺服器5046)或應用伺服器(遠程伺服器5048,其可訪問數據儲存庫,且也可直接從工作站5045被訪問)。網關計算機5046用作到每個單獨網絡的進入點。當將一個聯網協議連接到另一個時,需要網關。網關5046可通過通信鏈路優選地耦合到另一個網絡(例如網際網路5047)。也可使用通信鏈路將網關5046直接耦合到一個或多個工作站5041、5042、5043、5044。可以利用可從國際商業機器公司獲得的IBM eServerTMSystem z〇R伺服器來實現網關計算機。
[0922]同時參考圖12和13,可體現本發明的軟體編程代碼可被系統5020的處理器5026從諸如CD-ROM驅動器或硬碟驅動器的長期存儲介質5027訪問。軟體編程代碼可被體現在與數據處理系統一起使用的各種已知介質(諸如軟盤、硬碟驅動器或CD-ROM)中的任一個上。代碼可在這樣的介質上被分發,或從一個計算機系統的存儲器或存儲設備通過網絡被分發到其他計算機系統的用戶5050、5051,以供這樣的其他系統的用戶使用。
[0923]或者,編程代碼可體現在存儲器5025中,且由處理器5026使用處理器總線訪問。這樣的編程代碼包括作業系統,其控制各種計算機組件和一個或多個應用程式5032的功能和交互。程序代碼通常從存儲介質5027調頁到高速存儲器5025,在此它可用於由處理器5026進行處理。用於在存儲器中、在物理介質上體現軟體編程代碼和/或經由網絡分發軟體代碼的技術和方法是公知的,不會在此進一步討論。程序代碼,當其被創建且在有形介質(包括但不限於電子存儲模塊(RAM)、快閃記憶體、光碟(⑶)、DVD、磁帶等)上存儲時,通常被稱為「電腦程式產品」。電腦程式產品介質典型地可以被優選地位於計算機系統中的處理電路讀取以由處理電路執行。
[0924]最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更小)是最低級(LI或級別I)高速緩存,且主存`儲(主存儲器)是最高級高速緩存(如果有三個級別的話是L3)。最低級高速緩存經常被分為保持將被執行的機器指令的指令緩存(1-高速緩存),和保持數據操作數的數據高速緩存(D-高速緩存)。
[0925]參考圖14,為處理器5026示出了示例性處理器實施例。典型地,使用一個或多個級別的高速緩存5053來緩衝存儲器塊,以便改善處理器性能。高速緩存5053是高速緩衝器,其保持很可能被使用的存儲器數據的高速緩存線。典型的高速緩存線是64、128或256位元組的存儲器數據。通常使用單獨的高速緩存以用於緩存指令而不是緩存數據。高速緩存一致性(存儲器和高速緩存中的線的副本的同步)通常由本領域中熟知的各種「窺探」算法提供。處理器系統的主存儲器5025通常被稱為高速緩存。在具有4個級別的高速緩存5053的處理器系統中,主存儲器5025有時候被稱為級別5 (L5)高速緩存,因為它典型地更快,且僅保持可被計算機系統使用的非易失性存儲器(DASD、磁帶等)的一部分。主存儲器5025可「高速緩存」由作業系統向主存儲器5025調頁入或從其調頁出的數據頁。
[0926]程序計數器(指令計數器)5061保持跟蹤將被執行的當前指令的地址。z/Architecture〇R處理器中的程序計數器是64位的,且可被截短為31或24位以支持先前的尋址界限。程序計數器典型地體現在計算機的PSW (程序狀態字)中,這樣它可在上下文轉換中持續。因此,具有程序計數器值的進行中的程序可被例如作業系統中斷(從程序環境到作業系統環境的上下文轉換)。當程序不活動時,程序的PSW維持程序計數器值,且在作業系統執行時,作業系統的(PSW中的)程序計數器被使用。典型地,程序計數器以等於當前指令的字節數的量增量。RISC (精簡指令集計算)指令典型地是固定長度,而CISC (複雜指令集計算)指令典型地是可變長度。IBMz/Architecture O R的指令是具有長度為2、4或6位元組的CISC指令。程序計數器5061被例如上下文轉換操作或分支指令的分支採取操作修改。在上下文轉換操作中,當前的程序計數器值與關於正被執行的程序的其他狀態信息(諸如條件碼)一起被保存在程序狀態字中,且新程序計數器值被載入並指向將被執行的新程序模塊的指令。執行分支採取操作,以通過將分支指令的結果加載到程序計數器5061中而允許程序進行決定或在程序內循環。
[0927]典型地,使用指令獲取單元5055代表處理器5026獲取指令。獲取單元可獲取「下一序列指令」、分支採取指令的目標指令或上下文轉換後的程序的第一指令。現在的指令獲取單元通常使用預取技術基於被預取的指令將被使用的可能性來推測性地預取指令。例如,獲取單元可獲取16位元組的指令,其包括下一順序指令以及進一步的順序指令的額外字節。
[0928]獲取的指令隨後被處理器5026執行。在一實施例中,獲取的指令被傳遞給獲取單元的分派單元5056。分派單元解碼指令並將關於解碼的指令的信息轉送給合適的單元5057、5058、5060。執行單元5057將典型地從指令獲取單元5055接收關於解碼的算術指令的信息,並將根據指令的操作碼對操作數執行算術操作。優選地從存儲器5025、架構寄存器5059或從正被執行的指令的立即欄位(immediate field)向執行單元5057提供操作數。執行的結果,當被存儲時,被存儲在存儲器5025、寄存器5059或其他機器硬體(諸如控制寄存器、PSW寄存器等)中。
[0929]處理器5026典型地具有一個或多個用於執行指令的功能的單元5057、5058、5060。參考圖15A,執行單元5057可通過接口邏輯5071與架構通用寄存器5059、解碼/分派單元5056、加載存儲單元5060和其他5065處理器單元通信。執行單元5057可使用幾個寄存器電路5067、5068、5069來保持算術邏輯單元(ALU) 5066將操作的信息。ALU執行諸如加減乘除的算術操作,以及諸如和、或以及異或(X0R)、旋轉和移位的邏輯運算。優選地,ALU支持依賴於設計的專門操作。其他電路可提供其他架構工具5072,例如包括條件碼和恢復支持邏輯。典型地,ALU操作的結果被保持在輸出寄存電路5070中,該輸出寄存器電路可將結果轉送到多種其他處理功能。有許多處理器單元安排,本說明書僅旨在提供對一個實施例的代表性理解。
[0930]例如,ADD指令將在具有算術和邏輯功能的執行單元5057中被執行,而例如浮點指令將在具有專用浮點能力的浮點執行中被執行。優選地,執行單元通過在操作數上執行操作碼定義的功能在由指令標識的操作數上操作。例如,ADD指令可被執行單元5057在由指令的寄存器欄位標識的兩個寄存器5059中發現的操作數上執行。
[0931]執行單元5057對兩個操作數執行算術加法,並在第三操作數中存儲結果,其中第三操作數可以是第三寄存器或兩個源寄存器中的一個。執行單元優選地利用算術邏輯單元(ALU)5066,其能執行多種邏輯功能,諸如移位、旋轉、和、或、異或,以及多種代數函數,包括加減乘除中的任何一個。有些ALU5066被設計為用於標量運算,有些用於浮點。根據架構,數據可以是大端(big endien)(其中最低有效字節位於最高字節地址)或小端(littleendien)(其中最低有效字節位於最低字節地址)。IBM z/Architecture〇R是大端。根據架構,帶符號欄位可以是符號和幅度、I的補碼或2的補碼。2的補碼數是有利的,其在於ALU不需要設計減法能力,因為不管是2的補碼中的負值還是正值,都僅要求ALU中的加法。數字通常以速記描述,其中12位的欄位定義了 4096位元組塊的地址,且通常被描述為例如4Kbyte (千字節)塊。
[0932]參考圖15B,用於執行分支指令的分支指令信息典型地被發送到分支單元5058,該分支單元經常使用諸如分支歷史表5082的分支預測算法,在其他條件運算完成前預測分支結果。在條件運算完成前,當前分支指令的目標將被獲取並推測性地執行。當條件運算完成時,基於條件運算的條件和推測的結果,推測性執行的分支指令或被完成或被丟棄。典型的分支指令可測試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標地址,分支地址可基於若干數被計算,所述數包括例如在寄存器欄位或是指令的立即欄位中找到的數。分支單元5058可利用具有多個輸入寄存器電路5075、5076、5077和一個輸出寄存器電路5080的ALU5074。分支單元5058可與例如通用寄存器5059、解碼分派單元5056或其他電路5073通信。
[0933]一組指令的執行可由於多個原因中斷,所述原因包括例如由作業系統發起的上下文轉換、引起上下文轉換的程序異常或錯誤、引起上下文轉換的I/O中斷信號或多個程序(在多線程環境中)的多線程活動。優選地,上下文轉換動作保存關於當前執行的程序的狀態信息,且隨後加載關於正被調用的另一個程序的狀態信息。狀態信息可被存儲在例如硬體寄存器或存儲器中。狀態信息優選地包括指向將被執行的下一個指令的程序計數器值、條件碼、存儲器轉換信息和架構寄存器內容。上下文轉換活動可被硬體電路、應用程式、作業系統程序或固件代碼(微代碼、微微代碼或許可內部碼(LIC))單獨地或其組合實現。
[0934]處理器根據指令定義的方法而訪問操作數。指令可使用指令的一部分的值提供立即操作數,可提供一個或多個寄存器欄位,其顯式地指向通用寄存器或專用寄存器(例如浮點寄存器)。指令可利用由操作碼欄位確定的暗示的寄存器作為操作數。指令可利用用於操作數的存儲器位置。可由寄存器、立即字`段或寄存器和立即欄位的組合提供操作數的存儲器位置,如由z/Architecture O R長位移工具(facility)所例示的,其中該指令定義了基寄存器、索引寄存器和立即欄位(位移欄位),它們加到一起,以提供例如存儲器中的操作數的地址。除非另外指明,此處的位置典型地意味著主存儲器(主存儲設備)中的位置。
[0935]參考圖16C,處理器使用加載/存儲單元5060訪問存儲器。加載/存儲單元5060可以通過獲取存儲器5053中的目標操作數的地址並將操作數加載到寄存器5059或其他存儲器5053位置中,來執行加載操作,或可以通過獲取存儲器5053中的目標操作數的地址並將從寄存器5059或另一個存儲器5053位置獲得的數據存儲在存儲器5053中的目標操作數位置,來執行存儲操作。加載/存儲單元5060可以是推測性的,且可以以相對於指令順序來說無序的順序訪問存儲器,但是加載/存儲單元5060將向程序維持指令按順序執行的外觀。加載/存儲單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU5085和控制邏輯5090以計算存儲器地址並提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存儲單元提供功能以使不按順序執行的操作對程序看起來如已按順序執行一樣,如本領域所熟知的。[0936]優選地,應用程式「看到的」地址通常被稱為虛擬地址。虛擬地址有時候被稱為「邏輯地址」和「有效地址」。這些虛擬地址之所以虛擬,在於它們由多種動態地址轉換(DAT)技術中的一種重定向到物理存儲器位置,所述動態地址轉換技術包括但不限於簡單地給用偏移值給虛擬地址加前綴、經由一個或多個轉換錶轉換虛擬地址,所述轉換表優選地包括至少一個段表和一個頁表(單獨地或組合地),優選地,段表具有指向頁表的項。在z/Architecture O R中,提供轉換分級結構,包括區域第一表、區域第二表、區域第三表、段表和可選的頁表。地址轉換的性能通常通過利用轉換後備緩衝器(TLB)被改善,該轉換後備緩衝器包括將虛擬地址映射到相關的物理存儲位置的項。當DAT使用轉換錶轉換虛擬地址時,創建項。於是,虛擬地址的隨後使用可利用快的TLB的項,而不是慢的順序轉換表訪問。TLB內容可由包括LRU (最少最近使用)的多個替換算法來管理。
[0937]在處理器是多處理器系統的處理器的情況下,每個處理器具有保持共享資源的責任,所述共享資源諸如I/O、高速緩存、TLB和存儲器,它們互鎖以實現一致性。典型地,「窺探」技術將被用於維持高速緩存一致性。在窺探環境中,每個高速緩存線可被標記為正處於共享狀態、獨佔狀態、改變狀態、無效狀態等中的一個,以便有助於共享。
[0938]I/O單元5054 (圖14)向處理器提供用於附加到例如包括磁帶、盤、印表機、顯示器和網絡的外圍設備的裝置。I/o單元通常由軟體驅動器向電腦程式呈現。在諸如來自IBM〇R的System z O R的大型計算機中,通道適配器和開放系統適配器是提供作業系統和外圍設備之間的通信的大型計算機的I/O單元。
[0939]而且,其他類型的計算環境可受益於本發明的一個或多個方面。作為例子,環境可包括仿真器(例如,軟體或其他仿真機制),其中特定架構(包括例如指令執行、諸如地址轉換的架構功能、以及架構寄存器)或其子集被仿真(例如,在具有處理器和存儲器的本機計算機系統中)。在這樣的環境 中,仿真器的一個或多個仿真功能可實施本發明的一個或多個方面,即使執行仿真器的計算機可具有與正被仿真的能力不同的架構。作為一個例子,在仿真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實施單個指令或操作。
[0940]在仿真環境中,主計算機包括例如存儲器以存儲指令和數據;指令獲取單元以從存儲器獲取指令,且可選地,提供用於獲取的指令的本地緩衝;指令解碼單元以接收穫取的指令並確定已被獲取的指令的類型;以及指令執行單元以執行該指令。執行可包括將數據從存儲器加載到寄存器;從寄存器將數據存儲回存儲器;或執行如由解碼單元確定的某些類型的算術或邏輯運算。在一個例子中,每個單元在軟體中實現。例如,被所述單元執行的操作被實現為仿真器軟體中的一個或多個子例程。
[0941]更具體地,在大型計算機中,程式設計師(通常是如今的「C」程式設計師)一般通過編譯器應用使用架構機器指令。存儲在存儲介質中的這些指令可以在z/Architecture O RIBM O R伺服器中本機地執行,或在執行其他架構的機器中執行。它們可在現有的和未來的IBMO R大型計算機伺服器以及IBM O R的其他機器(例如,Power Systems伺服器和System x O R伺服器)中被仿真。它們可在使用由IBM O R、Intel O R、AMDTM等製造的硬體的各種機器上運行Linux的機器中被執行。除了在z/Architecture O R下的該硬體上執行,Linux也可被用於這樣的機器,其使用由TurboHercules、Hercules、UMX或FSI (FundamentalSoftware, Inc)(其中一般地執行是處於仿真模式中)提供的仿真。在仿真模式中,仿真軟體由本機處理器執行以仿真被仿真處理器的架構。
[0942]本機處理器典型地執行仿真軟體,其包括固件或本機作業系統,以執行被仿真處理器的仿真程序。仿真軟體負責獲取並執行被仿真處理器架構的指令。仿真軟體維護仿真的程序計數器以保持跟蹤指令界限。仿真軟體可一次獲取一個或多個仿真的機器指令,並將所述一個或多個仿真的機器指令轉換為對應的本機機器指令組,以由本機處理器執行。這些轉換的指令可被高速緩存,這樣可完成更快的轉換。仿真軟體將維持被仿真的處理器架構的架構規則以保證為被仿真處理器編寫的作業系統和應用正確操作。而且,仿真軟體將提供由被仿真的處理器架構確定的資源,包括但不限於控制寄存器、通用寄存器、浮點寄存器、例如包括段表和頁表的動態地址轉換功能、中斷機制、上下文轉換機制、日中時間(TOD)時鐘和到I/O子系統的架構接口,這樣被設計為在被仿真處理器上運行的作業系統或應用程式可在具有仿真軟體的本機處理器上運行。
[0943]解碼正被仿真的特定指令,且調用子例程以執行該單個指令的功能。仿真被仿真處理器的功能的仿真軟體功能例如在「C」子例程或驅動器中實現,或由提供用於特定硬體的驅動器的其他方法實現,如本領域技術人員在理解優選實施例的描述後將理解的。包括但不限於 Beausoleil 等人的標題為 「Multiprocessor for Hardware Emulation」 的美國專利證書號 5,551,013 ;以及 Scalzi 等人的標題為 「Preprocessing of Stored TargetRoutines for Emulating Incompatible Instructions on a Target Processor,,的美國專利證書號 6,009,261 ;以及 Davidian 等人的標題為 「Decoding Guest Instruction toDirectly Access Emulation Routines that Emulate the Guest Instructions,,的美國專利證書號,5,574,873 ;以及Gorishek等人的標題為「Symmetrical Multiprocessing Busand Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in aSystem」的美國專利證書號6,308, 255 ;以及Lethin等人的標題為「Dynamic OptimizingObject Code Translator for Architecture Emulation and Dynamic Optimizing ObjectCode Translation Method」的美國專利證書號6,463,582,;以及Eric Traut的標題為「Method for Emulating Guest Instructions on a Host Computer Through DynamicRecompilation of Host Instructions」的美國專利證書號5,790,825 ;以及許多其他專利的各種軟體和硬體仿真專利示出各種已知的方式來實現針對可為本領域技術人員獲得的目標機器對為不同機器進行架構設計的指令格式的仿真,上述專利在這裡都被作為參考。
[0944]在圖16中,提供了仿真主計算機系統5092的例子,其仿真主架構的主計算機系統5000』。在仿真主計算機系統5092中,主處理器(CPU) 5091是仿真主處理器(或虛擬主處理器),並包括具有與主計算機5000』的處理器5091不同的本機指令集架構的仿真處理器5093。仿真主計算機系統5092具有可被仿真處理器5093訪問的存儲器5094。在示例性實施例中,存儲器5094被分區為主計算機存儲器5096部分和仿真例程5097部分。根據主計算機架構,主計算機存儲器5096對於仿真主計算機5092的程序來說是可用的。仿真處理器5093執行與被仿真處理器5091不同架構的架構指令集的本機指令(即來自仿真程序處理器5097的本機指令),且可通過使用從順序和訪問/解碼例程獲得的一個或多個指令從主計算機存儲器5096中的程序訪問用於執行的主機指令,所述順序和訪問/解碼例程可解碼訪問的主機指令,以確定用於仿真被訪問的主機指令的功能的本機指令執行例程。被定義用於主計算機系統5000』架構的其他工具可被架構工具例程仿真,所述架構工具例程包括諸如通用寄存器、控制寄存器、動態地址轉換和I/o子系統支持和處理器高速緩存等工具。仿真例程也可利用在仿真處理器5093中可獲得的功能(諸如通用寄存器和虛擬地址的動態轉換)以改善仿真例程的性能。也可提供專用硬體和卸載引擎以輔助處理器5093來仿真主計算機5000』的功能。
[0945]在此使用的術語僅是為了描述特定實施例,且不旨在限制本發明。如在此使用的,單數形式「一」、「一個」和「該」也旨在包括複數形式,除非上下文另外清楚地指明。還將理解,當在說明書中使用時,術語「包括」和/或「包含」指明存在所述的特徵、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個或多個其他特徵、整體、步驟、操作、元件和/或組件。
[0946]所附權利要求書中的所有設備或步驟加功能元件的相應結構、材料、操作以及等價物,如有的話,旨在包括用於結合如特別要求保護的其他所要求保護的元件來執行所述功能的任何結構、材料或操作。呈現本發明的說明是為了示出和描述的作用,但不是窮盡性的或將本發明限制於所公開的形式。許多修改和變化對本領域普通技術人員來說是明顯的,且不脫離本發明的範圍和精神。選擇和描述實施例是為了最佳地解釋本發明的原理和實際應用,並使得本領域普通技術人員能針對適於考慮的特定用途的具有各種修改的各種實施例理解本發明。
【權利要求】
1.一種用於在包括主存儲器和存儲級內存的計算環境中執行啟動子通道指令的電腦程式產品,所述電腦程式產品包括: 計算機可讀的存儲介質,其可由處理電路讀取,並存儲用於由所述處理電路執行以執行方法的指令,所述方法包括: 響應於確定由所述啟動子通道指令指示的子通道是異步數據移動器(ADM)子通道,執行: 從主存儲器中獲得操作請求塊,所述操作請求塊包括操作塊的地址; 基於所述操作塊的地址,從主存儲器中獲得所述操作塊,所述操作塊包括:請求塊、響應塊、和一個或多個移動規格塊(MSB),其中所述請求塊包括具有指示被包括在所述操作塊中並且被所述操作塊引用的一個或多個MSB的數目的值的MSB計數欄位,其中所述響應塊被配置為包括:操作代碼欄位、塊計數欄位、用於尋址主存儲器的主存儲器地址欄位、用於尋址存儲級內存的存儲級內存地址欄位、塊大小欄位和標誌欄位; 為包括具有第一值的標誌欄位的一個或多個MSB中的每個MSB執行方法,該方法包括: 獲得所述一個或多個移動規格塊中的一個移動規格塊; 基於所獲得的移動規格塊中的所述操作代碼,確定所獲得的移動規格塊被配置為釋放存儲級內存的塊; 基於所獲得的移動規格`塊的所述塊大小欄位和所述塊計數欄位,確定將被釋放的存儲級內存的塊的大小和將被釋放的存儲級內存的塊的數目;和 基於所獲得的移動規格塊,釋放與所獲得的MSB的存儲級內存地址欄位的存儲級內存地址相關聯的存儲級內存的塊。
2.根據權利要求1所述的電腦程式產品,其中所述方法還包括: 基於具有第二值的所獲得的MSB的標誌欄位,執行方法,該方法包括: 使用所獲得的MSB的主存儲器地址作為地址來獲得另一個移動規格塊; 基於所述另一個MSB的操作代碼欄位,確定所述另一個移動規格塊是否被配置為釋放存儲級內存的塊,其中存儲級內存的塊的大小由所述另一個MSB的塊大小欄位來確定,並且將被釋放的塊的數目由所述另一個MSB的塊計數欄位來確定;和 釋放與所述另一個MSB的存儲級內存地址欄位的存儲級內存地址相關聯的存儲級內存的塊。
3.根據權利的要求2所述的電腦程式產品,其中所述釋放存儲塊向所述ADM子通道提供不再需要保留所釋放的塊中的數據的指示,其中嘗試使用所釋放的塊將不成功,直到所釋放的塊已經被存儲於其中或被初始化。
4.根據權利要求1所述的電腦程式產品,其中所述釋放存儲塊向所述ADM子通道提供不再需要保留所釋放的塊中的數據的指示,其中嘗試使用釋放的塊將不成功,直到所釋放的塊已經被存儲於其中或被初始化。
5.根據權利要求1所述的電腦程式產品,其中響應於所獲得的移動規格塊的操作代碼指示釋放操作,所述主存儲器地址欄位沒有意義。
6.根據權利要求1所述的電腦程式產品,其中在所述塊大小欄位中所指定的大小是4K或者1M。
7.根據權利要求1所述的電腦程式產品,其中所述方法還包括響應於完成所述釋放,生成一個或多個狀態條件,所述一個或多個狀態條件對於所述啟動子通道指令的發出者是可訪問的。
8.根據權利要求1所述的電腦程式產品,其中響應於在所述釋放操作的執行期間所檢測的錯誤條件,在所述響應塊中存儲。
9.一種用於在包括主存儲器和存儲級內存的計算環境中執行啟動子通道指令的計算機系統,所述計算機系統包括: 存儲器;和 與所述存儲器通信的處理器,其中所述計算機系統被配置為執行方法,所述方法包括: 響應於確定由所述啟動子通道指令指示的子通道是異步數據移動器(ADM)子通道,執行: 從主存儲器中獲得操作請求塊,所述操作請求塊包括操作塊的地址; 基於所述操作塊的地址,從主存儲器中獲得所述操作塊,所述操作塊包括:請求塊、響應塊、和一個或多個移動規格塊(MSB),其中所述請求塊包括具有指示一個或多個MSB的數目的值的MSB計數欄位,所述MSB被包括在所述操作塊中並且被所述操作塊引用,其中所述響應塊被配置為包括:操作代碼欄位、塊計數欄位、用於尋址主存儲器的主存儲器地址欄位、用於尋址存儲級內存的存儲級內存地址欄位、塊大小欄位和標誌欄位; 為包括具有第一值的標誌欄位的一個或多個MSB中的每個MSB執行方法,該方法包括: 獲得所述一個或多個移動規格塊中的一個移動規格塊; 基於所獲得的移動規格塊中的所述操作代碼,確定所獲得的移動規格塊被配置為釋放存儲級內存的塊; 基於所獲得的移動規格塊的所述塊大小欄位和所述塊計數欄位,確定將被釋放的存儲級內存的塊的大小和將被釋放的存儲級內存的塊的數目;和 基於所獲得的移動規格塊,釋放與所獲得的MSB的存儲級內存地址欄位的存儲級內存地址相關聯的存儲級內存的塊。
10.根據權利要求9所述的計算機系統,其中所述方法還包括: 基於具有第二值的所獲得的MSB的標誌欄位,執行方法,該方法包括: 使用所獲得的MSB的主存儲器地址作為地址來獲得另一個移動規格塊; 基於所述另一個MSB的操作代碼欄位,確定所述另一個移動規格塊是否被配置為釋放存儲級內存的塊,其中存儲級內存的塊的大小由所述另一個MSB的塊大小欄位來確定,並且將釋放的塊的數目由所述另一個MSB的塊計數欄位來確定;和 釋放與所述另一個MSB的存儲級內存地址欄位的存儲級內存地址相關聯的存儲級內存的塊。
11.根據權利的要求10所述的計算機系統,其中所述釋放存儲塊向所述ADM子通道提供不再需要保留所釋放的塊中的數據的指示,其中嘗試使用所釋放的塊將不成功,直到所釋放的塊已經被存儲於其中或被初始化。
12.根據權利要求9所述的計算機系統,其中所述釋放存儲塊向所述ADM子通道提供不再需要保留所釋放的塊中的數據的指示,其中嘗試使用所釋放塊將不成功,直到所釋放的塊已經被存儲於其中或被初始化。
13.根據權利要求9所述的計算機系統,其中響應於所獲得的移動規格塊的操作代碼指示釋放操作,所述主存儲器地址欄位沒有意義。
14.根據權利要求9所述的計算機系統,其中在所述塊大小欄位中所指定的大小是4K或者1M。
15.根據權利要求9所述的計算機系統,其中所述方法還包括響應於完成所述釋放動作,生成一個或多個狀態條件,所述一個或多個狀態條件對於所述啟動子通道指令的發出者是可訪問的。
16.根據權利要求9所述的計算機系統,其中響應於在所述釋放操作的執行期間所檢測的錯誤條件,在所述響應塊中存儲。
17.一種用於在包括主存儲器和存儲級內存的計算環境中執行啟動子通道指令的方法,所述方法包括: 響應於確定由所述啟動子通道指令指示的子通道是異步數據移動器(ADM)子通道的響應,執行: 從主存儲器中獲得操作請求塊,所述操作請求塊包括操作塊的地址; 基於所述操作塊的地址,從主存儲器中獲得所述操作塊,所述操作塊包括:請求塊、響應塊、和一個或多個移動規格塊(MSB),其中所述請求塊包括具有指示一個或多個MSB的數目的值的MSB計數欄位,所述MSB被包括在所述操作塊中並且被所述操作塊引用,其中所述響應塊被配置為包括:操作代碼欄位、塊計數欄位、用於尋址主存儲器的主存儲器地址欄位、用於尋址存儲級內存的存儲級內存地址欄位、塊大小欄位和標誌欄位;` 為包括具有第一值的標誌欄位的一個或多個MSB中的每個MSB執行方法,該方法包括: 獲得所述一個或多個移動規格塊中的一個移動規格塊; 基於所獲得的移動規格塊中的所述操作代碼,確定所獲得的移動規格塊被配置為釋放存儲級內存的塊; 基於所獲得的移動規格塊的所述塊大小欄位和所述塊計數欄位,確定將被釋放的存儲級內存的塊的大小和將被釋放的存儲級內存的塊的數目;和 基於所獲得的移動規格塊,釋放與所獲得的MSB的存儲級內存地址欄位的存儲級內存地址相關聯的存儲級內存的塊。
18.根據權利要求17所述的方法,其中所述方法還包括: 基於具有第二值的所獲得的MSB的標誌欄位,執行方法,該方法包括: 使用所獲得的MSB的主存儲器地址作為地址來獲得另一個移動規格塊; 基於所述另一個MSB的操作代碼欄位,確定所述另一個移動規格塊是否被配置為釋放存儲級內存的塊,其中存儲級內存的塊的大小由所述另一個MSB的塊大小欄位來確定,並且將釋放的塊的數目由所述另一個MSB的塊計數欄位來確定;和 釋放與所述另一個MSB的存儲級內存地址欄位的存儲級內存地址相關聯的存儲級內存的塊。
19.根據權利要求17所述的方法,所述方法還包括響應於完成所述釋放動作,生成一個或多個狀態條件,所述一個或多個狀態條件對於所述啟動子通道指令的發出者是可訪問的。
20.根據權利要求17所述的方法,其中響應於在所述釋放操作的執行期間所檢測的錯誤條件,在所述響應塊中存儲 。
【文檔編號】G06F12/02GK103562857SQ201280026067
【公開日】2014年2月5日 申請日期:2012年5月10日 優先權日:2011年6月10日
【發明者】P·K·什韋德, K·J·奧克斯, P·G·蘇頓, P·D·德裡費爾, H·尤登弗蘭德, S·G·格拉森 申請人:國際商業機器公司