(57)【要約】  データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部（１１１）と、アクセス生成部（１１１）で生成されたコマンド情報を複数記憶するコマンドキュー（１１２）と、コマンドキュー（１１２）に記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、第１のコマンド情報よりも先に選択する転送要求出力順序制御部（１１４）と、転送要求出力順序制御部（１１４）で選択されたコマンド情報を出力する転送要求出力部（１１５）と、を備える。
2014156282.tif 000002
【特許請求の範囲】
【請求項１】
データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、
前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、
前記コマンドキューに記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御部と、
前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えること
を特徴とするバスマスタ。
【請求項２】
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部から出力されたコマンド情報への応答が、当該コマンド情報よりも先に出力されたコマンド情報への応答よりも先に前記転送応答入力部に入力された場合に、当該先に出力されたコマンド情報の転送対象アドレスを有するバススレーブを先行スレーブとし、当該後に出力されたコマンド情報の転送対象アドレスを有するバススレーブを後続スレーブとして特定し、当該先行スレーブと当該後続スレーブとの応答が逆転したと判断するコマンドキュー滞留時間比較部と、
前記コマンドキュー滞留時間比較部での判断結果に応じて、前記先行スレーブと前記後続スレーブとの応答が逆転したことを示す情報を含む転送順序整合情報を記憶する転送順序整合情報記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送順序整合情報記憶部に記憶されている転送順序整合情報を参照して、前記出力対象のコマンド情報を選択すること
を特徴とする請求項１に記載のバスマスタ。
【請求項３】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを前記先行スレーブとし、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを前記後続スレーブとして、応答が逆転したことを示す情報が前記転送順序整合情報に含まれている場合に、当該最初に記憶されたコマンド情報よりも先に、当該次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項２に記載のバスマスタ。
【請求項４】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有する一のバススレーブに出力したコマンド情報の中で、転送応答を得る前のコマンド情報の数が、当該一のバススレーブが蓄積し得るコマンド情報の数の最大値に達している場合、転送応答を得る前のコマンド情報の数が、蓄積し得るコマンド情報の数の最大値に達していない他のバススレーブの転送対象アドレスを含むコマンド情報を、前記最初に記憶されたコマンド情報より先に出力対象のコマンド情報として選択すること
を特徴とする請求項２に記載のバスマスタ。
【請求項５】
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部が前記コマンド情報を出力してから、前記転送応答入力部が前記応答の入力を受けるまでの転送応答入力時間を計測する転送応答入力時間計測部と、
前記転送応答入力時間計測部で計測された転送応答入力時間を、前記バススレーブ毎に記憶する転送応答入力時間記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間に基づいて、前記出力対象のコマンド情報を選択すること
を特徴とする請求項１に記載のバスマスタ。
【請求項６】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、前記最初に記憶されたコマンド情報よりも先に、前記次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項５に記載のバスマスタ。
【請求項７】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、当該最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、当該最初に記憶されたコマンド情報よりも先に、当該何れか一つのコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項５に記載のバスマスタ。
【請求項８】
前記転送要求出力順序制御部は、キュー数制御部から指示されたバススレーブへの前記コマンド情報の出力数を制限し、
前記キュー数制御部は、前記転送応答入力時間計測部で計測された、前記バススレーブ毎の転送応答入力時間に基づいて、当該転送応答入力時間が増加傾向にあるバススレーブへの前記コマンド情報の出力数を制限するように、前記転送要求出力順序制御部に指示すること
を特徴とする請求項５から７に記載のバスマスタ。
【請求項９】
少なくとも１つのバスマスタ及び複数のバススレーブを備えるバスシステムであって、
前記少なくとも１つのバスマスタは、
データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先の、前記複数のバススレーブの内の１つのバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、
前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、
前記コマンドキューに記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御部と、
前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えること
を特徴とするバスシステム。
【請求項１０】
前記バスマスタは、
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部から出力されたコマンド情報への応答が、当該コマンド情報よりも先に出力されたコマンド情報への応答よりも先に前記転送応答入力部に入力された場合に、当該先に出力されたコマンド情報の転送対象アドレスを有するバススレーブを先行スレーブとし、当該後に出力されたコマンド情報の転送対象アドレスを有するバススレーブを後続スレーブとして特定し、当該先行スレーブと当該後続スレーブとの応答が逆転したと判断するコマンドキュー滞留時間比較部と、
前記コマンドキュー滞留時間比較部での判断結果に応じて、前記先行スレーブと前記後続スレーブとの応答が逆転したことを示す情報を含む転送順序整合情報を記憶する転送順序整合情報記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送順序整合情報記憶部に記憶されている転送順序整合情報を参照して、前記出力対象のコマンド情報を選択すること
を特徴とする請求項９に記載のバスシステム。
【請求項１１】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報を前記先行スレーブとし、次に記憶されたコマンド情報を前記後続スレーブとして、応答が逆転したことを示す情報が前記転送順序整合情報に含まれている場合に、当該最初に記憶されたコマンド情報よりも先に、当該次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項１０に記載のバスシステム。
【請求項１２】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有する一のバススレーブに出力したコマンド情報の中で、転送応答を得る前のコマンド情報の数が、当該一のバススレーブが蓄積し得るコマンド情報の数の最大値に達している場合、転送応答を得る前のコマンド情報の数が、蓄積し得るコマンド情報の数の最大値に達していない他のバススレーブの転送対象アドレスを含むコマンド情報を、前記最初に記憶されたコマンド情報より先に出力対象のコマンド情報として選択すること
を特徴とする請求項１０に記載のバスシステム。
【請求項１３】
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部が前記コマンド情報を出力してから、前記転送応答入力部が前記応答の入力を受けるまでの転送応答入力時間を計測する転送応答入力時間計測部と、
前記転送応答入力時間計測部で計測された転送応答入力時間を、前記バススレーブ毎に記憶する転送応答入力時間記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間に基づいて、前記出力対象のコマンド情報を選択すること
を特徴とする請求項９に記載のバスシステム。
【請求項１４】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、前記最初に記憶されたコマンド情報よりも先に、前記次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項１３に記載のバスシステム。
【請求項１５】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、当該最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、当該最初に記憶されたコマンド情報よりも先に、当該何れか一つのコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項１３に記載のバスシステム。
【請求項１６】
前記転送応答入力時間計測部で計測された、前記バススレーブ毎の転送応答入力時間に基づいて、当該転送応答入力時間が増加傾向にあるバススレーブへの前記コマンド情報の出力数を制限するように、前記転送要求出力順序制御部に指示するキュー数制御部をさらに備え、
前記転送要求出力順序制御部は、前記キュー数制御部から指示されたバススレーブへの前記コマンド情報の出力数を制限すること
を特徴とする請求項１３から１５の何れか一項に記載のバスシステム。
【請求項１７】
データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成過程と、
前記アクセス生成過程で生成されたコマンド情報を複数記憶するコマンドキューイング過程と、
前記コマンドキューイング過程で記憶された複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御過程と、
前記転送要求出力順序制御過程で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力過程と、を有すること
を特徴とするバス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バスマスタ、バスシステム及びバス制御方法に関する。
【背景技術】
【０００２】
近年プロセスの微細化が進み、ＬＳＩにＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、グラフィックコントローラ及び数百キロバイト以上のキャッシュメモリを内蔵したシステムＬＳＩが、通信機器又は画像処理装置等に搭載されている。このようなシステムＬＳＩにおいては、システムバスにてモジュール間が接続され、データ転送が行われている。【０００３】
システムＬＳＩ向けのオンチップ・バス規格としては、英国ＡＲＭ社が策定したＡＸＩプロトコルに従った構造が主流となっている。ＡＸＩプロトコルに従ったオンチップ・バスの構造では、ＣＰＵ、グラフィックコントローラ、ＤＭＡ（Ｄｙｎａｍｉｃ  Ｍｅｍｏｒｙ  Ａｃｃｓｅｓｓ）コントローラ等に代表されるバスマスタと、キャッシュメモリ、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等に代表される外部メモリ等のバススレーブとが、バスインターコネクトを介してポイントツーポイントに接続される。そして、バスマスタが、バススレーブへの書き込み動作又は読み出し動作を完了するには、バススレーブから書き込み応答チャネル信号又は読み出しデータチャネル信号が出力されるまで待たなければならない。このため、バスシステムとして、データ転送性能を向上するためには、バスマスタの待ち時間を少なくする必要がある。【０００４】
ここで、特許文献１には、書き込みアクセスにおけるデータの書き込み結果を示す書き込み応答信号を受けた後に次のアクセスを行うバスマスタを備えるバスシステムが記載されている。そして、このバスシステムは、バスマスタから出力される書き込みデータ信号の終了を検出した場合に、ダミー書き込み応答チャネル信号をバスマスタに出力する信号生成部を備えている。
特許文献１に記載されたバスシステムにおけるバスマスタは、本来の書き込み応答チャネル信号を受け取る前に、ダミー書き込み応答チャネル信号を受け取るため、このダミー書き込み応答チャネル信号に応じて、次のアクセスの準備を開始することができる。このため、バススレーブにおける書き込みと、バスマスタにおける次のアクセスの準備とを並列に処理することができる。従って、同時に発行できる書き込みコマンド数が１つと規定されるバスマスタにおいては、書き込みアクセス後に連続して書き込み又は読み出しアクセスを行う場合における遅延時間を削減することができる。つまり、書き込みアクセスを行った場合において、データ転送性能を向上することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−９５９７８号公報（段落００３２〜００５２、第２図）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、ダミー書き込み応答チャネル信号の発行から本来の書き込み応答チャネル信号が得られるまでの期間、次の書き込みアドレスチャネル信号及び読み出しアドレスチャネル信号がマスクされるので、データ転送要求を連続して出力することができない。このため、ＡＸＩで規定されるアウトオブオーダ転送のような複数のデータ転送を並行して行うことで、データ転送性能を向上させる効果を得ることができない。【０００７】
そこで、この発明は、上述のような課題を解決する為になされたものであり、転送要求のコマンド情報を送る順番を制御することで、データ転送性能を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様に係るバスマスタは、データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、前記コマンドキューに記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御部と、前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えることを特徴とする。【０００９】
本発明の一態様に係るバスシステムは、少なくとも１つのバスマスタ及び複数のバススレーブを備えるバスシステムであって、前記少なくとも１つのバスマスタは、データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先の、前記複数のバススレーブの内の１つのバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、前記コマンドキューに記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御部と、前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えることを特徴とする。【００１０】
本発明の一態様に係るバス制御方法は、データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成過程と、前記アクセス生成過程で生成されたコマンド情報を複数記憶するコマンドキューイング過程と、前記コマンドキューイング過程で記憶された複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御過程と、前記転送要求出力順序制御過程で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力過程と、を有することを特徴とする。
【発明の効果】
【００１１】
本発明の一態様によれば、転送要求のコマンド情報を送る順番を制御することで、データ転送性能を向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１〜３に係るバスシステムの構成を概略的に示すブロック図である。
【図２】実施の形態１におけるバスマスタ１１０の構成を概略的に示すブロック図である。
【図３】実施の形態１におけるコマンドキューに記憶される情報を示す概略図である。
【図４】実施の形態１におけるアドレスマップ情報の一例を示す概略図である。
【図５】実施の形態１における転送順序整合情報の一例を示す概略図である。
【図６】実施の形態１におけるコマンドキュー滞留時間比較部が転送順序整合情報を更新する処理を示すフローチャートである。
【図７】実施の形態１における転送要求出力順序制御部が転送順序整合情報を参照して、コマンドキューに記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャートである。
【図８】実施の形態１における転送順序整合情報が更新される前の動作を示すタイムチャートである。
【図９】実施の形態１における転送順序整合情報が更新された後の動作を示すタイムチャートである。
【図１０】実施の形態２におけるバスマスタの構成を概略的に示すブロック図である。
【図１１】実施の形態２における転送応答入力時間記憶部に記憶されている転送応答入力時間情報の一例を示す概略図である。
【図１２】実施の形態３におけるバスマスタの構成を概略的に示すブロック図である。
【図１３】実施の形態３におけるバスマスタの動作を示すタイミングチャートである。
【図１４】実施の形態４に係るバスシステムの構成を概略的に示すブロック図である。
【図１５】実施の形態４におけるバスマスタの構成を概略的に示すブロック図である。
【図１６】実施の形態４において、キュー数制御部がバスマスタから転送応答入力時間信号を得て、出力キュー数制御信号をバスマスタに与える際の処理を示すフローチャート（その１）である。
【図１７】実施の形態４において、キュー数制御部がバスマスタから転送応答入力時間信号を得て、出力キュー数制御信号をバスマスタに与える際の処理を示すフローチャート（その２）である。
【図１８】実施の形態４における転送要求出力順序制御部が、バススレーブへ出力する転送要求数の上限を抑制した場合のバスマスタの動作を示すタイミングチャートである。
【図１９】実施の形態５に係るバスシステムの構成を概略的に示すブロック図である。
【図２０】実施の形態５におけるバスマスタの構成を概略的に示すブロック図である。
【図２１】実施の形態５における転送要求出力順序制御部が転送順序整合情報とバススレーブの最大転送要求数を参照して、コマンドキューに記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャート（その１）である。
【図２２】実施の形態５における転送要求出力順序制御部が転送順序整合情報とバススレーブの最大転送要求数を参照して、コマンドキューに記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャート（その２）である。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１は、実施の形態１に係るバスシステム１００の構成を概略的に示すブロック図である。バスシステム１００は、バスマスタ１１０Ａ〜１１０Ｃ（特に各々を区別する必要がないときは、バスマスタ１１０という）と、バススレーブ１３０Ａ〜１３０Ｃ（特に各々を区別する必要がないときは、バススレーブ１３０という）とが、バスインターコネクト１５０を介して接続されている。バスシステム１００は、ＡＸＩプロトコルに従ったオンチップ・バスである。なお、図１の括弧内の符号は、実施の形態２及び３における構成を示している。
【００１４】
図１に示されているバスマスタ１１０において、「＃」の後に記載された数字は、バスマスタ１１０を識別するためのバスマスタ識別情報としてのバスマスタ番号である。また、図１に示されているバススレーブ１３０において、「＃」の後に記載された数字は、バススレーブ１３０を識別するためのバススレーブ識別情報としてのバススレーブ番号である。
バスマスタ１１０は、ＣＰＵ、グラフィックコントローラ又はＤＭＡコントローラ等である。また、バススレーブ１３０は、キャッシュメモリ又はＤＲＡＭ等である。
【００１５】
まず、図１を用いて、ＡＸＩプロトコルについて説明する。
ＡＸＩプロトコルでは、バスマスタ１１０とバススレーブ１３０との間の転送は、経路毎に独立して行うことができる。例えば、図１において、バスマスタ１１０Ａ及びバススレーブ１３０Ａの間のデータ転送と、バスマスタ１１０Ｂ及びバススレーブ１３０Ｂとの間のデータ転送とは、独立して行うことができる。
【００１６】
また、ＡＸＩプロトコルでは、書き込みアドレスチャネル、書き込みデータチャネル、書き込み応答チャネル、読み出しアドレスチャネル、読み出しデータチャネルの５つチャネルが規定されている。そして、各チャネルは、同一経路内であっても独立して動作させることができる。例えば、書き込みアドレスチャネル信号が複数回連続して発行されてもよいし、書き込みチャネル信号の送受信と、読み出しチャネル信号の送受信とが同時に行われてもよい。即ち、ＡＸＩプロトコルでは、複数のデータ転送を並行して行うことができる。
【００１７】
さらに、各チャネルには転送毎に異なる転送ＩＤが付与される。例えば、バスマスタ１１０Ａが、異なる転送ＩＤを使用して、読み出しアドレスチャネル信号をバススレーブ１３０Ａ〜１３０Ｃの２つ以上に出力した場合、２つ以上のデータ転送が並行してバススレーブ１３０Ａ〜１３０Ｃにて実行される。
ここで、バススレーブ１３０Ａ〜１３０Ｃがバスマスタ１１０Ａより入力された転送要求を処理するのに要する時間は、バススレーブ１３０Ａ〜１３０Ｃ毎の動作周波数、及び、バススレーブ１３０Ａ〜１３０Ｃを構成するメモリ等の読み出しサイクル数に依存する。従って、バススレーブ１３０Ａ〜１３０Ｃがバスインターコネクト１５０を経由してバスマスタ１１０Ａに転送応答を出力する順序は、バスマスタ１１０Ａから転送要求を受け取った順序とは必ずしも一致しない。ＡＸＩプロトコルでは、このようなアウトオブオーダ転送に対応しており、複数のデータ転送を並行して効率よく行うことができる。
【００１８】
各チャネルでは、バスマスタ１１０とバススレーブ１３０との間で、Ｖａｌｉｄ信号及びＲｅａｄｙ信号を用いて、ハンドシェイクが行われる。バスマスタ１１０は、書き込みアドレスチャネル、書き込みデータチャネル及び読み出しアドレスチャネルのＶａｌｉｄ信号を出力し、バススレーブ１３０は、それぞれに対応するＲｅａｄｙ信号を出力する。また、バススレーブ１３０は、書き込み応答チャネル及び読み出しデータチャネルのＶａｌｉｄ信号を出力し、バスマスタ１１０は、それぞれに応答するＲｅａｄｙ信号を出力する。なお、Ｖａｌｉｄ信号及びＲｅａｄｙ信号には、それぞれを区別するために、チャネル毎に個別の名称が付けられる。
【００１９】
例えば、バスマスタ１１０Ａからバススレーブ１３０Ａへのデータ書き込みは、バスマスタ１１０Ａが書き込みアドレスチャネル信号及び書き込みデータチャネル信号をそれぞれＶａｌｉｄ信号とともに出力する。バススレーブ１３０Ａは、バスマスタ１１０Ａから入力された書き込みアドレスチャネル信号及び書き込みデータチャネル信号を、Ｒｅａｄｙ信号を出力して取り込み、書き込み処理を開始する。
【００２０】
バススレーブ１３０が書き込みに要する時間は、バススレーブ１３０を駆動する動作周波数及びデータの書き込みフロー等により、バススレーブ１３０毎に異なる。例えば、バススレーブ１３０ＡがＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）で構成される高速アクセス可能なキャッシュメモリの場合、動作周波数はバスインターコネクト１５０と同等又はそれ以上であり、バススレーブ１３０Ａは、最速で１クロックサイクルで書き込み処理を完了する。
【００２１】
一方、バススレーブ１３０Ａが外部とのシリアルインターフェース等である場合、インターフェースでの処理速度が比較的低速な上に、バス信号を複数回に分割する必要があるため、書き込み処理を完了するまでに多くのサイクル数を要する。
【００２２】
バススレーブ１３０Ａは、書き込み処理を完了すると、バスマスタ１１０Ａに書き込み応答チャネル信号をＶａｌｉｄ信号とともに出力する。バスマスタ１１０Ａは書き込み応答チャネル信号をＲｅａｄｙ信号を出力して取り込み、一連の書き込み動作を完了する。
【００２３】
バスマスタ１１０Ａからバススレーブ１３０Ａへのデータ読み出しは、バスマスタ１１０Ａが読み出しアドレスチャネル信号をＶａｌｉｄ信号とともに出力する。バススレーブ１３０Ａは、バスマスタ１１０Ａから入力された読み出しアドレスチャネル信号を、Ｒｅａｄｙ信号を出力して取り込み、読み出し処理を開始する。
【００２４】
バススレーブ１３０Ａが読み出しに要する時間は、前述と同様に、バススレーブ１３０Ａ毎に異なる。バススレーブ１３０Ａは、読み出し処理を完了すると、バスマスタ１１０Ａに読み出しデータチャネル信号をＶａｌｉｄ信号とともに出力する。バスマスタ１１０Ａは読み出しデータチャネル信号を、Ｒｅａｄｙ信号を出力して取り込み、一連の読み出し動作を完了する。
【００２５】
図２は、実施の形態１におけるバスマスタ１１０の構成を概略的に示すブロック図である。バスマスタ１１０は、アクセス生成部１１１と、コマンドキュー１１２と、データキュー１１３と、転送要求出力順序制御部１１４と、転送要求出力部１１５と、転送応答入力部１１６と、アドレスマップ記憶部１１７と、コマンドキュー滞留時間比較部１１８と、転送順序整合情報記憶部１１９とを備える。
【００２６】
バスマスタ１１０は、例えば、ＣＰＵ又はＤＭＡコントローラのように、メモリ又は周辺機器へデータ転送を行うモジュールである。このため、アクセス生成部１１１は、データの転送要求を生成して、この転送要求をコマンドキュー１１２及びデータキュー１１３に与える。この転送要求は、書き込み又は読み出しの転送種別、転送対象アドレス及び転送データ長（バースト長ともいう）にて構成されるコマンド情報と、転送種別が書き込みの場合における書き込みデータとを含む。アクセス生成部１１１は、転送種別、転送対象アドレス及び転送データ長を含むコマンド情報をコマンドキュー１１２に記憶させ、書き込みデータをデータキュー１１３に記憶させる。言い換えると、アクセス生成部１１１は、データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成して、このコマンド情報をコマンドキュー１１２に記憶させる。
【００２７】
コマンドキュー１１２は、アクセス生成部１１１で生成されたコマンド情報を記憶する。なお、コマンドキュー１１２は、コマンド情報の他、コマンド情報を管理するための管理情報も記憶する。図３は、コマンドキュー１１２に記憶される情報を示す概略図である。なお、図３では、コマンドキュー１１２のキュー構成数を「４」としており、キュー番号「０」〜「３」が割り当てられている領域へ情報を記憶する例を示しているが、バスマスタ１１０の動作速度又は転送データ量等によって、任意のキュー数にて構成してよい。
【００２８】
コマンド情報は、各々、アクセス生成部１１１より与えられた転送種別、転送対象アドレス及び転送データ長を含む。
転送種別は、データの転送を要求する転送要求の種別を示す情報である。ここでは、転送種別として、バススレーブ１３０にデータを書き込む「書き込み」と、バススレーブ１３０からデータを読み出す「読み出し」とがある。
転送対象アドレスは、転送要求の送り先のバススレーブ１３０のアドレスである。
転送データ長は、転送を行うデータのサイズを示す情報である。
【００２９】
管理情報は、コマンド情報毎に、キュー有効無効情報、転送要求出力情報及び転送ＩＤを含む。
キュー有効無効情報は、対応するコマンド情報が有効か無効かを示す情報である。キュー有効無効情報が「無効」を示す場合には、対応するコマンド情報が削除されたことになる。
転送要求出力情報は、対応するコマンド情報が出力されたか否かを示す情報である。転送要求出力情報が「未」の場合には、対応するコマンド情報がバススレーブ１３０に送られていないことを示し、転送要求出力情報が「済」の場合には、対応するコマンド情報が送られたことを示す。
転送ＩＤは、各々のコマンド情報を識別するための転送識別情報である。
【００３０】
コマンドキュー１１２では、コマンド情報がアクセス生成部１１１から与えられた順番に従って、各コマンド情報及びその管理情報がキュー番号「０」〜「３」の領域に記憶される。言い換えると、コマンドキュー１１２に最も早く与えられたコマンド情報及びその管理情報がキュー番号「０」の領域に格納され、次に与えられたコマンド情報及びその管理情報がキュー番号「１」の領域に格納される。即ち、キュー番号は、コマンド情報がアクセス生成部１１１から与えられた順番を示す。
【００３１】
転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する。例えば、転送要求出力順序制御部１１４は、転送順序整合情報記憶部１１９に記憶されている転送順序整合情報を参照して、出力対象のコマンド情報を選択することで、コマンドキュー１１２に記憶されたコマンド情報を出力する順序を制御する。より詳細には、転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶されたコマンド情報を記憶された順にバスインターコネクト１５０に出力するか、後に記憶されたコマンド情報を前に記憶されたコマンド情報よりも先にバスインターコネクト１５０に出力するかを判定する。そして、転送要求出力順序制御部１１４は、その判定結果に応じて、出力するコマンド情報を選択する。選択されたコマンド情報は、転送要求出力部１１５よりバスインターコネクト１５０に出力される。なお、コマンド情報の転送種別が「書き込み」の場合は、データキュー１１３に記憶された書き込みデータも出力される。
【００３２】
転送要求出力部１１５は、転送要求出力順序制御部１１４で選択されたコマンド情報を、この選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブ１３０に出力する。転送要求出力部１１５での具体的な処理は、以下の通りである。
【００３３】
転送要求出力部１１５は、コマンドキュー１１２に記憶されたコマンド情報をバスインターコネクト１５０へ出力する際に転送ＩＤを付与する。転送ＩＤは、バスインターコネクト１５０にて書き込み、読み出し毎に独立して識別される。付与される転送ＩＤは、コマンド情報が記憶されたコマンドキュー１１２のキュー番号がそのまま用いられてもよく、また、書き込み、読み出し毎に出力済みのコマンド情報の転送ＩＤを除く最小の番号（「０」以上の整数）が用いられてもよい。なお、転送要求出力部１１５は、転送ＩＤを付与した場合には、転送ＩＤを付与したアドレス情報の管理情報として、付与した転送ＩＤをコマンドキュー１１２に格納する。
【００３４】
転送要求出力部１１５は、コマンドキュー１１２に記憶されたコマンド情報の種別が「書き込み」である場合には、コマンドキュー１１２に記憶されたコマンド情報を示す書き込みアドレスチャネル信号ＷＡＣ及びデータキュー１１３に記憶された書き込みデータを示す書き込みデータチャネル信号ＷＤＣを、Ｖａｌｉｄ信号とともに、バスインターコネクト１５０に出力する。
また、転送要求出力部１１５は、コマンドキュー１１２に記憶されたコマンド情報の種別が「読み出し」である場合には、コマンドキュー１１２に記憶されたコマンド情報を示す読み出しアドレスチャネル信号ＲＡＣを、Ｖａｌｉｄ信号とともに、バスインターコネクト１５０に送る。
【００３５】
図１に示されているように、バスインターコネクト１５０には、バススレーブ１３０が接続されている。
バスインターコネクト１５０は、書き込みアドレスチャネル信号ＷＡＣ、書き込みデータチャネル信号ＷＤＣ及び読み出しアドレスチャネル信号ＲＡＣを、転送対象アドレスに対応するバススレーブ１３０に転送する。バススレーブ１３０は、信号を受け取れることを示すＲｅａｄｙ信号を出力することで、これらの信号を受信する。なお、転送データ長が「１」よりも大きい場合には、書き込みデータチャネル信号ＷＤＣは、そのデータ長分出力される。最後の書き込みデータチャネル信号ＷＤＣを出力する際には、転送要求出力部１１５は、Ｖａｌｉｄ信号とともにＬａｓｔ信号を出力する。
書き込みアドレスチャネル信号ＷＡＣ及び書き込みデータチャネル信号ＷＤＣを受け取ったバススレーブ１３０は、書き込み応答チャネル信号ＷＲＣを、Ｖａｌｉｄ信号とともにバスインターコネクト１５０に出力する。ここで、転送データ長が「１」よりも大きい場合には、最後の書き込みデータチャネル信号ＷＤＣの受信が完了した際に、バススレーブ１３０は、書き込み応答チャネル信号ＷＲＣを出力する。
また、読み出しアドレスチャネル信号ＲＡＣを受け取ったバススレーブ１３０は、対応する読み出しデータを示す読み出しデータチャネル信号ＲＤＣを、Ｖａｌｉｄ信号とともにバスインターコネクト１５０に出力する。ここで、転送データ長が「１」よりも大きい場合には、最後の読み出しデータチャネル信号ＲＤＣを出力する際に、バススレーブ１３０は、Ｖａｌｉｄ信号とともにＬａｓｔ信号を出力する。
【００３６】
バススレーブ１３０が、転送要求を即時に受け付けられるかどうかは、個々のバススレーブ１３０毎にその動作周波数及び転送データの処理方法に依存して決定される。バススレーブ１３０にて即時に転送要求を受け付けられない場合は、そのバススレーブ１３０は、Ｒｅａｄｙ信号を出力するタイミングを遅延させて、バスインターコネクト１５０への受け付けを延期する。バスインターコネクト１５０は、バススレーブ１３０から入力されたＲｅａｄｙ信号をバスマスタ１１０の転送要求出力部１１５に転送し、転送要求出力部１１５は、Ｒｅａｄｙ信号が有効になるまで、信号の出力を維持する。
【００３７】
図２の説明に戻り、転送応答入力部１１６は、転送要求出力部１１５から出力されたコマンド情報に対する、バススレーブ１３０からの応答の入力を受ける。例えば、転送応答入力部１１６は、バスインターコネクト１５０にＲｅａｄｙ信号を出力することで、バスインターコネクト１５０より書き込み応答チャネル信号ＷＲＣ又は読み出しデータチャネル信号ＲＤＣを受け取る。そして、転送応答入力部１１６は、受け取った信号の転送ＩＤを、コマンドキュー滞留時間比較部１１８に通知する。
【００３８】
アドレスマップ記憶部１１７は、転送対象アドレスと、当該転送対象アドレスを有するバススレーブ１３０のバススレーブ番号とを含むアドレスマップ情報を記憶する。
図４は、アドレスマップ情報の一例を示す概略図である。
アドレスマップ情報１１７ａは、ベースアドレス欄１１７ｂと、上限アドレス欄１１７ｃと、バススレーブ番号欄１１７ｄとを有するテーブル情報である。
ベースアドレス欄１１７ｂは、基準となる転送対象アドレスを格納する。
上限アドレス欄１１７ｃは、上限となる転送対象アドレスを格納する。
バススレーブ番号欄１１７ｄは、ベースアドレス欄１１７ｂに格納された基準となる転送対象アドレスと、上限アドレス欄１１７ｃに格納された上限となる転送対象アドレスとの間に含まれる転送対象アドレスが割り振られたバススレーブ１３０のバススレーブ番号を格納する。
即ち、ベースアドレス欄１１７ｂと、上限アドレス欄１１７ｃとで特定されるアドレスの範囲に含まれる転送対象アドレスは、そのレコードのバススレーブ番号欄１１７ｄで特定されるバススレーブ番号を有するバススレーブ１３０が保有するものとなる。従って、アドレスマップ情報１１７ａで、転送対象アドレスが割り振られているバススレーブを特定することができる。
【００３９】
コマンドキュー滞留時間比較部１１８は、コマンドキュー１１２に記憶されたコマンド情報が出力されてから、このコマンド情報に基づく応答が取得されるまでの滞留時間を比較して、この滞留時間が長いコマンド情報の転送先であるバススレーブ１３０へのコマンド情報が、他のバススレーブ１３０へのコマンド情報よりも先に出力されるように、転送順序整合情報記憶部１１９に記憶されている転送順序整合情報を更新する。
例えば、コマンドキュー滞留時間比較部１１８は、コマンドキュー１１２に記憶されている管理情報及びコマンド情報を参照することで、転送応答入力部１１６から通知された転送ＩＤに基づいて、応答のあったコマンド情報の転送対象アドレス及びキュー番号を特定する。そして、コマンドキュー滞留時間比較部１１８は、アドレスマップ記憶部１１７に記憶されているアドレスマップ情報１１７ａを参照することで、特定された転送対象アドレスを有するバススレーブ１３０を特定する。次に、コマンドキュー滞留時間比較部１１８は、特定されたキュー番号よりも小さいキュー番号に割り当てられ、未だ有効なコマンド情報、言い換えると、応答のあったコマンド情報よりも先に出力され未だ応答のないコマンド情報があるか否かを確認する。このようなコマンド情報がある場合には、コマンドキュー滞留時間比較部１１８は、アドレスマップ記憶部１１７に記憶されているアドレスマップ情報１１７ａを参照することで、このようなコマンド情報の転送先のバススレーブ１３０を特定する。そして、コマンドキュー滞留時間比較部１１８は、応答のあったコマンド情報から特定されたバススレーブ１３０へのコマンド情報よりも、応答のないコマンド情報から特定されたバススレーブ１３０へのコマンド情報が先に出力されるように、転送順序整合情報記憶部１１９に記憶されている転送順序整合情報を更新する。
【００４０】
転送順序整合情報記憶部１１９は、バススレーブ１３０の組み合わせ毎に、出力されたコマンド情報への応答が逆転したか否かを示す情報を含む転送順序整合情報を記憶する。
図５は、転送順序整合情報の一例を示す概略図である。
転送順序整合情報１１９ａは、先行スレーブ列１１９ｂと、後続スレーブ行１１９ｃとを備えるテーブル情報である。
先行スレーブ列１１９ｂには、バスインターコネクト１５０に接続されているバススレーブ１３０のバススレーブ番号が、各々の欄に格納されている。
後続スレーブ行１１９ｃには、バスインターコネクト１５０に接続されているバススレーブ１３０のバススレーブ番号が、各々の欄に格納されている。
そして、先行スレーブ列１１９ｂに格納されたバススレーブ番号及び後続スレーブ行１１９ｃに格納されたそれぞれのバススレーブ番号に対応する欄１１９ｄには、先行スレーブ列１１９ｂに格納されたバススレーブ番号で特定されるバススレーブ１３０と、後続スレーブ行１１９ｃに格納されたバススレーブ番号で特定されるバススレーブ１３０との間の応答の取得順序を示す情報が格納される。
例えば、この欄１１９ｄが「正順」である場合には、対応する先行スレーブ列１１９ｂに格納されたバススレーブ番号で特定されるバススレーブ１３０へのコマンド情報が先に出力され、対応する後続スレーブ行１１９ｃに格納されたバススレーブ番号で特定されるバススレーブ１３０へのコマンド情報が後で出力されたときに、出力された順序で応答が取得されたことを示す。一方、この欄１１９ｄが「逆順」である場合には、対応する先行スレーブ列１１９ｂに格納されたバススレーブ番号で特定されるバススレーブ１３０へのコマンド情報が先に出力され、対応する後続スレーブ行１１９ｃに格納されたバススレーブ番号で特定されるバススレーブ１３０へのコマンド情報が後で出力されたときに、出力された順番とは逆の順番で応答が入力されたことを示す。
なお、バスシステム１００の起動直後においては、転送順序整合情報１１９ａの内容は、全ての組合せにおいて「正順」に初期化される。
【００４１】
図６は、コマンドキュー滞留時間比較部１１８が転送順序整合情報１１９ａを更新する処理を示すフローチャートである。
ここで、コマンドキュー滞留時間比較部１１８は、コマンドキュー１１２に記憶されているコマンド情報及び管理情報を参照して、転送応答入力部１１６から通知された転送ＩＤと一致する転送ＩＤを有するキュー番号をＱ（０≦Ｑ≦（キュー数−１））として特定する。そして、コマンドキュー滞留時間比較部１１８は、管理情報において、特定されたキュー番号Ｑのキュー有効無効情報を「有効」から「無効」に更新し、また、転送要求出力情報を、出力済みを示す「済」から未出力を示す「未」に更新する。そして、コマンドキュー滞留時間比較部１１８は、図６に示すフローを開始する。
【００４２】
まず、コマンドキュー滞留時間比較部１１８は、アドレスマップ記憶部１１７に記憶されているアドレスマップ情報を参照して、キュー番号Ｑの転送対象アドレスをもとに、キュー番号Ｑの転送先のバススレーブ１３０を識別するためのバススレーブ番号を取得する。そして、コマンドキュー滞留時間比較部１１８は、取得されたバススレーブ番号を、後続スレーブ番号とする（Ｓ１０）。
【００４３】
次に、コマンドキュー滞留時間比較部１１８は、コマンドキュー１１２から最も古いコマンド情報が格納されているキュー番号をＬ（０≦Ｌ≦（キュー数−１））として特定する（Ｓ１１）。ここで最も古いコマンドとは、現在記憶されているコマンド情報の中で、一番早くコマンドキュー１１２に格納されたキュー番号を指す。
【００４４】
次に、コマンドキュー滞留時間比較部１１８は、キュー番号ＱとＬを比較して、ＱとＬとが等しいか否かを判断する（Ｓ１２）。ＱとＬが等しい場合（Ｓ１２；Ｙｅｓ）には、それよりも前に記憶されたコマンド情報が存在しないので、コマンドキュー滞留時間比較部１１８は、転送順序整合情報を更新せず、フローを終了する。一方、ＱとＬとが等しくない場合（Ｓ１２；Ｎｏ）には、処理はステップＳ１３に進む。
【００４５】
ステップＳ１３では、コマンドキュー滞留時間比較部１１８は、アドレスマップ記憶部１１７に記憶されているアドレスマップ情報を参照して、キュー番号Ｌの転送対象アドレスをもとに、キュー番号Ｌの転送先のバススレーブ１３０を識別するためのバススレーブ番号を取得する。そして、コマンドキュー滞留時間比較部１１８は、取得されたバススレーブ番号を、先行スレーブ番号とする（Ｓ１３）。
【００４６】
次に、コマンドキュー滞留時間比較部１１８は、先行スレーブ番号と、後続スレーブ番号とを比較して、これらが同一であるか否かを判断する（Ｓ１４）。これらが同一である場合（Ｓ１４；Ｙｅｓ）には、処理はステップＳ１８に進み、これらが同一ではない場合（Ｓ１４；Ｎｏ）には、処理はステップＳ１５に進む。
【００４７】
ステップＳ１５では、コマンドキュー滞留時間比較部１１８は、コマンドキュー１１２に記憶されている管理情報を参照することで、キュー番号Ｌのコマンド情報が「有効」か否かを判断する。そして、キュー番号Ｌのコマンド情報が「有効」である場合（Ｓ１５；Ｙｅｓ）には、処理はステップＳ１６に進み、キュー番号Ｌのコマンド情報が「無効」である場合（Ｓ１５；Ｎｏ）には、処理はステップＳ１７に進む。
【００４８】
ステップＳ１６では、転送応答の入力順序が後続スレーブから先行スレーブとなっているため、転送要求（コマンド情報）の出力順序と、転送応答の入力順序とが一致しない。このため、コマンドキュー滞留時間比較部１１８は、転送順序整合情報記憶部１１９に記憶されている転送順序整合情報１１９ａにおいて、対応する欄１１９ｄの値を「逆順」に更新する。そして、処理はステップＳ１８に進む。
【００４９】
一方、ステップＳ１７では、転送応答の入力順序が先行スレーブから後続スレーブとなっているため、コマンドキュー滞留時間比較部１１８は、転送順序整合情報記憶部１１９に記憶されている転送順序整合情報１１９ａにおいて、対応する欄１１９ｄの値を「正順」に更新する。そして、処理はステップＳ１８に進む。
【００５０】
ステップＳ１８では、コマンドキュー滞留時間比較部１１８は、キュー番号Ｌに「１」をインクリメントして、ステップＳ１２の処理に戻る。そして、コマンドキュー滞留時間比較部１１８は、キュー番号Ｌがキュー番号Ｑと一致するまでステップＳ１２〜Ｓ１８の処理を繰り返す。
例えば、コマンドキュー１１２に記憶されているコマンド情報及び管理情報が、図３に示されている情報であるものとする。そして、キュー番号「０」から「３」の順にコマンド情報が出力され、転送応答の入力順序がキュー番号「０」、「１」、「３」及び「２」の順番となった場合、先行スレーブ番号「３」のバススレーブ１３０Ｃよりも、後続スレーブ番号「１」のバススレーブ１３０Ａからの転送応答がより早く入力されている。このような場合には、転送順序整合情報１１９ａは、図６に示されているように、先行スレーブ番号「３」（バススレーブ＃３）及び後続スレーブ番号「１」（バススレーブ＃１）の組合せに対応する欄１１９ｄが「逆順」に更新され、それ以外の組み合わせに対応する欄１１９ｄは「正順」に更新される。
【００５１】
図７は、転送要求出力順序制御部１１４が転送順序整合情報１１９ａを参照して、コマンドキュー１１２に記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャートである。
【００５２】
まず、転送要求出力順序制御部１１４は、キュー番号「０」から順に、キュー状態が有効かつ転送要求出力済みでないキュー番号Ｘを探す（Ｓ２０〜Ｓ２２）。
具体的には、転送要求出力順序制御部１１４は、キュー番号の最小値である「０」をキュー番号Ｘとし、コマンドキュー１１２にコマンド情報を格納することのできる数をキュー数Ｎとする（Ｓ２０）。ここで、図３に示された例では、キュー数Ｎは「４」である。
次に、転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶されている管理情報を参照することで、キュー番号Ｘのコマンド情報が「有効」であるか否かを判断する（Ｓ２１）。キュー番号Ｘのコマンド情報が「有効」である場合（Ｓ２１；Ｙｅｓ）には、処理はステップＳ２２に進み、キュー番号Ｘのコマンド情報が「無効」である場合（Ｓ２１；Ｎｏ）には、処理はステップＳ２９に進む。
ステップＳ２２では、転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶されている管理情報を参照することで、キュー番号Ｘのコマンド情報が出力済みであるか否かを判断する。キュー番号Ｘのコマンド情報が出力済みである場合（Ｓ２２；Ｙｅｓ）には、処理はステップＳ２９に進み、キュー番号Ｘのコマンド情報が出力済みではない場合（Ｓ２２；Ｎｏ）には、処理はステップＳ２３に進む。
【００５３】
ステップＳ２３では、転送要求出力順序制御部１１４は、キュー番号（Ｘ＋１）のコマンド情報が「有効」か否かを判断する。キュー番号（Ｘ＋１）のコマンド情報が「有効」である場合（Ｓ２３；Ｙｅｓ）には、処理はステップＳ２４に進み、キュー番号（Ｘ＋１）のコマンド情報が「無効」である場合（Ｓ２３；Ｎｏ）には、処理はステップＳ２８に進む。
なお、キュー番号（Ｘ＋１）がキュー数Ｎ以上となった場合には、キュー番号（Ｘ＋１）は、キュー番号「０」（＝Ｘ＋１−Ｎ）とする。以下のステップでも同様である。
【００５４】
ステップＳ２４では、転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶されている管理情報を参照することで、キュー番号（Ｘ＋１）のコマンド情報が出力済みであるか否かを判断する。キュー番号（Ｘ＋１）のコマンド情報が出力済みである場合（Ｓ２４；Ｙｅｓ）には、処理はステップＳ２８に進み、キュー番号（Ｘ＋１）のコマンド情報が出力済みではない場合（Ｓ２４；Ｎｏ）には、処理はステップＳ２５に進む。
【００５５】
ステップＳ２５では、転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶された管理情報を参照して、キュー番号Ｘ及びキュー番号（Ｘ＋１）の転送対象アドレスを特定する。そして、転送要求出力順序制御部１１４は、アドレスマップ記憶部１１７に記憶されているアドレスマップ情報１１７ａを参照することで、キュー番号Ｘ及びキュー番号（Ｘ＋１）の転送対象アドレスに対応するバススレーブ番号を取得する。そして、転送要求出力順序制御部１１４は、キュー番号（Ｘ＋１）のバススレーブ番号を先行スレーブ番号、キュー番号Ｘのバススレーブ番号を後続スレーブ番号とする。
【００５６】
次に、転送要求出力順序制御部１１４は、転送順序整合情報１１９ａを参照して、ステップＳ２５特定した先行スレーブ番号及び後続スレーブ番号の組み合わせにおける転送要求出力順序と転送応答入力順序との関係が「逆順」であるか否かを確認する（Ｓ２６）。その確認結果が「逆順」である場合（Ｓ２６；Ｙｅｓ）には、処理はステップＳ２７に進み、その確認結果が「正順」である場合（Ｓ２６；Ｎｏ）には、処理はステップＳ２８に進む。
【００５７】
ステップＳ２７では、転送要求出力順序制御部１１４は、キュー番号（Ｘ＋１）のコマンド情報を転送要求出力部１１５に与えて、このコマンド情報を出力させる。そして、処理はステップＳ２８に進む。
ステップＳ２８では、転送要求出力順序制御部１１４は、キュー番号Ｘのコマンド情報を転送要求出力部１１５に与えて、このコマンド情報を出力させる。そして、処理はステップＳ２９に進む。
言い換えると、転送要求出力順序と転送応答入力順序との関係が「逆順」である場合には、キュー番号（Ｘ＋１）のコマンド情報を出力した後に、キュー番号Ｘのコマンド情報が出力される。一方、転送要求出力順序と転送応答入力順序との関係が「正順」である場合には、キュー番号Ｘのコマンド情報が出力される。
【００５８】
次に、転送要求出力順序制御部１１４は、キュー番号Ｘに「１」をインクリメントする（Ｓ２９）。そして、転送要求出力順序制御部１１４は、キュー番号Ｘがキュー数Ｎ以上となっていないかを確認する（Ｓ３０）。キュー番号Ｘがキュー数Ｎ以上となっている場合（Ｓ３０；Ｙｅｓ）には、転送要求出力順序制御部１１４は、フローを終了する。一方、キュー番号Ｘがキュー数Ｎ未満である場合（Ｓ３０；Ｎｏ）には、処理はステップＳ２１に戻る。なお、転送要求出力順序制御部１１４は、フローを終了した場合には、再び、図７のフローを開始する。
【００５９】
図７に示されているフローチャートにより、転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを先行スレーブとし、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを後続スレーブとして、応答が逆転したことを示す情報が転送順序整合情報１１９ａに含まれている場合に、最初に記憶されたコマンド情報よりも先に、次に記憶されたコマンド情報を、出力対象のコマンド情報として選択することができる。
【００６０】
実施の形態１に係るバスシステム１００におけるバスマスタ１１０の動作について、転送順序整合情報が更新される前と更新された後の違いを図８及び図９を用いて説明する。図８は、転送順序整合情報が更新される前、言い換えると、転送順序整合情報における全ての欄の値が「正順」になっている際の動作を示すタイムチャートである。図９は、転送順序整合情報が更新された後、言い換えると、転送順序整合情報が図５に示されている転送順序整合情報１１９ａのようになっている際の動作を示すタイムチャートである。図８及び図９は、いずれもバスマスタ１１０がコマンドキュー１１２に記憶されている、図３に示されているコマンド情報及び管理情報に基づいて、複数のバススレーブ１３０へのデータ転送を順に処理する場合を示している。
【００６１】
図８及び図９において、時刻（Ｔ１）〜時刻（Ｔ１３）は、同一の単位時間毎の時刻である。また、書き込みアドレスチャネル信号ＷＡＣと書き込みデータチャネル信号ＷＤＣは、バスマスタから同じ時間間隔で出力されるものとする。さらに、図８及び図９では、バススレーブ１３０Ａ及びバススレーブ１３０Ｂから転送応答を得るまでに要する時間は、２単位時間、バススレーブ１３０Ｃから転送応答を得るまでに要する時間は、７単位時間とする。
【００６２】
転送順序整合情報は、バスシステム１００の起動直後又はリセット直後では、全ての欄が「正順」に初期化される。転送順序整合情報が初期化された状態では、転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶された順序に従って、転送種別、転送対象アドレス及び転送データ長を取り出して、転送要求出力部１１５に与える。コマンドキュー１１２ａに記憶されている情報が、図３に示されているようになっている場合、転送要求出力部１１５は、時刻（Ｔ１）、時刻（Ｔ３）、時刻（Ｔ５）及び時刻（Ｔ７）にて書き込みアドレスチャネル信号ＷＡＣを、時刻（Ｔ２）、時刻（Ｔ４）、時刻（Ｔ６）及び時刻（Ｔ８）にて書き込みデータチャネル信号ＷＤＣをそれぞれ転送対象アドレスＡ２１、転送対象アドレスＡ１１、転送対象アドレスＡ３１及び転送対象アドレスＡ１２の順に発行する。
【００６３】
なお、転送対象アドレスＡ１１及び転送対象アドレスＡ１２は、図４に示されているアドレスマップ情報における、ベースアドレスＡ１Ｓ以上、上限アドレスＡ１Ｅ未満の値であるため、バススレーブ番号「１」のバススレーブ１３０Ａが有する転送対象アドレスである。同様に、転送対象アドレスＡ２１は、バススレーブ番号「２」のバススレーブ１３０Ｂが有する転送対象アドレスである。さらに、転送対象アドレスＡ３１は、バススレーブ番号「３」のバススレーブ１３０Ｃが有する転送対象アドレスである。
【００６４】
コマンドキュー１１２のキュー番号２に記憶されたアドレスＡ３１、即ち、バススレーブ１３０Ｃへの転送要求に対する応答は、転送要求を発行した時刻（Ｔ６）から７単位時間後の時刻（Ｔ１３）に得られる。一方、キュー番号３に記憶されたアドレスＡ１２、即ち、バススレーブ１３０Ａへの転送要求に対しては、転送応答を得るまでに要する時間がバススレーブ１３０Ｃより小さく、時刻（Ｔ８）から２単位時間分経過した後、時刻（Ｔ１０）にて転送応答が得られる。
【００６５】
コマンドキュー滞留時間比較部１１８は、時刻（Ｔ１０）にてキュー番号３に対応するバススレーブ１３０Ａからの転送応答を得ると、キュー番号０から順に転送先スレーブ番号を求める。この際、コマンドキュー滞留時間比較部１１８は、バススレーブ１３０Ａのバススレーブ番号「１」を後続スレーブ番号とする。キュー番号０には、バススレーブ１３０Ｂ（バススレーブ番号「２」）へのコマンド情報が記憶されているので、バススレーブ番号「２」を先行スレーブ番号とする（図６のステップＳ１３）。先行スレーブ番号「２」と後続スレーブ番号「１」とは異なるので、コマンドキュー滞留時間比較部１１８は、キュー番号０のコマンド情報が「有効」か「無効」かを確認する（図６のステップＳ１５）。キュー番号０のコマンド情報に対する転送応答は、時刻（Ｔ４）に入力済みであり、時刻（Ｔ１０）時点では、キュー番号０のコマンド情報は、無効化されている。従って、キュー番号０とキュー番号３の転送応答入力順序は、先行スレーブ番号のバススレーブ１３０Ｂが後続スレーブ番号のバススレーブ１３０Ｃよりも先となるため、転送要求出力順序と転送応答入力順序が一致する。このため、コマンドキュー滞留時間比較部１１８は、転送順序整合情報において、対応する欄の値を「正順」に更新する（図６のステップＳ１７）。
【００６６】
次に、キュー番号１の転送先のバススレーブは、キュー番号３と同じくバススレーブ「１」のバススレーブ１３０Ａであり（図６のステップＳ１４でＹｅｓ）、コマンドキュー滞留時間比較部１１８は、転送順序整合情報を更新しない。
【００６７】
次に、キュー番号２の転送先のバススレーブは、バススレーブ番号「３」のバススレーブ１３０Ｃであり、時刻（Ｔ１０）時点では、まだキュー有効状態を維持している。従って、転送応答入力順序が後続スレーブ番号のバススレーブ１３０Ａから先行スレーブ番号のバススレーブ１３０Ｃとなり、転送要求出力順序と転送応答入力順序が一致しないので、コマンドキュー滞留時間比較部１１８は、転送順序整合情報において、対応する欄の値を「逆順」に更新する（図６のステップＳ１６）。時刻（Ｔ１０）において更新された転送順序整合情報は、図５に示されている転送順序整合情報１１９ａのように、先行スレーブ番号「３」と後続スレーブ番号「１」との組合せのみが「逆順」となっている。
【００６８】
次に、転送順序整合情報が、図５に示されている転送順序整合情報１１９ａのように更新された後のバスマスタ１１０の動作を、図９を用いて説明する。
【００６９】
転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶されたコマンド情報のうち最も古いキュー番号０のコマンド情報と、次に古いキュー番号１のコマンド情報が「有効」であり、かつ、転送要求出力済みではない状態であるので、それぞれの転送先バススレーブであるバススレーブ番号「２」及びバススレーブ番号「１」を取得する。そして、転送要求出力順序制御部１１４は、バススレーブ番号「２」を後続スレーブ番号、バススレーブ番号「１」を先行スレーブ番号とする（図７のステップＳ２５）。そして、転送要求出力順序制御部１１４は、転送順序整合情報１１９ａを参照して、先行スレーブ番号「１」と後続スレーブ番号「２」との組合せが「正順」であることを確認すると（ステップＳ２６においてＮｏ）、コマンドキュー１１２に記憶された順序通り、まずキュー番号０を選択する（図７のステップＳ２８）。そして、転送要求出力順序制御部１１４は、転送対象アドレスＡ２１に対して、時刻（Ｔ１）において、転送要求出力部１１５に書き込みアドレスチャネル信号ＷＡＣを出力させる。
【００７０】
次に、転送要求出力順序制御部１１４は、コマンドキュー１１２に記憶されているコマンド情報及び管理情報を参照して、キュー番号１及びキュー番号２が「有効」、かつ、転送要求未出力であるので、キュー番号２の転送先バススレーブであるバススレーブ番号「３」を先行スレーブ番号、キュー番号１の転送先バススレーブであるバススレーブ番号「１」を後続スレーブ番号とする（図７のステップＳ２５）。そして、転送要求出力順序制御部１１４は、転送順序整合情報１１９ａを参照して、先行スレーブ番号「３」と後続スレーブ番号「１」との組合せが「逆順」であるので、バススレーブ１３０Ｃからの転送応答を得るまでに要する時間が、バススレーブ１３０Ａからの転送応答を得るまでに要する時間よりも長いと判断する。このため、転送要求出力順序制御部１１４は、先にキュー番号２を選択して、転送要求出力部１１５に与える。そして、転送要求出力順序制御部１１４は、転送対象アドレスＡ３１に対して、時刻（Ｔ３）において、転送要求出力部１１５に書き込みアドレスチャネル信号ＷＡＣを出力させる。転送要求出力順序制御部１１４は、続いてキュー番号１を選択し、時刻（Ｔ５）において、転送要求出力部１１５に転送対象アドレスＡ１１への書き込みアドレスチャネル信号ＷＡＣを出力させる。
【００７１】
最後に、転送要求出力順序制御部１１４は、キュー番号３の次に転送要求が記憶されるキュー番号０のコマンド情報が無効であるので（図７のステップＳ２３においてＮｏ）、キュー番号３を選択する。そして、転送要求出力順序制御部１１４は、時刻（Ｔ７）において、転送要求出力部１１５にアドレスＡ１２への書き込みアドレスチャネル信号ＷＡＣを出力させる。
【００７２】
ここで、図９に示されているように、キュー番号２に記憶されたアドレスＡ３１、即ち、バススレーブ１３０Ｃ（バススレーブ番号「３」）への転送要求に対する応答は、転送要求を出力した時刻（Ｔ４）から７単位時間後の時刻（Ｔ１１）に得られる。このため、転送順序整合情報が初期化された状態での動作を示す図８と比較して、転送要求を処理し終えるまでに要する時間が２単位時間分短縮できる。
【００７３】
実施の形態１では、バススレーブ１３０Ａ〜１３０Ｃに対する転送要求出力順序と転送応答入力順序を監視して、バススレーブ１３０間において転送応答を返すまでに要する期間が長いバススレーブ１３０を特定する。バスマスタ１１０は、連続する転送要求コマンドの対象バススレーブ１３０間の特定結果をもとに、転送応答を返すまでに要する期間が長いバススレーブ１３０への転送要求を他のバススレーブ１３０への転送要求よりも先に出力する。これにより、コマンドキューの順序通りに転送要求を発行した場合に比べて、当該バススレーブ１３０から転送応答を得る時間も前にシフトでき、転送要求がコマンドキューに滞留する時間を短くすることができる。バスマスタ１１０は、コマンドキューに蓄積された転送要求に対する処理を完了するまでにかかる時間を短くでき、データ転送を効率よく行うことができる。
【００７４】
また、あるバススレーブ１３０において、例えば、ＤＲＡＭリフレッシュ、外部電源又はクロックの一端停止、又は、転送負荷の集中等で、一時的に転送処理時間が長くなると、このバススレーブ１３０への転送要求は、他のバススレーブ１３０への転送要求よりも先に出力されるようになる。その後、このバススレーブ１３０が通常状態に戻り、転送要求を先に出力する必要がなくなった場合にも、継続してコマンドキュー滞留時間の比較が行われ、転送順序整合情報が更新されるように実施の形態１は構成されている。このため、転送要求出力順序の不要な入れ換えが継続することなく、バススレーブ１３０の動作に適したバス転送を行うことができる。
【００７５】
実施の形態２．
図１に示されているように、実施の形態２に係るバスシステム２００は、バスマスタ２１０Ａ〜２１０Ｃ（特に各々を区別する必要がないときは、バスマスタ２１０という）と、バススレーブ１３０Ａ〜１３０Ｃ（特に各々を区別する必要がないときは、バススレーブ１３０という）とが、バスインターコネクト１５０を介して接続されている。実施の形態２に係るバスシステム２００は、バスマスタ２１０において、実施の形態１に係るバスシステム１００と異なっている。
【００７６】
図１０は、実施の形態２におけるバスマスタ２１０の構成を概略的に示すブロック図である。バスマスタ２１０は、アクセス生成部１１１と、コマンドキュー１１２と、データキュー１１３と、転送要求出力順序制御部２１４と、転送要求出力部１１５と、転送応答入力部１１６と、アドレスマップ記憶部１１７と、時間計測カウンタ２２０と、転送応答入力時間計測部２２１と、転送応答入力時間記憶部２２２とを備える。実施の形態２におけるバスマスタ２１０は、転送要求出力順序制御部２１４での処理の点、並びに、実施の形態１におけるコマンドキュー滞留時間比較部１１８及び転送順序整合情報記憶部１１９の代わりに、時間計測カウンタ２２０、転送応答入力時間計測部２２１及び転送応答入力時間記憶部２２２を備える点において、実施の形態１におけるバスマスタ１１０と異なっている。
【００７７】
時間計測カウンタ２２０は、予め定められた周期でカウントを行うことで、時間を計測するためのカウント値を生成する。そして、時間計測カウンタ２２０は、計測されたカウント値を転送応答入力時間計測部２２１に与える。
【００７８】
転送応答入力時間計測部２２１は、転送要求が出力されてから、その応答が入力されるまでの時間を転送応答入力時間として計測する。
例えば、転送応答入力時間計測部２２１は、転送要求出力部１１５が読み出しアドレスチャネル信号ＲＡＣ又は書き込みアドレスチャネル信号ＷＡＣを出力すると、アドレスマップ記憶部１１７に記憶されているアドレスマップ情報１１７ａを参照して、転送対象アドレスより転送先のバススレーブ１３０のバススレーブ番号を特定する。また、転送応答入力時間計測部２２１は、コマンドキュー１１２に記憶されているコマンド情報を参照して、転送要求出力部１１５が出力した読み出しアドレスチャネル信号ＲＡＣ又は書き込みアドレスチャネル信号ＷＡＣの転送ＩＤに対応する転送種別及び転送データ長を取得する。さらに、転送応答入力時間計測部２２１は、転送要求出力部１１５が読み出しアドレスチャネル信号ＲＡＣ又は書き込みアドレスチャネル信号ＷＡＣを出力した際のカウント値を時間計測カウンタ２２０より取得する。そして、転送応答入力時間計測部２２１は、転送要求出力部１１５が出力した読み出しアドレスチャネル信号ＲＡＣ又は書き込みアドレスチャネル信号ＷＡＣの転送ＩＤとともに、特定されたバススレーブ番号、取得された転送種別、取得された転送データ長及び取得されたカウント値をメモリ２２１ａに記憶しておく。その後、転送応答入力部１１６より読み出しデータチャネル信号ＲＤＣ又は書き込み応答チャネル信号ＷＲＣの転送ＩＤが通知されると、転送応答入力時間計測部２２１は、時間計測カウンタ２２０からカウント値を取得する。そして、転送応答入力時間計測部２２１は、転送ＩＤが通知された際に取得されたカウント値から、メモリ２２１ａに記憶されている、通知された転送ＩＤの転送要求が出力された際のカウント値を減算することにより、転送先のバススレーブ１３０に対する転送応答入力時間を算出する。
【００７９】
転送応答入力時間計測部２２１は、算出された転送応答入力時間と、対応するバススレーブ番号、転送種別及び転送データ長とに基づいて、転送応答入力時間記憶部２２２に記憶されている転送応答入力時間情報を更新する。例えば、転送応答入力時間計測部２２１は、既に、対応するバススレーブ番号、転送種別及び転送データ長が転送応答入力時間情報に格納されている場合には、既に格納されている転送応答入力時間を削除して、今回算出された転送応答入力時間を格納する。一方、転送応答入力時間計測部２２１は、対応するバススレーブ番号、転送種別及び転送データ長が転送応答入力時間情報に格納されていない場合には、これらの情報と今回算出された転送応答入力時間とを格納する。
ここで、転送応答入力部１１６は、入力された信号が読み出しデータチャネル信号ＲＤＣである場合には、転送データ長分の読み出しデータチャネル信号ＲＤＣが入力されるのを待って、転送ＩＤを転送応答入力時間計測部２２１に通知する。
【００８０】
転送応答入力時間記憶部２２２は、転送応答入力時間計測部２２１で計測された転送応答入力時間を、バススレーブ１３０毎に記憶する。ここで、転送応答入力時間は、バススレーブ１３０毎に、読み出しアドレスチャネル信号ＲＡＤが出力されてから読み出しデータチャネル信号ＲＤＣ（バースト読み出しの場合には最後の読み出しデータチャネル信号ＲＤＣ）が入力されるまでの時間、又は、書き込みアドレスチャネル信号ＷＡＣが出力されてから書き込み応答チャネル信号ＷＲＣが入力されるまでの時間を、時間計測カウンタ２２０の計測精度で表現した値である。
バススレーブ１３０毎に記憶される転送応答入力時間は、一般に、書き込みと読み出しとで異なり、書き込みにかかる時間と読み出しにかかる時間とが個別に記憶されてもよい。さらに、バースト転送が許容される場合には、転送データ数により転送応答入力時間が異なるため、転送データ数毎に個別に転送応答入力時間が記憶されてもよい。
図１１は、転送応答入力時間記憶部２２２に記憶されている転送応答入力時間情報の一例を示す概略図である。図１１に示されているように、転送応答入力時間情報２２２ａは、バススレーブ番号を格納するバススレーブ番号欄２２２ｂと、転送種別を格納する転送種別欄２２２ｃと、転送データ長を格納する転送データ長欄２２２ｄと、転送応答入力時間を格納する転送応答入力時間欄２２２ｅとを有するテーブル情報である。図１１では、転送先スレーブ毎に、書き込み、読み出し及びバースト長を区別して、転送応答入力時間を格納する転送応答入力時間情報２２２ａが示されている。
【００８１】
転送要求出力順序制御部２１４は、転送応答入力時間情報２２２ａに基づいて、出力対象のコマンド情報を選択することで、コマンドキュー１１２に記憶されたコマンド情報を送る順序を制御する。例えば、転送要求出力順序制御部２１４は、転送応答入力時間が長いバススレーブ１３０への転送を要求するコマンド情報が、他のバススレーブ１３０への転送を要求するコマンド情報よりも先に出力されるようにする。具体的には、転送要求出力順序制御部２１４は、転送応答入力時間情報２２２ａを参照して、コマンドキュー１１２に記憶された最も古いコマンド情報に対応する、転送種別、転送データ長及び転送先のバススレーブ１３０のバススレーブ番号の転送応答入力時間を取得して、この転送応答入力時間を、先行バススレーブの応答時間とする。次に、転送要求出力順序制御部２１４は、転送応答入力時間情報２２２ａを参照して、二番目に古いコマンド情報に対応する、転送種別、転送データ長及び転送先のバススレーブ１３０のバススレーブ番号の転送応答入力時間を取得して、この転送応答入力時間を、後続バススレーブの応答時間とする。
そして、転送要求出力順序制御部２１４は、先行バススレーブの応答時間が後続バススレーブの応答時間よりも短い場合には、最も古いコマンド情報が格納されているキュー番号を選択する。一方、転送要求出力順序制御部２１４は、先行バススレーブの応答時間が後続バススレーブの応答時間以上である場合には、二番目に古いコマンド情報が格納されているキュー番号を選択する。そして、転送要求出力順序制御部２１４は、選択されたキュー番号のコマンド情報を、転送要求出力部１１５に与える。転送要求出力部１１５は、与えられたコマンド情報の内容に従って読み出しアドレスチャネル信号ＲＡＣ又は書き込みアドレスチャネル信号ＷＡＣ１０３を生成して、生成された信号を出力する。そして、転送要求出力順序制御部２１４は、生成された信号の出力後、選択されたキュー番号の転送要求出力情報を未出力から出力済みに更新する。
【００８２】
言い換えると、実施の形態２における転送要求出力順序制御部２１４は、転送応答入力時間記憶部２２２に記憶されている転送応答入力時間を参照して、コマンドキュー１１２に記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、最初に記憶されたコマンド情報よりも先に、次に記憶されたコマンド情報を、出力対象のコマンド情報として選択することができる。
【００８３】
実施の形態２においては、バスマスタ２１０は、転送応答が返されるまでに要する時間を記憶して、転送時間が長いバススレーブ１３０への転送要求を他のバススレーブ１３０よりも先に出力して、転送を完了する時刻を前にシフトできるので、バスマスタ２１０のデータ転送を効率よく行うことができる。
【００８４】
実施の形態３．
図１に示されているように、実施の形態３に係るバスシステム３００は、バスマスタ３１０Ａ〜３１０Ｃ（特に各々を区別する必要がないときは、バスマスタ３１０という）と、バススレーブ１３０Ａ〜１３０Ｃ（特に各々を区別する必要がないときは、バススレーブ１３０という）とが、バスインターコネクト１５０を介して接続されている。実施の形態３に係るバスシステム３００は、バスマスタ３１０において、実施の形態２に係るバスシステム２００と異なっている。
【００８５】
図１２は、実施の形態３におけるバスマスタ３１０の構成を概略的に示すブロック図である。バスマスタ３１０は、アクセス生成部１１１と、コマンドキュー１１２と、データキュー１１３と、転送要求出力順序制御部３１４と、転送要求出力部１１５と、転送応答入力部１１６と、アドレスマップ記憶部１１７と、時間計測カウンタ２２０と、転送応答入力時間計測部２２１と、転送応答入力時間記憶部２２２と、タイマカウンタ３２３とを備える。実施の形態３におけるバスマスタ３１０は、転送要求出力順序制御部３１４での処理の点、及び、タイマカウンタ３２３がさらに備えられている点において、実施の形態２におけるバスマスタ２１０と異なっている。
【００８６】
タイマカウンタ３２３は、転送要求出力順序制御部３１４からの指示に応じて、予め定められた周期でカウントを行うことで、時間を計測するためのカウント値を生成する。そして、タイマカウンタ３２３は、計測されたカウント値を転送要求出力順序制御部３１４に与える。
【００８７】
転送要求出力順序制御部３１４は、コマンドキュー１１２を参照する際にタイマカウンタ３２３にカウントを開始させる。そして、転送要求出力順序制御部３１４は、転送応答入力時間記憶部２２２に記憶されている転送応答入力時間情報２２２ａを参照することで、コマンドキュー１１２に記憶された全てのコマンド情報の転送先のバススレーブ１３０、アクセス種別及びバースト長に対応する転送応答入力時間を取得する。そして、転送要求出力順序制御部３１４は、転送要求出力情報が未出力であるコマンド情報のうち、最も古いコマンド情報の転送先のバススレーブ１３０を先行スレーブ、最も古いコマンドキュー以降に記憶されたコマンド情報の転送先のバススレーブ１３０の各々を後続スレーブする。そして、転送要求出力順序制御部３１４は、以下の（１）式により、全ての後続スレーブの各々につき、値Ｔｒｅｖを算出する。
Ｔｒｅｖ＝ＦＲＴ−（ＰＲＴ＋ＴＴ）          （１）
ここで、ＦＲＴは、後続スレーブの転送応答入力時間であり、ＰＲＴは、先行スレーブの転送応答入力時間である。また、ＴＴは、タイマカウンタ３２３のカウント値である。
【００８８】
そして、転送要求出力順序制御部３１４は、（１）式で求められたＴｒｅｖの値が「０」よりも大きくなる後続スレーブがある場合には、その後続スレーブへのコマンド情報を格納したキュー番号を選択する。ここで、（１）式で求められたＴｒｅｖの値が「０」よりも大きくなる後続スレーブが複数ある場合には、転送要求出力順序制御部３１４は、Ｔｒｅｖの値が最大となるキュー番号を選択する。Ｔｒｅｖ＞０となるキュー番号が１つも存在しない場合は、先行スレーブへの転送要求を選択する。
【００８９】
そして、転送要求出力順序制御部３１４は、選択されたキュー番号のコマンド情報を、転送要求出力部１１５に与える。転送要求出力部１１５は、与えられたコマンド情報の内容に従って読み出しアドレスチャネル信号ＲＡＣ又は書き込みアドレスチャネル信号ＷＡＣを生成して、生成された信号を出力する。そして、転送要求出力順序制御部３１４は、生成された信号の出力後、選択されたキュー番号の転送要求出力情報を未出力から出力済みに更新する。
【００９０】
なお、本実施の形態では、タイマカウンタ３２３と時間計測カウンタ２２０とは、同じ計測精度をもつものとする。タイマカウンタ３２３と時間計測カウンタ２２０との計測精度が異なる場合は、いずれかの計測精度に合わせた値にて、（１）式でＴｒｅｖの値が算出される。
【００９１】
実施の形態３に係るバスシステム３００におけるバスマスタ３１０の動作について、図１３を用いて説明する。図１３において、バススレーブ１３０から転送応答を得るまでに要する時間は、図８及び図９と同じく、バススレーブ１３０Ａ（バススレーブ番号「１」）及びバススレーブ１３０Ｂ（バススレーブ番号「２」）では２単位時間、バススレーブ１３０Ｃ（バススレーブ番号「３」）では７単位時間とする。図１３は、各バススレーブ１３０の転送応答入力時間が、図１１に示されている転送応答入力時間情報２２２ａに格納されている転送応答入力時間であった場合のバスマスタ３１０の動作を示すタイミングチャートである。なお、ここでは、タイマカウンタ３２３と、時間計測カウンタ２２０とにおける計測精度が、図１３に示されている（Ｔ１）〜（Ｔ１０）の１単位時間と等しいものとする。
【００９２】
時刻（Ｔ１）にて、転送要求出力順序制御部３１４は、転送応答入力時間情報２２２ａを参照して、図３に示されているキュー番号０のコマンド情報における転送先のバススレーブ１３０Ｂ（バススレーブ番号「２」）、転送種別「書き込み」及び転送データ長「1」に対応する転送応答入力時間として、２単位時間を取得する。そして、この２単位時間を、先行スレーブの転送応答入力時間ＰＲＴとする。また、同様にして、転送要求出力順序制御部３１４は、キュー番号１のコマンド情報における転送先のバススレーブ１３０Ａ（バススレーブ番号「１」）、転送種別「書き込み」及び転送データ長「１」に対応する転送応答入力時間として２単位時間を取得する。従って、キュー番号１に対応する後続スレーブの転送応答入力時間ＦＲＴは、「２」となる。さらに、同様にして、転送要求出力順序制御部３１４は、キュー番号２のコマンド情報における転送先のバススレーブ１３０Ｃ（バススレーブ番号「３」）、転送種別「書き込み」及び転送データ長「１」に対応する転送応答入力時間として７単位時間を取得する。従って、キュー番号２に対応する後続スレーブの転送応答入力時間ＦＲＴは、「７」となる。さらにまた、同様にして、転送要求出力順序制御部３１４は、キュー番号３のコマンド情報における転送先のバススレーブ１３０Ａ（バススレーブ番号「１」）、転送種別「書き込み」及び転送データ長「１」に対応する転送応答入力時間として２単位時間を取得する。従って、キュー番号３に対応する後続スレーブの転送応答入力時間ＦＲＴは、「２」となる。
転送要求出力順序制御部３１４は、タイマカウンタ３２３に指示することにより、「０」からカウントを開始させる。そして、時刻（Ｔ１）では、先行スレーブの転送応答入力時間ＰＲＴが「２」、タイマカウンタ３２３のカウント値が「０」であるため、転送要求出力順序制御部３１４は、上記（１）式に基づいて、キュー番号１〜３のぞれぞれのＦＲＴを用いて、下記の（２）式を満たすキュー番号があるか否かを確認する。
Ｔｒｅｖ＝ＦＲＴ−（２＋０）＞０            （２）
上述した例では、キュー番号２に対応する後続スレーブ転送応答入力時間が「７」で、（２）式を満たすため、転送要求出力順序制御部３１４は、時刻（Ｔ１）において、キュー番号２を選択する。転送要求出力部１１５は、転送要求出力順序制御部３１４の選択結果に基づいて、キュー番号２のコマンド情報に従って、書き込みアドレスチャネル信号ＷＡＣを出力した後、キュー番号２の転送要求出力情報を未出力から出力済みに更新する。
【００９３】
次に、時刻（Ｔ３）では、時刻（Ｔ１）と同様に、最も古いコマンド情報は、キュー番号０のコマンド情報となる。このため、転送要求出力順序制御部３１４は、先行スレーブの転送応答入力時間ＰＲＴを「２」、タイマカウンタ３２３のカウント値を「３」として、上記（１）式に基づいて、キュー番号１及び３のぞれぞれのＦＲＴを用いて、下記の（３）式を満たすキュー番号があるか否かを確認する。
Ｔｒｅｖ＝ＦＲＴ−（２＋３）＞０            （３）
図３に記載された例では、（３）式を満たし、かつ、転送要求出力情報が未出力であるキュー番号が存在しないので、転送要求出力順序制御部３１４は、時刻（３）において、キュー番号０を選択する。転送要求出力部１１５は、転送要求出力順序制御部３１４の選択結果に基づいて、キュー番号０のコマンド情報に従って、書き込みアドレスチャネル信号ＷＡＣを出力した後、キュー番号０の転送要求出力情報を未出力から出力済みに更新する。
【００９４】
次に、時刻（Ｔ５）では、最も古いコマンド情報は、キュー番号１のコマンド情報となる。このため、転送要求出力順序制御部３１４は、先行スレーブの転送応答入力時間ＰＲＴを「２」、タイマカウンタ３２３のカウント値を「５」として、上記（１）式に基づいて、キュー番号３のＦＲＴを用いて、下記の（４）式を満たすか否かを確認する。
Ｔｒｅｖ＝ＦＲＴ−（２＋５）＞０            （４）
図３に記載された例では、キュー番号３は、（４）式を満たさないため、転送要求出力順序制御部３１４は、時刻（Ｔ５）において、キュー番号１を選択する。転送要求出力部１１５は、転送要求出力順序制御部３１４の選択結果に基づいて、キュー番号１のコマンド情報に従って、書き込みアドレスチャネル信号ＷＡＣを出力した後、キュー番号１の転送要求出力情報を未出力から出力済みに更新する。
【００９５】
次に、時刻（Ｔ７）では、転送要求出力順序制御部３１４は、キュー番号３を選択する。転送要求出力部１１５は、転送要求出力順序制御部３１４の選択結果に基づいて、キュー番号３のコマンド情報に従って、書き込みアドレスチャネル信号ＷＡＣを出力した後、キュー番号３の転送要求出力情報を未出力から出力済みに更新する。
【００９６】
図１３に示されているように、時刻（Ｔ１）、時刻（Ｔ３）、時刻（Ｔ５）及び時刻（Ｔ７）にて出力された転送要求に対する転送応答は、それぞれ時刻（Ｔ９）、時刻（Ｔ６）、時刻（Ｔ８）及び時刻（Ｔ１０）に入力される。図１３に示されている場合では、実施の形態１で説明した図８と比較して、転送要求を処理し終えるまでに要する時間が３単位時間分短縮できる。
【００９７】
以上のように、実施の形態３における転送要求出力順序制御部３１４は、転送応答入力時間記憶部２２２に記憶されている転送応答入力時間を参照して、コマンドキュー１１２に記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、最初に記憶されたコマンド情報よりも先に、その何れか一つのコマンド情報を、出力対象のコマンド情報として選択することができる。
【００９８】
実施の形態３に係るバスシステム３００によれば、転送時間が長いバススレーブへの転送要求をほかのバススレーブよりも先に出力して、転送を完了する時刻を前にシフトできるので、バスマスタのデータ転送を効率よく行える。
【００９９】
また、実施の形態３に係るバスシステム３００は、コマンドキューに格納された先行スレーブと後続スレーブの応答時間を比較する際に、比較を開始してからの経過時間を加味するため、先行スレーブへの転送完了が後続スレーブへの転送完了より遅くなることを回避することができる。
【０１００】
実施の形態４．
図１４は、実施の形態４に係るバスシステム４００の構成を概略的に示すブロック図である。バスシステム４００は、バスマスタ４１０Ａ〜４１０Ｃ（特に各々を区別する必要がないときは、バスマスタ４１０という）と、バススレーブ１３０Ａ〜１３０Ｃ（特に各々を区別する必要がないときは、バススレーブ１３０という）とが、バスインターコネクト１５０を介して接続されている。また、バスマスタ４１０には、キュー数制御部４７０が接続されている。実施の形態４に係るバスシステム４００は、バスマスタ４１０での処理の点、及び、キュー数制御部４７０がさらに備えられている点において、実施の形態３に係るバスシステム３００と異なっている。
【０１０１】
キュー数制御部４７０は、転送応答入力時間計測部２２１で計測された、バススレーブ１３０毎の転送応答入力時間に基づいて、転送応答入力時間が増加傾向にあるバススレーブ１３０へのコマンド情報の出力数を制限するように、転送要求出力順序制御部４１４に指示する。
例えば、キュー数制御部４７０は、バスマスタ４１０が出力する転送応答入力時間信号ＴＲＴを参照して、バスマスタ４１０に出力キュー数制御信号ＯＱＮを出力する。そして、キュー数制御部４７０は、バスマスタ４１０が出力する転送応答入力時間信号ＴＲＴに基づいて、各バススレーブ１３０の転送応答入力時間を監視して、転送応答入力時間が増加しているバススレーブ１３０への転送要求の出力数を減らすように、各バスマスタ４１０に出力キュー数制御信号ＯＱＮを与える。
【０１０２】
図１５は、実施の形態４におけるバスマスタ４１０の構成を概略的に示すブロック図である。バスマスタ４１０は、アクセス生成部１１１と、コマンドキュー１１２と、データキュー１１３と、転送要求出力順序制御部４１４と、転送要求出力部１１５と、転送応答入力部１１６と、アドレスマップ記憶部１１７と、時間計測カウンタ２２０と、転送応答入力時間計測部２２１と、転送応答入力時間記憶部２２２と、タイマカウンタ３２３とを備える。実施の形態４におけるバスマスタ４１０は、転送要求出力順序制御部４１４での処理の点において、実施の形態３におけるバスマスタ３１０と異なっている。なお、実施の形態４における転送応答入力時間記憶部２２２からの出力である転送応答入力時間信号ＴＲＴは、転送要求出力順序制御部４１４及びキュー数制御部４７０に与えられる。
【０１０３】
転送要求出力順序制御部４１４は、実施の形態３に記載された転送要求出力順序制御部３１４と同様に、後続スレーブの転送応答入力時間ＦＲＴと、先行スレーブの転送応答入力時間ＰＲＴと、タイマカウンタ３２３のカウント値ＴＴとに基づいて、出力するコマンド情報が格納されているキュー番号を選択するが、キュー数制御部４７０からの出力キュー数制御信号ＯＱＲに従って、各々のバススレーブ１３０へ出力するコマンド情報の出力数を制御する。
例えば、キュー数制御部４７０からの出力キュー数制御信号ＯＱＲにより、特定のバススレーブ１３０への転送要求の上限抑制が指示された場合には、転送要求出力順序制御部４１４は、その特定のバススレーブ１３０への転送要求を複数出力しないようにする。一方、キュー数制御部４７０からの出力キュー数制御信号ＯＱＲにより、特定のバススレーブ１３０への転送要求の上限抑制の解除が指示された場合には、転送要求出力順序制御部４１４は、通常動作に戻り、その特定のバススレーブ１３０への転送要求を複数出力することができる。
【０１０４】
図１６及び図１７は、キュー数制御部４７０がバスマスタ４１０から転送応答入力時間信号ＴＲＴを得て、出力キュー数制御信号ＯＱＮをバスマスタ４１０に与える際の処理を示すフローチャートである。
【０１０５】
キュー数制御部４７０は、予め定められた時間が経過する毎に転送応答入力時間信号ＴＲＴを参照する（Ｓ４０）。次に、キュー数制御部４７０は、バススレーブ番号「Ｓ」に初期値として「１」を代入する（Ｓ４１）。バススレーブ番号「１」は、バススレーブ１３０Ａを示す。
次に、キュー数制御部４７０は、バススレーブ番号「Ｓ」で示されるバススレーブ１３０の転送応答入力時間の合計値であるＴｃｕｒｒｅｎｔ［Ｓ］の値を初期値「０」にする（Ｓ４２）。
次に、キュー数制御部４７０は、バスマスタ番号「Ｍ」に初期値として「１」を代入する（Ｓ４３）。バスマスタ番号「１」は、バスマスタ１１０Ａを示す。
【０１０６】
次に、キュー数制御部４７０は、バスマスタ番号「Ｍ」のバスマスタ４１０から送られてきた転送応答入力時間信号ＴＲＴに基づいて、バススレーブ番号「Ｓ」の転送応答入力時間を取得する（Ｓ４４）。そして、キュー数制御部４７０は、取得された応答時間を値ＴＲとする。ここで、転送応答入力時間が、転送種別及び転送データ長により区別されている場合には、キュー数制御部４７０は、区別された全ての転送応答入力時間の合計値を値ＴＲとする。
【０１０７】
次に、キュー数制御部４７０は、Ｔｃｕｒｒｅｎｔ［Ｓ］の値に、値ＴＲを加算する（Ｓ４５）。
次に、キュー数制御部４７０は、バスマスタ番号「Ｍ」に「１」をインクリメントする（Ｓ４６）。
そして、キュー数制御部４７０は、バスマスタ番号「Ｍ」がバスインターコネクト１５０に接続されているバスマスタ４１０の数以下であるか否かを判断する（Ｓ４７）。バスマスタ番号「Ｍ」がバスマスタ４１０の数以下である場合（Ｓ４７；Ｙｅｓ）には、処理は、ステップＳ４４に戻る。一方、バスマスタ番号「Ｍ」がバスマスタ４１０の数よりも大きい場合（Ｓ４７；Ｎｏ）には、処理は、図１７のステップＳ４８に進む。
【０１０８】
ステップＳ４２〜Ｓ４７の処理により、キュー数制御部４７０は、バススレーブ番号「Ｓ」のバススレーブ１３０の転送応答入力時間の合計値を算出することができる。この合計値は、バスマスタ４１０が複数ある場合には、複数のバスマスタ４１０で算出された転送応答入力時間が合算されている。また、各々のバススレーブ１３０の転送応答入力時間が、転送種別及び転送データ長により区別されている場合には、転送種別及び転送データ長を区別せずに、各々のバススレーブ１３０の転送応答入力時間が合算される。
【０１０９】
図１７のステップＳ４８では、キュー数制御部４７０は、メモリ４７０ａから前回参照した、バススレーブ番号「Ｓ」の転送応答入力時間の合計値Ｔｌａｓｔ［Ｓ］を読み出す。そして、キュー数制御部４７０は、Ｔｃｕｒｒｅｎｔ［Ｓ］の値がＴｌａｓｔ［Ｓ］の値よりも大きいか否かを判断する。Ｔｃｕｒｒｅｎｔ［Ｓ］の値がＴｌａｓｔ［Ｓ］の値よりも大きい場合（Ｓ４８；Ｙｅｓ）には、処理はステップＳ４９に進み、Ｔｃｕｒｒｅｎｔ［Ｓ］の値がＴｌａｓｔ［Ｓ］の値以下の場合（Ｓ４８；Ｎｏ）には、処理はステップＳ５３に進む。
【０１１０】
ステップＳ４９では、キュー数制御部４７０は、バススレーブ番号「Ｓ」のバススレーブ１３０の転送応答時間が増加したと判断して、連続増加回数に「１」を加算して、連続減少回数の値を初期値「０」に戻す。
次に、キュー数制御部４７０は、連続増加回数が予め定められた第１閾値以上であるか否かを判断する（Ｓ５０）。連続増加回数が第１閾値以上である場合（Ｓ５０；Ｙｅｓ）には、処理はステップＳ５１に進み、連続増加回数が第１閾値よりも小さい場合（Ｓ５０；Ｎｏ）には、処理はステップＳ５９に進む。
【０１１１】
ステップＳ５１では、キュー数制御部４７０は、バススレーブ番号「Ｓ」のバススレーブ１３０の転送負荷が高いと判断する。そして、キュー数制御部４７０は、出力する転送要求数の上限抑制を指示する出力キュー数制御信号ＯＱＮを全てのバスマスタ４１０に与える。
なお、このような指示を受けたバスマスタ４１０の転送要求出力順序制御部４１４は、バススレーブ番号「Ｓ」のバススレーブ１３０への転送要求が複数出力されないようにする。
【０１１２】
次に、キュー数制御部４７０は、連続増加回数を初期値「０」に戻す（Ｓ５２）。そして、処理はステップＳ５９に進む。
【０１１３】
一方、ステップＳ４８において、Ｔｃｕｒｒｅｎｔ［Ｓ］の値がＴｌａｓｔ［Ｓ］の値以下と判断された場合（Ｓ４８；Ｎｏ）には、処理はステップＳ５３に進む。
ステップＳ５３では、キュー数制御部４７０は、Ｔｃｕｒｒｅｎｔ［Ｓ］の値がＴｌａｓｔ［Ｓ］の値よりも小さい否かを判断する。Ｔｃｕｒｒｅｎｔ［Ｓ］の値がＴｌａｓｔ［Ｓ］の値よりも小さくない場合（Ｓ５３；Ｎｏ）、即ち、Ｔｃｕｒｒｅｎｔ［Ｓ］の値とＴｌａｓｔ［Ｓ］の値とが同じ値である場合には、処理はステップＳ５４に進む。また、Ｔｃｕｒｒｅｎｔ［Ｓ］の値がＴｌａｓｔ［Ｓ］の値よりも小さい場合（Ｓ５３；Ｙｅｓ）には、処理はステップＳ５５に進む。
【０１１４】
ステップＳ５４では、キュー数制御部４７０は、連続増加回数及び連続減少回数を初期値「０」に戻す。
【０１１５】
一方、ステップＳ５５では、キュー数制御部４７０は、バススレーブ番号「Ｓ」のバススレーブ１３０の転送応答時間が減少したと判断して、連続減少回数に「１」を加算して、連続増加回数の値を初期値「０」に戻す。
次に、キュー数制御部４７０は、連続減少回数が予め定められた第２閾値以上であるか否かを判断する（Ｓ５６）。連続減少回数が第２閾値以上である場合（Ｓ５６；Ｙｅｓ）には、処理はステップＳ５７に進み、連続減少回数が第２閾値よりも小さい場合（Ｓ５６；Ｎｏ）には、処理はステップＳ５９に進む。
【０１１６】
ステップＳ５７では、キュー数制御部４７０は、バススレーブ番号「Ｓ」のバススレーブ１３０の転送負荷が下がったと判断する。そして、キュー数制御部４７０は、出力する転送要求数の上限抑制の抑制解除を指示する出力キュー数制御信号ＯＱＮを全てのバスマスタ４１０に与える。
なお、このような指示を受けたバスマスタ４１０の転送要求出力順序制御部４１４は、バススレーブ番号「Ｓ」のバススレーブ１３０から転送応答が得られるのを待つことなく、このバススレーブ１３０へ転送要求を出力させる。
次に、キュー数制御部４７０は、連続減少回数を初期値「０」に戻す（Ｓ５８）。そして、処理はステップＳ５９に進む。
【０１１７】
ステップＳ５９では、キュー数制御部４７０は、今回算出したＴｃｕｒｒｅｎｔ［Ｓ］の値により、メモリ４７０ａに保存されているＴｌａｓｔ［Ｓ］の値を更新する。
そして、キュー数制御部４７０は、バススレーブ番号「Ｓ」に「１」をインクリメントする（Ｓ６０）。
次に、キュー数制御部４７０は、バススレーブ番号「Ｓ」がバススレーブ数以下であるか否かを判断する（Ｓ６１）。そして、バススレーブ番号「Ｓ」がバススレーブ数以下である場合（Ｓ６１；Ｙｅｓ）には、処理は図１６のステップＳ４２に進む。一方、バススレーブ番号「Ｓ」がバススレーブ数よりも大きい場合（Ｓ６１；Ｎｏ）には、処理は図１６のステップＳ４０に進む。
【０１１８】
図１８は、転送要求出力順序制御部４１４が、バススレーブ１３０Ａへ出力する転送要求数の上限を抑制した場合のバスマスタ４１０の動作を示すタイミングチャートである。
図１８に示されているように、転送要求出力順序制御部４１４は、時刻（Ｔ５）において、バススレーブ１３０Ａへの書き込みアドレスチャネル信号ＷＡＣを出力した後、その転送応答が時刻（Ｔ８）において取得されるまで、このバススレーブ１３０Ａへ転送要求を出力していない。このような動作を行うことにより、転送要求出力順序制御部４１４は、バススレーブ１３０Ａへの転送要求が複数出力されている状態を回避して、バススレーブ１３０Ａの転送負荷を下げる。
【０１１９】
以上のように、実施の形態４に係るバスシステム４００によれば、転送負荷が一時的に大きくなったバススレーブ１３０に対するバスマスタ４１０の転送要求数を制限して、そのバススレーブ１３０の転送負荷を下げるので、バスマスタ４１０が転送要求を出力してから転送応答を得るまでの時間を短くすることができる。
【０１２０】
実施の形態５．
図１９は、実施の形態５に係るバスシステム５００の構成を概略的に示すブロック図である。バスシステム５００は、バスマスタ５１０Ａ〜５１０Ｃ（特に各々を区別する必要がないときは、バスマスタ５１０という）と、バススレーブ５３０Ａ〜５３０Ｃ（特に各々を区別する必要がないときは、バススレーブ５３０という）とが、バスインターコネクト１５０を介して接続されている。また、バススレーブ５３０Ａ〜５３０Ｃにおいて受け付けることのできる最大転送要求数が、それぞれ５４０Ａ〜５４０Ｃ（特に各々を区別する必要がないときは、最大転送要求数５４０という）として、バスマスタ５１０に通知されている。実施の形態５に係るバスシステム５００は、バスマスタ５１０での処理の点、及び、バススレーブ５３０から最大転送要求数５４０がバスマスタ５１０に通知されている点において、実施の形態１に係るバスシステム１００と異なっている。ここで、最大転送要求数５４０は、各々のバススレーブ５３０が内部に蓄積し得る転送要求の最大数である。この最大転送要求数５４０は、システムで予め定められており、各々のバススレーブ５３０が備えるメモリ５３１Ａ〜５３１Ｃ（特に各々を区別する必要がないときは、メモリ５３１という）に記憶されているものとする。
【０１２１】
バススレーブ５３０は、バスマスタ５１０Ａ〜５１０Ｃから発行される書き込みアドレスチャネル信号及び書き込みデータチャネル信号、又は、読み出しアドレスチャネル信号を、バスインターコネクト１５０を介して受け取る。バススレーブ５３０は、受け取ったチャネル信号に従って、制御信号を生成する。例えば、バススレーブ５３０がＳＲＡＭである場合は、ＳＲＡＭの書き込み又は読み出し信号を生成し、書き込み又は読み出しが完了すると、書き込み応答チャネル信号又は読み出しデータチャネル信号を、バスインターコネクト１５０を経由してバスマスタ５１０に渡す。
【０１２２】
また、バススレーブ５３０が外部とのシリアルインターフェース等である場合、書き込みアドレスチャネル信号及び書き込みデータチャネル信号、又は、読み出しアドレスチャネル信号をシリアル信号に変換して、外部デバイスへ出力し、外部デバイスから入力されるシリアル信号を書き込み応答チャネル信号又は読み出しデータチャネル信号に変換して、上記と同様にバスインターコネクト１５０に渡す。
【０１２３】
バススレーブ５３０がバスマスタ５１０Ａ〜５１０Ｃからの書き込みアドレスチャネル信号又は読み出しアドレスチャネル信号、即ち、転送要求を受け取ってから、書き込み応答チャネル信号又は読み出しデータチャネル信号を発行するまでの期間に、さらに別の書き込みアドレスチャネル信号又は読み出しアドレスチャネル信号がバススレーブ５３０に入力された場合、この信号をバススレーブ５３０が取り込むかどうかはバススレーブ５３０の構成によって異なる。例えば、バススレーブ５３０の内部に転送要求を蓄積するバッファを有しており、そのバッファへ転送要求を蓄積する空き容量が確保できる場合、バススレーブ５３０は、書き込みアドレスチャネル信号と書き込みデータチャネル信号、または読み出しアドレスチャネル信号を、Ｒｅａｄｙ信号を出力して取り込み、バススレーブ５３０内部のバッファへ格納する。
【０１２４】
一方、バススレーブ５３０が上述のようなバッファを備えていない、あるいはバッファに転送要求を蓄積するだけの空き容量が確保できない場合、バススレーブ５３０は、Ｒｅａｄｙ信号を有効にせず、転送要求を取り込まないことをバスインターコネクト１５０に通知する。バスインターコネクト１５０は、バススレーブ５３０からこの取り込み保留の通知を受けると、保留が解除されるまでの期間、バススレーブ５３０への新たな転送要求を行わず、システム内のバススレーブ５３０への転送は滞留する。
【０１２５】
バススレーブ５３０において実行中の転送が完了し、バススレーブ５３０が処理すべき転送要求がない、あるいは転送要求を蓄積するバッファの空き容量が確保できた時点で、バススレーブ５３０はＲｅａｄｙ信号を有効にして、取り込みを保留した転送要求をバスインターコネクト１５０から得る。
【０１２６】
バスマスタ５１０は、バススレーブ５３０の最大転送要求数５４０を得て、コマンドキュー１１２に記憶されたコマンド情報を選択する。図２０は、実施の形態５におけるバスマスタ５１０の構成を概略的に示すブロック図である。実施の形態５に係るバスマスタ５１０は、転送要求出力順序制御部５１４にバススレーブ５３０Ａ〜５３０Ｃの最大転送要求数５４０Ａ〜５４０Ｃが入力される点で、実施の形態１に係るバスマスタ１１０と異なっている。
【０１２７】
図２１及び２２は、実施の形態５に係る転送要求出力順序制御部５１４が、コマンドキュー１１２に記憶された何れかのキュー番号のコマンド情報を選択する際の処理を示すフローチャートである。図２１及び２２に示されているフローにおいて、図７に示されている処理と同様の処理については、図７と同じ符号が付されている。
図２１におけるステップＳ２０〜Ｓ２２の処理については、図７におけるステップＳ２０〜Ｓ２２の処理と同様である。但し、図２１のステップＳ２２において、キュー番号Ｘのコマンド情報が出力済みではない場合（Ｓ２２；Ｎｏ）には、処理はステップＳ６２に進む。
ステップＳ６２では、転送要求出力順序制御部５１４は、コマンドキュー１１２を参照して、キュー番号Ｘの転送対象アドレスをもつバススレーブ５３０と同じバススレーブ５３０への転送要求のうち、キューが有効かつ転送要求が出力済みのものの数を計数して、転送応答入力前アクセス数とする。そして、転送要求出力順序制御部５１４は、転送応答入力前アクセス数がバススレーブ５３０の最大転送要求数５４０に達していないかどうかを確認する。その数がバススレーブ５３０の最大転送要求数５４０に達していない場合（Ｓ２６；Ｙｅｓ）には、処理はステップＳ２３に進み、以降、実施の形態１における転送要求出力順序制御部１１４と同様に、次に記憶されたコマンドとの出力順序を決定する。一方、その数がバススレーブ５３０の最大転送要求数５４０に達している場合（Ｓ２６；Ｎｏ）には、処理は図２２のステップＳ６３に進む。
【０１２８】
図２２のステップＳ６３では、転送要求出力順序制御部５１４は、比較キューを特定するための変数Ｙに初期値（ここでは、「１」）を設定する。
次に、転送要求出力順序制御部５１４は、コマンドキュー１１２に記憶されている管理情報を参照することで、キュー番号（Ｘ＋Ｙ）のコマンド情報が「有効」であるか否かを判断する（Ｓ６４）。キュー番号（Ｘ＋Ｙ）のコマンド情報が「有効」である場合（Ｓ６４；Ｙｅｓ）には、処理はステップＳ６５に進み、キュー番号（Ｘ＋Ｙ）のコマンド情報が「無効」である場合（Ｓ６４；Ｎｏ）には、処理はステップＳ６８に進む。
ステップＳ６５では、転送要求出力順序制御部５１４は、コマンドキュー１１２に記憶されている管理情報を参照することで、キュー番号（Ｘ＋Ｙ）のコマンド情報が出力済みであるか否かを判断する。キュー番号Ｘのコマンド情報が出力済みである場合（Ｓ６５；Ｙｅｓ）には、処理はステップＳ６８に進み、キュー番号（Ｘ＋Ｙ）のコマンド情報が出力済みではない場合（Ｓ６５；Ｎｏ）には、処理はステップＳ６６に進む。
【０１２９】
ステップＳ６６では、転送要求出力順序制御部５１４は、コマンドキュー１１２に記憶されているコマンド情報を参照することで、キュー番号Ｘの転送対象バススレーブ５３０と、キュー番号（Ｘ＋Ｙ）の転送対象バススレーブ５３０とが同じであるか否かを判断する。これらが同じである場合（Ｓ６６；Ｙｅｓ）には、処理はステップＳ６８に進み、これらが異なる場合（Ｓ６６；Ｎｏ）には、処理はステップＳ６７に進む。
【０１３０】
ステップＳ６３〜Ｓ６６までの処理により、転送要求出力順序制御部５１４は、キュー番号Ｘ以降に記憶された転送要求の内、キューが有効（Ｓ６４；Ｙｅｓ）で、未出力（Ｓ６５；Ｎｏ）で、キュー番号Ｘの転送対象バススレーブ５３０と異なるバススレーブ５３０への転送要求（Ｓ６６；Ｎｏ）であるものを、キューに記憶された順に検出することができる。
そして、ステップＳ６７では、キュー番号（Ｘ＋Ｙ）の転送対象アドレスをもつバススレーブ５３０と同じバススレーブ５３０への転送要求のうち、キューが有効かつ転送要求出力済みの数を計数する。そして、転送要求出力順序制御部５１４は、計数された数がそのバススレーブ５３０の最大転送要求数５４０に達していないかを確認する。計数された数がそのバススレーブ５３０の最大転送要求数５４０に達している場合（Ｓ６７；Ｎｏ）には、処理はステップＳ６８に進み、計数された数がそのバススレーブ５３０の最大転送要求数５４０に達していない場合（Ｓ６７；Ｙｅｓ）には、処理はステップＳ７０に進む。
【０１３１】
ステップＳ６８では、転送要求出力順序制御部５１４は、変数Ｙに「１」をインクリメントする。
そして、転送要求出力順序制御部５１４は、キュー番号（Ｘ＋Ｙ）がキュー数Ｎ以上となっていないかを確認する（Ｓ６９）。キュー番号（Ｘ＋Ｙ）がキュー数Ｎ以上となっている場合（Ｓ６９；Ｙｅｓ）には、処理は図２１のステップＳ６２に戻り、キュー番号（Ｘ＋Ｙ）がキュー数Ｎ以上となっていない場合（Ｓ６９；Ｎｏ）には、処理はステップＳ６４に戻る。
【０１３２】
一方、ステップＳ７０では、転送要求出力順序制御部５１４は、キュー番号（Ｘ＋Ｙ）のコマンド情報を転送要求出力部１１５に与えて、このコマンド情報を出力させる。言い換えると、キュー番号（Ｘ＋Ｙ）のコマンド情報をキュー番号Ｘのコマンド情報よりも先に出力させる。
以上のように、実施の形態５では、最大転送要求数に達したバススレーブ５３０へは、コマンド情報を出力せず、それよりも後に記憶されたコマンド情報の転送対象バススレーブ５３０が最大転送要求数に達していない場合は、そのバススレーブ５３０へのコマンド情報を先に出力する。これにより、バススレーブ５３０のデータ転送容量を超えないバス転送を行なうことができ、バススレーブ５３０が転送要求の取り込みを保留する状態を回避することができる。そして、バススレーブ５３０のデータ転送負荷状態に適したバス転送を行なうことができる。
【０１３３】
以上、実施の形態５に係るバスマスタ５１０を実施の形態１に係るバスマスタ１１０をもとに説明したが、その他の実施の形態に係るバスマスタ２１０、３１０、４１０の転送要求出力順序制御部２１４、３１４、４１４に最大転送要求数５４０Ａ〜５４０Ｃが入力される構成としてもよい。このように構成することで、バススレーブ５３０にて転送要求の取り込み保留が発生するコマンドを予めバスマスタ２１０、３１０、４１０が選択しないことで、バススレーブ５３０のデータ転送容量を超えないバス転送を行うことができる。
【０１３４】
また、実施の形態５に係るバスシステム５００では、バススレーブ５３０の最大転送要求数５４０をバスマスタ５１０に通知する構成としたが、このような例に限定されない。例えば、最大転送要求数５４０の代わりにバススレーブ５３０の転送要求受け付け状態を鑑みて、最大転送要求数から現在蓄積されている要求数を減算した値を、最大転送要求数としてバスマスタ５１０に逐次通知してもよい。逐次変化するバススレーブ５３０の最大転送要求数を参照することで、さらにバススレーブ５３０のデータ転送負荷状態に適したバス転送を行うことができる。
【符号の説明】
【０１３５】
１００，２００，３００，４００，５００  バスシステム、  １１０，２１０，３１０，４１０，５１０  バスマスタ、  １１１  アクセス生成部、  １１２  コマンドキュー、  １１３  データキュー、  １１４，２１４，３１４，４１４，５１４  転送要求出力順序制御部、  １１５  転送要求出力部、  １１６  転送応答入力部、  １１７  アドレスマップ記憶部、  １１８  コマンドキュー滞留時間比較部、  １１９  転送順序整合情報記憶部、  ２２０  時間計測カウンタ、  ２２１  転送応答入力時間計測部、  ２２２  転送応答入力時間記憶部、  ３２３  タイマカウンタ、  １３０，５３０  バススレーブ、  １５０  バスインターコネクト、  ４７０  キュー数制御部。
【図１】
2014156282.tif 000003
【図２】
2014156282.tif 000004
【図３】
2014156282.tif 000005
【図４】
2014156282.tif 000006
【図５】
2014156282.tif 000007
【図６】
2014156282.tif 000008
【図７】
2014156282.tif 000009
【図８】
2014156282.tif 000010
【図９】
2014156282.tif 000011
【図１０】
2014156282.tif 000012
【図１１】
2014156282.tif 000013
【図１２】
2014156282.tif 000014
【図１３】
2014156282.tif 000015
【図１４】
2014156282.tif 000016
【図１５】
2014156282.tif 000017
【図１６】
2014156282.tif 000018
【図１７】
2014156282.tif 000019
【図１８】
2014156282.tif 000020
【図１９】
2014156282.tif 000021
【図２０】
2014156282.tif 000022
【図２１】
2014156282.tif 000023
【図２２】
2014156282.tif 000024
【手続補正書】
【提出日】平成27年4月14日(2015.4.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、
前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、
前記コマンドキューに記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御部と、
前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えること
を特徴とするバスマスタ。
【請求項２】
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部から出力されたコマンド情報への応答が、当該コマンド情報よりも先に出力されたコマンド情報への応答よりも先に前記転送応答入力部に入力された場合に、当該先に出力されたコマンド情報の転送対象アドレスを有するバススレーブを先行スレーブとし、当該後に出力されたコマンド情報の転送対象アドレスを有するバススレーブを後続スレーブとして特定し、当該先行スレーブと当該後続スレーブとの応答が逆転したと判断するコマンドキュー滞留時間比較部と、
前記コマンドキュー滞留時間比較部での判断結果に応じて、前記先行スレーブと前記後続スレーブとの応答が逆転したことを示す情報を含む転送順序整合情報を記憶する転送順序整合情報記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送順序整合情報記憶部に記憶されている転送順序整合情報を参照して、前記出力対象のコマンド情報を選択すること
を特徴とする請求項１に記載のバスマスタ。
【請求項３】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを前記先行スレーブとし、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを前記後続スレーブとして、応答が逆転したことを示す情報が前記転送順序整合情報に含まれている場合に、当該最初に記憶されたコマンド情報よりも先に、当該次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項２に記載のバスマスタ。
【請求項４】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有する一のバススレーブに出力したコマンド情報の中で、転送応答を得る前のコマンド情報の数が、当該一のバススレーブが蓄積し得るコマンド情報の数の最大値に達している場合、転送応答を得る前のコマンド情報の数が、蓄積し得るコマンド情報の数の最大値に達していない他のバススレーブの転送対象アドレスを含むコマンド情報を、前記最初に記憶されたコマンド情報より先に出力対象のコマンド情報として選択すること
を特徴とする請求項２に記載のバスマスタ。
【請求項５】
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部が前記コマンド情報を出力してから、前記転送応答入力部が前記応答の入力を受けるまでの転送応答入力時間を計測する転送応答入力時間計測部と、
前記転送応答入力時間計測部で計測された転送応答入力時間を、前記バススレーブ毎に記憶する転送応答入力時間記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間に基づいて、前記出力対象のコマンド情報を選択すること
を特徴とする請求項１に記載のバスマスタ。
【請求項６】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、前記最初に記憶されたコマンド情報よりも先に、前記次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項５に記載のバスマスタ。
【請求項７】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、当該最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、当該最初に記憶されたコマンド情報よりも先に、当該何れか一つのコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項５に記載のバスマスタ。
【請求項８】
前記転送要求出力順序制御部は、キュー数制御部から指示されたバススレーブへの前記コマンド情報の出力数を制限し、
前記キュー数制御部は、前記転送応答入力時間計測部で計測された、前記バススレーブ毎の転送応答入力時間に基づいて、当該転送応答入力時間が増加傾向にあるバススレーブへの前記コマンド情報の出力数を制限するように、前記転送要求出力順序制御部に指示すること
を特徴とする請求項５から７の何れか一項に記載のバスマスタ。
【請求項９】
少なくとも１つのバスマスタ及び複数のバススレーブを備えるバスシステムであって、
前記少なくとも１つのバスマスタは、
データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先の、前記複数のバススレーブの内の１つのバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、
前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、
前記コマンドキューに記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御部と、
前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えること
を特徴とするバスシステム。
【請求項１０】
前記バスマスタは、
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部から出力されたコマンド情報への応答が、当該コマンド情報よりも先に出力されたコマンド情報への応答よりも先に前記転送応答入力部に入力された場合に、当該先に出力されたコマンド情報の転送対象アドレスを有するバススレーブを先行スレーブとし、当該後に出力されたコマンド情報の転送対象アドレスを有するバススレーブを後続スレーブとして特定し、当該先行スレーブと当該後続スレーブとの応答が逆転したと判断するコマンドキュー滞留時間比較部と、
前記コマンドキュー滞留時間比較部での判断結果に応じて、前記先行スレーブと前記後続スレーブとの応答が逆転したことを示す情報を含む転送順序整合情報を記憶する転送順序整合情報記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送順序整合情報記憶部に記憶されている転送順序整合情報を参照して、前記出力対象のコマンド情報を選択すること
を特徴とする請求項９に記載のバスシステム。
【請求項１１】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報を前記先行スレーブとし、次に記憶されたコマンド情報を前記後続スレーブとして、応答が逆転したことを示す情報が前記転送順序整合情報に含まれている場合に、当該最初に記憶されたコマンド情報よりも先に、当該次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項１０に記載のバスシステム。
【請求項１２】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有する一のバススレーブに出力したコマンド情報の中で、転送応答を得る前のコマンド情報の数が、当該一のバススレーブが蓄積し得るコマンド情報の数の最大値に達している場合、転送応答を得る前のコマンド情報の数が、蓄積し得るコマンド情報の数の最大値に達していない他のバススレーブの転送対象アドレスを含むコマンド情報を、前記最初に記憶されたコマンド情報より先に出力対象のコマンド情報として選択すること
を特徴とする請求項１０に記載のバスシステム。
【請求項１３】
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部が前記コマンド情報を出力してから、前記転送応答入力部が前記応答の入力を受けるまでの転送応答入力時間を計測する転送応答入力時間計測部と、
前記転送応答入力時間計測部で計測された転送応答入力時間を、前記バススレーブ毎に記憶する転送応答入力時間記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間に基づいて、前記出力対象のコマンド情報を選択すること
を特徴とする請求項９に記載のバスシステム。
【請求項１４】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、前記最初に記憶されたコマンド情報よりも先に、前記次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項１３に記載のバスシステム。
【請求項１５】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、当該最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、当該最初に記憶されたコマンド情報よりも先に、当該何れか一つのコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項１３に記載のバスシステム。
【請求項１６】
前記転送応答入力時間計測部で計測された、前記バススレーブ毎の転送応答入力時間に基づいて、当該転送応答入力時間が増加傾向にあるバススレーブへの前記コマンド情報の出力数を制限するように、前記転送要求出力順序制御部に指示するキュー数制御部をさらに備え、
前記転送要求出力順序制御部は、前記キュー数制御部から指示されたバススレーブへの前記コマンド情報の出力数を制限すること
を特徴とする請求項１３から１５の何れか一項に記載のバスシステム。
【請求項１７】
データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成過程と、
前記アクセス生成過程で生成されたコマンド情報を複数記憶するコマンドキューイング過程と、
前記コマンドキューイング過程で記憶された複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御過程と、
前記転送要求出力順序制御過程で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力過程と、を有すること
を特徴とするバス制御方法。
【手続補正書】
【提出日】平成28年5月24日(2016.5.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、
前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、
前記コマンドキューに記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御部と、
前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えること
を特徴とするバスマスタ。
【請求項２】
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部から出力されたコマンド情報への応答が、当該コマンド情報よりも先に出力されたコマンド情報への応答よりも先に前記転送応答入力部に入力された場合に、当該先に出力されたコマンド情報の転送対象アドレスを有するバススレーブを先行スレーブとし、当該後に出力されたコマンド情報の転送対象アドレスを有するバススレーブを後続スレーブとして特定し、当該先行スレーブと当該後続スレーブとの応答が逆転したと判断するコマンドキュー滞留時間比較部と、
前記コマンドキュー滞留時間比較部での判断結果に応じて、前記先行スレーブと前記後続スレーブとの応答が逆転したことを示す情報を含む転送順序整合情報を記憶する転送順序整合情報記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送順序整合情報記憶部に記憶されている転送順序整合情報を参照して、前記出力対象のコマンド情報を選択すること
を特徴とする請求項１に記載のバスマスタ。
【請求項３】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを前記先行スレーブとし、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブを前記後続スレーブとして、応答が逆転したことを示す情報が前記転送順序整合情報に含まれている場合に、当該最初に記憶されたコマンド情報よりも先に、当該次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項２に記載のバスマスタ。
【請求項４】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有する一のバススレーブに出力したコマンド情報の中で、転送応答を得る前のコマンド情報の数が、当該一のバススレーブが蓄積し得るコマンド情報の数の最大値に達している場合、転送応答を得る前のコマンド情報の数が、蓄積し得るコマンド情報の数の最大値に達していない他のバススレーブの転送対象アドレスを含むコマンド情報を、前記最初に記憶されたコマンド情報より先に出力対象のコマンド情報として選択すること
を特徴とする請求項１に記載のバスマスタ。
【請求項５】
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部が前記コマンド情報を出力してから、前記転送応答入力部が前記応答の入力を受けるまでの転送応答入力時間を計測する転送応答入力時間計測部と、
前記転送応答入力時間計測部で計測された転送応答入力時間を、前記バススレーブ毎に記憶する転送応答入力時間記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間に基づいて、前記出力対象のコマンド情報を選択すること
を特徴とする請求項１に記載のバスマスタ。
【請求項６】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、前記最初に記憶されたコマンド情報よりも先に、前記次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項５に記載のバスマスタ。
【請求項７】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、当該最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、当該最初に記憶されたコマンド情報よりも先に、当該何れか一つのコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項５に記載のバスマスタ。
【請求項８】
前記転送要求出力順序制御部は、キュー数制御部から指示されたバススレーブへの前記コマンド情報の出力数を制限し、
前記キュー数制御部は、前記転送応答入力時間計測部で計測された、前記バススレーブ毎の転送応答入力時間に基づいて、当該転送応答入力時間が増加傾向にあるバススレーブへの前記コマンド情報の出力数を制限するように、前記転送要求出力順序制御部に指示すること
を特徴とする請求項５から７の何れか一項に記載のバスマスタ。
【請求項９】
少なくとも１つのバスマスタ及び複数のバススレーブを備えるバスシステムであって、
前記少なくとも１つのバスマスタは、
データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先の、前記複数のバススレーブの内の１つのバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成部と、
前記アクセス生成部で生成されたコマンド情報を複数記憶するコマンドキューと、
前記コマンドキューに記憶されている複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御部と、
前記転送要求出力順序制御部で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力部と、を備えること
を特徴とするバスシステム。
【請求項１０】
前記バスマスタは、
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部から出力されたコマンド情報への応答が、当該コマンド情報よりも先に出力されたコマンド情報への応答よりも先に前記転送応答入力部に入力された場合に、当該先に出力されたコマンド情報の転送対象アドレスを有するバススレーブを先行スレーブとし、当該後に出力されたコマンド情報の転送対象アドレスを有するバススレーブを後続スレーブとして特定し、当該先行スレーブと当該後続スレーブとの応答が逆転したと判断するコマンドキュー滞留時間比較部と、
前記コマンドキュー滞留時間比較部での判断結果に応じて、前記先行スレーブと前記後続スレーブとの応答が逆転したことを示す情報を含む転送順序整合情報を記憶する転送順序整合情報記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送順序整合情報記憶部に記憶されている転送順序整合情報を参照して、前記出力対象のコマンド情報を選択すること
を特徴とする請求項９に記載のバスシステム。
【請求項１１】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報を前記先行スレーブとし、次に記憶されたコマンド情報を前記後続スレーブとして、応答が逆転したことを示す情報が前記転送順序整合情報に含まれている場合に、当該最初に記憶されたコマンド情報よりも先に、当該次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項１０に記載のバスシステム。
【請求項１２】
前記転送要求出力順序制御部は、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有する一のバススレーブに出力したコマンド情報の中で、転送応答を得る前のコマンド情報の数が、当該一のバススレーブが蓄積し得るコマンド情報の数の最大値に達している場合、転送応答を得る前のコマンド情報の数が、蓄積し得るコマンド情報の数の最大値に達していない他のバススレーブの転送対象アドレスを含むコマンド情報を、前記最初に記憶されたコマンド情報より先に出力対象のコマンド情報として選択すること
を特徴とする請求項９に記載のバスシステム。
【請求項１３】
前記転送要求出力部から出力されたコマンド情報に対する、当該コマンド情報に含まれている転送対象アドレスを有するバススレーブからの応答の入力を受ける転送応答入力部と、
前記転送要求出力部が前記コマンド情報を出力してから、前記転送応答入力部が前記応答の入力を受けるまでの転送応答入力時間を計測する転送応答入力時間計測部と、
前記転送応答入力時間計測部で計測された転送応答入力時間を、前記バススレーブ毎に記憶する転送応答入力時間記憶部と、をさらに備え、
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間に基づいて、前記出力対象のコマンド情報を選択すること
を特徴とする請求項９に記載のバスシステム。
【請求項１４】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されているコマンド情報の内、最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、次に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間よりも短い場合に、前記最初に記憶されたコマンド情報よりも先に、前記次に記憶されたコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項１３に記載のバスシステム。
【請求項１５】
前記転送要求出力順序制御部は、前記転送応答入力時間記憶部に記憶されている転送応答入力時間を参照して、前記コマンドキューに記憶されたコマンド情報の内、最初に記憶されたコマンド情報を除いた何れか一つのコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間が、当該最初に記憶されたコマンド情報に含まれている転送対象アドレスを有するバススレーブの転送応答入力時間に予め定められた時刻からの経過時間を加算した時間よりも長い場合に、当該最初に記憶されたコマンド情報よりも先に、当該何れか一つのコマンド情報を、前記出力対象のコマンド情報として選択すること
を特徴とする請求項１３に記載のバスシステム。
【請求項１６】
前記転送応答入力時間計測部で計測された、前記バススレーブ毎の転送応答入力時間に基づいて、当該転送応答入力時間が増加傾向にあるバススレーブへの前記コマンド情報の出力数を制限するように、前記転送要求出力順序制御部に指示するキュー数制御部をさらに備え、
前記転送要求出力順序制御部は、前記キュー数制御部から指示されたバススレーブへの前記コマンド情報の出力数を制限すること
を特徴とする請求項１３から１５の何れか一項に記載のバスシステム。
【請求項１７】
データの転送を要求する転送要求の種別を示す転送種別及び当該転送要求の送り先のバススレーブの転送対象アドレスを含むコマンド情報を生成するアクセス生成過程と、
前記アクセス生成過程で生成されたコマンド情報を複数記憶するコマンドキューイング過程と、
前記コマンドキューイング過程で記憶された複数のコマンド情報の内、第１のコマンド情報に含まれている転送対象アドレスを有する第１のバススレーブよりも応答の遅い第２のバススレーブが有する転送対象アドレスを含む第２のコマンド情報を、出力対象のコマンド情報として、当該第１のコマンド情報よりも先に選択する転送要求出力順序制御過程と、
前記転送要求出力順序制御過程で選択されたコマンド情報を、当該選択されたコマンド情報に含まれている転送対象アドレスを有するバススレーブに出力する転送要求出力過程と、を有すること
を特徴とするバス制御方法。
【国際調査報告】
2014156282.tif 000025
2014156282.tif 000026
2014156282.tif 000027
2014156282.tif 000028