JP2015534178A - アドレスマッピング - Google Patents

アドレスマッピング Download PDF

Info

Publication number
JP2015534178A
JP2015534178A JP2015532071A JP2015532071A JP2015534178A JP 2015534178 A JP2015534178 A JP 2015534178A JP 2015532071 A JP2015532071 A JP 2015532071A JP 2015532071 A JP2015532071 A JP 2015532071A JP 2015534178 A JP2015534178 A JP 2015534178A
Authority
JP
Japan
Prior art keywords
mapping
unit
memory
units
data
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.)
Granted
Application number
JP2015532071A
Other languages
English (en)
Other versions
JP6109316B2 (ja
Inventor
リー,ティエニュ
Original Assignee
マイクロン テクノロジー, インク.
マイクロン テクノロジー, インク.
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 マイクロン テクノロジー, インク., マイクロン テクノロジー, インク. filed Critical マイクロン テクノロジー, インク.
Publication of JP2015534178A publication Critical patent/JP2015534178A/ja
Application granted granted Critical
Publication of JP6109316B2 publication Critical patent/JP6109316B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/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/10Address translation
    • 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

Abstract

本開示は、アドレスマッピングのための方法、メモリユニット、および装置を含む。1つの方法は、いくつかの論理アドレスに対応する論理−物理マッピングデータを有する、マッピングユニットを提供することを含む。当該マッピングユニットは、自身と関連付けられた可変データユニット種類を有しており、可変データユニット種類によって定義されたサイズを有するいくつかの物理データユニットのメモリ上の位置を示すマッピングデータを含む、第1の部分と、マッピングユニットが属するマッピングユニット群のいくつかの他のマッピングユニットのメモリ上の位置を示すマッピングデータを含む、第2の部分とを含む。【選択図】図1

Description

本開示は、一般的に半導体メモリおよび方法に関し、より具体的には、アドレスマッピングに関する。
メモリデバイスは、一般的には、コンピュータまたは他の電子デバイスの中の内部回路、半導体回路、集積回路として提供される。揮発性メモリおよび不揮発性メモリを含む多くの異なる種類のメモリが存在する。揮発性メモリは、そのデータ(例えば、情報)を維持するために電力を必要とし得るが、とりわけ、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、および同期式ダイナミックランダムアクセスメモリ(SDRAM)を含む。不揮発性メモリは、電源が供給されていないときに、記憶されたデータを保持することによって、持続性のデータを提供することが可能であり、とりわけ、NANDフラッシュメモリ、NORフラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)、相変化ランダムアクセスメモリ(PCRAM)および抵抗ランダムアクセスメモリ(RRAM)などの抵抗可変メモリ、ならびにスピントルクトランスファランダムアクセスメモリ(STT RAM)などの磁気ランダムアクセスメモリ(MRAM)を含み得る。
メモリデバイスは組み合わせて、ソリッドステートドライブ(SSD)を形成することが可能である。ソリッドステートドライブは、様々な他の種類の不揮発性メモリおよび揮発性メモリの中で、NANDフラッシュメモリおよび/またはNORフラッシュメモリなどの不揮発性メモリを含み得、かつ/またはDRAMなどの揮発性メモリを含み得る。浮遊ゲートフラッシュデバイスおよび電荷トラップフラッシュ(CTF)デバイスを含むフラッシュメモリデバイスは、電荷を記憶するために用いられる記憶構造(例えば、浮遊ゲートまたは電荷トラップ構造)を有するメモリセルを含み、広い範囲の電子応用のための不揮発性メモリとして利用され得る。
様々な装置(例えば、コンピューティングシステム)は、ホスト(例えば、様々な他の種類のホストの中でも、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、モバイル電話、またはメモリカード読み取り装置)に連結されたSSDを含み得る。SSD動作と関連付けられたメモリ管理プロセスは、例えば、サブページ書き込み、不整合書き込み、および/または予測不可能な一時的および空間的局所性による非効率性を被りかねない。このような非効率性は、ホストから受信された指令(例えば、書き込み指令、読み出し指令、消去指令など)と関連付けられた入/出力(I/O)作業負荷の不規則性などの要因に依存し得るが、これは、他の欠点の中でも、書き込み増幅作用を増加させ、かつ/またはガベージコレクション効率を減少させかねない。メモリ管理プロセスは、論理アドレススペースと物理アドレススペースとの間でマッピングする(例えば、メモリ上に記憶されている物理データの位置を決定する)ために、しばしば、論理−物理(L2P)マッピングデータ構造(例えば、テーブル)を用いる。しかしながら、多くの現行のL2Pマッピング方式は、ホストI/O作業負荷パターンの不規則性を効果的に説明することが不可能である。
本開示のいくつかの実施形態による、少なくとも1つのメモリシステムを含むコンピューティングシステムの形態での装置のブロック図である。 以前のアドレスマッピング方式による、論理−物理アドレスマップである。 本開示のいくつかの実施形態による、論理−物理アドレスマップである。 本開示のいくつかの実施形態による、いくつかのマッピングユニット群を示す。 本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニットを示す。 本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニットを示す。 本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニットを示す。 本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニットを示す。 本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニットを示す。 本開示のいくつかの実施形態による、マッピングユニットを更新することに関連付けられた機能フローチャートを示す。
本開示は、アドレスマッピングのための方法、メモリユニット、および装置を含む。1つの方法は、いくつかの論理アドレスに関連付けられた論理−物理マッピングデータを有するマッピングユニットを提供することを含む。マッピングユニットは、自身と関連付けられた可変データユニット種類を有しており、可変データユニット種類によって定義されたサイズを有するいくつかの物理データユニットのメモリ上の位置を示すマッピングデータを含む、第1の部分と、マッピングユニットが属するマッピングユニット群のいくつかの他のマッピングユニットのメモリ上の位置を示すマッピングデータを含む、第2の部分とを含む。
本開示のいくつかの実施形態は、例えば、ホストのI/O作業負荷に基づいて調整することが可能な論理−物理アドレスマッピング方式を提供することが可能である。したがって、いくつかの実施形態は、従来のアドレスマッピング技法と比較して改善されたガベージコレクション効率および/または減少した書き込み増幅作用などの恩典を提供することが可能である。
本開示の次の詳細な説明において、その一部を形成し、その中で、本開示のいくつかの実施形態がどのように実施され得るかを例示によって示す、添付図面を参照する。これらの実施形態は、当業者が本開示の実施形態を実施することを可能とするように十分詳細に説明されており、他の実施形態が利用され得ること、また、プロセス的、電気的、および/または構造的な変更が、本開示の範囲から逸脱することなくなされ得ることを理解すべきである。本明細書で用いられる「D」および「m」という指定文字は、特に図面中の参照番号に関しては、そのように指定されたいくつかの特定の特徴部が、本開示のいくつかの実施形態と一緒に含まれ得ることを示す。本明細書で用いられる「いくつかの」ものは、1つ以上のこのようなものを言及し得る。
本明細書中の数字は、第1の桁が図面の図番号に対応し、残余の桁が図面中の要素または構成要素を特定する番号付け規約に準ずる。異なる図間の類似した要素または構成要素は、類似した桁の使用によって特定され得る。例えば、301は図3の要素「01」を参照し得るし、類似の要素は、図4では401として参照され得る。理解されるように、本明細書中で様々な実施形態に示す要素は、追加、交換、および/または消去されて、本開示のいくつかのさらなる実施形態を提供することが可能である。加えて、理解されるように、図面中に提供される要素の比率および相対的尺度は、本発明の実施形態を例示することを意図するものであり、制限的な意味でとらえられるべきではない。
図1は、本開示のいくつかの実施形態による、少なくとも1つのメモリシステム104を含むコンピューティングシステム100の形態での装置のブロック図である。本明細書で用いられるメモリシステム104、コントローラ108、またはメモリデバイス110もまた、「装置」と個別に見なされ得る。メモリシステム104は、例えばソリッドステートドライブ(SSD)であり、ホストインターフェース106、コントローラ108(例えば、プロセッサおよび/または他の制御回路)、およびいくつかのメモリデバイス110−1、・・・、110−D(例えば、NANDフラッシュデバイスなどのソリッドステートメモリデバイス)を含むことが可能であり、これらはメモリシステム104の記憶容量を提供する。いくつかの実施形態では、コントローラ108、メモリデバイス110−1〜110−D、および/またはホストインターフェース106は、1つのダイ上にまたは1つのパケット内に物理的に置かれ得る(例えば、管理NAND応用分野)。また、いくつかの実施形態では、メモリ(例えば、メモリデバイス110−1〜110−D)は、1つのメモリデバイスを含むことが可能である。この例では、メモリデバイス110−1〜110−Dの各々は、それぞれのメモリチャネルに対応し、このチャネルは、一群のメモリデバイス(例えば、ダイまたはチップ)を含み得るが、しかしながら、実施形態はそのようには制限されない。加えて、いくつかの実施形態では、メモリデバイス110は、異なる種類のメモリを含むことが可能である。例えば、メモリデバイス110−1〜110−Dは、相変化メモリデバイス、DRAMデバイス、マルチレベル(MLC)NANDフラッシュデバイス、単一レベル(SLC)NANDフラッシュデバイス、および/またはこれらの組み合わせを含むことが可能である。
ホストインターフェース106は、メモリシステム104とホスト102との間でデータを転送するために用いることが可能である。インターフェース106は、標準化されたインターフェースの形態であり得る。例えば、メモリシステム104をコンピューティングシステム101中でデータ記憶のために用いるとき、インターフェース106は、他のコネクタおよびインターフェースの中でも、シリアルアドバンストテクノロジーアタッチメント(SATA)、シリアルアタッチドSCSI(SAS)、周辺構成要素相互接続エクスプレス(PCIe)、またはユニバーサルシリアルバス(USB)であり得る。一般に、しかしながら、インターフェース106は、インターフェース106用のコンパティブルなコネクタを有するホスト102とメモリシステム104との間で制御権、アドレス、データ、および他の信号を回すためのインターフェースを提供することが可能である。ホスト102は、他の種類のホストの中でも、パーソナルラップトップコンピュータ、デスクトップコンピュータ、デジタルカメラ、モバイル電話、またはメモリカード読み取り装置などのホストシステムであり得る。ホスト102は、システムマザーボードおよび/またはバックプレーンを含むことが可能であり、いくつかのメモリアクセスデバイス(例えば、いくつかのプロセッサ)を含むことが可能である。
コントローラ108は、他の動作の中でも、データの読み出し動作、書き込み動作、および消去動作を制御するために、メモリ(例えば、メモリデバイス110−1〜110−D)と通信することが可能である。コントローラ108は、例えば、メモリへのアクセスを制御するためおよび/またはホスト102とメモリとの間でのデータ転送を容易化するために、ハードウェアおよび/またはソフトウェア(例えば、1つ以上の集積回路)および/またはソフトウェアの形態でのいくつかの構成要素を含むことが可能である。
図1に示す例では、コントローラ108は、ホストI/O管理構成要素112、フラッシュ変換層(FTL)114、およびメモリユニット管理構成要素116を含む。しかしながら、コントローラ108は、本開示の実施形態を曖昧にしないために図示されない様々な他の構成要素を含み得る。また、構成要素112、114、および116は、コントローラ108上に存在しているものとして図示されているが、一部の実施形態では、構成要素112、114、および/または116は、システム100中の別のどこかに(例えば、独立した構成要素としてまたは当該システムの異なる構成要素上に存在するものとして)存在し得る。
メモリ(例えば、メモリデバイス110−1〜110−D)がいくつかのメモリセルアレイを含む実施形態では、これらのアレイは、例えば、NANDアーキテクチャを持つフラッシュアレイであり得る。しかしながら、実施形態では、特定の種類のメモリアレイまたはアレイアーキテクチャには制限されない。メモリセルは、例えば、群として消去され、ブロック当たりいくつかのデータページを記憶することが可能ないくつかのブロックに分割することが可能である。いくつかのブロックを、一プレーンのメモリセルに含むことが可能であり、アレイはいくつかのプレーンを含むことが可能である。本明細書で用いられる「データのページ」とは、コントローラ108が1つの書き込み/読み出し動作の一部としてメモリ110に/から読み出し/書き込みするように構成されるデータの量のことであり、「フラッシュページ」と呼ぶことが可能である。一例として、メモリデバイスは、8KB(キロバイト)のページサイズを有し得て、ブロック当たり128ページのデータ、プレーン当たり2048ブロック、デバイス当たり16プレーンを記憶するように構成され得る。
従来型のハードディスクドライブの場合とは異なって、フラッシュメモリに記憶されたデータは、直接上書きされることは不可能である。すなわち、あるブロックのフラッシュセルは、それに対してデータを再書き込みすることに先立って、消去されなければならない(例えば、一時に1ページ)。メモリデバイス110−1〜110−Dのうちの少なくとも1つがフラッシュメモリセルを含む実施形態では、コントローラ108は、論理―物理マッピング方式によってホスト102とメモリ110との間で転送されるデータを管理することが可能である。例えば、フラッシュ変換層114は、論理アドレス指定方式(例えば、論理ブロックアドレス指定(LBA))を用いることが可能である。一例として、ホスト102から受信された新しいデータをメモリ110にすでに書き込まれている古いデータと置き換えるとき、コントローラ108は、この新しいデータをメモリ110上の新しい位置に書き込むことが可能であり、FTL114の論理―物理マッピングは、書き込まれる新しいデータと関連付けられた対応する論理アドレス(複数可)が新しい物理的位置を示す(指示する)ように更新することが可能である。有効なデータをもはや記憶していない古い位置は、再度書き込まれることに先立って消去される。
フラッシュメモリセルは、それらが信頼性のないものとなる以前に限られた回数だけ循環させる(例えば、プログラムされる/消去される)ことが可能である。コントローラ108は、ウェアレベリングを実装してメモリ110上の摩耗速度を制御することが可能であり、これが、アレイ全体にわたって循環をより均一に広げることによって特定の群(例えば、ブロック)に対して実施されるプログラム/消去循環の回数を減少させることが可能である。ウェアレベリングは、ガベージコレクションと呼ばれる技法を含み得るが、これは、最も多くの無効なページを有するブロックを再生する(例えば、消去して書き込みに対して利用可能とする)ことがあり得る。無効なページとは、無効なデータを含むページ(例えば、自身と関連付けられた最新のマッピングをもはや有しないページ)のことであり得る。代替例では、ガベージコレクションは、しきい値量の無効ページを超えるページを持つブロックを再生することを含み得る。書き込み動作のために十分な自由ブロックが存在する場合、ガベージコレクション動作は発生し得ない。
書き込み増幅は、データをフラッシュメモリデバイス110に書き込むときに発生し得る。メモリアレイにデータをランダムに書き込むとき、コントローラ108は、アレイ中に利用可能なスペースがないかどうか走査する。メモリアレイ中の利用可能スペースは、データを記憶していないおよび/または消去された個々のセル、ページ、および/またはメモリセルのブロックであり得る。選択された位置にデータを書き込むための十分な利用可能スペースが存在する場合、データはメモリアレイの選択された位置に書き込まれる。選択された位置に十分な利用可能スペースが存在しない場合、メモリアレイ中のデータは、選択された位置に既に存在するデータを読み出し、新しい位置にコピーし、移動し、または別様に再書き込みして消去することによって再配置されて、選択された位置に再書き込みされる新しいデータのために利用可能スペースを残す。メモリアレイ中の有効データの再配置は、書き込み増幅と呼ばれるが、それは、メモリに書き込まれるデータの量が、選択された位置に十分な利用可能スペースがあった場合に発生するデータの量を超える(例えば、データの物理量は書き込むことを意図される論理量を超える)からである。書き込み増幅は好ましくないが、それは帯域幅を消耗させ、それにより性能を落とし、SSDの有効寿命を減少させかねないからである。書き込み増幅の量は、ガベージコレクション効率、ウェアレベリング効率、ランダム書き込み(例えば、非連続的な論理アドレスへの書き込み)の量、および/または過剰プロビジョニング(例えば、他の要因のなかでも、フラッシュメモリの物理的容量とユーザに対して利用可能なオペレーティングシステムを介して提示される論理容量との間の差)などの様々な要因によって実効化され得る。
フラッシュ変換層114は、ホストI/O管理構成要素112およびマッピングユニット管理構成要素116と協働して、本明細書に説明するいくつかの実施形態に従ってアドレスマッピングを実施する。いくつかの実施形態では、ホストI/O管理構成要素112は、(例えば、FTL114を介してのマッピングに先立って)ホスト102からの書き込み指令に関連して受信されたデータを管理する。ホスト102のI/O作業負荷は不規則および/または可変であり得る。例えば、大きいファイル書き込み(例えば、大きいデータ量に対応する書き込み)は、しばしば、小さい書き込み(例えば、小さい量のデータに対応する書き込み)と混合され得る。この文脈で、「大きい」および「小さい」は、サイズの相対的な差のみのことである。一例として、小さい書き込みは、より大きいファイルに対応する4KBのメタデータの書き込みのことであり得る。大きいファイルの書き込みは、例えば、128KBのデータの書き込みを含み得る。大きいファイルの書き込みは、いくつかの連続する大きいファイルの書き込みを含み得る。例えば、2GBの映像ファイルの書き込みは、ホスト102からのいくつかの連続する128KBの書き込み指令を含み得る。
ホストI/O管理112は、受信されたデータを特定のサイズの単位で管理するように構成することが可能である。ホストI/O管理構成要素112によって管理されるデータユニットの特定のサイズは、利用可能なバッファのサイズに対応することが可能であり、例えば、4KBであり得る。したがって、ホストI/O管理112は、ホスト102から受信されたデータを4KB単位としてFTL114を介してマッピングされるように編成することが可能である。本明細書で用いられる、ホストI/O管理構成112によって管理されるデータユニットサイズは、「システムページサイズ」と呼ぶことが可能である。
本明細書でさらに説明するように、マッピングユニット(MU)管理116は、いくつかの実施形態において、ホスト102のI/O作業負荷を監視することが可能である。例えば、MU管理116は、複数のメモリユニットおよび/またはメモリユニット群(MUG)を求めて、ホスト102からの入力する書き込み指令と関連付けられた論理アドレスおよびそれと関連付けられた対応するサイズ(例えば、データの量)を追跡することが可能であるが、これらは、例えば、それぞれのMUおよび/またはMUGに対するデータユニットサイズを決定するために用いることが可能である。
図2は、以前のアドレスマッピング方式に関わる論理−物理(L2P)アドレスマップ201である。L2Pマップ201は、例えば、テーブルなどのデータ構造の形態であり得る。L2Pマップ201は、一緒にしてMU203と呼ばれる、いくつかのMU203−0、203−1、203−2、・・・、203−iなどを含む。MU203の各々は、論理アドレスと物理アドレスとの間でマッピングするために用いられる固定量のマッピングデータを記憶することが可能である。固定量のデータは、データが書き込まれるメモリと関連付けられたページサイズに等しくあり得る。例えば、メモリ(例えば、図1に示すメモリデバイス110)が、8KBの関連付けられたページサイズを有する場合、各々のMU203は、8KBのマッピングデータを記憶し得る。各々のMU203は、各々が論理ページを物理ページにマッピングする固定数のエントリを含む物理アドレス(PA)データ構造(例えば、テーブル)を含む。例えば、図2に示すように、PAテーブル205は、いくつかのエントリ(例えば、PA[0]、PA[1]、PA[2]、・・・、PA[PA_PER_MU−1])を含むが、ここで、「PA_PER_MU」は、例えば、2,048であり得る。したがって、各々のMU203が2,048のエントリを含み、各々のエントリが8KBのページにマッピングする場合、各々のMU203は、16MB(例えば、エントリ当たり8KBに2,048エントリを乗算する)のメモリをマッピングすることが可能である。
アドレスマップ201の比較的大きいサイズのため、MU203は、適切であるとき、メモリ(例えば、メモリ110)上に記憶して、ホスト(例えば、ホスト102)からの書き込み動作に関連付けて書き込まれる論理アドレスに基づいて、アクセスすることが可能である。例えば、1つ以上のMU203を、例えば、メモリ110からコントローラのメモリ(例えば、DRAM、SRAMなど)に転送することが可能である。すると、アクセスされたMU203のマッピングデータは、それがメモリ上の適切な物理位置にマッピングするように更新することが可能であり、更新されたMU203はメモリ210に書き戻すことが可能である。
しかしながら、図2で説明したアドレスマッピング方式などの先行技術によるアドレスマッピング方式は、様々な欠点を有し得るが、これらは、例えば、増加した書き込み増幅を招きかねない。例えば、それぞれのMU203の各々に対応するPAテーブル205のエントリの各々は、同じ量の物理データ(例えば、この例では8KBページサイズ)にマッピングする。ホストI/O作業負荷は不規則および/または可変であり得るため、MU203によってマッピングされた物理データユニットのサイズに対する可撓性の欠如は、例えば、長い連続したデータ書き込みによる大きい更新回数(例えば、マッピングテーブルエントリへ)、サブページ書き込み(例えば、ページサイズ未満のデータ量の書き込み)および/またはランダムなメモリ位置に対する小さいデータの書き込みによる不整合書き込み(例えば、物理ページ境界と整合していないデータユニットの書き込み)などのMU管理オーバーヘッドの量の増加を招きかねない。可変のおよび/または不規則のホストI/O作業負荷もまた、予測不可能な時間的および/または空間的局所性を招きかねず、これがまた、アドレスマップ201のMU203によってマッピングされた物理データユニットのサイズに対する可撓性(例えば、適応性)の欠如による増加した書き込み増幅を招きかねない。図3〜10に関連付けて以下にさらに説明するように、本開示のいくつかの実施形態は、図2に関連して説明したような方式と比較してより可撓性のあるアドレスマッピング方式を提供するが、これは、他の恩典の中でも改善された書き込み増幅を提供することが可能である。
図3は、本開示のいくつかの実施形態による、L2Pマップ301である。L2Pマップ301は、例えば、テーブルなどのデータ構造の形態であり得る。L2Pマップ301は、一緒にしてMU303と呼ばれる、いくつかのMU303−0、303−1、303−2、・・・、303−iなどを含む。いくつかの実施形態では、図2に説明したMU203に類似して、MU303の各々は、論理アドレスと物理アドレスとの間でマッピングするために用いられる固定量のマッピングデータを記憶することが可能である。固定量のデータは、データが書き込まれるメモリ(例えば、図1に示すメモリ110)と関連付けられたページサイズに等しくあり得る。例えば、メモリが8KBの関連付けられたページサイズを有する場合、各々のMU303は、8KBの利用可能なマッピングデータスペースを含み得る。
各々のMU303は、いくつかの論理アドレスに対応する。いくつかの実施形態では、各々のMU303は、固定範囲の非重複論理アドレスに対応する。例えば、MU303−0は論理アドレス0〜1,024に対応し、MU303−1は論理アドレス1,025〜2,048に対応する、などである。また、本明細書にさらに説明するように、各々のMU303は、関連付けられた可変のデータユニット種類を有し得るが、これは、特定のMU303によってマッピングされた物理データユニットのサイズを定義することが可能である。
図3のMU303−iによって例示されるように、各々のMU303は、マッピングデータの第1の部分305およびマッピングデータの第2の部分307を含み得る。第1の部分305は、可変データユニット種類によって定義されたサイズを有するいくつかの物理データユニットのメモリ(例えば、メモリ110)上の位置を示すマッピングデータを含み得る。一例として、第1の部分305は、物理アドレス(PA)テーブル(例えば、データユニットマッピングテーブル)を含み得る。しかしながら、各々が物理ページにマッピングするエントリを有する図2に示すPAテーブル205などのPAテーブルを用いる先行技術による方式とは異なって、PAテーブル305のエントリは各々が、ページサイズに等しくあり得るまたはあり得ない特定のサイズを有する物理データユニットにマッピングする。例えば、いくつかの実施形態では,L2Pマップ301は、自身と関連付けられたベースデータユニットサイズを有する。本明細書で用いられる場合、ベースデータユニットサイズは、L2Pマップ301を介してマッピングされた最小のデータユニットサイズのことであり得る。例えば、ベースデータユニットサイズは、メモリのページサイズより小さい、等しい、または大きいことがあり得る。一例として、メモリのページサイズが8KBであれば、ベースデータユニットサイズは、4KB、8KB、16KBなどであり得る。いくつかの実施形態では、ベースデータユニットサイズは、システムページサイズ(例えば、図1に示すホストI/O管理112によって管理されるデータサイズ)に等しくあり得る。
様々な例では、システムページサイズは、メモリのページサイズ(例えば、フラッシュページサイズ)と同一ではないということがあり得る。例えば、システムページサイズは、4KBであり得るし、メモリのページサイズは8KBであり得るが、これは、(例えば、以前の方式での場合のように、論理−物理マッピングが8KBページサイズにしかマッピングしない場合には)I/O要求と関連付けられたデータ細分化および/または不整合を招きかねない。したがって、本開示のいくつかの実施形態では、ベースデータユニットサイズは、システムページサイズと同一であるが、しかしながら、実施形態はそのように制限されない。
図3に示す例では、MU303−iのPAテーブル305は、エントリPA[0]〜PA[PA_PER_MU−1]を含むが、式中「PA_PER_MU」は、例えば、1,024である。以下にさらに説明するように、マッピングテーブル305中のエントリの数は、他の要因の中でも、テーブル305に対して用いられる利用可能なマッピングデータスペースおよびエントリPA[0]〜PA[PA_PER_MU−1]によってマッピングされるデータユニットのサイズなどの要因によって異なり得る。一例として、マッピングテーブル305のエントリの各々は、ベースデータユニットサイズを有する物理データユニットのメモリ上の位置を示すことが可能である。しかしながら、以下にさらに説明するように、いくつかの実施形態では、マッピングテーブルのエントリは、ベースデータユニットサイズ以外のサイズ(例えば、ベースデータユニットサイズの倍数であり得る)を有する物理データユニットのメモリ上の位置を示すことが可能である。
マッピングユニット303の第2の部分307は、マッピングユニット303が属するマッピングユニット群のいくつかの他のマッピングユニットのメモリ上の位置を示すマッピングデータを含むことが可能である。一例として、第2の部分307は、MU303−iが属する特定のマッピングユニット群のマッピングユニットの各々の(例えば、メモリ110のメモリ上の)位置を指示するエントリを含むマッピングテーブル(例えば、MUマッピングテーブル)であり得る。したがって、MUマッピングテーブル307のエントリは、物理マッピングユニットアドレスPMUA[0]、PMUA[1]、PMUA[2]、・・・、PMUA[m−1]を含むが、式中「m」は128、256、512、2,048などであり得る。以下にさらに説明するように、L2Pマップ301は、各々が固定範囲の非重複MU303であり得るいくつかのマッピングユニット群(MUG)を含み得る。例えば、各々のMUGが512のMU303を含む場合、第1のMUGはMU[0]〜MU[511]を含み得るし、次のMUGはMU[512]〜MU[1023]を含み得る、などとなる。
本明細書にさらに説明するように、いくつかの実施形態では、第2の部分307は、MUGのそれぞれのMUに対応する可変データユニット種類を示すデータを含むことが可能である。例えば、テーブル307の各々のエントリ(例えば、PMUA[0]、PMUA[1]、PMUA[2]、・・・、PMUA[m−1])は、それぞれのエントリがマッピングする特定のMUに対応する可変データユニット種類を示すデータを含むことが可能である。
いくつかの実施形態では、MU(例えば、303)に対応する利用可能なマッピングデータスペースの総量は、MUGによってマッピングされるスペースの特定に総量を維持しながらも、(例えば、第1の部分305と第2の部分307との間で)様々な様式で配分することが可能である。すなわち、そのテーブルサイズは、テーブルサイズがMUG間で異なるように調節することが可能である。1つの例として、MU303−iは、2GBのスペースをマッピングする特定のMUG中の「m」個のMUのうちの1つであり得る。この例として、テーブル305の各々のエントリが4KBのベースデータユニットサイズに等しい物理データユニットにマッピングすると仮定する。したがって、テーブル305中のエントリの数(例えば、PA_PER_MU)が1024であれば、MU303−iは、4MBのスペース(1024×4KB)をマッピングする。したがって、MU303−iが属するMUGが2GBのスペースをマッピングするためには、テーブル307中のエントリの数(例えば、「m」)は、512(4MB×512=2GB)でなければならない。代替的には、PA_PER_MUは、MU303−iが512KB(128×4KB)をマッピングするように128であり得るし、「m」は4096(512KB×4096=2GB)であり得る。しかしながら、実施形態はそのように限られることはない。
図4は、本開示のいくつかの実施形態による、いくつかのマッピングユニット群を示す。いくつかの実施形態では、L2PマップのMUは、いくつかのMUGに編成することが可能である。図4は、いくつかのMUG409−0(MUG[0])および409−1(MUG[1])を含むL2Pマップ401を図示するが、しかしながら、いくつかの実施形態は、3つ以上のMUGを含むことが可能である。図4のMUは、図3で説明したMU303に類似し得る。MUG409の各々は、いくつかのMU(例えば、MU[0]、MU[1]MU[2]、・・・、MU[i]、・・・)を含む。いくつかの実施形態では、MUの各々は、同一の量のメモリスペース(例えば、4MB、16MB、128MBなど)をマッピングする。しかしながら、特定のMUG(例えば、409−0)のMUは、異なるMUG(例えば、409−1)のMUとは異なる量のメモリスペースをマッピングし得る。いくつかの実施形態では、MUG409の各々は、同一の量のメモリスペース(例えば、256MB、2GB、4GBなど)をマッピングするが、しかしながら、実施形態はそのように制限されることはない。いくつかの実施形態では、各々のMUG409は、特定の範囲の論理アドレスに対応し、それぞれのMUG409に対応する論理アドレスは、重複しない。したがって、MUG409−0によってマッピングされた論理アドレススペースは、MUG409−1によってマッピングされた論理アドレススペースとは異なる。
図3に関連して上述したように、各々のMUG409のMUは、第1の部分405および第2の部分407を含むマッピングデータスペース中に固定量のマッピングデータを記憶することが可能である。図4に示すように、MUG409−0のMU[2]は、第1の部分405−0および第2の部分407−0を含む。同様に、MUG409−1のMU[i]は、第1の部分405−1および第2の部分407−1を含む。第2の部分407は、MUG409のMUの各々のメモリ上の位置を指示するエントリを含むMUマッピングテーブルであり得る。テーブル407はまた、MUG409のMUに対応する可変データユニット種類を示すことが可能である。
動作に際して、ホスト(例えば、102)は、いくつかの論理アドレスと関連付けられた書き込み指令を発行することが可能である。コントローラ(例えば、108)は、書き込み指令を受信することが可能であり、これらいくつかの論理アドレスに対応する(メモリ110などのメモリ上に記憶され得る)特定のMUに(例えば、FTL114などのFTLを介して)アクセスすることが可能である。書き込み指令に対応するデータは、メモリに書き込むことが可能であり、MUの部分405のマッピングデータは、論理アドレスが新しく書き込まれるデータのメモリ上の位置にマッピングするように更新することが可能である。いくつかの実施形態では、MUの第2の部分407のマッピングデータもまた、(例えば、MUをメモリに書き戻すことに先立って)更新することが可能である。図10に関連してさらに説明するように、第2の部分407の最新のマッピングデータを維持することは、MUG409のMU(例えば、最新にメモリに書き込まれたMU)のうちの現在最新の1つを決定することと、更新されているMUの第2の部分407に対応する無効インジケータを、MUGの現在最新のMUの第2の部分407に対応する最新のインジケータと交換することと、を含み得る。
図5は、本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニット(503−0、503−1、503−2、・・・、503−i、・・・)を示す。上述したように、MU503は、L2Pマップ501中のMUG509などのいくつかのMUGとして編成することが可能である。図5のMU503およびMUG509は、例えば、先行する図と関連付けて説明したMUおよびMUGに類似し得る。この例では、MUG509は、MU503−i(MU[i])およびいくつかの他の「隣接する」MU503を含む。図5に示すように、MU[i]は、いくつかの物理データユニットのメモリ510上の位置を示すマッピングデータを含む第1の部分505と、MU[i]が属するMUG509のいくつかの他のMUのメモリ510上の位置を示すマッピングデータを含む第2の部分507とを含む。いくつかの実施形態では、部分507のマッピングデータは、メモリ510以外のメモリ上(例えば、異なるメモリデバイスおよび/または異なる種類のメモリ上)の位置を示すことが可能である。
メモリ510は、例えば、図1に示すメモリデバイス110−1〜110−Dなどのいくつかのメモリデバイスを含むことが可能である。図5に示す例では、メモリ510は、第1のダイ(ダイ0)および第2のダイ(ダイ1)を含むが、各々が第1のプレーン(プレーン0)および第2のプレーン(プレーン1)のメモリセルを含むが、しかしながら、実施形態は、メモリ510と関連付けられた特定の数のダイおよび/またはプレーンに限られるわけではない。
MU[i]の部分505は、例えば、データユニットマッピングテーブルを含むことが可能である。図5に示す例では、部分505は、エントリPA[0]〜[PA_PER_MU−1]を有するテーブルを含むが、各々のエントリは、メモリ510上の物理データユニットの位置を示す(例えば、指示する)。例えば、この例では、それぞれのテーブルエントリPA[0]、PA[1]、およびPA[2]に対応する矢印511−0、511−1、および511−2は、メモリ510上の4KBの物理データユニットを指示する。すなわち、部分505の各々のテーブルエントリは、メモリ510上のデータユニットの物理アドレス(PA)を示すことが可能である。本明細書に説明するように、部分505のテーブルエントリが指示するデータユニットのサイズは、MU[i]に対応する可変データユニット種類によって定義される。
MU[i]の部分507はまた、例えば、MUマッピングテーブルを含むことが可能である。図5に示す例では、部分507は、MUG509の各々のそれぞれのMUに対応するエントリを含むテーブルを含む。この例では、MUG509に対応するMUの数は、指標「m」で示される。したがって、部分507の各々のテーブルエントリは、(例えば、物理マッピングユニットアドレスPMUA[0]〜PMUA[m−1]によって示すように)MUG509の「m」個のMUのうちの特定の1つのメモリ510上の位置を示す。
部分507の各々のテーブルエントリはまた、エントリが対応するMUの可変ユニットデータ種類(TP)を示す、自身に対応する属性データを含む。可変データユニット種類は、例えば、対応するMUのデータユニットサイズを定義することが可能である。一例として、TP=0は、対応するMUのデータユニットサイズがベースデータユニットサイズ(例えば、いくつかの可変データユニットサイズのうちの最小のデータユニットサイズ)に等しいことを示すことが可能である。TP=1は、対応するMUのデータユニットサイズがベースデータユニットサイズの2倍に等しいことを示すことが可能であり、TP=2は、対応するMUのデータユニットサイズがベースデータユニットサイズの4倍に等しいことを示すことが可能である。この例では、ベースデータユニットサイズは4KBである。上述したように、いくつかの実施形態では、ベースデータユニットサイズは、例えば8KBであり得るメモリ(例えば、510)に対応するページサイズ未満であり得る。テーブルエントリ513−iが示すように、MU[i]は、0という対応する可変データユニット種類(例えば、TP=0)を有するが、これは、部分505のテーブルエントリが(例えば、矢印511−0、511−1、および511−2によって示すように)メモリ510上の4KBデータユニットを指示するという事実によって反映されている。実施形態は、この例に制限されない。
図6は、本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニット(603−0、603−1、603−2、・・・、603−i、・・・)を示す。上述したように、MU603は、L2Pマップ601中のMUG609などのいくつかのMUGとして編成することが可能である。図6のMU603およびMUG609は、例えば、先行する図と関連付けて説明したMUおよびMUGに類似し得る。この例では、MUG609は、MU603−i(MU[i])およびいくつかの他の「隣接する」MU603(例えば、MU603−iが属するMUG609の他のMU603)を含む。図6に示すように、MU[i]は、いくつかの物理データユニットのメモリ610上の位置を示すマッピングデータを含む第1の部分605−iと、MU[i]が属するMUG609のいくつかの他のMUのメモリ610上の位置を示すマッピングデータを含む第2の部分607−iと、を含む。いくつかの実施形態では、部分607−iのマッピングデータは、メモリ610以外のメモリ上(例えば、異なるメモリデバイスおよび/または異なる種類のメモリ上)の位置を示すことが可能である。
メモリ610は、例えば、図1に示すメモリデバイス610−1〜610−Dなどのいくつかのメモリデバイスを含むことが可能である。図6に示す例では、メモリ610は、第1のダイ(ダイ0)および第2のダイ(ダイ1)を含むが、各々が第1のプレーン(プレーン0)および第2のプレーン(プレーン1)のメモリセルを含むが、しかしながら、実施形態は、メモリ610と関連付けられた特定の数のダイおよび/またはプレーンに限られるわけではない。
MU[i]の部分605−iは、固定量のスペースを含むことが可能である。いくつかの実施形態では、MUに対応するデータユニットの位置(例えば、物理アドレス)を示すために用いられるスペース605−iの量(例えば、データユニットマッピングテーブルのサイズ)は、部分605−iに対応する利用可能な量のスペース未満であり得る。図6に示す例では、利用可能スペース605−iの一部分は、MU[i]に対応する可変データユニット種類によって定義されたサイズを有するMU[i]に対応するデータユニットの物理位置を示すデータユニットマッピングテーブル615−iを含む。スペース615−iの量は、MU[i]に対応する可変データユニット種類によって異なり得る。以下にさらに説明するように、この例では、MU[i]に対応する可変データユニット種類はTP=1であり、これは、MU[i]に対応するデータユニットサイズ(例えば、8KB)がベースデータユニットサイズ(例えば、4KB)の2倍であることを示すことが可能である。したがって、テーブル615−iには、MU[i]に対応する可変データユニット種類がTP=0であった場合の半分のエントリが存在する。すなわち、MU[i]に対応する可変データユニットのサイズは、ベースデータユニットサイズの2倍であるから、部分615−iに対応する半分のテーブルエントリが、同一の量の論理スペースをマッピングするために用いられる。したがって、PA_PER_MUが、ベースデータユニットサイズを取るテーブル615−i中のエントリの数を示す場合、MU[i]に対応するデータユニットサイズがベースデータユニットサイズの2倍であると仮定すると、PA_PER_MU/2は、テーブル615−i中のテーブルエントリの数である。したがって、図6に示すテーブル615−iは、エントリPA[0]〜PA[PA_PER_MU/2]であり、エントリの各々は、メモリ610上の8KBデータユニットを(例えば、矢印611−iで示すように)指示する。
図6に示すように、いくつかの実施形態では、MU(例えば、MU[i])に対応する可変データユニット種類は、可変データユニット種類によって定義されたサイズを有するデータ対応データユニットをマッピングするために用いられるスペース(例えば、615−i)の量が、利用可能なスペース(例えば、605−i)の量未満になるようなものであり得る。このような実施形態では、利用可能なスペース(605−i)の少なくとも一部分(例えば、625−i)は、可変データユニット種類によって定義されたサイズ以外のサイズを有するMUに対応するデータユニットを指示するインジケータを提供することが可能である。例えば、部分625−iは、例えば、(例えば、可変/不規則ホストI/O作業負荷のために)MU[i]によってマッピングされた論理スペースに対する上書きに関連付けられたマップ更新を維持するツリー(例えば、ハッシュツリー、bツリーなど)などのデータ構造を含むことが可能である。例えば、ホストによって開始され、MU[i]に対応する論理アドレス範囲と関連付けられた1つ以上の4KB書き込み動作には、MU[i]に対応する同一の論理アドレス範囲に対するいくつかの8KB書き込み動作が組み入れられ得る。MU[i]に対応する現在の8KBデータユニットサイズを調節するのではなく、4KB書き込みのため、部分625−iは、(例えば、図6の矢印619−iによって示すように)メモリ610上のより小さい4KBデータユニットの位置を示すために用いることが可能である。部分625−iと関連付けられたスペースの限られた量のために、いくつかの実施形態では、可変データユニット種類は、ホストI/O作業負荷に応答して調節することが可能である。例えば、MU[i]に対応する論理アドレス範囲に対する上書きに関連付けられた更新の数が、利用可能な更新スペース625−iがいっぱいになるような数であれば、可変データユニット種類は調節することが可能である(例えば、TP=1からTP=0に変更される)。
MU[i]の部分607−iは、例えば、MUG609に対応するそれぞれのMU603の位置を示すエントリを有するMUマッピングテーブルを含むことが可能である。MUマッピングテーブル607−iのエントリはまた、それぞれのMUに対応する可変データユニット種類(TP)を示すことが可能である。この例では、MUG609に対応するMUの数は、指標「m」によって示される。したがって、部分607−iの各々のテーブルエントリは、(例えば、物理マッピングユニットアドレスPMUA[0]〜PMUA[m−1]によって示されるように)MUG609の「m」個のMUのうちの特定の1つのメモリ610上の位置を示す。
図6に示すように、MU[i]に対応するエントリ613−iは、可変データユニット種類TP=1を示すが、これは、この例では、部分615−iによってマッピングされたデータユニットサイズが、4KBのベースデータユニットサイズのそれの2倍であることを示す。したがって、この例では、可変データユニット種類TP=1はまた、スペース605−iの半分(例えば、615−i)は8KBデータユニットをマッピングするために用いられ、スペース605−iの半分(例えば、625−i)は、MU[i]に対応する論理アドレスに対する上書きと関連付けられたデータユニット(例えば、4KBデータユニット)をマッピングするために用いられることを示す。
図6に示すMU[j]603−jは、MU[i]603−iと同一のMUG609内にある。したがって、MU[i]の部分607−iはエントリ613−jを含むが、これは、MU[j]のメモリ610上の物理位置と、MU[j]に対応する可変データユニット種類(例えば、TP=3)とを(矢印617−jによって表されるPMUA[j]を介して)示す。この例では、TP=3は、MU[j]に対応するデータユニットサイズは32KB(例えば、4KBのベースデータユニットサイズの8倍)であることを示す。MU[j]に対応するデータユニットサイズはベースデータユニットサイズの8倍であるため、MU[j]に対応するデータサイズがベースデータユニットサイズであった場合に比べて、MU[j]によってマッピングされる論理スペースの量をマッピングするために必要とされるMUマッピングテーブル615−j中のエントリは8倍少なくて済む。したがって、部分615−jは、エントリPA[0]〜PA[PA_PER_MU/8]を含むが、これは32KBのデータユニットのメモリ610上の位置を指示する(例えば、矢印611−jによって表されるような)インジケータを提供する。したがって、MU[j]に対応する可変データユニット種類によって定義されたサイズを有するデータユニットに対するマッピング用に利用可能なスペース605−jの7/8は、未使用である。
上述したように、部分625−jは、例えば、可変データユニット種類によって定義される(例えば、ベースデータユニットサイズに等しいサイズなどの32KB未満のサイズ)以外のサイズを有するMU[j]に対応するデータユニットを指示するインジケータを提供することが可能なハッシュツリーおよび/またはbツリーなどのデータ構造を含むことが可能である。この例では、部分625−jは、メモリ610上の4KBデータユニットに対する(例えば、矢印619−jで表される)ポインタを提供する。部分625−jのマッピングデータ(例えば、ツリーエントリ)は、MU[j]によってマッピングされた論理アドレススペースに対する上書き(例えば、この例では、32KBのデータユニットサイズ未満の論理スペース量に対応するホストが開始した上書き)に対応することが可能である。
いくつかの理由により、(例えば、正確なマッピングデータを維持するなどのために、細分化されたおよび/または不整合の書き込みの可能性を軽減するために)MUGの1つ以上のMU(例えば、603)の特定の可変データユニット種類を調節することが有用であり得る。例えば、ホストが、特定のMUの論理アドレススペースに対するいくつかの4KBメタデータ書き込みなどのいくつかの比較的小さい書き込み指令を発行し、MUの特定の可変データユニット種類によって定義されたデータユニットサイズが4KB書き込みサイズを超える場合、更新を維持するために利用可能なスペース(例えば、625−i)は、容量に到達し得、かつ/または超え得る。したがって、MUの特定の可変データユニット種類は、異なるデータユニット種類(例えば、より小さいデータユニットサイズを定義するデータユニット種類)に調節することが可能である。いくつかの実施形態では、特定の可変データユニット種類は、特定のMUの定義されたデータユニットサイズが増加するように調節することが可能である。例えば、ホストが、4KBの定義されたデータユニットサイズを有する特定のMUの論理アドレス空間に対するいくつかの32KB書き込みを発行する場合(例えば、TP=0)、MUの定義されたデータユニットサイズを、例えば、32KBに増すことが恩典となり得る(例えば、TP=3)。MUのデータユニットサイズを増すことは、データユニットマッピングテーブル(例えば、615−i)のマッピングデータスペース(例えば、605−i)の量を減少させるなどの恩典を提供することが可能であり、これは、MUの論理アドレススペースに対するマッピング上書きのために利用可能なスペース(例えば、625−i)を増加させる。
いくつかの実施形態では、マッピングユニット管理構成要素(例えば、図1に示すMU管理116)は、ホスト(例えば、ホスト102)のI/O作業負荷を監視(例えば、追跡)することが可能である。例えば、MU管理構成要素は、入力する書き込み指令のサイズと、これらが対応するMUおよび/またはMUGとを、(例えば、書き込み指令に対応する論理アドレスに基づいて)追跡することが可能である。MU管理構成要素は、監視された情報を用いて、例えば、様々なMUの可変データユニット種類および/またはそれに対応する可変データユニット種類を調節すべきかどうかを決定することが可能である。
したがって、本開示のいくつかの実施形態は、MUの可変データユニット種類を調節する能力を提供する。可変データユニット種類を調節することは、他の恩典のうちでも、例えば、FTL(例えば、図1に示すFTL114)によって実装することが可能で、かつホストI/O作業負荷の可変性および/または不規則性を考慮に入れて適合可能な可撓性のあるアドレスマッピング方式を提供することによって様々な恩典を提供することが可能である。
図7は、本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニット(703−0、703−1、703−2、・・・、703−i、・・・)を示す。上述したように、MU703は、L2Pマップ701中のMUG709などのいくつかのMUGとして編成することが可能である。図7のMU703およびMUG709は、例えば、先行する図と関連付けて説明したMUおよびMUGに類似し得る。この例では、MUG709は、MU703−i(MU[i])およびいくつかの他の「隣接する」MU703(例えば、MU703−iが属するMUG709の他のMU703)を含む。図7に示すように、MU[i]は、いくつかの物理データユニットのメモリ710上の位置を示すデータユニットマッピングテーブル715−iを含む第1の部分705−iと、MU[i]が属するMUG709のいくつかの他のMUのメモリ710上の位置を示すMUマッピングテーブルを含む第2の部分707と、を含む。
上述したように、MU[i]の部分705−iは、固定量のスペースを含むことが可能である。いくつかの実施形態では、MU[i]に対応する可変データユニット種類によって定義されたサイズを有するデータユニットの位置(例えば、物理アドレス)を示すために用いられるマッピングテーブル705−iの量。スペース715−iの量は、MU[i]に対応する可変データユニット種類によって異なり得る。
この例では、MUテーブル707のエントリ713−iによって示されるように、MU[i]に対応する可変データユニット種類はTP=1であり、これは、MU[i]に対応するデータユニットサイズがベースデータユニットサイズ(例えば、4KB)のそれの2倍であることを示すことが可能である。すなわち、TP=1によって定義されたデータユニットサイズは8KBである。したがって、データユニットマッピングテーブル715−i中には、MU[i]に対応する可変データユニット種類がTP=0であった場合(ベースデータユニットサイズ、この例では、例えば、4KBに等しい定義された可変データユニットサイズに対応するTP=0の場合)の半分のエントリが存在する。すなわち、MU[i]に対応する可変データユニットのサイズがベースデータユニットサイズの2倍であるため、部分715−iに対応する半分のテーブルエントリが、MU[i]によってマッピングされる同一の量の論理スペース(この例では、4MB)をマッピングするために、用いられる。したがって、PA_PER_MUが、ベースデータユニットサイズを取るテーブル715−i中のエントリの数を示す場合、MU[i]に対応するデータユニットサイズがベースデータユニットサイズの2倍であると仮定すると、PA_PER_MU/2は、テーブル715−i中のテーブルエントリの数である。したがって、図7に示すテーブル715−iは、エントリPA[0]〜PA[PA_PER_MU/2]を含み、図7には示さないが、エントリの各々は、メモリ(例えば、メモリ710)上の8KBデータユニットを指示する。
MU[i]に対応する可変データユニット種類(例えば、TP=1)は、データユニットマッピングテーブル715−iのサイズが利用可能なスペース705−iの量未満になるようなものであるため、利用可能スペース705−iの部分725−iは、例えば、(例えば、ホストI/O作業負荷の可変性/不規則性のために)MU[i]によってマッピングされた論理スペースに対する上書きと関連付けられたマップ更新を維持するツリー(例えば、ハッシュツリー、bツリーなど)などのデータ構造を含むことが可能である。
MU[i]の部分707は、例えば、MUG709に対応するそれぞれのMU703の位置を示すエントリを示すMUマッピングテーブルを含むことが可能である。MUマッピングテーブル707のエントリはまた、それぞれのMUに対応する可変データユニット種類(TP)を示すことが可能である。この例では、MUG709に対応するMU703の数は、指標「m」で示される。いくつかの実施形態では、MUG709に対応するいくつかのMU703は、直接データユニット(DDU)MUであり得る。本明細書で用いられるDDU MUとは、特定のMU(例えば、703−j)が属するMUG(例えば、709)のそれぞれのMU(例えば、703)の各々によってマッピングされたデータの量に等しいデータユニットサイズを持つMU(例えば、703−j)のことであり得る。
例えば、MU703の各々が、4MBのデータをマッピングする場合、DDU MU(例えば、703−j)は、DDUと呼ばれるメモリ上の1つの4MBの物理データユニットにマッピングする。図7で、MU[j]に対応するマッピングエントリ713−jは、MU[j]によってマッピングされた4MBデータユニットのメモリ710上の位置を直接指示するインジケータ(矢印721−jで表される)を提供する。すなわち、PMUA[j]は、DDU MU[j]に対応するDDUを直接指示する。いくつかの実施形態では、DDU MUに対応する可変データユニット種類はTP=A(ここで、「A」は16進法の数であり得る)である。したがって、エントリ713−jは、図7に示すように、TP=Aを含む属性データを含む。MU[j]703−jのメモリ710上の位置を指示するのとは対照的に、PMUA[j]は、MU[j]に対応するDDUを直接指示するため、MU[j]は、それに対応するデータユニットの位置を決定するために、メモリ710上に記憶してアクセスする必要はない。したがって、1つ以上のDDU MUの存在は、例えば、記憶されるMUの総数を減少させることが可能である。
図8は、本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニット(803−0、803−1、803−2、・・・、803−i、・・・)を示す。MU803は、L2Pマップ801中のMUG809を含むいくつかのMUGとして編成される。図8のMU803およびMUG809は、例えば、先行する図と関連付けて説明したMUおよびMUGに類似し得る。この例では、MUG809は、MU803−i(MU[i])および他のMU803(MU803−iが属するMUG809のMU[j]を含む)を含む。
いくつかの実施形態において、また図8に示すように、MUG(例えば、MUG809)は、図7に関連付けて説明したDDU MU[j]などの全てのDDU MUを含むことが可能である。例えば、MUG809のMU803の各々は、DDU MUである。本明細書に説明する例では、DDU MUに対応する可変データユニット種類は、TP=Aである。このような例では、TP=Aは、データユニットサイズを、この例では4MBであるMUGのMUによってマッピングされたデータの量に等しいと定義する。MUG809のMU803の各々はDDU MUであるため、MUマッピングテーブル807中のエントリ(例えば、813−i、813−jなど)の各々は、それぞれのMU803に対応する4MBデータユニットのメモリ810上の位置を示す物理マッピングユニットアドレス(例えば、PMUA[0]〜PMUA[m−1])を含む。例えば、矢印821−iによって示すように、PMUA[i]はMU[i]に対応する4MBデータユニットを指示し、矢印821−jによって示すように、PMUA[j]はMU[j]に対応する4MBデータユニットを指示する。
MUGがDDU MUしか含まない実施形態では、データユニットマッピングテーブル(例えば、図7に示すマッピングテーブル715−i)に割り当てられるスペースの量は、省略することが可能である。したがって、別様にデータユニットマッピングテーブルに割り当てられるスペースは、他の目的のために用いることが可能である。例えば、図8に示す実施形態では、MU[i]の部分805−iは、MUG809によってマッピングされた論理スペースに対する上書きと関連付けられたマッピング更新を維持するために用いられる。例えば、部分805−iは、MUG809に対応するマッピング更新を維持するために、ツリー(例えば、ハッシュツリー、bツリーなど)などのデータ構造を含むことが可能である。図8に示すように、部分805−iのデータ構造のエントリは、メモリ810上のデータユニットに対する(例えば、矢印819によって表されるような)ポインタを提供する。この例では、矢印819は、ベースデータユニットサイズ(例えば、4KB)に等しいサイズを有するデータユニットを指示するが、しかしながら、実施形態はそのように制限されることはない。
部分805−iと関連付けられたデータ構造は、例えば、図7で説明した部分725−iおよび図6で説明した625−iと関連付けられたデータ構造に類似し得る。しかしながら、部分805−iのデータ構造は、(例えば、MUG内の特定のMUによってマッピングされたアドレススペース上の論理アドレスに対応する更新を維持する事とは対照的に)MUGによってマッピングされた論理アドレススペース全体上の更新対応する論理アドレスを維持するために用いることが可能である。
図9は、本開示のいくつかの実施形態による、アドレスマッピングと関連付けられたいくつかのマッピングユニット(903−0、903−1、903−2、・・・、903−i、・・・)を示す。MU903は、L2Pマップ901中のMUG909を含むいくつかのMUGとして編成される。図9のMU903およびMUG909は、例えば、先行する図と関連付けて説明したMUおよびMUGに類似し得る。この例では、MUG909は、MU903−i(MU[i])および、MU903−iが属するMUG909の他のMU903を含む。
MU903−iは、図8と関連付けて説明したDDU MU803−iなどのDDU MUである。例えば、MU903−iの可変データユニット種類によって定義されたデータユニットサイズは、MU903−iによってマッピングされたデータの総量(例えば、4MB)に等しい。しかしながら、MU903−iは、MU803−iとは異なる可変データユニット種類を有する。図9に示す例では、MU903−iに対応する可変データユニット種類は、(TP=Aとは対照的に)TP=Fである。本明細書で用いられる、TP=Fの可変データユニット種類を有するMUは、「パケットDDU」MUと呼ばれる。
パケットDDU MU903−iは、第1の部分905−iおよび第2の部分907を含むマッピングデータを含む。第2の部分907は、MU803−iの第2の部分807に類似し得る。すなわち、部分907は、MUG909のMU903に対応するMUマッピングテーブルを含むことが可能である。しかしながら、第1の部分905−iは、(例えば、上述したように更新を維持するためのデータユニットマッピングテーブルおよび/またはツリーデータ構造とは対照的に)パケットDDU MU903−iと関連付けられた管理情報を含む。管理情報は、様々な情報を含むことが可能であるが、これらは、この例では、媒体種類情報および位置情報(例えば、図9に示すようなPA[n][m])を含む。媒体種類情報は、MU903−iに対応する物理データユニットがマッピングされる媒体の特定の種類を含むことが可能であり、位置情報は、例えば、物理データユニットの特定の種類の媒体上の物理アドレスを示すことが可能である。
一例として、MU903−iなどのパケットDDU MUは、他の媒体種類の中でも、フラッシュメモリ(例えば、MLC、SLCなど)、DRAM、抵抗可変メモリ(例えば、相変化メモリ、RRAMなど)、記憶エリアネットワーク(SAN)、および/またはネットワーク取付記憶(NAS)などの様々な種類の媒体に書き込みおよび/またはから回収することが可能である。したがって、本明細書に提供する様々な例はフラッシュページに基づくフレームワークに依存するが、様々な実施形態では、L2Pマップ(例えば、901)のMUは、フラッシュページに基づくフレームワークの外側で管理することが可能である。一例として、1つ以上の異なる媒体種類933、935、937、939、および/または931と関連付けられたプロキシ構成要素931(例えば、プロキシプロセッサ)を用いて、MUを管理することが可能である。
図10は、本開示のいくつかの実施形態による、マッピングユニットを更新することに関連付けられた機能フローチャートを示す。いくつかの実施形態では、本明細書に説明するようなものなどのMUは、メモリに記憶して、適切なときにガベージコレクションすることが可能である。MUは、例えば、メモリの専用領域に記憶することが可能である。本明細書に説明するように、MUは、特定のMUGのMUのメモリ上の位置を示すことが可能なマッピングユニットテーブル(例えば、307、407、507、607、707、807、907)を含むことが可能である。いくつかの実施形態では、MUGのMUのうちの最新に書き込みされた1つは、その群に対する現在最新のMUを含む。したがって、最新に書き込みされたMU(例えば、そのL2Pマッピングに対する更新を最後に受信するMU)は、現在最新のMUであり、MUGのMUの物理位置を指示する最新のインジケータを含む。MUGの現在最新のMUの表示は、例えば、コントローラによって維持することが可能である。
図10では、MU[i]1003−iは、現在最新のMUを表す。したがって、MU1003−iは、現在最新のマッピングテーブル1007−iを含む。MU[j]1003−jは、更新され、次いでメモリに書き込まれるMUを表す。例えば、MU1003−jのデータユニットテーブル1005−jと関連付けられたエントリは、ホストが開始した書き込み動作に応答して更新される必要があり得る。MU1003−jは現在最新のMUではないため、そのMUテーブル1007−jは、無効なインジケータを含む(例えば、MUテーブル1007−jは陳腐化している)。MU1003−jのデータユニットテーブル1005−jが更新された後、それは、メモリに書き戻されて、新しい現在最新のMU(例えば、現在最新のMUマッピングテーブルを持つMU)になる。
したがって、MU1003−jをメモリに書き戻すことに先立って、そのMUマッピングテーブル1007−jは、現在最新のMUマッピングテーブル1007−iと置き換えられる。図10の右側に示すように、新しいMU[j]1003−jは、更新されたデータユニットマッピングテーブル(例えば、PA[ ])および現在最新のメモリユニットマッピングテーブル(例えば、PMUA[ ])を含む。新しいMU[j]1003−jは今や、現在最新のMUマッピングテーブル1007−jを含むが、これを用いて、次に更新されてメモリに再書き込みされるMUの陳腐化したMUテーブルと置き換えることが可能である。
[結論]
本開示は、アドレスマッピングのための方法、メモリユニット、および装置を含む。1つの方法は、いくつかの論理アドレスに対応する論理−物理マッピングデータを有するマッピングユニットを提供することを含む。マッピングユニットは、自身と関連付けられた可変データユニット種類を有し、可変データユニット種類によって定義されたサイズを有するいくつかの物理データユニットのメモリ上の位置を示すマッピングデータを含む第1の部分およびマッピングユニットが属するマッピングユニット群のいくつかの他のマッピングユニットのメモリ上の位置を示すマッピングデータを含む第2の部分を含む。
本明細書で用いられる「および/または」という用語は、いくつかの関連付けられたリストアップされた項目のあらゆる組み合わせを含む。本明細書で用いられる「または」という用語は、特に記載のない限り、論理和を意味する。すなわち、「AまたはB」は、(Aだけ)、(Bだけ)、または(AおよびBの双方)を含み得る。言い換えれば、「AまたはB」は、「Aおよび/またはB」または「いくつかのAおよびB」を意味し得る。
具体的な実施形態を本明細書に図示し、説明したが、当業者は、同一の結果を達成するように計算された装置を、図示する具体的な実施形態の代わりに導入することが可能であることを理解するであろう。本開示は、本開示のいくつかの実施形態の適用例および変更例を網羅することを意図する。上記の説明は例示するようになされており制限するようにはなされていないことを理解すべきである。上記の実施形態の組み合わせと、本明細書に具体的には説明されなかった他の実施形態とは、上記の説明を読めば当業者には明らかであろう。本開示のいくつかの実施形態の範囲は、上記の構造および方法が用いられる他の応用分野を含む。したがって、本開示のいくつかの実施形態の範囲は、添付の特許請求の範囲、ならびにかかる特許請求の範囲が権利を有する均等物の全範囲を参照して決定されるべきである。
前述の詳細な説明において、一部の特徴部が、開示を合理的に行う目的のため、1つの実施形態に分類されている。この開示の方法は、本開示の開示された実施形態は各請求項に明示的に列挙されるよりも多い特徴部を用いなければならないという意図を反映するものと解釈されるべきではない。むしろ、次の特許請求の範囲が反映するように、発明の主題は、1つの開示された実施形態の全ての特徴部よりも少ない特徴部に存在する。したがって、次の特許請求の範囲は、それにより詳細な説明に組み込まれ、各請求項は、個別の実施形態として独立している。

