JPH07105120A - 入出力制御装置 - Google Patents

入出力制御装置

Info

Publication number
JPH07105120A
JPH07105120A JP5275009A JP27500993A JPH07105120A JP H07105120 A JPH07105120 A JP H07105120A JP 5275009 A JP5275009 A JP 5275009A JP 27500993 A JP27500993 A JP 27500993A JP H07105120 A JPH07105120 A JP H07105120A
Authority
JP
Japan
Prior art keywords
block
command
pointer
information
queue
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP5275009A
Other languages
English (en)
Inventor
Osamu Yamashita
修 山下
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP5275009A priority Critical patent/JPH07105120A/ja
Publication of JPH07105120A publication Critical patent/JPH07105120A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 ホストごとにキューを持つといった方式でな
く、各ホストからのコマンドを1つのキーによって制御
し、キュー用資源を有効に利用し、更に各ホスト間のコ
マンド登録順序等の保存を容易にする。 【構成】 ホスト4から入出力装置5に対しコマンドを
送り込む場合、ただ1つのコマンドキュー11を採用す
る。ここにコマンドを書き込む場合、予めブロック確保
ポインタRCPでブロックを確保し、このブロックにコ
マンドを書き込むと、ブロックステータスを変更し、続
いて情報書き込みポインタCPPを更新する。入出力装
置5がコマンドを取り出すと情報取り出しポインタCG
Pが更新される。なお、各ポインタの位置確認からその
更新完了までに他のホストによるポインタの書換え等が
発生しないように、排他制御部13がポインタの書換え
を排他制御する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数のマイクロプロセ
ッサ等のホストが入出力装置を互いに共有する場合に、
ホストから入出力装置に送り込まれる情報を効率よく制
御する入出力制御装置に関する。
【0002】
【従来の技術】プロセッサの高性能化の要求に応えるた
めに、複数のマイクロプロセッサを結合したマルチマイ
クロプロセッサシステムが開発されている。このような
システムで解決しなければならない大きな問題点の1つ
に、複数のマイクロプロセッサで共有する入出力装置を
いかにコストパフォーマンスよくスケジューリングする
かという点がある。
【0003】従来、このような目的のために、クライア
ントサーバ方式と分散型アクセス方式という2種類の方
式が採用されてきた。図2に、これらの方式の説明図を
図示する。(a)はクライアントサーバ方式、(b)は
分散型アクセス方式の概略図である。
【0004】(a)において、このシステムには、クラ
イアントホスト1と、サーバホスト2と、入出力制御装
置3が設けられている。なお、図に示す入出力制御装置
3には、図示しない各種の入出力装置が1台あるいは複
数台接続されているものとする。いずれかのクライアン
トホスト1が入出力制御装置3に対してアクセス要求を
行なう場合には、代表とされるサーバホスト2に対しメ
ッセージを送信する。サーバホスト2は、これらのクラ
イアントホスト1による入出力制御装置3のアクセス要
求を集中的に管理する。即ち、各クライアントホスト1
のアクセス要求は全てこのサーバホスト2を介して実行
される。
【0005】(b)に示す例では、各ホスト4が入出力
制御装置3に対し直接アクセス要求を行なう。一般に、
入出力装置は一連のシーケンスに従って動作するものが
多い。そこで、この例では入出力装置に対する入出力要
求をプロセッサ単位で逐次化している。
【0006】なお、ホストから入出力制御装置へ入出力
要求のためのコマンドを発行する方式は次のの文献に
記載され、この方式をマルチホスト向きに改良したもの
はの文献に記載されている。即ち、の文献はクライ
アントサーバ方式について紹介され、の文献は分散型
アクセス方式について紹介するものである。 マルチマイクロプロセッサシステム向きのI/Oスケ
ジュール方式の提案、情報処理学会第40回全国大会予
稿集、第1巻、P748-749 インタフェース1992年7月号、CQ出版社、P112
〜P117 並列コンピュータ・アーキテクチャ.bit 臨時増刊、
1989年3月、村岡洋一他著、共立出版、P375〜P376
【0007】
【発明が解決しようとする課題】ところで、上記のよう
な従来の方式は、マルチプロセッサ用としては分散型ア
クセス方式が優れていると言える。しかしながら、これ
らの方式には次のような解決すべき課題があった。先に
説明したように、分散型アクセス方式ではキューがホス
トごとに独立している。しかしながら、例えばこの場合
に、各ホストへの負荷が片寄るとキュー用として設定さ
れている資源の有効利用が図れない。即ち、各ホストが
1つのアダプタを仮想的に専有するためには、アダプタ
が各ホストごとに独立したキューを持たなければならな
い。つまり、アダプタが提供できるキュー用資源の総量
をnとし、ホストの数を最大mとした場合は、独立した
各キューのサイズは平均するとn/mになる。アダプタ
では通常、このようにキュー用資源が平均的に割り当て
られる。
【0008】ここで、各ホストからのコマンド発行量が
均一かあるいは、各キューが常に十分な空きを確保でき
るほど大きい場合には問題はないが、そのいずれでもな
い場合に、コマンドを発行するための十分な空きを確保
できないキューが出現する。これを解決するために各キ
ューのサイズを変えることもできるが、一般的に適切な
キューのバランスはソフトウェアによって異なるので、
各キューのバランスを常にとりながら使用するためには
ソフトウェア等でこれを実現するための別の仕組みが必
要になる。また、例えばソフトウェアにおけるプロセス
がホストである場合、ホストの数は動的であるので数を
決めることができない。なお、実用上ホストの数の上限
を決めておく方式も考えられるが、そのような制限を課
すとシステム設計の自由度を妨げる。
【0009】また、複数のキューがそれぞれ独立してい
る場合には、各キューに登録されたコマンド相互間の登
録順序を保存する必要がある。即ち、各ホストがそれぞ
れ独立して割り当てられた各キューにコマンドを登録す
る場合、ホストごとにコマンドの登録順序を保存するこ
とは容易である。しかし、ホスト間においてもコマンド
の登録順序を保存するためには、アダプタ内に特別な仕
組みが必要となる。例えば、このような仕組みをアダプ
タ内のファームウェアで実現しようとすれば、コマンド
登録が完了するごとにその事実をファームウェアに通知
しなければならず、ファームウェアは一時的にそのとき
実行している処理を中断しなければならなくなる。
【0010】本発明は以上の点に着目してなされたもの
で、ホストごとにキューを持つといった方式でなく、各
ホストからのコマンドを1つのキーによって制御し、キ
ュー用資源を有効に利用し、更に各ホストごとのコマン
ド登録順序等の保存を容易にした入出力制御装置を提供
することを目的とするものである。
【0011】
【課題を解決するための手段】本発明の入出力制御装置
は、複数のホストが入出力装置に情報を送るために共有
する唯一のキューと、前記キューに前記情報を書き込む
前に、予め情報書き込みのためのブロックを確保すると
ともに、前記キューのどこまでブロックが確保されてい
るかを表示するブロック確保ポインタと、全てのブロッ
クが、領域を確保され、かつ、既に情報が書き込まれ
て、その情報の交換を許す状態にあるのはどこまでかを
表示する情報書き込みポインタと、全てのブロックが、
情報の取り出しを許し、かつ、既に情報の処理を終了し
た状態にあるのはどこまでかを表示する情報取り出しポ
インタと、前記ブロック確保ポインタにより確保された
個々のブロックが、それぞれ既に情報が書き込まれてい
るものかどうか、若しくは、既に情報の取り出しを終了
したものかどうかを読み出して表示するブロックステー
タス表示部と、前記各ポインタの更新処理中に、そのポ
インタの別の更新要求を排除する排他制御部とを備えた
ことを特徴とするものである。
【0012】
【作用】この装置は、ホストから入出力装置に対しコマ
ンドを送り込む場合、ただ1つのコマンドキューを採用
する。ここにコマンドを書き込む場合、予めブロック確
保ポインタでブロックを確保し、このブロックにコマン
ドを書き込むと、ブロックステータスを変更し、続いて
情報書き込みポインタを更新する。入出力装置がコマン
ドを取り出すと情報取り出しポインタが更新される。な
お、各ポインタの位置確認からその変更完了までに他の
ホストによるポインタの書換え等が発生しないように、
排他制御部がポインタの書換えを排他制御する。
【0013】
【実施例】以下、本発明を図の実施例を用いて詳細に説
明する。図1は、本発明の入出力制御装置実施例を示す
ブロック図である。この例は、複数のホスト4が入出力
制御装置10を介して複数の入出力装置5に接続された
構成となっている。なお、本発明においては、このよう
な入出力制御装置10を利用する主体をホストと呼び、
ソフト的なプロセスやハード的なプロセッサを含めてホ
ストということにする。また、キューは入出力制御装置
10の内部に設けられたバッファであるが、これは、登
録されたコマンドを先入れ先出しメモリのような記憶デ
バイスを利用して、その登録順序等も保存しながら記憶
しておくようなバッファメモリとする。
【0014】上記入出力制御装置10には、複数のホス
ト4から入出力装置5にコマンドを伝えるためのコマン
ドキュー11と、複数の入出力装置5から複数のホスト
4にリプライを伝えるためのリプライキュー12が設け
られている。また、コマンドキュー11にはブロック確
保ポインタRCP、情報書き込みポインタCPP及び情
報取り出しポインタCGPが設けられている。更に、リ
プライキュー12には、ブロック確保ポインタRRP、
情報書き込みポインタRPP及び情報取り出しポインタ
RGPが設けられている。
【0015】また、コマンドキュー11やリプライキュ
ー12のポインタセットの際に排他制御を行なう排他制
御部13と、コマンドキュー11やリプライキュー12
に設けられた各ブロックの状態を読み出して表示するブ
ロックステータス表示部14が設けられている。まず、
本発明の装置は、ホスト4がコマンドキュー11に対し
コマンドを登録するフェイズ、コマンドキュー11から
入出力装置5がそのコマンドを読み出し実行するフェイ
ズ、入出力装置5がコマンド実行後のリプライ報告をリ
プライキュー12に登録するフェイズ及びホスト4がリ
プライキュー12からリプライを取り出し受信するフェ
イズの4種のフェイズが存在する。
【0016】図3及び図4は各フェイズにおけるポイン
タの内容説明図である。上記コマンドキュー11に設け
られたブロック確保ポインタRCPは、コマンドキュー
11にコマンド等の情報を書き込む前にそのコマンド書
き込みのためのブロックを確保するとともに、コマンド
キュー11のどこまでブロックが確保されているかを表
示するポインタである。
【0017】また、情報書き込みポインタCPPは、領
域を確保されかつ既にコマンドが書き込まれて、そのコ
マンドの取出しを許す状態にあるのはコマンドキュー1
1のどこまでかを表示するポインタである。即ち、情報
書き込みポインタCPP以前(図の上方)のブロックに
は全て必要なコマンドが書き込み済みである。従って、
ブロック確保ポインタRCPから情報書き込みポインタ
CPPまでの間にあるブロックは、領域を確保されても
まだコマンドが書き込まれていないブロックである。
【0018】また、情報取り出しポインタCGPは、コ
マンドの取出しを許し、既にコマンドの取出しが終了し
た状態にあるのはコマンドキュー11のどこまでかを示
すポインタである。即ち、情報取り出しポインタCGP
の表示する位置までのブロックはコマンドが全て取り出
されており、情報書き込みポインタCPPから情報取り
出しポインタCGPの間にあるブロックはコマンドが書
き込まれているが、まだその取出しが行なわれていない
ブロックとなる。なお、本発明において、ホスト4から
入出力装置5に送られるコマンドやデータを情報という
ように表現している。また、入出力装置からホストへの
リプライの転送は、必ずしもキューによる必要は無い
が、この実施例ではコマンドキューと全く同一の構成の
ものを使用した。
【0019】まず、図3において、(a)はコマンドキ
ュー11の初期状態である。この状態では登録されたコ
マンドはなく、作成中のコマンドも確保された領域にな
い。従って、ブロック確保ポインタRCP、情報書き込
みポインタCPP及び情報取り出しポインタCGPが同
一の位置を示している。次に、図3の(b)は、コマン
ドキュー11にコマンド書き込みのための領域を確保し
た状態を示し、ブロック確保ポインタRCPがそのブロ
ック21の分だけ先のアドレスに進められている。
【0020】また、次に(c)は、確保したブロックに
コマンドを書き込んだところを示している。即ち、この
領域21にコマンドを書き込むと、ブロック確保ポイン
タRCPの位置まで情報書き込みポインタCPPの位置
が進められる。次に(d)は、入出力装置5がコマンド
キュー11から書き込まれたコマンドを取り出した後の
状態を示す。即ち、コマンドがコマンドキュー11から
取り出されると、情報取り出しポインタCGPが情報書
き込みポインタCPPの位置まで移動する。
【0021】なお、上記のようにコマンドがブロックに
書き込まれると、入出力制御装置10は定期的に情報書
き込みポインタCPPと情報取り出しポインタCGPと
を比較し、このポーリング処理によってホストがコマン
ド書き込みを完了したことを入出力装置5に割り込みを
用いて知らせる。このような割り込みがあると、入出力
装置5はコマンドの登録を検知し、コマンドを取り出
し、そのコマンドの実行の可否を判定し、実行可能なら
ばコマンドを実行し、これらの処理が完了すると情報取
り出しポインタCGPを更新する。
【0022】コマンドの実行が完了すると、入出力装置
5はホスト4に対しリプライを送ることによってその結
果報告を行なう。入出力制御装置10のリプライキュー
12は、当初図4(a)に示すような初期状態とされて
いる。即ち、ここではブロック確保ポインタRRP、情
報書き込みポインタRPP及び情報取り出しポインタR
GPがいずれも同一のアドレスを指している。
【0023】次に、(a)において、いずれかの入出力
装置5がリプライのための領域を確保しようとすると、
まずブロック確保ポインタRRPを図4(b)に示すよ
うにブロック22の分だけ先に進める。そして、こうし
て確保された領域22には(c)に示すようにリプライ
が書き込まれ、情報書き込みポインタRPPがブロック
確保ポインタRRPの位置まで進められる。その後、入
出力制御装置10の割り込みによってホスト4にリプラ
イの書き込み完了が通知されると、ホスト4はリプライ
キュー12からそのリプライを取り出す。リプライの取
出しに伴う一連の処理が終了すると、図4(d)に示す
ように、情報取り出しポインタRGPが情報書き込みポ
インタRPPの位置まで進められる。
【0024】図5に、上記のようなポインタの更新処理
の際に排他制御に用いられるTEST &SET命令のフローチ
ャートを示す。例えば、図3(a)に示す状態から
(b)に示す状態までブロック確保ポインタRCPを更
新するとき、ホスト4は予めブロック確保ポインタRC
Pの初期値を認識し、これに自分が書き込もうとするコ
マンドの書き込みに必要なブロックを考慮してアドレス
の加算を行なう。こうして求めた新たなアドレスをブロ
ック確保ポインタRCPにセットする。しかしながら、
ホストがブロック確保ポインタRCPの初期値を認識し
てから必要なアドレス計算を行ない、ブロック確保ポイ
ンタRCPを更新する間に、他のホストがブロック確保
ポインタRCPの内容を書き換えてしまうと制御にトラ
ブルが発生する。
【0025】そこで、このような一連の制御実行中に
は、他のホストによるブロック確保ポインタRCPの書
換えを認めない排他制御が必要となる。これには、従来
知られているTEST & SET命令が利用される。即ち、図5
において、ブロック確保ポインタRCPの書き換え制御
には予めロックビットが用意される。そして、あるホス
トがブロック確保ポインタRCPの書換えを行なおうと
する場合、まずこのロックビットチェックがステップS
1において実行される。ロック中であればロックが外れ
るまで待機する。一方、ステップS2において、ロック
中でないと判断した場合にはステップS3においてロッ
クビットをセットし、他のホストによる操作を排除した
状態でブロック確保ポインタRCPの初期値を読み取
り、その更新をする。こうした一連の処理を実行し、全
ての処理が完了するとロックビットを開放する。図1に
示す排他制御部13は、このような制御を行なうために
設けられた部分である。
【0026】本発明の装置では、上記のようなキューを
用いてコマンドやリプライの交換を可能にするだけでな
く、コマンドやリプライの同時並行処理も可能にする。
この目的のために、コマンドキュー11やリプライキュ
ー12の各ブロックには、そのブロックステータスが表
示される。図1に示すブロックステータス14は、この
ようなブロックの状態情報を読み書き管理する部分であ
る。
【0027】図6は、ブロック構造説明図である。コマ
ンドキュー11やリプライキュー12の各ブロックは、
このようにヘッダ部17とボデー部18とから構成され
る。そして、ヘッダ部17には、ブロックサイズ、ホス
ト名、コード、ステータス等が書き込まれる。このステ
ータスが、本発明の装置の動作中、特にポインタの書き
換え制御等の際に参照される。ステータスの内容は、例
えばブロック確保済みであって、コマンド書き換え前の
状態であるとか、コマンド書き込み後にあって、かつそ
の取り出し前といった内容のものである。なお、ヘッダ
部17におけるホスト名は、このブロックを登録したホ
ストの名称を表し、コードはボデー部18に格納したコ
マンド等の種類を示すものである。ボデー部18にはコ
マンドやリプライが情報として書き込まれる。
【0028】次に、本発明の装置によるコマンド登録、
コマンド実行、リプライ報告、リプライ受信の各フェイ
ズにおける制御フローチャートを説明する。図7は、コ
マンド登録の際の制御フローチャートである。まず、ス
テップS1において、始めにブロック確保ポインタRC
Pを先に説明した排他制御により占有状態にする。次
に、ステップS2において、必要な領域を確保し、ブロ
ック確保ポインタRCPを更新する。そして、ブロック
のステータスをコマンド作成中という状態にセットす
る。その後、ブロック確保ポインタRCPを解放する。
【0029】次に、ステップS3において、コマンド書
き込みのためにコマンドブロックを作成する。そして、
コマンドの書き込みが終了すると、ブロックのステータ
スを作成完了にセットする(ステップS4)。更に、ス
テップS5において、情報書き込みポインタCPPを占
有する。次に、ステップS6において、この情報書き込
みポインタCPPを更新し、その後この情報書き込みポ
インタCPPを開放する。情報書き込みポインタの更新
中に、他のホストによってその内容が書き換えられる
と、やはり障害が発生するため、この場合にも排他制御
部13が動作し、排他制御を行なう。
【0030】このステップS6においては、情報書き込
みポインタCPPの指すブロックから順にブロック確保
ポインタRCPの指すブロックまで、ステータスが作成
完了となっていないブロックを探し、情報書き込みポイ
ンタCPPがそのブロックを指すように内容を更新す
る。なお、先に説明したとおり、入出力制御装置に割り
込みによってコマンドの登録が通知されると、入出力制
御装置は新たに書き込まれた全てのコマンドブロックの
ステータスを実行前という内容にする。
【0031】図8に、コマンド実行の制御フローチャー
トを示す。まず、ステップS1において、入出力制御装
置はコマンドキュー11の各ブロックのステータスをチ
ェックし、実行可能なコマンドがあるかどうかを判断す
る。即ち、情報書き込みポインタCPPの指すブロック
を上限として情報取り出しポインタCGPの指すブロッ
クから順に実行可能なブロックを探し、見つからなけれ
ばコマンド実行のフェイズを終了する。実行可能なコマ
ンドが見つかった場合、ステップS2に移り、そのブロ
ックのステータスを実行中に変更する。そして、ステッ
プS3において、コマンドを実行しステップS4に移
る。
【0032】ステップS4において、実行中のコマンド
を途中で一時中断する必要があれば、そのコマンドのブ
ロックのステータスは実行中のままとし、その中断した
コマンドから情報書き込みポインタCPPの指す先を上
限とし、実行可能な別のコマンドを探してステップS1
からステップS4の処理を繰り返す。こうして全てのコ
マンド実行が完了すると、コマンドブロックのステータ
スをステップS5において実行完了に書き換える。
【0033】その後、再びステップS1において、実行
が完了したコマンドのブロックから情報書き込みポイン
タCPPの指すブロックを上限として実行可能な別のブ
ロックを探し、見つからなければコマンド実行のフェイ
ズを終了する。なお、コマンド実行のフェイズに入るタ
イミングとしては、入出力制御装置が主体的にコマンド
実行のフェイズに入る場合の他に、中断していたコマン
ドの実行を再開するように入出力装置から指示がくる場
合がある。
【0034】コマンド実行のフェイズが終了すると、そ
のコマンドの実行結果を入出力装置からホストに返すた
めにリプライ報告のためのフェイズが開始される。図9
に、リプライ報告の制御フローチャートを示す。入出力
制御装置は、まずステップS1において、ステータスが
実行完了のコマンドブロックを探し、もしなければこの
フェイズを終了する。一方、実行完了のコマンドブロッ
クがあれば、そのコマンドに対するリプライブロック作
成のための領域を確保するためにブロック確保ポインタ
RRPを更新する(ステップS2)。そして、ステップ
S3において、確保した領域のリプライブロックのステ
ータスを作成中に書き換える。更に、ステップS4にお
いて、確保した領域にリプライブロックを作成し、リプ
ライブロックのステータスを作成完了にセットする。
【0035】次に、ステップS5において、作成したリ
プライブロックに対応したコマンドブロックのステータ
スを報告待ちにセットする。次に、コマンドキュー11
の情報取り出しポインタCGPの示すブロックから順
に、情報書き込みポインタCPPの指すブロックを上限
として、コマンドブロックステータスが報告待ちでない
コマンドブロックを探し、そのコマンドブロックを指す
ように情報取り出しポインタCGPを更新する。
【0036】今度はリプライキュー12の情報書き込み
ポインタRPPの指すブロックから順にブロック確保ポ
インタRRPの指すブロックを上限として、ステータス
が作成完了でないリプライブロックを探し、そのリプラ
イブロックを指すように情報書き込みポインタRPPを
更新する。また、更新前の情報書き込みポインタRPP
から更新後の情報書き込みポインタRPPの間にある各
リプライブロックについて、対応したコマンドブロック
を登録したホストに対し割り込みをかける。こうして、
ホスト4はそのリプライの取出しを開始する。なお、コ
マンド実行の完了した時点で、リプライ報告を行なう前
に、コマンドブロックを参照する必要がなくなる場合に
は、情報取り出しポインタCGPの更新を図8に示すコ
マンド実行のフェイズに含めることも可能である。
【0037】図10に、リプライ受信の制御フローチャ
ートを示す。割り込みを受けたホスト4は、情報取り出
しポインタRGPの指すブロックから情報書き込みポイ
ンタRPPの指すブロックを上限として自己が登録した
コマンドに対するリプライブロックを探し、このリプラ
イブロックのステータスを受信中に変更する(ステップ
S1)。そして、ホストがリプライブロックを受信し、
その受信が完了した場合、ステップS2において、リプ
ライブロックのステータスを受信完了に変更する。ステ
ップS3においては、情報取り出しポインタRGPを占
有状態にする。そして、この情報取り出しポインタRG
Pの指すブロックから順に情報書き込みポインタRPP
の指すブロックを上限として、ステータスが受信完了で
ないリプライブロックを探し、そのリプライブロックを
指すように情報取り出しポインタRGPを更新する。
【0038】その後、このステップS4において、情報
取り出しポインタRGPの占有状態を解除する。なお、
このような情報取り出しポインタRGPの更新の際に
も、その更新が完了するまで、他のホスト等によって内
容が書き換えられるとトラブルを生じる。そこで、この
制御にも排他制御部13が動作し、処理完了まで書換え
を禁止する。
【0039】各部が以上のような機能を持つブロックに
より構成された本発明の装置は、具体的には次のように
動作する。図11に、本発明の装置の具体的な発生シー
ケンス例を示す説明図を図示した。本発明の装置は、例
えばこの図に示すようなシーケンスで動作する。図11
の例では2台のホストXとホストYとが入出力制御装置
に対し、相前後してコマンドの登録やリプライの受入れ
を実行する例を示している。
【0040】即ち、まず図11のステップS1におい
て、ホストXがコマンドブロックxのための領域を確保
し、そのコマンドブロックの作成を開始する。次にステ
ップS2において、ホストYはコマンドブロックyのた
めの領域を確保し、そのブロックyの作成を開始する。
次にステップS3において、ホストYはブロックyの作
成を完了する。更に、ステップS4において、ホストX
はブロックxの作成を完了する。
【0041】ステップS5においては、ブロックxのコ
マンドの実行を開始する。更に、ステップS6におい
て、そのコマンドの実行を中断する。次に、ステップS
7において、ブロックyのコマンドの実行を開始する。
そして、ステップS8において、ブロックyのコマンド
の実行を完了する。
【0042】今度は、ステップS9において、入出力制
御装置はブロックyのコマンドに対応するリプライブロ
ックy*の領域を確保し、その作成を実行する。また、
ステップS10において、入出力制御装置はブロックy
*の報告を行なう。ステップS11では、ホストYがこ
のブロックy*のリプライ報告を受信開始する。次にス
テップS12において、入出力制御装置は先ほど中断し
たブロックxにおけるコマンドの実行を再開する。そし
てステップS13において、そのコマンドの実行を完了
する。その後、ステップS14において、このコマンド
に対応するリプライブロックx*の領域を確保する。次
に、そのブロックx*を作成し、ステップS15におい
て、リプライブロックx*のリプライ報告を実行する。
【0043】ステップS16では、ホストXがリプライ
ブロックx*のリプライ受信を開始し、ステップS17
においては、ホストYがリプライブロックy*のリプラ
イ受信を完了する。更に、ステップS18において、ホ
ストXはリプライブロックx*の受信を完了する。
【0044】図12、図13、図14及び図15は、図
11に示す各ステップにおけるコマンドキュー11とリ
プライキュー12の状態説明図である。まず、始めにホ
ストXがコマンドブロックxのための領域を確保するた
めにブロック確保ポインタRCPを占有状態にし、ブロ
ック確保ポインタRCPを更新し、ブロックxのステー
タスを作成中にしてブロック確保ポインタRCPの占有
状態を解除し、ブロックxの作成を開始する。これが図
11のステップS1の動作であって、図12の(a)、
(b)に示す状態である。
【0045】次に、ホストYはコマンドブロックyのた
めの領域を確保すべくブロック確保ポインタRCPを占
有状態にし、これを更新し、ブロックyのステータスを
作成中にし、ブロック確保ポインタRCPの占有状態を
解除してブロックyの作成を開始する。これが図11の
ステップS2に相当し、図12に示す(c)の状態とな
る。
【0046】次に、ホストYにおけるコマンドブロック
yの作成が図11のステップS3において完了すると、
ホストYはこのブロックyのステータスを作成完了の状
態にし、情報書き込みポインタCPPを占有状態にして
更新しようとする。しかしながら、この時点で情報書き
込みポインタCPPが指しているブロックのステータス
は、まだホストXにより作成中のものであるため、情報
書き込みポインタCPPは更新しない。即ち、この情報
書き込みポインタCPPの内容をそのままにして占有状
態を解除する。これが図12(d)に示す状態である。
【0047】その後、図11のステップS4において、
ブロックxの作成が完了すると、ホストXはブロックx
のステータスを作成完了状態にする。そして、情報書き
込みポインタCPPを占有状態にし、情報書き込みポイ
ンタCPPの指すブロックの次のブロックも作成完了状
態であることから、情報書き込みポインタCPPをブロ
ック確保ポインタRCPと同じ場所を指すように更新す
る。これは、図13の(a)に示す状態である。その
後、ホストは入出力制御装置に対し割り込みを行ない、
登録を通知するとともに、情報書き込みポインタCPP
の占有状態を解除する。
【0048】一方、入出力制御装置10は割り込みによ
りコマンドブロックの登録を知ると、情報取り出しポイ
ンタCGPの指すブロックxを見つけ、このブロックx
のステータスを実行中にしてコマンドの実行を開始す
る。これが、図11に示すステップS5の状態で、図1
3の(b)にキューの状態を示す。ここで、図11に示
すように、その後ステップS6において、ブロックxの
コマンドの実行が中断する。この場合、入出力制御装置
はブロックxの次にあるブロックyを見つけ、yのステ
ータスを実行中にし、その実行を開始する。これは図1
0のステップS7に相当し、図13の(c)にキューの
状態を示す。
【0049】図11のステップS8において、ブロック
yのコマンドの実行が完了すると、入出力制御装置はブ
ロックyのステータスを実行完了の状態にする。更に、
このブロックyに対応するリプライブロックy*の作成
のための領域をリプライキュー12に確保するために、
ブロック確保ポインタRRPを更新し、y*のステータ
スを作成中にする。こうして、y*の作成を開始する。
これは、図11のステップS9に相当し、図13の
(d)にキューの状態を示す。
【0050】リプライブロックy*の作成が完了する
と、入出力制御装置はy*のステータスを作成完了に
し、コマンドキューのブロックyのステータスを報告待
ちの状態にし、情報書き込みポインタRPPをブロック
y*の次の場所を指すように更新する。即ち、情報書き
込みポインタRPPをブロック確保ポインタRRPと同
じ場所を指すように更新し、ホストYに対し割り込みを
行なう。これが図11のステップS10の状態で、図1
4(a)にキューの状態を示す。
【0051】ホストYは割り込みを受けると、情報取り
出しポインタRGPの指す先にあるリプライブロックy
*を見つけ、このリプライブロックのステータスを受信
中に変更し、その受信を開始する。これが図11ステッ
プS11の状態で、図14(b)にキューの状態を示
す。図11のステップS12では、ステップS6におい
て中断したブロックxに関するコマンドの実行が再開さ
れ、これが完了すると入出力制御装置はブロックxのス
テータスを実行完了にする。そして、ブロックxに対応
するリプライブロックx*の作成のための領域をリプラ
イキュー12に確保すべくブロック確保ポインタRRP
を更新する。そして、リプライブロックx*のステータ
スを作成中にし、このx*を作成する。これは図11の
ステップS14の処理に該当し、図14(c)にキュー
の状態を示す。
【0052】リプライブロックx*の作成が完了する
と、入出力制御装置はリプライブロックx*のステータ
スを作成完了にし、コマンドキューのブロックxのステ
ータスを報告待ちにする。また、コマンドキューの情報
取り出しポインタCGPの指すブロックxとその次にあ
るブロックyのステータスが両方とも報告待ちであるこ
とから、情報取り出しポインタCGPをブロックyの
次、即ち、情報書き込みポインタCPPと同じ場所を指
すように更新する。また、リプライブロックの情報書き
込みポインタRPPをリプライブロックx*の次の場
所、即ちブロック確保ポインタRRPと同じ場所を指す
ように更新し、その後ホストXに対し割り込みを行な
う。これは図11のステップS15に相当する処理で、
図14の(d)にキューの状態を示す。
【0053】ホストXは割り込みを受けると、情報取り
出しポインタRGPの指す先のリプライブロックy*の
次にあるリプライブロックx*を見つけ、このx*のス
テータスを受信中に変更して受信を開始する。これは図
11のステップS16に相当し、図15の(a)にキュ
ーの状態を示す。リプライブロックy*の受信が完了す
ると、ホストYはリプライブロックのステータスを受信
完了にし、情報取り出しポインタRGPを占有状態にし
た後、このポインタをリプライブロックy*の次、即ち
リプライブロックx*を指すように更新する。そして、
情報取り出しポインタRGPの占有状態を解除する。こ
れは図11のステップS17の処理であって、図15
(b)にキューの状態を示す。
【0054】最後に、図11のステップS18におい
て、リプライブロックx*の受信が完了すると、ホスト
Xはリプライブロックx*のステータスを受信完了に
し、情報取り出しポインタRGPを占有状態にして、こ
れをリプライブロックx*の次、即ち情報書き込みポイ
ンタRPPと同じ場所を指すように更新して、情報取り
出しポインタRGPの占有状態を解除する。図15
(c)には、そのときのキューの状態を示す。
【0055】上記のように各ブロックのステータスがそ
のつど具体的に表示され、情報書き込みポインタや情報
取り出しポインタが、連続した全てのブロックについて
情報の書き込みを終了していたり、情報の取り出し等の
情報交換を終了していた場合に、更新されるようにすれ
ば、例えば情報取り出しポインタCGPと情報書き込み
ポインタCPPの間にあるブロックのコマンドは、必ず
しも書き込み順でなく任意の順番に実行することができ
る。もちろん並行処理も可能となる。従って、複数のホ
ストがコマンドの登録を互いに妨げ合うことなく、1個
のコマンドキューを共有して入出力制御を実行できる。
【0056】本発明は以上の実施例に限定されない。上
記ホストの数等は任意であって、入出力装置は1台以上
何台存在してもよい。また、コマンドキューやリプライ
キューの構成、そのブロックの構成等は任意であって、
上記のようにブロックのステータスが認識でき、更にブ
ロックに書き込まれたコマンドの送り込みが可能であれ
ば、どのような形式の構成であっても差し支えない。ま
た、上記各ポインタはいずれもキューのアドレスを示す
レジスタ等から構成されればよいが、これらはいずれも
適当な記憶領域に確保されたものであれば何でもよい。
【0057】また、ステータスの表示は、上記実施例で
は外付けされたブロックステータス表示部が制御する構
成としたが、これは排他的制御部等と一体の構成であっ
てもよい。更に、本発明において、入出力制御装置には
複数のホストが入出力装置に情報を送るために、ただ1
つのキューを設けることとしたが、これはホストから入
出力装置に対し情報を供給するためのキューをただ1つ
設けるという意味であって、実施例のように入出力装置
からホストにリプライを送るためにもう1つのキューを
設けるようにすることを排除するものではない。もちろ
ん、入出力装置からリプライを送る方法は全く別の方法
でも差し支えない。
【0058】
【発明の効果】以上説明した本発明の入出力制御装置
は、複数のホストが入出力装置に情報を送るための唯一
のキューを備え、そのキューへの情報書き込みのための
ブロックを確保するブロック確保ポインタと、情報書き
込みが終了したブロックを表示する情報書き込みポイン
タと、情報の取出しが終了したブロックを表示する情報
取出しポインタと、各ブロックがそれぞれ情報が書き込
まれているか情報の取出しが終了しているか等を表示す
るブロックステータス表示部と、上記のようなポインタ
更新処理中に別の更新要求を排除する排他制御部とを備
えたので、具体的には次のような効果を備える。
【0059】1)キューをホストごとに個別に準備する必
要がなく、キュー用資源の有効な活用を図り、キュー用
資源の総量以外の制限を受けない。 2)ホストの数には上限がなく、動的に変更が可能であ
り、シングルプロセッサからマルチプロセッサ、シング
ルプロセスからマルチプロセスの計算機において、全く
同様の方式で対応することが可能となる。 3)情報書き込みポインタや情報取出しポインタの設定に
よって、各ホストからのコマンド登録や各ホストによる
リプライ受信が並行して行なわれる。 4)全てのホストから登録されるコマンドはその登録順序
を含めてただ1つのキューに保存されるため、入出力制
御装置はただ1つのキューのみを監視すればよく、制御
が容易になる。 5)情報書き込みポインタや情報取出しポインタを設ける
ことによって、登録された複数のコマンドを並行して実
行することが可能になる。また、これらの複数のコマン
ドの順番を入れ換えて実行することも可能になる。
【図面の簡単な説明】
【図1】本発明の入出力制御装置実施例を示すブロック
図である。
【図2】従来方式の説明図で、(a)は従来一般のクラ
イアントサーバ方式、(b)は従来一般の分散型アクセ
ス方式である。
【図3】各フェイズにおけるポインタの内容説明図(そ
の1)である。
【図4】各フェイズにおけるポインタの内容説明図(そ
の2)である。
【図5】TEST & SET命令の動作フローチャートである。
【図6】ブロック構造説明図である。
【図7】コマンド登録の制御フローチャートである。
【図8】コマンド実行の制御フローチャートである。
【図9】リプライ報告の制御フローチャートである。
【図10】リプライ受信の制御フローチャートである。
【図11】発生シーケンス例説明図である。
【図12】キューの状態説明図(その1)である。
【図13】キューの状態説明図(その2)である。
【図14】キューの状態説明図(その3)である。
【図15】キューの状態説明図(その4)である。
【符号の説明】
4 ホスト 5 入出力装置 10 入出力制御装置 11 コマンドキュー 12 リプライキュー 13 排他制御部 14 ブロックステータス表示部

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 複数のホストが入出力装置に情報を送る
    ために共有する唯一のキューと、 前記キューに前記情報を書き込む前に、予め情報書き込
    みのためのブロックを確保するとともに、前記キューの
    どこまでブロックが確保されているかを表示するブロッ
    ク確保ポインタと、 全てのブロックが、領域を確保され、かつ、既に情報が
    書き込まれて、その情報の交換を許す状態にあるのはど
    こまでかを表示する情報書き込みポインタと、 全てのブロックが、情報の取り出しを許し、かつ、既に
    情報の処理を終了した状態にあるのはどこまでかを表示
    する情報取り出しポインタと、 前記ブロック確保ポインタにより確保された個々のブロ
    ックが、それぞれ既に情報が書き込まれているものかど
    うか、若しくは、既に情報の取り出しを終了したものか
    どうかを読み出して表示するブロックステータス表示部
    と、 前記各ポインタの更新処理中に、そのポインタの別の更
    新要求を排除する排他制御部とを備えたことを特徴とす
    る入出力制御装置。
