(57)【特許請求の範囲】
【請求項１】
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、前記アクセス命令に識別子を付与することにより、第１のトランザクションを生成し、該識別子と、該識別子に対応した該第１のトランザクションとを記述したリストを作成する一方、転送指示命令だと判別した場合には、第２のトランザクションを生成する第１の制御部と、
前記第２のトランザクションが生成された場合に、前記第２のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第３のトランザクションを生成する第２の制御部と、
前記第１のトランザクションと前記第３のトランザクションとが生成された場合に、該生成された第１及び第３のトランザクションをトランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信する第３の制御部と、
を備えることを特徴とするＩ／Ｏ制御装置。
【請求項２】
前記第１の制御部は、
前記命令が前記アクセス命令だと判別した場合には、該アクセス命令を基に前記第１のトランザクションを生成する第１のサブ制御部と、
前記命令が前記転送指示命令だと判別した場合には、該転送指示命令を基に前記第２のトランザクションを生成する第２のサブ制御部と、
を含むことを特徴とした請求項１に記載のＩ／Ｏ制御装置。
【請求項３】
前記第１のサブ制御部は、
前記アクセス命令を格納する第１のバッファと、
前記第１のバッファから読み出した前記アクセス命令に前記識別子を付与することにより、前記第１のトランザクションを生成し、前記リストを含むことを特徴した請求項２に記載のＩ／Ｏ制御装置。
【請求項４】
前記第２のサブ制御部は、
前記転送指示命令を基に前記主記憶装置にアクセスするアドレスとデータサイズとを指定したトランザクションを生成するＤＭＡコントローラと、
前記ＤＭＡコントローラによって生成された該トランザクションに識別子を付与することにより、前記第２のトランザクションを生成し、該識別子と、該識別子に対応した該第２のトランザクションとを記述したリストを含むことを特徴した請求項２または請求項３に記載のＩ／Ｏ制御装置。
【請求項５】
前記第２の制御部は、
前記第２のトランザクションを基にデータ転送に適したアドレスとデータサイズとに分割した前記第３のトランザクションを生成する第３のサブ制御部と、
前記第３のトランザクションに対するリプライトランザクションを格納する第４のサブ制御部とを備え、
前記第３のサブ制御部は、生成した前記第３のトランザクションをトランザクション情報として前記第４のサブ制御部に出力し、
前記第４のサブ制御部は、格納した前記リプライトランザクションを前記トランザクション情報を基に合成することを特徴とする請求項１に記載のＩ／Ｏ制御装置。
【請求項６】
前記第３の制御部は、
前記第１のトランザクションを格納する第２のバッファと、
前記第３のトランザクションを格納する第３のバッファと、
前記第２のバッファから読み出した前記第１のトランザクションと前記第３のバッファから読み出した前記第３のトランザクションとを送信するアクセス制御部と、
前記第１のトランザクションと前記第３のトランザクションとを格納し、格納したときの順序と同じ順序で前記メモリコントローラに送信する送信バッファと、
前記メモリコントローラから送信されたリプライトランザクションを格納し、格納したときの順序と同じ順序で前記アクセス制御部に送信する受信バッファと、
を含むことを特徴とする請求項１に記載のＩ／Ｏ制御装置。
【請求項７】
前記アクセス制御部は、
前記第２のバッファから読み出した前記第１のトランザクションを前記アクセス命令の種別に基づいて解析し、解析した結果、前記主記憶装置に対するアクセスを抑止する命令であった場合には、フラグを設定すると共に、その命令に対するリプライトランザクションを受信するまで、前記第２のバッファから後続の前記第１のトランザクションの読出しを抑止することを特徴とする請求項６に記載のＩ／Ｏ制御装置。
【請求項８】
前記アクセス制御部は、
前記フラグを設定した場合に、その前記フラグを設定した前記第１のトランザクションに対するリプライトランザクションを取得するのに応じて、前記アクセス制御部に対して設定されていた前記フラグを解除することを特徴とする請求項７に記載のＩ／Ｏ制御装置。
【請求項９】
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、前記アクセス命令に識別子を付与することにより、第１のトランザクションを生成し、該識別子と、該識別子に対応した該第１のトランザクションとを記述したリストを作成する一方で、転送指示命令だと判別した場合には、第２のトランザクションを生成し、前記第２のトランザクションが生成された場合に、前記第２のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第３のトランザクションを生成し、前記第１のトランザクションと前記第３のトランザクションとが生成された場合に、該生成された第１及び第３のトランザクションをトランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信することを特徴とするＩ／Ｏ制御方法。
【請求項１０】
電子機器上で動作するＩ／Ｏ制御のためのコンピュータ・プログラムであって、そのコンピュータ・プログラムにより、
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、前記アクセス命令に識別子を付与することにより、第１のトランザクションを生成し、該識別子と、該識別子に対応した該第１のトランザクションとを記述したリストを作成する一方で、転送指示命令だと判別した場合には、第２のトランザクションを生成し、前記第２のトランザクションが生成された場合に、前記第２のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第３のトランザクションを生成し、前記第１のトランザクションと前記第３のトランザクションとが生成された場合に、該生成された第１及び第３のトランザクションをトランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信する機能をコンピュータに実現させることを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主記憶装置に対する処理をＩ／Ｏ装置等によって制御する技術分野に関する。
【背景技術】
【０００２】
近年、サーバやパーソナルコンピュータ等の電子機器は、高性能な演算処理装置や主記憶装置を搭載している。そのため、サーバやパーソナルコンピュータ等の電子機器は、作業等を処理する処理能力が飛躍的に向上している。これは、演算処理装置や主記憶装置が、高速で処理を実行するためである。また、サーバやパーソナルコンピュータ等の電子機器は、演算処理装置や主記憶装置が作業等を処理するためのデータをＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）装置に格納する。演算処理装置や主記憶装置が高速で処理を実行するのに対して、Ｉ／Ｏ装置の処理速度は、演算処理装置や主記憶装置と比較した場合、低速である。そのため、演算処理装置や主記憶装置の処理能力とＩ／Ｏ装置の処理能力との間には、ギャップが発生する。これらから、Ｉ／Ｏ装置の処理能力は、サーバやパーソナルコンピュータ等の性能を決定する大きな要因となっている。
【０００３】
また、一般的に、大規模なコンピュータシステムでは、演算処理装置がＩ／Ｏ装置の処理を制御するのではなく、Ｉ／Ｏ装置がＩ／Ｏデバイスと主記憶装置とのデータ転送処理を担う構造となっている。大規模なコンピュータシステムにおいて、Ｉ／Ｏ装置の処理時間は、主記憶装置に対するアクセス処理が占める割合が大きい。このため、大規模なコンピュータシステムは、Ｉ／Ｏ装置のＩ／Ｏ処理時間を短くすることが不可欠である。
【０００４】
このような背景から、サーバやパーソナルコンピュータ等の電子機器は、Ｉ／Ｏ装置の処理性能を向上させる必要がある。例えば、特許文献１は、システムからの主記憶装置に対する処理要求に対し順位番号を付与する。主記憶アクセス制御装置は、付与した順位番号に従って処理要求を実行する優先順位制御方式について開示する。
【０００５】
特許文献１に記載された優先順位制御方式は、複数のシステムから主記憶装置に対する処理要求を、処理待受けのためにシステム夫々に対応して設けたバッファメモリに格納する。リクエスト番号用カウンタは、バッファメモリを格納する際、バッファメモリ夫々が受け付けた処理要求に受付時点の順位番号を付与する。主記憶アクセス制御装置は、付与した順位番号順にバッファメモリに格納された処理要求を読み出すと共に、読み出した処理を実行する。また、主記憶アクセス制御装置は、読み出し出力夫々が同一順位番号である場合、システム処理の順序に従って処理を実行する。
【０００６】
このように、特許文献１は、システムから主記憶装置に対する処理要求を受付けた順序で実行すると共に、同一順位番号の時は、システム処理が定める順序に従って処理を実行する技術を開示する。
【０００７】
また、特許文献２は、入出力装置からの主記憶装置または通信バッファに対するアクセス要求にアクセス順序を示すアクセス要求識別子を付加し、付加した順序で入出力装置に送出する計算機システムについて開示する。
【０００８】
特許文献２に記載された計算機システムは、入出力装置からの主記憶装置ＭＳまたは通信バッファＣＢＳに対するアクセス要求に対して、アクセス要求の制御情報にアクセス順序を示すアクセス要求識別子を付加する。主記憶装置ＭＳまたは通信バッファＣＢＳは、入出力装置からのアクセス要求に対してデータを出力し、出力したデータをデータ・スタック群に格納する。データ・スタック群に格納したデータは、アクセス要求識別子で決まる順序で入出力装置にデータを送出する。また、通信バッファＣＢＳにデータを書き込む際、ＣＢＳ格納検出回路は、通信バッファＣＢＳに格納するタイミングを検出する。ＣＢＳ格納検出回路は、検出した通信バッファＣＢＳに格納するタイミングを優先順位決定回路に報告する。優先順位決定回路は、ＣＢＳ格納検出回路からの報告に対し、一定の間、通信バッファＣＢＳへのアクセスの優先順位決定（選択）を停止する。
【０００９】
このように、特許文献２は、入出力装置からの主記憶装置ＭＳまたは通信バッファＣＢＳに対するアクセス要求に対して、アクセス要求識別子を付与する。さらに、主記憶装置ＭＳまたは通信バッファＣＢＳは、アクセス要求に対して、データをデータ・スタック群に格納する。このため、主記憶装置ＭＳと通信バッファＣＢＳとのアクセス速度が異なる記憶装置を有する計算機システムは、アクセス速度が異なることによりデータ転送の完了した順序が逆転した場合であっても、アクセス要求識別子を基に、決められた順序でデータ・スタック群に格納されたデータを入出力装置に送出する。このため、優先順位決定回路は、主記憶装置ＭＳに対するアクセスが終了することを待つことなく、後続の通信バッファＣＢＳへのアクセスを開始する技術を開示する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開昭６０−０７４０７４号公報
【特許文献２】特開平０６−１８７２３１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかしながら、上述した特許文献１および特許文献２では、入出力装置から要求された順序にて、データの送受信をすることが記載されているに留まり、そのデータをどのように効率よく送受信するかについては、述べられていない。
【００１２】
さらに、特許文献２では、通信バッファＣＢＳに格納するタイミングの間、他のアクセスを停止する。このため、特許文献２では、他のアクセス命令を全て停止してしまうので、主記憶装置に対する複数のアクセス命令が発行された場合、効率よくデータ送受信をすることが考慮されておらず、複数のアクセス命令の実行待ちが発生する。そのため、特許文献２に開示された技術によっては、依然としてＩ／Ｏ処理全体の遅延は、解決することが困難である。
【００１３】
例えば、Ｉ／Ｏ装置が主記憶装置に対するデータ転送方法は、Ｉ／Ｏプロセッサ等がＩ／Ｏ装置と主記憶装置とのデータ転送を管理するＰＩＯ（Pｒｏｇｒａｍｍｅｄ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ）方式と、Ｉ／Ｏプロセッサ等が転送要求を行い、その転送要求を受けたＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラが実際の転送命令を発行するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）方式による方法がある。
【００１４】
ＰＩＯ方式は、プロセッサ等により主記憶装置に対して、ロード命令、ストア命令、ＳＹＮＣ（ｓｙｎｃｈｒｏｎｉｚａｔｉｏｎ）命令（順序制御命令）、ＦＬＵＳＨ命令（同期制御命令）等の複数の命令を実行する。そのため、ＰＩＯ方式は、データ量が少ない場合のデータ送受信に向いている。
【００１５】
一方、ＤＭＡ方式は、プロセッサ等によりデータ転送要求をＤＭＡコントローラに発行する。データ転送要求を受けたＤＭＡコントローラは、主記憶装置に対して、ロード命令、ストア命令を実行する。Ｉ／Ｏ装置は、主記憶装置に対してのデータ転送処理をＤＭＡコントローラに任せることができる。そのため、ＤＭＡ方式は、データ量が多い場合のデータ送受信に向いている。
【００１６】
このように、Ｉ／Ｏ装置は、これら、ＰＩＯ方式、ＤＭＡ方式を組み合わせることで、全体のＩ／Ｏ処理時間を短くしている。
【００１７】
しかしながら、ＰＩＯ方式において、ＳＹＮＣ命令およびＦＬＵＳＨ命令等の主記憶装置に対するアクセスを停止する必要のある命令が発行された場合、主記憶装置のアクセス制御を担うメモリコントローラは、主記憶装置に対して発行するＳＹＮＣ命令およびＦＬＵＳＨ命令の実行が終了するまで、後続する他のアクセス命令を抑止するように動作する。
【００１８】
以下の説明において、Ｉ／ＯプロセッサやＩ／Ｏプロセッサからアクセス制御されることにより、Ｉ／Ｏ装置を制御するソフトウェア（Ｆｉｒｍｗａｒｅ；以降、「ＦＷ」と称する）等を総称してリクエストリソースと称する（以下の実施形態においても同様）。
【００１９】
より具体的に、Ｉ／ＯプロセッサがＳＹＮＣ命令またはＦＬＵＳＨ命令を発行した際、メモリコントローラは、ＳＹＮＣ命令またはＦＬＵＳＨ命令が完了するまで、後続の命令を実行することを抑止する。
【００２０】
さらに、メモリコントローラは、同じリクエストリソースが発行したアクセス命令だけでなく、他のリクエストリソースが発行した命令も同様に抑止してしまうという課題がある。そのため、Ｉ／Ｏ処理全体における遅延の原因となっている。
【００２１】
本発明の主たる目的は、上述した課題であるＩ／Ｏ制御装置によって主記憶装置に対するアクセス命令を制御することにより、Ｉ／Ｏ装置全体の処理遅延を改善するＩ／Ｏ制御装置等を提供することにある。
【課題を解決するための手段】
【００２２】
上記の課題を達成すべく、本発明に係るＩ／Ｏ制御装置は、以下の構成を備えることを特徴とする。
【００２３】
即ち、本発明に係るＩ／Ｏ制御装置は、
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、第１のトランザクションを生成する一方、転送指示命令だと判別した場合には、第２のトランザクションを生成する第１の制御部と、前記第２のトランザクションが生成された場合に、前記第２のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第３のトランザクションを生成する第２の制御部と、前記第１のトランザクションと前記第３のトランザクションとが生成された場合に、該生成された第１及び第３のトランザクションをトランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信する第３の制御部と、を備えることを特徴とする。
【００２４】
また、同目的を達成すべく、本発明に係る記憶デバイスにおける異常分析方法は、以下の構成を備えることを特徴とする。
【００２５】
即ち、本発明に係るＩ／Ｏ装置の制御方法は、
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、第１のトランザクションを生成する一方で、転送指示命令だと判別した場合には、第２のトランザクションを生成し、前記第２のトランザクションが生成された場合に、前記第２のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第３のトランザクションを生成し、前記第１のトランザクションと前記第３のトランザクションとが生成された場合に、該生成された第１及び第３のトランザクションをトランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信することを特徴とする。
【００２６】
尚、同目的は、上記の各構成を有するＩ／Ｏ制御装置およびＩ／Ｏ装置の制御方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００２７】
本発明によれば、Ｉ／Ｏ制御装置によって主記憶装置に対するアクセス命令を制御することにより、Ｉ／Ｏ処理全体の遅延を改善することができる。
【図面の簡単な説明】
【００２８】
【図１】本発明の第１の実施形態におけるＩ／Ｏ装置の構成を示すブロック図である。
【図２】本発明の第１の実施形態における第１のサブ制御部の構成を示すブロック図である。
【図３】本発明の第１の実施形態における第２のサブ制御部の構成を示すブロック図である。
【図４】本発明の第１の実施形態における第３の制御部の構成を示すブロック図である。
【図５】本発明の第２の実施形態におけるＩ／Ｏ装置の構成を示すブロック図である。
【図６】本発明の第２の実施形態におけるＦＷ制御部の構成を示すブロック図である。
【図７】本発明の第２の実施形態におけるＤＭＡ制御部の構成を示すブロック図である。
【図８】本発明の第２の実施形態におけるＴＸＮ制御部の構成を示すブロック図である。
【図９】本発明の第２の実施形態におけるＩ／Ｏ制御装置が行う送信処理を示すフローチャート図である。
【図１０】本発明の第２の実施形態におけるＩ／Ｏ制御装置が行う受信処理を示すフローチャート図である。
【図１１】本発明の第２の実施形態の変形例におけるＩ／Ｏ装置の構成を示すブロック図である。
【図１２】本発明の第３の実施形態におけるＩ／Ｏ装置の構成を示すブロック図である。
【図１３】本発明の第３の実施形態におけるＦＷ制御部の構成を示すブロック図である。
【図１４】本発明の第３の実施形態におけるＤＭＡ制御部の構成を示すブロック図である。
【図１５】本発明の第３の実施形態におけるＴＸＮ制御部の構成を示すブロック図である。
【図１６】本発明の第３の実施形態におけるアクセス命令の処理を示すシーケンス図である。
【図１７】本発明の第３の実施形態における複数のアクセス命令の処理を示すシーケンス図である。
【図１８】本発明を適用可能なコンピュータシステムの構成を示す概略ブロック図である。
【発明を実施するための形態】
【００２９】
以下、本発明の実施形態について図面を参照して詳細に説明する。
なお、実施形態では、本発明をコンピュータシステムに適用した場合を例として説明する。
【００３０】
図１８は、本発明を適用可能なコンピュータシステムの構成を示す概略ブロック図である。
【００３１】
図１８において、係るコンピュータシステムは、Ｉ／Ｏ装置１、メモリコントローラ２、主記憶装置３、演算処理装置４、ディスク装置６、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）７、テープ装置８、ホストコンピュータ９を有する。
【００３２】
Ｉ／Ｏ装置１は、複数のチャンネル（Ｃｈａｎｎｅｌ、ＣＨ）スロット５を有する。チャンネルスロット５は、チャンネルカードを搭載することにより、ディスク装置６、ＬＡＮ７、テープ装置８、ホストコンピュータ９等を実装する。
【００３３】
メモリコントローラ２は、コンピュータシステム上で主記憶装置３に記憶されたデータのロードおよびストア等を実行する際、主記憶装置３を制御する制御装置である。
【００３４】
主記憶装置３は、演算処理装置４がメモリコントローラ２を介してアクセスすることができる記憶装置である。
【００３５】
演算処理装置４は、コンピュータシステムの全体の動作を司るものである。
以下、上述した構成により実行される処理の詳細について説明する。
【００３６】
＜第１の実施形態＞
図１は、本発明の第１の実施形態におけるＩ／Ｏ装置１の構成を示すブロック図である。
【００３７】
図１において、Ｉ／Ｏ装置１は、大別して、Ｉ／Ｏ制御装置１０を有する。
【００３８】
より具体的に、Ｉ／Ｏ制御装置１０は、第１の制御部１２、第２の制御部１３、第３の制御部１４を有する。
【００３９】
より具体的に、第１の制御部１２は、第１のサブ制御部１５、第２のサブ制御部１６を有する。
【００４０】
第１の制御部１２は、リクエストリソース１１から送信された主記憶装置３に対するアクセス命令を受信すると共に、受信したアクセス命令のヘッダに格納された情報を基に転送方式を判別する。第１の制御部１２は、転送方式を判別した結果、主記憶装置に対するアクセス命令（ＰＩＯ方式）であると判別した場合、アクセス命令を第１のサブ制御部１５に入力する。一方、第１の制御部１２は、データ転送要求（ＤＭＡ方式）であると判別した場合、アクセス命令を第２のサブ制御部１６に入力する。
【００４１】
図２は、第１の実施形態に係るＩ／Ｏ制御装置のうち、第１のサブ制御部１５の構成を示すブロック図である。第１のサブ制御部１５は、第１のバッファ２０、第１のＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）管理部２１を有する。
【００４２】
第１のバッファ２０は、第１の制御部１２から入力された主記憶装置３へのアクセス命令の消失を防止するためにアクセス命令を格納する。
【００４３】
以下の説明において、本実施形態では、説明の便宜上、第１のＩＤ管理部２１にて生成されたトランザクションを第１のトランザクションと称する。また、第２のＩＤ管理部２３にて生成されたトランザクションを第２のトランザクションと称する。さらに、第３のサブ制御部１７にて生成されたトランザクションを第３のトランザクションと称する（以下の実施形態においても同様）。
【００４４】
第１のＩＤ管理部２１は、第１のバッファ２０に格納したアクセス命令を読み出す。第１のＩＤ管理部２１は、読み出したアクセス命令にＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ、識別子）を付与すると共に、主記憶装置３にアクセスするためのトランザクション（第１のトランザクション）を生成する。さらに、第１のＩＤ管理部２１は、付与したＩＤとトランザクションとを記憶（記述）したＩＤリストを作成する。
【００４５】
第１のＩＤ管理部２１は、生成したトランザクション（第１のトランザクション）を第１の制御部１２を経由して第３の制御部１４に送信する。
【００４６】
また、第１のＩＤ管理部２１は、第３の制御部１４が送信したリプライトランザクションを、第１の制御部１２を経由して受信する。第１のＩＤ管理部２１は、受信したリプライトランザクションに埋め込まれたＩＤを読み込むと共に、読み込んだＩＤと作成したＩＤリストとに基づいてリプライ結果（リプライデータを含む）を、リクエストリソース１１が指定したリプライエリアに格納する。
【００４７】
図３は、第１の実施形態に係るＩ／Ｏ制御装置のうち、第２のサブ制御部１６の構成を示すブロック図である。第２のサブ制御部１６は、ＤＭＡコントローラ２２、第２のＩＤ管理部２３を有する。
【００４８】
ＤＭＡコントローラ２２は、リクエストリソース１１から送信されたＤＭＡ転送要求を、第１の制御部１２を経由して受信する。
【００４９】
ＤＭＡコントローラ２２は、受信したＤＭＡ転送要求に応じて、主記憶装置３にアクセスするアドレスとデータサイズを指定したトランザクションを生成する。ＤＭＡコントローラ２２は、第２のＩＤ管理部２３に生成したトランザクションを送信する。
【００５０】
第２のＩＤ管理部２３は、ＤＭＡコントローラ２２から送信されたトランザクションを受信する。第２のＩＤ管理部２３は、受信したトランザクションにＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ、識別子）を付与すると共に、主記憶装置３にアクセスするためのトランザクション（第２のトランザクション）を生成する。さらに、第２のＩＤ管理部２３は、付与したＩＤとトランザクションとを記憶（記述）したＩＤリストを作成する。
【００５１】
第２のＩＤ管理部２３は、生成したトランザクション（第２のトランザクション）を、第１の制御部１２を経由して第３のサブ制御部１７に送信する。
【００５２】
また、第２のＩＤ管理部２３は、第４のサブ制御部１８が送信したリプライトランザクションを、第１の制御部１２を経由して受信する。第２のＩＤ管理部２３は、受信したリプライトランザクションに埋め込まれたＩＤを読み込むと共に、読み込んだＩＤと作成したＩＤリストとに基づいてリプライ結果（リプライデータを含む）をリクエストリソース１１が指定したリプライエリアに格納する。
【００５３】
尚、第１のＩＤ管理部２１および第２のＩＤ管理部２３が付与するＩＤは、トランザクション情報のヘッダデータの一部として埋め込めばよい。尚、一例として、トランザクション情報のヘッダデータの一部として埋め込む場合を示したが、トランザクション情報のヘッダデータに限らずトランザクション情報の未使用領域（エリア）にＩＤを埋め込んでもよい。
【００５４】
第２の制御部１３は、第３のサブ制御部１７、第４のサブ制御部１８を有する。
【００５５】
第３のサブ制御部１７は、第２のＩＤ管理部２３が送信するトランザクション（第２のトランザクション）を格納する。さらに、第３のサブ制御部１７は、格納したトランザクション（第２のトランザクション）を、主記憶装置３からのデータ転送に適したアクセス命令単位に変換したトランザクション（第３のトランザクション）を生成する（詳細については、後述する）。
【００５６】
第３のサブ制御部１７は、生成したトランザクション（第３のトランザクション）を第３の制御部１４に送信すると共に、第４のサブ制御部１８にトランザクション情報を送信する。
【００５７】
第４のサブ制御部１８は、第３のサブ制御部１７から送信されたトランザクション情報を格納する。
【００５８】
また、第４のサブ制御部１８は、第３の制御部１４から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションを格納する。
【００５９】
第４のサブ制御部１８は、格納したリプライトランザクションを第３のサブ制御部１７から受信したトランザクション情報を基にアクセス命令単位に分割されたリプライトランザクションを結合することにより、リプライトランザクションを生成する（詳細については、後述する）。
【００６０】
第４のサブ制御部１８は、生成したリプライトランザクションを、第１の制御部１２を経由して第２のサブ制御部１６に送信する。
【００６１】
第３の制御部１４は、メモリコントローラ２とのＩ／Ｏインターフェース制御機能を有し、メモリコントローラ２とのトランザクションを送受信する機能を有する。
【００６２】
第３の制御部１４は、第１のサブ制御部１５または、第３のサブ制御部１７から送信されたトランザクションを受信する。
【００６３】
図４は、第１の実施形態に係るＩ／Ｏ制御装置のうち、第３の制御部１４の構成を示すブロック図である。第３の制御部１４は、第２のバッファ２４、第３のバッファ２５、アクセス制御部２６、送信バッファ２７、受信バッファ２８を有する。
【００６４】
第２のバッファ２４は、第１のサブ制御部１５から送信されたトランザクション（第１のトランザクション）を格納する。
【００６５】
第３のバッファ２５は、第３のサブ制御部１７から送信されたトランザクション（第３のトランザクション）を格納する。
【００６６】
アクセス制御部２６は、第２のバッファ２４および第３のバッファ２５に格納されたトランザクションを読み出す。アクセス制御部２６は、読み出したトランザクションを送信バッファ２７に送信する。
【００６７】
より具体的に、アクセス制御部２６は、第３のバッファ２５に格納されたトランザクション（第３のトランザクション）を読み出す。アクセス制御部２６は、読み出したトランザクション（第３のトランザクション）を送信バッファ２７に送信する。
【００６８】
一方、アクセス制御部２６は、第２のバッファ２４に格納されたトランザクション（第１のトランザクション）に対してアクセス命令の種別を解析する。アクセス制御部２６は、解析した結果、主記憶装置３へのアクセス命令がＳＹＮＣ命令またはＦＬＵＳＨ命令であると判断した場合、命令発行抑止フラグを設定すると共に、送信バッファ２７に当該アクセス命令を送信する。
【００６９】
アクセス制御部２６は、命令発行抑止フラグを設定した場合、送信したトランザクション（第１のトランザクション）に対するリプライトランザクションを受信するまで待機する。より具体的に、アクセス制御部２６は、命令発行抑止フラグを設定後、第２のバッファ２４に格納されているトランザクション（第１のトランザクション）の読み出しを抑止する。
【００７０】
尚、アクセス制御部２６は、命令発行抑止フラグを設定した場合であっても、第３のバッファ２５に格納されたトランザクション（第３のトランザクション）を、抑止することなく読み出す。
【００７１】
送信バッファ２７は、アクセス制御部２６から送信されたトランザクションの消失を防止するために格納すると共に、トランザクションを格納した順序でメモリコントローラ２に送信する。
【００７２】
メモリコントローラ２は、送信バッファ２７から送信されたトランザクションを受信すると共に、受信した主記憶装置３に対するトランザクションを実行する。メモリコントローラ２は、実行したリプライをリプライトランザクションとして、第３の制御部１４に送信する。
【００７３】
第３の制御部１４は、メモリコントローラ２からのリプライトランザクションを受信すると共に、受信したリプライトランザクションを受信バッファ２８に入力する。
【００７４】
受信バッファ２８は、メモリコントローラ２からのリプライトランザクションを受信すると共に、受信したリプライトランザクションを格納する。さらに、受信バッファ２８は、格納したリプライトランザクションをアクセス制御部２６に送信する。
【００７５】
尚、第１のＩＤ管理部２１および第２のＩＤ管理部２３によってトランザクションに埋め込まれたＩＤは、メモリコントローラ２によってリプライトランザクション情報のヘッダデータの一部としてリプライトランザクションに引き継がれる。
【００７６】
アクセス制御部２６は、受信バッファ２８からリプライトランザクションを受信する。アクセス制御部２６は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。
【００７７】
アクセス制御部２６は、転送方式を判別した結果、主記憶装置に対するアクセス命令（ＰＩＯ方式）であると判別した場合、命令発行抑止フラグを設定した命令であるか否かを解析する。
【００７８】
より具体的に、アクセス制御部２６は、解析の結果、リプライトランザクションが命令発行抑止フラグを設定した命令であると判別した場合、命令発行抑止フラグを解除する。さらに、アクセス制御部２６は、リプライトランザクションを第１のサブ制御部１５に送信する。
【００７９】
一方、アクセス制御部２６は、転送方式を判別した結果、データ転送要求（ＤＭＡ方式）であると判別した場合、リプライトランザクションを第４のサブ制御部１８に送信する。
【００８０】
尚、アクセス制御部２６は、命令発行抑止フラグを解除した場合、第２のバッファ２４に格納されているトランザクションの読み出しを開始する。
【００８１】
尚、アクセス制御部２６は、受信したリプライトランザクションの要求元が第１のサブ制御部１５である場合、リプライトランザクションを第１のサブ制御部１５に送信する。また、アクセス制御部２６は、受信したリプライトランザクションの要求元が第３のサブ制御部１７である場合、リプライトランザクションを第４のサブ制御部１８に送信する。
【００８２】
このように本実施の形態に係るＩ／Ｏ制御装置１０によれば、主記憶装置に対するアクセス命令の制御をメモリコントローラではなく、Ｉ／Ｏ制御装置１０によって制御することにより、Ｉ／Ｏ装置全体の処理遅延を改善する。特に、本実施の形態によれば、ＳＹＮＣ命令およびＦＬＵＳＨ命令が発行された場合においても、ＳＹＮＣ命令およびＦＬＵＳＨ命令の後続命令のみを抑止することでＩ／Ｏ処理全体の処理時間の短縮を実現できる。
【００８３】
＜第２の実施形態＞
次に、上述した第１の実施形態に係るＩ／Ｏ制御装置１０を基本とする第２の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明する。その際、上述した第１の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。
【００８４】
図５は、本発明の第２の実施形態におけるＩ／Ｏ装置１ａの構成を示すブロック図である。
【００８５】
図５において、Ｉ／Ｏ装置１ａは、大別して、Ｉ／Ｏ制御装置３０を有する。
【００８６】
より具体的に、Ｉ／Ｏ制御装置３０は、Ｉ／Ｏプロセッサインタフェース（Ｉｎｔｅｒｆａｃ；以降、「Ｉ／Ｆ」と称する）制御部３３、ユニット３４、メモリコントローラＩ／Ｆ制御部３５を有する。尚、Ｉ／ＯプロセッサＩ／Ｆ制御部３３は、第１の実施形態における第１の制御部１２に相当する。また、ユニット３４は、第１の実施形態における第２の制御部１３に相当する。
【００８７】
Ｉ／Ｏプロセッサ３２は、ローカルメモリ３１とのメモリインターフェースを有し、ローカルメモリ３１へのアクセス制御機能を有する。尚、Ｉ／Ｏプロセッサ３２は、第１の実施形態におけるリクエストリソース１１に相当する。
【００８８】
ローカルメモリ３１は、Ｉ／Ｏプロセッサ３２からアクセス制御されることにより、Ｉ／Ｏ装置を制御するソフトウェア（ＦＷ）とチャンネルスロット５に実装されるチャンネルカードを制御するソフトウェア（ＦＷ）とを格納したワークエリアを有する。また、ローカルメモリ３１は、主記憶装置３へのストアデータおよび主記憶装置３からのロードデータを一時的に格納する。さらに、ローカルメモリ３１は、Ｉ／Ｏプロセッサ３２が送信した主記憶装置３に対するアクセス命令のリプライエリアとして使用する。
【００８９】
Ｉ／ＯプロセッサＩ／Ｆ制御部３３は、Ｉ／Ｏ制御装置３０とＩ／Ｏプロセッサ３２との間でトランザクションの送受信を制御する機能を有する。
【００９０】
より具体的に、Ｉ／ＯプロセッサＩ／Ｆ制御部３３は、ＦＷ制御部３６、ＤＭＡ制御部３７を有する。ＦＷ制御部３６は、第１の実施形態における第１のサブ制御部１５に相当する。また、ＤＭＡ制御部３７は、第１の実施形態における第２のサブ制御部１６に相当する。
【００９１】
図６は、第２の実施形態に係るＩ／Ｏ制御装置のうち、ＦＷ制御部３６の構成を示すブロック図である。ＦＷ制御部３６は、命令発行用バッファ４１、第１のＩＤ管理部２１を有する。命令発行用バッファ４１は、第１の実施形態における第１のバッファ２０に相当する。
【００９２】
図７は、第２の実施形態に係るＩ／Ｏ制御装置のうち、ＤＭＡ制御部３７の構成を示すブロック図である。ＤＭＡ制御部３７は、ＤＭＡコントローラ２２、第２のＩＤ管理部２３を有する。
【００９３】
ユニット３４は、インバウンド制御部３８、アウトバウンド制御部３９を有する。インバウンド制御部３８は、第１の実施形態における第３のサブ制御部１７に相当する。また、アウトバウンド制御部３９は、第１の実施形態における第４のサブ制御部１８に相当する。
【００９４】
メモリコントローラＩ／Ｆ制御部３５は、トランザクション（ｔｒａｎｓａｃｔｉｏｎ；以降、「ＴＸＮ」と称する）制御部４０を有する。メモリコントローラＩ／Ｆ制御部３５は、メモリコントローラ２とのＩ／Ｏインターフェース制御機能を有し、メモリコントローラ２とのトランザクションを送受信する機能を有する。ＴＸＮ制御部４０は、第１の実施形態における第３の制御部１４に相当する。
【００９５】
メモリコントローラＩ／Ｆ制御部３５は、インバウンド制御部３８またはＦＷ制御部３６からのトランザクションを受信すると共に、受信したトランザクションをＴＸＮ制御部４０に入力する。
【００９６】
また、メモリコントローラＩ／Ｆ制御部３５は、メモリコントローラ２から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションをＴＸＮ制御部４０に入力する。
【００９７】
さらに、メモリコントローラＩ／Ｆ制御部３５は、ＴＸＮ制御部４０にてリプライ確認されたリプライトランザクションを、ＦＷ制御部３６またはアウトバウンド制御部３９に送信する。
【００９８】
図８は、第２の実施形態に係るＩ／Ｏ制御装置のうち、ＴＸＮ制御部４０の構成を示すブロック図である。ＴＸＮ制御部４０は、ＦＷリクエストバッファ４２、インバウンドリクエストバッファ４３、トランザクション（ｔｒａｎｓａｃｔｉｏｎ；以降、「ＴＸＮ」と称する）送受信制御部４４、送信バッファ２７、受信バッファ２８を有する。
【００９９】
尚、ＦＷリクエストバッファ４２は、第１の実施形態における第２のバッファ２４に相当する。また、インバウンドリクエストバッファ４３は、第１の実施形態における第３のバッファ２５に相当する。さらに、ＴＸＮ送受信制御部４４は、第１の実施形態におけるアクセス制御部２６に相当する。
【０１００】
次に、本発明の第２の実施形態に係るより具体的なＩ／Ｏ制御装置の動作について説明する。
【０１０１】
図９は、第２の実施形態のＩ／Ｏ制御装置が行う送信処理を示すフローチャートである。また、図１０は、第２の実施形態のＩ／Ｏ制御装置が行う受信処理を示すフローチャートである。係るフローチャートに沿ってＩ／Ｏ制御装置の処理手順を説明する。
【０１０２】
ＰＩＯ方式において、Ｉ／Ｏプロセッサ３２上で動作する制御ソフトウェア（ＦＷ）によって主記憶装置３に対してロード命令、ストア命令、ＳＹＮＣ命令（順序制御命令）、FLUSH命令（同期制御命令）等の複数のアクセス命令を実行する場合の動作について詳細に説明する。
【０１０３】
Ｉ／Ｏプロセッサ３２上で動作する制御ソフトウェア（ＦＷ）は、主記憶装置３に対するアクセス命令であるトランザクションをＩ／ＯプロセッサＩ／Ｆ制御部３３に送信する。
【０１０４】
Ｉ／ＯプロセッサＩ／Ｆ制御部３３は、制御ソフトウェア（ＦＷ）から送信されたトランザクションを受信すると共に、受信したトランザクションのヘッダに格納された情報を基に転送方式を判別する。Ｉ／ＯプロセッサＩ／Ｆ制御部３３は、転送方式を判別した結果、送信されたトランザクションをＦＷ制御部３６に入力する（ステップＳ１において「ＹＥＳ」）。
【０１０５】
ＦＷ制御部３６は、入力されたトランザクションを、命令発行用バッファ４１に格納する。
【０１０６】
第１のＩＤ管理部２１は、命令発行用バッファ４１に格納されたトランザクションを格納された順序で読み出す。第１のＩＤ管理部２１は、読み出したトランザクションにＩＤを付与すると共に、主記憶装置３にアクセスするためのトランザクション（第１のトランザクション）を生成する。さらに、第１のＩＤ管理部２１は、付与したＩＤとトランザクションとを記憶（記述）したＩＤリストを作成する。
【０１０７】
第１のＩＤ管理部２１は、生成したトランザクション（第１のトランザクション）を、メモリコントローラＩ／Ｆ制御部３５に送信する（ステップＳ２）。
【０１０８】
第１のＩＤ管理部２１が付与したＩＤは、トランザクション情報のヘッダデータの一部として埋め込まれる。
【０１０９】
メモリコントローラＩ／Ｆ制御部３５は、トランザクション（第１のトランザクション）を受信すると共に、ＴＸＮ制御部４０に入力する。
ＴＸＮ制御部４０は、入力されたトランザクション（第１のトランザクション）を、ＦＷリクエストバッファ４２に格納する。ＴＸＮ送受信制御部４４は、ＦＷリクエストバッファ４２に格納された順序でトランザクション（第１のトランザクション）を読み出す。
【０１１０】
ＴＸＮ送受信制御部４４は、読み出したトランザクション（第１のトランザクション）を解析する（ステップＳ５）。ＴＸＮ送受信制御部４４は、解析した結果、ＳＹＮＣ命令またはＦＬＵＳＨ命令であると判断した場合（ステップＳ６において「ＹＥＳ」）、命令発行抑止フラグを設定する（ステップＳ７）。
【０１１１】
ＴＸＮ送受信制御部４４は、命令発行抑止フラグを設定後、送信バッファ２７にトランザクション（第１のトランザクション）を送信する。
【０１１２】
ＴＸＮ送受信制御部４４は、命令発行抑止フラグを設定した場合、送信したトランザクション（第１のトランザクション）に対するリプライトランザクションを、受信するまでＦＷリクエストバッファ４２に格納されたトランザクション（第１のトランザクション）の読み出しを抑止する。
【０１１３】
送信バッファ２７は、トランザクション（第１のトランザクション）を格納すると共に、トランザクションが格納された順序でメモリコントローラＩ／Ｆ制御部３５を、経由してメモリコントローラ２にトランザクション（第１のトランザクション）を送信する（ステップＳ８）。
【０１１４】
次に、第２の実施形態のＩ／Ｏ制御装置が行う受信処理について、図１０を参照して説明する。
【０１１５】
メモリコントローラ２は、受信した主記憶装置３に対するトランザクション（第１のトランザクション）を実行する。メモリコントローラ２は、実行したリプライをリプライトランザクションとして、メモリコントローラＩ／Ｆ制御部３５に送信する。
【０１１６】
メモリコントローラ２は、トランザクション（第１のトランザクション）のヘッダ情報を、使用してリプライトランザクションのヘッダ情報の生成を行う。そのため、メモリコントローラ２は、トランザクション（第１のトランザクション）に埋め込まれているＩD情報も引き継ぐ。
【０１１７】
メモリコントローラＩ／Ｆ制御部３５は、リプライトランザクションを受信すると共に、ＴＸＮ制御部４０に入力する。
【０１１８】
受信バッファ２８は、ＴＸＮ制御部４０に入力したリプライトランザクションを格納する（ステップＳ２１）。さらに、受信バッファ２８は、格納したリプライトランザクションをＴＸＮ送受信制御部４４に送信する。
【０１１９】
ＴＸＮ送受信制御部４４は、受信バッファ２８から送信されたリプライトランザクションを受信する。
【０１２０】
ＴＸＮ送受信制御部４４は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。
【０１２１】
ＴＸＮ送受信制御部４４は、転送方式を判別した結果、主記憶装置に対するアクセス命令（ＰＩＯ方式）であると判別した場合（ステップＳ２２において「ＹＥＳ」）、命令発行抑止フラグを設定した命令であるか解析する（ステップＳ２３）。
【０１２２】
ＴＸＮ送受信制御部４４は、解析した結果、命令発行抑止フラグを設定したトランザクションのリプライであると判別した場合（ステップＳ２４において「ＹＥＳ」）、命令発行抑止フラグを解除する（ステップＳ２５）。
【０１２３】
ＴＸＮ送受信制御部４４は、命令発行抑止フラグを解除後、ＦＷ制御部３６にリプライトランザクションをメモリコントローラＩ／Ｆ制御部３５を経由して送信する。
【０１２４】
一方、ＴＸＮ送受信制御部４４は、命令発行抑止フラグを設定したトランザクションのリプライでないと判別した場合（ステップＳ２４において「ＮＯ」）、ＦＷ制御部３６にリプライトランザクションを、メモリコントローラＩ／Ｆ制御部３５を経由して送信する。
【０１２５】
尚、ＴＸＮ送受信制御部４４は、命令発行抑止フラグを解除した場合、ＦＷリクエストバッファ４２に格納されているトランザクションの読み出しを開始する。
【０１２６】
Ｉ／ＯプロセッサＩ／Ｆ制御部３３は、ＴＸＮ送受信制御部４４から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションをＦＷ制御部３６に入力する。
【０１２７】
第１のＩＤ管理部２１は、ＦＷ制御部３６に入力したリプライトランザクションを受信する。
【０１２８】
第１のＩＤ管理部２１は、リプライトランザクションに含まれるＩDとトランザクション（第１のトランザクション）生成時に作成したＩＤリストとを照合する。第１のＩＤ管理部２１は、ＩＤリストを照合した結果、ローカルメモリ２に格納するリプライエリアを決定する（ステップＳ２７）。第１のＩＤ管理部２１は、決定したリプライエリアにＩ／Ｏプロセッサ３２を経由してリプライトランザクションを送信する（ステップＳ２８）。
【０１２９】
Ｉ／Ｏプロセッサ３２上で動作する制御ソフトウェア（ＦＷ）は、ローカルメモリ２内のリプライエリアを確認することにより、送信したトランザクションの結果を取得する。
【０１３０】
次に、ＤＭＡ方式において、Ｉ／Ｏプロセッサ３２上で動作する制御ソフトウェア（ＦＷ）よってＤＭＡ転送要求を、ＤＭＡコントローラに送信する。ＤＭＡコントローラ２２は、ＤＭＡ転送要求を基に主記憶装置３に対してロード命令、ストア命令を実行する場合の動作について詳細に説明する。
【０１３１】
さらに、第２の実施形態のＩ／Ｏ制御装置が行う送信処理について、図９を参照して説明する。
【０１３２】
Ｉ／Ｏプロセッサ３２上で動作する制御ソフトウェア（ＦＷ）は、ＤＭＡ転送要求を送信する。
【０１３３】
Ｉ／ＯプロセッサＩ／Ｆ制御部３３は、制御ソフトウェア（ＦＷ）から送信されたＤＭＡ転送要求を受信すると共に、受信したＤＭＡ転送要求のヘッダに格納された情報を基に転送方式を判別する（ステップＳ１において「ＮＯ」）。Ｉ／ＯプロセッサＩ／Ｆ制御部３３は、転送方式を判別した結果、ＤＭＡ制御部３７に入力する。
【０１３４】
ＤＭＡコントローラ２２は、ＤＭＡ制御部３７に入力したＤＭＡ転送要求を基に主記憶装置３に対するアクセスするためのアドレスとデータサイズを指定したトランザクションを生成する。より具体的に、一例として、トランザクションは、例えば、アドレス００００ｈ、サイズ１００ｈ（２５６Ｂ）と指定することができる。尚、本実施形態では、説明の便宜上、簡単な数値を例に説明したが、これに限定されない。
【０１３５】
ＤＭＡコントローラ２２は、生成したトランザクションを第２のＩＤ管理部２３に送信する。
【０１３６】
第２のＩＤ管理部２３は、ＤＭＡコントローラ２２が生成したトランザクションを受信する。第２のＩＤ管理部２３は、受信したトランザクションにＩＤを付与すると共に、主記憶装置３にアクセスするためのトランザクション（第２のトランザクション）を生成する（ステップＳ３）。また、第１のＩＤ管理機能２３は、付与したＩＤとトランザクションとを記憶（記述）したＩＤリストを作成する。
【０１３７】
第２のＩＤ管理部２３は、生成したトランザクション（第２のトランザクション）を、Ｉ／ＯプロセッサＩ／Ｆ制御部３３を経由してインバウンド制御部３８に送信する。
【０１３８】
インバウンド制御部３８は、第２のＩＤ管理部２３が送信するトランザクション（第２のトランザクション）を格納する。さらに、インバウンド制御部３８は、格納したトランザクション（第２のトランザクション）を、主記憶装置３へのデータ転送に適したアクセス命令単位に変換したトランザクション（第３のトランザクション）を生成する（ステップＳ４）。
【０１３９】
より具体的に、一例として、アクセス命令単位に変換したトランザクション（第３のトランザクション）は、例えば、アドレス００００ｈ、サイズ１００ｈ（２５６Ｂ）と指定したトランザクション（第２のトランザクション）をアドレス００００ｈ〜００３Ｆｈ、サイズ４０ｈ（６４Ｂ）、アドレス００４０ｈ〜００７Ｆｈ、サイズ４０ｈ（６４Ｂ）、サイズ００８０ｈ〜００ＢＦｈ、サイズ４０ｈ（６４Ｂ）、アドレス００Ｃ０ｈ〜００ＦＦｈ、サイズ４０ｈ（６４Ｂ）となるように分割することができる。尚、本実施形態では、説明の便宜上、簡単な数値を例に説明したが、これに限定されない。
【０１４０】
インバウンド制御部３８は、生成したトランザクション（第３のトランザクション）を、メモリコントローラＩ／Ｆ制御部３５に送信すると共に、アウトバウンド制御部３９にトランザクション情報として送信する。
【０１４１】
アウトバウンド制御部３９は、インバウンド制御部３８から送信されたトランザクション情報を格納する。
【０１４２】
メモリコントローラＩ／Ｆ制御部３５は、インバウンド制御部３８からのトランザクション（第３のトランザクション）を受信すると共に、受信したトランザクション（第３のトランザクション）をＴＸＮ制御部４０に入力する。
インバウンドリクエストバッファ４３は、ＴＸＮ制御部４０に入力したトランザクション（第３のトランザクション）を格納する。
【０１４３】
ＴＸＮ送受信制御部４４は、インバウンドリクエストバッファ４３に格納されたトランザクション（第３のトランザクション）を読み出す。
【０１４４】
ＴＸＮ送受信制御部４４は、読み出したトランザクション（第３のトランザクション）を送信バッファ２７に送信する。
【０１４５】
送信バッファ２７は、ＴＸＮ送受信制御部４４から送信されたトランザクションの消失を防止するために格納すると共に、トランザクションが格納された順序でメモリコントローラＩ／Ｆ制御部３５を、経由してメモリコントローラ２にトランザクショを送信する（ステップＳ８）。
【０１４６】
次に、第２の実施形態のＩ／Ｏ制御装置が行う受信処理について、図１０を参照して説明する。
【０１４７】
メモリコントローラ２は、受信した主記憶装置３に対するトランザクション（第３のトランザクション）を実行する。メモリコントローラ２は、実行したリプライをリプライトランザクションとして、メモリコントローラＩ／Ｆ制御部３５に送信する。
【０１４８】
メモリコントローラ２は、トランザクション（第３のトランザクション）のヘッダ情報を使用してリプライトランザクションのヘッダ情報の生成を行う。そのため、メモリコントローラ２は、トランザクション（第３のトランザクション）に埋め込まれているＩD情報も引き継ぐ。
【０１４９】
メモリコントローラＩ／Ｆ制御部３５は、リプライトランザクションを受信すると共に、ＴＸＮ制御部４０に入力する。
【０１５０】
受信バッファ２８は、ＴＸＮ制御部４０に入力されたリプライトランザクションを格納する（ステップＳ２１）。さらに、受信バッファ２８は、格納したリプライトランザクションをＴＸＮ送受信制御部４４に送信する。
【０１５１】
ＴＸＮ送受信制御部４４は、受信バッファ２８から送信されたリプライトランザクションを受信する。
【０１５２】
ＴＸＮ送受信制御部４４は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。
【０１５３】
ＴＸＮ送受信制御部４４は、転送方式を判別した結果、主記憶装置に対するデータ転送要求（ＤＭＡ方式）であると判別した場合、アウトバウンド制御部３９にリプライトランザクションを、メモリコントローラＩ／Ｆ制御部３５を経由して送信する（ステップＳ２２において「ＮＯ」）。
【０１５４】
アウトバウンド制御部３９は、メモリコントローラＩ／Ｆ制御部３５から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションを格納する。
【０１５５】
メモリコントローラ２は、インバウンド制御部３８で分割された複数のトランザクションに対して、複数のリプライトランザクションを送信する。このため、アウトバウンド制御部３９は、インバウンド制御部３８から受信したトランザクション情報を基に分割した複数のリプライトランザクションを、全て受信するように待機する。アウトバウンド制御部３９は、インバウンド制御部３８から受信したトランザクション情報を基に、アクセス命令単位に分割されたリプライトランザクションを結合したリプライトランザクションを生成する（ステップＳ２６）。
【０１５６】
アウトバウンド制御部３９は、生成したリプライトランザクションを、Ｉ／ＯプロセッサＩ／Ｆ制御部３３に送信する。
Ｉ／ＯプロセッサＩ／Ｆ制御部３３は、リプライトランザクションを受信すると共に、ＤＭＡ制御部３７に入力する。
【０１５７】
第２のＩＤ管理部２３は、ＤＭＡ制御部３７に入力したリプライトランザクションに含まれるＩDとトランザクション（第２のトランザクション）生成時に作成したＩＤリストとを照合する。第２のＩＤ管理部２３は、ＩＤリストを照合した結果、ローカルメモリ２に格納するリプライエリアを決定する（ステップＳ２７）。第２のＩＤ管理部２３は、決定したリプライエリアにＩ／Ｏプロセッサを経由してリプライトランザクションを送信すると共に、制御ソフトウェア（ＦＷ）にデータ転送が完了したことを通知する（ステップＳ２８）。
【０１５８】
このように本実施の形態に係るＩ／Ｏ制御装置３０によれば、第１の実施形態において説明した効果を享受できると共に、さらに、第２の実施形態にて説明したＩ／Ｏ制御装置をＩ／Ｏ装置を搭載可能な電子機器等に利用して実現することができる。
【０１５９】
（第２の実施形態の変形例）
尚、上述した第２の実施形態に基づいて、以下に説明する変形例も実現可能である。
【０１６０】
図１１は、本発明の第２の実施形態の変形例におけるＩ／Ｏ装置１ｂの構成を示すブロック図である。
【０１６１】
図１１において、Ｉ／Ｏ装置１ｂは、大別して、Ｉ／Ｏ制御装置４５を有する。
【０１６２】
即ち、第２の実施形態の変形例において、Ｉ／Ｏ制御装置４５は、図１１に示す如くスイッチＩ／Ｆ制御部４６を、さらに、有する。これにより、チャンネルカードが主記憶装置３に対するトランザクションを発行する機能を有する場合、Ｉ／Ｏ制御装置４５は、Ｉ／Ｏプロセッサ３２上で動作する制御ソフトウェア（ＦＷ）によってチャンネルカードが発行したトランザクションを制御することができる。
【０１６３】
チャンネルスロット５は、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｆａｃｅ）カードやＬＡＮカード等の各種チャンネルカードを搭載することにより、ディスク装置やＬＡＮ等のＩ／Ｏデバイスを接続することができる。
【０１６４】
スイッチ４７は、Ｉ／Ｏ制御装置４５、Ｉ／Ｏプロセッサ３２、チャンネルスロット５との間でトランザクションを制御する機能を有する。
【０１６５】
スイッチＩ／Ｆ制御部４６は、スイッチ４７のＩ／Ｏインターフェース機能を有し、スイッチ４７とインバウンド制御部３８およびアウトバウンド制御部３９との間でトランザクションの送受信を制御する。
【０１６６】
より具体的に、一例として、Ｉ／Ｏプロセッサ３２上で動作する制御ソフトウェア（ＦＷ）は、データ転送要求をチャンネルカードに送信する。チャンネルカードは、主記憶装置３に対してアクセスするためのトランザクションを生成すると共に、生成したトランザクションをスイッチ４７に送信する。
【０１６７】
スイッチ４７は、スイッチＩ／Ｆ制御部４６にトランザクションを送信する。
【０１６８】
スイッチＩ／Ｆ制御部４６は、スイッチ４７から送信されたトランザクションを受信する。スイッチＩ／Ｆ制御部４６は、受信したトランザクションにＩＤを付与すると共に、主記憶装置３にアクセスするためのトランザクションを生成する。さらに、スイッチＩ／Ｆ制御部４６は、生成したトランザクションをインバウンド制御部３８に送信する。
【０１６９】
また、スイッチＩ／Ｆ制御部４６は、アウトバウンド制御部３９から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションをスイッチ４７を経由して、チャンネルカードに送信する。
【０１７０】
スイッチ４７は、主記憶装置３からのリプライトランザクションをチャンネルスロット５に搭載されたチャンネルカードに送信する。チャンネルスロット５に搭載されたチャンネルカードは、リプライトランザクションを受信する。尚、説明の便宜上、上述した構成を例に説明したが、これに限定されない。
【０１７１】
このように本実施の形態の変形例に係るＩ／Ｏ制御装置４５によれば、第１および第２の実施形態において説明した効果を享受できると共に、さらに、スイッチＩ／Ｆ制御部４６を設けることで、Ｉ／Ｏデバイスから送信された主記憶装置３に対するアクセス命令の制御をメモリコントローラではなく、Ｉ／Ｏ制御装置４５によって制御することができる。このため、Ｉ／Ｏ制御装置４５は、Ｉ／Ｏ処理全体の処理時間の短縮を実現できる。
【０１７２】
＜第３の実施形態＞
次に、上述した第２の実施形態の変形例に係るＩ／Ｏ制御装置４５を基本とする第３の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明する。その際、上述した各実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。
【０１７３】
以下の説明において、本実施形態では、説明の便宜上、Ｉ／Ｏプロセッサ３２上で動作する４つの制御ソフトウェアを識別するために、ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ）と称する。また、ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ）のそれぞれに対応して、動作する各部名称の参照番号末尾に（ａ）、（ｂ）、（ｃ）、（ｄ）を付与することによりそれぞれの制御ソフトウェアに対応する各部名称を識別する。
【０１７４】
本実施形態では、第２の実施形態の変形例において説明したＩ／Ｏ制御装置４５に、Ｉ／Ｏプロセッサ３２上で動作する複数の制御ソフトウェア（ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ））によって、主記憶装置に対してアクセス命令を実行する場合の動作について詳細に説明する。
【０１７５】
図１２は、本発明の第３の実施形態におけるＩ／Ｏ装置１ｃの構成を示すブロック図である。
【０１７６】
図１２において、Ｉ／Ｏ装置１ｃは、大別して、Ｉ／Ｏ制御装置５０を有する。
【０１７７】
図１２において、Ｉ／Ｏ制御装置５０は、Ｉ／ＯプロセッサＩ／Ｆ制御部５１、ユニット３４、メモリコントローラＩ／Ｆ制御部５２、スイッチＩ／Ｆ制御部４６を有する。
【０１７８】
尚、ユニット３４は、制御ソフトウェア（ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ））と対応した同数のユニット３４を有する。
Ｉ／ＯプロセッサＩ／Ｆ制御部５１は、ＦＷ制御部５３、ＤＭＡ制御部５４を有する。
【０１７９】
図１３は、第３の実施形態に係るＩ／Ｏ制御装置のうち、ＦＷ制御部５３の構成を示すブロック図である。
【０１８０】
ＦＷ制御部５３は、制御ソフトウェア（ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ））と対応した同数の第１のＩＤ管理部２１および命令発行用バッファ４１を有する。
【０１８１】
図１４は、第３の実施形態に係るＩ／Ｏ制御装置のうち、ＤＭＡ制御部５４の構成を示すブロック図である。
【０１８２】
ＤＭＡ制御部５４は、制御ソフトウェア（ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ））と対応した同数のＤＭＡコントローラ２２および第２のＩＤ管理部２３を有する。
【０１８３】
メモリコントローラＩ／Ｆ制御部５２は、ＴＸＮ制御部５５を有する。
【０１８４】
図１５は、第３の実施形態に係るＩ／Ｏ制御装置のうち、ＴＸＮ制御部５５の構成を示すブロック図である。
【０１８５】
ＴＸＮ制御部５５は、制御ソフトウェア（ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ））と対応した同数のＦＷリクエストバッファ４２、インバウンドリクエストバッファ４３、ＴＸＮ送受信制御部４４を有する。
【０１８６】
さらに、ＴＸＮ制御部５５は、複数のＴＸＮ送受信制御部４４と接続された送信バッファ２７と受信バッファ２８とを有する。
【０１８７】
次に、本発明の第３の実施形態に係るより具体的なＩ／Ｏ制御装置の動作について説明する。
【０１８８】
ＰＩＯ方式において、Ｉ／Ｏプロセッサ３２上で動作する４つの制御ソフトウェア（ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ））によって主記憶装置３に対するロード命令、ＳＹＮＣ命令（順序制御命令）等の複数の命令を実行する場合の動作について詳細に説明する。
【０１８９】
図１６は、第３の実施形態に係るＩ／Ｏ制御装置のうち、４つの制御ソフトウェア（ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ））によって主記憶装置３に対するアクセス命令の処理を実行した場合の状態遷移を示すシーケンス図である。
【０１９０】
FW（ａ）は、命令（ａ１）、SYNC命令（ａ２）、命令（ａ３）の順序でＩ／ＯプロセッサＩ／Ｆ制御部５１にトランザクションを送信する。
【０１９１】
Ｉ／ＯプロセッサＩ／Ｆ制御部５１は、命令（ａ１）、SYNC命令（ａ２）、命令（ａ３）を受信すると共に、転送方式を判別し、ＦＷ制御部５３に入力する。
【０１９２】
ＦＷ制御部５３は、入力した順序で命令（ａ１）、SYNC命令（ａ２）、命令（ａ３）を命令発行用バッファ４１（ａ）に格納する。
【０１９３】
第１のＩＤ管理部２１（ａ）は、命令発行用バッファ４１（ａ）に格納されたトランザクションを、格納された順序で読み出す。第１のＩＤ管理部２１（ａ）は、読み出した命令（ａ１）、SYNC命令（ａ２）、命令（ａ３）にＩＤを付与すると共に、Ｉ／ＯプロセッサＩ／Ｆ制御部５１を経由してメモリコントローラＩ／Ｆ制御部５２に送信する。さらに、第１のＩＤ管理部２１（ａ）は、付与したＩＤとトランザクションとを記憶（記述）したＩＤリスト（ａ）を作成する。
【０１９４】
メモリコントローラＩ／Ｆ制御部５２は、ＩＤを付与された命令（ａ１）、SYNC命令（ａ２）、命令（ａ３）を受信すると共に、ＴＸＮ制御部５５に入力する。
【０１９５】
ＴＸＮ制御部５５は、入力された順序で命令（ａ１）、SYNC命令（ａ２）、命令（ａ３）をＦＷリクエストバッファ４２（ａ）に格納する。
【０１９６】
ＴＸＮ送受信制御部４４（ａ）は、ＦＷリクエストバッファ４２（ａ）に格納された命令（ａ１）、SYNC命令（ａ２）、命令（ａ３）を格納された順序で読み出すと共に、読み出した命令を解析する。
【０１９７】
ＴＸＮ送受信制御部４４（ａ）は、命令（ａ１）を送信バッファ２７に送信する。
【０１９８】
送信バッファ２７は、命令（ａ１）を格納する。
【０１９９】
次に、ＴＸＮ送受信制御部４４（ａ）は、SYNC命令（ａ２）を解析した結果、ＳＹＮＣ命令であると判断したため、命令発行抑止フラグを設定すると共に、送信バッファ２７にSYNC命令（ａ２）を送信する。
【０２００】
送信バッファ２７は、SYNC命令（ａ２）を格納する。
【０２０１】
ＴＸＮ送受信制御部４４（ａ）は、命令発行抑止フラグが設定されているため、SYNC命令（ａ２）に対するリプライが返却されるまで、ＦＷリクエストバッファ４２（ａ）から命令（ａ３）を読み出すことを抑止する。
【０２０２】
次に、FW（ｂ）は、命令（ｂ１）、命令（ｂ２）、命令（ｂ３）の順序でＩ／ＯプロセッサＩ／Ｆ制御部５１に命令を送信する。
【０２０３】
Ｉ／ＯプロセッサＩ／Ｆ制御部５１は、命令（ｂ１）、命令（ｂ２）、命令（ｂ３）を受信すると共に、転送方式を判別し、ＦＷ制御部５３に入力する。
【０２０４】
ＦＷ制御部５３は、入力した順序で命令（ｂ１）、命令（ｂ２）、命令（ｂ３）を
命令発行用バッファ４１（ｂ）に格納する。
【０２０５】
第１のＩＤ管理部２１（ｂ）は、命令発行用バッファ４１（ｂ）に格納されたトランザクションを格納された順序で読み出す。第１のＩＤ管理部２１（ｂ）は、読み出した命令（ｂ１）、命令（ｂ２）、命令（ｂ３）にＩＤを付与すると共に、Ｉ／ＯプロセッサＩ／Ｆ制御部５１を経由してメモリコントローラＩ／Ｆ制御部５２に送信する。さらに、第１のＩＤ管理部２１（ｂ）は、付与したＩＤとトランザクションとを記憶（記述）したＩＤリスト（ｂ）を作成する。
【０２０６】
メモリコントローラＩ／Ｆ制御部５２は、ＩＤを付与された命令（ｂ１）、命令（ｂ２）、命令（ｂ３）を受信すると共に、ＴＸＮ制御部５５に入力する。
【０２０７】
ＴＸＮ制御部５５は、入力された命令（ｂ１）、命令（ｂ２）、命令（ｂ３）をＦＷリクエストバッファ４２（ｂ）に格納する。
【０２０８】
ＴＸＮ送受信制御部４４（ｂ）は、ＦＷリクエストバッファ４２（ｂ）に格納された命令（ｂ１）、命令（ｂ２）、命令（ｂ３）を格納された順序で読み出すと共に、読み出した命令を解析する。
【０２０９】
ＴＸＮ送受信制御部４４（ｂ）は、命令（ｂ１）、命令（ｂ２）、命令（ｂ３）の順序で、これらの命令を、送信バッファ２７に送信する。
【０２１０】
送信バッファ２７は、命令（ｂ１）、命令（ｂ２）、命令（ｂ３）をＴＸＮ送受信制御部４４（ｂ）から送信された順序で格納する。
【０２１１】
次に、FW（ｃ）は、命令（ｃ１）、命令（ｃ２）、命令（ｃ３）の順序でＩ／ＯプロセッサＩ／Ｆ制御部５１に送信する。
【０２１２】
Ｉ／ＯプロセッサＩ／Ｆ制御部５１は、命令（ｃ１）、命令（ｃ２）、命令（ｃ３）を受信すると共に、転送方式を判別し、ＦＷ制御部５３に入力する。
【０２１３】
ＦＷ制御部５３は、入力した命令（ｃ１）、命令（ｃ２）、命令（ｃ３）を命令発行用バッファ４１（ｃ）に格納する。
【０２１４】
第１のＩＤ管理部２１（ｃ）は、命令発行用バッファ４１（ｃ）に格納されたトランザクションを格納された順序で読み出す。第１のＩＤ管理部２１（ｃ）は、読み出した命令（ｃ１）、命令（ｃ２）、命令（ｃ３）にＩＤを付与すると共に、Ｉ／ＯプロセッサＩ／Ｆ制御部５１を経由してメモリコントローラＩ／Ｆ制御部５２に送信する。さらに、第１のＩＤ管理部２１（ｃ）は、付与したＩＤとトランザクションとを記憶（記述）したＩＤリスト（ｃ）を作成する。
【０２１５】
メモリコントローラＩ／Ｆ制御部５２は、ＩＤを付与された命令（ｃ１）、命令（ｃ２）、命令（ｃ３）を受信すると共に、ＴＸＮ制御部５５に入力する。
【０２１６】
ＴＸＮ制御部５５は、入力された順序で命令（ｃ１）、命令（ｃ２）、命令（ｃ３）をＦＷリクエストバッファ４２（ｃ）に格納する。
【０２１７】
ＴＸＮ送受信制御部４４（ｃ）は、ＦＷリクエストバッファ４２（ｃ）に格納された命令（ｃ１）、命令（ｃ２）、命令（ｃ３）を格納された順序で読み出すと共に、読み出した命令を解析する。
【０２１８】
ＴＸＮ送受信制御部４４（ｃ）は、命令（ｃ１）、命令（ｃ２）、命令（ｃ３）の順序で、これらの命令を、送信バッファ２７に送信する。
【０２１９】
送信バッファ２７は、命令（ｃ１）、命令（ｃ２）、命令（ｃ３）をＴＸＮ送受信制御部４４（ｃ）から送信された順序で格納する。
【０２２０】
次に、FW（ｄ）は、命令（ｄ１）、命令（ｄ２）、命令（ｄ３）の順序でＩ／ＯプロセッサＩ／Ｆ制御部５１に送信する。
【０２２１】
Ｉ／ＯプロセッサＩ／Ｆ制御部５１は、命令（ｄ１）、命令（ｄ２）、命令（ｄ３）を受信すると共に、転送方式を判別し、ＦＷ制御部５３に入力する。
【０２２２】
ＦＷ制御部５３は、入力した順序で命令（ｄ１）、命令（ｄ２）、命令（ｄ３）を命令発行用バッファ４１（ｄ）に格納する。
【０２２３】
第１のＩＤ管理部２１（ｄ）は、命令発行用バッファ４１（ｄ）に格納されたトランザクションを格納された順序で読み出す。第１のＩＤ管理部２１（ｄ）は、読み出した命令（ｄ１）、命令（ｄ２）、命令（ｄ３）にＩＤを付与すると共に、Ｉ／ＯプロセッサＩ／Ｆ制御部５１を経由してメモリコントローラＩ／Ｆ制御部５２に送信する。さらに、第１のＩＤ管理部２１（ｄ）は、付与したＩＤとトランザクションとを記憶（記述）したＩＤリスト（ｄ）を作成する。
【０２２４】
メモリコントローラＩ／Ｆ制御部５２は、ＩＤを付与された命令（ｄ１）、命令（ｄ２）、命令（ｄ３）を受信すると共に、ＴＸＮ制御部５５に入力する。
【０２２５】
ＴＸＮ制御部５５は、入力された命令（ｄ１）、命令（ｄ２）、命令（ｄ３）をＦＷリクエストバッファ４２（ｄ）に格納する。
【０２２６】
ＴＸＮ送受信制御部４４（ｄ）は、ＦＷリクエストバッファ４２（ｄ）に格納された命令（ｄ１）、命令（ｄ２）、命令（ｄ３）を格納された順序で読み出すと共に、読み出した命令を解析する。
【０２２７】
ＴＸＮ送受信制御部４４（ｄ）は、命令（ｄ１）、命令（ｄ２）、命令（ｄ３）の順序で、これらの命令を、送信バッファ２７に送信する。
【０２２８】
送信バッファ２７は、命令（ｄ１）、命令（ｄ２）、命令（ｄ３）をＴＸＮ送受信制御部４４（ｄ）から送信された順序で格納する。
【０２２９】
送信バッファ２７は、命令を格納した順序でメモリコントローラＩ／Ｆ制御部５２を経由してメモリコントローラ２に送信する。
【０２３０】
次に、第３の実施形態のＩ／Ｏ制御装置が行う受信処理について説明する。
【０２３１】
メモリコントローラ２は、受信した命令を受信した順序で実行し、リプライのトランザクションをメモリコントローラＩ／Ｆ制御部５２に送信する。
【０２３２】
メモリコントローラＩ／Ｆ制御部５２は、リプライトランザクションを受信すると共に、ＴＸＮ制御部５５に入力する。
【０２３３】
受信バッファ２８は、ＴＸＮ制御部５５に入力したリプライトランザクションを格納する。さらに、受信バッファ２８は、格納したリプライトランザクションをＴＸＮ送受信制御部４４（ａ）乃至ＴＸＮ送受信制御部４４（ｄ）に送信する。ＴＸＮ送受信制御部４４（ａ）乃至ＴＸＮ送受信制御部４４（ｄ）は、受信バッファ２８からリプライトランザクションを受信する。
【０２３４】
より具体的に、ＴＸＮ送受信制御部４４（ａ）は、ＦＷ（ａ）が送信した命令（ａ１）およびＳＹＮＣ命令（ａ２）に対するリプライトランザクションを受信する。また、ＴＸＮ送受信制御部４４（ｂ）は、ＦＷ（ｂ）が送信した命令（ｂ１）乃至命令（ｂ３）に対するリプライトランザクションを受信する。ＴＸＮ送受信制御部４４（ｃ）は、ＦＷ（ｃ）が発行した命令（ｃ１）乃至命令（ｃ３）に対するリプライトランザクションを受信する。ＴＸＮ送受信制御部４４（ｄ）は、ＦＷ（ｄ）が送信した命令（ｄ１）乃至命令（ｄ３）に対するリプライトランザクションを受信する。
【０２３５】
ＴＸＮ送受信制御部４４（ａ）乃至ＴＸＮ送受信制御部４４（ｄ）は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。ＴＸＮ送受信制御部４４（ａ）乃至ＴＸＮ送受信制御部４４（ｄ）は、転送方式を判別した結果、主記憶装置に対するアクセス命令（ＰＩＯ方式）であると判別した場合、命令発行抑止フラグを設定した命令であるか解析する。
【０２３６】
より具体的に、ＴＸＮ送受信制御部４４（ａ）は、命令（ａ１）およびＳＹＮＣ命令（ａ２）に対するリプライトランザクションを受信した際、転送方式を判別する。ＴＸＮ送受信制御部４４（ａ）は、転送方式を判別した結果、主記憶装置に対するアクセス命令（ＰＩＯ方式）であると判別した場合、命令発行抑止フラグを設定した命令であるか解析する。ＴＸＮ送受信制御部４４（ａ）は、解析した結果、ＳＹＮＣ命令（ａ２）に対するリプライトランザクションについて命令発行抑止フラグを設定したトランザクションのリプライであると判別する。ＴＸＮ送受信制御部４４（ａ）は、命令発行抑止フラグを解除する。
【０２３７】
また、ＴＸＮ送受信制御部４４（ａ）乃至ＴＸＮ送受信制御部４４（ｄ）は、受信したリプライトランザクションの転送方式を判別結果に応じて、ＦＷ制御部５３およびＤＭＡ制御部５４に送信する。
【０２３８】
より具体的に、ＴＸＮ送受信制御部４４は、ＦＷ制御部５３から送信されたトランザクションに対するリプライトランザクションは、ＦＷ制御部５３に送信する。さらに、ＴＸＮ送受信制御部４４は、ＤＭＡ制御部５４から送信されたトランザクションに対するリプライトランザクションは、アウトバウンド制御部１５を経由してＤＭＡ制御部５４に送信する。
【０２３９】
尚、ＴＸＮ送受信制御部４４（ａ）は、命令発行抑止フラグを解除後、ＦＷリクエストバッファ４２（ａ）に格納されている命令（ａ３）を読み出すと共に、送信バッファ２７に送信する。
【０２４０】
ＴＸＮ送受信制御部４４から送信されたリプライトランザクションは、Ｉ／ＯプロセッサＩ／Ｆ制御部５１を、経由してＦＷ制御部５３に入力する。
【０２４１】
尚、ＴＸＮ送受信制御部４４（ａ）から送信されたリプライトランザクションは、第１のＩＤ管理部２１（ａ）に入力する。ＴＸＮ送受信制御部４４（ｂ）から送信されたリプライトランザクションは、第１のＩＤ管理部２１（ｂ）に入力する。ＴＸＮ送受信制御部４４（ｃ）から送信されたリプライトランザクションは、第１のＩＤ管理部２１（ｃ）に入力する。ＴＸＮ送受信制御部４４（ｄ）から送信されたリプライトランザクションは、第１のＩＤ管理部２１（ｄ）に入力する。
【０２４２】
このように、異なるリクエストリソース（ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ））が送信した主記憶装置に対するアクセス命令（（ｂ１）〜（ｄ１））が、他のリクエストリソースが発行したＳＹＮＣ命令（ａ２）の影響を受けることなく、実行可能となる。
【０２４３】
次に、本発明の第３の実施形態に係るより具体的なＩ／Ｏ制御装置の動作について説明する。
【０２４４】
ＰＩＯ方式およびＤＭＡ方式を組み合わせて行う場合において、Ｉ／Ｏプロセッサ３２上で動作する制御ソフトウェア（ＦＷ（ａ））によって主記憶装置に対するロード命令、SYNC命令（順序制御命令）等の複数の命令を実行する場合の動作について詳細に説明する。
【０２４５】
図１７は、第３の実施形態に係るＩ／Ｏ制御装置のうち、制御ソフトウェア（ＦＷ（ａ））によってＰＩＯ方式およびＤＭＡ方式を組み合わせて、主記憶装置に対するアクセス命令の処理を実行した場合の状態遷移を示すシーケンス図である。
【０２４６】
ＦＷ（ａ）は、Ｉ／ＯプロセッサＩ／Ｆ制御部５１に主記憶装置３に対するアクセス命令を送信する。尚、ＦＷ（ａ）は、ＰＩＯ方式を実行するためのアクセス命令である命令（ａ１）、ＳＹＮＣ命令（ａ２）、命令（ａ３）の順序で送信する。次に、ＦＷ（ａ）は、ＤＭＡ方式を実行するために、ＤＭＡ転送要求であるＤＭＡアクセス命令（Ｂ１）を送信する。
【０２４７】
Ｉ／ＯプロセッサＩ／Ｆ制御部５１は、受信した命令のヘッダに格納された情報を基に転送方式を判別した結果、命令（ａ１）、ＳＹＮＣ命令（ａ２）、命令（ａ３）を、ＦＷ制御部５３に入力する。また、Ｉ／ＯプロセッサＩ／Ｆ制御部５１は、ＤＭＡアクセス命令（Ｂ１）を、ＤＭＡ制御部５４に入力する。
【０２４８】
尚、ＦＷ（ａ）が送信した命令（ａ１）、ＳＹＮＣ命令（ａ２）、命令（ａ３）に関する動作は、上述した通りの動作を実行するため、以下の説明では、簡略に表現する。
【０２４９】
ＤＭＡコントローラ２２（ａ）は、Ｉ／ＯプロセッサＩ／Ｆ制御部５１から入力されたＤＭＡアクセス命令（Ｂ１）に応じて、主記憶装置３にアクセスするアドレスとデータサイズとを指定したトランザクションを生成する。ＤＭＡコントローラ２２（ａ）は、第２のＩＤ管理部２３（ａ）に生成したトランザクションを送信する。
【０２５０】
第２のＩＤ管理部２３（ａ）は、ＤＭＡコントローラ２２（ａ）から送信されたトランザクションを受信する。第２のＩＤ管理部２３（ａ）は、受信したトランザクションにＩＤを付与すると共に、Ｉ／ＯプロセッサＩ／Ｆ制御部５１を経由してインバウンド制御部３８（ａ）に送信する。さらに、第２のＩＤ管理部２３（ａ）は、付与したＩＤとトランザクションとを記憶（記述）したＩＤリスト（ａ）を作成する。
【０２５１】
インバウンド制御部３８（ａ）は、第２のＩＤ管理部２３（ａ）が送信したトランザクションを格納する。さらに、インバウンド制御部３８（ａ）は、格納したトランザクションを主記憶装置３へのデータ転送に適したアクセス命令単位に変換した第３のトランザクション（命令（ｂ１）、命令（ｂ２）、命令（ｂ３））を生成する。
【０２５２】
インバウンド制御部３８（ａ）は、生成したトランザクションを命令（ｂ１）、命令（ｂ２）、命令（ｂ３）の順序でメモリコントローラＩ／Ｆ制御部５２を経由してＴＸＮ制御部５５に送信すると共に、アウトバウンド制御部３９（ａ）に第３のトランザクションをトランザクション情報として送信する。
【０２５３】
アウトバウンド制御部３９（ａ）は、インバウンド制御部３８（ａ）から送信されたトランザクション情報を格納する。
【０２５４】
インバウンドリクエストバッファ４３（ａ）は、インバウンド制御部３８（ａ）から送信された順序でトランザクション（命令（ｂ１）、命令（ｂ２）、命令（ｂ３））を格納する。
【０２５５】
ＴＸＮ送受信制御部４４（ａ）は、インバウンドリクエストバッファ４３（ａ）に格納された順序でトランザクション（命令（ｂ１）、命令（ｂ２）、命令（ｂ３））を読み出す。ＴＸＮ送受信制御部４４（ａ）は、読み出したトランザクションを解析すると共に、トランザクションを送信バッファ２７に送信する。
【０２５６】
送信バッファ２７は、ＴＸＮ送受信制御部４４（ａ）から送信されたトランザクション（命令（ｂ１）、命令（ｂ２）、命令（ｂ３））を送信された順序で格納する。
【０２５７】
ＴＸＮ送受信制御部４４（ａ）は、ＳＹＮＣ命令（ａ２）を送信した場合であっても、先行する命令が完了することを待機することなく、後続の命令（ｂ１）乃至命令（ｂ３）を続けて送信することができる。
【０２５８】
送信バッファ２７は、命令（ａ１）、ＳＹＮＣ命令（ａ２）、命令（ｂ１）、命令（ｂ２）、命令（ｂ３）を格納した順序でメモリコントローラＩ／Ｆ制御部５２を経由してメモリコントローラ２に命令を送信する。
【０２５９】
次に、第３の実施形態のＩ／Ｏ制御装置が行う受信処理について説明する。
【０２６０】
メモリコントローラ２は、受信した命令を受信した順序で実行し、リプライのトランザクションをメモリコントローラＩ／Ｆ制御部５２に送信する。
【０２６１】
メモリコントローラＩ／Ｆ制御部５２は、リプライトランザクションを受信すると共に、ＴＸＮ制御部５５に入力する。
【０２６２】
受信バッファ２８は、ＴＸＮ制御部５５から入力されたリプライトランザクションを格納する。さらに、受信バッファ２８は、格納したリプライトランザクションをＴＸＮ送受信制御部４４（ａ）に送信する。
【０２６３】
ＴＸＮ送受信制御部４４（ａ）は、受信バッファ２８からリプライトランザクションを受信する。
【０２６４】
ＴＸＮ送受信制御部４４は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。
【０２６５】
ＴＸＮ送受信制御部４４（ａ）は、転送方式を判別した結果、主記憶装置に対するデータ転送要求（ＤＭＡ方式）であると判別した場合、メモリコントローラＩ／Ｆ制御部５２を、経由してアウトバウンド制御部３９（ａ）に送信する。
【０２６６】
アウトバウンド制御部３９（ａ）は、メモリコントローラＩ／Ｆ制御部５２から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションを格納する。
【０２６７】
メモリコントローラ２は、インバウンド制御部３８（ａ）で分割された複数のトランザクション（命令（ｂ１）、命令（ｂ２）、命令（ｂ３））に対し、複数のリプライトランザクションを送信する。このため、アウトバウンド制御部３９（ａ）は、格納したリプライトランザクションをインバウンド制御部３８（ａ）から受信したトランザクション情報を基に、分割された複数のリプライトランザクションを全て受信するように待機する。アウトバウンド制御部３９（ａ）は、インバウンド制御部３８（ａ）から受信したトランザクション情報を基に、アクセス命令単位に分割されたリプライトランザクションを結合しリプライトランザクション（リプライ（Ｂ１））を生成する。
【０２６８】
アウトバウンド制御部３９（ａ）は、生成したリプライトランザクションを、Ｉ／ＯプロセッサＩ／Ｆ制御部５１に送信する。
Ｉ／ＯプロセッサＩ／Ｆ制御部５１は、リプライトランザクションを受信すると共に、ＤＭＡ制御部５４に入力する。
【０２６９】
尚、説明の便宜上、ＳＹＮＣ命令及びロード命令を例に説明したが、この場合に限らずＦＬＵＳＨ命令やストア命令など他の命令であってもよい。
【０２７０】
尚、本実施形態に係るＩ／Ｏ制御装置は、ＳＹＮＣ命令またはＦＬＵＳＨ命令を送信したリクエストリソースに対し、後続の命令について読み出しを抑止したが、これに限らずＩ／Ｏ制御装置は、ＳＹＮＣ命令またはＦＬＵＳＨ命令が発行された場合、全てのリクエストリソースが発行した命令に対して、読み出しを抑止するように設定してもよい。
【０２７１】
このように本実施の形態に係るＩ／Ｏ制御装置５０によれば、各実施形態において説明した効果を享受できると共に、さらに、複数のリクエストリソース（ＦＷ（ａ）、ＦＷ（ｂ）、ＦＷ（ｃ）、ＦＷ（ｄ））が発行する主記憶装置３に対する複数のアクセス命令の制御をメモリコントローラではなく、Ｉ／Ｏ制御装置５０によって制御することにより、さらに、Ｉ／Ｏ装置全体の処理遅延を改善する。特に、本実施の形態によれば、ＳＹＮＣ命令およびＦＬＵＳＨ命令が発行された場合においても、ＳＹＮＣ命令およびＦＬＵＳＨ命令を発行したリクエストリソースだけの後続命令を抑止することで、Ｉ／Ｏ処理全体の処理時間をさらに短縮することが実現できる。また、Ｉ／０制御装置５０によれば、抑止する対象を変更することで、複数の主記憶装置に対するアクセスの制御方法を確立できる。
【０２７２】
尚、上述した各実施形態に説明した本発明は、説明の便宜上、メモリコントローラ２に対し、複数のＩ／Ｏ装置を有する場合について明記していないが、複数のＩ／Ｏ装置を有する場合においても、それぞれのＩ／Ｏ装置に設けたＩ／Ｏ制御装置において、ＳＹＮＣ命令およびＦＬＵＳＨ命令を発行したリクエストリソースだけの後続命令を抑止することで、Ｉ／Ｏ処理全体の処理時間をさらに短縮することができる。
【０２７３】
尚、上述した各実施形態およびその変形例の一部又は全部は、以下の付記のようにも記載されうる。しかしながら、上述した実施形態及びその変形例により例示的に説明した本発明は、以下には限らない。即ち、
（付記１）
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、第１のトランザクションを生成する一方、転送指示命令だと判別した場合には、第２のトランザクションを生成する第１の制御部と、
前記第２のトランザクションが生成された場合に、前記第２のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第３のトランザクションを生成する第２の制御部と、
前記第１のトランザクションと前記第３のトランザクションとが生成された場合に、該生成された第１及び第３のトランザクションをトランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信する第３の制御部と、
を備えることを特徴とするＩ／Ｏ制御装置。
（付記２）
前記第１の制御部は、
前記命令が前記アクセス命令だと判別した場合には、該アクセス命令を基に前記第１のトランザクションを生成する第１のサブ制御部と、
前記命令が前記転送指示命令だと判別した場合には、該転送指示命令を基に前記第２のトランザクションを生成する第２のサブ制御部と、
を含むことを特徴とした付記１に記載のＩ／Ｏ制御装置。
（付記３）
前記第１のサブ制御部は、
前記アクセス命令を格納する第１のバッファと、
前記第１のバッファから読み出した前記アクセス命令に識別子を付与することにより、前記第１のトランザクションを生成し、前記識別子と前記識別子に対応した該第１のトランザクションとを記述したリストを含むことを特徴した付記２に記載のＩ／Ｏ制御装置。
（付記４）
前記第２のサブ制御部は、
前記転送指示命令を基に前記主記憶装置にアクセスするアドレスとデータサイズとを指定したトランザクションを生成するＤＭＡコントローラと、
前記ＤＭＡコントローラによって生成された該トランザクションに前記識別子を付与することにより、前記第２のトランザクションを生成し、前記識別子と前記識別子に対応した該第２のトランザクションとを記述したリストを含むことを特徴した付記２または付記３に記載のＩ／Ｏ制御装置。
（付記５）
前記第２の制御部は、
前記第２のトランザクションを基にデータ転送に適したアドレスとデータサイズとに分割した前記第３のトランザクションを生成する第３のサブ制御部と、
前記第３のトランザクションに対するリプライトランザクションを格納する第４のサブ制御部とを備え、
前記第３のサブ制御部は、生成した前記第３のトランザクションをトランザクション情報として前記第４のサブ制御部に出力し、
前記第４のサブ制御部は、格納した前記リプライトランザクションを前記トランザクション情報を基に合成することを特徴とする付記１に記載のＩ／Ｏ制御装置。
（付記６）
前記第３の制御部は、
前記第１のトランザクションを格納する第２のバッファと、
前記第３のトランザクションを格納する第３のバッファと、
前記第２のバッファから読み出した前記第１のトランザクションと前記第３のバッファから読み出した前記第３のトランザクションとを送信するアクセス制御部と、
前記第１のトランザクションと前記第３のトランザクションとを格納し、格納したときの順序と同じ順序で前記メモリコントローラに送信する送信バッファと、
前記メモリコントローラから送信された前記リプライトランザクションを格納し、格納したときの順序と同じ順序で前記アクセス制御部に送信する受信バッファと、
を含むことを特徴とする付記１に記載のＩ／Ｏ制御装置。
（付記７）
前記アクセス制御部は、
前記第２のバッファから読み出した前記第１のトランザクションを前記アクセス命令の種別に基づいて解析し、解析した結果、前記主記憶装置に対するアクセスを抑止する命令であった場合には、フラグを設定すると共に、その命令に対する前記リプライトランザクションを受信するまで、前記第２のバッファから後続の前記第１のトランザクションの読出しを抑止することを特徴とする付記６に記載のＩ／Ｏ制御装置。
（付記８）
前記アクセス制御部は、
前記フラグを設定した場合に、その前記フラグを設定した前記第１のトランザクションに対する前記リプライトランザクションを取得するのに応じて、前記アクセス制御部に対して設定されていた前記フラグを解除することを特徴とする付記６または付記７に記載のＩ／Ｏ制御装置。
（付記９）
チャンネルスロットに接続されたＩ／Ｏデバイスが発行したトランザクションを制御するスイッチＩ／Ｆ制御部をさらに備えることを特徴とする付記１乃至付記８の何れかに記載のＩ／Ｏ制御装置。
（付記１０）
前記Ｉ／Ｏ制御装置は、
複数の前記アクセスリソースから主記憶装置に対する命令が発行された場合に、前記アクセスリソース毎に前記第１の制御部と、前記第２の制御部と、前記第３の制御部とを備えることを特徴とする付記１乃至付記９の何れかに記載のＩ／Ｏ制御装置。
（付記１１）
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、第１のトランザクションを生成し、一方で、転送指示命令だと判別した場合には、第２のトランザクションを生成し、前記第２のトランザクションが生成された場合に、前記第２のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第３のトランザクションを生成し、前記第１のトランザクションと前記第３のトランザクションとが生成された場合に、トランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信することを特徴とするＩ／Ｏ制御方法。
（付記１２）
電子機器上で動作するＩ／Ｏ制御のためのコンピュータ・プログラムであって、そのコンピュータ・プログラムにより、
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、第１のトランザクションを生成し、一方で、転送指示命令だと判別した場合には、第２のトランザクションを生成し、前記第２のトランザクションが生成された場合に、前記第２のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第３のトランザクションを生成し、前記第１のトランザクションと前記第３のトランザクションとが生成された場合に、トランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信する機能をコンピュータに実現させることを特徴とするコンピュータ・プログラム。
【産業上の利用可能性】
【０２７４】
本発明は、上述した各実施形態には限定されない。本発明は、パーソナルコンピュータ、ＰＯＳ（Ｐｏｉｎｔ  Ｏｆ  Ｓａｌｅ）システム、サーバ、複写機、複合機等の各種の電子機器に適用可能である。
【符号の説明】
【０２７５】
１    Ｉ／Ｏ装置
１ａ    Ｉ／Ｏ装置
１ｂ    Ｉ／Ｏ装置
１ｃ    Ｉ／Ｏ装置
２    メモリコントローラ
３    主記憶装置
４    演算処理装置
５    チャンネルスロット
６    ディスク装置
７    ＬＡＮ
８    テープ装置
９    ホストコンピュータ
１０    Ｉ／Ｏ制御装置
１１    リクエストリソース
１２    第１の制御部
１３    第２の制御部
１４    第３の制御部
１５    第１のサブ制御部
１６    第２のサブ制御部
１７    第３のサブ制御部
１８    第４のサブ制御部
２０    第１のバッファ
２１    第１のＩＤ管理部
２２    ＤＭＡコントローラ
２３    第２のＩＤ管理部
２４    第２のバッファ
２５    第３のバッファ
２６    アクセス制御部
２７    送信バッファ
２８    受信バッファ
３０    Ｉ／Ｏ制御装置
３１    ローカルメモリ
３２    Ｉ／Ｏプロセッサ
３３    Ｉ／ＯプロセッサＩ／Ｆ制御部
３４    ユニット
３５    メモリコントローラＩ／Ｆ制御部
３６    ＦＷ制御部
３７    ＤＭＡ制御部
３８    インバウンド制御部
３９    アウトバウンド制御部
４０    ＴＸＮ制御部
４１    命令発行用バッファ
４２    ＦＷリクエストバッファ
４３    インバウンドリクエストバッファ
４４    ＴＸＮ送受信制御部
４５    Ｉ／Ｏ制御装置
４６    スイッチＩ／Ｆ制御部
４７    スイッチ
５０    Ｉ／Ｏ制御装置
５１    Ｉ／ＯプロセッサＩ／Ｆ制御部
５２    メモリコントローラＩ／Ｆ制御部
５３    ＦＷ制御部
５４    ＤＭＡ制御部
５５    ＴＸＮ制御部
【図１】
0005924060.tif 000002
【図２】
0005924060.tif 000003
【図３】
0005924060.tif 000004
【図４】
0005924060.tif 000005
【図５】
0005924060.tif 000006
【図６】
0005924060.tif 000007
【図７】
0005924060.tif 000008
【図８】
0005924060.tif 000009
【図９】
0005924060.tif 000010
【図１０】
0005924060.tif 000011
【図１１】
0005924060.tif 000012
【図１２】
0005924060.tif 000013
【図１３】
0005924060.tif 000014
【図１４】
0005924060.tif 000015
【図１５】
0005924060.tif 000016
【図１６】
0005924060.tif 000017
【図１７】
0005924060.tif 000018
【図１８】
0005924060.tif 000019