Memory controller to support a rate compatible punctured code

申请号 JP2010534994 申请日 2008-10-28 公开(公告)号 JP2011504271A 公开(公告)日 2011-02-03
申请人 マイクロン テクノロジー, インク.; 发明人 ヘンリー ラドキ,ウィリアム;
摘要 装置および方法により、レートコンパチブル畳み込みコード(RPCC)などの、レートコンパチブルコードに従って、不揮発性ソリッドステートメモリデバイス(100)にデータが格納される。 このようなメモリデバイス(100)の一例は、フラッシュメモリデバイス(100)である。 データを、まず、エラー訂正および検出のためにブロックエンコードすることができる(112)。 ブロックコード化されたデータを、さらに畳み込みエンコードすることができる(114)。 畳み込みコードされたデータを、パンクチャリングし(116)、メモリデバイス(100)に格納することができる。 パンクチャリングにより、データを格納するために使用されるメモリ量が減少する。 状況に応じて、パンクチャリング量は、パンクチャリングが行われない量から比較的高いパンクチャリング量まで変化して、さらなるエラー訂正量の提供および使用されるメモリ量を変化させることができる。 データをメモリデバイス(100)から読み出すとき、パンクチャドデータをデコードすることができる(120、122)。
权利要求
  • データを受信するよう構成され、前記受信されたデータをパンクチャリングするよう構成されたエンコーダと、
    前記パンクチャドデータを格納するよう構成された一つ以上のメモリアレイと、
    前記パンクチャドデータをデコードするよう構成されたデコーダと、
    を含む、
    ことを特徴とする装置。
  • 前記エンコーダは、パンクチャラブルコードエンコーダおよびパンクチャリング回路をさらに含む、
    ことを特徴とする請求項1に記載の装置。
  • 前記パンクチャラブルコードエンコーダは、畳み込みエンコーダを含む、
    ことを特徴とする請求項2に記載の装置。
  • 前記データをブロックエンコードするよう構成されたブロックコードエンコーダであって、前記畳み込みエンコーダは、前記ブロックエンコードされたデータを畳み込みエンコードするように構成された、ブロックコードエンコーダと、
    前記デコードされたパンクチャドデータをさらにデコードするよう構成されたブロックコードデコーダと、
    をさらに含む、
    ことを特徴とする請求項3に記載の装置。
  • 前記パンクチャラブルコードデコーダは、Viterbiデコーダを含む、
    ことを特徴とする請求項4に記載の装置。
  • 前記装置は、NANDフラッシュメモリデバイスを含む、
    ことを特徴とする請求項1に記載の装置。
  • 制御回路をさらに含み、前記制御回路は、前記エンコーダによって使用されるコードレートを選択するように構成された、
    ことを特徴とする請求項1に記載の装置。
  • 制御回路をさらに含み、前記コードレートは、少なくとも部分的には限界条件によって選択される、
    ことを特徴とする請求項7に記載の装置。
  • 制御回路をさらに含み、前記コードレートは、少なくとも部分的には、前記受信されたデータに対するデータタイプに応じて選択される、
    ことを特徴とする請求項7に記載の装置。
  • 前記一つ以上のメモリアレイの少なくとも一ブロックに第一のコードレートが割り当てられ、少なくとも第二のブロックに第二のコードレートが割り当てられる、
    ことを特徴とする請求項1に記載の装置。
  • 前記一つ以上のメモリアレイは、複数レベルメモリセルを含み、前記複数レベルメモリセルが、前記パンクチャドデータを前記メモリセルの前記複数レベル内に格納するよう構成された、
    ことを特徴とする請求項1に記載の装置。
  • 前記エンコーダは、前記受信されたデータから、コードレートが1/4の畳み込みコードを生成するよう構成され、1/3から1/2のうちで選択可能なコードレートを有する前記パンクチャドデータ生成するように前記畳み込みコードをパンクチャリングするようにさらに構成された、
    ことを特徴とする請求項1に記載の装置。
  • 制御回路をさらに含み、前記制御回路は、前記一つ以上のメモリアレイ中に、パンクチャリングされていない形式でリファレンス情報を格納するよう構成され、前記リファレンス情報は、前記パンクチャドデータのパンクチャリングレベルを示す、
    ことを特徴とする請求項1に記載の装置。
  • 一つ以上のメモリアレイを有する不揮発性メモリデバイスにデータを格納するための方法であって、
    前記一つ以上のメモリアレイ中への格納を意図されたデータを受信するステップと、
    パンクチャドデータを生成するために前記データをエンコードするステップと、
    前記一つ以上のメモリアレイに前記パンクチャドデータを格納するステップと、
    を含む、
    ことを特徴とする方法。
  • 前記パンクチャドデータを生成するために、前記受信されたデータに対して畳み込みエンコードおよびパンクチャリングを行うステップをさらに含む、
    ことを特徴とする請求項14に記載の方法。
  • 前記データを畳み込みエンコードする前に、前記データをブロックコードでエンコードするステップをさらに含む、
    ことを特徴とする請求項15に記載の方法。
  • 畳み込みコードされたデータの少なくとも一部分を、あるパンクチャパターンでパンクチャリングして、第一のコードレートを有する前記パンクチャドデータを生成するステップと、畳み込みコードされたデータの少なくとも第二の部分を、第二のパンクチャパターンでパンクチャリングして、第二のコードレートを有する前記パンクチャドデータを生成するステップとをさらに含み、
    前記あるパンクチャパターンでパンクチャリングされた前記データは、前記一つ以上のメモリアレイの第一の部分に格納され、前記第二のパンクチャパターンでパンクチャリングされた前記データは、前記一つ以上のメモリアレイの第二の部分に格納される、
    ことを特徴とする請求項14に記載の方法。
  • 少なくとも部分的には、前記受信されたデータに対するデータタイプに応じて、前記第一のコードレートと前記第二のコードレートの間で選択するステップをさらに含む、
    ことを特徴とする請求項14に記載の方法。
  • エンコードするステップは、
    コードレートが1/4の畳み込みコードを生成するステップと、
    1/3から1/2のうちで選択可能なコードレートを有する前記パンクチャドデータを生成するために、前記畳み込みコードをパンクチャリングするステップと、
    を含む、
    ことを特徴とする請求項14に記載の方法。
  • 前記一つ以上のメモリアレイ中に、パンクチャリングされていない形式でリファレンス情報を格納するステップをさらに含み、
    前記リファレンス情報は、前記パンクチャドデータのパンクチャリングレベルを示す、
    ことを特徴とする請求項14に記載の方法。
  • 一つ以上のメモリアレイを有する不揮発性メモリデバイスに格納された、パンクチャドデータを取り出す方法であって、
    前記メモリデバイスの前記一つ以上のメモリアレイから前記パンクチャドデータを取り出すステップと、
    前記パンクチャドデータに関連したパンクチャパターンに従って、前記パンクチャドデータをデコードするステップと、
    を含む、
    ことを特徴とする方法。
  • デコードするステップは、Viterbiデコードを行うステップを含む、
    ことを特徴とする請求項21に記載の方法。
  • 前記一つ以上のメモリアレイから、パンクチャリングされていない形式でリファレンス情報を取り出すステップであって、前記リファレンス情報は、前記パンクチャドデータのパンクチャリングレベルを示すステップと、
    前記リファレンス情報に従って、前記パンクチャパターンを選択するステップと、
    をさらに含む、
    ことを特徴とする請求項21に記載の方法。
  • 不揮発性ソリッドステートメモリデバイス中のメモリスペースのブロックに対してコードレートを決定する方法であって、
    前記メモリデバイスのデータのブロックの少なくとも一部に対して、限界条件が存在するかどうかを決定するステップと、
    前記限界条件が存在する場合に、前記ブロックで使用されるコードレートを減少させるステップと、
    を含む、
    ことを特徴とする方法。
  • 減少させるステップは、パンクチャリング量を減少させるステップを含む、
    ことを特徴とする請求項24に記載の方法。
  • 说明书全文

    本発明の実施形態は、概して集積回路に関する。 詳細には、本発明の実施形態は、メモリ回路に関する。

    フラッシュメモリは、消去可能、および再プログラム可能な不揮発性メモリの一形式である。 フラッシュメモリにおいては、メモリセルは、消去のために“ブロック”で配列される。 ブロックが消去された後に、所望の場合にはプログラミングのために準備が整えられる。 NORフラッシュメモリは、データを取り出すために個々のバイトに対するアクセスを提供するフラッシュメモリの1タイプであるが、比較的低密度を有する。

    NANDフラッシュメモリは、比較的高密度を提供するフラッシュメモリの1タイプである。 高密度は、1つには直列に接続されたセルの列を形成することによって達成される。 さらには、NANDフラッシュメモリでは、例えばデータからなるページなどの比較的大きなバイト群で、データがプログラムされ、アクセスされる。 例えば、1つのページは、アレイにおける一行、もしくは一行のうちの一部に対応しうる。

    例えば、データを格納するためのセルのメモリアレイは、典型的には、行および列の2次元アレイに配列される。 これらのアレイは、寸法が大きく変化しうる。 アレイのセルが、セルごとに2つ以上のレベル、すなわち複数レベルつまり2ビット以上のデータを保持することが可能である場合には、アレイは、3次元でデータを効率的に保持する。

    NANDフラッシュメモリの典型的なアレイにおいては、フラッシュセルのソースおよびドレインは、(ソースからドレインへと)直列に配列され、列と称される。 行に沿って“ワード線”があり、セルのゲートを制御する。 典型的には、データは一度に一行にアクセスされ、各列から1ビットを提供される。 読み出されるべき行に対するワード線は、セルの格納された(1つまたは複数の)状態を読み出すための特定の電圧へ設定される。 複数レベルのセルに対しては、異なる電圧レベルが使用されうる。 列の他のセルに対する他の行ラインは、セルを“オン”状態にするように設定され、列における対応するセルを介して、その行のセルの格納された(1つまたは複数の)状態の読み出しを可能にする。

    行ごとのバイト数は、“ページ”におけるバイト数と同様、非常に広範囲に変化しうる。 ある製造業者は、ある量のデータでページを定義し、例えば、2ページのデータが1つのワード線(行)に対応しうる。 本記述の目的のために、1“ページ”のデータは、書き込み一周期もしくは読み出し一周期の間に、NANDフラッシュメモリアレイへ書き込まれる、もしくはそこから読み出されるデータの量に対応する。 一例においては、2112バイトが1本のワード線のアクティベーションによって取り出される。 この2112バイトのうち、2048はデータバイト、64はスペアバイトであるが、このスペアバイトは典型的にはエラー訂正コード(ECC)、ウェアレベリング情報、もしくは他のオーバーヘッドデータのために使用される。 エラー訂正コードは、格納されたデータのロバスト性を増加させる。 典型的には、ある形式のブロックコードが、巡回冗長検査(CRC)チェックサム、Reed−Solomonエラー訂正などのエラー訂正コードを生成するために使用される。 これらのエラー訂正コードは、データバイトの読み出しにおいてエラーが存在したかどうかを検出し、また、エラーがエラー訂正コードの性能を超えない場合にはデータバイトにおけるエラーを訂正することが通常は可能である。

    フラッシュメモリには多くの用途がある。 例として、フラッシュメモリハードドライブ(ハードドライブに対する代替品)、USBフラッシュドライブもしくはサムドライブ、携帯電話、デジタルカメラ、デジタルメディアプレイヤー、ゲーム、メモリカード、ナビゲーションデバイス、携帯情報端末、コンピュータなどを含む。 最大限度内では、エラー訂正コードは、データバイトのデータにおける多くのエラーを訂正しうる。 しかしながら、最大限度を超えるエラーを有するデータは、通常は訂正することができない。 例えば、あるワード線が機能しない場合には、データを読み出す上で、行全体にわたって問題が生じうる。 通常はこれによって、エラーが多くなりすぎてしまい、エラー訂正コードが訂正を行えなくなる。 データの臨界性に応じて、データにおける訂正不可能なエラーの影響は、単なる不都合である場合から、壊滅的な場合まで多岐にわたる。

    本明細書におけるこれらの図面および関連する記述は、本発明の具体的な実施形態を説明するために提供されるものであって、限定することを意図するものではない。

    メモリデバイスを含む概略図であって、このメモリデバイスは、外部ブロックコードおよび内部レートコンパチブルコードを有するデータを格納する。

    畳み込みコードを生成するためのコーダの一例を概略的に示す。

    畳み込みコードをパンクチャリング(puncture)するためのデータフローを概略的に示す。

    NANDフラッシュメモリデバイスへのデータの格納のためにコードレートを動的に選択するプロセスを概略的に示すフローチャートである。

    データは、レートコンパチブル畳み込みコード(RCPC)などのレートコンパチブルコードに従って、不揮発性ソリッドステートメモリデバイスに格納される。 このようなメモリデバイスの一例は、フラッシュメモリデバイスである。 データは、はじめに、エラー訂正および検出などのために、ブロックエンコードされうる。 ブロックエンコードされたデータは、さらに、畳み込みエンコードされる。 畳み込みエンコードは、リダンダンシーを増加させるが、格納されるデータ量もまた増加させる。 パンクチャリング(puncture)される(ときには、“パーフォレーティド(perforated:穴あき)”とも称される)と、畳み込みエンコードされたデータのうちの幾つかは、パンクチャパターンに従って除去される。 パンクチャパターンの例は、図3に関連して後に記述される。 これによって、レートコンパチブルコードのコードレートm/nが増加する。 ここで、mは情報シンボルの数であり、nはコードシンボルの数である。 パンクチャリングを行うことにより、データを格納するのに使用されるメモリ量が減少する。 状況に応じて、パンクチャリング量は、パンクチャリングしない場合から比較的高いパンクチャリング量まで変化し、提供される追加のエラー訂正量および使用されるメモリ量を変化させる。 エンコードされたパンクチャドデータは、データがメモリデバイスから読み出されるべきときにデコードされる。 本明細書においては、特定の実施形態が記述されるが、本明細書で説明される利点および特徴のうちの全てを提供するわけではない実施形態を含む、他の実施形態も当業者にとっては明らかであろう。

    “ブロック”という用語が使用される文脈は2つ存在する。 NANDフラッシュに関して、ブロックは、メモリの消去可能な単位に対応するページの集合である。 エラー訂正に関して、ブロックコードは、エラー訂正の1タイプを称したものである。 この二つは、文脈に基づいて、区別することができる。

    図1は、メモリデバイス100を含む概略図であり、このメモリデバイスは、エンコードされたデータを生成するために、レートコンパチブルコード、すなわち、調整可能なコードレートm/nを有する畳み込みコードを使用する。 レートコンパチブルコードの一例は、畳み込みコードである。 畳み込みコードは、フォワードエラー訂正技術であり、この技術では、畳み込みエンコーダに対する入データストリームは、エンコーダのインパルスレスポンスと畳み込まれる。 畳み込みコードの計算の一例のブロック図は図2に示される。 示された実施形態は、内部コードおよび外部コードによって形成された連結エラー訂正コードを生成する。 外部エラー訂正コードがまず生成される。 内部エラー訂正コードは、外部コードが生成された後にエンコードされ、さらに外部コードをエンコードする。 外部ブロックコードが、エラー検出機能およびエラー訂正機能を提供する。 内部レートコンパチブルコードが、さらなるエラー訂正機能を提供する。 データをブロックで処理するブロックコードとは対照的に、レートコンパチブル内部コードは、連続的にデータを処理する。

    メモリデバイス100は、CPU102と通信した状態で示され、CPU102は、メモリデバイス100を使用するデバイスを表す。 CPU102は、マイクロプロセッサ、マイクロコントローラ、信号プロセッサなどに該当しうるプロセッサである。 示されたメモリデバイス100は、書き込みバッファ104、コントローラ106、メモリアレイ108、および読み出しバッファ110を含む。

    コントローラ106は、さらにブロックコードエンコーダ112、レートコンパチブルエンコーダ124、レートコンパチブルデコーダ126、およびブロックコードデコーダ122を含む。 示される実施形態においては、レートコンパチブルエンコーダ124は、パンクチャラブル(puncturable)コードエンコーダ114およびパンクチャリング回路116をさらに含み、レートコンパチブルデコーダ126は、挿入回路118およびパンクチャラブルコードデコーダ120をさらに含む。 コントローラ106は、ハードウェア、ファームウェア(ソフトウェア)もしくはハードウェアおよびファームウェア両方の組み合わせによって実現されうる。 ブロックコードエンコーダ112およびパンクチャラブルコードエンコーダ114は、各々フォワードエラー訂正(FEC)を提供する。 コントローラ106は、メモリアレイ108に対するデータ格納、およびメモリアレイ108からのデータの取出しを処理する。 明瞭性のために、バッファ、行デコーダ、センス/増幅器回路などの既知のコンポーネントは、図1には示されていない。 例えば、ブロックコードエンコーダ112とパンクチャラブルコードエンコーダ114との間には、エンコードされるべきデータを格納するために、バッファが存在しうる。 パンクチャラブルコードエンコーダ114とパンクチャリング回路116との間には、パンクチャリングされるべきデータを格納するためにバッファが存在しうる。 パンクチャリング回路116とメモリアレイ108のためのドライバとの間には、エンコードされた書き込まれるべきパンクチャドデータを格納するためにバッファが存在しうる。

    一実施形態においては、メモリアレイ108は、NANDフラッシュメモリアレイに相当する。 NANDフラッシュメモリアレイは、シングルレベルである可能性もあるし、マルチレベルである可能性もあるし、または、複数アレイに対応する可能性さえもある。 NANDフラッシュメモリの文脈において特定の実施形態が記述されるが、本明細書で記述される原理および利点は、他のタイプのメモリに対しても適用可能である。 種々の不揮発性ソリッドステートメモリタイプが、メモリアレイ108のために使用されうる。 例えば、メモリアレイ108は、他の形式のフラッシュ(例えばNORタイプ)、電気的に消去可能なプログラマブルリードオンリーメモリ(EEPROM)、磁気抵抗メモリ(MRAM)、プログラマブルコンダクタメモリ、強誘電体メモリなどに相当しうる。

    書き込みバッファ104は、メモリアレイ108への格納を意図されるデータを格納する。 読み出しバッファ110は、CPU102によって読み出すために、メモリアレイ108から取り出されたデータを格納する。 NANDフラッシュメモリの場合、通常は、1度に1“ページ”のデータがメモリアレイ108へと書き込まれるか、またはそこから読み出される。 このデータページのサイズは、メモリデバイスによって変化しうる。 典型的なページサイズは、512バイト、1024バイト、2048バイトなどを含むがそのいずれにも限定はされない。 概略図においては、変数Nが、1ページに対するデータ量(例えば、バイト数)を表す。 典型的には、CPU102に対して有利なサイズになるように、特定のページサイズが固定されるが、メモリアレイ108に格納されるページサイズは、以下に詳細に説明されるように、コードレートに応じて変化する。

    Nバイトの正常データが、ブロックコードエンコーダ112によってエンコードされる。 ブロックコードの例は、Hammingコード、Reed−Solomonエラー訂正コード、Bose−Chaudhuri−Hocquenghem(BCH)コードなどを含むが、そのいずれにも限定はされない。 最大限度内においては、これらのブロックエラー訂正コードは、データ内の多くのエラーを検出し、訂正するために使用することができる。 ブロックコードを使用してエンコードされたデータは、図1ではブロックコードバイトの変数yとして表される、さらなるバイトを占有する。 従来のNANDフラッシュメモリアレイにおいては、ブロックコードは、典型的には、対応するページのためのスペアバイト領域に格納され、この領域はブロックコードと同様に他の情報を含みうる。 例示の目的のために、考えられるこれらの余剰バイトを、変数yに含める。 したがって、従来のNANDフラッシュメモリアレイの場合、Nバイトの正常データと、yバイトのエラー訂正データに対するページのために、N+yバイトが格納される。 典型的には、ブロックコードに対しては、N+yバイトのうちのNバイトは同一のデータのままであり、エラー訂正のためのyブロックコードバイトが、Nバイトの正常データへと付加される。 Nバイトの正常データは、ブロックコードコーダ112に対するオリジナルデータと考えられ、N+yバイトはパンクチャラブルコードコーダ114に対するオリジナルデータと考えられうる。 ブロックコードは、後にエンコードされたデータがデコードされるとき、エラーを検出および/もしくは訂正することを可能にする。

    レートコンパチブルエンコーダ124は、ブロックエンコードされたデータをエンコードする。 一実施形態においては、レートコンパチブルエンコーダ124は、パンクチャラブルコードエンコーダ114およびパンクチャリング回路116を含む。 パンクチャラブルコードエンコーダ114は、ブロックコードエンコーダ112からのN+yバイトのデータをエンコードするために、内部レートコンパチブルコード、例えば、畳み込みコードを使用してエンコードを行う。 典型的には、パンクチャリングする前のコードに対するコードレートは、1/n、例えば、1/2、1/3、1/4などである。 このエンコードにより、ページに対するデータ量がz 倍だけ増加し、したがって、パンクチャラブルコードエンコーダ114の出力において、z (N+y)バイトが生成される。 1/nのコードレートに対しては、z は、nに等しい。 例えば、ハーフレート(1/2)コードレートに対しては、z は2に等しい。 ハーフレートコードで畳み込みエンコードされたデータを生成することについて、図2に関連して後により詳細に記述される。

    パンクチャリング回路116は、畳み込みエンコードされたデータをパンクチャリングする。 一実施形態においては、パンクチャリング回路116の機能は、パンクチャラブルコードエンコーダ114と統合される。 これによってデータ量は減少し、この減少により、コードレート(m/n)が増加する。 パンクチャリング後、ページに対するビット数は、z (N+y)バイトであり、ここで、z は、パンクチャリング後のコードレートの逆数である。 z (N+y)バイトはメモリアレイ108に格納される。 データサイズが増加するにつれて、格納されるデータサイズの増加を反映するように、メモリアドレスを、メモリデバイス内部へマップすることもできる。 パンクチャリングの利点の1つは、コードレート(m/n)を変化させ、それによって、格納されるリダンダンシー量に対して使用される格納量を変化させるために使用することが可能なことである。

    パンクチャドコードのレートの例は、図3に関連して後に記述されるように、2/3および4/5を含むが、そのいずれにも限定はされない。 他のコードレートも適用可能であり、当業者によって容易に決定されるであろう。 コードレート(m/n)は、選択される特定のパンクチャパターンおよび、パンクチャリングされるデータをエンコードするために使用されるコードのコードレートに依存する。 データが“パンクチャリングされる”とき、データのうちのあるビットが削除される。 図1においては、パンクチャパターンもしくはパンクチャパターンの指示は、制御回路128によって提供される。 コードレート(m/n)は、パンクチャパターンとともに変化し、それによって、パンクチャドデータを格納するために使用されるメモリアレイ108のスペース量が変化しうる。 したがって、アドレス、行および/もしくは列のマッピングならびに個々のブロックによって使用されるコードレートの指示を、メモリアレイ108のリファレンス領域に格納し、制御回路128により使用ならびに/または選択することが可能であることが理解されるであろう。 一実施形態においては、さらに、制御回路128は、パンクチャドデータのパンクチャリングレベルを示すリファレンス情報をメモリアレイ108に格納する。 例えば、パンクチャパターンが格納されうる。 一実施形態においては、リファレンス情報は、それ自体はパンクチャリングされず、そのため、パンクチャパターンを知らなくてもデコードすることが可能である。 一例においては、リファンレス情報は、各ページの終端に格納される。 しかしながら、リファレンス情報は、各ブロックの終端、またはアレイ全体に対して1つのブロック内などにも格納されうる。 制御回路128の考えられる機能のさらなる例は、図4に関連して後に記述される。

    レートコンパチブルデコーダ126は、パンクチャドデータをデコードする。 レートコンパチブルデコーダ126は、パンクチャリングされていないデータもまた規定通りにデコードしうる。 一実施形態においては、レートコンパチブルデコーダ126は、挿入回路118およびパンクチャラブルコードデコーダ120を含む。 z (N+y)バイトのパンクチャドデータがメモリアレイ108から取り出されると、挿入回路118は、ダミーデータを挿入するためにパンクチャパターンを使用する。 ダミーデータは、例えば、Viterbiデコーダの可能性のあるデコーディングシーケンスについての確度計算(ブランチメトリクス)に影響を与えず、これにより、既に削除されたデータの代わりとなる(デパンクチャ)。 一代替実施形態においては、ダミーデータを挿入するのではなく、特定のデータがパンクチャリングされたことをデコーダへ示すために、消去ポインタが使用される。 一実施形態においては、挿入回路118の“挿入”機能は、パンクチャラブルコードデコーダ120におけるハードワイヤードの数学的均等物と入れ替わる。 エラーの総数がレートコンパチブルコードのエラー訂正能力内である限り、パンクチャドデータを正確にデコードするのに十分なリダンダンシーが存在するはずである。

    (N+y)バイトの再構成されたコードは、パンクチャラブルコードデコーダ120によってデコードされる。 一実施形態においては、パンクチャラブルコードデコーダ120は、Viterbiデコーダであり、畳み込みエンコードされたデータをデコンボルブ(deconvolve)する。 デコンボルブされたデータは、その後ブロックコードデコーダ122へと(例えば、さらなるエラー検出および/もしくは訂正のために)提供される。 ブロックコードデコーダ122は、z(N+y)バイトのブロックエンコードされたデータをデコードし、(そのエラーが訂正不可能ではない限り)Nバイトの訂正されたデータを生成する。 このNバイトの訂正されたデータは、CPU102によるアクセスのために読み出しバッファ110に配置される。

    比較的低いコードレートにおいては、ブロックコードコーダ112とレートコンパチブルエンコーダ124の組み合わせ由来の、外部ブロックコードおよび内部畳み込みコードの連結により、格納されたデータのインテグリティが改善し、訂正可能なデータの再生確度が増加するはずである。 その効果は、ビットエラーレート(BER)の低下により観察することができる。 BERの改善を用いて、より価値の高いデータはより高いリダンダンシーでエンコードし、より価値の低いデータはより低いリダンダンシーでエンコードするように使用可能なメモリを割り当てることができる。 例えば、ファームウェアなどのプログラムデータ、オペレーティングシステムもしくは他のプログラムデータは、音楽ファイルなどのアプリケーションデータよりも、より高いリダンダンシーでエンコードすることができる。 別の例においては、図4に関連して後に記述されるように、メモリアレイ108の領域へと向かうデータの信頼性がより低いと識別されるものほど、このデータを、相対的により低いレートの内部コードと連結させることができる。 例えば、内部コードのリダンダンシーおよびエラー訂正能力を増加させるために、パンクチャリング量を減少させるか、または、パンクチャリングを完全に無効にすることができる。

    図2は、畳み込みエンコードデータのためのエンコーダ200の一例を示し、これはレートコンパチブルエンコーダの一例である。 エンコーダ200は、m/nコードレートが1/2である畳み込みコードを使用する。 このエンコーダは、シフトレジスタ202、第一のモジュロ−2加算器204、第二のモジュロ−2加算器206を含む。 モジュロ−2加算器204、206は、排他的OR(XOR)論理を実施する。 入力データビットXが、シフトレジスタ202にシリアルに提供される。 シフトレジスタ202およびモジュロ−2加算器204、206は、生成多項式Y 、Y (各々モジュロ−2加算器204、206による)を実施する。 生成多項式は、畳み込みエンコーダの伝達関数を特徴づける。 種々の生成多項式が使用されうる。 さらには、必要に応じて、3つ以上の生成多項式を計算することができ、それに対応して、コードレートが例えば1/3、1/4などに減少する。

    図3は、データストリームを示す。 例えば、図1に関連して、これらデータストリームは、パンクチャラブルコードエンコーダ114、パンクチャリング回路116、メモリアレイ108への格納およびそこからの取出し、挿入回路118、ならびにパンクチャラブルコードデコーダ120の周辺のパスにおいて生じるデータストリームに対応しうる。 最上部の第一の例においては、データストリームは、1/2のコードレートを使用して畳み込みエンコードされ、パンクチャリングされることなく格納される。 中間の第二の例においては、データストリームは、1/2のコードレートを使用して畳み込みエンコードされ、2/3のコードレートを実現するようにパンクチャリングされる。 下部の第三の例においては、データストリームは、1/2のコードレートを使用して畳み込みエンコードされ、4/5のコードレートを実現するようにパンクチャリングされる。

    最上部の第一の例に戻ると、ブロックコードエンコーダ112の出力由来のデータストリームx ,x ,x ,x ,・・・は畳み込みエンコードされて、2つの出力データストリームy ,y ,y ,y ,・・・とy ,y ,y ,y ,・・・が生成される。 これらの二つの出力データストリームは、パンクチャリングされることなくメモリアレイ108に格納される。 データがメモリアレイ108から取り出さされるとき、パンクチャラブルコードデコーダ120は、いかなるデータの挿入もなく、y ,y ,y ,y ,・・・とy ,y ,y ,y ,・・・のデータストリームをデコードすることが可能である。

    中間の第二の例においては、データストリームx ,x ,x ,x ,・・・は畳み込みエンコードされて、2つの出力データストリームy ,y ,y ,y ,・・・とy ,y ,y ,y ,・・・が生成される。 これら2つのデータストリームは、その後、y ,y ,y ,y ,・・・とy ,y ,・・・にパンクチャリングされて、メモリアレイ108に格納される。 データ読み出しのために、パンクチャドデータy ,y ,y ,y ,・・・とy ,y ,・・・はメモリアレイ108から取り出され、削除されたデータと置換するためにデコードを阻害しないダミー値が挿入されるか、または消去ポインタが使用される。 挿入が行われたパンクチャドデータ、y ,y ,y ,y ,・・・とy ,−,y ,−,・・・は、パンクチャラブルコードデコーダ120によってデコードされて、もとのオリジナルデータストリームx ,x ,x ,x ,・・・にデコードされる。 ダッシュ記号(−)は、消去されたデータを示す。

    下部の第三の例においては、データストリームx ,x ,x ,x ,・・・は畳み込みエンコードされて、2つの出力データストリームy ,y ,y ,y ,・・・とy ,y ,y ,y ,・・・が生成される。 これら2つのデータストリームは、その後、y ,y ,y ,y ,・・・とy ,・・・にパンクチャリングされて、メモリアレイ108に格納される。 データ読み出しのために、パンクチャドデータy ,y ,y ,y ,・・・とy ,・・・はメモリアレイ108から取り出され、削除されたデータと置換するためにデコードを阻害しないダミー値が挿入されるか、または消去ポインタが使用される。 挿入が行われたパンクチャドデータ、y ,y ,y ,y ,・・・とy ,−,−,−,・・・は、パンクチャラブルコードデコーダ120によってデコードされて、もとのオリジナルデータストリームx ,x ,x ,x ,・・・にデコードされる。

    図3に示されるように、レートコンパチブルコードは、コードレートを操作することによって、データを種々の密度で格納することを可能にする。 したがって、比較的高いリダンダンシーが望まれる場合には、比較的低いコードレートを使用することができる。 これによって、メモリデバイス100(図1)が配置された後に、記憶容量と格納の信頼性との間でのトレードオフを実現させることが可能になる。 従って、例えば、ユーザは、より信頼性の高いデータ格納か、もしくはより多くのデータ格納かの間で選択することが可能である。 別の例においては、レートコンパチブルコードに対して使用される、畳み込みコードの拘束長kが変化しうる。 拘束長kは、畳み込みエンコーダの伝達関数の長さのことを称する。 より信頼性の高いデータ格納とデコードの複雑性との間でトレードオフを生じさせることができる。 チップの選択部分を、例えば、比較的高いコードレートか、または比較的低いコードレート(およびその中間)へと、前もって割り当てることができる。 別の例においては、ファームウェア、オペレーティングシステムなどのためのプログラムデータは、音楽もしくは文書のためのデータなどのアプリケーションデータよりも、より価値の高いものと考えられうる。 しばしば、格納されているデータのタイプは、ヘッダを読み出すことによって識別可能である。 したがって、より価値の高いデータを、より低いレートのコードによって提供されるより高いリダンダンシーとともに格納することができる。 ページ、ブロック、パンクチャパターンなどの適用可能マッピングは、不良ブロックテーブルデータをも格納するデータのブロックなどとして、永続的メモリのリファレンス領域に格納されうる。

    別の例においては、m/nコードレートが1/4である畳み込みコードが生成される。 パンクチャリングされていないコードレート1/4を有するこの畳み込みコードは、リファレンス情報を格納するために使用される。 他のデータを格納する場合、この畳み込みコードは、1/3、もしくは1/2などの異なるコードレートへとパンクチャリングされる。 一実施形態においては、パンクチャリング量は、図4に関連して後に記述されるように、選択可能である。 さらには、メモリアレイ108(図1)は、複数レベルセルを有し、(パンクチャド、もしくはパンクチャリングされていない)畳み込みコード化されたデータが、セルの複数レベルにわたって散在しうる。

    一実施形態においては、コードレートを、メモリデバイス100(図1)が場に配置された後にでも変化させることができる。 しかしながら、エンコードされたデータのページサイズおよびブロックサイズは、コードレートとともに変化し、したがって、開始もしくは停止アドレスの指標であり、どのパンクチャパターンが選択されるかなどを示すメモリマップも、適切に調整され、取出しのために永続的に格納されるべきであることに留意されたい。 拘束長および/もしくは生成多項式が変化する場合、後の取出しのためにそれらを格納することもできる。 コードレートに応じて、ブロックが消費するメモリの物理的スペースの量は変化するため、ブロックを消去するときにこれを割り当てることができる。 図4は、コードレートの動的選択の一例を示す。

    図4は、NANDフラッシュメモリデバイス中へのデータ格納のためのコードレートを動的に選択するためのプロセスを概略的に示すフローチャートである。 例示されたプロセスは、本発明の趣旨と範囲から逸脱することなく、種々の方法で改変することが可能であることが当業者には理解されるであろう。 例えば、別の実施形態においては、例示されたプロセスの種々の部分を組み合わせたり、別のシーケンスに再配置したり、除去したりすることが可能である。 一実施形態においては、NANDフラッシュメモリデバイスの種々のブロックを、最初は、比較的高いコードレート(低いリダンダンシー)で開始させ、消耗するにつれて、より多くのリダンダンシーを得るためにコードレートを低下させることができる。

    NANDフラッシュメモリデバイスにおいては、メモリは、複数ページの比較的大きなブロックで消去され、典型的には、データは一度に1ページ分書き込まれ、一度に1ページから読み出される。 このプロセスは、ブロックを消去するコマンド、または消去されたブロックの一部をプログラムする(410)コマンドを受信することによって開始する。

    このプロセスでは、特定のブロックのために使用されているコードレートにおいて、限界条件の指示が存在しているかどうかが決定される(420)。 限界条件は、ブロックECCによって訂正されているビット数の増加によって、示されうる。 例えば、ブロックECCが、さらなるエラーを訂正することが不可能になる前までに使用していいビットが1ビット以内であることを示す場合には、そのページおよび/もしくはブロックは、パンクチャリングが減少したことによりリダンダンシーが増加したために劣化し、減衰したと考えることができる。 このことは、ブロックの寿命を延長させ、メモリデバイス100(図1)の耐用期間を増加させうる。 コードレートを動的に選択することが望ましい他の状況も存在する。 先に言及された例の他に、メモリデバイス100のメモリアレイにおいて、どの程度のメモリが使用可能かに応じてコードレートは選択されうる。 図4に示されるプロセスは、一例に過ぎない。

    フラッシュメモリチップは、消耗メカニズムを呈する。 例えば、メモリデバイス100(図1)を、最初のうちは比較的高いコードレート(例えば4/5)で動作するように製造中に構成することができる。 メモリデバイス100が消耗するにつれて、メモリデバイス100が信頼性を維持するようにコードレートを低減させることができる。 このブロックECCデコーディングは読み出し動作の間に実施されることに留意されたい。 一実施形態においては、ブロックが消去される前に、ブロックが読み出され、このブロックのページに対するブロックECCがチェックされる。 別の実施形態においては、ブロックのページは、通常の読み出し動作の間に、継続的に読み出される。

    ブロックECCが、限界条件を示す場合には、コードレートは減少する(430)。 これは、次組のデータのパンクチャリング量を減少させることによって達成されうる。 例えば、コードレートは、2/3から1/2(パンクチャリングしない)へと調製されうる。

    ブロックECCが限界条件を示さない場合には、それらメモリ位置へプログラムされるべき次組のデータに対して、直前のコードレートを使用し続けるように(440)、プロセスは進行しうる。

    一実施形態は、データを受信するよう構成され、受信されたデータをパンクチャリングするように構成されたエンコーダと、パンクチャドデータを格納するよう構成された一つ以上のメモリアレイと、パンクチャドデータをデコードするよう構成されたデコーダとを含む装置である。

    一実施形態は、一つ以上のメモリアレイを有する不揮発性メモリデバイスにデータを格納するための一方法である。 その方法は、一つ以上のメモリアレイに格納するよう意図されたデータを受信するステップ、パンクチャドデータを生成するようデータをエンコードするステップ、および、パンクチャドデータを一つ以上のメモリアレイに格納するステップを含む。

    一実施形態は、一つ以上のメモリアレイを有する不揮発性メモリデバイスに格納された、パンクチャドデータを取り出す一方法である。 その方法は、メモリデバイスの一つ以上のメモリアレイからパンクチャドデータを取り出すステップと、パンクチャドデータに関連するパンクチャパターンに従って、パンクチャドデータをデコードするステップとを含む。

    一実施形態は、不揮発性ソリッドステートメモリデバイス中のメモリスペースのブロックに対してコードレートを決定する一方法である。 その方法は、メモリデバイスのデータのブロックの少なくとも一部に対して、限界条件が存在するかどうかを決定するステップと、限界条件が存在する場合に、そのブロックで使用されるコードレートを減少させるステップとを含む。

    種々の実施形態が上述されてきた。 これらの具体的な実施形態に関して説明されてきたが、この説明は例示的なものであって、限定することを意図するものではない。 添付された請求項で定義されるような本発明の真の趣旨および範囲から逸脱することなく、種々の改変および適用法が当業者にとっては想到することができるものである。

    QQ群二维码
    意见反馈