(57)【要約】【課題】本発明は、複数のメモリへのインターフェイスと回路とを有する装置に関する。【解決手段】複数のメモリへのインターフェイスと回路とを有する装置が開示される。各メモリは、概して、複数の面を有し、不揮発性である。回路は、（ｉ）複数のデータユニットを符号化することによって複数のコード語を生成し、（ｉｉ）コード語をパーシングすることによって複数のスライスを生成し、（ｉｉｉ）スライスをインターリーブすることによって複数のページを生成し、（ｉｖ）面のそれぞれにページを並行して書き込むように構成される。【選択図】図３
2015135676.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
各々が複数の面を有する複数のメモリへのインターフェイスを備え、前記メモリは不揮発性であり、装置はさらに、
回路を備え、前記回路は、（ｉ）複数のデータユニットを符号化することによって複数のコード語を生成し、（ｉｉ）前記コード語をパーシングすることによって複数のスライスを生成し、（ｉｉｉ）前記スライスをインターリーブすることによって複数のページを生成し、（ｉｖ）それぞれの前記面に前記ページを並行して書き込むように構成される、装置。
【請求項２】
前記メモリはフラッシュメモリである、請求項１に記載の装置。
【請求項３】
（ｉ）前記回路は、前記複数のコード語を各々が含む複数のバッチを生成するようにさらに構成され、（ｉｉ）前記バッチの各々のサイズは実質的に前記面のサイズに一致する、請求項１に記載の装置。
【請求項４】
前記ページのうちの１つ以上は、前記バッチのうちの２つ以上からの前記スライスを含む、請求項３に記載の装置。
【請求項５】
前記回路は、（ｉ）前記メモリから並行して前記面のそれぞれを読み取ることによって前記ページを再生成し、（ｉｉ）前記ページをパーシングすることによって前記スライスを再生成し、（ｉｉｉ）前記スライスから前記コード語を再生成し、（ｉｖ）前記コードを復号化することによって前記データユニットを再生成するようにさらに構成される、請求項１に記載の装置。
【請求項６】
（ｉ）前記回路は、前記複数のコード語を各々が含む複数のバッチを生成するようにさらに構成され、（ｉｉ）前記バッチのうちの１つ以上は、前記ページのうちの２つ以上からの前記スライスを含む、請求項５に記載の装置。
【請求項７】
前記コード語は、前記バッチをパーシングすることによって再生成される、請求項６に記載の装置。
【請求項８】
前記ページの各々は、異なる前記メモリにおける前記面のそれぞれに書き込まれる、請求項１に記載の装置。
【請求項９】
前記装置は１つ以上の集積回路として実施される、請求項１に記載の装置。
【請求項１０】
複数の面にわたってコード語をインターリーブする方法であって、
（Ａ）複数のデータユニットを符号化することによって複数の前記コード語を生成するステップと、
（Ｂ）前記コード語をパーシングすることによって複数のスライスを生成するステップと、
（Ｃ）前記スライスをインターリーブすることによって複数のページを生成するステップと、
（Ｄ）複数のメモリにおける前記複数の面の各々にページを並行して書き込むステップとを備え、前記メモリは不揮発性である、方法。
【請求項１１】
前記メモリはフラッシュメモリである、請求項１０に記載の方法
【請求項１２】
各々が複数の前記コード語を含む複数のバッチを生成するステップをさらに備え、前記バッチの各々のサイズは実質的に前記面のサイズに一致する、請求項１０に記載の方法。
【請求項１３】
前記ページのうちの１つ以上は、前記バッチのうちの２つ以上からの前記スライスを含む、請求項１２に記載の方法。
【請求項１４】
前記メモリから並行して前記面のそれぞれを読み取ることによって前記ページを生成するステップと、
前記ページをパーシングすることによって前記スライスを再生成するステップと、
前記スライスから前記コード語を生成するステップと、
前記コード語を復号化することによって前記データユニットを再生成するステップとをさらに備える、請求項１０に記載の方法。
【請求項１５】
複数の前記コード語を各々が含む複数のバッチを生成するステップをさらに備え、前記バッチのうちの１つ以上は前記ページのうちの２つ以上からの前記スライスを含む、請求項１４に記載の方法。
【請求項１６】
前記コード語は、前記バッチをパーシングすることによって再生成される、請求項１５に記載の方法。
【請求項１７】
前記ページの各々は、異なる前記メモリにおける前記面のそれぞれに書き込まれる、請求項１０に記載の方法。
【請求項１８】
装置であって、
複数のデータユニットを符号化することによって複数のコード語を生成するための手段と、
前記コード語をパーシングすることによって複数のスライスを生成するための手段と、
前記スライスをインターリーブすることによって複数のページを生成するための手段と、
複数のメモリにおける複数の面のそれぞれに前記ページを並行して書き込むステップとを備え、前記メモリは不揮発性である、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の詳細な説明
本件出願は、２０１４年１月１３日に出願された米国特許仮出願第６１／９２６，５１６号に関し、当該出願の全体が引用によりここに援用される。
【０００２】
発明の分野
本発明は、概してソリッドステートドライブに関し、より特定的には複数のフラッシュ面にわたってコード語をインターリーブするための方法および／または装置に関する。
【背景技術】
【０００３】
背景
フラッシュメモリの外形が小さくなるにつれ、各フラッシュメモリセルに保存される電子の量も小さくなる。電子の数が小さくなるとプロセス変動による影響をより受けやすくなり、様々なフラッシュ面およびダイにおける信頼度の差異がより顕著となる。従来の設計において、各コード語は同じダイに記憶される。このため、最も悪いフラッシュダイ／面の特定のコード語を誤り訂正符号化によって回復できない場合、訂正不能な符号訂正障害が起こる。
【発明の概要】
【課題を解決するための手段】
【０００４】
概要
本発明は、複数のメモリへのインターフェイスと回路とを有する装置に関する。各メモリは、概して複数の面を有し、不揮発性である。回路は、（ｉ）複数のデータユニットを符号化することによって複数のコード語を生成し、（ｉｉ）コード語をパーシングすることによって複数のスライスを生成し、（ｉｉｉ）スライスをインターリーブすることによって複数のページを生成し、（ｉｖ）それぞれの面にページを並行して書き込むように構成される。
【０００５】
本発明の実施形態は、以下の詳細な説明、添付の請求項、および図面から明らかとなる。
【図面の簡単な説明】
【０００６】
【図１】装置を示すブロック図である。
【図２】冗長ブロックを示すブロック図である。
【図３】本発明の実施形態に従う書き込みの方法を示すフロー図である。
【図４】スライスに分割されたコード語を示す図である。
【図５】メモリ面へのスライスのマッピングを示す図である。
【図６】読み取りの方法を示すフロー図である。
【図７】メモリ面から複数のスライスへのデータのマッピングを示す図である。
【発明を実施するための形態】
【０００７】
実施形態の詳細な説明
本発明の実施形態は、複数のフラッシュ面にわたってコード語をインターリーブすることを含み、これは、（ｉ）複数のフラッシュデバイスにわたってコード語を分配し得る、（ｉｉ）既存の技術と比較して信頼度を向上させ得る、（ｉｉｉ）複数のフラッシュデバイスにわたる誤り率を平均化し得る、（ｉｖ）プロセス変動によって誘発されるコード語内の誤りを減少させ得る、および／または（ｖ）１つ以上の集積回路として実施され得る。
【０００８】
様々な実施形態において、コード語はスライスされるとともに、複数のフラッシュデバイス（もしくはダイ）にわたって分配される、および／またはフラッシュデバイス内の複数の面にわたって分配される。したがって、単一のコード語内の誤り数は、複数のダイとコード語のサイズとを掛け合わせたものの平均誤り率である。このため、最も悪い場合におけるコード語の純粋な誤り数が減少する。スライスおよび分配により、一般的な技術と比較して信頼度が向上する。信頼性の低いフラッシュ面によって引き起こされる初期障害は、遅延する、または可能性として除去される。このようなことから、フラッシュデバイスのプログラム／消去サイクル寿命および最大保持時間が長くなる。また、スライスおよび分配によって、より予測可能な性能が得られる。コード語内の誤りが平均化されることから、各論理コード語内の誤りの変動が小さくなる。したがって、復号化の性能の変動が小さくなり、性能がより予測可能となる。
【０００９】
図１を参照すると、装置９０の例示的な実施のブロック図が示される。装置（回路、デバイス、または集積回路）９０は、不揮発性メモリ回路を有するコンピュータによって実施される。装置９０は、概して、ブロック（または回路）９２と、ブロック（または回路）９４と、ブロック（または回路）１００とを含む。回路９４および１００は、ドライブ（またはデバイス）１０２を形成する。回路９２から１０２は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、もしくは他の実施の態様で実施され得るモジュールおよび／またはブロックを示し得る。
【００１０】
１つ以上の信号（たとえば、ＨＯＳＴＩＯ）は、回路９２のインターフェイスと回路１００のインターフェイスとの間で交換される。ホスト入出力信号ＨＯＳＴＩＯは、概して、回路１０２内のデータにアクセスするために使用される論理アドレス構成部分と、回路１０２を制御するホスト命令構成部分と、書き込みデータユニットを回路９２から回路１００に転送する書き込みデータ構成部分と、誤りが訂正された読み取りデータユニットを回路１００から回路９２へ転送する読み取りデータ構成部分とを含むが、これらに限定されない。１つ以上の信号（たとえば、ＮＶＭＩＯ）は、回路１００のインターフェイスと回路９４の他のインターフェイスとの間で交換される。不揮発性メモリ入出力信号ＮＶＭＩＯは、概して、回路９４内のデータにアクセスするために使用される物理アドレス構成部分と、回路９４を制御する（たとえば、命令の読み取りまたは書き込み）メモリ命令構成部分と、回路１００から回路９４へ書き込まれる、誤り訂正符号化および巡回冗長検査保護書き込みコード語を担持する書き込みコード語構成部分と、回路９４から回路１００へ読み取られる、誤り訂正符号化コード語を担持する読み取りコード語構成部分とを含むが、これらに限定されない。
【００１１】
回路９２は、ホスト回路によって実施されるものとして示される。回路９２は、概して、回路１００を介して回路９４からのデータの読み取りおよび回路９４へのデータの書き込みを行うように動作する。読み取りまたは書き込みを行う場合、回路９２は、どのデータの集合が回路９４に書き込まれるか、または回路９４から読み取られるかを識別するために、信号ＨＯＳＴＩＯにおける論理アドレス値を転送する。アドレスは、概して、回路１０２の論理アドレス範囲に及ぶ。論理アドレスは、ＳＡＴＡ（たとえば、シリアルＡＴＡ）セクターなどの個別のデータユニットをアドレス指定することができる。
【００１２】
回路９４は、１つ以上の不揮発性メモリ回路（またはデバイス）によって実施されるものとして示される。様々な実施形態によれば、回路９４は、１つ以上の不揮発性半導体デバイスを含む。回路９４は、概して、不揮発性の状態でデータを記憶するように動作する。データが回路９４から読み取られると、回路９４は、信号ＮＶＭＩＯにおいてアドレス（たとえば、物理アドレス）によって識別されたデータの集合（たとえば、複数ビット）にアクセスする。アドレスは、概して、回路９４の物理アドレス範囲に及ぶ。
【００１３】
一部の実施形態において、回路９４は、１つ以上のフラッシュメモリとして実施される。回路９４は、シングルレベルセル（たとえば、ＳＬＣ）型回路として実施され得る。シングルレベルセル型回路は、概して、メモリセルごとに単一のビットを記憶する（たとえば、論理０または１）。他の実施形態において、回路９４は、マルチレベルセル型回路として実施され得る。マルチレベルセル型回路は、メモリセルごとに複数の（たとえば、２つの）ビット（たとえば、論理００、０１、１０、または１１）を記憶することができる。さらに他の実施形態において、回路９４は、トリプルレベルセル型回路を実施し得る。トリプルレベルセル回路は、メモリセルごとに複数の（たとえば、３つの）ビット（たとえば、論理０００、００１、０１０、０１１、１００、１０１、１１０、または１１１）を記憶する。４レベルセル型回路も実施され得る。
【００１４】
回路９４内のデータは、概してユニットの階層で構成される。ブロックは消去の最小量である。ページは書き込みの最小量である。コード語（読み取りユニット、Ｅページ、またはＥＣＣページ）は、読み取りおよび誤り訂正の最小量である。各ブロックは整数のページ数を含む。各ページは整数のコード語数を含む。
【００１５】
回路１００は、コントローラ回路を実施するものとして示される。回路１００は、概して、回路９４の読み取りおよび回路９４からの書き込みを制御するように動作する。回路１００は、回路９２から受け取ったデータユニットを符号化することによって書き込みコード語を生成する。回路１００は、回路９４から受け取った読み取りコード語を復号化する能力を含む。得られた復号化データは、信号ＨＯＳＴＩＯを介して回路９２に提示される、および／または再符号化されて信号ＮＶＭＩＯを介して回路９４に書き戻される。回路１００は、１つ以上のソリッドステートドライブ、埋め込み記憶部、または他の適した制御用途の制御部を実施する１つ以上の集積回路（またはチップもしくはダイ）を含む。
【００１６】
書き込みの一部として、回路１００は、概して、それぞれのデータユニットを符号化することによって複数のコード語を生成するように構成される。いくつかのコード語は、組み合わされて複数のバッチを形成し、各バッチは２つ以上のコード語を含む。各バッチのサイズは、回路９４における面のサイズと実質的に一致する。また、回路１００は、バッチ／コード語をパーシングすることによって複数のスライスを生成する。スライスは、合わせていくつかのページにインターリーブされる。回路１００は、複数のページを使用し、回路９４に書き込まれる冗長ブロックを作る。
【００１７】
読み取りの一部として、回路１００は、概して、回路９４から冗長ブロックを読み取ることによってページを再生成するように構成される。ページは、スライスを生成するためにパーシングされる。回路１００は、その後にスライスからコード語を再生成する。コード語は、元のデータユニットを再生成するために復号化される。
【００１８】
回路１０２は、ソリッドステートドライブを実施するものとして示される。回路１０２は、概して、回路９２によって生成されたデータを記憶し、データを回路９２に戻すように動作する。様々な実施形態によれば、回路１０２は、ＮＡＮＤフラッシュデバイス、相変化メモリ（たとえば、ＰＣＭ）デバイス、または抵抗ＲＡＭ（たとえば、ＲｅＲＡＭ）デバイスなどの不揮発性半導体デバイス、１つ以上の不揮発性デバイスを有するソリッドステートドライブの部分、および任意の他の揮発性もしくは不揮発性記憶媒体を１つ以上含む。回路１０２は、概して、不揮発性の状態でデータを記憶するように動作する。
【００１９】
図２を参照すると、例示的な冗長ブロックＮのブロック図が示される。冗長ブロックＮは、概して複数のブロック１２０ａ〜１２０ｎ（たとえば、Ｎ０〜Ｎ６３）を含む。各ブロック１２０ａ〜１２０ｎは、複数のページを有する。各ブロック１２０ａ〜１２０ｎは、回路９４の異なるいくつかのダイ９６ａ〜９６ｎ（たとえば、ダイ０〜ダイ６３）に記憶される。たとえば、８キロビットのデータは、８つのダイ９６ａ〜９６ｎをページあたり１キロビットでカバーする。一部の状況において、冗長ブロックＮは、ダイ９６ａ〜９６ｎの数よりも少ないブロック１２０ａ〜１２０ｎを有する。他の状況において、冗長ブロックＮは、ダイ９６ａ〜９６ｎの数よりも大きい数のブロック１２０ａ〜１２０ｎを有する。
【００２０】
冗長ブロックＮの寿命の開始時において、平均チャネルパラメータの単一の集合を用いて、すべてのブロック１２０ａ〜１２０ｎが読み取られる。時間が経過するとともに冗長ブロックＮがプログラムおよび消去されるにつれ、１つ以上のブロック（たとえば、ブロック１２０ｃおよび１２０ｍ）が、高い誤り率を有する外れ値ブロックとして識別され得る。このため、誤り率の高まりを考慮に入れるべく、外れ値ブロックの誤り訂正符号化が増加する。
【００２１】
冗長ブロックを粗い粒として適用することにより、回路１００は、１つ以上のブロック１２０ａ〜１２０ｎ（または対応するダイ９６ａ〜９６ｎ）の損失を許容するフォールトレラント性能を選択的に提供する。様々な実施形態において、回路１００は、冗長ブロックＮに記憶されているデータから冗長情報（たとえば、パリティ情報）を生成するように動作する。冗長情報は、概して、１つ以上のブロック１２０ａ〜１２０ｎに障害が起こる事象および／または電力が損失する事象においてデータの再構築を可能とする。データの再構築は、独立ディスクの冗長アレイ（たとえば、ＲＡＩＤ）ハードディスクドライブにおける再構築と同様である。冗長情報は、冗長ブロックＮの１つ以上のブロック１２０ａ〜１２０ｎに記憶される。冗長情報のフォールトトレランスは調整可能である。たとえば、単一の冗長ブロック（たとえば、１２０ａ）は、単一ブロック１２０ｂ〜１２０ｎの損失から回復するのに十分な冗長情報を記憶するために使用される。２つの冗長ブロック（たとえば、１２０ａ〜１２０ｂ）は、２つのブロック１２０ｃ〜１２０ｎの損失から回復するために使用される。冗長情報がデータのミラーコピーである場合（たとえば、ＲＡＩＤ０）、ブロック１２０ａ〜１２０ｎの半分がデータを記憶し得て、他の半分がデータのミラーコピーを記憶し得る。
【００２２】
図３を参照すると、本発明の実施形態に従う書き込みのための例示的な方法１４０のフロー図が示される。方法（または処理）１４０は、回路１００によって実施される。方法１４０は、概して、ステップ（または状態）１４２と、ステップ（または状態）１４４と、ステップ（または状態）１４６と、ステップ（または状態）１４８と、ステップ（または状態）１５０と、ステップ（または状態）１５２とを含む。ステップ１４２から１５２は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、または他の実施として実施され得るモジュールおよび／またはブロックを示し得る。ステップ１４２から１５２のシーケンスは、代表例として示される。特定の用途の基準を満たすために、他のステップの順序が実施され得る。
【００２３】
ステップ１４２において、回路１００は、信号（たとえば、ＤＡＴＡ）において回路９２から（信号ＨＯＳＴＩＯを介して）受け取られる、内部から回路１００へ読み出される、および／または保全作業の一部として回路９４から読み出されるデータユニットを符号化する。コード語は、ステップ１４４において回路１００によってバッチに組み合わされる。各バッチは、デバイス９６ａ〜９６ｎにおける面のビット幅と同じ大きさの（実質的に一致する）ビット幅、またはそれよりも小さいビット幅を有する。ステップ１４６において、バッチおよび／またはバッチ内のコード語は、回路１００によってスライスに分割される。
【００２４】
図４を参照すると、例示的なコード語１６０の図が示される。各コード語１６０のデータは、小さいサイズのスライス１６２ａ〜１６２ｎにパーシング（または分割）される。各スライス１６２ａ〜１６２ｎは、最終的に異なるフラッシュ面に記憶される。結果として、コード語１６０内の誤り率はすべてのフラッシュ面にわたる平均数となる。コード語１６０内の誤り数は、コード語１６０を複数の面にわたって分配する代わりにコード語１６０を最も悪い面に記憶した場合の誤り数よりも小さい。コード語１６０のサイズは、対応するデータユニットにおいて行なわれる誤り訂正符号化のレベル（または符号率）に応じて変動する。誤り訂正可能符号化が高いと、概して、低い誤り訂正可能符号化よりもコード語１６０が大きくなる。
【００２５】
図５を参照すると、デバイス９６ａ〜９６ｎに対する複数のコード語のスライス１６２ａ〜１６２ｎの例示的なマッピングの図が示される。図３に戻り、ステップ１４４において作られたバッチ（たとえば、バッチＡからバッチＮ）は、複数のページ（たとえば、ページＡからページＮ）を有する冗長ブロックの形態で回路１００によって集められる（または組み合わされる）。ステップ１４６におけるスライシングにより、各バッチＡ〜Ｎにおけるコード語（たとえば、ＣＷＡからＣＷＮ）が小さい断片に分割される（およびバッチＡ〜Ｎが分割される）。
【００２６】
ステップ１４８において、各バッチＡ〜Ｎにおける異なるコード語ＣＷＡ〜ＣＷＮからのスライス１６２ａ〜１６２ｎ、および／または異なるバッチＡ〜Ｎからのスライス１６２ａ〜１６２ｎがページＡ〜Ｎにインターリーブされる。図５に示される例において、ページＡは、バッチＡからの複数の（たとえば、２つの）スライスと、バッチＢからの複数の（たとえば、２つの）スライスと、バッチＮからの複数の（たとえば、２つの）スライスとを含む。様々な実施形態において、１つ以上のバッチＡ〜Ｎは、スライス１６２ａ〜１６２ｎをインターリーブすることなくページとなり得る。結果として、インターリーブされていないページが、装置（たとえば、回路９６ｂ）の面（たとえば、面Ｂ）に記憶される。
【００２７】
ステップ１５０において、インターリーブされた、および／またはインターリーブされていないスライス１６２ａ〜１６２ｎを含むページＡ〜Ｎが組み合わされて冗長ブロックとなる。冗長ブロックは、続いてステップ１５２において回路９４に書き込まれる。書き込み動作の一部として、各ページＡ〜Ｎは、面Ａ〜Ｎのうちのそれぞれの面に記憶される。様々な実施形態において、それぞれの面Ａ〜Ｎの各々は異なるデバイス９６ａ〜９６ｎに記憶される。一部の実施形態において、それぞれの面のうち２つ以上が同じデバイス９６ａ〜９６ｎ内にある（たとえば、ダイにおける２つまたは４つの面が並行してアクセスされ得る）。
【００２８】
各面（たとえば、物理ページ）がｍ個のコード語のサイズを有し、各コード語がｎ個のスライスを有する場合の例を考える。同じ列上のすべてのコード語のｋ番目のスライスは、仮想コード語を形成する。列ごとのスライスにおいて、ｍ個の列がｍ個の仮想コード語を形成する。ｍ個の仮想コード語は、回路９４におけるｋ番目のフラッシュ面に書き込まれる。インターリーブマッピングによって追加のハードウェアコストおよび／または読み取り／書き込み性能の劣化が生じることはない。マッピングを使用し、各物理コード語が複数のフラッシュ面に分配され、最も悪いフラッシュ面の問題が克服される。
【００２９】
図６を参照すると、読み取りのための例示的な方法１８０のフロー図が示される。方法（または処理）１８０は、回路１００によって実施される。方法１８０は、概して、ステップ（または状態）１８２と、ステップ（または状態）１８４と、ステップ（または状態）１８６と、ステップ（または状態）１８８と、ステップ（または状態）１９０と、ステップ（または状態）１９２とを含む。ステップ１８２から１９２は、ハードウェア、ソフトウェア、ハードウェアとソフトウェアとの組み合わせ、または他の実施として実施され得るモジュールおよび／またはブロックを示し得る。ステップ１８２から１９２のシーケンスは、代表例として示される。特定用途の基準を満たすために、他のステップ順序が実施され得る。
【００３０】
図７を参照すると、複数のコード語ＣＷＡ〜ＣＷＮの複数のスライス１６２ａ〜１６２ｎへのデバイス９６ａ〜９６ｎにおけるデータの例示的なマッピングの図が示される。図６に戻り、冗長ブロックは、ステップ１８２において回路９４から読み取られる。回路９４における所与のアドレスから読み取られた冗長ブロックは、誤りから離れた所与のアドレスに事前に書き込まれた冗長ブロックと同じである。冗長ブロックは、ページＡ〜Ｎを生成するためにステップ１８４において回路１００によってパーシングされる。読み取られたページは、事前に書き込まれた冗長ブロックの書き込みページと同じである。
【００３１】
様々な実施形態において、スライス１６２ａ〜１６２ｎを再生成するために、ページＡ〜Ｎはステップ１８６において回路１００によってパーシングされる。スライス１６２ａ〜１６２ｎは、バッチＡ〜Ｎを再生成するために、ステップ１８８においてデインターリーブされるとともに組み合わされる。書き込みの前にページがインターリーブされていない一部の状況においては、デインターリーブするステップがスキップされ得る。バッチＡ〜Ｎは、コード語ＣＷＡ〜ＣＷＮを再生成するために、ステップ１９０において回路１００によってパーシングされる。各コード語ＣＷＡ〜ＣＷＮは、データユニットを回復させるためにステップ１９２において復号化される。データユニットは、信号ＤＡＴＡにおいて提示される。データユニットは、続いて信号ＨＯＳＴＩＯにおいて回路９２に転送される、および／または読み取りを開始した回路１００内のソースに転送される。
【００３２】
ｋ番目の列を伴う書き込み例に続き、ｋ番目のフラッシュ面を読み取ることにより、ｍ個の仮想コード語を含む物理ページが回路１００に戻される。各仮想コード語は、ｎ個のスライスを有する。ｉ番目の仮想コード語およびｊ番目のスライスは、回路１００内の２次元読み取りコード語バッファのｉ番目の列およびｊ番目の行にマッピングする。読み取りコード語バッファにおけるデータユニットは、信号ＤＡＴＡにおいて（信号ＨＯＳＴＩＯを介して）ホストコンピュータに転送され得る、または読み取りデータを要求した他の宛先（たとえば、回路１００の内部）に転送され得る。
【００３３】
回路１００は、概して、主要なアクセスパターンが大きなデータサイズの連続的な読み取りおよび／またはアクセスである用途において有用である。たとえば、ビデオファイルおよびオーディオファイルへのアクセスでは、概して、異なるアクセスのレイテンシ変動に敏感な大きなデータへアクセスされる。回路１００は、無作為な読み取り集中的な用途および他の無作為な用途にも有用である。
【００３４】
一部の実施において、一般のハードウェア設計は変更され得ず、インターリーブがソフトウェア／ファームウェアによって有効化または無効化される。たとえば、本発明の実施形態は、電流制御器の設計と組み合わせることができる。プログラム／消去サイクルのカウントが小さい場合、回路９４へアクセスするために電流設計が使用される。プログラム／消去サイクルのカウントが増加するにつれて、異なるダイ／面における誤り率が概して増加する。異なるダイ／面のプログラム／消去サイクル寿命および最大保持時間も、異なり得る。たとえば、最も悪い面／ダイに記憶されたコード語は、多数の（たとえば、１０，０００回）プログラム消去／サイクル後において共通して訂正が失敗する。一般の設計において、最も悪いダイに障害が起こった場合、そのダイは使用不能としてマーキングされる。したがって、特定の容量が保証されるとともにインターリーブを行わない一般のフラッシュベースのソリッドステートドライブのプログラム／消去サイクル寿命は、たった１０，０００回のプログラム／消去サイクルである。インターリーブを可能とすることにより、コード語における誤りは複数のダイ／面の平均となる。したがって、１０，０００回のプログラム／消去サイクルの後であっても、コード語は訂正可能のままとなる。ソリッドステートドライブは、容量の損失なくして１０，０００回以上のプログラム／消去サイクルにわたって使用可能なままとなる。
【００３５】
インターリーブは、プログラム／消去サイクルにわたる適応性誤り訂正符号化など、多くの他の技術に対して直交的に実施され得る。適応性誤り訂正符号化が適用されると、符号化率がプログラム／消去サイクルにわたって最初に適応する。プログラム／消去サイクルが増加するにつれ、フラッシュコントローラは、最終的に最も強力な誤り訂正符号化（たとえば、最も低い符号化速度の誤り訂正符号）が適用されるまで、より強力な誤り訂正符号化（たとえば、より低い符号化速度の誤り訂正符号）へ徐々に切り換わる。プログラム／消去サイクルが増加し続けるにつれ、最も弱いフラッシュブロック／ダイ／面の最も低い符号化速度の誤り訂正符号に最終的に障害が起こる。インターリーブを可能とすることにより、最も弱いダイが使用可能であり続け得て、容量損失なくしてプログラム／消去サイクル寿命が拡張される。
【００３６】
本発明の様々な実施により、従来の技術と比較して回路１０２の性能がより予測可能なものとなる。インターリーブにより、異なるダイ／面に記憶された他のコード語よりも一部のコード語内により多くの誤りが多く存在するという場合が減少する。各コード語を複数の物理フラッシュ面にわたって分配することにより、最も悪いフラッシュ面によって引き起こされるボトルネックが回避される。したがって、信頼性および寿命が向上する。
【００３７】
図１から図７の図によって行われる機能は、関連技術の当業者にとって明らかなように、本明細書の教示に従ってプログラムされた、従来の汎用プロセッサ、デジタルコンピュータ、マイクロプロセッサ、マイクロコントローラ、ＲＩＳＣ（縮小命令型コンピュータ）プロセッサ、ＣＩＳＣ（複雑命令セットコンピュータ）プロセッサ、ＳＩＭＤ（単一命令多重データ）プロセッサ、信号プロセッサ、中央処理装置（ＣＰＵ）、算術論理演算ユニット（ＡＬＵ）、ビデオデジタル信号プロセッサ（ＶＤＳＰ）、および／または同様の計算マシンのうちの１つ以上を用いて実施され得る。適切なソフトウェア、ファームウェア、符号化、ルーチン、指示、演算コード、マイクロコード、および／またはプログラムモジュールは、関連技術の当業者にとって明らかなように、本開示の教示に基づいて熟練のプログラマーによって容易に準備され得る。ソフトウェアは、概して、マシンで実施される１つ以上のプロセッサによって１つまたは複数の媒体から実行される。
【００３８】
本発明は、本明細書に記載されるように、ＡＳＩＣ（特定用途向けＩＣ）、プラットホームＡＳＩＣ、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）、ＰＬＤ（プログラマブルロジックデバイス）、ＣＰＬＤ（コンプレックスプログラマブルロジックデバイス）、シーオブゲート、ＲＦＩＣ（無線周波数集積回路）、ＡＳＳＰ（特定用途専用標準品）、１つ以上のモノリシック集積回路、フリップチップモジュールおよび／またはマルチチップモジュールとして配置された１つ以上のチップもしくはダイを準備することによって、または従来の構成回路の適切なネットワークを相互接続することによって実施され得て、その変形例は当業者にとって容易に明らかとなる。
【００３９】
したがって、本発明は、本発明に従う１つ以上の処理または方法を行なうようにマシンをプログラムするために使用され得る指示を含む１つの記憶媒体もしくは複数の記憶媒体、および／または１つの送信媒体もしくは複数の送信媒体であり得るコンピュータ製品も含み得る。周囲の回路の動作を伴ってコンピュータ製品に含まれる指示をマシンが実行することにより、入力データが、音声および／もしくは映像描写などの物体および物質を表わす、記憶媒体上の１つ以上のファイルならびに／または１つ以上の出力信号に変換され得る。記憶媒体は、フロッピー（登録商標）ディスク、ハードドライブ、磁気ディスク、光学ディスク、ＣＤ−ＲＯＭ、ＤＶＤ，および光磁気ディスクなどの任意のタイプのディスク、ＲＯＭ（読み取り専用メモリ）、ＲＡＭ（ランダムアクセスメモリ）、ＥＰＲＯＭ（消去可能プログラマブルＲＯＭ）、ＥＥＰＲＯＭ（電気的消去可能プログラマブルＲＯＭ）、ＵＶＰＲＯＭ（紫外線消去可能プログラマブルＲＯＭ）、フラッシュメモリ、磁気カード、および光カードなどの回路、ならびに／または電子的な指示を記憶するのに適した任意のタイプの媒体を含み得るが、これらに限定されない。
【００４０】
本発明の要素は、１つ以上のデバイス、ユニット、構成部品、システム、マシン、および／または装置の一部または全てを形成し得る。デバイスは、サーバー、ワークステーション、ストレージアレイコントローラ、ストレージシステム、パーソナルコンピュータ、ラップトップコンピュータ、ノートブック型コンピュータ、パームコンピュータ、携帯情報端末、携帯電子デバイス、バッテリーにより給電されるデバイス、セットトップボックス、エンコーダ、デコーダ、トランスコーダ、コンプレッサ、デコンプレッサ、プリプロセッサ、ポストプロセッサ、トランスミッタ、レシーバ、トランシーバ、暗号回路、携帯電話、デジタルカメラ、位置システムおよび／もしくはナビゲーションシステム、医療機器、ヘッドアップディスプレイ、無線デバイス、音声記録、音声記憶、および／もしくは音声再生デバイス、映像記録、映像記憶、および／もしくは映像再生デバイス、ゲームプラットホーム、周辺機器、および／またはマルチチップモジュールを含み得るが、これらに限定されない。関連技術の当業者は、特定用途の基準を満たすために本発明の要素が他のタイプの装置において実施され得ることを理解する。
【００４１】
「〜し得る（may）」および「概して（generally)」の用語は、「〜である（is（are））」および動詞と合わせて本願明細書において使用される場合、その記載が例示的なものであって、本開示に示される特定の例および本開示に基づいて導かれる代表的な例の両方を含むのに十分に広いと考えられることを意味する。本明細書において使用される「〜し得る（may）」および「概して（generally）」の用語は、対応する要素を省略することについての願望または可能性を必ずしも暗示するものと解釈されるべきではない。
【００４２】
本発明は、その実施形態を参照して特定的に示されるとともに記載されたが、形態および詳細に関する様々な変化は本発明の範囲から逸脱することなく行われ得ることが当業者によって理解される。
【図１】
2015135676.tif 000003
【図２】
2015135676.tif 000004
【図３】
2015135676.tif 000005
【図４】
2015135676.tif 000006
【図５】
2015135676.tif 000007
【図６】
2015135676.tif 000008
【図７】
2015135676.tif 000009
【外国語明細書】
2015135676000001.pdf