JP5275009A 1993-10-06 1993-10-06 入出力制御装置 Pending JPH07105120A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5275009A JPH07105120A (ja) 1993-10-06 1993-10-06 入出力制御装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5275009A JPH07105120A (ja) 1993-10-06 1993-10-06 入出力制御装置

Publications (1)

Publication Number Publication Date
JPH07105120A true JPH07105120A (ja) 1995-04-21

Family

ID=17549616

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5275009A Pending JPH07105120A (ja) 1993-10-06 1993-10-06 入出力制御装置

Country Status (1)

Country Link
JP (1) JPH07105120A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007226755A (ja) * 2006-02-20 2007-09-06 Canon Inc 周辺装置制御方法及びその情報処理装置と制御プログラム
JP2015127981A (ja) * 2005-06-27 2015-07-09 アビニシオ テクノロジー エルエルシー メッセージ待ち行列の管理
WO2017056220A1 (ja) * 2015-09-30 2017-04-06 株式会社日立製作所 計算機システム、コマンド転送方法、及び、転送デバイス
US10095442B2 (en) 2015-08-04 2018-10-09 Toshiba Memory Corporation Memory device that changes execution order of commands

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015127981A (ja) * 2005-06-27 2015-07-09 アビニシオ テクノロジー エルエルシー メッセージ待ち行列の管理
JP2007226755A (ja) * 2006-02-20 2007-09-06 Canon Inc 周辺装置制御方法及びその情報処理装置と制御プログラム
JP4667281B2 (ja) * 2006-02-20 2011-04-06 キヤノン株式会社 周辺装置制御方法及びその情報処理装置と制御プログラム
US10095442B2 (en) 2015-08-04 2018-10-09 Toshiba Memory Corporation Memory device that changes execution order of commands
WO2017056220A1 (ja) * 2015-09-30 2017-04-06 株式会社日立製作所 計算機システム、コマンド転送方法、及び、転送デバイス

Similar Documents

Publication Publication Date Title
JP3659062B2 (ja) 計算機システム
US7484017B1 (en) Dequeuing from a host adapter two-dimensional queue
JP3273202B2 (ja) 複数のデータチャネルを介してデータを転送する方法及びその回路アーキテクチャ
JPH0533410B2 (ja)
WO2011148553A1 (ja) 情報処理装置および情報処理方法
JPH0827707B2 (ja) Fifoバッファの制御装置及び制御方法並びにデータ転送を制御する装置
JPH0997189A (ja) 共有資源の排他制御方式
US4725946A (en) P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment
JPH0786839B2 (ja) マルチタスク式データ処理システム
US6964049B2 (en) Smart internetworking operating system for low computational power microprocessors
EP0555680A1 (en) A method and apparatus for determining instruction execution ordering in a data processing system
JPH07105120A (ja) 入出力制御装置
US20030014558A1 (en) Batch interrupts handling device, virtual shared memory and multiple concurrent processing device
EP0297895A2 (en) Apparatus and method using lockout for synchronization of access to main memory signal groups in a multiprocessor data processing system
JP2011248469A (ja) 情報処理装置および情報処理方法
JP2663566B2 (ja) グラフィックディスプレイ装置
EP0196400B1 (en) Logical arrangement for controlling use of different system displays by main processor and co-processor
JP3111980B2 (ja) 処理要求のマルチタスク分配処理方法
JP2553526B2 (ja) マルチタスク処理装置
JP2926873B2 (ja) 計算機システム
EP0290533B1 (en) I/o system for off-loading operating system functions
JPH07114522A (ja) マルチプロセッサシステム
JPH0831038B2 (ja) 割込みマネジャおよび割込み処理方法
JPH0340169A (ja) 多重プロセツサシステムおよび複数の処理装置を制御する方法
JPH05224951A (ja) マイクロプロセッサ・システムの割込管理方法