(57)【要約】【課題】ＲＯＷのアクティベートに制限がある場合でもメモリアクセス性能の低下を抑制または除去する。【解決手段】メモリコントローラは、ＤＲＡＭを制御するメモリコントローラであって、複数のメモリアクセス要求を保持するコマンドキューと、ＤＲＡＭのＲＯＷアドレスのアクティベートの頻度を保持する頻度保持手段と、コマンドキューによって保持される複数のメモリアクセス要求のなかから発行対象のメモリアクセス要求を、頻度保持手段によって保持される頻度に応じて選択する選択手段と、を備える。【選択図】図１
2018081642.tif 000002
【特許請求の範囲】
【請求項１】
ＤＲＡＭを制御するメモリコントローラであって、
複数のメモリアクセス要求を保持するコマンドキューと、
ＤＲＡＭのＲＯＷアドレスのアクティベートの頻度を保持する頻度保持手段と、
前記コマンドキューによって保持される複数のメモリアクセス要求のなかから発行対象のメモリアクセス要求を、前記頻度保持手段によって保持される頻度に応じて選択する選択手段と、を備えるメモリコントローラ。
【請求項２】
前記選択手段によって選択されたメモリアクセス要求に含まれるＲＯＷアドレスをアクティベートするためのコマンドを生成する生成手段と、
前記生成手段によって生成されたコマンドに基づいて、前記頻度保持手段によって保持される頻度を更新する更新手段と、をさらに備える請求項１に記載のメモリコントローラ。
【請求項３】
ＲＯＷアドレスのアクティベートに関する基準が満たされると、前記ＤＲＡＭに、基準を満たしたＲＯＷアドレスの隣のＲＯＷアドレスをリフレッシュさせるリフレッシュ手段をさらに備え、
前記選択手段は、前記リフレッシュ手段によるリフレッシュの発生を抑制するように発行対象のメモリアクセス要求を選択する請求項１または２に記載のメモリコントローラ。
【請求項４】
前記リフレッシュ手段は、前記頻度保持手段によって保持されるＲＯＷアドレスのアクティベートの頻度が所定のしきい値に達すると、該ＲＯＷアドレスの隣のＲＯＷアドレスをリフレッシュさせ、
前記選択手段は、ＲＯＷアドレスのアクティベートの頻度が平準化されるように発行対象のメモリアクセス要求を選択する請求項３に記載のメモリコントローラ。
【請求項５】
前記頻度保持手段は、アクティベートされたＲＯＷアドレスと該ＲＯＷアドレスのアクティベートの頻度とを対応付けて保持可能なエントリを有するカウンタを含む請求項１から４のいずれか１項に記載のメモリコントローラ。
【請求項６】
前記カウンタに保持されるＲＯＷアドレスは、所定の期間よりも短い間隔でアクティベートされたＲＯＷアドレスであり、
前記所定の期間は、特定のＲＯＷアドレスを前記所定の期間より長い間隔でアクティベートしている限り、前記特定のＲＯＷアドレスの隣のＲＯＷアドレスに保持されるデータが破損しないことを保証できる期間である請求項５に記載のメモリコントローラ。
【請求項７】
前記選択手段は、前記カウンタの複数のエントリに空きが無い場合、前記カウンタに保持されているＲＯＷアドレスへのメモリアクセス要求を優先して選択し、前記カウンタのエントリに空きが有る場合、前記カウンタに保持されていないＲＯＷアドレスへのメモリアクセス要求を優先して選択する請求項５または６に記載のメモリコントローラ。
【請求項８】
前記選択手段は、前記カウンタに保持されているＲＯＷアドレスへのメモリアクセス要求を優先して選択する場合、アクティベートの頻度が低いＲＯＷアドレスへのメモリアクセス要求を優先して選択する請求項７に記載のメモリコントローラ。
【請求項９】
前記ＤＲＡＭはＬＰＤＤＲ４  ＳＤＲＡＭに準拠する請求項１から８のいずれか１項に記載のメモリコントローラ。
【請求項１０】
ＤＲＡＭを制御する方法であって、
複数のメモリアクセス要求をコマンドキューに格納することと、
ＤＲＡＭのＲＯＷアドレスのアクティベートの頻度を頻度保持手段に格納することと、
前記コマンドキューによって保持される複数のメモリアクセス要求のなかから発行対象のメモリアクセス要求を、前記頻度保持手段によって保持される頻度に応じて選択することと、を含む方法。
【請求項１１】
コンピュータを請求項１乃至９のいずれか１項に記載のメモリコントローラの各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラおよび方法に関する。
【背景技術】
【０００２】
近年、ＤＲＡＭの製造プロセスの微細化により、隣接するＲＯＷ同士のクロストーク等の電気的な影響が大きくなり、そのためアクセスが集中したＲＯＷに隣接するＲＯＷのデータが破損しやすくなるという課題が顕在化している。ＬＰＤＤＲ４ ＳＤＲＡＭは、一定期間内にあるＲＯＷをアクティベートできる回数（ＭＡＣ）を定義している。ＭＡＣに関して、あるＲＯＷに着目した場合、そのＲＯＷは両隣のＲＯＷからの電気的な影響を受けるため、一定期間内に両隣のＲＯＷをアクティベートした回数の合計がＭＡＣを超えてはいけない。あるＲＯＷを一定期間内にアクティベートした回数がＭＡＣに達した場合、メモリコントローラはそのＲＯＷに隣接するＲＯＷのＤＲＡＭセルをリフレッシュする必要がある。そのため、あるＲＯＷを指定し、その両隣をリフレッシュするターゲットＲＯＷリフレッシュ（ＴＲＲ）を実行するか、隣接するＲＯＷがリフレッシュされるまで待たなければいけない（非特許文献１参照）。
【０００３】
ところが、ＬＰＤＤＲ４ ＳＤＲＡＭにおけるＲＯＷの数は、最小容量である４Ｇｂｉｔの場合でもチャネルあたり１３１Ｋ個である。各ＲＯＷが一定期間内にアクティベートされる回数をカウントするためには、１３１Ｋ個のカウンタが必要となり、メモリコントローラの回路面積と消費電力が増大するという課題がある。
【０００４】
この課題に関連する技術が、特許文献１に記載されている。特許文献１では、メモリコントローラはＤＲＡＭ内で物理的に隣接するＲＯＷを把握できないことを前提として、あるＲＯＷに一定期間（ｔＲＥＦＷ×２）内にアクティベートできる回数をＭＡＣ／２としている。また、あるＲＯＷに対するｔＲＥＦＷ×２期間内のアクティベート回数がＭＡＣ／２を超えないアクティベートの平均間隔であるｔＲＣＲＯＷ＝（ｔＲＥＦＷ×２）／（ＭＡＣ／２）を定義している。そして、メモリコントローラはｔＲＣＲＯＷよりも短い間隔でアクティベートされたＲＯＷを検出する第１カウンタを備える。さらに、メモリコントローラは、ｔＲＣＲＯＷよりも短い間隔でアクティベートされたＲＯＷが、ｔＲＣＲＯＷ間隔のアクティベート回数に対して、何回多くアクティベートされたかをカウントする第２カウンタを備える。メモリコントローラは第２カウンタのカウント値が一定の値に達したＲＯＷに対して、ＴＲＲを実行する、或いは、一定期間のアクティベートを抑制する。これにより、少ないカウンタの数で、アクセスの集中に起因するデータ破損を防止しようとしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１３３１１９号公報
【非特許文献】
【０００６】
【非特許文献１】ＪＥＤＥＣ ＳＴＡＮＤＡＲＤ ＬＰＤＤＲ４ ＪＥＳＤ２０９−４Ａ
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載のメモリコントローラは、あるＲＯＷがｔＲＣＲＯＷ間隔のアクティベート回数に対して、一定回数多くアクティベートされると、該当のＲＯＷに対してＴＲＲを実行する、或いは、一定期間のアクティベートを抑制する。しかしながら、このような処理によると、メモリアクセスが出来ない期間が発生し、メモリアクセスの応答性が低下する虞がある。
【０００８】
本発明はこうした課題に鑑みてなされたものであり、その目的は、ＲＯＷのアクティベートに制限がある場合でもメモリアクセス性能の低下を抑制または除去できるメモリコントローラまたはそれを制御する方法の提供にある。
【課題を解決するための手段】
【０００９】
本発明のある態様はメモリコントローラに関する。このメモリコントローラは、ＤＲＡＭを制御するメモリコントローラであって、複数のメモリアクセス要求を保持するコマンドキューと、ＤＲＡＭのＲＯＷアドレスのアクティベートの頻度を保持する頻度保持手段と、コマンドキューによって保持される複数のメモリアクセス要求のなかから発行対象のメモリアクセス要求を、頻度保持手段によって保持される頻度に応じて選択する選択手段と、を備える。
【発明の効果】
【００１０】
本発明によれば、ＲＯＷのアクティベートに制限がある場合でもメモリアクセス性能の低下を抑制または除去できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係るメモリコントローラの機能及び構成を示すブロック図。
【図２】図１の第１カウンタの説明図。
【図３】図１の第１カウンタの動作の説明図。
【図４】図１の第２カウンタの説明図。
【図５】図１の第２カウンタのあるエントリの動作を説明する図。
【図６】図１の選択部における選択処理の流れを示すフローチャート。
【図７】ある時刻における、頻度保持部およびコマンドキューの状態を示す図。
【図８】第２の実施の形態に係るカウンタの説明図。
【図９】図８のカウンタの動作を説明する図。
【図１０】第２の実施の形態に係る選択部における選択処理の流れを示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、各図面に示される同一または同等の構成要素、部材、処理、信号には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【００１３】
実施の形態に係るメモリコントローラは、コマンドキューからメモリアクセス要求をランダムに選んだりＦＩＦＯ（First In First Out）で選んだりするのではなく、ＲＯＷアドレスのアクティベートの頻度が平準化されるように選ぶ。これにより、アクティベートの抑制やＴＲＲを行うための基準が満たされにくくなるので、メモリアクセス性能の低下を抑制または除去できる。
【００１４】
（第１の実施の形態）
図１は、第１の実施の形態に係るメモリコントローラ１００の機能及び構成を示すブロック図である。メモリコントローラ１００は、コマンドキュー１０１と、選択部１０２と、発行部１０３と、頻度保持部１０４と、更新部１０７と、リフレッシュ制御部１０８と、を備える。メモリコントローラ１００は、ＤＲＡＭ１１０に接続され、ＤＲＡＭ１１０にＤＲＡＭコマンドＣＭＤを送信することでＤＲＡＭ１１０を制御する。ＤＲＡＭ１１０は、メモリコントローラ１００から受信したＤＲＡＭコマンドＣＭＤに従い、動作する。ＤＲＡＭ１１０はＬＰＤＤＲ４  ＳＤＲＡＭに準拠する。
【００１５】
メモリコントローラ１００は、例えば外部のＣＰＵなどからメモリアクセス要求ＭＡＲを受信すると、受信したメモリアクセス要求ＭＡＲを、コマンドキュー１０１に格納する。コマンドキュー１０１は、複数のメモリアクセス要求を保持する手段として機能する。
【００１６】
選択部１０２は、コマンドキュー１０１によって保持される複数のメモリアクセス要求のなかから発行対象のメモリアクセス要求を、頻度保持部１０４によって保持される頻度に応じて選択する。選択部１０２は、頻度保持部１０４に含まれるカウンタの状態に基づいて、コマンドキュー１０１に格納されたメモリアクセス要求を選択する。選択部１０２は、選択されたメモリアクセス要求をコマンドキュー１０１から取り出し、発行部１０３に送信する。
【００１７】
発行部１０３は、選択部１０２によって選択されたメモリアクセス要求に含まれるＲＯＷアドレスをアクティベートするためのＤＲＡＭコマンドＣＭＤを生成する。発行部１０３は、選択部１０２から受信したメモリアクセス要求を、ＤＲＡＭ１１０が受信出来るＤＲＡＭコマンドＣＭＤに変換してＤＲＡＭ１１０に送信する。
【００１８】
頻度保持部１０４は、ＤＲＡＭ１１０のＲＯＷアドレスのアクティベートの頻度を保持する。頻度保持部１０４は、第１カウンタ１０５と、第２カウンタ１０６と、を含む。頻度保持部１０４の詳細は後述する。
【００１９】
更新部１０７は、発行部１０３によって生成されたＤＲＡＭコマンドＣＭＤに基づいて、頻度保持部１０４によって保持される頻度を更新する。更新部１０７は、発行部１０３が発行するＤＲＡＭコマンドＣＭＤのうち、アクティブコマンドを監視し、ＤＲＡＭ１１０のＲＯＷアドレスのアクティベートを検出すると頻度保持部１０４を更新する。
【００２０】
リフレッシュ制御部１０８は、ＲＯＷアドレスのアクティベートに関する基準が満たされると、ＤＲＡＭ１１０に、基準を満たしたＲＯＷアドレスの隣のＲＯＷアドレスをリフレッシュさせる。リフレッシュ制御部１０８は、頻度保持部１０４によって保持されるＲＯＷアドレスのアクティベートの頻度が所定のしきい値に達すると、ＤＲＡＭ１１０に、該ＲＯＷアドレスの隣のＲＯＷアドレスをリフレッシュさせる。またはリフレッシュ制御部１０８は、該ＲＯＷアドレスの隣のＲＯＷアドレスがリフレッシュされるまで該ＲＯＷアドレスのアクティベートを抑制する。より具体的には、リフレッシュ制御部１０８は、頻度がしきい値に達したＲＯＷに対してＴＲＲを実行するためのＤＲＡＭコマンドＣＭＤを発行部１０３に生成させる。
【００２１】
図２は、図１の第１カウンタ１０５の説明図である。パラメータｔＲＣは、ＤＲＡＭ１１０において同一のバンク内のＲＯＷをアクティベートしていく場合のあるアクティベートと次のアクティベートとの最短間隔として定義される。例えば、ｔＲＣＲＯＷが６４０ｎｓ、ｔＲＣが５０ｎｓの場合、ｔＲＣＲＯＷ期間に同一のバンク内のＲＯＷをアクティベートすることができる回数は、６４０／５０=１２．８回である。したがって、第１カウンタ１０５のエントリ数は１３に設定される。各エントリは、アクティベートされたＲＯＷアドレスと、アクティベートからｔＲＣＲＯＷ経過するまでの残り時間を示すダウンカウンタと、を含む。第１カウンタ１０５は、ＤＲＡＭ１１０のバンクごとに個別に用意される。
【００２２】
図３は、図１の第１カウンタ１０５の動作の説明図である。時刻Ｔ１にＤＲＡＭ１１０にアクティベートが発行されると、第１カウンタ１０５の第１エントリに、アクティベートされたＲＯＷアドレスが登録され、併せて第１エントリのダウンカウンタにｔＲＣＲＯＷである６４０ｎｓがセットされる（３０１）。次に、時刻Ｔ２にＤＲＡＭ１１０にアクティベートが発行されると、第１カウンタ１０５の第２エントリに、アクティベートされたＲＯＷアドレスが登録され、併せて第２エントリのダウンカウンタにｔＲＣＲＯＷである６４０ｎｓがセットされる（３０２）。このとき、第１エントリのダウンカウンタはカウントダウンを行っており、該ダウンカウンタが示す残り時間は６４０ｎｓより小さい。このように、アクティベートが発行されると、第１カウンタ１０５のエントリにＲＯＷアドレスが登録され、ダウンカウンタに初期値ｔＲＣＲＯＷがセットされる。
【００２３】
エントリにＲＯＷアドレスがセットされてｔＲＣＲＯＷ経過すると、ダウンカウンタの値は０になり、ダウンカウンタの値が０になると、そのエントリからＲＯＷアドレスが削除される（３０３）。図３は、アクティベートが最短間隔である５０ｎｓ間隔で発生した場合を示す。ここに示すように、時刻Ｔ１４の前に第１エントリは空になり、時刻Ｔ１４でＤＲＡＭ１１０にアクティベートが発行されると、第１エントリにその情報がセットされる。
【００２４】
これまでの説明は、第１カウンタ１０５に保持されているＲＯＷアドレスと、アクティベートが発行されたＲＯＷアドレスとが異なる場合の説明である。ｔＲＣＲＯＷ期間に同一のＲＯＷアドレスが複数回アクティベートされた場合、第１カウンタ１０５に保持されているＲＯＷアドレスと、アクティベートが発行されたＲＯＷアドレスとが一致する。すると、そのように一致したＲＯＷアドレスはエントリから削除される。削除されたＲＯＷアドレスのアクティベート回数は、第２カウンタ１０６で管理される。
【００２５】
図４は、図１の第２カウンタ１０６の説明図である。第２カウンタ１０６のエントリ数は、メモリアクセスの集中度合いで決定してもよいが、本実施の形態では、エントリ数を４とする。各エントリは、ｔＲＣＲＯＷ期間に複数回アクティベートされたＲＯＷアドレスと、そのＲＯＷアドレスのアクティベートの頻度と、を対応付けて保持することができる。ＲＯＷアドレスのアクティベートの頻度は、ｔＲＣＲＯＷ間隔のアクティベートに対して、先行してアクティベートされた数として表される。図４は、第２カウンタ１０６がＤＲＡＭ１１０のバンクごとに個別に用意される場合を示しているが、ＤＲＡＭ１１０のバンクごとに用意しない場合は、各エントリがＲＯＷアドレスと対になるバンクアドレスも保持すればよい。
【００２６】
第２カウンタ１０６に保持されるＲＯＷアドレスは、ｔＲＣＲＯＷ期間よりも短い間隔でアクティベートされたＲＯＷアドレスである。なお、ｔＲＣＲＯＷ期間は、特定のＲＯＷアドレスをｔＲＣＲＯＷ期間より長い間隔でアクティベートしている限り、特定のＲＯＷアドレスの隣のＲＯＷアドレスに保持されるデータが破損しないことを保証できる期間である。
【００２７】
図５は、図１の第２カウンタ１０６のあるエントリの動作を説明する図である。図５において、時刻Ｔ０から時刻Ｔ４の各時刻におけるアクティベートは、同一のＲＯＷアドレスに対して発行される。時刻Ｔ０でＲＯＷアドレスに対してアクティベートが発行されると、そのＲＯＷアドレスは第１カウンタ１０５に登録される。時刻Ｔ０からｔＲＣＲＯＷ経過した後の時刻よりも前の時刻Ｔ１で、同一のＲＯＷアドレスがアクティベートされると、第１カウンタ１０５からそのＲＯＷアドレスは削除され、第２カウンタ１０６にそのＲＯＷアドレスが登録される。ここで、第２カウンタ１０６において、ｔＲＣＲＯＷに対する先行アクティベート数として２が設定される。
【００２８】
時刻Ｔ１からｔＲＣＲＯＷ経過するまでに時刻Ｔ２、時刻Ｔ３で同一のＲＯＷアドレスがアクティベートされ、そのたびに先行アクティベート数に１が加算される。時刻Ｔ１からｔＲＣＲＯＷ経過した後の時刻Ｔ４で、先行アクティベート数から１が減算される。このように、ｔＲＣＲＯＷ経過するごとに先行アクティベート数から１が減算される。また、時刻Ｔ４の後の時刻Ｔ５で同一のＲＯＷアドレスがアクティベートされ、先行アクティベート数に１が加算される。先行アクティベート数が０になると、該当のエントリはクリアされる。なお、本実施の形態では１を減算する場合を説明するが、減算する値は２、３、４等の任意の値であってもよい。なお、加算する値と減算する値とは、同じである必要がある。
【００２９】
先行アクティベート数が、予め定めたしきい値に達した場合、リフレッシュ制御部１０８は該当のＲＯＷアドレスにＴＲＲを実行するためのＤＲＡＭコマンドＣＭＤを発行部１０３に生成させる。第２カウンタ１０６は、該当のＲＯＷアドレスにＴＲＲが実行されると該当のエントリをクリアする。または、リフレッシュ制御部１０８は、先行アクティベート数が０になるまで該当のＲＯＷアドレスに対するアクティベートを抑制する。他の実施の形態では、リフレッシュ制御部は、先行アクティベート数が０より大きい閾値以下になるまで該当のＲＯＷアドレスに対するアクティベートを抑制してもよい。
【００３０】
また、第２カウンタ１０６にＲＯＷアドレスを登録する際に、第２カウンタ１０６のエントリに空きが無い場合は、リフレッシュ制御部１０８はＴＲＲを実行するためのＤＲＡＭコマンドＣＭＤを発行部１０３に生成させる。第２カウンタ１０６は、ＴＲＲが実行されたＲＯＷアドレスを第２カウンタ１０６のエントリから削除することで第２カウンタ１０６のエントリを空け、空いたエントリに新しいＲＯＷアドレスを登録する。この際、リフレッシュ制御部１０８は、第２カウンタ１０６に登録されたＲＯＷアドレスのうち、先行アクティベート数が最も多いＲＯＷアドレスをＴＲＲ対象として選択する。これにより、第２カウンタ１０６の先行アクティベート数の最大値を抑制することが可能となる。なお、ＴＲＲを実行することなく、アクティベートを抑制しつつ時間を経過させることで、第２カウンタ１０６のエントリに空きが出来るのを待ってもよい。
【００３１】
このように、メモリコントローラ１００は、（Ａ）第２カウンタ１０６に空きが無い状態で第２カウンタ１０６への新たなＲＯＷアドレスの登録が発生する、（Ｂ）第２カウンタ１０６の先行アクティベート数がしきい値に達する、のいずれかの条件が満たされたときに、ＴＲＲの実行を求めるかまたはアクティベートを抑制するように動作する。一般に、ＴＲＲの実行もアクティベートの抑制も、メモリアクセス性能の低下の要因となりうる。そこで、本実施の形態に係るメモリコントローラ１００は、アクティベートの抑制やＴＲＲが発生する蓋然性を低下させるように、メモリアクセスの順番を制御する。
【００３２】
図６は、図１の選択部１０２における選択処理の流れを示すフローチャートである。ＤＲＡＭ１１０では、現在アクティベートされているＲＯＷアドレスに対するメモリアクセス要求は、再度ＲＯＷをアクティベートする必要がないので高速に処理されうる。現在アクティベートされているＲＯＷアドレスに対するメモリアクセス要求は、ＰａｇｅＨｉｔするメモリアクセス要求と称される。選択部１０２は、コマンドキュー１０１に保持される複数のメモリアクセス要求のなかにＰａｇｅＨｉｔするメモリアクセス要求があるかを判定する（Ｓ６０１）。ＰａｇｅＨｉｔするメモリアクセス要求がある場合（Ｓ６０１のＹｅｓ）、選択部１０２はそのメモリアクセス要求を優先して選択する（Ｓ６０６）。
【００３３】
ＰａｇｅＨｉｔするメモリアクセス要求が無い場合（Ｓ６０１のＮｏ）、選択部１０２は、コマンドキュー１０１に保持される複数のメモリアクセス要求のなかに頻度保持部１０４に登録されていないＲＯＷアドレスに対するメモリアクセス要求があるかを判定する（Ｓ６０２）。頻度保持部１０４に登録されていないＲＯＷアドレスに対するメモリアクセス要求がある場合（Ｓ６０２のＹｅｓ）、選択部１０２はそのメモリアクセス要求を選択する（Ｓ６０７）。
【００３４】
頻度保持部１０４に登録されていないＲＯＷアドレスに対するメモリアクセス要求が無い場合（Ｓ６０２のＮｏ）、選択部１０２は第２カウンタ１０６の空きの有無を判定する（Ｓ６０３）。すなわち、コマンドキュー１０１に、ＰａｇｅＨｉｔするメモリアクセス要求も、頻度保持部１０４に登録されていないＲＯＷアドレスに対するメモリアクセス要求も無い場合に、選択部１０２は第２カウンタ１０６の空きの有無を確認する。
【００３５】
第２カウンタ１０６に空きがある場合（Ｓ６０３のＹｅｓ）、選択部１０２はコマンドキュー１０１に保持される複数のメモリアクセス要求のなかに第１カウンタ１０５に登録されているＲＯＷアドレスに対するメモリアクセス要求があるかを判定する（Ｓ６０４）。選択部１０２は、第１カウンタ１０５に登録されているＲＯＷアドレスに対するメモリアクセス要求があれば（Ｓ６０４のＹｅｓ）そのメモリアクセス要求を選択する（Ｓ６０８）。選択部１０２は、第１カウンタ１０５に登録されているＲＯＷアドレスに対するメモリアクセス要求が無ければ（Ｓ６０４のＮｏ）第２カウンタ１０６に登録されているＲＯＷアドレスに対するメモリアクセス要求を選択する（Ｓ６０９）。
【００３６】
第２カウンタ１０６に空きが無い場合（Ｓ６０３のＮｏ）、選択部１０２はコマンドキュー１０１に保持される複数のメモリアクセス要求のなかに第２カウンタ１０６に登録されているＲＯＷアドレスに対するメモリアクセス要求があるかを判定する（Ｓ６０５）。選択部１０２は、第２カウンタ１０６に登録されているＲＯＷアドレスに対するメモリアクセス要求があれば（Ｓ６０５のＹｅｓ）そのメモリアクセス要求を選択する（Ｓ６１０）。選択部１０２は、第２カウンタ１０６に登録されているＲＯＷアドレスに対するメモリアクセス要求が無ければ（Ｓ６０５のＮｏ）第１カウンタ１０５に登録されているＲＯＷアドレスに対するメモリアクセス要求を選択する（Ｓ６１１）。
【００３７】
これは、第２カウンタ１０６に空きが無い場合に、第１カウンタ１０５に登録されているＲＯＷアドレスに対するメモリアクセス要求が選択されると、アクティベートされたＲＯＷアドレスの第２カウンタ１０６への登録が必要になり、第２カウンタ１０６の空きを確保する必要が発生するからである。
【００３８】
図７は、ある時刻における、頻度保持部１０４およびコマンドキュー１０１の状態を示す図である。メモリアクセス要求を受信すると、コマンドキュー１０１は受信したメモリアクセス要求を先頭から順に格納してゆく。図７においては、コマンドキュー１０１はＲＯＷアドレス４，５，６，０，１，２，３，７の順にメモリアクセス要求を受信し、受信されたメモリアクセス要求はその順番にコマンドキュー１０１に格納されている。
【００３９】
ここで、ＲＯＷアドレス４，５，６のメモリアクセス要求が選択され、アクティベートが実行される場合を考える。これらのＲＯＷアドレスは、第１カウンタ１０５に登録されているため、第１カウンタ１０５から削除される。削除されたＲＯＷアドレスを第２カウンタ１０６に格納するための処理が発生する。しかしながら、第２カウンタ１０６には空きが無い状態なので、第２カウンタ１０６のエントリに空きを作る必要がある。そのため、ＴＲＲの実行やアクティベートの抑制が発生し、メモリアクセス性能の低下が発生しうる。
【００４０】
また、ＲＯＷアドレス０，１，２，３のメモリアクセス要求が選択され、アクティベートが実行される場合を考える。これらのＲＯＷアドレスは、第２カウンタ１０６に登録されているため、アクティベートされたＲＯＷアドレスに対応する先行アクティベート数が加算（＋１）される。この際、先行アクティベート数が少ないＲＯＷアドレス３が選択される。これにより、先行アクティベート数が予め定めたしきい値に達しにくくすることが出来る。
【００４１】
ＲＯＷアドレス７のメモリアクセス要求が選択されると、このＲＯＷアドレスは、いずれのカウンタにも登録されていないため、第１カウンタ１０５の空きエントリに登録される。よって、選択部１０２は、図６に従って、ＲＯＷアドレス７、３、２、１、０、４、５、６の順にメモリアクセス要求を選択する。
【００４２】
このように、本実施の形態に係るメモリコントローラ１００によると、メモリアクセスの順番を制御することで、ＴＲＲの実行やアクティベートの抑制によるメモリアクセス性能への影響を少なくすることができる。
【００４３】
また、ｔＲＣＲＯＷ間隔に対して先行するアクティベートの数が少なくなるようにメモリアクセスの順番を制御することで、先行するアクティベート数がしきい値に達した場合に必要となる処理によるメモリアクセス性能の低下を抑制することができる。
【００４４】
（第２の実施の形態）
第１の実施の形態ではＲＯＷアドレスのアクティベートの頻度を、第１カウンタ１０５および第２カウンタ１０６の二つのカウンタを用いて保持、更新する場合を説明した。第２の実施の形態では、頻度保持部はひとつのカウンタ２０４を有する。第２の実施の形態に係るメモリコントローラの概略構成は、第１の実施の形態に係るメモリコントローラ１００の構成とカウンタ構成を除いて同等である。
【００４５】
図８は、第２の実施の形態に係るカウンタ２０４の説明図である。第１の実施の形態に係る第１カウンタ１０５と同様に、カウンタ２０４の各エントリは、アクティベートされたＲＯＷアドレスと、ダウンカウンタと、を対応付けて保持可能に構成される。しかしながら、ダウンカウンタの動作は、第１の実施の形態のそれとは異なる。また、カウンタ２０４のエントリ数Ｎは、メモリアクセスの集中度合いで決定される。
【００４６】
図９は、図８のカウンタ２０４の動作を説明する図である。図９において、時刻Ｔ１、Ｔ２及びＴ３’のそれぞれにおけるアクティベートは、同一のＲＯＷアドレスに対して発行される。時刻Ｔ１においてカウンタ２０４に登録されていないＲＯＷアドレスにアクティベートが発行されると、そのＲＯＷアドレスがカウンタ２０４に登録され、ダウンカウンタにはｔＲＣＲＯＷが設定される（９０１）。時刻Ｔ２で時刻Ｔ１と同じＲＯＷアドレスにアクティベートが発行されると、該ＲＯＷアドレスに対応するダウンカウンタに、その時点のカウンタ値にｔＲＣＲＯＷを加算した値が設定される（９０２）。このように、アクティベートが発行されると、ダウンカウンタにはｔＲＣＲＯＷが加算される。ここで、時刻Ｔ３においてアクティベートが発行され、カウンタ値にｔＲＣＲＯＷを加算するとカウンタの上限値を超えてしまう（９０３）。この場合、アクティベートの発行は抑制される。時間の経過とともにダウンカウンタはカウントダウン動作を行い、時刻Ｔ３’になるとカウンタ値にｔＲＣＲＯＷを加算してもカウンタの上限値を超えなくなる。そこで、時刻Ｔ３’において、アクティベートが発行される（９０４）。また、時刻Ｔ３において、リフレッシュ制御部１０８は該当のＲＯＷアドレスにＴＲＲを実行させ、カウンタ２０４から該当のエントリを削除してもよい。
【００４７】
なお、図示していないが、カウント値が０になったら、該当のエントリはクリアされる。
また、カウンタ２０４にＲＯＷアドレスを登録する際に、カウンタ２０４のエントリに空きが無い場合は、リフレッシュ制御部１０８はＴＲＲを実行させてカウンタ２０４のエントリを空ける。空いたエントリに新しいＲＯＷアドレスが登録される。この際、カウンタ２０４に登録されているＲＯＷアドレスのうち、カウント値が最も大きいＲＯＷアドレスがＴＲＲ対象として選択される。これにより、カウンタ２０４のカウント値の最大値を小さくすることができる。なお、ＴＲＲを実行することなく、アクティベートを抑制しつつ時間を経過させることで、カウンタ２０４に空きが出来るのを待ってもよい。
【００４８】
このように、メモリコントローラは、（Ａ）カウンタ２０４に空きが無い状態でカウンタ２０４への新たなＲＯＷアドレスの登録が発生する、（Ｂ）カウンタ２０４のカウント値が上限値に達する、のいずれかの条件が満たされたときに、ＴＲＲの実行を求めるかまたはアクティベートを抑制するように動作する。一般に、ＴＲＲの実行もアクティベートの抑制も、メモリアクセス性能の低下の要因となりうる。そこで、本実施の形態に係るメモリコントローラは、アクティベートの抑制やＴＲＲが発生する蓋然性を低下させるように、メモリアクセスの順番を制御する。
【００４９】
図１０は、第２の実施の形態に係る選択部における選択処理の流れを示すフローチャートである。選択部は、コマンドキュー１０１に保持される複数のメモリアクセス要求のなかにＰａｇｅＨｉｔするメモリアクセス要求があるかを判定する（Ｓ３０１）。ＰａｇｅＨｉｔするメモリアクセス要求がある場合（Ｓ３０１のＹｅｓ）、選択部はそのメモリアクセス要求を優先して選択する（Ｓ３０５）。
【００５０】
ＰａｇｅＨｉｔするメモリアクセス要求が無い場合（Ｓ３０１のＮｏ）、選択部はカウンタ２０４の空きの有無を判定する（Ｓ３０２）。カウンタ２０４に空きがある場合（Ｓ３０２のＹｅｓ）、選択部は、コマンドキュー１０１に保持される複数のメモリアクセス要求のなかにカウンタ２０４に登録されていないＲＯＷアドレスに対するメモリアクセス要求があるかを判定する（Ｓ３０３）。カウンタ２０４に登録されていないＲＯＷアドレスに対するメモリアクセス要求がある場合（Ｓ３０３のＹｅｓ）、選択部はそのメモリアクセス要求を選択する（Ｓ３０６）。カウンタ２０４に登録されていないＲＯＷアドレスに対するメモリアクセス要求が無い場合（Ｓ３０３のＮｏ）、選択部はカウンタ２０４に登録されているＲＯＷアドレスに対するメモリアクセス要求を選択する（Ｓ３０７）。カウンタ２０４に登録されているＲＯＷアドレスへのメモリアクセス要求が複数ある場合は、カウント値が小さいＲＯＷアドレスが選択される。
【００５１】
カウンタ２０４に空きが無い場合（Ｓ３０２のＮｏ）、選択部は、コマンドキュー１０１に保持される複数のメモリアクセス要求のなかにカウンタ２０４に登録されているＲＯＷアドレスに対するメモリアクセス要求があるかを判定する（Ｓ３０４）。カウンタ２０４に登録されているＲＯＷアドレスに対するメモリアクセス要求がある場合（Ｓ３０４のＹｅｓ）、選択部はそのメモリアクセス要求を優先して選択する（Ｓ３０８）。カウンタ２０４に登録されているＲＯＷアドレスへのメモリアクセス要求が複数ある場合は、カウント値が小さいＲＯＷアドレスが選択される。カウンタ２０４に登録されているＲＯＷアドレスに対するメモリアクセス要求が無い場合（Ｓ３０４のＮｏ）、選択部はカウンタ２０４に登録されていないＲＯＷアドレスに対するメモリアクセス要求を選択する（Ｓ３０９）。
【００５２】
本実施の形態に係るメモリコントローラによると、第１の実施の形態に係るメモリコントローラ１００によって奏される作用効果と同様の作用効果が奏される。
【００５３】
以上、実施の形態に係るメモリコントローラの構成と動作について説明した。これらの実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００５４】
第１および第２の実施の形態では、ＤＲＡＭ１１０がＬＰＤＤＲ４  ＳＤＲＡＭに準拠する場合について説明したが、これに限られず、ＲＯＷアドレスのアクティベートに制限がある任意のＤＲＡＭに本実施の形態に係る技術的思想を適用可能である。
【００５５】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５６】
１００  メモリコントローラ、  １０１  コマンドキュー、  １０２  選択部、  １０３  発行部、  １０４  頻度保持部、  １１０  ＤＲＡＭ。
【図１】
2018081642.tif 000003
【図２】
2018081642.tif 000004
【図３】
2018081642.tif 000005
【図４】
2018081642.tif 000006
【図５】
2018081642.tif 000007
【図６】
2018081642.tif 000008
【図７】
2018081642.tif 000009
【図８】
2018081642.tif 000010
【図９】
2018081642.tif 000011
【図１０】
2018081642.tif 000012