欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

光纖信道輸入/輸出數(shù)據(jù)路由系統(tǒng)和方法

文檔序號(hào):6370249閱讀:352來源:國(guó)知局
專利名稱:光纖信道輸入/輸出數(shù)據(jù)路由系統(tǒng)和方法
技術(shù)領(lǐng)域
本公開一般涉及輸入/輸出處理,具體涉及在輸入/輸出處理期間促進(jìn)信道子系統(tǒng)與網(wǎng)絡(luò)接口之間的數(shù)據(jù)傳輸。
背景技術(shù)
輸出/輸出(I/O)操作被用于在主機(jī)計(jì)算機(jī)系統(tǒng)存儲(chǔ)器與I/O處理系統(tǒng)的I/O設(shè)備之間傳輸數(shù)據(jù)。具體地,通過執(zhí)行I/o操作,將數(shù)據(jù)從存儲(chǔ)器寫入到一個(gè)或多個(gè)I/O設(shè)備,并且將數(shù)據(jù)從一個(gè)或多個(gè)I/o設(shè)備讀取到存儲(chǔ)器。為了促進(jìn)I/O操作的處理,采用I/O處理系統(tǒng)的I/O子系統(tǒng)。I/O子系統(tǒng)被耦接(couple)到主存儲(chǔ)器和I/O處理系統(tǒng)的I/O設(shè)備,并在存儲(chǔ)器和I/O設(shè)備之間指引信息流。 I/O子系統(tǒng)的一個(gè)示例是信道子系統(tǒng)。信道子系統(tǒng)使用信道路徑(path)作為通信介質(zhì)。每個(gè)信道路徑包括耦接到控制單元的信道,所述控制單元還耦接到一個(gè)或多個(gè)I/O設(shè)備。信道子系統(tǒng)可以采用信道命令字(CCW),以在I/O設(shè)備和存儲(chǔ)器之間傳輸數(shù)據(jù)。CCW指定要被執(zhí)行的命令。對(duì)于啟動(dòng)某些I/O操作的命令,CCW指定與操作關(guān)聯(lián)的存儲(chǔ)器區(qū)域、每當(dāng)完成向該區(qū)域的傳輸或從該區(qū)域的傳輸完成時(shí)要進(jìn)行的動(dòng)作、以及其它選項(xiàng)。信道子系統(tǒng)和I/o設(shè)備可以在傳輸模式中操作,該傳輸模式支持一個(gè)或多個(gè)命令控制塊的傳輸,以在I/o設(shè)備和存儲(chǔ)器之間傳輸數(shù)據(jù)。傳輸控制字(TCW)指定要被執(zhí)行的一個(gè)或多個(gè)I/o命令。對(duì)于啟動(dòng)某些I/O操作的命令,TCW指定與操作關(guān)聯(lián)的存儲(chǔ)器區(qū)域、每當(dāng)向該區(qū)域的傳輸或從該區(qū)域的傳輸完成時(shí)要進(jìn)行的動(dòng)作、以及其它選項(xiàng)。一般地,主機(jī)計(jì)算機(jī)系統(tǒng)和信道子系統(tǒng)在經(jīng)由主機(jī)總線適配器(HBA)的鏈路上連接到I/o設(shè)備。HBA連接到信道,所述信道包括包含信道微處理器和本地信道存儲(chǔ)器的硬件,該本地信道存儲(chǔ)器向HBA表現(xiàn)為主機(jī)系統(tǒng)。信道硬件將HBA與主機(jī)系統(tǒng)及其存儲(chǔ)空間隔離。

發(fā)明內(nèi)容
—個(gè)實(shí)施例包括一種用于在配置用于與控制單元通信的主機(jī)計(jì)算機(jī)系統(tǒng)中執(zhí)行輸入/輸出(I/O)處理操作的計(jì)算機(jī)程序產(chǎn)品。所述計(jì)算機(jī)程序產(chǎn)品包括可由處理電路執(zhí)行的有形存儲(chǔ)介質(zhì),并且該有形存儲(chǔ)介質(zhì)存儲(chǔ)用于所述處理電路執(zhí)行的指令,用于執(zhí)行一方法,該方法包括在所述主機(jī)計(jì)算機(jī)系統(tǒng)中的信道子系統(tǒng)處獲取有關(guān)I/O操作的信息,所述信道子系統(tǒng)包括具有信道處理器和本地信道存儲(chǔ)器的至少一個(gè)信道;產(chǎn)生至少一個(gè)地址控制字(ACW),所述至少一個(gè)ACW指定一個(gè)或多個(gè)主機(jī)存儲(chǔ)器位置,用于在所述主機(jī)計(jì)算機(jī)系統(tǒng)和所述控制單元之間傳輸數(shù)據(jù),并且將所述至少一個(gè)ACW存儲(chǔ)在所述本地信道存儲(chǔ)器中,所述至少一個(gè)ACW包括數(shù)據(jù)丟棄字段;為由所述I/O操作指定的每個(gè)數(shù)據(jù)傳輸產(chǎn)生地址控制結(jié)構(gòu),并將每個(gè)地址控制結(jié)構(gòu)從所述至少一個(gè)信道轉(zhuǎn)發(fā)到所述信道子系統(tǒng)與至少一個(gè)I/O設(shè)備之間的網(wǎng)絡(luò)接口,每個(gè)地址控制結(jié)構(gòu)指定對(duì)應(yīng)ACW在所述本地信道存儲(chǔ)器中的位置;經(jīng)由所述網(wǎng)絡(luò)接口將I/O命令消息轉(zhuǎn)發(fā)到所述至少一個(gè)I/O設(shè)備;響應(yīng)于所述I/O命令消息,從所述網(wǎng)絡(luò)接口接收一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,每個(gè)數(shù)據(jù)傳輸請(qǐng)求包括對(duì)應(yīng)地址控制結(jié)構(gòu)指定的位置信息;訪問數(shù)據(jù)傳輸請(qǐng)求中的地址字段指定的本地信道存儲(chǔ)器位置處的ACW,并將所述數(shù)據(jù)傳輸請(qǐng)求路由到所述ACW中指定的主機(jī)存儲(chǔ)器位置;以及響應(yīng)于在所述訪問和所述路由中的至少一個(gè)期間遇到錯(cuò)誤,丟棄所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,并將所述數(shù)據(jù)丟棄字段設(shè)置為指示所述信道丟棄與所述ACW關(guān)聯(lián)的任何后續(xù)數(shù)據(jù)傳輸請(qǐng)求的值。另一實(shí)施例包括一種在配置用于與控制單元通信的主機(jī)計(jì)算機(jī)系統(tǒng)中執(zhí)行輸入/輸出(I/o)處理操作的方法。所述方法包括在所述主機(jī)計(jì)算機(jī)系統(tǒng)中的信道子系統(tǒng)處獲取有關(guān)I/o操作的信息,所述信道子系統(tǒng)包括具有信道處理器和本地信道存儲(chǔ)器的至少一個(gè)信道;產(chǎn)生至少一個(gè)地址控制字(ACW),所述至少一個(gè)ACW指定一個(gè)或多個(gè)主機(jī)存儲(chǔ)器位置,用于在所述主機(jī)計(jì)算機(jī)系統(tǒng)和所述控制單元之間傳輸數(shù)據(jù),并且將所述至少一個(gè)ACW存儲(chǔ)在所述本地信道存儲(chǔ)器中,所述至少一個(gè)ACW包括數(shù)據(jù)丟棄字段;為由所述I/O操作指定的每個(gè)數(shù)據(jù)傳輸產(chǎn)生地址控制結(jié)構(gòu),并將每個(gè)地址控制結(jié)構(gòu)從所述至少一個(gè)信道轉(zhuǎn)發(fā)到所述信道子系統(tǒng)與至少一個(gè)I/O設(shè)備之間的網(wǎng)絡(luò)接口,每個(gè)地址控制結(jié)構(gòu)指定對(duì)應(yīng)ACW在所述本地信道存儲(chǔ)器中的位置;經(jīng)由所述網(wǎng)絡(luò)接口將I/O命令消息轉(zhuǎn)發(fā)到所述至少一個(gè)I/O設(shè)備;響應(yīng)于所述I/O命令消息,從所述網(wǎng)絡(luò)接口接收一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,每個(gè)數(shù) 據(jù)傳輸請(qǐng)求包括對(duì)應(yīng)地址控制結(jié)構(gòu)指定的位置信息;訪問數(shù)據(jù)傳輸請(qǐng)求中的地址字段指定的本地信道存儲(chǔ)器位置處的ACW,并將所述數(shù)據(jù)傳輸請(qǐng)求路由到所述ACW中指定的主機(jī)存儲(chǔ)器位置;以及響應(yīng)于在所述訪問和所述路由中的至少一個(gè)期間遇到錯(cuò)誤,丟棄所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng),求并將所述數(shù)據(jù)丟棄字段設(shè)置為指示所述信道丟棄與所述ACW關(guān)聯(lián)的任何后續(xù)數(shù)據(jù)傳輸請(qǐng)求的值。另一實(shí)施例包括一種在配置用于與控制單元通信的主機(jī)計(jì)算機(jī)系統(tǒng)中執(zhí)行輸入/輸出(I/o)處理操作的裝置,所述主機(jī)計(jì)算機(jī)系統(tǒng)包括信道子系統(tǒng),所述信道子系統(tǒng)配置為經(jīng)由網(wǎng)絡(luò)接口與所述控制單元通信。所述信道子系統(tǒng)配置為執(zhí)行在所述主機(jī)計(jì)算機(jī)系統(tǒng)中的信道子系統(tǒng)處獲取有關(guān)I/o操作的信息,所述信道子系統(tǒng)包括具有信道處理器和本地信道存儲(chǔ)器的至少一個(gè)信道;產(chǎn)生至少一個(gè)地址控制字(ACW),所述至少一個(gè)ACW指定一個(gè)或多個(gè)主機(jī)存儲(chǔ)器位置,用于在所述主機(jī)計(jì)算機(jī)系統(tǒng)和所述控制單元之間傳輸數(shù)據(jù),并且將所述至少一個(gè)ACW存儲(chǔ)在所述本地信道存儲(chǔ)器中,所述至少一個(gè)ACW包括數(shù)據(jù)丟棄字段;為由所述I/O操作指定的每個(gè)數(shù)據(jù)傳輸產(chǎn)生地址控制結(jié)構(gòu),并將每個(gè)地址控制結(jié)構(gòu)從所述至少一個(gè)信道轉(zhuǎn)發(fā)到所述信道子系統(tǒng)與至少一個(gè)I/O設(shè)備之間的網(wǎng)絡(luò)接口,每個(gè)地址控制結(jié)構(gòu)指定對(duì)應(yīng)ACW在所述本地信道存儲(chǔ)器中的位置;經(jīng)由所述網(wǎng)絡(luò)接口將I/O命令消息轉(zhuǎn)發(fā)到所述至少一個(gè)I/O設(shè)備;響應(yīng)于所述I/O命令消息,從所述網(wǎng)絡(luò)接口接收一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,每個(gè)數(shù)據(jù)傳輸請(qǐng)求包括對(duì)應(yīng)地址控制結(jié)構(gòu)指定的位置信息;訪問數(shù)據(jù)傳輸請(qǐng)求中的地址字段指定的本地信道存儲(chǔ)器位置處的ACW,并將所述數(shù)據(jù)傳輸請(qǐng)求路由到所述ACff中指定的主機(jī)存儲(chǔ)器位置;以及響應(yīng)于在所述訪問和所述路由中的至少一個(gè)期間遇到錯(cuò)誤,丟棄所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,并將所述數(shù)據(jù)丟棄字段設(shè)置為指示所述信道丟棄與所述ACW關(guān)聯(lián)的任何后續(xù)數(shù)據(jù)傳輸請(qǐng)求的值。本領(lǐng)域的技術(shù)人員在閱讀了以下附圖和詳細(xì)說明之后,根據(jù)實(shí)施例的其它裝置、方法和/或計(jì)算機(jī)程序產(chǎn)品將變得明顯。所有這樣的附加系統(tǒng)、方法和/或計(jì)算機(jī)程序產(chǎn)品意在被包含在該說明中、包含在本發(fā)明的范圍中、以及由所附權(quán)利要求保護(hù)。


