JP2023510709A - ストレージ・クラス・メモリ - Google Patents

ストレージ・クラス・メモリ Download PDF

Info

Publication number
JP2023510709A
JP2023510709A JP2022539008A JP2022539008A JP2023510709A JP 2023510709 A JP2023510709 A JP 2023510709A JP 2022539008 A JP2022539008 A JP 2022539008A JP 2022539008 A JP2022539008 A JP 2022539008A JP 2023510709 A JP2023510709 A JP 2023510709A
Authority
JP
Japan
Prior art keywords
vba
entry
lvt
data
memory
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
Application number
JP2022539008A
Other languages
English (en)
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2023510709A publication Critical patent/JP2023510709A/ja
Pending legal-status Critical Current

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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/26Sensing or reading circuits; Data output circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/349Arrangements for evaluating degradation, retention or wearout, e.g. by counting erase cycles
    • G11C16/3495Circuits or methods to detect or delay wearout of nonvolatile EPROM or EEPROM memory devices, e.g. by counting numbers of erase or reprogram cycles, by using multiple memory areas serially or cyclically
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • G11C29/4401Indication or identification of errors, e.g. for repair for self repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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/76Masking faults in memories by using spares or by reconfiguring using address translation or modifications
    • 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/835Masking faults in memories by using spares or by reconfiguring using programmable devices with roll call arrangements for redundant substitutions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7211Wear leveling
    • 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
    • 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
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2211/00Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C2211/56Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
    • G11C2211/564Miscellaneous aspects
    • G11C2211/5644Multilevel memory comprising counting devices
    • 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/88Masking faults in memories by using spares or by reconfiguring with partially good memories
    • G11C29/883Masking faults in memories by using spares or by reconfiguring with partially good memories using a single defective memory device with reduced capacity, e.g. half capacity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

データを1つ以上のストレージ・チップに格納するためのメモリ・システムおよび方法は、1つ以上のメモリ・カードであって、各々が複数のストレージ・チップを有し、各チップが複数のメモリ・セルを有する複数のダイを有する、メモリ・カード、トランスレーション・モジュールを備えるメモリ・コントローラであって、トランスレーション・モジュールが複数のエントリを有する論理から仮想へのトランスレーション・テーブル(LVT)をさらに備え、LVT中の各エントリが論理アドレスを仮想ブロック・アドレス(VBA)へマッピングするように構成され、VBAが1つ以上のメモリ・カード上のメモリ・セルの群に対応する、メモリ・コントローラを備え、LVT中の各エントリは、VBAへの書き込み動作の数を追跡するための書き込み損耗レベル・カウント、およびそのLVTエントリへマッピングされたVBAに対する読み取り動作の数を追跡するための読み取り損耗レベル・カウントをさらに含む。

Description

