(57)【要約】      （修正有）【課題】ＴＲＲを実装したメモリコントローラにおいて、回路規模を抑制しつつ無駄なＴＲＲの発生を抑制する。【解決手段】メモリコントローラ１００は、ＲＯＷアドレスが複数のグループに分けられたＤＲＡＭを制御する。ＲＯＷアドレスを保持可能なエントリの数がＲＯＷアドレスの総数よりも小さい第１保持手段と、第１保持手段に保持されるカウント値が所定の条件を満たすと対応するＲＯＷアドレスに関するＴＲＲ（Ｔａｒｇｅｔ  Ｒｏｗ  Ｒｅｆｒｅｓｈコマンド）を発行する制御手段と、ＲＯＷアドレスのグループごとにカウント値を保持する第２保持手段とを備える。制御手段は、第１保持手段に保持されていないＲＯＷアドレスである第１ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行され、かつ、第１保持手段に空いているエントリがない場合、第２ＲＯＷアドレスを第１ＲＯＷアドレスで置き換える。【選択図】図１
2018128991.tif 000002
【特許請求の範囲】
【請求項１】
ＲＯＷアドレスが複数のグループに分けられたＤＲＡＭを制御するメモリコントローラであって、
ＲＯＷアドレスと該ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行されると更新されるカウント値とを対応付けて保持する第１保持手段であって、ＲＯＷアドレスを保持可能なエントリの数がＲＯＷアドレスの総数よりも小さい、第１保持手段と、
前記第１保持手段に保持されるカウント値が所定の条件を満たすと対応するＲＯＷアドレスに関するＴａｒｇｅｔ  Ｒｏｗ  Ｒｅｆｒｅｓｈコマンドを発行する制御手段と、
ＲＯＷアドレスのグループごとにカウント値を保持する第２保持手段と、を備え、
前記制御手段は、前記第１保持手段に保持されていないＲＯＷアドレスである第１ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行され、かつ、前記第１保持手段に空いているエントリがない場合、前記第１保持手段に保持されているＲＯＷアドレスのなかからカウント値に関する所定の基準にしたがい選択されたＲＯＷアドレスである第２ＲＯＷアドレスを前記第１ＲＯＷアドレスで置き換えると共に、前記第２ＲＯＷアドレスが属するグループと前記第１ＲＯＷアドレスが属するグループとが異なる場合には前記第１ＲＯＷアドレスが属するグループに対応して前記第２保持手段に保持されているカウント値を参照して前記第１ＲＯＷアドレスに対応するカウント値を設定するメモリコントローラ。
【請求項２】
前記制御手段は、前記第２ＲＯＷアドレスに対応して前記第１保持手段に保持されているカウント値と前記第２ＲＯＷアドレスが属するグループに対応して前記第２保持手段に保持されているカウント値とを比較することにより前記第２保持手段を更新する請求項１に記載のメモリコントローラ。
【請求項３】
前記制御手段は、前記第２ＲＯＷアドレスが属するグループに対応して前記第２保持手段に保持されているカウント値を、前記第２ＲＯＷアドレスに対応して前記第１保持手段に保持されているカウント値で更新する請求項２に記載のメモリコントローラ。
【請求項４】
前記制御手段は、前記第１保持手段に空いているエントリがある場合、前記第１ＲＯＷアドレスを該エントリに登録すると共に、前記第１ＲＯＷアドレスが属するグループに対応して前記第２保持手段に保持されているカウント値を参照して前記第１ＲＯＷアドレスに対応するカウント値を設定する請求項１から３のいずれか一項に記載のメモリコントローラ。
【請求項５】
前記第２ＲＯＷアドレスは、前記第１保持手段に保持されているカウント値のなかで前記所定の条件を満たすために必要な更新の回数が最も多いカウント値に対応するＲＯＷアドレスである請求項１から４のいずれか一項に記載のメモリコントローラ。
【請求項６】
ＲＯＷアドレスが複数のグループに分けられたＤＲＡＭを制御するメモリコントローラであって、
ＲＯＷアドレスと該ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行されると更新されるカウント値とを対応付けて保持する第１保持手段であって、ＲＯＷアドレスを保持可能なエントリの数がＲＯＷアドレスの総数よりも小さい、第１保持手段と、
前記第１保持手段に保持されるカウント値が所定の条件を満たすと対応するＲＯＷアドレスに関するＴａｒｇｅｔ  Ｒｏｗ  Ｒｅｆｒｅｓｈコマンドを発行する制御手段と、
ＲＯＷアドレスのグループごとにカウント値を保持する第２保持手段と、を備え、
前記制御手段は、前記第１保持手段に保持されていないＲＯＷアドレスである第１ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行され、かつ、前記第１保持手段に空いているエントリがある場合、前記第１ＲＯＷアドレスを該エントリに登録すると共に、前記第１ＲＯＷアドレスが属するグループに対応して前記第２保持手段に保持されているカウント値を参照して前記第１ＲＯＷアドレスに対応するカウント値を設定するメモリコントローラ。
【請求項７】
前記第１保持手段は、ＲＯＷアドレスと該ＲＯＷアドレスが属するグループを特定するＩＤと該ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行されると更新されるカウント値とを対応付けて保持し、
前記制御手段は、前記第１保持手段に保持されるＩＤを参照することで前記第１ＲＯＷアドレスが属するグループを特定する請求項１から６のいずれか一項に記載のメモリコントローラ。
【請求項８】
ＲＯＷアドレスのグループはバンクに対応する請求項１から７のいずれか一項に記載のメモリコントローラ。
【請求項９】
前記ＤＲＡＭはＬＰＤＤＲ４に準拠する請求項１から８のいずれか一項に記載のメモリコントローラ。
【請求項１０】
ＲＯＷアドレスが複数のグループに分けられたＤＲＡＭを制御する方法であって、
ＲＯＷアドレスと該ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行されると更新されるカウント値とを対応付けて第１保持手段に保持することであって、ＲＯＷアドレスを保持可能なエントリの数がＲＯＷアドレスの総数よりも小さい、保持することと、
前記第１保持手段に保持されるカウント値が所定の条件を満たすと対応するＲＯＷアドレスに関するＴａｒｇｅｔ  Ｒｏｗ  Ｒｅｆｒｅｓｈコマンドを発行することと、
ＲＯＷアドレスのグループごとにカウント値を第２保持手段に保持することと、
前記第１保持手段に保持されていないＲＯＷアドレスである第１ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行され、かつ、前記第１保持手段に空いているエントリがない場合、前記第１保持手段に保持されているＲＯＷアドレスのなかからカウント値に関する所定の基準にしたがい選択されたＲＯＷアドレスである第２ＲＯＷアドレスを前記第１ＲＯＷアドレスで置き換えると共に、前記第２ＲＯＷアドレスが属するグループと前記第１ＲＯＷアドレスが属するグループとが異なる場合には前記第１ＲＯＷアドレスが属するグループに対応して前記第２保持手段に保持されているカウント値を参照して前記第１ＲＯＷアドレスに対応するカウント値を設定することと、を含む方法。
【請求項１１】
ＲＯＷアドレスが複数のグループに分けられたＤＲＡＭを制御する方法であって、
ＲＯＷアドレスと該ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行されると更新されるカウント値とを対応付けて第１保持手段に保持することであって、ＲＯＷアドレスを保持可能なエントリの数がＲＯＷアドレスの総数よりも小さい、保持することと、
前記第１保持手段に保持されるカウント値が所定の条件を満たすと対応するＲＯＷアドレスに関するＴａｒｇｅｔ  Ｒｏｗ  Ｒｅｆｒｅｓｈコマンドを発行することと、
ＲＯＷアドレスのグループごとにカウント値を第２保持手段に保持することと、
前記第１保持手段に保持されていないＲＯＷアドレスである第１ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行され、かつ、前記第１保持手段に空いているエントリがある場合、前記第１ＲＯＷアドレスを該エントリに登録すると共に、前記第１ＲＯＷアドレスが属するグループに対応して前記第２保持手段に保持されているカウント値を参照して前記第１ＲＯＷアドレスに対応するカウント値を設定することと、を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラおよび方法に関する。
【背景技術】
【０００２】
近年、ＤＲＡＭ（Dynamic Random Access Memory）の製造プロセスの微細化が進んでいる。ＤＲＡＭの製造プロセスが４０ｎｍを下回り、密度が増加すると、隣接するワードラインに対するクロストーク等の電気的影響により、隣接するワードラインへつながるメモリセルへのリーク電流の影響が顕著となる。これにより、メモリコントローラによる特定のＲＯＷに対するＡｃｔｉｖａｔｅコマンドの発行が集中した場合、ＤＲＡＭのメモリセル内部のデータが破損する虞がある。これを、ＲＯＷ  ＨＡＭＭＥＲ問題という。
【０００３】
ＲＯＷ  ＨＡＭＭＥＲ問題への対策として、ＬＰＤＤＲ４の規格にはＴａｒｇｅｔ  Ｒｏｗ  Ｒｅｆｒｅｓｈコマンド（以下、ＴＲＲと称す）が定義されている。ＴＲＲは、ＤＲＡＭのあるＲＯＷに対するＡｃｔｉｖａｔｅコマンドの発行数が、一定期間内に上限値に達した場合、該当するＲＯＷに対してメモリコントローラから特定のシーケンスを実行する操作である。この上限値はＭＡＣ（Maximum Activate Count）と呼ばれる。ＴＲＲを実施すると、メモリセル内部のデータ破損を回避することができる。
【０００４】
しかしながら、ＴＲＲの機能をメモリコントローラに実装する際には、各ＲＯＷへのＡｃｔｉｖａｔｅコマンドの発行数を計測しなければならない。ＬＰＤＤＲ４の場合、ＭＡＣの値は最大７０万（２０ｂｉｔ長のカウンタが必要）であり、ＤＲＡＭのＲＯＷ数は最小容量である４Ｇｂｉｔの場合でもチャネルあたり１３１Ｋ個となる。そのため、単純な実装を行うと、回路規模が大きくなる。これに対応して特許文献１では、回路規模を抑制しながら、Ａｃｔｉｖａｔｅコマンドの発行数を計測し、ＴＲＲを実行する方法が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１４／０００６７０４号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に示されている手法では、メモリコントローラは、ＲＯＷアドレスと、各ＲＯＷアドレスへのＡｃｔｉｖａｔｅコマンドの発行数とを対応付けて保持するテーブルを持つ。このテーブルのエントリ数は、一定期間内でＭＡＣに達することの可能なＲＯＷの個数に基づいており、前述の単純な実装と比較して、回路規模を削減することができる。
【０００７】
しかしながら、特許文献１に示されている手法は、テーブルのエントリ数を減らす代わりに発行数の正確さを犠牲にしている。したがって、ＲＯＷアドレスへの実際のＡｃｔｉｖａｔｅコマンドの発行数と、テーブルに保持されている発行数と、の間に乖離が生じうる。この乖離により無駄なＴＲＲが発生し、性能の低下につながる虞がある。
【０００８】
本発明はこうした課題に鑑みてなされたものであり、その目的は、ＴＲＲを実装したメモリコントローラにおいて、回路規模を抑制しつつ無駄なＴＲＲの発生を抑制できる技術の提供にある。
【課題を解決するための手段】
【０００９】
本発明のある態様はメモリコントローラに関する。このメモリコントローラは、ＲＯＷアドレスが複数のグループに分けられたＤＲＡＭを制御するメモリコントローラであって、ＲＯＷアドレスと該ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行されると更新されるカウント値とを対応付けて保持する第１保持手段であって、ＲＯＷアドレスを保持可能なエントリの数がＲＯＷアドレスの総数よりも小さい、第１保持手段と、第１保持手段に保持されるカウント値が所定の条件を満たすと対応するＲＯＷアドレスに関するＴａｒｇｅｔ  Ｒｏｗ  Ｒｅｆｒｅｓｈコマンドを発行する制御手段と、ＲＯＷアドレスのグループごとにカウント値を保持する第２保持手段と、を備え、制御手段は、第１保持手段に保持されていないＲＯＷアドレスである第１ＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンドが発行され、かつ、第１保持手段に空いているエントリがない場合、第１保持手段に保持されているＲＯＷアドレスのなかからカウント値に関する所定の基準にしたがい選択されたＲＯＷアドレスである第２ＲＯＷアドレスを第１ＲＯＷアドレスで置き換えると共に、第２ＲＯＷアドレスが属するグループと第１ＲＯＷアドレスが属するグループとが異なる場合には第１ＲＯＷアドレスが属するグループに対応して第２保持手段に保持されているカウント値を参照して第１ＲＯＷアドレスに対応するカウント値を設定する。
【発明の効果】
【００１０】
本発明によれば、ＴＲＲを実装したメモリコントローラにおいて、回路規模を抑制しつつ無駄なＴＲＲの発生を抑制できる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態に係るメモリコントローラの機能及び構成を示すブロック図。
【図２】図１のアドレス保持部、カウント値保持部およびバンク毎最大値保持部の一例を示すデータ構造図。
【図３】本実施の形態におけるアドレスグループとバンク・ＲＯＷアドレスとの対応関係を示す説明図。
【図４】図１のメモリコントローラにおける一連の処理の流れを示すフローチャート。
【図５】あるシナリオでの制御部の動作を説明するための図。
【図６】あるシナリオでの制御部の動作を説明するための図。
【図７】あるシナリオでの制御部の動作を説明するための図。
【図８】あるシナリオでの制御部の動作を説明するための図。
【図９】図９（ａ）、（ｂ）は、ＲＯＷアドレスの分け方の例を示す図。
【発明を実施するための形態】
【００１２】
以下、各図面に示される同一または同等の構成要素、部材、処理、信号には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【００１３】
特許文献１に記載の手法では、メモリコントローラがＡｃｔｉｖａｔｅコマンドを発行した際、次のように動作する。まず、テーブルの管理部は、もしＡｃｔｉｖａｔｅコマンドの発行先のＲＯＷアドレスがテーブルに存在せず、かつ、テーブルに空きがない場合、最も小さいＡｃｔｉｖａｔｅコマンド発行数を持つＲＯＷアドレスのエントリを置換する。この時、テーブルの管理部は、置換前のエントリに関連付けられているＡｃｔｉｖａｔｅコマンド発行数を、置換後のエントリに関連付けられるＡｃｔｉｖａｔｅコマンド発行数にコピーし、続いてそのＡｃｔｉｖａｔｅコマンド発行数をインクリメントする。つまり、置換後のＲＯＷアドレスに対して発行された、置換時点までのＡｃｔｉｖａｔｅコマンド発行数の大小によらず、置換前のＲＯＷアドレスに対して関連付けられていたＡｃｔｉｖａｔｅコマンド発行数に１を足した値が置換後のＲＯＷアドレスに対して関連付けられる。
【００１４】
この仕組みにおける問題は、テーブルの管理部が、置換時にＡｃｔｉｖａｔｅコマンド発行数にのみ着目している点である。例えば、ＤＲＡＭのＢａｎｋ０のＲＯＷアドレスへアクセスが頻発し、テーブルに空きがなく、Ｂａｎｋ０のＲＯＷアドレスで占められている状況を考える。この時、初めてＢａｎｋ１のＲＯＷアドレスへアクセスが発生した場合、テーブルの管理部は、テーブル内の最小のＡｃｔｉｖａｔｅコマンド発行数と関連付けられたＢａｎｋ０のＲＯＷアドレスのエントリをＢａｎｋ１のＲＯＷアドレスで置換する。実際はＢａｎｋ１のＲＯＷアドレスへＡｃｔｉｖａｔｅコマンドが発行されたのは初めてであるにも関わらず、置換によりテーブルに格納されるＢａｎｋ１のＲＯＷアドレスには、実際より多くのＡｃｔｉｖａｔｅコマンド発行数が関連付けられる。このように、Ｂａｎｋ１のＲＯＷアドレスへのアクセスの実態と保持されるコマンド発行数との間に乖離が発生する。乖離が発生すると、無駄なＴＲＲが発生して、性能低下が生じうる。
【００１５】
特許文献１に記載の技術では、あるＲＯＷアドレスに対してＡｃｔｉｖａｔｅコマンド（以下、ＡＣＴと称す）が発行された時、テーブルに空きがなく、かつテーブル内に同じＲＯＷアドレスのエントリがない場合、テーブル外へエントリ（ＲＯＷアドレスとＡＣＴ発行数カウントとから成る）が追い出される。これに対して、実施の形態に係るメモリコントローラでは、追い出されたエントリのうちのＡＣＴ発行数カウントを保持する保持部が設けられる。この保持部は、バンクやアドレスレンジごとに用意され、追い出されたエントリのＲＯＷアドレスのバンク／アドレスレンジに対応する保持部に、追い出されたエントリのＡＣＴ発行数カウントが登録される。また、あるバンク／アドレスレンジのＲＯＷアドレスへのＡＣＴ発行があった場合、そのバンク／アドレスレンジに対応して保持部に保持されているＡＣＴ発行数カウントがテーブルに書き戻され、インクリメントされる。これにより、特許文献１に記載の技術と比較して、実際のＲＯＷアドレスへのアクセス数とＡＣＴ発行数との乖離を抑制することができ、無駄なＴＲＲの発生を抑制することができる。
【００１６】
図１は、実施の形態に係るメモリコントローラ１００の機能及び構成を示すブロック図である。メモリコントローラ１００は、発行部１０１と、制御部１０２と、テーブル１０６と、バンク毎最大値保持部１０５と、を備える。メモリコントローラ１００は、ＤＲＡＭ１１０に接続され、ＤＲＡＭ１１０にＤＲＡＭコマンドＣＭＤを送信することでＤＲＡＭ１１０を制御する。ＤＲＡＭ１１０は、メモリコントローラ１００から受信したＤＲＡＭコマンドＣＭＤに従い、動作する。ＤＲＡＭ１１０はＬＰＤＤＲ４に準拠する。ＤＲＡＭ１１０は複数のバンクを有し、ＤＲＡＭ１１０のＲＯＷアドレスは、複数のバンクに対応する複数のアドレスグループに分けられている。
【００１７】
発行部１０１は、メモリコントローラ１００が受信したメモリアクセス要求ＭＡＲに応じて、ＤＲＡＭコマンドＣＭＤを発行する。発行部１０１は、例えば外部のＣＰＵなどからメモリアクセス要求ＭＡＲを受信すると、受信したメモリアクセス要求ＭＡＲに含まれるＲＯＷアドレスに関するＤＲＡＭコマンドＣＭＤを生成し、ＤＲＡＭ１１０に送信する。
制御部１０２は、発行部１０１が発行するＤＲＡＭコマンドＣＭＤのうち、ＡＣＴがどのＲＯＷアドレスに発行されたかを監視する。
【００１８】
テーブル１０６は、ＲＯＷアドレスと該ＲＯＷアドレスが属するバンクを特定するバンクＩＤと該ＲＯＷアドレスに対してＡＣＴが発行されると更新されるカウント値とを対応付けて保持する。バンクとアドレスグループとは一対一に対応するので、バンクＩＤは対応するアドレスグループを特定するＩＤでもある。テーブル１０６について、ＲＯＷアドレスを保持可能なエントリの数はＤＲＡＭ１１０のＲＯＷアドレスの総数よりも小さい。
【００１９】
テーブル１０６は、アドレス保持部１０３と、カウント値保持部１０４と、を含む。アドレス保持部１０３は制御部１０２によって制御される。制御部１０２は、発行部１０１が発行したＡＣＴの発行先のバンクとＲＯＷアドレスとの組をアドレス保持部１０３に登録する、または格納する。以下、バンクとＲＯＷアドレスとの組をバンク・ＲＯＷアドレスと表記する。本実施の形態ではバンク・ＲＯＷアドレスは「バンク０、ＲＯＷアドレス０ｘ０００」のように表されるが、他の例としてＲＯＷアドレス０ｘ０００の左から３桁目をバンクＩＤとして利用してもよい。すなわち、０ｘ０００はバンク０のＲＯＷアドレス、０ｘ１００はバンク１のＲＯＷアドレス、という表記でもよい。
【００２０】
カウント値保持部１０４は制御部１０２によって制御される。制御部１０２は、アドレス保持部１０３に保持されている各ＲＯＷアドレスについて、そのＲＯＷアドレスに対してＡＣＴが発行されると、カウント値保持部１０４に保持される対応するカウント値をインクリメントする。
バンク毎最大値保持部１０５は制御部１０２によって制御され、アドレスグループ（すなわちバンク）ごとに最大カウント値を保持する。
【００２１】
図２は、アドレス保持部１０３、カウント値保持部１０４およびバンク毎最大値保持部１０５の一例を示すデータ構造図である。アドレス保持部１０３およびカウント値保持部１０４はそれぞれ、ＭＶＣ（Maximum Victim Count）（特許文献１参照）以下の個数のエントリを持つ。ＭＶＣは、ＤＲＡＭ１１０のリフレッシュ周期内に、メモリコントローラ１００がＡＣＴを可能な限り発行したとき、ＭＡＣに到達することのできるＲＯＷアドレスの個数である。この値はｔＲＥＦＷ、ｔＲＣ、ＭＡＣの値に基づいて計算される。例えば、ｔＲＥＦＷが３２ｍｓ、ｔＲＣが４２ｎｓ、ＭＡＣが２００Ｋ回の場合、ＲＯＷアドレスへのＡＣＴは、３２ｍｓ／４２ｎｓ＝約７６２Ｋ回となる。メモリコントローラ１００は、ひとつのリフレッシュ周期の間に約７６２Ｋ回のＡＣＴを発行することができる。この場合において、ひとつのリフレッシュ周期内にＭＡＣに到達することのできるＲＯＷアドレスの個数は、７６２Ｋ／１００Ｋ＝約７．６２個となる。よって、この場合にアドレス保持部１０３およびカウント値保持部１０４のエントリは、８個必要となる。バンク毎最大値保持部１０５はアドレスグループの数＝バンクの数個のエントリを持つ。
【００２２】
図３は、本実施の形態における、アドレスグループ３０１とバンク・ＲＯＷアドレス３０２との対応関係を示す説明図である。図３に示される通り、１つのアドレスグループに１つのバンクが割り当てられる。
【００２３】
以上の構成によるメモリコントローラ１００の動作を説明する。
図４は、メモリコントローラ１００における一連の処理の流れを示すフローチャートである。発行部１０１がＡＣＴを発行すると、制御部１０２はアドレス保持部１０３およびカウント値保持部１０４のそれぞれの状態に依存して図４に示される処理を実行する。Ｓ４０１で制御部１０２は、発行部１０１が発行するＤＲＡＭコマンドＣＭＤを監視し、ＡＣＴが発行されたか否かを判定する。ＡＣＴが発行されなかった場合、制御部１０２はＳ４０１を繰り返す。ＡＣＴが発行された場合、Ｓ４０２で制御部１０２はアドレス保持部１０３を参照し、発行されたＡＣＴの発行先のバンク・ＲＯＷアドレスがアドレス保持部１０３に存在するか否かを判定する。
【００２４】
Ｓ４０２で存在すると判定された場合、Ｓ４０３で制御部１０２はカウント値保持部１０４を参照し、発行先のバンク・ＲＯＷアドレスと同じアドレス保持部１０３のエントリに対応してカウント値保持部１０４に保持されているカウント値を読み出す。制御部１０２は、読み出されたカウント値がしきい値、この場合ＭＡＣ／２−１、に等しいか否かを判定する。Ｓ４０３で等しくない、すなわちしきい値未満であると判定された場合、Ｓ４０４で制御部１０２は読み出されたカウント値をインクリメント（例えば＋１）する。制御部１０２は、インクリメント後のカウント値をカウント値保持部１０４に登録することでカウント値保持部１０４を更新する。その後、処理はＳ４０１に戻る。
【００２５】
Ｓ４０３で等しいと判定された場合、Ｓ４０５で発行部１０１は、ＡＣＴの発行先のバンク・ＲＯＷアドレスを対象とするＴＲＲを発行する。Ｓ４０６で制御部１０２は、ＴＲＲの発行先のバンクに対応してバンク毎最大値保持部１０５に保持されている最大カウント値をリセットする、または初期化する。例えば、最大カウント値は０や１などの初期値となる。その後、処理はＳ４０１に戻る。
【００２６】
Ｓ４０２で存在しないと判定された場合、Ｓ４０７で制御部１０２は、アドレス保持部１０３に空いているエントリ（以下、空きエントリと称す）があるか否かを判定する。Ｓ４０７であると判定された場合、Ｓ４０８で制御部１０２は、ＡＣＴの発行先のバンク・ＲＯＷアドレスを新たにアドレス保持部１０３の空きエントリに登録する。Ｓ４０９で制御部１０２は、ＡＣＴの発行先のバンクに対応してバンク毎最大値保持部１０５に保持されている最大カウント値を読み出す。Ｓ４１０、Ｓ４１１で制御部１０２は、読み出された最大カウント値を参照して、ＡＣＴの発行先のバンク・ＲＯＷアドレスに対応するカウント値を設定する。Ｓ４１０で制御部１０２は、読み出された最大カウント値をインクリメントする。Ｓ４１１で制御部１０２は、インクリメント後の値を、ＡＣＴの発行先のバンク・ＲＯＷアドレスに対応するカウント値としてカウント値保持部１０４に登録する。その後、処理はＳ４０１に戻る。
【００２７】
Ｓ４０７で空きエントリないと判定された場合、Ｓ４１２で制御部１０２は、カウント値保持部１０４に保持されるカウント値のなかから、最小のカウント値を特定する。Ｓ４１３で制御部１０２は、アドレス保持部１０３に保持されるバンク・ＲＯＷアドレスのなかから、特定された最小のカウント値に対応するバンク・ＲＯＷアドレスを選択する。Ｓ４１４で制御部１０２は、選択されたバンク・ＲＯＷアドレスを、ＡＣＴの発行先のバンク・ＲＯＷアドレスで置き換える。
【００２８】
Ｓ４１５で制御部１０２は、置換の前後でバンクが異なるか否かを判定する。すなわち、制御部１０２は、Ｓ４１３で選択されたバンク（置換前のバンク）と、ＡＣＴの発行先のバンク（置換後のバンク）と、の異同を判定する。Ｓ４１５で同じであると判定された場合、Ｓ４１６で制御部１０２はＳ４１２で特定された最小のカウント値をインクリメントする。制御部１０２は、インクリメント後のカウント値をＡＣＴの発行先のバンク・ＲＯＷアドレスに対応付けてカウント値保持部１０４に登録することでカウント値保持部１０４を更新する。その後、処理はＳ４０１に戻る。
【００２９】
Ｓ４１５で異なると判定された場合、Ｓ４１７で制御部１０２は、Ｓ４１３で選択されたバンクに対応してバンク毎最大値保持部１０５に保持されている最大カウント値を読み出す。Ｓ４１２で特定された最小のカウント値はＳ４１３で選択されたバンク・ＲＯＷアドレスに対応し、後のＳ４１１の処理で上書きされる（追い出される）ので、以下、追い出されるカウント値、と表現する。Ｓ４１８で制御部１０２は、追い出されるカウント値がＳ４１７で読み出された最大カウント値よりも大きいか否かを判定する。Ｓ４１８で大きいと判定された場合、Ｓ４１９で制御部１０２は、Ｓ４１３で選択されたバンクに対応する最大カウント値を追い出されるカウント値で上書きすることで、バンク毎最大値保持部１０５を更新する。Ｓ４１８で大きくないと判定された場合またはＳ４１９の後、制御部１０２はＳ４０９、Ｓ４１０、Ｓ４１１を行うことでＡＣＴの発行先バンク・ＲＯＷアドレスに対応するカウント値を登録する。その後、処理はＳ４０１に戻る。
【００３０】
以降、図５から図８を参照し、図４で説明した各条件における、制御部１０２の動作の詳細を説明する。これらの例は、発行部１０１がバンク０、ＲＯＷアドレス０ｘ１００に対してＡＣＴ５０１を発行した時の制御部１０２の動作を示している。制御部１０２は、アドレス保持部１０３およびカウント値保持部１０４のそれぞれの状態を確認し、その状態に応じた処理を実施する。
【００３１】
制御部１０２は、発行部１０１からのＡＣＴ５０１の発行を検出すると、そのＡＣＴ５０１の発行先であるバンク・ＲＯＷアドレスが、アドレス保持部１０３に存在するかどうかを判定する（図４のＳ４０２）。この状態に応じて、制御部１０２は続きの処理を決定する。
【００３２】
図５は、あるシナリオでの制御部１０２の動作を説明するための図である。図５の例では、制御部１０２がアドレス保持部１０３内を検索（符号５０２）した結果、アドレス保持部１０３のエントリにバンク０、ＲＯＷアドレス０ｘ１００の組を発見する。制御部１０２は、発見されたバンク０、ＲＯＷアドレス０ｘ１００の組に対応するカウント値保持部１０４のエントリを確認する（符号５０３）。その結果、制御部１０２はバンク０、ＲＯＷアドレス０ｘ１００の組に対応するカウント値が「９９９９９９」（＝ＭＡＣ／２−１）となっていることを見出す（図４のＳ４０３）。
【００３３】
この条件において、制御部１０２は、アドレス保持部１０３からバンク０、ＲＯＷアドレス０ｘ１００の組のエントリを削除し（符号５０４）、そのエントリに対応するカウント値保持部１０４のエントリを削除する（符号５０５）。続いて、制御部１０２は、発行部１０１に対し、ＴＲＲを発行するよう指示する（符号５０６）。発行部１０１は制御部１０２からの指示を受けてＤＲＡＭ１１０に対してＴＲＲを発行する（図４のＳ４０５）。
【００３４】
図６は、あるシナリオでの制御部１０２の動作を説明するための図である。図６の例では、制御部１０２がアドレス保持部１０３内を検索（符号６０１）した結果、アドレス保持部１０３のエントリにバンク０、ＲＯＷアドレス０ｘ１００の組を発見する。制御部１０２は、発見されたバンク０、ＲＯＷアドレス０ｘ１００の組に対応するカウント値保持部１０４のエントリを確認する（符号６０２）。その結果、制御部１０２はバンク０、ＲＯＷアドレス０ｘ１００の組に対応するカウント値がＭＡＣ／２−１未満であることを見出す（図４のＳ４０３）。
【００３５】
この条件において、制御部１０２は、アドレス保持部１０３のバンク０、ＲＯＷアドレス０ｘ１００に対応してカウント値保持部１０４に保持されるカウント値をインクリメントする（図４のＳ４０４）。制御部１０２は、バンク０、ＲＯＷアドレス０ｘ１００の組に対応するカウント値保持部１０４のエントリに、インクリメントの結果である「８０００１」を書き込む（符号６０３）。このインクリメントの結果、カウント値保持部１０４のカウント値は、ＭＡＣ／２に到達しないため、これ以外の処理は行われない。
【００３６】
図７は、あるシナリオでの制御部１０２の動作を説明するための図である。図７の例では、制御部１０２がアドレス保持部１０３内を検索（符号７０１）した結果、アドレス保持部１０３のエントリにバンク０、ＲＯＷアドレス０ｘ１００の組を発見しない。また制御部１０２は、アドレス保持部１０３に空きエントリが存在すると判定する（図４のＳ４０７）。
【００３７】
この条件において、制御部１０２は、アドレス保持部１０３の空きエントリに、バンク０、ＲＯＷアドレス０ｘ１００のエントリを新規に作成する（符号７０２、図４のＳ４０８）。制御部１０２は、バンク０（アドレスグループ０）に対応してバンク毎最大値保持部１０５に保持される最大カウント値（「０」）を読み出す（符号７０３、図４のＳ４０９）。制御部１０２は、読み出された最大カウント値をインクリメントする（０＋１＝１）。制御部１０２は、インクリメントの結果得られる値（「１」）を、バンク０、ＲＯＷアドレス０ｘ１００に対応するカウント値としてカウント値保持部１０４に登録する（符号７０４、図４のＳ４１１）。
【００３８】
図８は、あるシナリオでの制御部１０２の動作を説明するための図である。図８の例では、制御部１０２がアドレス保持部１０３内を検索（符号８０１）した結果、アドレス保持部１０３のエントリにバンク０、ＲＯＷアドレス０ｘ１００の組を発見しない。また制御部１０２は、アドレス保持部１０３に空きエントリが存在しないと判定する（図４のＳ４０７）。
【００３９】
この条件において、制御部１０２はカウント値保持部１０４を参照して最小のカウント値を特定し、特定された最小のカウント値に対応してアドレス保持部１０３に保持されるエントリを特定する。制御部１０２は、特定されたエントリを、ＡＣＴ５０１の発行先のバンク・ロウアドレスの組で置換する（図４のＳ４１４）。この図８ではバンク１、ＲＯＷアドレス０ｘ９８のエントリが、バンク０、ＲＯＷアドレス０ｘ１００の組で置換される（符号８０２）。制御部１０２は、置換後のバンク・ＲＯＷアドレスの組（バンク０、ＲＯＷアドレス０ｘ１００）に対応してバンク毎最大値保持部１０５に保持される最大カウント値（「１００」）を読み出す（符号８０３）。制御部１０２は読み出された値をインクリメントする（１００＋１＝１０１）。制御部１０２は、インクリメントの結果得られる値（「１０１」）を、置換後のバンク・ＲＯＷアドレスの組に対応するカウント値保持部１０４のエントリに書き込む（図４のＳ４１１）。この図８では、バンク毎最大値保持部１０５のアドレスグループ０のエントリから「１００」が読み出され、インクリメントされて「１０１」となり、カウント値保持部１０４の最小のカウント値「１５０００」がその値「１０１」で上書きされる（符号８０４）。
【００４０】
制御部１０２は、追い出されたバンク１のカウント値「１５０００」と、バンク１（アドレスグループ１）に対応してバンク毎最大値保持部１０５に保持されている最大カウント値（「１４５００」）と、を比較する（図４のＳ４１８）。１５０００＞１４５００なので、制御部１０２はバンク１に対応する最大カウント値を１５０００で置き換える（符号８０５）。
【００４１】
本実施の形態に係るメモリコントローラ１００によると、制御部１０２がアドレス保持部１０３、カウント値保持部１０４およびバンク毎最大値保持部１０５を上述のように制御することで、実際のＲＯＷアドレスへのアクセス数とＡＣＴの発行数との乖離を抑制することができる。その結果、無駄なＴＲＲの発生を抑制することができる。
【００４２】
以上、実施の形態に係るメモリコントローラ１００の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００４３】
実施の形態ではＲＯＷアドレスのアドレスグループがＤＲＡＭ１１０のバンクに対応する場合について説明したが、これに限られない。ＲＯＷアドレスが複数のグループに分けられていればよく、その分け方は任意でよい。図９（ａ）、（ｂ）は、ＲＯＷアドレスの分け方の例を示す図である。図９（ａ）の符号１００１で示されるように、ＲＯＷアドレスによる区分を用いてもよい。または、図９（ｂ）の符号１００２に示されるように、マスタ毎の区分（マスタによってアクセス先のアドレスが固定されている場合）を用いてもよい。このように、任意の割り当て方法を採用することができる。
【００４４】
実施の形態では、カウント値がインクリメントされる場合について説明したが、これに限られず、ＲＯＷアドレスに対してＡＣＴが発行されるとカウント値を更新する態様であれば他の態様が用いられてもよい。例えば、ＡＣＴの発行に対してカウント値がデクリメントされてもよい。この場合、図４のＳ４０３やＳ４１８における判定基準も合わせて変更されてもよい。
【００４５】
実施の形態では、カウント値がしきい値＝ＭＡＣ／２−１に達するとＴＲＲが発行される場合について説明したが、これに限られず、他のしきい値が用いられてもよいし、しきい値以外の他の条件が用いられてもよい。
【００４６】
実施の形態では、図４のＳ４１２において最小のカウント値が特定され、Ｓ４１３において特定されたカウント値に対応するバンク・ＲＯＷアドレスが選択される場合について説明したが、これに限られない。アドレス保持部１０３に保持されているバンク・ＲＯＷアドレスのなかからカウント値に関する所定の基準にしたがいバンク・ＲＯＷアドレスが選択されてもよい。例えば、極小のカウント値が特定されてもよい。あるいはまた、カウント値保持部１０４から小さい方から３つのカウント値を選択し、該３つのカウント値のなかからランダムに選択したひとつに対応してアドレス保持部１０３に保持されるバンク・ＲＯＷアドレスを選択してもよい。
【００４７】
Ｓ４１２における最小のカウント値は、カウント値保持部１０４に保持されるカウント値のなかで、ＭＡＣ／２−１に到達するという条件を満たすために必要なインクリメントの回数が最も多いカウント値であると言うことができる。すなわち、Ｓ４１２では、カウント値保持部１０４に保持されているカウント値のなかでＴＲＲ発行の条件を満たすために必要な更新の回数が最も多いカウント値を特定しているといえる。
【００４８】
実施の形態では、図４のＳ４０６においてＴＲＲの発行を契機として対応するバンクの最大カウント値をリセットする場合について説明したが、これに限られない。例えば、バンク毎最大値保持部１０５に保持される最大カウント値は経時的に自動的に減少してもよいし、またはバンク毎最大値保持部１０５から最大カウント値を読み出したことを契機としてその最大カウント値がリセットされてもよい。
【００４９】
実施の形態では、ＤＲＡＭ１１０がＬＰＤＤＲ４に準拠する場合について説明したが、これに限られず、ＲＯＷアドレスが複数のグループに分けられる任意のＤＲＡＭに本実施の形態に係る技術的思想を適用可能である。
【符号の説明】
【００５０】
１００  メモリコントローラ、  １０１  発行部、  １０２  制御部、  １０３  アドレス保持部、  １０４  カウント値保持部、  １０５  バンク毎最大値保持部、  １１０  ＤＲＡＭ。
【図１】
2018128991.tif 000003
【図２】
2018128991.tif 000004
【図３】
2018128991.tif 000005
【図４】
2018128991.tif 000006
【図５】
2018128991.tif 000007
【図６】
2018128991.tif 000008
【図７】
2018128991.tif 000009
【図８】
2018128991.tif 000010
【図９】
2018128991.tif 000011