JP2022094912A - ソリッドステートドライブの永続性メモリ内の論理‐物理アドレス間接参照テーブル - Google Patents

ソリッドステートドライブの永続性メモリ内の論理‐物理アドレス間接参照テーブル Download PDF

Info

Publication number
JP2022094912A
JP2022094912A JP2021155492A JP2021155492A JP2022094912A JP 2022094912 A JP2022094912 A JP 2022094912A JP 2021155492 A JP2021155492 A JP 2021155492A JP 2021155492 A JP2021155492 A JP 2021155492A JP 2022094912 A JP2022094912 A JP 2022094912A
Authority
JP
Japan
Prior art keywords
logical
volatile memory
address
block
physical
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
JP2021155492A
Other languages
English (en)
Inventor
ナガラジャン スレシュ
Nagarajan Suresh
クリッピン スコット
Crippin Scott
カリリ サハー
Khalili Sahar
ナタラジャン シャンカー
Natarajan Shankar
トリヴェディ ロメシュ
Trivedi Romesh
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JP2022094912A publication Critical patent/JP2022094912A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/08Address circuits; Decoders; Word-line control circuits
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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
    • G11C8/00Arrangements for selecting an address in a digital store
    • G11C8/06Address interface arrangements, e.g. address buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • 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/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • 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/7209Validity control, e.g. using flags, time stamps or sequence numbers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/005Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor comprising combined but independently operative RAM-ROM, RAM-PROM, RAM-EPROM cells
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series

Abstract

Figure 2022094912000001
【課題】論理‐物理(L2P)間接参照テーブルを有するソリッドステートドライブを提供する。
【解決手段】永続性メモリに格納されたL2P間接参照テーブルは複数のエントリを有し、各エントリが、論理ブロックアドレスに割り当てられたブロックアドレス指定可能メモリに物理ブロックアドレスを格納するソリッドステートドライブは、永続性メモリ及びブロックアドレス指定可能メモリに通信可能に結合されたソリッドステートドライブコントローラ回路を含む。ソリッドステートドライブコントローラ回路は、論理‐物理アドレス間接参照テーブルキャッシュと、当該論理‐物理アドレス間接参照テーブルキャッシュをモニタリングするための回路とを格納するとともに、論理‐物理アドレス間接参照テーブルキャッシュ内のダーティ論理‐物理エントリを、永続性メモリ内の論理‐物理アドレス間接参照テーブルに書き込むための、揮発性メモリを含む。
【選択図】図1

Description