本明細書における開示は、全般的には、ストレージ・クラス・メモリ(SCM:storage class memory)のための論理から仮想へ、および仮想から物理へのメモリ・トランスレーションに関する。
ストレージ・クラス・メモリ(SCM)は、ダイナミック・リード・アクセス・メモリ(DRAM:dynamic read access memory)の低遅延およびバイト・アドレス性を従来のストレージ・メディアの不揮発性、面密度および経済的特性と組み合わせたタイプのパーシステント・メモリである。さらにまた、SCM技術のバイト・アドレス性および低遅延を考慮すると、中央処理装置(CPU:central processing unit)は、データをDRAMにバッファリングすることなく、SCMに格納されたデータにアクセスすることができる。結果として、SCM技術は、コンピュータ・メモリと従来のストレージ・メディアとの間の区別を不鮮明にして、DRAMのない単一レベルのアーキテクチャを可能にする。従来の主メモリおよびディスク・ストレージ構成とは異なり、SCMは、単一レベルのアーキテクチャを提供する。
典型的に、SCMは、I/Oデバイスの技術を中央処理装置(単数または複数)のメモリ・バスへマッピングするために用いられる、いくつかの入力/出力(I/O:input/output)アダプタを介してコンピューティング・システムへ接続されたソリッド・ステート・デバイスの群として実装される。しかしながら、データをSCMへ書き込むにはSCM技術における細部に注意を払う必要がある。すなわち、SCMメディア・カードは、バイト・アドレス可能な何百万ものメモリ素子をもつ「N」個のダイを各々が含む、複数のパッケージのコレクションとして組織される。SCMの1つの共通する特性は、これらのメモリ・デバイスが有限の書き込み耐性を有することである。有限の書き込み耐性をもつメモリ・デバイスが意味するのは、SCMの一部が欠陥を生じ始める前に、限りなくそれに書き込むことはできないということである。どのメモリが不良またはエラーを起こしやすいかを識別することが、格納されたデータを喪失するリスクを減少させるのに役立つ。例えば、不良として識別されたメモリ・バイト(またはビット・アレイ)は、完全に回避されてよく、一方で不良と識別されないメモリ・バイトは、制限なしに用いられてよい。さらにまた、複数の実施形態における不良メモリ・バイトをスペア・バイトで置き換えることができる。
本開示の概要は、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、ストレージ・クラス・メモリ(SCM)、およびメディア管理の方法の理解を助けるために与えられて、本開示または本発明を限定する意図はない。本開示は、当業者を対象とする。本開示の様々な態様および特徴は、いくつかの事例では別々に、または他の事例では本開示の他の態様および特徴と組み合わせて有利に用いられてよいことが理解されるべきである。それに応じて、異なる効果を達成するために、コンピュータ・システム、アーキテクチャ構造、プロセッサ、SCMおよびそれらの動作の方法に変更および修正がなされてよい。
データを1つ以上のストレージ・チップに格納するためのメモリ・システムが開示され、ある実施形態におけるメモリ・システムは、1つ以上のメモリ・カードであって、各カードが複数のストレージ・チップを有し、各チップが複数のメモリ・セルを有する複数のダイを有する、メモリ・カード、トランスレーション・モジュールを備えるメモリ・コントローラであって、トランスレーション・モジュールが複数のエントリを有する論理から仮想へのトランスレーション・テーブル(LVT:logical to virtual translation table)をさらに含み、LVT中の各エントリが論理アドレスを仮想ブロック・アドレス(VBA:virtual block address)へマッピングするように構成され、VBAが1つ以上のメモリ・カード上のメモリ・セルの群、例えば、論理ブロック・アドレス(LBA:logical block address)に対応する、メモリ・コントローラを備え、LVT中の各エントリは、そのLVTエントリへマッピングされたVBAへの書き込み動作の数を追跡するための書き込み損耗レベル・カウント、およびそのLVTエントリへマッピングされたVBAに対する読み取り動作の数を追跡するための読み取り損耗レベル・カウントをさらに含む。1つ以上の実施形態において、LVT中の書き込み損耗レベル・カウントは、VBAへの書き込み動作の最大数に対応する書き込みレベル閾値を有するようにプログラマブルであり、LVTエントリ中の書き込みレベル閾値を超過する(またはそれに等しい)書き込み動作に応答して、書き込みレベル閾値を超過する(またはそれに等しい)LTVエントリに対応するメモリ・カード中のデータは、異なるVBAをもつメモリ・カード上の新しい位置へ移動される。
ある実施形態におけるメモリ・システムは、データを書き込むために利用可能なVBAを識別するVBAフリー・リストを含み、書き込み動作に応答して、新しいVBAがVBAフリー・リストから取得される。1つ以上の実施形態におけるシステムは、損耗レベル・カウントに基づいて新しいVBAをVBAフリー・リストから取得するように構成される。ある態様において、LVT中の読み取り損耗レベル・カウントは、VBAの読み取り動作の最大数に対応する読み取りレベル閾値を有するようにプログラマブルであり、LVTエントリ中の読み取りレベル閾値を超過する読み取り動作に応答して、読み取りレベル閾値を超過する(またはそれに等しい)LVTエントリに対応するメモリ・カード中のデータは、異なるVBAをもつそのメモリ・カード上の新しい位置へ書き込まれる。システムは、LVTエントリについて読み取りレベル閾値を超過する(またはそれに等しい)読み取り動作に応答して、新しいVBAをVBAフリー・リストから取得するように構成されて、読み取りレベル閾値を超過する(またはそれに等しい)LVTエントリに対応するメモリ・カード中のデータは、異なるVBAをもつそのメモリ・カード上の新しい位置へ書き込まれる。
1つ以上の実施形態におけるメモリ・システムは、データを一時的に格納するための複数のエントリを有するドリフト・バッファ、および複数のエントリを有するドリフト・テーブルを含み、各ドリフト・テーブル・エントリがドリフト・バッファ中の複数のエントリのうちの1つへインデックスするように構成され、ドリフト・テーブルの各エントリがドリフト・バッファ・インデックスをVBAへマッピングし、システムは、データをメモリ・カードへ書き込むことに応答して、データをドリフト・バッファ中のエントリへも書き込み、さらに、VBAおよび対応する論理アドレス、例えば、論理ブロック・アドレス(LBA:logical block address)をドリフト・バッファ中の対応するエントリへインデックスされたドリフト・テーブル中のエントリへ書き込むように構成される。ある実施形態におけるメモリ・システムは、VBAに対応するデータがドリフト・バッファ中に存在すれば、ドリフト・バッファから読み取るように構成される。ある態様におけるドリフト・バッファは、メモリ・カードに含まれた循環FIFOバッファである。各LVTエントリは、ドリフト・バッファがそのLVTエントリに対応するデータを含むかどうかを示すためのフィールドを含み、システムは、データがドリフト・バッファ中にあることをLVTフィールドが示すLVTエントリ上のヒットに応答して構成され、LVTエントリがドリフト・テーブル中のエントリを指し示す。ある実施形態における各LVTエントリは、ドリフト・バッファが各それぞれのLVTエントリに対応するデータを含むかどうかを示すためのドリフト・バッファ・インデックス有効フィールドを有し、システムは、リクエストに応答してデータをメモリ・カードから読み取るように構成されて、システムは、LVT中の論理アドレスをルックアップするように構成され、論理アドレスに対応するLVTエントリを見つけることに応答して、システムは、ドリフト・バッファ・インデックス有効フィールドをチェックし、ドリフト・バッファ・インデックス有効フィールドがリクエストされたデータがドリフト・バッファ中にないことを示すことに応答して、システムは、VBAをそのLVTエントリから利用し、ドリフト・バッファ・インデックス有効フィールドがリクエストされたデータがドリフト・バッファ中にあることを示すことに応答して、システムは、リクエストされたデータをドリフト・バッファから読み取る。システムは、ある態様において、ドリフト・バッファ有効フィールドがリクエストされたデータがドリフト・バッファ中にあることを示すことに応答して、LVTがドリフト・テーブル中のエントリを指し示すように構成されて、システムは、リクエストされたデータをドリフト・バッファ中の対応するエントリから取得するためにドリフト・テーブル中の情報を利用する。システムは、ある実施形態によれば、データがドリフト・バッファ・エントリから除去されることに応答して、データがそれから除去されるドリフト・バッファ・エントリに対応するLVTエントリが、ドリフト・バッファから除去されるエントリのVBAをそのLVTエントリが含むようアップデートされるように構成される。
データを1つ以上のメモリ・カードから読み取るための1つ以上の実施形態による方法が開示され、各メモリ・カードが複数のストレージ・チップを有し、各ストレージ・チップが複数のメモリ・セルを有する複数のダイを有する。方法は、ある態様において、1つ以上のメモリ・カード上に位置するデータに対するリクエストを発行することと、複数のエントリを有する論理から仮想へのトランスレーション・テーブル(LVT)中のリクエストされたデータに対する論理アドレスをルックアップすることであって、LVT中の各エントリが論理アドレスを仮想ブロック・アドレス(VBA)へマッピングし、VBAが1つ以上のメモリ・カード中のメモリ・セルの群に対応する、ルックアップすることと、LVTにおけるエントリ中のリクエストされたデータの論理アドレス、例えば、論理ブロック・アドレス(LBA)の位置を特定することに応答して、データがドリフト・バッファ中に位置するかどうかを判定するためにそのLVTエントリをチェックすることと、データがドリフト・バッファ内に位置すると判定することに応答して、リクエストされたデータをドリフト・バッファから読み取ることと、データがドリフト・バッファ中に位置しないと判定することに応答して、リクエストされたデータの論理アドレス、例えば、論理ブロック・アドレス(LBA)に対応するLVTエントリからVBAを取得して、VBAに対応するメモリ・カード中のリクエストされたデータを読み取ることとを含む。
ある実施形態における方法は、リクエストされたデータをメモリ・カードから読み取ることに応答して、LVT中の読み取りレベル・カウント・フィールドをアップデートすることをさらに含む。ある態様による方法は、LVTエントリ中の読み取りレベル・カウントをLVTエントリ中の読み取りレベル閾値フィールドと比較することと、読み取りレベル・カウントが読み取りレベル閾値に等しいか、またはそれを超過することに応答して、読み取られるべきデータを異なるVBAをもつ1つ以上のメモリ・カード上の新しい位置へ書き込むこととをさらに含む。読み取られるべきデータを異なるVBAをもつ1つ以上のメモリ・カード上の新しい位置へ書き込むことに応答して、方法は、ある実施形態において、LVTを異なるVBAでアップデートすることを含む。方法は、ある態様において、データがドリフト・バッファから除去されることに応答して、対応するLVTエントリ中のVBAをアップデートすることをさらに含む。別の態様による方法は、データをドリフト・バッファから読み取ることに応答して、あるエントリをドリフト・バッファの先頭へ移動させることを含む。
データを1つ以上のメモリ・カードへ書き込むさらなる方法が開示され、各メモリ・カードが複数のストレージ・チップを有し、各ストレージ・チップが複数のメモリ・セルを有する複数のダイを有する。1つ以上の実施形態における方法は、データを1つ以上のメモリ・カードへ書き込むためのリクエストを発行することと、利用可能なVBAをVBAフリー・リストから取得することと、データをVBAフリー・リストから取得された利用可能なVBAに対応するメモリ・カード位置へ書き込むことと、データをドリフト・バッファ中のエントリへ書き込むことと、利用可能なVBAのVBAおよびその利用可能なVBAへの対応する論理アドレスをドリフト・バッファ中のエントリに対応するドリフト・テーブル中のエントリへ書き込むこととを含む。ある態様における方法は、利用可能なVBAをもつ対応するLVTエントリを書き込むことをさらに含む。ある実施形態において、方法は、データがそれへ書き込まれるメモリ・カード上の位置に対応するVBAに対応するLVTエントリ中へ、データがそれへ書き込まれるドリフト・バッファ・エントリに対応するドリフト・テーブル・エントリを識別するドリフト・テーブル・インデックスを書き込むことと、データがドリフト・バッファ中にあることを識別するための1ビットをセットすることとをさらに含む。
本発明の前述および他の目的、特徴および利点は、同様の参照番号が全般的に本発明の例示的な実施形態の同様の部分を表す、添付図面に示されるような本発明の例示的な実施形態の以下のより詳しい記載から明らかであろう。
コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、メモリ・システムの様々な態様、特徴および実施形態、ならびにそれらの動作方法は、提供される図と併せて読まれるときによりよく理解されるであろう。コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、SCM、およびそれらの動作方法の態様、特徴、および/または様々な実施形態を示す目的で実施形態が図に提供されるが、特許請求の範囲は、示される通りの配置、構造、特徴、態様、アセンブリ、サブアセンブリ、システム、回路、実施形態、方法、プロセス、技法、および/またはデバイスに限定されるべきではなく、示される配置、構造、システム、アセンブリ、サブアセンブリ、特徴、態様、方法、プロセス、技法、回路、実施形態、およびデバイスは、単独で、もしくは他の配置、構造、アセンブリ、サブアセンブリ、システム、特徴、態様、回路、実施形態、方法、技法、プロセス、および/またはデバイスと組み合わせて用いられてよい。
本開示の実施形態による、コンピュータ・システムを示す機能ブロック図である。 本開示の実施形態による、メモリ・システムおよびコントローラ例を示す機能ブロック図である。 図2Aのメモリ・システムの構造例を描く。 メモリ・システムにおいて論理アドレスを物理アドレスへトランスレートするハードウェアおよびプロセスのある実施形態のブロック図を示す。 例えば、図2Aおよび2Bのメモリ・システムのような、メモリ・システムにおいて論理アドレスのトランスレーションを含むホスト読み取りを行うための方法のある実施形態のフローチャートである。 例えば、図2Aおよび2Bのメモリ・システムのような、メモリ・システムにおいて論理アドレスのトランスレーションを含むホスト書き込みを行うための方法のある実施形態のフローチャートである。 メモリ・システム、例えば、図2Aおよび2Bのメモリ・システムにおいて仮想アドレスを物理アドレスへトランスレートするための方法およびハードウェアのある実施形態の概観のブロック図である。 図2Aおよび2Bのメモリ・システムの仮想ブロック・アドレスの物理アドレスへのトランスレーションのための方法例を示すフローチャートである。 図2Aおよび2Bのメモリ・システムの仮想ブロック・アドレスの物理アドレスへのトランスレーションにおける使用のためのトランスレーション・テーブル例を示す。 図2Aおよび2Bのメモリ・システムのスクラブ・プロセスのための方法例を示すフローチャートである。 図2Aおよび2Bのメモリ・システムのメモリ修復処置のための方法例を示すフローチャートである。 図2Aおよび2Bのメモリ・システムの異なるタイプのメモリ修復処置のためのシナリオ例を示す。 図2Aおよび2Bのメモリ・システムの異なるタイプのメモリ修復処置のためのシナリオ例を示す。 図2Aおよび2Bのメモリ・システムの異なるタイプのメモリ修復処置のためのシナリオ例を示す。
以下の記載は、本発明の全般的な原理を示すためになされ、特許請求の範囲において請求される発明概念を限定することは意図されない。以下の詳細な記載において、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、キャッシュ、メモリ・システムおよびそれらの動作方法の理解をもたらすために多くの詳細が提示される。しかしながら、コンピュータ・システム、コンピュータ・アーキテクチャ構造、プロセッサ、キャッシュ、メモリ・システムおよびそれらの動作方法の異なる多くの実施形態がそれらの具体的な詳細なしに実行されてよく、特許請求の範囲および開示は、本明細書に具体的に記載されて示される配置、構造、システム、アセンブリ、サブアセンブリ、回路、特徴、態様、プロセス、方法、技法、実施形態、および/または詳細に限定されるべきではないことが当業者によって理解されるであろう。さらに、本明細書に記載される特定の特徴、態様、配置、システム、実施形態、技法などを他の記載される特徴、態様、配置、システム、実施形態、技法などと、様々な可能な組み合わせおよび配列の各々で組み合わせて用いることができる。
本明細書に別に具体的に定義されない限り、すべての用語は、明細書から示唆される意味、ならびに当業者によって理解される、および/または辞書、論文などで定義されるような意味を含めて、それらの可能な限り最も広い解釈を与えられるべきである。明細書および添付される特許請求の範囲に用いられるように、単数形「a(ある)」、「an(ある)」、および「the(前記)」は、別に指定されない限り、複数の指示対象を含むこと、および用語「備える(comprises)」および/または「(備えている(comprising)」は、本明細書および特許請求の範囲に用いられるときに、述べられる特徴、整数、態様、配置、実施形態、構造、システム、アセンブリ、サブアセンブリ、ステップ、動作、要素、および/またはコンポーネントの存在を指定するが、1つ以上の他の特徴、整数、態様、配置、実施形態、構造、システム、アセンブリ、サブアセンブリ、ステップ、動作、要素、コンポーネント、および/またはそれらの群の存在または追加を排除しないことも注目されなければならない。
以下の考察は、当業者に明らかであるはずの、プロセッサ、マイクロプロセッサ・システムおよびアーキテクチャ、ならびにアドレス・トランスレーション技法およびシステムを含めて、情報処理システムの従来の特徴を省略するか、または単に手短に記載する。当業者は、プロセッサの一般的なアーキテクチャ、および特にアドレス・トランスレーション技法およびシステム、ならびにそれらの動作を熟知していることが仮定される。番号付けられた要素は、要素が導入される図に従って番号付けられ、典型的に、後に続く図を通してその番号によって参照されることが留意されるだろう。
図1は、本発明のある実施形態による、ネットワーク130を介して別のコンピュータ100-Bへ接続されたコンピュータ100-Aのハイレベル・ブロック図表現を描く。用語「コンピュータ」は、本明細書において単に便宜上用いられ、様々な実施形態では携帯電話、タブレット、サーバ・コンピュータなどのような、より一般的なデータ・ハンドリング・システムである。本発明の実施形態のメカニズムおよび装置は、いずれの適切なデータ・ハンドリング装置にも等しく当てはまる。
コンピュータ100の主要コンポーネントは、1つ以上のプロセッサ101、主メモリ・システム102、端末インターフェース111、ストレージ・インターフェース112、I/O(入力/出力)デバイス・インターフェース113、およびネットワーク・アダプタまたはインターフェース114を備えてよく、それらのすべてがメモリ・バス103、I/Oバス104、およびI/Oバス・インターフェース装置105を介したコンポーネント間通信のために、直接的または間接的に、通信可能に結合される。コンピュータ100は、本明細書では一般にプロセッサ101と呼ばれる、1つ以上の汎用プログラマブル中央処理装置(CPU)101A、101B、101C、および101Dを含む。ある実施形態において、コンピュータ100は、比較的大きいシステムに典型的な複数プロセッサを含む。しかしながら、別の実施形態ではコンピュータ100は、代わりに、単一のCPUシステムであってもよい。各プロセッサ101は、主メモリ・システム102に格納された命令を実行し、1つ以上のレベルのオンボード・キャッシュを備えてよい。
ある実施形態において、主メモリ・システム102は、データおよびプログラムを格納し、またはエンコードするためのランダム・アクセス半導体メモリ(例えば、DRAM、SCM、もしくは両方)、ストレージ・デバイス、またはストレージ・メディアを備えてよい。別の実施形態では、主メモリ・システム102は、コンピュータ100の仮想メモリ全体を表し、コンピュータ100へ結合された、またはネットワーク130を介して接続された他のコンピュータ・システムの仮想メモリも含んでよい。主メモリ・システム102は、概念的には単一のモノリシック・エンティティであるが、他の実施形態において、主メモリ・システム102は、キャッシュおよび他のメモリ・デバイスの階層のような、より複雑な配置である。例えば、メモリは、複数レベルのキャッシュ中に存在してもよく、これらのキャッシュが、一方のキャッシュが命令を保持するのに対して他方が非命令データを保持するように、1つまたは複数のプロセッサにより用いられる機能によってさらに分割されてよい。メモリは、様々ないわゆる不均一メモリ・アクセス(NUMA:non-uniform memory access)コンピュータ・アーキテクチャのいずれにおいても知られるように、さらに分散されて、異なるCPUまたはCPUのセットと関連付けられてもよい。
主メモリ・システム102は、オペレーティング・システム(OS:operating system)150、アプリケーション160、および/または他のプログラム命令を格納し、またはエンコードする。オペレーティング・システム(OS)150、アプリケーション160などがコンピュータ100中の主メモリ・システム102内に含まれるとして示されるが、他の実施形態では、それらのいくつかまたはすべてが異なるコンピュータ・システム上にあってよく、例えば、ネットワーク130を介して、遠隔にアクセスされてもよい。コンピュータ100は、仮想アドレッシング・メカニズムを用いてもよく、このメカニズムは、コンピュータ100のプログラムが、複数のより小さいストレージ・エンティティへのアクセスの代わりに、あたかもそれらが大きい単一のストレージ・エンティティへのアクセスのみを有するように振舞うことを許容する。従って、オペレーティング・システム150、アプリケーション160、または他のプログラム命令が主メモリ・システム102内に含まれるとして示されるが、これらの要素は、必ずしもすべてが同時に同じストレージ・デバイス中に完全に含まれるわけではない。さらに、オペレーティング・システム150、アプリケーション160、他のプログラム命令などが別々のエンティティであるとして示されるが、他の実施形態では、それらのいくつか、それらのいくつかの部分、またはそれらのすべてが一緒にパッケージされてもよい。
ある実施形態において、オペレーティング・システム150、アプリケーション160、および/または他のプログラム命令は、以下にさらに記載されるような機能を実行するために、プロセッサ101上で実行する命令もしくはステートメント、またはプロセッサ101上に実行する命令もしくはステートメントによって解釈される命令もしくはステートメントを備える。かかるプログラム命令をプロセッサ101によって走らせることが可能であるときに、かかるコンピュータ100は、かかる命令を実行するように構成された特定のマシンになる。例えば、コンピュータ100Aに主メモリ・システム102を第1の部分へ、および冗長な第2の部分へミラーリングさせる、メモリ・ミラーリング・アプリケーション160Aのための命令が1つ以上のコンピュータ100A上にロードされてよい。別の例では、オペレーティング・システム150によって主メモリ・システム102がミラーリングされてよい。別の例では、主メモリ・システム102が、ハイパーバイザのような、バーチャライザ・アプリケーション170によってミラーリングされてよい。
1つ以上のプロセッサ101は、ディスプレイへ出力するための画像(例えば、GUI)を構築する汎用プログラマブル・グラフィックス処理装置(GPU:graphics processor unit)として機能してよい。GPUは、表示画像またはユーザ・インターフェースを作成するために、1つ以上のアプリケーション160と一緒に作動して、画素を、例えば、ディスプレイ、タッチ・スクリーンなどの上でどのように操作すべきかを判定する。最終的に、画像(例えば、GUIなど)がユーザに表示される。プロセッサ101およびGPUは、別個のコンポーネントであってもよく、または単一のコンポーネントに統合されてもよい。
メモリ・バス103は、プロセッサ101、主メモリ・システム102、およびI/Oバス・インターフェース装置105の間でデータを転送するためのデータ通信パスを提供する。I/Oバス・インターフェース装置105は、データを様々なI/O装置へおよびそれらから転送するためのシステムI/Oバス104へさらに結合される。I/Oバス・インターフェース装置105は、システムI/Oバス104を通して、I/Oプロセッサ(IOP:I/O processor)またはI/Oアダプタ(IOA:I/O adapter)としても知られる、複数のI/Oインターフェース装置111、112、113、および114と通信する。I/Oインターフェース装置は、様々なストレージおよびI/Oデバイスとの通信をサポートする。例えば、端末インターフェース装置111は、ユーザ出力デバイス(例えば、ビデオ・ディスプレイ・デバイス、スピーカ、および/またはテレビジョン・セット)ならびにユーザ入力デバイス(例えば、キーボード、マウス、キーパッド、タッチパッド、トラックボール、ボタン、ライトペン、もしくは他のポインティング・デバイス)を備えてよい、1つ以上のユーザI/Oデバイス121の接続をサポートする。ユーザは、入力データおよびコマンドをユーザI/Oデバイス121およびコンピュータ100に提供するために、ユーザ入力デバイスをユーザ・インターフェースを用いて操作してよく、ユーザ出力デバイスを介して出力データを受信してよい。例えば、ユーザ・インターフェースは、ディスプレイ・デバイス上に表示される、スピーカを介して再生される、もしくはプリンタを介して印刷されるなど、ユーザI/Oデバイス121を介して提示されてよい。ユーザ・インターフェースは、コンテンツをユーザに視覚的に(例えば、スクリーンを介して)、聞こえるように(例えば、スピーカを介して)、および/またはタッチ(例えば、振動など)を介して提供するユーザ・インターフェースであってよい。いくつかの実施形態では、ユーザがコンピュータ・アプリケーション160データ、機能などと対話する、それらを入力するか、または操作する方法でコンピュータ100を動かしてよいので、コンピュータ100は、それ自体がユーザ・インターフェースとしての役割を果たす。
ストレージ・インターフェース装置112は、1つ以上のローカル・ディスク・ドライブまたは2次ストレージ・デバイス125の接続をサポートする。ある実施形態において、2次ストレージ・デバイス125は、回転磁気ディスク・ドライブ・ストレージ・デバイスであるが、他の実施形態では、それらは、ホスト・コンピュータに単一の大型ストレージ・デバイスのように見えるように構成されたディスク・ドライブのアレイ、またはその他のタイプのストレージ・デバイスである。主メモリ・システム102のコンテンツ、またはそのいずれかの部分が、必要に応じて、2次ストレージ・デバイス125へ格納されて、それからリトリーブされてよい。ローカル2次ストレージ・デバイス125は、典型的に、主メモリ・システム102より遅いアクセス時間を有し、つまり、主メモリ・システム102から/へデータを読み取るおよび/または書き込むのに必要な時間は、ローカル2次ストレージ・デバイス125から/へデータを読み取るおよび/または書き込むのに必要な時間より少ない。
I/Oデバイス・インターフェース113は、様々な他の入力/出力デバイス、またはプリンタもしくはファックス機のような、他のタイプのデバイスのいずれにもインターフェースを提供する。ネットワーク・アダプタ114は、コンピュータ100から、多くの他のコンピュータのような、他のデータ・ハンドリング・デバイスへ1つ以上の通信パスを提供し、かかるパスは、例えば、1つ以上のネットワーク130を備えてよい。メモリ・バス103は、プロセッサ101、主メモリ・システム102、およびI/Oバス・インターフェース105の間の直接通信パスを提供する比較的簡易な単一のバス構造として図2に示されるが、実際には、メモリ・バス103は、様々な形態、例えば、階層、スターまたはウェッブ構成におけるポイント・ツー・ポイント・リンク、複数の階層バス、パラレルおよび冗長パスのいずれか、あるいはその他の適切なタイプの構成に配置されてよい、複数の異なるバスまたは通信パスを備えてよい。さらにまた、I/Oバス・インターフェース105およびI/Oバス104が単一のそれぞれの装置として示されるが、コンピュータ100は、実際には、複数のI/Oバス・インターフェース装置105および/または複数のI/Oバス104を含んでよい。システムI/Oバス104を様々なI/Oデバイスへ走る様々な通信パスから分離する、複数のI/Oインターフェース装置が示されるが、他の実施形態では、I/Oデバイスのいくつかまたはすべてが1つ以上のシステム・バスへ直接に接続される。
I/Oインターフェース113は、I/Oバス104上の1つのプロトコルのデータを別のバス上の別のプロトコルに適合させ、または変換するための電子コンポーネントおよびロジックを含んでよい。それゆえに、I/Oインターフェース113は、以下には限定されないが、トークンリング、ギガバイト・イーサネット、イーサネット、ファイバ・チャネル、SSA、ファイバ・チャネル・アービトレーテッド・ループ(FCAL:Fiber Channel Arbitrated Loop)、シリアルSCSI、ULTRA3 SCSI,インフィニバンド、FDDI、ATM、1394、ESCON、ワイヤレス・リレー、Twinax、LAN接続、WAN接続、ハイパフォーマンス・グラフィックスなどを含む1つ以上のプロトコルを用いて、多種多様なデバイスをコンピュータ100へ、および互いに、例えば、以下には限定されないが、テープ・ドライブ、光ドライブ、プリンタ、ディスク・コントローラ、他のバス・アダプタ、PCIアダプタ、ワークステーションへ接続してよい。別個のエンティティとして示されるが、複数のI/Oインターフェース装置111、112、113、および114、またはI/Oインターフェース装置111、112、113、および114の機能性が同様のデバイス中に統合されてもよい。
様々な実施形態において、コンピュータ100は、マルチユーザ・メインフレーム・コンピュータ・システム、シングルユーザ・システム、サーバ・コンピュータ、ストレージ・システム、または直接ユーザ・インターフェースをほとんどもしくは何も有さないが、リクエストを他のコンピュータ・システム(クライアント)から受信する同様のデバイスである。他の実施形態では、コンピュータ100は、デスクトップ・コンピュータ、ポータブル・コンピュータ、ラップトップもしくはノートブック・コンピュータ、タブレット・コンピュータ、ポケット・コンピュータ、電話、スマートフォン、ページャ、自動車、テレコンファレンス・システム、アプライアンス、またはいずれか他の適切なタイプの電子デバイスとして実装される。
ネットワーク130は、いずれか適したネットワークまたはネットワークの組み合わせであってよく、コンピュータ100Aおよび少なくともコンピュータ100Bへ/からのデータおよび/またはコードの通信に適したいずれか適切なプロトコルをサポートしてよい。様々な実施形態において、ネットワーク130は、コンピュータ100へ直接的あるいは間接的に接続されたデータ・ハンドリング・デバイスまたはデータ・ハンドリング・デバイスの組み合わせを表してよい。別の実施形態では、ネットワーク130は、ワイヤレス通信をサポートしてよい。代わりにおよび/または加えて、ネットワーク130は、電話線もしくはケーブルのような、ハードワイヤード通信をサポートしてよい。ある実施形態において、ネットワーク130は、インターネットであってよく、インターネット・プロトコル(IP:Internet Protocol)をサポートしてよい。ある実施形態において、ネットワーク130は、ローカル・エリア・ネットワーク(LAN:local area network)またはワイド・エリア・ネットワーク(WAN:wide area network)として実装される。ある実施形態において、ネットワーク130は、ホットスポット・サービス・プロバイダ・ネットワークとして実装される。別の実施形態では、ネットワーク130は、イントラネット上に実装される。ある実施形態において、ネットワーク130は、いずれか適切なセルラ・データ・ネットワーク、セル・ベース無線ネットワーク技術、またはワイヤレス・ネットワークとして実装される。ある実施形態において、ネットワーク130は、いずれか適したネットワークまたはネットワークの組み合わせとして実装される。1つのネットワーク130が示されるが、他の実施形態では、(同じかまたは異なるタイプの)いくつものネットワークが存在してもよい。
図1は、コンピュータ100の代表的な主要コンポーネントを描くことが意図される。しかし、個別のコンポーネントが図1に表現されるよりさらに複雑であってもよく、図1に示されるもの以外に、またはそれらに加えてコンポーネントが存在してもよく、かかるコンポーネントの数、タイプ、および構成が変化してもよい。かかる追加的な複雑さまたは追加的な変化のいくつかの特定の例が本明細書に開示され、これらは、例を目的とするに過ぎず、必ずしもかかる変化のみではない。例えば、本発明の様々な実施形態によるコンピュータ・システム100上に実装する様々なプログラム命令は、様々なコンピュータ・アプリケーション、ルーチン、コンポーネント、プログラム、オブジェクト、モジュール、データ構造などを用いることを含めて、いくつかの仕方で実装されてよい。
図2Aを次に参照すると、メモリ・コントローラ200を介してプロセッサ101と通信する主メモリ・システム例102の概略ブロック図が示される。図2Aに示されるように、メモリ・モジュール(単数または複数)またはカード(単数または複数)102(例えば、SCMメディア・カード)は、データを複数「K」個のパッケージ(すなわち、チップ)252a~k(例えば、K=24)に格納するように構成されて、各パッケージが複数「N」個のダイ251a~n(例えば、N=16)を含む。ある実施形態における各パッケージは、同じ数「N」個のダイ(例えば、N=8、16など)を含むことができる。ダイ251a~nの各々は、「M」個のメモリ・セル、特にメモリ・セル250a~mを含む。各ダイ中のいくつかのメモリ・セル250は、「X」個のメディア置き換え単位(MRU:media replacement unit)群253a~pにグループ分けされてよく、ある実施形態における各ダイは、固定された数のMRU群253を含むことができる。例えば、ダイ251中に16(X=16)のMRU群がありうるであろう。1つ以上の実施形態におけるメモリ・モジュール/カード102は、データを格納する、例えば、後述されるようにデータを一時的に格納するためのドリフト・バッファ260も含む。ある態様におけるメモリ・モジュール/カード102は、後述されるようにエントリをドリフト・バッファ260へマッピングするためのドリフト・テーブル230も含む。
さらに、図2Bに示されるように、各MRU群253a~pは、複数のMRU254a~nを備えてよく、各MRUが複数「B」個のビット・アレイを備え、ビット・アレイ中の各ビットが1つのメモリ・セルを備える。すなわち、図2Bに示されるように、ある実施形態におけるMRU群は、ビット・アレイと呼ばれる128の列に分けられる。MRU群は、MRUと称される行に水平方向に分けられる。各MRUは、128のビット・アレイを有する。図2Bにおける各ボックスを100万ビットのビット・アレイとすることができる。さらにまた、各MRUが「P」個のページを含み、ページは、SCMにおいて書き込みまたは読み取ることができるデータの単位である(例えば、16バイトまたは128ビット)。ある実施形態では、MRUが100万ページを含むことができる。ページは、読み取り・書き込み動作の間にアクティブなビット・アレイからのビットを用いる。各ページがメモリ・セルをそれらから取るアクティブなビット・アレイの数は、メモリ・モジュール/カード102において必要とされるメモリ・セルの冗長度および/または(以下に記載されるような)スクラブ・プロセスに依存してよい。例えば、各MRUにおいて、障害を起こした/エラーが発生しやすいビット・アレイとのスワッピング動作のためにスペアとして4つのビット・アレイが確保されれば、各ページは、書き込み・読み出し動作の間に、128のビット・アレイのうちの124のアクティブなビット・アレイからのビットを含むであろう(MRU中の128のビット・アレイ-4つの確保されたビット・アレイ=124のアクティブなビット・アレイ)。これは、1つのページが15.5バイトの実データを格納できることを意味する。以下に記載されるように、単一のパッケージ中のすべてのMRU群およびダイからのスペアMRUが、そのパッケージ内の障害を起こしたMRUを置き換えることができる。
ビット・アレイ当たり100万ビット(10241024)を用いることが本開示に開示される実施形態例のための設計上の選択であることに留意すべきである。しかしながら、本開示は、それほど限定的ではなく、ビット・アレイ当たりいくつものビット(例えば、50万、200万、300万など)が用いられてもよい。ビット・アレイ当りのビット数が、その結果、MRUの数、および、それに従って、テーブル(例えば、チップ選択テーブル(CST:Chip Select Table)、メディア修復テーブル(MRT:Media Repair Table)、ビット・アレイ修復テーブル(BART:Bit Array Repair Table)など)のサイズを決定するために用いられる。
メモリ・モジュール/カード102の総容量を(バイトで測定された)KCに従って決定でき、Cは、各パッケージの容量である。メモリ・モジュール/カード102のKパッケージのうちから、いくつかのパッケージがデータを格納するために用いられてよく、他のまたは残りのパッケージは、エラー訂正コード(ECC:error-correcting code)およびデータ・マネジメントに用いられるメタデータのために用いられてよい。エラー訂正コードは、データ・エリアに格納されたデータ中に含まれるエラーを訂正するために用いられる。各メモリ・モジュール/カード102(例えば、SCMメディア・カード)は、zビットのデータ幅をもつI/Oデータ、および容量に依存する適切なサイズのアドレス・ビットを有する。SCMは、例えば、相変化メモリ(PCM:Phase Change Memory)、抵抗性RAM(RRAM:Resistive RAM)、またはいかなる適切な不揮発性ストレージであってよい。
図2Aは、メモリ・コントローラ200がメモリ・モジュール/カード102外に位置することを示すが、本開示は、それほど限定的ではなく、コントローラ200がメモリ・モジュール/カード102の一部であってもよい。図2Aに示されるように、コントローラ200は、アドレス・トランスレーション・モジュール202、スクラブ・モジュール204、およびメディア修復モジュール206のうちの少なくとも1つを含んでよい。モジュール202、204、206は、ソフトウェア、ファームウェア、ハードウェア、またはソフトウェア、ファームウェアおよびハードウェアのうちの2つ以上の組み合わせで実装されてよい。他の例では、コントローラ200が追加的なモジュールもしくはハードウェア装置を含んでもよく、またはより少ないモジュールもしくはハードウェア装置を含んでもよい。コントローラ200は、マイクロプロセッサ、デジタル信号プロセッサ(DSP:digital signal processor)、特定用途向け集積回路(ASIC:application specific integrated circuit)、フィールド・プログラマブル・ゲート・アレイ(FPGA:field programmable gate array)、または他のデジタル・ロジック回路を含んでよい。
アドレス・トランスレーション・モジュール202は、(以下に考察されるように)プロセッサ(単数または複数)101によって用いられる論理ブロック・アドレス(LBA)および/または仮想ブロック・アドレス(VBA)をメモリ・モジュール/カード102の物理ブロック・アドレス(PBA:physical block address)と関連付けてよい。例えば、アドレス・トランスレーション・モジュール202が、読み取りまたは書き込みコマンドの一部として、LBAをプロセッサから受信することに応答して、アドレス・トランスレーション・モジュール202が論理から仮想へのテーブル(LVT:Logical-to-Virtual Table)210を介してVBAをルックアップしてよく、アドレス・トランスレーション・モジュール202は、次に、受信されたLBAと一致するメモリ・モジュール/カード102のPBAを決定するためにVBAを用いてよい。いくつかの例では、アドレス・トランスレーション・モジュール202は、(以下に記載されるように)VBAからPBAへのトランスレーションを行うために階層化された仮想から物理へのテーブル構造(V2P)を用いてよい。例えば、アドレス・トランスレーション・モジュール202は、チップ選択テーブル(CST)220、メディア修復テーブル(MRT)222、およびビット・アレイ修復テーブル(BART)224を含んでよい。
スクラブ・モジュール204は、メモリ・モジュール/カード102中の障害またはエラーを検出して訂正するために構成されてよい。メモリにおけるエラーは、アルファまたは他の粒子によって、またはメモリ・セル中の物理欠陥によって生じることがある。本明細書では、用語「スクラビング」は、一般に、メモリ・システムにおいてエラーを検出して、訂正可能なエラーを訂正するプロセスを指す。エラーは、ソフト(または一時)エラーならびに、一定の環境では、ハード・エラーを含み得る。様々な実施形態において、メモリ・スクラビングは、以下に記載されるようにメモリにおけるビット・エラーを検出して訂正するプロセスを用いてよい。CPUからの正規のメモリ・リクエストをディスターブせず、従って、パフォーマンスの低下を防止するために、スクラビングは、メモリ・モジュール/カード102の特定の部分を(以下に記載される)スクラブ・プロセスのためにサービスから外すことによってなされてよい。スクラビングは、通常の読み取りおよび/または書き込み動作からなってよいため、スクラビングのない動作と比較してメモリによる電力消費を増加させることがある。それゆえに、様々な実施形態によれば、スクラビングは、連続してではなく周期的に行われる。多くのサーバでは、スクラブのためのタイミングまたは周期がBIOSセットアップ・プログラム中に構成されてよい。
一定の実施形態において、スクラブ・モジュール204は、エラー率テーブル(ERT:error rate table)240を含んでよい。エラー率テーブルは、メモリ・モジュール/カード102におけるメモリ欠陥またはエラーに関する情報を格納するように構成されてよい。一定の実施形態において、ERTは、メモリ・モジュール/カード102中に含まれるパッケージの各々に対して(例えば、メディア・カードの24パッケージに対して24ERT)が割り当てられてよい。
メディア修復モジュール206は、ERT(単数または複数)に格納された情報を解析することによって、メモリ・モジュール/カード102におけるエラーまたは欠陥を修復するために構成されてよい。例えば、メディア修復モジュール206は、ERTサマリ・テーブルを作成して、メモリ・コントローラに適切な訂正処置、例えば、メモリ・モジュール/カード102の1つ以上の障害を起こした部分の、適正に機能するスペアとの置き換え(例えば、欠陥のあるビット・アレイ、MRU、MRU群、ダイ、またはパッケージを適切なスペアと置き換える)、様々なトランスレーション・テーブルの修正、スペア・メモリ部分/位置の検索、スペア・メモリ部分/位置の作成、(将来の置き換えのためのスペアの位置を特定する確からしさを増加させるための)スペア・メモリ部分/位置のリバランシングを行わせることができるが、これらに限定されない。機能的な正確さを考慮し、一方ではメモリ・モジュール/カード102のパフォーマンスに悪影響を与えうるであろう置き換えを回避するようにある実施形態におけるメディア修復モジュール206を構成することができる。
図3を次に参照すると、あるメモリ・システムにおけるハードウェア、および、論理アドレスを仮想アドレスへトランスレートし(論理から仮想への(L2V)トランスレーション)、仮想アドレスをメディア・カード390上の実または物理アドレスへトランスレートできる(仮想から物理への(V2P)トランスレーション)プロセス・フローのある実施形態の概要を示すブロック図である。ホストは、論理装置番号(LUN:Logical Unit Number)および論理装置番号オフセット(LUNオフセット)を介してメモリ/メディア・カード390にアドレスする。変換テーブル360は、これらのLUNおよびLUNオフセットを論理ブロック・アドレス(LBA)へトランスレートする。図3におけるLBAテーブル360に示されるように複数のLUNがサポートされる。ある実施形態では、ホストがアクセスできる4KBブロックごとにLBAがある。LBAは、論理から仮想へのトランスレーション・テーブル(LVT)370へフィードされて、LVT370が各LBAを仮想エントリまたはアドレス、例えば、仮想ブロック・アドレスまたはVBAへ変換またはトランスレートする。VBAは、メディア・テーブル380へフィードされて、そこで本開示の後の部分で詳細に説明されるように、仮想アドレス、例えば、VBAがメディア・カード390上の物理また実アドレスへトランスレートされる。1つ以上の実施形態における仮想から物理へのトランスレーションは、メディアを修復するためのチップ選択テーブル(CST)、メディア修復テーブル(MRT)、およびビット・アレイ修復テーブル(BART)を含む。
1つ以上の実施形態におけるLVT370は、テーブル構造として配置されて、複数のエントリ372を有する。ある実施形態において、LVT370中の各エントリ372は、仮想ブロック・アドレス(VBA)またはドリフト・テーブル・インデックス、書き込み損耗レベル・カウント・データ、および読み取り損耗レベル・カウント・データを含む。LBAごとに、(LBAがトリミングされていないと仮定して)VBAへの1:1マッピングがある。LVT中には他のメタデータを含むことができる。ある実施形態におけるLVT370は、DRAMに格納されて、ある態様では、各エントリのフィールド・サイズが小さく、例えば、エントリ当たり8バイトである。ある実施形態におけるLVT370は、メモリ・コントローラ200中に位置して、ある態様では、それを図2Aに示されるアドレス・トランスレーション・モジュール202中に含むことができる(図2A中のLVT210)。以下の表1は、LVTエントリ372の例を示す。
Figure 2023510709000002
表1におけるLVTエントリは、単に一例であり、LVT370およびLVTエントリ372について他のストレージ・メディア、フィールド、およびフィールド・サイズが企図される。メディア・カード390上のメディアは、いくつかの位置を経時的に損耗させ、従って、1つ以上の実施形態において、設計がオーバープロビジョンすることになろう。メディアが損耗することを考慮するためにあるべきオーバープロビジョンは、少量とすべきであり、従って、一態様によれば、LBAの数は、典型的にVBAの数よりわずかに少なく、例えば、10%少なくなるであろう。従って、例えば、メディア・カード390が614M VBAをサポートすれば、LVT370が614Mに近いエントリを有するであろう。ある実施形態において、ホストは、メモリの全サイズがその実サイズより小さいように指示される。
メディア・カード390は、書き込み動作が同じアドレス/位置へ行われることを許可するが、書き込みは、メディア・カード390上の隣接エリアをディスターブしうるので、ある実施形態において、新しいデータは、メディア・カード390上の異なる位置へ書き込まれる。ある態様において、メディア・カード390上のいかなる位置も、閾値数、例えば、10,000回より多く、メディア・カード390上のその他の位置より多くは書き込まれない。例えば、ある実施形態において、メディア・カード390上のある位置、例えば、メモリ・セルのあるブロックは、メディア・カード上の別の位置が書き込まれる回数の「Y」倍は書き込まれない。LVT370中の書き込み損耗レベル・フィールド(表1におけるビット39:32)は、動作のこの態様を制御するために用いられる。読み取りもメディアをディスターブしうるため、位置の「N」読み取り後にはデータが新しい位置/アドレスへ再書き込みされるべきである。LVT370は、そのブロックが最後に書き込まれて以来、そのブロックに発生した読み取りの数を追跡して記録するための読み取り損耗レベル・カウント(表1中のビット53:40)を有する。ある値、例えば、閾値を超過する読み取りカウントに応答して、そのブロックは、新しいVBAを有するであろうメモリ・カード上の新しい位置へ移動され、および/またはコピーされるであろう。例えば、10,000の読み取り後に、ハードウェアは、データが対応する新しいVBAを有するメモリ・カード上の新しい位置へコピーされ/書き込まれる、摩耗レベル移動を行うであろう。
メモリ・カード上の新しい位置が書き込まれた後に、ある時間、一般にミリ秒、例えば、10ミリ秒にわたってそれが読み取られるべきではない。メモリ・カード上の新しい位置の読み取りを待機する潜在的な遅延を克服するために、ある実施形態ではドリフト・バッファが設けられる。ある実施形態におけるドリフト・バッファ260は、図2Aに示されるメディア・カード102上に含まれる。ドリフト・バッファは、好ましくは、新しく書き込まれたデータのコピーを保持するために用いられるFIFOバッファであり、その結果、新しく書き込まれたメディアが読み取られるべきではないタイムフレームの間にはドリフト・バッファをメディア・カード390の代わりに読み取ることできる。ドリフト・バッファは、複数のエンティティを有し、ある実施形態では、VBAとドリフト・バッファ中のエントリとを相関付けるための、テーブルまたはインデックス、例えば、ドリフト・バッファ・インデックスまたはドリフト・テーブル330を有する。データがメディア、例えば、メモリ・カードへ新たに書き込まれるときに、データは、ドリフト・バッファ・エントリへも書き込まれて、VBAが、ドリフト・バッファ・エントリに対応するドリフト・テーブル・エントリ332に格納される。ドリフト・テーブル330は、VBAおよび対応するLBAを格納する。例えば、ドリフト・テーブル・エントリがドリフト・バッファ・エントリへインデックスして、VBAを対応するLBAへマッピングする。データがドリフト・バッファへ書き込まれるときに、LVT370におけるVBAフィールドは、VBAの代わりに、ドリフト・テーブル・インデックスを用いてドリフト・テーブル・エントリ372を指し示す。読み出し動作が処理されて、LBAに対応するLVT中のエントリが、データがドリフト・バッファ中にあることを示してセットされたドリフト・バッファ・インデックス有効ビットを有するときに、システムは、ドリフト・バッファ・エントリを識別して、データを対応するドリフト・バッファから読み取るためにドリフト・テーブルを用いる。ドリフト・バッファ・インデックス有効ビットがセットされたその環境では、ある実施形態において、LVTは、VBAを返さない。ある実施形態におけるドリフト・テーブル330は、LVT370より小さく、コントローラ200および/またはメディア・カード102/390上のDRAMとすることができる。ドリフト・テーブル・エントリ例332が以下の表2に示される。
Figure 2023510709000003
データがドリフト・バッファからエージアウトされたときには、ドリフト・テーブル330からのVBAフィールドがLVT370中の対応するエントリ372へコピーされる。ドリフト・テーブル330およびLVT370のテーブル構造は、ドリフト・バッファが読み取りキャッシュでもあるように利用することを容易にする。読み取りキャッシュとして利用されるときに、ドリフト・バッファは、書き込みおよび読み取りの両方または先読みで取り込みが行われるであろう。また、しばしば利用されるデータがドリフト・バッファ中に残る時間をドリフト・テーブル330アップデートを用いて延長することができ、利用されているデータがドリフト・バッファ中に残ることになろう。例えば、読み取りヒット・データをドリフト・バッファの先頭へ移動できるであろう。このようにして、しばしば読み取られるデータがドリフト・バッファに留まる時間を延長することができる。
図3は、VBAフリー・リスト340も示す。VBAフリー・リスト340は、いくつかのエントリ342を有する。関連付けられたLBAに対するデータをアクティブに格納しないVBAは、VBAフリー・リスト340上に維持されて、ある実施形態では、損耗レベルに基づいて組織化され、または優先順位付けされる。書き込みコマンドがデータを格納するためにフリーVBAを必要とするときに、フリーVBAがVBAフリー・リスト340から取得される。書き込みコマンドが前に書き込まれたLBAを対象とすれば、(前に用いられたLBAに対応する)前に用いられたVBAがVBAフリー・リスト340に追加される。VBAフリー・リスト340は、コントローラ200および/またはメディア・カード102/390上に存在してよい。以下の表3は、VBAフリー・リスト340中のフリー・リスト・エントリを示し、エントリは、VBAによってインデックスされる。
Figure 2023510709000004
図4を次に参照すると、例えば、論理アドレス、例えば、LBAを仮想ブロック・アドレスもしくはVBAへ変換し、および/またはトランスレートすることを含む、ホスト読み取りコマンドを処理する方法例400を示すフローチャートが開示される。図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装の例示的なアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図中の各ブロックは、指定された論理機能(単数または複数)を実装するための1つ以上の実行可能な命令を備える、モジュール、セグメント、または命令の一部を表してよい。いくつかの代わりの実装では、ブロック中に記された機能が図中に記されたのとは異なる順序で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または関与する機能性に依存して、複数のブロックがときには逆の順序で実行されてもよい。ブロック図および/またはフローチャート説明図の各ブロック、ならびにブロック図および/またはフローチャート説明図中のブロックの組み合わせを、指定された機能もしくは作用を行う、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実装できることにも気付くであろう。
405において、ホスト読み取りコマンドがホストによって発行される。ホストは、先に記載されたように論理装置番号(LUN)およびLUNオフセットを介してメディア・カードをアドレスする。LUNおよびLUNオフセットが410において論理ブロック・アドレスまたはLBAへ変換される。415において、LBAに対応する、論理から仮想アドレスへの変換テーブルまたはLVTエントリが読み取られる。すなわち、ある実施形態において、LUNおよびLUNオフセットから変換されたLBAを用いてLVTが検索され、比較が行われて、そのLBAに対応するLVT中のエントリが読み取られる。1つ以上の実施形態では、LVTから読み取られたエントリがトリミングされているか否かが420において判定される。LVT中のトリミングされたエントリは、エントリがメディア上で利用可能でないか、および/または読み取られるべきでない。表1の実施形態において、ビット54は、LVT中のエントリ372がトリミングされているか否かを示す。420において読み取られたエントリがトリミングされていれば(420:Yes)、425においてゼロが返されて、430においてホストに良好な完了が通知される。
420において、読み取られるLVTエントリがトリミングされていなければ(420:No)、プロセッサ400は、LBAがドリフト・バッファ中にある(ドリフト・テーブルにインデックスされている)か否かが判定される435へ続く。従って、例えば、表1の例におけるようなLVTエントリについて、ビット31、ドリフト・バッファ・インデックス有効ビットが読み取られて、ビット31が1にセットされていれば、LBAは、ドリフト・バッファ中にある。LBAがドリフト・バッファ中にあれば(435:Yes)、440において対応するLBAを有するドリフト・テーブル330中のエントリを読み取る。ドリフト・テーブルから、ドリフト・バッファへのエントリが取得されて、445において対応するドリフト・バッファが読み取られる。表1の例では、LBAがドリフト・バッファ中にあれば、LVT中のビット20:0がドリフト・テーブル330へのインデックスであり、ドリフト・テーブル中の対応するエントリは、ドリフト・バッファ中のどのエントリを読み取るべきかを示す。ドリフト・バッファを445において読み取った後に、プロセスは、1つ以上の実施形態においてなんらかの読み取りエラーがあったか否かが判定される、450へ続く。読み取りエラーがあれば(450:Yes)、460においてホストに読み取り障害が通知される。読み取りエラーがなければ(450:No)、455においてホストに良好な完了、例えば、良好な読み取り完了が通知される。
435においてLBAがドリフト・バッファ中にないと判定されれば(435:No)、LVT読み取りレベル・カウントが470においてアップデートされる。表1のLVTエントリ例において、ドリフト・バッファ・インデックス有効ビット31が0にセットされていれば、LVT中のビット29:0がストレージ・クラス・メモリ(SCM)上の5120バイト・ブロックを選択するVBAを参照する。その例では、LBAがドリフト・バッファ中になく、従って、プロセス400は、そのエントリ(メディア・アドレス)についての読み取りレベル・カウントが一定の閾値を超過するか否かがチェックされる475において続く。例えば、読み取りカウント・レベルが閾値、例えば、10,000読み取りを超過するかどうかを判定できる。予めプログラムできる、またはいくつかのファクタに基づいて動作中に変えることができる異なる値に閾値レベルをセットすることができる。読み取りレベルが読み取りレベル・カウントを超過すれば(475:Yes)、480において、例えば、本開示において考察されるように、データが新しい位置へ移動される損耗レベル移動動作がスケジュールされる。480の損耗レベル移動後に、プロセス400は、VBAおよびメタデータがLVTから読み取られる485において続く。他方、475において読み取りカウント閾値が超過されなかったと判定されれば(475:No)、プロセスは、VBAおよびメタデータがLVTから読み取られる485へ続く。プロセスは、図4に示されるように485後に続き、450においてなんらかの読み取りエラーがあるか否かが判定されて、なんらかのエラーがあるかどうかに依存して、455においてホストに良好な完了、または460において読み取り障害が通知される。
図5を次に参照すると、例えば、論理アドレス、例えば、LBAを仮想ブロック・アドレスまたはVBAへ変換し、および/またはトランスレートすることを含む、ホスト書き込みコマンドを処理する方法例500を示すフローチャートが開示される。505において、ホスト書き込みコマンド実行可能指示がホストによって発行される。書き込みコマンドに対するアドレスがLUNおよびLUNオフセットとして発行される。510においてLUNおよびLUNオフセットが論理ブロック・アドレスまたはLBAへ変換される。512において、1つ以上の実施形態では、ホスト書き込みデータがすべてゼロか否かが判定される。ホスト書き込みデータがすべてゼロであれば(512:Yes)、プロセスは、ステップ540へスキップして、データをメディア(またはドリフト・バッファ)へ書き込むことは行われない。ホスト書き込みデータがすべてゼロでなければ(512:No)、プロセスは、VBAフリー・リストに利用可能なエントリがリクエストされる、515へ続く。1つ以上の実施形態では、リクエストが最も低い損耗レベルをもつVBAを対象とし、および/またはVBAフリー・リストが最も低い損耗レベルをもつVBAを提供するように構成される。
520において、データがメモリ、例えば、メディア・カードへ書き込まれる。加えて、525においてデータがドリフト・バッファにも書き込まれ、530において新しいドリフト・テーブル・エントリが書き込まれる。すなわち、525および530において、データがドリフト・バッファ中のエントリへ書き込まれて、ドリフト・バッファ中のエントリがそれへインデックスされるドリフト・テーブル中の対応するエントリがVBA、LBAとともに、および随意的に表2に示されるメタデータ、または他のデータとともに書き込まれる。ある態様において、CRCおよび他のメタデータがホストからのリクエストに応じて提供される。535において、書き込みが完了したかどうかが判定される。プロセスは、書き込みが完了する(535:Yes)まで535に留まる。
メディア、ドリフト・バッファ、およびドリフト・テーブルの書き込みが完了したときに、プロセス500は、古いLVTエントリが読み取られる540へ続く。LBAに対応するLVTが540において読み取られる。1つ以上の実施形態において、古いLVTエントリは、新しいLVTエントリで置き換えられる。545において古いLVTエントリがトリミングされているかどうかが判定される。LVTエントリがトリミングされていれば、それは、メディアが読み取られるべきでないか、または利用可能でないことを示す。1つ以上の実施形態において、LVT中のエントリは、LBAが決して書き込まれなかったか、またはゼロにされたデータを用いて最後に書き込まれたときに、トリミングされているとしてマーク付けされる。古いLVTエントリがトリミングされているとしてマーク付けされれば(545:Yes)、プロセスは、新しいLVTが書き込まれる565へ続く。545において古いLVTエントリがトリミングされていなければ(545:No)、プロセスは、書き込まれているVBAに対応するLBAがドリフト・バッファ中にあるかどうかが判定される、550へ続く。LBAが550においてドリフト・バッファ中にあると判定されれば(550:Yes)、555においてVBAを得るために古いドリフト・テーブル・エントリが読み取られる。555において取得されるドリフト・テーブル中のエントリは、書き込みプロセスがドリフト・テーブル中の古いエントリを上書きして、読み取りエントリがアップデートされていないので、530においてドリフト・テーブルに書き込まれたエントリとは異なるエントリであることに留意すべきである。続いて、560において、VBAが示された損耗レベルとともにVBAフリー・リストに返される。550において、LBAがドリフト・バッファ中にないと判定されれば(550:No)、ある実施形態において、560へ直接に進み、そこでは利用可能なVBAをVBAフリー・リスト中で優先順位付けできるように、VBAがその示された損耗レベル・データとともにフリー・リストに返される。560後に、プロセスは、新しいLVTが書き込まれる565へ進む。
ある実施形態において、560後に、プロセスは、新しいLVTが書き込まれる565へ進む。書き込まれるLVTのコンテンツは、先行処理に依存するであろう。ホスト書き込みデータがすべてゼロである(512:Yes)ために、新しいLVTエントリがトリミングされているとしてマーク付けされることになれば、新しいLVTエントリは、Trimmedインジケータ、無効VBA、およびクリアされた(ゼロにセットされた)ドリフト・バッファ・インデックス有効フィールド)を含むことになろう。ホスト書き込みデータがすべてゼロではない(512:No)ために、新しいLVTエントリがトリミングされているとしてマーク付けされなければ、新しいLVTエントリは、ドリフト・バッファ・インデックスが有効であることを示すようにセットされたドリフト・バッファ・インデックス有効フィールドを有効なドリフト・バッファ・インデックスとともに含むことになろう。新しいLVTエントリが書き込まれるときに、LVTエントリ中の読み出しカウント・フィールドは、常にクリアされる(ゼロにセットされる)。1つ以上の態様において、損耗レベル・データを含めて、他のメタデータが565においてLVTエントリへ書き込まれる。ある態様における書き込み損耗レベルは、VBAフリー・リスト340から来る。565後に、プロセスは、ホストに書き込み完了が通知される570へ続く。
1つ以上の実施形態において書き込み動作がドリフト・テーブル・キャストアウト575をトリガできることが認識されうる。開始時にドリフト・バッファは、次の書き込み動作のための余地を有する。しかしながら、ドリフト・バッファがいっぱいになった後に、最も古いエントリは、次の書き込み動作のための余地をつくるために割り振りを取り消されるべきである。1つ以上の実施形態において、ドリフト・バッファは、ドリフト・バッファ中の1つ以上のエントリをキャストアウトするか、または割り振りを取り消すのが必要なことがあり、ドリフト・バッファへの次の書き込みのための余地があるようにいくつかのエントリを書き込みポインタの前にキャストアウトすることがある。ドリフト・バッファ・エントリをキャストアウトするある実施形態において、ドリフト・バッファから除去されるべき1つ以上のドリフト・テーブル・エントリのLBAを含めて、キャストアウト情報を取得するために、ドリフト・テーブルが読み取られる。次に、ドリフト・バッファから除去されるべき1つ以上のLBAのためのLVTエントリが読み取られて、ドリフト・バッファからキャストアウトされるべき1つ以上のLBAに対応するLVTエントリがドリフト・テーブルを指し示しているかどうかか判定される。LVTエントリがドリフト・テーブルを指し示して(例えば、ドリフト・バッファ・インデックス有効ビットがセットされて)いれば、ドリフト・バッファ・インデックス有効ビットをクリアして、LVTエントリ中のDBIをVBAに変更するために、LVTエントリを書き込む。LVTエントリがドリフト・テーブルを指し示していなければ、例えば、ドリフト・バッファ・インデックス有効ビットがセットされていなければ、LVTは、すでにアップデートされて、LVTエントリのアップデートは必要ない。
図6Aを次に参照すると、図1、2A、および2Bのメモリ・モジュール/カード102において仮想ブロック・アドレス(VBA)をメディア・カード上の物理アドレスへトランスレートすることにかかわるハードウェアおよびプロセスのブロック図概要、および図6Bを参照すると、図1、2A、および2Bのメモリ・モジュール/カード102において仮想ブロック・アドレス(VBA)の、読み取り/書き込み動作(バイト・アドレス可能)を行うための適切なビットを示す物理アドレスへのトランスレーション例を示すフローチャートが示される。図中のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装の例示的なアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図中の各ブロックは、指定された論理機能(単数または複数)を実装するための1つ以上の実行可能な命令を備える、モジュール、セグメント、または命令の一部を表してよい。いくつかの代わりの実装では、ブロック中に記された機能が図中に記されたのとは異なる順序で発生してもよい。例えば、連続して示される2つのブロックが、実際には、実質的に同時に実行されてもよく、または関与する機能性に依存して、複数のブロックがときには逆の順序で実行されてもよい。ブロック図および/またはフローチャート説明図の各ブロック、ならびにブロック図および/またはフローチャート説明図中のブロックの組み合わせを、指定された機能もしくは作用を行う、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実装できることにも気付くであろう。
VBAは、上記の方法および構造、ならびに1つ以上の実施形態においていずれか現在または今後知られる方法を用いて、ホストから受信される論理ブロック・アドレス(LBA)から導出されてよいことが当業者に理解されるであろう。図6Bのフローチャートは、図1のメモリ・モジュール/カード102の最も低いアドレス可能な細分度が16ビットであり、かつメモリ・モジュール/カード102が24パッケージ、パッケージ当たり8または16ダイ、ダイ当たり16MRU群、MRU群当たり64MRU、MRU当たり128のビット・アレイ(そのうち4つがスペアである)、各ビット・アレイ中に100万ビット、およびMRU当たり100万ページ(各ページが128ビット、すなわち16バイトを含む)を含むという仮定に基づく。図6Bのプロセスを他のメモリ・システム構成に利用できることが認識されるであろう。
フローチャートは、読み取り/書き込み動作が4Kバイト・サイズのデータ・ブロックを含むデータについて行われることをさらに仮定する。そのようにして、各読み取り/書き込み動作は、ホストから受信された4Kバイトのデータ、ECCバイト、およびメタデータを含む全部で5120バイトのデータについて行われる。メモリ・モジュール/カード102の最も低いアドレス可能な細分度が16バイトであることを考えると、5120バイトのデータがメモリ・モジュール/カード102にわたって320の別個のページ(各16バイト、15.5バイトが実データを保持するために用いられる)に格納されてよい。損耗平均化のために、320の別個のページがメモリ・モジュール/カード102にわたって均等に分布されるべきであることが理解されるであろう。それゆえに、トランスレーション・プロセスは、VBAをメモリ・モジュール/カード102における物理アドレスの320の別個のページへトランスレートし、VBAがかかる320の別個のページを表している。VBAは、30ビット・アドレスであり、VBAの下位20ビット(すなわち、最下位ビット)がトランスレーション中には無視される、なぜなら、それらは、すべてがVBAの同じ上位10ビット(最上位ビット)を有する100万の4Kバイト・サイズのブロック(集合的に、100万の4Kバイト・ブロックは、VBAによって表される仮想修復単位(VRU:virtual repair unit)と呼ばれる)のコレクションを表すためである。留意すべきは、本明細書に開示される実施形態例が4TBのメディア・カードをアドレスするために30ビットのVBAを用いることである。しかしながら、本開示は、それほど限定的ではなく、他のサイズのアドレスが異なるメディア・カードのために同様に用いられてよい。上位10ビットは、以下に考察されるように、チップ選択テーブルを用いてVRUを識別するために用いられてよい。VRUの数は、実際のメディア・カードに基づいて構成される(例えば、4TBのメディア・カードの実ストレージ容量が約2.5TBであれば、VRUの数が614である)。異なるメディア・カードについて、チップ選択テーブル(CST)を用いてVRUを識別するために異なる上位ビットが用いられてよい。
図6Cに示されるように、VBAの物理アドレスへのトランスレーションは、少なくとも3つのルックアップ・テーブル-チップ選択テーブル(CST)(例えば、すべての24パッケージについて同じ)、24のメディア修復テーブル(MRT)(例えば、パッケージごとに1つ)、および24のビット・アレイ修復テーブル(BART)(例えば、パッケージごとに1つ)を含む複数層のルックアップである。602において、VBAがCSTへインデックスされる。先に考察されたように、1つ以上の実施形態において、VRUを表すVBAの下位20ビットがトランスレーション中に無視されて、VBAの上位10ビットのみがステップ602においてCSTへインデックスされる。
図6Cに示されるように、CST610は、パッケージ番号によってインデックスされた列、例えば、Pkg0~23、およびVRU番号によってインデックスされた行を含む。VRU番号は、VBAの上位(最上位)10ビットを用いて識別される。CST610中の各エントリ611は、全部で16ビットを含む。すなわち、最下位9ビットは、即時修復単位(IRU:intermediate repair unit)番号を決定するためであり(すなわち、9IRUビット)、次の3ビットは、将来使用のために確保され、次の1ビットは、VRUがスクラブされるべきかどうかを示し(すなわち、スクラブ・ビット)、次のビットは、パッケージがVBA読み取り/書き込み動作を行うためのVRU中に含まれるかどうかを示すフラグ・ビット(すなわち、含まれるフラグ・ビット)であり、次のビットは、それについてMRUのいくつかまたはすべてが障害を起こしたIRUをパッケージが含むかどうかを示し(すなわち、部分障害ビット)、そして最後の最上位ビット(全16ビット)は、パッケージが完全なスペアIRUを含むかどうかを示す(すなわち、スペア・ビット)。同様に、ある実施形態において障害および/またはスペアとして部分的にマーク付けされたIRUは、読み取り/書き込み動作のために用いることはできない。
上記のように、CSTエントリ611の含まれるフラグ・ビットは、パッケージがVBA(すなわち、読み取り/書き込み動作)のためのデータを含むことになるか否かを示す。例えば、含まれるフラグ・ビット値があるパッケージについて「0」であれば、それは、VBA読み取り/書き込み動作のためのデータを含むことにならず、含まれるフラグ・ビット値があるパッケージについて「1」であれば、それは、VBA読み取り/書き込み動作のためのデータを含むことになる(逆もまた同様)。メディア・カード上の24パッケージのうちから、ある実施形態では、読み取り/書き込み動作を行うために20パッケージのみが用いられて、4パッケージは、メディア修復モジュール206による欠陥のあるパッケージの置き換えとして用いるためのスペア・パッケージである。5120バイト・サイズのブロックのデータを格納するための320ページがメモリ・モジュール/カード102にわたって均等に分散されるので、トランスレーション中に、20パッケージの含まれるフラグ・ビットは、対応するパッケージがVBA読み取り/書き込み動作のためのデータを含むことになることを示すであろう。さらにまた、20パッケージの各々がデータの均等分布を達成するためにデータを含むことになる16の別個のページ(またはビート)を含むであろう。本明細書では、用語ビートは、受信されたVBAに対応する読み取り/書き込み動作を行うためのデータを含むことになるパッケージ中のページを記載するために用いられる。パッケージごとのこれらの16ビートは、以下に考察されるように、MRTおよびBARTを用いて識別されてよい。そのようにして、トランスレーション中に、VBAが602においてCSTへインデックスされ、VRU番号を識別し、およびCSTを用いてパッケージごとの対応する含まれるフラッグ・ビットおよびIRUビットを識別するためにVBAの上位10ビットが用いられる。
図6Bに戻って参照すると、ステップ604において、パッケージごとに、対応するCSTエントリからリトリーブされた9IRUビットがそのパッケージについてMRTへインデックスするために用いられてよい。具体的には、20の有効なパッケージの各々について、IRU番号(0~511)を識別するためにCST610からの9IRUビットが用いられて、次にはその番号がMRT620へインデックスするために用いられる。
図6Cに示されるように、MRT620は、IRU番号によってインデックスされた行、およびビート番号によってインデックスされた列を含む。MRT620中の各エントリ621は、全部で16ビットを含み、VBA読み取り/書き込み動作を行うためのデータを含むことになる(全16)パッケージ上の各ビートの物理アドレスを決定する。物理アドレスは、パッケージにおけるダイ・インデックス(エントリ621の最下位4ビット)、ダイにおけるMRU群インデックス(エントリ621の次の4ビット)、およびビートを含むことになるMRU群におけるMRUインデックス(エントリ621の次の6ビット)の組み合わせ(D/MG/M)として表される。エントリ621は、D/MG/Mによって表されるページが障害ありとしてこれまでに宣言されたかどうかを示す障害ビット(最上位ビットの次のビット)、およびD/MG/Mによって表されるページが個別のスペアとしてこれまでに宣言されたかどうかを示すスペア・ビット(IRU全体がスペアであれば、MRUは、エントリ621中のスペアとしてマーク付けされないであろう)も含む。障害および/またはスペア・ページは、読み取り/書き込み動作のために用いることはできない。パッケージごとのMRT620は、それゆえに、VBAについて読み取り/書き込み動作を行うためのデータを含んでよい各パッケージ中のビートに対する16の物理アドレスを返す。
先に考察されたように、1つのMRUが128のビット・アレイを含み、そのうち4つがスペア・ビット・アレイとして確保されて、MRU中の100万ページの各々が124の残りのビット・アレイの各々から1ビットを取る。それゆえに、ステップ606において、BART630は、上記の物理アドレスの各MRU中の124のビット・アレイに対応するインデックスを決定するために用いられてよく、対応するビートがVBA読み取り/書き込み動作を行うためのビットをそれらのビット・アレイから取ることになろう。図6Cに示されるように、BART630の各行は、MRT620からのD/MG/M識別を用いてインデックスされてよく、BART630の各列は、各MRUが4つの不使用ビット・アレイを含むので、0~3によってインデックスされる。BART630の各エントリ631は、8ビットを含む-7最下位ビットは、その行のMRUについて(128のビット・アレイのうちから)4つの不使用ビット・アレイのうちの1つを示し、最上位ビットは、将来使用のために確保される。ビートによってビットが取られることになる124のビット・アレイは、不使用ビット・アレイをMRUから除外することによって決定されてよい。
ステップ608において、システムは、読み取り/書き込み動作を適切なメモリ・セルで行うために、VBAの20最下位ビットを物理アドレス(D/MG/M)および不使用ビット・アレイ・インデックスと一緒に用いてよく、実際の読み取り/書き込み動作は、各特定のSCMメモリ技術のインターフェース仕様に従って行われてよい。
BART330の不使用ビット・アレイ・インデックスは、(図7に関して以下に記載される)メモリ・スクラブ・プロセスの間に作成されるエラー率テーブル(ERT)640を用いて決定されてよいことに留意すべきである。図6Cに示されるように、1つのパッケージのERT640が128のビット・アレイに対応する行、およびそのパッケージ中のMRUに対応する列を含む。1つのVRUがスクラブ・プロセスの間に一度にスクラブされるので、ERT640のMRUは、(以下に考察されるように)スクラブされるVRUに対応する。さらにまた、以下に記載されるスクラブ・プロセスは、パッケージ当たり16ビート(すなわち、MRU)をターゲットにして、ERT中に16MRUがあるようにパッケージごとに1つのERTをアップデートする。ERT中の各エントリ641は、1つのVRUのスクラブ・プロセスの間に観測されるstuckビットの総数を含む。1つのVRUが100万の連続するVBAを含むので、stuckビットの総数は、200万(両方に共通ではないが、100万stuck-at-0および100万stuck-at-1)となりうる。
図7を次に参照すると、メモリ・モジュール/カード102のスクラブ・プロセス例を示すフローチャートが記載される。スクラブ・プロセスは、データの読みやすさおよび正確さを確実にすべく、閾値時間内にデータを周期的に再書き込みするために、将来のプロプログラマビリティのために各メモリ・セルを条件付けすべく、および/またはメモリ・システムをテストして(次にはメディア修復処置を開始するために用いられてよい)stuck fault障害に対応する統計データを集めるべくメモリ・システムのビットを周期的に反転させるために行われてよい。一定の実施形態において、スクラブ・プロセスは、VRUからのいずれのさらなる読み取り/書き込み動作も無効にすることによりスクラブされるVRUに対応する100万の連続するVBAをサービスから外すことによって(ラウンドロビン式におよび/またはトリガ・イベントの発生の際に)1つのVRU上で一度に行われてよい。
スクラブ・プロセスの間に、702において、システムは、スクラブされるべきVRUを識別する。1つ以上の実施形態において、VRUごとのスクラブ・プロセスは、周期的にラウンドロビン式(例えば、24時間ごと)におよび/またはトリガ・イベントの発生(例えば、非同時メモリ・エラーのようなメモリ・エラーの検出、メモリ動作がより高レベルのECC訂正を必要とすることの検出、または同様のもの)の際に行われてよい。VRUに対するスクラブ・プロセスは、メモリ・モジュール/カード102一式が閾値時間(例えば、24時間、48時間、または同様のもの)の間にスクラブされるようにスケジュールされてよい。
704において、1つ以上の実施形態におけるシステムは、識別されたVRUが読み取り/書き込み動作を行うためのサービス状態にあるかどうかを判定する。識別されたVRUが読み取り/書き込み動作を行うためのサービス状態にあれば(704:Yes)、システムは、VRUを使用から除去してよい(706)。VRUの(例えば、100万の連続するVBAのサービスからの)除去は、限定なしに、識別されたVRUのすべての100万VBAのメモリ・システムの(必要とされる具体的なサイズのメモリのフリー・エリアを識別する)フリー・リストからの除去を含んでよい。具体的には、システムは、VRUのいずれのVBAも、書き込み動作によってリリースされた後にフリー・リスト上に置かれることを許容することはできない。加えておよび/または代わりに、システムは、データを別の位置への移動、VBAの現在の値を追跡する論理から仮想へのテーブル(LVT)からのVBAの除去、および/または、ドリフト・バッファからのVBAの除去によって、データを格納するために現在使用中のVRUのすべてのVBAからいずれの既存のデータも除去してよい。
識別されたVRUのサービスからの除去の際に、および/または識別されたVRUが読み取り/書き込み動作を行うためのサービス状態にないと判定されれば(704:No)、システムは、識別されたVRUに対応するすべてのERTについて708においてカウンタを初期化してよい(例えば、ゼロ値を割り当てる)。710において、システムは、識別されたVRUのVBAごとにパターンAを用いて書き込み動作を発行してよい。パターンAの例は、(すべてのstuck-at-0ビットを検出するための)すべて1のストリング、(すべてのstuck-at-1ビットを検出するための)すべて0のストリング、(互いにstuck状態にある2つの隣接するビットを検出するための)すべて5、および/または同様のものを含んでよい。パターンAの書き込み動作がVRU中のすべてのVBAについて実行されると、システムは、712においてVRU中のstuck-at-faultビット数を決定するために、識別されたVRUのVBAごとに読み取り動作を発行してよい。例えば、パターンAがすべて1のストリングを含めば、読み取り動作は、VRU中のstuck-at-0ビットを決定するために用いられてよく、パターンAがすべて0のストリングを含めば、読み取り動作は、VRU中のstuck-at-1ビットを決定するために用いられてよい。VRU中の他のstuck fault(例えば、stuck-at-X、互いにstuck状態にある2つ以上のビットなど)の数を識別するために、他のパターンが用いられてもよい。
714において、システムは、識別されたVRUのVBAごとにパターンBを用いて書き込み動作を発行してよく、パターンBは、パターンAと異なる。パターンBの例は、(すべてのstuck-at-0ビットを検出するための)すべて1のストリング、(すべてのstuck-at-1ビットを検出するための)すべて0のストリング、(互いにstuck状態にある2つの隣接するビットを検出するための)すべて5、および/または同様のものを含んでよい。パターンBの書き込み動作がVRU中のすべてのVBAについて実行されると、システムは、716においてVRU中のstuck-at-faultビット数を決定するために、識別されたVRUのVBAごとに読み取り動作を発行してよい。例えば、パターンAがすべて1のストリングを含み、VRU中のstuck-at-0ビットを識別するために用いられれば、パターンBは、VRU中のstuck-at-1ビットを決定するためにすべて0のストリングを含んでよい。
留意すべきは、VRUのスクラブ・プロセスの間に、stuck-at-faultがすべてのビット・アレイ上で検出されてよいように、トランスレーション・プロセスの間にBARTを無視することによってVRUの各MRUのすべての128のビット・アレイ(124のビット・アレイだけでなく)が書き込まれて/読み取られることである。具体的には、VRUの100万VBAの各々の物理ページ・アドレスへのトランスレーションがCSTおよびMRTのみを用いて行われる。さらにまた、スクラブ・プロセスの間のトランスレーションが障害IRUおよび/またはスペアIRUも含む。各スクラブ・プロセスは、典型的に、(パッケージごとに)20~24ERTの作成につながる。
718において、システムは、スクラブされるVRUの各MRUのビット・アレイごとに、決定されたstuck-at-0ビットおよびstuck-at-1ビットの値に基づいてERTカウンタをステップ708からアップデート(すなわち、stuck-at faultの総数を示すためにカウンタをアップデート)してよい。720において、システムは、(図8に関して以下に考察される)メディア修復処置を行ってよい。
722において、システムは、例えば、VRUの100万VBAをフリー・リストへ挿入することによってVRUをサービスに戻してよい。以下に考察されるように、VRUがメディア修復処置の間にスペアIRUへ変換されれば、それをサービスに戻すことはできない。
図8を次に参照すると、メモリ・システムの各スクラブ・プロセスの間に行われるメディア修復処置例を示すフローチャートが記載される。先に考察されたように、スクラブ・プロセスの間に、スクラブされるVRUのビット・アレイ・インデックス/MRUの各々についてstuck-at fault(例えば、stuck-at-1、stuck-at-0など)の数を示すパッケージごとのERTが構築される。システムは、この図8に記載されるようにメディア修復処置(単数または複数)を行うためにERT中のカウンタを解析してよい。メディア修復処置は、ビット・アレイ修復(ほとんど常に行われる)、MRU置き換え、および/またはIRU置き換えを含んでよい。
802において、システムは、スクラブされたVRUについてビット・アレイ修復、MRU置き換えおよび/またはIRU置き換えが行われる必要があるかどうかを判定してよい。一定の実施形態において、システムは、ERT中の不良ビートの数を識別し、解析することによって、VRUについてMRU置き換えおよび/またはIRU置き換えが行われる必要があるかどうかを判定してよい。
ビートは、ビート中のビット・アレイの各々についてstuck-atビット・カウントを解析することによって不良ビートとして識別されてよい。具体的には、ビートのビット・アレイの各々について、システムは、stuck-atビット・カウントの数が第1の閾値(T)より大きい、第2の閾値(T)より大きいが第1の閾値Tより少ない、または許容しうるstuck-atビット数であるかどうかを判定する。閾値TおよびTは、ECCの強度によって決定される。T例は、100万ビット当たり約2000~約7000ビットであってよく、T例は、100万ビット当たり約200~約700ビットであってよく、許容しうるstuck-atビット数の例は、Tより少ない(例えば、100万ビット当たり100ビットより少ない)いずれかの値であってよい。
より大きいいくつかのstuckビット数を有するビートが4つを超えなければ(例えば、1つのビートがTより大きいstuck-atビット・カウントの数を有する1つのビット・アレイ、およびTより大きいstuck-atビット・カウントの数を有する3つのビット・アレイを含めば)、システムは、以下に考察されるようにビット・アレイ修復のみを行ってよい。図9Aは、ビット・アレイ修復が必要とされることを示す、VRUスクラブ後に作成されたERT例を示す。
加えておよび/または代わりに、いくつかのビート(しかしすべてではなく、および/または閾値数より少ない)がTより大きいstuck-atビット・カウントの数を有する4つより多いビット・アレイ、および/またはTより大きいstuck-atビット・カウントの数を有する11より多いビット・アレイを含めば、システムは、ビートが障害MRUであると判定してよい。システムは、ビット・アレイ修復に加えて、かかる障害MRUに対してMRU置き換えを行ってよい。図9Bは、MRU置き換えが必要とされることを示す、VRUスクラブ後に作成されたERT例を示す。
パッケージについて1つのERT中のすべてまたは一定の閾値数のビートが不良(すなわち、4つより多いビット・アレイがTより大きいstuck-atビット・カウントの数を有し、および/または11より多いビット・アレイがTより大きいstuck-atビット・カウントの数を有する)ならば、システムは、不良ビートを含むIRUが障害を起こしたと判定してよい。1つ以上の実施形態におけるシステムは、ビット・アレイ修復に加えて、かかる障害IRUに対してIRU置き換えを行う。IRU置き換えは、置き換えが必要な障害MRUを含むパッケージ中にスペアMRUが存在しない場合にも行われてよい。図9Cは、IRU置き換えが必要とされることを示す、VRUスクラブ後に作成されたERT例を示す。
ビット・アレイの数は、例としてのみ提供され、他の数は、ビット・アレイ修復、MRU置き換えおよび/またはIRU置き換えがVRUについて行われる必要があるかどうかを判定するための本開示の範囲内にある。
804において、ビット・アレイ修復が必要とされれば、ある態様によるシステムは、読み取り/書き込み動作の間に用いられることから最悪のビット・アレイを除外することによって、ビット・アレイ修復処置を行う。システムは、最初に、ERT中のMRU(すなわち、列)ごとに、各ビット・アレイについて観測されるstuck-at faultの総数を解析することによって、最悪の4つのビット・アレイおよびそれらに対応するインデックスを識別してよい。最悪の4つのビット・アレイは、スクラブ・プロセスの間に観測される最多数のstuck-at faultをもつビット・アレイである。システムは、次に、最悪の4つのビット・アレイ・インデックスをそのMRUについての不使用ビット・アレイ・インデックスとして含めるためにERTに対応するBARTをアップデートしてセーブする。4つより多いビット・アレイが不良であれば、システムは、メディア修復を行うためにECCを呼び出してよい。
806において、障害MRUに対してMRU/IRU置き換えが必要とされれば、ある態様によるシステムは、障害MRUがスペアMRUであるか、および/またはスペアIRU内に含まれるかどうかを判定する。障害MRUがスペアMRUであるか、および/またはスペアIRU内に含まれれば(806:Yes)、システムは、MRUを置き換えなしに障害MRU(スペアではない)としてマーク付けしてよい(808)。しかしながら、障害MRUがスペアMRUでなく、スペアIRU内に含まれなければ(806:No)、ある実施形態によるシステムは、MRU置き換えを行い(810)、それに応じてMRUをアップデートする(812)。留意すべきは、IRUのビート内のD/MG/M値の不適切な順序付けからパフォーマンス低下が起こりうるため、スペアMRUは、MRUのパフォーマンスが低下することにならない場合に限り障害MRUの置き換えのための候補と見做されてよいことである。
ある態様におけるシステムは、置き換えられる必要がある障害MRUと同じパッケージ中のスペアMRUを最初に検索することによってMRU置き換え(810)を行う。スペアMRUが見つからなければ、ある実施形態におけるシステムは、同じパッケージ中のスペアIRUも検索して、スペアIRUを複数のスペアMRUへ分割する。次に、障害MRUおよび/または障害MRUを含むIRUを置き換えるために、同じパッケージ中のスペアMRUおよび/またはIRUを用いることができる。ある実施形態におけるシステムは、置き換えられるIRUの良好なMRU(すなわち、置き換えが必要ないMRU)をスペアMRUへ変換する。置き換えの際に、1つ以上の実施形態において、システムは、障害MRUまたはIRU中のページの物理アドレス(すなわち、D/MG/G)をスペアMRUまたはIRUのものとスワップするために、そのパッケージのためのMRTをアップデートする。
しかしながら、障害MRUを含むパッケージがスペアMRUまたはIRUを含まなければ、1つ以上の実施形態において、システムは、IRU全体を別のパッケージ中のスペアIRUと置き換える(814)。ある態様によるシステムは、置き換えられるIRUの良好なMRU(すなわち、置き換えが必要ないMRU)をスペアMRUへ変換する。置き換えの際に、システムは、ある実施形態において、使用中のIRUをスペアIRUならびにCST中のスペア/障害IRU指示とスワップするためにCSTをアップデートする。ある実施形態において、障害MRU/IRUと同じパッケージからのスペアIRUが置き換えのための別のパッケージからのスペアIRUより好ましいことに留意すべきである。
システムがいずれのパッケージにおいてもスペアMRUまたはIRUを見つけることができなければ、1つ以上の実施形態において、システムは、スペアIRUをスクラブされるVRUから作成して(816)(それをサービスは戻さず)、障害MRUを障害ありとしてマーク付けする。システムは、ある態様において、VRUがスペアIRUを作成するために用いられて読み取り/書き込み動作のためにそれを用いることができないことを示すために、CSTおよびMRTをアップデートする。
1つ以上の実施形態において、メディアは、例えば、1日に1回リフレッシュされる必要がありうる。リフレッシュ動作の間に、VBA中のデータが新しいVBAへコピーされ、次に、古いVBAがサービス状態に戻される前に、古いVBAが1回目にすべて「1」に書き込まれて、次に、2回目にすべて「0」に書き込まれる。
上記の例示的な実施形態は、好ましくは、ハードウェアに、例えば、プロセッサの装置および回路に実装されるが、例示的な実施形態および/または技法の様々な態様がソフトウェアに同様に実装されてもよい。例えば、図4~8におけるフローチャート説明図の各ブロック、およびフローチャート説明図中のブロックの組み合わせをコンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令は、プロセッサまたは他のプログラマブル・データ処理装置上で実行する命令が、フローチャートの1つもしくは複数のブロックにおいて指定される機能を実装するための手段を生み出すような、マシンを作り出すためにプロセッサまたは他のプログラマブル・データ処理装置に提供されてよい。これらのコンピュータ・プログラム命令は、コンピュータ可読メモリまたはストレージ・メディアに格納されてもよく、それらの命令は、コンピュータ可読メモリまたはストレージ・メディアに格納された命令が、フローチャートの1つもしくは複数のブロックにおいて指定された機能を実装する命令手段を含む製造品を作り出すような、特定の仕方で機能するようにプロセッサまたは他のプログラマブル・データ処理装置に指示することができる。
それに応じて、フローチャート説明図のブロックは、指定された機能を行うための手段の組み合わせ、指定された機能を行うためのステップの組み合わせ、および指定された機能を行うためのプログラム命令手段をサポートする。フローチャート説明図の各ブロック、およびフローチャート説明図中のブロックの組み合わせを指定された機能またはステップを行う専用ハードウェア・ベース・コンピュータ・システムによって、または専用ハードウェアおよびコンピュータ命令の組み合わせによって実装できることも理解されるであろう。
本開示の1つ以上の実施形態は、システム、方法、および/またはコンピュータ・プログラム製品であってよい。コンピュータ・プログラム製品は、プロセッサに本開示の態様を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ・メディア(単数または複数)を含んでよい。
コンピュータ可読ストレージ・メディアは、命令実行デバイスによる使用のための命令を保持して格納できる有形のデバイスとすることができる。コンピュータ可読ストレージ・メディアは、例えば、以下には限定されないが、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述のもののいずれか適切な組み合わせであってよい。コンピュータ可読ストレージ・メディアのより具体的な例の非網羅的なリストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM:random access memory)、リード・オンリ・メモリ(ROM:read-only memory)、消去可能プログラマブル・リード・オンリ・メモリ(EPROM:erasable programmable read-only memoryまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM:static random access memory)、ポータブル・コンパクト・ディスク・リード・オンリ・メモリ(CD-ROM:compact disc read-only memory)、デジタル多用途ディスク(DVD:digital versatile disk)、メモリ・スティック、フレキシブル・ディスク、パンチ・カードもしくはその上に記録された命令を有する溝中の隆起構造のような機械的にエンコードされたデバイス、および前述のもののいずれか適切な組み合わせを含む。コンピュータ可読ストレージ・メディアは、本明細書では、それ自体が一時的な信号、例えば、電波または他の自由伝搬する電磁波、導波路もしくは他の伝送メディアを通って伝搬する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、あるいは線を通って伝送される電気信号であると解釈されるべきではない。
本明細書に記載されるコンピュータ可読プログラム命令をコンピュータ可読ストレージ・メディアからそれぞれのコンピューティング/処理デバイスへ、あるいはネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークおよび/またはワイヤレス・ネットワークを介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードできる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータおよび/またはエッジ・サーバを備えてよい。各コンピューティング/処理デバイス中のネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、コンピュータ可読プログラム命令をネットワークから受信して、それらのコンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ・メディアに格納するために転送する。
本開示の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA:instruction-set-architecture)命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalk、C++、または同様のもののようなオブジェクト指向プログラミング言語、ならびに「C」プログラミング言語または同様のプログラミング言語のような、従来の手続き型プログラミング言語を含めて、1つ以上のプログラミング言語のいずれかの組合せで書かれたソース・コードまたはオブジェクト・コードのいずれかであってよい。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アローンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上かつ部分的にリモート・コンピュータ上で、あるいは全体的にリモート・コンピュータまたはサーバ上で実行してよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含めて、いずれかのタイプのネットワークを通してユーザのコンピュータへ接続されてもよく、あるいは(例えば、インターネット・サービス・プロバイダを用いてインターネットを通して)外部コンピュータへ接続が行われてもよい。いくつかの実施形態において、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA:field-programmable gate array)、またはプログラマブル・ロジック・アレイ(PLA:programmable logic array)を含む電子回路が本開示の態様を行うために電子回路をパーソナライズすべくコンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行してよい。
本開示の態様は、本開示の実施形態による方法、装置(システム)、ならびにコンピュータ・プログラム製品のフローチャート説明図および/またはブロック図を参照して本明細書に記載される。フローチャート説明図および/またはブロック図の各ブロック、ならびにフローチャート説明図および/またはブロック図におけるブロックの組み合わせをコンピュータ可読プログラム命令によって実装できることが理解されるであろう。
これらのコンピュータ・プログラム命令は、コンピュータまたは他のプログラマブル・データ処理装置のプロセッサを介して実行する、それらの命令が、フローチャートおよび/またはブロック図の1つもしくは複数のブロックにおいて指定された機能/作用を実装するための手段を生み出すような、マシンを作り出すために汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサに提供されてよい。これらのコンピュータ可読プログラム命令は、コンピュータ可読ストレージ・メディアに格納されてもよく、これらのプログラム命令は、その中に格納された命令を有するコンピュータ可読ストレージ・メディアが、フローチャートおよび/またはブロック図の1つもしくは複数のブロックにおいて指定された機能/作用の態様を実装する命令を含む製造品を備えるような、特定の仕方で機能するようにコンピュータ、プログラマブル・データ処理装置、および/または他のデバイスに指示することができる。
コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行する命令がフローチャートおよび/またはブロック図の1つもしくは複数のブロックにおいて指定された機能/作用を実装するような、コンピュータ実装プロセスを作り出すべく、一連の動作ステップがコンピュータ、他のプログラマブル装置または他のデバイス上で行われるようにするためにコンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上へロードされてもよい。
図中のフローチャートおよびブロック図は、本開示の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図中の各ブロックは、指定された論理機能(単数または複数)を実装するための1つ以上の実行可能な命令を備える、モジュール、セグメント、または命令の一部を表してよい。いくつかの代わりの実装では、ブロック中に記された機能が図中に記された順序以外で発生してもよい。例えば、連続して示される2つのブロックが実質的に同時に実行されてもよく、または関与する機能性に依存して、複数のブロックがときには逆の順序で実行されてもよい。ブロック図および/またはフローチャート説明図の各ブロック、ならびにブロック図および/またはフローチャート説明図中のブロックの組み合わせを、指定された機能もしくは作用を行う、または専用ハードウェアおよびコンピュータ命令の組み合わせを実行する専用ハードウェア・ベース・システムによって実装できることにも気付くであろう。
そのうえ、様々な実施形態によるシステムは、プロセッサならびにプロセッサと集積された、および/またはプロセッサによって実行可能なロジックを含んでよく、ロジックは、本明細書に列挙されるプロセス・ステップの1つ以上を行うように構成される。集積されるが意味するのは、プロセッサがハードウェア・ロジックとしてそれに埋め込まれたロジック、例えば、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲートアレイ(FPGA)などを有することである。プロセッサによって実行可能が意味するのは、ロジックが、ハードウェア・ロジックであるか、ファームウェア、オペレーティング・システムの一部、アプリケーション・プログラムの一部などのようなソフトウェア・ロジックであるか、またはプロセッサによってアクセス可能であり、プロセッサによる実行の際にプロセッサに何らかの機能を行わせるように構成されたハードウェア・ロジックおよびソフトウェア・ロジックの何らかの組み合わせであることである。ソフトウェア・ロジックは、当技術分野で知られるような、いずれかのメモリ・タイプのローカルおよび/またはリモート・メモリ上に格納されてよい。当技術分野で知られるいずれかのプロセッサ、例えば、ソフトウェア・プロセッサ・モジュールおよび/またはハードウェア・プロセッサ、例えば、ASIC、FPGA、中央処理装置(CPU)、集積回路(IC)、グラフィックス処理装置(GPU)などが用いられてよい。
添付の特許請求の範囲における機能要素に加えて、すべての手段もしくはステップの対応する構造、材料、作用、および均等物は、具体的に請求されるような他の請求要素と組み合わせてその機能を行うためのいずれかの構造、材料、または作用を含むことが意図される。本開示の実施形態の記載は、例示および説明を目的として提示されたが、網羅的であることも、本発明を開示されるかたちの実施形態に限定されることも意図されない。本開示の範囲および趣旨から逸脱することなく、多くの変更および変形が当業者には明らかであろう。実施形態および例は、本開示の原理および実用用途を最もよく説明するために、および企図される特定の使用に適するような様々な変更を伴う様々な実施形態について他の当業者が本開示を理解することを可能にするために選ばれて、記載された。
本明細書に記載されるプログラムは、本開示の具体的な実施形態において、プログラムが実装されるアプリケーションに基づいて特定される。しかしながら、本明細書におけるいずれの特定のプログラム命名も単に便宜上用いられるに過ぎず、従って、本開示は、かかる命名によって識別され、および/または示唆されるいずれかの具体的なアプリケーションのみにおける使用に限定されるべきではないことが認識すべきである。
前述のシステムおよび/または方法論の様々な特徴が何らかの方法で組み合わされて、先に提示された記載から複数の組み合わせを生み出してよいことが明らかであろう。
本開示の実施形態は、サービスをオンデマンドで提供するためにユーザに利するように展開されるサービスの形態で提供されてよいことがさらに認識されるであろう。
本開示の様々な実施形態の記載は、例示を目的として提示されたが、網羅的であることも、開示される実施形態に限定されることも意図されない。記載される実施形態の範囲および趣旨から逸脱することなく、多くの変更および変形が当業者に明らかであろう。本明細書に用いられる用語法は、実施形態の原理、実用用途または市場に見られる技術を超える技術的改良を最もよく説明するために、あるいは本明細書に開示される実施形態を他の当業者が理解することを可能にするために選ばれた。

