(57)【要約】【課題】メモリアクセス装置において、メモリ装置に転送するコマンドの順序を入れ替えても、あるバスマスタから発行したコマンドが他のバスマスタ又は、同じバスマスタの後続のコマンドに追い越され続けることを防止しつつ、効率的なアクセスを可能にする。【解決手段】複数のバスマスタ１１０〜１１２から各々発行された複数のコマンドは、対応するコマンドキュー１３０〜１３２に保持される。マスタ調停部１５０は前記複数のバスマスタ１１０〜１１２から特定のバスマスタを選択する。前記コマンドキュー１３０〜１３２に対応して設けられたコマンド選択部１４０〜１４２は、処理が破綻しない時間範囲である性能保証期間内でコマンドを入れ替えつつ、その性能保証期間内のコマンド群から１つのコマンドを選択する。【選択図】図２２
2014021952.tif 000002
【特許請求の範囲】
【請求項１】
複数のバスマスタとメモリ装置との間で生じるデータ転送を制御するメモリアクセス装置において、
前記複数のバスマスタの各々に対応して設けられ、対応する前記バスマスタから発行されるコマンドを保持する複数のコマンドキューと、
前記複数のバスマスタから特定のバスマスタを選択するマスタ調停部と、
前記複数のコマンドキューの各々に対応して設けられ、対応する前記コマンドキューに保持されたコマンドのうち、選択可能なコマンドの範囲を示す情報を有するコマンド群の中から１つのコマンドを選択するコマンド選択部とを備えた
ことを特徴とするメモリアクセス装置。
【請求項２】
前記請求項１に記載のメモリアクセス装置において、
前記コマンド選択部において、
選択可能なコマンドの範囲を示す情報を有するコマンド群は、対応する前記バスマスタが要求した処理が破綻しない時間範囲内のコマンド群の起点と終点とに付与された２つの識別子で囲まれる範囲内のコマンド群である
ことを特徴とするメモリアクセス装置。
【請求項３】
前記請求項２に記載のメモリアクセス装置において、
前記複数のバスマスタ又は複数のコマンド選択部は、
対応する前記バスマスタが要求した処理が破綻しない時間範囲内のコマンド群の起点と終点とに各々識別子を付与する
ことを特徴とするメモリアクセス装置。
【請求項４】
前記請求項２又は３に記載のメモリアクセス装置において、
前記複数のコマンド選択部の各々は、
前記終点の識別子が付与されたコマンドを他のコマンドよりも先に発行するときは、その終点の識別子が付与されたコマンドの１つ前のコマンドに終点の識別子を付与し直す
ことを特徴とするメモリアクセス装置。
【請求項５】
前記請求項１に記載のメモリアクセス装置において、
前記複数のコマンド選択部の各々は、
前記メモリ装置上の特定の範囲を示すアドレス値を保持する領域アドレス保持部と、
対応する前記コマンドキューに格納されたコマンドのアドレスが前記メモリ装置上の前記特定の範囲に含まれるか否かを、前記領域アドレス保持部のアドレスとの比較により判定するアドレス比較器とを備えて、
前記選択可能なコマンドの範囲を示す情報として、前記アドレス比較器の判定結果を利用する
ことを特徴とするメモリアクセス装置。
【請求項６】
前記請求項１記載のメモリアクセス装置において、
前記複数のコマンド選択部の各々は、
対応する前記バスマスタの破綻しない時間範囲を保持する保証時間保持部と、
対応する前記コマンドキューに格納されたコマンドの各々が前記保証時間保持部の示す時間範囲内か否かを判定する保証時間判定部を備えて、
前記選択可能なコマンドの範囲を示す情報として、前記保証時間判定部の判定結果を利用する
ことを特徴とするメモリアクセス装置。
【請求項７】
前記請求項１〜６の何れか１項に記載のメモリアクセス装置において、
前記複数のバスマスタから前記メモリ装置に対するコマンド発行の結果である当該バスマスタへの応答の順序を管理する応答順序管理部を備え、
前記複数のコマンド選択部の各々は、
対応する前記バスマスタがコマンドを発行した順序と、自己のコマンド選択部がコマンドを選択した順序との関係情報を、前記応答順序管理部へ通知し、
前記応答順序管理部は、
前記複数のコマンド選択部の各々が通知した前記順序の関係情報を用いて、前記当該バスマスタへの応答の順序を並び替えるかを判断し、
並び替えると判断した場合には、前記当該バスマスタへの応答の順序を並び替え、並び替えをしないと判断した場合には、前記当該バスマスタへの応答の順序を並び替えせず、応答を前記当該バスマスタに返す
ことを特徴とするメモリアクセス装置。
【請求項８】
前記請求項１〜７の何れか１項に記載のメモリアクセス装置において、
前記複数のコマンド選択部の各々は、
選択可能なコマンドの範囲を示す情報を有するコマンド群の中から１つのコマンドを選択するに際し、そのコマンド群に属する各コマンドの属性から得られる情報を追加し、この追加の情報にも基づいて排他制御を行うように、特定の１つのコマンドを選択する
ことを特徴とするメモリアクセス装置。
【請求項９】
前記請求項１〜８の何れか１項に記載のメモリアクセス装置において、
前記複数のコマンド選択部の各々は、
選択可能なコマンドの範囲を示す情報を有するコマンド群の中から、優先的に発行すべき１つのコマンドを選択する
ことを特徴とするメモリアクセス装置。
【請求項１０】
前記請求項２〜４の何れか１項に記載のメモリアクセス装置において、
前記複数のコマンド選択部の各々は、
選択可能なコマンドの範囲を示す情報を有するコマンド群の中から、対応する前記バスマスタが要求した処理が破綻しない時間範囲内にあるコマンド群を、前記起点の識別子と終点の識別子とにより判断し、
その処理が破綻しない時間範囲内にあるコマンド群のうち１つのコマンドを、優先的に発行すべき１つのコマンドとして選択する
ことを特徴とするメモリアクセス装置。
【請求項１１】
前記請求項５に記載のメモリアクセス装置において、
前記複数のコマンド選択部の各々は、
選択可能なコマンドの範囲を示す情報を有するコマンド群の中から、対応する前記バスマスタが要求した処理が破綻しない時間範囲内にあるコマンド群を、前記アドレス比較記の判定結果により判断し、その判断した処理が破綻しない時間範囲内にあるコマンド群のうち１つのコマンドを、優先的に発行すべき１つのコマンドとして選択する
ことを特徴とするメモリアクセス装置。
【請求項１２】
前記請求項６に記載のメモリアクセス装置において、
前記複数のコマンド選択部の各々は、
選択可能なコマンドの範囲を示す情報を有するコマンド群の中から、対応する前記バスマスタが要求した処理が破綻しない時間範囲内にあるコマンド群を、前記保証時間判定部の判定結果により判断し、その判断した処理が破綻しない時間範囲内にあるコマンド群のうち１つのコマンドを、優先的に発行すべき１つのコマンドとして選択する
ことを特徴とするメモリアクセス装置。
【請求項１３】
前記請求項１〜１２の何れか１項に記載のメモリアクセス装置において、
対応する前記バスマスタの処理が破綻しない時間は、特定の処理フロー時間、特定のライン時間、特定のブロック時間、特定のマクロブロック時間、特定のスライス時間、特定のフィールド時間、特定のフレーム時間、特定のGOP（Group Of Pictures）、又は特定のサンプリング周期時間である
ことを特徴とするメモリアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のバスマスタとメモリ装置に接続され、バスマスタとメモリ装置の間で生じるデータ転送を制御するメモリアクセス装置に関するものである。
【背景技術】
【０００２】
一般に、SDRAM（Synchronous Dynamic Random Access Memory）などのようなメモリ装置は、バンクに分けられた複数のメモリセルから構成されており、さらに各バンクは複数のページで構成されている。
【０００３】
メモリ装置へアクセスする際には、先ずページをアクティブした後に、一定の時間を空けてコマンドを発行しなければならない。また、同じバンクの異なったページにアクセスする際には、アクセスするバンクに対して、プリチャージといった処理をおこなった上で、ページをアクティブにしなければならない。
【０００４】
このようなメモリ装置の特性を考慮して、従来、効率良くデータ転送を行う技術が開示されている。
【０００５】
例えば、特許文献１には、複数のアクセスリクエストに対して、バンクデコードを行い該当するバンクキューに登録する。リクエストが発行された順番にキューに登録されていくが、再順序付けユニットの決定によりキュー内のリクエストの並び替えが行われる。再順序付けするかどうかは「同一ページに対する複数のR／Wリクエストが存在するか」によって決定される。これによりメモリアクセス効率を向上させる技術が開示されている。
【０００６】
また、特許文献２には、複数のメモリアクセスリクエストをメモリのバンク毎にマイクロコマンドに分割し、マスタ毎に分割されたマイクロコマンドをマスタ間で調停する。そして、マスタ間調停で選択されたバンク毎のマイクロコマンドのいずれか１つを選択してメモリアクセスを行う。これによりページミスヒット（オーバーヘッド）などによる効率低下の少ないマイクロコマンドを選択してアクセスすることにより、効率的なアクセスを実現する技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２０１１−５０５０３２号公報
【特許文献２】特開２００９−１９３１０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
前記のように特許文献１又は特許文献２に開示されている手法は、バスマスタなどから発行されたコマンドのコマンド情報の中から、バンク情報やページ情報を見て、メモリ装置に転送するコマンドの順序を入れ替えるので、効率良くメモリ装置に転送することが可能である。
【０００９】
しかしながら、前記従来の手法では、あるバスマスタから発行したコマンドが他のバスマスタ、又は、同じバスマスタの後続のコマンドに追い越され続ける恐れがある。これにより、以下のような問題が生じる可能性がある。
【００１０】
例えば、あるバスマスタの動作として、ある１つの画像の１ラインを処理する（映し出す）のに複数のコマンドリクエストが必要であり、それを処理するのにはある時間範囲で処理しなければ、システム破綻してしまう（例えば、映像が乱れたりすることが起こりうる）問題がある。
【００１１】
このようなシステム破綻しない期間を性能保証期間とすると、その性能保証期間はバスマスタ毎でも異なり、またバスマスタの動作要求の内容によっても異なってくることがある。
【００１２】
従って、前記特許文献１又は特許文献２に開示されている手法では、あるバスマスタから発行したコマンドが他のバスマスタ又は、同じバスマスタの後続のコマンドに追い越され続ける可能性があり、つまり、あるバスマスタの動作として性能保証期間中に必要な個数のコマンド全てを処理できない可能性が生じてしまうことになる。
【００１３】
本発明は、前記課題に対処するものであり、その目的は、メモリアクセス装置において、システム破綻を防ぎながら、メモリ装置への転送効率も向上させることを可能にすることにある。
【課題を解決するための手段】
【００１４】
前記目的を達成するため、本発明では、メモリアクセス装置において、バスマスタからのアクセスの性能保証期間情報を管理することとする。
【００１５】
具体的に、請求項１記載の発明のメモリアクセス装置は、複数のバスマスタとメモリ装置との間で生じるデータ転送を制御するメモリアクセス装置において、前記複数のバスマスタの各々に対応して設けられ、対応する前記バスマスタから発行されるコマンドを保持する複数のコマンドキューと、前記複数のバスマスタから特定のバスマスタを選択するマスタ調停部と、前記複数のコマンドキューの各々に対応して設けられ、対応する前記コマンドキューに保持されたコマンドのうち、選択可能なコマンドの範囲を示す情報を有するコマンド群の中から１つのコマンドを選択するコマンド選択部とを備えたことを特徴とする。
【００１６】
請求項２記載の発明は、前記請求項１に記載のメモリアクセス装置において、前記コマンド選択部において、選択可能なコマンドの範囲を示す情報を有するコマンド群は、対応する前記バスマスタが要求した処理が破綻しない時間範囲内のコマンド群の起点と終点とに付与された２つの識別子で囲まれる範囲内のコマンド群であることを特徴とする。
【００１７】
請求項３記載の発明は、前記請求項２に記載のメモリアクセス装置において、前記複数のバスマスタ又は複数のコマンド選択部は、対応する前記バスマスタが要求した処理が破綻しない時間範囲内のコマンド群の起点と終点とに各々識別子を付与することを特徴とする。
【００１８】
請求項４記載の発明は、前記請求項２又は３に記載のメモリアクセス装置において、前記複数のコマンド選択部の各々は、前記終点の識別子が付与されたコマンドを他のコマンドよりも先に発行するときは、その終点の識別子が付与されたコマンドの１つ前のコマンドに終点の識別子を付与し直すことを特徴とする。
【００１９】
請求項５記載の発明は、前記請求項１に記載のメモリアクセス装置において、前記複数のコマンド選択部の各々は、前記メモリ装置上の特定の範囲を示すアドレス値を保持する領域アドレス保持部と、対応する前記コマンドキューに格納されたコマンドのアドレスが前記メモリ装置上の前記特定の範囲に含まれるか否かを、前記領域アドレス保持部のアドレスとの比較により判定するアドレス比較器とを備えて、前記選択可能なコマンドの範囲を示す情報として、前記アドレス比較器の判定結果を利用することを特徴とする。
【００２０】
請求項６記載の発明は、前記請求項１記載のメモリアクセス装置において、前記複数のコマンド選択部の各々は、対応する前記バスマスタの破綻しない時間範囲を保持する保証時間保持部と、対応する前記コマンドキューに格納されたコマンドの各々が前記保証時間保持部の示す時間範囲内か否かを判定する保証時間判定部を備えて、前記選択可能なコマンドの範囲を示す情報として、前記保証時間判定部の判定結果を利用することを特徴とする。
【００２１】
請求項７記載の発明は、前記請求項１〜６の何れか１項に記載のメモリアクセス装置において、前記複数のバスマスタから前記メモリ装置に対するコマンド発行の結果である当該バスマスタへの応答の順序を管理する応答順序管理部を備え、前記複数のコマンド選択部の各々は、対応する前記バスマスタがコマンドを発行した順序と、自己のコマンド選択部がコマンドを選択した順序との関係情報を、前記応答順序管理部へ通知し、前記応答順序管理部は、前記複数のコマンド選択部の各々が通知した前記順序の関係情報を用いて、前記当該バスマスタへの応答の順序を並び替えるかを判断し、並び替えると判断した場合には、前記当該バスマスタへの応答の順序を並び替え、並び替えをしないと判断した場合には、前記当該バスマスタへの応答の順序を並び替えせず、応答を前記当該バスマスタに返すことを特徴とする。
【００２２】
請求項８記載の発明は、前記請求項１〜７の何れか１項に記載のメモリアクセス装置において、前記複数のコマンド選択部の各々は、選択可能なコマンドの範囲を示す情報を有するコマンド群の中から１つのコマンドを選択するに際し、そのコマンド群に属する各コマンドの属性から得られる情報を追加し、この追加の情報にも基づいて排他制御を行うように、特定の１つのコマンドを選択することを特徴とする。
【００２３】
請求項９記載の発明は、前記請求項１〜８の何れか１項に記載のメモリアクセス装置において、前記複数のコマンド選択部の各々は、選択可能なコマンドの範囲を示す情報を有するコマンド群の中から、優先的に発行すべき１つのコマンドを選択することを特徴とする。
【００２４】
請求項１０記載の発明は、前記請求項２〜４の何れか１項に記載のメモリアクセス装置において、前記複数のコマンド選択部の各々は、選択可能なコマンドの範囲を示す情報を有するコマンド群の中から、対応する前記バスマスタが要求した処理が破綻しない時間範囲内にあるコマンド群を、前記起点の識別子と終点の識別子とにより判断し、その処理が破綻しない時間範囲内にあるコマンド群のうち１つのコマンドを、優先的に発行すべき１つのコマンドとして選択することを特徴とする。
【００２５】
請求項１１記載の発明は、前記請求項５に記載のメモリアクセス装置において、前記複数のコマンド選択部の各々は、選択可能なコマンドの範囲を示す情報を有するコマンド群の中から、対応する前記バスマスタが要求した処理が破綻しない時間範囲内にあるコマンド群を、前記アドレス比較記の判定結果により判断し、その判断した処理が破綻しない時間範囲内にあるコマンド群のうち１つのコマンドを、優先的に発行すべき１つのコマンドとして選択することを特徴とする。
【００２６】
請求項１２記載の発明は、前記請求項６に記載のメモリアクセス装置において、前記複数のコマンド選択部の各々は、選択可能なコマンドの範囲を示す情報を有するコマンド群の中から、対応する前記バスマスタが要求した処理が破綻しない時間範囲内にあるコマンド群を、前記保証時間判定部の判定結果により判断し、その判断した処理が破綻しない時間範囲内にあるコマンド群のうち１つのコマンドを、優先的に発行すべき１つのコマンドとして選択することを特徴とする。
【００２７】
請求項１３記載の発明は、前記請求項１〜１２の何れか１項に記載のメモリアクセス装置において、対応する前記バスマスタの処理が破綻しない時間は、特定の処理フロー時間、特定のライン時間、特定のブロック時間、特定のマクロブロック時間、特定のスライス時間、特定のフィールド時間、特定のフレーム時間、特定のGOP（Group Of Pictures）、又は特定のサンプリング周期時間であることを特徴とする。
【００２８】
以上により、本発明では、メモリアクセスするバスマスタがマスタ調停部により選択されると、選択可能なコマンドの範囲を示す情報を有するコマンド群の中から１つのコマンドをコマンド選択部が選択する。ここで、選択可能なコマンドの範囲を示す情報として、マスタ調停部により選択されたバスマスタの性能保証期間内に発行すべきコマンド群を示す情報のみが含まれる場合には、そのような性能保証期間内にあるコマンド群の中からメモリ装置に対して適切なコマンド発行が可能になる。また、選択可能なコマンドの範囲を示す情報として、マスタ調停部により選択されたバスマスタの性能保証期間内に発行すべきコマンド群を示す情報と、そのような性能保証期間内に発行しなくても良くて後回しできるコマンド群とが含まれる場合には、バスマスタの性能保証期間内に発行すべきコマンド群を優先的に発行することが可能である。よって、性能保証期間内のコマンドがその性能保証期間とは関係のない後続のコマンドに追い越され続けることが防止される。
【発明の効果】
【００２９】
以上説明したように、本発明のメモリアクセス装置によれば、バスマスタのライト又はリード動作において、性能保証期間のコマンド群をメモリ装置に対して適切に発行するため、システム破綻することなく、転送効率も向上させたメモリアクセスが可能となる。
【図面の簡単な説明】
【００３０】
【図１】本発明の第１の実施形態に係るメモリアクセス装置の構成図である。
【図２】同メモリアクセス装置の動作フローチャートの前部を示す図である。
【図３】同動作フローチャートの後部を示す図である。
【図４】同メモリアクセス装置におけるコマンド選択の様子を示す図である。
【図５】本発明の第２の実施形態に係るメモリアクセス装置の構成図である。
【図６】同メモリアクセス装置におけるマスタ性能保証アドレス領域の設定値を例示する図である。
【図７】同メモリアクセス装置におけるコマンド発行タイミングを例示する図である。
【図８】同メモリアクセス装置のコマンド選択部の処理フローチャートを示す図である。
【図９】本発明の第３の実施形態に係るメモリアクセス装置の構成図である。
【図１０】同メモリアクセス装置におけるマスタ性能保証時間の設定値を例示する図である。
【図１１】同メモリアクセス装置におけるコマンド発行タイミングを例示する図である。
【図１２】同メモリアクセス装置のコマンド選択部の処理フローチャートを示す図である。
【図１３】本発明の第４の実施形態に係るメモリアクセス装置におけるマスタ性能保証コマンド数の設定値を例示する図である。
【図１４】同メモリアクセス装置におけるコマンド発行タイミングを例示する図である。
【図１５】同メモリアクセス装置のコマンド選択部の処理フローチャートを示す図である。
【図１６】本発明の第５の実施形態に係るメモリアクセス装置の構成図である。
【図１７】同メモリアクセス装置におけるコマンド発行タイミングを例示する図である。
【図１８】同メモリアクセス装置のコマンド選択部の処理フローチャートを示す図である。
【図１９】本発明の第６の実施形態に係るメモリアクセス装置の構成図である。
【図２０】同メモリアクセス装置におけるコマンド発行タイミングを例示する図である。
【図２１】同メモリアクセス装置のコマンド選択部の処理フローチャートを示す図である。
【図２２】本発明のメモリアクセス装置の基本構成図である。
【発明を実施するための形態】
【００３１】
以下、本発明の実施形態について図面を参照して説明する。
【００３２】
（実施形態１）
図１は、本発明のメモリアクセス装置の第１の実施形態を示し、概述すると、バスマスタが要求した性能保証期間のコマンド群の起点と終点に付与された２つの識別子の範囲内のコマンド群からコマンドを選択するものであり、これにより効率良くメモリアクセスを行うようにするものである。
【００３３】
先ず、複数のバスマスタのアクセスから特定のバスマスタが選ばれる動作について説明する。
【００３４】
図１のメモリアクセス装置の構成において、複数のバスマスタ１１０〜１１２はメモリ装置２００に対して、ライト又はリードアクセスを行う際、コマンドを発行する。
【００３５】
複数のコマンドキュー１３０〜１３２は、前記複数のバスマスタ１１０〜１１２から発行されたコマンドを保持する。
【００３６】
マスタ調停部１５０は、複数のバスマスタ１１０〜１１２からのリクエストに基づいて、特定の１つのバスマスタを選択する。このマスタ調停部１５０によって複数のバスマスタ１１０〜１１２から特定のバスマスタを選択する方法は、従来の一般的な手法を種々採用可能である。
【００３７】
コマンド選択部１４０〜１４２は、前記マスタ調停部１５０が選択した１つのバスマスタ（例えば１１０）に対応する１つのコマンドキュー（１３０）に保持された複数のコマンドのうち、バスマスタ１１０が要求した性能保証期間のコマンド群として起点の識別子と終点の識別子とを付与された２つのコマンド間にあるコマンド群の中から、１つのコマンドを下記の通り探索する。
【００３８】
ここで、前記バスマスタ（例えば１１０）が要求した性能保証期間のコマンド群として起点と終点のコマンドに付与される２つの識別子は、例えばバスマスタ１１０〜１２０から直接コマンドに付与されて発行されても良いし、バスマスタ１１０〜１２０から発行されるコマンドに基づいて、コマンド選択部１４０〜１４２が判断して付与しても良い。
【００３９】
前記コマンド選択部１４０〜１４２による特定のコマンドの探索では、後述するバンク情報管理部１５１が通知したバンク情報を利用して、選択可能なコマンド範囲内でオーバーヘッドが最小となるコマンドを優先して発行する。ここでは説明を簡単にするため、バンク情報管理部１５１が通知したバンク以外のバンクをアクセスするコマンド、つまり、直前にメモリアクセスしたバンク以外のバンクをアクセスするコマンドを優先的に発行できるようする。但し、オーバーヘッドの条件を前記に限定するものではなく、オーバーヘッドが最小になる条件が明確であれば良い。また識別子は、例えば起点のコマンドにStart、終点のコマンドにEndを付与することであり、識別子は文字列や数値などでも良い。
【００４０】
バンク情報管理部１５１は、次サイクルにおいて優先的に発行したいバンクの情報（バンク情報）を管理する。
【００４１】
また、応答順序管理部１７０は、メモリアクセスしたバスマスタ自らが発行したコマンドの順序通りにメモリアクセスが行われるように、アクセス応答順序を管理する。
【００４２】
先ず始めに、コマンド選択部１４０〜１４２のコマンド選択方法について説明する。
【００４３】
図２は、図１において複数のバスマスタのアクセスから特定のバスマスタが選ばれる動作についての説明である。
【００４４】
ステップＳ２００にて、複数のバスマスタ１１０〜１１２は、ライト又はリードアクセスする際にコマンドを発行し、ステップＳ２０１に移行する。
【００４５】
ステップＳ２０１にて、前記発行されたコマンドのアドレス情報からメモリ装置２００へのバンク情報が例えばコマンド選択部１４０〜１４２により算出され、性能保証期間のコマンド群の起点と終点とには識別子が付与された状態で、ステップＳ２０２に移行する。
【００４６】
ステップＳ２０２にて、コマンドキュー１３０〜１３２はバスマスタから発行されたコマンドを格納し、ステップＳ２０３に移行する。
【００４７】
ステップＳ２０３にて、マスタ調停部１５０は、リクエストしている複数のバスマスタ１１０〜１１２の中から特定のバスマスタ１１０〜１１２を選択し、ステップＳ２０４に移行する。
【００４８】
ステップＳ２０４にて、マスタ調停部１５０が選択した特定の１つのバスマスタ（例えば１１０）において、性能保証期間のコマンド群が対応するコマンドキュー（１３０）の中に１つしかない場合は、ステップＳ２１０に移行して先頭のコマンドを発行する。コマンドが複数ある場合は、ステップＳ２０５に移行する。
【００４９】
ステップＳ２０５にて、コマンド選択部１４０〜１４２は、バンク情報管理部１５１から受けたバンク情報を受け取り、選択された１つのバスマスタ１１０のコマンドキュー１３０の先頭から性能保証期間のコマンド群の終点の識別子が付与されたコマンドまでを探索する。そのコマンドキュー１１０に終点の識別子がない場合は、コマンドキューの最後まで探索する。その時、先頭のコマンドのバンク情報が対応するコマンド選択部１４０の情報と異なっている（直前のマスタ調停部１５０が受け取ったコマンドのバンク情報と違う）場合は、ステップＳ２１０に移行して、先頭のコマンドを発行する。しかし、先頭のコマンドのバンク情報がコマンド選択部１４０の情報と同じ（直前のマスタ調停部１５０が受け取ったコマンドのバンク情報と同じ）場合は、ステップＳ２０６に移行する。
【００５０】
ステップＳ２０６にて、選択されたバスマスタ１１０のコマンドキュー１３０のコマンド情報の終点の識別子が付与されているコマンドまで、コマンド選択部１４０がバンク情報を順に探索する。探索した結果、コマンド選択部１４０の情報と同じコマンドしかなかった（直前のマスタ調停部１５０が受け取ったコマンドのバンク情報と同じ）場合は、ステップＳ２１０に移行して、先頭のコマンドを発行する。探索した結果、コマンド選択部１４０の情報と違うコマンドがあった（直前のマスタ調停部１５０が受け取ったコマンドのバンク情報と違うバンク情報があった場合）場合は、ステップＳ２０７に移行する。
【００５１】
ステップＳ２０７にて、コマンド選択部１４０が探索したコマンドに終点の識別子がついているかを判断する。コマンドに終点の識別子がついていない場合は、ステップＳ２０９に移行して、探索したコマンドを発行する。識別子がついている場合は、ステップＳ２０８に移行する。
【００５２】
ステップＳ２０８にて、終点の識別子を１つ前のコマンドに付与し直して、ステップＳ２０９に移行して、探索したコマンドを発行する。
【００５３】
図４は、前記図１と図２での複数のバスマスタ１１０〜１１２のアクセスから特定の１つのバスマスタが選ばれる動作についての一例を示した図である。
【００５４】
図４において、上段はマスタ調停部１５０が選んだバスマスタ１１０〜１１２、その時のコマンドのバンク情報、バンク情報管理部１５１が次サイクルにおいて優先的に発行したいバンク情報について示してあり、下段については、各バスマスタ１１０〜１１２のコマンドキューの状態として、各サイクルにおけるコマンドの格納状態と、その時のコマンドのバンク情報と性能保証期間の起点と終点の状態を示している。また、コマンドキューにおいて太枠で囲んだ箇所は、各サイクルにてコマンド選択部１４０〜１４２が探索した結果、発行するコマンドを示している。尚、図４は一例を示しているだけであり、コマンドキューの段数やバンク情報の数値や識別子を限定しているものではない。
【００５５】
サイクル０は、ステップＳ２００〜Ｓ２０３が実行され、ステップＳ２０４にてコマンドキューの中に複数のコマンドが存在している状態を示している。
【００５６】
サイクル１は、コマンドキュー内にコマンド群が複数存在しているためにステップＳ２０５に移行し、バンク情報管理部１５１がどのバンクも優先しているため、Ｓ２１０に移行し、先頭のコマンドを発行している。
【００５７】
サイクル２は、コマンドキュー内にコマンド群が複数存在しているためにステップＳ２０５に移行し、バンク情報管理部１５１の情報より０，１，３が優先されるため、ステップＳ２１０に移行し、先頭のコマンドを発行している。
【００５８】
サイクル３は、コマンドキュー内にコマンド群が複数存在しているためにステップＳ２０５に移行し、バンク情報管理部１５１が示している情報はコマンドキュー１３０〜１３２の先頭のコマンドのバンク情報と競合しているため、ステップＳ２０６に移行し、コマンドキュー１３０〜１３２のコマンド情報の終点の識別子が付与されているコマンド又はコマンドキュー１３０〜１３２の最終段まで探索する。探索した結果、コマンドキュー１３０〜１３２の２段目にバンク２の情報を持ったコマンドが存在していたため、ステップＳ２０７に移行し、探索したコマンドには終点の識別子がないためステップＳ２０９に移行し、探索したコマンドを発行している。
【００５９】
サイクル４、５、６は、サイクル３と同じように先頭のコマンドのバンク情報はバンク情報管理部１５１が示している情報と競合しているため、コマンド選択部１４０〜１４２が探索したコマンドキュー１３０〜１３２の２段目のコマンドを発行している。
【００６０】
サイクル７は、コマンドキュー内にコマンド群が複数存在しているためにステップＳ２０５に移行し、バンク情報管理部１５１が示している情報はコマンドキュー１３０〜１３２の先頭のコマンドのバンク情報と競合しているため、ステップＳ２０６に移行し、コマンドキュー１３０〜１３２のコマンド情報の終点の識別子が付与されているコマンド又はコマンドキュー１３０〜１３２の最終段まで探索する。探索した結果、コマンドキュー１３０〜１３２の２段目にバンク０の情報を持ったコマンドが存在していたため、ステップＳ２０７に移行し、探索したコマンドには終点の識別子が付与されているため、ステップＳ２０８に移行し、終点の識別子が付与されているコマンドより１つ前のコマンドに終点の識別子を付与し直し、ステップＳ２０９に移行して、探索したコマンドを発行している。
【００６１】
サイクル８、９では、今までの説明と同様に、同図に示されたコマンドを発行している。
【００６２】
サイクル１０は、コマンドキュー内にコマンド群が複数存在してないためにステップＳ２１０に移行し、先頭のコマンドを発行している。
【００６３】
サイクル１１は、サイクル１０と同様にコマンドを発行している。
【００６４】
サイクル１２は、コマンドキュー内にコマンド群が複数存在しているためにステップＳ２０５に移行し、バンク情報管理部１５１が示している情報はコマンドキュー１３０〜１３２の先頭のコマンドのバンク情報と競合しているため、ステップＳ２０６に移行する。しかし、終点の識別子までにバンク競合しないコマンドがないためにステップＳ２１０に移行し、先頭のコマンドを実行する。
【００６５】
よって、前記説明より、オーバーヘッドが最小になるコマンドを優先的に発行することができ、かつ、発行すべきコマンドをバスマスタ１１０〜１１２が要求した性能保証期間内に発行できるので、後続のコマンドに追い越され続けることなくメモリアクセスすることができる。従って、システム破綻することなく、転送効率も向上させたメモリアクセスを行うことができる。
【００６６】
次に、図１のメモリアクセス装置１００において、あるバスマスタ１１０〜１１２がマスタ調停部１５０で選ばれてからバスマスタへの応答について、図３を用いて説明する。
【００６７】
１）マスタ調停部によって選ばれたリクエスト属性がライトの場合は、次の通りである。
【００６８】
ステップＳ２１１にて、マスタ調停部１５０から発行されたコマンド属性がライトであるため、ステップＳ２１２に移行する。
【００６９】
ステップＳ２１２にて、バスマスタ１１０〜１１２から発行されるライトデータを応答順序管理部１７０が保持し、コマンド選択部１４０〜１４２で選ばれたコマンドに対するライトデータをアクセス制御部１６０が受け付け、ステップＳ２１３に移行する。
【００７０】
ステップＳ２１３にて、アクセス制御部１６０からメモリ装置２００にライトデータを書き込み、ステップＳ２１４に移行する。
【００７１】
ステップＳ２１４にて、コマンド選択部１４０〜１４２がバスマスタ１１０〜１１２からの発行順序とコマンド選択した順序関係とを応答順序管理部１７０に通知し、ステップＳ２１５に移行する。
【００７２】
ステップＳ２１５にて、アクセス制御部１６０は、メモリ装置２００に書き込みが完了すると、書き込み完了通知信号を応答順序管理部１７０に通知し、ステップＳ２１６に移行する。
【００７３】
ステップＳ２１６にて、メモリアクセスしたバスマスタ自らが発行したコマンドの順序通りにメモリアクセスが必要であるかが応答順序管理部１７０で下記の通り判断される。
【００７４】
自らが発行したコマンドの順序通りにメモリアクセスが必要でない場合は、ステップＳ２２０に移行し、アクセス制御部１６０から発行された順序で書き込み完了信号をマスタに発行する。自らが発行したコマンドの順序通りにメモリアクセスが必要である場合は、ステップＳ２１７に移行する。
【００７５】
ステップＳ２１７にて、応答順序管理部１７０は、コマンド選択部１４０〜１４２が通知した信号を管理し、バスマスタ１１０〜１１２がコマンド発行した順にならない場合は、ステップＳ２１８に移行し、アクセス制御部１６０から通知された書き込み完了通知信号を保持する。応答順序管理部１７０に保持した書き込み完了通知信号がバスマスタ１１０〜１１２のコマンド発行順になると、ステップＳ２１９に移行する。
【００７６】
ステップＳ２１９にて、応答順序管理部１７０は、バスマスタ１１０〜１１２がコマンド発行した順序通りに書き込み完了通知信号を当該バスマスタ１１０〜１１２に返す。
【００７７】
（２）マスタ調停部１５０によって選ばれたリクエスト属性がリードの場合は、次の通りである。
【００７８】
ステップＳ２１１にて、マスタ調停部１５０から発行されたコマンド属性がリードであるため、ステップＳ２２１に移行する。
【００７９】
ステップＳ２２１にて、コマンド選択部１４０〜１４２で選らばれたコマンドがアクセス制御部１６０に転送され、アクセス制御部１６０がメモリ装置２００にコマンドを転送し、ステップＳ２２２に移行する。
【００８０】
ステップＳ２２２にて、コマンド選択部１４０〜１４２がバスマスタ１１０〜１１２からの発行順序とコマンド選択した順序関係とを応答順序管理部１７０に通知し、ステップＳ２２３に移行する。
【００８１】
ステップＳ２２３にて、メモリ装置２００からアクセス制御装置１６０にリードデータを転送し、アクセス制御部１６０が応答順序管理部１７０にリードデータを転送し、ステップＳ２２４に移行する。
【００８２】
ステップＳ２２４にて、メモリアクセスしたバスマスタ自らが発行したコマンドの順序通りにメモリアクセスが必要であるかが応答順序管理部１７０で判断される。
【００８３】
自らが発行したコマンドの順序通りにメモリアクセスが必要でない場合は、ステップＳ２２８に移行し、アクセス制御部１６０から発行された順序でリードデータをバスマスタに発行する。自らが発行したコマンドの順序通りにメモリアクセスが必要である場合は、ステップＳ２２５に移行する。
【００８４】
ステップＳ２２５にて、応答順序管理部１７０は、コマンド選択部１４０〜１４２が通知した信号を管理し、バスマスタ１１０〜１１２がコマンド発行した順にならない場合は、ステップＳ２２６に移行し、アクセス制御部１６０から発行されたリードデータを保持する。応答順序管理部１７０に保持したリードデータがバスマスタ１１０〜１１２のコマンド発行順になると、ステップＳ２２７に移行する。
【００８５】
ステップＳ２２７にて、応答順序管理部１７０は、バスマスタ１１０〜１１２がコマンド発行した順序通りにリードデータを当該バスマスタ１１０〜１１２に返す。
【００８６】
続いて、図４を用いて、マスタ調停部１５０にて選ばれたバスマスタへの応答に関して、アクセス制御部１６０から発行される応答を応答順序管理部１７０が制御することについて、説明する。図３におけるライトアクセスの場合は、ステップＳ２１６〜ステップＳ２２０にあたり、リードアクセスの場合は、ステップＳ２２４〜ステップＳ２２８にあたる。また、説明としては図３のバスマスタ０に着目して説明するが、バスマスタ１、バスマスタｎも同様であり、バスマスタ０だけに限定しているわけでなない。
【００８７】
１）マスタ調停部によって選ばれたリクエスト属性がライトの場合は、次の通りである。
【００８８】
バスマスタから発行されたコマンドの順序は｛バンク情報、識別子｝として（｛２、Ｓ｝，｛２｝，｛１｝，｛０、Ｅ｝）であるが、コマンド選択部１４０〜１４２は（｛２、Ｓ｝，｛１｝，｛０｝，｛２、Ｅ｝）の順にコマンドを選択している。つまり、バスマスタ１１０〜１１２が発行したコマンド順とコマンド選択部１４０〜１４２が選択した順序とは、保たれていないことが判る。
【００８９】
仮に、バスマスタ１１０〜１１２が、自らが発行したコマンドの順序通りにメモリアクセスしなくても良い（アウトオブオーダーの）バスマスタ１１０〜１１２であれば、ステップＳ２１６〜Ｓ２２０に移行し、書き込み完了通知信号はアクセス制御部１６０が発行した順序のままバスマスタに返される。
【００９０】
しかし、バスマスタ１１０〜１１２が自らが発行したコマンドの順序通りにメモリアクセスしなければならない（インオーダー）バスマスタである場合には、最初に通知された｛２、Ｓ｝に対する書き込み完了通知信号は、バスマスタ１１０〜１１２が発行した順序と同じであるため、ステップＳ２１６、ステップＳ２１７及びステップＳ２１９に移行して、書き込み完了通知信号をバスマスタ１１０〜１１２に返す。次からのコマンドに関して、｛１｝は本来なら３番目に、｛０｝は４番目に、｛２、Ｅ｝は２番目にコマンド選択部１４０〜１４２が選んでいるため、｛１｝に対する書き込み完了通知信号としては、ステップＳ２１７〜Ｓ２１８に移行し、応答順序管理部１７０が書き込み完了通知信号を保持する。次の｛０｝に対する書き込み完了通知信号も、ステップＳ２１７〜Ｓ２１８に移行し、応答順序管理部１７０が書き込み完了通知信号を保持する。そして｛２、Ｅ｝に対する書き込み完了通知信号が応答順序管理部１７０に通知されると、バスマスタ１１０〜１１２がコマンド発行した順に並び替えることが可能になるため、ステップＳ２１７〜Ｓ２１９に移行し、応答順序管理部１７０はバスマスタ１１０〜１１２が発行した順序に書き込み完了通知を並び替えバスマスタ１１０〜１１２に発行する。
【００９１】
（２）マスタ調停部によって選ばれたリクエスト属性がリードの場合は、次の通りである
バスマスタから発行されたコマンドの順序は｛バンク情報、識別子｝として、（｛２、Ｓ｝，｛２｝，｛１｝，｛０、Ｅ｝）であるが、コマンド選択部１４０〜１４２は（｛２、Ｓ｝，｛１｝，｛０｝，｛２、Ｅ｝）の順にコマンドを選択している。つまり、バスマスタ１１０〜１１２が発行したコマンド順とコマンド選択部１４０〜１４２が選択した順序とは、保たれていないことが判る。
【００９２】
仮に、バスマスタ１１０〜１１２が、自らが発行したコマンドの順序通りにメモリアクセスしなくても良い（アウトオブオーダーの）バスマスタ１１０〜１１２であれば、ステップＳ２２４〜Ｓ２２８に移行し、リードデータはアクセス制御部１６０が発行した順序のままバスマスタに発行される。
【００９３】
しかし、バスマスタ１１０〜１１２が、自らが発行したコマンドの順序通りにメモリアクセスしなければならない（インオーダーの）バスマスタである場合には、最初に通知された｛２、Ｓ｝に対するリードデータは、バスマスタ１１０〜１１２が発行した順序と同じであるため、ステップＳ２２４〜Ｓ２２５及びステップＳ２２７に移行して、リードデータをバスマスタ１１０〜１１２に返す。次からのコマンドに関して、｛１｝は本来なら３番目に、｛０｝は４番目に、｛２、Ｅ｝は２番目にコマンド選択部１４０〜１４２が選んでいるため、｛１｝に対するリードデータとしては、ステップＳ２２５〜Ｓ２２６に移行し、応答順序管理部１７０がリードデータを保持する。次の｛０｝に対するリードデータも、ステップＳ２２５〜Ｓ２２６に移行し、応答順序管理部１７０がリードデータを保持する。そして｛２、Ｅ｝に対するリードデータが応答順序管理部１７０に通知されると、バスマスタ１１０〜１１２がコマンド発行した順に並び替えることが可能になるため、ステップＳ２２５〜Ｓ２２７に移行し、応答順序管理部１７０はバスマスタ１１０〜１１２がコマンド発行した順序にリードデータを並び替えて、バスマスタ１１０〜１１２に発行する。
【００９４】
以上が、コマンド群の起点と終点とに各々識別子を付与した場合の実施形態の説明である。
【００９５】
（実施形態２）
次に、本発明の第２の実施形態を説明する。
【００９６】
図５は、バスマスタ１１０〜１１２の性能破綻が生じないコマンドの範囲をコマンドのアドレスで判定し、コマンドキューのコマンドを入れ替えることにより、効率の良いメモリアクセス転送を行う実施形態の構成図である。同図は、図１の構成に加え、領域アドレス設定部４００を有すると共に、各コマンド選択部１４０〜１４２は、領域アドレス保持部５００〜５０２と、アドレス比較器５１０〜５１２とを持つ構成である。
【００９７】
次に、各々のブロックに関して説明する。
【００９８】
図５において、領域アドレス設定部４００は、各バスマスタ０〜Ｎの性能保証すべき一連のコマンドのアクセスするアドレス領域の先頭アドレス、末尾アドレスをバスマスタ１１０〜１１２毎に設定するものである。ここで、設定するアドレス領域は、１つのバスマスタに対して複数セットあっても良い。
【００９９】
また、コマンド選択部１４０〜１４２は、各々領域アドレス保持部５００〜５０２とアドレス比較器５１０〜５１２とを備えている。前記領域アドレス保持部５００〜５０２は、領域アドレス設定部４００から設定される各バスマスタの性能保証すべき一連のコマンドのアクセスするアドレス領域の先頭アドレス、末尾アドレスを１セット又は複数セット保持する。また、アドレス比較器５１０〜５１２は、領域アドレス保持部５００〜５０２に保持されたアドレスセットと、コマンドキュー１３０〜１３２内のコマンドのアドレスとを比較し、領域アドレス保持部５００〜５０２に保持されたアドレス領域に含まれるコマンドかどうかを判定し、その判定結果をコマンドキューに格納する。コマンド選択部１４０〜１４２は、コマンドキューに格納されたアドレス比較器の判定結果を参照して、コマンドキューの中からメモリアクセスする場合のオーバーヘッドが最小化できるコマンドを選択する。
【０１００】
次に、このメモリアクセス装置において、実際にメモリアクセスが行われる様子を説明する。
【０１０１】
図６は、領域アドレス設定部４００から設定される同図の１）性能保証アドレス領域と、同図の（２）調停条件である。領域アドレス設定部４００から同図の１）性能保証アドレス領域の先頭アドレス、末尾アドレスが、各バスマスタの領域アドレス保持部５００〜５０２に設定され、アドレス比較器５１０〜５１２で用いられる領域アドレス情報となる。図６の１）の例では、バスマスタ０に（０ｘ８０００００００、０ｘ８００００７７Ｆ）、（０ｘ８００００７８０、０ｘ８００００ＥＦＦ）、…（０ｘ８０１Ｆ９Ｃ８０、０Ｘ８０１Ｆ３ＡＦＦ）、バスマスタ１に（０ｘ９０００００００、ｘ９００００７７Ｆ）、（０ｘ９００００７８０、０ｘ９００００ＥＦＦ）、…（０ｘ９００ＦＣＡ８０、０Ｘ９００ＦＤ１ＦＦ）、バスマスタＮに（０ｘＣ０００００００、０ｘＣ００００７７Ｆ）、（０ｘＣ００００７８０、０ｘＣ００００ＥＦＦ）、…（０ｘＣ０１Ｆ９Ｃ８０、  ０ＸＣ０１ＦＡ３ＦＦ）の各々複数のアドレスセットが設定される。また、システム全体のメモリアクセスに関するバンド幅、レイテンシ保証などを行うマスタ調停部１５０には、図６の（２）の調停条件が設定されているとする。これはＹサイクル中にＸ個のコマンドを受け付けるというようなコマンド調停ルールを実装した場合の例である。尚、マスタ調停部１５０のルールをこれに限定するものではなく、各バスマスタの性能を保証するために何らかの時間情報によって制御されているものとする。図６の（２）に示すように、バスマスタ０は１００サイクル中に５個のコマンドを受け付けることにより、バスマスタ０のメモリアクセスに関する性能保証が可能となることを示し、同様に、バスマスタ１は２００サイクル中に１０個のコマンドを受け付け、バスマスタＮは４００サイクル中に４０個のコマンドを受け付けることを意味する。尚、領域アドレス設定部４００から設定される領域アドレス情報は、コマンド選択部１４０〜１４２やマスタ調停部１５０で保持することに限定するものではなく、参照が可能であれば何処に置いても良い。
【０１０２】
次に、図５の構成において、図６の性能保証アドレス領域を設定し、実際にメモリアクセスコマンドが発生し、コマンド選択される様子を、図７を用いて説明する。但し、図７はバスマスタ０に着目したものであるが、他のバスマスタに関しても設定値が異なるのみであり、制御方法は同じとなる。
【０１０３】
先ず、メモリアクセスコマンドが発生する前に、領域アドレス設定部４００からバスマスタ０の領域アドレス保持部５００に、図６の１）のマスタ０のアドレス情報（０ｘ８０００００００、０ｘ８００００７７Ｆ）、（０ｘ８００００７８０、０ｘ８００００ＥＦＦ）、…（０ｘ８０１Ｆ９Ｃ８０、０Ｘ８０１ＦＡ３ＦＦ）という値が設定され、マスタ調停部１５０には図６の（２）の調停条件として１００サイクル中に５つのコマンドを受け付けるという設定がされる。また、メモリアクセス装置１００のコマンドキューの段数は、ここでは５段として説明するが、これに限定するものではない。
【０１０４】
図７では、１）バスマスタ１１０〜１１２の「コマンド発行タイミング」、（２）マスタ調停部１５０の「調停タイミング」、（３）バンク情報管理部１５１の「バンクＮｏ．」、（４）コマンドキュー１３０〜１３２の「コマンド選択状態」に関して、コマンド選択部１４０〜１４２でのアドレス判定結果と、時間経過に伴う各ブロックの変化の状態を示している。尚、コマンド選択部１４０〜１４２のアドレス判定結果は、連続して処理される性能保証すべき一連のコマンド群の間の区別ができるように、一例として、各々のバスマスタの複数ある領域アドレス情報の何セット目に該当するかを記載しているが、これに限定するものではない。
【０１０５】
１）バスマスタ１１０〜１１２の「コマンド発行タイミング」は、バスマスタ０からメモリ装置２００に対してアクセスするコマンド発行のタイミングである。バスマスタ０の性能保証を満たすようにメモリアクセス装置１００に対して先行的にコマンドを発行すると想定したものである。ここでは、メモリアクセス要求としてＮｏ．１〜１０のコマンドが各々システム基準時間で時刻Ｔ＝０サイクルから開始し、時刻Ｔ＝２０までにコマンドＮｏ．１〜５のコマンド発行を完了し、時刻Ｔ＝１００までにＮｏ．６〜１０までのコマンド発行が完了しているものとする。また、コマンドのアクセスするバンクＮｏ．は１コマンドにつき１バンクであり、コマンドＮｏ．１〜１０のバンクＮｏ．はコマンド番号順に０〜３を繰り返してアクセスするものとする。本実施形態では、メモリ装置２００は４バンク（バンクＮｏ．０〜３）から構成され、１コマンドは任意の１バンクをアクセスするものと想定しているが、メモリ装置２００のバンク数と１コマンドに含まれるバンク数を限定するものではない。
【０１０６】
（２）マスタ調停部１５０の「調停タイミング」は、調停条件として１００サイクル中５回のコマンドを受け付ける設定がされているため、ここでは２０サイクル中に１回のコマンド受け付けが行われることにより、バスマスタ０のコマンド調停を行うものとする。つまり、バスマスタから発行されたコマンドは、時刻Ｔが（ａ）２０、（ｂ）４０、（ｃ）６０、（ｄ）８０、（ｅ）１００、（ｆ）１２０、（ｇ）１４０、（ｈ）１６０、（ｉ）１８０、（ｊ）２００のタイミングでコマンドの調停が行われるものとする。
【０１０７】
（３）バンク情報管理部１５１の「バンクＮｏ．」は、任意のサイクルでマスタ調停部１５０にて調停されてメモリ装置２００にアクセスするコマンドのバンクＮｏ．を示している。また、図７では、バスマスタ０に着目したものであるが、バンクＮｏ．の更新はマスタ０以外の１〜Ｎのバスマスタによってもメモリアクセス権の取得のタイミング毎に行われる。また、本実施形態では、１コマンドは１バンクから構成されており、同一バンクが連続でアクセスされない限り、メモリのオーバーヘッドは発生しないものとして説明する。尚、１コマンド当りのバンク構成やオーバーヘッドが発生する条件はこれに限定するものではなく、オーバーヘッド発生条件が明確であれば良い。
【０１０８】
（４）コマンドキュー１３０〜１３２の「コマンド選択状態」は、バスマスタ０が発行するコマンドが発行順番通りに格納されている様子を、バンクＮｏ．とコマンド選択部１４０〜１４２のアドレス比較器５１０〜５１２の判定結果とを一緒に示し、マスタ調停部１５０からのコマンド受け付けのタイミングで図７（３）及び（４）の情報から選択されるコマンドを示したものである。
【０１０９】
次に、時刻（ａ）〜（ｋ）におけるコマンド選択が行われる方法を説明する。
【０１１０】
時刻（ａ）では、バスマスタ０から時刻Ｔ＝２０までにＮｏ．１〜５までのコマンドが発行完了しているので、コマンドキュー０にはコマンドＮｏ．１〜５が順番に格納されており、各々のバンクＮｏ．が０、１、２、３、０となっている。また、コマンドキュー０にコマンドが格納される際に、コマンドのアドレスは、領域アドレス保持部０に格納されたアドレス情報と比較が行われ、アドレス比較器０での比較結果がコマンドキュー０に格納される。ここで、アドレス比較器０での比較結果は、一例として、領域アドレス保持部０に保持されているアドレス情報の何セット目であるかを格納しており、入れ替え可能なコマンド数は５コマンドであると判定される。
【０１１１】
時刻Ｔ＝２０で、マスタ調停部１５０からバスマスタ０に対してメモリ装置へのアクセス権が与えられるが、バンク情報管理部１５１は初期状態であるため、コマンドキュー０の先頭のコマンドＮｏ．１のバンクＮｏ．０が選択される。
【０１１２】
次に、バスマスタ０のコマンドのアクセス権が与えられる（ｂ）の時刻Ｔ＝４０では、５段あるコマンドキュー０の先頭から４段までが入れ替え可能なコマンドの対象となる。また、ここで、コマンド選択する際にバンク情報管理部１５１のバンク情報を参照すると、直前のサイクルでアクセスされたバンクＮｏ．は１であるため、コマンドキュー０を先頭から探索するとコマンドキュー０の先頭バンクとバンク情報管理部１５１のバンクＮｏ．とが競合し、このままではオーバーヘッドが発生することが判る。そこで、同一バンクの連続発行を回避するために、次のコマンドを探索すると、コマンドＮｏ．３のバンクＮｏ．２であればバンクが異なるためにオーバーヘッドを回避可能となり、時刻Ｔ＝４０では、コマンドＮｏ．２の代わりにコマンドＮｏ．３が発行されることになる。
【０１１３】
同様に、時刻Ｔ＝６０では、入れ替え可能なコマンド数は３となり、直前のサイクルのバンク情報管理部１５１の値が１となるため、コマンドキュー０先頭のバンクと競合するため、ここでも次のコマンドＮｏ．４のバンクＮｏ．３が選択される。
【０１１４】
時刻Ｔ＝８０では、入れ替え可能なコマンド数は２となり、直前のサイクルのバンク情報管理部１５１の値が３であるため、コマンドキュー０先頭のコマンドＮｏ．２のバンクＮｏ．１がそのまま選択される。時刻Ｔ＝１００では、入れ替え可能なコマンド数は１であるため、バンク情報管理部１５１の値に関わらず、コマンドキュー０の先頭であるコマンドＮｏ．５のバンクＮｏ．０が選択される。
【０１１５】
この選択を繰り返すと、時刻Ｔ＝１２０、１４０、１６０、１８０、２００のタイミングでは、各々、コマンドＮｏ．７、８、９、６、１０の順番で選択されることになり、これらのアクセスにより、オーバーヘッドを回避しながらメモリアクセスが効率良く発行されている様子が判る。
【０１１６】
次に、コマンド選択部１４０〜１４２でコマンドが選択される様子を、図８のコマンド選択部の処理フローに基づいて説明する。これは、図５のコマンド選択部０（１４０）に関する説明であるが、その他のコマンド選択部１−Ｎについても同様である。
【０１１７】
先ず、ステップＳ５００で領域アドレス設定部４００から領域アドレス保持部５００に領域アドレス情報が設定される。図６の１）からコマンド選択部０には（０ｘ８０００００００、０ｘ８００００７７Ｆ）、（０ｘ８００００７８０、０ｘ８００００ＥＦＦ）、…（０ｘ８０１Ｆ９Ｃ８０、０Ｘ８０１ＦＡ３ＦＦ）の値が領域アドレス保持部５００〜５１２に保持される。
【０１１８】
ステップＳ５０１で、バスマスタ０からメモリアクセス装置１００に発行されたコマンドのアドレスと、領域アドレス保持部０で保持されている領域アドレス情報とを比較し、その判定結果をコマンドキュー０に格納する。
【０１１９】
次に、ステップＳ５０２で、マスタ調停部１５０からのメモリアクセス権が取得できるまで待つ。
【０１２０】
ステップＳ５０３では、メモリアクセス権が取得され、バンク情報管理部１５１のバンク情報と入れ替え可能なコマンドキュー０のバンク情報とから、メモリアクセスのオーバーヘッドが最小となるコマンドを選択することになる。同様の処理を、後続のコマンドに対しても繰り返し実施する。
【０１２１】
以上がアドレス範囲を設定した場合の実施形態である。
【０１２２】
（実施形態３）
続いて、本発明の第３の実施形態を説明する。
【０１２３】
図９は、性能破綻が生じないように任意の時間範囲内でコマンドキューのコマンド入れ替えを行うことにより、効率の良いメモリアクセス転送を行う実施形態の構成図を示す。同図は、図１の構成に加えて、マスタ性能保証時間設定部７００を有すると共に、各コマンド選択部１４０〜１４２に対して、保証時間保持部８００〜８０２と、保証時間判定部８１０〜８１２とを持つ。次に、各々のブロックに関して説明する。
【０１２４】
図９において、マスタ性能保証時間設定部７００は、各バスマスタ０〜Ｎの性能保証すべき時間設定をメモリアクセス装置１００に設定するものである。また、その設定値はシステムとメモリアクセス装置１００の動作周波数に基づいて決定されるサイクル数などで設定されるものとし、メモリアクセス装置１００内のクロックに依存してカウントする設定値とすべきである。
【０１２５】
また、コマンド選択部１４０〜１４２は、各々、保証時間保持部８００〜８０２と、保証時間判定部８１０〜８１２とを備えている。保証時間保持部８００〜８０２は、マスタ保証時間判定部７００から設定される各バスマスタの性能保証時間を保持する。また、保証時間判定部８１０〜８１２は、保証時間保持部８００〜８０２に保持された性能保証時間をカウントするための性能保証サイクルカウンタ（図示せず）と、コマンドキューの入れ替え可能な範囲を示す入れ替え可能コマンド数カウンタ（図示せず）とを備え、その値を参照してコマンドキュー１３０〜１３２の中からメモリアクセスする場合のオーバーヘッドが最小化できるコマンドを選択する。
【０１２６】
次に、このメモリアクセス装置１００において、実際にメモリアクセスが行われる様子を説明する。
【０１２７】
図１０は、マスタ性能保証時間設定部７００から設定される同図の１）性能保証時間と、同図の（２）調停条件を示す。マスタ保証時間設定部７００から図１０の１）性能保証時間設定値が各バスマスタの保証時間保持部８００〜８０２に保持され、保証時間判定部８１０〜８１２で用いられる時間情報となる。また、ここでは、バスマスタ０〜Ｎ、メモリアクセス装置１００共に、同一動作周波数で動作するものとし、図１０で設定される設定値はその周波数によるクロックのサイクルに同期してカウントされるものとする。図１０の１）の例では、バスマスタ０に１００サイクル、バスマスタ１に２００サイクル、バスマスタＮに４００サイクルが設定される。また、システム全体のメモリアクセスに関するバンド幅、レイテンシ保証などを行うマスタ調停部１５０には、図１０の（２）の調停条件が設定される。これは、Ｙサイクル中にＸ個のコマンドを受け付けるというようなコマンド調停ルールを実装した場合の例である。尚、マスタ調停部１５０のルールをこれに限定するものではなく、各バスマスタの性能を保証するために何らかの時間情報によって制御されているものとする。図１０の（２）に示すように、バスマスタ０は１００サイクル中に５個のコマンドを受け付けることにより、バスマスタ０のメモリアクセスに関する性能保証が可能となることを示し、同様に、バスマスタ１は２００サイクル中に１０個のコマンドを受け付け、バスマスタＮは４００サイクル中に４０個のコマンドを受け付けることを意味する。尚、マスタ性能保証時間設定部７００から設定される性能保証時間情報は、コマンド選択部１４０〜１４２やマスタ調停部１５０で保持することに限定するものではなく、参照が可能であればどこに置いても良い。
【０１２８】
次に、図９の構成において、図１０のマスタ性能保証時間の設定値を設定し、実際にメモリアクセスコマンドが発生し、コマンド選択される様子を図１１を用いて説明する。但し、図１１はバスマスタ０に着目したものであるが、他のバスマスタに関しても、設定値が異なるのみで制御方法は同じとなる。
【０１２９】
先ず、メモリアクセスコマンドが発生する前に、マスタ性能保証時間設定部７００からバスマスタ０の保証時間保持部８００に図１０の１）のバスマスタ０の性能保証時間１００サイクルという値が設定され、マスタ調停部１５０には、図１０の（２）の調停条件である１００サイクル中に５つのコマンドを受け付けるという設定がされる。また、メモリアクセス装置１００のコマンドキューの段数は、ここでは５段として説明するが、これに限定するものではない。
【０１３０】
図１１では、１）バスマスタ０の「コマンド発行タイミング」、（２）マスタ調停部１５０の「調停タイミング」、（３）バンク情報管理部１５１の「バンクＮｏ．」、（４）コマンド選択部０の「性能保証サイクルカウンタ」、（５）コマンド選択部０の「入れ替え可能コマンド数カウンタ」、（６）コマンドキュー０の「コマンド選択状態」に関して、時間経過と共に各ブロックの変化の状態を示している。
【０１３１】
１）バスマスタ０の「コマンド発行タイミング」は、バスマスタ０からメモリ装置２００に対してアクセスするコマンド発行のタイミングである。バスマスタ０の性能保証を満たすようにメモリアクセス装置１００に対して先行的にコマンドを発行すると想定したものである。ここでは、メモリアクセス要求としてＮｏ．１〜１０のコマンドが各々システム基準時間で時刻Ｔ＝０サイクルから開始し、時刻Ｔ＝２０までにコマンドＮｏ．１〜５のコマンド発行を完了し、時刻Ｔ＝１００までにＮｏ．６〜１０までのコマンド発行が完了しているものとする。また、コマンドのアクセスするバンクＮｏ．は１コマンドにつき１バンクであり、コマンドＮｏ．１〜１０のバンクＮｏ．はコマンド番号順に０〜３を繰りしてアクセスするものとする。本実施形態では、メモリ装置２００は４バンク（バンクＮｏ．０〜３）から構成され、１コマンドは任意の１バンクをアクセスするものと想定しているが、メモリ装置２００のバンク数と１コマンドに含まれるバンク数を限定するものではない。
【０１３２】
（２）マスタ調停部１５０の「調停タイミング」は、マスタ性能保証時間設定部７００から１００サイクル中５回のコマンド受け付ける設定がされているため、ここでは２０サイクル中に１回のコマンド受け付けが行われることにより、バスマスタ０のコマンド調停を行うものとする。つまり、バスマスタ０から発行されたコマンドは、時刻Ｔが（ａ）２０、（ｂ）４０、（ｃ）６０、（ｄ）８０、（ｅ）１００、（ｆ）１２０、（ｇ）１４０、（ｈ）１６０、（ｉ）１８０、（ｊ）２００のタイミングでコマンドの調停が行われるものとする。
【０１３３】
（３）バンク情報管理部１５１の「バンクＮｏ．」は、任意のサイクルでマスタ調停部１５０にて調停されてメモリ装置２００にアクセスするコマンドのバンクＮｏ．を示している。また、図１１では、バスマスタ０に着目したものであるが、バンクＮｏ．の更新はバスマスタ０以外の１〜Ｎのバスマスタによってもメモリアクセス権の取得のタイミング毎に行われる。また、本実施形態では、１コマンドは１バンクから構成されており、同一バンクが連続でアクセスされない限り、メモリのオーバーヘッドは発生しないものとして説明する。尚、１コマンド当りのバンク構成やオーバーヘッドが発生する条件は、これに限定するものではなく、オーバーヘッド発生条件が明確であれば良い。
【０１３４】
（４）コマンド選択部０の「性能保証サイクルカウンタ」は、性能保証時間保持部８００に設定された時間情報である１００サイクルをカウントするカウンタ情報である。ここでは、バスマスタ０の最初のコマンドがマスタ調停部１５０によりメモリアクセス許可されたタイミング（ａ）でカウントダウン開始され、１００サイクルのカウントが完了した時点でリセットされて、再び１００サイクルをカウントするものである。
【０１３５】
（５）コマンド選択部０の「入れ替え可能コマンド数カウンタ」は、同図の（４）性能保証カウンタの残り時間とマスタ調停部１５０のコマンド受け付けの調停条件とから、残りの性能保証時間内で処理されるべきコマンド数を示すものである。つまり、ここでは、１００サイクル中に５回のコマンド受け付けを行う調停条件であるため、初期状態では５を示し、２０サイクル毎のコマンド受け付けタイミング毎にコマンド数が１つずつデクリメントされる。タイミング（ａ）では、初期状態の５コマンドの中からコマンドを選択する。つまり、コマンドキューサイズは５段となるためコマンドキュー全体から選択することになる。これを２０サイクル毎に繰り返すと、時刻Ｔ＝１００の状態ではコマンドキューの入れ替えコマンド数は１となっているため、コマンドキュー先頭のコマンドを選択することになる。
【０１３６】
（６）コマンドキュー０の「コマンド選択状態」は、バスマスタ０が発行するコマンドが発行順番通りに格納されている様子をバンクＮｏ．と一緒に示し、マスタ調停部１５０からのコマンド受け付けのタイミングでコマンド選択部０にて図１１の（３）〜（５）の情報から選択されるコマンドを示したものである。
【０１３７】
ここで、時刻（ａ）〜（ｋ）におけるコマンド選択が行われる方法を説明する。
【０１３８】
時刻（ａ）では、バスマスタ０から時刻Ｔ＝２０までにＮｏ．１〜５までのコマンドが発行完了しているので、コマンドキュー０にはコマンドＮｏ．１〜５が順番に格納されており、各々バンクＮｏ．が０、１、２、３、０の順番となる。
時刻Ｔ＝２０でマスタ調停部からバスマスタ０に対してメモリ装置へのアクセス権が与えられると、バスマスタ０からの最初のコマンドアクセス権となるため、性能保証カウンタのカウントを開始する。ここでは１００サイクルのカウントを実施するため、９９〜０まで１サイクル単位でカウンタのデクリメントを開始する。ここで、保証時間判定部０では、残りカウンタ数１００とマスタ調停部１５０の２０サイクルで１コマンド受け付ける調停条件から、入れ替え可能なコマンド数は５コマンドまでと計算される。よって、５段あるコマンドキュー全体が入れ替え可能なコマンドの対象となる。バンク情報管理部１５１は初期状態であるため、コマンドキュー０先頭のコマンドＮｏ．１のバンクＮｏ．０が選択される。
【０１３９】
次に、バスマスタ０のコマンドのアクセス権が与えられる（ｂ）の時刻Ｔ＝４０では、残りカウンタ数８０と、マスタ調停部の２０サイクルで１コマンド受け付ける調停条件とから、入れ替え可能なコマンド数は４コマンドまでと計算される。よって、５段あるコマンドキュー０の先頭から４段までが入れ替え可能なコマンドの対象となる。また、ここで、コマンド選択する際にバンク情報管理部１５１のバンク情報を参照すると、直前のサイクルでアクセスされたバンクＮｏ．は１であるため、コマンドキュー０を先頭から探索すると、コマンドキュー０の先頭バンクとバンク情報管理部１５１のバンクＮｏ．とが競合し、このままではオーバーヘッドが発生することが判る。そこで、同一バンクの連続発行を回避するために、次のコマンドを探索すると、コマンドＮｏ．３のバンクＮｏ．２であればバンクが異なるためオーバーヘッドを回避可能となり、時刻Ｔ＝４０ではコマンドＮｏ．２の代わりにコマンドＮｏ．３が発行されることになる。
【０１４０】
同様に、時刻Ｔ＝６０では入れ替え可能なコマンド数は３となり、直前のサイクルのバンク情報管理部１５１の値が１となるため、コマンドキュー０先頭のバンクと競合するため、ここでも次のコマンドＮｏ．４のバンクＮｏ．３が選択される。
【０１４１】
時刻Ｔ＝８０では、入れ替え可能なコマンド数は２となり、直前のサイクルのバンク情報管理部１５１の値が３であるため、コマンドキュー０先頭のコマンドＮｏ．２のバンクＮｏ．１がそのまま選択される。
【０１４２】
時刻Ｔ＝１００では、入れ替え可能なコマンド数は１であるため、バンク情報管理部１５１の値に関わらず、コマンドキュー０の先頭であるコマンドＮｏ．５のバンクＮｏ．０が選択される。
【０１４３】
時刻Ｔ＝１２０では、性能保証カウンタがリセットされ、残りカウンタが１００となるため、入れ替え可能なコマンド数は５つまでと戻る。
【０１４４】
この選択を繰り返すと、時刻Ｔ＝１２０、１４０、１６０、１８０、２００のタイミングでは、各々、コマンドＮｏ．７、８、９、６、１０の順番で選択されることになり、これらのアクセスによりオーバーヘッドを回避しながら、メモリアクセスが効率良く発行されている様子が判る。
【０１４５】
バスマスタ０からのコマンドが発行されていないＩＤＬＥ状態では、コマンド選択部０の性能保証カウンタは動作を続けていても良いし、性能保証期間外のＩＤＬＥ時間が長い場合には、カウンタ動作を止め、再びカウント開始する場合はリセット値から始めても良い。また、コマンド選択部０の入れ替えコマンド数もＩＤＬＥ期間はオーバーヘッド期間を考慮して、Ｄｏｎ‘ｔ  Ｃａｒｅとしても良い。
【０１４６】
次に、コマンド選択部０でコマンドが選択される様子を図１２のコマンド選択部の処理フローに基づいて説明する。これはコマンド選択部０に関する説明であるが、その他のコマンド選択部１−Ｎについても同様である。
【０１４７】
先ず、ステップＳ１０００で、マスタ保証時間設定部７００から保証時間保持部８００に性能保証時間が設定される。図１０の１）からコマンド選択部０には１００の値が保証時間保持部０に保持される。
【０１４８】
次に、ステップＳ１００１で、マスタ調停部１５０からのメモリアクセス権が取得できるまで待つ。
【０１４９】
ステップＳ１００２では、メモリアクセス権が取得され、それがシステム起動時からの最初のアクセスかどうかを判定し、最初のアクセス権取得であれば、ステップＳ１００３で性能保証カウンタのカウント動作を開始する。図１１の性能保証カウンタが時刻Ｔ＝２０でカウントダウン開始を始めているのが、このステップが相当する。もし、２度目以降のメモリアクセス権取得であれば、ステップＳ１００４で、性能保証カウンタ値とマスタ調停部１５０の調停条件とから、入れ替え可能なコマンドキューの範囲を計算する。つまり、図１１の時刻Ｔ＝２０のときに説明したように、保証時間判定部０では、残りカウンタ数１００とマスタ調停部の２０サイクルで１コマンド受け付ける調停条件とから、入れ替え可能なコマンド数は５コマンドまでと計算される。
【０１５０】
次に、ステップＳ１００５では、バンク情報管理部１５１のバンク情報と、入れ替え可能なコマンドキューのバンク情報とから、メモリアクセスのオーバーヘッドが最小となるコマンドを選択することになり、選択が完了すると、ステップＳ１００１に戻り、次のマスタ調停部１５０からのメモリアクセス権の取得待ち処理を繰り返す。
【０１５１】
以上が、時間範囲を設定した場合の実施形態である。
【０１５２】
（実施形態４）
次に、本発明の第４の実施形態を説明する。
【０１５３】
本実施形態は、時間範囲をコマンド数で置き換えた場合の実施形態である。本実施形態での構成図は、時間範囲で説明した図９と同様である。
【０１５４】
次に、コマンド数を設定する場合の内容について、マスタ保証コマンド数設定値（図１３）を用いて説明する。図１３は、マスタ性能保証時間設定部７００から設定される図１３の１）性能保証コマンド数と、同図の（２）調停条件である。マスタ保証時間設定部７００から図１３の１）性能保証コマンド数が各バスマスタの保証時間保持部８００〜８０２に保持され、保証時間判定部８１０〜８１２で用いられる時間情報の代わりに用いられる。ここで、保証時間判定部０はコマンドキューの入れ替え可能なコマンド数を示すカウンタ数の範囲内においてコマンドを選択する。図１３の１）の例では、バスマスタ０に５コマンド、バスマスタ１に１０コマンド、バスマスタＮに４０コマンド設定される。また、システム全体のメモリアクセスに関するバンド幅、レイテンシ保証などを行うマスタ調停部１５０には、図１３の（２）の調停条件が設定され、これは、図１０の（２）と同じ内容となる。また、図１３の１）の性能保証コマンド数と図１３の（２）の調停条件の設定値は、異なる値でも問題ないが、ここでは、説明を簡略化するため、調停条件の受け付けコマンド数と性能保証コマンド数とを同じ値として説明する。
【０１５５】
次に、図９の構成において、図１３のマスタ性能保証時間情報を設定し、実際にメモリアクセスコマンドが発生し、コマンド選択される様子を図１４を用いて説明する。但し、図１４はバスマスタ０に着目したものであるが、他のバスマスタに関しても、設定値が異なるのみで制御方法は同じとなる。
【０１５６】
先ず、メモリアクセスコマンドが発生する前に、マスタ性能保証時間設定部７００からバスマスタ０の保証時間保持部８００に図１３の１）のバスマスタ０の性能保証コマンド数である５コマンドという値が設定される。また、メモリアクセス装置１００のコマンドキュー０の段数はここでは５段として説明するが、これに限定するものではない。
【０１５７】
図１４では、１）バスマスタ０の「コマンド発行タイミング」、（２）マスタ調停部１５０の「調停タイミング」、（３）バンク情報管理部１５０の「バンクＮｏ．」、（４）コマンド選択部０の「入れ替え可能コマンド数カウンタ」、（５）コマンドキュー０の「コマンド選択状態」に関して、時間経過と共に各ブロックの変化の状態を示している。
【０１５８】
１）バスマスタ０の「コマンド発行タイミング」は、バスマスタ０からメモリ装置２００に対してアクセスするコマンド発行のタイミングである。図１１の１）と同じとするため、ここでは説明を省略する。
【０１５９】
（２）マスタ調停部１５０の「調停タイミング」は、マスタ性能保証時間設定部７００から１００サイクル中５回のコマンド受け付ける設定がされているため、ここでは、２０サイクル中に１回のコマンド受け付けが行われることにより、バスマスタ０のコマンド調停を行うものとする。つまり、図１１の（２）と同様に、バスマスタから発行されたコマンドは、時刻Ｔが（ａ）２０、（ｂ）４０、（ｃ）６０、（ｄ）８０、（ｅ）１００、（ｆ）１２０、（ｇ）１４０、（ｈ）１６０、（ｉ）１８０、（ｊ）２００のタイミングでコマンドの調停が行われるものとする。
【０１６０】
（３）バンク情報管理部１５１の「バンクＮｏ．」は、任意のサイクルでマスタ調停部１５０にて調停されてメモリ装置２００にアクセスするコマンドのバンクＮｏ．を示している。また、図１１の（３）と同様に、バスマスタ０に着目したものであるが、バンクＮｏ．の更新は、バスマスタ０以外のバスマスタ１〜Ｎによってもメモリアクセス権の取得のタイミング毎に行われる。また、本実施形態では、１コマンドは１バンクから構成されており、同一バンクが連続でアクセスされない限りメモリのオーバーヘッドは発生しないものとして説明する。尚、１コマンド当りのバンク構成やオーバーヘッドが発生する条件はこれに限定するものではなく、オーバーヘッド発生条件が明確であれば良い。
【０１６１】
（４）コマンド選択部０の「入れ替えコマンド数カウンタ」は、図１３の１）の性能保証コマンド数をコマンド選択時の保証時間範囲に置き換えて実行するものであり、そのコマンド数を越えて入れ替えを発生させないようにする。つまり、ここでは、マスタ調停部１５１によりコマンド選択が行われる毎に、コマンド選択可能カウンタが１ずつデクリメントされる。
【０１６２】
１００サイクル中に５回のコマンド受け付けを行う調停条件であるため、初期状態では５を示し、２０サイクル毎のコマンド受け付けタイミング毎にコマンド数が１つずつデクリメントされる。タイミング（ａ）では、初期状態の５コマンドの中からコマンドを選択する。つまり、コマンドキューサイズは５段となるため、コマンドキュー０の全体から選択することになる。
【０１６３】
（５）コマンドキュー０の「コマンド選択状態」は、バスマスタ０が発行するコマンドが発行順番通りに格納されている様子をバンクＮｏ．と一緒に示し、マスタ調停部１５０からのコマンド受け付けのタイミングでコマンド選択部０により選択されるコマンドを示したものである。
【０１６４】
ここで、時刻（ａ）〜（ｋ）におけるコマンド選択が行われる方法を説明する。
【０１６５】
時刻（ａ）では、バスマスタ０から時刻Ｔ＝２０までにＮｏ．１〜５までのコマンドが発行しているので、コマンドキュー０にはコマンドＮｏ．１〜５が順番に格納されており、各々バンクＮｏ．が０、１、２、３、０の順番となる。
【０１６６】
時刻Ｔ＝２０で、マスタ調停部１５０からバスマスタ０に対してメモリ装置２００へのアクセス権が与えられると、バスマスタ０からの最初のコマンドアクセス権となるため、入れ替え可能なコマンド数は図１３の１）の性能保証コマンド数である５コマンドまでとなる。よって、５段あるコマンドキュー０の全体が入れ替え可能なコマンドの対象となる。バンク情報管理部１５１は初期状態であるため、コマンドキュー０の先頭のコマンドＮｏ．１のバンクＮｏ．０が選択され、次回の入れ替え可能なコマンド数は１デクリメントされて４となる。
【０１６７】
次に、バスマスタ０のコマンドのアクセス権が与えられる（ｂ）の時刻Ｔ＝４０では、入れ替え可能なコマンド数は、前回のコマンド受け付け時刻Ｔ＝２０で４コマンドまでとなっているため、５段あるコマンドキュー０の先頭から４段までが入れ替え可能なコマンドの対象となる。また、ここで、コマンド選択する際に、バンク情報管理部１５１のバンク情報を参照すると、直前のサイクルでアクセスされたバンクＮｏ．は１であるため、コマンドキュー０の先頭のコマンドのバンクとバンクＮｏ．が競合し、このままではオーバーヘッドが発生することが判る。そこで、同一バンクの連続発行を回避するために、次のキューを探索すると、コマンドＮｏ．３のバンクＮｏ．２であればバンクが異なるためにオーバーヘッドを回避可能となり、時刻Ｔ＝４０では、コマンドＮｏ．２の代わりにコマンドＮｏ．３が発行されることになる。
【０１６８】
同様に、時刻Ｔ＝６０では、入れ替え可能なコマンド数は３となり、直前のサイクルのバンク情報管理部１５１の値が１となるため、コマンドキュー０の先頭のバンクと競合するため、ここでも、次のコマンドＮｏ．４のバンクＮｏ．３が選択される。
【０１６９】
時刻Ｔ＝８０では、入れ替え可能なコマンド数は２となり、直前のサイクルのバンク情報管理部１５１の値が３であるため、コマンドキュー０の先頭のコマンドＮｏ．２のバンクＮｏ．１がそのまま選択される。
【０１７０】
時刻Ｔ＝１００では、入れ替え可能なコマンド数は１であるため、バンク情報管理部１５１の値に関わらず、コマンドキュー０の先頭であるコマンドＮｏ．５のバンクＮｏ．０が選択される。ここで、入れ替え可能なコマンド数はリセットされ、５つまでに戻る。
【０１７１】
時刻Ｔ＝１２０では、入れ替え可能なコマンド数はリセットされ、５つまでとなるので、この選択を繰り返すと、時刻Ｔ＝１２０、１４０、１６０、１８０、２００のタイミングでは、各々、コマンドＮｏ．７、８、９、６、１０の順番で選択されることになり、これらのアクセスにより、オーバーヘッドを回避しながらメモリアクセスが効率良く発行されている様子が判る。
【０１７２】
バスマスタ０からのコマンドが発行されていないＩＤＬＥ状態では、コマンド選択部０の入れ替えコマンド数も、オーバーヘッド期間を考慮して、Ｄｏｎ‘ｔ  Ｃａｒｅとしても良い。
【０１７３】
次に、コマンド選択部０でコマンドが選択される様子を図１５のコマンド選択部０の処理フローを基に説明する。これは、コマンド選択部０に関する説明であるが、その他のコマンド選択部１−Ｎについても同様である。
【０１７４】
先ず、ステップＳ１１００で、マスタ保証時間設定部７００から保証時間保持部８００に性能保証コマンド数が設定される。図１３の１）からコマンド選択部０には５の値が保持部に保持される。
【０１７５】
次に、ステップＳ１１０１で、マスタ調停部１５０からのメモリアクセス権が取得できるまで待つ。
【０１７６】
ステップＳ１１０２では、メモリアクセス権が取得され、初期状態では保証コマンド数には５が保持されており、入れ替え可能コマンド数は５を示しているので、入れ替え可能なコマンドキュー０の範囲も５までとなる。その範囲内でバンク情報管理部１５１のバンク情報と入れ替え可能なコマンドキュー０のバンク情報とから、メモリアクセスのオーバーヘッドが最小となるコマンドを選択することになり、その選択が完了すると、ステップＳ１１０３で、入れ替え可能コマンド数を１デクリメントする。残りがゼロの場合は、初期化し、バスマスタ０の例では５に初期化される。入れ替え可能なコマンド数の処理が終ると、ステップＳ１１０１に戻り、次のマスタ調停部１５０からのメモリアクセス権の取得待ち処理を繰り返す。
【０１７７】
以上の説明から、各バスマスタの時間保証範囲をコマンド数で規定することによっても、前記実施形態３で示した効果と同じ効果が得られることが判る。
【０１７８】
尚、本実施形態４で示したコマンド数により実行する場合に、更に簡単な制御方法で実行する方法として、次の方法も考えられる。図１４の実施形態を基に説明すると、図１４の（４）の入れ替え可能コマンド数を常に初期値の５とする。この方法の場合、入れ替えコマンド数をコマンドアクセス権取得の毎にデクリメントしていた処理と入れ替え範囲を考慮してコマンド選択する必要がなくなり、コマンドキュー段数を５段としているため、常にコマンドキュー全体が入れ替え対象となる。但し、対象コマンドが５回以上待たして入れ替えが発生しないようにする必要がある。この方法であれば、入れ替え単位を越えてコマンドの入れ替えが行われる可能性が発生する。そのために、図１３の（２）で設定する調停条件の入れ替えコマンド数を越えて行われることを想定した調停条件を設定しておく。つまり、図１３の（２）の場合、バスマスタ０の調停条件は１００サイクル中に５コマンド受け付ける条件となっているが、常に５コマンドまで入れ替え可能とする簡易的な方法の場合は、この調停条件を２００サイクル中に１０コマンド受け付けるなどにより、常に入れ替え対象を５段とすることでも、本実施形態４と同様の効果が得られる。
【０１７９】
また、コマンド入れ替え範囲のコマンド数の管理方法については、特定の時間範囲やコマンド数の管理ができることが保証されていれば、今まで説明した方法に限定するものではない。
【０１８０】
例えば、設定された性能保証時間範囲の終端を示すコマンドにＥＮＤフラグを付与したり、入れ替えコマンド数の最後を示すコマンドにＥＮＤフラグを付与して、その境界で入れ替えが発生させないように制御しても良い。
【０１８１】
以上が、時間範囲をコマンド数で置き換えた場合の実施形態となる。
【０１８２】
（実施形態５）
一般に、メモリ装置へのアクセスに関し、ライトとリードのアクセス切り替えの際にはオーバーヘッドが大きくなる。そのため、ライトアクセスを可能な限りまとめてアクセスすることにより、効率的なメモリアクセスを行うことが可能となる。
【０１８３】
また、別の一般的な技術として排他制御がある。排他制御とは、複数のプロセスが利用できる共通のメモリ資源に対して、複数のプロセスからの同時アクセスによって競合が発生する場合に、任意のプロセスがメモリ資源をアクセスしている間は他のプロセスからはアクセスできないようにして、整合性を保つ制御のことである。例えば、メモリ装置の特定のアドレスの値によって、そのプロセスがメモリ装置に対してアクセスして良いかどうかを判断する方法などがある。
【０１８４】
本発明のメモリアクセス装置においては、ライトアクセスをまとめて発行し、同時に排他制御を実施しようとした場合に、コマンド選択部１４０〜１４２のコマンドの入れ替えにより、排他制御のためのライトアクセスとリードアクセスとを入れ替えると、不整合が生じる可能性がある。そのため、本発明のメモリアクセス装置においても、排他制御を問題なく実施できる構成を説明する。
【０１８５】
図１６は、コマンド選択部１４０〜１４２のルールの追加として、バスマスタ１１０〜１１２のコマンド情報から得られる情報を用いて、排他制御を行うための構成図を示す。
【０１８６】
図１６は、図９の構成に加え、コマンド選択部１４０〜１４２に対して、追加でリードライト判定部８２０〜８２２を持つ。次に各々のブロックに関して説明する。
【０１８７】
図１６は、図９の構成にリードライト判定部８２０〜８２２を追加したものである。リードライト判定部８２０〜８２２は、コマンド選択の際にバスマスタ１１０〜１１２からのコマンドのリード属性とライト属性とを判定し、排他制御対象のアドレスかどうかを判断して、コマンド入れ替えの判断を行うものである。その他の構成は、図９と同じであるので、ここでは説明を省略する。
【０１８８】
次に、このメモリアクセス装置において、実際にメモリアクセスが行われる様子を説明する。
【０１８９】
入れ替え可能なコマンド数は、先に説明した図１３の内容が各バスマスタ１１０〜１１２に設定されているとする。
【０１９０】
次に、図１６の構成において、図１３のマスタ性能保証時間情報を設定し、実際にメモリアクセスコマンドが発生し、コマンド選択される様子を図１７を用いて説明する。但し、図１７はバスマスタ０に着目したものであるが、他のバスマスタに関しても設定値が異なるのみで制御方法は同じとなる。
【０１９１】
先ず、メモリアクセスが発生する前に、排他制御を行うアドレスを認識する必要がある。排他制御を行うアドレスとして、具体的なアドレス番地を指定しても良いし、コマンドに対して排他制御を示すフラグを付けても良い。つまり、コマンドが排他制御すべきものであることが分かれば良い。ここでは簡単に、バンク０に相当するアドレスが排他制御すべきコマンドであるとして説明する。また、効率的なメモリアクセスを実施するために、ここではライト属性のコマンドは入れ替え可能な範囲で最後にまとめて発行する制御を行うものとする。
【０１９２】
図１７は、図１４と同じ構成となるが、（５）のコマンドキューの「コマンド選択状態」に対して、各コマンドのリードアクセス、ライトアクセスの属性が増えている。また、バンク０が排他制御の対象とすることでバンク０のコマンドのリード・ライト属性にアスタリスク（＊）を付けている。その他、１）〜（４）の説明は、図１４で説明した内容と同じであるので省略し、次に時刻（ａ）〜（ｋ）におけるコマンド選択が行われる方法を説明する。
【０１９３】
時刻（ａ）では、バスマスタ０から時刻Ｔ＝２０までにＮｏ．１〜５までのコマンドが発行しているので、コマンドキュー０にはコマンドＮｏ．１〜５が順番に格納されており、各々バンクＮｏ．が０、１、２、３、０の順番となる。
【０１９４】
時刻Ｔ＝２０で、マスタ調停部１５０からバスマスタ０に対してメモリ装置２００へのアクセス権が与えられると、バスマスタ０からの最初のコマンドアクセス権となるため、入れ替え可能なコマンド数は、図１３の１）の性能保証コマンド数である５コマンドまでとなる。よって、５段あるコマンドキュー０の全体が入れ替え可能なコマンドの対象となる。またライトアクセスのコマンドは入れ替え可能な範囲で最後にまとめて発行する制御と、バンク情報管理部１５１は初期状態であることから、コマンドキュー０の２番目にあるコマンドＮｏ．２のバンクＮｏ．１のリードコマンドが選択され、次回の入れ替え可能なコマンド数は１デクリメントされて４となる。
【０１９５】
次に、バスマスタ０のコマンドのアクセス権が与えられる（ｂ）の時刻Ｔ＝４０では、入れ替え可能なコマンド数は前回のコマンド受け付け時刻Ｔ＝２０で４コマンドまでとなっているため、５段あるコマンドキュー０の先頭から４段までが入れ替え可能なコマンドの対象となる。この４段の中で排他制御外のリードコマンドはコマンドＮｏ．４のバンクＮｏ．３が存在するので、時刻Ｔ＝４０では、コマンドＮｏ．４のリードコマンドが選択される。
【０１９６】
同様に、時刻Ｔ＝６０では、入れ替え可能なコマンド数は３となり、排他制御対象外のリードコマンドはなく、残りはライトコマンドと排他制御対象のリードコマンドのみとなるので、ライトコマンドをまとめて発行する。つまり、直前のサイクルのバンク情報管理部１５１の値が０となるため、コマンドキュー０の先頭のバンクと競合するため、次のコマンドＮｏ．３のバンクＮｏ．２のライトコマンドが選択される。
【０１９７】
時刻Ｔ＝８０では、入れ替え可能なコマンド数は２となり、ライトコマンドの最後となるコマンドキュー０の先頭のコマンドＮｏ．１のバンクＮｏ．０のライトコマンドが選択される。排他制御対象のコマンドＮｏ．５のリードコマンドが残っているが、これはここで選択した排他制御対象のコマンドＮｏ．１のライトコマンドを追い抜かないように制御することにより、整合性が維持される。
【０１９８】
時刻Ｔ＝１００では、入れ替え可能なコマンド数は１であり、排他制御対象のライトコマンドは発行済みであるため、コマンドキュー０の先頭であるコマンドＮｏ．５のバンクＮｏ．０が選択される。ここで、入れ替え可能なコマンド数はリセットされ、５つまでに戻る。
【０１９９】
時刻Ｔ＝１２０では、入れ替え可能なコマンド数はリセットされて、５つまでとなり、排他制御対象コマンドもないため、同様の選択を繰り返すと、時刻Ｔ＝１２０、１４０、１６０、１８０、２００のタイミングでは、各々、コマンドＮｏ．７、８、９、６、１０の順番で選択される。
【０２００】
次に、コマンド選択部０でコマンドが選択される様子を、図１８のコマンド選択部０の処理フローを基に説明する。これはコマンド選択部０に関する説明であるが、その他のコマンド選択部１−Ｎについても同様である。
【０２０１】
先ず、ステップＳ１２００で、マスタ保証時間設定部７００から保証時間保持部８００に性能保証コマンド数が設定される。図１３の１）からコマンド選択部０には５の値が保持部に保持される。
【０２０２】
次に、ステップＳ１２０１で、マスタ調停部１５０からのメモリアクセス権が取得できるまで待つ。
【０２０３】
ステップＳ１２０２では、メモリアクセス権が取得され、初期状態では保証コマンド数には５が保持されており、入れ替え可能コマンド数は５を示しているので、入れ替え可能なコマンドキュー０の範囲も５までとなる。その範囲内に排他制御外のリードコマンドがあるかどうか判定する。
【０２０４】
排他制御対象外のリードコマンドがあれば、ステップＳ１２０３で、バンク情報管理部１５１のバンク情報と入れ替え可能なコマンドキュー０のバンク情報からメモリアクセスのオーバーヘッドが最小となるリードコマンドを選択する。
【０２０５】
ステップＳ１２０２で、排他制御対象外のリードコマンドがなく、ライトコマンドと排他制御対象のリードコマンドしかない場合は、ステップＳ１２０４で、入れ替え可能なコマンドの範囲内からオーバーヘッドが最小となるライトコマンドを優先して発行し、最後に排他制御対象のリードコマンドを発行する。
【０２０６】
選択が完了すると、ステップＳ１２０５で入れ替え可能コマンド数を１デクリメントする。残りがゼロの場合は初期化し、バスマスタ０の例では５に初期化される。入れ替え可能なコマンド数の処理が終ると、ステップＳ１２０１に戻り、次のマスタ調停部１５０からのメモリアクセス権の取得待ち処理を繰り返す。
【０２０７】
以上の説明からライトアクセスをまとめて発行しながら、排他制御のルールが入ったとしても、のコマンド入れ替えを実施しながら、最適なメモリアクセスを実現可能となることが判る。
【０２０８】
（実施形態６）
次に、本発明の第６の実施形態を説明する。
【０２０９】
コマンド選択部１４０〜１４２において、対応するコマンドキュー１３０〜１３２に保持された複数のコマンドのうち選択可能なコマンド群の中には、性能保証が必要でその性能保証期間中に必ず選択して発行すべきコマンドと、性能保証の必要がなくその性能保証期間中に発行しなくても良くて発行を後回しでできるコマンドとの２種類が存在する場合がある。そのような場合には、性能保証が必要なコマンドを優先的に発行することにより、効率的なメモリアクセスを実現できる。本実施形態では、その特定のコマンドを優先的に発行する場合について説明する。
【０２１０】
図１９は、コマンド選択部１４０〜１４２の特定コマンドとして、性能保証対象となるコマンドを判定するための構成図である。
【０２１１】
図１９は、図９の構成に加え、コマンド選択部１４０〜１４２の各々に対して、追加で、保証対象判定部８３０〜８３２を持つ。次に各々のブロックに関して説明する。
【０２１２】
図１９は、図９の構成に、保証対象判定部８３０〜８３２を追加したものである。保証対象判定部８３０〜８３２は、コマンド選択の際にバスマスタ１１０〜１１２からのコマンドが保証対象のコマンドであるかを判定し、コマンド入れ替えの判断を行うものである。その他の構成は図９と同じであるので、ここでは説明を省略する。
【０２１３】
次に、このメモリアクセス装置において、実際にメモリアクセスが行われる様子を説明する。
【０２１４】
入れ替え可能なコマンド数は、先に説明した図１３の内容が各バスマスタ１１０〜１１２に設定されているとする。
【０２１５】
次に、図１９の構成において、図１３のマスタ性能保証時間情報を設定し、実際にメモリアクセスコマンドが発生し、コマンド選択される様子を図２０を用いて説明する。但し、図２０はバスマスタ０に着目したものであるが、他のバスマスタに関しても設定値が異なるのみであり、制御方法は同じとなる。
【０２１６】
先ず、コマンドキュー０のコマンドが性能保証対象のコマンドかどうかを認識する必要がある。これは、保証対象のアドレスとして具体的なアドレスを指定して判断しても良いし、コマンドに対して保証対象のコマンドであることを示すフラグを付けても良い。つまり、コマンドが性能保証の対象であることが判断できるものであれば良い。ここでは、コマンド自体に性能保証の対象であるコマンドにはフラグが付くものとして説明する。
【０２１７】
図２０は、図１４と同じ構成となるが、（５）のコマンドキュー０の「コマンド選択状態」に対して各コマンドの性能保証対象かどうかを示すフラグが追加されている。性能保証が必要なコマンドにアスタリスク（＊）を付けている。その他の１）〜（４）の説明は、図１４で説明した内容と同じであるので省略し、次に時刻（ａ）〜（ｋ）におけるコマンド選択が行われる方法を説明する。
【０２１８】
時刻（ａ）では、バスマスタ０から時刻Ｔ＝２０までにＮｏ．１〜５までのコマンドが発行しているので、コマンドキュー０にはコマンドＮｏ．１〜５が順番に格納されており、各々バンクＮｏ．が０、１、２、３、０の順番となる。
【０２１９】
時刻Ｔ＝２０で、マスタ調停部１５０からバスマスタ０に対してメモリ装置２００へのアクセス権が与えられると、バスマスタ０からの最初のコマンドアクセス権となるため、入れ替え可能なコマンド数は、図１３の１）の性能保証コマンド数である５コマンドまでとなる。よって、５段あるコマンドキュー０の全体が入れ替え可能なコマンドの対象となるが、性能保証対象はＮｏ．１〜４までとなっており、Ｎｏ．５は保証対象外のコマンドである。そこで、性能保証対象のＮｏ．１〜４の中から、コマンドキュー０の１番目にあるコマンドＮｏ．１のバンクＮｏ．０のコマンドが選択され、次回の入れ替え可能なコマンド数は１デクリメントされて、４となる。
【０２２０】
次に、バスマスタ０のコマンドのアクセス権が与えられる（ｂ）の時刻Ｔ＝４０では、入れ替え可能なコマンド数は前回のコマンド受け付け時刻Ｔ＝２０で４コマンドまでとなっているため、５段あるコマンドキュー０の先頭から４段までが入れ替え可能なコマンドの対象となる。更に、４段中の性能保証対象はＮｏ．５以外となり、バンク情報管理部１５１のバンクＮｏ．は１であるため、バンクが競合しないコマンドＮｏ．３、バンクＮｏ．２が選択される。
【０２２１】
同様に、時刻Ｔ＝６０では、入れ替え可能なコマンド数は３となり、性能保証対象はＮｏ．５以外の中からバンクが競合しないコマンドＮｏ．４、バンクＮｏ．３のコマンドが選択される。
【０２２２】
時刻Ｔ＝８０では、入れ替え可能なコマンド数は２となり、性能保証対象コマンドはＮｏ．２しかなく、バンク情報管理部１５１のバンクＮｏ．とは競合しないので、そのままコマンドＮｏ．２，バンクＮｏ．１のコマンドが選択される。
【０２２３】
時刻Ｔ＝１００では、入れ替え可能なコマンド数は１であるが、残りのコマンドＮｏ．５の性能保証対象外のコマンドを選択してしまうと、バンク情報管理部１５１のバンクＮｏ．と競合して、オーバーヘッドが生じてしまう。そこで、性能保証対象外であることを利用して、ここでは、入れ替え可能な範囲を越えて次の保証対象コマンドの中からバンクが競合しないコマンドを選択する。つまり、ここではバンクが競合しないコマンドＮｏ．６，バンクＮｏ．１が選択される。
【０２２４】
時刻Ｔ＝１２０では、入れ替え可能なコマンド数はリセットされて、５つまでとなり、同様に繰り返すと、性能保証対象外のコマンドＮｏ．５はバンクが競合することになるため、最後に選択されることになる。時刻Ｔ＝１６０の状態では、コマンドＮｏ．５，９の何れもバンク０で競合しないものであるが、性能保証対象であるＮｏ．９が優先されて発行されている。よって、時刻Ｔ＝１２０、１４０、１６０、１８０、２００のタイミングでは、各々、コマンドＮｏ．７、８、９、１０、５の順番で選択される。
【０２２５】
また、性能保証対象外のコマンドはいつまでも発行されないことがないように、最低でも選択される制約はつけておくべきである。
【０２２６】
次に、コマンド選択部０でコマンドが選択される様子を図２１のコマンド選択部０の処理フローを基に説明する。これはコマンド選択部０に関する説明であるが、その他のコマンド選択部１−Ｎについても同様である。
【０２２７】
先ず、ステップＳ１３００で、マスタ保証時間設定部７００から保証時間保持部８００に性能保証コマンド数が設定される。図１３の１）からコマンド選択部０には５の値が保持部に保持される。
【０２２８】
次に、ステップＳ１３０１で、マスタ調停部１５０からのメモリアクセス権が取得できるまで待つ。ステップＳ１３０２では、メモリアクセス権が取得され、初期状態では保証コマンド数には５が保持されており、入れ替え可能コマンド数は５を示しているので、入れ替え可能なコマンドキューの範囲も５までとなる。その範囲内に保証対象のコマンドがあるかどうか判定する。
【０２２９】
保証対象のコマンドがあれば、ステップＳ１３０３で、その中から優先的にバンク情報管理部１５１のバンク情報と入れ替え可能なコマンドキューのバンク情報とから、メモリアクセスのオーバーヘッドが最小となるリードコマンドを選択する。
【０２３０】
ステップＳ１３０２で、保証対象のコマンドがない場合は、ステップＳ１３０４で、入れ替え可能なコマンド数の範囲を越えて保証対象となっているコマンドの中から、オーバーヘッドが最小となるコマンドを選択する。保証対象のコマンドがなければ、コマンドキュー０の中から保証対象外のコマンドの中でオーバーヘッドが最小となるものを選択する。選択が完了すると、ステップＳ１３０５で、入れ替え可能コマンド数を１デクリメントする。残りがゼロの場合は初期化し、バスマスタ０の例では５に初期化される。入れ替え可能なコマンド数の処理が終ると、ステップＳ１３０１に戻り、次のマスタ調停部１５０からのメモリアクセス権の取得待ち処理を繰り返す。
【０２３１】
以上の説明から、性能保証すべき特定のコマンドだけを入れ替え可能なコマンドの範囲の中から優先的に選択することにより、最適なメモリアクセスが実現可能となることが判る。
【０２３２】
尚、前記実施形態１〜６にてコマンド選択部１４０〜１４２が選択するコマンド範囲について説明したが、本発明は実施形態１〜６で説明した内容に限定しているわけではなく、コマンド選択部１４０〜１４２は選択するコマンド範囲の示すある情報を有することでコマンドを選択できるメモリアクセス装置であれば良い。よって、本願発明は、図２２に示すように、バスマスタ１１０〜１１２、コマンドキュー１３０〜１３２、コマンド選択部１４０〜１４２及びマスタ調停部１５０のみを備えて、図１のようにバンク情報管理部１５１や応答順序管理部１７０を備えない構成を有すれば良い。
【０２３３】
尚、その他のコマンド選択範囲としては、バスマスタ１１０〜１１２の処理が破綻しない時間や範囲が、特定の処理フロー時間、特定のライン時間、特定のブロック時間、特定のマクロブロック時間、特定のスライス時間、特定のフィールド時間、特定のフレーム時間、特定のGOP（Group Of Pictures）、特定のサンプリング周期時間を用いることで実施することができる。
【産業上の利用可能性】
【０２３４】
以上説明したように、本発明に係るメモリアクセス装置は、複数のバスマスタが共有するメモリ装置にデータ転送することを制御する装置を用いたシステムＬＳＩに適している。
【符号の説明】
【０２３５】
１００                  メモリアクセス装置
１１０、１１１、１１２  バスマスタ
１３０、１３１、１３２  コマンドキュー
１４０、１４１、１４２  コマンド選択部
１５０                  マスタ調停部
１５１                  バンク情報管理部
１６０                  アクセス制御部
１７０                  応答順序管理部
２００                  メモリ装置
４００                  領域アドレス設定部
５００、５０１、５０２  領域アドレス保持部
５１０、５１１、５１２  アドレス比較器
７００                  マスタ性能保証時間設定部
８００、８０１、８０２  保証時間保持部
８１０、８１１、８１２  保証時間判定部
８２０、８２１、８２２  リードライト判定部
８３０、８３１、８３２  保証対象判定部
【図１】
2014021952.tif 000003
【図２】
2014021952.tif 000004
【図３】
2014021952.tif 000005
【図４】
2014021952.tif 000006
【図５】
2014021952.tif 000007
【図６】
2014021952.tif 000008
【図７】
2014021952.tif 000009
【図８】
2014021952.tif 000010
【図９】
2014021952.tif 000011
【図１０】
2014021952.tif 000012
【図１１】
2014021952.tif 000013
【図１２】
2014021952.tif 000014
【図１３】
2014021952.tif 000015
【図１４】
2014021952.tif 000016
【図１５】
2014021952.tif 000017
【図１６】
2014021952.tif 000018
【図１７】
2014021952.tif 000019
【図１８】
2014021952.tif 000020
【図１９】
2014021952.tif 000021
【図２０】
2014021952.tif 000022
【図２１】
2014021952.tif 000023
【図２２】
2014021952.tif 000024