(57)【要約】【課題】訂正能力を向上させる技術、及び圧縮技術を提供すること。【解決手段】データを受け取り、特定パターンのデータ列が含まれるか否かを確認する監視部２２−２と、データ列が含まれると判断するとページのサイズを把握し、前記データの全データ量と前記サイズとに応じて、前記ページ毎に空きエリアを設けつつ、このページ毎に格納される前記データのデータ量が均一となるよう設定する制御部２２−３と、を含むプロセッサ２２と、前記空きエリアに、ページ毎に格納される前記データの一部と前記ページの管理情報とに基づき拡張パリティを生成するパリティ生成部２６とを具備し、前記制御部は、前記ページ毎、前記データの一部を格納しつつ前記空きエリアに前記拡張パリティを格納する。【選択図】図８
2013191169.tif 000002
【特許請求の範囲】
【請求項１】
データを受け取り、このデータ内に所定のデータ長を超える第１の特定パターンのデータ列が含まれるか否かを確認する監視部と、前記第１の特定パターンのデータ列が含まれると判断すると、前記データを保持可能とするメモリセルがマトリクス状に配置されたメモリセルアレイにおいて前記データが一括で書き込まれる単位であるページのサイズを把握し、前記データの全データ量と前記サイズとに応じて、前記ページ毎に空きエリアを設けつつ、このページ毎に格納される前記書き込みデータのデータ量が均一となるよう設定する制御部と、を含むプロセッサと、
前記空きエリアに、ページ毎に格納される前記データの一部と前記ページの管理情報とに基づき拡張パリティを生成するパリティ生成部と
を具備し、
前記制御部は、前記ページ毎、前記書き込みデータの一部を格納しつつ前記空きエリアに前記拡張パリティを格納する
ことを特徴とするメモリコントローラ。
【請求項２】
前記プロセッサは、更に前記データを圧縮する圧縮部を含み、
前記監視部は、前記データ内に第２の特定パターンのデータ列があると判断すると、前記制御部は前記圧縮部に前記第２の特定パターンのデータ列を圧縮するよう制御する
ことを特徴とする請求項１記載のメモリコントローラ。
【請求項３】
前記プロセッサは、更に生成部を含み、
前記監視部によって前記データ列に前記第２の特定パターンのデータ列があると判断されると、前記生成部は前記第２の特定パターンのデータ列の位置情報を保持するポイント格納領域を前記管理情報が格納される管理データ格納領域に生成する
ことを特徴とする請求項２記載のメモリコントローラ。
【請求項４】
前記制御部は、前記ページを２以上の複数セクションに分割し、前記セクションに所定のワード毎にアドレスを付す
ことを特徴とする請求項３記載のメモリコントローラ。
【請求項５】
データが一括で書き込まれる単位であるページのサイズを把握し、書き込みデータの全データ量と前記サイズに応じて、前記書き込みデータが格納される最後の前記ページに一定以上の空きエリアがあると判断すると、論理アドレス、前記データ、及びこのデータに後続し且つ前記空きエリア分の特定パターンのデータ列で構成されるデータ群を生成し、前記最後の前記ページに一定以上の空きエリアがない場合、前記論理アドレス、及び前記データで構成されるデータ群を生成する制御部と、
前記制御部が生成した前記書き込みデータ及び前記データ列を出力するデータ出力部と
を具備することを特徴とするホスト機器。
【請求項６】
データが一括で書き込まれる単位であるページのサイズを把握し、前記データの全データ量と前記サイズとに応じて、前記ページ毎に空きエリアを設けつつ、このページ毎に格納される前記書き込みデータのデータ量が均一となるよう設定し、各々の前記ページに前記全データ量の一部及び所定のデータ長を超える特定パターンのデータ列を生成する制御部と、
前記制御部が生成した前記ページに格納する前記データ列を出力するデータ出力部と
を
具備することを特徴とするホスト機器。
【請求項７】
外部とデータの授受を行うデータ入出力部と、
前記データを圧縮、又は伸長するエンコーダ／デコーダ部と、
前記エンコーダ／デコーダ部で前記データにつき圧縮するか非圧縮とするか選択するメモリコントローラと、
を具備し、
圧縮した場合、前記メモリコントローラは、圧縮した前記データ、又は前記圧縮した前記データ及び前記非圧縮の前記データの両者、いずれかを前記データ保持可能な半導体メモリに転送し、
圧縮しない場合、前記非圧縮の前記データを前記半導体メモリに転送する
ことを特徴とするメモリコントローラ。
【請求項８】
一括してデータを書き込む単位であるページ毎に前記データを保持可能な記憶部と、
書き込みする第１データ列の容量情報と、前記記憶部の前記ページのサイズと、に応じて前記第１データ列の複数箇所に無効データ列を挿入する制御部と、
前記データにおいて、前記無効データ列で区切られた単位である第２データ列及び管理情報で構成される第３データ列に基づいて拡張パリティを生成するパリティ生成部と
を具備し、
前記制御部は、前記拡張パリティを、前記無効データ列に挿入することを特徴とするメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、ＥＣＣ（Error correction code）回路、及び圧縮技術に関する。
【背景技術】
【０００２】
メモリカード（ＮＡＮＤ型フラッシュメモリ）からデータ読み出しを行う際、読み出したいセルの値が正しく読み出せない場合がありこれがビットエラーとして現れる。このビットエラーを未然に防ぐため、メモリカード内にエラー訂正を行うＥＣＣ回路を設ける。ＥＣＣ回路は、ユーザデータ（書き込みデータ）に基づきパリティビットを生成する。
【０００３】
また、メモリセルアレイ内には、ユーザデータが格納されるユーザエリアの他、このユーザデータに基づき生成されたパリティビットが格納される管理データ領域が設けられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２７８６３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、訂正能力を向上させる技術、及び圧縮技術を提供する。
【課題を解決するための手段】
【０００６】
実施形態に係るメモリコントローラによれば、書き込みデータを受け取り、この書き込みデータ内に所定のデータ長を超える特定パターンのデータ列が含まれるか否かを確認する監視部と、前記特定パターンのデータ列が含まれると判断すると、前記データを保持可能とするメモリセルがマトリクス状に配置されたメモリセルアレイにおいて前記データが一括で書き込まれる単位であるページのサイズを把握し、前記書き込みデータの全データ量と前記サイズとに応じて、前記ページ毎に空きエリアを設けつつ、このページ毎に格納される前記書き込みデータのデータ量が均一となるよう設定する制御部と、を含むプロセッサと、前記空きエリアに、ページ毎に格納される前記書き込みデータの一部と前記ページの管理情報とに基づき拡張パリティを生成するパリティ生成部とを具備し、前記制御部は、前記ページ毎、前記書き込みデータの一部を格納しつつ前記空きエリアに前記拡張パリティを格納する。
【０００７】
また、実施形態に係るホスト機器によれば、データが一括で書き込まれる単位であるページのサイズを把握し、書き込みデータの全データ量と前記サイズに応じて、前記書き込みデータが格納される最後の前記ページに一定以上の空きエリアがあると判断すると、論理アドレス、前記データ、及びこのデータに後続し且つ前記空きエリア分の特定パターンのデータ列で構成されるデータ群を生成し、前記最後の前記ページに一定以上の空きエリアがない場合、前記論理アドレス、及び前記データで構成されるデータ群を生成する制御部と、前記制御部が生成した前記書き込みデータ及び前記データ列を出力するデータ出力部とを具備する。
【０００８】
また、実施形態に係るメモリ装置によれば、一括してデータを書き込む単位であるページ毎に前記データを保持可能な記憶部と、書き込みする第１データ列の容量情報と、前記記憶部の前記ページのサイズと、に応じて前記第１データ列の複数箇所に無効データ列を挿入する制御部と、前記データにおいて、前記無効データ列で区切られた単位である第２データ列及び管理情報で構成される第３データ列に基づいて拡張パリティを生成するパリティ生成部とを具備し、前記制御部は、前記拡張パリティを、前記無効データ列に挿入する。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係るメモリシステムの概念図。
【図２】第１実施形態に係るメモリカードのピンに割り当てられた信号を示す概念図。
【図３】第１実施形態に係るメモリカードの構成例。
【図４】第１実施形態に係るメモリセルアレイの概念図。
【図５】第１実施形態に係るメモリセルトランジスタの閾値分布。
【図６】第１実施形態に係るホスト機器から転送されるデータのフォーマット例。
【図７】図７（ａ）、図７（ｂ）は第１実施形態のパリティの生成手順を示す概念図。
【図８】第１実施形態に係るパリティの生成方法を示したフローチャート。
【図９】第１実施形態のメモリセルアレイの概念図。
【図１０】第１実施形態の変形例１に係るメモリセルアレイの概念図。
【図１１】第１実施形態の変形例２に係るメモリセルアレイの概念図。
【図１２】第２実施形態に係るＭＰＵの構成例。
【図１３】第２実施形態に係るデータ列を示す概念図。
【図１４】第２実施形態に係るデータ列の圧縮方法を示す概念図。
【図１５】第２実施形態に係るデータ列の圧縮方法を示す概念図。
【図１６】第２実施形態に係るエンコーダの構成例。
【図１７】図１７（ａ）、図１７（ｂ）は第２実施形態に係るパリティの生成手順を示す概念図。
【図１８】第２実施形態に係るＭＰＵの構成例。
【図１９】図１９（ａ）、図１９（ｂ）は第２実施形態に係るデータ列の圧縮方法を示す概念図。
【図２０】第２実施形態に係るデータ列の圧縮方法を示す概念図。
【図２１】第２実施形態に係るデータ列の圧縮方法を示す概念図。
【図２２】第３実施形態に係るメモリシステムの概念図。
【図２３】第３実施形態に係るＭＰＵの構成図。
【図２４】図２４（ａ）、図２４（ｂ）、及び図２４（ｃ）は第３実施形態に係る圧縮方法の概念図。
【発明を実施するための形態】
【００１０】
以下、本実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。ただし、図面は模式的なものであり、厚みと平面寸法との関係、各層の厚みの比率等は現実のものとは異なることに留意すべきである。従って、具体的な厚みや寸法は以下の説明を参酌して判断すべきものである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることは勿論である。
【００１１】
[第１の実施形態]  
本実施形態では、各ページに格納されるユーザデータ（書き込みデータ）を読み出す際、各ページのユーザデータ及び拡張パリティを用いることで読み出し時の訂正能力を向上させるものである。以下、第１の実施形態に係る構成について説明する。なお、本実施形態では書き込みの際に拡張パリティと、通常パリティ（一般的に生成される）とが生成される。
【００１２】
１．＜メモリシステムの全体構成について＞  
図１を用いて第１の実施形態に係るホスト機器１及びこれに制御されるメモリカード２について説明する。図１は、本実施形態に係るホスト機器１及びメモリカード２を示したメモリシステムの概念図を示し、メモリカードにはＳＤTMメモリカード（以下、単にメモリカード２と呼ぶ）を一例として挙げる。
【００１３】
ホスト機器１は、ホストバスインタフェース（以下、単にホストバス５と呼ぶことがある）５を備え、このホストバス５を用いてメモリカード２に制御データ、論理アドレス、及びＳＤコマンドを転送する。すなわち、ホスト機器１はメモリカード２を制御可能とする。
【００１４】
またホスト機器１は、メモリカード２とユーザデータ（書き込みデータ、読み出しデータ）の送受信をする。このホスト機器１は、メモリカード２に対しアクセスを行うためのハードウェアおよびソフトウェアを備えている。
【００１５】
メモリカード２は、ＮＡＮＤ型フラッシュメモリ１０（フラッシュメモリ１０と呼ぶことがある）、このＮＡＮＤ型フラッシュメモリ１０を制御するコントローラ２０、及び上記ホスト機器１と制御データ、ＳＤコマンド、及びデータ等の送受信を行うＮＡＮＤインタフェースＩＦ（後述するＳＤインタフェース２１、図１中の金属ピン１〜９に相当）を備える。
【００１６】
メモリカード２は、ホスト機器１に接続された時に電源供給を受けて動作し、ホスト機器１からのアクセスに応じた処理を行う。具体的には、ホスト機器１の要求に従ってＮＡＮＤ型フラッシュメモリ１０にデータを保存し、また保存したデータを読み出してホスト機器１に出力する。
【００１７】
このようにこれら両者は、ＮＡＮＤ型フラッシュメモリへのデータ書き込み読み出し及び消去、並びにＮＡＮＤ型フラッシュメモリからホスト機器１へのデータの読み出しが出来るよう、ホスト機器１とメモリカード２とは互いに接続可能とされる。
【００１８】
以下、図１を用いてホスト機器１及びメモリカード２の構成例について説明する。
【００１９】
１−１．＜ホスト機器１について＞  
ホスト機器１は、上述したように制御データ、ＳＤコマンド、アドレス、ユーザデータなどをメモリカード２に出力する。以下、ユーザデータについて説明する。本実施形態に係るホスト機器１は、メモリカード２に転送するユーザデータのデータサイズと、後述するメモリセルアレイのページサイズとから、ユーザデータが書き込まれる最後のページの末尾に空き容量があると認識すると、ホストバス５を介してこのユーザデータの他、例えば連続する“１”で構成されるデータ列（以下、Ｎｕｌｌデータと呼ぶこともある。）をメモリカード２に出力する。これに対し、最後のページの末尾に空き容量がないと認識すると、上記Ｎｕｌｌデータは生成せず、メモリカード２にＮｕｌｌデータを含まないユーザデータを出力する。
【００２０】
また、メモリカード２のページサイズは、後述するＭＰＵ２２がホスト機器１に通知するものとする。また、この“１”データ列は、所定のデータ長を有する。
【００２１】
１−２．＜メモリカード２の構成について＞  
上記したようにメモリカード２は、ホスト機器１のバスインタフェース５と情報（ユーザデータ、アドレス、ＳＤコマンド、及び制御データなど）の授受を行うインタフェースＩＦを備えている。
【００２２】
メモリカード２は、ホスト機器１に設けられたスロットに対して挿抜可能なように形成される。そしてメモリカード２をホスト機器１に挿入することで複数の信号ピンが、コントローラ２０と電気的に接続される。第１ピン乃至第９ピンに対する信号の割り当ては、例えば図２に示すようになっている。図２は、第１ピン乃至第９ピンと、それらに割り当てられた信号とを示す表である。
【００２３】
データ０乃至データ３は、第７ピン、第８ピン、第９ピン、および第１ピンにそれぞれ割り当てられている。また、第１ピンはカード検出信号に対しても割り当てられている。さらに、第２ピンはＳＤコマンドに割り当てられ、第３ピンおよび第６ピンは接地電位Ｖｓｓに、第４ピンは電源電位Ｖｄｄに、第５ピンはクロック信号に割り当てられている。
【００２４】
ホスト機器１に設けられたホストコントローラ（図示せず）は、これら第１ピン乃至第９ピンを介してメモリカード２内のコントローラ２０と各種信号およびデータを通信する。例えば、メモリカード２にデータが書き込まれる際には、ホスト機器１内に設けられたコントローラは、書き込みコマンドを、第２ピンを介してコントローラ２０にシリアルな信号として送出する。このとき、コントローラ２０は、第５ピンに供給されているクロック信号に応答して、第２ピンに与えられる書き込みコマンドを取り込む。
【００２５】
ここで、前述したように、書き込みコマンドは、第２ピンのみを利用してコントローラ２０にシリアルに入力される。ＳＤコマンドの入力に割り当てられている第２ピンは、図２に示すように、データ３用の第１ピンと接地電位Ｖｓｓ用の第３ピンとの間に配置されている。複数の信号ピンとそれに対するホストバスインタフェース５は、ホスト機器１内のホストコントローラとメモリカード２とが通信するのに使用される。
【００２６】
これに対し、フラッシュメモリ１０とコントローラ２０との間の通信は、後述するＮＡＮＤ型フラッシュメモリ用のＮＡＮＤバスインタフェース（以下、単にＮＡＮＤバスと呼ぶことがある）２５によって行われる。したがって、ここでは図示しないが、フラッシュメモリ１０とコントローラ２０とは例えば８ビットの入出力（Ｉ／Ｏ）線により接続されている。
【００２７】
例えば、コントローラ２０がフラッシュメモリ１０にデータを書き込む際には、コントローラ２０は、これらＩ／Ｏ線を介してデータ入力コマンド８０Ｈ、カラムアドレス、ページアドレス、データ、およびプログラムコマンド１０Ｈ（或いはキャッシュプログラムコマンド１５Ｈ）をフラッシュメモリ１０に順次入力する。ここで、コマンド８０Ｈの“Ｈ”は１６進数を示すものであり、実際には“１０００００００”という８ビットの信号が、８ビットのＩ／Ｏ線にパラレルに与えられる。つまり、このＮＡＮＤバスインタフェース２１では、複数ビットのＮＡＮＤコマンドがパラレルに与えられる。
【００２８】
また、ＮＡＮＤバスインタフェース２５では、フラッシュメモリ１０に対するＮＡＮＤコマンドとデータが同じＩ／Ｏ線を共用して通信されている。
【００２９】
次に、図３を用いてメモリカード２が備えるＮＡＮＤ型フラッシュメモリ１０及びコントローラ２０の構成の詳細について説明する。
【００３０】
１−１−１．＜コントローラ２０の構成について＞  
まず図３を用いてコントローラ２０について説明する。図３に示すようにコントローラ２０は、ＳＤインタフェース２１（図中、ＳＤ Ｉ／Ｆ２１と表記）、ＭＰＵ（micro processing unit）２２、ＲＯＭ（read only memory）２３、ＲＡＭ（random access memory）２４、ＮＡＮＤインタフェース２５（図３中、ＮＡＮＤ Ｉ／Ｆ２５と表記）、ＥＣＣ回路２６、レジスタ２７、及びエンコーダ２８を含んでいる。これらは、同一の半導体基板上に集積形成される。またＮＡＮＤ型フラッシュメモリ１０とコントローラ２０は、同一の半導体基板上に形成されても良いし、別々の半導体基板上に形成されても良い。
【００３１】
ＳＤインタフェース２１は、コントローラ２０とホスト機器１との間のインタフェース処理を行う。上述したようにＳＤインタフェース２１は、ホストバス５を介してホスト機器１から、例えばＳＤコマンド、（論理）アドレス、及び書き込みデータ等を受信する。次いでＳＤインタフェース２１は、受信したＳＤコマンドをＭＰＵ２２に転送し、また（論理）アドレス及び書き込みデータを例えばＲＡＭ２４に格納する。また、ＳＤインタフェース２１は、ＭＰＵ２２の命令に従ってホスト機器１に対して読み出しデータを出力する。
【００３２】
ＭＰＵ２２はメモリカード２全体の動作を制御する。具体的にはＭＰＵ２２が、例えばメモリカード２が電源供給を受けたときに、ＲＯＭ２３に格納されているファームウェア（制御プログラム）をＲＡＭ２４上に読み出して所定の処理を実行することにより、各種のテーブルをＲＡＭ２４上に作成する。また、ＭＰＵ２２は、ホスト機器１から書き込みコマンド、読み出しコマンド、消去コマンドを受け取り、ＮＡＮＤ型フラッシュメモリ１０に対して所定の処理を実行する。
【００３３】
またＭＰＵ２２は、ホスト機器１の命令に従って、ＮＡＮＤ型フラッシュメモリ１０の動作を制御する。より具体的には、ＮＡＮＤ型フラッシュメモリ１０に対するデータの書き込み、読み出し、消去動作を制御し、また読み出しデータについてのエラー訂正や、書き込みデータについてのパリティの生成等も行う。そのためＭＰＵ２２は、例えば上記ＮＡＮＤフラッシュメモリ１０の物理状態（例えば、何処の物理ブロックアドレスに、何番目の論理セクタアドレスデータが含まれているか、あるいは、何処のブロックが消去状態であるか）を管理する。
【００３４】
また図３に示すように、ＭＰＵ２２は監視部２２−１を備える。監視部２２−１は、ＲＡＭ２４内に一時保持され、ホスト機器１から供給された書き込みデータ内に所定値を超えた連続する“１”データ列が存在するか否かを確認する。例えば、監視部２２−１がこの書き込みデータ内に所定値を超えた連続する“１”データ列が含まれると判断した場合（後述するデータＡ、データＢ）、ＭＰＵ２２は書き込みデータの内、この“１”データ列が連続する列をＮｕｌｌデータ（Ｎｕｌｌ領域）と判断する。この場合、ＭＰＵ２２は、後述する管理データ（メモリセルアレイ１１が保持する、例えば各ページの不良情報など）とユーザデータとで構成されるデータ群に基づいてパリティビットを生成し、前述のＮｕｌｌデータで構成される領域に、生成したパリティ情報を上書きし、その後（ユーザデータ＋拡張パリティ）で構成される書き込みデータをＮＡＮＤフラッシュメモリ１０に転送する。
【００３５】
これに対し監視部２２−１が一定値を超えた連続する“１”データ列が書き込みデータ内に含まれないと判断した場合（後述するデータＣ）、ＭＰＵ２２は、ホスト機器１から転送されたユーザデータを、論物変換（論理−物理変換）したアドレスに従ってメモリセルアレイ１１に書き込む。またデータＡ、Ｂ及び、Ｃの書き込み時、ＭＰＵ２２はエンコーダ２８を用いてユーザデータのスクランブルを行う。ユーザデータのスクランブルについては後述する。
【００３６】
また、ホスト機器１からデータの読み出し指示を受けた場合、ＭＰＵ２２はどちらのパリティを用いて誤り訂正を行うか判断する。つまり、通常パリティ及び拡張パリティを生成した場合、この拡張パリティを用いて誤り訂正を行うか、それとも通常パリティを用いて誤り訂正を行うかは、パリティビットのビット長の大きい方を選択して用いる。またＭＰＵ２２は書き込みした（ユーザデータ＋拡張パリティ）のデータ列のうち、拡張パリティを元の“１”データ列に変換し、（ユーザデータ＋“１”データ列）をホスト機器１に転送する。
【００３７】
ＲＯＭ２３は、ＭＰＵ２２により制御される制御プログラム等を格納する。
【００３８】
ＲＡＭ２４は、ＭＰＵ２２の作業エリアとして使用され、制御プログラムや各種のテーブル（表）を記憶する。具体的には、論物変換テーブルを保持する。論物変換テーブルとは、ホスト機器１から転送される論理アドレスをメモリセルアレイ１１のどこに書き込むかを示す物理アドレスに変換する対応表である。この論物変換テーブルは、メモリセルアレイ１１のブロックＢＬＫの使用状況に応じてその都度変化する値である。
【００３９】
ＮＡＮＤインタフェース２５は、メモリントローラ２０とＮＡＮＤ型フラッシュメモリ１０との間のインタフェース処理を行う。すなわちＮＡＮＤインタフェース２５はＭＰＵ２２の命令に従って、ＭＰＵ２２によって発行された命令（書き込み命令、読み出し命令、消去命令等）、物理アドレス、及び書き込みデータ等をＩ／Ｏバッファ１５へ出力する。またＩ／Ｏバッファ１５から供給される読み出しデータを受け取り、ＲＡＭ２４へと転送する。
【００４０】
ＥＣＣ回路２６は、データのエラー訂正を行う。より具体的にはＥＣＣ回路２６は、ＮＡＮＤフラッシュメモリ１０から読み出したページデータにつき、エラーの検出を行い、エラーが検出された場合にはエラー訂正を行う。またデータの書き込み時には、書き込みデータに基づきエラー訂正に必要なパリティ（通常パリティ）を生成し、また書き込みデータ及び管理データで構成されるデータ群に基づきエラー訂正に必要なパリティ（拡張パリティ）を生成する。
【００４１】
レジスタ２７は、ＣＳＲ、ＣＩＤ、ＲＣＡ、ＤＳＲ、ＣＳＤ、ＳＣＲ、ＯＣＲ等各種レジスタを有する。  
エンコーダ２８は、書き込みデータにつき、スクランブル処理を施す。後述するが、疑似乱数発生回路及びスクランブル回路を用いて乱数を発生させる。
【００４２】
１−１−２．＜ＮＡＮＤ型フラッシュメモリ１０の構成について＞  
次に図３を用いてＮＡＮＤ型フラッシュメモリ１０について説明する。図示するようにＮＡＮＤ型フラッシュメモリ１０は、メモリセルアレイ１１、ロウデコーダ１２、ページバッファ１３、電圧発生回路１４、Ｉ／Ｏバッファ１５、制御部１６、及びセンスアンプ１７を備える。これらは、同一の半導体基板上に集積形成されている。
【００４３】
メモリセルアレイ１１は、複数のメモリセルトランジスタＭＴを備える。このメモリセルトランジスタＭＴはホスト１から転送されたユーザデータ、拡張パリティ、及び管理データ（例えば、通常パリティ、及び上述したページ単位の不良情報など）を記憶する。図４を用いてメモリセルアレイ１１の構成について説明する。  
図示するようにメモリセルアレイ１１は、複数のブロックＢＬＫ（ＢＬＫ０〜ＢＬＫｍ（ｍは１以上の自然数））を備え、これらブロックＢＬＫ０〜ＢＬＫｍの各々は、複数のＮＡＮＤストリング１１−１を備えている。ＮＡＮＤストリング１１−１の各々は、例えば６４個のメモリセルトランジスタＭＴと、選択トランジスタＳＴ１、ＳＴ２とを含んでいる。このＮＡＮＤストリング１１−１は対応するビット線ＢＬに接続される。
【００４４】
ビット線ＢＬ０〜ビット線ＢＬ（ｎ＋１）は全部で、例えば２×１０３×８本とされ、ビット線ＢＬ（ｎ＋２）〜ビット線ＢＬ（ｓ）は全部で、例えば１２８本とされる。従って、ＮＡＮＤストリング１１−１はメモリセルアレイ１１に設けられたビット線ＢＬ本数分設けられる。上述したように図４に示すこれらＮＡＮＤストリング１１−１は、ホスト機器１から転送されたユーザデータ、及びＥＣＣ回路２６が生成する拡張パリティを保持し、またビット線ＢＬ（ｎ＋２）〜ビット線ＢＬ（ｓ）に接続されたＮＡＮＤストリング１１−１は管理データを保持する（以下、この管理データを保持する領域を管理データ格納領域と呼ぶ）。
【００４５】
ＮＡＮＤストリング１１−１を形成するメモリセルトランジスタＭＴは、半導体基板上にゲート絶縁膜を介在して形成された電荷蓄積層（例えば浮遊ゲート）と、電荷蓄積層上にゲート間絶縁膜を介在して形成された制御ゲートとを有する積層ゲートを備えた、ＦＧ型のｎチャネルＭＯＳトランジスタである。なお、メモリセルトランジスタＭＴは、電荷蓄積層が絶縁物で形成されたＭＯＮＯＳ構造を備えていても良い。またＮＡＮＤストリング１１−１内のメモリセルトランジスタＭＴの個数は６４個に限られず、８個、１６個、３２個、１２８個、または２５６個等であってもよく、その数は限定されるものではない。ＮＡＮＤストリング１１−１内においてメモリセルトランジスタＭＴは、隣接するもの同士でソース、ドレインを共有している。そして、選択トランジスタＳＴ１、ＳＴ２間に、その電流経路が直列接続されるようにして配置されている。直列接続されたメモリセルトランジスタＭＴの一端側のドレイン領域は選択トランジスタＳＴ１のソース領域に接続され、他端側のソース領域は選択トランジスタＳＴ２のドレイン領域に接続されている。
【００４６】
同一行にあるメモリセルトランジスタＭＴの制御ゲートは、ワード線ＷＬ（ＷＬ０〜ＷＬ６３）のいずれかに共通接続され、同一行にあるメモリセルトランジスタＭＴの選択トランジスタＳＴ１、ＳＴ２のゲート電極は、それぞれセレクトゲート線ＳＧＤ、ＳＧＳに共通接続されている。また、メモリセルアレイ１１において同一列にある選択トランジスタＳＴ１のドレインは、いずれかのビット線ＢＬ（ＢＬ０〜ＢＬｎ（ｎは２以上の自然数））に共通接続される。選択トランジスタＳＴ２のソースはソース線ＳＬに共通接続される。同一のワード線ＷＬに接続された複数のメモリセルトランジスタＭＴには一括してデータが書き込まれ、この単位をページと呼ぶ。更に、データの消去はブロックＢＬＫ単位で行われる。なお、上記したように本実施形態において１ページとは、２×１０３×８ｂｉｔのデータを保持可能とされる単位を示す。
【００４７】
１−１−１−１．＜メモリセルトランジスタＭＴの閾値分布について＞  
次に図５を用いて上記メモリセルトランジスタＭＴの閾値分布について説明する。図５は、横軸に閾値分布を、縦軸にメモリセルトランジスタＭＴの数を表したグラフを示す。図示するように、各々のメモリセルトランジスタＭＴは、例えば２値（2-levels）のデータ（１ビットデータ）を保持できる。すなわち、メモリセルトランジスタＭＴは、閾値電圧Ｖｔｈの低い順に“１”、及び“０”の２種のデータを保持できる。つまり、上記した“１”データ列とは、この閾値Ｖｔｈが低い状態を示したデータ列の事である。
【００４８】
メモリセルトランジスタＭＴにおける‘１’データの閾値電圧Ｖｔｈ０は、Ｖｔｈ０＜Ｖ０１である。‘０’データの閾値電圧Ｖｔｈ１は、Ｖ０１＜Ｖｔｈ１である。このようにメモリセルトランジスタＭＴは、閾値に応じて‘０’データ、及び‘１’データの１ビットデータを保持可能とされている。この閾値電圧は、電荷蓄積層に電荷を注入することによって変動する。また、上記メモリセルトランジスタＭＴは４値以上のデータを保持可能とされても良い。
【００４９】
１−１−２．＜周辺回路について＞  
図３に戻って周辺回路の説明を続ける。  
ロウデコーダ１２は、データの書き込み動作時、読み出し動作時、及び消去時において、Ｉ／Ｏバッファ１５を介してコントローラ２０から与えられたロウアドレスに基づいて、メモリセルアレイ１１のロウ方向を選択する。すなわち、ロウデコーダ１２はワード線ＷＬ及びセレクトゲート線ＳＧＤ、ＳＧＳを選択する。次いで、ロウデコーダ１１は、これらワード線ＷＬ、及びセレクトゲート線ＳＧＤ、ＳＧＳに適切な電圧を転送する。
【００５０】
ページバッファ１３は、データの書き込み時、Ｉ／Ｏバッファ１５から転送された書き込みデータ（ユーザデータ、通常パリティ、及び拡張パリティビット）をセンスアンプ１７に転送する。またデータの読み出し時には、センスアンプ１７によって読み出されたデータ（ユーザデータ、及び拡張パリティデータ）を、一時保持した後Ｉ／Ｏバッファ１５に出力する。
【００５１】
センスアンプ１７は、ビット線ＢＬを選択し、メモリセルトランジスタＭＴのデータを読み出し、この読み出したデータをページバッファ１３に転送する。具体的には、ロウデコーダ１２によって選択されたワード線ＷＬに接続されたメモリセルトランジスタＭＴのデータを読み出す。またデータの書き込み時には、ページバッファ１３から転送されたデータをロウデコーダ１２によって選択されたメモリセルトランジスタＭＴに書き込む。
【００５２】
電圧発生回路１４は、制御部１６の制御に従いデータの書き込み動作、消去動作、及び読み出し動作に必要な電圧を発生する。次いで、発生させたこれら動作に必要な電圧をロウデコーダ１２、及びセンスアンプ１７に供給する。
【００５３】
Ｉ／Ｏバッファ１５は、データの書き込み時には、コントローラ２０から供給された書き込みデータ、アドレス、及び書き込みコマンドを、一時的に保持する。次いで、アドレスをロウデコーダ１２へ転送し、アドレス及び書き込みコマンドを制御部１６に転送し、書き込みデータをページバッファ１３へ転送する。またデータの読み出し時には、アドレス及び読み出しコマンドを受信する。そしてアドレス及び読み出しコマンドを制御部１６に転送し、またアドレスをロウデコーダ１２に転送する。また、ページバッファ１３から受け取った読み出しデータをコントローラ２０へ出力する。
【００５４】
次に制御部１６について説明する。制御部１６は、ＮＡＮＤ型フラッシュメモリ１０全体の動作を制御する。すなわち、コントローラ２０から与えられた上記アドレス及びコマンドに基づいて、データの書き込み動作、読み出し動作、及び消去動作必要なシーケンスを実行する。
【００５５】
２．＜書き込みデータのフォーマットについて＞  
図６を用いてホスト機器１がメモリカード２に転送する書き込みデータのフォーマットについて説明する。図６に示すように、ホスト機器１が出力する書き込みデータのフレームフォーマットには、データＡ、データＢ、データＣの３種類がある。
【００５６】
２−１．＜データＡ＞  
図６に示すデータＡのフレームフォーマットは、上述したようにホスト機器１がメモリカード２に転送するユーザデータのデータサイズと、後述するメモリセルアレイのページサイズとから、ユーザデータが書き込まれる最後のページの末尾に空き容量があると認識した場合に、ホスト機器１によって生成される。
【００５７】
このデータＡは、先頭から論理アドレス、ユーザデータ、及びＮｕｌｌデータの順で構成されたフレームフォーマットを有する。つまり論理アドレスを先頭に、ユーザデータ（例えば、１枚の画像データ）、その後続にＮｕｌｌデータ列が転送される。ユーザデータのデータサイズを、例えば３５８４ｂｙｔｅとする。データＡがメモリセルアレイ１１に書き込まれる際、まずＲＡＭ２４内でＮｕｌｌ領域が拡張パリティに書き換えられた後、このユーザデータと拡張パリティから構成されるデータ列がＮＡＮＤフラッシュメモリ１０に書き込まれる。換言すれば、論理アドレスに対応するメモリセルトランジスタＭＴから、例えば連続して３５８４×８個のメモリセルトランジスタＭＴにユーザデータが書き込まれ、引き続き、拡張パリティがメモリセルトランジスタＭＴに書き込まれることになる。
【００５８】
２−２．＜データＢ＞  
データＢとは、論理アドレスを先頭として、ユーザデータ及びこのユーザデータの後続に設けられたＮｕｌｌデータの組（ユーザデータ＋Ｎｕｌｌデータ）が複数連続するフォーマットを有する。すなわちデータＢとは、ユーザデータ、Ｎｕｌｌデータ、…ユーザデータ、Ｎｕｌｌデータの順で構成される（図６中、“data1”、“data2”、“data3”、“data4”。これら“data1”〜“data4”を区別しない場合には、単に“data”と呼ぶ）。データＢがメモリセルアレイ１１に書き込まれる際、まずＲＡＭ２４内でＮｕｌｌ領域が拡張パリティに書き換えられた後、ＮＡＮＤフラッシュメモリ１０に書き込まれる。すなわち、論理アドレスに対応するメモリセルトランジスタＭＴを先頭として、各ページにユーザデータ及び拡張パリティで構成されるデータ列が格納される。なお、データＡ、Ｂのデータ列の場合であっても、拡張パリティの他、通常パリティも生成される。
【００５９】
２−３．＜データＣ＞  
データＣとは、上記データＡのフレームフォーマットにおいて、“data”に付随するＮｕｌｌデータが設けられていないフレームフォーマットである。このフレームフォーマットの場合、論理アドレスに対応するメモリセルトランジスタＭＴから、例えば連続して３５８４×８個のメモリセルトランジスタＭＴにユーザデータが書き込まれ、上記記載のように拡張パリティは生成されない。この場合、“data”に基づいて生成された通常パリティが管理データの格納領域に格納される。
【００６０】
本実施形態では、例えば元々のデータサイズが３５８４ｂｙｔｅとされる画像データが、データＡのフレームフォーマットで転送されてきた場合を一例として説明する。
【００６１】
２−３．＜書き込みデータの分割方法＞  
次に図６を用いてＭＰＵ２２による書き込みデータの分割方法について説明する。なお、ＭＰＵ２２は、ページサイズ（以下、Ｐ）を把握しているものとする。ここでは、１枚の画像データをメモリセルアレイ１１に書き込む場合を一例として挙げる。画像データのデータ容量をＤ、１ページ単位のユーザエリア容量をＰとすると、必要とされる格納ページ数ｍは、（１）式で表される。  
ｍ＝ＲｏｕｎｄＵｐ（Ｄ／Ｐ、０）        （１）  
関数ＲｏｕｎｄＵｐとは、データの切り上げで使用される関数であり、ここでは、小数点以下を切り上げるものとする。つまり、例えば、Ｄ／Ｐ＝１．５であれば、１．５とは、１以上２以下の値であるため、従ってＲｏｕｎｄＵｐ（１．５、０）＝“２”となる。  
次いで、（１）式で得られた“ｍ”を用いることで各ページに格納する書き込みデータの容量ｐが（２）式で得られる。  
ｐ＝ＲｏｕｎｄＵｐ（Ｄ／ｍ、０）        （２）  
１ページ当たりのユーザエリア容量は上述の通り、Ｐであり、このＰのうちユーザデータ量はｐであることから、１ページ当たりに書き込まれる拡張パリティのデータ容量ｒは、（３）式で表される。  
ｒ＝Ｐ−ｐ      （３）  
以上（１）〜（３）式より、ホスト機器１がメモリカード２に転送するフレームフォーマットは、ｄａｔａ１〜ｄａｔａ４についてのデータ容量をｐ、Ｎｕｌｌ領域についてのデータ容量をｒとした組（ｐ＋ｒ）で構成される。
【００６２】
上記（１）〜（３）式に具体的数値を入れて説明する。  
写真のデータ容量Ｄ＝３５８４Ｂｙｔｅ、１ページのユーザエリア容量Ｐ＝１０２４Ｂｙｔｅとすると、上記（１）〜（３）式から、ｍ＝ＲｏｕｎｄＵｐ（３５８４／１０２４、０）＝４、ｐ＝ＲｏｕｎｄＵｐ（３５８４／４、０）＝８９６Ｂｙｔｅ、ｒ＝１０２４−８９６＝１２８Ｂｙｔｅとされる。この様にして、データＡのフレームフォーマットがホスト機器１から転送された場合、上記の様にデータ列を分割することでデータＢに示すフレームフォーマットにように１ページに格納するデータ列（ユーザデータとＮｕｌｌデータとで構成されるデータ群）を生成する。
【００６３】
なお、上記算出はホスト機器１が行っても良い。つまり、データＡのフレームフォーマットがホスト機器１から転送されたため、これをＭＰＵ２２が上記方法でデータを分割したが、ホスト機器１が上記算出を行いデータＢのフレームフォーマットを生成した後、メモリカード２に転送しても良い。
【００６４】
２−４．＜パリティの作成方法＞  
図７（ａ）、図７（ｂ）、及び図８を用いて、ＥＣＣ回路２６によるパリティビットの生成について説明する。なお、パリティビットとは、上述の通り読み出しデータに誤り訂正を行うデータ列であり、ユーザデータの書き込み時にＥＣＣ回路２６にて生成される。
【００６５】
図７（ａ）は、ホスト機器１が上記データＡ、データＢを転送した場合、ＥＣＣ回路２６が生成するパリティビットを示し、図７（ｂ）は、ホスト機器１が上記データＣを転送した場合、ＥＣＣ回路２６が生成するパリティビットを示す。また、図８は、ＥＣＣ回路２６によるパリティビットの生成方法についてフローチャートである。
【００６６】
まず監視部２２−１がＲＡＭ２４に格納されたデータ列を確認する。すなわち、データＡ又はデータＢなのか若しくはデータＣなのかを確認する（図８中、ステップＳ０）。ステップＳ０での結果、格納されたデータ列のフレームフォーマットがデータＡであれば（図７（ａ）、図８：（Ｓ１、データＡ））、このデータ列を上記（１）〜（３）式に従って複数のデータ列に分割する（図８、Ｓ２）。次いで、これら分割されたデータ列と管理データとで構成されるデータ群に基づき拡張パリティを生成し、またこれら分割されたデータ列に基づいた通常パリティを生成する（Ｓ３）。つまり、データＡの場合には、図７（ａ）に示すように通常パリティに加え、ユーザデータ（図６中、“data1”〜“data4” ）の各々とこれらに対応する管理データを組み合わせたデータ列に基づき、ＥＣＣ回路２６が拡張パリティビットを生成する。具体的には、例えば“data1”とこの“data1”が格納されるあるページの管理情報が格納された”管理データ”との組で構成されるデータ列に基づき、拡張パリティを生成する。以下、“data2”以降についても同様である。この拡張パリティは上述したように、データＢのＮｕｌｌ領域に上書きされ、その結果、拡張パリティは各ページの末尾に格納され、また管理データ格納領域に通常パリティを格納される（図８、Ｓ４）。なお上記したように格納されるデータ量はｒとされる。
【００６７】
また、ステップＳ０での結果、格納されたデータ列のフレームフォーマットがデータＢであれば（図７（ａ）、図８：（Ｓ１、データＢ））、生成した拡張パリティをＮｕｌｌデータの領域に上書きし（Ｓ５）、その後、物理アドレスに従って、メモリセルアレイ１１にこれらユーザデータと拡張パリティを各ページに格納する（Ｓ６）。上記ステップＳ３と同様、生成された通常パリティは管理データ格納領域に格納される。
【００６８】
これに対し、ステップＳ０での結果、ＲＡＭ２４に格納されたデータ列のフレームフォーマットがデータＣであれば（図７（ｂ）、図８（Ｓ１、データＣ））、このデータ列を分割せず、ページ単位毎のユーザデータに基づき通常パリティを生成する（Ｓ７）。その後、論理アドレスに従って対応するメモリセルアレイ１１にユーザデータを格納し（Ｓ８）、また通常パリティを管理データ格納領域に格納する。
【００６９】
３．＜メモリセルアレイ１１にユーザデータ及び拡張パリティが格納された時の概念図＞  
次に、図９を用いて、ホスト機器１から転送されたフレームフォーマットがデータＡ、データＢであった場合、メモリセルアレイ１１に格納されるユーザデータ（“data1”〜“data4”）及び拡張パリティの概念図を示す。図９に示すように、ワード線ＷＬ０に対応するページ（図９中、page1と表記）であって、例えばビット線ＢＬ０〜ＢＬ（ｎ−ｔ−１）に接続されたメモリセルトランジスタＭＴに”data1”が格納され、またビット線ＢＬ（ｎ−ｔ）〜ＢＬ（ｎ＋１）に接続されるメモリセルトランジスタＭＴに拡張パリティが格納される。同様にワード線ＷＬ１に対応するページ（図９中、page2と表記）であって、例えばビット線ＢＬ０〜ＢＬ（ｎ−ｔ−１）に接続されたメモリセルトランジスタＭＴに””data2”が格納され、ビット線ＢＬ（ｎ−ｔ）〜ＢＬ（ｎ＋１）に接続されるメモリセルトランジスタＭＴに拡張パリティが格納される。ここでは、ワード線ＷＬ０、ＷＬ１に対応するページに“data1”及び“data2”が格納される場合について示したが、“data3”及び対応する拡張パリティがワード線ＷＬ２に対応するページに格納され、“data4”及び対応する拡張パリティがワード線ＷＬ３に対応するページに格納される。以上のように、各ワード線ＷＬ当たり、“data”に対して、通常パリティ及び拡張パリティが格納される。
【００７０】
＜第１の実施形態に係る効果＞  
本実施形態に係るホスト機器１及びこれに制御されるメモリカード２によれば、読み出したデータにつき、訂正能力を向上させることが出来る。上述したように、本実施形態によれば、ホスト機器１から転送され、メモリセルアレイ１１の各ページに格納されるデータ（例えば、１枚の写真データ）を１ページの最大容量（例えば１０２４ｂｙｔｅ）とせず、各ページに拡張パリティが格納出来るエリアを残しつつユーザデータを格納させる。すなわち、上述したように各ページに“ｒ”の格納エリアを設け、この格納エリアに拡張パリティを格納させる。つまり、管理データに格納される通常パリティに加え、拡張パリティを生成することで、読み出し時にＥＣＣ回路２６の訂正能力を向上させることが出来る。これにより、読み出しデータに訂正処理を掛ける際、選択的にいずれかパリティを用いることが出来る。
【００７１】
データの読み出し時に、通常パリティを用いるか、拡張パリティを用いるかについては、上述した様に訂正能力が高い、すなわちパリティビットが長い方を採用すればよい。ＥＣＣ回路２６の訂正能力を上げるため、拡張パリティのビット数は通常パリティよりも大きくするが、場合によっては、ページによって拡張パリティを格納するエリアを設けたものの通常パリティの方のビット数が長い場合がある。このような場合には、通常パリティを用いればよい。
【００７２】
また、本実施形態に係るホスト機器１及びこれに制御されるメモリカード２によれば、読み出しデータを訂正する訂正能力を平均化することが出来る。本実施形態によれば、図９に示すように各ページに同一容量の拡張パリティが格納される。つまり、拡張パリティを用いて誤り訂正を行った際、各ページにおいて拡張パリティの長さにバラつきが無いため、各ページに格納されたユーザデータの読み出しの際、メモリカード２は各ページの読み出し動作に均一の訂正能力を有する。
【００７３】
＜変形例１＞  
次に、図１０を用いて上記第１の実施形態の変形例（以下、変形例１）に係るホスト機器１及びこれに制御されるメモリカード２の構成について説明する。変形例１に係るホスト機器１及びこれに制御されるメモリカード２は、データＢのフレームフォーマットをメモリカード２が取り込んだ結果、各ページにおいてＮｕｌｌ領域がユーザデータ（“data”）に挟まれるケースを例に挙げる。上記第１の実施形態では、ホスト機器１がメモリセルアレイ１１のページ容量を把握していたことから、各ページの末尾にＮｕｌｌ領域が格納できるようホスト機器１はこのＮｕｌｌ領域の論理アドレスを設定したが、変形例１では、ホスト機器１がメモリセルアレイ１１のページ容量を把握していないものとする。なお、上記と同一の構成については説明を省略する。
【００７４】
＜ＭＰＵ２２＞  
変形例１におけるＭＰＵ２２は、書き込みデータの内に所定のビット数だけ連続するＮｕｌｌデータ（すなわち連続する“１”データ列）があった場合であって、書き込み動作の結果、各ページに格納されるＮｕｌｌデータがユーザデータに挟まれるということを確認すると、ＮＡＮＤフラッシュメモリ１０への書き込み動作後、各ページの末尾に拡張パリティが格納されるよう、書き込み動作の前にＮｕｌｌデータの物理アドレス、及びユーザデータの物理アドレスを変更する。これにより、上記第１の実施形態で説明したデータＡのフレームフォーマットが形成される。なお、この作業は、ＲＡＭ２４内で行われる。
【００７５】
図１０に、ＭＰＵ２２が拡張パリティの物理アドレスを変更せずに、ユーザデータと拡張パリティの書き込みを行った場合の概念図を示す。すると図１０に示すように、ユーザデータと管理データとに基づき生成された拡張パリティがビット線ＢＬ２〜ＢＬ（ｎ−２）に、その両サイドに書き込みデータが格納される。このような場合、ＭＰＵ２２は、ユーザデータ及び拡張パリティをメモリセルアレイ１１に書き込む前に、Ｎｕｌｌデータ、及び一方のユーザデータの物理アドレスを変更する。このように、ＭＰＵ２２は転送されたＮｕｌｌ領域の物理アドレスを図８の様に末尾にずらしてから、書き込みデータ及び拡張パリティをメモリセルアレイ１１に格納する。
【００７６】
＜変形例１に係る効果＞  
変形例１に係るホスト機器１及びこれに制御されるメモリカード２であっても、上記第１の実施形態と同様の効果を得ることが出来る。すなわち、例え、ホスト機器１から転送されるフレームフォーマット内のＮｕｌｌデータの位置がずれていても、上述したように物理アドレスを変更するとで、上記第１の実施形態で説明した図９と同様とすることが出来る。このように、変形例１であっても各ページに格納されたデータを読み出す際の訂正能力を向上することが出来、且つ各ページのバラつきなくその訂正能力を向上させることが出来る。
【００７７】
＜変形例２＞  
次に、図１１を用いて、上記第１の実施形態の第２変形例（以下、変形例２）に係るホスト機器１及びこれに制御されるメモリカード２について説明する。なお、上述した構成と同一の内容は説明を省略する。上述の通り、ＥＣＣ回路２６が生成する拡張パリティとは、（各ページのユーザデータ＋対応する管理データ）で構成されたデータ群に対して生成されるものであったが、単にユーザデータ全体に対して生成されるものであっても良い。具体的にはホスト機器１から転送されるフレームフォーマットがデータＡの場合、“data”（図６中、例えば３５８４ｂｙｔｅ）を“data1”〜“data4”に分割せず、この１つの“data”に基づいて拡張パリティを生成してもよい。ユーザデータが格納された最後のページの空き容量（本来であれば、このエリアにＮｕｌｌデータが格納）が十分あり、通常パリティを用いて訂正処理を行う場合よりも訂正能力が優れているとＭＰＵ２２が判断した場合、データＢを受け取った場合と同様に、通常パリティに加え、拡張パリティを生成する。つまり、ＭＰＵ２２はデータＡのフレームフォーマットをホスト機器１から受け取った場合、変形例２のように拡張パリティを生成してもよい。
【００７８】
この際、ＥＣＣ回路２６は、メモリカード２（ＲＡＭ２４）に一時格納されたユーザデータに基づき拡張パリティを生成する。ＭＰＵ２２は、ＥＣＣ回路２６が生成した拡張パリティをＮｕｌｌ領域に埋め込み、次いでＮＡＮＤフラッシュメモリ１０へとこれらデータ列を書き込む。
【００７９】
図１１を用いてこの様子を説明する。図１１は、メモリセルアレイ１１にユーザデータ及びこれに対応する拡張パリティが格納された概念図である。図１１に示すように、ワード線ＷＬ０〜ＷＬ６２に対応する各ページ、及びワード線ＷＬ６３且つビット線ＢＬ０〜ＢＬ（ｎ−ｔ）に接続されるメモリセルトランジスタＭＴにユーザデータが格納され、次いでワード線ＷＬ６３且つビット線ＢＬ（ｎ−ｔ＋１）〜ＢＬ（ｎ＋１）に接続されるメモリセルトランジスタＭＴに拡張パリティが格納される。
【００８０】
上述したように、この拡張パリティは、図１１に示すメモリセルアレイ１１に格納されたユーザデータに基づいて生成された拡張パリティであり、ユーザデータが読み出される場合、この拡張パリティを用いて誤り訂正処理が行われ、次いで誤り訂正されたユーザデータをホスト機器１に転送される。
【００８１】
なお、この場合であっても管理データ格納領域には通常パリティが設けられる。
【００８２】
＜変形例２に係る効果＞  
変形例２に係るホスト機器１及びこれに制御されるメモリカード２であっても、上記第１の実施形態と同様の効果を得ることが出来る。すなわち、各ページに格納されたデータを読み出す際の訂正能力を向上することが出来る。
【００８３】
［第２の実施形態］  
次に、第２の実施形態に係るホスト機器１及びこれに制御されるメモリカード２について説明する。上記第１の実施形態でも説明したが、通常ユーザデータをメモリセルアレイ１１に格納する際、このユーザデータにランダマイズを行い、次いでこのランダマイズしたユーザデータをメモリセルアレイ１１に格納する。第２の実施形態では、このユーザデータに所定の方法で圧縮を掛けた後、この圧縮データにランダマイズを施し、メモリセルアレイ１１に格納する。また後述するが、上記ランダマイズしたユーザデータに、以下説明する圧縮を掛けてからメモリセルアレイ１１に書き込んでも良い。なお、以下第２の実施形態は、単独で実施可能であるが、ここでは上記第１の実施形態と組み合わせた場合を説明する。つまり、ユーザデータを圧縮した後、必要に応じて拡張パリティを生成する。上記第１の実施形態と同様の構成については説明を省略する。  
１．＜ＭＰＵ２２＞  
上述したように本実施形態におけるＭＰＵ２２は上述した監視部２２−１に加え、圧縮部２２−２、制御部２２−３、及び管理部２２−４を備える。監視部２２−１は、ＲＡＭ２４内に保持されたユーザデータを監視し、このユーザデータ内に所定のデータ列が含まれるか否かを判断する。具体的には、ユーザデータを、例えば４ビット、８ビット、４ｂｙｔｅなどのように分割し、これら例えば４ビット、８ビット、４ｂｙｔｅで分割した際のデータ列が、所定のデータ列であるか否かを監視する。この書き込みデータ内に所定のデータ列があると、これを制御部２２−３に通知する。
【００８４】
制御部２２−３は、監視部２２−１からの通知を受けると、圧縮部２２−２に所定の方法でデータ列を圧縮するよう制御する。
【００８５】
圧縮部２２−２は、制御部２２−３から圧縮の指示を受けると、ＲＡＭ２４内に保持されたユーザデータを所定の方法で圧縮する。以下、圧縮部２２−２による圧縮方法について説明する。なお、エンコーダ２８はこの圧縮されたデータにつきランダマイズを施す。
【００８６】
管理部２２−４は、メモリセルアレイ１１に格納されたユーザデータの元々のビット長、及びその圧縮データがメモリセルアレイ１１に格納される物理アドレスを把握する。
【００８７】
１−２．＜圧縮方法＞  
図１３を用いて上記圧縮部２２−２による圧縮方法について具体的に説明する。図１３にホスト機器１から転送されるユーザデータを８ビット単位で表した場合を示す。本実施形態の圧縮方法は、発生頻度の高いビットパターンには短い符号を、低いパターンには長い符号を割り当てることにより圧縮をかけるものである。
【００８８】
例えば、ホスト機器１から“０１０１０１０１”のデータ列が転送されると、圧縮部２２−２はこれを”０１”の２ビットに変換、すなわち圧縮する。同様に、ホスト機器１から“１０１０１０１０”のデータ列が転送されると、圧縮部２２−２はこれを“１０”の２ビットに圧縮し、“１１１１１１１１”列を“１１”の２ビットに圧縮する。
【００８９】
ただ、８ビットのデータ列であっても、発生頻度の低いパターンであると必ずしも上述したように圧縮できるとは限らない。このため、例えば、８ビット単位で圧縮を掛けようとした際、監視部２２−１がこの８ビットのデータ列が発生頻度の低いランダムパターンであると判断した場合、また“００００００００”のデータ列である場合には、これらデータ列を圧縮せず、先頭に“００”を付すことで、この“００”に付随する８ビット列はランダムパターンまたは“００００００００”列であることを表す。
【００９０】
次に図１４を用いて、例えば１６ｂｙｔｅのユーザデータを４ｂｙｔｅ毎に分割した際の、このユーザデータを圧縮する方法について説明する。図１４に示すように、例えば１６ｂｙｔｅを４ｂｙｔｅ毎に分割した際、１６ｂｙｔｅのデータ列がそれぞれ４ｂｙｔｅの“０１０１０１…０１”パターン、“１１１０１０…００”パターン、“１０１０１０…１０”パターン、及び“００１１１０…１０”パターンのデータ列に分割される。上述したように監視部２２−１は、この分割されたデータ列につき所定のパターンが含まれると判断する。
【００９１】
ここで、圧縮部２２−２は、制御部２２−３に従い“０１０１０１…０１”パターンを、“０１”パターンに圧縮し、”１０１０１０…１０”パターンを、”１０”パターンに圧縮する。また、”１１１０１０…００”パターンは、ランダムパターンであることから、圧縮部２２−２はこのデータ列を圧縮せず、上述したように先頭に”００”を付し、”００”＋”１１１０１０…００”のデータ列に、そして”００１１１０…００”パターンについてもランダムパターンであることから、圧縮部２２−２はこのデータ列を圧縮せず、同様に””００”を付し、”００”＋”００１１１０…００”のデータ列とする。この結果、１６ｂｙｔｅのデータ列が９ｂｙｔｅのデータ列に圧縮される。この圧縮されたデータ列は、ＲＡＭ２４内であって圧縮前のデータ列が保持される領域とは別の領域に保持されても良いし、圧縮前のデータ列が保持される領域に上書きされても良い。
【００９２】
次に、図１５を用いて、上記とは別の圧縮方式を説明する。ここでは、分割したデータ列をそれぞれ１ｂｙｔｅ（８ビット）とする。この圧縮方式を簡単に説明すると、圧縮したデータ列については”１”を、これに対し、非圧縮のデータ列については”０”を圧縮後のデータ列に付加する。以下図１５を用いて具体的に説明する。
【００９３】
図１５に示すように、先頭の”０１０１０１０１”列については、”０１”に圧縮可能であるため、この”０１０１０１０１”列の先頭に”１”を付加する。次いで、”１１１０１０００”については圧縮不可であることから、上記圧縮した”０１”に次のデータ列が非圧縮のデータ列であることを示す”０”を付加する。すなわち、”０１０１０１０１”列については、後続のデータ列との兼ね合いで、”０１０”と圧縮される。次に、”１１１０１０００”の後続の”１０１０１０１０”列については、圧縮可能であるため、この”１１１０１０００”に圧縮可能であることを示す”１”を付加する。すなわち、”１１１０１０００１”とされる。以下同様に、圧縮を行うことで、図１５に示すデータ列は、”１”＋”０１０”＋”１１１０１０００１”＋”１０１”＋”０１０”＋”１１０１１１０１”とされる。つまり、５ｂｙｔｅ（４０ｂiｔ）＝＞２０ｂｉｔに圧縮される。
【００９４】
２．＜エンコーダ２８の構成＞  
次に、図１６を用いて上述したエンコーダ２８について説明する。エンコーダ２８は、上述したように圧縮されたデータ列につき、スクランブル処理を施す。図１６に示すようにエンコーダ２８は、疑似乱数発生回路２８−１及びスクランブル回路２８−２を備える。
【００９５】
疑似乱数発生回路２８−１は、シード（seed）値に基づき疑似乱数を発生する。シード値とは、メモリカード２固有の値であり、例えばＭＰＵ２２が製造される際のシリコンウェハなどのロット番号である。
【００９６】
また疑似乱数発生回路２８−１の構成は特に限定されるものでは無いが、例えばリニアフィードバックシフトレジスタを用いることが出来る。疑似乱数発生回路２８−１は、例えばＭＰＵ２２の命令に従って疑似乱数の発生を行う。
【００９７】
スクランブル回路２８−２は、データの書き込み時において、ＲＡＭ２４から上記圧縮後のユーザデータを読み出し、次いで疑似乱数発生回路３１で発生された疑似乱数に基づいてスクランブルする。その後、演算結果をスクランブルデータとして、ＲＡＭ２４に格納する。
【００９８】
３．＜拡張パリティの生成手順について＞  
次に図１７（ａ）、図１７（ｂ）を用いて、第２の実施形態における拡張パリティの生成手順について説明する。図１７（ａ）に示すように、（ｉ）圧縮データにつきエンコーダ２８でランダマイズを行い、次いで、（ii）このランダマイズされたデータに基づいて拡張パリティを生成する。上記第１の実施形態で説明したように、例えば拡張パリティを生成する場合、ＥＣＣ回路２６は、このランダマイズされたデータ及び管理データの組で構成されるデータ群に基づき拡張パリティを生成する。
【００９９】
なお、図１６（ｂ）の手順で拡張パリティを生成しても良い。すなわち、（ｉ）ＲＡＭ２４に保持されたユーザデータに基づいて通常パリティを生成し、（ii）このユーザデータと通常パリティとの組で構成されるデータ列を圧縮部２２−２が圧縮する。（iii）次いで、エンコーダ２８が（ii）で圧縮したデータ列につきランダマイズを行う。（iv）最後に、（iii）でランダマイズしたデータ列に、管理データを付して生成されたデータ列に基づき拡張パリティを生成する。
【０１００】
＜第２の実施形態に係る効果＞  
第２の実施形態に係るホスト機器１及びこれに制御されるメモリカード２によれば、上記第１の実施形態で得られた効果を更に向上させることが出来る。すなわち、読み出し時、更に訂正能力を向上させることが出来る。これは、上述したように、上記圧縮工程を経ることで、ユーザデータが格納される領域の容量が減少し、これによって格納可能な拡張パリティの容量ｒが増加するからである。
【０１０１】
この圧縮によって拡張パリティを格納することが出来るエリアが増加する様子を具体的な値を用いて説明する。例えば、ページサイズ１０２４Ｂｙｔｅ、ユーザーサイズ９８４Ｂｙｔｅ、パリティ格納領域４０Ｂｙｔｅとする。仮に最低のデータ圧縮率が９８％としても、ユーザデータが格納されるエリアに約２０Ｂｙｔｅの空き領域を確保することができ、それまで２０Ｂｙｔｅであったパリティを６０Ｂｙｔｅに拡張できる。単純計算で、訂正能力を約１．５倍に強化することができる。
【０１０２】
また、上記圧縮方式では、ＲＡＭ２４に格納されたデータ列を８ビット、または４ｂｙｔｅのいずれかで分割したが、１つのデータ列を、８ビットのデータ列や４ｂｙｔｅのデータ列など、様々なビット列で分割しても良い。すなわち、監視部２２−１が、ユーザデータのデータ列を先頭からチェックしていき、規定のデータ列が構成されるところまでを１つのビット列とし、それを圧縮しても良い。何ビットで圧縮したかについての情報は、ＭＰＵ２２内の制御部２２−３が備える管理部２２−４に格納されたメモリセルアレイ１１の物理アドレスと共に格納される。
【０１０３】
＜変形例３＞  
次に、図１８〜図２０を用いて第２の実施形態の第１変形例（以下、変形例３）に係るホスト機器１及びこれに制御されるメモリカード２について説明する。上記実施形態では、ユーザデータを圧縮し、ページ毎に空いた領域に拡張パリティを格納したが、変形例３では、このユーザデータの格納領域を圧縮する際、管理データ格納領域に格納される管理データを用いて圧縮する。以下、変形例３に係る圧縮方式を説明する。
【０１０４】
１．＜ＭＰＵ２２の構成＞  
図１８を用いてＭＰＵ２２の構成について説明する。変形例３におけるＭＰＵ２２は、監視部２２−１、圧縮部２２−２、制御部２２−３、及び管理部２２−４に加え更に生成部２２−５を備える。なお、上記機能と同様の内容については説明を省略する。
【０１０５】
１−１．＜監視部２２−１＞  
変形例３では、監視部２２−１はホスト機器１から転送されたユーザデータにつき、２ｂｙｔｅ単位で所定のデータ列があるか否か確認する。監視部２２−１は、所定のデータ列を確認すると、このデータ列のword address及びsection address（後述する）を確認し、これを制御部２２−３に通知する。なお、監視部２２−１が制御部２２−３に通知する情報は、データ列の論理アドレス（物理アドレス）であっても良い。またここでは、一例として所定のデータ列を“ffff”（２進法で“1111111111111111” ）として説明する。
【０１０６】
１−１．＜制御部２２−３＞  
制御部２２−３は、ＲＡＭ２４内のユーザデータのデータ列を複数のグループ（以下、section）に分割する。このsection数は、２つであっても良いし、その他分割数であっても良く、分割数に制限はないが、１ページのデータ容量が割り切れるような分割数が望ましい。以下では、分割数を“２”または“１６”として説明する。
【０１０７】
また制御部２２−３は監視部２２−１からデータ列に“ffff”が存在するとの通知があると、それはどのsectionに該当するのか、そして該当するsectionの中のどの領域に存在するのか監視部２２−１から通知されたword address及びsection addressを確認する。
【０１０８】
仮に３以上の数で分割し、そのうちの２つのsectionにデータ列“ffff”があったとする。この場合、制御部２２−３は生成部２２−５に対し、分割したsection数、及びこの分割した複数のsection内であって、該当するデータ列が存在するsection数に応じてポイント格納領域及びヒットフラグ領域を生成させる。上記条件であれば、ポイント格納領域０及びポイント格納領域１、並びにヒットフラグ領域０及びヒットフラグ領域１を生成させる。このようにポイント格納領域とは、上記管理データ内に設けられ、またそのポイント格納領域の容量及び生成されるポイント格納領域の数は書き込みの都度変化する領域である。また、ヒットフラグ領域の値とは、ポイント格納領域が示すアドレスが有効か否かを示す。つまり、section内にあるデータ列“ffff”のサーチに成功し、この結果ポイント格納領域に格納されたアドレスが有効な値を示す場合、ヒットフラグ領域には“１”が格納される。これに対し、データ列“ffff”のサーチに失敗した場合には、例えポイント格納領域にアドレスが格納された場合であってもそのアドレスは無効であることを示す。
【０１０９】
また、制御部２２−３は、生成したポイント格納領域に、所定のデータ列“ffff”が存在するsection addressを書き込む。このsection addressのビット数は、分割したsection数に応じた値とされる。
【０１１０】
更に、制御部２２−３は、この“ffff”データ列が設けられた領域に上述した拡張パリティを上書きする。また、書き込みデータをメモリセルアレイ１１に格納する際、ページの末尾（図６における、ビット線ＢＬ（ｎ−ｔ）〜ビット線ＢＬ（ｎ＋１）に対応するメモリセルトランジスタＭＴ）にこの拡張パリティが格納出来るようデータ列の配列を行う。その後、書き込み動作を行う。
【０１１１】
１−２．＜生成部２２−５＞  
制御部２２−３によるポイント格納領域の生成命令があると、生成部２２−５は分割されたsection数、及び所定のデータ列を含むsection数に応じてポイント格納領域を生成する。ヒットフラグ領域についても同様である。
【０１１２】
２．＜圧縮方式＞  
次に図１９（ａ）、図１９（ｂ）を用いて変形例３に係る圧縮方式について説明する。図１９（ａ）、図１９（ｂ）は、ＲＡＭ２４に一時的に格納されたデータ列（ユーザデータ、管理データ（例えば１２８ｂｙｔｅ））を示すが、ここでは理解を深めるためこれらデータ列をメモリセルアレイ１１に書き込んだ際に、あるワード線ＷＬ方向にメモリセルトランジスタＭＴを見たときの概念図を示す。すなわちページの概念図を示す。上述したように１ページのデータ容量は１０２４ｂｙｔｅである。
【０１１３】
２−１．＜分割数２＞  
図１９（ａ）を用いて、１ページを２分割した場合、すなわち１ページをsection0とsection1とに分割した場合ついて説明する。なお、分割数を設定するのは上記の通り制御部２２−３である。図１９（ａ）に示すように、１ページ（１０２４ｂｙｔｅ）をsection0とsection1とに分割した場合、１section当たりのデータ容量は５１２ｂｙｔｅとされる。また、これらsection0とsection1におけるデータ列を２ｂｙｔｅ単位で割り当て、それぞれにアドレスを振る（これが上記したword addressとsection address）。
【０１１４】
この２ｂｙｔｅ単位で割り当てた際のアドレスを“word address”とすると、図１９（ａ）に示すようにsection0のword addressは“０”〜“２５５”とされ、またsection1のword addressは“２５６”〜“５１１”とされる。また、section0及びsection1の各々のsection addressはそれぞれ“０”〜“２５５”とされる。
【０１１５】
ここで、section0の“２”（word address）及びsection1の“２５８”（word address）に“ffff”が含まれた場合を想定する。この場合、生成部２２−５によってポイント格納領域０及びポイント格納領域１、並びにヒットフラグ領域０及びヒットフラグ領域１が生成される。生成されたポイント格納領域０、ポイント格納領域１は分割されたsectionの位置に対応しており、またsection毎のアドレスを表示可能なビット数を保持可能とする。つまり、上述したように、例えばsection0、section1を２ｂｙｔｅで分割すると各々の領域は”０”〜”２５５”、すなわち計２５６個のアドレスに対応付けられる。このためポイント格納領域０が保持可能とするビット数は８ｂｉｔとされる。同様にポイント格納領域１も８ｂｉｔのビット数を保持可能とする。
【０１１６】
また、生成部２２−５は、section0及びsection1に“ffff”列が含まれる場合、これらsectionに対応するヒットフラグ０、ヒットフラグ１にそれぞれ“１”を格納する。なお、対応するsectionに所定のデータ列が含まれない場合、ヒットフラグには“０”が格納される。
【０１１７】
このように、管理データ内のポイント格納領域及びヒットフラグ領域を用いることでsection0及びsection1に含まれる“ffff”データ列を空き領域とし、各ページ内に格納されるユーザデータの圧縮を行う。
【０１１８】
２−２．＜分割数１６＞  
次に図１９（ｂ）を用いて、１ページを１６分割した場合、すなわち１ページをsection0〜section15に分割した場合について説明する。図１９（ｂ）に示すように、１ページをsection0〜section15に分割した場合、１section当たりのデータ容量は３２ｂｙｔｅとされる。また、これらsection0〜section15における各々のデータ列のword address、section addressを２ｂｙｔｅ単位で割り当てる。
【０１１９】
上記同様、この２ｂｙｔｅ単位で割り当てた際のアドレスを“word address”とすると、図１９（ｂ）に示すようにsection0のword addressは“０”〜“３１”とされ、section1のword addressは“３２”〜“６３”とされ、section15の“word address”は“４８０”〜“５１１”とされる。また、section0〜section15の“section address”はそれぞれ“０”〜“３１”とされる。
【０１２０】
ここで、section0の“２”（word address）及びsection1の“３４”（word address）、…、section14の“４５０”（word address）及びsection15の“４８２”（word address）に“ffff”が含まれた場合を考える。この場合、生成部２２−５によってポイント格納領域０〜１５、及びヒットフラグ０〜１５が生成される。生成されたポイント格納領域０〜ポイント格納領域１５は分割されたsection0〜section15の位置に対応しており、またsection毎のsection addressを表示可能なビット数を保持可能とする。つまり、上述したように、例えばsection0を２ｂｙｔｅで分割すると各々の領域は”０”〜”３１”、すなわち計３２個のアドレスで対応付けられる。このためポイント格納領域０が保持可能とするビット数は５ｂｉｔとされる。同様にポイント格納領域１〜１５のそれぞれも５ｂｉｔのビット数を保持可能とする。
【０１２１】
また、生成部２２−５は、section0〜section15に”ffff”列が含まれる場合、これらsectionに対応するヒットフラグに”１”を格納する。
【０１２２】
このように、管理データ内のポイント格納領域を用い、section0及びsection1に含まれる”ffff”データ列を空き領域とすることで各ページ内に格納されるユーザデータの圧縮を行う。なお、”ffff”を一例に挙げたが、監視部２２−１が認識することができるのであれば、データ列はこれに限られなく、”０”データが連続するデータ列、”０”及び”１”が混合するデータ列であっても良い。
【０１２３】
３．＜書き込み動作＞  
次に、図２０、図２１を用いて書き込み時におけるメモリコントローラ２０内の動作（（ｉ）〜（vi））について説明する。図２０、図２１は、ＲＡＭ２４内に書き込するユーザデータ、ポイント格納領域、及びヒットフラグが格納された様子を示す概念図を示し、図２１に示すデータ列が生成された後、書き込み動作が実行される。なお、word addressについては、ここでも２ｂｙｔｅ毎の単位でアドレスを付す。まず図２０を用いて説明する。図２０は、ホスト機器１から転送されたユーザデータ列がＲＡＭ２４に格納された様子を示す。  
（ｉ）制御部２２−３は、１０２４ｂｙｔｅのデータ列を２分割し、分割されたそれぞれの領域をsection0とsection1とに領域を分ける。  
（ii）制御部２２−３は、２ｂｙｔｅ単位でデータ列の各領域にword address、及びsection addressを付す。次いで、監視部２２−１は、これらアドレスが付された各々のデータ列に所定のデータ列が含まれるかを確認する。この結果、word address2及びword address258に”ffff”が含まれていたとする。  
（iii）従って、制御部２２−３によって生成部２２−５が、所定のデータ列が含まれるsectionに対応するポイント格納領域０、ポイント格納領域１を生成する。すなわち、生成部２２−５は、管理データ格納領域にポイント格納領域０及びポイント格納領域１、並びにこれらポイント格納領域０、１に対応するヒットフラグ０、ヒットフラグ１をそれぞれ生成する。生成部２２−５はこれらポイント格納領域の領域を８ｂｉｔと設定する。  
（iv）制御部２２−３は、監視部２２−１から得たsection addressの値に応じて、このsection addressに対応するビットをポイント格納領域に格納させる。例えば、section address=”2”であれば、ポイント格納領域０に格納されるデータ列は”００００００１０”であり、例えばsection address=”255”であれば、”１１１１１１１１”である。従って、section address=”2”に”ffff”データ列が格納されてなくとも制御部２２−３は、section0の”００００００１０”番地、及びsection1の”００００００１０”番地に”ffff”データ列が含まれていたことを認識できる。また、制御部２２−３は、ポイント格納領域０、１に対応するヒットフラグ０、１にそれぞれフラグ１を格納する。
【０１２４】
（v）上記（iv）の結果、section0及びsection1における”００００００１０”番地を空き領域とする。次いで、制御部２２−３は、それまで”ffff”データ列が格納されていたsection0の”００００００１０”番地、及びsection1の”００００００１０”番地に上述した拡張パリティを格納させる。
【０１２５】
（vi）その後、制御部２２−３は図２０に示す拡張パリティ（section0及びsection1）のword addressをそれぞれ”２”、”２５８”から１ページの末尾に移動させるに際し、まずsection1のword address510、511をsection2（この時、section2のsection addressを”０”、”１”とする）として割り当て（以下、section2を特別セクションと呼ぶこともある）、また生成部２２−５に２ｂｉｔを保持可能なポイント格納領域３（section2に対応）を生成させる。なお、ポイント格納領域３の保持可能なビット数を”２”としたのは、section2のsection address=”0”、”1”を認識するためである。
【０１２６】
次いで、特別セクション（section3）のsection address=”0”、”1”に拡張パリティを移動させる。以上の動作によって、図２０に示すようにデータの書き込み動作前のデータ列が生成される。
【０１２７】
＜変形例３に係る効果＞  
変形例３に係るホスト機器１及びこれに制御されるメモリカード２であっても、ユーザデータを圧縮することが出来、このため拡張パリティを格納する領域を広げることが出来る。変形例３では、特定パターンのデータ列の位置情報を示すポイント格納領域が管理データ格納領域内に設けられる。つまり、ポイント格納領域が記憶されている位置でどのsectionのポイント格納領域なのか特定できるため、ポイント格納領域が保持するビット数は少なくなる。このため、上述の通り一例としてsection0とsection1とに分割した場合、ポイント格納領域が保持するビット数を９ｂｉｔから８ｂｉｔに削減することができる。そして、分割するsection数が多くなるに従がって、この削減効果は大きくなる。上記の通り、例えば１６セクションに分割した場合は、ポイント格納領域が保持するビット数は５ｂｉｔでよく、１つのポイント格納領域当たりそれまでの９ビットから５ビットへと４ｂｉｔ削減することができる。つまり、section0〜section15のそれぞれに特定パターンのデータ列が存在していた場合、各ポイント格納領域の拡張可能容量は５ｂｉｔである。従って１６個のポイント格納領域が生成された結果、増加分は１６×５ｂｉｔ＝９０ｂｉｔとなり、また１６個のヒットフラグ領域が生成された結果、この増加分は１６×１ｂｉｔとなる。つまり、９０＋１６＝１１６ｂｉｔの増加となる。
【０１２８】
しかし、section0〜section15に含まれる特定パターンのデータ列（２ｂｙｔｅ）の領域が空き領域とされる。つまり、１６×２ｂｙｔｅ（１６ｂｉｔ）＝３２ｂｙｔｅ（２５６ｂｉｔ）減少させることが出来る。従って、（２５６−１１６）＝１４０ｂｉｔだけ圧縮することが出来る。従って、この空いた領域の容量だけビット数の長い拡張パリティを生成することが出来るため、読み出し時の訂正能力を向上させることが出来る。
【０１２９】
［第３の実施形態］  
次に、図２２、図２３を用いて第３の実施形態に係るホスト機器１及びこれに制御されるメモリカード２について説明する。本実施形態では、デジタルカメラで撮影した画像データの圧縮方法（ＪＰＥＧ２０００）について説明する。
【０１３０】
１．＜全体構成例＞  
図２２に第３の実施形態に係るホスト機器１及びこれに制御されるメモリカード２を示す。なお、上記実施形態と同一の構成については説明を省略する。
【０１３１】
１−１．＜ホスト機器１＞  
図２２に示すように、ホスト機器１は、撮像素子部４０（撮像素子、ＡＤＣ部を含む）、画像処理部４１、及びホストバスインタフェース４２を備える。  
撮像素子部４０は、行及び列方向に沿ってマトリクス状に配置された複数の画素部を備え、光電効果によってこれら画素部で得られた電荷（アナログ信号）にノイズキャンセルを施した後、ＡＤＣ部でこの電荷をデジタル変換する。このデジタルの画像データを、以下ＲＡＷデータ（非圧縮データ）と呼ぶ。
【０１３２】
画像処理部４１は、このＲＡＷデータに対してホワイトバランス処理、広ダイナミックレンジ処理、ノイズ低減処理、及び不良画素補正処理などの映像信号処理を行う。次いで、画素処理部４１は、上記映像信号処理が実行されたＲＡＷデータをＳＤインタフェース４２に出力する。
【０１３３】
ホストバスインタフェース４２は、画像処理部４２によって画像処理されたＲＡＷデータをメモリカード２に転送する。
【０１３４】
１−２．＜メモリカード２＞  
メモリカード２は、上記同様にＮＡＮＤコントローラ２０、ＳＤインタフェース２１、及びＮＡＮＤ型フラッシュメモリ１０を備える。以下、図２３を用いて本実施形態に係るＮＡＮＤコントローラ２０の詳細を説明する。
【０１３５】
１−２−１．＜ＮＡＮＤコントローラ２０の詳細＞  
図２３を用いてＮＡＮＤコントローラ２０の詳細について説明する。図２３に示すように、ＮＡＮＤコントローラ２０は、コア部２０−１、ＪＰＥＧエンコーダ／デコーダ部２０−２、ＳＤインタフェース２１、及びＮＡＮＤインタフェース２５を備える。ここで本実施形態では、説明を簡単にするため上記ＭＰＵ２２、ＲＯＭ２３、ＲＡＭ２４、ＥＣＣ２６、レジスタ２７、及びエンコーダ２８を纏めてコア部２０−１とする。また、ＳＤインタフェース２１、ＮＡＮＤインタフェース２５、及びコア部２０−１については上記同様であるため、本実施形態ではＪＰＥＧエンコーダ／デコーダ部２０−２について説明する。
【０１３６】
１−２−１−１．＜ＪＰＥＧエンコーダ／デコーダ部２０−２＞  
ＪＰＥＧエンコーダ／デコーダ部２０−２は、ＪＰＥＧ２０００規格で画像データを圧縮する。このＪＰＥＧ２０００規格の圧縮方式とは、可逆変換可能な圧縮方式である。このＪＰＥＧ２０００規格でデータ圧縮すると、およそデータサイズが５０〜６０％程度圧縮される。
【０１３７】
２．＜書き込み動作＞  
本実施形態における書き込み動作では、ホスト機器１から転送されたＲＡＷデータをＲＡＭ２４内で一時保持した後、この画像データにつきＪＰＥＧ２０００規格で圧縮する。次いでこの圧縮データに基づく拡張パリティをＥＣＣ回路２６で生成する。その後、これら圧縮データ及び拡張パリティをＮＡＮＤフラッシュメモリ１０に書き込む。以下、書き込み前の動作をするに当たり、ＮＡＮＤコントローラ２０内での動作について説明する。
【０１３８】
２−１．＜ＮＡＮＤコントローラ２０内での動作＞  
ＮＡＮＤコントローラ２０内では、書き込みデータにつき、圧縮、及び拡張パリティの生成が行われる。以下、図２４（ａ）〜図２４（ｃ）を用いて、圧縮データとこの圧縮データに基づきＥＣＣ回路２６によって生成された拡張パリティとがＲＡＭ２４内に格納される概念図を説明する。図２４（ａ）〜図２４（ｃ）では、理解しやすいように１ページ単位で画像データが格納された様子を示す。
【０１３９】
図２４（ａ）は、ホスト機器１から転送後、ＲＡＭ２４内に画像データが一時格納され、圧縮される前の概念図を示す。図２４（ｂ）は、画像データがＪＰＥＧ２０００規格で圧縮された概念図を示す。図２４（ｃ）は、画像データを各ページに分割することで、各ページの末尾に拡張パリティを格納した概念図である。
【０１４０】
図２４（ａ）に示すように、画像データが、例えば４ページの途中まで格納される。ＪＰＥＧエンコーダ／デコーダ部２０−２はこの画像データに対し圧縮・変換を行う。図２４（ｂ）に圧縮後の様子を示す。上述したようにＪＰＥＧ２０００規格ではデータ容量を５０〜６０％圧縮することが可能とされる。従って、圧縮後、画像データは２ページの途中まで格納される。次いで、上述した（１）〜（３）式を用いて１ページ当たりに格納するべき画像データ及び拡張パリティが格納される領域を計算することで図２４（ｃ）のように各ページに均等に圧縮データとそれに対する拡張パリティが格納される。この図２４（ｃ）で示すデータ列がＮＡＮＤインタフェース２５を介してＮＡＮＤフラッシュメモリ１０に転送される。
【０１４１】
＜第３の実施形態に係る効果＞  
第３の実施形態に係るホスト機器１及びこれに制御されるメモリカード２であっても、読み出し時の訂正能力を向上させることが出来る。なお、本実施形態では、ホスト機器１から転送される画像データに連続するＮｕｌｌデータが後続しなくとも拡張パリティを生成したが、上記第１の実施形態のようにＮｕｌｌデータがホスト機器１から転送された場合であっても拡張パリティを生成してもよい。
【０１４２】
またＪＰＥＧ２０００の回路規模が大きく、コスト上、メモリカード２への実装が困難な場合は、ＪＰＥＧ２０００機能をホスト機器１側に実装してもよい。この場合、ホスト機器１は、コントローラ２０に対してＪＰＥＧ２０００のエンコードデータをメモリセルアレイ１１に書き込むことを通知する。コントローラ２０はこの通知を受け、エンコードされた画像データに基づき拡張パリティを生成する。
【０１４３】
＜変形例４＞  
次に、図２３を用いて第３の実施形態の変形例（以下、変形例４）に係るホスト機器１及びこれに制御されるメモリカード２について説明する。変形例４においてもデジタルカメラを一例に挙げて説明する。一般的なデジタルカメラのモードとして、撮影した画像データにつき、非圧縮データの他、圧縮データを生成し、それぞれのデータをメモリカード２に転送する手法がある。以下変形例４に係るホスト機器１及びこれに制御されるメモリカード２では、
モード１：圧縮データの書き込み  
モード２：非圧縮データの書き込み  
モード３：非圧縮データ及び圧縮データの書き込み  
モード４：非圧縮データの書き込み（読み出し時には、ＪＰＥＧエンコーダ／デコーダで処理した後、ホスト機器に転送）  
の、４つのモードを有する。
【０１４４】
１．＜全体構成例＞  
本実施形態では各モードで機能する場合のＪＰＥＧエンコーダ／デコーダ部２０−２について説明する。上記したように、ＪＰＥＧエンコーダ／デコーダ部２０−２は、ホスト機器１からの指示に従い４つのモードのいずれかで機能する。
【０１４５】
＜モード１＞  
ホスト機器１からモード１で動作するよう指示があると、ＪＰＥＧエンコーダ／デコーダ部２０−２は、書き込み動作にてＳＤインタフェース２１を介してホスト機器１から転送されたＲＡＷデータにつきＪＰＥＧ方式にエンコード（圧縮・変換）する。ＪＰＥＧエンコーダ／デコーダ部２０−２でエンコードされた圧縮データは、ＲＡＭ２４に転送され、その後、ＭＰＵ２２によってＮＡＮＤフラッシュメモリ１０に書き込まれる。
【０１４６】
また読み出し時にエンコードされた画像データをホスト機器１に出力する際、ＮＡＮＤインタフェース２５を介してＮＡＮＤフラッシュメモリ１０から転送され、ＲＡＭ２４に一時保持された画像データにつき、ＪＰＥＧエンコーダ／デコーダ部２０−２がデコードを行う。その後、このデコードされた画像データはＳＤインタフェース２１を介してホスト機器１に転送される。
【０１４７】
＜モード２＞  
ホスト機器１からモード２で動作するよう指示があると、メモリコントローラ２０はＲＡＷデータをＮＡＮＤフラッシュメモリ１０に書き込む。つまり、このモード２においてメモリコントローラ２０はＲＡＷデータに対しデータの圧縮を行わずＮＡＮＤフラッシュメモリ１０にデータ書き込みを行う。
【０１４８】
ＮＡＮＤフラッシュメモリ１０に書き込まれたデータを読み出す際は、保存されたデータは非圧縮であるため、メモリコントローラ２０はデコードせずホスト機器１に転送する。
【０１４９】
＜モード３＞  
ホスト機器１からモード３で動作するよう指示があると、上記モード１とモード２を組み合わせる。つまり、ＪＰＥＧエンコーダ／デコーダ部２０−２でエンコードした画像データと非圧縮の画像データと、の２つのデータをＮＡＮＤフラッシュメモリ１０に書き込む。
【０１５０】
読み出す際は、圧縮データについてはＪＰＥＧエンコーダ／デコーダ部２０−２でデコードしＮＡＮＤフラッシュメモリ１０に転送し、また非圧縮データについては伸長せずＮＡＮＤフラッシュメモリ１０から読み出したデータをホスト機器１に転送する。
【０１５１】
＜モード４＞  
モード４においても上記モード２と同様に非圧縮データがＮＡＮＤフラッシュメモリ１０に書き込まれる。これに対し、読み出し時にはＪＰＥＧエンコーダ／デコーダ部２０−２で非圧縮データにつきエンコード及びデコード処理を行った後、ＭＰＵ２２によってホスト機器１に転送される。
【０１５２】
＜変形例４に係る効果＞  
変形例４に係るホスト機器１及びこれに制御されるメモリカード２であると、メモリカード２への書き込み速度を高速にし、メモリカード２のＮＡＮＤフラッシュメモリ１０のメモリ使用量を削減することが出来る。例えば、モード４で動作した場合、ホスト機器１は、あたかもメモリカード２に格納したＪＰＥＧデータを読み出したように見える。非圧縮データのみ書き込めばよいので、非圧縮データと圧縮データの両方を書き込む従来に比べて、書き込み時間を短縮でき、かつメモリ使用容量も減らすことができる。
【０１５３】
また、ＪＰＥＧエンコーダ／デコーダ２０−２は比較的回路構成が簡単である。このため、低コストでメモリコントローラ２０に内蔵することが出来、メモリカード２の単価を大幅に上げることはない。例えば、記憶装置がＳＳＤ（Solid State Drive）の場合、記憶装置内にＪＰＥＧエンコーダ／デコーダ２０−２を実装してもコストが大幅に上昇することはなく、比較的簡単に実装することができる。
【０１５４】
なお、上記第１の実施形態において、データＣがホスト機器１から転送された場合、すなわちデータに後続してＮｕｌｌデータが転送されない場合であっても、ユーザデータが書き込まれる最後のページの末尾に所定の空き領域が有った場合には、上記説明したようにデータＡ、データＢに対して行った手法で拡張パリティを生成しても良い。
【０１５５】
なお、本願発明は上記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、上記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出されうる。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出されうる。
【符号の説明】
【０１５６】
１…ホスト機器、２…メモリカード２、５…ホストバス、１０…ＮＡＮＤ型フラッシュメモリ、１１…メモリセルアレイ、１２…ロウデコーダ、１３…ページバッファ、１４…電圧発生回路、１５…Ｉ／Ｏバッファ、１６…制御部、１７…センスアンプ、２０…コントローラ、２０−２…ＪＰＥＧエンコーダ／デコーダ、２１…ＳＤインタフェース、２２…ＭＰＵ、２２−１…監視部、２２−２…圧縮部、２２−３…制御部、２２−４…管理部、２２−５…生成部、２３…ＲＯＭ、２４…ＲＡＭ、２５…ＮＡＮＤインタフェース、２６…ＥＣＣ回路、２７…レジスタ、２８…エンコーダ、２８−１…疑似乱数発生回路、２８−２…スクランブル回路、
【図１】
2013191169.tif 000003
【図２】
2013191169.tif 000004
【図３】
2013191169.tif 000005
【図４】
2013191169.tif 000006
【図５】
2013191169.tif 000007
【図６】
2013191169.tif 000008
【図７】
2013191169.tif 000009
【図８】
2013191169.tif 000010
【図９】
2013191169.tif 000011
【図１０】
2013191169.tif 000012
【図１１】
2013191169.tif 000013
【図１２】
2013191169.tif 000014
【図１３】
2013191169.tif 000015
【図１４】
2013191169.tif 000016
【図１５】
2013191169.tif 000017
【図１６】
2013191169.tif 000018
【図１７】
2013191169.tif 000019
【図１８】
2013191169.tif 000020
【図１９】
2013191169.tif 000021
【図２０】
2013191169.tif 000022
【図２１】
2013191169.tif 000023
【図２２】
2013191169.tif 000024
【図２３】
2013191169.tif 000025
【図２４】
2013191169.tif 000026