(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5736439
(24)【登録日】2015年4月24日
(45)【発行日】2015年6月17日
(54)【発明の名称】ソリッドステート記憶装置におけるトランスレーションレイヤ
(51)【国際特許分類】
G06F 3/06 20060101AFI20150528BHJP
G06F 12/02 20060101ALI20150528BHJP
G06F 12/00 20060101ALI20150528BHJP
G06F 3/08 20060101ALI20150528BHJP
【FI】
G06F3/06 301K
G06F12/02 570A
G06F12/00 597U
G06F3/08 H
【請求項の数】16
【全頁数】17
(21)【出願番号】特願2013-239909(P2013-239909)
(22)【出願日】2013年11月20日
(62)【分割の表示】特願2011-531060(P2011-531060)の分割
【原出願日】2009年9月25日
(65)【公開番号】特開2014-63511(P2014-63511A)
(43)【公開日】2014年4月10日
【審査請求日】2013年11月20日
(31)【優先権主張番号】12/250,043
(32)【優先日】2008年10月13日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】595168543
【氏名又は名称】マイクロン テクノロジー, インク.
(74)【代理人】
【識別番号】100106851
【弁理士】
【氏名又は名称】野村 泰久
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】マニング,トロイ
【審査官】
宮久保 博幸
(56)【参考文献】
【文献】
特表2010−521014(JP,A)
【文献】
特表2011−508349(JP,A)
【文献】
特開平09−282111(JP,A)
【文献】
特開平07−302176(JP,A)
【文献】
米国特許出願公開第2008/0209116(US,A1)
【文献】
特開平08−212019(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/06
G06F 3/08
G06F 12/00
G06F 12/02
(57)【特許請求の範囲】
【請求項1】
ソリッドステートデバイスにおいてセクタ識別子と記憶個所との間での変換を行う方法であって、
前記ソリッドステートデバイス内のメモリデバイスを検出し、検出されたメモリデバイスの各々に対する記憶個所についての情報を決定することと、
前記検出されたメモリデバイス及び該検出されたメモリデバイスの各々に対する前記記憶個所についての情報を列挙するメモリデバイステーブルであって、該メモリデバイステーブルに列挙される各メモリデバイスに付与される唯一の連続したメモリデバイス識別子を含む前記メモリデバイステーブルを生成することと、
前記セクタ識別子に対応する論理ブロックアドレスとして前記セクタ識別子が使用され、前記セクタ識別子および前記メモリデバイスの記憶個所に対応する前記メモリデバイステーブルの前記メモリデバイス識別子に基づいて、前記検出されたメモリデバイスのうちの標的メモリデバイスの位置を特定することと、
前記標的メモリデバイスにおける論理ブロックアドレスのグループを含むデータブロック参照テーブルであって、各論理ブロックアドレスが、異なるデータブロック参照テーブルのエントリに関連付けられ、各エントリは、関連付けられた論理ブロックアドレスによって示される1つのメモリブロックの最高位にプログラムされるページの表示、及び、前記メモリブロックが順序付けられているときに該メモリブロックが順序付けられていることを示し、前記メモリブロックが順序付けられていないときに該メモリブロックが順序付けられていないことを示すよう設定されるステータス標識を含む、前記データブロック参照テーブルを生成することと、
前記セクタ識別子に対応する前記論理ブロックアドレスを含む前記データブロック参照テーブル内の標的データブロックの位置を特定することと、
を含む、方法。
【請求項2】
ホストコンピュータシステムから前記セクタ識別子を受信することをさらに含む、請求項1に記載の方法。
【請求項3】
検出された各メモリデバイスの前記記憶個所についての情報は、通信路情報、チップイネーブル情報、論理ユニット情報、および平面情報を含む、請求項1に記載の方法。
【請求項4】
複数のメモリデバイスは同一のチップイネーブル情報を有する、
請求項3に記載の方法。
【請求項5】
前記セクタ識別子に対応する前記論理ブロックアドレスは、1ページ当たりの論理ブロックアドレスの量及び前記ソリッドステートデバイスのページサイズに応じて複数回シフトされる、
請求項1に記載の方法。
【請求項6】
複数の異なるメモリデバイスは、同一の通信路情報を有する、
請求項3に記載の方法。
【請求項7】
前記検出されたメモリデバイス及び検出された各メモリデバイスに対する前記記憶個所についての情報を列挙するメモリデバイステーブルを生成することは、前記メモリデバイステーブルに、唯一の連続するメモリデバイス識別子及び検出された各メモリデバイスに対する前記記憶個所についての情報を書き入れることを含む、
請求項3に記載の方法。
【請求項8】
前記論理ブロックアドレスのモジュロ関数に対応して前記標的メモリデバイスのどのメモリブロックが前記論理ブロックアドレスを含むかを示す前記データブロック参照テーブルが生成される、
請求項1に記載の方法。
【請求項9】
前記モジュロ関数が、(Q,R)=MOD(LBA>>(j=3),N)を含み、Qは商であり、Rは剰余であり、Nは前記メモリデバイステーブル内のメモリデバイスの数であり、jは、1ページあたりのセクタ数2jのjである、請求項8に記載の方法。
【請求項10】
前記メモリデバイステーブルが、前記R番目の検出された前記メモリデバイスに対する前記記憶個所について情報を決定するために、前記Rによって指示される、請求項9に記載の方法。
【請求項11】
前記データブロック参照テーブルが、(R*BlocksPerPU)+(Q>>k)によって生成され、BlocksPerPUは、各メモリデバイス内のメモリブロックの数であり、kは1つのメモリブロックあたりのメモリのページ数を示す、請求項9に記載の方法。
【請求項12】
ソリッドステートメモリデバイスであって、
少なくとも1つのメモリ配列と、
少なくとも1つの通信路を使用して前記少なくとも1つのメモリ配列と結合するコントローラであって、
前記ソリッドステートメモリデバイスの初期化で検出された前記少なくとも1つのメモリ配列および各メモリ配列の記憶個所が、連続した唯一の識別子を付与されて列挙されたメモリ配列参照テーブルの生成と、
ディスクドライブセクタ識別子および前記メモリ配列個所に対応する前記唯一の識別子に基づく前記少なくとも1つのメモリ配列のうちの標的メモリ配列の決定と、前記標的メモリ配列および前記標的メモリ配列に含まれるデータブロックの数である記憶密度を決定することに対応する前記標的メモリ配列内の標的データブロックおよび前記記憶個所の決定とに対応して、前記ディスクドライブセクタ識別子と前記記憶個所との間での変換とを行うように構成され、
さらに、前記標的メモリ配列のメモリブロックを含むデータブロック参照テーブルであって、該データブロック参照テーブルは、特定の論理ブロックアドレス、特定のメモリブロックの最高位にプログラムされるページの表示、およびステータス標識を含み、該ステータス標識は、前記メモリブロックが順序付けられているときに該メモリブロックが順序付けられていることを示し、前記メモリブロックが順序付けられていないときに該メモリブロックが順序付けられていないことを示すよう設定される、前記データブロック参照テーブルを生成するように構成される、コントローラと、
を含む、ソリッドステートメモリデバイス。
【請求項13】
前記コントローラが、各メモリ配列に対する通信路情報、各メモリ配列に対するチップイネーブル情報、各メモリ配列に対する論理ユニット情報、および各メモリ配列に対する平面情報を列挙する前記メモリ配列参照テーブルを生成するようにさらに構成される、請求項12に記載のソリッドステートメモリデバイス。
【請求項14】
前記ディスクドライブセクタ識別子が、前記ディスクドライブセクタ識別子に対応する論理ブロックアドレスとして使用される、請求項13に記載のソリッドステートメモリデバイス。
【請求項15】
前記コントローラが、モジュロ関数の実行に応答し、前記データブロック参照テーブルを生成するようにさらに構成される、請求項12に記載のソリッドステートメモリデバイス。
【請求項16】
前記ディスクドライブセクタ識別子に対応する前記論理ブロックアドレスは、前記標的メモリ配列の位置を生成するために、1ページ当たりの論理ブロックアドレスの量及び前記ソリッドステートメモリデバイスのページサイズに応じて複数回シフトされる、
請求項14に記載のソリッドステートメモリデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、記憶素子に関し、かつ特定の実施形態において、本発明は不揮発性記憶素子に関する。
【背景技術】
【0002】
記憶素子としては、コンピュータまたは他の電子機器内の内部回路、半導体回路、集積回路を挙げることができる。メモリには、随時アクセスメモリ(RAM)、読み出し専用メモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックRAM(SRAM)、同期型DRAM(SDRAM)、および不揮発性メモリ(例えばフラッシュメモリ)を含む、多数の異なる種類がある。
【0003】
フラッシュメモリ素子は、電子回路の応用における不揮発性メモリとして広く使用されるようになってきた。フラッシュメモリ素子は、典型的に、高いメモリ密度および信頼性と、少ない電力消費を可能にする1トランジスタ型メモリセルを使用する。フラッシュメモリの一般的な用途しては、パーソナルコンピュータ、携帯情報端末(PDA)、デジタルカメラ、および携帯電話が挙げられる。基本入出力システム(BIOS)などのプログラムコードおよびシステムデータは、典型的に、パーソナルコンピュータシステムにおける使用のためフラッシュメモリ素子に収容される。
【0004】
フラッシュメモリ素子は、ソリッドステートドライブのようなソリッドステート記憶デバイスにも組み込まれることができる。ソリッドステートドライブは、各パッケージが多くのメモリダイから成る多数のフラッシュパッケージから成っている。ソリッドステートドライブは、大容量のデータを収容するため典型的に磁気ディスクまたは光ディスクを使用してきたハードディスクドライブに代わり、コンピュータ内で使用される。ソリッドステートドライブは、可動部分を使用しないのに対して、ハードディスクドライブは、磁気ディスク/光ディスクと相互に作用するため、複雑で繊細なドライブおよび書き込み/読み取りヘッドアセンブリを必要とする。従って、ソリッドステートドライブは、より振動および衝撃による損傷およびデータの損失に強い。
【0005】
現在のソリッドステートドライブ技術の1つの欠点は、各ドライブに多数のメモリダイを使用することにより、ドライブの製造過程で欠陥のあるメモリダイを有する可能性が大幅に増加することである。従って、そのドライブは廃棄されるか、または高コストとなる選択肢として、ソリッドステートドライブコントローラが、システムがメモリダイにアクセスしている間、欠陥のあるメモリダイをマッピングし、補償しなければならない。
【0006】
フラッシュトランスレーションレイヤ(FTL)は、オペレーティングシステムと連動して動作し、オペレーティングシステムにフラッシュメモリをディスクドライブとして見せかける。これは、FTLがフラッシュイレースブロックから、セクタとしても知られている仮想の小規模なデータブロックを作成することで行われる。FTLはまた、ソリッドステートドライブ上のデータを管理し、マッピングするため、実際はシステムがウェアレベリング手法でフラッシュメモリの異なる個所に収容されていても、特定の個所で書き込まれたシステムに見せかける。
【0007】
FTLは、これらの動作をディスクドライブの1つのセクタへのホスト要求から、ソリッドステートドライブのフラッシュメモリダイにある実際のデータの個所へマッピングするため、メモリ内に大規模テーブルを生成し、維持することにより実行する。これらのテーブルは非常に大規模になり得るため、システムRAMはこれらを保持することができず、フラッシュメモリはテーブルの一部を保持するためオーバーフローメモリとして使用されなければならない。大規模テーブルは他のタスクに使用され得るRAMを消費するだけでなく、FTLがテーブルデータを読み出すためフラッシュメモリにアクセスしなければならない場合、フラッシュメモリは読み取りおよび書き込みにおいてRAMより遅いため、システム性能は大きく低下する。
【0008】
上述の理由および本明細書を読解したとき当業者に明らかになる下記に述べる本発明の他の理由により、より効果的なフラッシュトランスレーションレイヤが当技術分野において求められている。
【図面の簡単な説明】
【0009】
【
図1】フラッシュトランスレーションレイヤを組み込んだソリッドステートドライブである。
【
図2】
図1のソリッドステートドライブに準じたフラッシュメモリ配列およびメモリ通信路を組み込む不揮発性メモリデバイスの一実施形態におけるブロック図である。
【
図3】
図1および
図2の不揮発性メモリデバイスに準じた不揮発性メモリ配列の一部の一実施形態の概略図である。
【
図4】フラッシュトランスレーションレイヤ法の一実施形態のフローチャートである。
【
図5】
図4のフラッシュトランスレーションレイヤ法に準じた平行ユニット参照テーブルの一実施形態である。
【
図6】
図4のフラッシュトランスレーションレイヤ法に準じた平行ユニット参照テーブルの他の実施形態である。
【
図7】
図4の方法に準じたデータブロック参照テーブル概念の略図である。
【発明を実施するための形態】
【0010】
以下の発明を実施するための形態では、本明細書の一部を構成し、本発明を実施することができる特定の実施形態が例として示される、添付の図面を参照する。図面では、幾つかの図にわたって同じ数字が、実質上類似の構成材を表す。これらの実施形態は当業者が本発明を実施することができるよう、十分詳細に説明される。他の実施形態は利用することが可能で、構造上、論理上、および電気的な改変は、本発明の範囲から逸脱することなく行われ得る。以下の詳細な説明は、それゆえ、限定的な意味にとらわれることなく、本発明が特許請求の範囲及びその均等物によってのみ規定されることが意図されている。
【0011】
図1は、フラッシュトランスレーションレイヤ(FTL)120を組み込むソリッドステートドライブの一実施形態のブロック図である。
図1のドライブはコントローラ130から成り、コントローラ130は101〜108の8つの通信路を有し、FTL120を実行する。各通信路101〜108は、4つに並んだメモリパッケージに接続される。これらの装置はNANDメモリパッケージとして示される。代替の実施形態は、他種のソリッドステートメモリを使用することができる。
【0012】
NANDパッケージ内の単一のダイは、論理ユニット(LUN)と呼ばれ、平行処理によってアクセスすることが可能である。LUNは多数の平面を含み、各平面は平行ユニット(PU)である。各PUは、固有の数字または幾つかの他の一意の識別子を割当てられる。
【0013】
各論理ユニットは、同じチップセレクト(CE)信号を共有する可能性があるため、各論理ユニットは、パッケージ内の多数のダイを識別するためアドレスビットによってアクセスされる。多数のダイは異なるコマンドを同時に平行して行うことができる。言い換えれば、1つのダイはもう一方が読取動作を行っている間、書き込み動作を行うことができる。FTLは、平面のみをPUと呼ぶことを意図している。FTL法もまた、平行ユニットにおける異なる平面について言及している。各平面は、異なるメモリダイから成り得る。
【0014】
図2は、集積回路ダイ上に組み込まれることできる不揮発性メモリデバイス200の構成ブロック図を示す。一実施形態において、不揮発性メモリ200は、フラッシュメモリである。
【0015】
不揮発性メモリデバイス200は、
図3において示され、その後考察されているフローティングゲートメモリセルのような不揮発性メモリセルの配置230を含む。メモリ配列230は、アクセス線(例えばワード線)行およびデータ線(例えばビット線)列に層を成して配列される。一実施形態において、メモリ配列230のカラムは一連のメモリセルの列から成る。当技術分野で周知の通り、セルのビット線への接続は、配列がNANDアーキテクチャか、ANDアーキテクチャか、またはNORアーキテクチャのいずれかであるかを決定する。
【0016】
メモリ配列230は、メモリブロックとして構成されることができる。メモリブロックの数量は、典型的にメモリデバイスの大きさ(すなわち512MB、1GB)によって決定される。一実施形態において、各メモリブロックは64ページで構成されている。
【0017】
アドレスバッファ回路240は、I/O電気回路260を介して送られたアドレス信号をラッチするために設けられる。アドレス信号は、メモリ配列230にアクセスするため、行デコーダ244および列デコーダ246に受信され、解読される。アドレス入力接続数はメモリ配列230の密度およびアーキテクチャに依るということが本発明の利点であるということは当業者に理解されよう。すなわち、アドレス数は、メモリセル数増加およびバンク、ブロック数増加の両方により増加する。データもまた制御信号272のタイミングに基づき、I/O電気回路260を介して入力および出力される。
【0018】
不揮発性メモリデバイス200は、センスアンプ回路250を用いてメモリ配列のカラムでおこる電圧または電流の変化を感知することによりメモリ配列230内のデータを読み込む。一実施形態において、センスアンプ回路250は、メモリ配列230からデータ行を読み込みラッチするため結合される。データ入出力バッファ回路260は、複数のデータ接続262を使用して外部コントローラと通信するアドレス通信と同様に、双方向のデータ通信を含む。書き込み回路255は、メモリ配列へデータを書き込むために設けられている。
【0019】
メモリ制御回路270は、外部コントローラから制御バス272上に与えられた信号をデコードする。これらの信号は、メモリデバイス200の他の電気回路と同様にメモリ配列230上で動作を制御するために使用される他の制御信号と同様に、リード/ライト(R/反転W)情報、チップイネーブル(CE)情報、コマンドラッチイネーブル(CLE)情報、アドレスラッチイネーブル(ALE)情報を含む。一実施形態において、これらはアクティブロー信号であるが、代替の実施形態ではアクティブハイ信号を使用することができる。メモリ制御回路270は、状態機械、シーケンス制御装置、またはメモリ制御信号を生成する幾つかの他の種類のコントローラであってよい。
【0020】
不揮発性メモリデバイス200は、
図1で示されるように、通信路290を使用して外部コントローラと通信する。一実施形態において、通信路290は、メモリアドレス、データ、およびソリッドステートドライブコントローラとメモリデバイス200の間の制御信号から成る。
図2の実施形態は、I/O電気回路260への1つのバスとして結合されたアドレスとデータを示す。代替の実施形態において、アドレスバスおよびデータバスは、メモリデバイス200と別々の入出力である。
【0021】
図3は、不揮発性メモリセルの一連の列を含むNANDアーキテクチャメモリ配列の一部の概略図を示す。後記の説明はNANDメモリデバイスに関して言及するが、本発明の実施形態はアーキテクチャなどに限定されない。
【0022】
メモリ配列は、一連の列304、305のようなカラムに配列される不揮発性メモリセル301の配列(例えば、フローティングゲート)から成る。各セル301は、各一連の列304、305においてドレインからソースに結合されている。多数の一連の列304、305に跨がるワード線WL0-WL31は、行におけるメモリセルの制御ゲートにバイアスをかけるため、行における各メモリセルの制御ゲートに接続される。ビット線BL1、BL2は、最終的に特定のビット線の電流を感知することにより各セルの状態を検波するセンスアンプ(図示せず)に接続される。
【0023】
各一連のメモリセルの列304、305は、ソースセレクトゲート316、317によってソース線306と結合され、ドレインセレクトゲート312、313によって個別のビット線BL1、BL2と結合される。ソースセレクトゲート316、317は、それらの制御ゲートと結合したソースセレクトゲート制御線SG(S)318によって制御される。ドレインセレクトゲート312、313は、ドレインセレクトゲート制御線SG(D)314によって制御される。
【0024】
各メモリセルはシングルレベルセル(SLC)またはマルチレベルセル(MLC)としてプログラミングされることが可能である。各セルのしきい電圧(Vt)は、セルに収容されるデータを示す。例えば、SLCにおいて、0.5VのVtは、プログラムされたセルを指す可能性があると同時に−0.5VのVtは、消去されたセルを指す可能性がある。MLCは、それぞれが異なる状態を示す多数のVtウィンドウを有し得る。マルチレベルセルは、セル上に収容された特定の電圧範囲にビットパターンを割り当てることで、既存のフラッシュセルのアナログ性能を活かすことができる。この技術は、セルに割り当てられた電圧範囲の量次第で、1つのセルにつき2ビット以上の保存を可能にする。
【0025】
図4は、
図1のソリッドステートドライブのようなソリッドステートメモリデバイスにおけるFTL法の一実施形態のフローチャートを示す。FTL法は、
図1のソリッドステートドライブに関して説明されているが、トランスレーションレイヤを必要とする他のメモリデバイスもまたこのような方法を使用することが可能である。
【0026】
ソリッドステートドライブに初めに電源が投入された際、ソリッドステートドライブ内の全てのメモリデバイスの存在および位置の属性(例えば、チャネル、チップイネーブル、論理ユニット、平面)を判別する調査が行われる401。デバイスは、全ての通信路およびチップイネーブルにわたって列挙される。平行ユニット参照テーブル(PULT)は、通信路情報、CE情報、論理ユニット(LUN)情報および平行ユニットの平面情報により連続して生成される403。この初期化は、最高優先の通信路および最低優先の平行ユニット平面にわたる帯域幅を利用する固有の平行アクセススキームをセットアップする。他の実施形態において、特定のアーキテクチャ要求により、PUは最高優先として平面情報、CE情報またはLUN情報と共に順序付けられる可能性がある。
【0027】
一実施形態において、PULTはメモリデバイスのブロック0に収容される。ブロック0は、エラーが何もないとして検査された典型的なメモリブロックである。代替の実施形態は、RAM内のPULTまたは幾つかの他の記憶個所を収容することができる。
【0028】
そのようなテーブルの例を
図5に示す。この図は、デバイスの初期調査後に、テーブル内に列挙された8つのチャネル情報、2つのチップイネーブル情報、1つのLUN情報、および2つの平面情報を示す。
【0029】
図6は、初期化ルーチンの間、或るNANDデバイスが発見されない場合に、FTLによって生成されるテーブルに関する代替の実施形態を示す。この図は、通信路3/CE1が欠落しており、結果として2つの平面601、602が損失していることを示す。PULTは、30個のPUが発見される以外は、
図5の実施形態と同様に構成される。
【0030】
PULTが構成された後、FTLはホストシステムから、セクタ要求を受信する準備をする。ソリッドステートドライブが、セクタから成るハードドライブをエミュレートするので、本実施形態のFTLは、ホストコンピュータシステムからセクタ識別子(例えばセクタ番号)を受信し、メモリ内の適した個所にアクセスすることが可能になる。ホストからのセクタ番号は、読み込みコマンドまたは書き込みコマンドのどちらかの形式になり得る。FTLまたは幾つかの他のソリッドステートドライブアルゴリズムは、消去およびウェアレべリングの動作がホストに透過的になるように、これらの動作に関与する。
【0031】
ホストからのセクタ要求はコマンド(例えば、読み込み、書き取り)を伴うセクタ番号から成る。FTLは、ソリッドステートドライブのアクセスにおいて論理ブロックアドレス(LBA)として、セクタ番号を使用する。一実施形態において、各NANDページは、8つのLBAデータを直線的に収容する。FTLが、ハードドライブセクタではなくLBAで対処するので、後記の説明でセクタ要求の代わりにホストからのLBA要求に言及する。
【0032】
再度、
図4のフローチャートを参照すると、LBA要求がホストから受信された場合、FTLは、まずソリッドステートデバイス内のLBAのPUの個所を判別する405。図で示した実施形態において、これはモジュロ算術関数を用いて達成される。
【0033】
モジュロ関数は、(Q,R)=MOD(LBA>>(j=3),N)と表現され、Qは、後の計算に使用される商であり、Rはモジュロ演算からの剰余であり、NはPULTの初期化の間に発見されたPUの数量である。例えば、
図5の実施形態では32個のPUが発見され、一方、
図6の実施形態では30個のPUが発見された。
モジュロ関数は、ホストから受信したLBAが、1ページにつき8つのLBAとの計算になるように3つの位置だけ右シフトされることを示す。当技術分野で周知のように、右方に数を3度シフトすると、8で除算することと等価になる。右シフトの回数は、ソリッドステートデバイス内のより大容量のセクタサイズ(すなわちより大規模のNANDページ)に対応して変更される。これは、1ページにつき2
jLBAであるとき、jだけ右シフトとして表現される。
【0034】
PUの数であるNは、後に2進数で表現されている。ただし、Nは2進数のみに限定されない。
受信したLBAからPUを発見する際の、上記モジュロ関数の演算についての2例が、後に説明される。これらの例は
図6の実施形態に示されているように、2つのPUが欠落しているPULTに基づいている。言い換えると、下記の例はN=30と仮定する。
【0035】
第1の例では、受信LBA=3であり、以下のように2進法で表される。
00000000 00000000 00000000 00000011
LBAが、右シフトを3度行った場合、右から3ビットは、切り捨てとなり、その結果、0となる。モジュロ関数は、(0,0)=MOD(0,30)として表される。剰余R=0をPU指数として使用し、この数は通信路情報、チップイネーブル(CE)情報、論理ユニット(LUN)情報、およびPU平面番号情報の観点でのLBAの個所を決定するため、PULTで使用される。
図6を参照すると、PULT(0)=チャネル0、CE0、LUN0、および平面0は3のLBAの個所であると分かる。
【0036】
第2の例において、受信したLBA=30,500,129である。このLBAは、二進法で以下のように表される。
00000001 11010001 01100101 00100001
【0037】
LBAは、右シフトを3度行った場合、最右の「001」は切り捨てとなり、その結果、以下のように二進法で表される。
00000000 00111010 00101100 10100100
言い換えると、LBA>>3=3,812,516となる。よって、モジュロ関数は、(127083,26)=MOD(3812516,30)と表される。剰余が26であるので、これはPULTの指数として使用される。従って、再度
図6を参照すると、PULT(26)=チャネル4、CE1、LUN0、および平面1は、LBA=30,500,129の個所であると分かる。8以上のLBAインクリメントは、アルゴリズム的に次のPUへプッシュされる。
【0038】
一度PUが発見されると、データブロック参照テーブル(DBLT)が生成される407。DBLTは、どのLBA群が特定のPU上のいずれのメモリブロックに収容されているかを示す直接アクセステーブルである。DBLTでの各エントリは、受信したLBAのブロック番号を示す。DBLTでのエントリ数は、PULTを組み立てる間に発見されたPU数に1つのPUあたりのブロック数を掛けたものと等しい。例えば、ソリッドステートドライブが256PUから成る場合(8チャネル、8CE、2LUNおよび2平面)、また1平面あたり2048ブロックである場合、DBLTは524,288エントリから成る。
【0039】
一実施形態において、DBLTでの各エントリは4バイトから成るため、テーブルは2,097,152バイトである。各エントリの2バイトは特定のPUにおけるブロック番号である。他のもう一つのバイトは、当該ブロックの最高位のプログラムされたページを指示し、埋設されたページテーブルへの高速アクセスを可能にする。最後のバイトは、ステータスバイトであり、指示されたブロックの状態を指示するために使用されることができる。例えば、ステータスバイトは、当該ブロックの消去状況、当該ブロックが順序付けられているか、フォールドが必要か、またはフォールドされているか、を指示することができる。本発明の実施形態は、DBLTエントリの形式に限定されない。
【0040】
DBLTは、上記で説明されたようにPULT演算から(Q,R)を用いて生成される。kが、2
k=ページ/メモリブロックとして定義される場合、DBLT[index]=(R*PUあたりのブロック数)+(Q>>k)となる。変数kは、メモリブロックの記憶密度に対応して決定される。MLCメモリデバイスにおける512バイトLBAに対して、128ページ/ブロックの場合はk=7である。SLCメモリデバイスにおける512バイトLBAに対して、64ページ/ブロックの場合はk=6である。DBLT[index]の結果は、LBAを含む標的メモリブロックを指す。
【0041】
DBLT[index]方式の計算の例において、上記で説明されたPULT例と同じ変数が用いられる。LBA=3の例で、結果はQ=0、R=0、PULT[0]=チャネル0、CE0、LUN0、平面0となる。これらの結果をDBLT方式に当てはめると、DBLT[index]=(Q>>k+R*2048)=0となる。DBLTのステータスバイトが、ブロックが順序付けられていることを示した場合、標的メモリブロック上でのLBAは、そのページにおいて、ページ(Q=0&&k bits)=0、位置(LBA && J)=3となる。ステータスバイトが、メモリブロックが順序付けられていないことを示した場合、該メモリブロック内の位置のための埋設ページテーブルが使用される。
【0042】
LBA=30,500,138の例において、前記の結果は、Q=127,083、R=26,PULT[26]=チャネル4、CE1、LUN0、および平面1であった。これらの結果をDBLT方式に当てはめると、DBLT[index]=(127,083>>6+26*2048)=55,233となる。DBLTのステータスバイトが、メモリブロックが順序付けられていることを示した場合、標的メモリブロック上でのLBAは、ページ(11111000001101011 && 00111111)=43およびそのページにおける位置(1111100000100100001 && 0000011)=1となる。
【0043】
図7は、上記で説明したDBLT方式の結果の主要部分を示す略図である。図の左側は各PU番号701に割り当てられたメモリブロックを示す。この略図は、例えば、PU0がBLK0〜BLK2047を有し、0から2047の論理メモリの領域にあることを示す。
【0044】
図式702の中央は、物理ブロック0〜2047を含むPU0の拡張を示し、図式703には物理ブロックiが更に拡張されたことを示す。物理ブロックのiの拡張は、ブロック内の64ページ(SLCメモリデバイスと仮定)のそれぞれと、各エントリが論理ブロックであることを示す。各エントリの2バイトは物理ブロックを示し、1バイトは該ブロックの最高位にプログラムされたページであり、残りはステータスバイトである。
【0045】
結論
要約すれば、1つ以上のトランスレーションレイヤ法の実施形態は、ソリッドステート記憶装置に、ホストコンピュータシステムから受信したハードディスクセクタ番号をメモリページおよびそのページ内の位置へ変換する能力を与える。これによって、典型的に使用された従来の変換の技術であるメモリの集中した大規模の変換テーブルを大幅に減少させることが可能になる。トランスレーションレイヤは、通信路情報およびチップイネーブル情報の非二進数と同様に、柔軟なディスクドライブセクタサイズ、ページサイズ、1ブロックあたりのページ、1平面あたりのブロック、1論理ユニットあたりの平面をサポートする。
【0046】
本発明の特定の実施形態を図示説明したが、当業者であれば、同一目的を達成するための構成を図示の特定の実施形態に置き換え可能であることがわかるであろう。当業者には、本発明の多くの適合が明らかであろう。従って、本出願は、本発明のいずれの適合もしくは変形をも包含することを意図する。本発明は以下の特許請求の範囲およびその均等物によってのみ限定されることも明白に意図されている。