JP6518191B2 - アドレス断片化に対するメモリ・セグメントのリマッピング - Google Patents

アドレス断片化に対するメモリ・セグメントのリマッピング Download PDF

Info

Publication number
JP6518191B2
JP6518191B2 JP2015542836A JP2015542836A JP6518191B2 JP 6518191 B2 JP6518191 B2 JP 6518191B2 JP 2015542836 A JP2015542836 A JP 2015542836A JP 2015542836 A JP2015542836 A JP 2015542836A JP 6518191 B2 JP6518191 B2 JP 6518191B2
Authority
JP
Japan
Prior art keywords
memory
remapping
module
line
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015542836A
Other languages
English (en)
Other versions
JP2015535116A5 (ja
JP2015535116A (ja
Inventor
ストラウス,カリン
スミス,バートン・ジェイ
マッキンリー,キャスリン・エス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2015535116A publication Critical patent/JP2015535116A/ja
Publication of JP2015535116A5 publication Critical patent/JP2015535116A5/ja
Application granted granted Critical
Publication of JP6518191B2 publication Critical patent/JP6518191B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/808Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout using a flexible replacement scheme
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/82Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0004Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising amorphous/crystalline phase transition cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C2029/0409Online test

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Chemical & Material Sciences (AREA)
  • Crystallography & Structural Chemistry (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Retry When Errors Occur (AREA)

Description

[0001] スケーリングという課題のために、最近のメモリ技術は、ダイナミック・ランダム・アクセス・メモリ(DRAM)のような電荷に基づくメモリの使用から、相変化メモリ(PCM)のような抵抗変化型メモリおよび磁気抵抗メモリに移行する場合がある。しかしながら、多くのこのようなメモリは、消磨する(wear out)する傾向がある。
[0002] メモリは、システムがメモリに書き込むときに摩耗する可能性がある。何故なら、書き込みはメモリ内部において材料の物理構成を変化させるか、または他の何らかの態様でそれを劣化させ得るからである。この問題が発生し易いメモリを、摩耗性メモリ(wearable memory)と呼ぶ。徐々に進む劣化のために、摩耗性メモリはメモリ不良を生じやすく、システムによる大量の書き込みの後、メモリがこのシステムのために信頼性高くデータを格納することを妨げるおそれがある。例えば、PCMセルは消磨する(即ち、不良になる)前に通例10回の書き込みに耐えることができ、一方DRAMセルは不良になる前に通例1015回の書き込みに耐えることができる。
[0003] システム用のメモリは、複数の領域に分割されることがあり、各領域は多数のセグメントを有する。システムは、これらのメモリ領域を、メモリ割り当て(例えば、ランタイム中)、および/または主メモリと、ハード・ディスク・ドライブのような補助ストアとの間におけるデータの転送のための単位として使用することができる。メモリ領域における個々のセグメントが、多数回の書き込みのために不良になり始めると、メモリ断片化が発生する。多くの断片化が発生するのは、メモリ領域が、更に小さい使用可能なメモリの部分(例えば、1つ以上の連続「作業」セグメント)に分割されるときであり、これらの部分は、使用できない不良セグメントまたは消磨したセグメントによって分離される。不良セグメント間にある使用可能メモリの小さな部分は、メモリ割り当てに対しては信頼性があることに変わりはないが、これらは事実上システムには使用できない。何故なら、これらの小さい部分は、1つ1つが、格納に連続メモリ(例えば、多数の連続するセグメント)を必要とするもっと大きなオブジェクト(例えば、データ)を格納するためには小さすぎるからである。言い換えると、システムは、断片化のために、2つの不良メモリ・セグメント間に、もっと大きなオブジェクトをはめ込むことができない。
[0004] 本明細書において論ぜられる技法は、断片化に取り組むことによって、摩耗性メモリの寿命を延長させる。本技術は、メモリ領域において不良メモリ・セグメントを識別する、協働ハードウェアおよびソフトウェア・システムにおいて実現される。次いで、本技術は、リマッピング・プロセスを使用して、メモリ領域の周辺部分において不良メモリ・セグメントを論理的にクラスタリングすることによって、不良メモリ・セグメントを管理することができる。リマッピング・プロセスは、メモリ域についてセグメント・リマッピング・エントリを定めるリマッピング・メタデータを作成し、格納するステップを含むことができる。したがって、不良クラスタリング(failure clustering)は論理的にメモリ断片化を解消または低減するので、システムはより大きな連続メモリ部分をオブジェクトの格納のために割り当てることができる。
[0005] 少なくとも1つの実施形態では、次に、システム・ソフトウェア(例えば、オペレーティング・システム)および/またはメモリ・コントローラが、メモリ割り当て、メモリ読み出し、メモリ書き込み、またはこれらの組み合わせの間に、リマッピング・メタデータにアクセスし、これを使用し更新することができる。例えば、システム・ソフトウェアおよび/またはメモリ・コントローラは、メモリ不良を伝え、メモリ不良がリマッピングおよびクラスタリングされた後におけるメモリ領域内にある連続記憶空間の量を示すことによって、ランタイム実行中にメモリを割り当てることができる。
[0006] この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられる。この摘要は、特許請求する主題の主要な特徴や必須の特徴を識別することを意図するのではなく、特許請求する主題の範囲を判断するときに補助として使用されることを意図するのでもない。例えば、「技法」という用語は、以上のコンテキストによってそして本文書全体にわたって許される限りにおいて、システム(1つまたは複数)、ハードウェア、方法(1つまたは複数)、コンピュータ読み取り可能命令、モジュール(1つまたは複数)、および/またはアルゴリズムを指す。
[0007]
添付図面を参照しながら、詳細な説明を提示する。図面では、参照番号の内最も左側の桁(1つまたは複数)は、その参照番号が最初に現れる図を識別する。異なる図における同じ参照番号の使用は、同様または同一の項目を示す。
図1は、本明細書において説明する種々の実施形態にしたがってクラスタリングおよびリマッピング技法を実現するシステム・アーキテクチャ例を示す。 図2は、本明細書において説明する種々の実施形態にしたがって、システム・アーキテクチャ例がクラスタリングおよびリマッピングを実現するときの、異なる段階におけるメモリ領域例を示す。 図3は、本明細書において説明する種々実施形態による、2つの連続メモリ領域例を示す。 図4は、本明細書において説明する種々の実施形態にしたがって、リマッピング・メタデータを作成および/または更新するメモリ割り当てプロセス例を示す。 図5は、本明細書において説明する種々の実施形態にしたがって、リマッピング・メタデータを使用してメモリ領域からデータを読み出すメモリ割り当てプロセス例を示す。
全体像
[0013] 以下の説明は、不良セグメントによって生じた、メモリ領域内部における断片化を論理的に低減および/または解消する技法について明記する。システムが、メモリ領域内部でセグメントの不良を検出したとき、本技術は論理的にこの不良をメモリ領域の周辺部分にリマッピングする(例えば、メモリ領域の最上位または最下位)。また、本技術は、リマッピング・メタデータを作成することもできる。リマッピング・メタデータは、不良セグメントをメモリ領域の周辺部分にリマッピングしたことによって得られた、より大きな連続メモリ部分をシステムが割り当てることができるように、セグメント位置スイッチおよびセグメント・オフセットを示す。少なくとも1つの実施形態では、リマッピング・メタデータは、メモリ領域に対して一意であり、本技術はリマッピング・メタデータをメモリ領域内に格納する。次いで、システムは、メモリ割り当てプロセスの間に、このリマッピング・メタデータを使用することができる。
[0014] 先に論じたように、摩耗性メモリにはメモリ不良が生じ易く、大量の書き込みの後、メモリが信頼性高くデータを格納するのを妨げるおそれがある。メモリ不良は、予め存在する不良または固定不良(static failure)であるかもしれず、あるいはメモリ不良は動的不良であるかもしれない。種々の実施形態において、このメモリは、大きな摩耗性メモリの部分(通例、より密度が濃く、より価格効率的なメモリであることが期待される)と、データおよび失敗することを許されない動作(例えば、オペレーティング・システムに肝要であり得る動作)を格納する、もっと小さなDRAM部分とを含むことができる主メモリである。摩耗性メモリは、安定的な記憶セグメントを設けることができ、これよりも大きな主メモリの領域と比較して、更に細かい粒度で不良になる。この文書のコンテキストでは、前述した大きい方のメモリ領域をメモリ・ページと記述し、メモリ・ページのセグメントをラインと呼ぶ。しかしながら、本文書のコンテキストでは、メモリ領域は、摩耗性メモリまたは他のメモリ技術におけるメモリ割り当てに使用される、任意のメモリ単位またはブロックでもよい。更に、メモリ領域およびラインは、オブジェクトの記憶のために、サイズまたは容量が可変であることもできる(例えば、領域および/またはラインは、もっと粒度が高くてもまたは低くてもよい)。
[0015] DRAMを主メモリとして使用するシステムにおいてメモリ不良(failure)が発生したとき、メモリ領域(例えば、ページ)全体が無効にされる。しかしながら、DRAMを使用する場合、永続的なメモリ不良は非常に希である。対照的に、摩耗性メモリにおける永続的メモリ不良の方が一般的である。摩耗性メモリに対してメモリ領域全体と同じまたは同様の無効化が採用されるとすると、各メモリ領域が1つを除いて全ての機能セグメントを有するままであっても、メモリ容量は直ちに使い果たされるであろう。この理由のために、領域粒度でメモリを無効にする代わりに、摩耗性メモリを採用するシステムは、もっと細かいセグメント粒度(例えば、ライン粒度)でメモリを無効にすることができる。しかしながら、仮想アドレスから物理アドレスへのメモリ変換は、摩耗性メモリを有するシステムにおいても、相変わらず領域粒度で行われる可能性があるので(そして、性能オーバーヘッドの理由により、通常は領域粒度で行われる)、仮想アドレス空間を完全に連続的にすることができず、その結果断片化が発生する可能性がある。
[0016] このように、本明細書において論ずる技法は、前述したメモリ断片化問題に取り組むに当たって、不良メモリ・ラインを個々のメモリ・ページの周辺部分(例えば、メモリ・ページの最上位または最下位)においてクラスタリングする。不良メモリ・ラインをクラスタリングするために、本技法は、各メモリ・ページ内にリマッピング・プロセスを実施する。その結果、本技法は、セグメント不良が発生し始めたときに、任意の2つの不良セグメント間にある作業メモリよりも大きなオブジェクトであっても、ページに格納することができるように、より大きな連続メモリ部分を論理的に作成する。これによって、メモリ領域の寿命を延ばす。
[0017] ある実施形態では、本技法は、不良メモリ・ラインを、もっと大きなメモリ・リマッピング領域の周辺部分においてクラスタリングすることができる。例えば、本技法は、個々のメモリ・ページ毎の代わりに、各2番目、4番目、8番目等のメモリ・ページの最上位または最下位に、不良メモリ・ラインを置くように構成することができる。したがって、本技法は、ハードウェア・メモリ・モジュール領域のサイズの倍数(例えば、2つのメモリ・ページ、4つのメモリ・ページ、8つのメモリ・ページ等)である、「リマッピング」メモリ領域上で、リマッピングおよびクラスタリング・プロセスを実現するように構成することができる。これによって、更に断片化を解消し、より大きな連続記憶ブロック部分を作成することができる。
[0018] 種々の実施形態において、本明細書において説明する不良クラスタリングおよびリマッピング・プロセスは、システムが他のメモリ・誤り補正リソースを使用し、それらが尽きた後に実施することができる。例えば、他のメモリ・誤り補正リソースは、誤り訂正コードECC(通例今日ではDRAMに使用される)および誤り補正ポインタ・エントリのような、標準的な誤り補正技法を含むことができる。
例示アーキテクチャ
[0019] 図1は、本明細書において論ずる技法を実現するシステム・アーキテクチャ例100を示す。システム・アーキテクチャ100は、断片化が生じ易いメモリ技術を使用する任意の適した計算デバイスとして構成することができる。一例としてそして限定ではなく、システム・アーキテクチャ100は、パーソナル計算デバイス、ラップトップ計算デバイス、スマート・フォン、サーバ計算デバイス、サーバ・ファーム、データセンタ、あるいはメモリを使用するおよび/または割り当てる任意の他のデバイスを含むことができる。したがって、システム・アーキテクチャ100は、システム・ソフトウェア102、コントローラ104、およびメモリ・モジュール106を含むことができる。システム・ソフトウェア102、メモリ・コントローラ104、および/またはメモリ・モジュール106は、種々の異なる構成で接続することができ、そして通信することができる(例えば、システム・バス、ネットワーク等)。
[0020] 種々の実施形態において、システム・ソフトウェア102は、Microsoft Windows(登録商標)オペレーティング・システム、スマート・フォン・オペレーティング・システム、リアル・タイム・オペレーティング・システム、またはメモリ・モジュール106に結合される任意の他のタイプのオペレーティング・システムを含むことができる。更に、システム・ソフトウェア102は、任意のタイムのランタイム実行可能環境(例えば、バーチャル・マシン、マネージド・コード(managed code)等)も含むことができる。少なくとも1つの実施形態では、オペレーティング・システムは、ランタイム実行可能環境がメモリ不良周囲のメモリを割り当てることができるように、メモリ不良をランタイム実行可能環境に伝えることができる。
[0021] 種々の実施形態において、システム・ソフトウェア102および/またはメモリ・コントローラ104は、メモリ・モジュール106(例えば、物理モジュール)へのデータの流れおよびメモリ・モジュール106からのデータの流れを管理するように構成される。メモリ・モジュール106は、複数のページ108(1)...108(N)を含むハードウェア・メモリ・モジュールとすることもでき、各ページ108(1)...108(N)は、先に論じたメモリの大きい方の領域を表す。この目的のために、システム・ソフトウェア102および/またはメモリ・コントローラ104は、システム・ソフトウェア102によって管理されている1つ以上の処理コア110(1)...110(M)上で実行するプログラムまたはアプリケーションに関連付けられたオブジェクトのために、ページ108(1)...108(N)内のメモリ空間を割り当てるように構成することができる。したがって、システム・ソフトウェア102は、サービスを1つ以上の処理コア110(1)...110(M)に提供するように構成することができ、各処理コア110(1)...110(M)は、システム・ソフトウェア102および/またはメモリ・コントローラ104によって現在アクセスされているページ108(1)...108(N)の内1つ以上をキャッシュするキャッシュ1 112(1)...112(L)を有することができる。更に、キャッシュ112(1)...112(L)は、システム・ソフトウェア102によって伝えられるメモリ不良または誤り情報もキャッシュすることができる。少なくとも1つの実施形態では、キャッシュ112(1)...112(L)は、スタティック・ランダム・アクセス・メモリ(SRAM)とすることができる。
[0022] 種々の実施形態において、メモリ・モジュール106は、システム・アーキテクチャ100およびシステム・ソフトウェア102の主メモリである。システム・ソフトウェア102は、メモリ・モジュール106に格納することができ、またはメモリ・モジュール106以外のシステム・アーキテクチャ100内にある別のメモリに格納されてもよい。メモリ・コントローラ104は、メモリ・モジュール106と共にプリント回路ボード上に配置されるコンピュータ・ハードウェアの一部とすることができ、またはメモリ・コントローラ104は、メモリ・モジュール106と同じ基板上に配置することができ、またはメモリ・コントローラ104は、処理コア110(1)...110(M)と共にチップ基板上に配置されてもよい。少なくとも1つの実施形態では、メモリ・コントローラ104は、ファームウェア内またはフィールド・プログラマブル・ゲート・アレイ(FPGA)内に埋め込まれる。他の実施形態では、メモリ・コントローラ104は、メモリ・モジュール106に関連付けられた特定用途集積回路(ASIC)、またはメモリ・モジュール106に関連付けられたデバイス・ドライバであってもよい。このように、メモリ・コントローラ104は、システム・アーキテクチャ100の処理側に配置することができ、またはメモリ・コントローラ104は、メモリ・モジュール106上にローカルに配置されてもよい。
[0023] 先に論じたように、ページ108(1)...108(N)は、各々、多数のラインを含み、システム・ソフトウェア102および/またはメモリ・コントローラ104はこのラインをメモリ割り当てのために使用することができる。メモリ・ページのサイズ、およびメモリ・モジュール内におけるメモリ・ページの数は、システム・アーキテクチャにしたがって異なってもよい。例えば、メモリ・ページのサイズは、ほぼ1キロバイトから2メガバイトの範囲に収まればよい。更に、少なくとも一例では、メモリ・ページにおける各ラインは512ビットとするとよい。しかしながら、他の例では、ページおよびラインは、これらよりも小さくても、または大きくてもよい。
[0024] 種々の実施形態では、処理コア110(1)...110(M)の各々は、1つ以上のプロセッサを含むことができる。プロセッサは、1つの処理ユニットでも、または多数の2つ以上のユニットでもよく、そのいずれもまたは全てが多数の計算ユニットを含むことも可能である。プロセッサは、1つ以上のマイクロプロセッサ、マイクロコンピュータ、マイクロコントローラ、ディジタル信号プロセッサ、中央処理ユニット、状態機械、論理回路、メモリ共有プロセッサ、および/または動作命令に基づいて信号を操作する任意のデバイスとして実現することができる。能力の中でもとりわけ、プロセッサは、システム・ソフトウェア102、メモリ・コントローラ104、あるいはシステム・アーキテクチャ100にアクセス可能な任意の他のアプリケーションまたはプログラムに格納されたコンピュータ実行可能命令を取りだして実行するように構成することができる。
[0025] 更に本明細書において論ずるように、メモリ・モジュール106におけるメモリ108(1)...108(N)のページは、PCMのような摩耗性メモリのページとすることができる。しかしながら、本明細書において説明する技法は、他のタイプのハードウェア・メモリ技術を採用するシステムにも広く応用可能である。他のタイプのハードウェア・メモリ技術には、フラッシュ・メモリ、RAMサブシステム、スピン−トルク・トランスファ磁気抵抗RAM(STT−MRAM)、強誘電体RAM(FRAM(登録商標))、抵抗RAM(RRAM(登録商標))、または任意の他の磁気抵抗メモリが含まれる。更に、本明細書において論ずる技法は、DRAMのような電荷に基づくメモリにも応用可能であると考えられる。
[0026] 種々の実施形態において、システム・ソフトウェア102は、メモリ割り当てモジュール114を含むことができ、メモリ・コントローラ104は、不良検出モジュール116、クラスタリング・モジュール118、および不良情報キャッシュ120を含むことができる。メモリ割り当てモジュール114は、メモリ・モジュール106内においてページ108(1)...108(N)へ行くデータ(例えば、オブジェクト)およびページ108(1)...108(N)から来るデータ(例えば、オブジェクト)の流れを管理するように構成することができる。不良検出モジュール116は、ページ108(1)...108(N)の各々内において不良ラインを検出するように構成することができる。例えば、メモリ・コントローラ104が、現在アクセスされているページ108(N)におけるラインにデータを書き込みながら、このデータの他のバージョンを一時的にバッファに格納しているとき、不良検出モジュール116は、あるラインが不良になりもはや信頼性がないことを検出し確認する。次いで、メモリ・コントローラ104は、現在アクセスされているページ108(N)からデータを読み出し(例えば、直ちにデータを読み出す)、不良検出モジュール116は、読み出されたデータを、バッファに一時的に格納されているこのデータの他のバージョンと比較する。現在アクセスされているページ108(N)から読み出されたデータが、バッファに一時的に格納されているデータと同じでない場合、不良検出モジュール116は、現在アクセスされているページ108(N)内にあるこのラインを、不良ラインとして識別する。
[0027] 種々の実施形態において、不良検出モジュール116は、不良情報キャッシュ120に領域不良情報を格納するように構成することができる。領域不良情報は、個々のページ108(1)...108(N)の各々が永続的ライン不良を有するか否かを含む。ページ108(N)が永続的なライン不良を有する場合、メモリ・コントローラ104は、ページ108(N)のアドレスだけでなく、ページ108(N)についてのリマッピング・メタデータ122も不良情報キャッシュ120にキャッシュすることができる。したがって、メモリ割り当てモジュール114は、不良情報キャッシュ120に格納されたリマッピング・メタデータ122を使用して、少なくとも1つの永続的ライン不良を有するページ108(1)...108(N)への読み出しおよび/または書き込み要求を管理することができる。
[0028] 更に本明細書において論ずるように、種々の実施形態において、クラスタリング・モジュール118は、リマッピング・メタデータ122を作成するように構成される。リマッピング・メタデータ122は、不良ラインを個々のページ108(1)...108(N)(例えば、ページの最上位またはページの最下位)またはもっと大きなメモリ・リマッピング領域(例えば、4つのページまたは8つのページ)の終端にあるページ108(1)...108(N)のエッジにリマッピングする。ある実施形態では、不良検出モジュール116が最初に永続的ライン不良(即ち、不良ライン)を個々のページ108(N)において識別したとき、クラスタリング・モジュール118は、個々のページ108(N)またはもっと大きなメモリ・リマッピング領域についてリマッピング・メタデータ122を作成することもできる。
[0029] 種々の実施形態において、ページ108(N)が現在使用されているとき、使用されることが予期されるとき、または処理コア110(1)...110(M)の内1つ以上と共にシステム・ソフトウェア102によって最近使用されたとき、メモリ割り当てモジュール114は、現在のページ108(N)についてのリマッピング・メタデータ122を一時的に不良情報キャッシュ120に格納することができる。これについては、本明細書において更に論ずる。代替実施形態では、リマッピング・メタデータ122は、キャッシュ112(1)...112(L)の内1つ以上にも格納される。
[0030] 不良検出モジュール116およびクラスタリング・モジュール118はメモリ・コントローラ104上に図示されるが、この文書のコンテキストでは、これら個々のモジュールによって実行される機能の一部または全部は、加えてまたは代わりに、他の場所に格納されてもよく、あるいはシステム・ソフトウェア102上に配置されても、またはシステム・ソフトウェア102にわたって分散されてもよいことは理解されよう(例えば、ある機能がオペレーティング・システムによって実行されてもよい)。更に、種々の実施形態において、システム・ソフトウェア102は、メモリ不良についての情報を格納する、別の不良マップ・キャッシュも維持することができ、この不良マップ・キャッシュは、メモリ不良を回避できるように、この情報をメモリ割り当て時点においてランタイム実行可能環境に受け渡す。その結果、少なくともある実施形態では、システム・ソフトウェア102およびメモリ・コントローラ104は、互いに通信し、本明細書において論ずる技術を実行するための情報を交換することができる。
[0031] 図2は、メモリ・ページが消摩し、オペレーティング・システム02および/またはメモリ・コントローラ104がリマッピング・プロセス例を経時的に実施するときの、個々のメモリ・ページ108(N)についての異なる段階を示す。先に論じたように、個々のメモリ・ページ108(N)は多数の異なるラインを含むことができる。各ラインの記憶容量、および各ページにおけるラインの数は、使用されるメモリのタイプに依存することができる。少なくとも1つの実施形態では、ラインは512ビットとすることができ、ページ108(N)は4キロバイト・ページとすることができる。
[0032] しかしながら、例示の目的および理解を容易にするために、図2に示すように、ページ108(N)は0、1、2、3、4、5、6、および7の番号が付けられた8つのラインを含む。図2におけるラインには、数値0から7までを使用して、連続的に番号が付けられるが、この文書のコンテキストでは、もっと大きなメモリ領域には、任意のラインまたはセグメント・アドレシング方式を使用してもよいことは理解されよう。更に、図2に示すように、各ラインは、データ格納部と誤り訂正部とに分割することができる。データ格納部は、メモリ・モジュール106に割り当てられたオブジェクトまたはオブジェクトの一部を格納し、誤り訂正部は、個々のライン毎に、利用可能な誤り訂正のために保存される。誤り訂正が完全に使い果たされたとき(例えば、誤り訂正部が図2において完全に満たされる)、先に論じたように、不良検出モジュール116は、そのラインを不良ラインとして識別する。代替実施形態では、個々のラインが誤り訂正部を含まなくてもよい。
[0033] 段階200(A)に示すように、ページ108(N)は、未だ全く不良ラインを含まず、各ラインが利用可能な完全な1組の誤り訂正リソースを有するので、これは完全なページである。しかしながら、システム・ソフトウェア102および/またはメモリ・コントローラ104が、ときの経過と共に行われるメモリ割り当てプロセスの間にページ108(N)に書き込み始めると、更には摩耗性メモリを構成する個々のセル内部のばらつきのために、ページ108(N)内の個々のラインが異なるレベルで摩耗する可能性がある。
[0034] 段階200(B)に示すように、ライン1およびライン3にはそれぞれ「不良1」および「不良2」と記され、各々全ての利用可能な誤り訂正リソースを使い果たした。このように、不良検出モジュール116は、これらのラインが不良になったことを検出し、この論述に限って言えば、ライン1が最初に不良になり、ライン1が不良になった後に、ライン3が2番目に不良になったと仮定する。
[0035] 種々の実施形態において、不良検出モジュール116が、個々のメモリ・ページ108(N)内における第1ライン(例えば、ライン1)が不良になったことを検出したとき、クラスタリング・モジュール118は、段階200(C)において、リマッピング・メタデータ122を作成し、ページ108(N)内にあるメモリのライン(例えば、ライン7)を、リマッピング・メタデータ122に割り当てる。このように、ページ108(N)の第1ラインが消磨したために不良になったとき(例えば、ライン1)、クラスタリング・モジュール118は同時に第2の「偽の」不良も作ることができる。第2の偽の不良ラインは、リマッピング・メタデータ122を格納し、ページ108(N)の周辺部分に配置することができる(例えば、ライン7)。クラスタリング・モジュール118は、連続格納空間を中断しないように、リマッピング・メタデータ122をページ108(N)の最上位または最下位にインストールする。
[0036] 種々の実施形態において、リマッピング・メタデータ122は、ページ108(N)におけるライン数を反映する数のエントリを含む。例えば、リマッピング・メタデータ122は、ライン0に対応するエントリ0、ライン1に対応するエントリ1、ライン2に対応するエントリ2等を有する。リマッピング・メタデータ122は、エントリを交換するまたはずらすことによって、ページ108(N)内部でラインを論理的に再編成するように構成され、信頼性のあるラインまたは有効な(working)ラインがページ108(N)内部に論理的な連続空間を生み出し、信頼性のないラインまたは不良ラインが、リマッピング・メタデータ122もインストールされた、ページ108(N)の周辺部分に論理的にリディレクトされるようになっている。リマッピング・メタデータ122におけるエントリ毎に必要とされる記憶空間の量は、ページ108(N)におけるライン数の対数に基づくビット数とすることができる。リマッピング・メタデータ122はページ108(N)のために記憶空間を管理しリディレクトするので、リマッピング・メタデータ122が格納されたビットの一部が不良になったかまたは変転した場合に備えて、リマッピング・メタデータ122は冗長に格納されてもよい。更に、クラスタリング・モジュール118は、書き込みによってハードウェアを検査することによってリマッピング・メタデータ122が変転した場合、リマッピング・メタデータ122を再生成するように構成することもできる。
[0037] 段階200(D)に示すように、クラスタリング・モジュール118は、ライン1のエントリ(例えば、段階200(C)における実際の不良)を、ページの最下位にあるライン6のエントリと交換する。このように、リマッピング・メタデータ122およびエントリ交換にしたがって、ライン6が論理不良ラインとなり、ライン1は論理有効ラインとなる。メモリ・コントローラ104は、データを実際のライン6に格納する。ライン6は、連続記憶空間を生み出すために、論理的にライン1と交換されている。
[0038] 更に進んで、実際のライン3が不良になった場合、クラスタリング・モジュール118は、不良ライン3のエントリを、有効ライン5のエントリと交換する。有効ライン5は、リマッピング・プロセス中に交換するために利用可能な次の有効ラインである。この場合も、エントリを交換することによって、クラスタリング・モジュール118は、不良メモリ・ラインによって中断も分割もされない、連続メモリ空間の論理部分を生み出す。
[0039] 種々の実施形態において、リマッピング・メタデータ122における各エントリには、物理アドレス・オフセット(例えば、そのエントリに関連付けられた元のラインの物理位置)および論理ライン・オフセット(例えば、元のラインが不良になったときにリマッピングされたラインの物理位置)を反映するために、インデックス化することができる。つまり、種々の実施形態において、リマッピング・メタデータ122は、段階200(D)におけるリマッピング・メタデータ122のエントリの再編成(例えば、再順序付け)に示すように、不良ライン1が論理的に有効ライン6と交換され、不良ライン3が論理的に有効ライン5と交換されたことを示すことによって、アドレス変換または位置変換を生じさせる。リマッピング・メタデータ122はライン7に対して作成され、ここにインストールされたので、ライン7のエントリはヌル(「・」)とすることができ、リディレクトするエントリを全く含まなくてもよい。種々の実施形態において、ライン7のエントリは、前述のように、冗長なリマッピング・メタデータを格納することもできる。
[0040] その結果、ページ108(N)における有効ラインに対応するリマッピング・メタデータ122における初期のエントリの内、論理的に不良ラインと交換されなかったものは、同じままである。例えば、段階200(D)において、リマッピング・メタデータ122におけるライン0、2、および4のエントリは、不良ラインのエントリと交換されなかったので、変更も変化もさせられていない。
[0041] 種々の実施形態において、リマッピング・メタデータ122は、クラスタリング・モジュール118が不良ラインと論理的に交換するために次に利用可能な有効ラインを識別できるように、境界ポインタ202を使用する。クラスタリング・モジュール118は、不良ラインを纏めてページ108(N)の周辺部分において論理的にクラスタリングするので、境界ポインタ202は、論理連続空間を論理不良空間から分ける次の有効ラインを指し示す。例えば、段階200(D)において、境界ポインタ202は、実際のライン4を、ページ108(N)の最下位においてクラスタリングされた論理不良(例えば、ライン5、7、および7)と境界を接しこれらを分ける次の有効ラインとして、指し示す。したがって、不良検出モジュール116が他のラインの不良を検出したとき、クラスタリング・モジュール118は、リマッピング・メタデータ122において、不良ラインのアドレスまたはインデックスを、境界ポインタ202によって識別されたラインに論理的にリディレクトすることによって、メモリ・ページ108(N)を再編成する。クラスタリング・モジュール118は、次に、境界ポインタ202を次の有効ラインに進め、リマッピング・メタデータ122を更新することができる。
[0042] 種々の実施形態において、ページ108(N)における各ラインにはインディケータが設定され、初期アクセス中に、ラインがクラスタリング・プロセスによって論理的にリマッピングされたか否か、メモリ割り当てモジュール114が識別することができる。例えば、このインディケータは、誤り訂正部に保存される1つのビットであり、ラインが不良になってリマッピングされたときは「yes」で示し、ラインが不良になっておらずアクセスされたデータがそのラインに格納されるときは「no」で示す。ラインが不良になったとき、クラスタリング・モジュール118は、そのラインがリディレクトまたはリマッピングされたことを示すために、このインディケータを設定することができる。少なくとも1つの実施形態では、メモリ割り当てモジュール114および/またはメモリ・コントローラ104は、リマッピング・メタデータ122がページ108(N)の最上位にある第1ラインまたはページ108(N)の最下位にある最後のラインに配置されることを知っているので、メモリ割り当てモジュール114および/またはメモリ・コントローラ104は、リマッピング・メタデータ122を突き止めることができる。他の実施形態では、ライン毎のインディケータが、更に、ページ108(N)内においてリマッピング・メタデータ122を指し示すために追加の容量を有するように構成されてもよい。
[0043] 段階200(B)および段階200(D)間の差に見られるように、本明細書において論じられるクラスタリングおよびリマッピングは、論理的に、より大きなオブジェクト割り当てのために、より大きな連続空間量を生み出す。例えば、段階200(B)において、メモリ割り当てモジュール114が不良ライン1および3の周囲にメモリを割り当てなければならない場合、メモリ割り当てモジュール114は、データをi)ライン0、ii)ライン2、またはiii)ライン4〜7(例えば、4つの連続ライン)に格納することができる。クラスタリングおよびリマッピング・プロセスを実施した後、メモリ割り当てモジュール114は、論理的に有効なライン0〜4(例えば、5つの連続ライン)にデータを格納することができる。前述のように、図2におけるページ108(N)は、例示の目的でそして理解を容易にするために、8つのラインを含む。したがって、クラスタリングおよびリマッピング・プロセスの利益および利点は、もっと多くのラインがある例(例えば、1ページ内に64ラインある)、ページ内にもっとも多くの不良ラインが散乱する例等を使用すると、より明白になるであろう。
[0044] 図3は、メモリ・モジュール106に格納された2つの連続ページ2Nおよび2N+1 300を示す。連続メモリ空間の量を更に最大化するために、クラスタリング・モジュール118は、不良ラインおよびリマッピング・メタデータ122を、メモリ・モジュール106における偶数ページ(例えば、ページ2N)の最上位、およびメモリ・モジュール106における奇数ページ(例えば、ページ2N+1)の最下位に、またはその逆にクラスタリングするように構成することができる。このように、連続メモリ空間の量は、図3に示すように、2つの連続ページ、即ち、ページ2Nの最下位およびページ2N+1の最上位にわたって広がることができる。
[0045] 種々の実施形態において、クラスタリング・モジュール118は、クラスタリングがページの最上位で行われるのか(例えば、リマッピング・メタデータ122がライン0に格納される)またはページの最下位で行われるのか(例えば、リマッピング・メタデータ122が、図2の例では、ページの最終ライン、即ち、ライン7に格納される)に応じて、境界ポインタ204を増加および減少させて、ページ108(N)毎にリマッピング・メタデータ122におけるエントリを編成することができる。
[0046] 図2および図3に関して以上で提示した例は、メモリ・リマッピング領域を、メモリ・システム領域(例えば、ページ108(1)...108(N))に対応する個々のページとして記述した。しかしながら、メモリ・リマッピングおよびクラスタリング・プロセスの他の実施態様では、メモリ・システム領域と同じ粒度を有するメモリ・リマッピング領域を使用しなくてもよい。例えば、クラスタリング・モジュール118が、ハードウェア・メモリ・モジュール106において使用されるメモリ領域の倍数であるメモリ・リマッピング領域を実現するのでもよい。つまり、クラスタリング・モジュール118は、例えば、2ページ毎、4ページ毎、8ページ毎の最上位または最下位にリマッピング・メタデータ122を置くこともできる。更に、リマッピング・メタデータ122および境界ポインタ102は、特定のページおよび交換されていないラインを参照するように構成することもできる。これは更に断片化を解消し、より大きな連続メモリ部分を生み出すことができる。
[0047] 少なくとも1つの実施形態では、クラスタリング・モジュール118は、1つのメモリ・リマッピング領域サイズ(例えば、1ページ)から他のメモリ・リマッピング領域サイズ(例えば、8ページ)に移るように構成することもできる。例えば、クラスタリング・モジュール118は、最初に個々のページ粒度にしたがって不良ラインをクラスタリングすることができるが、あるグループのページの各々に不良ラインが発生した後、クラスタリング・モジュール118は、更に断片化を解消するために、代わりに、8ページの粒度(例えば、8ページ・メモリ・リマッピング領域)にしたがって、不良ラインをクラスタリングすることもできる。ここで、システム・ソフトウェア102およびメモリ・コントローラ104は、次に、しかるべくシステムを再構成し、リマッピング・メタデータ122を更新して、1ページのリマッピング領域サイズから他のメモリ・リマッピング領域サイズへの移行を反映することができる。
例示的プロセス
[0048] ここで、図4および図5を参照して、動作例について説明する。ハードウェア、ソフトウェア、またはその組み合わせで実現することができる動作のシーケンスを表すプロセスを、論理フロー・グラフとして示す。ソフトウェアのコンテキストでは、動作は、コンピュータ実行可能命令を表し、1つ以上のプロセッサによって実行されると、説明した動作(recited operations)を行う。一般に、コンピュータ実行可能命令は、ルーチン、プログラム、オブジェクト、コンポーネント、モジュール、データ構造等を含み、特定の機能を実行するか、または特定の抽象データ型を実装する。動作が説明される順序は、限定として解釈されることを意図しておらず、任意の数の説明する動作を任意の順序でおよび/または並列に組み合わせて本プロセスを実現することができる。
[0049] 図4は、メモリ・モジュール106における個々のページ108(N)についてリマッピング・メタデータ122を作成および/または更新することを目的とするプロセス例400を示す。例えば、プロセス例400は、システム・ソフトウェア102、メモリ・コントローラ104、またはその組み合わせに配置されたメモリ割り当てモジュール114によって行われる書き込み動作に関連付けることもできる。更に、メモリ・コントローラ104は、メモリ・モジュール106上に配置されても、またはメモリ・モジュール106から分離されて、システム・メモリ102と共にシステムの処理側にあってもよい。
[0050] 動作402において、メモリ・コントローラ104は、発行された書き込み命令を受け、メモリ・コントローラ104はページ108(N)におけるラインにデータを書き込もうとする。例えば、メモリ・コントローラ104は、キャッシュ階層がダーティ・ラインを排除することを望み、したがって、書き戻し(writeback)を要求するときに発行された命令を受けることができる。次いで、メモリ・コントローラ104は、書き戻しのためのページ108(N)およびラインを識別するように構成することができる。
[0051] 動作404において、不良検出モジュール116は、そのラインが不良ラインであると検出する。例えば、不良検出モジュール116は、そのラインが不良ラインであることを検出し、メモリ・コントローラ104が実際にデータをそのラインに書き込み、更にそのデータの別のバージョンをバッファに一時的に格納するときにはもはや格納の目的にはそのラインには信頼性がないことを確認する。メモリ・コントローラ104がデータをラインから読み戻すとき、不良検出モジュール116は、読み取られたデータを、バッファに一時的に格納されているこのデータの他のバージョンと比較する。ラインから読み戻されたデータが、バッファに一時的に格納されたデータと同じでない場合、不良検出モジュール116は、そのラインが不良ラインであると判定する。
[0052] 動作406において、メモリ・コントローラ104はライン不良および書き込みできないデータをシステム・ソフトウェア102に渡すことができる。例えば、メモリ・コントローラ140は、不良書き込みバッファおよび生成された割り込みを使用して、不良情報をオペレーティング・システムに伝えることができる。ページ108(N)における不良ラインが、マネージド・ランタイムまたは他のシステム・コンポーネントによって使用されている1つ以上のオブジェクトを収容しているかもしれないので、メモリ・コントローラ104はこの情報を渡す。
[0053] 動作508において、システム・ソフトウェア102のメモリ割り当てモジュール114は、次に、例えばマネージド・ランタイムのために、ページ108(N)における1つ以上のオブジェクトを、メモリ・モジュール106における異なるメモリ位置(例えば、他のページ)に割り当てしなおす、または移動させることができる。この再割り当てにより、ページ108(N)全体を解放する。種々の実施形態においてメモリ割り当てモジュール114は、次に、リマッピング・プロセスをトリガし、不良ラインをページ108(N)の周辺部分において論理的にクラスタリングすることにより、ページ108(N)を再編成するように、メモリ・コントローラ104に命令することができる。
[0054] したがって、動作410において、メモリ・コントローラ104のクラスタリング・モジュール118は、ページ108(N)についてのリマッピング・メタデータ122を作成または更新し、図2および図3に関して先に論じたように、不良ラインをページ108(N)の周辺部分においてクラスタリングする。例えば、クラスタリング・モジュール118は、不良ラインが個々のページ108(N)の最初の不良ラインか否か判定することができる。不良ラインが最初の不良ラインであるとクラスタリング・モジュール118が判定した場合、クラスタリング・モジュール118は、図2および図3に関して先に行った論述にしたがって、ページ108(N)についてリマッピング・メタデータ122を作成する。したがって、クラスタリング・モジュール118は、ページ108(N)におけるラインの各々にエントリを作成し、リマッピング・メタデータ122をページ108内に格納できるようにページ108(N)の最上位または最下位に「偽の」不良を実施し(implement)、不良ラインのエントリを、リマッピング・メタデータ122の次のページの最上位または最下位上の有効ラインのエントリと交換し、不良ラインがリマッピングされたことを示すインディケータを、この不良ライン上に設定することができる。このように、クラスタリング・モジュール118は、不良ラインをページの周辺部分(例えば、ページがメモリ・モジュール106における偶数ページかまたは奇数ページかに応じて、最上位または最下位)において論理的にクラスタリングし始め、これによって、ページ108(N)内に更に大量な連続空間を生み出す。
[0055] 種々の実施形態において、クラスタリング・モジュール118が、不良ラインが最初の不良ラインであると判定した場合、クラスタリング・モジュール118は、境界ポインタ202にアクセスして、不良ラインのクラスタ(failed cluster of lines)を論理連続メモリ空間から分離する次の利用可能な有効ラインを判定する。クラスタリング・モジュール118は、次に、後続の(例えば、最初の不良ラインおよび「偽の」不良ラインの後)不良ラインのエントリを、境界ポインタ202によって識別された、次に利用可能な有効ラインのエントリと交換し、不良ラインがリマッピングされたことを示すインディケータを、後続の不良ライン上に設定することができる。
[0056] 種々の実施形態において、プロセス例400は、個々のページ108(N)内におけるラインが不良を発生する毎に繰り返すことができる。更に、種々の実施形態において、このプロセス例400は、メモリ・モジュール106内に維持された多数の異なるページ108(1)...108(N)の各々に対して実行される。
[0057] 図5は、メモリ読み取り動作の間にリマッピング・メタデータ122を使用することを目的としたプロセス例500を示す。例えば、プロセス例500は、処理コア110(1)...110(M)の1つ(またはプリフェッチャー)によって発行された読み取り動作が、キャッシュ階層を失い(miss)、したがってメモリ・モジュール106から読み取るために、メモリ・コントローラ104に送られるときに、この読み取り動作と関連付けることができる。メモリ・コントローラ104は、メモリ・モジュール106上に配置されても、メモリ・モジュール106から分離されてシステム・メモリ102と共にシステムの処理側にあってもよい。
[0058] 動作502において、メモリ・コントローラ104はページ108(N)におけるあるラインからデータを読み取ろうとする。例えば、メモリ・コントローラ104は、処理コア110(1)...110(M)の1つから発行され、メモリ・モジュール106に格納されたオブジェクトまたはオブジェクトの一部にアクセスすることを求める要求を受けたのでもよい。
[0059] 動作504において、メモリ・コントローラ104はこのラインをリマッピングされたライン(例えば、不良ライン)として識別する。少なくとも1つの実施形態では、メモリ・コントローラ104は、物理アドレスを使用して実際のラインにアクセスし、インディケータ(例えば、誤り訂正部に保存された1ビット)を調べて、そのラインが消磨して不良になっており、既にリマッピングされたことを判定することによって、ラインがリマッピングされたラインであると判定することができる。
[0060] 他の実施形態では、メモリ・コントローラ104は、不良情報キャッシュ120内にローカルに1つ以上のページ108(1)...108(N)についてのリマッピング・メタデータ122(現在アクセスされているページ、最近アクセスされたページ、および/または今後アクセスされることが予期されるページについてのリマッピング・メタデータ122)を維持し、メモリ・コントローラおよび/またはメモリ割り当てモジュール114は、不良情報キャッシュ120内に維持されたリマッピング・メタデータ122をチェックして、当該ラインがリマッピングされたか否か判定し、アドレスのリディレクトを決定することができる。
[0061] 動作506において、メモリ・コントローラ104は、リマッピング・メタデータ122にアクセスし、リマッピング・メタデータ122を使用して、リディレクトされた新たなラインが、論理的に不良ラインと交換され、実際にデータまたはオブジェクトの一部を格納している(例えば、図2におけるライン5および6)ことを判定する。
[0062] 動作508において、メモリ・コントローラ104は、データを新たなラインから読み取る。
[0063] 図5のプロセス例500も、個々のページ108(N)内のラインが読み取りアクセスまたは読み取り要求と関連付けられる毎に、繰り返すことができる。
[0064] 種々の実施形態において、リマッピング・メタデータ122が、メモリ・コントローラ104に維持することができる不良情報キャッシュ120にキャッシュされる場合、システム・アーキテクチャは、読み取りアクセスを実行するときに時間およびエネルギを保存することもできる。例えば、リマッピング・メタデータ122が不良情報キャッシュ120に格納されないとき、メモリ・コントローラ104が新たなラインを突き止めてそこからデータを読み取るためには、メモリ・コントローラ104は3つの異なる動作(instance)でメモリ・モジュール106にアクセスしなければならない場合がある。即ち、(1)元のラインがリマッピングされたことを識別する第1アクセス、(2)ページの最上位または最下位においてリマッピング・メタデータ122の位置への第2アクセス、および(3)リマッピング・メタデータ122によって指し示される、リディレクトされたラインへの第3アクセスである。これは、システムの読み取りレイテンシを増大させる可能性がある。対照的に、リマッピング・メタデータ122が不良情報キャッシュ120にキャッシュされると、メモリ・コントローラ104は、リディレクトをローカルに判定し、次いで新たなラインからデータを読み取るためにメモリ・モジュール106に対して1回のアクセスを行うことができる。
[0065] 図4および図5に示したプロセス例は、システム・ソフトウェア102、メモリ・コントローラ104、または双方の組み合わせによって、マネージド・ランタイムと共に実現することができる。更に、断片化を低減または解消するクラスタリングおよびリマッピング・プロセスに加えて、システム・ソフトウェア102および/またはメモリ・コントローラ104は、個々のページ108(1)...108(N)におけるライン不良を追跡し、不良マップを維持する(例えば、不良情報キャッシュ120に)ように構成することもできる。種々の実施形態において、メモリを割り当てるときにライン不良を回避できるように、ライン不良をランタイム・システムに伝えることもできる。
[0066] ある実施形態では、本明細書において論じたクラスタリングおよびリマッピング・プロセスは、メモリ・システムのために構成された他の不良処理技法と併せて動作することができる。例えば、メモリ・コントローラ104は、個々のページ内の不良ラインがリマッピングおよびクラスタリングされた後に、1つ以上のページ108(1)...108(N)についてのリマッピング・メタデータ122にアクセスすることもできる。ページ108(1)...108(N)の少なくとも一部はもはや完全ではなく、これらは不良ラインを有するのでむしろ不完全であるので、システム・ソフトウェア102および/またはメモリ・コントローラ104は、ページが完全かまたは不完全かに基づいて、ページをプールする(pool)または分けることができ、不完全なページが提供することができる連続空間の量を、例えば、マネージド・ランタイムに伝えることができる。他の例では、メモリ・コントローラ104は、ラインが不良になったとき、ページ108(1)...108(N)に格納されたデータを再配置することができる。
[0067] 種々の実施形態において、本明細書において説明したリマッピングおよびクラスタリング・プロセスは、メモーのラインを取り戻し、メモリ・モジュール106のあちらこちらでデータおよびオブジェクトを移動させるガベージ・コレクション・プロセスにも使用することができる。例えば、ガベージ・コレクションは、メモリを割り当てるときにシステム・ソフトウェア102から得られる不良マップを使用することができる。その結果、ガベージ・コレクタ(garbage collector)は、ガベージ・コレクション・プロセスにおいてメモリを割り当てるときに、不良ラインを回避することができればよい。
[0068] 本明細書において論じたメモリ・モジュール106におけるページ108(1)...108(N)はPCMとして説明することができるが、本明細書において説明した技法は、他のタイプの摩耗性メモリにも適用可能であること、そしてメモリの領域およびメモリのセグメントは、システム・アーキテクチャに基づいて異なってもよいことは理解されよう(例えば、セグメントが、ラインと比較して、粒度が高くても低くてもよく、領域が、ページと比較して、粒度が高くても低くてもよい)。更に、メモリ・モジュール106、ならびにシステム・ソフトウェア102および/またはメモリ・コントローラ104を格納することができる任意の他のメモリは、少なくとも2つのタイプのコンピュータ読み取り可能媒体、即ち、コンピュータ記憶媒体および通信媒体を含む、コンピュータ読み取り可能媒体を含んでもよい。
[0069] コンピュータ記憶媒体は、揮発性および不揮発性のリムーバブルおよび非リムーバブル媒体を含み、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、または他のデータというような情報の格納のための任意の方法または技術で実現される。コンピュータ記憶媒体は、ランダム・アクセス・メモリ(RAM)、リード・オンリ・メモリ(ROM)、電気的消去可能プログラマブル・リード・オンリ・メモリ(EEPROM)、フラッシュ・メモリまたは他のメモリ技術、コンパクト・ディスクROM(CD−ROM)、ディジタル・バーサタイル・ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは計算デバイスまたはサーバー・デバイスによるアクセスのために情報を格納するために使用することができる任意の他の非伝送媒体(non-transmission medium)を含むが、これらに限定されるのではない。
[0070] 対照的に、通信媒体は、コンピュータ読み取り可能命令、データ構造、プログラム・モジュール、または他のデータを、搬送波のような変調データ信号、または他の伝送メカニズムに具体化することができる。本明細書において定めたように、コンピュータ記憶媒体は通信媒体を含まない。
結論
[0071] 以上、構造的特徴および/または方法論的アクトに特定的な文言で本主題について説明したが、添付した特許請求の範囲において定められる主題は、必ずしも、以上で説明した特定的な特徴や動作には限定されないことは理解されてしかるべきである。逆に、以上で説明した具体的な特徴および動作は、特許請求の範囲を実現するための例として説明したまでである。

