JP7008410B2 - Memory controller and method - Google Patents
Memory controller and method Download PDFInfo
- Publication number
- JP7008410B2 JP7008410B2 JP2017023473A JP2017023473A JP7008410B2 JP 7008410 B2 JP7008410 B2 JP 7008410B2 JP 2017023473 A JP2017023473 A JP 2017023473A JP 2017023473 A JP2017023473 A JP 2017023473A JP 7008410 B2 JP7008410 B2 JP 7008410B2
- Authority
- JP
- Japan
- Prior art keywords
- row address
- count value
- holding means
- row
- held
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 23
- 238000010586 diagram Methods 0.000 description 12
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 3
- 230000006866 deterioration Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000010494 dissociation reaction Methods 0.000 description 1
- 230000005593 dissociations Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Landscapes
- Memory System (AREA)
- Dram (AREA)
Description
本発明は、メモリコントローラおよび方法に関する。 The present invention relates to a memory controller and a method.
近年、DRAM(Dynamic Random Access Memory)の製造プロセスの微細化が進んでいる。DRAMの製造プロセスが40nmを下回り、密度が増加すると、隣接するワードラインに対するクロストーク等の電気的影響により、隣接するワードラインへつながるメモリセルへのリーク電流の影響が顕著となる。これにより、メモリコントローラによる特定のROWに対するActivateコマンドの発行が集中した場合、DRAMのメモリセル内部のデータが破損する虞がある。これを、ROW HAMMER問題という。 In recent years, the manufacturing process of DRAM (Dynamic Random Access Memory) has been miniaturized. When the DRAM manufacturing process is less than 40 nm and the density is increased, the influence of the leakage current on the memory cell connected to the adjacent word line becomes remarkable due to the electric influence such as crosstalk on the adjacent word line. As a result, when the activation commands are centrally issued by the memory controller to a specific ROW, the data inside the memory cell of the DRAM may be damaged. This is called the ROW HAMMER problem.
ROW HAMMER問題への対策として、LPDDR4の規格にはTarget Row Refreshコマンド(以下、TRRと称す)が定義されている。TRRは、DRAMのあるROWに対するActivateコマンドの発行数が、一定期間内に上限値に達した場合、該当するROWに対してメモリコントローラから特定のシーケンスを実行する操作である。この上限値はMAC(Maximum Activate Count)と呼ばれる。TRRを実施すると、メモリセル内部のデータ破損を回避することができる。 As a countermeasure to the ROW HAMMER problem, the Target Row Refresh command (hereinafter referred to as TRR) is defined in the LPDDR4 standard. TRR is an operation of executing a specific sequence from the memory controller for a ROW of a DRAM when the number of active commands issued to the ROW reaches the upper limit within a certain period of time. This upper limit is called MAC (Maximum Activate Count). By implementing TRR, it is possible to avoid data corruption inside the memory cell.
しかしながら、TRRの機能をメモリコントローラに実装する際には、各ROWへのActivateコマンドの発行数を計測しなければならない。LPDDR4の場合、MACの値は最大70万(20bit長のカウンタが必要)であり、DRAMのROW数は最小容量である4Gbitの場合でもチャネルあたり131K個となる。そのため、単純な実装を行うと、回路規模が大きくなる。これに対応して特許文献1では、回路規模を抑制しながら、Activateコマンドの発行数を計測し、TRRを実行する方法が提案されている。
However, when implementing the TRR function in the memory controller, the number of Activate commands issued to each ROW must be counted. In the case of LPDDR4, the maximum MAC value is 700,000 (a counter having a length of 20 bits is required), and the number of ROWs of the DRAM is 131 K per channel even in the case of 4 Gbit, which is the minimum capacity. Therefore, if a simple implementation is performed, the circuit scale will increase. Correspondingly,
特許文献1に示されている手法では、メモリコントローラは、ROWアドレスと、各ROWアドレスへのActivateコマンドの発行数とを対応付けて保持するテーブルを持つ。このテーブルのエントリ数は、一定期間内でMACに達することの可能なROWの個数に基づいており、前述の単純な実装と比較して、回路規模を削減することができる。
In the method shown in
しかしながら、特許文献1に示されている手法は、テーブルのエントリ数を減らす代わりに発行数の正確さを犠牲にしている。したがって、ROWアドレスへの実際のActivateコマンドの発行数と、テーブルに保持されている発行数と、の間に乖離が生じうる。この乖離により無駄なTRRが発生し、性能の低下につながる虞がある。
However, the method shown in
本発明はこうした課題に鑑みてなされたものであり、その目的は、TRRを実装したメモリコントローラにおいて、回路規模を抑制しつつ無駄なTRRの発生を抑制できる技術の提供にある。 The present invention has been made in view of these problems, and an object of the present invention is to provide a technique capable of suppressing the generation of unnecessary TRR while suppressing the circuit scale in a memory controller in which TRR is mounted.
本発明のある態様はメモリコントローラに関する。このメモリコントローラは、ROWアドレスが複数のグループに分けられたDRAMを制御するメモリコントローラであって、ROWアドレスと該ROWアドレスに対してActivateコマンドが発行されると更新されるカウント値とを対応付けて保持する第1保持手段であって、ROWアドレスを保持可能なエントリの数がROWアドレスの総数よりも小さい、第1保持手段と、第1保持手段に保持されるカウント値が所定の条件を満たすと対応するROWアドレスに関するTarget Row Refreshコマンドを発行する制御手段と、ROWアドレスの複数のグループそれぞれに対応する複数のカウント値を保持する第2保持手段と、を備え、制御手段は、第1保持手段に保持されていないROWアドレスである第1ROWアドレスに対してActivateコマンドが発行され、かつ、第1保持手段に空いているエントリがない場合、第1保持手段に保持されているROWアドレスのなかからカウント値に関する所定の基準にしたがい選択されたROWアドレスである第2ROWアドレスを第1ROWアドレスで置き換えると共に、第2ROWアドレスが属するグループと第1ROWアドレスが属するグループとが異なる場合には、第2保持手段に保持されている複数のカウント値の内、第1ROWアドレスが属するグループに対応するカウント値を参照して第1ROWアドレスに対応するカウント値を設定し、第2ROWアドレスが属するグループと第1ROWアドレスが属するグループとが同一である場合は、第2ROWアドレスに対応して第1保持手段に保持されているカウント値を更新して、更新したカウント値を第1ROWアドレスに対応するカウント値として設定する。 One aspect of the invention relates to a memory controller. This memory controller is a memory controller that controls a DRAM whose ROW address is divided into a plurality of groups, and associates a ROW address with a count value that is updated when an Activate command is issued for the ROW address. The first holding means, in which the number of entries that can hold the ROW address is smaller than the total number of ROW addresses, and the count value held by the first holding means satisfy predetermined conditions. A control means for issuing a Target Row Refresh command for a corresponding ROW address when satisfied, and a second holding means for holding a plurality of count values corresponding to each of a plurality of groups of ROW addresses are provided, and the control means is the first. If the Activate command is issued for the first ROW address, which is a ROW address that is not held by the holding means, and there is no free entry in the first holding means, the ROW address held by the first holding means If the second ROW address, which is the ROW address selected according to a predetermined criterion for the count value, is replaced with the first ROW address, and the group to which the second ROW address belongs and the group to which the first ROW address belongs are different, the second ROW address is used. Among the plurality of count values held in the holding means, the count value corresponding to the first ROW address is set by referring to the count value corresponding to the group to which the first ROW address belongs, and the group to which the second ROW address belongs and the first ROW are set. When the group to which the address belongs is the same, the count value held in the first holding means is updated corresponding to the second ROW address, and the updated count value is set as the count value corresponding to the first ROW address. do.
本発明によれば、TRRを実装したメモリコントローラにおいて、回路規模を抑制しつつ無駄なTRRの発生を抑制できる。 According to the present invention, in a memory controller equipped with TRR, it is possible to suppress the generation of unnecessary TRR while suppressing the circuit scale.
以下、各図面に示される同一または同等の構成要素、部材、処理、信号には、同一の符号を付するものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。 Hereinafter, the same or equivalent components, members, processes, and signals shown in the drawings shall be designated by the same reference numerals, and duplicate description thereof will be omitted as appropriate. In addition, some of the members that are not important for explanation in each drawing are omitted.
特許文献1に記載の手法では、メモリコントローラがActivateコマンドを発行した際、次のように動作する。まず、テーブルの管理部は、もしActivateコマンドの発行先のROWアドレスがテーブルに存在せず、かつ、テーブルに空きがない場合、最も小さいActivateコマンド発行数を持つROWアドレスのエントリを置換する。この時、テーブルの管理部は、置換前のエントリに関連付けられているActivateコマンド発行数を、置換後のエントリに関連付けられるActivateコマンド発行数にコピーし、続いてそのActivateコマンド発行数をインクリメントする。つまり、置換後のROWアドレスに対して発行された、置換時点までのActivateコマンド発行数の大小によらず、置換前のROWアドレスに対して関連付けられていたActivateコマンド発行数に1を足した値が置換後のROWアドレスに対して関連付けられる。
In the method described in
この仕組みにおける問題は、テーブルの管理部が、置換時にActivateコマンド発行数にのみ着目している点である。例えば、DRAMのBank0のROWアドレスへアクセスが頻発し、テーブルに空きがなく、Bank0のROWアドレスで占められている状況を考える。この時、初めてBank1のROWアドレスへアクセスが発生した場合、テーブルの管理部は、テーブル内の最小のActivateコマンド発行数と関連付けられたBank0のROWアドレスのエントリをBank1のROWアドレスで置換する。実際はBank1のROWアドレスへActivateコマンドが発行されたのは初めてであるにも関わらず、置換によりテーブルに格納されるBank1のROWアドレスには、実際より多くのActivateコマンド発行数が関連付けられる。このように、Bank1のROWアドレスへのアクセスの実態と保持されるコマンド発行数との間に乖離が発生する。乖離が発生すると、無駄なTRRが発生して、性能低下が生じうる。 The problem with this mechanism is that the table management unit focuses only on the number of Activate commands issued at the time of replacement. For example, consider a situation in which access to the ROW address of Bank0 of DRAM occurs frequently, the table is full, and the ROW address of Bank0 is occupied. At this time, when the ROW address of Bank1 is accessed for the first time, the management unit of the table replaces the entry of the ROW address of Bank0 associated with the minimum number of Activate commands issued in the table with the ROW address of Bank1. Although it is the first time that an Activate command has been issued to the ROW address of Bank1, the ROW address of Bank1 stored in the table by replacement is associated with a larger number of Activate commands issued than the actual number. In this way, there is a discrepancy between the actual state of access to the ROW address of Bank1 and the number of commands issued. When the dissociation occurs, useless TRR occurs and performance deterioration may occur.
特許文献1に記載の技術では、あるROWアドレスに対してActivateコマンド(以下、ACTと称す)が発行された時、テーブルに空きがなく、かつテーブル内に同じROWアドレスのエントリがない場合、テーブル外へエントリ(ROWアドレスとACT発行数カウントとから成る)が追い出される。これに対して、実施の形態に係るメモリコントローラでは、追い出されたエントリのうちのACT発行数カウントを保持する保持部が設けられる。この保持部は、バンクやアドレスレンジごとに用意され、追い出されたエントリのROWアドレスのバンク/アドレスレンジに対応する保持部に、追い出されたエントリのACT発行数カウントが登録される。また、あるバンク/アドレスレンジのROWアドレスへのACT発行があった場合、そのバンク/アドレスレンジに対応して保持部に保持されているACT発行数カウントがテーブルに書き戻され、インクリメントされる。これにより、特許文献1に記載の技術と比較して、実際のROWアドレスへのアクセス数とACT発行数との乖離を抑制することができ、無駄なTRRの発生を抑制することができる。
In the technique described in
図1は、実施の形態に係るメモリコントローラ100の機能及び構成を示すブロック図である。メモリコントローラ100は、発行部101と、制御部102と、テーブル106と、バンク毎最大値保持部105と、を備える。メモリコントローラ100は、DRAM110に接続され、DRAM110にDRAMコマンドCMDを送信することでDRAM110を制御する。DRAM110は、メモリコントローラ100から受信したDRAMコマンドCMDに従い、動作する。DRAM110はLPDDR4に準拠する。DRAM110は複数のバンクを有し、DRAM110のROWアドレスは、複数のバンクに対応する複数のアドレスグループに分けられている。
FIG. 1 is a block diagram showing the functions and configurations of the
発行部101は、メモリコントローラ100が受信したメモリアクセス要求MARに応じて、DRAMコマンドCMDを発行する。発行部101は、例えば外部のCPUなどからメモリアクセス要求MARを受信すると、受信したメモリアクセス要求MARに含まれるROWアドレスに関するDRAMコマンドCMDを生成し、DRAM110に送信する。
制御部102は、発行部101が発行するDRAMコマンドCMDのうち、ACTがどのROWアドレスに発行されたかを監視する。
The issuing
The
テーブル106は、ROWアドレスと該ROWアドレスが属するバンクを特定するバンクIDと該ROWアドレスに対してACTが発行されると更新されるカウント値とを対応付けて保持する。バンクとアドレスグループとは一対一に対応するので、バンクIDは対応するアドレスグループを特定するIDでもある。テーブル106について、ROWアドレスを保持可能なエントリの数はDRAM110のROWアドレスの総数よりも小さい。
The table 106 holds the ROW address, the bank ID that identifies the bank to which the ROW address belongs, and the count value that is updated when the ACT is issued for the ROW address in association with each other. Since there is a one-to-one correspondence between a bank and an address group, the bank ID is also an ID that identifies the corresponding address group. For table 106, the number of entries that can hold ROW addresses is less than the total number of ROW addresses in
テーブル106は、アドレス保持部103と、カウント値保持部104と、を含む。アドレス保持部103は制御部102によって制御される。制御部102は、発行部101が発行したACTの発行先のバンクとROWアドレスとの組をアドレス保持部103に登録する、または格納する。以下、バンクとROWアドレスとの組をバンク・ROWアドレスと表記する。本実施の形態ではバンク・ROWアドレスは「バンク0、ROWアドレス0x000」のように表されるが、他の例としてROWアドレス0x000の左から3桁目をバンクIDとして利用してもよい。すなわち、0x000はバンク0のROWアドレス、0x100はバンク1のROWアドレス、という表記でもよい。
The table 106 includes an
カウント値保持部104は制御部102によって制御される。制御部102は、アドレス保持部103に保持されている各ROWアドレスについて、そのROWアドレスに対してACTが発行されると、カウント値保持部104に保持される対応するカウント値をインクリメントする。
バンク毎最大値保持部105は制御部102によって制御され、アドレスグループ(すなわちバンク)ごとに最大カウント値を保持する。
The count
The maximum
図2は、アドレス保持部103、カウント値保持部104およびバンク毎最大値保持部105の一例を示すデータ構造図である。アドレス保持部103およびカウント値保持部104はそれぞれ、MVC(Maximum Victim Count)(特許文献1参照)以下の個数のエントリを持つ。MVCは、DRAM110のリフレッシュ周期内に、メモリコントローラ100がACTを可能な限り発行したとき、MACに到達することのできるROWアドレスの個数である。この値はtREFW、tRC、MACの値に基づいて計算される。例えば、tREFWが32ms、tRCが42ns、MACが200K回の場合、ROWアドレスへのACTは、32ms/42ns=約762K回となる。メモリコントローラ100は、ひとつのリフレッシュ周期の間に約762K回のACTを発行することができる。この場合において、ひとつのリフレッシュ周期内にMACに到達することのできるROWアドレスの個数は、762K/100K=約7.62個となる。よって、この場合にアドレス保持部103およびカウント値保持部104のエントリは、8個必要となる。バンク毎最大値保持部105はアドレスグループの数=バンクの数個のエントリを持つ。
FIG. 2 is a data structure diagram showing an example of an
図3は、本実施の形態における、アドレスグループ301とバンク・ROWアドレス302との対応関係を示す説明図である。図3に示される通り、1つのアドレスグループに1つのバンクが割り当てられる。
FIG. 3 is an explanatory diagram showing a correspondence relationship between the
以上の構成によるメモリコントローラ100の動作を説明する。
図4は、メモリコントローラ100における一連の処理の流れを示すフローチャートである。発行部101がACTを発行すると、制御部102はアドレス保持部103およびカウント値保持部104のそれぞれの状態に依存して図4に示される処理を実行する。S401で制御部102は、発行部101が発行するDRAMコマンドCMDを監視し、ACTが発行されたか否かを判定する。ACTが発行されなかった場合、制御部102はS401を繰り返す。ACTが発行された場合、S402で制御部102はアドレス保持部103を参照し、発行されたACTの発行先のバンク・ROWアドレスがアドレス保持部103に存在するか否かを判定する。
The operation of the
FIG. 4 is a flowchart showing a flow of a series of processes in the
S402で存在すると判定された場合、S403で制御部102はカウント値保持部104を参照し、発行先のバンク・ROWアドレスと同じアドレス保持部103のエントリに対応してカウント値保持部104に保持されているカウント値を読み出す。制御部102は、読み出されたカウント値がしきい値、この場合MAC/2-1、に等しいか否かを判定する。S403で等しくない、すなわちしきい値未満であると判定された場合、S404で制御部102は読み出されたカウント値をインクリメント(例えば+1)する。制御部102は、インクリメント後のカウント値をカウント値保持部104に登録することでカウント値保持部104を更新する。その後、処理はS401に戻る。
When it is determined in S402 that it exists, the
S403で等しいと判定された場合、S405で発行部101は、ACTの発行先のバンク・ROWアドレスを対象とするTRRを発行する。S406で制御部102は、TRRの発行先のバンクに対応してバンク毎最大値保持部105に保持されている最大カウント値をリセットする、または初期化する。例えば、最大カウント値は0や1などの初期値となる。その後、処理はS401に戻る。
If it is determined in S403 that they are equal, the
S402で存在しないと判定された場合、S407で制御部102は、アドレス保持部103に空いているエントリ(以下、空きエントリと称す)があるか否かを判定する。S407であると判定された場合、S408で制御部102は、ACTの発行先のバンク・ROWアドレスを新たにアドレス保持部103の空きエントリに登録する。S409で制御部102は、ACTの発行先のバンクに対応してバンク毎最大値保持部105に保持されている最大カウント値を読み出す。S410、S411で制御部102は、読み出された最大カウント値を参照して、ACTの発行先のバンク・ROWアドレスに対応するカウント値を設定する。S410で制御部102は、読み出された最大カウント値をインクリメントする。S411で制御部102は、インクリメント後の値を、ACTの発行先のバンク・ROWアドレスに対応するカウント値としてカウント値保持部104に登録する。その後、処理はS401に戻る。
When it is determined in S402 that it does not exist, the
S407で空きエントリないと判定された場合、S412で制御部102は、カウント値保持部104に保持されるカウント値のなかから、最小のカウント値を特定する。S413で制御部102は、アドレス保持部103に保持されるバンク・ROWアドレスのなかから、特定された最小のカウント値に対応するバンク・ROWアドレスを選択する。S414で制御部102は、選択されたバンク・ROWアドレスを、ACTの発行先のバンク・ROWアドレスで置き換える。
When it is determined in S407 that there is no empty entry, the
S415で制御部102は、置換の前後でバンクが異なるか否かを判定する。すなわち、制御部102は、S413で選択されたバンク(置換前のバンク)と、ACTの発行先のバンク(置換後のバンク)と、の異同を判定する。S415で同じであると判定された場合、S416で制御部102はS412で特定された最小のカウント値をインクリメントする。制御部102は、インクリメント後のカウント値をACTの発行先のバンク・ROWアドレスに対応付けてカウント値保持部104に登録することでカウント値保持部104を更新する。その後、処理はS401に戻る。
In S415, the
S415で異なると判定された場合、S417で制御部102は、S413で選択されたバンクに対応してバンク毎最大値保持部105に保持されている最大カウント値を読み出す。S412で特定された最小のカウント値はS413で選択されたバンク・ROWアドレスに対応し、後のS411の処理で上書きされる(追い出される)ので、以下、追い出されるカウント値、と表現する。S418で制御部102は、追い出されるカウント値がS417で読み出された最大カウント値よりも大きいか否かを判定する。S418で大きいと判定された場合、S419で制御部102は、S413で選択されたバンクに対応する最大カウント値を追い出されるカウント値で上書きすることで、バンク毎最大値保持部105を更新する。S418で大きくないと判定された場合またはS419の後、制御部102はS409、S410、S411を行うことでACTの発行先バンク・ROWアドレスに対応するカウント値を登録する。その後、処理はS401に戻る。
If it is determined in S415 that they are different, the
以降、図5から図8を参照し、図4で説明した各条件における、制御部102の動作の詳細を説明する。これらの例は、発行部101がバンク0、ROWアドレス0x100に対してACT501を発行した時の制御部102の動作を示している。制御部102は、アドレス保持部103およびカウント値保持部104のそれぞれの状態を確認し、その状態に応じた処理を実施する。
Hereinafter, with reference to FIGS. 5 to 8, details of the operation of the
制御部102は、発行部101からのACT501の発行を検出すると、そのACT501の発行先であるバンク・ROWアドレスが、アドレス保持部103に存在するかどうかを判定する(図4のS402)。この状態に応じて、制御部102は続きの処理を決定する。
When the
図5は、あるシナリオでの制御部102の動作を説明するための図である。図5の例では、制御部102がアドレス保持部103内を検索(符号502)した結果、アドレス保持部103のエントリにバンク0、ROWアドレス0x100の組を発見する。制御部102は、発見されたバンク0、ROWアドレス0x100の組に対応するカウント値保持部104のエントリを確認する(符号503)。その結果、制御部102はバンク0、ROWアドレス0x100の組に対応するカウント値が「999999」(=MAC/2-1)となっていることを見出す(図4のS403)。
FIG. 5 is a diagram for explaining the operation of the
この条件において、制御部102は、アドレス保持部103からバンク0、ROWアドレス0x100の組のエントリを削除し(符号504)、そのエントリに対応するカウント値保持部104のエントリを削除する(符号505)。続いて、制御部102は、発行部101に対し、TRRを発行するよう指示する(符号506)。発行部101は制御部102からの指示を受けてDRAM110に対してTRRを発行する(図4のS405)。
Under this condition, the
図6は、あるシナリオでの制御部102の動作を説明するための図である。図6の例では、制御部102がアドレス保持部103内を検索(符号601)した結果、アドレス保持部103のエントリにバンク0、ROWアドレス0x100の組を発見する。制御部102は、発見されたバンク0、ROWアドレス0x100の組に対応するカウント値保持部104のエントリを確認する(符号602)。その結果、制御部102はバンク0、ROWアドレス0x100の組に対応するカウント値がMAC/2-1未満であることを見出す(図4のS403)。
FIG. 6 is a diagram for explaining the operation of the
この条件において、制御部102は、アドレス保持部103のバンク0、ROWアドレス0x100に対応してカウント値保持部104に保持されるカウント値をインクリメントする(図4のS404)。制御部102は、バンク0、ROWアドレス0x100の組に対応するカウント値保持部104のエントリに、インクリメントの結果である「80001」を書き込む(符号603)。このインクリメントの結果、カウント値保持部104のカウント値は、MAC/2に到達しないため、これ以外の処理は行われない。
Under this condition, the
図7は、あるシナリオでの制御部102の動作を説明するための図である。図7の例では、制御部102がアドレス保持部103内を検索(符号701)した結果、アドレス保持部103のエントリにバンク0、ROWアドレス0x100の組を発見しない。また制御部102は、アドレス保持部103に空きエントリが存在すると判定する(図4のS407)。
FIG. 7 is a diagram for explaining the operation of the
この条件において、制御部102は、アドレス保持部103の空きエントリに、バンク0、ROWアドレス0x100のエントリを新規に作成する(符号702、図4のS408)。制御部102は、バンク0(アドレスグループ0)に対応してバンク毎最大値保持部105に保持される最大カウント値(「0」)を読み出す(符号703、図4のS409)。制御部102は、読み出された最大カウント値をインクリメントする(0+1=1)。制御部102は、インクリメントの結果得られる値(「1」)を、バンク0、ROWアドレス0x100に対応するカウント値としてカウント値保持部104に登録する(符号704、図4のS411)。
Under this condition, the
図8は、あるシナリオでの制御部102の動作を説明するための図である。図8の例では、制御部102がアドレス保持部103内を検索(符号801)した結果、アドレス保持部103のエントリにバンク0、ROWアドレス0x100の組を発見しない。また制御部102は、アドレス保持部103に空きエントリが存在しないと判定する(図4のS407)。
FIG. 8 is a diagram for explaining the operation of the
この条件において、制御部102はカウント値保持部104を参照して最小のカウント値を特定し、特定された最小のカウント値に対応してアドレス保持部103に保持されるエントリを特定する。制御部102は、特定されたエントリを、ACT501の発行先のバンク・ロウアドレスの組で置換する(図4のS414)。この図8ではバンク1、ROWアドレス0x98のエントリが、バンク0、ROWアドレス0x100の組で置換される(符号802)。制御部102は、置換後のバンク・ROWアドレスの組(バンク0、ROWアドレス0x100)に対応してバンク毎最大値保持部105に保持される最大カウント値(「100」)を読み出す(符号803)。制御部102は読み出された値をインクリメントする(100+1=101)。制御部102は、インクリメントの結果得られる値(「101」)を、置換後のバンク・ROWアドレスの組に対応するカウント値保持部104のエントリに書き込む(図4のS411)。この図8では、バンク毎最大値保持部105のアドレスグループ0のエントリから「100」が読み出され、インクリメントされて「101」となり、カウント値保持部104の最小のカウント値「15000」がその値「101」で上書きされる(符号804)。
Under this condition, the
制御部102は、追い出されたバンク1のカウント値「15000」と、バンク1(アドレスグループ1)に対応してバンク毎最大値保持部105に保持されている最大カウント値(「14500」)と、を比較する(図4のS418)。15000>14500なので、制御部102はバンク1に対応する最大カウント値を15000で置き換える(符号805)。
The
本実施の形態に係るメモリコントローラ100によると、制御部102がアドレス保持部103、カウント値保持部104およびバンク毎最大値保持部105を上述のように制御することで、実際のROWアドレスへのアクセス数とACTの発行数との乖離を抑制することができる。その結果、無駄なTRRの発生を抑制することができる。
According to the
以上、実施の形態に係るメモリコントローラ100の構成と動作について説明した。この実施の形態は例示であり、その各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
The configuration and operation of the
実施の形態ではROWアドレスのアドレスグループがDRAM110のバンクに対応する場合について説明したが、これに限られない。ROWアドレスが複数のグループに分けられていればよく、その分け方は任意でよい。図9(a)、(b)は、ROWアドレスの分け方の例を示す図である。図9(a)の符号1001で示されるように、ROWアドレスによる区分を用いてもよい。または、図9(b)の符号1002に示されるように、マスタ毎の区分(マスタによってアクセス先のアドレスが固定されている場合)を用いてもよい。このように、任意の割り当て方法を採用することができる。
In the embodiment, the case where the address group of the ROW address corresponds to the bank of the
実施の形態では、カウント値がインクリメントされる場合について説明したが、これに限られず、ROWアドレスに対してACTが発行されるとカウント値を更新する態様であれば他の態様が用いられてもよい。例えば、ACTの発行に対してカウント値がデクリメントされてもよい。この場合、図4のS403やS418における判定基準も合わせて変更されてもよい。 In the embodiment, the case where the count value is incremented has been described, but the present invention is not limited to this, and other embodiments may be used as long as the count value is updated when the ACT is issued to the ROW address. good. For example, the count value may be decremented for the issuance of ACT. In this case, the determination criteria in S403 and S418 in FIG. 4 may also be changed.
実施の形態では、カウント値がしきい値=MAC/2-1に達するとTRRが発行される場合について説明したが、これに限られず、他のしきい値が用いられてもよいし、しきい値以外の他の条件が用いられてもよい。 In the embodiment, the case where the TRR is issued when the count value reaches the threshold value = MAC / 2-1 has been described, but the present invention is not limited to this, and other threshold values may be used. Conditions other than the threshold value may be used.
実施の形態では、図4のS412において最小のカウント値が特定され、S413において特定されたカウント値に対応するバンク・ROWアドレスが選択される場合について説明したが、これに限られない。アドレス保持部103に保持されているバンク・ROWアドレスのなかからカウント値に関する所定の基準にしたがいバンク・ROWアドレスが選択されてもよい。例えば、極小のカウント値が特定されてもよい。あるいはまた、カウント値保持部104から小さい方から3つのカウント値を選択し、該3つのカウント値のなかからランダムに選択したひとつに対応してアドレス保持部103に保持されるバンク・ROWアドレスを選択してもよい。
In the embodiment, the case where the minimum count value is specified in S412 of FIG. 4 and the bank ROW address corresponding to the count value specified in S413 is selected is not limited thereto. From the bank / ROW addresses held in the
S412における最小のカウント値は、カウント値保持部104に保持されるカウント値のなかで、MAC/2-1に到達するという条件を満たすために必要なインクリメントの回数が最も多いカウント値であると言うことができる。すなわち、S412では、カウント値保持部104に保持されているカウント値のなかでTRR発行の条件を満たすために必要な更新の回数が最も多いカウント値を特定しているといえる。
The minimum count value in S412 is the count value in which the number of increments required to satisfy the condition of reaching MAC / 2-1 is the largest among the count values held in the count
実施の形態では、図4のS406においてTRRの発行を契機として対応するバンクの最大カウント値をリセットする場合について説明したが、これに限られない。例えば、バンク毎最大値保持部105に保持される最大カウント値は経時的に自動的に減少してもよいし、またはバンク毎最大値保持部105から最大カウント値を読み出したことを契機としてその最大カウント値がリセットされてもよい。
In the embodiment, the case where the maximum count value of the corresponding bank is reset when the TRR is issued in S406 of FIG. 4 has been described, but the present invention is not limited to this. For example, the maximum count value held in the maximum
実施の形態では、DRAM110がLPDDR4に準拠する場合について説明したが、これに限られず、ROWアドレスが複数のグループに分けられる任意のDRAMに本実施の形態に係る技術的思想を適用可能である。
In the embodiment, the case where the
100 メモリコントローラ、 101 発行部、 102 制御部、 103 アドレス保持部、 104 カウント値保持部、 105 バンク毎最大値保持部、 110 DRAM。 100 memory controller, 101 issuing unit, 102 control unit, 103 address holding unit, 104 count value holding unit, 105 maximum value holding unit for each bank, 110 DRAM.
Claims (11)
ROWアドレスと該ROWアドレスに対してActivateコマンドが発行されると更新されるカウント値とを対応付けて保持する第1保持手段であって、ROWアドレスを保持可能なエントリの数がROWアドレスの総数よりも小さい、第1保持手段と、
前記第1保持手段に保持されるカウント値が所定の条件を満たすと対応するROWアドレスに関するTarget Row Refreshコマンドを発行する制御手段と、
ROWアドレスの複数のグループそれぞれに対応する複数のカウント値を保持する第2保持手段と、を備え、
前記制御手段は、前記第1保持手段に保持されていないROWアドレスである第1ROWアドレスに対してActivateコマンドが発行され、かつ、前記第1保持手段に空いているエントリがない場合、前記第1保持手段に保持されているROWアドレスのなかからカウント値に関する所定の基準にしたがい選択されたROWアドレスである第2ROWアドレスを前記第1ROWアドレスで置き換えると共に、前記第2ROWアドレスが属するグループと前記第1ROWアドレスが属するグループとが異なる場合には、前記第2保持手段に保持されている複数のカウント値の内、前記第1ROWアドレスが属するグループに対応するカウント値を参照して前記第1ROWアドレスに対応するカウント値を設定し、前記第2ROWアドレスが属するグループと前記第1ROWアドレスが属するグループとが同一である場合は、前記第2ROWアドレスに対応して前記第1保持手段に保持されているカウント値を更新して、当該更新したカウント値を前記第1ROWアドレスに対応するカウント値として設定するメモリコントローラ。 A memory controller that controls DRAMs whose ROW addresses are divided into multiple groups.
It is the first holding means that holds the ROW address in association with the count value that is updated when the Activate command is issued for the ROW address, and the number of entries that can hold the ROW address is the total number of ROW addresses. Smaller than the first holding means,
When the count value held in the first holding means satisfies a predetermined condition, a control means for issuing a Target Row Refresh command regarding the corresponding ROW address, and a control means.
A second holding means for holding a plurality of count values corresponding to each of a plurality of groups of ROW addresses is provided.
When the Activate command is issued to the first ROW address, which is a ROW address that is not held by the first holding means, and there is no vacant entry in the first holding means, the first holding means said. The second ROW address, which is the ROW address selected according to a predetermined criterion for the count value from the ROW addresses held in the holding means, is replaced with the first ROW address, and the group to which the second ROW address belongs and the first ROW are described. When the group to which the address belongs is different, the count value corresponding to the group to which the first ROW address belongs is referred to among the plurality of count values held in the second holding means to correspond to the first ROW address. When the group to which the second ROW address belongs and the group to which the first ROW address belongs are the same, the count value held in the first holding means corresponding to the second ROW address is set. Is updated and the updated count value is set as the count value corresponding to the first ROW address.
ROWアドレスと該ROWアドレスに対してActivateコマンドが発行されると更新されるカウント値とを対応付けて保持する第1保持手段であって、ROWアドレスを保持可能なエントリの数がROWアドレスの総数よりも小さい、第1保持手段と、
前記第1保持手段に保持されるカウント値が所定の条件を満たすと対応するROWアドレスに関するTarget Row Refreshコマンドを発行する制御手段と、
ROWアドレスの複数のグループそれぞれに対応する複数のカウント値を保持する第2保持手段と、を備え、
前記制御手段は、前記第1保持手段に保持されていないROWアドレスである第1ROWアドレスに対してActivateコマンドが発行され、かつ、前記第1保持手段に空いているエントリがある場合、前記第1ROWアドレスを該エントリに登録すると共に、前記第2保持手段に保持されている複数のカウント値の内、前記第1ROWアドレスが属するグループに対応するカウント値を参照して前記第1ROWアドレスに対応するカウント値を設定するメモリコントローラ。 A memory controller that controls DRAMs whose ROW addresses are divided into multiple groups.
It is the first holding means that holds the ROW address in association with the count value that is updated when the Activate command is issued for the ROW address, and the number of entries that can hold the ROW address is the total number of ROW addresses. Smaller than the first holding means,
When the count value held in the first holding means satisfies a predetermined condition, a control means for issuing a Target Row Refresh command regarding the corresponding ROW address, and a control means.
A second holding means for holding a plurality of count values corresponding to each of a plurality of groups of ROW addresses is provided.
When the Activate command is issued to the first ROW address, which is a ROW address that is not held by the first holding means, and the first holding means has an empty entry, the control means said the first ROW. The address is registered in the entry, and among the plurality of count values held in the second holding means, the count corresponding to the first ROW address is referred to by referring to the count value corresponding to the group to which the first ROW address belongs. A memory controller that sets the value.
前記制御手段は、前記第1保持手段に保持されるIDを参照することで前記第1ROWアドレスが属するグループを特定する請求項1から6のいずれか一項に記載のメモリコントローラ。 The first holding means holds the ROW address, the ID that identifies the group to which the ROW address belongs, and the count value that is updated when the Activate command is issued for the ROW address in association with each other.
The memory controller according to any one of claims 1 to 6, wherein the control means refers to an ID held by the first holding means to specify a group to which the first ROW address belongs.
ROWアドレスと該ROWアドレスに対してActivateコマンドが発行されると更新されるカウント値とを対応付けて第1保持手段に保持することであって、ROWアドレスを保持可能なエントリの数がROWアドレスの総数よりも小さい、保持することと、
前記第1保持手段に保持されるカウント値が所定の条件を満たすと対応するROWアドレスに関するTarget Row Refreshコマンドを発行することと、
ROWアドレスの複数のグループそれぞれに対応する複数のカウント値を第2保持手段に保持することと、
前記第1保持手段に保持されていないROWアドレスである第1ROWアドレスに対してActivateコマンドが発行され、かつ、前記第1保持手段に空いているエントリがない場合、前記第1保持手段に保持されているROWアドレスのなかからカウント値に関する所定の基準にしたがい選択されたROWアドレスである第2ROWアドレスを前記第1ROWアドレスで置き換えると共に、前記第2ROWアドレスが属するグループと前記第1ROWアドレスが属するグループとが異なる場合には、前記第2保持手段に保持されている複数のカウント値の内、前記第1ROWアドレスが属するグループに対応するカウント値を参照して前記第1ROWアドレスに対応するカウント値を設定し、前記第2ROWアドレスが属するグループと前記第1ROWアドレスが属するグループとが同一である場合は、前記第2ROWアドレスに対応して前記第1保持手段に保持されているカウント値を更新して、当該更新したカウント値を前記第1ROWアドレスに対応するカウント値として設定することと、を含む方法。 A method executed by a memory controller that controls a DRAM whose ROW address is divided into multiple groups.
The ROW address is associated with the count value updated when the Activate command is issued for the ROW address and held in the first holding means, and the number of entries that can hold the ROW address is the ROW address. To keep, less than the total number of
When the count value held in the first holding means satisfies a predetermined condition, the Target Row Refresh command for the corresponding ROW address is issued.
Holding a plurality of count values corresponding to each of a plurality of groups of ROW addresses in the second holding means, and
If the Activate command is issued to the first ROW address, which is a ROW address that is not held by the first holding means, and there is no free entry in the first holding means, the first holding means holds the command. The second ROW address, which is the ROW address selected according to a predetermined criterion for the count value, is replaced with the first ROW address, and the group to which the second ROW address belongs and the group to which the first ROW address belongs When is different, among the plurality of count values held in the second holding means, the count value corresponding to the first ROW address is set with reference to the count value corresponding to the group to which the first ROW address belongs. When the group to which the second ROW address belongs and the group to which the first ROW address belongs are the same, the count value held in the first holding means is updated corresponding to the second ROW address. A method including setting the updated count value as a count value corresponding to the first ROW address.
ROWアドレスと該ROWアドレスに対してActivateコマンドが発行されると更新されるカウント値とを対応付けて第1保持手段に保持することであって、ROWアドレスを保持可能なエントリの数がROWアドレスの総数よりも小さい、保持することと、
前記第1保持手段に保持されるカウント値が所定の条件を満たすと対応するROWアドレスに関するTarget Row Refreshコマンドを発行することと、
ROWアドレスの複数のグループそれぞれに対応する複数のカウント値を第2保持手段に保持することと、
前記第1保持手段に保持されていないROWアドレスである第1ROWアドレスに対してActivateコマンドが発行され、かつ、前記第1保持手段に空いているエントリがある場合、前記第1ROWアドレスを該エントリに登録すると共に、前記第2保持手段に保持されている複数のカウント値の内、前記第1ROWアドレスが属するグループに対応するカウント値を参照して前記第1ROWアドレスに対応するカウント値を設定することと、を含む方法。 A method executed by a memory controller that controls a DRAM whose ROW address is divided into multiple groups.
The ROW address is associated with the count value updated when the Activate command is issued for the ROW address and held in the first holding means, and the number of entries that can hold the ROW address is the ROW address. To keep, less than the total number of
When the count value held in the first holding means satisfies a predetermined condition, the Target Row Refresh command for the corresponding ROW address is issued.
Holding a plurality of count values corresponding to each of a plurality of groups of ROW addresses in the second holding means, and
If an Activate command is issued for the first ROW address, which is a ROW address that is not held by the first holding means, and there is an empty entry in the first holding means, the first ROW address is used as the entry. At the same time as registering, among the plurality of count values held in the second holding means, the count value corresponding to the first ROW address is set by referring to the count value corresponding to the group to which the first ROW address belongs. And how to include.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017023473A JP7008410B2 (en) | 2017-02-10 | 2017-02-10 | Memory controller and method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017023473A JP7008410B2 (en) | 2017-02-10 | 2017-02-10 | Memory controller and method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018128991A JP2018128991A (en) | 2018-08-16 |
JP7008410B2 true JP7008410B2 (en) | 2022-01-25 |
Family
ID=63173049
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017023473A Active JP7008410B2 (en) | 2017-02-10 | 2017-02-10 | Memory controller and method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7008410B2 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7155679B2 (en) | 2018-07-06 | 2022-10-19 | マツダ株式会社 | Diesel engine fuel injection controller |
CN110535861B (en) * | 2019-08-30 | 2022-01-25 | 杭州迪普信息技术有限公司 | Method and device for counting SYN packet number in SYN attack behavior identification |
JP7574720B2 (en) | 2021-04-05 | 2024-10-29 | 富士通株式会社 | MEMORY MANAGEMENT DEVICE, MEMORY MANAGEMENT METHOD, AND MEMORY MANAGEMENT PROGRAM |
KR20230135424A (en) | 2022-03-16 | 2023-09-25 | 삼성전자주식회사 | Memory device and refresh method thereof |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140006704A1 (en) | 2012-06-30 | 2014-01-02 | Zvika Greenfield | Row hammer condition monitoring |
US20140156923A1 (en) | 2012-11-30 | 2014-06-05 | Intel Corporation | Row hammer monitoring based on stored row hammer threshold value |
US20140177370A1 (en) | 2012-12-21 | 2014-06-26 | Intel Corporation | Method, apparatus and system for responding to a row hammer event |
JP2015133119A (en) | 2014-01-15 | 2015-07-23 | 三星電子株式会社Samsung Electronics Co.,Ltd. | Method of tracking activations to memory rows, and memory controller therefor |
-
2017
- 2017-02-10 JP JP2017023473A patent/JP7008410B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140006704A1 (en) | 2012-06-30 | 2014-01-02 | Zvika Greenfield | Row hammer condition monitoring |
WO2014004111A1 (en) | 2012-06-30 | 2014-01-03 | Intel Corporation | Row hammer condition monitoring |
US20140156923A1 (en) | 2012-11-30 | 2014-06-05 | Intel Corporation | Row hammer monitoring based on stored row hammer threshold value |
JP2016504702A (en) | 2012-11-30 | 2016-02-12 | インテル・コーポレーション | Row hammer monitoring based on stored row hammer thresholds |
US20140177370A1 (en) | 2012-12-21 | 2014-06-26 | Intel Corporation | Method, apparatus and system for responding to a row hammer event |
JP2015133119A (en) | 2014-01-15 | 2015-07-23 | 三星電子株式会社Samsung Electronics Co.,Ltd. | Method of tracking activations to memory rows, and memory controller therefor |
Also Published As
Publication number | Publication date |
---|---|
JP2018128991A (en) | 2018-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11640333B2 (en) | Systems and methods for allocating blocks of memory to multiple zones associated with corresponding error correction mechanisms | |
JP7008410B2 (en) | Memory controller and method | |
US8819359B2 (en) | Hybrid interleaving in memory modules by interleaving physical addresses for a page across ranks in a memory module | |
CN104090847B (en) | Address distribution method of solid-state storage device | |
US10198211B2 (en) | Hybrid memory system and refresh method thereof based on a read-to-write ratio of a page | |
EP2437433B1 (en) | Memory access monitoring method and device | |
US7783825B2 (en) | Nonvolatile memory system and management method for nonvolatile memory | |
KR102048762B1 (en) | Method, device and system for refreshing dynamic random access memory(dram) | |
US20190087125A1 (en) | Memory system and control method of memory system | |
CN107357534A (en) | A kind of dynamic switching method and system of flash block pattern | |
US8711627B2 (en) | Data storage device and block selection method for a flash memory | |
US20160328161A1 (en) | Method, apparatus, and storage medium for writing data | |
US11361811B2 (en) | Method and circuit for protecting a DRAM memory device from the row hammer effect | |
US20160070647A1 (en) | Memory system | |
US11037618B2 (en) | Row hammer prevention circuit, a memory module including the row hammer prevention circuit, and a memory system including the memory module | |
CN103493026A (en) | Methods of accessing memory cells, methods of distributing memory requests, systems, and memory controllers | |
KR102623702B1 (en) | Semiconductor device including a memory buffer | |
KR102567111B1 (en) | Storage device and method for operating storage device | |
US20150052327A1 (en) | Dynamic memory relocation | |
US9213498B2 (en) | Memory system and controller | |
US20190196956A1 (en) | Semiconductor device for managing wear leveling operation of a nonvolatile memory device | |
US10061513B2 (en) | Packet processing system, method and device utilizing memory sharing | |
US20130094317A1 (en) | Refresh control circuit and method of semiconductor apparatus | |
US10031884B2 (en) | Storage apparatus and method for processing plurality of pieces of client data | |
KR101689458B1 (en) | Semiconductor memory device and method for controlling semiconductor memory device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20201221 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20210103 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210113 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210415 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20210903 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20211029 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20211213 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220111 |