(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-09
(45)【発行日】2024-08-20
(54)【発明の名称】メモリ制御装置およびその制御方法
(51)【国際特許分類】
G06F 12/00 20060101AFI20240813BHJP
G06F 12/06 20060101ALI20240813BHJP
G11C 11/406 20060101ALI20240813BHJP
【FI】
G06F12/00 550B
G06F12/06 570A
G11C11/406 400
(21)【出願番号】P 2019171855
(22)【出願日】2019-09-20
【審査請求日】2022-09-14
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】藤原 誠
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開平10-003785(JP,A)
【文献】米国特許出願公開第2017/0228175(US,A1)
【文献】特開平10-011964(JP,A)
【文献】米国特許出願公開第2016/0307619(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 12/06
G11C 11/406
(57)【特許請求の範囲】
【請求項1】
複数のバンクで構成されるDRAMへのアクセスを制御するメモリ制御装置であって、
前記DRAMに対するアクセス要求に応じてアクセスコマンドを生成しバッファに格納する第1の生成手段と、
前記DRAMに対するバンク指定のリフレッシュ要求を生成する第2の生成手段と、
前記バッファに格納されたアクセスコマンドと、前記第2の生成手段により生成されたリフレッシュ要求と、に基づいて、DRAMコマンドを前記DRAMに発行する発行手段と、
を有し、
前記第2の生成手段は、前記バッファに格納された1以上のアクセスコマンドによる前記DRAMの各バンクへのアクセス回数に基づいて、
当該アクセス回数がより多い他のバンクがあるバンクを、前記リフレッシュ要求を行うバンク
に決定する
ことを特徴とするメモリ制御装置。
【請求項2】
前記第2の生成手段は、前記バッファに格納された1以上のアクセスコマンドによる前記DRAMの各バンクへのアクセス回数を計算し、各バンクについて注目バンク以外のバンクに対するアクセス回数の合計数を計算し、該合計数が所定回数を超えるバンクを前記リフレッシュ要求を行うバンクの候補として決定する
ことを特徴とする請求項1に記載のメモリ制御装置。
【請求項3】
前記第2の生成手段は、前記候補となるバンクが複数ある場合、前記合計数が大きいバンクに対してリフレッシュ要求を行う優先度を高く設定する
ことを特徴とする請求項
2に記載のメモリ制御装置。
【請求項4】
前記所定回数は、リフレッシュを実行した際に並行して他のバンクに対して発行可能なコマンドの数である
ことを特徴とする請求項
2又は
3に記載のメモリ制御装置。
【請求項5】
前記バッファは、前記DRAMにおいて現在リフレッシュを実行しているバンクを確認可能に構成されており、
前記バッファは、該バッファに格納されたアクセスコマンドのうち、現在リフレッシュを実行しているバンクに対するアクセスコマンドを出力しないように構成される
ことを特徴とする請求項
2乃至
4の何れか1項に記載のメモリ制御装置。
【請求項6】
前記バッファは、前記第2の生成手段と前記発行手段との間の通信を確認することにより、前記DRAMにおいて現在リフレッシュを実行しているバンクを確認する
ことを特徴とする請求項
5に記載のメモリ制御装置。
【請求項7】
前記第2の生成手段は、前記バッファにアクセスコマンドが格納されていない場合、全てのバンクを前記候補とする
ことを特徴とする請求項
2乃至
6の何れか1項に記載のメモリ制御装置。
【請求項8】
複数のバンクで構成されるDRAMへのアクセスを制御するメモリ制御装置の制御方法であって、
前記DRAMに対するアクセス要求に応じてアクセスコマンドを生成しバッファに格納する第1の生成工程と、
前記DRAMに対するバンク指定のリフレッシュ要求を生成する第2の生成工程と、
前記バッファに格納されたアクセスコマンドと、前記第2の生成工程により生成されたリフレッシュ要求と、に基づいて、DRAMコマンドを前記DRAMに発行する発行工程と、
を含み、
前記第2の生成工程では、前記バッファに格納された1以上のアクセスコマンドによる前記DRAMの各バンクへのアクセス回数に基づいて、
当該アクセス回数がより多い他のバンクがあるバンクを、前記リフレッシュ要求を行うバンク
に決定する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリに対するアクセス制御に関し、特にDRAMのリフレッシュに係る制御に関するものである。
【背景技術】
【0002】
コンピュータシステムの主記憶装置として広くDRAM(Dynamic Random Access Memory)が採用されている。コンピュータシステムの高速化、高機能化により、DRAMアクセス性能要求は高まり続けており、より高速で動作するDRAMが開発されている。ところで、DRAMは、データを保持し続けるためにリフレッシュ(記憶保持動作)が必要なメモリデバイスである。DDR2規格までのDRAMでは、定期的に全バンク同時にリフレッシュを行っており、リフレッシュ中のメモリアクセスは禁止されていたため、メモリアクセス性能低下の一因となっていた。
【0003】
リフレッシュによるメモリアクセス性能低下を抑制すべく、LPDDR2規格では、DRAMのバンク単位でリフレッシュする機能が追加された。また、LPDDR4規格では、バンク単位のリフレッシュにおいて、リフレッシュバンクを指定する機能が追加された。特許文献1では、複数のメモリ領域から成るメモリを制御するメモリコントローラにおいて、メモリアクセスを行いながらメモリアクセスを行わないバンクをリフレッシュする手法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、DRAMでは、リフレッシュ実行時間はメモリアクセスに要する最短時間よりも長い。そのため、特許文献1の手法のように、メモリアクセスの開始タイミングとリフレッシュの開始タイミングとを同期させたとしても、メモリアクセスが終わったタイミングでリフレッシュが終わらない可能性がある。その結果、リフレッシュが終わっていないバンクと次のメモリアクセスのバンクとが同じ場合にはメモリアクセスが待たされることとなり、メモリアクセス性能が低下することになる。
【0006】
本発明は、このような問題に鑑みてなされたものであり、より効率的なメモリアクセスを可能とする技術を提供することを目的としている。
【課題を解決するための手段】
【0007】
上述の問題点を解決するため、本発明に係るメモリ制御装置は以下の構成を備える。すなわち、複数のバンクで構成されるDRAMへのアクセスを制御するメモリ制御装置は、
前記DRAMに対するアクセス要求に応じてアクセスコマンドを生成しバッファに格納する第1の生成手段と、
前記DRAMに対するバンク指定のリフレッシュ要求を生成する第2の生成手段と、
前記バッファに格納されたアクセスコマンドと、前記第2の生成手段により生成されたリフレッシュ要求と、に基づいて、DRAMコマンドを前記DRAMに発行する発行手段と、
を有し、
前記第2の生成手段は、前記バッファに格納された1以上のアクセスコマンドによる前記DRAMの各バンクへのアクセス回数に基づいて、当該アクセス回数がより多い他のバンクがあるバンクを、前記リフレッシュ要求を行うバンクに決定する。
【発明の効果】
【0008】
本発明によれば、より効率的なメモリアクセスを可能とする技術を提供することができる。
【図面の簡単な説明】
【0009】
【
図1】DRAMのリフレッシュ発行を説明する図である。
【
図2】バンク指定のリフレッシュを説明する図である。
【
図3】第1実施形態に係るDRAM制御装置の構成を示す図である。
【
図4】ローアドレス単位のアクセスコマンドの例を示す図である。
【
図6】第1実施形態におけるリフレッシュ候補の抽出方法を説明する図である。
【
図7】バンク指定のリフレッシュの制約を説明する図である。
【
図8】リフレッシュ管理テーブルの例を示す図である。
【
図9】リフレッシュ状態カウンタを説明する図である。
【
図10】リフレッシュ要求生成のフローチャートである。
【
図11】第2実施形態に係るDRAM制御装置の構成を示す図である。
【
図12】アクセスパタン格納部の構成を説明する図である。
【
図13】アクセスパタン候補生成部が実行する処理のフローチャートである。
【
図14】アクセスコマンドとアクセスパタン候補の関係を説明する図である。
【
図15】記録制御部が実行する処理のフローチャートである。
【
図16】アクセスパタンバッファに記録される情報を説明する図である。
【
図17】第2実施形態におけるリフレッシュ候補の抽出方法を説明する図である。
【
図18】第2実施形態におけるリフレッシュ抽出のフローチャートである。
【
図19】第3実施形態に係るDRAM制御装置の構成を示す図である。
【
図20】第3実施形態におけるリフレッシュ要求生成のフローチャートである。
【
図21】第3実施形態におけるリフレッシュ候補の決定方法を説明する図である。
【
図22】第3実施形態におけるアクセスコマンドの発行順制御のフローチャートである。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでするものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0011】
(第1実施形態)
本発明に係るメモリ制御装置の第1実施形態として、LPDDR4規格のDRAMアクセスを制御するDRAM制御装置を例に挙げて以下に説明する。
【0012】
<DRAMのリフレッシュ>
まず、DRAMがデータを保持し続けるために必要となるリフレッシュの動作について説明する。
図1は、DRAMのリフレッシュ発行を説明する図である。
【0013】
DRAMは、リフレッシュ平均発行100のように、仕様で定められた平均リフレッシュ間隔に1回、リフレッシュを行うことで、データを保持することが可能である。DRAMのリフレッシュとメモリアクセスは、共通のコマンド信号を使用する。また、リフレッシュ以外のコマンド発行にも多くのタイミング制約があるため、常に平均リフレッシュ間隔でリフレッシュを行うことは困難である。
【0014】
また、DRAMは、リフレッシュ先行発行101のように、リフレッシュ平均発行のタイミングに対して、リフレッシュを先に発行することを許容している。また、リフレッシュ遅延発行102のように、リフレッシュ平均発行のタイミングに対して、リフレッシュを遅らせて発行することも許容している。先行発行してよいリフレッシュ回数と、遅延発行してよいリフレッシュ回数は仕様で定められており、DRAM制御装置はこの許容範囲内でリフレッシュ発行タイミングを変更することができる。
【0015】
図2は、バンク指定のリフレッシュを説明する図である。
図2(A)はバンク0を指定したリフレッシュを示している。バンク指定のリフレッシュでは、指定したバンクのリフレッシュの実行中に他のバンクは、リード動作、ライト動作のメモリアクセスを行うことが可能である。一方、
図2(B)に示すように、リフレッシュを実行中のバンクのメモリアクセスは出来ない。そのため、リフレッシュバンクに対するメモリアクセス要求が発生すると、リフレッシュの完了を待って、メモリアクセスを行うことになる(矢印200)。このように、バンク指定のリフレッシュは、あるバンクのリフレッシュ中に他のバンクのメモリアクセスが可能である。ただし、より効率的にメモリ帯域を利用するためには、リフレッシュとメモリアクセスのバンクが重ならないように制御する必要がある。
【0016】
<装置構成>
図3は、第1実施形態に係るDRAM制御装置の構成を示す図である。DRAM制御装置300は、イニシエータ(不図示)が発行するメモリアクセス要求に応じて、DRAM301に対してDRAMコマンドを発行する。
【0017】
バスインターフェース(I/F)302は、イニシエータが発行するメモリアクセス要求を受信し、DRAM301のページと呼ばれる領域を指定するローアドレス単位のアクセスコマンドに変換し、コマンド格納部303に送信する。
【0018】
コマンド格納部303は、バスI/F302が生成するアクセスコマンドを複数個保持するバッファを有する。バッファにアクセスコマンドが格納されると、コマンド発行部304に対してコマンド送信が準備できたことを通知し、コマンド発行部304からの応答に応じて、アクセスコマンドをコマンド発行部304に送信する。なお、DRAMアクセスの効率向上や、緊急度に応じたメモリアクセス要求の実現を目的として、受信したメモリアクセス要求の順番を入れ替えるよう構成してもよい。また、バッファのアクセスコマンドの格納順を変更することで入れ替えを実現してもよい。
【0019】
アクセスパタン生成部305は、コマンド格納部303に格納されたアクセスコマンドを監視して、DRAM制御装置300がDRAM301に行うメモリアクセスを予測して、アクセスパタンを生成する。アクセスパタンについては
図5を参照して後述する。
【0020】
リフレッシュタイマ306は、平均リフレッシュ期間の経過をカウントするタイマであり、リフレッシュ生成部307に平均リフレッシュ期間の経過を通知する。
【0021】
リフレッシュ生成部307は、リフレッシュタイマ306が通知する平均リフレッシュ期間情報及びアクセスパタン生成部305が生成するアクセスパタンに応じて、バンク指定のリフレッシュ要求を生成し、コマンド発行部304に通知する。
【0022】
コマンド発行部304は、コマンド格納部303から受信したローアドレス単位のアクセスコマンドから、DRAM301をアクセスするための、DRAMアクセスコマンドを生成する。また、リフレッシュ生成部307が生成したバンク単位のリフレッシュ要求に応じて、DRAM301をリフレッシュするためのリフレッシュコマンドを生成する。また、コマンド発行部304は、DRAMアクセスコマンド及びリフレッシュコマンドの発行タイミングを調整して、DRAM301にDRAMコマンドを発行する。
【0023】
図4は、コマンド格納部に格納される、ローアドレス単位のアクセスコマンドの例を示す図である。アクセスコマンドは、コマンド401、バンク402、ローアドレス403、カラムアドレス404、転送長405、転送ID406を含む。コマンド401は、アクセスコマンドがリードとライトのどちらであるかを示す。転送ID406は、イニシエータがメモリアクセス要求を発行する際に付加する情報である。また、以下では、ローアドレス403及びカラムアドレス404をまとめてアドレス情報と呼ぶ。コマンド格納部は、複数のローアドレス単位のアクセスコマンドが格納されている。そのため、コマンド格納部に格納された情報を解析することで、メモリアクセスの予測が可能となる。
【0024】
図5は、アクセスパタン生成部が生成した、アクセスパタンの例を示す図である。アクセスパタン生成部は、コマンド格納部に格納されたアクセスコマンドの、コマンド、アドレス情報、転送長、から各バンクのアクセス時間を予測する。アクセスパタンは、アクセスされるバンクのアクセス順序と、それぞれのバンクがアクセスされるアクセス時間を示したものである。
図5に示すアクセスパタンは、バンク0に時間T0、バンク3に時間T1、バンク2に時間T2、バンク1に時間T3、の順序でアクセスすることを示している。アクセス時間は現在のDRAMの状態で変動するものであり、DRAMの各バンクの状態を加味することで、より精度の高いアクセス時間を予測することが可能である。
【0025】
<装置の動作>
図6は、第1実施形態におけるリフレッシュ候補の抽出方法を説明する図である。ここでは、8バンク構成(バンク0~バンク7)のDRAMにおいて、生成したアクセスパタンから、リフレッシュ候補を抽出する方法を示している。
図6において、アクセスパタン内で示す数字は、アクセスするバンクを示している。また、アクセスパタンで示される幅は、アクセスする時間期間を示している。例えば、
図6(A)のアクセスパタンは、バンク0、バンク2、バンク1...バンク7の順で同じアクセス時間期間でアクセスした後、バンク0に対して長い時間期間アクセスすることを示している。
【0026】
図6(A)で示すアクセスパタンにおいて、斜線で示すタイミングでリフレッシュを発行すると、バンク0からバンク7の全てのバンクでメモリアクセスとリフレッシュの時間が重なる。従って、このタイミングでリフレッシュを発行したバンクの転送の開始タイミングは、リフレッシュが完了する時刻600まで遅延させる必要があり、メモリアクセス性能が低下する。従って、
図6(A)の状態でのリフレッシュ候補は「なし」とする。
【0027】
図6(B)は、
図6(A)の時刻から、先頭のバンク0の転送が終わるまで時間経過した後の状態を示している。
図6(A)と同様に、リフレッシュ時間に全てのバンクのメモリアクセスが重なるため、
図6(B)の状態でのリフレッシュ候補も「なし」である。
【0028】
図6(C)は、
図6(B)の時刻から、先頭のバンク2の転送が終わるまで時間経過した後の状態を示している。
図6(C)の斜線で示すタイミングではバンク2の転送は発生しないため、当該リフレッシュ時間内にバンク2のリフレッシュを発行したとしてもメモリアクセス性能に影響がない。従って、
図6(C)の状態でのリフレッシュ候補は「バンク2」である。
【0029】
図6(D)は、リフレッシュ候補が複数存在する場合の状態を示している。
図6(D)では、リフレッシュ時間内に発生するメモリアクセスは、バンク7、バンク0の2つだけであり、「バンク1」~「バンク6」の6つのバンクがすべてリフレッシュ候補となる。
【0030】
図6(E)は、リフレッシュ時間内のアクセスパタンが決定していない状態を示している。
図6(E)では、リフレッシュ期間の前半では、バンク7、バンク6、バンク5のアクセスが発生することがわかる。一方で、バンク5の転送が終わった後のメモリアクセスが決まっていない。バンク5の転送が終わったあと、リフレッシュが終了するまでの期間に、メモリアクセスが発生しない場合、バンク5,6,7以外のバンクにリフレッシュを発行しても転送性能に影響は無い。しかし、リフレッシュが終了する時刻601の前にリフレッシュを発行したバンクと同じバンクのメモリアクセス要求を受信した場合、リフレッシュが終了する時刻601まで、DRAMアクセスが待たされることになる。そのため、
図6(E)におけるリフレッシュ候補は、リフレッシュ時間内のアクセスが発生しない「バンク0」~「バンク4」の5つのバンクである。ただし、リフレッシュ時間内のメモリアクセスが確定していないので、リフレッシュを発行した後で、バンク0からバンク4のメモリアクセス要求を受信してアクセスパタンが更新される可能性がある。従って、このような場合は、リフレッシュの発行状況が先行リフレッシュ状態であるか遅延リフレッシュ状態であるかに応じて、リフレッシュを発行するか否かを切り替える。
【0031】
図7は、LPDDR4における、バンク指定のリフレッシュの制約を説明する図である。LPDDR4でバンク指定のリフレッシュが可能になったが、指定するバンクの順番に制約が存在する。LPDDR4では、リフレッシュのバンクは指定できるが、各バンクを均等にリフレッシュする必要がある。そのため、全バンクを1回リフレッシュしないと、各バンクは2回目のリフレッシュを発行できないという制約が有る。8バンク構成のDRAMにおいては、あるバンクに着目すると、最短で、2回連続で同じバンクをリフレッシュできる(タイミング700)。ただし、このように2回連続で同じバンクをリフレッシュした場合は、その次のリフレッシュは最短で8回後(タイミング701)になる。
【0032】
図8は、リフレッシュ管理テーブルの例を示す図である。リフレッシュ管理テーブルは、上述のLPDDR4のバンク指定のリフレッシュの制約を満たすために利用される。
図8に示されるように、あるバンクのリフレッシュを発行すると、当該バンクのフラグをセット(フラグ=1)するように構成され、フラグがセットされていない(フラグ=0である)バンクから、次のリフレッシュバンクを選択する。なお、全バンクにリフレッシュを発行し、全バンクのフラグがセット(フラグ=1)された場合は、全バンクのフラグはリセットされ、全バンクに対してリフレッシュを発行できる状態になる。
【0033】
図9は、リフレッシュ生成部が有するリフレッシュ状態カウンタを説明する図である。リフレッシュ状態カウンタは、DRAMに対するリフレッシュ発行状況が、先行リフレッシュ状態であるか、遅延リフレッシュ状態であるかを検知するためのカウンタである。
図9に示すように、リフレッシュ状態カウンタは、リフレッシュコマンドをDRAMに発行するとカウントアップし、リフレッシュ期間が経過するとカウントダウンするよう構成されている。すなわち、カウンタ値がプラス値を示す場合は、先行リフレッシュ状態であり、カウンタ値がマイナス値を示す場合は、遅延リフレッシュ状態である。
【0034】
図10は、リフレッシュ生成部が実行するリフレッシュ要求生成のフローチャートである。当該フローは、現在リフレッシュ実行中ではない場合に開始される。
【0035】
S1000では、リフレッシュ生成部は、先行リフレッシュ回数が所定回数以上であるか否かを判定し、所定回数以上である場合は判定を繰り返す。先行リフレッシュ回数が所定回数未満になるとS1001に進む。これは、DRAM仕様により、先行リフレッシュ回数は定められており、先行リフレッシュ回数が所定回数以上であれば、リフレッシュを停止する必要があるためである。なお、上述のように、リフレッシュ生成部は、リフレッシュ状態カウンタにより、現在のリフレッシュ発行状況が、先行リフレッシュ状態か、遅延リフレッシュ状態かを認識している。
【0036】
S1001では、リフレッシュ生成部は、遅延リフレッシュ回数が所定回数以上であるか否かを判定し、所定回数以上である場合はS1002に進み、所定回数未満である場合はS1004に進む。これは、DRAM仕様により、遅延リフレッシュ回数も定められているためである。
【0037】
S1002では、リフレッシュ生成部は、リフレッシュバンクを決定して、決定したバンクを強制リフレッシュ実施バンクとして記憶する。リフレッシュバンクを決定する際には、
図8で説明したリフレッシュ管理テーブルを確認し、フラグがセットされていない(フラグ=0である)バンクの中から1つのバンクを選択する。そして、S1003では、決定したバンクに対するリフレッシュ要求を生成する。
【0038】
遅延リフレッシュ回数が、所定回数未満の場合(S1001でNo)は、リフレッシュコマンド発行を急ぐ必要はなく、メモリアクセスに影響のない範囲でリフレッシュを発行すればよい。
【0039】
S1004では、リフレッシュ生成部は、
図6を用いて説明したアクセスパタンを確認し、リフレッシュ期間内のアクセスパタンがわかっているか否かを判定する。リフレッシュ期間内のアクセスパタンがわからない場合はS1005に進み、わかっている場合はS1009に進む。
【0040】
S1005では、リフレッシュ生成部は、先行リフレッシュ状態であるか否か確認する。これは、リフレシュを発行した後で、リフレッシュを実行中のバンクへのメモリアクセス要求を受信する場合を考慮する必要があるからである。先行リフレッシュ状態である場合は、リフレッシュ要求を生成しない。一方で、遅延リフレッシュ状態の場合はS1006に進む。
【0041】
S1006では、リフレッシュ生成部は、
図6で説明したリフレッシュ候補があるか否かを確認する。リフレッシュ候補がある場合はS1007に進み、リフレッシュ候補がない(フラグ=0のバンクが無い)場合はリフレッシュ要求を生成しない。
【0042】
S1007では、リフレッシュ生成部はリフレッシュバンクを決定し、S1008では、リフレッシュ生成部は決定したバンクに対するリフレッシュ要求を生成する。この場合のリフレッシュ候補は、
図8で説明したリフレッシュ管理テーブルを確認し、フラグがセットされていない(フラグ=0である)バンクである必要がある。ここで、複数のリフレッシュ候補から、リフレッシュバンクを決定するときに、遅延リフレッシュ状態で強制リフレッシュを発行したバンクを優先してもよい。これは、過去に強制リフレッシュを発行したバンクを優先してリフレッシュすることで、再び同じバンクに強制リフレッシュを発行することを避け、特定のバンクのメモリアクセスがリフレッシュの影響をうけることを抑制するためである。
【0043】
リフレッシュ期間内のアクセスパタンがわかっている場合(S1004でYes)は、先行リフレッシュか、遅延リフレッシュかによって処理を変える必要はない。
【0044】
S1009では、リフレッシュ生成部は、リフレッシュ候補があるか否かを確認する。リフレッシュ候補がある場合はS1010に進み、リフレッシュ候補がない(フラグ=0のバンクが無い)場合はリフレッシュ要求を生成しない。
【0045】
S1010では、リフレッシュ生成部はリフレッシュバンクを決定し、S1011では、リフレッシュ生成部は決定したバンクに対するリフレッシュ要求を生成する。この場合のリフレッシュ候補も、
図8で説明したリフレッシュ管理テーブルを確認し、フラグがセットされていない(フラグ=0である)バンクである必要がある。また、ここでも、複数のリフレッシュ候補から、リフレッシュバンクを決定するときに、遅延リフレッシュ状態で強制リフレッシュを発行したバンクを優先してもよい。
【0046】
以上説明したとおり第1実施形態によれば、メモリアクセスするバンクとリフレッシュバンクが重ならないようにリフレッシュ候補のバンクを決定し、バンク指定のリフレッシュを行う。この構成により、より効率的なメモリアクセスが可能となり、リフレッシュに起因するメモリアクセス性能の低下を抑制することが可能となる。
【0047】
(第2実施形態)
第2実施形態では、リフレッシュ候補の他の決定手法について説明する。具体的には、アクセスパタンに基づいて各時間期間のリフレッシュ候補を決定し、リフレッシュを優先するバンクを決定する形態について説明する。
【0048】
<装置構成>
図11は、第2実施形態に係るDRAM制御装置1100の構成を示す図である。DRAM制御装置1100は第1実施形態(
図3)と類似しているが、アクセスパタン生成部305の替わりにアクセスパタン格納部1106を含む点、リフレッシュ生成部1107がコマンド格納部1103の情報を取得する点、が主に異なる。
【0049】
アクセスパタン格納部1106は、コマンド格納部1103に格納されたアクセスコマンドを監視して、繰り返し発生するアクセスパタンを抽出して記憶する。
【0050】
リフレッシュ生成部1107は、リフレッシュ要求を生成する。具体的には、リフレッシュタイマ1105が通知する平均リフレッシュ期間、アクセスパタン格納部1106に記憶されたアクセスパタン、コマンド格納部1103に記憶されたアクセスコマンド、を比較して、リフレッシュ要求を生成する。
【0051】
すなわち、第2実施形態では、リフレッシュ生成部1107は、アクセスパタン格納部1106に格納されたアクセスパタンを更に使用してリフレッシュ候補を決定する。
【0052】
図12は、アクセスパタン格納部1106の構成を説明する図である。アクセスパタン格納部1106は、アクセスパタン候補生成部1200及びアクセスパタン記録部1206を有する。アクセスパタン候補生成部1200は、コマンド格納部を監視してアクセスパタンの候補を生成する。また、アクセスパタン記録部1206は、アクセスパタン候補生成部1200が生成したアクセスパタン候補を受信して、アクセスパタンを記録する。
【0053】
アクセスパタン候補生成部1200は、アクセスパタン候補制御部1201と、アクセスパタン候補バッファ1202で構成されている。アクセスパタン候補バッファ1202は、N個の記録領域を有する。各記録領域は、転送ID1203、アクセスコマンド1204と、カウンタ1205を記憶する。カウンタ1205は、記録した転送IDの転送が途切れてからの時間を計測するダウンカウンタである。
【0054】
アクセスパタン記録部1206は、記録制御部1207と、アクセスパタンバッファ1208で構成されている。アクセスパタンバッファ1208は、M個の記録領域を有する。各記録領域は、転送ID1209、アクセスパタン一致フラグ1210、アクセスパタン1211を記憶する。
【0055】
<装置の動作>
図13は、アクセスパタン候補生成部1200が実行する処理のフローチャートである。
図13(A)は、アクセスパタン候補を格納する、アクセスパタン候補バッファを決定するフローを示す。また、
図13(B)は、記録開始を指示された、アクセスパタン候補バッファ1202の記録領域への記録動作を説明する図である。
【0056】
S1300では、アクセスパタン候補制御部1201は、最初にバッファの空きがあるかを確認する。バッファの空きがなければ、繰り返し確認を実行し空くまで待機する。バッファの空きが出来たら、S1301に進む。S1301では、アクセスパタン候補制御部1201は、転送IDが変化したか否かを判定する。転送IDが変化していなければ、繰り返し判定を実行し変化するまで待機する。転送IDが変化したら、S1302に進む。S1302では、アクセスパタン候補制御部1201は、アクセスコマンドを記録するバッファを選択する。S1303では、アクセスパタン候補制御部1201は、選択した記録領域に対して、記録開始を指示する。
【0057】
S1350では、アクセスパタン候補バッファ1202は、アクセスコマンド記録開始の指示を受けると、最初に発生しているアクセスの転送IDを記録する。S1351では、アクセスパタン候補バッファ1202は、発生しているアクセスコマンドを順次記録してゆく。アクセスコマンドの記録は、記録した転送IDのアクセスが途切れない限り継続する。ここでは、アクセスされるバンク、リードとライトのどちらか、発生する転送の転送長を記録する。S1352では、アクセスパタン候補バッファ1202は、記録した転送IDのアクセスが途切れたか否かを判定する。途切れた場合はS1353に進み、途切れていない場合はS1351に戻り記録を続ける。ここで、「記録した転送IDのアクセスが途切れる」状態とは、「異なる転送IDのアクセスに切り替わった場合」と、「アクセスがなくなる場合」、の2通りを含む。
【0058】
S1353では、アクセスパタン候補バッファ1202は、記録した転送IDのアクセスが途切れたことを記録する。S1354では、アクセスパタン候補バッファ1202は、ダウンカウンタをリセットし、ダウンカウントを開始する。
【0059】
S1355では、アクセスパタン候補バッファ1202は、ダウンカウンタのカウント値が0になるとアクセスコマンドの記録を終了しS1357に進む。ダウンカウンタのカウント値が0になる前に、記録した転送IDの転送が再開した場合(S1356でYes)と、アクセスの記録(S1351)に戻る。
【0060】
S1357では、アクセスパタン候補バッファ1202は、アクセスコマンドの記録を停止して、アクセスパタン候補の生成を開始する。まず、記録したアクセスコマンドに、同じアクセスコマンドの繰り返しがあるかを判定する。同じアクセスコマンドの繰り返しがある場合はS1358に進み、繰り返しが無い場合はS1359に進む。S1358では、アクセスパタン候補バッファ1202は、繰り返し発生しているアクセスコマンドを抽出する。S1359では、アクセスパタン候補バッファ1202は、記録した転送IDの最後に発生したアクセスコマンドまでを抽出する。
【0061】
S1360では、アクセスパタン候補バッファ1202は、抽出された1以上のアクセスコマンドからなるシーケンスがアクセスパタン候補になるか否かを判定する。抽出されたシーケンスに対応するアクセス時間が短い場合など、アクセスと同時に実行するリフレッシュを判定できないと判断した場合は、アクセスパタン候補にならないと判断する。アクセスパタン候補になると判定した場合はS1362に進み、アクセスパタン候補にならないと判定した場合はS1361に進む。S1361では、アクセスパタン候補バッファ1202は、アクセスパタン候補なしとして、記録した情報をクリアして終了する。S1362では、アクセスパタン候補バッファ1202は、抽出されたシーケンスをアクセスパタン候補として決定し、記録した情報をクリアして終了する。
【0062】
図14は、記録されたアクセスコマンドとアクセスパタン候補の関係を説明する図である。
図14(A)で示すアクセスコマンドのシーケンスが記録された場合、アクセスコマンドの繰り返しは発生していないので、最後に記録された「アクセスが途切れる」部分を削除したシーケンス部分を、アクセスパタン候補とする。
図14(B)で示すアクセスコマンドのシーケンスが記録された場合、アクセスコマンドの繰り返しが発生しているので、この繰り返し発生するシーケンス部分をアクセスパタン候補とする。
【0063】
図15は、記録制御部1207が実行する処理のフローチャートである。
【0064】
S1500では、記録制御部1207は、決定されたアクセスパタン候補をアクセスパタンバッファ1208に格納する前に、アクセスパタン候補に含まれるアクセスコマンドのシーケンスをアクセスパタンの形式に変換する。シーケンスに含まれる各アクセスコマンドは、
図4を参照して説明したアクセスコマンドの形式で記録されている。すなわち、アクセスコマンドは、コマンド(リードとライトのどちらであるかを示す情報)、バンク、転送長、転送IDを含んでいる。また、「記録した転送IDのアクセスが途切れる」ことが合わせて記録されている。そこで、これら情報を使用して、アクセスパタン候補に含まれるアクセスコマンドのシーケンスをアクセスパタンの形式に変換する。
図16を参照して後述するが、アクセスパタンは、アクセスされるバンクとアクセス時間、「アクセスが途切れる」タイミングの情報、を含む。ここで示したアクセスパタンの形式は一例であり、他の形式を用いてもよい。例えば、更にアドレス情報を考慮することで、アクセスパタンの精度を上げることも可能である。
【0065】
S1501では、記録制御部1207は、新規に生成されたアクセスパタン候補の転送IDのアクセスパタンがアクセスパタンバッファ1208に記録済みかどうか確認する。記録済み(一致する転送IDが既に記録されている)の場合はS1502に進み、記録されていない場合はS1506に進む。
【0066】
S1502では、記録制御部1207は、記録されているアクセスパタンと、S1500での変換で得られたアクセスパタンを比較する。S1503では、記録制御部1207は、2つのアクセスパタンが一致するか否かを判定する。一致する場合はS1504に進み、一致しない場合はS1505に進む。S1504では、記録制御部1207は、アクセスパタン一致フラグをセット(フラグ=1)して終了する。このように、アクセスパタン一致フラグは、記録したアクセスパタンが複数回発生したことを示す。一方、S1505では、記録制御部1207は、該当の転送IDのアクセスパタンを消去して、S1500での変換で得られたアクセスパタンを記録せずに終了する。
【0067】
S1506では、記録制御部1207は、アクセスパタンバッファに空きがあるか否かを確認する。空きがあればS1508に進み、空きが無ければS1507に進む。S1507では、記録制御部1207は、消去する記録領域を決定し記録領域のデータを消去する。例えば、記録されているアクセスパタンの中で、途切れずに記録されたアクセスが相対的に短いアクセスパタンを消去する。S1508では、記録制御部1207は、アクセスパタンを記録領域に記録して終了する。アクセスパタンを記録するときには、アクセスパタン一致フラグをセットしない(フラグ=0)。
【0068】
図16は、アクセスパタンバッファ1208に記録される情報を説明する図である。図示されるように、格納される情報は、転送ID1600、アクセスパタン一致フラグ1602、アクセスパタン1601を含む。上述したように、アクセスパタン1601は、アクセスされるバンクとアクセス時間、「(該当する転送IDの)アクセスが途切れる」タイミングの情報、を含む。リフレッシュ候補を抽出する際には、アクセスパタン一致フラグがセットされた(フラグ=1の)転送IDのアクセスパタンだけを使用する。
【0069】
なお、
図16は一例であり、アクセスパタン一致フラグの代わりにパタン一致回数カウンタを使用してもよい。例えば、パタン一致回数カウンタは、アクセスパタン記録時にクリアされ、変換により得られたアクセスパタンと記録済みのアクセスパタンとが一致する場合にカウントアップする。この場合、所定の回数発生したアクセスパタンをリフレッシュ候補の抽出に使用する制御が可能になる。また、アクセスパタンバッファの記録領域に空きが無い場合に、記録済みの記録領域を選択してデータを消去する必要があるが、パタン一致カウンタのカウント値が小さいアクセスパタンを選択する制御も可能になる。
【0070】
図17は、第2実施形態におけるリフレッシュ候補の抽出方法を説明する図である。記録されたアクセスパタンには、該当する転送IDの転送が始まってから終わるまでの全期間のアクセスのパタンが記録されている。リフレッシュ生成部1107は、記録されたアクセスパタンが、現在どこまで進んでいるのかを、コマンド格納部1103を監視することで認識する。第2実施形態では、第1実施形態と比較して、より長い時間のアクセスパタンが生成できるため、これから発行する複数のリフレッシュに対するリフレッシュ候補から、リフレッシュを優先するバンク(以下、リフレッシュ優先)を決定する。
【0071】
図17に示すアクセスパタンは、アクセスパタンの記録領域に記録されたアクセスパタンから、すでに実行したアクセス分を削除することにより生成される「今後発生するアクセスパタン」を示したものである。
【0072】
まず、メモリアクセスと重ならないリフレッシュ候補を決定する。ここでは、アクセスパタンを、リフレッシュ時間で分割して、各時間期間におけるリフレッシュ候補を生成する。なお、記録した転送IDのアクセスが途切れる場合、それ以降の、リフレッシュ候補は生成しない。記録した転送IDのアクセスが途切れない限り、次のリフレッシュ時間に発生するアクセスを確認して、リフレッシュ候補を生成し続ける。そのため、
図17では、リフレッシュ候補1700~1702が生成される(リフレッシュ候補1704は「なし」)。
【0073】
次に、リフレッシュ候補1700の中から、リフレッシュ優先のバンク1703を決定する。これは、リフレッシュを後回しにしても、後のタイミングでリフレッシュできる可能性のあるバンクを除外することにより生成する。リフレッシュ候補1700に含まれるバンクのうち、バンク4、5、6は、次のタイミングでリフレッシュできる可能性があり、バンク0、1、2は、更にその次のタイミングでリフレッシュできる可能性がある。よって、最初のリフレッシュタイミングでのみリフレッシュ候補になる、バンク3、7をリフレッシュ優先のバンクとする。
【0074】
図18は、第2実施形態におけるリフレッシュ抽出のフローチャートである。
【0075】
S1800では、リフレッシュ生成部1107は、パラメータNを初期化する(N=0)。パラメータNは、
図17に示すような各時間期間を示すためのパラメータである。各時間期間の幅はリフレッシュ時間に相当する。S1801では、リフレッシュ生成部1107は、リフレッシュ時間までのアクセス情報があるか確認する。リフレッシュ時間までのアクセス情報が記録されていない場合や、リフレッシュ時間までに、記録した転送IDのアクセスが途切れる場合(S1801でNo)はS1802に進む。リフレッシュ時間までのアクセス情報がある場合は、S1803に進む。S1802では、リフレッシュ生成部1107は、リフレッシュ候補、リフレッシュ優先なしと判定し、処理を終了する。
【0076】
S1803では、リフレッシュ生成部1107は、(N+1)個目の時間期間(N×リフレッシュ時間~(N+1)×リフレッシュ時間)でアクセスされるバンクを調査する。たとえば、
図17の例では、1回目のループ(S1803~S1806)では、1個目の時間期間(時刻0から1リフレッシュ時間経過後の時刻)においてバンク0へのアクセスがあると判定される。
【0077】
S1804では、リフレッシュ生成部1107は、アクセスされないバンクを、(N+1)個目の時間期間でのリフレッシュ候補として決定する。たとえば、
図17の例では、1回目のループでは、1個目の時間期間においてバンク1~7の7個がリフレッシュ候補として決定される。
【0078】
S1805では、リフレッシュ生成部1107は、パラメータNをインクリメント(1加算)する。S1806では、リフレッシュ生成部1107は、次の時間期間においてアクセス情報があるか否かを確認する。すなわち、アクセスが途切れているか否かを確認する。次の時間期間においてアクセス情報がある場合はS1803に戻り、次の時間期間でのリフレッシュ候補を決定する。このように、パラメータNを加算しながら、他IDの転送の割り込みも無く、記録した転送IDのアクセスがある限り、リフレッシュ候補の決定を繰り返す。たとえば、
図17の例では、1回目及び2回目のループにおいては後続の時間期間においてアクセス情報があるため次のループに進むが、3回目のループにおいては後続の時間期間においてアクセス情報がないためS1807に進む。
【0079】
S1807では、リフレッシュ生成部1107は、各時間期間に対して決定されたリフレッシュ候補に基づいて、リフレッシュ優先のバンクを決定し、処理を終了する。たとえば、
図17の例では、3つの時間期間におけるリフレッシュ候補に基づいて、リフレッシュ優先のバンクとしてバンク3,7を決定する。なお、1つのリフレッシュ候補だけからリフレッシュ優先バンクを決定する場合は、リフレッシュ候補とリフレッシュ優先とを同じにしてもよい。
【0080】
以上説明したとおり第2実施形態によれば、第1実施形態と同様にリフレッシュ候補の中からリフレッシュバンクを決定する。特に、第2実施形態では、各時間期間のリフレッシュ候補に基づいてリフレッシュ優先のバンクを決定し、リフレッシュ優先のバンクからリフレッシュバンクを決定する。この構成により、より効率的なメモリアクセスが可能となり、リフレッシュに起因するメモリアクセス性能の低下を抑制することが可能となる。
【0081】
なお、上述の説明では、アクセスパタンバッファに設定するアクセスパタンを、アクセスパタン候補生成部1200が生成するアクセスパタン候補から生成すると説明した。しかし、他の手法、例えば、レジスタアクセス等の方法でユーザがアクセスパタンバッファを直接設定してもよい。
【0082】
また、上述の説明では、転送IDに関連付けて繰り返し発生するアクセスパタンを記録し、メモリアクセスするバンクとリフレッシュバンクが重ならないリフレッシュ候補のバンクを決定した。ただし、転送IDごとに常に同じアクセス要求が行われる場合は、アクセスパタンが生成されるが、転送IDに対して、異なるアクセス要求が発生する場合も考えられる。その場合は、アクセス要求ごとに異なる転送IDが生成されるように転送IDを変換する外部ロジックをイニシエータとDRAM制御装置の間に配置することで対応可能である。
【0083】
また、転送IDに関連させて記憶するアクセスパタンの情報を追加することで、同一の転送IDに対して2種類のアクセスパタンを記録するようにしてもよい。例えば、同じ転送IDで2種類のアクセス要求が発行される場合に、最初にアクセスされるアドレスが異なる場合は、最初のアクセス要求のアドレスを記録する。これにより、同一転送IDの2種類のアクセスパタンを区別して管理することが可能となる。
【0084】
また、記録した転送IDの転送が開始されると、すぐにリフレッシュ候補を決定せずに、記録したアクセスパタン通りの転送が発生しているかを一定の期間確認した後に、リフレッシュ候補を決定するフローにしてもよい。これにより、記録したアクセスパタン以外のアクセスが発生した場合に、メモリアクセスするバンクとリフレッシュバンクが重なることを防止できる。
【0085】
(第3実施形態)
第3実施形態では、リフレッシュ候補の更に他の決定手法について説明する。具体的には、バンクごとのリードコマンドとライトコマンドの合計数に基づいてリフレッシュを優先するバンクを決定する形態について説明する。また、バンク指定のリフレッシュを実行中か否かで、メモリアクセス要求の発行順の制御方法を切り替える形態について説明する。
【0086】
<装置構成>
図19は、第3実施形態に係るDRAM制御装置1900の構成を示す図である。DRAM制御装置1100は第1実施形態(
図3)と類似しているが、アクセスパタン生成部305が存在しない点、リフレッシュ生成部1906がコマンド格納部1903の情報を取得する点、が主に異なる。また、コマンド格納部1903は、リフレッシュ生成部1906とコマンド発行部1904との間の通信を確認可能に構成される。
【0087】
コマンド格納部1903は、リフレッシュ生成部1906が生成したリフレッシュ要求と、コマンド発行部1904が通知するリフレッシュ応答を監視して、リフレッシュ実行中のバンクを認識するよう構成されている。コマンド格納部1903は、バスI/F1902が生成するアクセスコマンドを複数個保持するバッファを有する。コマンド格納部1903は、リフレッシュの実行状況を含むDRAM1901の状態やメモリアクセス要求の緊急度に応じて、コマンドの発行順を制御する。コマンド格納部1903は、バッファにアクセスコマンドが格納されると、コマンド発行部1904に対してアクセスコマンドが準備できたことを通知し、コマンド発行部1904の応答に応じて、アクセスコマンドをコマンド発行部1904に送信する。
【0088】
リフレッシュ生成部1906は、リフレッシュ要求を生成する。具体的には、リフレッシュタイマ1905が通知する平均リフレッシュ期間、及びコマンド格納部1903に記憶されたアクセスコマンドに応じて、バンク指定のリフレッシュ要求を生成する。
【0089】
コマンド発行部1904は、コマンド格納部1903からローアドレス単位のアクセスコマンドを受信して、応答を送信する。受信したローアドレス単位のアクセスコマンドから、DRAM1901をアクセスするための、DRAMアクセスコマンドを生成する。また、リフレッシュ生成部1906が生成したバンク単位のリフレッシュ要求に応じて、DRAM1901をリフレッシュするためのリフレッシュコマンドを生成する。また、コマンド発行部1904は、DRAMアクセスコマンド及びリフレッシュコマンドの発行タイミングを調整して、DRAM301にDRAMコマンドを発行する。リフレッシュコマンドを発行した際は、リフレッシュ生成部1906に対してリフレッシュ応答を送信する。
【0090】
<装置の動作>
図20は、第3実施形態におけるリフレッシュ要求生成のフローチャートである。当該フローは、現在リフレッシュ実行中ではない場合に開始される。リフレッシュ生成部1906は、
図9で説明したリフレッシュ状態カウンタにより、現在のリフレッシュ発行状況が、先行リフレッシュ状態か、遅延リフレッシュ状態かを認識している。
【0091】
S2000では、リフレッシュ生成部は、先行リフレッシュ回数が所定回数以上であるか否かを判定し、所定回数以上である場合は判定を繰り返す。先行リフレッシュ回数が所定回数未満になるとS2001に進む。
【0092】
S2001では、リフレッシュ生成部は、コマンド格納部に格納されているアクセスコマンドの、アドレス情報及びバースト長の情報から、バンクごとに、発行するリードコマンドとライトコマンドの合計数を計算する。すなわち、アクセスコマンド(リードコマンドとライトコマンド)による各バンクへのアクセス回数を計算する。
【0093】
S2002では、リフレッシュ生成部は、リフレッシュ候補を決定する。より具体的には、リフレッシュ候補を、バンクごとに計算した、注目バンク以外のバンクに対するリードコマンドとライトコマンドの合計数によって決定する。
【0094】
S2003では、リフレッシュ生成部は、リフレッシュ候補があるか否かを判定する。リフレッシュ候補がある場合はS2007に進み、無い場合は、リフレッシュの発行を待つか、リフレッシュを発行するかを判断する必要があるためS2004に進む。
【0095】
S2004では、リフレッシュ生成部は、遅延リフレッシュ回数が所定回数以上かどうかを判定する。これは、DRAM仕様により、遅延リフレッシュ回数が定められているためである。遅延リフレッシュ回数が所定回数以上であればS2005に進み、所定回数未満であればリフレッシュコマンド発行を急ぐ必要はなく、リフレッシュ要求を生成せずに処理を終了する。
【0096】
S2005では、リフレッシュ生成部は、リフレッシュバンクを決定して、決定したバンクを強制リフレッシュ実施バンクとして記憶する。ここで、リフレッシュバンクを決定する際には、
図8で説明したリフレッシュ管理テーブルを確認し、フラグがセットされていない(フラグ=0である)バンクの中から、1つのバンクを選択する。
【0097】
S2006では、リフレッシュ生成部は、リフレッシュバンクに対して、リフレッシュ要求を生成し、コマンド発行部に通知する。そして、応答を待ち、処理を終了する。
【0098】
S2007では、リフレッシュ生成部は、リフレッシュ候補がリフレッシュ可能か否かを判定する。当該判定は、
図8で説明したリフレッシュ管理テーブルを確認し、フラグがセットされていない(フラグ=0である)バンクか否かに基づいて行う。リフレッシュ可能である場合はS2008に進み、リフレッシュが不可能である場合は遅延リフレッシュを発行する必要があるかを判定するためにS2004に進む。
【0099】
S2008では、リフレッシュ生成部は、リフレッシュバンクを決定する。なお、遅延リフレッシュ状態で強制リフレッシュを発行したバンクを優先してもよい。これは、過去に強制リフレッシュを発行したバンクを優先してリフレッシュすることで、再び同じバンクに強制リフレッシュを発行することを避け、特定のバンクのメモリアクセスがリフレッシュの影響をうけることを抑制するためである。
【0100】
S2009では、リフレッシュ生成部は、リフレッシュバンクに対して、リフレッシュ要求を生成し、コマンド発行部に通知する。そして、応答を待ち、処理を終了する。
【0101】
図21は、第3実施形態におけるリフレッシュ候補の決定方法を説明する図である。
【0102】
リフレッシュ生成部は、コマンド格納部に格納されているアクセスコマンドのアドレス情報及びバースト長の情報から、バンクごとに、リードコマンドとライトコマンドの合計数2101を計算する。同様に、バンクごとに、他のバンクのリードコマンドとライトコマンドの合計数2102を計算する。
図21の例では、バンク0以外(すなわちバンク1~バンク7)にアクセスするリードコマンドとライトコマンドの合計数は「54」である。最後に、リフレッシュ生成部は、リフレッシュの優先度2103を決定する。
【0103】
例えば、あるバンクのリフレッシュ実行中に、並行して他のバンクへ発行可能なリードコマンドとライトコマンドの数が「50」であるとする。その場合、他のバンクへのリードコマンドとライトコマンドの合計数が50を超えるバンクをリフレッシュバンクにすると、リフレッシュと並行して当該他のバンクのリードコマンドとライトコマンドを絶え間なく発行することが可能となる。つまり、リフレッシュのメモリアクセス性能の低下を抑制することができる。よって、他バンクのリードコマンドとライトコマンドの数が50より多いバンクがリフレッシュ候補となる。
【0104】
また、リフレッシュ候補(コマンドの合計数が50を超えるバンク)が複数存在する場合、他バンクへのリードコマンドとライトコマンドの数がより多いバンクの優先度が高くなる。
図21の例では、リフレッシュ候補のうち、他バンクへのリードコマンドとライトコマンドの合計数が最大である「バンク2」の優先度が最も高い。また、リフレッシュ候補の中で合計数が最小である「バンク3」の優先度が低くなる。バンク1、4、7は、リフレッシュの途中で発行可能なリードコマンドとライトコマンドを全て発行してしまい、リフレッシュが終わるまで、リードコマンドとライトコマンドが発行できなくなる可能性があるため、リフレッシュ候補にはならない。
【0105】
なお、コマンド格納部のバッファが空になった場合は、メモリアクセスがない状態となるため、リフレッシュによるメモリアクセス性能の低下を考慮する必要がないので、全バンクをリフレッシュ候補とする。
【0106】
図22は、第3実施形態におけるアクセスコマンドの発行順制御のフローチャートである。DRAM制御装置では、受信したメモリアクセス要求の順番を入れ替える機能を備えるものがある。これは、DRAMアクセスの効率を向上する目的や、緊急度に応じたメモリアクセス要求を実現する目的で利用される。そこで、第3実施形態では、バンク指定のリフレッシュを実行中か否かで、メモリアクセス要求の発行順の制御方法を切り替える。本フローは、コマンド発行部に対してアクセスコマンドが格納されたことを通知する際と、DRAMコマンドの発行によりDRAMの状態が変わった場合に開始される。
【0107】
S2200では、コマンド格納部は、リフレッシュ生成部とコマンド発行部のリフレッシュ要求、応答を監視してバンク指定のリフレッシュを実行中かどうか認識する。バンク指定のリフレッシュを実行中の場合はS2201に進み、バンク指定のリフレッシュを実行中でない場合はS2202に進む。
【0108】
S2201では、コマンド格納部は、コマンド発行部に対して、アクセスコマンドの発行順制御を、リフレッシュバンク以外のバンクに対するメモリアクセス要求を優先するように制御する。すなわち、リフレッシュバンクに対するメモリアクセス要求を出力しないようにする。S2202では、コマンド格納部は、コマンド発行部に対して、アクセスコマンドの発行順制御を、全てのメモリアクセス要求を対象とするように制御する。
【0109】
アクセスコマンドの発行順制御においては、メモリアクセス性能が低下しないメモリアクセス要求を優先するが、緊急度の高いメモリアクセス要求を優先してもよい。
【0110】
以上説明したとおり第3実施形態によれば、メモリアクセスに影響がないバンクを選択してバンク指定のリフレッシュを行う。また、リフレッシュ実行状況に応じて、メモリアクセス要求の順番を入れ替える。この構成により、より効率的なメモリアクセスが可能となり、リフレッシュに起因するメモリアクセス性能の低下を抑制することが可能となる。
【0111】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0112】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0113】
300 DRAM制御装置; 301 DRAM; 302 バスインターフェース; 303 コマンド格納部; 304 コマンド発行部; 305 アクセスパタン生成部; 306 リフレッシュタイマ; 307 リフレッシュ生成部