Claims (40)

  1. アドレスマッピングのための方法であって、
    いくつかの論理アドレスに対応する論理−物理マッピングデータを有するマッピングユニットを提供することを含み、前記マッピングユニットは、自身と関連付けられた可変データユニット種類を有し、
    前記可変データユニット種類によって定義されたサイズを有するいくつかの物理データユニットのメモリ上の位置を示すマッピングデータを含む、第1の部分と、
    前記マッピングユニットが属するマッピングユニット群のいくつかの他のマッピングユニットの前記メモリ上の位置を示すマッピングデータを含む、第2の部分と、を含む、アドレスマッピングのための方法。
  2. 前記方法が、前記いくつかの論理アドレスのうちの1つ以上に対応する前記論理−物理マッピングデータの変化に応答して前記マッピングユニットを更新することを含む、請求項1に記載の方法。
  3. 前記方法が、ホスト入力/出力(I/O)作業負荷を監視することと、前記マッピングユニットと関連付けられた前記可変データユニットサイズを、前記ホストI/O作業負荷に少なくとも部分的に基づいて調節することと、を含む、請求項1に記載の方法。
  4. 前記マッピングユニットと関連付けられた前記可変データユニットサイズを調節することが、前記第1の部分によってマッピングされる前記いくつかの物理データユニットの量を調節することを含む、請求項3に記載の方法。
  5. 前記方法が、いくつかのマッピングユニット群を提供することを含み、前記いくつかのマッピングユニット群の各々が、同一の数のマッピングユニットを含む、請求項1に記載の方法。
  6. 各々のそれぞれのマッピングユニットが同一の数の非重複論理アドレスに対応するように、前記いくつかのマッピングユニット群を提供することを含む、請求項5に記載の方法。
  7. 前記マッピングユニット群の前記いくつかの他のマッピングユニットの前記メモリ上の位置を示す最新マッピングデータを、
    前記マッピングユニット群の前記マッピングユニットのうちの現在最新の1つであって、前記いくつかのマッピングユニットの前記メモリ上の物理的位置を指示する最新インジケータを含む、現在最新の1つを決定することと、
    前記メモリに次に書き込まれる、前記マッピングユニット群のマッピングユニットであって、前記いくつかのマッピングユニットの前記メモリ上の物理的位置を指示する無効インジケータを含む、マッピングユニットを決定することと、
    次に前記メモリに書き込まれる前記マッピングユニットをメモリに書き込むことに先立って、次に前記メモリに書き込まれる前記マッピングユニットに対応する前記無効インジケータを、前記マッピングユニット群の前記マッピングユニットのうちの前記現在最新の1つに対応する前記最新インジケータと交換することと、
    によって維持することを含む、請求項1〜6のいずれか一項に記載の方法。
  8. 前記マッピングユニット群の前記マッピングユニットのうちの前記現在最新の1つを決定することが、前記マッピングユニット群の前記マッピングユニットのうちのどれが前記メモリに最新に書き込まれたかを決定することを含む、請求項7に記載の方法。
  9. 前記方法が、前記マッピングユニット群の前記マッピングユニットと関連付けられた前記可変データユニット種類を示す属性データを、前記第2の部分に提供することをさらに含む、請求項1〜6のいずれか一項に記載の方法。
  10. 前記方法が、
    前記可変データユニット種類が、前記第1の部分に対応する前記マッピングデータのために用いられるスペースの量が固定量のスペース未満であるようなものである場合に、前記固定量のスペースの少なくとも一部分を用いて、前記可変データユニット種類によって定義された前記サイズ以外のサイズを有する物理データユニットを指示するインジケータを提供することを含む、請求項1〜6のいずれか一項に記載の方法。
  11. アドレスマッピングのための方法であって、
    いくつかのマッピングユニットをメモリ上に記憶することであって、前記いくつかのマッピングユニットは各々、いくつかの論理アドレスデータに対応する論理−物理マッピングデータおよび自身と関連付けられた可変データユニット種類を含み、前記いくつかのマッピングユニットの各々のそれぞれの1つが、
    前記可変データユニット種類によって定義されたサイズを有する物理データユニットの位置を示すマッピングデータを含む、第1の部分と、
    前記いくつかのマッピングユニットの前記それぞれの1つが属するマッピングユニット群のいくつかの他のマッピングユニットの前記メモリ上の位置を示すマッピングデータを含む、第2の部分と、を含む、記憶することと、
    書き込み指令と関連付けられ、前記いくつかのマッピングユニットのうちの特定の1つに対応する論理アドレスに基づいて、前記メモリ上に記憶された前記いくつかのマッピングユニットのうちの前記特定の1つにアクセスすることと、を含む、アドレスマッピングのための方法。
  12. 前記方法が、前記いくつかのマッピングユニットのうちの前記特定の1つに対応する現在の可変データユニット種類を決定することを含み、現在の可変データユニット種類が、前記いくつかのマッピングユニットのうちの前記特定の1つによってマッピングされたいくつかの物理データユニットのデータユニットサイズを示す、請求項11に記載の方法。
  13. 前記方法が、前記更新された特定のマッピングユニットを前記メモリに書き込むことに先立って、前記いくつかのマッピングユニットのうちの前記アクセスされた特定の1つを更新することを含む、請求項12に記載の方法。
  14. 前記いくつかのマッピングユニットのうちの前記アクセスされた特定の1つを更新することが、
    前記マッピングユニットのうちの前記アクセスされた特定の1つが属するマッピングユニット群の最新に更新されたマッピングユニットを決定することと、
    前記マッピングユニットのうちの前記アクセスされた特定の1つの前記第2の部分に対応する前記マッピングデータを、前記最新に更新されたマッピングユニットの前記第2の部分に対応する前記マッピングデータと交換し、それにより、前記更新された特定のマッピングユニットが、前記マッピングユニット群の前記最新に更新されたマッピングユニットになるようにすることと、を含む、請求項13に記載の方法。
  15. ホストの入/出力(I/O)作業負荷に基づいて、前記いくつかのマッピングユニットのうちの少なくとも1つの現在の可変データユニット種類を調節することを含む、請求項11〜13のいずれか一項に記載の方法。
  16. 前記方法が、前記書き込み指令をホストから受信することを含む、請求項11〜13のいずれか一項に記載の方法。
  17. 各々のマッピングユニットの前記第1の部分が、固定量のスペースを含み、前記可変データユニット種類によって定義された前記サイズ以外のサイズを有する物理データユニットの位置を示すために、前記固定量のスペースの少なくとも一部分を割り当てることを含む、請求項11〜13のいずれか一項に記載の方法。
  18. 前記可変データユニット種類によって定義された前記サイズ以外のサイズを有する物理データユニットの位置を示すために、前記固定量のスペースの前記少なくとも一部分を、前記可変データユニット種類に基づいて割り当てることをさらに含む、請求項11〜13のいずれか一項に記載の方法。
  19. 前記第2の部分が、各々が前記マッピングユニット群の前記いくつかのマッピングユニットのそれぞれ1つに対応するいくつかのエントリを有するマッピングテーブルを含み、前記いくつかのエントリのうちの少なくとも1つが、マッピングユニットの前記メモリ上の位置を指示するよりもむしろ、前記メモリ上の物理データユニットを直接指示するインジケータを提供する、請求項11〜13のいずれか一項に記載の方法。
  20. 装置であって、
    各々が、自身と関連付けられたいくつかの可変データユニット種類のうちの1つの可変データユニット種類を有する、いくつかのマッピングユニットを記憶する、メモリであって、前記可変データユニット種類が、前記それぞれのマッピングユニットによってマッピングされたデータユニットサイズを定義する、メモリと、
    前記メモリに連結され、
    ホストから受信された書き込み指令と関連付けられた論理アドレスに基づいて特定のマッピングユニットにアクセスすることと、
    前記特定のマッピングユニットの一部分を更新することであって、前記一部分が、前記特定のマッピングユニットの前記可変データユニット種類によって定義されたサイズを有する物理データユニットの位置を示すマッピングデータを含む、更新することと、を行うように構成される、コントローラと、を備える、装置。
  21. 前記特定のマッピングユニットが、前記特定のマッピングユニットが属するマッピングユニット群のいくつかのマッピングユニットの各々の前記メモリ上の位置を示すマッピングデータを含む、別の部分を含む、請求項20に記載の装置。
  22. 前記別の部分の前記マッピングデータが、マッピングユニットテーブルを含み、前記コントローラが、前記マッピングユニットテーブルを前記マッピングユニット群の別のマッピングユニットの現在最新のマッピングユニットテーブルと交換することによって、前記マッピングユニットテーブルを更新するように構成される、請求項21に記載の装置。
  23. 前記コントローラが、
    前記マッピングユニットテーブルを前記別のマッピングユニットの前記現在最新のマッピングユニットテーブルと交換した後で、前記特定のマッピングユニットをメモリに書き込むことと、
    次いで、前記特定のマッピングユニットの前記交換されたマッピングユニットテーブルにアクセスすることによって、前記マッピングユニット群の異なるマッピングユニットの前記メモリ上の位置を決定することと、を行うように構成される、請求項22に記載の装置。
  24. 前記いくつかのマッピングユニットが、いくつかのマッピングユニット群中に編成され、
    前記いくつかのマッピングユニットの各々が、同一の量のデータをマッピングし、
    特定のマッピングユニット群内の前記マッピングユニットの各々が、同一の量のデータをマッピングし、
    前記いくつかのマッピングユニットの各々が、固定量の利用可能データスペースを有し、前記固定量の使用可能データスペースが、それぞれのマッピングユニットが属する前記マッピングユニット群の前記マッピングユニットの各々の前記物理的位置を示すマッピングユニットテーブルを含む、一部分を含む、請求項20〜23のいずれか一項に記載の装置。
  25. 前記いくつかのマッピングユニットのうちの少なくとも1つが、直接データユニット(DDU)マッピングユニットである、請求項20〜23のいずれか一項に記載の装置。
  26. 前記いくつかのマッピングユニットが、いくつかのマッピングユニット群中に編成され、
    前記マッピングユニット群のうちの少なくとも1つが、全ての直接データユニット(DDU)マッピングユニットを含み、
    前記マッピングユニット群のうちの前記少なくとも1つのマッピングユニットの少なくとも一部分が、前記マッピングユニット群のうちの前記少なくとも1つによってマッピングされた前記論理スペースに対する上書きと関連付けられたマッピング更新を維持するために用いられる、請求項20〜23のいずれか一項に記載の装置。
  27. 前記いくつかのマッピングユニットのうちの少なくとも1つが、パケット直接データユニットであって、前記パケット直接データユニットに対応する物理データユニットがマッピングされる、媒体の特定の種類を示す媒体種類情報を含む管理情報を含む、パケット直接データユニットである、請求項20〜23のいずれか一項に記載の装置。
  28. 前記コントローラが、前記メモリの媒体種類とは異なる種類を有する媒体上に記憶される少なくとも1つのマッピングユニットにアクセスするように構成される、請求項20〜23のいずれか一項に記載の装置。
  29. 装置であって、
    各々が関連付けられた可変データユニット種類を有する、いくつかのマッピングユニットを記憶する、メモリと、
    メモリユニット管理構成要素であって、
    ホストの入/出力(I/O)作業負荷を監視することと、
    前記ホストの前記I/O作業負荷に基づいて、前記いくつかのマッピングユニットのうちの少なくとも1つの前記可変データユニット種類を調節すべきかどうかを決定することと、を行うように構成される、メモリユニット管理構成要素と、を備える、装置。
  30. 前記いくつかのマッピングユニットの各々が、
    前記可変データユニット種類によって定義されたサイズを有する物理データユニットの位置を示すマッピングデータを含む、第1の部分と、
    前記いくつかのマッピングユニットの前記それぞれ1つが属するマッピングユニット群のいくつかの他のマッピングユニットの前記メモリ上の位置を示すマッピングデータを含む、第2の部分と、を含む、請求項29に記載の装置。
  31. ホストの入/出力(I/O)作業負荷を監視するように構成されるメモリユニット管理構成要素が、前記いくつかのマッピングユニットの各々によってマッピングされた前記論理アドレスに対応する書き込み指令のサイズを追跡するように構成される、メモリユニット管理構成要素を含む、請求項29に記載の装置。
  32. 前記ホストの前記I/O作業負荷に基づいて、前記いくつかのマッピングユニットのうちの少なくとも1つの前記可変データユニット種類を調節すべきかどうかを決定するように構成される、メモリユニット管理構成要素が、前記可変データユニット種類によって定義されたデータユニットサイズが減少するように、前記可変データユニット種類を調節すべきかどうかを決定するように構成されるメモリユニット管理構成要素を含む、請求項29に記載の装置。
  33. 前記ホストの前記I/O作業負荷に基づいて、前記いくつかのマッピングユニットのうちの少なくとも1つの前記可変データユニット種類を調節すべきかどうかを決定するように構成される、メモリユニット管理構成要素が、前記可変データユニット種類によって定義されたデータユニットサイズが増加するように、前記可変データユニット種類を調節すべきかどうかを決定するように構成されるメモリユニット管理構成要素を含む、請求項29に記載の装置。
  34. 前記コントローラが、
    前記いくつかのメモリユニットのうちの特定の1つを前記メモリから回収することと、
    前記特定のメモリユニットのデータユニットマッピングテーブルを更新することと、
    前記特定のメモリユニットを前記メモリに書き戻すことに先立って、前記特定のメモリユニットのメモリユニットマッピングテーブルを更新することと、を行うように構成される、請求項29に記載の装置。
  35. 前記データユニットマッピングテーブルが、前記可変データユニット種類によって定義されたサイズを有する物理データユニットの前記メモリ上の位置に対する、ポインタを含み、前記メモリユニットマッピングテーブルが、前記特定のメモリユニットが属するメモリユニット群の前記メモリユニットの各々の前記可変データユニット種類を示す、請求項34に記載の装置。
  36. 前記メモリユニット管理構成要素が、前記メモリを含むメモリシステム上に置かれる、請求項29〜35のいずれか一項に記載の装置。
  37. 前記メモリユニット管理構成要素が、前記メモリに連結されたコントローラ上に置かれる、請求項29〜35のいずれか一項に記載の装置。
  38. 自身と関連付けられた可変データユニット種類を有し、固定量の利用可能記憶スペースを含む、マッピングユニットであって、前記固定量の利用可能記憶スペースが、
    いくつかの論理アドレスと関連付けられたいくつかの物理データユニットに対応する、マッピングデータを含む、第1の部分であって、前記マッピングデータが対応する前記いくつかの物理データユニットが、前記可変データユニット種類によって定義されたデータユニットサイズに依存する、第1の部分と、
    前記マッピングユニットおよび、前記マッピングユニットが属するマッピングユニット群のいくつかの他のマッピングユニットの各々に対応する、マッピングデータを含む、第2の部分と、を含み、前記マッピングデータが、
    前記マッピングユニットと、前記マッピングユニット群の前記いくつかの他のマッピングユニットの各々との前記メモリ上の位置に対応するアドレスと、
    前記マッピングユニットと、前記マッピングユニット群の前記他のマッピングユニットの各々との前記可変データユニット種類を示す属性データと、を含む、マッピングユニット。
  39. 前記可変データユニット種類が調節可能であり、ホストの入/出力(I/O)作業負荷に基づいて調節されるように構成される、請求項38に記載のマッピングユニット。
  40. 前記第1の部分および前記第2の部分のために用いられる前記固定量の利用可能記憶スペースの量が、調節可能であり、
    前記マッピングユニットと関連付けられたベースデータユニットサイズと、
    前記いくつかの論理アドレスと関連付けられた前記いくつかの物理データユニットと、
    前記マッピングユニットによってマッピングされたデータの総量と、
    に基づいて調節されるように構成される、請求項38〜39のいずれか一項に記載のマッピングユニット。
