(57)【要約】【課題】メモリカードにおけるメモリカードの誤り訂正処理に起因する問題を解決するメモリカード及びメモリカードに対する制御方法等を提供する。【解決手段】メモリカードは、データ処理装置との間でコマンドやデータの送受信を行うホストインタフェース（２）と、データを格納する不揮発性メモリ（７）と、メモリカードの動作を制御するコントローラ（３）と、所定の管理情報を格納する記憶手段（３２）とを備える。管理情報は、不揮発性メモリからのデータの読み出し時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報を含む。コントローラは、データ読み出し動作時に、誤り訂正設定情報を参照し、誤り訂正設定情報が誤り訂正機能の停止を示す場合は、読み出したデータに対して誤り訂正を行わないように、また、誤り訂正設定情報が誤り訂正機能の作動を示す場合は、読み出したデータに対して誤り訂正を行うように、読み出し動作を制御する。【選択図】図１
2011108252.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置からデータの書き込み、読み出しが可能なメモリカードであって、
データ処理装置との間でコマンドやデータの送受信を行うホストインタフェースと、
データを格納する不揮発性メモリと、
メモリカードの動作を制御するコントローラと、
所定の管理情報を格納する記憶手段とを備え、
前記管理情報は、不揮発性メモリからのデータの読み出し時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報を含み、
前記コントローラは、データ読み出し動作時に、誤り訂正設定情報を参照し、誤り訂正設定情報が誤り訂正機能の停止を示す場合は、読み出したデータに対して誤り訂正を行わないように、また、誤り訂正設定情報が誤り訂正機能の作動を示す場合は、読み出したデータに対して誤り訂正を行うように、読み出し動作を制御する、
メモリカード。
【請求項２】
前記管理情報はさらにメモリカード固有の特性情報を含み、前記コントローラは前記データ処理装置からの要求に応じて前記特性情報をデータ処理装置に送信する、
請求項１記載のメモリカード。
【請求項３】
データの読み出し、書き込みが可能で、かつ、読み出したデータに対して誤り訂正を実行可能なメモリカードであって、読み出し動作時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードにアクセス可能なデータ処理装置であって、
メモリカードとの間でコマンドやデータの送受信を行うカードインタフェースと、
データ処理装置の動作を制御するコントローラとを備え、
前記コントローラは、メモリカードがデータ処理装置に装着されたとき又はデータ処理装置の電源投入時に、メモリカードから特性情報を読み出し、読み出した特性情報に基づき、メモリカードにおいて誤り訂正機能を実行するか否かの判断を行い、その判断結果にしたがい、誤り訂正設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する、
データ処理装置。
【請求項４】
データの書き込み、読み出しが可能で、かつ、読み出したデータに対して誤り訂正を実行可能なメモリカードであって、読み出し動作時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報を管理情報として格納するメモリカードの制御方法であって、
データ読み出し動作時に、誤り訂正設定情報を参照し、
誤り訂正設定情報が誤り訂正機能の停止を示す場合は、読み出したデータに対して誤り訂正を行わず、
一方、誤り訂正設定情報が誤り訂正機能の作動を示す場合は、読み出したデータに対して誤り訂正を行う、
メモリカードの制御方法。
【請求項５】
データの読み出し、書き込みが可能で、かつ、読み出したデータに対して誤り訂正を実行可能なメモリカードであって、読み出し動作時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードに対する設定方法であって、
前記メモリカードから特性情報を読み出し、読み出した特性情報に基づいて、メモリカードにおいて誤り訂正機能を実行するか否かの判断を行い、その判断結果にしたがい、誤り訂正設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する、
メモリカードに対する設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き換え可能な不揮発性メモリを備え、ホストに装着して使用されるメモリカードであって、特に、データ書き込み時のリトライ機能またはデータ読み出し時のエラー訂正機能を有するメモリカード及びそのようなメモリカードにアクセスするデータ処理装置（ホスト）に関する。
【背景技術】
【０００２】
近年、デジタル情報を保存する記憶装置として、書き換え可能な不揮発性メモリを搭載したメモリカードや機器が普及してきている。特にメモリカードは、小型かつ耐震性に優れるため、今後、益々携帯機器で多用されることが期待されている。
【０００３】
書き換え可能な不揮発性メモリの代表的なものにＮＡＮＤ型フラッシュメモリ（以下、「フラッシュメモリ」と称す。）がある。フラッシュメモリは、ブロック単位でその使用、未使用が管理されており、例えば、未使用のブロックに関して、管理データにおいて“１”が書き込まれ、データの書き込みを行った場合に、管理データを“１”から“０”に書き換える。
【０００４】
また、一般的に、フラッシュメモリは、正常に書き込まれない場合が希に存在する。このため、フラッシュメモリには、正常書き込みであったか、または異常書き込みであったかを示すステータスをリード（読み出し）する機能が備わっており、データの書き込み後、このステータスをリードすることによって、書き込みが正常に行なわれたか否かを判別することが必要である。メモリカードによっては、フラッシュメモリを制御するコントローラが内蔵されており、コントローラがデータ書き込み後にステータスリードを行い、書き込みエラーが発生した場合は、そのブロックが再び書き込みブロックとして選択されないようにするために、コントローラに内蔵された、エラーが発生したブロックに対応する管理データを“１”から“０”に書き換える。
【０００５】
また、正常にデータが書き込まれなかった場合すなわち書き込み時にエラーが発生した場合、そのデータを再度別のブロックに書き込みを行う処理（以下「リトライ処理」と称す。）も提案されている。なお、書き込み時のエラーは、フラッシュメモリの空き容量がない場合、データを書き込もうとしたフラッシュメモリの領域が不良であるため書き込みが行えない場合、書き込み時のイレース処理の失敗時等に発生する。
【０００６】
また、フラッシュメモリに書き込まれたデータにおいて、他ブロックへのデータ書き込みによって、また、経年変化によって、希にデータ化けが発生する。このため、メモリカードとして所望のデータ信頼性を確保するために、データ読み出し時は、例えば、ブロック単位で、フラッシュメモリの信頼性に応じた誤り訂正符号を生成し、ブロックのデータに付加して、フラッシュメモリに書き込む。また、データ読み出し時には、読み出されたデータに対して誤り訂正処理を行った後、ホストへ転送する。
【０００７】
以上のように、フラッシュメモリに希に発生する書き込みエラー、読み出しエラーは、殆どの場合、メモリカードに内蔵されたコントローラによってリトライ処理、及び誤り訂正処理を行うことによって回避される。このため、ホスト機器はフラッシュメモリのデータ信頼性を考慮することなくメモリカードを使用することができる。
【０００８】
以上のような、フラッシュメモリの書き込みエラーに対するリトライ処理に関する技術として特許文献１に記載されたものが知られている。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００２−１０８７２０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、近年、メモリカードは、民生用途のみならず、業務用途の様々なホスト機器に用いられ始め、ホストによっては、従来のメモリカードの信頼性では、不十分な場合もある。
【００１１】
書き込みエラーが発生しやすいフラッシュメモリにおいて、書き込みエラーが発生した場合のリトライ処理により、ホストに対して書き込みエラーとして通知される頻度が低減される。これにより、ホストによっては、書き込みエラーとして通知された場合の特別な処理を考慮することが無く、ホストの処理負担が軽減するという長所がある。しかしながら、リトライ処理はフラッシュメモリの内部で行われるため、フラッシュメモリ上で書き込みエラーが発生しているのか、リトライ処理が行われているのかどうか、ホスト側では全く分からない。リトライ処理によって書き込み時間が非常に長くなり、更に、リトライ処理においても書き込みエラーが発生した場合、リトライ処理の間、書き込み完了の通知を待たされたあげく、書き込みエラーになることもあった。
【００１２】
静止画を記録するデジタルスチルカメラの場合は、リアルタイムでの処理が要求されないため、書き込みエラー通知された後でもホストによる対応は可能である。しかし、動画を記録するビデオカメラの場合、リアルタイムでの処理が要求される。メモリカードにおいてリトライ処理が実行されると、書き込み時間が長くなる場合があるため、ビデオカメラ（ホスト）側で書き込み時間を見積もりにくく、ビデオカメラ（ホスト）でのデータ処理が非常に難しくなるという課題がある。このように、メモリカードにおけるリトライ処理は、リアルタイム処理を要求するホストにおいては、有効な機能とならない場合もある。
【００１３】
また、従来のメモリカードは、メモリカードとして所望のデータ信頼性となるように、フラッシュメモリの信頼性に応じて、誤り訂正符号を付加している。例えば、高信頼性のフラッシュメモリを内蔵したメモリカードには１ビット訂正回路が、また、低信頼性のフラッシュメモリを内蔵したメモリカードには３ビット訂正回路が搭載される。メモリカードとしては、何れも同等の信頼性を確保している。３ビット訂正回路を搭載したメモリカードは、３ビットまでの誤りは訂正可能であるが、４ビット以上の誤りが発生した場合には訂正不能となり、ホストに対してエラー通知をするが、場合によっては、誤訂正となり、誤ったデータをホストに返すことになる。通常、このようなケースに陥る確率は非常に低くなるように設定されている。しかし、エラーが通知されたり、或いは誤ったデータが正常データとして読み出されたりする以上、例えば、業務用のホスト等のように、非常に高い信頼性を要求するホストの場合、業務用ホスト側の工夫で、メモリカードの誤り訂正能力以上の信頼性を上げることはできないという課題があった。
【課題を解決するための手段】
【００１４】
本発明は上記の課題を解決するためになされたものであり、メモリカードにおけるリトライ処理に起因する弊害や、メモリカードの誤り訂正処理に起因する問題を解決するメモリカード及びメモリカードに対する制御方法等を提供する。
【００１５】
（１）本発明の第１の態様において、データ処理装置からデータの書き込み、読み出しが可能なメモリカードが提供される。メモリカードは、データ処理装置との間でコマンドやデータの送受信を行うホストインタフェースと、データを格納する不揮発性メモリと、メモリカードの動作を制御するコントローラと、所定の管理情報を格納する記憶手段とを備える。管理情報は、不揮発性メモリへの書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報を含む。
【００１６】
コントローラは、データ書き込み動作時に、リトライ設定情報を参照し、リトライ設定情報がリトライ機能の停止を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させないように、また、リトライ設定情報がリトライ機能の作動を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させるように、書き込み動作を制御する。
【００１７】
上記のメモリカードにおいて、管理情報はさらにメモリカード固有の特性情報を含んでもよい。そのとき、コントローラはデータ処理装置からの要求に応じて特性情報をデータ処理装置に送信してもよい。
【００１８】
特性情報には、メモリカードにおいてデータ書き込みに要する最大の所要時間に関する情報や、メモリカードにおいてリトライ処理が発生する頻度に関する情報が含まれてもよい。
【００１９】
（２）本発明の第２の態様において、データの読み出し、書き込みが可能で、かつ、書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードにアクセス可能なデータ処理装置が提供される。
【００２０】
データ処理装置は、メモリカードとの間でコマンドやデータの送受信を行うカードインタフェースと、データ処理装置の動作を制御するコントローラとを備える。
コントローラは、メモリカードがデータ処理装置に装着されたとき又はデータ処理装置の電源投入時に、メモリカードから特性情報を読み出し、読み出した特性情報に基づき、メモリカードにおいてリトライ機能を実行させるか否かの判断を行い、その判断結果にしたがい、リトライ設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する。
【００２１】
（３）本発明の第３の態様において、データの読み出し、書き込みが可能で、かつ、書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報を管理情報として格納するメモリカードの制御方法が提供される。その制御方法は、データ書き込み動作時に、リトライ設定情報を参照し、リトライ設定情報がリトライ機能の停止を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させず、リトライ設定情報がリトライ機能の作動を示す場合は、データ書き込み動作時のエラー発生時にリトライ機能を動作させる。
【００２２】
（４）本発明の第４の態様において、データの読み出し、書き込みが可能で、かつ、書き込み動作時にエラーが発生したときにリトライ機能を実行するか否かを指定するためのリトライ設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードに対する設定方法が提供される。その設定方法は、メモリカードから前記特性情報を読み出し、読み出した特性情報に基づいて、メモリカードにおいてリトライ処理を実行させるか否かの判断を行い、その判断結果にしたがい、リトライ設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する。
【００２３】
（５）本発明の第５の態様において、データ処理装置からデータの書き込み、読み出しが可能なメモリカードが提供される。メモリカードは、データ処理装置との間でコマンドやデータの送受信を行うホストインタフェースと、データを格納する不揮発性メモリと、メモリカードの動作を制御するコントローラと、所定の管理情報を格納する記憶手段とを備える。
管理情報は、不揮発性メモリからのデータの読み出し時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報を含む。
コントローラは、データ読み出し動作時に、誤り訂正設定情報を参照し、誤り訂正設定情報が誤り訂正機能の停止を示す場合は、読み出したデータに対して誤り訂正を行わないように、また、誤り訂正設定情報が誤り訂正機能の作動を示す場合は、読み出したデータに対して誤り訂正を行うように、読み出し動作を制御する。
【００２４】
管理情報はさらにメモリカード固有の特性情報を含み、コントローラはデータ処理装置からの要求に応じて特性情報をデータ処理装置に送信してもよい。
特性情報は、不揮発性メモリの誤り率に関する情報を含んでもよい。
【００２５】
（６）本発明の第６の態様において、データの読み出し、書き込みが可能で、かつ、読み出したデータに対して誤り訂正を実行可能なメモリカードであって、読み出し動作時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードにアクセス可能なデータ処理装置が提供される。データ処理装置は、メモリカードとの間でコマンドやデータの送受信を行うカードインタフェースと、データ処理装置の動作を制御するコントローラとを備える。
【００２６】
コントローラは、メモリカードがデータ処理装置に装着されたとき又はデータ処理装置の電源投入時に、メモリカードから特性情報を読み出し、読み出した特性情報に基づき、メモリカードにおいて誤り訂正機能を実行するか否かの判断を行い、その判断結果にしたがい、誤り訂正設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する。
【００２７】
（７）本発明の第７の態様において、データの書き込み、読み出しが可能で、かつ、読み出したデータに対して誤り訂正を実行可能なメモリカードであって、読み出し動作時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報を管理情報として格納するメモリカードの制御方法が提供される。
【００２８】
その制御方法は、データ読み出し動作時に、誤り訂正設定情報を参照し、誤り訂正設定情報が誤り訂正機能の停止を示す場合は、読み出したデータに対して誤り訂正を行わず、一方、誤り訂正設定情報が誤り訂正機能の作動を示す場合は、読み出したデータに対して誤り訂正を行う。
【００２９】
（８）本発明の第８の態様において、データの読み出し、書き込みが可能で、かつ、読み出したデータに対して誤り訂正を実行可能なメモリカードであって、読み出し動作時に誤り訂正機能を実行するか否かを指定するための誤り訂正設定情報及びメモリカード固有の特性情報を管理情報として格納するメモリカードに対する設定方法が提供される。
【００３０】
その設定方法は、メモリカードから特性情報を読み出し、読み出した特性情報に基づいて、メモリカードにおいて誤り訂正機能を実行するか否かの判断を行い、その判断結果にしたがい、誤り訂正設定情報を設定するためのコマンドをカードインタフェースを介してメモリカードに送信する。
【発明の効果】
【００３１】
以上のように本発明によれば、メモリカードにおけるリトライ機能や誤り訂正機能の作動／停止をホスト側から設定可能とする。これにより、ホスト側から、メモリカードにおけるリトライ機能を必要に応じてキャンセルし、ホスト側での書き込み時間に関する見積もりが容易になる。すなわち、リアルタイム性が要求されるアプリケーションにおいて、書き込みエラー時に、リトライ処理を実施せず、速やかにホストに通知されるようにすることにより、ホスト側での対処が容易となり、リアルタイム動作を保証することが可能となる。また、ホストが高いデータの信頼性を要求するが、メモリカードがそれを満たさない場合は、ホスト側からメモリカードにおける誤り訂正機能をキャンセルすることで、ホストの有する高い誤り訂正機能を用いて、読み出しデータの誤り訂正を行うことが可能となり、一定のデータの信頼性を確保することが可能となる。
【図面の簡単な説明】
【００３２】
【図１】本発明の実施形態におけるメモリカード及びホスト（データ処理装置）の構成を示すブロック図
【図２】メモリカードのレジスタに格納される管理情報の例を示す図
【図３】メモリカードに格納されるブロック管理テーブルの構成とデータ例を示す図
【図４】ホストにおけるメモリカードの初期化時に実行される処理の動作を示すフローチャート
【図５】メモリカードにおける書き込み処理の動作を示すフローチャート
【図６】メモリカードにおける読み出し処理の動作を示すフローチャート
【発明を実施するための形態】
【００３３】
以下、添付の図面を参照して本発明の実施の形態について説明する。
【００３４】
図１は、本発明の実施形態におけるメモリカード及びデータ処理装置（以下「ホスト」と称する。）の構成を示すブロック図である。
【００３５】
（ホストの構成）
ホスト（データ処理装置）５０は、例えばディジタルスチルカメラ、ディジタルビデオカメラ、各種携帯端末機器、パーソナルコンピュータ等の電子機器を含む。
【００３６】
ホスト５０は、コントローラ５１、データ格納部５３、カードインタフェース５５、入出力処理部５７及びバッファメモリ５９を含む。データ格納部５３は制御プログラム６１を格納する。
【００３７】
カードインタフェース５５は、メモリカード１のホストインタフェース２との間でデータのやりとりを行う。すなわち、カードインタフェース５５は、メモリカード１に読み書きするデータや各種制御のためのコマンドやクロック信号をホストインタフェース２との間で送受信する。
【００３８】
コントローラ５１はホスト５０全体の動作制御を行い、データ格納部５３に格納されている制御プログラム６１と協働して後述する所定の機能を実現する。
【００３９】
入出力処理部５７は、ユーザがホスト５０に対して行う設定や操作に関する情報やデータを入力する入力手段と、映像、音声等の出力を行う出力手段とを含む。
【００４０】
バッファメモリ５９は、メモリカード１に書き込むデータを一時的に格納するメモリであり、メモリカード１に書き込みエラーが発生した場合でも、そのエラーを吸収できるように、ある程度大きな容量を有している。
【００４１】
（メモリカードの構成）
メモリカード１はホスト５０に装着されて使用され、ホスト５０からデータの書き込み、読み出しが可能な記録媒体である。メモリカード１は、書き込み時にエラーが生じたときに再試行するリトライ機能と、データの誤り訂正を行う誤り訂正機能とを有する。
【００４２】
メモリカード１は、ホストインタフェース２と、コントローラ３と、ＲＡＭ４と、インストラクションＲＯＭ５と、バッファメモリ６と、書き換え可能な不揮発性メモリであるフラッシュメモリ７とから構成される。
【００４３】
ホストインタフェース２は、メモリカード１が装着されるホスト５０とのインタフェースを行うブロックであり、フラッシュメモリ７に読み書きするデータや各種制御のためのコマンドやクロック信号を送受信する。
【００４４】
コントローラ３は、メモリカード１全体を制御するブロックであり、マイクロプロセッサ（以下、「ＭＰＵ」と称する。）３１と、レジスタ３２と、誤り訂正手段３３を有している。
【００４５】
ＭＰＵ３１は、インストラクションＲＯＭ５に格納されている制御プログラムを実行し、ＲＡＭ４、フラッシュメモリ７及びバッファメモリ６の制御を行う。
【００４６】
レジスタ３２はメモリカード１に対する管理情報を保持する記憶手段である。管理情報には、ホストインタフェース２を通してホスト５０から転送される設定値及びメモリカード１の固有の特性値が含まれる。図２にレジスタ３２に格納される管理情報の例を示す。
【００４７】
図２において、管理情報は、ホスト５０から転送される設定値として、リトライイネーブルビットと、誤り訂正イネーブルビットとを含む。リトライイネーブルビットは、メモリカード１においてデータ書き込み時にリトライ処理を実行するか否かを指定する「リトライ設定情報」である。訂正イネーブルビットは、メモリカード１においてデータ読み出し時に、誤り訂正処理を実行するか否かを指定する「誤り訂正設定情報」である。
【００４８】
さらに、管理情報は、メモリカード１に固有の特性値として、データ書き込みの最大所要時間と、リトライ発生頻度と、エラー発生頻度と、誤り率とを保持している。データ書き込みの最大所要時間については、リトライ処理を行う場合と、行わない場合とのそれぞれについての値が格納されている。リトライ発生頻度は、リトライ処理が発生する頻度すなわち確率である。エラー発生頻度は、リトライ処理が行われない場合に、書き込み時にエラーが発生する頻度すなわち確率である。誤り率については、誤り訂正処理を行う場合と、行わない場合とのそれぞれについての値が格納されている。何れの情報もホストインタフェース２を通してホスト５０から読み出すことが可能である。なお、メモリカード固有の特性値として管理情報に格納される情報には、上記以外に、メモリ種別、消去ブロックサイズ、管理ブロックサイズ、使用温度条件、消費電力等が含まれてもよい。
【００４９】
図１に戻り、誤り訂正手段３３は、データ書き込み時に、ホスト５０から転送されたデータに対して、誤り訂正符号を生成して、付加し、さらに、データ読み出し時に、フラッシュメモリ７から読み出したデータに誤りがあるか否かを検出し、誤りがある場合には訂正処理を行う。
【００５０】
インストラクションＲＯＭ５は、読み出し専用の不揮発性メモリであり、ＭＰＵ３１の制御プログラムが格納されている。バッファメモリ６は、ホストから転送されてきたデータを一時的に保持する。フラッシュメモリ７は、ホストから転送されたデータを格納する。
【００５１】
ＲＡＭ４は揮発性メモリであり、コントローラ３の作業用領域であるワークＲＡＭ４１と、ブロック管理テーブル４２とから構成されている。ブロック管理テーブル４２はフラッシュメモリ７の使用状態を管理するテーブルである。図３に、ブロック管理テーブル４２の一例を示す。
【００５２】
一般にフラッシュメモリ７の物理的なブロック（以下「物理ブロック」と称す。）への読み書きは、ホスト５０から与えられる論理的なブロック（以下「論理ブロック」と称す。）のアドレスを指定して行われる。ブロック管理テーブル４２の１つの役割は、論理ブロックのアドレス（論理アドレス）を物理ブロックのアドレス（物理アドレス）に変換する（あるいは、割り当てる）ことである。
【００５３】
図３のブロック管理テーブル４２は、ブロックアドレスである物理アドレスと論理アドレスの対応関係と、その物理アドレス（すなわち、その物理アドレスが指定するブロック）の使用の有無を管理している。
【００５４】
例えば、図３に示すように、物理ブロックの使用の有無、及び各物理ブロックに割り当てられた論理アドレスの番号が書かれている。使用済み（使用の有無を示す欄の値が“０”）であるにもかかわらず、論理アドレスが書かれていない物理アドレス（図２の例では、物理アドレス「６」）が指定する物理ブロックは、その物理ブロックが不良ブロックであることを意味しており、書き込みアドレスとして選択されることはない。
【００５５】
（ホスト側の処理）
図４に示すフローチャートを参照し、ホスト５０がメモリカード１の初期化時に行う処理について説明する。図４に示す処理は、ホスト５０のコントローラ５１により実行され、メモリカード１がホスト５０に新たに装着されたときや、メモリカード１が装着された状態でホスト５０の電源が投入された時等に実行される。
【００５６】
最初に、コントローラ５１はメモリカード１に対し、メモリカード１を初期化するためのコマンドを発行する（Ｓ５１）。メモリカード１はこのコマンドを受けると、所定の初期化処理を実行する。次に、コントローラ５１は、メモリカード１において初期化処理の完了を確認するためのコマンドをメモリカード１に発行する（Ｓ５２）。メモリカード１はこのコマンドを受けると、初期化処理が完了したか否かを示す応答をホスト５０に送信する。コントローラ５１はメモリカード１からの応答を受け、初期化処理の完了を判断する（Ｓ５３）。
【００５７】
初期化処理が完了していれば（ステップＳ５３でＹＥＳ）、コントローラ５１はメモリカード１に対して、「リトライ発生頻度」と、「エラー発生頻度」と、リトライ処理を行う場合と行わない場合のそれぞれに対する「書き込み時間の最大所要時間」とを要求する（Ｓ５４）。この要求にしたがい、メモリカード１は、レジスタ３２に格納されているそれらの情報をホスト５０に送信する。コントローラ５１は、メモリカード１から受信した情報にしたがい、メモリカード１の使用の可否を判断する（Ｓ５５）。この判断は例えば以下のように行う。
【００５８】
すなわち、データ処理装置５０はメモリカード１に書き込みエラーが発生してもある程度は許容できるようにバッファメモリ５９を搭載している。コントローラ５１は、メモリカード１から受信した情報にもとづき得られる判定条件がバッファメモリ５９の許容量を超えるか否かに基づき、メモリカード１の使用の可否を判断する。判定条件として以下の２点を考慮する。
判定条件１：  リトライ発生頻度×リトライ処理を行う場合の書き込み時間の最大所要時間
判定条件２：  エラー発生頻度×リトライ処理を行わない場合の書き込み時間の最大所要時間
【００５９】
コントローラ５１は、上記の判定条件１、２が双方とも基準値を超える場合は、バッファメモリ５９の許容量を超え、システムとして破綻すると判断し、メモリカード１は使用不可であると判断する。判定条件１、２の少なくともいずれかが基準値内であれば、メモリカード１は使用可能であると判断する。メモリカード１が使用不可能であると判断された場合（ステップＳ５５でＮＯ）、エラーとして処理し（Ｓ６３）、処理を終了する。
【００６０】
一方、メモリカード１が使用可能であると判断された場合（ステップＳ５５でＹＥＳ）、コントローラ１は、判定条件１に基づいて、さらにメモリカード１のリトライ機能を作動させるか、停止させるかについて判断する（Ｓ５６）。すなわち、判定条件１を、リトライ機能の作動／停止を判断するための基準値と比較し、判定条件１がその基準値よりも大きい場合、メモリカード１のリトライ機能を停止させるようにする。これは、書き込み時間の最大所要時間が大きいと、ホスト５０が動画記録等のリアルタイム処理を要求する場合に、リトライ処理の実行によりデータ記録に時間がかかり、リアルタイム処理が実現できない場合があるからである。
【００６１】
このように、ホスト５０はメモリカード１のリトライ機能のＯＮ／ＯＦＦを設定できるため、リトライ機能が不要な場合はＯＦＦすることで、書き込み時間の見積もり等が容易になる。すなわち、書き込みエラー時に、リトライ処理を実施せず、速やかにホスト５０に通知されるようにすることにより、ホスト５０側での対処が容易となる。
【００６２】
リトライ機能を停止させると判断した場合（ステップＳ５７でＹＥＳ）、コントローラ５１は、メモリカード１に対し、レジスタ３２内のリトライイネーブルビットをＯＦＦに設定するためのコマンドを発行する（Ｓ５８）。メモリカード１はこのコマンドを受けると、レジスタ３２内のリトライイネーブルビットをＯＦＦに設定する。
【００６３】
次に、コントローラ５１は、メモリカード１に対し、誤り訂正を行う場合と行わない場合のそれぞれについての誤り率を要求する（Ｓ５９）。
【００６４】
そして、受信した誤り訂正を行わない場合の誤り率に基づいてメモリカード１の使用の可否を判断する（Ｓ６０）。例えば、メモリカード１の誤り訂正を行わない場合の誤り率が非常に高く、ホスト側の誤り訂正機能を用いても訂正不能で、許容できるデータ品質が得られないと考えられる場合は、メモリカード１は使用不可能であると判断する。具体的には、メモリカード１の誤り訂正を行わない場合の誤り率を、所定の基準値（第１の基準値）と比較し、そのメモリカード１の誤り率が、第１の基準値よりも大きい場合、そのメモリカード１は使用不可能であると判断する。なお、第１の基準値は、ホスト５０側で訂正可能な誤り率よりも高い値に設定する。
【００６５】
メモリカード１が使用不可能であると判断した場合（ステップＳ６０でＮＯ）、エラーとして処理し（Ｓ６３）、処理を終了する。
【００６６】
メモリカード１が使用可能であると判断した場合（ステップＳ６０でＹＥＳ）、コントローラ１は、メモリカード１の誤り訂正を行う場合の誤り率に基づいて、メモリカード１の誤り訂正機能を作動させるか、停止させるかについて判断する（Ｓ６１）。メモリカード１は使用可能であると判断されるが、メモリカード１の誤り訂正機能では十分なデータ品質が得られないと判断される場合は、ホスト５０側で誤り訂正を実行する。このため、メモリカード１の誤り訂正機能を停止させる。具体的には、誤り訂正を行う場合のメモリカード１の誤り率が、訂正機能の作動／停止を判断するための基準値（第２の基準値、第２の基準値＜第１の基準値）より大きいときは、メモリカード１において誤り訂正機能を停止させるようにする。
【００６７】
メモリカード１の誤り訂正機能を停止させると判断した場合（ステップＳ６１でＹＥＳ）、コントローラ５１は、メモリカード１に対し、レジスタ３２内の誤り訂正イネーブルビットをＯＦＦに設定するためのコマンドを発行する（Ｓ６２）。メモリカード１はこのコマンドを受けると、レジスタ３２内の誤り訂正イネーブルビットをＯＦＦに設定する。
【００６８】
このように、ホスト側からメモリカード１の誤り訂正機能のＯＮ／ＯＦＦを設定できる。このため、高い誤り訂正能力を有するホスト５０は、メモリカード１の誤り訂正能力が要求する能力より低いと判断したときは、メモリカード１の誤り訂正機能を停止させ、ホスト側で誤り訂正することが可能となり、これによりデータ信頼性を向上できる。
【００６９】
以上のように、ホスト５０は、メモリカード１の初期化処理時において、メモリカード１からそのメモリカードに固有の特性値を読み出し、その特性値に基づき、必要に応じてメモリカード１のリトライ機能及び誤り訂正機能のＯＮ／ＯＦＦを設定することができる。
【００７０】
（データ書き込み処理）
メモリカード１のデータ書き込み処理について、図５に示すフローチャートを参照して説明する。図５に示すフローチャートは、メモリカード１のコントローラ３により実行される。また、本処理はメモリカード１がホスト５０から書き込みコマンドを受信したときに開始される。なお、以下では説明の便宜上、フラッシュメモリ７におけるデータ書き込み単位であるページとデータ消去単位であるブロックとを同じサイズに設定している。よって、データはブロック単位で書き込まれる。
【００７１】
まず、ＭＰＵ３１は、ホストインタフェース２を介して、ホスト５０から書き込みコマンドを受信すると、ホスト５０から送られてくる書き込みデータをバッファメモリ６に一時的に格納する（Ｓ１）。
【００７２】
次に、ＭＰＵ３１は、図３に示すブロック管理テーブル４２に書き込まれている情報を参照し、書き込み可能な物理アドレスすなわち未使用（”１”）の物理アドレスをサーチして求める（Ｓ２）。
【００７３】
次に、バッファメモリ６からブロック単位でデータを読み出すとともに、誤り訂正手段３３によって誤り訂正符号を付加し、フラッシュメモリ７内のレジスタへデータを転送する（Ｓ３）。
【００７４】
次に、フラッシュメモリ７に対して書き込みコマンドを発行し、サーチした物理アドレスにデータの書き込みを行う（Ｓ４）。書き込み動作後、フラッシュメモリ７においてデータ書き込みの処理ステータスが正常であるか否かを判断する（Ｓ５）。そのため、フラッシュメモリ７に対してステータスリードコマンドを発行し、フラッシュメモリ７においてデータ書き込みが正常に完了したか否かを示す状態をフラッシュメモリ７から取得する。ステータスリードにおいて、エラーが返信される場合としては、書き込みエラーに加えて、フラッシュメモリに特有のイレース処理による異常終了した場合等が含まれる。
【００７５】
ＭＰＵ３１は、フラッシュメモリ７からのステータスリードコマンドに対する応答により、データ書き込みが正常に行われたと判断した場合（ステップＳ５でＹＥＳ）、ブロック管理テーブル４２上の対応するアドレスについて、使用の有無に関する情報を未使用“１”から使用“０”に書き換え、それとともに、論理アドレス（論理ブロック番号）を書き込み（Ｓ６）、書き込み処理を正常終了する（Ｓ７）。書き込み処理が正常終了すると、その旨がホスト５０に通知される。
【００７６】
一方、ステップＳ５において、データ書き込みが正常に行われなかったと判断された場合（ステップＳ５でＮＯ）、データ書き込みを行ったアドレスに関し、ブロック管理テーブル４２上の使用の有無に関する管理情報を未使用“１”から使用“０”に書き換える（Ｓ８）。
【００７７】
次に、レジスタ３２に保持されたリトライイネーブルビットを参照し、その値が、ＯＮ（イネーブル（enable））かＯＦＦ（ディセーブル（disable））かを判断する（Ｓ９）。
【００７８】
リトライイネーブルビットがＯＦＦのとき（ステップＳ９でＮＯ）、これはリトライ機能の停止を意味することから、リトライ処理を実行せずに、所定のエラー処理を実行後（Ｓ１１）、処理を終了する。所定のエラー処理は、例えば、ホスト５０へエラーの発生を通知する。この場合、ブロック管理テーブル４２への論理アドレスの書き込みは行われない。すなわち、その物理アドレスは不良ブロックとなる。
【００７９】
一方、リトライイネーブルビットがＯＮ（イネーブル）のとき（ステップＳ９でＹＥＳ）、その書き込み処理がリトライ処理（２回目の処理）であるか否かを判断する（Ｓ１０）。リトライ処理であると判断された場合、所定のエラー処理を実行後（Ｓ１１）、処理を終了する。この場合、ブロック管理テーブル４２への論理アドレスの書き込みは行われない。すなわち、その物理アドレスは不良ブロックとなる。
【００８０】
ステップＳ１０においてリトライ処理でなかった場合は、リトライ処理を実行するためにステップＳ１２に進む。ステップＳ１２においては、ステップＳ２と同様に、ブロック管理テーブル４２を参照し、書き込み可能な物理アドレスすなわち未使用（“１”）の物理アドレスをサーチして決定した後、ステップＳ４に移行する。その後の処理は前述したとおりである。
【００８１】
以上のような手順にしたがい、バッファメモリ６に保持されたデータはブロック単位でフラッシュメモリ７への書き込み（転送）が繰り返され、全てのデータの書き込みが正常終了した時点で、書き込みが完了したことがホスト５０に通知される。また、データ書き込み時に異常が発生した場合、リトライ機能がＯＦＦであれば、それ以降のデータの書き込みは行われず、異常発生時点で、ホスト５０に通知される。
【００８２】
以上のように本実施の形態によれば、ステップＳ９において、リトライイネーブルビットがイネーブルの場合（ステップＳ９でＹＥＳ）にのみ、リトライ処理が実施される。このため、ホスト５０からリトライイネーブルビットをＯＦＦ（ディセーブル）に設定しておくことで、書き込み異常があった場合に、リトライ処理を待たずに、異常がホスト５０に通知されるようにすることができる。更に、事前にレジスタ３２から読み出した、書き込み時間の最大所要時間、リトライ発生頻度を参照することで、それらの値に応じたエラー処理をホスト５０側で実施することができる。
【００８３】
なお、上記実施の形態では、リトライ処理時に書き込みデータをホスト５０から再度転送しない場合について説明したが、書き込みデータを再度転送するようにしても良い。
【００８４】
（データ読み出し処理）
次にメモリカード１のデータ読み出し処理について、図６に示すフローチャートを参照して説明する。図６に示される処理は、コントローラ３により実行されるものである。また、本処理はメモリカード１がホスト５０から読み出しコマンドを受信したときに開始される。
【００８５】
コントローラ３は、ホストインタフェース２を介してホスト５０から読み出しコマンドを受信すると、ＭＰＵ３１はブロック管理テーブル４２に書き込まれている情報を参照し、ホスト５０から読み出しアドレスとして指定された論理アドレスに対応する物理アドレスをサーチして求める（Ｓ２１）。
【００８６】
次に、サーチした物理アドレスが指定するブロックからデータの読み出しを行う（Ｓ２２）。このため、ＭＰＵ３１はフラッシュメモリ７に対して読み出しコマンドを発行し、これにより、フラッシュメモリ７内のレジスタに読み出したデータが保持される。
【００８７】
次に、フラッシュメモリ７のレジスタからデータが読み出され、誤り訂正手段３３を経由して誤りが検出された後、バッファメモリ６に転送され、一時的に格納される（Ｓ２３）。
【００８８】
次に、レジスタ３２に保持された誤り訂正イネーブルビットがＯＮ（イネーブル）か否かを判断する（Ｓ２４）。誤り訂正イネーブルビットがＯＮ（イネーブル）すなわち誤り訂正処理をする場合（ステップＳ２４でＹＥＳ）は、誤りが検出されたか否かを判断する（Ｓ２５）。誤りが検出されていない場合（ステップＳ２５でＮＯ）、正常終了する。誤りが検出された場合（ステップＳ２５でＹＥＳ）は、誤りの位置、大きさを算出し（Ｓ２６）、それらの情報に基づいて誤り訂正可能か否かを判断する（Ｓ２７）。
【００８９】
ステップＳ２７において、検出された誤りがメモリカード１の誤り訂正能力以内の場合、バッファメモリ６に保持されたデータの訂正を行い（Ｓ２８）、正常終了する（Ｓ２９）。検出された誤りがメモリカード１の訂正能力を超えており、訂正不能と判断した場合（ステップＳ２７でＮＯ）、異常終了する（ステップＳ３０）。
【００９０】
また、誤り訂正イネーブルビットがＯＦＦ（ディセーブル）の場合（ステップＳ２４でＮＯ）、誤り訂正を行うことなく正常終了する（Ｓ２９）。
【００９１】
正常終了（Ｓ２９）の場合、フラッシュメモリ７からバッファメモリ６へのブロック単位の読み出しが繰り返され、バッファメモリ６上のデータがホストインタフェース２を通してホスト５０へ転送される。異常終了（Ｓ３０）の場合、その旨がホスト５０に通知され、異常発生後のフラッシュメモリ７からのデータの読み出しは停止する。
【００９２】
以上のように本実施の形態によれば、ステップＳ２４において、誤り訂正イネーブルビットがイネーブル（ＯＮ）の場合のみ誤り訂正処理を行うため、誤り訂正イネーブルビットをディセーブルにしておくことで、たとえ、データの読み出し時に訂正能力を超える誤りがあったとしても、フラッシュメモリ７内の全てのデータを読み出し、出力することが可能となる。
【００９３】
つまり、ホスト５０は、レジスタ３２から誤り訂正処理を行う場合の誤り率を予め読み出し、それに基づいて誤り訂正イネーブルビットの設定を決定することで、メモリカード１における誤り訂正機能が不要な場合は、その機能を停止させることが可能となる。例えば、ホスト５０がメモリカード１よりも強力な誤り訂正機能を有し、かつ、高いデータ信頼性を望む場合は、誤り訂正イネーブルビットをディセーブル（ＯＦＦ）に設定し、誤り訂正機能を停止させておくことで、データの書き込み時には、ホスト側で強力な誤り訂正符号を付加した後、データの書き込みを行うことが可能となり、また、データ読み出し時には、ホスト側で誤り訂正を行うことが可能となり、これにより、データアクセス時の誤り率を低下させることが可能となる。
【００９４】
なお、上記実施の形態では、不揮発性メモリを搭載したメモリカードに実施した場合について説明したが、その他、例えば電子機器が内蔵する不揮発性メモリに対しても、同様に実施可能であり、本発明の思想の適用はメモリカードに限られるものではないことは言うまでもない。
【産業上の利用可能性】
【００９５】
本発明は、リトライ処理または誤り訂正処理を実施可能なメモリカードや、そのようなメモリカードに対してアクセスするデータ処理装置に適用できる。特に、本発明は、リトライ処理または誤り訂正処理が可能なメモリカードにおいて、ホスト側から必要に応じて、メモリカードにおけるリトライ処理または誤り訂正処理の作動／停止の設定を可能とするため、高い処理能力を有し、メモリカード側の能力に頼らないデータ処理装置（ホスト）及びそれに接続するメモリカードに有用である。
【００９６】
なお、本発明は、特定の実施形態について説明されてきたが、当業者にとっては他の多くの変形例、修正、他の利用が明らかである。それゆえ、本発明は、ここでの特定の開示に限定されず、添付の請求の範囲によってのみ限定され得る。本出願は日本国特許出願、特願２００４−０２６４１３号（２００４年２月３日提出）に関連し、それらの内容は参照することにより本文中に組み入れられる。
【符号の説明】
【００９７】
１    メモリカード
２    ホストインタフェース
３    コントローラ
４    ＲＡＭ
５    インストラクションＲＯＭ
６    バッファメモリ
７    フラッシュメモリ
３１    マイクロプロセッサ（ＭＰＵ）
３２    レジスタ
３３    誤り訂正手段
４１    ワークＲＡＭ
４２    ブロック管理テーブル
５０    ホスト（データ処理装置）
５１    コントローラ
５３    データ格納部
５５    カードインタフェース
５７    入出力処理部
５９    バッファメモリ
【図１】
2011108252.tif 000003
【図２】
2011108252.tif 000004
【図３】
2011108252.tif 000005
【図４】
2011108252.tif 000006
【図５】
2011108252.tif 000007
【図６】
2011108252.tif 000008