説明

メモリデバイスにおける読み出し不可状態を解決するための装置及び方法

【課題】ブートエラーを正すための装置及び方法を提供する。
【解決手段】装置100は、不揮発性のメモリデバイス120を有し、そのメモリデバイス120は、第1のアドレスを持つ所定のブロックに、ブートローダーを格納している。装置100は、さらに、電源投入時に、所定のブロックからブートローダーを読み出すメインコントローラー110を有している。装置100は、また、メインコントローラー110の最初のブートシーケンスを監視するとともに、所定のブロックが、読み出し不可エラー状態に陥ったことを判定するように構成された監視モジュール130を含んでいる。監視モジュール130が、所定ブロックは読み出し不可エラー状態に陥ったと判定したとき、メインコントローラー110は、バックアップブロックからバックアップブートローダーを取得する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリデバイスにおける読み出し不可状態を解決するための装置及び方法に関する。
【背景技術】
【0002】
テレマティクス装置や移動電話のような装置が電源投入されたとき、その装置のプロセッサは、その装置のオペレーティングシステムをロードするために、一連の命令を実行する必要がある。そのロードを開始するために、プロセッサは、ブートシーケンスを実行する。ブートシーケンスは、装置の電源が投入されたとき、プロセッサが実行する最初の命令、もしくは操作のセットを含む。ただし、最初の命令、もしくは操作のセットもまた、プロセッサにロードされなければならない。そのため、概して、プロセッサは、メモリの所定のアドレスから、命令もしくは操作のセット含む、最初のデータブロックを自動的に取り出すようにプログラムされている。最初の命令もしくは操作のセットは、ブートローダーと呼ばれている。多くの装置において、アクセスされるメモリは、NAND型のフラッシュメモリデバイスである。
【発明の概要】
【発明が解決しようとする課題】
【0003】
NAND型のフラッシュメモリで生じる一つの問題は、読み出し不可エラーが、NAND型フラッシュメモリデバイスにおいて頻繁に観察されることである。読み出し不可エラーの3つの原因は、例えば、ブロックが物理的に損なわれているような不良ブロックエラー、データ保持エラー、及び読み出し阻害エラーである。それらの内、不良ブロックエラーは、永続的なエラーであるため、不良ブロックだけは、メモリリフレッシュ動作によっても修復不可能である。概して、ブートローダーは、装置のオペレーティングシステムをロードするとき、不良ブロックエラーを含む、読み出し不可エラーに対して対処するための命令を含んでいる。しかしながら、ブートローダーを包含するブロックにおいて、読み出し不可エラーが生じた場合、ブートローダーがロードされ得ず、フラッシュメモリデバイスからオペレーティングシステムをロードするためのシーケンスが正しく実行できないので、装置は、動作不可能となる。このため、装置のブートローダーを包含するブロックでの読み出し不可エラーを検出し、対処するための方法及び装置に対するニーズがある。
【0004】
上述した背景技術の説明は、全体として、本発明の背景を提示するとの目的のためのものである。出願時の公知技術としてみなされない説明はもちろん、この背景技術のセクションに記述された程度まで、本願発明者らによる探求により得られた成果は、明示的にも暗示的にも、本発明に対する公知技術として了承されたものではない。
【課題を解決するための手段】
【0005】
本発明の1つの形態では、ブートエラーを正すための装置が開示される。その装置は、不揮発性のソリッドステートメモリデバイス(固体記憶装置)を有し、その不揮発性ソリッドステートメモリデバイスは、第1のアドレスを持つ所定のブロックに、ブートローダーを格納している。装置は、さらに、電源投入時に、所定のブロックからブートローダーを読み出すメインコントローラーを有している。装置は、また、メインコントローラーの最初のブートシーケンスを監視するとともに、所定のブロックが、読み出し不可エラー状態に陥ったことを判定するように構成された監視モジュールを含んでいる。監視モジュールが、所定ブロックは読み出し不可エラー状態に陥ったと判定したとき、メインコントローラーは、バックアップブロックからバックアップブートローダーを取得する。
【0006】
本発明の別の形態では、ソリッドステートメモリデバイスのブロックにおいて観察されたブートエラーを正すための方法が開示される。その方法は、不揮発性ソリッドステートメモリデバイスの第1のアドレスを有する所定のブロックに、ブートローダーを記憶し、電源投入時に、メインコントローラーによって、その所定ブロックからブートローダーの読み出しを試みる。その方法は、さらに、メインコントローラーの最初のブートシーケンスを監視するとともに、その最初のブートシーケンスの監視に基づき、所定のブロックが読み出し不可エラー状態に陥ったか否かを判定する。そして、その方法は、所定のブロックでの最初のフートシーケンスにエラーが生じたとき、バックアップブロックからバックアップブートローダーを取得する。
【0007】
本発明のさらなる適用範囲は、以下に与えられる詳細な説明から明らかとなる。ただし、その詳細な説明及び特定の例は、説明のみを目的とすることが意図され、本発明の範囲を制限することは何ら意図されないことが理解されるべきである。また、本発明は、以下の詳細な説明及び添付図面から、より完全に理解されるようになる。
【図面の簡単な説明】
【0008】
【図1】装置の代表的な構成要素を示すブロック図である。
【図2】メインコントローラーと監視モジュール間の代表的な通信を示すブロック図である。
【図3】種々のアプリケーションがメモリからロードされる際の、各種の信号の値を示す図である。
【図4】読み出し不可エラーを識別し、処置するための構成要素を有する装置の代表的な実施形態を示すブロック図である。
【図5】読み出し不可エラーを識別し、処置するための構成要素を有する装置の代表的な実施形態を示すブロック図である。
【図6】読み出し不可エラーを識別し、処置するための構成要素を有する装置の代表的な実施形態を示すブロック図である。
【発明を実施するための形態】
【0009】
図1は、代表的な装置100、あるいはそのサブシステムの構成要素を示すものである。装置100は、装置100を動作させるためのメインコントローラー110と、装置100のオペレーティングシステムをロードするためのデバイスブートローダーを含む、装置100を動作させる実行可能な命令を格納した不揮発性ソリッドステートメモリデバイス120と、不揮発性ソリッドステートメモリデバイス120の第1のブロックが破損されたかを判定するために、メインコントローラー110の最初のブートシーケンスを監視する監視モジュール130と、監視モジュール130が第1のブロックは破損されたと判定したとき、不揮発性ソリッドステートメモリデバイス120における第2のブロックからバックアップブートローダーを取り出すように構成されたブロックマッピングモジュール140と、を備えている。
【0010】
メインコントローラー110は、1つもしくはそれ以上の機能を実行するためのチップセットから構成されている。例えば、メインコントローラー110は、テレマティクス装置、テレビジョン、あるいは移動電話を制御するためのマイクロプロセッサである。意図された機能を実行するために、メインコントローラー110は、意図された機能性をサポートするオペレーティングシステムを実行する。オペレーティングシステムは、メインコントローラー110が利用できる必要がある命令のセットから構成されている。それらの命令は、不揮発性ソリッドステートメモリデバイス120に格納されている。
【0011】
幾つかの実施形態では、不揮発性ソリッドステートメモリデバイス120は、フラッシュメモリデバイスである。それらの実施形態の幾つかにおいては、フラッシュメモリデバイスは、NAND型のフラッシュメモリからなる。ただし、フラッシュメモリデバイスは、NOR型のフラッシュメモリや、もしくは将来に開発される技術によるものであっても良いことが理解されるべきである。そして、説明の目的のため、ソリッドステートメモリデバイス120は、以下、フラッシュメモリデバイス120と呼ぶことにするが、現在において公知の、もしくは将来開発される他の種類のメモリ装置が同様に使用され得ることは理解されるべきである。
【0012】
オペレーティングシステムは、さらに、同じくフラッシュメモリデバイス120に格納された特定のアプリケーションを実行する。一旦、オペレーティングシステムがメインコントローラー110にロードされると、オペレーティングシステムは、メモリへのアクセスを司る。さらに、オペレーティングシステムは、読み出し不可エラーのようなメモリアクセスエラーに関するエラーに対処する。
【0013】
電源投入時に、メインコントローラー110はフラッシュメモリデバイス120からオペレーティングシステムをロードしなければならない。最初に、プライマリブートローダー(PBL)と呼ばれるプログラムが、デバイスブートローダー、あるいはセカンダリブートローダーと呼ばれるプログラムをフラッシュメモリデバイス120から読み出す。明確さのため、セカンダリブートローダー及びデバイスブートローダーは、以後、デバイスブートローダー(DBL)との呼称に統一する。PBLは、メインコントローラー110に予めプログラムされており、メインコントローラー110の電源投入時に実行される。PBLは、DBLが格納されているフラッシュメモリデバイス120のブロックを示す所定のアドレス、例えば0x0000をハードコードしたものである。DBLをロードするために、PBLは、フラッシュメモリデバイス120から所定のアドレスで始まるブロックを要求する。フラッシュメモリデバイス120は、所定のアドレスに格納されたブロックを選出し、PBLは、選出されたブロックに格納されたDBLへ制御を譲り渡す。一旦、DBLがロードされると、DBLは、メインコントローラー110に対して、フラッシュメモリデバイス120からオペレーティングシステムを読み出すよう指示する。
【0014】
前述したように、DBLを格納しているブロックが損なわれたとき、問題が発生する。DBLそれ自体は、オペレーティングシステムのロード時に、不良ブロックエラーを含む読み出し不可エラーを処置するためのコードを含んでいる。しかし、PBLは、DBLのロード時に、種々のタイプの読み出し不可エラーを処置するためのハードコードされた命令を含んでいない。概して、PBLは、検出された読み出し不可エラーを解決するために、メモリデバイス120のリフレッシュを試行することができ、メインコントローラー110をリセットすることができる。だが、もしDBLを含むブロックに不良ブロックエラーが生じていたとすると、リフレッシュ及びリセットでは、問題を解決することができず、装置100は、動作不能となる。さらに、不良ブロックエラーが生じることを防ぐため、メモリデバイス120にて実行されるリフレッシュ操作の回数は制限される場合がある。
【0015】
DBLのロードの間に、読み出し不可エラーが検出されたときには、バックアップDBLと呼ぼれる、DBLのコピーが、別の記憶場所から取り出される。バックアップDBLは、フラッシュメモリデバイス120の違う場所に置かれても良いし、あるいは、完全に別個のメモリデバイスに格納されても良い。幾つかの実施形態では、第1のブロックが読み出し不可状態に陥っていると判定されたとき、ブロックマッピングモジュール140が、所定のアドレスの第1のブロック、例えば0x0000のブロックに対する、メインコントローラー110からの要求を、バックアップDBLが格納されているバックアップアドレスのブロック、例えば0x4000のブロックに対応付ける。ブロックマッピングモジュール140は、バックアップアドレスから始まるブロックが永続的に損なわれた場合、新たなバックアップDBLが新しいアドレスから取り出せるように、フラッシュメモリデバイス120の異なるアドレスに、新たなバックアップDBLを書き込むように構成されたものであっても良い。
【0016】
装置は、DBLのブロックにおける読み出し不可エラーを検出するための監視モジュール130を備えている。監視モジュール130は、DBLを含むデータブロックの破損から生じる読み出し不可エラーの存在を判定するために、メインコントローラー110のブートシーケンスを監視する。図2は、メインコントローラー110と監視モジュール130との間の代表的な通信例を示している。メインコントローラー110がリセットされたとき、メインコントローラー110はリセット信号を監視モジュール130に送信する。また、メインコントローラー110は、DBLがフラッシュメモリデバイス120からメインコントローラー110に首尾よくロードされたとき、DBL完了信号を監視モジュール130に送信する。監視モジュール130は、DBLのブロックにおける読み出し不可エラーを見分けるために、リセット信号とDBL完了信号とを監視する。読み出し不可エラーがDBLのブロックにおいて検出されたならば、監視モジュール130は、読み出し不可信号をメインコントローラー110もしくは(図2では示されていない)ブロックマッピングモジュール140に送信する。
【0017】
図3は、DBLのブロックにおける読み出し不可エラーを見分ける監視モジュール130の一例を示したものである。信号310はリセット信号であり、そのハイレベルの信号312,314,316は、メインコントローラー110がリセットされたことを示している。シーケンス320はブートシーケンスであり、そこにおいて、各ブロックは、フラッシュメモリデバイス120からメインコントローラー110にロードされる別々のアプリケーションを示している。信号340はDBL完了信号であり、そのハイレベルの信号342は、DBLがPBLによってフラッシュメモリデバイス120からメインコントローラー110に首尾良くロードされたことを示すものである。信号350は読み出し不可信号であり、そこにおいて、ハイレベルの信号352は、DBLを格納しているブロックが損なわれていることを示すものである。
【0018】
図3に見られるように、メインコントローラー110は、監視モジュール130に対して、信号312によりリセット信号を送信する。メインコントローラー110がりセットされてリセット信号312が送信されるとき、PBL322がメインコントローラー110において実行される。PBL322が首尾よくDBL324をロードすると、DBL324が、今度は、オペレーティングシステム326をロードし、さらに、オペレーティングシステム326が、アプリケーション328をロードする。DBL324が首尾良くロードされた後の時点で、メインコントローラー110はDBL完了信号342を監視モジュール130に送信する。このとき、読み出し不可信号は、低レベルのままである。
【0019】
次のリセット信号314で、次のシーケンスが始まる。PBL330が実行されるが、DBL332をロードする試みは失敗に終わる。リセットそれ自体は、何ら付加的な情報を含んでいないので、読み出しエラーが生じたとの最初の決定に基づき、読み出し不可エラーが生じたかどうかを判定することはできない。そのため、監視モジュール130は、この時点では、読み出し不可信号を送信しない。メインコントローラー110は再びリセットされ、リセット信号316を送信する。リセット信号316で始まるシーケンスで、PBL334が再度DBL336のロードを試みるが失敗に終わる。この時点で、監視モジュール130は、メインコントローラー110からDBL完了信号を受信することなく、2つの連続したリセット信号を取得したことになる。DBL完了信号を受信せずに、例えば2つもしくはそれ以上の連続したリセット信号が取得されるようなシーケンスが生じたとき、監視モジュール130は、DBLを含むブロックにおいて読み出し不可エラーが生じたことを特定する。
【0020】
ただし、上記は、DBLを格納するブロックに、読み出し不可エラーが生じていることを判定する方法の一例に過ぎないことが理解されるべきである。DBLを格納するブロックに読み出し不可エラーが生じていることを判定するために、他の技術が使用可能であることは想定され得ることである。また、上記の方法は、一時的及び永続的なエラーの両方を特定するために使用され得ることに注意すべきである。さらに、上記の方法は、リフレッシュ操作が読み出し不可エラーを修復することが出来るかどうかをモニタすることによって、永続的なエラーを一時的なエラーから識別するように変更されても良い。
【0021】
DBLに対して読み出し不可エラーが検出されると、メインコントローラー110は、読み出し不可エラーの状態にあるブロックからDBLをロードすることができないので、別の場所からバックアップDBLをロードしなければならない。
【0022】
図4は、装置100の一実施形態を示すものである。装置100は、メインコントローラー110、NAND型フラッシュメモリデバイス120、監視モジュール130、及びブロックマッピングモジュール140を有する。上述したように、メインコントローラー110は、電源投入時に、所定の場所、例えばアドレス0x0000で始まるブロックからDBLをロードしようと試みる。所定のアドレスのブロックの読み出しを試みるために、メインコントローラー110は、ピン412からフラッシュメモリデバイス120のピン432へチップイネーブル信号を発し、それにより、フラッシュメモリデバイス120がイネーブル(有効)となるよう指示する。メインコントローラー110は、また、ピン414からピン434に読み出しイネーブル信号も発し、それにより、読み出しが要求されていることを指示する。フラッシュメモリデバイス120から読み出されるべきブロックのアドレスを送信するとき、メインコントローラー110は、ピン418から438に、通信されるデータがアドレスに相当することを指示するアドレスラッチイネーブル(ALE)信号を送信する。PBLによって要求されるアドレス、例えば0x0000は、ピン422からブロックマッピングモジュール140のピン464に伝達される。以下に説明されるように、ブロックマッピングモジュール140は、読み出し不可エラーが発生していないとき、受信されたアドレスをそのまま用いる。つまり、読み出し不可エラーが検出されていないとき、ブロックマッピングモジュール140は、メインコントローラー110にて実行されるPBLによって与えられたアドレス、例えば0x0000を、ピン468を介して、フラッシュメモリデバイス120のピン442に伝達する。フラッシュメモリデバイス120は、所定のアドレスに配置されたブロック、例えば0x0000に配置されたブロックを、ピン440からメインコントローラー110のピン420に返送する。この読み出しが首尾よく行ったときには、メインコントローラー110は監視モジュール130にDBL完了信号を送信する。
【0023】
一方、DBLを格納しているブロックに関して、読み出し不可エラーが検出されたならば、監視モジュール130は、ピン452からANDゲート470に読み出し不可検出信号を送出する。さらに、DBLはフラッシュメモリデバイス120からロードされつつある状態である(まだ、完了されていない状態である)ので、メインコントローラー110は、ピン424からANDゲート470に、DBL読み出し前信号を送出する。DBL読み出し前信号は、フラッシュメモリデバイス120からのDBLのロードがまだ完了されておらず、そうするための試みがさらに行われることを示すものである。さらに、DBLのロードの試行の間に、アドレスが送信されるので、アドレスラッチイネーブル信号はオンしてハイレベルとなり、その信号もANDゲート470に送出される。本例においては、ピン418,424,452からの信号は、ANDゲート470においてすべてハイレベルとなり、それにより、ハイレベルの信号が、ブロックマッピングモジュール140の選択ピン466に送信されることになる。選択ピン466が、ハイレベルの信号を受信すると、ブロックマッピングモジュール140は、メインコントローラー110によって与えられたアドレスに代えて、バックアップアドレスを使用する。
【0024】
本実施形態では、ブロックマッピングモジュール140は、通常は、ピン464にて受信されたアドレスを使用するように構成されている。しかしながら、DBLを格納するブロックにおいて読み出し不可エラーが検出されたならば、ブロックマッピングモジュール140は、ピン462からハードコードされたアドレスを読み込む。ピン462に記憶されたアドレスは、バックアップDBLを格納しているブロック、例えば0x4000で始まるブロックのアドレスである。ANDゲート470からの信号がハイレベルとなったとき、ブロックマッピングモジュール140は、ピン462からアドレスを取り込み、ピン468を介して、フラッシュメモリデバイス120のピン442に伝達する。このようにして、本装置100は、DBLを格納するブロックに読み出し不可エラーが生じたときに、バックアップアドレスに配置されたブロックからバックアップDBLを取得するように構成されている。ただし、リフレッシュ操作は、一時的なエラーを正すことがあるので、バックアップDBLは、読み出し不可エラーを含むブロックにおいて、リフレッシュ操作を実行することをメインコントローラー110に指示する、追加の命令を含むことが可能であることに注意すべきである。
【0025】
表1は、バックアップDBLを読み出すためにバックアップアドレスが使用されるときのシナリオを示す真理値表である。
【表1】