Claims (12)

  1. システムであって、
    複数のメモリ領域を含み、個々のメモリ領域が複数のセグメントを含む、ハードウェア・メモリ・モジュールと、
    前記複数のメモリ領域の内のメモリ領域において不良セグメントを検出する不良検出モジュールと、
    前記不良セグメントを、前記メモリ領域のエッジに位置する有効セグメントにリマッピングすることによって、前記不良セグメントを論理的にクラスタリングするクラスタリング・モジュールであって、前記有効セグメントが前記メモリ領域内の連続メモリ空間を最大化するように選択される、クラスタリング・モジュールと、
    を含み、
    前記クラスタリング・モジュールが、更に、前記メモリ領域についてのリマッピング・メタデータを作成し、前記メモリ領域の前記リマッピング・メタデータを前記メモリ領域内に格納し、前記リマッピング・メタデータが、前記メモリ領域における前記複数のセグメントの各々についてのエントリを含む、システム。
  2. 請求項1記載のシステムにおいて、前記クラスタリング・モジュールが、前記リマッピング・メタデータを、前記メモリ領域の最上位における最初のセグメント、または前記メモリ領域の最下位における最後のセグメントに格納する、システム。
  3. 請求項1記載のシステムにおいて、前記クラスタリング・モジュールが、前記リマッピング・メタデータにおいて、不良セグメントに関連付けられた第1エントリを、前記有効セグメントに関連付けられた第2エントリと交換する、システム。
  4. 請求項1記載のシステムにおいて、
    前記クラスタリング・モジュールが、更に、前記複数のメモリ領域における前記メモリ領域および追加のメモリ領域を含むメモリ・リマッピング領域についてのリマッピング・メタデータを作成し、前記メモリ・リマッピング領域の最上位、または前記メモリ・リマッピング領域の最下位において前記メモリ・リマッピング領域の前記リマッピング・メタデータを格納し、
    前記リマッピング・メタデータが、前記メモリ領域および前記追加のメモリ領域における前記セグメントの各々についてのエントリを含み、前記連続メモリ空間が、前記メモリ領域および前記追加のメモリ領域に広がる、システム。
  5. 請求項1記載のシステムにおいて、前記メモリ領域の前記エッジに位置する前記有効セグメントが、前記メモリ領域において最上位で最も利用可能な有効セグメント、または前記メモリ領域において最下位で最も利用可能な有効セグメントの少なくとも一方を含む、システム。
  6. 請求項1記載のシステムにおいて、前記ハードウェア・メモリ・モジュールが相変化メモリを含む、システム。
  7. 請求項1記載のシステムであって、更に、前記複数のメモリ領域に記憶空間を割り当てるメモリ割り当てモジュールを備え、前記メモリ割り当てモジュールが、オペレーティング・システムの一部である、システム。
  8. 請求項1記載のシステムにおいて、前記不良検出モジュールまたは前記クラスタリング・モジュールの少なくとも一方がメモリ・コントローラの一部である、システム。
  9. 請求項8記載のシステムにおいて、前記メモリ・コントローラが前記ハードウェア・メモリ・モジュール上に位置される、システム。
  10. 請求項1記載のシステムにおいて、前記複数のメモリ領域の各々がメモリのページを含み、各セグメントがメモリのラインを含む、システム。
  11. 請求項1記載のシステムにおいて、前記クラスタリング・モジュールが境界ポインタを使用して、前記有効セグメントを、前記メモリ領域の前記エッジにおいてクラスタリングされた最後の論理不良セグメントに連続する次の論理有効セグメントとして識別する、システム。
  12. 請求項1記載のシステムにおいて、前記クラスタリングが、前記複数のメモリ領域内において、より多量の連続メモリ空間を生成する、システム。
