以下、本発明の実施形態について図面を参照して詳細に説明する。
なお、実施形態では、本発明をコンピュータシステムに適用した場合を例として説明する。
図18は、本発明を適用可能なコンピュータシステムの構成を示す概略ブロック図である。
図18において、係るコンピュータシステムは、I/O装置1、メモリコントローラ2、主記憶装置3、演算処理装置4、ディスク装置6、LAN(Local Area Network)7、テープ装置8、ホストコンピュータ9を有する。
I/O装置1は、複数のチャンネル(Channel、CH)スロット5を有する。チャンネルスロット5は、チャンネルカードを搭載することにより、ディスク装置6、LAN7、テープ装置8、ホストコンピュータ9等を実装する。
メモリコントローラ2は、コンピュータシステム上で主記憶装置3に記憶されたデータのロードおよびストア等を実行する際、主記憶装置3を制御する制御装置である。
主記憶装置3は、演算処理装置4がメモリコントローラ2を介してアクセスすることができる記憶装置である。
演算処理装置4は、コンピュータシステムの全体の動作を司るものである。
以下、上述した構成により実行される処理の詳細について説明する。
<第1の実施形態>
図1は、本発明の第1の実施形態におけるI/O装置1の構成を示すブロック図である。
図1において、I/O装置1は、大別して、I/O制御装置10を有する。
より具体的に、I/O制御装置10は、第1の制御部12、第2の制御部13、第3の制御部14を有する。
より具体的に、第1の制御部12は、第1のサブ制御部15、第2のサブ制御部16を有する。
第1の制御部12は、リクエストリソース11から送信された主記憶装置3に対するアクセス命令を受信すると共に、受信したアクセス命令のヘッダに格納された情報を基に転送方式を判別する。第1の制御部12は、転送方式を判別した結果、主記憶装置に対するアクセス命令(PIO方式)であると判別した場合、アクセス命令を第1のサブ制御部15に入力する。一方、第1の制御部12は、データ転送要求(DMA方式)であると判別した場合、アクセス命令を第2のサブ制御部16に入力する。
図2は、第1の実施形態に係るI/O制御装置のうち、第1のサブ制御部15の構成を示すブロック図である。第1のサブ制御部15は、第1のバッファ20、第1のID(identification)管理部21を有する。
第1のバッファ20は、第1の制御部12から入力された主記憶装置3へのアクセス命令の消失を防止するためにアクセス命令を格納する。
以下の説明において、本実施形態では、説明の便宜上、第1のID管理部21にて生成されたトランザクションを第1のトランザクションと称する。また、第2のID管理部23にて生成されたトランザクションを第2のトランザクションと称する。さらに、第3のサブ制御部17にて生成されたトランザクションを第3のトランザクションと称する(以下の実施形態においても同様)。
第1のID管理部21は、第1のバッファ20に格納したアクセス命令を読み出す。第1のID管理部21は、読み出したアクセス命令にID(identification、識別子)を付与すると共に、主記憶装置3にアクセスするためのトランザクション(第1のトランザクション)を生成する。さらに、第1のID管理部21は、付与したIDとトランザクションとを記憶(記述)したIDリストを作成する。
第1のID管理部21は、生成したトランザクション(第1のトランザクション)を第1の制御部12を経由して第3の制御部14に送信する。
また、第1のID管理部21は、第3の制御部14が送信したリプライトランザクションを、第1の制御部12を経由して受信する。第1のID管理部21は、受信したリプライトランザクションに埋め込まれたIDを読み込むと共に、読み込んだIDと作成したIDリストとに基づいてリプライ結果(リプライデータを含む)を、リクエストリソース11が指定したリプライエリアに格納する。
図3は、第1の実施形態に係るI/O制御装置のうち、第2のサブ制御部16の構成を示すブロック図である。第2のサブ制御部16は、DMAコントローラ22、第2のID管理部23を有する。
DMAコントローラ22は、リクエストリソース11から送信されたDMA転送要求を、第1の制御部12を経由して受信する。
DMAコントローラ22は、受信したDMA転送要求に応じて、主記憶装置3にアクセスするアドレスとデータサイズを指定したトランザクションを生成する。DMAコントローラ22は、第2のID管理部23に生成したトランザクションを送信する。
第2のID管理部23は、DMAコントローラ22から送信されたトランザクションを受信する。第2のID管理部23は、受信したトランザクションにID(identification、識別子)を付与すると共に、主記憶装置3にアクセスするためのトランザクション(第2のトランザクション)を生成する。さらに、第2のID管理部23は、付与したIDとトランザクションとを記憶(記述)したIDリストを作成する。
第2のID管理部23は、生成したトランザクション(第2のトランザクション)を、第1の制御部12を経由して第3のサブ制御部17に送信する。
また、第2のID管理部23は、第4のサブ制御部18が送信したリプライトランザクションを、第1の制御部12を経由して受信する。第2のID管理部23は、受信したリプライトランザクションに埋め込まれたIDを読み込むと共に、読み込んだIDと作成したIDリストとに基づいてリプライ結果(リプライデータを含む)をリクエストリソース11が指定したリプライエリアに格納する。
尚、第1のID管理部21および第2のID管理部23が付与するIDは、トランザクション情報のヘッダデータの一部として埋め込めばよい。尚、一例として、トランザクション情報のヘッダデータの一部として埋め込む場合を示したが、トランザクション情報のヘッダデータに限らずトランザクション情報の未使用領域(エリア)にIDを埋め込んでもよい。
第2の制御部13は、第3のサブ制御部17、第4のサブ制御部18を有する。
第3のサブ制御部17は、第2のID管理部23が送信するトランザクション(第2のトランザクション)を格納する。さらに、第3のサブ制御部17は、格納したトランザクション(第2のトランザクション)を、主記憶装置3からのデータ転送に適したアクセス命令単位に変換したトランザクション(第3のトランザクション)を生成する(詳細については、後述する)。
第3のサブ制御部17は、生成したトランザクション(第3のトランザクション)を第3の制御部14に送信すると共に、第4のサブ制御部18にトランザクション情報を送信する。
第4のサブ制御部18は、第3のサブ制御部17から送信されたトランザクション情報を格納する。
また、第4のサブ制御部18は、第3の制御部14から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションを格納する。
第4のサブ制御部18は、格納したリプライトランザクションを第3のサブ制御部17から受信したトランザクション情報を基にアクセス命令単位に分割されたリプライトランザクションを結合することにより、リプライトランザクションを生成する(詳細については、後述する)。
第4のサブ制御部18は、生成したリプライトランザクションを、第1の制御部12を経由して第2のサブ制御部16に送信する。
第3の制御部14は、メモリコントローラ2とのI/Oインターフェース制御機能を有し、メモリコントローラ2とのトランザクションを送受信する機能を有する。
第3の制御部14は、第1のサブ制御部15または、第3のサブ制御部17から送信されたトランザクションを受信する。
図4は、第1の実施形態に係るI/O制御装置のうち、第3の制御部14の構成を示すブロック図である。第3の制御部14は、第2のバッファ24、第3のバッファ25、アクセス制御部26、送信バッファ27、受信バッファ28を有する。
第2のバッファ24は、第1のサブ制御部15から送信されたトランザクション(第1のトランザクション)を格納する。
第3のバッファ25は、第3のサブ制御部17から送信されたトランザクション(第3のトランザクション)を格納する。
アクセス制御部26は、第2のバッファ24および第3のバッファ25に格納されたトランザクションを読み出す。アクセス制御部26は、読み出したトランザクションを送信バッファ27に送信する。
より具体的に、アクセス制御部26は、第3のバッファ25に格納されたトランザクション(第3のトランザクション)を読み出す。アクセス制御部26は、読み出したトランザクション(第3のトランザクション)を送信バッファ27に送信する。
一方、アクセス制御部26は、第2のバッファ24に格納されたトランザクション(第1のトランザクション)に対してアクセス命令の種別を解析する。アクセス制御部26は、解析した結果、主記憶装置3へのアクセス命令がSYNC命令またはFLUSH命令であると判断した場合、命令発行抑止フラグを設定すると共に、送信バッファ27に当該アクセス命令を送信する。
アクセス制御部26は、命令発行抑止フラグを設定した場合、送信したトランザクション(第1のトランザクション)に対するリプライトランザクションを受信するまで待機する。より具体的に、アクセス制御部26は、命令発行抑止フラグを設定後、第2のバッファ24に格納されているトランザクション(第1のトランザクション)の読み出しを抑止する。
尚、アクセス制御部26は、命令発行抑止フラグを設定した場合であっても、第3のバッファ25に格納されたトランザクション(第3のトランザクション)を、抑止することなく読み出す。
送信バッファ27は、アクセス制御部26から送信されたトランザクションの消失を防止するために格納すると共に、トランザクションを格納した順序でメモリコントローラ2に送信する。
メモリコントローラ2は、送信バッファ27から送信されたトランザクションを受信すると共に、受信した主記憶装置3に対するトランザクションを実行する。メモリコントローラ2は、実行したリプライをリプライトランザクションとして、第3の制御部14に送信する。
第3の制御部14は、メモリコントローラ2からのリプライトランザクションを受信すると共に、受信したリプライトランザクションを受信バッファ28に入力する。
受信バッファ28は、メモリコントローラ2からのリプライトランザクションを受信すると共に、受信したリプライトランザクションを格納する。さらに、受信バッファ28は、格納したリプライトランザクションをアクセス制御部26に送信する。
尚、第1のID管理部21および第2のID管理部23によってトランザクションに埋め込まれたIDは、メモリコントローラ2によってリプライトランザクション情報のヘッダデータの一部としてリプライトランザクションに引き継がれる。
アクセス制御部26は、受信バッファ28からリプライトランザクションを受信する。アクセス制御部26は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。
アクセス制御部26は、転送方式を判別した結果、主記憶装置に対するアクセス命令(PIO方式)であると判別した場合、命令発行抑止フラグを設定した命令であるか否かを解析する。
より具体的に、アクセス制御部26は、解析の結果、リプライトランザクションが命令発行抑止フラグを設定した命令であると判別した場合、命令発行抑止フラグを解除する。さらに、アクセス制御部26は、リプライトランザクションを第1のサブ制御部15に送信する。
一方、アクセス制御部26は、転送方式を判別した結果、データ転送要求(DMA方式)であると判別した場合、リプライトランザクションを第4のサブ制御部18に送信する。
尚、アクセス制御部26は、命令発行抑止フラグを解除した場合、第2のバッファ24に格納されているトランザクションの読み出しを開始する。
尚、アクセス制御部26は、受信したリプライトランザクションの要求元が第1のサブ制御部15である場合、リプライトランザクションを第1のサブ制御部15に送信する。また、アクセス制御部26は、受信したリプライトランザクションの要求元が第3のサブ制御部17である場合、リプライトランザクションを第4のサブ制御部18に送信する。
このように本実施の形態に係るI/O制御装置10によれば、主記憶装置に対するアクセス命令の制御をメモリコントローラではなく、I/O制御装置10によって制御することにより、I/O装置全体の処理遅延を改善する。特に、本実施の形態によれば、SYNC命令およびFLUSH命令が発行された場合においても、SYNC命令およびFLUSH命令の後続命令のみを抑止することでI/O処理全体の処理時間の短縮を実現できる。
<第2の実施形態>
次に、上述した第1の実施形態に係るI/O制御装置10を基本とする第2の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明する。その際、上述した第1の実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。
図5は、本発明の第2の実施形態におけるI/O装置1aの構成を示すブロック図である。
図5において、I/O装置1aは、大別して、I/O制御装置30を有する。
より具体的に、I/O制御装置30は、I/Oプロセッサインタフェース(Interfac;以降、「I/F」と称する)制御部33、ユニット34、メモリコントローラI/F制御部35を有する。尚、I/OプロセッサI/F制御部33は、第1の実施形態における第1の制御部12に相当する。また、ユニット34は、第1の実施形態における第2の制御部13に相当する。
I/Oプロセッサ32は、ローカルメモリ31とのメモリインターフェースを有し、ローカルメモリ31へのアクセス制御機能を有する。尚、I/Oプロセッサ32は、第1の実施形態におけるリクエストリソース11に相当する。
ローカルメモリ31は、I/Oプロセッサ32からアクセス制御されることにより、I/O装置を制御するソフトウェア(FW)とチャンネルスロット5に実装されるチャンネルカードを制御するソフトウェア(FW)とを格納したワークエリアを有する。また、ローカルメモリ31は、主記憶装置3へのストアデータおよび主記憶装置3からのロードデータを一時的に格納する。さらに、ローカルメモリ31は、I/Oプロセッサ32が送信した主記憶装置3に対するアクセス命令のリプライエリアとして使用する。
I/OプロセッサI/F制御部33は、I/O制御装置30とI/Oプロセッサ32との間でトランザクションの送受信を制御する機能を有する。
より具体的に、I/OプロセッサI/F制御部33は、FW制御部36、DMA制御部37を有する。FW制御部36は、第1の実施形態における第1のサブ制御部15に相当する。また、DMA制御部37は、第1の実施形態における第2のサブ制御部16に相当する。
図6は、第2の実施形態に係るI/O制御装置のうち、FW制御部36の構成を示すブロック図である。FW制御部36は、命令発行用バッファ41、第1のID管理部21を有する。命令発行用バッファ41は、第1の実施形態における第1のバッファ20に相当する。
図7は、第2の実施形態に係るI/O制御装置のうち、DMA制御部37の構成を示すブロック図である。DMA制御部37は、DMAコントローラ22、第2のID管理部23を有する。
ユニット34は、インバウンド制御部38、アウトバウンド制御部39を有する。インバウンド制御部38は、第1の実施形態における第3のサブ制御部17に相当する。また、アウトバウンド制御部39は、第1の実施形態における第4のサブ制御部18に相当する。
メモリコントローラI/F制御部35は、トランザクション(transaction;以降、「TXN」と称する)制御部40を有する。メモリコントローラI/F制御部35は、メモリコントローラ2とのI/Oインターフェース制御機能を有し、メモリコントローラ2とのトランザクションを送受信する機能を有する。TXN制御部40は、第1の実施形態における第3の制御部14に相当する。
メモリコントローラI/F制御部35は、インバウンド制御部38またはFW制御部36からのトランザクションを受信すると共に、受信したトランザクションをTXN制御部40に入力する。
また、メモリコントローラI/F制御部35は、メモリコントローラ2から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションをTXN制御部40に入力する。
さらに、メモリコントローラI/F制御部35は、TXN制御部40にてリプライ確認されたリプライトランザクションを、FW制御部36またはアウトバウンド制御部39に送信する。
図8は、第2の実施形態に係るI/O制御装置のうち、TXN制御部40の構成を示すブロック図である。TXN制御部40は、FWリクエストバッファ42、インバウンドリクエストバッファ43、トランザクション(transaction;以降、「TXN」と称する)送受信制御部44、送信バッファ27、受信バッファ28を有する。
尚、FWリクエストバッファ42は、第1の実施形態における第2のバッファ24に相当する。また、インバウンドリクエストバッファ43は、第1の実施形態における第3のバッファ25に相当する。さらに、TXN送受信制御部44は、第1の実施形態におけるアクセス制御部26に相当する。
次に、本発明の第2の実施形態に係るより具体的なI/O制御装置の動作について説明する。
図9は、第2の実施形態のI/O制御装置が行う送信処理を示すフローチャートである。また、図10は、第2の実施形態のI/O制御装置が行う受信処理を示すフローチャートである。係るフローチャートに沿ってI/O制御装置の処理手順を説明する。
PIO方式において、I/Oプロセッサ32上で動作する制御ソフトウェア(FW)によって主記憶装置3に対してロード命令、ストア命令、SYNC命令(順序制御命令)、FLUSH命令(同期制御命令)等の複数のアクセス命令を実行する場合の動作について詳細に説明する。
I/Oプロセッサ32上で動作する制御ソフトウェア(FW)は、主記憶装置3に対するアクセス命令であるトランザクションをI/OプロセッサI/F制御部33に送信する。
I/OプロセッサI/F制御部33は、制御ソフトウェア(FW)から送信されたトランザクションを受信すると共に、受信したトランザクションのヘッダに格納された情報を基に転送方式を判別する。I/OプロセッサI/F制御部33は、転送方式を判別した結果、送信されたトランザクションをFW制御部36に入力する(ステップS1において「YES」)。
FW制御部36は、入力されたトランザクションを、命令発行用バッファ41に格納する。
第1のID管理部21は、命令発行用バッファ41に格納されたトランザクションを格納された順序で読み出す。第1のID管理部21は、読み出したトランザクションにIDを付与すると共に、主記憶装置3にアクセスするためのトランザクション(第1のトランザクション)を生成する。さらに、第1のID管理部21は、付与したIDとトランザクションとを記憶(記述)したIDリストを作成する。
第1のID管理部21は、生成したトランザクション(第1のトランザクション)を、メモリコントローラI/F制御部35に送信する(ステップS2)。
第1のID管理部21が付与したIDは、トランザクション情報のヘッダデータの一部として埋め込まれる。
メモリコントローラI/F制御部35は、トランザクション(第1のトランザクション)を受信すると共に、TXN制御部40に入力する。
TXN制御部40は、入力されたトランザクション(第1のトランザクション)を、FWリクエストバッファ42に格納する。TXN送受信制御部44は、FWリクエストバッファ42に格納された順序でトランザクション(第1のトランザクション)を読み出す。
TXN送受信制御部44は、読み出したトランザクション(第1のトランザクション)を解析する(ステップS5)。TXN送受信制御部44は、解析した結果、SYNC命令またはFLUSH命令であると判断した場合(ステップS6において「YES」)、命令発行抑止フラグを設定する(ステップS7)。
TXN送受信制御部44は、命令発行抑止フラグを設定後、送信バッファ27にトランザクション(第1のトランザクション)を送信する。
TXN送受信制御部44は、命令発行抑止フラグを設定した場合、送信したトランザクション(第1のトランザクション)に対するリプライトランザクションを、受信するまでFWリクエストバッファ42に格納されたトランザクション(第1のトランザクション)の読み出しを抑止する。
送信バッファ27は、トランザクション(第1のトランザクション)を格納すると共に、トランザクションが格納された順序でメモリコントローラI/F制御部35を、経由してメモリコントローラ2にトランザクション(第1のトランザクション)を送信する(ステップS8)。
次に、第2の実施形態のI/O制御装置が行う受信処理について、図10を参照して説明する。
メモリコントローラ2は、受信した主記憶装置3に対するトランザクション(第1のトランザクション)を実行する。メモリコントローラ2は、実行したリプライをリプライトランザクションとして、メモリコントローラI/F制御部35に送信する。
メモリコントローラ2は、トランザクション(第1のトランザクション)のヘッダ情報を、使用してリプライトランザクションのヘッダ情報の生成を行う。そのため、メモリコントローラ2は、トランザクション(第1のトランザクション)に埋め込まれているID情報も引き継ぐ。
メモリコントローラI/F制御部35は、リプライトランザクションを受信すると共に、TXN制御部40に入力する。
受信バッファ28は、TXN制御部40に入力したリプライトランザクションを格納する(ステップS21)。さらに、受信バッファ28は、格納したリプライトランザクションをTXN送受信制御部44に送信する。
TXN送受信制御部44は、受信バッファ28から送信されたリプライトランザクションを受信する。
TXN送受信制御部44は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。
TXN送受信制御部44は、転送方式を判別した結果、主記憶装置に対するアクセス命令(PIO方式)であると判別した場合(ステップS22において「YES」)、命令発行抑止フラグを設定した命令であるか解析する(ステップS23)。
TXN送受信制御部44は、解析した結果、命令発行抑止フラグを設定したトランザクションのリプライであると判別した場合(ステップS24において「YES」)、命令発行抑止フラグを解除する(ステップS25)。
TXN送受信制御部44は、命令発行抑止フラグを解除後、FW制御部36にリプライトランザクションをメモリコントローラI/F制御部35を経由して送信する。
一方、TXN送受信制御部44は、命令発行抑止フラグを設定したトランザクションのリプライでないと判別した場合(ステップS24において「NO」)、FW制御部36にリプライトランザクションを、メモリコントローラI/F制御部35を経由して送信する。
尚、TXN送受信制御部44は、命令発行抑止フラグを解除した場合、FWリクエストバッファ42に格納されているトランザクションの読み出しを開始する。
I/OプロセッサI/F制御部33は、TXN送受信制御部44から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションをFW制御部36に入力する。
第1のID管理部21は、FW制御部36に入力したリプライトランザクションを受信する。
第1のID管理部21は、リプライトランザクションに含まれるIDとトランザクション(第1のトランザクション)生成時に作成したIDリストとを照合する。第1のID管理部21は、IDリストを照合した結果、ローカルメモリ2に格納するリプライエリアを決定する(ステップS27)。第1のID管理部21は、決定したリプライエリアにI/Oプロセッサ32を経由してリプライトランザクションを送信する(ステップS28)。
I/Oプロセッサ32上で動作する制御ソフトウェア(FW)は、ローカルメモリ2内のリプライエリアを確認することにより、送信したトランザクションの結果を取得する。
次に、DMA方式において、I/Oプロセッサ32上で動作する制御ソフトウェア(FW)よってDMA転送要求を、DMAコントローラに送信する。DMAコントローラ22は、DMA転送要求を基に主記憶装置3に対してロード命令、ストア命令を実行する場合の動作について詳細に説明する。
さらに、第2の実施形態のI/O制御装置が行う送信処理について、図9を参照して説明する。
I/Oプロセッサ32上で動作する制御ソフトウェア(FW)は、DMA転送要求を送信する。
I/OプロセッサI/F制御部33は、制御ソフトウェア(FW)から送信されたDMA転送要求を受信すると共に、受信したDMA転送要求のヘッダに格納された情報を基に転送方式を判別する(ステップS1において「NO」)。I/OプロセッサI/F制御部33は、転送方式を判別した結果、DMA制御部37に入力する。
DMAコントローラ22は、DMA制御部37に入力したDMA転送要求を基に主記憶装置3に対するアクセスするためのアドレスとデータサイズを指定したトランザクションを生成する。より具体的に、一例として、トランザクションは、例えば、アドレス0000h、サイズ100h(256B)と指定することができる。尚、本実施形態では、説明の便宜上、簡単な数値を例に説明したが、これに限定されない。
DMAコントローラ22は、生成したトランザクションを第2のID管理部23に送信する。
第2のID管理部23は、DMAコントローラ22が生成したトランザクションを受信する。第2のID管理部23は、受信したトランザクションにIDを付与すると共に、主記憶装置3にアクセスするためのトランザクション(第2のトランザクション)を生成する(ステップS3)。また、第1のID管理機能23は、付与したIDとトランザクションとを記憶(記述)したIDリストを作成する。
第2のID管理部23は、生成したトランザクション(第2のトランザクション)を、I/OプロセッサI/F制御部33を経由してインバウンド制御部38に送信する。
インバウンド制御部38は、第2のID管理部23が送信するトランザクション(第2のトランザクション)を格納する。さらに、インバウンド制御部38は、格納したトランザクション(第2のトランザクション)を、主記憶装置3へのデータ転送に適したアクセス命令単位に変換したトランザクション(第3のトランザクション)を生成する(ステップS4)。
より具体的に、一例として、アクセス命令単位に変換したトランザクション(第3のトランザクション)は、例えば、アドレス0000h、サイズ100h(256B)と指定したトランザクション(第2のトランザクション)をアドレス0000h〜003Fh、サイズ40h(64B)、アドレス0040h〜007Fh、サイズ40h(64B)、サイズ0080h〜00BFh、サイズ40h(64B)、アドレス00C0h〜00FFh、サイズ40h(64B)となるように分割することができる。尚、本実施形態では、説明の便宜上、簡単な数値を例に説明したが、これに限定されない。
インバウンド制御部38は、生成したトランザクション(第3のトランザクション)を、メモリコントローラI/F制御部35に送信すると共に、アウトバウンド制御部39にトランザクション情報として送信する。
アウトバウンド制御部39は、インバウンド制御部38から送信されたトランザクション情報を格納する。
メモリコントローラI/F制御部35は、インバウンド制御部38からのトランザクション(第3のトランザクション)を受信すると共に、受信したトランザクション(第3のトランザクション)をTXN制御部40に入力する。
インバウンドリクエストバッファ43は、TXN制御部40に入力したトランザクション(第3のトランザクション)を格納する。
TXN送受信制御部44は、インバウンドリクエストバッファ43に格納されたトランザクション(第3のトランザクション)を読み出す。
TXN送受信制御部44は、読み出したトランザクション(第3のトランザクション)を送信バッファ27に送信する。
送信バッファ27は、TXN送受信制御部44から送信されたトランザクションの消失を防止するために格納すると共に、トランザクションが格納された順序でメモリコントローラI/F制御部35を、経由してメモリコントローラ2にトランザクショを送信する(ステップS8)。
次に、第2の実施形態のI/O制御装置が行う受信処理について、図10を参照して説明する。
メモリコントローラ2は、受信した主記憶装置3に対するトランザクション(第3のトランザクション)を実行する。メモリコントローラ2は、実行したリプライをリプライトランザクションとして、メモリコントローラI/F制御部35に送信する。
メモリコントローラ2は、トランザクション(第3のトランザクション)のヘッダ情報を使用してリプライトランザクションのヘッダ情報の生成を行う。そのため、メモリコントローラ2は、トランザクション(第3のトランザクション)に埋め込まれているID情報も引き継ぐ。
メモリコントローラI/F制御部35は、リプライトランザクションを受信すると共に、TXN制御部40に入力する。
受信バッファ28は、TXN制御部40に入力されたリプライトランザクションを格納する(ステップS21)。さらに、受信バッファ28は、格納したリプライトランザクションをTXN送受信制御部44に送信する。
TXN送受信制御部44は、受信バッファ28から送信されたリプライトランザクションを受信する。
TXN送受信制御部44は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。
TXN送受信制御部44は、転送方式を判別した結果、主記憶装置に対するデータ転送要求(DMA方式)であると判別した場合、アウトバウンド制御部39にリプライトランザクションを、メモリコントローラI/F制御部35を経由して送信する(ステップS22において「NO」)。
アウトバウンド制御部39は、メモリコントローラI/F制御部35から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションを格納する。
メモリコントローラ2は、インバウンド制御部38で分割された複数のトランザクションに対して、複数のリプライトランザクションを送信する。このため、アウトバウンド制御部39は、インバウンド制御部38から受信したトランザクション情報を基に分割した複数のリプライトランザクションを、全て受信するように待機する。アウトバウンド制御部39は、インバウンド制御部38から受信したトランザクション情報を基に、アクセス命令単位に分割されたリプライトランザクションを結合したリプライトランザクションを生成する(ステップS26)。
アウトバウンド制御部39は、生成したリプライトランザクションを、I/OプロセッサI/F制御部33に送信する。
I/OプロセッサI/F制御部33は、リプライトランザクションを受信すると共に、DMA制御部37に入力する。
第2のID管理部23は、DMA制御部37に入力したリプライトランザクションに含まれるIDとトランザクション(第2のトランザクション)生成時に作成したIDリストとを照合する。第2のID管理部23は、IDリストを照合した結果、ローカルメモリ2に格納するリプライエリアを決定する(ステップS27)。第2のID管理部23は、決定したリプライエリアにI/Oプロセッサを経由してリプライトランザクションを送信すると共に、制御ソフトウェア(FW)にデータ転送が完了したことを通知する(ステップS28)。
このように本実施の形態に係るI/O制御装置30によれば、第1の実施形態において説明した効果を享受できると共に、さらに、第2の実施形態にて説明したI/O制御装置をI/O装置を搭載可能な電子機器等に利用して実現することができる。
(第2の実施形態の変形例)
尚、上述した第2の実施形態に基づいて、以下に説明する変形例も実現可能である。
図11は、本発明の第2の実施形態の変形例におけるI/O装置1bの構成を示すブロック図である。
図11において、I/O装置1bは、大別して、I/O制御装置45を有する。
即ち、第2の実施形態の変形例において、I/O制御装置45は、図11に示す如くスイッチI/F制御部46を、さらに、有する。これにより、チャンネルカードが主記憶装置3に対するトランザクションを発行する機能を有する場合、I/O制御装置45は、I/Oプロセッサ32上で動作する制御ソフトウェア(FW)によってチャンネルカードが発行したトランザクションを制御することができる。
チャンネルスロット5は、SCSI(Small Computer System Interface)カードやLANカード等の各種チャンネルカードを搭載することにより、ディスク装置やLAN等のI/Oデバイスを接続することができる。
スイッチ47は、I/O制御装置45、I/Oプロセッサ32、チャンネルスロット5との間でトランザクションを制御する機能を有する。
スイッチI/F制御部46は、スイッチ47のI/Oインターフェース機能を有し、スイッチ47とインバウンド制御部38およびアウトバウンド制御部39との間でトランザクションの送受信を制御する。
より具体的に、一例として、I/Oプロセッサ32上で動作する制御ソフトウェア(FW)は、データ転送要求をチャンネルカードに送信する。チャンネルカードは、主記憶装置3に対してアクセスするためのトランザクションを生成すると共に、生成したトランザクションをスイッチ47に送信する。
スイッチ47は、スイッチI/F制御部46にトランザクションを送信する。
スイッチI/F制御部46は、スイッチ47から送信されたトランザクションを受信する。スイッチI/F制御部46は、受信したトランザクションにIDを付与すると共に、主記憶装置3にアクセスするためのトランザクションを生成する。さらに、スイッチI/F制御部46は、生成したトランザクションをインバウンド制御部38に送信する。
また、スイッチI/F制御部46は、アウトバウンド制御部39から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションをスイッチ47を経由して、チャンネルカードに送信する。
スイッチ47は、主記憶装置3からのリプライトランザクションをチャンネルスロット5に搭載されたチャンネルカードに送信する。チャンネルスロット5に搭載されたチャンネルカードは、リプライトランザクションを受信する。尚、説明の便宜上、上述した構成を例に説明したが、これに限定されない。
このように本実施の形態の変形例に係るI/O制御装置45によれば、第1および第2の実施形態において説明した効果を享受できると共に、さらに、スイッチI/F制御部46を設けることで、I/Oデバイスから送信された主記憶装置3に対するアクセス命令の制御をメモリコントローラではなく、I/O制御装置45によって制御することができる。このため、I/O制御装置45は、I/O処理全体の処理時間の短縮を実現できる。
<第3の実施形態>
次に、上述した第2の実施形態の変形例に係るI/O制御装置45を基本とする第3の実施形態について説明する。以下の説明においては、本実施形態に係る特徴的な部分を中心に説明する。その際、上述した各実施形態と同様な構成については、同一の参照番号を付すことにより、重複する説明は省略する。
以下の説明において、本実施形態では、説明の便宜上、I/Oプロセッサ32上で動作する4つの制御ソフトウェアを識別するために、FW(a)、FW(b)、FW(c)、FW(d)と称する。また、FW(a)、FW(b)、FW(c)、FW(d)のそれぞれに対応して、動作する各部名称の参照番号末尾に(a)、(b)、(c)、(d)を付与することによりそれぞれの制御ソフトウェアに対応する各部名称を識別する。
本実施形態では、第2の実施形態の変形例において説明したI/O制御装置45に、I/Oプロセッサ32上で動作する複数の制御ソフトウェア(FW(a)、FW(b)、FW(c)、FW(d))によって、主記憶装置に対してアクセス命令を実行する場合の動作について詳細に説明する。
図12は、本発明の第3の実施形態におけるI/O装置1cの構成を示すブロック図である。
図12において、I/O装置1cは、大別して、I/O制御装置50を有する。
図12において、I/O制御装置50は、I/OプロセッサI/F制御部51、ユニット34、メモリコントローラI/F制御部52、スイッチI/F制御部46を有する。
尚、ユニット34は、制御ソフトウェア(FW(a)、FW(b)、FW(c)、FW(d))と対応した同数のユニット34を有する。
I/OプロセッサI/F制御部51は、FW制御部53、DMA制御部54を有する。
図13は、第3の実施形態に係るI/O制御装置のうち、FW制御部53の構成を示すブロック図である。
FW制御部53は、制御ソフトウェア(FW(a)、FW(b)、FW(c)、FW(d))と対応した同数の第1のID管理部21および命令発行用バッファ41を有する。
図14は、第3の実施形態に係るI/O制御装置のうち、DMA制御部54の構成を示すブロック図である。
DMA制御部54は、制御ソフトウェア(FW(a)、FW(b)、FW(c)、FW(d))と対応した同数のDMAコントローラ22および第2のID管理部23を有する。
メモリコントローラI/F制御部52は、TXN制御部55を有する。
図15は、第3の実施形態に係るI/O制御装置のうち、TXN制御部55の構成を示すブロック図である。
TXN制御部55は、制御ソフトウェア(FW(a)、FW(b)、FW(c)、FW(d))と対応した同数のFWリクエストバッファ42、インバウンドリクエストバッファ43、TXN送受信制御部44を有する。
さらに、TXN制御部55は、複数のTXN送受信制御部44と接続された送信バッファ27と受信バッファ28とを有する。
次に、本発明の第3の実施形態に係るより具体的なI/O制御装置の動作について説明する。
PIO方式において、I/Oプロセッサ32上で動作する4つの制御ソフトウェア(FW(a)、FW(b)、FW(c)、FW(d))によって主記憶装置3に対するロード命令、SYNC命令(順序制御命令)等の複数の命令を実行する場合の動作について詳細に説明する。
図16は、第3の実施形態に係るI/O制御装置のうち、4つの制御ソフトウェア(FW(a)、FW(b)、FW(c)、FW(d))によって主記憶装置3に対するアクセス命令の処理を実行した場合の状態遷移を示すシーケンス図である。
FW(a)は、命令(a1)、SYNC命令(a2)、命令(a3)の順序でI/OプロセッサI/F制御部51にトランザクションを送信する。
I/OプロセッサI/F制御部51は、命令(a1)、SYNC命令(a2)、命令(a3)を受信すると共に、転送方式を判別し、FW制御部53に入力する。
FW制御部53は、入力した順序で命令(a1)、SYNC命令(a2)、命令(a3)を命令発行用バッファ41(a)に格納する。
第1のID管理部21(a)は、命令発行用バッファ41(a)に格納されたトランザクションを、格納された順序で読み出す。第1のID管理部21(a)は、読み出した命令(a1)、SYNC命令(a2)、命令(a3)にIDを付与すると共に、I/OプロセッサI/F制御部51を経由してメモリコントローラI/F制御部52に送信する。さらに、第1のID管理部21(a)は、付与したIDとトランザクションとを記憶(記述)したIDリスト(a)を作成する。
メモリコントローラI/F制御部52は、IDを付与された命令(a1)、SYNC命令(a2)、命令(a3)を受信すると共に、TXN制御部55に入力する。
TXN制御部55は、入力された順序で命令(a1)、SYNC命令(a2)、命令(a3)をFWリクエストバッファ42(a)に格納する。
TXN送受信制御部44(a)は、FWリクエストバッファ42(a)に格納された命令(a1)、SYNC命令(a2)、命令(a3)を格納された順序で読み出すと共に、読み出した命令を解析する。
TXN送受信制御部44(a)は、命令(a1)を送信バッファ27に送信する。
送信バッファ27は、命令(a1)を格納する。
次に、TXN送受信制御部44(a)は、SYNC命令(a2)を解析した結果、SYNC命令であると判断したため、命令発行抑止フラグを設定すると共に、送信バッファ27にSYNC命令(a2)を送信する。
送信バッファ27は、SYNC命令(a2)を格納する。
TXN送受信制御部44(a)は、命令発行抑止フラグが設定されているため、SYNC命令(a2)に対するリプライが返却されるまで、FWリクエストバッファ42(a)から命令(a3)を読み出すことを抑止する。
次に、FW(b)は、命令(b1)、命令(b2)、命令(b3)の順序でI/OプロセッサI/F制御部51に命令を送信する。
I/OプロセッサI/F制御部51は、命令(b1)、命令(b2)、命令(b3)を受信すると共に、転送方式を判別し、FW制御部53に入力する。
FW制御部53は、入力した順序で命令(b1)、命令(b2)、命令(b3)を
命令発行用バッファ41(b)に格納する。
第1のID管理部21(b)は、命令発行用バッファ41(b)に格納されたトランザクションを格納された順序で読み出す。第1のID管理部21(b)は、読み出した命令(b1)、命令(b2)、命令(b3)にIDを付与すると共に、I/OプロセッサI/F制御部51を経由してメモリコントローラI/F制御部52に送信する。さらに、第1のID管理部21(b)は、付与したIDとトランザクションとを記憶(記述)したIDリスト(b)を作成する。
メモリコントローラI/F制御部52は、IDを付与された命令(b1)、命令(b2)、命令(b3)を受信すると共に、TXN制御部55に入力する。
TXN制御部55は、入力された命令(b1)、命令(b2)、命令(b3)をFWリクエストバッファ42(b)に格納する。
TXN送受信制御部44(b)は、FWリクエストバッファ42(b)に格納された命令(b1)、命令(b2)、命令(b3)を格納された順序で読み出すと共に、読み出した命令を解析する。
TXN送受信制御部44(b)は、命令(b1)、命令(b2)、命令(b3)の順序で、これらの命令を、送信バッファ27に送信する。
送信バッファ27は、命令(b1)、命令(b2)、命令(b3)をTXN送受信制御部44(b)から送信された順序で格納する。
次に、FW(c)は、命令(c1)、命令(c2)、命令(c3)の順序でI/OプロセッサI/F制御部51に送信する。
I/OプロセッサI/F制御部51は、命令(c1)、命令(c2)、命令(c3)を受信すると共に、転送方式を判別し、FW制御部53に入力する。
FW制御部53は、入力した命令(c1)、命令(c2)、命令(c3)を命令発行用バッファ41(c)に格納する。
第1のID管理部21(c)は、命令発行用バッファ41(c)に格納されたトランザクションを格納された順序で読み出す。第1のID管理部21(c)は、読み出した命令(c1)、命令(c2)、命令(c3)にIDを付与すると共に、I/OプロセッサI/F制御部51を経由してメモリコントローラI/F制御部52に送信する。さらに、第1のID管理部21(c)は、付与したIDとトランザクションとを記憶(記述)したIDリスト(c)を作成する。
メモリコントローラI/F制御部52は、IDを付与された命令(c1)、命令(c2)、命令(c3)を受信すると共に、TXN制御部55に入力する。
TXN制御部55は、入力された順序で命令(c1)、命令(c2)、命令(c3)をFWリクエストバッファ42(c)に格納する。
TXN送受信制御部44(c)は、FWリクエストバッファ42(c)に格納された命令(c1)、命令(c2)、命令(c3)を格納された順序で読み出すと共に、読み出した命令を解析する。
TXN送受信制御部44(c)は、命令(c1)、命令(c2)、命令(c3)の順序で、これらの命令を、送信バッファ27に送信する。
送信バッファ27は、命令(c1)、命令(c2)、命令(c3)をTXN送受信制御部44(c)から送信された順序で格納する。
次に、FW(d)は、命令(d1)、命令(d2)、命令(d3)の順序でI/OプロセッサI/F制御部51に送信する。
I/OプロセッサI/F制御部51は、命令(d1)、命令(d2)、命令(d3)を受信すると共に、転送方式を判別し、FW制御部53に入力する。
FW制御部53は、入力した順序で命令(d1)、命令(d2)、命令(d3)を命令発行用バッファ41(d)に格納する。
第1のID管理部21(d)は、命令発行用バッファ41(d)に格納されたトランザクションを格納された順序で読み出す。第1のID管理部21(d)は、読み出した命令(d1)、命令(d2)、命令(d3)にIDを付与すると共に、I/OプロセッサI/F制御部51を経由してメモリコントローラI/F制御部52に送信する。さらに、第1のID管理部21(d)は、付与したIDとトランザクションとを記憶(記述)したIDリスト(d)を作成する。
メモリコントローラI/F制御部52は、IDを付与された命令(d1)、命令(d2)、命令(d3)を受信すると共に、TXN制御部55に入力する。
TXN制御部55は、入力された命令(d1)、命令(d2)、命令(d3)をFWリクエストバッファ42(d)に格納する。
TXN送受信制御部44(d)は、FWリクエストバッファ42(d)に格納された命令(d1)、命令(d2)、命令(d3)を格納された順序で読み出すと共に、読み出した命令を解析する。
TXN送受信制御部44(d)は、命令(d1)、命令(d2)、命令(d3)の順序で、これらの命令を、送信バッファ27に送信する。
送信バッファ27は、命令(d1)、命令(d2)、命令(d3)をTXN送受信制御部44(d)から送信された順序で格納する。
送信バッファ27は、命令を格納した順序でメモリコントローラI/F制御部52を経由してメモリコントローラ2に送信する。
次に、第3の実施形態のI/O制御装置が行う受信処理について説明する。
メモリコントローラ2は、受信した命令を受信した順序で実行し、リプライのトランザクションをメモリコントローラI/F制御部52に送信する。
メモリコントローラI/F制御部52は、リプライトランザクションを受信すると共に、TXN制御部55に入力する。
受信バッファ28は、TXN制御部55に入力したリプライトランザクションを格納する。さらに、受信バッファ28は、格納したリプライトランザクションをTXN送受信制御部44(a)乃至TXN送受信制御部44(d)に送信する。TXN送受信制御部44(a)乃至TXN送受信制御部44(d)は、受信バッファ28からリプライトランザクションを受信する。
より具体的に、TXN送受信制御部44(a)は、FW(a)が送信した命令(a1)およびSYNC命令(a2)に対するリプライトランザクションを受信する。また、TXN送受信制御部44(b)は、FW(b)が送信した命令(b1)乃至命令(b3)に対するリプライトランザクションを受信する。TXN送受信制御部44(c)は、FW(c)が発行した命令(c1)乃至命令(c3)に対するリプライトランザクションを受信する。TXN送受信制御部44(d)は、FW(d)が送信した命令(d1)乃至命令(d3)に対するリプライトランザクションを受信する。
TXN送受信制御部44(a)乃至TXN送受信制御部44(d)は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。TXN送受信制御部44(a)乃至TXN送受信制御部44(d)は、転送方式を判別した結果、主記憶装置に対するアクセス命令(PIO方式)であると判別した場合、命令発行抑止フラグを設定した命令であるか解析する。
より具体的に、TXN送受信制御部44(a)は、命令(a1)およびSYNC命令(a2)に対するリプライトランザクションを受信した際、転送方式を判別する。TXN送受信制御部44(a)は、転送方式を判別した結果、主記憶装置に対するアクセス命令(PIO方式)であると判別した場合、命令発行抑止フラグを設定した命令であるか解析する。TXN送受信制御部44(a)は、解析した結果、SYNC命令(a2)に対するリプライトランザクションについて命令発行抑止フラグを設定したトランザクションのリプライであると判別する。TXN送受信制御部44(a)は、命令発行抑止フラグを解除する。
また、TXN送受信制御部44(a)乃至TXN送受信制御部44(d)は、受信したリプライトランザクションの転送方式を判別結果に応じて、FW制御部53およびDMA制御部54に送信する。
より具体的に、TXN送受信制御部44は、FW制御部53から送信されたトランザクションに対するリプライトランザクションは、FW制御部53に送信する。さらに、TXN送受信制御部44は、DMA制御部54から送信されたトランザクションに対するリプライトランザクションは、アウトバウンド制御部15を経由してDMA制御部54に送信する。
尚、TXN送受信制御部44(a)は、命令発行抑止フラグを解除後、FWリクエストバッファ42(a)に格納されている命令(a3)を読み出すと共に、送信バッファ27に送信する。
TXN送受信制御部44から送信されたリプライトランザクションは、I/OプロセッサI/F制御部51を、経由してFW制御部53に入力する。
尚、TXN送受信制御部44(a)から送信されたリプライトランザクションは、第1のID管理部21(a)に入力する。TXN送受信制御部44(b)から送信されたリプライトランザクションは、第1のID管理部21(b)に入力する。TXN送受信制御部44(c)から送信されたリプライトランザクションは、第1のID管理部21(c)に入力する。TXN送受信制御部44(d)から送信されたリプライトランザクションは、第1のID管理部21(d)に入力する。
このように、異なるリクエストリソース(FW(a)、FW(b)、FW(c)、FW(d))が送信した主記憶装置に対するアクセス命令((b1)〜(d1))が、他のリクエストリソースが発行したSYNC命令(a2)の影響を受けることなく、実行可能となる。
次に、本発明の第3の実施形態に係るより具体的なI/O制御装置の動作について説明する。
PIO方式およびDMA方式を組み合わせて行う場合において、I/Oプロセッサ32上で動作する制御ソフトウェア(FW(a))によって主記憶装置に対するロード命令、SYNC命令(順序制御命令)等の複数の命令を実行する場合の動作について詳細に説明する。
図17は、第3の実施形態に係るI/O制御装置のうち、制御ソフトウェア(FW(a))によってPIO方式およびDMA方式を組み合わせて、主記憶装置に対するアクセス命令の処理を実行した場合の状態遷移を示すシーケンス図である。
FW(a)は、I/OプロセッサI/F制御部51に主記憶装置3に対するアクセス命令を送信する。尚、FW(a)は、PIO方式を実行するためのアクセス命令である命令(a1)、SYNC命令(a2)、命令(a3)の順序で送信する。次に、FW(a)は、DMA方式を実行するために、DMA転送要求であるDMAアクセス命令(B1)を送信する。
I/OプロセッサI/F制御部51は、受信した命令のヘッダに格納された情報を基に転送方式を判別した結果、命令(a1)、SYNC命令(a2)、命令(a3)を、FW制御部53に入力する。また、I/OプロセッサI/F制御部51は、DMAアクセス命令(B1)を、DMA制御部54に入力する。
尚、FW(a)が送信した命令(a1)、SYNC命令(a2)、命令(a3)に関する動作は、上述した通りの動作を実行するため、以下の説明では、簡略に表現する。
DMAコントローラ22(a)は、I/OプロセッサI/F制御部51から入力されたDMAアクセス命令(B1)に応じて、主記憶装置3にアクセスするアドレスとデータサイズとを指定したトランザクションを生成する。DMAコントローラ22(a)は、第2のID管理部23(a)に生成したトランザクションを送信する。
第2のID管理部23(a)は、DMAコントローラ22(a)から送信されたトランザクションを受信する。第2のID管理部23(a)は、受信したトランザクションにIDを付与すると共に、I/OプロセッサI/F制御部51を経由してインバウンド制御部38(a)に送信する。さらに、第2のID管理部23(a)は、付与したIDとトランザクションとを記憶(記述)したIDリスト(a)を作成する。
インバウンド制御部38(a)は、第2のID管理部23(a)が送信したトランザクションを格納する。さらに、インバウンド制御部38(a)は、格納したトランザクションを主記憶装置3へのデータ転送に適したアクセス命令単位に変換した第3のトランザクション(命令(b1)、命令(b2)、命令(b3))を生成する。
インバウンド制御部38(a)は、生成したトランザクションを命令(b1)、命令(b2)、命令(b3)の順序でメモリコントローラI/F制御部52を経由してTXN制御部55に送信すると共に、アウトバウンド制御部39(a)に第3のトランザクションをトランザクション情報として送信する。
アウトバウンド制御部39(a)は、インバウンド制御部38(a)から送信されたトランザクション情報を格納する。
インバウンドリクエストバッファ43(a)は、インバウンド制御部38(a)から送信された順序でトランザクション(命令(b1)、命令(b2)、命令(b3))を格納する。
TXN送受信制御部44(a)は、インバウンドリクエストバッファ43(a)に格納された順序でトランザクション(命令(b1)、命令(b2)、命令(b3))を読み出す。TXN送受信制御部44(a)は、読み出したトランザクションを解析すると共に、トランザクションを送信バッファ27に送信する。
送信バッファ27は、TXN送受信制御部44(a)から送信されたトランザクション(命令(b1)、命令(b2)、命令(b3))を送信された順序で格納する。
TXN送受信制御部44(a)は、SYNC命令(a2)を送信した場合であっても、先行する命令が完了することを待機することなく、後続の命令(b1)乃至命令(b3)を続けて送信することができる。
送信バッファ27は、命令(a1)、SYNC命令(a2)、命令(b1)、命令(b2)、命令(b3)を格納した順序でメモリコントローラI/F制御部52を経由してメモリコントローラ2に命令を送信する。
次に、第3の実施形態のI/O制御装置が行う受信処理について説明する。
メモリコントローラ2は、受信した命令を受信した順序で実行し、リプライのトランザクションをメモリコントローラI/F制御部52に送信する。
メモリコントローラI/F制御部52は、リプライトランザクションを受信すると共に、TXN制御部55に入力する。
受信バッファ28は、TXN制御部55から入力されたリプライトランザクションを格納する。さらに、受信バッファ28は、格納したリプライトランザクションをTXN送受信制御部44(a)に送信する。
TXN送受信制御部44(a)は、受信バッファ28からリプライトランザクションを受信する。
TXN送受信制御部44は、受信したリプライトランザクションのヘッダに格納された情報を基に転送方式を判別する。
TXN送受信制御部44(a)は、転送方式を判別した結果、主記憶装置に対するデータ転送要求(DMA方式)であると判別した場合、メモリコントローラI/F制御部52を、経由してアウトバウンド制御部39(a)に送信する。
アウトバウンド制御部39(a)は、メモリコントローラI/F制御部52から送信されたリプライトランザクションを受信すると共に、受信したリプライトランザクションを格納する。
メモリコントローラ2は、インバウンド制御部38(a)で分割された複数のトランザクション(命令(b1)、命令(b2)、命令(b3))に対し、複数のリプライトランザクションを送信する。このため、アウトバウンド制御部39(a)は、格納したリプライトランザクションをインバウンド制御部38(a)から受信したトランザクション情報を基に、分割された複数のリプライトランザクションを全て受信するように待機する。アウトバウンド制御部39(a)は、インバウンド制御部38(a)から受信したトランザクション情報を基に、アクセス命令単位に分割されたリプライトランザクションを結合しリプライトランザクション(リプライ(B1))を生成する。
アウトバウンド制御部39(a)は、生成したリプライトランザクションを、I/OプロセッサI/F制御部51に送信する。
I/OプロセッサI/F制御部51は、リプライトランザクションを受信すると共に、DMA制御部54に入力する。
尚、説明の便宜上、SYNC命令及びロード命令を例に説明したが、この場合に限らずFLUSH命令やストア命令など他の命令であってもよい。
尚、本実施形態に係るI/O制御装置は、SYNC命令またはFLUSH命令を送信したリクエストリソースに対し、後続の命令について読み出しを抑止したが、これに限らずI/O制御装置は、SYNC命令またはFLUSH命令が発行された場合、全てのリクエストリソースが発行した命令に対して、読み出しを抑止するように設定してもよい。
このように本実施の形態に係るI/O制御装置50によれば、各実施形態において説明した効果を享受できると共に、さらに、複数のリクエストリソース(FW(a)、FW(b)、FW(c)、FW(d))が発行する主記憶装置3に対する複数のアクセス命令の制御をメモリコントローラではなく、I/O制御装置50によって制御することにより、さらに、I/O装置全体の処理遅延を改善する。特に、本実施の形態によれば、SYNC命令およびFLUSH命令が発行された場合においても、SYNC命令およびFLUSH命令を発行したリクエストリソースだけの後続命令を抑止することで、I/O処理全体の処理時間をさらに短縮することが実現できる。また、I/0制御装置50によれば、抑止する対象を変更することで、複数の主記憶装置に対するアクセスの制御方法を確立できる。
尚、上述した各実施形態に説明した本発明は、説明の便宜上、メモリコントローラ2に対し、複数のI/O装置を有する場合について明記していないが、複数のI/O装置を有する場合においても、それぞれのI/O装置に設けたI/O制御装置において、SYNC命令およびFLUSH命令を発行したリクエストリソースだけの後続命令を抑止することで、I/O処理全体の処理時間をさらに短縮することができる。
尚、上述した各実施形態およびその変形例の一部又は全部は、以下の付記のようにも記載されうる。しかしながら、上述した実施形態及びその変形例により例示的に説明した本発明は、以下には限らない。即ち、
(付記1)
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、第1のトランザクションを生成する一方、転送指示命令だと判別した場合には、第2のトランザクションを生成する第1の制御部と、
前記第2のトランザクションが生成された場合に、前記第2のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第3のトランザクションを生成する第2の制御部と、
前記第1のトランザクションと前記第3のトランザクションとが生成された場合に、該生成された第1及び第3のトランザクションをトランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信する第3の制御部と、
を備えることを特徴とするI/O制御装置。
(付記2)
前記第1の制御部は、
前記命令が前記アクセス命令だと判別した場合には、該アクセス命令を基に前記第1のトランザクションを生成する第1のサブ制御部と、
前記命令が前記転送指示命令だと判別した場合には、該転送指示命令を基に前記第2のトランザクションを生成する第2のサブ制御部と、
を含むことを特徴とした付記1に記載のI/O制御装置。
(付記3)
前記第1のサブ制御部は、
前記アクセス命令を格納する第1のバッファと、
前記第1のバッファから読み出した前記アクセス命令に識別子を付与することにより、前記第1のトランザクションを生成し、前記識別子と前記識別子に対応した該第1のトランザクションとを記述したリストを含むことを特徴した付記2に記載のI/O制御装置。
(付記4)
前記第2のサブ制御部は、
前記転送指示命令を基に前記主記憶装置にアクセスするアドレスとデータサイズとを指定したトランザクションを生成するDMAコントローラと、
前記DMAコントローラによって生成された該トランザクションに前記識別子を付与することにより、前記第2のトランザクションを生成し、前記識別子と前記識別子に対応した該第2のトランザクションとを記述したリストを含むことを特徴した付記2または付記3に記載のI/O制御装置。
(付記5)
前記第2の制御部は、
前記第2のトランザクションを基にデータ転送に適したアドレスとデータサイズとに分割した前記第3のトランザクションを生成する第3のサブ制御部と、
前記第3のトランザクションに対するリプライトランザクションを格納する第4のサブ制御部とを備え、
前記第3のサブ制御部は、生成した前記第3のトランザクションをトランザクション情報として前記第4のサブ制御部に出力し、
前記第4のサブ制御部は、格納した前記リプライトランザクションを前記トランザクション情報を基に合成することを特徴とする付記1に記載のI/O制御装置。
(付記6)
前記第3の制御部は、
前記第1のトランザクションを格納する第2のバッファと、
前記第3のトランザクションを格納する第3のバッファと、
前記第2のバッファから読み出した前記第1のトランザクションと前記第3のバッファから読み出した前記第3のトランザクションとを送信するアクセス制御部と、
前記第1のトランザクションと前記第3のトランザクションとを格納し、格納したときの順序と同じ順序で前記メモリコントローラに送信する送信バッファと、
前記メモリコントローラから送信された前記リプライトランザクションを格納し、格納したときの順序と同じ順序で前記アクセス制御部に送信する受信バッファと、
を含むことを特徴とする付記1に記載のI/O制御装置。
(付記7)
前記アクセス制御部は、
前記第2のバッファから読み出した前記第1のトランザクションを前記アクセス命令の種別に基づいて解析し、解析した結果、前記主記憶装置に対するアクセスを抑止する命令であった場合には、フラグを設定すると共に、その命令に対する前記リプライトランザクションを受信するまで、前記第2のバッファから後続の前記第1のトランザクションの読出しを抑止することを特徴とする付記6に記載のI/O制御装置。
(付記8)
前記アクセス制御部は、
前記フラグを設定した場合に、その前記フラグを設定した前記第1のトランザクションに対する前記リプライトランザクションを取得するのに応じて、前記アクセス制御部に対して設定されていた前記フラグを解除することを特徴とする付記6または付記7に記載のI/O制御装置。
(付記9)
チャンネルスロットに接続されたI/Oデバイスが発行したトランザクションを制御するスイッチI/F制御部をさらに備えることを特徴とする付記1乃至付記8の何れかに記載のI/O制御装置。
(付記10)
前記I/O制御装置は、
複数の前記アクセスリソースから主記憶装置に対する命令が発行された場合に、前記アクセスリソース毎に前記第1の制御部と、前記第2の制御部と、前記第3の制御部とを備えることを特徴とする付記1乃至付記9の何れかに記載のI/O制御装置。
(付記11)
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、第1のトランザクションを生成し、一方で、転送指示命令だと判別した場合には、第2のトランザクションを生成し、前記第2のトランザクションが生成された場合に、前記第2のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第3のトランザクションを生成し、前記第1のトランザクションと前記第3のトランザクションとが生成された場合に、トランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信することを特徴とするI/O制御方法。
(付記12)
電子機器上で動作するI/O制御のためのコンピュータ・プログラムであって、そのコンピュータ・プログラムにより、
アクセスリソースが発行する主記憶装置に対する命令の種別を判別し、判別した結果、アクセス命令だと判別した場合には、第1のトランザクションを生成し、一方で、転送指示命令だと判別した場合には、第2のトランザクションを生成し、前記第2のトランザクションが生成された場合に、前記第2のトランザクションを基にデータ転送に適したアクセス命令単位に分割した第3のトランザクションを生成し、前記第1のトランザクションと前記第3のトランザクションとが生成された場合に、トランザクション毎に格納し、格納したときの順序と同じ順序でメモリコントローラに送信する機能をコンピュータに実現させることを特徴とするコンピュータ・プログラム。