在本說明書的結(jié)尾處,在權(quán)利要求中具體地指出且清楚地主張了被認(rèn)作本發(fā)明的主題。根據(jù)以下結(jié)合附圖的詳細(xì)說明,本發(fā)明的上述以及其它目的、特征和優(yōu)點(diǎn)是顯然的。在所述附圖中圖I描繪了合并和使用本發(fā)明的一個(gè)或多個(gè)方面的I/O處理系統(tǒng)的一個(gè)實(shí)施例;圖2描繪了主機(jī)計(jì)算機(jī)系統(tǒng)產(chǎn)生的、用于傳輸模式I/O操作的示例控制塊;圖3描繪了包括連接到信道子系統(tǒng)的主機(jī)總線適配器(HBA)的I/O處理系統(tǒng)的現(xiàn)有技術(shù)的構(gòu)造;圖4描繪了包括連接到信道子系統(tǒng)的主機(jī)總線適配器(HBA)的I/O處理系統(tǒng)的一個(gè)實(shí)施例;圖5描繪了用于地址控制結(jié)構(gòu)的地址字段的實(shí)施例;圖6描繪了在傳輸模式I/O操作期間在信道和控制單元之間傳送的各種消息的示例;圖7是描繪在I/O操作期間經(jīng)由信道數(shù)據(jù)路由器和HBA處理數(shù)據(jù)傳輸?shù)氖纠椒ǖ牧鞒虉D;圖8描繪了圖7的數(shù)據(jù)路由器所使用的信道本地存儲(chǔ)器區(qū)域的實(shí)施例;圖9A-9B (—起稱為圖9)是描繪通過圖7的數(shù)據(jù)路由器的邏輯組件的數(shù)據(jù)流的框圖;圖10描繪了地址控制字(ACW)的一個(gè)實(shí)施例;圖11描繪了圖10的ACW的實(shí)施例;圖12描繪了圖10的ACW的實(shí)施例;圖13描繪了圖10的ACW的實(shí)施例;圖14描繪了圖10的ACW的實(shí)施例;以及圖15描繪了用于地址控制結(jié)構(gòu)的地址字段的實(shí)施例。詳細(xì)的描述通過參照附圖的示例說明了本發(fā)明的優(yōu)選實(shí)施例以及優(yōu)點(diǎn)和特征。
具體實(shí)施例方式根據(jù)本發(fā)明的一個(gè)方面,促進(jìn)了輸入/輸出(I/O)處理。例如,通過在信道子系統(tǒng)的信道中提供數(shù)據(jù)路由器而促進(jìn)I/o處理,信道子系統(tǒng)在I/O處理期間允許連接到該信道的主機(jī)總線適配器(HBA)直接訪問主機(jī)計(jì)算機(jī)中的主機(jī)存儲(chǔ)器,而不需要將輸入或輸出數(shù)據(jù)存儲(chǔ)在該信道中。相比于現(xiàn)有技術(shù)的信道存儲(chǔ)和轉(zhuǎn)發(fā)設(shè)計(jì),此結(jié)構(gòu)提供信道I/O開始速率的大大提高(例如,2倍)以及每個(gè)I/O操作的響應(yīng)時(shí)間的降低,在現(xiàn)有技術(shù)中,主機(jī)計(jì)算機(jī)與HBA之間的所有事務(wù)由信道微處理器檢查、轉(zhuǎn)換和轉(zhuǎn)發(fā)。例如,信道配備有數(shù)據(jù)路由器硬件,其被配置為向HBA產(chǎn)生和提供一個(gè)或多個(gè)地址控制結(jié)構(gòu),信道通過地址控制結(jié)構(gòu)告知HBA分配給該HBA的本地信道存儲(chǔ)器區(qū)域。為了允許HBA尋址主機(jī)存儲(chǔ)器中的多個(gè)地址空間,每個(gè)地址控制結(jié)構(gòu)包括關(guān)于本地信道存儲(chǔ)器中的包括主機(jī)存儲(chǔ)器地址的位置的信息。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)地址控制結(jié)構(gòu)包括地址(例如64比特PCIe地址),該地址包括指定對(duì)應(yīng)地址命令字(ACW)的本地信道存儲(chǔ)器地址的字段。例如,地址控制結(jié)構(gòu)包括ACW索引字段,其包括對(duì)本地信道存儲(chǔ)器中的ACW的連續(xù)塊的索引。在一個(gè)實(shí)施例中,提供了當(dāng)HBA在I/O操作期間直接尋址主機(jī)存儲(chǔ)器時(shí)檢查HBA的系統(tǒng)和方法。例如,ACW提供數(shù)據(jù)路由器提供檢查對(duì)主機(jī)存儲(chǔ)器具有直接訪問的設(shè)備所需的數(shù)據(jù)層的能力,以及將失敗的HBA與主機(jī)計(jì)算機(jī)隔離的能力。例如,地址控制結(jié)構(gòu)和關(guān)聯(lián)的ACW包括確認(rèn)(validation)和偏移字段,當(dāng)接收到HBA數(shù)據(jù)傳輸請(qǐng)求時(shí),數(shù)據(jù)路由器檢查這些字段。在一個(gè)實(shí)施例中,提供了向HBA和主機(jī)存儲(chǔ)器之間的存儲(chǔ)器請(qǐng)求插入首標(biāo)或從該存儲(chǔ)器請(qǐng)求移除首標(biāo)的系統(tǒng)和方法。在現(xiàn)有技術(shù)系統(tǒng)中,信道可以從HBA讀請(qǐng)求接收首標(biāo)信息并將其存儲(chǔ)到本地信道存儲(chǔ)器中,或者響應(yīng)于HBA寫請(qǐng)求產(chǎn)生首標(biāo)并將首標(biāo)附接到輸 出數(shù)據(jù)。這里所描述的實(shí)施例允許信道(經(jīng)由數(shù)據(jù)路由器硬件)將讀請(qǐng)求首標(biāo)存儲(chǔ)在本地信道存儲(chǔ)器中,而輸入數(shù)據(jù)被直接存儲(chǔ)在主機(jī)存儲(chǔ)器中,并且還產(chǎn)生和附接首標(biāo)到已經(jīng)由HBA寫請(qǐng)求直接從主機(jī)存儲(chǔ)器取得的輸出數(shù)據(jù)。例如,為HBA讀請(qǐng)求提供讀ACW,并為HBA寫請(qǐng)求提供寫ACW。讀ACW被用于存儲(chǔ)與輸入數(shù)據(jù)一起接收的首標(biāo)信息,寫ACW被用于存儲(chǔ)用于產(chǎn)生首標(biāo)并將該首標(biāo)附接到輸出數(shù)據(jù)的首標(biāo)信息。在一個(gè)實(shí)施例中,提供了在I/O操作期間在HBA與主機(jī)存儲(chǔ)器之間直接數(shù)據(jù)傳輸期間向輸出數(shù)據(jù)中插入校驗(yàn)字段并檢查輸入數(shù)據(jù)的系統(tǒng)和方法,以提供用于檢測(cè)傳輸?shù)臄?shù)據(jù)是否已被破壞的手段。在現(xiàn)有技術(shù)系統(tǒng)中,對(duì)于寫(輸出)操作,信道利用存儲(chǔ)在本地信道存儲(chǔ)器中的用戶輸出數(shù)據(jù)設(shè)置數(shù)據(jù)校驗(yàn)字。對(duì)于讀(輸入)操作,信道將輸入數(shù)據(jù)和數(shù)據(jù)校驗(yàn)字存儲(chǔ)在本地信道存儲(chǔ)器中,并執(zhí)行數(shù)據(jù)的檢查。數(shù)據(jù)校驗(yàn)字的示例包括循環(huán)冗余校驗(yàn)(CRC)字、縱向冗余校驗(yàn)(LRC)字,以及校驗(yàn)和數(shù)據(jù)。在這里所述的實(shí)施例中,信道數(shù)據(jù)路由器硬件使用ACW插入和/或檢查數(shù)據(jù)校驗(yàn)字(在此情況中,數(shù)據(jù)校驗(yàn)字被存儲(chǔ)在本地信道存儲(chǔ)器中,或者從本地信道存儲(chǔ)器產(chǎn)生數(shù)據(jù)校驗(yàn)字,而用戶數(shù)據(jù)(即輸入或輸出數(shù)據(jù))在主機(jī)存儲(chǔ)器與HBA之間直接傳輸)。例如,數(shù)據(jù)路由器使用發(fā)送到HBA的地址(例如,劃分PCIe地址)來引用ACW,該ACff包括從其存儲(chǔ)或產(chǎn)生數(shù)據(jù)校驗(yàn)字的一個(gè)或多個(gè)位置。地址中諸如ACW索引字段的字段被用于引用ACW,該ACW包括數(shù)據(jù)校驗(yàn)字的初始值或“開始種子”以及保存中間數(shù)據(jù)校驗(yàn)字和狀態(tài)的位置。在一個(gè)實(shí)施例中,如果間接數(shù)據(jù)尋址被用在I/O操作中,則ACW還包括關(guān)聯(lián)的傳輸間接數(shù)據(jù)地址字(TIDAW),其提供主機(jī)存儲(chǔ)器地址、計(jì)數(shù)以及在輸出數(shù)據(jù)上哪里插入中間數(shù)據(jù)校驗(yàn)字和最終數(shù)據(jù)校驗(yàn)字的控制信息。對(duì)于進(jìn)入數(shù)據(jù)(如果指定了),TIDAW提供主機(jī)存儲(chǔ)器地址、計(jì)數(shù)和標(biāo)記比特,該標(biāo)記比特告知硬件存儲(chǔ)還是丟棄數(shù)據(jù)。在一個(gè)實(shí)施例中,該系統(tǒng)和方法提供了在亂序地接收到HBA讀請(qǐng)求時(shí)數(shù)據(jù)路由器確定如何將用戶數(shù)據(jù)存儲(chǔ)到主機(jī)存儲(chǔ)器中的能力。此外,數(shù)據(jù)路由器具有檢測(cè)錯(cuò)過或丟失的中間數(shù)據(jù)的能力。輸入和輸出數(shù)據(jù)應(yīng)以被傳送的順序存儲(chǔ)在主機(jī)存儲(chǔ)器中,以便合適地計(jì)算數(shù)據(jù)校驗(yàn)字。在一個(gè)實(shí)施例中,用于I/o操作的地址控制結(jié)構(gòu)(諸如讀或?qū)懙刂房刂平Y(jié)構(gòu))包括偏移字段,對(duì)于發(fā)送到信道用于I/o操作的每個(gè)HBA傳輸請(qǐng)求,該偏移字段遞增。對(duì)應(yīng)的ACW包括下一預(yù)期的偏移字段,將該下一預(yù)期的偏移字段與關(guān)聯(lián)于地址控制結(jié)構(gòu)的每個(gè)HBA傳輸請(qǐng)求中的偏移字段進(jìn)行比較。如果這些字段的值不匹配,則例如將接收的HBA請(qǐng)求入隊(duì)在HBA接收請(qǐng)求的底部。
在一個(gè)實(shí)施例中,提供了用于結(jié)束正經(jīng)由HBA執(zhí)行的多個(gè)I/O操作(在此期間HBA直接訪問主機(jī)存儲(chǔ)器)之一而不初始化HBA的系統(tǒng)和方法。在某些實(shí)例中,I/O操作將遇到主機(jī)存儲(chǔ)器異常,并且如果多個(gè)I/O操作正在主機(jī)計(jì)算機(jī)上執(zhí)行,則期望僅結(jié)束發(fā)生異常的I/O操作。此實(shí)施例僅允許導(dǎo)致異常被結(jié)束的操作,從而HBA不被初始化(這將導(dǎo)致正經(jīng)由HBA執(zhí)行的所有I/O操作被結(jié)束)。在此實(shí)施例中,用于數(shù)據(jù)傳輸?shù)腁CW可以包括讀丟棄比特(Read Discard Bit)、寫丟棄比特(Write Drop bit)或固件讀丟棄比特,其指示是否發(fā)生主機(jī)存儲(chǔ)器異常。如果所有這些比特都是0,則數(shù)據(jù)路由器將HBA請(qǐng)求處理為主機(jī)存儲(chǔ)器請(qǐng)求用于數(shù)據(jù)傳輸。如果從主機(jī)存儲(chǔ)器請(qǐng)求返回異常,則將異常原因存儲(chǔ)到關(guān)聯(lián)的ACW中,并將寫丟棄比特或讀丟棄比特設(shè)置為I。例如,如果I/O操作是寫,則用信號(hào)通知HBA異常中斷接收到獲取存儲(chǔ)異常的I/O操作。在ACW中將寫丟棄比特設(shè)置為1,這將導(dǎo)致如果HBA作出針對(duì)該I/O操作的新請(qǐng)求,則用信號(hào)通知HBA再次異常中斷I/O操作。如果I/O操作是讀,則接收到關(guān)于主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求的存儲(chǔ)異常使得ACW中的讀丟棄比特被設(shè)置為I。從HBA接收的針對(duì)該I/O操作的所有后續(xù)數(shù)據(jù)將被丟棄。 圖I示出了包括主機(jī)計(jì)算機(jī)系統(tǒng)102的I/O處理系統(tǒng)100的示例實(shí)施例,該主機(jī)計(jì)算機(jī)系統(tǒng)102包括數(shù)據(jù)儲(chǔ)存和/或處理系統(tǒng),諸如國(guó)際商業(yè)機(jī)器公司(IBM )的zSeries (z系列)大型機(jī)。IBM (位于美國(guó)紐約的Armonk)是國(guó)際商業(yè)機(jī)器公司的注冊(cè)商標(biāo)。這里使用的其它名稱也可能是國(guó)際商業(yè)機(jī)器公司或其它公司的注冊(cè)商標(biāo)、商標(biāo)或產(chǎn)品名稱。主機(jī)計(jì)算機(jī)系統(tǒng)102包括各種處理、存儲(chǔ)和通信部件。在一個(gè)實(shí)施例中,主機(jī)計(jì)算機(jī)系統(tǒng)102包括一個(gè)或多個(gè)中央處理單元(CPU) 104、諸如主儲(chǔ)存器或存儲(chǔ)器106的存儲(chǔ)組件(例如,Zseries存儲(chǔ)器)、和/或擴(kuò)展儲(chǔ)存器或存儲(chǔ)器108 (—起稱為“主機(jī)存儲(chǔ)器”)。系統(tǒng)102還包括一個(gè)或多個(gè)操作系統(tǒng)(OS) 110,其由一個(gè)或多個(gè)CPU 104執(zhí)行。例如,一個(gè)CPU 104可以執(zhí)行Linux 操作系統(tǒng)110和/或z/OS 操作系統(tǒng)110,作為不同的虛擬機(jī)實(shí)例。CPU 104是I/O處理系統(tǒng)100的控制中心。其包含序列和處理工具(faci I ity ),用于指令執(zhí)行、中斷動(dòng)作、定時(shí)功能、初始程序加載以及其它與機(jī)器相關(guān)的功能。CPU 104經(jīng)由連接113 (諸如雙向或單向總線)耦接到主存儲(chǔ)器106和/或擴(kuò)展存儲(chǔ)器108。主機(jī)計(jì)算機(jī)系統(tǒng)102還包括信道子系統(tǒng)114,其在主機(jī)計(jì)算機(jī)系統(tǒng)102與各種I/O設(shè)備116之間提供通信接口,I/O設(shè)備116可以由一個(gè)或多個(gè)控制單元118控制。I/O設(shè)備包括諸如以下的設(shè)備打印機(jī)、磁帶單元、直接訪問存儲(chǔ)設(shè)備、顯示器、鍵盤、通信控制器、遠(yuǎn)程處理設(shè)備、以及基于傳感器的設(shè)備。信道子系統(tǒng)114在I/O設(shè)備116與主機(jī)計(jì)算機(jī)系統(tǒng)102之間指引信息流。其使CPU 104脫離直接與I/O設(shè)備116通信的任務(wù),并允許數(shù)據(jù)處理與I/O處理并行地進(jìn)行。信道子系統(tǒng)114經(jīng)由連接120 (諸如總線)耦接到CPU104、主存儲(chǔ)器106和/或擴(kuò)展存儲(chǔ)器108。在一個(gè)實(shí)施例中,信道子系統(tǒng)114經(jīng)由相應(yīng)的“信道路徑”122連接到每個(gè)I/O設(shè)備116,所述“信道路徑”122經(jīng)由連接124 (諸如串行或并行鏈路)將信道子系統(tǒng)114連接到每個(gè)控制單元118??刂茊卧?18可以經(jīng)由超過一個(gè)信道路徑122附接(attach)到信道子系統(tǒng)114,并且I/O設(shè)備116可以附接到超過一個(gè)控制單元118??傮w上,單獨(dú)(individual)1/0設(shè)備116可以被多個(gè)信道路徑訪問。信道路徑可以使用各種類型的連接,諸如并行接口、串行I/O接口和FICON I/O接口。例如,串行信道路徑可以包括一個(gè)或多個(gè)光纖,其經(jīng)由例如光纖信道結(jié)構(gòu)中的動(dòng)態(tài)開關(guān)126連接到控制單元118,并行接口可以包括多個(gè)電導(dǎo)體。ANSI 標(biāo)準(zhǔn)文獻(xiàn)“Fibre Channel-Single-Byte Command Code Sets MappingProtocol-4(FC-SB-4) ”(2000 年 9 月 22 日,Tll 項(xiàng)目 2122-D,版本 3· 00)中描述了 FICONI/O接口,通過引用將其全文合并到這里。在一個(gè)實(shí)施例中,信道子系統(tǒng)114包括一個(gè)或多個(gè)單獨(dú)信道128,其各自經(jīng)由一個(gè)或多個(gè)信道路徑122連接到一個(gè)或多個(gè)控制單元118和/或I/O設(shè)備116。每個(gè)信道128包括處理電子裝置,諸如本地信道微處理器130和連接到本地信道微處理器130并可以由其訪問的本地信道存儲(chǔ)器132。本地信道存儲(chǔ)器132可以包括諸如信道程序指定、信道路徑識(shí)別符、設(shè)備號(hào)、設(shè)備計(jì)數(shù)、狀態(tài)指示的信息、以及有關(guān)路徑可用性和等待執(zhí)行(pending)或正在執(zhí)行的功能的信息。也位于每個(gè)信道128內(nèi)的是一個(gè)或多個(gè)子信道。每個(gè)子信道是位于信道存儲(chǔ)器132內(nèi)的數(shù)據(jù)結(jié)構(gòu),其提供有關(guān)關(guān)聯(lián)的I/O設(shè)備116和其對(duì)信道子系統(tǒng)的附接的信息。子信道還提供有關(guān)I/O操作和涉及關(guān)聯(lián)的I/O設(shè)備116的其它功能的信息。子信道是信道子系 統(tǒng)114向CPU 104提供有關(guān)關(guān)聯(lián)的I/O設(shè)備116的信息的手段。連接到多個(gè)控制單元122或多個(gè)I/O設(shè)備116的信道128可以具有多個(gè)子信道,每個(gè)子信道專用于單個(gè)I/O設(shè)備116。在一個(gè)實(shí)施例中,信道子系統(tǒng)提供的子信道數(shù)目與去往關(guān)聯(lián)的I/O設(shè)備116的信道路徑122的數(shù)目無關(guān)。例如,可通過替代信道路徑122訪問的設(shè)備116仍然由單個(gè)子信道表示。每個(gè)控制單元118提供邏輯,以操作和控制一個(gè)或多個(gè)I/O設(shè)備116,并通過使用公共工具將每個(gè)I/O設(shè)備116的特性適配到信道128提供的鏈路接口。公共工具提供I/O操作的執(zhí)行、關(guān)于I/O設(shè)備116和控制單元118的狀態(tài)的指示、信道路徑122上的數(shù)據(jù)傳輸?shù)亩〞r(shí)的控制、以及某些層的I/O設(shè)備控制??刂茊卧?18可以被分別封裝(house),或者可以物理和邏輯地與1/0設(shè)備、信道子系統(tǒng)或CPU集成。1/0操作被描述為涉及主機(jī)計(jì)算機(jī)系統(tǒng)102與1/0設(shè)備116之間的數(shù)據(jù)傳輸?shù)娜魏尾僮?。如這里所描述的,I/o操作包括信道子系統(tǒng)114與設(shè)備116之間的通信(在一個(gè)實(shí)施例中,經(jīng)由控制單元118),在該通信中,單個(gè)命令(例如信道命令字或CCW)、包括多個(gè)命令的單個(gè)命令消息(例如,傳輸傳輸命令控制塊(TCCB)的傳輸命令信息)、或多個(gè)鏈化(chained)命令(例如,多個(gè)CCW)被從信道子系統(tǒng)114發(fā)送到設(shè)備。1/0操作也可以包括設(shè)備116和關(guān)聯(lián)的控制單元118響應(yīng)于接收和/或執(zhí)行命令或鏈化命令而產(chǎn)生的一個(gè)或多個(gè)響應(yīng)消息。在一個(gè)實(shí)施例中,通過執(zhí)行OS 110產(chǎn)生的、指定與設(shè)備116關(guān)聯(lián)的子信道的1/0指令而以設(shè)備116啟動(dòng)1/0操作。在主機(jī)系統(tǒng)中由CPU 104通過向信道的子信道發(fā)送參數(shù)而執(zhí)行這種指令,該信道的子信道請(qǐng)求信道子系統(tǒng)114通過某一信道128執(zhí)行1/0操作中的各種功能。例如,CPU 104通過將參數(shù)傳遞到目標(biāo)子信道而執(zhí)行“開始子信道(STARTSUBCHANNEL)”指令,該目標(biāo)子信道請(qǐng)求信道子系統(tǒng)114利用與該子信道關(guān)聯(lián)的1/0設(shè)備116執(zhí)行開始功能。信道子系統(tǒng)114通過使用子信道中的信息(該信息包括在“開始子信道”指令的執(zhí)行期間傳遞的信息)執(zhí)行開始功能,以找到設(shè)備116可訪問的信道路徑,并且在信道路徑已被選擇時(shí)執(zhí)行1/0操作。當(dāng)諸如“開始信道”指令的指令被CPU 104執(zhí)行時(shí),信道128開始執(zhí)行1/0操作。在一個(gè)實(shí)施例中,信道子系統(tǒng)114在光纖信道協(xié)議(諸如高性能FICON (HPF))之下操作,用于信道子系統(tǒng)114與設(shè)備116和/或控制單元118之間的通信。“Fibre Channel Single-ByteCommand Code Sets Mapping Protocol-4 (FC-SB-4) ”(2000 年 9 月 22 日,Tll 項(xiàng)目 2122-D,版本3. 00)中進(jìn)一步描述了 FICON和HPF及其階段,通過引用將其全文合并到這里。在一個(gè)實(shí)施例中,“開始子信道”指令的執(zhí)行將操作請(qǐng)求塊(ORB )的內(nèi)容傳遞給信道子系統(tǒng)114。ORB指定包括一個(gè)或多個(gè)命令字(例如,下面進(jìn)一步描述的信道命令字或傳輸命令字)的地址的信道程序。存在兩個(gè)模式的子信道操作。在一個(gè)實(shí)施例中,主機(jī)計(jì)算機(jī)系統(tǒng)102以命令模式操作,并指定信道命令字(CCW)形式的命令字。在另一實(shí)施例中,主機(jī)系統(tǒng)以傳輸模式操作,并指定傳輸命令字(TCW)形式的命令字。當(dāng)安裝了 FCX (光纖信道擴(kuò)展)工具,并且由于“開始子信道”指令的執(zhí)行而在子信道中設(shè)置了開始功能時(shí),子信道可以進(jìn)入傳輸模式,所述“開始子信道”指令指定TCW信道程序。子信道保持傳輸模式,直到在該子信道處重置(reset)開始功能為止。在所有其它時(shí)間,子信道在命令模式中。 在命令模式中,信道執(zhí)行CCW信道程序,其包括單個(gè)信道命令字或順序執(zhí)行的控制信道操作的特定序列的信道命令字的序列。控制單元通過由I/o設(shè)備解碼、接受和執(zhí)行CCW命令而執(zhí)行CCW I/O操作。布置用于序列執(zhí)行的一個(gè)或多個(gè)CCW形成CCW信道程序,并被分別作為一個(gè)或多個(gè)I/o操作而執(zhí)行。光纖信道擴(kuò)展(FCX)工具是規(guī)定傳輸模式信道程序的構(gòu)成的可選工具,所述傳輸模式信道程序由傳輸控制字(TCW)構(gòu)成,傳輸控制字指定傳輸命令控制塊(TCCB)和傳輸狀態(tài)塊(TSB)。TCCB包括傳輸命令區(qū)域(TCA),其包含一個(gè)或多個(gè)(例如高達(dá)30)個(gè)I/O命令的列表,該I/O命令為設(shè)備命令字(DCW)的形式。TCW及其TCCB可以指定讀或?qū)懖僮髦?。在一個(gè)實(shí)施例中,F(xiàn)CX雙向數(shù)據(jù)傳輸工具可以被安裝在支持傳輸模式操作的系統(tǒng)中,如果連接的設(shè)備116和控制設(shè)備118支持雙向數(shù)據(jù)傳輸,則其允許主機(jī)計(jì)算機(jī)系統(tǒng)102在單個(gè)傳輸模式I/O操作中指定輸入和輸出數(shù)據(jù)兩者的傳輸。當(dāng)控制單元118識(shí)別出雙向數(shù)據(jù)傳輸時(shí),TCff及其TCCB可以取決于設(shè)備而指定讀數(shù)據(jù)和寫數(shù)據(jù)傳輸兩者。在傳輸模式中,單個(gè)傳輸命令字(TCW)指定TCCB的存儲(chǔ)器中的位置(以及一個(gè)或多個(gè)數(shù)據(jù)區(qū)域的存儲(chǔ)器106中的位置),該TCCB在命令模式中被在單個(gè)消息而不是分離的單獨(dú)CCW中發(fā)送。控制單元118通過解碼、接受和執(zhí)行TCCB以及包含在其中的單獨(dú)DCW而執(zhí)行傳輸模式I/O操作。如果ORB指定TCW信道程序,則信道子系統(tǒng)114使用所指定的TCW中的信息,將TCCB傳輸?shù)娇刂茊卧?18。TCCB的內(nèi)容在TCC被傳輸?shù)娇刂茊卧?18之后被信道子系統(tǒng)114忽略,并且僅對(duì)控制單元118和關(guān)聯(lián)的I/O設(shè)備116有意義。在示例實(shí)施例中,控制單元118響應(yīng)于對(duì)信道程序的執(zhí)行而產(chǎn)生響應(yīng)消息。在有限的通信情形中,控制單元118也可以在不執(zhí)行信道程序的情況下產(chǎn)生響應(yīng)消息,例如,用以告知信道子系統(tǒng)114將不執(zhí)行信道程序??刂茊卧?18可以包括多個(gè)部件,以支持I/O通信適配器與I/O設(shè)備之間的通信,以及支持信道程序執(zhí)行。例如,在促進(jìn)通信和狀態(tài)監(jiān)視的一個(gè)或多個(gè)隊(duì)列、定時(shí)器和計(jì)數(shù)器之外,控制單元118還可以包括用以解析和處理消息的控制邏輯。圖2示出了主機(jī)存儲(chǔ)器中設(shè)置的示例控制塊,所述示例控制塊是在OS軟件執(zhí)行將“開始子信道”消息傳遞給信道子系統(tǒng)114中的I/O處理器(IOP)用于HPF I/O操作的指令(例如,“開始子信道”指令)之前通過軟件設(shè)置的。這些控制塊以及I/O處理系統(tǒng)100的上述組件中的一個(gè)或多個(gè)的架構(gòu)被進(jìn)一步描述在“IBM z/Architecture Principles ofOperation”(出版號(hào)SA22-7832-8,第9版,2010年8月)中,通過引用將其全部?jī)?nèi)容合并到這里。如圖2中所示,“開始子信道”消息140被傳遞到信道子系統(tǒng)114,信道子系統(tǒng)指定子信道142、TCW144以及傳輸狀態(tài)塊(TSB) 146。TCW包含TCCB 148、指定用于I/O操作的讀數(shù)據(jù)的位置150、和/或指定用于I/O操作的寫數(shù)據(jù)的位置152在主機(jī)存儲(chǔ)器中的地址。TCCB 148和位置150和152可以被直接尋址或者被例如通過傳輸間接數(shù)據(jù)地址列表(TIDAL) 153間接尋址。圖3示出了主機(jī)系統(tǒng)102、信道子系統(tǒng)114和控制單元118之間的通信鏈路的現(xiàn)有技術(shù)構(gòu)造的實(shí)施例。信道128經(jīng)由信道微處理器130與主機(jī)CPU通信,并被配置為在主機(jī)存儲(chǔ)器和本地信道存儲(chǔ)器132之間傳輸數(shù)據(jù),例如用于檢索(retrieve) TCCB 148或TCCB148的組件。網(wǎng)絡(luò)或鏈路接口(諸如(主機(jī)總線適配器(HBA)) 154經(jīng)由例如PCIe總線155 連接到信道128。HBA 154例如經(jīng)由控制單元HBA 156協(xié)調(diào)信道128與控制單元118之間的信息流。在此實(shí)施例中,HBA 154與信道128通信,并且僅對(duì)本地信道存儲(chǔ)器132有訪問權(quán)。因此,HBA 154與主機(jī)計(jì)算機(jī)和主機(jī)存儲(chǔ)器隔離。發(fā)送到HBA 154或從HBA 154發(fā)送的數(shù)據(jù)被存儲(chǔ)在本地信道存儲(chǔ)器132中,或從本地信道存儲(chǔ)器132中獲取。該隔離被用于主機(jī)存儲(chǔ)器與控制單元118之間傳輸?shù)臄?shù)據(jù)的錯(cuò)誤檢查。該隔離的性能代價(jià)為所有用戶數(shù)據(jù)流過該隔離硬件作為存儲(chǔ),并通過本地信道存儲(chǔ)器132轉(zhuǎn)發(fā)。圖4示出了允許隔離用于錯(cuò)誤檢查并同時(shí)允許HBA 154直接訪問主機(jī)存儲(chǔ)器而不需要在信道的本地存儲(chǔ)器132中存儲(chǔ)輸入或輸出數(shù)據(jù)的通信鏈路的實(shí)施例。與圖3的構(gòu)造不同,信道128包括微處理器以及數(shù)據(jù)路由器160。在一個(gè)實(shí)施例中,數(shù)據(jù)路由器160是高性能光纖信道數(shù)據(jù)路由器(HPF-DR),其支持FC-SB-4 (也被稱為HPF)協(xié)議。數(shù)據(jù)路由器60允許HBA 154直接訪問主機(jī)存儲(chǔ)器,而不需要將每個(gè)I/O操作所需要的輸入或輸出數(shù)據(jù)(即用戶數(shù)據(jù))存儲(chǔ)在本地信道存儲(chǔ)器132中。在一個(gè)實(shí)施例中,數(shù)據(jù)路由器160包括數(shù)據(jù)路由器硬件162和本地信道存儲(chǔ)器區(qū)域164,在本地信道存儲(chǔ)器區(qū)域164中設(shè)置了狀態(tài)信息用于數(shù)據(jù)路由器處理HBA數(shù)據(jù)傳輸請(qǐng)求。如這里所描述的,“HBA數(shù)據(jù)傳輸請(qǐng)求”包括從HBA 154向信道128的、請(qǐng)求從主機(jī)存儲(chǔ)器向控制單元118的輸出數(shù)據(jù)(即,寫或獲取數(shù)據(jù))的傳輸?shù)娜魏瓮ㄐ?例如,“HBA寫請(qǐng)求”或“HBA獲取請(qǐng)求”),或者請(qǐng)求從控制單元118向主機(jī)存儲(chǔ)器的輸入數(shù)據(jù)(即讀或存儲(chǔ)數(shù)據(jù))的傳輸?shù)娜魏瓮ㄐ?例如,“HBA讀請(qǐng)求”或“HBA存儲(chǔ)請(qǐng)求”)。此外,在一個(gè)實(shí)施例中,本地信道存儲(chǔ)器132包括區(qū)域166 (例如在4個(gè)旋轉(zhuǎn)線(gig line)之前),其被分配給HBA 154,并可由HBA 154訪問,HBA被用于處理本地信道請(qǐng)求和操作。在從主機(jī)接收I/O指令和ORB之后,且在執(zhí)行I/O操作和將I/O操作發(fā)送到HBA154之前,信道128設(shè)置一個(gè)或多個(gè)地址控制結(jié)構(gòu)以及關(guān)聯(lián)的地址控制字(ACW),其被用于向主機(jī)計(jì)算機(jī)102產(chǎn)生主機(jī)存儲(chǔ)器請(qǐng)求,以及允許HBA 154直接訪問主機(jī)存儲(chǔ)器。ACW和數(shù)據(jù)控制結(jié)構(gòu)還提供數(shù)據(jù)路由器160可以向或從HBA 154發(fā)送的HBA數(shù)據(jù)傳輸請(qǐng)求附加或存儲(chǔ)首標(biāo)的方法,并且還提供用于在不將輸入或輸出數(shù)據(jù)存儲(chǔ)在本地信道存儲(chǔ)器132中的情況下檢查HBA請(qǐng)求的錯(cuò)誤的方法。
例如,在開始子信道消息140被傳遞到信道128 (例如,經(jīng)由信道子系統(tǒng)114中的I/O處理器)之后,運(yùn)行固件的信道微處理器130接收開始子信道消息140,以從和向設(shè)備116以及向和從主機(jī)存儲(chǔ)器讀取和/或?qū)懭霐?shù)據(jù)。信道128使用開始子信道消息140中的信息來獲取子信道142。在子信道142中是信道固件使用來獲取TCW 144的主機(jī)存儲(chǔ)器地址。信道128使用來自開始子信道消息140的信息、子信道142和TCW 144,以設(shè)置各個(gè)ACW。每個(gè)ACW是數(shù)據(jù)路由器160使用來將HBA數(shù)據(jù)傳輸請(qǐng)求路由到TCW 144中指定的主機(jī)存儲(chǔ)器地址的控制塊??梢栽O(shè)置多個(gè)ACW,包括用于讀命令的一個(gè)ACW,其包括用于存儲(chǔ)輸入數(shù)據(jù)的至少一個(gè)主機(jī)存儲(chǔ)器地址;用于寫命令的一個(gè)ACW,其包括用于輸出數(shù)據(jù)的至少一個(gè)主機(jī)存儲(chǔ)器地址;用于組裝I/O命令消息(諸如包括TCCB 148的傳輸命令信息單元(IU))的ACW ;以及用于接收和存儲(chǔ)狀態(tài)信息的ACl與設(shè)置ACW —起,信道128根據(jù)TCW 144中的信息為每個(gè)ACW設(shè)置“地址控制結(jié)構(gòu)”,并在HBA 154被告知I/O操作之前將地址控制結(jié)構(gòu)通過本地信道存儲(chǔ)器132傳遞到HBA 154 (例如,經(jīng)由本地信道存儲(chǔ)器HBA的工作隊(duì)列)。多個(gè)地址控制結(jié)構(gòu)被傳遞到HBA 154,并被HBA 154用于向或從主機(jī)存儲(chǔ)器獲取或存儲(chǔ)信息。地址控制結(jié)構(gòu)允許HBA 154尋址多個(gè)地址空間,同時(shí)還允許數(shù)據(jù)路由器硬件檢查所存儲(chǔ)或獲取的數(shù)據(jù)的錯(cuò)誤。例如,一個(gè)地址控制結(jié)構(gòu)被用于獲取構(gòu)成命令消息(例如,傳輸命令I(lǐng)U)的信息,一個(gè)被用于在I/O操作完成時(shí)存儲(chǔ)來自控制單元響應(yīng)(例如,傳輸狀態(tài)IU)的結(jié)束狀態(tài),并且多個(gè)“數(shù)據(jù)地址控制結(jié)構(gòu)”可以被HBA 154用于傳輸輸入或輸出數(shù)據(jù)。例如,一個(gè)“讀地址控制結(jié)構(gòu)”被用于從設(shè)備116向主機(jī)存儲(chǔ)器傳輸?shù)拿總€(gè)8兆字節(jié)的讀數(shù)據(jù),并且一個(gè)“寫地址控制結(jié)構(gòu)”被用于從主機(jī)存儲(chǔ)器請(qǐng)求的每個(gè)8兆字節(jié)的數(shù)據(jù)。如果I/O操作僅在一個(gè)方向上傳輸數(shù)據(jù),則僅需要讀或?qū)懙刂房刂平Y(jié)構(gòu)。每個(gè)地址控制結(jié)構(gòu)包括向HBA 154發(fā)送的地址,其被HBA用于創(chuàng)建對(duì)信道128的請(qǐng)求。該地址被HBA 154看作單個(gè)地址,但該地址可用于引用主機(jī)存儲(chǔ)器中的多個(gè)地址空間。示例地址控制結(jié)構(gòu)各自包括64比特的PCIe地址、數(shù)據(jù)字節(jié)計(jì)數(shù)、方向比特和控制信息。例如,每個(gè)地址控制結(jié)構(gòu)包括要被地址控制結(jié)構(gòu)傳輸?shù)臄?shù)據(jù)量的數(shù)據(jù)字節(jié)計(jì)數(shù)以及控制比特,控制比特告知HBA 154數(shù)據(jù)要傳輸?shù)姆较蛞约靶枰嗌俚刂房刂平Y(jié)構(gòu)來傳輸該數(shù)據(jù)。
圖5示例了示例地址控制結(jié)構(gòu)170的地址字段172的實(shí)施例。在此示例中,地址字段172包括64比特的PCIe地址,但并不限于此。地址字段172包括控制(CTL)字段174(例如地址172的字節(jié)2),其指示是否將HBA請(qǐng)求路由到本地信道存儲(chǔ)器以被信道128內(nèi)部處理,或者是否經(jīng)由數(shù)據(jù)路由器160處理和路由HBA請(qǐng)求到主機(jī)存儲(chǔ)器。例如,如果地址字段172包括被設(shè)置為O的CTL字段174,則數(shù)據(jù)路由器160將該請(qǐng)求路由到本地信道存儲(chǔ)器區(qū)域166。然而,如果CTL字段174被設(shè)置為選擇的值(例如,0x02),則地址172被配置為允許HBA 154經(jīng)由數(shù)據(jù)路由器硬件尋址主機(jī)存儲(chǔ)器。在此結(jié)構(gòu)中,地址172(在圖5的行3中示出)被劃分為四個(gè)字段:ACW索引字段176 (例如,字節(jié)O和1)、CTL字段174 (例如,字節(jié)2)、確認(rèn)字段178 (例如,字節(jié)3和4)、以及偏移(Offset)字段180 (例如,字節(jié)5_7)。在一個(gè)實(shí)施例中,ACW索引字段176是對(duì)本地信道存儲(chǔ)器區(qū)域164中的ACW的連續(xù)(contiguous)塊的索引,并且被數(shù)據(jù)路由器硬件使用來定位用于關(guān)聯(lián)的HBA請(qǐng)求的ACW以及尋址控制結(jié)構(gòu)。對(duì)于本地信道存儲(chǔ)器區(qū)域164中定義的每個(gè)ACW,確認(rèn)字段178 (例如,16比特字段)被設(shè)置為唯一值。
在信道128設(shè)置了用于I/O操作的ACW和地址控制結(jié)構(gòu)170之后,信道128告知HBA 154等待處理的I/O操作,并發(fā)送執(zhí)行該I/O操作所需要的對(duì)應(yīng)地址控制結(jié)構(gòu)170。圖6示出了在I/O操作期間在信道128與控制單元118之間傳送的各種消息。在信道微處理器130已經(jīng)利用需要的信息設(shè)置了數(shù)據(jù)路由器160之后,HBA 154獲取并存儲(chǔ)各種信息單元(IU)。傳輸命令I(lǐng)U 182包括TCCB 148和首標(biāo)信息,并被在信道路徑122上發(fā)送到控制單元118。在I/O操作的執(zhí)行期間,包括讀傳輸數(shù)據(jù)IU 184和/或?qū)憘鬏敂?shù)據(jù)IU 186的數(shù)據(jù)IU被傳送,以發(fā)送輸入和/或輸出數(shù)據(jù)。在一個(gè)實(shí)施例中,每個(gè)數(shù)據(jù)UI,取決于其尺寸,可以被作為一個(gè)或多個(gè)幀188而發(fā)送。幀188是在鏈路或信道路徑上在鏈路封包(wrapper)內(nèi)傳送的數(shù)據(jù)的單元或分組,并且具有取決于鏈路架構(gòu)的最大尺寸。在I/O操作結(jié)束時(shí),從控制單元118發(fā)送指示操作的傳輸狀態(tài)(例如,完成或異常中斷)的傳輸狀態(tài)IU 190。通常,分別在鏈路上利用一個(gè)幀傳送傳輸命令I(lǐng)U 182和傳輸狀態(tài)IU 190。在一個(gè)實(shí)施例中,IU的每個(gè)幀需要來自HBA 154的至少一個(gè)HBA請(qǐng)求(例如,PCIe請(qǐng)求)。在一個(gè)實(shí)施例中,IU包括一個(gè)或多個(gè)數(shù)據(jù)校驗(yàn)字192 (例如CRC),其位于IU的末 端或靠近末端。例如,用于傳輸命令I(lǐng)U 182的數(shù)據(jù)校驗(yàn)字192是從IU的末端起的I或2個(gè)字。寫傳輸數(shù)據(jù)IU 182可以具有多個(gè)中間數(shù)據(jù)校驗(yàn)字192,每個(gè)檢查寫傳輸數(shù)據(jù)IU 182的一部分。傳輸狀態(tài)IU 190具有用于IU首標(biāo)的數(shù)據(jù)校驗(yàn)字192和用于傳輸狀態(tài)的數(shù)據(jù)校驗(yàn)字192。圖7、8和9示出了執(zhí)行I/O操作的方法200的實(shí)施例。該方法包括一個(gè)或多個(gè)階段(stage)201-206。在一個(gè)實(shí)施例中,該方法包括以所描述的順序?qū)λ须A段201-206的執(zhí)行。然而,可以省略某些階段,可以添加階段,或者可以改變階段的順序。在第一階段201中,信道128從主機(jī)CPU 104接收指令消息140和0RB,獲取子信道142,并接著獲取TCW 144和其它需要的數(shù)據(jù)。在第二階段202中,信道128或數(shù)據(jù)路由器160產(chǎn)生地址控制結(jié)構(gòu)170和對(duì)應(yīng)的ACff 210 (圖8中所示)。示例控制結(jié)構(gòu)170和ACW 210 (將在下面參照?qǐng)D10-15對(duì)其進(jìn)一步說明)包括傳輸命令A(yù)CW和對(duì)應(yīng)于傳輸命令I(lǐng)U 182的傳輸命令地址控制結(jié)構(gòu),傳輸讀數(shù)據(jù)ACW和對(duì)應(yīng)于一個(gè)或多個(gè)讀傳輸數(shù)據(jù)IU 184或幀的一個(gè)或多個(gè)傳輸讀數(shù)據(jù)地址控制結(jié)構(gòu),傳輸寫數(shù)據(jù)ACW和對(duì)應(yīng)于一個(gè)或多個(gè)寫傳輸數(shù)據(jù)IU 186或幀的一個(gè)或多個(gè)傳輸寫數(shù)據(jù)地址控制結(jié)構(gòu),以及傳輸狀態(tài)ACW和對(duì)應(yīng)于傳輸狀態(tài)IU 190的傳輸結(jié)束狀態(tài)地址控制結(jié)構(gòu)。數(shù)據(jù)路由器160將地址控制結(jié)構(gòu)170傳送到HBA 154。ACW210的列表212被組裝在本地信道存儲(chǔ)器區(qū)域164中。圖8示出了包括存儲(chǔ)在本地地址存儲(chǔ)器區(qū)域164中的ACW 210的數(shù)據(jù)路由器160的構(gòu)造。在一個(gè)實(shí)施例中,存儲(chǔ)器區(qū)域164是位于本地信道存儲(chǔ)器132中選擇的邊界(例如I太字節(jié)(terabyte)邊界)上方的HBA地址空間,所述本地信道存儲(chǔ)器132保存用于尋址主機(jī)存儲(chǔ)器的ACW 210的列表212。在一個(gè)實(shí)施例中,列表212是連續(xù)ACW的列表。ACW源點(diǎn)寄存器214是ACW 210的列表212的起始地址。來自數(shù)據(jù)控制結(jié)構(gòu)中的ACW索引字段176的ACW索引176被加到ACW源點(diǎn)214上,以產(chǎn)生本地地址,對(duì)應(yīng)ACW位于本地信道存儲(chǔ)器區(qū)域164中所述本地地址處。ACW限制寄存器216是ACW210的列表212的結(jié)束地址。當(dāng)ACW索引176被加到ACW源點(diǎn)上以獲取ACW時(shí),該結(jié)果不能大于ACW限制減去ACW大小。在第三階段203中,在HBA 154處組裝傳輸命令I(lǐng)U 182,用于向控制單元118傳送。HBA 154使用傳輸命令地址控制結(jié)構(gòu),通過將HBA獲取請(qǐng)求發(fā)送到數(shù)據(jù)路由器160而啟動(dòng)從主機(jī)存儲(chǔ)器獲取TCCB 148。在一個(gè)實(shí)施例中,向或從HBA發(fā)送的請(qǐng)求由高速PCI(PCIe)協(xié)議控制,不過也可以使用其它協(xié)議。在第四階段204中,HBA獲取請(qǐng)求到達(dá)數(shù)據(jù)路由器160,其由接收邏輯220接收,接收邏輯220將從HBA 154發(fā)送的比特轉(zhuǎn)換為數(shù)據(jù)分組,并且路由邏輯222基于每個(gè)分組中的HBA地址172而路由該HBA獲取請(qǐng)求。例如,具有指定本地存儲(chǔ)器區(qū)域(例如,低于24°)的地址的所有HBA請(qǐng)求被路由到信道微處理器224和邏輯信道存儲(chǔ)器166,并被內(nèi)部處理為本地信道存儲(chǔ)器請(qǐng)求。在一個(gè)實(shí)施例中,每當(dāng)PCIe總線是64比特尋址模式并且C TL字段174是0x00時(shí),或者當(dāng)PCIe操作是32比特模式時(shí),BHA請(qǐng)求被路由到本地信道存儲(chǔ)器。這允許HBA 154直接訪問HBA 154具有訪問權(quán)的本地信道存儲(chǔ)器區(qū)域。HBA 154未被給予對(duì)其中保存了 ACW 210的本地信道存儲(chǔ)器區(qū)域164的直接訪問權(quán)。具有存儲(chǔ)器區(qū)域164中的地址(例如,大于24°)的所有請(qǐng)求被路由到獲取陣列隊(duì)列226或者存儲(chǔ)陣列隊(duì)列228,以被數(shù)據(jù)路由器160處理。從接收邏輯220接收的整個(gè)數(shù)據(jù)分組(首標(biāo)和數(shù)據(jù))被保存為這兩個(gè)陣列任一中的條目。獲取陣列隊(duì)列226和存儲(chǔ)陣列隊(duì)列228分別位于數(shù)據(jù)路由器獲取硬件230和數(shù)據(jù)路由器存儲(chǔ)硬件232中,數(shù)據(jù)路由器獲取硬件230和數(shù)據(jù)路由器存儲(chǔ)硬件232將來自這些隊(duì)列的HBA請(qǐng)求處理為主機(jī)存儲(chǔ)器請(qǐng)求,主機(jī)存儲(chǔ)器請(qǐng)求被傳輸?shù)街鳈C(jī)存儲(chǔ)器。在第五階段205中,處理邏輯234對(duì)邏輯信道存儲(chǔ)器164中的信道請(qǐng)求和隊(duì)列226和228中的HBA請(qǐng)求隊(duì)列化和優(yōu)先排序,并將請(qǐng)求分組處理為主機(jī)存儲(chǔ)器分組。處理邏輯234采用HBA請(qǐng)求分組中的(來自傳輸命令地址數(shù)據(jù)控制結(jié)構(gòu)的)HBA地址的ACW索引字段176,對(duì)以ACW源點(diǎn)寄存器214為起點(diǎn)的ACW的設(shè)置的ACW 210的列表進(jìn)行索引,以獲取對(duì)應(yīng)于HBA地址170的ACW。在此示例中,期望的ACW是傳輸命令A(yù)CW。例如,處理邏輯234取得ACW索引值,并將其加到ACW源點(diǎn)寄存器214上,以產(chǎn)生處理邏輯234獲取ACW的本地信道存儲(chǔ)器地址。基于ACW中的存儲(chǔ)器地址字段,處理邏輯234產(chǎn)生主機(jī)存儲(chǔ)器請(qǐng)求,其被從傳送邏輯236發(fā)送到主機(jī)存儲(chǔ)器(經(jīng)由例如主機(jī)存儲(chǔ)器接口 238),指示從其傳輸數(shù)據(jù)或向其存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器地址。來自ACW的附加信息(包括區(qū)(Zone) ID、密鑰(Key)值和數(shù)據(jù)長(zhǎng)度)也可以被用于產(chǎn)生主機(jī)存儲(chǔ)器請(qǐng)求。在此實(shí)施例中,ACW的存儲(chǔ)器地址字段中的地址是TCCB 148的位置或多個(gè)位置。如果在ACW中未使能間接數(shù)據(jù)尋址,則主機(jī)存儲(chǔ)器地址是整個(gè)TCCB 148的地址。如果在ACff中使能了間接數(shù)據(jù)尋址,則數(shù)據(jù)路由器160從主機(jī)存儲(chǔ)器地址獲取傳輸間接數(shù)據(jù)地址字(TIDAW),并接著使用TIDAW中的地址作為主機(jī)存儲(chǔ)器地址。在一個(gè)實(shí)施例中,如果ACW中的值指示正在使用間接數(shù)據(jù)地址(例如圖10中所示的HPF-DR控制258的比特17是0),則指定TIDAW。TIDAW包括地址和計(jì)數(shù)兩者。TIDAW中的TIDAW數(shù)據(jù)地址字段被用于為TIDAW中指定的字節(jié)數(shù)的數(shù)據(jù)而尋址主機(jī)存儲(chǔ)器位置。示例TIDAW包括四個(gè)字,包括具有標(biāo)記字段的第一字、指定要利用該TIDAW傳輸?shù)淖止?jié)數(shù)的計(jì)數(shù)字段、TIDAW數(shù)據(jù)地址高字和TIDAW數(shù)據(jù)地址低字。以下標(biāo)記可以被包括在標(biāo)記字段中比特O—最后的TIDAW :此標(biāo)記比特設(shè)置為I告知數(shù)據(jù)路由器硬件這是該TIDAL中可用于此操作的最后一個(gè)TIDAW。如果當(dāng)前TIDAW的標(biāo)記比特O‘最后TIDAW’不是活動(dòng)的,則當(dāng)當(dāng)前TIDAW中的字節(jié)計(jì)數(shù)轉(zhuǎn)變?yōu)镺并且ACW的工作計(jì)數(shù)未轉(zhuǎn)換為O時(shí),數(shù)據(jù)路由器硬件將使用TIDAL中的下一 TIDAW來尋址主機(jī)存儲(chǔ)器而繼續(xù)數(shù)據(jù)傳輸。比特I一讀取跳過該標(biāo)記比特設(shè)置為I告知數(shù)據(jù)路由器硬件根據(jù)(per)該TIDAW的字節(jié)計(jì)數(shù)字段丟棄正從設(shè)備接收的數(shù)據(jù)。然而,當(dāng)丟棄數(shù)據(jù)時(shí)繼續(xù)計(jì)算數(shù)據(jù)校驗(yàn)字。如果I/o操作是寫,則忽略此標(biāo)記比特。比特2—數(shù)據(jù)傳輸中斷該比特使得數(shù)據(jù)路由器硬件在HPF-DR響應(yīng)字254中設(shè)置TIDAff格式校驗(yàn)比特10,并且當(dāng)HPF-DR硬件嘗試使用此TIDAW時(shí)結(jié)束I/O操作。比特3—T-TIC :該標(biāo)記比特設(shè)置為I告知數(shù)據(jù)路由器硬件此TIDAW中的地址不被用于數(shù)據(jù),而是用于新TIDAL的起始的主機(jī)存儲(chǔ)器地址,該新TIDAL必須被從主機(jī)存儲(chǔ)器中獲取,以檢索用于此I/O操作的下一 TIDAW ;以及 比特4一插入填充(PAD) &&數(shù)據(jù)校驗(yàn)字該標(biāo)記比特設(shè)置為I告知數(shù)據(jù)路由器硬件插入填充字節(jié)直到下一字邊界(如果不在字邊界上),并接著插入計(jì)算的數(shù)據(jù)校驗(yàn)字的當(dāng)前值。在此TIDAW條目指定的數(shù)據(jù)字節(jié)計(jì)數(shù)已被傳送并且標(biāo)記比特O (最后的TIDAW)不被設(shè)置為I之后,插入填充字節(jié)(如果存在)和數(shù)據(jù)校驗(yàn)字。當(dāng)前ACW數(shù)據(jù)校驗(yàn)字接著被再做種子(reseed),回到ACW中的數(shù)據(jù)校驗(yàn)字的種子。在第六階段206中,數(shù)據(jù)路由器160經(jīng)由主機(jī)存儲(chǔ)器接收邏輯240接收主機(jī)存儲(chǔ)器響應(yīng),在此實(shí)施例中其包括TCCB 148。在其它實(shí)施例中,取決于主機(jī)存儲(chǔ)器請(qǐng)求,主機(jī)存儲(chǔ)器響應(yīng)可以包括用于寫命令的輸出數(shù)據(jù)或用于讀命令的狀態(tài)消息。路由邏輯242將主機(jī)存儲(chǔ)器響應(yīng)路由到數(shù)據(jù)緩沖器和邏輯246。數(shù)據(jù)緩沖器和邏輯246將來自傳輸命令A(yù)CW(SP來自IU首標(biāo)字段)的IU首標(biāo)信息與TCCB 148合并在響應(yīng)分組中,可以經(jīng)由與HBA 154接口的外送(outbound)邏輯244將該響應(yīng)分組返回到HBA 154。對(duì)于包括多個(gè)輸出數(shù)據(jù)請(qǐng)求的I/O操作,數(shù)據(jù)緩沖器246可以累積來自多個(gè)請(qǐng)求的數(shù)據(jù),以產(chǎn)生返回到HBA 154的完整響應(yīng)分組。如上所述,在I/O操作的執(zhí)行期間,可以在HBA 154和控制單元118之間傳送傳輸數(shù)據(jù)IU。為了執(zhí)行寫命令,HBA 154請(qǐng)求用以組裝寫傳輸數(shù)據(jù)IU186的信息,包括來自主機(jī)存儲(chǔ)器(其地址由寫ACW的存儲(chǔ)器地址字段指定)的輸出數(shù)據(jù)以及從寫ACW檢索的IU首標(biāo)信息。為了執(zhí)行讀命令,HBA將來自讀傳輸數(shù)據(jù)IU 184的輸入數(shù)據(jù)存儲(chǔ)到讀ACW的存儲(chǔ)器地址字段中指定的主機(jī)存儲(chǔ)器地址中,并將來自讀傳輸數(shù)據(jù)IU 184的IU首標(biāo)信息存儲(chǔ)到讀 ACff0例如,HBA 154接收讀傳輸數(shù)據(jù)IU 184并產(chǎn)生被發(fā)送到信道128的一個(gè)或多個(gè)HBA讀請(qǐng)求,以將輸入數(shù)據(jù)存儲(chǔ)到主機(jī)存儲(chǔ)器中。每個(gè)讀請(qǐng)求包括來自對(duì)應(yīng)讀數(shù)據(jù)地址控制結(jié)構(gòu)的地址字段172。HBA讀請(qǐng)求由接收邏輯220接收,并且路由邏輯222將HBA讀請(qǐng)求路由到存儲(chǔ)陣列隊(duì)列228。地址字段172的ACW索引字段176被用于索引上述的ACW 201的列表,并獲取讀ACW。讀傳輸數(shù)據(jù)IU首標(biāo)信息被存儲(chǔ)在讀數(shù)據(jù)ACW中,并且主機(jī)存儲(chǔ)器讀請(qǐng)求被發(fā)送到主機(jī)存儲(chǔ)器,以請(qǐng)求輸入數(shù)據(jù)在讀數(shù)據(jù)ACW指定的地址中存儲(chǔ)。在一個(gè)實(shí)施例中,可能花費(fèi)多個(gè)主機(jī)存儲(chǔ)器讀請(qǐng)求來存儲(chǔ)一個(gè)HBA讀請(qǐng)求。例如,如果每個(gè)主機(jī)存儲(chǔ)器讀請(qǐng)求是256字節(jié),并HBA讀請(qǐng)求是2048字節(jié),則花費(fèi)8個(gè)主機(jī)存儲(chǔ)器讀請(qǐng)求來存儲(chǔ)一個(gè)HBA讀請(qǐng)求。在此實(shí)施例中,將主機(jī)存儲(chǔ)器讀響應(yīng)從主機(jī)存儲(chǔ)器接口238返回到數(shù)據(jù)路由器硬件,數(shù)據(jù)路由器硬件將每個(gè)響應(yīng)與所進(jìn)行的每個(gè)讀請(qǐng)求相關(guān)。
在另一實(shí)施例中,HBA 154可以向控制單元118發(fā)送寫傳輸數(shù)據(jù)IU 186。在一個(gè)實(shí)施例中,除非傳輸就緒(Transport Ready)失效(disabled),否則信道128需要在發(fā)送每個(gè)寫傳輸數(shù)據(jù)IU 186之前從控制單元118發(fā)送傳輸就緒(ransfer-ready) IU??刂茊卧?18可以通過發(fā)送附加的傳輸就緒IU而請(qǐng)求附加的數(shù)據(jù),直到其已經(jīng)請(qǐng)求了 TCCB 148指定的所有數(shù)據(jù)為止。如果傳輸就緒失效(其允許HBA 154在設(shè)備116不要求數(shù)據(jù)IU的情況下向設(shè)備116發(fā)送數(shù)據(jù)的IU),則HBA 154啟動(dòng)對(duì)數(shù)據(jù)路由器160的HBA寫請(qǐng)求。HBA 154使用來自每個(gè)寫數(shù)據(jù)地址控制結(jié)構(gòu)的地址字段172來發(fā)送每個(gè)HBA寫請(qǐng)求,以啟動(dòng)從主機(jī)存儲(chǔ)器獲取數(shù)據(jù)。由路由邏輯222接收每個(gè)HBA寫請(qǐng)求,路由邏輯222將每個(gè)HBA寫請(qǐng)求路由到獲取陣列隊(duì)列226中。來自地址字段172的ACW索引字段被用于從本地信道存儲(chǔ)器區(qū)域164獲取寫數(shù)據(jù)ACW。一個(gè)或多個(gè)主機(jī)存儲(chǔ)器寫請(qǐng)求被用于請(qǐng)求輸出數(shù)據(jù),從主機(jī)存儲(chǔ)器寫響應(yīng)中的主機(jī)存儲(chǔ)器接收該輸出數(shù)據(jù),并且通過到HBA 154的路由邏輯242和數(shù)據(jù)緩沖器246 將該輸出數(shù)據(jù)發(fā)送到HBA 154。如果需要多個(gè)主機(jī)存儲(chǔ)器寫請(qǐng)求來處理一個(gè)HBA寫請(qǐng)求,則參照上述讀請(qǐng)求所描述地處理每個(gè)主機(jī)存儲(chǔ)器寫請(qǐng)求。 在一個(gè)實(shí)施例中,當(dāng)設(shè)備116通過向HBA 154發(fā)送傳輸狀態(tài)IU 190而結(jié)束I/O操作時(shí),HBA 154使用傳輸結(jié)束狀態(tài)地址控制結(jié)構(gòu)來發(fā)送HBA存儲(chǔ)請(qǐng)求,以啟動(dòng)將結(jié)束狀態(tài)存儲(chǔ)到主機(jī)存儲(chǔ)器中。數(shù)據(jù)路由器160使用HBA存儲(chǔ)請(qǐng)求獲取傳輸狀態(tài)ACW,并將結(jié)束狀態(tài)首標(biāo)存儲(chǔ)在狀態(tài)ACW的IU首標(biāo)區(qū)域中,并將主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求發(fā)送到主機(jī)存儲(chǔ)器,以將擴(kuò)展的狀態(tài)存儲(chǔ)在狀態(tài)ACW中指定的地址中。在HBA 154已經(jīng)完成了 I/O操作之后,HBA 154產(chǎn)生具有完成狀態(tài)的HBA請(qǐng)求,其被路由和存儲(chǔ)在本地信道存儲(chǔ)器132中,并且I/O操作的控制被返回到信道128的固件。當(dāng)HBA將I/O操作返回到信道微處理器固件時(shí),在獲取陣列隊(duì)列中沒有獲取請(qǐng)求在排隊(duì),因?yàn)楫?dāng)被請(qǐng)求的數(shù)據(jù)返回到HBA 154時(shí),HBA 154知道它們何時(shí)已被完成。然而,在存儲(chǔ)陣列隊(duì)列228中可能還存在一個(gè)或多個(gè)存儲(chǔ)器存儲(chǔ)請(qǐng)求在排隊(duì),因?yàn)镠BA 154未接收到HBA存儲(chǔ)請(qǐng)求的完成響應(yīng)。因此,在一個(gè)實(shí)施例中,當(dāng)HBA 154將I/O操作返回到信道微處理器(例如在固件I/O完成隊(duì)列上)時(shí),微處理器固件可以執(zhí)行對(duì)傳輸讀ACW和傳輸狀態(tài)ACW中的比特的以下測(cè)試對(duì)于傳輸狀態(tài)ACW,如果ACW還未在狀態(tài)2上(下面將進(jìn)一步描述ACW狀態(tài)字段),則固件等待ACW狀態(tài)字段移動(dòng)到2。當(dāng)固件看到此ACW在狀態(tài)2上時(shí),則固件檢查IU首標(biāo)字段,以確定ACW正與哪個(gè)設(shè)備一起工作。現(xiàn)在,在檢查或改變分配到I/O操作的四個(gè)ACW中的任何一個(gè)中的任何字段之前,通過觀察每個(gè)ACW中的“活動(dòng)請(qǐng)求計(jì)數(shù)=O”的比特被設(shè)置為1,固件等待用于讀ACW和狀態(tài)ACW兩者的活動(dòng)請(qǐng)求計(jì)數(shù)遞減到O。一旦對(duì)于兩個(gè)ACW,活動(dòng)請(qǐng)求計(jì)數(shù)都是0,則固件檢查傳輸狀態(tài)ACW中的傳輸狀態(tài)IU首標(biāo),并將結(jié)束I/O狀態(tài)存儲(chǔ)在子信道142中。固件接著對(duì)信道子系統(tǒng)114的I/O處理器(IOP)產(chǎn)生中斷,告知IOP已經(jīng)完成了用于子信道的I/O操作。IOP接著產(chǎn)生回到OS 110的中斷,告知OS 110已經(jīng)完成了 I/O操作。圖10示出了地址控制字(ACW) 210的實(shí)施例,ACff 210由固件設(shè)置在本地信道存儲(chǔ)器中,并被數(shù)據(jù)路由器160用于在HBA存儲(chǔ)器請(qǐng)求與主機(jī)存儲(chǔ)器請(qǐng)求之間轉(zhuǎn)換。在每個(gè)主機(jī)存儲(chǔ)器請(qǐng)求被處理之后,數(shù)據(jù)路由器硬件更新ACW 210中的信息,以便準(zhǔn)備好用于使用此ACW 210的下一 HBA請(qǐng)求。示例ACW 210包括以下字段。
ACW狀態(tài)字段250 (例如,字O字節(jié)O)提供ACW的狀態(tài)。例如,當(dāng)ACW被設(shè)置用于I/o操作時(shí),比特O (ACW的有效比特)被固件設(shè)置為1,指示ACW是有效ACW。狀態(tài)被定義在例如比特4-7中,并包括以下代碼O—空閑/讀設(shè)置。當(dāng)ACW已被設(shè)置用于接收數(shù)據(jù)時(shí),固件設(shè)置此狀態(tài);I一寫設(shè)置。當(dāng)ACW已被設(shè)置用于傳送數(shù)據(jù)時(shí),固件設(shè)置此狀態(tài);2—ACff IU首標(biāo)區(qū)域安全。當(dāng)已向或從HBA傳輸了整個(gè)IU首標(biāo)用于獲取或存儲(chǔ)時(shí),數(shù)據(jù)路由器硬件將ACW狀態(tài)從狀態(tài)0、1或3改變?yōu)闋顟B(tài)2。當(dāng)從鏈路接收到數(shù)據(jù)時(shí),在ACff狀態(tài)250被設(shè)置為狀態(tài)2之前,整個(gè)IU首標(biāo)必須已被接收并存儲(chǔ)在ACW首標(biāo)區(qū)域中。一旦ACW狀態(tài)被設(shè)置為2,數(shù)據(jù)路由器硬件不訪問ACW中的IU首標(biāo)區(qū)域。一旦ACW被設(shè)置為狀態(tài)2,則其保持在狀態(tài)2中,直到固件改變它為止。如果不存在首標(biāo)數(shù)據(jù)用于IU,則固件可以將ACW狀態(tài)設(shè)置為狀態(tài)2。3—IU首標(biāo)在進(jìn)行中。當(dāng)PCIe請(qǐng)求僅傳輸了 IU首標(biāo)的一部分時(shí),硬件從狀態(tài)O或 I設(shè)置狀態(tài)3。ACW狀態(tài)保持在狀態(tài)3中,直到后續(xù)PCIe請(qǐng)求完成了整個(gè)IU首標(biāo)的傳輸為止,然后ACW狀態(tài)被設(shè)置為2。如果當(dāng)將主機(jī)存儲(chǔ)器請(qǐng)求轉(zhuǎn)發(fā)給主機(jī)存儲(chǔ)器時(shí)遇到異常(exception),則數(shù)據(jù)路由器可以設(shè)置讀丟棄或拋棄比特(例如ACW狀態(tài)250的比特2)。對(duì)于HBA存儲(chǔ)請(qǐng)求,設(shè)置讀丟棄比特,使得將數(shù)據(jù)存儲(chǔ)到主機(jī)存儲(chǔ)器中的所有HBA請(qǐng)求都將導(dǎo)致數(shù)據(jù)被丟棄,并且也不被累積在數(shù)據(jù)校驗(yàn)字保存區(qū)域280中。設(shè)置該比特的條件包括在用于該ACW的主機(jī)存儲(chǔ)器的存儲(chǔ)上接收到的任何異常、以及該ACW的HPF-DR響應(yīng)字254的比特8 (“丟失的PCIe請(qǐng)求”)被設(shè)置為I的任何時(shí)候。對(duì)于HBA獲取請(qǐng)求,可以設(shè)置寫丟棄比特(例如ACW狀態(tài)250,比特3),使得對(duì)于此ACW的任何HBA獲取請(qǐng)求將接收到PCIe的‘事務(wù)層協(xié)議’(TLP)完成,其中完成狀態(tài)被設(shè)置為完成器異常中斷(Completer Abort)。設(shè)置此比特的條件是在用于此ACW的主機(jī)存儲(chǔ)器獲取請(qǐng)求上接收到任何異常;當(dāng)用于此ACW的固件請(qǐng)求時(shí),由全局獲取靜默硬件進(jìn)行設(shè)置。在一個(gè)實(shí)施例中,當(dāng)處理進(jìn)入的HBA請(qǐng)求并設(shè)置固件讀丟棄比特252時(shí),數(shù)據(jù)路由器硬件將讀丟棄比特設(shè)置為1,并將丟失PCIe請(qǐng)求比特設(shè)置為I。數(shù)據(jù)路由器硬件接著采取的動(dòng)作列在8比特之下的HPF-DR響應(yīng)字(下面描述)中。固件使用此比特來恢復(fù)有HBA存儲(chǔ)請(qǐng)求困在存儲(chǔ)陣列隊(duì)列228中的ACW,該HBA存儲(chǔ)請(qǐng)求由于對(duì)于此ACW還未接收到在前的BHA請(qǐng)求而不能被處理。HPF-DR響應(yīng)字字段254 (例如,字O字節(jié)I、2、3)包括HPF-DR響應(yīng)字,其是數(shù)據(jù)路由器硬件在I/o操作完成時(shí)提供給固件的ACW結(jié)束狀態(tài)信息。結(jié)束狀態(tài)的示例及其對(duì)應(yīng)的示例比特包括比特8—丟失HBA請(qǐng)求當(dāng)針對(duì)此ACW的“延遲的”HBA存儲(chǔ)事務(wù)超過配置的“生存時(shí)間(Time To Live)”時(shí),可以將該比特設(shè)置為I。如果由于順序錯(cuò)亂的情況,數(shù)據(jù)路由器硬件之前已經(jīng)對(duì)此HBA請(qǐng)求重新進(jìn)行了排隊(duì),并且請(qǐng)求已經(jīng)在存儲(chǔ)陣列隊(duì)列228中等待丟失的HBA請(qǐng)求被接收的時(shí)間超過配置的生存時(shí)間,則發(fā)生這種情況。當(dāng)進(jìn)入的HBA (讀)請(qǐng)求被處理并且ACW固件讀丟棄比特被設(shè)置為I時(shí)也可以將該比特設(shè)置為I。丟失HBA請(qǐng)求條件時(shí)執(zhí)行的動(dòng)作包括在ACW中存儲(chǔ)IU首標(biāo)(如果存在),丟棄IU數(shù)據(jù)(如果存在)而不將其累積在數(shù)據(jù)校驗(yàn)字中,以及將ACW狀態(tài)字段250的讀丟棄比特2設(shè)置為I。在執(zhí)行了這些動(dòng)作之后,此ACW的有效請(qǐng)求計(jì)數(shù)遞減I。比特9一超過存儲(chǔ)器請(qǐng)求閾值滿足一個(gè)HBA請(qǐng)求所需要的主機(jī)存儲(chǔ)器請(qǐng)求的數(shù)量超過設(shè)置的存儲(chǔ)器請(qǐng)求閾值。比特10 — TIDAL格式檢查TIDA列表地址或TIDAW不符合協(xié)議格式規(guī)則。失敗的TIDAff的地址被寫入到此ACW的失敗zSeries存儲(chǔ)器地址字段中。比特11 一工作計(jì)數(shù)上的溢出當(dāng)數(shù)據(jù)路 由器正在從主機(jī)存儲(chǔ)器獲取數(shù)據(jù)或者將數(shù)據(jù)存儲(chǔ)到主機(jī)存儲(chǔ)器中,并且嘗試向或從PCIe總線傳輸?shù)臄?shù)據(jù)、填充字節(jié)和數(shù)據(jù)校驗(yàn)字的總字節(jié)計(jì)數(shù)超過ACW工作計(jì)數(shù)所指定的數(shù)據(jù)的字節(jié)計(jì)數(shù)時(shí)。比特12—從HBA接收復(fù)制的HBA獲取請(qǐng)求或無效的HBA存儲(chǔ)請(qǐng)求復(fù)制的HBA獲取請(qǐng)求將不被處理,而是將向HBA返回完成器(completer)異常中斷的完成TLP。寫丟棄比特(ACW狀態(tài)字節(jié)比特3)被設(shè)置為I ;或者對(duì)于無效的HBA存儲(chǔ)請(qǐng)求,該比特和讀丟棄(ACW狀態(tài)字節(jié)比特2)被設(shè)置為1,并且針對(duì)此ACW的所有后續(xù)HBA存儲(chǔ)請(qǐng)求都被丟棄。比特13—活動(dòng)請(qǐng)求計(jì)數(shù)=O :每當(dāng)數(shù)據(jù)路由器硬件更新ACW中的ACW活動(dòng)請(qǐng)求計(jì)數(shù)時(shí),其將此比特設(shè)置為等于下面定義的活動(dòng)請(qǐng)求計(jì)數(shù)字段290的所有比特的異或(N0R)。比特14一ACW封包當(dāng)24比特的“下一預(yù)期(Next Expected)的16兆字節(jié)偏移”字段從OxFFFFFF封包到0x000000時(shí),將該比特設(shè)置為I。此ACW封包比特設(shè)置為I阻止數(shù)據(jù)路由器硬件將用于此ACW的0x000000到OxOOOOIF的16兆字節(jié)偏移值解析為IU首標(biāo)信肩、O比特15—TIDA獲取主機(jī)存儲(chǔ)器錯(cuò)誤當(dāng)所有以下陳述都成立時(shí)設(shè)置該比特響應(yīng)于針對(duì)TIDA列表中的TIDAW條目的主機(jī)存儲(chǔ)器獲取請(qǐng)求,接收到異?;驂?bad)硬件響應(yīng);從該不可用的TIDAW所需要的HBA接收到對(duì)數(shù)據(jù)的HBA請(qǐng)求;以及對(duì)于此I/O操作之前未檢測(cè)到錯(cuò)誤。從接收邏輯240接收的錯(cuò)誤指示被存儲(chǔ)在ACW TIDA硬件響應(yīng)字段ACW字9字節(jié)2和3中。導(dǎo)致該錯(cuò)誤的地址被寫入到失敗zSeries存儲(chǔ)器地址字段ACW字16和17中。比特17—數(shù)據(jù)校驗(yàn)字失配對(duì)于向主機(jī)存儲(chǔ)器的存儲(chǔ),所計(jì)算的數(shù)據(jù)校驗(yàn)字不與接收的數(shù)據(jù)校驗(yàn)字匹配。僅在ACW中通過HPF控制比特3使能了數(shù)據(jù)校驗(yàn)字的檢查并且讀丟棄比特2不被設(shè)置為I的情況下通知(post)。比特18—方向錯(cuò)誤=HPF-DR控制字中的ACW方向比特O不與針對(duì)此ACW的HBA請(qǐng)求的方向匹配。比特21—主機(jī)存儲(chǔ)器響應(yīng)錯(cuò)誤從主機(jī)存儲(chǔ)器請(qǐng)求接收到錯(cuò)誤。在一個(gè)實(shí)施例中,來自主機(jī)存儲(chǔ)器響應(yīng)的詳細(xì)描述錯(cuò)誤的錯(cuò)誤字節(jié)被寫入到該ACW狀態(tài)字段上方的比特19-20以及下方的比特24-31。導(dǎo)致錯(cuò)誤的主機(jī)存儲(chǔ)器地址被寫入到此ACW的失敗zSeries存儲(chǔ)器地址字段。比特22 — IU首標(biāo)數(shù)據(jù)校驗(yàn)字失配如果未被ACW中的HPF-DR控制字比特16禁用,則硬件對(duì)所有進(jìn)入的IU的28字節(jié)的IU首標(biāo)信息檢查IU首標(biāo)數(shù)據(jù)校驗(yàn)字。如果IU首標(biāo)數(shù)據(jù)校驗(yàn)字失敗,則丟棄IU中存在的所有數(shù)據(jù)載荷。如果在將數(shù)據(jù)從HBA存儲(chǔ)到主機(jī)存儲(chǔ)器時(shí)遇到HPF-DR響應(yīng)字中的結(jié)束狀態(tài)中指示的任何以上錯(cuò)誤,則丟棄該HBA請(qǐng)求中的剩余字節(jié)以及針對(duì)該IU的所有后續(xù)HBA請(qǐng)求。當(dāng)此字中的錯(cuò)誤比特8-12、15、17、18、21和22中的任一個(gè)被設(shè)置為I時(shí),通過將ACW狀態(tài)中的讀丟棄比特設(shè)置為I來實(shí)施這一點(diǎn)。如果在從主機(jī)存儲(chǔ)器獲取數(shù)據(jù)以跨PCIe總線傳輸時(shí)檢測(cè)到錯(cuò)誤,則HPF-DR硬件將用信號(hào)通知PCIe輸出邏輯244返回具有設(shè)置為完成器異常中斷的完成狀態(tài)的完成TLP。這將導(dǎo)致HBA退出啟動(dòng)了導(dǎo)致異常的主機(jī)存儲(chǔ)器獲取請(qǐng)求的交換。利用具有設(shè)置為完成器異常中斷的完成狀態(tài)的同一完成TLP響應(yīng)對(duì)此ACW的所有后續(xù)HBA請(qǐng)求。當(dāng)此字中的錯(cuò)誤比特8-12、15、17、18、21和22中的任一個(gè)被設(shè)置為I時(shí),通過將ACW狀態(tài)中的寫丟棄比特設(shè)置為I來實(shí)施這一點(diǎn)。如果HPF-DR硬件遇到有效(比特O)設(shè)置為O或具有無效ACW狀態(tài)(O和4-F用于獲取,或者I和4-F用于存儲(chǔ))的ACW,則通知HPF-DR硬件信道控制檢查。再次參照?qǐng)D10,ACW還可以包括工作計(jì)數(shù)字段256。當(dāng)此ACW的第一 HBA請(qǐng)求被數(shù)據(jù)路由器處理時(shí),從開始計(jì)數(shù)字段(下面描述)的字7初始化工作計(jì)數(shù)字段256。當(dāng)從或向主機(jī)存儲(chǔ)器獲取或存儲(chǔ)數(shù)據(jù)時(shí),數(shù)據(jù)路由器硬件遞減此計(jì)數(shù)。在此計(jì)數(shù)已經(jīng)遞減到O之后,數(shù)據(jù)永遠(yuǎn)不會(huì)被存儲(chǔ)到主機(jī)存儲(chǔ)器中。丟棄在此計(jì)數(shù)達(dá)到O之后從PCIe總線接收的任何數(shù)據(jù),并且在HPF響應(yīng)字字段中將‘工作計(jì)數(shù)上的溢出’比特設(shè)置為I。如果ACW狀態(tài)字節(jié)中寫丟棄或讀丟棄比特被設(shè)置為1,則針對(duì)所丟棄或拋棄的數(shù)據(jù)字節(jié),不遞減此計(jì)數(shù)。如果 在HPF響應(yīng)字254中任何錯(cuò)誤比特已被設(shè)置為I (指示在主機(jī)存儲(chǔ)器響應(yīng)中接收到錯(cuò)誤),則此計(jì)數(shù)的剩余值無效。HPF-DR控制字字段258被固件設(shè)置,并控制數(shù)據(jù)路由器執(zhí)行的功能。示例功能(對(duì)應(yīng)于此字段中的示例比特)被描述為如下比特O-ACW方向?qū)τ趶闹鳈C(jī)存儲(chǔ)器獲取,設(shè)置為‘Tb (二進(jìn)制)。對(duì)于存儲(chǔ)到主機(jī)存儲(chǔ)器中,設(shè)置為‘0’ b。該比特必須與引用此ACW的HBA請(qǐng)求匹配,否則HPF-DR響應(yīng)字中的‘方向錯(cuò)誤’比特18被設(shè)置為I。比特1-2 — “IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字選擇”:如果以下的比特3 (數(shù)據(jù)校驗(yàn)字被使能)設(shè)置為1,則這些比特利用以下碼點(diǎn)編碼,以告知數(shù)據(jù)路由器硬件用于數(shù)據(jù)IU的數(shù)據(jù)校驗(yàn)字類型。以下碼指示所使用的數(shù)據(jù)校驗(yàn)字的類型O—使用數(shù)據(jù)校驗(yàn)字類型I。(LRC)I一使用數(shù)據(jù)校驗(yàn)字類型2。(校驗(yàn)和)2—使用數(shù)據(jù)校驗(yàn)字類型3。(CRC)3—使用數(shù)據(jù)校驗(yàn)字類型4。比特3 — “IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字使能”‘0’b的值指示OFF (關(guān)閉),即對(duì)于此條目沒有數(shù)據(jù)校驗(yàn)字的檢查/產(chǎn)生?!甌b的值指示ON (開啟),即對(duì)于此ACW使能了根據(jù)(per)以上比特1-2的編碼的數(shù)據(jù)校驗(yàn)字的檢查/產(chǎn)生。比特4-5 — IU首標(biāo)數(shù)據(jù)校驗(yàn)字選擇編碼如果以下的比特16被設(shè)置為0(IU首標(biāo)數(shù)據(jù)校驗(yàn)字被使能),則比特4-5利用以下碼點(diǎn)編碼,以告知數(shù)據(jù)路由器硬件用于IU首標(biāo)的數(shù)據(jù)校驗(yàn)字類型O—使用數(shù)據(jù)校驗(yàn)字類型I. (LRC)I一使用數(shù)據(jù)校驗(yàn)字類型2。(校驗(yàn)和)2—使用數(shù)據(jù)校驗(yàn)字類型3。(CRC)3—使用數(shù)據(jù)校驗(yàn)字類型4。比特16—禁止IU首標(biāo)數(shù)據(jù)校驗(yàn)字‘0’ b (OFF)的值指示對(duì)于此ACW使能根據(jù)以上比特4-5的編碼的IU首標(biāo)數(shù)據(jù)校驗(yàn)字的檢查/產(chǎn)生。‘I’ b (ON)的值指示不檢查進(jìn)入的IU首標(biāo)中的數(shù)據(jù)校驗(yàn)字字段。進(jìn)入的首標(biāo)中的數(shù)據(jù)校驗(yàn)字字段不被修改,而被與在ACW中設(shè)置時(shí)一樣地發(fā)送。比特17—繞過(BYPASS)TIDAL ‘0’b的值指示將使用TIDAL處理。ACW中的地址是TIDAW列表的開始地址。每個(gè)TIDAW具有主機(jī)存儲(chǔ)器地址和計(jì)數(shù),其被用于獲取或存儲(chǔ)數(shù)據(jù)?!甌b的值指示繞過TIDAL處理,并且從ACW中的主機(jī)存儲(chǔ)器地址開始連續(xù)地獲取或存儲(chǔ)數(shù)據(jù)。比特22-23—載荷數(shù)據(jù)校驗(yàn)字位置該兩比特編碼表示從載荷的末端起的字的數(shù)目,在該位置處放置用于寫操作的數(shù)據(jù)校驗(yàn)字。對(duì)于讀操作忽略此編碼。對(duì)于除‘00’b之外的編碼,開始工作計(jì)數(shù)必須是4字節(jié)的倍數(shù)(即沒有填充)。IU中數(shù)據(jù)校驗(yàn)字之后的字不包括在數(shù)據(jù)校驗(yàn)字計(jì)算中。示例碼包括‘00’b :當(dāng)工作計(jì)數(shù)=O時(shí),插入所產(chǎn)生的數(shù)據(jù)校驗(yàn)字。這將數(shù)據(jù)檢驗(yàn)字放置在所傳送的IU加上填充字節(jié)的末端,以將該數(shù)據(jù)校驗(yàn)字放置在字邊界上。此碼點(diǎn)被用于傳送除 傳輸命令I(lǐng)U之外的任何東西?!?1’b :當(dāng)工作計(jì)數(shù)=4時(shí),利用產(chǎn)生的數(shù)據(jù)校驗(yàn)字覆蓋現(xiàn)有字。這將數(shù)據(jù)校驗(yàn)字放置在離傳送的IU的末端一個(gè)字(4個(gè)字節(jié))的位置處。該碼點(diǎn)僅用于傳送傳輸命令I(lǐng)U?!?0’b :當(dāng)工作計(jì)數(shù)=8時(shí),利用產(chǎn)生的數(shù)據(jù)校驗(yàn)字覆蓋現(xiàn)有字。這將數(shù)據(jù)校驗(yàn)字放置在離產(chǎn)生的IU的末端兩個(gè)字(8個(gè)字節(jié))的位置處。該碼點(diǎn)僅用于傳送傳輸命令I(lǐng)U?!?1’ b:無效。再次參照?qǐng)D10,ACW還可以包括由固件設(shè)置的密鑰259。該密鑰從ACW中獲得,并被數(shù)據(jù)路由器硬件插入在用于訪問主機(jī)存儲(chǔ)器的主機(jī)存儲(chǔ)器請(qǐng)求中。區(qū)域ID字段260由固件設(shè)置,以及從ACW獲得,并由數(shù)據(jù)路由器硬件插入在用于訪問主機(jī)存儲(chǔ)器的主機(jī)存儲(chǔ)器請(qǐng)求中。主機(jī)存儲(chǔ)器地址字段262指示主機(jī)存儲(chǔ)器中要從其獲取或向其存儲(chǔ)針對(duì)此ACW的數(shù)據(jù)的開始地址(例如,如果控制字字段的比特17是I)、或者傳輸(Tidal)間接數(shù)據(jù)地址列表(TIDAL)的開始地址(例如如果比特17是0)。ACW中的主機(jī)存儲(chǔ)器地址是數(shù)據(jù)的主機(jī)存儲(chǔ)器地址或者稱為TIDAL的傳輸間接地址列表的開始地址。TIDAL中的每個(gè)條目是TIDAW,其是TIDAW中的計(jì)數(shù)字段中的數(shù)據(jù)字節(jié)數(shù)的開始主機(jī)存儲(chǔ)器地址。如果TIDAL由HPF-DR控制字中的比特17指示,則HPF-DR硬件從主機(jī)存儲(chǔ)器獲取TIDAL,接著使用每個(gè)TIDAW中的地址在主機(jī)存儲(chǔ)器中獲取或存儲(chǔ)數(shù)據(jù)。IU首標(biāo)計(jì)數(shù)字段263被數(shù)據(jù)路由器硬件用于追蹤剩下來從ACW傳輸?shù)絇CIe總線或從PCIe總線傳輸?shù)紸CW的IU首標(biāo)字節(jié)的數(shù)目。IU首標(biāo)計(jì)數(shù)被固件初始化為在IU的傳輸或接收開始時(shí),要從ACW底部傳輸?shù)絇CIe總線或從PCIe總線傳輸?shù)紸CW底部的IU首標(biāo)字節(jié)的數(shù)目。當(dāng)設(shè)置ACW時(shí),固件初始化24比特的“下一預(yù)期的16兆字節(jié)偏移”字段264。該偏移字段雖然被描述為16兆字節(jié)偏移,但也可以被配置為其它期望的偏移配置。當(dāng)處理每個(gè)HBA獲取或存儲(chǔ)請(qǐng)求時(shí),數(shù)據(jù)路由器硬件將針對(duì)ACW中的下一預(yù)期的16兆字節(jié)偏移字段檢查HBA地址中的16兆字節(jié)偏移180。如果它們匹配,則數(shù)據(jù)路由器硬件移動(dòng)數(shù)據(jù)(如果數(shù)據(jù)是來自或去往ACW底部的IU首標(biāo),以及去往或來自主機(jī)存儲(chǔ)器的任何用戶數(shù)據(jù))。數(shù)據(jù)路由器硬件接著將ACW中的下一預(yù)期的16兆字節(jié)偏移字段遞增HBA事務(wù)的尺寸。在一個(gè)實(shí)施例中,為了利用4字節(jié)的工作計(jì)數(shù)字段,使用3字節(jié)的下一預(yù)期的16兆字節(jié)偏移字段,下一預(yù)期的偏移可以在工作計(jì)數(shù)變?yōu)镺之前從OxFFFFFF到0x000000封包255次。下一預(yù)期的偏移第一次封包時(shí),在此ACW中,ACW封包比特(HPF響應(yīng)字字段254中的比特14)被設(shè)置為I。開始計(jì)數(shù)字段266被固件用于加載要被傳輸用于此ACW控制下的I/O操作的數(shù)據(jù)的字節(jié)數(shù)。此計(jì)數(shù)包括傳送的數(shù)據(jù)上插入的所有填充和數(shù)據(jù)校驗(yàn)字字節(jié),但不包括傳送或接收的數(shù)據(jù)上的IU首標(biāo)字節(jié)或最終(finial)填充和數(shù)據(jù)校驗(yàn)字字節(jié)。當(dāng)為此ACW處理第一HBA請(qǐng)求時(shí),數(shù)據(jù)路由器硬件將此計(jì)數(shù)傳輸給工作計(jì)數(shù)字段256。數(shù)據(jù)路由器硬件不修改ACff中的開始計(jì)數(shù)。數(shù)據(jù)路由器硬件將CTL字段268和確認(rèn)字段270與從HBA接收的地址字段172中的對(duì)應(yīng)CTL字段174和確認(rèn)字段178進(jìn)行比較。如果它們不相等,則通知錯(cuò)誤,并且不執(zhí)行 主機(jī)存儲(chǔ)器操作。此錯(cuò)誤導(dǎo)致信道控制檢查。對(duì)于HBA存儲(chǔ),數(shù)據(jù)校驗(yàn)字狀態(tài)字段272被數(shù)據(jù)路由器硬件用于追蹤ACW中的最后4個(gè)數(shù)據(jù)字節(jié)保存區(qū)域(下面描述)中的數(shù)據(jù)字節(jié)中哪個(gè)將被用于針對(duì)此ACW的下一事務(wù)中的數(shù)據(jù)校驗(yàn)字計(jì)算。這被需要用于HBA存儲(chǔ)請(qǐng)求不在相對(duì)于數(shù)據(jù)傳輸?shù)拈_始的字邊界上結(jié)束、并且僅可以對(duì)字邊界上的四字節(jié)字的數(shù)據(jù)完成數(shù)據(jù)校驗(yàn)字的計(jì)算的情況。因此,高至3個(gè)字節(jié)的之前接收的數(shù)據(jù)以及邊界狀態(tài)信息必須被保存在ACW中,直到接收到后續(xù)字節(jié)的數(shù)據(jù),以繼續(xù)數(shù)據(jù)校驗(yàn)字的計(jì)算。TIDAL硬件響應(yīng)字段274被用于存儲(chǔ)主機(jī)存儲(chǔ)器異?;蛘哚槍?duì)獲取的TIDA列表而接收的壞數(shù)據(jù)路由器硬件響應(yīng)。此字段的比特2-15具有與HPF-DR響應(yīng)字字段254的比特18-31相同的定義。因?yàn)門IDA列表可以在需要使用其之前由HPF-DR硬件預(yù)獲取,所以該壞響應(yīng)將不被固件報(bào)告為錯(cuò)誤,除非從HBA接收到HBA請(qǐng)求以傳輸本將已經(jīng)使用了該不可得的TIDAW的數(shù)據(jù)。通過HPF-DR響應(yīng)字字段254的比特15向固件指示后一情況。在前數(shù)據(jù)校驗(yàn)字保存區(qū)域被數(shù)據(jù)路由器硬件用于在每個(gè)HBA存儲(chǔ)事務(wù)結(jié)束時(shí)保存倒數(shù)第二個(gè)中間數(shù)據(jù)校驗(yàn)字的值。不通過使用接收到的最后4個(gè)數(shù)據(jù)字節(jié)的計(jì)算修改該中間值。因此,如果當(dāng)前HBA事務(wù)完成了操作,則此字段包含用于該操作的最終計(jì)算的數(shù)據(jù)校驗(yàn)字值,并且接收到的最后4個(gè)數(shù)據(jù)字節(jié)是保存在此ACW中的下一字段中的接收的數(shù)據(jù)校驗(yàn)字。最后4個(gè)數(shù)據(jù)字節(jié)保存區(qū)域278被硬件用于存儲(chǔ)在每個(gè)HBA請(qǐng)求上接收的最后4個(gè)數(shù)據(jù)字節(jié)。對(duì)于除最后一個(gè)之外的HBA請(qǐng)求,如果當(dāng)前HBA請(qǐng)求不在字邊界上結(jié)束,則可能需要高至這些字節(jié)中的3個(gè)用于后續(xù)的數(shù)據(jù)校驗(yàn)字累積。在數(shù)據(jù)校驗(yàn)字狀態(tài)272中記錄了關(guān)于需要哪些字節(jié)的信息。對(duì)于最后一個(gè)HBA請(qǐng)求,此字段包含接收的數(shù)據(jù)校驗(yàn)字。在一個(gè)實(shí)施例中,對(duì)于HBA PCIe獲取,此字段保持到基于前一最后4字節(jié)PCIe邊界的最后四個(gè)數(shù)據(jù)字節(jié)。所以,如果PCIe地址以I結(jié)束,則此字段保持傳送的最后一個(gè)字節(jié)。如果PCIe地址以2結(jié)束,則此字段保持傳送的最后兩個(gè)字節(jié),并由此下去,直到最后四個(gè)字節(jié)。數(shù)據(jù)校驗(yàn)字保存區(qū)域280被數(shù)據(jù)路由器硬件在每個(gè)HBA事務(wù)(獲取或存儲(chǔ))結(jié)束時(shí)用于保存中間計(jì)算的數(shù)據(jù)校驗(yàn)字值,其被用于作為針對(duì)ACW的下一事務(wù)的種子。TIDAL工作區(qū)域地址282是位于本地信道存儲(chǔ)器中的256字節(jié)的工作區(qū)域的地址,并被數(shù)據(jù)路由器硬件用于緩存由數(shù)據(jù)路由器硬件從主機(jī)存儲(chǔ)器預(yù)先獲取的TIDA列表元素。固件將此字段設(shè)置為指向?yàn)榇薃CW所分配的區(qū)域。TIDAL工作區(qū)域索引284是對(duì)指向當(dāng)前活動(dòng)的TIDAW條目并由數(shù)據(jù)路由器硬件保持的本地信道存儲(chǔ)器TIDAL工作區(qū)域的索引。數(shù)據(jù)校驗(yàn)字種子字段286被固件用于將初始數(shù)據(jù)校驗(yàn)字種子值寫入此字中。此字被用作在針對(duì)讀和寫的此ACW的數(shù)據(jù)傳輸開始時(shí),數(shù)據(jù)校驗(yàn)字計(jì)算的開始種子,并且還被用于當(dāng)TIDAW計(jì)數(shù)對(duì)于寫變?yōu)镺時(shí),在TIDAW中的‘插入數(shù)據(jù)檢驗(yàn)字’ TIDAW標(biāo)記的處理之后‘重做種子’。對(duì)于傳輸命令A(yù)CW,固件獲得用于傳輸命令I(lǐng)U的原始種子,并通過利用IU首標(biāo)和在傳輸IU末端處的寫和/或讀長(zhǎng)度字段,更新用于傳輸命令I(lǐng)U的開始數(shù)據(jù)校驗(yàn)字種子,而計(jì)算用于傳輸命令I(lǐng)UACW種子的新值。因此,傳輸命令I(lǐng)U數(shù)據(jù)校驗(yàn)字覆蓋整個(gè)傳輸命令I(lǐng)U,即使數(shù)據(jù)路由器硬件從ACW中獲得種子也是如此,并且僅計(jì)算IU的傳輸命令I(lǐng)U數(shù)據(jù)部分上的數(shù)據(jù)校驗(yàn)字。數(shù)據(jù)路由器硬件接著將數(shù)據(jù)校驗(yàn)字插入到IU中,并接著傳送寫或讀長(zhǎng)度字段,或者如果I/O操作在兩個(gè)方向上傳輸數(shù)據(jù),則寫和讀長(zhǎng)度字段都被傳送。
失敗zSeires存儲(chǔ)器地址288被用于存儲(chǔ)存儲(chǔ)器區(qū)域的導(dǎo)致異常的地址,并且在HPF-DR相應(yīng)字254中設(shè)置適當(dāng)?shù)腻e(cuò)誤比特?;顒?dòng)請(qǐng)求計(jì)數(shù)計(jì)數(shù)器290被ACW用于追蹤當(dāng)前有多少HBA請(qǐng)求駐于用于此ACW的存儲(chǔ)陣列隊(duì)列228中。此計(jì)數(shù)器對(duì)于存儲(chǔ)到用于此ACW的存儲(chǔ)陣列隊(duì)列中的每個(gè)HBA請(qǐng)求遞增,并且當(dāng)HBA請(qǐng)求已被處理時(shí)遞減。當(dāng)對(duì)于請(qǐng)求發(fā)生以下之一時(shí),認(rèn)為針對(duì)此ACW的HBA請(qǐng)求被處理用于HBA請(qǐng)求的所有主機(jī)存儲(chǔ)器請(qǐng)求已經(jīng)以主機(jī)存儲(chǔ)器響應(yīng)完成;在讀丟棄比特(bit2)被設(shè)置為I的情況下,用于HBA請(qǐng)求的所有數(shù)據(jù)已被丟棄;或者所有IU首標(biāo)信息被存儲(chǔ)在用于僅包含IU首標(biāo)信息的HBA請(qǐng)求的ACW中。每當(dāng)數(shù)據(jù)路由器硬件更新ACW中的ACW活動(dòng)請(qǐng)求計(jì)數(shù)時(shí),其將活動(dòng)請(qǐng)求計(jì)數(shù)=O (HPD-DR響應(yīng)字254,比特13)設(shè)置為活動(dòng)請(qǐng)求計(jì)數(shù)的比特的異或(N0R)。因此,當(dāng)HPF-DR硬件將活動(dòng)請(qǐng)求計(jì)數(shù)遞減為O時(shí),“活動(dòng)請(qǐng)求計(jì)數(shù)=O”比特將被設(shè)置為I。IU首標(biāo)信息字段292被用于存儲(chǔ)在I/O操作中使用的命令、狀態(tài)和/或數(shù)據(jù)IU首標(biāo)。在一個(gè)實(shí)施例中,此字段是用于8個(gè)字的‘IU首標(biāo)’信息的區(qū)域。如IU包含IU首標(biāo),則IU首標(biāo)信息是IU中在鏈路上傳輸?shù)皆O(shè)備或從設(shè)備傳輸?shù)牡谝粩?shù)據(jù)。IU首標(biāo)信息被信道使用或產(chǎn)生,但不是存儲(chǔ)到主機(jī)存儲(chǔ)器或從主機(jī)存儲(chǔ)器獲取的數(shù)據(jù)的一部分。因此,此信息被信道微處理器固件檢查或產(chǎn)生。ACW控制塊的底部8個(gè)字被用于緩存IU首標(biāo),并被用作數(shù)據(jù)路由器硬件與用于該IU首標(biāo)的固件之間的接口。當(dāng)ACW是讀數(shù)據(jù)ACW或?qū)憯?shù)據(jù)ACW時(shí),IU首標(biāo)信息是在PICe總線上傳輸?shù)牡谝粩?shù)據(jù)。當(dāng)數(shù)據(jù)路由器硬件完成了 IU首標(biāo)的傳輸時(shí),其將ACW狀態(tài)字段250的值改變?yōu)?。對(duì)于IU傳送,固件在用信號(hào)通知HBA傳送IU之前在ACW中建立IU首標(biāo)。對(duì)于接收的IU,當(dāng)HBA已經(jīng)通知I/O操作已經(jīng)完成并且已經(jīng)確認(rèn)ACW在ACW狀態(tài)2中時(shí),固件檢查ACW中的IU首標(biāo)。固件還控制IU首標(biāo)的最后一個(gè)字(在本實(shí)施例中始終是16兆字節(jié)偏移28,OxOOOOIC)是表示數(shù)據(jù)還是用于IU首標(biāo)的IU首標(biāo)數(shù)據(jù)校驗(yàn)字。HPF-DR控制比特16 (禁止IU首標(biāo)數(shù)據(jù)檢查)告知數(shù)據(jù)路由器硬件是否將產(chǎn)生或檢查用于IU首標(biāo)的數(shù)據(jù)校驗(yàn)字。如果被使能,則數(shù)據(jù)路由器硬件產(chǎn)生IU首標(biāo)數(shù)據(jù)校驗(yàn)字,并接著在將IU首標(biāo)發(fā)送到HBA時(shí),將來自ACW的IU首標(biāo)的最后一個(gè)字替換為所產(chǎn)生的數(shù)據(jù)校驗(yàn)字。如果被使能,則數(shù)據(jù)路由器硬件檢查接收的HBA IU首標(biāo)上的數(shù)據(jù)校驗(yàn)字,并在HPF-DR響應(yīng)字254的比特22中報(bào)告結(jié)果。固件可以設(shè)置ACW,使得數(shù)據(jù)路由器硬件傳輸少于8個(gè)字的IU首標(biāo)信息。通過調(diào)節(jié)PCIe HBA使用的狀態(tài)、首標(biāo)計(jì)數(shù)、下一期望的16兆字節(jié)偏移和初始16兆字節(jié)偏移來進(jìn)行這一點(diǎn),從而要傳送或接收的最后一個(gè)IU首標(biāo)字在28 (OxOOOOIC)的16兆字節(jié)偏移處,并且載荷的第一字節(jié)(如果存在)在32 (0x000020)的16兆字節(jié)偏移處。IU首標(biāo)始終是整數(shù)個(gè)字。在一個(gè)實(shí)施例中,如果對(duì)于IU不需要IU首標(biāo),則固件如下設(shè)置ACW I.將ACW IU首標(biāo)計(jì)數(shù)設(shè)置為O (ACW字6字節(jié)O);2.將ACW狀態(tài)設(shè)置為2 ;