Claims (25)

  1. データを格納するためのメモリ・システムであって、前記メモリ・システムは、
    1つ以上のメモリ・カードであって、各カードが複数のストレージ・チップを有し、各チップが複数のメモリ・セルを有する複数のダイを有する、メモリ・カードと、
    トランスレーション・モジュールを備えるメモリ・コントローラであって、前記トランスレーション・モジュールが
    複数のエントリを有する論理から仮想へのトランスレーション・テーブル(LVT)をさらに備え、前記LVT中の各エントリが論理アドレスを仮想ブロック・アドレス(VBA)へマッピングするように構成され、前記VBAが前記1つ以上のメモリ・カード上の前記メモリ・セルの群に対応する、メモリ・コントローラと
    を備え、
    前記LVT中の各エントリは、そのLVTエントリへマッピングされた前記VBAへの書き込み動作の数を追跡するための書き込み損耗レベル・カウント、およびそのLVTエントリへマッピングされた前記VBAに対する読み取り動作の数を追跡するための読み取り損耗レベル・カウントをさらに含む
    メモリ・システム。
  2. 前記LVT中の前記書き込み損耗レベル・カウントは、VBAへの書き込み動作の最大数に対応する書き込みレベル閾値を有するようにプログラマブルであり、LVTエントリ中の前記書き込みレベル閾値を超過する書き込み動作に応答して、前記書き込みレベル閾値を超過する前記LTVエントリに対応する前記メモリ・カード中の前記データは、異なるVBAをもつ前記メモリ・カード上の新しい位置へ移動される、請求項1に記載のメモリ・システム。
  3. データを書き込むために利用可能な前記VBAを識別するVBAフリー・リストをさらに備え、書き込み動作に応答して、新しいVBAが前記VBAフリー・リストから取得される、請求項2に記載のメモリ・システム。
  4. 前記システムは、前記損耗レベル・カウントに基づいて新しいVBAを前記VBAフリー・リストから取得するように構成された、請求項3に記載のメモリ・システム。
  5. 前記LVT中の前記読み取り損耗レベル・カウントは、VBAの読み取り動作の最大数に対応する読み取りレベル閾値を有するようにプログラマブルであり、LVTエントリ中の前記読み取りレベル閾値を超過する読み取り動作に応答して、前記読み取りレベル閾値を超過する前記LVTエントリに対応する前記メモリ・カード中の前記データは、異なるVBAをもつ前記メモリ・カード上の新しい位置へ書き込まれる、請求項1に記載のメモリ・システム。
  6. 書き込みデータを受信するために利用可能な前記VBAを識別するVBAフリー・リストをさらに備え、LVTエントリについての前記読み取りレベル閾値を超過する読み取り動作に応答して、新しいVBAが前記VBAフリー・リストから取得されて、前記読み取りレベル閾値を超過する前記LVTエントリに対応する前記メモリ・カード中の前記データが前記異なるVBAをもつ前記メモリ・カード上の前記新しい位置へ書き込まれる、請求項5に記載のメモリ・システム。
  7. 前記システムは、前記読み取りレベル閾値を超過する読み取り動作に応答して、前記損耗レベル・カウントに基づいて新しいVBAを前記VBAフリー・リストから取得するように構成された、請求項6に記載のメモリ・システム。
  8. データを一時的に格納するための複数のエントリを有するドリフト・バッファ、および複数のエントリを有するドリフト・テーブルを備え、各ドリフト・テーブル・エントリが前記ドリフト・バッファ中の前記複数のエントリのうちの1つへインデックスするように構成され、前記ドリフト・テーブルの各エントリがドリフト・バッファ・インデックスをVBAへマッピングし、前記システムは、データを前記メモリ・カードへ書き込むことに応答して、前記データを前記ドリフト・バッファ中のエントリへも書き込み、さらに、前記VBAおよび前記対応する論理アドレスを前記ドリフト・バッファ中の前記対応するエントリへインデックスされた前記ドリフト・テーブルにおけるエントリへ書き込むように構成された、請求項1に記載のメモリ・システム。
  9. 前記VBAに対応するデータが前記ドリフト・バッファ中に存在すれば、前記ドリフト・バッファから読み取るように構成された、請求項8に記載のメモリ・システム。
  10. 前記ドリフト・バッファは、前記メモリ・カード上に含まれた循環FIFOバッファである、請求項8に記載のメモリ・システム。
  11. 各LVTエントリは、前記ドリフト・バッファがそのLVTエントリに対応する前記データを含むかどうかを示すためのフィールドを備え、前記システムは、データが前記ドリフト・バッファ中にあることを前記LVTフィールドが示すLVTエントリ上のヒットに応答して構成され、前記LVTエントリが前記ドリフト・テーブル中のエントリを指し示す、請求項8に記載のメモリ・システム。
  12. 前記ドリフト・バッファが各それぞれのLVTエントリに対応するデータを含むかどうかを示すためのドリフト・バッファ・インデックス有効フィールドを各LVTエントリ中にさらに備え、前記システムは、リクエストに応答して、データを前記メモリ・カードから読み取るように構成され、前記システムは、前記LVT中の前記論理アドレスをルックアップするように構成され、前記論理アドレスに対応するLVTエントリを見つけることに応答して、前記システムは、前記ドリフト・バッファ・インデックス有効フィールドをチェックし、前記ドリフト・バッファ・インデックス有効フィールドが前記リクエストされたデータが前記ドリフト・バッファ中にないことを示すことに応答して、前記システムは、前記VBAをそのLVTエントリから利用し、前記ドリフト・バッファ・インデックス有効フィールドが前記リクエストされたデータが前記ドリフト・バッファ中にあることを示すことに応答して、前記システムは、前記リクエストされたデータを前記ドリフト・バッファから読み取る、請求項8に記載のメモリ・システム。
  13. 前記システムは、前記リクエストされたデータが前記ドリフト・バッファ中にあることを示す前記ドリフト・バッファ有効フィールドに応答して、前記LVTが前記ドリフト・テーブル中のエントリを指し示すように構成されて、前記システムは、前記リクエストされたデータを前記ドリフト・バッファ中の対応するエントリから取得するために前記ドリフト・テーブル中の前記情報を利用する、請求項12に記載のメモリ・システム。
  14. 前記システムは、データがドリフト・バッファ・エントリから除去されることに応答して、データがそれから除去される前記ドリフト・バッファ・エントリに対応する前記LVTエントリが、前記ドリフト・バッファから除去される前記エントリの前記VBAを前記LVTエントリが含むようアップデートされるように構成された、請求項8に記載のメモリ・システム。
  15. メモリ・アクセス動作を行うためのトランスレーションの間に1つ以上の有効なストレージ・チップを識別するように構成されたチップ選択テーブル(CST)、および前記ストレージ・チップの各々に対応するメディア修復テーブル(MRT)であって、各MRTがメモリ・アクセス動作を行うためのトランスレーションの間に1つ以上のストレージ・ダイを識別するように構成された、前記MRTをさらに備える、請求項1に記載のメモリ・システム。
  16. 論理装置番号(LUN)および論理装置番号オフセット(LUNオフセット)として表現された論理アドレスを論理ブロック・アドレス(LBA)に対応させるように構成された論理アドレス変換テーブルをさらに備え、前記LVTが各LBAをVBAへマッピングするように構成された、請求項1に記載のメモリ・システム。
  17. データを1つ以上のメモリ・カードから読み取るための方法であって、各メモリ・カードが複数のストレージ・チップを有し、各ストレージ・チップが複数のメモリ・セルを有する複数のダイを有し、前記方法は、
    前記1つ以上のメモリ・カード上に位置するデータに対するリクエストを発行することと、
    複数のエントリを有する論理から仮想へのトランスレーション・テーブル(LVT)中の前記リクエストされたデータに対する論理アドレスをルックアップすることであって、前記LVT中の各エントリが論理アドレスを仮想ブロック・アドレス(VBA)へマッピングし、前記VBAが前記1つ以上のメモリ・カード中のメモリ・セルの群に対応する、前記ルックアップすることと、
    前記LVTにおけるエントリ中の前記リクエストされたデータの前記論理アドレスの位置を特定することに応答して、前記データがドリフト・バッファ中に位置するかどうかを判定するためにそのLVTエントリをチェックすることと、
    前記データが前記ドリフト・バッファ内に位置すると判定することに応答して、前記リクエストされたデータを前記ドリフト・バッファから読み取ることと、
    前記データが前記ドリフト・バッファ中に位置しないと判定することに応答して、前記リクエストされたデータの前記論理アドレスに対応する前記LVTエントリから前記VBAを取得して、前記VBAに対応する前記メモリ・カード中の前記リクエストされたデータを読み取ることと
    を含む、方法。
  18. 前記リクエストされたデータを前記メモリ・カードから読み取ることに応答して、前記LVT中の読み取りレベル・カウント・フィールドをアップデートすることをさらに含む、請求項17に記載の方法。
  19. 前記LVTエントリ中の前記読み取りレベル・カウントを前記LVTエントリ中の読み取りレベル閾値フィールドと比較することと、前記読み取りレベル・カウントが前記読み取りレベル閾値に等しいか、またはそれを超過することに応答して、前記読み取られるべきデータを異なるVBAをもつ前記1つ以上のメモリ・カード上の新しい位置へ書き込むこととをさらに含む、請求項18に記載の方法。
  20. 読み取られるべき前記データを異なるVBAをもつ前記1つ以上のメモリ・カード上の新しい位置へ書き込むことに応答して、前記LVTを前記異なるVBAでアップデートすることをさらに含む、請求項19に記載の方法。
  21. データが前記ドリフト・バッファから除去されることに応答して、対応するLVTエントリ中の前記VBAをアップデートすることをさらに含む、請求項20に記載の方法。
  22. データを前記ドリフト・バッファから読み取ることに応答して、あるエントリを前記ドリフト・バッファの先頭へ移動させることをさらに含む、請求項17に記載の方法。
  23. データを1つ以上のメモリ・カードへ書き込む方法であって、各メモリ・カードが複数のストレージ・チップを有し、各ストレージ・チップが複数のメモリ・セルを有する複数のダイを有し、前記方法は、
    前記データを前記1つ以上のメモリ・カード上へ書き込むためのリクエストを発行することと、
    利用可能なVBAをVBAフリー・リストから取得することと、
    前記データを前記VBAフリー・リストから取得された前記利用可能なVBAに対応する前記メモリ・カード位置へ書き込むことと、
    前記データをドリフト・バッファ中のエントリへ書き込むことと、
    前記利用可能なVBAの前記VBAおよびその利用可能なVBAへの前記対応する論理アドレスを前記ドリフト・バッファ中の前記エントリに対応するドリフト・テーブル中のエントリへ書き込むことと
    をさらに含む、方法。
  24. 前記利用可能なVBAをもつ前記対応するVLTエントリを書き込むことをさらに含む、請求項23に記載の方法。
  25. 前記データがそれへ書き込まれる前記メモリ・カード上の前記位置に対応する前記VBAに対応する前記LVTエントリへ、前記データがそれに書き込まれる前記ドリフト・バッファ・エントリに対応する前記ドリフト・テーブル・エントリを識別するドリフト・テーブル・インデックスを書き込むことと、
    前記データが前記ドリフト・バッファ中にあることを識別するための1ビットをセットすることと
    をさらに含む、請求項23に記載の方法。
