(57)【要約】【課題】バッファメモリにデータをためることなく、不揮発性メモリに直接データを書き込み、また不揮発性メモリから直接データを読み出すことにより、データの転送性能を向上させると共に、誤ったデータが書き込まれたりホストに転送されたりすることによる不都合を解消する。【解決手段】ホスト１０２から転送されたデータを不揮発性メモリ１０３に直接書き込む際、ＣＲＣコードがエラーであると判定された場合には、アドレス管理テーブル１０８の情報を更新せず、不揮発性メモリ１０３から誤ったデータが読み出されるのを防止する。一方、不揮発性メモリからデータを読み出してホスト１０２にデータを転送する際、読み出したデータに誤りがある場合には、ホストインターフェース１０５でＣＲＣコードをエラーに設定するように制御し、転送中のデータに誤りがあることをホスト１０２に通知する。【選択図】図２
2007310803.tif 000002
【特許請求の範囲】
【請求項１】
ホストから書き込みコマンドと論理アドレスを受信する受信ステップと、
アドレス管理テーブルを参照して前記論理アドレスに対応した物理アドレスを決定するアドレス決定ステップと、
前記ホストから転送されたデータを、前記アドレス決定ステップで決定した不揮発性メモリの物理アドレスに書き込むために前記不揮発性メモリに転送するデータ転送ステップと、
前記ホストから転送されたデータについて、転送中に誤りが発生したか否かを確認する確認ステップと、
前記アドレス管理テーブルに書き込まれた物理アドレスの更新を行うアドレス更新ステップとを含む不揮発性記憶装置の書き込み方法であって、
前記確認ステップで前記ホストから転送中のデータに誤りが発生したことが確認された場合、前記アドレス更新ステップにおいて物理アドレスの更新を行わないことを特徴とする不揮発性記憶装置の書き込み方法。
【請求項２】
前記不揮発性メモリとして、コマンドを用いてデータの書き込みまたは読み出しを行う不揮発性メモリを用い、かつ、
前記確認ステップで前記ホストから転送中のデータに誤りが発生したことが確認されなかった場合には、前記不揮発性メモリに対し書き込み実行コマンドを発行し、
前記確認ステップで前記ホストから転送中のデータに誤りが発生したことが確認された場合には、前記不揮発性メモリに対しリセットコマンドを発行してデータを破棄することを特徴とする請求項１に記載の不揮発性記憶装置の書き込み方法。
【請求項３】
前記不揮発性メモリとして、ワード単位でのデータの書き込みまたは読み出しが可能な不揮発性メモリを用い、前記データ転送ステップによって転送されたデータを前記不揮発性メモリにそのまま書き込むことを特徴とする請求項１に記載の不揮発性記憶装置の書き込み方法。
【請求項４】
ホストから転送中のデータに誤りが発生したか否かを、ＣＲＣ（Cyclic Redundancy Check）コードを利用して確認することを特徴とする請求項１〜３のいずれかに記載の不揮発性記憶装置の書き込み方法。
【請求項５】
前記不揮発性メモリと、前記不揮発性メモリへのデータの書き込みを制御するコントローラが、異なるチップで構成されていることを特徴とする請求項１〜４のいずれかに記載の不揮発性記憶装置の書き込み方法。
【請求項６】
前記不揮発性メモリと前記コントローラが同一のパッケージ内に収められていることを特徴とする請求項５に記載の不揮発性記憶装置の書き込み方法。
【請求項７】
ホストから読み出しコマンドと論理アドレスを受信する受信ステップと、
アドレス管理テーブルを参照して前記論理アドレスに対応した物理アドレスを決定するアドレス決定ステップと、
前記アドレス決定ステップで決定した不揮発性メモリの物理アドレスからデータを読み出す読み出しステップと、
前記不揮発性メモリから読み出されたデータをホストに転送する転送ステップと、
前記不揮発性メモリから前記データと共に読み出された誤り訂正符号を用いて前記データに誤りがあるか否かを検査する検査ステップと、
前記ホストに転送中のデータに誤りが発生したか否かを確認する確認ステップとを含む不揮発性記憶装置の読み出し方法であって、
前記検査ステップでデータに誤りがあることが判明した場合、前記確認ステップにおいて、転送中のデータに誤りが発生したか否かにかかわらず、誤りが発生したものとして前記ホストに通知することを特徴とする不揮発性記憶装置の読み出し方法。
【請求項８】
転送中のデータに誤りが発生したものとして前記ホストに通知する手段としてＣＲＣ（Cyclic Redundancy Check）コードを利用することを特徴とする請求項７に記載の不揮発性記憶装置の読み出し方法。
【請求項９】
前記ＣＲＣコードを反転することによって転送中のデータに誤りが発生したことを通知することを特徴とする請求項８に記載の不揮発性記憶装置の読み出し方法。
【請求項１０】
前記検査ステップでデータに誤りがあることが判明した場合、誤りを訂正したデータを前記不揮発性メモリに書き込むことを特徴とする請求項７〜９のいずれかに記載の不揮発性記憶装置の読み出し方法。
【請求項１１】
前記不揮発性メモリと、前記不揮発性メモリからのデータの読み出しを制御するコントローラが、異なるチップで構成されていることを特徴とする請求項７〜１０のいずれかに記載の不揮発性記憶装置の読み出し方法。
【請求項１２】
前記不揮発性メモリと前記コントローラが同一のパッケージ内に収められていることを特徴とする請求項１１に記載の不揮発性記憶装置の読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを用いた不揮発性記憶装置の書き込み方法および読み出し方法に関するものである。
【背景技術】
【０００２】
近年、不揮発性記憶装置の一種であるメモリカードは、デジタルカメラや携帯電話の記憶装置として市場を拡大おり、デジタルカメラの高画素化や携帯電話での動画記録等の用途へ向けて、さらなる大容量化・高速化の拡がりを見せている。
【０００３】
メモリカードで使用されている主な不揮発性メモリとして、ＮＡＮＤタイプのフラッシュメモリがある。ＮＡＮＤタイプのフラッシュメモリは、コマンドを用いて書き込みや読み出しを行えるようになっている。現在のメモリの中では最も高集積を実現できているＮＡＮＤタイプのフラッシュメモリであるが、今後のより大容量化に伴い書換え回数の低下等信頼性上の課題が懸念されている。
【０００４】
以下、特許文献１に記載された従来の不揮発性記憶装置の書き込み方法および読み出し方法について、図面を参照して説明する。
【０００５】
図１０は従来の書き込み方法および読み出し方法を実施する不揮発性記憶装置の構成を示したブロック図である。図１０において１００１は不揮発性記憶装置であるメモリカード、１００２はメモリカード１００１に対してデータの書き込みや読み出しを行うホスト、１００３はメモリカード１００１の内部においてホスト１００２からのデータが格納される不揮発性メモリである。ここでは、不揮発性メモリ１００３として、ＮＡＮＤタイプのフラッシュメモリのようなコマンド入力方式の不揮発性メモリを用いている。
【０００６】
１００４はホスト１００２とのインターフェースを制御するとともに、不揮発性メモリ１００３の制御を行うコントローラである。
【０００７】
コントローラ１００４は内部に以下の構成要素を含んでいる。１００５はホスト１００２とのインターフェースを制御するホストインターフェース、１００６は不揮発性メモリ１００３の制御を行うコマンド方式のメモリインターフェース、１００７はコントローラ１００４内部の各ブロックを統合的に制御するＭＰＵである。また１００８はアドレス管理テーブルで、ホスト１００２の指定するアドレス（以後、論理アドレスという）のデータが不揮発性メモリ１００３のアドレス（以後、物理アドレスという）のどこに格納されているかを管理している。
【０００８】
１００９は揮発性メモリで構成されるバッファメモリで、ホスト１００２と不揮発性メモリ１００３の間にあり、双方の間でデータ転送を行う際に一時的に使用される。１０１０はＥＣＣ回路であり、ホスト１００２から不揮発性メモリ１００３に書き込むデータに付加するＥＣＣ符号を演算したり、不揮発性メモリ１００３から読み出してホスト１００２に転送するデータの誤り訂正を行ったりする。
【０００９】
次に、図１１のフローチャートと図１２のタイミングチャートを用いてデータの書き込み方法について説明する。図１２にはホスト１００２とメモリカード１００１間のインターフェース、バッファメモリ１００９へのデータの書き込み・読み出し、不揮発性メモリ１００３へのデータの書き込み・読み出しについてそれぞれ示している。
【００１０】
図１１のステップＳ１１０１においてメモリカード１００１はスタンバイ状態にあり、ホスト１００２からのコマンドを待っている。ステップＳ１１０２で書き込みコマンドがホスト１００２から入力されたら、ステップＳ１１０３へと遷移する。
【００１１】
時間Ｔ１２０１で、ホスト１００２はメモリカード１００１に書き込みのコマンドとともに書き込みを行う論理アドレスを発行する（図中、Ｃｏｍと表記）。これを受けてステップＳ１１０３で、ＭＰＵ１００７はアドレス管理テーブル１００８を参照し、論理アドレスに対応するデータの書き込み先となる物理アドレスを決定する。この際、ＭＰＵ１００７は、論理アドレスに対応するデータが既に書き込まれている物理アドレスのデータ（以後、旧データという）は残したままで新たな物理アドレスを選択して、ホスト１００２からの書き込みデータ（以後、新データという）を書き込むことになる。これは、書き込み途中に発生する電源遮断等の不慮の事態に備え、旧データを残したまま新データを書き込むことでデータの信頼性を向上させるためである。
【００１２】
以降、ステップＳ１１０４でのデータの転送待ちに入る。これはホスト１００２からの書き込みデータがホストインターフェース１００５を介してバッファメモリ１００９に転送されるのを待つためである。
【００１３】
時間Ｔ１２０２で、ホスト１００２はメモリカード１００１に書き込むデータ（セクター単位）の転送を開始する（図中、Ｄａｔａと表記）。データを全て転送した後、時間Ｔ１２０３で転送したデータに対応するＣＲＣ（Cyclic Redundancy Check）コードを転送する（図中、ＣＲＣと表記）。このＣＲＣコードは、ホスト１００２とメモリカード１００１間の伝送路におけるデータの誤りを検出するためのものであり、ホスト１００２からのデータの書き込みの場合には、ホストインターフェース１００５が、ＣＲＣコードが正当であるかどうかを判定する。ここではデータの伝送品質が高く、ＣＲＣエラーが発生しない場合に限定して説明する。時間Ｔ１２０４で、ホスト１００２はデータおよびＣＲＣコードの転送を全て終える。
【００１４】
不揮発性メモリ１００３に書き込むデータは、当然のことながら伝送路を正しく転送されてきた、つまりＣＲＣエラーのないデータのみなので、バッファメモリ１００９は、ＣＲＣのチェックを行うまでの期間、データを一時的に保持するために使用される。
【００１５】
ステップＳ１１０４では、ホスト１００２からのデータとＣＲＣコードが全てメモリカード１００１に転送されるのを待っている。時間Ｔ１２０４で転送が終了するのを受けて、ＭＰＵ１００７は、ステップＳ１１０５からメモリインターフェース１００６を制御して、不揮発性メモリ１００３に書き込みコマンドと物理アドレスを先頭につけてデータを転送していく。ステップＳ１１０５でのデータ転送は、時間Ｔ１２０５〜Ｔ１２０７の処理に相当する。
【００１６】
時間Ｔ１２０５からはメモリインターフェース１００６が書き込みコマンドと物理アドレスを不揮発性メモリ１００３に転送し、時間Ｔ１２０６からはＭＰＵ１００７がバッファメモリ１００９にあるデータを不揮発性メモリ１００３に転送する。この際、ＥＣＣ回路１０１０では不揮発性メモリ１００３に転送するデータに対するＥＣＣ符号の演算を行う。
【００１７】
次に、時間Ｔ１２０７からはＥＣＣ回路１０１０で演算したＥＣＣ符号（図中、Ｅと表記）を、内部バスを介して不揮発性メモリ１００３に転送する（ステップＳ１１０６）。ＥＣＣ符号の転送を終えると、時間Ｔ１２０８から書き込み処理を実行するコマンドを、メモリインターフェース１００６を介して不揮発性メモリ１００３に送る。
【００１８】
時間Ｔ１２０９以降、ステップＳ１１０７では不揮発性メモリ１００３にデータが正常に書き込まれたことを確認し、ステップＳ１１０８でＭＰＵ１００７はアドレス管理テーブル１００８の情報を更新する。
【００１９】
以上のようにしてホスト１００２からメモリカード１００１へのデータの書き込みを行う。
【００２０】
次に、図１３のフローチャートと図１４のタイミングチャートを用いてデータの読み出し方法について説明する。図１４にはホスト１００２とメモリカード１００１間のインターフェース、バッファメモリ１００９へのデータの書き込み・読み出し、不揮発性メモリ１００３へのデータの書き込み・読み出しについてそれぞれ示している。
【００２１】
図１３のステップＳ１３０１においてメモリカード１００１はスタンバイ状態にあり、ホスト１００２からのコマンドを待っている。ステップＳ１３０２で、読み出しコマンドがホスト１００２から入力されたら、ステップＳ１３０３へと遷移する。
【００２２】
時間Ｔ１４０１で、ホスト１００２はメモリカード１００１に読み出しのコマンドとともに読み出しを行う論理アドレスを発行する。これを受けてステップＳ１３０３では、ＭＰＵ１００７はアドレス管理テーブル１００８を参照し、論理アドレスに対応するデータの書き込まれている物理アドレスを検索する。
【００２３】
次にステップＳ１３０４では、時間Ｔ１４０２からＭＰＵ１００７がメモリインターフェース１００６を介して不揮発性メモリ１００３に読み出しコマンドと読み出し対象となる物理アドレスを発行する。その後、不揮発性メモリ１００３からデータが読み出し可能となった時点の時間Ｔ１４０３で、内部バスを介して不揮発性メモリ１００３からバッファメモリ１００９へとセクター単位でデータの転送が行われる。
【００２４】
ステップＳ１３０４のデータの転送を終えると、ステップＳ１３０５では、時間Ｔ１４０４で、不揮発性メモリ１００３からＥＣＣ符号を読み出し、ＥＣＣ回路１０１０で誤りが発生しているかどうかの検査を行う。ステップＳ１３０６では、ステップＳ１３０５の検査でエラーがあると判定された場合にステップＳ１３０７へ遷移し、時間Ｔ１４０５からバッファメモリ１００９に転送されているデータの誤り訂正を行う（図中、Ｃｏｒｒと表記）。図１４のタイミングチャートは、誤りがあり訂正が必要な場合について示している。
【００２５】
ステップＳ１３０７での誤りの訂正を終えると、ホスト１００２がバッファメモリ１００９からホストインターフェース１００５を介してデータを読み出すのを待つステップＳ１３０８に遷移する。一方、ステップＳ１３０６でエラーなしと判定された場合には、エラー訂正なしにステップＳ１３０８へと遷移する。
【００２６】
なお、図１４では、誤り訂正が必要な場合についてのタイミングチャートを示しているが、ホスト１００２に対してデータを読み出すのは、当然のことながら誤り訂正を行った後のデータなので、読み出し時においてバッファメモリ１００９はＥＣＣによる誤り訂正を行うため、一時的にデータを保持するために使用されている。
【００２７】
最後に、ホスト１００２は時間Ｔ１４０６でメモリカード１００１からのデータの読み出しを開始し、時間Ｔ１４０７でデータの読み出しを終了し、転送データに対応するＣＲＣコードを確認して読み出し処理を終了する。ホスト１００２へ転送するＣＲＣコードはホストインターフェース１００５が生成して付加する。
【特許文献１】特開２０００−３０５８６１号公報
【発明の開示】
【発明が解決しようとする課題】
【００２８】
以上説明した従来の書き込み方法および読み出し方法では、ホストと不揮発性メモリの間に必ずバッファメモリを介する構成を採るために、データ転送の性能を低下させる要因となっていた。
【００２９】
データの転送性能を高める方法として、バッファメモリにデータを蓄えることなく、不揮発性メモリに直接データを書き込み、また不揮発性メモリから直接データを読み出すことが考えられる。
【００３０】
しかし、このような方法を採用した場合、従来バッファメモリにデータを一時的に保持して行っていた誤りデータの修正や破棄ができなくなり、誤ったデータがそのまま不揮発性メモリに書き込まれたり、ホストに転送されたりする不都合が生じる。
【００３１】
本発明は、データ転送性能を向上させ、しかも誤ったデータが不揮発性メモリに書き込まれ、またホストに転送されることによる不都合を解消した書き込み方法および読み出し方法を提供するものである。
【課題を解決するための手段】
【００３２】
上記課題を解決するために、本発明の不揮発性記憶装置の書き込み方法は、
ホストから書き込みコマンドと論理アドレスを受信する受信ステップと、
アドレス管理テーブルを参照して前記論理アドレスに対応した物理アドレスを決定するアドレス決定ステップと、
前記ホストから転送されたデータを、前記アドレス決定ステップで決定した不揮発性メモリの物理アドレスに書き込むために前記不揮発性メモリに転送するデータ転送ステップと、
前記ホストから転送されたデータについて、転送中に誤りが発生したか否かを確認する確認ステップと、
前記アドレス管理テーブルに書き込まれた物理アドレスの更新を行うアドレス更新ステップとを含む不揮発性記憶装置の書き込み方法であって、
前記確認ステップで前記ホストから転送中のデータに誤りが発生したことが確認された場合、前記アドレス更新ステップにおいて物理アドレスの更新を行わないことを特徴とする。
【００３３】
本発明の不揮発性記憶装置の書き込み方法において、前記不揮発性メモリとして、コマンドを使用してデータの書き込みまたは読み出しを行う不揮発性メモリを用い、かつ、
前記確認ステップで転送中のデータに誤りが発生したことが確認されなかった場合には、前記不揮発性メモリに対し書き込み実行コマンドを発行し、
前記確認ステップで転送中のデータに誤りが発生したことが確認された場合には、前記不揮発性メモリに対しリセットコマンドを発行してデータを破棄するようにしてもよい。
【００３４】
同様に、前記不揮発性メモリとして、ワード単位でのデータの書き込みまたは読み出しが可能な不揮発性メモリを用い、前記データ転送ステップによって転送されたデータを前記不揮発性メモリにそのまま書き込むようにしてもよい。
【００３５】
また、本発明の不揮発性記憶装置の書き込み方法において、ホストから転送中のデータに誤りが発生したか否かを、ＣＲＣ（Cyclic Redundancy Check）コードを利用して確認することが好ましい。
【００３６】
更に、本発明の不揮発性記憶装置の書き込み方法において、前記不揮発性メモリと、前記不揮発性メモリへのデータの書き込みを制御するコントローラが、異なるチップで構成されていてもよい。同様に、前記不揮発性メモリと前記コントローラが同一のパッケージ内に収められていてもよい。
【００３７】
次に、上記課題を解決する本発明の不揮発性記憶装置の読み出し方法は、
ホストから読み出しコマンドと論理アドレスを受信する受信ステップと、
アドレス管理テーブルを参照して前記論理アドレスに対応した物理アドレスを決定するアドレス決定ステップと、
前記アドレス決定ステップで決定した不揮発性メモリの物理アドレスからデータを読み出す読み出しステップと、
前記不揮発性メモリから読み出されたデータをホストに転送する転送ステップと、
前記不揮発性メモリから前記データと共に読み出された誤り訂正符号を用いて前記データに誤りがあるか否かを検査する検査ステップと、
前記ホストに転送中のデータに誤りが発生したか否かを確認する確認ステップとを含む不揮発性記憶装置の読み出し方法であって、
前記検査ステップでデータに誤りがあることが判明した場合、前記確認ステップにおいて、転送中のデータに誤りが発生したか否かにかかわらず、誤りが発生したものとして前記ホストに通知することを特徴とする。
【００３８】
本発明の不揮発性記憶装置の読み出し方法において、転送中のデータに誤りが発生したものとして前記ホストに通知する手段としてＣＲＣ（Cyclic Redundancy Check）コードを利用することが好ましい。同様に、前記ＣＲＣコードを反転することによって転送中のデータに誤りが発生したことを通知することが好ましい。
【００３９】
また、本発明の不揮発性記憶装置の読み出し方法において、前記検査ステップでデータに誤りがあることが判明した場合、誤りを訂正したデータを前記不揮発性メモリに書き込むことが好ましい。
【発明の効果】
【００４０】
本発明によれば、不揮発性メモリへのデータの書き込みおよび、不揮発性メモリからのデータの読み出しに際して、中間に介在するバッファメモリを必要としないので、より高速に書き込みや読み出しが行える。しかもバッファメモリを除くことによる不都合を回避できる。
【発明を実施するための最良の形態】
【００４１】
以下、本発明の実施の形態について図面を参照して説明する。
【００４２】
（実施の形態１）
図１は、本発明の書き込み方法および読み出し方法を実施する不揮発性記憶装置の構成を示したブロック図である。
【００４３】
図１において、１０１は不揮発性記憶装置であるメモリカード、１０２はメモリカード１０１に対してデータを書き込みと読み出しを行うホストである。
【００４４】
１０３はメモリカード１００の内部においてホスト１０２からのデータが格納される不揮発性メモリである。本実施の形態では、不揮発性メモリ１０３として、ＮＡＮＤタイプのフラッシュメモリのようなコマンド入力方式の不揮発性メモリを用いている。
【００４５】
１０４はホスト１０２とのインターフェースを制御するとともに、不揮発性メモリ１０３の制御を行うコントローラである。一般的には、コストが優先される不揮発性メモリ１０３と、多種の不揮発性メモリ１０３に対応するためのコントローラ１０４は、異なる半導体チップで構成されるが、携帯機器に主に使用されるという特性上、同一のパッケージに封入することで小型のメモリカード１０１を実現することができる。
【００４６】
コントローラ１０４は内部に以下の構成要素を含んでいる。１０５はホスト１０２とのインターフェースを制御するホストインターフェース、１０６は不揮発性メモリ１０３の制御を行うコマンド方式のメモリインターフェース、１０７はコントローラ１０４内部の各ブロックを統合的に制御するＭＰＵ、１０８はアドレス管理テーブルで、論理アドレスと物理アドレスの対応について管理している。
【００４７】
１０９はＥＣＣ回路であり、ホスト１０２から不揮発性メモリ１０３に書き込むデータに付加するＥＣＣ符号を演算したり、ホスト１０２に転送するために不揮発性メモリ１０３から読み出したデータの誤り訂正を行ったりする。また１１０は、不揮発性メモリ１０３からホストインターフェース１０５に転送されるデータに遅延時間を与える遅延回路、１１１は、ホストインターフェース１０５の出力とＥＣＣ回路１０９の出力のいずれかを選択するセレクタである。
【００４８】
以下、まず、図２のフローチャートおよび図３のタイミングチャートを用いてデータの書き込み方法について説明する。
【００４９】
図３（Ａ）、（Ｂ）には、ホスト１０２とメモリカード１０１間のインターフェース、不揮発性メモリ１０３へのコマンド発行および書き込みデータの転送について、ホスト１０２からメモリカード１０１への転送が正しく行われた場合と、正しく行われなかった場合についてそれぞれ示している。
【００５０】
ステップＳ２０１においてメモリカード１０１はスタンバイ状態にあり、ホスト１０２からのコマンドを待っている。ステップＳ２０２で、書き込みコマンドがホスト１０２から入力されたら、ステップＳ２０３へと遷移する。
【００５１】
時間Ｔ３０１で、ホスト１０２は、メモリカード１０１に書き込みのコマンドと書き込みを行う論理アドレスを発行する。これを受けてステップＳ２０３では、ＭＰＵ１０７はアドレス管理テーブル１０８を参照し、論理アドレスに対応するデータの書き込み先となる物理アドレスを決定する。この際、ＭＰＵ１０７は、書き込み途中の電源遮断等の不慮の事態に備え、論理アドレスに対応する形で既に書き込まれている物理アドレスの旧データは残したままで、新たな物理アドレスを選択してホスト１０２からのデータを書き込む。
【００５２】
ステップＳ２０４の処理で、ＭＰＵ１０７は、時間Ｔ３０２からメモリインターフェース１０６を介して、不揮発性メモリ１０３に書き込み開始を示すコマンドの発行およびアドレスの指定を行う。
【００５３】
次にステップＳ２０５の処理で、ホスト１０２は、時間Ｔ３０３からメモリカード１０１に書き込みを行うデータ（セクター単位）の転送を開始するが、ＭＰＵ１０７は、内部バスを介して不揮発性メモリ１０３にホスト１０２からのデータをそのまま転送する。この時にＥＣＣ回路１０９は、付加すべきＥＣＣ符号の演算を平行して行う。なお、本実施の形態では、ホスト１０２から不揮発性メモリ１０３への転送の際にホストインターフェース１０５等で遅延が発生し、転送開始の時間は時間Ｔ３０３から少し遅延した時間Ｔ３０４になる。ただし、遅延時間は全体の処理に比較し無視できる程度である。
【００５４】
時間Ｔ３０５で、ホスト１０２はメモリカード１０１へのデータの転送を終えると、ステップＳ２０６に移り、ステップＳ２０５で転送したデータに対応するＣＲＣコードを転送する。また、一定の遅延を持つものの平行して時間Ｔ３０６で、ＭＰＵ１０７は内部バスを介した不揮発性メモリ１０３へのデータの転送を終えてステップＳ２０６に移り、ステップＳ２０５で転送したデータに対応するＥＣＣ符号をＥＣＣ回路１０９から不揮発性メモリ１０３へ転送する。
【００５５】
次にステップＳ２０７では、ステップＳ２０６のＣＲＣのチェックでＯＫであったかエラーであったかを判定する。図３（Ａ）に示すように、ＣＲＣがＯＫの場合には（図中、ＣＲＣＯＫと表記）、ステップＳ２０８に遷移し、ＭＰＵ１０７はメモリインターフェース１０６を介して不揮発性メモリ１０３に書き込み実行コマンドを発行し、ステップＳ２０５、Ｓ２０６で転送したデータの書き込みを不揮発性メモリ１０３に実行させる。続いてステップＳ２０９でアドレス管理テーブル１０８の情報を更新し、スタンバイ状態に移行する。
【００５６】
一方、図３（Ｂ）に示すように、ステップＳ２０７でＣＲＣがエラーであると判定された場合には（図中、ＣＲＣＮＧと表記）、ＭＰＵ１０７はアドレス管理テーブル１０８の情報を更新せずに、ステップＳ２１０で、メモリインターフェース１０６を介して不揮発性メモリ１０３にリセットコマンドを発行することで（図中、Ｒｅｓｅｔと表記）、ステップＳ２０５、Ｓ２０６で転送したデータの破棄を不揮発性メモリ１０３に実行させる。そしてスタンバイ状態に移行する。
【００５７】
以上のようにしてホスト１０２からメモリカード１０１へのデータの書き込みを行う。本実施の形態では、ホストインターフェース１０５でＣＲＣがエラーであると判定された場合には、不揮発性メモリ１０３へのデータ書き込みは行われず、データが破棄されるため、誤ったデータが不揮発性メモリ１０３に書き込まれるのを防止できる。
【００５８】
次に、図４のフローチャートと図５のタイミングチャートを用いてデータ読み出し方法について説明する。図５には、ホスト１０２とメモリカード１０１間のインターフェース、不揮発性メモリ１０３からのデータの読み出しについてそれぞれ示している。
【００５９】
ステップＳ４０１においてメモリカード１０１はスタンバイ状態にあり、ホスト１０２からのコマンドを待っている。ステップＳ４０２で、読み出しコマンドがホスト１０２から入力されたらステップＳ４０３へと遷移する。
【００６０】
時間Ｔ５０１で、ホスト１０２はメモリカード１０１に読み出しのコマンドと読み出しを行う論理アドレスを発行する。これを受けてステップＳ４０３では、ＭＰＵ１０７はアドレス管理テーブル１０８を参照し、論理アドレスに対応するデータの書き込まれている物理アドレスを検索する。
【００６１】
次にステップＳ４０４で、ＭＰＵ１０７が、時間Ｔ５０２からメモリインターフェース１０６を介して不揮発性メモリ１０３に物理アドレスを指定し、データ（セクター単位）の読み出しを行う。このデータは内部バスを介して遅延回路１１０へと転送され一定時間遅延された後、ホストインターフェース１０５を介して、時間Ｔ５０３からホスト１０２へと出力される。この際にＥＣＣ回路１０９で読み出しデータのＥＣＣ演算を行っている。なお、遅延回路１１０での遅延は、後述するＥＣＣ符号の読み出しとＥＣＣ符号の検査の判定を、ホスト１０２へのＣＲＣコードの出力前に行うための時間を確保するために必要である。
【００６２】
次に、データ（セクター単位）を不揮発性メモリ１０３から読み出したら、時間Ｔ５０４でステップＳ４０４の処理を終え、続いてステップＳ４０５でＥＣＣ符号を不揮発性メモリ１０３から読み出し、ＥＣＣ回路１０９でＥＣＣ符号の検査を行う。この検査の結果エラーがあれば判定Ｓ４０６でエラー有りと判定されて、ステップＳ４０７へと遷移する。
【００６３】
ステップＳ４０７では、ＭＰＵ１０７はＥＣＣエラーの結果を受けて、ホストインターフェース１０５にＣＲＣエラーを設定するように制御し、ホスト１０２に現在転送中のデータに誤りがあることを通知する。ステップＳ４０７の処理のうち少なくともＣＲＣエラーを設定する処理は時間Ｔ５０６までに、つまりホスト１０２がＣＲＣ符号を読み出し始める前に行う必要がある。遅延回路１１０はこの時間を確保するために存在している。ホストインターフェース１０５は誤ったＣＲＣコードを出力するために、演算した正しいＣＲＣコードを反転して出力する。そうすることでＣＲＣの演算結果は必ずエラーとなる。
【００６４】
ステップＳ４０７の処理を実行後ステップＳ４０８へと遷移し、ＣＲＣコードを含めてホスト１０２がデータの転送を終える時間Ｔ５０７まで待って処理を終了する。
【００６５】
ステップＳ４０６でエラーがないと判定された場合には、直ぐにステップＳ４０８へと遷移し、ＣＲＣコードを含めてホスト１０２がデータの転送を終える時間Ｔ５０７まで待って処理を終了する。この場合のタイミングチャートは、ＣＲＣＮＧをＣＲＣＯＫに代える以外は図５と同じである。
【００６６】
以上のようにしてメモリカード１０１からホスト１０２へのデータの読み出しを行う。本実施の形態では、不揮発性メモリ１０３から読み出したデータに誤りがある場合、ホストインターフェース１０５でＣＲＣコードをエラーありとしてホスト１０２に転送するため、転送済みの誤ったデータがホスト１０２で正しいデータとして認識されるのを防止できる。
なお、ホスト１０２とメモリカード１０１間のデータの転送単位および、コントローラ１０４と不揮発性メモリ６０１間のデータ転送単位は、本発明の効果が得られる範囲においてセクターでなくても構わないし、それぞれ異なる単位でも構わない。
【００６７】
（実施の形態２）
実施の形態１では、ＮＡＮＤタイプのフラッシュメモリのようなコマンド入力方式の不揮発性メモリを用いた場合について説明したが、本実施の形態では、強誘電体メモリ（ＦｅＲＡＭ）や抵抗変化型ＲＡＭ（ＲＲＡＭ）のようにワード単位での書き込み読み出しが可能な不揮発性メモリを用いた場合について説明する。
【００６８】
図６は、本実施の形態の書き込み方法および読み出し方法を実施する不揮発性記憶装置の構成を示したブロック図である。本実施の形態では、ワード単位での書き込み・読み出しが可能な不揮発性メモリ６０１を用いているため、これに対応してアドレス方式のメモリインターフェース６０２を用いている。それ以外の構成は図１の不揮発性記憶装置と同様であるため、同一機能を有する部分には同一の符号を付して説明を省略する。
【００６９】
以下、図７のフローチャートと図８のタイミングチャートを用いてデータの書き込み方法について説明する。図８にはホスト１０２とメモリカード１０１間のインターフェース、不揮発性メモリ６０１へのデータの書き込みについてそれぞれ示している。
ステップＳ７０１においてメモリカード１０１はスタンバイ状態にあり、ホスト１０２からのコマンドを待っている。ステップＳ７０２で、書き込みコマンドがホスト１０２から入力されたらステップＳ７０３へと遷移する。
【００７０】
時間Ｔ８０１で、ホスト１０２はメモリカード１０１に書き込みのコマンドとともに書き込みを行う論理アドレスを発行する。これを受けてステップＳ７０３で、ＭＰＵ１０７はアドレス管理テーブル１０８を参照し、論理アドレスに対応するデータの書き込み先となる物理アドレスを決定する。この際、ＭＰＵ１０７は論理アドレスに対応するデータが既に書き込まれている物理アドレスの旧データは残したままで、新たな物理アドレスを選択してホスト１０２からのデータを書き込むことになる。
【００７１】
ステップＳ７０４の処理で、ホスト１０２は、時間Ｔ８０２からメモリカード１０１に書き込みを行うデータの転送を開始するが、ＭＰＵ１０７はメモリインターフェース６０２を介し、不揮発性メモリ６０１に物理アドレスを指定してホスト１０２からのデータ（セクター単位）をそのまま転送してワード単位で書き込む。この時、ＥＣＣ回路１０９は付加すべきＥＣＣ符号の演算を平行して行う。
【００７２】
なお、本実施の形態では、ホスト１０２から不揮発性メモリ６０１へのデータ転送の際にホストインターフェース１０５等で遅延が発生し、転送開始の時間は時間Ｔ８０２から少し遅延した時間Ｔ８０３になる。ただし、全体の処理からは無視できる程度である。
【００７３】
ホスト１０２は、時間Ｔ８０４でメモリカード１０１へのデータの転送を終えると、ステップＳ７０５に移る。ＭＰＵ１０７は、時間Ｔ８０５から時間Ｔ８０７までの期間、ＥＣＣ回路１０９から不揮発性メモリ６０１へＥＣＣ符号の書き込みを行う。時間Ｔ８０４から時間Ｔ８０６までの期間は、ホスト１０２は、ステップＳ７０４でメモリカード１０１に転送したデータに対応するＣＲＣコードを転送する。このＣＲＣコードのチェックはホストインターフェース１０５で行う。なお時間Ｔ８０６はホスト１０２に依存し、時間Ｔ８０７はＭＰＵ１０７に依存するので、時間Ｔ８０６と時間Ｔ８０７の前後関係は決定できないし、またどちらでも構わない。
【００７４】
ステップＳ７０５の後、ステップＳ７０６ではＣＲＣがＯＫであったかエラーであったかを判定する。ＣＲＣがＯＫの場合にはステップＳ７０７に遷移し、ＭＰＵ１０７はアドレス管理テーブル１０８の情報を更新する。
【００７５】
ステップＳ７０５でＣＲＣエラーであると判定された場合には、ＭＰＵ１０７はアドレス管理テーブル１０８の情報を更新せずに、そのまま終了してスタンバイ状態に移行する。既にステップＳ７０４で不揮発性メモリ１０３にデータは書き込まれているが、伝送路におけるエラーが発生して正しくないデータの可能性があるため、アドレス管理テーブル１０８には反映されない。このためホスト１０２からみてメモリカード１０１からその不正なデータが読み出されることはない。
【００７６】
以上のようにしてホスト１０２からメモリカード１０１へのデータの書き込みを行う。なお、本実施の形態ではワード単位での書き込みが可能な不揮発性メモリ６０１を用いているため、データに誤りがある場合でも、不揮発性メモリ６０１へのデータの書き込みは行われるが、アドレス管理テーブル１０８の更新が行われないため、誤ったデータが有効なデータとして扱われることはない。
【００７７】
次に、本実施の形態におけるデータの読み出し方法について説明する。データ読み出しの際のフローチャートおよびタイムチャートは、基本的には、実施の形態１で説明した図４のフローチャートおよび図５のタイムチャートと同様であるため、ここでは異なる点について説明する。
【００７８】
図４のフローチャートにおいて、実施の形態１ではステップＳ４０６でエラーありと判定された場合、続くステップＳ４０７でホストインターフェース１０５がホスト１０２に誤ったＣＲＣ符号を送信するよう、ＭＰＵ１０７がホストインターフェース１０５に対し設定を行ったが、本実施の形態では、ステップＳ４０７で更に、メモリインターフェース６０２で誤りのあったアドレスを指定して、ＥＣＣ回路１０９で誤りが訂正されたデータの書き込みを不揮発性メモリ１０３に対して行う。図９にその際のタイミングチャートを示すが、時間Ｔ５０４にＥＣＣ回路１０９で誤り検出を行い、時間Ｔ５０５から誤りを訂正する書き込みを不揮発性メモリ６０１に対して行う。
【００７９】
以上のようにしてメモリカード１０１からホスト１０２へのデータの読み出しを行う。実施の形態１では、不揮発性メモリ６０１から読み出したデータに誤りがある場合、ホストインターフェース１０５でＣＲＣコードエラーありとしてホスト１０２に転送するだけであったが、本実施の形態では、引き続いて誤りを訂正したデータを不揮発性メモリ６０１に書き込むため、その後、誤りのないデータをホスト１０２転送することができる。
なお、実施の形態１と同様に、ホスト１０２とメモリカード１０１間のデータの転送単位および、コントローラ１０４と不揮発性メモリ６０１間のデータ転送単位はセクターでなくても構わないし、それぞれ異なる単位でも構わない。
【産業上の利用可能性】
【００８０】
本発明にかかる不揮発性記憶装置の書き込み方法および読み出し方法は、大容量の不揮発性記憶装置を対象としてデータを格納するホストに対し、書き込み処理および読み出し処理の性能を向上させることができる。本発明は、静止画記録再生装置や動画記録再生装置等のポータブルＡＶ機器や、携帯電話等のポータブル通信機器の記録媒体に適用することができる。
【図面の簡単な説明】
【００８１】
【図１】本発明の実施の形態１における不揮発性記憶装置のブロック図
【図２】実施の形態１におけるデータ書き込みのフローチャート
【図３】実施の形態１におけるデータ書き込みのタイミングチャート
【図４】実施の形態１におけるデータ読み出しのフローチャート
【図５】実施の形態１におけるデータ読み出しのタイミングチャート
【図６】本発明の実施の形態２における不揮発性記憶装置のブロック図
【図７】実施の形態２におけるデータ書き込みのフローチャート
【図８】実施の形態２におけるデータ書き込みのタイミングチャート
【図９】実施の形態２におけるデータ読み出しのタイミングチャート
【図１０】従来の不揮発性記憶装置のブロック図
【図１１】従来の方法におけるデータ書き込みのフローチャート
【図１２】従来の方法におけるデータ書き込みのタイミングチャート
【図１３】従来の方法におけるデータ読み出しのフローチャート
【図１４】従来の方法におけるデータ読み出しのタイミングチャート
【符号の説明】
【００８２】
１０１  メモリカード
１０２  ホスト
１０３、６０１  不揮発性メモリ
１０４  コントローラ
１０５  ホストインターフェース
１０６、６０２  メモリインターフェース
１０７  ＭＰＵ
１０８  アドレス管理テーブル
１０９  ＥＣＣ回路
１１０  遅延回路
【図１】
2007310803.tif 000003
【図２】
2007310803.tif 000004
【図３】
2007310803.tif 000005
【図４】
2007310803.tif 000006
【図５】
2007310803.tif 000007
【図６】
2007310803.tif 000008
【図７】
2007310803.tif 000009
【図８】
2007310803.tif 000010
【図９】
2007310803.tif 000011
【図１０】
2007310803.tif 000012
【図１１】
2007310803.tif 000013
【図１２】
2007310803.tif 000014
【図１３】
2007310803.tif 000015
【図１４】
2007310803.tif 000016