(57)【要約】【課題】ライトバッファに一時的に格納しているデータをマスタが必要とするとき、ライトバッファからマスタに直接データを転送することで高速化を図っているが、インターリーブ対応のライトバッファからリードする方式については考慮されていない。【解決手段】マスタＭｉ（ｉ＝１，２，３）毎の複数のコマンドバッファＣｉと、マスタ毎のインターリーブ対応のライトバッファＷ２と、各コマンドバッファからのライトコマンドを調停するライトコマンド調停回路Ｗ１と、ライトバッファ内のデータ送信順を決定するライトデータ調停回路Ｗ３と、各コマンドバッファからのリードコマンドを調停するリードコマンド調停回路Ｒ１と、ライトバッファＷ２内の情報を把握し、調査するライトバッファ管理回路ＭＷと、スレーブＳ１からマスタへ送信されるリードデータとライトバッファＷ２からマスタへ送信されるリードデータを選択するリードデータ選択回路Ｒ２を備える。【選択図】図１
2007133633.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも２つのマスタと少なくとも１つのスレーブが、ライトコマンドバス、ライトデータバス、リードコマンドバス、リードデータバスを介してを介してそれぞれ独立に接続された情報処理装置であって、
前記マスタ毎に接続され、前記マスタが前記スレーブへ向けて送信するライトコマンド、リードコマンドを一時的に格納する複数のコマンドバッファと、
前記マスタが前記スレーブへ向けて送信するライトデータを前記マスタ毎に一時的に格納するインターリーブ対応のライトバッファと、
前記各コマンドバッファから前記スレーブに向けて送信されるライトコマンドを優先順位に基づいて調停するライトコマンド調停手段と、
前記ライトバッファ内のデータ送信順を決定するライトデータ調停手段と、
前記各コマンドバッファから前記スレーブに向けて送信されるリードコマンドを優先順位に基づいて調停するリードコマンド調停手段と、
前記インターリーブ対応のライトバッファ内の情報を把握し、調査するライトバッファ管理手段と、
前記スレーブから前記マスタへ送信されるリードデータと前記ライトバッファから前記マスタへ送信されるリードデータを選択するリードデータ選択手段とを備えた情報処理装置。
【請求項２】
前記ライトバッファ管理手段は、前記リードコマンド調停手段での調停の前にリードデータが前記ライトバッファに格納されているかを調査するように構成されている請求項１に記載の情報処理装置。
【請求項３】
前記リードコマンド調停手段は、前記ライトバッファの使用履歴を保持している請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記ライトデータ調停手段は、前記ライトバッファの使用履歴を保持している請求項１または請求項２に記載の情報処理装置。
【請求項５】
さらに、前記ライトバッファ内の同じアドレスのライトデータを消去するライトデータ消去手段を備える請求項１から請求項４までのいずれかに記載の情報処理装置。
【請求項６】
さらに、前記ライトバッファ内にロック転送を検出するロック転送検出手段を備える請求項１から請求項５までのいずれかに記載の情報処理装置。
【請求項７】
さらに、リードしたいデータが前記ライトバッファに格納されているとき、対象のライトデータを前記ライトバッファから転送退避し、さらに前記マスタに転送するライトデータ退避バッファを備える請求項１から請求項６までのいずれかに記載の情報処理装置。
【請求項８】
さらに、前記コマンドバッファに直近に出力される先出しリードコマンドが格納されているか調査する先出しリードコマンド調査手段を備え、
前記ライトバッファ管理手段は、前記先出しリードコマンドにおいてリードしたいデータが前記ライトバッファに格納されているときは、そのデータが前記ライトバッファに残っているように、前記ライトデータ調停手段においてそのデータを前記スレーブに出力する優先順位を下げるように構成されている請求項１から請求項７までのいずれかに記載の情報処理装置。
【請求項９】
さらに、前記コマンドバッファに格納されているライトコマンドを調査する先出しライトコマンド調査手段と、
前記リードコマンド調査手段によりアクセスが見込まれるライトデータを保持するライトデータ予約バッファとを備え、
前記ライトバッファ管理手段は、前記両コマンド調査手段からの情報に基づく判断で、前記コマンドバッファからライトコマンドが出力され、その後にリードコマンドが出力されるときは、前記マスタから前記ライトバッファに出力されるライトデータを前記ライトデータ予約バッファにも格納し、その後、リードコマンドが発行されたときに、前記ライトデータ予約バッファからそのデータを読み出すように構成されている請求項８に記載の情報処理装置。
【請求項１０】
さらに、前記コマンドバッファに格納されているライトコマンドを調査する先出しライトコマンド調査手段と、
前記リードコマンド調査手段によりアクセスが見込まれるライトデータを保持するライトデータ予約バッファとを備え、
前記ライトバッファ管理手段は、前記両コマンド調査手段からの情報に基づく判断で、前記コマンドバッファからライトコマンドが出力され、その後にリードコマンドが出力されるときは、前記ライトバッファに格納されているライトデータを前記ライトデータ予約バッファに転送し、その後、リードコマンドが発行されたときに、前記ライトデータ予約バッファからそのデータを読み出すように構成されている請求項８に記載の情報処理装置。
【請求項１１】
さらに、前記ライトコマンドバス、前記ライトデータバス、前記リードコマンドバスおよび前記リードデータバスのインオーダ転送およびアウトオブオーダ転送を制限するオーダ制限手段を備える請求項１から請求項１０までのいずれかに記載の情報処理装置。
【請求項１２】
前記ライトバッファ管理手段は、前記ライトバッファからのリード可能なアドレス領域を指定可能に構成されている請求項１から請求項１１までのいずれかに記載の情報処理装置。
【請求項１３】
請求項１から請求項１２までのいずれかに記載の情報処理装置が多重化されたマルチレイヤ構成とされ、複数の前記情報処理装置における個々の前記ライトバッファ管理手段はそれぞれ、すべての前記インターリーブ対応のライトバッファ内の情報を管理するように構成されている情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のマスタ（転送元）がリソース（スレーブ）を共有しているバスシステムにおいて、コマンドバッファ、インターリーブ対応のライトバッファを効果的に使用する情報処理装置に関する。
【背景技術】
【０００２】
従来の情報処理装置におけるバス転送方法について、図８を用いて説明する。Ｍはマスタ、Ｓはスレーブ、２１はコマンドバッファ、２２はライトバッファ、２３はライトコマンド選択回路、２４はライトデータ選択回路、２５はリードコマンド選択回路、２６はリードデータ選択回路、２７はライトバッファ調査手段、２８はライトデータ退避バッファである。
【０００３】
マスタＭから出力されたライトコマンド、リードコマンドはコマンドバッファ２１に一時的に格納される。また、マスタＭから出力されたライトデータはライトバッファ２２に一時的に格納される。
【０００４】
ライトコマンド選択回路２３はコマンドバッファ２１におけるライトコマンドを順次に選択し、スレーブＳに出力する。同期して、ライトデータ選択回路２４はライトバッファ２２から対応するライトデータを読み出し、スレーブＳに出力する。したがって、マスタＭはライトバッファ２２に格納したデータがスレーブＳに出力されたか否かを気にせずに、次の処理を開始することができる。
【０００５】
ライトバッファ調査手段２７は、コマンドバッファ２１におけるリードコマンドについてライトバッファ２２を検索し、リードしたいデータがライトバッファ２２に格納されているか否かを調査する。リードしたいデータがライトバッファ２２に格納されていないときは、リードコマンド選択回路２５はコマンドバッファ２１におけるリードコマンドをスレーブＳに出力し、スレーブＳはリードコマンドに応じてデータを読み出し、リードデータ選択回路２６に送出し、さらにマスタＭに送出する。リードしたいデータがライトバッファ２２に格納されているときは、ライトバッファ２２からそのデータを読み出してライトデータ退避バッファ２８に転送格納し、さらにリードデータ選択回路２６を介してマスタＭに送出する。ライトバッファ２２からデータをマスタＭに直接転送することにより、高速化が図られている。
【特許文献１】特開平１０−２９３７１８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来の情報処理装置では、複数のマスタが同時に複数のスレーブへ転送可能なバスシステム（階層型バス）において、各マスタ間にはライトデータの転送能力に差があるために、ライトデータ転送能力の低いマスタにバスを長時間専有されてしまうという課題があった。そこで、一般的な階層型バスにおいて、１マスタによる長時間のバス専有の課題を解決すべく、スレーブ毎に各マスタ用のインターリーブ対応のライトバッファを実装している。しかし、面積および電力の増大を招いている。
【０００７】
また、階層型バスでは複数マスタが同時に複数スレーブへ転送を行うので、複数マスタから１スレーブへのアクセス集中によるボトルネック（行き詰まり）や優先度の低い転送に起因するバス専有が生じ、データ転送効率を下げるという課題があった。
【０００８】
本発明は、このような事情に鑑みて創作したものであり、規模増大を抑制しながら、データ転送効率を向上できる情報処理装置を提供することを目的としている。
【課題を解決するための手段】
【０００９】
本発明による情報処理装置は、少なくとも２つのマスタと少なくとも１つのスレーブが、ライトコマンドバス、ライトデータバス、リードコマンドバス、リードデータバスを介してを介してそれぞれ独立に接続された情報処理装置であって、
前記マスタ毎に接続され、前記マスタが前記スレーブへ向けて送信するライトコマンド、リードコマンドを一時的に格納する複数のコマンドバッファと、
前記マスタが前記スレーブへ向けて送信するライトデータを前記マスタ毎に一時的に格納するインターリーブ対応のライトバッファと、
前記各コマンドバッファから前記スレーブに向けて送信されるライトコマンドを優先順位に基づいて調停するライトコマンド調停手段と、
前記ライトバッファ内のデータ送信順を決定するライトデータ調停手段と、
前記各コマンドバッファから前記スレーブに向けて送信されるリードコマンドを優先順位に基づいて調停するリードコマンド調停手段と、
前記インターリーブ対応のライトバッファ内の情報を把握し、調査するライトバッファ管理手段と、
前記スレーブから前記マスタへ送信されるリードデータと前記ライトバッファから前記マスタへ送信されるリードデータを選択するリードデータ選択手段とを備えた構成とされている。
【００１０】
上記において、前記ライトバッファ管理手段は、前記リードコマンド調停手段での調停の前にリードデータが前記ライトバッファに格納されているかを調査するように構成されているものとする。
【００１１】
この構成において、あるマスタがスレーブに向けてライトコマンドとライトデータを送信すると、ライトコマンドはそのマスタに個別的に対応したコマンドバッファに一時的に格納される。コマンドバッファに格納されたライトコマンドはスレーブに向けて送信されるが、途中でライトコマンド調停手段に取り込まれ、優先順位に基づいて調停されたのち、スレーブに出力される。マスタからのライトデータはインターリーブ対応のライトバッファにおけるそのマスタ対応のバッファに一時的に格納され、ライトデータ調停手段によって送信順を決められ、その順でスレーブにインターリーブ出力される。
【００１２】
また、あるマスタがスレーブに向けてリードコマンドを送信すると、リードコマンドはそのマスタに個別的に対応したコマンドバッファに一時的に格納され、コマンドバッファに格納されたリードコマンドはリードコマンド調停手段に取り込まれ、優先順位に基づいて調停されたのち、ライトバッファ管理手段に出力される。ライトバッファ管理手段は、リードコマンド調停手段から受け取ったリードコマンドについて、ライトバッファ内にリードしたいデータが格納されているかを調査し、格納されていないときは、リードコマンド調停手段からリードコマンドをスレーブに出力し、スレーブは該当のデータをリードデータとしてリードデータ選択手段に送る。また、ライトバッファにリードしたいデータが格納されているときは、ライトバッファからそのデータを読み出してリードデータとしてリードデータ選択手段に送る。リードデータ選択手段は、該当のマスタに向けてリードデータを送信する。
【００１３】
複数のマスタからのリードコマンドが同時的に発生した場合に、ライトバッファ管理手段は、低い優先順位のリードコマンドにおいてリードしたいデータがライトバッファに格納されているか否かを判断し、格納されているときは、リードコマンド調停手段の優先順位を動的に高める。これにより、ライトバッファからのデータリードを高速化することができる。
【００１４】
以上のように本発明によれば、複数のマスタからのライトデータに対して個別的に一時的格納を行うバッファを集約してインターリーブ対応のライトバッファを構成している。ライトデータ調停手段は、インターリーブ対応のライトバッファにおける複数のマスタからのラッチデータを調停しながらスレーブへ転送格納する。また、ライトバッファ管理手段は、複数のマスタからのリードコマンドがあったときに、そのいずれについてもリードしたいデータがインターリーブ対応のライトバッファに格納されているかを検索し、格納されているときは、スレーブにアクセスすることなく、インターリーブ対応のライトバッファからそのリードしたいデータを読み出し、該当のマスタへ転送する。以上の結果として、規模増大を抑制しながら、データライト処理、データリード処理を高速化し、バスシステムのデータ転送効率を向上させることができる。
【００１５】
また、上記において、前記リードコマンド調停手段は、前記ライトバッファの使用履歴を保持しているものが好ましい。ライトバッファからデータリードした回数を使用履歴で保存し、過去において、優先順位を高めてライトバッファからデータリードした同じマスタのリードコマンドの優先順位を下げるように制御する。これにより、同じマスタに高い優先順位を集中させることを回避し、他のマスタもバスを使用できるように調停する。
【００１６】
また、上記において、前記ライトデータ調停手段は、前記ライトバッファの使用履歴を保持しているものが好ましい。ライトバッファからデータリードしたとき、使用履歴におけるデータリードの回数を数え、優先順位を下げるように制御する。これにより、ライトバッファからリードされたデータをライトバッファに残りやすくし、再度同じアドレスへリードアクセスをしたときに、ライトバッファにデータが残されている確率を高め、データリードを高速化する。
【００１７】
また、上記において、さらに、前記ライトバッファ内の同じアドレスのライトデータを消去するライトデータ消去手段を備えるという態様がある。ライトデータ消去手段は、コマンドバッファがスレーブへ出力する各コマンドとライトバッファを監視し、ライトバッファに格納されているデータのアドレスと同じアドレスへのライトコマンドであったとき、先に受け付けたライトコマンドとライトデータをスレーブに出力することなく、コマンドバッファからライトコマンドを削除するとともにライトバッファ上からライトデータを削除する。すなわち、スレーブに一度書き込んだデータについては、二度の重複する書き込みを停止することにより、ライトデータ転送を効率化する。
【００１８】
また、上記において、さらに、前記ライトバッファ内にロック転送を検出するロック転送検出手段を備えるという態様がある。ロック転送検出手段は、ライトコマンドがロック転送かどうかを調査し、ロック転送時にはライトバッファに格納されたライトデータをスレーブに出力する優先度を高める。これにより、スレーブに早期に出力したいロック転送がライトバッファに長く留まることを少なくし、ロック転送を効率化する。
【００１９】
また、上記において、さらに、リードしたいデータが前記ライトバッファに格納されているとき、対象のライトデータを前記ライトバッファから転送退避し、さらに前記マスタに転送するライトデータ退避バッファを備えるという態様がある。ライトデータ退避バッファは、リードしたいデータがライトバッファに格納されているとき、そのデータをライトバッファから転送して退避した上で、該当するマスタにデータを送る。これにより、ライトバッファは、そこからのリードの終了を待つことなく、いつでもスレーブにデータを出力できるようになる。
【００２０】
また、上記において、さらに、前記コマンドバッファに直近に出力される先出しリードコマンドが格納されているか調査する先出しリードコマンド調査手段を備え、前記ライトバッファ管理手段は、前記先出しリードコマンドにおいてリードしたいデータが前記ライトバッファに格納されているときは、そのデータが前記ライトバッファに残っているように、前記ライトデータ調停手段においてそのデータを前記スレーブに出力する優先順位を下げるように構成されているという態様がある。
【００２１】
この場合、先出しリードコマンド調査手段は、直近に出力される先出しリードコマンドがコマンドバッファに格納されているかを調べ、格納されているときは、その先出しリードコマンドをライトバッファ管理手段に送る。ライトバッファ管理手段は、先出しリードコマンドにおいてリードしたいデータがライトバッファに格納されているかを検索し、格納されていれば、ライトデータ調停手段において、そのデータをスレーブに出力する優先順位を下げる。すなわち、実際にリードコマンドが発行されたときにライトバッファからデータを読み出せるように、そのライトデータがライトバッファに留まるように制御する。これにより、リードデータおよびライトデータの転送が効率化される。
【００２２】
また、上記において、さらに、前記コマンドバッファに格納されているライトコマンドを調査する先出しライトコマンド調査手段と、前記リードコマンド調査手段によりアクセスが見込まれるライトデータを保持するライトデータ予約バッファとを備え、前記ライトバッファ管理手段は、前記両コマンド調査手段からの情報に基づく判断で、前記コマンドバッファからライトコマンドが出力され、その後にリードコマンドが出力されるときは、前記マスタから前記ライトバッファに出力されるライトデータを前記ライトデータ予約バッファにも格納し、その後、リードコマンドが発行されたときに、前記ライトデータ予約バッファからそのデータを読み出すように構成されているという態様がある。
【００２３】
この場合、先出しライトコマンド調査手段はコマンドバッファにライトコマンドが格納されているかを調べ、先出しリードコマンド調査手段は前記のライトコマンドの後に出力されるリードコマンドがコマンドバッファに格納されているかを調べる。ライトバッファ管理手段は、両コマンド調査手段からの情報を解析し、コマンドバッファからライトコマンドが出力され、その後にリードコマンドが出力されると判断したときは、マスタからライトバッファに出力されるライトデータをライトデータ予約バッファにも格納する。そして、その後に発行されるリードコマンドに基づいてライトデータ予約バッファからそのデータを読み出すように制御する。これにより、リードデータおよびライトデータの転送が効率化される。
【００２４】
また、上記において、さらに、前記コマンドバッファに格納されているライトコマンドを調査する先出しライトコマンド調査手段と、前記リードコマンド調査手段によりアクセスが見込まれるライトデータを保持するライトデータ予約バッファとを備え、前記ライトバッファ管理手段は、前記両コマンド調査手段からの情報に基づく判断で、前記コマンドバッファからライトコマンドが出力され、その後にリードコマンドが出力されるときは、前記ライトバッファに格納されているライトデータを前記ライトデータ予約バッファに転送し、その後、リードコマンドが発行されたときに、前記ライトデータ予約バッファからそのデータを読み出すように構成されているという態様がある。
【００２５】
この場合、先出しライトコマンド調査手段はコマンドバッファにライトコマンドが格納されているかを調べ、先出しリードコマンド調査手段は前記のライトコマンドの後に出力されるリードコマンドがコマンドバッファに格納されているかを調べる。ライトバッファ管理手段は、両コマンド調査手段からの情報を解析し、コマンドバッファからライトコマンドが出力され、その後にリードコマンドが出力されると判断したときは、ライトバッファに格納されているライトデータをライトデータ予約バッファに転送する。そして、その後に発行されるリードコマンドに基づいてライトデータ予約バッファからそのデータを読み出すように制御する。これにより、リードデータおよびライトデータの転送が効率化される。
【００２６】
また、上記において、さらに、前記ライトコマンドバス、前記ライトデータバス、前記リードコマンドバスおよび前記リードデータバスのインオーダ転送およびアウトオブオーダ転送を制限するオーダ制限手段を備えるという態様がある。
【００２７】
インオーダ（in-order）転送とは、複数のコマンドを同時的に受け付けた場合に、その受け付けの順番でデータを入出力する方式であり、アウトオブオーダ（out-of-order）転送とは、データを時分割に切り替えて入出力する方式である。オーダ制限手段は、インオーダ転送に切り替えられたときは、先に発行されたコマンドの処理が終わるまで次のコマンドをスレーブに出力しないように制限し、インオーダ転送を強制する。これにより、インオーダ転送とアウトオブ転送の切り替えをスレーブで行わなくてもよく、バス上でインオーダ転送とアウトオブオーダ転送を容易に切り替えることができる。
【００２８】
また、上記において、前記ライトバッファ管理手段は、前記ライトバッファからのリード可能なアドレス領域を指定可能に構成されているという態様がある。これによれば、ライトバッファ管理手段は、リードコマンドのアドレスがこのアドレス領域内であるときに限って、ライトバッファからデータリードするように制限する。これにより、ＦＩＦＯ等の直接にスレーブからデータリードしなければならない領域を容易に設定できる。
【００２９】
なお、上記のいずれかの情報処理装置が多重化されたマルチレイヤ構成とされ、複数の前記情報処理装置における個々の前記ライトバッファ管理手段はそれぞれ、すべての前記インターリーブ対応のライトバッファ内の情報を管理するように構成されているという態様もある。
【発明の効果】
【００３０】
本発明によれば、リード処理、ライト処理を高速化し、バスシステムのデータ転送効率を向上させることができる。
【発明を実施するための最良の形態】
【００３１】
以下、本発明にかかわる情報処理装置の実施の形態を図面に基づいて詳細に説明する。
【００３２】
（実施の形態１）
図１は本発明の実施の形態１における情報処理装置の構成を示すブロック図である。図１において、実線矢印はライトコマンドを表し、破線矢印はリードコマンドを表す。また、太線の実線矢印はライトデータを表し、太線の破線矢印はリードデータを表す。Ｍ１，Ｍ２，Ｍ３はマスタ、Ｓ１はスレーブ、１はマスタＭ１，Ｍ２，Ｍ３とスレーブＳ１とをライトコマンドバスａ、ライトデータバスｂ、リードコマンドバスｃ、リードデータバスｄを介してそれぞれ独立に接続するインターコネクトである。また、Ｃ１，Ｃ２，Ｃ３はマスタＭ１，Ｍ２，Ｍ３のそれぞれがスレーブＳ１へ送信するライトコマンドとリードコマンドを一時的に格納するコマンドバッファ、Ｗ１はコマンドバッファＣ１，Ｃ２，Ｃ３のそれぞれからスレーブＳ１に送信されたライトコマンドを優先順位に基づいて調停するスレーブＳ１専用のライトコマンド調停回路、Ｗ２はマスタＭ１，Ｍ２，Ｍ３からスレーブＳ１へ送信したライトデータをマスタ毎のバッファに一時的に格納するインターリーブ対応のライトバッファ、Ｗ３はライトバッファＷ２内におけるライトデータの送信順を調停するライトデータ調停回路、Ｒ１はコマンドバッファＣ１，Ｃ２，Ｃ３それぞれからスレーブＳ１に送信されたリードコマンドを優先順位に基づいて調停するスレーブＳ１専用のリードコマンド調停回路、Ｒ２はスレーブＳ１からのリードデータとライトバッファ管理回路ＭＷからのリードデータの選択を行い、該当するマスタＭ１，Ｍ２，Ｍ３へ出力するリードデータ選択回路、ＭＷはライトバッファＷ２内の情報を把握し、リードコマンド調停回路Ｒ１からのリードコマンドに対応するリードしたいデータがライトバッファＷ２に格納されているかを調査するライトバッファ管理回路である。インターコネクト１は、これらの要素によって構成されている。スレーブは、単一であっても複数であってもよい。スレーブが複数のときは、インターコネクトも複数とする。
【００３３】
マスタＭ１，Ｍ２，Ｍ３はそれぞれ個別的にコマンドバッファＣ１，Ｃ２，Ｃ３に接続されている。マスタＭ１が発行するライトコマンドまたはリードコマンドは、コマンドバッファＣ１に一時的に格納される。また、マスタＭ２が発行するライトコマンドまたはリードコマンドは、コマンドバッファＣ２に一時的に格納され、マスタＭ３が発行するライトコマンドまたはリードコマンドは、コマンドバッファＣ３に一時的に格納される。
【００３４】
コマンドバッファＣｉ（ｉ＝１，２，３）から出力されるライトコマンドは、ライトコマンド調停回路Ｗ１に入力され、スレーブＳ１に対する出力が調停される。マスタＭｉ（ｉ＝１，２，３）からスレーブＳ１に向けて送られたライトデータは、ライトバッファＷ２におけるマスタ毎に用意されたバッファに個別的に一時的に格納される。そして、ライトデータ調停回路Ｗ３は、ライトバッファＷ２におけるライトデータをスレーブＳ１に対してインターリーブ出力するように調停する。
【００３５】
また、コマンドバッファＣｉ（ｉ＝１，２，３）から出力されるリードコマンドは、リードコマンド調停回路Ｒ１で調停され、ライトバッファ管理回路ＭＷに伝えられる。ライトバッファ管理回路ＭＷは、リードしたいデータがライトバッファＷ２に格納されているかを調査する。その調査の結果、格納されていなければ、ライトバッファ管理回路ＭＷからの指示に基づいてリードコマンド調停回路Ｒ１は、リードコマンドをスレーブＳ１に出力する。この場合、スレーブＳ１からデータ（リードデータ）が読み出され、このリードデータがリードデータ選択回路Ｒ２で選択されて、リードコマンドを発行した元のマスタＭｉ（ｉ＝１，２，３）に返される。
【００３６】
図２（ａ）はリードコマンドの構成を示し、図２（ｂ）はライトコマンドの構成を示す。リードコマンド、ライトコマンドはそれぞれ、リードまたはライトしたいアドレスを保持するアドレス情報、コマンドの転送ＩＤとマスタＩＤを表すＩＤ情報、コマンドがロック転送かどうか表すロック情報、コマンドがリードであるかライトであるかを表すコマンド情報から構成されている。
【００３７】
図２（ｃ）はリードデータまたはライトデータを示す。リードデータおよびライトデータは、リードデータおよびライトデータ自身であるＤａｔａ情報と、データの転送ＩＤおよびマスタＩＤを保持するＩＤ情報から構成されている。
【００３８】
ＩＤ情報は、例えば下位４ビットは、ばらばらに送られるリードコマンドとリードデータの一致をとるためのＩＤとして、また、ライトコマンドとライトデータの一致をとるためのＩＤとして使用される。また、上位４ビットは、それらのリードコマンドおよびライトコマンドやライトデータがマスタＭ１，Ｍ２，Ｍ３のうちどのマスタから出力されたか知るためのマスタＩＤとして利用される。なお、マスタＭ１のマスタＩＤは「０」、マスタＭ２のマスタＩＤは「１」、マスタＭ３のマスタＩＤは「２」である。
【００３９】
リードデータのＩＤについては、スレーブＳ１がマスタＭｉ（ｉ＝１，２，３）から受け取ったリードコマンドのＩＤ情報をそのまま付加してインターコネクト１に送り、ＩＤ情報のマスタＩＤで指定されるマスタにデータを返す。
【００４０】
図３（ａ）はコマンドバッファＣ１，Ｃ２，Ｃ３の構成を示す。マスタＭ１，Ｍ２，Ｍ３が発行するリードコマンドおよびライトコマンドを受け取るバッファがマスタ毎に用意されている。各バッファは複数のＷｏｒｄ領域を持ち、Ｗｏｒｄ領域毎にそれぞれ、Ｖ情報（バッファ内の有効なデータの有無を表す）、ＩＤ情報、アドレス情報、ロック情報、コマンド情報から構成されている。リードコマンドおよびライトコマンドを受け取ったとき、Ｗｏｒｄ０から順に格納し、先入れ先出し方式で出力する。
【００４１】
図３（ｂ）はインターリーブ対応のライトバッファＷ２の構成を示す。マスタＭ１，Ｍ２，Ｍ３がスレーブＳ１に向けて送ったライトデータを受け取るバッファがマスタ毎に用意されている。各バッファは複数のＷｏｒｄ領域を持ち、Ｗｏｒｄ領域毎にＶ情報、ＩＤ情報、Ｄａｔａ情報、ライトデータの出力先のアドレスを保持するＷｒｉｔｅ  Ａｄｄｒ情報から構成されている。
【００４２】
次に、上記のように構成された本実施の形態の情報処理装置の動作を説明する。
【００４３】
まず、ライト動作について説明する。
【００４４】
マスタＭｉ（ｉ＝１，２，３）が発行したライトコマンドは、そのマスタＭｉに接続されたコマンドバッファＣｉ（ｉ＝１，２，３）に一時的に格納される。コマンドバッファＣｉに格納されたライトコマンドはスレーブＳ１に向けて送られるが、途中でライトコマンド調停回路Ｗ１に取り込まれ、ライトコマンド調停回路Ｗ１によりインターリーブ可能な数だけスレーブＳ１に出力するように調停される。
【００４５】
マスタＭｉ（ｉ＝１，２，３）から送られたライトデータは、ライトバッファＷ２に向けて送られるが、アドレス情報を持つライトコマンドがライトコマンド調停回路Ｗ１で調停されるまでは、そのライトデータがスレーブＳ１に送られたものか否かを判断することはできない。ライトコマンド調停回路Ｗ１で調停されたＩＤを持つライトデータのみがライトバッファＷ２に格納される。それ以外のライトデータは受け取ることができない。
【００４６】
ライトバッファＷ２にライトデータを格納するとき、Ｗｏｒｄ領域にＶ情報をセットし、ＩＤ情報およびＤａｔａ情報からなるライトデータを格納し、さらにライトコマンドのアドレス情報をＷｒｉｔｅ  Ａｄｄｒ情報として格納する。ライトバッファＷ２に格納されたライトデータは、ライトデータ調停回路Ｗ３によりスレーブＳ１に対してインターリーブ出力するよう調停される。
【００４７】
次に、リード動作について説明する。
【００４８】
マスタＭｉ（ｉ＝１，２，３）が発行したリードコマンドは、そのマスタＭｉに接続されたコマンドバッファＣｉ（ｉ＝１，２，３）に一時的に格納される。コマンドバッファＣｉに格納されたリードコマンドはリードコマンド調停回路Ｒ１に出力される。このとき、リードコマンドはリードコマンド調停回路Ｒ１で調停され、ライトバッファ管理回路ＭＷに伝えられる。このライトバッファ管理回路ＭＷは、ライトバッファＷ２のすべてのＷｏｒｄ領域のＷｒｉｔｅ  Ａｄｄｒ情報を検索し、リードしたいアドレスのデータがライトバッファＷ２に格納されているかを調べる。
【００４９】
ライトバッファＷ２にリードしたいデータが格納されていないときは、ライトバッファ管理回路ＭＷからの指示により、リードコマンド調停回路Ｒ１はリードコマンドをスレーブＳ１に出力する。リードコマンドを受け取ったスレーブＳ１は、リードコマンドのアドレス情報で指定されたアドレスのデータに、リードコマンドのＩＤ情報をリードデータのＩＤ情報として付加し、リードデータとしてリードデータ選択回路Ｒ２に送る。リードデータ選択回路Ｒ２からさらに、リードデータのＩＤ情報に指定されたマスタＩＤのマスタＭｉ（ｉ＝１，２，３）にリードデータを返す。
【００５０】
また、ライトバッファ管理回路ＭＷは、調査の結果、ライトバッファＷ２にリードしたいデータが格納されているときは、ライトバッファＷ２からライトデータを読み出してリードデータとしてリードデータ選択回路Ｒ２に送り、リードコマンドのＩＤ情報に指定されたマスタＩＤのマスタＭｉ（ｉ＝１，２，３）にリードデータを送る。すなわち、ライトバッファＷ２上のデータをリードする。
【００５１】
ここで、コマンドバッファＣ１，Ｃ２，Ｃ３のうち任意の複数のコマンドバッファからのリードコマンドが同時的にリードコマンド調停回路Ｒ１に送られたときは、次のように処理する。すなわち、リードコマンド調停回路Ｒ１で調停する前に、ライトバッファ管理回路ＭＷは、低い優先順位のリードコマンドにおいてリードしたいデータがライトバッファＷ２に格納されているか否かを判断し、格納されていることを認識したときは、その優先順位が低いリードコマンドの優先順位を動的に高めた上で、ライトバッファＷ２からデータを読むように調停し、該当のマスタＭｉ（ｉ＝１，２，３）にリードデータを送るように制御する。これにより、ライトバッファＷ２からのデータリードを高速化することができる。
【００５２】
ここで、リードコマンド調停回路Ｒ１に、図４（ａ）に示すインターリーブ対応のリードバッファ使用履歴２を設けてあるとする。ライトバッファＷ２からデータリードした回数をリードバッファ使用履歴２で保存し、過去において、優先順位を高めてライトバッファＷ２からデータリードした同じマスタのリードコマンドの優先順位を下げるように制御する。これにより、同じマスタに高い優先順位を集中させることを回避し、他のマスタもバスを使用できるように調停することができる。
【００５３】
また、ライトデータ調停回路Ｗ３において、図４（ｂ）に示すインターリーブ対応のライトバッファ使用履歴３を設けてあるとする。ライトデータ調停回路Ｗ３により、ライトバッファＷ２からデータリードしたとき、ライトバッファ使用履歴３におけるデータリードされたＷｏｒｄ領域を数え、この領域についてスレーブＳ１へ出力する優先順位を下げるように制御する。これにより、ライトバッファＷ２からリードされたデータをライトバッファＷ２に残りやすくする。結果として、再度同じアドレスへリードアクセスをしたときに、ライトバッファＷ２にデータが残されている確率を高め、データリードを高速化することができる。
【００５４】
（実施の形態２）
図５は本発明の実施の形態２における情報処理装置の構成を示すブロック図である。図５において、実施の形態１の図１におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。図５において、４はライトデータ消去回路、５はロック転送検出回路、６はライトデータ退避バッファ、７はオーダ制限回路、８はオーダバッファである。
【００５５】
ライトデータ消去回路４は、ライトバッファＷ２からスレーブＳ１に一度書き込んだデータについては、二度以上の重複書き込みを回避するために、そのデータをライトバッファＷ２から消去するものである。このライトデータ消去回路４は、コマンドバッファＣｉ（ｉ＝１，２，３）がスレーブＳ１へ出力する各ライトコマンドとライトバッファＷ２を監視し、ライトバッファＷ２に格納されているデータのアドレスと同じアドレスへのライトコマンドであったとき、先に受け付けたライトコマンドとライトデータをスレーブＳ１に出力することを禁止し、コマンドバッファＣｉからライトコマンドを削除するとともに、ライトバッファＷ２上からライトデータを削除するように制御を行う。すなわち、スレーブＳ１に一度書き込んだデータについては、二度以上の重複書き込みを回避し、ライトデータ転送を効率化するものである。
【００５６】
ロック転送検出回路５は、ライトコマンドがロック転送かどうかを調査し、ロック転送時にはライトバッファＷ２に格納されているライトデータをスレーブＳ１に出力する優先度を高めるものである。この機能により、スレーブＳ１に早期に出力したいロック転送のデータがライトバッファＷ２に長く留まることを少なくし、ロック転送を効率化することができる。
【００５７】
ライトデータ退避バッファ６は、ライトバッファ管理回路ＭＷ内に設けられ、リードしたいデータがライトバッファＷ２にあるとき、そのデータをライトバッファＷ２から転送して退避するものである。退避したデータは該当するマスタＭｉ（ｉ＝１，２，３）に送られる。これにより、ライトバッファＷ２は、そこからのデータリードの終了を待つことなく、いつでもスレーブＳ１にデータを出力できるようになる。
【００５８】
ところで、マスタＭｉ（ｉ＝１，２，３）が送るコマンドやデータのＩＤ情報がすべて同じとき、それぞれのコマンドとデータの一致がとれなくなる。このとき、スレーブＳ１は、同時的に受け付けた複数のコマンドに対して、データを時分割に切り替えて入出力するアウトオブオーダ（out-of-order）転送）は実行できない。そこで、受け付けた順番でデータを入出力するインオーダ（in-order）転送に制限する必要がある。これを実現するのがオーダ制限回路７である。
【００５９】
オーダ制限回路７は、インオーダ転送を強制するインオーダ転送レジスタを持つ。マスタＭｉ（ｉ＝１，２，３）によってインオーダ転送レジスタがオンされたとき、オーダ制限回路７は、ライトコマンド調停回路Ｗ１およびリードコマンド調停回路Ｒ１に対して、先に発行されたコマンドの処理が終わるまで次のコマンドをスレーブＳ１に出力しないように制限し、インオーダ転送を強制する。これにより、インオーダ転送とアウトオブ転送の切り替えをスレーブＳ１で行わなくてもよく、バス上でインオーダ転送とアウトオブオーダ転送を容易に切り替えることができる。
【００６０】
オーダバッファ８は、スレーブＳ１がアウトオブオーダで出力したデータを受け取り、インオーダに並び替えてマスタＭｉ（ｉ＝１，２，３）にデータを返すものである。この機能により、オーダ制限回路７のインオーダ転送レジスタがオンのとき、リードコマンド調停回路Ｒ１を制限しなくてもよく、上記同様の機能を実現できる。
【００６１】
さらに、ライトバッファ管理回路ＭＷは、ライトバッファＷ２からデータリードできるアドレス領域を保持するように構成してもよい。この場合、ライトバッファ管理回路ＭＷは、リードコマンドのアドレスがこのアドレス領域内であるときは、そのときに限り、ライトバッファＷ２からデータリードするように制限する。これにより、ＦＩＦＯ等の直接にスレーブＳ１からデータリードしなければならない領域を容易に設定できる。
【００６２】
また、ライトバッファＷ２からデータリードする機能をオンオフするためのレジスタをライトバッファ管理回路ＭＷに設けるのも有効である。この場合、一時的にスレーブＳ１から直接読みたいときなどにおいて、スレーブＳ１の全領域を直接リードできるように制限することができる。
【００６３】
本実施の形態によれば、以上のような処理を行うことで、リードしたいデータがインターリーブ対応のライトバッファＷ２に格納されているときは、そのライトバッファＷ２からデータを読み出すことで、リード動作の高速化およびリードトラフィックおよびライトトラフィックの削減を図ることができる。
【００６４】
（実施の形態３）
図６は本発明の実施の形態３における情報処理装置の構成を示すブロック図である。図６において、実施の形態１の図１におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。図６において、９は専用バスで接続され、コマンドバッファＣｉ（ｉ＝１，２，３）に格納されているライトコマンド（先出しライトコマンド）を調べるための先出しライトコマンド調査手段、１０は専用バスで接続され、コマンドバッファＣｉに格納されているリードコマンド（先出しリードコマンド）を調べるための先出しリードコマンド調査手段、１１はコマンドバッファＣｉからライトコマンドが出力された後にリードコマンドが出力されるときに、ライトバッファＷ２に対するライトデータを格納しておくライトデータ予約バッファである。
【００６５】
次に、上記のように構成された本実施の形態の情報処理装置の動作を説明する。
【００６６】
基本的な動作は、実施の形態１の場合と同様である。
【００６７】
先出しリードコマンド調査手段１０は、コマンドバッファＣｉ（ｉ＝１，２，３）に格納されているリードコマンド（先出しリードコマンド）を検索し、数サイクル後にコマンドバッファＣｉからスレーブＳ１に送られるリードコマンドの情報をライトバッファ管理回路ＭＷに送る。ライトバッファ管理回路ＭＷは、これらの先出しリードコマンドにおいてリードしたいデータがライトバッファＷ２に格納されていないかを検索し、格納されていれば、ライトデータ調停回路Ｗ３において、そのライトデータをスレーブＳ１に出力する優先順位を下げる。すなわち、実際にリードコマンドが発行されたときにライトバッファＷ２からデータを読み出せるように、そのライトデータがライトバッファＷ２に留まるように制御する。これにより、リードデータおよびライトデータの転送を効率化できる。
【００６８】
さらに、先出しライトコマンド調査手段９がコマンドバッファＣｉ（ｉ＝１，２，３）に格納されている先出しライトコマンドを検索するとともに、先出しリードコマンド調査手段１０がコマンドバッファＣｉに格納されている先出しリードコマンドを検索し、ライトバッファ管理回路ＭＷは、コマンドバッファＣｉからライトコマンドが出力され、その後にリードコマンドが出力されるか否かを調べる。そのとおりと分かったとき、ライトバッファ管理回路ＭＷは、ライトバッファＷ２に出力されたライトデータをライトデータ予約バッファ１１にも格納する。その後、リードコマンドが発行されると、ライトバッファ管理回路ＭＷは、ライトデータ予約バッファ１１からそのデータを読み出し、該当のマスタＭｉ（ｉ＝１，２，３）に向けて出力する。これにより、実際にリードコマンドが発行されると、直ちにライトデータ予約バッファ１１からデータリードすることができる。
【００６９】
なお、ライトデータ予約バッファ１１へのライトデータの格納については、マスタＭｉ（ｉ＝１，２，３）からの書き込みに代えて、ライトバッファＷ２からのデータ転送でもよい。
【００７０】
（実施の形態４）
本発明の実施の形態４はマルチレイヤ構成にかかわるものである。図７は本発明の実施の形態４における情報処理装置の構成を示すブロック図である。図７において、実施の形態１の図１におけるのと同じ符号は同一構成要素を指しているので、詳しい説明は省略する。
【００７１】
マスタＭ１，Ｍ２，Ｍ３は２つのインターコネクト１，１ａに接続されている。
インターコネクト１ａはインターコネクト１と同様の構成となっている。インターコネクト１ａにおいてもインターコネクト１のコマンドバッファＣ１，Ｃ２，Ｃ３と同様の３つのコマンドバッファがあり、それぞれがマスタＭ１，Ｍ２，Ｍ３に個別的に接続されている。マスタＭｉ（ｉ＝１，２，３）は、２つのインターコネクト１，１ａのうちいずれのインターコネクトを使用するかを指定するようになっている。マスタＭｉ（ｉ＝１，２，３）が発行するライトコマンドとリードコマンドは、マスタＭｉ（ｉ＝１，２，３）が指定したインターコネクトのコマンドバッファに格納される。
【００７２】
インターコネクト１，１ａのそれぞれにおいて、コマンドバッファＣ１，Ｃ２，Ｃ３からスレーブＳ１に向けて送られたリードコマンドは、各リードコマンド調停回路Ｒ１で調停され、さらに、各ライトバッファ管理回路ＭＷでリードしたいデータがインターコネクト１，１ａのすべてにおいてライトバッファＷ２，Ｗ２ａに格納されているかを調査する。すなわち、すべてのライトバッファＷ２，Ｗ２ａのＷｏｒｄ領域のＷｒｉｔｅ  Ａｄｄｒ情報を検索し、リードしたいアドレスのデータが格納されているかを調べる。そして、格納されていなければ、リードコマンドをスレーブＳ１に出力し、スレーブＳ１からのリードデータをリードデータ選択回路Ｒ２で選択し、マスタＭ１，Ｍ２，Ｍ３に返す。格納されていれば、リードコマンドはスレーブＳ１に出力しないように制御し、ライトバッファＷ２のデータをリードデータ選択回路Ｒ２で選択し、マスタＭ１，Ｍ２，Ｍ３に返す。
【産業上の利用可能性】
【００７３】
本発明の技術は、マルチタスク機能を有する情報処理装置等として有用である。
【図面の簡単な説明】
【００７４】
【図１】本発明の実施の形態１における情報処理装置の構成を示すブロック図
【図２】本発明の実施の形態におけるリードコマンド、ライトコマンド、リードデータおよびライトデータの構成を示す図
【図３】本発明の実施の形態におけるコマンドバッファおよびインターリーブ対応のライトバッファの構成を示す図
【図４】本発明の実施の形態１におけるインターリーブ対応のリードバッファおよびライトバッファの使用履歴を示す図
【図５】本発明の実施の形態２における情報処理装置の構成を示すブロック図
【図６】本発明の実施の形態３における情報処理装置の構成を示すブロック図
【図７】本発明の実施の形態４における情報処理装置の構成を示すブロック図
【図８】従来の技術における情報処理装置の構成を示すブロック図
【符号の説明】
【００７５】
ａ  ライトコマンドバス
ｂ  ライトデータバス
ｃ  リードコマンドバス
ｄ  リードデータバス
Ｃ１，Ｃ２，Ｃ３  コマンドバッファ
Ｍ１，Ｍ２，Ｍ３  マスタ
ＭＷ  ライトバッファ管理回路
Ｒ１  リードコマンド調停回路
Ｒ２  リードデータ選択回路
Ｓ１  スレーブ
Ｗ１  ライトコマンド調停回路
Ｗ２，Ｗ２ａ  インターリーブ対応のライトバッファ
Ｗ３  ライトデータ調停回路
１，１ａ  インターコネクト
２  リードバッファ使用履歴
３  ライトバッファ使用履歴
４  ライトデータ消去回路
５  ロック転送検出回路
６  ライトデータ退避バッファ
７  オーダ制限回路
８  オーダバッファ
９  先出しライトコマンド調査手段
１０  先出しリードコマンド調査手段
１１  ライトデータ予約バッファ
【図１】
2007133633.tif 000003
【図２】
2007133633.tif 000004
【図３】
2007133633.tif 000005
【図４】
2007133633.tif 000006
【図５】
2007133633.tif 000007
【図６】
2007133633.tif 000008
【図７】
2007133633.tif 000009
【図８】
2007133633.tif 000010