(57)【要約】【課題】マルチバンクメモリへのアクセス制御を行うメモリインタフェースのメモリアクセス効率を向上させる。【解決手段】メモリインタフェースにおいて、バッファ（２０）は、マルチバンクメモリの各バンクに対応する複数のブロックで構成されている。バンク判定部（１０）は、入力されたメモリアクセスパラメータを対応するブロックに格納する。バッファ制御部（３０）は、バッファ（２０）からマルチバンクメモリの各バンクに対応する順にメモリアクセスパラメータが出力されるようにバッファ（２０）の出力制御を行う。行アドレス比較部（４０）は、連続して出力された同一バンクへのアクセスに係るメモリアクセスパラメータの行アドレスを比較する。コマンド生成部（５０）は、同一バンクかつ同一行へのアクセスが連続する場合、先行のメモリアクセスパラメータに係るメモリアクセス後に発行すべきプリチャージコマンドの生成を省略する。【選択図】図１
2006331008.tif 000002
【特許請求の範囲】
【請求項１】
マルチバンクメモリに対する複数のバスマスタからのアクセスを制御するメモリインタフェースであって、
前記複数のバスマスタからのメモリアクセスパラメータを複数格納可能なバッファと、
前記バッファに格納されたメモリアクセスパラメータが前記マルチバンクメモリにおける各バンクに対応する順に出力されるように、前記バッファの出力制御を行うバッファ制御部と、
前記バッファから出力されたメモリアクセスパラメータに基づいて、前記マルチバンクメモリへのアクセスに係るコマンドを生成するコマンド生成部とを備え、
前記コマンド生成部は、前記マルチバンクメモリにおける同一バンクかつ同一行へのアクセスに係るメモリアクセスパラメータを連続して受けたとき、当該先行のメモリアクセスパラメータに係るメモリアクセス後に発行すべきプリチャージコマンドの生成を省略する
ことを特徴とするメモリインタフェース。
【請求項２】
請求項１に記載のメモリインタフェースにおいて、
前記バッファは、前記マルチバンクメモリにおける各バンクに対応する複数のブロックで構成されており、
当該メモリインタフェースは、
当該メモリインタフェースに入力されたメモリアクセスパラメータに係るバンクを判定し、前記バッファにおける当該判定したバンクに対応するブロックに、当該メモリアクセスパラメータを格納するバンク判定部を備え、
前記バッファ制御部は、前記ブロックを順次選択し、当該選択したブロックからメモリアクセスパラメータが連続して出力されるように、前記バッファの出力制御を行う
ことを特徴とするメモリインタフェース。
【請求項３】
請求項２に記載のメモリインタフェースにおいて、
前記バッファの構成に係る情報を格納するレジスタを備え、
前記バッファは、前記レジスタに格納された情報に基づいて、前記複数のブロックを構成する
ことを特徴とするメモリインタフェース。
【請求項４】
請求項２に記載のメモリインタフェースにおいて、
前記バンク判定部の判定結果に基づいて、前記マルチバンクメモリにおける各バンクへのアクセス要求数を計数するカウンタを備え、
前記バッファは、前記カウンタの計数結果に基づいて、所定期間ごとに、前記複数のブロックのそれぞれの大きさを変更する
ことを特徴とするメモリインタフェース。
【請求項５】
請求項２に記載のメモリインタフェースにおいて、
前記バッファにおける各ブロックの充満度を参照し、前記複数のバスマスタのうち、前記充満度が相対的に低いブロックに対応するバンクへのアクセスを要求するバスマスタに優先的にバス使用権を与えるように、バス調停器に指示を与える調停指示部を備えた
ことを特徴とするメモリインタフェース。
【請求項６】
請求項２に記載のメモリインタフェースにおいて、
前記バッファ制御部に対して前記ブロックの選択に係るタイミングを指示するタイミング指示部を備え、
前記バッファ制御部は、前記タイミング指示部によって指示されたタイミングに従って、前記ブロックを順次選択する
ことを特徴とするメモリインタフェース。
【請求項７】
請求項６に記載のメモリインタフェースにおいて、
前記タイミング指示部は、前記バッファにおける各ブロックの充満度を参照し、前記充満度が相対的に高いブロックからのメモリアクセスパラメータの出力時間が相対的に長くなるように、前記タイミングを指示する
ことを特徴とするメモリインタフェース。
【請求項８】
請求項２に記載のメモリインタフェースにおいて、
前記入力されたメモリアクセスパラメータがライトアクセス及びリードアクセスのいずれに係るものであるのかを判定するコマンド判定部を備え、
前記バッファ制御部は、前記コマンド判定部によって前記入力されたメモリアクセスパラメータがリードアクセスに係るものであると判定されたとき、前記バッファにおける、前記バンク判定部によって判定された前記入力されたメモリアクセスパラメータに係るバンクに対応するブロックを、優先的に選択する
ことを特徴とするメモリインタフェース。
【請求項９】
請求項８に記載のメモリインタフェースにおいて、
前記入力されたメモリアクセスパラメータが、前記バッファにすでに格納されているメモリアクセスパラメータであって前記マルチバンクメモリにおける同一バンクへのアクセスに係るメモリアクセスパラメータよりも先に出力可能であるか否かを判定する追い越し判定部を備え、
前記追い越し判定部は、前記コマンド判定部によって前記入力されたメモリアクセスパラメータがリードアクセスに係るものであると判定されたとき、前記バッファにおける、前記バンク判定部によって判定された前記入力されたメモリアクセスパラメータに係るバンクに対応するブロックにすでに格納されているメモリアクセスパラメータを参照し、当該参照したメモリアクセスパラメータが前記入力されたメモリアクセスパラメータに係るリードアクセスとは異なる行へのライトアクセスに係るものであるとき、前記入力されたメモリアクセスパラメータが前記参照したメモリアクセスパラメータよりも先に出力可能であると判定するものであり、
前記バッファ制御部は、前記優先的に選択したブロックから、前記追い越し判定部によって先に出力可能であると判定されたメモリアクセスパラメータが優先的に出力されるように、前記バッファの出力制御を行う
ことを特徴とするメモリインタフェース。
【請求項１０】
請求項１に記載のメモリインタフェースにおいて、
前記バッファから連続して出力された、前記マルチバンクメモリにおける同一バンクへのアクセスに係る二つのメモリアクセスパラメータについて、当該二つのメモリアクセスパラメータに係る行アドレスを比較する行アドレス比較部を備え、
前記コマンド生成部は、前記行アドレス比較部によって前記二つのメモリアクセスパラメータに係る行アドレスが一致することが示されたとき、前記プリチャージコマンドの生成を省略する
ことを特徴とするメモリインタフェース。
【請求項１１】
請求項１０に記載のメモリインタフェースにおいて、
前記バッファ制御部は、前記行アドレス比較部によって前記二つのメモリアクセスパラメータに係る行アドレスが一致しないことが示されたとき、前記マルチバンクメモリにおける別のバンクに対応するメモリアクセスパラメータが出力されるように、前記バッファの出力制御を行うものであり、
前記コマンド生成部は、前記行アドレス比較部によって前記二つのメモリアクセスパラメータに係る行アドレスが一致しないことが示されたとき、当該後続のメモリアクセスパラメータに係るメモリアクセスのためのコマンドの生成よりも先に、前記別のバンクに対応するメモリアクセスパラメータに係るメモリアクセスのためのコマンドを生成するものである
ことを特徴とするメモリインタフェース。
【請求項１２】
請求項１に記載のメモリインタフェースにおいて、
前記バッファから連続して出力された、前記マルチバンクメモリにおける同一バンクへのアクセスに係る複数のメモリアクセスパラメータについて、当該複数のメモリアクセスパラメータに係るアドレスの増分を算出するアドレス増分算出部と、
前記アドレス増分算出部によって算出された増分を合計する増分合計部とを備え、
前記コマンド生成部は、前記複数のメモリアクセスパラメータのうちの先頭のものに係るアドレスに対応するデータ、及びこれに続く、前記増分合計部によって合計された増分数のデータを、一回のアクセスでまとめて転送するためのコマンドを生成する
ことを特徴とするメモリインタフェース。
【請求項１３】
請求項１に記載のメモリインタフェースにおいて、
前記バッファからバースト転送の開始要求に係るメモリアクセスパラメータが出力されたとき、当該メモリアクセスパラメータから、当該要求に係る開始アドレス、転送長及び要求元バスマスタを判定するバースト転送判定部と、
前記バースト転送判定部によって判定された前記開始アドレスから開始して前記転送長分のデータ転送が完了するまでの間、所定転送長のバースト転送に係るアドレスを生成し、これを前記バッファに順次格納するアドレス生成部とを備え、
前記バッファ制御部は、前記マルチバンクメモリにおける前記所定転送長のバースト転送に係るバンクに対応するメモリアクセスパラメータが出力されるように、前記バッファの出力制御を行うものである
ことを特徴とするメモリインタフェース。
【請求項１４】
請求項１３に記載のメモリインタフェースにおいて、
前記バースト転送判定部は、前記バッファから出力されたメモリアクセスパラメータに係る前記所定転送長のバースト転送によって、前記マルチバンクメモリにおける一のバンクへのアクセスが終了するか否かを判定するものであり、
前記バッファ制御部は、前記バースト転送判定部によって前記終了が判定されたとき、前記マルチバンクメモリにおける次のバンクに対応するメモリアクセスパラメータが出力されるように、前記バッファの出力制御を行うものであり、
前記コマンド生成部は、前記バースト転送判定部によって前記終了が判定されたとき、前記バッファから出力されたメモリアクセスパラメータに係るコマンドの生成に続けて、前記次のバンクについてのアクティブコマンドを生成するものである
ことを特徴とするメモリインタフェース。
【請求項１５】
請求項１３に記載のメモリインタフェースにおいて、
前記バースト転送判定部は、前記所定転送長のバースト転送が前記マルチバンクメモリにおけるバンクの境界を越えるものであるか否かを判定するものであり、
前記バッファ制御部は、前記バースト転送判定部によって前記所定転送長のバースト転送が前記境界を越えるものであると判定されたとき、前記マルチバンクメモリにおける前記境界を越えた先のバンクに対応するメモリアクセスパラメータが出力されるように、前記バッファの出力制御を行うものであり、
前記コマンド生成部は、前記バースト転送判定部によって前記所定転送長のバースト転送が前記境界を越えるものであると判定されたとき、前記所定転送長のバースト転送に係るコマンドの生成の前に、前記境界を越えた先のバンクについてのアクティブコマンドを生成するものである
ことを特徴とするメモリインタフェース。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリインタフェースに関し、特に、ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）などのマルチバンクメモリに対するアクセス制御技術に関する。
【背景技術】
【０００２】
図２１は、従来のメモリインタフェースの構成を示す。図示しない機能デバイス（バスマスタとも称する）がＳＤＲＡＭにアクセスする場合、バスマスタはバス調停器１００にバス要求信号を出力する。バス調停器１００は、図示しない内部バスがどのバスマスタにも使用されていなければ内部バスの使用権（バス権とも称する）を許可する。バス調停器１００によってバス権を与えられたバスマスタは、コマンド、開始アドレス、転送語長、データなどを含むメモリアクセスパラメータをメモリインタフェースに出力する。バスマスタからのメモリアクセスパラメータは、バス調停器１００の調停結果に応じて選択され、コマンド生成部２００に伝達される。コマンド生成部２００は、バスマスタからのメモリアクセスパラメータに係るメモリアクセスコマンドを生成し、ＳＤＲＡＭへのアクセスを行う。
【０００３】
従来、ＳＤＲＡＭなどのマルチバンクメモリへのアクセスに関して、メモリアクセスの前後関係は考慮されず、また、バス権を取得したバスマスタのメモリアクセス終了時にはＳＤＲＡＭにおける全バンクをプリチャージ状態にしていた。したがって、メモリアクセスパラメータに係るアドレスが連続する場合であっても、ＳＤＲＡＭへのアクセスに際して常にアクティブコマンド及びプリチャージコマンドが発行され、ＳＤＲＡＭへのアクセスが非効率であった。この問題を解決する技術として、発行するメモリリクエスト（メモリアクセスパラメータ）と後続のメモリリクエストとのアドレスを比較し、その比較結果に応じて最適なＳＤＲＡＭアクセスを実現するメモリインタフェースが公知である（例えば、特許文献１参照）。
【特許文献１】特開平１１−１６３３９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の公知文献に係るメモリインタフェースでは、同一バンクかつ同一行へのメモリアクセスに係るメモリアクセスパラメータが連続して入力された場合には、最適なＳＤＲＡＭアクセスといった効果が得られる。しかし、異なるバンク又は異なる行アドレスへのメモリアクセスパラメータが交互に入力された場合には十分な効果が得られない。
【０００５】
上記問題に鑑み、本発明は、マルチバンクメモリへのアクセス制御を行うメモリインタフェースについて、異なるバンクへのメモリアクセスに係るメモリアクセスパラメータが交互に入力された場合であってもメモリアクセスコマンドの発行を好適化し、メモリアクセス効率を向上させることを課題とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために講じた手段は、マルチバンクメモリに対する複数のバスマスタからのアクセスを制御するメモリインタフェースとして、これら複数のバスマスタからのメモリアクセスパラメータを複数格納可能なバッファと、バッファに格納されたメモリアクセスパラメータがマルチバンクメモリにおける各バンクに対応する順に出力されるように、バッファの出力制御を行うバッファ制御部と、バッファから出力されたメモリアクセスパラメータに基づいて、マルチバンクメモリへのアクセスに係るコマンドを生成するコマンド生成部とを備えたものとする。ここで、コマンド生成部は、マルチバンクメモリにおける同一バンクかつ同一行へのアクセスに係るメモリアクセスパラメータを連続して受けたとき、当該先行のメモリアクセスパラメータに係るメモリアクセス後に発行すべきプリチャージコマンドの生成を省略するものとする。
【０００７】
これによると、メモリインタフェースに入力されたメモリアクセスパラメータが、入力順にかかわらず、マルチバンクメモリにおける各バンクに対応する順に出力され、同一バンクかつ同一行へのアクセスに係るメモリアクセスパラメータが連続して出力された場合には、プリチャージコマンドの生成が省略される。したがって、異なるバンクへのメモリアクセスに係るメモリアクセスパラメータが交互に入力された場合であってもメモリアクセスコマンドの発行が好適化され、メモリアクセス効率が向上する。
【０００８】
好ましくは、上記のバッファは、マルチバンクメモリにおける各バンクに対応する複数のブロックで構成されたものであるとする。そして、上記のメモリインタフェースは、当該メモリインタフェースに入力されたメモリアクセスパラメータに係るバンクを判定し、上記のバッファにおける当該判定したバンクに対応するブロックに、当該メモリアクセスパラメータを格納するバンク判定部を備えたものとする。ここで、バッファ制御部は、ブロックを順次選択し、当該選択したブロックからメモリアクセスパラメータが連続して出力されるように、上記のバッファの出力制御を行うものとする。
【０００９】
これによると、メモリインタフェースに入力されたメモリアクセスパラメータが、マルチバンクメモリにおける各バンクに対応したブロックで構成されたバッファにおける対応するブロックに格納されるため、バッファ制御部による、マルチバンクメモリにおける各バンクに対応する順でのメモリアクセスパラメータの出力制御が容易になる。
【００１０】
より好ましくは、上記のメモリインタフェースは、上記のバッファの構成に係る情報を格納するレジスタを備えたものとする。ここで、上記のバッファは、このレジスタに格納された情報に基づいて、複数のブロックを構成するものとする。
【００１１】
これによると、メモリインタフェースにどのようなバンク構成のマルチバンクメモリが接続されても、そのバンク構成をレジスタに設定することで柔軟に対応することが可能となる。
【００１２】
また、より好ましくは、上記のメモリインタフェースは、バンク判定部の判定結果に基づいて、マルチバンクメモリにおける各バンクへのアクセス要求数を計数するカウンタを備えたものとする。ここで、上記のバッファは、このカウンタの計数結果に基づいて、所定期間ごとに、これら複数のブロックのそれぞれの大きさを変更するものとする。
【００１３】
これによると、システム動作中にマルチバンクメモリにおける各バンクへのアクセス頻度に応じてバッファの構成が所定期間ごとに変更され、バッファリソースの有効利用が可能となる。
【００１４】
また、より好ましくは、上記のメモリインタフェースは、バッファにおける各ブロックの充満度を参照し、複数のバスマスタのうち、充満度が相対的に低いブロックに対応するバンクへのアクセスを要求するバスマスタに優先的にバス使用権を与えるように、バス調停器に指示を与える調停指示部を備えたものとする。
【００１５】
これによると、バッファの各ブロックの充満度に応じてバス調停が行われ、バッファのオーバーフローが回避され、メモリアクセス効率の低下を防止される。
【００１６】
また、より好ましくは、上記のメモリインタフェースは、バッファ制御部に対してブロックの選択に係るタイミングを指示するタイミング指示部を備えたものとする。ここで、バッファ制御部は、タイミング指示部によって指示されたタイミングに従って、ブロックを順次選択するものとする。
【００１７】
これによると、バッファ制御部によるバッファにおけるブロック選択のタイミングが変更可能となり、用途に応じて柔軟にメモリアクセスを好適化することができる。
【００１８】
さらに、タイミング指示部は、バッファにおける各ブロックの充満度を参照し、充満度が相対的に高いブロックからのメモリアクセスパラメータの出力時間が相対的に長くなるように、上記のタイミングを指示することが好ましい。
【００１９】
これによると、バッファのオーバーフローの発生が抑制され、メモリアクセス効率が向上する。
【００２０】
また、より好ましくは、上記のメモリインタフェースは、上記の入力されたメモリアクセスパラメータがライトアクセス及びリードアクセスのいずれに係るものであるのかを判定するコマンド判定部を備えたものとする。ここで、バッファ制御部は、コマンド判定部によって上記の入力されたメモリアクセスパラメータがリードアクセスに係るものであると判定されたとき、バッファにおける、バンク判定部によって判定された上記の入力されたメモリアクセスパラメータに係るバンクに対応するブロックを、優先的に選択するものとする。
【００２１】
これによると、リードアクセスの待機時間が短縮され、システム応答性が向上する。
【００２２】
さらに好ましくは、上記のメモリインタフェースは、上記の入力されたメモリアクセスパラメータが、バッファにすでに格納されているメモリアクセスパラメータであってマルチバンクメモリにおける同一バンクへのアクセスに係るメモリアクセスパラメータよりも先に出力可能であるか否かを判定する追い越し判定部を備えたものとする。ここで、追い越し判定部は、コマンド判定部によって上記の入力されたメモリアクセスパラメータがリードアクセスに係るものであると判定されたとき、バッファにおける、バンク判定部によって判定された上記の入力されたメモリアクセスパラメータに係るバンクに対応するブロックにすでに格納されているメモリアクセスパラメータを参照し、当該参照したメモリアクセスパラメータが上記の入力されたメモリアクセスパラメータに係るリードアクセスとは異なる行へのライトアクセスに係るものであるとき、上記の入力されたメモリアクセスパラメータが上記の参照したメモリアクセスパラメータよりも先に出力可能であると判定するものとする。また、バッファ制御部は、上記の優先的に選択したブロックから、追い越し判定部によって先に出力可能であると判定されたメモリアクセスパラメータが優先的に出力されるように、バッファの出力制御を行うものとする。
【００２３】
これによると、後からリードアクセスに係るメモリアクセスパラメータが、先に入力され、格納されている同一バンクへのライトアクセスに係るメモリアクセスパラメータよりも先に出力され、リードアクセスの待機時間がより一層短縮され、システム応答性がより向上する。
【００２４】
また、より具体的には、上記のメモリインタフェースは、バッファから連続して出力された、マルチバンクメモリにおける同一バンクへのアクセスに係る二つのメモリアクセスパラメータについて、当該二つのメモリアクセスパラメータに係る行アドレスを比較する行アドレス比較部を備えたものとする。ここで、コマンド生成部は、行アドレス比較部によって上記の二つのメモリアクセスパラメータに係る行アドレスが一致することが示されたとき、上記のプリチャージコマンドの生成を省略するものとする。
【００２５】
さらに具体的には、バッファ制御部は、行アドレス比較部によって上記の二つのメモリアクセスパラメータに係る行アドレスが一致しないことが示されたとき、マルチバンクメモリにおける別のバンクに対応するメモリアクセスパラメータが出力されるように、バッファの出力制御を行うものとする。また、コマンド生成部は、行アドレス比較部によって上記の二つのメモリアクセスパラメータに係る行アドレスが一致しないことが示されたとき、当該後続のメモリアクセスパラメータに係るメモリアクセスのためのコマンドの生成よりも先に、上記の別のバンクに対応するメモリアクセスパラメータに係るメモリアクセスのためのコマンドを生成するものとする。
【００２６】
これによると、同一バンクへの連続するメモリアクセスについて、後続のアクセスに係る行アドレスが先行のアクセスに係るものとは異なる場合に、後続のアクセスに係るコマンドの生成よりも先に、別のバンクへのアクセスのためのコマンドが生成されるため、後続のアクセスが終了した後に、速やかに別のバンクへのアクセスができるようになり、メモリアクセス効率が向上する。
【００２７】
一方、好ましくは、上記のメモリインタフェースは、バッファから連続して出力された、マルチバンクメモリにおける同一バンクへのアクセスに係る複数のメモリアクセスパラメータについて、当該複数のメモリアクセスパラメータに係るアドレスの増分を算出するアドレス増分算出部と、アドレス増分算出部によって算出された増分を合計する増分合計部とを備えたものとする。ここで、コマンド生成部は、複数のメモリアクセスパラメータのうちの先頭のものに係るアドレスに対応するデータ、及びこれに続く、増分合計部によって合計された増分数のデータを、一回のアクセスでまとめて転送するためのコマンドを生成するものとする。
【００２８】
これによると、所定のアドレス範囲内にある複数のメモリアクセスパラメータが連続して発行された場合に、これらメモリアクセスパラメータについて個別にコマンドを生成するのではなく、一回のアクセスでまとめてデータ転送可能なコマンドが生成され、メモリアクセス効率が向上する。
【００２９】
また、好ましくは、上記のメモリインタフェースは、バッファからバースト転送の開始要求に係るメモリアクセスパラメータが出力されたとき、当該メモリアクセスパラメータから、当該要求に係る開始アドレス、転送長及び要求元バスマスタを判定するバースト転送判定部と、バースト転送判定部によって判定された上記の開始アドレスから開始して上記の転送長分のデータ転送が完了するまでの間、所定転送長のバースト転送に係るアドレスを生成し、これをバッファに順次格納するアドレス生成部とを備えたものとする。ここで、バッファ制御部は、マルチバンクメモリにおける上記の所定転送長のバースト転送に係るバンクに対応するメモリアクセスパラメータが出力されるように、バッファの出力制御を行うものとする。
【００３０】
これによると、メモリアクセス効率の向上を図りつつ、バッファの容量が比較的小さくても、バースト転送にも対応可能となる。
【００３１】
より好ましくは、バースト転送判定部は、バッファから出力されたメモリアクセスパラメータに係る上記の所定転送長のバースト転送によって、マルチバンクメモリにおける一のバンクへのアクセスが終了するか否かを判定するものとする。また、バッファ制御部は、バースト転送判定部によって上記の終了が判定されたとき、マルチバンクメモリにおける次のバンクに対応するメモリアクセスパラメータが出力されるように、バッファの出力制御を行うものとする。そして、コマンド生成部は、バースト転送判定部によって上記の終了が判定されたとき、バッファから出力されたメモリアクセスパラメータに係るコマンドの生成に続けて、上記の次のバンクについてのアクティブコマンドを生成するものとする。
【００３２】
これによると、要求されたバースト転送を実行中にバンクの切り替わりが起こる場合、事前に次のバンクがアクティブにされ、バースト転送が中断することなく、メモリアクセス効率がより向上する。
【００３３】
また、より好ましくは、バースト転送判定部は、上記の所定転送長のバースト転送がマルチバンクメモリにおけるバンクの境界を越えるものであるか否かを判定するものとする。また、バッファ制御部は、バースト転送判定部によって上記の所定転送長のバースト転送が上記の境界を越えるものであると判定されたとき、マルチバンクメモリにおける上記の境界を越えた先のバンクに対応するメモリアクセスパラメータが出力されるように、バッファの出力制御を行うものとする。そして、コマンド生成部は、バースト転送判定部によって上記の所定転送長のバースト転送が上記の境界を越えるものであると判定されたとき、上記の所定転送長のバースト転送に係るコマンドの生成の前に、上記の境界を越えた先のバンクについてのアクティブコマンドを生成するものとする。
【００３４】
これによると、所定転送長のバースト転送の途中でバンクの境界を越える場合、事前にその境界を越えた先のバンクがアクティブにされ、バースト転送が中断することなく、メモリアクセス効率がより向上する。
【発明の効果】
【００３５】
以上のように本発明によると、マルチバンクメモリへのアクセス制御を行うメモリインタフェースについて、異なるバンクへのメモリアクセスに係るメモリアクセスパラメータが交互に入力された場合であってもメモリアクセスコマンドの発行が好適化され、メモリアクセス効率が向上する。
【発明を実施するための最良の形態】
【００３６】
以下、本発明を実施するための最良の形態について、図面を参照しながら説明する。
【００３７】
（第１の実施形態）
図１は、本発明の第１の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、バンク判定部１０、バッファ２０、バッファ制御部３０、行アドレス比較部４０及びコマンド生成部５０を備えている。
【００３８】
バンク判定部１０は、バス調停器１００によって選択された機能デバイス（不図示。バスマスタとも称する。）からのメモリアクセスパラメータに含まれるアドレスの数ビットから、そのメモリアクセスパラメータが図示しないＳＤＲＡＭのどのバンクへのアクセスに係るものであるのかを判定する。図２は、メモリアクセスパラメータのデータ構造例を示す。例えば、メモリアクセスパラメータは、ＳＤＲＡＭのアドレス（開始アドレス）、コマンド、及びライトアクセスの場合にはデータ等の情報を含む。
【００３９】
バッファ２０は、バスマスタからのメモリアクセスパラメータを複数格納する。バッファ２０は、ＳＤＲＡＭにおける各バンクに対応したブロックに分割されており、各ブロックには、バンク判定部１０によってバンク判定がなされたメモリアクセスパラメータが格納される。
【００４０】
バッファ２０は、分割されたブロックごとにメモリアクセスパラメータの格納状態を示す信号ＳＴＡをバッファ制御部３０に出力する。例えば、信号ＳＴＡは、Ｈｉレベルのとき、該当ブロックにメモリアクセスパラメータが格納されていることを示し、Ｌｏレベルのとき、該当ブロックが空であることを示す。バッファ制御部３０は、バッファ２０からＨｉレベルの信号ＳＴＡを受けると、バッファ２０の出力制御を開始する。具体的には、バッファ制御部３０は、バッファ２０におけるブロックを順次選択し、この選択したブロックが空となるか又は所定時間（最大選択時間とも称する。）が経過するまで、この選択したブロックからメモリアクセスパラメータが順次出力されるように、バッファ２０の出力制御を行う。すなわち、メモリアクセスパラメータは、メモリインタフェースへの入力順にかかわらず、対応するＳＤＲＡＭにおけるバンクの順に出力される。なお、最大選択時間が経過した後に別のブロックを選択するのは、特定のバンクへのメモリアクセスが長期間継続されるといった弊害を防止するためのものである。
【００４１】
行アドレス比較部４０は、バッファ２０の同一ブロックから連続して出力された二つのメモリアクセスパラメータについて、これらメモリアクセスパラメータに含まれる行アドレスを比較する。例えば、行アドレスの比較結果を示す信号ＡＧＲは、Ｈｉレベルのとき、行アドレスが一致していることを示し、Ｌｏレベルのとき、行アドレスが一致していないことを示す。
【００４２】
コマンド生成部５０は、バッファ２０から出力されたメモリアクセスパラメータに基づいて、ＳＤＲＡＭへのアクセスに係るコマンドを生成する。コマンド生成部５０は、コマンド生成に当たって信号ＡＧＲを参照し、同一バンクへのアクセスに係る連続するメモリアクセスパラメータの行アドレスが一致している場合には、先行のメモリアクセスパラメータに係るメモリアクセス後に発行すべきプリチャージコマンドの生成を省略する。一方、不一致の場合には、コマンド生成部５０は、通常のコマンド生成、すなわち、先行のメモリアクセスパラメータに係るコマンドの生成後にプリチャージコマンドを生成し、続いて、後続のメモリアクセスパラメータに係るアクティブコマンド及びアクセスコマンドの生成を行う。
【００４３】
図３は、本実施形態に係るメモリインタフェースの動作を説明するためのタイミングチャートである。図３（ａ）は、バッファ２０から連続して出力されたメモリアクセスパラメータの行アドレスが一致しない場合のタイミングチャートである。この場合、時刻Ｔ４で先行のメモリアクセスパラメータに係るライトコマンドが発行された後、時刻Ｔ１０でＳＤＲＡＭの全バンクを対象としてプリチャージコマンドが発行され、時刻Ｔ１７で後続のメモリアクセスパラメータに係るライトコマンドが発行されている。一方、図３（ｂ）は、バッファ２０から連続して出力されたメモリアクセスパラメータの行アドレスが一致する場合のタイミングチャートである。この場合、時刻Ｔ３で先行のメモリアクセスパラメータに係るライトコマンドが発行された後、プリチャージコマンドが発行されずに、時刻Ｔ４で後続のメモリアクセスパラメータに係るライトコマンドが発行されている。
【００４４】
以上、本実施形態によると、バスマスタからのメモリアクセスパラメータの入力順にかかわらず、ＳＤＲＡＭにおける同一バンクへのメモリアクセスに係るメモリアクセスパラメータが連続して処理され、さらに同一行へのメモリアクセスが連続する場合には不要なプリチャージコマンドの生成が省略される。これにより、異なるバンクへのメモリアクセスに係るメモリアクセスパラメータが交互に入力された場合であってもメモリアクセスコマンドの発行が好適化され、メモリアクセス効率が向上する。
【００４５】
（第２の実施形態）
図４は、本発明の第２の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、第１の実施形態に係るメモリインタフェースに、バッファ構成レジスタ２１を追加した構成をしている。以下、第１の実施形態と異なる点についてのみ説明する。
【００４６】
バッファ構成レジスタ２１は、バッファ２０の構成に係る情報を格納するものである。この情報は、例えば、メモリインタフェースを制御するＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）によって設定される。また、この情報は、メモリインタフェースに接続されたＳＤＲＡＭのバンク数に対応したものである。すなわち、ＳＤＲＡＭのバンク数に応じて、バッファ２０が最適に構成される。
【００４７】
バッファ２０は、バッファ構成レジスタ２１に格納された情報を参照して、ブロック構成を決定する。図５は、バッファ２０のブロック構成例を示す。ＳＤＲＡＭのバンク数が“４”の場合、バッファ構成レジスタ２１には、例えば、数値“４”が格納されており、バッファ２０は、図５（ａ）に示したように、バンク０〜バンク３までの４ブロックを構成する。一方、ＳＤＲＡＭのバンク数が“２”の場合、バッファ構成レジスタ２１には、例えば、数値“２”が格納されており、バッファ２０は、図５（ｂ）に示したように、バンク０及びバンク１の２ブロックを構成する。
【００４８】
バッファ２０の各ブロックの大きさは、必ずしも等しくする必要はない。ＳＤＲＡＭにおける各バンクへのアクセス頻度などを考慮して、図５（ｃ）に示したように、各ブロックの大きさに差を付けるようにしてもよい。図５（ｃ）に示した構成によると、アクセス頻度が“高”であるバンク０には、バッファ２０の総段数“１６”のうち８段が割り当てられ、アクセス頻度が“中”であるバンク１には、４段が割り当てられ、アクセス頻度が“低”であるバンク２及びバンク３には、それぞれ２段が割り当てられている。
【００４９】
なお、ブロックの大きさに差を付けてバッファ２０を構成する場合には、バッファ構成レジスタ２１には、ＳＤＲＡＭにおけるバンク数だけではなく、各バンクのアクセス頻度などについての情報をも格納する必要がある。例えば、４つのバンクについて“高”、“中”、“低”のそれぞれのアクセス頻度を考慮する場合には、アクセス頻度を表す２ビットの情報を４バンク分、すなわち、計８ビットの情報をバッファ構成レジスタ２１に格納しておけばよい。
【００５０】
以上、本実施形態によると、ＳＤＲＡＭのバンク数、さらに場合によっては各バンクへのアクセス頻度などを考慮して、バッファのブロック構成が適切になされ、メモリアクセス効率が向上するとともに、バッファリソースが有効に活用される。
【００５１】
（第３の実施形態）
図６は、本発明の第３の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、第２の実施形態に係るメモリインタフェースにおけるバッファ構成レジスタ２１に代えて、アクセスバンクカウンタ２２を備えている。以下、第２の実施形態と異なる点についてのみ説明する。
【００５２】
アクセスバンクカウンタ２２は、一定期間におけるＳＤＲＡＭの各バンクへのアクセス要求数、すなわち、アクセス頻度を計数する。具体的には、アクセスバンクカウンタ２２は、与えられた同期信号によって示される一定期間において、バンク判定部１０によってメモリアクセスパラメータに係るバンクが判定されるごとに、その判定されたバンクへのアクセス頻度を計数する。バッファ２０は、アクセスバンクカウンタ２２によって計数された各バンクのアクセス頻度を参照して、上記の一定期間ごとにブロック構成をし直す。このブロック構成については第２の実施形態で説明したとおりである。なお、同期信号として、例えば、画像表示処理用の水平同期信号を用いることができる。
【００５３】
以上、本実施形態によると、ＳＤＲＡＭの各バンクへのアクセス頻度に応じて動的にバッファのブロック構成が行われ、特に、ＳＤＲＡＭにおける特定のバンクへのアクセスが集中するようなシステムにおいて、より効率的なメモリアクセス、及びより有効なバッファリソースの活用が実現される。
【００５４】
（第４の実施形態）
図７は、本発明の第４の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、第１の実施形態に係るメモリインタフェースに、コマンド判定部１１を追加した構成をしている。以下、第１の実施形態と異なる点についてのみ説明する。
【００５５】
コマンド判定部１１は、メモリインタフェースに入力されたメモリアクセスパラメータに含まれるコマンド情報（図２参照）から、そのメモリアクセスパラメータがライトアクセス及びリードアクセスのいずれに係るものであるのかを判定する。この判定結果は、信号ＣＪＧとしてバッファ制御部３０に出力される。信号ＣＪＧは、例えば、Ｈｉレベルのとき、ライトアクセスであることを示し、Ｌｏレベルのとき、リードアクセスであることを示す。
【００５６】
バッファ制御部３０は、信号ＣＪＧがＬｏレベルのとき、バンク判定部１０から出力された信号ＢＮＫによって示された、その入力されたメモリアクセスパラメータに係るバンクに対応するブロックを優先的に選択し、その選択したブロックが空になるまでそのブロックからメモリアクセスパラメータが出力されるように、バッファ２０の出力制御を行う。すなわち、本実施形態に係るメモリインタフェースは、リードアクセスに係るメモリアクセスパラメータの入力を検出すると、バッファ２０におけるその入力されたメモリアクセスパラメータに係るバンクに対応するブロックを優先的に選択し、そのブロックに格納されたメモリアクセスパラメータをすべて処理する。なお、リードアクセスと同一バンクに対応するブロックに格納されているメモリアクセスパラメータはリードアクセスを処理する前にすべて処理されるため、データの逐次性は保たれる。このようにライトアクセスよりもリードアクセスを優先する理由は、バスマスタは、ライトアクセス要求の場合にはその処理結果を必ずしも待つ必要がないのに対して、リードアクセス要求の場合にはその処理結果を受けるまで次の処理をすることができないということに基づく。
【００５７】
以上、本実施形態によると、リードアクセスに係るメモリアクセスパラメータの処理が優先されるため、リードアクセス要求に対する待機時間が短縮され、システム応答性が向上する。
【００５８】
（第５の実施形態）
図８は、本発明の第５の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、第４の実施形態に係るメモリインタフェースに、追い越し判定部１２を追加した構成をしている。以下、第４の実施形態と異なる点についてのみ説明する。
【００５９】
追い越し判定部１２は、後から入力されたリードアクセスに係るメモリアクセスパラメータが、バッファ２０にすでに格納されているメモリアクセスパラメータよりも先に処理可能か否か、すなわち、追い越し可能か否かを判定する。具体的には、追い越し判定部１２は、信号ＣＪＧがＬｏレベルのとき、バッファ２０における信号ＢＮＫによって示されたバンクに対応するブロックにすでに格納されているライトアクセスに係るメモリアクセスパラメータを参照し、これらメモリアクセスパラメータに係る行アドレスと、後から入力されたリードアクセスに係るメモリアクセスパラメータに係る行アドレスとを比較する。そして、これら行アドレスが一致しない場合、当該後から入力されたメモリアクセスパラメータが先に入力されたメモリアクセスパラメータよりも先に処理可能であると判定し、その判定結果を信号ＰＪＧとして出力する。例えば、信号ＰＪＧは、Ｈｉレベルのとき、追い越し可能であることを示し、Ｌｏレベルのとき、追い越し不可であることを示す。
【００６０】
バッファ制御部３０は、信号ＣＪＧがＬｏレベルのとき、バンク判定部１０から出力された信号ＢＮＫによって示された、その入力されたメモリアクセスパラメータに係るバンクに対応するブロックを優先的に選択し、さらに、信号ＰＪＧがＨｉレベルのとき、その選択したブロックに後から格納されたリードアクセスに係るメモリアクセスパラメータが優先的に出力されるように、バッファ２０の出力制御を行う。すなわち、本実施形態に係るメモリインタフェースは、リードアクセスに係るメモリアクセスパラメータの入力を検出すると、バッファ２０におけるその入力されたメモリアクセスパラメータに係るバンクに対応するブロックを優先的に選択し、さらに、そのブロックにすでに格納されているメモリアクセスパラメータよりも先に処理可能であると判断した場合には、当該リードアクセスに係るメモリアクセスパラメータを先に処理する。
【００６１】
以上、本実施形態によると、リードアクセスに係るメモリアクセスパラメータの処理がより優先されるため、リードアクセス要求に対する待機時間がさらに短縮され、システム応答性がより一層向上する。
【００６２】
（第６の実施形態）
図９は、本発明の第６の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、第１の実施形態に係るメモリインタフェースにおける行アドレス比較部４０に代えて、アドレス増分算出部４１及び増分合計部４２を備えている。以下、第１の実施形態と異なる点についてのみ説明する。
【００６３】
アドレス増分算出部４１は、バッファ２０の同一ブロックから連続して出力された二つのメモリアクセスパラメータについて、これらメモリアクセスパラメータに含まれる列アドレスの増分を算出する。増分合計部４２は、アドレス増分算出部４１によって算出された増分を合計し、その合計を出力する。例えば、連続する４つのメモリアクセスパラメータについて列アドレスが連続している場合には、列アドレスは“１”ずつ増加し、その増分合計は“３”となる。
【００６４】
また、アドレス増分算出部４１は、増分合計部４２から出力された増分合計と直近に算出した列アドレス増分との合計が所定値よりも大きくなるか、又は、バッファ２０におけるメモリアクセスパラメータの出力元のブロックが切り替わったとき、列アドレスの増分合計対象となった一連のメモリアクセスパラメータのうち先頭のものを出力する。なお、上記の所定値は、バースト転送によって一度に転送可能なデータ長とする。
【００６５】
コマンド生成部５０は、アドレス増分算出部４１から出力されたメモリアクセスパラメータに示された列アドレスを先頭アドレスとして、当該先頭アドレスに対応するデータ、及びこれに続く、増分合計部４２から出力された増分合計分のデータをバースト転送するためのコマンドを生成する。
【００６６】
図１０は、本実施形態に係るメモリインタフェースの動作を説明するためのタイミングチャートである。図１０（ａ）は、３つのメモリアクセスパラメータに係るメモリアクセスをそれぞれ個別に行う場合のタイミングチャートである。この場合、時刻Ｔ３で１番目のメモリアクセスパラメータに係るライトコマンドが発行され、列アドレス“１”にデータが書き込まれた後、時刻Ｔ８で２番目のメモリアクセスパラメータに係るライトコマンドが発行され、列アドレス“２”にデータが書き込まれ、さらに、時刻Ｔ１３で３番目のメモリアクセスパラメータに係るライトコマンドが発行され、列アドレス“４”にデータが書き込まれている。一方、図１０（ｂ）は、３つのメモリアクセスパラメータに係るメモリアクセスを一度に行う場合のタイミングチャートである。この場合、時刻Ｔ３で３つのメモリアクセスパラメータに係るライトコマンドが発行され、列アドレス“１”、“２”、“４”にデータが書き込まれている。
【００６７】
以上、本実施形態によると、ＳＤＲＡＭにおける同一バンクへのメモリアクセスに係る複数のメモリアクセスパラメータが一回のバースト転送で処理されるため、ＳＤＲＡＭへのコマンド発行回数が削減され、メモリアクセス効率が向上する。
【００６８】
（第７の実施形態）
図１１は、本発明の第７の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、第１の実施形態に係るメモリインタフェースに、調停指示部６０を追加した構成をしている。以下、第１の実施形態と異なる点についてのみ説明する。
【００６９】
調停指示部６０は、バッファ２０における各ブロックに格納されたメモリアクセスパラメータの溜まり具合である充満度を参照し、バス調停器１００に対して、充満度が高いブロックに対応するバンクへのアクセス要求については優先度を下げ、充満度が低いブロックに対応するバンクへのアクセス要求の優先度を上げるように指示を出す。具体的には、調停指示部６０は、バッファ２０から各ブロックの充満度を示す信号ＦＵＬを受け、これに基づいてバス調停器１００を制御する。例えば、４つのブロックのそれぞれについて“高”、“中”、“低”の３段階の充満度を表す場合、信号ＦＵＬは、充満度を示す２ビットの信号を４ブロック分、すなわち、計８ビットの信号とすればよい。
【００７０】
以上、本実施形態によると、バッファ２０において充満度が低いブロックへのメモリアクセスパラメータの格納が優先され、充満度が高いブロックへのメモリアクセスパラメータの格納が抑制される。これにより、ＳＤＲＡＭにおける特定のバンクへのアクセス要求が集中することによって充満度が高くなったブロックがオーバーフローしてしまうことがなくなり、メモリアクセス効率の低下が防止される。
【００７１】
（第８の実施形態）
図１２は、本発明の第８の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、第１の実施形態に係るメモリインタフェースに、タイミング指示部６１を追加した構成をしている。以下、第１の実施形態と異なる点についてのみ説明する。
【００７２】
上述したように、バッファ制御部３０は、バッファ２０において選択したブロックが空となるか又は最大選択時間が経過するまで、この選択したブロックからメモリアクセスパラメータが順次出力されるように、バッファ２０の出力制御を行う。タイミング指示部６１は、バッファ制御部３０に対してブロックごとの最大選択時間を指示する。具体的には、タイミング指示部６１は、上述の信号ＦＵＬを受け、充満度が高いブロックの最大選択時間は比較的長く設定し、充満度が低いブロックの最大選択時間は比較的短く設定する。
【００７３】
また、ＣＰＵやＤＳＰなどによって、タイミング指示部６１にあらかじめ各ブロックの最大選択時間を与えておき、バッファ制御部３０があらかじめ設定された最大選択時間に従ってブロック選択を行うようにしてもよい。
【００７４】
例えば、メモリアクセスパラメータが短期間に大量に入力されるような場合には、最大選択時間を比較的短く設定しておくことが好ましい。これは、バッファ制御部３０によって選択されたブロックからメモリアクセスパラメータが出力されている間、選択されるのを長期間待ち続けているブロックには大量のメモリアクセスパラメータが格納され、当該ブロックがオーバーフローしてしまうおそれがあるからである。このような場合、最大選択時間を比較的短く設定しておくことで、選択が長期間待たされるブロックがなくなり、上記のオーバーフローの問題が回避される。
【００７５】
一方、メモリアクセスパラメータが長期間に少量しか入力されないような場合には、最大選択時間を比較的長く設定しておくことが好ましい。これは、ブロックに少なくとも二つのメモリアクセスパラメータが格納される前に次のブロックが選択されてしまうと、先に選択されたブロックからはただ一つのメモリアクセスパラメータしか出力されないため、上述したプリチャージコマンド生成の省略によるメモリアクセス効率の向上という効果が得られなくなるからである。このような場合、最大選択時間を比較的長く設定しておくことで、ＳＤＲＡＭにおける同一バンクへのアクセスに係るメモリアクセスパラメータが複数連続して出力され、上述のメモリアクセス効率の向上という効果が奏されることとなる。
【００７６】
以上、本実施形態によると、バッファ制御部３０によるバッファ２０のブロック選択に係る最大選択時間が動的又は静的に変更される。これにより、バッファ２０における各ブロックのオーバーフローが抑制され、より効率的なメモリアクセスが実現される。
【００７７】
（第９の実施形態）
図１３は、本発明の第９の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースの構成は、第１の実施形態に係るメモリインタフェースと同様であるが、行アドレス比較部４０から出力された信号ＡＧＲがバッファ制御部３０の動作条件に追加されている点が異なっている。以下、第１の実施形態と異なる点についてのみ説明する。
【００７８】
バッファ制御部３０は、Ｌｏレベルの信号ＡＧＲを受けると、バッファ２０における次のブロックを選択し、この選択したブロックからメモリアクセスパラメータが出力されるように、バッファ２０の出力制御を行う。すなわち、バッファ制御部３０は、選択したブロックからメモリアクセスパラメータが連続して出力されているところに、別ブロックからメモリアクセスパラメータを割り込ませる。
【００７９】
コマンド生成部５０は、Ｌｏレベルの信号ＡＧＲを受けると、行アドレスが一致しない後続のメモリアクセスパラメータに係るメモリアクセスのためのコマンドの生成よりも先に、割り込んで出力されたメモリアクセスパラメータに係るメモリアクセスのためのコマンドを生成する。
【００８０】
図１４は、本実施形態に係るメモリインタフェースの動作を説明するためのタイミングチャートである。図１４（ａ）は、別バンクに対応するメモリアクセスパラメータの割り込み出力を行わない場合のタイミングチャートである。この場合、時刻Ｔ３でバンク“０”の行アドレス“Ａ”（以下、アクセスＡと称する。）へのライトコマンドが発行され、時刻Ｔ１１で同じバンク“０”の異なる行アドレス“Ｂ”（以下、アクセスＢと称する。）へのライトコマンドが発行され、時刻Ｔ１６で異なるバンク“１”の行アドレス“Ｃ”（以下、アクセスＣと称する。）へのライトコマンドが発行されている。ここで、アクセスＢに先立つ時刻Ｔ５でアクセスＡの終処理であるバンク“０”についてのプリチャージコマンドが発行され、時刻Ｔ８でアクセスＢの前処理である行アドレス“Ｂ”についてのアクティブコマンドが発行されている。このように、バンクが同じでも行アドレスが異なるメモリアクセスが連続する場合、先行のメモリアクセス後にプリチャージコマンドが発行され（時刻Ｔ５）、メモリ規格で規定された所定の間隔を置いてから、後続のメモリアクセスに係る行アドレスについてのアクティブコマンドが発行される（時刻Ｔ８）。換言すると、先行するメモリアクセスに係るコマンドが発行されてから、プリチャージコマンドが発行され、さらにその後所定の間隔が経過するまでは、ＳＤＲＡＭに対してメモリアクセスが何ら行われない。
【００８１】
一方、図１４（ｂ）は、別バンクに対応するメモリアクセスパラメータの割り込み出力を行う場合のタイミングチャートである。この場合、時刻Ｔ３でバンク“０”の行アドレス“Ａ”へのライトコマンドが発行された後、時刻Ｔ４で、割り込みによって先に出力されたメモリアクセスパラメータに係る、異なるバンク“１”の行アドレス“Ｃ”についてのアクティブコマンドが発行されている。すなわち、図１４（ａ）の例（先例）では時刻Ｔ１６でようやく発行されるアクティブコマンドが、図１４（ｂ）の例（後例）では、先例においてメモリアクセスが行われなかった時刻Ｔ４に繰り上がって発行されている。そして、時刻Ｔ７でアクセスＣに係るライトコマンドが発行され、時刻Ｔ１１でアクセスＢに係るライトコマンドが発行され、先例よりも早い時点でアクセスＡ〜Ｃがすべて終了している。
【００８２】
以上、本実施形態によると、ＳＤＲＡＭにおける同一バンクかつ異なる行アドレスへのアクセスに係るメモリアクセスパラメータよりも先に、別のバンクへのアクセスに係るメモリアクセスパラメータが割り込んで出力されることによって、メモリアクセス効率が向上し、また、システム応答性が向上する。
【００８３】
（第１０の実施形態）
図１５は、本発明の第１０の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、第１の実施形態に係るメモリインタフェースに、バースト転送判定部７０及びアドレス生成部８０を追加した構成をしている。以下、第１の実施形態と異なる点についてのみ説明する。
【００８４】
バースト転送判定部７０は、バッファ２０から出力されたメモリアクセスパラメータが、転送長が１ワードのシングル転送に係るものであるか、転送長が２ワード以上のバースト転送に係るものであるかを判定し、さらに、バースト転送に係るものであると判定したとき、当該メモリアクセスパラメータがバースト転送の開始要求に係るものであるか否かを判定する。図１６は、バースト転送の開始要求に係るメモリアクセスパラメータのデータ構造の例を示す。例えば、バースト転送の開始要求に係るメモリアクセスパラメータは、ＳＤＲＡＭへのアクセスに必要な開始アドレス、コマンド、転送長及び当該要求元のバスマスタの情報を示すバスマスタ判別情報などを含む。バースト転送判定部７０は、バースト転送の開始要求に係るメモリアクセスパラメータから、当該要求に係る開始アドレス、転送長及び要求元のバスマスタを判定し、バースト転送中であるかシングル転送中であるかを示す信号ＢＳＴを出力する。例えば、信号ＢＳＴは、Ｈｉレベルのとき、バースト転送中であることを示し、Ｌｏレベルのとき、シングル転送中であることを示す。
【００８５】
アドレス生成部８０は、Ｈｉレベルの信号ＢＳＴを受けると、バースト転送判定部７０から出力された、バースト転送の開始アドレス及び転送長の情報に基づいて、バースト転送に係るアドレスの生成を開始する。具体的には、アドレス生成部８０はカウンタ（不図示）を有しており、このカウンタを用いて当該開始アドレスから開始して当該転送長分のデータ転送が完了するまでの間、バースト転送に係るアドレスを生成する。また、アドレス生成部８０は、当該転送長分のアドレス生成が完了したとき、及び、生成したアドレスがＳＤＲＡＭにおける別のバンクへのアクセスに係るものであると判断したとき、バースト転送の停止を示す信号ＨＬＴを出力する。例えば、信号ＨＬＴは、Ｈｉレベルのとき、バースト転送が停止したことを示し、Ｌｏレベルのとき、バースト転送が進行中であることを示す。
【００８６】
バス調停器１００は、Ｈｉレベルの信号ＢＳＴを受けると、バースト転送判定部７０から出力された、バースト転送の要求元のバスマスタの情報に基づいて、当該バスマスタ（不図示）にバス権を付与する。そして、バス権を得たバスマスタはバス要求を取り下げ、ライトアクセスの場合には当該アクセスに係るデータをメモリインタフェースに出力する。また、バス調停器１００は、Ｈｉレベルの信号ＨＬＴを受けると、当該バスマスタに付与したバス権を剥奪する。
【００８７】
アドレス生成部８０によって生成されるアドレスは、所定転送長のバースト転送に係るものである。例えば、バースト転送に係る所定転送長が８ワードの場合、アドレス生成部８０は、８ワード分ずつ増加するアドレスを生成する。ライトアクセスに係るバースト転送の場合、アドレス生成部８０は、生成したアドレスをバスマスタから出力されたデータと合わせて、バッファ２０における、当該ライトアクセスに係るバンクに対応するブロックに格納する。また、リードアクセスに係るバースト転送の場合、アドレス生成部８０は、生成したアドレスを、バッファ２０における、当該リードアクセスに係るバンクに対応するブロックに格納する。なお、アドレス生成部８０によるアドレス生成は、バス権が付与されたバスマスタからのバス要求が取り下げられたタイミングから開始するとよい。
【００８８】
バッファ制御部３０は、Ｈｉレベルの信号ＢＳＴを受けると、バースト転送に係るバンクに対応するブロックからメモリアクセスパラメータが出力されるように、バッファ２０の出力制御を行う。また、バッファ制御部３０は、Ｈｉレベルの信号ＨＬＴを受けると、次のブロックを選択して、その選択したブロックからメモリアクセスパラメータが出力されるように、バッファ２０の出力制御を行う。
【００８９】
コマンド生成部５０は、バッファ制御部３０の制御によってバッファ２０から出力されたメモリアクセスパラメータを受け、これに基づいて、バースト転送に係るコマンドを生成する。
【００９０】
以上、本実施形態によると、バッファ２０の容量が比較的小さいままでも、第１の実施形態と同様のメモリアクセス効率の向上を図りつつ、大量のライトデータに係るバースト転送にも対応したメモリインタフェースが実現される。
【００９１】
（第１１の実施形態）
図１７は、本発明の第１１の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、第１０の実施形態に係るメモリインタフェースにおけるバッファ制御部３０、コマンド生成部５０及びバースト転送判定部７０に新たな機能を追加したものである。以下、第１０の実施形態と異なる点についてのみ説明する。
【００９２】
第１０の実施形態に係るメモリインタフェースでは、バスマスタから要求のあったバースト転送が完了するまでの間に、ＳＤＲＡＭにおけるアクセス対象のバンクが切り替わる場合、バンク切り替えの処理のために、バースト転送が一旦中断してしまう。例えば、図１８（ａ）に示したように、時刻Ｔ７でバンク“０”へのバースト転送に係るライトアクセスが終了した後、時刻Ｔ９でバンク“０”についてのプリチャージコマンドが発行され、時刻Ｔ１２で次のバンク“１”についてのアクティブコマンドが発行され、時刻Ｔ１５からバンク“１”へのバースト転送に係るライトアクセスが再開している。ここで、時刻Ｔ８から時刻Ｔ１４までの間は、バースト転送が一旦中断されている。
【００９３】
そこで、本実施形態に係るメモリインタフェースでは、二つのバンクに亘ってバースト転送が行われる場合には、前のバンクへのアクセスが終了する前、好ましくは、直前に、次のバンクについてのアクティブコマンドを発行するように構成する。具体的には、バースト転送判定部７０は、バッファ２０から出力されたメモリアクセスパラメータに係る所定転送長（例えば、８ワード長）のバースト転送によって、ＳＤＲＡＭにおけるあるバンクへのアクセスが終了するか否か、すなわち、当該バースト転送によって当該バンクの最終アドレスへのアクセスが行われるか否かを判定する。そして、バースト転送判定部７０は、当該終了を判定したとき、次のバンクを示す信号ＦＢＮＫを出力する。
【００９４】
バッファ制御部３０は、バッファ２０における信号ＦＢＮＫによって示されたバンクに対応するブロックからメモリアクセスパラメータが出力されるように、バッファ２０の出力制御を行う。また、コマンド生成部５０は、バッファ２０から出力されたメモリアクセスパラメータに係るコマンドの生成に続けて、信号ＦＢＮＫによって示されたバンクについてのアクティブコマンドを生成する。例えば、図１８（ｂ）に示したように、時刻Ｔ４でバンク“０”についての最終のバースト転送に係るライトアクセスが発行された後、時刻Ｔ５で次のバンク“１”についてのアクティブコマンドが発行され、時刻Ｔ８でバンク“１”へのバースト転送に係るライトコマンドが発行されている。
【００９５】
このように、バースト転送に係るメモリアクセスパラメータからＳＤＲＡＭのあるバンクへのアクセスが終了するか否かを判定し、事前に、次のバンクについてアクティブコマンドを発行することによって、図１８（ｂ）に示したように、バースト転送が中断することがなく、メモリアクセス効率がより一層向上する。
【００９６】
また、あるバスマスタからの要求に係るバースト転送が、ＳＤＲＡＭのバンクの境界を越えるものである場合、特に、ＳＤＲＡＭにおけるあるバンクの最終アドレス近傍（例えば、バースト転送の所定転送長が８ワードの場合、そのバンクの最終アドレスから数えて７ワード以内にあるアドレス）から開始される場合にも、バースト転送が一旦中断してしまう。例えば、図１９（ａ）に示したように、バンク“０”、行“Ａ”、列“２５４”で表される開始アドレスからバースト転送が開始される場合、時刻Ｔ０でバンク“０”についてのアクティブコマンドが発行され、時刻Ｔ４でバンク“０”に対して最初の２ワード分のデータ転送が完了すると、バンク“０”へのバースト転送は途中で終了し、次のバンク“１”へのアクセスに係る準備が開始される。なお、バースト転送の所定転送長を４ワードとする。この間、時刻Ｔ５から時刻Ｔ１１まではメモリアクセスが行われない。すなわち、バースト転送が一旦中断されている。
【００９７】
そこで、あるバスマスタからの要求に係るバースト転送がＳＤＲＡＭにおけるあるバンクの最終アドレス近傍から開始される場合についても、事前に、次のバンクについてのアクティブコマンドを発行することが好ましい。具体的には、バースト転送判定部７０は、所定転送長のバースト転送がＳＤＲＡＭにおけるバンクの境界を越えるものであるか否かを判定し、当該バンク越えを判定したとき、その境界を越えた先のバンクを示す信号ＦＢＮＫを出力する。なお、当該バンク越えはないと判定された場合には、信号ＦＢＮＫは、現在処理中のバンクを示す。コマンド生成部５０は、あるバスマスタからの要求に係るバースト転送の開始アドレスが属するバンク、及び信号ＦＢＮＫによって示されたバンクについてのアクティブコマンドを連続して生成する。例えば、図１９（ｂ）に示したように、時刻Ｔ０でバンク“０”についてのアクティブコマンドが発行された後、続けて、時刻Ｔ２でバンク“１”についてのアクティブコマンドが発行される。そして、時刻Ｔ４でバンク“０”に対して最初の２ワード分のデータ転送が完了したのに続けて、時刻Ｔ５以降は、バンク“１”に対するバースト転送が行われている。
【００９８】
以上、本実施形態によると、バースト転送の途中でＳＤＲＡＭのバンク越えが発生する場合であっても、事前に、次のバンクについてのアクティブコマンドが生成され、バースト転送が中断することがなく、メモリアクセス効率がより一層向上する。
【００９９】
（第１２の実施形態）
図２０は、本発明の第１２の実施形態に係るメモリインタフェースの構成を示す。本実施形態に係るメモリインタフェースは、バッファ２０、バッファ制御部３０、行アドレス比較部４０及びコマンド生成部５０を備えている。このうち、行アドレス比較部４０及びコマンド生成部５０は第１の実施形態と同様であるため説明を省略し、以下、第１の実施形態と異なる点についてのみ説明する。
【０１００】
バッファ２０は、バスマスタからのメモリアクセスパラメータを複数格納する。好ましくは、バッファ２０は、サイクリックバッファとする。メモリアクセスパラメータは、バッファ２０の任意の格納場所に格納される。
【０１０１】
バッファ制御部３０は、ＳＤＲＡＭにおける各バンクに対応したリードポイント及びライトポイントに基づいて、バッファ２０に対するメモリアクセスパラメータの入出力を制御する。具体的には、バッファ制御部３０は、メモリアクセスパラメータを入力順にバッファ２０の空き領域に格納していくが、その際、当該メモリアクセスパラメータに係るバンクに対応するライトポインタＷＰを参照して、格納場所を指定する。また、バッファ２０からのメモリアクセスパラメータの出力は、ＳＤＲＡＭにおける各バンクに対応する順に行う。具体的には、バッファ制御部３０は、バンクを順次選択し、その選択したバンクに対応するリードポインタＲＰを参照して、メモリアクセスパラメータの出力を制御する。すなわち、バッファ制御部３０は、メモリアクセスパラメータの入力順にかかわらず、ＳＤＲＡＭにおける各バンクに対応する順にメモリアクセスパラメータの出力制御を行う。
【０１０２】
なお、バッファ制御部３０は、出力すべきメモリアクセスパラメータがない場合、又は、あるバンクに対応するメモリアクセスパラメータの出力を開始してから所定時間が経過した場合には、次のバンクを選択し、その選択したバンクに対応するメモリアクセスパラメータの出力を制御する。
【０１０３】
以上、本実施形態によると、バッファに任意の格納場所に任意のバンクに係るメモリアクセスパラメータを格納することができるため、メモリアクセス効率の向上を図りつつ、限られたバッファリソースを最大限に活用することができる。
【０１０４】
なお、上記各実施形態ではＳＤＲＡＭを例に説明したが、本発明に係るメモリインタフェースは、ＳＤＲＡＭ意外にも、複数のバンクで構成されたメモリに関して上述した効果を奏する。また、バス調停器１００は、本発明に係るメモリインタフェースの内部又は外部のいずれに設けてもよい。
【産業上の利用可能性】
【０１０５】
本発明に係るメモリインタフェースは、メモリアクセス効率を向上するという効果を奏するため、高速なＳＤＲＡＭ用のインタフェースとして有用である。
【図面の簡単な説明】
【０１０６】
【図１】第１の実施形態に係るメモリインタフェースの構成図である。
【図２】メモリアクセスパラメータのデータ構造の例を示す図である。
【図３】図１のメモリインタフェースの動作を説明するためのタイミングチャートである。
【図４】第２の実施形態に係るメモリインタフェースの構成図である。
【図５】バッファのブロック構成の例を示す図である。
【図６】第３の実施形態に係るメモリインタフェースの構成図である。
【図７】第４の実施形態に係るメモリインタフェースの構成図である。
【図８】第５の実施形態に係るメモリインタフェースの構成図である。
【図９】第６の実施形態に係るメモリインタフェースの構成図である。
【図１０】図９のメモリインタフェースの動作を説明するためのタイミングチャートである。
【図１１】第７の実施形態に係るメモリインタフェースの構成図である。
【図１２】第８の実施形態に係るメモリインタフェースの構成図である。
【図１３】第９の実施形態に係るメモリインタフェースの構成図である。
【図１４】図１３のメモリインタフェースの動作を説明するためのタイミングチャートである。
【図１５】第１０の実施形態に係るメモリインタフェースの構成図である。
【図１６】バースト転送の開始要求に係るメモリアクセスパラメータのデータ構造の例を示す図である。
【図１７】第１１の実施形態に係るメモリインタフェースの構成図である。
【図１８】図１７のメモリインタフェースの動作を説明するためのタイミングチャートである。
【図１９】図１７のメモリインタフェースの動作を説明するためのタイミングチャートである。
【図２０】第１２の実施形態に係るメモリインタフェースの構成図である。
【図２１】従来のメモリインタフェースの構成図である。
【符号の説明】
【０１０７】
１０  バンク判定部
１１  コマンド判定部
１２  追い越し判定部
２０  バッファ
２１  バッファ構成レジスタ
２２  アクセスバンクカウンタ
３０  バッファ制御部
４０  行アドレス比較部
４１  アドレス増分算出部
４２  増分合計部
５０  コマンド生成部
６０  調停指示部
６１  タイミング指示部
７０  バースト転送判定部
８０  アドレス生成部
【図１】
2006331008.tif 000003
【図２】
2006331008.tif 000004
【図３】
2006331008.tif 000005
【図４】
2006331008.tif 000006
【図５】
2006331008.tif 000007
【図６】
2006331008.tif 000008
【図７】
2006331008.tif 000009
【図８】
2006331008.tif 000010
【図９】
2006331008.tif 000011
【図１０】
2006331008.tif 000012
【図１１】
2006331008.tif 000013
【図１２】
2006331008.tif 000014
【図１３】
2006331008.tif 000015
【図１４】
2006331008.tif 000016
【図１５】
2006331008.tif 000017
【図１６】
2006331008.tif 000018
【図１７】
2006331008.tif 000019
【図１８】
2006331008.tif 000020
【図１９】
2006331008.tif 000021
【図２０】
2006331008.tif 000022
【図２１】
2006331008.tif 000023