JP2015532071A 2012-09-14 2013-09-13 アドレスマッピング Active JP6109316B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/616,175 US10282286B2 (en) 2012-09-14 2012-09-14 Address mapping using a data unit type that is variable
US13/616,175 2012-09-14
PCT/US2013/059645 WO2014043459A1 (en) 2012-09-14 2013-09-13 Address mapping

Publications (2)

Publication Number Publication Date
JP2015534178A true JP2015534178A (ja) 2015-11-26
JP6109316B2 JP6109316B2 (ja) 2017-04-05

Family

ID=50275726

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015532071A Active JP6109316B2 (ja) 2012-09-14 2013-09-13 アドレスマッピング

Country Status (6)

Country Link
US (1) US10282286B2 (ja)
EP (1) EP2895958B1 (ja)
JP (1) JP6109316B2 (ja)
KR (1) KR101852668B1 (ja)
CN (1) CN104641356B (ja)
WO (1) WO2014043459A1 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9417803B2 (en) 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
KR101979735B1 (ko) * 2012-11-02 2019-05-17 삼성전자 주식회사 비휘발성 메모리 시스템 및 이와 통신하는 호스트
KR20160070920A (ko) * 2014-12-10 2016-06-21 에스케이하이닉스 주식회사 맵 테이블을 갖는 컨트롤러 및 반도체 메모리 장치를 포함하는 메모리 시스템 및 그것의 동작 방법
TWI575374B (zh) * 2015-08-04 2017-03-21 群聯電子股份有限公司 映射表格更新方法、記憶體儲存裝置及記憶體控制電路單元
US10095413B2 (en) * 2016-01-28 2018-10-09 Toshiba Memory Corporation Memory system with address translation between a logical address and a physical address
KR102532581B1 (ko) * 2016-03-17 2023-05-17 에스케이하이닉스 주식회사 메모리 장치를 포함하는 메모리 시스템 및 그의 동작 방법
US20170315924A1 (en) * 2016-04-29 2017-11-02 Netapp, Inc. Dynamically Sizing a Hierarchical Tree Based on Activity
KR20180019419A (ko) 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US10459644B2 (en) 2016-10-28 2019-10-29 Western Digital Techologies, Inc. Non-volatile storage system with integrated compute engine and optimized use of local fast memory
US10565123B2 (en) 2017-04-10 2020-02-18 Western Digital Technologies, Inc. Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module
KR20180121733A (ko) * 2017-04-28 2018-11-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10534718B2 (en) 2017-07-31 2020-01-14 Micron Technology, Inc. Variable-size table for address translation
JP2019056981A (ja) 2017-09-19 2019-04-11 東芝メモリ株式会社 メモリシステム
US10877898B2 (en) * 2017-11-16 2020-12-29 Alibaba Group Holding Limited Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements
US10970205B2 (en) * 2018-05-31 2021-04-06 Micron Technology, Inc. Logical-to-physical data structures for tracking logical block addresses indicative of a collision
US10795576B2 (en) * 2018-11-01 2020-10-06 Micron Technology, Inc. Data relocation in memory
US10901912B2 (en) * 2019-01-28 2021-01-26 Western Digital Technologies, Inc. Flash translation layer table for unaligned host writes
CN110532201B (zh) * 2019-08-23 2021-08-31 北京浪潮数据技术有限公司 一种元数据处理方法及装置
US11556481B2 (en) * 2019-08-29 2023-01-17 Micron Technology, Inc. Increased efficiency obfuscated logical-to-physical map management
US11429531B2 (en) * 2020-02-03 2022-08-30 EMC IP Holding Company LLC Changing page size in an address-based data storage system
US20230409470A1 (en) * 2022-06-15 2023-12-21 Western Digital Technologies, Inc. Scratchpad cache for gaming and iot hosts

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282111A (ja) * 1996-04-15 1997-10-31 Internatl Business Mach Corp <Ibm> 半導体メモリ装置及びその制御方法
JP2004199605A (ja) * 2002-12-20 2004-07-15 Matsushita Electric Ind Co Ltd 半導体メモリカードおよび管理情報更新方法
US7278008B1 (en) * 2004-01-30 2007-10-02 Nvidia Corporation Virtual address translation system with caching of variable-range translation clusters
JP2010521718A (ja) * 2007-12-28 2010-06-24 株式会社東芝 半導体記憶装置及びその制御方法、コントローラ、情報処理装置
JP2012141944A (ja) * 2010-12-16 2012-07-26 Toshiba Corp メモリシステム
JP2012174086A (ja) * 2011-02-23 2012-09-10 Hitachi Ltd 記憶装置およびそれを搭載した計算機

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US537521A (en) 1895-04-16 Circular sawing machine
EP0508577A1 (en) 1991-03-13 1992-10-14 International Business Machines Corporation Address translation mechanism
US6625081B2 (en) 2001-08-13 2003-09-23 Micron Technology, Inc. Synchronous flash memory with virtual segment architecture
US6906961B2 (en) 2003-06-24 2005-06-14 Micron Technology, Inc. Erase block data splitting
US7206915B2 (en) 2004-06-03 2007-04-17 Emc Corp Virtual space manager for computer having a physical address extension feature
US20060004941A1 (en) 2004-06-30 2006-01-05 Shah Hemal V Method, system, and program for accessesing a virtualized data structure table in cache
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
KR100706242B1 (ko) 2005-02-07 2007-04-11 삼성전자주식회사 메모리 시스템 및 그것의 런 단위 어드레스 매핑 테이블 구성 방법
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
KR100764750B1 (ko) 2006-10-16 2007-10-08 삼성전자주식회사 유연한 어드레스 맵핑 스킴을 갖는 플래시 메모리 장치
TW200832440A (en) * 2007-01-25 2008-08-01 Genesys Logic Inc Flash memory translation layer system
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US7934072B2 (en) 2007-09-28 2011-04-26 Lenovo (Singapore) Pte. Ltd. Solid state storage reclamation apparatus and method
CN101241472B (zh) * 2008-03-07 2010-12-22 威盛电子股份有限公司 映射管理方法及系统
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
KR101618634B1 (ko) * 2009-01-07 2016-05-09 삼성전자주식회사 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
US8255661B2 (en) * 2009-11-13 2012-08-28 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
EP2518913B1 (en) * 2009-12-24 2013-12-11 Huawei Technologies Co., Ltd. Generic mapping procedure (gmp) mapping method, gmp de-mapping method and devices therefor
GB2478727B (en) * 2010-03-15 2013-07-17 Advanced Risc Mach Ltd Translation table control
US20110283048A1 (en) * 2010-05-11 2011-11-17 Seagate Technology Llc Structured mapping system for a memory device
US8341340B2 (en) * 2010-07-21 2012-12-25 Seagate Technology Llc Multi-tier address mapping in flash memory
US20120023144A1 (en) 2010-07-21 2012-01-26 Seagate Technology Llc Managing Wear in Flash Memory
CN101930404B (zh) * 2010-08-27 2012-11-21 威盛电子股份有限公司 存储装置及其操作方法
US8417914B2 (en) * 2011-01-06 2013-04-09 Micron Technology, Inc. Memory address translation
WO2012161659A1 (en) * 2011-05-24 2012-11-29 Agency For Science, Technology And Research A memory storage device, and a related zone-based block management and mapping method
US8694754B2 (en) * 2011-09-09 2014-04-08 Ocz Technology Group, Inc. Non-volatile memory-based mass storage devices and methods for writing data thereto
KR101289931B1 (ko) * 2011-09-23 2013-07-25 한양대학교 산학협력단 다양한 블록 크기를 지원하는 주소 사상을 사용하여 플래시 메모리 내에 데이터를 저장하는 방법 및 장치
US20130103889A1 (en) * 2011-10-25 2013-04-25 Ocz Technology Group Inc. Page-buffer management of non-volatile memory-based mass storage devices
US9069657B2 (en) * 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US9213633B2 (en) * 2013-04-30 2015-12-15 Seagate Technology Llc Flash translation layer with lower write amplification

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09282111A (ja) * 1996-04-15 1997-10-31 Internatl Business Mach Corp <Ibm> 半導体メモリ装置及びその制御方法
JP2004199605A (ja) * 2002-12-20 2004-07-15 Matsushita Electric Ind Co Ltd 半導体メモリカードおよび管理情報更新方法
US7278008B1 (en) * 2004-01-30 2007-10-02 Nvidia Corporation Virtual address translation system with caching of variable-range translation clusters
JP2010521718A (ja) * 2007-12-28 2010-06-24 株式会社東芝 半導体記憶装置及びその制御方法、コントローラ、情報処理装置
JP2012141944A (ja) * 2010-12-16 2012-07-26 Toshiba Corp メモリシステム
JP2012174086A (ja) * 2011-02-23 2012-09-10 Hitachi Ltd 記憶装置およびそれを搭載した計算機