JP2022539008A 2020-01-07 2020-12-09 ストレージ・クラス・メモリ Pending JP2023510709A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/736,547 US10990537B1 (en) 2020-01-07 2020-01-07 Logical to virtual and virtual to physical translation in storage class memory
US16/736,547 2020-01-07
PCT/IB2020/061671 WO2021140379A1 (en) 2020-01-07 2020-12-09 Storage class memory

Publications (1)

Publication Number Publication Date
JP2023510709A true JP2023510709A (ja) 2023-03-15

Family

ID=75587569

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022539008A Pending JP2023510709A (ja) 2020-01-07 2020-12-09 ストレージ・クラス・メモリ

Country Status (6)

Country Link
US (2) US10990537B1 (ja)
JP (1) JP2023510709A (ja)
CN (1) CN114787783A (ja)
DE (1) DE112020006443T5 (ja)
GB (1) GB2607476A (ja)
WO (1) WO2021140379A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11314446B2 (en) * 2020-06-25 2022-04-26 Micron Technology, Inc. Accelerated read translation path in memory sub-system
US11929127B2 (en) * 2021-08-31 2024-03-12 Micron Technology, Inc. Selective data pattern write scrub for a memory system
CN114817967B (zh) * 2022-06-24 2022-09-30 中关村科学城城市大脑股份有限公司 一种基于城市大脑的数据安全共享方法及系统

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114595A1 (en) 2003-11-26 2005-05-26 Veritas Operating Corporation System and method for emulating operating system metadata to provide cross-platform access to storage volumes
US8285940B2 (en) * 2008-02-29 2012-10-09 Cadence Design Systems, Inc. Method and apparatus for high speed cache flushing in a non-volatile memory
CN101853254B (zh) 2009-03-31 2013-08-14 国际商业机器公司 挂载文件或目录到本地或远程主机的方法和装置
US8219776B2 (en) 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US9069657B2 (en) 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US9575690B2 (en) 2011-12-23 2017-02-21 Oracle International Corporation Sub-lun auto-tiering
US9348758B2 (en) 2012-09-24 2016-05-24 Sk Hynix Memory Solutions Inc. Virtual addressing with multiple lookup tables and RAID stripes
US9804969B2 (en) 2012-12-20 2017-10-31 Qualcomm Incorporated Speculative addressing using a virtual address-to-physical address page crossing buffer
TWI489279B (zh) 2013-11-27 2015-06-21 Realtek Semiconductor Corp 虛擬實體位址轉換系統以及虛擬實體位址轉換系統的管理方法
US20150186259A1 (en) * 2013-12-30 2015-07-02 Sandisk Technologies Inc. Method and apparatus for storing data in non-volatile memory
JP2016012166A (ja) 2014-06-27 2016-01-21 富士通株式会社 ストレージ管理装置,ストレージ管理プログラム,及び制御方法
US9542122B2 (en) 2014-10-23 2017-01-10 Seagate Technology Llc Logical block addresses used for executing host commands
US10452560B2 (en) 2015-07-14 2019-10-22 Western Digital Technologies, Inc. Wear leveling in non-volatile memories
US20170177497A1 (en) 2015-12-21 2017-06-22 Qualcomm Incorporated Compressed caching of a logical-to-physical address table for nand-type flash memory
US9910773B2 (en) * 2016-03-29 2018-03-06 Sandisk Technologies Llc Method and system for compacting data in non-volatile memory
US10649672B1 (en) * 2016-03-31 2020-05-12 EMC IP Holding Company LLC Offloading device maintenance to an external processor in low-latency, non-volatile memory
US20170371559A1 (en) * 2016-06-28 2017-12-28 Sandisk Technologies Llc Systems and Methods for Optimizing Media Read Times
US10229047B2 (en) 2016-08-06 2019-03-12 Wolley Inc. Apparatus and method of wear leveling for storage class memory using cache filtering
US20180095690A1 (en) 2016-09-30 2018-04-05 Hewlett Packard Enterprise Development Lp Creating virtual storage volumes in storage systems
US10372657B2 (en) 2016-12-26 2019-08-06 Intel Corporation Bimodal PHY for low latency in high speed interconnects
US10474528B2 (en) 2017-10-02 2019-11-12 Western Digital Technologies, Inc. Redundancy coding stripe based on coordinated internal address scheme across multiple devices