3.將ACW封包比特設(shè)置為I (HPF-DR響應(yīng)字比特14),將開始16兆字節(jié)偏移設(shè)置為對(duì)HBA給出的地址控制結(jié)構(gòu)中的0x000000,并將相同的值設(shè)置到ACW中的下一預(yù)期的16兆字節(jié)偏移字段中;4.將ACW工作計(jì)數(shù)256設(shè)置為等于ACW開始計(jì)數(shù)266 ;5.將ACW數(shù)據(jù)校驗(yàn)字狀態(tài)設(shè)置為0x00的值;以及6.將在前數(shù)據(jù)校驗(yàn)字保持區(qū)域276和數(shù)據(jù)校驗(yàn)字保持區(qū)域280設(shè)置為等于數(shù)據(jù)校驗(yàn)字種子286?,F(xiàn)在,在數(shù)據(jù)路由器硬件看來,對(duì)于分配了此ACW的IU,似乎已經(jīng)接收或傳送了 IU首標(biāo)。信道微處理器基于從I/O指令的接收而導(dǎo)出的信息,設(shè)置上述ACW中的某些字段。示例字段包括ACW狀態(tài)字段、響應(yīng)字字段、HPF-DR控制字段、主機(jī)存儲(chǔ)器或TIDA存儲(chǔ)器地址字段、首標(biāo)計(jì)數(shù)、“下一預(yù)期的16兆字節(jié)偏移”字段、D字段、CTL字段、確認(rèn)字段、TIDAL工作區(qū)域地址字段、數(shù)據(jù)校驗(yàn)字種子字段、以及IU首標(biāo)字段。ACW中的其它字段是HPF-dR硬件在執(zhí)行I/O操作中使用以及在I/O操作完成之后用于向固件回呈結(jié)束狀態(tài)信息的控制字段。圖11-14示出了存儲(chǔ)在本地信道存儲(chǔ)器中并由數(shù)據(jù)路由器硬件使用的ACW中由固件設(shè)置的示例值。參照?qǐng)D11,為了產(chǎn)生傳輸命令A(yù)CW 300 (其由HPF-DR用于組裝傳輸命令I(lǐng)U),應(yīng)用以下設(shè)置I)對(duì)于ACW狀態(tài)字段,ACff有效比特設(shè)置為I并且設(shè)置狀態(tài)編碼I ;2) ACff封包字段設(shè)置為O (當(dāng)HPF-DR響應(yīng)字被設(shè)置為0x000000時(shí)設(shè)置);3)對(duì)于HPF-DR控制字段,設(shè)置以下值比特O (ACW方向)設(shè)置為1,正從信道傳送數(shù)據(jù);比特1-2 (IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字選擇)設(shè)置為‘00’ b,指示LRC字正被使用;比特3 (IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字使能)設(shè)置為I ;比特4-5 (IU首標(biāo)數(shù)據(jù)校驗(yàn)字選擇)不被使用;比特16 (禁止IU首標(biāo)數(shù)據(jù)校驗(yàn)字)設(shè)置為I ;比特17 (繞過TIDAL)設(shè)置為TCW中的TCCB TIDAL標(biāo)志比特的反比特;比特22-23 (載荷數(shù)據(jù)校驗(yàn)字位置)設(shè)置為‘10’ b的碼值;4)從子信道獲得密鑰值;
5 )從TCW獲得主機(jī)存儲(chǔ)器地址;6 )對(duì)于傳輸命令A(yù)CW,IU首標(biāo)計(jì)數(shù)設(shè)置在OxOC處;7)對(duì)于傳輸命令A(yù)CW,下一預(yù)期的16兆字節(jié)偏移字段設(shè)置在0x000014處;8)從TCW中翻譯開始計(jì)數(shù)字段值;9)當(dāng)設(shè)置ACW時(shí),固件寫丟棄比特(D)設(shè)置為O ;10)對(duì)于所有傳輸ACW,CTL字段設(shè)置為0x02 ;11)在信道初始化時(shí),確認(rèn)字段設(shè)置為針對(duì)此ACW的唯一值;12)在信道初始化時(shí),TIDAL工作區(qū)域地址設(shè)置為針對(duì)此ACW的唯一值;13)數(shù)據(jù)校驗(yàn)字種子對(duì)于傳輸命令A(yù)CW,固件獲得原始傳輸命令種子,根據(jù)設(shè)置在此ACW中的IU首標(biāo)101的數(shù)據(jù)以及從TCW獲得的寫和讀長(zhǎng)度字段,為數(shù)據(jù)路由器硬件計(jì)算新種子值;以及14) IU首標(biāo)101 :根據(jù)子信道和TCW設(shè)置12字節(jié)的IU首標(biāo)101。參照?qǐng)D12,傳輸讀數(shù)據(jù)ACW 302被數(shù)據(jù)路由器用于接收讀傳輸數(shù)據(jù)IU和產(chǎn)生主機(jī)存儲(chǔ)器命令,以將讀數(shù)據(jù)傳輸?shù)街鳈C(jī)存儲(chǔ)器。通過應(yīng)用以下設(shè)置產(chǎn)生傳輸讀ACW I)對(duì)于ACW狀態(tài)字段,ACff有效比特設(shè)置為1,并且設(shè)置狀態(tài)編碼2 ;2)當(dāng)HPF-DR響應(yīng)字段被設(shè)置為0x020000時(shí),將ACW封包字段設(shè)置為I ;3)對(duì)于HPF-DR控制字段,設(shè)置以下值比特O (ACW方向)設(shè)置為0,正在信道處傳送數(shù)據(jù);比特1-2 (IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字選擇)設(shè)置為‘10’ b,指示CRC字正被使用;比特3 (IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字使能)設(shè)置為I ;比特4-5 (IU首標(biāo)數(shù)據(jù)校驗(yàn)字選擇)不被使用,上述ACW封包比特被設(shè)置;比特16 (禁止IU首標(biāo)數(shù)據(jù)校驗(yàn)字)不被使用,上述ACW封包比特被設(shè)置;比特17 (繞過TIDAL)設(shè)置為TCW中的TIDAL讀標(biāo)志比特的反比特;比特22-23 (載荷數(shù)據(jù)校驗(yàn)字位置)設(shè)置為‘00’b的碼值,正如其未被用于此ACW ;4)從子信道獲得密鑰值;5 )從TCW獲得主機(jī)存儲(chǔ)器地址;6 )對(duì)于傳輸讀數(shù)據(jù)ACW,IU首標(biāo)計(jì)數(shù)設(shè)置在0x00處;7)對(duì)于傳輸讀數(shù)據(jù)ACW,下一預(yù)期的16兆字節(jié)偏移字段設(shè)置在0x000000處;8)從TCW中的讀數(shù)據(jù)計(jì)數(shù)獲得開始計(jì)數(shù)字段值;9)當(dāng)設(shè)置ACW時(shí),固件寫丟棄比特(D)設(shè)置為O ;10)對(duì)于所有傳輸ACW,CTL字段設(shè)置為0x02 ;11)在信道初始化時(shí),確認(rèn)字段設(shè)置為針對(duì)此ACW的唯一值;12)在信道初始化時(shí),TIDAL工作區(qū)域地址設(shè)置為針對(duì)此ACW的唯一值;以及13)對(duì)于傳輸讀數(shù)據(jù)ACW,數(shù)據(jù)校驗(yàn)字種子設(shè)置為OxFF FF FF FF。參照?qǐng)D13,傳輸寫數(shù)據(jù)ACW 304被數(shù)據(jù)路由器用于產(chǎn)生寫傳輸數(shù)據(jù)IU,以將寫數(shù)據(jù)傳輸?shù)娇刂茊卧?。通過應(yīng)用以下設(shè)置產(chǎn)生傳輸寫ACW I)對(duì)于ACW狀態(tài)字段,ACff有效比特設(shè)置為1,并且設(shè)置狀態(tài)編碼2 ;2)當(dāng)HPF-DR響應(yīng)字段被設(shè)置為0x020000時(shí),將ACW封包字段設(shè)置為I ;3)對(duì)于HPF-DR控制字段,設(shè)置以下值
比特O (ACW方向)設(shè)置為1,正向控制單元傳送數(shù)據(jù);比特1-2 (IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字選擇)設(shè)置為‘10’ b,指示CRC字正被使用;比特3 (IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字使能)設(shè)置為I ;比特4-5 (IU首標(biāo)數(shù)據(jù)校驗(yàn)字選擇)不被使用,上述ACW封包比特被設(shè)置;比特16 (禁止IU首標(biāo)數(shù)據(jù)校驗(yàn)字)不被使用,上述ACW封包比特被設(shè)置;比特17 (繞過TIDAL)設(shè)置為TCW中的TIDAL讀標(biāo)志比特的反比特;比特22-23 (載荷數(shù)據(jù)校驗(yàn)字位置)設(shè)置為‘00’ b的碼值;4)從子信道獲得密鑰值; 5 )從TCW獲得主機(jī)存儲(chǔ)器地址;6)對(duì)于傳輸寫數(shù)據(jù)ACW,IU首標(biāo)計(jì)數(shù)設(shè)置在0x00處;7)對(duì)于傳輸寫數(shù)據(jù)ACW,下一預(yù)期的16兆字節(jié)偏移字段設(shè)置在0x000000處;8)從TCW中的寫數(shù)據(jù)計(jì)數(shù)獲得開始計(jì)數(shù)字段值;9)當(dāng)設(shè)置ACW時(shí),固件寫丟棄比特(D)設(shè)置為O ;10)對(duì)于所有傳輸ACW,CTL字段設(shè)置為0x02 ;11)在信道初始化時(shí),確認(rèn)字段設(shè)置為針對(duì)此ACW的唯一值;12) TIDAL工作區(qū)域地址與傳輸命令A(yù)CW的工作區(qū)域相同;以及13)對(duì)于傳輸寫數(shù)據(jù)ACW,數(shù)據(jù)校驗(yàn)字種子設(shè)置為OxFF FF FF FF。參照?qǐng)D14,傳輸狀態(tài)ACW 306被數(shù)據(jù)路由器用于存儲(chǔ)來自接收的傳輸狀態(tài)IU的擴(kuò)展?fàn)顟B(tài)數(shù)據(jù)以及將狀態(tài)轉(zhuǎn)發(fā)給主機(jī)存儲(chǔ)器。通過應(yīng)用以下設(shè)置產(chǎn)生傳輸狀態(tài)塊ACW I)對(duì)于ACW狀態(tài)字段,ACff有效比特設(shè)置為1,并且設(shè)置狀態(tài)編碼O ;2)當(dāng)HPF-DR響應(yīng)字段被設(shè)置為0x000000時(shí),將ACW封包字段設(shè)置為O ;3)對(duì)于HPF-DR控制字段,設(shè)置以下值比特O (ACW方向)設(shè)置為0,正從控制單元接收數(shù)據(jù);比特1-2 (IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字選擇)設(shè)置為‘00’ b,指示LRC字正被使用;比特3 (IU數(shù)據(jù)一數(shù)據(jù)校驗(yàn)字使能)設(shè)置為I ;比特4-5 (IU首標(biāo)數(shù)據(jù)校驗(yàn)字選擇)設(shè)置為‘00’ b,指示LRC字正被使用;比特16 (禁止IU首標(biāo)數(shù)據(jù)校驗(yàn)字)設(shè)置為0,IU首標(biāo)數(shù)據(jù)校驗(yàn)字不被禁止;比特17 (繞過TIDAL)設(shè)置為1,正如未使用間接尋址;比特22-23 (載荷數(shù)據(jù)校驗(yàn)字位置)設(shè)置為‘00’ b的碼值,并不用于此ACW ;4)對(duì)于此ACW,密鑰值設(shè)置為0x0 ;5 )從TCW獲得主機(jī)存儲(chǔ)器地址;6)對(duì)于傳輸狀態(tài)ACW,IU首標(biāo)計(jì)數(shù)設(shè)置在0x20處;7)對(duì)于傳輸狀態(tài)ACW,下一預(yù)期的16兆字節(jié)偏移字段設(shè)置在0x000000處;8)根據(jù)光纖信道架構(gòu),開始計(jì)數(shù)字段值被設(shè)置為0x40 ;9)當(dāng)設(shè)置ACW時(shí),固件寫丟棄比特(D)設(shè)置為O ;10)對(duì)于所有傳輸ACW,CTL字段設(shè)置為0x02 ;11)在信道初始化時(shí),確認(rèn)字段設(shè)置為針對(duì)此ACW的唯一值;以及12)對(duì)于傳輸狀態(tài)ACW,數(shù)據(jù)校驗(yàn)字種子設(shè)置為0XA55AA55A。參照?qǐng)D15,描述了各種類型的地址控制結(jié)構(gòu)的HBA地址部分的示例。在這些示例中,當(dāng)CTL字段174等于0x02時(shí),16兆字節(jié)偏移180是HBA地址172中隨著來自HBA的用于I/O操作的連續(xù)HBA請(qǐng)求而遞增的唯一部分。HBA請(qǐng)求的用于要傳送或接收的信息單元(IU)的開始32個(gè)字節(jié)的數(shù)據(jù)可以是從ACW控制塊的底部檢索的或存儲(chǔ)到ACW控制塊的底部的IU首標(biāo)信息。數(shù)據(jù)路由器硬件從ACW的底部獲取此信息或?qū)⒋诵畔⒋鎯?chǔ)到ACW的底部中,用于PCIe的16兆字節(jié)偏移地址(從0x000000至OxOOOOlF)。這允許向或者從傳輸數(shù)據(jù)IU附接或者剝離高至32字節(jié)的IU首標(biāo),該傳輸數(shù)據(jù)IU被傳送到設(shè)備或者從設(shè)備接收。當(dāng)16兆字節(jié)偏移封包時(shí),其封包回到0x000000,但對(duì)于此情況,因?yàn)槠涫欠獍鼦l件并且在ACW中ACW封包比特被設(shè)置為1,所以接收的或傳送的數(shù)據(jù)繼續(xù)被存儲(chǔ)到主機(jī)存儲(chǔ)器中或從主機(jī)存儲(chǔ)器中獲取,但不存儲(chǔ)到ACW中或從ACW中獲取。固件具有設(shè)置ACW的能力,從而如果在IU的開始處不存在IU首標(biāo)信息,則不從ACW中獲取IU首標(biāo)信息,也不將IU首標(biāo)信息存儲(chǔ)到ACW中。ACW封包比特是ACW的HPF-DR響應(yīng)字字段中的比特14。對(duì)于傳輸命令地址控制結(jié)構(gòu),從TCW獲得的字節(jié)計(jì)數(shù)永遠(yuǎn)不導(dǎo)致16兆字節(jié)偏移字段180封包,因此對(duì)于數(shù)據(jù)路由器硬件和HBA,僅需要一個(gè)地址控制結(jié)構(gòu)來傳送傳輸命令I(lǐng)U0命令I(lǐng)U的方向總是從信道側(cè)HBA向控制單元。
對(duì)于傳遞到HBA的傳輸狀態(tài)地址控制結(jié)構(gòu),字節(jié)計(jì)數(shù)永不導(dǎo)致16兆字節(jié)偏移字段封包,因此對(duì)于數(shù)據(jù)路由器硬件和HBA,僅需要一個(gè)地址控制結(jié)構(gòu)來接收傳輸狀態(tài)IU。狀態(tài)IU的方向總是從控制單元向信道側(cè)HBA。對(duì)于傳輸讀數(shù)據(jù)地址控制結(jié)構(gòu),TCff中的讀數(shù)據(jù)計(jì)數(shù)提供從設(shè)備傳輸?shù)紿BA的讀數(shù)據(jù)的總量。如果讀數(shù)據(jù)計(jì)數(shù)大于16兆字節(jié),則傳遞到HBA的用以傳輸讀數(shù)據(jù)的數(shù)據(jù)地址控制結(jié)構(gòu)的數(shù)量是總讀數(shù)據(jù)計(jì)數(shù)除以223,并且如果存在余數(shù),則對(duì)I進(jìn)位取整(round up)。傳遞到HBA的每個(gè)讀數(shù)據(jù)地址控制結(jié)構(gòu)具有相同的64比特PCIe地址。每個(gè)數(shù)據(jù)地址控制結(jié)構(gòu)中的計(jì)數(shù)字段是223,除了完成1/0數(shù)據(jù)傳輸?shù)淖詈笠粋€(gè)數(shù)據(jù)地址控制結(jié)構(gòu)。這使得在數(shù)據(jù)路由器硬件看來,223兆字節(jié)偏移字段似乎保持從0x7FFFFF封包到0x000000。主機(jī)存儲(chǔ)器地址是來自ACW的不斷增加的主機(jī)存儲(chǔ)器地址262或者來自由存儲(chǔ)器地址262尋址的TIDAL中的每個(gè)TIDAW的主機(jī)存儲(chǔ)器地址。對(duì)于傳輸寫數(shù)據(jù)地址控制結(jié)構(gòu),由來自TCW的寫數(shù)據(jù)計(jì)數(shù)提供要從HBA傳輸?shù)皆O(shè)備的寫數(shù)據(jù)的總量。以與讀數(shù)據(jù)地址控制結(jié)構(gòu)相同的方式計(jì)算用于傳輸寫IU的地址控制結(jié)構(gòu)的數(shù)量。這里描述的系統(tǒng)和方法提供了用于檢查數(shù)據(jù)路由器160處理的數(shù)據(jù)的錯(cuò)誤的機(jī)制。例如,每當(dāng)HBA 154應(yīng)用主機(jī)存儲(chǔ)器時(shí),數(shù)據(jù)路由器160檢查多個(gè)引用點(diǎn)。在一個(gè)示例中,數(shù)據(jù)路由器160檢查HBA地址字段172的ACW索引字段176中的ACW地址位置是否在由ACW源點(diǎn)寄存器214和ACW限制寄存器216劃界的存儲(chǔ)器區(qū)域內(nèi)。在另一示例中,數(shù)據(jù)路由器160通過檢查HBA地址字段172中的CTL字段和確認(rèn)字段是否與HBA請(qǐng)求引用的ACW中的CTL字段和確認(rèn)字段匹配,來檢查HBA 154是否正使用用于HBA請(qǐng)求的正確ACW。如果這些字段不相配(compare),則信道128將利用信道控制檢查結(jié)束1/0操作。數(shù)據(jù)路由器160還檢查地址字段172中的偏移字段(例如HBA地址的低階24比特)是否等于所獲取的ACW中的下一預(yù)期的16兆字節(jié)偏移。數(shù)據(jù)路由器160還包括產(chǎn)生或檢查數(shù)據(jù)校驗(yàn)字(例如LRC、CRC)的能力,數(shù)據(jù)校驗(yàn)字允許數(shù)據(jù)路由器160檢測(cè)正傳輸?shù)臄?shù)據(jù)是否已被破壞。
例如,當(dāng)數(shù)據(jù)路由器收集要從主機(jī)存儲(chǔ)器發(fā)送到HBA 154的數(shù)據(jù)(諸如TCCB 148或輸出數(shù)據(jù))時(shí),數(shù)據(jù)路由器使用傳輸命令A(yù)CW中的數(shù)據(jù)校驗(yàn)字種子和使用TCCB數(shù)據(jù)產(chǎn)生數(shù)據(jù)校驗(yàn)字192,并將數(shù)據(jù)校驗(yàn)字插入在傳輸命令I(lǐng)U中(例如,在從IU的末端起的兩個(gè)字處)。固件利用傳輸命令I(lǐng)U首標(biāo)和長(zhǎng)度字段預(yù)計(jì)算傳輸命令A(yù)CW中的數(shù)據(jù)校驗(yàn)字種子。這允許數(shù)據(jù)校驗(yàn)字覆蓋包括在傳送的IU中跟隨數(shù)據(jù)校驗(yàn)字的長(zhǎng)度字段的整個(gè)傳輸命令I(lǐng)U。在一個(gè)實(shí)施例中,總是在字邊界上計(jì)算數(shù)據(jù)校驗(yàn)字。如果數(shù)據(jù)校驗(yàn)字覆蓋的數(shù)據(jù)的字節(jié)數(shù)的字節(jié)計(jì)數(shù)不是4的倍數(shù),則在傳送數(shù)據(jù)校驗(yàn)字之前需要填充字節(jié)來填充到字邊界。對(duì)于向控制單元118的傳送,填充字節(jié)總是O。對(duì)于對(duì)主機(jī)存儲(chǔ)器的接收,必須接受任何值的填充字節(jié)。填充字節(jié)被包括在數(shù)據(jù)校驗(yàn)字計(jì)算中。數(shù)據(jù)路由器160還產(chǎn)生在跨信道路徑的傳送期間檢查整個(gè)傳輸寫數(shù)據(jù)IU的數(shù)據(jù)校驗(yàn)字。以傳輸寫ACW中的數(shù)據(jù)校驗(yàn)字種子為起點(diǎn)產(chǎn)生此數(shù)據(jù)校驗(yàn)字,并且當(dāng)正從主機(jī)存儲(chǔ)器獲取數(shù)據(jù)時(shí),利用獲取的數(shù)據(jù)計(jì)算新數(shù)據(jù)校驗(yàn)字。當(dāng)所有數(shù)據(jù)都被獲取和傳送時(shí),接著附接結(jié)果數(shù)據(jù)校驗(yàn)字,并利用填充字節(jié)將結(jié)果數(shù)據(jù)校驗(yàn)字對(duì)齊到字邊界,諸如發(fā)送到HBA的數(shù)據(jù)的最后四個(gè)字節(jié)。TIDAW字可以具有插入填充以及設(shè)置為I的數(shù)據(jù)校驗(yàn)字標(biāo)記比特, 這將導(dǎo)致數(shù)據(jù)路由器硬件在傳輸寫數(shù)據(jù)IU中插入中間數(shù)據(jù)校驗(yàn)字??刂茊卧獙⒔邮盏臄?shù)據(jù)校驗(yàn)字與其自身計(jì)算的數(shù)據(jù)校驗(yàn)字進(jìn)行比較,以驗(yàn)證所接收的數(shù)據(jù)IU是有效的。對(duì)于從主機(jī)存儲(chǔ)器的獲取,當(dāng)TIDAW計(jì)數(shù)遞減為O并且TIDAW插入數(shù)據(jù)校驗(yàn)字標(biāo)記比特被設(shè)置為I時(shí),總是在字邊界上的填充字節(jié)之后插入和傳送計(jì)算的數(shù)據(jù)校驗(yàn)字。數(shù)據(jù)路由器160還可以產(chǎn)生檢查跨信道路徑傳送的傳輸讀數(shù)據(jù)IU的數(shù)據(jù)檢驗(yàn)字。以傳輸讀ACW中的數(shù)據(jù)校驗(yàn)字種子為起點(diǎn)計(jì)算該數(shù)據(jù)校驗(yàn)字,并且接著,當(dāng)輸入數(shù)據(jù)被存儲(chǔ)在主機(jī)存儲(chǔ)器中時(shí),利用讀取的數(shù)據(jù)計(jì)算更新的數(shù)據(jù)校驗(yàn)字。當(dāng)所有數(shù)據(jù)都已被接收并存儲(chǔ)到主機(jī)存儲(chǔ)器中時(shí),將計(jì)算的結(jié)果數(shù)據(jù)校驗(yàn)字與從設(shè)備接收的數(shù)據(jù)校驗(yàn)字進(jìn)行比較。計(jì)算的數(shù)據(jù)校驗(yàn)字與接收的數(shù)據(jù)校驗(yàn)字相配驗(yàn)證所接收的數(shù)據(jù)IU是有效的。如果兩個(gè)字段不相配,則利用接口控制檢查結(jié)束I/O操作。例如,在接收數(shù)據(jù)IU結(jié)束時(shí),如果‘?dāng)?shù)據(jù)校驗(yàn)字使能’比特3被設(shè)置為1,并且如果預(yù)期的數(shù)據(jù)校驗(yàn)字不與接收的數(shù)據(jù)校驗(yàn)字匹配,則數(shù)據(jù)路由器硬件將‘?dāng)?shù)據(jù)校驗(yàn)字失配’比特17設(shè)置為I。在一個(gè)實(shí)施例中,當(dāng)數(shù)據(jù)路由器160正從設(shè)備接收數(shù)據(jù)時(shí),在確定接收到數(shù)據(jù)校驗(yàn)字的時(shí)間中存在數(shù)據(jù)路由器160必須應(yīng)付的情形。例如,執(zhí)行計(jì)數(shù)匹配來驗(yàn)證數(shù)據(jù)校驗(yàn)字是在ACW工作計(jì)數(shù)轉(zhuǎn)變?yōu)镺之后接收的4個(gè)字節(jié)加上將該數(shù)據(jù)校驗(yàn)字放置在字邊界上的填充字節(jié)。在已經(jīng)接收了數(shù)據(jù)校驗(yàn)字之后不能再接收額外數(shù)據(jù),否則HPF-DR響應(yīng)字的比特11 (工作計(jì)數(shù)上的溢出)將被設(shè)置為I。在另一示例中,如果在控制單元118發(fā)送傳輸狀態(tài)IU時(shí)、ACW工作計(jì)數(shù)還未變?yōu)?,則遇到“早結(jié)束(early end)”條件。對(duì)于此情況,當(dāng)信道128被HBA 154用I/O完成中斷時(shí),信道128首先驗(yàn)證對(duì)于對(duì)應(yīng)的ACW、“活動(dòng)請(qǐng)求計(jì)數(shù)=O”比特被設(shè)置為1,并接著通過將ACW中作為接收的數(shù)據(jù)校驗(yàn)字的‘最后4個(gè)字節(jié)保存區(qū)域’與ACW中包含所接收的數(shù)據(jù)上的計(jì)算的數(shù)據(jù)校驗(yàn)字的‘在前數(shù)據(jù)校驗(yàn)字保存區(qū)域’進(jìn)行比較,來驗(yàn)證數(shù)據(jù)校驗(yàn)字是正確的。數(shù)據(jù)路由器硬件還計(jì)算檢查從鏈路接收的傳輸狀態(tài)IU數(shù)據(jù)的數(shù)據(jù)校驗(yàn)字。以傳輸狀態(tài)ACW中的數(shù)據(jù)校驗(yàn)字種子為起點(diǎn)計(jì)算該數(shù)據(jù)校驗(yàn)字,并且當(dāng)傳輸狀態(tài)IU數(shù)據(jù)被存儲(chǔ)在主機(jī)存儲(chǔ)器中時(shí),計(jì)算新數(shù)據(jù)校驗(yàn)字。當(dāng)所有用于IU的數(shù)據(jù)都被接收且存儲(chǔ)器到主機(jī)存儲(chǔ)器中時(shí),將計(jì)算的結(jié)果數(shù)據(jù)校驗(yàn)字與從設(shè)備接收的數(shù)據(jù)校驗(yàn)字進(jìn)行比較。計(jì)算的數(shù)據(jù)校驗(yàn)字與接收的數(shù)據(jù)校驗(yàn)字相配驗(yàn)證接收的數(shù)據(jù)IU有效。如果這兩個(gè)字段不相配,則利用接口控制檢查結(jié)束I/o操作。TIDAW及其T-TIC標(biāo)記比特的架構(gòu)允許滿足一個(gè)4k字節(jié)的高速PCI總線(PCIe)請(qǐng)求所需要的zSeries存儲(chǔ)器請(qǐng)求的數(shù)目超過12000個(gè)zSeries存儲(chǔ)器請(qǐng)求。這在如下情況中發(fā)生每個(gè)TIDAW中的字節(jié)計(jì)數(shù)字段和T-TIC標(biāo)記比特各自設(shè)置為I,其使得每個(gè)TIDAW被傳輸一信道字中的傳輸一跟隨,所述信道字是下一 TIDAW的新zSeries存儲(chǔ)器地址。用于數(shù)據(jù)路由器硬件進(jìn)行所有這些zSeries存儲(chǔ)器請(qǐng)求的時(shí)間量可能超過HBA用于一個(gè)HBA請(qǐng)求的超時(shí)時(shí)間(timeout)值。導(dǎo)致的錯(cuò)誤就像是zSeries存儲(chǔ)器超時(shí)(timeout),其指示zSeries存儲(chǔ)器子系統(tǒng)丟失了 zSeries存儲(chǔ)器請(qǐng)求。為了對(duì)滿足HBA請(qǐng)求所需要的主機(jī)存儲(chǔ)器請(qǐng)求的數(shù)量施加限制,數(shù)據(jù)路由器硬件 中的可編程請(qǐng)求閾值計(jì)數(shù)器可以限制用于滿足一個(gè)HBA請(qǐng)求的主機(jī)存儲(chǔ)器請(qǐng)求的數(shù)量。如果到達(dá)該限制,則將“存儲(chǔ)器請(qǐng)求閾值超過”(HPF-DR響應(yīng)字比特9)設(shè)置為I。當(dāng)信道硬件被初始化時(shí),設(shè)置此閾值計(jì)數(shù)器。如上所述,HBA 154被給予向或從主機(jī)存儲(chǔ)器直接存儲(chǔ)或獲取用戶數(shù)據(jù)的能力,以提高信道性能。然而,通過本地信道存儲(chǔ)器132執(zhí)行運(yùn)行在微處理器130上的固件和HBA154之間的所有通信。微處理器130通過將HBA 154處理HBA工作隊(duì)列中的I/O操作所需要的所有信息存儲(chǔ)在本地信道存儲(chǔ)器區(qū)域164中而將工作傳遞給HBA 154。同樣地,當(dāng)HBA完成了 I/O操作或I/O操作失敗時(shí),HBA將具有狀態(tài)的I/O操作返回到本地信道存儲(chǔ)器132中的固件I/O完成隊(duì)列中的信道。為了使用ACW 210處理HBA主機(jī)存儲(chǔ)器請(qǐng)求的固件、HBA 154和數(shù)據(jù)路由器硬件的正確相互作用,提供有關(guān)ACW占有時(shí)間(tenure)和ACW原子態(tài)(atomicity)的以下規(guī)則。在I/O操作期間,信道固件擁有指定用于I/O操作的四個(gè)ACW (S卩,傳輸命令A(yù)CW、傳輸讀ACW、寫數(shù)據(jù)ACW和傳輸狀態(tài)ACW),直到固件將I/O操作入隊(duì)在HBA工作隊(duì)列上時(shí)。從信道固件將I/O操作入隊(duì)在HBA工作隊(duì)列上時(shí)到HBA 154將具有狀態(tài)的I/O操作(以及四個(gè)關(guān)聯(lián)的ACW)返回到固件I/O完成隊(duì)列上的固件為止,數(shù)據(jù)路由器160以及間接地HBA154擁有用于I/O操作的四個(gè)ACW。對(duì)于成功完成的I/O操作,在HBA 154接收和處理了結(jié)束I/O操作的傳輸狀態(tài)IU之后,HBA 154將I/O操作返回到固件I/O完成隊(duì)列上的固件。除了極少的情況(例如,ACff中的固件讀丟棄比特被設(shè)置為1),在數(shù)據(jù)路由器硬件和HBA 154擁有四個(gè)ACW的時(shí)段期間,固件不更新四個(gè)ACW中的任一個(gè)的任何字段.為了使在數(shù)據(jù)路由器160的控制下向設(shè)備傳輸數(shù)據(jù)的ACW靜默(quiesce),固件使用獲取靜默硬件和邏輯310 (圖9中所示)。為了使在數(shù)據(jù)路由器160的控制下從設(shè)備接收數(shù)據(jù)的ACW靜默,固件使用固件讀丟棄比特252和存儲(chǔ)靜默硬件和邏輯312 (圖9中所示)。在一個(gè)實(shí)施例中,提供原子態(tài)規(guī)則,使得到固件在固件I/O完成隊(duì)列上接收到來自HBA 154的結(jié)束完成狀態(tài)(這將用于該I/O操作的ACW的所有權(quán)返回到固件)時(shí),已經(jīng)更新了 ACW中的IU首標(biāo)和所有狀態(tài)字段。第一規(guī)則陳述為在接收到結(jié)束完成狀態(tài)id或用于ACW的ACW狀態(tài)改變?yōu)闋顟B(tài)2之前,數(shù)據(jù)路由器硬件必須已經(jīng)將整個(gè)IU首標(biāo)信息存儲(chǔ)到該ACW中(即ACW IU首標(biāo)區(qū)域安全)。設(shè)計(jì)ACW中的固件讀丟棄比特,使得其可以被固件設(shè)置為1,而不影響數(shù)據(jù)路由器硬件與同一 ACW中的任何字段一起工作以及更新同一 ACW中的任何字段。第二規(guī)則陳述為當(dāng)數(shù)據(jù)路由器硬件將PCIe ‘具有設(shè)置為完成器異常中斷的完成狀態(tài)的事務(wù)層協(xié)議(TLP)完成’發(fā)送到HBA 154時(shí),數(shù)據(jù)路由器硬件必須確保在處理用于向本地信道存儲(chǔ)器中存儲(chǔ)的任何在后HBA請(qǐng)求之前,完成對(duì)對(duì)應(yīng)ACW的所有等待處理的更新。第三規(guī)則陳述為當(dāng)兩個(gè)背對(duì)背HBA請(qǐng)求到達(dá)路由邏輯222,并且第一請(qǐng)求被路由到存儲(chǔ)陣列隊(duì)列228,而第二請(qǐng)求被路由到本地信道存儲(chǔ)器時(shí),ACW中的活動(dòng)請(qǐng)求計(jì)數(shù)和“活動(dòng)請(qǐng)求計(jì)數(shù)=O”比特必須在將第二或后續(xù)HBA請(qǐng)求路由和存儲(chǔ)到本地信道存儲(chǔ)器中之前,由數(shù)據(jù)路由器硬件更新。存在如下情況(例如當(dāng)發(fā)生錯(cuò)誤時(shí))固件不能等待I/O操作完成而是必須阻止從主機(jī)存儲(chǔ)器獲取新HBA數(shù)據(jù)獲取請(qǐng)求或者阻止來自HBA數(shù)據(jù)存儲(chǔ)請(qǐng)求的數(shù)據(jù)被存儲(chǔ)到主機(jī)存儲(chǔ)器中。全局獲取靜默硬件310提供用于固件使數(shù)據(jù)路由器硬件擁有的且活動(dòng)地從主機(jī)存儲(chǔ)器獲取數(shù)據(jù)的ACW靜默的裝置。 為了使被設(shè)置為從主機(jī)存儲(chǔ)器獲取數(shù)據(jù)的活動(dòng)ACW靜默,固件利用固件需要被停止的ACW的索引,設(shè)置全局獲取靜默邏輯310中的ACW索引寄存器。在固件寫入了 ACW索引寄存器之后,全局獲取靜默邏輯310執(zhí)行以下操作I.將全局獲取靜默邏輯中的靜默忙碌比特設(shè)置為1,其使獲取硬件230停止處理任何新的HBA獲取或來自獲取陣列隊(duì)列226的寫請(qǐng)求,并使獲取硬件230中排隊(duì)的主機(jī)存儲(chǔ)器獲取或?qū)懻?qǐng)求停止被傳輸?shù)教幚磉壿?34用于向主機(jī)存儲(chǔ)器傳送。然而,已在排隊(duì)且當(dāng)前正在處理邏輯234和傳送邏輯234中或者在接收邏輯240和路由邏輯242中處理的主機(jī)存儲(chǔ)器獲取請(qǐng)求不受影響;2.取消(scrub)已在獲取硬件230中排隊(duì)的主機(jī)存儲(chǔ)器獲取請(qǐng)求,并且標(biāo)記獲取硬件230中具有目標(biāo)ACW索引的任何主機(jī)存儲(chǔ)器獲取請(qǐng)求,以便在主機(jī)存儲(chǔ)器請(qǐng)求被以后處理時(shí),強(qiáng)制(force)具有完成狀態(tài)的TLP完成被設(shè)置為完成器異常中斷;3.在目標(biāo)ACW中,將寫丟棄比特(ACW狀態(tài)250比特3)設(shè)置為I ;4.接著解凍數(shù)據(jù)路由器硬件,并且現(xiàn)在處理在獲取硬件230中排隊(duì)的主機(jī)存儲(chǔ)器獲取請(qǐng)求以及獲取陣列隊(duì)列226中排隊(duì)的HBA獲取請(qǐng)求;以及5.重置全局獲取靜默邏輯中的靜默忙碌比特。在固件設(shè)置了全局獲取靜默邏輯310中的ACW索引寄存器之后,固件監(jiān)視靜默忙碌比特,以確定全局獲取靜默邏輯310完成靜默操作的時(shí)間。一旦靜默操作已經(jīng)完成,則固件可以依賴以下I.獲取硬件230中排隊(duì)的具有目標(biāo)ACW的索引的任何主機(jī)存儲(chǔ)器獲取請(qǐng)求將接收“具有設(shè)置為完成器異常中斷的完成狀態(tài)的TLP完成”。2.由于在此ACW中寫丟棄比特(ACW狀態(tài)250比特3)被設(shè)置為1,所以將利用“具有設(shè)置為完成器異常中斷的完成狀態(tài)的TLP完成”響應(yīng)獲取陣列隊(duì)列226中排隊(duì)的任何HBA請(qǐng)求或來自HBA的針對(duì)目標(biāo)ACW的任何新HBA請(qǐng)求。當(dāng)HBA 154接收到“具有設(shè)置為完成器異常中斷的完成狀態(tài)的TLP完成”時(shí),HBA154向控制單元118和設(shè)備116發(fā)送針對(duì)I/O操作的異常中斷。當(dāng)HBA 154已經(jīng)接收到來自設(shè)備116的完成該異常中斷序列的響應(yīng)時(shí),HBA 154將通過本地信道存儲(chǔ)器中的固件I/O完成隊(duì)列將該I/O操作返回到固件。還可能存在以下情況固件需要阻止(靜默)任何新HBA數(shù)據(jù)存儲(chǔ)請(qǐng)求存儲(chǔ)到主機(jī)存儲(chǔ)器中用于I/o操作。通過固件讀丟棄比特提供此能力。固件將ACW中的固件讀丟棄比特252設(shè)置為1,則在存儲(chǔ)陣列隊(duì)列228中排隊(duì)的所有新的和現(xiàn)有的HBA請(qǐng)求都將被存儲(chǔ)硬件232丟棄。隨著使數(shù)據(jù)路由器160丟棄針對(duì)ACW的HBA存儲(chǔ)請(qǐng)求,固件還可以具有確定存儲(chǔ)硬件232向主機(jī)存儲(chǔ)器作出的針對(duì)ACW的所有在前主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求何時(shí)以主機(jī)存儲(chǔ)器完成響應(yīng)完成的能力。在路由邏輯242處接收王機(jī)存儲(chǔ)器完成響應(yīng),王機(jī)存儲(chǔ)器完成響應(yīng)被路由到作出請(qǐng)求的請(qǐng)求器,并接著以與作出請(qǐng)求相同的順序處理,包括遞減全局存儲(chǔ)靜默邏輯312中的計(jì)數(shù)器。全局存儲(chǔ)靜默邏輯和硬件312提供用于固件獲知存儲(chǔ)硬件232向主機(jī)存儲(chǔ)器作出的所有在前主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求已經(jīng)完成的時(shí)間的方法。一旦ACW中讀丟棄比特被設(shè)置為1,則獲知對(duì)于該ACW所有在前主機(jī)存儲(chǔ)器存儲(chǔ) 請(qǐng)求已經(jīng)完成的方法將要等待,直到主機(jī)存儲(chǔ)器管線(pipeline)(由處理邏輯234、傳送邏輯236、接收邏輯240和路由邏輯242表示)中排隊(duì)的所有當(dāng)前HBA存儲(chǔ)請(qǐng)求都已被處理。為了在不使新存儲(chǔ)請(qǐng)求停止在存儲(chǔ)陣列隊(duì)列中排隊(duì)并且不停止對(duì)存儲(chǔ)陣列隊(duì)列中的現(xiàn)有條目的處理的情況下進(jìn)行這一點(diǎn),利用主機(jī)存儲(chǔ)器管線中排隊(duì)的條目的當(dāng)前總數(shù)加載快照(snapshot)計(jì)數(shù)器。接著對(duì)接收的每個(gè)主機(jī)存儲(chǔ)器響應(yīng)遞減此快照計(jì)數(shù)器。接著,當(dāng)快照計(jì)數(shù)器達(dá)到O時(shí),固件知道已經(jīng)處理了用于感興趣的ACW的存儲(chǔ)器管線位置中的隊(duì)列中排隊(duì)的所有在前主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求。可以通過由以下計(jì)數(shù)器構(gòu)成的全局存儲(chǔ)靜默硬件312執(zhí)行此功能I.全局活動(dòng)請(qǐng)求計(jì)數(shù)器追蹤主機(jī)存儲(chǔ)器管線中排隊(duì)的針對(duì)所有ACW的HBA存儲(chǔ)請(qǐng)求的總數(shù)。此計(jì)數(shù)器在每次數(shù)據(jù)路由器硬件232向主機(jī)存儲(chǔ)器產(chǎn)生HBA存儲(chǔ)請(qǐng)求時(shí)遞增,并且在每次確認(rèn)(如通過返回的主機(jī)存儲(chǔ)器響應(yīng)而完成,該主機(jī)存儲(chǔ)器響應(yīng)從路由邏輯242路由到數(shù)據(jù)路由器控制邏輯)完成了 HBA存儲(chǔ)請(qǐng)求的最終主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求時(shí)遞減。在某些實(shí)施例中,一個(gè)HBA存儲(chǔ)請(qǐng)求可以需要高至16個(gè)主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求,以存儲(chǔ)HBA存儲(chǔ)請(qǐng)求中的所有數(shù)據(jù)。2.全局活動(dòng)快照計(jì)數(shù)器僅遞減而永不遞增。在固件的控制下利用全局活動(dòng)請(qǐng)求計(jì)數(shù)器的當(dāng)前值加載此計(jì)數(shù)器。利用遞減“全局活動(dòng)請(qǐng)求計(jì)數(shù)器”的相同信號(hào)遞減此計(jì)數(shù)器。一旦此計(jì)數(shù)器遞減為0,其保持為0,直到固件以全局活動(dòng)請(qǐng)求計(jì)數(shù)器的新復(fù)本再次加載為止。固件可以讀取全局活動(dòng)快照計(jì)數(shù)器,以確定其何時(shí)已變?yōu)镺。以下過程可以由固件用于使之前設(shè)置的ACW停止,將數(shù)據(jù)存儲(chǔ)到主機(jī)存儲(chǔ)器中,并接著確定針對(duì)該ACW的所有在前主機(jī)存儲(chǔ)器請(qǐng)求完成的時(shí)間I.固件將每個(gè)受影響的ACW中的‘固件讀丟棄’比特設(shè)置為1,其被設(shè)置來將數(shù)據(jù)存儲(chǔ)到主機(jī)存儲(chǔ)器中;2.固件將全局活動(dòng)請(qǐng)求計(jì)數(shù)器傳輸?shù)饺只顒?dòng)快照計(jì)數(shù)器。接著,當(dāng)每個(gè)主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求完成時(shí),遞減全局活動(dòng)快照計(jì)數(shù)器。3.固件輪詢(poll)全局活動(dòng)快照計(jì)數(shù)器,直到其讀到O。現(xiàn)在,對(duì)于使固件讀丟棄比特設(shè)置為I的所有感興趣的ACW,已經(jīng)完成了在固件將全局活動(dòng)請(qǐng)求計(jì)數(shù)器傳輸?shù)饺只顒?dòng)快照計(jì)數(shù)器時(shí)作出的所有主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求。將沒有其它主機(jī)存儲(chǔ)器存儲(chǔ)請(qǐng)求由數(shù)據(jù)路由器硬件代表這些ACW作出。在某些實(shí)例中,數(shù)據(jù)路由器硬件可以以與從設(shè)備傳送數(shù)據(jù)的順序不同的順序接收來自HBA的數(shù)據(jù)。這導(dǎo)致一問題必須以與在傳輸數(shù)據(jù)時(shí)原始產(chǎn)生數(shù)據(jù)校驗(yàn)字的順序相同的數(shù)據(jù)順序計(jì)算對(duì)接收的數(shù)據(jù)的某些類型的數(shù)據(jù)校驗(yàn)字計(jì)算。數(shù)據(jù)路由器硬件利用下一預(yù)期的16兆字節(jié)偏移字段檢測(cè)此條件。當(dāng)處理每個(gè)HBA獲取或存儲(chǔ)請(qǐng)求時(shí),數(shù)據(jù)路由器硬件相對(duì)于ACW中的下一預(yù)期的16兆字節(jié)偏移字段檢查HBA請(qǐng)求中的PCIe 16兆字節(jié)偏移。如果它們匹配,則數(shù)據(jù)路由器將將下一預(yù)期的16兆字節(jié)偏移字段遞增HBA事務(wù)的大小,向或從數(shù)據(jù)存儲(chǔ)器移動(dòng)數(shù)據(jù),并處理數(shù)據(jù)校驗(yàn)字。如果所述字段不匹配并且HBA地址大于預(yù)期的HBA地址,則當(dāng)前HBA事務(wù)被數(shù)據(jù)路由器硬件以亂序接收,并且數(shù)據(jù)路由器硬件將此HBA請(qǐng)求重新入隊(duì)在存儲(chǔ)或獲取陣列隊(duì)列的底部。HBA請(qǐng)求被第一次入隊(duì)在隊(duì)列的底部時(shí),在用于該HBA請(qǐng)求的控制數(shù)據(jù)中寫入時(shí)間戳。此控制數(shù)據(jù)被用于追蹤隊(duì)列中的HBA請(qǐng)求。每次幀“冒(bubble)”到隊(duì)列的頂部用于再次處理、并且由于未接收到具有匹配的16兆字節(jié)偏移字段的HBA請(qǐng)求而必須被重入隊(duì) 時(shí),檢查時(shí)間戳。如果時(shí)間戳超過可配置的“生存時(shí)間”(即超時(shí)時(shí)段),則該HBA請(qǐng)求在其上等待的在前幀被認(rèn)為丟失了。當(dāng)檢測(cè)到丟失幀的情形時(shí),將ACW丟失HBA請(qǐng)求(HPF-DR響應(yīng)字比特8)設(shè)置為I。用于主機(jī)存儲(chǔ)器存儲(chǔ)的亂序HBA請(qǐng)求可以被如下處理。一旦ACW丟失HBA請(qǐng)求比特被設(shè)置為1,則用于此HBA請(qǐng)求的載荷被丟棄,并且讀丟棄比特252也被設(shè)置為I。這確保丟棄針對(duì)此ACW的具有要存儲(chǔ)在主機(jī)存儲(chǔ)器中的數(shù)據(jù)的所有后續(xù)HBA請(qǐng)求。然而,如果存在,任何首標(biāo)信息總是被存儲(chǔ)在ACW中且永不被丟棄。當(dāng)每個(gè)HBA請(qǐng)求被丟棄時(shí),在ACW中遞減活動(dòng)請(qǐng)求計(jì)數(shù)290,完全與當(dāng)常規(guī)處理HBA請(qǐng)求時(shí)一樣進(jìn)行。對(duì)于被丟棄的HBA請(qǐng)求,不檢查16兆字節(jié)偏移。在固件從HBA接收到針對(duì)此I/O操作的完成中斷之后,固件檢查來看用于此ACW的活動(dòng)請(qǐng)求計(jì)數(shù)290是否已經(jīng)變?yōu)镺。當(dāng)活動(dòng)請(qǐng)求計(jì)數(shù)已變?yōu)镺時(shí),針對(duì)此ACW的存儲(chǔ)陣列隊(duì)列中的所有HBA請(qǐng)求都已被處理。對(duì)于接收的將數(shù)據(jù)存儲(chǔ)到主機(jī)存儲(chǔ)器中的HBA請(qǐng)求中的16兆字節(jié)偏移180小于下一預(yù)期的16兆字節(jié)偏移264的情況,丟棄此請(qǐng)求,因?yàn)橛糜诖苏?qǐng)求的數(shù)據(jù)之前已被存儲(chǔ)在主機(jī)存儲(chǔ)器中。因?yàn)橹按鎯?chǔ)的數(shù)據(jù)被用于計(jì)算ACW中的數(shù)據(jù)校驗(yàn)字的當(dāng)前值,所以如果存儲(chǔ)在主機(jī)存儲(chǔ)器中的在前數(shù)據(jù)不正確,則數(shù)據(jù)校驗(yàn)字將標(biāo)記錯(cuò)誤。用于主機(jī)存儲(chǔ)器獲取的亂序HBA請(qǐng)求可以被如下處理。一旦在ACW中丟失HBA請(qǐng)求比特被設(shè)置為1,并且在等待丟失的HBA獲取請(qǐng)求時(shí)“生存時(shí)間”過期,則數(shù)據(jù)路由器硬件將利用具有設(shè)置為完成器異常中斷的完成狀態(tài)的TLP完成響應(yīng)HBA獲取請(qǐng)求,并在此ACW中將寫丟棄比特252設(shè)置為1,以確保將利用具有設(shè)置為完成器異常中斷的完成狀態(tài)的TLP完成響應(yīng)針對(duì)此ACW接收的所有后續(xù)HBA獲取請(qǐng)求。對(duì)于接收的用于從主機(jī)存儲(chǔ)器獲取數(shù)據(jù)的HBA請(qǐng)求中的地址小于下一預(yù)期偏移的實(shí)例,數(shù)據(jù)路由器硬件將利用具有設(shè)置為完成器異常中斷的完成狀態(tài)的TLP完成響應(yīng)該請(qǐng)求。示例實(shí)施例的技術(shù)效果和益處包括經(jīng)由信道直接訪問主機(jī)存儲(chǔ)器的網(wǎng)絡(luò)接口的能力,同時(shí)在不需要在信道中存儲(chǔ)輸入或輸出數(shù)據(jù)的情況下,提供信道存儲(chǔ)首標(biāo)信息和提供錯(cuò)誤檢查的能力。通過允許直接尋址主機(jī)存儲(chǔ)器,這里所描述的系統(tǒng)和方法允許安裝高性能的HBA (例如,支持8Gbit或以上的鏈路速度),而不需要重新設(shè)計(jì)存儲(chǔ)和轉(zhuǎn)換信道模型來提供微處理器速度和本地信道存儲(chǔ)器寬度,以支持這樣的高性能HBA。它們還提供用于當(dāng)前提供的失敗HBA的錯(cuò)誤檢查的必要隔離。此外,這里所描述的系統(tǒng)和方法允許使用僅配置有一個(gè)地址空間的HBA尋址主機(jī)存儲(chǔ)器中的多個(gè)地址空間。利用使HBA直接尋址主機(jī)存儲(chǔ)器的方法,不必重新設(shè)計(jì)本地信道存儲(chǔ)器的微處理器性能和帶寬要求來滿足新HBA提高的性能要求。其它技術(shù)效果包括提供向附接的HBA給出訪問主機(jī)存儲(chǔ)器中的任何區(qū)中的任何地址、以及本地信道存儲(chǔ)器中的區(qū)域的能力的裝置;提供獲得HBA與用于當(dāng)前信道實(shí)施方式而存在的zSeries主機(jī)的等效隔離的裝置;提供當(dāng)數(shù)據(jù)路由 器從或向主機(jī)存儲(chǔ)器獲取或存儲(chǔ)用于該IU的數(shù)據(jù)時(shí),信道在輸出IU上插入信息單元(IU)首標(biāo)信息,以及移除來自進(jìn)入的IU的IU首標(biāo)信息且將來自進(jìn)入的IU的IU首標(biāo)信息本地地存儲(chǔ)在信道中的裝置;提供在進(jìn)入的數(shù)據(jù)上驗(yàn)證數(shù)據(jù)校驗(yàn)字,以及在TIDAL的控制下和在數(shù)據(jù)路由器向或從主機(jī)存儲(chǔ)器存儲(chǔ)或獲取數(shù)據(jù)時(shí)輸出數(shù)據(jù)的末尾處,產(chǎn)生和插入中間數(shù)據(jù)檢驗(yàn)字到輸出數(shù)據(jù)上的裝置;提供在未以正確的邏輯幀順序從HBA接收到HBA請(qǐng)求的情況下,重新排序從HBA接收的請(qǐng)求,以及檢查HBA請(qǐng)求或幀是否丟失的裝置;提供在不干擾任何其它活動(dòng)I/O操作的情況下,結(jié)束許多I/O操作中該數(shù)據(jù)路由器可能正與其一起工作的一個(gè)I/O操作的好裝置;并且提供檢測(cè)是否正在使用不實(shí)際但架構(gòu)上有效的傳輸間接數(shù)據(jù)地址列表的裝置,該傳輸間接數(shù)據(jù)地址列表需要處理額外的主機(jī)存儲(chǔ)器請(qǐng)求,因此防止主機(jī)存儲(chǔ)器請(qǐng)求被即時(shí)地處理。這里所使用的詞匯僅是為了描述特定實(shí)施例的目的,而不意在作為本發(fā)明的限制。如這里所適用的,單數(shù)形式也意在包括復(fù)數(shù)形式,除非上下文清楚地指出不是如此。還將理解,術(shù)語(yǔ)“包括”和/或“包含”當(dāng)被用于本說明書中時(shí),表明存在所述特征、整數(shù)、步驟、操作、元素和/或組件,但不排除一個(gè)或多個(gè)其它特征、整數(shù)、步驟、操作、元素、組件和/或其組合的存在或添加。權(quán)利要求中的所有裝置或步驟以及功能單元的對(duì)應(yīng)結(jié)構(gòu)、材料、動(dòng)作和等同體意在包括任何結(jié)構(gòu)、材料或動(dòng)作,用于與這里特別要求權(quán)利的其它要求權(quán)利組合地執(zhí)行功能。已經(jīng)為了示例性和說明性的目的呈現(xiàn)了本發(fā)明的說明,但該說明不意在是窮舉的或?qū)⒈景l(fā)明限制到所公開的形式。對(duì)于本領(lǐng)域的普通技術(shù)人員而言將很明顯,在不偏移本發(fā)明的范圍和精神的情況下可以進(jìn)行許多修改和改變。為了更好地說明本發(fā)明的原理和實(shí)際應(yīng)用,以及為了使得本領(lǐng)域的其它普通技術(shù)人員能夠針對(duì)具有適于所構(gòu)思的特定適用的各種修改的各種實(shí)施例理解本發(fā)明,而選擇和說明了實(shí)施例。如本領(lǐng)域的技術(shù)人員將理解的,本發(fā)明的各個(gè)方面可以被實(shí)施為系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明的各方面可以采用完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、常駐軟件、微代碼等)或者包含軟件和硬件方面的實(shí)施例的形式,這里它們可以全部一般地稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的各個(gè)方面可以采用在一個(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)中實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式,所述介質(zhì)中包含計(jì)算機(jī)可讀程序代碼??梢允褂靡粋€(gè)或多個(gè)計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可讀介質(zhì)可以是計(jì)算機(jī)可讀信號(hào)介質(zhì)或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如可以是但不限于電子、磁、光、電磁、紅外、或半導(dǎo)體系統(tǒng)、裝置、器件、或前者的任何合適的組合。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的更具體的示例(非窮舉列表)將包括以下具有一個(gè)或多個(gè)線的電連接、便攜式計(jì)算機(jī)盤、硬盤、隨機(jī)訪問存儲(chǔ)器(RAM)、只讀存儲(chǔ)器、可擦除可編程只讀存儲(chǔ)器(EPROM或閃存存儲(chǔ)器)、光纖、便攜式光盤只讀存儲(chǔ)器(CDROM)、光存儲(chǔ)器、磁存儲(chǔ)器、或者前者的任何合適的組合。在此文件的上下文中,計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以是任何有形介質(zhì),其包含或存儲(chǔ)用于與指令執(zhí)行系統(tǒng)、裝置或器件一起使用的程序。計(jì)算機(jī)可讀的信號(hào)介質(zhì)可包括在基帶中或者作為載波一部分傳播的、其中體現(xiàn)計(jì)算機(jī)可讀的程序碼的傳播的數(shù)據(jù)信號(hào)。這種傳播的信號(hào)可以采用多種形式,包括但不限于電磁信號(hào)、光信號(hào)或任何以上合適的組合。計(jì)算機(jī)可讀的信號(hào)介質(zhì)可以是并非為計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)、但是能發(fā)送、傳播或者傳輸用于由指令執(zhí)行系統(tǒng)、裝置或者器件使用或者與其結(jié)合使用的程序的任何計(jì)算機(jī)可讀介質(zhì)??梢允褂萌魏魏线m的介質(zhì)傳送實(shí)施在計(jì)算機(jī)可讀介質(zhì)上的程序,包括但不限于無線、有線、光纖纜線、RF等,或者前者的任意合適的組合。