表1において、“L”はローレベル信号を示し、“H”はハイレベル信号を示し、そして、“X”は意味のない信号を示す。つまり、“X”が表示されている場合、その信号から得られる値は、無視され、すなわち意味の無いものとなる。表1に示されるように、ブロックマッピングモジュール140が、バックアップアドレスからバックアップDBLがロードされるようにブロックを変更する唯一のシナリオは、アドレスラッチイネーブル(ALE)信号がハイレベルとなり、読み出し不可検出信号がハイレベルとなり、そしてDBL読み出し前信号がハイレベルとなったときだけである。
【0026】
図4に関連してなされた説明は、本質的に、代表的な例についてのものにすぎず、メインコントローラー110,フラッシュメモリデバイス120、監視モジュール130、及びブロックマッピングモジュール140のピンやその他の構成は、各部品の製造業者に依存して変化し得るものであることが理解されるべきである。さらに、ピンとの用語が使用されたが、部品間で信号を通信するためのいかなる他の入出力機構が使用されても良いことも理解されるべきである。また、前述した例のバリエーションも、本実施形態の範囲に含まれることに注意すべきである。
【0027】
図5は、装置100の別の実施形態を示すものである。装置100は、メインコントローラー110、フラッシュメモリデバイス120、監視モジュール130、及びブロックマッピングモジュール140を有する。上述したように、メインコントローラー110は、電源投入時に、所定のアドレスからDBLを含むブロックを読み出そうと試みる。監視モジュール130は、所定アドレスからDBLをロードしようとするメインコントローラー110の試みを監視し、DBLを含むブロックが読み出し不可エラー状態に陥っているかどうかを判定する。もし、そのような状態に陥っているならば、監視モジュール130は、所定アドレスにて始まるブロックにおいて、読み出し不可エラーがあることを示す信号をブロックマッピングモジュール140に送出する。この場合、メインコントローラー110が所定アドレスからDBLのロードを要求したときに、ブロックマッピングモジュール140は、バックアップアドレスに配置されたブロックからバックアップDBLを読み出す。
【0028】
フラッシュメモリデバイス120から読み出しを行おうとするとき、メインコントローラー110は、フラッシュメモリデバイス120がイネーブル(有効)となることをフラッシュメモリデバイス120に指示するチップイネーブル信号を、ピン512からピン532へ送信する。また、メインコントローラー110が、フラッシュメモリデバイス120からの読み出しを試みる場合には、メインコントローラー110は、ピン514からピン534に読み出しイネーブル信号を送信し、それにより、読み出しが要求されていることを指示する。書き込みイネーブル信号は、メインコントローラー110がフラッシュメモリデバイス120に書き込みを行うことを指示するために、メインコントローラー110のピン516からフラッシュメモリデバイス120のピン536へ、ブロックマッピングモジュール140を経由して送信される。アドレスの送信が必要とされる場合、アドレスラッチイネーブル信号がピン518からピン538に送信される。
【0029】
監視モジュール130が、DBLを格納しているブロックが損なわれていると判定したとき、監視モジュール130は、読み出し不可信号をピン552からブロックマッピングモジュール140に送信する。ブロックマッピングモジュール140は、さらに、ALE信号を監視し、ALE信号がオンとなり、PBLが読み出し不可エラー状態のブロックからDBLをロードしようとしているときに、与えられたアドレスでのブロックに対する読み出し要求を、バックアップDBLのブロックのアドレスに対応付ける。この機能を実行するために、ブロックマッピングモジュール140は、バックアップDBLのブロックアドレスを格納することが可能な所定長さのバッファを有している。なお、リフレッシュ操作は、一時的なエラーを正すことがあるので、バックアップDBLは、読み出し不可エラーを生じているブロックに対して、リフレッシュ操作を実行することをメインコントローラー110に指示する、追加の命令を含むことが可能であることに注意すべきである。さらに、ブロックが読み出し不可エラー状態に陥っている場合、ブロックマッピングモジュール140は、ピン536へライトイネーブル信号を出力することにより、新たなバックアップアドレス、例えば0x8000に、バックアップブートローダーをコピーするように構成しても良い。これにより、もしバックアップDBLのブロックが損なわれて読み出し不可エラーが生じたとしても、ブロックマッピングモジュール140が新しいバックアップアドレスから新しいバックアップDBLを取り出すことが可能になる。
【0030】
表2は、バックアップDBLがロードされることが必要かどうかを判定するための、代表例としての真理値表を示すものである。
【表2】

