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

計算機系統(tǒng)及其輸入輸出指令的發(fā)送方法

文檔序號:6409253閱讀:394來源:國知局
專利名稱:計算機系統(tǒng)及其輸入輸出指令的發(fā)送方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機系統(tǒng)及計算機系統(tǒng)中的輸入輸出指令的發(fā)送方法,具體地說,是涉及根據(jù)一次輸入輸出起動指令,能向多個輸入輸出裝置發(fā)出多個輸入輸出指令的計算機系統(tǒng)及輸入輸出指令的發(fā)送方法。
現(xiàn)說明在現(xiàn)有的計算機系統(tǒng)中對于輸入輸出裝置(輸入輸出設(shè)備)的控制方法。在進行輸入輸出運作時,由主CPU(中央處理裝置)向輸入輸出設(shè)備發(fā)送輸入輸出指令。于是輸入輸出設(shè)備開始進行處理。在主CPU將輸入輸出指令發(fā)送給輸入輸出設(shè)備之后,到輸入輸出數(shù)據(jù)的收發(fā)結(jié)束之前,主CPU還能進行其它工作。當處理結(jié)束后,輸入輸出設(shè)備中斷操作,并將該情況通知主CPU。
當采用上述方法時,可以減輕主CPU的負載。在實際情況下,在計算機中的主CPU和輸入輸出設(shè)備之間還設(shè)有輸入輸出適配器(有的計算機中稱為輸入輸出通道),另外,在輸入輸出適配器上還連接多套輸入輸出設(shè)備。
圖39所示是文獻“Harry Katzan,Jr.Computer Organi-zation and the System/370,Van Noatrand ReinholelCompany,1971”中所述的通道接口。現(xiàn)參照該圖,說明使用輸入輸出通道的輸入輸出設(shè)備之間的輸入輸出結(jié)構(gòu)。
主CPU發(fā)送輸入輸出起動指令20,開始進行輸入輸出的運作。輸入輸出起動指令20包括指令碼、通道地址及設(shè)備地址。通道地址和設(shè)備地址是指定進行輸入輸出運作的輸入輸出通道和輸入輸出設(shè)備的地址。
CAW(Channel Address Word)(通道地址字)21是在主存儲裝置中所設(shè)的特定地址,其中存有起始的CCW(Channel Com-mand Word)(通道命令字)22在主存儲裝置中的地址。CCW22向輸入輸出通道提供應(yīng)進行的輸入輸出運作的信息。CCW22由操作碼、數(shù)據(jù)地址、計數(shù)及標志構(gòu)成。標志包括Cd標志及CC標志。
用CCW22中的操作碼指定應(yīng)該進行的運作,例如輸入至輸出等。數(shù)據(jù)地址用來指定輸入輸出運作的對象、即數(shù)據(jù)23的開頭地址。計數(shù)用來指定輸入輸出運作中所用的字節(jié)數(shù)。
Cd標志用來指定數(shù)據(jù)鏈。所謂數(shù)據(jù)鏈,是指用連續(xù)的CCW對不同的數(shù)據(jù)區(qū)域進行相同的輸入輸出運作。CC標志用來指定命令鏈。所謂命令鏈,是指用連續(xù)的CCW進行不同的輸入輸出運作。當標志的全部比特為0時,表示該CCW22是最后的CCW。
CSW(Channel Status Word)(通道狀態(tài)字)24表示在接收到輸入輸出中斷操作或輸入輸出起動指令后進行記錄、以及輸入輸出設(shè)備或輸入輸出通道的狀態(tài)(忙碌等)。
用上述的輸入輸出接口表示如下所列的進行輸入輸出運作的順序,首先,由主CPU進行如下的運作。
①編制必要的CCW22。既可以事先準備好,也可以在執(zhí)行程序過程中生成。如圖39所示,有時是稱為通道程序的一系列多個CCW22。
②設(shè)定CAW21(設(shè)定CCW22的起始地址)。
③裝入通道地址和設(shè)備地址。
④禁止中斷輸入輸出操作。
⑤發(fā)送輸入輸出起動指令20。
經(jīng)過主CPU按照如上所述發(fā)送輸入輸出的起動指令20之后,計算機系統(tǒng)的輸入輸出通道按照下列方式運作。
①由通道讀取CAW21,檢查是否正確性。
②由通道讀取CCW22,檢查是否正確性。
③由指定的設(shè)備進行輸入輸出運作。
④將輸入輸出運作結(jié)束的信息記錄到CSW24中。
⑤從輸入輸出通道起動中斷輸入輸出的操作。
利用上述的輸入輸出接口,發(fā)送一次輸入輸出起動指令(設(shè)定圖39所示的一系列CCW22的指令(,就能使一個輸入輸出設(shè)備連續(xù)進行多次輸入輸出運作?,F(xiàn)在研究用這種舊有的輸入輸出接口,使多個輸入輸出設(shè)備連續(xù)進行輸入輸出運作的情況。
圖40所示是由多個輸入輸出設(shè)備的輸入輸出接口通過輸入輸出適配器(輸入輸出通道)進行輸入輸出運作的順序。特別是表示連續(xù)對設(shè)備1發(fā)送輸入輸出指令1,以及對另一個設(shè)備2發(fā)送輸入輸出指令2的情況。
首先,由CPU發(fā)送輸入輸出指令1。當輸入輸出適配器接收到該指令之后,就進行與設(shè)備1的輸入輸出操作。輸入輸出適配器在與設(shè)備1進行輸入輸出操作的時候,CPU還能進行其它工作。等到與設(shè)備1之間的輸入輸出操作結(jié)束之后,由輸入輸出適配器發(fā)送中斷指令,中斷CPU進行的處理1,于是輸入輸出結(jié)束。接著,由CPU發(fā)送輸入輸出指令2,同樣進行與設(shè)備2之間的輸入輸出。
這樣,現(xiàn)有的輸入輸出設(shè)備的輸入輸出運作是在對某一個輸入輸出設(shè)備發(fā)送輸入輸出指令之后,便接著處理其它工作。由于要通過中斷指令,通知該輸入輸出設(shè)備結(jié)束運作,因此接著在對另外的輸入輸出設(shè)備進行輸入輸出時,必須再次發(fā)送輸入輸出指令。就是說要對每一個輸入輸出設(shè)備發(fā)送輸入輸出指令。
以下討論將現(xiàn)有的方式用在本發(fā)明的應(yīng)用示例中的多線路連接用通信服務(wù)計算機中時,會出現(xiàn)的下列問題。
近年來,隨著CPU性能的提高,正在致力于存儲器存取的高速化。尤其是與利用超高速緩沖存儲技術(shù)等一類的方法謀求存儲器存取的高速化相比較,輸入輸出設(shè)備的速度并不算高,因此,CPU和輸入輸出設(shè)備之間的速度相差很大。另外,為了與多線路相適配,必須要連接多個輸入輸出設(shè)備。如果將這些輸入輸出設(shè)備直接連接到CPU的總線上,由于上述速度差方面的原因,不能有效地利用CPU的性能。為了避免這一點,雖然可以考慮使總線分級化、也就是分成主總線和I/O總線,并用總線適配器將兩者連接起來的解決方法??墒?,這樣做的結(jié)果,使得CPU和輸入輸出設(shè)備的距離拉大,因此現(xiàn)在為了要報告和確認在DMA輸送開始時所做的初始設(shè)定或結(jié)束狀態(tài),就要通過適配器在CPU與輸入輸出設(shè)備之間進行輸入輸出命令或結(jié)束中斷的運作,這樣就耗用了CPU性能、I/O性能及總線性能。特別是對于多線路連接用通信服務(wù)來說,這已成為顯著的問題。
在探討產(chǎn)生上述問題的原因時,會發(fā)現(xiàn)其原因在于如圖40所示,不能通過一次輸入輸出運作(發(fā)送輸入輸出指令或在舊有示例中發(fā)送輸入輸出起動指令20),就能夠?qū)Ω鬏斎胼敵鲈O(shè)備的輸入輸出命令串(舊有示例中的通道程序)匯集起來一并發(fā)送,然而,由于未配備輸入輸出適配器,所以也就不具備將這些命令串匯總起來一并執(zhí)行的功能。
本發(fā)明的第1個目的是提供能通過一次輸入輸出指令而使多個設(shè)備執(zhí)行多個輸入輸出命令的裝置(包括輸入輸出接口信息形式)、以及能夠接受該指令的輸入輸出適配器或者輸入輸出通道裝置的控制機構(gòu)(處理邏輯)。
本發(fā)明的第2個目的是不僅僅只提供發(fā)送命令組的裝置,而且還要提供能夠根據(jù)輸入輸出適配器的狀態(tài)或接受能力的大小而發(fā)送命令組的裝置,換句話說,提供一種能夠便于確認輸入輸出適配器能以接受多大量的命令組而不致處于忙碌狀態(tài)的輸入輸出接口。
本發(fā)明的另一個目的在于提供一種在通過上述輸入輸出適配器進行數(shù)據(jù)輸送的過程中,能夠有效發(fā)送由指示輸入運作的read(讀出)命令構(gòu)成的命令組的方法。
另外,本發(fā)明的另一個目的在于提供一種在通過上述輸入輸出適配器輸送數(shù)據(jù)的過程中,能夠有效發(fā)送與通信協(xié)議處理有關(guān)的、特別是與窗口控制或分組處理有關(guān)的命令組的方法。
本發(fā)明是一種備有多個輸入輸出裝置、與該多個輸入輸出裝置連接的適配裝置,以及通過該適配裝置將輸入輸出要求傳輸?shù)缴鲜鲚斎胼敵鲅b置的主處理裝置的計算機系統(tǒng),該計算機系統(tǒng)的特征為從主處理裝置一次輸入輸出起動指令,向多個輸入輸出裝置發(fā)送多個輸入輸出命令,在適配裝置中,將該一次輸入輸出起動指令中所包含的、對多個輸入輸出裝置的多個輸入輸出命令指定出是針對哪一個輸入輸出裝置的輸入輸出命令,并將輸入輸出命令分別發(fā)送到專門指定的輸入輸出裝置。
另外,在主處理裝置中,當不能立即處理輸入輸出請求時,要將該輸入輸出請求保存在等待請求管理表中進行管理,當可以進行輸入輸出請求的處理時,根據(jù)該時刻保管在等待請求管理表中的輸入輸出請求,以每個輸入輸出裝置為單位,將應(yīng)發(fā)送給各輸入輸出裝置的輸入輸出命令按序排列形成命令串,以一次輸入輸出起動指令的方式將這些命令串發(fā)送給適配裝置。
如上所述,利用可進行輸入輸出請求處理的機會,將等待請求管理表中保管的多個輸入輸出請求進行處理,使其匯總在一次輸入輸出起動指令中發(fā)送即可,此外,也可以在輸入輸出命令的處理結(jié)束之后,利用從輸入輸出裝置向主處理裝置發(fā)出結(jié)束中斷運作的機會,進行上述處理。
多個命令串要以信息組為基本單位,所說的信息組包含(例如)指定命令串的開頭位置的地址信息和在特定命令串中各命令執(zhí)行對象的一個輸入輸出裝置的標識符信息。該信息組由具有多個連續(xù)結(jié)構(gòu)的表進行管理。最好是設(shè)定一個標志信息,用以表示是否要從主處理裝置中讀取適配裝置。
概略地說,主處理裝置備有向輸入輸出裝置發(fā)送輸入輸出請求的應(yīng)用部、以及根據(jù)該輸入輸出請求生成輸入輸出命令并發(fā)送給適配裝置的驅(qū)動部。特別是在驅(qū)動部中,最好是在從應(yīng)用執(zhí)行部接收數(shù)據(jù)輸入請求之前,要以一次輸入輸出起動指令的方式,將對多個輸入輸出裝置的多個輸入輸出命令先送給適配裝置。
具體地說,其中設(shè)有第1存儲裝置,用來存儲表示對輸入輸出裝置的輸入命令的最大發(fā)送數(shù)的第1規(guī)定數(shù);第2存儲裝置,用來存儲規(guī)定再次發(fā)送輸入命令串的時刻用的第2規(guī)定數(shù);以及第3存儲裝置,用來記錄各輸入輸出裝置尚未執(zhí)行完畢的輸入命令數(shù)。在驅(qū)動部經(jīng)過初始化之后,將輸入命令以各輸入輸出裝置為單位進行劃分,生成與第1規(guī)定數(shù)相關(guān)連的輸入命令串,并發(fā)送給適配裝置,將發(fā)送給各輸入輸出裝置的輸入命令數(shù)記錄在第3存儲裝置中。以后每次從各輸入輸出裝置收到輸入命令結(jié)束報告后,便從存儲在第3存儲裝置中的該輸入輸出裝置的未結(jié)束的輸入命令數(shù)中減去1,經(jīng)過該處理后,如果該輸入輸出裝置中的未結(jié)束的輸入命令數(shù)變成第2規(guī)定數(shù)時,算出存儲在第3存儲裝置中的未結(jié)束的輸入命令數(shù)與記錄在第1存儲裝置中的第1規(guī)定數(shù)之差,再將與該差值相當且與輸入命令相關(guān)的輸入命令串發(fā)送給適配裝置。
如果輸入輸出裝置是線路控制裝置,由通信協(xié)議處理部將從應(yīng)用執(zhí)行部發(fā)送來的與數(shù)據(jù)輸送請求有關(guān)的數(shù)據(jù)劃分成組,并將通信協(xié)議控制信息添加到經(jīng)過分組后的各組輸出數(shù)據(jù)的起始部分,生成多個信息組。這時,如果上述多個信息組數(shù)小于此時由對方發(fā)送來的、經(jīng)確認能連續(xù)輸送的信息包數(shù)時,便由驅(qū)動部根據(jù)上述多個分組信息,生成多個輸入輸出命令,并將生成的多個輸入輸出命令作為一次輸入輸出起動指令發(fā)送,從而通過一次輸入輸出運作,就能輸送上述多個分組信息中的輸出數(shù)據(jù)。
另外,經(jīng)過這種通信協(xié)議處理,將數(shù)據(jù)劃分成多個信息組后傳輸時,要在經(jīng)過劃分的各個輸出數(shù)據(jù)的開頭附加一個標題(通信協(xié)議控制信息)。這時,標題和輸出數(shù)據(jù)構(gòu)成邏輯上相關(guān)聯(lián)的一個信息包,但實際上有時存在其他的區(qū)化方式,分別按照另外的數(shù)據(jù)管理信息組進行管理。在這種情況下,要以每個數(shù)據(jù)管理信息組為單位生成命令,所以輸送標題的命令和輸送數(shù)據(jù)的命令要用數(shù)據(jù)鏈加以連結(jié),形成多個命令。因此,在本發(fā)明中,在必要的情況下,要將標題和輸出數(shù)據(jù)設(shè)定在物理連續(xù)區(qū)域內(nèi),作為一個數(shù)據(jù)管理信息組,并且由此轉(zhuǎn)存在驅(qū)動部的一個位置中。因此,在驅(qū)動部中就能作為一個命令執(zhí)行。
至于是否要進行轉(zhuǎn)存,就要根據(jù)系統(tǒng)開銷的大小進行判斷。即,要將適配裝置在處理輸送通信協(xié)議控制信息命令時所需要的系統(tǒng)開銷與將輸出數(shù)據(jù)復(fù)制在通信協(xié)議控制信息連續(xù)的區(qū)中所需用的系統(tǒng)開銷進行比較,當后者的系統(tǒng)開銷小時,便進行轉(zhuǎn)存。換句話說,要將適配裝置在試圖采用鏈接的方式(數(shù)據(jù)鏈)對命令進行處理所需用的時間與主處理裝置復(fù)制某一長度的數(shù)據(jù)所需用的時間相等的數(shù)據(jù)長度作為數(shù)據(jù)長度判斷基準值,事前作好準備,在采用鏈接的方式將通過通信協(xié)議處理生成的標題和用戶數(shù)據(jù)部分連接成輸入輸出數(shù)據(jù)時,要在生成該命令之前,先判斷輸出數(shù)據(jù)長度,如果比基準值短,則將該用戶數(shù)據(jù)復(fù)制在標題以后的區(qū)域中。就是說,要將標題和用戶數(shù)據(jù)改寫成一個連續(xù)的輸入輸出數(shù)據(jù)。
以發(fā)送一次輸入輸出起動指令的方式從主處理裝置發(fā)送對多個輸入輸出裝置的多個輸入輸出命令時,要在適配裝置中,專門指定出這個一次輸入輸出起動指令中包含的對多個輸入輸出裝置的多個輸入輸出命令是針對哪一個輸入輸出裝置的輸入輸出命令,將輸入輸出命令分別發(fā)送給專門指定的輸入輸出裝置,因此用一次輸入輸出起動指令,就能使多個輸入輸出裝置進行輸入輸出運作。
在將多個命令串匯總轉(zhuǎn)存到適配裝置中時,要利用具有多個連續(xù)結(jié)構(gòu)的數(shù)據(jù)表進行管理,在表中含有上述地址信息和專門指定的輸入輸出裝置的標識符信息的信息組,特別是在沒有表示是否從主處理裝置讀取適配裝置的標志信息時,在主處理裝置和適配裝置之間所做的命令串的存取就能順利進行。并能根據(jù)適配裝置接受命令的能力,要求最大限度地匯總命令組。
由于將對于多個輸入輸出裝置的多個輸入輸出命令作為一次輸入輸出起動指令處理,先發(fā)送給適配裝置,所以能減少輸入運作的系統(tǒng)開銷。
通過通信協(xié)議處理,將數(shù)據(jù)劃分成多個信息包后發(fā)送時,要生成一個系列的命令串,該命令串是由輸送相當于一次所能發(fā)送的信息包數(shù)的上述信息包用的輸出命令構(gòu)成。通過驅(qū)動部的輸入輸出運作執(zhí)行該命令串時,采用一次輸入輸出起動指令,就能將劃分成多個信息包一并輸送到輸入輸出裝置的一端。
在本發(fā)明中,在必要的情況下,通過進行上述轉(zhuǎn)存處理,根據(jù)指定的位置將標題轉(zhuǎn)換成連續(xù)的數(shù)據(jù)后,適配裝置就不用再進行采用鏈接方式的處理的搜索運作,直接進行輸送數(shù)據(jù)的處理。因此能使包括輸入輸出適配處理在內(nèi)的輸入輸出處理的系統(tǒng)開銷達到最佳化。
圖1是表示本發(fā)明的原理的時間圖。
圖2是實施例1中的計算機結(jié)構(gòu)框圖。
圖3是表示實施例1中的接口信息的示意圖。
圖4是實施例1中的通道的主要運作流程圖。
圖5是表示實施例1中的進行CCW處理的流程圖。
圖6是實施例1中的通信管理機構(gòu)框圖。
圖7A是表示實施例1中的等待請求管理表的框圖。
圖7B是表示實施例1中的結(jié)束等待管理表的框圖。
圖8是實施例1中的接受請求的驅(qū)動器的運作流程圖。
圖9是實施例1中輸入輸出中斷受理后發(fā)送命令的運作流程圖。
圖10是應(yīng)用實施例2的大規(guī)模聯(lián)機處理系統(tǒng)框圖。
圖11是實施例2中的通信服務(wù)器的結(jié)構(gòu)框圖。
圖12是實施例2中的通信服務(wù)器存儲單元中存儲的信息示意圖。
圖13是實施例2中IO適配器的結(jié)構(gòu)框圖。
圖14是實施例2中的多線路控制裝置的結(jié)構(gòu)框圖。
圖15是實施例2中數(shù)據(jù)發(fā)送時的運作程序圖。
圖16是實施例2中數(shù)據(jù)接收時的運作程序圖。
圖17是實施例2中的接口信息結(jié)構(gòu)示意圖。
圖18是實施例2中的命令結(jié)構(gòu)示意圖。
圖19是實施例2中的命令表項目結(jié)構(gòu)示意圖。
圖20、圖21、圖22是實施例2中的IO(輸入輸出)適配處理流程圖。
圖23是表示實施例2中的IO適配表之間的關(guān)系的示意圖。
圖24是實施例3中的先出Read(讀出)命令管理表的結(jié)構(gòu)示意圖。
圖25是實施例3中的Read命令發(fā)送處理流程圖。
圖26是實施例4中的信息包分組處理示意圖。
圖27是實施例4中以成批IO方式生成的多個信息包的相關(guān)關(guān)系示意圖。
圖28是實施例4中的成批IO方式處理流程圖。
圖29是表示實施例4中的驅(qū)動器的命令生成邏輯流程圖。
圖30是實施例5中的轉(zhuǎn)存處理示意圖。
圖31是實施例5中的轉(zhuǎn)存處理流程圖。
圖32是實施例6中作為對象的計算機系統(tǒng)的結(jié)構(gòu)框圖。
圖33是實施例6中的輸入輸出處理流程圖。
圖34是實施例6中的輸入輸出處理示意圖。
圖35是實施例6中的緩沖器結(jié)構(gòu)示意圖。
圖36是實施例6中的存儲器中的數(shù)據(jù)復(fù)制方法示意圖。
圖37是表示實施例6中的輸入輸出處理時間一個示例的特性圖。
圖38是實施例6中的控制信息附加方法示意圖。
圖39是舊有的通道接口示意圖。
圖40是表示舊有的對多個設(shè)備進行輸入輸出運作的時間圖。
下面利用