可以用一個(gè)或多個(gè)編程語(yǔ)言的任意組合編寫用于執(zhí)行本發(fā)明的各個(gè)方面的操作的計(jì)算機(jī)程序代碼,包括面向?qū)ο蟮木幊陶Z(yǔ)言(諸如Java、Smalltalk、C++等)以及傳統(tǒng)的過程編程語(yǔ)言(諸如“C”編程語(yǔ)言等)。程序代碼可以全部在用戶的計(jì)算機(jī)上執(zhí)行,部分在用戶的計(jì)算機(jī)上執(zhí)行,作為獨(dú)立地軟件包執(zhí)行,部分在用戶的計(jì)算機(jī)上部分在遠(yuǎn)程計(jì)算機(jī)上執(zhí)行,或者完全在遠(yuǎn)程計(jì)算機(jī)或服務(wù)器上執(zhí)行。在后一情形中,遠(yuǎn)程計(jì)算機(jī)可以通過任何類型的網(wǎng)絡(luò)(包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN))連接到用戶的計(jì)算機(jī),或者可以連接到外部計(jì)算機(jī)(例如,使用因特網(wǎng)服務(wù)提供商通過因特網(wǎng))。下面參照根據(jù)本發(fā)明的實(shí)施例的方法、裝置(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或框圖說明本發(fā)明的各個(gè)方面。本領(lǐng)域的普通技術(shù)人員將理解,可以通過計(jì)算機(jī)程序指令實(shí)施流程圖和/或框圖的每個(gè)塊以及流程圖和/或框圖中的塊的組合。這些計(jì)算機(jī)程序指令可以被提供給通用計(jì)算機(jī)、專用計(jì)算機(jī)、或者其他可編程數(shù)據(jù)處理設(shè)備的處理器,以產(chǎn)生機(jī)器,從而經(jīng)由計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令創(chuàng)建用于實(shí)施流程圖和/或框圖中指定的功能/動(dòng)作的裝置(means)。這些計(jì)算機(jī)程序指令也可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,其指引計(jì)算機(jī)、其他可編程數(shù)據(jù)處理設(shè)備或其他裝置以特定的方式工作,從而存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令產(chǎn)生產(chǎn)品,該產(chǎn)品包括實(shí)施流程圖和/或框圖中指定的功能/動(dòng)作的指令。計(jì)算機(jī)程序指令也可以被加載到計(jì)算機(jī)、其他可編程數(shù)據(jù)處理設(shè)備或其他裝置中,以使得在計(jì)算機(jī)、其他可編程數(shù)據(jù)處理設(shè)備或其他裝置中執(zhí)行一系列操作步驟,以便產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)施流程圖和/或框圖中指定的功能/動(dòng)作的進(jìn)程。這里所描繪的流程圖僅是一個(gè)示例。對(duì)于這里所描述的此圖或步驟(或操作)可以存在各種變型,而不偏離本發(fā)明的精神。例如,可以以不同的順序執(zhí)行這些步驟,或者可以添加、刪除或修改步驟。所有這些變型被認(rèn)為是所要求權(quán)利的發(fā)明的一部分。雖然已經(jīng)描述了本發(fā)明的優(yōu)選實(shí)施例,但將理解,本領(lǐng)域的技術(shù)人員現(xiàn)在以及將來可以進(jìn)行各種改進(jìn)和增強(qiáng),其也落入所附權(quán)利要求的范圍內(nèi)。這些權(quán)利要求被構(gòu)造為保持對(duì)首次描述的發(fā)明的合適保護(hù)。
權(quán)利要求
1.一種在配置用于與控制單元通信的主機(jī)計(jì)算機(jī)系統(tǒng)中執(zhí)行輸入/輸出(I/o)處理操作的方法,所述方法包括 在所述主機(jī)計(jì)算機(jī)系統(tǒng)中的信道子系統(tǒng)處獲取有關(guān)I/o操作的信息,所述信道子系統(tǒng)包括具有信道處理器和本地信道存儲(chǔ)器的至少一個(gè)信道; 產(chǎn)生至少一個(gè)地址控制字(ACW),所述至少一個(gè)ACW指定一個(gè)或多個(gè)主機(jī)存儲(chǔ)器位置,用于在所述主機(jī)計(jì)算機(jī)系統(tǒng)和所述控制單元之間傳輸數(shù)據(jù),并且將所述至少一個(gè)ACW存儲(chǔ)在所述本地信道存儲(chǔ)器中,所述至少一個(gè)ACW包括數(shù)據(jù)丟棄字段; 為由所述I/O操作指定的每個(gè)數(shù)據(jù)傳輸產(chǎn)生地址控制結(jié)構(gòu),并將每個(gè)地址控制結(jié)構(gòu)從所述至少一個(gè)信道轉(zhuǎn)發(fā)到所述信道子系統(tǒng)與至少一個(gè)I/O設(shè)備之間的網(wǎng)絡(luò)接口,每個(gè)地址控制結(jié)構(gòu)指定對(duì)應(yīng)ACW在所述本地信道存儲(chǔ)器中的位置; 經(jīng)由所述網(wǎng)絡(luò)接口將I/O命令消息轉(zhuǎn)發(fā)到所述至少一個(gè)I/O設(shè)備; 響應(yīng)于所述I/O命令消息,從所述網(wǎng)絡(luò)接口接收一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,每個(gè)數(shù)據(jù)傳輸請(qǐng)求包括對(duì)應(yīng)地址控制結(jié)構(gòu)指定的位置信息; 訪問數(shù)據(jù)傳輸請(qǐng)求中的地址字段指定的本地信道存儲(chǔ)器位置處的ACW,并將所述數(shù)據(jù)傳輸請(qǐng)求路由到所述ACW中指定的主機(jī)存儲(chǔ)器位置;以及 響應(yīng)于在所述訪問和所述路由中的至少一個(gè)期間遇到錯(cuò)誤,丟棄所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,并將所述數(shù)據(jù)丟棄字段設(shè)置為指示所述信道丟棄與所述ACW關(guān)聯(lián)的任何后續(xù)數(shù)據(jù)傳輸請(qǐng)求的值。
2.如權(quán)利要求I所述的方法,其中所述數(shù)據(jù)丟棄字段是所述ACW中的丟棄比特,并且設(shè)置所述丟棄比特包括將所述值從O設(shè)為I。
3.如權(quán)利要求I所述的方法,響應(yīng)于所述信道接收后續(xù)數(shù)據(jù)傳輸請(qǐng)求,訪問所述ACW,并且響應(yīng)于所述丟棄比特具有I的值,丟棄所述后續(xù)數(shù)據(jù)傳輸請(qǐng)求。
4.如權(quán)利要求I所述的方法,其中接收所述數(shù)據(jù)傳輸請(qǐng)求包括 將所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求中的每個(gè)路由到從獲取陣列隊(duì)列和存儲(chǔ)陣列隊(duì)列中選擇的請(qǐng)求隊(duì)列,所述獲取陣列隊(duì)列配置為保存針對(duì)所述主機(jī)存儲(chǔ)器中的輸出數(shù)據(jù)的一個(gè)或多個(gè)連續(xù)的輸出數(shù)據(jù)請(qǐng)求,所述存儲(chǔ)陣列隊(duì)列配置為保存用于將輸入數(shù)據(jù)存儲(chǔ)到所述主機(jī)存儲(chǔ)器中的一個(gè)或多個(gè)連續(xù)的輸入數(shù)據(jù)請(qǐng)求;以及 當(dāng)數(shù)據(jù)傳輸請(qǐng)求到達(dá)所述請(qǐng)求隊(duì)列的頂部時(shí),將所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求從所述請(qǐng)求隊(duì)列路由到處理邏輯,所述處理邏輯配置為產(chǎn)生主機(jī)存儲(chǔ)器請(qǐng)求。
5.如權(quán)利要求4所述的方法,其中所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求包括一個(gè)或多個(gè)輸出數(shù)據(jù)請(qǐng)求,所述一個(gè)或多個(gè)輸出數(shù)據(jù)請(qǐng)求請(qǐng)求傳輸來自所述主機(jī)存儲(chǔ)器的輸出數(shù)據(jù),并包括傳輸寫數(shù)據(jù)ACW的本地信道存儲(chǔ)器地址, 并且所述丟棄包括 使所述獲取陣列隊(duì)列中的一個(gè)或多個(gè)輸出數(shù)據(jù)請(qǐng)求以及任何后續(xù)輸出數(shù)據(jù)請(qǐng)求停止被傳輸?shù)剿鎏幚磉壿?;以? 將所述傳輸寫數(shù)據(jù)ACW中的丟棄比特設(shè)置為I。
6.如權(quán)利要求5所述的方法,還包括丟棄具有對(duì)應(yīng)于所述傳輸寫數(shù)據(jù)ACW的地址控制結(jié)構(gòu)的任何輸入數(shù)據(jù)傳輸請(qǐng)求和任何主機(jī)存儲(chǔ)器請(qǐng)求,以及以異常中斷狀態(tài)響應(yīng)所述一個(gè)或多個(gè)輸出數(shù)據(jù)傳輸請(qǐng)求。
7.如權(quán)利要求4所述的方法,其中所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求包括一個(gè)或多個(gè)輸入數(shù)據(jù)請(qǐng)求,所述一個(gè)或多個(gè)輸入數(shù)據(jù)請(qǐng)求請(qǐng)求向所述主機(jī)存儲(chǔ)器中傳輸輸入數(shù)據(jù)、并且包括傳輸讀數(shù)據(jù)ACW的本地信道存儲(chǔ)器地址, 并且所述丟棄包括 使所述存儲(chǔ)陣列隊(duì)列中的一個(gè)或多個(gè)輸入數(shù)據(jù)請(qǐng)求以及任何后續(xù)輸入數(shù)據(jù)請(qǐng)求停止被傳輸?shù)剿鎏幚磉壿?;以? 將所述傳輸讀數(shù)據(jù)ACW中的丟棄比特設(shè)置為I。
8.如權(quán)利要求7所述的方法,丟棄還包括 利用對(duì)應(yīng)于已根據(jù)從所述存儲(chǔ)陣列隊(duì)列路由來的輸入數(shù)據(jù)請(qǐng)求產(chǎn)生并在所述處理邏輯中等待處理的主機(jī)存儲(chǔ)器請(qǐng)求的數(shù)目的值設(shè)置計(jì)數(shù)器; 針對(duì)從所述主機(jī)存儲(chǔ)器接收的每個(gè)主機(jī)存儲(chǔ)器響應(yīng)而遞減所述值,直到所述值為指示所有主機(jī)存儲(chǔ)器響應(yīng)都已被接收的O值;以及 防止作出對(duì)應(yīng)于所述傳輸讀數(shù)據(jù)ACW的任何其它主機(jī)存儲(chǔ)器請(qǐng)求。
9.一種在配置用于與控制單元通信的主機(jī)計(jì)算機(jī)系統(tǒng)中執(zhí)行輸入/輸出(I/O)處理操作的裝置,所述主機(jī)計(jì)算機(jī)系統(tǒng)包括信道子系統(tǒng),所述信道子系統(tǒng)配置為經(jīng)由網(wǎng)絡(luò)接口與所述控制單元通信,所述信道子系統(tǒng)配置為執(zhí)行 在所述主機(jī)計(jì)算機(jī)系統(tǒng)中的信道子系統(tǒng)處獲取有關(guān)I/O操作的信息,所述信道子系統(tǒng)包括具有信道處理器和本地信道存儲(chǔ)器的至少一個(gè)信道; 產(chǎn)生至少一個(gè)地址控制字(ACW),所述至少一個(gè)ACW指定一個(gè)或多個(gè)主機(jī)存儲(chǔ)器位置,用于在所述主機(jī)計(jì)算機(jī)系統(tǒng)和所述控制單元之間傳輸數(shù)據(jù),并且將所述至少一個(gè)ACW存儲(chǔ)在所述本地信道存儲(chǔ)器中,所述至少一個(gè)ACW包括數(shù)據(jù)丟棄字段; 為由所述I/O操作指定的每個(gè)數(shù)據(jù)傳輸產(chǎn)生地址控制結(jié)構(gòu),并將每個(gè)地址控制結(jié)構(gòu)從所述至少一個(gè)信道轉(zhuǎn)發(fā)到所述信道子系統(tǒng)與至少一個(gè)I/O設(shè)備之間的網(wǎng)絡(luò)接口,每個(gè)地址控制結(jié)構(gòu)指定對(duì)應(yīng)ACW在所述本地信道存儲(chǔ)器中的位置; 經(jīng)由所述網(wǎng)絡(luò)接口將I/O命令消息轉(zhuǎn)發(fā)到所述至少一個(gè)I/O設(shè)備; 響應(yīng)于所述I/O命令消息,從所述網(wǎng)絡(luò)接口接收一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,每個(gè)數(shù)據(jù)傳輸請(qǐng)求包括對(duì)應(yīng)地址控制結(jié)構(gòu)指定的位置信息; 訪問數(shù)據(jù)傳輸請(qǐng)求中的地址字段指定的本地信道存儲(chǔ)器位置處的ACW,并將所述數(shù)據(jù)傳輸請(qǐng)求路由到所述ACW中指定的主機(jī)存儲(chǔ)器位置;以及 響應(yīng)于在所述訪問和所述路由中的至少一個(gè)期間遇到錯(cuò)誤,丟棄所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,并將所述數(shù)據(jù)丟棄字段設(shè)置為指示所述信道丟棄與所述ACW關(guān)聯(lián)的任何后續(xù)數(shù)據(jù)傳輸請(qǐng)求的值。
10.如權(quán)利要求9所述的裝置,其中所述數(shù)據(jù)丟棄字段是所述ACW中的丟棄比特,并且設(shè)置所述丟棄比特包括將所述值從0設(shè)為I。
11.如權(quán)利要求9所述的裝置,響應(yīng)于所述信道接收后續(xù)數(shù)據(jù)傳輸請(qǐng)求,訪問所述ACW,并且響應(yīng)于所述丟棄比特具有I的值,丟棄所述后續(xù)數(shù)據(jù)傳輸請(qǐng)求。
12.如權(quán)利要求9所述的裝置,其中接收所述數(shù)據(jù)傳輸請(qǐng)求包括 將所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求中的每個(gè)路由到從獲取陣列隊(duì)列和存儲(chǔ)陣列隊(duì)列中選擇的請(qǐng)求隊(duì)列,所述獲取陣列隊(duì)列配置為保存針對(duì)所述主機(jī)存儲(chǔ)器中的輸出數(shù)據(jù)的一個(gè)或多個(gè)連續(xù)的輸出數(shù)據(jù)請(qǐng)求,所述存儲(chǔ)陣列隊(duì)列配置為保存用于將輸入數(shù)據(jù)存儲(chǔ)到所述主機(jī)存儲(chǔ)器中的一個(gè)或多個(gè)連續(xù)的輸入數(shù)據(jù)請(qǐng)求;以及 當(dāng)數(shù)據(jù)傳輸請(qǐng)求到達(dá)所述請(qǐng)求隊(duì)列的頂部時(shí),將所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求從所述請(qǐng)求隊(duì)列路由到處理邏輯,所述處理邏輯配置為產(chǎn)生主機(jī)存儲(chǔ)器請(qǐng)求。
13.如權(quán)利要12所述的裝置,其中所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求包括一個(gè)或多個(gè)輸出數(shù)據(jù)請(qǐng)求,所述一個(gè)或多個(gè)輸出數(shù)據(jù)請(qǐng)求請(qǐng)求傳輸來自所述主機(jī)存儲(chǔ)器的輸出數(shù)據(jù),并包括傳輸寫數(shù)據(jù)ACW的本地信道存儲(chǔ)器地址, 并且所述丟棄包括 使所述獲取陣列隊(duì)列中的一個(gè)或多個(gè)輸出數(shù)據(jù)請(qǐng)求以及任何后續(xù)輸出數(shù)據(jù)請(qǐng)求停止被傳輸?shù)剿鎏幚磉壿嫞灰约? 將所述傳輸寫數(shù)據(jù)ACW中的丟棄比特設(shè)置為I。
14.如權(quán)利要求12所述的裝置,其中所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求包括一個(gè)或多個(gè)輸入數(shù)據(jù)請(qǐng)求,所述一個(gè)或多個(gè)輸入數(shù)據(jù)請(qǐng)求請(qǐng)求向所述主機(jī)存儲(chǔ)器中傳輸輸入數(shù)據(jù),并且包括傳輸讀數(shù)據(jù)ACW的本地信道存儲(chǔ)器地址, 并且所述丟棄包括 使所述存儲(chǔ)陣列隊(duì)列中的一個(gè)或多個(gè)輸入數(shù)據(jù)請(qǐng)求以及任何后續(xù)輸入數(shù)據(jù)請(qǐng)求停止被傳輸?shù)剿鎏幚磉壿?;以? 將所述傳輸讀數(shù)據(jù)ACW中的丟棄比特設(shè)置為I。
15.如權(quán)利要求14所述的裝置,其中丟棄還包括 利用對(duì)應(yīng)于已根據(jù)從所述存儲(chǔ)陣列隊(duì)列路由來的輸入數(shù)據(jù)請(qǐng)求產(chǎn)生并在所述處理邏輯中等待處理的主機(jī)存儲(chǔ)器請(qǐng)求的數(shù)目的值設(shè)置計(jì)數(shù)器; 針對(duì)從所述主機(jī)存儲(chǔ)器接收的每個(gè)主機(jī)存儲(chǔ)器響應(yīng)而遞減所述值,直到所述值為指示所有主機(jī)存儲(chǔ)器響應(yīng)都已被接收的O值;以及 防止作出對(duì)應(yīng)于所述傳輸讀數(shù)據(jù)ACW的任何其它主機(jī)存儲(chǔ)器請(qǐng)求。
全文摘要
本發(fā)明提供一種用于執(zhí)行輸入/輸出(I/O)處理的計(jì)算機(jī)程序產(chǎn)品。所述計(jì)算機(jī)程序產(chǎn)品被配置為執(zhí)行在本地信道存儲(chǔ)器中產(chǎn)生和存儲(chǔ)至少一個(gè)地址控制字(ACW),其指定用于數(shù)據(jù)傳輸?shù)囊粋€(gè)或多個(gè)主機(jī)存儲(chǔ)器位置,并包括數(shù)據(jù)丟棄字段;產(chǎn)生指定對(duì)應(yīng)ACW的本地信道存儲(chǔ)器位置的地址控制結(jié)構(gòu);從網(wǎng)絡(luò)接口接收一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,其各自對(duì)應(yīng)于地址控制結(jié)構(gòu)信息;訪問ACW并將數(shù)據(jù)傳輸請(qǐng)求路由到ACW中指定的主機(jī)存儲(chǔ)器位置;以及響應(yīng)于在訪問和路由中的至少一個(gè)期間遇到錯(cuò)誤,丟棄所述一個(gè)或多個(gè)數(shù)據(jù)傳輸請(qǐng)求,并將數(shù)據(jù)丟棄字段設(shè)置為指示信道丟棄與該ACW關(guān)聯(lián)的任何后續(xù)數(shù)據(jù)傳輸請(qǐng)求的值。
文檔編號(hào)G06F13/16GK102810081SQ20121016585
公開日2012年12月5日 申請(qǐng)日期2012年5月25日 優(yōu)先權(quán)日2011年6月1日
發(fā)明者C.A.本德, C.E.巴布, D.F.卡斯珀, J.R.弗拉納根 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
当阳市| 平原县| 扶绥县| 江安县| 手游| 新和县| 托克托县| 丰城市| 宣威市| 安乡县| 孙吴县| 临夏县| 弥勒县| 梅河口市| 儋州市| 八宿县| 小金县| 榆树市| 田阳县| 彭水| 奉化市| 高州市| 芒康县| 汝城县| 惠来县| 济源市| 江北区| 康乐县| 临武县| 普兰店市| 张北县| 藁城市| 黄大仙区| 卢龙县| 宜良县| 昌邑市| 中西区| 扎鲁特旗| 虎林市| 铁岭县| 古田县|