表2において、“L”はローレベル信号を示し、“H”はハイレベル信号を示し、そして、“X”は意味のない信号を示す。つまり、“X”が表示されている場合、その信号から得られる値は、無視され、すなわち意味の無いものとなる。
【0031】
図5に関連してなされた説明は、本質的に、代表的な例についてのものにすぎず、メインコントローラー110,フラッシュメモリデバイス120、監視モジュール130、及びブロックマッピングモジュール140のピンやその他の構成は、各部品の製造業者に依存して変化し得るものであることが理解されるべきである。さらに、ピンとの用語が使用されたが、部品間で信号を通信するためのいかなる他の入出力機構が使用されても良いことも理解されるべきである。また、前述した例のバリエーションも、本実施形態の範囲に含まれることに注意すべきである。
【0032】
図6は、装置100のさらに別の実施形態を示すものである。装置100は、メインコントローラー110、フラッシュメモリデバイス120、監視モジュール130、及び外部メモリデバイス650を有する。メインコントローラー110及びフラッシュメモリデバイス120は、上述した例と同様に動作する。本実施形態では、DBLを含むブロックにおいて、読み出し不可エラーが検出されたとき、監視モジュール130が、メインコントローラー110のピン624に読み出し不可検出信号を送信する。その信号がメインコントローラー110によって受信されることにより、メインコントローラー110は、外部メモリデバイス650からブートすることを指示される。外部メモリデバイス650は、バックアップDBLを含んでいる。このように、PBLがフラッシュメモリデバイス120からDBLをロードしようと試みている際に、ピン624が読み出し不可信号を受信すると、メインコントローラー110は、外部メモリデバイス650からピン622を介してDBLをロードする。外部メモリデバイス640は、ROM、NOR型のフラッシュメモリ、もしくは他のタイプのメモリからなる。なお、リフレッシュ操作は、一時的なエラーを正すことがあるので、バックアップDBLは、読み出し不可エラーを生じているブロックに対して、リフレッシュ操作を実行することをメインコントローラー110に指示する、追加の命令を含むことが可能であることに注意すべきである。
【0033】
表3は、外部メモリデバイス640からDBLをロードすべきときを判定するための、代表例としての真理値表を示すものである。
【表3】