本發(fā)明的實施例。以下雖然是對實施例1—5共5個示例的說明,但在此之前,先要參照圖1說明本發(fā)明的輸入輸出接口的基本處理過程。
在圖1中,CPU向兩個輸入輸出設(shè)備1、2發(fā)送一個輸入輸出指令,使其起動,進行輸入輸出運作。CPU只發(fā)送一個輸入輸出指令后,輸入輸出(IO)適配器便連續(xù)在設(shè)備1之間進行輸入輸出操作并且在設(shè)備2之間進行輸入輸出操作。等到IO適配器與設(shè)備1的輸入輸出操作結(jié)束后,便向CPU發(fā)送中斷信號,使其進行中斷處理1。在中斷處理1之后,CPU不需要向設(shè)備2發(fā)送輸入輸出起動指令,還能進行其它工作。等到IO適配器與設(shè)備2之間的輸入輸出操作結(jié)束后,將中斷信號發(fā)送給CPU,由CPU進行中斷處理2。
實施例1本實施例是輸入輸出適配裝置為輸入輸出通道裝置時的實施例。
圖2表示使用本發(fā)明的輸入輸出通道裝置的計算機系統(tǒng)的功能結(jié)構(gòu),特別是以輸入輸出通道(以下用CH表示)142的功能為核心的說明圖。CPU140是CISC型中央運算處理裝置。MS141是主存儲裝置。CH142通過總線與CPU140及MS141互相連接。IOCU147是輸入輸出控制裝置,與CH142連接。共有多個IOCU147連接在一個CH142上。同樣,在一個IOCU147上又連接著多個輸入輸出設(shè)備(以下稱為DEV)148。IOCU147控制所連接的DEV148。CH142由總線接口控制部143、數(shù)據(jù)輸送控制144、CCW執(zhí)行部145及IOCU控制部146構(gòu)成??偩€接口控制部143是用來控制輸入輸出起動命令的受理或?qū)PU的中斷通知或?qū)S141的訪問等的部件。CCW執(zhí)行部145是用來分析CCW,控制數(shù)據(jù)輸送的收發(fā)等的部件。IOCU控制部146是用來根據(jù)來自CCW執(zhí)行部145的指示,控制與IOCU147之間的總線的部件。數(shù)據(jù)輸送控制部144是用來根據(jù)CCW執(zhí)行部145的指示,將MS141中的數(shù)據(jù)輸送給IOCU147,或者將來自IOCU147的數(shù)據(jù)存入MS141中的功能部件。
圖3是說明圖2中的CH142與CPU140之間的接口規(guī)定用的圖,對于和以往不同的接口部分的情況特別加以詳細解釋。
在圖3中,輸入輸出起動指令200是在圖39所示以往的輸入輸出起動指令20中增加擴充標志201構(gòu)成的。在將多個IO命令發(fā)送給多個設(shè)備時,CPU140接通擴充標志201,將該輸入輸出起動指令200發(fā)送給與相應(yīng)的通道地址相對應(yīng)的CH裝置(連接準備進行IO的設(shè)備DEV148的CH裝置)142。這時,輸入輸出起動指令200中的設(shè)備地址信息無意義。擴充CAW301是將結(jié)束位302、通道地址303及設(shè)備地址304添加在過去由命令地址構(gòu)成的CAW(圖39中的21)上的塊(以下稱為命令塊),并根據(jù)MS141中規(guī)定的固定地址,將多個(相當于給予命令的設(shè)備數(shù))上述的塊連續(xù)排列而成的。命令塊中的命令地址,與過去的相同,用來表示CCW串的起始地址。另外,通道地址303和設(shè)備地址304是識別執(zhí)行CCW串中的目標設(shè)備用的地址信息。構(gòu)成CCW的各個CCW22與圖39中過去的CCW22相同。命令塊中的結(jié)束位302是表示該命令塊是否是擴充CAW301中的最后的命令塊用的信息。最后的命令塊中的結(jié)束位在導(dǎo)通狀態(tài)下為(1),除此以外,命令塊中的結(jié)束位在斷開狀態(tài)下為(0)。
CPU140設(shè)定上述的接口信息,執(zhí)行經(jīng)過擴充后的輸入輸出起動指令200。CH142收到該指令后,根據(jù)設(shè)定,開始進行輸入輸出運作。
圖4是CH142的主要處理邏輯程序圖。CH142收到經(jīng)過擴充的輸入輸出起動指令200后,首先將從規(guī)定的地址開始的擴充CAW301的起始命令塊讀入內(nèi)部寄存器(步3101)。然后進行根據(jù)讀入的命令塊中的命令地址所示的CCW串進行處理運作(步3103)。然后對讀入的命令塊中的結(jié)束位302進行校驗(步3105)。如果結(jié)束位導(dǎo)通、即其值為1時,就結(jié)束處理運作。如果不為1,則更新應(yīng)讀入的擴充CAW301中命令塊的點(步3107),重新從步3101開始進行處理。就是說,反復(fù)進行CCW串的處理運作,直到擴充CAW301中的結(jié)束位為1時為止。
圖5是上述處理步3103中執(zhí)行CCW處理的程序圖。雖然本處理過程中的邏輯與過去的相同,但下面仍對此加以說明。
首先,讀命令塊中命令地址CCW串中的起始CCW(步3201)。然后根據(jù)讀入的命令塊中的設(shè)備地址認定目標設(shè)備DEV148,接通通道(步3203),然后向目標設(shè)備發(fā)送命令,等待應(yīng)答(步3205)。然后,使用數(shù)據(jù)輸送控制部144,進行數(shù)據(jù)輸送處理。另外,數(shù)據(jù)輸送控制部144還進行CCW的數(shù)據(jù)鏈處理(步3207)。然后,檢查CCW的命令標志,如果命令鏈標志導(dǎo)通,則進入步3215,否則進入步3211(步3209)。步3215是讀入下一個CCW的處理步,此后,再次從步3205重復(fù)進行。步3211是形成結(jié)束狀態(tài)的處理步。最后生成向CPU140發(fā)送的中斷信號(步3213)。
其次,說明由CPU140向多個設(shè)備集中發(fā)送輸入輸出命令的處理過程?,F(xiàn)以CPU140發(fā)送數(shù)據(jù)通信用的輸入輸出命令的情況為例進行說明。
圖6表示CPU140為了進行數(shù)據(jù)通信所做的處理程序的詳細結(jié)構(gòu)以及與CH142的關(guān)系。通信管理340向多個應(yīng)用程序(AP)34提供通信服務(wù)(數(shù)據(jù)發(fā)送、數(shù)據(jù)接收)。通信管理340包括對于緩沖器和計時器等計算機資源進行管理的管理程序(MGR)341,對于來自AP34的通信請求進行接收處理用的應(yīng)用接口(API)342,根據(jù)通信協(xié)議、對于通信數(shù)據(jù)進行加工及控制用的通信協(xié)議處理343、以及控制與CH142接口的驅(qū)動程序345。
有關(guān)數(shù)據(jù)通信的各種輸入輸出請求從AP34發(fā)送給通信管理340。在通信管理340中,根據(jù)MGR341的管理,由API342受理來自AP34的輸入輸出請求,并由通信協(xié)議處理343對于通信數(shù)據(jù)進行加工及控制,并將輸入輸出請求發(fā)送給驅(qū)動程序345。驅(qū)動程序345根據(jù)受理的輸入輸出請求,設(shè)定在圖3做過說明的各種信息,并將輸入輸出起動指令200發(fā)送給CH142。
圖7A及圖7B分別是驅(qū)動程序345發(fā)達輸入輸出起動指令時所參照的管理信息表。
圖7A所示的排隊請求管理表330是當驅(qū)動程序345不能即時處理來自主機的通信協(xié)議處理343的請求33時(CH142忙碌等),用以將其保存用的表。在來自主機的請求33中包括下一個請求的地址及請求的類型(發(fā)送/接收)、以及存有通信協(xié)議處理343所用數(shù)據(jù)(PDU)的緩沖器30的地址。排隊請求管理表330為了管理這些請求33,保留一系列請求33的起始地址、其最后地址、以及一系列請求數(shù)等。
圖7B所示的結(jié)束排隊管理表331是結(jié)束向CH142發(fā)送命令的結(jié)束表,另外也是管理未曾收到從CH142返回命令結(jié)束應(yīng)答的管理表。另外,該表331的結(jié)構(gòu)和管理方式與排隊請求管理表330相同。
圖8是接收到來自主機通信協(xié)議處理343的請求33之后驅(qū)動程序345的處理邏輯程序圖。
首先,由驅(qū)動程序345對排隊請求管理表330進行檢查,查明是否有請求排隊、以及CH142的狀態(tài)是否忙碌(步3501)。如果沒有請求排隊、而且CH142也不忙碌時,便進入步3503。如果有請求排隊或CH142忙碌,則進入步3509,更新排隊請求管理表330,使新受理的該請求33繼續(xù)排隊(步3509)。然后處理結(jié)束。如果步3501的判斷正確,則根據(jù)該請求33,生成CCW串(步3503)。然后設(shè)定在前一步中生成的CCW串的起始地址等,生成擴充CAW301(步3505)。然后將應(yīng)起動的CH142裝入特定的通道地址,發(fā)送輸入輸出起動指令200(步3507)。
以上說明了根據(jù)來自主機通信協(xié)議處理345的請求,進行發(fā)送命令的一系列處理運作。
圖9是在收到來自CH142的中斷結(jié)束之后驅(qū)動程序345中的命令再發(fā)送處理邏輯程序。收到來自CH142的中斷結(jié)束后,驅(qū)動程序345進行中斷結(jié)束處理,而在進行該中斷結(jié)束處理后,進行圖9中的命令再發(fā)送處理。
首先,由驅(qū)動程序345檢查排隊請求管理表330,查明是否有請求排隊、以及CH142的狀態(tài)是否忙碌(步3601)如果有請求排隊且CH142不忙碌時,進入步3603。如果沒有請求排隊或CH142忙碌時,便結(jié)束處理。在步3603中,檢查排隊請求管理表330中是否有請求排隊(步3603)。如果有排隊請求,使排隊請求在排隊請求管理表330中重新排隊(步3605),經(jīng)過重新排隊的請求33,生成CCW串(步3607)。然后設(shè)定在前一步中生成的CCW串的起始地址等,生成擴充CAW301(步3609)。然后再次重復(fù)從步3603開始的處理運作。
這樣,對于排隊請求管理表330中的全部排隊請求,反復(fù)進行步3603—3609的運作,生成圖3中說明過的CCW串和擴充CAW301。
在步3603中,如果沒有排隊請求,設(shè)定擴充CAW301的結(jié)束位(步3611)。具體地說,使擴充CAW301的最后的命令塊的結(jié)束位導(dǎo)通(1),使其以前的命令塊的結(jié)束位斷開(0)。然后,將應(yīng)起動的CH142裝入特定的通道地址,發(fā)送輸入輸出起動指令200(步3613)。
在步3605中,當使排隊請求在排隊請求管理表330中重排隊時,將重排隊的排隊請求添加到結(jié)束排隊管理表331中。然后,該輸入輸出處理結(jié)束時,由CH142發(fā)出中斷信號,在該結(jié)束中斷處理中確認輸入輸出結(jié)束,將該排隊請求從結(jié)束排隊管理表331中消除。
實施例2實施例2是將本發(fā)明應(yīng)用于圖10所示的大規(guī)模聯(lián)機處理系統(tǒng)的通信服務(wù)器100—A及100—B中的實施例,以下參照圖10—圖23說明實施例2。
圖10中,在總店中有主計算機102,管理大規(guī)模數(shù)據(jù)庫??偟甑闹饔嬎銠C102和通信服務(wù)器100—A用高速LAN(區(qū)域網(wǎng)絡(luò))FDDI(光纖分布式數(shù)據(jù)接口)彼此連接??偟甑耐ㄐ欧?wù)器100—A和多個分店的通信服務(wù)器用高速線路連接。圖10中的一個分店系統(tǒng)結(jié)構(gòu)是具有代表性的結(jié)構(gòu)。多個店鋪內(nèi)的終端101通過電話線路連接在分店內(nèi)的通信服務(wù)器100—B上,另外,遠處的多個終端101通過共用網(wǎng)絡(luò)也連接在通信服務(wù)器100—B上。
圖10中的通信服務(wù)器100—A及100—B的硬件結(jié)構(gòu)都與圖11所示相同。為用戶提供的信息顯示在顯示器121上。另一方面,用戶可利用鍵盤122鍵入操作命令。由CPU123進行聯(lián)機處理程序等一類的軟件處理。上述軟件中的程序、各種控制表及緩沖器都被存在MU(存儲單元)124中。CPU123和MU124通過主機總線連接。
輸入輸出總線通過BA(總線適配器)125連接在主機總線上。將主機總線和輸入輸出總線分開的理由是,如果直接將CPU連接在速度慢的輸入輸出機器上,則總線的速度必須與速度慢的輸入輸出機器的速度匹配,這樣就會使CPU的性能變壞。
再者,通信服務(wù)器備有DKU(磁盤裝置)129或MCI(多線路控制裝置)130等輸入輸出控制裝置。這些輸入輸出控制裝置和輸入輸出總線通過IOA(輸入輸出適配器)128連接。特別是在每個IOA128上都通過局部總線(SCSI總線)連接著多個MCI120。其理由是,能連接在一個MCI130上的線路131的條數(shù)是有限的,所以要將高速LAN的適配裝置即FDDIA(FDDI適配器)126和CCU(控制臺控制裝置)127連接在輸入輸出總線上。
現(xiàn)根據(jù)圖11中的本機器的結(jié)構(gòu),簡要說明輸入輸出的運作情況。IOA128通過BA125接收來自CPU123的輸入輸出命令,開始其輸入輸出的運作。在發(fā)送數(shù)據(jù)時,IOA128將由MU124指定的數(shù)據(jù)輸送給相應(yīng)的MCI130。在接收數(shù)據(jù)時,通過BA125將數(shù)據(jù)從該MCI130輸送至MU124中指定的區(qū)域。在MCI130中裝有存儲數(shù)據(jù)用的緩沖器。
如上所述,CPU123是一種輸入輸出控制裝置,它具備在MCI130與MU124之間進行數(shù)據(jù)傳輸?shù)臋?quán)限。來自CPU123的輸入輸出命令包括對該IOA128的指示和對該線路131的指示。MCI130執(zhí)行該輸入輸出命令,通過該線路進行數(shù)據(jù)通信。
圖12所示是存儲在MU124中的信息。它由3大部分構(gòu)成。這3個部分是各種軟件中的執(zhí)行程序、其參考表、以及緩沖區(qū)。
所謂各種軟件包括控制軟件群和應(yīng)用程序群。控制軟件群包括進行存儲管理和程序管理等用的OS內(nèi)核、在顯示器121和鍵盤122之間進行輸入輸出控制用的控制臺、進行記錄文件等的更新用的文件管理程序,以及通過線路和FDDI進行數(shù)據(jù)通信用的通信管理程序;應(yīng)用程序群包括進行聯(lián)機處理等用的各種軟件。根據(jù)這些軟件設(shè)置相應(yīng)的參考表和緩沖區(qū)。
上述通信管理程序與圖6中進行過說明的通信管理程序340相同。特別是通信管理程序中的驅(qū)動程序,備有如圖16所示結(jié)構(gòu)的接口信息,將輸入輸出起動指令發(fā)送給IOA128。以后說明本實施例2中的通信管理的驅(qū)動程序和通信協(xié)議時,將使用圖6中所示的編號。
圖13是IOA128的內(nèi)部結(jié)構(gòu)框圖。IOA128由下述功能塊構(gòu)成。即總線接口LSI401,用來控制作為輸入輸出總線的外部總線和作為IOA128的內(nèi)部總線的局部總線之間的接口;MPU402(為了和主機100的處理裝置的CPU123相區(qū)別,所以此處稱為MPU)是與CPU相同的處理裝置;局部存儲器(LM)403;以及SCSI通信協(xié)議處理機404。
由總線接口LSI401受理來自CPU123對IOA128的指示。總線接口ISI401由下述的4個功能塊構(gòu)成外部總線控制部,這是根據(jù)CPU的地址信號值,在控制數(shù)據(jù)總線的總線開閉的過程中、控制發(fā)送給CPU的中斷信號的程序塊;結(jié)構(gòu)寄存器控制部,這是控制與CPU123之間的接口用的寄存器群并對其進行訪問存取(輸入輸出信息的寫入和對MPU402的中斷等)的程序塊;外部總線—局部總線變換部,由它來進行外部總線中的地址信號和局部總線中的地址信號的變換的程序塊;局部總線控制部,它是控制局部總線的開閉用的程序塊。
在局部存儲器(LM)403中寫入IOA控制程序(C/W目標)及控制所需的信息(注解項、命令鏈、跟蹤、工作)。以后將對這些信息進行說明。SCSI通信協(xié)議處理機404兼作具有SCSI總線控制功能的SCSI控制部、以及具有DMA輸送功能的數(shù)據(jù)輸送控制部之用。
圖14表示根據(jù)通過SCSI總線從IOA128送來的一系列命令,進行每條線路的數(shù)據(jù)輸入輸出處理的MCI130的內(nèi)部結(jié)構(gòu)。MCI130由以下兩大部分構(gòu)成。即LP510和LC520。
LP510是處理二級通信協(xié)議的處理機模塊。LC520是處理物理線路之間的接口用的處理機模塊,共有多個。LP510與第1實施例中的IOCU147相對應(yīng),LC520與第2實施例中的DEV148相對應(yīng)。
LP510是由SCSI控制器511、存儲器512、全局存儲器513、MPU514以及MPU用的存儲器515構(gòu)成的。SCSI總線接口用于控制SCSI、存儲器512供SCSI控制器使用、全局存儲器513供通信數(shù)據(jù)緩沖器使用。LC520是由LC用的處理裝置(即LCP521及LCP用的存儲器522)構(gòu)成的。
圖15表示實施例2中的通信服務(wù)器輸送數(shù)據(jù)時的順序。CPU123首先生成命令505(后面說明),并將其設(shè)定在命令表目504(后面說明)中。然后訪問IO命令寄存器501(后面說明),起動IOA128。然后,由業(yè)已起動的IOA128將命令表目504讀入該LM403中。IOA128根據(jù)讀入的命令表目信息,找出該命令,分析其內(nèi)容。在連接與目標MCI130之間的總線以后,向MCI130發(fā)送命令。接著,IOA128將待發(fā)送的數(shù)據(jù)從MU124向該MCI130的全局存儲器513進行DMA輸送。當IOA128收到來自該MCI130的數(shù)據(jù)輸送結(jié)束的通知以后,在斷開與SCSI總線的連接的同時,將結(jié)束信息寫入MU124。通過命令結(jié)束中斷信息的轉(zhuǎn)存,將命令結(jié)束通知CPU123。通過中斷起動的CPU123校驗結(jié)束信息。
圖16表示實施例2中的通信服務(wù)器接收數(shù)據(jù)時的順序。在發(fā)送來自IOA128的命令之前所有的順序與圖15中的數(shù)據(jù)發(fā)送時的相同,其不同之處在于所發(fā)送的命令是read command(讀出命令)。read command發(fā)送后,IOA128等待來自MCI130的信號。當MCI130中還沒有接收的數(shù)據(jù)時,IOA128根據(jù)來自MCI130的總線的斷開請求,將總線斷開。MCI130在收到數(shù)據(jù)后,將接收通知發(fā)送給IOA128。IOA128收到接收通知后,再將與MCI130的總線接通,通過DMA輸送,將接收數(shù)據(jù)輸送給MU124。此后的順序與用圖15說明過的發(fā)送時的情況相同。
圖17是進行輸入輸出運作時所參考的CPU—IOA之間的接口信息關(guān)系圖。在本實施例中,因為CPU123是采用RISC型處理機,因此不能用專用指令作為輸入輸出起動指令,所以IO方式采用了存儲變換IO方式。這是一種將CPU123的存儲空間的一部分分配給IOA128的IO命令寄存器501的方式。對該地址執(zhí)行裝入指令,就是訪問IO命令寄存器501,相當于發(fā)送輸入輸出起動指令。
命令表目地址502是存在MU124內(nèi)的固定地址的信息,IOA128是記錄了讀取命令表目504的地址需用的標題信息。當然,IOA128知道命令表目地址504的地址。命令接口503是將512個命令表目504連續(xù)排列形成的數(shù)據(jù)組表。之所以要將兩個合并在一起是為了簡化在參考IOA128命令表目進行處理運作時所用的指針。
各個命令表目504都存有命令505所用的指示字。命令505中存有傳輸區(qū)506的信息和對下一個命令505的指示字信息。命令505利用該對下一個命令505的指示字進行連結(jié),構(gòu)成命令串。由于由一個命令表目指示一串命令串,因此就總體而言,是由一個命令接口指示多個命令串。
傳輸區(qū)506是在發(fā)送時存儲發(fā)送數(shù)據(jù)的區(qū)域,在接收時則是用作儲存接收數(shù)據(jù)用的緩沖器,命令結(jié)束后又變成儲存接收數(shù)據(jù)用的區(qū)域。
圖18是用來說明命令505用的詳圖。下一個命令地址是構(gòu)成命令串用的指示字信息,是對下一個命令505的指示字。標志eoc是表示最后的命令串用的信息。當標志eoc為0時,表示在該命令之后還有下一個命令,當標志eoc為1時,表示該命令是命令串的最后一個命令。設(shè)備ID是識別線路用的信息。
標志區(qū)由以下3個標志構(gòu)成。這3個標志是dc、crep、int。
dc標志是構(gòu)成數(shù)據(jù)鏈用的標志。所謂數(shù)據(jù)鏈是指該命令與下一個命令相同時而言。即當下一個命令是與該命令對另一數(shù)據(jù)區(qū)進行相同的輸入輸出運作的命令時,該命令的dc標志為1。在除此以外的情況下,dc標志為0。當命令不同時稱為命令串。crep標志是按該命令進行的運作結(jié)束時指示生成結(jié)束信息用的信息。int標志是供在按該命令進行的運作結(jié)束時指示產(chǎn)生結(jié)束中斷信息之用的。在本實施例中,在各命令結(jié)束后,采用通過中斷信息結(jié)束接收運作的方式。
IOA命令是表示DMA起動請求的信息。輸送區(qū)地址是前面所述的輸送區(qū)506的地址,輸送長是該地址的長度。SCSI命令是MCI130應(yīng)執(zhí)行的命令(read/send等)(讀/發(fā)送等)。結(jié)束信息區(qū)是IOA128記錄結(jié)束信息的區(qū)域。另外,命令505是由8個字構(gòu)成的,以便IOA128容易參考。
圖19是說明命令表目504用的詳圖。標志busy是表示IOA128是否將該命令表目504從MU124讀入LM403的標志。即CPU123在MU124內(nèi)生成命令表目504時,該標志設(shè)為1,使IOA128起動,而當IOA128讀取該命令表目504時,則設(shè)為0。
命令表目504內(nèi)的設(shè)備ID與命令505的設(shè)備ID相同,是指示進行輸入輸出的設(shè)備(在本實施例中是指線路)的識別信息。用該命令表目504中的設(shè)備ID指定一個設(shè)備作為由該命令表目504指示的一系列命令505的輸入輸出對象。從而也可以說即便不設(shè)圖18所示的各命令505中的設(shè)備ID欄也可以使用,但有時是為了處理故障時使用而設(shè)置的。
現(xiàn)參照圖19進行說明,將表示DMA輸送的值寫入命令表目504內(nèi)的命令表目命令中。命令串的標題地址是命令串中開頭的命令505的地址。故障信息存儲地址是用于儲存發(fā)生故障時的信息區(qū)的地址。故障信息存儲區(qū)長是上述區(qū)域的大小。命令表目504由8個字構(gòu)成,以便IOA128容易參考。
其次說明IOA128的處理邏輯。圖20,圖21及圖22是說明圖13所示的IOA128內(nèi)的MPU402的處理邏輯用的程序圖。圖23是在上述處理邏輯中要參考的LM403中的信息結(jié)構(gòu)。
在說明IOA128的處理邏輯之前,先參照圖23說明LM403中的信息結(jié)構(gòu)。命令表目復(fù)制管理表580是管理IOA128從MU124讀入的命令表目的表。命令表目復(fù)制581是用于儲存讀入的命令表目的復(fù)制等的表。執(zhí)行命令處理表582是處理命令時參照用的表。
為了管理方便用鏈連結(jié)起來的一系列命令表目復(fù)制581,命令表目復(fù)制管理表580保留開頭的命令表目復(fù)制581的地址和最后的命令表目復(fù)制581的地址。命令表目復(fù)制數(shù)是由表580管理的命令表目復(fù)制581的個數(shù)。執(zhí)行命令表目復(fù)制地址是執(zhí)行過程中的命令表目復(fù)制581的地址。
命令表目復(fù)制581是通過讀取命令表目而生成的信息,它由復(fù)制來自命令表目504的必要信息的區(qū)域、執(zhí)行命令處理表582的地址和下一個命令表目復(fù)制的指示字信息構(gòu)成。
執(zhí)行命令處理表582是記錄命令的輸送處理中所必要的信息的處理表,它由表示執(zhí)行過程中的命令的位置的執(zhí)行命令地址、剩余命令數(shù)、以及read命令發(fā)送完畢標志構(gòu)成。
下面根據(jù)用圖15及圖16說明過的處理順序,說明IOA128的處理邏輯。
圖22是用流程圖表示命令表目讀入處理的處理邏輯圖。如用圖15及圖16所說明的那樣,CPU123(及通信管理程序340中的驅(qū)動程序345)生成圖18所示的命令505,并在圖19所示的命令表目504中進行設(shè)定,最后在MU124內(nèi)生成圖17所示結(jié)構(gòu)的接口信息,通過訪問IO命令寄存器501,進行中斷處理。
由于來自該CPU123的中斷,在IOA128中,圖22中的命令表目讀入處理起動。在該處理過程中,IOA128內(nèi)的MPU402從用命令表目地址502的值表示的命令表目504開始處理。
首先,CPU123將設(shè)定在MU124內(nèi)的命令表目504中的信息復(fù)制在LM403內(nèi)的命令表目復(fù)制區(qū)中(步5701)。然后,把剛才生成的命令表目復(fù)制581(圖23)登記在命令表目復(fù)制管理表580中(步5703)。
這些處理是采用一種在一系列命令表目復(fù)制581的鏈的最后增加新的命令表目復(fù)制581的方式。即,首先在LM403內(nèi)的命令表目復(fù)制區(qū)內(nèi)生成新的命令表目復(fù)制581,在此復(fù)制命令表目504中的信息。然后,設(shè)定剛才新生成的命令表目復(fù)制581的地址,作為命令表目復(fù)制581中的下一個命令表目復(fù)制欄的值。然后再更新命令表目復(fù)制管理表580中最后的命令表目復(fù)制的地址,并更新命令表目復(fù)制數(shù)。
當然,開始登記時,還要設(shè)定起始命令表目復(fù)制的地址和執(zhí)行命令表目復(fù)制的地址(步5703)。執(zhí)行命令表目復(fù)制地址的初始值是起始命令表目復(fù)制581的地址。
然后進行執(zhí)行命令處理表582的設(shè)定處理(步5707)。具體地說,重新生成執(zhí)行命令處理表582,將該執(zhí)行命令處理表582的地址設(shè)定在步5701中生成的命令表目復(fù)制581的執(zhí)行命令處理表地址欄內(nèi)。另外,將該命令表目復(fù)制581的命令串起始地址(圖19)設(shè)定在該執(zhí)行命令處理表582的執(zhí)行命令地址欄內(nèi)。然后根據(jù)該命令中的起始地址檢查未用鏈連接起來的命令串。將構(gòu)成命令串的命令鏈數(shù)記錄在該執(zhí)行命令處理表582的剩余命令數(shù)欄內(nèi)。
然后進行下一個命令表目的判斷處理(步5707)。即,將該命令表目504中的busy標志清除后,算出下一個命令表目504的地址,檢查其busy標志。如果設(shè)立了標志,由于該命令表目504尚未取入IOA,所以從步5701返回,繼續(xù)進行命令表目的讀入運作。如果在步5707中未設(shè)立busy標志,使中斷處理結(jié)束(步5707)。
下面用圖20和圖21說明IOA128中的命令處理的主要邏輯。圖20是利用圖15進行過說明的發(fā)送時的處理邏輯,圖21是利用圖16進行過說明的接收時的處理邏輯。
首先用圖20說明發(fā)送時的處理。根據(jù)命令表目復(fù)制管理表580中的執(zhí)行命令表目復(fù)制地址鏈進行搜索,找到應(yīng)執(zhí)行的命令的存儲地址執(zhí)行命令處理表582中的執(zhí)行命令地址。檢查該值是否為null,或者是否附有表示read發(fā)送完畢束標志(步5501)。
如果上述值為null或者已經(jīng)附有上述標志,則應(yīng)讀出對不同設(shè)備的執(zhí)行命令,更新命令表目復(fù)制管理表580中的執(zhí)行命令表目復(fù)制地址更新成指示下一個命令表目復(fù)制581(步5527)、返回步5501。
在步5501中,如果發(fā)現(xiàn)上述情況以外的情況,則根據(jù)用命令表目復(fù)制管理表580中的執(zhí)行命令表目復(fù)制地址指示的命令表目復(fù)制581的設(shè)備ID,進行搜索命令的執(zhí)行對象(即目標MCI的地址)的處理運作(步5503)。然后指定在步5503中查到的地址,將連接總線的請求發(fā)送給SCSI通信協(xié)議處理機404,斷開與目標MCI之間的總線(步5505)。
然后進行命令的檢驗。此時,用send命令或read命令將以后的處理運作分開(步5507)。有關(guān)遇到read命令時進行的接收處理留待以后說明,此處先對收到send時的處理運作進行說明。
MPU402要求SCSI通信協(xié)議處理機404將send命令送給目標MCI。于是,send命令通過原先接通的總線被輸送給目標MCI(步5509)。然后,為了將發(fā)送數(shù)據(jù)從MU124傳輸給目標MCI的存儲器,向處理機404指示執(zhí)行命令,發(fā)送DMA傳輸開始的請求。處理機404參照執(zhí)行命令,以DMA方式傳輸發(fā)送數(shù)據(jù)(用數(shù)據(jù)鏈連接的數(shù)據(jù))(步5511)。
然后,MPU402檢驗執(zhí)行命令的crep位(步5513)。如果該位接通,則根據(jù)來自目標MCI的結(jié)束報告,將結(jié)束報告寫入命令505內(nèi)的結(jié)束報告區(qū)(步5515)。如果crep位斷開時(或者在步5515以后),進行int位的檢驗(步5517)。
如果int位接通,則操作中斷信號線,對CPU123產(chǎn)生結(jié)束中斷信號(步5519)。在int位斷開的情況下或在步5517以后,進行eoc位的檢驗處理(步5521)。
如果eoc位接通,則對該命令表目復(fù)制581進行斷路處理(步5525)。即,從表580中將命令表目復(fù)制數(shù)減去1,更新執(zhí)行命令表目復(fù)制的地址(更新成指示下一個命令表目復(fù)制581)后,消除該執(zhí)行命令表目復(fù)制581。如果eoc位斷開,則進行執(zhí)行命令處理表582中的執(zhí)行命令地址的更新(更新成指示下一個命令)(步5523)。
在步5525以后,從步5501開始重復(fù)運作。在步5523以后,則從步5507開始重復(fù)運作。
下面用圖21說明在接收時的處理運作。在上述的處理步5507中應(yīng)執(zhí)行的命令如果是read命令時,MPU402要求處理機404將read命令發(fā)送給目標MCI。于是通過原先斷開的總線,輸送read命令(步5601)。
然后檢查對來自目標MCI的應(yīng)答,檢驗?zāi)繕薓CI中有無接收數(shù)據(jù)、即是否要進行斷開總線釋放(步5601)。在沒有接收數(shù)據(jù)時,進行總線釋放,對處理機404提出總線釋放請求(步5605)。然后,接通執(zhí)行命令處理表582中的Read發(fā)送結(jié)束標志(步5607)。此后,從步5527開始處理不同設(shè)備的命令。
當步5603中總線尚未釋放時(即有接收數(shù)據(jù)時),發(fā)送DMA開始傳輸請求,將接收數(shù)據(jù)從目標MCI輸送給MU124(步5609)。此后從步5513進行。
其次,參考圖21中下半部分的流程圖,說明在步5605中將總線斷開后產(chǎn)生接收數(shù)據(jù)時的處理運作。該處理程序是從read命令發(fā)送結(jié)束后的MCI開始的,通過再次連接與IOA128之間的總線,由所產(chǎn)生的中斷信號進行起動。
首先,在判明產(chǎn)生中斷信號的MCI的設(shè)備ID上認清目標MCI,檢索命令表目復(fù)制581和執(zhí)行命令處理表582,通過特定發(fā)送結(jié)束的命令,受理接收信息(步5611)。然后,斷開該表582中的Read發(fā)送結(jié)束標志(步5613)。然后發(fā)送DMA輸送請求,將接收數(shù)據(jù)從目標MCI傳送給MU124(步5615)。
此后,與圖20中的從步5513到步5521的處理相同,進行命令的位處理(從步5617至5625)。此時在步5621中進行的eoc位判斷處理若判為接通,則進行命令表目復(fù)制的斷路運作(步5627)。
以上說明了IOA128的主要處理程序。
實施例3在上述實施例1及2中,驅(qū)動程序從存在來自AP的接收請求開始,將read命令發(fā)送給CH142或IOA128。與此不同的是,本實施例3是在受理來自AP的接收要求之前,預(yù)先將read命令發(fā)送給IOA128(或CH)的實施例。將進行本處理的處理模塊稱為read先出處理。另外,此處是以將read先出處理功能加到上述實施例2(主要是驅(qū)動程序345)為例進行的說明,但也能適用于實施例1。
圖24是read先出處理所參照的先出read命令管理表400的結(jié)構(gòu)圖。圖25是用流程圖表示read先出處理的處理邏輯的圖。
現(xiàn)參照圖24對于先出read命令管理表400進行詳細說明。表400保留設(shè)備總數(shù)和最大read發(fā)送數(shù)。設(shè)備總數(shù)是由該設(shè)備可輸入輸出的設(shè)備總數(shù)。所謂最大read發(fā)送數(shù),是指以先出方式將read命令發(fā)送給各設(shè)備時的read命令的最大數(shù)。換句話說,是指用命令鏈將多個read命令集中起來以先出方式發(fā)送給各設(shè)備時的命令數(shù)的上限值。另外,表400中還存有一對多個(相當于設(shè)備總數(shù)的)設(shè)備ID和發(fā)送完畢的read數(shù)。所謂設(shè)備ID,是指用于識別各設(shè)備用的標識符信息。所謂發(fā)送完畢的read數(shù),是指在向與各設(shè)備ID相對應(yīng)的設(shè)備發(fā)送read命令但該命令運作尚未結(jié)束的命令數(shù)。另外,各發(fā)送完的read數(shù)在初始化即被清除。
其次,參照圖25說明處理邏輯。首先,最初(驅(qū)動程序初始化后開始)從步4109進行處理。這時將表400中的設(shè)備總數(shù)代入變量y,設(shè)定指示初始設(shè)備ID的指示字變量(開始時圖24中的設(shè)備ID指0x00)(步4109)。然后利用變量y的值將以后的處理分為兩部分。如果y>0,進入步4117,否則進入步4113(步4111)。
現(xiàn)從y>0的情況開始說明。參照表400,求出與上述指示字變量指示的設(shè)備ID相對應(yīng)的發(fā)送完畢的read數(shù)的值,從最大read發(fā)送數(shù)減去該發(fā)送完畢的read數(shù)的值,將該減得的結(jié)果代入變量Z(步4117)。然后,將表400中的適當?shù)陌l(fā)送完畢的read數(shù)的值更新為最大read發(fā)送數(shù)(步4115)。
然后生成由Z個read命令構(gòu)成的命令鏈(步4119)。然后將命令鏈登記在命令表目504中(步4121)。然后將變量y減去1,更新上述指示字變量(使之指示下一個設(shè)備ID)(步4123),再返回步4111。這樣對所有的設(shè)備進行步4111—4123的處理,將最大read發(fā)送數(shù)的先出read發(fā)送給各設(shè)備。
在步4111中如果y不大于0時,起動IOA128,開始輸入輸出(步4113)。至此,從初始化開始的一系列處理結(jié)束。
其次,說明根據(jù)read命令的結(jié)束中斷信號延長起動該處理的情況。
根據(jù)結(jié)束中斷信息,專門指定相應(yīng)的設(shè)備ID,從表400求出由相應(yīng)的設(shè)備ID發(fā)送完畢的read數(shù)(步4101)。由于該設(shè)備剛剛結(jié)束了一次輸入輸出的處理,所以將發(fā)送完畢的read數(shù)-1代入變量X(步4103),通過在表400中設(shè)定該發(fā)送完畢的read數(shù)的X值,進行更新(步4107)。
然后,判斷是否X≤0(步4105)。如果判斷值是肯定的,則由于現(xiàn)在的發(fā)送完畢的read數(shù)的值為0以下,所以為了發(fā)送先出read,則要從步4109開始進行處理。否則就要結(jié)束從中斷開始的處理。如果采用本處理方法,則當某設(shè)備在無先出read的條件下則可將其作為觸發(fā)器使用,將多個設(shè)備的read命令集中起來發(fā)送。
實施例4在上述的實施例1—3中說明了驅(qū)動程序345(圖6)的處理方法,但沒有說明通信協(xié)議處理343和輸入輸出命令的關(guān)系。在本實施例4中,考慮它們的關(guān)系,說明通過通信協(xié)議處理將數(shù)據(jù)劃分成多個信息包發(fā)送時,為了將一次能夠發(fā)送的信息包數(shù)的信息包如數(shù)傳輸出去,先生成由Write命令構(gòu)成的一系列命令串,然后進行發(fā)送的例子。
此處雖然是以將上述功能增加到實施例2中為例進行的說明(特別是將后面所述的處理加到圖6中的通信協(xié)議處理程序343和驅(qū)動程序345之間的接口部分的示例),但同樣也能應(yīng)用于其它實施例。
首先,說明通信協(xié)議處理343。在通信協(xié)議中,將稱為信息包的某一定長的數(shù)據(jù)單位作為信號收發(fā)單位。信息包是將稱為標題的通信協(xié)議控制信息加在原有數(shù)據(jù)的開頭形成的。因此,在通信協(xié)議處理343中,當原有數(shù)據(jù)(來自AP34的數(shù)據(jù))比上述信息包的大小大時,必須將其進行劃分,生成多個信息包。并將這種處理方式稱為信息包分割處理。
現(xiàn)參照圖26說明本實施例中的信息包分割處理方式。在該圖中,在橫線的上方表示劃分之前的原有數(shù)據(jù)和該數(shù)據(jù)的數(shù)據(jù)管理信息塊(以后稱為SPB)SPB0,其下方表示經(jīng)過信息包分割處理后的數(shù)據(jù)及其SPB。
首先,在進行信息包的分割處理之前,先將原有數(shù)據(jù)存入緩沖器Bfo中,一個SPB0保留原有數(shù)據(jù)的地址及其數(shù)據(jù)長度,用來管理原有數(shù)據(jù)D0。SPB是表示下一個SPB地址的字段等。當原有數(shù)據(jù)存儲在一個緩沖器中不加分割時,用若干SPB管理原數(shù)據(jù)。這時,若干SPB之間由下一個SPB地址結(jié)合起來(將它稱為SPB數(shù)據(jù)鏈)。
在圖26中,由于原有數(shù)據(jù)D0存儲在一個緩沖器中,所以SPB0的下一個SPB地址的值為null。null值表示鏈的結(jié)束值。因此,此處的null表示SPB數(shù)據(jù)鏈結(jié)束。
在圖26中,說明由原有數(shù)據(jù)D0生成兩個信息包的信息包分割處理方法,信息包分割處理是在通信協(xié)議處理343中進行的。
首先,信息包分割處理的內(nèi)容是分析原數(shù)據(jù)D0的數(shù)據(jù)長度,判定是否需要進行劃分、以及在劃分數(shù)據(jù)時數(shù)據(jù)的分割位置。表中將原有數(shù)據(jù)D0劃分成數(shù)據(jù)D1和數(shù)據(jù)D2。
為了生成第1信息包,一定要確保在儲存第1標題用的緩沖器BF1中生成標題。為了生成管理第1信息包的SPB,要記錄第1標題的地址及其數(shù)據(jù)長,接著生成記錄SPB0的地址的SPB1。然后,將SPB0的數(shù)據(jù)長度從數(shù)據(jù)D0的長度變更為數(shù)據(jù)D1的長度。然后,為了生成第2信息包,一定要確保在儲存第2標題用的緩沖器Bf2中生成標題。為了生成管理第2信息包的SPB,分別生成管理標題的SPB2和管理分割數(shù)據(jù)的SPB3。SPB2的生成方法與SPB1相同。SPB3是通過記錄數(shù)據(jù)D2的地址及其數(shù)據(jù)長度形成的。如上所述,在本實施例中,是采用不進行數(shù)據(jù)的移動處理的信息包分割方式。
其次,說明信息包分割處理和命令生成處理(利用驅(qū)動程序345生成圖17所示的數(shù)據(jù)的處理)之間的關(guān)系。
現(xiàn)根據(jù)網(wǎng)絡(luò)層的通信協(xié)議控制,說明窗口控制。所謂窗口控制是在不確認各數(shù)據(jù)信息包是否確已送到的狀態(tài)下先連續(xù)發(fā)送多個(規(guī)定數(shù))數(shù)據(jù)信息包然后再集中確認是否送到的控制方式。發(fā)送端根據(jù)從相應(yīng)的對方返回的受信順序號(Pr),設(shè)窗口尺寸為WS,在送信序號(PS)未達到WS+Pr-1之前,可以在不確認送達情況的條件下繼續(xù)進行數(shù)據(jù)信息包的發(fā)送運作。即,窗口尺寸(Ws)表示在不確認來自對方的送達情況的條件下能夠連續(xù)發(fā)送的數(shù)據(jù)信息包的最大極限數(shù)。
此時,當新發(fā)送完畢的信息包的發(fā)送順序號達到PS時,將連續(xù)傳輸數(shù)定義為WS+Pr-1-PS。連續(xù)傳輸數(shù)表示現(xiàn)在未經(jīng)確認來自對方的送達時能連續(xù)發(fā)送的數(shù)據(jù)信息包數(shù)。在本實施例中,將該連續(xù)傳輸數(shù)以內(nèi)的信息包匯總起來生成輸入輸出命令,并采用其一并傳輸至線路控制裝置的方式。采用這種方式與逐個傳輸信息包的方式相比,前者能提高輸入輸出效率。
將這種處理方式稱為信息包分割整批i0處理方式。對這種處理方式進行說明。首先,記錄上述連續(xù)輸送數(shù),以此作為通信控制信息。當連續(xù)輸送數(shù)不為0且有滯信息包時,將處理方式從信息包分割處理改為信息包分割整批i0處理。所謂滯留信息包,是指在采用信息包分割處理方式時生成的分割信息包。從信息包分割處理改為信息包分割整批i0處理時,要將在信息包分割處理過程中生成的分割信息包的總數(shù)作為滯留信息包數(shù)提交,同時還要提交各信息包的地址。
圖28是表示信息包成批i0處理的邏輯程序圖。圖27表示在信息包分割成批i0處理時生成的數(shù)據(jù)結(jié)構(gòu),同時也是對驅(qū)動程序的接口數(shù)據(jù)結(jié)構(gòu)圖。特別是圖27,圖26中下方的數(shù)據(jù)結(jié)構(gòu)(信息包分割處理時分割的數(shù)據(jù))表示信息包分割成批i0處理時的處理結(jié)果。
首先,在信息包分割成批i0處理時,對連續(xù)傳輸數(shù)(即在當時時刻在不對每個信息包的送達進行確認的狀態(tài)下能夠連續(xù)發(fā)送的信息包數(shù))和滯留信息包數(shù)(在進行信息包分割處理時分割的分割信息包數(shù))進行比較(步531)。當滯留信息包數(shù)在連續(xù)傳輸數(shù)以上時,用命令鏈將相當于連續(xù)傳輸數(shù)的信息包連接在滯留信息包的開頭(步535)。反之,當滯留信息包數(shù)比連續(xù)輸送數(shù)小時,用命令鏈連接全部滯留信息包(步533)。
在步533、535之后,向驅(qū)動器提出發(fā)送請求(步537)。然后,更新連續(xù)輸送數(shù)(步539)。具體地說,就是從連續(xù)傳輸數(shù)值中減去在步533、535中連接的信息包數(shù),作為新的連續(xù)傳輸數(shù)。
現(xiàn)以圖26中的下側(cè)部分及圖27為例,補充說明用命令鏈連接信息包的處理方式(步533、535)。為了從圖26的下側(cè)部分所示的數(shù)據(jù)結(jié)構(gòu)求出圖26所示的數(shù)據(jù)結(jié)構(gòu),首先在各SPB中設(shè)定在命令鏈使用的指示字段(初始值為null。然后進行搜索第1信息包即SPB1和下一個SPB鏈,并在最后的SPB(在本例中為SPB0)的命令鏈所用的指示字上設(shè)定第2信息包即SPB2的地址的處理。如果以后還有需要連接的信息包,按照同樣的順序反復(fù)進行處理即可。
圖29所示是根據(jù)在上述對信息包進行整批i0處理時生成的、如圖26所示的數(shù)據(jù)結(jié)構(gòu),生成命令鏈的驅(qū)動器345的處理邏輯程序圖。
首先,由驅(qū)動器345根據(jù)SPB(從開頭SPB開始處理的SPB)生成命令505(圖17、圖18)(步541)。然后,判斷該SPB的下一個SPB地址是否為null(步543)。如果該SPB的下一個SPB地址不為null,由于以后還有數(shù)據(jù),所以為了確保下一個命令505,要設(shè)定該命令505的鏈字段,并設(shè)置數(shù)據(jù)鏈位(dc位)(步545)。然后,再次重復(fù)從生成命令(步541)開始的處理。
如果在步543中判斷的結(jié)果為結(jié)果null,則判斷該SPB的命令鏈用指示字的值是否為null(步547)。其結(jié)果如果不是null,為了確保下一個命令505,要設(shè)定該命令505的鏈字段,并將數(shù)據(jù)鏈位(dc位)清零,設(shè)置中斷位(int位)(步549)。然后,再次重復(fù)從生成i0命令(步541)開始的處理。如果是null,設(shè)置該命令的結(jié)束位(eoc),結(jié)束處理。通過這種處理,生成采用通過一次i0運作發(fā)送多個信息包用的鏈連接的命令串。
實施例5
實施例5是提高上述實施例4的性能用的變形例。實施例5的特征是分包處理?,F(xiàn)參照圖30,說明分包處理方式。
在圖30中,信息包分包處理603是采用實施例4說明過的信息包分包處理方式。圖30的上段所示在不采用信息包分包處理603中的信息包分包時的發(fā)送數(shù)據(jù)結(jié)構(gòu)。當不采用信息包分包方式時,生成由標題部分采用SPB即SPB1和數(shù)據(jù)部分采用SPB即SPB0兩個部分構(gòu)成的發(fā)送數(shù)據(jù)結(jié)構(gòu)。
因此,將該發(fā)送數(shù)據(jù)直接傳輸至驅(qū)動器345,生成命令串,由于在驅(qū)動器345中只要出現(xiàn)一個SPB必然要生成一個命令,所以就形成由2個命令構(gòu)成的命令串的運作。若由IOA128執(zhí)行這個命令串,實際上等于處理2個命令。這兩個命令雖然用命令鏈連接起來,但在DMA處理時要經(jīng)過緩沖器切換,從而增大了系統(tǒng)的開銷,因此數(shù)據(jù)輸送處理時間也就變長,性能也有所下降。為了提高性能,就要用一個命令完成上述處理運作,這就是重分包處理601。
圖30的中段所示是采用重分包處理601的制作過程,用一個SPB表示的信息包。圖31是用流程圖表示重分包處理601的處理邏輯的圖。
首先,在重分包處理601中將采用SPB0表示的數(shù)據(jù)長度和數(shù)據(jù)長度判斷信息600進行對比,判定是否要進行重分包(步611)。
先對數(shù)據(jù)長度判斷信息600的值進行說明?,F(xiàn)在將IOA處理一個命令的系統(tǒng)的開銷定義為0(C)。設(shè)數(shù)據(jù)長度(字節(jié))為D1,并設(shè)使數(shù)據(jù)移動一個字節(jié)的位置所需要的系統(tǒng)開銷為0(m1),于是長度為D1的數(shù)據(jù)移動時的系統(tǒng)開銷(設(shè)為0(md))就要用0(m1)·D表示。當設(shè)定的0(c)比0(md)大時,重分包方式有效,此時的數(shù)據(jù)長度D1要滿足D1<0(c)/0(m1)的條件。因此,預(yù)先算出0(c)/0(m1),作為數(shù)據(jù)長度的判斷信息600,在計算機起動時進行設(shè)定。
在步611中,對用SPB0表示的數(shù)據(jù)長和數(shù)據(jù)長度判斷信息600進行比較,當判定用SPB0表示的數(shù)據(jù)長度較比數(shù)據(jù)長度判斷信息600小時,則需要進行重分包,否則不要重分包。
在步611中,當判定需要重分包時,將數(shù)據(jù)用緩沖器Bf0中存儲的數(shù)據(jù)移到標題用緩沖器Bf1中的標題以后的區(qū)域(步613)。然后,斷開數(shù)據(jù)移動源即緩沖器Bf0(步615)。將null寫入SPB1的下一個SPB地址,進行SPB鏈的更新(步617)。然后,斷開數(shù)據(jù)移動源的SPB即SPB0(步619),于是整個處理結(jié)束。
實施例6以上所述的實施例1—5所采用的結(jié)構(gòu)都是能用一次輸入輸出指令執(zhí)行對多個設(shè)備的多個輸入輸出命令,從而提高了輸入輸出效率。在以下所述的實施例6中,是根據(jù)輸送到設(shè)備即輸入輸出裝置的用戶的數(shù)據(jù)長度,調(diào)整內(nèi)核空間中的輸送數(shù)據(jù)的存儲標題位置,從輸送處理總體的角度來看,能夠使處理效率最佳化,從而能提高輸入輸出效率。下面參照圖32—圖38,說明實施例6。
在現(xiàn)有的輸送處理方式中,從用戶空間到內(nèi)核空間進行的數(shù)據(jù)轉(zhuǎn)錄處理、以及從內(nèi)核空間向輸入輸出裝置輸送的處理,都是作為獨立的處理程序進行的,并沒有從系列處理的角度考慮最佳化的問題。因此,例如,為了使從用戶空間到內(nèi)核空間進行數(shù)據(jù)轉(zhuǎn)錄的處理達到最佳化,先要使轉(zhuǎn)錄源及轉(zhuǎn)錄目標的存儲器中的數(shù)據(jù)存儲起始位置的邊界值一致;對于從內(nèi)核空間向輸入輸出裝置傳輸時的輸送處理來說,如果存儲器中的存儲起始位置的邊界值不恰當,至少是在尚未達到恰當?shù)倪吔缰抵?,就要以小單位進行傳輸,特別是當數(shù)據(jù)長短不齊時,要增大系統(tǒng)的開銷。反之,對于從內(nèi)核空間向輸入輸出裝置傳輸送時的傳輸處理來說,在將存儲器中的存儲起始位置的邊界值設(shè)定在最佳值之后,從用戶空間向內(nèi)核空間進行數(shù)據(jù)轉(zhuǎn)錄時,轉(zhuǎn)錄源及轉(zhuǎn)錄目標的存儲器中的數(shù)據(jù)存儲起始位置的邊界值不一定一致,于是就要以小單位進行轉(zhuǎn)錄,特別是當數(shù)據(jù)長度較長時,就會使系統(tǒng)開銷增大。
因此,在本實施例中所述的是這樣一種計算機系統(tǒng),它在分別提供具有獨立的運作空間的用戶程序方式及內(nèi)核程序方式這樣兩種程序執(zhí)行方式的操作系統(tǒng)下運作,并且以直接存儲器存取方式在中央處理裝置和輸入輸出裝置之間傳輸數(shù)據(jù),在該計算機系統(tǒng)中備有下述三種裝置一是為了將在按用戶程序方式運作的程序運作空間(用戶程序空間)中存在的數(shù)據(jù)輸送給輸入輸出裝置,在將上述數(shù)據(jù)暫時轉(zhuǎn)錄在按內(nèi)核程序方式運作的空間(內(nèi)核程序空間)的處理過程中,當轉(zhuǎn)錄的數(shù)據(jù)長度隨計算機系統(tǒng)的不同而比預(yù)先決定的長度短時,將內(nèi)核程序空間中的傳輸數(shù)據(jù)的存儲起始位置按照向輸入輸出裝置傳輸時的最佳效率值進行設(shè)定用的設(shè)定裝置;而當上述轉(zhuǎn)錄的數(shù)據(jù)長度不比預(yù)先決定的長度短時,則該裝置能將內(nèi)核程序空間中的輸送數(shù)據(jù)的存儲起始位置按照從用戶程序空間向內(nèi)核程序空間轉(zhuǎn)錄時的最佳效率值進行設(shè)定;二是在從用戶程序空間向內(nèi)核程序空間進行數(shù)據(jù)轉(zhuǎn)錄處理時,當轉(zhuǎn)錄的數(shù)據(jù)長隨計算機系統(tǒng)的不同而比預(yù)先決定的長度長時,使用戶程序空間的輸送數(shù)據(jù)的存儲開頭位置與內(nèi)核程序空間的輸送數(shù)據(jù)的存儲開頭位置一致,根據(jù)邊界值,采用與最大數(shù)據(jù)型相對應(yīng)的輸送單位進行數(shù)據(jù)復(fù)制的裝置;三是將控制輸送用的控制信息附加到從用戶程序空間向內(nèi)核程序空間復(fù)制的數(shù)據(jù)之中,然后傳輸至輸入輸出裝置,在該處理過程中,特別要按照傳輸數(shù)據(jù)的類別切實準備存儲控制信息的區(qū)域,并且按照向輸入輸出裝置輸送時的最佳效率位置,將上述控制信息按照與上述相應(yīng)的數(shù)據(jù)的相關(guān)位置進行存儲的裝置。
圖32表示本實施例的計算機系統(tǒng)的結(jié)構(gòu)。計算機系統(tǒng)首先分為軟件層和硬件層,軟件層又分為用戶層和內(nèi)核層。
用戶層是計算機系統(tǒng)的用戶編制程序的運作層,有用戶程序3和系統(tǒng)調(diào)用庫4,在用戶層中,程序按照稱之為具有獨立的運作空間(稱之為用戶空間)的過程執(zhí)行單位進行運作。
內(nèi)核層是控制操作系統(tǒng)等系統(tǒng)總體運作的程序運作的層,它具有一個獨立的運作空間(把它稱為內(nèi)核空間)。在內(nèi)核層中,存在下述幾個模塊。系統(tǒng)調(diào)用接口5是用戶程序利用內(nèi)核功能用的模塊。通信協(xié)議處理部6對通信線路上的信息形式和設(shè)備驅(qū)動程序進行管理和識別。設(shè)備驅(qū)動器8是控制通信線路等的輸入輸出裝置10的運作的模塊。過程控制子系統(tǒng)7進行過程的生成執(zhí)行、調(diào)度、存儲管理等。硬件控制機構(gòu)9進行與硬件的通信和中斷處理。
本實施例的前提是,作為程序執(zhí)行單位的過程運作方式共有用戶方式(對應(yīng)于用戶層)及內(nèi)核方式(對應(yīng)于內(nèi)核層)兩種方式。在用戶方式情況下,只能存取過程單位中存在的用戶空間中的數(shù)據(jù),通過與其它過程進行時間分隔且能并行運行,不是與其它用戶方式及內(nèi)核方式的過程并行運作,而是系列處理,能夠一直進行到結(jié)束。
其次根據(jù)圖33說明用戶程序?qū)⒂脩艨臻g中的數(shù)據(jù)傳輸?shù)酵ㄐ啪€路的處理流程的一個示例。
(1)用戶程序?qū)⒄埱髷?shù)據(jù)輸送用的系統(tǒng)調(diào)用發(fā)送給內(nèi)核程序(①)。
(2)從用戶方式切換到內(nèi)核方式,訪問相應(yīng)的內(nèi)核層的處理表目(系統(tǒng)調(diào)用接口)。這時,內(nèi)核層的處理按照發(fā)送系統(tǒng)調(diào)和的用戶程序的過程進行運作。
(3)系統(tǒng)調(diào)用接口從用戶空間轉(zhuǎn)錄輸送給輸入輸出裝置用的數(shù)據(jù)(②)。然后為了將輸送請求轉(zhuǎn)送到通信協(xié)議處理部按照其適用的信息形式進行生成等處理之后(③),利用設(shè)備驅(qū)動器及硬件控制機構(gòu),使輸入輸出裝置開始運作(④),此后,由于輸送運作結(jié)束,該過程中斷(Wait)(⑤)。這時,過渡到其它過程的控制。
(4)輸送運作結(jié)束后,輸入輸出裝置對軟件發(fā)送中斷信號。利用該中斷機會,調(diào)用硬件控制機構(gòu)的中斷程序(⑥)。
(5)中斷程序起動呼叫過程,再起動(post)(⑦)。
(6)從內(nèi)核方式切換到用戶方式,伴隨輸送結(jié)果,使控制返回用戶程序(⑧)。
其次,根據(jù)圖34說明將輸送數(shù)據(jù)(1,2)從用戶空間轉(zhuǎn)錄到內(nèi)核空間的處理的一個示例。對于用戶程序中的系統(tǒng)調(diào)用發(fā)送來說,當從用戶層切換到內(nèi)核層時,系統(tǒng)調(diào)用接口部按照以下順序?qū)鬏敂?shù)據(jù)從用戶空間轉(zhuǎn)錄到內(nèi)核空間。
首先,參照轉(zhuǎn)錄數(shù)據(jù)長度。如圖35所示,將轉(zhuǎn)錄數(shù)據(jù)長度記錄在管理緩沖器12的實體緩沖器管理表11中。當該數(shù)據(jù)長度比由計算機系統(tǒng)預(yù)先決定的值短時,在將內(nèi)核空間中的輸送數(shù)據(jù)的存儲起始位置輸送給輸入輸出裝置時設(shè)定為最佳效率值。例如,輸入輸出裝置用直接存儲器存取方式(以下簡稱DMA)將存儲器中的數(shù)據(jù)輸送給輸入輸出裝置時,用32字節(jié)單位進行的輸送,就輸入輸出總線的輸送能力來說效率最好,因此,必須將輸送數(shù)據(jù)的存儲起始位置設(shè)定在32字節(jié)邊界上。這時,將內(nèi)核空間中的輸送數(shù)據(jù)的存儲起始位置設(shè)定在32字節(jié)邊界上。
另一方面,當上述數(shù)據(jù)長度比由計算機系統(tǒng)預(yù)先決定的長度值長時,將內(nèi)核空間中的輸送數(shù)據(jù)的存儲起始位置從用戶空間轉(zhuǎn)錄到核心空間時,設(shè)定效率最佳值。例如,計算機系統(tǒng)的存儲器內(nèi)的數(shù)據(jù)轉(zhuǎn)錄時,可為長度(4個字節(jié)單位)、字(2個字節(jié)單位)、字節(jié)(1個字節(jié)單位,用各種數(shù)據(jù)單位轉(zhuǎn)錄時,轉(zhuǎn)錄源的數(shù)據(jù)存儲起始位置和轉(zhuǎn)錄目標的數(shù)據(jù)存儲開頭位置必須配置在上述各邊界上。這時,通過設(shè)定內(nèi)核空間內(nèi)的輸送數(shù)據(jù)的存儲起始位置,使轉(zhuǎn)錄源的數(shù)據(jù)存儲起始位置與轉(zhuǎn)錄目標的數(shù)據(jù)存儲起始位置一致,就能實現(xiàn)最佳效率的數(shù)據(jù)轉(zhuǎn)錄處理。如圖36所示,其原因是因為如果使轉(zhuǎn)錄源的數(shù)據(jù)存儲起始位置和轉(zhuǎn)錄目標的數(shù)據(jù)存儲起始位置一致,則除了到長字邊界的半邊以外,還可用長字單位轉(zhuǎn)錄。
其次給出作為上述數(shù)據(jù)轉(zhuǎn)錄處理的判斷條件的“由計算機系統(tǒng)預(yù)先決定的值”的一個示例。首先,求出在從用戶空間向內(nèi)核空間進行的數(shù)據(jù)轉(zhuǎn)錄的過程中達到最佳化的總輸送時間。設(shè)用戶空間內(nèi)的輸送數(shù)據(jù)的存儲起始位置為13個字節(jié)邊界,輸送數(shù)據(jù)長為x字節(jié),進行一次數(shù)據(jù)轉(zhuǎn)錄或DMA輸送所需的單價分別為1μs/字節(jié)、10μs/字節(jié)。并設(shè)數(shù)據(jù)轉(zhuǎn)錄及輸送處理是按上述方式進行。這時,總輸送時間值如下所列〔(X-1)/4+1〕+〔13+(X-16)/32〕×10
其次,在同樣條件下,當向輸入輸出裝置的輸送達到最佳化時,求出總輸送時間值如下所列。
X+〔X/32×10〕上述兩值中的第1項都是從用戶空間向內(nèi)核空間轉(zhuǎn)錄數(shù)據(jù)所需要的時間,第2項都是向輸入輸出裝置輸送用的時間。圖37中用曲線圖表示上述關(guān)系。在此示例中可知168個字節(jié)是邊界值。
在向輸入輸出裝置輸送數(shù)據(jù)時,通常多半將控制信息添加在輸送數(shù)據(jù)上。例如,在對通信線路之間進行數(shù)據(jù)收發(fā)時,將通信協(xié)議標題附加到輸送數(shù)據(jù)上。控制信息用內(nèi)核層附加。圖38示出了控制信息的附加方法的一個示例。在本示例中,在與通信線路進行數(shù)據(jù)的收發(fā)時,將通信協(xié)議標題加在輸送數(shù)據(jù)上,確保其它區(qū)域的緩沖。通信協(xié)議的存儲起始位置是向輸入輸出裝置輸送時的最佳效率位置。在上述例中有32個字節(jié)邊界。
作為從輸入輸出裝置輸入數(shù)據(jù)的方法的一個示例,有如下方法。用戶程序在用戶空間準備輸入緩沖器后,發(fā)送系統(tǒng)調(diào)用。與此相反,內(nèi)核層的程序在內(nèi)核空間中預(yù)先準備輸入緩沖器后,向輸入輸出裝置發(fā)送輸入請求。
這時,與輸出時一樣,將內(nèi)核空間內(nèi)的輸入緩沖器的輸送數(shù)據(jù)的存儲起始位置作為從輸入裝置輸送時最佳效率位置。在上述示例中,有32個字節(jié)邊界。另一方面,從輸入輸出裝置輸入的數(shù)據(jù)存在于內(nèi)核空間,必須將其輸送到用戶空間。這時,通過使用為用戶程序準備的緩沖器的輸送數(shù)據(jù)存儲位置的邊界與內(nèi)核空間的輸送數(shù)據(jù)存儲位置的邊界(上述例中為長字邊界)一致,就能進行高效的轉(zhuǎn)錄處理。
權(quán)利要求
1.一種計算機系統(tǒng),它備有多個輸入輸出裝置;與該多個輸入輸出裝置連接的適配裝置;以及通過該適配裝置將輸入輸出請求發(fā)送至上述輸入輸出裝置的主處理裝置,該計算機系統(tǒng)的特征在于上述主處理裝置備有將多個輸入輸出命令作為一次輸入輸出起動指令,發(fā)送給上述多個輸入輸出裝置的裝置,上述適配裝置備有將上述一次輸入輸出起動指令中包含的對多個輸入輸出裝置的多個輸入輸出命令具體指定是針對某個輸入輸出裝置的輸入輸出命令的裝置;以及將對上述多個輸入輸出裝置的多個輸入輸出命令分別發(fā)送至上述特定的輸入輸出裝置的裝置。
2.一種計算機系統(tǒng),它備有多個輸入輸出裝置;與該多個輸入輸出裝置連接的適配裝置;以及通過該適配裝置將輸入輸出請求發(fā)送至上述輸入輸出裝置的主處理裝置,該計算機系統(tǒng)的特征在于上述主處理裝置備有保留并管理對上述輸入輸出裝置的輸入輸出請求用的排隊請求管理表;當產(chǎn)生對上述輸入輸出裝置的輸入輸出請求后,如果不能立即處理該輸入輸出請求時,則將該輸入輸出請求保留在上述排隊請求管理表中的裝置;以及當輸入輸出請求的處理變?yōu)榭赡軙r,根據(jù)該時刻保留在上述排隊請求管理表中的輸入輸出請求,按每個輸入輸出裝置生成連接應(yīng)發(fā)送至上述各輸入輸出裝置的輸入輸出命令的串列,即命令串,并以一次輸入輸出起動指令,將這些命令串發(fā)送給上述適配裝置的裝置。上述適配裝置備有將上述一次輸入輸出起動指令中包含的多個命令串具體指出是針對某個輸入輸出裝置的命令串的裝置;以及將上述多個命令串中的各輸入輸出命令分別發(fā)送至上述特定的輸入輸出裝置的裝置。
3.權(quán)利要求2所述的計算機系統(tǒng),其特征在于上述輸入輸出裝置備有在所發(fā)送的輸入輸出命令經(jīng)過處理結(jié)束后,將結(jié)束中斷信號發(fā)送至上述主處理裝置的裝置,上述主處理裝置備有以來自上述輸入輸出裝置的輸入輸出命令的結(jié)束中斷信號為契機,判斷輸入輸出請求的處理是否可能,當可能時,根據(jù)該時刻保留在上述排隊請求管理表中的輸入輸出請求,按各輸入輸出裝置生成連接應(yīng)發(fā)送至上述各輸入輸出裝置的輸入輸出命令的串列即命令串,并以一次輸入輸出起動指令,將這些命令串發(fā)送給上述適配裝置的裝置。
4.權(quán)利要求2所述的計算機系統(tǒng),其特征在于上述以一次輸入輸出起動指令從上述主處理裝置發(fā)送給上述適配裝置的多個命令串,以信息組為基本單位,在該信息組中包括指定命令串的起始位置的地址信息和特定命令串中的各命令的執(zhí)行對象的一個輸入輸出裝置的標識符信息,該信息組由具有多個連續(xù)結(jié)構(gòu)的表進行管理。
5.根據(jù)權(quán)利要求4所述的計算機系統(tǒng),其特征在于上述表的各信息組中設(shè)有表示上述適配裝置是否將與該信息組相對應(yīng)的命令串讀入的標志信息,當上述主處理裝置發(fā)送輸入輸出起動指令時,將該標志信息接通發(fā)送,當上述適配裝置讀入該輸入輸出起動指令中的命令串時,將該標志信息斷開。
6.一種計算機系統(tǒng),它備有多個輸入輸出裝置與該多個輸入輸出裝置連接的適配裝置;通過該適配裝置,將輸入輸出請求發(fā)送至上述輸入輸出裝置的主處理裝置,同時該主處理裝置備有執(zhí)行應(yīng)用程序的應(yīng)用執(zhí)行部和處理從該應(yīng)用執(zhí)行部發(fā)送的輸入輸出請求的驅(qū)動部,該計算機系統(tǒng)的特征在于上述主處理裝置的驅(qū)動部備有根據(jù)從上述應(yīng)用執(zhí)行部發(fā)送的輸入輸出請求,生成輸入輸出命令,同時,以一次輸入輸出起動指令發(fā)送對多個輸入輸出裝置的多個輸入輸出命令的裝置,上述適配裝置備有將上述一次輸入輸出起動命令中包含的對多個輸入輸出裝置的多個輸入輸出命令具體指定是針對某個輸入輸出裝置的輸入輸出命令的裝置;以及將對上述多個輸入輸出裝置的多個輸入輸出命令分別發(fā)送至上述特定的輸入輸出裝置的裝置。
7.一種計算機系統(tǒng),它備有多個輸入輸出裝置;與該若干輸入輸出裝置連接的適配裝置;通過該適配裝置將輸入輸出請求送給上述輸入輸出裝置的主處理裝置,同時該主處理裝置備有執(zhí)行應(yīng)用程序的應(yīng)用執(zhí)行部和處理從應(yīng)用執(zhí)行部發(fā)送的輸入輸出請求的驅(qū)動部,該計算機系統(tǒng)的特征在于上述主處理裝置的驅(qū)動部備有保留并管理從上述應(yīng)用執(zhí)行部發(fā)送的輸入輸出請求用的排隊請求管理表;當產(chǎn)生來自上述應(yīng)用執(zhí)行部的輸入輸出請求后,不能立即處理該輸入輸出請求時,將該輸入輸出請求保留在上述排隊請求管理表的裝置;以及當輸入輸出的處理變?yōu)榭赡軙r,根據(jù)該時刻保留在上述排隊請求管理表中的輸入輸出請求,以每個輸入輸出裝置為單位生成將應(yīng)送給上述各輸入輸出裝置的輸入輸出命令連成的串列即命令串,并以一次輸入輸出起動指令,將這些命令串發(fā)送給上述適配裝置的裝置,上述適配裝置備有將上述一次輸入輸出起動指令中包含的多個命令串具體指定是針對某個輸入輸出裝置的命令串的裝置;以及將上述多個命令串中的各輸入輸出命令發(fā)送至上述特定的輸入輸出裝置的裝置。
8.權(quán)利要求6或7所述的計算機系統(tǒng),其特征在于在上述主處理裝置中的驅(qū)動部中還備有在從上述應(yīng)用執(zhí)行部接收數(shù)據(jù)的輸入請求之前,將對上述多個輸入輸出裝置的多個輸入命令作為一次輸入輸出起動指令,先輸出給上述適配裝置的裝置。
9.根據(jù)權(quán)利要求8所述的計算機系統(tǒng),其特征在于上述使輸入命令先出的裝置備有存儲第1規(guī)定數(shù)的第1存儲裝置,該第1規(guī)定數(shù)表示對上述輸入輸出裝置的輸入命令的最大發(fā)送數(shù);存儲第2規(guī)定數(shù)的第2存儲裝置,該第2規(guī)定數(shù)用來規(guī)定再次發(fā)送輸入命令串的契機;以及用于記錄對上述各輸入輸出裝置的未結(jié)束的輸入命令數(shù)的第3存儲裝置,上述驅(qū)動部經(jīng)過初始化后,以每個輸入輸出裝置為單位,生成將輸入命令按第1規(guī)定數(shù)連起來的輸入命令串,并將其發(fā)送至上述適配裝置,將發(fā)送給各輸入輸出裝置的輸入命令數(shù)記錄在第3存儲裝置中,以后每次從上述各輸入輸出裝置接收到輸入命令的結(jié)束報告后,將第3存儲裝置中存儲的相應(yīng)的輸入輸出裝置的未結(jié)束的輸入命令數(shù)中減1,通過該處理,如果該輸入輸出裝置中的未結(jié)束的輸入命令數(shù)為第2規(guī)定數(shù),則算出第3存儲裝置中存儲的未結(jié)束的輸入命令數(shù)與第1存儲裝置中存儲的第1規(guī)定數(shù)之差,將連接了相當于該差值的輸入命令的輸入命令串再發(fā)送給上述適配裝置。
10.權(quán)利要求6或7所述的計算機系統(tǒng),其特征在于上述輸入輸出裝置是線路控制裝置。上述主處理裝置備有通信協(xié)議處理部,該通信協(xié)議處理部分割與從上述應(yīng)用執(zhí)行部發(fā)送的數(shù)據(jù)請求有關(guān)的數(shù)據(jù),將通信協(xié)議控制信息加在該分割后的各輸出數(shù)據(jù)的開頭,生成多個分割信息包,當上述多個分割信息包數(shù)小于該時刻在未曾收到來自對方的送達確認信息的狀態(tài)下而能連續(xù)輸送的信息包數(shù),即連續(xù)傳輸數(shù)時,上述主處理裝置的驅(qū)動部根據(jù)上述多個分割信息包,生成多個輸入輸出命令,通過將生成的多個輸入輸出命令作為一次輸入輸出起動指令發(fā)送,利用一次輸入輸出運作方式傳輸上述多個分割信息包中的輸出數(shù)據(jù)。
11.根據(jù)權(quán)利要求6或7所述的計算機系統(tǒng),其特征在于上述輸入輸出裝置是線路控制裝置,上述主處理裝置備有通信協(xié)議處理部和重分包處理部,該通信協(xié)議處理部對于從上述應(yīng)用執(zhí)行部發(fā)送來的與數(shù)據(jù)傳輸請求有關(guān)的數(shù)據(jù)進行分割處理,分別生成按站點劃分的經(jīng)過分割處理的輸出數(shù)據(jù)的數(shù)據(jù)管理信息組,并在該經(jīng)過分割后的輸出數(shù)據(jù)的開頭部分、按照通信協(xié)議的規(guī)定、附加邏輯控制信息,形成邏輯分割信息包那樣的通信協(xié)議控制信息,還生成按站點劃分的符合通信協(xié)議規(guī)定的控制信息的數(shù)據(jù)管理信息組,針對上述通信協(xié)議控制信息(這是由上述通信協(xié)議處理部輸出的、按站點劃分的、其他數(shù)據(jù)管理信息組和上述輸出數(shù)據(jù),由上述重分包處理部通過對兩種系統(tǒng)開銷(一種是針對上述適配裝置輸送來的上述通信協(xié)議控制信息的命令進行處理時所需的開銷,另一種是將上述輸出數(shù)據(jù)復(fù)制在上述通信協(xié)議控制信息中連續(xù)的區(qū)域內(nèi)所需要的系統(tǒng)開銷)進行比較,當后一種系統(tǒng)開銷小時,即將上述通信規(guī)定控制信息和上述輸出數(shù)據(jù)設(shè)定在連續(xù)的區(qū)域內(nèi),同時生成按站點劃分的數(shù)據(jù)管理信息組,并轉(zhuǎn)輸至上述驅(qū)動部。
12.一種計算機系統(tǒng)中的輸入輸出指令的發(fā)送方法,該計算機系統(tǒng)備有多個輸入輸出裝置、與該多個輸入輸出裝置連接的適配裝置、以及通過該適配裝置將輸入輸出請求傳輸至上述輸入輸出裝置的主處理裝置,該輸入輸出指令的發(fā)送方法的特征在于它包括從上述主處理裝置以一次輸入輸出起動指令發(fā)送對上述多個輸入輸出裝置的多個輸入輸出命令的步驟;由上述適配裝置將上述一次輸入輸出起動指令中包含的對多個輸入輸出裝置的多個輸入輸出命令具體指定是針對某個輸入輸出裝置的輸入輸出命令的步驟;以及由上述適配裝置將對上述多個輸入輸出裝置的多個輸入輸出命令分別發(fā)送至上述特定的輸入輸出裝置的步驟。
13.一種計算機系統(tǒng)中的輸入輸出指令的發(fā)送方法,該計算機系統(tǒng)備有多個輸入輸出裝置、與該多個輸入輸出裝置連接的適配裝置、以及通過該適配裝置將輸入輸出請求發(fā)送至上述輸入輸出裝置的主處理裝置,該輸入輸出指令的發(fā)送方法的特征在于在上述主處理裝置中,包括當在產(chǎn)生對上述輸入輸出裝置的輸入輸出請求后,不能立即處理該輸入輸出請求時,則將該輸入輸出請求保留在排隊請求管理表中,并進行管理的步驟;以及當輸入輸出請求成為可能時,根據(jù)該時刻保留在上述排隊請求管理表中的輸入輸出請求,以每個輸入輸出裝置為單位,生成將應(yīng)發(fā)送至上述各輸入輸出裝置的輸入輸出命令連起來的串列(即命令串),并以一次輸入輸出起動指令,將這些命令串發(fā)送給上述適配裝置的步驟;在上述適配裝置中包括將上述一次輸入輸出起動指令中包含的多個命令串具體指定是針對某個輸入輸出裝置的命令串的步驟;以及將上述多個命令串中的各輸入輸出命令分別發(fā)送至上述特定的輸入輸出裝置的步驟。
14.權(quán)利要求13所述的輸入輸出指令的發(fā)送方法,其特征在于還包括在上述輸入輸出裝置中被發(fā)送的輸入輸出命令經(jīng)過處理結(jié)束后,將結(jié)束中斷信號發(fā)送至上述主處理裝置的步驟;以及上述主處理裝置以來自上述輸入輸出裝置的輸入輸出命令的結(jié)束中斷信號為契機,判斷是否可能對輸入輸出請求進行處理,當可能時,根據(jù)該時刻保留在上述排隊請求管理表中的輸入輸出請求,以輸入輸出裝置為單位,生成將應(yīng)發(fā)送至上述各輸入輸出裝置的輸入輸出命令連起來的串列(即命令串),并以一次輸入輸出起動指令將這些命令串發(fā)送至上述適配裝置的步驟。
15.一種計算機系統(tǒng)中的輸入輸出指令的發(fā)送方法,該計算機系統(tǒng)備有多個輸入輸出裝置、與該若干輸入輸出裝置連接的適配裝置、通過該適配裝置將輸入輸出請求發(fā)送至上述輸入輸出裝置的主處理裝置,同時該主處理裝置備有執(zhí)行應(yīng)用程序的應(yīng)用執(zhí)行部和處理從該應(yīng)用執(zhí)行部發(fā)送來的輸入輸出請求的驅(qū)動部,該輸入輸出指令的發(fā)送方法的特征在于包括以一次輸入輸出起動指令,從上述主處理裝置中的驅(qū)動部發(fā)送對上述多個輸入輸出裝置的多個輸入輸出命令的步驟;由上述適配裝置將上述一次輸入輸出起動指令中所包含的對多個輸入輸出裝置的多個輸入輸出命令具體指定是針對某個輸入輸出裝置的輸入輸出命令的步驟;以及將上述多個輸入輸出裝置的多個輸入輸出命令分別發(fā)送至上述特定的輸入輸出裝置的步驟。
16.一種計算機系統(tǒng)中的輸入輸出指令的發(fā)送方法,該計算機系統(tǒng)備有多個輸入輸出裝置、與該多個輸入輸出裝置連接的適配裝置、以及通過該適配裝置將輸入輸出請求發(fā)送至上述輸入輸出裝置的主處理裝置,同時,該主處理裝置備有執(zhí)行應(yīng)用程序的應(yīng)用執(zhí)行部和處理從該應(yīng)用執(zhí)行部發(fā)送來的輸入輸出請求的驅(qū)動部,該輸入輸出指令的發(fā)送方法的特征在于包括下述步驟,即在上述主處理裝置中的驅(qū)動部中,當產(chǎn)生來自上述應(yīng)用執(zhí)行部的輸入輸出請求后,不能立即處理該輸入輸出請求時,將該輸入輸出請求保留在排隊請求管理表中,并進行管理的步驟;以及當輸入輸出請求的處理成為可能時,根據(jù)該時刻保留在上述排隊請求管理表中的輸入輸出請求,以每個輸入輸出裝置為單位,生成將應(yīng)發(fā)送至上述各輸入輸出裝置的輸入輸出命令連成的串列(即命令串),并以一次輸入輸出起動指令將這些命令串發(fā)送給上述適配裝置的步驟。在上述適配裝置中,將上述一次輸入輸出起動指令中包含的多個命令串具體指定是針對某個輸入輸出裝置的命令串的步驟;以及將上述多個命令串中的各輸入輸出命令分別送給上述特定的輸入輸出裝置的步驟。
17.權(quán)利要求15或16所述的輸入輸出指令的發(fā)送方法,其特征在于還包括在上述主處理裝置中的驅(qū)動部中,在從上述應(yīng)用執(zhí)行部接收數(shù)據(jù)的輸入請求之前,以一次輸入輸出起動指令將對上述多個輸入輸出裝置的多個輸入命令先輸出至上述適配裝置的步驟。
18.權(quán)利要求17所述的輸入輸出指令的發(fā)送方法,其特征在于上述使輸入命令先出的步驟包括在上述驅(qū)動部經(jīng)過初始化之后,以每個輸入輸出裝置為單位,生成將輸入命令連成規(guī)定的最大發(fā)送數(shù)的輸入命令串后發(fā)送給上述適配裝置的步驟;記錄發(fā)送給各輸入輸出裝置的輸入命令數(shù)的步驟;以及每次從上述各輸入輸出裝置收到輸入命令的結(jié)束報告后,從上述存入的、相應(yīng)的輸入輸出裝置的未結(jié)束輸入命令個數(shù)中減1,通過該處理,如果該輸入輸出裝置中的未結(jié)束輸入命令個數(shù)位于規(guī)定個數(shù)以下時,算出上述存儲的未結(jié)束輸入命令個數(shù)與上述最大發(fā)送個數(shù)之差,將相當于該差數(shù)的輸入命令連成的輸入命令串再次發(fā)送給上述適配裝置的步驟。
19.權(quán)利要求15或16所述的輸入輸出指令的發(fā)送方法,其特征在于還包括在上述主處理裝置中對于從上述應(yīng)用執(zhí)行部發(fā)送的與數(shù)據(jù)輸送請求有關(guān)的數(shù)據(jù)進行分割處理,將通信協(xié)議控制信息加在該經(jīng)過分割處理后的各輸出數(shù)據(jù)的開頭,從而生成多個分割信息包的通信協(xié)議處理的步驟;以及在上述主處理裝置中的驅(qū)動部中,當上述多個分割信息包數(shù)小于在該時刻未曾收到來自對應(yīng)的到達確認信息的狀態(tài)下而能連續(xù)傳輸?shù)男畔鼣?shù)(即連續(xù)輸送數(shù))時,根據(jù)上述多個分割信息包,生成多個輸入輸出命令,通過將生成的多個輸入輸出命令作為一次輸入輸出起動指令發(fā)送,用一次輸入輸出運作方式輸送上述多個分割信息包中的輸出數(shù)據(jù)的步驟。
20.根據(jù)權(quán)利要求15或16所述的輸入輸出指令的發(fā)送方法,其特征在于還包括在上述主處理裝置中對于從上述應(yīng)用執(zhí)行部發(fā)送來的與數(shù)據(jù)輸送請求有關(guān)的數(shù)據(jù)進行分割處理,分別生成按站點劃分的輸出數(shù)據(jù)的數(shù)據(jù)管理信息組,并在該經(jīng)過分割處理后的輸出數(shù)據(jù)的開頭部分添加符合通信協(xié)議規(guī)定的控制信息(即該通信協(xié)議控制信息加輸出數(shù)據(jù)),從而生成按邏輯劃分構(gòu)成的分割信息包那樣的通信協(xié)議控制信息,并生成按站點劃分、符合該通信協(xié)議規(guī)定的控制信息的數(shù)據(jù)管理信息組的通信協(xié)議處理步驟;以及根據(jù)上述通信協(xié)議控制信息(它是由上述通信協(xié)議處理步驟輸出的按站點劃分的其它數(shù)據(jù)管理信息)和上述輸出數(shù)據(jù),通過對兩種系統(tǒng)開銷(一種是處理由上述適配裝置輸送來的上述通信協(xié)議控制信息的命令所需的系統(tǒng)開銷,另一種是將上述輸出數(shù)據(jù)復(fù)制在上述通信協(xié)議控制信息中的連續(xù)的區(qū)域內(nèi)所需的系統(tǒng)開銷)進行比較,當后一種系統(tǒng)開銷小時,將上述通信協(xié)議控制信息和上述輸出數(shù)據(jù)設(shè)定在連續(xù)的區(qū)域內(nèi),同時,生成按站點劃分的區(qū)域的數(shù)據(jù)管理信息組,并將其轉(zhuǎn)輸至上述驅(qū)動部的重分包處理步驟。
全文摘要
在備有多個輸入輸出裝置、與它們連接的適配裝置及通過適配裝置將輸入輸出請求發(fā)送至輸入輸出裝置的主處理裝置的計算機系統(tǒng)中,由主處理裝置以一次輸入輸出起動指令發(fā)送對多個輸入輸出裝置的多個輸入輸出命令,用適配裝置具體指定在該一次輸入輸出起動指令中包含的對多個輸入輸出裝置的多個輸入輸出命令是針對某個輸入輸出裝置的輸入輸出命令,并將輸入輸出命令分別發(fā)送至特定的輸入輸出裝置。
文檔編號G06F13/12GK1125868SQ9511530
公開日1996年7月3日 申請日期1995年7月25日 優(yōu)先權(quán)日1994年7月26日
發(fā)明者近藤毅, 平田俊明, 松永和男, 高田治 申請人:株式會社日立制作所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
彰化市| 浪卡子县| 县级市| 清新县| 曲沃县| 正镶白旗| 清流县| 西吉县| 巩留县| 东兴市| 定兴县| 增城市| 平凉市| 衡东县| 正镶白旗| 西贡区| 沈丘县| 班玛县| 堆龙德庆县| 阿坝| 陕西省| 扎兰屯市| 大姚县| 濉溪县| 吉安县| 错那县| 萨迦县| 白玉县| 河北省| 吴川市| 涞源县| 镇雄县| 滕州市| 秦安县| 石林| 满洲里市| 昌吉市| 英德市| 西吉县| 久治县| 翁牛特旗|