説明

メモリカード及びデータ処理装置並びにメモリカードの制御方法及び設定方法

メモリカード(1)は、データ処理装置(50)との間でコマンドやデータの送受信を行うホストインタフェース(2)と、データを格納する不揮発性メモリ(7)と、メモリカードの動作を制御するコントローラ(3)と、所定の管理情報を格納する記憶手段(32)とを備える。管理情報は、不揮発性メモリへの書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報を含む。コントローラ(3)は、データ書き込み動作時に、リトライ設定情報を参照し、リトライ設定情報がリトライ機能の停止を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させないように、また、リトライ設定情報がリトライ機能の作動を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させるように、書き込み動作を制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、書き換え可能な不揮発性メモリを備え、ホストに装着して使用されるメモリカードであって、特に、データ書き込み時のリトライ機能またはデータ読み出し時のエラー訂正機能を有するメモリカード及びそのようなメモリカードにアクセスするデータ処理装置(ホスト)に関する。
【背景技術】
【0002】
近年、デジタル情報を保存する記憶装置として、書き換え可能な不揮発性メモリを搭載したメモリカードや機器が普及してきている。特にメモリカードは、小型かつ耐震性に優れるため、今後、益々携帯機器で多用されることが期待されている。
【0003】
書き換え可能な不揮発性メモリの代表的なものにNAND型フラッシュメモリ(以下、「フラッシュメモリ」と称す。)がある。フラッシュメモリは、ブロック単位でその使用、未使用が管理されており、例えば、未使用のブロックに関して、管理データにおいて“1”が書き込まれ、データの書き込みを行った場合に、管理データを“1”から“0”に書き換える。
【0004】
また、一般的に、フラッシュメモリは、正常に書き込まれない場合が希に存在する。このため、フラッシュメモリには、正常書き込みであったか、または異常書き込みであったかを示すステータスをリード(読み出し)する機能が備わっており、データの書き込み後、このステータスをリードすることによって、書き込みが正常に行なわれたか否かを判別することが必要である。メモリカードによっては、フラッシュメモリを制御するコントローラが内蔵されており、コントローラがデータ書き込み後にステータスリードを行い、書き込みエラーが発生した場合は、そのブロックが再び書き込みブロックとして選択されないようにするために、コントローラに内蔵された、エラーが発生したブロックに対応する管理データを“1”から“0”に書き換える。
【0005】
また、正常にデータが書き込まれなかった場合すなわち書き込み時にエラーが発生した場合、そのデータを再度別のブロックに書き込みを行う処理(以下「リトライ処理」と称す。)も提案されている。なお、書き込み時のエラーは、フラッシュメモリの空き容量がない場合、データを書き込もうとしたフラッシュメモリの領域が不良であるため書き込みが行えない場合、書き込み時のイレース処理の失敗時等に発生する。
【0006】
また、フラッシュメモリに書き込まれたデータにおいて、他ブロックへのデータ書き込みによって、また、経年変化によって、希にデータ化けが発生する。このため、メモリカードとして所望のデータ信頼性を確保するために、データ読み出し時は、例えば、ブロック単位で、フラッシュメモリの信頼性に応じた誤り訂正符号を生成し、ブロックのデータに付加して、フラッシュメモリに書き込む。また、データ読み出し時には、読み出されたデータに対して誤り訂正処理を行った後、ホストへ転送する。
【0007】
以上のように、フラッシュメモリに希に発生する書き込みエラー、読み出しエラーは、殆どの場合、メモリカードに内蔵されたコントローラによってリトライ処理、及び誤り訂正処理を行うことによって回避される。このため、ホスト機器はフラッシュメモリのデータ信頼性を考慮することなくメモリカードを使用することができる。
【0008】
以上のような、フラッシュメモリの書き込みエラーに対するリトライ処理に関する技術として特許文献1に記載されたものが知られている。
【特許文献1】特開2002−108720号公報
【発明の開示】
【発明が解決しようとする課題】
【0009】
しかしながら、近年、メモリカードは、民生用途のみならず、業務用途の様々なホスト機器に用いられ始め、ホストによっては、従来のメモリカードの信頼性では、不十分な場合もある。
【0010】
書き込みエラーが発生しやすいフラッシュメモリにおいて、書き込みエラーが発生した場合のリトライ処理により、ホストに対して書き込みエラーとして通知される頻度が低減される。これにより、ホストによっては、書き込みエラーとして通知された場合の特別な処理を考慮することが無く、ホストの処理負担が軽減するという長所がある。しかしながら、リトライ処理はフラッシュメモリの内部で行われるため、フラッシュメモリ上で書き込みエラーが発生しているのか、リトライ処理が行われているのかどうか、ホスト側では全く分からない。リトライ処理によって書き込み時間が非常に長くなり、更に、リトライ処理においても書き込みエラーが発生した場合、リトライ処理の間、書き込み完了の通知を待たされたあげく、書き込みエラーになることもあった。
【0011】
静止画を記録するデジタルスチルカメラの場合は、リアルタイムでの処理が要求されないため、書き込みエラー通知された後でもホストによる対応は可能である。しかし、動画を記録するビデオカメラの場合、リアルタイムでの処理が要求される。メモリカードにおいてリトライ処理が実行されると、書き込み時間が長くなる場合があるため、ビデオカメラ(ホスト)側で書き込み時間を見積もりにくく、ビデオカメラ(ホスト)でのデータ処理が非常に難しくなるという課題がある。このように、メモリカードにおけるリトライ処理は、リアルタイム処理を要求するホストにおいては、有効な機能とならない場合もある。
【0012】
また、従来のメモリカードは、メモリカードとして所望のデータ信頼性となるように、フラッシュメモリの信頼性に応じて、誤り訂正符号を付加している。例えば、高信頼性のフラッシュメモリを内蔵したメモリカードには1ビット訂正回路が、また、低信頼性のフラッシュメモリを内蔵したメモリカードには3ビット訂正回路が搭載される。メモリカードとしては、何れも同等の信頼性を確保している。3ビット訂正回路を搭載したメモリカードは、3ビットまでの誤りは訂正可能であるが、4ビット以上の誤りが発生した場合には訂正不能となり、ホストに対してエラー通知をするが、場合によっては、誤訂正となり、誤ったデータをホストに返すことになる。通常、このようなケースに陥る確率は非常に低くなるように設定されている。しかし、エラーが通知されたり、或いは誤ったデータが正常データとして読み出されたりする以上、例えば、業務用のホスト等のように、非常に高い信頼性を要求するホストの場合、業務用ホスト側の工夫で、メモリカードの誤り訂正能力以上の信頼性を上げることはできないという課題があった。
【課題を解決するための手段】
【0013】
本発明は上記の課題を解決するためになされたものであり、メモリカードにおけるリトライ処理に起因する弊害や、メモリカードの誤り訂正処理に起因する問題を解決するメモリカード及びメモリカードに対する制御方法等を提供する。
【0014】
(1)本発明の第1の態様において、データ処理装置からデータの書き込み、読み出しが可能なメモリカードが提供される。メモリカードは、データ処理装置との間でコマンドやデータの送受信を行うホストインタフェースと、データを格納する不揮発性メモリと、メモリカードの動作を制御するコントローラと、所定の管理情報を格納する記憶手段とを備える。管理情報は、不揮発性メモリへの書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報を含む。
【0015】
コントローラは、データ書き込み動作時に、リトライ設定情報を参照し、リトライ設定情報がリトライ機能の停止を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させないように、また、リトライ設定情報がリトライ機能の作動を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させるように、書き込み動作を制御する。
【0016】
上記のメモリカードにおいて、管理情報はさらにメモリカード固有の特性情報を含んでもよい。そのとき、コントローラはデータ処理装置からの要求に応じて特性情報をデータ処理装置に送信してもよい。
【0017】
特性情報には、メモリカードにおいてデータ書き込みに要する最大の所要時間に関する情報や、メモリカードにおいてリトライ処理が発生する頻度に関する情報が含まれてもよい。
【0018】
(2)本発明の第2の態様において、データの読み出し、書き込みが可能で、かつ、書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードにアクセス可能なデータ処理装置が提供される。
【0019】
データ処理装置は、メモリカードとの間でコマンドやデータの送受信を行うカードインタフェースと、データ処理装置の動作を制御するコントローラとを備える。
コントローラは、メモリカードがデータ処理装置に装着されたとき又はデータ処理装置の電源投入時に、メモリカードから特性情報を読み出し、読み出した特性情報に基づき、メモリカードにおいてリトライ機能を実行させるか否かの判断を行い、その判断結果にしたがい、リトライ設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する。
【0020】
(3)本発明の第3の態様において、データの読み出し、書き込みが可能で、かつ、書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報を管理情報として格納するメモリカードの制御方法が提供される。その制御方法は、データ書き込み動作時に、リトライ設定情報を参照し、リトライ設定情報がリトライ機能の停止を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させず、リトライ設定情報がリトライ機能の作動を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させる。
【0021】
(4)本発明の第4の態様において、データの読み出し、書き込みが可能で、かつ、書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードに対する設定方法が提供される。その設定方法は、メモリカードから前記特性情報を読み出し、読み出した特性情報に基づいて、メモリカードにおいてリトライ処理を実行させるか否かの判断を行い、その判断結果にしたがい、リトライ設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する。
【0022】
(5)本発明の第5の態様において、データ処理装置からデータの書き込み、読み出しが可能なメモリカードが提供される。メモリカードは、データ処理装置との間でコマンドやデータの送受信を行うホストインタフェースと、データを格納する不揮発性メモリと、メモリカードの動作を制御するコントローラと、所定の管理情報を格納する記憶手段とを備える。
【0023】
管理情報は、不揮発性メモリからのデータの読み出し時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報を含む。
【0024】
コントローラは、データ読み出し動作時に、誤り訂正設定情報を参照し、誤り訂正設定情報が誤り訂正機能の停止を示す場合は、読み出したデータに対して誤り訂正を行わないように、また、誤り訂正設定情報が誤り訂正機能の作動を示す場合は、読み出したデータに対して誤り訂正を行うように、読み出し動作を制御する。
【0025】
管理情報はさらにメモリカード固有の特性情報を含み、コントローラはデータ処理装置からの要求に応じて特性情報をデータ処理装置に送信してもよい。
特性情報は、不揮発性メモリの誤り率に関する情報を含んでもよい。
【0026】
(6)本発明の第6の態様において、データの読み出し、書き込みが可能で、かつ、読み出したデータに対して誤り訂正を実行可能なメモリカードであって、読み出し動作時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードにアクセス可能なデータ処理装置が提供される。データ処理装置は、メモリカードとの間でコマンドやデータの送受信を行うカードインタフェースと、データ処理装置の動作を制御するコントローラとを備える。
【0027】
コントローラは、メモリカードがデータ処理装置に装着されたとき又はデータ処理装置の電源投入時に、メモリカードから特性情報を読み出し、読み出した特性情報に基づき、メモリカードにおいて誤り訂正機能を実行するか否かの判断を行い、その判断結果にしたがい、誤り訂正設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する。
【0028】
(7)本発明の第7の態様において、データの書き込み、読み出しが可能で、かつ、読み出したデータに対して誤り訂正を実行可能なメモリカードであって、読み出し動作時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報を管理情報として格納するメモリカードの制御方法が提供される。
【0029】
その制御方法は、データ読み出し動作時に、誤り訂正設定情報を参照し、誤り訂正設定情報が誤り訂正機能の停止を示す場合は、読み出したデータに対して誤り訂正を行わず、一方、誤り訂正設定情報が誤り訂正機能の作動を示す場合は、読み出したデータに対して誤り訂正を行う。
【0030】
(8)本発明の第8の態様において、データの読み出し、書き込みが可能で、かつ、読み出したデータに対して誤り訂正を実行可能なメモリカードであって、読み出し動作時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードに対する設定方法が提供される。
【0031】
その設定方法は、メモリカードから特性情報を読み出し、読み出した特性情報に基づいて、メモリカードにおいて誤り訂正機能を実行するか否かの判断を行い、その判断結果にしたがい、誤り訂正設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する。
【発明の効果】
【0032】
以上のように本発明によれば、メモリカードにおけるリトライ機能や誤り訂正機能の作動/停止をホスト側から設定可能とする。これにより、ホスト側から、メモリカードにおけるリトライ機能を必要に応じてキャンセルし、ホスト側での書き込み時間に関する見積もりが容易になる。すなわち、リアルタイム性が要求されるアプリケーションにおいて、書き込みエラー時に、リトライ処理を実施せず、速やかにホストに通知されるようにすることにより、ホスト側での対処が容易となり、リアルタイム動作を保証することが可能となる。また、ホストが高いデータの信頼性を要求するが、メモリカードがそれを満たさない場合は、ホスト側からメモリカードにおける誤り訂正機能をキャンセルすることで、ホストの有する高い誤り訂正機能を用いて、読み出しデータの誤り訂正を行うことが可能となり、一定のデータの信頼性を確保することが可能となる。
【図面の簡単な説明】
【0033】
【図1】本発明の実施形態におけるメモリカード及びホスト(データ処理装置)の構成を示すブロック図
【図2】メモリカードのレジスタに格納される管理情報の例を示す図
【図3】メモリカードに格納されるブロック管理テーブルの構成とデータ例を示す図
【図4】ホストにおけるメモリカードの初期化時に実行される処理の動作を示すフローチャート
【図5】メモリカードにおける書き込み処理の動作を示すフローチャート
【図6】メモリカードにおける読み出し処理の動作を示すフローチャート
【符号の説明】
【0034】
1 メモリカード
2 ホストインタフェース
3 コントローラ
4 RAM
5 インストラクションROM
6 バッファメモリ
7 フラッシュメモリ
31 マイクロプロセッサ(MPU)
32 レジスタ
33 誤り訂正手段
41 ワークRAM
42 ブロック管理テーブル
50 ホスト(データ処理装置)
51 コントローラ
53 データ格納部
55 カードインタフェース
57 入出力処理部
59 バッファメモリ
【発明を実施するための最良の形態】
【0035】
以下、添付の図面を参照して本発明の実施の形態について説明する。
【0036】
図1は、本発明の実施形態におけるメモリカード及びデータ処理装置(以下「ホスト」と称する。)の構成を示すブロック図である。
【0037】
(ホストの構成)
ホスト(データ処理装置)50は、例えばディジタルスチルカメラ、ディジタルビデオカメラ、各種携帯端末機器、パーソナルコンピュータ等の電子機器を含む。
【0038】
ホスト50は、コントローラ51、データ格納部53、カードインタフェース55、入出力処理部57及びバッファメモリ59を含む。データ格納部53は制御プログラム61を格納する。
【0039】
カードインタフェース55は、メモリカード1のホストインタフェース2との間でデータのやりとりを行う。すなわち、カードインタフェース55は、メモリカード1に読み書きするデータや各種制御のためのコマンドやクロック信号をホストインタフェース2との間で送受信する。
【0040】
コントローラ51はホスト50全体の動作制御を行い、データ格納部53に格納されている制御プログラム61と協働して後述する所定の機能を実現する。
【0041】
入出力処理部57は、ユーザがホスト50に対して行う設定や操作に関する情報やデータを入力する入力手段と、映像、音声等の出力を行う出力手段とを含む。
【0042】
バッファメモリ59は、メモリカード1に書き込むデータを一時的に格納するメモリであり、メモリカード1に書き込みエラーが発生した場合でも、そのエラーを吸収できるように、ある程度大きな容量を有している。
【0043】
(メモリカードの構成)
メモリカード1はホスト50に装着されて使用され、ホスト50からデータの書き込み、読み出しが可能な記録媒体である。メモリカード1は、書き込み時にエラーが生じたときに再試行するリトライ機能と、データの誤り訂正を行う誤り訂正機能とを有する。
【0044】
メモリカード1は、ホストインタフェース2と、コントローラ3と、RAM4と、インストラクションROM5と、バッファメモリ6と、書き換え可能な不揮発性メモリであるフラッシュメモリ7とから構成される。
【0045】
ホストインタフェース2は、メモリカード1が装着されるホスト50とのインタフェースを行うブロックであり、フラッシュメモリ7に読み書きするデータや各種制御のためのコマンドやクロック信号を送受信する。
【0046】
コントローラ3は、メモリカード1全体を制御するブロックであり、マイクロプロセッサ(以下、「MPU」と称する。)31と、レジスタ32と、誤り訂正手段33を有している。
【0047】
MPU31は、インストラクションROM5に格納されている制御プログラムを実行し、RAM4、フラッシュメモリ7及びバッファメモリ6の制御を行う。
【0048】
レジスタ32はメモリカード1に対する管理情報を保持する記憶手段である。管理情報には、ホストインタフェース2を通してホスト50から転送される設定値及びメモリカード1の固有の特性値が含まれる。図2にレジスタ32に格納される管理情報の例を示す。
【0049】
図2において、管理情報は、ホスト50から転送される設定値として、リトライイネーブルビットと、誤り訂正イネーブルビットとを含む。リトライイネーブルビットは、メモリカード1においてデータ書き込み時にリトライ処理を実行するか否かを指定する「リトライ設定情報」である。訂正イネーブルビットは、メモリカード1においてデータ読み出し時に、誤り訂正処理を実行するか否かを指定する「誤り訂正設定情報」である。
【0050】
さらに、管理情報は、メモリカード1に固有の特性値として、データ書き込みの最大所要時間と、リトライ発生頻度と、エラー発生頻度と、誤り率とを保持している。データ書き込みの最大所要時間については、リトライ処理を行う場合と、行わない場合とのそれぞれについての値が格納されている。リトライ発生頻度は、リトライ処理が発生する頻度すなわち確率である。エラー発生頻度は、リトライ処理が行われない場合に、書き込み時にエラーが発生する頻度すなわち確率である。誤り率については、誤り訂正処理を行う場合と、行わない場合とのそれぞれについての値が格納されている。何れの情報もホストインタフェース2を通してホスト50から読み出すことが可能である。なお、メモリカード固有の特性値として管理情報に格納される情報には、上記以外に、メモリ種別、消去ブロックサイズ、管理ブロックサイズ、使用温度条件、消費電力等が含まれてもよい。
【0051】
図1に戻り、誤り訂正手段33は、データ書き込み時に、ホスト50から転送されたデータに対して、誤り訂正符号を生成して、付加し、さらに、データ読み出し時に、フラッシュメモリ7から読み出したデータに誤りがあるか否かを検出し、誤りがある場合には訂正処理を行う。
【0052】
インストラクションROM5は、読み出し専用の不揮発性メモリであり、MPU31の制御プログラムが格納されている。バッファメモリ6は、ホストから転送されてきたデータを一時的に保持する。フラッシュメモリ7は、ホストから転送されたデータを格納する。
【0053】
RAM4は揮発性メモリであり、コントローラ3の作業用領域であるワークRAM41と、ブロック管理テーブル42とから構成されている。ブロック管理テーブル42はフラッシュメモリ7の使用状態を管理するテーブルである。図3に、ブロック管理テーブル42の一例を示す。
【0054】
一般にフラッシュメモリ7の物理的なブロック(以下「物理ブロック」と称す。)への読み書きは、ホスト50から与えられる論理的なブロック(以下「論理ブロック」と称す。)のアドレスを指定して行われる。ブロック管理テーブル42の1つの役割は、論理ブロックのアドレス(論理アドレス)を物理ブロックのアドレス(物理アドレス)に変換する(あるいは、割り当てる)ことである。
【0055】
図3のブロック管理テーブル42は、ブロックアドレスである物理アドレスと論理アドレスの対応関係と、その物理アドレス(すなわち、その物理アドレスが指定するブロック)の使用の有無を管理している。
【0056】
例えば、図3に示すように、物理ブロックの使用の有無、及び各物理ブロックに割り当てられた論理アドレスの番号が書かれている。使用済み(使用の有無を示す欄の値が“0”)であるにもかかわらず、論理アドレスが書かれていない物理アドレス(図2の例では、物理アドレス「6」)が指定する物理ブロックは、その物理ブロックが不良ブロックであることを意味しており、書き込みアドレスとして選択されることはない。
【0057】
(ホスト側の処理)
図4に示すフローチャートを参照し、ホスト50がメモリカード1の初期化時に行う処理について説明する。図4に示す処理は、ホスト50のコントローラ51により実行され、メモリカード1がホスト50に新たに装着されたときや、メモリカード1が装着された状態でホスト50の電源が投入された時等に実行される。
【0058】
最初に、コントローラ51はメモリカード1に対し、メモリカード1を初期化するためのコマンドを発行する(S51)。メモリカード1はこのコマンドを受けると、所定の初期化処理を実行する。次に、コントローラ51は、メモリカード1において初期化処理の完了を確認するためのコマンドをメモリカード1に発行する(S52)。メモリカード1はこのコマンドを受けると、初期化処理が完了したか否かを示す応答をホスト50に送信する。コントローラ51はメモリカード1からの応答を受け、初期化処理の完了を判断する(S53)。
【0059】
初期化処理が完了していれば(ステップS53でYES)、コントローラ51はメモリカード1に対して、「リトライ発生頻度」と、「エラー発生頻度」と、リトライ処理を行う場合と行わない場合のそれぞれに対する「書き込み時間の最大所要時間」とを要求する(S54)。この要求にしたがい、メモリカード1は、レジスタ32に格納されているそれらの情報をホスト50に送信する。コントローラ51は、メモリカード1から受信した情報にしたがい、メモリカード1の使用の可否を判断する(S55)。この判断は例えば以下のように行う。
【0060】
すなわち、データ処理装置50はメモリカード1に書き込みエラーが発生してもある程度は許容できるようにバッファメモリ59を搭載している。コントローラ51は、メモリカード1から受信した情報にもとづき得られる判定条件がバッファメモリ59の許容量を超えるか否かに基づき、メモリカード1の使用の可否を判断する。判定条件として以下の2点を考慮する。
判定条件1:リトライ発生頻度×リトライ処理を行う場合の書き込み時間の最大所要時間
判定条件2:エラー発生頻度×リトライ処理を行わない場合の書き込み時間の最大所要時間
【0061】
コントローラ51は、上記の判定条件1、2が双方とも基準値を超える場合は、バッファメモリ59の許容量を超え、システムとして破綻すると判断し、メモリカード1は使用不可であると判断する。判定条件1、2の少なくともいずれかが基準値内であれば、メモリカード1は使用可能であると判断する。メモリカード1が使用不可能であると判断された場合(ステップS55でNO)、エラーとして処理し(S63)、処理を終了する。
【0062】
一方、メモリカード1が使用可能であると判断された場合(ステップS55でYES)、コントローラ1は、判定条件1に基づいて、さらにメモリカード1のリトライ機能を作動させるか、停止させるかについて判断する(S56)。すなわち、判定条件1を、リトライ機能の作動/停止を判断するための基準値と比較し、判定条件1がその基準値よりも大きい場合、メモリカード1のリトライ機能を停止させるようにする。これは、書き込み時間の最大所要時間が大きいと、ホスト50が動画記録等のリアルタイム処理を要求する場合に、リトライ処理の実行によりデータ記録に時間がかかり、リアルタイム処理が実現できない場合があるからである。
【0063】
このように、ホスト50はメモリカード1のリトライ機能のON/OFFを設定できるため、リトライ機能が不要な場合はOFFすることで、書き込み時間の見積もり等が容易になる。すなわち、書き込みエラー時に、リトライ処理を実施せず、速やかにホスト50に通知されるようにすることにより、ホスト50側での対処が容易となる。
【0064】
リトライ機能を停止させると判断した場合(ステップS57でYES)、コントローラ51は、メモリカード1に対し、レジスタ32内のリトライイネーブルビットをOFFに設定するためのコマンドを発行する(S58)。メモリカード1はこのコマンドを受けると、レジスタ32内のリトライイネーブルビットをOFFに設定する。
【0065】
次に、コントローラ51は、メモリカード1に対し、誤り訂正を行う場合と行わない場合のそれぞれについての誤り率を要求する(S59)。
【0066】
そして、受信した誤り訂正を行わない場合の誤り率に基づいてメモリカード1の使用の可否を判断する(S60)。例えば、メモリカード1の誤り訂正を行わない場合の誤り率が非常に高く、ホスト側の誤り訂正機能を用いても訂正不能で、許容できるデータ品質が得られないと考えられる場合は、メモリカード1は使用不可能であると判断する。具体的には、メモリカード1の誤り訂正を行わない場合の誤り率を、所定の基準値(第1の基準値)と比較し、そのメモリカード1の誤り率が、第1の基準値よりも大きい場合、そのメモリカード1は使用不可能であると判断する。なお、第1の基準値は、ホスト50側で訂正可能な誤り率よりも高い値に設定する。
【0067】
メモリカード1が使用不可能であると判断した場合(ステップS60でNO)、エラーとして処理し(S63)、処理を終了する。
【0068】
メモリカード1が使用可能であると判断した場合(ステップS60でYES)、コントローラ1は、メモリカード1の誤り訂正を行う場合の誤り率に基づいて、メモリカード1の誤り訂正機能を作動させるか、停止させるかについて判断する(S61)。メモリカード1は使用可能であると判断されるが、メモリカード1の誤り訂正機能では十分なデータ品質が得られないと判断される場合は、ホスト50側で誤り訂正を実行する。このため、メモリカード1の誤り訂正機能を停止させる。具体的には、誤り訂正を行う場合のメモリカード1の誤り率が、訂正機能の作動/停止を判断するための基準値(第2の基準値、第2の基準値<第1の基準値)より大きいときは、メモリカード1において誤り訂正機能を停止させるようにする。
【0069】
メモリカード1の誤り訂正機能を停止させると判断した場合(ステップS61でYES)、コントローラ51は、メモリカード1に対し、レジスタ32内の誤り訂正イネーブルビットをOFFに設定するためのコマンドを発行する(S62)。メモリカード1はこのコマンドを受けると、レジスタ32内の誤り訂正イネーブルビットをOFFに設定する。
【0070】
このように、ホスト側からメモリカード1の誤り訂正機能のON/OFFを設定できる。このため、高い誤り訂正能力を有するホスト50は、メモリカード1の誤り訂正能力が要求する能力より低いと判断したときは、メモリカード1の誤り訂正機能を停止させ、ホスト側で誤り訂正することが可能となり、これによりデータ信頼性を向上できる。
【0071】
以上のように、ホスト50は、メモリカード1の初期化処理時において、メモリカード1からそのメモリカードに固有の特性値を読み出し、その特性値に基づき、必要に応じてメモリカード1のリトライ機能及び誤り訂正機能のON/OFFを設定することができる。
【0072】
(データ書き込み処理)
メモリカード1のデータ書き込み処理について、図5に示すフローチャートを参照して説明する。図5に示すフローチャートは、メモリカード1のコントローラ3により実行される。また、本処理はメモリカード1がホスト50から書き込みコマンドを受信したときに開始される。なお、以下では説明の便宜上、フラッシュメモリ7におけるデータ書き込み単位であるページとデータ消去単位であるブロックとを同じサイズに設定している。よって、データはブロック単位で書き込まれる。
【0073】
まず、MPU31は、ホストインタフェース2を介して、ホスト50から書き込みコマンドを受信すると、ホスト50から送られてくる書き込みデータをバッファメモリ6に一時的に格納する(S1)。
【0074】
次に、MPU31は、図3に示すブロック管理テーブル42に書き込まれている情報を参照し、書き込み可能な物理アドレスすなわち未使用(”1”)の物理アドレスをサーチして求める(S2)。
【0075】
次に、バッファメモリ6からブロック単位でデータを読み出すとともに、誤り訂正手段33によって誤り訂正符号を付加し、フラッシュメモリ7内のレジスタへデータを転送する(S3)。
【0076】
次に、フラッシュメモリ7に対して書き込みコマンドを発行し、サーチした物理アドレスにデータの書き込みを行う(S4)。書き込み動作後、フラッシュメモリ7においてデータ書き込みの処理ステータスが正常であるか否かを判断する(S5)。そのため、フラッシュメモリ7に対してステータスリードコマンドを発行し、フラッシュメモリ7においてデータ書き込みが正常に完了したか否かを示す状態をフラッシュメモリ7から取得する。ステータスリードにおいて、エラーが返信される場合としては、書き込みエラーに加えて、フラッシュメモリに特有のイレース処理による異常終了した場合等が含まれる。
【0077】
MPU31は、フラッシュメモリ7からのステータスリードコマンドに対する応答により、データ書き込みが正常に行われたと判断した場合(ステップS5でYES)、ブロック管理テーブル42上の対応するアドレスについて、使用の有無に関する情報を未使用“1”から使用“0”に書き換え、それとともに、論理アドレス(論理ブロック番号)を書き込み(S6)、書き込み処理を正常終了する(S7)。書き込み処理が正常終了すると、その旨がホスト50に通知される。
【0078】
一方、ステップS5において、データ書き込みが正常に行われなかったと判断された場合(ステップS5でNO)、データ書き込みを行ったアドレスに関し、ブロック管理テーブル42上の使用の有無に関する管理情報を未使用“1”から使用“0”に書き換える(S8)。
【0079】
次に、レジスタ32に保持されたリトライイネーブルビットを参照し、その値が、ON(イネーブル(enable))かOFF(ディセーブル(disable))かを判断する(S9)。
【0080】
リトライイネーブルビットがOFFのとき(ステップS9でNO)、これはリトライ機能の停止を意味することから、リトライ処理を実行せずに、所定のエラー処理を実行後(S11)、処理を終了する。所定のエラー処理は、例えば、ホスト50へエラーの発生を通知する。この場合、ブロック管理テーブル42への論理アドレスの書き込みは行われない。すなわち、その物理アドレスは不良ブロックとなる。
【0081】
一方、リトライイネーブルビットがON(イネーブル)のとき(ステップS9でYES)、その書き込み処理がリトライ処理(2回目の処理)であるか否かを判断する(S10)。リトライ処理であると判断された場合、所定のエラー処理を実行後(S11)、処理を終了する。この場合、ブロック管理テーブル42への論理アドレスの書き込みは行われない。すなわち、その物理アドレスは不良ブロックとなる。
【0082】
ステップS10においてリトライ処理でなかった場合は、リトライ処理を実行するためにステップS12に進む。ステップS12においては、ステップS2と同様に、ブロック管理テーブル42を参照し、書き込み可能な物理アドレスすなわち未使用(“1”)の物理アドレスをサーチして決定した後、ステップS4に移行する。その後の処理は前述したとおりである。
【0083】
以上のような手順にしたがい、バッファメモリ6に保持されたデータはブロック単位でフラッシュメモリ7への書き込み(転送)が繰り返され、全てのデータの書き込みが正常終了した時点で、書き込みが完了したことがホスト50に通知される。また、データ書き込み時に異常が発生した場合、リトライ機能がOFFであれば、それ以降のデータの書き込みは行われず、異常発生時点で、ホスト50に通知される。
【0084】
以上のように本実施の形態によれば、ステップS9において、リトライイネーブルビットがイネーブルの場合(ステップS9でYES)にのみ、リトライ処理が実施される。このため、ホスト50からリトライイネーブルビットをOFF(ディセーブル)に設定しておくことで、書き込み異常があった場合に、リトライ処理を待たずに、異常がホスト50に通知されるようにすることができる。更に、事前にレジスタ32から読み出した、書き込み時間の最大所要時間、リトライ発生頻度を参照することで、それらの値に応じたエラー処理をホスト50側で実施することができる。
【0085】
なお、上記実施の形態では、リトライ処理時に書き込みデータをホスト50から再度転送しない場合について説明したが、書き込みデータを再度転送するようにしても良い。
【0086】
(データ読み出し処理)
次にメモリカード1のデータ読み出し処理について、図6に示すフローチャートを参照して説明する。図6に示される処理は、コントローラ3により実行されるものである。また、本処理はメモリカード1がホスト50から読み出しコマンドを受信したときに開始される。
【0087】
コントローラ3は、ホストインタフェース2を介してホスト50から読み出しコマンドを受信すると、MPU31はブロック管理テーブル42に書き込まれている情報を参照し、ホスト50から読み出しアドレスとして指定された論理アドレスに対応する物理アドレスをサーチして求める(S21)。
【0088】
次に、サーチした物理アドレスが指定するブロックからデータの読み出しを行う(S22)。このため、MPU31はフラッシュメモリ7に対して読み出しコマンドを発行し、これにより、フラッシュメモリ7内のレジスタに読み出したデータが保持される。
【0089】
次に、フラッシュメモリ7のレジスタからデータが読み出され、誤り訂正手段33を経由して誤りが検出された後、バッファメモリ6に転送され、一時的に格納される(S23)。
【0090】
次に、レジスタ32に保持された誤り訂正イネーブルビットがON(イネーブル)か否かを判断する(S24)。誤り訂正イネーブルビットがON(イネーブル)すなわち誤り訂正処理をする場合(ステップS24でYES)は、誤りが検出されたか否かを判断する(S25)。誤りが検出されていない場合(ステップS25でNO)、正常終了する。誤りが検出された場合(ステップS25でYES)は、誤りの位置、大きさを算出し(S26)、それらの情報に基づいて誤り訂正可能か否かを判断する(S27)。
【0091】
ステップS27において、検出された誤りがメモリカード1の誤り訂正能力以内の場合、バッファメモリ6に保持されたデータの訂正を行い(S28)、正常終了する(S29)。検出された誤りがメモリカード1の訂正能力を超えており、訂正不能と判断した場合(ステップS27でNO)、異常終了する(ステップS30)。
【0092】
また、誤り訂正イネーブルビットがOFF(ディセーブル)の場合(ステップS24でNO)、誤り訂正を行うことなく正常終了する(S29)。
【0093】
正常終了(S29)の場合、フラッシュメモリ7からバッファメモリ6へのブロック単位の読み出しが繰り返され、バッファメモリ6上のデータがホストインタフェース2を通してホスト50へ転送される。異常終了(S30)の場合、その旨がホスト50に通知され、異常発生後のフラッシュメモリ7からのデータの読み出しは停止する。
【0094】
以上のように本実施の形態によれば、ステップS24において、誤り訂正イネーブルビットがイネーブル(ON)の場合のみ誤り訂正処理を行うため、誤り訂正イネーブルビットをディセーブルにしておくことで、たとえ、データの読み出し時に訂正能力を超える誤りがあったとしても、フラッシュメモリ7内の全てのデータを読み出し、出力することが可能となる。
【0095】
つまり、ホスト50は、レジスタ32から誤り訂正処理を行う場合の誤り率を予め読み出し、それに基づいて誤り訂正イネーブルビットの設定を決定することで、メモリカード1における誤り訂正機能が不要な場合は、その機能を停止させることが可能となる。例えば、ホスト50がメモリカード1よりも強力な誤り訂正機能を有し、かつ、高いデータ信頼性を望む場合は、誤り訂正イネーブルビットをディセーブル(OFF)に設定し、誤り訂正機能を停止させておくことで、データの書き込み時には、ホスト側で強力な誤り訂正符号を付加した後、データの書き込みを行うことが可能となり、また、データ読み出し時には、ホスト側で誤り訂正を行うことが可能となり、これにより、データアクセス時の誤り率を低下させることが可能となる。
【0096】
なお、上記実施の形態では、不揮発性メモリを搭載したメモリカードに実施した場合について説明したが、その他、例えば電子機器が内蔵する不揮発性メモリに対しても、同様に実施可能であり、本発明の思想の適用はメモリカードに限られるものではないことは言うまでもない。
【産業上の利用可能性】
【0097】
本発明は、リトライ処理または誤り訂正処理を実施可能なメモリカードや、そのようなメモリカードに対してアクセスするデータ処理装置に適用できる。特に、本発明は、リトライ処理または誤り訂正処理が可能なメモリカードにおいて、ホスト側から必要に応じて、メモリカードにおけるリトライ処理または誤り訂正処理の作動/停止の設定を可能とするため、高い処理能力を有し、メモリカード側の能力に頼らないデータ処理装置(ホスト)及びそれに接続するメモリカードに有用である。
【0098】
なお、本発明は、特定の実施形態について説明されてきたが、当業者にとっては他の多くの変形例、修正、他の利用が明らかである。それゆえ、本発明は、ここでの特定の開示に限定されず、添付の請求の範囲によってのみ限定され得る。本出願は日本国特許出願、特願2004−026413号(2004年2月3日提出)に関連し、それらの内容は参照することにより本文中に組み入れられる。