表3において、“L”はローレベル信号を示し、“H”はハイレベル信号を示す。
【0034】
図6に関連してなされた説明は、本質的に、代表的な例についてのものにすぎず、メインコントローラー110,フラッシュメモリデバイス120、及び監視モジュール130のピンやその他の構成は、各部品の製造業者に依存して変化し得るものであることが理解されるべきである。さらに、ピンとの用語が使用されたが、部品間で信号を通信するためのいかなる他の入出力機構が使用されても良いことも理解されるべきである。また、前述した例のバリエーションも、本実施形態の範囲に含まれることに注意すべきである。
【0035】
上述した記載は、本質的に、単なる説明であって、本発明の開示、その適用や使用を制限することを僅かながらも意図するものではない。明確さのため、同じ参照番号が、類似する要素を特定するために図面等において使用されている。本明細書において使用された、A,B,Cの少なくとも1つとのフレーズは、非排他的な論理的ORを用いて、AorBorCの論理を意味し、さらに、複数の要素を同時に用いることを排除しないことを意味するものと解釈されるべきである。また、方法における各ステップは、本発明の原理を改変しない限り、異なる順序で実行されても良いことが理解されるべきである。
【0036】
本明細書において、モジュールとの用語は、特定用途向けIC(ASIC)、電子回路、組み合わせ論理回路、書き換え可能ゲートアレイ(FPGA)、コードを実行するプロセッサ(共用、専用、あるいは集合)、説明した機能を提供する他の適当な構成、もしくは、システムオンチップのような、上述した構成のいくつかもしくはすべての組み合わせの、一部又は全体の構成を含むものとして使用されている。また、モジュールとの用語はプロセッサによって実行されるコードを記憶するメモリ(共用、専用、あるいは集合)を含むものでもある。
【0037】
上記において使用された、コードとの用語は、ソフトウェア、ファームウェア、及び/又はマイクロコードを含み、プログラム、ルーチン、機能、クラス、及び/又はオブジェクトに言及するものである。また、上記の共用との用語は、複数のモジュールからの幾つか若しくは全てのコードが単一の(共用された)プロセッサを用いて実行されることを意味する。さらに、複数のモジュールからの幾つか若しくは全てのコードが、単一(共用された)メモリに記憶されることも意味する。集合との用語は、単一のモジュールからの幾つかの若しくは全てのコードが複数のプロセッサのグループを用いて実行されることを意味する。さらに、単一のモジュールからの幾つかの若しくは全てのコードが複数のメモリのグループを用いて記憶されることを意味する。
【0038】
本明細書の装置及び方法は、1つあるいはそれ以上のプロセッサによって実行される1つあるいはそれ以上のコンピュータプログラムによって実行されるものである。コンピュータプログラムは、固定の実体的なコンピュータ読み出し可能媒体に記憶された、プロセッサが実行可能な命令を含むものである。コンピュータプログラムは、記憶されたデータも含むものであっても良い。固定の実態的なコンピュータ読み出し可能媒体の非制限的な例は、不揮発性メモリ、磁気メモリ、光メモリである。
【0039】
本発明の広範な教示は、種々の形態で実施されえるものである。本明細書では、特定の例について記載しているが、他の変形例は図面、明細書、及び特許請求の範囲の内容から、当業者にあきらかとなるので、本発明の真の範囲は、そのようなものに限定されるべきものではない。
【符号の説明】
【0040】
100 装置
110 メインコントローラー
120 フラッシュメモリデバイス
130 監視モジュール
140 ブロックマッピングモジュール

