図1に、本実施の形態におけるシステムの概要を示す。本体装置1a及び1bは、例えばサーバユニット或いはサーバブレード等であり、それぞれ1のコンピュータとして独立して動作する。本体装置1aにはI/O(Input/Output)5aが接続され、本体装置1bにはI/O5bが接続される。I/O5a及び5bは、例えばHDD(Hard Disk Drive)等の外部記憶装置である。本体装置1a及び1bは、共用の記憶装置であるSSU(System Storage Unit)3に接続される。SSU3は、例えば不揮発性のメモリ等である。
但し、SSU3に接続される本体装置の数は3以上であってもよい。また、各本体装置に接続されるI/Oの数は2以上であってもよい。
本実施の形態においては、SSU3からI/O(説明を簡単にするため、以下ではI/O5aとする)にデータを転送することを考える。図2に、主記憶を経由してデータを転送する場合のタイムチャートを示す。図2において、SSM(System Storage Manager)はSSU3と本体装置1aとの間のインタフェース制御を行うユニットであり、チャネルはI/O5aと本体装置1aとの間のインタフェース制御を行うユニットである。
主記憶を経由してデータを転送する場合、まずCPU(Central Processing Unit)は、SSU3に格納されたデータの読出命令をSSMに発行する。SSMは、SSU3に格納されたデータの読出命令をCPUから受け取ると、SSU3からデータを読み出して主記憶に転送する。主記憶へのデータ転送が完了すると、SSMは、読み出しが完了したことを示す完了報告をCPUに発行する。CPUは完了報告を受け取ると、I/O5aへの書込命令をチャネルに発行する。チャネルは、I/O5aへの書込命令を受け取ると、主記憶に格納されたデータをI/O5aに転送する。I/O5aへの転送が完了すると、チャネルは、書き込みが完了したことを示す完了報告をCPUに発行する。以上で一連のデータ転送が完了する。
この転送方法においては処理がシリアルに行われるため、背景技術の欄で述べたように、データの転送が完了するまでの時間が長くなる。
そこで本実施の形態においては、主記憶を経由しないように且つ一部の処理を並行して行うようにデータを転送することで転送時間を短縮する。図3に、主記憶を経由せずにデータを転送する場合のタイムチャートを示す。図3において、バイパスバッファとは、本体装置1aのMCU(Memory Controller unit)に設けられるバッファである。まずCPUは、SSU3に格納されたデータの読出命令をSSMに発行する。SSMは、SSU3に格納されたデータの読出命令をCPUから受け取ると、読み出しが完了したことを示す完了報告をCPUに発行する。そして、SSMは、SSU3からデータを読み出してバイパスバッファに転送することを開始する。これと並行して、CPUは完了報告を受け取ると、I/O5aへの書込命令をチャネルに発行する。チャネルは、I/O5aへの書込命令を受け取ると、バイパスバッファに格納されたデータをI/O5aに転送する。I/O5aへの転送が完了すると、チャネルは、書き込みが完了したことを示す完了報告をCPUに発行する。以上で一連のデータ転送が完了する。
以下では、本実施の形態の具体的な内容について説明する。
図4に、本体装置1aの構成を示す。本体装置1aは、CPU11と、主記憶12と、MCU10と、SSM13と、チャネル14とを有する。SSM13はSSU3に接続され、チャネル14はI/O5aに接続される。
図5Aに、MCU10の構成を示す。MCU10は、パケットの転送等を実行するパケット制御回路150a乃至150fと、バイパスバッファ制御回路100とを有する。括弧付きの番号は、以下で説明する、本体装置1aの動作の番号に相当する。
パケット制御回路150aはCPU11、パケット制御回路150c及びパケット制御回路150eに接続される。パケット制御回路150bはCPU11、パケット制御回路150d及びパケット制御回路150fに接続される。パケット制御回路150cはSSM13、パケット制御回路150a及びバイパスバッファ制御回路100に接続される。パケット制御回路150dはSSM13、パケット制御回路150b及びバイパスバッファ制御回路100に接続される。パケット制御回路150eはチャネル14、パケット制御回路150a及びバイパスバッファ制御回路100に接続される。パケット制御回路150fはチャネル14、パケット制御回路150b及びバイパスバッファ制御回路100に接続される。バイパスバッファ制御回路100は、主記憶12及びパケット制御回路150c乃至150fに接続される。
図5Bに、SSM13及びチャネル14の構成を示す。SSM13は、パケットの転送等を実行するパケット制御回路13pと、SSU3へのデータの書き込み及びSSU3からのデータの読み込み等を実行するデータ転送回路13tと、データ転送回路13tに使用されるメモリ13mとを有する。パケット制御回路13pは、バイパス制御回路130を有する。チャネル14は、パケットの転送等を実行するパケット制御回路14pと、チャネル14の特徴的な動作をするためのプログラムを実行するプログラム実行回路14eと、I/O5aへのデータの書き込み及びI/O5aからのデータの読み込み等を実行するデータ転送回路14tと、データ転送回路14tに使用されるメモリ14mとを有する。パケット制御回路14pは、バイパス制御回路140を有する。括弧付きの番号は、以下で説明する、本体装置1aの動作の番号に相当する。
データ転送回路13tは、SSU3と、メモリ13mと、パケット制御回路13pとに接続される。メモリ13mはデータ転送回路13tに接続される。パケット制御回路13pは、MCU10と、データ転送回路13tに接続される。データ転送回路14tは、I/O5aと、メモリ14mと、プログラム実行回路14eとに接続される。メモリ14mは、データ転送回路14tに接続される。プログラム実行回路14eは、データ転送回路14tとパケット制御回路14pとに接続される。パケット制御回路14pは、MCU10と、プログラム実行回路14eに接続される。
図6に、パケット制御回路13pの構成を示す。パケット制御回路13pは、バイパス制御回路130と、入力パケット解析部131と、書き込み制御回路132と、完了報告制御回路133と、出力パケット生成部134とを有する。バイパス制御回路130は、バイパスモードチェック部1301と、先出フラグ1302とを有する。括弧付きの番号は、以下で説明する本体装置1aの動作の番号に相当する。
入力パケット解析部131は、バイパスモードチェック部1301に接続される。書き込み制御回路132は、先出フラグ1302と、出力パケット生成部134とに接続される。完了報告制御回路133は、出力パケット生成部134と、先出フラグ1302とに接続される。出力パケット生成部134は、完了報告制御回路133と、書き込み制御回路132とに接続される。バイパスモードチェック部1301は、入力パケット解析部131と、先出フラグ1302とに接続される。先出フラグ1302は、バイパスモードチェック部1301と、完了報告制御回路133と、書き込み制御回路132とに接続される。
図7に、パケット制御回路14pの構成を示す。パケット制御回路14pは、バイパス制御回路140と、入力パケット解析部141と、読み出し制御回路142と、完了報告制御回路143と、出力パケット生成部144とを有する。バイパス制御回路140は、バイパスモードチェック部1401と、バイパス実行フラグ1402とを有する。括弧付きの番号は、以下で説明する本体装置1aの動作の番号に相当する。
入力パケット解析部141は、バイパスモードチェック部1401に接続される。読み出し制御回路142は、バイパス実行フラグ1402と、出力パケット生成部144とに接続される。完了報告制御回路143は、出力パケット生成部144に接続される。出力パケット生成部144は、完了報告制御回路143と、読み出し制御回路142とに接続される。バイパスモードチェック部1401は、入力パケット解析部141と、バイパス実行フラグ1402とに接続される。バイパス実行フラグ1402は、バイパスモードチェック部1401と、読み出し制御回路142とに接続される。
図8に、バイパスバッファ制御回路100の構成を示す。バイパスバッファ制御回路100は、バイパスバッファ101と、バイパスモードチェック回路102と、バイパスモードチェック回路103と、データチェック回路104と、第1切替部105と、第2切替部106と、バイパスリクエストキュー制御回路107と、バイパスリクエストキュー108と、バイパスリクエストポート109と、アドレス比較回路110と、第1調停回路111と、第2調停回路112と、完了報告制御回路113とを有する。括弧付きの番号は、以下で説明する本体装置1aの動作の番号に相当する。
バイパスバッファ101は、第1切替部105と、完了報告制御回路113と、アドレス比較回路110と、調停ポートAとに接続される。バイパスモードチェック回路102は、データチェック回路104と、第1切替部105とに接続される。バイパスモードチェック回路103は、第2切替部106に接続される。データチェック回路104は、バイパスモードチェック回路102と、第1切替部105とに接続される。第1切替部105は、データチェック回路104と、バイパスバッファ101と、完了報告制御回路113とに接続される。第2切替部106は、バイパスモードチェック回路103と、バイパスリクエストキュー108とに接続される。バイパスリクエストキュー制御回路107は、アドレス比較回路110と、バイパスリクエストキュー108とに接続される。バイパスリクエストキュー108は、第2切替部106と、バイパスリクエストキュー制御回路107と、バイパスリクエストポート109とに接続される。バイパスリクエストポート109は、バイパスリクエストキュー108と、アドレス比較回路110と、調停ポートAとに接続される。アドレス比較回路110は、バイパスリクエストキュー制御回路107と、バイパスリクエストポート109と、バイパスバッファ101と、調停ポートAとに接続される。第1調停回路111は、調停ポートA及びBに接続される。第2調停回路112は、調停ポートC及びDに接続される。完了報告制御回路113は、第1切替部105と、調停ポートCとに接続される。調停ポートA乃至Dは、レジスタ等の記憶装置である。
図9に、バイパスバッファ101に格納されるデータの一例を示す。図9の例では、データと、データが格納される主記憶上のアドレス(以下、MS(Main Storage)アドレスと呼ぶ)と、有効フラグの値とが格納される。有効フラグが有効(例えば値が「1」)に設定されている場合、データは調停ポートAへ未だ出力されていない。有効フラグが無効(例えば値が「0」)に設定されている場合、データは調停ポートAへ既に出力されている。
図10に、バイパスリクエストキュー108に格納されるデータの一例を示す。図10の例では、リクエストが格納される。図11に、リクエストのフォーマットの一例を示す。図11の例では、リクエストには、アクセスの種類を規定するオペレーションコードと、MSアドレスと、バイパスモードを示す情報と、データとが含まれる。オペレーションコードが「0001」である場合、リクエストは、CPU11からSSM13に対して発行される、SSU3からの読出命令に相当する。オペレーションコードが「1001」である場合、リクエストは、SSM13からCPU11に対して発行される、SSU3からの読み出しの完了報告に相当する。オペレーションコードが「0010」である場合、リクエストは、CPU11からチャネル14に対して発行される、I/O5aに対する書込命令に相当する。オペレーションコードが「1010」である場合、リクエストは、チャネル14からCPU11に対して発行される、I/O5aに対する書き込みの完了報告に相当する。オペレーションコードが「0100」である場合、リクエストは、SSM13又はチャネル14から主記憶12に対して発行される、主記憶12からの読出命令に相当する。オペレーションコードが「1100」である場合、リクエストは、主記憶12からSSM13又はチャネル14に対して発行される、主記憶12からの読出の応答(以下、読出応答と呼ぶ)に相当する。オペレーションコードが「0101」である場合、リクエストは、SSM13又はチャネル14から主記憶12に対して発行される、主記憶12に対する書込命令に相当する。オペレーションコードが「1101」である場合、リクエストは、主記憶12からSSM13又はチャネル14に対して発行される、主記憶12に対する書き込みの完了報告に相当する。なお、主記憶12に対する書込命令および主記憶12からの読出命令であったとしても、バイパスモードが有効に設定されている場合には、主記憶12に対する書き込みおよび主記憶12からの読み出しは行われない。
図12を用いて、本実施の形態における本体装置1aの動作の概要を説明する。
CPU11は、SSM13に対して、SSU3からのデータの読出命令をバイパスモードを有効にして(すなわち、バイパスモードの値を1に設定して)発行する(図12における(i))。
SSM13は、バイパスモードが有効な読出命令を検出し、SSU3のデータを読み出して主記憶12への書き込みを行うことを待たずに、SSU3からの読み出しの完了報告を先出でCPU11に発行する(図12における(ii))。
SSM13は、SSU3からのデータの読出命令に従いSSU3からデータを読み出し(図12における(iii))、読み出したデータを主記憶12へ書き込むための書込命令をバイパスモードを有効にして発行する(図12における(iv))。MCU10のバイパスバッファ制御回路100は、バイパスモードが有効な書込命令をSSM13から受信し、エラーが無ければ、書込命令に含まれるMSアドレスとデータとを有効フラグを有効に設定してバイパスバッファ101に格納する。
一方で、CPU11は、SSU3からの読み出しの完了報告をSSM13から受信した場合、I/O5aに対する書込命令をバイパスモードを有効にしてチャネル14に発行する(図12における(v))。
チャネル14は、バイパスモードが有効な書込命令をCPU11から受信する。そして、チャネル14は、データを読み出してI/O5aに書き込むため、主記憶12からの読出命令をバイパスモードを有効にしてMCU10に対して発行する(図12における(vi))。
MCU10のバイパスバッファ制御回路100は、バイパスモードが有効な読出命令をチャネル14から受信する。そして、バイパスバッファ制御回路100は、受信した読出命令に従いバイパスバッファ101からデータを読み出し、読み出したデータを含む読出応答をチャネル14に発行する(図12における(vii))。
チャネル14は、読出応答をMCU10から受信した場合、受信した読出応答に含まれるデータをI/O5aに書き込む。そして、チャネル14は、I/O5aに対する書き込みの完了報告をCPU11に対して発行する(図12における(viii))。
以上が本体装置1aの動作の概要である。
より詳細には、本体装置1aは以下のように動作する。なお、括弧付きの番号は図5A乃至図8に示した番号に対応する。
まず、CPU11は、SSU3からの読出命令を、バイパスモードを有効にし且つMCU10を経由してSSM13に発行する(1)。
SSM13のバイパスモードチェック部1301は、入力パケット解析部131を介して受信した読出命令のバイパスモードが有効であるか判定する(2)。バイパスモードが有効である場合、SSM13は、SSU3からの読み出しの完了報告を先出するため、先出フラグ1302を有効(例えば「1」)に設定する(3)。先出フラグ1302が有効に設定された場合、SSM13は、完了報告制御回路133を起動する。完了報告制御回路133は、SSU3からの読み出しの完了報告を生成し、生成した完了報告を出力パケット生成部134がCPU11に対して発行する(4)。
CPU11は、SSU3からの読み出しの完了報告を受信する。そして、CPU11は、I/O5aに対する書込命令を、バイパスモードを有効にし且つMCU10を経由してチャネル14に発行する(5)。
SSM13の入力パケット解析部131は、SSU3からの読出命令をSSU3に発行する(6)。SSM13は、SSU3から読み出されたデータを受信する(7)。そして、先出フラグ1302が有効である場合、SSM13の書き込み制御回路132は、SSU3から読み出されたデータの書込命令を、バイパスモードを有効にしてMCU10に対して発行する(8)。(6)から(8)の処理はデータを漏れなく書き込むまで繰り返し行われる。
MCU10のバイパスバッファ制御回路100におけるバイパスモードチェック回路102は、SSM13から受信した書込命令に設定されたバイパスモードを確認する(9)。
バイパスモードが「有効」である場合、バイパスバッファ制御回路100は、以下の処理を実行する。具体的には、データチェック回路104は、書込命令のデータが正常であるか確認し、エラーが発生していた場合には書込命令を廃却してSSM13に対して書込命令の再送要求を送信する(10−1)。第1切替部105は、MSアドレスと書き込まれるデータとを含むセットを、有効フラグを有効にしてバイパスバッファ101に格納する(10−2)。バイパスバッファ101に空きがある場合、完了報告制御回路113は、主記憶12に対する書き込みの完了報告を調停ポートCに設定する(10−3)。(10−2)の書き込みによってバイパスバッファ101に空きが無くなった場合、完了報告制御回路113は、空きが生じるまで完了報告の発行を保留する。
一方、バイパスモードが「有効」ではない場合、バイパスバッファ制御回路100は、以下の処理を実行する。具体的には、バイパスバッファ制御回路100は、書込命令に従って主記憶12に対する書き込みを実行する(11−1)。そして、バイパスバッファ制御回路100は、主記憶12に対する書き込みの完了報告を調停ポートDに設定する(11−2)。
第2調停回路112は、調停ポートCと調停ポートDのいずれか一方のみが選択され続けることが無いように選択を行い、選択した調停ポートに設定された完了報告をSSM13に対して発行する(12)。
完了報告制御回路133は、CPU11から指定された転送長の分の読出命令に対応する書込命令の完了報告を漏れなく受信し且つ先出フラグ1302が有効に設定されている場合、SSU3からの読出命令の完了報告をCPU11に発行せず、先出フラグ1302を無効に設定して処理を終了する(13)。
一方、チャネル14のバイパス制御回路140におけるバイパスモードチェック部1401は、入力パケット解析部141を介して受信した書込命令のバイパスモードが有効であるか判定する(14)。バイパスモードが有効である場合、バイパスモードチェック部1401は、バイパス実行フラグ1402を有効に設定する(15)。読み出し制御回路142は、主記憶12からの読出命令を、バイパスモードを有効にして出力パケット生成部144を介してMCU10に発行する(16)。CPU11から指定された転送長分の書き込みを行うためのデータを取得するため、チャネル14は(16)の処理を繰り返し行い、読出命令の発行が完了すると読み出し制御回路142はバイパス実行フラグ1402を無効に設定する(17)。
MCU10のバイパスバッファ制御回路100におけるバイパスモードチェック回路103は、チャネル14から受信した読出命令のバイパスモードを確認する(18)。
バイパスモードが「有効」である場合、バイパスバッファ制御回路100は、以下の処理を実行する。具体的には、第2切替部106は、バイパスリクエストキュー108の最後尾に受信した読出命令を格納する(19−1)。バイパスリクエストキュー制御回路107は、バイパスリクエストキュー108の先頭の読出命令を、バイパスリクエストポート109が空である場合にバイパスリクエストポート109に格納し、バイパスリクエストキュー108をシフトする(19−2)。調停ポートAが空ではない場合、バイパスバッファ制御回路100は、調停ポートAが空くまで待機する(19−3)。調停ポートAが空である場合、アドレス比較回路110は、バイパスリクエストポート109に格納された読出命令のMSアドレスと同じMSアドレスであり且つ有効フラグが有効に設定されているという条件を満たすセットがバイパスバッファ101に存在するか判定する(19−4)。条件を満たすセットが存在する場合、アドレス比較回路110は、そのセットからデータを読み出して調停ポートAに格納し、有効フラグを無効に設定する。さらに、アドレス比較回路110は、読出命令の返信先のチャネルを示す情報をバイパスリクエストポート109から読み出して調停ポートAに格納し、バイパスリクエストポート109を空にする(19−5)。条件を満たすセットが存在しない場合、バイパスリクエストキュー制御回路107は、バイパスリクエストポート109に格納されている読出命令を取り出してバイパスリクエストキュー108の最後尾に格納し、バイパスリクエストポート109を空にする(19−6)。バイパスリクエストポート109に読出命令が残っている場合、バイパスバッファ制御回路100は、(19−1)から(19−6)までの処理を繰り返す。なお、調停ポートAにデータが格納された場合には以下で説明する(21)も実行される。
一方、バイパスモードが「有効」ではない場合、バイパスバッファ制御回路100は、以下の処理を実行する。具体的には、バイパスバッファ制御回路100は、主記憶12からの読出命令に従い主記憶12からデータを読み出し(20−1)、読み出したデータを調停ポートBに格納する(20−2)。
バイパスバッファ制御回路100における第1調停回路111は、調停ポートAと調停ポートBのいずれか一方のみが選択され続けることが無いように選択を行い、選択した調停ポートに格納されたデータをチャネル14に送信する(21)。
チャネル14の入力パケット解析部141は、MCU10からデータを受信し(22)、受信したデータをI/O5aに書き込む(23)。完了報告制御回路143は、I/O5aから書き込みの完了報告を受け取り(24)、I/O5aに対する書き込みの完了報告を出力パケット生成部144を介してCPU11に発行する(25)。
以上で本体装置1aの動作の概要についての説明を終了する。
次に、図13乃至図19のフローチャートを用いて、本体装置1aの動作を説明する。
まず、図13を用いて、本実施の形態のシステムにおいて行われる処理の概要を説明する。CPU11はSSM13に対して、SSU3からの読出命令を発行する(図13:ステップS1)。これに応じ、SSM13はCPU11に対して、読出命令の完了報告を発行する(ステップS3)。
そして、ステップS9乃至S17の処理と、ステップS5及びS7の処理とが並行して行われる。まず、ステップS5及びS7の処理について説明する。
SSM13は、SSU3からSSM13を介してバイパスバッファ101に対して、SSU3から読み出したデータを転送することを開始する(ステップS5)。
SSM13は、SSU3からバイパスバッファ101へのデータ転送が完了したか判定する(ステップS7)。データ転送が完了していない場合(ステップS7:Noルート)、ステップS7の処理に戻る。データ転送が完了した場合(ステップS7:Yesルート)、処理は終了する。
一方、CPU11はチャネル14に対して、I/O5aに対する書込命令を発行する(ステップS9)。そして、チャネル14はMCU10のバイパスバッファ制御回路100に対して、主記憶12からの読出命令を発行する。
バイパスバッファ制御回路100は、読出命令に含まれるMSアドレスと一致するMSアドレスがバイパスバッファ101に存在するか判定する(ステップS11)。読出命令に含まれるMSアドレスと一致するMSアドレスがバイパスバッファ101に存在しない場合(ステップS11:Noルート)、ステップS11の処理に戻る。
一方、読出命令に含まれるMSアドレスと一致するMSアドレスがバイパスバッファ101に存在する場合(ステップS11:Yesルート)、チャネル14は、バイパスバッファ101からチャネル14を介してI/O5aに対して、SSU3から読み出されたデータを転送することを開始する(ステップS13)。
チャネル14は、バイパスバッファ101からI/O5aへのデータ転送が完了したか判定する(ステップS15)。データ転送が完了していない場合(ステップS15:Noルート)、ステップS15の処理に戻る。データ転送が完了した場合(ステップS15:Yesルート)、チャネル14はCPU11に対して、I/O5aに対する書込命令の完了報告を発行する(ステップS17)。そして処理は終了する。
以上のように、データの読み出しとデータの書き込みとを並行して行うようにすれば、データの転送に要する時間を短縮できるようになる。また、本体装置に改変を加えることで実現可能なので、CPU11が実行する既存の命令フローを維持することができる。さらに、主記憶12に格納されているデータを別の場所に退避しなくて済むので、主記憶12に対する他のアクセスが遅延することもない。
比較のため、図2を用いて説明した、主記憶を経由してデータを転送する場合の処理について図14を用いて説明する。
まず、CPU11はSSM13に対して、SSU3からの読出命令を発行する(図14:ステップS21)。
SSM13は、SSU3に格納されているデータを主記憶12へ転送することを開始する(ステップS23)。SSM13は、データ転送が完了したか判定する(ステップS25)。データ転送が完了していない場合(ステップS25:Noルート)、ステップS25の処理に戻る。
一方、データ転送が完了した場合(ステップS25:Yesルート)、SSM13はCPU11に対して、読出命令の完了報告を発行する(ステップS27)。
読出命令の完了報告を受け取ったCPU11はチャネル14に対して、SSU3から読み出され且つ主記憶12に格納されたデータをI/O5aへ書き込む書込命令を発行する(ステップS29)。
チャネル14は、主記憶12に格納されているデータをI/O5aに転送することを開始する(ステップS30)。チャネル14は、データ転送が完了したか判定する(ステップS31)。データ転送が完了していない場合(ステップS31:Noルート)、ステップS31の処理に戻る。
一方、データ転送が完了した場合(ステップS31:Yesルート)、チャネル14はCPU11に対して、書込命令の完了報告を発行する(ステップS33)。そして処理は終了する。
以上のような処理の場合、データの読み出しが完了するまでは書き込みを開始できないので、転送が完了するまでの時間が長くなりがちである。また、データを主記憶12まで転送することになるので、本実施の形態の場合よりも転送距離が長い。
次に、図15乃至図19を用いて、本体装置1aの動作をより詳細に説明する。
まず、図15を用いて、バイパスバッファ制御回路100がSSM13から書込命令を受信した際に実行する処理について説明する。
バイパスバッファ制御回路100のバイパスモードチェック回路102は、SSM13からの書込命令を検出し(図15:ステップS41)、バイパスモードが有効であるか判定する(ステップS43)。そして、バイパスモードチェック回路102は、判定結果を示す情報をデータチェック回路104に出力する。
バイパスモードが有効ではない場合(ステップS43:Noルート)、データチェック回路104は、バイパスモードが有効ではないことを第1切替部105に設定する。すると、第1切替部105は書込命令を主記憶12に出力し、これにより主記憶12に対する書き込みが実行される(ステップS45)。バイパスバッファ制御回路100は、主記憶12に対する書き込みの完了報告を受信し(ステップS47)、受信した完了報告を調停ポートDに格納する(ステップS49)。そして処理は終了する。
一方、バイパスモードが有効である場合(ステップS43:Yesルート)、データチェック回路104は、書込命令に含まれるデータが正常であるか判定する(ステップS51)。
データが正常ではない場合(ステップS51:Noルート)、データチェック回路104は、書込命令の再送要求をSSM13に送信する(ステップS53)。そして処理は終了する。
一方、データが正常である場合(ステップS51:Yesルート)、データチェック回路104は、バイパスモードが有効であることを第1切替部105に設定する。すると、第1切替部105は書込命令をバイパスバッファ101に出力する。そして、バイパスバッファ制御回路100は、書込命令に含まれるMSアドレス及びデータを含むセットを、有効フラグを有効にしてバイパスバッファ101に格納する(ステップS55)。
完了報告制御回路113は、バイパスバッファ101に空きが有るか判定する(ステップS57)。空きが無い場合(ステップS57:Noルート)、ステップS57の処理に戻る。一方、空きが有る場合(ステップS57:Yesルート)、完了報告制御回路113は、主記憶12への書き込みの完了報告を生成する(ステップS59)。そして、完了報告制御回路113は、生成した完了報告を調停ポートCに設定する(ステップS61)。そして処理は終了する。
次に、図16を用いて、バイパスバッファ制御回路100の第2調停回路112が実行する処理について説明する。
まず、第2調停回路112は、調停ポートCにデータが格納されているか判定する(図16:ステップS71)。
調停ポートCにデータが格納されていない場合(ステップS71:Noルート)、第2調停回路112は、調停ポートDにデータが格納されているか判定する(ステップS73)。調停ポートDにデータが格納されていない場合(ステップS73:Noルート)、処理は終了する。一方、調停ポートDにデータが格納されている場合(ステップS73:Yesルート)、ステップS79の処理に移行する。
調停ポートCにデータが格納されている場合(ステップS71:Yesルート)、第2調停回路112は、調停ポートDにデータが格納されているか判定する(ステップS75)。調停ポートDにデータが格納されていない場合(ステップS75:Noルート)、ステップS81の処理に移行する。一方、調停ポートDにデータが格納されている場合(ステップS75:Yesルート)、第2調停回路112は、調停ポートCが直前に選択されたか判定する(ステップS77)。
調停ポートCが直前に選択された場合(ステップS77:Yesルート)、第2調停回路112は、調停ポートDを選択する(ステップS79)。そして、第2調停回路112は、調停ポートDに格納されているデータを出力する。そして処理は終了する。
一方、調停ポートCが直前に選択されていない場合(ステップS77:Noルート)、第2調停回路112は、調停ポートCを選択する(ステップS81)。そして、第2調停回路112は、調停ポートCに格納されているデータを出力する。そして処理は終了する。
次に、図17及び図18を用いて、バイパスバッファ制御回路100がチャネル14から読出命令を受信した際に実行する処理について説明する。
まず、バイパスモードチェック回路103は、チャネル14からの読出命令を検出し(図17:ステップS91)、バイパスモードが有効であるか判定する(ステップS93)。
バイパスモードが有効ではない場合(ステップS93:Noルート)、バイパスモードチェック回路103は、バイパスモードが有効ではないことを第2切替部106に設定する。すると、第2切替部106は読出命令を主記憶12に出力し、これにより主記憶12からの読み出しが実行される(ステップS95)。バイパスバッファ制御回路100は、主記憶12から読み出したデータを受信し(ステップS97)、受信したデータを調停ポートBに格納する(ステップS99)。そして処理は端子Aを介して図18の説明に移行し終了する。
一方、バイパスモードが有効である場合(ステップS93:Yesルート)、バイパスモードチェック回路103は、バイパスモードが有効であることを第2切替部106に設定する。すると、第2切替部106は、読出命令をバイパスリクエストキュー108に出力し、バイパスバッファ制御回路100は、バイパスリクエストキュー108の最後尾に読出命令を格納する(ステップS101)。
バイパスリクエストキュー制御回路107は、バイパスリクエストポート109が空であるか判定する(ステップS103)。バイパスリクエストポート109が空ではない場合(ステップS103:Noルート)、ステップS103の処理に戻る。
一方、バイパスリクエストポート109が空である場合(ステップS103:Yesルート)、バイパスリクエストキュー制御回路107は、バイパスリクエストキュー108の先頭の読出命令をバイパスリクエストポート109に格納する(ステップS105)。
バイパスバッファ制御回路100は、調停ポートAが空であるか判定する(ステップS107)。調停ポートAが空ではない場合(ステップS107:Noルート)、ステップS107の処理に戻る。一方、調停ポートAが空である場合(ステップS107:Yesルート)、処理は端子Bを介して図18のステップS109に移行する。
図18の説明に移行し、アドレス比較回路110は、バイパスリクエストポート109に格納された読出命令に含まれるMSアドレスがバイパスバッファ101に存在するか判定する(図18:ステップS109)。
バイパスリクエストポート109に格納された読出命令に含まれるMSアドレスがバイパスバッファ101に存在しない場合(ステップS111:Noルート)、アドレス比較回路110は、バイパスリクエストポート109に格納された読出命令に含まれるMSアドレスがバイパスバッファ101に存在しないことをバイパスリクエストキュー制御回路107に通知する。これに応じ、バイパスリクエストキュー制御回路107は、バイパスリクエストポート109に格納された読出命令を取り出し、バイパスリクエストキュー108の最後尾に格納する(ステップS113)。そしてステップS119の処理に移行する。
一方、バイパスリクエストポート109に格納された読出命令に含まれるMSアドレスがバイパスバッファ101に存在する場合(ステップS111:Yesルート)、アドレス比較回路110は、検出されたMSアドレスに対応するデータとバイパスリクエストポート109に格納されている返信先のチャネルを示す情報とを調停ポートAに格納する(ステップS115)。
アドレス比較回路110は、検出されたMSアドレスに対応するデータの有効フラグをリセット(例えば、無効に設定)し(ステップS117)、バイパスリクエストキュー制御回路107に対してバイパスリクエストポート109を空にする通知を行う。これに応じ、バイパスリクエストキュー制御回路107はバイパスリクエストポート109を空にする(ステップS119)。
バイパスリクエストキュー制御回路107は、バイパスリクエストキュー108にリクエストが残っているか判定する(ステップS121)。リクエストが残っている場合(ステップS121:Yesルート)、次のリクエストについて処理するため、ステップS103の処理に戻る。一方、バイパスリクエストキュー108にリクエストが残っていない場合(ステップS121:Noルート)、処理は終了する。
次に、図19を用いて、バイパスバッファ制御回路100の第1調停回路111が実行する処理について説明する。
まず、第1調停回路111は、調停ポートAにデータが格納されているか判定する(図19:ステップS131)。
調停ポートAにデータが格納されていない場合(ステップS131:Noルート)、第1調停回路111は、調停ポートBにデータが格納されているか判定する(ステップS133)。調停ポートBにデータが格納されていない場合(ステップS133:Noルート)、処理は終了する。一方、調停ポートBにデータが格納されている場合(ステップS133:Yesルート)、ステップS139の処理に移行する。
調停ポートAにデータが格納されている場合(ステップS131:Yesルート)、第1調停回路111は、調停ポートBにデータが格納されているか判定する(ステップS135)。調停ポートBにデータが格納されていない場合(ステップS135:Noルート)、ステップS141の処理に移行する。一方、調停ポートBにデータが格納されている場合(ステップS135:Yesルート)、第1調停回路111は、調停ポートAが直前に選択されたか判定する(ステップS137)。
調停ポートAが直前に選択された場合(ステップS137:Yesルート)、第1調停回路111は、調停ポートBを選択する(ステップS139)。そして、第1調停回路111は、調停ポートBに格納されているデータを出力する。そして処理は終了する。
一方、調停ポートAが直前に選択されていない場合(ステップS137:Noルート)、第1調停回路111は、調停ポートAを選択する(ステップS141)。そして、第1調停回路111は、調停ポートAに格納されているデータを出力する。そして処理は終了する。
図20及び図21を用いて、データの転送時間の短縮について説明する。図20は、本実施の形態の転送方法を使用した場合のシーケンス図であり、図21は、公知の転送方法を使用した場合のシーケンス図である。図20及び図21において、縦軸は時間(単位は周期)を表す。「MEM」は主記憶を表し、「CH」はチャネルを表す。円の図形は命令シーケンスの始動を表し、三角形の図形は転送されるデータを表し、破線は読出命令についてのシーケンスを表し、実線は書込命令についてのシーケンスを表す。図20における括弧付きの番号は図5A乃至図8に示した番号に対応する。
図20に示すように、CPU11は、まずSSU3からの読出命令をSSM13に発行する(1)。SSM13は、SSU3からの読出命令の完了報告をCPU11に発行する(4)と共に、SSU3からの読出命令をSSU3に対して発行する(6)。SSM13は、SSU3から読み出されたデータを受信する(7)。そして、SSM13は、SSU3から読み出されたデータの書込命令を、バイパスモードを有効にしてMCU10に対して発行する(8)。MCU10はSSM13に書き込み完了報告を発行する(12)。最終的に読出命令についてのシーケンスは5サイクルで終了する。
一方、書込命令についてのシーケンスは、CPU11が完了報告を受信した時点(すなわち、2サイクルが終了した時点)で開始する。まず、CPU11は、I/O5aに対する書込命令を、バイパスモードを有効にしてチャネル14に発行する(5)。チャネル14は、主記憶12からの読出命令をバイパスモードを有効にしてMCU10に発行する(16)。MCU10は、バイパスバッファ101に格納されたデータをチャネル14に送信する(21)。チャネル14は、MCU10から受信したデータをI/O5aに書き込む(23)。チャネル14は、I/O5aから書き込みの完了報告を受け取り(24)、I/O5aに対する書き込みの完了報告をCPU11に発行する(25)。
一方で、本実施の形態の方法を使用しない場合には以下のようになる。すなわち、図21に示すように、まずCPU11が、SSU3からの読出命令をSSM13に発行する(a)。SSM13は、SSU3からの読出命令をSSU3に対して発行する(b)。SSM13は、SSU3から読み出されたデータを受信し(c)、受信したデータを主記憶12に書き込むための書込命令をMCU10に発行する(d)。MCU10は、書込命令に従いデータを主記憶12へ書き込む(e)。MCU10は、主記憶12にデータが書き込まれたことを確認すると(f)、SSM13に書き込みの完了報告を発行する(g)。SSM13は、SSU3の読み出しの完了報告をCPU11に発行する(h)。このように、読出命令についてのシーケンスは8サイクルで完了する。
読出命令についてのシーケンスが完了すると、CPU11は、I/O5aに対する書込命令をチャネル14に発行する(i)。チャネル14は、SSU3から読み出されたデータを取得するため、主記憶12からの読出命令をMCU10に発行する(j)。MCU10は、主記憶12からデータを読み出し(k)、読み出したデータをチャネル14に送信する(l)。チャネル14は、受信したデータをI/O5aに書き込み(m)、書き込みの完了報告をI/O5aから受け取る(n)。チャネル14は、書き込みの完了報告をCPU11に対して発行する(o)。このように、書込命令についてのシーケンスは16サイクルで完了する。従って、本実施の形態の方法を使用すれば転送が完了するまでの時間を1/2程度に減らすことができるようになる。
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した本体装置1aの構成は実際のハードウエアモジュール構成に一致しない場合もある。
また、上で説明したデータ保持構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
また、転送元のデータが格納されるストレージデバイスは共用されていなくてもよい。その場合、本体装置の台数が1であってもよい。
また、I/O5a又はI/O5bからSSU3へデータを転送する場合にも本実施の形態を応用することで対処可能である。
以上述べた本発明の実施の形態をまとめると、以下のようになる。
本実施の形態の第1の態様に係る情報処理装置は、(A)プロセッサと、(B)メインメモリと、(C)第1制御回路と、(D)第2制御回路と、(E)第3制御回路とを有する。そして、第1制御回路は、(c1)プロセッサから受信した、情報処理装置に接続された第1記憶装置からデータを読み出すための第1読出命令が、所定の情報を含むか判定する第1判定部と、(c2)第1読出命令が所定の情報を含むと第1判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前にプロセッサに送信すると共に、第1記憶装置から読み出したデータと所定の情報とを含む、読み出したデータをメインメモリに書き込むための第1書込命令を第3制御回路に送信する第1送信部とを有する。そして、第2制御回路は、(d1)プロセッサから受信した、情報処理装置に接続された第2記憶装置にデータを書き込むための第2書込命令が、所定の情報を含むか判定する第2判定部と、(d2)第2書込命令が所定の情報を含むと第2判定部により判定された場合、所定の情報を含む、データをメインメモリから読み出すための第2読出命令を第3制御回路に送信する第2送信部とを有する。そして、第3制御回路は、(e1)第1制御回路から受信した第1書込命令が所定の情報を含む場合、第1書込命令を、第3制御回路の第1記憶領域に格納する第1格納処理部と、(e2)第2制御回路から受信した第2読出命令が所定の情報を含む場合、第2読出命令を、第3制御回路の第2記憶領域に格納する第2格納処理部と、(e3)第1記憶領域に格納された第1書込命令に含まれるメインメモリのアドレスと、第2記憶領域に格納された第2読出命令に含まれるメインメモリのアドレスとが一致する場合、第1記憶領域に格納されたデータを読み出し、データを第2制御回路に送信する第3送信部とを有する。
このようにすれば、読み出しと書き込みとを並行して行えるようになるので、第1の記憶装置から第2の記憶装置にデータを転送するのに要する時間を短縮できるようになる。また、プロセッサが実行する既存の命令フローを維持することができる。
また、第2制御回路は、(d3)第3制御回路からデータを受信し、受信したデータを第2記憶装置に書き込む書込部をさらに有してもよい。これによりデータの転送を完了することができる。
また、第1格納処理部は、(e11)第1制御回路から受信した第1書込命令が所定の情報を含まない場合、受信した第1書込命令に含まれるデータをメインメモリに格納し、第2格納処理部は、(e21)第2制御回路から受信した第2読出命令が所定の情報を含まない場合、第2読出命令に従ってデータをメインメモリから読み出し、第3送信部は、(e31)メインメモリから読み出したデータを第2制御回路に送信してもよい。メインメモリを使用した通常の転送方法にも対応することができるようになる。
また、第3送信部は、(e32)第1記憶領域に格納されたデータと、メインメモリから読み出したデータとの両方が存在する場合、いずれが前回送信されたかに基づき、いずれを次に送信するか決定してもよい。いずれか一方のみについて送信が行われることを抑制できるようになる。
本実施の形態の第2の態様に係る情報処理システムは、(F)情報処理装置と、(G)情報処理装置に接続された第1記憶装置と、(H)情報処理装置に接続された第2記憶装置とを有する。そして、情報処理装置は、(f1)プロセッサと、(f2)メインメモリと、(f3)第1制御回路と、(f4)第2制御回路と、(f5)第3制御回路とを有する。そして、第1制御回路は、(f31)プロセッサから受信した、第1記憶装置からデータを読み出すための第1読出命令が、所定の情報を含むか判定する第1判定部と、(f32)第1読出命令が所定の情報を含むと第1判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前にプロセッサに送信すると共に、読み出されたデータと所定の情報とを含む、読み出されたデータをメインメモリに書き込むための第1書込命令を第3制御回路に送信する第1送信部とを有する。そして、第2制御回路は、(f41)プロセッサから受信した、第2記憶装置にデータを書き込むための第2書込命令が、所定の情報を含むか判定する第2判定部と、(f42)第2書込命令が所定の情報を含むと第2判定部により判定された場合、所定の情報を含む、データをメインメモリから読み出すための第2読出命令を第3制御回路に送信する第2送信部とを有する。そして、第3制御回路は、(f51)第1制御回路から受信した第1書込命令が所定の情報を含む場合、第1書込命令を、第3制御回路の第1記憶領域に格納する第1格納処理部と、(f52)第2制御回路から受信した第2読出命令が所定の情報を含む場合、第2読出命令を、第3制御回路の第2記憶領域に格納する第2格納処理部と、(f53)第1記憶領域に格納された第1書込命令に含まれるメインメモリのアドレスと、第2記憶領域に格納された第2読出命令に含まれるメインメモリのアドレスとが一致する場合、データを第2制御回路に送信する第3送信部とを有する。
本実施の形態の第3の態様に係る、情報処理装置の制御回路は、(I)プロセッサから受信した、情報処理装置に接続された第1記憶装置からデータを読み出すための読出命令が、所定の情報を含むか判定する判定部と、(J)読出命令が所定の情報を含むと判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前にプロセッサに送信する送信部とを有する。
本実施の形態の第4の態様に係る制御回路は、(K)データを含み且つメインメモリにデータを書き込むための書込命令が、所定の情報をさらに含む場合、書込命令を、制御回路の第1記憶領域に格納する第1格納処理部と、メインメモリからデータを読み出すための読出命令が所定の情報を含む場合、読出命令を、制御回路の第2記憶領域に格納する第2格納処理部と、(L)第1記憶領域に格納された書込命令に含まれるメインメモリのアドレスと、第2記憶領域に格納された読出命令に含まれるメインメモリのアドレスとが一致する場合、第1記憶領域に格納されたデータを読み出し、データを送信する送信部とを有する。
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
プロセッサと、
メインメモリと、
第1制御回路と、
第2制御回路と、
第3制御回路と、
を有する情報処理装置であって、
前記第1制御回路は、
前記プロセッサから受信した、前記情報処理装置に接続された第1記憶装置からデータを読み出すための第1読出命令が、所定の情報を含むか判定する第1判定部と、
前記第1読出命令が前記所定の情報を含むと前記第1判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前に前記プロセッサに送信すると共に、前記第1記憶装置から読み出した前記データと前記所定の情報とを含む、読み出した前記データを前記メインメモリに書き込むための第1書込命令を前記第3制御回路に送信する第1送信部と
を有し、
前記第2制御回路は、
前記プロセッサから受信した、前記情報処理装置に接続された第2記憶装置に前記データを書き込むための第2書込命令が、前記所定の情報を含むか判定する第2判定部と、
前記第2書込命令が前記所定の情報を含むと前記第2判定部により判定された場合、前記所定の情報を含む、前記データを前記メインメモリから読み出すための第2読出命令を前記第3制御回路に送信する第2送信部と、
を有し、
前記第3制御回路は、
前記第1制御回路から受信した前記第1書込命令が前記所定の情報を含む場合、前記第1書込命令を、前記第3制御回路の第1記憶領域に格納する第1格納処理部と、
前記第2制御回路から受信した前記第2読出命令が前記所定の情報を含む場合、前記第2読出命令を、前記第3制御回路の第2記憶領域に格納する第2格納処理部と、
前記第1記憶領域に格納された前記第1書込命令に含まれる前記メインメモリのアドレスと、前記第2記憶領域に格納された前記第2読出命令に含まれる前記メインメモリのアドレスとが一致する場合、前記第1記憶領域に格納された前記データを読み出し、前記データを前記第2制御回路に送信する第3送信部と、
を有する情報処理装置。
(付記2)
前記第2制御回路は、
前記第3制御回路から前記データを受信し、受信した前記データを前記第2記憶装置に書き込む書込部
をさらに有する付記1記載の情報処理装置。
(付記3)
前記第1格納処理部は、
前記第1制御回路から受信した前記第1書込命令が前記所定の情報を含まない場合、受信した前記第1書込命令に含まれる前記データを前記メインメモリに格納し、
前記第2格納処理部は、
前記第2制御回路から受信した前記第2読出命令が前記所定の情報を含まない場合、前記第2読出命令に従って前記データを前記メインメモリから読み出し、
前記第3送信部は、
前記メインメモリから読み出した前記データを前記第2制御回路に送信する、
付記1又は2記載の情報処理装置。
(付記4)
前記第3送信部は、
前記第1記憶領域に格納された前記データと、前記メインメモリから読み出した前記データとの両方が存在する場合、いずれが前回送信されたかに基づき、いずれを次に送信するか決定する、
付記3記載の情報処理装置。
(付記5)
情報処理装置と、
前記情報処理装置に接続された第1記憶装置と、
前記情報処理装置に接続された第2記憶装置と、
を有する情報処理システムであって、
前記情報処理装置は、
プロセッサと、
メインメモリと、
第1制御回路と、
第2制御回路と、
第3制御回路と、
を有し、
前記第1制御回路は、
前記プロセッサから受信した、前記第1記憶装置からデータを読み出すための第1読出命令が、所定の情報を含むか判定する第1判定部と、
前記第1読出命令が前記所定の情報を含むと前記第1判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前に前記プロセッサに送信すると共に、読み出された前記データと前記所定の情報とを含む、読み出された前記データを前記メインメモリに書き込むための第1書込命令を前記第3制御回路に送信する第1送信部と
を有し、
前記第2制御回路は、
前記プロセッサから受信した、前記第2記憶装置に前記データを書き込むための第2書込命令が、前記所定の情報を含むか判定する第2判定部と、
前記第2書込命令が前記所定の情報を含むと前記第2判定部により判定された場合、前記所定の情報を含む、前記データを前記メインメモリから読み出すための第2読出命令を前記第3制御回路に送信する第2送信部と、
を有し、
前記第3制御回路は、
前記第1制御回路から受信した前記第1書込命令が前記所定の情報を含む場合、前記第1書込命令を、前記第3制御回路の第1記憶領域に格納する第1格納処理部と、
前記第2制御回路から受信した前記第2読出命令が前記所定の情報を含む場合、前記第2読出命令を、前記第3制御回路の第2記憶領域に格納する第2格納処理部と、
前記第1記憶領域に格納された前記第1書込命令に含まれる前記メインメモリのアドレスと、前記第2記憶領域に格納された前記第2読出命令に含まれる前記メインメモリのアドレスとが一致する場合、前記データを前記第2制御回路に送信する第3送信部と、
を有する情報処理システム。
(付記6)
プロセッサと制御回路とを有する情報処理装置の前記制御回路であって、
前記プロセッサから受信した、前記情報処理装置に接続された第1記憶装置からデータを読み出すための読出命令が、所定の情報を含むか判定する判定部と、
前記読出命令が前記所定の情報を含むと前記判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前に前記プロセッサに送信する送信部と、
を有する制御回路。
(付記7)
プロセッサとメインメモリと制御回路とを有する情報処理装置の前記制御回路であって、
データを含み且つ前記メインメモリに前記データを書き込むための書込命令が、所定の情報をさらに含む場合、前記書込命令を、前記制御回路の第1記憶領域に格納する第1格納処理部と、
前記メインメモリから前記データを読み出すための読出命令が前記所定の情報を含む場合、前記読出命令を、前記制御回路の第2記憶領域に格納する第2格納処理部と、
前記第1記憶領域に格納された前記書込命令に含まれる前記メインメモリのアドレスと、前記第2記憶領域に格納された前記読出命令に含まれる前記メインメモリのアドレスとが一致する場合、前記第1記憶領域に格納された前記データを読み出し、前記データを送信する送信部と、
を有する制御回路。