(57)【要約】【課題】  メモリアクセスにおけるオーバーヘッドを隠蔽した高転送効率を実現するメモリアクセス装置を提供することである。【解決手段】本発明のメモリアクセス装置は、複数のバンクで構成されるメモリをアクセスするメモリアクセス装置であって、外部から入力されるメモリアクセス要求を、バンク単位のコマンドに分割するコマンド分割部１１と、分割されたコマンドを保持するコマンド管理部１と、コマンド管理部１に保持されているコマンドの発行順序を入れ替えるアクセス順最適化部２と、アクセス順最適化部２による発行順序に従ってコマンドを前記メモリに発行するコマンド発行部３とを備える。【選択図】  図１Ａ
2006260472.tif 000002
【特許請求の範囲】
【請求項１】
複数のバンクで構成されるメモリをアクセスするメモリアクセス装置であって、
外部から入力されるメモリアクセス要求を、バンク単位のコマンドに分割する分割手段と、
分割されたコマンドを保持する保持手段と、
保持手段に保持されているコマンドの発行順序を入れ替える入替手段と、
前記入替手段による発行順序に従ってコマンドを前記メモリに発行する発行手段と
を備えることを特徴とするメモリアクセス装置。
【請求項２】
前記メモリは、バンク毎に複数のページを有し、
前記分割手段は、外部から入力されるメモリアクセス要求を、ページ単位のコマンドに分割する
ことを特徴とする請求項１に記載のメモリアクセス装置。
【請求項３】
前記分割手段は、さらに、新たに分割されたコマンドと、保持手段に保持されているコマンドとが同一バンクまたは同一ページを連続アクセスするコマンドである場合に、当該２つのコマンドを結合する
ことを特徴とする請求項１または２に記載のメモリアクセス装置。
【請求項４】
前記入替手段は、
直前に発行されたコマンドに続いて保持手段に保持されているコマンドを発行するとした場合に当該２つのコマンド間で発生するクロック数を、保持手段に保持されているコマンド毎に競合レベルとして算出する算出手段と、
競合レベルの最も小さいコマンドを選択する選択手段と、
選択されたコマンドに基づいて発行順序を決定する決定手段と
を有することを特徴とする請求項２に記載のメモリアクセス装置。
【請求項５】
前記決定手段は、選択手段によって１つのコマンドが選択された場合には当該コマンドを次に発行すべきコマンドと決定し、
選択手段によって複数のコマンドが選択された場合には、直前に発行されたコマンドの転送データサイズに応じて、前記複数のコマンドのうちの１つを次に発行すべきコマンドと決定する
ことを特徴とする請求項４に記載のメモリアクセス装置。
【請求項６】
前記決定手段は、
選択手段によって複数のコマンドが選択された場合には、直前に発行されたコマンドの転送データサイズが所定値以上か否かを判定し、
所定値以上と判定された場合には、前記複数のコマンドのうちの転送データ数が最小のコマンド次に発行すべきコマンドと決定し、
所定値以上でない判定された場合には、前記複数のコマンドのうちの転送データ数が最大のコマンド次に発行すべきコマンドと決定する
ことを特徴とする請求項５に記載のメモリアクセス装置。
【請求項７】
前記決定手段は、さらに
選択手段によって複数のコマンドが選択された場合に、当該複数コマンドに同一バンクの異なるページにアクセスする２つのコマンドが含まれる場合に、第１に、当該２つのコマンドのうち転送データサイズの大きい方のコマンド、第２に、当該２つのコマンドとは異なるバンクにアクセスする他のコマンド、第３に、当該２つのコマンドのうち転送データサイズの小さい方のコマンドの順に発行すべきコマンドと決定する
ことを特徴とする請求項６に記載のメモリアクセス装置。
【請求項８】
前記メモリアクセス装置は、さらに、
メモリからのリードデータを保持するリードデータバッファと、
メモリへのライトデータを保持するライトデータバッファと、
リードデータバッファ内のリードデータをメモリアクセス要求の順番通りに外部に出力し、ライトデータバッファ内のライトデータを入替手段の発行順通りにメモリに出力する制御手段と
を備えることを特徴とする請求項１に記載のメモリアクセス装置。
【請求項９】
前記メモリアクセス装置は、さらに、
外部から入力される優先度の高いメモリアクセス要求を、バンク単位のコマンドに分割して保持する優先コマンド管理手段を備え、
前記入替手段は、優先コマンド管理手段に保持されたコマンドが、直前に発行したコマンドと異なるバンクをアクセスするコマンドである場合、優先コマンド管理手段に保持されたコマンドを優先して発行順序を決定する
ことを特徴とする請求項１のメモリアクセス装置。
【請求項１０】
前記メモリアクセス装置は、さらに
リフレッシュ周期よりも短い周期のリフレッシュ周期信号を出力するリフレッシュサイクルカウンタ回路と、
リフレッシュ周期信号に基づいてリフレッシュコマンドを発行するリフレッシュコマンド発行手段と、
リフレッシュコマンドと優先コマンドとの調停条件を保持する条件保持手段と、
前記優先コマンド管理手段にコマンドが保持されている場合に、条件保持手段の調停条件に従って、優先コマンドの発行とリフレッシュコマンドの発行とを調停する発行制御手段と
を備えることを特徴とする請求項９記載のメモリアクセス装置。
【発明の詳細な説明】
【技術分野】
【０００１】
複数のバンクと各バンクが複数のページで構成されるメモリのメモリアクセス装置に関して、特に、データ転送の高効率化技術に関する。
【背景技術】
【０００２】
近年、マルチメディア機器には、システム制御を行うプロセッサや、メディア処理を行うプロセッサやアクセラレータ、さらにユニバーサルシリアルバス（以下、ＵＳＢと記す）などのストリームインターフェース装置や、映像音声インターフェース装置や、カメラなどの撮像処理装置などにワンチップにしたシステムＬＳＩが搭載されるようになった。
【０００３】
また、システムＬＳＩの主記憶メモリとしてダイナミックランダムアクセスメモリ（以下、ＤＲＡＭと記す）が多く使われている。そのＤＲＡＭの技術革新も進み、外部メモリクロックに同期しバースト転送を行うことで高速化を図ったシンクロナスＤＲＡＭ（以下、ＳＤＲＡＭと記す）や、外部メモリクロックの立ち上がりと立ち下がり両エッジに同期してバースト転送を行い、ＳＤＲＡＭの２倍の転送速度が得られるダブルデータレートＳＤＲＡＭ（以下、ＤＤＲ−ＳＤＲＡＭと記す）や、さらに終端抵抗を内部に取り込んだ機能により、信号の反射を低減しＤＤＲ−ＳＤＲＡＭより高速化を図ったＤＤＲ２−ＳＤＲＡＭや、ランバスＤＲＡＭ（以下、ＲＤＲＡＭと記す）がある。特にＳＤＲＡＭは大容量でかつ安価であり、システムコストが抑制できるメリットがある。
【０００４】
ここで、システム制御を行うプロセッサや、メディア処理を行うプロセッサやアクセラレータ、さらにＵＳＢなどのストリームインターフェース装置や、映像音声インターフェース装置や、カメラなどの撮像処理装置を主記憶メモリに対するアクセス要求マスタと呼ぶ。また、主記憶メモリに記憶されるデータは、システム制御を行うプロセッサの命令コードや、メディア処理を行うプロセッサやアクセラレータのメディア処理データや、さらにストリームインターフェースから転送されるデータや、映像音声インターフェースからのフレームデータや、撮像処理でのピクセルデータである。また、各アクセス要求マスタが使用する用途の異なる様々なデータメモリを１つの主記憶メモリで構成する技術としてユニファイドメモリ技術がよく知られている。
【０００５】
ＳＤＲＡＭにアクセスするためには、まずＳＤＲＡＭの初期化（イニシャライズ）を行う必要がある。次に、ＳＤＲＡＭのバースト長やＣＡＳレイテンシなどの動作設定を、モードレジスタ設定コマンドにより設定する。次に、ＳＤＲＡＭへのデータ転送を、ＳＤＲＡＭ制御信号を組み合わせたメモリコマンドにより行う。代表的なメモリコマンドにはアクティブコマンド（以下、ＡＣＴと称す），リードコマンド（以下、ＲＤと称す），ライトコマンド（以下、ＷＲと称す），プリチャージコマンド（以下、ＰＲＥと称す）などがある。また、ＳＤＲＡＭ内のデータを保持するためにリフレッシュ動作が必要である。
【０００６】
ＳＤＲＡＭをリードするには、ページをアクティブ化した後、リードコマンドを発行する。
【０００７】
（１）アクティブコマンド（ＡＣＴ）とロウアドレスを発行し、該当バンクをアクティブ化する。
【０００８】
（２）ｔＲＣＤ（ＲＡＳ−ＣＡＳ  ディレー  タイム）経過後、リードコマンド（ＲＤ）とカラムアドレスを発行する。
【０００９】
（３）モードレジスタ設定コマンドで設定されたバースト長と、ＣＡＳレイテンシに従い、指定したアドレスのデータを読み出す。
【００１０】
（４）ｔＲＡＳ（ＲＡＳアクティブタイム）経過後、プリチャージコマンド（ＰＲＥ）を発行する。
【００１１】
（５）ｔＲＰ（ＲＡＳプリチャージタイム）経過後、該当バンクはアイドル状態になる。
【００１２】
また、ＳＤＲＡＭをライトするには、ページをアクティブ化した後、ライトコマンドを発行する。
【００１３】
（１）アクティブコマンド（ＡＣＴ）とロウアドレスを発行し、該当バンクのアクティブ化する。
【００１４】
（２）ｔＲＣＤ経過後、ライトコマンド（ＷＲ）とカラムアドレスを発行する。
【００１５】
（３）モードレジスタ設定コマンドで設定されたバースト長に従い、指定したアドレスにデータを書き込む。
【００１６】
（４）ｔＲＡＳ経過後、プリチャージコマンド（ＰＲＥ）を発行する。すべてのデータをメモリ・セルに正確に書き込むためにはｔＤＰＬを満足する必要がある。
【００１７】
（５）ｔＲＰ経過後、該当バンクはアイドル状態になる。
【００１８】
同一バンクの同一ページのデータ領域に対しては連続したアクセスできるが、異なるページのデータ領域にアクセスがするときには、まず、元のページのプリチャージを行いアイドル状態にし、さらに、アクセス対象の異なるページをアクティブ化した後、異なるページのデータ領域にアクセスしなければならない。すなわち、同一バンクの同一ページにアクセスするときには連続したアクセスが可能であるため、アクセス効率を高めることができるが、同一バンクの異なるページにアクセスするときにはページミスヒットが発生し、元ページに対してプリチャージ、アクセス対象ページのアクティブ化の処理が必要であり、メモリアクセスの効率が低下することになる。このため、ＳＤＲＡＭをユニファイドメモリ化するためには、各アクセス要求マスタ同士のアクセス調停を行うだけでなく、ページミスヒットの発生を少なくすることが望ましい。
【００１９】
したがって、転送効率の高いメモリアクセスを行うために、従来から様々なメモリアクセス装置設計上の工夫がなされている。
【００２０】
例えば、アクセス要求マスタからメモリアクセス要求を基にアクティブ化されたページへのアクセスが行われる前に、次のアクセス対象となる異なるバンクの先行プリチャージを行い、次のアクセスがプリチャージを実行することなく直ちにバンクをアクティブ化し、ページミスヒットによるオーバーヘッドを隠蔽するメモリアクセス装置が開示されている（例えば、特許文献１）。
【００２１】
図１１は、このような従来のメモリアクセス装置のブロック図である。図１１のメモリアクセス装置は、コマンドテーブル部９０７と、コマンド発行部９０３と、メモリ制御部９０４を備えている。コマンド発行部９０３はＲＷコマンド発行部９３１と、ＡＣＴコマンド発行部９３２を備える。メモリ制御部９０４は、リフレッシュ生成部９４１と、モードレジスタ部９４２と、メモリコマンド発行調停部９４３と、リードデータバッファ９４４と、ライトデータバッファ９４５が備えられている。
【００２２】
図１１を参照して、従来のメモリアクセス装置を説明する。各アクセス要求マスタからのメモリアクセス要求はコマンドテーブル部９０７において必要優先順位に従い並べられ、コマンド発行部９０３にメモリアクセス要求が転送される。ここでメモリアクセス要求とは、単純なバースト転送のリードもしくはライトコマンドであったり、複数のバンク複数のページに跨るリードもしくはライトの一括コマンドであったりする。つまり、バンクやページの境界とは無関係にアドレス指定されることが多い。
【００２３】
次に、コマンド発行部９０３においてメモリアクセス要求によりアクセス対象のページのロウアドレスを指定しアクティブコマンドと、アクティブ化されたページのカラムアドレスを指定しリードコマンドまたはライトコマンドを発行する。ＲＷコマンド発行部９３１ではリードまたはライトコマンドが発行され、ＡＣＴコマンド発行部９３２では次にアクセスされるバンクをアクティブ化するために先行アクティブコマンドが発行される。次に、メモリ制御部９０４においてリードまたはライトコマンドと、アクティブコマンドと、ＳＤＲＡＭデバイス固有のリフレッシュコマンド、モード設定コマンドを選択し、各アクセス要求マスタとＳＤＲＡＭ５とのリードデータ転送またはライトデータ転送を行う。リフレッシュ生成部９４１では（リフレッシュ周期／リフレッシュ回数）を満足するリフレッシュコマンドが発行され、モードレジスタ部９４１ではモードレジスタ設定コマンドが発行される。メモリコマンド発行調停部９４３ではそれらＤＲＡＭコマンドの発行をＳＤＲＡＭタイミング規約に従い発行順を調停する。また、リードデータバッファ９４４、ライトデータバッファ９４５により各アクセス要求マスタに対してのデータ制御が行われる。
【特許文献１】特開２００２−３４２１５９号公報
【発明の開示】
【発明が解決しようとする課題】
【００２４】
しかしながら、従来技術においては、メモリアクセス要求同士の発行順を入れ替えても、１つメモリアクセス要求の実行において、同一バンクの異なるページにアクセスが連続したときにオーバーヘッドが生じてしまう。また同一バンクの異なるメモリアクセス要求の間に異なるバンクへのメモリアクセス要求を挟んだときでも、異なるバンクアクセスのデータ転送量が少ない場合には、ページアクセスサイクルが確保できずオーバーヘッドが生じる。
【００２５】
また、マスタからプロセッサのキャッシュミス時の命令フェッチのようにリアルタイム性が必要な優先度の高いアクセスがあった場合、すでにアクティブ化されたページのアクセスを中断するか、すでにアクティブ化されたページのアクセスの直後に割り込ませることで、アクセス要求からデータ転送までのレイテンシを短縮（リアルタイム性の保証）したが、その結果、同一バンクの異なるページアクセスが連続しページミスヒットによるオーバーヘッドが生じる。
【００２６】
本発明は、メモリアクセスにおけるオーバーヘッドを隠蔽した高転送効率を実現するメモリアクセス装置を提供することである。
【課題を解決するための手段】
【００２７】
上記課題を解決するため、本発明のメモリアクセス装置は、複数のバンクで構成されるメモリのメモリアクセス装置であって、外部から入力されるメモリアクセス要求を、バンク単位のコマンドに分割する分割手段と、分割されたコマンドを保持する保持手段と、保持手段に保持されているコマンドの発行順序を入れ替える入替手段と、前記入替手段による発行順序に従ってコマンドを前記メモリに発行する発行手段とを備える。
【００２８】
この構成によれば、メモリアクセス要求の単位で発行順を入れ替えるのではなく、バンク単位のコマンドの発行順を入れ替えるので、同一バンクへの連続アクセスなどを容易に回避することができ、メモリアクセスにおけるオーバーヘッドを隠蔽した高転送効率を実現することができる。
【００２９】
ここで、前記メモリは、バンク毎に複数のページを有し、前記分割手段は、外部から入力されるメモリアクセス要求を、ページ単位のコマンドに分割するようにしてもよい。
【００３０】
この構成によれば、各バンクが複数ページから構成される場合に、ページ単位（つまり１つのローアドレスでアクセス可能な単位）のコマンドの発行順を入れ替えるので、同一ページの連続アクセスなどを容易に回避することができ、メモリアクセスにおけるオーバーヘッドを隠蔽した高転送効率を実現することができる。
【００３１】
ここで、前記分割手段は、さらに、新たに分割されたコマンドと、保持手段に保持されているコマンドとが同一バンクまたは同一ページを連続アクセスするコマンドである場合に、当該２つのコマンドを結合するようにしてもよい。
【００３２】
この構成によれば、同一バンクまたは同一ページをアクセスするコマンドは結合されるので、より高転送効率を実現することができる。
【００３３】
ここで、前記入替手段は、直前に発行されたコマンドに続いて保持手段に保持されているコマンドを発行するとした場合に当該２つのコマンド間で発生するクロック数を、保持手段に保持されているコマンド毎に競合レベルとして算出する算出手段と、競合レベルの最も小さいコマンドを選択する選択手段と、選択されたコマンドに基づいて発行順序を決定する決定手段とを有するようにしてもよい。
【００３４】
この構成によれば、直前に発行されたコマンドと、次の発行候補となるコマンドとの間で発生するクロック数を最小にするように、次に発行すべきコマンドを選択するので、より高転送効率を実現することができる。例えば、同一バンクの異なるページにアクセスが連続しないようにすることができる。
【００３５】
ここで、前記決定手段は、選択手段によって１つのコマンドが選択された場合には当該コマンドを次に発行すべきコマンドと決定し、選択手段によって複数のコマンドが選択された場合には、直前に発行されたコマンドの転送データサイズに応じて、前記複数のコマンドのうちの１つを次に発行すべきコマンドと決定するようにしてもよい。
【００３６】
この構成によれば、競合レベルが最小のコマンドが複数存在する場合には、直前に発行されたコマンドの転送データサイズに応じて、次に発行すべきコマンドを決定するので、よりオーバーヘッドの少ない発行順序を決定することができる。例えば、同一バンクの異なるページアクセスの間に、一定量以上のデータの異なるバンクアクセスを挟むことができ、また、ｔＲＡＳ、ｔＲＣＤ、ｔＲＰを確保するために発生する空きクロック数を抑え、オーバーヘッドが隠蔽できる。
【００３７】
ここで、前記決定手段は、選択手段によって複数のコマンドが選択された場合には、直前に発行されたコマンドの転送データサイズが所定値以上か否かを判定し、所定値以上と判定された場合には、前記複数のコマンドのうちの転送データ数が最小のコマンド次に発行すべきコマンドと決定し、所定値以上でない判定された場合には、前記複数のコマンドのうちの転送データ数が最大のコマンド次に発行すべきコマンドと決定するヨウニしてもよい。
【００３８】
この構成によれば、競合レベルが最小のコマンドが複数存在する場合には、当該複数のコマンドのうち、まず転送サイズが最大のコマンド、次に転送サイズが最大のコマンド、さらに転送サイズが最大のコマンド、というように発行順序が入れ替えられる。その結果、転送サイズが大きいコマンドの間に転送サイズの小さいコマンドを挟み込むように発行順序が決定され、オーバヘッドを少なくすることができる。
【００３９】
ここで、前記決定手段は、さらに選択手段によって複数のコマンドが選択された場合に、当該複数コマンドに同一バンクの異なるページにアクセスする２つのコマンドが含まれる場合に、第１に、当該２つのコマンドのうち転送データサイズの大きい方のコマンド、第２に、当該２つのコマンドとは異なるバンクにアクセスする他のコマンド、第３に、当該２つのコマンドのうち転送データサイズの小さい方のコマンドの順に発行すべきコマンドと決定するようにしてもよい。
【００４０】
この構成によれば、同一バンクの異なるページにアクセスするコマンドが連続しないことや、また同一バンクの異なるページアクセスの間に、ページアクセスサイクルを確保した一定量以上のデータの異なるバンクアクセスを挟むことができ、ｔＲＡＳ、ｔＲＣＤ、ｔＲＰを確保するための無駄な空きクロック数を抑えてオーバーヘッドが隠蔽できる。
【００４１】
ここで、前記メモリアクセス装置は、さらに、メモリからのリードデータを保持するリードデータバッファと、メモリへのライトデータを保持するライトデータバッファと、リードデータバッファ内のリードデータをメモリアクセス要求の順番通りに外部に出力し、ライトデータバッファ内のライトデータを入替手段の発行順通りにメモリに出力する制御手段とを備えるようにしてもよい。
【００４２】
この構成によれば、オーバーヘッドを隠蔽するために並び替えたコマンドに対応するリードデータをメモリアクセス要求を発行したマスタに対してメモリアクセス要求の順番の通り並び替えることができ、データ転送のインオーダー制御ができる。
【００４３】
ここで、前記メモリアクセス装置は、さらに、外部から入力される優先度の高いメモリアクセス要求を、バンク単位のコマンドに分割して保持する優先コマンド管理手段を備え、前記入替手段は、優先コマンド管理手段に保持されたコマンドが、直前に発行したコマンドと異なるバンクをアクセスするコマンドである場合、優先コマンド管理手段に保持されたコマンドを優先して発行順序を決定するようにしてもよい。
【００４４】
この構成によれば、プロセッサのキャッシュミスなどによる命令フェッチのようにリアルタイム性が必要な優先度の高いアクセスを割り込ませることができ、処理中のアクセスを中断する必要が無く、且つ同一バンクの異なるページアクセスが連続することも無く、オーバーヘッドを隠蔽した優先度の高いコマンド処理ができる。
【００４５】
ここで、前記メモリアクセス装置は、さらに、リフレッシュ周期よりも短い周期のリフレッシュ周期信号を出力するリフレッシュサイクルカウンタ回路と、リフレッシュ周期信号に基づいてリフレッシュコマンドを発行するリフレッシュコマンド発行手段と、リフレッシュコマンドと優先コマンドとの調停条件を保持する条件保持手段と、前記優先コマンド管理手段にコマンドが保持されている場合に、条件保持手段の調停条件に従って、優先コマンドの発行とリフレッシュコマンドの発行とを調停する発行制御手段とを備えるようにしてもよい。
【００４６】
この構成によれば、優先度の高いアクセスと、リフレッシュコマンドの発行タイミングが重なっても、優先度の高いコマンドをリフレッシュコマンドより優先させることができ、且つリフレッシュ周期を確保したリフレッシュコマンドの発行をすることができる。
【発明の効果】
【００４７】
本発明のメモリアクセス装置によれば、マスターからのメモリアクセス要求の単位で発行順を入れ替えるのではなく、バンク単位のコマンドの発行順を入れ替えるので、同一バンクへの連続アクセスなどを容易に回避することができ、メモリアクセスにおけるオーバーヘッドを隠蔽した高転送効率を実現することができる。例えば、同一バンクの異なるページにアクセスが連続しないことや、また同一バンクの異なるページアクセスの間に、ページアクセスサイクルが確保した一定量以上のデータの異なるバンクアクセスを挟むことができ、ｔＲＡＳ、ｔＲＣＤ、ｔＲＰが確保できないことによるページミスヒットを抑え、オーバーヘッドが隠蔽できる。
【００４８】
また、オーバーヘッドを隠蔽するために並び替えたＳＤＲＡＭから読み出すデータ、またはＳＤＲＡＭへ書き込むデータを再度アクセス要求マスタからのメモリアクセス要求順番のとおり並び替えることができ、データ転送のインオーダー制御ができる。
【００４９】
また、プロセッサのキャッシュミスなどによる命令フェッチのようにリアルタイム性が必要な優先度の高いアクセスを割り込ませても、処理中のアクセスを中断する必要が無く、且つ同一バンクの異なるページアクセスが連続することも無く、ページミスヒットによるオーバーヘッドを隠蔽した優先度の高いコマンド処理ができる。
【００５０】
また、優先度の高いアクセスと、リフレッシュコマンドの発行タイミングが重なっても、優先度の高いコマンドをリフレッシュコマンドより優先させることができ、かつリフレッシュ周期を確保したリフレッシュコマンドの発行ができる。
【００５１】
また、メモリアクセスにおけるオーバーヘッドを隠蔽した高転送効率を実現するメモリアクセス装置を使用することで、単位時間あたりの有効データ転送量を増加することができバンド幅の向上を行える。また、バンド幅を向上したことで動作周波数が抑えられ低消費電力化にも貢献できる。
【発明を実施するための最良の形態】
【００５２】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００５３】
（第１の実施形態）
図１Ａは、本発明の第１の実施形態に係るメモリアクセス装置の構成を示すブロック図である。同図においてメモリアクセス装置は、アクセス要求入力部１０、コマンド分割部１１と、コマンド管理部１と、アクセス順最適化部２と、コマンド発行部３と、メモリ制御部４と、データ出力部１２と、データ入力部１３とを備え、ＳＤＲＡＭ５に接続されている。アクセス順最適化部２は、アクセス順入替最適化部２１と、コマンド履歴管理部２２と備える。コマンド発行部３は、ＲＷコマンド発行部３１と、ＡＣＴコマンド発行部３２とを備える。メモリ制御部４は、リフレッシュ生成部４１と、モードレジスタ部４２と、メモリコマンド発行調停部４３と、リードデータバッファ４４と、ライトデータバッファ４５とを備える。
【００５４】
コマンド入力部１０は、プロセッサやＤＭＡＣなどの複数のアクセス要求マスターからメモリアクセス要求を受け取る。図１Ｂ〜図１Ｄに、メモリアクセス要求の例を示す。図１Ｂのメモリアクセス要求は先頭アドレスと末尾アドレスとを含む。図１Ｃのメモリアクセス要求は先頭アドレスとデータ長とを含む。図１Ｄのメモリアクセス要求は、画像データ内の矩形領域の左上座標（Ｘ０,Ｙ０）に対応するアドレスＡ０と、右下座標（Ｘ１,Ｙ１）に対応するアドレスＡ１とを含む。いずれのメモリアクセス要求も、ＳＤＲＡＭ５のバンクまたはページの境界とは無関係に指定されるので、アクセスデータがバンクまたはページに収まる場合もあれば、収まらない場合もある。
【００５５】
また、新たに分割したコマンドと、コマンド管理部１にに保持されているコマンドとが同一バンクまたは同一ページを連続アクセス可能なコマンドである場合に、当該２つのコマンドを結合する。
【００５６】
コマンド管理部１は、コマンドバッファ１０１、１０２、１１１、１１２、１２１、１２２、１３１、１３２からなるバンクテーブルを有し、コマンド分割部１１によって分割された各バンクのページ単位のコマンドを保持する。第１の実施形態のコマンド管理部１では、４つのバンクの各２つのページに対するコマンドをそれぞれ１つまで格納するものである。コマンド管理部１は、いずれかのバンクが第１ページもしくは第２ページに対し２つ目のコマンドが要求された場合、アクセス順最適化部２に、バンクテーブルに格納されているコマンド情報を出力する。また、アクセス要求マスタには格納ビジー情報を出力し、メモリアクセス要求の出力を保持させておく。
【００５７】
アクセス順最適化部２は、コマンド管理部１から出力されたコマンド情報を入力として、アクセス順入替最適化回路２１で、バンク、ページ及び、データ量を比較して発行順番を入れ替え、コマンド発行部３にコマンドを出力する。また、その後アクティブ化されるバンク及びページ情報も出力する。
【００５８】
コマンド履歴管理回路２２は、アクセス順入替最適化回路２１が出力したコマンド履歴を管理し、コマンド履歴情報を出力する。コマンド履歴情報は、過去のアクセスのバンクアドレス、ページアドレスであり、アクセス順入替最適化回路２１で、次のコマンド選択に使用する。
【００５９】
コマンド発行部３は、メモリアクセス要求によりアクセス対象のページのロウアドレスを指定しアクティブコマンドと、アクティブ化されたページのカラムアドレスを指定しリードまたはライトコマンドを発行する。ＲＷコマンド発行回路３１ではリードまたはライトコマンドが発行され、ＡＣＴコマンド発行回路３２では次にアクセスされるバンクをアクティブ化するために先行アクティブコマンドが発行される。
【００６０】
メモリ制御部４は、リードまたはライトコマンドと、アクティブコマンドと、ＳＤＲＡＭデバイス固有のリフレッシュコマンド、モード設定コマンドを選択し、各アクセス要求マスタ⇔ＳＤＲＡＭ５とのリードデータまたはライトデータ転送を行う。
【００６１】
リフレッシュ生成回路４１は、（リフレッシュ周期／リフレッシュ回数）を満足するリフレッシュコマンドが発行され、モードレジスタ回路４１ではモードレジスタ設定コマンドが発行される。
【００６２】
メモリコマンド発行調停回路４３は、それらＤＲＡＭコマンドの発行をＳＤＲＡＭタイミング規約に従い発行順を調停する。また、リードデータバッファ４４、ライトデータバッファ４５により各アクセス要求マスタに対してのデータ制御が行われる。
【００６３】
ここで、ＳＤＲＡＭアクセスをもとに、オーバーヘッドを隠蔽した転送効率の最適なアクセス順ルールについて説明する。
【００６４】
図２Ａは、アクセス順入替えを行わない場合のＤＲＡＭアクセスのタイミングチャートである。また、図２Ｂは、競合が少ない順にアクセス入替えを行った場合のＤＲＡＭアクセスのタイミングチャートである。また、図２Ｃは、バンク競合を比較し競合が少ない順と異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行った場合のＤＲＡＭアクセスのタイミングチャートである。また、図２Ｄは、複数のバンクと複数のページのアクセスにおいて競合を比較し競合が少ない順と異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行った場合のＤＲＡＭアクセスのタイミングチャートである。
【００６５】
それぞれのタイミングチャートで使用するＳＤＲＡＭは、３２ｂｉｔのデータバス幅で、ｔＲＣ＝１０ｃｌｋ、ｔＲＡＳ＝７ｃｌｋ、ｔＲＰ＝３ｃｌｋ、ｔＲＣＤ＝３ｃｌｋ、ｔＲＲＤ＝３ｃｌｋ、ｔＤＰＬ＝２ｃｌｋ、バースト長＝８、ＣＡＳレイテンシ＝３である。また、タイミングチャートのｃｙｃｌｅは外部メモリクロックであり、ｂａｎｋはコマンドが有効となるバンク、ページを示し（０ａは、バンク０のページａ）、ｃｍｄはメモリコマンドのアクティブコマンド（ＡＣＴ），リードコマンド（ＲＤ），ライトコマンド（ＷＲ），プリチャージコマンド（ＰＲＥ）であり、ｌｅｎｇｔｈは転送データ量を示し、ｄａｔａはＳＤＲＡＭのデータバスを示す。また、ＳＤＲＡＭアクセスにあたりプリチャージコマンド（ＰＲＥ）は、リードまたはライトの直後に発行し、アクティブコマンド（ＡＣＴ）はＳＤＲＡＭの消費電力が低くなるようにアクティブ化期間が少ないなる範囲内で先行発行する。また、図中の斜線部がページミスヒット（どのページもアクセスされていない空のクロック）によるオーバーヘッドである。
【００６６】
アクセス要求マスタより、コマンド(1)〜コマンド(8)の順でアクセスがあった場合には、
コマンド(1)：バンク０、ページａ（０ａ）に対し、２８Ｂｙｔｅのデータ読み出し
コマンド(2)：バンク１、ページａ（１ａ）に対し、２４Ｂｙｔｅのデータ読み出し
コマンド(3)：バンク２、ページａ（２ａ）に対し、８Ｂｙｔｅのデータ読み出し
コマンド(4)：バンク３、ページａ（３ａ）に対し、４Ｂｙｔｅのデータ読み出し
コマンド(5)：バンク３、ページｂ（３ｂ）に対し、２８Ｂｙｔｅのデータ読み出し
コマンド(6)：バンク２、ページｂ（２ｂ）に対し、２４Ｂｙｔｅのデータ読み出し
コマンド(7)：バンク１、ページｂ（１ｂ）に対し、８Ｂｙｔｅのデータ読み出し
コマンド(8)：バンク０、ページｂ（０ｂ）に対し、４Ｂｙｔｅのデータ読み出し
アクセス順入替えを行わない場合は、図２Ａのとおりコマンド(4)とコマンド(5)の同一バンク３に対して異なるページａとページｂのアクセスが連続するため、ｔＲＡＳ、ｔＲＰ、ｔＲＣＤのクロックサイクルを確保できず９ｃｌｋのオーバーヘッドが発生する。以下、この状態をバンクが競合するという。
【００６７】
また、必ずバンクの競合が発生しないように、バンク０→バンク１→バンク２→バンク３と固定順番でアクセス入れ替えた場合は、図２Ｂのとおりコマンド(4)の後、コマンド(8)→コマンド(7)→コマンド(6)→コマンド(5)となる。バンク競合は発生しないが、コマンド(4)とコマンド(7)とコマンド(8)の転送データ量が少ないため、ｔＲＡＳ、ｔＲＰ、ｔＲＣＤのクロックサイクルを確保できず６ｃｌｋのオーバーヘッドが発生する。
【００６８】
そこで、バンク競合を比較し競合が少ない順と、異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行った場合は、図２Ｃのとおりコマンド(4)の後、コマンド(7)→コマンド(6)→コマンド(5)→コマンド(8)となる。ｔＲＡＳ、ｔＲＰ、ｔＲＣＤのクロックサイクルを確保するには、まだコマンド(4)とコマンド(7)の転送データ量が少ないが、５ｃｌｋのオーバーヘッドに改善できる。
【００６９】
さらに、複数のバンクと複数のページのアクセスにおいて競合を比較し競合が少ない順と、異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行った場合は、図２Ｄのとおりコマンド(1)→コマンド(3)→コマンド(4)→コマンド(2)→コマンド(8)→コマンド(6)→コマンド(5)→コマンド(7)となる。バンク競合もなく、また転送データ量の大きいコマンドの後には、比較的に転送データ量に小さいコマンドを連続させ、その後には比較的に転送データ量の大きいコマンドのアクセス順とすると、ｔＲＡＳ、ｔＲＰ、ｔＲＣＤのクロックサイクルが確保でき、３ｃｌｋのオーバーヘッドに改善できる。各タイミングチャートではリードアクセスのみで説明したが、ライトアクセスとの組み合わせ時も同様である。
【００７０】
次に、第１の実施形態でのアクセス順入れ替えの最適化方法について説明する。
図３は、アクセス順最適化部においてバンク競合を比較し競合が少ない順と、異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行うコマンド順入れ替え処理を示すフロー図である。
【００７１】
同図のコマンド順入れ替え処理は、バンクテーブルにコマンドがセットされると、banksort_req信号がセットされ、コマンド順入れ替えを開始する。バンク競合の判定ステップ３０１では、バンクテーブル上の有効なバンク及びページのコマンドと、過去に発行したコマンドのバンクアドレスを比較する。バンク競合比較は、オーバーヘッドのクロックサイクル数の小さいほうがバンク競合の少ないことを示す競合レベル０〜７を計算する。ステップ３０２では、バンク競合が少ないコマンドを優先させるため、それぞれのコマンドにおいて競合レベルが他のコマンドより低いかを比較し、最優先のコマンドを選択するコマンド選択信号bank_sel[7:0]を生成する。最も競合レベルの低いコマンドが選択（high）される。また、最も競合レベルの低いコマンドが複数ある場合は、複数のコマンドが選択される。ステップ３０３では、複数コマンドが選択されたかどうかを判定する。１つのコマンドしか選択されないときは、コマンド選択発行ステップ３０８へ、複数のコマンドが選択されたときは、最大最小コマンドの判定ステップ３０４へ進む。次に、最大最小コマンドの判定ステップ３０４では、それぞれのコマンドの転送サイズを比較し、最大のコマンド、最小のコマンドをそれぞれ判定する。次に、選択コマンド判定ステップ３０５では、２つめの転送、かつ前の転送のバースト長が６以上の条件の場合、最小のコマンドを選択し、それ以外の条件の場合、ステップ３０７では、最大のコマンドを選択する。
【００７２】
次に、コマンド選択発行ステップ３０８では、選択されたコマンドのコマンドをバンクテーブルより選択し、コマンド発行部３にコマンドを出力する。次に、発行済みコマンドフラグステップ３０９では、選択済みコマンド情報フラグレジスタに、コマンド選択信号bank_sel[7:0]で選択されたコマンドにフラグを立てる。選択済みコマンド情報は、バンク競合の判定ステップ３０２において、バンクテーブル上のバンク及びページのコマンドをマスクすることに使用され、選択済みのコマンドを判定対象から除外する。次に、未発行コマンド判定ステップ３１０では、発行したコマンド数を数えて、全てのコマンドが選択されるまで、一連のアクセス順入れ替え最適化を行い、全てのコマンドが選択されると、banksort_ack信号をコマンド管理部１に返し、アクセス順入れ替え最適化を完了する。
【００７３】
これにより、第１の実施形態おいては、同一バンクの異なるページにアクセスが連続しないことや、また同一バンクの異なるページアクセスの間に、ページアクセスサイクルが確保した一定量以上のデータの異なるバンクアクセスを挟むことができ、ｔＲＡＳ、ｔＲＣＤ、ｔＲＰを確保するために発生する無駄な空きクロック数を抑え、オーバーヘッドを隠蔽することができる。
【００７４】
図４は、図３のステップＳ３０１における競合レベルの算出処理を示すフローチャート図である。同図において、アクセス順入替部２１は、コマンド履歴管理部２２に保持された直前のコマンド情報と、コマンド管理部１に保持されているコマンドとの全ての組み合わせを設定し（Ｓ３１１）、ループ１において、全ての組み合わせについて競合レベルを算出する。すなわち、アクセス順入替部２１は、当該組み合わせの先のコマンドと、あとのコマンドとを読み出し（Ｓ３１３）、当該２つのコマンドが連続発行されると仮定して
先のコマンドのＰＲＥコマンドから後のコマンドのＲ／Ｗコマンドまでのクロック数をカウントし、当該クロック数を競合レベルとする（Ｓ３１４）。
【００７５】
（第２の実施形態）
次に、第２の実施形態でのアクセス順入れ替えの最適化方法について説明する。
【００７６】
図５は、アクセス順最適化部において複数のバンクと複数のページのアクセスにおいて競合を比較し競合が少ない順と、異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行った場合のＤＲＡＭアクセスのフロー図である。
【００７７】
このコマンド順入れ替え処理は、バンクテーブルにコマンドがセットされると、banksort_req信号がセットされ、コマンド順入れ替えを開始する。バンク競合の判定ステップ３０１では、バンクテーブル上の有効なバンク及びページのコマンドと、コマンド過去の転送したコマンドのバンクアドレスを比較する。バンク競合比較は、オーバーヘッドのクロックサイクル数の小さいほうがバンク競合の少ないことを示す競合レベル０〜７を計算し、バンク競合が少ないコマンドを優先させるため、それぞれのコマンドにおいて競合レベルが他のコマンドより低いかを比較し、最優先のコマンドを選択するコマンド選択信号bank_sel[7:0]を生成する。最も競合レベルの低いコマンドがセット（high）される。また、同一の競合レベルのコマンドが複数ある場合は、複数のコマンドがセットされる。次に、競合の少ないコマンドを選択するステップ３０３では、コマンド選択信号bank_sel[7:0]に従い、バンクテーブルの所定のコマンドを選択する。１つのコマンドしか選択されないときは、コマンド選択発行ステップ３０８へ、複数のコマンドが選択されたときは、最大最小コマンドの判定ステップ３０４へ進む。次に、最大最小コマンドの判定ステップ３０４では、それぞれのコマンドの転送サイズを比較し、最大のコマンド、最小のコマンドをそれぞれ判定する。次に、コマンド入れ替え開始時点で、２つ以上のバンクのそれぞれ２つ以上のページのコマンドがコマンドテーブルにセットされている場合は（ステップ４０１）、最大のコマンドと最小のコマンドを交互に選択し（ステップ４０２）、また、前記条件に加え、２つめの転送、且つ前の転送のバースト長が６以上の条件の場合（ステップ３０５）、最小のコマンドを選択し（ステップ３０６）、それ以外の条件の場合、最大のコマンドを選択する（ステップ３０７）。次に、コマンド選択発行ステップ３０８では、選択されたコマンドのコマンドをバンクテーブルより選択し、コマンド発行部３にコマンドを出力する。次に、発行済みコマンドフラグステップ３０９では、選択済みコマンド情報フラグレジスタに、コマンド選択信号bank_sel[7:0]で選択されたコマンドにフラグを立てる。選択済みコマンド情報は、バンク競合の判定ステップ３０２において、バンクテーブル上のバンク及びページのコマンドをマスクすることに使用され、選択済みのコマンドを判定対象から除外する。次に、未発行コマンド判定ステップ３１０では、発行したコマンド数を数えて、全てのコマンドが選択されるまで、一連のアクセス順入れ替え最適化を行い、全てのコマンドが選択されると、banksort_ack信号をコマンド管理部１に返し、アクセス順入れ替え最適化を完了する。
【００７８】
これにより、第２の実施形態おいては、同一バンクの異なるページにアクセスが連続しないことや、また同一バンクの異なるページアクセスの間に、ページアクセスサイクルが確保した一定量以上のデータの異なるバンクアクセスを挟むことができ、ｔＲＡＳ、ｔＲＣＤ、ｔＲＰが確保できないことによるページミスヒットを抑え、オーバーヘッドが隠蔽できる。
【００７９】
（第３の実施形態）
図６は、本発明の第３の実施形態に係る命令発行順に従ったデータ転送を行うメモリ制御部を備えたメモリアクセス装置のブロック図である。図６のメモリアクセス装置は、コマンド管理部１と、アクセス順最適化部２と、コマンド発行部３と、メモリ制御部５０４４と、アクセス順入替最適化回路２１と、コマンド履歴管理回路２２と、ＲＷコマンド発行回路３１と、ＡＣＴコマンド発行回路３２と、リフレッシュ生成回路４１と、モードレジスタ回路４２と、メモリコマンド発行調停回路４３と、リードデータバッファ４４と、ライトデータバッファ４５と、Ｒ／Ｗ制御回路５０２を備え、コマンド履歴管理回路２２よりＲ／Ｗデータ復元情報５０１を出力する。
【００８０】
まず、コマンド管理部１において、各アクセス要求マスタからのメモリアクセス要求を入力として、各バンクのページ単位でコマンドをバンクテーブルに格納する。また、各アクセス要求マスタからのメモリアクセスが複数のバンク及び、複数のページに対してのアクセスコマンドの場合は、各バンクのページ単位に分割した後、各バンクのページ単位でコマンドをバンクテーブルに格納する。第３の実施形態のコマンド管理部では、4つのバンクの各２つのページに対するコマンドをそれぞれ１つまで格納するものである。コマンド管理部１は、いずれかのバンクが第１ページもしくは第２ページに対し２つ目のコマンドが要求された場合、アクセス順最適化部２に、バンクテーブルに格納されているコマンド情報を出力する。また、アクセス要求マスタには格納ビジー情報を出力し、メモリアクセス要求の出力を保持させておく。次に、アクセス順最適化部２において、コマンド管理部１から出力されたコマンド情報を入力として、アクセス順入替最適化回路２１で、バンク及び、ページ及び、データ量を比較して発行順番を入れ替え、コマンド発行部３にコマンドを出力する。また、その後アクティブ化されるバンク及びページ情報も出力する。さらに、コマンド履歴管理回路２２は、アクセス順入替最適化回路２１が出力したコマンド履歴を管理し、コマンド履歴情報を出力する。コマンド履歴情報は、過去のアクセスのバンクアドレス、ページアドレスであり、アクセス順入替最適化回路２１で、次のコマンド選択に使用する。さらに、前記コマンド履歴情報に加えリードまたはライトの情報を追加したＲ／Ｗデータ復元情報５０１を出力する。次に、コマンド発行部３においてメモリアクセス要求によりアクセス対象のページのロウアドレスを指定しアクティブコマンドと、アクティブ化されたページのカラムアドレスを指定しリードまたはライトコマンドを発行する。ＲＷコマンド発行回路３１ではリードまたはライトコマンドが発行され、ＡＣＴコマンド発行回路３２では次にアクセスされるバンクをアクティブ化するために先行アクティブコマンドが発行される。次に、メモリ制御部４においてリードまたはライトコマンドと、アクティブコマンドと、ＳＤＲＡＭデバイス固有のリフレッシュコマンド、モード設定コマンドを選択し、各アクセス要求マスタとＳＤＲＡＭ５との間のリードデータまたはライトデータ転送を行う。リフレッシュ生成回路４１では（リフレッシュ周期／リフレッシュ回数）を満足するリフレッシュコマンドが発行され、モードレジスタ回路４１ではモードレジスタ設定コマンドが発行される。メモリコマンド発行調停回路４３ではそれらＤＲＡＭコマンドの発行をＳＤＲＡＭタイミング規約に従い発行順を調停する。また、ＳＤＲＡＭとのデータ転送をリードデータバッファ４４、ライトデータバッファ４５を用いて行う。また、Ｒ／Ｗ制御回路５０２で、Ｒ／Ｗデータ復元情報５０１により、各アクセス要求マスタと、リードデータバッファ４４、ライトデータバッファ４５とのデータ転送を、アクセス順並び替え最適化される前のアクセス要求マスタからの命令発行順に従ったデータ転送を行う。
【００８１】
ＳＤＲＡＭからの読み出しの場合は、Ｒ／Ｗ制御回路５０２は、各アクセス要求マスタの命令発行順に従ったリード転送データが、リードデータバッファ４４に準備された時点で、各アクセス要求マスタへリード有効信号とリードデータを出力する。さらに、アクセス順並び替え前のアクセス順番でリードするように、リードバッファ４４のリードポインタ管理を行う。また、ＳＤＲＡＭへの書き込みの場合は、Ｒ／Ｗ制御回路５０２の制御によらず、各アクセス要求マスタからのライト転送データをライトデータバッファ４５に出力する。さらに、ＳＤＲＡＭへのアクセス順並び替え後のアクセス順番でライトするように、ライトバッファ４５のライトポインタ管理を行う。
【００８２】
これにより、第３の実施形態おいては、オーバーヘッドを隠蔽するために並び替えたＳＤＲＡＭから読み出すデータ、またはＳＤＲＡＭへ書き込むデータを再度アクセス要求マスタからのメモリアクセス要求順番のとおり並び替えることができ、データ転送のインオーダー制御ができる。
【００８３】
（第４の実施形態）
図７は、本発明の第４の実施形態に係る転送データを管理するメモリ制御部を備えたメモリアクセス装置の優先アクセス割込みによるオーバーヘッドを低減するメモリアクセス装置のブロック図である。図７のメモリアクセス装置は、コマンド分割部１１と、コマンド管理部１と、アクセス順最適化部６０２と、優先コマンド管理部６と、コマンド発行部３と、メモリ制御部５０４とを備えている。
【００８４】
まず、コマンド管理部１において、各アクセス要求マスタからのメモリアクセス要求を入力として、各バンクのページ単位でコマンドをバンクテーブルに格納する。また、各アクセス要求マスタからのメモリアクセスが複数のバンク及び、複数のページに対してのアクセスコマンドの場合は、各バンクのページ単位に分割した後、各バンクのページ単位でコマンドをバンクテーブルに格納する。第４の実施形態のコマンド管理部では、4つのバンクの各２つのページに対するコマンドをそれぞれ１つまで格納するものである。コマンド管理部１は、いずれかのバンクが第１ページもしくは第２ページに対し２つ目のコマンドが要求された場合、アクセス順最適化部２に、バンクテーブルに格納されているコマンド情報を出力する。また、アクセス要求マスタには格納ビジー情報を出力し、メモリアクセス要求の出力を保持させておく。また、優先コマンド管理部６では、プロセッサのキャッシュミスなどによる命令フェッチのようにリアルタイム性が必要な優先度の高いアクセス要求コマンドを格納する。次に、アクセス順最適化部２において、コマンド管理部１と、優先コマンド管理部６から出力されたコマンド情報を入力として、アクセス順入替最適化回路２１で、バンク及び、ページ及び、データ量を比較して発行順番を入れ替え、コマンド発行部３にコマンドを出力する。優先コマンドは通常コマンドよりも最優先でアクセス順入れ替え最適化処理がなされる。また、その後アクティブ化されるバンク及びページ情報も出力する。さらに、コマンド履歴管理回路２２は、アクセス順入替最適化回路２１が出力したコマンド履歴を管理し、コマンド履歴情報を出力する。コマンド履歴情報は、過去のアクセスのバンクアドレス、ページアドレスであり、アクセス順入替最適化回路２１で、次のコマンド選択に使用する。
【００８５】
次に、第４の実施形態での優先アクセス割込みによるオーバーヘッドを低減するアクセス順入替え最適化方法について説明する。
【００８６】
図８は、優先アクセス割込みによるオーバーヘッドを低減するアクセス順入替え最適化を行った場合のＤＲＡＭアクセスのフロー図である。
【００８７】
このコマンド順入れ替え処理は、バンクテーブルにコマンドがセットされると、banksort_req信号がセットされ、コマンド順入れ替えを開始する。また、優先コマンド管理部に優先コマンドがセットされると、emergency_req信号がセットされ、即座に優先コマンド処理を開始する。次に、割込み判別ステップ７０２では、emergency_req信号がセットされると、優先コマンドフラグ信号emergency_flagがセット（high）され、バンク競合の判定ステップ７０３へ進む。また、優先コマンドが無いときは、バンク競合の判定ステップ３０２に進む。次に、バンク競合の判定ステップ７０３では、優先コマンド管理部の優先コマンドと、コマンド過去の転送したコマンドのバンクアドレスを比較する。バンク競合比較は、オーバーヘッドのクロックサイクル数の小さいほうがバンク競合の少ないことを示す競合レベル０〜７を計算し、競合レベル０（バンク競合が無い）となった時点で優先コマンドが選択される。競合レベル７〜１の場合は優先コマンドフラグ信号emergency_flagがセットされたままの状態で、通常コマンド処理のバンク競合の判定ステップ３０２へ進む。優先コマンドは、次の通常コマンド処理のとき、再度バンク競合の判定ステップ８０３で、優先コマンド管理部の優先コマンドと、コマンド過去の転送したコマンドのバンクアドレスを比較する。次に、バンク競合の判定ステップ３０２では、バンクテーブル上の有効なバンク及びページのコマンドと、コマンド過去の転送したコマンドのバンクアドレスを比較する。バンク競合比較は、オーバーヘッドのクロックサイクル数の小さいほうがバンク競合の少ないことを示す競合レベル０〜７を計算し、バンク競合が少ないコマンドを優先させるため、それぞれのコマンドにおいて競合レベルが他のコマンドより低いかを比較し、最優先のコマンドを選択するコマンド選択信号bank_sel[7:0]を生成する。最も競合レベルの低いコマンドがセット（high）される。また、同一の競合レベルのコマンドが複数ある場合は、複数のコマンドがセットされる。次に、競合の少ないコマンドを選択するステップ３０３では、コマンド選択信号bank_sel[7:0]に従い、バンクテーブルの所定のコマンドを選択する。１つのコマンドしか選択されないときは、コマンド選択発行ステップ３０８へ、複数のコマンドが選択されたときは、最大最小コマンドの判定ステップ３０４へ進む。次に、最大最小コマンドの判定ステップ３０４では、それぞれのコマンドの転送サイズを比較し、最大のコマンド、最小のコマンドをそれぞれ判定する。次に、選択コマンド判定ステップ３０５では、コマンド入れ替え開始時点で、２つ以上のバンクのそれぞれ２つ以上のページのコマンドがコマンドテーブルにセットされている場合は、最大のコマンドと最小のコマンドを交互に選択し、また、前記条件に加え、２つめの転送、且つ前の転送のバースト長が６以上の条件の場合、最小のコマンドを選択し、それ以外の条件の場合、最大のコマンドを選択する。次に、コマンド選択発行ステップ３０８では、選択されたコマンドのコマンドをバンクテーブルより選択し、コマンド発行部３にコマンドを出力する。優先コマンドが発行されたときのみ、emergency_ack信号を優先コマンド管理部に返する。次に、発行済みコマンドフラグステップ���０９では、選択済みコマンド情報フラグレジスタに、コマンド選択信号bank_sel[7:0]で選択されたコマンドにフラグを立てる。選択済みコマンド情報は、バンク競合の判定ステップ３０２において、バンクテーブル上のバンク及びページのコマンドをマスクすることに使用され、選択済みのコマンドを判定対象から除外する。次に、未発行コマンド判定ステップ３１０では、発行したコマンド数を数えて、全てのコマンドが選択されるまで、一連のアクセス順入れ替え最適化を行い、全てのコマンドが選択されると、banksort_ack信号をコマンド管理部１に返し、アクセス順入れ替え最適化を完了する。
【００８８】
これにより、第４の実施形態おいては、プロセッサのキャッシュミスなどによる命令フェッチのようにリアルタイム性が必要な優先度の高いアクセスを割り込ませても、処理中のアクセスを中断する必要が無く、且つ同一バンクの異なるページアクセスが連続することも無く、ページミスヒットによるオーバーヘッドを隠蔽した優先度の高いコマンド処理ができる。
【００８９】
（第５の実施形態）
図９は、優先コマンドとＤＲＡＭリフレッシュコマンド発行を最適化するリフレッシュ生成回路の回路構成を示すものである。図９のリフレッシュ生成回路は、リフレッシュサイクルカウンタ回路８０１と、カウンタイネーブル回路８０２と、リフレッシュ保持回路８０３と、リフレッシュコマンド発行条件回路８０４と、リフレッシュコマンド保持条件回路８０５を備えている。
【００９０】
ＳＤＲＡＭは、各ページ（８１９２ページ、もしくは４０９６ページ）を、６４ｍｓ以内に、少なくとも各1回はリフレッシュをかける必要がある。リフレッシュをかけるには、８９１２回／６４ｍｓ、もしくは４０９６回／６４ｍｓのリフレッシュコマンド発行が必要で、リフレッシュコマンドにより、ＳＤＲＡＭ内部で自動的にロウアドレスが選択されリフレッシュされる。
【００９１】
リフレッシュサイクルカウンタ回路８０１では、refcunt[9:0]で設定したリフレッシュ周期をカウントダウンし、リフレッシュ周期信号を出力する。また、リフレッシュサイクルカウンタは、まずクリア（CLR）優先、次にロード（LE）優先、カウントダウン（CE）は最後で、常にカウントダウンを行う。
【００９２】
カウンタイネーブル回路８０２では、aref_en信号がenableでは、常にリフレッシュサイクルカウンタをカウントダウンし、aref_en信号がdisableでは、リフレッシュサイクルカウンタを停止（lowにクリア）する。
【００９３】
リフレッシュ保持回路８０３では、リフレッシュ周期信号によりセットされ、リフレッシュコマンド発行でリセットされるF/Fであり、aref_req信号を出力する。
【００９４】
リフレッシュコマンド発行条件回路８０４で判別され、条件を満たしている場合にaref_sel信号が出力される。aref_sel信号によりリフレッシュコマンド発行が行われる。
【００９５】
リフレッシュコマンド保持条件回路８０５では、emergency_flag信号がセットされているとき、reg_wait_count[1:0]×リフレッシュコマンド発行周期で設定された期間は、優先コマンドを優先させる。ここで、第５の実施形態では、reg_wait_count[1:0]を１とする。連続優先コマンドがreg_wait_count[1:0] ×リフレッシュコマンド発行周期で設定された期間を超えると、強制的にリフレッシュコマンドが発行される。
【００９６】
リフレッシュコマンド発行条件回路８０４におけるコマンド発行条件は、
１）aref_req信号がセットされ、優先コマンドがreg_wait_count[1:0] ×リフレッシュコマンド発行周期で設定された期間以上連続した場合
２）aref_req信号がセットされ、コマンドがない場合
３）aref_req信号がセットされ、コマンドはあっても優先コマンドではない場合
すなわち、連続優先コマンドがreg_wait_count[1:0] ×リフレッシュコマンド発行周期で設定された期間内の場合は、リフレッシュコマンドよりも優先コマンドが優先される。また、リフレッシュコマンド保持条件回路８０５におけるリフレッシュコマンド保持回数カウンタの条件は、
４）リフレッシュコマンド要求があるときに優先コマンドが選択された場合、カウントアップし、クリアよりもカウントアップが優先される。
５）リフレッシュコマンドまたは、通常コマンドが選択された場合、クリアされる。
【００９７】
次に、第５の実施形態での優先コマンドとＤＲＡＭリフレッシュコマンド発行の最適化について説明する。
【００９８】
図１０（ａ）は、優先コマンドによりＤＲＡＭリフレッシュサイクルが満足できないリフレッシュコマンド生成を説明するタイミングチャートである。また、図１０（ｂ）は、優先コマンド割込み時もＤＲＡＭリフレッシュサイクルを満足するリフレッシュコマンド生成を説明するタイミングチャートである。また、図１０（ｃ）は、連続した優先コマンド割込み時もＤＲＡＭリフレッシュサイクルを満足するリフレッシュコマンド生成を説明するタイミングチャートである。それぞれのタイミングチャートで使用するＳＤＲＡＭは、８１９２ページを６４ｍｓ以内に少なくとも各1回はリフレッシュをかける必要がある。また、第５の実施形態では、１度のリフレッシュコマンド発行処理を１ページとする。
【００９９】
図１０（ａ）では、リフレッシュコマンド発行周期tREF_CYCLEは、６４ｍｓ／８１９２回＝７．８１２５μｓである。回路の動作周波数を９６ＭＨｚとすると、リフレッシュコマンド発行サイクル数は７５０で、リフレッシュサイクルカウンタ回路８０１のrefcunt[9:0]にリフレッシュコマンド発行サイクル＝７５０を設定する。ここで前記の設定では、優先コマンドと競合した場合、優先コマンドが最優先にためリフレッシュコマンドが間に合わず、リフレッシュ周期を満たさなくなる。
【０１００】
第５の実施形態の優先コマンドとＤＲＡＭリフレッシュコマンド発行を最適化するリフレッシュ生成回路によると、図１０（ｂ）のようにreg_wait_count[1:0]を１に設定すると、リフレッシュコマンド発行周期が６４ｍｓ／（８１９２＋１）回＝７．８１１５μｓとなり、同一ページの次のリフレッシュコマンド発行までに、リフレッシュコマンド発行周期tREF_CYCLEの１周期分マージンが確保でき、そのマージン分だけリフレッシュコマンド発行を遅延させることが出来る。
【０１０１】
優先コマンドとＤＲＡＭリフレッシュコマンド発行の最適化方法は、
１）リフレッシュコマンド発行周期×８１９２回よりも１周期のマージンを持たせ、リフレッシュ周期を設定する。
２）他のコマンドがない場合にリフレッシュコマンドを発行する。
３）但し、一定時間tREF_WAIT待ってもリフレッシュコマンドが発行できない場合は、他のコマンドを止めリフレッシュコマンドを優先させる。この場合、少なくともリフレッシュコマンドの実行する時間tREF_TIMEを確保しておく必要がある。リフレッシュコマンド実行に、ワーストでtREF_TIMEかかるとすると、リフレッシュコマンド発行を待つことの出来る時間tREF_WAIT＝（tREF_CYCLE−tREF_TIME）になる。tREF_CYCLEとtREF_WAITは、このタイミングを確保できるように設定する。
【０１０２】
また、リフレッシュ保持回路８０３で複数回のリフレッシュコマンドを貯めるにすれば、tREF_WAITは、１サイクル以内ではなく、複数サイクルにまたがるように出来る。図１０（ｃ）のように、同一ページの次のリフレッシュコマンド発行までに、リフレッシュコマンド発行周期tREF_CYCLEの２周期分マージンを持たせると、リフレッシュコマンド発行を待つことの出来る時間tREF_WAITは、（tREF_CYCLE×２−tREF_TIME）になる。
【０１０３】
これにより、第５の実施形態おいては、オーバーヘッドを隠蔽して優先度の高いアクセスと、リフレッシュコマンドの発行タイミングが重なっても、優先度の高いコマンドをリフレッシュコマンドより優先させることができ、且つリフレッシュ周期を確保したリフレッシュコマンドの発行ができる。
【産業上の利用可能性】
【０１０４】
本発明に係るメモリアクセス装置は、オーバーヘッドを隠蔽した高転送効率を実現し、単位時間あたりの有効データ転送量を増加させることで、ＤＲＡＭを用いたシステムのバンド幅向上に有用である。さらに、バンド幅を向上したことで動作周波数が抑えられ低消費電力化にも有用である。
【図面の簡単な説明】
【０１０５】
【図１Ａ】実施の形態１におけるアクセス順入替え最適化回路を備えたメモリアクセス装置のブロック図である。
【図１Ｂ】メモリアクセス要求の第１例を示す説明図である。
【図１Ｃ】メモリアクセス要求の第２例を示す説明図である。
【図１Ｄ】メモリアクセス要求の第３例を示す説明図である。
【図２Ａ】アクセス順入替えを行わない場合のＤＲＡＭアクセスのタイミングチャートである。
【図２Ｂ】バンク競合が少ない順にアクセス入替えを行った場合のＤＲＡＭアクセスのタイミングチャートである。
【図２Ｃ】バンク競合を比較しバンク競合が少ない順と異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行った場合のＤＲＡＭアクセスのタイミングチャートである。
【図２Ｄ】複数のバンクと複数のページのアクセスにおいて競合を比較し競合が少ない順と異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行った場合のＤＲＡＭアクセスのタイミングチャートである。
【図３】アクセス順最適化部においてバンク競合を比較し競合が少ない順と異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行った場合のＤＲＡＭアクセスのフロー図である。
【図４】図３のステップＳ３０１における競合レベルの算出処理を示すフローチャート図である。
【図５】実施の形態２における、アクセス順最適化部において複数のバンクと複数のページのアクセスにおいて競合を比較し競合が少ない順と異なるバンク間での次アクセスの転送データサイズを比較しオーバーヘッドが少ない順とにアクセス入替えを行った場合のＤＲＡＭアクセスのフローチャート図である。
【図６】実施の形態３における命令発行順に従ったデータ転送を行うメモリ制御部を備えたメモリアクセス装置のブロック図である。
【図７】実施の形態４における優先アクセス割込みによるオーバーヘッドを低減するアクセス順入替え最適化回路のブロック図である。
【図８】優先アクセス割込みによるオーバーヘッドを低減するアクセス順入替え最適化を行った場合のＤＲＡＭアクセスのフロー図である。
【図９】優先コマンドとＤＲＡＭリフレッシュコマンド発行を最適化するリフレッシュ生成回路の回路構成を示す図である。
【図１０】（ａ）優先コマンドによりＤＲＡＭリフレッシュサイクルが満足できないリフレッシュコマンド生成を説明するタイミングチャートである。（ｂ）優先コマンド割込み時もＤＲＡＭリフレッシュサイクルを満足するリフレッシュコマンド生成を説明するタイミングチャートである。（ｃ）連続した優先コマンド割込み時もＤＲＡＭリフレッシュサイクルを満足するリフレッシュコマンド生成を説明するタイミングチャートである。
【図１１】従来のメモリアクセス装置の構成を示すブロック図である。
【符号の説明】
【０１０６】
１  コマンド管理部
２  アクセス順最適化部
３  コマンド発行部
４  メモリ制御部
５  ＳＤＲＡＭ
６  優先コマンド管理部
７  コマンドテーブル部
２１  アクセス順入替最適化回路
２２  コマンド履歴管理回路
３１  ＲＷコマンド発行回路
３２  ＡＣＴコマンド発行回路
４１  リフレッシュ生成回路
４２  モードレジスタ回路
４３  メモリコマンド発行調停回路
４４  リードデータバッファ
４５  ライトデータバッファ
５０２  Ｒ／Ｗ制御回路
８０１  リフレッシュサイクルカウンタ回路
８０２  カウンタイネーブル回路
８０３  リフレッシュ保持回路
８０４  リフレッシュコマンド発行条件回路
８０５  リフレッシュコマンド保持条件回路
【図１Ａ】
2006260472.tif 000003
【図１Ｂ】
2006260472.tif 000004
【図１Ｃ】
2006260472.tif 000005
【図１Ｄ】
2006260472.tif 000006
【図２Ａ】
2006260472.tif 000007
【図２Ｂ】
2006260472.tif 000008
【図２Ｃ】
2006260472.tif 000009
【図２Ｄ】
2006260472.tif 000010
【図３】
2006260472.tif 000011
【図４】
2006260472.tif 000012
【図５】
2006260472.tif 000013
【図６】
2006260472.tif 000014
【図７】
2006260472.tif 000015
【図８】
2006260472.tif 000016
【図９】
2006260472.tif 000017
【図１０】
2006260472.tif 000018
【図１１】
2006260472.tif 000019