專利名稱:光纖信道輸入/輸出數(shù)據(jù)路由系統(tǒng)和方法
技術(shù)領(lǐng)域:
本公開通常涉及輸入/輸出處理,特別是涉及便于在輸入/輸出處理期間信道子系統(tǒng)和網(wǎng)絡(luò)接口之間的數(shù)據(jù)傳輸。
背景技術(shù):
輸入/輸出(I/O)操作用于在主機系統(tǒng)存儲器和I/O處理系統(tǒng)的I/O設(shè)備之間傳輸數(shù)據(jù)。具體來說,通過執(zhí)行I/o操作,數(shù)據(jù)從存儲器寫入到一個或多個I/O設(shè)備,以及數(shù)據(jù)從一個或多個I/o設(shè)備讀取到存儲器。為了便于處理I/O操作,采用I/O處理系統(tǒng)的I/O子系統(tǒng)。I/O子系統(tǒng)耦合到主存儲器和I/O處理系統(tǒng)的I/O設(shè)備,并且引導(dǎo)存儲器和I/O設(shè)備之間的信息流。I/O子系統(tǒng)的 一個例子是信道子系統(tǒng)。信道子系統(tǒng)使用信道通路作為通信媒介。每個信道通路包括耦合 到控制單元的信道,控制單元進一步耦合到一個或多個I/o設(shè)備。信道子系統(tǒng)可以使用信道命令字(CCW)以在I/O設(shè)備和存儲器之間傳輸數(shù)據(jù)。CCff指定要執(zhí)行的命令。對于啟動某些I/o操作的命令來說,CCW指定與操作有關(guān)的存儲器區(qū)域、每當(dāng)完成傳輸?shù)交騻鬏攣碜栽搮^(qū)域時所要采取的動作、以及其它選項。信道子系統(tǒng)和I/o設(shè)備可以在支持一個或多個命令控制塊(block)傳輸?shù)膫鬏斈J较鹿ぷ?,以在I/O設(shè)備和存儲器之間傳輸數(shù)據(jù)。傳輸控制字(TCW)指定要執(zhí)行的一個或多個I/O命令。對于啟動某些I/O操作的命令來說,TCW指示與操作有關(guān)的存儲器區(qū)域、每當(dāng)完成傳輸?shù)交騻鬏攣碜栽搮^(qū)域時所要采取的處理、以及其它選項。一般來說,主機系統(tǒng)和信道子系統(tǒng)通過主機總線適配器(HBA)連接到鏈路上的I/0設(shè)備。HBA耦合到信道上,信道包括硬件,硬件包含出現(xiàn)于主機系統(tǒng)對HBA的信道微處理器和本地信道存儲器。信道硬件使HBA與主機及其存儲空間隔離。
發(fā)明內(nèi)容
—個實施例包括一種計算機程序產(chǎn)品,其用于在配置用來與控制單元通信的主機系統(tǒng)處執(zhí)行輸入/輸出(I/O)處理操作。計算機程序產(chǎn)品包括由處理電路可讀取的并存儲由處理電路執(zhí)行的指令的有形存儲介質(zhì),以用于執(zhí)行一種方法,包括在主機系統(tǒng)中的信道子系統(tǒng)處獲取與I/O操作相關(guān)的信息,信道子系統(tǒng)包括具有信道處理器和本地信道存儲器的至少一個信道;生成至少一個地址控制字(ACW),其指定用于在主機系統(tǒng)和控制單元之間傳輸數(shù)據(jù)的一個或多個主存儲器位置、并在本地信道存儲器中存儲至少一個ACW,至少一個ACW包括至少一個ACW錯誤校驗字段;生成由I/O操作所指定的用于每個數(shù)據(jù)傳輸?shù)牡刂房刂平Y(jié)構(gòu),并在信道子系統(tǒng)和至少一個I/O設(shè)備之間從至少一個信道轉(zhuǎn)發(fā)每個地址控制結(jié)構(gòu)到網(wǎng)絡(luò)接口,每個地址控制結(jié)構(gòu)指定在相應(yīng)的ACW的本地信道存儲器中的位置,每個地址控制結(jié)構(gòu)包括至少一個地址控制結(jié)構(gòu)錯誤校驗字段;通過網(wǎng)絡(luò)接口轉(zhuǎn)發(fā)I/O命令消息到至少一個I/O設(shè)備;響應(yīng)I/O命令消息,從包括尋址信息的網(wǎng)絡(luò)接口接收數(shù)據(jù)傳輸請求;通過在信道中的數(shù)據(jù)路由器,比較至少一個ACW錯誤校驗字段與至少一個地址控制結(jié)構(gòu)錯誤校驗字段;以及響應(yīng)與至少一個地址控制結(jié)構(gòu)錯誤校驗字段匹配的至少一個ACW錯誤校驗字段,通過數(shù)據(jù)路由器訪問相應(yīng)的ACW,并把數(shù)據(jù)傳輸請求路由到在相應(yīng)的ACW中指定的主存儲器位置。另一個實施例包括一種用于在配置用來與控制單元通信的主機系統(tǒng)處執(zhí)行輸入/輸出(I/O)處理操作的方法。該方法包括在主機系統(tǒng)中的信道子系統(tǒng)處獲取與I/O操作相關(guān)的信息,信道子系統(tǒng)包括具有信道處理器和本地信道存儲器的至少一個信道;生成至少一個地址控制字(ACW),其指定用于在主機系統(tǒng)和控制單元之間傳輸數(shù)據(jù)的一個或多個主存儲器位置、并在本地信道存儲器中存儲至少一個ACW,至少一個ACW包括至少一個ACW錯誤校驗字段;生成由I/O操作所指定的用于每個數(shù)據(jù)傳輸?shù)牡刂房刂平Y(jié)構(gòu),并在信道子系統(tǒng)和至少一個I/O設(shè)備之間從至少一個信道轉(zhuǎn)發(fā)每個地址控制結(jié)構(gòu)到網(wǎng)絡(luò)接口,每個地址控制結(jié)構(gòu)指定在相應(yīng)的ACW的本地信道存儲器中的位置,每個地址控制結(jié)構(gòu)包括至少一個地址控制結(jié)構(gòu)錯誤校驗字段;通過網(wǎng)絡(luò)接口轉(zhuǎn)發(fā)I/O命令消息到至少一個I/O設(shè)備;響應(yīng)I/O命令消息,從包括尋址信息的網(wǎng)絡(luò)接口接收數(shù)據(jù)傳輸請求;通過在信道中的數(shù)據(jù)路由器,比較至少一個ACW錯誤校驗字段與至少一個地址控制結(jié)構(gòu)錯誤校驗字段;以及響應(yīng)與至少一個地址控制結(jié)構(gòu)錯誤校驗字段匹配的至少一個ACW錯誤校驗字段,通過數(shù)據(jù)路由 器訪問相應(yīng)的ACW,并把數(shù)據(jù)傳輸請求路由到在相應(yīng)的ACW中指定的主存儲器位置。另一個實施例包括一種用于在配置用來與控制單元通信的主機系統(tǒng)處執(zhí)行輸入/輸出(I/O)處理操作的裝置,主機系統(tǒng)包括信道子系統(tǒng),配置信道子系統(tǒng)以通過網(wǎng)絡(luò)接口與控制單元通信。配置信道子系統(tǒng)以執(zhí)行在主機系統(tǒng)中的信道子系統(tǒng)處獲取與I/o操作相關(guān)的信息,信道子系統(tǒng)包括具有信道處理器和本地信道存儲器的至少一個信道;生成至少一個地址控制字(ACW),其指定用于在主機系統(tǒng)和控制單元之間傳輸數(shù)據(jù)的一個或多個主存儲器位置、并在本地信道存儲器中存儲至少一個ACW,至少一個ACW包括至少一個ACW錯誤校驗字段;生成由I/O操作所指定的用于每個數(shù)據(jù)傳輸?shù)牡刂房刂平Y(jié)構(gòu),并在信道子系統(tǒng)和至少一個I/O設(shè)備之間從至少一個信道轉(zhuǎn)發(fā)每個地址控制結(jié)構(gòu)到網(wǎng)絡(luò)接口,每個地址控制結(jié)構(gòu)指定在相應(yīng)的ACW的本地信道存儲器中的位置,每個地址控制結(jié)構(gòu)包括至少一個地址控制結(jié)構(gòu)錯誤校驗字段;通過網(wǎng)絡(luò)接口轉(zhuǎn)發(fā)I/O命令消息到至少一個I/O設(shè)備;響應(yīng)I/O命令消息,從包括尋址信息的網(wǎng)絡(luò)接口接收數(shù)據(jù)傳輸請求;通過在信道中的數(shù)據(jù)路由器,比較至少一個ACW錯誤校驗字段與至少一個地址控制結(jié)構(gòu)錯誤校驗字段;以及響應(yīng)與至少一個地址控制結(jié)構(gòu)錯誤校驗字段匹配的至少一個ACW錯誤校驗字段,通過數(shù)據(jù)路由器訪問相應(yīng)的ACW,并把數(shù)據(jù)傳輸請求路由到在相應(yīng)的ACW中指定的主存儲器位置。通過回顧下列附圖和詳細說明,根據(jù)實施例的其它裝置、方法、和/或計算機程序產(chǎn)品對于本領(lǐng)域技術(shù)人員來說將是或變得顯而易見的。意圖使包含在本說明書內(nèi)的所有這種額外的系統(tǒng)、方法、和/或計算機程序產(chǎn)品落在本發(fā)明的范圍內(nèi),并通過附加的權(quán)利要求書加以保護。
在以說明書為結(jié)論的權(quán)利要求書中具體指出并明確要求了視為本發(fā)明的主題。從結(jié)合附圖的下述詳細說明中,本發(fā)明的上述及其它目的、特點和優(yōu)點是顯而易見的,其中圖I描述了納入和使用本發(fā)明的一個或多個方案的I/O處理系統(tǒng)的一個實施例;
圖2描繪了通過用于傳輸模式I/O操作的主機系統(tǒng)所生成的示意性控制塊;圖3描述了包含與信道子系統(tǒng)連接的主機總線適配器(HBA)的I/O處理系統(tǒng)的現(xiàn)有技術(shù)的配置;圖4描繪了含有與信道子系統(tǒng)連接的主機總線適配器(HBA)的I/O處理系統(tǒng)的一個實施例;圖5描述了用于地址控制結(jié)構(gòu)的地址字段的實施例;圖6描繪了在傳輸模式I/O操作期間在信道和控制單元之間傳輸?shù)母鞣N消息的例子;圖I是一個流程圖,描繪了在I/O操作期間通過信道數(shù)據(jù)路由器和HBA處理數(shù)據(jù)傳輸?shù)囊粋€不意性方法; 圖8描繪了利用圖7的數(shù)據(jù)路由器的信道本地存儲器區(qū)域的一個實施例;圖9是一個框圖,描繪了通過圖7的數(shù)據(jù)路由器的邏輯組件的數(shù)據(jù)流;圖10描繪了地址控制字(ACW)的一個實施例;圖11描繪了圖10的ACW的一個實施例;圖12描繪了圖10的ACW的一個實施例;圖13描繪了圖10的ACW的一個實施例;圖14描繪了圖10的ACW的一個實施例;以及圖15描繪了用于地址控制結(jié)構(gòu)的地址字段的一個實施例。通過參考附圖的例子,連同優(yōu)點和特點一起,詳細的說明書解釋說明了本發(fā)明的優(yōu)選實施例。
具體實施例方式根據(jù)本發(fā)明的一個方案,促進了輸入/輸出(I/O)處理。例如,通過在信道子系統(tǒng)的信道中提供數(shù)據(jù)路由器來促進I/O處理,信道子系統(tǒng)允許主機總線適配器(HBA)連接信道以在I/O操作期間直接訪問主機的主存儲器,而無需在信道中存儲輸入或輸出數(shù)據(jù)。與其中通過信道微處理器校驗、轉(zhuǎn)換和轉(zhuǎn)發(fā)在主機和HBA之間的所有事務(wù)的現(xiàn)有技術(shù)的信道存儲和轉(zhuǎn)發(fā)設(shè)計相比,這種配置提供了大幅增加的信道I/O開始速率(例如,2倍)以及減少的每個I/O操作的響應(yīng)時間。例如,信道裝配有數(shù)據(jù)路由器硬件,配置數(shù)據(jù)路由器硬件以生成和提供具有一個或多個地址控制結(jié)構(gòu)的HBA,通過其使信道通知HBA被分配給該HBA的本地信道存儲器區(qū)域。為了允許HBA在主機存儲器中對多個地址空間尋址,每個地址控制結(jié)構(gòu)都包括關(guān)于在含有主存儲器地址的本地信道存儲器中位置的信息。在一個實施例中,一個或多個地址控制結(jié)構(gòu)包括一個地址(例如,64位PCIe地址),該地址包含指定對應(yīng)地址命令字(ACW)的本地信道存儲器地址的字段。例如,地址控制結(jié)構(gòu)包括ACW索引字段,該ACW索引字段包含對本地信道存儲器中的ACW的連續(xù)塊的索引。在一個實施例中,提供了一種系統(tǒng)和方法,當(dāng)在I/O操作期間HBA直接對主存儲器尋址時用于校驗HBA。例如,ACW提供了數(shù)據(jù)路由器提供校驗具有直接訪問主存儲器的器件所需水平的數(shù)據(jù)的能力、以及使出現(xiàn)故障的HBA與主機隔離的能力。例如,地址控制結(jié)構(gòu)和相關(guān)的ACW包括在接收到HBA數(shù)據(jù)傳輸請求時由數(shù)據(jù)路由器校驗的驗證和偏移字段。
在一個實施例中,提供了一種系統(tǒng)和方法,用于從HBA和主存儲器之間的存儲器請求中插入或刪除報頭(header)。在現(xiàn)有技術(shù)的系統(tǒng)中,信道可以從本地信道存儲器中的HBA讀取請求中接收和存儲報頭信息,或生成報頭并響應(yīng)HBA寫入請求給輸出數(shù)據(jù)附加報頭。本文所描述的實施例,在輸入數(shù)據(jù)直接存儲在主存儲器中的同時允許信道(通過數(shù)據(jù)路由器硬件)在本地信道存儲器中存儲讀取請求報頭,并且還允許生成和附加報頭給通過HBA寫入請求已從主存儲器中直接訪問的輸出數(shù)據(jù)。例如,讀取ACW被提供給HBA讀取請求以及寫入ACW被提供給HBA寫入請求。讀取ACW被用于存儲隨輸入數(shù)據(jù)接收的報頭信息,以及寫入ACW被用于存儲用來給輸出數(shù)據(jù)生成報頭并附加報頭的報頭信息。在一個實施例中,提供了一種系統(tǒng)和方法,用于在I/O操作期間在HBA和主存儲器之間直接數(shù)據(jù)傳輸?shù)倪^程中插入校驗字段進入輸出數(shù)據(jù)并校驗輸入數(shù)據(jù),以提供用于檢測所傳輸?shù)臄?shù)據(jù)是否已損壞的方式。在現(xiàn)有技術(shù)的系統(tǒng)中,對于寫入(輸出)操作來說,信道建立具有已存儲在本地信道存儲器中的用戶輸出數(shù)據(jù)的數(shù)據(jù)校驗字。對于讀取(輸入)操作來說,信道在本地信道存儲器中存儲輸入數(shù)據(jù)和數(shù)據(jù)校驗字, 并執(zhí)行數(shù)據(jù)校驗。數(shù)據(jù)校驗字的例子包括循環(huán)冗余校驗(CRC)字、縱向冗余校驗(LRC)字、以及校驗和數(shù)據(jù)。在本文所描述的實施例中,信道數(shù)據(jù)路由器硬件使用ACW來插入和/或校驗數(shù)據(jù)校驗字(在這種情況下,當(dāng)在主存儲器和HBA之間直接傳輸用戶數(shù)據(jù)、例如輸入或輸出數(shù)據(jù)時,從本地信道存儲器中存儲或生成數(shù)據(jù)校驗字。)。例如,數(shù)據(jù)路由器使用發(fā)送到HBA的地址(例如,劃分PCIe地址)以引用包括通過其存儲或生成數(shù)據(jù)校驗字的一個或多個位置的ACW。字段、例如在地址中的ACW索引字段用于引用ACW,其包含用于數(shù)據(jù)校驗字和位置的初始值或“起始種子”以保存中間數(shù)據(jù)校驗字和狀態(tài)。在一個實施例中,如果在I/O操作中使用間接數(shù)據(jù)尋址,那么ACW還包括相關(guān)的傳輸間接數(shù)據(jù)地址字(TIDAW),其提供了相關(guān)處的主存儲器地址、計數(shù)和控制信息以在出站數(shù)據(jù)上插入中間數(shù)據(jù)校驗字和最終數(shù)據(jù)校驗字。對于進站數(shù)據(jù)來說,如具體說明的話,如果數(shù)據(jù)被存儲或丟棄,TIDAff提供通知硬件的主存儲器地址、計數(shù)和標(biāo)識位。在一個實施例中,系統(tǒng)和方法提供了數(shù)據(jù)路由器來確定在不按順序接收HBA讀取數(shù)據(jù)時如何將用戶數(shù)據(jù)存儲到主存儲器的能力。此外,數(shù)據(jù)路由器具有檢查缺失或丟失中間數(shù)據(jù)的能力。輸入和輸出數(shù)據(jù)將按使其傳輸?shù)南嗤樞虮淮鎯υ谥鞔鎯ζ髦校员阏_計算數(shù)據(jù)校驗字。在一個實施例中,用于I/O操作的地址控制結(jié)構(gòu)(例如讀取或?qū)懭氲刂房刂平Y(jié)構(gòu))包括偏移字段,其是用于被發(fā)送到為了 I/o操作的信道的每個HBA傳送請求的增量。對應(yīng)的ACW包括下一個預(yù)期的偏移字段,其與在和地址控制結(jié)構(gòu)關(guān)聯(lián)的每個HBA傳輸請求中的偏移字段相比較。如果這些字段值不匹配,則例如,接收到的HBA請求在HBA接收隊列的底部被重新排隊。在一個實施例中,提供了系統(tǒng)和方法,用于在沒有初始化HBA的情況下,通過HBA來終止正在執(zhí)行的多個I/O操作之一(在此期間,HBA直接訪問主存儲器)。在某些情況下,I/O操作將會遇到主存儲器異常,并且如果在主機上正在執(zhí)行多個I/O操作的話,則希望僅僅終止該I/O操作。本實施例僅僅使引起異常的操作被終止,使得不會初始化HBA(其可能導(dǎo)致通過HBA正在執(zhí)行的所有I/O操作被終止)。在本實施例中,用于數(shù)據(jù)傳輸?shù)腁CW可以包括指示是否發(fā)生主存儲器異常的讀取丟棄(Discard)位、寫入放棄(Drop)位或固件讀取丟棄位。如果所有這些位是零,數(shù)據(jù)路由器處理HBA請求進入用于數(shù)據(jù)傳輸?shù)闹鞔鎯ζ髡埱?。如果從主存儲器請求中返回異常,則異常原因被存儲進入相關(guān)的ACW中,同時寫入放棄位或讀取丟棄位被設(shè)為一。例如,如果I/O操作是寫入,那么HBA被發(fā)送信號以使接收到獲取存儲異常的I/O操作中止。如果HBA作出用于I/O操作的新請求,則寫入放棄位在ACW中被設(shè)為一,其將使HBA被發(fā)送信號以使I/O操作再次中止。如果I/O操作是讀取操作,那么在主存儲器存儲請求上接收到存儲異常使得ACW中的讀取丟棄位被設(shè)為一。從HBA接收的用于I/O操作的所有后續(xù)數(shù)據(jù)將被丟棄。圖I示例了 I/O處理系統(tǒng)100的一個示意性實施例,I/O處理系統(tǒng)100包括含有數(shù)據(jù)存儲器的主機系統(tǒng)102和/或例如由國際商業(yè)機器公司(IBM )制造的zSeries 大型機計算機的處理系統(tǒng)。IBM是設(shè)在美國紐約州阿蒙克市的國際商業(yè)機器公司的注冊商標(biāo)。本文所使用的其它名稱可以是國際商業(yè)機器公司或其他公司的注冊商標(biāo)、商標(biāo)或產(chǎn)品名稱。主機系統(tǒng)102包括各種處理、存儲和通信兀件。在一個實施例中,主機系統(tǒng)102包括一個或多個中央處理單元(CPU) 104、例如主存儲器或內(nèi)存106的存儲器組件(例如,zSeries存儲器)和/或擴展存儲器或內(nèi)存108 (統(tǒng)稱為“主存儲器”)。系統(tǒng)102還包括由一個或多個CPU104執(zhí)行的一個或多個操作系統(tǒng)(OS) 110。例如,一個CPU104可以執(zhí)行作為不同虛 擬機實例的Linux 操作系統(tǒng)110和/或z/OS 操作系統(tǒng)no。CPU104是i/o處理系統(tǒng)100的控制中心。其包含用于指令執(zhí)行、中斷動作、計時功能、初始化程序加載、以及其它機器相關(guān)的功能的列隊和處理設(shè)備。CPU104通過連接113、例如雙向或單向總線,耦合到主存儲器106和/或擴展存儲器108。主機系統(tǒng)102還包括信道子系統(tǒng)114,信道子系統(tǒng)114提供主機系統(tǒng)102和各種I/O設(shè)備116之間的通信接口,并可以通過一個或多個控制單元118來控制。I/O設(shè)備包括如下設(shè)備,例如打印機、磁帶單元、直接訪問存儲設(shè)備、顯示器、鍵盤、通信控制器、遠程處理設(shè)備和基于傳感器的設(shè)備。信道子系統(tǒng)114引導(dǎo)I/O設(shè)備116和主機系統(tǒng)102之間的信息流。這減輕了與I/O設(shè)備116直接通信的CPU104的任務(wù),并允許數(shù)據(jù)處理與I/O處理同時進行。信道子系統(tǒng)114通過連接120 (例如總線)耦合到CPU104、主存儲器106和/或擴展存儲器108。在一個實施例中,信道子系統(tǒng)114通過各自的“信道通路”122與每個I/O設(shè)備116連接,信道通路122通過例如串行或并行鏈路的連接124使信道子系統(tǒng)114與每個控制單元118連接。控制單元118可以通過至少一個信道通路122連接到信道子系統(tǒng)114,并且I/O設(shè)備116可以連接到至少一個控制單元118??傊?,單個的I/O設(shè)備116可由多個信道通路訪問。信道通路可以使用各種類型的連接,例如并行接口、串行I/O接口和FICON I/0接口。例如,串行信道通路可以包括通過例如光纖信道架構(gòu)中的動態(tài)開關(guān)126連接到控制單元118的一個或多個光纖,而并行接口可以包括多個電導(dǎo)體。ANSI標(biāo)準(zhǔn)文獻“FibreChannel Single-Byte Command Code Sets Mapping Protocol-4(FC-SB-4)”, Tll 項目2122-D,修訂版3. 00,2000年9月22日,介紹了 FICON I/O接口,此處引入其全文供參考。在一個實施例中,信道子系統(tǒng)114包括一個或多個獨立信道128,一個或多個獨立信道128的每一個通過一個或多個信道通路122分別連接一個或多個控制單元118和/或I/O設(shè)備116。每個信道128包括例如本地信道微處理器130的處理電子設(shè)備和連接并可由本地信道微處理器130訪問的本地信道存儲器132。本地信道存儲器132可以包括例如信道程序指示、信道通路標(biāo)識符、設(shè)備數(shù)量、設(shè)備計數(shù)、狀態(tài)指示的信息,以及關(guān)于等待或正在執(zhí)行的通路可用性和功能的信息。一個或多個子信道還位于每個信道128內(nèi)。每個子信道是位于信道存儲器132內(nèi)的數(shù)據(jù)結(jié)構(gòu),其提供了關(guān)于相關(guān)的I/O設(shè)備116的信息并且其附著到信道子系統(tǒng)114上。子信道還提供了關(guān)于I/O操作的信息以及包含相關(guān)的I/O設(shè)備116的其它功能。子信道是通過其使信道子系統(tǒng)114提供關(guān)于相關(guān)的I/O設(shè)備116的信息給CPU104的裝置。連接多個控制單元122或多個I/O設(shè)備116的信道128可以具有多個子信道,每一個子信道專用于一個I/O設(shè)備116。在一個實施例中,通過信道子系統(tǒng)所提供的子信道的數(shù)量與相關(guān)的I/O設(shè)備116的信道通路122的數(shù)量無關(guān)。例如,通過可選信道通路122可訪問的設(shè)備116仍然用單個子信道表示。每個控制單元118提供了邏輯以操作并控制一個或多個I/O設(shè)備116,并且通過使 用共用設(shè)備使每個I/O設(shè)備116的特性適應(yīng)于信道128所提供的鏈路接口。共用設(shè)備提供用于I/O操作的執(zhí)行、涉及I/O設(shè)備116和控制單元118的狀態(tài)的指示、在信道通路122上的數(shù)據(jù)傳輸計時的控制以及一定程度的I/O設(shè)備控制??刂茊卧?18可以分開安置,或可以與I/O設(shè)備、信道子系統(tǒng)或CPU在物理上和邏輯上集成。I/O操作被描述為涉及主機系統(tǒng)102和I/O設(shè)備116之間傳輸數(shù)據(jù)的任何操作。如本文中所述,I/O操作包括在信道子系統(tǒng)114和設(shè)備116之間的通信(在一個實施例中,通過控制單元118),其中單個命令(例如,信道命令字或CCW)、含有多個命令的單個命令消息(例如,輸送傳輸命令控制塊(TCCB)的傳輸命令信息單兀)、或多個連鎖命令(例如,多個CCW)被從信道子系統(tǒng)114發(fā)送到設(shè)備。I/O操作還可以包括響應(yīng)接收和/或執(zhí)行命令或連鎖命令、由設(shè)備116或相關(guān)的控制單元118生成的一個或多個響應(yīng)消息。在一個實施例中,通過執(zhí)行由0S110生成的I/O指令用設(shè)備116使I/O操作初始化,0S110指示與設(shè)備116相關(guān)的子信道。通過發(fā)送參數(shù)給信道子信道由CPU104在主機系統(tǒng)中執(zhí)行這種指令,信道子信道請求信道子系統(tǒng)114通過一些信道128在I/O操作中執(zhí)行各種功能。例如,CPU104通過傳遞參數(shù)給目標(biāo)子信道來執(zhí)行“開始子信道”指令,目標(biāo)子信道請求信道子系統(tǒng)114用與子信道有關(guān)的I/O設(shè)備116執(zhí)行開始功能。信道子系統(tǒng)114通過使用子信道處的信息執(zhí)行開始功能,包括在“開始子信道”指令執(zhí)行期間傳遞的信息,以發(fā)現(xiàn)對設(shè)備116可訪問的信道通路,并在一旦選中信道通路時執(zhí)行I/O操作。
當(dāng)通過CPU104執(zhí)行例如“開始子信道”指令這樣的指令時,信道128開始進行I/O操作。在一個實施例中,信道子系統(tǒng)114在例如高性能FICON(HPF)這樣的光纖信道協(xié)議下操作,用于在信道子系統(tǒng)114與設(shè)備116和/或控制單元118之間通信?!癋ibre ChannelSingle-Byte Command Code Sets Mapping Protocol-4 (FC-SB-4) v, Tll 項目 2122 _D,修訂版3. 00,2000年9月22日,進一步說明了 FICON和HPF及其相位(phase),此處引入其全文供參考。在一個實施例中,“開始子信道”指令的執(zhí)行傳遞操作請求塊(ORB)的內(nèi)容到信道子系統(tǒng)114。ORB指定包括一個或多個命令字(例如,信道命令字或下面進一步說明的傳輸命令字)的地址的信道程序。具有兩種模式的子信道操作。在一個實施例中,主機系統(tǒng)102在命令模式下操作并指定按信道命令字(CCW)形式的命令字。在另一個實施例中,主機系統(tǒng)在傳輸模式下操作并指定按傳輸命令字(TCW)形式的命令字。作為執(zhí)行指定為TCW信道程序的“開始子信道”指令的結(jié)果,當(dāng)安裝FCX (光纖信道擴展)設(shè)備以及在子信道處設(shè)置啟動功能時,子信道可以進入傳輸模式。子信道保持在傳輸模式,直到在子信道重新設(shè)置啟動功能。在所有其它時間,子信道處于命令模式。在命令模式中,信道執(zhí)行CCW信道程序,其包括單個信道命令字或控制具體系列信道操作的順序執(zhí)行的一系列信道命令字。控制單元通過I/o設(shè)備解碼、接受及執(zhí)行CCW命令來執(zhí)行CCW I/O操作。排列用于順序執(zhí)行的一個或多個CCW形成了 CCW信道程序并分別被執(zhí)行為一個或多個I/o操作。光纖信道擴展(FCX)設(shè)備是提供用于形成傳輸模式信道程序的光學(xué)設(shè)備,傳輸模式信道程序由指示傳輸命令控制塊(TCCB)和傳輸狀態(tài)塊(TSB)的傳輸控制字(TCW)構(gòu)成。TCCB包括傳輸命令區(qū)(TCA),傳輸命令區(qū)(TCA)含有按設(shè)備命令字(DCW)形式的一個或多 個(例如,高至30)1/0命令的列表。TCW及其TCCB可以指定讀取或?qū)懭氩僮?。在一個實施例中,F(xiàn)CX雙向數(shù)據(jù)傳輸設(shè)備可以安裝在支持傳輸模式操作的系統(tǒng)中,如果連接的設(shè)備116和控制單元118支持雙向數(shù)據(jù)傳輸?shù)脑?,該系統(tǒng)允許主機系統(tǒng)102在單個傳輸模式I/O操作下指定輸入和輸出數(shù)據(jù)兩者的傳輸。當(dāng)控制單元118識別出雙向數(shù)據(jù)傳輸時,TCW及其TCCB可以根據(jù)設(shè)備來指定讀取和寫入數(shù)據(jù)傳輸。在傳輸模式中,單個傳輸命令字(TCW)指定TCCB的存儲器中的位置(以及一個或多個數(shù)據(jù)區(qū)的存儲器106中的位置),TCCB取代命令模式中各自獨立的CCW在單個消息中被發(fā)送??刂茊卧?18通過解碼、接受及執(zhí)行TCCB和包含在其中的獨立的DCW來執(zhí)行傳輸模式I/O操作。如果ORB指定TCW信道程序,那么信道子系統(tǒng)114利用在所指定的TCW中的信息來傳輸TCCB到控制單元118。在TCCB被傳輸?shù)娇刂茊卧?18并且僅具有對控制單元118和相關(guān)I/O設(shè)備116的意義之后,通過信道子系統(tǒng)114忽略TCCB的內(nèi)容。在一個示意性實施例中,控制單元118響應(yīng)執(zhí)行信道程序生成了響應(yīng)消息。例如,在限制數(shù)量的信道場景的情況下,控制單元118還可以在不需要執(zhí)行信道程序的情況下生成響應(yīng)消息,以通知信道子系統(tǒng)114將不執(zhí)行信道程序??刂茊卧?18可以包括多個部件以支持在I/O通信適配器和I/O設(shè)備之間的通信,以及支持信道程序的執(zhí)行。例如,除一個或多個隊列、計時器和寄存器以外,控制單元118還可以包括解析和處理消息的控制邏輯,以便于通信和狀態(tài)監(jiān)測。圖2示出了示意性控制塊,其是在OS軟件執(zhí)行指令(例如,“開始子信道”指令)之前借由軟件在主存儲器中設(shè)置的,該指令傳遞開始子信道消息給用于HPF I/O操作的信道子系統(tǒng)114中的I/O處理器(I0P)。這些控制塊的架構(gòu)和I/O處理系統(tǒng)100的一個或多個上述組件被進一步描述在“IBM⑩z/Architecture Principles of Operation”,公開號SA22-7832-8,第9版,2010年8月,這里引入其全文供參考。如圖2中所示,開始子信道消息140被傳遞給信道子系統(tǒng)114,其指示子信道142、TCW144和傳輸狀態(tài)塊(TSB) 146。TCW包含TCCB148的主存儲器中的地址、指示用于I/O操作的讀取數(shù)據(jù)的位置150、和/或指示用于I/O操作的寫入數(shù)據(jù)的位置152。例如,通過傳輸間接數(shù)據(jù)地址列表(TIDAL) 153可以直接訪問或間接訪問TCCB148與位置150和152。圖3示例了在主機系統(tǒng)102、信道子系統(tǒng)114和控制單元118之間的通信鏈路的現(xiàn)有技術(shù)配置的一個實施例。信道128通過信道微處理器130與主CPU通信,并配置為在主存儲器和本地信道存儲器132之間傳輸數(shù)據(jù),例如,用于恢復(fù)TCCB148或TCCB148的組件。網(wǎng)絡(luò)或例如主機總線適配器(HBA) 154的鏈路接口通過例如PCIe總線155與信道128連接。HBA154例如通過控制單元HBA156協(xié)調(diào)信道128和控制單元118之間的信息流。在該實施例中,HBA154與信道128通信并僅僅訪問本地信道存儲器132。從而,HBA154與主機和主存儲器隔離。被發(fā)送到或來自HBA154的數(shù)據(jù)被存儲在或獲取自本地信道存儲器132。這種隔離被用于錯誤校驗在主存儲器和控制單元118之間傳輸?shù)臄?shù)據(jù)。用于該隔離的性能補償是,所有用戶數(shù)據(jù)流經(jīng)作為存儲器的該隔離硬件并通過本地信道存儲器132轉(zhuǎn)發(fā)。圖4示例了通信鏈路的一個實施例,在信道的本地存儲器132中不必存儲輸入或輸出數(shù)據(jù)的情況下,通信鏈路允許用于錯誤校驗的隔離而同時允許HBA154直接訪問主存儲器。與圖3的配置相比,信道128包括微處理器以及數(shù)據(jù)路由器160。在一個實施例中,數(shù)據(jù)路由器160是支持FC-SB-4 (也稱為HPF)協(xié)議的高性能光纖信道數(shù)據(jù)路由器(HPF-DR)。在不需要在本地信道存儲器132中存儲每次I/O操作所請求的輸入或輸出數(shù)據(jù)(例如,用戶數(shù)據(jù))的情況下,數(shù)據(jù)路由器160允許HBA 154直接訪問主存儲器。在一個實施例中,數(shù)據(jù)路由器160包括數(shù)據(jù)路由器硬件162和本地信道存儲器區(qū)域164,其中為數(shù)據(jù)路由器建立狀態(tài)信息以處理HBA數(shù)據(jù)傳輸請求。如此處說明的“HBA數(shù)據(jù)傳輸請求”包括從HBA154至信 道128的任何通信,其請求從主存儲器至控制單元118傳輸輸出數(shù)據(jù)(S卩,寫入或獲取數(shù)據(jù))(例如,“HBA寫入請求”或“HBA獲取請求”)或請求從控制單元118至主存儲器傳輸輸入數(shù)據(jù)(即,讀取或存儲數(shù)據(jù))(例如,“HBA讀取請求”或“HBA存儲請求”。此外,在一個實施例中,本地信道存儲器132包括分配給HBA154并由HBA154可訪問的區(qū)域166 (例如,在4條旋轉(zhuǎn)線之前),這是用于處理本地信道請求和操作。在從主機接收I/O指令和ORB之后,并在執(zhí)行I/O操作以及發(fā)送I/O操作給HBA154之前,信道128建立一個或多個地址控制結(jié)構(gòu)和相關(guān)的地址控制字(ACW),其被用于生成主存儲器請求給主機102并允許HBA154直接訪問主存儲器。ACW和數(shù)據(jù)控制結(jié)構(gòu)還提供了一種方法,通過該方法,數(shù)據(jù)路由器160可以附加報頭到由HBA154發(fā)送的HBA數(shù)據(jù)傳輸請求或或存儲來自由HBA154發(fā)送的HBA數(shù)據(jù)傳輸請求的報頭,同時還提供了一種用于校驗HBA請求錯誤的方法,而不用在本地信道存儲器132中存儲輸入或輸出數(shù)據(jù)。例如,在開始子信道消息140被傳遞到信道128 (例如,通過信道子系統(tǒng)114中的I/O處理器)之后,運轉(zhuǎn)固件的信道微處理器130接收開始子信道消息140以讀取和/或?qū)懭霐?shù)據(jù)自和到設(shè)備116以及進入和離開主存儲器。信道128使用開始子信道消息140中的信息以獲取子信道142。在子信道142中是使用信道固件來獲取TCW144的主存儲器地址。信道128使用來自開始子信道消息140、子信道142和TCW144中的信息以建立各種ACW。每個ACW是控制塊,使用數(shù)據(jù)路由器160以路由HBA數(shù)據(jù)傳輸請求到TCW144中指定的主存儲器地址??梢越⒍鄠€ACW,包括含有至少一個主存儲器地址來存儲輸入數(shù)據(jù)的讀取命令的一個ACW、含有至少一個主存儲器地址來存儲輸出數(shù)據(jù)的寫入命令的一個ACW、用于組裝例如含有TCCB148的傳輸命令信息單元(IU)的I/O命令消息的ACW、以及用于接收和存儲狀態(tài)信息的ACW。隨著建立ACW,信道128建立了用于來自TCW144中的信息的每個ACW的“地址控制結(jié)構(gòu)”,并在HBA154被通知I/O操作之前,通過本地信道存儲器132傳遞地址控制結(jié)構(gòu)給HBA154(例如,通過本地信道存儲器HBA工作隊列)。多個地址控制結(jié)構(gòu)被傳遞給HBA154并由HBA154使用來獲取或存儲信息進入或離開主存儲器。地址控制結(jié)構(gòu)允許HBA154訪問多個地址空間,同時還允許數(shù)據(jù)路由器硬件校驗所存儲的或獲取的數(shù)據(jù)的錯誤。例如,一個地址控制結(jié)構(gòu)用于獲取構(gòu)成命令消息(例如,傳輸命令I(lǐng)U)的信息,一個用于存儲在完成I/O操作時來自控制單元響應(yīng)(例如,傳輸狀態(tài)IU)的結(jié)束狀態(tài),以及可以通過HBA154使用多個“數(shù)據(jù)地址控制結(jié)構(gòu)”來傳輸輸入或輸出數(shù)據(jù)。例如,一個“讀取地址控制結(jié)構(gòu)”用于從設(shè)備116至主存儲器傳輸?shù)拿?兆字節(jié),以及一個“寫入地址控制結(jié)構(gòu)”用于從主存儲器請求的每8兆字節(jié)。如果I/O操作僅在一個方向傳輸數(shù)據(jù),那么僅需要讀取或?qū)懭氲刂房刂平Y(jié)構(gòu)。每個地址控制結(jié)構(gòu)包括發(fā)送到HBA154的地址,其由HBA154使用以作出請求到信道128。地址被HBA154看作是單個地址,但用于指示在主存儲器中的多個地址空間。示意性地址控制結(jié)構(gòu)分別包括64位PCIe地址、數(shù)據(jù)字節(jié)計數(shù)、方向位和控制信息。例如,每個地址控制結(jié)構(gòu)包括要被傳輸?shù)臄?shù)據(jù)量的數(shù)據(jù)字節(jié)計數(shù),通過其地址控制結(jié)構(gòu)和控制位通知HBA154要傳輸?shù)臄?shù)據(jù)方向以及需要多少地址控制結(jié)構(gòu)來傳輸數(shù)據(jù)。圖5示例了示意性地址控制結(jié)構(gòu)170的地址字段172的實施例。在本實施例中, 地址字段172包括64位PCIe地址,但不局限于此。地址字段172包括控制(CTL)字段174(例如,地址172的字節(jié)2),其指示是否路由HBA請求到本地信道存儲器以通過信道128內(nèi)部解決,或者是否通過數(shù)據(jù)路由器160來處理和路由HBA請求到主存儲器。例如,如果地址字段172包括設(shè)為零的CTL字段174,數(shù)據(jù)路由器160路由請求到本地信道存儲器區(qū)域166。然而,如果CTL字段174設(shè)為所選值(例如,0x02),配置地址172以允許HBA 154通過數(shù)據(jù)路由器硬件對主存儲器尋址。在該配置中,地址172 (如圖5的第3行中所示)被劃分成四個字段:ACW索引字段176 (例如,字節(jié)0和I)、CTL字段174 (例如,字節(jié)2)、驗證字段178(例如,字節(jié)3和4)、以及偏移字段180 (例如,字節(jié)5-7)。在一個實施例中,ACW索引字段176是進入在本地信道存儲器區(qū)域164中的ACW的連續(xù)塊的索引,由數(shù)據(jù)路由器硬件來使用以為用于相關(guān)HBA請求和地址控制結(jié)構(gòu)的ACW定位。驗證字段178 (例如,16位字段)被設(shè)為用于在本地信道存儲器區(qū)域164中所限定的每個ACW的唯一值。在信道128設(shè)置用于I/O操作的ACW和地址控制結(jié)構(gòu)170之后,信道128通知HBA154待處理的I/O操作并發(fā)送需要用于執(zhí)行I/O操作的相應(yīng)地址控制結(jié)構(gòu)170。圖6示例了在I/O操作期間在信道128和控制單元118之間所傳輸?shù)母鞣N消息。在信道微處理器130已建立具有請求信息的數(shù)據(jù)路由器160之后,HBA154獲取并存儲各種信息單元(IU)。傳輸命令I(lǐng)U182包括TCCB148和報頭信息,并在信道通路122上發(fā)送給控制單元118。在執(zhí)行I/O操作期間,傳輸包含讀取傳輸數(shù)據(jù)IU184和/或?qū)懭雮鬏敂?shù)據(jù)IU186的數(shù)據(jù)IU以發(fā)送輸入和/或輸出數(shù)據(jù)。在一個實施例中,每個數(shù)據(jù)IU根據(jù)其大小可以被發(fā)送為一個或多個幀(frame)188。幀188是在鏈路或信道通路上在鏈路打包器(wrapper)內(nèi)被傳輸?shù)臄?shù)據(jù)單元或包,并且具有取決于鏈路架構(gòu)的最大尺寸。在I/O操作結(jié)束時,從控制單元118中發(fā)送傳輸狀態(tài)IU190,其指示操作的傳輸狀態(tài)(例如,完成或中止)。通常,傳輸命令I(lǐng)U182和傳輸狀態(tài)IU190分別在具有一個幀的鏈路上傳輸。在一個實施例中,IU的每個幀需要來自HBA154的至少一個HBA請求(例如,PCIe請求)。在一個實施例中,IU包括位于IU末端或緊鄰IU末端的一個或多個數(shù)據(jù)校驗字192 (例如,CRC)。例如,用于傳輸命令I(lǐng)U182的數(shù)據(jù)校驗字192是來自IU末端的I或2個字。寫入傳輸數(shù)據(jù)IU 182可以具有多個中間數(shù)據(jù)校驗字192,分別校驗一部分寫入傳輸數(shù)據(jù)IU182。傳輸狀態(tài)IU190具有用于IU報頭的數(shù)據(jù)校驗字192和用于傳輸狀態(tài)的數(shù)據(jù)校驗字 192。示出了圖7、8和9以示例執(zhí)行I/O操作的方法200的實施例。該方法包括一個或多個階段201-206。在一個實施例中,該方法包括按所述順序執(zhí)行全部步驟201-206。然而,可以省略某些步驟、可以添加步驟、或改變步驟的順序。在第一步驟201中,信道128從主CPU104中接收指令消息140和0RB,并獲取子信道142和隨后的TCW144以及其它所需數(shù)據(jù)。在第二階段202中,信道128或數(shù)據(jù)路由器160生成地址控制結(jié)構(gòu)170和對應(yīng)的ACW210 (如圖8中所示)。示意性控制結(jié)構(gòu)170和ACW210 (其參考下面的圖10-15在下文中進一步說明)包括對應(yīng)于傳輸命令I(lǐng)U182的傳輸命令A(yù)CW和傳輸命令地址控制結(jié)構(gòu)、對應(yīng) 于一個或多個讀取傳輸數(shù)據(jù)IU184或幀的傳輸讀取數(shù)據(jù)ACW和一個或多個傳輸讀取數(shù)據(jù)地址控制結(jié)構(gòu)、對應(yīng)于一個或多個寫入傳輸數(shù)據(jù)IU186或幀的傳輸寫入數(shù)據(jù)ACW和一個或多個傳輸寫入數(shù)據(jù)地址控制結(jié)構(gòu)、以及對應(yīng)于傳輸狀態(tài)IU190的傳輸狀態(tài)ACW和傳輸終止?fàn)顟B(tài)地址控制結(jié)構(gòu)。數(shù)據(jù)路由器160傳輸?shù)刂房刂平Y(jié)構(gòu)170到HBA154。ACW210的列表212組裝在本地信道存儲器區(qū)域164中。圖8示例了路由器160的配置,其包括在本地地址存儲器區(qū)域164中所存儲的ACW210。在一個實施例中,存儲器區(qū)域164是位于本地信道存儲器132中的選定邊界(例如,ITb邊界)上的HBA地址空間,本地信道存儲器132安置用于對主存儲器尋址的ACW210的列表212。在一個實施例中,列表212是連續(xù)ACW的列表。ACW源寄存器214是ACW210的列表212的起始地址。來自數(shù)據(jù)控制結(jié)構(gòu)中的ACW索引字段176的ACW索引176被加入到ACW源214中以生成本地地址,在本地地址中對應(yīng)的ACW駐留于本地信道存儲器區(qū)域164中。ACW界限寄存器216是ACW210的列表212的結(jié)束地址。當(dāng)ACW索引176被加入到ACW源以獲取ACW時,結(jié)果不能大于ACW界限減去ACW大小。在第三階段203中,傳輸命令I(lǐng)U182組裝在HBA154處用于傳輸?shù)娇刂茊卧?18。通過發(fā)送HBA獲取請求到數(shù)據(jù)路由器160,HBA154使用傳輸命令地址控制結(jié)構(gòu)來發(fā)起從主存儲器中獲取TCCB148。在一個實施例中,利用PCI快速(PCIe)協(xié)議控制發(fā)送到和來自HBA的請求,盡管也可以使用其它協(xié)議。在第四階段204中,HBA獲取請求到達數(shù)據(jù)路由器160,其通過把發(fā)送自HBA154的位轉(zhuǎn)換成數(shù)據(jù)包的接收邏輯220接收、并通過基于每個包中的HBA地址172的路由邏輯222路由。例如,具有指定本地存儲器區(qū)域的地址的所有HBA請求(例如,低于240)被路由到信道微處理器224和本地信道存儲器166,并內(nèi)部處理為本地信道存儲器請求。在一個實施例中,任何時候,PCIe總線處于64位尋址模式并且CTL字段174是0x00,或者當(dāng)PCIe操作處于32位模式時,BHA請求被路由到本地信道存儲器。這允許HBA154直接訪問HBA154有對其訪問權(quán)限的本地信道存儲器區(qū)域。HBA154沒有給出直接訪問其中存在ACW210的本地信道存儲器區(qū)域164的權(quán)限。具有在存儲器區(qū)164中的地址的所有請求(例如,24°以上)被路由到任一獲取陣列隊列226或存儲陣列隊列228以通過數(shù)據(jù)路由器160來處理。從接收邏輯220所接收的整個數(shù)據(jù)包(報頭和數(shù)據(jù))被保存為任一這兩個陣列中的條目(entry)。獲取陣列隊列226和存儲陣列隊列228分別位于數(shù)據(jù)路由器獲取硬件230和數(shù)據(jù)路由器存儲硬件232中,其把來自這些陣列中的HBA請求處理成被傳輸?shù)街鞔鎯ζ鞯闹鞔鎯ζ髡埱蟆T诘谖咫A段205中,處理邏輯234使在本地信道存儲器164中的信道請求和在隊列226和228中的HBA請求列隊并區(qū)分優(yōu)先次序,以及把請求包處理成主存儲器包。處理邏輯234得到HBA請求包中的HBA地址的ACW索引字段176 (來自傳輸命令地址數(shù)據(jù)控制結(jié)構(gòu)),以索引到在ACW源寄存器214處起始的ACW的ACW 210集的列表中,由此獲取與HBA地址170對應(yīng)的ACW。在本例子中,理想的ACW是傳輸命令A(yù)CW。例如,處理邏輯234取得ACW索引值,并把其添加到ACW源寄存器214中,以從其獲取ACW處生成局部信道存儲器地址。基于ACW中的存儲器地址字段,處理邏輯234生成主存儲器請求,其(例如,通過主存儲器界面238)從傳輸邏輯236發(fā)送到主存儲器,主存儲器指示從其傳輸數(shù)據(jù)或存儲數(shù)據(jù)的存儲器地址。來自ACW的額外信息,包括區(qū)域ID、密鑰數(shù)據(jù)長度,還可以用于生成主存儲器請求。 在本實施例中,在ACW存儲器地址字段中的地址是TCCB148的位置或多個位置。如果在ACW中不能啟動間接數(shù)據(jù)尋址,那么主存儲器地址是整個TCCB148的地址。如果在ACW中能啟動間接數(shù)據(jù)尋址,那么數(shù)據(jù)路由器160從主存儲器地址中獲取傳輸間接數(shù)據(jù)地址字(TIDAW),并隨后使用TIDAW中的地址作為主存儲器地址。在一個實施例中,如果ACW中的值表明正使用間接數(shù)據(jù)地址(例如,如圖10中所示的HPF-DR控制258位17為0),則指定TIDAW。TIDAW包括地址和計數(shù)二者。為了在TIDAW中指定的數(shù)據(jù)字節(jié)的數(shù)量,在TIDAW中的TIDAW數(shù)據(jù)地址字段用于對于主存儲器位置尋址。示意性TIDAW包括四個字,包括具有標(biāo)識字段的第一字、指定要用該TIDAW傳輸?shù)淖止?jié)的數(shù)量的計數(shù)字段、TIDAff數(shù)據(jù)地址高字和TIDAW數(shù)據(jù)地址低字。下列標(biāo)識可以包含在標(biāo)識字段內(nèi)位0-最后的TIDAW :該標(biāo)識位設(shè)為一,通知數(shù)據(jù)路由器硬件這是在可用于該操作的該TIDAL中的最后的TIDAW。如果當(dāng)前TIDAW標(biāo)識位0 “最后的TIDAW”不是有效的,然后在當(dāng)前TIDAW中的字節(jié)計數(shù)轉(zhuǎn)換為零并且ACW工作計數(shù)還沒有轉(zhuǎn)換為零時,數(shù)據(jù)路由器硬件將利用TIDAL中的下一個TIDAW來繼續(xù)數(shù)據(jù)傳輸以對主存儲器尋址。位I-讀取跳過該標(biāo)識位設(shè)為一,通知數(shù)據(jù)路由器硬件丟棄該TIDAW的每一字節(jié)計數(shù)字段的從設(shè)備接收的數(shù)據(jù)。然而,隨著丟棄數(shù)據(jù),繼續(xù)計算數(shù)據(jù)校驗字。如果I/O操作是寫入,那么取消該標(biāo)識位。位2-數(shù)據(jù)傳輸中斷該位導(dǎo)致數(shù)據(jù)路由器硬件在HPF-DR響應(yīng)字254中設(shè)置TIDAW格式校驗位10、并且在通過HPF-DR硬件試圖使用該TIDAW時終止I/O操作。位3-T-TIC :該標(biāo)識位設(shè)為一,通知數(shù)據(jù)路由器硬件在該TIDAW中的地址不用于數(shù)據(jù)而是用于起始新TIDAL的主存儲器地址,新TIDAL必須從主存儲器中獲取以恢復(fù)要用于該I/O操作的下一個TIDAW ;以及位4-插入填充(PAD)以及數(shù)據(jù)校驗字該標(biāo)識位設(shè)為一,通知數(shù)據(jù)路由器硬件插入填充字節(jié)直到下一個字邊界,如果不在字邊界上,那么插入所計算的數(shù)據(jù)校驗字的當(dāng)前值。在已傳輸由該TIDAW指定的數(shù)據(jù)字節(jié)計數(shù)之后,插入填充字節(jié)(若有的話)和數(shù)據(jù)校驗字,并且標(biāo)識位O、最后的TIDAW不設(shè)為一。當(dāng)前的ACW數(shù)據(jù)校驗字隨后再種回ACW中的數(shù)據(jù)校驗字種子。
在第六階段206中,數(shù)據(jù)路由器160通過主存儲器接收邏輯240接收主存儲器響應(yīng),在本實施例中,主存儲器響應(yīng)包括TCCB 148。在其它實施例中,根據(jù)主存儲器請求,主存儲器響應(yīng)可以包括用于寫入命令的輸出數(shù)據(jù)或用于讀取命令的狀態(tài)消息。路由邏輯242把主存儲器響應(yīng)路由到數(shù)據(jù)緩沖器和邏輯246。數(shù)據(jù)緩沖器和邏輯246用響應(yīng)包中的TCCB148從傳輸命令A(yù)CW中(S卩,從IU報頭字段中)合并IU報頭信息,響應(yīng)包可以通過與HBA154接口的出站邏輯244返回到HBA154。對于包括多個輸出數(shù)據(jù)請求的I/O操作來說,數(shù)據(jù)緩沖器246可以從多個請求中累積數(shù)據(jù)以生成完整的響應(yīng)包返回到HBA154。如上所述,在執(zhí)行I/O操作期間,傳輸數(shù)據(jù)IU可以在HBA154和控制單元118之間傳輸。為執(zhí)行寫入命令,HBA154請求信息以組裝寫入傳輸數(shù)據(jù)IU186,包括來自主存儲器的輸出數(shù)據(jù)(用寫入ACW的存儲器地址字段指定其地址)以及從寫入ACW中恢復(fù)的IU報頭信息。為執(zhí)行讀取命令,HBA把來自讀取傳輸數(shù)據(jù)IU184的輸入數(shù)據(jù)存儲到主存儲器地址,主存儲器地址在讀取ACW的存儲器地址字段中被指定并把來自讀取傳輸數(shù)據(jù)IU184的IU報頭信息存儲到讀取ACW。
例如,HBA154接收讀取傳輸數(shù)據(jù)IU184并生成一個或多個HBA讀取請求,一個或多個HBA讀取請求被發(fā)送到信道128以存儲輸入數(shù)據(jù)進入主存儲器。每個讀取請求包括來自對應(yīng)的讀取數(shù)據(jù)地址控制結(jié)構(gòu)的地址字段172。通過接收邏輯220接收HBA讀取請求,并且路由邏輯222把HBA讀取請求路由到存儲陣列隊列228。地址字段172的ACW索引字段176用于索引上述ACW210的列表,并獲取讀取ACW。讀取傳輸數(shù)據(jù)IU報頭信息存儲在讀取數(shù)據(jù)ACW中,并且主存儲器讀取請求被發(fā)送到主存儲器以請求由讀取數(shù)據(jù)ACW指定的地址中的輸入數(shù)據(jù)的存儲。在一個實施例中,可以得到多個主存儲器讀取請求來存儲一個HBA讀取請求。例如,如果每個主存儲器讀取請求是256字節(jié)以及HBA讀取請求是2048字節(jié),那么得到八個主存儲器讀取請求來存儲一個HBA讀取請求。在本實施例中,主存儲器讀取響應(yīng)從主存儲器接口 238返回到數(shù)據(jù)路由器硬件,其使每個響應(yīng)關(guān)聯(lián)到做出的每個讀取請求。在另一個例子中,HBA154可以發(fā)送寫入傳輸數(shù)據(jù)IU186到控制單元118。在一個實施例中,除非傳輸準(zhǔn)備被禁止,在發(fā)送每個寫入傳輸數(shù)據(jù)IU186之前,信道128就會請求從控制單元118中發(fā)送傳輸準(zhǔn)備IU??刂茊卧?18可以通過發(fā)送另外的傳輸準(zhǔn)備IU來請求另外的數(shù)據(jù),直到它已請求了由TCCB148指定的全部數(shù)據(jù)。如果傳輸準(zhǔn)備被禁止,這允許HBA154發(fā)送數(shù)據(jù)的IU到設(shè)備116,而無需設(shè)備116請求數(shù)據(jù)IU,然后HBA154發(fā)起HBA寫入請求到數(shù)據(jù)路由器160。HBA154使用來自每個寫入數(shù)據(jù)地址控制結(jié)構(gòu)的地址字段172,來發(fā)送每個HBA寫入請求以發(fā)起從主存儲器中獲取數(shù)據(jù)。通過路由邏輯222接收每個HBA寫入請求,這把每個HBA寫入請求路由到獲取陣列隊列226。來自地址字段172的ACW索引字段用于從本地信道存儲器區(qū)域164中獲取寫入數(shù)據(jù)ACW。一個或多個主存儲器寫入請求被用于請求輸出數(shù)據(jù),其在主存儲器寫入響應(yīng)中從主存儲器中接收并通過連接HBA154的路由邏輯242和數(shù)據(jù)緩沖器246被發(fā)送到HBA154。如果需要多個主存儲器寫入請求來處理一個HBA寫入請求,則參考上述讀取請求所描述的那樣來處理每個主存儲器寫入響應(yīng)。在一個實施例中,當(dāng)設(shè)備116通過發(fā)送傳輸狀態(tài)IU190給HBA154來結(jié)束I/O操作時,HBA154使用傳輸結(jié)束狀態(tài)地址控制結(jié)構(gòu)來發(fā)送HBA存儲請求以發(fā)起存儲結(jié)束狀態(tài)進入主存儲器。數(shù)據(jù)路由器160利用HBA存儲請求來獲取傳輸狀態(tài)ACW,并在狀態(tài)ACW的IU報頭區(qū)域中存儲結(jié)束狀態(tài)報頭,以及主存儲器存儲請求被發(fā)送到主存儲器以在狀態(tài)ACW中指定的地址中存儲擴展?fàn)顟B(tài)。在HBA154已完成I/O操作之后,HBA154生成具有在本地信道存儲器132中被路由和存儲的完成狀態(tài)的HBA請求,并且I/O操作的控制返回到信道128固件。當(dāng)HBA把I/O操作返回到信道微處理器固件時,在獲取陣列隊列中沒有排列的獲取請求,這是因為當(dāng)所請求的數(shù)據(jù)返回到HBA154時,HBA154知道它們什么時候完成。然而,可以在存儲陣列隊列228中具有仍然排列的一個或多個主存儲器存儲請求,這是因為HBA154沒有收到用于HBA存儲請求(多個)的完成響應(yīng)。因此,在一個實施例中,當(dāng)HBA154把I/O操作例如在固件I/O操作完成隊列上返回到信道微處理器時,微處理器固件可以執(zhí)行在傳輸讀取ACW和傳輸狀態(tài)ACW中的位的下列測試對于傳輸狀態(tài)ACW來說,如果ACW先前沒有在狀態(tài)2的話,固件等待ACW狀態(tài)字段以移動到2 (下面進一步說明ACW狀態(tài)字段)。當(dāng)固件看到該ACW在狀態(tài)2時,那么固件檢查IU報頭字段以確定哪個設(shè)備與ACW工作?,F(xiàn)在,在檢查或更改在分配給I/O操作的四個ACW的任一個中的任何字段之前,通過監(jiān)視在每 個ACW中有效請求計數(shù)=零、位設(shè)為一,對于讀取ACW和狀態(tài)ACW來說,固件等待有效請求計數(shù)遞減為零。一旦有效請求計數(shù)對于ACW 二者來說都是零,那么固件檢查傳輸狀態(tài)ACW中的傳輸狀態(tài)IU報頭,并隨后在子信道142中存儲結(jié)束I/O狀態(tài)。固件隨后生成對信道子系統(tǒng)114的I/O處理器(IOP)的中斷,通知IOP已完成了子信道的I/O操作。IOP然后生成中斷返回到0S110,其通知0S110已完成了 I/O操作。圖10示出了地址控制字(ACW)210的一個實施例,地址控制字(ACW)210通過在本地信道存儲器中的固件來建立并由數(shù)據(jù)路由器160使用以在HBA存儲器請求和主存儲器請求之間轉(zhuǎn)換。在處理每個主存儲器請求之后,數(shù)據(jù)路由器硬件更新ACW210中的信息,以便利用該ACW210準(zhǔn)備下一個HBA請求。一個示意性ACW210包括下列字段。ACW狀態(tài)字段250 (例如,字O、字節(jié)0)提供了 ACW的狀態(tài)。例如,當(dāng)建立ACW用于I/O操作時,用固件設(shè)置位0 (ACW有效位)為一,指示ACW是有效ACW。狀態(tài)在例如位4_7中被限定并包括下列代碼0-空閑/讀取設(shè)置。固件設(shè)置這種在已建立ACW來接收數(shù)據(jù)時的狀態(tài);I-寫入設(shè)置。固件設(shè)置這種在已建立ACW來傳輸數(shù)據(jù)時的狀態(tài);2-ACff IU報頭區(qū)域安全。當(dāng)整個IU報頭傳送到或來自HBA以用于獲取或存儲時,數(shù)據(jù)路由器硬件使ACW狀態(tài)從狀態(tài)O、I或3變?yōu)闋顟B(tài)2。當(dāng)從鏈路接收數(shù)據(jù)時,在ACW狀態(tài)250設(shè)為狀態(tài)2之前,整個IU報頭必須已被接收并存儲進入ACW報頭區(qū)域。一旦ACW狀態(tài)設(shè)為狀態(tài)2,數(shù)據(jù)路由器硬件不訪問在ACW中的IU報頭區(qū)域。一旦ACW設(shè)為狀態(tài)2,其保持在狀態(tài)2,直到固件使其改變。如果不存在用于IU的報頭數(shù)據(jù),那么固件可以設(shè)置ACW狀態(tài)為狀態(tài)2。3-進程中的IU報頭。當(dāng)PCIe請求只傳輸部分IU報頭時,硬件從任一狀態(tài)0或I設(shè)置為狀態(tài)3。ACff狀態(tài)保持在狀態(tài)3,直到隨后的PCIe請求完成整個IU報頭的傳輸,然后ACW狀態(tài)設(shè)為狀態(tài)2。如果在轉(zhuǎn)發(fā)主存儲器請求到主存儲器時遇到異常,那么通過數(shù)據(jù)路由器可以設(shè)置讀取丟棄或放棄位(例如,ACW狀態(tài)250的位2)。對于HBA存儲請求來說,設(shè)置讀取丟棄位,使得存儲數(shù)據(jù)到主存儲器的所有HBA請求將產(chǎn)生要被丟棄并且還不會累積在數(shù)據(jù)校驗字保存區(qū)280內(nèi)的數(shù)據(jù)。設(shè)置該位的條件包括在存儲用于該ACW的主存儲器上接收到的任何異常、以及任何時候該ACW的HPF-DR響應(yīng)字254位8 (“缺失的PCIe請求”)設(shè)置為一。對于HBA獲取請求來說,可以設(shè)置寫入放棄位(例如,ACff狀態(tài)250、位3 ),使得用于該ACW的任何HBA獲取請求將收到PCIe “事務(wù)層協(xié)議”(TLP)完成,其完成狀態(tài)設(shè)為完成者中止。設(shè)置該位的條件是在用于該ACW的主存儲器獲取請求上接收到的任何異常;當(dāng)由用于該ACW的固件請求時,由全局獲取停頓硬件來設(shè)置。在一個實施例中,當(dāng)處理進站HBA請求和設(shè)置固件讀取丟棄位252時,數(shù)據(jù)路由器硬件設(shè)置讀取丟棄位為一和缺少PCIe請求位為一。然后通過數(shù)據(jù)路由器硬件所采取的動作被列在位8下的HPF-DR響應(yīng)字中(如下所述)。固件使用該位以恢復(fù)如下的ACW,所述ACW具有停留在存儲陣列隊列228中的HBA存儲請求,由于尚未接收用于該ACW的先前的BHA請求,不能處理存儲陣列隊列228中的HBA存儲請求。HPF-DR響應(yīng)字字段254 (例如,字0,字節(jié)1、2、3)包括即 _01 響應(yīng)字,其是在I/O操作完成時由數(shù)據(jù)路由器硬件提供給固件的ACW結(jié)束狀態(tài)信息。結(jié)束狀態(tài)和其相應(yīng)的示意 性位的例子包括位8-缺失HBA請求當(dāng)用于該ACW的“延遲的” HBA存儲事務(wù)超過所設(shè)定的“生存時間”時,該位可以設(shè)為一。如果由于超出命令條件而數(shù)據(jù)路由器硬件先前重新入隊(re-en-queued)該HBA請求,并且由于缺失要接收的HBA請求,請求已等待在存儲陣列隊列118中的時間超過了設(shè)定的生存時間,就會發(fā)生這種情況。當(dāng)處理了入站HBA (讀取)請求以及ACW固件讀取丟棄位被設(shè)為一時,該位也可以被設(shè)為一。當(dāng)缺失HBA請求條件時所執(zhí)行的動作包括在ACW中存儲IU報頭(若有的話)、在數(shù)據(jù)校驗字中沒有累積的情況下丟棄IU數(shù)據(jù)(若有的話)、以及設(shè)置ACW狀態(tài)字段250的讀取丟棄位2為一。在執(zhí)行這些動作之后,用于該ACW的有效請求計數(shù)減一。位9-超過存儲器請求閾值需要滿足HBA請求的主存儲器請求的數(shù)量超過了組存儲器請求閾值。位10-TIDAL格式校驗TIDA列表地址或TIDAW不符合協(xié)議格式規(guī)則。失效的TIDAff的地址寫入該ACW的失效zSeries存儲器地址字段。位11-工作計數(shù)溢出當(dāng)數(shù)據(jù)通過數(shù)據(jù)路由器正在被獲取自或存儲到主存儲器時,試圖傳輸?shù)交騺碜訮CIe總線的數(shù)據(jù)的總字節(jié)計數(shù)、填充字節(jié)和數(shù)據(jù)校驗字,超過了由ACff工作計數(shù)指定的數(shù)據(jù)的字節(jié)計數(shù)。位12-從HBA接收的重復(fù)HBA獲取請求或失效HBA存儲請求重復(fù)的HBA獲取請求將不會被處理,相反,完成者中止完成TLP (Completer Abort completion TLP)將返回到HBA。寫入放棄位(ACW狀態(tài)字節(jié)位3)設(shè)為一;或者,對于失效的HBA存儲請求來說,該位和讀取丟棄(ACW狀態(tài)字節(jié)位2)設(shè)為一,并且丟棄用于該ACW的所有后續(xù)的HBA存儲請求。位13-有效請求計數(shù)=零無論何時數(shù)據(jù)路由器硬件更新ACW中的ACW有效請求計數(shù),其設(shè)置該位等于下面所定義的有效請求計數(shù)字段290的所有位的N0R。位14-回轉(zhuǎn)ACW:當(dāng)24位下一預(yù)期的16兆字節(jié)偏移字段從OxFFFFFF回轉(zhuǎn)到0x000000時,該位設(shè)為一。設(shè)為一的該ACW回轉(zhuǎn)位阻止數(shù)據(jù)路由器硬件將用于該ACW的0x000000至OxOOOOIF的16兆字節(jié)偏移值解釋作為IU報頭信息。
位15-TIDA獲取主存儲器錯誤當(dāng)所有下述語句為真的時候,設(shè)置該位響應(yīng)用于TIDA列表中的TIDAW條目的主存儲器獲取請求收到異常或壞的硬件響應(yīng);從該不可用的TIDAW請求的HBA中接收用于數(shù)據(jù)的HBA請求;以及對于該I/O操作沒有檢測到先前的錯誤。從接收邏輯240接收的錯誤指示被存儲在ACW TIDA硬件響應(yīng)字段ACW字9、字節(jié)2和3中。產(chǎn)生這種錯誤的地址被寫入失效zSeries存儲器地址字段ACW字16和17中。位17-數(shù)據(jù)校驗字不匹配為存儲到主存儲器,所計算的數(shù)據(jù)校驗字不匹配接收的數(shù)據(jù)校驗字。只有在ACW中通過HPF控制位3和不設(shè)為一的讀取丟棄位2啟動數(shù)據(jù)校驗字校驗,那么才發(fā)布(posted)。位18-方向錯誤在HPF-DR控制字中的ACW方向位0不匹配用于該ACW的HBA請求的方向。位21-主存儲器響應(yīng)錯誤從主存儲器請求中接收錯誤。在一個實施例中,錯誤字節(jié)、詳細的錯誤從主存儲器響應(yīng)被寫入該ACW狀態(tài)字段的位19-20以上或位24-31以下。 產(chǎn)生錯誤的主存儲器地址被寫入到本ACW的失效zSeries存儲器地址字段。位22-IU報頭數(shù)據(jù)校驗字段不匹配如果在ACW中不用HPF-DR控制字位16禁用所有進站IU的話,硬件對所有進站IU校驗在28字節(jié)的IU報頭信息上的IU報頭數(shù)據(jù)校驗字。如果IU報頭數(shù)據(jù)校驗字失效,丟棄在IU中存在的任何數(shù)據(jù)有效載荷。如果遇到在HPF-DR響應(yīng)字中在結(jié)束狀態(tài)時指示的上述錯誤,而同時從HBA到主存儲器存儲數(shù)據(jù),丟棄在HBA中的剩余的字節(jié)和用于IU的所有后續(xù)HBA請求。當(dāng)在該字中錯誤位8-12、15、17、18、21和22中任一個被設(shè)為一時,這是強制執(zhí)行在ACW狀態(tài)下的讀取丟棄位要設(shè)為一。如果在從主存儲器獲取數(shù)據(jù)以傳輸通過PCIe總線時檢測錯誤的話,HPR-DR硬件將發(fā)送信號給PCIe輸出邏輯244以返回完成TLP (Completion TLP),其中完成狀態(tài)被設(shè)置為完成者中止。這將使HBA終止啟動引起異常的主存儲器獲取請求的交換。利用完成狀態(tài)被設(shè)置為完成者中止的相同完成TLP來響應(yīng)對該ACW的所有后續(xù)HBA請求。當(dāng)在該字中錯誤位8-12、15、17、18、21和22中任一個被設(shè)為一時,強制執(zhí)行上述內(nèi)容,且在ACW狀態(tài)中的寫入放棄位要設(shè)為一。如果HPR-DR硬件遇到具有設(shè)為0的有效(位O)、或具有失效ACff狀態(tài)的ACW (用于獲取的0和4-F、或用于存儲的I和4-F),提請HPR-DR硬件信道控制校驗。再次參考圖10,ACW還可以包括工作計數(shù)字段256。當(dāng)用數(shù)據(jù)路由器處理用于該ACff的第一 HBA請求時,從啟動計數(shù)字段(如下所述)的字7中初始化該字段。隨著數(shù)據(jù)被從主存儲器獲取或存儲到主存儲器中,數(shù)據(jù)路由器硬件遞減該計數(shù)。在該計數(shù)已遞減為零之后,數(shù)據(jù)不會保存到主存儲器。放棄在該計數(shù)已變?yōu)榱阒蟮膹腜CIe總線接收的任何數(shù)據(jù),并在HPF-響應(yīng)字字段中將“工作計數(shù)溢出”位設(shè)為一。如果在ACW狀態(tài)字節(jié)中任意寫入放棄或讀取丟棄位設(shè)為一,那么對于丟棄或放棄的數(shù)據(jù)字節(jié)來說,不會遞減該計數(shù)。如果在HPF-響應(yīng)字254中任何錯誤位已被設(shè)為I個,那么該計數(shù)的剩余值會失效,其指示在主存儲器響應(yīng)中接收錯誤。HPF-DR控制字字段258由固件設(shè)置并控制數(shù)據(jù)路由器執(zhí)行的功能。說明示意性功能(對應(yīng)在該字段中的示意性位)如下位O-ACW方向為從主存儲器中獲取設(shè)為‘Tb。為存儲到主存儲器設(shè)為‘0’b。該位必須匹配參考該ACW的HBA請求,否則在HPF-DR響應(yīng)字中的“方向錯誤”位18設(shè)為一。
位1-2- “IU數(shù)據(jù)-數(shù)據(jù)校驗字選擇”如果下面的位3 (啟動數(shù)據(jù)校驗字)設(shè)為一,這些位用下列代碼點進行編碼,以通知用于數(shù)據(jù)IU的數(shù)據(jù)校驗字類型的數(shù)據(jù)路由器硬件,下列代碼指示所使用的數(shù)據(jù)校驗字的類型0-利用數(shù)據(jù)校驗字類型I。(LRC)I-利用數(shù)據(jù)校驗字類型2。(校驗和)2-利用數(shù)據(jù)校驗字類型3。(CRC)3-利用數(shù)據(jù)校驗字類型4。位3- “IU數(shù)據(jù)-數(shù)據(jù)校驗字啟動”‘0’ b的值指示關(guān)閉,即,有沒有數(shù)據(jù)字校驗/生成用于該條目?!甌b的值指示開啟,即,每上面位1-2的編碼的數(shù)據(jù)字校驗/生成能啟動用于該ACW。 位4-5 - IU報頭數(shù)據(jù)校驗字選擇編碼如果下面的位16被設(shè)為零,那么位4-5用下列代碼點進行編碼,以通知用于IU報頭的數(shù)據(jù)校驗字類型的數(shù)據(jù)路由器硬件(IU報頭數(shù)據(jù)校驗字啟動)0-利用數(shù)據(jù)校驗字類型I。(LRC)I-利用數(shù)據(jù)校驗字類型2。(校驗和)2-利用數(shù)據(jù)校驗字類型3。(CRC)3-利用數(shù)據(jù)校驗字類型4。位16-禁止IU報頭數(shù)據(jù)校驗字‘0’b的值(關(guān)閉)指示每次上面位4-5編碼的IU報頭數(shù)據(jù)字校驗/生成能啟動用于該ACW。‘Tb的值(開啟)指示沒有校驗進站IU報頭中的數(shù)據(jù)校驗字字段。出站報頭中的數(shù)據(jù)校驗字字段不被修改并在設(shè)置在ACW中時被發(fā)送。位17-旁路TIDAL ‘0’ b的值指示要使用TIDAL處理。在ACW中的地址是TIDAW列表的起始地址。每個TIDAW具有主存儲器地址和用于獲取或存儲數(shù)據(jù)的計數(shù)。‘Tb的值指示旁路TIDAL處理,并且獲取或存儲數(shù)據(jù)連續(xù)開始在ACW中的主存儲器地址處。位22-23-有效載荷數(shù)據(jù)校驗字位置這個兩位編碼表示,對于寫入操作來說,從在設(shè)置數(shù)據(jù)校驗字的有效載荷結(jié)束的字數(shù)目。對于讀取操作忽略該編碼。對于除了‘00’b的編碼,開始工作計數(shù)必須是4字節(jié)的倍數(shù)(S卩,無填充)。跟隨數(shù)據(jù)校驗字之后的IU中的字不包含在數(shù)據(jù)校驗字計數(shù)中。示意性代碼包括‘00’ b :當(dāng)工作計數(shù)=0時插入所生成的數(shù)據(jù)校驗字。這在所傳輸?shù)腎U加填充字節(jié)的末端處放置數(shù)據(jù)校驗字,以把數(shù)據(jù)校驗字放在字邊界上。該代碼點用于傳輸除傳輸命令I(lǐng)U以外的一些?!?1’b :當(dāng)工作計數(shù)=4時用所生成的數(shù)據(jù)校驗字覆蓋現(xiàn)有字。這從所傳輸?shù)腎U末端放置一個字(4字節(jié))的數(shù)據(jù)校驗字。該代碼點僅用于傳輸傳輸命令I(lǐng)U?!?0’b:當(dāng)工作計數(shù)=8時用所生成的數(shù)據(jù)校驗字覆蓋現(xiàn)有字。這從所傳輸?shù)腎U末端放置兩個字(8字節(jié))的數(shù)據(jù)校驗字。該代碼點僅用于傳輸傳輸命令I(lǐng)U。‘11’ b:無效的。再次參考圖10,ACW還可以包括用固件設(shè)置的密鑰259。密鑰從ACW中獲得并由數(shù)據(jù)路由器硬件插入在用于訪問主存儲器的主存儲器請求中。區(qū)域ID字段260由固件設(shè)置,以及從ACW中獲得并由數(shù)據(jù)路由器硬件插入在用于訪問主存儲器的主存儲器請求中。主存儲器地址字段262指示主存儲器中的開始地址(例如,如果控制字字段的位17是一)或者Tidal間接數(shù)據(jù)地址列表(TIDAL)(例如,如果位17是零)的開始地址,其中主存儲器是要從該開始地址獲取用于該ACW的數(shù)據(jù)或存儲用于該ACW的數(shù)據(jù)。在ACW中的主存儲器地址是數(shù)據(jù)的主存儲器地址或稱為TIDAL的傳輸間接地址列表(TransportIndirect Address List)的開始地址。在TIDAL中的每個條目是TIDAW,TIDAW是位于TIDAW中的計數(shù)字段中的用于數(shù)據(jù)字節(jié)數(shù)目的開始主存儲器地址。如果用在HPF-DAR控制字中位17指示TIDAL,那么HPF-DR硬件從主存儲器中獲取TIDAL,然后使用每個TIDAW中的地址以在主存儲器中獲取或存儲數(shù)據(jù)。通過數(shù)據(jù)路由器硬件使用IU報頭計數(shù)字段263,以追蹤要從PCTe傳輸?shù)紸CW或從ACff傳輸?shù)絇CTe的留下的IU報頭字節(jié)數(shù)目。在IU傳輸或接收開始的時候,通過固件使IU報頭計數(shù)初始化為要從離開ACW底部傳輸?shù)絇CIe總線或從PCIe總線傳輸?shù)紸CW底部的IU報頭字節(jié)的數(shù)目。當(dāng)建立ACW時,通過固件初始化24位的“下一個預(yù)期的16兆字節(jié)偏移”字段264。該偏移字段盡管被描述為16兆字節(jié)、但可以配置用于其它理想的偏移配置。當(dāng)處理了每個HBA獲取或存儲請求時,數(shù)據(jù)路由器硬件將校驗HBA地址中的16兆字節(jié)偏移180對比ACW 中的下一個預(yù)期的16兆字節(jié)偏移字段。如果它們匹配,數(shù)據(jù)路由器硬件移動數(shù)據(jù)(如果該數(shù)據(jù)是到或來自ACW底部的IU報頭)以及任何用戶數(shù)據(jù)去往或來自主存儲器。數(shù)據(jù)路由器硬件隨后以HBA事務(wù)大小遞增下ACW中的一個預(yù)期的16兆字節(jié)偏移字段。在一個實施例中,為了使用4字節(jié)工作計數(shù)字段,利用為3字節(jié)的下一個預(yù)期的16兆字節(jié)偏移字段,在工作計數(shù)傳轉(zhuǎn)變?yōu)榱阒?,下一個預(yù)期的偏移可以從OxFFFFFF回轉(zhuǎn)到0x000000達到255次。下一個預(yù)期的偏移回轉(zhuǎn)第一次時,在該ACW中,ACW回轉(zhuǎn)位(在HPF-響應(yīng)字字段254中的位14)被設(shè)為一。通過固件使用開始計數(shù)字段266以加載在該ACW控制下被傳輸用于I/O操作的數(shù)據(jù)的字節(jié)數(shù)目。該計數(shù)包括在傳輸數(shù)據(jù)上的所有插入填充和數(shù)據(jù)校驗字字節(jié),而不包括在傳輸或接收數(shù)據(jù)上IU報頭字節(jié)或最終填充以及數(shù)據(jù)校驗字字節(jié)。當(dāng)?shù)谝?HBA請求被處理用于該ACW時,數(shù)據(jù)路由器硬件傳輸該計數(shù)給工作計數(shù)字段256。數(shù)據(jù)路由器硬件不修正ACff中的開始計數(shù)。利用從HBA接收的地址字段172中的對應(yīng)的CTL字段174和有效字段178,通過數(shù)據(jù)路由器硬件來比較CTL字段268和驗證字段270。如果它們不相等,發(fā)布(post)錯誤,并且不執(zhí)行主存儲器操作。該錯誤導(dǎo)致信道控制校驗。為了 HBA存儲,由數(shù)據(jù)路由器硬件使用數(shù)據(jù)校驗字狀態(tài)字段272以追蹤ACW中的 最后4數(shù)據(jù)字節(jié)保存區(qū)(下面要說明的)中的哪些數(shù)據(jù)字節(jié)將被用于在用于該ACW的下一事務(wù)中的數(shù)據(jù)校驗字計算。這需要用于如下情況,HBA存儲請求沒有結(jié)束在相對于數(shù)據(jù)傳輸?shù)拈_始的字邊界上,以及僅能完成字邊界上的數(shù)據(jù)的四個字節(jié)字的數(shù)據(jù)校驗字計算。因此,達到三個字節(jié)的預(yù)先接收數(shù)據(jù)和邊界狀態(tài)信息必須被保存在ACW中,直到接收數(shù)據(jù)的后續(xù)字節(jié),以繼續(xù)計算數(shù)據(jù)校驗字。TIDAL硬件響應(yīng)字段274用于存儲被接收用于獲取的TIDA列表的主存儲器異常或不正確路由器硬件響應(yīng)。該字段的位2-15具有與HPF-DR響應(yīng)字字段254的位18-31相同的定義。因為需要使用TIDA列表之前其可以由HPF-DR硬件被預(yù)先獲取,所以該不正確響應(yīng)將不會被固件報告為錯誤,除非從HBA接收HBA請求以傳輸會使用該不可用TIDAW的數(shù)據(jù)。該后一條件表示,固件為HPF-DR響應(yīng)字字段254的位15。數(shù)據(jù)路由器硬件使用先前數(shù)據(jù)校驗字保存區(qū),以在每個HBA存儲事務(wù)末端處保存鄰近最后臨時數(shù)據(jù)校驗字值的那個值。通過利用所接收的最后4數(shù)據(jù)字節(jié)的計算不會修正該臨時值。從而,如果當(dāng)前HBA事務(wù)完成操作,該字段包含用于操作的最終計算的數(shù)據(jù)校驗字值,并且所接收的最后4數(shù)據(jù)字節(jié)所接收的數(shù)據(jù)校驗字,其被保存在該ACW中的隨后字段中。最后4數(shù)據(jù)字節(jié)保存區(qū)278被硬件使用,以保存在每個HBA請求上接收的最后4數(shù)據(jù)字節(jié)。對于除最后的以外的HBA請求來說,如果當(dāng)前HBA請求不結(jié)束在字邊界上的話,達到三個的這些字節(jié)可以要求后續(xù)的數(shù)據(jù)校驗字累積。關(guān)于需要字節(jié)的信息記錄在數(shù)據(jù)校驗字狀態(tài)272中。對于最后的HBA請求來說,該字段包含所接收的數(shù)據(jù)校驗字。在一個實施例中,為了 HBA PCIe獲取,該字段保持達到以最后之前4字節(jié)PCIe邊界為基礎(chǔ)的最后四個數(shù)據(jù)字節(jié)。因此,如果PCIe地址以I結(jié)束,那么該字段保持所傳輸?shù)淖詈笞止?jié)。如果PCIe 地址以2結(jié)束,該字段保持所傳輸?shù)淖詈髢蓚€字節(jié),并以此類推,直到最后四個字節(jié)。在每個HBA事務(wù)(獲取或存儲)的末端處,數(shù)據(jù)校驗字保存區(qū)280被數(shù)據(jù)路由器硬件使用,以保存臨時計算的數(shù)據(jù)校驗字值,該臨時計算的數(shù)據(jù)校驗字值用于為用于該ACW的下一事務(wù)做種子。TIDAL工作區(qū)地址282是位于本地信道存儲器中的256字節(jié)工作區(qū)的地址,并且由數(shù)據(jù)路由器硬件使用,以由數(shù)據(jù)路由器硬件緩存從主存儲器中預(yù)先獲取的TIDA列表元素(element)。固件設(shè)置該字段以指出用于該ACW的分配區(qū)。TIDAL工作區(qū)索引284是進入本地信道存儲器TIDAL工作區(qū)的索引,其指出當(dāng)前有效TIDAW條目并且由數(shù)據(jù)路由器硬件保持。數(shù)據(jù)校驗字種子字段286被固件使用,以在該字中寫入初始數(shù)據(jù)校驗字種子值。在用于該ACW的數(shù)據(jù)傳輸?shù)淖x取或?qū)懭霑r,該字用作用于數(shù)據(jù)校驗字運算的開始種子,并且當(dāng)用于寫入的那個TIDAW計數(shù)變換為零時,還用于接下來的TIDAW中“插入數(shù)據(jù)校驗字” TIDAW標(biāo)識的處理的“重新播種”。對于傳輸命令A(yù)CW來說,固件獲得用于傳輸命令I(lǐng)U的原始種子,并通過更新用于傳輸命令I(lǐng)U的開始數(shù)據(jù)校驗字種子來計算傳輸命令I(lǐng)U ACff種子的新值,其中IU報頭和寫入和或讀取長度字段位于傳輸IU的末端處。因此,即使在數(shù)據(jù)路由器硬件從ACW獲得種子的情況下,傳輸命令I(lǐng)U數(shù)據(jù)校驗字也覆蓋整個傳輸命令I(lǐng)U,并且僅僅計算在IU的傳輸命令I(lǐng)U數(shù)據(jù)部分上的數(shù)據(jù)校驗字。數(shù)據(jù)路由器硬件隨后把數(shù)據(jù)校驗字插入到IU中,并隨后傳輸寫入或讀取長度字,或者如果I/O操作傳輸在雙方向上的數(shù)據(jù),那么傳輸寫入和讀取長度字段。失效的zSeries存儲器地址288被用于存儲引起異常的存儲區(qū)的地址,并且適當(dāng)?shù)腻e誤位設(shè)置在HPF-DR響應(yīng)字254中。有效請求計數(shù)計數(shù)器290被ACW使用,以保持追蹤在用于ACW的存儲陣列隊列228中當(dāng)前存留多少HBA請求。該計數(shù)器對于存儲到用于ACW的存儲陣列隊列中的每個HBA請求遞增,并在已處理HBA請求時遞減。當(dāng)對請求發(fā)生下列之一情況時,考慮處理用于該ACW的HBA請求用于HBA請求的所有主存儲器請求已利用主存儲器響應(yīng)完成;如果讀取丟棄位、位2被設(shè)為一,那么用于HBA請求的所有數(shù)據(jù)已被放棄;對于僅包含IU報頭信息的HBA請求來說,所有的IU報頭信息存儲在ACW中。在數(shù)據(jù)路由器硬件更新ACW中的ACW有效請求計數(shù)的任何情況下,其設(shè)置有效請求計數(shù)=零(HPD-DR響應(yīng)字254、位13)到有效請求計數(shù)的位的NOR。從而,當(dāng)HPF-DR硬件遞減有效請求計數(shù)到0時,有效請求計數(shù)=零的位將被設(shè)為一。IU報頭信息字段292用于存儲命令、狀態(tài)和/或用在I/O操作中的數(shù)據(jù)IU報頭。在一個實施例中,該字段是用于“IU報頭”信息的8個字的區(qū)域。如果IU包含IU報頭,那么IU報頭信息是傳輸?shù)交騺碜枣溌飞系腎U中的設(shè)備的第一個數(shù)據(jù)。IU報頭信息被信道使用或生成,但不是被存儲到或獲取自主存儲器的部分數(shù)據(jù)。因此,該信息被信道微處理器固件校驗或生成。ACW控制塊的底部8個字用于緩存IU報頭并用作數(shù)據(jù)路由器硬件和用于IU報頭的固件之間的界面。當(dāng)ACW是讀取數(shù)據(jù)ACW或?qū)懭霐?shù)據(jù)ACW時,IU報頭信息是傳輸通過PCIe總線的第一個數(shù)據(jù)。當(dāng)數(shù)據(jù)路由器硬件完成IU報頭的傳輸時,其把ACW狀態(tài)字段250值改變?yōu)?。如果IU傳輸來說,固件在給HBA發(fā)信號傳輸IU之前在ACW中建立IU報頭。對于所接收的 IU來說,當(dāng)固件被HBA告知I/O操作已完成并且已證實ACW處于ACW狀態(tài)2時,固件核查ACW中的IU報頭。固件還控制IU報頭的最后字是否表示用于IU報頭的數(shù)據(jù)或IU報頭數(shù)據(jù)校驗字,IU報頭的最后字在本實施例中總是處于16兆字節(jié)偏移28、0x00001C處。HPF-DR控制位16(禁止IU報頭數(shù)據(jù)校驗)通知數(shù)據(jù)路由器硬件,用于IU報頭的數(shù)據(jù)校驗字是否要被生成或校驗。如果啟動,隨著IU報頭被發(fā)送到HBA時,數(shù)據(jù)路由器硬件生成IU報頭數(shù)據(jù)校驗字,并隨后用所生成的數(shù)據(jù)校驗字替代來自ACW的IU報頭的最后字。如果啟動,數(shù)據(jù)路由器硬件校驗在所接收的HBA IU報頭上數(shù)據(jù)校驗字并報告HPF-DR響應(yīng)字254中在位22的結(jié)果。固件可以建立ACW,使得數(shù)據(jù)路由器硬件傳輸少于8個字的IU報頭信息。通過調(diào)整被PCIe HBA所使用的狀態(tài)、報頭計數(shù)、下一個預(yù)期16兆字節(jié)偏移和初始16兆字節(jié)偏移來做這件事情,使得要被傳輸或接收的最后IU報頭字處在16兆字節(jié)偏移的28、0x00001C處,以及有效載荷(如果有的話)的第一個字節(jié)處在16兆字節(jié)偏移的32、0X000020處。IU報頭總是整數(shù)的字。在一個實施例中,如果IU報頭不需要用于IU,那么固件建立ACW,如下I.設(shè)置ACW IU報頭計數(shù)為零。ACW字6、字節(jié)0 ;2.設(shè)置ACW狀態(tài)為狀態(tài)2 ;3.設(shè)置ACW回轉(zhuǎn)位為一(HPF-DR響應(yīng)字位14)、在被提供給HBA的地址控制結(jié)構(gòu)中設(shè)置開始16兆字節(jié)偏移為0x000000、以及設(shè)置相同值進入在ACW中的下一個預(yù)期的16兆字節(jié)偏移字段。4.設(shè)置ACW工作計數(shù)256等于ACW開始計數(shù)266 ;5.設(shè)置ACW數(shù)據(jù)校驗字狀態(tài)為0x00的值;以及6.設(shè)置先前數(shù)據(jù)校驗字保存區(qū)276和數(shù)據(jù)校驗字保存區(qū)280等于數(shù)據(jù)校驗字種子286?,F(xiàn)在看來,該ACW被分配給已接收或傳輸IU報頭用于IU的數(shù)據(jù)路由器硬件。以從I/O指令接收得到的信息為基礎(chǔ),由信道微處理器建立在上面描述的ACW中的某些字段。示意性字段包括ACW狀態(tài)字段、響應(yīng)字字段、HPF-DR控制字段、主存儲器或TIDA存儲器地址字段、報頭計數(shù)、“下一個預(yù)期的16兆字節(jié)偏移”字段、D字段、CTL字段、驗證字段、TIDAL工作區(qū)地址字段、數(shù)據(jù)校驗字種子字段以及IU報頭字段。在ACW中的其它字段是在執(zhí)行I/o操作時被HPF-DR硬件使用的控制字段,并用于在已完成I/O操作之后呈現(xiàn)結(jié)束狀態(tài)信息返回給固件。圖11-14示例由ACW中的固件設(shè)置的示意性值,ACff存儲在本地信道存儲器中并被數(shù)據(jù)路由器硬件使用。參考圖11,為生成傳輸命令A(yù)CW 300,其被HPF-DR使用來組裝傳輸命令I(lǐng)U,采用下列設(shè)置I)對于ACW狀態(tài)字段,ACff有效位設(shè)為一并且設(shè)置I的狀態(tài)編碼;2) ACff回轉(zhuǎn)字段設(shè)為零,(當(dāng)HPF-DR響應(yīng)字設(shè)置為0x000000時的設(shè)置);3)對于HPF-DR控制字段,設(shè)置下列值位0 (ACW方向)設(shè)為一。數(shù)據(jù)從信道中傳輸; 位1-2 (IU數(shù)據(jù)-數(shù)據(jù)校驗字選擇)設(shè)為‘00’ b以指示要使用的LRC字;位3 (IU數(shù)據(jù)-數(shù)據(jù)校驗字啟動)設(shè)為一;位4-5 ( IU報頭數(shù)據(jù)校驗字選擇)不被使用;位16 (禁止IU報頭數(shù)據(jù)校驗字)設(shè)為一;位17 (旁路TIDAL)設(shè)為TCW中的TCCB TIDAL標(biāo)識位的反相;位22-23 (有效載荷數(shù)據(jù)校驗字位置)設(shè)置有‘10’ b的代碼值;4)從子信道中得到密鑰值;5)從TCW中得到主存儲器地址;6 )對于傳輸命令A(yù)CW,IU報頭計數(shù)設(shè)為OxOC ;7)對于傳輸命令A(yù)CW,下一個預(yù)期的16兆字節(jié)偏移字段設(shè)為0x000014 ;8)從TCW中傳輸開始計數(shù)字段值;9)當(dāng)建立ACW時,固件寫入放棄位(D)設(shè)為零;10)對于所有傳輸ACW,CTL字段設(shè)為0x02 ;11)對于在信道初始化的該ACW,驗證字段設(shè)為唯一值;12)對于在信道初始化的該ACW,TIDAL工作區(qū)域地址設(shè)為唯一值;13)數(shù)據(jù)校驗字種子對于傳輸命令A(yù)CW,固件獲得原始傳輸命令種子、計算新種子值,該新種子值用于來自在該ACW中建立的IU報頭101數(shù)據(jù)中的數(shù)據(jù)路由器硬件和從TCW得到的寫入和讀取長度字段;以及14) IU報頭101 :從子信道和TCW中建立12字節(jié)的IU報頭101。參考圖12,傳輸讀取數(shù)據(jù)ACW302被數(shù)據(jù)路由器使用,以接收讀取傳輸數(shù)據(jù)IU并生成主存儲器命令,以把讀取數(shù)據(jù)發(fā)送到主存儲器。通過采用下列設(shè)置生成傳輸讀取ACW I)對于ACW狀態(tài)字段,ACff有效位設(shè)為一并且設(shè)置2的狀態(tài)編碼;2) ACff回轉(zhuǎn)字段設(shè)為一,(當(dāng)HPF-DR響應(yīng)字段設(shè)置為0x020000時);3)對于HPF-DR控制字段,設(shè)置下列值位0 (ACW方向)設(shè)為零。在信道中接收數(shù)據(jù);位1-2 (IU數(shù)據(jù)-數(shù)據(jù)校驗字選擇)設(shè)為‘10’b以指示要使用的CRC字;位3 (IU數(shù)據(jù)-數(shù)據(jù)校驗字啟動)設(shè)為一;位4-5 (IU報頭數(shù)據(jù)校驗字選擇)不被使用。設(shè)置上述ACW回轉(zhuǎn)位;位16 (禁止IU報頭數(shù)據(jù)校驗字)不被使用。設(shè)置上述ACW回轉(zhuǎn)位; 位17 (旁路TIDAL)設(shè)為TCW中的TIDAL讀取標(biāo)識位的反相;
位22-23 (有效載荷數(shù)據(jù)校驗字位置)設(shè)置有‘00’ b的代碼值,因為其不用于該ACff ;4)從子信道中得到密鑰值;5)從TCW中得到主存儲器地址;6 )對于傳輸讀取數(shù)據(jù)ACW,IU報頭計數(shù)設(shè)為0x00 ;7)對于傳輸讀取數(shù)據(jù)ACW,下一個預(yù)期的16兆字節(jié)偏移字段設(shè)為0x000000 ;8)從TCW中的讀取數(shù)據(jù)計數(shù)獲得開始計數(shù)字段值;9)當(dāng)建立ACW時,固件寫入放棄位(D)設(shè)為零;10)對于所有傳輸ACW,CTL字段設(shè)為0x02 ; 11)對于在信道初始化的該ACW,驗證字段設(shè)為唯一值;12)對于在信道初始化的該ACW,TIDAL工作區(qū)域地址設(shè)為唯一值;以及13)對于傳輸讀取數(shù)據(jù)ACW,數(shù)據(jù)校驗字種子被設(shè)為OxFF FFFF FF。參考圖13,傳輸讀取數(shù)據(jù)ACW304被數(shù)據(jù)路由器使用,以生成寫入傳輸數(shù)據(jù)IU,以把寫入數(shù)據(jù)傳輸?shù)娇刂茊卧?。通過采用下列設(shè)置生成傳輸寫入ACW I)對于ACW狀態(tài)字段,ACff有效位設(shè)為一并且設(shè)置2的狀態(tài)編碼;2)當(dāng)HPF-DR響應(yīng)字段設(shè)置為0x020000時,ACff回轉(zhuǎn)字段設(shè)為一;3)對于HPF-DR控制字段,設(shè)置下列值位0 (ACW方向)設(shè)為一。傳輸數(shù)據(jù)給控制單元;位1-2 (IU數(shù)據(jù)-數(shù)據(jù)校驗字選擇)設(shè)為‘10’ b以指示要使用的CRC字;位3 (IU數(shù)據(jù)-數(shù)據(jù)校驗字啟動)設(shè)為一;位4-5 (IU報頭數(shù)據(jù)校驗字選擇)不被使用。設(shè)置上述ACW回轉(zhuǎn)位;位16 (禁止IU報頭數(shù)據(jù)校驗字)不被使用。設(shè)置上述ACW回轉(zhuǎn)位;位17 (旁路TIDAL)設(shè)為TCW中的TIDAL讀取標(biāo)識位的反相;位22-23 (有效載荷數(shù)據(jù)校驗字位置)設(shè)置有‘00’ b的代碼值;4)從子信道中得到密鑰值;5)從TCW中得到主存儲器地址;6)對于傳輸寫入數(shù)據(jù)ACW,IU報頭計數(shù)設(shè)為0x00 ;7)對于傳輸寫入數(shù)據(jù)ACW,下一個預(yù)期的16兆字節(jié)偏移字段設(shè)為0x000000 ;8)從TCW中的讀取數(shù)據(jù)計數(shù)獲得開始計數(shù)字段值;9)當(dāng)建立ACW時,固件寫入放棄位(D)設(shè)為零;10)對于所有傳輸ACW,CTL字段設(shè)為0x02 ;11)對于在信道初始化的該ACW,驗證字段設(shè)為唯一值;12) TIDAL工作區(qū)域地址與傳輸命令A(yù)CW的工作區(qū)域相同;以及13)對于傳輸讀取數(shù)據(jù)ACW,數(shù)據(jù)校驗字種子被設(shè)為OxFF FFFF FF。參考圖14,傳輸狀態(tài)ACW 306被數(shù)據(jù)路由器使用,以存儲來自所接收的傳輸狀態(tài)IU的擴展?fàn)顟B(tài)數(shù)據(jù),并轉(zhuǎn)發(fā)該狀態(tài)數(shù)據(jù)給主存儲器。通過采用下列設(shè)置生成傳輸狀態(tài)塊ACff I)對于ACW狀態(tài)字段,ACff有效位設(shè)為一并且設(shè)置0的狀態(tài)編碼;2)當(dāng)HPF-DR響應(yīng)字段設(shè)置為0x000000時,ACff回轉(zhuǎn)字段設(shè)為零;
3)對于HPF-DR控制字段,設(shè)置下列值位0 (ACW方向)設(shè)為零。從控制單元接收數(shù)據(jù);位1-2 (IU數(shù)據(jù)-數(shù)據(jù)校驗字選擇)設(shè)為‘00’ b以指示要使用的LRC字;位3 (IU數(shù)據(jù)-數(shù)據(jù)校驗字啟動)設(shè)為一;位4-5 (IU報頭數(shù)據(jù)校驗字選擇)設(shè)為‘00’ b以指示要使用的LRC字;位16 (禁止IU報頭數(shù)據(jù)校驗字)設(shè)為零。不禁止IU報頭數(shù)據(jù)校驗字;位17 (旁路TIDAL)設(shè)為一,當(dāng)不使用間接尋址時;
位22-23 (有效載荷數(shù)據(jù)校驗字位置)設(shè)置有‘00’b的代碼值,并且不用于該ACW ;4)對于該ACW,密鑰值設(shè)為0x0 ;5)從TCW中得到主存儲器地址;6 )對于傳輸狀態(tài)ACW,IU報頭計數(shù)設(shè)為0x20 ;7)對于傳輸狀態(tài)ACW,下一個預(yù)期的16兆字節(jié)偏移字段設(shè)為0x000000 ;8)在每一光纖信道構(gòu)架中,開始計數(shù)字段值設(shè)為0x40 ;9)當(dāng)建立ACW時,固件寫入放棄位(D)設(shè)為零;10)對于所有傳輸ACW,CTL字段設(shè)為0x02 ;11)對于在信道初始化的該ACW,驗證字段設(shè)為唯一值;以及13)對于傳輸狀態(tài)ACW,數(shù)據(jù)校驗字種子被設(shè)為0xA5 5A A5 5A。參考圖15,說明各種類型的地址控制結(jié)構(gòu)的HBA地址部分的例子。在這些例子中,當(dāng)CTL字段174等于0x02,16兆字節(jié)偏移180只是對來自用于I/O操作的HBA中的連續(xù)HBA請求進行遞增的部分HBA地址172。數(shù)據(jù)的第一個32字節(jié)、用于要被傳輸或接收的信息單元(IU)的HBA請求可以是IU報頭信息,其從ACW控制塊的底部獲取或存儲進入ACW控制塊的底部。數(shù)據(jù)路由器硬件獲取或存儲該信息來自或進入用于0x000000至0x0000IF范圍內(nèi)的PCIel6兆字節(jié)偏移地址的ACW底部。這允許達到32字節(jié)的IU報頭被附加到或剝離于被傳輸?shù)交蚪邮兆栽O(shè)備的傳輸數(shù)據(jù)IU。當(dāng)16兆字節(jié)偏移回轉(zhuǎn)時,其回轉(zhuǎn)回到0x000000,但對于這種情況,由于它是一個回轉(zhuǎn)條件并且在ACW中ACW回轉(zhuǎn)位設(shè)為一,所以所接收的或傳輸?shù)臄?shù)據(jù)繼續(xù)被存儲或獲取自主存儲器、而不進入或離開ACW。固件具有建立ACW的能力,以使得如果沒有IU報頭信息出現(xiàn)在IU開始處的話,則IU報頭信息不會獲取自或存儲進入ACW。ACW回轉(zhuǎn)位是在ACW的HPF-DR響應(yīng)字字段中的位14。對于傳輸命令地址控制結(jié)構(gòu),從TCW得到的字節(jié)計數(shù)從不使16兆字節(jié)偏移字段180回轉(zhuǎn),因此,只是一個地址控制結(jié)構(gòu)被需要用于數(shù)據(jù)路由器硬件和HBA以輸送傳輸命令I(lǐng)U0命令I(lǐng)U的方向始終從信道一側(cè)的HBA到控制單元。對于傳遞到HBA的傳輸狀態(tài)地址控制結(jié)構(gòu),字節(jié)計數(shù)從不使16兆字節(jié)偏移字段回轉(zhuǎn),因此,只是一個地址控制結(jié)構(gòu)被需要用于數(shù)據(jù)路由器硬件和HBA以接收傳輸命令I(lǐng)U。狀態(tài)IU的方向始終從控制單元到信道一側(cè)的HBA。對于傳輸讀取數(shù)據(jù)地址控制結(jié)構(gòu),通過TCW中的讀取數(shù)據(jù)計數(shù)提供要從設(shè)備傳輸?shù)紿BA的讀取數(shù)據(jù)的總量。如果讀取數(shù)據(jù)計數(shù)大于16兆字節(jié),傳遞到HBA用于傳輸讀取數(shù)據(jù)的數(shù)據(jù)地址控制結(jié)構(gòu)的數(shù)量是除以223的總讀取數(shù)據(jù)計數(shù),并如果有余數(shù)的話向上進一。每個傳遞到HBA的數(shù)據(jù)地址控制結(jié)構(gòu)具有相同的64位PCIe地址。除了完成I/O數(shù)據(jù)傳輸?shù)淖詈髷?shù)據(jù)地址控制結(jié)構(gòu)以外,在每個數(shù)據(jù)地址控制結(jié)構(gòu)中的計數(shù)字段是223。這使得對數(shù)據(jù)路由器硬件看起來,223兆字節(jié)偏移字段保持從0x7FFFFF到0x000000的回轉(zhuǎn)。主存儲器地址是來自ACW不斷增加的主存儲器地址262或者是來自從被存儲器地址262尋址的TIDAL中的每個TIDAW中的主存儲器地址。對于傳輸寫入數(shù)據(jù)地址控制結(jié)構(gòu),通過TCW中的寫入數(shù)據(jù)計數(shù)提供要從HBA傳輸?shù)皆O(shè)備的寫入數(shù)據(jù)的總量。按照與用于傳輸讀取數(shù)據(jù)地址控制結(jié)構(gòu)相同的方式來計算用于傳輸寫入IU的地址控制結(jié)構(gòu)的數(shù)量。本文說明的系統(tǒng)和方法提供了裝置,其用于校驗由數(shù)據(jù)路由器160處理的數(shù)據(jù)的錯誤。例如,當(dāng)HBA 154參考(reference)主存儲器的任何時候,數(shù)據(jù)路由器160校驗各種各樣的參考點。在一個例子中,數(shù)據(jù)路由器160校驗出,在HBA地址字段172的ACW索引字段176中的ACW地址位置是在由ACW源寄存器214和ACW限制寄存器216界定的存儲器區(qū)域內(nèi)。
在另一個例子中,通過校驗出HBA地址字段172中的CTL字段和校驗字段匹配由HBA請求所參考的ACW中的CTL字段和校驗字段,數(shù)據(jù)路由器160校驗出HBA154正使用用于HBA請求的校正ACW。如果這些字段不比較,那么信道128將用信道控制校驗結(jié)束I/O操作。數(shù)據(jù)路由器160還校驗出,地址字段172中的偏移字段(例如,HBA地址的低級24位)等于獲取ACW中的下一個預(yù)期的16兆字節(jié)偏移。數(shù)據(jù)路由器160還包括生成或校驗數(shù)據(jù)校驗字(例如,LRC、CRC)的能力,使得允許數(shù)據(jù)路由器160檢測要傳輸?shù)臄?shù)據(jù)是否已損壞。例如,數(shù)據(jù)路由器從主存儲器中收集數(shù)據(jù)以發(fā)送到HBA 154,、例如TCCB 148或輸出數(shù)據(jù),數(shù)據(jù)路由器利用傳輸命令A(yù)CW中的數(shù)據(jù)校驗字種子以及利用TCCB數(shù)據(jù)生成數(shù)據(jù)校驗字192,并在傳輸命令I(lǐng)U中插入數(shù)據(jù)校驗字(例如,在來自IU末端的兩個字處)。通過傳輸命令I(lǐng)U報頭和長度字段利用固件預(yù)先計算傳輸命令A(yù)CW中的數(shù)據(jù)校驗字種子。這使得數(shù)據(jù)校驗字能夠覆蓋包含跟隨所傳輸?shù)腎U中的數(shù)據(jù)校驗字的長度字的整個傳輸命令I(lǐng)U。在一個實施例中,始終在字邊界上計算數(shù)據(jù)校驗字。如果由數(shù)據(jù)校驗字覆蓋的數(shù)據(jù)的字節(jié)數(shù)量的字節(jié)計數(shù)不是4的倍數(shù),那么在傳輸數(shù)據(jù)校驗字之前需要填充字節(jié)來填補字邊界。為了傳輸?shù)娇刂茊卧?18,填充字節(jié)始終是零。為了接收到主存儲器,必須接受任何值的填充字節(jié)。填充字節(jié)被包括在數(shù)據(jù)校驗字計算中。數(shù)據(jù)路由器160還可以生成數(shù)據(jù)校驗字,該數(shù)據(jù)校驗字在通過信道通路傳輸?shù)倪^程中校驗整個傳輸寫入數(shù)據(jù)IU。以在傳輸寫入ACW中的數(shù)據(jù)校驗字種子為起始生成該數(shù)據(jù)校驗字,并在從主存儲器中獲取數(shù)據(jù)時,用所獲取的數(shù)據(jù)計算新的數(shù)據(jù)校驗字。當(dāng)獲取并傳輸所有的數(shù)據(jù)時,隨后所產(chǎn)生的數(shù)據(jù)校驗字把填充字節(jié)附加并排列到字邊界上,例如發(fā)送到HBA的最后4字節(jié)的數(shù)據(jù)。TIDAW字可以具有插入的填充并且數(shù)據(jù)校驗字標(biāo)識設(shè)為一,這將使數(shù)據(jù)路由器硬件在傳輸寫入數(shù)據(jù)IU中插入中間數(shù)據(jù)校驗字??刂茊卧獙⒈容^所接收的數(shù)據(jù)校驗字與其自己所計算的數(shù)據(jù)校驗字,以證實所接收的數(shù)據(jù)IU有效。對于從主存儲器獲取來說,當(dāng)TIDAW計數(shù)遞減為零并且TIDAW插入數(shù)據(jù)校驗字標(biāo)識位設(shè)為一時,在填充字節(jié)位于字邊界上之后,所計算的數(shù)據(jù)校驗字始終被插入并傳輸。數(shù)據(jù)路由器160還可以生成數(shù)據(jù)校驗字,該數(shù)據(jù)校驗字校驗在通過信道通路傳輸?shù)膫鬏斪x取數(shù)據(jù)IU。以在傳輸讀取ACW中的數(shù)據(jù)校驗字種子為起始生成該數(shù)據(jù)校驗字,并在從主存儲器中存儲輸入數(shù)據(jù)時,用讀取數(shù)據(jù)計算更新的數(shù)據(jù)校驗字。當(dāng)已接收并存儲進入主存儲器中所有的數(shù)據(jù)時,由此產(chǎn)生的計算出的數(shù)據(jù)校驗字與從設(shè)備中所接收的數(shù)據(jù)校驗字進行比較。所計算的數(shù)據(jù)校驗字與所接收的數(shù)據(jù)校驗字比較,證實所接收的數(shù)據(jù)IU有效。如果兩個字段沒有比較,那么用界面控制校驗終止I/o操作。例如,在接收數(shù)據(jù)IU的末端處,如果“數(shù)據(jù)校驗字啟動”位3設(shè)為一,并且如果預(yù)期的數(shù)據(jù)校驗字不匹配所接收的數(shù)據(jù)校驗字,那么數(shù)據(jù)路由器硬件將設(shè)置“數(shù)據(jù)校驗字失配”位17為一。在一個實施例中,當(dāng)數(shù)據(jù)路由器160從設(shè)備中接收數(shù)據(jù)時,存在這樣的情況,數(shù)據(jù)路由器160不得不應(yīng)對判斷已接收數(shù)據(jù)校驗字的時候。例如,執(zhí)行計數(shù)匹配,由此證實數(shù)據(jù)校驗字是在ACW工作計數(shù)過渡到零之后所接收的4字節(jié)加上填充字節(jié),以把數(shù)據(jù)校驗字放在字邊界上。在已接收數(shù)據(jù)校驗字之后不接收額外的數(shù)據(jù),否則HPF-DR響應(yīng)字的位11(工作計數(shù)溢出)將設(shè)為一。在另一個例子中,如果在控制單元118發(fā)送傳輸狀態(tài)IU的時候,ACW工作計數(shù)還沒有過渡到零,那么會碰到“提前結(jié)束”的情況。對于當(dāng)用通過HBA154的I/O完成中斷信道128時的情況來說,信道128首先證實,對于對應(yīng)的ACW來說有效請求計數(shù)=零位設(shè)為一,并隨后證實出,通過比較作為所接收的數(shù)據(jù)校驗字的ACW中的“最后4字節(jié)保存區(qū)”與在所接 收的數(shù)據(jù)上包含計算的數(shù)據(jù)校驗字的ACW中的“先前數(shù)據(jù)校驗字保存區(qū)”,數(shù)據(jù)校驗字是正確的。數(shù)據(jù)路由器硬件還計算校驗從鏈路中接收的傳輸狀態(tài)IU數(shù)據(jù)的數(shù)據(jù)校驗字。以傳輸狀態(tài)ACW中的數(shù)據(jù)校驗字種子為起始計算數(shù)據(jù)校驗字,并在傳輸狀態(tài)IU數(shù)據(jù)存儲在主存儲器中時,計算新的數(shù)據(jù)校驗字。當(dāng)用于IU的所有數(shù)據(jù)已接收并存儲進入主存儲器時,由此產(chǎn)生的計算數(shù)據(jù)校驗字與從設(shè)備中接收的數(shù)據(jù)校驗字進行比較。所計算的數(shù)據(jù)校驗字與所接收的數(shù)據(jù)校驗字比較,證實所接收的數(shù)據(jù)IU有效。如果兩個字段沒有比較,那么用界面控制校驗終止I/O操作。TIDAff及其T-TIC標(biāo)識位的架構(gòu),使得需要滿足一個4k字節(jié)的PCI Express總線(PICe)請求的zSeries存儲器請求的數(shù)量要超過一萬兩千zSeries存儲器請求。如果在每個TIDAW中的字節(jié)計數(shù)字段和T-TIC標(biāo)識位分別設(shè)為一,使得信道字中的傳輸-轉(zhuǎn)移跟隨每個TIDAW (其中信道字是下一個TIDAW的新的zSeries存儲器地址),那么就會出現(xiàn)上述情況。用于路由器硬件以作出所有這些zSeries存儲器請求的時間量可以超出HBA用于一個HBA請求的超時值。由此產(chǎn)生的錯誤將看起來像zSeries存儲器超時,其表明zSeries存儲器子系統(tǒng)丟失了 zSeries存儲器請求。為了對需要滿足HBA請求的主存儲器請求的數(shù)量進行限制,在數(shù)據(jù)路由器硬件中的可編程請求閾值計數(shù)器可以限制用于滿足一個HBA請求的主存儲器請求的數(shù)量。如果達到限制,那么“存儲器請求閾值超出”(HPF-DR響應(yīng)字位9)設(shè)為一。當(dāng)信道硬件初始化時,建立該閾值計數(shù)器。如上所述,提供HBA154直接存儲或獲取用戶數(shù)據(jù)進入或離開主存儲器的能力,以提高信道的性能。然而,在微處理器130上運行的固件和HBA154之間的所有通信是通過本地通道存儲器132執(zhí)行的。微處理器130通過為HBA154存儲所有所需的信息把工作傳遞給HBA154,以處理在本地信道存儲器區(qū)域164中的HBA工作隊列上的I/O操作。同樣,當(dāng)HBA已完成I/O操作或者I/O操作失敗時,HBA使具有狀態(tài)的I/O操作返回到在本地信道存儲器132中的固件I/O完成隊列中的信道。
關(guān)于ACW占用期(tenure)和ACW原子性(atomicity)的下列規(guī)則被提供給固件的適當(dāng)交互,HBA154和數(shù)據(jù)路由器硬件利用ACW210來處理HBA主存儲器請求。在I/O操作期間,信道固件擁有指定用于達到一定時間的I/O操作的四個ACW(SP,傳輸命令A(yù)CW、傳輸讀取ACW、寫入數(shù)據(jù)ACW和傳輸狀態(tài)ACW),固件使HBA工作隊列上的I/O操作列隊。從信道固件使HBA工作隊列上的I/O操作入隊的時間直到HBA154使具有狀態(tài)的I/O操作(四個相關(guān)的ACW)返回到在固件I/O完成隊列上 的固件上,數(shù)據(jù)路由器160和HBA154間接地擁有用于I/O操作的四個ACW。對于成功完成的I/O操作來說,在HBA154已接收并處理結(jié)束I/O操作的傳輸狀態(tài)IU之后,HBA154使I/O操作返回到在固件I/O完成隊列上的固件上。除了極少數(shù)情況(例如,在ACW中的固件讀取丟棄位設(shè)為一)以外,固件在數(shù)據(jù)路由器硬件和HBA154擁有四個ACW的時間間隔期間不會更新四個ACW中任意一個中的任何字段。為了使在數(shù)據(jù)路由器160控制下的ACW停頓(quiesce)以傳輸數(shù)據(jù)到設(shè)備,固件使用獲取停頓硬件和邏輯310 (如圖9中所示)。為了使在數(shù)據(jù)路由器160控制下的ACW停頓以從設(shè)備中接收數(shù)據(jù),固件使用固件讀取丟棄位252以及存儲停頓硬件和邏輯312(如圖9中所示)。在一個實施例中,提供原子性規(guī)則,使得ACW中的IU報頭和所有狀態(tài)字段在如下時間就會更新,所述時間是,固件從固件I/O完成隊列上的HBA154中接收結(jié)束完成狀態(tài)時(其把ACW對I/O操作的擁有權(quán)返回給固件)。第一規(guī)則規(guī)定,在接收的結(jié)束完成狀態(tài)id或者用于該ACW的ACW狀態(tài)改變?yōu)闋顟B(tài)2 (S卩,ACff IU報頭區(qū)安全)之前,數(shù)據(jù)路由器硬件必須把整個IU報頭信息存儲進入ACW。設(shè)計在ACW中的固件讀取丟棄位,使得在不影響數(shù)據(jù)路由器硬件工作并且設(shè)計相同ACW中的任何字段的更新情況下,使其可以由固件設(shè)為一。第二規(guī)則規(guī)定,當(dāng)數(shù)據(jù)路由器硬件發(fā)送“具有設(shè)為完成者中止的完成狀態(tài)的事務(wù)層協(xié)議(TLP)”給HBA154時,數(shù)據(jù)路由器硬件必須確保,在處理要存儲進入本地信道存儲器內(nèi)的任何接下來的HBA請求之前,完成對所對應(yīng)的ACW的所有待定更新。第三規(guī)則規(guī)定,當(dāng)兩個背對背HBA請求到達路由邏輯222時,第一請求被路由到存儲陣列隊列228,以及第二請求被路由到本地信道存儲器,在第二或者后續(xù)HBA請求被路由到或存儲進入本地信道存儲器之前,在ACW中的有效請求計數(shù)和有效請求計數(shù)=零的位必須被數(shù)據(jù)路由器硬件更新。存在如下情況(例如,當(dāng)發(fā)生錯誤時),固件不能等待I/O操作完成,但不是必須阻止從主存儲器中獲取新的HBA數(shù)據(jù)獲取請求或者阻止來自HBA數(shù)據(jù)存儲請求中數(shù)據(jù)被存儲到主存儲器中。全局獲取停頓硬件310提供方式給固件以停頓由數(shù)據(jù)路由器硬件所擁有的ACff并主動地從主存儲器中獲取數(shù)據(jù)。為了使被建立以從主存儲器中獲取數(shù)據(jù)的有效ACW停頓,固件利用固件請求停止的ACW索引來設(shè)置全局獲取停頓硬件310中的ACW索引寄存器。在固件寫入ACW索引寄存器之后,固件獲取停頓邏輯310執(zhí)行下列操作I.在全局獲取停頓邏輯中的停頓忙位設(shè)為一,其阻止獲取硬件230處理來自獲取陣列隊列226中的任何新的HBA獲取或者寫入請求,并且阻止在獲取硬件230中排列的主存儲獲取或?qū)懭胝埱蟊粋鬏斀o處理邏輯234以用于傳輸?shù)街鞔鎯ζ?。然而,在處理邏?34和傳輸邏輯236處、或在接收邏輯240和路由邏輯242處,已經(jīng)列隊并當(dāng)前正在處理的主存儲器獲取請求不會受到影響;
2.擦除在獲取硬件230中已列隊的主存儲器獲取請求,并且標(biāo)記在獲取硬件230中具有目標(biāo)ACW索引的任何主存儲器獲取請求,以便在稍后處理主存儲器請求時,強制具有完成狀態(tài)的TLP完成被設(shè)為完成者中止。3.寫入放棄位、ACW狀態(tài)250位3,在目標(biāo)ACW中設(shè)為一。4.然后數(shù)據(jù)路由器硬件被解凍,以及現(xiàn)在處理在獲取硬件230中列隊的主存儲器獲取請求和在獲取陣列隊列226中列隊的HBA請求;以及5.使全局獲取停頓邏輯中的停頓忙位復(fù)位。在固件設(shè)置全局獲取停頓邏輯310中的ACW索引寄存器之后,固件監(jiān)控停頓忙位以確定全局獲取停頓邏輯310已完成停頓操作的時間。一旦完成停頓操作,固件可以取決于以下因素
I.具有目標(biāo)ACW索引的、在獲取硬件230中列隊的任何HBA請求將接收具有設(shè)為完成者中止?fàn)顟B(tài)的完成狀態(tài)的TLP完成。2.作為寫入放棄位、ACW狀態(tài)250位3在該ACW中被設(shè)為一的結(jié)果,在獲取陣列隊列226中列隊的任何HBA請求、或者來自HBA的任何新的用于目標(biāo)ACW的HBA請求將響應(yīng)于具有設(shè)為完成者中止的完成狀態(tài)的TLP完成。當(dāng)HBA154接收具有設(shè)為完成者中止的完成狀態(tài)的TLP完成時,HBA154發(fā)送用于I/O操作的中止給控制單元118和設(shè)備116。當(dāng)HBA154已經(jīng)從正完成中止序列的設(shè)備116中接收到響應(yīng)時,HBA154將通過在本地信道存儲器中的固件I/O完成隊列使該I/O操作返回到固件。還可能存在如下情況,其中固件要求阻止(停頓)任何新的HBA數(shù)據(jù)存儲請求被存儲進入用于I/O操作的主存儲器中。通過固件讀取丟棄位來提供這種能力。固件設(shè)置ACW中的固件讀取丟棄位252為一,隨后在存儲陣列隊列228中列隊的所有新的和已存在的HBA請求將被存儲硬件232丟棄。隨著數(shù)據(jù)路由器160丟棄用于ACW的HBA存儲請求,固件還可以具有如下能力,即,確定何時利用主存儲器完成響應(yīng)完成了對用于ACW的主存儲器的、由存儲元件232做出的所有先前主存儲器存儲請求。主存儲器完成響應(yīng)在路由邏輯242處被接收并被路由到做出請求的請求者,并隨后以做出請求相同的順序來處理,其包括遞減在全局存儲停頓邏輯312中的計數(shù)器。全局存儲停頓邏輯和硬件312提供了對于固件如下方式,以使得固件知道何時已完成了由存儲硬件232做出的對主存儲器的所有先前主存儲器存儲請求。一旦讀取丟棄位在ACW中設(shè)為一,那么知道已完成用于該ACW的所有先前主存儲器存儲請求的一種方式是等待,直到在主存儲器數(shù)據(jù)流水線(用處理邏輯234、傳輸邏輯236、接收邏輯240和路由邏輯242表示)中列隊的所有當(dāng)前HBA存儲請求已被處理。為了在不阻止新的存儲請求在存儲陣列隊列中列隊或者不阻止處理在存儲陣列隊列中存在的條目的情況下實現(xiàn)這件事情,快照計數(shù)器被加載有在主存儲器數(shù)據(jù)流水線中列隊的條目的當(dāng)前總數(shù)量。然后該快照計數(shù)器對于所接收的每次主存儲器響應(yīng)被遞減。然后當(dāng)快照計數(shù)器達到零時,固件知道,在用于感興趣的ACW的存儲器數(shù)據(jù)流水線位置中的隊列中列隊等候的所有先前主存儲器存儲請求已被處理。該功能可以由全局存儲停頓硬件312執(zhí)行,其由下列計數(shù)器構(gòu)成I.對于在主存儲器數(shù)據(jù)通道中列隊的所有ACW,全局有效請求計數(shù)器保持追蹤HBA存儲請求的總數(shù)量。該計數(shù)器在每次數(shù)據(jù)路由器存儲硬件232生成對于主存儲器的HBA存儲請求的時候遞增,并且在完成HBA存儲請求的最后主存儲器存儲請求被確認的時候遞減,其中確認是由從路由邏輯242到數(shù)據(jù)路由器控制邏輯所路由的返回的主存儲器響應(yīng)完成的。在一些實施例中,一個HBA存儲請求可能需要多達16個主存儲器存儲請求,以在HBA存儲請求中存儲所有的數(shù)據(jù)。2.全局有效快照計數(shù)器只是遞減而從不遞增。利用全局有效請求計數(shù)器的當(dāng)前值在固件的控制下加載該計數(shù)器。用遞減“全局有效請求計數(shù)器”的相同信號來遞減該計數(shù)器。一旦該計數(shù)器遞減到零,其保持在零處,直到固件利用全局有效請求計數(shù)器的新副本再次加載。固件可以讀取全局有效快照計數(shù)器以確定什么時候其已過渡到零。下列程序可以被固件使用,以阻止先前建立以存儲數(shù)據(jù)進入主存儲器的的ACW以及隨后確定什么時候已完成用于該ACW的所有先前主存儲器請求I.固件設(shè)置在每個受到影響的ACW中的“固件讀取丟棄”位為一,其之前被建立來存儲數(shù)據(jù)進入主存儲器; 2.固件把全局有效請求計數(shù)器傳輸?shù)饺钟行Э煺沼嫈?shù)器。然后,當(dāng)每個主存儲器存儲請求完成時,遞減請求主動快照計數(shù)器;3.固件輪詢?nèi)钟行Э煺沼嫈?shù)器,直到其讀數(shù)為零?,F(xiàn)在,對于把固件讀取丟棄位設(shè)為一的感興趣的所有ACW,已完成了在固件把全局有效請求計數(shù)器傳輸?shù)饺钟行Э煺沼嫈?shù)器的時候所做出的所有主存儲器存儲請求。數(shù)據(jù)路由器硬件將不會進一步做出代表這些ACW的主存儲器存儲請求。在某些情況下,按從設(shè)備傳輸數(shù)據(jù)的順序不同的順序,可以由數(shù)據(jù)路由器硬件接收來自HBA的數(shù)據(jù)。這帶來了一個問題,其中,對接收到的數(shù)據(jù)的一些類型的數(shù)據(jù)校驗字計算必須以數(shù)據(jù)校驗字在傳輸數(shù)據(jù)時最初生成的相同的數(shù)據(jù)順序來計算。數(shù)據(jù)路由器硬件檢測利用下一個預(yù)期的16兆字節(jié)偏移字段的條件。當(dāng)處理每個HBA獲取或存儲請求時,數(shù)據(jù)路由器硬件檢查在HBA請求中的PCIe 16兆字節(jié)偏移對比在ACW中的下一個預(yù)期的16兆字節(jié)偏移字段。如果它們匹配,數(shù)據(jù)路由器硬件將以HBA事務(wù)大小遞增下一個預(yù)期的16兆字節(jié)偏移字段,移動數(shù)據(jù)去往或來自主存儲器并處理數(shù)據(jù)校驗字。如果這些字段不匹配以及HBA地址大于預(yù)期的HBA地址,那么當(dāng)前HBA事務(wù)被數(shù)據(jù)路由器硬件順序顛倒地接收,并且數(shù)據(jù)路由器硬件將在存儲或獲取陣列隊列的底部重新列隊該HBA請求。在第一次HBA請求在隊列的底部被重新列隊時,時間戳被寫入HBA請求的控制數(shù)據(jù)中。該控制數(shù)據(jù)用于追蹤在隊列中的HBA請求。因為沒有接收到具有匹配16兆字節(jié)偏移字段的HBA請求,所以每次幀“冒泡(bubble)”到隊列頂部用于再次處理并且它必須被重新列隊時,校驗時間戳。如果時間戳超出可配置的“生存時間”(即超時時間段),該HBA請求等待的前一幀被認為丟失了。當(dāng)檢測丟失幀的條件時,缺失HBA請求的ACW (HPF-DR響應(yīng)字字位8)設(shè)為一。用于主存儲器存儲的顛倒順序的HBA請求可作如下處理。ACW缺失HBA請求位設(shè)為一。用于該HBA請求的有效載荷被丟棄,并且讀取丟棄位252也設(shè)為一。這樣確保丟棄了所有后續(xù)HBA請求以及用于該ACW的存儲在主存儲器中的數(shù)據(jù)。然而,任何IU報頭信息、如果存在的話,始終存儲在ACW中并從不會被丟棄。隨著每個HBA請求被丟棄,有效請求計數(shù)290在ACW中遞減,正如在正常處理HBA請求時所做的那樣。對于被丟棄的HBA請求,16兆字節(jié)偏移不會被校驗。在固件從HBA中接收用于該I/O操作的完成中斷之后,隨后,校驗固件以查看用于該ACW的有效請求計數(shù)290是否已過渡到零。當(dāng)有效請求計數(shù)已過渡到零時,已處理了用于該ACW的存儲陣列隊列中的所有HBA請求。對于如下這種情況,即在要存儲數(shù)據(jù)到主存儲器內(nèi)的所接收到的HBA請求中的16兆字節(jié)偏移180小于下一個預(yù)期的16兆字節(jié)偏移264,那么丟棄該請求,這是因為用于該請求的數(shù)據(jù)已在先前存儲在主存儲器中。由于先前存儲的數(shù)據(jù)被用于計算在ACW中的數(shù)據(jù)校驗字的當(dāng)前值,如果在主存儲器中所存儲的先前數(shù)據(jù)不正確,那么數(shù)據(jù)校驗字將標(biāo)識錯誤。用于主存儲器獲取的顛倒順序的HBA請求可作如下處理。一旦缺失HBA請求位在ACff中設(shè)為一,并且在等待缺失HBA獲取請求時“生存時間”期滿,數(shù)據(jù)路由器硬件將響應(yīng)具有TIL完成的HBA獲取請求,TH完成具有設(shè)為完成者中止的完成狀態(tài),并且在該ACW設(shè)置寫入放棄位252為一,以確保隨著具有設(shè)為完成者中止的完成狀態(tài)的TLP完成,將響應(yīng)用于該ACW所接收的所有后續(xù)HBA請求。 對于如下情況,即在要從主存儲器中獲取數(shù)據(jù)的所接收到的HBA請求中的地址小于下一個預(yù)期的偏移,那么數(shù)據(jù)路由器硬件將利用設(shè)為完成者中止的完成狀態(tài)的TLP完成響應(yīng)該請求。示意性實施例的技術(shù)效果和優(yōu)勢包括網(wǎng)絡(luò)接口通過信道直接訪問主存儲器的能力,同時提供了存儲報頭信息的信道的能力以及提供了在信道處在不需要存儲輸入或輸出數(shù)據(jù)的情況下的錯誤校驗。通過允許對主存儲器直接尋址,本文所述的系統(tǒng)和方法允許安裝高性能的HBA (例如,支持以SG位或以上的鏈路速度),而不需要重新設(shè)計存儲和轉(zhuǎn)發(fā)信道模型來提供微處理器速度和支持這種高性能HBA的本地信道存儲器帶寬。它們還提供了用于錯誤校驗當(dāng)前提供的失效HBA的必要隔離。此外,本文所述的系統(tǒng)和方法允許使用這樣的HBA,該HBA僅配置有一個地址空間以對主存儲器中的多個地址空間尋址。用具有HBA直接對主存儲器尋址的該方法,本地信道存儲器的微處理器性能和帶寬需求不必被重新設(shè)計來滿足新HBA增加的性能需求。其它技術(shù)效果包括提供了一種方式,給連接的HBA訪問本地信道存儲器中的區(qū)域和主存儲器中的任何區(qū)域的任何地址的能力;提供了一種方式,在作為存在用于當(dāng)前信道實現(xiàn)時實現(xiàn)HBA與zSeries主機的等效隔離;提供了一種方式,當(dāng)數(shù)據(jù)路由器從主存儲器中獲取數(shù)據(jù)或存儲數(shù)據(jù)到主存儲器時,用于信道在輸出IU上插入信息單元(IU)報頭信息以及從在信道本地的輸入IU中去除和保存IU報頭信息;提供了一種方式,在TIDAL控制下,以及在當(dāng)數(shù)據(jù)路由器存儲或獲取數(shù)據(jù)進入或來自主存儲器時的輸出數(shù)據(jù)的末端處,驗證在輸入數(shù)據(jù)上的數(shù)據(jù)校驗字以及在輸出數(shù)據(jù)上生成和插入中間的數(shù)據(jù)校驗字;提供了一種方式,如果沒有按照正確邏輯幀順序從HBA中接收HBA請求的話,以對從HBA接收的請求再次排序并且檢測HBA請求或幀是否丟失;提供了一種適當(dāng)?shù)姆绞?,終止可以與數(shù)據(jù)路由器工作的許多I/O操作中的一個I/O操作,而不會干擾其他有效I/O操作中的任意一個;提供了一種方式,以檢測出,不切實際但架構(gòu)合法的傳輸間接數(shù)據(jù)地址列表被使用,這需要過多的主存儲器請求來處理,因此妨礙了主存儲器請求被及時處理。本文所使用的術(shù)語是為了只描述具體的實施例,并不意圖限制本發(fā)明。如此處所使用的,單數(shù)形式“一個(a)”、“一個(an)”和“該(the)”試圖也同樣包括復(fù)數(shù)形式,除非上下文中另有清楚地表明。將進一步明白,在本說明書中使用的術(shù)語“包括(comprise)”和/或“構(gòu)成(comprising)”,具體規(guī)定了所稱特征的存在、整體(integers)、步驟、操作、元素、和/或組件,但不排除一個或多個其它特征、整體、步驟、操作、元素、組件、和/或其組合的存在或增加。在下面的權(quán)利要求書中添加了功能元素的所有方式或步驟的對應(yīng)結(jié)構(gòu)、材料、行為和等效物,不意圖包括用于執(zhí)行功能的任何結(jié)構(gòu)、材料或行為,該功能與如具體要求的其它要求的元素結(jié)合。為了示例和說明已展現(xiàn)了本發(fā)明的說明書,但不意圖窮舉或限制于以該公開形式的本發(fā)明。對本領(lǐng)域普通技術(shù)人員來說,在不脫離本發(fā)明范圍和實旨的情況下,許多修改和變化將是顯而易見的。選擇和描述實施例,是為了最好地解釋說明本發(fā)明的原理和實際應(yīng)用,并使本領(lǐng)域普通技術(shù)人員能夠明白具有各種修改的各種實施例的本發(fā)明,各種修改為適合預(yù)期的特定用途。為了將被本領(lǐng)域技術(shù)人員領(lǐng)會,本發(fā)明的技術(shù)方案可以具體化為一種系統(tǒng)、方法或計算機程序產(chǎn)品。因此,本發(fā)明的技術(shù)方案可以采取完全硬件的實施例、完全軟件的實施例(包括固件、常駐軟件、微代碼,等等)、或結(jié)合了軟件和硬件方案的實施例,本文中可以全 部統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。此外,本發(fā)明的技術(shù)方案可以采取計算機程序產(chǎn)品的形式,計算機程序產(chǎn)品具體體現(xiàn)在具有其上體現(xiàn)了計算機可讀程序代碼的一個或多個計算機可讀介質(zhì)中??衫靡粋€或多個計算機可讀介質(zhì)的任意組合。計算機可讀介質(zhì)可以是計算機可讀信號介質(zhì)或是計算機可讀存儲介質(zhì)。例如,計算機可讀存儲介質(zhì)可以是、但不限于電子、磁性、光學(xué)、電磁、紅外或半導(dǎo)體系統(tǒng)、裝置、或設(shè)備、或上述任何合適的組合。計算機可讀存儲介質(zhì)的更具體例子(非詳盡列表)將包括以下內(nèi)容具有一個或多個電線的電連接、便攜式計算機軟盤、硬盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、可擦除可編程只讀存儲器(EPR0M或快閃存儲器)、光纖、便攜式光盤只讀存儲器(CD-ROM)、光學(xué)存儲器、磁性存儲器、或上述任何合適的組合。在本文件的上下文中,計算機可讀存儲介質(zhì)可以是任何有形的介質(zhì),其可以包含或存儲被用于或與其結(jié)合的指令執(zhí)行系統(tǒng)、裝置或設(shè)備的程序。計算機可讀信號介質(zhì)可以包括具有計算機可讀程序代碼的可傳播數(shù)據(jù)信號,此處具體化的計算機可讀程序代碼例如在基帶中或作為部分載波。這樣的可傳播數(shù)據(jù)信號可以采取任何多種多樣的形式,包括但不局限于電-磁、光學(xué)、或任何合適的組合。計算機可讀信號介質(zhì)可以是任何的計算機可讀介質(zhì),其不是計算機可讀存儲介質(zhì)并且能夠通信、傳播、輸送被用于或與其結(jié)合的指令執(zhí)行系統(tǒng)、裝置或設(shè)備的程序。在計算機可讀介質(zhì)上具體體現(xiàn)的程序代碼可以使用任何合適的介質(zhì)來傳輸,包括但不局限于無線、有線線路、光纖光纜、RF等、或上述任何合適的組合。對于本發(fā)明的技術(shù)方案來說,用于執(zhí)行操作的計算機程序代碼可以按一個或多個編程語目的任何組合來編寫,包括例如Java、Smalltalk、C++等之類的面向?qū)ο缶幊陶Z目、或例如“C”編程語言或類似的編程語言的傳統(tǒng)程序的編程語言。程序代碼可以在用戶計算機上完全執(zhí)行、在用戶計算機上部分執(zhí)行,作為一個獨立的軟件包,在用戶計算機上部分和在遠程計算機上部分執(zhí)行、或在遠程計算機或服務(wù)器上完全執(zhí)行。在后一種情況下,遠程計算機可以通過任何類型的網(wǎng)絡(luò)連接到用戶的計算機上、包括局域網(wǎng)(LAN)或廣域網(wǎng)(WAN),或者可以連接到外部計算機上(例如,通過利用互聯(lián)網(wǎng)服務(wù)提供商的互聯(lián)網(wǎng))。
下面參考根據(jù)本發(fā)明實施例的方法、裝置(系統(tǒng))和計算機程序產(chǎn)品的流程圖示例和/或框圖,說明了本發(fā)明的技術(shù)方案。要明白,在每塊流程圖示例和/或框圖、流程圖示例和/或框圖的塊的組合,可以通過計算機程序指令來執(zhí)行。這些計算機程序指令可以提供通用計算機、專用計算機、或其它可編程數(shù)據(jù)處理裝置的處理器以生產(chǎn)一臺機器,使得通過計算機或其它可編程數(shù)據(jù)處理裝置的處理器執(zhí)行的指令,創(chuàng)造出用于實現(xiàn)在流程圖和/或框圖塊或組塊中具體指定的功能/行為的裝置。這些計算機程序指令還可以存儲在計算機可讀介質(zhì)中,計算機可讀介質(zhì)可以指示為計算機、其它可編程數(shù)據(jù)處理裝置、或以具體方式運轉(zhuǎn)的其它設(shè)備,這樣使得在計算機可讀介質(zhì)中存儲的指令生產(chǎn)出包括實現(xiàn)在流程圖和/或框圖塊或組塊中具體指定的功能/行為的指令的制造產(chǎn)品。計算機程序指令也可以裝載到計算機、其它可編程數(shù)據(jù)處理裝置、或引起一系列操作步驟的其它設(shè)備上,以在計算機、其它可編程數(shù)據(jù)處理裝置、或其它設(shè)備上執(zhí)行以產(chǎn)生計算機實現(xiàn)的處理過程,這樣使得在計算機或其它可編程裝置上執(zhí)行的指令提供了用于實 現(xiàn)在流程圖和/或框圖塊或組塊中具體指定的功能/行為的處理過程。本文描述的流程圖只是一個例子。在不脫離本發(fā)明實旨的情況下,對于此處所說明的該圖或步驟(或操作)可以有許多變化。例如,步驟可以按不同的順序執(zhí)行,或步驟可以被增加、刪除或修改。所有這些變化都被認為是所要求的本發(fā)明的一部分。當(dāng)已說明了本發(fā)明的優(yōu)選實施例時,本領(lǐng)域技術(shù)人員應(yīng)該明白,無論是現(xiàn)在還是將來,可以做出落在下面的權(quán)利要求書范圍內(nèi)的各種改進和增強。這些權(quán)利要求應(yīng)解釋為保持了對首次說明的本發(fā)明的適當(dāng)保護。
權(quán)利要求
1.一種用于在配置與控制單元通信的主機系統(tǒng)處執(zhí)行輸入/輸出I/o處理操作的方法,該方法包括 在主機系統(tǒng)中的信道子系統(tǒng)處獲取與I/o操作相關(guān)的信息,信道子系統(tǒng)包括具有信道處理器和本地信道存儲器的至少一個信道; 生成至少一個地址控制字ACW,其指定用于在主機系統(tǒng)和控制單元之間傳輸數(shù)據(jù)的一個或多個主存儲器位置,并在本地信道存儲器中存儲至少一個ACW,所述至少一個ACW包括至少一個ACW錯誤校驗字段; 生成由I/O操作所指定的每個數(shù)據(jù)傳輸?shù)牡刂房刂平Y(jié)構(gòu),并在信道子系統(tǒng)和至少一個I/O設(shè)備之間從至少一個信道轉(zhuǎn)發(fā)每個地址控制結(jié)構(gòu)到網(wǎng)絡(luò)接口,每個地址控制結(jié)構(gòu)指定在相應(yīng)的ACW的本地信道存儲器中的位置,每個地址控制結(jié)構(gòu)包括至少一個地址控制結(jié)構(gòu)錯誤校驗字段; 通過網(wǎng)絡(luò)接口轉(zhuǎn)發(fā)I/O命令消息到至少一個I/O設(shè)備; 響應(yīng)I/O命令消息,從包括尋址信息的網(wǎng)絡(luò)接口接收數(shù)據(jù)傳輸請求; 通過信道中的數(shù)據(jù)路由器,比較至少一個ACW錯誤校驗字段與至少一個地址控制結(jié)構(gòu)錯誤校驗字段;以及 響應(yīng)與至少一個地址控制結(jié)構(gòu)錯誤校驗字段匹配的至少一個ACW錯誤校驗字段,通過數(shù)據(jù)路由器訪問相應(yīng)的ACW,并把數(shù)據(jù)傳輸請求路由到在相應(yīng)的ACW中指定的主存儲器位置。
2.如權(quán)利要求I的方法,其中ACW錯誤校驗字段和地址控制結(jié)構(gòu)錯誤校驗字段每一個包括控制CTL字段,具有CTL值,CTL值包括指示數(shù)據(jù)傳輸請求要被路由到本地信道存儲器的第一區(qū)的第一值以及指示數(shù)據(jù)傳輸請求要被路由到本地信道存儲器的第二區(qū)的第二值之一,第一區(qū)能夠由網(wǎng)絡(luò)接口直接訪問用于本地信道操作,第二區(qū)包括由信道中的數(shù)據(jù)路由器所使用以對主存儲器尋址的多個ACW。
3.如權(quán)利要求2的方法,其中地址控制結(jié)構(gòu)錯誤校驗字段包括ACW索引字段,ACW索引字段指定在第二區(qū)中的多個ACW的列表中的一個ACW的位置。
4.如權(quán)利要求3的方法,其中ACW錯誤校驗字段和地址控制結(jié)構(gòu)錯誤校驗字段每一個包括驗證字段,驗證字段包括對應(yīng)于列表中的一個ACW的唯一值。
5.如權(quán)利要求I的方法,其中選擇的地址控制結(jié)構(gòu)指定了通過多個數(shù)據(jù)傳輸請求訪問的ACW,并且所選擇的地址控制結(jié)構(gòu)的錯誤校驗字段包括偏移字段,偏移字段對于多個數(shù)據(jù)請求的每個連續(xù)數(shù)據(jù)請求遞增,以及每個ACW錯誤校驗字段包括下一個預(yù)期的偏移字段,在數(shù)據(jù)傳輸請求已被路由之后,下一個預(yù)期的偏移字段通過數(shù)據(jù)路由器以對應(yīng)于數(shù)據(jù)傳輸請求大小的值遞增。
6.如權(quán)利要求I的方法,其中I/O操作是傳輸模式操作,并且獲取信息包括在信道子系統(tǒng)處獲取傳輸命令字TCW,TCff包括傳輸命令控制塊TCCB地址字段,含有TCCB地址,TCCB包括其每一個均包含I/O命令的多個設(shè)備命令字DCW。
7.如權(quán)利要求I的方法,其中多個ACW包括傳輸命令A(yù)CW,指定主存儲器中的TCCB的地址、傳輸讀取ACW,指定主存儲器中的位置的地址以用于存儲通過數(shù)據(jù)傳輸請求從控制單元接收的輸入數(shù)據(jù)、傳輸寫入ACW,指定主存儲器中的位置的地址以用于獲取用于傳輸?shù)娇刂茊卧妮敵鰯?shù)據(jù)、以及傳輸狀態(tài)ACW,指定在主存儲器中的位置以用于在I/O操作結(jié)束時存儲由控制單元發(fā)送的結(jié)束狀態(tài)。
8.如權(quán)利要求7的方法,其中一個或多個地址控制結(jié)構(gòu)包括下面中的至少一個傳輸命令地址控制結(jié)構(gòu),指定在傳輸命令A(yù)CW的ACW列表內(nèi)的位置、一個或多個傳輸讀取地址控制結(jié)構(gòu),指定傳輸讀取ACW的ACW列表內(nèi)的位置、一個或多個傳輸寫入地址控制結(jié)構(gòu),指定傳輸寫入ACW的ACW列表內(nèi)的位置、以及傳輸結(jié)束狀態(tài)地址控制結(jié)構(gòu),指定傳輸狀態(tài)ACW的ACW列表內(nèi)的位置。
9.如權(quán)利要求I的方法,其中網(wǎng)絡(luò)接口是主機總線適配器HBA。
10.一種用于在配置與控制單元通信的主機系統(tǒng)處執(zhí)行輸入/輸出I/O處理操作的裝置,主機系統(tǒng)包括信道子系統(tǒng),信道子系統(tǒng)被配置為通過網(wǎng)絡(luò)接口與控制單元通信,信道子系統(tǒng)被配置為執(zhí)行 在主機系統(tǒng)中的信道子系統(tǒng)處獲取與I/o操作相關(guān)的信息,信道子系統(tǒng)包括具有信道處理器和本地信道存儲器的至少一個信道; 生成至少一個地址控制字ACW,其指定用于在主機系統(tǒng)和控制單元之間傳輸數(shù)據(jù)的一個或多個主存儲器位置,并在本地信道存儲器中存儲至少一個ACW,至少一個ACW包括至少一個ACW錯誤校驗字段; 生成由I/O操作所指定的用于每個數(shù)據(jù)傳輸?shù)牡刂房刂平Y(jié)構(gòu),并在信道子系統(tǒng)和至少一個I/O設(shè)備之間從至少一個信道轉(zhuǎn)發(fā)每個地址控制結(jié)構(gòu)到網(wǎng)絡(luò)接口,每個地址控制結(jié)構(gòu)指定在相應(yīng)的ACW的本地信道存儲器中的位置,每個地址控制結(jié)構(gòu)包括至少一個地址控制結(jié)構(gòu)錯誤校驗字段; 通過網(wǎng)絡(luò)接口轉(zhuǎn)發(fā)I/O命令消息到至少一個I/O設(shè)備; 響應(yīng)I/O命令消息,從包括尋址信息的網(wǎng)絡(luò)接口接收數(shù)據(jù)傳輸請求; 通過信道中的數(shù)據(jù)路由器,比較至少一個ACW錯誤校驗字段與至少一個地址控制結(jié)構(gòu)錯誤校驗字段;以及 響應(yīng)與至少一個地址控制結(jié)構(gòu)錯誤校驗字段匹配的至少一個ACW錯誤校驗字段,通過數(shù)據(jù)路由器訪問相應(yīng)的ACW,并把數(shù)據(jù)傳輸請求路由到在相應(yīng)的ACW中指定的主存儲器位置。
11.如權(quán)利要求10的裝置,其中ACW錯誤校驗字段和地址控制結(jié)構(gòu)錯誤校驗字段每一個包括控制CTL字段,具有CTL值,CTL值包括指示數(shù)據(jù)傳輸請求要被路由到本地信道存儲器的第一區(qū)的第一值以及指示數(shù)據(jù)傳輸請求要被路由到本地信道存儲器的第二區(qū)的第二值之一,第一區(qū)能夠由網(wǎng)絡(luò)接口直接訪問用于本地信道操作,第二區(qū)包括由信道中的數(shù)據(jù)路由器所使用以對主存儲器尋址的多個ACW。
12.如權(quán)利要求11的裝置,其中地址控制結(jié)構(gòu)錯誤校驗字段包括ACW索引字段,ACW索引字段指定在第二區(qū)中的多個ACW的列表中的一個ACW的位置。
13.如權(quán)利要求12的裝置,其中ACW錯誤校驗字段和地址控制結(jié)構(gòu)錯誤校驗字段每一個包括驗證字段,驗證字段包括對應(yīng)于列表中的一個ACW的唯一值。
14.如權(quán)利要求10的裝置,其中選擇的地址控制結(jié)構(gòu)指定了通過多個數(shù)據(jù)傳輸請求訪問的ACW,并且所選擇的地址控制結(jié)構(gòu)的錯誤校驗字段包括偏移字段,偏移字段對于多個數(shù)據(jù)請求的每個連續(xù)數(shù)據(jù)請求遞增,以及每個ACW錯誤校驗字段包括下一個預(yù)期的偏移字段,在數(shù)據(jù)傳輸請求已被路由之后,下一個預(yù)期的偏移字段通過數(shù)據(jù)路由器以對應(yīng)于數(shù)據(jù)傳輸請求大小的值遞增。
15.如權(quán)利要求10的裝置,其中I/O操作是傳輸模式操作,并且獲取信息包括在信道子系統(tǒng)處獲取傳輸命令字TCW,TCff包括傳輸命令控制塊TCCB地址字段,含有TCCB地址,TCCB包括其每一個均包含I/O命令的多個設(shè)備命令字DCW。
16.如權(quán)利要求15的裝置,其中多個ACW包括傳輸命令A(yù)CW,指定主存儲器中的TCCB的地址、傳輸讀取ACW,指定主存儲器中的位置的地址以用于存儲通過數(shù)據(jù)傳輸請求從控制單元接收的輸入數(shù)據(jù)、傳輸寫入ACW,指定主存儲器中的位置的地址以用于獲取用于傳輸?shù)娇刂茊卧妮敵鰯?shù)據(jù)、以及傳輸狀態(tài)ACW,指定在主存儲器中的位置以用于在I/O操作結(jié)束時存儲由控制單元發(fā)送的結(jié)束狀態(tài)。
17.如權(quán)利要求16的裝置,其中一個或多個地址控制結(jié)構(gòu)包括下面中的至少一個 傳輸命令地址控制結(jié)構(gòu),指定在傳輸命令A(yù)CW的ACW列表內(nèi)的位置、一個或多個傳輸讀取地址控制結(jié)構(gòu),指定傳輸讀取ACW的ACW列表內(nèi)的位置、一個或多個傳輸寫入地址控制結(jié)構(gòu),指定傳輸寫入ACW的ACW列表內(nèi)的位置、以及傳輸結(jié)束狀態(tài)地址控制結(jié)構(gòu),指定傳輸狀態(tài)ACW的ACW列表內(nèi)的位置。
全文摘要
本發(fā)明提供一種計算機程序產(chǎn)品,以用于執(zhí)行一種方法,包括在主機系統(tǒng)中的信道子系統(tǒng)處獲取與I/O操作相關(guān)的信息;在本地信道存儲器中生成至少一個地址控制字符(ACW),其指定用于在主機和控制單元之間傳輸數(shù)據(jù)的一個或多個主存儲器位置、并包括至少一個ACW錯誤校驗字段;生成地址控制結(jié)構(gòu),其指定在相應(yīng)的ACW的本地信道存儲器中的位置、并包括至少一個地址控制結(jié)構(gòu)錯誤校驗字段;從包括尋址信息的網(wǎng)絡(luò)接口接收數(shù)據(jù)傳輸請求;比較至少一個ACW錯誤校驗字段與至少一個地址控制結(jié)構(gòu)錯誤校驗字段;以及,響應(yīng)匹配的字段,把數(shù)據(jù)傳輸請求路由到在相應(yīng)的ACW中指定的主存儲器位置。
文檔編號G06F13/16GK102819504SQ20121017807
公開日2012年12月12日 申請日期2012年6月1日 優(yōu)先權(quán)日2011年6月1日
發(fā)明者C·E·巴伯, D·F·卡斯波, J·R·弗拉納甘 申請人:國際商業(yè)機器公司