Also Published As

Publication number Publication date
CN104641356B (zh) 2018-07-13
CN104641356A (zh) 2015-05-20
EP2895958A4 (en) 2016-04-06
KR101852668B1 (ko) 2018-06-04
WO2014043459A1 (en) 2014-03-20
US10282286B2 (en) 2019-05-07
EP2895958B1 (en) 2019-12-25
US20140082323A1 (en) 2014-03-20
EP2895958A1 (en) 2015-07-22
JP6109316B2 (ja) 2017-04-05
KR20150054964A (ko) 2015-05-20

Similar Documents

Publication Publication Date Title
JP6109316B2 (ja) アドレスマッピング
US10649657B2 (en) Log-based storage for different data types in non-volatile memory
US11593259B2 (en) Directed sanitization of memory
US10761777B2 (en) Tiered storage using storage class memory
US9880766B2 (en) Storage medium storing control program, method of controlling information processing device, information processing system, and information processing device
US10739996B1 (en) Enhanced garbage collection
CN111033477B (zh) 逻辑到物理映射
JP5458419B2 (ja) メモリブロックの選択
JP2019020788A (ja) メモリシステムおよび制御方法
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
TW201626382A (zh) 用於快取壓縮資料之設備、系統及方法
JP2014505297A (ja) メモリアドレス変換
JP2018101411A (ja) データストレージデバイスおよびその操作方法
US10592427B2 (en) Logical to physical table fragments
CN111512290A (zh) 文件页表管理技术
TWI718710B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
CN112130749A (zh) 数据储存装置以及非挥发式存储器控制方法
KR20220119348A (ko) 분할된 저장장치에서의 스냅샷 관리
WO2014149859A1 (en) Data tag sharing from host to storage systems
TWI713032B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
Ko et al. Study on garbage collection schemes for flash-based linux swap system
US20230236737A1 (en) Storage Controller Managing Different Types Of Blocks, Operating Method Thereof, And Operating Method Of Storage Device Including The Same
TWI724550B (zh) 資料儲存裝置以及非揮發式記憶體控制方法
Vishwakarma et al. Enhancing eMMC using multi-stream technique

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160523

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160905

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161129

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161228

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170113

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20170207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170307

R150 Certificate of patent or registration of utility model

Ref document number: 6109316

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250