JP2023522219A - ハードウェア支援ダイナミックランダムアクセスメモリ(dram)行マージ - Google Patents
ハードウェア支援ダイナミックランダムアクセスメモリ(dram)行マージ Download PDFInfo
- Publication number
- JP2023522219A JP2023522219A JP2022563046A JP2022563046A JP2023522219A JP 2023522219 A JP2023522219 A JP 2023522219A JP 2022563046 A JP2022563046 A JP 2022563046A JP 2022563046 A JP2022563046 A JP 2022563046A JP 2023522219 A JP2023522219 A JP 2023522219A
- Authority
- JP
- Japan
- Prior art keywords
- row
- rows
- reserved
- memory controller
- mapping table
- 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.)
- Pending
Links
- 238000013507 mapping Methods 0.000 claims abstract description 173
- 238000000034 method Methods 0.000 claims description 60
- 230000004044 response Effects 0.000 claims description 22
- 238000013506 data mapping Methods 0.000 abstract description 6
- 230000008569 process Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000007717 exclusion Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008685 targeting Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40607—Refresh operations in memory devices with an internal cache or data buffer
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/406—Management or control of the refreshing or charge-regeneration cycles
- G11C11/40622—Partial refresh of memory arrays
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/408—Address circuits
- G11C11/4085—Word line control circuits, e.g. word line drivers, - boosters, - pull-up, - pull-down, - precharge
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/21—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
- G11C11/34—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
- G11C11/40—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
- G11C11/401—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
- G11C11/4063—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
- G11C11/407—Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
- G11C11/409—Read-write [R-W] circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Dram (AREA)
- Memory System (AREA)
Abstract
ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージは、メモリコントローラが、DRAMモジュール内で、同一データを記憶する複数の行を識別することと、複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を含む。【選択図】図1
Description
データの完全性を確保するために、ダイナミックランダムアクセスメモリ(DRAM)行をリフレッシュする必要がある。ダイナミックランダムアクセスメモリのリフレッシュは、メモリモジュールによって使用される電力のかなりの部分を占める。いくつかの環境では、ダイナミックランダムアクセスメモリの複数の行(rows)は、同一の値を記憶する。
いくつかの実施形態では、ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージ(merging)は、特に、メモリコントローラが、DRAMモジュール内で、同一のデータを記憶する複数の行を識別することを含む。ハードウェア支援DRAM行マージは、マッピングテーブルに、複数の行のうち1つ以上の行を別の行にマッピングすることと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を更に含む。
いくつかの実施形態では、ハードウェア支援DRAM行マージは、1つ以上の行がリフレッシュから除外されることを示すようにビットマップを更新することを更に含む。そのような実施形態では、リフレッシュから1つ以上の行を除外することは、メモリコントローラが、ビットマップをDRAMモジュールに提供することを含む。いくつかの実施形態では、別の行は、複数の行のうち何れか行を含む。他の実施形態では、別の行は、DRAMモジュールの1つ以上の予約行に含まれる予約行を含む。いくつかの実施形態では、ハードウェア支援DRAM行マージは、単一行が予約行にマッピングされていると判定することを更に含む。そのような判定に応じて、メモリコントローラは、単一行に、予約行に記憶されたデータを記憶し、単一行の予約行へのマッピングを除去するようにマッピングテーブルを更新する。いくつかの実施形態では、ハードウェア支援DRAM行マージは、予約行にマッピングされた行の数を示すカウンタを維持することを更に含む。そのような実施形態では、単一行が予約行にマッピングされていると判定することは、カウンタに基づいている。いくつかの実施形態では、ハードウェア支援DRAM行マージは、マッピングテーブルの一部を記憶するマッピングテーブルキャッシュを維持することを更に含む。いくつかの実施形態では、ハードウェア支援DRAM行マージは、1つ以上の行のうち何れかの行についての読み取り要求を受信することを更に含む。読み取り要求を受信したことに応じて、メモリコントローラは、マッピングテーブルに基づいて、その行が別の行にマッピングされていると判定し、別の行に記憶されたデータを提供する。いくつかの実施形態では、ハードウェア支援DRAM行マージは、1つ以上の行のうち特定の行についての書き込み要求を受信することを更に含む。書き込み要求に応じて、メモリコントローラは、1つ以上の行のうち特定の行に、予約行に記憶されたデータを記憶する。次いで、メモリコントローラは、書き込み要求を実行し、特定の行の予約行へのマッピングを除去するようにマッピングテーブルを更新する。
いくつかの実施形態では、ハードウェア支援DRAM行マージのためのメモリコントローラは、特に、メモリコントローラが、DRAMモジュール内で、同一のデータを記憶する複数の行を識別することを含む工程を実行する。工程は、マッピングテーブルに、複数の行のうち1つ以上の行を別の行にマッピングすることと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を更に含む。
いくつかの実施形態では、工程は、1つ以上の行がリフレッシュから除外されることを示すようにビットマップを更新することを更に含む。そのような実施形態では、リフレッシュから1つ以上の行を除外することは、メモリコントローラが、ビットマップをDRAMモジュールに提供することを含む。いくつかの実施形態では、別の行は、複数の行のうち何れかの行を含む。他の実施形態では、別の行は、DRAMモジュールの1つ以上の予約行に含まれる予約行を含む。いくつかの実施形態では、工程は、単一行が予約行にマッピングされていると判定することを更に含む。そのような判定に応じて、メモリコントローラは、単一行に、予約行に記憶されたデータを記憶し、単一行の予約行へのマッピングを除去するようにマッピングテーブルを更新する。いくつかの実施形態では、工程は、予約行にマッピングされた行の数を示すカウンタを維持することを更に含む。そのような実施形態では、単一行が予約行にマッピングされていると判定することは、カウンタに基づいている。いくつかの実施形態では、工程は、マッピングテーブルの一部を記憶するマッピングテーブルキャッシュを維持することを更に含む。いくつかの実施形態では、工程は、1つ以上の行のうち何れかの行についての読み取り要求を受信することを更に含む。読み取り要求を受信したことに応じて、メモリコントローラは、マッピングテーブルに基づいて、その行が別の行にマッピングされていると判定し、別の行に記憶されたデータを提供する。いくつかの実施形態では、工程は、1つ以上の行のうち特定の行についての書き込み要求を受信することを更に含む。書き込み要求に応じて、メモリコントローラは、1つ以上の行のうち特定の行に、予約行に記憶されたデータを記憶する。次いで、メモリコントローラは、書き込み要求を実行し、特定の行の予約行へのマッピングを除去するようにマッピングテーブルを更新する。
いくつかの実施形態では、ハードウェア支援DRAM行マージのための装置は、メモリコントローラを含み、メモリコントローラは、特に、メモリコントローラが、DRAMモジュール内で、同一のデータを記憶する複数の行を識別することを含む工程を実行する。工程は、マッピングテーブルに、複数の行のうち1つ以上の行を別の行にマッピングすることと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を更に含む。
いくつかの実施形態では、工程は、1つ以上の行がリフレッシュから除外されることを示すようにビットマップを更新することを更に含む。そのような実施形態では、リフレッシュから1つ以上の行を除外することは、メモリコントローラが、ビットマップをDRAMモジュールに提供することを含む。
図1は、非限定的な例示的なシステム100のブロック図である。例示的なシステム100は、中央処理ユニット(CPU)、グラフィック処理ユニット(GPU)等を含む様々なデバイスに実装することができる。システム100は、メモリコントローラ102及び1つ以上のダイナミックランダムアクセスメモリ(DRAM)モジュール106を含む。DRAMモジュール104の各々は、データを記憶するための複数の行106を含む。メモリコントローラ102は、DRAMモジュール104に発行される読み取り及び書き込み要求を処理する。例えば、メモリコントローラ102は、読み取り要求及び書き込み要求のキューを維持し、キューに入れられた要求を、要求が向けられている特定のDRAMモジュール104に発行する。
行106は、データを記憶するための揮発性メモリである。行106は、揮発性であるため、記憶されたデータの完全性を維持するために行106を定期的にリフレッシュする必要がある。これらのリフレッシュは、DRAMモジュール104によって利用される電力のかなりの部分を占める。多くの環境では、同じDRAMモジュール104内の複数の行106は、同一のデータを記憶する。すなわち、1つの行106の各値は、1つ以上の他の行106内の各値と同一である。例えば、複数の仮想マシンが同じハードウェア上で実行され、仮想マシンが同一のソフトウェア又はオペレーティングシステムを実行している環境では、各仮想マシンについてのDRAMの割り当てられた部分に記憶されたデータは、少なくとも部分的に同一であろう。
DRAMの行にわたる同一のデータに対処するための既存の解決策は、同一の行からデータを重複除去するハイパーバイザ又は他のエージェントによって管理されるソフトウェアモジュールを含む。しかしながら、DRAMコンテンツの重複除去に関与するボトルネックを低減するために、これらのモジュールは、典型的には、システム内の利用可能な合計メモリが閾値を下回る場合にのみ実行される。更に、これらの解決策はソフトウェアベースであるため、DRAMに記憶されたデータを重複除去するために、計算オーバーヘッド及びリソースが必要とされる。
かなりの計算オーバーヘッドを必要とし、合計システムメモリが閾値を下回った場合にのみ実行されるソフトウェアベースの解決策を利用する代わりに、システム100は、DRAMモジュール104内に同一のデータを記憶する行106をマージするためのハードウェアベースのアプローチを使用する。メモリコントローラ102は、DRAMモジュール104内で、同一のデータを記憶する複数の行を識別する。例えば、複数の行の各々は、DRAMモジュール104の行106を含むことができる。別の例として、複数の行は、予約行108と同一のデータを共有する1つ以上の行106を含むことができる。予約行108は、同一のデータを記憶するものとして識別された行106からデータを記憶するために予約されたDRAMモジュール104内のメモリの行である。言い換えれば、行106は、他のプロセス又はエージェントからの読み取り及び書き込み動作を提供するために使用されるが、予約行108は、同一のデータを記憶するものとして識別された行106からデータを記憶するためにのみ使用される。
いくつかの実施形態では、同一のデータを記憶する複数の行を識別することは、所定の間隔で、又は、別のイベントに応じて実行される。例えば、メモリコントローラ102は、行106内で、イベントの発生に応じて、同一のデータを記憶する2つ以上の行106を識別する。別の例として、メモリコントローラ102は、行106内で、イベントの発生に応じて、予約行108と同一のデータを記憶する1つ以上の行106を識別する。いくつかの実施形態では、複数の行を識別することは、行106に発行された読み取り要求又は書き込み要求に応じて実行される。例えば、メモリコントローラ102は、行106から読み取られた又は行106に書き込まれたデータと、別の行106又は予約行108のデータと、を比較する。いくつかの実施形態では、これには、以下により詳細に説明するように、行106から読み取られた又は行106に書き込まれたデータのチェックサム110又はハッシュと、1つ以上の記憶されたチェックサム110と、を比較することが含まれる。
次いで、メモリコントローラ102は、複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブル112に記憶する。マッピングテーブル112の各エントリは、DRAMモジュール104内で行106を別の行にマッピングし、別の行は、それがマッピングされる行106に最後に記憶されたデータと同一のデータを記憶する。マッピングテーブル112は、DRAMモジュール104に記憶されるものとして示されているが、いくつかの実施形態では、マッピングテーブル112は、その代わりにメモリコントローラ102に記憶されることが理解されよう。
いくつかの実施形態では、1つ以上の行を別の行にマッピングするデータを記憶することは、複数の識別された行106のうち1つ以上の行106を、複数の識別された行106のうち別の行106にマッピングするデータを記憶することを含む。例えば、メモリコントローラ102が、行106A,106B,106C,160Dがそれぞれ同一のデータを記憶すると識別したと仮定する。そのような例では、メモリコントローラ102は、行106A,106B,106Cを行106Dにマッピングするエントリをマッピングテーブル112に記憶する。この例では、行106Dは、残りの行がそれにマッピングされる場合に「代表行(representative row)」と見なされる。更に、この例では、行106Dは、代表行として任意に選択され、他の行106も可能な代表行であることが理解されよう。
別の例として、メモリコントローラ102が、行106A,106B,106C,106Dがそれぞれ同一のデータを記憶すると識別したと仮定する。次いで、メモリコントローラ102は、行106A,106B,106C,106Dに記憶されたものに等しいデータを予約行108に記憶し、行106A,106B,106C,106Dを予約行108にマッピングするエントリをマッピングテーブル112に記憶する。更なる例では、メモリコントローラ102が、行106A,106B,106Cが、予約行108に既に記憶されたデータに等しいデータを記憶すると識別すると仮定する。次いで、メモリコントローラ102は、行106A,106B,106Cを予約行108にマッピングするエントリをマッピングテーブル112に記憶する。
次いで、メモリコントローラ102は、DRAMモジュール104のリフレッシュから1つ以上の行106(例えば、マッピングテーブル112内の別の行にマッピングされた行106)を除外する。例えば、メモリコントローラ102は、次のリフレッシュ動作中にリフレッシュされる又はされない行106についての指標をDRAMモジュール104に提供する。いくつかの実施形態では、メモリコントローラ102は、リフレッシュビットマップ114を維持する。各行106は、リフレッシュビットマップ114内のビットに対応する。行106が別の行に(例えば、代表行又は予約行108に)マッピングされる場合、マッピングされた行106に対応するビットは、マッピングされた行106が次のリフレッシュ中にスキップされることを示すように設定される(例えば、「1」に設定される)。例えば、特定の行106をマッピングするためにマッピングテーブル112のエントリが生成されると、特定の行106に対応するリフレッシュビットマップ114内のビットは、特定の行106が次のリフレッシュから除外されることを示すように設定される。したがって、いくつかの実施形態では、リフレッシュから1つ以上の行106を除外することは、リフレッシュビットマップ114をDRAMモジュール104に提供することを含む。次いで、DRAMモジュール104は、リフレッシュビットマップ114に基づいてリフレッシュ動作を実行する。
上記のアプローチによれば、別の行(例えば、代表行又は予約行108)と同一のデータを記憶する1つ以上の行106は、リフレッシュ動作から除外され、これらの行106をリフレッシュする場合と比較してエネルギーが節約される。そのような行106は、以下、「マージ行106」と呼ばれる。これらのマージ行106に関する読み取り動作は、マッピングテーブル112にアクセスして、マッピングされた行106がマッピングされる位置(例えば、マッピングのターゲット)を判定し、次いで、マッピングのターゲットから対応するデータをロードすることによって行われる。
上述したように、マージ行106は、(行106に含まれる)代表行又は予約行108にマッピングされる。代表行は、依然として書き込み要求のターゲットであり得るため、代表行へのマッピングは、書き込まれた場合に重大なオーバーヘッドのリスクを呈する。例えば、代表行に書き込む場合、代表行に記憶されたデータを別の行にコピーする必要があり、代表行にマッピングする任意のマッピングテーブル112のエントリは、この別の行へのマッピングに更新されるべきである。したがって、予約行108は、マージ行106のデータを記憶するためにのみ書き込まれるので、好ましい実施形態では、マージされる行106は、予約行108にマッピングされる。
いくつかの実施形態では、メモリコントローラ102は、予約行108毎に、予約行108にマッピングされたマージ行106の数を示す対応するカウンタ116を維持する。例えば、マージ行106を予約行108にマッピングするマッピングテーブル112のエントリが生成されると、メモリコントローラ102は、予約行108に対応するカウンタ116をインクリメントする。(例えば、マージ行106に関する書き込みに応じて)マージ行106が予約行108にマッピングされることを停止すると、予約行108に対応するカウンタ116がデクリメントされる。いくつかの実施形態では、カウンタ116は、各予約行108のチェックサム110と同じデータ構造で維持される。例えば、データ構造内の各エントリは、予約行108に対応する。データ構造内の各エントリは、対応する予約行108について、予約行108(ある場合)に記憶されたデータのチェックサム110と、予約行108にマッピングされたマージ行106の数を示すカウンタ116と、を示す。
したがって、いくつかの実施形態では、メモリコントローラ102は、単一行106が予約行108にマッピングされたときを判定する。例えば、メモリコントローラ102は、予約行108に対応するカウンタ116が「1」に設定されたときを判定する。別の例として、メモリコントローラ102は、予約行108にマッピングするマッピングテーブル112のエントリにアクセスし、単一マッピングテーブル112が予約行108にマッピングされていると判定する。
単一行106が予約行108にマッピングされていると判定したことに応じて、メモリコントローラ102は、予約行108に記憶されたデータを単一行106に記憶する。例えば、メモリコントローラ102は、予約行108に記憶されたデータを予約行106にマッピングされた単一行106にコピー又は複製させるコマンドをDRAMモジュール104に発行する。これにより、単一行106に以前に記憶されたデータがリフレッシュの欠如に起因して劣化した場合に、単一行106が正しいデータを記憶することが保証される。次いで、メモリコントローラ102は、単一行106の予約行108へのマッピングを除去するようにマッピングテーブル112を更新する。いくつかの実施形態では、メモリコントローラ102は、予約行108に対応するカウンタをゼロにデクリメントする。いくつかの実施形態では、これは、予約行108が、割り当てられておらず、マージ目的で他の行106をマッピングするために他のデータの記憶に利用可能であることを示す。いくつかの実施形態では、メモリコントローラ102は、現時点で任意の予約行108にマッピングされていない単一行106を、次のリフレッシュに含むべきであることを示すようにリフレッシュビットマップ114を更新する。
上記のように、いくつかの実施形態では、メモリコントローラ102は、各予約行108に記憶されたデータのチェックサム110を維持する。チェックサム110は、行106から読み取られた又は行106に書き込まれたデータが予約行108と一致するかどうかを判定することを容易にする。例えば、行106への書き込み要求に応じて、メモリコントローラ102は、書き込まれるデータが予約行108と一致すると判定する。書き込み要求を実行する代わりに、メモリコントローラ102は、予約行108への書き込み要求によってターゲット化される行106をマッピングするマッピングテーブル112のエントリを生成する。いくつかの実施形態では、メモリコントローラ102は、書き込み要求によってターゲット化される行106、ここではマージ行106が、DRAMモジュール104のリフレッシュから除外されることを示すようにリフレッシュビットマップ114を更新する。別の例として、行106の読み取り要求に応じて、メモリコントローラ102は、チェックサム110に基づいて、読み取りデータが予約行108に記憶されたデータと一致すると判定する。次いで、メモリコントローラ102は、読み取り行106を予約行108にマッピングするマッピングテーブル112のエントリを生成し、DRAMモジュール104のリフレッシュから読み取り行106を除外するようにリフレッシュビットマップ114を更新する。
いくつかの実施形態では、メモリコントローラ102は、マッピングテーブル112内で最後に又は最も頻繁に使用されたマッピングを記憶するマッピングテーブルキャッシュ118を維持する。例えば、メモリコントローラ102は、マッピングテーブル112にアクセスして、読み取り又は書き込み要求によってターゲット化された行106が別の行(例えば、代表行又は予約行108)にマッピングされているかどうかを判定する。メモリコントローラ102がマッピングテーブル112内の一致を見出す場合、メモリコントローラ102は、マッチングマッピングテーブル112のエントリを含むようにマッピングテーブルキャッシュ118を更新する。したがって、読み取り又は書き込み要求は、マッピングテーブル112にアクセスする前にマッピングテーブルキャッシュ118内のエントリと最初に比較され、特定の行106がマージされて別の行にマッピングされているかどうかを判定するために必要なDRAMモジュール104へのアクセス数を減少させる。
DRAMモジュール104内の列106に関する読み取り要求に応じて、メモリコントローラ102は、行106がマージされ、別の行(例えば、代表行又は予約行108)にマッピングされているかどうかを判定する。例えば、メモリコントローラ102は、マッピングテーブルキャッシュ118にアクセスして、行106をマッピングするエントリが存在するかどうかを判定する。エントリが見出せない場合、又は、マッピングテーブルキャッシュ118が実装されていない場合、メモリコントローラ102は、マッピングテーブル112にアクセスして、行106をマッピングするエントリが存在するかどうかを判定する。エントリがマッピングテーブルキャッシュ118又はマッピングテーブル112内に存在する場合、アクセスされたエントリに示されるマッピングによってターゲット化された行及び記憶されたデータが取得される。次いで、このデータは、読み取り要求に応じて返される。いくつかの実施形態では、マッピングテーブル112の識別されたエントリは、マッピングテーブルキャッシュ118に追加される。
DRAMモジュール104内の行106に関する書き込み要求に応じて、メモリコントローラ102は、行106がマージされ、予約行108にマッピングされているかどうかを判定する。例えば、メモリコントローラ102は、マッピングテーブルキャッシュ118にアクセスして、行106を予約行108にマッピングするエントリが存在するかどうかを判定する。エントリが見出せない場合、又は、マッピングテーブルキャッシュ118が実装されていない場合、メモリコントローラ102は、マッピングテーブル112にアクセスして、行106を予約行108にマッピングするエントリが存在するかどうかを判定する。
エントリがマッピングテーブルキャッシュ118又はマッピングテーブル112に存在する場合、予約行108にアクセスされ、予約行108の内容が、書き込み要求によってターゲット化される行106にコピーされる。次いで、書き込み要求が行106に適用される。行106を予約行108にマッピングするマッピングテーブル112のエントリ(及び存在する場合、マッピングテーブルキャッシュ118のエントリ)が除去される。いくつかの実施形態では、予約行108に対応するカウンタ116がデクリメントされる。
更なる説明のために、図2は、DRAMモジュール104内で、(例えば、メモリコントローラ102が)同一のデータを記憶する複数の行を識別すること202を含む、ハードウェア支援DRAM行マージのための例示的な方法を示すフローチャートを示す。例えば、複数の行の各々は、DRAMモジュール104の行106を含む。別の例として、複数の行は、1つ以上の行106及び予約行108を含み、1つ以上の行106は、予約行108と同一のデータを共有する。例えば、いくつかの実施形態では、予約行108は、他の行106を事前にマージし、予約行にマッピングすることによってデータを記憶する。
いくつかの実施形態では、同一のデータを記憶する複数の行を識別すること202は、所定の間隔で、又は、別のイベントに応じて実行される。例えば、メモリコントローラ102は、行106内で、イベントの発生に応じて、同一のデータを記憶する2つ以上の行106を識別する。別の例として、メモリコントローラ102は、行106内で、予約行108と同一のデータを記憶する1つ以上の行106を識別する。いくつかの実施形態では、複数の行を識別することは、行106に発行された読み取り要求又は書き込み要求に応じて実行される。例えば、メモリコントローラ102は、行106から読み取られた又は行106に書き込まれたデータと、別の行106又は予約行108のデータと、を比較する。
また、図2の方法はまた、複数の行のうち1つ以上の行106を別の行にマッピングするデータをマッピングテーブル112に記憶すること204を含む。マッピングテーブル112の各エントリは、DRAMモジュール104内で行106を別の行にマッピングし、別の行は、それがマッピングされる行106に最後に記憶されたデータと同一のデータを記憶する。いくつかの実施形態では、別の行は、DRAMモジュール104の行106(例えば、読み取り及び書き込み要求によってターゲット化することができる行106)を含む。他の実施形態では、行106がマッピングされる他の行は、データを記憶し、行106にマッピングされるために予約される予約行108を含む。マッピングテーブル112は、DRAMモジュール104に記憶されるものとして示されているが、いくつかの実施形態では、マッピングテーブル112は、その代わりにメモリコントローラ102に記憶されることが理解されよう。
いくつかの実施形態では、1つ以上の行106を別の行にマッピングするデータを記憶すること204は、複数の識別された行106のうち1つ以上の行106を、複数の識別された行106のうち別の行106にマッピングするデータを記憶することを含む。例えば、メモリコントローラ102が、行106A,106B,106C,106Dがそれぞれ同一のデータを記憶すると識別したと仮定する。そのような例では、メモリコントローラ102は、行106A,106B,106Cを行106Dにマッピングするエントリをマッピングテーブル112に記憶する。この例では、行106Dは、残りの行106がそれにマッピングされる場合に「代表行」と見なされる。更に、この例では、行106Dは、代表行として任意に選択され、他の行106は可能な代表行であり、代表行は様々な基準に従って選択可能であることが理解されよう。
別の例として、メモリコントローラ102が、行106A,106B,106C,106Dがそれぞれ同一のデータを記憶すると識別したと仮定する。次いで、メモリコントローラ102は、行106A,106B,106C,106Dに記憶されたものに等しいデータを予約行108に記憶し、行106A,106B,106C,106Dを予約行108にマッピングするエントリをマッピングテーブル112に記憶する。更なる例では、メモリコントローラ102が、行106A,106B,106Cが、予約行108に既に記憶されたデータに等しいデータを記憶すると識別すると仮定する。次いで、メモリコントローラ102は、行106A,106B,106Cを予約行108にマッピングするエントリをマッピングテーブル112に記憶する。
図2の方法は、(例えば、メモリコントローラ102が)1つ以上の行106(例えば、マッピングテーブル112内の別の行にマッピングされた行106)をDRAMモジュール104のリフレッシュから除外すること206を更に含む。マッピングテーブル112内にエントリを有し、リフレッシュから除外される行106は、「マージ行」106と見なされる。いくつかの実施形態では、リフレッシュから1つ以上の行106を除外すること206は、次のリフレッシュ動作中にリフレッシュされる又はされない行106の指標をDRAMモジュール104に提供することを含む。次いで、DRAMモジュール104は、受信した指標に従ってリフレッシュを実行する。
更なる説明のために、図3は、本開示の実施形態による、ハードウェア支援DRAM行マージのための方法を示している。図3の方法は、同一のデータを記憶する複数の行を識別すること202と、複数の行のうち1つ以上の行106を別の行にマッピングするデータをマッピングテーブル112に記憶すること204と、DRAMモジュール104のリフレッシュから1つ以上の行106を除外すること206と、を含むという点で図2と同様である。
図3は、1つ以上の行106がリフレッシュから除外されることを示すようにビットマップ(例えば、リフレッシュビットマップ114)を更新すること302を含むという点で図2と異なる。例えば、いくつかの実施形態では、メモリコントローラ102は、リフレッシュビットマップ114を維持する。各行106は、リフレッシュビットマップ114内のビットに対応する。行106が別の行(例えば、代表行又は予約行108に)にマッピングされる場合、マッピングされた行106に対応するビット(例えば、マッピングテーブル112エントリを有する行106)は、マッピングされた行106が次のリフレッシュ中にスキップされることを示すように設定される(例えば、「1」に設定される)。例えば、特定の行106をマッピングするためにマッピングテーブル112のエントリが生成されると、特定の行106に対応するリフレッシュビットマップ114内のビットは、特定の行106が次のリフレッシュから除外されることを示すように設定される。
図3の方法は、1つ以上の行106をリフレッシュから除外すること206を除いて、ビットマップ(例えば、リフレッシュビットマップ114)をDRAMモジュール104に提供すること304を含むという点で、図2とは更に異なる。次いで、DRAMモジュール104は、受信されたビットマップに基づいてリフレッシュ動作を実行する。
更なる説明のために、図4は、本開示の実施形態による、ハードウェア支援DRAM行マージのための方法を示している。図4の方法は、同一のデータを記憶する複数の行を識別すること202と、複数の行のうち1つ以上の行106を別の行にマッピングするデータをマッピングテーブル112に記憶すること204と、DRAMモジュール104のリフレッシュから1つ以上の行106を除外すること206と、を含むという点で図2と同様である。
1つ以上の行106がマッピングされる他の行は、予約行108であると仮定する。図4の方法は、単一行106が予約行108にマッピングされていると判定すること402を含むという点で図2と異なる。複数の行106が予約行108にマッピングされた後、これらの行106を除く全ての行の予約行108へのマッピングが停止されたと仮定する。例えば、単一行106以外のマッピングされた行106をターゲットとする書き込み動作が実行されている。この結果、書き込み動作によってターゲット化された行106は、マッピングされた予約行108とは異なる値を記憶し、予約行108にマッピングされないことを必要とする。
いくつかの実施形態では、単一行106が予約行108にマッピングされていると判定すること402は、予約行108にマッピングされた行106の数を示すカウンタ116が「1」に設定されていると判定することを含む。別の例として、単一行106が予約行108にマッピングされていると判定すること402は、予約行108にマッピングするマッピングテーブル112のエントリにアクセスして、単一のマッピングテーブル112が予約行108にマッピングされていると判定することを含む。
図4の方法は、予約行108に記憶されているデータを単一行106に記憶すること404を更に含む。例えば、メモリコントローラ102は、予約行108に記憶されたデータを予約行106にマッピングされた単一行106にコピー又は複製させるコマンドをDRAMモジュール104に発行する。これにより、単一行106に以前に記憶されたデータがリフレッシュの欠如に起因して劣化した場合に、単一行106が正しいデータを記憶することが保証される。
図4の方法は、単一行106の予約行108へのマッピングを除去するようにマッピングテーブル112を更新すること406を更に含む。いくつかの実施形態では、メモリコントローラ102は、予約行108に対応するカウンタ116をゼロまでデクリメントする。いくつかの実施形態では、これは、予約行108が、割り当てられておらず、マージ目的で他の行106をマッピングするために他のデータの記憶に利用可能であることを示す。いくつかの実施形態では、メモリコントローラ102は、現時点で任意の予約行108にマッピングされていない単一行106を、次のリフレッシュに含むことを示すようにリフレッシュビットマップ114を更新する。
更なる説明のために、図5は、本開示の実施形態による、ハードウェア支援DRAM行マージのための方法を示している。図5の方法は、同一のデータを記憶する複数の行を識別すること202と、複数の行のうち1つ以上の行106を別の行にマッピングするデータをマッピングテーブル112に記憶すること204と、DRAMモジュール104のリフレッシュから1つ以上の行106を除外すること206と、単一行106が予約行108にマッピングされていることを判定すること402と、予約行108に記憶されたデータを単一行106に記憶すること404と、単一行106の予約行108へのマッピングを除去するようにマッピングテーブル112を更新すること406と、を含むという点で図4と同様である。
図5の方法は、予約行108にマッピングされた行106の数を示すカウンタ116を維持すること502を含むという点で、図4とは異なる。例えば、メモリコントローラ102は、予約行108毎に、予約行108にマッピングされたマージ行106の数を示す対応するカウンタ116を維持する。例えば、マージ行106を予約行108にマッピングするマッピングテーブル112のエントリが生成されると、メモリコントローラ102は、予約行108に対応するカウンタ116をインクリメントする。(例えば、マージ行106に関する書き込みに応じて)マージ行106が予約行108にマッピングされることを停止すると、予約行108に対応するカウンタ116がデクリメントされる。いくつかの実施形態では、カウンタ116は、各予約行108のチェックサム110と同じデータ構造で維持される。例えば、データ構造内の各エントリは、予約行108に対応する。データ構造内の各エントリは、対応する予約行108について、予約行108(ある場合)に記憶されたデータのチェックサム110と、予約行108にマッピングされたマージ行106の数を示すカウンタ116と、を示す。
図5の方法は、単一行106が予約行108にマッピングされていると判定すること402が、カウンタ116に基づいて、単一行106が予約行108にマッピングされていると判定すること504を含むという点で、図4とは更に異なる。例えば、メモリコントローラ102は、予約行108のカウンタ116にアクセスし、カウンタ116が「1」に設定されていると判定する。
更なる説明のために、図6は、本開示の実施形態による、ハードウェア支援DRAM行マージのための方法を示している。図6の方法は、同一のデータを記憶する複数の行を識別すること202と、複数の行のうち1つ以上の行106を別の行にマッピングするデータをマッピングテーブル112に記憶すること204と、DRAMモジュール104のリフレッシュから1つ以上の行106を除外すること206と、を含むという点で図2と同様である。
図6は、マッピングテーブル112の一部を記憶するマッピングテーブルキャッシュ118を(例えば、メモリコントローラ102によって)維持すること602を含むという点で、図2とは異なる。マッピングテーブルキャッシュ118は、最後に又は最も頻繁に使用されたマッピングをマッピングテーブル112に記憶する。例えば、メモリコントローラ102は、マッピングテーブル112にアクセスして、読み取り又は書き込み要求によってターゲット化された行106が別の行(例えば、代表行又は予約行108)にマッピングされているかどうかを判定する。メモリコントローラ102がマッピングテーブル112内の一致を見出す場合、メモリコントローラ102は、マッチングマッピングテーブル112のエントリを含むようにマッピングテーブルキャッシュ118を更新する。したがって、読み取り又は書き込み要求は、マッピングテーブル112にアクセスする前にマッピングテーブルキャッシュ118内のエントリと最初に比較され、特定の行106がマージされて別の行にマッピングされているかどうかを判定するために必要なDRAMモジュール104へのアクセス数を減少させる。
更なる説明のために、図7は、本開示の実施形態による、ハードウェア支援DRAM行マージのための方法を示している。図7の方法は、同一のデータを記憶する複数の行を識別すること202と、複数の行のうち1つ以上の行106を別の行にマッピングするデータをマッピングテーブル112に記憶すること204と、DRAMモジュール104のリフレッシュから1つ以上の行106を除外すること206と、を含むという点で、図2と同様である。
図7は、(例えば、メモリコントローラ102が)1つ以上の行106内の行106(例えば、別の行に以前にマッピングされ、リフレッシュから除外されたマージ行106)の読み取り要求を受信すること702を含むという点で、図2とは異なる。例えば、行106A,106B,106Cが同一のデータを記憶していると識別され、予約行108にマッピングされた202と仮定する。更に、読み取り要求が、行106Aに記憶されたデータに対するものであると仮定する。行106Aに記憶されたデータがリフレッシュから除外されると、行106Aに記憶されたデータは、完全性の喪失を受けやすい。
図7の方法は、マッピングテーブル112に基づいて、行106が他の行にマッピングされていると判定すること704を更に含む。上記の例を続けると、メモリコントローラ102は、マッピングテーブル112に基づいて、行106Aがその対応する予約行108にマッピングされていると判定する。例えば、いくつかの実施形態では、メモリコントローラ102は、DRAMモジュール104からマッピングテーブル112にアクセスし、行106Aについてマッピングテーブル112内のエントリを識別する。エントリは、対応する予約行108を示す。他の実施形態では、メモリコントローラ102は、最初にマッピングテーブルキャッシュ118にアクセスして、行106Aのエントリが記憶されているかどうかを判定する。エントリが記憶されている場合、メモリコントローラは、マッピングテーブルキャッシュ118内のエントリに基づいて、対応する予約行108を識別する。行108Aにエントリが見出せない場合、メモリコントローラ102は、上述したように、DRAMモジュール104からマッピングテーブル112にアクセスする。
図7の方法は、読み取り要求に応じて、他の行(例えば、マッピングテーブル112内で識別され、マージ行106がマッピングされる行)に記憶されたデータを提供すること706を更に含む。例えば、メモリコントローラ102は、マッピングテーブル112内で識別された行から読み取り、読み取り要求に対する応答として要求されたデータを提供する。したがって、マージ行106をターゲットとする読み取り要求は、それに応じて、マッピングテーブル112内で識別された行に記憶されたデータを、マージ行106のマッピングのターゲットとして受信する。
更なる説明のために、図8は、本開示の実施形態による、ハードウェア支援DRAM行マージのための方法を示している。図8の方法は、同一のデータを記憶する複数の行を識別すること202と、複数の行のうち1つ以上の行106を別の行にマッピングするデータをマッピングテーブル112に記憶すること204と、DRAMモジュール104のリフレッシュから1つ以上の行106を除外すること206と、を含むという点で、図2と同様である。
1つ以上の行106が予約行108にマッピングされると仮定する。図8は、1つ以上の行106のうち何れかの行106(例えば、予約行108にマッピングされ、リフレッシュから除外されたマージ行106)の書き込み要求を受信すること802を含むという点で、図2とは異なる。例えば、行106A,106B,106Cが同一のデータを記憶していると識別され、予約行108にマッピングされた202と仮定する。更に、読み取り要求が、行106Aに記憶されたデータに対するものであると仮定する。行106Aに記憶されたデータがリフレッシュから除外されると、行106Aに記憶されたデータは、完全性の喪失を受けやすい。
また、図8の方法は、予約行108に記憶されたデータを、1つ以上の行106のうち何れかの行106に記憶すること804を含む。上記の例を続けると、メモリコントローラ102は、マッピングテーブル112に基づいて、行106Aがその対応する予約行108にマッピングされていると判定する。例えば、いくつかの実施形態では、メモリコントローラ102は、DRAMモジュール104からマッピングテーブル112にアクセスし、行106Aについてマッピングテーブル112内のエントリを識別する。エントリは、対応する予約行108を示す。他の実施形態では、メモリコントローラ102は、最初にマッピングテーブルキャッシュ118にアクセスして、行106Aのエントリが記憶されているかどうかを判定する。エントリが記憶されている場合、メモリコントローラは、マッピングテーブルキャッシュ118内のエントリに基づいて、対応する予約行108を識別する。行108Aにエントリが見出せない場合、メモリコントローラ102は、上述したように、DRAMモジュール104からマッピングテーブル112にアクセスする。次いで、メモリコントローラ102は、識別された予約行108に記憶されたデータをロードし、このデータを行Aに記憶する。
また、図8の方法は、書き込み要求を実行すること806を含む。例えば、メモリコントローラ102は、適用するために書き込み要求をDRAMモジュール104に対して発行する。したがって、書き込み要求の任意の動作が、対応する予約行108のデータを記憶している、書き込み要求に示される行106に適用される。
また、図8の方法は、行106の予約行108へのマッピングを除去するようにマッピングテーブル112を更新すること808を含む。行106は書き込まれているため、予約行108と同一のデータをもはや記憶しない。したがって、行106の予約行108へのマッピングは、マッピングテーブル112から除去される。マッピングテーブルキャッシュ118が実装される場合、行106の予約行108へのマッピングは、マッピングテーブルキャッシュ118からも除去される。
上述した説明を考慮して、読者は、ハードウェア支援DRAM行マージが以下の利点を含むことを認識するであろう。
・同一のデータを有するリフレッシュ選択された行のリフレッシュを抑制することで、DRAMリフレッシュを実行するために必要なエネルギーを低減することによって、コンピューティングシステムの製造が改善される。
・DRAMのデータ重複除去のためのソフトウェアベースの解決策と比較して、必要な計算オーバーヘッドが低減されることによって、コンピューティングシステムの性能が改善される。
・同一のデータを有するリフレッシュ選択された行のリフレッシュを抑制することで、DRAMリフレッシュを実行するために必要なエネルギーを低減することによって、コンピューティングシステムの製造が改善される。
・DRAMのデータ重複除去のためのソフトウェアベースの解決策と比較して、必要な計算オーバーヘッドが低減されることによって、コンピューティングシステムの性能が改善される。
本開示の利点及び特徴は、以下の記述によって更に説明され得る。
1.ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージのための方法であって、メモリコントローラが、DRAMモジュール内で、同一データを記憶する複数の行を識別することと、複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を含む、方法。
2.1つ以上の行がリフレッシュから除外されることを示すようにビットマップを更新することを更に含み、リフレッシュから1つ以上の行を除外することは、メモリコントローラが、ビットマップをダイナミックランダムアクセスメモリ(DRAM)モジュールに提供することを含む、記述1に記載の方法。
3.別の行が、複数の行のうち何れかの行を含む、記述1~2の何れかに記載の方法。
4.別の行が、ダイナミックランダムアクセスメモリ(DRAM)モジュールの1つ以上の予約行に含まれる予約行を含む、記述1~3の何れかに記載の方法。
5.単一行が予約行にマッピングされていると判定することと、予約行に記憶されたデータを単一行に記憶することと、単一行の予約行へのマッピングを除去するようにマッピングテーブルを更新することと、を更に含む、記述1~4の何れかに記載の方法。
6.予約行にマッピングされた行の数を示すカウンタを維持することを更に含み、単一行が予約行にマッピングされていると判定することは、カウンタに基づいている、記述1~5の何れかに記載の方法。
7.マッピングテーブルの一部を記憶するマッピングテーブルキャッシュを維持することを更に含む、記述1~6の何れかに記載の方法。
8.1つ以上の行のうち何れかの行についての読み取り要求を受信することと、マッピングテーブルに基づいて、行が他の行にマッピングされていると判定することと、読み取り要求に応じて、別の行に記憶されたデータを提供することと、を更に含む、記述1~7の何れかに記載の方法。
9.1つ以上の行のうち特定の行についての書き込み要求を受信することと、予約行に記憶されたデータを、1つ以上の行のうち特定の行に記憶することと、特定の行の予約行へのマッピングを除去するようにマッピングテーブルを更新することと、を更に含む、記述1~8の何れかに記載の方法。
10.ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージのためのメモリコントローラであって、DRAMモジュール内で、同一データを記憶する複数の行を識別することと、複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を含む工程を実行するように構成されている、メモリコントローラ。
11.工程が、1つ以上の行がリフレッシュから除外されることを示すようにビットマップを更新することを更に含み、リフレッシュから1つ以上の行を除外することは、メモリコントローラがビットマップをDRAMモジュールに提供することを含む、記述10に記載のメモリコントローラ。
12.別の行が、複数の行のうち何れかの行を含む、記述10~11の何れかに記載のメモリコントローラ。
13.別の行が、ダイナミックランダムアクセスメモリ(DRAM)モジュールの1つ以上の予約行に含まれる予約行を含む、記述10~12の何れかに記載のメモリコントローラ。
14.工程が、単一行が予約行にマッピングされていると判定することと、予約行に記憶されたデータを単一行に記憶することと、単一行の予約行へのマッピングを除去するようにマッピングテーブルを更新することと、を含む、記述10~13の何れかに記載のメモリコントローラ。
15.工程が、予約行にマッピングされた行の数を示すカウンタを維持することを更に含み、単一行が予約行にマッピングされていると判定することは、カウンタに基づいている、記述10~14の何れかに記載のメモリコントローラ。
16.工程が、マッピングテーブルの一部を記憶するマッピングテーブルキャッシュを維持することを更に含む、記述10~15の何れかに記載のメモリコントローラ。
17.工程が、1つ以上の行のうち何れかの行についての読み取り要求を受信することと、マッピングテーブルに基づいて、行が別の行にマッピングされていると判定することと、読み取り要求に応じて、別の行に記憶されたデータを提供することと、を更に含む、記述10~16の何れかに記載のコントローラ。
18.工程が、1つ以上の行のうち特定の行についての書き込み要求を受信することと、予約行に記憶されたデータを、1つ以上の行のうち特定の行に記憶することと、特定の行の予約行へのマッピングを除去するようにマッピングテーブルを更新することと、を更に含む、記述10~17の何れかに記載のコントローラ。
19.ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージのための装置であって、メモリコントローラであって、DRAMモジュール内で、同一データを記憶する複数の行を識別することと、複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を含む工程を実行するように構成されている、メモリコントローラを備える、装置。
20.工程が、1つ以上の行がリフレッシュから除外されることを示すようにビットマップを更新することを更に含み、リフレッシュから1つ以上の行を除外することは、メモリコントローラがビットマップをDRAMモジュールに提供することを含む、記述19に記載の装置。
1.ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージのための方法であって、メモリコントローラが、DRAMモジュール内で、同一データを記憶する複数の行を識別することと、複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を含む、方法。
2.1つ以上の行がリフレッシュから除外されることを示すようにビットマップを更新することを更に含み、リフレッシュから1つ以上の行を除外することは、メモリコントローラが、ビットマップをダイナミックランダムアクセスメモリ(DRAM)モジュールに提供することを含む、記述1に記載の方法。
3.別の行が、複数の行のうち何れかの行を含む、記述1~2の何れかに記載の方法。
4.別の行が、ダイナミックランダムアクセスメモリ(DRAM)モジュールの1つ以上の予約行に含まれる予約行を含む、記述1~3の何れかに記載の方法。
5.単一行が予約行にマッピングされていると判定することと、予約行に記憶されたデータを単一行に記憶することと、単一行の予約行へのマッピングを除去するようにマッピングテーブルを更新することと、を更に含む、記述1~4の何れかに記載の方法。
6.予約行にマッピングされた行の数を示すカウンタを維持することを更に含み、単一行が予約行にマッピングされていると判定することは、カウンタに基づいている、記述1~5の何れかに記載の方法。
7.マッピングテーブルの一部を記憶するマッピングテーブルキャッシュを維持することを更に含む、記述1~6の何れかに記載の方法。
8.1つ以上の行のうち何れかの行についての読み取り要求を受信することと、マッピングテーブルに基づいて、行が他の行にマッピングされていると判定することと、読み取り要求に応じて、別の行に記憶されたデータを提供することと、を更に含む、記述1~7の何れかに記載の方法。
9.1つ以上の行のうち特定の行についての書き込み要求を受信することと、予約行に記憶されたデータを、1つ以上の行のうち特定の行に記憶することと、特定の行の予約行へのマッピングを除去するようにマッピングテーブルを更新することと、を更に含む、記述1~8の何れかに記載の方法。
10.ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージのためのメモリコントローラであって、DRAMモジュール内で、同一データを記憶する複数の行を識別することと、複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を含む工程を実行するように構成されている、メモリコントローラ。
11.工程が、1つ以上の行がリフレッシュから除外されることを示すようにビットマップを更新することを更に含み、リフレッシュから1つ以上の行を除外することは、メモリコントローラがビットマップをDRAMモジュールに提供することを含む、記述10に記載のメモリコントローラ。
12.別の行が、複数の行のうち何れかの行を含む、記述10~11の何れかに記載のメモリコントローラ。
13.別の行が、ダイナミックランダムアクセスメモリ(DRAM)モジュールの1つ以上の予約行に含まれる予約行を含む、記述10~12の何れかに記載のメモリコントローラ。
14.工程が、単一行が予約行にマッピングされていると判定することと、予約行に記憶されたデータを単一行に記憶することと、単一行の予約行へのマッピングを除去するようにマッピングテーブルを更新することと、を含む、記述10~13の何れかに記載のメモリコントローラ。
15.工程が、予約行にマッピングされた行の数を示すカウンタを維持することを更に含み、単一行が予約行にマッピングされていると判定することは、カウンタに基づいている、記述10~14の何れかに記載のメモリコントローラ。
16.工程が、マッピングテーブルの一部を記憶するマッピングテーブルキャッシュを維持することを更に含む、記述10~15の何れかに記載のメモリコントローラ。
17.工程が、1つ以上の行のうち何れかの行についての読み取り要求を受信することと、マッピングテーブルに基づいて、行が別の行にマッピングされていると判定することと、読み取り要求に応じて、別の行に記憶されたデータを提供することと、を更に含む、記述10~16の何れかに記載のコントローラ。
18.工程が、1つ以上の行のうち特定の行についての書き込み要求を受信することと、予約行に記憶されたデータを、1つ以上の行のうち特定の行に記憶することと、特定の行の予約行へのマッピングを除去するようにマッピングテーブルを更新することと、を更に含む、記述10~17の何れかに記載のコントローラ。
19.ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージのための装置であって、メモリコントローラであって、DRAMモジュール内で、同一データを記憶する複数の行を識別することと、複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、DRAMモジュールのリフレッシュから1つ以上の行を除外することと、を含む工程を実行するように構成されている、メモリコントローラを備える、装置。
20.工程が、1つ以上の行がリフレッシュから除外されることを示すようにビットマップを更新することを更に含み、リフレッシュから1つ以上の行を除外することは、メモリコントローラがビットマップをDRAMモジュールに提供することを含む、記述19に記載の装置。
図中のフローチャート及びブロック図は、本開示の様々な実施形態によるシステム、方法及びコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能及び動作を示している。これに関して、フローチャート又はブロック図の各ブロックは、特定の論理機能を実装するための1つ以上の実行可能命令を含む、命令のモジュール、セグメント又は部分を表すことができる。いくつかの代替的な実装形態では、ブロックに記載されている機能は、図に記載された順序から外れて発生する可能性がある。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてもよいし、ブロックは、関与する機能に応じて、逆の順序で実行されてもよい。ブロック図及び/又はフローチャートの各ブロック、並びに、ブロック図及び/又はフローチャートにおけるブロックの組み合わせは、特定の機能若しくは行為を実行する、又は、専用ハードウェアとコンピュータ命令との組み合わせを行う、専用ハードウェアベースのシステムによって実施することができることにも留意されたい。
本開示の様々な実施形態において修正及び変更を行い得ることが上記の記載から理解されるであろう。本明細書における記載は、例示のみを目的としており、限定的な意味で解釈されるべきではない。本開示の範囲は、以下の特許請求の範囲の文言によってのみ限定される。
Claims (20)
- ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージのための方法であって、
メモリコントローラが、DRAMモジュール内で、同一データを記憶する複数の行を識別することと、
前記複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、
前記DRAMモジュールのリフレッシュから前記1つ以上の行を除外することと、を含む、
方法。 - 前記1つ以上の行が前記リフレッシュから除外されることを示すようにビットマップを更新することを更に含み、
前記リフレッシュから前記1つ以上の行を除外することは、前記メモリコントローラが、前記ビットマップを前記ダイナミックランダムアクセスメモリ(DRAM)モジュールに提供することを含む、
請求項1の方法。 - 前記別の行は、前記複数の行のうち何れかの行を含む、
請求項1の方法。 - 前記別の行は、前記ダイナミックランダムアクセスメモリ(DRAM)モジュールの1つ以上の予約行に含まれる予約行を含む、
請求項1の方法。 - 単一行が前記予約行にマッピングされていると判定することと、
前記予約行に記憶されたデータを前記単一行に記憶することと、
前記単一行の前記予約行へのマッピングを除去するように前記マッピングテーブルを更新することと、を更に含む、
請求項4の方法。 - 前記予約行にマッピングされた行の数を示すカウンタを維持することを更に含み、前記単一行が前記予約行にマッピングされていると判定することは、前記カウンタに基づいている、
請求項5の方法。 - 前記マッピングテーブルの一部を記憶するマッピングテーブルキャッシュを維持することを更に含む、
請求項1の方法。 - 前記1つ以上の行のうち何れかの行についての読み取り要求を受信することと、
前記マッピングテーブルに基づいて、前記何れかの行が別の行にマッピングされていると判定することと、
前記読み取り要求に応じて、前記別の行に記憶されたデータを提供することと、を更に含む、
請求項1の方法。 - 前記1つ以上の行のうち特定の行についての書き込み要求を受信することと、
前記予約行に記憶されたデータを、前記1つ以上の行のうち前記特定の行に記憶することと、
前記書き込み要求を実行することと、
前記特定の行の前記予約行へのマッピングを除去するように前記マッピングテーブルを更新することと、を更に含む、
請求項4の方法。 - ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージのためのメモリコントローラであって、
DRAMモジュール内で、同一データを記憶する複数の行を識別することと、
前記複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、
前記DRAMモジュールのリフレッシュから前記1つ以上の行を除外することと、を含む工程を実行するように構成されている、
メモリコントローラ。 - 前記工程は、前記1つ以上の行が前記リフレッシュから除外されることを示すようにビットマップを更新することを更に含み、
前記リフレッシュから前記1つ以上の行を除外することは、前記メモリコントローラが、前記ビットマップを前記DRAMモジュールに提供することを含む、
請求項10のメモリコントローラ。 - 前記別の行は、前記複数の行のうち何れかの行を含む、
請求項10のメモリコントローラ。 - 前記別の行は、前記ダイナミックランダムアクセスメモリ(DRAM)モジュールの1つ以上の予約行に含まれる予約行を含む、
請求項10のメモリコントローラ。 - 前記工程は、
単一行が前記予約行にマッピングされていると判定することと、
前記予約行に記憶されたデータを前記単一行に記憶することと、
前記単一行の前記予約行へのマッピングを除去するように前記マッピングテーブルを更新することと、を含む、
請求項13のメモリコントローラ。 - 前記工程は、
前記予約行にマッピングされた行の数を示すカウンタを維持することを更に含み、前記単一行が前記予約行にマッピングされていると判定することは、前記カウンタに基づいている、
請求項14のメモリコントローラ。 - 前記工程は、前記マッピングテーブルの一部を記憶するマッピングテーブルキャッシュを維持することを更に含む、
請求項10のメモリコントローラ。 - 前記工程は、
前記1つ以上の行のうち何れかの行についての読み取り要求を受信することと、
前記マッピングテーブルに基づいて、前記何れかの行が前記別の行にマッピングされていると判定することと、
前記読み取り要求に応じて、前記別の行に記憶されたデータを提供することと、を更に含む、
請求項10のメモリコントローラ。 - 前記工程は、
前記1つ以上の行のうち特定の行についての書き込み要求を受信することと、
前記予約行に記憶されたデータを、前記1つ以上の行のうち前記特定の行に記憶することと、
前記書き込み要求を実行することと、
前記行の前記予約行へのマッピングを除去するように前記マッピングテーブルを更新することと、を更に含む、
請求項13のメモリコントローラ。 - ハードウェア支援ダイナミックランダムアクセスメモリ(DRAM)行マージのための装置であって、
メモリコントローラを備え、
前記メモリコントローラは、
DRAMモジュール内で、同一データを記憶する複数の行を識別することと、
前記複数の行のうち1つ以上の行を別の行にマッピングするデータをマッピングテーブルに記憶することと、
前記DRAMモジュールのリフレッシュから前記1つ以上の行を除外することと、
を含む工程を実行するように構成されている、
装置。 - 前記工程は、
前記1つ以上の行が前記リフレッシュから除外されるようにビットマップを更新することを更に含み、
前記リフレッシュから前記1つ以上の行を除外することは、前記メモリコントローラが、前記ビットマップを前記DRAMモジュールに提供することを含む、
請求項19の装置。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063011397P | 2020-04-17 | 2020-04-17 | |
US63/011,397 | 2020-04-17 | ||
US17/025,157 | 2020-09-18 | ||
US17/025,157 US11721384B2 (en) | 2020-04-17 | 2020-09-18 | Hardware-assisted dynamic random access memory (DRAM) row merging |
PCT/US2021/027505 WO2021211859A1 (en) | 2020-04-17 | 2021-04-15 | Hardware-assisted dynamic random access memory (dram) row merging |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2023522219A true JP2023522219A (ja) | 2023-05-29 |
JPWO2021211859A5 JPWO2021211859A5 (ja) | 2024-04-22 |
Family
ID=78081938
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022563046A Pending JP2023522219A (ja) | 2020-04-17 | 2021-04-15 | ハードウェア支援ダイナミックランダムアクセスメモリ(dram)行マージ |
Country Status (6)
Country | Link |
---|---|
US (1) | US11721384B2 (ja) |
EP (1) | EP4136534A1 (ja) |
JP (1) | JP2023522219A (ja) |
KR (1) | KR20220167381A (ja) |
CN (1) | CN115485669A (ja) |
WO (1) | WO2021211859A1 (ja) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5329629A (en) | 1989-07-03 | 1994-07-12 | Tandem Computers Incorporated | Apparatus and method for reading, writing, and refreshing memory with direct virtual or physical access |
US20060236036A1 (en) * | 2005-04-13 | 2006-10-19 | Gschwind Michael K | Method and apparatus for predictive scheduling of memory accesses based on reference locality |
WO2011031903A2 (en) * | 2009-09-09 | 2011-03-17 | Fusion-Io, Inc. | Apparatus, system, and method for allocating storage |
WO2013062874A1 (en) * | 2011-10-24 | 2013-05-02 | Rambus Inc. | Dram retention test method for dynamic error correction |
WO2016176807A1 (zh) | 2015-05-04 | 2016-11-10 | 华为技术有限公司 | 一种dram刷新方法、装置和系统 |
KR102321793B1 (ko) * | 2015-08-12 | 2021-11-08 | 삼성전자주식회사 | 플렉시블 리프레쉬 스킵 영역을 운영하는 반도체 메모리 장치 |
US10198369B2 (en) * | 2017-03-24 | 2019-02-05 | Advanced Micro Devices, Inc. | Dynamic memory remapping to reduce row-buffer conflicts |
KR102434343B1 (ko) | 2018-04-23 | 2022-08-22 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 이를 포함하는 메모리 시스템 |
US10878880B2 (en) | 2018-09-20 | 2020-12-29 | Qualcomm Incorporated | Selective volatile memory refresh via memory-side data valid indication |
-
2020
- 2020-09-18 US US17/025,157 patent/US11721384B2/en active Active
-
2021
- 2021-04-15 KR KR1020227039312A patent/KR20220167381A/ko active Search and Examination
- 2021-04-15 CN CN202180032975.0A patent/CN115485669A/zh active Pending
- 2021-04-15 EP EP21723585.2A patent/EP4136534A1/en active Pending
- 2021-04-15 WO PCT/US2021/027505 patent/WO2021211859A1/en unknown
- 2021-04-15 JP JP2022563046A patent/JP2023522219A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021211859A1 (en) | 2021-10-21 |
KR20220167381A (ko) | 2022-12-20 |
EP4136534A1 (en) | 2023-02-22 |
US11721384B2 (en) | 2023-08-08 |
US20210327494A1 (en) | 2021-10-21 |
CN115485669A (zh) | 2022-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983955B2 (en) | Data unit cloning in memory-based file systems | |
US10198369B2 (en) | Dynamic memory remapping to reduce row-buffer conflicts | |
US10762593B2 (en) | Unified memory systems and methods | |
US9747221B2 (en) | Dynamic pinning of virtual pages shared between different type processors of a heterogeneous computing platform | |
US8453015B2 (en) | Memory allocation for crash dump | |
US20170147224A1 (en) | Memory and processor affinity in a deduplicated environment | |
US8793528B2 (en) | Dynamic hypervisor relocation | |
US10877757B2 (en) | Binding constants at runtime for improved resource utilization | |
US9710397B2 (en) | Data migration for composite non-volatile storage device | |
US10067709B2 (en) | Page migration acceleration using a two-level bloom filter on high bandwidth memory systems | |
KR20090079012A (ko) | 가상 머신의 상태를 저장, 복원하는 방법 및 장치 | |
EP3451197B1 (en) | System and method for creating selective snapshots of a database | |
US9836223B2 (en) | Changing storage volume ownership using cache memory | |
US20230195633A1 (en) | Memory management device | |
US10082978B2 (en) | Distributed shared log storage system having an adapter for heterogenous big data workloads | |
US10901914B2 (en) | Method for writing multiple copies into storage device, and storage device | |
JP2023522219A (ja) | ハードウェア支援ダイナミックランダムアクセスメモリ(dram)行マージ | |
CN109814979B (zh) | 数据加载方法、装置、计算机设备以及可读存储介质 | |
US10102116B2 (en) | Multi-level page data structure | |
CN111522827A (zh) | 一种数据更新方法、装置和电子设备 | |
US9690886B1 (en) | System and method for a simulation of a block storage system on an object storage system | |
US10684900B2 (en) | Enhanced message control banks | |
US9152346B2 (en) | Storage and retrieval of high importance pages in an active memory sharing environment | |
US20170075582A1 (en) | Translating access requests for a multi-level page data structure | |
US20210286781A1 (en) | Segmented index for data deduplication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20240411 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20240411 |