Also Published As

Publication number Publication date
GB202211238D0 (en) 2022-09-14
US11675707B2 (en) 2023-06-13
CN114787783A (zh) 2022-07-22
US20210216470A1 (en) 2021-07-15
GB2607476A (en) 2022-12-07
DE112020006443T5 (de) 2022-12-15
US10990537B1 (en) 2021-04-27
WO2021140379A1 (en) 2021-07-15

Similar Documents

Publication Publication Date Title
US11507281B2 (en) Method and apparatus for flexible RAID in SSD
US5404361A (en) Method and apparatus for ensuring data integrity in a dynamically mapped data storage subsystem
JP2023510709A (ja) ストレージ・クラス・メモリ
US11164650B2 (en) Scrub management in storage class memory
KR101459861B1 (ko) 스트라이프 기반 메모리 작동
US7533321B2 (en) Fault tolerant encoding of directory states for stuck bits
US9454309B2 (en) Management of a secure delete operation
US11989452B2 (en) Read-disturb-based logical storage read temperature information identification system
US11922067B2 (en) Read-disturb-based logical storage read temperature information maintenance system
US20140173378A1 (en) Parity data management for a memory architecture
CN107402890A (zh) 一种基于固态盘阵列和缓存的数据处理方法及系统
US10997084B2 (en) Virtual to physical translation and media repair in storage class memory
US11907063B2 (en) Read-disturb-based physical storage read temperature information identification system
JPH07234763A (ja) ディスクアレイ装置の処理方法
WO2013023564A9 (en) Method and apparatus for flexible raid in ssd
CN117407325A (zh) 支持ssd的数据管理方法及系统

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230525