(57)【要約】【課題】ＮＡＮＤ型フラッシュメモリなどのブロック単位で管理される不揮発性記憶媒体を用いるときに、利用効率を低下させることなく、適正なデータ読み出しを可能とする。【解決手段】ＮＡＮＤ型フラッシュメモリが接続されるメモリコントローラ２０には、論理アドレスを、フラッシュメモリの物理ブロックアドレスに変換するアドレス変換部２４を設けている。このアドレス変換部では、不良ブロックに対する代替ブロックを設定する代替ブロックテーブルを用いて、論理アドレス又は論理ブロックアドレスに対して、適正な物理ブロックアドレスに変換する。これにより、不良ブロックの発生を考慮して、同一のデータを複数のブロックに格納することなく、要求されるデータを適正に読み出すことができる。【選択図】図２
2008117299.tif 000002
【特許請求の範囲】
【請求項１】
予め設定されたブロック単位でデータの格納、読出し及び使用可否を含む格納情報が管理される不揮発性記憶媒体と、
前記格納情報に基づいて前記不揮発性記憶媒体を管理すると共に、外部からの要求に基づいて不揮発性記憶媒体からの情報の読み出し及び書き込みを制御する記憶媒体制御手段と、
前記記憶媒体制御手段に設けられて、前記要求時に指定されるアドレスを前記不揮発性記憶媒体上のブロックに対応するアドレスに変換し、前記アドレスに基づいたデータの書込み及び読み出しを可能とするブロックアドレス変換手段と、
を含むことを特徴とする記憶媒体制御装置。
【請求項２】
前記ブロックアドレス変換手段が、予め前記不揮発性記憶媒体の前記ブロックごとの使用可否情報に応じて設定されているブロックアドレス変換情報に基づいてアドレス変換を行うことを特徴とする請求項１に記載の記憶媒体制御装置。
【請求項３】
前記ブロックアドレス変換手段が、前記ブロックアドレス変換情報に基づいて、前記アドレスに対する前記ブロックの変換テーブルを作成し、該変換テーブルに基づいてアドレス変換を行うことを特徴とする請求項２に記載の記憶媒体制御装置。
【請求項４】
前記変換テーブルが装置起動時に作成されることを特徴とする請求項３に記載の記憶媒体制御装置。
【請求項５】
前記ブロックアドレス変換情報が、前記格納情報から使用不可となっているブロックに対する代替ブロックの設定を含むことを特徴とする請求項２から請求項４の何れか１項に記載の記憶媒体制御装置。
【請求項６】
前記ブロックアドレス変換情報を記憶する記憶手段を含むことを特徴とする請求項２から請求項５の何れか１項に記載の記憶媒体制御装置。
【請求項７】
前記記憶手段が、書き換え可能な不揮発性記憶素子であることを特徴とする請求項６に記載の記憶媒体制御装置。
【請求項８】
前記記憶手段として、前記不揮発性記憶媒体を用いることを特徴とする請求項６又は請求項７に記載の記憶媒体制御装置。
【請求項９】
前記ブロックアドレス変換情報を、前記不揮発性記憶媒体の先頭のブロックに格納することを特徴とする請求項８に記載の記憶媒体制御装置。
【請求項１０】
前記格納情報から前記先頭のブロックが使用不可であるときに、先頭のブロックに連続するブロックの中で最初に使用可となっているブロックに、前記ブロックアドレス変換情報を格納することを特徴とする請求項９に記載の記憶媒体制御装置。
【請求項１１】
前記ブロックアドレス変換情報を更新する更新手段を含むことを特徴とする請求項９又は請求項１０に記載の記憶媒体制御装置。
【請求項１２】
前記更新手段が、前記ブロックアドレス変換情報が記憶される前記ブロックに連続するブロックの中で最初に使用可となっているブロックに、前記更新したブロックアドレス変換情報を格納した状態で、更新前の前記ブロックアドレスが格納された前記ブロックを無効化し、無効化したブロックに更新後の前記ブロックアドレス変換情報を格納した状態で該当ブロックを有効化することを特徴とする請求項１１に記載の記憶媒体制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＮＡＮＤ型フラッシュメモリ（Flash  Memory）などの不揮発性記憶媒体からの情報の読出しを制御する記憶媒体制御装置に関する。
【背景技術】
【０００２】
近年、各種の電子機器において、不揮発性記憶媒体（例えば、ＲＯＭなどの不揮発性メモリ）にブートプログラムなどの処理プログラムが記憶されるようになっており、機器の起動時に、不揮発性メモリからブートプログラムなどの処理プログラムが読み出される。
【０００３】
このような不揮発性メモリとしては、記憶データの書き換えが可能なフラッシュメモリ（Flash  Memory）が多用されている。このフラッシュメモリとしては、ＮＯＲ型フラッシュメモリが一般的であるが、ビット単価が比較的安く、主としてデータストレージに用いられるＮＡＮＤ型フラッシュメモリの利用が検討されている。
【０００４】
ＮＡＮＤ型フラッシュメモリでは、データの書き出し及び読み出しがブロック単位で行なわれることから、ＮＡＮＤ型フラッシュメモリを使用するシステムでは、ＮＡＮＤ型フラッシュメモリに記憶しているブートコードを、一旦、ＲＡＭ（例えば、ＳＲＡＭ）上に格納し、このＲＡＭから読み出すようにしており、このために、ＳＲＡＭが一体に設けられているＮＡＮＤ型フラッシュメモリも提供されている。
【０００５】
ところで、ＮＡＮＤ型フラッシュメモリでは、製造過程などにおいて不良ブロックがランダムに発生することが知られており、ＮＡＮＤ型フラッシュメモリからデータなどを読み出す場合、そのブロックが不良ブロックではなく、また、記憶されているデータが正常であることが保証されている必要がある。
【０００６】
ここから、特許文献１では、予め複数のブロックに同一のブートプログラムを書き込むと共に読み出し用の制御回路を設け、ＣＰＵからブートプログラムを要求されたときに、制御回路によって読み出しブロックの良否を判定し、不良でなければ該当ブロックに記憶されているブートプログラムを読み出して出力し、不良ブロックであるときには、同じブートプログラムが記憶されている他のブロックの良否判定を行なうように提案している。
【０００７】
特許文献２では、エラー訂正回路を設けると共に、複数セットのブートアッププログラムを不揮発性メモリに格納し、選択したセットのブートアッププログラムを揮発性メモリに転送し、このセットに対するエラー検出、エラー訂正を行い、エラー訂正回路によってエラー訂正ができないときには、他のセットを順次選択して揮発性メモリに転送し、エラーの発生していないセットをＣＰＵに転送するように提案している。また、特許文献２の提案では、ブートアップ制御シーケンサーを設けて、ブートアッププログラムをＣＰＵに転送するまでは、ＣＰＵを待機状態とすることにより、システムの立ち上がり平均時間を短縮するように提案している。
【特許文献１】特開２００５−２１５８２４号公報
【特許文献２】特開２００５−２７５６９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、複数のメモリブロックにブートプログラムを格納していると、不揮発性メモリ上のブートプログラムの格納アドレスと、ソフトウェア上のメモリアドレスが一致しないことが生じ、ＣＰＵから不揮発性メモリに対して絶対アドレスによるアクセスが困難となり、これに対する対処が必要となる。
【０００９】
これと共に、ＮＡＮＤ型フラッシュメモリ上に同一のデータを多重に記憶すると、使用効率が悪化し、実質的なビット単価が高くなってしまうことになる。
【００１０】
また、メモリブロックの良否判定を行なうことにより不良判定がなされると、他のメモリブロックに対して改めて不良判定を行なう必要があり、このために、ブート時間が長くなると共に、装置ごとにブート時間にばらつきが生じることになってしまう。
【００１１】
本発明は上記事実に鑑みてなされたものであり、不揮発性記憶媒体にブロック単位で書き込まれている情報をブロック単位で管理するときに、不良ブロックが生じているときにも、同一の情報を複数のブロックに記憶すること無く適正なデータの読出しを可能とする記憶媒体制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために本発明は、予め設定されたブロック単位でデータの格納、読出し及び使用可否を含む格納情報が管理される不揮発性記憶媒体と、前記格納情報に基づいて前記不揮発性記憶媒体を管理すると共に、外部からの要求に基づいて不揮発性記憶媒体からの情報の読み出し及び書き込みを制御する記憶媒体制御手段と、前記記憶媒体制御手段に設けられて、前記要求時に指定されるアドレスを前記不揮発性記憶媒体上のブロックに対応するアドレスに変換し、前記アドレスに基づいたデータの書込み及び読み出しを可能とするブロックアドレス変換手段と、を含むことを特徴とする。
【００１３】
この発明によれば、ブロック単位でデータが管理される不揮発性記憶媒体を用いて、ＣＰＵなどからデータの読出し要求などがあったときに、ブロックアドレス変換手段が、ＣＰＵが指定するアドレスを、該当するブロックのアドレスに変換する。
【００１４】
これにより、例えば、使用が不可となった不良ブロックが生じて、該当ブロック内のデータを別のブロックに格納していても、アドレスに該当するブロックを迅速にかつ簡単に選択してデータの読出し等の処理を行うことができる。
【００１５】
このときに、不良ブロックの発生を考慮して、同一のデータを複数のブロックに格納する必要がないので、不揮発性記憶媒体の利用効率の低下を抑えることができる。
【００１６】
また、本発明は、前記ブロックアドレス変換手段が、予め前記不揮発性記憶媒体の前記ブロックごとの使用可否情報に応じて設定されているブロックアドレス変換情報に基づいてアドレス変換を行うことを特徴とする。
【００１７】
この発明によれば、使用可否情報からアドレスに対応するブロックのアドレスを明確にするブロックアドレス変換情報を設定する。これにより、このブロックアドレス変換情報を用いて、正確にアドレスに対応するブロックのアドレスを取得することができる。
【００１８】
このような本発明においては、前記ブロックアドレス変換手段が、前記ブロックアドレス変換情報に基づいて、前記アドレスに対する前記ブロックの変換テーブルを作成し、該変換テーブルに基づいてアドレス変換を行うことができ、前記変換テーブルが装置起動時に作成されることが好ましい。
【００１９】
また、本発明は、前記ブロックアドレス変換情報が、前記格納情報から使用不可となっているブロックに対する代替ブロックの設定を含むことを特徴とする。
【００２０】
この発明によれば、使用不可となった不良ブロックに対して代替ブロックを設定し、不良ブロックに対する代替ブロックのアドレスをブロックアドレス変換情報に含ませる。
【００２１】
このような本発明においては、前記ブロックアドレス変換情報を記憶する記憶手段を含むことができる。このとき、前記記憶手段が、書き換え可能な不揮発性記憶素子であっても良い。
【００２２】
また、本発明では、前記記憶手段として、前記不揮発性記憶媒体を用いることができる。このとき、前記ブロックアドレス変換情報を、前記不揮発性記憶媒体の先頭のブロックに格納することを特徴とし、前記格納情報から前記先頭のブロックが使用不可であるときに、先頭のブロックに連続するブロックの中で最初に使用可となっているブロックに、前記ブロックアドレス変換情報を格納することを特徴とする。
【００２３】
この発明によれば、ブロックアドレス変換手段を、不揮発性記憶媒体に格納するときに、格納場所として、先頭のブロックを用い、先頭のブロックが不良ブロックであれば、最初に使用可能となっているブロックを用いることが好ましい。
【００２４】
さらに、本発明では、前記ブロックアドレス変換情報を更新する更新手段を含むことができ、この前記更新手段が、前記ブロックアドレス変換情報が記憶される前記ブロックに連続するブロックの中で最初に使用可となっているブロックに、前記更新したブロックアドレス変換情報を格納した状態で、更新前の前記ブロックアドレスが格納された前記ブロックを無効化し、無効化したブロックに更新後の前記ブロックアドレス変換情報を格納した状態で該当ブロックを有効化することを特徴とする。
【００２５】
この発明によれば、ブロックアドレスが格納されているブロックの次の不良ブロックでないブロックに、更新したブロックアドレス管理情報を格納した状態で、更新前のブロックアドレス変換情報を格納したブロックを無効化した後、このブロックに更新したブロックアドレス変換情報を格納する。この状態で、該当ブロックを有効化することにより、ブロックアドレス情報を消失させってしまうことなく、確実に更新することができる。
【発明の効果】
【００２６】
以上説明したように本発明によれば、ＮＡＮＤ型フラッシュメモリなどのブロック単位で管理される不揮発記憶媒体を用いるときに、記憶容量の実質的な低下を生じさせることなく、不良ブロックが発生しても、確実なデータの読出しなどが可能となるという優れた効果が得られる。
【発明を実施するための最良の形態】
【００２７】
以下に、図面を参照しながら本発明の実施の形態を説明する。
〔第１の実施の形態〕
図１には、本発明の基本構成とするシステムコントローラ１０の概略構成を示している。このシステムコントローラ１０は、ＣＰＵ１２及び、ＳＲＡＭ等を用いたＲＡＭ１４等を備え、ＣＰＵ１２とＲＡＭ１４等が、コントロールバス、アドレスバス及びデータバスを含んで構成されているバス１６によって接続されている。
【００２８】
このシステムコントローラ１０は、各種の電子機器に設けられ、ＣＰＵ１２が予め設定されたプログラムに基づいた制御処理等を実行する。
【００２９】
システムコントローラ１０は、ブートコードなどの各種のプログラムを記憶するＲＯＭとして、不揮発性メモリの一種であるＮＡＮＤ型フラッシュメモリ（Flash  Memory、以下、フラッシュメモリ１８とする）が設けられている。このフラッシュメモリ１８では、格納されているデータの保存と共に、データの書込み及び更新等が可能となっている。
【００３０】
システムコントローラ１０では、システム起動時に、ＣＰＵ１２がフラッシュメモリ１８に格納されているブートコードを読み込んで、このブートコードに基づいた処理を実行することにより立ち上がる。
【００３１】
このフラッシュメモリ１８では、予め設定されたメモリ容量（ブロックサイズ、例えば６４ＫＢ）を一つのブロックとして、記憶容量に応じたブロック数が設けられている。また、フラッシュメモリ１８では、ブロック単位で情報の書込み及び読み取りが行なわれるようになっている。
【００３２】
このシステムコントローラ１０には、フラッシュメモリ１８を制御するＮＡＮＤ型フラッシュメモリコントローラ（以下、メモリコントローラ２０とする）が設けられており、フラッシュメモリ１８は、メモリコントローラ２０を介してバス１６に接続している。
【００３３】
ＣＰＵ１２では、ブートコードなどを読み出すときに、例えばブートコードが記憶されているメモリ領域の論理アドレスを指定する。このとき、フラッシュメモリ１８では、ブロック単位でデータの書込み及び読出しが行なわれることから、メモリコントローラ２０では、論理アドレスに対して、フラッシュメモリ１８上のブロックごとの物理アドレスを設定し、この物理アドレスに基づいてフラッシュメモリ１８を制御し、ＣＰＵ１２が要求するデータを読み出す。
【００３４】
また、データ（ブートコード）は、ブロック単位で読み出されることから、ＣＰＵ１２では、例えば、フラッシュメモリ１８から読み出したデータを、ＲＡＭ１４上に展開して、ＲＡＭ１４から展開したデータを順に読み込む。
【００３５】
なお、フラッシュメモリ１８にＳＲＡＭが設けられているときには、ＲＡＭ１４に換えてフラッシュメモリ１８内のＳＲＡＭ上にデータを展開して、ＳＲＡＭからデータを読み取るものであってもよい。
【００３６】
ところで、図２に示されるように、システムコントローラ１０に設けているメモリコントローラ２０は、ＮＡＮＤインターフェイスモジュール（ＮＡＮＤ  Ｉ／Ｆモジュール）２２及び、アドレス変換部２４が形成されている。
【００３７】
フラッシュメモリ１８（図２では図示省略）に記憶されているブートコードなどのデータを読み出すときには、ＣＰＵ１２などのバスマスターから、制御信号、アドレス信号が入力され、これに基づいたデータ信号が出力される。
【００３８】
メモリコントローラ２０では、アドレス変換部２４にアドレス信号が入力される。このアドレス信号は、論理アドレスとなっており、アドレス変換部２４では、この論理アドレスを、フラッシュメモリ１８に対応する物理アドレスに変換する。このとき、フラッシュメモリ１８では、ブロック単位でデータ管理が行なわれており、アドレス変換部２４では、ブロックごとに設定される物理ブロックアドレスに変換して、ＮＡＮＤインターフェイスモジュール２２へ出力する。
【００３９】
ＮＡＮＤインターフェイスモジュール２２は、制御信号とアドレス変換部２４から入力される物理ブロックアドレスに基づいて、フラッシュメモリ１８の該当するブロックに格納されているデータを読み出す。
【００４０】
このように、フラッシュメモリ１８では、データの読出し及び書き込みを、１ブロック分ずつ行なわれるようになっており、ここから、ＣＰＵ１２では、フラッシュメモリ１８の物理ブロックに対応する論理ブロックを設定し、論理アドレスを、論理ブロックアドレスに変換する。
【００４１】
図３（Ａ）には、論理アドレスから論理ブロックアドレスに変換するマップの一例を示しており、例えば、ＣＰＵ１２がこのマップを記憶し、論理アドレスを論理ブロックアドレスに変換し、アドレス変換部２４で論理ブロックアドレスを物理ブロックアドレスに変換することにより、容易に論理アドレスに応じた物理ブロックのデータを読み出すことができる。
【００４２】
なお、このような論理アドレスを論理ブロックアドレスに変換する処理は、メモリコントローラ２０で行うものであっても良い。
【００４３】
また、図３（Ｂ）には、アドレス変換部２４で論理−物理アドレス変換に用いるＬＵＴ（Look  Up  table）とする変換テーブルの一例を示しており、図３（Ｃ）には、フラッシュメモリ１８内の物理ブロックごとのデータマップの一例を示している。
【００４４】
ここで、以下では、一例としてフラッシュメモリ１８の各ブロックのサイズ（記憶容量）を６４ＫＢ（２１６Byte）として、論理ブロックアドレスが００ｈ、０１ｈ、０２ｈ、０３ｈ、・・・の論理ブロックＬＢを論理ブロックＬＢ０、ＬＢ１、ＬＢ２、ＬＢ３、・・・とし、物理ブロックアドレスが００ｈ、０１ｈ、０２ｈ、０３ｈ、・・・の物理ブロックＰＢを物理ブロックＰＢ０、ＰＢ１、ＰＢ２、ＰＢ３、・・・として説明する。
【００４５】
アドレス変換部２４では、論理ブロックアドレスが入力されることにより、フラッシュメモリ１８上の物理ブロックアドレスに変換し、ＮＡＮＤインターフェイスモジュール２２は、この物理ブロックアドレスに基づいてデータの読出しを行なう。
【００４６】
これにより、例えば、論理ブロックアドレス０１ｈの論理ブロックＬＢ（論理ブロックＬＢ０）のデータの読出しが要求されることにより、論理ブロックＬＢ０に対応する物理ブロックＰＢ０のデータData０が読み出される。
【００４７】
一方、ＮＡＮＤ型フラッシュメモリを用いているフラッシュメモリ１８では、製造過程や経時的に不良ブロックが発生する可能性がある。この不良ブロックでは、データの書込みを行ったとしても、読出しの不良、データ化け等を生じ、これにより、例えば、ブートコードが格納されたブロックに不良が生じると、システムコントローラ１０が立ち上がらなくなる起動不良を生じさせてしまう。
【００４８】
ここで、メモリコントローラ２０では、不良ブロックでない（良ブロック）の物理ブロックＰＢのみを使用してデータを書き込む。すなわち、フラッシュメモリ１８にデータを書き込むときや、データが書き込まれている物理ブロックＰＢから不良ブロックが検出されると、不良ブロックでなく（良ブロック）かつ空きとなっている物理ブロックＰＢから、不良ブロックに対するブロック（以下、代替ブロックとする）を設定し、不良ブロックに格納されているデータを、代替ブロックとなる物理ブロックＰＢに格納する。なお、不良ブロックの検出及び、フラッシュメモリ１８内でのデータの書き換え（更新）についての一例は、別の実施形態で詳述する。
【００４９】
一方、代替ブロックとする物理ブロックＰＢにデータを格納すると、論理ブロックＬＢと物理ブロックＰＢの間で不一致が生じ、論理−物理アドレスの適正な変換が困難となる。すなわち、図３（Ｂ）の変換テーブル上で不整合が生じる。
【００５０】
ここから、本実施の形態では、不良ブロックとなった物理ブロックＰＢと不良ブロックに対する代替ブロックとする物理ブロックＰＢを示すテーブル（以下、代替ブロックテーブルとする）を作成し、この代替ブロックテーブルを用いて、論理ブロックアドレス−物理ブロックアドレス変換のあとに、物理ブロックアドレス−物理ブロックアドレス変換を行うか、論理ブロックアドレス−物理ブロックアドレス変換を行うようにしている。
【００５１】
これにより、メモリコントローラ２０では、フラッシュメモリ１８からのデータの読出し要求があったときには、不良ブロックに対する代替ブロックテーブルを参照しながら、要求に基づいたデータの読出しを行なう。
【００５２】
図４には、メモリコントローラ２０で適用する代替ブロックテーブルの一例を示している。この代替ブロックテーブルでは、不良ブロックごとにテーブル番号を付与し、不良ブロックとなった物理ブロックＰＢと、代替ブロックとする物理ブロックＰＢの情報を格納している。
【００５３】
なお、図４では、物理ブロックＰＢ０が不良ブロックとなっており、この物理ブロックＰＢ１に対して、代替ブロックとして物理ブロックＰＢ５が設定されていることを示している。
【００５４】
ここで、図５には、この代替ブロックテーブルを用いた論理−物理アドレス変換の一例を示している。なお、このフローチャートでは、論理ブロックアドレス＝物理ブロックアドレスを基本としており、これにより、不良ブロックに対しては、論理ブロックアドレス≠物理ブロックアドレスとなる。
【００５５】
このフローチャートは、論理ブロックアドレスが入力されることにより実行され、最初のステップ１００では、論理ブロックアドレスを読み込み、次のステップ１０２では、例えば、図３（Ｂ）に示す標準の変換テーブルを用いて論理ブロックアドレスから物理ブロックアドレスを仮設定する。これにより、最初の論理ブロックＬＢ０に対して、物理ブロックＰＢ０が仮設定される。
【００５６】
この後、ステップ１０４では、テーブル番号を初期値（テーブル番号＝０）に設定し、ステップ１０６では、物理ブロックＰＢ０がテーブル番号に対応する不良ブロックであるか否か、仮設定した物理ブロックＰＢ０が不良ブロックであるか否かを確認する。
【００５７】
ここで、不良ブロックと一致しないときには、ステップ１０６で否定判定してステップ１０８へ移行し、現在のテーブル番号が最終であるか否かを確認し、テーブル番号が最終の番号であるときには、ステップ１０８で肯定判定して終了する。
【００５８】
これにより、論理ブロックＬＢ０に対して物理ブロックＰＢ０が設定されて、この論理ブロックＬＢ０に対するアドレス変換（ブロック変換）を終了する。
【００５９】
また、テーブル番号が最終番号でないときには、ステップ１０８で否定判定してステップ１１０へ移行し、次のテーブル番号に設定した後、ステップ１０６へ移行し、仮設定した物理ブロックが次のテーブルの不良ブロックの物理ブロック番号と一致するか否かを確認する。
【００６０】
ここで、仮設定した物理ブロックが、いずれかのテーブル番号の不良ブロックの物理ブロックと一致すると、ステップ１０６で肯定判定してステップ１１２へ移行する。
【００６１】
このステップ１１２では、該当テーブル番号の代替ブロックの物理ブロックを読み出し、代替ブロックの物理ブロックを、論理ブロックに対する物理ブロックに設定する。
【００６２】
すなわち、図４に示される代替ブロックテーブルが作成されているとき、論理ブロックＬＢ１のデータが要求されたときには、この論理ブロックＬＢ１に対応する物理ブロックＰＢ１が不良ブロックに設定されているので、論理ブロックＬＢ１に対しては、代替ブロックとして設定されている物理ブロックＰＢ５にアドレス変換される。
【００６３】
これにより、同一のデータを複数のブロックに格納することによるメモリ領域の使用効率の低下を防止しながら、各ブロックについての良否判定を順に行なうときに比べて、データを読み出すための処理時間の短縮を図ることができる。
【００６４】
なお、ここでは、論理アドレスではなく、論理ブロックアドレスを用いてデータの処理（読出し）を要求するように説明したが、論理アドレスでデータの読み出しを要求されるもので当ても良い。このときには、論理アドレスと１ブロック分のデータ量に基づいて物理ブロックアドレスを設定した後に、図５の処理を行うものであれば良い。たとえば、１ブロック分の記憶容量が６４ＫＢ（２１６Byte）であるときには、入力された論理アドレスを１６bit分右シフトして論理ブロックアドレスを設定し、この論理ブロックアドレスに基づいて物理ブロックを仮設定するなどの任意の方法を適用することができる。
【００６５】
一方、不良ブロックと、不良ブロックに対する代替ブロックのテーブルを用いて、論理−物理アドレス変換用の変換テーブル（以下、代替変換テーブルとする）を作成し、この代替変換テーブルを用いて論理−物理アドレス変換（論理−物理ブロック変換）を行なうものであっても良い。
【００６６】
例えば、図３（Ｂ）の変換テーブルと図４の代替ブロックテーブルから、図６（Ａ）に示される代替変換テーブルが得られる。この代替変換テーブルでは、図６（Ｂ）に示されるように、フラッシュメモリ１８上で物理ブロックＰＢ１が不良ブロックとなっており、この代替ブロックとして物理ブロック番号ＰＢ５が設定されていることを示す。
【００６７】
これにより、例えば、論理ブロックＬＢ１のデータが要求されることにより、物理ブロックＰＢ１の代替ブロックとなっている物理ブロックＰＢ５に格納されているデータData１が読み出される。
【００６８】
一方、論理−物理ブロック変換は、書き換え可能な不揮発性メモリ（以下、ＲＯＭとする）を用いて行なうものであっても良い。このときには、例えば、図７（Ａ）に示されるように、論理アドレス又は論理ブロックアドレスを、ＲＯＭ上の物理アドレス（Address）とし、対応するフラッシュメモリ１８内の物理ブロックアドレスを、該当アドレス内のデータ（Data）として記憶する。
【００６９】
このときには、図７（Ｂ）に示されるように、アドレス変換部２４に、ＲＯＭ２６と、論理アドレスをＲＯＭ上の物理アドレスに変換するアドレス変換手段２８を設け、このアドレス変換手段２８から出力されるＲＯＭ２６上の物理アドレスに基づいて、ＲＯＭ２６から該当アドレスのデータを読み出す。このときのデータがフラッシュメモリ１８の物理ブロックアドレスであることにより、論理−物理アドレス変換がなされる。
【００７０】
このように構成することにより、例えば、メモリコントローラ２０を、ＲＯＭ２６が含まれるＡＳＩＣなどの素子によって構成することができる。
【００７１】
このように、代替ブロックテーブルを作成して、この代替ブロックテーブル又は、代替ブロックテーブルに基づいた代替変換テーブルを用いて、論理−物理ブロック変換（論理−物理アドレス変換）を行うことにより、個々のブロックについて、例えば、図５のフローチャートに相当するソフトウェアを用いて不良ブロックとなっているか否かを確認するときと比較して、論理−物理アドレス変換を行うときの変換時間の短縮、データ読出し等の処理時間の短縮を図ることができる。
〔第２の実施の形態〕
次に本発明の第２の実施の形態を説明する。なお、第２の実施の形態の基本的構成は、前記した第１の実施の形態と同じであり、第２の実施の形態において第１の実施の形態と同一の構成には、同一の符号を付与してその説明を省略する。
【００７２】
図８には、第２の実施の形態に係るシステムコントローラ３０の概略構成を示している。このシステムコントローラ３０は、ＳＲＡＭなどの記憶媒体（以下、ＲＡＭ３２とする）を備えており、このＲＡＭ３２が、メモリコントローラ２０Ａに接続している。
【００７３】
また、システムコントローラ３０には、情報の書き換えが可能な不揮発性メモリ（例えば、ＥＥＰＲＯＭなど）としてＲＯＭ３４が設けられている。メモリコントローラ２０Ａは、このＲＯＭ３４に代替ブロックテーブルを記憶するようにしている。
【００７４】
メモリコントローラ２０Ａは、ＲＯＭ３４に記憶される不良ブロックに対する代替ブロックの情報（代替ブロックテーブル）に基づいて、論理−物理アドレス変換に用いる変換テーブル（代替変換テーブル）を作成し、作成した代替変換テーブルをＲＡＭ３２に格納するようにしている。
【００７５】
これにより、ＲＡＭ３２の代替変換テーブルから、論理アドレス（又は論理ブロックアドレス）に対応するフラッシュメモリ１８上の物理ブロックアドレス（ないし物理ブロック）が得られるようにしている。
【００７６】
例えば、メモリコントローラ３０では、論理−物理アドレス変換を行うアドレス変換部２４（図８では図示省略、図２参照）で、論理アドレスをＲＡＭ３２上の変換テーブルのアドレスに変換し、変換したアドレスに基づいたデータをＲＡＭ３２から読み出すことにより、論理アドレス（論理ブロックアドレス）に対応するフラッシュメモリ１８上の物理ブロックアドレス（物理ブロック）が得られる。
【００７７】
なお、このようなメモリコントローラ２０ＡとＲＡＭ３２は、ひとつのＡＳＩＣ（Application  Specific  Integrated  Circuit）内に形成することができる。また、フラッシュメモリ（ＮＡＮＤ型フラッシュメモリ）１８には、通常の記憶領域と別に、ＳＲＡＭが設けられているものがあり、このようなフラッシュメモリ１８を用いるときには、このフラッシュメモリ１８内のＳＲＡＭをＲＡＭ３２として使用することもできる。
【００７８】
システムコントローラ３０に設けているメモリコントローラ２０Ａでは、ＣＰＵ１２の起動に先立って、ＲＡＭ３２上に代替変換テーブルを作成し、ＣＰＵ１２からフラッシュメモリ１８に記憶されているブートコードなどの読出しが要求されたときに、このＲＡＭ３２に格納した代替変換テーブルを用いる。
【００７９】
次に、第２の実施の形態の作用として、システムコントローラ３０での代替変換テーブルの作成を説明する。なお、メモリコントローラ２０Ａの基本的構成は、第１の実施の形態に適用したメモリコントローラ２０と同等となっている。
【００８０】
ここで、図９（Ａ）には、予めＲＯＭ３４に格納される代替ブロックテーブルの一例を示している。この代替ブロックテーブルは、ＲＯＭ３４上の代替ブロックテーブルのベースアドレスをベースアドレスＴＢＴＢとし、例えば、不良ブロックのアドレス（物理ブロックアドレス）と代替ブロックのアドレス（物理ブロックアドレス）を２Byteで格納している。また、この代替ブロックテーブルでは、終端の不良ブロックと代替ブロックのデータ（アドレス）を同一の値（ここでは、一例としてＦＦｈ）としている。
【００８１】
また、図９（Ｂ）、図９（Ｃ）には、ＲＡＭ３２に形成する代替変換テーブルの一例を示している。この代替変換テーブルでは、ＲＡＭ３２上のベースアドレスをベースアドレスＬＵＴＢとして、フラッシュメモリ１８の物理ブロックＰＢのアドレス（ブロックアドレス）を２Byteで格納している。
【００８２】
さらに、システムコントローラ２０Ａでは、論理ブロックのアドレス（論理ブロックアドレス）が、フラッシュメモリ１８の物理ブロックのアドレス（物理ブロックアドレス）としている。
【００８３】
このときの代替変換テーブルは、論理ブロックアドレス００ｈに対応する物理ブロックアドレスが格納されるＲＡＭ３２上のアドレスは、「ＬＵＴＢ＋００ｈ」となるようにしている。なお、図９（Ｂ）は、不良ブロックが検出されていないときの代替変換テーブルを示し、図９（Ｃ）は図９（Ａ）の代替ブロックテーブルに基づいて作成された代替変換テーブルを示している。
【００８４】
フラッシュメモリ１８の不良ブロックが経時的に増加する可能性があるので、ＲＡＭ３２及びＲＯＭ３４には、これを見越した領域を予め確保している。例えば、一般的なＮＡＮＤ型フラッシュメモリでは、製造過程などで発生する初期の不良ブロックが、全記憶容量に対して２％以下であり、また、１０万回の消去／書込みに対して発生する不良ブロックは１．８％以下であり、ここから、全記憶容量に対して３．８％以下の不良ブロックに対応可能となるように、ＲＡＭ３２及びＲＯＭ３４に記憶領域を確保できるようにすれば良い。
【００８５】
図１０には、第２の実施の形態における代替変換テーブルの作成処理の概略を示している。このフローチャートでは、最初のステップ１２０で論理ブロックのアドレスＡｄｄの初期値（ここではＡｄｄ＝００ｈ）を設定し、ステップ１２２では、このアドレスＡｄｄに対応するＲＡＭ上のアドレス（ＬＵＴＢ＋Ａｄｄ）に、Ａｄｄを格納する。
【００８６】
次のステップ１２４では、論理ブロックのアドレスＡｄｄが代替変換テーブルのサイズ以下か否かを確認し、肯定判定されることにより、ステップ１２６へ移行し、次の論理ブロックのアドレスに設定する。これにより、論理ブロックのアドレスＡｄｄがＡｄｄ＝０１ｈにセットされ、この論理ブロックに対応するＲＡＭ３２のアドレスに、フラッシュメモリ１８上の物理ブロックのアドレスとして「０１ｈ」が格納される。
【００８７】
このようにして、論理ブロックのアドレスＡｄｄが代替変換テーブルのサイズに達すると、ステップ１２４で否定判定されて、ＲＡＭ３２に代替ブロックテーブルの情報を付加する前のＬＵＴとなる代替変換テーブル（変換テーブル）が作成される。図９（Ｂ）には、このときの代替変換テーブルの概略を示している。
【００８８】
変換テーブルを作成するとステップ１２８では、アドレスＡｄｄに初期値を設定し（Ａｄｄ＝０）、ステップ１３０では、代替ブロックテーブルからこのアドレスＡｄｄに対応する不良ブロックのデータと、代替ブロックのデータを読み込み、ステップ１３２で不良ブロックのデータと代替ブロックのデータが一致しているか否かを確認する。
【００８９】
ここで、不良ブロックに対して代替ブロックが設定されているときには、不良ブロックを示すデータ（アドレス）と、代替ブロックを示すデータ（アドレス）が異なることから、不一致であるときには、ステップ１３２で否定判定してステップ１３４へ移行する。このステップ１３４では、不良ブロックのアドレスに対応する代替変換テーブル内のデータとして、代替ブロックのデータを格納する。
【００９０】
これにより、図９（Ｃ）に示されるように、不良ブロックのアドレスが「０１」であり、このアドレスに対応する代替ブロックのアドレスが「０５ｈ」であるときには、代替変換テーブルが形成されているＲＡＭ３２のアドレス「ＬＵＴＢ＋０１ｈ」に、代替ブロックのアドレス「０５ｈ」が格納される。
【００９１】
この後、図１０のフローチャートでは、ステップ１３６で、代替ブロックテーブルの次のアドレスＡｄｄを設定し、ステップ１３０へ移行する。
【００９２】
ここで、代替ブロックテーブルでは、終端の不良ブロックと代替ブロックのデータを同じにしており、ステップ１３２で肯定判定されることにより、代替ブロックテーブル内の全ての不良ブロックに対する代替ブロックの設定が終了したと判断して、代替変換テーブルの作成を終了する。これにより、図９（Ｃ）に示されように、代替ブロックテーブルの情報（図９（Ａ）参照）に基づいた代替変換テーブルが得られる。
【００９３】
このようにして、予め代替変換テーブルを作成することにより、ＣＰＵ１２がフラッシュメモリ１８からブートコードを読み込んでシステムコントローラ３０や、システムコントローラ３０が設けられている装置を起動するときに、迅速で正確な起動が可能となる。これと共に、フラッシュメモリ１８の不良ブロックが起因して、起動不良が生じてしまうことがない。
【００９４】
一方、前記したように、代替ブロックテーブルは、ＲＯＭ３４でなく、フラッシュメモリ１８上に形成することができる。このとき、代替ブロックテーブルは、フラッシュメモリ１８内の少なくとも一つの物理ブロックＰＢを用いる必要があるが、代替ブロックテーブルに用いる物理ブロックＰＢが不良ブロックとなると、代替ブロックテーブルを移動する必要があり、これに伴って、他の物理ブロックに格納しているデータの更新や、代替ブロックテーブルの更新が必要となる。
【００９５】
ここで、第３の実施の形態として、フラッシュメモリ１８への代替ブロックテーブルの格納及び、フラッシュメモリ１８に格納しているデータの更新、代替ブロックテーブルの更新を説明する。
〔第３の実施の形態〕
図１１には、第３の実施の形態に係るシステムコントローラ４０の概略構成を示している。なお、システムコントローラ４０の基本構成は、前記したシステムコントローラ１０又はシステムコントローラ３０と同じであり、ここでは、先ず、代替ブロックテーブルを用いた論理−物理アドレス変換についての説明は省略する。
【００９６】
システムコントローラ４０には、メモリコントローラ２０Ｂが設けられ、このメモリコントローラ２０Ｂにフラッシュメモリ１８とＲＡＭ３２が接続されている。このようなメモリコントローラ２０ＢはＲＡＭ３２と一体でＡＳＩＣを用いて形成することができる。
【００９７】
このメモリコントローラ２０Ｂでは、代替ブロックテーブルを、フラッシュメモリ１８上に形成するようにしている。
【００９８】
図１２（Ａ）には、第３の実施の形態でのフラッシュメモリ１８のマップを示している。フラッシュメモリ１８をプログラムＲＯＭとして用いるときには、先頭の物理ブロックＰＢ０に、論理ブロックＬＢ０に対応するデータ（ブートコードなどのプログラム）が格納されるようになっているが、本実施の形態では、この先頭の物理ブロックＰＢ０に、代替ブロックテーブルを格納するようにしている。また、本実施の形態では、代替ブロックテーブルは、不良ブロックを除く最初の物理ブロックＰＢに格納されるようにしている。
【００９９】
一方、代替ブロックテーブルを、先頭の物理ブロックＰＢに格納することにより、この物理ブロックＰＢ０に入れられるべきデータData０は、終端の物理ブロックＰＢに格納される。すなわち、フラッシュメモリ１８に、物理ブロックＰＢ０から物理ブロックＰＢＮまでのＮ＋１個の物理ブロックＰＢが設けられているときには、論理ブロックＬＢ０に対応するデータData０が、物理ブロックＰＢＮに格納されるようにしている。
【０１００】
図１２（Ｂ）には、このときの代替ブロックテーブルを示している。この代替ブロックテーブルでは、実際のデータが格納されていない物理ブロックＰＢ０を不良ブロックとみなして、代替ブロックとして物理ブロックＰＢＮを割り当てている。
【０１０１】
ここで、例えば、代替ブロックテーブルの更新などを行ったときに、代替ブロックテーブルを格納していた物理ブロックＰＢが不良ブロックとなると、代替ブロックテーブルを次の物理ブロックＰＢに格納する。このときに、格納先の物理ブロックＰＢに格納されているデータを、終端側の空き物理ブロックＰＢへ移動する。
【０１０２】
すなわち、図１２（Ｃ）に示されるように、物理ブロックＰＢ０が不良ブロックとなると、代替ブロックテーブルを次の物理ブロックＰＢ１に格納する。このとき、この物理ブロックＰＢ１に格納されていたデータData１を、終端側の空きブロックとなっている物理ブロックＰＢＮ−１へ移動する。
【０１０３】
これにより、新たに物理ブロックＰＢ１に格納される代替ブロックテーブルは、図１２（Ｄ）に示されるように、物理ブロックＰＢ０、ＰＢ１を不良ブロックとみなして、物理ブロックＰＢ０、ＰＢ１のそれぞれの代替ブロックとして物理ブロックＰＢＮ、ＰＢＮ−１が設定される。
【０１０４】
さらに、図１２（Ｅ）に示されるように、物理ブロックＰＢ０、ＰＢ１が不良ブロックと判定されたときには、代替ブロックテーブルを、良ブロックの最初となる物理ブロックＰＢ２に格納し、この物理ブロックＰＢ２に格納されていたデータData２を物理ブロックＰＢＮ−２へ移動する。
【０１０５】
これに伴い、図１２（Ｆ）に示されるように、物理ブロックＰＢ０、ＰＢ１を不良ブロックとすると共に、物理ブロックＰＢ２を不良ブロックとみなした代替ブロックテーブルが作成される。
【０１０６】
一方、フラッシュメモリ１８では、ＮＡＮＤ型フラッシュメモリルを用いており、図１３（Ａ）に示されるように、ＮＡＮＤ型フラッシュメモリは、管理用の単位ブロックが、メインエリア４２とスペアエリア４４によって構成されており、メインエリア４２には、データが格納され、スペアエリア４４には、管理情報が格納される。なお、ここでは、２つのメインエリア４２Ａ、４２Ｂと、スペアエリア４４Ａ、４４Ｂによって一つの単位ブロックが形成されており、メインエリア４２Ａの管理情報がスペアエリア４４Ａに格納され、メインエリア４２Ｂの管理情報がスペアエリア４４Ｂに格納される。
【０１０７】
図１３（Ｂ）には、スペアエリア４４の概略構成を示している。スペアエリア４４は、１６Byteで構成され、８Byte〜１０Byteには、スペアエリア４４対応するメインエリア４２のＥＣＣコードが格納され、１１〜１２Byteにスペアエリア４４のＥＣＣコードが格納されるようになっている。
【０１０８】
また、このスペアエリア４４では、０〜１の２Byteの領域に、スペアエリア４４が対応するメインエリア４４が不良ブロックであるか否かを判断可能とする情報（Invalid  Block  Info）が格納されている。
【０１０９】
ここから、フラッシュメモリ１８では、スペアエリア４４の最初の２Byte分の情報を読み出すことにより、対応するメインエリア４２（物理ブロックＰＢ）が不良ブロックである否かを判断することができ、不良ブロックと判断されたメインエリア４２が形成する物理ブロックＰＢに対して代替ブロックを設定すれば良い。
【０１１０】
なお、この情報（Invalid  Block  Info）は、格納されているデータが「ＦＦＦＦｈ」であるときにのみ良ブロックであり、これ以外の情報（≠ＦＦＦＦｈ）であるときには不良ブロックであることを示す。
【０１１１】
一方、スペアエリア４４では、２〜４の３Byte及び１４、１５の２Byte分が、ユーザーエリア（Usable  Area）となっており、実際にフラッシュメモリ１８を使用するときに、フラグ等の利用に割り当てることができるようになっている。
【０１１２】
ここで、本実施の形態では、１４、１５の２Byte分を有効判定エリア４６として、該当するメインエリア４２に格納されているデータが有効に設定されているか無効に設定されているかの情報（Valid  Data  Info）を格納する。
【０１１３】
このとき、メインエリア４２のデータが有効とするときに、有効判定エリア４６のデータを「００ＦＦｈ」とし、利用判定エリア４６のデータが、これ以外の値（≠００ＦＦｈ）であるときには、メインエリア４２のデータを無効とするように規定している。
【０１１４】
図１４には、このように設定したときのスペアエリア４４の状態と、これに対する有効／無効をまとめて示している。この図１４に示されるように、本実施の形態では、スペアエリア４４の先頭の２Byte（０−１Byte）のデータによって、メインエリア４２に格納される代替ブロックテーブルなどのデータが無効な不良ブロックか否かを判定し、不良ブロックであるときには、メインエリア４２のデータは無効となる。また、不良ブロックでないとき（良ブロックであるとき）には、有効判定エリア４６の情報（Valid  Data  Info）から、メインエリア４２のデータを有効とするか無効とするかの設定が可能となっている。
【０１１５】
なお、フラッシュメモリ１８（ＮＡＮＤ型フラッシュメモリ）では、初期化を行なうときに、全てのbitのデータを「１」とするようになっており、スペアエリア４４内のユーザーエリアのデータが初期化されることにより、有効判定エリア４６は、「ＦＦＦＦｈ」となり、メインエリア４２内のデータを無効としている。
【０１１６】
メモリコントローラ２０Ｂは、フラッシュメモリ１８内に格納している代替ブロックテーブルの更新や、物理ブロックＰＢ間でのデータの移動、データの更新（プログラムアップデート）などを行なうときに、スペアエリア４４に設定している有効判定エリア４６を用いる。
【０１１７】
ここで、物理ブロックＰＢ１を用いて、物理ブロックＰＢ０に格納されている代替ブロックテーブルＴＢＴＤ０を更新して、更新した代替ブロックテーブルＴＢＴＤ１を格納する。このときに、更新した代替ブロックテーブルＴＢＴＤ１を、一旦、物理ブロックＰＢ１格納した後、物理ブロックＰＢ０へ移動するものとしている。
【０１１８】
図１５（Ａ）、図１５（Ｂ）及び図１５（Ｃ）に示されるように、このときの初期状態（更新前の状態、図１５（Ａ）のステップ１４０）では、物理ブロックＰＢ０のメインエリア４２に代替ブロックテーブルＴＢＴＤ０が格納され、有効判定エリア４６の情報（Valid  Data  Info）は「００ＦＦｈ」となっている（図１５（Ｂ）参照）。
【０１１９】
ここで、先ず、ステップ１４２で物理ブロックＰＢ１のデータを消去（初期化）する。これにより、物理ブロックＰＢ１のメインエリア４２では、各Byteのデータが「ＦＦｈ」となると共に、有効判定エリア４６のデータが「ＦＦＦＦｈ」となる（図１５（Ｃ）参照）。
【０１２０】
次に、ステップ１４４では、更新した代替ブロックテーブルＴＢＴＤ１を物理ブロックＰＢ１のメインエリア４２に格納すると共に、物理ブロックＰＢ１の有効判定エリア４６に、物理ブロックＰＢ１のデータを有効とする情報「００ＦＦｈ」を書き込む（図１５（Ｃ）参照）。
【０１２１】
このとき、物理ブロックＢＬ０のメインエリア４２に、代替ブロックテーブルＴＢＴＤ０が残っており、また、有効判定エリア４６のデータが「００ＦＦｈ」となっていることにより、物理ブロックＰＢ０、ＰＢ１の何れも有効となっているが、代替ブロックデータを、最初の物理ブロックＰＢに格納するとした設定により、この時点では、物理ブロックＰＢ０に格納している代替ブロックテーブルＴＢＴＤ０が有効となっている。
【０１２２】
この後、物理ブロックＰＢ０へ代替ブロックテーブルＴＢＴＤ１を格納する。物理ブロックＰＢ０へ代替ブロックテーブルＴＢＴＤ１を格納するときには、先ず、ステップ１４６で物理ブロックＰＢ０の有効判定エリア４６に、物理ブロックＰＢ０のデータを無効とするデータ（例えば、「００００ｈ」）を書き込む。
【０１２３】
この有効判定エリア４６へデータの書込みを行なうときには、所定のデータをオーバーライトする。これにより、書込み途中で電源が遮断されたとしても、書込みが完了してなければ、物理ブロックＰＢ０の代替ブロックテーブルＴＢＴＤ０が有効となっており、書込みが完了していれば、その瞬間に、物理ブロックＰＢ０のデータが無効となり、物理ブロックＰＢ１のデータ（代替ブロックテーブルＴＢＴＤ１）が有効となるので、代替ブロックテーブルが消失して、システムコントローラ４０が起動しなくなってしまうのを確実に防止することができる。
【０１２４】
次に、ステップ１４８では、物理ブロックＰＢ０のデータを消去し、ステップ１５０で、物理ブロックＰＢ０のメインエリア４２に、代替ブロックテーブルＴＢＴＤ１を格納すると共に、物理ブロックＰＢ０の有効判定エリア４６に、物理ブロックＰＢ０を有効とするデータ「００ＦＦｈ」を書き込む。
【０１２５】
ここで、物理ブロックＰＢ０の有効判定エリア４６に「００ＦＦｈ」が書き込まれることにより、物理ブロックＰＢ０に格納した代替ブロックデータＴＢＴＤ１が有効となり、更新された代替ブロックテーブルＴＢＴＤ１を用いた論理−物理アドレス変換が可能となる。
【０１２６】
このようにして、代替ブロックテーブルＴＢＴＤの更新を行うことにより、更新途中で、システムダウンや電源が遮断されるなどの支障が生じても、更新前の代替ブロックテーブルＴＢＴＤ０又は、更新された代替ブロックテーブルＴＢＴＤ１の何れかが必ず有効となる。なお、代替ブロックテーブルＴＢＴＤ０が有効となったままであれば、起動時に、再度、代替ブロックテーブルＴＢＴＤ０の更新を行うようにすれば良い。
【０１２７】
一方、以上の説明では、代替ブロックテーブルの更新を例に説明したが、これに限らず、フラッシュメモリ１８の各物理ブロックＰＢに格納しているデータの更新、ソフトウェアのアップデートなどに適用することもできる。
【０１２８】
ここで、図１６及び図１７を参照しながら、フラッシュメモリ１８に格納しているソフトウェアの更新を説明する。なお、図１６（Ａ）に示されるように、ここでは、一例として物理ブロックＰＢ０に格納されているソフトウェアＳＷを更新するものとし、このときに、物理ブロックＰＢ１が不良ブロック、物理ブロックＰＢ４が空きとなっており、代替ブロックテーブルＴＢＴＤは、別に設けているＲＯＭ（例えばＲＯＭ３４）に格納されているものとしている。
【０１２９】
また、このソフトウェアＳＷは、ブートコードなどであり、図１７（Ａ）に示されるように、ＣＰＵ１２が起動時に最初に読み取るリセットポインタとなる論理ブロックＬＢ０に対応する物理ブロックＰＢにソフトウェアＳＷが格納されるようになっている。
【０１３０】
図１６（Ａ）に示すように、このような条件でソフトウェアＳＷのアップデートを行なうときのフラッシュメモリ１８は、物理ブロックＰＢ０にソフトウェアＳＷが格納され、物理ブロックＰＢ５にData１が格納されている。また、物理ブロックＰＢ２、ＰＢ３には、Data２、Data３が格納されている。
【０１３１】
図１６（Ｂ）には、このときの代替ブロックテーブルＴＢＴＤを示しており、この代替ブロックテーブルＴＢＴＤでは、物理ブロックＰＢ１を不良ブロックとして、この物理ブロックＰＢ１の代替ブロックとして物理ブロックＰＢ５が設定されている。
【０１３２】
図１７（Ａ）には、この代替ブロックテーブルＴＳＴＤに基づいて設定される代替変換テーブルＬＵＴＤを示しており、この代替変換テーブルＬＵＴＤでは、リセットポインタとなる論理ブロックＬＢ０を物理ブロックＰＢ０に変換するように設定されていると共に、論理ブロックＬＢ１、ＬＢ２、ＬＢ３がそれぞれ物理ブロックＰＢ５、ＰＢ２、ＰＢ３に変換されるように設定されている。
【０１３３】
ここで、図１６（Ｃ）に示されるように、最初は、物理ブロックＰＢ０に格納されているソフトウェアＳＷを、空き（未使用状態）となっている物理ブロックＰＢ４にコピーする。これにより、物理ブロックＰＢ０、ＰＢ４にソフトウェアＳＷが格納された状態となっており、このときに、代替ブロックテーブルＴＢＴＤが変更されず、論理ブロックＬＢ０に対する物理ブロックＰＢとして物理ブロックＰＢ０が設定されていることにより、物理ブロックＰＢ０に格納されているソフトウェアＳＷが有効となっている。
【０１３４】
ここ状態で、図１６（Ｄ）に示されるように、代替ブロックテーブルＴＢＴＤを更新し、物理ブロックＰＢ０の代替ブロックとして物理ブロックＰＢ４を設定するように代替ブロックテーブルの更新を行う。これにより、代替変換テーブルＬＵＴＤが更新される。
【０１３５】
図１７（Ｂ）には、このときに更新された代替変換テーブルＬＵＴＤを示しており、この代替変換テーブルＬＵＴＤでは、論理ブロックＬＢ０を、物理ブロックＰＢ４にアドレス変換されるように設定される。
【０１３６】
この後、図１７（Ｅ）に示されるように、物理ブロックＰＢ０に格納されているソフトウェアＳＷを消去し（物理ブロックＰＢ０の初期化）、次に、図１７（Ｆ）に示されるように、物理ブロックＰＢ０に新たなソフトウェアＳＷを格納する。
【０１３７】
物理ブロックＰＢ０へ新たなソフトウェアＳＷの格納が終了すると、図１７（Ｇ）に示されるように、物理ブロックＰＢ０を有効とするように代替ブロックテーブルＴＢＴＤを更新する。すなわち、物理ブロックＰＢ４を代替ブロックテーブルから消去し、代替ブロックテーブルＴＢＴＤをソフトウェアＳＷの更新前に戻す（図１６（Ｂ）参照）。
【０１３８】
これにより、図１７（Ｃ）に示されるように、代替変換テーブルＬＵＴＤが更新され、論理ブロックＰＢ０が、更新したソフトウェアＳＷを格納した物理ブロックＰＢ０に変換されるように設定される。
【０１３９】
このようにして、ソフトウェアＳＷの更新が行われることにより、例えば、更新途中でシステムコントローラ４０の電源が遮断されるなどしても、ソフトウェアＳＷが消滅してしまうことが無く、また、ＣＰＵ１２が再起動した時に、少なくとも更新前のソフトウェアＳＷを確実に読み取ることができるので、ＣＰＵ１２やシステムコントローラ４０、システムコントローラ４０が設けられている装置に起動不良が生じてしまうことがない。
【０１４０】
なお、以上説明した本実施の形態は、本発明の構成を限定するものではない。本発明は、記憶媒体としてＮＡＮＤ型フラッシュメモリ１８を例に説明したが、本発明はこれに限るものではなく、例えば、ハードディスクドライブ（ＨＤＤ）など、書き換え可能な不揮発性記憶媒体であり、かつ、ブロック単位でデータの管理が行なわれる任意の構成の記憶媒体及び、記憶媒体を用いた任意のシステムに適用することができる。
【図面の簡単な説明】
【０１４１】
【図１】第１の実施の形態に係るシステムコントローラの一例を示す概略構成図である。
【図２】メインコントローラの一例を示す概略構成図である。
【図３】（Ａ）はＣＰＵなどに設けられる論理アドレスに対する論理ブロックアドレスのマップの一例を示す概略図、（Ｂ）は論理−物理アドレス変換に用いる変換テーブル（ＬＵＴ）の一例を示し、（Ｃ）は（Ｂ）の変換テーブルに対応するフラッシュメモリのマップを示す概略図である。
【図４】第１の実施の形態に係る代替ブロックテーブルの一例を示す概略図である。
【図５】第１の実施の形態に係る論理−物理アドレス変換の一例を示す流れ図である。
【図６】（Ａ）は変換テーブルと代替ブロックテーブルに基づいて作成される代替変換テーブルの一例を示す概略図、（Ｂ）は（Ａ）に対応したフラッシュメモリのマップを示す概略図である。
【図７】（Ａ）はＲＯＭに代替変換テーブルを形成する時のマップの一例を示す概略図、（Ｂ）は（Ａ）のＲＡＭを用いるときのアドレス変換部の構成の一例を示す概略図である。
【図８】第２の実施の形態に係るシステムコントローラの一例を示す概略図である。
【図９】（Ａ）はＲＯＭに形成する代替ブロックテーブルの一例を示す概略図、（Ｂ）はＲＡＭに作成される変換テーブルを示す概略図、（Ｃ）は（Ａ）及び（Ｂ）からＲＡＭに作成される代替変換テーブルを示す概略図である。
【図１０】第２の実施の形態に係る代替変換テーブルの作成の一例を示す流れ図である。
【図１１】第３の実施の形態に係るシステムコントローラの一例を示す概略構成図である。
【図１２】（Ａ）、（Ｃ）及び（Ｅ）は代替ブロックテーブルを設けたときのフラッシュメモリのマップを示す概略図、（Ｂ）、（Ｄ）及び（Ｆ）は、（Ａ）、（Ｃ）及び（Ｄ）に対応する代替ブロックテーブルを示す概略図である。
【図１３】（Ａ）はフラッシュメモリに形成される物理ブロックの一例を示す概略図、（Ｂ）は物理ブロックに形成されるスペアエリアの構成を示す概略図である。
【図１４】スペアエリアの情報に基づいた物理ブロックの有効／無効を示す図表である。
【図１５】（Ａ）はフラッシュメモリに設けた代替ブロックテーブルの更新処理の一例を示す流れ図、（Ｂ）は（Ａ）の処理に伴う物理ブロックＰＢ０の状態変化を示す概略図、（Ｃ）は（Ａ）の処理に伴う物理ブロックＰＢ１の状態変化を示す概略図である。
【図１６】（Ａ）、（Ｃ）、（Ｅ）及び（Ｆ）はソフトウェアの更新を行うときのフラッシュメモリのマップを示す概略図、（Ｂ）は（Ａ）に対応する代替ブロックテーブルを示す概略図、（Ｄ）は（Ｃ）に対応する代替ブロックテーブルを示す概略図、（Ｇ）は（Ｆ）に対応する代替ブロックテーブルを示す概略図である。
【図１７】（Ａ）は図１６（Ｂ）に対応する代替変換テーブルを示す概略図、（Ｂ）は図１６（Ｄ）に対応する代替変換テーブルを示す概略図、（Ｃ）は図１６（Ｇ）に対応する代替変換テーブルを示す概略図である。
【符号の説明】
【０１４２】
１０、３０、４０    システムコントローラ
１２    ＣＰＵ
１８    フラッシュメモリ（不揮発性記憶媒体）
２０、２０Ａ、２０Ｂ    メモリコントローラ（記憶媒体制御手段、更新手段、ブロックアドレス変換手段）
２２    ＮＡＮＤインターフェイスモジュール
２４    アドレス変換部（ブロックアドレス変換手段）
３２    ＲＡＭ
３４    ＲＯＭ（記憶手段）
４２    メインエリア
４４    スペアエリア
４６    有効エリア
【図１】
2008117299.tif 000003
【図２】
2008117299.tif 000004
【図３】
2008117299.tif 000005
【図４】
2008117299.tif 000006
【図５】
2008117299.tif 000007
【図６】
2008117299.tif 000008
【図７】
2008117299.tif 000009
【図８】
2008117299.tif 000010
【図９】
2008117299.tif 000011
【図１０】
2008117299.tif 000012
【図１１】
2008117299.tif 000013
【図１２】
2008117299.tif 000014
【図１３】
2008117299.tif 000015
【図１４】
2008117299.tif 000016
【図１５】
2008117299.tif 000017
【図１６】
2008117299.tif 000018
【図１７】
2008117299.tif 000019