JP2015542836A 2012-11-16 2013-11-15 アドレス断片化に対するメモリ・セグメントのリマッピング Active JP6518191B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/678,941 US9032244B2 (en) 2012-11-16 2012-11-16 Memory segment remapping to address fragmentation
US13/678,941 2012-11-16
PCT/US2013/070365 WO2014078695A1 (en) 2012-11-16 2013-11-15 Memory segment remapping to address fragmentation

Publications (3)

Publication Number Publication Date
JP2015535116A JP2015535116A (ja) 2015-12-07
JP2015535116A5 JP2015535116A5 (ja) 2016-12-28
JP6518191B2 true JP6518191B2 (ja) 2019-05-22

Family

ID=49765651

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015542836A Active JP6518191B2 (ja) 2012-11-16 2013-11-15 アドレス断片化に対するメモリ・セグメントのリマッピング

Country Status (12)

Country Link
US (1) US9032244B2 (ja)
EP (1) EP2920700B1 (ja)
JP (1) JP6518191B2 (ja)
KR (1) KR102152238B1 (ja)
CN (1) CN104798051B (ja)
AU (1) AU2013344519B2 (ja)
BR (1) BR112015010543B1 (ja)
CA (1) CA2887502C (ja)
MX (1) MX348617B (ja)
RU (1) RU2666241C2 (ja)
TW (1) TW201428758A (ja)
WO (1) WO2014078695A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9582465B2 (en) 2012-11-15 2017-02-28 Elwha Llc Flexible processors and flexible memory
US9323499B2 (en) 2012-11-15 2016-04-26 Elwha Llc Random number generator functions in memory
US8966310B2 (en) 2012-11-15 2015-02-24 Elwha Llc Redundancy for loss-tolerant data in non-volatile memory
US8925098B2 (en) 2012-11-15 2014-12-30 Elwha Llc Data security and access tracking in memory
US9442854B2 (en) 2012-11-15 2016-09-13 Elwha Llc Memory circuitry including computational circuitry for performing supplemental functions
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
US9026719B2 (en) * 2012-11-15 2015-05-05 Elwha, Llc Intelligent monitoring for computation in memory
KR102116364B1 (ko) * 2013-11-18 2020-05-28 삼성전자주식회사 메모리 시스템 및 그에 따른 반도체 메모리의 결함 메모리 셀 관리방법
EP3033680B1 (en) * 2014-03-31 2020-09-02 Oracle International Corporation Memory migration in presence of live memory traffic
US9678864B2 (en) * 2014-12-03 2017-06-13 Seagate Technology Llc Data reallocation upon detection of errors
US9760288B2 (en) 2015-02-18 2017-09-12 International Business Machines Corporation Determining causes of external fragmentation of memory
WO2017048228A1 (en) * 2015-09-14 2017-03-23 Hewlett Packard Enterprise Development Lp Memory location remapping and wear-levelling
US9760303B2 (en) * 2015-09-29 2017-09-12 Sandisk Technologies Llc Partially-bad block operation in 3-D nonvolatile memory
US10002042B2 (en) 2015-10-22 2018-06-19 Sandisk Technologies Llc Systems and methods of detecting errors during read operations and skipping word line portions
KR102420897B1 (ko) * 2016-03-17 2022-07-18 에스케이하이닉스 주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법
KR20180062246A (ko) 2016-11-30 2018-06-08 삼성전자주식회사 재분배기를 포함하는 메모리 시스템
US10198383B2 (en) 2016-12-31 2019-02-05 Sandisk Technologies Llc Systems and methods of adjusting an interface bus speed
CN107068195B (zh) * 2017-05-03 2020-06-02 上海交通大学 带有故障修复装置的三维芯片及故障修复和数据读取方法
US10924113B2 (en) 2017-08-17 2021-02-16 Western Digital Technologies, Inc. Dynamic calibration of frequency and power storage interface
US10466920B2 (en) 2017-08-17 2019-11-05 Western Digital Technologies, Inc. Method for maximizing frequency while checking data integrity on a physical interface bus
KR102388615B1 (ko) * 2017-11-13 2022-04-21 에스케이하이닉스 주식회사 메모리 시스템
CN112328510B (zh) * 2020-10-29 2022-11-29 上海兆芯集成电路有限公司 进阶主机控制器及其控制方法
TWI768633B (zh) * 2020-12-31 2022-06-21 大陸商星宸科技股份有限公司 記憶體裝置、影像處理晶片與記憶體控制方法
CN112711548B (zh) * 2021-01-11 2023-05-16 星宸科技股份有限公司 内存装置、图像处理芯片以及内存控制方法
CN113436669A (zh) * 2021-06-24 2021-09-24 深圳市晶存科技有限公司 LPDDR的bank地址映射方法

Family Cites Families (104)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4479214A (en) 1982-06-16 1984-10-23 International Business Machines Corporation System for updating error map of fault tolerant memory
US4547882A (en) 1983-03-01 1985-10-15 The Board Of Trustees Of The Leland Stanford Jr. University Error detecting and correcting memories
EP0163580B1 (en) 1984-05-31 1996-09-04 Fujitsu Limited Semiconductor integrated circuit with redundant circuit replacement
JPS62177768A (ja) 1986-01-31 1987-08-04 Sony Corp エラ−訂正装置
US5535328A (en) 1989-04-13 1996-07-09 Sandisk Corporation Non-volatile memory system card with flash erasable sectors of EEprom cells including a mechanism for substituting defective cells
JPH02310898A (ja) 1989-05-25 1990-12-26 Nec Corp メモリ回路
US5295258A (en) 1989-12-22 1994-03-15 Tandem Computers Incorporated Fault-tolerant computer system with online recovery and reintegration of redundant components
US5161157A (en) 1990-03-12 1992-11-03 Xicor, Inc. Field-programmable redundancy apparatus for memory arrays
US5233614A (en) 1991-01-07 1993-08-03 International Business Machines Corporation Fault mapping apparatus for memory
JPH04246745A (ja) 1991-02-01 1992-09-02 Canon Inc 情報処理装置及びその方法
US5379415A (en) 1992-09-29 1995-01-03 Zitel Corporation Fault tolerant memory system
US5588112A (en) 1992-12-30 1996-12-24 Digital Equipment Corporation DMA controller for memory scrubbing
GB9305801D0 (en) 1993-03-19 1993-05-05 Deans Alexander R Semiconductor memory system
RU2115160C1 (ru) * 1993-05-14 1998-07-10 Михаил Михайлович Татур Устройство динамического изменения адресов памяти
US5553263A (en) 1993-07-16 1996-09-03 Unisys Corporation Cache memory system with fault tolerance having concurrently operational cache controllers processing disjoint groups of memory
JPH08169084A (ja) 1994-12-16 1996-07-02 Toray Ind Inc 金属/フイルム積層体の製造方法
US5440710A (en) 1994-03-08 1995-08-08 Exponential Technology, Inc. Emulation of segment bounds checking using paging with sub-page validity
US5754817A (en) 1994-09-29 1998-05-19 Intel Corporation Execution in place of a file stored non-contiguously in a non-volatile memory
JPH09282862A (ja) 1996-04-11 1997-10-31 Mitsubishi Electric Corp メモリカード
US5864569A (en) 1996-10-18 1999-01-26 Micron Technology, Inc. Method and apparatus for performing error correction on data read from a multistate memory
JPH10302497A (ja) 1997-04-28 1998-11-13 Fujitsu Ltd 不良アドレスの代替方法、半導体記憶装置、及び、半導体装置
US6000006A (en) 1997-08-25 1999-12-07 Bit Microsystems, Inc. Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage
US6112286A (en) 1997-09-19 2000-08-29 Silicon Graphics, Inc. Reverse mapping page frame data structures to page table entries
US6381682B2 (en) 1998-06-10 2002-04-30 Compaq Information Technologies Group, L.P. Method and apparatus for dynamically sharing memory in a multiprocessor system
JP3702080B2 (ja) * 1997-11-28 2005-10-05 株式会社東芝 メモリ管理装置及び情報処理装置
US6560725B1 (en) 1999-06-18 2003-05-06 Madrone Solutions, Inc. Method for apparatus for tracking errors in a memory system
JP4316085B2 (ja) * 1999-12-28 2009-08-19 株式会社東芝 半導体集積回路装置及び集積回路システム
US6754784B1 (en) 2000-02-01 2004-06-22 Cirrus Logic, Inc. Methods and circuits for securing encached information
US6477612B1 (en) 2000-02-08 2002-11-05 Microsoft Corporation Providing access to physical memory allocated to a process by selectively mapping pages of the physical memory with virtual memory allocated to the process
US6581142B1 (en) 2000-09-01 2003-06-17 International Business Machines Corporation Computer program product and method for partial paging and eviction of microprocessor instructions in an embedded computer
US6766472B2 (en) 2000-09-22 2004-07-20 Microsoft Corporation Systems and methods for replicating virtual memory on a host computer and debugging using the replicated memory
KR100484147B1 (ko) 2002-07-26 2005-04-18 삼성전자주식회사 플래시 메모리 관리 방법
US7197662B2 (en) 2002-10-31 2007-03-27 Ring Technology Enterprises, Llc Methods and systems for a storage system
KR100526186B1 (ko) * 2003-04-04 2005-11-03 삼성전자주식회사 플래시 메모리의 오류블록 관리방법 및 장치
US7509543B2 (en) 2003-06-17 2009-03-24 Micron Technology, Inc. Circuit and method for error test, recordation, and repair
US7107411B2 (en) 2003-12-16 2006-09-12 International Business Machines Corporation Apparatus method and system for fault tolerant virtual memory management
US20050144516A1 (en) * 2003-12-30 2005-06-30 Gonzalez Carlos J. Adaptive deterministic grouping of blocks into multi-block units
US20050193283A1 (en) 2003-12-30 2005-09-01 Reinhardt Steven K. Buffering unchecked stores for fault detection in redundant multithreading systems using speculative memory support
US7322002B2 (en) 2004-05-26 2008-01-22 Micron Technology, Inc. Erasure pointer error correction
EP1607984B1 (en) 2004-06-14 2007-08-15 STMicroelectronics S.r.l. Method for managing bad memory blocks in a nonvolatile memory device, and nonvolatile memory device implementing the management method
KR100622349B1 (ko) * 2004-08-04 2006-09-14 삼성전자주식회사 불량 블록 관리 기능을 가지는 플레시 메모리 장치 및플레시 메모리 장치의 불량 블록 관리 방법.
TW200615963A (en) 2004-10-07 2006-05-16 Amic Technology Corp Memory structure which having repair function and its repair method
US7415644B2 (en) 2004-10-22 2008-08-19 International Business Machines Corporation Self-repairing of microprocessor array structures
US7596585B2 (en) 2004-11-03 2009-09-29 Honeywell International Inc. Object replication using information quality of service
US7581152B2 (en) 2004-12-22 2009-08-25 Intel Corporation Fault free store data path for software implementation of redundant multithreading environments
US7468993B2 (en) 2005-01-14 2008-12-23 International Business Machines Corporation Dynamic reconfiguration of solid state memory device to replicate and time multiplex data over multiple data interfaces
US8200700B2 (en) 2005-02-01 2012-06-12 Newsilike Media Group, Inc Systems and methods for use of structured and unstructured distributed data
US7571168B2 (en) 2005-07-25 2009-08-04 Parascale, Inc. Asynchronous file replication and migration in a storage network
US7681109B2 (en) 2005-10-13 2010-03-16 Ramot At Tel Aviv University Ltd. Method of error correction in MBC flash memory
US8386702B2 (en) 2005-10-27 2013-02-26 Hewlett-Packard Development Company, L.P. Memory controller
CN101331554A (zh) * 2005-11-08 2008-12-24 桑迪士克股份有限公司 具有可重定目标的存储器单元冗余的存储器
US7447066B2 (en) * 2005-11-08 2008-11-04 Sandisk Corporation Memory with retargetable memory cell redundancy
KR100755700B1 (ko) * 2005-12-27 2007-09-05 삼성전자주식회사 비휘발성 메모리가 캐쉬로 사용되는 저장 장치 및 그 관리방법
KR100660287B1 (ko) 2005-12-29 2006-12-20 동부일렉트로닉스 주식회사 상변화 메모리 및 그 제조 방법
US7739474B2 (en) 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
US7610523B1 (en) 2006-02-09 2009-10-27 Sun Microsystems, Inc. Method and template for physical-memory allocation for implementing an in-system memory test
ATE476741T1 (de) 2006-04-06 2010-08-15 Advantest Corp Testvorrichtung und testverfahren
US7653778B2 (en) 2006-05-08 2010-01-26 Siliconsystems, Inc. Systems and methods for measuring the useful life of solid-state storage devices
JP4821426B2 (ja) 2006-05-11 2011-11-24 富士ゼロックス株式会社 エラー回復プログラム、エラー回復装置及びコンピュータシステム
US7511646B2 (en) 2006-05-15 2009-03-31 Apple Inc. Use of 8-bit or higher A/D for NAND cell value
KR100897285B1 (ko) 2006-10-02 2009-05-14 삼성전자주식회사 멀티칩 및 그것의 리페어 방법
KR100983070B1 (ko) 2006-10-27 2010-09-20 후지쯔 가부시끼가이샤 어드레스선 고장 처리 장치, 어드레스선 고장 처리 방법, 어드레스선 고장 처리 명령을 기억하는 컴퓨터 판독 가능한 기억 매체, 정보 처리 장치, 및 메모리 컨트롤러
JPWO2008099786A1 (ja) 2007-02-13 2010-05-27 日本電気株式会社 メモリ障害復旧方法、情報処理装置およびプログラム
US8380944B2 (en) * 2007-03-01 2013-02-19 Douglas Dumitru Fast block device and methodology
US7996710B2 (en) * 2007-04-25 2011-08-09 Hewlett-Packard Development Company, L.P. Defect management for a semiconductor memory system
US7958303B2 (en) 2007-04-27 2011-06-07 Gary Stephen Shuster Flexible data storage system
US20090013148A1 (en) 2007-07-03 2009-01-08 Micron Technology, Inc. Block addressing for parallel memory arrays
US7945815B2 (en) 2007-08-14 2011-05-17 Dell Products L.P. System and method for managing memory errors in an information handling system
US7675776B2 (en) * 2007-12-21 2010-03-09 Spansion, Llc Bit map control of erase block defect list in a memory
US7917689B2 (en) 2007-12-28 2011-03-29 Intel Corporation Methods and apparatuses for nonvolatile memory wear leveling
US7843746B2 (en) 2007-12-31 2010-11-30 Qimonda Ag Method and device for redundancy replacement in semiconductor devices using a multiplexer
US20110202709A1 (en) 2008-03-19 2011-08-18 Rambus Inc. Optimizing storage of common patterns in flash memory
US8156392B2 (en) 2008-04-05 2012-04-10 Fusion-Io, Inc. Apparatus, system, and method for bad block remapping
US8180996B2 (en) 2008-05-15 2012-05-15 Calxeda, Inc. Distributed computing system with universal address system and method
US8195981B2 (en) 2008-06-03 2012-06-05 International Business Machines Corporation Memory metadata used to handle memory errors without process termination
JP2010009383A (ja) 2008-06-27 2010-01-14 Fujitsu Ltd メモリ装置、および情報処理システム
US7864578B2 (en) 2008-06-30 2011-01-04 Kabushiki Kaisha Toshiba Semiconductor memory repairing a defective bit and semiconductor memory system
US20100037102A1 (en) 2008-08-08 2010-02-11 Seagate Technology Llc Fault-tolerant non-volatile buddy memory structure
KR101535460B1 (ko) 2008-08-25 2015-07-10 삼성전자주식회사 배드 블록 리맵핑 기능을 갖는 불휘발성 메모리 장치 및 그배드 블록 리맵핑 방법
US8635603B2 (en) 2008-10-21 2014-01-21 International Business Machines Corporation Handling debugger breakpoints in a shared instruction system
US8259498B2 (en) 2008-12-08 2012-09-04 Infinite Memory Ltd. Continuous address space in non-volatile-memories (NVM) using efficient management methods for array deficiencies
US20100169602A1 (en) 2008-12-29 2010-07-01 Jared E Hulbert Method and Apparatus for Efficient Memory Placement
US8386883B2 (en) 2009-02-24 2013-02-26 International Business Machines Corporation Lengthening life of a limited life memory
US8166276B2 (en) 2009-02-27 2012-04-24 Advanced Micro Devices, Inc. Translate and verify instruction for a processor
US8095765B2 (en) * 2009-03-04 2012-01-10 Micron Technology, Inc. Memory block management
US20100251013A1 (en) 2009-03-26 2010-09-30 Inventec Corporation Method for processing bad block in redundant array of independent disks
KR20100115970A (ko) 2009-04-21 2010-10-29 삼성전자주식회사 배드 셀 관리 방법과 그 장치
US8255613B2 (en) 2009-04-30 2012-08-28 International Business Machines Corporation Wear-leveling and bad block management of limited lifetime memory devices
US8719652B2 (en) 2009-05-12 2014-05-06 Stec, Inc. Flash storage device with read disturb mitigation
US20110002169A1 (en) * 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
US20110041005A1 (en) * 2009-08-11 2011-02-17 Selinger Robert D Controller and Method for Providing Read Status and Spare Block Management Information in a Flash Memory System
KR20110024832A (ko) 2009-09-03 2011-03-09 주식회사 하이닉스반도체 데이터 머지 효율이 향상된 반도체 스토리지 시스템 및 그 제어 방법
JP5377182B2 (ja) 2009-09-10 2013-12-25 株式会社東芝 制御装置
US20110231713A1 (en) 2009-11-04 2011-09-22 Hitachi, Ltd. Flash memory module
US8255742B2 (en) 2009-11-18 2012-08-28 Microsoft Corporation Dynamically replicated memory
US8176235B2 (en) 2009-12-04 2012-05-08 International Business Machines Corporation Non-volatile memories with enhanced write performance and endurance
US8443261B2 (en) 2009-12-11 2013-05-14 Vmware, Inc. Transparent recovery from hardware memory errors
US8238178B2 (en) 2010-02-12 2012-08-07 Taiwan Semiconductor Manufacturing Company, Ltd. Redundancy circuits and operating methods thereof
US8589766B2 (en) 2010-02-24 2013-11-19 Apple Inc. Codeword remapping schemes for non-volatile memories
US8201024B2 (en) 2010-05-17 2012-06-12 Microsoft Corporation Managing memory faults
US8839053B2 (en) 2010-05-27 2014-09-16 Microsoft Corporation Error correcting pointers for non-volatile storage
US9092357B2 (en) 2010-10-29 2015-07-28 Microsoft Technology Licensing, Llc Remapping of inoperable memory blocks
US8639993B2 (en) 2010-11-11 2014-01-28 Microsoft Corporation Encoding data to enable it to be stored in a storage block that includes at least one storage failure
US8688954B2 (en) 2011-08-26 2014-04-01 Microsoft Corporation Remapping inoperable memory blocks using pointers