本開示は、ストレージデバイス、特に、ソリッドステートドライブの永続性メモリに格納された論理‐物理(L2P)アドレス間接参照テーブルに関する。
コンピュータシステムは通常、揮発性システムメモリ、例えば、ダイナミックランダムアクセスメモリ(DRAM)、及びストレージデバイスを含む。ストレージデバイスは、ブロックアドレス指定可能不揮発性メモリを含むソリッドステートドライブ(SSD)であり得る。
論理ブロックは、ソリッドステートドライブのブロックアドレス指定可能不揮発性メモリにアクセスするための読み取り及び書き込みコマンド用の最も小さいアドレス指定可能データユニットである。論理ブロックのアドレスは一般に、論理ブロックアドレス(LBA)と称される。
論理‐物理(L2P)アドレス間接参照テーブルは、物理ブロックアドレスを、各LBAに対応するソリッドステートドライブ内のブロックアドレス指定可能不揮発性メモリに格納する。L2Pアドレステーブルのサイズは、ソリッドステートドライブのユーザ容量に依存する。通常、L2Pアドレステーブルのサイズは、ソリッドステートドライブ内のユーザ容量のギガバイト(GB)ごとに約1メガバイト(MB)である。
特許請求される発明の実施形態の特徴は、以下で詳細に説明を進めるにつれて、図面を参照することにより明らかになる。図面においては、類似の数字は類似の部分を示し、図面は、以下の通りである。
ソリッドステートドライブの実施形態のブロック図である。 図1に示されるソリッドステートドライブL2P間接参照テーブルの例である。 ホストシステム上で実行されているオペレーティングシステムから受信された書き込みコマンドに応じてソリッドステートドライブ内で実行される動作のフローグラフである。 ホストシステム上で実行されているオペレーティングシステムから受信された読み取りコマンドに応じてソリッドステートドライブ内で実行される動作のフローグラフである。 ホストシステム上で実行されているオペレーティングシステムから受信されたトリムコマンドに応じてソリッドステートドライブ内で実行される動作のフローグラフである。 L2P間接参照テーブルを格納するためにソリッドステートドライブ内に永続性メモリを含むコンピュータシステムの実施形態のブロック図である。
以下の詳細な説明は、特許請求される発明の例示的な実施形態を参照しつつ進められるが、当該実施形態に対する多くの代替形態、修正形態及び変形形態が当業者には明らかであろう。従って、特許請求される発明は広く解釈され、添付の特許請求の範囲に記載した通りに定義される意図である。
L2Pアドレステーブル(L2P間接参照テーブル又はL2Pテーブルとも称される)は、バイトアドレス指定可能揮発性メモリ(例えば、ダイナミックランダムアクセスメモリ(DRAM)又はシンクロナスダイナミックランダムアクセスメモリ(SDRAM))に格納される。L2Pテーブルは、バイトアドレス指定可能揮発性メモリに格納され、L2P間接参照テーブルから物理ブロックアドレスの読み取りを加速して、ソリッドステートドライブ内のブロックアドレス指定可能不揮発性メモリ(例えば、NANDフラッシュメモリ)の物理ブロックにアクセスする。L2P間接参照テーブルを格納するためのバイトアドレス指定可能揮発性メモリは、ソリッドステートドライブ、又はソリッドステートドライブに通信可能に結合されたホストに含まれ得る。
L2P間接参照テーブルは、ホストメモリバッファ、例えば、システムDRAMの一部に格納され得る。ホストメモリバッファ内のL2P間接参照テーブルに対するあらゆる書き込み(更新)において、ソリッドステートドライブのブロックアドレス指定可能不揮発性メモリ内に格納されたL2P間接参照テーブルは、同時に書き込まれる(ライトスルーモード)。L2Pテーブルに対する書き込みの性能は、最も長い書き込み時間、すなわち、ブロックアドレス指定可能不揮発性メモリ又はホストメモリバッファに書き込む時間に基づく。
L2P間接参照テーブルは、ソリッドステートドライブ内のバイトアドレス指定可能揮発性メモリに格納され得る。しかしながら、L2P間接参照テーブルのサイズは、ソリッドステートドライブのユーザ容量に依存する(例えば、ユーザ容量のギガバイト(GB)ごとに約1メガバイト(MB))。ソリッドステートドライブ内の不揮発性メモリ(ユーザ容量とも称される)における増加には、L2P間接参照テーブルを格納するためのバイトアドレス指定可能揮発性メモリの対応する増加が必要である。
一実施形態において、L2P間接参照テーブルに対する書き込みの性能は、ソリッドステートドライブ内の永続性メモリにL2P間接参照テーブルを格納することにより向上する。
本発明の様々な実施形態及び態様は、以下に説明される詳細を参照して説明され、添付の図面は、様々な実施形態を例示する。以下の説明及び図面は、本発明の例示であり、本発明を限定するものとして解釈されるべきではない。本発明の様々な実施形態の完全な理解を授けるために、多くの具体的な詳細について説明されている。しかしながら、特定の例においては、本発明の実施形態を簡単に説明すべく、周知又は従来のものの詳細については説明しない。
本明細書における「1つの実施形態(one embodiment)」又は「一実施形態(an embodiment)」への言及は、当該実施形態と関連して説明された特定の特徴、構造、又は特性が、本発明の少なくとも1つの実施形態に含まれ得ることを意味する。本明細書の様々な箇所に現れる「一実施形態において(in one embodiment)」という文言は、必ずしも全てが同一の実施形態を指していない。
図1は、ソリッドステートドライブ100の実施形態のブロック図である。ソリッドステートドライブ100は、ソリッドステートドライブコントローラ回路104、永続性メモリ106、及びブロックアドレス指定可能不揮発性メモリ108を含む。
ソリッドステートドライブコントローラ回路104は、ホストインタフェース回路102、永続性メモリコントローラ回路110、不揮発性ブロックアドレス指定可能メモリコントローラ回路112、プロセッサ122、ファームウェア140、ハードウェアアシスト回路116、及びスタティックランダムアクセスメモリ130を含む。ソリッドステートドライブコントローラ回路104は、フィールドプログラマブルゲートアレイ(FPGA)又は特定用途向け集積回路(ASIC)に含まれ得る。
ホストシステムは、高速シリアルコンピュータ拡張バス120、例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)バスを介して、ソリッドステートドライブ100と通信し得る。ホストインタフェース回路102は、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)バスを介して通信を管理する。一実施形態において、ホストシステムは、不揮発性メモリエクスプレス(NVMe)規格プロトコルを使用するペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)バスを介して通信する。不揮発性メモリエクスプレス(NVMe)規格プロトコルは、ホストソフトウェアに対して、レジスタレベルのインタフェースを定義して、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)バスを介してソリッドステートドライブ(SSD)100と通信する。NVMエクスプレス規格は、www.nvmexpress.orgで利用可能である。PCIe規格は、pcisig.comで利用可能である。
NVM Expressインタフェースは、ホストソフトウェアが、ペアになったサブミッションキュー及び完了キューメカニズムに基づいて、高速シリアルコンピュータ拡張バス120を介してソリッドステートドライブ100と通信することを可能にする。サブミッションキュー(SQ)144と完了キュー(CQ)142は、メモリに割り当てられる。サブミッションキュー144は、ホストソフトウェアがソリッドステートドライブコントローラ回路104による実行のためのコマンドをサブミットするために使用する固定スロットサイズの循環バッファである。完了キュー142は、完了したコマンドの状態を掲示するのに使用される固定スロットサイズを有する循環バッファである。
NVMeコマンドセットは、ペアになったサブミッション及び完了キューのために使用される。ホストソフトウェアは、ソリッドステートドライブコントローラ回路104による実行のために、NVMeコマンドセットからのコマンドを、サブミッションキュー144に挿入する。ソリッドステートドライブコントローラ回路104は、関連付けられた完了キュー142に完了を挿入する。
スタティックランダムアクセスメモリ130の一部は、L2P間接参照テーブルキャッシュ132に割り当てられ、永続性メモリ106に格納されている永続性メモリ(PM)L2P間接参照テーブル118の一部を格納する。スタティックランダムアクセスメモリ130の別の部分は、高速シリアルコンピュータ拡張バス120を介して転送されたデータを格納するために、バッファ134として割り当てられる。一実施形態において、スタティックランダムアクセスメモリ130は、1又は複数のメガバイト(MB)である。
スタティックランダムアクセスメモリ130の別の部分は、物理‐論理(P2L)間接参照テーブル136として割り当てられる。L2P間接参照テーブルキャッシュ132及び物理‐論理(P2L)間接参照テーブル136の両方は、論理ブロックアドレスに対応するソリッドステートドライブ内のブロックアドレス指定可能不揮発性メモリに物理ブロックアドレスを格納する。P2L間接参照テーブル136におけるエントリは、静的である(書き込まれた後、更新されていない)。L2P間接参照テーブルキャッシュ132におけるエントリは、動的に更新される。
スタティックランダムアクセスメモリ130は、揮発性メモリである。揮発性メモリは、デバイスへの電力が遮断された場合、その状態(に従って、その中に格納されたデータも)が不確定となるメモリである。SRAMは、ラッチング回路を使用して各ビットを格納する揮発性メモリの一種である。SRAMは通常、キャッシュメモリとして使用される。これは、ダイナミックランダムアクセスメモリ(DRAM)とは対照的に、SRAMに格納されたデータは、周期的に更新される必要がないからである。
永続性メモリ106及びブロックアドレス指定可能不揮発性メモリ108は、不揮発性メモリである。不揮発性メモリ(NVM)デバイスは、デバイスへの電力が遮断された場合であっても、その状態が確定であるメモリである。一実施形態において、ブロックアドレス指定可能不揮発性メモリ108は、NANDフラッシュメモリ、又はより具多的には、多閾値レベルのNANDフラッシュメモリ(例えば、シングルレベルセル(「SLC」)、マルチレベルセル(MLC)、トライレベルセル(「TLC」)、クワッドレベルセル(「QLC」)、ペンタレベルセル(「PLC」)又はいくつかの他のNANDフラッシュメモリ)である。
ブロックアドレス指定可能不揮発性メモリ108は、少なくとも1つの不揮発性メモリダイ、例えば、NANDフラッシュダイを含む。通常、データは、SSD内の多くのNANDフラッシュダイにわたって書き込まれ(ストライピングされ)、書き込み帯域幅を最適化する。不揮発性メモリダイ上の不揮発性メモリは、複数のブロックを含み、各ブロックは複数のページを含む。複数のページ内の各ページは、データ及び関連付けられたメタデータを格納する。一実施形態において、不揮発性メモリダイは、2048個のブロックを有し、各ブロックは64ページを有し、各ページは2048バイトのデータと64バイトのメタデータを格納し得る。
永続性メモリ106は、バイトアドレス指定可能所定位置書き込み式(write-in-place)不揮発性メモリである。バイトアドレス指定可能所定位置書き込み式(write-in-place)不揮発性メモリデバイスの例は、3次元クロスポイントメモリデバイス、シングル若しくはマルチレベル相変化メモリ(PCM)又はスイッチを有する相変化メモリ(PCMS)、INTEL OPTANE、カルコゲニド相変化材料(例えば、カルコゲニドガラス)を使用する不揮発性メモリデバイス、金属酸化物ベースと酸素空孔ベースと導電性ブリッジランダムアクセスメモリ(CB-RAM)とを含む抵抗メモリ、ナノワイヤメモリ、強誘電体ランダムアクセスメモリ(FeRAM,RAM)、メモリスタ技術を組み込む磁気抵抗ランダムアクセスメモリ(MRAM)、スピン転送トルク(STT)-MRAM、スピントロニック磁気接合メモリベースのデバイス、磁気トンネル接合(MTJ)ベースのデバイス、DW(Domain Wall)並びにSOT(Spin Orbit Transfer)ベースのデバイス、サイリスタベースのメモリデバイス、又は上記のいずれかの組み合わせ、又はその他のメモリを含む。
ハードウェアアシスト回路116(回路116とも称される)は、永続性メモリ106とブロックアドレス指定可能不揮発性メモリ108との間のデータ転送を管理する。永続性メモリ106の一部は、PM L2P間接参照テーブル118を格納するために割り当てられる。ブロックアドレス指定可能不揮発性メモリ108の一部は、マスタL2P間接参照テーブル148を格納するのに使用される。PM L2P間接参照テーブル118のサイズは、1:1000の比に基づいてブロックアドレス指定可能不揮発性メモリ108の容量に依存する。例えば、永続性メモリ106内のPM L2P間接参照テーブル118は、ブロックアドレス指定可能不揮発性メモリ108の1ギガバイト(GB)ごとに1メガバイト(MB)である。PM L2P間接参照テーブル118は、マスタL2P間接参照テーブル148のコピーである。PM L2P間接参照テーブル118及びマスタL2P間接参照テーブル148の両方は、不揮発性メモリに格納され、ソリッドステートドライブ100の動作中に周期的に同期される。
永続性メモリ106の残りの部分は、PM L2P間接参照テーブル118、ユーザデータ、永続性メモリメタデータ及びホストメタデータを格納するのに使用され得る。永続性メモリ/ホストメタデータ。一実施形態において、永続性メモリの約5%はPM L2P間接参照テーブル118を格納するのに使用され、約5%は永続性メモリ/ホストメタデータを格納するのに使用され、約90%はユーザデータを格納するのに使用される。
一実施形態において、永続性メモリ106に格納されたユーザデータは、頻繁にアクセスされるユーザデータ、オペレーティングシステムファイル及び実行可能なプログラムを含み得る。頻繁にアクセスされるユーザデータは、「ホット」ユーザデータと称され得る。「コールド」ユーザデータとも称される頻繁にアクセスされないデータは、ブロックアドレス指定可能不揮発性メモリ108に格納され得る。永続性メモリ106は、「ストレージアクセラレータメモリ」と称され得る。これは、永続性メモリ106の読み取りレイテンシが、ブロックアドレス指定可能不揮発性メモリ108の読み取りレイテンシより少ないからである。
他の実施形態において、永続性メモリ106はSLC NANDであり得、ブロックアドレス指定可能不揮発性メモリは、セルごとに1ビットより多くを有するNANDであり得る(例えば、MLC、TLC、QLC、PLC NAND)。SLC NANDの読み取りレイテンシは、セルごとに1ビットより多くを有するNANDより速い。
ソリッドステートドライブコントローラ回路104内の不揮発性ブロックアドレス指定可能メモリコントローラ回路112は、コマンド(例えば、読み取り、書き込み「プログラム」)をキューイング及び処理し、ブロックアドレス指定可能不揮発性メモリ108に格納されたユーザデータに対するコマンドを消去する。
ソリッドステートドライブ100は、ダイナミックランダムアクセスメモリ(DRAM)を含まず、DRAMレスソリッドステートドライブと称され得る。
図2は、図1に示された永続性メモリ106に格納され得る、図1に示されたPM L2P間接参照テーブル118の例である。ソリッドステートドライブのPM L2P間接参照テーブル118内の各L2Pエントリ(「行」)204は、ソリッドステートドライブ100内のブロックアドレス指定可能不揮発性メモリ108の物理的位置(「PLOC」)を格納する。物理的位置は、論理ブロックアドレス(LBA)(インデックス0からMAXLBAのテーブルインデックス)に対応する。L2Pエントリ204は、メタデータ(「META」)も含む。
ソリッドステートドライブ100内のブロックアドレス指定可能不揮発性メモリ108が1又は複数のNANDフラッシュダイを含む一実施形態において、PLOCは、データが特定のLBAに格納された1又は複数のNANDフラッシュダイにおける物理的位置である。例えば、L2Pエントリ204において、LBA0に対応する物理的位置A(「PLOC‐A」)は、NANDフラッシュダイ‐0、ブロック‐1、ページ‐1、オフセット‐0であり得る。
メタデータは、他のデータについての情報を提供するデータである。例えば、メタデータの1ビットは、L2P間接参照テーブル200内のL2Pエントリ204におけるPLOCへの読み取り/書き込みアクセスを防止するための「ロックビット」であり得る。メタデータの別のビットは、「ダーティビット」であり得、その状態は、L2Pエントリ204に対するユーザデータが、ソリッドステートドライブ100内のブロックアドレス指定可能不揮発性メモリ108にフラッシュされたかどうかを示す。L2Pエントリ204のダーティビットは、L2Pエントリ204が書き込まれた場合に、「ダーティ」に設定される。
一実施形態において、複数のレベルのL2P間接参照テーブル、L2P間接参照テーブルキャッシュ132、PM L2P間接参照テーブル118、及びマスタL2P間接参照テーブル148が存在する。プロセッサ122により実行されるファームウェア140は、スタティックランダムアクセスメモリ130内のL2P間接参照テーブルキャッシュ132におけるL2Pエントリに対する最初の検索と、永続性メモリ106内のPM L2P間接参照テーブル118における次の検索とを実行する。L2P位置が、スタティックランダムアクセスメモリ130内のL2P間接参照テーブルキャッシュ132にない又は永続性メモリ106内のPM L2P間接参照テーブル118にない場合、L2Pエントリは、ブロックアドレス指定可能不揮発性メモリ108内のマスタL2P間接参照テーブル148にある。
図3は、ホストシステム上で実行されているオペレーティングシステムから受信された書き込みコマンドに応じてソリッドステートドライブ100内で実行される動作のフローグラフである。
前述のように、サブミッションキューは、固定スロットサイズを有する循環バッファである。ホストシステム内で実行されるオペレーティングシステムは、ソリッドステートドライブコントローラ回路104による実行のためにサブミッションキューにコマンドを挿入し得る。プロセッサ122内のファームウェア140は、サブミッションキューからコマンドを順番にフェッチし、任意の順序でコマンドを実行し得る。
ブロック300において、処理対象のサブミッションキュー上に書き込みコマンドが存在する場合、処理はブロック302で継続される。
ブロック302において、プロセッサ122内のファームウェア140は、ホストインタフェース回路102内のサブミッションキュー144からフェッチされた書き込みコマンドを実行する。ホストインタフェース回路102を介してホストから受信された、ソリッドステートドライブ100に書き込まれる予定のデータは、バッファ134に書き込まれ、P2Lエントリは、P2L間接参照テーブル136に挿入される。
ブロック304において、バッファ134に格納されたデータは、ブロックアドレス指定可能不揮発性メモリ108に移動され、P2L間接参照テーブル136内のP2Lエントリは、L2P間接参照テーブルキャッシュ132に挿入される。
ブロック306において、L2P間接参照テーブルキャッシュ132内のエントリは、永続性メモリ106内のPM L2P間接参照テーブル118に移動される。L2P間接参照テーブルキャッシュ132内の蓄積されたエントリの数は、永続性メモリ106に対する最小転送サイズに依存する。処理はブロック300で継続され、サブミッションキューからの別の書き込み要求を処理する。
図4は、ホストシステム上で実行されているオペレーティングシステムから受信された読み取りコマンドに応じてソリッドステートドライブ100内で実行される動作のフローグラフである。一実施形態において、読み取りコマンドはNVMe読み取りコマンドである。NVMe読み取りコマンドは、永続性メモリ106及びブロックアドレス指定可能不揮発性メモリ108の両方に送信され得る。NVMe読み取りコマンドは、永続性メモリ106に格納されたメタデータの読み取りをもたらし得る。
ホストシステム上で実行されているオペレーティングシステムは、プロセッサ122内のファームウェア140による実行のためにサブミッションキューに読み取りコマンドを挿入し得る。ソリッドステートドライブコントローラ回路104は、サブミッションキューから読み取りコマンドをフェッチする。読み取りコマンドは、ソリッドステートドライブ100内のブロックアドレス指定可能不揮発性メモリ108又は永続性メモリ106から読み取られるデータの論理ブロックアドレスを含む。
ブロック400において、処理予定のサブミッションキューに読み取りコマンドが存在する場合、ソリッドステートドライブコントローラ回路104は、サブミッションキューから読み取りコマンドをフェッチして、処理はブロック402で継続される。
ブロック402において、ソリッドステートドライブ100内のソリッドステートドライブコントローラ回路104は、ソリッドステートドライブ100内のスタティックランダムアクセスメモリ130のP2L間接参照テーブル136から、論理ブロックアドレスに対応するP2Lエントリを検索する。読み取られるデータの論理ブロックアドレスに対応するP2Lエントリが存在する場合、処理はブロック404で継続される。そうでない場合、処理はブロック406で継続される。
ブロック404において、論理ブロックアドレスに対応する物理ブロックの物理アドレスは、P2L間接参照テーブル136内のL2Pエントリから読み取られる。データは、論理ブロックアドレスに対応するP2L間接参照テーブル136内のP2Lエントリの物理ブロックにおいて、ブロックアドレス指定可能不揮発性メモリ108から読み取られる。処理はブロック400で継続され、サブミッションキューから別の読み取りコマンドをフェッチする。
ブロック406において、ソリッドステートドライブ100内のソリッドステートドライブコントローラ回路104は、ソリッドステートドライブ100内のスタティックランダムアクセスメモリ130のL2P間接参照テーブルキャッシュ132から、論理ブロックアドレスに対応するL2Pエントリを検索する。読み取られるデータの論理ブロックアドレスに対応するL2Pエントリが存在する場合、処理はブロック408で継続される。そうでない場合、処理はブロック410で継続される。
ブロック408において、論理ブロックアドレスに対応する物理ブロックの物理アドレスは、スタティックランダムアクセスメモリ130内のL2P間接参照テーブルキャッシュ132のL2Pエントリから読み取られる。データは、論理ブロックアドレスに対応するL2P間接参照テーブルキャッシュ132内のL2Pエントリの物理ブロックにおいて、ブロックアドレス指定可能不揮発性メモリ108から読み取られる。処理はブロック400で継続され、サブミッションキューから別の読み取りコマンドをフェッチする。
ブロック410において、ソリッドステートドライブ100内のソリッドステートドライブコントローラ回路104は、ソリッドステートドライブ100内の永続性メモリ106のPM L2P間接参照テーブル118から、論理ブロックアドレスに対応するL2Pエントリを検索する。読み取られるデータの論理ブロックアドレスに対応するL2Pエントリが存在する場合、処理はブロック412で継続される。そうでない場合、処理はブロック400で継続される。
ブロック412において、論理ブロックアドレスに対応する物理ブロックの物理アドレスは、PM L2P間接参照テーブル118内のL2Pエントリから読み取られる。データは、ブロックアドレス指定可能不揮発性メモリ108内の物理ブロックから読み取られる。処理はブロック400で継続され、サブミッションキューから別の読み取りコマンドをフェッチする。
ソリッドステートドライブコントローラ回路104は、ブロックアドレス指定可能不揮発性メモリ108内のデータのあるブロックからデータのあるページを読み取り及び書き込み可能であるが、ブロックレベルでのみ消去することができる。ソリッドステートドライブコントローラ回路104は、データが消去されるまでに、ブロックアドレス指定可能不揮発性メモリ内のデータを上書きできない。読み取り/書き込み性能が消去動作により影響を受けないことを保証するために、「ガーベジコレクション」とも既知である消去動作は集約される。オペレーティングシステムは、もはや必要とされない、且つソリッドステートドライブ100に対してトリムコマンドを発行することにより消去され得る、ファイル及びデータを識別する。
図5は、ホストシステム上で実行されているオペレーティングシステムから受信されたトリムコマンドに応じてソリッドステートドライブ100内で実行される動作のフローグラフである。トリムコマンドの例は、NVMe割り当て解除コマンドである。トリムコマンドは、ブロックアドレス指定可能不揮発性メモリ108内の、消去され得るブロックを識別する。
ブロック500において、処理予定のサブミッションキューにトリムコマンドが存在する場合、ソリッドステートドライブコントローラ回路104は、サブミッションキューからトリムコマンドをフェッチして、処理はブロック502で継続される。
ブロック502において、ソリッドステートドライブ100内のスタティックランダムアクセスメモリ130のP2L間接参照テーブル136で、消去される論理ブロックアドレス又は複数の論理ブロックアドレスの範囲に対応するP2Lエントリ又はエントリが検索される。論理ブロックアドレスに対応するP2Lエントリが存在する場合、処理はブロック504で継続される。そうでない場合、処理はブロック406で継続される。
ブロック504において、論理ブロックアドレスに対応するP2L間接参照テーブルのエントリはクリアにされる。処理はブロック500で継続される。
ブロック506において、ソリッドステートドライブ100内のソリッドステートドライブコントローラ回路104は、ソリッドステートドライブ100内のスタティックランダムアクセスメモリ130のL2P間接参照テーブルキャッシュ132から、論理ブロックアドレスに対応するL2Pエントリを検索する。読み取られるデータの論理ブロックアドレスに対応するL2Pエントリが存在する場合、処理はブロック508で継続される。そうでない場合、処理はブロック510で継続される。
ブロック508において、スタティックランダムアクセスメモリ130内のL2P間接参照テーブルキャッシュ132のL2Pエントリはクリアにされる。処理はブロック500で継続される。
ブロック510において、ソリッドステートドライブ100内のソリッドステートドライブコントローラ回路104は、ソリッドステートドライブ100内の永続性メモリ106のPM L2P間接参照テーブル118から、論理ブロックアドレスに対応するL2Pエントリを検索する。読み取られるデータの論理ブロックアドレスに対応するL2Pエントリが存在する場合、処理はブロック512で継続される。そうでない場合、処理はブロック500で継続される。
ブロック512において、永続性メモリ106内のPM L2P間接参照テーブル118のL2Pエントリは、クリアにされる。例えば、エントリ内の全てのビットは、論理1又は論理0に全てのビットを書き込むことにより、クリアにされ得る。処理はブロック500で継続される。
L2P間接参照テーブルを永続性メモリに格納することは、周波数を低減し、永続性メモリ106内のPM L2P間接参照テーブル118に対する更新の粒度を高める。加えて、ブロックアドレス指定可能不揮発性メモリ108内のマスタL2P間接参照テーブル148を更新するためのハードウェアアシスト回路116の使用は、マスタL2P間接参照テーブル148を更新するとともに、ブロックアドレス指定可能不揮発性メモリ108にデータを格納するために、より多くの帯域幅を提供する。
図6は、PM L2P間接参照テーブル118を格納するためにソリッドステートドライブ100内に永続性メモリ106を含むコンピュータシステム600の実施形態のブロック図である。コンピュータシステム600は、サーバ、ワークステーションコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、及び/又は、タブレットコンピュータを含むコンピューティングデバイスに対応し得るが、これらに限定されない。
コンピュータシステム600は、プロセッサ、グラフィック、メモリ、入出力(I/O)制御ロジックを1つのSoCパッケージに組み合わせるシステムオンチップ(SOC又はSoC)604を含む。SoC604は、少なくとも1つの中央処理装置(CPU)モジュール608、揮発性メモリコントローラ614、及びグラフィックスプロセッサユニット(GPU)610を含む。他の実施形態において、揮発性メモリコントローラ614は、SoC604の外部にあり得る。CPUモジュール608は、少なくとも1つのプロセッサコア602、及びレベル2(L2)キャッシュ606を含む。
示されていないが、プロセッサコア602の各々は、1又は複数の命令/データキャッシュ、実行ユニット、プリフェッチバッファ、命令キュー、ブランチアドレス計算ユニット、命令デコーダ、浮動小数点ユニット、リタイアメントユニット等を内部に含み得る。1つの実施形態によると、CPUモジュール608は、インテル(登録商標)コーポレーションから提供されるものなどの、シングルコア又はマルチコアの汎用プロセッサに対応し得る。
グラフィックスプロセッサユニット(GPU)610は、1又は複数のGPUコアと、GPUコアのグラフィック関連データを格納し得るGPUキャッシュとを含み得る。GPUコアは、1又は複数の実行ユニット及び1又は複数の命令及びデータキャッシュを内部に含み得る。また、グラフィックスプロセッサユニット(GPU)610は、図6に示されていない、1又は複数の頂点処理ユニット、ラスタライズユニット、メディア処理ユニット及びコーデックなどの他のグラフィックスロジックユニットを含み得る。
I/Oサブシステム612内において、プロセッサコア602内で利用されるホスト通信プロトコルを、特定のI/Oデバイスと互換性のあるプロトコルに変換するために、1又は複数のI/Oアダプタ616が存在する。変換のためにアダプタが利用され得るプロトコルの一部には、Peripheral Component Interconnect(PCI)Express(PCIe)、ユニバーサルシリアルバス(USB)、シリアルアドバンスドテクノロジアタッチメント(SATA)及び米国電気電子技術者協会(IEEE)1594"ファイヤワイヤ"が含まれる。
I/Oアダプタ616は、例えば、ディスプレイ及び/又はタッチスクリーンディスプレイ640、プリンタ、キーパッド、キーボード、通信ロジック、有線及び/又は無線、を含むユーザインタフェースデバイスと、ハードディスクドライブ(「HDD」)、ソリッドステートドライブ(「SSD」)、リムーバブルストレージ媒体、デジタルビデオディスク(DVD)ドライブ、コンパクトディスク(CD)ドライブ、独立ディスクの冗長アレイ(RAID)、テープドライブを含むストレージデバイス又は他のストレージデバイスを含み得る外部I/Oデバイス624と通信し得る。複数のストレージデバイスは、様々なプロトコルのうちの1又は複数を使用する1又は複数のバスを通して通信可能に及び/又は物理的に共に連結され得、当該プロトコルとしては、限定されないが、SAS(Serial Attached SCSI(Small Computer System Interface))、PCIe(Peripheral Component Interconnect Express)、NVMe(NVM Express)over PCIe(Peripheral Component Interconnect Express)、SATA(Serial ATA(Advanced Technology Attachment))が含まれる。
また、1又は複数の無線プロトコルI/Oアダプタが存在し得る。無線プロトコルの例としては、とりわけ、パーソナルエリアネットワークで使用されるIEEE802.15及びBluetooth(登録商標)4.0、ワイヤレスローカルエリアネットワークで使用されるIEEE802.11ベースの無線プロトコル及びセルラプロトコルがある。
I/Oアダプタ616はまた、ソリッドステートドライブコントローラ回路104と永続性メモリ106とを含むソリッドステートドライブ(「SSD」)100と通信して、図1と関連して説明されたPM L2P間接参照テーブル118を格納し得る。
I/Oアダプタ616は、高速シリアルコンピュータ拡張バス120上でPCIe(ペリフェラルコンポーネントインターコネクトエクスプレス)プロトコルを介して、NVMe(NVM Express)を使用して、ソリッドステートドライブ100内のホストインタフェース回路102に通信可能に結合されたペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)アダプタを含み得る。不揮発性メモリエクスプレス(NVMe)規格は、ホストソフトウェアが不揮発性メモリサブシステム(例えば、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)を介したソリッドステートドライブ(SSD)、高速シリアルコンピュータ拡張バス)と通信するためのレジスタレベルのインタフェースを定義する。NVMエクスプレス規格は、www.nvmexpress.orgで利用可能である。PCIe規格は、www.pcisig.comで利用可能である。
揮発性メモリは、デバイスへの電力が遮断された場合、その状態(に従って、その中に格納されたデータも)が不確定となるメモリである。ダイナミック揮発性メモリは、状態を維持すべく、デバイスに格納されたデータを更新する必要がある。ダイナミック揮発性メモリの1つの例は、DRAM(ダイナミックランダムアクセスメモリ)又はシンクロナスDRAM(SDRAM)などのいくつかの変形例を含む。本明細書に説明されるメモリサブシステムは、DDR3(Double Data Rate version 3、2007年6月27日にJEDEC(電子機器技術評議会)によりオリジナルリリースされた)、DDR4(DDRバージョン4、JEDECにより2012年9月に初期仕様が公開)、DDR4E(DDRバージョン4)、LPDDR3(Low Power DDRバージョン3、JEDECにより2013年8月に発表されたJESD209-3B)、LPDDR4(LPDDR バージョン4、2014年8月にJEDECにより初版公開されたJESD209-4)、WIO2(Wide Input/Outputバージョン2、2014年8月にJEDECにより初版公開されたJESD229-2)、HBM(高帯域幅メモリ、2013年10月にJEDECにより初版公開されたJESD325)、DDR5(DDR バージョン5、JEDECが現在議論中)、LPDDR5(JEDECが現在議論中)、JEDEC又はその他が現在議論中のHBM2(HBMバージョン2)又はメモリ技術の組み合わせ、及びそのような仕様の派生物又は延長に基づく技術など、多くのメモリ技術と互換性を有し得る。JEDEC規格は、www.jedec.orgで利用可能である。
オペレーティングシステム642は、コンピュータハードウェアを管理するソフトウェア、且つメモリ割り当て及びI/Oデバイスへのアクセスを含むソフトウェアとである。オペレーティングシステムの例には、Microsoft(登録商標)Windows(登録商標)、Linux(登録商標)、iOS(登録商標)及びAndroid(登録商標)が含まれる。
本明細書に例示されるフロー図は、様々な処理動作のシーケンスの例を提供する。フロー図は、ソフトウェア又はファームウェアルーチンにより実行されるべき動作、並びに物理的動作を示し得る。一実施形態において、フロー図は、有限状態機械(FSM)の状態を示し得、FSMは、ハードウェア及び/又はソフトウェアで実装可能である。動作の順序は特定のシーケンス又は順序で示されているが、別様に指定されない限り、それは変更可能である。従って、例示される実施形態は一例として理解されるべきであり、プロセスは異なる順序で実行可能で、いくつかの動作は、並列で実行可能である。また、様々な実施形態において1又は複数の動作は省略可能で、従って、全ての動作が全ての実施形態で必要なわけではない。他の処理フローも可能である。
様々な動作又は機能が本明細書に説明されている範囲内で、それらは、ソフトウェアコード、命令、構成、及び/又はデータとして説明又は定義可能である。コンテンツは、直接実行可能な(「オブジェクト」又は「実行可能な」形態)、ソースコード、又は差分コード(「デルタ」又は「パッチ」コード)であり得る。本明細書で説明された実施形態のソフトウェアコンテンツは、そこに格納されたコンテンツと共に製造物品を介して提供可能であるか、又は、通信インタフェースを動作させて、通信インタフェースを介してデータを送信する方法により提供可能である。機械可読記憶媒体は、機械に対し、説明された機能又は演算を実行させ得、機械可読ストレージは、情報を機械(例えば、コンピューティングデバイス、電子システム等)によりアクセス可能な形態で格納する任意のメカニズムを含み、当該メカニズムとしては、記録可能/記録不可能な媒体(例えば、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス等)がある。通信インタフェースは、メモリバスインタフェース、プロセッサバスインタフェース、インターネット接続、ディスクコントローラなどといった、別のデバイスに通信するためのハードワイヤード媒体、無線媒体、光学式媒体等の媒体のいずれかにインタフェース接続する任意のメカニズムを含む。通信インタフェースは、構成パラメータを提供すること、及び/又は、通信インタフェースに、ソフトウェアコンテンツを記述するデータ信号を提供する準備をさせるための信号を送信することにより構成され得る。通信インタフェースは、通信インタフェースに送信される1又は複数のコマンド又は信号を介してアクセスされ得る。
本明細書に説明されている様々なコンポーネントは、説明されている動作又は機能を実行するための手段であり得る。本明細書で説明された各コンポーネントは、ソフトウェア、ハードウェア、又はこれらの組み合わせを含む。コンポーネントは、ソフトウェアモジュール、ハードウェアモジュール、専用ハードウェア(例えば、特定用途向けハードウェア、特定用途向け集積回路(ASIC)、デジタル信号プロセッサ(DSP)等)、組み込みコントローラ、ハードワイヤード回路等として実装され得る。
本明細書に説明されたものに加え、本発明の開示された実施形態及び実装に対しては、それらの範囲から逸脱することなく、様々な修正が行われ得る。
従って、本明細書の例示及び例は、限定的な意味ではなく、例示として解釈されるべきである。本発明の範囲は、以下に続く特許請求の範囲を参照することによってのみ画定されるべきである。
[他の考えられる項目]
[項目1]
データを格納するためのブロックアドレス指定可能不揮発性メモリと、
論理‐物理アドレス間接参照テーブルを格納するための永続性メモリであって、上記論理‐物理アドレス間接参照テーブルは複数のエントリを有し、各エントリは論理ブロックアドレスに割り当てられた上記ブロックアドレス指定可能不揮発性メモリにおける物理ブロックアドレスを格納する、永続性メモリと、
上記永続性メモリと上記ブロックアドレス指定可能不揮発性メモリとに通信可能に結合されたソリッドステートドライブコントローラ回路と
を備える、ソリッドステートドライブであって、
上記ソリッドステートドライブコントローラ回路は、
論理‐物理アドレス間接参照テーブルキャッシュを格納するための揮発性メモリと、
上記揮発性メモリに通信可能に結合されたアシスト回路であって、上記アシスト回路は、上記論理‐物理アドレス間接参照テーブルキャッシュをモニタリングするとともに、上記永続性メモリ内の上記論理‐物理アドレス間接参照テーブルに、上記論理‐物理アドレス間接参照テーブルキャッシュ内のダーティ論理‐物理エントリを書き込む、アシスト回路と
を有する、
ソリッドステートドライブ。
[項目2]
上記揮発性メモリは、上記アシスト回路により書き込まれるデータを、上記ブロックアドレス指定可能不揮発性メモリに一時的に格納するバッファを含む、項目1に記載のソリッドステートドライブ。
[項目3]
上記ブロックアドレス指定可能不揮発性メモリ内の論理アドレスにデータを書き込むコマンドに応じて、データは、上記ブロックアドレス指定可能不揮発性メモリ内の物理アドレスに書き込まれ、上記物理アドレス及び上記論理アドレスに関連付けられた上記論理‐物理アドレス間接参照テーブルキャッシュ内のエントリはダーティに設定される、項目1に記載のソリッドステートドライブ。
[項目4]
上記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、上記論理‐物理アドレス間接参照テーブルキャッシュで、上記論理ブロックアドレスに関連付けられた上記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、項目1に記載のソリッドステートドライブ。
[項目5]
上記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、永続性メモリ内の上記論理‐物理アドレス間接参照テーブルで、上記論理ブロックアドレスに関連付けられた上記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、項目1に記載のソリッドステートドライブ。
[項目6]
上記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを消去するコマンドに応じて、永続性メモリ内の上記論理‐物理アドレス間接参照テーブルで、上記論理ブロックアドレスに関連付けられた上記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、項目1に記載のソリッドステートドライブ。
[項目7]
上記ブロックアドレス指定可能不揮発性メモリはNANDであり、上記永続性メモリは3次元クロスポイントである、項目1に記載のソリッドステートドライブ。
[項目8]
ブロックアドレス指定可能不揮発性メモリにデータを格納する段階と、
論理‐物理アドレス間接参照テーブルを永続性メモリに格納する段階であって、上記論理‐物理アドレス間接参照テーブルは複数のエントリを有し、各エントリは論理ブロックアドレスに割り当てられた上記ブロックアドレス指定可能不揮発性メモリにおける物理ブロックアドレスを格納する、段階と、
揮発性メモリ内の論理‐物理アドレス間接参照テーブルキャッシュを揮発性メモリに格納する段階と、
上記論理‐物理アドレス間接参照テーブルキャッシュをモニタリングして、上記論理‐物理アドレス間接参照テーブルキャッシュ内のダーティ論理‐物理エントリを上記永続性メモリ内の上記論理‐物理アドレス間接参照テーブルに書き込む段階と
を備える、方法。[項目9]
上記揮発性メモリは、書き込まれるデータを、上記ブロックアドレス指定可能不揮発性メモリに一時的に格納するバッファを含む、項目8に記載の方法。
[項目10]
上記ブロックアドレス指定可能不揮発性メモリ内の論理アドレスにデータを書き込むコマンドに応じて、上記ブロックアドレス指定可能不揮発性メモリ内の物理アドレスにデータを書き込む段階と、
上記物理アドレス及び上記論理アドレスに関連付けられた上記論理‐物理アドレス間接参照テーブルキャッシュ内のエントリをダーティに設定する段階と
をさらに備える、項目9に記載の方法。
[項目11]
上記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、上記論理‐物理アドレス間接参照テーブルキャッシュで、上記論理ブロックアドレスに関連付けられた上記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリを検索する段階
をさらに備える、項目10に記載の方法。
[項目12]
上記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、永続性メモリ内の上記論理‐物理アドレス間接参照テーブルで、上記論理ブロックアドレスに関連付けられた上記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリを検索する段階
をさらに備える、項目11に記載の方法。
[項目13]
上記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを消去するコマンドに応じて、永続性メモリ内の上記論理‐物理アドレス間接参照テーブルで、上記論理ブロックアドレスに関連付けられた上記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリを検索する段階
をさらに備える、項目12に記載の方法。
[項目14]
上記ブロックアドレス指定可能不揮発性メモリはNANDであり、上記永続性メモリは3次元クロスポイントメモリである、項目8に記載の方法。
[項目15]
プロセッサと、
上記プロセッサに通信可能に結合されたソリッドステートドライブと
を備えるシステムであって、
上記ソリッドステートドライブは、
データを格納するためのブロックアドレス指定可能不揮発性メモリと、
論理‐物理アドレス間接参照テーブルを格納するための永続性メモリであって、上記論理‐物理アドレス間接参照テーブルは複数のエントリを有し、各エントリは論理ブロックアドレスに割り当てられた上記ブロックアドレス指定可能不揮発性メモリにおける物理ブロックアドレスを格納する、永続性メモリと、
上記永続性メモリと上記ブロックアドレス指定可能不揮発性メモリとに通信可能に結合されたソリッドステートドライブコントローラ回路と
を有し、
上記ソリッドステートドライブコントローラ回路は、
論理‐物理アドレス間接参照テーブルキャッシュを格納するための揮発性メモリと、
上記揮発性メモリに通信可能に結合されたアシスト回路であって、上記アシスト回路は、上記論理‐物理アドレス間接参照テーブルキャッシュをモニタリングするとともに、上記永続性メモリ内の上記論理‐物理アドレス間接参照テーブルに、上記論理‐物理アドレス間接参照テーブルキャッシュ内のダーティ論理‐物理エントリを書き込む、アシスト回路と
を含む、システム。
[項目16]
上記揮発性メモリは、上記アシスト回路により書き込まれるデータを、上記ブロックアドレス指定可能不揮発性メモリに一時的に格納するバッファを含む、項目15に記載のシステム。
[項目17]
上記ブロックアドレス指定可能不揮発性メモリ内の論理アドレスにデータを書き込むコマンドに応じて、データは、上記ブロックアドレス指定可能不揮発性メモリ内の物理アドレスに書き込まれ、上記物理アドレス及び上記論理アドレスに関連付けられた上記論理‐物理アドレス間接参照テーブルキャッシュ内のエントリはダーティに設定される、項目15に記載のシステム。
[項目18]
上記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、上記論理‐物理アドレス間接参照テーブルキャッシュで、上記論理ブロックアドレスに関連付けられた上記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、項目15に記載のシステム。
[項目19]
上記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、永続性メモリ内の上記論理‐物理アドレス間接参照テーブルで、上記論理ブロックアドレスに関連付けられた上記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、項目15に記載のシステム。
[項目20]
上記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを消去するコマンドに応じて、永続性メモリ内の上記論理‐物理アドレス間接参照テーブルで、上記論理ブロックアドレスに関連付けられた上記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、項目15に記載のシステム。

