專利名稱:傳輸控制通道程序處理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及輸入/輸出(I/O)處理,更具體地講,涉及I/O處理系統(tǒng)中的傳輸 控制通道程序鏈?zhǔn)芥溄臃种?chain linkedbranching)。
背景技術(shù):
輸入/輸出(I/O)操作用于在I/O處理系統(tǒng)的I/O裝置與存儲(chǔ)器之間傳送數(shù)據(jù)。 具體地講,數(shù)據(jù)從存儲(chǔ)器寫入到一個(gè)或多個(gè)I/O裝置,并且通過執(zhí)行I/O操作將數(shù)據(jù)從一個(gè) 或多個(gè)I/O裝置讀入存儲(chǔ)器。為了便于I/O操作的處理,采用I/O處理系統(tǒng)的I/O子系統(tǒng)。該I/O子系統(tǒng)耦接 到I/O處理系統(tǒng)的主存儲(chǔ)器和I/O裝置并且引導(dǎo)存儲(chǔ)器與I/O裝置之間的信息流。I/O子 系統(tǒng)的一個(gè)例子是通道子系統(tǒng)。通道子系統(tǒng)使用通道路徑作為通信介質(zhì)。每個(gè)通道路徑包 括耦接到控制單元的通道,該控制單元還耦接到一個(gè)或多個(gè)I/O裝置。通道子系統(tǒng)可以采用通道命令字(CCW)在I/O裝置與存儲(chǔ)器之間傳送數(shù)據(jù)。CCW 指定要執(zhí)行的I/O命令。對(duì)于發(fā)起某些I/O操作的命令,CCW指定與該操作關(guān)聯(lián)的存儲(chǔ)區(qū) 域、每當(dāng)向該區(qū)域的傳送或來自該區(qū)域的傳送完成時(shí)要采取的動(dòng)作、以及其它選項(xiàng)。在I/O處理期間,通過通道從存儲(chǔ)器取CCW的列表。該通道對(duì)CCW的列表中的每 個(gè)命令進(jìn)行解析并且將多個(gè)命令(每個(gè)命令是獨(dú)立的)發(fā)送到與該通道耦接的控制單元。 控制單元然后對(duì)這些命令進(jìn)行處理。通道跟蹤每個(gè)命令的狀態(tài)并且控制何時(shí)將下一組命令 發(fā)送到控制單元進(jìn)行處理。通道確保每個(gè)命令被獨(dú)立地發(fā)送到控制單元。另外,通道推斷 與處理控制單元對(duì)于每個(gè)命令的響應(yīng)相關(guān)聯(lián)的特定信息?;诿總€(gè)CCW執(zhí)行I/O處理可以 涉及通道子系統(tǒng)的大量處理開銷,這是因?yàn)橥ǖ澜馕鯟CW,跟蹤狀態(tài)信息并且對(duì)來自控制單 元的響應(yīng)作出反應(yīng)。
發(fā)明內(nèi)容
一個(gè)示例性實(shí)施例包括一種用于在控制單元處處理具有鏈?zhǔn)芥溄臃种У膫鬏斂?制通道程序的計(jì)算機(jī)程序產(chǎn)品,該控制單元被構(gòu)造為與I/O處理系統(tǒng)中的I/O子系統(tǒng)進(jìn)行 通信。該計(jì)算機(jī)程序產(chǎn)品包括可由處理電路讀取并且存儲(chǔ)由處理電路執(zhí)行以執(zhí)行一種方法 的指令的有形存儲(chǔ)介質(zhì)。該方法包括在控制單元接收來自I/O子系統(tǒng)的命令消息以執(zhí)行I/ 0操作。該方法還包括讀取命令消息中的鏈?zhǔn)芥溄訕?biāo)記,該鏈?zhǔn)芥溄訕?biāo)記指示在所述命令消 息之后跟著該I/O操作的隨后命令消息。該方法還包括讀取命令消息中的串行化標(biāo)記,該 串行化標(biāo)記請(qǐng)求將裝置狀態(tài)返回到I/O子系統(tǒng)以選擇隨后命令消息。該方法另外包括執(zhí)行 命令消息中的一個(gè)或多個(gè)命令,以及響應(yīng)于結(jié)合串行化標(biāo)記執(zhí)行所述一個(gè)或多個(gè)命令而向 I/O子系統(tǒng)發(fā)送裝置狀態(tài)。另一個(gè)示例性實(shí)施例包括一種在I/O處理系統(tǒng)中的控制單元處處理具有鏈?zhǔn)芥?接分支的傳輸控制通道程序的設(shè)備。該設(shè)備包括被構(gòu)造為與I/O處理系統(tǒng)的I/O子系統(tǒng)進(jìn) 行通信的控制單元。該控制單元從I/O子系統(tǒng)接收命令消息以執(zhí)行I/O操作,并且讀取命令消息中的鏈?zhǔn)芥溄訕?biāo)記。該鏈?zhǔn)芥溄訕?biāo)記指示在所述命令消息之后跟著該I/O操作的隨 后命令消息??刂茊卧x取命令消息中的串行化標(biāo)記,該串行化標(biāo)記請(qǐng)求將裝置狀態(tài)返回 到I/O子系統(tǒng)以選擇隨后命令消息。該控制單元執(zhí)行命令消息中的一個(gè)或多個(gè)命令,并且 響應(yīng)于結(jié)合串行化標(biāo)記執(zhí)行所述一個(gè)或多個(gè)命令而向I/O子系統(tǒng)發(fā)送裝置狀態(tài)。另一個(gè)示例性實(shí)施例包括一種在控制單元處處理具有鏈?zhǔn)芥溄臃种У膫鬏斂刂?通道程序的方法,該控制單元被構(gòu)造為與I/O處理系統(tǒng)中的I/O子系統(tǒng)進(jìn)行通信。該方法包 括在控制單元接收來自I/O子系統(tǒng)的命令消息以執(zhí)行I/O操作。該方法還包括讀取命令消 息中的鏈?zhǔn)芥溄訕?biāo)記,該鏈?zhǔn)芥溄訕?biāo)記指示在所述命令消息之后跟著該I/O操作的隨后命 令消息。該方法還包括讀取命令消息中的串行化標(biāo)記,該串行化標(biāo)記請(qǐng)求將裝置狀態(tài)返回 到I/O子系統(tǒng)以選擇隨后命令消息。該方法另外包括執(zhí)行命令消息中的一個(gè)或多個(gè)命令, 以及響應(yīng)于結(jié)合串行化標(biāo)記執(zhí)行所述一個(gè)或多個(gè)命令而向I/O子系統(tǒng)發(fā)送裝置狀態(tài)。另一個(gè)示例性實(shí)施例包括一種在通道子系統(tǒng)處理具有鏈?zhǔn)芥溄臃种У膫鬏斂刂?通道程序的計(jì)算機(jī)程序產(chǎn)品,該通道子系統(tǒng)被構(gòu)造為與I/O處理系統(tǒng)中的控制單元進(jìn)行通 信。該計(jì)算機(jī)程序產(chǎn)品包括可由處理電路讀取并且存儲(chǔ)由處理電路執(zhí)行以執(zhí)行一種方法的 指令的有形存儲(chǔ)介質(zhì)。該方法包括構(gòu)造命令消息中的鏈?zhǔn)芥溄訕?biāo)記以指示在所述命令消息 之后跟著隨后命令消息以執(zhí)行I/O操作。該方法還包括構(gòu)造命令消息中的串行化標(biāo)記以請(qǐng) 求將裝置狀態(tài)返回到通道子系統(tǒng)從而選擇隨后命令消息。該方法還包括將命令消息從通道 子系統(tǒng)發(fā)送至控制單元。另一個(gè)示例性實(shí)施例包括一種在I/O處理系統(tǒng)中的通道子系統(tǒng)處理具有鏈?zhǔn)芥?接分支的傳輸控制通道程序的設(shè)備。該設(shè)備包括被構(gòu)造為與I/O處理系統(tǒng)的控制單元進(jìn)行 通信的通道子系統(tǒng)。該通道子系統(tǒng)構(gòu)造命令消息中的鏈?zhǔn)芥溄訕?biāo)記以指示在所述命令消息 之后跟著隨后命令消息以執(zhí)行I/O操作。該通道子系統(tǒng)還構(gòu)造命令消息中的串行化標(biāo)記以 請(qǐng)求將裝置狀態(tài)返回到通道子系統(tǒng)以選擇隨后命令消息。另外,通道子系統(tǒng)將命令消息從 通道子系統(tǒng)發(fā)送到控制單元。 通過本發(fā)明的技術(shù)實(shí)現(xiàn)附加特征和優(yōu)點(diǎn)。本發(fā)明的其它實(shí)施例和方面在這里被詳 細(xì)描述并且被認(rèn)為是要求保護(hù)的發(fā)明的一部分。為了更好理解本發(fā)明的優(yōu)點(diǎn)和特征,參照 說明書和附圖。
現(xiàn)在將參照附圖僅僅作為例子描述本發(fā)明的實(shí)施例,在附圖中圖1示出了包括并使用本發(fā)明的一個(gè)或多個(gè)方面的I/O處理系統(tǒng)的一個(gè)實(shí)施例;圖2示出了根據(jù)本發(fā)明的一個(gè)方面的控制單元和通道子系統(tǒng)的一個(gè)實(shí)施例;圖3示出了根據(jù)本發(fā)明的一個(gè)方面的具有鏈?zhǔn)芥溄臃种У膫鬏斂刂谱?TCW)通道 程序的一個(gè)實(shí)施例;圖4示出了根據(jù)本發(fā)明的一個(gè)方面的用于識(shí)別I/O處理系統(tǒng)的兼容控制單元的鏈 接協(xié)議的一個(gè)實(shí)施例;圖5示出了圖4的鏈接協(xié)議的請(qǐng)求消息的一個(gè)實(shí)施例;圖6示出了圖4的鏈接協(xié)議的接受消息的一個(gè)實(shí)施例;圖7示出了根據(jù)本發(fā)明的一個(gè)方面的錨(anchor)控制塊的一個(gè)實(shí)施例;
圖8示出了根據(jù)本發(fā)明的一個(gè)方面的TCW的一個(gè)實(shí)施例;圖9示出了根據(jù)本發(fā)明的一個(gè)方面的從通道子系統(tǒng)傳送至控制單元的命令消息 的一個(gè)實(shí)施例;圖10示出了根據(jù)本發(fā)明的一個(gè)方面的用于在通道與控制單元之間進(jìn)行通信以執(zhí) 行圖3的具有鏈?zhǔn)芥溄臃种У腡CW通道程序的鏈接協(xié)議的一個(gè)實(shí)施例;圖11示出了根據(jù)本發(fā)明的一個(gè)方面的用于在通道子系統(tǒng)提供TCW通道程序鏈?zhǔn)?鏈接分支的過程的一個(gè)實(shí)施例;圖12示出了根據(jù)本發(fā)明的一個(gè)方面的用于在控制單元提供TCW通道程序鏈?zhǔn)芥?接分支的過程的一個(gè)實(shí)施例;以及圖13示出了包括本發(fā)明的一個(gè)或多個(gè)方面的制造品的一個(gè)實(shí)施例。
具體實(shí)施例方式根據(jù)本發(fā)明的一個(gè)方面,鏈?zhǔn)芥溄臃种П阌谳斎?輸出(I/O)從而實(shí)現(xiàn)傳輸控制 通道程序部分的有條件執(zhí)行。還可以提供對(duì)傳輸控制通道程序的各部分之間的程序控制中 斷的支持。傳輸控制通道程序通過減少用于執(zhí)行I/O處理的I/O處理系統(tǒng)的部件之間的通 信,使I/O處理變簡(jiǎn)單。例如,減少了 I/O通信適配器(例如,通道)與控制單元之間的交 換和序列的數(shù)目。這是通過向控制單元發(fā)送多個(gè)命令和/或數(shù)據(jù)而非發(fā)送單獨(dú)的通道命令 字(CCW)而實(shí)現(xiàn)的,所述多個(gè)命令和/或數(shù)據(jù)被整批地分組以在控制單元執(zhí)行。用CCW實(shí)現(xiàn)的通道程序(也稱作“CCW通道程序”)包括很大程度的用于執(zhí)行任務(wù) 的握手。例如,使用CCW通道程序?qū)?千字節(jié)的數(shù)據(jù)塊通常需要打開交換;發(fā)送定義范圍 命令和數(shù)據(jù);發(fā)送定位記錄命令和數(shù)據(jù);以及將寫命令和數(shù)據(jù)從通道發(fā)送到控制單元???制單元通常通過打開交換并且發(fā)送用于確認(rèn)該寫命令的響應(yīng),當(dāng)完成寫命令時(shí)發(fā)送狀態(tài)消 息并且關(guān)閉它打開的交換,來進(jìn)行響應(yīng)。通道然后可以通過關(guān)閉它打開的交換進(jìn)行響應(yīng)。使 用TCW通道程序,傳輸命令控制塊(TCCB)可以作為命令塊從通道發(fā)送到控制單元,從而避 免了使用CCW通道程序以其它方式執(zhí)行的通道與控制單元之間的許多消息。例如,TCW通 道程序能夠避免打開交換以響應(yīng)控制單元接收到寫命令。當(dāng)運(yùn)行TCW通道程序替代CCW通 道程序時(shí)多個(gè)命令序列上的累積效應(yīng)能夠?qū)е鹿?jié)省大量時(shí)間,并且由此整個(gè)I/O處理系統(tǒng) 的吞吐量增加。在一個(gè)示例性實(shí)施例中,I/O處理系統(tǒng)能夠支持命令模式下的CCW通道程 序和傳輸模式下的TCW通道程序。傳輸模式是指通道向控制單元傳輸命令和數(shù)據(jù)而不解釋 或區(qū)分傳輸?shù)拿詈蛿?shù)據(jù)。在一個(gè)示例性實(shí)施例中,用于命令模式通信的鏈接協(xié)議是FICON (Fibre Connectivity,光纖連接 j"生)ο 在"Fibre Channel Single ByteCommand Code Sets~3 Mapping Protocol(FC-SB-3), Til/Project 1357-D/Rev. 1. 6, INCITS(March 2003)” 中 描述了關(guān)于FICON的信息,該文獻(xiàn)的全部?jī)?nèi)容通過引用并入本文。例如,用于傳輸模式 通信的鏈接協(xié)議可以是光纖通道協(xié)議(FCP)。具體地講,能夠使用FCP鏈接協(xié)議的三個(gè) 階段,從而允許使用支持FCP的主機(jī)總線適配器來執(zhí)行數(shù)據(jù)傳送。另外在“^formation Technology-Fibre Channel Protocol for SCSI, ThirdVersion(FCP-3),,,TlO Project 1560-D, Revision 4, September 13,2005”中描述了 FCP及其各階段,該文獻(xiàn)的全部?jī)?nèi)容通 過引用并入本文。應(yīng)該理解,在本發(fā)明的范圍內(nèi)可以使用這些協(xié)議和/或類似協(xié)議的其它版本。多個(gè)命令(例如,裝置命令字或者“DCW” )能夠包括在TCCB中,該TCCB的內(nèi)容經(jīng) 由一個(gè)或多個(gè)地址引用(間接或直接)而定位在傳輸控制字(TCW)中。在一個(gè)示例性實(shí)施 例中,TCW從操作系統(tǒng)(0 或其它應(yīng)用發(fā)送到I/O通信適配器,該I/O通信適配器繼而將 TCCB在一命令消息中轉(zhuǎn)發(fā)到控制單元以進(jìn)行處理??刂茊卧獙?duì)每個(gè)命令進(jìn)行處理,而不由 I/O通信適配器跟蹤相對(duì)于那些個(gè)體命令的狀態(tài)。所述多個(gè)命令還稱作通道程序,該通道程 序在控制單元上而非在I/O通信適配器上被解析和執(zhí)行。單個(gè)TCCB的大小可以根據(jù)鏈接協(xié)議或緩沖器大小約束進(jìn)行限制,這進(jìn)而能夠限 制與TCCB關(guān)聯(lián)的命令的數(shù)目和/或數(shù)據(jù)的量。與可包括在單個(gè)TCCB中的命令的數(shù)目或者 數(shù)據(jù)量相比,一些I/O操作可以包括更多數(shù)目的命令或者更大的數(shù)據(jù)量。在一個(gè)示例性實(shí) 施例中,采用與TCCB關(guān)聯(lián)的多個(gè)TCW的鏈?zhǔn)芥溄右詣?chuàng)建更大的TCW通道程序,從而允許單 個(gè)I/O操作跨越多個(gè)TCW和TCCB。還支持程序控制中斷(PCI)以將鏈?zhǔn)芥溄拥腡CW通道程 序的進(jìn)展的中間通知從通道發(fā)送到0S,使OS能夠釋放或重用先前在PCI之前已經(jīng)為TCCB 的一個(gè)或多個(gè)命令分配的資源。PCI用作簡(jiǎn)潔狀態(tài)指示器,而不在每個(gè)TCCB之后要求完全 的擴(kuò)展?fàn)顟B(tài)消息。TCW通道程序的鏈?zhǔn)芥溄优cPCI支持能夠增強(qiáng)將冗長(zhǎng)CCW通道程序轉(zhuǎn)換 到與單個(gè)TCCB能夠保持的命令的數(shù)目相比將包括更大數(shù)目的命令的、鏈?zhǔn)芥溄拥腡CW通道 程序。另外,鏈?zhǔn)芥溄拥腡CW通道程序比運(yùn)行一系列單獨(dú)的TCW通道程序更高效,因?yàn)榭梢?將擴(kuò)展?fàn)顟B(tài)消息拖延直至完全的鏈?zhǔn)芥溄覶CW通道程序完成,而不是對(duì)每個(gè)單獨(dú)的TCW通 道程序發(fā)送擴(kuò)展?fàn)顟B(tài)消息。此外,與一系列單獨(dú)的TCW通道程序(每個(gè)單獨(dú)的TCW通道程 序完成I/O操作的一部分)相比,當(dāng)運(yùn)行鏈?zhǔn)芥溄覶CW通道程序時(shí),能夠進(jìn)一步減少構(gòu)造和 管理通信所涉及的開銷。如果利用閉環(huán)或分支,則一些I/O操作會(huì)更加高效。例如,為了在I/O裝置上定位 數(shù)據(jù),可以重復(fù)執(zhí)行帶有搜索參數(shù)的搜索命令,直到找到搜索參數(shù)。在一個(gè)示例性實(shí)施例 中,TCff和TCCB被修改為包括支持TCCB之間的條件分支的鏈?zhǔn)芥溄臃种б詧?zhí)行I/O操作。 可以在TCW和TCCB中定義串行化位以提供DCW之間的跳躍狀態(tài)。I/O通信適配器向控制單 元發(fā)送包含“η”個(gè)DCff的第一組TCCB。響應(yīng)于控制單元針對(duì)第一組η個(gè)DCW向I/O通信適 配器提供狀態(tài),I/O通信適配器檢查該狀態(tài)并且確定要取回多個(gè)TCCB中的哪一個(gè)并發(fā)送到 控制單元。參照?qǐng)D1描述包括并使用本發(fā)明的一個(gè)或多個(gè)方面的I/O處理系統(tǒng)的一個(gè)例子。 I/O處理系統(tǒng)100包括主機(jī)系統(tǒng)101,主機(jī)系統(tǒng)101例如還包括主存儲(chǔ)器102、一個(gè)或多個(gè)中 央處理單元(CPU) 104、存儲(chǔ)控制元件106和通道子系統(tǒng)108。主機(jī)系統(tǒng)101可以是大規(guī)模 計(jì)算系統(tǒng),諸如大型機(jī)或者服務(wù)器。I/O處理系統(tǒng)100還包括一個(gè)或多個(gè)控制單元110以及 一個(gè)或多個(gè)I/O裝置112,將在下文中描述它們中的每個(gè)。主存儲(chǔ)器102存儲(chǔ)數(shù)據(jù)和程序,這些數(shù)據(jù)和程序能夠從I/O裝置112輸入。例如, 主存儲(chǔ)器102可以包括一個(gè)或多個(gè)操作系統(tǒng)(OS) 103,這些操作系統(tǒng)103由一個(gè)或多個(gè)CPU 104執(zhí)行。例如,一個(gè)CPU104可以執(zhí)行Linux操作系統(tǒng)103和z/OS操作系統(tǒng)103,作為不 同的虛擬機(jī)實(shí)例。主存儲(chǔ)器102可直接尋址并且通過CPU 104和通道子系統(tǒng)108提供數(shù)據(jù) 的高速處理。CPU 104是I/O處理系統(tǒng)100的控制中心。它包含用于指令執(zhí)行、中斷動(dòng)作、定時(shí)功能、初始程序加載和其它機(jī)器相關(guān)功能的排序和處理設(shè)施。CPU 104經(jīng)由連接114(例如, 雙向或單向總線)耦接到存儲(chǔ)控制元件106。存儲(chǔ)控制元件106經(jīng)由連接116(例如,總線)耦接到主存儲(chǔ)器102 ;經(jīng)由連接114 耦接到CPU 104;并經(jīng)由連接118耦接到通道子系統(tǒng)108。例如,存儲(chǔ)控制元件106控制由 CPU 104和通道子系統(tǒng)108進(jìn)行的請(qǐng)求的排隊(duì)和執(zhí)行。在一個(gè)示例性實(shí)施例中,通道子系統(tǒng)108提供主機(jī)系統(tǒng)101與控制單元110之間 的通信接口。如上所述,通道子系統(tǒng)108耦接到存儲(chǔ)控制元件106,并且經(jīng)由連接120 (例 如,串行鏈接)耦接到每個(gè)控制單元110。連接120可以實(shí)現(xiàn)為光鏈接,采用光纖通道構(gòu)造 (例如,光纖通道網(wǎng)絡(luò))中的單模或多模波導(dǎo)。通道子系統(tǒng)108引導(dǎo)I/O裝置112與主存 儲(chǔ)器102之間的信息流動(dòng)。它免除了 CPU 104直接與I/O裝置112進(jìn)行通信的任務(wù)并且允 許與I/O處理并發(fā)地進(jìn)行數(shù)據(jù)處理。通道子系統(tǒng)108使用一個(gè)或多個(gè)通道路徑122作為管 理到達(dá)或來自I/O裝置112的信息流時(shí)的通信鏈接。作為I/O處理的一部分,通道子系統(tǒng) 108還執(zhí)行路徑管理功能測(cè)試通道路徑可用性、選擇可用通道路徑122以及啟動(dòng)用I/O裝 置112執(zhí)行操作。每個(gè)通道路徑122包括通道124(在一個(gè)例子中,如圖1所示,通道IM位于通道 子系統(tǒng)108內(nèi))、一個(gè)或多個(gè)控制單元110以及一個(gè)或多個(gè)連接120。在另一個(gè)例子中,還 可以用一個(gè)或多個(gè)動(dòng)態(tài)開關(guān)(未示出)作為通道路徑122的一部分。動(dòng)態(tài)開關(guān)耦接到通道 IM和控制單元110并且提供對(duì)附接到該開關(guān)的任兩個(gè)鏈接的物理互連能力。在另一個(gè)例 子中,還可以令多個(gè)系統(tǒng)(由此為多個(gè)通道子系統(tǒng)(未示出))附接到控制單元110。另外,通道子系統(tǒng)108內(nèi)有子通道(未示出)。對(duì)通過通道子系統(tǒng)108可訪問程序 的每個(gè)I/O裝置112,提供專用的一個(gè)子通道。子通道(例如,諸如表的數(shù)據(jù)結(jié)構(gòu))向程序 提供裝置的邏輯表觀(appearance)。每個(gè)子通道提供關(guān)于關(guān)聯(lián)的I/O裝置112的信息以及 它的對(duì)于通道子系統(tǒng)108的附接。子通道還提供了關(guān)于涉及關(guān)聯(lián)的I/O裝置112的I/O操 作和其它功能的信息。子通道是通道子系統(tǒng)108向CPU 104提供關(guān)于關(guān)聯(lián)的I/O裝置112 的信息的手段,其中,CPU 104通過執(zhí)行I/O指令獲得該信息。通道子系統(tǒng)108耦接到一個(gè)或多個(gè)控制單元110。每個(gè)控制單元110提供操作并 控制一個(gè)或多個(gè)I/O裝置112的邏輯,并且通過使用公共設(shè)施使得每個(gè)I/O裝置112的特 性適于由通道1 提供的鏈接接口。這些公共設(shè)施提供I/O操作的執(zhí)行、關(guān)于I/O裝置112 和控制單元110的狀態(tài)的指示、通道路徑122上的數(shù)據(jù)傳送的定時(shí)控制和一定等級(jí)的I/O 裝置112控制。每個(gè)控制單元110經(jīng)由連接126(例如,總線)附接到一個(gè)或多個(gè)I/O裝置112。 I/O裝置112接收信息或者將信息存儲(chǔ)在主存儲(chǔ)器102和/或其它存儲(chǔ)器中。I/O裝置112 的例子包括讀卡器和打孔器、磁帶單元、直接存取存儲(chǔ)裝置、顯示器、鍵盤、打印機(jī)、點(diǎn)擊裝 置、遠(yuǎn)程處理裝置、通信控制器和基于傳感器的設(shè)備等。在"IBM z/Architecture Principles of Operation, "Publication No.SA22-7832-05,6th Edition, April 2007> fe H ^"System For TransferringData Between 1/0 Devices And Main Or Expanded Storage UnderDynamic Control Of Independent Indirect Address Words (IDAWS),,的美國(guó)專利 No. 5,461,721 (Cormier 等人, 1995 年 10 月 24 日授權(quán))和標(biāo)題為‘‘Method And System For Pipelining The ProcessingOf ChannelCommand Words” 的美國(guó)專利 No. 5,5 , 484(Casper 等人,1996 年 6 月 11 日授 權(quán))中進(jìn)一步描述了 I/O處理系統(tǒng)100的以上部件中的一個(gè)或多個(gè),上述各文獻(xiàn)的全部?jī)?nèi) 容通過引用并入本文。IBM是位于Armonk,New York, USA的國(guó)際商業(yè)機(jī)器公司的注冊(cè)商 標(biāo)。這里使用的其它名稱可以是國(guó)際商業(yè)機(jī)器公司或者其它公司的注冊(cè)商標(biāo)、商標(biāo)或產(chǎn)品 名稱?,F(xiàn)在參照?qǐng)D2,更加詳細(xì)地描述支持鏈?zhǔn)芥溄臃种CW通道程序執(zhí)行的圖1的控制 單元110和通道124的一個(gè)實(shí)施例??刂茊卧?10包括控制單元控制邏輯202,控制單元控 制邏輯202對(duì)經(jīng)由連接120從通道IM接收的包含一個(gè)或多個(gè)TCCB的命令消息進(jìn)行解析 和處理??刂茊卧刂七壿?02能夠從在控制單元110接收的TCCB提取DCW和控制數(shù)據(jù), 從而經(jīng)由連接1 控制裝置,例如I/O裝置112??刂茊卧刂七壿?02向I/O裝置112發(fā) 送裝置命令和數(shù)據(jù)以及從I/O裝置112接收狀態(tài)信息和其它反饋。控制單元控制邏輯202 可以使用控制單元鏈邏輯204執(zhí)行在控制單元110接收的命令消息的各種檢查以及確定適 當(dāng)?shù)捻憫?yīng)。例如,控制單元鏈邏輯204能夠向通道IM通知支持的鏈接的命令的最大數(shù)目。 控制單元鏈邏輯204還可以處理填充、錯(cuò)誤長(zhǎng)度抑制、鏈?zhǔn)芥溄右约癉CW等級(jí)的鏈?zhǔn)芥溄臃?支。盡管與控制單元控制邏輯202分離地示出了控制單元鏈邏輯204,但是應(yīng)該明白,控制 單元鏈邏輯204可以并入作為控制單元控制邏輯202的一部分??刂茊卧刂七壿?02能夠訪問并控制控制單元110內(nèi)的其它元件,諸如控制單 元定時(shí)器206和控制單元寄存器208??刂茊卧〞r(shí)器206可以包括多個(gè)定時(shí)器功能,用于 跟蹤完成一個(gè)I/O操作序列或單個(gè)I/O操作花費(fèi)多少時(shí)間。控制單元定時(shí)器206還可以包 括一個(gè)或多個(gè)倒計(jì)數(shù)定時(shí)器,用于監(jiān)視和中止在預(yù)定時(shí)間內(nèi)沒有完成的I/O操作和命令。 在一個(gè)示例性實(shí)施例中,控制單元定時(shí)器206在鏈接的TCCB之間持續(xù)運(yùn)行,直到該鏈作為 跨越多個(gè)TCCB的I/O操作完成??刂茊卧拇嫫?08可以包括提供配置和狀態(tài)信息的固 定值以及當(dāng)控制單元控制邏輯202執(zhí)行命令時(shí)更新的動(dòng)態(tài)狀態(tài)信息??刂茊卧?10還可以 包括用于存儲(chǔ)與通道1 與I/O裝置112之間的通信關(guān)聯(lián)的多個(gè)消息或狀態(tài)信息的其它緩 沖器或存儲(chǔ)器元件(未示出)??刂茊卧拇嫫?08可以包括最大鏈接命令參數(shù),該參數(shù)定 義控制單元110支持的一個(gè)I/O操作的流式命令消息的最大數(shù)目。通道子系統(tǒng)108中的通道124包括用于支持與控制單元110的通信的多個(gè)元件。 例如,通道1 可以包括通道控制邏輯210,通道控制邏輯210與通道子系統(tǒng)定時(shí)器212和 通道子系統(tǒng)寄存器214對(duì)接。在一個(gè)示例性實(shí)施例中,通道控制邏輯210控制通道子系統(tǒng) 108與控制單元110之間的通信。通道控制邏輯210可以經(jīng)由連接120直接與控制單元控 制邏輯202對(duì)接以發(fā)送命令和接收響應(yīng),例如,傳輸命令信息單元(TC_IU)和響應(yīng)IU。或 者,能夠在通道控制邏輯210與控制單元控制邏輯202之間設(shè)置消息發(fā)送接口和/或緩沖 器(未示出)。通道子系統(tǒng)定時(shí)器212可以包括多個(gè)定時(shí)器功能,用于除了由控制單元110 跟蹤的時(shí)間以外還跟蹤完成一 I/O操作序列花費(fèi)多少時(shí)間。通道子系統(tǒng)212還可以包括一 個(gè)或多個(gè)倒計(jì)數(shù)定時(shí)器,用于監(jiān)視并中止在預(yù)定時(shí)間內(nèi)沒有完成的命令序列。通道子系統(tǒng) 寄存器214可以包括提供配置和狀態(tài)信息的固定值、以及當(dāng)傳輸命令和接收響應(yīng)時(shí)更新的 動(dòng)態(tài)狀態(tài)信息。在一個(gè)示例性實(shí)施例中,通道子系統(tǒng)108還包括通道鏈邏輯216。通道鏈邏輯216 能夠管理鏈?zhǔn)芥溄?、鏈?zhǔn)芥溄臃种Ш歪槍?duì)通道IM的PCI產(chǎn)生。盡管與通道控制邏輯210分離地示出了通道鏈邏輯216,但是應(yīng)該明白通道鏈邏輯216能夠并入作為通道控制邏輯210 的一部分。圖3示出了具有鏈?zhǔn)芥溄臃种У腡CW通道程序300的一個(gè)實(shí)施例,TCff通道程序 300包括錨控制塊(ACB) 302以及TCW 304、306、308和310。在一個(gè)示例性實(shí)施例中,當(dāng)鏈 中的第一TCW(TCW304)包括用于進(jìn)行分支的兩個(gè)接下來的TCW地址時(shí),ACB 302用作初始控 制塊。為了使在TCW 304到310上支持共同的格式化和改變大小(sizing)約束,原本用于 保持詢問地址位置的TCW字段可以保持用于進(jìn)行分支的第二后續(xù)TCW地址。作為TCW格式 變型,ACB 302的大小可以與TCW 304到310的大小相同,并且包含詢問地址位置,這釋放 了 TCW 304中的空間以支持分支。ACB 302被鏈?zhǔn)芥溄拥絋CW 304,TCW 304被鏈?zhǔn)芥溄拥?TCff 306和TCW 310。TCff 306被鏈?zhǔn)芥溄拥絋CW 308。在TCW通道程序300的執(zhí)行期間,響 應(yīng)于在TCCB 312中執(zhí)行DCW,基于從控制單元110接收的狀態(tài),通道判斷是分支到TCW 306 還是 TCW 310。TCff 304還包括到TCCB 312和傳輸狀態(tài)塊(TSB) 314的鏈接。TCW 306包括到TCCB 316,TSB 314和數(shù)據(jù)區(qū)318的鏈接。TCff 308包括到TCCB 320,TSB 314和數(shù)據(jù)區(qū)322的鏈 接。TCff 310包括到TCCB 324,TSB 314和數(shù)據(jù)區(qū)326的鏈接。到TCCB、TSB和數(shù)據(jù)區(qū)(例 如,TCCB 312、316、320和324)的各種鏈接能夠直接或間接地引用存儲(chǔ)器的區(qū)域。例如,傳 輸塊和數(shù)據(jù)區(qū)312和316-3 能夠被進(jìn)一步細(xì)分成較小塊(鄰接或不鄰接)并且使用指向 較小塊的間接列表(例如,傳輸模式間接數(shù)據(jù)地址字列表(TIDAL))進(jìn)行管理。在一個(gè)示例 性實(shí)施例中,TCCB 312從圖1的通道子系統(tǒng)108發(fā)送至目標(biāo)控制單元110,目標(biāo)控制單元 110對(duì)TCCB 312中的DCW進(jìn)行解析和執(zhí)行。控制單元110在一狀態(tài)消息中將與TCCB 312 中DCW的執(zhí)行關(guān)聯(lián)的條件報(bào)告給通道124。通道124中的通道鏈邏輯216可以基于該狀態(tài) 消息中的各條件選擇向控制單元110發(fā)送TCCB 316還是TCCB 324。如果通道選擇了 TCCB 316,則TCCB 320也被發(fā)送至控制單元110。TSB 314可以仍在通道子系統(tǒng)108中保持與在控制單元110處執(zhí)行TCCB 312、 316,320和/或3M相關(guān)聯(lián)的狀態(tài)信息,使OS 103能夠訪問狀態(tài)信息。數(shù)據(jù)區(qū)318、322和 326能夠用于保持要發(fā)送到控制單元110的寫數(shù)據(jù)或從控制單元110接收的讀數(shù)據(jù)。在一個(gè)示例性實(shí)施例中,具有鏈?zhǔn)芥溄臃种У腡CW通道程序300表示單個(gè)I/O操 作,這個(gè)I/O操作包括跨越TCW 304到310以及TCCB 312、316、320和3 進(jìn)行鏈接的多個(gè) 命令。TCW 304到310分別包括指向同一 TSB 314的TSB地址。如果該I/O操作成功結(jié)束, 則通道IM僅僅使用最后TCW(TCW 308或310)中的TSB地址;然而,如果該I/O操作由于 無論什么原因而提早結(jié)束,則通道1 可以使用通道1 可以與之工作的任何TCW中的TSB 地址,以獲得在TSB314內(nèi)存儲(chǔ)結(jié)束狀態(tài)的存儲(chǔ)器地址。圖3的TCW還可以包括PCI支持,以當(dāng)在執(zhí)行TCCB的控制單元110處在關(guān)聯(lián)的 TCCB中的命令的完成時(shí)產(chǎn)生PCI。應(yīng)該明白,TCW 304到310和ACB 302的構(gòu)造和數(shù)目?jī)H僅 表示一個(gè)實(shí)施例,而并非限制范圍,這是因?yàn)榭梢源嬖阪準(zhǔn)芥溄佑蟹种У娜魏螖?shù)目的TCW, 包括多個(gè)PCI作為TCW通道程序300的一部分或者不包括PCI。此外,在示例性實(shí)施例中 可以實(shí)現(xiàn)其它分支構(gòu)造。例如,TCW能夠分支返回到它自身地址以在同一命令組上循環(huán),直 到條件滿足,諸如搜索。分支還能夠用于跳過或者循環(huán)返回到TCW通道程序300中的任何 TCW。
為了確定控制單元是否能夠支持鏈?zhǔn)芥溄拥腡CW通道程序,可以在向控制單元發(fā) 送鏈?zhǔn)芥溄覶CCB之前采用兼容性鏈接協(xié)議。在圖4中示出了兼容性鏈接協(xié)議的例子。通道 400以缺省通信格式向控制單元402發(fā)送過程登錄(PRLI)請(qǐng)求404??刂茊卧?2用PRLI 接受406進(jìn)行響應(yīng),該P(yáng)RLI接受406可以包括定義控制單元402可接受的通信參數(shù)的信息。 響應(yīng)于接收到PRLI接受406,通道可以繼續(xù)向控制單元402發(fā)送鏈?zhǔn)芥溄覶CCB以供執(zhí)行, 諸如鏈?zhǔn)芥溄覶CCB 312、316、320和324。作為鏈接初始化和配置的一部分,還可以在通道 400與控制單元402之間交換其它消息。通道400和控制單元402表示圖1的通道124和 控制單元110的實(shí)施例。圖5示出了 PRLI請(qǐng)求消息500的例子,它表示圖4的PRLI請(qǐng)求404的實(shí)施例。 PRLI請(qǐng)求消息500的凈荷可以包括服務(wù)參數(shù)頁,該服務(wù)參數(shù)頁包括用于一個(gè)或所有圖像對(duì) 的服務(wù)參數(shù)。PRLI請(qǐng)求消息500的服務(wù)參數(shù)頁可以包括多個(gè)字段,諸如類型碼502、類型擴(kuò)展 504、最大發(fā)起延遲時(shí)間506、標(biāo)記508和最大鏈接命令510。PRLI請(qǐng)求消息500的頁中的每 個(gè)字段被分配給特定字節(jié)地址。盡管在圖5中示出了 PRLI請(qǐng)求消息500的頁內(nèi)的字段的 一種布置,但是應(yīng)該明白在本發(fā)明的范圍內(nèi)可以將字段的順序重新布置成替換排序。此外, 在本發(fā)明的范圍內(nèi),PRLI請(qǐng)求消息500的頁中的字段能夠被省去或組合。位于字0、字節(jié)0的類型碼字段502表示協(xié)議類型碼,諸如光纖通道單字節(jié)協(xié)議類 型碼。例如,這個(gè)字節(jié)中十六進(jìn)制的值“1B”指示在選擇的協(xié)議(例如,光纖通道單字節(jié)) 中定義了這個(gè)服務(wù)參數(shù)頁500。位于字0、字節(jié)1的類型擴(kuò)展504可以進(jìn)一步補(bǔ)充類型碼字 段 502。位于字3、字節(jié)0的最大發(fā)起延遲時(shí)間字段506提供圖1的通道IM在來自控制單 元110的過程退出(PRLO)中的發(fā)起延遲時(shí)間字段中能夠允許的最大時(shí)間(例如,以秒為單 位)。在一個(gè)示例性實(shí)施例中,標(biāo)記508具有下面的定義位0-傳輸模式/命令模式。這個(gè)位的值設(shè)置為一(1)意味著發(fā)送方支持命令模 式和傳輸模式兩者。如果該位設(shè)置為零(0),則發(fā)送方僅僅支持命令模式。如果通道1 將 這個(gè)位設(shè)置為一,則在控制單元110支持傳輸模式的情況下可以通過將這個(gè)位設(shè)置為一進(jìn) 行響應(yīng)。位1到6-保留。位7-數(shù)據(jù)的第一傳送就緒禁用。如果通道IM和控制單元110 二者均選擇禁用 第一寫傳送就緒信息單元(XFER_RDY IU),則在針對(duì)I/O操作的第一 TC_IU發(fā)送第一數(shù)據(jù) 信息單元(數(shù)據(jù)IU)之前,在通道124與控制單元110之間執(zhí)行寫的所有I/O操作的第一 TC_IU在不使用XFER_RDY IU的情況下操作。如果對(duì)于通道程序的當(dāng)前TC_IU和任何隨后 的TC_IU有任何附加數(shù)據(jù)IU,則發(fā)送XFER_RDY IU以請(qǐng)求每個(gè)附加數(shù)據(jù)IU。最大鏈接命令字段510指示在第一 TC_IU已經(jīng)發(fā)送到控制單元110后通道124支 持流入控制單元Iio作為針對(duì)同一 I/O裝置112的鏈?zhǔn)芥溄用畹母郊觽鬏斆钚畔卧?(TC_IU)的最大計(jì)數(shù)。值可以從0到15,值為零意味著通道124不支持TC_IU的鏈?zhǔn)芥溄印?X等于1到15的值指示通道IM將在第一 TC_IU之后針對(duì)同一 I/O裝置112發(fā)出X個(gè)TC_ IU (如果存在X個(gè)TCW鏈?zhǔn)芥溄釉谝黄鸬脑?并且然后針對(duì)完成的每個(gè)先前TC_IU發(fā)出一個(gè)新的TC_IU,直到完全執(zhí)行了通道程序。在一個(gè)示例性實(shí)施例中,PRLI請(qǐng)求消息500的頁中的剩余字段被保留和/或設(shè)置 為零(0)。例如,字0的字節(jié)2和字節(jié)3、字1和字2設(shè)置為零。字3的字節(jié)1以及字節(jié)2 的一部分也可以保留?,F(xiàn)在參照?qǐng)D6,示出了 PRLI接受消息600的一個(gè)例子,它表示圖4的PRLI接受406 的實(shí)施例。PRLI接受消息600的凈荷可以包括服務(wù)參數(shù)頁。PRLI接受消息600的服務(wù)參 數(shù)頁可以包括多個(gè)字段,諸如類型碼602、類型擴(kuò)展604、響應(yīng)碼606、第一突發(fā)(burst)大小 608、標(biāo)記610和最大鏈接命令612。PRLI接受消息600的頁中的每個(gè)字段被分配給特定字 節(jié)地址。盡管在圖6中示出了 PRLI接受消息600的頁內(nèi)的字段的一種布置,但是應(yīng)該明白 在本發(fā)明的范圍內(nèi),字段的順序可以重新布置成替代排序或者能夠被省去或組合。位于字0、字節(jié)0的類型碼字段602是協(xié)議類型碼并且與圖5的類型碼字段502類 似。位于字0、字節(jié)1的類型擴(kuò)展字段604對(duì)應(yīng)于圖5的類型擴(kuò)展字段504。位于字0、字節(jié)2、位4到7的響應(yīng)碼字段606由它的對(duì)應(yīng)協(xié)議(例如光纖通道成 幀和信令協(xié)議(FC-FS))進(jìn)行定義,在 “ANSIINCITS 433-2007,Information Technology Fibre Channel Link Services (FC-LS),,(July 2007)中進(jìn)一步對(duì)其進(jìn)行了描述,上述文獻(xiàn) 的全部?jī)?nèi)容以引用方式并入本文。位于字3、字節(jié)0到1、位0到15的第一突發(fā)大小608提供了當(dāng)數(shù)據(jù)的第一傳送就 緒禁用標(biāo)記位(字3、字節(jié)3、位7)被設(shè)置為1時(shí)在第一 TC_IU后立即發(fā)送的第一數(shù)據(jù)IU 中允許的最大數(shù)據(jù)量(例如,4k字節(jié)數(shù)據(jù)塊的最大數(shù)目)。這個(gè)字段中的零值指示不存在 指定的第一突發(fā)大小。標(biāo)記610與結(jié)合PRLI請(qǐng)求消息500描述的圖5的標(biāo)記508類似。控制單元110 對(duì)這些標(biāo)記設(shè)置與它將與通道1 運(yùn)行的操作模式對(duì)應(yīng)的值。在一個(gè)示例性實(shí)施例中,最大鏈接命令字段612是控制單元110對(duì)一個(gè)I/O操作 支持的流式TC_IU的最大計(jì)數(shù)。控制單元110用等于或小于通道IM在PRLI請(qǐng)求消息500 的服務(wù)參數(shù)頁中發(fā)送至控制單元110的值的計(jì)數(shù)進(jìn)行響應(yīng)。通道IM使用從控制單元110 接收的計(jì)數(shù)作為在控制單元110排隊(duì)的鏈接TC_IU的最大數(shù)目。如果控制單元110用計(jì)數(shù) 零進(jìn)行響應(yīng),則這意味著控制單元110不支持TC_IU的鏈?zhǔn)芥溄印T谝粋€(gè)示例性實(shí)施例中,PRLI接受消息600的頁中的剩余字段被保留和/或設(shè)置 為零(0)。例如,字0、字節(jié)2的位1到3以及字1和字2設(shè)置為零。字0的字節(jié)3被保留 并設(shè)置為零。字3的字節(jié)2的一部分也可以保留。在圖7中示出了錨控制塊(ACB) 700的示例性實(shí)施例,作為一種TCW。當(dāng)鏈中的第 一 TCff包括兩個(gè)TCW地址指針時(shí),圖1的通道IM可利用ACB 700鏈接到鏈中的第一 TCW, 諸如圖3的鏈接到TCW 304的ACB 302。ACB 700是當(dāng)一個(gè)開始子通道命令使用進(jìn)行分支的 多個(gè)TCW時(shí)使用的TCW的列表的第一控制塊。ACB 700沒有將TCCB驅(qū)動(dòng)到控制單元110。 當(dāng)通道IM接收到詢問I/O裝置112的動(dòng)機(jī)時(shí),通道IM保留ACB 700的地址以獲取詢問 TCW 地址 712。在圖7所示的示例性ACB 700中,等于二進(jìn)制“01”的格式字段702指示后面的是 ACB 700,而非二進(jìn)制值“00”表示的標(biāo)準(zhǔn)TCW。二進(jìn)制值“10”和“11”的格式字段702可以 保留用于未來的TCW/ACB格式。ACB 700可以包括保留位置704、706和708以用于可能的未來用途。第一 TCW地址字段710是用于執(zhí)行的鏈中的第一 TCW(例如,TCW304)的地址。 當(dāng)建立ACB 700時(shí),OS 103可以構(gòu)造第一 TCW地址字段710。詢問TCW地址字段712包含另 一個(gè)TCW的地址并且在取消子通道I/O指令的促使下由通道IM使用來詢問操作的狀態(tài)。圖7所示的ACB 700是如何能夠構(gòu)造ACB的一個(gè)例子。可以有其它構(gòu)造,其中,包 括另外的字段和/或不包括圖7所示的字段。在圖8中示出了傳輸控制字(TCW)SOO的示例性實(shí)施例。圖1的通道IM可以利 用TCW 800建立I/O操作并且TCW 800沒有被發(fā)送到控制單元110。圖8所示的TCW在單 個(gè)I/O操作內(nèi)提供輸入和輸出數(shù)據(jù)。TCW 800示出了能夠用于利用鏈?zhǔn)芥溄臃种У腡CW(例 如,圖3的TCff 304)的格式化。在圖8所示的示例性TCW 800中,等于二進(jìn)制“00”的格式字段802指示后面的是 標(biāo)準(zhǔn)TCW 800,其它值(例如,01、10、11)等同于TCW格式變型。TCW 800可以包括保留位 804用于可能的未來用途。TCff 800還包括標(biāo)記字段806。標(biāo)記字段806中的保留標(biāo)記可以設(shè)置為零。映射 到標(biāo)記字段806的標(biāo)記位的例子包括鏈?zhǔn)芥溄訕?biāo)記位、串行化標(biāo)記位、PCI標(biāo)記位、跳躍狀 態(tài)支持標(biāo)記位、TIDAL讀標(biāo)記、TCCB TIDAL標(biāo)記和TIDAL寫標(biāo)記。當(dāng)鏈?zhǔn)芥溄訕?biāo)記位設(shè)置為1時(shí),這向通道IM通知下一個(gè)TCW地址字段828要用 作為了繼續(xù)I/O程序而要執(zhí)行的下一個(gè)TCW。當(dāng)鏈?zhǔn)芥溄訕?biāo)記設(shè)置為零時(shí),計(jì)數(shù)器、定時(shí)器 和狀態(tài)跟蹤(例如,圖2的控制單元定時(shí)器206和/或通道子系統(tǒng)定時(shí)器21 能夠從一個(gè) TCCB繼續(xù)到下一個(gè)TCCB,諸如在TCCB 312和316或3M之間。如果串行化標(biāo)記位設(shè)置為 零,則對(duì)于成功執(zhí)行的中間TCCB,由控制單元110關(guān)閉交換,等效于關(guān)聯(lián)的傳輸響應(yīng)IU中的 FCP零狀態(tài)。如果串行化標(biāo)記位設(shè)置為1,則在傳輸響應(yīng)IU中發(fā)送狀態(tài)響應(yīng)。直到執(zhí)行了 鏈?zhǔn)芥溄油ǖ莱绦虻淖詈骉CCB或者直到控制單元110遇到提早結(jié)束條件,才傳送具有擴(kuò)展 狀態(tài)的全傳輸響應(yīng)IU。由于TCW 800保留在通道IM本地,所以鏈?zhǔn)芥溄訕?biāo)記的狀態(tài)能夠 被發(fā)送至控制單元110,作為(作為TC_IU的一部分的)TCCB中的鏈?zhǔn)芥溄覶CCB標(biāo)記。如果鏈?zhǔn)芥溄訕?biāo)記位設(shè)置為1并且串行化標(biāo)記位設(shè)置為1,則通道1 等待直到當(dāng) 前TCW完成,然后獲取下一個(gè)TCW并且將下一個(gè)TCCB發(fā)送到控制單元110(例如,TCff 304 到TCW 306或者310)。在一個(gè)示例性實(shí)施例中,如果軟件將另一個(gè)TCW附加到當(dāng)前TCW之 后或者如果對(duì)于當(dāng)前TCW和后面的TCW存在共同數(shù)據(jù)地址,則串行化標(biāo)記位設(shè)置為1。此 外,如果要執(zhí)行的下一個(gè)TCW/TCCB取決于來自I/O裝置112的結(jié)束裝置狀態(tài),則串行化標(biāo) 記位可以設(shè)置為1。當(dāng)串行化標(biāo)記位設(shè)置為1時(shí),TCCB中的串行化要求TCCB標(biāo)記位也設(shè)置 為1,從而向控制單元110通知在傳輸響應(yīng)IU中向通道124發(fā)送裝置狀態(tài)。如果設(shè)置了鏈?zhǔn)芥溄訕?biāo)記和PCI標(biāo)記,則當(dāng)TCW 800完成時(shí),通道IM產(chǎn)生中間狀 態(tài)中斷。這可以導(dǎo)致將關(guān)聯(lián)的子通道標(biāo)記為子通道活躍、裝置活躍和中間狀態(tài)未決。跳躍狀態(tài)支持標(biāo)記位指示對(duì)于TCW 800是否支持跳躍狀態(tài)。響應(yīng)于確定期望TCCB 中的DCW之間的非順序執(zhí)行,控制單元110可以發(fā)送作為在傳輸響應(yīng)IU中設(shè)置的通道結(jié)束 (CE)、裝置結(jié)束(DE)和狀態(tài)修改符(SM)的組合進(jìn)行編碼的跳躍狀態(tài)。SM指示控制單元110 檢測(cè)到已經(jīng)出現(xiàn)了狀態(tài)修改條件,以及應(yīng)該執(zhí)行非順序指令而非繼續(xù)進(jìn)行到下一個(gè)順序指 令。當(dāng)接收到通過CE、DE和SM的組合確定的跳躍狀態(tài)并且鏈?zhǔn)芥溄?、串行化和跳躍狀態(tài)支 持標(biāo)記位全都設(shè)置為1時(shí),TCW 800的字14和字15被用于獲取要執(zhí)行的下一個(gè)TCW(CE、DE和SM狀態(tài)字段830的下一個(gè)TCW地址)。如果跳躍狀態(tài)支持標(biāo)記位設(shè)置為零并且接收到跳 躍狀態(tài),則通道1 產(chǎn)生程序校驗(yàn)。在一個(gè)示例性實(shí)施例中,當(dāng)輸入數(shù)據(jù)地址字段818包含TIDAL的地址時(shí),TIDAL讀 標(biāo)記設(shè)置為1。如果TIDAL讀標(biāo)記設(shè)置為零,則輸入數(shù)據(jù)地址字段818包含數(shù)據(jù)地址。在 一個(gè)示例性實(shí)施例中,當(dāng)TCCB地址字段822包含TIDAL的地址時(shí),TCCB TIDAL標(biāo)記設(shè)置為 1。如果TCCB TIDAL標(biāo)記設(shè)置為零,則TCCB地址字段822對(duì)TCCB直接尋址。TCCB TIDAL 標(biāo)記允許操作系統(tǒng)軟件或管理程序?qū)δ芊謱右约霸谟脩敉ǖ莱绦蚯斑M(jìn)行附加。在一個(gè)示 例性實(shí)施例中,當(dāng)輸出數(shù)據(jù)地址字段816包含TIDAL的地址時(shí),TIDAL寫標(biāo)記設(shè)置為1。如 果TIDAL寫標(biāo)記設(shè)置為零,則輸出數(shù)據(jù)地址字段816包含數(shù)據(jù)地址。TCff 800還包括TCCB長(zhǎng)度字段810,TCCB長(zhǎng)度字段810間接表示TCCB的長(zhǎng)度并 且可用于確定TCCB的實(shí)際長(zhǎng)度。TCff 800中的讀/寫位812用于指示作為執(zhí)行TCW 800的結(jié)果是否正在讀和/或 寫數(shù)據(jù)。在一個(gè)示例性實(shí)施例中,讀/寫位812中的讀位設(shè)置為1以指示作為執(zhí)行TCW 800 的結(jié)果,輸入數(shù)據(jù)正在從I/O裝置112傳送到主機(jī)系統(tǒng)101中的系統(tǒng)存儲(chǔ)器(例如,主存儲(chǔ) 器102)。讀/寫位812中的寫位設(shè)置為1以指示作為執(zhí)行TCW 800的結(jié)果,輸出數(shù)據(jù)正在 從主機(jī)系統(tǒng)101中的系統(tǒng)存儲(chǔ)器(例如,主存儲(chǔ)器102)傳送到I/O裝置。輸出數(shù)據(jù)地址字段816包括輸出數(shù)據(jù)(如果有的話)的地址。如上所述,輸出數(shù) 據(jù)地址字段816的內(nèi)容可以是輸出數(shù)據(jù)的TIDAL的地址(例如,間接地址)或者輸出數(shù)據(jù) 的實(shí)際地址(例如,直接地址)。輸入數(shù)據(jù)地址字段818包括輸入數(shù)據(jù)(如果有的話)的地 址。如上所述,輸入數(shù)據(jù)地址字段818的內(nèi)容可以是輸入數(shù)據(jù)的TIDAL的地址或者輸入數(shù) 據(jù)的實(shí)際地址。TCff 800還包括傳輸狀態(tài)塊地址字段820。I/O操作的傳輸響應(yīng)IU中的完成狀態(tài) 的一部分(例如,擴(kuò)展?fàn)顟B(tài)部分)存儲(chǔ)在這個(gè)地址。TCW 800中的TCCB地址字段822包括 TCCB在系統(tǒng)存儲(chǔ)器中的地址。如上所述,TCCB是針對(duì)TCW 800執(zhí)行的DCW所駐留的控制 塊。另外如上所述,TCCB地址字段822的內(nèi)容可以是TCCB的TIDAL的地址或者TCCB的實(shí) 際地址。TCff 800中的輸出計(jì)數(shù)字段擬4指示針對(duì)輸出操作通過TCW/TCCB傳送的輸出數(shù) 據(jù)的量。在一個(gè)示例性實(shí)施例中,輸出計(jì)數(shù)字段擬4指定由要傳送的TCW(輸出數(shù)據(jù)地址 816)設(shè)計(jì)的輸出存儲(chǔ)區(qū)中的字節(jié)數(shù)。TCW 800中的輸入計(jì)數(shù)字段擬6指示針對(duì)輸入操作通 過TCW/TCCB傳送的輸入數(shù)據(jù)的量。在一個(gè)示例性實(shí)施例中,輸入計(jì)數(shù)字段擬6指定由要傳 送的TCW(輸入數(shù)據(jù)地址818)設(shè)計(jì)的輸入存儲(chǔ)區(qū)中的字節(jié)數(shù)。在一個(gè)示例性實(shí)施例中,TCW 800的字12和字13用作CE、DE狀態(tài)的下一個(gè)TCW地 址字段828,用于保持當(dāng)從I/O裝置112接收的狀態(tài)是CE和DE并且鏈?zhǔn)芥溄雍痛谢瘶?biāo)記 位設(shè)置為1時(shí)要執(zhí)行的下一個(gè)TCW的地址。例如,在圖3的具有鏈?zhǔn)芥溄臃种У腡CW通道 程序300中,CE、DE狀態(tài)的下一個(gè)TCW地址是TCW 304的字段擬8并且可以是TCW 306的 地址。如上所述,TCW 800的字14和字15可以是CE、DE和SM狀態(tài)的下一個(gè)TCW地址字 段830,保持當(dāng)從I/O裝置112接收的狀態(tài)是跳躍狀態(tài)(CE、DE、SM)并且鏈?zhǔn)芥溄?、串行化?跳躍狀態(tài)支持標(biāo)記位設(shè)置為1時(shí)要執(zhí)行的下一個(gè)TCW的地址。例如,在圖3的具有鏈?zhǔn)芥溄臃种У腡CW通道程序300中,CE、DE和SM狀態(tài)的下一個(gè)TCW地址是TCW 304的字段830 并且可以是TCW 310的地址。因此,根據(jù)從控制單元110返回的狀態(tài),通道鏈邏輯216能夠 在至少兩個(gè)TCW之間進(jìn)行選擇以確定用于執(zhí)行的下一個(gè)TCW。下一個(gè)TCW地址字段828和 830可以指向作為通道程序的一部分的任何TCW,包括循環(huán)返回到同一 TCW以繼續(xù)執(zhí)行命令 序列。圖8所示的TCW 800是如何能夠構(gòu)造TCW的一個(gè)例子??梢杂衅渌鼧?gòu)造,其中,包 括另外的字段和/或不包括圖8所示的字段。圖9示出了從通道子系統(tǒng)108傳送至控制單元110以執(zhí)行TCW通道程序的命令消 息900(例如,傳輸命令I(lǐng)U)的一個(gè)例子。命令消息900示出了能夠用于各種TC_IU的格式 化。命令消息900包括首標(biāo)902、傳輸命令首標(biāo)(TCH)904、傳輸命令區(qū)域首標(biāo)(TCAH)906、 傳輸命令區(qū)域(TCA) 908和傳輸命令區(qū)域尾標(biāo)(TCAT) 910。在一個(gè)示例性實(shí)施例中,圖3的 TCCB 312、316、320 和 324 利用在 TCAH906、TCA 908 和 TCAT 910 中所示的格式化。首標(biāo)902可以包括作為地址首標(biāo)912的多個(gè)字,用于定義命令消息900中的最高 等級(jí)的首標(biāo)。首標(biāo)902可以包括諸如通道和控制單元圖像ID和裝置地址的信息。TCH 904包括序列號(hào)913。序列號(hào)913向控制單元110通知執(zhí)行都是以I/O裝置 (例如,I/O裝置112)為目標(biāo)的同一通道I/O操作的一部分的多個(gè)命令消息900的順序。 對(duì)于每次啟動(dòng)I/O裝置112,序列號(hào)913在第一 TC_IU中從(Olh)開始,這與對(duì)于最后一次 啟動(dòng)同一 I/O裝置112序列號(hào)913結(jié)束的值無關(guān)。如果I/O操作僅包含一個(gè)TCW/TCCB,則 序列號(hào)913的值設(shè)置為零。鏈?zhǔn)芥溄釉谝黄鸬腡C_IU按序列號(hào)的順序執(zhí)行,即使沒有按順 序在控制單元110接收到這些TC_IU。TCH 904包括任務(wù)信息914,任務(wù)信息914可以設(shè)置成保留值(例如,零)而在傳 輸模式下操作。TCH 904還包括Ll長(zhǎng)度916和讀/寫字段918。Ll長(zhǎng)度916以字?jǐn)?shù)+1來 定義TCA 908的長(zhǎng)度。Ll長(zhǎng)度916能夠用于限制并定義TCA 908的大小。讀/寫字段918 定義在命令消息900中是正在傳送讀數(shù)據(jù)、寫數(shù)據(jù)還是沒有傳送數(shù)據(jù),其中,讀是從控制單 元110到通道子系統(tǒng)108的傳送。TCAH 906包括格式字段920和控制字段922。格式字段920和控制字段922可以 分別設(shè)置為如SPC-4定義的固定值(例如,十六進(jìn)制的7! 和零),以指示使用了可變長(zhǎng)度 格式。在“SCSI PrimaryCommands-4(SPC-4) Project T10/1731-D, Rev 11, INCITS(May 2007)中進(jìn)一步描述了 SPC-4,該文獻(xiàn)的全部?jī)?nèi)容通過引用并入本文。TCAH906還包括保留 字段924和926、TCCB標(biāo)記927以及L2長(zhǎng)度928。TCCB標(biāo)記927向控制單元110通知命令消息900 (當(dāng)前TC_IU)的特性。TCCB標(biāo) 記927可以包括鏈?zhǔn)芥溄覶CCB標(biāo)記位和串行化要求標(biāo)記位。設(shè)置為1的鏈?zhǔn)芥溄覶CCB標(biāo) 記向控制單元110通知在當(dāng)前TC_IU后面還有另一個(gè)TC_IU,其是同一 I/O操作的一部分。 當(dāng)鏈?zhǔn)芥溄覶CCB標(biāo)記設(shè)置為1時(shí),計(jì)數(shù)器、定時(shí)器和狀態(tài)跟蹤(例如,圖2的控制單元定時(shí) 器206和/或通道子系統(tǒng)定時(shí)器21 能夠從一個(gè)TCCB繼續(xù)到下一個(gè)TCCB,并且對(duì)于這個(gè) TC_IU,在TCA 908中的最后DCW(例如,DCff 946)中CC位設(shè)置為1。如果串行化要求標(biāo)記 位沒有設(shè)置為1,則當(dāng)成功執(zhí)行了 TC_IU時(shí)(等效于FCP零狀態(tài))可以關(guān)閉交換,這等同于 僅通道結(jié)束(CE)、裝置結(jié)束(DE)狀態(tài)。如果串行化要求標(biāo)記位設(shè)置為1,則如在本文中進(jìn) 一步所述在響應(yīng)IU中發(fā)送裝置狀態(tài)。直到執(zhí)行了 TCW通道程序的最后TC_IU或者針對(duì)結(jié)束了 TCW通道程序的TC_IU,才傳送擴(kuò)展?fàn)顟B(tài)。通道IM基于TCW800中的串行化標(biāo)記位和 TC_IU流化計(jì)數(shù)的值(能夠在圖2的通道子系統(tǒng)寄存器214中進(jìn)行跟蹤)向控制單元110 發(fā)送下一個(gè)TC_IU。如果串行化標(biāo)記設(shè)置為零,則通道IM發(fā)送TC_IU直到最大鏈接命令 (例如,最大鏈接命令612),并且然后當(dāng)每個(gè)前一 TC_IU完成時(shí)發(fā)送隨后的TC_IU。如果串 行化標(biāo)記位設(shè)置為1,則通道IM等待直到接收到發(fā)送到控制單元110的最后TC_IU的狀 態(tài),然后發(fā)送下一個(gè)TC_IU。如果鏈?zhǔn)芥溄覶CCB標(biāo)記位沒有設(shè)置為1,則串行化要求標(biāo)記位沒有意義。串行化 要求標(biāo)記位向控制單元110通知即使鏈?zhǔn)芥溄覶CCB標(biāo)記位設(shè)置為1,直到在8字傳輸響 應(yīng)IU中將裝置狀態(tài)發(fā)送至通道124,控制單元110才會(huì)看見下一個(gè)TC_IU。然而,對(duì)于這種 情況,在傳輸響應(yīng)IU中不發(fā)送擴(kuò)展?fàn)顟B(tài)。L2長(zhǎng)度擬8還稱作傳輸命令區(qū)域長(zhǎng)度(TCAL)并且可以表示命令消息900中這個(gè) 位置之后的字節(jié)數(shù)。L2長(zhǎng)度擬8限制TCA 908的大小。TCAH 906還包括服務(wù)動(dòng)作碼930、 保留字段932、優(yōu)先級(jí)934和保留字段936。服務(wù)動(dòng)作碼930定義用于TCA 908的DCW的類 型??梢耘c在FC-SB-3中定義的FICON命令首標(biāo)的優(yōu)先級(jí)字節(jié)等同地設(shè)置優(yōu)先級(jí)934。TCA 908 包括 DCWl 和控制數(shù)據(jù) 940、DCW2942、DCW3944 和 DCW4946。DCffl 和控制數(shù) 據(jù)940包括DCW字段,諸如命令948、標(biāo)記字段950、保留字段952、控制數(shù)據(jù)(⑶)計(jì)數(shù)954 和數(shù)據(jù)字節(jié)計(jì)數(shù)956。命令948可以與CCW命令字節(jié)等效,但是直接由控制單元110而非 由通道子系統(tǒng)108進(jìn)行解釋。標(biāo)記字段950包括保留位以及分配給特定功能的一個(gè)或多個(gè) 位,諸如指示在TCA 908中是否存在附加DCW作為命令鏈的一部分。標(biāo)記字段950還可以 包括命令鏈(CC)標(biāo)記位。CC標(biāo)記位指示到TCA 908中的下一個(gè)DCW的命令鏈。設(shè)置為零的CC標(biāo)記位意味 著關(guān)聯(lián)的DCW是程序的最后DCW。如果在TCCB標(biāo)記字段927中設(shè)置了鏈?zhǔn)芥溄覶CCB標(biāo)記 并且在TCW 800中的標(biāo)記字段806中設(shè)置了鏈?zhǔn)芥溄訕?biāo)記位,則能夠在TCA 908的最后DCW 中設(shè)置CC標(biāo)記位。⑶計(jì)數(shù)卯4是控制數(shù)據(jù)958的字節(jié)計(jì)數(shù)。⑶計(jì)數(shù)卯4可以一直填充至下一個(gè)4 字節(jié)邊界,從而隨后的DCW在4字節(jié)邊界上開始。數(shù)據(jù)字節(jié)計(jì)數(shù)956是無填充的數(shù)據(jù)的4 字節(jié)計(jì)數(shù)(例如,用戶數(shù)據(jù))。當(dāng)CD計(jì)數(shù)%4不是零時(shí)存在控制數(shù)據(jù)958。在示例性命令 消息900中,DCW^942、DCW3944和DCW4946包含與DCWl和控制數(shù)據(jù)940基本相似的字段。 例如,按照與命令948相似的方式對(duì)命令960、970和980進(jìn)行格式化。另外,標(biāo)記字段962、 972和982的格式化與標(biāo)記字段950相似。此外,⑶計(jì)數(shù)966、976和986的格式化與⑶計(jì) 數(shù)%4相似,并且數(shù)據(jù)字節(jié)計(jì)數(shù)968、978和988的格式化與數(shù)據(jù)字節(jié)計(jì)數(shù)956相似。盡管在 命令消息900中僅僅示出了四個(gè)DCW,包括一個(gè)具有控制數(shù)據(jù)的DCW( S卩,DCffl和控制數(shù)據(jù) 940),但是應(yīng)該明白在命令消息900中可以包括具有和不具有控制數(shù)據(jù)的不同數(shù)目的DCW, 包括單個(gè)DCW。TCAT 910包括在整個(gè)命令消息900上計(jì)算的縱向冗余校驗(yàn)(LRC)字990。通過對(duì) 初始種子值與包括在LRC計(jì)算中的每個(gè)字段連續(xù)進(jìn)行異或運(yùn)算可以產(chǎn)生LRC字990。TCAT 910還包括傳輸數(shù)據(jù)字節(jié)計(jì)數(shù)992,用于指示對(duì)于讀或?qū)慖/O操作進(jìn)行傳送的字節(jié)的總數(shù)。 如果在讀/寫字段918中讀和寫位都是活躍的,則傳輸數(shù)據(jù)字節(jié)計(jì)數(shù)992用于寫數(shù)據(jù),并且 TCAT 910中的雙向讀數(shù)據(jù)長(zhǎng)度994是讀傳輸數(shù)據(jù)字節(jié)計(jì)數(shù)。
當(dāng)多個(gè)TCW/TCCB被鏈接以形成鏈?zhǔn)芥溄油ǖ莱绦驎r(shí),可以如下處理不尋常結(jié)束 條件。對(duì)于鏈?zhǔn)芥溄覶CW通道程序,暫停子通道命令使得對(duì)于I/O裝置112所有活躍交換 中止并且使得子通道向OS 103返回主要(primary)、次要(secondary)和警告狀態(tài)。鏈?zhǔn)?鏈接TCW通道程序的清除子通道命令可以使得對(duì)于I/O裝置112所有活躍交換中止,然后 向I/O裝置112發(fā)送選擇性復(fù)位命令。對(duì)于通道124向控制單元110發(fā)送鏈?zhǔn)芥溄釉谝黄鸬亩鄠€(gè)TCCB (在TC_IU中)的 情況,如果控制單元Iio不能夠執(zhí)行TCCB中的任何一個(gè),則控制單元110能夠通過對(duì)于提 早結(jié)束的TCCB的交換,發(fā)送終止結(jié)束狀態(tài)、忙狀態(tài)(僅僅能夠響應(yīng)于通道程序的第一 TC_IU 而發(fā)送)或重試狀態(tài)以及狀態(tài)確認(rèn)。控制單元110還關(guān)閉序列號(hào)大于發(fā)送了終止?fàn)顟B(tài)的交 換的序列號(hào)的、同一 I/O操作的其它未完成交換。當(dāng)通道IM通過針對(duì)確認(rèn)請(qǐng)求的請(qǐng)求檢 測(cè)到終止結(jié)束狀態(tài)IU時(shí),通道IM停止針對(duì)該操作向控制單元110發(fā)送新TCCB。在超時(shí)時(shí) 間(例如,100毫秒)后沒有關(guān)閉的該I/O操作的所有其它交換被通道124中止。當(dāng)針對(duì)該 I/O操作關(guān)閉了所有其它交換時(shí),通道IM發(fā)送確認(rèn)消息,這關(guān)閉最后的交換。如果為了向控制單元110發(fā)送鏈?zhǔn)芥溄釉谝黄鸬腡CCB而打開的許多交換之中的 一個(gè)交換丟失,則通道1 對(duì)該交換設(shè)置超時(shí)并且向控制單元Iio發(fā)送讀交換簡(jiǎn)要(Read Exchange Concise, REC)以詢問該交換。如果控制單元110向通道IM通知它沒有該交換, 則通道124中止針對(duì)該I/O操作的與控制單元110的未完成交換。圖10示出了用于在通道1000與控制單元1002之間進(jìn)行通信以執(zhí)行圖3的具有 鏈?zhǔn)芥溄臃种У腡CW通道程序的鏈接協(xié)議的一個(gè)實(shí)施例,其中,通道1000和控制單元1002 是圖1的通道1 和控制單元110的實(shí)施例。一旦通道IM和控制單元110建立了支持傳 輸模式并且建立了最大數(shù)目的鏈接命令,則能夠執(zhí)行具有鏈?zhǔn)芥溄拥腡CW通道程序。OS (例 如,圖1的OS 103)建立了圖3所示的ACB 302和TCW304、306、308和310以及關(guān)聯(lián)控制塊 TCCB 312、316、320和324,并且通過指向ACB 302的操作請(qǐng)求塊中的地址執(zhí)行開始子通道 命令。ACB 302提供了指向鏈中的第一 TCW的指針(例如,指向TCW 304的第一 TCW地址字 段710),并且還是當(dāng)通道1000被促使執(zhí)行詢問時(shí)通道1000為了獲得詢問地址(例如,詢 問TCW地址字段71 而重新獲取的控制塊。在這個(gè)例子中假設(shè)在TCW 304和306中鏈?zhǔn)?鏈接標(biāo)記位設(shè)置為1并且在TCW 304中串行化標(biāo)記位設(shè)置為1。當(dāng)嘗試獲取第一 TCW時(shí),通道1000基于格式字段702發(fā)現(xiàn)它實(shí)際上是ACB (ACB 302)。通道1000記住ACB 302的地址并且使用ACB 302中的第一 TCW地址字段710獲取 TCff 304 和關(guān)聯(lián)的 TCCB312。通道1000在TC_IU 1004中發(fā)送TCCB 312,打開序列號(hào)為1的與控制單元1002的 交換A。由于在TCW 304中串行化標(biāo)記位和鏈?zhǔn)芥溄訕?biāo)記位設(shè)置為1,所以通道1000直到 對(duì)于TC_IU 1004從控制單元1002接收到狀態(tài)(例如,I/O裝置112的狀態(tài)),才會(huì)獲取下 一個(gè)TCW。對(duì)于這個(gè)例子,在TCW 304中以及在TCCB 312中,讀和寫位都被設(shè)置為零,這告 訴通道1000和控制單元1002 對(duì)于TCW 304/TCCB 312,將不傳送用戶數(shù)據(jù)。在控制單元1002,在TC_IU 1004中鏈?zhǔn)芥溄覶CCB標(biāo)記位設(shè)置為1,向控制單元 1002通知序列號(hào)比TC_IU 1004的序列號(hào)大1的另一個(gè)TC IU是這個(gè)I/O操作的一部分。 串行化要求標(biāo)記位也設(shè)置為1,向控制單元1002通知直到對(duì)于TC_IU 1004,裝置狀態(tài)被發(fā) 送到通道1000,通道1000才會(huì)發(fā)送下一個(gè)TC_IU。
當(dāng)控制單元1002完成在I/O裝置112執(zhí)行TC_IU 1004時(shí),它發(fā)送32字節(jié)傳輸響 應(yīng)IU 1006,該傳輸響應(yīng)IU 1006包括還關(guān)閉交換A并且向通道1000通知TC_IU 1004已 經(jīng)完成的裝置狀態(tài)。對(duì)于這個(gè)例子,假定裝置狀態(tài)是CE、DE和SM(跳躍狀態(tài)),這使得通道 1000使用TCW 304中的CE、DE和SM狀態(tài)字段830的下一個(gè)TCW地址獲取圖3的TCW 310。通道1000在TC_IU 1008中向控制單元1002發(fā)送TCCB 324用于打開序列號(hào)為2 的交換B??刂茊卧贗/O裝置112執(zhí)行TC_IU 1008并且將通過TC_IU 1008中的讀DCW 命令從I/O裝置112讀取的數(shù)據(jù)發(fā)送到通道1000作為交換B上的數(shù)據(jù)IU 1010。當(dāng)控制單 元1002完成TC_IU 1008時(shí),它發(fā)送完成傳輸響應(yīng)IU 1012,該完成傳輸響應(yīng)IU1012包括擴(kuò) 展?fàn)顟B(tài),該擴(kuò)展?fàn)顟B(tài)包括48到64 (或更多)字節(jié)并關(guān)閉交換B并且向通道1000通知整個(gè) I/O操作已經(jīng)完成。通道1000向OS (例如,OS 103)呈現(xiàn)主要狀態(tài),向OS通知I/O操作已 經(jīng)完成。在一個(gè)示例性實(shí)施例中,擴(kuò)展?fàn)顟B(tài)包括使用圖2的控制單元定時(shí)器206計(jì)算的能 夠在TC_IU(諸如TC_IU 1004和1008)之間持續(xù)的各種定時(shí)參數(shù)。例如,擴(kuò)展?fàn)顟B(tài)可以包 括總裝置時(shí)間參數(shù)、延遲時(shí)間參數(shù)、排隊(duì)時(shí)間參數(shù)、裝置忙時(shí)間參數(shù)、裝置僅活躍時(shí)間參數(shù) 和附加裝置傳感數(shù)據(jù)??傃b置時(shí)間參數(shù)是從當(dāng)控制單元1002接收到TC_IU 1004時(shí)到針對(duì) 該I/O操作發(fā)送傳輸響應(yīng)IU 1012的消逝時(shí)間。延遲時(shí)間參數(shù)指示控制單元延遲時(shí)間。這 是當(dāng)沒有與通道1000執(zhí)行通信時(shí)與I/O裝置(例如,I/O裝置112)工作的控制單元1002 累積的時(shí)間。排隊(duì)時(shí)間參數(shù)是I/O操作在I/O裝置處排隊(duì)的時(shí)間,但是不包括在同一系統(tǒng) 或另一個(gè)系統(tǒng)上的不同0S(例如,OS 103)的控制之下由另一個(gè)控制通道1000保留I/O裝 置的裝置忙時(shí)間的排隊(duì)時(shí)間。裝置忙時(shí)間參數(shù)是TC_IU在控制單元1002處排隊(duì)等待由于 在同一系統(tǒng)或另一個(gè)系統(tǒng)上的不同OS的控制之下由另一個(gè)通道1000保留I/O裝置導(dǎo)致的 裝置忙的時(shí)間。裝置僅活躍時(shí)間參數(shù)是當(dāng)控制單元1002保持CE直到DE可用時(shí)在控制單 元1002處在CE與DE之間的消逝時(shí)間。附加裝置傳感數(shù)據(jù)是響應(yīng)于裝置狀態(tài)中的活躍單 元校驗(yàn)(UC)位,控制單元1002有條件提供的補(bǔ)充狀態(tài)。圖11示出了根據(jù)一個(gè)示例性實(shí)施例的在通道子系統(tǒng)提供TCW通道程序鏈?zhǔn)芥溄?分支的過程1100,并且參照?qǐng)D1的I/O處理系統(tǒng)100和隨后的附圖進(jìn)行描述。還結(jié)合圖12 所示的過程1200描述過程1100,其中,過程1200用于在控制單元(例如在圖1的通道子系 統(tǒng)108的通道124與控制單元110之間)提供TCW通道程序鏈?zhǔn)芥溄臃种АT谝粋€(gè)示例性 實(shí)施例中,圖2的通道鏈邏輯216管理與用于通道IM的鏈?zhǔn)芥溄臃种шP(guān)聯(lián)的處理,控制單 元鏈邏輯204管理與用于控制單元110的鏈?zhǔn)芥溄臃种шP(guān)聯(lián)的處理。在塊1102,通道子系 統(tǒng)108的通道IM在命令消息中構(gòu)造鏈?zhǔn)芥溄訕?biāo)記以指示在該命令消息之后跟著隨后的命 令消息用于執(zhí)行I/O操作。在塊1104,通道子系統(tǒng)108的通道IM在命令消息中構(gòu)造串行 化標(biāo)記以請(qǐng)求返回裝置狀態(tài),從而選擇隨后的命令消息。在塊1106,通道子系統(tǒng)108的通道 124將該命令消息從通道子系統(tǒng)108的通道IM發(fā)送到控制單元110。在塊1202,控制單元110從通道子系統(tǒng)108的通道IM接收命令消息以執(zhí)行I/O 操作。例如,該命令消息可以是如圖9所示格式化的圖10的TC_IU 1004。在塊1204中,控制單元110讀取命令消息中的鏈?zhǔn)芥溄覶CCB標(biāo)記。鏈?zhǔn)芥溄覶CCB 標(biāo)記指示在該命令消息之后跟著該I/O操作的隨后命令消息,諸如圖10的TC_IU 1008在 TC_IU 1004 之后。
在塊1206,控制單元110讀取命令消息中的串行化標(biāo)記。該串行化標(biāo)記請(qǐng)求將裝 置狀態(tài)返回到通道子系統(tǒng)108的通道124以選擇隨后的命令消息。在塊1208,控制單元110執(zhí)行命令消息中的一個(gè)或多個(gè)命令。所述一個(gè)或多個(gè)命 令可以是DCW,諸如圖9的DCW 940到946,請(qǐng)求對(duì)I/O裝置112讀或?qū)憯?shù)據(jù)??刂茊卧?10 響應(yīng)于執(zhí)行所述一個(gè)或多個(gè)命令,接收裝置狀態(tài)。該裝置狀態(tài)可以包括CE、DE和/或SM, 其中,CE、DE和SM的組合是跳躍狀態(tài)。在塊1210,控制單元110響應(yīng)于結(jié)合串行化標(biāo)記執(zhí)行所述一個(gè)或多個(gè)命令,向通 道子系統(tǒng)108的通道IM發(fā)送裝置狀態(tài)。該裝置狀態(tài)可以在無擴(kuò)展?fàn)顟B(tài)的傳輸響應(yīng)IU(例 如,圖10的傳輸響應(yīng)IU 1006)中發(fā)送。返回圖11,在塊1108,通道子系統(tǒng)108的通道124響應(yīng)于發(fā)送命令消息而接收裝 置狀態(tài)。在塊1110,通道子系統(tǒng)108的通道IM響應(yīng)于接收的裝置狀態(tài)而選擇隨后的命令消 息。通道IM檢查在傳輸響應(yīng)IU中接收的裝置狀態(tài)并且確定對(duì)于保持隨后的命令的TCCB, 訪問哪個(gè)TCW。如果接收的裝置狀態(tài)包括CE和DE,則通道124讀取當(dāng)前TCW的CE、DE狀態(tài) 字段擬8的下一個(gè)TCW地址,以確定作為隨后的命令消息的下一個(gè)TCW/TCCB,該隨后的命令 消息包括與當(dāng)前命令連續(xù)的隨后一組一個(gè)或多個(gè)命令。如果接收的裝置狀態(tài)包括CE、DE和 SM,則通道IM讀取當(dāng)前TCW的CE、DE和SM狀態(tài)字段830的下一個(gè)TCW地址,以確定作為 隨后的命令消息的下一個(gè)TCW/TCCB,該隨后的命令消息包括不與當(dāng)前命令連續(xù)的隨后一組 一個(gè)或多個(gè)命令。例如,如果在執(zhí)行TCCB 312中的命令后設(shè)置了 CE、DE和SM,則通道IM 可以選擇TCW 310和TCCB 324作為下一個(gè)TCW/TCCB ;然而,如果在執(zhí)行了 TCCB 312中的 命令后沒有設(shè)置SM,則通道IM能夠選擇TCW 306和TCCB 316作為下一個(gè)TCW/TCCB。在 塊1112,通道子系統(tǒng)108的通道IM將選擇的隨后命令消息從通道子系統(tǒng)108的通道IM 發(fā)送到控制單元110。能夠在控制單元110接收另外的隨后消息作為鏈?zhǔn)芥溄油ǖ莱绦虻囊徊糠???刂?單元110能夠讀取命令消息中的鏈?zhǔn)芥溄訕?biāo)記(例如,圖9的TCCB標(biāo)記927中的鏈?zhǔn)芥溄?TCCB標(biāo)記)以確定是否預(yù)計(jì)在第一命令消息之后跟著隨后的命令消息跟隨作為該I/O操作 的一部分。響應(yīng)于確定預(yù)計(jì)到隨后的命令消息并且當(dāng)執(zhí)行接收的所述一個(gè)或多個(gè)命令時(shí), 控制單元110可以持續(xù)運(yùn)行與I/O操作關(guān)聯(lián)的計(jì)數(shù)器以跨越多個(gè)命令消息(例如,控制單 元定時(shí)器206),并且發(fā)送無擴(kuò)展?fàn)顟B(tài)的傳輸響應(yīng)消息。能夠以相似方式對(duì)接收的每個(gè)命令 消息進(jìn)行分析以確定是否預(yù)計(jì)另外的命令消息作為鏈接的I/O操作的一部分??刂茊卧?110接收包括隨后的一組一個(gè)或多個(gè)命令的隨后命令消息,并且檢查與接收的隨后一個(gè)或 多個(gè)命令中的每個(gè)命令關(guān)聯(lián)的命令鏈標(biāo)記(例如,DCff標(biāo)記950、962、972和/或982的CC 位)以定位最后鏈?zhǔn)芥溄用???刂茊卧?10響應(yīng)于定位并執(zhí)行最后鏈?zhǔn)芥溄用疃l(fā)送 針對(duì)該I/O操作的具有擴(kuò)展?fàn)顟B(tài)的響應(yīng)消息,在這種情況下,隨后命令消息是鏈的最后命 令消息。作為無擴(kuò)展?fàn)顟B(tài)的傳輸響應(yīng)消息進(jìn)行傳送的較短狀態(tài)消息能夠向通道1 提供在 最后命令消息之前在執(zhí)行每個(gè)命令消息后的中間狀態(tài)。當(dāng)執(zhí)行了最后命令消息的命令時(shí), 發(fā)送擴(kuò)展?fàn)顟B(tài),該擴(kuò)展?fàn)顟B(tài)提供整個(gè)I/O操作的附加信息和狀態(tài)。控制單元110還可以處理其它錯(cuò)誤條件。例如,控制單元110可以確定與通信交 換關(guān)聯(lián)的一個(gè)或多個(gè)命令不能夠執(zhí)行。控制單元110能夠通過向通道子系統(tǒng)108的通道 124發(fā)送用于指示不能夠執(zhí)行的終止?fàn)顟B(tài)消息進(jìn)行響應(yīng)??刂茊卧?10關(guān)閉序列號(hào)大于與所述一個(gè)或多個(gè)不可執(zhí)行命令關(guān)聯(lián)的序列號(hào)的打開通信交換。例如,如果控制單元110接 收到關(guān)于交換A、B、C和D的序列號(hào)1、2、3和4并且在執(zhí)行與序列號(hào)2關(guān)聯(lián)的命令時(shí)出現(xiàn)錯(cuò) 誤,則控制單元110能夠通過在交換B上請(qǐng)求確認(rèn)用擴(kuò)展?fàn)顟B(tài)將關(guān)于交換B的錯(cuò)誤通知通 道124,并且關(guān)閉交換C和D。在通道IM看見交換A、C和D已經(jīng)關(guān)閉后,它將通過對(duì)交換 B的確認(rèn)關(guān)閉交換B (假定在序列1命令成功完成后A關(guān)閉)。示例性實(shí)施例的技術(shù)效果包括用條件鏈接將多個(gè)TCW和TCCB鏈接在一起以形成 具有跨越I/O操作的多個(gè)TCW和TCCB的鏈?zhǔn)芥溄臃种У膫鬏斂刂仆ǖ莱绦颉Mǖ雷x取用 于對(duì)約束進(jìn)行格式化的TCW內(nèi)容以確定是否TCW實(shí)際上是ACB,以及響應(yīng)于從控制單元返回 的狀態(tài)進(jìn)一步確定訪問哪個(gè)地址。通道可以向控制單元通知隨后命令消息被鏈?zhǔn)芥溄拥?當(dāng)前命令消息,并且響應(yīng)于控制單元返回與當(dāng)前命令消息關(guān)聯(lián)的裝置狀態(tài),通道將選擇特 定的隨后命令消息。如果通道接收到跳躍狀態(tài),則它能夠獲取非連續(xù)TCW和TCCB,而非前進(jìn) 至鏈中的下一個(gè)緊鄰的TCW和TCCB。非連續(xù)TCW/TCCB可以分支返回到當(dāng)前TCW,在可順序 到達(dá)的同一鏈路徑中跳到前面或者重新定向到在通道程序的順序前進(jìn)期間本來不會(huì)訪問 的不同鏈路徑。在傳輸控制通道程序正在執(zhí)行但沒有完全完成時(shí),通道還可以發(fā)送周期性 狀態(tài)中斷。周期性狀態(tài)使得主機(jī)能夠確認(rèn)已經(jīng)執(zhí)行了多個(gè)命令并且由此能夠釋放或重用與 已經(jīng)完成的命令關(guān)聯(lián)的緩沖器,而不用等待全部程序完成。能夠以軟件、固件、硬件或者它們的某組合實(shí)現(xiàn)本發(fā)明的能力。本領(lǐng)域技術(shù)人員應(yīng)該明白,本發(fā)明可以實(shí)施為一種系統(tǒng)、方法或計(jì)算機(jī)程序產(chǎn)品。 因此,本發(fā)明可以采取完全硬件實(shí)施例、完全軟件實(shí)施例(包括固件、駐留軟件、微代碼等) 或者組合軟件和硬件方面的實(shí)施例的形式,它們都可被統(tǒng)稱為“電路”、“模塊”或“系統(tǒng)”。 另外,本發(fā)明可以采用計(jì)算機(jī)程序產(chǎn)品的形式,可以在任何有形介質(zhì)內(nèi)實(shí)施該計(jì)算機(jī)程序 產(chǎn)品,即,將計(jì)算機(jī)可用程序代碼實(shí)現(xiàn)在該介質(zhì)中。一個(gè)例子包括計(jì)算機(jī)可用介質(zhì)1302上 的如圖13所示的計(jì)算機(jī)程序產(chǎn)品1300,該計(jì)算機(jī)可用介質(zhì)1302具有計(jì)算機(jī)程序代碼邏輯 1304,該計(jì)算機(jī)程序代碼邏輯1304包含在作為制造品的有形介質(zhì)中實(shí)施的指令。可以存在 多個(gè)計(jì)算機(jī)程序產(chǎn)品1300,每個(gè)計(jì)算機(jī)程序產(chǎn)品1300用于在單獨(dú)的處理電路上執(zhí)行功能 過程。例如,圖11和圖12的過程1100和1200能夠?qū)嵤閱为?dú)的計(jì)算機(jī)程序產(chǎn)品1300上 的計(jì)算機(jī)程序代碼邏輯1304,其中,一個(gè)可以在圖1的主機(jī)系統(tǒng)101上執(zhí)行,另一個(gè)可以在 圖1的一個(gè)或多個(gè)控制單元110上執(zhí)行?;蛘?,過程1100和1200可以作為計(jì)算機(jī)可執(zhí)行 代碼存儲(chǔ)在單個(gè)計(jì)算機(jī)程序產(chǎn)品1300上??梢岳靡粋€(gè)或多個(gè)計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)的任何組合。計(jì)算機(jī)可用或計(jì) 算機(jī)可讀介質(zhì)例如可以是但不限于電子、磁、光、電磁、紅外或半導(dǎo)體系統(tǒng)、設(shè)備、裝置或傳 播介質(zhì)。計(jì)算機(jī)可讀介質(zhì)的更具體的例子(非窮盡性列表)將包括具有一個(gè)或多個(gè)導(dǎo)線 的電連接、便攜式計(jì)算機(jī)磁盤、硬盤、隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可 編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、便攜式壓縮盤只讀存儲(chǔ)器(⑶ROM)、光存儲(chǔ)裝置、例 如支持互聯(lián)網(wǎng)或內(nèi)聯(lián)網(wǎng)的傳輸介質(zhì)、或者磁存儲(chǔ)裝置。注意,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì) 甚至可以是其上印刷有程序的紙或另一種合適介質(zhì),因?yàn)槔缒軌蚪?jīng)由對(duì)紙或其它介質(zhì)的 光學(xué)掃描以電子方式捕獲程序,然后進(jìn)行編譯、解釋或以另外的合適方式處理(如果需要 的話),然后存儲(chǔ)在計(jì)算機(jī)存儲(chǔ)器中。在本文的上下文中,計(jì)算機(jī)可用或計(jì)算機(jī)可讀介質(zhì)可 以是能夠包含、存儲(chǔ)、通信、傳播或傳輸由指令執(zhí)行系統(tǒng)、設(shè)備或裝置使用或結(jié)合其使用的程序的任何介質(zhì)。計(jì)算機(jī)可用介質(zhì)可以包括傳播數(shù)據(jù)信號(hào),其中,計(jì)算機(jī)可用程序代碼或者 在基帶內(nèi)或者作為載波的一部分利用該傳播數(shù)據(jù)信號(hào)進(jìn)行實(shí)施??梢允褂萌魏吻‘?dāng)介質(zhì) (包括但不限于無線、有線、光纖、RF等)發(fā)送計(jì)算機(jī)可用程序代碼。可以通過一個(gè)或多個(gè)編程語言的任何組合編寫用于執(zhí)行本發(fā)明的操作的計(jì)算機(jī) 程序代碼,這些編程語言包括面向?qū)ο缶幊陶Z言(例如,Java、Smalltalk、C++等)和傳統(tǒng) 的過程編程語言(例如,“C”編程語言或者類似編程語言)。圖13的計(jì)算機(jī)程序代碼邏輯 1304表示程序代碼的實(shí)施例。該程序代碼可以作為獨(dú)立軟件包完全在用戶的計(jì)算機(jī)上、部 分在用戶的計(jì)算機(jī)上執(zhí)行、部分在用戶的計(jì)算機(jī)且部分在遠(yuǎn)程計(jì)算機(jī)上或者完全在遠(yuǎn)程計(jì) 算機(jī)或服務(wù)器上執(zhí)行。在后者情況下,遠(yuǎn)程計(jì)算機(jī)可以通過任何類型的網(wǎng)絡(luò)(包括局域網(wǎng) (LAN)或廣域網(wǎng)(WAN))連接到用戶的計(jì)算機(jī),或者可以(例如,使用互聯(lián)網(wǎng)服務(wù)提供商通過 互聯(lián)網(wǎng))連接到外部計(jì)算機(jī)。參照根據(jù)本發(fā)明的實(shí)施例的方法、設(shè)備(系統(tǒng))和計(jì)算機(jī)程序產(chǎn)品的流程圖和/ 或框圖描述了本發(fā)明。應(yīng)該明白,流程圖和/或框圖的每個(gè)塊以及流程圖和/或框圖中的 塊的組合能夠由計(jì)算機(jī)程序指令執(zhí)行。這些計(jì)算機(jī)程序指令可以提供給通用計(jì)算機(jī)、專用 計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備的處理器以生成機(jī)器,從而經(jīng)由計(jì)算機(jī)或其它可編程數(shù) 據(jù)處理設(shè)備的處理器執(zhí)行的指令創(chuàng)建用于實(shí)現(xiàn)在流程圖和/或框圖塊中指定的功能/動(dòng)作 的裝置。這些計(jì)算機(jī)程序指令還可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中,其能夠引導(dǎo)計(jì)算機(jī)或其它 可編程數(shù)據(jù)處理設(shè)備以特定方式工作,從而存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)中的指令生成包括執(zhí)行 在流程圖和/或框圖塊中指定的功能/動(dòng)作的指令裝置的制造品。計(jì)算機(jī)程序指令還可以加載到計(jì)算機(jī)或其它可編程數(shù)據(jù)處理設(shè)備上以使得在計(jì) 算機(jī)或其它可編程設(shè)備上執(zhí)行一系列的操作步驟以生成計(jì)算機(jī)執(zhí)行的過程,從而在計(jì)算機(jī) 或其它可編程設(shè)備上執(zhí)行的指令提供用于執(zhí)行在流程圖和/或框圖塊中指定的功能/動(dòng)作 的過程。附圖中的流程圖和框圖示出了根據(jù)本發(fā)明的各個(gè)實(shí)施例的系統(tǒng)、方法和計(jì)算機(jī)程 序產(chǎn)品的可行實(shí)現(xiàn)方式的架構(gòu)、功能和操作。在這點(diǎn)上,流程圖或框圖中的每個(gè)塊可以表示 包括用于執(zhí)行指定的邏輯功能的一個(gè)或多個(gè)可執(zhí)行指令的模塊、段或者代碼部分。還應(yīng)該 注意,在一些另選實(shí)施方式中,塊內(nèi)注明的功能可以不以附圖中所示的順序執(zhí)行。例如,根 據(jù)涉及的功能,連續(xù)示出的兩個(gè)塊實(shí)際上可以基本上同時(shí)執(zhí)行,或者這些塊有時(shí)候可以以 反向順序執(zhí)行。還應(yīng)該注意,能夠通過執(zhí)行指定功能或動(dòng)作的基于專用硬件的系統(tǒng)或者專 用硬件和計(jì)算機(jī)指令的組合,實(shí)現(xiàn)框圖和/或流程圖的每個(gè)塊以及框圖和/或流程圖中的 塊的組合。這里使用的術(shù)語的目的在于僅僅描述特定實(shí)施例而非意圖限制本發(fā)明。這里使用 的單數(shù)形式“a”、“an”、“the”旨在包括復(fù)數(shù)形式,除非在上下文中清楚地指出不是這樣。還 應(yīng)該明白,說明書中使用的術(shù)語“包括”和/或“包含”指定所述的特征、整數(shù)、步驟、操作、 元件和/或部件的存在,但沒有排除一個(gè)或多個(gè)其它特征、整數(shù)、步驟、操作、部件和/或它 們的組的存在或添加。所有裝置或步驟外加下面權(quán)利要求中的功能元件的對(duì)應(yīng)結(jié)構(gòu)、材料、動(dòng)作和等同 物旨在包括用于與特別要求的其它要求的元件結(jié)合執(zhí)行功能的任何結(jié)構(gòu)、材料或動(dòng)作。針對(duì)展示和說明的目的呈現(xiàn)本發(fā)明的描述,但是本發(fā)明的描述并非是詳盡的或者旨在將本發(fā) 明限制為公開的形式。在不脫離本發(fā)明的精神和范圍的情況下,本領(lǐng)域普通技術(shù)人員可以 明白許多變型和變動(dòng)。選擇并描述實(shí)施例從而最佳地解釋本發(fā)明的原理以及實(shí)際應(yīng)用以及 使得本領(lǐng)域其它技術(shù)人員能夠理解本發(fā)明的具有適于特定應(yīng)用的各種變動(dòng)的各種實(shí)施例。本文所示的流程圖僅僅是一個(gè)例子。在不脫離本發(fā)明的精神的情況下,可以對(duì)這 個(gè)圖或者本文所述的步驟(或操作)進(jìn)行許多變動(dòng)。例如,這些步驟可以以不同順序進(jìn)行 執(zhí)行或者可以添加、刪除或修改步驟。所有這些變動(dòng)被認(rèn)為是要求的發(fā)明的一部分。盡管已經(jīng)描述了本發(fā)明的優(yōu)選實(shí)施例,但是應(yīng)該明白本領(lǐng)域技術(shù)人員現(xiàn)在或?qū)?都能夠在權(quán)利要求的范圍內(nèi)進(jìn)行各種改進(jìn)或增強(qiáng)。這些權(quán)利要求應(yīng)該被解釋為保持對(duì)首先 描述的本發(fā)明的恰當(dāng)保護(hù)。
權(quán)利要求
1.一種用于在輸入/輸出(I/O)處理系統(tǒng)中的控制單元處理具有鏈?zhǔn)芥溄臃种У膫鬏?控制通道程序的方法,所述控制單元被構(gòu)造為與I/O子系統(tǒng)進(jìn)行通信,所述方法包括在控制單元處從I/O子系統(tǒng)接收命令消息以執(zhí)行I/O操作;讀取所述命令消息中的鏈?zhǔn)芥溄訕?biāo)記,所述鏈?zhǔn)芥溄訕?biāo)記指示在所述命令消息之后跟 著該I/O操作的隨后命令消息;讀取所述命令消息中的串行化標(biāo)記,所述串行化標(biāo)記請(qǐng)求將裝置狀態(tài)返回到I/O子系 統(tǒng)從而選擇隨后命令消息;執(zhí)行所述命令消息中的一個(gè)或多個(gè)命令;以及響應(yīng)于結(jié)合串行化標(biāo)記執(zhí)行所述一個(gè)或多個(gè)命令,向I/O子系統(tǒng)發(fā)送裝置狀態(tài)。
2.根據(jù)權(quán)利要求1的方法,還包括響應(yīng)于鏈?zhǔn)芥溄訕?biāo)記,確定預(yù)計(jì)有隨后命令消息;以及 持續(xù)運(yùn)行與所述I/O操作關(guān)聯(lián)的計(jì)數(shù)器以跨越所述命令消息和隨后命令消息。
3.根據(jù)權(quán)利要求2的方法,還包括接收包括隨后一組的一個(gè)或多個(gè)命令的隨后命令消息;檢查與接收的隨后一組的一個(gè)或多個(gè)命令中的每個(gè)命令關(guān)聯(lián)的命令鏈標(biāo)記以定位最 后鏈?zhǔn)芥溄拥拿?;以及響?yīng)于定位并執(zhí)行最后鏈?zhǔn)芥溄拥拿睿l(fā)送針對(duì)所述I/O操作的具有擴(kuò)展?fàn)顟B(tài)的響應(yīng)消息。
4.根據(jù)權(quán)利要求1的方法,其中,所述裝置狀態(tài)包括通道結(jié)束(CE)和裝置結(jié)束(DE), 用于指示I/O子系統(tǒng)發(fā)送包含跟在所述命令消息中的所述一個(gè)或多個(gè)命令之后的連續(xù)命 令的隨后命令消息。
5.根據(jù)權(quán)利要求1的方法,其中,所述裝置狀態(tài)包括通道結(jié)束(CE)、裝置結(jié)束(DE)和 狀態(tài)修改符(SM),用于指示I/O子系統(tǒng)發(fā)送包含跟在所述命令消息中的所述一個(gè)或多個(gè)命 令之后的非連續(xù)命令的隨后命令消息。
6.根據(jù)權(quán)利要求1的方法,還包括確定與通信交換關(guān)聯(lián)的一個(gè)或多個(gè)命令不能夠執(zhí)行;向I/O子系統(tǒng)發(fā)送用于指示不能夠執(zhí)行的終止?fàn)顟B(tài)消息;以及關(guān)閉序列號(hào)大于與所述一個(gè)或多個(gè)不可執(zhí)行命令關(guān)聯(lián)的序列號(hào)的打開的通信交換。
7.根據(jù)權(quán)利要求1的方法,還包括 接收登錄請(qǐng)求消息;以及響應(yīng)于該登錄請(qǐng)求消息而發(fā)送登錄接受消息,所述登錄接受消息包括最大鏈接命令字 段,該最大鏈接命令字段指示控制單元支持的第一命令消息之后的附加命令消息的最大計(jì) 數(shù)。
8.根據(jù)權(quán)利要求1的方法,其中,所述I/O子系統(tǒng)是通道子系統(tǒng),并且所述命令消息 是包括具有一個(gè)或多個(gè)裝置控制字(DCW)中的所述一個(gè)或多個(gè)命令的傳輸命令控制塊 (TCCB)的傳輸命令信息單元。
9.一種在I/O處理系統(tǒng)中的通道子系統(tǒng)處理具有鏈?zhǔn)芥溄臃种У膫鬏斂刂仆ǖ莱绦?的方法,所述通道子系統(tǒng)被構(gòu)造為與控制單元進(jìn)行通信,所述方法包括構(gòu)造命令消息中的鏈?zhǔn)芥溄訕?biāo)記以指示在所述命令消息之后跟著隨后命令消息以執(zhí)行I/O操作;構(gòu)造所述命令消息中的串行化標(biāo)記以請(qǐng)求將裝置狀態(tài)返回到通道子系統(tǒng)從而選擇隨 后命令消息;以及將所述命令消息從通道子系統(tǒng)發(fā)送至控制單元。
10.根據(jù)權(quán)利要求9的方法,還包括響應(yīng)于發(fā)送所述命令消息而接收裝置狀態(tài);響應(yīng)于接收的裝置狀態(tài)而選擇隨后命令消息;以及將選擇的隨后命令消息從通道子系統(tǒng)發(fā)送至控制單元。
11.根據(jù)權(quán)利要求9的方法,還包括建立傳輸控制字(TCW)的鏈?zhǔn)芥溄有蛄?,其中TCW中的至少一個(gè)包括第一指針、第二指 針和第三指針,其中,第一指針識(shí)別第一傳輸命令控制塊(TCCB)包括在所述命令消息中; 第二指針指向第二 TCW,該第二 TCW響應(yīng)于從控制單元接收到第一類型的裝置狀態(tài)而識(shí)別 第二 TCCB包括在隨后命令消息中;第三指針指向第三TCW,該第三TCW響應(yīng)于從控制單元 接收到第二類型的裝置狀態(tài)而識(shí)別第三TCCB包括在隨后命令消息中。
12.根據(jù)權(quán)利要求11的方法,還包括將錨控制塊(ACB)鏈接到TCW的鏈?zhǔn)芥溄有蛄?,所述ACB包括指向響應(yīng)于接收到對(duì)I/ 0裝置的主動(dòng)詢問而訪問的詢問TCW的詢問指針。
13.根據(jù)權(quán)利要求9的方法,還包括發(fā)送包括通道最大鏈接命令字段的登錄請(qǐng)求消息,該通道最大鏈接命令字段指示通道 子系統(tǒng)支持的在所述命令消息之后排隊(duì)的另外命令消息的最大計(jì)數(shù);響應(yīng)于該登錄請(qǐng)求消息接收登錄接受消息,所述登錄接受消息包括控制單元最大鏈接 命令字段,該控制單元最大鏈接命令字段指示控制單元支持的在所述命令消息之后排隊(duì)的 另外命令消息的最大計(jì)數(shù);以及將到控制單元的發(fā)送限制為符合控制單元最大鏈接命令字段。
14.一種用于在輸入/輸出(I/O)處理系統(tǒng)中的控制單元處理具有鏈?zhǔn)芥溄臃种У膫?輸控制通道程序的計(jì)算機(jī)程序產(chǎn)品,所述控制單元被構(gòu)造為與I/O子系統(tǒng)進(jìn)行通信,所述 計(jì)算機(jī)程序產(chǎn)品包括有形存儲(chǔ)介質(zhì),可由處理電路讀取并且存儲(chǔ)由處理電路運(yùn)行以執(zhí)行如權(quán)利要求1到13 中任一項(xiàng)所述的方法的指令。
15.一種在I/O處理系統(tǒng)中的控制單元處理具有鏈?zhǔn)芥溄臃种У膫鬏斂刂仆ǖ莱绦虻?設(shè)備,所述設(shè)備包括控制單元,被構(gòu)造為與I/O處理系統(tǒng)的I/O子系統(tǒng)進(jìn)行通信,所述控制單元適于執(zhí)行如 權(quán)利要求1到13中任一項(xiàng)所述的方法。
全文摘要
提供了一種在I/O處理系統(tǒng)中處理具有鏈?zhǔn)芥溄臃种У膫鬏斂刂仆ǖ莱绦虻挠?jì)算機(jī)程序產(chǎn)品、設(shè)備和方法。該方法包括在控制單元從I/O子系統(tǒng)接收命令消息以執(zhí)行I/O操作。該方法還包括讀取命令消息中的指示在該命令消息之后跟著該I/O操作的隨后命令消息的鏈?zhǔn)芥溄訕?biāo)記。該方法還包括讀取命令消息中的串行化標(biāo)記,該串行化標(biāo)記請(qǐng)求將裝置狀態(tài)返回到I/O子系統(tǒng)以選擇隨后命令消息。該方法還包括執(zhí)行命令消息中的一個(gè)或多個(gè)命令,并且響應(yīng)于結(jié)合串行化標(biāo)記執(zhí)行所述一個(gè)或多個(gè)命令而向I/O子系統(tǒng)發(fā)送所述裝置狀態(tài)。
文檔編號(hào)G06F3/06GK102112974SQ200980129455
公開日2011年6月29日 申請(qǐng)日期2009年7月16日 優(yōu)先權(quán)日2008年7月31日
發(fā)明者D·卡斯皮爾, J·弗拉納格安 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司