(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-18
(45)【発行日】2024-03-27
(54)【発明の名称】ロウハンマ緩和のホスト支援のためのリフレッシュコマンド制御
(51)【国際特許分類】
G06F 12/00 20060101AFI20240319BHJP
G11C 11/406 20060101ALI20240319BHJP
【FI】
G06F12/00 550B
G11C11/406 102
G11C11/406 300
G11C11/406 450
【外国語出願】
(21)【出願番号】P 2020019978
(22)【出願日】2020-02-07
【審査請求日】2023-02-01
(32)【優先日】2019-03-29
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】弁理士法人RYUKA国際特許事務所
(72)【発明者】
【氏名】ビル ネイル
(72)【発明者】
【氏名】クリストファー イー. コックス
【審査官】北村 学
(56)【参考文献】
【文献】米国特許出願公開第2018/0158507(US,A1)
【文献】特開2015-176629(JP,A)
【文献】特表2016-504702(JP,A)
【文献】米国特許出願公開第2015/0003180(US,A1)
【文献】国際公開第2017/175392(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G11C 11/406
(57)【特許請求の範囲】
【請求項1】
ダイナミックランダムアクセスメモリ(DRAM)デバイスであって、
複数行のメモリを有するメモリアレイと、
潜在的な攻撃行(aggressor row)を示すロウハンマカウンタと、
複数のアクティブ化コマンドおよび複数のリフレッシュコマンドを含むコマンドを、関連するメモリコントローラから受信するための入力/出力(I/O)ハードウェアであって、
前記メモリコントローラから前記DRAMデバイスによる閾値数のアクティブ化コマンド
の受信に応答して
送信されたリフレッシュウィンドウ内
で前記複数行をリフレッシュするために必要なリフレッシュコマンドの数を超える
余分のリフレッシュコマンド
に応答して、前記DRAMデバイスが
前記ロウハンマカウンタを参照して、ロウハンマ(row hammer)リフレッシュを実行し、
前記攻撃行
による潜在的な被害行(victim row)をリフレッシュする、入力/出力(I/O)ハードウェアとを
備える、
DRAMデバイス。
【請求項2】
前記ロウハンマカウンタが前記攻撃行を示すことに応答して、前記DRAMデバイスは、リフレッシュサイクルを奪取して、前記示された攻撃行に関連する前記被害行のリフレッシュを実行する、請求項1に記載のDRAMデバイス。
【請求項3】
前記ロウハンマカウンタは、前記リフレッシュウィンドウ内で、最も高いアクティブ化回数を持つ行のアドレスリストを保持する、請求項1または2に記載のDRAMデバイス。
【請求項4】
前記DRAMデバイスは外部リフレッシュコマンドを受信したとき、前記最も高いアクティブ化回数を持つ行に対し前記ロウハンマリフレッシュを実行する、請求項3に記載のDRAMデバイス。
【請求項5】
前記ロウハンマカウンタは、最近アクティブ化された行のアドレスを保持する、請求項1または2に記載のDRAMデバイス。
【請求項6】
前記
閾値数のアクティブ化コマンドの
受信が、特定の時間ウィンドウ内での前記
閾値数のアクティブ化コマンドの
受信を含む、請求項1に記載のDRAMデバイス。
【請求項7】
前記特定の時間ウィンドウ
がスライディングウィンドウを
含み、
前記スライディングウィンドウ内で各アクティブ化コマンドが
前記メモリコントローラのカウン
タを増加させ、時間が前記カウン
タを減少させる、請求項
6に記載のDRAMデバイス。
【請求項8】
前記
閾値数のアクティブ化コマンド
が、チャネルごとまたはランクごと
の閾値数のアクティブ化コマンドを
含む、請求項1から
7のいずれか一項に記載のDRAMデバイス。
【請求項9】
前記
閾値数のアクティブ化コマンド
が、バンクごとまたはバンクグループごと
の閾値数のアクティブ化コマンドを
含む、請求項1から
7のいずれか一項に記載のDRAMデバイス。
【請求項10】
前記
余分のリフレッシュコマンド
は、
前記余分のリフレッシュコマンドがロウハンマリフレッシュ
のためのものであることを示すタグを有するリフレッシュコマンドを含む、請求項1から
9のいずれか一項に記載のDRAMデバイス。
【請求項11】
メモリコントローラであって、
複数行のメモリを有するメモリデバイスに送信するコマンドをキューに入れるバッファと、
前記メモリデバイスに対するアクティブ化コマンドの数を追跡するカウンタと、
複数のアクティブ化コマンドおよび複数のリフレッシュコマンドを含む前記コマンドを前記メモリデバイスに送信する入力/出力(I/O)ハードウェアであって、
前記カウンタによる閾値数のアクティブ化コマンドの
検出に応答して、前記I/Oハードウェアが、リフレッシュウィンドウ内
で前記複数行をリフレッシュするために必要なリフレッシュコマンドの数を超えて、
余分のリフレッシュコマンドを送信し、前記
余分のリフレッシュコマンドが、前記メモリデバイスを、
ロウハンマリフレッシュを実行し
て潜在的な攻撃行
による潜在的な被害行
のリフレッシュ
をするようトリガする、入力/出力(I/O)ハードウェアとを
備える、メモリコントローラ。
【請求項12】
前記
閾値数のアクティブ化コマンドの
検出が、特定の時間ウィンドウ内での前記
閾値数のアクティブ化コマンドの
検出を含む、請求項
11に記載のメモリコントローラ。
【請求項13】
前記特定の時間ウィンドウ
がスライディングウィンドウを
含み、
前記スライディングウィンドウ内で各アクティブ化コマンドが前記カウンタを増加させ、時間が前記カウンタを減少させる、請求項
12に記載のメモリコントローラ。
【請求項14】
前記
閾値数のアクティブ化コマンド
が、前記メモリデバイスを含む複数のメモリデバイスのチャネルごとまたはランクごと
の閾値数のアクティブ化コマンドを
含む、請求項
11から
13のいずれか一項に記載のメモリコントローラ。
【請求項15】
前記
閾値数のアクティブ化コマンド
が、前記メモリデバイスのバンクごとまたはバンクグループごと
の閾値数のアクティブ化コマンド
を含む、請求項
11から
13のいずれか一項に記載のメモリコントローラ。
【請求項16】
前記
余分のリフレッシュコマンド
は、
前記余分のリフレッシュコマンドがロウハンマリフレッシュ
のためのものであることを示すタグを有するリフレッシュコマンドを含む、請求項
11から
15のいずれか一項に記載のメモリコントローラ。
【請求項17】
メモリデバイスを有するシステムであって、
複数行のメモリを有する複数のダイナミックランダムアクセスメモリ(DRAM)デバイスと、
前記複数のDRAMデバイスに結合されたメモリコントローラであって、前記メモリコントローラが、
前記メモリデバイスに対するアクティブ化コマンドの数を追跡するカウンタと、
複数のアクティブ化コマンドおよび複数のリフレッシュコマンドを含む複数のコマンドを前記メモリデバイスに送信する入力/出力(I/O)ハードウェアであって、
前記カウンタによる閾値数のアクティブ化コマンドの
検出に応答して、前記I/Oハードウェアが、リフレッシュウィンドウ内で前記複数行をリフレッシュするために必要なリフレッシュコマンドの数を超えて、
余分のリフレッシュコマンドを送信し、前記
余分のリフレッシュコマンドが、DRAMデバイスを、ロウハンマリフレッシュを実行し
て潜在的な攻撃行
による潜在的な被害行
のリフレッシュを
するようトリガする、入力/出力(I/O)ハードウェアと
を含む、メモリコントローラとを
備えるシステム。
【請求項18】
前記
閾値数のアクティブ化コマンドの
検出が、特定の時間ウィンドウ内での前記
閾値数のアクティブ化コマンドの
検出を含む、請求項
17に記載のシステム。
【請求項19】
前記特定の時間ウィンドウ
がスライディングウィンドウを
含み、
前記スライディングウィンドウ内で各アクティブ化コマンドが前記カウンタを増加させ、時間が前記カウンタを減少させる、請求項
18に記載のシステム。
【請求項20】
前記閾値数のアクティブ化コマンド
が、DRAMデバイスのチャネルごとまたはランクごと
の閾値数のアクティブ化コマンドを
含む、請求項
17から
19のいずれか一項に記載のシステム。
【請求項21】
前記
閾値数のアクティブ化コマンド
が、DRAMデバイスごと
の閾値数のアクティブ化コマンドを
含む、請求項
17から
19のいずれか一項に記載のシステム。
【請求項22】
前記
閾値数のアクティブ化コマンド
が、特定のDRAMデバイスのバンクごとまたはバンクグループごと
の閾値数のアクティブ化コマンドを
含む、請求項
17から
19のいずれか一項に記載のシステム。
【請求項23】
前記
余分のリフレッシュコマンド
は、
前記余分のリフレッシュコマンドがロウハンマリフレッシュ
のためのものであることを示すタグを有するリフレッシュコマンドを含む、請求項
17から
22のいずれか一項に記載のシステム。
【請求項24】
前記メモリコントローラに結合されたホストプロセッサデバイス、
ホストプロセッサに通信可能に結合されたディスプレイ、
ホストプロセッサに通信可能に結合されたネットワークインターフェイス、または
前記システムに電力を供給するバッテリ
のうちの1つまたは複数をさらに備える、請求項
17から
23のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
説明は、一般に、コンピュータメモリシステムに関し、より詳細な説明は、ロウハンマ(row hammer)イベントの緩和に関する。
【背景技術】
【0002】
コンピュータデバイスのサイズが縮小し続け、容量および機能が増加するにつれて、構成要素の製造に使用される最小デバイスジオメトリは減少し続ける。メモリデバイスジオメトリの減少により、継続的なシステムスケーリングが可能になるが、ロウハンマまたは行妨害イベントによるデータ損失の可能性が生じる。「ロウハンマ」とは、一定期間内に目標行(target row)または攻撃行(aggressor row)に繰り返しアクセスすることによって引き起こされる故障を指す。攻撃行にアクセスするためにアクティブ化を繰り返すと、目標行/攻撃行に隣接または近接する被害行(victim row)で故障を引き起こす可能性があり、目標行のアクティブ化が繰り返されると、被害行のパスゲートを横切る電荷の移動を引き起こし、被害行の非決定論的状態がもたらされる。ロウハンマは、DRAM(ダイナミックランダムアクセスメモリ)デバイスの既知の問題である。
【0003】
デバイスジオメトリの減少に伴い、ロウハンマイベントを引き起こす可能性のある特定の行へのアクティブ化の数は500Kから300Kになった。現在は100Kになると予測され、さらに約30Kから50Kの範囲のアクティブ化に減少するとさえ予測されている。より少ないアクティブ化によって引き起こされたロウハンマイベントの場合、リフレッシュウィンドウ内でより多くの行が攻撃行になる可能性があり、データ損失のリスクを減らすために、より多くのロウハンマ緩和が必要になる。
【0004】
メモリコントローラによって管理される従来のロウハンマ緩和は、メモリコントローラに大きな負担をかけ、メモリコントローラとDRAMとの間の協調管理は、メモリバスの帯域幅に負担をかける。現在、ほとんどのDRAMデバイスは、典型的には、ロウハンマリフレッシュを実行するためにリフレッシュサイクルを「奪取する(steal)」ことによって、ロウハンマ緩和を内部的に処理する。したがって、DRAMデバイス自体が、メモリコントローラによって発行されるリフレッシュサイクルをいくつロウハンマ緩和のために使用するかを決定する。
【0005】
しかし、ロウハンマの閾値が低下するにつれ、メモリデバイスは、デバイスのデータ完全性を損なうことなく合理的に取得できるリフレッシュよりも多くのリフレッシュを奪取する必要がある。選択肢の1つは、リフレッシュレートを上げることである。しかし、リフレッシュレートを上げると、ロウハンマリフレッシュが不要な場合でも、メモリサブシステムに電力および帯域幅に関する持続的要件が課せられる。したがって、リフレッシュレートを変更することは、ロウハンマ状態が存在しないときに、超過したリフレッシュのリスクがあるために非効率的である。
【図面の簡単な説明】
【0006】
以下の説明は、実装の例として与えられた例示を有する図の議論を含む。図面は、例として理解されるべきであり、限定するものではない。本明細書で使用される場合、1つまたは複数の例への言及は、本発明の少なくとも1つの実装に含まれる特定の特徴、構造、または特性を説明するものとして理解されるべきである。本明細書に現れる「一例では」または「代替例では」などの語句は、本発明の実装の例を提供し、必ずしもすべてが同じ実装を指すとは限らない。しかし、それらは必ずしも相互に排他的ではない。
【0007】
【
図1】ホスト支援によりロウハンマ緩和を実行するシステムの実施形態のブロック図である。
【0008】
【
図2】ロウハンマ緩和リフレッシュのための
余分の外部リフレッシュのコマンドシーケンスの一例のタイミング図である。
【0009】
【
図3】ロウハンマ緩和を支援するためのホストからの
余剰の外部リフレッシュを実装できるメモリサブシステムの一例のブロック図である。
【0010】
【
図4】異なるメモリ部分のロウハンマ緩和情報を追跡するための複数のカウンタの一例を示すブロック図である。
【0011】
【
図5】ホスト支援ロウハンマ緩和をサポートするシステムのコマンド真理値表で選択されたコマンドの一例を示す。
【0012】
【
図6】ホスト支援ロウハンマ緩和のためのプロセスの一例の流れ図である。
【0013】
【
図7】ホスト支援ロウハンマ緩和を実装できるメモリサブシステムの一例を示すブロック図である。
【0014】
【
図8】ホスト支援ロウハンマ緩和を実装できるコンピューティングシステムの一例を示すブロック図である。
【0015】
【
図9】ホスト支援ロウハンマ緩和を実装できるモバイルデバイスの一例を示すブロック図である。
【0016】
一部のまたはすべての例を示し得る図の非限定的な説明、ならびに他の可能な実装を含む、特定の詳細および実装の説明が続く。
【発明を実施するための形態】
【0017】
本明細書で説明するように、ロウハンマ緩和はホストにより支援され、およびメモリデバイスにより管理される。メモリデバイスは内部のロウハンマ緩和を実行し、メモリコントローラまたはホストは、追加のリフレッシュサイクルまたはリフレッシュコマンドを送信することにより、ロウハンマ緩和を支援することができる。システムは、不必要なリフレッシュに電力および帯域幅を使用するのを防ぐために、追加のリフレッシュサイクルを送信する必要性を追跡することができる。
【0018】
例えば、メモリコントローラは、メモリデバイスに送信されるアクティブ化コマンドの数を追跡でき、メモリコントローラは閾値数のアクティブ化コマンドに応答して、追加のリフレッシュコマンドを送信する。メモリデバイスは余剰(エクストラ)のリフレッシュコマンドに応答して、標準的なデータ完全性のためのリフレッシュの代わりに、ロウハンマ緩和のためのリフレッシュを実行することができる。余剰のリフレッシュコマンドで、メモリデバイスは、一定期間アクセスされていない行を単にリフレッシュする代わりに、潜在的な攻撃行による潜在的な被害行をリフレッシュすることができる。そのような実装では、単にリフレッシュレートを上げる代わりに、メモリデバイスは、ロウハンマ緩和を実行するのに利用可能なリフレッシュサイクルを十分に有するにもかかわらず、この余分のサイクルは、依然として効果的に要求に応じることができる。余剰のリフレッシュコマンドは、余分のリフレッシュコマンドと呼ぶことができる。一例では、余剰のリフレッシュコマンドは、ロウハンマの問題に対処するように設計されたホストからリフレッシュ管理(RFM)コマンドとして発行することができる。
【0019】
ホストコントローラまたはメモリコントローラは、ロウハンマ緩和に必要な余剰のリフレッシュを補償するために、メモリデバイス、例えば、ダイナミックランダムアクセスメモリ(DRAM)デバイスに追加のリフレッシュコマンドを送信する。追加のリフレッシュサイクルを提供することで、メモリデバイスは、標準的なリフレッシュ動作のために十分なリフレッシュサイクルを依然として提供することによってデータ完全性を損なうことなく、サイクルを奪取することが可能になる。一例では、メモリコントローラは、メモリデバイスに送信されたアクティブ化コマンドの数によって、送信する余剰のリフレッシュコマンドの数を決定する。メモリデバイスに送信されるアクティブ化の数と、メモリデバイスがロウハンマ緩和を実行するために奪取する必要があるリフレッシュの数との間には、高い相関関係がある。
【0020】
提供されるようなホスト支援ロウハンマ緩和により、ホストコントローラでは目標行リフレッシュ(TRR)プロトコルが不要になる。TRRは、コントローラがコントローラ自身の監視によってまたはメモリデバイスからのシグナリングによって、潜在的なロウハンマイベントを認識したときに発生する。TRRを使用すると、コントローラは目標行を示す特定のリフレッシュコマンドを送信でき、メモリデバイスは1つまたは複数の被害行をリフレッシュする。ホスト支援ロウハンマ緩和では、コントローラがTRRコマンドのために目標行を知る必要はない。さらに、ホスト支援ロウハンマ緩和は、特定の目標行が閾値数のアクティブ化の対象であるかどうかを考慮することなく、一般にアクティブ化の数を監視することで、ロウハンマ緩和の必要性を簡単に見積もることができる。
【0021】
ホスト支援ロウハンマ緩和では、どの行をリフレッシュするかという意思決定をメモリデバイスの制御に委ねることができる。リフレッシュの内部動作にはかなりのマージンがある傾向があり、メモリデバイスメーカは、単に最悪のシナリオに取り組むのではなく、自社のデバイスの特有の能力およびニーズを把握している。そのような能力により、メモリデバイスは、デバイス固有またはメーカ固有の方法でロウハンマ緩和およびリフレッシュ制御を実行することができる。したがって、例えば、DRAMメーカは、データ完全性に影響を与えることなく安全に奪取することができるリフレッシュの数を把握しており、メーカ特有のデバイスに対して合理性のある何らかの緩和を実行することができる。
【0022】
図1(WAS1)は、ホスト支援によりロウハンマ緩和を実行するシステムの実施形態のブロック図である。システム100は、ホストコントローラまたは単にコントローラとも呼ばれるメモリコントローラ110に結合されたメモリデバイス120を含む。メモリデバイス120は、メモリセルの隣接行を有する任意のタイプのメモリ技術を含むことができ、データはワード線または同等物を介してアクセス可能である。一例では、メモリデバイス120はDRAM技術を含む。メモリデバイス120の行は、決定論的状態を維持するためにリフレッシュされる必要がある。
【0023】
メモリデバイス120は、メモリセルまたは記憶セルのアレイを表すメモリアレイ130を含む。メモリセルは、1ビットのデータ、またはマルチレベルセル用に複数のビットを格納する。メモリアレイ130は、潜在的なロウハンマ状況の表現を含む。例として、メモリアレイ130はバンク140およびバンク150を示す。メモリアレイ130は複数のバンクを含むことができることが理解されるであろう。一般に、メモリのバンクまたはサブバンクは、別のバンクまたはサブバンクのメモリセルとは別々にアドレス指定可能なメモリセルを含み、したがって、メモリアレイ130の別の部分と並列にアクセス可能である。メモリアレイ130は、システム100に図示されていない部分を含むことができる。
【0024】
メモリデバイス120は、アクセスコマンドに基づいて列に電荷を加えるための回路を表す列デコーダ(dec)132を含む。一例では、当該回路は、列アドレスストローブ(CAS)コマンドに応答して列を選択する。メモリデバイス120は、メモリアクセスコマンドに基づいて行に選択電圧を印加するための回路を表す行デコーダ(dec)134を含む。一例では、当該回路は、行アドレスストローブ(RAS)コマンドに応答して列を選択する。
【0025】
メモリコントローラ110は、メモリデバイス120のためのコマンドを生成するコマンドロジック112を含む。コマンドは、書き込み(Write)コマンドまたは読み出し(Read)コマンドなどのコマンドを含むことができる。コマンドは、アクティブ化(Activate)コマンド、プリチャージ(Precharge)コマンド、リフレッシュ(Refresh)コマンド、またはその他のコマンドを含むこともできる。一例では、メモリコントローラ110は、メモリデバイス120のリフレッシュを制御するロジックを表すリフレッシュロジック172を含む。リフレッシュロジック172は、メモリデバイス120のリフレッシュの必要性を判定するための1つまたは複数のカウンタおよび、リフレッシュコマンドの送信を追跡するためのレジスタスペースを含むことができる。リフレッシュコマンドは外部リフレッシュコマンド(例えば、REF、REFpb)を含むことができ、この場合、メモリデバイスはメモリコントローラ110からのクロック信号に従って動作し続ける。リフレッシュコマンドはセルフリフレッシュコマンド(例えば、SRE)を含むことができ、この場合、メモリデバイスは、メモリコントローラからのクロック信号に基づくのではなく、内部クロックで動作する。外部リフレッシュは、そのコマンドを完了するための特定のウィンドウを有し、セルフリフレッシュとは、メモリデバイスが非特定の時間の間取り得る状態のことである。
【0026】
メモリコントローラ110は、メモリデバイス120へのコマンドシーケンスのスケジューリングおよび送信を管理するためのスケジューラ116を含む。スケジューラ116は、コマンドの順序、ならびにコマンドのタイミング要件を決定するためのロジックを含む。メモリコントローラ110は、どのコマンドを送信するかの決定を行わなければならない。また、メモリコントローラ110はタイミング要件への準拠を保証するために、コマンドの順序も決定する。スケジューラ116は、メモリコントローラ110がコマンドおよびタイミングに関する特定の決定を行うことを可能にすることができる。一例では、スケジューラ116は、リフレッシュウィンドウの間にいくつの外部リフレッシュコマンドを送信するかを決定する。スケジューラ116は、ロウハンマ緩和を可能にするための余剰のリフレッシュコマンドを生成することができる。
【0027】
一例では、メモリコントローラ110は、当該コントローラが閾値数のアクティブ化コマンドまたはアクティブ化がメモリデバイス120に送信された時点を判定できるようにするためのロウハンマ(RH)ロジック174を含む。例えば、ロウハンマロジック174は、潜在的なロウハンマ状態を監視するための1つもしくは複数のカウンタまたは他のロジックを含むことができる。一例では、ロウハンマロジック174は、アクティブ化カウンタが閾値数に達した時点を判定するコンパレータを含む。一例では、閾値数は、モードレジスタまたは他のレジスタまたはコンフィグレーションなどによって、レジスタ122などにプログラム可能である。メモリコントローラ110は、コンフィグレーションを読み取り、それをメモリコントローラ110の内部のレジスタまたは他のデバイス(具体的に図示せず)に格納することができる。
【0028】
メモリコントローラ110は、I/O(入力/出力)ハードウェア114を含む。I/O114は、トランシーバと、メモリコントローラ110が1つまたは複数のバスを介してメモリデバイス120に接続することを可能にする信号線インターフェイスハードウェアとを表す。I/O114は、メモリコントローラ110がコマンドをメモリデバイス120に送信することを可能にする。メモリコントローラ110は、メモリデバイス120に送信する一連のコマンドをバッファリングするバッファ176を含む。一例では、バッファ176はスケジューラ116の一部である。スケジューラ116は、コマンドおよびコマンドの送信順序を決定し、次いで、コマンドはI/O114を介した送信のためにバッファ176のキューに入れられ得る。
【0029】
ロウハンマ状態の例示のために、メモリアレイ130はバンク140内に目標行142を含む。物理的に近接した行または物理的に隣接した行は、当該隣接した行に対するリフレッシュ動作の前に、一定期間内の目標行142への繰り返しのアクセスに基づき、当該隣接した行に格納された1つまたは複数の値の意図しないプログラミングまたは妨害を受ける可能性がある。被害行144は、目標行142が繰り返しアクセスされるときにロウハンマの影響を受ける行を表す。被害行144がロウハンマイベントのリスクにさらされている場合、目標行142は攻撃行と呼ばれ得る。バンク140には、目標行142に対する被害行である別の行があり得る。
【0030】
一例では、バンク140は目標行146も含む。目標行146がバンク境界またはその近くにあると考えてみよう。メモリアレイ130内の行は、行が異なるバンクにある場合でも、変わらない空間を有し得ることが理解されるであろう。むしろ、あるバンクから別のバンクへの分離は、選択またはデコードのハードウェア要素によって定めることができる。したがって、行の物理レイアウトのアーキテクチャに応じて、バンク150の境界上の行も、目標行146へのアクセスに基づいてロウハンマイベントのリスクにさらされる可能性がある。一例では、目標行への繰り返しアクセスが複数の隣接行の妨害を発生させる可能性がある。図示されているように、目標行146は、バンク140の被害行148およびバンク150の被害行152の両方にロウハンマイベントをもたらす可能性がある。
【0031】
メモリデバイス120は、メモリコントローラ110のI/O114とインターフェイスするI/O126を含む。I/O126は、コマンド並びに他のコマンドの中でも特にアクティブ化コマンドおよびリフレッシュコマンドを受信するためのアドレス情報を受信するためのI/O114への対応する信号線を有する。一例では、I/O126は、メモリコントローラ110とデータを交換するために、データバスに対するインターフェイスを含む。
【0032】
メモリデバイス120は、メモリデバイス120の動作に関連するコンフィグレーション情報または値を格納するための1つまたは複数のレジスタまたは記憶場所を表すレジスタ122を含む。一例では、レジスタ122は1つまたは複数のモードレジスタを含む。一例では、レジスタ122は、メモリデバイス120に対する内部的なリフレッシュの適用を制御するためのコンフィグレーション情報を含む。一例では、レジスタ122は、ロウハンマ状態の前のアクティブ化の閾値数などのロウハンマ動作に関連する情報を含む。
【0033】
メモリデバイス120は、メモリデバイスに対してローカルなコントローラを表すコントローラ180を含む。コントローラ180は、コマンドに応答して動作を実行するハードウェアロジックを含む。コントローラ180は、ハードウェアロジックを制御し、メモリデバイス内の動作および動作の順序を制御するソフトウェアまたはファームウェアロジックを含む。一例では、コントローラ180はリフレッシュロジック160を含む。一例では、コントローラ180はRHカウンタ124を含む。コントローラ180は、I/O126を管理する。
【0034】
一例では、メモリデバイス120は、メモリアレイ130のリフレッシュを管理するためのメモリデバイス120内のロジックを表すリフレッシュロジック160を含む。一例では、リフレッシュロジック160は、リフレッシュ(ref)カウンタ162およびロウハンマ(RH)ロジック164を含む。リフレッシュカウンタ162は、リフレッシュされるべき行のアドレスを示すことができる。リフレッシュカウンタ162は、異なるバンクまたはサブバンクが、リフレッシュのために識別された異なるアドレスを有し得るため、複数のカウンタを表すことができる。ロウハンマロジック164は、メモリデバイス120がロウハンマ緩和を管理することを可能にする。ロウハンマロジック164は、1つまたは複数のカウンタ、潜在的な攻撃行のリスト、またはロウハンマ緩和を実行する他のロジックを含むことができる。一例では、ロウハンマ緩和は、アクティブ化コマンドを受信する最後の行アドレスの潜在的な被害行のリフレッシュを実行することによって行われる。そのような手法に伴うヒューリスティックは、ある行がハンマされているときに、その行のアドレスが、ロウハンマ緩和に使用するためのリフレッシュコマンドを受信する前に、アクティブ化コマンドを受信したばかりである可能性が最も高いことを認識している。平均的に、そのような手法は、十分なロウハンマ緩和動作が実行される場合、潜在的な被害行をリフレッシュするはずである。
【0035】
一例では、メモリデバイス120は、1つまたは複数のロウハンマ(RH)カウンタ124を含む。カウンタ124は、ロウハンマ検出ロジックであってもよいし、それを含んでもよい。一例では、メモリデバイス120は、潜在的なロウハンマ状態を検出し、ロウハンマイベントに関連するリスクを緩和する動作を実行する。一例では、カウンタ124は、繰り返しアクセスされている1つまたは複数の行に関連するカウントを保持する。例えば、カウンタ124は、リフレッシュウィンドウ内で最も高いアクティブ化カウントを有する行のオプションのアドレス(addr)リストを保持することができる。カウントは、リフレッシュ後にリセットすることができる。
【0036】
行ごとにアクティブ化の数を追跡することは、特定のメモリデバイスでは、バンクごとに100万以上のカウンタが必要になるため、実用的ではないことが理解されるであろう。メモリデバイスは、典型的にはロウハンマ緩和を適用するために、ヒューリスティックを採用するか、または確率に基づいて機能する。すべての行のアクティブ化を追跡する代わりに、選択した行のみを追跡することができる。カウンタが閾値数に達すると、リフレッシュロジック160はロウハンマリフレッシュを実行することができる。そのような実装では、新しい行がアクティブ化されるたびに、最も低いカウントを置き換えることができる。一例では、カウンタ124は、アクティブ化の数が最も高い行のリストを保持し、外部リフレッシュコマンドが受信されたときに、アクティブ化の数が最も高い1つまたは複数の行に対してロウハンマ緩和を実行する。したがって、リフレッシュロジック160は、ロウハンマリフレッシュ緩和を実行する前に、閾値数に達するまで必ずしも待つ必要はない。
【0037】
別のヒューリスティック手法は、アクティブ化を受信したランダム選択行にロウハンマリフレッシュをランダムに割り当てることである。そのような実装では、カウンタ124が最近アクティブ化された行のアドレスを任意選択で格納することを必要とするだけでよい。理論的には、繰り返しアクティブ化される行が、ロウハンマ緩和リフレッシュのためにランダムに選択される可能性がより高い。したがって、確率的に、ハンマされるかまたは繰り返しアクセスされる行は、ロウハンマ緩和のために選択される可能性が高い行でもある。そのような手法のロジックおよび回路要件は、行のリストを保持するために必要とされるものよりも単純であるが、ロウハンマ緩和の精度は低いものになる。
【0038】
リフレッシュロジック160は、メモリアレイ130内の行のリフレッシュを制御するためのメモリデバイス120内のロジックを表す。リフレッシュロジック160は、メモリコントローラ110のリフレッシュロジック172によって送信された外部リフレッシュコマンドに応答する。リフレッシュロジック160は、メモリデバイス120のセルフリフレッシュ動作の際にリフレッシュ動作を制御する。リフレッシュロジック160は、スケジュールされたリフレッシュ動作のための行アドレスを追跡するためのリフレッシュ(ref)カウンタ162を含む。スケジュールされたリフレッシュ動作には、リフレッシュ期間内にすべての行がリフレッシュされることを保証する、シーケンシャル行のリフレッシュが含まれる。メモリコントローラ110のリフレッシュロジック160は、リフレッシュ要件を満たすために十分なリフレッシュ動作がメモリデバイス120にスケジュールされることを確実にする役割を果たす。
【0039】
一例では、リフレッシュロジック172は、リフレッシュ期間に必要とするよりも多くのリフレッシュ動作をスケジュールする。説明したように、ロウハンマロジック174は、リフレッシュロジック160がメモリデバイス120に送信されたアクティブ化の数に基づいて、ロウハンマ緩和に使用するための余剰のまたは余分のリフレッシュを提供することができる。メモリコントローラ110によって提供される追加のロウハンマ緩和リフレッシュを用いると、ヒューリスティックな手法であっても、ロウハンマに起因するデータ損失の可能性を大幅に低減させることが理解されるであろう。
【0040】
一例では、リフレッシュロジック160は、ロウハンマ緩和のためのリフレッシュ動作を提供するロウハンマロジック164を含む。ロウハンマ緩和とは、行の妨害を回避するための潜在的な被害行のリフレッシュを指す。動作時に、カウンタ124はロウハンマロジック164に対し目標行を示すことができ、ロウハンマロジック164はリフレッシュロジック160による「リフレッシュの奪取」をトリガすることができる。リフレッシュの奪取とは、リフレッシュロジック160が、リフレッシュカウンタ162に示された行のリフレッシュを実行する代わりに、当該示された目標行に関連付けられた被害行のリフレッシュを実行することを指す。したがって、ロウハンマ緩和リフレッシュ動作は、リフレッシュ行ポインタまたはカウンタに関して順不同(アウトオブオーダ)である。ロウハンマ緩和には、1リフレッシュ動作全体または1リフレッシュサイクルのすべてのリフレッシュ、または単に1リフレッシュ動作の1つまたは複数のリフレッシュを奪取することが含まれる。ロウハンマリフレッシュとしてタグ付けされているか、または示されている(以下で詳細に説明する)コマンドの場合、または、リフレッシュロジック160が或るリフレッシュコマンドがアクティブ化閾値の到達と時間的に対応すると判定した場合、リフレッシュロジックは、すべてのサイクルをロウハンマ緩和に使用しても安全であると判定することができる。
【0041】
典型的には、メモリデバイス120は、外部リフレッシュコマンドに応答して複数行のリフレッシュを実行する。リフレッシュ動作とは、単一のリフレッシュコマンドに応答してリフレッシュされるべきすべての行のリフレッシュを指す。リフレッシュ動作には時間tRFC(行リフレッシュサイクルタイム)があり、リフレッシュ期間またはリフレッシュウィンドウ内のリフレッシュ動作間にはtREFI(リフレッシュ間隔時間)という平均リフレッシュ間隔がある。リフレッシュ期間とは、行のデータが失われないようにするための、任意の所与の行のリフレッシュ間の時間を指す。リフレッシュは、リフレッシュコマンドに応答してリフレッシュされるべきすべての行のうちの単一行のリフレッシュを指すことができ、単一のリフレッシュ動作には、複数のリフレッシュが含まれるため、tRFCよりも短い時間を有する。
【0042】
バンク140に示されているように、同じバンクに複数の目標行が存在することが可能であることが理解されるであろう。ロウハンマの臨界数が減少するにつれて、行妨害を引き起こすために必要なアクティブ化の数が減少し続けるため、潜在的な攻撃行の数が増加することとなる。したがって、リフレッシュ期間ごとに必要なロウハンマ緩和動作の数は増え続けている。より多くのロウハンマ緩和動作を許可するために、メモリコントローラ110は、具体的には、いくつのアクティブ化コマンドが送信済であるかを決定することに基づいて、より多くの外部リフレッシュコマンドを送信する。リフレッシュ(外部でも内部でも)は、メモリコントローラおよびメモリデバイスが行へのアクセスがないことを保証できる唯一の時間である。異なるバンクが異なる時間にリフレッシュされる可能性があり、故に異なる時間におけるアクセスが利用可能でないことが理解されるであろう。リフレッシュされていないバンクはアクセスされ得るため、スケジューラ116が異なるバンクのリフレッシュのスケジューリングを管理する。
【0043】
メモリコントローラ110のロウハンマロジック174は、メモリデバイス120に送信されるアクティブ化コマンドの数を追跡して追加のリフレッシュコマンドの送信をトリガできる。そのような機構は、メモリデバイス120に追加のリフレッシュの必要性を追跡させ、メモリコントローラに信号を送ることを試みることよりもはるかに簡単である。ロウハンマロジック174が余分のリフレッシュを送信するための閾値を追跡する場合、アクティブ化閾値などの構成可能なパラメータに基づいて動作を実行することができる。このような手法は、異なる動作状態のための、異なるデバイス若しくはメーカまたは追加のロウハンマ緩和の必要性に影響を及ぼし得る他の変数のための構成可能性を有効にする。
【0044】
ロウハンマロジック174の動作は、異なる実装に対して変わり得る。一例では、ロウハンマロジック174は、時間ウィンドウに関係なく、プログラム可能な閾値に達するたびに追加のリフレッシュコマンドを送信する。一例では、ロウハンマロジック174は、特定の時間セグメント内でカウントに到達した場合にのみ追加のリフレッシュを送信する。例えば、カウントは通常のリフレッシュ期間ごとにリセットされ得て、カウントは、リフレッシュウィンドウ内で閾値に達した場合にのみ、追加の外部リフレッシュをトリガする。
【0045】
一例では、追加のリフレッシュコマンドを送信する関心期間は、スライディングウィンドウである。スライディングウィンドウは、例えば、リーキーバケット手法を使用して設定することができる。リーキーバケット手法では、ロウハンマロジック174は、各アクティブ化コマンドに応答してカウントをデクリメント(または手法に応じてインクリメント)できる。デクリメント手法では、カウントがゼロになると、追加のリフレッシュの送信がトリガされる。一例では、ロウハンマロジック174は時間ベースでデクリメントし、追加のリフレッシュサイクルを引き起こさない、μs(マイクロ秒)当たりのアクティブ化の公称レートをもたらす。そのような手法では、公称レートを超えるサイクルが検出されたときのみ、ロウハンマロジック174に余剰のリフレッシュを送信させる。そのような手法は、単にアクティブ化の総数ではなく、特定の時間にわたるアクティブ化のレートのみがロウハンマイベントをトリガするという仮定に基づき得る。
【0046】
カウンタアップ手法では、リフレッシュは、例えば通常のリフレッシュ時間の1/4または1/2になり得るサブリフレッシュ期間で行われ得る。したがって、各固定期間に、ロウハンマロジック174は、余剰のリフレッシュコマンドの送信をトリガすることができる。10万で行妨害を引き起こす一例を考えてみると、ロウハンマロジック174は、8万回のアクティブ化の後か、または6万回のアクティブ化の後か、あるいは当該行妨害値より低い他の何らかのプログラム可能なカウントの後に、追加のリフレッシュコマンドの送信をトリガすることができる。
【0047】
余剰のリフレッシュを送信するタイミングは、複数の異なる方法のいずれかで調整することができる。一例では、余剰のリフレッシュの頻度は、プログラム可能性またはコンフィグレーションによって調整される。一例では、余剰のリフレッシュの頻度は、余剰のリフレッシュの監視が実行される方法に依存する。頻度は、監視方法とプログラム可能性との組み合わせによって調整することができる。上述したように、監視方法は、時間ウィンドウに関係なく閾値数のアクティブ化の検出、または固定時間ウィンドウ内でのアクティブ化の数の検出、またはスライディングウィンドウ内でのアクティブ化の数の検出に応答して余剰のリフレッシュが送信されるかどうかに依存する。一例では、期間はリフレッシュ期間で固定されるのではなく、プログラム可能である。一例では、スライディングウィンドウはプログラム可能である。リーキーバケット手法の一例では、リーキーバケットが満たされるレートはプログラム可能である。
【0048】
ロウハンマ緩和の追跡の粒度は、実装に依存する可能性がある。追跡の粒度については、以下で詳しく説明する。一般に、粒度は監視が実行されるレベルに依存する。一例では、監視はデバイスレベルで実行される。一例では、監視はチャネルレベルで実行される。一例では、監視はランクで実行される。一例では、監視はバンクグループで実行される。一例では、監視はバンクで実行される。
【0049】
図2は、ロウハンマ緩和リフレッシュのための
余分の外部リフレッシュのコマンドシーケンスの一例のタイミング図である。図表200は、ロウハンマ緩和
付きのリフレッシュのタイミング図を表す。図表200は、ホストまたはメモリコントローラと関連するメモリデバイスとの間の複数の相互接続、ならびにメモリデバイス内の特定の内部機能を表す。相互接続は、1つまたは複数の信号線を介して提供される。
【0050】
CLK210はシステムのクロックを表し、クロック(CK_t)および補完クロック(CK_c)の両方が示されている。図表200の例では、クロックは、立ち上がりエッジを示す矢印を有する実線の信号である。補完クロックは破線で示されている。CA212は、コマンド/アドレス(C/A)信号線上で送信されるC/A信号を表し、ホストによって提供されるコマンド符号化を示す。CMD216は、コマンド符号化の復号化を表し、したがって、コマンドを実行するために生成された動作のためのメモリデバイス内部の信号を表すことができる。RH CTR214は、メモリコントローラのロウハンマカウンタを表す。リフレッシュ218は、メモリデバイス内のリフレッシュの動作を表す。
【0051】
CA212は、220でREFコマンドを示す。リフレッシュコマンドは、メモリコントローラからの標準的な外部リフレッシュコマンドを表す。222で、メモリデバイスは当該コマンドをCMD216上の外部(EXT)リフレッシュコマンドとして解釈し、224で内部動作を生成してリフレッシュを実施する。リフレッシュ218は、当該外部リフレッシュコマンドに対応して行がリフレッシュされるまでのCTR0のREF、それに続くCTR1などを含むことができる一連のリフレッシュコマンドを示す。CTR0およびCTR1はどの行をリフレッシュするかを示す値を表し、この値は、内部リフレッシュ動作を追跡するためのカウンタまたはポインタになり得る。一例では、具体的に示されていないが、メモリデバイスは、1つまたは複数のリフレッシュサイクルを奪取してロウハンマ緩和リフレッシュを実行する。
【0052】
破線226は、タイムブレークを表す。CA212は、228でACTコマンドを示す。一例では、ACTコマンドの後に、230でロウハンマインクリメント(RH INCR)を実行するロウハンマカウンタ214が続く。当該インクリメントは、メモリコントローラによるアクティブ化コマンドの追跡を表すが、ロウハンマ緩和の追跡の実装に応じて、インクリメントの代わりにデクリメントとすることもできることが理解されるであろう。また、当該アクティブ化コマンドの後には、当該アクティブ化コマンドを実行するための1つまたは複数の内部動作がCMD216上の232で続く。一例では、メモリデバイスは、リフレッシュ218上の234で、アクティブ化コマンドのロウハンマ示唆も追跡する。ロウハンマ追跡は、アクティブ化コマンドに付随するアドレスによって示される行でアクティブ化コマンドを実行することに加えて行われることが理解されるであろう。ロウハンマ緩和のために複数のカウンタを追跡するシステムでは、ロウハンマの追跡にカウンタ情報の更新を含めることができる。
【0053】
破線236は、タイムブレークを表す。CA212は、238で後続のACTコマンドを示す。当該後続のアクティブ化コマンドは同じ動作をトリガできることが観察されるであろう。これらは、ロウハンマカウンタ214上での240におけるRH INCR、CMD216上での242におけるACT、およびリフレッシュ218上での244におけるRH追跡によって示される。この部分から、アクティブ化コマンドが受信されると、メモリコントローラはこれらのコマンドを追跡できるが、閾値に達しない限り、ロウハンマ緩和をトリガしなくてよいことが理解されるであろう。
【0054】
破線246は、タイムブレークを表す。一例では、タイムブレーク後、CA212上で生じ得る内容に関わらず、ロウハンマ検出へのリーキーバケット手法を実行するシステムにおいて時間閾値に達している。一例では、時間の到達に応答して、メモリコントローラは、ロウハンマカウンタ214上の248においてロウハンマデクリメント(RH DECR)を実行する。
【0055】
破線250は、タイムブレークを表す。CA212は、252で後続のACTコマンドを示す。当該後続のアクティブ化コマンドが、ロウハンマ緩和の閾値をトリガすることが観察されるであろう。したがって、ロウハンマカウンタ214上で254においてRH INCRが発生すると、メモリコントローラは余剰のリフレッシュコマンドをトリガすることを決定する。CA212上のACTに応答して、メモリデバイスはCMD216の256で示されるように、アクティブ化動作を復号し、リフレッシュ218上の258におけるRH追跡が内部ロウハンマ追跡を実行する。閾値のアクティブ化コマンドに応答して、アクティブ化コマンドの後のある時点で、メモリコントローラはCA212上の260において、ロウハンマリフレッシュコマンド(RH REF)を送信する。当該リフレッシュコマンドはロウハンマ状態をトリガしたACTコマンドに隣接して示されているが、ACTコマンドに直接隣接して送信されてもよいし、送信されなくてもよい。一例では、当該REFコマンドは、例えば、この状態を検出し、当該REFコマンドをスケジューリングし、且つこのコマンドをメモリデバイスに送信するためにバッファリングするメモリコントローラ内のロジックによって、ACTコマンドに隣接して送信される。
【0056】
アクティブ化コマンドがロウハンマ緩和をトリガする場合、CMD216は、262でメモリデバイスによるロウハンマ緩和(RH MIT)選択を示す。ロウハンマ緩和選択は、メモリデバイスがリフレッシュのための被害行を選択することを含むことができる。メモリデバイスは1つまたは複数の被害行の選択に応答して、リフレッシュ218上の264においてRH REFによって表されるロウハンマ緩和リフレッシュを実行することができる。リフレッシュは、ホストがメモリデバイスへのアクセスを試みないことをメモリデバイスが確証する唯一の時間であり、この時間が、メモリデバイスがリフレッシュカウンタに従う代わりに、ロウハンマ被害上でリフレッシュを実行できるようにする。したがって、リフレッシュサイクル中に実行されるロウハンマ緩和リフレッシュは、メモリデバイスによる他の動作またはメモリコントローラによるアクセス試行がないことを保証する動作を提供する。
【0057】
図3は、ロウハンマ緩和を支援するためにホストからの
余剰の外部リフレッシュを実装できるメモリサブシステムの一例のブロック図である。システム300は、コンピューティングシステムの要素を表す。システム300は、システム100を含むことができるシステムの一例を提供する。システム300は、メモリコントローラ320およびメモリ330を有するメモリサブシステムを有すると考えることができる。ホスト310は、メモリサブシステムを制御するハードウェアプラットフォームを表す。ホスト310は、メモリ330に格納されたデータに対する要求を生成する1つまたは複数のプロセッサ312(例えば、中央処理装置(CPU)またはグラフィック処理装置(GPU))を含む。
【0058】
ホスト310は、プロセッサデバイスに統合可能なメモリコントローラ320を含む。メモリコントローラ320は、メモリ330に接続するためのI/O(入力/出力)326を含む。I/Oには、メモリデバイスをホスト310に相互接続するためのコネクタ、信号線、ドライバ、およびその他のハードウェアが含まれる。I/O326は、コマンド(CMD)バス314によって表されるコマンドI/Oおよび、DQ(データ)バス(具体的に図示せず)によるデータI/Oを含むことができる。CMDバス314は、メモリコントローラ320がアクティブ化コマンド(ACT)およびリフレッシュコマンド(REF)を含むコマンドをメモリ330に送信することを可能にするコマンド信号線を含む。
【0059】
メモリコントローラ320は、プロセッサ312による動作に応答してメモリに対するコマンドを生成するコマンド(CMD)ロジック322を含む。コマンドは、データアクセス用のコマンド(Read、Write、Refresh、またはその他のコマンドなど)、またはコンフィグレーション用のコマンド(モードレジスタコマンドなど)とすることができる。メモリコントローラ320は、一連の動作でコマンドをいつ送信するかをスケジュールするスケジューラ324を含む。スケジューラ324は、既知のタイミングに従ってI/Oのタイミングを制御して、I/Oにエラーがなくなる可能性を高めることができる。タイミングはトレーニングによって設定される。
【0060】
メモリ330は、複数の個々のメモリデバイスを含むことができるか、または1メモリモジュールを表すことができる。システム300は、メモリ330内のメモリデバイスの2つのランク、ランク[0]およびランク[1]を示す。ランクとは、選択線(例えば、CS信号線)を共有するメモリデバイスの集合またはグループを指す。したがって、1つのランク内の複数のメモリデバイスは、並列に動作を実行する。ランク[0]およびランク[1]は、N個のDRAMデバイスまたはDRAMを含むように示されている。典型的には、複数のランクを有するシステムは、各ランクに同じ数のDRAMを有する。
【0061】
ランク[0]のDRAM[0]およびランク[1]のDRAM[0]は、I/O332、制御(CTRL)336、およびレジスタ(REG)334を含むように示されている。そのような構成要素は、他のDRAMにも含まれることが理解されるであろう。I/O332は、メモリコントローラ320のI/O326と同等の接続ハードウェアを表す。I/O332は、DRAMのメモリコントローラ320への接続を可能にする。レジスタ334は、モードレジスタなどの1つまたは複数のコンフィグレーションレジスタを含む、DRAM内の1つまたは複数のレジスタを表す。レジスタ334は、コンフィグレーション情報ならびにコマンドおよびデータ信号線上の信号に応答して、DRAMによる動作モードを決定する情報を格納することができる。一例では、DRAMは、ロウハンマ緩和閾値を示すプログラム可能な値を格納するレジスタ334を含む。
【0062】
制御ロジック336は、コマンドおよびアクセス動作を復号化し実行するためのDRAM内の制御構成要素を表す。制御336は、メモリコントローラ320によって開始されたアクセスを実行するために必要な内部動作をDRAMに実行させる。一例では、DRAMは、本明細書に記載される内容に従うロウハンマロジックを表すロウハンマ(RH)ロジック338を含む。一例では、ロウハンマロジック338は制御ロジック336の一部である。ロウハンマロジック338は、DRAMがロウハンマ緩和を管理するために、どのようにリフレッシュを実行するかを決定することを可能にする。例えば、ロウハンマロジック338は、リフレッシュサイクルの奪取を制御して、ロウハンマ緩和を実行することができる。
【0063】
一例では、メモリコントローラ320は、ロウハンマ緩和の状態を監視するために、1つまたは複数のロウハンマカウンタ(RH CTR)328を含む。一例では、カウンタ328は、メモリ330に送信されるアクティブ化コマンドの数を検出する。メモリ330に送信されるようにスケジュールされたコマンドを追跡することは、ロウハンマ緩和のために余剰のリフレッシュがいつ必要になり得るかを示す優れた指標となる。
【0064】
一例では、メモリコントローラ320は、システム300において所望される追跡粒度のレベルを提供するのに十分な複数のカウンタ328を含む。最も高い粒度はチャネルである。システム300は、第2のチャネルを具体的に示していない。チャネルとは、同じコマンドバスに接続するすべてのメモリデバイスを指す。コマンドバス314は、図示されたすべてのDRAMデバイスに接続し、したがって、単一のチャネルであると仮定される。
【0065】
DRAMデバイスは、複数のバンク(バンク[0:7])を有するものとして示されている。8つのバンクは一例であり、限定するものではないことが理解されるであろう。他のシステムは、4バンク、16バンク、32バンク、または他の何らかの数のバンクを含み得る。2進数のバンクはアドレス指定の観点からはより単純であるが、動作の目的のためには必須ではなく、任意の数のバンクを使用することができる。バンク340は、バンク番号によって別個にアドレス指定可能な別個のバンクとして利用することができる。一例では、バンク340は、BG0(バンクグループ0)としてバンク[0:3]およびBG1としてバンク[4:7]などのバンクグループに編成される。バンクグループは、代替的に、例えば、バンク[0,2,4,6]を有するBG0であっても、または他の何らかのグループ化であってもよい。バンクグループは、典型的には、別個にアクセスすることができ、例えば、同じバンクグループのバンクへの連続アクセスよりも短いアクセス時間を可能にすることができる。
【0066】
粒度のより低いレベルはランクレベルとすることができ、各ランクは別個に追跡することができる。余剰のリフレッシュコマンドは、閾値数のアクティブ化コマンドを有することが検出されたランクにのみ送信される。粒度の別のレベルは、メモリデバイスダイまたはパッケージのパッケージまたはダイベースとすることができる。そのようなレベルは、メモリコントローラ320による追跡がDRAMデバイスによって実行される追跡と一致するため、システム300のバランスを提供することができる。以前と同様に、余剰のリフレッシュは、必要なときに送信されるように制限でき、余剰のリフレッシュが必要であると検出されたデバイス(複数可)のみに送信することができる。
【0067】
より低いレベルの粒度(より細かい粒度)は、メモリ330の特定のDRAM技術のリフレッシュコマンドの粒度に基づくことができる。例えば、異なるDRAM技術は、バンクセット、バンクグループ、またはバンクごとに基づいてリフレッシュを実行することができる。バンクとは、行デコーダおよび列デコーダと共にアドレス指定される行のグループを指す。バンクグループとは、バンクグループアドレスに基づくバンクグループデコーダに基づいて共にアクセスできるバンクのグループを指す。バンクセットは、バンクグループ内の共通のバンクアドレスを有するバンクグループ全体でのバンクの識別を指すことができる。
【0068】
より細かい粒度の利点は、チップまたはチャネル全体ではなく、影響を受ける領域にのみに余剰のリフレッシュコマンドが送信されることである。より細かい粒度の欠点は、カウンタ328などのメモリコントローラ320の追跡ロジックが追加されることである。どのようなレベルの粒度が使用されても、余剰のリフレッシュコマンドは、アクティブ化閾値が検出された特定のセグメントのみに送信される。
【0069】
バンクごとまたはバンクセットごとのリフレッシュを可能にするDRAMデバイスの現在の実装では、共通の行カウンタが存在するため、特定のバンクまたはバンクセットに対する余剰のリフレッシュは通常可能ではない。記載されているロウハンマ緩和の実装では典型的なルールに対する例外を必要とし得、この場合、DRAMが特定のバンクセットまたは特定のバンクに対する追加のリフレッシュを検出し、それをロウハンマ緩和のために使用することができる。
【0070】
図4は、異なるメモリ部分のロウハンマ緩和情報を追跡するための複数のカウンタの一例を示すブロック図である。システム400は、本明細書の任意の例に従ったメモリコントローラの要素を表す。システム400は、コマンドをスケジュールしてメモリデバイスに送信するスケジューラ430を含む。
【0071】
一例では、システム400は複数のロウハンマカウンタ410を含む。システム400は、N個のカウンタを示し、ここでNは、ロウハンマ状態について追跡されるべき要素の数を表す値である。例えば、ロウハンマ緩和の監視レベルがメモリデバイスダイのレベルで生じる場合、Nはメモリコントローラに接続されているデバイスダイの数に等しくてよい。
【0072】
一例では、システム400は、カウンタ410から、メモリのどの部分に余剰のリフレッシュコマンドを送信するかを決定することができる、ロウハンマデコード420を含む。ロウハンマデコード420は、スケジューラ430が、潜在的なロウハンマ状態を示すカウンタのために、余剰のリフレッシュをスケジュールすることを保証することができる。追跡される粒度が細かくなるほど、メモリコントローラがロウハンマ緩和状態を識別する必要のあるカウンタ410の数が多くなることが理解されるであろう。
【0073】
図5は、ホスト支援ロウハンマ緩和をサポートするシステムのコマンド真理値表で選択されたコマンドの一例を示す。コマンドテーブル700は、本明細書の任意の説明に従ってロウハンマ緩和リフレッシュを実行するメモリデバイスのコマンド符号化の一例を示す。
【0074】
コマンドテーブル500の場合、コマンドバス信号は、チップ選択用のCS、およびCA[0:13]として識別される複数のCA(コマンド/アドレス)信号を含むことができる。CA信号線の数は、図示されているものより多くても少なくてもよい。信号線の値の凡例は次のとおりである。BG=バンクグループアドレス、BA=バンクアドレス、R=行アドレス、C=列アドレス、BC8=バーストチョップ8、MRA=モードレジスタアドレス、OP=オペコード、CID=チップ識別子、CW=制御ワード、H=ロジックハイ、L=ロジックロー、X=ドントケアまたは信号の状態に関係なく、信号はフロートし得る。V=有効は、任意の有効な信号状態、より具体的には、ハイまたはローを意味する。
【0075】
ACTは、メモリアレイアクセスで使用できるActivateコマンドを表す。上記で示したように、閾値以上のアクティブ化の数は、ロウハンマイベントを引き起こす可能性がある。一例では、メモリコントローラはアクティブ化の数をカウントし、メモリデバイスがロウハンマ緩和を実行できるように余剰のリフレッシュコマンドを送信して追加のリフレッシュサイクルを提供する。
【0076】
コマンドテーブル500は、すべての行をリフレッシュする、すべてをリフレッシュするコマンドREFを含む。REFコマンドにより、メモリデバイスはリフレッシュカウンタに示された行アドレスに従って行をリフレッシュする。一例では、上記の内容に従って、メモリデバイスは、行をリフレッシュカウンタとは順不同(アウトオブオーダ)でリフレッシュして、ロウハンマイベントによるデータ損失のリスクがある被害行のリフレッシュを実行できる。メモリデバイスは、ランダム化による行の選択を実行する。
【0077】
一例では、コマンドテーブル500は、異なるグループ内の同じバンクをリフレッシュするための同じバンクをリフレッシュするREFsbコマンドを含む。一例では、メモリデバイスは、REFコマンドまたはREFsbコマンドから奪取されたリフレッシュサイクルとしてロウハンマ緩和リフレッシュを実行できる。一例では、コマンドテーブル500は、メモリデバイスを低電力状態にしてセルフリフレッシュを実行させるセルフリフレッシュエントリのSREコマンドを含む。SREは、REFまたはREFsbとは別のタイプのコマンドであることが理解されるであろう。REFおよびREFsbコマンドは、外部リフレッシュコマンドと呼ぶことができる。
【0078】
一例では、1つまたは複数のリフレッシュコマンドはメモリコントローラによって、余剰のリフレッシュまたはロウハンマリフレッシュコマンドとしてマークするためのタグが付けられる。メモリデバイスは当該ビットを検出し、当該ビットから、このリフレッシュコマンドがロウハンマ緩和のためのものであると判定することができる。一例では、リフレッシュコマンドは、ロウハンマ緩和を示すために、ヘッダまたは他のビットで拡張することができる。コマンドテーブル500には、領域510に指定されるように、コマンド符号化に準拠するために有効な信号のみを必要とするビットCA8およびCA9があることが観察されるであろう。したがって、これらのビットがタグとして使用可能であり、例えば、メモリコントローラが当該ビットのうちの1つのビットの値をロウハンマ緩和リフレッシュを示すように設定し、メモリデバイスが当該ビットの論理値を検出して、それが標準的なリフレッシュコマンドであるか、ロウハンマリフレッシュコマンドであるかを判定する。一例では、メモリデバイスの仕様(例えば、ダブルデータレート(DDR)規格のCA8およびCA9など)下で指定されていないが許容可能なビット内の情報を有するように修正されたコマンドは、リフレッシュ管理コマンドと考えることができる。
【0079】
図示されたタグ付けは、1つの可能な例にすぎないことが理解されるであろう。他の方法で、コマンドをロウハンマ緩和用としてタグ付けすることができる。
【0080】
図6は、ホスト支援ロウハンマ緩和のためのプロセスの一例の流れ図である。プロセス600は、本明細書の任意の例に従ったホスト支援ロウハンマ緩和を有するシステムによって実施することができる。
【0081】
一例では、メモリコントローラは、602で、メモリデバイスに送信するアクティブ化コマンドがあるかどうかを判定する。アクティブ化コマンドがある場合(602で、「はい」の分岐)、メモリコントローラは604でカウンタをインクリメントすることができる。一例では、アクティブ化コマンドが検出されない場合(602で、「いいえ」の分岐)、メモリコントローラはカウンタをインクリメントしない。
【0082】
一例では、アクティブ化コマンドを確認した後、メモリコントローラは606でタイマ時間切れが存在するかどうかを判定する。一例では、タイマ時間切れが存在する場合(606で、「はい」の分岐)、メモリコントローラはカウンタをデクリメントする。そのような実装は、ロウハンマの状態を確認するためのスライディングウィンドウを作成するリーキーバケット実装と呼ぶことができる。リーキーバケット手法では、アクティブ化コマンドの検出によりカウンタがインクリメントされ、タイマの時間切れによりカウンタがデクリメントされる。デクリメントは、タイマの時間切れの頻度に応じて単一のデクリメントにすることも、またはより遅いカウンタの場合は複数の単位とすることもできる。タイマの時間切れが検出されない場合(606で、「いいえ」の分岐)、カウンタは変更されない。
【0083】
一例では、アクティブ化コマンドおよびタイマの時間切れを確認した後、メモリコントローラは、608でカウンタが、その制限値を超えているかどうかを判定することができ、これは閾値に到達したことを示す。一例では、閾値に達すると、メモリコントローラは、610で追加のリフレッシュコマンドを送信し、カウンタをリセットする。一例では、カウンタが閾値に達していない場合、メモリシステムは602でアクティブ化コマンドを監視し続ける。
【0084】
図7は、ホスト支援ロウハンマ緩和を実装できるメモリサブシステムの一例を示すブロック図である。システム700は、コンピューティングデバイスのプロセッサおよびメモリサブシステムの要素を含む。システム700は、
図1のシステム100の一例に従うことができる。
【0085】
一例では、メモリデバイス740は、メモリデバイスがメモリデバイスの内部でロウハンマ緩和を管理することを可能にするロウハンマロジックを表すロウハンマロジック780を含む。一例では、メモリコントローラ720は、本明細書で提供される任意の例に従ってホスト支援ロウハンマ緩和を提供するロウハンマロジック790を含む。ロウハンマロジック790は、メモリデバイス740がロウハンマロジック780を介して潜在的な被害行のリフレッシュを実行できるようにする余剰のリフレッシュコマンドをコントローラが送信することを可能にする。
【0086】
一例では、メモリモジュール770はDIMMを表し、レジスタ(例えば、RDIMM、すなわち、レジスタードDIMM)を含む。一例では、メモリモジュール770は、別個にアドレス指定可能な複数のバッファを含む。RDIMMでは、レジスタはC/Aバスをバッファリングするだけでなく、データ線をバッファリングすることができる。本明細書に記載されるコマンドバス固有のPDA動作は、レジスタまたはバッファまたはレジスタードクロックデバイスの有無にかかわらず、システム700で利用できる。
【0087】
プロセッサ710は、オペレーティングシステム(OS)およびアプリケーションを実行し得るコンピューティングプラットフォームの処理ユニットを表し、処理ユニットは集合的にメモリのホストまたはユーザと呼ぶことができる。OSおよびアプリケーションは、メモリアクセスに至る動作を実行する。プロセッサ710は、1つまたは複数の別個のプロセッサを含むことができる。各別個のプロセッサには、単一の処理ユニット、マルチコア処理ユニット、またはその組み合わせを含めることができる。処理装置は、CPU(中央処理装置)などのプライマリプロセッサ、GPU(グラフィック処理装置)などの周辺プロセッサ、またはその組み合わせとすることができる。メモリアクセスはまた、ネットワークコントローラまたはハードディスクコントローラなどのデバイスによって開始され得る。このようなデバイスは、一部のシステムのプロセッサと統合され得るか、またはバス(例えば、PCIエクスプレス)、またはそれらの組み合わせを介してプロセッサに接続され得る。システム700は、SOC(システムオンチップ)として実装するか、またはスタンドアロン構成要素で実装できる。
【0088】
メモリデバイスへの言及は、様々なメモリタイプに適用できる。メモリデバイスは、多くの場合、揮発性メモリ技術を指す。揮発性メモリとは、デバイスへの電力が遮断された場合に状態(およびそれに格納されるデータ)が不定になるメモリである。不揮発性メモリとは、デバイスへの電力が遮断された場合でも状態が確定しているメモリのことである。動的揮発性メモリでは、状態を維持するためにデバイスに格納されているデータをリフレッシュする必要がある。ダイナミック揮発性メモリの一例には、DRAM(ダイナミックランダムアクセスメモリ)、またはシンクロナスDRAM(SDRAM)などの何らかの派生形がある。本明細書で説明されるメモリサブシステムは、DDR4(DDRバージョン4、JESD79、2012年9月にJEDECにより公開された初期仕様)、LPDDR4(低電力DDRバージョン4、JESD209-4、2014年8月にJEDECにより最初に公開される)、WIO2(Wide I/O 2(WideIO2)、JESD229-2、2014年8月にJEDECにより最初に公開される)、HBM(高帯域幅メモリDRAM、JESD235A、2015年11月にJEDECにより最初に公開される)、DDR5(DDRバージョン5、現在JEDECで議論中)、LPDDR5(現在JEDECで議論中)、HBM2((HBMバージョン2)、現在JEDECで議論中)、またはその他またはメモリ技術の組み合わせ、およびそのような仕様の派生物または拡張に基づく技術などの複数のメモリ技術と互換性があり得る。
【0089】
一例では、揮発性メモリに加えて、または代替的に、メモリデバイスへの言及は、デバイスへの電力が遮断された場合でも状態が確定する不揮発性メモリデバイスを指すことができる。一例では、不揮発性メモリデバイスは、NANDまたはNOR技術などのブロックアドレス可能なメモリデバイスである。したがって、メモリデバイスは、三次元クロスポイントメモリデバイス、他のバイトアドレス指定可能な不揮発性メモリデバイス、またはカルコゲナイド相変化材料(例えば、カルコゲナイドガラス)を使用するメモリデバイスなど、次世代の不揮発性デバイスも含むことができる。一例では、メモリデバイスは、多閾値レベルのNANDフラッシュメモリ、NORフラッシュメモリ、シングルまたはマルチレベルの相変化メモリ(PCM)またはスイッチ付き相変化メモリ(PCMS)、抵抗メモリ、ナノワイヤメモリ、強誘電体トランジスタランダムアクセスメモリ(FeTRAM)、メモリスタ技術を組み込んだ磁気抵抗ランダムアクセスメモリ(MRAM)メモリ、またはスピントランスファトルク(STT)-MRAM、または上記のいずれかの組み合わせ、またはその他のメモリとすることができるか、あるいはそれらを含むことができる。
【0090】
本明細書で「RAM」または「RAMデバイス」を言及する説明は、揮発性であるか不揮発性であるかにかかわらず、ランダムアクセスを可能にする任意のメモリデバイスに適用することができる。「DRAM」または「DRAMデバイス」を言及する説明は、揮発性ランダムアクセスメモリデバイスを指すことができる。メモリデバイスまたはDRAMは、ダイ自体、1つまたは複数のダイを含むパッケージメモリ製品、またはその両方を指すことができる。一例では、リフレッシュする必要のある揮発性メモリを有するシステムは、不揮発性メモリも含むことができる。
【0091】
メモリコントローラ720は、システム700用の1つまたは複数のメモリコントローラ回路またはデバイスを表す。メモリコントローラ720は、プロセッサ710による動作の実行に応答して、メモリアクセスコマンドを生成する制御ロジックを表す。メモリコントローラ720は、1つまたは複数のメモリデバイス740にアクセスする。メモリデバイス740は、上記で言及したいずれかに従うDRAMデバイスとすることができる。一例では、メモリデバイス740は、異なるチャネルとして編成および管理され、各チャネルは、複数のメモリデバイスに並列に結合するバスおよび信号線に結合する。各チャネルは独立して動作可能である。したがって、各チャネルは独立してアクセスおよび制御され、タイミング、データ転送、コマンドおよびアドレス交換、およびその他の動作はチャネルごとに別個である。結合とは、電気的結合、通信的結合、物理的結合、またはこれらの組み合わせを指すことができる。物理的結合は直接接触を含むことができる。電気的結合は、構成要素間の電気的な流れを可能にする、または構成要素間の信号伝達を可能にする、またはその両方を可能にするインターフェイスまたは相互接続を含む。通信的結合は、構成要素がデータを交換することを可能にする、有線または無線を含む接続を含む。
【0092】
一例では、チャネルごとの設定は、別個のモードレジスタまたはその他のレジスタ設定によって制御される。一例では、各メモリコントローラ720は別個のメモリチャネルを管理するが、システム700は単一のコントローラにより管理される複数のチャネルを有するように、または単一のチャネル上に複数のコントローラを有するように構成することができる。一例では、メモリコントローラ720は、同じダイ上に実装されるか、またはプロセッサと同じパッケージスペースに実装されるロジックなど、ホストプロセッサ710の一部である。
【0093】
メモリコントローラ720は、上記で言及したメモリチャネルなどのメモリバスに結合するためのI/Oインターフェイスロジック722を含む。I/Oインターフェイスロジック722(ならびにメモリデバイス740のI/Oインターフェイスロジック742)は、ピン、パッド、コネクタ、信号線、トレース、またはワイヤ、またはデバイスを接続する他のハードウェア、またはこれらの組み合わせを含むことができる。I/Oインターフェイスロジック722は、ハードウェアインターフェイスを含むことができる。図示されているように、I/Oインターフェイスロジック722は、少なくとも信号線用のドライバ/トランシーバを含む。一般に、集積回路インターフェイス内のワイヤは、パッド、ピン、またはコネクタと結合して、デバイス間の信号線またはトレースまたは他のワイヤをインターフェイスする。I/Oインターフェイスロジック722は、ドライバ、レシーバ、トランシーバ、または終端部、または他の回路または回路の組み合わせを含み、デバイス間で信号線上の信号を交換することができる。信号の交換は、送信または受信の少なくとも1つを含む。メモリコントローラ720からメモリデバイス740のI/O742へI/O722を結合するように示されているが、メモリデバイス740のグループが並列にアクセスされるシステム700の実装では、複数のメモリデバイスがメモリコントローラ720の同じインターフェイスへのI/Oインターフェイスを含むことができることが理解されるであろう。1つまたは複数のメモリモジュール770を含むシステム700の実装では、I/O742は、メモリデバイス自体のインターフェイスハードウェアに加えて、メモリモジュールのインターフェイスハードウェアを含むことができる。他のメモリコントローラ720は、他のメモリデバイス740への別個のインターフェイスを含む。
【0094】
メモリコントローラ720とメモリデバイス740との間のバスは、メモリコントローラ720をメモリデバイス740に結合する複数の信号線として実装することができる。バスは、典型的には、少なくともクロック(CLK)732、コマンド/アドレス(CMD)734、書き込みデータ(DQ)および読み取りデータ(DQ)736、ならびにゼロ以上の他の信号線738を含み得る。一例では、メモリコントローラ720とメモリとの間のバスまたは接続は、メモリバスと呼ぶことができる。CMDの信号線は、「C/Aバス」(またはADD/CMDバス、またはコマンド(CまたはCMD)およびアドレス(AまたはADD)情報の転送を示す他の何らかの名称)と呼ぶことができ、書き込みおよび読み取りDQの信号線は「データバス」と呼ぶことができる。一例では、独立したチャネルは、異なるクロック信号、C/Aバス、データバス、およびその他の信号線を有する。したがって、システム700は、独立したインターフェイス経路を別個のバスと考えることができるという意味で、複数の「バス」を有すると考えることができる。明示的に示された線に加えて、バスは、ストローブ信号線、警告線、補助線、または他の信号線、またはそれらの組み合わせのうちの少なくとも1つを含むことができることが理解されるであろう。また、メモリコントローラ720とメモリデバイス740との間の接続にシリアルバス技術を使用できることも理解されるであろう。シリアルバス技術の一例としては、8B10B符号化および各方向の単一の差動ペア信号を介した埋め込みクロックによる高速データの送信がある。一例では、CMD734は、複数のメモリデバイスと並列に共有される信号線を表す。一例では、複数のメモリデバイスは、CMD734の符号化コマンド信号線を共有し、それぞれが個々のメモリデバイスを選択するための別個のチップ選択(CS_n)信号線を有する。
【0095】
システム700の例では、メモリコントローラ720とメモリデバイス740との間のバスは、補助コマンドバスCMD734および書き込みデータおよび読み取りデータDQ736を伝送する補助バスを含むことが理解されるであろう。一例では、データバスは、読み取りデータおよび書き込み/コマンドデータ用の双方向線を含むことができる。別の例では、補助バスDQ736は、ホストからメモリへの書き込みおよびデータのための一方向書き込み信号線を含むことができ、メモリからホストへのデータの読み取りのための一方向線を含むことができる。選択されたメモリ技術およびシステム設計に従って、他の信号738は、ストローブ線DQSなどのバスまたはサブバスに付随し得る。システム700の設計、または設計が複数の実装をサポートする場合の実装に基づいて、データバスは、メモリデバイス740ごとに、より多いまたはより少ない帯域幅を有することができる。例えば、データバスは、x32インターフェイス、x16インターフェイス、x8インターフェイス、またはその他のインターフェイスのいずれかを有するメモリデバイスをサポートすることができる。命名規則「xW」のWは、メモリデバイス740のインターフェイスのインターフェイスサイズまたは幅を指す整数であり、メモリコントローラ720とデータを交換するための信号線の数を表す。メモリデバイスのインターフェイスサイズは、システム700内のチャネルごとに同時に使用できる、または同じ信号線に並列に結合できるメモリデバイスの数に関する制御因子である。一例では、高帯域幅メモリデバイス、ワイドインターフェイスデバイス、または積層メモリ構成、またはそれらの組み合わせは、x128インターフェイス、x256インターフェイス、x512インターフェイス、x1024インターフェイス、または他のデータバスインターフェイス幅などのより幅広いインターフェイスを使用可能にすることができる。
【0096】
一例では、メモリデバイス740およびメモリコントローラ720は、バーストで、または連続する一連のデータ転送で、データバスを介してデータを交換する。バーストは、バス周波数に関連する転送サイクルの数に対応する。一例では、転送サイクルは、同じクロックまたはストローブ信号エッジ(例えば、立ち上がりエッジ)で発生する転送の全クロックサイクルとすることができる。一例では、システムクロックのサイクルを参照するすべてのクロックサイクルは、複数のユニットインターバル(UI)に分割され、各UIは転送サイクルである。例えば、ダブルデータレート転送は、クロック信号の両方のエッジでトリガする(例えば、立ち上がりおよび立ち下がり)。バーストは、構成された数のUIの間持続でき、これは、レジスタに格納されるコンフィグレーションでもよいし、オンザフライでトリガされるコンフィグレーションでもよい。例えば、8つの連続する一連の転送期間は、バースト長8(BL8)と考えることができ、各メモリデバイス740は、各UIでデータを転送できる。したがって、BL8で動作するx8メモリデバイスは、64ビットのデータを転送することができる([8データ信号線]×[バーストを介して線ごとに転送される8データビット])。この単純な例は単なる例示であり、限定するものではないことが理解されるだろう。
【0097】
メモリデバイス740は、システム700のメモリリソースを表す。一例では、各メモリデバイス740は別個のメモリダイである。一例では、各メモリデバイス740は、デバイスごとまたはダイごとに複数の(例えば、2つの)チャネルとインターフェイスすることができる。各メモリデバイス740は、デバイスの実装によって決定される帯域幅(例えば、x16またはx8または他の何らかのインターフェイス帯域幅)を有するI/Oインターフェイスロジック742を含む。I/Oインターフェイスロジック742は、メモリデバイスがメモリコントローラ720とインターフェイスすることを可能にする。I/Oインターフェイスロジック742は、ハードウェアインターフェイスを含むことができ、メモリコントローラのI/O722に沿ってもよいが、メモリデバイスの端部にあってもよい。一例では、複数のメモリデバイス740が同じコマンドおよびデータバスに並列に接続される。別の例では、複数のメモリデバイス740が同じコマンドバスに並列に接続され、異なるデータバスに接続される。例えば、システム700は、並列に結合された複数のメモリデバイス740で構成することができ、各メモリデバイスはコマンドに応答し、各内部のメモリリソース760にアクセスする。Write動作の場合、個々のメモリデバイス740は、データワード全体の一部を書き込むことができ、Read動作の場合、個々のメモリデバイス740は、データワード全体の一部をフェッチすることができる。非限定的な例として、特定のメモリデバイスは、それぞれ、ReadまたはWriteトランザクション用の128ビットデータワードの8ビット、または256ビットデータワードの8ビットまたは16ビット(x8またはx16デバイスに依存)を提供または受信することができる。ワードの残りのビットは、他のメモリデバイスによって並列に提供または受信される。
【0098】
一例では、メモリデバイス740は、コンピューティングデバイスのマザーボードまたはホストシステムプラットフォーム(例えば、プロセッサ710が配置されるPCB(プリント回路基板))上に直接配置される。一例では、メモリデバイス740は、メモリモジュール770に編成することができる。一例では、メモリモジュール770はデュアルインラインメモリモジュール(DIMM)を表す。一例では、メモリモジュール770は、ホストシステムプラットフォームからの別個の回路、別個のデバイス、または別個のボードとすることができる、アクセスまたは制御回路の少なくとも一部を共有する複数のメモリデバイスの他の編成を表す。メモリモジュール770は、複数のメモリデバイス740を含むことができ、メモリモジュールは、それらに配置された包含済みのメモリデバイスへの複数の別個のチャネルのサポートを含むことができる。別の例では、メモリデバイス740は、マルチチップモジュール(MCM)、パッケージオンパッケージ、シリコン貫通ビア(TSV)、または他の技術またはそれらの組み合わせなどの技術によって、メモリコントローラ720と同じパッケージに組み込まれ得る。同様に、一例では、それ自体をメモリコントローラ720と同じパッケージに組み込み得る、メモリモジュール770に複数のメモリデバイス740を組み込み得る。これらおよび他の実装では、メモリコントローラ720はホストプロセッサ710の一部であり得ることが理解されるであろう。
【0099】
メモリデバイス740はそれぞれ、メモリリソース760を含む。メモリリソース760は、データのメモリ場所または記憶場所の個々のアレイを表す。典型的に、メモリリソース760は、ワード線(行)およびビット線(行内の個々のビット)制御を介してアクセスされるデータの行として管理される。メモリリソース760は、別個のチャネル、ランク、およびメモリバンクとして編成することができる。チャネルは、メモリデバイス740内の記憶場所への独立した制御パスを指し得る。ランクは、複数のメモリデバイスの共通の場所を指し得る(例えば、異なるデバイス内の同じ行アドレス)。バンクは、メモリデバイス740内のメモリ場所のアレイを指し得る。一例では、メモリのバンクは、サブバンク用の共有回路(例えば、ドライバ、信号線、制御ロジック)の少なくとも一部を有するサブバンクに分割され、別個のアドレス指定およびアクセスを可能にする。チャネル、ランク、バンク、サブバンク、バンクグループ、またはメモリ場所の他の組織、およびそれら組織の組み合わせは、物理リソースへの適用において重複する可能性があることが理解されるであろう。例えば、同じ物理メモリの場所に、ランクに属することもできる、特定のバンクとして特定のチャネルを介してアクセスすることができる。したがって、メモリリソースの編成は、排他的な方法ではなく、包括的な方法で理解されるであろう。
【0100】
一例では、メモリデバイス740は、1つまたは複数のレジスタ744を含む。レジスタ744は、メモリデバイスの動作のためのコンフィグレーションまたは設定を提供する1つまたは複数の記憶装置または記憶場所を表す。一例では、レジスタ744は、制御または管理動作の一部として、メモリコントローラ720によるアクセスのためのデータを格納するメモリデバイス740の記憶場所を提供することができる。一例では、レジスタ744は1つまたは複数のモードレジスタを含む。一例では、レジスタ744は1つまたは複数の多目的レジスタを含む。レジスタ744内の場所のコンフィグレーションは、異なる「モード」で動作するようにメモリデバイス740を構成することができ、コマンド情報は、モードに基づいてメモリデバイス740内の異なる動作をトリガすることができる。追加的または代替的に、異なるモードは、モードに応じてアドレス情報または他の信号線から異なる動作をトリガすることもできる。レジスタ744の設定は、I/O設定のコンフィグレーション(例えば、タイミング、ターミネーションまたはODT(オンダイターミネーション)746、ドライバコンフィグレーション、または他のI/O設定)を示すことができる。
【0101】
一例では、メモリデバイス740は、I/O742に関連するインターフェイスハードウェアの一部としてODT746を含む。ODT746は上記のように構成でき、特定の信号線へのインターフェイスに適用されるインピーダンスの設定を提供する。一例では、ODT746はDQ信号線に適用される。一例では、ODT746はコマンド信号線に適用される。一例では、ODT746はアドレス信号線に適用される。一例では、ODT746は上記の任意の組み合わせに適用することができる。ODT設定は、メモリデバイスがアクセス動作の選択されたターゲットであるか、非ターゲットデバイスであるかに基づいて変更することができる。ODT746の設定は、終端回線でのシグナリングのタイミングおよび反映に影響を与える可能性がある。ODT746を慎重に制御することにより、印加されるインピーダンスおよび負荷の整合性を向上させ、高速動作を可能にすることができる。ODT746は、I/Oインターフェイス742、722の特定の信号線に適用することができるが、必ずしもすべての信号線に適用されるわけではない。
【0102】
メモリデバイス740は、メモリデバイス内の内部動作を制御するためのメモリデバイス内の制御ロジックを表すコントローラ750を含む。例えば、コントローラ750は、メモリコントローラ720によって送信されたコマンドを復号化し、コマンドを実行または満たすための内部動作を生成する。コントローラ750は、内部コントローラと呼ぶことができ、ホストのメモリコントローラ720とは別個のものである。コントローラ750は、レジスタ744に基づいて、どのモードが選択されるかを決定し、選択されたモードに基づいてメモリリソース760へのアクセスのための動作または他の動作ための内部実行を構成することができる。コントローラ750は、メモリデバイス740内のビットのルーティングを制御する制御信号を生成して、選択されたモードに適切なインターフェイスを提供し、コマンドを適切なメモリ場所またはアドレスに送る。コントローラ750は、コマンドおよびアドレス信号線で受信したコマンド符号化を復号化することができるコマンドロジック752を含む。したがって、コマンドロジック752は、コマンドデコーダとすることができるか、またはコマンドデコーダを含むことができる。コマンドロジック752を使用すると、メモリデバイスはコマンドを識別し、要求されたコマンドを実行するための内部操作を生成することができる。
【0103】
再びメモリコントローラ720を参照すると、メモリコントローラ720は、メモリデバイス740に送信するコマンドを生成するロジックまたは回路を表すコマンド(CMD)ロジック724を含む。コマンドの生成は、スケジューリングの前のコマンド、または送信する準備ができているキューに入れられたコマンドの準備を指すことができる。一般に、メモリサブシステムにおけるシグナリングは、メモリデバイスがコマンドを実行すべき1つまたは複数のメモリ位置を指示または選択するために、コマンド内またはコマンドに付随するアドレス情報を含む。メモリデバイス740のトランザクションのスケジューリングに応答して、メモリコントローラ720は、メモリデバイス740にコマンドを実行させるために、I/O722を介してコマンドを発行することができる。一例では、メモリデバイス740のコントローラ750は、メモリコントローラ720からI/O742を介して受信したコマンドおよびアドレス情報を受信および復号化する。受信したコマンドおよびアドレス情報に基づいて、コントローラ750は、メモリデバイス740内のロジックおよび回路の動作のタイミングを制御して、コマンドを実行することができる。コントローラ750は、タイミングおよびシグナリング要件など、メモリデバイス740内の規格または仕様に準拠する役割を果たす。メモリコントローラ720は、アクセスのスケジューリングおよび制御により、規格または仕様への準拠を実装することができる。
【0104】
メモリコントローラ720は、メモリデバイス740に送信するトランザクションを生成し順序付けるためのロジックまたは回路を表すスケジューラ730を含む。一つの観点から、メモリコントローラ720の主な機能は、メモリデバイス740へのメモリアクセスおよび他のトランザクションをスケジュールすることであると言うことができる。そのようなスケジューリングは、プロセッサ710によるデータの要求を実施し、データの整合性を(例えば、リフレッシュに関連するコマンドなどで)維持するために、トランザクション自体を生成することを含むことができる。トランザクションには、1つまたは複数のコマンドを含めることができ、その結果、クロックサイクルまたは単位間隔などの1つまたは複数のタイミングサイクルにわたってコマンドまたはデータ、あるいはその両方が転送される。トランザクションは、読み取りまたは書き込み、または関連コマンド、またはそれらの組み合わせなどのアクセス用であり、他のトランザクションは、コンフィグレーション、設定、データ完全性、または他のコマンドまたはそれらの組み合わせのためのメモリ管理コマンドを含むことができる。
【0105】
メモリコントローラ720は、典型的には、システム700の性能を向上させるために、トランザクションの選択および順序付けを可能にするスケジューラ730などのロジックを含む。したがって、メモリコントローラ720は、未処理のトランザクションのうちのどれをメモリデバイス740にどの順序で送信すべきかを選択することができ、これは、典型的には、単純な先入れ先出しアルゴリズムよりもはるかに複雑なロジックで実現される。メモリコントローラ720は、メモリデバイス740へのトランザクションの送信を管理し、トランザクションに関連するタイミングを管理する。一例では、トランザクションは、メモリコントローラ720によって管理され、スケジューラ730を使用してトランザクションをスケジュールする方法を決定する際に使用できる、決定論的タイミングを有する。
【0106】
一例では、メモリコントローラ720はリフレッシュ(REF)ロジック726を含む。リフレッシュロジック726は、揮発性であり、決定論的状態を保持するためにリフレッシュする必要があるメモリリソースに使用することができる。一例では、リフレッシュロジック726は、リフレッシュの場所、および実行するリフレッシュのタイプを示す。リフレッシュロジック726は、リフレッシュコマンドまたはその組み合わせを送信することによって、メモリデバイス740内のセルフリフレッシュをトリガするか、または自動リフレッシュコマンドと呼ぶことができる外部リフレッシュを実行することができる。一例では、システム700は、すべてのバンクリフレッシュならびにバンクごとのリフレッシュをサポートする。すべてのバンクリフレッシュにより、並列に結合されたすべてのメモリデバイス740内のバンクがリフレッシュされる。バンクごとのリフレッシュにより、特定のメモリデバイス740内の特定のバンクがリフレッシュされる。一例では、メモリデバイス740内のコントローラ750は、メモリデバイス740内にリフレッシュを適用するためのリフレッシュロジック754を含む。一例では、リフレッシュロジック754は、メモリコントローラ720から受信した外部リフレッシュに従ってリフレッシュを実行するための内部動作を生成する。リフレッシュロジック754は、リフレッシュがメモリデバイス740に指示されているかどうか、およびコマンドに応答してどのメモリリソース760をリフレッシュするかを決定することができる。
【0107】
図8は、ホスト支援ロウハンマ緩和を実装できるコンピューティングシステムの一例を示すブロック図である。システム800は、本明細書の任意の例に従ったコンピューティングデバイスを表し、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、サーバ、ゲームまたはエンターテイメント制御システム、組み込みコンピューティングデバイス、または他の電子デバイスとすることができる。システム800は、システム100に従ったシステムの一例を提供する。
【0108】
一例では、メモリサブシステム820は、本明細書の任意の例に従ったホスト支援ロウハンマ緩和を可能にするロウハンマロジックを表すロウハンマロジック890を含む。ロウハンマロジックは、メモリデバイスの内部でロウハンマ緩和を管理するために、メモリデバイス内のロジックを含むことができる。一例では、ロウハンマロジック890は、本明細書で提供される任意の例に従ってホスト支援ロウハンマ緩和を提供するために、メモリコントローラ822にロウハンマロジックを含む。ロウハンマロジック890は、コントローラが余剰のリフレッシュコマンドを送信することを可能にし、メモリ830がアクティブ化コマンドの数に基づいて潜在的な被害行のリフレッシュを実行できるようにする。
【0109】
システム800は、システム800に対する命令の処理または実行を提供するために、任意のタイプのマイクロプロセッサ、中央処理装置(CPU)、グラフィック処理装置(GPU)、処理コア、または他の処理ハードウェア、またはそれらの組み合わせを含むことができるプロセッサ810を含む。プロセッサ810は、システム800の全体的な動作を制御し、1つまたは複数のプログラム可能な汎用または専用マイクロプロセッサ、デジタル信号プロセッサ(DSP)、プログラマブルコントローラ、特定用途向け集積回路(ASIC)、プログラマブルロジックデバイス(PLD)、またはそのようなデバイスの組み合わせとすることができるか、または含むことができる。
【0110】
一例では、システム800は、メモリサブシステム820またはグラフィックスインターフェイス構成要素840など、より高い帯域幅の接続を必要とするシステム構成要素の高速インターフェイスまたは高スループットインターフェイスを表すことができる、プロセッサ810に結合されたインターフェイス812を含む。インターフェイス812は、スタンドアロンの構成要素とすることができる、またはプロセッサダイ上に統合させることができる、インターフェイス回路を表す。インターフェイス812は、回路としてプロセッサダイに統合することができるか、またはシステムオンチップの構成要素として統合することができる。存在する場合、グラフィックスインターフェイス840は、システム800のユーザに視覚表示を提供するためにグラフィックス構成要素にインターフェイスする。グラフィックスインターフェイス840は、スタンドアロン構成要素とすることができるか、またはプロセッサダイまたはシステムオンチップに統合することができる。一例では、グラフィックスインターフェイス840は、ユーザに出力を提供する高精細(HD)ディスプレイを駆動することができる。一例では、ディスプレイはタッチスクリーンディスプレイを含むことができる。一例では、グラフィックスインターフェイス840は、メモリ830に格納されたデータに基づいて、またはプロセッサ810によって実行される動作に基づいて、あるいは両方に基づいてディスプレイを生成する。
【0111】
メモリサブシステム820は、システム800のメインメモリを表し、プロセッサ810によって実行されるコード、またはルーチンを実行する際に使用されるデータ値のための記憶装置を提供する。メモリサブシステム820は、読み取り専用メモリ(ROM)、フラッシュメモリ、DRAMなどの1つまたは複数のランダムアクセスメモリ(RAM)、または他のメモリデバイス、あるいはそのようなデバイスの組み合わせなど、1つまたは複数のメモリデバイス830を含むことができる。メモリ830は、とりわけ、オペレーティングシステム(OS)832を格納およびホストし、システム800で命令を実行するためのソフトウェアプラットフォームを提供する。さらに、アプリケーション834は、メモリ830のOS832のソフトウェアプラットフォームで実行することができる。アプリケーション834は、1つまたは複数の機能の実行を実行するための独自の動作ロジックを有するプログラムを表す。プロセス836は、OS832または1つまたは複数のアプリケーション834あるいはその組み合わせに補助機能を提供するエージェントまたはルーチンを表す。OS832、アプリケーション834、およびプロセス836は、システム800に機能を提供するソフトウェアロジックを提供する。一例では、メモリサブシステム820は、コマンドを生成してメモリ830に発行するメモリコントローラであるメモリコントローラ822を含む。メモリコントローラ822は、プロセッサ810の物理的な部分、またはインターフェイス812の物理的な部分とすることができることが理解されるであろう。例えば、メモリコントローラ822は、プロセッサダイまたはシステムオンチップに統合されるようなプロセッサ810を有する回路に統合される統合メモリコントローラとすることができる。
【0112】
具体的に示されていないが、システム800は、メモリバス、グラフィックスバス、インターフェイスバスなどのデバイス間の1つまたは複数のバスまたはバスシステムを含むことができることが理解されるであろう。バスまたは他の信号線は、構成要素を互いに通信可能にまたは電気的に結合するか、または構成要素を通信可能にも電気的にも両方で結合することができる。バスには、物理通信回線、ポイントツーポイント接続、ブリッジ、アダプタ、コントローラ、またはその他の回路、あるいはそれらの組み合わせを含めることができる。バスには、例えば、システムバス、ペリフェラル コンポーネント インターコネクト(PCI)バス、ハイパートランスポートまたは業界標準アーキテクチャ(ISA)バス、小型コンピュータシステムインターフェイス(SCSI)バス、ユニバーサルシリアルバス(USB)、またはその他のバス、あるいはそれらの組み合わせのうちの1つまたは複数を含むことができる。
【0113】
一例では、システム800は、インターフェイス812に結合することができる、インターフェイス814を含む。インターフェイス814は、インターフェイス812よりも低速のインターフェイスとすることができる。一例では、インターフェイス814は、スタンドアロン構成要素および集積回路を含むことができるインターフェイス回路を表す。一例では、複数のユーザインターフェイス構成要素または周辺構成要素、あるいはその両方がインターフェイス814に結合する。ネットワークインターフェイス850は、システム800に、1つまたは複数のネットワークを介してリモートデバイス(例えば、サーバまたは他のコンピューティングデバイス)と通信する能力を提供する。ネットワークインターフェイス850は、イーサネット(登録商標)アダプタ、無線相互接続構成要素、セルラネットワーク相互接続構成要素、USB(ユニバーサルシリアルバス)、または他の有線規格または無線規格に基づくインターフェイスまたは専用インターフェイスを含むことができる。ネットワークインターフェイス850は、メモリに格納されたデータを送信すること、またはメモリに格納されたデータを受信することを含むことができるリモートデバイスとデータを交換することができる。
【0114】
一例では、システム800は、1つまたは複数の入力/出力(I/O)インターフェイス860を含む。I/Oインターフェイス860は、ユーザがシステム800と相互作用する1つまたは複数のインターフェイス構成要素(例えば、音声、英数字、触覚/タッチ、または他のインターフェイス)を含むことができる。周辺インターフェイス870は、上記で具体的に言及されていない任意のハードウェアインターフェイスを含むことができる。周辺機器は一般に、システム800に依存して接続するデバイスを指す。依存接続とは、動作を実行し、ユーザが相互作用する、ソフトウェアプラットフォームまたはハードウェアプラットフォーム、あるいはその両方をシステム800が提供する接続である。
【0115】
一例では、システム800は、データを不揮発的な方法で格納するための記憶装置サブシステム880を含む。一例では、特定のシステム実装で、記憶装置880の少なくとも特定の構成要素は、メモリサブシステム820の構成要素とオーバーラップすることができる。記憶装置サブシステム880は、1つまたは複数の磁気ディスク、ソリッドステートディスク、または光学ベースのディスク、またはそれらの組み合わせなど、不揮発性の方法で大量のデータを格納するための任意の従来の媒体とすることができるか、または含むことができる記憶装置(複数可)884を含む。記憶装置884は、コードまたは命令およびデータ886を永続的状態で保持する(すなわち、システム800への電力供給の遮断にかかわらず、値は保持される)。記憶装置884は、一般に「メモリ」であると考えることができるが、メモリ830は、典型的には、プロセッサ810に命令を提供する実行メモリまたは動作メモリである。記憶装置884は不揮発性であるが、メモリ830は揮発性メモリを含むことができる(すなわち、システム800への電力供給が遮断された場合、データの値または状態は不定である)。一例では、記憶装置サブシステム880は、記憶装置884とインターフェイスするコントローラ882を含む。一例では、コントローラ882は、インターフェイス814またはプロセッサ810の物理的部分であるか、またはプロセッサ810およびインターフェイス814の両方に回路またはロジックを含むことができる。
【0116】
電源802は、システム800の構成要素に電力を提供する。より具体的には、電源802は、典型的には、システム800の構成要素に電力を供給するために、システム800の1つまたは複数の電力供給804とインターフェイスする。一例では、電力供給804は、壁コンセントに差し込むためのAC-DC(交流から直流)アダプタを含む。そのようなAC電力は、再生可能エネルギー(例えば、太陽光発電)電源802とすることができる。一例では、電源802は、外部AC-DCコンバータなどのDC電源を含む。一例では、電源802または電力供給804は、充電フィールドに近接して充電するための無線充電ハードウェアを含む。一例では、電源802は、内部バッテリまたは燃料電池電源を含むことができる。
【0117】
図9は、ホスト支援ロウハンマ緩和を実装できるモバイルデバイスの一例を示すブロック図である。システム900は、コンピューティングタブレット、携帯電話またはスマートフォン、ウェアラブルコンピューティングデバイス、または他のモバイルデバイス、あるいは組み込みコンピューティングデバイスなどのモバイルコンピューティングデバイスを表す。特定の構成要素が一般的に示されており、そのようなデバイスのすべての構成要素がシステム900に示されているわけではないことが理解されるであろう。システム900は、システム100に従ったシステムの一例を提供する。
【0118】
一例では、メモリサブシステム960は、リフレッシュを必要とする任意のメモリ962について本明細書の任意の例に従ったホスト支援ロウハンマ緩和を可能にするロウハンマロジックを表すロウハンマロジック990を含む。ロウハンマロジックは、メモリデバイスの内部でロウハンマ緩和を管理するために、メモリデバイス内のロジックを含むことができる。一例では、ロウハンマロジック990は、本明細書で提供される任意の例に従ってホスト支援ロウハンマ緩和を提供するために、メモリコントローラ964にロウハンマロジックを含む。ロウハンマロジック990は、コントローラが余剰のリフレッシュコマンドを送信することを可能にし、メモリ962がアクティブ化コマンドの数に基づいて潜在的な被害行のリフレッシュを実行できるようにする。
【0119】
デバイス900は、システム900の主な処理動作を実行するプロセッサ910を含む。プロセッサ910は、マイクロプロセッサ、アプリケーションプロセッサ、マイクロコントローラ、プログラマブルロジックデバイス、または他の処理手段などの1つまたは複数の物理デバイスを含むことができる。プロセッサ910によって実行される処理動作は、アプリケーションおよびデバイス機能が実行されるオペレーティングプラットフォームまたはオペレーティングシステムの実行を含む。処理動作は、人間のユーザまたは他のデバイスとのI/O(入力/出力)に関連する動作、電力管理に関連する動作、システム900を別のデバイスに接続することに関連する動作、またはそれらの組み合わせを含む。処理動作は、音声I/O、ディスプレイI/O、またはその他のインターフェイス、あるいはそれらの組み合わせに関連する動作も含む。プロセッサ910は、メモリに格納されたデータを実行することができる。プロセッサ910は、メモリに格納されたデータを書き込むかまたは編集することができる。
【0120】
一例では、システム900は1つまたは複数のセンサ912を含む。センサ912は、埋め込みセンサまたは外部センサへのインターフェイス、あるいはそれらの組み合わせを表す。センサ912は、システム900が実装される環境またはデバイスの1つまたは複数の状態を、システム900が監視または検出することを可能にする。センサ912は、環境センサ(温度センサ、動作検出器、光検出器、カメラ、化学センサ(例えば、一酸化炭素センサ、二酸化炭素センサ、または他の化学センサ)など)、圧力センサ、加速度計、ジャイロスコープ、医学または生理学センサ(例えば、生理学的属性を検出するためのバイオセンサ、心拍数モニタ、またはその他のセンサ)、またはその他のセンサ、またはそれらの組み合わせを含むことができる。センサ912は、ユーザの特徴を検出または認識する指紋認識システム、顔検出または認識システム、または他のシステムなどの生体認証システム用のセンサも含むことができる。センサ912は幅広く理解されるべきであり、システム900で実装できる多くの異なるタイプのセンサを制限するものではない。一例では、1つまたは複数のセンサ912は、プロセッサ910と統合されたフロントエンド回路を介してプロセッサ910に結合する。一例では、1つまたは複数のセンサ912は、システム900の別の構成要素を介してプロセッサ910に結合する。
【0121】
一例では、システム900は、音声機能をコンピューティングデバイスに提供することに関連するハードウェア(例えば、音声ハードウェアおよび音声回路)およびソフトウェア(例えば、ドライバ、コーデック)構成要素を表す音声サブシステム920を含む。音声機能は、スピーカまたはヘッドフォン出力、ならびにマイクロフォン入力を含むことができる。そのような機能のためのデバイスは、システム900に統合するか、またはシステム900に接続することができる。一例では、ユーザは、プロセッサ910によって受信および処理される音声コマンドを提供することにより、システム900と相互作用する。
【0122】
ディスプレイサブシステム930は、ユーザに提示するための視覚表示を提供するハードウェア(例えば、ディスプレイデバイス)およびソフトウェア構成要素(例えば、ドライバ)を表す。一例では、ディスプレイは、ユーザがコンピューティングデバイスと相互作用するための触覚構成要素またはタッチスクリーン要素を含む。ディスプレイサブシステム930は、ユーザにディスプレイを提供するために使用される特定のスクリーンまたはハードウェアデバイスを含む、ディスプレイインターフェイス932を含む。一例では、ディスプレイインターフェイス932は、ディスプレイに関連する少なくともいくつかの処理を実行するプロセッサ910(グラフィックプロセッサなど)とは別個のロジックを含む。一例では、ディスプレイサブシステム930は、出力および入力の両方をユーザに提供するタッチスクリーンデバイスを含む。一例では、ディスプレイサブシステム930は、出力をユーザに提供する高精細(HD)または超高精細(UHD)ディスプレイを含む。一例では、ディスプレイサブシステムは、タッチスクリーンディスプレイを含むか、それを駆動する。一例では、ディスプレイサブシステム930は、メモリに格納されたデータに基づいて、またはプロセッサ910によって実行される動作に基づいて、あるいはその両方に基づいて、表示情報を生成する。
【0123】
I/Oコントローラ940は、ユーザとの相互作用に関連するハードウェアデバイスおよびソフトウェア構成要素を表す。I/Oコントローラ940は、音声サブシステム920またはディスプレイサブシステム930、あるいはその両方の一部であるハードウェアを管理するように動作することができる。さらに、I/Oコントローラ940は、ユーザがシステムと相互作用することができるシステム900に接続する追加のデバイスのための接続ポイントを示す。例えば、システム900に接続できるデバイスは、マイクロフォンデバイス、スピーカまたはステレオシステム、ビデオシステムまたはその他のディスプレイデバイス、キーボードまたはキーパッドデバイス、あるいはカードリーダまたはその他のデバイスなどの特定のアプリケーションで使用するためのその他のI/Oデバイスを含むことができる。
【0124】
上述したように、I/Oコントローラ940は、音声サブシステム920またはディスプレイサブシステム930またはその両方と相互作用することができる。例えば、マイクロフォンまたは他の音声デバイスを介した入力は、システム900の1つまたは複数のアプリケーションまたは機能に入力またはコマンドを提供することができる。さらに、ディスプレイ出力の代わりに、またはディスプレイ出力に加えて、音声出力を提供することができる。別の例では、ディスプレイサブシステムがタッチスクリーンを含む場合、ディスプレイデバイスは、I/Oコントローラ940によって少なくとも部分的に管理できる入力デバイスとしても機能する。I/Oコントローラ940によって管理されるI/O機能を提供するために、システム900上に追加のボタンまたはスイッチが存在する場合もある。
【0125】
一例では、I/Oコントローラ940は、加速度計、カメラ、光センサまたは他の環境センサ、ジャイロスコープ、全地球測位システム(GPS)、またはシステム900に含めることができる他のハードウェア、あるいはセンサ912などのデバイスを管理する。入力は、システムの動作に影響を与える環境入力(ノイズのフィルタリング、輝度検出用のディスプレイの調整、カメラのフラッシュの適用、またはその他の機能など)をシステムに提供するだけでなく、ユーザとの直接的な相互作用の一部とすることができる。
【0126】
一例では、システム900は、バッテリ電力使用量、バッテリの充電、および省電力動作に関連する機能を管理する電力管理950を含む。電力管理950は、システム900の構成要素に電力を供給する電源952からの電力を管理する。一例では、電源952は、壁コンセントに差し込むためのAC-DC(交流から直流)アダプタを含む。そのようなAC電力は、再生可能エネルギー(例えば、太陽光発電、モーションベースの電力)とすることができる。一例では、電源952は、外部AC-DCコンバータなどのDC電源によって提供することができるDC電力のみを含む。一例では、電源952は、充電フィールドに近接して充電するための無線充電ハードウェアを含む。一例では、電源952は、内部バッテリまたは燃料電池電源を含むことができる。
【0127】
メモリサブシステム960は、システム900に情報を格納するためのメモリデバイス(複数可)962を含む。メモリサブシステム960は、不揮発性メモリデバイス(メモリデバイスへの電力供給が遮断された場合でも状態は変化しない)または揮発性メモリデバイス(メモリデバイスへの電力供給が遮断された場合、状態は不定)、あるいはそれらの組み合わせを含むことができる。メモリ960は、アプリケーションデータ、ユーザデータ、音楽、写真、文書、または他のデータ、ならびにシステム900のアプリケーションおよび機能の実行に関連するシステムデータ(長期的でも一時的でも)を格納することができる。一例では、メモリサブシステム960は、メモリコントローラ964(システム900の制御の一部と考えることができ、プロセッサ910の一部と考えられる可能性がある)を含む。メモリコントローラ964は、メモリデバイス962へのアクセスを制御するコマンドを生成および発行するスケジューラを含む。
【0128】
接続機能970は、システム900が外部デバイスと通信することを可能にするためのハードウェアデバイス(例えば、無線コネクタまたは有線コネクタおよび通信ハードウェア、または有線ハードウェアおよび無線ハードウェアの組み合わせ)およびソフトウェア構成要素(例えば、ドライバ、プロトコルスタック)を含む。外部デバイスは、他のコンピューティングデバイス、無線アクセスポイントまたはベースステーション、ならびにヘッドセット、プリンタ、またはその他のデバイスなどの周辺機器などの別個のデバイスにすることもできる。一例では、システム900は、メモリに記憶するために、またはディスプレイデバイスに表示するために、外部デバイスとデータを交換する。交換されたデータには、データを読み取り、書き込み、または編集するために、メモリに格納されるデータ、または既にメモリに格納されているデータを含めることができる。
【0129】
接続機能970は、複数の異なるタイプの接続機能を含めることができる。一般化するために、システム900は、セルラ接続機能972および無線接続機能974と共に示される。セルラ接続機能972は、一般に、GSM(登録商標)(移動通信用グローバルシステム)または変形物もしくは派生物、CDMA(コード分割多重アクセス)または変形物もしくは派生物、TDM(時分割多重)または変形物もしくは派生物、LTE(ロングタームエボリューション、「4G」とも呼ばれる)、またはその他のセルラサービス規格を介して提供されるなど、無線通信事業者によって提供されるセルラネットワーク接続機能を指す。無線接続機能974は、セルラではない無線接続機能を指し、パーソナルエリアネットワーク(Bluetooth(登録商標)など)、ローカルエリアネットワーク(WiFiなど)、ワイドエリアネットワーク(WiMaxなど)、またはその他の無線通信、あるいはそれらの組み合わせを含めることができる。無線通信とは、非固体媒体を介した変調電磁放射の使用によるデータの転送を指す。有線通信は、固定通信媒体を介して行われる。
【0130】
周辺接続980は、ハードウェアインターフェイスおよびコネクタ、ならびに周辺接続を行うためのソフトウェア構成要素(例えば、ドライバ、プロトコルスタック)を含む。システム900は、他のコンピューティングデバイスへの(「外へ」982)周辺デバイスとすることも、システム900に接続される周辺デバイス(「外から」984)を有することもできることが理解されるであろう。デバイス900は通常、システム900上のコンテンツの管理(例えば、ダウンロード、アップロード、変更、同期)などの目的で他のコンピューティングデバイスに接続するための「ドッキング」コネクタを有する。さらに、ドッキングコネクタは、システム900が、例えば、オーディオビジュアルまたは他のシステムへのコンテンツ出力を制御することを可能にする特定の周辺機器に、システム900を接続することを可能にすることができる。
【0131】
専用ドッキングコネクタまたは他の専用接続ハードウェアに加えて、システム900は、一般的なまたは規格に基づくコネクタを介して周辺接続980を行うことができる。一般的なタイプには、ユニバーサルシリアルバス(USB)コネクタ(複数の異なるハードウェアインターフェイスのいずれかを含むことがきる)、ミニディスプレイポート(MDP)を含むディスプレイポート、高精細度マルチメディアインターフェイス(HDMI(登録商標))、またはその他のタイプが含まれる。
【0132】
一般に、本明細書の説明に関して、一例では、ダイナミックランダムアクセスメモリ(DRAM)デバイスが、複数行のメモリを有するメモリアレイおよび、アクティブ化コマンドの閾値数の受信に応答して、メモリコントローラが、リフレッシュウィンドウ内の複数行をリフレッシュするために必要なリフレッシュコマンドの数を超えて、超過したリフレッシュコマンドを送信し、DRAMデバイスが、超過したリフレッシュコマンドに応答して、ロウハンマリフレッシュを実行し、潜在的な攻撃行の潜在的な被害行をリフレッシュする、複数のアクティブ化コマンドおよび複数のリフレッシュコマンドを含むコマンドを、関連するメモリコントローラから受信する入力/出力(I/O)ハードウェアを含む。
【0133】
一例では、アクティブ化の閾値数の受信は、特定の時間ウィンドウ内でのアクティブ化の閾値数の受信を含む。一例では、特定の時間ウィンドウ内でのアクティブ化の閾値数の受信がスライディングウィンドウを有し、各アクティブ化コマンドがカウントを増加させ、時間がカウントを減少させる。一例では、アクティブ化コマンドの閾値数が、チャネルごとまたはランクごとに、アクティブ化コマンドの閾値数を有する。一例では、アクティブ化コマンドの閾値数が、バンクごとまたはバンクグループごとに、アクティブ化コマンドの閾値数を有する。一例では、余分のリフレッシュコマンドは、余分のリフレッシュコマンドがロウハンマリフレッシュのためのものであることを示すタグを有するリフレッシュコマンドを含む。
【0134】
一般に、本明細書の説明に関連して、一例では、メモリコントローラは、複数行のメモリを有するメモリデバイスに送信するコマンドをキューに入れるバッファ、メモリデバイスへのアクティブ化コマンドの数を追跡するカウンタ、および複数のアクティブ化コマンドおよび複数のリフレッシュコマンドを含むコマンドをメモリデバイスに送信するI/Oハードウェアを備え、入力/出力(I/O)ハードウェアは閾値数のアクティブ化コマンドの検出に応答して、リフレッシュウィンドウ内で行をリフレッシュするために必要なリフレッシュコマンドの数を超えて、余分のリフレッシュコマンドを送信し、余分のリフレッシュコマンドは、メモリデバイスが、ロウハンマリフレッシュを実行して潜在的な攻撃行による潜在的な被害行をリフレッシュするようトリガする。
【0135】
一例では、閾値数のアクティブ化の検出が、特定の時間ウィンドウ内での閾値数のアクティブ化の検出を含む。一例では、特定の時間ウィンドウ内での閾値数のアクティブ化検出がスライディングウィンドウを有し、各アクティブ化コマンドがカウンタを増加させ、時間がカウンタを減少させる。一例では、閾値数のアクティブ化コマンドが、メモリデバイスを含む複数のメモリデバイスのチャネルごとまたはランクごとの閾値数のアクティブ化コマンドを有する。一例では、閾値数のアクティブ化コマンドが、メモリデバイスのバンクごとまたはバンクグループごとの閾値数のアクティブ化コマンドを有する。一例では、余分のリフレッシュコマンドは、余分のリフレッシュコマンドがロウハンマリフレッシュのためのものであることを示すタグを有するリフレッシュコマンドを含む。
【0136】
一般に、本明細書の説明に関連して、一例では、システムは、複数行のメモリを有する複数のダイナミックランダムアクセスメモリ(DRAM)デバイスと、複数のDRAMデバイスに結合されたメモリコントローラであって、メモリデバイスへのアクティブ化コマンドの数を追跡するカウンタを含むメモリコントローラと、複数のアクティブ化コマンドおよび複数のリフレッシュコマンドを含む複数のコマンドをメモリデバイスに送信する入力/出力(I/O)ハードウェアとを備え、閾値数のアクティブ化コマンドの検出に応答して、I/Oハードウェアが、リフレッシュウィンドウ内で行をリフレッシュするために必要なリフレッシュコマンドの数を超えて、余分のリフレッシュコマンドを送信し、余分のリフレッシュコマンドが、DRAMデバイスを、ロウハンマリフレッシュを実行して、潜在的な攻撃行による潜在的な被害行をリフレッシュするようトリガする。
【0137】
一例では、閾値数のアクティブ化の検出が、特定の時間ウィンドウ内での閾値数のアクティブ化の検出を含む。一例では、特定の時間ウィンドウ内での閾値数のアクティブ化検出がスライディングウィンドウを有し、各アクティブ化コマンドがカウンタを増加させ、時間がカウンタを減少させる。一例では、閾値数のアクティブ化コマンドが、DRAMデバイスのチャネルごとまたはランクごとの閾値数のアクティブ化コマンドを有する。一例では、閾値数のアクティブ化コマンドが、DRAMデバイスごとの閾値数のアクティブ化コマンドを有する。一例では、閾値数のアクティブ化コマンドが、特定のDRAMデバイスのバンクごとまたはバンクグループごとにの閾値数のアクティブ化コマンドを有する。一例では、余分のリフレッシュコマンドは、余分のリフレッシュコマンドが、ロウハンマリフレッシュのためのものであることを示すタグを有するリフレッシュコマンドを含む。一例では、システムは、メモリコントローラに結合されたホストプロセッサデバイス、ホストプロセッサに通信可能に結合されたディスプレイ、ホストプロセッサに通信可能に結合されたネットワークインターフェイス、またはシステムに電力を供給するバッテリのうちの1つまたは複数を含む。
【0138】
本明細書に示される流れ図は、様々なプロセスアクションのシーケンスの例を提供する。流れ図は、ソフトウェアまたはファームウェアルーチン、ならびに物理的な動作によって実行される動作を示すことができる。流れ図は、ハードウェアおよび/またはソフトウェアで実装できる、有限状態機械(FSM)の状態の実装の一例を示すことができる。特定のシーケンスまたは順序で示されているが、特に明記しない限り、アクションの順序は変更できる。したがって、図示された図表は単なる例として理解されるべきであり、プロセスは異なる順序で実行でき、いくつかのアクションは並列に実行することができる。さらに、1つまたは複数のアクションを省略でき、したがって、すべての実装がすべてのアクションを実行するわけではない。
【0139】
様々な動作または機能が本明細書に記載されている限り、それらはソフトウェアコード、命令、コンフィグレーション、および/またはデータとして記載または定義することができる。コンテンツは、直接実行可能(「オブジェクト」または「実行可能」形式)、ソースコード、または差分コード(「デルタ」または「パッチ」コード)にすることができる。本明細書に記載されているソフトウェアコンテンツは、コンテンツが格納された製品を介して、または通信インターフェイスを介してデータを送信するための通信インターフェイスを動作させる方法を介して提供することができる。機械可読記憶媒体は、記述された機能または動作を機械に実行させることができ、記録可能/記録不可能なメディア(例えば、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイスなど)などの機械(例えば、コンピューティングデバイス、電子システムなど)によってアクセス可能な形式で情報を格納する任意の機構を含む。通信インターフェイスは、メモリバスインターフェイス、プロセッサバスインターフェイス、インターネット接続、ディスクコントローラなど、別のデバイスと通信するためのハードワイヤード、無線、光などの媒体のいずれかとインターフェイスする任意の機構を含む。通信インターフェイスは、ソフトウェアコンテンツを記述するデータ信号を提供するために、コンフィグレーションパラメータを提供すること、および/または通信インターフェイスを準備する信号を送信することによって構成することができる。通信インターフェイスは、通信インターフェイスに送信される1つまたは複数のコマンドまたは信号を介してアクセスすることができる。
【0140】
本明細書に記載される様々な構成要素は、記載される動作または機能を実行するための手段とすることができる。本書に記載される各構成要素は、ソフトウェア、ハードウェア、またはこれらの組み合わせを含む。構成要素は、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタルシグナルプロセッサ(DSP)など)、組み込みコントローラ、ハードワイヤード回路などとして実装することができる。
【0141】
本明細書に記載される内容に加えて、開示される内容および本発明の実装に対して、それらの範囲から逸脱することなく様々な修正を行うことができる。したがって、本明細書の例示および例は、限定的な意味ではなく、例示的な意味で解釈されるべきである。本発明の範囲は、以下の特許請求の範囲を参照することによってのみ測定されるべきである。(項目1)
ダイナミックランダムアクセスメモリ(DRAM)デバイスであって、
複数行のメモリを有するメモリアレイと、
複数のアクティブ化コマンドおよび複数のリフレッシュコマンドを含むコマンドを、関連するメモリコントローラから受信する入力/出力(I/O)ハードウェアであって、上記メモリコントローラが閾値数のアクティブ化コマンドの受信に応答して、リフレッシュウィンドウ内で上記複数行をリフレッシュするために必要なリフレッシュコマンドの数を超えて、余分のリフレッシュコマンドを送信し、上記DRAMデバイスが、上記余分のリフレッシュコマンドに応答して、ロウハンマ(row hammer)リフレッシュを実行して潜在的な攻撃行(aggressor row)による潜在的な被害行(victim row)をリフレッシュする、入力/出力(I/O)ハードウェアとを
備える、DRAMデバイス。
(項目2)
上記閾値数のアクティブ化の受信が、特定の時間ウィンドウ内での上記閾値数のアクティブ化の受信を含む、項目1に記載のDRAMデバイス。
(項目3)
上記特定の時間ウィンドウ内での上記閾値数のアクティブ化の受信がスライディングウィンドウを有し、各アクティブ化コマンドがカウントを増加させ、時間が上記カウントを減少させる、項目2に記載のDRAMデバイス。
(項目4)
上記閾値数のアクティブ化コマンドが、チャネルごとまたはランクごとの閾値数のアクティブ化コマンドを有する、項目1に記載のDRAMデバイス。
(項目5)
上記閾値数のアクティブ化コマンドのが、バンクごとまたはバンクグループごとの閾値数のアクティブ化コマンドを有する、項目1に記載のDRAMデバイス。
(項目6)
上記余分のリフレッシュコマンドは、上記余分のリフレッシュコマンドがロウハンマリフレッシュのためのものであることを示すタグを有するリフレッシュコマンドを含む、項目1に記載のDRAMデバイス。
(項目7)
メモリコントローラであって、
複数行のメモリを有するメモリデバイスに送信するコマンドをキューに入れるバッファと、
上記メモリデバイスに対するアクティブ化コマンドの数を追跡するカウンタと、
複数のアクティブ化コマンドおよび複数のリフレッシュコマンドを含むコマンドを上記メモリデバイスに送信する入力/出力(I/O)ハードウェアであって、閾値数のアクティブ化コマンドの検出に応答して、上記I/Oハードウェアが、リフレッシュウィンドウ内で上記行をリフレッシュするために必要なリフレッシュコマンドの数を超えて余分のリフレッシュコマンドを送信し、上記余分のリフレッシュコマンドが、上記メモリデバイスをロウハンマリフレッシュを実行して、潜在的な攻撃行による潜在的な被害行をリフレッシュするようトリガする、入力/出力(I/O)ハードウェアとを
備える、メモリコントローラ。
(項目8)
上記閾値数のアクティブ化の検出が、特定の時間ウィンドウ内の上記閾値数のアクティブ化の検出を含む、項目7に記載のメモリコントローラ。
(項目9)
上記特定の時間ウィンドウ内での上記閾値数のアクティブ化の検出がスライディングウィンドウを有し、各アクティブ化コマンドがカウンタを増加させ、時間が上記カウンタを減少させる、項目8に記載のメモリコントローラ。
(項目10)
上記閾値数のアクティブ化コマンドが、メモリデバイスを含む複数のメモリデバイスのチャネルごとまたはランクごとの閾値数のアクティブ化コマンドを有する、項目7に記載のメモリコントローラ。
(項目11)
上記閾値数のアクティブ化コマンドが、上記メモリデバイスのバンクごとまたはバンクグループごとの閾値数のアクティブ化コマンドを有する、項目7に記載のメモリコントローラ。
(項目12)
上記余分のリフレッシュコマンドは、上記余分のリフレッシュコマンドがロウハンマリフレッシュのためのものであることを示すタグを有するリフレッシュコマンドを含む、項目7に記載のメモリコントローラ。
(項目13)
システムであって、
複数のメモリ行を有する複数のダイナミックランダムアクセスメモリ(DRAM)デバイスと、
上記複数のDRAMデバイスに結合されたメモリコントローラであって、上記メモリコントローラが、
上記メモリデバイスへのアクティブ化コマンドの数を追跡するカウンタと、
複数のアクティブ化コマンドおよび複数のリフレッシュコマンドを含む複数のコマンドを上記メモリデバイスに送信する入力/出力(I/O)ハードウェアであって、閾値数のアクティブ化コマンドの検出に応答して、上記I/Oハードウェアが、リフレッシュウィンドウ内で上記行をリフレッシュするために必要なリフレッシュコマンドの数を超えて、余分のリフレッシュコマンドを送信し、上記余分のリフレッシュコマンドが、DRAMデバイスを、ロウハンマリフレッシュを実行して、潜在的な攻撃行による潜在的な被害行をリフレッシュするようトリガする、入力/出力(I/O)ハードウェアとを含む、メモリコントローラとを
備えるシステム。
(項目14)
上記閾値数のアクティブ化の検出が、特定の時間ウィンドウ内での上記閾値数のアクティブ化の検出を含む、項目13に記載のシステム。
(項目15)
上記特定の時間ウィンドウ内での上記閾値数のアクティブ化の検出がスライディングウィンドウを有し、各アクティブ化コマンドがカウンタを増加させ、時間が上記カウンタを減少させる、項目14に記載のシステム。
(項目16)
上記閾値数のアクティブ化コマンドが、DRAMデバイスのチャネルごとまたはランクごとの閾値数のアクティブ化コマンドを有する、項目13に記載のシステム。
(項目17)
上記閾値数のアクティブ化コマンドが、DRAMデバイスごとの閾値数のアクティブ化コマンドを有する、項目13に記載のシステム。
(項目18)
上記閾値数のアクティブ化コマンドが、特定のDRAMデバイスのバンクごとまたはバンクグループごとの閾値数のアクティブ化コマンドを有する、項目13に記載のシステム。
(項目19)
上記余分のリフレッシュコマンドは、余分のリフレッシュコマンドがロウハンマリフレッシュのためのものであることを示すタグを有するリフレッシュコマンドを含む、項目13に記載のシステム。
(項目20)
上記メモリコントローラに結合されたホストプロセッサデバイス、
ホストプロセッサに通信可能に結合されたディスプレイ、
ホストプロセッサに通信可能に結合されたネットワークインターフェイス、または
上記システムに電力を供給するバッテリ
のうちの1つまたは複数をさらに備える、項目13に記載のシステム。