(57)【特許請求の範囲】
【請求項１】
プロセッサと、
メインメモリと、
第１制御回路と、
第２制御回路と、
第３制御回路と、
を有する情報処理装置であって、
前記第１制御回路は、
前記プロセッサから受信した、前記情報処理装置に接続された第１記憶装置からデータを読み出すための第１読出命令が、所定の情報を含むか判定する第１判定部と、
前記第１読出命令が前記所定の情報を含むと前記第１判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前に前記プロセッサに送信すると共に、前記第１記憶装置から読み出した前記データと前記所定の情報とを含む、読み出した前記データを前記メインメモリに書き込むための第１書込命令を前記第３制御回路に送信する第１送信部と
を有し、
前記第２制御回路は、
前記読み出しが完了する前に前記プロセッサから受信した、前記情報処理装置に接続された第２記憶装置に前記データを書き込むための第２書込命令が、前記所定の情報を含むか判定する第２判定部と、
前記第２書込命令が前記所定の情報を含むと前記第２判定部により判定された場合、前記所定の情報を含む、前記データを前記メインメモリから読み出すための第２読出命令を前記第３制御回路に送信する第２送信部と、
を有し、
前記第３制御回路は、
前記第１制御回路から受信した前記第１書込命令が前記所定の情報を含む場合、前記第１書込命令を、前記第３制御回路の第１記憶領域に格納する第１格納処理部と、
前記第２制御回路から受信した前記第２読出命令が前記所定の情報を含む場合、前記第２読出命令を、前記第３制御回路の第２記憶領域に格納する第２格納処理部と、
前記第１記憶領域に格納された前記第１書込命令に含まれる前記メインメモリのアドレスと、前記第２記憶領域に格納された前記第２読出命令に含まれる前記メインメモリのアドレスとが一致する場合、前記読み出しが完了する前に、前記第１記憶領域に格納された前記データを読み出し始め、前記データを前記第２制御回路に送信する第３送信部と、
を有する情報処理装置。
【請求項２】
前記第２制御回路は、
前記第３制御回路から前記データを受信し、受信した前記データを前記第２記憶装置に書き込む書込部
をさらに有する請求項１記載の情報処理装置。
【請求項３】
前記第１格納処理部は、
前記第１制御回路から受信した前記第１書込命令が前記所定の情報を含まない場合、受信した前記第１書込命令に含まれる前記データを前記メインメモリに格納し、
前記第２格納処理部は、
前記第２制御回路から受信した前記第２読出命令が前記所定の情報を含まない場合、前記第２読出命令に従って前記データを前記メインメモリから読み出し、
前記第３送信部は、
前記メインメモリから読み出した前記データを前記第２制御回路に送信する、
請求項１又は２記載の情報処理装置。
【請求項４】
前記第３送信部は、
前記第１記憶領域に格納された前記データと、前記メインメモリから読み出した前記データとの両方が存在する場合、いずれが前回送信されたかに基づき、いずれを次に送信するか決定する、
請求項３記載の情報処理装置。
【請求項５】
第１記憶装置に格納されたデータを第２記憶装置に転送する場合に前記第１記憶装置からのデータの読み出しが完了したことを示す完了報告を受信すると前記第２記憶装置へのデータの書込命令を書き込み処理を行う他の制御回路に出力するプロセッサと制御回路とを有する情報処理装置の前記制御回路であって、
前記プロセッサから受信した、前記情報処理装置に接続された第１記憶装置からデータを読み出すための読出命令が、所定の情報を含むか判定する判定部と、
前記読出命令が前記所定の情報を含むと前記判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前に前記プロセッサに送信する送信部と、
を有する制御回路。
【請求項６】
プロセッサとメインメモリと制御回路とを有する情報処理装置の前記制御回路であって、
第１の他の制御回路により第１記憶装置から読み出されたデータを含み且つ前記メインメモリに前記データを書き込むための書込命令が、所定の情報をさらに含む場合、前記書込命令を、前記制御回路の第１記憶領域に格納する第１格納処理部と、
第２の他の制御回路により第２記憶装置に前記データを転送するために前記メインメモリから前記データを読み出すための読出命令が前記所定の情報を含む場合、前記読出命令を、前記制御回路の第２記憶領域に格納する第２格納処理部と、
前記第１記憶領域に格納された前記書込命令に含まれる前記メインメモリのアドレスと、前記第２記憶領域に格納された前記読出命令に含まれる前記メインメモリのアドレスとが一致する場合、前記第１記憶領域に格納された前記データを読み出し、前記第２の他の制御回路に前記データを送信する送信部と、
を有する制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶装置間でのデータ転送技術に関する。
【背景技術】
【０００２】
サーバ等の情報処理装置に外部記憶装置や共用の記憶装置等が複数接続されている場合において、その中の或る記憶装置から他の記憶装置にデータが転送されることがある。公知の転送方法においては、データの転送元の記憶装置から読み出されたデータは情報処理装置の主記憶に一旦書き込まれ、主記憶への書き込みが完了した後、主記憶に書き込まれたデータは読み出されて転送先の記憶装置に書き込まれる。
【０００３】
この転送方法には制御が比較的簡単であるという利点がある。しかし、最終的に転送が完了するまでに要する時間が長くなることがある。また、主記憶上の領域を確保するために元々主記憶上にあるデータを別の記憶装置に移動する処理が行われることがあり、その場合にはさらに時間がかかる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−２８１０８４号公報
【特許文献２】特開２００８−１３００９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、１つの側面では、情報処理装置に接続された複数の記憶装置のうち或る記憶装置から他の記憶装置にデータを転送するのに要する時間を短縮するための技術を提供することである。
【課題を解決するための手段】
【０００６】
本発明に係る情報処理装置は、プロセッサと、メインメモリと、第１制御回路と、第２制御回路と、第３制御回路とを有する。そして、第１制御回路は、プロセッサから受信した、情報処理装置に接続された第１記憶装置からデータを読み出すための第１読出命令が、所定の情報を含むか判定する第１判定部と、第１読出命令が所定の情報を含むと第１判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前にプロセッサに送信すると共に、第１記憶装置から読み出したデータと所定の情報とを含む、読み出したデータをメインメモリに書き込むための第１書込命令を第３制御回路に送信する第１送信部とを有する。そして、第２制御回路は、プロセッサから受信した、情報処理装置に接続された第２記憶装置にデータを書き込むための第２書込命令が、所定の情報を含むか判定する第２判定部と、第２書込命令が所定の情報を含むと第２判定部により判定された場合、所定の情報を含む、データをメインメモリから読み出すための第２読出命令を第３制御回路に送信する第２送信部とを有する。そして、第３制御回路は、第１制御回路から受信した第１書込命令が所定の情報を含む場合、第１書込命令を、第３制御回路の第１記憶領域に格納する第１格納処理部と、第２制御回路から受信した第２読出命令が所定の情報を含む場合、第２読出命令を、第３制御回路の第２記憶領域に格納する第２格納処理部と、第１記憶領域に格納された第１書込命令に含まれるメインメモリのアドレスと、第２記憶領域に格納された第２読出命令に含まれるメインメモリのアドレスとが一致する場合、第１記憶領域に格納されたデータを読み出し、データを第２制御回路に送信する第３送信部とを有する。
【発明の効果】
【０００７】
１つの側面では、情報処理装置に接続された複数の記憶装置のうち或る記憶装置から他の記憶装置にデータを転送するのに要する時間を短縮できるようになる。
【図面の簡単な説明】
【０００８】
【図１】図１は、本実施の形態におけるシステムの概要を示す図である。
【図２】図２は、主記憶を経由してデータを転送する場合のタイムチャートを示す図である。
【図３】図３は、主記憶を経由せずにデータを転送する場合のタイムチャートを示す図である。
【図４】図４は、本体装置の構成を示す図である。
【図５Ａ】図５Ａは、ＭＣＵの構成を示す図である。
【図５Ｂ】図５Ｂは、ＳＳＭ及びチャネルの構成を示す図である。
【図６】図６は、パケット制御回路の構成を示す図である。
【図７】図７は、パケット制御回路の構成を示す図である。
【図８】図８は、バイパスバッファ制御回路の構成を示す図である。
【図９】図９は、バイパスバッファに格納されるデータの一例を示す図である。
【図１０】図１０は、バイパスリクエストキューに格納されるデータの一例を示す図である。
【図１１】図１１は、リクエストのフォーマットの一例を示す図である。
【図１２】図１２は、本体装置の動作の概要を説明するための図である。
【図１３】図１３は、本実施の形態のシステムにおいて行われる処理の概要のフローを示す図である。
【図１４】図１４は、主記憶を経由してデータを転送する場合の処理フローを示す図である。
【図１５】図１５は、バイパスバッファ制御回路がＳＳＭから書込命令を受信した際に実行する処理の処理フローを示す図である。
【図１６】図１６は、バイパスバッファ制御回路の第２調停回路が実行する処理の処理フローを示す図である。
【図１７】図１７は、バイパスバッファ制御回路がＳＳＭから読出命令を受信した際に実行する処理の処理フローを示す図である。
【図１８】図１８は、バイパスバッファ制御回路がＳＳＭから読出命令を受信した際に実行する処理の処理フローを示す図である。
【図１９】図１９は、バイパスバッファ制御回路の第１調停回路が実行する処理の処理フローを示す図である。
【図２０】図２０は、本実施の形態の転送方法を使用した場合のシーケンス図である。
【図２１】図２１は、公知の転送方法を使用した場合のシーケンス図である。
【発明を実施するための形態】
【０００９】
図１に、本実施の形態におけるシステムの概要を示す。本体装置１ａ及び１ｂは、例えばサーバユニット或いはサーバブレード等であり、それぞれ１のコンピュータとして独立して動作する。本体装置１ａにはＩ／Ｏ（Input/Output）５ａが接続され、本体装置１ｂにはＩ／Ｏ５ｂが接続される。Ｉ／Ｏ５ａ及び５ｂは、例えばＨＤＤ（Hard Disk Drive）等の外部記憶装置である。本体装置１ａ及び１ｂは、共用の記憶装置であるＳＳＵ（System Storage Unit）３に接続される。ＳＳＵ３は、例えば不揮発性のメモリ等である。
【００１０】
但し、ＳＳＵ３に接続される本体装置の数は３以上であってもよい。また、各本体装置に接続されるＩ／Ｏの数は２以上であってもよい。
【００１１】
本実施の形態においては、ＳＳＵ３からＩ／Ｏ（説明を簡単にするため、以下ではＩ／Ｏ５ａとする）にデータを転送することを考える。図２に、主記憶を経由してデータを転送する場合のタイムチャートを示す。図２において、ＳＳＭ（System Storage Manager）はＳＳＵ３と本体装置１ａとの間のインタフェース制御を行うユニットであり、チャネルはＩ／Ｏ５ａと本体装置１ａとの間のインタフェース制御を行うユニットである。
【００１２】
主記憶を経由してデータを転送する場合、まずＣＰＵ（Central Processing Unit）は、ＳＳＵ３に格納されたデータの読出命令をＳＳＭに発行する。ＳＳＭは、ＳＳＵ３に格納されたデータの読出命令をＣＰＵから受け取ると、ＳＳＵ３からデータを読み出して主記憶に転送する。主記憶へのデータ転送が完了すると、ＳＳＭは、読み出しが完了したことを示す完了報告をＣＰＵに発行する。ＣＰＵは完了報告を受け取ると、Ｉ／Ｏ５ａへの書込命令をチャネルに発行する。チャネルは、Ｉ／Ｏ５ａへの書込命令を受け取ると、主記憶に格納されたデータをＩ／Ｏ５ａに転送する。Ｉ／Ｏ５ａへの転送が完了すると、チャネルは、書き込みが完了したことを示す完了報告をＣＰＵに発行する。以上で一連のデータ転送が完了する。
【００１３】
この転送方法においては処理がシリアルに行われるため、背景技術の欄で述べたように、データの転送が完了するまでの時間が長くなる。
【００１４】
そこで本実施の形態においては、主記憶を経由しないように且つ一部の処理を並行して行うようにデータを転送することで転送時間を短縮する。図３に、主記憶を経由せずにデータを転送する場合のタイムチャートを示す。図３において、バイパスバッファとは、本体装置１ａのＭＣＵ（Memory Controller unit）に設けられるバッファである。まずＣＰＵは、ＳＳＵ３に格納されたデータの読出命令をＳＳＭに発行する。ＳＳＭは、ＳＳＵ３に格納されたデータの読出命令をＣＰＵから受け取ると、読み出しが完了したことを示す完了報告をＣＰＵに発行する。そして、ＳＳＭは、ＳＳＵ３からデータを読み出してバイパスバッファに転送することを開始する。これと並行して、ＣＰＵは完了報告を受け取ると、Ｉ／Ｏ５ａへの書込命令をチャネルに発行する。チャネルは、Ｉ／Ｏ５ａへの書込命令を受け取ると、バイパスバッファに格納されたデータをＩ／Ｏ５ａに転送する。Ｉ／Ｏ５ａへの転送が完了すると、チャネルは、書き込みが完了したことを示す完了報告をＣＰＵに発行する。以上で一連のデータ転送が完了する。
【００１５】
以下では、本実施の形態の具体的な内容について説明する。
【００１６】
図４に、本体装置１ａの構成を示す。本体装置１ａは、ＣＰＵ１１と、主記憶１２と、ＭＣＵ１０と、ＳＳＭ１３と、チャネル１４とを有する。ＳＳＭ１３はＳＳＵ３に接続され、チャネル１４はＩ／Ｏ５ａに接続される。
【００１７】
図５Ａに、ＭＣＵ１０の構成を示す。ＭＣＵ１０は、パケットの転送等を実行するパケット制御回路１５０ａ乃至１５０ｆと、バイパスバッファ制御回路１００とを有する。括弧付きの番号は、以下で説明する、本体装置１ａの動作の番号に相当する。
【００１８】
パケット制御回路１５０ａはＣＰＵ１１、パケット制御回路１５０ｃ及びパケット制御回路１５０ｅに接続される。パケット制御回路１５０ｂはＣＰＵ１１、パケット制御回路１５０ｄ及びパケット制御回路１５０ｆに接続される。パケット制御回路１５０ｃはＳＳＭ１３、パケット制御回路１５０ａ及びバイパスバッファ制御回路１００に接続される。パケット制御回路１５０ｄはＳＳＭ１３、パケット制御回路１５０ｂ及びバイパスバッファ制御回路１００に接続される。パケット制御回路１５０ｅはチャネル１４、パケット制御回路１５０ａ及びバイパスバッファ制御回路１００に接続される。パケット制御回路１５０ｆはチャネル１４、パケット制御回路１５０ｂ及びバイパスバッファ制御回路１００に接続される。バイパスバッファ制御回路１００は、主記憶１２及びパケット制御回路１５０ｃ乃至１５０ｆに接続される。
【００１９】
図５Ｂに、ＳＳＭ１３及びチャネル１４の構成を示す。ＳＳＭ１３は、パケットの転送等を実行するパケット制御回路１３ｐと、ＳＳＵ３へのデータの書き込み及びＳＳＵ３からのデータの読み込み等を実行するデータ転送回路１３ｔと、データ転送回路１３ｔに使用されるメモリ１３ｍとを有する。パケット制御回路１３ｐは、バイパス制御回路１３０を有する。チャネル１４は、パケットの転送等を実行するパケット制御回路１４ｐと、チャネル１４の特徴的な動作をするためのプログラムを実行するプログラム実行回路１４ｅと、Ｉ／Ｏ５ａへのデータの書き込み及びＩ／Ｏ５ａからのデータの読み込み等を実行するデータ転送回路１４ｔと、データ転送回路１４ｔに使用されるメモリ１４ｍとを有する。パケット制御回路１４ｐは、バイパス制御回路１４０を有する。括弧付きの番号は、以下で説明する、本体装置１ａの動作の番号に相当する。
【００２０】
データ転送回路１３ｔは、ＳＳＵ３と、メモリ１３ｍと、パケット制御回路１３ｐとに接続される。メモリ１３ｍはデータ転送回路１３ｔに接続される。パケット制御回路１３ｐは、ＭＣＵ１０と、データ転送回路１３ｔに接続される。データ転送回路１４ｔは、Ｉ／Ｏ５ａと、メモリ１４ｍと、プログラム実行回路１４ｅとに接続される。メモリ１４ｍは、データ転送回路１４ｔに接続される。プログラム実行回路１４ｅは、データ転送回路１４ｔとパケット制御回路１４ｐとに接続される。パケット制御回路１４ｐは、ＭＣＵ１０と、プログラム実行回路１４ｅに接続される。
【００２１】
図６に、パケット制御回路１３ｐの構成を示す。パケット制御回路１３ｐは、バイパス制御回路１３０と、入力パケット解析部１３１と、書き込み制御回路１３２と、完了報告制御回路１３３と、出力パケット生成部１３４とを有する。バイパス制御回路１３０は、バイパスモードチェック部１３０１と、先出フラグ１３０２とを有する。括弧付きの番号は、以下で説明する本体装置１ａの動作の番号に相当する。
【００２２】
入力パケット解析部１３１は、バイパスモードチェック部１３０１に接続される。書き込み制御回路１３２は、先出フラグ１３０２と、出力パケット生成部１３４とに接続される。完了報告制御回路１３３は、出力パケット生成部１３４と、先出フラグ１３０２とに接続される。出力パケット生成部１３４は、完了報告制御回路１３３と、書き込み制御回路１３２とに接続される。バイパスモードチェック部１３０１は、入力パケット解析部１３１と、先出フラグ１３０２とに接続される。先出フラグ１３０２は、バイパスモードチェック部１３０１と、完了報告制御回路１３３と、書き込み制御回路１３２とに接続される。
【００２３】
図７に、パケット制御回路１４ｐの構成を示す。パケット制御回路１４ｐは、バイパス制御回路１４０と、入力パケット解析部１４１と、読み出し制御回路１４２と、完了報告制御回路１４３と、出力パケット生成部１４４とを有する。バイパス制御回路１４０は、バイパスモードチェック部１４０１と、バイパス実行フラグ１４０２とを有する。括弧付きの番号は、以下で説明する本体装置１ａの動作の番号に相当する。
【００２４】
入力パケット解析部１４１は、バイパスモードチェック部１４０１に接続される。読み出し制御回路１４２は、バイパス実行フラグ１４０２と、出力パケット生成部１４４とに接続される。完了報告制御回路１４３は、出力パケット生成部１４４に接続される。出力パケット生成部１４４は、完了報告制御回路１４３と、読み出し制御回路１４２とに接続される。バイパスモードチェック部１４０１は、入力パケット解析部１４１と、バイパス実行フラグ１４０２とに接続される。バイパス実行フラグ１４０２は、バイパスモードチェック部１４０１と、読み出し制御回路１４２とに接続される。
【００２５】
図８に、バイパスバッファ制御回路１００の構成を示す。バイパスバッファ制御回路１００は、バイパスバッファ１０１と、バイパスモードチェック回路１０２と、バイパスモードチェック回路１０３と、データチェック回路１０４と、第１切替部１０５と、第２切替部１０６と、バイパスリクエストキュー制御回路１０７と、バイパスリクエストキュー１０８と、バイパスリクエストポート１０９と、アドレス比較回路１１０と、第１調停回路１１１と、第２調停回路１１２と、完了報告制御回路１１３とを有する。括弧付きの番号は、以下で説明する本体装置１ａの動作の番号に相当する。
【００２６】
バイパスバッファ１０１は、第１切替部１０５と、完了報告制御回路１１３と、アドレス比較回路１１０と、調停ポートＡとに接続される。バイパスモードチェック回路１０２は、データチェック回路１０４と、第１切替部１０５とに接続される。バイパスモードチェック回路１０３は、第２切替部１０６に接続される。データチェック回路１０４は、バイパスモードチェック回路１０２と、第１切替部１０５とに接続される。第１切替部１０５は、データチェック回路１０４と、バイパスバッファ１０１と、完了報告制御回路１１３とに接続される。第２切替部１０６は、バイパスモードチェック回路１０３と、バイパスリクエストキュー１０８とに接続される。バイパスリクエストキュー制御回路１０７は、アドレス比較回路１１０と、バイパスリクエストキュー１０８とに接続される。バイパスリクエストキュー１０８は、第２切替部１０６と、バイパスリクエストキュー制御回路１０７と、バイパスリクエストポート１０９とに接続される。バイパスリクエストポート１０９は、バイパスリクエストキュー１０８と、アドレス比較回路１１０と、調停ポートＡとに接続される。アドレス比較回路１１０は、バイパスリクエストキュー制御回路１０７と、バイパスリクエストポート１０９と、バイパスバッファ１０１と、調停ポートＡとに接続される。第１調停回路１１１は、調停ポートＡ及びＢに接続される。第２調停回路１１２は、調停ポートＣ及びＤに接続される。完了報告制御回路１１３は、第１切替部１０５と、調停ポートＣとに接続される。調停ポートＡ乃至Ｄは、レジスタ等の記憶装置である。
【００２７】
図９に、バイパスバッファ１０１に格納されるデータの一例を示す。図９の例では、データと、データが格納される主記憶上のアドレス（以下、ＭＳ（Main Storage）アドレスと呼ぶ）と、有効フラグの値とが格納される。有効フラグが有効（例えば値が「１」）に設定されている場合、データは調停ポートＡへ未だ出力されていない。有効フラグが無効（例えば値が「０」）に設定されている場合、データは調停ポートＡへ既に出力されている。
【００２８】
図１０に、バイパスリクエストキュー１０８に格納されるデータの一例を示す。図１０の例では、リクエストが格納される。図１１に、リクエストのフォーマットの一例を示す。図１１の例では、リクエストには、アクセスの種類を規定するオペレーションコードと、ＭＳアドレスと、バイパスモードを示す情報と、データとが含まれる。オペレーションコードが「０００１」である場合、リクエストは、ＣＰＵ１１からＳＳＭ１３に対して発行される、ＳＳＵ３からの読出命令に相当する。オペレーションコードが「１００１」である場合、リクエストは、ＳＳＭ１３からＣＰＵ１１に対して発行される、ＳＳＵ３からの読み出しの完了報告に相当する。オペレーションコードが「００１０」である場合、リクエストは、ＣＰＵ１１からチャネル１４に対して発行される、Ｉ／Ｏ５ａに対する書込命令に相当する。オペレーションコードが「１０１０」である場合、リクエストは、チャネル１４からＣＰＵ１１に対して発行される、Ｉ／Ｏ５ａに対する書き込みの完了報告に相当する。オペレーションコードが「０１００」である場合、リクエストは、ＳＳＭ１３又はチャネル１４から主記憶１２に対して発行される、主記憶１２からの読出命令に相当する。オペレーションコードが「１１００」である場合、リクエストは、主記憶１２からＳＳＭ１３又はチャネル１４に対して発行される、主記憶１２からの読出の応答（以下、読出応答と呼ぶ）に相当する。オペレーションコードが「０１０１」である場合、リクエストは、ＳＳＭ１３又はチャネル１４から主記憶１２に対して発行される、主記憶１２に対する書込命令に相当する。オペレーションコードが「１１０１」である場合、リクエストは、主記憶１２からＳＳＭ１３又はチャネル１４に対して発行される、主記憶１２に対する書き込みの完了報告に相当する。なお、主記憶１２に対する書込命令および主記憶１２からの読出命令であったとしても、バイパスモードが有効に設定されている場合には、主記憶１２に対する書き込みおよび主記憶１２からの読み出しは行われない。
【００２９】
図１２を用いて、本実施の形態における本体装置１ａの動作の概要を説明する。
【００３０】
ＣＰＵ１１は、ＳＳＭ１３に対して、ＳＳＵ３からのデータの読出命令をバイパスモードを有効にして（すなわち、バイパスモードの値を１に設定して）発行する（図１２における(i)）。
【００３１】
ＳＳＭ１３は、バイパスモードが有効な読出命令を検出し、ＳＳＵ３のデータを読み出して主記憶１２への書き込みを行うことを待たずに、ＳＳＵ３からの読み出しの完了報告を先出でＣＰＵ１１に発行する（図１２における(ii)）。
【００３２】
ＳＳＭ１３は、ＳＳＵ３からのデータの読出命令に従いＳＳＵ３からデータを読み出し（図１２における(iii)）、読み出したデータを主記憶１２へ書き込むための書込命令をバイパスモードを有効にして発行する（図１２における(iv)）。ＭＣＵ１０のバイパスバッファ制御回路１００は、バイパスモードが有効な書込命令をＳＳＭ１３から受信し、エラーが無ければ、書込命令に含まれるＭＳアドレスとデータとを有効フラグを有効に設定してバイパスバッファ１０１に格納する。
【００３３】
一方で、ＣＰＵ１１は、ＳＳＵ３からの読み出しの完了報告をＳＳＭ１３から受信した場合、Ｉ／Ｏ５ａに対する書込命令をバイパスモードを有効にしてチャネル１４に発行する（図１２における(v)）。
【００３４】
チャネル１４は、バイパスモードが有効な書込命令をＣＰＵ１１から受信する。そして、チャネル１４は、データを読み出してＩ／Ｏ５ａに書き込むため、主記憶１２からの読出命令をバイパスモードを有効にしてＭＣＵ１０に対して発行する（図１２における(vi)）。
【００３５】
ＭＣＵ１０のバイパスバッファ制御回路１００は、バイパスモードが有効な読出命令をチャネル１４から受信する。そして、バイパスバッファ制御回路１００は、受信した読出命令に従いバイパスバッファ１０１からデータを読み出し、読み出したデータを含む読出応答をチャネル１４に発行する（図１２における(vii)）。
【００３６】
チャネル１４は、読出応答をＭＣＵ１０から受信した場合、受信した読出応答に含まれるデータをＩ／Ｏ５ａに書き込む。そして、チャネル１４は、Ｉ／Ｏ５ａに対する書き込みの完了報告をＣＰＵ１１に対して発行する（図１２における(viii)）。
【００３７】
以上が本体装置１ａの動作の概要である。
【００３８】
より詳細には、本体装置１ａは以下のように動作する。なお、括弧付きの番号は図５Ａ乃至図８に示した番号に対応する。
【００３９】
まず、ＣＰＵ１１は、ＳＳＵ３からの読出命令を、バイパスモードを有効にし且つＭＣＵ１０を経由してＳＳＭ１３に発行する（１）。
【００４０】
ＳＳＭ１３のバイパスモードチェック部１３０１は、入力パケット解析部１３１を介して受信した読出命令のバイパスモードが有効であるか判定する（２）。バイパスモードが有効である場合、ＳＳＭ１３は、ＳＳＵ３からの読み出しの完了報告を先出するため、先出フラグ１３０２を有効（例えば「１」）に設定する（３）。先出フラグ１３０２が有効に設定された場合、ＳＳＭ１３は、完了報告制御回路１３３を起動する。完了報告制御回路１３３は、ＳＳＵ３からの読み出しの完了報告を生成し、生成した完了報告を出力パケット生成部１３４がＣＰＵ１１に対して発行する（４）。
【００４１】
ＣＰＵ１１は、ＳＳＵ３からの読み出しの完了報告を受信する。そして、ＣＰＵ１１は、Ｉ／Ｏ５ａに対する書込命令を、バイパスモードを有効にし且つＭＣＵ１０を経由してチャネル１４に発行する（５）。
【００４２】
ＳＳＭ１３の入力パケット解析部１３１は、ＳＳＵ３からの読出命令をＳＳＵ３に発行する（６）。ＳＳＭ１３は、ＳＳＵ３から読み出されたデータを受信する（７）。そして、先出フラグ１３０２が有効である場合、ＳＳＭ１３の書き込み制御回路１３２は、ＳＳＵ３から読み出されたデータの書込命令を、バイパスモードを有効にしてＭＣＵ１０に対して発行する（８）。（６）から（８）の処理はデータを漏れなく書き込むまで繰り返し行われる。
【００４３】
ＭＣＵ１０のバイパスバッファ制御回路１００におけるバイパスモードチェック回路１０２は、ＳＳＭ１３から受信した書込命令に設定されたバイパスモードを確認する（９）。
【００４４】
バイパスモードが「有効」である場合、バイパスバッファ制御回路１００は、以下の処理を実行する。具体的には、データチェック回路１０４は、書込命令のデータが正常であるか確認し、エラーが発生していた場合には書込命令を廃却してＳＳＭ１３に対して書込命令の再送要求を送信する（１０−１）。第１切替部１０５は、ＭＳアドレスと書き込まれるデータとを含むセットを、有効フラグを有効にしてバイパスバッファ１０１に格納する（１０−２）。バイパスバッファ１０１に空きがある場合、完了報告制御回路１１３は、主記憶１２に対する書き込みの完了報告を調停ポートＣに設定する（１０−３）。（１０−２）の書き込みによってバイパスバッファ１０１に空きが無くなった場合、完了報告制御回路１１３は、空きが生じるまで完了報告の発行を保留する。
【００４５】
一方、バイパスモードが「有効」ではない場合、バイパスバッファ制御回路１００は、以下の処理を実行する。具体的には、バイパスバッファ制御回路１００は、書込命令に従って主記憶１２に対する書き込みを実行する（１１−１）。そして、バイパスバッファ制御回路１００は、主記憶１２に対する書き込みの完了報告を調停ポートＤに設定する（１１−２）。
【００４６】
第２調停回路１１２は、調停ポートＣと調停ポートＤのいずれか一方のみが選択され続けることが無いように選択を行い、選択した調停ポートに設定された完了報告をＳＳＭ１３に対して発行する（１２）。
【００４７】
完了報告制御回路１３３は、ＣＰＵ１１から指定された転送長の分の読出命令に対応する書込命令の完了報告を漏れなく受信し且つ先出フラグ１３０２が有効に設定されている場合、ＳＳＵ３からの読出命令の完了報告をＣＰＵ１１に発行せず、先出フラグ１３０２を無効に設定して処理を終了する（１３）。
【００４８】
一方、チャネル１４のバイパス制御回路１４０におけるバイパスモードチェック部１４０１は、入力パケット解析部１４１を介して受信した書込命令のバイパスモードが有効であるか判定する（１４）。バイパスモードが有効である場合、バイパスモードチェック部１４０１は、バイパス実行フラグ１４０２を有効に設定する（１５）。読み出し制御回路１４２は、主記憶１２からの読出命令を、バイパスモードを有効にして出力パケット生成部１４４を介してＭＣＵ１０に発行する（１６）。ＣＰＵ１１から指定された転送長分の書き込みを行うためのデータを取得するため、チャネル１４は（１６）の処理を繰り返し行い、読出命令の発行が完了すると読み出し制御回路１４２はバイパス実行フラグ１４０２を無効に設定する（１７）。
【００４９】
ＭＣＵ１０のバイパスバッファ制御回路１００におけるバイパスモードチェック回路１０３は、チャネル１４から受信した読出命令のバイパスモードを確認する（１８）。
【００５０】
バイパスモードが「有効」である場合、バイパスバッファ制御回路１００は、以下の処理を実行する。具体的には、第２切替部１０６は、バイパスリクエストキュー１０８の最後尾に受信した読出命令を格納する（１９−１）。バイパスリクエストキュー制御回路１０７は、バイパスリクエストキュー１０８の先頭の読出命令を、バイパスリクエストポート１０９が空である場合にバイパスリクエストポート１０９に格納し、バイパスリクエストキュー１０８をシフトする（１９−２）。調停ポートＡが空ではない場合、バイパスバッファ制御回路１００は、調停ポートＡが空くまで待機する（１９−３）。調停ポートＡが空である場合、アドレス比較回路１１０は、バイパスリクエストポート１０９に格納された読出命令のＭＳアドレスと同じＭＳアドレスであり且つ有効フラグが有効に設定されているという条件を満たすセットがバイパスバッファ１０１に存在するか判定する（１９−４）。条件を満たすセットが存在する場合、アドレス比較回路１１０は、そのセットからデータを読み出して調停ポートＡに格納し、有効フラグを無効に設定する。さらに、アドレス比較回路１１０は、読出命令の返信先のチャネルを示す情報をバイパスリクエストポート１０９から読み出して調停ポートＡに格納し、バイパスリクエストポート１０９を空にする（１９−５）。条件を満たすセットが存在しない場合、バイパスリクエストキュー制御回路１０７は、バイパスリクエストポート１０９に格納されている読出命令を取り出してバイパスリクエストキュー１０８の最後尾に格納し、バイパスリクエストポート１０９を空にする（１９−６）。バイパスリクエストポート１０９に読出命令が残っている場合、バイパスバッファ制御回路１００は、（１９−１）から（１９−６）までの処理を繰り返す。なお、調停ポートＡにデータが格納された場合には以下で説明する（２１）も実行される。
【００５１】
一方、バイパスモードが「有効」ではない場合、バイパスバッファ制御回路１００は、以下の処理を実行する。具体的には、バイパスバッファ制御回路１００は、主記憶１２からの読出命令に従い主記憶１２からデータを読み出し（２０−１）、読み出したデータを調停ポートＢに格納する（２０−２）。
【００５２】
バイパスバッファ制御回路１００における第１調停回路１１１は、調停ポートＡと調停ポートＢのいずれか一方のみが選択され続けることが無いように選択を行い、選択した調停ポートに格納されたデータをチャネル１４に送信する（２１）。
【００５３】
チャネル１４の入力パケット解析部１４１は、ＭＣＵ１０からデータを受信し（２２）、受信したデータをＩ／Ｏ５ａに書き込む（２３）。完了報告制御回路１４３は、Ｉ／Ｏ５ａから書き込みの完了報告を受け取り（２４）、Ｉ／Ｏ５ａに対する書き込みの完了報告を出力パケット生成部１４４を介してＣＰＵ１１に発行する（２５）。
【００５４】
以上で本体装置１ａの動作の概要についての説明を終了する。
【００５５】
次に、図１３乃至図１９のフローチャートを用いて、本体装置１ａの動作を説明する。
【００５６】
まず、図１３を用いて、本実施の形態のシステムにおいて行われる処理の概要を説明する。ＣＰＵ１１はＳＳＭ１３に対して、ＳＳＵ３からの読出命令を発行する（図１３：ステップＳ１）。これに応じ、ＳＳＭ１３はＣＰＵ１１に対して、読出命令の完了報告を発行する（ステップＳ３）。
【００５７】
そして、ステップＳ９乃至Ｓ１７の処理と、ステップＳ５及びＳ７の処理とが並行して行われる。まず、ステップＳ５及びＳ７の処理について説明する。
【００５８】
ＳＳＭ１３は、ＳＳＵ３からＳＳＭ１３を介してバイパスバッファ１０１に対して、ＳＳＵ３から読み出したデータを転送することを開始する（ステップＳ５）。
【００５９】
ＳＳＭ１３は、ＳＳＵ３からバイパスバッファ１０１へのデータ転送が完了したか判定する（ステップＳ７）。データ転送が完了していない場合（ステップＳ７：Ｎｏルート）、ステップＳ７の処理に戻る。データ転送が完了した場合（ステップＳ７：Ｙｅｓルート）、処理は終了する。
【００６０】
一方、ＣＰＵ１１はチャネル１４に対して、Ｉ／Ｏ５ａに対する書込命令を発行する（ステップＳ９）。そして、チャネル１４はＭＣＵ１０のバイパスバッファ制御回路１００に対して、主記憶１２からの読出命令を発行する。
【００６１】
バイパスバッファ制御回路１００は、読出命令に含まれるＭＳアドレスと一致するＭＳアドレスがバイパスバッファ１０１に存在するか判定する（ステップＳ１１）。読出命令に含まれるＭＳアドレスと一致するＭＳアドレスがバイパスバッファ１０１に存在しない場合（ステップＳ１１：Ｎｏルート）、ステップＳ１１の処理に戻る。
【００６２】
一方、読出命令に含まれるＭＳアドレスと一致するＭＳアドレスがバイパスバッファ１０１に存在する場合（ステップＳ１１：Ｙｅｓルート）、チャネル１４は、バイパスバッファ１０１からチャネル１４を介してＩ／Ｏ５ａに対して、ＳＳＵ３から読み出されたデータを転送することを開始する（ステップＳ１３）。
【００６３】
チャネル１４は、バイパスバッファ１０１からＩ／Ｏ５ａへのデータ転送が完了したか判定する（ステップＳ１５）。データ転送が完了していない場合（ステップＳ１５：Ｎｏルート）、ステップＳ１５の処理に戻る。データ転送が完了した場合（ステップＳ１５：Ｙｅｓルート）、チャネル１４はＣＰＵ１１に対して、Ｉ／Ｏ５ａに対する書込命令の完了報告を発行する（ステップＳ１７）。そして処理は終了する。
【００６４】
以上のように、データの読み出しとデータの書き込みとを並行して行うようにすれば、データの転送に要する時間を短縮できるようになる。また、本体装置に改変を加えることで実現可能なので、ＣＰＵ１１が実行する既存の命令フローを維持することができる。さらに、主記憶１２に格納されているデータを別の場所に退避しなくて済むので、主記憶１２に対する他のアクセスが遅延することもない。
【００６５】
比較のため、図２を用いて説明した、主記憶を経由してデータを転送する場合の処理について図１４を用いて説明する。
【００６６】
まず、ＣＰＵ１１はＳＳＭ１３に対して、ＳＳＵ３からの読出命令を発行する（図１４：ステップＳ２１）。
【００６７】
ＳＳＭ１３は、ＳＳＵ３に格納されているデータを主記憶１２へ転送することを開始する（ステップＳ２３）。ＳＳＭ１３は、データ転送が完了したか判定する（ステップＳ２５）。データ転送が完了していない場合（ステップＳ２５：Ｎｏルート）、ステップＳ２５の処理に戻る。
【００６８】
一方、データ転送が完了した場合（ステップＳ２５：Ｙｅｓルート）、ＳＳＭ１３はＣＰＵ１１に対して、読出命令の完了報告を発行する（ステップＳ２７）。
【００６９】
読出命令の完了報告を受け取ったＣＰＵ１１はチャネル１４に対して、ＳＳＵ３から読み出され且つ主記憶１２に格納されたデータをＩ／Ｏ５ａへ書き込む書込命令を発行する（ステップＳ２９）。
【００７０】
チャネル１４は、主記憶１２に格納されているデータをＩ／Ｏ５ａに転送することを開始する（ステップＳ３０）。チャネル１４は、データ転送が完了したか判定する（ステップＳ３１）。データ転送が完了していない場合（ステップＳ３１：Ｎｏルート）、ステップＳ３１の処理に戻る。
【００７１】
一方、データ転送が完了した場合（ステップＳ３１：Ｙｅｓルート）、チャネル１４はＣＰＵ１１に対して、書込命令の完了報告を発行する（ステップＳ３３）。そして処理は終了する。
【００７２】
以上のような処理の場合、データの読み出しが完了するまでは書き込みを開始できないので、転送が完了するまでの時間が長くなりがちである。また、データを主記憶１２まで転送することになるので、本実施の形態の場合よりも転送距離が長い。
【００７３】
次に、図１５乃至図１９を用いて、本体装置１ａの動作をより詳細に説明する。
【００７４】
まず、図１５を用いて、バイパスバッファ制御回路１００がＳＳＭ１３から書込命令を受信した際に実行する処理について説明する。
【００７５】
バイパスバッファ制御回路１００のバイパスモードチェック回路１０２は、ＳＳＭ１３からの書込命令を検出し（図１５：ステップＳ４１）、バイパスモードが有効であるか判定する（ステップＳ４３）。そして、バイパスモードチェック回路１０２は、判定結果を示す情報をデータチェック回路１０４に出力する。
【００７６】
バイパスモードが有効ではない場合（ステップＳ４３：Ｎｏルート）、データチェック回路１０４は、バイパスモードが有効ではないことを第１切替部１０５に設定する。すると、第１切替部１０５は書込命令を主記憶１２に出力し、これにより主記憶１２に対する書き込みが実行される（ステップＳ４５）。バイパスバッファ制御回路１００は、主記憶１２に対する書き込みの完了報告を受信し（ステップＳ４７）、受信した完了報告を調停ポートＤに格納する（ステップＳ４９）。そして処理は終了する。
【００７７】
一方、バイパスモードが有効である場合（ステップＳ４３：Ｙｅｓルート）、データチェック回路１０４は、書込命令に含まれるデータが正常であるか判定する（ステップＳ５１）。
【００７８】
データが正常ではない場合（ステップＳ５１：Ｎｏルート）、データチェック回路１０４は、書込命令の再送要求をＳＳＭ１３に送信する（ステップＳ５３）。そして処理は終了する。
【００７９】
一方、データが正常である場合（ステップＳ５１：Ｙｅｓルート）、データチェック回路１０４は、バイパスモードが有効であることを第１切替部１０５に設定する。すると、第１切替部１０５は書込命令をバイパスバッファ１０１に出力する。そして、バイパスバッファ制御回路１００は、書込命令に含まれるＭＳアドレス及びデータを含むセットを、有効フラグを有効にしてバイパスバッファ１０１に格納する（ステップＳ５５）。
【００８０】
完了報告制御回路１１３は、バイパスバッファ１０１に空きが有るか判定する（ステップＳ５７）。空きが無い場合（ステップＳ５７：Ｎｏルート）、ステップＳ５７の処理に戻る。一方、空きが有る場合（ステップＳ５７：Ｙｅｓルート）、完了報告制御回路１１３は、主記憶１２への書き込みの完了報告を生成する（ステップＳ５９）。そして、完了報告制御回路１１３は、生成した完了報告を調停ポートＣに設定する（ステップＳ６１）。そして処理は終了する。
【００８１】
次に、図１６を用いて、バイパスバッファ制御回路１００の第２調停回路１１２が実行する処理について説明する。
【００８２】
まず、第２調停回路１１２は、調停ポートＣにデータが格納されているか判定する（図１６：ステップＳ７１）。
【００８３】
調停ポートＣにデータが格納されていない場合（ステップＳ７１：Ｎｏルート）、第２調停回路１１２は、調停ポートＤにデータが格納されているか判定する（ステップＳ７３）。調停ポートＤにデータが格納されていない場合（ステップＳ７３：Ｎｏルート）、処理は終了する。一方、調停ポートＤにデータが格納されている場合（ステップＳ７３：Ｙｅｓルート）、ステップＳ７９の処理に移行する。
【００８４】
調停ポートＣにデータが格納されている場合（ステップＳ７１：Ｙｅｓルート）、第２調停回路１１２は、調停ポートＤにデータが格納されているか判定する（ステップＳ７５）。調停ポートＤにデータが格納されていない場合（ステップＳ７５：Ｎｏルート）、ステップＳ８１の処理に移行する。一方、調停ポートＤにデータが格納されている場合（ステップＳ７５：Ｙｅｓルート）、第２調停回路１１２は、調停ポートＣが直前に選択されたか判定する（ステップＳ７７）。
【００８５】
調停ポートＣが直前に選択された場合（ステップＳ７７：Ｙｅｓルート）、第２調停回路１１２は、調停ポートＤを選択する（ステップＳ７９）。そして、第２調停回路１１２は、調停ポートＤに格納されているデータを出力する。そして処理は終了する。
【００８６】
一方、調停ポートＣが直前に選択されていない場合（ステップＳ７７：Ｎｏルート）、第２調停回路１１２は、調停ポートＣを選択する（ステップＳ８１）。そして、第２調停回路１１２は、調停ポートＣに格納されているデータを出力する。そして処理は終了する。
【００８７】
次に、図１７及び図１８を用いて、バイパスバッファ制御回路１００がチャネル１４から読出命令を受信した際に実行する処理について説明する。
【００８８】
まず、バイパスモードチェック回路１０３は、チャネル１４からの読出命令を検出し（図１７：ステップＳ９１）、バイパスモードが有効であるか判定する（ステップＳ９３）。
【００８９】
バイパスモードが有効ではない場合（ステップＳ９３：Ｎｏルート）、バイパスモードチェック回路１０３は、バイパスモードが有効ではないことを第２切替部１０６に設定する。すると、第２切替部１０６は読出命令を主記憶１２に出力し、これにより主記憶１２からの読み出しが実行される（ステップＳ９５）。バイパスバッファ制御回路１００は、主記憶１２から読み出したデータを受信し（ステップＳ９７）、受信したデータを調停ポートＢに格納する（ステップＳ９９）。そして処理は端子Ａを介して図１８の説明に移行し終了する。
【００９０】
一方、バイパスモードが有効である場合（ステップＳ９３：Ｙｅｓルート）、バイパスモードチェック回路１０３は、バイパスモードが有効であることを第２切替部１０６に設定する。すると、第２切替部１０６は、読出命令をバイパスリクエストキュー１０８に出力し、バイパスバッファ制御回路１００は、バイパスリクエストキュー１０８の最後尾に読出命令を格納する（ステップＳ１０１）。
【００９１】
バイパスリクエストキュー制御回路１０７は、バイパスリクエストポート１０９が空であるか判定する（ステップＳ１０３）。バイパスリクエストポート１０９が空ではない場合（ステップＳ１０３：Ｎｏルート）、ステップＳ１０３の処理に戻る。
【００９２】
一方、バイパスリクエストポート１０９が空である場合（ステップＳ１０３：Ｙｅｓルート）、バイパスリクエストキュー制御回路１０７は、バイパスリクエストキュー１０８の先頭の読出命令をバイパスリクエストポート１０９に格納する（ステップＳ１０５）。
【００９３】
バイパスバッファ制御回路１００は、調停ポートＡが空であるか判定する（ステップＳ１０７）。調停ポートＡが空ではない場合（ステップＳ１０７：Ｎｏルート）、ステップＳ１０７の処理に戻る。一方、調停ポートＡが空である場合（ステップＳ１０７：Ｙｅｓルート）、処理は端子Ｂを介して図１８のステップＳ１０９に移行する。
【００９４】
図１８の説明に移行し、アドレス比較回路１１０は、バイパスリクエストポート１０９に格納された読出命令に含まれるＭＳアドレスがバイパスバッファ１０１に存在するか判定する（図１８：ステップＳ１０９）。
【００９５】
バイパスリクエストポート１０９に格納された読出命令に含まれるＭＳアドレスがバイパスバッファ１０１に存在しない場合（ステップＳ１１１：Ｎｏルート）、アドレス比較回路１１０は、バイパスリクエストポート１０９に格納された読出命令に含まれるＭＳアドレスがバイパスバッファ１０１に存在しないことをバイパスリクエストキュー制御回路１０７に通知する。これに応じ、バイパスリクエストキュー制御回路１０７は、バイパスリクエストポート１０９に格納された読出命令を取り出し、バイパスリクエストキュー１０８の最後尾に格納する（ステップＳ１１３）。そしてステップＳ１１９の処理に移行する。
【００９６】
一方、バイパスリクエストポート１０９に格納された読出命令に含まれるＭＳアドレスがバイパスバッファ１０１に存在する場合（ステップＳ１１１：Ｙｅｓルート）、アドレス比較回路１１０は、検出されたＭＳアドレスに対応するデータとバイパスリクエストポート１０９に格納されている返信先のチャネルを示す情報とを調停ポートＡに格納する（ステップＳ１１５）。
【００９７】
アドレス比較回路１１０は、検出されたＭＳアドレスに対応するデータの有効フラグをリセット（例えば、無効に設定）し（ステップＳ１１７）、バイパスリクエストキュー制御回路１０７に対してバイパスリクエストポート１０９を空にする通知を行う。これに応じ、バイパスリクエストキュー制御回路１０７はバイパスリクエストポート１０９を空にする（ステップＳ１１９）。
【００９８】
バイパスリクエストキュー制御回路１０７は、バイパスリクエストキュー１０８にリクエストが残っているか判定する（ステップＳ１２１）。リクエストが残っている場合（ステップＳ１２１：Ｙｅｓルート）、次のリクエストについて処理するため、ステップＳ１０３の処理に戻る。一方、バイパスリクエストキュー１０８にリクエストが残っていない場合（ステップＳ１２１：Ｎｏルート）、処理は終了する。
【００９９】
次に、図１９を用いて、バイパスバッファ制御回路１００の第１調停回路１１１が実行する処理について説明する。
【０１００】
まず、第１調停回路１１１は、調停ポートＡにデータが格納されているか判定する（図１９：ステップＳ１３１）。
【０１０１】
調停ポートＡにデータが格納されていない場合（ステップＳ１３１：Ｎｏルート）、第１調停回路１１１は、調停ポートＢにデータが格納されているか判定する（ステップＳ１３３）。調停ポートＢにデータが格納されていない場合（ステップＳ１３３：Ｎｏルート）、処理は終了する。一方、調停ポートＢにデータが格納されている場合（ステップＳ１３３：Ｙｅｓルート）、ステップＳ１３９の処理に移行する。
【０１０２】
調停ポートＡにデータが格納されている場合（ステップＳ１３１：Ｙｅｓルート）、第１調停回路１１１は、調停ポートＢにデータが格納されているか判定する（ステップＳ１３５）。調停ポートＢにデータが格納されていない場合（ステップＳ１３５：Ｎｏルート）、ステップＳ１４１の処理に移行する。一方、調停ポートＢにデータが格納されている場合（ステップＳ１３５：Ｙｅｓルート）、第１調停回路１１１は、調停ポートＡが直前に選択されたか判定する（ステップＳ１３７）。
【０１０３】
調停ポートＡが直前に選択された場合（ステップＳ１３７：Ｙｅｓルート）、第１調停回路１１１は、調停ポートＢを選択する（ステップＳ１３９）。そして、第１調停回路１１１は、調停ポートＢに格納されているデータを出力する。そして処理は終了する。
【０１０４】
一方、調停ポートＡが直前に選択されていない場合（ステップＳ１３７：Ｎｏルート）、第１調停回路１１１は、調停ポートＡを選択する（ステップＳ１４１）。そして、第１調停回路１１１は、調停ポートＡに格納されているデータを出力する。そして処理は終了する。
【０１０５】
図２０及び図２１を用いて、データの転送時間の短縮について説明する。図２０は、本実施の形態の転送方法を使用した場合のシーケンス図であり、図２１は、公知の転送方法を使用した場合のシーケンス図である。図２０及び図２１において、縦軸は時間（単位は周期）を表す。「ＭＥＭ」は主記憶を表し、「ＣＨ」はチャネルを表す。円の図形は命令シーケンスの始動を表し、三角形の図形は転送されるデータを表し、破線は読出命令についてのシーケンスを表し、実線は書込命令についてのシーケンスを表す。図２０における括弧付きの番号は図５Ａ乃至図８に示した番号に対応する。
【０１０６】
図２０に示すように、ＣＰＵ１１は、まずＳＳＵ３からの読出命令をＳＳＭ１３に発行する（１）。ＳＳＭ１３は、ＳＳＵ３からの読出命令の完了報告をＣＰＵ１１に発行する（４）と共に、ＳＳＵ３からの読出命令をＳＳＵ３に対して発行する（６）。ＳＳＭ１３は、ＳＳＵ３から読み出されたデータを受信する（７）。そして、ＳＳＭ１３は、ＳＳＵ３から読み出されたデータの書込命令を、バイパスモードを有効にしてＭＣＵ１０に対して発行する（８）。ＭＣＵ１０はＳＳＭ１３に書き込み完了報告を発行する（１２）。最終的に読出命令についてのシーケンスは５サイクルで終了する。
【０１０７】
一方、書込命令についてのシーケンスは、ＣＰＵ１１が完了報告を受信した時点（すなわち、２サイクルが終了した時点）で開始する。まず、ＣＰＵ１１は、Ｉ／Ｏ５ａに対する書込命令を、バイパスモードを有効にしてチャネル１４に発行する（５）。チャネル１４は、主記憶１２からの読出命令をバイパスモードを有効にしてＭＣＵ１０に発行する（１６）。ＭＣＵ１０は、バイパスバッファ１０１に格納されたデータをチャネル１４に送信する（２１）。チャネル１４は、ＭＣＵ１０から受信したデータをＩ／Ｏ５ａに書き込む（２３）。チャネル１４は、Ｉ／Ｏ５ａから書き込みの完了報告を受け取り（２４）、Ｉ／Ｏ５ａに対する書き込みの完了報告をＣＰＵ１１に発行する（２５）。
【０１０８】
一方で、本実施の形態の方法を使用しない場合には以下のようになる。すなわち、図２１に示すように、まずＣＰＵ１１が、ＳＳＵ３からの読出命令をＳＳＭ１３に発行する（ａ）。ＳＳＭ１３は、ＳＳＵ３からの読出命令をＳＳＵ３に対して発行する（ｂ）。ＳＳＭ１３は、ＳＳＵ３から読み出されたデータを受信し（ｃ）、受信したデータを主記憶１２に書き込むための書込命令をＭＣＵ１０に発行する（ｄ）。ＭＣＵ１０は、書込命令に従いデータを主記憶１２へ書き込む（ｅ）。ＭＣＵ１０は、主記憶１２にデータが書き込まれたことを確認すると（ｆ）、ＳＳＭ１３に書き込みの完了報告を発行する（ｇ）。ＳＳＭ１３は、ＳＳＵ３の読み出しの完了報告をＣＰＵ１１に発行する（ｈ）。このように、読出命令についてのシーケンスは８サイクルで完了する。
【０１０９】
読出命令についてのシーケンスが完了すると、ＣＰＵ１１は、Ｉ／Ｏ５ａに対する書込命令をチャネル１４に発行する（ｉ）。チャネル１４は、ＳＳＵ３から読み出されたデータを取得するため、主記憶１２からの読出命令をＭＣＵ１０に発行する（ｊ）。ＭＣＵ１０は、主記憶１２からデータを読み出し（ｋ）、読み出したデータをチャネル１４に送信する（ｌ）。チャネル１４は、受信したデータをＩ／Ｏ５ａに書き込み（ｍ）、書き込みの完了報告をＩ／Ｏ５ａから受け取る（ｎ）。チャネル１４は、書き込みの完了報告をＣＰＵ１１に対して発行する（ｏ）。このように、書込命令についてのシーケンスは１６サイクルで完了する。従って、本実施の形態の方法を使用すれば転送が完了するまでの時間を１／２程度に減らすことができるようになる。
【０１１０】
以上本発明の一実施の形態を説明したが、本発明はこれに限定されるものではない。例えば、上で説明した本体装置１ａの構成は実際のハードウエアモジュール構成に一致しない場合もある。
【０１１１】
また、上で説明したデータ保持構成は一例であって、上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【０１１２】
また、転送元のデータが格納されるストレージデバイスは共用されていなくてもよい。その場合、本体装置の台数が１であってもよい。
【０１１３】
また、Ｉ／Ｏ５ａ又はＩ／Ｏ５ｂからＳＳＵ３へデータを転送する場合にも本実施の形態を応用することで対処可能である。
【０１１４】
以上述べた本発明の実施の形態をまとめると、以下のようになる。
【０１１５】
本実施の形態の第１の態様に係る情報処理装置は、（Ａ）プロセッサと、（Ｂ）メインメモリと、（Ｃ）第１制御回路と、（Ｄ）第２制御回路と、（Ｅ）第３制御回路とを有する。そして、第１制御回路は、（ｃ１）プロセッサから受信した、情報処理装置に接続された第１記憶装置からデータを読み出すための第１読出命令が、所定の情報を含むか判定する第１判定部と、（ｃ２）第１読出命令が所定の情報を含むと第１判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前にプロセッサに送信すると共に、第１記憶装置から読み出したデータと所定の情報とを含む、読み出したデータをメインメモリに書き込むための第１書込命令を第３制御回路に送信する第１送信部とを有する。そして、第２制御回路は、（ｄ１）プロセッサから受信した、情報処理装置に接続された第２記憶装置にデータを書き込むための第２書込命令が、所定の情報を含むか判定する第２判定部と、（ｄ２）第２書込命令が所定の情報を含むと第２判定部により判定された場合、所定の情報を含む、データをメインメモリから読み出すための第２読出命令を第３制御回路に送信する第２送信部とを有する。そして、第３制御回路は、（ｅ１）第１制御回路から受信した第１書込命令が所定の情報を含む場合、第１書込命令を、第３制御回路の第１記憶領域に格納する第１格納処理部と、（ｅ２）第２制御回路から受信した第２読出命令が所定の情報を含む場合、第２読出命令を、第３制御回路の第２記憶領域に格納する第２格納処理部と、（ｅ３）第１記憶領域に格納された第１書込命令に含まれるメインメモリのアドレスと、第２記憶領域に格納された第２読出命令に含まれるメインメモリのアドレスとが一致する場合、第１記憶領域に格納されたデータを読み出し、データを第２制御回路に送信する第３送信部とを有する。
【０１１６】
このようにすれば、読み出しと書き込みとを並行して行えるようになるので、第１の記憶装置から第２の記憶装置にデータを転送するのに要する時間を短縮できるようになる。また、プロセッサが実行する既存の命令フローを維持することができる。
【０１１７】
また、第２制御回路は、（ｄ３）第３制御回路からデータを受信し、受信したデータを第２記憶装置に書き込む書込部をさらに有してもよい。これによりデータの転送を完了することができる。
【０１１８】
また、第１格納処理部は、（ｅ１１）第１制御回路から受信した第１書込命令が所定の情報を含まない場合、受信した第１書込命令に含まれるデータをメインメモリに格納し、第２格納処理部は、（ｅ２１）第２制御回路から受信した第２読出命令が所定の情報を含まない場合、第２読出命令に従ってデータをメインメモリから読み出し、第３送信部は、（ｅ３１）メインメモリから読み出したデータを第２制御回路に送信してもよい。メインメモリを使用した通常の転送方法にも対応することができるようになる。
【０１１９】
また、第３送信部は、（ｅ３２）第１記憶領域に格納されたデータと、メインメモリから読み出したデータとの両方が存在する場合、いずれが前回送信されたかに基づき、いずれを次に送信するか決定してもよい。いずれか一方のみについて送信が行われることを抑制できるようになる。
【０１２０】
本実施の形態の第２の態様に係る情報処理システムは、（Ｆ）情報処理装置と、（Ｇ）情報処理装置に接続された第１記憶装置と、（Ｈ）情報処理装置に接続された第２記憶装置とを有する。そして、情報処理装置は、（ｆ１）プロセッサと、（ｆ２）メインメモリと、（ｆ３）第１制御回路と、（ｆ４）第２制御回路と、（ｆ５）第３制御回路とを有する。そして、第１制御回路は、（ｆ３１）プロセッサから受信した、第１記憶装置からデータを読み出すための第１読出命令が、所定の情報を含むか判定する第１判定部と、（ｆ３２）第１読出命令が所定の情報を含むと第１判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前にプロセッサに送信すると共に、読み出されたデータと所定の情報とを含む、読み出されたデータをメインメモリに書き込むための第１書込命令を第３制御回路に送信する第１送信部とを有する。そして、第２制御回路は、（ｆ４１）プロセッサから受信した、第２記憶装置にデータを書き込むための第２書込命令が、所定の情報を含むか判定する第２判定部と、（ｆ４２）第２書込命令が所定の情報を含むと第２判定部により判定された場合、所定の情報を含む、データをメインメモリから読み出すための第２読出命令を第３制御回路に送信する第２送信部とを有する。そして、第３制御回路は、（ｆ５１）第１制御回路から受信した第１書込命令が所定の情報を含む場合、第１書込命令を、第３制御回路の第１記憶領域に格納する第１格納処理部と、（ｆ５２）第２制御回路から受信した第２読出命令が所定の情報を含む場合、第２読出命令を、第３制御回路の第２記憶領域に格納する第２格納処理部と、（ｆ５３）第１記憶領域に格納された第１書込命令に含まれるメインメモリのアドレスと、第２記憶領域に格納された第２読出命令に含まれるメインメモリのアドレスとが一致する場合、データを第２制御回路に送信する第３送信部とを有する。
【０１２１】
本実施の形態の第３の態様に係る、情報処理装置の制御回路は、（Ｉ）プロセッサから受信した、情報処理装置に接続された第１記憶装置からデータを読み出すための読出命令が、所定の情報を含むか判定する判定部と、（Ｊ）読出命令が所定の情報を含むと判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前にプロセッサに送信する送信部とを有する。
【０１２２】
本実施の形態の第４の態様に係る制御回路は、（Ｋ）データを含み且つメインメモリにデータを書き込むための書込命令が、所定の情報をさらに含む場合、書込命令を、制御回路の第１記憶領域に格納する第１格納処理部と、メインメモリからデータを読み出すための読出命令が所定の情報を含む場合、読出命令を、制御回路の第２記憶領域に格納する第２格納処理部と、（Ｌ）第１記憶領域に格納された書込命令に含まれるメインメモリのアドレスと、第２記憶領域に格納された読出命令に含まれるメインメモリのアドレスとが一致する場合、第１記憶領域に格納されたデータを読み出し、データを送信する送信部とを有する。
【０１２３】
なお、上記方法による処理をプロセッサに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【０１２４】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１２５】
（付記１）
プロセッサと、
メインメモリと、
第１制御回路と、
第２制御回路と、
第３制御回路と、
を有する情報処理装置であって、
前記第１制御回路は、
前記プロセッサから受信した、前記情報処理装置に接続された第１記憶装置からデータを読み出すための第１読出命令が、所定の情報を含むか判定する第１判定部と、
前記第１読出命令が前記所定の情報を含むと前記第１判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前に前記プロセッサに送信すると共に、前記第１記憶装置から読み出した前記データと前記所定の情報とを含む、読み出した前記データを前記メインメモリに書き込むための第１書込命令を前記第３制御回路に送信する第１送信部と
を有し、
前記第２制御回路は、
前記プロセッサから受信した、前記情報処理装置に接続された第２記憶装置に前記データを書き込むための第２書込命令が、前記所定の情報を含むか判定する第２判定部と、
前記第２書込命令が前記所定の情報を含むと前記第２判定部により判定された場合、前記所定の情報を含む、前記データを前記メインメモリから読み出すための第２読出命令を前記第３制御回路に送信する第２送信部と、
を有し、
前記第３制御回路は、
前記第１制御回路から受信した前記第１書込命令が前記所定の情報を含む場合、前記第１書込命令を、前記第３制御回路の第１記憶領域に格納する第１格納処理部と、
前記第２制御回路から受信した前記第２読出命令が前記所定の情報を含む場合、前記第２読出命令を、前記第３制御回路の第２記憶領域に格納する第２格納処理部と、
前記第１記憶領域に格納された前記第１書込命令に含まれる前記メインメモリのアドレスと、前記第２記憶領域に格納された前記第２読出命令に含まれる前記メインメモリのアドレスとが一致する場合、前記第１記憶領域に格納された前記データを読み出し、前記データを前記第２制御回路に送信する第３送信部と、
を有する情報処理装置。
【０１２６】
（付記２）
前記第２制御回路は、
前記第３制御回路から前記データを受信し、受信した前記データを前記第２記憶装置に書き込む書込部
をさらに有する付記１記載の情報処理装置。
【０１２７】
（付記３）
前記第１格納処理部は、
前記第１制御回路から受信した前記第１書込命令が前記所定の情報を含まない場合、受信した前記第１書込命令に含まれる前記データを前記メインメモリに格納し、
前記第２格納処理部は、
前記第２制御回路から受信した前記第２読出命令が前記所定の情報を含まない場合、前記第２読出命令に従って前記データを前記メインメモリから読み出し、
前記第３送信部は、
前記メインメモリから読み出した前記データを前記第２制御回路に送信する、
付記１又は２記載の情報処理装置。
【０１２８】
（付記４）
前記第３送信部は、
前記第１記憶領域に格納された前記データと、前記メインメモリから読み出した前記データとの両方が存在する場合、いずれが前回送信されたかに基づき、いずれを次に送信するか決定する、
付記３記載の情報処理装置。
【０１２９】
（付記５）
情報処理装置と、
前記情報処理装置に接続された第１記憶装置と、
前記情報処理装置に接続された第２記憶装置と、
を有する情報処理システムであって、
前記情報処理装置は、
プロセッサと、
メインメモリと、
第１制御回路と、
第２制御回路と、
第３制御回路と、
を有し、
前記第１制御回路は、
前記プロセッサから受信した、前記第１記憶装置からデータを読み出すための第１読出命令が、所定の情報を含むか判定する第１判定部と、
前記第１読出命令が前記所定の情報を含むと前記第１判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前に前記プロセッサに送信すると共に、読み出された前記データと前記所定の情報とを含む、読み出された前記データを前記メインメモリに書き込むための第１書込命令を前記第３制御回路に送信する第１送信部と
を有し、
前記第２制御回路は、
前記プロセッサから受信した、前記第２記憶装置に前記データを書き込むための第２書込命令が、前記所定の情報を含むか判定する第２判定部と、
前記第２書込命令が前記所定の情報を含むと前記第２判定部により判定された場合、前記所定の情報を含む、前記データを前記メインメモリから読み出すための第２読出命令を前記第３制御回路に送信する第２送信部と、
を有し、
前記第３制御回路は、
前記第１制御回路から受信した前記第１書込命令が前記所定の情報を含む場合、前記第１書込命令を、前記第３制御回路の第１記憶領域に格納する第１格納処理部と、
前記第２制御回路から受信した前記第２読出命令が前記所定の情報を含む場合、前記第２読出命令を、前記第３制御回路の第２記憶領域に格納する第２格納処理部と、
前記第１記憶領域に格納された前記第１書込命令に含まれる前記メインメモリのアドレスと、前記第２記憶領域に格納された前記第２読出命令に含まれる前記メインメモリのアドレスとが一致する場合、前記データを前記第２制御回路に送信する第３送信部と、
を有する情報処理システム。
【０１３０】
（付記６）
プロセッサと制御回路とを有する情報処理装置の前記制御回路であって、
前記プロセッサから受信した、前記情報処理装置に接続された第１記憶装置からデータを読み出すための読出命令が、所定の情報を含むか判定する判定部と、
前記読出命令が前記所定の情報を含むと前記判定部により判定された場合、読み出しが完了したことを示す完了報告を、当該読み出しが完了する前に前記プロセッサに送信する送信部と、
を有する制御回路。
【０１３１】
（付記７）
プロセッサとメインメモリと制御回路とを有する情報処理装置の前記制御回路であって、
データを含み且つ前記メインメモリに前記データを書き込むための書込命令が、所定の情報をさらに含む場合、前記書込命令を、前記制御回路の第１記憶領域に格納する第１格納処理部と、
前記メインメモリから前記データを読み出すための読出命令が前記所定の情報を含む場合、前記読出命令を、前記制御回路の第２記憶領域に格納する第２格納処理部と、
前記第１記憶領域に格納された前記書込命令に含まれる前記メインメモリのアドレスと、前記第２記憶領域に格納された前記読出命令に含まれる前記メインメモリのアドレスとが一致する場合、前記第１記憶領域に格納された前記データを読み出し、前記データを送信する送信部と、
を有する制御回路。
【符号の説明】
【０１３２】
１ａ，１ｂ  本体装置    ３  ＳＳＵ
５ａ，５ｂ  Ｉ／Ｏ    １０  ＭＣＵ
１１  ＣＰＵ    １２  主記憶
１３  ＳＳＭ    １４  チャネル
１３ｐ  パケット制御回路    １３ｔ  データ転送回路
１３ｍ  メモリ    １３０  バイパス制御回路
１３０１  バイパスモードチェック部    １３０２  先出フラグ
１３１  入力パケット解析部    １３２  書き込み制御回路
１３３  完了報告制御回路    １３４  出力パケット生成部
１４ｐ  パケット制御回路    １４ｔ  データ転送回路
１４ｍ  メモリ    １４ｅ  プログラム実行回路
１４０  バイパス制御回路
１４０１  バイパスモードチェック部    １４０２  バイパス実行フラグ
１４１  入力パケット解析部    １４２  読み出し制御回路
１４３  完了報告制御回路    １４４  出力パケット生成部
１００  バイパスバッファ制御回路
１０１  バイパスバッファ    １０２，１０３  バイパスモードチェック回路
１０４  データチェック回路    １０５  第１切替部
１０６  第２切替部    １０７  バイパスリクエストキュー制御回路
１０８  バイパスリクエストキュー    １０９  バイパスリクエストポート
１１０  アドレス比較回路    １１１  第１調停回路
１１２  第２調停回路    １１３  完了報告制御回路
１５０ａ，１５０ｂ，１５０ｃ，１５０ｄ，１５０ｅ，１５０ｆ  パケット制御回路
【図１】
0006743482.tif 000002
【図２】
0006743482.tif 000003
【図３】
0006743482.tif 000004
【図４】
0006743482.tif 000005
【図５Ａ】
0006743482.tif 000006
【図５Ｂ】
0006743482.tif 000007
【図６】
0006743482.tif 000008
【図７】
0006743482.tif 000009
【図８】
0006743482.tif 000010
【図９】
0006743482.tif 000011
【図１０】
0006743482.tif 000012
【図１１】
0006743482.tif 000013
【図１２】
0006743482.tif 000014
【図１３】
0006743482.tif 000015
【図１４】
0006743482.tif 000016
【図１５】
0006743482.tif 000017
【図１６】
0006743482.tif 000018
【図１７】
0006743482.tif 000019
【図１８】
0006743482.tif 000020
【図１９】
0006743482.tif 000021
【図２０】
0006743482.tif 000022
【図２１】
0006743482.tif 000023