(57)【特許請求の範囲】
【請求項１】
シンクロナスＤＲＡＭに対する任意のバースト長のアクセス要求を処理するメモリ制御装置であって、
上記任意のバースト長でのバーストアクセスを行うに際してバーストアクセス中にローアドレスが変化するか否かを判断する判断手段、
該判断手段によってローアドレスが変化すると判断されたときに、ローアドレスの変化の前後でバーストアクセスを分け、分けられた各バーストアクセスのバースト長を求める手段、
分けられた各バーストアクセスのバースト長の最大公約数に基いて決まるバースト長をシンクロナスＤＲＡＭに設定するバースト長設定手段、
設定バースト長毎にスタートアドレスを生成する手段、とを備え、
設定バースト長毎に発生されるスタートアドレスに基いてリード・ライトコマンドを発して連続的にデータアクセスを行うようにしたメモリ制御装置。
【請求項２】
アクセス要求のあったバースト長をバースト長毎にカウントする複数のカウンタと、これら複数のカウンタの計数値の最大を最高頻度バースト長とするバースト長カウント比較手段と、タイマ手段とを更に備え、
１回のアクセス処理終了後タイマ手段に設定した所定の時間が経過するまで次のアクセス要求がなかったときに、上記最高頻度バースト長にシンクロナスＤＲＡＭのバースト長を自動更新するようにした、請求項１のメモリ制御装置。
【請求項３】
上記判断手段は、アクセス要求のあったアドレスのスタートアドレスのカラムアドレスの２の補数とアクセス要求のあったバースト長とを比較し、バースト長が上記カラムアドレスの２の補数より大きいときに、ローアドレスがバーストアクセス中に変化する、と判断する、請求項１又は２に記載のメモリ制御装置。
【請求項４】
シンクロナスＤＲＡＭに対する任意のバースト長のアクセス要求を処理するメモリ制御装置であって、
アクセス要求のあったバースト長をバースト長毎にカウントする複数のカウンタと、
これら複数のカウンタの計数値の最大値を最高頻度バースト長とする比較手段と、
アクセス処理終了後にセットされ、所定の時間を計時するタイマ手段と、
上記所定の時間内に次のアクセス要求がなかったときに、シンクロナスＤＲＡＭに設定されたバースト長を上記最高頻度バースト長に更新する自動更新手段と、
を備えたメモリ制御装置。
【請求項５】
シンクロナスＤＲＡＭに対する任意のバースト長のアクセス要求を処理するメモリ制御方法であって、
上記任意のバースト長でのバーストアクセスを行うに際してバーストアクセス中にローアドレスが変化するか否かを判断する判断ステップ、
該判断ステップにおいてローアドレスが変化すると判断されたときに、ローアドレスの変化の前後でバーストアクセスを分け、分けられた各バーストアクセスのバースト長を求めるステップ、
分けられた各バーストアクセスのバースト長の最大公約数に基いて決まるバースト長をシンクロナスＤＲＡＭに設定するバースト長設定ステップ、及び、
設定バースト長毎にスタートアドレスを生成するステップ
を含み、
設定バースト長毎に発生されるスタートアドレスに基いてリード・ライトコマンドを発して連続的にデータアクセスを行うメモリ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、設定したバースト長では高速なアクセスが可能なシンクロナスＤＲＡＭへのアクセスを制御するメモリ制御装置に関するものであり、任意のアドレスからの任意のワード数のアクセスを可能にする制御装置に関する。
【０００２】
【従来の技術】
シンクロナスＤＲＡＭは高速動作が可能であり、連続するアドレスをアクセスする場合は非常に高速にアクセスが可能である。しかし、連続しないアドレスまたは短いサイクルで連続するアドレスが途切れる場合のアクセスは高速に行うことが困難である。従来は連続しないアドレスのアクセスの場合バンクを切り変える事により高速化を図るなどの手法が取られている。バースト長の違うアクセスなどもバースト長毎にアクセスの順番を並べ替えるなどして、モードレジスタなどの設定を減らし、高速化が図られている。しかしながら、それらの方法は同一バンク内のアクセスが集中するような処理には有効とはいえない。
【０００３】
特開平１１−１４４０７３では、複数のバンクの個数分の複数のシーケンサを持ち、各バンク毎にバースト長とスタートアドレスの管理を行うことが述べられているが、同一バンクにおいてバースト長の異なるアクセスが混在する場合には効果がない。特開平０８−０５５０６０、特開平０８−１７９９８３、特開平０８−１７９９８４及び特開平０８−２０２６１４の場合、固定バースト長より少ないワード数のアクセスについて述べられているが、アクセスを途中で禁止（中止）させるという方法であり、ＳＤＲＡＭのバーストストップ機能を使うとしてもバースト長はフルページに限られ、またバーストストップコマンド発行後に無駄なサイクルが発生する。特開平１１−２２４２２１では、転送バースト長を判断してデータ転送効率がよい命令（アクセス）から実行するように順番を入れ替える制御を行うことが述べられており転送効率は高くすることが出来るが、複数の回路からの要求に対して、要求の優先順位が決められている場合、効率の為に優先順位を覆すわけにはいかない。
本発明では、同一バンク内にバースト長の異なるアクセスがランダムに集中することを想定しており、その場合でもアクセス能力の低下を軽減することが出来る。
【０００４】
【発明が解決しようとする課題】
シンクロナスＤＲＡＭは高速動作が可能であるが、先述のように連続しないアドレスまたは短いサイクルで連続するアドレスが途切れる場合のアクセスは高速に行うことが困難である。その原因はいくつかあり、一つはその都度アクセスするローアドレスをアクティブにしなければいけない事、さらにアクセスするバースト長が変化する場合にモードレジスタによるバースト長の設定をしなければならない事が上げられる。異なるバースト長のＲＡＭへのアクセス要求が混在する場合には、アクセスのバースト長が変わるたびにモードレジスタを設定しなければならず、高速化の妨げになっている。本発明は同一バンク内へのアクセスが集中する場合を考え、モードレジスタによるバースト長の変更を少なくすることにより、アクセスの高速化を図ることを目的としている。
【０００５】
【課題を解決するための手段】
本発明に係るメモリ制御装置は、シンクロナスＤＲＡＭに対する任意のバースト長のアクセス要求を処理するメモリ制御装置であって、上記任意のバースト長でのバーストアクセスを行うに際してバーストアクセス中にローアドレスが変化するか否かを判断する判断手段、該判断手段によってローアドレスが変化すると判断されたときに、ローアドレスの変化の前後でバーストアクセスを分け、分けられた各バーストアクセスのバースト長を求める手段、分けられた各バーストアクセスのバースト長の最大公約数に基いて決まるバースト長をシンクロナスＤＲＡＭに設定するバースト長設定手段、設定バースト長毎にスタートアドレスを生成する手段、とを備え、設定バースト長毎に発生されるスタートアドレスに基いてリード・ライトコマンドを発して連続的にデータアクセスを行うものである。
【０００６】
また、本発明に係るメモリ制御装置は、アクセス要求のあったバースト長をバースト長毎にカウントする複数のカウンタと、これら複数のカウンタの計数値の最大を最高頻度バースト長とするバースト長カウント比器手段と、タイマ手段とを更に備え、１回のアクセス処理終了後タイマ手段に設定した所定の時間が経過するまで次のアクセス要求がなかったときに、上記最高頻度バースト長にシンクロナスＤＲＡＭのバースト長を自動更新するものである。
【０００７】
また、上記判断手段は、アクセス要求のあったアドレスのスタートアドレスのカラムアドレスの２の補数とアクセス要求のあったバースト長とを比較し、バースト長が上記カラムアドレスの２の補数より大きいときに、ローアドレスがバーストアクセス中に変化する、と判断するものである。
【０００８】
さらに、シンクロナスＤＲＡＭに対する任意のバースト長のアクセス要求を処理するメモリ制御装置であって、アクセス要求のあったバースト長をバースト長毎にカウントする複数のカウンタと、これら複数のカウンタの計数値の最大値を最高頻度バースト長とする比較手段と、アクセス処理終了後にセットされ、所定の時間を計時するタイマ手段と、上記所定の時間内に次のアクセス要求がなかったときに、シンクロナスＤＲＡＭに設定されたバースト長を上記最高頻度バースト長に更新する自動更新手段とを備えている。
本発明に係るメモリ制御方法は、シンクロナスＤＲＡＭに対する任意のバースト長のアクセス要求を処理するメモリ制御方法であって、
上記任意のバースト長でのバーストアクセスを行うに際してバーストアクセス中にローアドレスが変化するか否かを判断する判断ステップ、
該判断ステップにおいてローアドレスが変化すると判断されたときに、ローアドレスの変化の前後でバーストアクセスを分け、分けられた各バーストアクセスのバースト長を求めるステップ、
分けられた各バーストアクセスのバースト長の最大公約数に基いて決まるバースト長をシンクロナスＤＲＡＭに設定するバースト長設定ステップ、及び、
設定バースト長毎にスタートアドレスを生成するステップ
を含み、
設定バースト長毎に発生されるスタートアドレスに基いてリード・ライトコマンドを発して連続的にデータアクセスを行う。
【０００９】
【発明の実施の形態】
（実施の形態１）
本実施の形態１では、図１に示すように、シンクロナスＤＲＡＭ２に対して設けられるＳＤＲＡＭコマンド生成回路４とアドレス生成回路６の前段にＲＡＭアクセス調停回路８を設ける。
このＲＡＭアクセス調停回路８は、リフレッシュ制御回路１０のアクセス要求並びに複数のブロック（具体的に図示せず）からのＳＤＲＡＭ２へのアクセス要求を予め与えた優先度に従って調停するとともに、以下に詳述するように、必要なバースト長の設定を行う。即ち、複数のブロックからは種々のバースト長のアクセス要求がランダムに発生され、ＲＡＭアクセス調停回路８は予め定めた優先順位にしたがってアクセスする順番を生成し、その順番にしたがってアクセス権を１つのブロックに与える。ＲＡＭアクセス調停回路８は、アクセス権を与えたブロックからのアクセス要求信号、アドレス信号およびワード数（バースト長）を入力とし、ＳＤＲＡＭコマンド生成回路４に対しては、アクセス要求信号、以下に詳述する方法によって定めたバースト長および連続するワード数を出力するとともに、アドレス生成回路６に対してはアドレス、バースト長、連続ワード数を出力する。
【００１０】
ＳＤＲＡＭコマンド生成回路４はＲＡＳ（ローアドレス信号）信号、ＣＡＳ（カラムアドレス信号）信号、チップセレクト信号（ＣＳ）、ライトイネーブル信号（ＷＥＳ）およびデータマスク信号をＳＤＲＡＭ２に対して出力する。
アドレス生成回路６はＲＡＭアクセス調停回路８から出力されるアドレス信号、バースト長、連続ワード長を入力してＳＤＲＡＭ２に出力するアドレス（バースト長を情報として含む）を生成する。上記ＳＤＲＡＭ２はアドレス生成回路６から入力されるアドレス情報に基いて内蔵するモードレジスタ（図示せず）にバースト長を設定するとともに入力されるアドレスとＳＤＲＡＭコマンド生成回路４から入力されるＲＡＳ，ＣＡＳ，ＣＳ，ＷＥ等のコマンドにしたがって、データバッファ１２との間でデータの読み書きを行う。
【００１１】
なお、ＲＡＭアクセス調停回路８は、リフレッシュ制御回路１０からのアクセス要求を受けると、ＳＤＲＡＭ２に対してリフレッシュ動作を行う。
本願発明にかかるＲＡＭアクセス調停回路８は、これから処理しようとするアクセス処理においてバーストアクセスの途中でローアドレスが変化するか否かを判断してバースト長を設定する。
【００１２】
図２は、上記バースト長の設定等を行うＲＡＭアクセス調停回路８が実行する制御プログラムのフローチャートを示す。
ステップＳ１０１において、アクセス要求が入力されるとステップＳ１０３において他のアクセス要求の有無をチェックし、他のアクセス要求がある場合には、ステップＳ１０５において、予め定めたアクセス要求の優先順位に基いて、優先順位の高いアクセス要求を選択する。
ステップＳ１０７では、アクセス権を与えたアクセス要求を受付け、スタートアドレスおよびバースト長（ワード数）を読込む。受付けたアクセス要求についてステップＳ１０９では、バーストアクセスの途中でローアドレスが変わるか否かを判断する。
【００１３】
その判断方法は以下の通りである。
１．スタートカラムアドレスの２の補数を計算する。
２．この補数と入力バースト長とを比較する。
３．比較の結果、入力バースト長＞補数であれば、バーストアクセスの途中でローアドレスが変化することを意味するので、ローアドレスの変化の前後でアクセスを分ける。
４．ローアドレスの変化前のアクセスにおいて連続するワード数は、前記カラムアドレスの２の補数から決められ、変化後のアクセスにおける連続ワード数はバースト長から変化前のアクセスにおける連続ワード数を差し引いた値として求めることができる。
５．上記のように、バーストアクセスの途中でローアドレスが変化する場合には、バースト長を“１”として設定する。
６．バーストアクセス中にローアドレスの変化がない場合、即ち、入力バースト長≦補数であれば、バースト長の変更は行わない。
【００１４】
次いで、ステップＳ１１１では、ステップＳ１０９で演算したバースト長および連続ワード長をＳＤＲＡＭコマンド生成回路４とアドレス生成回路６に出力する。
そして、ＳＤＲＡＭコマンド生成回路４は各種のコマンドをＳＤＲＡＭ２に対して出力し、アドレス生成回路６はアドレス情報（設定バースト長を含む）をＳＤＲＡＭ２に出力する。
【００１５】
図３に上記アクセスについての動作タイミングの一例を示す。
この例において、データバスの幅は１６ビットとし、８ワード（入力バースト長）のアクセス要求があった場合で、１ローアドレスが２５６ワードのＲＡＭをアクセスするものとする。いま、１ワード目のローアドレスが１、カラムアドレスが２５１（ＦＢｈ）であったとすると、６ワード目のローアドレスは２、カラムアドレスは０になる。即ち、バーストアクセスの途中でローアドレスが変化し、変化の前後でアクセスが連続ワード数５のアクセスと連続ワード数３のアクセスの２つに分けられる。
【００１６】
前述したように、ＲＡＭアクセス調停回路８は、この場合、出力バースト長を“１”と連続ワード数“５”、“３”をＳＤＲＡＭコマンド生成回路４とアドレス生成回路６に出力する。
ＳＤＲＡＭコマンド生成回路６は、クロック信号にしたがって、ローアクティブの信号ＣＳＢ，ＲＡＳＢ，ＣＡＳＢ，ＷＥＢを出力する。一方、ＳＤＲＡＭ２は、入力されるアドレス情報中に含まれるＭＲＳ（バースト長を表わす信号）にしたがってモードレジスタのバースト長を“１”とする（ＭＯＤＥ  ＢＬ＝１）。
【００１７】
ローアドレス（ＲＯＷ）が入力されるタイミングで、アクティブコマンドＡＣＴがＳＤＲＡＭ２内で発生され、次いでリードコマンドが連続的に５回発生されると、入力されるカラムアドレスＦＢ−ＦＦに従って、連続的に５ワードのデータアクセスが実行される。最後の（５回目の）リードコマンドはリードＡコマンドＲＥＡＤＡ（Ａはオートプリチャージを意味する）である。この場合、バースト長は“１”に設定されており、リードおよびライトコマンドは同一のローアドレスのもと、バースト長１のアクセスを５回連続して行う。
【００１８】
次に、ローアドレス（ＲＯＷ＋１）が変更されると、再びアクティブコマンドＡＣＴが出力され、リードＡコマンドが発生されると、バースト長は１のまま計３回のデータアクセスが連続して行われ、結果として８ワードのデータアクセスが終了する。
【００１９】
以上のように、ローアドレスが変化する場合に、バースト長の設定を変更せずにアクセスを連続して行えるのでバースト長の設定が任意のアクセスについて１回で済み、それだけ高速のアクセスが実現できる。
なお、上記実施例では、ＳＤＲＡＭ２に設定するバースト長を最大のバースト長“１”に設定したが、ローアドレスが変化する前後のバースト長が例えば“６”と“２”であれば、設定するバースト長を“２”とするようにしてもよい。換言すれば、前後のバースト長の最大公約数を設定バースト長とすればよい。
【００２０】
（実施の形態２）
本発明の実施の形態２にかかる回路構成を図４に示す。
図１の回路構成と比較すると明らかなように、実施の形態２では図１の回路構成に加えてバースト長カウンタ・比較器１４が設けられている。
このバースト長カウンタ・比較器１４は、ＳＤＲＡＭ２のモードレジスタで設定可能な全てのバースト長について、バースト長毎に別々のカウンタを持ち、アクセス要求があるとそのバースト長を対応するカウンタでカウントすることにより、バースト長毎のアクセス要求回数をカウントする。比較器は、各バースト長毎にカウントされた複数のカウント値を比較し、最もアクセス発生頻度の高いバースト長を常時選び出している。
【００２１】
本実施の形態２の回路構成は、実施の形態１の回路構成によって実行されるバースト長設定機能に加えて、アクセス要求が所定時間なかった場合に、バースト長を最も発生頻度の高いバースト長に自動更新するようにしたものである。したがって、図４の回路構成は、付加したバースト長カウンタ・比較器１４以外は図１の回路構成と基本的に同じであるので対応する構成要素について同じ参照番号を付して重複した説明を省略する。
【００２２】
図５は、本実施の形態２で実行されるバースト長の自動更新ルーチンのフローチャートである。
ステップＳ２０１において、１回のアクセス要求処理が終了すると、ステップＳ２０３において、予め所定の時間が設定されたタイマをセットする。次に、ステップＳ２０５において、新たなアクセス要求の有無をチェックする。新たなアクセス要求がタイマ時間内にあった場合、そのアクセス要求の処理を行う。
【００２３】
一方、タイマがタイムアップするまでアクセス要求がなかった場合（ステップＳ２０７）、ＳＤＲＡＭコマンド生成回路４の要求（ＲＡＳ，ＣＡＳ，ＣＳ，ＷＥ等のコマンドの組合せ）に従って、バースト長カウンタ・比較器１４は、その時点で最も発生頻度の高いバースト長をＳＤＲＡＭコマンド生成回路４に出力し、ＳＤＲＡＭコマンド生成回路４はアドレス生成回路６にそのバースト長を指示する。アドレス発生回路６は、指示されたバースト長をＳＤＲＡＭ２に出力し、ＳＤＲＡＭ２は内部のモードレジスタにその値を設定する。
【００２４】
図６に実際の動作タイミングの一例を示す。この例では、最も発生頻度の高いバースト長が“４”であるとし、最初にバースト長“２”のアクセスを行うものとする。
図６に示すように、最初のバースト長“２”のアクセス要求が受け付けられると、コマンドＣＳＢ，ＲＡＳＢ，ＣＡＳＢおよびＷＥＢが一斉にローになり、そのタイミングでアドレス生成回路６は、ＳＤＲＡＭ２にバースト長が“２”であることを示す信号（ＭＲＳ）を出力し、モードレジスタを“２”に設定する（ＭＯＤＥ  ＢＬ＝２）。次にローアドレス（ＲＯＷ）のアクティブコマンド（ＡＣＴ）が発行されると、次のタイミングでカラムアドレスのリードＡ（ＲＥＡＤＡ）コマンドが発行され、２つのデータをアクセスする。
【００２５】
アクセス要求処理が終了した後、セットしたタイマがタイムアップするまで、後のアクセス要求がなかった場合、ＳＤＲＡＭコマンドＣＳＢ，ＲＡＳＢ，ＣＡＳＢ，ＷＥＢが一斉にローとなり、この時点でアドレス生成回路６から出力されるバースト長ＷＲＳ（本例では、最大発生頻度のバースト長は“４”）に対応してモードレジスタの値を“４”にセットしてバースト長を“４”とする。
【００２６】
次に、アクセス要求があり、かつそのアクセス要求のバースト長が“４”であるとすると、この時点でバースト長は“４”に自動更新されているので、バースト長を設定し直す必要はなく、したがってローアドレス（ＲＯＷ）のアクティブコマンド（ＡＣＴ）を発行し、次いでカラムアドレスに対するリードＡ（ＲＥＡＤＡ）コマンドを発行して、４ワードのデータのアクセスを実行する。
【００２７】
以上のように、アクセス要求が一定期間ない場合には、バースト長を発生頻度の最も高いバースト長に自動更新しておき、次のアクセス要求のバースト長が更新されたバースト長に一致していれば、バースト長を更新することなく直ちにデータのアクセスが行える。
なお、実施の形態２では、実施の形態１の機能にさらにバースト長の自動更新機能を付加したが、この自動更新機能は単独で実施しても十分有効である。
【００２８】
【発明の作用・効果】
請求項１のメモリ制御装置においては、任意のアドレスからの任意のバースト長のアクセス要求を処理するに際して、バーストアクセス中にローアドレスが変化する場合でも、１回のバースト長の設定でアクセス要求を処理することができ、アクセスに必要なサイクル数を低減することができる。
請求項２のメモリ制御装置においては、ある時間以上アクセス要求がなかった場合に最高頻度バースト長に自動更新するので、次のアクセス要求のバースト長が最高頻度バースト長に一致する確率が高く、その場合には直ちにアクセス要求処理を実行でき、処理の高速化が図ることができる。
請求項３のメモリ制御装置では、バーストアクセス中にローアドレスが変化するか否かを簡単な演算によって求めることができる。
請求項４のメモリ制御装置では、ある時間以上次のアクセス要求がなかったときには、最高頻度のバースト長に自動更新するようにしたので、次のアクセス要求のバースト長と一致する確率が高くなり、一致している場合には、バースト長を更新することなく直ちにアクセス要求を処理することができ、それだけ高速化を図ることができる。
【図面の簡単な説明】
【図１】  本発明の実施の形態１にかかるメモリ制御装置のブロック回路図。
【図２】  図１のメモリ制御装置が実行する制御プログラムのフローチャート図。
【図３】  図１のメモリ制御装置におけるバーストアクセス処理のタイミングチャート図。
【図４】  本発明の実施の形態２にかかるメモリ制御装置のブロック回路図。
【図５】  図４のメモリ制御装置が実行する制御プログラムのフローチャート図。
【図６】  図４のメモリ制御装置におけるバーストアクセス処理のタイミングチャート図。
【符号の説明】
２  ＳＤＲＡＭ
４  ＳＤＲＡＭコマンド
６  アドレス生成回路
８  ＲＡＭアクセス調停回路
１０  リフレッシュ制御回路
１２  データバッファ
１４  バースト長カウンタ・比較器
【図１】
0004108237.tif 000002
【図２】
0004108237.tif 000003
【図３】
0004108237.tif 000004
【図４】
0004108237.tif 000005
【図５】
0004108237.tif 000006
【図６】
0004108237.tif 000007