Also Published As

Publication number Publication date
MX2015006179A (es) 2015-11-06
US9032244B2 (en) 2015-05-12
EP2920700A1 (en) 2015-09-23
AU2013344519A1 (en) 2015-04-16
CA2887502C (en) 2020-04-28
RU2666241C2 (ru) 2018-09-06
BR112015010543A2 (pt) 2017-12-05
JP2015535116A (ja) 2015-12-07
CN104798051B (zh) 2017-12-12
KR102152238B1 (ko) 2020-09-04
BR112015010543B1 (pt) 2021-11-30
EP2920700B1 (en) 2019-09-25
RU2015118415A (ru) 2016-12-10
KR20150087319A (ko) 2015-07-29
CA2887502A1 (en) 2014-05-22
WO2014078695A1 (en) 2014-05-22
TW201428758A (zh) 2014-07-16
AU2013344519B2 (en) 2018-11-22
CN104798051A (zh) 2015-07-22
US20140143593A1 (en) 2014-05-22
MX348617B (es) 2017-06-21

Similar Documents

Publication Publication Date Title
JP6518191B2 (ja) アドレス断片化に対するメモリ・セグメントのリマッピング
KR102506392B1 (ko) 하이브리드 메모리에서 쓰기 및 플러시 지원을 위한 시스템 및 방법
CN109643275B (zh) 存储级存储器的磨损均衡设备和方法
US6243795B1 (en) Redundant, asymmetrically parallel disk cache for a data storage system
US8898371B2 (en) Accessing logical-to-physical address translation data for solid state disks
JP3505093B2 (ja) ファイル管理システム
KR20100081880A (ko) 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
US8566525B2 (en) Techniques for managing data in a storage controller
US20060294339A1 (en) Abstracted dynamic addressing
CN110347613B (zh) 多租户固态盘中实现raid的方法、控制器及多租户固态盘
KR20040085422A (ko) 플래시 메모리 액세스 장치 및 방법
CN109558068B (zh) 数据迁移方法及迁移系统
US11836089B2 (en) Cache memory, memory system including the same and operating method thereof
CN116483263A (zh) 一种存储系统的存储设备、存储系统
CN111124251A (zh) 用于i/o控制的方法、装置以及计算机可读介质
CN115437554A (zh) 用于存储器系统中页迁移的系统、方法和装置
CN107491263B (zh) 一种基于存储对象的数据重构方法
KR101607292B1 (ko) 플래시 스토리지 시스템 및 플래시 변환 계층을 통한 고속 결함 복구방법

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170929

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171101

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180719

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181015

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190419

R150 Certificate of patent or registration of utility model

Ref document number: 6518191

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250