(57)【要約】【課題】書き込み単位に比べて消去単位の方が大きい半導体メモリにおいて、データの復元性を確保し、データ書き込み時の応答性能の低下を防止し、かつ、メモリ容量の有効活用を図る。【解決手段】半導体メモリ２のブロック内をデータページ２２２と交替ページ２２３とに分け、半導体メモリ２を、データブロック２２と、交替ブロック２３とに分ける。外部からデータ上書き要求を受け付けたとき、書き込みデータの量に対し、交替ページ２２３の容量が足りていれば、この交替ページ２２３に上書きデータを書き込む。一方、この交替ページ２２３の容量が不足していれば、交替ブロック２３に、データブロック２２のデータを上書きデータで更新したデータを書き込む。このとき、書き込みデータに旧データの論理アドレスを持ち、カウンタナンバをインクリメントした管理データ２３２２を含めて書き込む。【選択図】図３
2010039509.tif 000002
【特許請求の範囲】
【請求項１】
記憶領域に対するデータの書き込みを所定の単位で行うと共に、その所定の単位よりデータ量が大きなブロックの単位でデータの消去を行う不揮発性半導体メモリと、外部装置からの指示に従い、前記不揮発性半導体メモリの記憶領域に対するデータの読み出しまたは書き込みを制御するメモリ制御部とを備える記憶装置であって、
前記不揮発性半導体メモリの記憶領域のブロック群は、データブロックと、交替ブロックとに分けられ、
前記それぞれのブロックは、前記所定の単位で書き込まれたデータを記憶するデータページと、このデータページのデータに対する上書きデータの書き込みを受け付ける交替ページとを備え、
前記データページに書き込まれたデータは、そのデータの論理アドレスおよび所定のカウンタナンバを示した管理データを含み、
前記メモリ制御部は、
前記外部装置から、前記上書きデータの書き込み指示を受け付けたとき、前記データブロックにおける前記上書きデータの書き込み先となる交替ページを特定し、
前記上書きデータの容量が、前記特定した交替ページのデータ容量以下の場合、この特定した交替ページに前記上書きデータを書き込み、
前記上書きのデータの容量が、前記特定した交替ページの容量を超える場合、前記特定したデータブロックに書き込まれたデータを読み出し、この読み出したデータに含まれる管理データから、この管理データに含まれるカウンタナンバの値を更新した新たなカウンタナンバと、前記管理データに含まれる論理アドレスと同じ論理アドレスとを含む新たな管理データを作成し、
前記特定したデータブロックに書き込まれたデータを前記上書きデータで更新したデータを作成し、
前記作成したデータに、前記作成した管理データを含めて前記交替ブロックに書き込むことを特徴とする記憶装置。
【請求項２】
前記メモリ制御部は、
前記不揮発性半導体メモリの記憶領域の論理アドレスごとに、この論理アドレスに対応する前記記憶領域の物理アドレスを示した論理／物理変換情報と、
前記交替ブロックの物理アドレスを示した交替ブロック情報と、
前記ブロックごとに、このブロックに上書きデータを書き込むときの交替ページを示したページ管理情報とを記憶し、
前記外部装置から、前記上書きデータの書き込み指示を受け付けたとき、前記書き込み指示に含まれる論理アドレスと、前記論理／物理変換情報とを参照して、前記論理アドレスに対応するデータブロックの物理アドレスを特定し、
前記ページ管理情報を参照して、前記特定した物理アドレスのデータブロックにおける前記上書きデータの書き込み先となる交替ページを特定し、
前記上書きデータの容量が、前記特定した交替ページのデータ容量以下の場合、この特定した交替ページに前記上書きデータを書き込み、
前記上書きのデータの容量が、前記特定した交替ページの容量を超える場合、前記特定したデータブロックに書き込まれたデータを読み出し、この読み出したデータに含まれる管理データから、この管理データに含まれるカウンタナンバの値を更新した新たなカウンタナンバと、前記管理データに含まれる論理アドレスと同じ論理アドレスとを含む新たな管理データを作成し、
前記特定したデータブロックに書き込まれたデータを前記上書きデータで更新したデータを作成し、
前記作成したデータに、前記作成した管理データを含めて前記交替ブロック情報に示される交替ブロックに書き込むことを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記メモリ制御部は、
初期化された前記論理／物理変換情報を復元するとき、
前記記憶領域の各データブロックに書き込まれたデータを読み出し、この読み出したデータそれぞれの管理データに含まれる前記論理アドレスと、そのデータの読み出し元である記憶領域の物理アドレスとを用いて、前記論理／物理変換情報を復元し、
前記読み出したデータの管理データに含まれる論理アドレスを参照して、同じ論理アドレスのデータが複数あったとき、これらのデータのうち、最新のカウンタナンバの管理データを含むデータの読み出し元である記憶領域の物理アドレスを選択して、前記論理／物理変換情報を復元することを特徴とする請求項２に記載の記憶装置。
【請求項４】
前記メモリ制御部は、
前記読み出したデータの管理データに含まれる論理アドレスを参照して、同じ論理アドレスのデータが複数あった場合において、これらのデータのうち、最新のカウンタナンバの管理データを含むデータの読み出し元である記憶領域の物理アドレスのブロックの最終ページにデータの書き込みが無いとき、
前記同じ論理アドレスのデータのうち、前記最終ページにデータの書き込みがあるデータを選択して前記論理／物理変換情報を復元することを特徴とする請求項３に記載の記憶装置。
【請求項５】
前記メモリ制御部は、
新たなデータを前記記憶領域に書き込んだとき、
前記論理／物理変換情報における前記データの論理アドレスに対応する物理アドレスを、前記データを書き込んだ記憶領域の物理アドレスに更新し、
前記データの書き込み先が、前記交替ページの場合、
さらに、前記ページ管理情報に示される前記交替ページを、前記上書きデータが書き込まれたページの次のページに更新し、
前記データの書き込み先が、前記交替ブロックの場合、
さらに、前記交替ブロック情報から、前記データを書き込んだブロックの物理アドレスを削除することを特徴とする請求項２に記載の記憶装置。
【請求項６】
前記メモリ制御部は、
前記交替ブロック情報に示される交替ブロックに、前記データを書き込んだ後、
前記特定したデータブロックに記憶されているデータを消去することを特徴とする請求項２に記載の記憶装置。
【請求項７】
記憶領域に対するデータの書き込みを所定の単位で行うと共に、その所定の単位よりデータ量が大きなブロックの単位でデータの消去を行う不揮発性半導体メモリに対するデータ書き込み制御方法であって、
前記不揮発性半導体メモリに書き込まれたデータは、そのデータの前記不揮発性半導体メモリにおける論理アドレスと、所定のカウンタナンバとを示した管理データを含み、
外部装置からの指示に従い、前記記憶領域に対するデータの読み出しまたは書き込みを制御するメモリ制御部が、
前記外部装置から、前記上書きデータの書き込み指示を受け付けたとき、前記データブロックにおける前記上書きデータの書き込み先となる交替ページを特定し、
前記上書きデータの容量が、前記特定した交替ページのデータ容量以下の場合、この特定した交替ページに前記上書きデータを書き込み、
前記上書きのデータの容量が、前記特定した交替ページの容量を超える場合、前記特定したデータブロックに書き込まれたデータを読み出し、
この読み出したデータに含まれる管理データから、この管理データに含まれるカウンタナンバの値を更新した新たなカウンタナンバと、前記管理データに含まれる論理アドレスと同じ論理アドレスとを含む新たな管理データを作成し、
前記特定したデータブロックに書き込まれたデータを前記上書きデータで更新したデータを作成し、
前記作成したデータに、前記作成した新たな管理データを含めて前記交替ブロックに書き込むことを特徴とするデータ書き込み制御方法。
【請求項８】
記憶領域に対するデータの書き込みを所定の単位で行うと共に、その所定の単位よりデータ量が大きなブロックの単位でデータの消去を行う不揮発性半導体メモリと、外部装置からの指示に従い、前記不揮発性半導体メモリの記憶領域に対するデータの読み出しまたは書き込みを制御するメモリ制御部とを備える記憶装置であって、
前記不揮発性半導体メモリの記憶領域のブロック群は、データブロックと、交替ブロックとに分けられ、
前記それぞれのブロックは、前記所定の単位で書き込まれたデータを記憶するデータページと、このデータページのデータに対する上書きデータの書き込みを受け付ける交替ページとを備え、
前記データページに書き込まれたデータは、そのデータの論理アドレスおよび所定のカウンタナンバを示した管理データを含み、
前記メモリ制御部は、
前記外部装置から、前記上書きデータの書き込み指示を受け付けたとき、前記上書きのデータの容量が、この上書きデータの書き込み先である前記データブロックにおける交替ページの容量を超える場合、前記データブロックに書き込まれたデータを読み出し、この読み出したデータに含まれる管理データのカウンタナンバの値を更新し、前記読み出したデータを前記上書きデータで更新して前記交替ブロックに書き込むことを特徴とする記憶装置。ブロックに書き込むことを特徴とする記憶装置。
【請求項９】
記憶領域に対するデータの書き込みを所定の単位で行うと共に、その所定の単位よりデータ量が大きなブロックの単位でデータの消去を行う不揮発性半導体メモリに対するデータ書き込み制御方法であって、
前記不揮発性半導体メモリに書き込まれたデータは、そのデータの前記不揮発性半導体メモリにおける論理アドレスと、所定のカウンタナンバとを示した管理データを含み、
外部装置からの指示に従い、前記記憶領域に対するデータの読み出しまたは書き込みを制御するメモリ制御部が、
前記外部装置から、前記上書きデータの書き込み指示を受け付けたとき、前記上書きのデータの容量が、この上書きデータの書き込み先である前記データブロックにおける交替ページの容量を超える場合、前記データブロックに書き込まれたデータを読み出し、この読み出したデータに含まれる管理データのカウンタナンバの値を更新し、前記読み出したデータを前記上書きデータで更新して前記交替ブロックに書き込むことを特徴とする記憶装置。ブロックに書き込むことを特徴とするデータ書き込み制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体メモリへのデータ書き込み制御技術に関する。
【背景技術】
【０００２】
近年、半導体メモリを記憶媒体とする補助記憶装置が脚光を浴びている。特に電気的に消去可能で再書き込み可能な不揮発性半導体メモリ（例えば、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）や、その一種であるフラッシュメモリ）を用いたものが、情報機器の補助記憶装置の主流となっている。
【０００３】
このフラッシュメモリは、データを書き換えるために、既に書き込まれているデータをいったん消去した後に、新たにデータを書き込まなければならない。また、データの書き込み単位と消去（書き換え）単位が同じではなく、消去単位の方が極めて大きいという特徴がある。従って、一度書込んだデータを書き換えるためには、他の多くのデータも同時に消去しなければならない。
【０００４】
ここで、このフラッシュメモリ上において書き換えを行うデータ容量は様々な容量が考えられるが、小容量のデータしか書き換えをしない場合、書き換えを行うデータ容量に対し、極めて大きなメモリ領域のデータを消去しなければならない。このフラッシュメモリのデータ書き換え回数には制限があるため、小容量のデータの書き換えしか行わないのに、大きなメモリ領域のデータを消去するという動作を繰り返すと、許容データ書き換え回数が充分確保できないおそれがある。つまり、このメモリ装置の限られたデータ書き換え回数を有効活用できないという問題が発生する。また、前記したとおり、データ書き換えの際には、メモリ装置上のデータ消去を行わなくてはならないため、メモリ装置に対する応答性能が低下するという問題がある。
【０００５】
このような問題を解決するため、データ書き換え時に旧データを残したまま、更新データを別エリアに書き込む技術も提案されている。このように旧データを残したまま更新データを書き込む場合、更新データの書き込み中や、旧データの消去前に電源オフ等の異常発生時におけるデータの整合性を確保する必要がある。このような課題を解決するため、異常発生時には、このヘッダ領域の情報を参照して、どちらのエリアのデータが有効かを判断することで、どちらのデータをもとにデータを復元すればよいかを判断する技術が提案されている（特許文献１参照）。
【特許文献１】特許第３４９７０６６号
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、前記した技術は、記憶するデータ量の倍の容量のメモリ装置が必要となる。つまり、前記した技術は、フラッシュメモリを２つのエリアに分割し、データの有効性を示すヘッダ領域を設け、更新データを書き込む際には、その２つの領域に交互に書き込んでいく。つまり、メモリ装置の半分以下の容量のデータしか記憶できないため、このメモリ装置の備えるメモリ容量を有効活用できていない。さらに、この技術は、２つのエリアを交互に使用するため、新たなデータを書き込む場合、旧データを必ず消去しなければならない。例えば、フラッシュメモリのエリアＡにデータａ（１番目のデータ）が書き込まれ、エリアＢにデータｂ（２番目のデータ）が書き込まれている場合において、さらにデータｃ（３番目のデータ）を書き込むとき、エリアＡのデータａ（１番目のデータ）を消去してからでないと、データｃ（３番目のデータ）を書き込むことができない。つまり、この技術において、３番目以降のデータ書き込み（データ書き換え）の際には、メモリ装置上のデータ消去を行わなくてはならないため、メモリ装置に対する応答性能が低下するという問題がある。
【０００７】
そこで、本発明は、前記した課題を解決し、フラッシュメモリ等、書き込み単位に比べて消去単位の方が極めて大きい半導体メモリにおいて、異常発生時のデータの復元性を確保しつつ、データ書き込み時の応答性能の低下を防止し、かつ、メモリ容量の有効活用を図ることを目的とする。
【課題を解決するための手段】
【０００８】
前記した課題を解決するため、本発明は、半導体メモリのブロックがそれぞれデータページと交替ページとを備え、また、半導体メモリのブロック群は、データブロックと、交替ブロックとを備える構成とした。ここで半導体メモリのメモリ制御部は、ホスト装置等の外部装置からのデータ書き込み要求（上書き要求）を受け付けたとき、データブロックの交替ページにデータを書き込んでいく。そして、書き込みデータの量に対し、この交替ページのデータ容量が不足するとき、このデータブロックから読み出したデータを書き込み要求のデータで更新したデータを交替ブロックに書き込む。このようにすることで、データ書き込み（書き換え）のたびに、既存のデータを消去する必要がなくなるので、データ書き込み時の半導体メモリの応答性能の低下を防止できる。特に、書き込むデータ量が少ない場合、同じブロック内の交替ページにデータを書き込んでいけばよいので、メモリ容量を無駄なく利用でき、かつ、データ書き込み時の半導体メモリの応答性能もあまり低下しない。なお、データブロックに書き込まれた更新前のデータは、後で消去する。これにより、半導体メモリの限られたメモリ容量を有効活用できる。また、このデータブロックのデータは、そのデータが書き込まれる記憶領域の論理アドレスおよび所定のカウンタナンバからなる管理データを含む。そして、メモリ制御部が、このデータブロックのデータを読み出し、更新後のデータを交替ブロックに書き込むとき、読み出したデータに含まれる管理データにおける論理アドレスはそのままで、そのカウンタナンバを更新したもの（例えば、カウンタナンバをインクリメントしたもの）を含めて書き込む。そして、電源オフ等の異常発生時には、このカウンタナンバを参照することで、どちらのデータを用いてデータを復元すればよいかを判断することができる。例えば、交替ブロックへのデータ書き込み中（または、交替ブロックへのデータ書き込み後であるがデータブロックのデータを消去する前）に電源オフ等発生し、半導体メモリ上に同じ論理アドレスのデータが複数の物理アドレスに存在した場合でも、このカウンタナンバを参照することで、どちらのデータを用いればよいかを判断できる。
【発明の効果】
【０００９】
本発明によれば、フラッシュメモリ等、書き込み単位に比べて消去単位の方が極めて大きい半導体メモリにおいて、データの復元性を確保しつつ、データ書き込み時の応答性能を向上し、かつ、メモリ容量の有効活用を図ることができる。
【発明を実施するための最良の形態】
【００１０】
≪概要≫
以下に、本発明を実施するための最良の形態（以下、実施の形態とする）を説明する。まず、本実施の形態の記憶装置において前提とする半導体メモリの構成と、この半導体メモリへのデータ書き込み処理の概要を説明する。なお、以下の説明においてこの半導体メモリは、フラッシュメモリ等の不揮発性半導体メモリであるものとして説明する。
【００１１】
図１は、本実施の形態の記憶装置における半導体メモリの内部構成を例示した図である。ここでは、半導体メモリ２内に構築されている論理的記憶領域を示している。この半導体メモリ２にアクセスする外部装置（ホスト装置等）からは、この論理的記憶領域が認識される。
【００１２】
ブロック２１はデータ消去の最小単位を示す。このブロック２１は、データ読み出しおよび書き込みの最小単位であるページ２１１から構成される。図１においては、半導体メモリ２の論理的記憶領域は、１つ以上のブロック２１で構成されており、ブロック２１は１つ以上のページ２１１により構成されている。すなわち、半導体メモリ２の論理的記憶領域は、ブロック１からブロックｍ（整数）までのｍ個の各ブロック２１を有し、それぞれのブロックは、ページ１からページｎ（整数）までのｎ個のページを有している。
【００１３】
次に、この半導体メモリ２へのデータ書き込みの制御方法を、図２〜図４に基づいて説明する。図２〜図４は、本実施の形態の半導体メモリの状態を概念的に示した図である。図２は、本実施の形態の半導体メモリの初期状態を示した図である。図３は、本実施の形態の半導体メモリのブロック交替後、旧ブロック消去前の状態を示した図である。図４は、本実施の形態の半導体メモリのブロック交替後、旧ブロック消去後の状態を示した図である。
【００１４】
図２に示すように、半導体メモリ２の記憶領域は、大きくデータブロック２２と交替ブロック２３に分けられる。データブロック２２は、データを記憶する１以上のブロック群から構成され、ブロック１からブロックｐ（整数）までのブロックを有している。各ブロックは、図示のようにデータページ２２２と交替ページ２２３で構成されている。
【００１５】
データページ２２２は、ページ１からページｑ（整数）までのデータを保持するページを有していて、交替ページ２２３は、ページ（ｑ＋１）からページｎ（整数）までを有している。この交替ページ２２３は、データページ２２２に対する上書きデータを書き込むためのページである。なお、このデータページ２２２に記憶されるデータは、管理データ２２２２を有する。この管理データ２２２２は、当該データが書き込まれた記憶領域の論理アドレスとカウンタナンバとを含む。この管理データ２２２２について、詳細は後記するが、電源オフ等の異常発生後、データを復元するときに用いられる。
【００１６】
また、交替ブロック２３は、データブロック２２の交替ページ２２３に上書きデータを書き込もうとしたが、容量が多く書き込みきれなかったとき、データブロック２２の上書き処理後のデータを移し変えるためのブロック群である。この交替ブロック２３は、ブロック（ｐ＋１）からブロックｍ（整数）までのブロックであり、各ブロックは、ページ１からページｎ（整数）までの消去済みページ２３２で構成されている。
【００１７】
ここで、データページ２２２は、外部装置からの指示に従いデータを読み書きすることができる領域である。このデータページ２２２には、半導体メモリ２の制約上から上書きができないため、この半導体メモリ２のメモリ制御部１（後記する図５参照）の制御による上書きデータは、交替ページ２２３に書き込まれる。そして、メモリ制御部１は、交替ページ２２３に書き込めないときには、図３に示すように、交替ブロック２３をデータブロック２２に割り当ててデータを書き込む。例えば、データページ２２２の非上書きデータを、交替ページ２２３に書き込まれるはずだった上書きデータで更新したデータを、符号２３１に示すブロック（ｐ＋１）に書き込む。つまり、メモリ制御部１は、データブロック２２への上書き処理後のデータを交替ブロック２３から割り当てたブロックに書き込む。そして、メモリ制御部１は、以降、このブロックをデータブロック２２として用いる。
【００１８】
なお、ここで、図３に示すように、交替ブロック２３から割り当てたブロックにデータを書き込むとき、このデータの管理データ２３２２を含める。この管理データ２３２２は、このデータの更新元となったデータブロック２２のブロック（例えば、符号２２１に示すブロック１）の管理データ２２２２と同じ論理アドレスを持ち、この管理データ２２２２のカウンタナンバをインクリメントしたものである。つまり、この管理データ２３２２は、管理データ２２２２のカウンタナンバが「０」のとき、この管理データ２２２２と同じ論理アドレスと、このカウンタナンバをインクリメントしたもの（カウンタナンバ「１」）とを含むものである。
【００１９】
このようにして交替ブロック２３のブロックに更新データを書き込んだ後、メモリ制御部１は、図４に示すように、このデータの更新元となったデータブロック２２のブロック２２１のデータを消去して（消去済みページ２２４）、交替ブロック２３として用いる。
【００２０】
つまり、メモリ制御部１は、上書きデータの量が少なければ同じブロック内に用意された交替ページ２２３にデータを書き込む。一方、上書きデータの量が多ければ、メモリ制御部１は、上書き対象のデータをデータブロック２２から読み出し、読み出したデータを上書きデータで更新したものを交替ブロック２３のブロックに書き込む（つまり、データの交替を行う）。よって、データ書き込みのたびに、既存のデータを消去する必要がなくなるので、データ書き込み時の半導体メモリの応答性能の低下を防止できる。そして、データブロック２２２に書き込まれていた更新前データについては、後でデータを消去する。ここで、データの交替を行ったときには、そのデータの管理データにそのデータの論理アドレスと、更新のたびにインクリメントするカウンタナンバとを含める。このようにすることで、例えば、図３に示すようなブロック交替後、旧ブロック消去前に電源オフ等が発生し、半導体メモリ２の更新前後のデータが並存する場合でも、メモリ制御部１がこのカウンタナンバを参照することで、どちらのデータをもとにデータを復元すればよいかを判断することができる。
【００２１】
なお、図２〜図４に示した半導体メモリ２のブロックｐ（つまり、データブロック２２の末尾のブロック）およびページｑ（つまり、ブロック内のデータページ２２２の末尾のページ）は、例えば、この半導体メモリ２を含む記憶装置の製造時に初期値として設定される。このブロックｐとページｑの設定方法については、特に限定しないが、この記憶装置のメモリ上に予め設定しておくことや、この記憶装置のマイクロプロセッサへデバッガを接続して行うようにすることが考えられる。また、外部装置から予め決められたコマンドを発行して設定するで実現可能である。また、ブロックｐ、ページｑを可変としてテーブル管理することも可能であるが、本実施の形態例では簡単化のために固定値として扱う。
【００２２】
なお、前記した図２〜図４に示すようなデータの書き込み制御は、メモリ制御部１が、このメモリ制御部１の備える各テーブルを参照することで実行する。このメモリ制御部１が備える各テーブルの詳細は後記する。
【００２３】
≪構成≫
次に、このような半導体メモリ２を含む記憶装置について説明する。図５は、本実施の形態の記憶装置のハードウェア構成例を示した図である。なお、本実施の形態の記憶装置は、外部のホスト装置からの指示に基づき、記憶装置内の半導体メモリ２のデータの読み出しや書き込みを行うものとして説明する。
【００２４】
記憶装置６は、データバス４を介して、ホスト装置３とアクセス可能に接続される。この記憶装置６は、ホスト装置３からの指示に基づいて、半導体メモリ２のデータの書き込みや読み出しを行う装置である。ホスト装置３は、記憶装置６に対してデータの書き込みや読み出し指示を行うコンピュータである。データバス４は、例えば、ＳＣＳＩ（Small Computer System Interface）やＡＴＡ（Advanced Technology Attachment）等である。
【００２５】
記憶装置６は、メモリ制御部１と半導体メモリ２とを備える。メモリ制御部１と半導体メモリ２とのデータのやり取りは、データバス５によって行われる。
【００２６】
＜メモリ制御部＞
メモリ制御部１は、マイクロプロセッサ１１と、メモリＩ／Ｆ（インターフェース）制御部１２と、ホストＩ／Ｆ制御部１３と、メモリ１４とを備える。
【００２７】
マイクロプロセッサ１１は、半導体メモリ２内に、記憶装置６の物理的記憶領域に対応する論理的記憶領域を構築するとともに、この論理的記憶領域へのデータの書き込みおよび読み出しを制御する。
【００２８】
メモリＩ／Ｆ制御部１２は、マイクロプロセッサ１１からの指示により半導体メモリ２とのアクセス制御を行う。なお、マイクロプロセッサ１１から半導体メモリ２を直接制御可能であれば、メモリＩ／Ｆ制御部１２は必ずしも必要ではない。
【００２９】
ホストＩ／Ｆ制御部１３は、ホスト装置３からのデータの書き込みおよび読み出し指示に従って、ホスト装置３とのデータの送受信を制御する。ホスト装置３からのデータの書き込みおよび読み出し指示は、半導体メモリ２内に構築された論理的記憶領域に対して行われるものである。
【００３０】
メモリ１４は、論理／物理変換テーブル（論理／物理変換情報）１４１と、次回書き込みページ管理テーブル（ページ管理情報）１４２と、交替ブロックリストテーブル（交替ブロック情報）１４３と、消去回数管理テーブル１４４と、消去候補管理テーブル１４５とを備える。このメモリ１４は、ＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ（Dynamic RAM）またはＭＲＡＭ（Magneto-resistive RAM）等のメモリ素子を使用することができる。なお、各テーブルの初期値は、記憶装置６の初期化時にマイクロプロセッサ１１が設定するものとする。
【００３１】
＜論理／物理変換テーブル＞
メモリ１４の論理／物理変換テーブル１４１は、この半導体メモリ２の論理的記憶領域のアドレス（論理アドレス）ごとに、この論理アドレスに対応する半導体メモリ２上の物理アドレスを示した情報である。図６は、図５の論理／物理変換テーブルの構成例を示した図である。図６の（ａ）は、初期状態の論理／物理変換テーブル、（ｂ）は、ページ書き換え後の論理／物理変換テーブル、（ｃ）は、ブロック交替後の論理／物理変換テーブルを例示した図である。この論理／物理変換テーブル１４１は、論理アドレス１４１０と、この論理アドレス１４１０に対応する半導体メモリ２上の物理アドレス１４１１とを含んで構成される。この物理アドレス１４１１は、半導体メモリ２のブロック番号とページ番号とにより記述される。この物理アドレス１４１１は、半導体メモリ２上のデータの書き込み処理により値が変わり、例えば、図６の（ａ）に示す初期状態からページ書き換え後、（ｂ）に示す状態になり、ブロック交替後、（ｃ）に示す状態になる。図５のメモリ制御部１が、このように書き換えられた論理／物理変換テーブル１４１を参照することで、ホスト装置３からデータの読み出しまたは書き込み（上書き）指示を受け付けたとき、半導体メモリ２上の最新データが書き込まれた記憶領域に対しデータの読み出しや書き込み（上書き）を行うことができる。
【００３２】
＜次回書き込みページ管理テーブル＞
次回書き込みページ管理テーブル１４２は、ブロックごとに、当該ブロックにおいて次に書き込むページの先頭アドレスを示した情報である。図７は、図５の次回書き込みページ管理テーブルの構成例を示した図である。図７の（ａ）は、初期状態の次回書き込みページ管理テーブル、（ｂ）は、ページ書き換え後の次回書き込みページ管理テーブル、（ｃ）は、ブロック交替後の次回書き込みページ管理テーブルを例示した図である。次回書き込みページ管理テーブル１４２は、各ブロックの番号を示すブロック番号１４２０と、このブロックに次回書き込むべきページである次回書き込みページ１４２１とを含んで構成される。この次回書き込みページ管理テーブル１４２は、例えば、図７（ａ）に示す初期状態からページ書き換え後、（ｂ）に示す状態になり、ブロック交替後、（ｃ）に示すような状態になる。メモリ制御部１が、このように書き換えられた次回書き込みページ管理テーブル１４２を参照することで、ホスト装置３からデータの書き込み指示を受け付けたとき、同じ記憶領域に重複してデータを書き込むことがなくなる。
【００３３】
＜交替ブロックリストテーブル＞
交替ブロックリストテーブル１４３は、交替ブロック２３（図２〜図４参照）のうち、次にデータブロック２２として割り当てるブロックを示した情報である。図８は、図５の交替ブロックリストテーブルの構成例を示した図である。図８の（ａ）は、初期状態の交替ブロックリストテーブル、（ｂ）は、ページ書き換え後の交替ブロックリストテーブルを例示した図である。この交替ブロックリストテーブル１４３は、使用可能な交替ブロック２３のブロック番号が使用する順番に並んでおり、例えば、交替ブロック２３の「ブロック（ｐ＋１）」が使用されると、図８の（ａ）に示す初期状態の交替ブロックリストテーブルから、この「ブロック（ｐ＋１）」の情報が消去される。そして、「ブロック（ｐ＋２）」が繰り上がり、（ｂ）に示す状態になる。メモリ制御部１が、このような交替ブロックリストテーブル１４３を参照することで、次にどのブロックをデータブロック２２として割り当ればよいかを判断できる。
【００３４】
＜消去回数管理テーブル＞
消去回数管理テーブル１４４は、各ブロックの消去回数を示した情報である。図９は、図５の消去回数管理テーブルの構成例を示した図である。図９の（ａ）は、初期状態の消去回数管理テーブル、（ｂ）は、ブロック交替後の消去回数管理テーブルを例示した図である。この消去回数管理テーブル１４４は、各ブロックのブロック番号１４４０と、このブロックの消去回数１４４１とを含んで構成される。例えば、図９（ａ）に示す「ブロック１」のデータが消去されると、（ｂ）に示すように、この消去回数管理テーブル１４４のブロック１の消去回数が「１」加算される。
【００３５】
＜消去候補管理テーブル＞
消去候補管理テーブル１４５は、データ消去待ちブロックのブロック番号を消去順に並べた情報である。図１０は、図５の消去候補管理テーブルの構成例を示した図である。図１０（ａ）は、初期状態の消去候補管理テーブル、（ｂ）はブロック交替後の消去候補管理テーブルを例示した図である。この消去候補管理テーブル１４５は、例えば、「ブロック１」に書き込まれていたデータが交替ブロック２３から割り当てた別のブロックへ移されたとき（ブロック交替がされたとき）と、図１０（ｂ）に示すように、消去候補管理テーブル１４５に「ブロック１」の情報が追加される。メモリ制御部１が、このような消去候補管理テーブル１４５を参照することで、次に、どのブロックのデータを消去すればよいか（つまり、どのブロックを交替ブロック２３に割り当てればよいか）を判断することができる。
【００３６】
≪処理手順≫
次に、適宜、図５〜図１０を参照しつつ、図１１〜図１４のフローチャートに基づいて、メモリ制御部１のマイクロプロセッサ１１（図５参照）の処理手順を説明する。
【００３７】
＜書き込み処理＞
図１１は、図５のマイクロプロセッサによる半導体メモリへの書き込み処理手順を示したフローチャートである。まず、図１１を用いて、マイクロプロセッサ１１による半導体メモリ２への書き込み処理を説明する。
【００３８】
図５のマイクロプロセッサ１１は、ホストＩ／Ｆ制御部１３を介して、ホスト装置３から論理アドレス、データ、データサイズを含む書き込み指示を受信する（Ｓ７００）。
【００３９】
次に、マイクロプロセッサ１１は、データの書き込み先となる半導体メモリ２の物理アドレスを確認するために、Ｓ７００で受信した論理アドレスをキーとして、論理／物理変換テーブル１４１（図６参照）を参照し、該当する物理アドレスを特定する（Ｓ７０１）。
【００４０】
例えば、論理／物理変換テーブル１４１の状態が図６（ａ）の初期状態のときに、ホスト装置３から受信した書き込み指示に含まれる論理アドレスが「１」であった場合、マイクロプロセッサ１１は、物理アドレスとして「ブロック１」を特定する。
【００４１】
次に、マイクロプロセッサ１１は、特定したブロック内のどのページに書込めばよいかを確認するために、次回書き込みページ管理テーブル１４２（図７参照）を参照し、交替ページの先頭の物理アドレス（次回書き込みページ）を特定する（Ｓ７０２）。
【００４２】
例えば、次回書き込みページ管理テーブル１４２が図７（ａ）に示す初期状態であり、マイクロプロセッサ１１が、Ｓ７０１にて特定した物理アドレスが「ブロック１」の場合、次回書き込みページは「ｑ＋１」となる。
【００４３】
次に、マイクロプロセッサ１１は、交替ページの空き容量が充分であるかを確認するために、Ｓ７０２で特定した先頭の次回書き込みページと書き込むデータの必要ページ数との和が、ｎ（１ブロックあたりの最大ページ数）以下か否かを判断する（Ｓ７０３）。つまり、マイクロプロセッサ１１は、当該ブロックの交替ページの容量が、書き込みデータの量以下であるか否かを判断する。
【００４４】
Ｓ７０３で比較した結果、マイクロプロセッサ１１が、Ｓ７０２で特定した先頭の次回書き込みページと書き込むデータの必要ページ数との和がｎ（１ブロックあたりの最大ページ数）以下であると判断したとき（Ｓ７０３のＹｅｓ）、つまり、この交替ページにデータが書き込めると判断したとき、マイクロプロセッサ１１は、次回書き込みページ管理テーブル１４２の値を、書き込むページ数を加算した値へ更新する（Ｓ７０４）。
【００４５】
例えば、Ｓ７０２でマイクロプロセッサ１１が特定した「ブロック１」の次回書き込みページが「ｑ＋１」であり、書き込むデータの必要ページ数が１ページであれば、「ｑ＋１＋１＝ｑ＋２」となる。従って、マイクロプロセッサ１１は、図７（ｂ）に示すように、図７（ａ）の次回書き込みページ管理テーブル１４２の「ブロック１」の次回書き込みページを「ｑ＋２」へ更新する。つまり、交替ページの開始ページを「ｑ＋２」にする。これにより、次回以降、「ブロック１」に対する書き込みは、この「ｑ＋２」から行われるようになる。
【００４６】
次に、マイクロプロセッサ１１は、Ｓ７０２にて特定した交替ページの中の次回書き込みページにデータを書き込む（Ｓ７０５）。そして、マイクロプロセッサ１１は、データの書き込み先の論理アドレスに対し、実際にデータを書き込んだ半導体メモリ２の物理アドレスとの関連付けるため、論理／物理変換テーブル１４１における当該論理アドレスに対する物理アドレスを更新する（Ｓ７０６）。
【００４７】
例えば、Ｓ７０２にて特定した次回書き込みページが「ｑ＋１」であれば、図６（ｂ）に示すように、論理／物理変換テーブル１４１の論理アドレス「１」に対する物理アドレスを「ブロック１」の「ページ（ｑ＋１）」に更新する。このようにすることで、以降、このマイクロプロセッサ１１が、この半導体メモリ２の論理アドレス「１」のデータに対する読み出しを受け付けたとき、以前は物理アドレスが「ブロック１」の「ページ２」に対し読み出しを行っていたが、物理アドレスが「ブロック１」の「ページ（ｑ＋１）」に対し読み出しを行うようになる。つまり、マイクロプロセッサ１１は、当該論理アドレスのデータを交替ページからデータを読み出すようになる。
【００４８】
このようにしてデータの書き込み処理を行った後、マイクロプロセッサ１１は、ホストＩ／Ｆ制御部１３を介して、ホスト装置３にデータの書き込み終了を報告する（Ｓ７０７）。
【００４９】
なお、Ｓ７０３において、マイクロプロセッサ１１が、Ｓ７０２で特定した先頭の次回書き込みページと、書き込むデータの必要ページ数との和がｎ（１ブロックあたりの最大ページ数）より大きいと判断したとき（Ｓ７０３のＮｏ）、ブロック交替処理を実行し（Ｓ７１０）、ホスト装置３に書き込み終了を報告する（Ｓ７０７）。このブロック交替処理については、図１２を用いて後記する。
【００５０】
＜ブロック交替処理＞
次に、図１１のＳ７０７のブロック交替処理について、図１２を用いて説明する。図１２は、図５のマイクロプロセッサによる半導体メモリのブロック交替処理手順を示したフローチャートである。
【００５１】
まず、マイクロプロセッサ１１は、論理／物理変換テーブル１４１（図６参照）を参照して、書き込み要求のデータにより更新されるデータである交替元ブロックのデータを読み出す。つまり、マイクロプロセッサ１１は、論理／物理変換テーブル１４１を参照して、交替元ブロックに関連付けられた全ページのデータを読み出す（Ｓ７１１）。読み出したデータは、メモリ１４（図５参照）に記憶しておく。
【００５２】
例えば、「ブロック１」が交替元ブロックである場合において、論理／物理変換テーブル１４１が図６（ｂ）に示す状態のときは、マイクロプロセッサ１１は、この「ブロック１」に関連付けされている全ページ（ページ１、ページ（ｑ＋１）、…、ページｑ）のデータを読み出す。
【００５３】
そして、マイクロプロセッサ１１は、この読み出したデータに含まれる管理データ（図３の管理データ２２２２参照）のカウンタナンバをインクリメントした管理データを作成する（Ｓ７１２）。つまり、マイクロプロセッサ１１は、読み出したデータに含まれる管理データの論理アドレスと同じ論理アドレスを持ち、この管理データのカウンタナンバをインクリメントした新たな管理データを作成する。
【００５４】
例えば、マイクロプロセッサ１１は、図３に示す「ブロック１」の先頭ページ「ページ１」から管理データ２２２２を読み出したとき、この管理データ２２２２に含まれる論理アドレスが同じで、カウンタナンバを「０」から「１」にインクリメントした管理データ２３２２を新たに作成する。この作成した管理データ２３２２は、メモリ１４（図５参照）に記憶しておく。
【００５５】
次に、マイクロプロセッサ１１は、Ｓ７１１で読み出したデータのうち、図１１のＳ７００の処理において受信したデータに該当するページのデータを更新する（Ｓ７１３）。更新したデータはメモリ１４に記憶しておく。
【００５６】
例えば、マイクロプロセッサ１１が、「ブロック１」に関連付けされている全ページ（ページ１、ページ（ｑ＋１）、…、ページｑ）のデータのうち、図１１のＳ７００の処理において受信したデータに該当するページが「ページ（ｑ＋１）」であれば、その「ページ（ｑ＋１）」の部分のデータを更新する。そして、この更新したデータをメモリ１４に記憶しておく。
【００５７】
そして、マイクロプロセッサ１１は、交替先ブロックを確認するために、交替ブロックリストテーブル１４３（図８参照）を参照し、交替ブロック２３の中の１つのブロックを特定し、交替ブロックリストテーブル１４３を更新する（Ｓ７１４）。
【００５８】
例えば、マイクロプロセッサ１１は、交替ブロックリストテーブル１４３の状態が図８（ａ）に示す状態であれば、そのトップに登録されている「ブロック（ｐ＋１）」を特定する。そして、図８（ｂ）に示すように、交替ブロックリストテーブル１４３からこの「ブロック（ｐ＋１）」を削除し、「ブロック（ｐ＋２）」以降を繰り上げる。
【００５９】
ここで、マイクロプロセッサ１１は、次回書き込みページ管理テーブル１４２を参照し、特定したブロックの次回書き込みページを特定する（Ｓ７１５）。つまり、マイクロプロセッサ１１は、Ｓ７１４で特定したブロック内のどのページに書込めばよいかを確認する。
【００６０】
例えば、Ｓ７１４にて、マイクロプロセッサ１１が、交替ブロック２３の中の「ブロック（ｐ＋１）」を交替先ブロックとして特定したとき、次回書き込みページ管理テーブル１４２が、図７（ｂ）の状態であるならば、次回書き込みページは「１」となる。なお、ブロック交替の場合、交替先ブロックはデータがすべて消去された状態なので、このような次回書き込みページ管理テーブル１４２の参照処理を省いて、この交替先ブロックのページ「１」から書き込むようにしてもよい。
【００６１】
次に、マイクロプロセッサ１１は、Ｓ７１２で作成した管理データおよびＳ７１３で更新したデータをメモリ１４から読み出し、特定した交替先ブロックにデータを書き込む（Ｓ７１６）。なお、ここでのデータの書き込み開始ページは、Ｓ７１５で特定した次回書き込みページである。マイクロプロセッサ１１は、データ書き込みが終了したら、マイクロプロセッサ１１は、次回書き込みページ管理テーブル１４２に内容に書き込み完了したページ数を加算することで更新する（Ｓ７１７）。
【００６２】
例えば、次回書き込みページ管理テーブル１４２の状態が、図７（ｂ）の状態であり、「ブロック（ｐ＋１）」に対しｑページ分のデータを書き込んだとき、マイクロプロセッサ１１は、図７（ｃ）に示すように次回書き込みページ管理テーブル１４２の「ブロック（ｐ＋１）」に対する次回書き込みページを「ｑ＋１」に更新する。これにより、次回以降、「ブロック（ｐ＋１）」に対する書き込みは、この「ｑ＋１」から行われるようになる。
【００６３】
次に、マイクロプロセッサ１１は、データの書き込み先の論理アドレスに対し、実際にデータを書き込んだ半導体メモリ２の物理アドレスとの関連付けるため、論理／物理変換テーブル１４１における当該論理アドレスに対する物理アドレスを更新する（Ｓ７１８）。
【００６４】
例えば、論理／物理変換テーブル１４１の状態が、図６（ｂ）に示す状態である場合において、「ブロック１」の交替先ブロックを「ブロック（ｐ＋１）」としたとき、図６（ｃ）に示すように、論理／物理変換テーブル１４１の物理アドレスにおける「ブロック１」を「ブロック（ｐ＋１）」に更新する。このようにすることで、例えば、このマイクロプロセッサ１１が、この半導体メモリ２の論理アドレス「１」のデータに対する読み出しを受け付けたとき、物理アドレスが「ブロック（ｐ＋１）」の「ページ１」に対し読み出しを行うようになる。つまり、マイクロプロセッサ１１は、交替先ブロックに対し読み出しを行うようになる。なお、この論理／物理変換テーブル１４１において、「ブロック（ｐ＋１）」のページは、元のページの順（つまり、ページ１、ページ２、…、ページ３という順）に並べられる。
【００６５】
この後、マイクロプロセッサ１１は、交替元ブロックを再度使用可能とするために、消去候補管理テーブル１４５に交替元ブロックを追加する（Ｓ７１９）。例えば、マイクロプロセッサ１１は、消去候補管理テーブル１４５が、図１０（ａ）に示す初期状態であり、交替元ブロックが「ブロック１」であったとき、図１０（ｂ）に示すように消去候補管理テーブル１４５に「ブロック１」を追加する。このように消去候補管理テーブル１４５に登録されたブロックは、マイクロプロセッサ１１がデータを消去し、再度データが書き込み可能なようにする。
【００６６】
＜データの読み出し処理＞
なお、ホスト装置３からデータの読み出し指示を受け付けたときには、以下のような処理を実行する。まず、マイクロプロセッサ１１は、ホストＩ／Ｆ制御部１３を介して、ホスト装置３から論理アドレス、データサイズを受信する。
【００６７】
そして、マイクロプロセッサ１１は、読み出すデータの物理アドレスを特定するために、ホスト装置３から指定された論理アドレスをキーとして、論理／物理変換テーブル１４１を参照して、読み出すデータの物理アドレスを特定する。
【００６８】
次に、マイクロプロセッサ１１は、この特定した物理アドレスをもとに、半導体メモリ２からメモリＩ／Ｆ制御部１２を介してデータを読み出す。そして、マイクロプロセッサ１１は、読み出したデータを、ホストＩ／Ｆ制御部１３を介してホスト装置３に送信する。
【００６９】
＜消去処理＞
次に、図１３を用いて、データ消去処理の流れを説明する。図１３は、図５のマイクロプロセッサによる半導体メモリのデータ消去処理手順を示したフローチャートである。
【００７０】
マイクロプロセッサ１１は、ホスト装置３からデータの書き込みや読み出しの要求が無いときに、以下のようにして、消去候補管理テーブル１４５に登録されているブロックのデータ消去処理を実施する。
【００７１】
まず、マイクロプロセッサ１１は、消去候補管理テーブル１４５（図１０参照）を参照し、対象となるブロックがあるか否かを判定する（Ｓ８００）。ここで、対象となるブロックがない場合は（Ｓ８００のＮｏ）、処理を終了する。一方、対象となるブロックがある場合は（Ｓ８００のＹｅｓ）、マイクロプロセッサ１１は、消去回数管理テーブル１４４（図９参照）に対し、当該ブロックの消去回数を１つ加算する（Ｓ８０１）。
【００７２】
例えば、マイクロプロセッサ１１は、図１０（ｂ）に示すように消去候補管理テーブル１４５に、対象ブロックとして「ブロック１」があり、消去回数管理テーブル１４４の状態が図９（ａ）に示す状態だったとき、この「ブロック１」の消去回数を「０」から「１」に変更する（図９（ｂ）参照）。
【００７３】
次に、マイクロプロセッサ１１は、当該ブロックのデータを消去する（Ｓ８０２）。そして、マイクロプロセッサ１１は、消去候補管理テーブル１４５にある、消去済みブロックの情報を削除し、消去候補管理テーブル１４５を更新する（Ｓ８０３）。
【００７４】
例えば、消去候補管理テーブル１４５が図１０（ｂ）に示す状態だったとき、マイクロプロセッサ１１は、この「ブロック１」のデータを削除し、図１０（ａ）に示す状態に戻す。この後、マイクロプロセッサ１１は、Ｓ８００に戻り、消去候補管理テーブル１４５に対象となるブロックが無くなるまで処理を続ける。
【００７５】
このようにして、マイクロプロセッサ１１は、データ交替処理後にデータ交替元のブロックからデータを消去することで、このブロックに再度データを書き込むことができる。
【００７６】
＜論理／物理変換テーブル復元処理＞
次に、図１４を用いて、記憶装置６の電源オフ等により、メモリ１４が初期化された場合における、管理データを用いた論理／物理変換テーブル１４１の復元処理の流れを説明する。図１４は、図５のマイクロプロセッサによる論理／物理変換テーブルの復元処理手順を示したフローチャートである。
【００７７】
マイクロプロセッサ１１は、半導体メモリ２のデータブロック２２（図２〜図４参照）から管理データを読み出す（Ｓ９００）。読み出した管理データはメモリ１４に記憶しておく。
【００７８】
次に、マイクロプロセッサ１１は、論理／物理変換テーブル１４１に、この読み出した管理データに含まれる論理アドレスと同じ論理アドレスがあるか否かを判断する（Ｓ９０１）。つまり、マイクロプロセッサ１１は、読み出した管理データに含まれる論理アドレスとその論理アドレスに対応する物理アドレスとを復元中の論理／物理変換テーブル１４１に書き込んでいくが、既に同じ論理アドレスの管理データが論理／物理変換テーブル１４１に書き込まれているか否かを判断する。
【００７９】
ここで、マイクロプロセッサ１１は、論理／物理変換テーブル１４１に、Ｓ９００で読み出した論理アドレスと同じ論理アドレスがないと判断した場合（Ｓ９０１のＮｏ）、Ｓ９００で読み出した管理データを用いて、この論理／物理変換テーブル１４１を更新する（Ｓ９０６）。つまり、論理／物理変換テーブル１４１に、同じ論理アドレスがない場合、半導体メモリ２の状態は、前記した図２に示す初期状態、または、図４に示すブロック交替後、旧ブロック消去後状態であると推測される。よって、マイクロプロセッサ１１は、Ｓ９００で読み出した管理データを用いて論理／物理変換テーブル１４１を更新する。
【００８０】
ここでの、管理データを用いた論理／物理変換テーブル１４１の更新は、以下のようにして行われる。すなわち、まず、マイクロプロセッサ１１は、Ｓ９００で読み出した管理データに含まれる論理アドレスを論理／物理変換テーブル１４１に書き込む。そして、この論理／物理変換テーブル１４１におけるこの論理アドレスに対応する物理アドレスとして、この管理データの読み出し元の記憶領域の物理アドレスを書き込む。
【００８１】
次に、マイクロプロセッサ１１は、まだ、半導体メモリ２のすべてのデータブロック２２の管理データを読み出していないとき（Ｓ９０８のＮｏ）、Ｓ９００へ戻る。一方、マイクロプロセッサ１１は、半導体メモリ２のすべてのデータブロック２２の管理データを読み出したとき（Ｓ９０８のＹｅｓ）、処理を終了する。
【００８２】
一方、Ｓ９０１の処理において、マイクロプロセッサ１１が読み出した管理データの論理アドレスと同じ論理アドレスが、論理／物理変換テーブル１４１に既に存在している場合（Ｓ９０１のＹｅｓ）、同じ論理アドレスとなったブロックの管理データのカウンタナンバを読み出す（Ｓ９０２）。つまり、（１）Ｓ９００で読み出した管理データのカウンタナンバと、（２）この管理データの論理アドレスと同じ論理アドレスの管理データのカウンタナンバとをメモリ１４から読み出す。なお、このように同じ論理アドレスの管理データが複数ある半導体メモリ２の状態は、ブロック交替中の状態、または、図３に示すブロック交替後、旧ブロック消去前の状態であると推測される。よって、マイクロプロセッサ１１は、この同じ論理アドレスを持つ管理データのカウンタナンバの比較を行い、新しい方のカウンタナンバのデータを読み出す（Ｓ９０３）。
【００８３】
次に、マイクロプロセッサ１１は、Ｓ９０３で読み出したデータの最終ページ（ページｑ）の書き込みがあるか否かを判断する（Ｓ９０４）。ここで、最終ページが書き込みされていれば（Ｓ９０４のＹｅｓ）、当該ブロックに対し正常に書き込みが終了したデータと判断できるため、マイクロプロセッサ１１は、カウンタナンバが新しい方の管理データの物理アドレスを有効と判断する（Ｓ９０５）。そして、マイクロプロセッサ１１は、この有効と判断した管理データを用いて論理／物理変換テーブル１４１を更新する（Ｓ９０６）。
【００８４】
一方、Ｓ９１３において最終ページ（ページｑ）に書き込みされていなければ（Ｓ９０４のＮｏ）、新しいカウンタナンバのブロックのデータは、正常に書き込みが終了していないデータと判断できるため、カウンタナンバが古い方の管理データの物理アドレスを有効と判断する（Ｓ９０７）。すなわち、マイクロプロセッサ１１は、カウンタナンバが古い方の管理データにより更新された論理／物理変換テーブル１４１を保持したまま、Ｓ９０８へ進む。
【００８５】
このようにすることで、マイクロプロセッサ１１は、交替ブロックへのデータ書き込み中（または、交替ブロックへのデータ書き込み後であるがデータブロックのデータを消去する前）に電源オフ等の異常が発生して、論理／物理変換テーブル１４１の復元が必要になった場合において、半導体メモリ２上に同じ論理アドレスのデータが複数存在したときでも、どのデータの物理アドレスを用いて論理／物理変換テーブル１４１を復元すればよいかを判断できる。つまり、データ復元を行いやすくなる。
【００８６】
なお、前記した実施の形態において、記憶装置６内の半導体メモリ２の数は複数個であってもよい。この場合、論理／物理変換テーブル１４１（図２参照）は、ブロック番号とページ番号の他に、この半導体メモリ２の識別情報であるチップ番号を追加する。このようにすることで、記憶装置６内に半導体メモリ２が複数ある場合にも、メモリ制御部１はこの複数の半導体メモリ２に対し、前記したようなデータの読み出し処理および書き込み処理を実行できる。
【００８７】
なお、前記した実施の形態において、管理データに含まれるカウンタナンバは、ブロック交替処理を行うたびに値を「１」ずつインクリメントすることとしたが、例えば、「２」以上ずつインクリメントするようにしてもよい。
【図面の簡単な説明】
【００８８】
【図１】本実施の形態の記憶装置における半導体メモリの内部構成を例示した図である。
【図２】本実施の形態の半導体メモリの初期状態を示した図である。
【図３】本実施の形態の半導体メモリのブロック交替後、旧ブロック消去前の状態を示した図である。
【図４】本実施の形態の半導体メモリのブロック交替後、旧ブロック消去後の半導体メモリの状態を示した図である。
【図５】本実施の形態の記憶装置のハードウェア構成例を示した図である。
【図６】図５の論理／物理変換テーブルの構成例を示した図である。
【図７】図５の次回書き込みページ管理テーブルの構成例を示した図である。
【図８】図５の交替ブロックリストテーブルの構成例を示した図である。
【図９】図５の消去回数管理テーブルの構成例を示した図である。
【図１０】図５の消去候補管理テーブルの構成例を示した図である。
【図１１】図５のマイクロプロセッサによる半導体メモリへの書き込み処理手順を示したフローチャートである。
【図１２】図５のマイクロプロセッサによる半導体メモリのブロック交替処理手順を示したフローチャートである。
【図１３】図５のマイクロプロセッサによる半導体メモリのデータ消去処理手順を示したフローチャートである。
【図１４】図５のマイクロプロセッサによる論理／物理変換テーブルの復元処理手順を示したフローチャートである。
【符号の説明】
【００８９】
１      メモリ制御部
２      半導体メモリ
３      ホスト装置
４，５  データバス
６      記憶装置
１１    マイクロプロセッサ
１２    メモリＩ／Ｆ制御部
１３    ホストＩ／Ｆ制御部
１４    メモリ
２１    ブロック
２２    データブロック
２３    交替ブロック
１４１  論理／物理変換テーブル（論理／物理変換情報）
１４２  次回書き込みページ管理テーブル（ページ管理情報）
１４３  交替ブロックリストテーブル（交替ブロック情報）
１４４  消去回数管理テーブル
１４５  消去候補管理テーブル
２２２  データページ
２２３  交替ページ
２２２２，２３２２  管理データ
【図１】
2010039509.tif 000003
【図２】
2010039509.tif 000004
【図３】
2010039509.tif 000005
【図４】
2010039509.tif 000006
【図５】
2010039509.tif 000007
【図６】
2010039509.tif 000008
【図７】
2010039509.tif 000009
【図８】
2010039509.tif 000010
【図９】
2010039509.tif 000011
【図１０】
2010039509.tif 000012
【図１１】
2010039509.tif 000013
【図１２】
2010039509.tif 000014
【図１３】
2010039509.tif 000015
【図１４】
2010039509.tif 000016