Claims (23)

  1. データを格納するためのブロックアドレス指定可能不揮発性メモリと、
    論理‐物理アドレス間接参照テーブルを格納するための永続性メモリであって、前記論理‐物理アドレス間接参照テーブルは複数のエントリを有し、各エントリは論理ブロックアドレスに割り当てられた前記ブロックアドレス指定可能不揮発性メモリにおける物理ブロックアドレスを格納する、永続性メモリと、
    前記永続性メモリと前記ブロックアドレス指定可能不揮発性メモリとに通信可能に結合されたソリッドステートドライブコントローラ回路と
    を備える、ソリッドステートドライブであって、
    前記ソリッドステートドライブコントローラ回路は、
    論理‐物理アドレス間接参照テーブルキャッシュを格納するための揮発性メモリと、
    前記揮発性メモリに通信可能に結合されたアシスト回路であって、前記アシスト回路は、前記論理‐物理アドレス間接参照テーブルキャッシュをモニタリングするとともに、前記永続性メモリ内の前記論理‐物理アドレス間接参照テーブルに、前記論理‐物理アドレス間接参照テーブルキャッシュ内のダーティ論理‐物理エントリを書き込む、アシスト回路と
    を有する、
    ソリッドステートドライブ。
  2. 前記揮発性メモリは、前記アシスト回路により書き込まれるデータを、前記ブロックアドレス指定可能不揮発性メモリに一時的に格納するバッファを含む、請求項1に記載のソリッドステートドライブ。
  3. 前記ブロックアドレス指定可能不揮発性メモリ内の論理アドレスにデータを書き込むコマンドに応じて、データは、前記ブロックアドレス指定可能不揮発性メモリ内の物理アドレスに書き込まれ、前記物理アドレス及び前記論理アドレスに関連付けられた前記論理‐物理アドレス間接参照テーブルキャッシュ内のエントリはダーティに設定される、請求項1又は2に記載のソリッドステートドライブ。
  4. 前記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、前記論理‐物理アドレス間接参照テーブルキャッシュで、前記論理ブロックアドレスに関連付けられた前記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、請求項1から3のいずれか一項に記載のソリッドステートドライブ。
  5. 前記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、永続性メモリ内の前記論理‐物理アドレス間接参照テーブルで、前記論理ブロックアドレスに関連付けられた前記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、請求項1から4のいずれか一項に記載のソリッドステートドライブ。
  6. 前記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを消去するコマンドに応じて、永続性メモリ内の前記論理‐物理アドレス間接参照テーブルで、前記論理ブロックアドレスに関連付けられた前記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、請求項1から5のいずれか一項に記載のソリッドステートドライブ。
  7. 前記ブロックアドレス指定可能不揮発性メモリはNANDであり、前記永続性メモリは3次元クロスポイントである、請求項1から6のいずれか一項に記載のソリッドステートドライブ。
  8. ブロックアドレス指定可能不揮発性メモリにデータを格納する段階と、
    論理‐物理アドレス間接参照テーブルを永続性メモリに格納する段階であって、前記論理‐物理アドレス間接参照テーブルは複数のエントリを有し、各エントリは論理ブロックアドレスに割り当てられた前記ブロックアドレス指定可能不揮発性メモリにおける物理ブロックアドレスを格納する、段階と、
    揮発性メモリ内の論理‐物理アドレス間接参照テーブルキャッシュを揮発性メモリに格納する段階と、
    前記論理‐物理アドレス間接参照テーブルキャッシュをモニタリングして、前記論理‐物理アドレス間接参照テーブルキャッシュ内のダーティ論理‐物理エントリを前記永続性メモリ内の前記論理‐物理アドレス間接参照テーブルに書き込む段階と
    を備える、方法。
  9. 前記揮発性メモリは、書き込まれるデータを、前記ブロックアドレス指定可能不揮発性メモリに一時的に格納するバッファを含む、請求項8に記載の方法。
  10. 前記ブロックアドレス指定可能不揮発性メモリ内の論理アドレスにデータを書き込むコマンドに応じて、前記ブロックアドレス指定可能不揮発性メモリ内の物理アドレスにデータを書き込む段階と、
    前記物理アドレス及び前記論理アドレスに関連付けられた前記論理‐物理アドレス間接参照テーブルキャッシュ内のエントリをダーティに設定する段階と
    をさらに備える、請求項8又は9に記載の方法。
  11. 前記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、前記論理‐物理アドレス間接参照テーブルキャッシュで、前記論理ブロックアドレスに関連付けられた前記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリを検索する段階
    をさらに備える、請求項8から10のいずれか一項に記載の方法。
  12. 前記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、永続性メモリ内の前記論理‐物理アドレス間接参照テーブルで、前記論理ブロックアドレスに関連付けられた前記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリを検索する段階
    をさらに備える、請求項8から11のいずれか一項に記載の方法。
  13. 前記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを消去するコマンドに応じて、永続性メモリ内の前記論理‐物理アドレス間接参照テーブルで、前記論理ブロックアドレスに関連付けられた前記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリを検索する段階
    をさらに備える、請求項8から12のいずれか一項に記載の方法。
  14. 前記ブロックアドレス指定可能不揮発性メモリはNANDであり、前記永続性メモリは3次元クロスポイントメモリである、請求項8から13のいずれか一項に記載の方法。
  15. 請求項8から14のいずれか一項に記載の方法を実行する手段を備える装置。
  16. プロセッサと、
    前記プロセッサに通信可能に結合されたソリッドステートドライブと
    を備えるシステムであって、
    前記ソリッドステートドライブは、
    データを格納するためのブロックアドレス指定可能不揮発性メモリと、
    論理‐物理アドレス間接参照テーブルを格納するための永続性メモリであって、前記論理‐物理アドレス間接参照テーブルは複数のエントリを有し、各エントリは論理ブロックアドレスに割り当てられた前記ブロックアドレス指定可能不揮発性メモリにおける物理ブロックアドレスを格納する、永続性メモリと、
    前記永続性メモリと前記ブロックアドレス指定可能不揮発性メモリとに通信可能に結合されたソリッドステートドライブコントローラ回路と
    を有し、
    前記ソリッドステートドライブコントローラ回路は、
    論理‐物理アドレス間接参照テーブルキャッシュを格納するための揮発性メモリと、
    前記揮発性メモリに通信可能に結合されたアシスト回路であって、前記アシスト回路は、前記論理‐物理アドレス間接参照テーブルキャッシュをモニタリングするとともに、前記永続性メモリ内の前記論理‐物理アドレス間接参照テーブルに、前記論理‐物理アドレス間接参照テーブルキャッシュ内のダーティ論理‐物理エントリを書き込む、アシスト回路と
    を含む、システム。
  17. 前記揮発性メモリは、前記アシスト回路により書き込まれるデータを、前記ブロックアドレス指定可能不揮発性メモリに一時的に格納するバッファを含む、請求項16に記載のシステム。
  18. 前記ブロックアドレス指定可能不揮発性メモリ内の論理アドレスにデータを書き込むコマンドに応じて、データは、前記ブロックアドレス指定可能不揮発性メモリ内の物理アドレスに書き込まれ、前記物理アドレス及び前記論理アドレスに関連付けられた前記論理‐物理アドレス間接参照テーブルキャッシュ内のエントリはダーティに設定される、請求項16又は17に記載のシステム。
  19. 前記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、前記論理‐物理アドレス間接参照テーブルキャッシュで、前記論理ブロックアドレスに関連付けられた前記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、請求項16から18のいずれか一項に記載のシステム。
  20. 前記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを読み取るコマンドに応じて、永続性メモリ内の前記論理‐物理アドレス間接参照テーブルで、前記論理ブロックアドレスに関連付けられた前記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、請求項16から19のいずれか一項に記載のシステム。
  21. 前記ブロックアドレス指定可能不揮発性メモリ内の論理ブロックアドレスからデータを消去するコマンドに応じて、永続性メモリ内の前記論理‐物理アドレス間接参照テーブルで、前記論理ブロックアドレスに関連付けられた前記ブロックアドレス指定可能不揮発性メモリ内の物理ブロックアドレスのエントリが検索される、請求項16から20のいずれか一項に記載のシステム。
  22. 請求項8から14のいずれか一項に記載の方法を機械に実行させるためのコンピュータプログラム。
  23. 請求項22に記載のコンピュータプログラムを格納する機械可読記録媒体。
JP2021155492A 2020-12-15 2021-09-24 ソリッドステートドライブの永続性メモリ内の論理‐物理アドレス間接参照テーブル Pending JP2022094912A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/122,152 US20210097004A1 (en) 2020-12-15 2020-12-15 Logical to physical address indirection table in a persistent memory in a solid state drive
US17/122,152 2020-12-15

Publications (1)

Publication Number Publication Date
JP2022094912A true JP2022094912A (ja) 2022-06-27

Family

ID=75163415

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021155492A Pending JP2022094912A (ja) 2020-12-15 2021-09-24 ソリッドステートドライブの永続性メモリ内の論理‐物理アドレス間接参照テーブル

Country Status (6)

Country Link
US (1) US20210097004A1 (ja)
EP (1) EP4016310A1 (ja)
JP (1) JP2022094912A (ja)
KR (1) KR20220085708A (ja)
CN (1) CN114637694A (ja)
TW (1) TW202226253A (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114840447A (zh) * 2022-04-01 2022-08-02 成都忆芯科技有限公司 一种加速器
US11947818B2 (en) * 2022-04-20 2024-04-02 Silicon Motion, Inc. Method for accessing flash memory module and associated flash memory controller and electronic device

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7711923B2 (en) * 2006-06-23 2010-05-04 Microsoft Corporation Persistent flash memory mapping table
CN103885892A (zh) * 2012-12-20 2014-06-25 株式会社东芝 存储器控制器
TWI584122B (zh) * 2015-11-17 2017-05-21 群聯電子股份有限公司 緩衝記憶體管理方法、記憶體控制電路單元及記憶體儲存裝置
US20190354482A1 (en) * 2018-05-21 2019-11-21 Microsoft Technology Licensing, Llc Time-based mechanism supporting flush operation
US11074188B2 (en) * 2019-02-18 2021-07-27 Intel Corporation Method and apparatus to efficiently track locations of dirty cache lines in a cache in a two-level main memory
US11263149B2 (en) * 2019-02-26 2022-03-01 Marvell Asia Pte, Ltd. Cache management of logical-physical translation metadata
US11144467B2 (en) * 2019-05-17 2021-10-12 Intel Corporation Bypassing cache memory in a write transaction in a system with multi-level memory
GB2598784B (en) * 2020-09-14 2022-11-16 Advanced Risc Mach Ltd Draining operation for draining dirty cache lines to persistent memory
US11940912B2 (en) * 2022-03-01 2024-03-26 Micron Technology, Inc. Managing power loss recovery using a dirty section write policy for an address mapping table in a memory sub-system
US11714748B1 (en) * 2022-03-01 2023-08-01 Micron Technology, Inc. Managing power loss recovery using an oldest section write policy for an address mapping table in a memory sub-system

Also Published As

Publication number Publication date
CN114637694A (zh) 2022-06-17
US20210097004A1 (en) 2021-04-01
KR20220085708A (ko) 2022-06-22
TW202226253A (zh) 2022-07-01
EP4016310A1 (en) 2022-06-22

Similar Documents

Publication Publication Date Title
US8443144B2 (en) Storage device reducing a memory management load and computing system using the storage device
EP3696680B1 (en) Method and apparatus to efficiently track locations of dirty cache lines in a cache in a two level main memory
US20190042413A1 (en) Method and apparatus to provide predictable read latency for a storage device
US10599579B2 (en) Dynamic cache partitioning in a persistent memory module
US20190042460A1 (en) Method and apparatus to accelerate shutdown and startup of a solid-state drive
NL2030989B1 (en) Two-level main memory hierarchy management
US20210096778A1 (en) Host managed buffer to store a logical-to physical address table for a solid state drive
EP4016310A1 (en) Logical to physical address indirection table in a persistent memory in a solid state drive
US11656995B2 (en) Dynamic access granularity in a cache media
EP4320508A1 (en) Method and apparatus to reduce nand die collisions in a solid state drive
US10747439B2 (en) Method and apparatus for power-fail safe compression and dynamic capacity for a storage device
EP3772682A1 (en) Method and apparatus to improve write bandwidth of a block-based multi-level cell non-volatile memory
US10872041B2 (en) Method and apparatus for journal aware cache management
US11762553B2 (en) Runtime selection of memory devices and storage devices in a disaggregated memory system
CN117296033A (zh) 用于半导体装置的可调定时器组件
US20240012564A1 (en) Memory controller and storage device including the same
US11138102B2 (en) Read quality of service for non-volatile memory
US20220083280A1 (en) Method and apparatus to reduce latency for random read workloads in a solid state drive
US20240012755A1 (en) Memory system and operating method thereof