国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      在主存儲(chǔ)器和存儲(chǔ)級內(nèi)存之間移動(dòng)數(shù)據(jù)塊的制作方法

      文檔序號:6495428閱讀:587來源:國知局
      在主存儲(chǔ)器和存儲(chǔ)級內(nèi)存之間移動(dòng)數(shù)據(jù)塊的制作方法
      【專利摘要】本發(fā)明提供了一種用于在包括主存儲(chǔ)器和存儲(chǔ)級內(nèi)存的計(jì)算環(huán)境中執(zhí)行開始子通道指令的方法,所述方法包括:響應(yīng)于確定由所述開始子通道指令指示的子通道是異步數(shù)據(jù)移動(dòng)器(ADM)子通道,執(zhí)行,從主存儲(chǔ)器中獲得操作請求塊,所述操作請求塊包括操作塊的地址;基于所述操作塊的所述地址,從主存儲(chǔ)器中獲得所述操作塊,所述操作塊包括:請求塊、響應(yīng)塊、和一個(gè)或多個(gè)移動(dòng)規(guī)格塊(MSB),其中所述請求塊包括具有指示被包括在所述操作塊中并且被所述操作塊引用的一個(gè)或多個(gè)MSB的數(shù)目的值的MSB計(jì)數(shù)字段,其中所述響應(yīng)塊被配置為保持異常條件,其中每個(gè)移動(dòng)規(guī)格塊被配置為包括:操作代碼字段、塊計(jì)數(shù)字段、主存儲(chǔ)器地址字段、存儲(chǔ)級內(nèi)存地址字段、塊大小字段和標(biāo)志字段;針對包括具有第一值的標(biāo)志字段的一個(gè)或多個(gè)所述MSB中的每個(gè)MSB執(zhí)行方法,所述方法包括:基于在獲得的移動(dòng)規(guī)格塊中的所述操作代碼字段,確定所述移動(dòng)規(guī)格塊是否被配置為將數(shù)據(jù)塊從存儲(chǔ)級內(nèi)存移動(dòng)到主存儲(chǔ)器或從主存儲(chǔ)器移動(dòng)到存儲(chǔ)級內(nèi)存,其中數(shù)據(jù)塊的大小由所獲得MSB的所述塊大小字段確定;以及在所述主存儲(chǔ)器和所述存儲(chǔ)級內(nèi)存之間移動(dòng)所述數(shù)據(jù)塊,其中使用所述主存儲(chǔ)器地址字段獲得用于所述移動(dòng)的主存儲(chǔ)器位置的地址和使用所述存儲(chǔ)級內(nèi)存地址字段獲得用于所述移動(dòng)的存儲(chǔ)級內(nèi)存的地址。
      【專利說明】在主存儲(chǔ)器和存儲(chǔ)級內(nèi)存之間移動(dòng)數(shù)據(jù)塊
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明的一個(gè)或多個(gè)方面一般涉及計(jì)算環(huán)境的輔助存儲(chǔ)器,特別涉及輔助存儲(chǔ)器的管理方面。
      【背景技術(shù)】
      [0002]計(jì)算環(huán)境可包括主存儲(chǔ)器(也稱為主內(nèi)存),以及輔助存儲(chǔ)器。主存儲(chǔ)器是可被處理器訪問的存儲(chǔ)器,其可例如由絕對地址隨機(jī)尋址。與諸如直接存取存儲(chǔ)設(shè)備(DASD)或存儲(chǔ)級內(nèi)存的輔助存儲(chǔ)器相比,主存儲(chǔ)器被認(rèn)為是快速存取存儲(chǔ)器,而且,主存儲(chǔ)器的尋址被認(rèn)為是比DASD或存儲(chǔ)級內(nèi)存的尋址更簡單。
      [0003]存儲(chǔ)級內(nèi)存,其是經(jīng)典主存儲(chǔ)器外的外部存儲(chǔ)空間,提供了比直接存取存儲(chǔ)設(shè)備更快的存取。與DASD不同,存儲(chǔ)級內(nèi)存典型地沒有被實(shí)施為機(jī)械臂旋轉(zhuǎn)盤,而是非機(jī)械地固態(tài)部件。典型地,存儲(chǔ)級內(nèi)存被實(shí)施為通過若干輸入/輸出(I/O)適配器連接到計(jì)算系統(tǒng)的固態(tài)設(shè)備組,所述輸入/輸出適配器被用來將I/O設(shè)備的技術(shù)映射到中央處理單元的存儲(chǔ)總線。

      【發(fā)明內(nèi)容】

      [0004]通過提供一種用于在包括主存儲(chǔ)器和存儲(chǔ)級內(nèi)存的計(jì)算環(huán)境中執(zhí)行開始子通道指令的計(jì)算機(jī)程序產(chǎn)品,現(xiàn)有技術(shù)的缺點(diǎn)被解決并且本發(fā)明的優(yōu)點(diǎn)被提供。所述計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀的存儲(chǔ)媒介,其可被處理電路讀取并存儲(chǔ)用于由所述處理電路執(zhí)行以執(zhí)行本發(fā)明方法的指令。所述方法包括,例如,響應(yīng)于確定由所述開始子通道指令指示的子通道是異步數(shù)據(jù)移動(dòng)器器(ADM)子通道,執(zhí)行:從主存儲(chǔ)器中獲得操作請求塊,所述操作請求塊包括操作塊的地址;基于所述操作塊的所述地址,從主存儲(chǔ)器中獲得所述操作塊,所述操作塊包括:請求塊、響應(yīng)塊、和一個(gè)或多個(gè)移動(dòng)規(guī)格塊(MSB),其中所述請求塊包括具有指示被包括在所述操作塊中并且被所述操作塊引用的一個(gè)或多個(gè)MSB的數(shù)目的值的MSB計(jì)數(shù)字段,其中所述響應(yīng)塊被配置為保持異常條件,其中每個(gè)移動(dòng)規(guī)格塊被配置為包括:操作代碼字段、塊計(jì)數(shù)字段、主存儲(chǔ)器地址字段、存儲(chǔ)級內(nèi)存地址字段、塊大小字段和標(biāo)志字段;針對包括具有第一值的標(biāo)志字段的一個(gè)或多個(gè)所述MSB中的每個(gè)MSB執(zhí)行方法,所述方法包括:基于在獲得的移動(dòng)規(guī)格塊中的所述操作代碼字段,確定所述移動(dòng)規(guī)格塊是否被配置為將一個(gè)或多個(gè)數(shù)據(jù)塊從存儲(chǔ)級內(nèi)存移動(dòng)到主存儲(chǔ)器或從主存儲(chǔ)器移動(dòng)到存儲(chǔ)級內(nèi)存,其中數(shù)據(jù)塊的大小由所獲得的MSB的所述塊大小字段確定;并且在所述主存儲(chǔ)器和所述存儲(chǔ)級內(nèi)存之間移動(dòng)所述一個(gè)或多個(gè)數(shù)據(jù)塊,其中使用所述主存儲(chǔ)器地址字段獲得用于所述移動(dòng)的主存儲(chǔ)器位置的地址和使用所述存儲(chǔ)級內(nèi)存地址字段獲得用于所述移動(dòng)的存儲(chǔ)級內(nèi)存的地址。
      [0005]涉及本發(fā)明的一個(gè)或多個(gè)方面的方法和系統(tǒng)也在此描述并要求保護(hù)。而且,與本發(fā)明的一個(gè)或多個(gè)方面有關(guān)的服務(wù)也在此描述并可要求保護(hù)。
      [0006]額外的特點(diǎn)和優(yōu)勢通過本發(fā)明的技術(shù)被實(shí)現(xiàn)。本發(fā)明的其他實(shí)施例和方面在此被詳細(xì)描述并被認(rèn)為是所要求保護(hù)的發(fā)明的一部分。
      【專利附圖】

      【附圖說明】
      [0007]現(xiàn)在將通過參考以下附圖僅通過舉例的方式描述本發(fā)明的優(yōu)選實(shí)施例,在附圖中:
      [0008]圖1A示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例;
      [0009]圖1B示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的另一個(gè)實(shí)施例;
      [0010]圖2A示出了根據(jù)本發(fā)明的一個(gè)方面使用的擴(kuò)展異步數(shù)據(jù)移動(dòng)器操作請求塊的一個(gè)實(shí)施例;
      [0011]圖2B示出了根據(jù)本發(fā)明的一個(gè)方面使用的擴(kuò)展異步數(shù)據(jù)移動(dòng)器操作塊的一個(gè)實(shí)施例;
      [0012]圖2C示出了根據(jù)本發(fā)明的一個(gè)方面使用的擴(kuò)展異步數(shù)據(jù)移動(dòng)器請求塊的一個(gè)實(shí)施例;
      [0013]圖2D示出了根據(jù)本發(fā)明的一個(gè)方面使用的擴(kuò)展異步數(shù)據(jù)移動(dòng)器響應(yīng)塊的一個(gè)實(shí)施例;
      [0014]圖2E示出了根據(jù)本發(fā)明的一個(gè)方面使用的擴(kuò)展異步數(shù)據(jù)移動(dòng)器移動(dòng)規(guī)格塊的一個(gè)實(shí)施例;
      [0015]圖2F示出了根據(jù)本發(fā)明的一個(gè)方面使用的擴(kuò)展異步數(shù)據(jù)移動(dòng)器間接數(shù)據(jù)地址字的一個(gè)實(shí)施例;
      [0016]圖3A示出了根據(jù)本發(fā)明的一個(gè)方面使用的開始子通道指令的一個(gè)實(shí)施例;
      [0017]圖3B示出了根據(jù)本發(fā)明的一個(gè)方面的與開始子通道指令有關(guān)的邏輯的一個(gè)實(shí)施例;
      [0018]圖3C示出了根據(jù)本發(fā)明的一個(gè)方面使用的清除子通道指令的一個(gè)實(shí)施例;
      [0019]圖3D示出了根據(jù)本發(fā)明的一個(gè)方面使用的測試子通道指令的一個(gè)實(shí)施例;
      [0020]圖3E示出了根據(jù)本發(fā)明的一個(gè)方面使用的修改子通道指令的一個(gè)實(shí)施例;
      [0021]圖3F示出了根據(jù)本發(fā)明的一個(gè)方面使用的存儲(chǔ)子通道指令的一個(gè)實(shí)施例;
      [0022]圖4A示出了根據(jù)本發(fā)明的一個(gè)方面使用的擴(kuò)展異步數(shù)據(jù)移動(dòng)器子通道信息塊的一個(gè)實(shí)施例;
      [0023]圖4B示出了根據(jù)本發(fā)明的一個(gè)方面使用的擴(kuò)展異步數(shù)據(jù)移動(dòng)器路徑管理控制字的一個(gè)實(shí)施例;
      [0024]圖4C示出了根據(jù)本發(fā)明的一個(gè)方面使用的子通道狀態(tài)字的一個(gè)實(shí)施例;
      [0025]圖4D示出了根據(jù)本發(fā)明的一個(gè)方面使用的擴(kuò)展異步數(shù)據(jù)移動(dòng)器擴(kuò)展?fàn)顟B(tài)字的一個(gè)實(shí)施例;
      [0026]圖5A示出了根據(jù)本發(fā)明的一個(gè)方面使用的存儲(chǔ)存儲(chǔ)級內(nèi)存信息請求塊的一個(gè)實(shí)施例;
      [0027]圖5B不出了根據(jù)本發(fā)明的一個(gè)方面使用的存儲(chǔ)存儲(chǔ)級內(nèi)存信息響應(yīng)塊的一個(gè)實(shí)施例;
      [0028]圖5C示出了根據(jù)本發(fā)明的一個(gè)方面使用的存儲(chǔ)級內(nèi)存地址列表項(xiàng)的一個(gè)實(shí)施例;[0029]圖?示出了根據(jù)本發(fā)明的一個(gè)方面的與存儲(chǔ)存儲(chǔ)級內(nèi)存信息命令有關(guān)的邏輯的一個(gè)實(shí)施例;
      [0030]圖6A示出了根據(jù)本發(fā)明的一個(gè)方面表示存儲(chǔ)級內(nèi)存的各個(gè)狀態(tài)的狀態(tài)圖的一個(gè)例子;
      [0031]圖6B示出了根據(jù)本發(fā)明的一個(gè)方面示出操作狀態(tài)和數(shù)據(jù)狀態(tài)的狀態(tài)圖的一個(gè)實(shí)施例;
      [0032]圖7A示出了根據(jù)本發(fā)明的一個(gè)方面使用的配置存儲(chǔ)級內(nèi)存請求塊的一個(gè)實(shí)施例;
      [0033]圖7B示出了根據(jù)本發(fā)明的一個(gè)方面使用的配置存儲(chǔ)級內(nèi)存響應(yīng)塊的一個(gè)實(shí)施例;
      [0034]圖7C-7D示出了根據(jù)本發(fā)明的一個(gè)方面使用的與配置存儲(chǔ)級內(nèi)存命令有關(guān)的邏輯的一個(gè)實(shí)施例;
      [0035]圖8A示出了根據(jù)本發(fā)明的一個(gè)方面使用的通知響應(yīng)塊的一個(gè)例子;
      [0036]圖SB示出了根據(jù)本發(fā)明的一個(gè)方面使用的存儲(chǔ)事件信息請求塊的一個(gè)實(shí)施例;
      [0037]圖SC示出了根據(jù)本發(fā)明的一個(gè)方面使用的存儲(chǔ)事件信息響應(yīng)塊的一個(gè)實(shí)施例;
      [0038]圖9A示出了根據(jù)本發(fā)明的一個(gè)方面使用的解除配置存儲(chǔ)級內(nèi)存請求塊的一個(gè)實(shí)施例;
      [0039]圖9B示出了根據(jù)本發(fā)明的一個(gè)方面使用的存儲(chǔ)級內(nèi)存增量請求列表項(xiàng)的一個(gè)實(shí)施例;
      [0040]圖9C示出了根據(jù)本發(fā)明的一個(gè)方面使用的解除配置存儲(chǔ)級內(nèi)存響應(yīng)塊的一個(gè)實(shí)施例;
      [0041]圖9D-9E示出了根據(jù)本發(fā)明的一個(gè)方面使用的與解除配置存儲(chǔ)級內(nèi)存命令有關(guān)的邏輯的一個(gè)實(shí)施例;
      [0042]圖10示出了包含本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)程序產(chǎn)品的一個(gè)實(shí)施例;
      [0043]圖11示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的主機(jī)計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例;
      [0044]圖12示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的又一個(gè)例子;
      [0045]圖13示出了包括包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)網(wǎng)絡(luò)的計(jì)算機(jī)系統(tǒng)的另一個(gè)例子;
      [0046]圖14示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算機(jī)系統(tǒng)的各種組件的一個(gè)實(shí)施例;
      [0047]圖15A示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的圖14的計(jì)算機(jī)系統(tǒng)的執(zhí)行單元的一個(gè)實(shí)施例;
      [0048]圖15B示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的圖14的計(jì)算機(jī)系統(tǒng)的分支單元的一個(gè)實(shí)施例;
      [0049]圖15C示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的圖14的計(jì)算機(jī)系統(tǒng)的加載/存儲(chǔ)單元的一個(gè)實(shí)施例;以及
      [0050]圖16示出了包含并使用本發(fā)明的一個(gè)或多個(gè)方面的仿真的主機(jī)計(jì)算機(jī)系統(tǒng)的一個(gè)實(shí)施例?!揪唧w實(shí)施方式】
      [0051]根據(jù)一個(gè)或多個(gè)實(shí)施例,提供了一種用于存儲(chǔ)級內(nèi)存的抽象,其對程序(例如操作系統(tǒng))隱藏了存儲(chǔ)級內(nèi)存的實(shí)施細(xì)節(jié),并提供了標(biāo)準(zhǔn)的通道編程接口以執(zhí)行特定動(dòng)作,諸如控制主存儲(chǔ)器和存儲(chǔ)級內(nèi)存之間的數(shù)據(jù)移動(dòng)。
      [0052]在一個(gè)例子中,提供了被稱為擴(kuò)展異步數(shù)據(jù)移動(dòng)器(EADM)設(shè)施的設(shè)施,其允許程序請求主存儲(chǔ)器和存儲(chǔ)級內(nèi)存之間的數(shù)據(jù)塊的傳送,以及請求其他操作。關(guān)于該設(shè)施的方面將在以下詳細(xì)描述。
      [0053]而且,與EADM設(shè)施有關(guān)的是被稱為EAMD釋放設(shè)施的可選設(shè)施。當(dāng)被安裝時(shí),EADM釋放設(shè)施提供了一種手段,用于由程序指定其不再需要求在一個(gè)或多個(gè)存儲(chǔ)級內(nèi)存塊中保留數(shù)據(jù)。釋放操作是否被支持用于所有的存儲(chǔ)級內(nèi)存塊或僅用于存儲(chǔ)級內(nèi)存的一個(gè)子集是取決于模型的。
      [0054]一旦一個(gè)存儲(chǔ)級內(nèi)存塊已被釋放,程序可將新數(shù)據(jù)傳遞到塊中,否則隨后將數(shù)據(jù)從該塊傳送到主存儲(chǔ)器的請求將會(huì)失敗。
      [0055]將參考圖1A描述包含并使用本發(fā)明的一個(gè)或多個(gè)方面的計(jì)算環(huán)境的一個(gè)實(shí)施例。計(jì)算環(huán)境100是基于例如位于紐約州阿蒙克市的國際商業(yè)機(jī)器公司(IBM?)提供的 z/Architecture?。z/Architecture?i 的一個(gè)例子在 2010 年 8 月的 IBM 出版
      號 SA22-7832-08 的標(biāo)題為 “z/Architecture Principles of Operation” 的 IBM?出版物中被描述,該出版物的全部內(nèi)容通過引用結(jié)合于此。在一個(gè)例子中,一種基于z/Architecture?i|l3計(jì)算環(huán)境包括由國際商業(yè)機(jī)器公司提供的zEnterprisel96 (zl96)
      系統(tǒng)。IBM?:和z/Architecture?以及zEnterprisel96和Z196是位于美國紐約州阿蒙克市的國際商業(yè)機(jī)器公司的注冊商標(biāo)。在此使用的其他名稱也可能是國際商業(yè)機(jī)器公司或其他公司的注冊商標(biāo)、商標(biāo)或產(chǎn)品名。
      [0056]作為一個(gè)例子,計(jì)算環(huán)境100包括經(jīng)由一條或多條總線106連接到主存儲(chǔ)器104的一個(gè)或多個(gè)中央處理單元102。一個(gè)或多個(gè)中央處理單元可執(zhí)行操作系統(tǒng)108,諸如由國際商業(yè)機(jī)器公司提供的;Z/OS?.操作系統(tǒng)。在其他例子中,一個(gè)或多個(gè)中央處理單元可執(zhí)行其他的操作系統(tǒng)或不執(zhí)行操作系統(tǒng)。z/OS?.是位于美國紐約州阿蒙克市的國際商業(yè)機(jī)器公司的注冊商標(biāo)。
      [0057]中央處理單元102和主存儲(chǔ)器104還可經(jīng)由一個(gè)或多個(gè)連接122 (例如總線或其他連接)耦合到I/o集線器120。I/O集線器提供到一個(gè)或多個(gè)I/O適配器130的連接,所述I/O適配器又耦合到一個(gè)或多個(gè)固態(tài)設(shè)備140。適配器和固態(tài)設(shè)備是存儲(chǔ)級內(nèi)存(例如閃速存儲(chǔ)器)的實(shí)現(xiàn)。I/O集線器是促進(jìn)實(shí)施例的一個(gè)或多個(gè)方面的I/O子系統(tǒng)145的一部分。
      [0058]在又一個(gè)實(shí)施例中,如圖1B所示,計(jì)算環(huán)境150可包括中央處理復(fù)合體(CPC)152,其基于由國際商業(yè)機(jī)器公司提供的z/Architecture?。中央處理復(fù)合體152包括例如一個(gè)或多個(gè)分區(qū)154、管理程序156、一個(gè)或多個(gè)中央處理器158、以及輸入/輸出子系統(tǒng)160的一個(gè)或多個(gè)組件。在該例子中,分區(qū)154是邏輯分區(qū)(例如LPAR),其每個(gè)包括被虛擬化為單獨(dú)系統(tǒng)的一組系統(tǒng)硬件資源。
      [0059]每個(gè)邏輯分區(qū)154能用作單獨(dú)系統(tǒng)。即,每個(gè)邏輯分區(qū)可被獨(dú)立重置,如需要,初始加載操作系統(tǒng)或其他控制代碼,并用不同的程序操作。在邏輯分區(qū)中運(yùn)行的操作系統(tǒng)或應(yīng)用程序看起來能訪問完整和完全的系統(tǒng),但是實(shí)際上,僅其一部分是可用的。硬件和許可內(nèi)部代碼(LIC)的組合,被稱為固件,使一個(gè)邏輯分區(qū)中的程序避免受到不同邏輯分區(qū)中的程序干擾。這允許幾個(gè)不同的邏輯分區(qū)以時(shí)間片的方式在單個(gè)或多個(gè)物理處理器上操作。如在此使用的,固件包括例如處理器(或執(zhí)行處理的實(shí)體)的微代碼、毫代碼和/或宏代碼。它包括例如在實(shí)現(xiàn)更高級的機(jī)器代碼中使用的硬件級的指令和/或數(shù)據(jù)結(jié)構(gòu)。在一個(gè)實(shí)施例中,它包括例如專有代碼,其典型地被輸送為微代碼,該微代碼包括可信軟件或特定于底層硬件的微代碼,并控制對系統(tǒng)硬件的操作系統(tǒng)訪問。
      [0060]在該例子中,幾個(gè)邏輯分區(qū)具有駐留操作系統(tǒng)(OS) 170,其可于一個(gè)或多個(gè)邏輯分區(qū)不同。在一個(gè)實(shí)施例中,至少一個(gè)邏輯分區(qū)正在執(zhí)行由紐約州阿蒙克市的國際商業(yè)機(jī)器公司提供的z/OS?對喿作系統(tǒng)。
      [0061]邏輯分區(qū)154由管理程序156管理,所述管理程序被在中央處理器158上運(yùn)行的固件實(shí)施。邏輯分區(qū)154和管理程序156每個(gè)都包括駐留在與中央處理器關(guān)聯(lián)的主存儲(chǔ)器159的相應(yīng)部分中的一個(gè)或多個(gè)程序。管理程序156的一個(gè)例子是由紐約州阿蒙克市的國際商業(yè)機(jī)器公司提供的處理器資源/系統(tǒng)管理器(RP/SM?)。
      [0062]中央處理器158是被分配給邏輯分區(qū)的物理處理器資源。例如,邏輯分區(qū)154包括一個(gè)或多個(gè)邏輯處理器,其每個(gè)表示被分配給該分區(qū)的物理處理器資源158的全部或一部分。特定分區(qū)154的邏輯處理器可以專用于該分區(qū),這樣底層處理器資源被保留用于該分區(qū);或與其他分區(qū)共享,這樣底層處理器資源潛在地可被另一個(gè)分區(qū)訪問。
      [0063]輸入/輸出子系統(tǒng)160 (僅描述其一部分)提供了到存儲(chǔ)級內(nèi)存180的連接。在該例子中,地址空間被提供給存儲(chǔ)級內(nèi)存,該地址空間呈現(xiàn)內(nèi)存是平坦(flat)的,對程序隱藏了物理實(shí)現(xiàn)的細(xì)節(jié)。作為一個(gè)例子,存在用于存儲(chǔ)級內(nèi)存的整個(gè)系統(tǒng)的一個(gè)地址空間,但從配置的角度(例如LPAR或在另一個(gè)實(shí)施例中是虛擬化客戶(guest)),存在如下這樣的地址空間,在其中為系統(tǒng)的每個(gè)配置填充存儲(chǔ)級內(nèi)存增量。存儲(chǔ)級內(nèi)存地址空間是單獨(dú)的,且與主存儲(chǔ)器地址空間分開。
      [0064]在z/Architecture?的一個(gè)特定例子中,i/o子系統(tǒng)包括通道子系統(tǒng),其不僅指引I/o外圍控制單元(以及設(shè)備)和主存儲(chǔ)器之間的信息流,也指引存儲(chǔ)級內(nèi)存和主存儲(chǔ)器之間的信息流。但是,I/o子系統(tǒng)也可以不是通道子系統(tǒng)。
      [0065]在通道子系統(tǒng)的情況下,子通道被用來執(zhí)行EADM操作。這些子通道被稱為異步數(shù)據(jù)移動(dòng)器(ADM)類型的子通道,且與EADM操作有關(guān),而不是I/O設(shè)備,像其他I/O類型的子通道那樣。ADM類型的子通道不包含設(shè)備號,也不包含通道路徑信息。被提供給配置的ADM類型的子通道的號碼是取決于模型的。ADM類型的子通道由子系統(tǒng)識(shí)別字(SID)尋址。
      [0066]ADM類型的子通道被擴(kuò)展異步數(shù)據(jù)移動(dòng)器設(shè)施使用,該設(shè)施是通道子系統(tǒng)的擴(kuò)展。如在此描述的,EADM設(shè)施允許程序請求在主存儲(chǔ)器和存儲(chǔ)級內(nèi)存之間的數(shù)據(jù)塊的移動(dòng),以及執(zhí)行其他操作,諸如清除存儲(chǔ)級內(nèi)存塊或釋放存儲(chǔ)級內(nèi)存塊。在一個(gè)實(shí)施例中,當(dāng)EADM設(shè)施被安裝時(shí):
      [0067].一個(gè)或多個(gè)ADM類型的子通道被提供,其被用于EADM操作。[0068].EADM操作被指定的EADM操作塊(AOB)指定。AOB包括EADM請求塊(ARQB)和EADM響應(yīng)塊(ARSB),并指定EADM移動(dòng)規(guī)格塊(MSB)的列表。對于移動(dòng)操作,MSB含有關(guān)于將被移動(dòng)的數(shù)據(jù)塊的信息,諸如塊大小、塊的源和目標(biāo)位置以及數(shù)據(jù)移動(dòng)的方向。
      [0069].可被AOB指定的MSB的最大數(shù)量是取決于模型的。MSB可指定要被移動(dòng)或操作的最大的塊計(jì)數(shù)也是取決于模型的。
      [0070]?程序通過發(fā)出指定ADM類型的子通道和EADM操作請求塊(ORB)的開始子通道指令而啟動(dòng)EADM操作。EADM ORB轉(zhuǎn)而指定Α0Β。該指令將EADM ORB的內(nèi)容傳遞給指定的子通道。
      [0071].當(dāng)開始子通道被發(fā)出以啟動(dòng)EADM操作時(shí),通道子系統(tǒng)異步地執(zhí)行指定的操作。
      [0072]?如由程序所觀察到的,存儲(chǔ)級內(nèi)存在取決于模型的最小塊大小上是塊并行的。該取決于模型的值被稱為SCM塊并行大小。
      [0073]?當(dāng)EADM操作完成時(shí),針對操作在其上被啟動(dòng)的ADM類型的子通道,使得I/O中斷對程序待決。
      [0074]EADM ORB包括子通道和將被使用的AOB的地址的指定。AOB被指定為例如在4字節(jié)的邊界上且大小可最多達(dá)4K字節(jié)。如果需要比適合于4K字節(jié)的AOB更多的MSB,A0B可指定一個(gè)MSB列表,其通過使用指定列表中的下一個(gè)MSB的地址、而不是指定將被用于數(shù)據(jù)傳輸?shù)拇鎯?chǔ)區(qū)域的MSB,擴(kuò)展到額外的存儲(chǔ)區(qū)域。
      [0075]使用指定的EADM ORB中的信息和指定的AOB中的ARQB以獲得MSB,由通道子系統(tǒng)開始第一個(gè)EADM操作。MSB包括指定和控制將被處理的EADM操作的信息。
      [0076]每個(gè)EADM操作被一 個(gè)MSB表示。MSB可指定例如從主存儲(chǔ)器到存儲(chǔ)級內(nèi)存的數(shù)據(jù)塊的傳輸;從存儲(chǔ)級內(nèi)存到主存儲(chǔ)器的數(shù)據(jù)塊的傳輸;存儲(chǔ)級內(nèi)存的塊的清除;以及存儲(chǔ)級內(nèi)存的塊的釋放。
      [0077]如果將被傳送的存儲(chǔ)塊在主存儲(chǔ)器中不是連續(xù)的,可使用新的MSB,或者M(jìn)SB可通過指定EADM間接數(shù)據(jù)地址字(AIDAW)的列表以指定不連續(xù)的塊,來使用間接尋址。
      [0078]由于MSB僅指定一個(gè)方向的數(shù)據(jù)傳輸,當(dāng)傳輸方向有變化時(shí)可使用新的MSB。
      [0079]EADM操作的結(jié)束通常是由通道端和設(shè)備端的組合狀態(tài)條件指示的。這種狀態(tài)組合表示主要和次要狀態(tài)的組合,其指示在狀態(tài)被清除后,子通道可用于另一個(gè)開始功能。
      [0080]EADM操作可被清除子通道指令提前終止。清除子通道指令的執(zhí)行終止子通道處的AOB的執(zhí)行,從子通道清除執(zhí)行中的AOB的指示,以及異步地執(zhí)行清除功能。
      [0081]以下將參考圖2A-2F描述關(guān)于EADM ORB的進(jìn)一步細(xì)節(jié)和相關(guān)控制結(jié)構(gòu)。開始,參考圖2A,其描述了 EADM ORB的一個(gè)實(shí)施例。
      [0082]作為一個(gè)例子,EADM 0RB200包括:
      [0083]中斷參數(shù)202:該字段在子通道中被保持為未修改,直到被隨后的修改子通道或開始子通道指令替換。當(dāng)針對子通道發(fā)生I/o中斷時(shí)且當(dāng)中斷請求被例如測試待決中斷的執(zhí)行清除時(shí),這些位被放置在I/o中斷代碼中。
      [0084]子通道鍵204:該字段形成了用于由ARQB指定的EADM操作的子通道鍵,并應(yīng)用于獲取ARQB、獲取MSB、存儲(chǔ)ARSB以及用于存取主存儲(chǔ)器以便數(shù)據(jù)傳輸。該字段的值是定義的值;否則,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別或操作數(shù)異常被識(shí)別。
      [0085]ORB擴(kuò)展控制(X) 205:該字段指定ORB是否被擴(kuò)展。當(dāng)ADM類型的子通道被指定時(shí),該字段是指定值;否則,識(shí)別操作數(shù)異?;虺绦驒z驗(yàn)條件。
      [0086]EADM操作塊(AOB)地址206:該字段指定了 EADM操作塊(AOB)的地址。如果該字段的特定位不包括定義的值,則識(shí)別操作數(shù)異?;虺绦驒z驗(yàn)條件。
      [0087]如果該字段指定了被保護(hù)免于獲取的位置或指定了配置外的位置,則不啟動(dòng)開始功能。在這種情況下,子通道變成以主要、次級和警告狀態(tài)待決的狀態(tài)。
      [0088]通道子系統(tǒng)(CSS)優(yōu)先級208:該字段包括被分配給指定的子通道的通道子系統(tǒng)優(yōu)先級號,并且當(dāng)開始功能將針對一個(gè)或多個(gè)以待決開始的子通道而啟動(dòng)時(shí)被用來對ADM類型的子通道的選擇進(jìn)行排序。
      [0089] 存儲(chǔ)級內(nèi)存(SCM)優(yōu)先級210:該字段包括存儲(chǔ)級內(nèi)存優(yōu)先級(SCM)號,其指定了被施加給與開始功能關(guān)聯(lián)的所有EADM操作的優(yōu)先級別。
      [0090]SCM優(yōu)先級字段的內(nèi)容是否被EADM設(shè)施識(shí)別是取決于模型的。在不識(shí)別該字段的模型上,字段內(nèi)容被忽略,且與開始功能關(guān)聯(lián)的所有的EADM操作被分配一個(gè)隱含的優(yōu)先級號碼。
      [0091]格式(FMT)212::該字段指定了 ORB的布局。當(dāng)ADM類型的子通道被指定時(shí),該字段將包括指定值;否則,識(shí)別操作數(shù)異?;蛟O(shè)置特定條件代碼。
      [0092]由EADM ORB的EADM AOB地址206指定的EADM操作塊(AOB )包括被用來發(fā)起EADM操作的信息。在一個(gè)例子中AOB被分配在4K字節(jié)的邊界上且長度可變。
      [0093]在一個(gè)例子中,如圖2B所示,EADM A0B220包括三個(gè)部分:EADM請求塊(ARQB)222 ;EADM響應(yīng)塊(ARSB) 224 ;以及包含高達(dá)定義數(shù)量(例如124)的MSB的MSB區(qū)域226。但是當(dāng)使用MSB分支時(shí)(即,通過使用MSB中的分支到下一個(gè)MSB標(biāo)志),ARQB可指定使用多于定義的MSB。
      [0094]參考圖2C描述EADM請求塊(ARQB) 222的一個(gè)實(shí)施例。在一個(gè)例子中,ARQB222包括:
      [0095]格式(FMT) 230:該字段指定了 ARQB的布局。該字段的值是定義的值;否則,程序檢查條件被通道子系統(tǒng)識(shí)別,且命令代碼錯(cuò)誤在ARSB的異常限定器代碼字段中被指示。
      [0096]命令代碼232:該字段將指定EADM移動(dòng)塊命令;否則,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,且命令代碼錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0097]MSB計(jì)數(shù)234:該字段指定了組成EADM請求的MSB的計(jì)數(shù)??杀恢付ǖ淖畲蟮腗SB計(jì)數(shù)是取決于模型的。該字段的值大于零且小于或等于取決于模型的最大MSB計(jì)數(shù)值;否貝1J,程序檢查條件被通道子系統(tǒng)識(shí)別,且MSB計(jì)數(shù)錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0098]除了 EADM請求塊,EADM ORB也指定EADM響應(yīng)塊(ARSB)。在該實(shí)施例中,僅當(dāng)異常條件被識(shí)別時(shí),EADM響應(yīng)塊是有意義的。特別地,僅當(dāng)告警狀態(tài)出現(xiàn)在EADM子通道狀態(tài)字中(SCSW)、EADM擴(kuò)展?fàn)顟B(tài)字(ESW)是有意義的、且EADM響應(yīng)塊存儲(chǔ)(R)位在EADM擴(kuò)展報(bào)告字(ERW)中是I (這些情況中的每個(gè)都將在以下描述)時(shí),ARSB是有意義的。當(dāng)ARSB無意義時(shí),AOB中的ARSB的內(nèi)容時(shí)不可預(yù)測的。
      [0099]如果當(dāng)相關(guān)子通道是子通道活動(dòng)的時(shí)程序存儲(chǔ)到ARSB,可能發(fā)生不可預(yù)測的結(jié)
      果O
      [0100]當(dāng)ARSB被存儲(chǔ)時(shí),已被傳遞的數(shù)據(jù)量(如有)是不可預(yù)測的。[0101]參考圖2D描述EADM響應(yīng)塊的一個(gè)實(shí)施例。在一個(gè)例子中,ARSB224包括:
      [0102]格式(FMT) 240:該字段指定了 ARSB的布局。當(dāng)ARSB被存儲(chǔ)時(shí),該字段的值被存儲(chǔ)為定義的值。
      [0103]異常標(biāo)志(EF)242:當(dāng)ARSB被存儲(chǔ)時(shí),該字段,當(dāng)被設(shè)置時(shí),指明ARSB被存儲(chǔ)的異常原因。示例性異常原因包括:
      [0104]程序檢驗(yàn):檢測到編程錯(cuò)誤。
      [0105]保護(hù)檢驗(yàn):存儲(chǔ)訪問被保護(hù)機(jī)制阻止。保護(hù)適用于獲取ARQB、MSB、AIDAW的獲取,以及將被傳送到存儲(chǔ)級內(nèi)存的數(shù)據(jù),以及適用于在ARSB中存儲(chǔ)信息以及從存儲(chǔ)級內(nèi)存?zhèn)魉偷臄?shù)據(jù)。
      [0106]通道數(shù)據(jù)檢驗(yàn):針對包含在主存儲(chǔ)器中且當(dāng)前被用于執(zhí)行EADM操作的數(shù)據(jù),已檢測到不正確的存儲(chǔ)錯(cuò)誤。當(dāng)檢測到時(shí)可指示該條件,即使在預(yù)取時(shí)數(shù)據(jù)未被使用。當(dāng)數(shù)據(jù)或相關(guān)鍵在數(shù)據(jù)被通道子系統(tǒng)引用時(shí)在主存儲(chǔ)器中具有無效檢驗(yàn)塊代碼(CBC)時(shí),通道數(shù)據(jù)檢驗(yàn)被指示。
      [0107]通道控制檢驗(yàn):通道控制檢驗(yàn)是由影響通道子系統(tǒng)控制的任何機(jī)器故障引起的。該情況包括ARQB、ARSB, MSB、AIDAff或相應(yīng)相關(guān)鍵上的無效CBC。當(dāng)在預(yù)取的ARQB、MSB、AIDAff或相應(yīng)相關(guān)鍵上檢測到無效CBC時(shí),該條件可以被指示,即使該ARQB、MSB或AIDAW未
      被使用。
      [0108]擴(kuò)展異步數(shù)據(jù)移動(dòng)設(shè)施檢驗(yàn):關(guān)于包含在存儲(chǔ)級內(nèi)存中的、且當(dāng)前在EADM操作的執(zhí)行中被使用的數(shù)據(jù)已檢測到不正確的錯(cuò)誤。
      [0109]異??刂茐K標(biāo)識(shí)符(ECBI)244:當(dāng)存儲(chǔ)ARSB時(shí),該字段是多位掩碼,其位當(dāng)被設(shè)置時(shí),指定與由EF字段指定的 識(shí)別的異常關(guān)聯(lián)的任何單個(gè)以下組件或其組合:
      [0110]?一個(gè)或多個(gè)控制塊
      [0111]?主存儲(chǔ)器數(shù)據(jù)區(qū)域
      [0112]?存儲(chǔ)級內(nèi)存
      [0113]可被設(shè)置的位表示例如EADM移動(dòng)規(guī)格塊、EADM間接數(shù)據(jù)地址、主存儲(chǔ)器中的數(shù)據(jù)以及/或存儲(chǔ)級內(nèi)存中的數(shù)據(jù)。
      [0114]ECBI字段中的位描述了與單個(gè)異常條件關(guān)聯(lián)的組件。如果針對異常條件沒有組件可被識(shí)別,該字段包含例如零。
      [0115]字段有效性標(biāo)志(FVF) 246:當(dāng)ARSB被存儲(chǔ)時(shí),該字段包括多位掩碼,其位指示ARSB中特定字段的有效性。當(dāng)有效性位被設(shè)置時(shí),對應(yīng)的字段已被存儲(chǔ)且可用于恢復(fù)目的??杀辉O(shè)置的位表示例如失敗的MSB地址字段、失敗的AIDAW字段、失敗的主存儲(chǔ)器地址字段和/或失敗的存儲(chǔ)級內(nèi)存地址字段。
      [0116]異常修飾符代碼(EQC) 248:當(dāng)ARSB被存儲(chǔ)時(shí),該字段包括代碼值,其進(jìn)一步描述了由異常標(biāo)志字段指定的異常。代碼值可表示以下,例如:
      [0117]不提供額外的描述。對于這種情況,異常控制塊標(biāo)識(shí)符(ECBI)字段和那些被字段有效性標(biāo)志字段驗(yàn)證的字段可識(shí)別對其識(shí)別了異常的控制塊。
      [0118]格式錯(cuò)誤:由格式字段指定的格式被保存。對于這種情況,異常控制塊標(biāo)識(shí)符(ECBI)字段和那些被字段有效性標(biāo)志字段驗(yàn)證的字段可識(shí)別已對其識(shí)別了異常的控制塊。
      [0119]命令代碼錯(cuò)誤:在ARQB的命令代碼字段中指定的值不被識(shí)別。[0120]MSB計(jì)數(shù)錯(cuò)誤:在ARQB的MSB計(jì)數(shù)字段中指定的值是零或超過可被指定的取決于模型的MSB最大值。
      [0121]標(biāo)志錯(cuò)誤:由標(biāo)志字段指定的標(biāo)志位被保存。對于這種情況,異??刂茐K標(biāo)識(shí)符(ECBI)字段和那些被字段有效性標(biāo)志字段驗(yàn)證的字段識(shí)別已對其識(shí)別了異常的控制塊。
      [0122]操作代碼錯(cuò)誤:指定保存的操作代碼值。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段含有已對其識(shí)別了異常的MSB的地址。
      [0123]塊大小錯(cuò)誤:指定保存的塊大小值。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。
      [0124]塊計(jì)數(shù)錯(cuò)誤:在MSB的塊計(jì)數(shù)字段中指定的值是零或超過可被MSB指定的取決于模型的塊的最大計(jì)數(shù)。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。
      [0125]主存儲(chǔ)器地址規(guī)格錯(cuò)誤:在不正確的邊界上指定了主存儲(chǔ)器地址。這樣的地址可能已被MSB指定或被AIDAW指定。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。如果字段有效性標(biāo)志字段指示失敗的AIDAW地址字段是有效的,該字段包含已對其識(shí)別了異常的AIDAW的地址。如果字段有效性標(biāo)志字段指示失敗的主存儲(chǔ)器地址字段是有效的,字段包含已對其識(shí)別了異常的主存儲(chǔ)器地址。
      [0126]存儲(chǔ)級內(nèi)存地址規(guī)格錯(cuò)誤:在不正確的邊界上指定了存儲(chǔ)級內(nèi)存地址。這樣的地址被MSB指定。如果字段有效性標(biāo)志指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB地址。.如果字段有效性標(biāo)志字段指示失敗的AIDAW地址字段是有效的,該字段包含已對其識(shí)別了異常的AIDAW的地址。如果字段有效性標(biāo)志字段指示失敗的存儲(chǔ)級內(nèi)存地址字段是有效的,該字段包含已對其識(shí)別了異常的存儲(chǔ)級內(nèi)存地址。
      [0127]主存儲(chǔ)器地址異常:EADM設(shè)施嘗試使用在配置中不可用地址或回繞(wrap)最大存儲(chǔ)器地址。這樣的地址可能已被MSB指定,或來自于數(shù)據(jù)傳送期間增加主存儲(chǔ)器地址。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。如果字段有效性標(biāo)志字段指示失敗的AIDAW地址字段是有效的,該字段包含已對其識(shí)別了異常的AIDAW地址。如果字段有效性標(biāo)志字段指示失敗的主存儲(chǔ)器地址字段是有效的,該字段包含已對其識(shí)別了異常的主存儲(chǔ)器地址。
      [0128]存儲(chǔ)級內(nèi)存地址異常:EADM設(shè)施嘗試使用在配置中不可用的存儲(chǔ)級內(nèi)存地址。這樣的地址可能已被MSB指定,或產(chǎn)生于在數(shù)據(jù)傳送期間增加存儲(chǔ)級內(nèi)存地址。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。如果字段有效性標(biāo)志字段指示失敗的AIDAW地址字段是有效的,該字段包含已對其識(shí)別了異常的AIDAW的地址。如果字段有效性標(biāo)志字段指示失敗的存儲(chǔ)級內(nèi)存地址字段是有效的,該字段包含已對其識(shí)別了異常的存儲(chǔ)級內(nèi)存地址。
      [0129]主存儲(chǔ)器錯(cuò)誤:檢測到不正確的主存儲(chǔ)器錯(cuò)誤。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。如果字段有效性標(biāo)志字段指示失敗的AIDAW地址字段是有效的,該字段包含已對其識(shí)別了異常的AIDAW的地址。如果字段有效性標(biāo)志指示失敗的主存儲(chǔ)器地址字段是有效的,該字段包含已對其識(shí)別了異常的主存儲(chǔ)器地址。[0130]MSB列表錯(cuò)誤:Α0Β指定跨過4K字節(jié)邊界的MSB列表,而不指定跨過邊界的分支到下一個(gè)MSB (BNM),或者M(jìn)SB是指定的MSB列表中的最后一個(gè)MSB,且B匪由該MSB指定。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。
      [0131]MSB分支錯(cuò)誤:Α0Β指定MSB列表,其中MSB (分支源MSB)指定分支到下一個(gè)MSB(BW),以及作為分支目標(biāo)的MSB也指定BW。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的分支源MSB的地址。
      [0132]AIDAff列表錯(cuò)誤:MSB指定跨過4K字節(jié)邊界的EADM間接數(shù)據(jù)地址字(AIDAW)列表,而沒有指定跨過邊界的分支到下一個(gè)AWIDAW (BNA)0如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。如果字段有效性標(biāo)志字段指示失敗的AIDAW地址字段是有效的,該字段包含已對其識(shí)別了異常的AIDAW的地址。
      [0133]AIDAff分支錯(cuò)誤:MSB指定EADM間接數(shù)據(jù)地址字(AIDAW)列表,其中AIDAW (分支源AIDAW)指定了分支到源AIDAW (BNA)且作為分支目標(biāo)的AIDAW也指定了 BNA。如果字段有效性標(biāo)志字段指定失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。如果字段有效性標(biāo)志字段指示失敗的AIDAW地址字段是有效的,該字段包含已對其識(shí)別了異常的分支源AIDAW的地址。
      [0134]存儲(chǔ)級內(nèi)存臨時(shí)錯(cuò)誤:檢測到可恢復(fù)的存儲(chǔ)級內(nèi)存錯(cuò)誤。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。如果字段有效性標(biāo)志字段指示失敗的AIDAW地址時(shí)有效的,該字段包含已對其識(shí)別了異常的AIDAW的地址。如果字段有效性標(biāo)志字段指示失敗的存儲(chǔ)級內(nèi)存地址字段是有效的,該字段包含已對其識(shí)別了異常的存儲(chǔ)級內(nèi)存地址。
      [0135]釋放操作不支持錯(cuò)誤:針對釋放操作不被支持的存儲(chǔ)級內(nèi)存,指定了釋放操作。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。如果字段有效性標(biāo)志字段指示失敗的AIDAW地址字段是有效的,該字段包含已對其識(shí)別了異常的AIDAW的地址。如果字段有效性標(biāo)志字段指示失敗的存儲(chǔ)級內(nèi)存地址字段是有效的,該字段包含已對其識(shí)別了異常的存儲(chǔ)級內(nèi)存地址。
      [0136]釋放數(shù)據(jù)讀取錯(cuò)誤:針對最后成功的操作是釋放操作的存儲(chǔ)級內(nèi)存,指定了讀取操作。如果字段有效性標(biāo)志字段指示失敗的MSB地址字段是有效的,該字段包含已對其識(shí)別了異常的MSB的地址。如果字段有效性標(biāo)志字段指示失敗的AIDAW地址字段是有效的,該字段包含已對其識(shí)別了異常的AIDAW的地址。如果字段有效性標(biāo)志字段指示失敗的存儲(chǔ)級內(nèi)存地址字段是有效的,該字段包含已對其識(shí)別了異常的存儲(chǔ)級內(nèi)存地址。
      [0137]失敗的MSB地址250:當(dāng)設(shè)置了字段有效性標(biāo)志字段的指定位時(shí),該字段指示已對其識(shí)別了異常的MSB的地址。
      [0138]失敗的AIDAW地址252:當(dāng)設(shè)置了字段有效性標(biāo)志字段的指定位時(shí),該字段指示已對其識(shí)別了異常的AIDAW的地址。
      [0139]失敗的主存儲(chǔ)器地址254:當(dāng)設(shè)置了字段有效性標(biāo)志字段的指定位時(shí),該字段指示已對其識(shí)別了異常的主存儲(chǔ)器的塊的地址。
      [0140]失敗的存儲(chǔ)級內(nèi)存地址256:當(dāng)設(shè)置了字段有效性標(biāo)志字段的指定位時(shí),該字段包括已對其識(shí)別了異常的存儲(chǔ)級內(nèi)存的塊的(例如64位的)SMC地址。
      [0141]除了 EADM請求塊和EADMD響應(yīng)塊,EADM操作塊(AOB)也指定一個(gè)或多個(gè)EADM移動(dòng)規(guī)格塊(MSB)。AOB可包含多達(dá)例如124個(gè)MSB。但是,程序可通過在ARQB的計(jì)數(shù)字段中指定更大數(shù)量的MSB并通過使用分支到下一個(gè)MSB (B匪)標(biāo)志來分支到MSB列表的延續(xù),來指定超過124個(gè)的MSB。可能存在多個(gè)MSB列表的延續(xù),但是在一個(gè)實(shí)施例中,這些延續(xù)中沒有一個(gè)可跨過4K字節(jié)的邊界而不使用B匪來跨過該邊界。MSB的延續(xù)不要求是連續(xù)的。MSB列表的每個(gè)延續(xù),如果被指定為在4K字節(jié)的邊界上開始,可包含多達(dá)128個(gè)MSB。MSB列表中的MSB總數(shù)由ARQB中的MSB計(jì)數(shù)字段指定。
      [0142]EADM移動(dòng)規(guī)格塊描述例如將在主存儲(chǔ)器和存儲(chǔ)級內(nèi)存之間被移動(dòng)的存儲(chǔ)器塊,或?qū)⒃诖鎯?chǔ)器塊上被執(zhí)行的操作。MSB226的一個(gè)實(shí)施例參考圖2E被描述,且包括例如:
      [0143]格式(FMT) 260:該字段指定MSB的布局。該字段的值是定義的值;否則,在ARSB的異常修飾符代碼字段中指示MSB格式錯(cuò)誤。
      [0144]操作代碼(0C)262:該字段指定將被執(zhí)行的操作。在一個(gè)例子中,當(dāng)如下所述標(biāo)志字段的指定位是定義的值時(shí),該字段指定將被執(zhí)行的操作。示例性操作包括:
      [0145]清除存儲(chǔ)級內(nèi)存:當(dāng)該代碼被指定時(shí),由存儲(chǔ)級內(nèi)存地址、塊大小和塊計(jì)數(shù)字段指定的存儲(chǔ)級內(nèi)存被清除(例如被設(shè)置為零)。主存儲(chǔ)器地址字段對于該操作無意義。
      [0146]讀取:當(dāng)該代碼被指定時(shí),數(shù)據(jù)被指定為從存儲(chǔ)級內(nèi)存?zhèn)鬟f到主存儲(chǔ)器。塊計(jì)數(shù)、塊大小、主存儲(chǔ)器地址和存儲(chǔ)級內(nèi)存地址字段對于該操作有意義。
      [0147]寫入:當(dāng)該代碼被指定時(shí),數(shù)據(jù)被指定為從主存儲(chǔ)器傳遞到存儲(chǔ)級內(nèi)存。塊計(jì)數(shù)、塊大小、主存儲(chǔ)器地址和存儲(chǔ)級內(nèi)存地址字段對該操作有意義。
      [0148]釋放:當(dāng)該代碼被指定且EADM釋放設(shè)施被安裝時(shí),由存儲(chǔ)級內(nèi)存地址、塊大小和塊計(jì)數(shù)字段指定的存儲(chǔ)級內(nèi)存被釋放。主存儲(chǔ)器地址字段對該操作無意義。當(dāng)EADM釋放設(shè)施未被安裝時(shí),該代碼被保留。
      [0149]如果保留值被指定,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,且操作代碼錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0150]當(dāng)標(biāo)志字段的指定標(biāo)志位不是定義的值時(shí),該字段被保留且不被檢驗(yàn)。
      [0151]標(biāo)志264:該字段識(shí)別可被設(shè)置的一個(gè)或多個(gè)標(biāo)志。被保留的標(biāo)志位被設(shè)為定義的值;否則,標(biāo)志錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。示例性標(biāo)志包括:
      [0152].分支到下一個(gè)MSB (B匪):當(dāng)被設(shè)置時(shí),該標(biāo)志指示MSB不指定EADM操作,且不被用來傳送數(shù)據(jù)。反而,主存儲(chǔ)器地址字段指定將被使用以指定EADM操作的下一個(gè)MSB的地址。
      [0153]當(dāng)B匪標(biāo)志被設(shè)置(例如為I)且主存儲(chǔ)器地址字段指定其中也被設(shè)置了 B匪標(biāo)志的MSB時(shí),程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,分支源MSB的地址被存儲(chǔ)在ARSB的失敗的MSB地址字段中,且MSB分支錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0154]如果MSB在4K字節(jié)的邊界結(jié)束,AOB指定額外的MSB,且B匪標(biāo)志未被設(shè)置,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,MSB的地址被存儲(chǔ)在ARSB的失敗的MSB地址字段中,且MSB列表錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0155]如果MSB是指定的MSB列表中的最后一個(gè)MSB且B匪標(biāo)志被設(shè)置,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,MSB的地址被存儲(chǔ)在ARSB的失敗的MSB地址字段中,且MSB列表錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0156]當(dāng)B匪標(biāo)志被設(shè)置時(shí),剩余的標(biāo)志、操作代碼字段、塊大小字段、塊設(shè)置計(jì)數(shù)字段和存儲(chǔ)級內(nèi)存地址無意義。
      [0157].間接尋址:當(dāng)被設(shè)置時(shí),該標(biāo)志指示主存儲(chǔ)器地址字段指定EAM間接數(shù)據(jù)地址字(AIDAff)的地址或指定分別將被用于數(shù)據(jù)傳送的一個(gè)或多個(gè)主存儲(chǔ)器位置的AIDAW列表的第一個(gè)AIDAW的地址。當(dāng)未設(shè)置時(shí),該標(biāo)志指示主存儲(chǔ)器地址字段指定將被用于數(shù)據(jù)傳送的主存儲(chǔ)器位置的地址。
      [0158]塊大小(BS) 266:該字段指定將針對主存儲(chǔ)器和存儲(chǔ)級內(nèi)存兩者被傳送的數(shù)據(jù)塊的大小和邊界,或?qū)⒈徊僮?例如清除或釋放)的存儲(chǔ)級內(nèi)存的塊的大小和邊界。
      [0159]4K:當(dāng)代碼值是一個(gè)定義的值時(shí),將被傳送的數(shù)據(jù)塊是在4K字節(jié)邊界上且大小是4K字節(jié)。
      [0160]IM:當(dāng)代碼值是另一個(gè)定義的值時(shí),將被傳送的數(shù)據(jù)塊是在IM字節(jié)邊界上且大小是IM字節(jié)。
      [0161]如果指定了保留值,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,且塊大小錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0162]當(dāng)B匪標(biāo)志被設(shè)置時(shí),該字段被忽略。
      [0163]塊計(jì)數(shù)268:該字段包括將被傳送或被操作(例如清除或釋放)的數(shù)據(jù)塊的計(jì)數(shù)?;趬K大小字段,這是4K字節(jié)或IM字節(jié)塊的計(jì)數(shù)。
      [0164]該字段的值將大于零,并小于或等于可由MSB指定的取決于模型的最大塊計(jì)數(shù);否則,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,且塊計(jì)數(shù)錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0165]當(dāng)B匪標(biāo)志被設(shè)置時(shí),該字段被保留且不被檢驗(yàn)。
      [0166]主存儲(chǔ)器地址270:當(dāng)操作代碼字段有意義(例如B匪標(biāo)志未被設(shè)置)并指定讀或?qū)懖僮?,且?biāo)志字段中的間接尋址指示符未被設(shè)置時(shí),該字段包括將被用于數(shù)據(jù)傳送的主存儲(chǔ)器地址,且以下各項(xiàng)適用:
      [0167].當(dāng)塊大小字段指定4K字節(jié)的塊時(shí),該字段的指定位包含定義的值(例如零);否貝IJ,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,且主存儲(chǔ)器規(guī)格錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0168].當(dāng)塊大小字段指定IM字節(jié)塊時(shí),該字段的指定位包含定義的值(例如零);否則,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,且主存儲(chǔ)器規(guī)格錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0169]當(dāng)操作代碼字段有意義并指定讀或?qū)懖僮鳎覙?biāo)志字段中的間接尋址指示符被設(shè)置時(shí),該字段包括將被用于數(shù)據(jù)傳送的AIDAW的主存儲(chǔ)器地址或AIDAW列表中的第一個(gè)的地址。對于這種情況,該字段的特定位包含定義的值;否則,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)另Ij,且主存儲(chǔ)器規(guī)格錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0170]當(dāng)B匪標(biāo)志被設(shè)置時(shí),操作代碼無意義,且MSB不指定EADM操作。反而,該字段包括指定EADM操作的下一個(gè)MSB的主存儲(chǔ)器地址。對于這種情況,該字段的指定位包含定義的值;否則,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,且主存儲(chǔ)器規(guī)格錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。[0171]存儲(chǔ)級內(nèi)存地址272:當(dāng)操作代碼字段有意義時(shí),該字段包括將被用于數(shù)據(jù)傳送或?qū)⒈徊僮?例如清除、釋放)的(例如64位)存儲(chǔ)級內(nèi)存地址,且以下各項(xiàng)適用:
      [0172].當(dāng)塊大小字段指定4K字節(jié)的塊時(shí),該字段的指定位包含定義的值(例如零);否貝1J,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,且存儲(chǔ)級內(nèi)存規(guī)格錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0173].當(dāng)塊大小字段指定IM字節(jié)塊時(shí),該字段的指定位包含定義的值;否則,程序檢驗(yàn)條件被通道子系統(tǒng)識(shí)別,且存儲(chǔ)級內(nèi)存規(guī)格錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0174]當(dāng)B匪標(biāo)志被設(shè)置時(shí),該字段被保留且不被檢驗(yàn)。
      [0175]如上指示,EADM間接數(shù)據(jù)地址字可被指定。EADM間接數(shù)據(jù)地址字(AIDAW)允許程序指定在存儲(chǔ)級內(nèi)存和主存儲(chǔ)器的非連續(xù)塊之間的數(shù)據(jù)塊傳送。當(dāng)MSB中的間接尋址標(biāo)志被設(shè)置時(shí),一個(gè)AIDAW或AIDAW列表由MSB指定。
      [0176]由單個(gè)AIDAW傳送的數(shù)據(jù)量由MSB中的塊大小字段指定。AIDAW列表中AIDAW的數(shù)量是MSB中的塊計(jì)數(shù)字段指定的數(shù)量加上指定分支到下一個(gè)AIDAW的AIDAW的數(shù)量的和。數(shù)據(jù)傳送可以與在AIDAW列表中指定的順序不同的順序被處理。而且,由AIDAW列表中的多個(gè)AIDAW指定的數(shù)據(jù)傳送可被并行處理。
      [0177]AIDAW在例如四字邊界上被分配。AIDAW列表可以是任何長度,但在一個(gè)例子中不跨過4K字節(jié)邊界,除非指定了分支到下一個(gè)AIDAW (BNA)來跨過邊界。不要求作為分支目標(biāo)的AIDAW與指定BNA的AIDAW是連續(xù)。但是,程序應(yīng)當(dāng)在盡可能少的4K字節(jié)塊中創(chuàng)建AIDAff列表;否則,可能發(fā)生性能下降。
      [0178]參考圖2F,在一個(gè)例子中,EADM間接數(shù)據(jù)地址字280包括:
      [0179]標(biāo)志282:示例性標(biāo) 志包括:
      [0180]分支到下一個(gè)AIDAW(BNA):當(dāng)被設(shè)置時(shí),該標(biāo)志指示主存儲(chǔ)器地址字段不指定將被用于傳送數(shù)據(jù)的主存儲(chǔ)器地址。反而,主存儲(chǔ)器地址字段指定將被用來傳送數(shù)據(jù)的下一個(gè)AIDAW的地址。
      [0181]當(dāng)BNA標(biāo)志被設(shè)置且主存儲(chǔ)器地址字段指定了其中BNA標(biāo)志也被設(shè)置的AIDAW時(shí),MSB的地址被存儲(chǔ)在ARSB的失敗的MSB地址字段中,分支源AIDAW的地址被存儲(chǔ)在ARSB的失敗的主存儲(chǔ)器地址字段中,且AIDAW分支錯(cuò)誤在ARSB的異常修飾符代碼字段中被指
      /Jn ο
      [0182]如果AIDAW在4K字節(jié)邊界處結(jié)束,MSB指定額外的AIDAW,且BNA標(biāo)志未被設(shè)置,則MSB的地址被存儲(chǔ)在ARSB的失敗的MSB地址字段中,AIDAff的地址被存儲(chǔ)在ARSB的失敗的主存儲(chǔ)器地址字段中,且AIDAW列表錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0183]主存儲(chǔ)器地址284:當(dāng)BNA字段未被設(shè)置時(shí),該字段包括將被用于數(shù)據(jù)傳送的主存儲(chǔ)器地址,且以下各項(xiàng)適用:
      [0184]?當(dāng)MSB中的塊大小字段指定4K字節(jié)的塊時(shí),該字段的指定位包含定義的值(例如零);否則,程序檢驗(yàn)條件被通道子程序識(shí)別,且主存儲(chǔ)器規(guī)格錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。
      [0185]?當(dāng)MSB中的塊大小指定IM字節(jié)的塊時(shí),該字段的指定位包含定義的值(例如零);否則,程序檢驗(yàn)條件被通道子程序識(shí)別,且主存儲(chǔ)器規(guī)格錯(cuò)誤在ARSB的異常修飾符代碼字段中被指示。[0186]?當(dāng)BNA標(biāo)志被設(shè)置時(shí),該字段包括將被用于數(shù)據(jù)傳送的下一個(gè)AIDAW的主存儲(chǔ)器地址。
      [0187]如上所述,EADM操作被開始子通道指令指定。即,程序通過發(fā)出指定ADM類型的子通道和EADM ORB的開始子通道指令而啟動(dòng)EADM操作。指令的執(zhí)行將EADM ORB的內(nèi)容傳遞給指定的子通道。EADM ORB包括子通道鍵的指定(用于保護(hù))和將被使用的AOB的地址。
      [0188] 在一個(gè)例子中,如圖3A所示,開始子通道指令300包括指定開始子通道功能的操作代碼302、第一操作數(shù)304,其是位于例如通用寄存器I中的暗示的操作數(shù),其包括指定將被開始的ADM類型的子通道的子系統(tǒng)標(biāo)識(shí)符;以及第二操作數(shù)306,其是EADM ORB的邏輯地址。EADM ORB指定用于控制開始功能的參數(shù)。在開始子通道的執(zhí)行期間,在設(shè)置條件代碼前,EADM ORB的內(nèi)容被放置在指定的子通道中。如果開始子通道的執(zhí)行導(dǎo)致設(shè)置了指示成功的代碼之外的條件代碼,EADM ORB的內(nèi)容不被放置在指定的子通道中。
      [0189]在用于ADM類型的子通道的開始子通道的執(zhí)行后,通道子系統(tǒng)異步地執(zhí)行開始功能以用EADM設(shè)施啟動(dòng)EADM操作。開始功能包括例如以下各項(xiàng):
      [0190]1.從 AOB 獲取 ARQB。
      [0191]2.執(zhí)行由ARQB及其指定的MSB指定的EADM操作。
      [0192]3.有條件地將ARSB中的完成信息存儲(chǔ)在AOB中。
      [0193]4.使得ADM類型的子通道變成狀態(tài)待決,指示開始功能的完成。
      [0194]在一個(gè)實(shí)施例中,參考圖3B,當(dāng)開始子通道執(zhí)行令被執(zhí)行且SID指定ADM類型的子通道且第二操作數(shù)指定EADM 0RB,在步驟320指定EADM操作。在步驟322EADM ORB中的參數(shù)被傳遞給指定的子通道,且在步驟324通道子系統(tǒng)被請求以利用EADM設(shè)施執(zhí)行開始功能。在步驟326,通道子系統(tǒng)通過使用子通道處的信息(包括在開始子通道指令的執(zhí)行期間傳遞的信息)啟動(dòng)EADM操作,來異步地執(zhí)行開始功能。
      [0195]在步驟328,EADM操作(例如第一操作)的執(zhí)行包括使用來自EADM ORB的信息獲得Α0Β,且在步驟330該信息被用在AOB中以獲得EADM請求塊(ARQB)以及指定一個(gè)或多個(gè)EADM移動(dòng)規(guī)格塊(MSB)。然后在步驟332 —個(gè)或多個(gè)指定的MSB從主存儲(chǔ)器被獲取,并且在MSB中指定的信息被用于控制所請求的EADM操作。當(dāng)通道子系統(tǒng)試圖開始數(shù)據(jù)傳送或試圖清除或釋放操作時(shí),第一操作被認(rèn)為開始了。
      [0196]在步驟334通道子系統(tǒng)執(zhí)行MSB中請求的操作。該處理與開始處理的執(zhí)行是異步的。
      [0197]當(dāng)在步驟336被開始子通道啟動(dòng)的EADM操作結(jié)束時(shí),通道子系統(tǒng)在步驟338產(chǎn)生狀態(tài)條件。在步驟339,通過I/O中斷使這些條件的生成引起程序的注意。程序也會(huì)通過執(zhí)行測試待決中斷指令來查詢這些條件。
      [0198]生成的狀態(tài)條件以EADM子通道狀態(tài)字(SCSW)的形式被呈現(xiàn)給程序。通過執(zhí)行測試子通道指令,EADM SCSW被存儲(chǔ)為EADM中斷響應(yīng)塊(IRB)的一部分。
      [0199]當(dāng)在EADM操作塊(AOB)中指定的EADM操作被結(jié)束時(shí),通道子系統(tǒng)產(chǎn)生初級和次級中斷狀態(tài)。EADM操作可被清除子通道終止或者在執(zhí)行開始功能時(shí)異常條件被識(shí)別。
      [0200]對于移動(dòng)操作,由通道子系統(tǒng)進(jìn)行的MSB的處理控制信息單位到主存儲(chǔ)器或來自主存儲(chǔ)器的流。為了改變MSB處理期間數(shù)據(jù)移動(dòng)的方向,需要新的MSB。ARQB指定構(gòu)成請求的MSB的計(jì)數(shù)。[0201]每個(gè)EADM操作由一個(gè)MSB表示。MSB可指定以下各項(xiàng)中的任一個(gè):[0202].從主存儲(chǔ)器到存儲(chǔ)級內(nèi)存的數(shù)據(jù)塊的傳送。[0203].從存儲(chǔ)級內(nèi)存到主存儲(chǔ)器的數(shù)據(jù)塊的傳送。[0204].清除存儲(chǔ)級內(nèi)存的塊。[0205].當(dāng)安裝了 EADM釋放設(shè)施時(shí),釋放存儲(chǔ)級內(nèi)存的塊。[0206]如果將為移動(dòng)操作而傳送的存儲(chǔ)塊在主存儲(chǔ)器中不是連續(xù)的,可使用新的MSB,或者M(jìn)SB可通過指定EADM間接數(shù)據(jù)地址字(AIDAW)列表而使用間接地址,以指定不連續(xù)塊。由于MSB可僅在一個(gè)方向指定數(shù)據(jù)傳送,當(dāng)數(shù)據(jù)傳送方向有變化時(shí)要使用新的MSB。[0207]以下是EADM數(shù)據(jù)傳送的特點(diǎn):[0208].數(shù)據(jù)傳送可不按指定的MSB列表的順序被處理。[0209].由MSB列表中的多個(gè)MSB指定的數(shù)據(jù)傳送可被并行處理。[0210].數(shù)據(jù)傳送可以不按指定AIDAW列表的順序被處理。[0211]?在AIDAW列表中的多個(gè)AIDAW中指定的數(shù)據(jù)傳送可被同時(shí)處理。[0212].對主存儲(chǔ)器和存儲(chǔ)級內(nèi)存的訪問不必須是單一訪問引用,且不必須以從左到右的方向被執(zhí)行,如程序和其他CPU所觀察到的。[0213].如果兩個(gè)或更多個(gè)EADM操作當(dāng)前是活動(dòng)的并尋址相同的SCM位置、主存儲(chǔ)器位置或這兩者,操作可被同時(shí)執(zhí)行且來自不同操作的內(nèi)容可被交錯(cuò);但是:[0214]一對于輸入操作,被EADM設(shè)施存儲(chǔ)到主存儲(chǔ)器的每個(gè)塊的、其大小等于SCM塊并行大小的數(shù)據(jù)由僅通過一個(gè)并行EADM操作而從存儲(chǔ)級內(nèi)存?zhèn)魉偷臄?shù)據(jù)組成。[0215]一對于輸出操作,存儲(chǔ)級內(nèi)存的位于邊界上的、且大小等于SCM塊并行大小的每個(gè)塊包含僅被一個(gè)并行EADM操作指定的數(shù)據(jù)。[0216]以上是真實(shí)的,而不考慮EADM操作是否被單個(gè)AOB指定,且被開始功能的相同實(shí)例處理,或EADM操作被不同的AOB指定,且被開始功能的不同實(shí)例處理。[0217].當(dāng)EADM操作對于子通道是活動(dòng)的時(shí),無法預(yù)測是否由程序?qū)RQB、MSB、AIDAff和與該活動(dòng)的操作關(guān)聯(lián)的傳送數(shù)據(jù)作出的更改被EADM設(shè)施觀察到。[0218]當(dāng)被AOB指定的所有MSB指定的所有的塊已被傳送或清除或釋放時(shí),子通道生成狀態(tài),其被存儲(chǔ)在子通道中,并請求用于ADM類型的子通道的I/O中斷。[0219]EADM操作的結(jié)束通常由通道和設(shè)備終端的的組合狀態(tài)條件指示。該狀態(tài)組合表示初級和次級狀態(tài)的組合,其指示狀態(tài)被清除后,子通道可用于另一個(gè)開始功能。[0220]如上所述,MSB可指定數(shù)據(jù)傳送操作、清除操作或釋放操作,每種操作都在以下被描述。[0221]當(dāng)請求移動(dòng)操作時(shí),一個(gè)或多個(gè)數(shù)據(jù)塊在主存儲(chǔ)器和存儲(chǔ)級內(nèi)存之間移動(dòng)。例如,對于讀取操作,SCM數(shù)據(jù)從提供由指定的SCM地址指定的內(nèi)容的SSD獲取,隨后該內(nèi)容被存儲(chǔ)在主存儲(chǔ)器中。對于寫操作,該過程被保留??刂芐SD的適配器執(zhí)行存儲(chǔ)。在進(jìn)一步的細(xì)節(jié)中,為了執(zhí)行移動(dòng)操作,系統(tǒng)固件首先將給定SCM地址轉(zhuǎn)換為適配器地址(例如邏輯卷地址,其中邏輯卷包括一個(gè)或多個(gè)SSD)。例如,將SCM地址與適配器地址關(guān)聯(lián)的轉(zhuǎn)換表被使用。系統(tǒng)固件隨后向一個(gè)或多個(gè)I/o適配器提交一個(gè)或多個(gè)對應(yīng)的適配器移動(dòng)命令(例如讀或?qū)?。適配器移動(dòng)命令包含主存儲(chǔ)器地址、適配器地址和傳送大小。適配器隨后使用另一個(gè)轉(zhuǎn)換表來定位一個(gè)或多個(gè)物理SSD地址,其對應(yīng)于適配器地址。I/O適配器通過從主存儲(chǔ)器獲取數(shù)據(jù)并將其存儲(chǔ)在SSD中,或從SSD獲取數(shù)據(jù)并將其存儲(chǔ)在主存儲(chǔ)器中來實(shí)現(xiàn)移動(dòng)操作。在文檔號為 P0U920110090US1、標(biāo)題為“Firmware Management of Storage ClassMemory”(存儲(chǔ)級內(nèi)存的固件管理)的共同提交的專利申請中進(jìn)一步提供額外的細(xì)節(jié),該文獻(xiàn)在此通過引用全文并入本文。
      [0222]當(dāng)執(zhí)行清除操作時(shí),通過將內(nèi)容設(shè)為零,指定的存儲(chǔ)級內(nèi)存增量被清除。
      [0223]而且,當(dāng)釋放操作被執(zhí)行時(shí),一個(gè)或多個(gè)標(biāo)準(zhǔn)TRIM命令可被提交給包含對應(yīng)的SCM地址的SSD。TRM命令允許程序給出關(guān)于塊使用的暗示,從而允許由SSD進(jìn)行的更好的垃圾收集。TRM命令允許操作系統(tǒng)通知SSD,哪些存儲(chǔ)塊不再被認(rèn)為在使用中且可被消除。
      [0224]EADM操作可被清除子通道指令提前中斷。清除子通道指令的執(zhí)行終止子通道處的AOB的執(zhí)行,從子通道清除執(zhí)行中的AOB的指示,并異步地執(zhí)行清除功能。當(dāng)清除功能被執(zhí)行時(shí),在子通道變成狀態(tài)待決之前,數(shù)據(jù)傳送被終止且傳送的數(shù)據(jù)量是不可預(yù)測的。清除功能的執(zhí)行不會(huì)導(dǎo)致狀態(tài)生成,但是會(huì)引起通道子系統(tǒng)使得I/o中斷待決。
      [0225]在一個(gè)實(shí)施例中,參考圖3C,清除子通道指令350包括操作代碼352,其指定清除子通道功能。將被清除的子通道被例如通用寄存器中的子系統(tǒng)識(shí)別字指定。用于ADM類型的子通道的清除功能包括:
      [0226]1.保證當(dāng)前數(shù)據(jù)傳送被終止。
      [0227]2.修改子通道處的字段以及有條件地修改ARSB。例如,子通道狀態(tài)字被修改為在功能控制字段中和活動(dòng)的控制字段中指示清除功能。ARSB可被修改為反應(yīng)任何檢測到的錯(cuò)誤。
      [0228]3.使得子通道變?yōu)闋顟B(tài)待決,指示清除功能的完成。
      [0229]也可發(fā)出可指定ADM類型的子通道的其他指令,包括測試子通道、修改子通道和存儲(chǔ)子通道,每種指令都在以下描述。
      [0230]參考圖3D,在一個(gè)例子中,測試子通道指令360包括例如操作代碼362,其指定測試子通道功能;第一操作數(shù)364,其是位于例如通用寄存器I中的暗示的操作數(shù),其包含指定將被測試的子通道的子系統(tǒng)識(shí)別字;以及第二操作數(shù)366,其是其中存儲(chǔ)了信息的信息響應(yīng)塊(IRB)的邏輯地址。
      [0231]當(dāng)測試子通道被執(zhí)行,且指定ADM類型的子通道,子通道是狀態(tài)待決的,且信息被存儲(chǔ)在指定的EADM IRB (中斷響應(yīng)塊)中時(shí),設(shè)置指定的條件代碼。當(dāng)子通道不是狀態(tài)待決的且狀態(tài)信息被存儲(chǔ)在指定的EADMIRB中時(shí),定義的條件代碼被設(shè)置。當(dāng)子通道未被提供或未被使能時(shí),不采取動(dòng)作。
      [0232]在一個(gè)例子中,EADM IRB包括子通道狀態(tài)字(SSW)和擴(kuò)展?fàn)顟B(tài)字(ESW),以及可提供額外的取決于模型的信息的擴(kuò)展控制字,其描述可能在設(shè)施中存在的條件。在討論可指定ADM類型的子通道的各種指令后,這些字的每個(gè)在以下被進(jìn)一步描述。
      [0233]參考圖3E,在一個(gè)實(shí)施例中,修改子通道指令370包括操作代碼372,其指示修改子通道功能;第一操作數(shù)374,其是位于例如通用寄存器I中的暗示的操作數(shù),其包括指定將被修改的子通道的子系統(tǒng)識(shí)別字;以及第二操作數(shù)376,其是與子通道關(guān)聯(lián)的子通道信息塊(SCHIB)的邏輯地址。
      [0234]當(dāng)修改子通道被執(zhí)行且指定ADM類型的子通道,且來自指定的子通道信息塊(SCHIB)的信息被放置在子通道中時(shí),設(shè)置特定條件代碼。當(dāng)子通道是狀態(tài)待決的,不采取動(dòng)作,且設(shè)置定義的狀態(tài)代碼。當(dāng)子通道忙于開始或清除功能時(shí),不采取動(dòng)作。
      [0235]參考圖3F,描述了存儲(chǔ)子通道指令的一個(gè)例子。在一個(gè)例子中,存儲(chǔ)子通道指令380包括操作代碼380,其識(shí)別存儲(chǔ)子通道功能;第一操作數(shù)384,其是位于例如通用寄存器I中的暗示的操作數(shù),其包括指定信息正被存儲(chǔ)的子通道的子系統(tǒng)識(shí)別字;以及第二操作數(shù)386,其是SCHIB的邏輯地址。
      [0236]當(dāng)存儲(chǔ)子通道被發(fā)出且指定ADM類型的子通道,且SCHIB被存儲(chǔ)時(shí),指定的條件代碼被設(shè)置。當(dāng)指定的子通道在通道子系統(tǒng)中未被提供時(shí),不采取動(dòng)作。
      [0237]參考圖4A描述了用于ADM類型的子通道EADM (SCHIB)的子通道信息塊的一個(gè)例子。在一個(gè)例子中,EADM SCHIB400包括取決于模型的區(qū)域401,其包括取決于模型的信息。而且,SCHIB400包括路徑管理控制字(PMCW) 402,以及子通道狀態(tài)字(SCSW) 404,其每種將在以下被描述。
      [0238]在一個(gè)實(shí)施例中,EADM PMCW402包括例如在圖4B中示出的以下字段:
      [0239]中斷參數(shù)410:該字段包括被存儲(chǔ)在I/O中斷代碼中的中斷參數(shù)。中斷參數(shù)可被設(shè)開始子通道和修改子通道設(shè)為任何值。子通道中的中斷參數(shù)字段的初始值是零。
      [0240]中斷子類(ISC) 412:該字段包括多個(gè)位,其是指定范圍內(nèi)的無符號的二進(jìn)制整數(shù),對應(yīng)于配置中的每個(gè)CPU的指定控制寄存器中的I/O中斷子類掩碼位的位位置。在CPU的控制寄存器中的掩碼位的設(shè)置控制了該CPU對與子通道關(guān)聯(lián)的中斷請求的識(shí)別。ISC可被修改子通道設(shè)為一個(gè)值。子通道中的ISC字段的初始值是例如零。
      [0241]使能(E) 414:當(dāng)被設(shè)置時(shí),該字段指示子通道被使能 用于所有EADM功能。
      [0242]子通道類型(ST)416:該字段指示子通道類型。根據(jù)模型和配置,一個(gè)或多個(gè)以下子通道類型可被提供:1/0子通道或ADM子通道。
      [0243]當(dāng)子通道被配置時(shí)該字段的值被確定,且不能被修改子通道改變。
      [0244]當(dāng)修改子通道指令被執(zhí)行并制定ADM類型的子通道時(shí),ST將指示ADM子通道;否貝U,操作數(shù)異常被識(shí)別。
      [0245]參考圖4A,子通道信息塊也包括子通道狀態(tài)字404。EADM子通道狀態(tài)字(SCSW)提供了對程序的指示,其描述了 ADM類型的子通道和相關(guān)EADM操作的狀態(tài)。在一個(gè)例子中,如圖4C所示,子通道狀態(tài)字404包括:
      [0246]子通道鍵(鍵)420:當(dāng)功能控制字段(如下描述的)中的EADM開始功能指示符被設(shè)置時(shí),該字段包括被通道子系統(tǒng)使用的存儲(chǔ)訪問鍵。當(dāng)開始子通道被執(zhí)行時(shí),這些位與在EADM ORB中指定的鍵相同。
      [0247]擴(kuò)展?fàn)顟B(tài)字格式(L)422:當(dāng)狀態(tài)控制字段(如下描述的)的狀態(tài)待決指示符被設(shè)置時(shí),該字段,當(dāng)被設(shè)置時(shí),指示格式-OESW已被存儲(chǔ)。當(dāng)包含以下任何指示的中斷條件被測試子通道清除時(shí),格式-OESW被存儲(chǔ):
      [0248].程序檢驗(yàn)
      [0249].保護(hù)檢驗(yàn)
      [0250].通道數(shù)據(jù)檢驗(yàn)
      [0251]?通道控制檢驗(yàn)
      [0252]?擴(kuò)展的異步數(shù)據(jù)移動(dòng)設(shè)施(EADMF)[0253]延遲條件代碼(CC)424:當(dāng)EADM開始功能指示符被設(shè)置且狀態(tài)待決指示符也被設(shè)置時(shí),該字段指示當(dāng)測試子通道或存儲(chǔ)子通道被執(zhí)行時(shí)子通道是狀態(tài)待決的一般原因。當(dāng)子通道以任何狀態(tài)組合是狀態(tài)待決的,且僅當(dāng)SCSW中的功能控制字段的開始功能指示符被設(shè)置時(shí),延遲條件代碼是有意義的。
      [0254]如被設(shè)置,延遲條件代碼被用來指示是否遇到在子通道是開始待決時(shí)阻止子通道變?yōu)樽油ǖ阑顒?dòng)的情況。
      [0255] 示例性延遲條件代碼包括:
      [0256].正常的I/O中斷已被呈現(xiàn)。
      [0257].狀態(tài)存在于EADM SCSff中,其是由通道子系統(tǒng)為阻止EADM開始功能被成功啟動(dòng)的情況生成的。即,子通道不會(huì)轉(zhuǎn)換到子通道活動(dòng)狀態(tài)。
      [0258]CCff格式(F) 426:當(dāng)EADM開始功能指示符被設(shè)置時(shí),該字段被存儲(chǔ)為定義的值。
      [0259]預(yù)獲取(P) 428:當(dāng)EADM開始功能指示符被設(shè)置時(shí),該字段被存儲(chǔ)為定義的值。
      [0260]擴(kuò)展控制(E)430:當(dāng)被設(shè)置時(shí),該字段指示取決于模型的信息被存儲(chǔ)在EADM擴(kuò)展控制字(ECW)中。
      [0261]功能控制(FC)432:功能控制字段指示在子通道處被指示的EADM功能。示例性功能包括:
      [0262]?EADM開始功能:當(dāng)被設(shè)置時(shí),指示EADM開始功能已被請求,且在ADM類型的子通道處處于待決或進(jìn)行中狀態(tài)。當(dāng)對于開始子通道成功的條件代碼被設(shè)置時(shí),EADM開始功能在子通道中被指示。當(dāng)測試子通道被執(zhí)行且子通道是狀態(tài)待決的時(shí),EADM開始功能在子通道被清除。在清除子通道的執(zhí)行期間,EADM開始功能也在子通道處被清除。
      [0263].EADM清除功能:當(dāng)被設(shè)置時(shí),指示EADM清除功能已被請求且在ADM類型的子通道處處于待決或進(jìn)行中狀態(tài)。當(dāng)為清除子通道設(shè)置了成功的條件代碼時(shí),EADM清除功能在子通道處被指示。當(dāng)測試子通道被執(zhí)行且子通道是狀態(tài)待決的時(shí),EADM清除功能指示在子通道處被清除。
      [0264]活動(dòng)控制(AC)434:活動(dòng)控制字段指示之前在子通道處接受的EADM功能的當(dāng)前進(jìn)度。
      [0265]當(dāng)測試子通道被執(zhí)行且子通道是狀態(tài)待決的時(shí),在活動(dòng)控制字段中由位表示的所有條件在ADM類型的子通道處被重置。
      [0266]示例性活動(dòng)包括:
      [0267].開始待決:當(dāng)被設(shè)置時(shí),指示子通道是開始待決的。通道子系統(tǒng)可能處于或不處于執(zhí)行EADM開始功能的過程中。當(dāng)為開始子通道設(shè)置成功的條件代碼時(shí),子系統(tǒng)變?yōu)殚_始待決的。當(dāng)執(zhí)行EADM開始功能且通道子系統(tǒng)確定阻止獲取ARQB的條件存在時(shí),子通道保持開始待決。
      [0268]當(dāng)以下各項(xiàng)中的任何一個(gè)發(fā)生時(shí),子通道不再是開始待決的,
      [0269].通道子系統(tǒng)試圖啟動(dòng)由AOB指定的第一個(gè)數(shù)據(jù)傳送。
      [0270].清除子通道被執(zhí)行。
      [0271].測試子通道清除子通道處的狀態(tài)條件。
      [0272]清除待決:當(dāng)被設(shè)置時(shí),子通道是清除待決的。通道子系統(tǒng)可以處于或不處于執(zhí)行EADM清除功能的過程中。當(dāng)為清除子通道設(shè)置指定的條件代碼時(shí),子通道變成清除待決的。[0273]當(dāng)以下各項(xiàng)中的任一個(gè)發(fā)生時(shí),子通道不再是清除待決的:
      [0274].EADM清除功能被執(zhí)行。
      [0275].測試子通道單獨(dú)清除狀態(tài)待決條件。
      [0276]子通道活動(dòng)的:當(dāng)被設(shè)置時(shí),指示ADM類型的子通道是子通道活動(dòng)的。當(dāng)通道子系統(tǒng)試圖啟動(dòng)由AOB指定的第一個(gè)數(shù)據(jù)傳送或執(zhí)行第一個(gè)操作(看哪個(gè)先發(fā)生)時(shí),ADM類型的子通道被稱為是子通道活動(dòng)的。
      [0277]當(dāng)以下各項(xiàng)中的任何一個(gè)發(fā)生時(shí),子通道不再是子通道活動(dòng)的:
      [0278].子通道變成狀態(tài)待決。
      [0279].執(zhí)行了清除子通道。
      [0280]狀態(tài)控制(SC) 436:狀態(tài)控制字段向程序提供了由子通道狀態(tài)和設(shè)備狀態(tài)字段中的信息描述的中斷條件的摘要級指示。多于一個(gè)的狀態(tài)控制指示符可被設(shè)置,作為子通道處的條件的結(jié)果。
      [0281]示例性狀態(tài)控制包括:
      [0282]告警狀態(tài):當(dāng)被設(shè)置時(shí),指示存在告警中斷條件。當(dāng)告警狀態(tài)出現(xiàn)在子通道時(shí),告警中斷條件被識(shí)別。在以下任何條件下告警狀態(tài)被通道子系統(tǒng)生成:
      [0283].ADM類型的子通道是開始待決的,且狀態(tài)條件阻止第一個(gè)數(shù)據(jù)傳送的啟動(dòng)。
      [0284].子通道是子通道活動(dòng)的,且被報(bào)告為子通道狀態(tài)的異常條件已終止了 EADM操作。
      [0285]當(dāng)測試子通道或清除子通道被執(zhí)行時(shí),告警狀態(tài)在子通道處被清除。
      [0286]初級狀態(tài):當(dāng)被設(shè)置時(shí),指示存在初級狀態(tài)。當(dāng)初級狀態(tài)出現(xiàn)在子通道時(shí),初級中斷條件被識(shí)別。初級中斷條件是請求的中斷條件,當(dāng)伴隨有次級中斷條件時(shí),其指示EADM開始功能在子通道處完成。
      [0287]當(dāng)執(zhí)行測試子通道或清除子通道時(shí),初級中斷條件在子通道處被清除。
      [0288]次級狀態(tài):當(dāng)被設(shè)置時(shí),指示存在次級中斷條件。當(dāng)次級狀態(tài)出現(xiàn)在子通道時(shí),次級中斷條件被識(shí)別。次級中斷條件時(shí)請求的中斷條件,當(dāng)伴隨有初級中斷條件時(shí),其指示子通道處的EADM開始功能的完成。
      [0289]當(dāng)測試子通道或清除子通道被執(zhí)行時(shí),次級中斷條件在子通道處被清除。
      [0290]狀態(tài)待決:當(dāng)被設(shè)置時(shí),指示子通道是狀態(tài)待決的,且描述中斷條件的原因的信息是可用的。當(dāng)測試子通道被執(zhí)行從而以設(shè)置的狀態(tài)待決位存儲(chǔ)EADM SCSW時(shí),所有的EADMSCSW指示在子通道處被清除,從而將子通道置于空閑狀態(tài)。在清除子通道的執(zhí)行期間,狀態(tài)待決條件也在子通道處被清除。
      [0291]當(dāng)狀態(tài)待決被設(shè)置時(shí),所有對用于子通道ARSB的主存儲(chǔ)器和存儲(chǔ)級內(nèi)存的訪問都被終止。
      [0292]子通道狀態(tài)438 =ADM類型的子通道狀態(tài)條件被通道子系統(tǒng)檢測并存儲(chǔ)在子通道狀態(tài)字段中。當(dāng)子通道是狀態(tài)待決的時(shí),子通道狀態(tài)字段是有意義的。除了由設(shè)備故障引起的條件,僅當(dāng)通道子系統(tǒng)涉及EADB功能的處理時(shí),可產(chǎn)生子通道狀態(tài)。
      [0293]狀態(tài)條件的例子包括:
      [0294].程序檢驗(yàn):當(dāng)編程錯(cuò)誤被通道子系統(tǒng)檢測到時(shí),發(fā)生程序檢驗(yàn)。
      [0295].保護(hù)檢驗(yàn):當(dāng)通道子系統(tǒng)試圖進(jìn)行被保護(hù)機(jī)制阻止的存儲(chǔ)訪問時(shí),保護(hù)檢驗(yàn)發(fā)生。保護(hù)適用于獲取ARQB、MSB、AIDAW,以及將被傳送給存儲(chǔ)級內(nèi)存的數(shù)據(jù),以及適用于ARSB中的信息存儲(chǔ)和從存儲(chǔ)級內(nèi)存?zhèn)魉偷臄?shù)據(jù)。[0296].通道數(shù)據(jù)檢驗(yàn):通道數(shù)據(jù)檢驗(yàn)指示針對從主存儲(chǔ)器的數(shù)據(jù)獲取或?qū)?shù)據(jù)存儲(chǔ)到主存儲(chǔ)器中而檢驗(yàn)到不正確的存儲(chǔ)錯(cuò)誤。[0297].通道控制檢驗(yàn):通道控制檢驗(yàn)指示針對AOB、MSB或AIDAW的獲取或存儲(chǔ)檢測到不正確的存儲(chǔ)錯(cuò)誤,或通道子系統(tǒng)遇到機(jī)器故障且故障影響EADM操作。[0298]?擴(kuò)展的異步數(shù)據(jù)移動(dòng)(EADM)設(shè)施檢驗(yàn):EADM設(shè)施檢驗(yàn)指示針對到存儲(chǔ)級內(nèi)存的數(shù)據(jù)傳送或來自存儲(chǔ)級內(nèi)存的數(shù)據(jù)傳送,或針對在存儲(chǔ)級內(nèi)存上執(zhí)行操作,錯(cuò)誤被EADM設(shè)施檢驗(yàn)到。[0299]當(dāng)程序檢驗(yàn)、保護(hù)檢驗(yàn)、通道數(shù)據(jù)檢驗(yàn)、通道控制檢驗(yàn)或EADM設(shè)施檢驗(yàn)條件被通道子系統(tǒng)識(shí)別時(shí),EADM操作被終止,且通道變成狀態(tài)待決的,具有初級、次級和告警狀態(tài)。[0300]EADM操作塊地址440:該字段指示EADM操作塊地址。[0301]設(shè)備狀態(tài)442:這包括設(shè)備端或通道端。[0302]當(dāng)子通道狀態(tài)字的ESW格式422被設(shè)置,且子通道是狀態(tài)待決的,提供EADM子通道擴(kuò)展?fàn)顟B(tài)字(EADM ESW),其指定關(guān)于ADM類型的子通道的額外信息。[0303]在一個(gè)例子中,參考圖4D,EADM子通道擴(kuò)展?fàn)顟B(tài)字450包括:[0304]EADM子通道注銷452:在一個(gè)例子中,EADM子通道注銷包括:[0305].擴(kuò)展?fàn)顟B(tài)標(biāo)志(ESF):當(dāng)其位是一時(shí),該字段指定錯(cuò)誤已被通道子系統(tǒng)檢測到。[0306]擴(kuò)展?fàn)顟B(tài)標(biāo)志的例子包括:[0307]鍵檢驗(yàn):當(dāng)被設(shè)置時(shí),指示通道子系統(tǒng)已檢測到當(dāng)引用EADM操作塊(AOB)、EADM移動(dòng)規(guī)格塊(MSB)、或EADM間接數(shù)據(jù)地址字中(AIDAW)中的數(shù)據(jù)時(shí)相關(guān)存儲(chǔ)鍵上的無效的檢驗(yàn)塊代碼(CBC)。[0308]-AOB地址有效性:當(dāng)被設(shè)置時(shí),指示存儲(chǔ)在SCSW的AOB地址字段中的地址不能被用于恢復(fù)目的。[0309]EADM擴(kuò)展報(bào)告字454,其包括例如:[0310]EADM操作塊錯(cuò)誤指示符,當(dāng)被設(shè)置時(shí),指示存儲(chǔ)在EADM SCSff中的異常狀態(tài)與指定的EADM操作塊(AOB)關(guān)聯(lián);且EADM響應(yīng)塊存儲(chǔ)(R)指示符,當(dāng)被設(shè)置時(shí),指示EADM響應(yīng)塊(ARSB)被存儲(chǔ)。[0311]當(dāng)SCSW的擴(kuò)展的控制指示符和SCSW的擴(kuò)展的狀態(tài)字格式指示符被設(shè)置時(shí),EADM擴(kuò)展控制字提供取決于模型的性質(zhì)的額外信息,其描述了可能在EADM設(shè)施中存在的條件。[0312]此外,以下通道報(bào)告字(CRW)可針對ADM類型的子通道被報(bào)告;子通道安裝的參數(shù)被初始化;子通道安裝的參數(shù)被恢復(fù);子通道可用;子通道事件信息待決。[0313]發(fā)生在EADM設(shè)施中的未經(jīng)請求的事件和故障可被通道事件信息待決CRW報(bào)告。[0314]以上詳細(xì)描述了擴(kuò)展異步數(shù)據(jù)移動(dòng)器設(shè)施,其用于在主存儲(chǔ)器和存儲(chǔ)級內(nèi)存之間移動(dòng)數(shù)據(jù)塊,并執(zhí)行存儲(chǔ)級內(nèi)存上的其他操作。在一個(gè)實(shí)施例中,使用EADM命令獲得關(guān)于EADM設(shè)施和存儲(chǔ)級內(nèi)存的信息。特別地,由于存儲(chǔ)級內(nèi)存不是直接可被訪問的,提供能力以確定存儲(chǔ)級內(nèi)存是否被分配,以及如果是這樣,獲取關(guān)于配置的信息。特別地,在一個(gè)例子中,提供能力以與控制程序(例如操作系統(tǒng))交流是否存儲(chǔ)級內(nèi)存已被分配,以及如果是這樣,分配了多少以及在什么位置。確定可用的存儲(chǔ)級內(nèi)存的能力在此被稱為發(fā)現(xiàn),且發(fā)現(xiàn)功能的一個(gè)例子是由存儲(chǔ)存儲(chǔ)級內(nèi)存(SCM)信息(SSI)命令提供的。
      [0315]存儲(chǔ)存儲(chǔ)級內(nèi)存信息(SSI)命令被用于獲取關(guān)于存儲(chǔ)級內(nèi)存以及擴(kuò)展異步數(shù)據(jù)移動(dòng)器設(shè)施的信息。SSI命令返回以下從例如通道子系統(tǒng)獲取的信息。
      [0316]1.EADM設(shè)施的特征,包括:
      [0317].每個(gè)AOB的移動(dòng)規(guī)格塊(MSB)的最大計(jì)數(shù)。
      [0318].每個(gè)MSB的最大塊計(jì)數(shù)。
      [0319]2.存儲(chǔ)級內(nèi)存的特征,包括:
      [0320].SCM增量大小。
      [0321 ].SCM地址空間內(nèi)的SCM地址增量列表。
      [0322].取決于模型的最大SCM地址。
      [0323]執(zhí)行存儲(chǔ)SCM信息命令,其是同步的,不改變包含在通道子系統(tǒng)中的任何信息。
      [0324]關(guān)于SSI命令的進(jìn)一步信息將參考圖5A-?進(jìn)行描述。首先參考圖5A,在一個(gè)實(shí)施例中,用于存儲(chǔ)SCM信息命令的命令請求塊500包括例如:
      [0325]長度502:指定命令請求快的長度的值。
      [0326]命令代碼504:指定用于存儲(chǔ)SCM信息命令的命令代碼的值。
      [0327]格式(FMT) 506:指定命令請求塊的格式的值。
      [0328]繼續(xù)令牌508:可請求從未完成的之前響應(yīng)恢復(fù)的繼續(xù)點(diǎn)的值。如果繼續(xù)令牌的值是零,作出新的開始。如果繼續(xù)令牌的值是非零且不被識(shí)別,作出新的開始。
      [0329]SSI命令的響應(yīng)塊520的一個(gè)實(shí)施例將參考圖5B描述,且包括例如:
      [0330]長度522:指示命令響應(yīng)塊的字節(jié)長度的值。
      [0331]響應(yīng)代碼524:描述嘗試執(zhí)行SSI命令的結(jié)果的值。響應(yīng)代碼值指定響應(yīng)塊的長度。例如,如果選定的響應(yīng)代碼被存儲(chǔ),長度指示96+Nxl6字節(jié),其中N是存儲(chǔ)級內(nèi)存地址列表項(xiàng)的數(shù)量,如以下描述的。在一個(gè)例子中,N位于NS 248的范圍。
      [0332]格式(FMT) 526:指示命令響應(yīng)塊的格式的值。該字段的值是例如零。
      [0333]RQ528:響應(yīng)修飾符值,如以下描述的:
      [0334]不存在響應(yīng)修飾。
      [0335]指定的繼續(xù)令牌不被識(shí)別,且被處理為如同零已被指定。
      [0336]每個(gè)MSB最大塊計(jì)數(shù)(MBC) 530:指示可被用在移動(dòng)規(guī)格塊(MSB)的塊計(jì)數(shù)字段中的最大值的值。
      [0337]最大SCM地址(MSA)532:指示取決于模型的最大SCM地址的值。它是最高可尋址的SCM增量中的最后一個(gè)字節(jié)的SCM地址。
      [0338]SCM增量大小(IS) 534:表示SCM地址列表中的每個(gè)SCM增量的大小的值,且例如是2的冪。
      [0339]最大MSB計(jì)數(shù)(MMC) 536:指示可在EADM操作塊(AOB)中被指定的移動(dòng)規(guī)格塊(MSB)的最大計(jì)數(shù)的值。
      [0340]最大可配置SCM增量(MCI) 538:可被配置到請求配置的SCM增量的最大數(shù)量的值。
      [0341]在一個(gè)實(shí)施例中,MCI不超過2(64_is)。例如,對于16G字節(jié)的SCM增量大小,MCI ( 2(64_34),因?yàn)樗械?6G字節(jié)的SCM增量可在64位地址的尋址約束中被尋址。而且,((MCI+1) XIS)-1不超過取決于模型的最大SCM地址。
      [0342]配置的SCM增量(NIC)的數(shù)量降低了當(dāng)如下描述的成功的配置存儲(chǔ)級內(nèi)存命令被執(zhí)行時(shí)可被指定的總大小(TS),這樣TS < (MC1-NCI)。但是,基于系統(tǒng)的整個(gè)容量和已對其他配置作出的分配,初始化狀態(tài)中的SCM增量的數(shù)量可以能夠或不能夠完全滿足請求,以便以其他方式有效地配置到請求的配置的MCI界限。
      [0343]CPC的總初始化SCM增量540:表示用于系統(tǒng)(例如,用于中央處理復(fù)合體(CPC))的初始化狀態(tài)中的SCM增量的數(shù)量的值。如果系統(tǒng)被邏輯分區(qū),這是分配給分區(qū)的/可由分區(qū)分配的總的可用增量的數(shù)量。
      [0344]CPC的總的未初始化SCM增量542:表示用于系統(tǒng)(例如用于CPC)的未初始化狀態(tài)中的SCM增量的數(shù)量。
      [0345]SCM測量塊大小514 =SCM測量塊的以字節(jié)表示的塊大小(BS)的值。在一個(gè)例子中,它是2的冪,且最大的SCM測量塊大小是例如4096字節(jié)。
      [0346]SCM資源部件546的最大數(shù)量:作為CPC上的SCM資源部件(RP)(例如I/O適配器)的最大數(shù)量的值。每個(gè)SCM增量與SCM資源部件關(guān)聯(lián)。每個(gè)SCM資源(例如一個(gè)或多個(gè)I/O適配器和一個(gè)或多個(gè)SSD)包括一個(gè)或多個(gè)部件。SCM資源部件的最大數(shù)量是例如509。
      [0347]在一個(gè)例子中,術(shù)語“資源部件”被定義以用于獲取與存儲(chǔ)級內(nèi)存有關(guān)的測量信息。每個(gè)SCM增量可被分配給多個(gè)適配器,且每個(gè)適配器具有與可告知的一些使用/測量數(shù)據(jù)。這樣,返回的每個(gè)測量塊被由增量標(biāo)識(shí)符加上資源標(biāo)識(shí)符組成的元組識(shí)別。
      [0348]SCM數(shù)據(jù)單元大小548:取決于模型的值,其指示包括在SCM數(shù)據(jù)單元中的字節(jié)的數(shù)量。在一個(gè)例子中,數(shù)據(jù)單元被定義為用于獲得與存儲(chǔ)級內(nèi)存有關(guān)的測量信息。被報(bào)告的計(jì)數(shù)是數(shù)據(jù)單元而不是字節(jié)的計(jì)數(shù)。
      [0349]繼續(xù)令牌550:取決于模型的值,通過該值SSI命令的隨后發(fā)出可在由令牌表示的繼續(xù)點(diǎn)繼續(xù)。繼續(xù)令牌的內(nèi)容是取決于模型的。
      [0350]存儲(chǔ)級內(nèi)存地址列表552:SCM地址列表的起點(diǎn)。當(dāng)存儲(chǔ)的響應(yīng)代碼是預(yù)定值時(shí),多個(gè)SCM地址列表項(xiàng)(SALE)被存儲(chǔ)(例如(長度-96) /16個(gè)SALE被存儲(chǔ))。
      [0351]在一個(gè)例子中,存儲(chǔ)的SALE的數(shù)量取決于請求者的配置中的SCM增量的數(shù)量,當(dāng)命令被執(zhí)行時(shí)其每個(gè)的狀態(tài),以及通道子系統(tǒng)模型。零個(gè)或更多個(gè)SALE被存儲(chǔ),且在一個(gè)例子中,被存儲(chǔ)的實(shí)際數(shù)量通過從響應(yīng)塊的大小(長度)減去96并將該結(jié)果除以16來確定。
      [0352]每個(gè)SCM地址列表項(xiàng)(SALE)表示一個(gè)SCM增量,其占用SCM地址的一個(gè)范圍。由SALE表示的SCM增量的開始SCM地址包含在SALE中,且是對應(yīng)的SCM增量的第一字節(jié)的SCM地址。在一個(gè)例子中,通過將以字節(jié)表示的SCM增量大小添加到起始SCM地址且隨后減一來計(jì)算結(jié)束地址。這是SCM增量的最后一個(gè)字節(jié)的SCM地址。在一個(gè)實(shí)施例中,由SALE表示的存儲(chǔ)級內(nèi)存是連續(xù)一組SCM字節(jié)位置,其從自然2IS字節(jié)邊界開始。
      [0353]當(dāng)對應(yīng)的SCM增量處于配置狀態(tài)且空間在用于SALE的響應(yīng)塊中可用時(shí),存儲(chǔ)SALE。如果響應(yīng)塊的SCM地址列表中的空間耗盡,一值被存儲(chǔ)在繼續(xù)令牌中且以特定的響應(yīng)代碼完成執(zhí)行。
      [0354]兩個(gè)或更多個(gè)SALE以升序順序被存儲(chǔ)在其SCM地址中。
      [0355]參考圖5C描述的SALE的一個(gè)實(shí)施例。在一個(gè)實(shí)施例中,SALE552包括例如:
      [0356]SCM地址(SA)560:作為SCM地址空間中的對應(yīng)SCM增量的字節(jié)O的起始SCM地址的值,在由SCM增量大小(2IS字節(jié))確定的自然邊界上對齊。
      [0357]持久性屬性(P) 562:作為指示適用于SCM增量的當(dāng)前持久規(guī)則的值。SCM增量中的任何位置繼承了持久性規(guī)則??赡艿某志眯砸?guī)則包括:
      [0358]規(guī)則I —當(dāng)斷電時(shí)保留數(shù)據(jù)。
      [0359]規(guī)則2 —保留數(shù)據(jù)直到上電重置或ML。
      [0360]操作狀態(tài)564:指示由SALE表示的存儲(chǔ)級內(nèi)存增量的操作狀態(tài)的值。僅當(dāng)相關(guān)SCM增量處于配置狀態(tài)時(shí),操作狀態(tài)是有效的。
      [0361]操作狀態(tài)的例子包括:
      [0362]可操作(Op):由SALE表示的存儲(chǔ)級內(nèi)存可用于所有的I/O操作。一經(jīng)成功配置就進(jìn)入該可操作狀態(tài),且當(dāng)從臨時(shí)或永久錯(cuò)誤狀態(tài)退出時(shí)可重新進(jìn)入該可操作狀態(tài)。
      [0363]臨時(shí)錯(cuò)誤(TE):由SALE表示的存儲(chǔ)級內(nèi)存不能用于任何I/O操作。數(shù)據(jù)狀態(tài)是無效的,但是從可操作到臨時(shí)錯(cuò)誤的轉(zhuǎn)變中的數(shù)據(jù)內(nèi)容被保留。當(dāng)對SCM增量的訪問不存在時(shí),從可操作狀態(tài)進(jìn)入臨時(shí)錯(cuò)誤狀態(tài)。
      [0364]永久錯(cuò)誤(PE):由SALE表示的存儲(chǔ)級內(nèi)存不可用于任何I/O操作。數(shù)據(jù)狀態(tài)是無效的,且數(shù)據(jù)丟失。當(dāng)識(shí)別了不可校正的錯(cuò)誤條件時(shí),從臨時(shí)錯(cuò)誤狀態(tài)或可操作狀態(tài)進(jìn)入永久錯(cuò)誤狀態(tài)。
      [0365]當(dāng)操作以在EADM響應(yīng)塊的異常標(biāo)識(shí)符代碼中設(shè)置永久錯(cuò)誤指示完成時(shí),至少該對應(yīng)的SCM增量已進(jìn)入到永久錯(cuò)誤狀態(tài)。但是,超過一個(gè)的SCM增量可能進(jìn)入到永久錯(cuò)誤狀態(tài)。
      [0366]當(dāng)SCM增量不在可操作狀態(tài)時(shí),引用增量中的位置的I/O操作以設(shè)置在EADM響應(yīng)塊的異常標(biāo)識(shí)符代碼中的臨時(shí)或永久錯(cuò)誤,識(shí)別擴(kuò)展的異步數(shù)據(jù)移動(dòng)設(shè)施檢驗(yàn)。
      [0367]數(shù)據(jù)狀態(tài)566:指示由SALE表示的存儲(chǔ)級內(nèi)存增量的內(nèi)容的數(shù)據(jù)狀態(tài)的值。當(dāng)相關(guān)的SCM增量處于配置和可操作狀態(tài)時(shí),數(shù)據(jù)狀態(tài)是有效的。
      [0368]示例性數(shù)據(jù)狀態(tài)包括:
      [0369]置零一SCM增量的內(nèi)容都是零。
      [0370]有效一 SCM增量的內(nèi)容是所有成功的寫類型操作的積累。未被寫入的增量中的位置保持置零或不可預(yù)測。
      [0371]不可預(yù)測一在任何寫類型I/O操作之前,SCM增量的內(nèi)容是未知的。在一個(gè)或多個(gè)寫類型操作已被執(zhí)行后,即使成功寫入的位置導(dǎo)致SCM增量的數(shù)據(jù)狀態(tài)變得有效,其他未寫入位置的數(shù)據(jù)內(nèi)容保持為不可預(yù)測。
      [0372]利用第一次成功寫入,發(fā)生從置零或不可預(yù)測到有效狀態(tài)的轉(zhuǎn)變。由于寫入的數(shù)據(jù)大小和目標(biāo)SCM增量的大小之間的任何差異,到有效的變化不會(huì)描述尚未被寫入的任何數(shù)據(jù)位置的實(shí)際情況。這樣的還未被訪問用于寫入的位置仍然被有效地描述為置零或不可預(yù)測。
      [0373]等級568:指示由SALE表示的存儲(chǔ)級內(nèi)存增量的概念性質(zhì)量的值。僅當(dāng)SCM增量處于配置和可操作狀態(tài)時(shí),等級是有效的。零值意味著沒有等級。指定范圍中的非零值指不存在等級。在該例子中,I的等級值是最聞或最佳等級。15的等級值是最低或最差等級。其他相同時(shí),具有較高等級的SCM比具有較低等級的SCM更優(yōu)先。
      [0374]R570:該字段指示SCM增量識(shí)別釋放操作。以下行為是相關(guān)的:[0375]1.釋放的塊在被讀取前先被寫入,否則如果讀取在寫入之前,識(shí)別讀取操作錯(cuò)誤。對于這樣的錯(cuò)誤,SCM增量保持在可操作狀態(tài)中。
      [0376]2.一旦進(jìn)行初始配置,數(shù)據(jù)狀態(tài)為置零。
      [0377]3.程序可執(zhí)行特殊操作,被稱為釋放,其將指定的塊置于釋放條件中。
      [0378]資源ID572:非零值是提供由SALE表示的SCM增量的資源的資源標(biāo)識(shí)符(RID)。當(dāng)RID是零時(shí),沒有資源ID被指示。在一個(gè)特定例子中,RID表示提供用于SCM增量的存儲(chǔ)的同樣多的適配器和SSD。因?yàn)榭蓱?yīng)用特定的RAID算法,或通過允許跨過多個(gè)適配器/SSD的并行I/o操作來?xiàng)l帶化(striping)以改善性能,RID可表示復(fù)合實(shí)體。
      [0379]關(guān)于存儲(chǔ)級內(nèi)存的配置狀態(tài)的進(jìn)一步細(xì)節(jié),以及存儲(chǔ)級內(nèi)存地址列表的操作和數(shù)據(jù)狀態(tài)將在以下描述。
      [0380]首先,參考圖6A,描述配置狀態(tài)和導(dǎo)致這些狀態(tài)內(nèi)的轉(zhuǎn)變的事件/動(dòng)作。如圖所示,SCM狀態(tài)是配置、備用和保留。SCM可由保留被置于備用,隨后由備用到配置。從配置,SCM可被解除配置并進(jìn)入保留狀態(tài)。
      [0381]參考圖6B,示出了操作狀態(tài)和在這些狀態(tài)內(nèi)導(dǎo)致轉(zhuǎn)變的事件。SCM增量將是處于備用狀態(tài)以便被配置,且在配置動(dòng)作成功完成后處于操作狀態(tài)。到置零狀態(tài)中的SCM增量的第一寫入將其移動(dòng)到有效狀態(tài)。對于未被指示為具有規(guī)則I持久性的SCM增量的居間的斷電和上電將SCM增量移動(dòng)到不可預(yù)測狀態(tài)。
      [0382]錯(cuò)誤(E)可引起到臨時(shí)錯(cuò)誤(TE)狀態(tài)或永久錯(cuò)誤(PE)狀態(tài)的轉(zhuǎn)變,這取決于錯(cuò)誤的取決于模型的特定細(xì)節(jié)。連接的獲取(A)可引起從臨時(shí)錯(cuò)誤狀態(tài)到操作(Op)狀態(tài)的轉(zhuǎn)變??砂l(fā)生SCM增量的解除配置,而不管其操作狀態(tài)。
      [0383]圖6B也示出了當(dāng)在可操作狀態(tài)時(shí)取決于如何進(jìn)入了可操作狀態(tài)的數(shù)據(jù)狀態(tài)。當(dāng)被配置且處于可操作狀態(tài)時(shí),數(shù)據(jù)狀態(tài)時(shí)有效的,并被施加給對應(yīng)的SCM增量。有效數(shù)據(jù)狀態(tài)是置零、不可預(yù)測和有效。以下是到可操作狀態(tài)的各種進(jìn)入時(shí)可能的數(shù)據(jù)狀態(tài):
      [0384].從備用一置零(Z)
      [0385].從臨時(shí)錯(cuò)誤一效性(V)
      [0386].從永久錯(cuò)誤一不可預(yù)測(U)或置零(V)
      [0387].從可操作一有效(V)—第一次寫入
      [0388].從可操作一不可預(yù)測(U)—功率循環(huán)且持久性不是規(guī)則I。
      [0389]當(dāng)未處于操作狀態(tài)時(shí),數(shù)據(jù)狀態(tài)是無效。
      [0390]當(dāng)?shù)谝淮伪慌渲们以诘谝淮螌懭胫?,SCM增量的數(shù)據(jù)處于置零狀態(tài),意味著其內(nèi)容都是零。
      [0391]盡管當(dāng)移動(dòng)到或處于臨時(shí)錯(cuò)誤狀態(tài)時(shí),SCM增量的數(shù)據(jù)內(nèi)容不被改變,增量是不可訪問的。因此,說數(shù)據(jù)是無效的可能是描述性的,但由于缺乏程序可訪問性不會(huì)過于有意義。因此,數(shù)據(jù)狀態(tài)在該場景下是無效。而且,基于引起從可操作到臨時(shí)錯(cuò)誤的轉(zhuǎn)變的錯(cuò)誤,如果數(shù)據(jù)整體性被影響,進(jìn)入永久錯(cuò)誤狀態(tài),數(shù)據(jù)狀態(tài)保持為無效,且數(shù)據(jù)丟失。如果并行修復(fù)可將SCM增量從永久錯(cuò)誤狀態(tài)移動(dòng)到可操作狀態(tài)而不會(huì)即被解除配置,又隨后再次配置,原始數(shù)據(jù)仍然丟失,且數(shù)據(jù)狀態(tài)是不可預(yù)測還是置零,這取決于模型。
      [0392]SCM增量的持久性及其RAS (可靠性、可訪問性和可服務(wù)性)特點(diǎn)也可確定從有效到不可預(yù)測數(shù)據(jù)狀態(tài)的變化。如果持久性被超過,可預(yù)期從有效到不可預(yù)測的數(shù)據(jù)狀態(tài)轉(zhuǎn)變。
      [0393]隨著第一成功寫入,發(fā)生從置零或不可預(yù)測的數(shù)據(jù)狀態(tài)到有效數(shù)據(jù)狀態(tài)的變化。由于寫入的數(shù)據(jù)大小和目標(biāo)SCM增量大小之間的任何差別,到有效的變化不會(huì)描述任何尚未被寫入的數(shù)據(jù)位置的實(shí)際情況。這樣的位置,在首次寫入訪問之間,仍然被有效地描述為置零或不可預(yù)測。
      [0394]在SCM增量被配置后,當(dāng)任何一個(gè)或多個(gè)可在存儲(chǔ)SCM信息命令的響應(yīng)中觀察到的事件發(fā)生,使未經(jīng)請求的通知待決。例子如下:
      [0395]1.操作狀態(tài)從可操作變化到臨時(shí)錯(cuò)誤或永久錯(cuò)誤,但不會(huì)在失敗操作中被報(bào)告。
      [0396]2.操作狀態(tài)從臨時(shí)錯(cuò)誤變化到可操作。
      [0397]3.操作狀態(tài)從臨時(shí)錯(cuò)誤變化到永久錯(cuò)誤。
      [0398]4.等級變化。
      [0399]其中未經(jīng)請求的通知沒有變得待決的例子包括以下:
      [0400]1.數(shù)據(jù)狀態(tài)從置零或不可預(yù)測改變到有效。
      [0401]2.配置存儲(chǔ)級內(nèi)存命令完成。
      [0402]3.解除配置存儲(chǔ)級內(nèi)存命令完成。
      [0403]當(dāng)通知待決時(shí),程序觀察到通知并可發(fā)出存儲(chǔ)SCM信息命令以獲取信息。存儲(chǔ)SCM信息命令也可在其他時(shí)間被發(fā)出,在所述時(shí)間程序?qū)⑿枰P(guān)于SCM和/或SALE的信息。
      [0404]在一個(gè)例子中,通知包括被發(fā)出給程序的機(jī)器檢查中斷,其具有指示事件報(bào)告的對應(yīng)CRW。程序發(fā)出CHSC存儲(chǔ)事件信息命令并獲取具有內(nèi)容代碼的響應(yīng)塊,其信號通知存儲(chǔ)級內(nèi)存變化通知。
      [0405]在一個(gè)實(shí)施例中,存儲(chǔ)SCM信息(SSI)命令是由程序(例如操作系統(tǒng))發(fā)出的通道子系統(tǒng)命令以獲取關(guān)于存儲(chǔ)級內(nèi)存和/或SCM地址列表項(xiàng)的信息。在一個(gè)例子中,程序發(fā)出通道子系統(tǒng)調(diào)用指令,且SSI命令在該指令的命令塊中被指示,其被發(fā)出到通道子系統(tǒng)。命令在通道子系統(tǒng)處被執(zhí)行,且響應(yīng)在響應(yīng)塊被返回,響應(yīng)塊是4K字節(jié)控制塊的剩余部分(即,請求的信息存儲(chǔ)在為響應(yīng)塊指定的主存儲(chǔ)器區(qū)域中)。參考圖描述關(guān)于該命令的操作的進(jìn)一步細(xì)節(jié)。
      [0406]首先,在步驟580程序生成以上指示的請求塊以請求存儲(chǔ)SCM信息命令。在步驟582請求塊被通道子系統(tǒng)獲得,且進(jìn)行一個(gè)或多個(gè)有效性檢驗(yàn),以檢驗(yàn)請求快的有效性(例如,有效長度字段、有效命令請求塊格式、命令已安裝等)。如果在詢問584請求不是有效的,則在步驟586指示問題的響應(yīng)代碼被放置在響應(yīng)塊中,且在步驟592響應(yīng)塊被返回。
      [0407]但是,如果在詢問584請求是有效的,則在步驟588通道子系統(tǒng)獲取來自機(jī)器(例如處理器等)的信息,并在步驟590填充響應(yīng)塊。在步驟592返回響應(yīng)塊。例如,信息被包含在機(jī)器的非易失性存儲(chǔ)器中,且在系統(tǒng)初始化期間,被固件加載到僅可被固件訪問的主存儲(chǔ)器中。通過將信息從僅可被固件訪問的主存儲(chǔ)器讀取,通道子系統(tǒng)(即該例子中的固件)獲取信息,并填充響應(yīng)塊。
      [0408]響應(yīng)于接收到關(guān)于存儲(chǔ)級內(nèi)存的信息或沒有接收到該信息,可做出決定改變存儲(chǔ)級內(nèi)存的配置。該決定可手動(dòng)做出或者被程序或其他實(shí)體自動(dòng)做出。如以下描述的,可通過添加增量或刪除增量來改變配置。
      [0409]在一個(gè)例子中,為了配置存儲(chǔ)級內(nèi)存,使用配置存儲(chǔ)級內(nèi)存命令。該命令請求將從系統(tǒng)的可用池被配置的存儲(chǔ)級內(nèi)存的量。該量被指定為大小,被編碼為SCM增量的計(jì)數(shù)。
      [0410]除非另外清楚說明,被用來滿足請求的SCM增量的數(shù)量處于初始化狀態(tài)。如果請求的SCM增量的數(shù)量使得最大可配置的SCM增量界限被超過,提供特定的響應(yīng)代碼。
      [0411]每個(gè)增量的內(nèi)容是具有有效CBC的零。與每個(gè)配置的SCM增量關(guān)聯(lián)的可應(yīng)用持久規(guī)則是由例如手動(dòng)控制設(shè)置的。
      [0412]用于配置存儲(chǔ)級內(nèi)存命令的命令請求塊的一個(gè)實(shí)施例在圖7A中示出。在一個(gè)例子中,配置存儲(chǔ)級內(nèi)存請求塊700包括:
      [0413]長度702:指示命令請求塊長度的長度的值。
      [0414]命令代碼704:指示用于配置存儲(chǔ)級內(nèi)存命令的命令代碼的值。
      [0415]格式(FMT) 706:指示命令請求塊的格式的值。
      [0416]總大小(TS) 708:指示被編碼為SCM增量的計(jì)數(shù)的、請求的存儲(chǔ)級內(nèi)存的大小的值。已被配置的SMC增量的計(jì)數(shù)加上TS不應(yīng)超過最大可配置SCM增量(MCI)界限。如果初始化狀態(tài)中的SCM增量的數(shù)量小于指定的總大小,提供特定的響應(yīng)代碼。
      [0417]異步完成相關(guān)器(ACC) 710:在以下描述通知響應(yīng)的異步完成通知字段中返回的值。相關(guān)器用于恢復(fù)啟動(dòng)請求的原始線程。
      [0418]用于配置存儲(chǔ)級內(nèi)存命令的命令響應(yīng)塊的一個(gè)實(shí)施例在圖7B中描述。在一個(gè)實(shí)施例中,命令響應(yīng)塊730包括:
      [0419]長度732:指示命令響應(yīng)塊的長度的值。
      [0420]響應(yīng)代碼734:描述嘗試執(zhí)行配置存儲(chǔ)級內(nèi)存命令的的結(jié)果的值。
      [0421]如果定義的響應(yīng)代碼被存儲(chǔ)在響應(yīng)代碼字段中,異步過程被啟動(dòng)以完成命令的處理。如果定義的代碼之外的響應(yīng)代碼被存儲(chǔ)在響應(yīng)代碼字段中,沒有SCM增量被配置,沒有異步過程被啟動(dòng),且不做出隨后的通知。異步過程的完成在通知響應(yīng)中被指示。
      [0422]格式(FMT) 746:指示命令響應(yīng)塊的格式的值。
      [0423]配置存儲(chǔ)級內(nèi)存命令由程序發(fā)出以請求將被配置到SCM地址空間中的存儲(chǔ)級內(nèi)存的量。用于配置SCM的邏輯的一個(gè)實(shí)施例將參考圖7C進(jìn)行描述。
      [0424]開始,在步驟740程序發(fā)出通道子系統(tǒng)調(diào)用指令,其包括配置SCM命令。在步驟742,配置SCM命令的請求塊由通道子系統(tǒng)獲得,且在步驟744通道子系統(tǒng)試圖執(zhí)行命令。如果在詢問746嘗試執(zhí)行命令產(chǎn)生不指示成功的響應(yīng)代碼,則在步驟748響應(yīng)代碼被放置在配置SCM命令的響應(yīng)塊中,且在步驟750響應(yīng)塊被返回。
      [0425]如果在詢問746成功的響應(yīng)代碼被指示,則在步驟752響應(yīng)代碼被放置在響應(yīng)塊中,且在步驟754響應(yīng)塊被返回。在該例子中,成功的響應(yīng)代碼指示請求快的長度字段是有效的;命令在系統(tǒng)中是可用的;命令請求塊具有有效格式;通道子系統(tǒng)能執(zhí)行命令(即,不忙);請求的總大小不超過請求的配置的最大可配置SCM增量界限;且請求的總大小不超過初始化狀態(tài)中的SCM增量的數(shù)量。
      [0426]此外,在步驟756啟動(dòng)完成配置的異步過程。參考圖7D描述關(guān)于該處理的進(jìn)一步細(xì)節(jié)。
      [0427]在一個(gè)實(shí)施例中,在步驟760異步處理執(zhí)行配置以分配一個(gè)或多個(gè)增量。例如,對于每個(gè)配置的SCM增量,內(nèi)部控制被改變以允許新配置的增量可被對該分區(qū)的I/O移動(dòng)請求訪問。特別地,響應(yīng)于通道子系統(tǒng)接收CHSC配置命令,通道子系統(tǒng)的固件檢查內(nèi)部表以確認(rèn)存在足夠的增量以滿足請求,并確保請求不超過用于配置的最大可配置SCM增量。如果請求是有效的,固件更新一個(gè)或多個(gè)表以分配增量到配置,并將增量放置到用于配置的可操作狀態(tài)。增量隨后可被來自配置的I/O移動(dòng)請求(如上描述的)訪問。在步驟762異步過程的完成在通知響應(yīng)中被指示。
      [0428]用于配置存儲(chǔ)級內(nèi)存命令的通知響應(yīng)數(shù)據(jù)在存儲(chǔ)事件信息(SEI)命令的響應(yīng)塊中被返回。參考圖8A描述用于配置存儲(chǔ)級內(nèi)存命令的通知響應(yīng)塊的格式的一個(gè)實(shí)施例。
      [0429]在一個(gè)實(shí)施例中,配置存儲(chǔ)級內(nèi)存命令的通知響應(yīng)塊800包括:
      [0430]長度802:指示命令響應(yīng)塊的長度的值。
      [0431]響應(yīng)代碼804:描述試圖執(zhí)行存儲(chǔ)事件信息CHSC命令的結(jié)果的值。
      [0432]格式(FMT) 806:指示命令響應(yīng)塊的格式的值。
      [0433]通知類型808:指示這是一個(gè)EADM相關(guān)通知的值。
      [0434]P810:當(dāng)被設(shè)置時(shí),指定除了響應(yīng)于該CHSC命令被提供的信息外,通道子系統(tǒng)具有待決事件信息。
      [0435]V812:當(dāng)被設(shè)置時(shí),指定通道子系統(tǒng)已識(shí)別溢出條件且事件信息已被丟失。
      [0436]內(nèi)容代碼814:指示這是對由配置存儲(chǔ)級內(nèi)存命令請求啟動(dòng)的異步過程的執(zhí)行完成的響應(yīng)的值。
      [0437]次級響應(yīng)代碼816:進(jìn)一步描述嘗試執(zhí)行配置SCM命令的結(jié)果的值。
      [0438]當(dāng)次級響應(yīng)代碼是指定值時(shí),如開始請求的存儲(chǔ)級內(nèi)存的完全量已被配置。否則,響應(yīng)代碼可被提供,其指示例如無效的長度字段、配置SCM命令未安裝、配置SCM命令塊具有無效格式、總請求大小將超過MCI界限、請求的總大小超過初始化狀態(tài)中的SCM增量的數(shù)量、通道子系統(tǒng)忙。
      [0439]異步完成相關(guān)器(ACC) 818:在對應(yīng)的命令請求塊中初始指定的值。
      [0440]參考圖8B-8C描述用于返回配置存儲(chǔ)級內(nèi)存命令的通知響應(yīng)塊的存儲(chǔ)事件信息命令的一個(gè)實(shí)施例。
      [0441]存儲(chǔ)事件信息命令用來存儲(chǔ)已被通道子系統(tǒng)變得待決的事件信息。通常,該命令作為已接收了事件信息待決通道報(bào)告的程序的結(jié)果而被執(zhí)行。
      [0442]存儲(chǔ)事件信息命令的執(zhí)行可改變包含在通道子系統(tǒng)中的信息。存儲(chǔ)事件信息命令被同步執(zhí)行。
      [0443]參考圖SB描述用于存儲(chǔ)事件信息命令的命令請求塊的一個(gè)實(shí)施例。在一個(gè)例子中,請求塊830包括:
      [0444]長度832:該字段指定命令請求塊的長度。
      [0445]命令代碼834:該字段指定存儲(chǔ)事件信息命令。
      [0446]格式(FMT) 836:指定命令請求塊的格式的值。
      [0447]通知類型選擇掩碼(NTSM) 838:掩碼,其每個(gè)位位置對應(yīng)于相同數(shù)字值的邏輯處理器選擇器(LPS)值。在一個(gè)實(shí)施例中,位O被忽略并被假設(shè)是I。當(dāng)從I開始的指定范圍中的位位置是零時(shí),對應(yīng)于該位位置的通知類型沒有被存儲(chǔ)在響應(yīng)塊中,且如果被識(shí)別為待決,則被丟棄。當(dāng)這樣的位是I時(shí),對應(yīng)于位位置的通知類型可被存儲(chǔ)在響應(yīng)塊中。
      [0448]在一個(gè)實(shí)施例中,參考圖8C,用于存儲(chǔ)事件信息命令的響應(yīng)塊850被如下描述:
      [0449]長度852:指定命令響應(yīng)塊的初始長度的值。完成長度取決于作為試圖執(zhí)行存儲(chǔ)事件信息命令的結(jié)果而被存儲(chǔ)的響應(yīng)代碼。
      [0450]如果指示成功的代碼之外的響應(yīng)代碼被存儲(chǔ)在響應(yīng)代碼字段中,沒有信息被存儲(chǔ)在響應(yīng)數(shù)據(jù)區(qū)域中。
      [0451]如果指示成功的響應(yīng)代碼被存儲(chǔ)在響應(yīng)代碼字段中,事件信息被存儲(chǔ)在響應(yīng)數(shù)據(jù)區(qū)域中。
      [0452] 響應(yīng)代碼854:描述試圖執(zhí)行存儲(chǔ)事件信息命令的結(jié)果的值。
      [0453]對于存儲(chǔ)事件信息命令,響應(yīng)數(shù)據(jù)區(qū)域包含固定長度部分和可變長度部分。
      [0454]對于指定的格式響應(yīng),當(dāng)NT是非零時(shí),格式取決于特定通知類型,且取決于字段的內(nèi)容代碼的格式取決于特定通知類型和內(nèi)容代碼(CO字段的組合。
      [0455]格式(FMT) 856:指示命令響應(yīng)塊的格式的值。
      [0456]通知類型(NT) 858:指示通知類型(NT)的值。提供用于配置SCM命令的特定值。
      [0457]F標(biāo)志860:當(dāng)被設(shè)置時(shí),指定通道子系統(tǒng)除了響應(yīng)于該CHSC命令而被提供的信息,具有待決的事件信息。程序可通過再次執(zhí)行存儲(chǔ)事件信息命令獲得額外的信息。當(dāng)未被設(shè)置時(shí),該標(biāo)志指定通道子系統(tǒng)不具有額外的待決事件信息。
      [0458]V標(biāo)志862:當(dāng)被設(shè)置時(shí),指定通道子系統(tǒng)已識(shí)別了溢出狀況且事件信息已被丟失。當(dāng)沒有被包含在響應(yīng)數(shù)據(jù)區(qū)域中的事件信息是最近的待決信息時(shí),溢出狀況被識(shí)別。溢出不影響包含在響應(yīng)數(shù)據(jù)區(qū)域中的信息。
      [0459]內(nèi)容代碼(CC) 864:描述包含在響應(yīng)數(shù)據(jù)區(qū)域中的信息的類型的值。在一個(gè)例子中,該值指示存儲(chǔ)級內(nèi)存變化通知,其中一個(gè)或多個(gè)SCM增量已改變了狀況或狀態(tài)。
      [0460]內(nèi)容代碼依賴字段866:該字段包括關(guān)于事件的額外信息。
      [0461]配置變化的成功通知可促使程序發(fā)出存儲(chǔ)SCM信息命令以獲得關(guān)于配置的細(xì)節(jié)。
      [0462]除了增加存儲(chǔ)級內(nèi)存,存儲(chǔ)級內(nèi)存也可被減少。解除配置存儲(chǔ)級內(nèi)存命令請求存儲(chǔ)級內(nèi)存的量從請求配置的SCM地址空間移除。將被解除配置的SCM增量將處于配置狀態(tài)。
      [0463]如在此描述的,將被解除配置的SCM增量在SCM增量請求列表中被指定。一個(gè)或多個(gè)連續(xù)的SCM增量可在SCM增量請求列表項(xiàng)(SIRLE)中被指定。單獨(dú)的SIRLE可被指定用于增量(也稱為區(qū)段(extent))的每個(gè)列表,其不與任何其他增量列表連續(xù)。
      [0464]不管持久規(guī)則,SCM增量的成功解除配置將增量放到未初始化狀態(tài)。當(dāng)置零完成時(shí),SCM增量從未初始化狀態(tài)轉(zhuǎn)變到初始化狀態(tài)。
      [0465]用于解除配置存儲(chǔ)級內(nèi)存命令的命令請求塊的一個(gè)實(shí)施例在圖9A中示出。用于解除配置存儲(chǔ)級內(nèi)存命令的命令請求塊900包括例如:
      [0466]長度902:指定命令請求塊的長度的值。在一個(gè)實(shí)施例中,該長度是32+(NX 16)字節(jié),其中N是SCM增量請求列表項(xiàng)(SIRLE)的計(jì)數(shù)。在該例子中長度可被16整除,且處于(32+1X16) ^ LI ^ (32+253X 16)的范圍。
      [0467]命令代碼904:指定用于解除配置存儲(chǔ)級內(nèi)存命令的命令代碼的值。
      [0468]格式(FMT) 906:指定命令請求快的格式的值。
      [0469]異步完成相關(guān)器(ACC) 908:在如上所述的異步完成通知中返回的值。
      [0470]SCM增量請求列表910:該字段包括SCM增量請求列表(SIRL)。SCM增量請求列表包括一個(gè)或多個(gè)項(xiàng)(SIRLE)。SIRL的長度是從長度字段的值確定的。
      [0471]SCM增量請求列表項(xiàng)(SIRLE)指定存儲(chǔ)級內(nèi)存(例如增量列表)的所指定區(qū)段的大小和位置。區(qū)段或SCM區(qū)段是存儲(chǔ)級內(nèi)存的指定大小。
      [0472]參考圖9B,在一個(gè)例子中,SIRLE920包括:
      [0473]總大小(TS)922:指定編碼為SCM增量的計(jì)數(shù)的、將被解除配置的存儲(chǔ)級內(nèi)存的大小。
      [0474]開始SCM地址(SA) 924:該值是SCM地址,且是SCM地址空間中的位置,從其移除由SIRLE解除配置的第一個(gè)或僅有的SCM增量。在該例子中,將構(gòu)成第一 SCM增量內(nèi)的偏移的最低位位置被忽略,且被假設(shè)是零。
      [0475]當(dāng)總大小大于I時(shí),超過第一增量的每個(gè)額外的SCM增量位于可被SCM增量大小整除的SCM地址處,其包含配置的SCM增量,且其位置與先前的SCM增量的最后一個(gè)字節(jié)連續(xù)。換句話說,位于下一個(gè)連續(xù)位置。
      [0476]如果由開始位置和總大小的組合描述的空間不是完全充滿配置的SCM增量,提供指定的響應(yīng)代碼,沒有SCM增量被配置,沒有異步過程被啟動(dòng),且沒有隨后的通知發(fā)生。
      [0477]一旦成功完成,每個(gè)解除配置的SCM增量進(jìn)入到保留狀態(tài),且隨后在被放置到備用狀態(tài)前被置零。
      [0478]用于解除配置存儲(chǔ)級內(nèi)存命令的命令響應(yīng)塊在圖9C中示出。在一個(gè)實(shí)施例中,命令響應(yīng)塊950包括:
      [0479]長度952:指示命令響應(yīng)塊的長度的值。
      [0480]響應(yīng)代碼954:描述試圖執(zhí)行解除配置存儲(chǔ)級內(nèi)存命令的結(jié)果的值。
      [0481]如果指定值的響應(yīng)代碼被存儲(chǔ)在響應(yīng)代碼字段中,異步過程被啟動(dòng)以完成命令的處理。如果指定值以外的響應(yīng)代碼被存儲(chǔ)在響應(yīng)代碼字段中,沒有SCM增量被解除配置,沒有異步過程被啟動(dòng),且沒有隨后的通知被做出。異步過程的完成在通知響應(yīng)中被指示。
      [0482]在解除配置存儲(chǔ)級內(nèi)存命令的同步部分以指定的響應(yīng)代碼完成前,SCM增量請求列表中的所有項(xiàng)被檢查以確保所有指定的SCM增量處于配置狀態(tài)。
      [0483]格式(FMT) 956:指示命令響應(yīng)塊的格式的值。參考圖9D-9E描述與解除配置SCM命令關(guān)聯(lián)的邏輯的一個(gè)實(shí)施例。
      [0484]開始,在步驟970程序發(fā)出包括解除配置SCM命令的通道子系統(tǒng)調(diào)用指令。在步驟972解除配置SCM命令的請求塊被通道子系統(tǒng)獲取,且在步驟974通道子系統(tǒng)試圖執(zhí)行命令。如果在詢問976嘗試執(zhí)行命令產(chǎn)生不指示成功的響應(yīng)代碼,則在步驟978響應(yīng)代碼被放置在解除配置SCM命令的響應(yīng)塊中,且在步驟980響應(yīng)塊被返回。
      [0485]如果在詢問976成功的響應(yīng)代碼被指示,則在步驟982響應(yīng)代碼被放置在響應(yīng)塊中,且在步驟984響應(yīng)塊被返回。在該例子中,成功的響應(yīng)代碼指示請求塊的長度是有效的;命令在系統(tǒng)中可用;命令請求塊具有有效格式;通道子系統(tǒng)能執(zhí)行命令(即,不忙);且SCM增量原始地處于配置狀態(tài)。
      [0486]此外,在步驟986完成解除配置的異步處理被啟動(dòng)。關(guān)于該處理的進(jìn)一步細(xì)節(jié)將參考圖9E進(jìn)行描述。
      [0487]在一個(gè)實(shí)施例中,在步驟900異步處理執(zhí)行解除配置。例如,一個(gè)或多個(gè)增量被解除分配。SCM增量從配置狀態(tài)移動(dòng)到保留狀態(tài)。一旦進(jìn)入到保留狀態(tài),接著發(fā)生置零處理,且當(dāng)完成時(shí),SCM增量轉(zhuǎn)變到備用狀態(tài)。在步驟992異步過程的完成在通知響應(yīng)中被指示。
      [0488]用于解除配置存儲(chǔ)級內(nèi)存命令的通知響應(yīng)數(shù)據(jù)在存儲(chǔ)事件信息(SEI) CHSC命令的響應(yīng)塊中被返回。參考圖8A描述該響應(yīng)塊的一個(gè)例子。但是,該例子中的內(nèi)容代碼指示這是對于由解除配置存儲(chǔ)級內(nèi)存命令請求啟動(dòng)的異步過程的執(zhí)行完成的響應(yīng)。類似地,次級響應(yīng)代碼還描述了試圖執(zhí)行解除配置存儲(chǔ)級內(nèi)存命令的結(jié)果。
      [0489]在又一個(gè)實(shí)施例中,存儲(chǔ)增量的分配和解除分配可經(jīng)由呈現(xiàn)給用戶的面板而被請求。例如,服務(wù)元件被用來提供圖形界面,通過該圖形界面用戶可對系統(tǒng)指定參數(shù)。對于存儲(chǔ)級內(nèi)存,稱為存儲(chǔ)級內(nèi)存分配面板的面板允許用戶執(zhí)行以下操作:
      [0490] 1.指定用于給定配置的最大可配置增量(MCI);
      [0491]2.分配增量給配置;
      [0492]3.從配置解除分配增量。
      [0493]面板也允許查看配置增量分配和MCI,以及可用、不可用和未初始化池中的增量的數(shù)量。當(dāng)由于SE處的動(dòng)作,增量分配改變或當(dāng)一個(gè)池的大小改變時(shí),通知被發(fā)送到配置。
      [0494]以上詳細(xì)描述了管理存儲(chǔ)級內(nèi)存的設(shè)施。它提供了抽象以允許程序訪問存儲(chǔ)器,而不需要對存儲(chǔ)器的特定知識(shí)。根據(jù)本發(fā)明的一個(gè)或多個(gè)方面,提供能力以在主存儲(chǔ)器和SCM之間移動(dòng)數(shù)據(jù);以清除或釋放SCM;以配置或解除配置SCM;以及以發(fā)現(xiàn)SCM的配置。也提供了其他的能力。
      [0495]在一個(gè)實(shí)施例中,存儲(chǔ)級內(nèi)存對用戶級別程序被呈現(xiàn)為平坦內(nèi)存空間,獨(dú)立于其跨過多個(gè)設(shè)備和I/o適配器的物理實(shí)現(xiàn)。
      [0496]關(guān)于通道子系統(tǒng)和/或ADM設(shè)施的細(xì)節(jié)在以下文獻(xiàn)中被描述:Antognini等人的、于 1994 年 12 月 27 日發(fā)布的、標(biāo)題為 “Method and Means for Enabling VirtualAddressing Control By Software Users Over A Hardware Page Transfer ControlEntity”的美國專利號5377337 ;Brent等人的、于1995年8月15日發(fā)布的、標(biāo)題為“Asynchronous Co-Processor Data Mover Method and Means,,的美國序列號544802 ;以及1996 年 6 月 11 日發(fā)布的、標(biāo)題為 “Method and System for Pipelining the Processingof Channel Command Words”的美國專利號5526484,這些文獻(xiàn)中的每一個(gè)通過全文引用結(jié)合于此。
      [0497]此外,關(guān)于通道子系統(tǒng)和與其相關(guān)的指令的進(jìn)一步的信息(用于z/Architecture?!的特定實(shí)現(xiàn))被提供如下:
      [0498]輸入/輸出(1/0)
      [0499]術(shù)語“輸入”和“輸出”被用來描述1/0設(shè)備和主存儲(chǔ)器之間的數(shù)據(jù)傳送。涉及這種類型的傳送的操作被稱為I/o操作。用于控制I/O操作的設(shè)施被統(tǒng)稱為通道子系統(tǒng)。(I/O設(shè)備及其控制單元附著于通道子系統(tǒng)。)
      [0500]通道子系統(tǒng)
      [0501]通道子系統(tǒng)引導(dǎo)1/0設(shè)備和主存儲(chǔ)器之間的信息流。它解除了 CPU直接與1/0設(shè)備通信的任務(wù),并允許數(shù)據(jù)處理與I/o處理并行進(jìn)行。通道子系統(tǒng)使用一個(gè)或多個(gè)通道路徑作為通信鏈路,以管理到或來自I/o設(shè)備的信息流。作為1/0處理的一部分,通道子系統(tǒng)也通過測試通道路徑可用性執(zhí)行路徑管理操作,選擇可用的通道路徑,并啟動(dòng)由設(shè)備執(zhí)行的I/o操作。
      [0502]在通道子系統(tǒng)內(nèi)的是子通道。一個(gè)子通道被提供并專用于通過通道子系統(tǒng)可由程序訪問的每個(gè)I/o設(shè)備。[0503]多個(gè)子通道組設(shè)施是可選設(shè)施。當(dāng)其被安裝時(shí),子通道被分區(qū)為多個(gè)子通道組,且每個(gè)子通道組可提供一個(gè)專用的子通道給I/o設(shè)備。根據(jù)使用的模型和界面,一些I/O設(shè)備可僅被允許經(jīng)由特定的子通道組來訪問。
      [0504]每個(gè)子通道提供了關(guān)于相關(guān)I/O設(shè)備及其到通道子系統(tǒng)的連接的信息。子通道也提供關(guān)于I/o操作和涉及相關(guān)I/O設(shè)備的其他功能的信息。子通道是通道子系統(tǒng)提供關(guān)于相關(guān)I/o設(shè)備的信息給CPU的手段,CPU通過執(zhí)行I/O指令獲取該信息。所提供的子通道的實(shí)際數(shù)量取決于模型和配置;每個(gè)子通道組中的最大可尋址性是0-65535。
      [0505]I/O設(shè)備通過控制單元經(jīng)由通道路徑被附加到通道子系統(tǒng)??刂茊卧赏ㄟ^多于一個(gè)通道路徑被附加到通道子系統(tǒng),且I/O設(shè)備可被附加到多于一個(gè)的控制單元??傊?,單個(gè)I/o設(shè)備可經(jīng)由子通道通過多達(dá)8條不同的通道路徑被通道子系統(tǒng)訪問,這取決于模型和配置。通道子系統(tǒng)提供的通道路徑的總數(shù)取決于模型和配置;最大可尋址性是0-255。
      [0506]通道子系統(tǒng)的性能取決于其使用和其被實(shí)施于其中的系統(tǒng)模型。通道路徑被提供有不同的數(shù)據(jù)傳送能力,且被設(shè)計(jì)為僅以特定速率傳送數(shù)據(jù)的I/o設(shè)備(例如磁帶單元或盤存儲(chǔ)器)可在能允許至少該數(shù)據(jù)速率的通道路徑上操作。
      [0507]通道子系統(tǒng)包含用于I/O操作的控制的共同設(shè)施。當(dāng)這些設(shè)施以被特別設(shè)計(jì)為控制I/o設(shè)備的單獨(dú)的自主設(shè)備的形式提供時(shí),I/O操作完全與CPU中的活動(dòng)重疊。在I/O操作期間由通道子系統(tǒng)要求的僅有的主存儲(chǔ)器循環(huán)是傳送數(shù)據(jù)和控制信息到或來自主存儲(chǔ)器中的最終位置的所需要的那些循環(huán),以及當(dāng)子通道被實(shí)施為不可尋址的主存儲(chǔ)器的一部分時(shí),由通道子系統(tǒng)訪問子通道所需的那些循環(huán)。這些循環(huán)不會(huì)延遲CPU程序,除了當(dāng)CPU和通道子系統(tǒng)同時(shí)試圖引用相同的主存儲(chǔ)器區(qū)域時(shí)。
      [0508]子通道組
      [0509]當(dāng)多個(gè)子通道組設(shè)施被安裝時(shí),子通道被分區(qū)為多個(gè)子通道組??梢杂卸噙_(dá)4個(gè)子通道組,每個(gè)被子通道組標(biāo)識(shí)符(SSID)標(biāo)識(shí)。當(dāng)多個(gè)子通道組設(shè)施未被安裝時(shí),僅有一個(gè)子通道組,其具有為零的SSID。當(dāng)多個(gè)子通道組設(shè)施未被使能時(shí),僅子通道組零對于程序是可見的。
      [0510]子通道
      [0511]子通道向程序提供了設(shè)備的邏輯外表,并包含用于維持單個(gè)I/O操作所需的信息。子通道由內(nèi)部存儲(chǔ)構(gòu)成,該內(nèi)部存儲(chǔ)包含的信息形式為通道一程序指定、通道一路徑標(biāo)識(shí)符、設(shè)備號、計(jì)數(shù)、狀態(tài)指示以及I/o中斷子類代碼,以及關(guān)于路徑可用性和待決或正被執(zhí)行的功能的信息。I/o操作通過執(zhí)行I/O指令針對設(shè)備啟動(dòng),所述I/O指令指定與設(shè)備關(guān)聯(lián)的子通道。
      [0512]每個(gè)設(shè)備可通過每個(gè)通道子系統(tǒng)中的一個(gè)子通道訪問,在安裝時(shí)的配置期間它被分配給該子通道。設(shè)備可以是物理可識(shí)別單元,或可被放置到控制單元的內(nèi)部。例如,在特定的盤存儲(chǔ)設(shè)備中,用于檢索數(shù)據(jù)的每個(gè)致動(dòng)器被認(rèn)為是一個(gè)設(shè)備。在所有的情況下,從通道子系統(tǒng)的觀點(diǎn)來看,設(shè)備是與一個(gè)子通道唯一關(guān)聯(lián)的一個(gè)實(shí)體,且對通道子系統(tǒng)通過使用通信協(xié)議進(jìn)行的選擇進(jìn)行響應(yīng),所述通信協(xié)議是為通道路徑的類型定義的,通過該通道路徑可訪問該設(shè)備。
      [0513]在一些模型上,子通道按塊被提供。在這些模型上,比附加設(shè)備更多的子通道可被提供。被提供但不具有分配給其的設(shè)備的子通道被通道子系統(tǒng)使用以執(zhí)行任何功能,且通過將關(guān)聯(lián)的設(shè)備號有效位作為零存儲(chǔ)在子通道的子通道信息塊中而被指示。
      [0514]由通道子系統(tǒng)提供的子通道的數(shù)量與被提供給相關(guān)設(shè)備的通道路徑的數(shù)量無關(guān)。例如,可通過替代通道路徑被訪問的設(shè)備仍然被單個(gè)子通道表示。當(dāng)子通道組設(shè)施被安裝時(shí),通過使用16位的二進(jìn)制子通道號和二位的SSID,每個(gè)子通道被尋址。
      [0515]在子通道處的I/O處理已被START SUBCHANNEL的執(zhí)行請求之后,CPU被釋放用于其他工作,且通道子系統(tǒng)裝配或拆開數(shù)據(jù)并同步I/O設(shè)備和主存儲(chǔ)器之間的數(shù)據(jù)字節(jié)的傳送。為了完成這一點(diǎn),通道子系統(tǒng)維護(hù)并更新地址,以及描述主存儲(chǔ)器中的數(shù)據(jù)的目的或源的計(jì)數(shù)。類似地,當(dāng)I/o設(shè)備提供應(yīng)當(dāng)引起程序注意的信號時(shí),通道子系統(tǒng)將信號轉(zhuǎn)變?yōu)闋顟B(tài)信息,并將信息存儲(chǔ)在子通道中,在此它可被程序檢索。
      [0516]輸入/輸出設(shè)備的附加
      [0517]通道路徑
      [0518]通道子系統(tǒng)通過通道子系統(tǒng)和控制單元之間的通道路徑與I/O設(shè)備通信。控制單元可通過多于一個(gè)的通道路徑被通道子系統(tǒng)訪問。類似地,I/o設(shè)備可通過多于一個(gè)的控制單元被通道子系統(tǒng)訪問,每個(gè)控制單元具有一個(gè)或多個(gè)到通道子系統(tǒng)的通道路徑。
      [0519]通過被配置到子通道的多個(gè)通道路徑附加到通道子系統(tǒng)的設(shè)備可被通道子系統(tǒng)使用任何可用的通道路徑訪問。類似地,具有動(dòng)態(tài)重連特征并在多路徑模式中操作的設(shè)備可被初始化以操作,使得當(dāng)邏輯重連到通道子系統(tǒng)以繼續(xù)I/o操作鏈時(shí),設(shè)備可選擇被配置到子通道的任何可用的通道路徑。
      [0520]通道子系統(tǒng)可包含多于一種類型的通道路徑。通道子系統(tǒng)使用的通道路徑類型的例子是 ESCON I/O 接口、FICON I/O 接口、FICON 轉(zhuǎn)換的 I/O 接口以及 IBM System/360 和System/370I/0 接口。術(shù)語“串行 I/O 接 口”被用來指 ESCON I/O 接口、FICON I/O 接口、FICON轉(zhuǎn)換的I/O接口。術(shù)語“并行I/O接口”被用來指IBM System/360和System/3701/O接口。
      [0521]ESCON I/O接口在系統(tǒng)庫公開 IBM Enterprise Systems Architecture/390ESC0NI/O Interface, SA22-7202中描述,其通過全文引用結(jié)合于此。
      [0522]FICON I/O 接口在 ANSI 標(biāo)準(zhǔn)文檔 Fibre Channel-Single-Byte Command CodeSets-2 (FC-SB-2)中被描述。
      [0523]IBM System/360 和 System/370I/0 接 口系統(tǒng)庫公開 IBM System/360andSystem/370I/0 Interface Channel to Control Unit 0ΕΜΙ, GA22-6974 中被描述,其通過全文引用結(jié)合于此。
      [0524]根據(jù)通道路徑的類型、通道路徑提供的設(shè)施、以及1/0設(shè)備,1/0操作可發(fā)生在三種模式中的一種中:幀復(fù)用模式、猝發(fā)模式和字節(jié)復(fù)用模式。
      [0525]在幀復(fù)用模式中,在通道程序的執(zhí)行期間1/0設(shè)備可保持邏輯連接到通道路徑。能夠在幀復(fù)用模式中操作的通道路徑的設(shè)施可被若干個(gè)并行操作的I/o設(shè)備共享。在該模式中,完成I/o操作所需要的信息被分為幀,所述幀可與來自用于其他I/O設(shè)備的1/0操作的幀交錯(cuò)。在該期間,多個(gè)I/o設(shè)備被認(rèn)為邏輯連接到通道路徑。
      [0526]在猝發(fā)模式中,1/0設(shè)備獨(dú)占通道路徑并保持邏輯連接到通道路徑以用于信息猝發(fā)的傳送。在猝發(fā)被傳送期間,沒有設(shè)備可在通道路徑上通信。猝發(fā)可由若干字節(jié)、整塊數(shù)據(jù)、具有相關(guān)控制和狀態(tài)信息的塊序列(塊長度可以是零)或獨(dú)占通道路徑的狀態(tài)信息組成。能在猝發(fā)模式中操作的通道路徑的設(shè)施可被若干個(gè)并行操作的I/o設(shè)備共享。
      [0527]—些通道路徑可忍受在猝發(fā)模式操作期間大約半分鐘的數(shù)據(jù)傳送缺失,諸如當(dāng)磁帶上的長空隙被讀取時(shí)發(fā)生的。當(dāng)數(shù)據(jù)傳送缺失超過規(guī)定界限時(shí),可指示設(shè)備故障。
      [0528]在字節(jié)復(fù)用模式中,I/O設(shè)備僅可在較短時(shí)間間隔保持邏輯連接到通道路徑。能在字節(jié)復(fù)用模式中操作的通道路徑的設(shè)施可被若干并行操作的I/o設(shè)備共享。在該模式中,所有的I/o操作被分為一些短的時(shí)間間隔,在時(shí)間間隔期間僅一段信息通過通道路徑被傳送。在這樣的間隔期間,僅一個(gè)設(shè)備及其相關(guān)子通道邏輯連接到通道路徑。與多個(gè)I/o設(shè)備的并行操作關(guān)聯(lián)的間隔響應(yīng)于來自設(shè)備的要求而被排序。與子通道關(guān)聯(lián)的通道子系統(tǒng)設(shè)施僅在傳送信息段所需的時(shí)間為任一個(gè)操作實(shí)施其控制。段可由單個(gè)字節(jié)的數(shù)據(jù)、若干字節(jié)的數(shù)據(jù)、來自設(shè)備的狀態(tài)報(bào)告或用于啟動(dòng)新操作的控制序列組成。
      [0529]通常,具有高數(shù)據(jù)傳送速率要求的設(shè)備使用幀復(fù)用模式中的通道路徑操作,較慢的設(shè)備在猝發(fā)模式中操作,且最慢的設(shè)備在字節(jié)復(fù)用模式中操作。一些控制單元具有用于設(shè)置希望的操作模式的手動(dòng)開關(guān)。
      [0530]發(fā)生在并行I/O接口類型的通道路徑的I/O操作可發(fā)生在猝發(fā)模式或字節(jié)復(fù)用模式中,這取決于通道路徑和I/o設(shè)備提供的設(shè)施。為了改善的性能,一些通道路徑和控制單元可被提供有用于高速傳送和數(shù)據(jù)流式傳輸?shù)脑O(shè)施。參考系統(tǒng)庫公開IBM System/360andSystem/370I/0 Interface Channel to Control Unit OEMI, GA22-6974來獲得這兩個(gè)設(shè)施的描述,該公開通過全文引用結(jié)合于此。
      [0531]發(fā)生在串行I/O接口類型的通道路徑的I/O操作可發(fā)生在幀復(fù)用模式或猝發(fā)模式中。為了改善的性能,附加到串行I/o接口的一些控制單元提供能力以與呈現(xiàn)單元檢驗(yàn)狀態(tài)并行地提供感測數(shù)據(jù)(sense data)給程序,如果被程序允許這么做的話。
      [0532]根據(jù)控制單元或通道子系統(tǒng),通過子通道訪問設(shè)備可被限制為單通道路徑類型。
      [0533]上述模式和特點(diǎn)僅影響用于在通道路徑傳送信息的協(xié)議以及傳輸速率。CPU或通道程序不會(huì)觀察到針對這些程序被執(zhí)行的方式的影響。
      [0534]控制單元
      [0535]控制單元提供操作和控制I/O設(shè)備所需的邏輯能力,并適應(yīng)性調(diào)整每個(gè)設(shè)備的特點(diǎn),這樣它可響應(yīng)于通道子系統(tǒng)提供的控制的標(biāo)準(zhǔn)形式。
      [0536]控制單元和通道子系統(tǒng)之間的通信發(fā)生在通道路徑上??刂茊卧邮諄碜酝ǖ雷酉到y(tǒng)的控制信號,控制經(jīng)過通道路徑的數(shù)據(jù)傳送的時(shí)間,并提供關(guān)于設(shè)備狀態(tài)的指示。
      [0537]附加到控制單元的I/O設(shè)備可被設(shè)計(jì)為僅執(zhí)行特定的有限操作,或者它可執(zhí)行許多不同的操作。典型的操作移動(dòng)記錄介質(zhì)并記錄數(shù)據(jù)。為了完成其操作,設(shè)備需要其設(shè)備類型特有的詳細(xì)的信號序列??刂茊卧獯a從通道子系統(tǒng)接受的命令,將其解釋為用于特定類型的設(shè)備,并提供執(zhí)行操作所需要的信號序列。
      [0538]控制單元可被單獨(dú)放置,或其可被物理地和邏輯地與I/O設(shè)備、通道子系統(tǒng)或CPU集成。在大多數(shù)機(jī)電設(shè)備的情況下,由于控制單元和設(shè)備要求的設(shè)備類型差異,定義良好的接口存在于設(shè)備和控制單元之間。這些機(jī)電設(shè)備通常是這樣的類型,其中在一時(shí)間僅要求附加到控制單元的組中的一個(gè)設(shè)備傳送數(shù)據(jù)(例如磁帶單元或盤訪問裝制),且控制單元在若干個(gè)I/o設(shè)備之間共享。另一方面,在諸如通道到通道適配器的一些電子I/O設(shè)備中,控制單元不具有其自己的身份。[0539]從程序員的角度,由控制單元執(zhí)行的大部分功能可與I/O設(shè)備執(zhí)行的功能合并。因此,通常在該本說明書中沒有特別提到控制單元功能;1/0操作的執(zhí)行被描述,就好比I/O設(shè)備直接與通道子系統(tǒng)通信。僅當(dāng)強(qiáng)調(diào)控制單元執(zhí)行的功能或描述在若干設(shè)備間共享控制單元會(huì)如何影響I/o操作的執(zhí)行時(shí),才參考控制單元。
      [0540]I/O 設(shè)備
      [0541]輸入/輸出(I/O)設(shè)備提供了外部存儲(chǔ)器、數(shù)據(jù)處理系統(tǒng)之間的通信手段或系統(tǒng)及其環(huán)境之間的通信手段。I/o設(shè)備包括這樣的設(shè)備,諸如磁帶單元、直接訪問存儲(chǔ)設(shè)備(例如盤)、顯示單元、打字機(jī)一鍵盤設(shè)備、打印機(jī)、遠(yuǎn)程處理設(shè)備和基于傳感器的設(shè)備。I/O設(shè)備可以是物理上單獨(dú)的設(shè)備,或者其可與其他I/o設(shè)備共享設(shè)備。
      [0542]大多數(shù)類型的I/O設(shè)備,諸如打印機(jī)或磁帶設(shè)備,使用外部介質(zhì),且這些設(shè)備是物理可區(qū)分和可識(shí)別的。其他類型是完全電子的,且不直接處理物理記錄介質(zhì)。例如,通道到通道適配器提供兩個(gè)通道路徑之間的數(shù)據(jù)傳送,且數(shù)據(jù)從來不到達(dá)主存儲(chǔ)器外的物理記錄介質(zhì)。類似地,通信控制器可處理數(shù)據(jù)處理系統(tǒng)和遠(yuǎn)程站之間的信息傳輸,且其輸入和輸出是傳輸線上的信號。
      [0543]在最簡單的情況下,I/O設(shè)備被附加到一個(gè)控制單元,且可從一個(gè)通道路徑被訪問。開關(guān)設(shè)備通過控制單元間切換設(shè)備以及通過通道路徑間切換控制單元,可用于使得一些設(shè)備可從兩條或更多條通道路徑被訪問。這樣的開關(guān)設(shè)備提供多條路徑,通過所述路徑I/o設(shè)備可被訪問。多條到I/O設(shè)備的通道路徑被提供以改善系統(tǒng)內(nèi)的性能或I/O可用性或這兩者。到設(shè)備的多條通道路徑的管理是在通道子系統(tǒng)和設(shè)備的控制下,但是通道路徑可被程序間接控制。
      [0544]I/O 尋址
      [0545]由通道子系統(tǒng)提供4種不同類型的I/O尋址,以用于各種組件的必要尋址:通道路徑標(biāo)識(shí)符、子通道號、設(shè)備號,以及雖然對程序來說不可見,取決于通道路徑類型的地址。當(dāng)多子通道組設(shè)施已安裝時(shí),子通道組標(biāo)識(shí)符(SSID)也在I/O尋址中被使用。
      [0546]子通道組標(biāo)識(shí)符
      [0547]子通道組標(biāo)識(shí)符(SSID)是被分配給每個(gè)提供的子通道組的二位值。
      [0548]通道路徑標(biāo)識(shí)符
      [0549]通道路徑標(biāo)識(shí)符(CHPID)是被分配給系統(tǒng)的每個(gè)安裝的通道路徑的系統(tǒng)唯一的8位值。CHPID被用來尋址通道路徑。CHPID被RESET CHANNEL PATH (重置通道路徑)的第二操作數(shù)地址指定,且被用來指定將被重置的通道路徑。當(dāng)STORE SUBCHANNEL (存儲(chǔ)子通道)被執(zhí)行時(shí),設(shè)備經(jīng)其可被訪問的通道路徑在通道信息塊(SCHIB)中被識(shí)別,每個(gè)設(shè)備由其相關(guān)CHPID識(shí)別。當(dāng)需要識(shí)別特定通道路徑時(shí),CHPID也可被用在操作符消息中。系統(tǒng)模型可提供多達(dá)256條通道路徑。通道路徑的最大數(shù)量和向通道路徑分配CHPID取決于系統(tǒng)模型。
      [0550]子通道號
      [0551]子通道號是用于尋址子通道的系統(tǒng)唯一的16位值。該值在通道子系統(tǒng)的子通道組內(nèi)是唯一的。子通道被8個(gè)I/O指令尋址:CANCEL SUBCHANNEL (取消子通道)、CLEARSUBCHANNEL (清除子通道)、HALT SUBCHANNEL (暫停子通道)、M0DIFY SUBCHANNEL (修改子通道)、RESUME SUBCHANNEL(恢復(fù)子通道)、START SUBCHANNEL(開始子通道)、STORE SUBCHANNEL(存儲(chǔ)子通道)和TEST SUBCHANNEL (測試子通道)。相對于特定I/O設(shè)備的所有I/O功能由程序通過指定被分配給I/O設(shè)備的子通道來指定。每個(gè)子通道組中的子通道總是被分配單個(gè)范圍的連續(xù)編號內(nèi)的子通道號。最低編號的子通道是子通道O。通道子系統(tǒng)的最高編號的子通道具有等于比提供的子通道的數(shù)量少I的子通道編號。在每個(gè)子通道組中最多可提供65536個(gè)子通道。通常,子通道編號僅被用于CPU程序和通道子系統(tǒng)之間的通信。
      [0552]設(shè)備號
      [0553]具有分配給其的I/O設(shè)備的每個(gè)子通道也包含被稱為設(shè)備號的參數(shù)。設(shè)備號是16位的值,其在設(shè)備被分配給子通道時(shí)被分配作為子通道的參數(shù)中的一個(gè)。設(shè)備號唯一地向程序標(biāo)識(shí)設(shè)備。
      [0554]設(shè)備號提供了識(shí)別設(shè)備的手段,這跟系統(tǒng)模型、配置或通道路徑協(xié)議施加的任何限制無關(guān)。設(shè)備號被用在關(guān)于設(shè)備的在系統(tǒng)和系統(tǒng)操作者之間發(fā)生的通信中。例如,設(shè)備號由系統(tǒng)操作者輸入,以指定將被用于初始程序加載的輸入設(shè)備。
      [0555]編程說明:設(shè)備號在設(shè)備安裝時(shí)間被分配,且可具有任何值。但是,用戶必須遵守對設(shè)備號分配的任何限制,其可被控制程序、支持程序或特定的控制單元或I/O設(shè)備所要求。
      [0556]設(shè)備標(biāo)識(shí)符
      [0557]設(shè)備標(biāo)識(shí)符是由通道子系統(tǒng)使用以與I/O設(shè)備通信的地址,其對于程序來說不明顯(apparent)。所使用的設(shè)備標(biāo)識(shí)符的類型取決于所提供的特定通道路徑類型和協(xié)議。每個(gè)子通道包含一個(gè)或多個(gè)設(shè)備標(biāo)識(shí)符。
      [0558]對于并行I/O接口類型的通道路徑,設(shè)備標(biāo)識(shí)符被稱為設(shè)備地址且由一個(gè)8位值組成。對于ESCON I/O接口,設(shè)備標(biāo)識(shí)符由4位控制單元地址和8位設(shè)備地址組成。對于FICON I/O接口,設(shè)備標(biāo)識(shí)符由8位控制單元映像ID和8位設(shè)備地址組成。對于FICON轉(zhuǎn)換的I/O接口,設(shè)備標(biāo)識(shí)符由4位控制單元地址和8位設(shè)備地址組成。
      [0559]設(shè)備地址識(shí)別與子通道關(guān)聯(lián)的特定I/O設(shè)備(且在并行IO接口上是控制單元)。設(shè)備地址可識(shí)別例如特定磁帶驅(qū)動(dòng)器、盤訪問裝置或傳輸線。范圍0-255中的任何編號可被分配為設(shè)備地址。
      [0560]光纖通道擴(kuò)展
      [0561]光纖通道擴(kuò)展(FCX)設(shè)施是可選的設(shè)施,其提供由傳輸控制字(TCW)組成的通道程序的形成,所述傳輸控制字指定傳輸命令控制塊(TCCB)和傳輸狀態(tài)塊(TSB)。TCCB包括傳輸命令區(qū)域(TCA),其包含多達(dá)30個(gè)形式為設(shè)備命令字(DCW)的I/O命令的列表。TCW和其TCCB可指定讀或?qū)懖僮?。除?IRB,TSB包含完成狀態(tài)和與TCW通道程序關(guān)聯(lián)的其他信
      肩、O
      [0562]FCX設(shè)施提供直接或間接指定TCCB、輸入數(shù)據(jù)存儲(chǔ)區(qū)域和輸出數(shù)據(jù)存儲(chǔ)區(qū)域中的任何一個(gè)或全部的能力。當(dāng)存儲(chǔ)區(qū)域被直接指定時(shí),TCW指定單個(gè)、連續(xù)存儲(chǔ)塊的位置。當(dāng)存儲(chǔ)區(qū)域被間接指定時(shí),TCW指定一個(gè)或多個(gè)傳輸間接數(shù)據(jù)地址字(TIDAW)的列表的位置。TIDAff列表和由列表中每個(gè)TIDAW指定的存儲(chǔ)區(qū)域被限制跨過4K字節(jié)的邊界。
      [0563]FCX設(shè)施也提供詢問操作,其可被取消子通道(CANCEL SUBCHANNEL)指令啟動(dòng)以確定I/o操作的狀態(tài)。
      [0564]I/O命令字[0565]I/O命令字指定命令并包含與命令相關(guān)的信息。當(dāng)FCX設(shè)施已被安裝時(shí),存在兩種基本形式的I/o命令字,其是通道命令字(CCW)和設(shè)備命令字(DCW)。
      [0566]CCW是8字節(jié)的長度,并指定將被執(zhí)行的命令。對于啟動(dòng)特定操作的命令,CCW也指定與操作相關(guān)的存儲(chǔ)區(qū)域、數(shù)據(jù)字節(jié)的計(jì)數(shù)、當(dāng)命令完成時(shí)將采取的動(dòng)作、以及其他選項(xiàng)。所有的I/o設(shè)備識(shí)別CCW。
      [0567]DCW長度是8字節(jié),并指定將被執(zhí)行的命令、數(shù)據(jù)字節(jié)的計(jì)數(shù)和其他選項(xiàng)。支持FCX的I/o設(shè)備識(shí)別DCW。
      [0568]傳輸命令字(TCW)
      [0569]TCff指定傳輸命令控制塊(TCCB),其包含將被傳輸給I/O設(shè)備并由其執(zhí)行的命令列表。TCW也指定用于TCCB中的命令的存儲(chǔ)區(qū)域,以及包含I/O操作的狀態(tài)的傳輸狀態(tài)塊(TSB)0
      [0570]通道程序組織
      [0571 ] 當(dāng)FCX設(shè)施未被安裝時(shí),有單個(gè)形式的通道程序,其是CCW通道程序。當(dāng)FCX設(shè)施已被安裝時(shí),存在額外形式的通道程序,其是TCW通道程序。兩種形式的通道程序都在以下描述。
      [0572]CCff通道程序
      [0573]由一個(gè)或多個(gè)CCW組成的通道程序被稱為CCW通道程序(CCP)。這樣的通道程序包含一個(gè)或多個(gè)CCW,其被邏輯連接并被安排為由通道子系統(tǒng)順序執(zhí)行。
      [0574]TCff通道程序
      [0575]由單個(gè)TCW組成的通道程序被稱為TCW通道程序。TCW指定傳輸命令控制塊(TCCB),其包含I到30個(gè)DCW。TCCB內(nèi)的DCW被邏輯連接,且被安排為順序執(zhí)行。對于指定控制信息的DCW,TCCB也包含用于這些命令的控制信息。TCW也指定用于DCW的一個(gè)或多個(gè)存儲(chǔ)區(qū)域,所述DCW指定從設(shè)備或到設(shè)備的數(shù)據(jù)傳送,以及用于完成狀態(tài)的傳輸狀態(tài)塊(TSB)的位置。TCCB和用于數(shù)據(jù)傳送的存儲(chǔ)區(qū)域可被指定為連續(xù)或不連續(xù)的存儲(chǔ)。
      [0576]TCff也指定用于完成狀態(tài)的TSB。
      [0577]I/O操作的執(zhí)行
      [0578]I/O操作被啟動(dòng),且被具有4種類型的格式的信息控制:指令START SUBCHANNEL(開始子通道)、傳輸命令字、I/o命令字以及順序。START SUBCHANNEL指令由CPU執(zhí)行,且是CPU程序的一部分,該CPU程序監(jiān)督來自管理或處理I/O數(shù)據(jù)的其他程序的、用于I/O操作的請求流。
      [0579]當(dāng)START SUBCHANNEL被執(zhí)行時(shí),參數(shù)被傳遞給目標(biāo)子通道,請求通道子系統(tǒng)利用與子通道關(guān)聯(lián)的I/o設(shè)備執(zhí)行開始功能。通道子系統(tǒng)通過使用子通道處的信息執(zhí)行開始功能,所述信息包括在START SUBCHANNEL指令的執(zhí)行期間傳遞的信息,以找到到設(shè)備的可訪問的通道路徑。一旦設(shè)備已被選擇,對于CCW通道程序,I/O操作的執(zhí)行通過通道子系統(tǒng)和I/O設(shè)備對CCW的解碼和執(zhí)行而完成,或者對于TCW通道程序,通過由通道子系統(tǒng)傳輸TCCB到I/O設(shè)備,并由設(shè)備解碼并執(zhí)行DCW而完成。I/O命令字以及傳輸命令字從主存儲(chǔ)器中獲取,盡管CCW DCff的命令代碼中的修改符位可為設(shè)備處的操作的執(zhí)行指定取決于設(shè)備的條件。
      [0580]特定于設(shè)備的操作,諸如重繞磁帶或?qū)⒃L問機(jī)構(gòu)放置在磁盤驅(qū)動(dòng)上,由I/O設(shè)備解碼和執(zhí)行的命令指定。命令可作為控制命令的命令代碼中的修改符位被傳遞到設(shè)備中,作為在控制或?qū)懖僮髌陂g的數(shù)據(jù)被傳送給設(shè)備,或可通過其他手段對設(shè)備可用。
      [0581]開始功能啟動(dòng)
      [0582]CPU程序利用指令START SUBCHANNEL啟動(dòng)I/O操作。該指令將操作請求塊(ORB)的內(nèi)容傳遞給子通道。如果ORB指定CCW通道程序,ORB的內(nèi)容包括子通道鍵、將被執(zhí)行的第一個(gè)CCW的地址和CCW的格式的指定。CCW指定將被執(zhí)行的命令和將被使用的存儲(chǔ)區(qū)域(如有)。如果ORB指定TCW通道程序,ORB的內(nèi)容包括子通道鍵和將被執(zhí)行的TCW的地址。TCW指定TCCB,其包含將被傳輸給設(shè)備來執(zhí)行的命令、將用于數(shù)據(jù)傳送的一個(gè)或多個(gè)存儲(chǔ)區(qū)域(如有),以及包含I/O操作的狀態(tài)的TSB。
      [0583]當(dāng)ORB內(nèi)容已被傳遞給子通道,START SUBCHANNEL的執(zhí)行完成。該指令執(zhí)行的結(jié)果由程序狀態(tài)字中設(shè)置的條件代碼指示。
      [0584]當(dāng)設(shè)施變得可用且ORB指定CCW通道程序,通道子系統(tǒng)獲取第一個(gè)CCW并根據(jù)ORB中指定的格式位對其解碼。如果格式位是零,指定格式0CCW。如果格式位是1,指定格式ICCff0格式O和格式ICCW包含相同的信息,但是字段在格式ICCW中被不同地安排,這樣31位地址可在CCW中被直接指定。當(dāng)設(shè)施變得可用且ORB指定TCW通道程序,通道子系統(tǒng)獲取指定的TCW并將指定的TCCB傳輸給設(shè)備。由TCW指定用于傳送數(shù)據(jù)到設(shè)備或從設(shè)備傳送數(shù)據(jù)的存儲(chǔ)區(qū)域是64位地址。
      [0585]子通道操作模式
      [0586]存在兩種子通道操作模式。當(dāng)FCX設(shè)施被安裝,且作為指定了 TCW通道程序的START SUBCHANNEL指令的執(zhí)行結(jié)果,開始功能在子通道處被設(shè)置,子通道進(jìn)入傳輸模式。子通道保持在傳輸模式,直到開始功能在子通道處被重置。在所有其他時(shí)刻,子通道處于命令模式。
      [0587]路徑管理
      [0588]如果ORB指定CCW通道程序,且第一個(gè)CCW傳遞特定的有效性測試且不具有被指定為I的暫停標(biāo)志,或者如果ORB指定TCW通道程序,且指定的TCW傳遞特定的有效性測試,通道子系統(tǒng)通過從可供選擇的通道路徑組選擇通道路徑,來嘗試設(shè)備選擇。識(shí)別設(shè)備標(biāo)識(shí)符的控制單元將其自己邏輯連接到通道路徑并響應(yīng)于其選擇。
      [0589]如果ORB指定CCW通道程序,通道子系統(tǒng)通過通道路徑發(fā)送CCW的命令代碼部分,且設(shè)備以指示命令是否可被執(zhí)行的狀態(tài)字節(jié)進(jìn)行響應(yīng)。此時(shí)控制單元可邏輯地從通道路徑斷開,或它可保持連接以啟動(dòng)數(shù)據(jù)傳送。
      [0590]如果ORB指定TCW通道程序,通道子系統(tǒng)使用指定的TCW中的信息以將TCCB傳送到控制單元。TCCB的內(nèi)容被通道子系統(tǒng)忽略,且僅對控制單元和I/O設(shè)備有意義。
      [0591]如果由于忙指示或通道不可操作條件的結(jié)果,沒有發(fā)生嘗試的選擇,通道子系統(tǒng)試圖通過可替換的通道路徑(如果其可用)選擇設(shè)備。當(dāng)選擇已在所有可供選擇的路徑上被嘗試且忙條件持續(xù),操作保持為待決直到通道空閑。如果通道不可操作條件在嘗試了設(shè)備選擇的一條或多條路徑上被檢測,程序被隨后的I/o中斷警告。I/O中斷發(fā)生在通道程序的執(zhí)行時(shí)(假設(shè)設(shè)備在可選的通道路徑上被選擇)或作為因?yàn)槁窂讲豢刹僮鳁l件在嘗試了設(shè)備選擇的所有的通道路徑上被檢測執(zhí)行被放棄的結(jié)果。
      [0592]通道程序執(zhí)行[0593]如果命令在設(shè)備上被啟動(dòng)且命令執(zhí)行不要求任何數(shù)據(jù)被傳送到設(shè)備或從設(shè)備被傳送,設(shè)備可在收到命令代碼后立即信號通知操作結(jié)束。在涉及數(shù)據(jù)傳送的操作中,子通道被建立,這樣通道子系統(tǒng)將響應(yīng)于來自設(shè)備的服務(wù)請求并采取對操作的進(jìn)一步控制。
      [0594]I/O操作可涉及到或來自由單個(gè)CCW或TCW指定的一個(gè)存儲(chǔ)區(qū)域的數(shù)據(jù)傳送,或者到或來自若干不連續(xù)的存儲(chǔ)區(qū)域的數(shù)據(jù)傳送。在后一種情況中,通常CCW列表被用于I/O操作的執(zhí)行,每個(gè)CCW指定連續(xù)的存儲(chǔ)區(qū)域且CCW被數(shù)據(jù)鏈接(chaining)耦合。數(shù)據(jù)鏈接被CCW中的標(biāo)志指定,且使得通道子系統(tǒng)一旦當(dāng)前CCW指定的存儲(chǔ)區(qū)域被耗盡或填充,獲取另一個(gè)CCW。由在數(shù)據(jù)鏈接上獲取的CCW指定的存儲(chǔ)區(qū)域?qū)儆贗/O設(shè)備處已在進(jìn)行中的I/o操作,且當(dāng)新的CCW被獲取時(shí),I/O設(shè)備不會(huì)被通知。
      [0595]在CCW格式中提供了規(guī)定,以使程序員可指定當(dāng)CCW被解碼時(shí),通道子系統(tǒng)盡快請求I/o中斷,由此向CPU程序通知鏈接已至少前進(jìn)了跟CCW在通道程序前進(jìn)的一樣遠(yuǎn)。
      [0596]為了補(bǔ)充CPU中的動(dòng)態(tài)地址轉(zhuǎn)換,CCff間接數(shù)據(jù)尋址和修改的CCW間接數(shù)據(jù)尋址被提供。
      [0597]當(dāng)ORB指示CCW通道程序以及CCW間接數(shù)據(jù)尋址被使用時(shí),CCff中的標(biāo)志指定間接數(shù)據(jù)地址列表被用于指定用于該CCW的存儲(chǔ)區(qū)域。每次到達(dá)存儲(chǔ)塊的邊界時(shí),列表被引用以確定將被使用的下一個(gè)存儲(chǔ)塊。ORB指定每個(gè)存儲(chǔ)塊的大小是2K字節(jié)還是4K字節(jié)。
      [0598]當(dāng)ORB指定CCW通道程序且修改的CCW間接數(shù)據(jù)尋址被使用時(shí),ORB中的標(biāo)志和CCff中的標(biāo)志指示修改的間接數(shù)據(jù)地址列表將被用來指定用于該CCW的存儲(chǔ)區(qū)域。每次達(dá)到指定用于存儲(chǔ)塊的字節(jié)計(jì)數(shù)時(shí),引用該列表以確定下一個(gè)將被使用的存儲(chǔ)塊。與當(dāng)間接數(shù)據(jù)尋址被使用不同,塊可在任何邊界上被指定,且長度可多達(dá)4K,假設(shè)跨過4K字節(jié)邊界的數(shù)據(jù)傳送未被指定的話。
      [0599]當(dāng)ORB指定TCW通道程序且傳輸間接數(shù)據(jù)尋址被使用,TCW中的標(biāo)志指示傳輸間接數(shù)據(jù)地址列表是否被使用以指定包含TCCB的存儲(chǔ)區(qū)域,以及傳輸間接數(shù)據(jù)地址列表是否被使用以指定與TCCB中的DCW關(guān)聯(lián)的數(shù)據(jù)存儲(chǔ)區(qū)域。每次達(dá)到指定用于存儲(chǔ)塊的字節(jié)的計(jì)數(shù)時(shí),對應(yīng)的傳輸間接數(shù)據(jù)地址列表被引用以確定將被使用的下一個(gè)存儲(chǔ)塊。
      [0600]CCff間接數(shù)據(jù)尋址和修改的CCW間接數(shù)據(jù)尋址允許基本上相同的CCW序列被用于利用在CPU中活動(dòng)的動(dòng)態(tài)地址轉(zhuǎn)換運(yùn)行的程序,就像其在CPU利用等效的連續(xù)真實(shí)存儲(chǔ)來運(yùn)行的情況下將被使用那樣。CCW間接數(shù)據(jù)尋址允許程序指定數(shù)據(jù)塊具有多達(dá)264-1的絕對存儲(chǔ)地址,而不考慮是否在ORB中指定了格式O或格式1CCW。修改的CCW間接數(shù)據(jù)尋址允許程序指定數(shù)據(jù)塊具有多達(dá)264-1的絕對存儲(chǔ)地址,而不考慮是否在ORB中指定了格式O或格式1CCW。
      [0601]一般而言,I/O操作或操作鏈的執(zhí)行涉及多達(dá)3級的參與:
      [0602]1.除了由于CPU和通道子系統(tǒng)的集成引起的效果,CPU在START SUBCHANNEL的執(zhí)行期間是忙的,其持續(xù)直到尋址的子通道已被傳遞ORB內(nèi)容。
      [0603]2.對于新的START SUBCHANNEL,從接收到ORB內(nèi)容直到初級中斷條件在子通道處被清除,子通道是忙的。
      [0604]3.從設(shè)備處啟動(dòng)第一個(gè)操作直到子通道變得暫?;虼渭壷袛鄺l件被放置在子通道處,I/O設(shè)備是忙的。在暫停子通道的情況下,當(dāng)恢復(fù)執(zhí)行暫停的通道程序時(shí),設(shè)備再次變得忙。[0605]I/O操作的結(jié)束
      [0606]I/O操作的結(jié)束通常由兩種狀態(tài)條件指示:通道端和設(shè)備端。通道端條件指示I/O設(shè)備已接收或提供與操作相關(guān)的所有數(shù)據(jù),且不再需要通道子系統(tǒng)設(shè)施。該條件被稱為初級中斷條件,且在該情況下通道端是初級狀態(tài)。通常,初級中斷條件是涉及I/o操作且信號通知I/o操作或I/O操作鏈的子通道處處的結(jié)束的任何中斷條件。
      [0607]設(shè)備端信號指示I/O設(shè)備已結(jié)束執(zhí)行,且準(zhǔn)備好執(zhí)行另一操作。該條件被稱為次級中斷條件,且該情況下的設(shè)備端處于次級狀態(tài)。通常次級中斷條件是涉及I/o操作且信號通知I/o操作或操作鏈的設(shè)備處的結(jié)束的任何中斷條件。次級中斷條件可與初級中斷條件并行發(fā)生或晚于其發(fā)生。
      [0608]與初始或次級中斷條件并行地,通道子系統(tǒng)和/或I/O設(shè)備都可提供不平常情況的指示。
      [0609]信號通知I/O操作的結(jié)束的條件可由I/O中斷引起程序的注意,或者當(dāng)CPU被禁止用于I/o中斷時(shí),通過通道子系統(tǒng)的編程詢問來引起程序的注意。在前一種情況下,這些條件造成存儲(chǔ)I/o中斷代碼,其包含關(guān)于中斷源的信息。在后一種情況下,中斷代碼被存儲(chǔ)為測試待決中斷(TEST PENDING INTERRUPTION)的執(zhí)行結(jié)果。
      [0610]當(dāng)識(shí)別初級中斷條件時(shí),通道子系統(tǒng)試圖通過中斷請求的方式向程序通知子通道包含描述子通道處的I/o操作的結(jié)束的信息。對于命令模式中斷,該信息標(biāo)識(shí)使用的最后一個(gè)CCW,且可提供其剩余字節(jié)計(jì)數(shù),由此描述所使用的主存儲(chǔ)器的區(qū)段。對于傳輸模式中斷,該信息標(biāo)識(shí)當(dāng)前TCW以及與通道程序關(guān)聯(lián)的TSB,其包含關(guān)于I/O操作的額外狀態(tài),諸如剩余字節(jié)計(jì)數(shù)。除了關(guān)于通道程序的信息,通道子系統(tǒng)和I/o設(shè)備都可提供作為初始或次級中斷條件的一部分的不平常情況的額外指示。包含在子通道處的信息可被測試子通道(TEST SUBCHANNEL)的執(zhí)行或存儲(chǔ)子通道(STORE SUBCHANNEL)的執(zhí)行存儲(chǔ)。當(dāng)被存儲(chǔ)時(shí),該信息被稱為子通道狀態(tài)字(SCSW)。
      [0611]當(dāng)使用CCW通道程序時(shí)的鏈接
      [0612]當(dāng)ORB指定CCW通道程序時(shí),設(shè)施被提供,以使程序利用單個(gè)START SUBCHANNEL指令啟動(dòng)I/o操作鏈的執(zhí)行。當(dāng)當(dāng)前CCW指定命令鏈接且在執(zhí)行期間沒有檢測到不平常條件時(shí),接收到設(shè)備端信號使得通道子系統(tǒng)獲取新的CCW。如果CCW通過特定的有效性測試且暫停標(biāo)簽沒有在新的CCW中被指定為1,新命令的執(zhí)行在設(shè)備處被啟動(dòng)。如果CCW未能通過有效性測試,新命令不被啟動(dòng),命令鏈被暫停,且與新CCW關(guān)聯(lián)的狀態(tài)引起中斷條件的產(chǎn)生。如果暫停標(biāo)志被指定為I且該值由于暫??刂?相關(guān)ORB的字I的位4)中的I值而是有效的,新命令的執(zhí)行不會(huì)被啟動(dòng),且命令鏈被結(jié)束。
      [0613]新命令的執(zhí)行由通道子系統(tǒng)以與之前操作相同的方式被啟動(dòng)。使得在指定命令鏈的CCW引起的操作的結(jié)束時(shí)發(fā)生的結(jié)束信號不可用于程序,當(dāng)另一個(gè)I/O操作被命令鏈啟動(dòng)時(shí),通道子系統(tǒng)繼續(xù)通道程序的執(zhí)行。但是如果已檢測到不平常的條件,抑制命令鏈,終止通道程序,生成中斷條件,且使得引起終止的結(jié)束信號對程序可用。
      [0614]暫停和恢復(fù)功能向程序提供對于通道程序的執(zhí)行的控制。暫停功能的啟動(dòng)由ORB中的暫??刂莆坏脑O(shè)置控制。當(dāng)ORB中的暫??刂莆皇荌且第一個(gè)CCW中或命令鏈期間獲取的CCW中的暫停標(biāo)志是I時(shí),暫停功能在通道程序執(zhí)行期間被信號通知給通道子系統(tǒng)。
      [0615]當(dāng)通道子系統(tǒng)獲取具有被有效地指定為I (由于ORB中的暫??刂莆坏腎值)的暫停標(biāo)志的CCW時(shí),發(fā)生暫停。該CCW中的命令不被發(fā)給I/O設(shè)備,且設(shè)備被信號通知命令鏈被結(jié)束。隨后的恢復(fù)子通道(RESUME SUBCHANNEL)指令向通道子系統(tǒng)通知產(chǎn)生暫停的CCW可能已被修改,且該通道子系統(tǒng)必須重新獲取CCW并檢查暫停標(biāo)志的當(dāng)前設(shè)置。如果在該CCff中暫停標(biāo)志被發(fā)現(xiàn)是零,通道子系統(tǒng)恢復(fù)命令鏈針對I/O設(shè)備的執(zhí)行。
      [0616]使用TCW通道程序時(shí)的鏈接
      [0617]當(dāng)ORB指定TCW通道程序時(shí),設(shè)施也被提供以便程序利用單個(gè)START SUBCHANNEL指令啟動(dòng)設(shè)備操作鏈的執(zhí)行。命令鏈接可被指定用于由單個(gè)TCW指定的那些DCW。當(dāng)當(dāng)前DCW指定命令鏈且在操作期間沒有檢測到不平常條件時(shí),識(shí)別DCW的成功執(zhí)行使得當(dāng)前TCCB中的下一個(gè)DCW被處理。
      [0618]如果下一個(gè)DCW通過特定的有效性測試,新命令的執(zhí)行在設(shè)備處啟動(dòng),且DCW變成當(dāng)前DCW。如果DCW未能通過有效性測試,新命令不被啟動(dòng),命令鏈接被抑制,通道程序被終止,且與新DCW關(guān)聯(lián)的狀態(tài)引起中斷條件被生成。
      [0619]新命令的執(zhí)行以與之前的操作相同的方式被啟動(dòng)。使得發(fā)生在由不是最后指定的DCff的DCW引起的操作的結(jié)束處的結(jié)束信號不對程序可用。當(dāng)另一個(gè)I/O操作被命令鏈啟動(dòng)時(shí),通道程序的執(zhí)行繼續(xù)。但是如果檢測到不平常條件時(shí),命令鏈被抑制,通道程序被終止,中斷條件被生成,且使得狀態(tài)對識(shí)別不平常條件的程序可用。
      [0620]I/O操作的提前結(jié)束
      [0621]通道程序執(zhí)行可被CANCEL SUBCHANNEL, HALT SUBCHANNEL 或 CLEAR SUBCHANNEL提前終止。如果通道程序沒有在設(shè)備處被啟動(dòng),CANCEL SUBCHANNEL的執(zhí)行使得通道子系統(tǒng)終止在子通道處的開始功能。當(dāng)開始功能被CANCEL SUBCHANNEL的執(zhí)行終止時(shí),響應(yīng)于CANCEL SUBCHANNEL指令,通道子系統(tǒng)設(shè)置條件代碼O。HALT SUBCHANNEL的執(zhí)行使得通道子系統(tǒng)發(fā)出暫停信號給I/O設(shè)備,并終止子通道處的通道程序執(zhí)行。當(dāng)通道程序執(zhí)行被HALTSUBCHANNEL的執(zhí)行終止時(shí),通過I/O中斷請求的方式,程序被通知終止。當(dāng)子通道處于命令模式時(shí),當(dāng)設(shè)備呈現(xiàn)用于中斷的操作的狀態(tài)時(shí),中斷請求生成。當(dāng)子通道處于傳輸模式時(shí),中斷請求被立即生成。但是如果在命令結(jié)鏈期間在設(shè)備端接收到但在下一個(gè)命令被傳送給設(shè)備之前,暫停信號被發(fā)出給設(shè)備,在設(shè)備被信號通知后生成中斷請求。在后一種情況中,SCSW的設(shè)備狀態(tài)字段將包含零。CLEAR SUBCHANNEL的執(zhí)行從子通道清除執(zhí)行中的通道程序的指示,使得通道子系統(tǒng)發(fā)出清除信號到I/O設(shè)備,并使得通道子系統(tǒng)生成I/O中斷請求以向程序通知清除功能的完成。
      [0622]I/O 中斷
      [0623]引起I/O中斷請求的條件對于CPU中的活動(dòng)是異步的,且多于一個(gè)的條件可同時(shí)發(fā)生。條件被保留在子通道,直到被TEST SUBCHANNEL或CLEAR SUBCHANNEL清除,或被I/O系統(tǒng)重置。
      [0624]當(dāng)I/O中斷條件已被通道子系統(tǒng)識(shí)別并在子通道被指示,使得I/O中斷請求變得對于在子通道處指定的I/o中斷子通道是待決的。使得中斷對其變得待決的I/O中斷子類通過使用MODIFY SUBCHANNEL而被編程控制。待決的I/O中斷可被任何針對來自其I/O中斷子類的中斷被使能的CPU接受。每個(gè)CPU在控制寄存器6中具有8個(gè)掩碼位,其控制該CPU針對8個(gè)I/O中斷子類中的每個(gè)的使能,其中,I/O掩碼,即PSW中的位6,是用于CPU的主I/O中斷掩碼。[0625]當(dāng)I/O中斷發(fā)生在CPU時(shí),I/O中斷代碼被存儲(chǔ)在該CPU的I/O通信區(qū)域,且I/O中斷請求被清除。I/o中斷代碼識(shí)別子通道,對該子通道中斷是待決的。引起中斷請求產(chǎn)生的條件可隨后被TEST SUBCHANNEL或STORE SUBCHANNEL顯式地從子通道獲取。
      [0626]當(dāng)對應(yīng)地I/O中斷子類被使能但PSW使得I/O中斷被禁止時(shí),待決的I/O中斷請求也可被TEST PENDING INTERRUPTION清除,或當(dāng)CPU針對來自對應(yīng)的I/O中斷子類的I/O中斷被禁止時(shí),該請求也可被TEST SUBCHANNEL禁止。待決的I/O中斷請求也可被CLEARSUBCHANNEL清除。CLEAR SUBCHANNEL和TEST SUBCHANNEL兩者也清除子通道處的保留的中斷條件。
      [0627]通常,除非中斷請求被CLEAR SUBCHANNEL清除,程序發(fā)出TEST SUBCHANNEL以獲取關(guān)于操作執(zhí)行的信息。
      [0628]清除子通道
      [0629]指定的子通道被清除,當(dāng)前開始或停止功能(如有)在指定的子通道處被終止,且通道子系統(tǒng)被信號通知以在指定的子通道和在相關(guān)設(shè)備處異步地執(zhí)行清除功能。
      [0630]通用寄存器I包含子系統(tǒng)識(shí)別字(SID),其指定將被清除的子通道。
      [0631]如果開始或暫停功能正在進(jìn)行,其在子通道處終止。
      [0632]使得子通道不再狀態(tài)待決。所有的活動(dòng),如SCSW的活動(dòng)控制字段所指示的,在子通道處被清除,除非使得子通道變得清除待決。進(jìn)行中的任何功能,如在SCSW的功能控制字段中指示的,在子通道處被清除,除了由于該指令的執(zhí)行而將被執(zhí)行的清除功能。
      [0633]當(dāng)子通道在傳輸模式中運(yùn)行且條件代碼2被設(shè)置,CPU可信號通知通道子系統(tǒng)異步地執(zhí)7TT詢問功能,并結(jié)束指令。
      [0634]通道子系統(tǒng)被信號通知異步地執(zhí)行清除功能。清除功能在以下“相關(guān)功能”小節(jié)中被概述,并在此后被詳細(xì)描述。
      [0635]條件代碼O被設(shè)置以指示上述動(dòng)作已被采取。
      [0636]相關(guān)功能
      [0637]在CLEAR SUBCHANNEL執(zhí)行之后,通道子系統(tǒng)異步地執(zhí)行清除功能。如果條件允許,通道子系統(tǒng)選擇通道路徑,并試圖發(fā)出清除信號給設(shè)備以終止I/O操作(如有)。子通道隨后變?yōu)闋顟B(tài)待決。通道子系統(tǒng)遇到的排除發(fā)出清除信號到設(shè)備的條件不會(huì)阻止子通道變得狀態(tài)待決。
      [0638]當(dāng)由于執(zhí)行清除功能,子通道變?yōu)闋顟B(tài)待決時(shí),與相關(guān)設(shè)備的數(shù)據(jù)傳送(如有)已被終止。當(dāng)產(chǎn)生的狀態(tài)被TEST SUBCHANNEL清除時(shí)存儲(chǔ)的SCSW具有存儲(chǔ)為I的清除功能位。如果通道子系統(tǒng)可確定清除信號被發(fā)出給設(shè)備,清除待決位作為零被存儲(chǔ)在SCSW中。否則,清除待決位被存儲(chǔ)為1,且其他指示被提供,其描述所遇到的條件的進(jìn)一步細(xì)節(jié)。
      [0639]對于被CLEAR SUBCHANNEL終止的開始功能,沒有積聚測量數(shù)據(jù),且設(shè)備連接時(shí)間沒有被存儲(chǔ)在用于子通道的擴(kuò)展?fàn)顟B(tài)字中。
      [0640]特殊條件
      [0641]當(dāng)子通道對于CLEAR SUBCHANNEL不可操作時(shí),條件代碼3被設(shè)置,且不采取其他動(dòng)作。當(dāng)子通道沒有在通道子系統(tǒng)中被提供、沒有有效設(shè)備號被分配給它、或未被使能時(shí),子通道對于CLEAR SUBCHANNEL不可操作用。
      [0642]CLEAR SUBCHANNEL可遇到下述或下列程序異常。當(dāng)多子通道組設(shè)施未被安裝時(shí),通用寄存器I的位32-47必須包含OOOlhex ;否則,操作數(shù)異常被識(shí)別。[0643]當(dāng)多子通道組設(shè)施已被安裝時(shí),通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,且位47必須包含值I ;否則,操作數(shù)異常被識(shí)別。[0644]產(chǎn)生的條件代碼:[0645]O功能被啟動(dòng)[0646]1 —[0647]2 —[0648]3不可操作[0649]程序異常:[0650].操作數(shù)[0651]?特許操作[0652]清除功能[0653]隨著CLEAR SUBCHANNEL的執(zhí)行,通道子系統(tǒng)執(zhí)行清除功能。清除功能的執(zhí)行包括(1)執(zhí)行路徑管理操作,(2)修改子通道處的字段,(3)發(fā)出清除信號給相關(guān)設(shè)備,以及(4)使得子通道變?yōu)闋顟B(tài)待決,指示清除功能的完成。[0654]清除功能路徑管理[0655]路徑管理操作作為清除功能的一部分被執(zhí)行,以檢查用于相關(guān)子通道的通道路徑條件,并試圖選擇可用的通道路徑,在其上清除信號可被發(fā)出給相關(guān)設(shè)備。[0656]通道路徑條件按以下順序被檢查:[0657]1.如果通道子系統(tǒng)活動(dòng)地與將被信號通知的設(shè)備通信或嘗試建立與其的活動(dòng)通信,選擇使用中的通道路徑。[0658]2.如果通道子系統(tǒng)正在接受來自將被信號通知的設(shè)備的不再忙指示(其將不會(huì)引起中斷條件被識(shí)別)的過程中,且相關(guān)的子通道對于任何通道路徑?jīng)]有忠誠度(allegiance),選擇使用中的通道路徑。[0659]3.如果相關(guān)的子通道對于一通道路徑具有專用忠誠度,該通道路徑被選擇。[0660]4.如果相關(guān)的子通道對于一條或多條通道路徑具有工作忠誠度,選擇這些通道路徑中的一條。[0661 ] 5.如果相關(guān)子通道對于任何通道路徑?jīng)]有忠誠度,如果最后使用的通道路徑被指示,且如果該通道路徑可供選擇,該通道路徑被選擇。如果該通道路徑不可供選擇,則沒有通道路徑被選擇,或通道路徑從可供選擇的一組通道路徑(如有)中被選擇(盡管沒有指示最后使用的通道路徑)。[0662]6.如果相關(guān)子通道對于任何通道路徑?jīng)]有忠誠度,如果沒有指示最后使用的通道路徑,且如果存在可供選擇的一條或多條通道路徑,選擇這些通道路徑中的一條。[0663]如果以上列出的通道路徑條件都不試用,不選擇通道路徑。對于項(xiàng)目4,對于位于指定條件下的項(xiàng)目5,且對于項(xiàng)目6,通道子系統(tǒng)從一組通道路徑中選擇通道路徑。在這些情況下,如果以下條件不適用,通道子系統(tǒng)可嘗試選擇通道路徑:[0664]1.通道路徑終止條件對于通道路徑存在。[0665]2.對于并行或ESCON通道路徑:另一條子通道對于通道路徑具有有效忠誠度。[0666]對于FICON通道路徑:通道路徑當(dāng)前被使用以與最大數(shù)量的可具有并行活動(dòng)通信的子通道通信。
      [0667]3.將被信號通知的設(shè)備被附加到類型I控制單元,且用于被附加到相同的控制單元的另一個(gè)設(shè)備的子通道對于相同的通道路徑具有忠誠度,除非該忠誠度是工作忠誠度,且初級狀態(tài)已被該子通道接受。
      [0668]4.將被信號通知的設(shè)備被附加到類型3控制單元,且用于被附加到相同的控制單元的另一個(gè)設(shè)備的子通道對于相同的通道路徑具有專用忠誠度。
      [0669]清除功能子通道修改
      [0670]在清除功能執(zhí)行期間,子通道處的路徑管理控制指示被修改。有效地,該修改在嘗試選擇通道路徑后但是在嘗試選擇設(shè)備以發(fā)出清除信號前發(fā)生。被修改的路徑管理控制指示如下:
      [0671]1.子通道處的所有8個(gè)可能的通道路徑的狀態(tài)被設(shè)置為對于該子通道是可操作的。
      [0672]2.最后使用的路徑指示被重置以指示沒有最后使用的通道路徑。
      [0673]3.路徑不可操作條件(如有)被重置。
      [0674]清除功能信令和完成
      [0675]在嘗試選擇通道路徑和路徑管理控制字段的修改后,如果條件允許,通道子系統(tǒng)嘗試選擇設(shè)備以發(fā)出清除信號。與子通道和選擇的通道路徑(如有)關(guān)聯(lián)的條件影響(I)是否做出嘗試以發(fā)出清除信號,以及(2)嘗試發(fā)出清除信號是否成功。不考慮這些條件,子通道隨后被設(shè)置狀態(tài)待決,且清除功能的執(zhí)行完成。這些條件及其對于清除功能的效果被如下描述:
      [0676]不嘗試發(fā)出清除信號:如果存在任何以下條件,通道子系統(tǒng)不試圖發(fā)出清除信號給設(shè)備:
      [0677]1.未選擇通道路徑。
      [0678]2.選擇的通道路徑不再可供選擇。
      [0679]3.對于選定的通道路徑存在通道路徑終止條件。
      [0680]4.對于并行和ESCON通道路徑:選定的通道路徑當(dāng)前被使用以活動(dòng)地與不同設(shè)備通信。對于FICON通道路徑:選定的通道路徑當(dāng)前被使用以活動(dòng)地與最大數(shù)量的可具有并行活動(dòng)通信的設(shè)備通信。
      [0681]5.將被信號通知的設(shè)備被附加到類型I控制單元,且用于被附加到相同的控制單元的另一個(gè)設(shè)備的子通道對于相同的通道路徑具有忠誠度,除非該忠誠度是工作忠誠度且初級狀態(tài)已被該子通道接受。
      [0682]6.將被信號通知的設(shè)備被附加到類型3控制單元,且用于被附加到相同的控制單元的另一個(gè)設(shè)備的子通道對于相同的路徑具有專用忠誠度。
      [0683]如果存在上述任何條件,子通道保持清除待決且被設(shè)為狀態(tài)待決,且清除功能的執(zhí)行完成。
      [0684]嘗試發(fā)出清除信號沒有成功:當(dāng)通道子系統(tǒng)試圖發(fā)出清除信號給設(shè)備時(shí),由于以下條件,嘗試可能不成功:
      [0685]1.當(dāng)通道子系統(tǒng)試圖選擇設(shè)備以發(fā)出清除信號時(shí),控制單元或設(shè)備提示忙條件。
      [0686]2.當(dāng)通道子系統(tǒng)試圖選擇設(shè)備以發(fā)出清除信號時(shí),路徑不可操作條件被識(shí)別。[0687]3.當(dāng)通道子系統(tǒng)試圖發(fā)出清除信號時(shí),遇到錯(cuò)誤條件。
      [0688]如果任何上述條件存在,且通道子系統(tǒng)確定試圖發(fā)出清除信號不成功,或不能確定嘗試是否成功,子通道保持清除待決,且被設(shè)為狀態(tài)待決,且清除功能的執(zhí)行完成。
      [0689]嘗試發(fā)出清除信號是成功的:當(dāng)通道子系統(tǒng)確定嘗試發(fā)出清除信號是成功的,子通道不再是清除待決的,且被設(shè)為狀態(tài)待決,且清除功能的執(zhí)行完成。當(dāng)子通道變?yōu)闋顟B(tài)待決時(shí),針對相關(guān)設(shè)備的I/O操作(如有)已被終止。
      [0690]編程說明:在清除功能執(zhí)行后,被設(shè)備呈現(xiàn)給通道子系統(tǒng)的任何非零狀態(tài),除了僅控制單元端之外,作為未被請求的告警狀態(tài)被傳送給程序。包含僅控制單元端或零狀態(tài)的未被請求的狀態(tài)不會(huì)被呈現(xiàn)給程序。
      [0691]修改子通道
      [0692]包含在子通道信息塊(SCHIB)中的信息被放置在子通道處的程序可修改字段。結(jié)果,對于該子通道,程序影響相對于清除、暫停、恢復(fù)和開始功能和特定I/o支持功能的I/O處理的特定方面。
      [0693]通用寄存器I包含子系統(tǒng)識(shí)別字(SID),其指定將被修改的子通道,如被SCHIB的特定字段指定的。第二操作數(shù)地址是SCHIB的邏輯地址,且必須被指定在字邊界上;否則,識(shí)別規(guī)格異常。
      [0694]由于SCHIB信息在子通道中的放置而可被影響的通道子系統(tǒng)操作是:
      [0695].I/O 處理(E 字段)
      [0696].中斷處理(中斷參數(shù)和ISC字段)
      [0697].路徑管理(D、LPM和POM字段)
      [0698].監(jiān)視和地址界限檢驗(yàn)(測量-塊索弓丨、LM和麗字段)
      [0699].測量塊格式控制(F字段)
      [0700].擴(kuò)展測量字模式使能(X字段)
      [0701].并行感測設(shè)施(S字段)
      [0702].測量塊地址(MBA )
      [0703]字I的位0、6和7,以及SCHIB操作數(shù)的字6的位0_28必須是零,且字I的位9和10必須不同時(shí)為I。當(dāng)擴(kuò)展I/O測量塊設(shè)施被安裝,且格式I測量塊被指定時(shí),字11的位26-31必須被指定為零。當(dāng)擴(kuò)展I/O測量塊設(shè)施未被安裝時(shí),字6的位29必須被指定為零;否則,識(shí)別操作數(shù)異常。當(dāng)擴(kuò)展的I/O測量字設(shè)施未被安裝時(shí),或被安裝但未被使能時(shí),字6的位30必須被指定為零;否則,操作數(shù)異常被識(shí)別。SCHIB的剩余字段被忽略,且不影響MODIFY SUBCHANNEL 的處理。
      [0704]設(shè)置條件代碼O以指示來自SCHIB的信息已被放置在子通道處的程序可修改字段中,除非當(dāng)指定子通道處的設(shè)備號有效位(V)是零,則條件代碼O被設(shè)置,且來自SCHIB的信息不被放置在程序可修改字段中。
      [0705]特殊條件
      [0706]當(dāng)子通道是狀態(tài)待決時(shí),條件代碼I被設(shè)置,且不采取其他動(dòng)作。
      [0707]當(dāng)清除、暫?;蜷_始功能在子通道處進(jìn)行時(shí),條件代碼2被設(shè)置,且不采取其他動(dòng)作。
      [0708]當(dāng)子通道對于MODIFY SUBCHANNEL不可操作時(shí),條件代碼3被設(shè)置且不采取其他動(dòng)作。當(dāng)子通道在通道子系統(tǒng)中沒有被提供時(shí),子通道對于MODIFY SUBCHANNEL不可操作。
      [0709]MODIFY SUBCHANNEL可遇到如下所述或所列程序異常。
      [0710] 在SCHIB的字I中,位0、1、6和7必須是零,且當(dāng)?shù)刂方缦迿z驗(yàn)設(shè)施被安裝時(shí),位9和10必須不都為零。在SHICB的字6中,位0-28必須是零。否則,識(shí)別操作數(shù)異常。
      [0711]當(dāng)擴(kuò)展的I/O測量塊設(shè)施被安裝且格式I測量塊被指定時(shí),字11的位26-31必須被指定為零;否則,識(shí)別操作數(shù)異常。當(dāng)擴(kuò)展的I/o測量塊設(shè)施未被安裝時(shí),字6的位29必須被指定為零;否則,操作數(shù)異常被識(shí)別。當(dāng)擴(kuò)展的I/O測量字設(shè)施未被安裝時(shí),或被安裝但未被使能時(shí),字6的位30必須被指定為零;否則,操作數(shù)異常被識(shí)別。
      [0712]當(dāng)多子通道組設(shè)施未被安裝時(shí),通用寄存器I的位32-47必須包含OOOlhex;否貝U,操作數(shù)異常被識(shí)別。
      [0713]當(dāng)多通道組設(shè)施被安裝時(shí),通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,且位47必須包含值I ;否則,操作數(shù)異常被識(shí)別。
      [0714]第二操作數(shù)必須在字邊界上指定;否則,規(guī)格異常被識(shí)別。MODIFY SUBCHANNEL的執(zhí)行在所有尋址和保護(hù)異常上被抑制。
      [0715]產(chǎn)生的條件代碼:
      [0716]O功能完成
      [0717]I狀態(tài)待決
      [0718]2 忙
      [0719]3不可操作
      [0720]程序異常:
      [0721]?訪問(獲取,操作數(shù)2 )
      [0722].操作數(shù)
      [0723].特許操作
      [0724].規(guī)格
      [0725]編程說明:
      [0726]1.如果當(dāng)相關(guān)子通道被禁止時(shí)設(shè)備信號通知I/O錯(cuò)誤告警,通道子系統(tǒng)發(fā)出清除信號給設(shè)備并丟棄I/O錯(cuò)誤告警指示,而不生成I/O中斷條件。
      [0727]2.如果當(dāng)相關(guān)子通道被禁止時(shí)設(shè)備呈現(xiàn)未請求的狀態(tài),該狀態(tài)被通道子系統(tǒng)丟棄而不生成I/o中斷條件。但是,如果呈現(xiàn)的狀態(tài)包含單元檢驗(yàn),通道子系統(tǒng)發(fā)出用于相關(guān)子通道的清除信號,且不生成I/O中斷條件。當(dāng)程序使用MODIFY SUBCHANNEL來使能子通道時(shí),這應(yīng)被考慮。例如,當(dāng)子通道被禁止時(shí)存在的相關(guān)設(shè)備上的介質(zhì)可能已被替換,且因此程序應(yīng)當(dāng)驗(yàn)證該介質(zhì)的完整性。
      [0728]3.建議當(dāng)MODIFY SUBCHANNEL設(shè)置條件代碼O時(shí),程序通過隨后發(fā)出STORESUBCHANNEL來檢驗(yàn)子通道的內(nèi)容。使用STORE SUBCHANNEL是確定指定的子通道是否改變的方法。MODIFY SUBCHANNEL設(shè)置條件代碼O之后未能檢驗(yàn)子通道可導(dǎo)致程序不會(huì)預(yù)期發(fā)生的條件。
      [0729]START SUBCHANNEL
      [0730]通道子系統(tǒng)被信號通知異步執(zhí)行用于相關(guān)設(shè)備的開始功能,且包含在指定的ORB中的執(zhí)行參數(shù)被放置在指定的子通道。[0731]通用寄存器I包含子系統(tǒng)識(shí)別字,其指定將被開始的子通道。第二操作數(shù)地址是ORB的邏輯地址,且必須在字邊界上指定;否則,規(guī)格異常被識(shí)別。
      [0732]包含在ORB中的執(zhí)行參數(shù)被放置在子通道處。
      [0733]當(dāng)START SUBCHANNEL被執(zhí)行時(shí),子通道是狀態(tài)待決,僅具有次級狀態(tài),且擴(kuò)展?fàn)顟B(tài)字格式位(L)是零,狀態(tài)待決條件在子通道處被丟棄。
      [0734]使子通道變得開始待決,且開始功能在子通道處被指示。如果第二操作數(shù)指定命令模式0RB,子通道保持在命令模式中。如果第二操作數(shù)指定傳輸模式0RB,子通道進(jìn)入到傳輸模式。當(dāng)子通道進(jìn)入到傳輸模式時(shí),如果沒有之前的專用忠誠度存在,LPUM被設(shè)為零;否則LPUM不被改變。
      [0735]邏輯地,在設(shè)置條件代碼O之前,子通道處的路徑不可操作條件(如有)被清除。
      [0736]通道子系統(tǒng)被信號通知異步地執(zhí)行開始功能。開始功能在以下小節(jié)“相關(guān)功能”中被概念,且在以后被詳細(xì)描述。
      [0737]條件代碼O被設(shè)置以指示已采取上述動(dòng)作。
      [0738]相關(guān)功能
      [0739]在START SUBCHANNEL執(zhí)行后,通道子系統(tǒng)異步地執(zhí)行開始功能。
      [0740]檢驗(yàn)ORB內(nèi)容的有效性,除了必須包含全零的字段。在一些模型上,必須包含零的ORB的字段被異步檢驗(yàn),而不是在指令的執(zhí)行期間。當(dāng)無效字段被異步檢測時(shí),子通道變?yōu)闋顟B(tài)待決,具有初級、次級和告警狀態(tài),且延遲條件代碼I和程序檢驗(yàn)被指示。在這種情況下,I/o操作或I/O操作鏈不在設(shè)備處被啟動(dòng),且當(dāng)SCSW被TEST SUBCHANNEL的執(zhí)行清除時(shí),條件被存儲(chǔ)為I的開始待決位指不。
      [0741]在一些模型上,異步地而不是在指令的執(zhí)行期間測試路徑可用性。當(dāng)沒有通道路徑可供選擇時(shí),子通道變?yōu)闋顟B(tài)待決,具有初級和次級狀態(tài),且延遲條件代碼3被指示。I/O操作或I/O操作鏈不在設(shè)備處被啟動(dòng),且當(dāng)SCCW被TEST SUBCHANNEL的執(zhí)行清除時(shí),該條件被存儲(chǔ)在為I的開始待決位指不。
      [0742]如果條件允許,選擇通道路徑,且啟動(dòng)在ORB中指定的通道程序的執(zhí)行。
      [0743]特殊條件
      [0744]當(dāng)START SUBCHANNEL被執(zhí)行時(shí)且子通道是狀態(tài)待決時(shí),條件代碼I被設(shè)置,且不采取其他動(dòng)作。在一些模型上,當(dāng)子通道僅以次級狀態(tài)是狀態(tài)待決時(shí),條件代碼I不被設(shè)置;反而,狀態(tài)待決條件被丟棄。
      [0745]當(dāng)開始、暫?;蚯宄δ墚?dāng)前正在子通道處進(jìn)行時(shí),條件代碼2被設(shè)置,且不采取其他動(dòng)作。
      [0746]當(dāng)子通道對于START SUBCHANNEL不可操作時(shí),條件代碼3被設(shè)置,且不采取其他動(dòng)作。如果子通道在通道子系統(tǒng)中沒有被提供,沒有與其相關(guān)的有效設(shè)備號或未被使能,子通道對于START SUBCHANNEL不可操作。
      [0747]在一些模型上,當(dāng)沒有通道路徑可供選擇時(shí),子通道對于START SUBCHANNEL也不可操作。在這些模型中,缺少可用通道路徑作為START SUBCHANNEL執(zhí)行的一部分被檢測。在其他模型上,通道路徑可用性僅作為異步開始功能的一部分被測試。
      [0748]START SUBCHANNEL可遇到以下所述或所列的程序異常。
      [0749]在命令模式ORB的字I中,位26-30必須是零,且在命令模式ORB的字2中,位O必須是零。否則,在一些模型上,操作數(shù)異常被識(shí)別。在其他模型上,I/o中斷條件被生成,指示程序檢驗(yàn),作為異步開始功能的一部分。
      [0750]START SUBCHANNEL也可遇到以下列出的程序異常。當(dāng)多子通道組設(shè)施未被安裝時(shí),通用寄存器I的位32-47必須包含OOOlhex ;否則,操作數(shù)異常被識(shí)別。
      [0751]當(dāng)多子通道組設(shè)施被安裝時(shí),通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,且位47必須包含值I ;否則,操作數(shù)異常被識(shí)別。
      [0752]第二操作數(shù)必須在字邊界上指定;否則,規(guī)格異常被識(shí)別。START SUBCHANNEL的執(zhí)行在所有尋址和保護(hù)異常上被抑制。
      [0753]產(chǎn)生的條件代碼:
      [0754]O功能啟動(dòng)
      [0755]I狀態(tài)待決
      [0756]2 千亡
      [0757]3不可操作
      [0758]程序異常
      [0759].訪問(獲取, 操作數(shù)2 )
      [0760].操作數(shù)
      [0761]?特許操作
      [0762].規(guī)格
      [0763]開始功能和恢復(fù)功能
      [0764]開始和恢復(fù)功能如下所述啟動(dòng)I/O操作。開始功能適用于在命令模式或傳輸模式中操作的子通道?;謴?fù)功能僅適用于在命令模式中操作的子通道。
      [0765]在執(zhí)行START SUBCHANNE和RESUME SUBCHANNEL后,通道子系統(tǒng)分別執(zhí)行開始和恢復(fù)功能,以針對相關(guān)設(shè)備啟動(dòng)I/o操作。開始或恢復(fù)功能的執(zhí)行包括:(I)執(zhí)行路徑管理操作,(2)以相關(guān)設(shè)備執(zhí)行I/O操作或I/O操作鏈,以及(3)使得子通道變?yōu)闋顟B(tài)待決,指示開始功能的完成。開始功能啟動(dòng)在ORB中指定的通道程序的執(zhí)彳丁,ORB轉(zhuǎn)而被指定為STARTSUBCHANNEL的操作數(shù),這與在引起暫停的CCW開始啟動(dòng)執(zhí)行暫停的通道程序(如有)的恢復(fù)功能相反;否則,執(zhí)行恢復(fù)功能就好象它是開始功能。
      [0766]開始功能和恢復(fù)功能路徑管理
      [0767]在執(zhí)行開始或恢復(fù)功能時(shí)由通道子系統(tǒng)來執(zhí)行路徑管理,以選擇可被用于設(shè)備選擇的可用通道路徑,以使用該設(shè)備啟動(dòng)I/O操作。采取的動(dòng)作如下:
      [0768]1.如果子通道目前是開始待決且設(shè)備是活動(dòng)的,開始功能在子通道處保持待決,直到從相關(guān)的設(shè)備接受用于之前的開始功能的次級狀態(tài)并且使該子通道獨(dú)自開始待決。當(dāng)該狀態(tài)被接受并且沒有描述告警中斷條件,不使子通道變?yōu)闋顟B(tài)待決,并且隨后啟動(dòng)執(zhí)行待決開始功能。如果狀態(tài)描述了告警中斷條件,子通道變成具有次級和告警狀態(tài)的狀態(tài)待決,待決開始功能不會(huì)啟動(dòng),延遲條件代碼I被設(shè)置,并且開始待決位保持為I。如果子通道當(dāng)前獨(dú)自開始待決,如下所述啟動(dòng)執(zhí)行開始功能。
      [0769]2.如果在子通道上存在對通道路徑的專用忠誠度,通道子系統(tǒng)選擇該路徑以用于設(shè)備選擇。如果在嘗試選擇設(shè)備時(shí)遇到忙條件并且在子通道上存在專用忠誠度,則開始功能保持待決,直到針對該通道路徑重置忙的內(nèi)部指示。當(dāng)忙的內(nèi)部指示被重置,在該通道路徑上啟動(dòng)執(zhí)行待決的開始功能。
      [0770]3.如果沒有通道路徑可供選擇并且在子通道中不存在對通道路徑的專用忠誠度,則通道路徑不會(huì)被選擇。
      [0771]4.如果已經(jīng)嘗試了所有可供選擇的通道路徑,并且其中一個(gè)或多個(gè)被用于與其他設(shè)備的活動(dòng)地通信,或者,如果通道子系統(tǒng)在這些通道路徑的一個(gè)或多個(gè)上遇到控制單元忙或設(shè)備忙條件,或在這些通道路徑的一個(gè)或多個(gè)上遇到這些條件的組合,開始功能在子通道上保持待決,直到通道路徑、控制單元或設(shè)備在適當(dāng)?shù)那闆r下變得可用。
      [0772]5.如果(I)在通道路徑上啟動(dòng)開始功能,設(shè)備連接到類型I控制單元,并且(2)沒有其他設(shè)備連接到相同的控制單元,該控制單元的子通道具有對相同通道路徑的專用忠誠度或者對相同通道路徑的工作忠誠度,其中,還未接收對于該子通道的初級狀態(tài),則選擇該通道路徑,如果它可供選擇的話;否則,該通道路徑不被選擇。但是,如果到該設(shè)備的另一通道路徑可供選擇并且不存在如上所述的忠誠度,則通道路徑被選擇。如果沒有其他通道路徑可供選擇,如果合適,開始和恢復(fù)功能保持待決,直到通道路徑變得可用。
      [0773]6.如果設(shè)備連接到類型3控制單元,并且如果至少一個(gè)其他設(shè)備連接到相同的控制單元,該控制單元的子通道具有對相同通道路徑的專用忠誠度,則可以選擇可供選擇的另一通道路徑,或者開始功能保持待決,直到用于該其他設(shè)備的專用忠誠度被清除。
      [0774]7.如果選擇了通道路徑,并且在設(shè)備選擇以啟動(dòng)執(zhí)行待決的CCW通道程序的第一命令或者傳輸待決的TCW通道程序的TCCB期間接收到忙指示,則接收到忙指示的通道路徑不會(huì)被再次用于該設(shè)備或控制單元(取決于接收到的設(shè)備忙或控制單元忙指示),直到忙的內(nèi)部指示被重置。
      [0775]8.如果在嘗試選擇設(shè)備以啟動(dòng)執(zhí)行為開始指定或者CCW通道程序的恢復(fù)功能所隱含的第一命令或者啟動(dòng)針對TCW通道程序的開始功能的TCCB的傳輸?shù)钠陂g(如上動(dòng)作7中所述),通道子系統(tǒng)接收到忙指示,它執(zhí)行下列動(dòng)作中的一個(gè):
      [0776]a.如果設(shè)備被指定為在多路徑模式下操作并且接收到的忙指示是設(shè)備忙,則開始或恢復(fù)功能保持待決,直到忙的內(nèi)部指示被重置。
      [0777]b.如果設(shè)備被指定為在多路徑模式下操作并且接收到忙指示是控制單元忙,或者如果設(shè)備被指定為在單路徑模式下操作,則通道子系統(tǒng)通過選擇可供選擇的替代通道路徑來嘗試設(shè)備選擇,并繼續(xù)路徑管理操作直到發(fā)起開始或恢復(fù)功能或者已經(jīng)在可供選擇的所有通道路徑上嘗試設(shè)備選擇。如果在所有可供選擇的通道路徑都已被選擇之后,通道子系統(tǒng)還未啟動(dòng)開始或恢復(fù)功能,則開始或恢復(fù)功能保持待決,直到忙的內(nèi)部指示被重置。
      [0778]c.如果子通道具有專用忠誠度,則應(yīng)用15-20頁上的動(dòng)作2。
      [0779]9.當(dāng)在嘗試選擇以傳送CCW通道程序的第一個(gè)命令或者傳送TCW通道程序的TCCB的期間,設(shè)備看起來不可操作且相應(yīng)的通道路徑對于子通道可以操作時(shí),路徑不可操作條件被識(shí)別,并且通道路徑的狀態(tài)在子通道處從對于子通道可操作改變?yōu)閷τ谧油ǖ啦豢刹僮?。子通道上的路徑不可操作條件(如有)被保留,直到子通道接下來變?yōu)榍宄龥Q、開始待決或恢復(fù)待決(如果子通道被暫停),此時(shí)路徑不可操作條件被清除。但是,如果相應(yīng)的通道路徑對于子通道不可操作,路徑不可操作條件不被識(shí)別。當(dāng)在嘗試選擇以在可供選擇的通道路徑上傳送第一個(gè)命令或TCCB期間設(shè)備看起來不可操作時(shí),出現(xiàn)下列動(dòng)作中的一個(gè):[0780]a.如果對該通道路徑存在專用忠誠度,則它是可供選擇的唯一通道路徑;因此,放棄啟動(dòng)開始或恢復(fù)功能的進(jìn)一步嘗試,且中斷條件被識(shí)別。
      [0781]b.如果不存在專用忠誠度并且存在還未被嘗試的可供選擇的替代通道路徑,則選擇其中一個(gè)通道路徑以嘗試設(shè)備選擇并傳送CCW通道程序的第一個(gè)命令或TCW通道程序的TCCB。
      [0782]c.如果不存在專用忠誠度、沒有還未被嘗試的可供選擇的替代通道路徑、并且設(shè)備看起來在已經(jīng)嘗試的至少一個(gè)通道路徑上看來可操作,則開始和恢復(fù)功能在子通道上保持待決,直到通道路徑、控制單元、或設(shè)備在適當(dāng)?shù)那闆r下變得可用。
      [0783]d.如果不存在專用忠誠度、沒有還未被嘗試的可供選擇的替代通道路徑、并且設(shè)備看起來在已經(jīng)嘗試的所有通道路徑上看起來不可用,則放棄啟動(dòng)開始或恢復(fù)功能的進(jìn)一步嘗試,且中斷條件被識(shí)別。
      [0784]10.當(dāng)子通道是活動(dòng)的并且將針對設(shè)備啟動(dòng)I/O操作,如果在子通道上未指定多路徑模式,則根據(jù)LPUM指示來進(jìn)行所有設(shè)備選擇。例如,如果為CCW通道程序指定了命令鏈接,則通道子系統(tǒng)在相同通道路徑上傳送描述了的I/O操作鏈的第一個(gè)和所有后續(xù)命令。
      [0785]I/O操作的執(zhí)行
      [0786]在選擇通道路徑后,如果條件允許,通道子系統(tǒng)啟動(dòng)執(zhí)行針對相關(guān)設(shè)備的I/O操作。額外的I/o操作的執(zhí)行可以在第一次I/O操作的啟動(dòng)和執(zhí)行之后。
      [0787]對于在命令模式下操作的子通道,通道子系統(tǒng)可以執(zhí)行七種類型的命令:寫入、讀取、往回讀、控制、感知、感知ID以及通道中的傳送。除了通道中的傳送,每個(gè)命令啟動(dòng)相應(yīng)的I/O操作。除了通道程序執(zhí)行在子通道上暫停的期間,從接受第一命令直到在子通道上識(shí)別初級中斷條件,子通道都是活動(dòng)的。如果在接受第一命令之前識(shí)別初級中斷條件,子通道不會(huì)變成活動(dòng)的。通常,初級中斷條件是由通道結(jié)束信號或者在命令鏈接的情形下是由用于鏈中最后的CCW的通道結(jié)束信號引起的。設(shè)備是活動(dòng)的,直到在子通道中識(shí)別次級中斷條件。通常,次級中斷條件是由設(shè)備結(jié)束信號或者在命令鏈接的情形下是由用于鏈中最后的CCW的設(shè)備結(jié)束信號引起的。對于在傳輸模式下操作的子通道,通道子系統(tǒng)可以傳輸六種類型的命令來執(zhí)行:寫入、讀取、控制、感知、感知ID以及詢問。每種命令啟動(dòng)相應(yīng)的設(shè)備操作。當(dāng)一個(gè)或多個(gè)命令在TCCB中被發(fā)送到I/O設(shè)備,子通道保持開始待決,直到出現(xiàn)初級狀態(tài)。
      [0788]編程說明
      [0789]在單路徑模式下,用于I/O操作或者I/O操作鏈的命令、數(shù)據(jù)和狀態(tài)的所有傳送發(fā)生在第一個(gè)命令在其上被傳送到設(shè)備的通道路徑上。
      [0790]當(dāng)設(shè)備安裝了動(dòng)態(tài)重連特征,可以在多路徑模式下執(zhí)行I/O操作或I/O操作鏈。為了在多路徑模式下操作,之前必須已經(jīng)針對SCHIB的字I的位13被指定為I的子通道來執(zhí)行MODIFY SUBCHANNEL ο此外,必須通過執(zhí)行對于該類型的設(shè)備來說合適的特定的依賴于模式的命令,針對多路徑模式來設(shè)置該設(shè)備。用于處理多路徑模式操作的一般過程如下:
      [0791]1.設(shè)置
      [0792]a.必須由設(shè)備在每個(gè)通道路徑上成功地執(zhí)行設(shè)置多路徑模式類型的命令,該通道路徑是被設(shè)置的多路徑組的成員;否則,操作的多路徑模式會(huì)在子通道上給出不可預(yù)測的結(jié)果。如果因?yàn)槿魏卧?,在多路徑組中不包含到設(shè)備的一個(gè)或多個(gè)物理可用的通道路徑,當(dāng)子通道在多路徑模式下操作時(shí),這些通道路徑必然不可供選擇。可以通過在執(zhí)行MODIFYSUBCHANNEL之前在SCHIB中或者在執(zhí)行START SUBCHANNEL之前在ORB中將相應(yīng)的LPM位設(shè)置為零,使通道路徑不可供選擇。
      [0793]b.當(dāng)設(shè)置多路徑模式類型的命令被傳送到設(shè)備,必須只有單個(gè)通道路徑邏輯可用,以避免替代的通道路徑選擇來執(zhí)行該開始功能;否則,通道子系統(tǒng)可以在多于一個(gè)通道路徑上檢測到設(shè)備忙條件,這會(huì)導(dǎo)致后續(xù)多路徑模式操作的不可預(yù)測的結(jié)果。每當(dāng)多路徑組的成員關(guān)系被改變,該類型的設(shè)置過程應(yīng)被使用。
      [0794]2.離開多路徑模式
      [0795]為了離開多路徑模式并且繼續(xù)在單路徑模式下處理,可以使用下列兩個(gè)過程中的任一個(gè):
      [0796]a.可以針對多路徑組的任何通道路徑來執(zhí)行解散多路徑模式類型的命令。該命令之后必須:(I)執(zhí)行MODIFY SUBCHANNEL,且SCHIB的字I的位13被指定為零,或者(2)僅將單通道路徑指定為在LPM中邏輯可用。當(dāng)設(shè)備在單路徑模式下運(yùn)行時(shí),一定不能在具有可供選擇的多條通道路徑的多路徑模式中操作的子通道上執(zhí)行開始功能;否則,在子通道上會(huì)出現(xiàn)該功能或后續(xù)的開始功能的不可預(yù)測的結(jié)果。
      [0797]b.在多路徑組的每個(gè)通道路徑上執(zhí)行放棄多路徑模式類型的命令(與設(shè)置相反)。該命令之后必須:(I)執(zhí)行MODIFY SUBCHANNEL,且SCHIB的字I的位13被指定為零,或者
      (2)僅將單個(gè)通道路徑指定為在LPM中邏輯可用。當(dāng)設(shè)備在單路徑模式下運(yùn)行時(shí),一定不能在具有可供選擇的多條通道路徑的多路徑模式中操作的子通道上執(zhí)行開始功能;否則,在子通道上會(huì)出現(xiàn)該功能或后續(xù)的開始功能的不可預(yù)測的結(jié)果。
      [0798]數(shù)據(jù)分塊
      [0799]I/O設(shè)備記錄的數(shù)據(jù)被劃分為塊。塊的長度取決于設(shè)備;例如,塊可以是卡、打印行或在磁帶的兩個(gè)相鄰空隙之間記錄的信息。
      [0800]在一個(gè)I/O操作中能被傳送的最大數(shù)量的信息是一個(gè)塊。當(dāng)相關(guān)的主存儲(chǔ)區(qū)域被耗盡或者達(dá)到塊的結(jié)束時(shí),不管哪個(gè)先出現(xiàn),I/o操作被終止。對于某些操作,例如在磁帶單元或在詢問站上寫入,塊未被定義,并且傳送的信息量僅受程序控制。
      [0801]操作請求塊
      [0802]操作-請求塊(ORB)是START SUBCHANNEL的操作數(shù)。ORB指定了在控制該特定開始功能時(shí)使用的參數(shù)。這些參數(shù)包括中斷參數(shù)、子通道鍵、第一個(gè)CCW或TCW的地址、操作控制位、優(yōu)先級控制號以及到指定設(shè)備的通道路徑的邏輯可用性的指定。
      [0803]在執(zhí)行START SUBCHANNEL時(shí),在設(shè)置條件代碼O之前,ORB的內(nèi)容被放在指定的子通道中。如果執(zhí)行將帶來非零的條件代碼,ORB的內(nèi)容不會(huì)被放在指定的子通道中。
      [0804]ORB地址的兩個(gè)最右側(cè)的位必須為零,從而將ORB放在字邊界上;否則,規(guī)格異常被識(shí)別。當(dāng)光纖通道擴(kuò)展(FCX)設(shè)施被安裝,ORB的通道程序類型控制(B)(字1,位13)指定了 ORB所指定的通道程序的類型。當(dāng)B是零,ORB指定了 CCW通道程序。當(dāng)B是1,ORB指定了 TCW通道程序。只有支持FCX的I/O設(shè)備才能識(shí)別TCW通道程序。
      [0805]在執(zhí)行START SUBCHANNEL時(shí),如果指定CCW通道程序的ORB的內(nèi)容被放在指定的子通道中,子通道保持在命令模式下。于是,這樣的ORB也被稱為命令模式0RB。在執(zhí)行START CHANNEL時(shí),如果指定TCW通道程序的ORB的內(nèi)容被放在子通道中,則子通道進(jìn)入傳輸模式。于是,這樣的ORB也被稱為傳輸模式0RB。
      [0806]TEST PENDING INTERRUPTION
      [0807]用于子通道上的待決I/O中斷的I/O中斷代碼被存儲(chǔ)在第二操作數(shù)地址指定的位置,且待決的I/o中斷請求被清除。
      [0808]當(dāng)?shù)诙僮鲾?shù)地址不是零時(shí),它是存儲(chǔ)由字O和I構(gòu)成的雙字I/O中斷代碼的位置的邏輯地址。第二操作數(shù)地址必須在字邊界上指定;否則,規(guī)格異常被識(shí)別。
      [0809]如果第二操作數(shù)地址是零,由字0-2構(gòu)成的三字I/O中斷代碼被存儲(chǔ)在真實(shí)位置184-195。在該情形下,不會(huì)應(yīng)用低地址保護(hù)和鍵控制保護(hù)。
      [0810]在訪問寄存器模式下當(dāng)?shù)诙僮鲾?shù)地址是零時(shí),無法預(yù)測訪問寄存器B2是否發(fā)生訪問寄存器轉(zhuǎn)換。如果發(fā)生轉(zhuǎn)換,產(chǎn)生的地址空間控制元素未被使用;即,中斷代碼仍被存儲(chǔ)在真實(shí)位置184-195。
      [0811]僅針對執(zhí)行指令的CPU的控制寄存器6中的I/O中斷子類掩碼所允許的那些I/O中斷子類來接受待決的I/o中斷請求。如果不存在控制寄存器6所允許的I/O中斷請求,I/O中斷代碼不會(huì)被存儲(chǔ),第二操作數(shù)位置不會(huì)被修改,且條件代碼O被設(shè)置。
      [0812]如果待決的I/O中斷請求被接受,I/O中斷代碼被存儲(chǔ),待決的I/O中斷請求被清除,且條件代碼I被設(shè)置。存儲(chǔ)的I/o中斷代碼與出現(xiàn)I/O中斷時(shí)將會(huì)存儲(chǔ)的相同。但是,PSW不像在出現(xiàn)I/O中斷時(shí)那樣被交換。指令的執(zhí)行定義如下:
      [0813]子系統(tǒng)識(shí)別字(SID)
      [0814]SID的位32-63被放在字O中。
      [0815]中斷參數(shù):字I包括程序指定的四字參數(shù),且被傳遞到ORB或PMCW的字O中。當(dāng)設(shè)備呈現(xiàn)告警狀態(tài),且中斷參數(shù)之前沒有通過執(zhí)行START SUBCHANNEL或MODIFY SUBCHANNEL而被傳遞到子通道,該字段包含零。
      [0816]中斷識(shí)別字:當(dāng)字2被存儲(chǔ)時(shí),它包含中斷識(shí)別字,其還識(shí)別I/O中斷的源。僅在第二操作數(shù)地址為零時(shí)才存儲(chǔ)字2。
      [0817]中斷識(shí)別字被定義如下:
      [0818]A位(A):中斷識(shí)別字的位O指定了被清除的待決I/O中斷請求的類型。當(dāng)位O是零,I/o中斷請求與子通道關(guān)聯(lián)。
      [0819]I/O中斷子類(ISC):中斷識(shí)別字的位位置2-4包含無符號二進(jìn)制整數(shù),范圍為0-7,其指定了與子通道關(guān)聯(lián)的I/O中斷子類,針對該子通道待決中斷請求被清除。剩余的位位置被保留并存儲(chǔ)為零。
      [0820]特殊條件
      [0821]TEST PENDING INTERRUPTION會(huì)遇到如下描述或列出的程序異常。
      [0822]第二操作數(shù)必須在字邊界上指定;否則,規(guī)格異常被識(shí)別。
      [0823]TEST PENDING INTERRUPTION的執(zhí)行在所有尋址和保護(hù)異常上被抑制。
      [0824]產(chǎn)生的條件代碼:
      [0825]O中斷代碼未被存儲(chǔ)
      [0826]I中斷代碼被存儲(chǔ)
      [0827]2—
      [0828]3—[0829]程序異常:
      [0830].訪問(存儲(chǔ),操作數(shù)2,第二操作地址僅為非零)
      [0831]?特許操作
      [0832].規(guī)格
      [0833]編程說明
      [0834]1.當(dāng)I/O中斷被屏蔽,TEST PENDING INTERRUPTION應(yīng)該僅以為零的第二操作數(shù)地址來執(zhí)行。否則,如果出現(xiàn)I/o中斷,指令存儲(chǔ)的I/O中斷代碼會(huì)丟失。識(shí)別TEST PENDINGINTTERUPT10N之后出現(xiàn)的I/O中斷的源的I/O中斷代碼也被存儲(chǔ)在真實(shí)位置184-195,代替由指令存儲(chǔ)的I/O中斷代碼。
      [0835]2.在訪問寄存器模式下當(dāng)?shù)诙僮鲾?shù)地址為零時(shí),如果出現(xiàn)訪問寄存器轉(zhuǎn)換并且訪問寄存器有錯(cuò)誤,則訪問異常被識(shí)別??梢酝ㄟ^使B2字段變成零或在訪問寄存器中放置OOOOOOOOhex、0000000 Ihex或任何其他有效的內(nèi)容來避免該異常。
      [0836]STORE SUBCHANNEL
      [0837]指定的子通道的控制和狀態(tài)信息被存儲(chǔ)在指定的SCHIB中。
      [0838]通用寄存器I包含子系統(tǒng)識(shí)別字,其指定了要為其存儲(chǔ)信息的子通道。第二操作數(shù)地址是SCHIB的邏輯地址且必須在字邊界上指定;否則,規(guī)格異常被識(shí)別。
      [0839]當(dāng)擴(kuò)展1/0測量塊設(shè)施未被安裝時(shí),在SCHIB中存儲(chǔ)的信息由路徑管理控制字、SCSC以及依賴于模型的信 息的三個(gè)字構(gòu)成。當(dāng)擴(kuò)展1/0測量塊設(shè)施已被安裝,在SCHIB中存儲(chǔ)的信息由路徑管理控制字、SCSW、測量塊地址字段以及依賴于模型的信息的一個(gè)字構(gòu)成。
      [0840]STORE SUBCHANNEL的執(zhí)行不會(huì)改變子通道處的任何信息。
      [0841]設(shè)置條件代碼O以指示指定的子通道的控制和狀態(tài)信息已被存儲(chǔ)在SCHIB中。當(dāng)STORE SUBCHANNEL的執(zhí)行導(dǎo)致條件代碼O的設(shè)置,SCHIB中的信息指示子通道的一致狀態(tài)。
      [0842]特殊條件
      [0843]當(dāng)指定的子通道對于STORE SUBCHANNEL不可操作時(shí),設(shè)置條件代碼3,且不采取其他動(dòng)作。如果在通道子系統(tǒng)中未提供子通道,則子通道對于STORE SUBCHANNEL不可操作。
      [0844]STORE SUBCHANNEL會(huì)遇到以下描述或列出的程序異常。
      [0845]當(dāng)多子通道組設(shè)施未被安裝,通用寄存器I的位32-47必須包含OOOlhex ;否則,操作數(shù)異常被識(shí)別。
      [0846]當(dāng)多子通道組設(shè)施已被安裝,通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,且位47必須包含值I ;否則,操作數(shù)異常被識(shí)別。
      [0847]第二操作數(shù)必須在字邊界上指定;否則,規(guī)格異常被識(shí)別。
      [0848]產(chǎn)生的條件代碼:
      [0849]OSCHIB 被存儲(chǔ)
      [0850]I—
      [0851]2—
      [0852]3不可操作
      [0853]程序異常
      [0854].訪問(存儲(chǔ),操作數(shù)2 )[0855].操作數(shù)
      [0856].特許操作
      [0857].規(guī)格
      [0858]編程說明
      [0859]1.在SCSW中存儲(chǔ)的設(shè)備狀態(tài)可以包括設(shè)備忙、控制單元忙或控制單元結(jié)束指示。
      [0860]2.從子通道獲取在SCHIB中存儲(chǔ)的信息。STORE SUBCHANNEL指令不會(huì)使通道子系統(tǒng)詢問被尋址的設(shè)備。
      [0861]3.STORE SUBCHANNEL可以任何時(shí)間執(zhí)行,以對子通道中存在的條件進(jìn)行抽樣,而不會(huì)使任何待決狀態(tài)條件被清除。
      [0862]4.應(yīng)避免重復(fù)執(zhí)行STORE SUBCHANNEL而沒有中間的延遲(例如,以確定子通道何時(shí)改變狀態(tài)),因?yàn)镃PU對子通道的重復(fù)訪問會(huì)延遲或阻止通道子系統(tǒng)訪問子通道來更新該子通道。
      [0863]TEST SUBCHANNEL
      [0864]子通道的控制和狀態(tài)信息被存儲(chǔ)在指定的IRB中。通用寄存器I包含子系統(tǒng)識(shí)別字,其指定了要為其存儲(chǔ)信息的子通道。第二操作數(shù)地址是IRB的邏輯地址,且必須在字邊界上指定;否則,規(guī)格異常被識(shí)別。
      [0865]在IRB中存儲(chǔ)的信息由SCSW字、擴(kuò)展?fàn)顟B(tài)字和擴(kuò)展控制字構(gòu)成。
      [0866]如果子通道是狀態(tài)待決的,狀態(tài)控制字段的狀態(tài)待決位被存儲(chǔ)為I。子通道是否是狀態(tài)待決的對執(zhí)行TEST SUBCHANNEL時(shí)執(zhí)行的功能具有影響。
      [0867]當(dāng)子通道是狀態(tài)待決的并且TEST SUBCHANNEL被執(zhí)行,如上所述,信息被存儲(chǔ)在IRB中,接著清除在子通道中存在的特定條件和指示。如果子通道是在傳輸模式中,這些條件的清除特別是開始功能將子通道置于命令模式。如果I/o中斷請求對于子通道是待決的,該請求被清除。設(shè)置條件代碼O以指示已采取這些動(dòng)作。
      [0868]當(dāng)子通道不是狀態(tài)待決的并且TEST SUBCHANNEL被執(zhí)行,信息被存儲(chǔ)在IRB中,并且沒有條件或指示被清除。設(shè)置條件代碼I以指示已采用這些動(dòng)作。
      [0869]特殊條件
      [0870]當(dāng)子通道對于TEST SUBCHANNEL不可操作時(shí),設(shè)置條件代碼3,且不采取其他動(dòng)作。如果子通道未被提供、不具有與之相關(guān)的有效設(shè)備編號或未被啟用,則子通道對于TESTSUBCHANNEL不可操作。
      [0871]TEST SUBCHANNEL可以遇到如下描述或列出的程序異常。
      [0872]當(dāng)多子通道組設(shè)施未被安裝,通用寄存器I的位32-47必須包含OOOlhex ;否則,操作數(shù)異常被識(shí)別。
      [0873]當(dāng)多子通道組設(shè)施已被安裝,通用寄存器I的位32-44必須包含零,位45_46必須包含有效值,并且位47必須包含值I ;否則,操作數(shù)異常被識(shí)別。
      [0874]第二操作數(shù)必須在字邊界上指定;否則,規(guī)格異常被識(shí)別。
      [0875]在在尋址和保護(hù)異常上結(jié)束TEST SUBCHANNEL的執(zhí)行時(shí),子通道的狀態(tài)未被改變。產(chǎn)生條件代碼:
      [0876]OIRB被存儲(chǔ);子通道狀態(tài)待決
      [0877]IIRB被存儲(chǔ);子通道不是狀態(tài)待決[0878]2一
      [0879]3不可操作
      [0880]程序異常:
      [0881 ].訪問(存儲(chǔ)、操作數(shù)2 )
      [0882].操作數(shù)
      [0883].特許操作
      [0884].規(guī)格
      [0885]編程說明
      [0886]1.SCSff中存儲(chǔ)的設(shè)備狀態(tài)可以包括設(shè)備忙、控制單元忙或控制單元結(jié)束的指示。
      [0887]2.從子通道獲取IRB中存儲(chǔ)的信息。TEST SUBCHANNEL指令不會(huì)使通道子系統(tǒng)詢問被尋址的設(shè)備。
      [0888]3.當(dāng)出現(xiàn)I/O中斷,這是在子通道處的狀態(tài)待決條件的結(jié)果,且典型地執(zhí)行TESTSUBCHANNEL來清除該狀態(tài)。TEST SUBCHANNEL也可以在任何其他時(shí)間執(zhí)行以對子通道中存在的條件進(jìn)行抽樣。
      [0889]4.應(yīng)避免重復(fù)執(zhí)行TEST SUBCHANNEL來確定何時(shí)已完成開始功能,因?yàn)榇嬖谀承l件,在這些條件下可以指示或不指示開始功能的完成。例如,如果由于另一子通道已經(jīng)是狀態(tài)待決的從而通道子系統(tǒng)保持接口控制檢查(IFCC)條件無效(abeyance)(針對任何子通道),并且如果由TEST SUBCHANNEL測試的開始功能僅具有帶有IFCC條件的通道路徑作為僅有的可供選擇的路徑,則可以不啟動(dòng)開始功能,直到另一子通道中的狀態(tài)待決條件被清除,從而允許IFCC條件在其應(yīng)用的子通道處被指示。
      [0890]5.應(yīng)避免重復(fù)執(zhí)行TEST SUBCHANNEL而沒有中間的延遲例如來確定子通道何時(shí)改變狀態(tài),因?yàn)镃PU對子通道的重復(fù)訪問會(huì)延遲或阻止通道子系統(tǒng)對子通道的訪問。在幾乎同一時(shí)間由多個(gè)CPU對同一子通道執(zhí)行TEST SUBCHANNEL可以具有相同的效果,并且也應(yīng)被避免。
      [0891]6.可以通過執(zhí)行TEST SUBCHANNEL來修改CPU進(jìn)行的I/O中斷處理的優(yōu)先級。當(dāng)TEST SUBCHANNEL被執(zhí)行,且指定的子通道具有I/O中斷請求待決,該I/O中斷請求被清除,且SCSW被存儲(chǔ),而與之前建立的任何優(yōu)先級無關(guān)。剩余的I/O中斷請求的相對優(yōu)先級不改變。
      [0892]所屬【技術(shù)領(lǐng)域】的技術(shù)人員知道,本發(fā)明可以實(shí)現(xiàn)為系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。因此,本公開可以具體實(shí)現(xiàn)為以下形式,即:可以是完全的硬件、也可以是完全的軟件(包括固件、駐留軟件、微代碼等),還可以是硬件和軟件結(jié)合的形式,本文一般稱為“電路”、“模塊”或“系統(tǒng)”。此外,在一些實(shí)施例中,本發(fā)明還可以實(shí)現(xiàn)為在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)程序產(chǎn)品的形式,該計(jì)算機(jī)可讀介質(zhì)中包含計(jì)算機(jī)可讀的程序代碼。
      [0893]可以采用一個(gè)或多個(gè)計(jì)算機(jī)可讀的介質(zhì)的任意組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號介質(zhì)或者計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是一但不限于——電、磁、光、電磁、紅外線、或半導(dǎo)體的系統(tǒng)、裝置或器件,或者任意以上的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的例子(非窮舉的列表)包括:具有一個(gè)或多個(gè)導(dǎo)線的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦式可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式緊湊磁盤只讀存儲(chǔ)器(CD-ROM)、光存儲(chǔ)器件、磁存儲(chǔ)器件、或者上述的任意合適的組合。在本文件中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何包含或存儲(chǔ)程序的有形介質(zhì),該程序可以被指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用。
      [0894]現(xiàn)在參考圖10,在一個(gè)例子中,計(jì)算機(jī)程序產(chǎn)品1000包括,例如,一個(gè)或多個(gè)非易失性計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)1002,在其上存儲(chǔ)有計(jì)算機(jī)可讀的程序代碼裝置或邏輯1004,以提供并方便本發(fā)明的一個(gè)或多個(gè)方面。
      [0895]體現(xiàn)在計(jì)算機(jī)可讀介質(zhì)上的程序代碼可以用任何適當(dāng)?shù)慕橘|(zhì)傳輸,所述介質(zhì)包括但不限于:無線、有線、光纜、RF等,或上述的任意合適的組合。
      [0896]可以以一種或多種程序設(shè)計(jì)語言或其組合來編寫用于執(zhí)行本發(fā)明操作的計(jì)算機(jī)程序代碼,所述程序設(shè)計(jì)語言包括面向?qū)ο蟮某绦蛟O(shè)計(jì)語言一諸如Java、Smalltalk、C++,還包括常規(guī)的過程式程序設(shè)計(jì)語言一諸如”C”語言或類似的程序設(shè)計(jì)語言。程序代碼可以完全地在用戶計(jì)算機(jī)上執(zhí)行、部分地在用戶計(jì)算機(jī)上執(zhí)行、作為一個(gè)獨(dú)立的軟件包執(zhí)行、部分在用戶計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行、或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在涉及遠(yuǎn)程計(jì)算機(jī)的情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任意種類的網(wǎng)絡(luò)一包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)—連接到用戶計(jì)算機(jī),或者,可以連接到外部計(jì)算機(jī)(例如利用因特網(wǎng)服務(wù)提供商來通過因特網(wǎng)連接)。
      [0897]本文中將參照本發(fā)明實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖描述本發(fā)明。應(yīng)當(dāng)理解,流程圖和/或框圖的每個(gè)方框以及流程圖和/或框圖中各方框的組合,都可以由計(jì)算機(jī)程序指令實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置的處理器,從而生產(chǎn)出一種機(jī)器,這些計(jì)算機(jī)程序指令通過計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置執(zhí)行,產(chǎn)生了實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的裝置。
      [0898]也可以把這些計(jì)算機(jī)程序指令存儲(chǔ)在能使得計(jì)算機(jī)或其它可編程數(shù)據(jù)處理裝置以特定方式工作的計(jì)算機(jī)可讀介質(zhì)中,這樣,存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令就產(chǎn)生出一個(gè)包括實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的指令裝置(instructionmeans)的制造品(manufacture)。
      [0899]也可以把計(jì)算機(jī)程序指令加載到計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上,使得在計(jì)算機(jī)、其它可編程數(shù)據(jù)處理裝置或其它設(shè)備上執(zhí)行一系列操作步驟,以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的過程,從而使得在計(jì)算機(jī)或其它可編程裝置上執(zhí)行的指令能夠提供實(shí)現(xiàn)流程圖和/或框圖中的方框中規(guī)定的功能/操作的過程。
      [0900]附圖中的流程圖和框圖顯示了根據(jù)本發(fā)明的多個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品的可能實(shí)現(xiàn)的體系架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)方框可以代表一個(gè)模塊、程序段或代碼的一部分,所述模塊、程序段或代碼的一部分包含一個(gè)或多個(gè)用于實(shí)現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應(yīng)當(dāng)注意,在有些作為替換的實(shí)現(xiàn)中,方框中所標(biāo)注的功能也可以以不同于附圖中所標(biāo)注的順序發(fā)生。例如,兩個(gè)連續(xù)的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時(shí)也可以按相反的順序執(zhí)行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個(gè)方框、以及框圖和/或流程圖中的方框的組合,可以用執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實(shí)現(xiàn),或者可以用專用硬件與計(jì)算機(jī)指令的組合來實(shí)現(xiàn)。
      [0901]除了上述,本發(fā)明的一個(gè)或多個(gè)方面可由服務(wù)提供商提供、許諾(offer)、部署、管理、服務(wù)等,該服務(wù)提供商提供用戶環(huán)境的管理。例如,服務(wù)提供商可創(chuàng)建、維持、支持等計(jì)算機(jī)代碼和/或計(jì)算機(jī)基礎(chǔ)設(shè)施,其為一個(gè)或多個(gè)用戶執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。反過來,服務(wù)提供商可例如根據(jù)預(yù)訂和/或費(fèi)用協(xié)議從用戶接受付費(fèi)。額外地或可替換地,月艮務(wù)提供商可從向一個(gè)或多個(gè)第三方銷售廣告內(nèi)容接受付費(fèi)。
      [0902]在本發(fā)明的一個(gè)方面,可部署用于執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面的應(yīng)用。作為一個(gè)例子,部署應(yīng)用包括提供計(jì)算機(jī)基礎(chǔ)設(shè)施,其可操作以執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。
      [0903]作為本發(fā)明的又一個(gè)方面,可部署計(jì)算基礎(chǔ)設(shè)施,其包括將計(jì)算機(jī)可讀代碼集成到計(jì)算機(jī)系統(tǒng),其中與計(jì)算系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。
      [0904]作為本發(fā)明的再一個(gè)方面,可提供用于集成計(jì)算基礎(chǔ)設(shè)施包括將計(jì)算機(jī)可讀碼集成到計(jì)算機(jī)系統(tǒng)的過程。計(jì)算機(jī)系統(tǒng)包括計(jì)算機(jī)可讀介質(zhì),其中計(jì)算機(jī)介質(zhì)包括本發(fā)明的一個(gè)或多個(gè)方面。與計(jì)算機(jī)系統(tǒng)結(jié)合的代碼能夠執(zhí)行本發(fā)明的一個(gè)或多個(gè)方面。
      [0905]盡管以上描述了各種實(shí)施例,這些僅是示例。例如,其他架構(gòu)的計(jì)算環(huán)境可包含和使用本發(fā)明的一個(gè)或多個(gè)方面。作為示例,zl96服務(wù)器之外的服務(wù)器可包括、使用和/或受益于本發(fā)明的一個(gè)或多個(gè)方面。此外,其他指令和/或命令可被使用;且指令和/或命令可包括與這里描述的相比附加的、更少和和/或不同的信息。許多變化是可能的。
      [0906]而且,其他類型的計(jì)算環(huán)境可受益于本發(fā)明的一個(gè)或多個(gè)方面。作為例子,可使用適于存儲(chǔ)和/或執(zhí)行程序代碼的數(shù)據(jù)處理系統(tǒng),其包括至少兩個(gè)通過系統(tǒng)總線直接或間接耦合到存儲(chǔ)元件的處理器。存儲(chǔ)器元件包括,例如,在程序代碼的實(shí)際執(zhí)行期間使用的本地存儲(chǔ)器、大容量存儲(chǔ)器以及高速緩沖存儲(chǔ)器,其提供至少一些程序代碼的臨時(shí)存儲(chǔ),以便減少在執(zhí)行期間必須從大容量存儲(chǔ)器取回代碼的次數(shù)。
      [0907]輸入/輸出或I/O設(shè)備(包括但不限于鍵盤、顯示器、指點(diǎn)設(shè)備、DASD、磁帶、⑶、DVD、拇指驅(qū)動(dòng)器(thumb drive)以及其他的存儲(chǔ)介質(zhì)等)可直接或通過介于其間的I/O控制器被耦合到系統(tǒng)。網(wǎng)絡(luò)適配器也可被耦合到系統(tǒng)以使得數(shù)據(jù)處理系統(tǒng)能夠通過介于其間的私有或公共網(wǎng)絡(luò)而耦合到其他的數(shù)據(jù)處理系統(tǒng)或遠(yuǎn)程打印機(jī)或存儲(chǔ)設(shè)備。調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器和以太網(wǎng)卡僅是一些可獲得的網(wǎng)絡(luò)適配器類型。
      [0908]參考圖11,其描述了實(shí)施本發(fā)明的一個(gè)或多個(gè)方面的主機(jī)計(jì)算機(jī)系統(tǒng)5000的代表性組件。代表性主機(jī)計(jì)算機(jī)5000包括與計(jì)算機(jī)存儲(chǔ)器(即,中央存儲(chǔ)器)5002通信的一個(gè)或多個(gè)CPU5001,以及到存儲(chǔ)介質(zhì)設(shè)備5011和網(wǎng)絡(luò)5010的I/O接口,以用于與其他計(jì)算機(jī)或SAN等通信。CPU5001符合具有架構(gòu)指令集和架構(gòu)功能的架構(gòu)。CPU5001可具有動(dòng)態(tài)地址轉(zhuǎn)換(DAT)5003,其用于將程序地址(虛擬地址)轉(zhuǎn)變?yōu)榇鎯?chǔ)器的真實(shí)地址。DAT典型地包括用于高速緩存轉(zhuǎn)換的轉(zhuǎn)換后備緩沖器(TLB)5007,這樣稍后對計(jì)算機(jī)存儲(chǔ)器5002塊的訪問不需要地址轉(zhuǎn)換的延遲。典型地,高速緩存5009被使用在計(jì)算機(jī)存儲(chǔ)器5002和處理器5001之間。高速緩存5009可以是分層的,具有可被多于一個(gè)的CPU獲得的大高速緩存,以及大高速緩存和每個(gè)CPU之間的較小、較快(較低級)的高速緩存。在一些實(shí)施方式中,較低級的高速緩存被拆分以為指令獲取和數(shù)據(jù)訪問提供單獨(dú)的低級高速緩存。在一個(gè)實(shí)施例中,由指令獲取單元5004經(jīng)由高速緩存5009從存儲(chǔ)器5002獲取指令。指令在指令解碼單元5006中被解碼,且(在一些實(shí)施例中與其他指令一起)被發(fā)送到一個(gè)或多個(gè)指令執(zhí)行單元5008。典型地,使用若干執(zhí)行單元5008,例如算術(shù)執(zhí)行單元、浮點(diǎn)執(zhí)行單元和分支指令執(zhí)行單元。指令被執(zhí)行單元執(zhí)行,如需要,從指令指定的寄存器或存儲(chǔ)器訪問操作數(shù)。如果將從存儲(chǔ)器5002訪問(加載或存儲(chǔ))操作數(shù),加載/存儲(chǔ)單元5005典型地在被執(zhí)行的指令的控制下處理該訪問。指令可在硬件電路或內(nèi)部微代碼(固件)中或其組合中被執(zhí)行。
      [0909]需注意的是,計(jì)算機(jī)系統(tǒng)包括本地(或主)存儲(chǔ)器中的信息,以及尋址、保護(hù)以及引用和改變記錄。尋址的一些方面包括地址格式、地址空間的概念、地址的各種類型和其中一種類型的地址被轉(zhuǎn)換為另一種類型的地址的方式。一些主存儲(chǔ)器包括永久分配的存儲(chǔ)位置。主存儲(chǔ)器向系統(tǒng)提供直接可被尋址的快速訪問的數(shù)據(jù)存儲(chǔ)。數(shù)據(jù)和程序在可被處理之前都將(從輸入設(shè)備)被加載到主存儲(chǔ)器。
      [0910]主存儲(chǔ)器可包括一個(gè)或多個(gè)更小、更快速訪問的緩沖存儲(chǔ)器,有時(shí)候被稱為高速緩存。高速緩存典型地與CPU或I/O處理器物理地關(guān)聯(lián)。物理結(jié)構(gòu)以及不同存儲(chǔ)介質(zhì)的使用的效果,除了在性能上,通常不會(huì)被程序觀察到。
      [0911]可維護(hù)用于指令和數(shù)據(jù)操作數(shù)的單獨(dú)的高速緩存。高速緩存中的信息可被維護(hù)為相鄰的字節(jié),所述字節(jié)位于被稱為高速緩存塊或高速緩存線(或簡稱為線)的整數(shù)界限上。模型可提供EXTRACT CACHE ATTRIBUTE(提取高速緩存屬性)指令,其返回高速緩存線的字節(jié)大小。模型也可提供PREFETCH DATA (預(yù)取數(shù)據(jù))和PREFETCH DATA RELATIVE LONG (預(yù)取較長數(shù)據(jù))指令,其實(shí)現(xiàn)存儲(chǔ)到數(shù)據(jù)或指令高速緩存中的預(yù)取,或數(shù)據(jù)從高速緩存的釋放。
      [0912]存儲(chǔ)器被視為位的長水平串。對于大部分操作來說,以從左到右的順序進(jìn)行對存儲(chǔ)器的訪問。位串被細(xì)分為八個(gè)位的單位。八位單位被稱為字節(jié),其是所有信息格式的基本構(gòu)件。存儲(chǔ)器中的每個(gè)字節(jié)位置由唯一的非負(fù)整數(shù)標(biāo)識(shí),該非負(fù)整數(shù)是該字節(jié)位置的地址,或簡稱為字節(jié)地址。相鄰的字節(jié)位置具有連續(xù)的地址,在左邊從O開始且以從左到右的順序進(jìn)行。地址是無符號二進(jìn)制整數(shù),且是24、31或64位。
      [0913]信息一次一個(gè)字節(jié)或一組字節(jié)地在存儲(chǔ)器和CPU或通道子系統(tǒng)之間傳遞。除非另有指定,例如在z/Architecture O R中,存儲(chǔ)器中的一組字節(jié)由該組的最左邊的字節(jié)尋址。組中的字節(jié)的數(shù)量可由將被 執(zhí)行的操作暗示或顯式地指定。當(dāng)在CPU操作中使用時(shí),一組字節(jié)被稱為字段。在字節(jié)的每個(gè)組內(nèi),例如在z/Architecture〇R中,位以從左到右的順序被編號。在z/Architecture O R中,最左邊的位有時(shí)候被稱為“高階”位且最右邊的位被稱為“低階”位。但是,位數(shù)不是存儲(chǔ)器地址。僅字節(jié)可被尋址。為了操作存儲(chǔ)器中的字節(jié)的單個(gè)位,訪問整個(gè)字節(jié)。字節(jié)上的位從左到右被編號為O到7(例如在z/Architecture O R中)。對于24位地址,地址中的位被編號為8-31或40-63,對于31位地址,編號為1_31或33-63,對于64位地址,編號為0-63。在多個(gè)字節(jié)的任何其他的固定長度的格式中,構(gòu)成格式的位從O開始被連續(xù)編號。為了錯(cuò)誤檢測,且優(yōu)選地為了校正,一個(gè)或多個(gè)校驗(yàn)位可與每一個(gè)字節(jié)或一組字節(jié)一起被傳遞。這樣的校驗(yàn)位由機(jī)器自動(dòng)生成且不能被程序直接控制。存儲(chǔ)容量以字節(jié)的數(shù)量來表示。當(dāng)存儲(chǔ)器操作數(shù)字段的長度由指令的操作碼暗示時(shí),字段被稱為具有固定長度,其可以是一個(gè)、兩個(gè)、四個(gè)、八個(gè)或十六個(gè)字節(jié)。可為某些指令暗示更大的字段。當(dāng)存儲(chǔ)器操作數(shù)字段的長度沒有被暗示,而是被顯式地表示時(shí),該字段被稱為具有可變長度??勺冮L度的操作數(shù)可以一個(gè)字節(jié)的增量(或者對于一些指令,以兩個(gè)字節(jié)倍數(shù)或其他倍數(shù))在長度上可變。當(dāng)信息被放在存儲(chǔ)器中時(shí),僅替換被包括在指定的字段中的那些字節(jié)位置的內(nèi)容,即使到存儲(chǔ)器的物理路徑的寬度可能大于正被存儲(chǔ)的字段的長度。
      [0914]某些信息單元位于存儲(chǔ)器中的整數(shù)界限上。對于信息單元,當(dāng)其存儲(chǔ)器地址是以字節(jié)表示的單元長度的倍數(shù)時(shí),界限被稱為是整數(shù)的。特殊的名稱被給予整數(shù)界限上的2、4、8和16字節(jié)的字段。半字是兩字節(jié)邊界上的一組兩個(gè)連續(xù)的字節(jié),且是指令的基本構(gòu)件。字是四字節(jié)邊界上的一組四個(gè)連續(xù)的字節(jié)。雙字是八字節(jié)邊界上一組八個(gè)連續(xù)的字節(jié)。四倍長字(quadword)是16字節(jié)邊界上的一組16個(gè)連續(xù)的字節(jié)。當(dāng)存儲(chǔ)器地址指定半字、字、雙字和四倍長字時(shí),地址的二進(jìn)制表示分別包括一個(gè)、兩個(gè)、三個(gè)或四個(gè)最右邊的零位。指令將位于二字節(jié)整數(shù)邊界上。大多數(shù)指令的存儲(chǔ)器操作數(shù)不具有界限對準(zhǔn)要求。
      [0915]在為指令和數(shù)據(jù)操作數(shù)實(shí)現(xiàn)單獨(dú)的高速緩存的設(shè)備上,如果程序在高速緩存線中存儲(chǔ)且指令被隨后從該高速緩存線獲取,可經(jīng)歷顯著的延遲,不管該存儲(chǔ)是否改變隨后被獲取的指令。
      [0916]在一個(gè)實(shí)施例中,本發(fā)明可被軟件(有時(shí)候被稱為許可的內(nèi)部代碼、固件、微代碼、毫代碼、微微代碼(pico-code)等,其任何一個(gè)都將符合本發(fā)明)實(shí)施。參考圖11,體現(xiàn)本發(fā)明的軟件程序代碼可典型地由主系統(tǒng)5000的處理器5001從長期存儲(chǔ)介質(zhì)設(shè)備5011(諸如CD-ROM驅(qū)動(dòng)器、磁帶驅(qū)動(dòng)或硬盤驅(qū)動(dòng)器)訪問。軟件程序代碼可體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟磁盤、硬盤驅(qū)動(dòng)或CD-ROM)中的任何一個(gè)上。代碼可在這樣的介質(zhì)上被分發(fā),或可從一個(gè)計(jì)算機(jī)系統(tǒng)的計(jì)算機(jī)存儲(chǔ)器5002或存儲(chǔ)設(shè)備通過網(wǎng)絡(luò)5010被分發(fā)給其他計(jì)算機(jī)系統(tǒng)的用戶,以由這樣的其他系統(tǒng)的用戶使用。
      [0917]軟件程序代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序的功能和交互。程序代碼通??蓮拇鎯?chǔ)介質(zhì)設(shè)備5011調(diào)頁到相對更高速的計(jì)算機(jī)存儲(chǔ)器5002,在此它對于處理器5001是可用的。用于在存儲(chǔ)器中、物理介質(zhì)上體現(xiàn)軟件程序代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是熟知的,且不會(huì)在此被進(jìn)一步討論。當(dāng)程序代碼被創(chuàng)建并存儲(chǔ)在有形介質(zhì)(包括但不限于電子存儲(chǔ)模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上時(shí),其經(jīng)常被稱為“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)典型地可由優(yōu)選地位于計(jì)算機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。
      [0918]圖12示出了可在其中實(shí)施本發(fā)明的代表性工作站或服務(wù)器硬件系統(tǒng)。圖12的系統(tǒng)5020包括代表性基本計(jì)算機(jī)系統(tǒng)(base computer system)5021,諸如個(gè)人計(jì)算機(jī)、工作站或服務(wù)器,包括可選的外圍設(shè)備。根據(jù)已知技術(shù),基本計(jì)算機(jī)系統(tǒng)5021包括一個(gè)或多個(gè)處理器5026以及被用于連接并使能處理器5026和系統(tǒng)5021的其他組件之間的通信的總線??偩€將處理器5026連接到存儲(chǔ)器5025以及可包括例如硬盤驅(qū)動(dòng)器(例如,包括磁介質(zhì)、⑶、DVD和閃存中的任何一個(gè))或磁帶驅(qū)動(dòng)器的長期存儲(chǔ)器5027。系統(tǒng)5021也可包括用戶接口適配器,其經(jīng)由總線將微處理器5026連接到一個(gè)或多個(gè)接口設(shè)備,諸如鍵盤5024、鼠標(biāo)5023、打印機(jī)/掃描儀5030和/或其他接口設(shè)備,其可以是任何用戶接口設(shè)備,諸如觸摸敏感屏、數(shù)字化輸入墊(digitized entry pad)等??偩€也可經(jīng)由顯示適配器將諸如IXD屏幕或監(jiān)視器的顯示設(shè)備5022連接到微處理器5026。
      [0919]系統(tǒng)5021可通過能與網(wǎng)絡(luò)5029通信5028的網(wǎng)絡(luò)適配器與其他計(jì)算機(jī)或計(jì)算機(jī)網(wǎng)絡(luò)通信。示例性網(wǎng)絡(luò)適配器是通信通道、令牌環(huán)網(wǎng)、以太網(wǎng)或調(diào)制解調(diào)器。或者,系統(tǒng)5021可使用諸如⑶ro (蜂窩數(shù)字分組數(shù)據(jù))卡的無線接口來通信。系統(tǒng)5021可與局域網(wǎng)(LAN)或廣域網(wǎng)(WAN)中的這樣的其他計(jì)算機(jī)關(guān)聯(lián),或系統(tǒng)5021可以是與另一個(gè)計(jì)算機(jī)的客戶機(jī)/服務(wù)器安排中的客戶機(jī)等。所有這些配置以及合適的通信硬件和軟件在本領(lǐng)域中是已知的。
      [0920]圖13示出了其中可實(shí)施本發(fā)明的數(shù)據(jù)處理網(wǎng)絡(luò)5040。數(shù)據(jù)處理網(wǎng)絡(luò)5040可包括多個(gè)單獨(dú)的網(wǎng)絡(luò),諸如無線網(wǎng)和有線網(wǎng),其每個(gè)可包括多個(gè)單獨(dú)的工作站5041、5042、5043、5044。此外,本領(lǐng)域技術(shù)人員將理解,可包括一個(gè)或多個(gè)LAN,其中LAN可包括多個(gè)耦合到主處理機(jī)的智能工作站。
      [0921]仍然參考圖13,網(wǎng)絡(luò)也可包括大型計(jì)算機(jī)或服務(wù)器,諸如網(wǎng)關(guān)計(jì)算機(jī)(客戶機(jī)服務(wù)器5046)或應(yīng)用服務(wù)器(遠(yuǎn)程服務(wù)器5048,其可訪問數(shù)據(jù)儲(chǔ)存庫,且也可直接從工作站5045被訪問)。網(wǎng)關(guān)計(jì)算機(jī)5046用作到每個(gè)單獨(dú)網(wǎng)絡(luò)的進(jìn)入點(diǎn)。當(dāng)將一個(gè)聯(lián)網(wǎng)協(xié)議連接到另一個(gè)時(shí),需要網(wǎng)關(guān)。網(wǎng)關(guān)5046可通過通信鏈路優(yōu)選地耦合到另一個(gè)網(wǎng)絡(luò)(例如因特網(wǎng)5047)。也可使用通信鏈路將網(wǎng)關(guān)5046直接耦合到一個(gè)或多個(gè)工作站5041、5042、5043、5044??梢岳每蓮膰H商業(yè)機(jī)器公司獲得的IBM eServerTMSystem z〇R服務(wù)器來實(shí)現(xiàn)網(wǎng)關(guān)計(jì)算機(jī)。
      [0922]同時(shí)參考圖12和13,可體現(xiàn)本發(fā)明的軟件編程代碼可被系統(tǒng)5020的處理器5026從諸如CD-ROM驅(qū)動(dòng)器或硬盤驅(qū)動(dòng)器的長期存儲(chǔ)介質(zhì)5027訪問。軟件編程代碼可被體現(xiàn)在與數(shù)據(jù)處理系統(tǒng)一起使用的各種已知介質(zhì)(諸如軟盤、硬盤驅(qū)動(dòng)器或CD-ROM)中的任一個(gè)上。代碼可在這樣的介質(zhì)上被分發(fā),或從一個(gè)計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器或存儲(chǔ)設(shè)備通過網(wǎng)絡(luò)被分發(fā)到其他計(jì)算機(jī)系統(tǒng)的用戶5050、5051,以供這樣的其他系統(tǒng)的用戶使用。
      [0923]或者,編程代碼可體現(xiàn)在存儲(chǔ)器5025中,且由處理器5026使用處理器總線訪問。這樣的編程代碼包括操作系統(tǒng),其控制各種計(jì)算機(jī)組件和一個(gè)或多個(gè)應(yīng)用程序5032的功能和交互。程序代碼通常從存儲(chǔ)介質(zhì)5027調(diào)頁到高速存儲(chǔ)器5025,在此它可用于由處理器5026進(jìn)行處理。用于在存儲(chǔ)器中、在物理介質(zhì)上體現(xiàn)軟件編程代碼和/或經(jīng)由網(wǎng)絡(luò)分發(fā)軟件代碼的技術(shù)和方法是公知的,不會(huì)在此進(jìn)一步討論。程序代碼,當(dāng)其被創(chuàng)建且在有形介質(zhì)(包括但不限于電子存儲(chǔ)模塊(RAM)、閃存、光盤(⑶)、DVD、磁帶等)上存儲(chǔ)時(shí),通常被稱為“計(jì)算機(jī)程序產(chǎn)品”。計(jì)算機(jī)程序產(chǎn)品介質(zhì)典型地可以被優(yōu)選地位于計(jì)算機(jī)系統(tǒng)中的處理電路讀取以由處理電路執(zhí)行。
      [0924]最容易被處理器使用的高速緩存(通常比處理器的其他高速緩存更快更小)是最低級(LI或級別I)高速緩存,且 主存儲(chǔ)(主存儲(chǔ)器)是最高級高速緩存(如果有三個(gè)級別的話是L3)。最低級高速緩存經(jīng)常被分為保持將被執(zhí)行的機(jī)器指令的指令緩存(1-高速緩存),和保持?jǐn)?shù)據(jù)操作數(shù)的數(shù)據(jù)高速緩存(D-高速緩存)。
      [0925]參考圖14,為處理器5026示出了示例性處理器實(shí)施例。典型地,使用一個(gè)或多個(gè)級別的高速緩存5053來緩沖存儲(chǔ)器塊,以便改善處理器性能。高速緩存5053是高速緩沖器,其保持很可能被使用的存儲(chǔ)器數(shù)據(jù)的高速緩存線。典型的高速緩存線是64、128或256字節(jié)的存儲(chǔ)器數(shù)據(jù)。通常使用單獨(dú)的高速緩存以用于緩存指令而不是緩存數(shù)據(jù)。高速緩存一致性(存儲(chǔ)器和高速緩存中的線的副本的同步)通常由本領(lǐng)域中熟知的各種“窺探”算法提供。處理器系統(tǒng)的主存儲(chǔ)器5025通常被稱為高速緩存。在具有4個(gè)級別的高速緩存5053的處理器系統(tǒng)中,主存儲(chǔ)器5025有時(shí)候被稱為級別5 (L5)高速緩存,因?yàn)樗湫偷馗?,且僅保持可被計(jì)算機(jī)系統(tǒng)使用的非易失性存儲(chǔ)器(DASD、磁帶等)的一部分。主存儲(chǔ)器5025可“高速緩存”由操作系統(tǒng)向主存儲(chǔ)器5025調(diào)頁入或從其調(diào)頁出的數(shù)據(jù)頁。
      [0926]程序計(jì)數(shù)器(指令計(jì)數(shù)器)5061保持跟蹤將被執(zhí)行的當(dāng)前指令的地址。z/Architecture〇R處理器中的程序計(jì)數(shù)器是64位的,且可被截短為31或24位以支持先前的尋址界限。程序計(jì)數(shù)器典型地體現(xiàn)在計(jì)算機(jī)的PSW (程序狀態(tài)字)中,這樣它可在上下文轉(zhuǎn)換中持續(xù)。因此,具有程序計(jì)數(shù)器值的進(jìn)行中的程序可被例如操作系統(tǒng)中斷(從程序環(huán)境到操作系統(tǒng)環(huán)境的上下文轉(zhuǎn)換)。當(dāng)程序不活動(dòng)時(shí),程序的PSW維持程序計(jì)數(shù)器值,且在操作系統(tǒng)執(zhí)行時(shí),操作系統(tǒng)的(PSW中的)程序計(jì)數(shù)器被使用。典型地,程序計(jì)數(shù)器以等于當(dāng)前指令的字節(jié)數(shù)的量增量。RISC (精簡指令集計(jì)算)指令典型地是固定長度,而CISC (復(fù)雜指令集計(jì)算)指令典型地是可變長度。IBMz/Architecture O R的指令是具有長度為2、4或6字節(jié)的CISC指令。程序計(jì)數(shù)器5061被例如上下文轉(zhuǎn)換操作或分支指令的分支采取操作修改。在上下文轉(zhuǎn)換操作中,當(dāng)前的程序計(jì)數(shù)器值與關(guān)于正被執(zhí)行的程序的其他狀態(tài)信息(諸如條件碼)一起被保存在程序狀態(tài)字中,且新程序計(jì)數(shù)器值被載入并指向?qū)⒈粓?zhí)行的新程序模塊的指令。執(zhí)行分支采取操作,以通過將分支指令的結(jié)果加載到程序計(jì)數(shù)器5061中而允許程序進(jìn)行決定或在程序內(nèi)循環(huán)。
      [0927]典型地,使用指令獲取單元5055代表處理器5026獲取指令。獲取單元可獲取“下一序列指令”、分支采取指令的目標(biāo)指令或上下文轉(zhuǎn)換后的程序的第一指令?,F(xiàn)在的指令獲取單元通常使用預(yù)取技術(shù)基于被預(yù)取的指令將被使用的可能性來推測性地預(yù)取指令。例如,獲取單元可獲取16字節(jié)的指令,其包括下一順序指令以及進(jìn)一步的順序指令的額外字節(jié)。
      [0928]獲取的指令隨后被處理器5026執(zhí)行。在一實(shí)施例中,獲取的指令被傳遞給獲取單元的分派單元5056。分派單元解碼指令并將關(guān)于解碼的指令的信息轉(zhuǎn)送給合適的單元5057、5058、5060。執(zhí)行單元5057將典型地從指令獲取單元5055接收關(guān)于解碼的算術(shù)指令的信息,并將根據(jù)指令的操作碼對操作數(shù)執(zhí)行算術(shù)操作。優(yōu)選地從存儲(chǔ)器5025、架構(gòu)寄存器5059或從正被執(zhí)行的指令的立即字段(immediate field)向執(zhí)行單元5057提供操作數(shù)。執(zhí)行的結(jié)果,當(dāng)被存儲(chǔ)時(shí),被存儲(chǔ)在存儲(chǔ)器5025、寄存器5059或其他機(jī)器硬件(諸如控制寄存器、PSW寄存器等)中。
      [0929]處理器5026典型地具有一個(gè)或多個(gè)用于執(zhí)行指令的功能的單元5057、5058、5060。參考圖15A,執(zhí)行單元5057可通過接口邏輯5071與架構(gòu)通用寄存器5059、解碼/分派單元5056、加載存儲(chǔ)單元5060和其他5065處理器單元通信。執(zhí)行單元5057可使用幾個(gè)寄存器電路5067、5068、5069來保持算術(shù)邏輯單元(ALU) 5066將操作的信息。ALU執(zhí)行諸如加減乘除的算術(shù)操作,以及諸如和、或以及異或(X0R)、旋轉(zhuǎn)和移位的邏輯運(yùn)算。優(yōu)選地,ALU支持依賴于設(shè)計(jì)的專門操作。其他電路可提供其他架構(gòu)工具5072,例如包括條件碼和恢復(fù)支持邏輯。典型地,ALU操作的結(jié)果被保持在輸出寄存電路5070中,該輸出寄存器電路可將結(jié)果轉(zhuǎn)送到多種其他處理功能。有許多處理器單元安排,本說明書僅旨在提供對一個(gè)實(shí)施例的代表性理解。
      [0930]例如,ADD指令將在具有算術(shù)和邏輯功能的執(zhí)行單元5057中被執(zhí)行,而例如浮點(diǎn)指令將在具有專用浮點(diǎn)能力的浮點(diǎn)執(zhí)行中被執(zhí)行。優(yōu)選地,執(zhí)行單元通過在操作數(shù)上執(zhí)行操作碼定義的功能在由指令標(biāo)識(shí)的操作數(shù)上操作。例如,ADD指令可被執(zhí)行單元5057在由指令的寄存器字段標(biāo)識(shí)的兩個(gè)寄存器5059中發(fā)現(xiàn)的操作數(shù)上執(zhí)行。
      [0931]執(zhí)行單元5057對兩個(gè)操作數(shù)執(zhí)行算術(shù)加法,并在第三操作數(shù)中存儲(chǔ)結(jié)果,其中第三操作數(shù)可以是第三寄存器或兩個(gè)源寄存器中的一個(gè)。執(zhí)行單元優(yōu)選地利用算術(shù)邏輯單元(ALU)5066,其能執(zhí)行多種邏輯功能,諸如移位、旋轉(zhuǎn)、和、或、異或,以及多種代數(shù)函數(shù),包括加減乘除中的任何一個(gè)。有些ALU5066被設(shè)計(jì)為用于標(biāo)量運(yùn)算,有些用于浮點(diǎn)。根據(jù)架構(gòu),數(shù)據(jù)可以是大端(big endien)(其中最低有效字節(jié)位于最高字節(jié)地址)或小端(littleendien)(其中最低有效字節(jié)位于最低字節(jié)地址)。IBMz/Architecture〇R是大端。根據(jù)架構(gòu),帶符號字段可以是符號和幅度、I的補(bǔ)碼或2的補(bǔ)碼。2的補(bǔ)碼數(shù)是有利的,其在于ALU不需要設(shè)計(jì)減法能力,因?yàn)椴还苁?的補(bǔ)碼中的負(fù)值還是正值,都僅要求ALU中的加法。數(shù)字通常以速記描述,其中12位的字段定義了 4096字節(jié)塊的地址,且通常被描述為例如4Kbyte (千字節(jié))塊。
      [0932]參考圖15B,用于執(zhí)行分支指令的分支指令信息典型地被發(fā)送到分支單元5058,該分支單元經(jīng)常使用諸如分支歷史表5082的分支預(yù)測算法,在其他條件運(yùn)算完成前預(yù)測分支結(jié)果。在條件運(yùn)算完成前,當(dāng)前分支指令的目標(biāo)將被獲取并推測性地執(zhí)行。當(dāng)條件運(yùn)算完成時(shí),基于條件運(yùn)算的條件和推測的結(jié)果,推測性執(zhí)行的分支指令或被完成或被丟棄。典型的分支指令可測試條件碼,以及如果條件碼滿足分支指令的分支要求,分支到目標(biāo)地址,分支地址可基于若干數(shù)被計(jì)算,所述數(shù)包括例如在寄存器字段或是指令的立即字段中找到的數(shù)。分支單元5058可利用具有多個(gè)輸入寄存器電路5075、5076、5077和一個(gè)輸出寄存器電路5080的ALU5074。分支單元5058可與例如通用寄存器5059、解碼分派單元5056或其他電路5073通信。
      [0933]一組指令的執(zhí)行可由于多個(gè)原因中斷,所述原因包括例如由操作系統(tǒng)發(fā)起的上下文轉(zhuǎn)換、引起上下文轉(zhuǎn)換的程序異?;蝈e(cuò)誤、引起上下文轉(zhuǎn)換的I/O中斷信號或多個(gè)程序(在多線程環(huán)境中)的多線程活動(dòng)。優(yōu)選地,上下文轉(zhuǎn)換動(dòng)作保存關(guān)于當(dāng)前執(zhí)行的程序的狀態(tài)信息,且隨后加載關(guān)于正被調(diào)用的另一個(gè)程序的狀態(tài)信息。狀態(tài)信息可被存儲(chǔ)在例如硬件寄存器或存儲(chǔ)器中。狀態(tài)信息優(yōu)選地包括指向?qū)⒈粓?zhí)行的下一個(gè)指令的程序計(jì)數(shù)器值、條件碼、存儲(chǔ)器轉(zhuǎn)換信息和架構(gòu)寄存器內(nèi)容。上下文轉(zhuǎn)換活動(dòng)可被硬件電路、應(yīng)用程序、操作系統(tǒng)程序或固件代碼(微代碼、微微代碼或許可內(nèi)部碼(LIC))單獨(dú)地或其組合實(shí)現(xiàn)。
      [0934]處理器根據(jù)指令定義的方法而訪問操作數(shù)。指令可使用指令的一部分的值提供立即操作數(shù),可提供一個(gè)或多個(gè)寄存器字段,其顯式地指向通用寄存器或?qū)S眉拇嫫?例如浮點(diǎn)寄存器)。指令可利用由操作碼 字段確定的暗示的寄存器作為操作數(shù)。指令可利用用于操作數(shù)的存儲(chǔ)器位置??捎杉拇嫫?、立即字段或寄存器和立即字段的組合提供操作數(shù)的存儲(chǔ)器位置,如由z/Architecture O R長位移工具(facility)所例示的,其中該指令定義了基寄存器、索引寄存器和立即字段(位移字段),它們加到一起,以提供例如存儲(chǔ)器中的操作數(shù)的地址。除非另外指明,此處的位置典型地意味著主存儲(chǔ)器(主存儲(chǔ)設(shè)備)中的位置。
      [0935]參考圖16C,處理器使用加載/存儲(chǔ)單元5060訪問存儲(chǔ)器。加載/存儲(chǔ)單元5060可以通過獲取存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址并將操作數(shù)加載到寄存器5059或其他存儲(chǔ)器5053位置中,來執(zhí)行加載操作,或可以通過獲取存儲(chǔ)器5053中的目標(biāo)操作數(shù)的地址并將從寄存器5059或另一個(gè)存儲(chǔ)器5053位置獲得的數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器5053中的目標(biāo)操作數(shù)位置,來執(zhí)行存儲(chǔ)操作。加載/存儲(chǔ)單元5060可以是推測性的,且可以以相對于指令順序來說無序的順序訪問存儲(chǔ)器,但是加載/存儲(chǔ)單元5060將向程序維持指令按順序執(zhí)行的外觀。加載/存儲(chǔ)單元5060可與通用寄存器5059、解密/分派單元5056、高速緩存/存儲(chǔ)器接口 5053或其他元件5083通信,且包括各種寄存器電路、ALU5085和控制邏輯5090以計(jì)算存儲(chǔ)器地址并提供流水線順序以使操作保持次序。一些操作可不按順序,但加載/存儲(chǔ)單元提供功能以使不按順序執(zhí)行的操作對程序看起來如已按順序執(zhí)行一樣,如本領(lǐng)域所熟知的。
      [0936]優(yōu)選地,應(yīng)用程序“看到的”地址通常被稱為虛擬地址。虛擬地址有時(shí)候被稱為“邏輯地址”和“有效地址”。這些虛擬地址之所以虛擬,在于它們由多種動(dòng)態(tài)地址轉(zhuǎn)換(DAT)技術(shù)中的一種重定向到物理存儲(chǔ)器位置,所述動(dòng)態(tài)地址轉(zhuǎn)換技術(shù)包括但不限于簡單地給用偏移值給虛擬地址加前綴、經(jīng)由一個(gè)或多個(gè)轉(zhuǎn)換表轉(zhuǎn)換虛擬地址,所述轉(zhuǎn)換表優(yōu)選地包括至少一個(gè)段表和一個(gè)頁表(單獨(dú)地或組合地),優(yōu)選地,段表具有指向頁表的項(xiàng)。在z/Architecture O R中,提供轉(zhuǎn)換分級結(jié)構(gòu),包括區(qū)域第一表、區(qū)域第二表、區(qū)域第三表、段表和可選的頁表。地址轉(zhuǎn)換的性能通常通過利用轉(zhuǎn)換后備緩沖器(TLB)被改善,該轉(zhuǎn)換后備緩沖器包括將虛擬地址映射到相關(guān)的物理存儲(chǔ)位置的項(xiàng)。當(dāng)DAT使用轉(zhuǎn)換表轉(zhuǎn)換虛擬地址時(shí),創(chuàng)建項(xiàng)。于是,虛擬地址的隨后使用可利用快的TLB的項(xiàng),而不是慢的順序轉(zhuǎn)換表訪問。TLB內(nèi)容可由包括LRU (最少最近使用)的多個(gè)替換算法來管理。
      [0937]在處理器是多處理器系統(tǒng)的處理器的情況下,每個(gè)處理器具有保持共享資源的責(zé)任,所述共享資源諸如I/O、高速緩存、TLB和存儲(chǔ)器,它們互鎖以實(shí)現(xiàn)一致性。典型地,“窺探”技術(shù)將被用于維持高速緩存一致性。在窺探環(huán)境中,每個(gè)高速緩存線可被標(biāo)記為正處于共享狀態(tài)、獨(dú)占狀態(tài)、改變狀態(tài)、無效狀態(tài)等中的一個(gè),以便有助于共享。
      [0938]I/O單元5054 (圖14)向處理器提供用于附加到例如包括磁帶、盤、打印機(jī)、顯示器和網(wǎng)絡(luò)的外圍設(shè)備的裝置。I/o單元通常由軟件驅(qū)動(dòng)器向計(jì)算機(jī)程序呈現(xiàn)。在諸如來自IBM〇R的System z O R的大型計(jì)算機(jī)中,通道適配器和開放系統(tǒng)適配器是提供操作系統(tǒng)和外圍設(shè)備之間的通信的大型計(jì)算機(jī)的I/O單元。
      [0939]而且,其他類型的計(jì)算環(huán)境可受益于本發(fā)明的一個(gè)或多個(gè)方面。作為例子,環(huán)境可包括仿真器(例如,軟件或其他仿真機(jī)制),其中特定架構(gòu)(包括例如指令執(zhí)行、諸如地址轉(zhuǎn)換的架構(gòu)功能、以及架構(gòu)寄存器)或其子集被仿真(例如,在具有處理器和存儲(chǔ)器的本機(jī)計(jì)算機(jī)系統(tǒng)中)。在這樣的環(huán)境中,仿真器的一個(gè)或多個(gè)仿真功能可實(shí)施本發(fā)明的一個(gè)或多個(gè)方面,即使執(zhí)行仿真器的計(jì)算機(jī) 可具有與正被仿真的能力不同的架構(gòu)。作為一個(gè)例子,在仿真模式中,解碼正被仿真的特定指令或操作,且建立合適的仿真功能以實(shí)施單個(gè)指令或操作。
      [0940]在仿真環(huán)境中,主計(jì)算機(jī)包括例如存儲(chǔ)器以存儲(chǔ)指令和數(shù)據(jù);指令獲取單元以從存儲(chǔ)器獲取指令,且可選地,提供用于獲取的指令的本地緩沖;指令解碼單元以接收獲取的指令并確定已被獲取的指令的類型;以及指令執(zhí)行單元以執(zhí)行該指令。執(zhí)行可包括將數(shù)據(jù)從存儲(chǔ)器加載到寄存器;從寄存器將數(shù)據(jù)存儲(chǔ)回存儲(chǔ)器;或執(zhí)行如由解碼單元確定的某些類型的算術(shù)或邏輯運(yùn)算。在一個(gè)例子中,每個(gè)單元在軟件中實(shí)現(xiàn)。例如,被所述單元執(zhí)行的操作被實(shí)現(xiàn)為仿真器軟件中的一個(gè)或多個(gè)子例程。
      [0941]更具體地,在大型計(jì)算機(jī)中,程序員(通常是如今的“C”程序員)一般通過編譯器應(yīng)用使用架構(gòu)機(jī)器指令。存儲(chǔ)在存儲(chǔ)介質(zhì)中的這些指令可以在z/Architecture O RIBM O R服務(wù)器中本機(jī)地執(zhí)行,或在執(zhí)行其他架構(gòu)的機(jī)器中執(zhí)行。它們可在現(xiàn)有的和未來的IBMO R大型計(jì)算機(jī)服務(wù)器以及IBM O R的其他機(jī)器(例如,Power Systems服務(wù)器和System x O R服務(wù)器)中被仿真。它們可在使用由IBM O R、Intel O R、AMDTM等制造的硬件的各種機(jī)器上運(yùn)行Linux的機(jī)器中被執(zhí)行。除了在z/Architecture O R下的該硬件上執(zhí)行,Linux也可被用于這樣的機(jī)器,其使用由TurboHercules、Hercules、UMX或FSI (FundamentalSoftware, Inc)(其中一般地執(zhí)行是處于仿真模式中)提供的仿真。在仿真模式中,仿真軟件由本機(jī)處理器執(zhí)行以仿真被仿真處理器的架構(gòu)。
      [0942]本機(jī)處理器典型地執(zhí)行仿真軟件,其包括固件或本機(jī)操作系統(tǒng),以執(zhí)行被仿真處理器的仿真程序。仿真軟件負(fù)責(zé)獲取并執(zhí)行被仿真處理器架構(gòu)的指令。仿真軟件維護(hù)仿真的程序計(jì)數(shù)器以保持跟蹤指令界限。仿真軟件可一次獲取一個(gè)或多個(gè)仿真的機(jī)器指令,并將所述一個(gè)或多個(gè)仿真的機(jī)器指令轉(zhuǎn)換為對應(yīng)的本機(jī)機(jī)器指令組,以由本機(jī)處理器執(zhí)行。這些轉(zhuǎn)換的指令可被高速緩存,這樣可完成更快的轉(zhuǎn)換。仿真軟件將維持被仿真的處理器架構(gòu)的架構(gòu)規(guī)則以保證為被仿真處理器編寫的操作系統(tǒng)和應(yīng)用正確操作。而且,仿真軟件將提供由被仿真的處理器架構(gòu)確定的資源,包括但不限于控制寄存器、通用寄存器、浮點(diǎn)寄存器、例如包括段表和頁表的動(dòng)態(tài)地址轉(zhuǎn)換功能、中斷機(jī)制、上下文轉(zhuǎn)換機(jī)制、日中時(shí)間(TOD)時(shí)鐘和到I/O子系統(tǒng)的架構(gòu)接口,這樣被設(shè)計(jì)為在被仿真處理器上運(yùn)行的操作系統(tǒng)或應(yīng)用程序可在具有仿真軟件的本機(jī)處理器上運(yùn)行。
      [0943]解碼正被仿真的特定指令,且調(diào)用子例程以執(zhí)行該單個(gè)指令的功能。仿真被仿真處理器的功能的仿真軟件功能例如在“C”子例程或驅(qū)動(dòng)器中實(shí)現(xiàn),或由提供用于特定硬件的驅(qū)動(dòng)器的其他方法實(shí)現(xiàn),如本領(lǐng)域技術(shù)人員在理解優(yōu)選實(shí)施例的描述后將理解的。包括但不限于 Beausoleil 等人的標(biāo)題為 “Multiprocessor for Hardware Emulation” 的美國專利證書號 5,551,013 ;以及 Scalzi 等人的標(biāo)題為 “Preprocessing of Stored TargetRoutines for Emulating Incompatible Instructions on a Target Processor,,的美國專利證書號 6,009,261 ;以及 Davidian 等人的標(biāo)題為 “Decoding Guest Instruction toDirectly Access Emulation Routines that Emulate the Guest Instructions,,的美國專利證書號,5,574,873 ;以及Gorishek等人的標(biāo)題為“Symmetrical Multiprocessing Busand Chipset Used for Coprocessor Support Allowing Non-Native Code to Run in aSystem”的美國專利證書號6,308, 255 ;以及Lethin等人的標(biāo)題為“Dynamic OptimizingObject Code Translator for Architecture Emulation and Dynamic Optimizing ObjectCode Translation Method”的美國專利證書號6,463,582,;以及Eric Traut的標(biāo)題為“Method for Emulating Guest Instructions on a Host Computer Through DynamicRecompilation of Host Instructions”的美國專利證書號5,790,825 ;以及許多其他專利的各種軟件和硬件仿真專利示出各種已知的方式來實(shí)現(xiàn)針對可為本領(lǐng)域技術(shù)人員獲得的目標(biāo)機(jī)器對為不同機(jī)器進(jìn)行架構(gòu)設(shè)計(jì)的指令格式的仿真,上述專利在這里都被作為參考。
      [0944]在圖16中,提供了仿真主計(jì)算機(jī)系統(tǒng)5092的例子,其仿真主架構(gòu)的主計(jì)算機(jī)系統(tǒng)5000’。在仿真主計(jì)算機(jī)系統(tǒng)5092中,主處理器(CPU) 5091是仿真主處理器(或虛擬主處理器),并包括具有與主計(jì)算機(jī)5000’的處理器5091不同的本機(jī)指令集架構(gòu)的仿真處理器5093。仿真主計(jì)算機(jī)系統(tǒng)5092具有可被仿真處理器5093訪問的存儲(chǔ)器5094。在示例性實(shí)施例中,存儲(chǔ)器5094被分區(qū)為主計(jì)算機(jī)存儲(chǔ)器5096部分和仿真例程5097部分。根據(jù)主計(jì)算機(jī)架構(gòu),主計(jì)算機(jī)存儲(chǔ)器5096對于仿真主計(jì)算機(jī)5092的程序來說是可用的。仿真處理器5093執(zhí)行與被仿真處理器5091不同架構(gòu)的架構(gòu)指令集的本機(jī)指令(即來自仿真程序處理器5097的本機(jī)指令),且可通過使用從順序和訪問/解碼例程獲得的一個(gè)或多個(gè)指令從主計(jì)算機(jī)存儲(chǔ)器5096中的程序訪問用于執(zhí)行的主機(jī)指令,所述順序和訪問/解碼例程可解碼訪問的主機(jī)指令,以確定用于仿真被訪問的主機(jī)指令的功能的本機(jī)指令執(zhí)行例程。被定義用于主計(jì)算機(jī)系統(tǒng)5000’架構(gòu)的其他工具可被架構(gòu)工具例程仿真,所述架構(gòu)工具例程包括諸如通用寄存器、控制寄存器、動(dòng)態(tài)地址轉(zhuǎn)換和I/O子系統(tǒng)支持和處理器高速緩存等工具。仿真例程也可利用在仿真處理器5093中可獲得的功能(諸如通用寄存器和虛擬地址的動(dòng)態(tài)轉(zhuǎn)換)以改善仿真例程的性能。也可提供專用硬件和卸載引擎以輔助處理器5093來仿真主計(jì)算機(jī)5000’的功能。
      [0945]在此使用的術(shù)語僅是為了描述特定實(shí)施例,且不旨在限制本發(fā)明。如在此使用的,單數(shù)形式“一”、“一個(gè)”和“該”也旨在包括復(fù)數(shù)形式,除非上下文另外清楚地指明。還將理解,當(dāng)在說明書中使用時(shí),術(shù)語“包括”和/或“包含”指明存在所述的特征、整體、步驟、操作、元件和/或組件,但不排除存在或附加一個(gè)或多個(gè)其他特征、整體、步驟、操作、元件和/或組件。
      [0946]所附權(quán)利要求書中的所有設(shè)備或步驟加功能元件的相應(yīng)結(jié)構(gòu)、材料、操作以及等價(jià)物,如有的話,旨在包括用于結(jié)合如特別要求保護(hù)的其他所要求保護(hù)的元件來執(zhí)行所述功能的任何結(jié)構(gòu)、材料或操作。呈現(xiàn)本發(fā)明的說明是為了示出和描述的作用,但不是窮盡性的或?qū)⒈景l(fā)明限制于所公開的形式。許多修改和變化對本領(lǐng)域普通技術(shù)人員來說是明顯的,且不脫離本發(fā)明的范圍和精神。選擇和描述實(shí)施例是為了最佳地解釋本發(fā)明的原理和實(shí)際應(yīng)用,并使得本領(lǐng)域普通技術(shù)人員能針對適于考慮的特定用途的具有各種修改的各種實(shí)施例理解本發(fā)明。
      【權(quán)利要求】
      1.一種用于在包括主存儲(chǔ)器和存儲(chǔ)級內(nèi)存的計(jì)算環(huán)境中執(zhí)行開始子通道指令的方法,所述方法包括: 響應(yīng)于確定由所述開始子通道指令指示的子通道是異步數(shù)據(jù)移動(dòng)器(ADM)子通道,執(zhí)行: 從主存儲(chǔ)器中獲得操作請求塊,所述操作請求塊包括操作塊的地址; 基于所述操作塊的所述地址,從主存儲(chǔ)器中獲得所述操作塊,所述操作塊包括:請求塊、響應(yīng)塊、和一個(gè)或多個(gè)移動(dòng)規(guī)格塊(MSB),其中所述請求塊包括具有指示被包括在所述操作塊中并且被所述操作塊引用的一個(gè)或多個(gè)MSB的數(shù)目的值的MSB計(jì)數(shù)字段,其中所述響應(yīng)塊被配置為保持異常條件,其中每個(gè)移動(dòng)規(guī)格塊被配置為包括:操作代碼字段、塊計(jì)數(shù)字段、主存儲(chǔ)器地址字段、存儲(chǔ)級內(nèi)存地址字段、塊大小字段和標(biāo)志字段; 針對包括具有第一值的標(biāo)志字段的一個(gè)或多個(gè)所述MSB中的每個(gè)MSB執(zhí)行方法,所述方法包括: 基于在獲得的移動(dòng)規(guī)格塊中的所述操作代碼字段,確定所述移動(dòng)規(guī)格塊是否被配置為將數(shù)據(jù)塊從存儲(chǔ)級內(nèi)存移動(dòng)到主存儲(chǔ)器或從主存儲(chǔ)器移動(dòng)到存儲(chǔ)級內(nèi)存,其中數(shù)據(jù)塊的大小由所獲得的MSB的所述塊大小字段確定;以及 在所述主存儲(chǔ)器和所述存儲(chǔ)級內(nèi)存之間移動(dòng)數(shù)據(jù)塊,其中使用所述主存儲(chǔ)器地址字段獲得用于所述移動(dòng)的主存儲(chǔ)器位置的地址和使用所述存儲(chǔ)級內(nèi)存地址字段獲得用于所述移動(dòng)的存儲(chǔ)級內(nèi)存的地址。
      2.根據(jù)權(quán)利要求1所述的方法,所述方法還包括: 針對包括具有第二值的標(biāo)志字段的一個(gè)或多個(gè)所述MSB中的每個(gè)MSB執(zhí)行方法,所述方法包括: 使用包括具有所述第二值的所述標(biāo)志字段的所述MSB的所述主存儲(chǔ)器地址作為地址以便獲得另一個(gè)移動(dòng)規(guī)格塊; 基于所述另一個(gè)MSB的操作代碼字段,確定所述另一個(gè)移動(dòng)規(guī)格塊是否被配置為將數(shù)據(jù)塊從存儲(chǔ)級內(nèi)存移動(dòng)到主存儲(chǔ)器或從主存儲(chǔ)器移動(dòng)到存儲(chǔ)級內(nèi)存,其中數(shù)據(jù)塊的大小由所述另一個(gè)MSB的所述塊大小字段確定;以及 在所述主存儲(chǔ)器和所述存儲(chǔ)級內(nèi)存之間移動(dòng)所述一個(gè)或多個(gè)數(shù)據(jù)塊,其中使用所述另一個(gè)MSB的所述主存儲(chǔ)器地址字段獲得用于所述移動(dòng)的主存儲(chǔ)器位置的地址和使用所述另一個(gè)MSB的所述存儲(chǔ)級內(nèi)存地址字段獲得用于所述移動(dòng)的存儲(chǔ)級內(nèi)存的地址。
      3.根據(jù)權(quán)利要求2所述的方法,所述方法還包括: 針對包括具有第三值的標(biāo)志字段的一個(gè)或多個(gè)所述MSB中的每個(gè)MSB執(zhí)行方法,所述方法包括: 使用包括具有所述第三值的所述標(biāo)志字段的所述MSB的所述主存儲(chǔ)器地址作為地址以便獲得一個(gè)或多個(gè)ADM間接數(shù)據(jù)地址字(AIDAW)的列表中的一個(gè)AIDAW,所述AIDAW被配置為包括AIDAW標(biāo)志和AIDAW主存儲(chǔ)器地址,其中所述AIDAW主存儲(chǔ)器地址而不是MSB主存儲(chǔ)器地址被用于數(shù)據(jù)塊的所述移動(dòng);
      4.根據(jù)權(quán)利要求3所述的方法,所述方法還包括響應(yīng)于確定由所述開始子通道指令指示的所述子通道是I/O子通道,執(zhí)行: 從所述I/O子通道獲得通道路徑;并且經(jīng)由所獲得的通道路徑執(zhí)行I/o操作。
      5.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于所述操作代碼字段被設(shè)置為第一值,所述操作代碼字段指定讀操作并且所述移動(dòng)包括將所述數(shù)據(jù)塊從存儲(chǔ)級內(nèi)存移動(dòng)到主存儲(chǔ)器。
      6.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于所述操作代碼字段被設(shè)置為第二值,所述操作代碼字段指定寫操作,并且所述移動(dòng)包括將所述數(shù)據(jù)塊從主存儲(chǔ)器移動(dòng)到存儲(chǔ)級內(nèi)存。
      7.根據(jù)前述權(quán)利要求中的任何一個(gè)所述的方法,其中在所述塊大小字段中所指定的大小是4K或者1M。
      8.根據(jù)權(quán)利要求1所述的方法,所述方法還包括響應(yīng)于所述移動(dòng)完成,生成一個(gè)或多個(gè)狀態(tài)條件,所述一個(gè)或多個(gè)狀態(tài)條件對于所述開始子通道指令的發(fā)出者是可訪問的。
      9.根據(jù)權(quán)利要求1所述的方法,其中響應(yīng)于在所述移動(dòng)操作的執(zhí)行期間所檢測的錯(cuò)誤條件所述響應(yīng)塊被填充。
      10.一種用于在包括主存儲(chǔ)器和存儲(chǔ)級內(nèi)存的計(jì)算環(huán)境中執(zhí)行開始子通道指令的計(jì)算機(jī)系統(tǒng),所述計(jì)算機(jī)系統(tǒng)包括: 存儲(chǔ)器;和 與所述存儲(chǔ)器通信的處理器,其中所述計(jì)算機(jī)系統(tǒng)被配置為執(zhí)行如在前述權(quán)利要求中的任何一個(gè)中所要求保護(hù)的方法。
      11.一種用于在包括主·存儲(chǔ)器和存儲(chǔ)級內(nèi)存的計(jì)算環(huán)境中執(zhí)行開始子通道指令的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括: 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),其可由處理電路讀取并存儲(chǔ)用于所述處理電路執(zhí)行以執(zhí)行根據(jù)權(quán)利要求1到9中的任何一個(gè)的方法的指令。
      【文檔編號】G06F13/12GK103582878SQ201280026746
      【公開日】2014年2月12日 申請日期:2012年5月25日 優(yōu)先權(quán)日:2011年6月10日
      【發(fā)明者】K·J·奧克斯, P·G·蘇頓, P·D·德里費(fèi)爾, H·尤登弗蘭德, S·G·格拉森 申請人:國際商業(yè)機(jī)器公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
      1