【特許請求の範囲】
【請求項1】
データ処理装置からデータの書き込み、読み出しが可能なメモリカードであって、
前記データ処理装置との間でコマンドやデータの送受信を行うホストインタフェースと、
前記データを格納する不揮発性メモリと、
前記メモリカードの動作を制御するコントローラと、
所定の管理情報を格納する記憶手段とを備え、
前記管理情報は、不揮発性メモリへの書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報を含み、
前記コントローラは、データ書き込み動作時に、前記リトライ設定情報を参照し、該リトライ設定情報がリトライ機能の停止を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させないように、また、該リトライ設定情報がリトライ機能の作動を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させるように、書き込み動作を制御する、メモリカード。
【請求項2】
前記管理情報はさらに前記メモリカード固有の特性情報を含み、前記コントローラは前記データ処理装置からの要求に応じて前記特性情報を前記データ処理装置に送信する、請求項1記載のメモリカード。
【請求項3】
前記特性情報は、前記メモリカードにおいてデータ書き込みに要する最大の所要時間に関する情報を含む、請求項2記載のメモリカード。
【請求項4】
前記特性情報は、前記メモリカードにおいてリトライ処理が発生する頻度に関する情報を含む、請求項2記載のメモリカード。
【請求項5】
データの読み出し、書き込みが可能で、かつ、書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードにアクセス可能なデータ処理装置であって、
前記メモリカードとの間でコマンドやデータの送受信を行うカードインタフェースと、
前記データ処理装置の動作を制御するコントローラとを備え、
前記コントローラは、前記メモリカードが前記データ処理装置に装着されたとき又はデータ処理装置の電源投入時に、前記メモリカードから前記特性情報を読み出し、該読み出した特性情報に基づき、メモリカードにおいてリトライ機能を実行させるか否かの判断を行い、その判断結果にしたがい、前記リトライ設定情報を設定するためのコマンドを前記カードインタフェースを介して前記メモリカードに送信する、データ処理装置。
【請求項6】
データの読み出し、書き込みが可能で、かつ、書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報を管理情報として格納するメモリカードの制御方法であって、
データ書き込み動作時に、前記リトライ設定情報を参照し、
該リトライ設定情報がリトライ機能の停止を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させず、
該リトライ設定情報がリトライ機能の作動を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させる、
メモリカードの制御方法。
【請求項7】
データの読み出し、書き込みが可能で、かつ、書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードに対する設定方法であって、
前記メモリカードから前記特性情報を読み出し、
該読み出した特性情報に基づいて、メモリカードにおいてリトライ処理を実行させるか否かの判断を行い、
その判断結果にしたがい、前記リトライ設定情報を設定するためのコマンドを前記カードインタフェースを介して前記メモリカードに送信する、
設定方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【国際公開番号】WO2005/076203
【国際公開日】平成17年8月18日(2005.8.18)
【発行日】平成19年10月18日(2007.10.18)
【国際特許分類】
【出願番号】特願2005−517700(P2005−517700)
【国際出願番号】PCT/JP2005/001496
【国際出願日】平成17年2月2日(2005.2.2)
【出願人】(000005821)松下電器産業株式会社 (73,050)
【Fターム(参考)】