【特許請求の範囲】
【請求項1】
ブートエラーを正すための装置であって、
第1のアドレスを持つ所定のブロックにブートローダーを格納した不揮発性のソリッドステートメモリデバイスと、
電源投入時に、前記所定のブロックからブートローダーを読み出そうと試みるメインコントローラーと、
前記メインコントローラーのブートシーケンスを監視して、前記所定のブロックが読み出し不可エラー状態に陥っているかどうかを判定する監視モジュールと、を備え
前記所定のブロックは読み出し不可エラー状態に陥っていると前記監視モジュールが判定したとき、前記メインコントローラーは、バックアップブロックからバックアップブートローダーを取得することを特徴とする装置。
【請求項2】
前記バックアップブロックは、前記不揮発性のソリッドステートメモリデバイスにおいて、第2のアドレスに配置されたものであることを特徴とする請求項1に記載の装置。
【請求項3】
前記メインコントローラーが前記第1のアドレスからブートローダーの読み出しを要求した際、前記所定のブロックは読み出し不可エラー状態に陥っていると前記監視モジュールが判定したとき、前記第2のアドレスから前記バックアップブートローダーを読み出すブロックマッピングモジュールをさらに備えることを特徴とする請求項2に記載の装置。
【請求項4】
前記バックアップブロックは、前記不揮発性ソリッドステートメモリデバイスとは別の、外部メモリデバイスに格納されたものであることを特徴とする請求項1に記載の装置。
【請求項5】
前記不揮発性のソリッドステートメモリデバイスの所定のブロックが読み出し不可エラー状態に陥っていることを前記監視モジュールが判定したとき、前記監視モジュールは前記メインコントローラーに信号を送出し、前記メインコントローラーに前記外部メモリデバイスからバックアップブートローダーを読み出させることを特徴とする請求項4に記載の装置。
【請求項6】
前記監視モジュールは、前記メインコントローラーが電源投入されたことを示すリセット信号と、前記ブートローダーが首尾よくロードされたことを示すブートロード完了信号とを受信するものであって、ブートロード完了信号を観察することなく、2つの連続するリセット信号を観察したとき、前記所定のブロックが読み出し不可エラー状態に陥っていると判定することを特徴とする請求項1乃至5のいずれかに記載の装置。
【請求項7】
不揮発性のソリッドステートメモリデバイスは、フラッシュメモリデバイスであることを特徴とする請求項1乃至6のいずれかに記載の装置。
【請求項8】
前記フラッシュメモリデバイスは、NAND型のフラッシュメモリデバイスであることを特徴とする請求項7に記載の装置。
【請求項9】
前記バックアップブートローダーは、前記所定のブロックにおいてリフレッシュ操作を実行するための命令を含むことを特徴とする請求項1乃至8のいずれかに記載の装置。
【請求項10】
不揮発性のソリッドステートメモリデバイスのブロックにおいて観察されるブートエラーを正すための方法であって、
前記不揮発性のソリッドステートメモリデバイスの第1のアドレスを持つ所定のブロックにブートローダーを記憶するステップと、
電源投入時に、メインコントローラーによって、前記所定ブロックからブートローダーの読み出しを試みるステップと、
メインコントローラーのブートシーケンスを監視するステップと、
ブートシーケンスの監視に基づき、前記所定のブロックが読み出し不可エラー状態に陥ったか否かを判定するステップと、
前記所定のブロックが読み出し不可エラー状態に陥ったと判定したとき、バックアップブロックからバックアップブートローダーを取得するステップと、を備えることを特徴とする方法。
【請求項11】
さらに、前記不揮発性のソリッドステートメモリデバイスにおいて、第2のアドレスに前記バックアップブロックを記憶するステップを備えることを特徴とする請求項10に記載の方法。
【請求項12】
さらに、前記所定のブロックが読み出し不可エラー状態に陥っているとの判定時に、前記第2のアドレスから前記バックアップブートローダーを読み出すステップを備えることを特徴とする請求項11に記載の方法。
【請求項13】
さらに、前記不揮発性ソリッドステートメモリデバイスとは別の、外部メモリデバイスに前記バックアップブロックを記憶するステップを備えることを特徴とする請求項10に記載の方法。
【請求項14】
前記不揮発性のソリッドステートメモリデバイスの所定のブロックが読み出し不可エラー状態に陥っていることを示す信号を生成するステップと、
その信号の受信時に、前記外部メモリデバイスからバックアップブートローダーを読み出すステップと、をさらに備えることを特徴とする請求項13に記載の方法。
【請求項15】
前記メインコントローラーが電源投入されたことを示すリセット信号と、前記ブートローダーが首尾よくロードされたことを示すブートロード完了信号とを監視するステップと、
前記ブートロード完了信号が観察されることなく、2つの連続するリセット信号が観察されたとき、前記所定のブロックが読み出し不可エラー状態に陥っていると判定するステップと、をさらに備えることを特徴とする請求項10乃至14のいずれかに記載の方法。
【請求項16】
不揮発性のソリッドステートメモリデバイスは、フラッシュメモリデバイスであることを特徴とする請求項10乃至15のいずれかに記載の方法。
【請求項17】
前記フラッシュメモリデバイスは、NAND型のフラッシュメモリデバイスであることを特徴とする請求項16に記載の方法。
【請求項18】
前記所定のブロックが読み出し不可エラー状態に陥っていると判定し、バックアップブロックからバックアップローダーを取得したときに、前記所定のブロックにおいてリフレッシュ操作を実行するステップを備えることを特徴とする請求項10乃至17のいずれかに記載の方法。
【請求項19】
前記バックアップローダーは、前記所定のブロックにおいてリフレッシュ操作を実行するための命令を含むことを特徴とする請求項18に記載の方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate