(57)【要約】【課題】不揮発性メモリのアクセス単位であるページ単位の代替処理を行いながら、代替管理情報を縮小する手段を実現する。【解決手段】複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラを備える。【選択図】図１
2015166993.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラ。
【請求項２】
前記エラーページと前記代替ページとの対応関係を示す第１の管理情報を保持する第１の管理情報バッファと、
前記代替ページが不足したブロックと前記代替ブロックとの対応関係を示す第２の管理情報を保持する第２の管理情報バッファと
を具備する請求項１記載のメモリコントローラ。
【請求項３】
前記エラーページが最初に発生したときに前記第１の管理情報を作成し、前記代替ページが不足するブロックが最初に発生したときに前記第２の管理情報を作成する請求項２記載のメモリコントローラ。
【請求項４】
指定されたページの論理アドレスをページの物理アドレスに変換し、前記エラーページを代替する際には前記エラーページの物理アドレスに代えて前記代替ページの物理アドレスに論理アドレスを変換し、前記代替ページが不足したときには前記代替ブロックに属するページの物理アドレスに論理アドレスを変換するアドレス変換部を具備する請求項１記載のメモリコントローラ。
【請求項５】
前記ページはさらに複数のバンクからなり、前記エラーページを代替する際には前記代替ページに属するバンクによって当該エラーページに属するエラーバンクをバンク単位で代替し、前記エラーページの属するブロックにおいて前記代替ページに属するバンクが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページに属するバンクによって前記エラーバンクを代替する請求項１記載のメモリコントローラ。
【請求項６】
不揮発性メモリと、
前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラと
を具備する記憶装置。
【請求項７】
前記不揮発性メモリは、前記ブロックに割り当てられた前記代替ページ数が前記ブロックに含まれるページ数におけるエラーページの発生数の期待値と略一致するよう構成され、前記代替ブロック数が全ブロック数に対する前記代替ページが不足したブロックの発生数の期待値と略一致するよう構成される請求項６記載の記憶装置。
【請求項８】
前記不揮発性メモリは、前記エラーページと前記代替ページとの対応関係を示す第１の管理情報と前記代替ページが不足したブロックと前記代替ブロックとの対応関係を示す第２の管理情報とを記憶し、
前記メモリコントローラは、
前記第１の管理情報を保持する第１の管理情報バッファと、
前記第２の管理情報を保持する第２の管理情報バッファと
を備える請求項６記載の記憶装置。
【請求項９】
不揮発性メモリと、
前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラと、
前記メモリコントローラを介して前記不揮発性メモリにアクセスするホストコンピュータと
を具備する情報処理システム。
【請求項１０】
不揮発性メモリと、
前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替するメモリコントローラと、
前記メモリコントローラを介して前記不揮発性メモリにアクセスするホストコンピュータと
を具備し、
前記ホストコンピュータは、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックにアクセス先を変更して当該代替ブロックに属するページによって前記エラーページを代替する
情報処理システム。
【請求項１１】
不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替する手順と、
前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替する手順と
を具備する不揮発性メモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリコントローラに関する。詳しくは、エラーを生じたメモリの代替を行うメモリコントローラ、記憶装置、情報処理システム、および、これらにおける制御方法に関する。
【背景技術】
【０００２】
複数バイトからなるページ単位でアクセスを行う不揮発性メモリ(nonvolatile memory)とこれを制御するメモリコントローラとからなる記憶装置は、これまで広く使用されている。従来、このような記憶装置として、メモリアクセスに伴うエラーを生じたページ（エラーページ）を代替する際、メモリコントローラがページ単位で代替を行う記憶装置が知られている。
【０００３】
しかし、不揮発性メモリの容量増大に伴い、これに含まれるページ数も増加するため、代替処理に必要となる代替管理情報のエントリ数も同様に増加してしまい、代替管理情報サイズが増大していた。そのため、代替処理の負担も大きくなるという問題があった。
【０００４】
そこで、例えば、メモリを複数個のアクセス単位（上の例では、ページ）からなるセグメントで管理し、代替処理をセグメント単位で行う記憶装置が提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００３−３２３３５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述の従来技術では、代替処理をセグメント単位で行うため、代替管理情報のエントリ数が減少し、代替管理情報も縮小される。一方、エラーが発生した際に代替されるメモリ容量が大きくなってしまい、代替処理にともなって消費されるメモリの容量も増加してしまうという問題があった。
【０００７】
本技術はこのような状況に鑑みて生み出されたものであり、不揮発性メモリのアクセス単位であるページ単位の代替処理を行いながら、代替管理情報を縮小することを目的とする。
【課題を解決するための手段】
【０００８】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替し、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって上記エラーページを代替するメモリコントローラである。これにより、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
【０００９】
また、この第１の側面において、上記エラーページと上記代替ページとの対応関係を示す第１の管理情報を保持する第１の管理情報バッファと、上記代替ページが不足したブロックと上記代替ブロックとの対応関係を示す第２の管理情報を保持する第２の管理情報バッファとを具備してもよい。これにより、第１および第２のバッファに夫々保持された第１および第２の管理情報に基づいて代替処理を行うという作用をもたらす。
【００１０】
また、この第１の側面において、上記エラーページが最初に発生したときに上記第１の管理情報を作成し、上記代替ページが不足するブロックが最初に発生したときに上記第２の管理情報を作成してもよい。これにより、エラーページまたは代替ページが不足するブロックが発生するまでは、第１および第２の管理情報の検索を不要にできるという作用をもたらす。
【００１１】
また、この第１の側面において、指定されたページの論理アドレスをページの物理アドレスに変換し、上記エラーページを代替する際には上記エラーページの物理アドレスに代えて上記代替ページの物理アドレスに論理アドレスを変換し、上記代替ページが不足したときには上記代替ブロックに属するページの物理アドレスに論理アドレスを変換するアドレス変換部を具備してもよい。これにより、ブロック内におけるページ単位の代替処理とブロック単位の代替処理を行いながら、アドレス変換機能も備えるという作用をもたらす。
【００１２】
また、この第１の側面において、上記ページはさらに複数のバンクからなり、上記エラーページを代替する際には上記代替ページに属するバンクによって当該エラーページに属するエラーバンクをバンク単位で代替し、上記エラーページの属するブロックにおいて上記代替ページに属するバンクが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページに属するバンクによって上記エラーバンクを代替してもよい。これにより、ページが複数のバンクよりなる不揮発性メモリであっても、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理を行うという作用をもたらす。
【００１３】
また、本技術の第２の側面は、不揮発性メモリと、上記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替し、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって上記エラーページを代替するメモリコントローラとを具備する記憶装置である。これにより、不揮発性メモリにおいて、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
【００１４】
また、この第２の側面において、上記不揮発性メモリは、上記ブロックに割り当てられた上記代替ページ数が上記ブロックに含まれるページ数におけるエラーページの発生数の期待値と略一致するよう構成され、上記代替ブロック数が全ブロック数に対する上記代替ページが不足したブロックの発生数の期待値と略一致するよう構成しても良い。これにより、使用する不揮発性メモリに合った代替ページおよび代替ブロック数にできるという作用をもたらす。
【００１５】
また、この第２の側面において、上記不揮発性メモリは、上記エラーページと上記代替ページとの対応関係を示す第１の管理情報と上記代替ページが不足したブロックと上記代替ブロックとの対応関係を示す第２の管理情報とを記憶し、上記メモリコントローラは、上記第１の管理情報を保持する第１の管理情報バッファと、上記第２の管理情報を保持する第２の管理情報バッファとを備えても良い。これにより、記憶装置において、第１および第２のバッファに夫々保持された第１および第２の管理情報に基づいて代替処理を行う
という作用をもたらす。
【００１６】
また、本技術の第３の側面は、不揮発性メモリと、上記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替し、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって上記エラーページを代替するメモリコントローラと、上記メモリコントローラを介して上記不揮発性メモリにアクセスするホストコンピュータとを具備する情報処理システムである。これにより、不揮発性メモリにおいて、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
【００１７】
また、本技術の第４の側面は、不揮発性メモリと、上記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替するメモリコントローラと、上記メモリコントローラを介して上記不揮発性メモリにアクセスするホストコンピュータとを具備し、上記ホストコンピュータは、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックにアクセス先を変更して当該代替ブロックに属するページによって上記エラーページを代替する情報処理システムである。これにより、不揮発性メモリにおいて、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
【００１８】
また、本技術の第５の側面は、不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には上記エラーページの属するブロックに割り当てられた代替ページによって上記エラーページを代替する手順と、上記エラーページの属するブロックにおいて上記代替ページが不足したときには上記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって上記エラーページを代替する手順とを具備する不揮発性メモリの制御方法である。これにより、ブロック内におけるページ単位の代替処理を行いながら、ブロック単位の代替処理も行うという作用をもたらす。
【発明の効果】
【００１９】
本技術によれば、第１の代替処理としてブロック内におけるページ単位の代替処理を行い、第２の代替処理としてブロック単位の代替処理も併用することができる。これにより、代替処理によって消費されるメモリの容量を削減し、また、これらに必要となる代替管理情報を縮小することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００２０】
【図１】本技術の実施の形態における機能構成例を示す図である。
【図２】第１の実施の形態におけるメモリコントローラの構成例を示す図である。
【図３】第１の実施の形態におけるメモリの構成例を示す図である。
【図４】第１の実施の形態における不揮発性メモリの領域構成例を示す図である。
【図５】第１の実施の形態における第１代替管理情報例を示す図である。
【図６】第１の実施の形態における第２代替管理情報例を示す図である。
【図７】第１の実施の形態におけるライト処理の処理手順の一例を示す図である。
【図８】第１の実施の形態におけるブロック選択処理（ステップＳ９１０）の処理手順の一例を示す図である。
【図９】第１の実施の形態におけるページ書込み処理の処理手順（ステップＳ９２０）の一例を示す図である。
【図１０】第１の実施の形態における代替ブロック処理の処理手順（ステップＳ９４０）の一例を示す図である。
【図１１】第１の実施の形態におけるリード処理手順の一例を示す図である。
【図１２】第１の実施の形態におけるブロック選択処理（ステップＳ９６０）の処理手順の一例を示す図である。
【図１３】本技術の第１の実施の形態におけるページ読出し処理の処理手順（ステップＳ９７０）の一例を示す図である。
【図１４】本技術の第２の実施の形態における第１代替管理情報の一例を示す図である。
【図１５】本技術の第２の実施の形態における第２代替管理情報の一例を示す図である。
【図１６】本技術の第２の実施の形態におけるライト処理の処理手順の一例を示す図である。
【図１７】本技術の第２の実施の形態におけるページ書込み処理の処理手順（ステップＳ８２０）の一例を示す図である。
【図１８】本技術の第２の実施の形態における代替ブロック処理の処理手順（ステップＳ８４０）の一例を示す図である。
【図１９】本技術の第２の実施の形態におけるリード処理手順の一例を示す図である。
【図２０】本技術の第２の実施の形態におけるページ読出し処理の処理手順（ステップＳ８７０）の一例を示す図である。
【図２１】本技術の第３の実施の形態におけるライト処理の処理手順の一例を示す図である。
【図２２】本技術の第３の実施の形態におけるブロック選択処理（ステップＳ７１０）の処理手順の一例を示す図である。
【図２３】本技術の第３の実施の形態におけるページ書込み処理の処理手順（ステップＳ７２０）の一例を示す図である。
【図２４】本技術の第３の実施の形態における代替ブロック処理の処理手順（ステップＳ７４０）の一例を示す図である。
【図２５】本技術の第３の実施の形態におけるリード処理手順の一例を示す図である。
【図２６】本技術の第３の実施の形態におけるブロック選択処理（ステップＳ７６０）の処理手順の一例を示す図である。
【図２７】本技術の第３の実施の形態におけるページ読出し処理の処理手順（ステップＳ７７０）の一例を示す図である。
【図２８】本技術の第４の実施の形態における不揮発性メモリの領域構成例を示す図である。
【図２９】本技術の第４の実施の形態における第１代替管理情報例を示す図である。
【図３０】本技術の第４の実施の形態におけるライト処理の処理手順の一例を示す図である。
【図３１】本技術の第４の実施の形態におけるブロック選択処理（ステップＳ６１０）の処理手順の一例を示す図である。
【図３２】本技術の第４の実施の形態におけるページ書込み処理の処理手順（ステップＳ６２０）の一例を示す図である。
【図３３】本技術の第４の実施の形態における代替ブロック処理の処理手順（ステップＳ６４０）の一例を示す図である。
【図３４】本技術の第４の実施の形態におけるリード処理手順の一例を示す図である。
【図３５】本技術の第４の実施の形態におけるブロック選択処理（ステップＳ６６０）の処理手順の一例を示す図である。
【図３６】本技術の第４の実施の形態におけるページ読出し処理の処理手順（ステップＳ６７０）の一例を示す図である。
【図３７】本技術の第５の実施の形態における第１代替管理情報例を示す図である。
【図３８】本技術の第５の実施の形態におけるライト処理の処理手順の一例を示す図である。
【図３９】本技術の第５の実施の形態におけるページ書込み処理の処理手順（ステップＳ５２０）の一例を示す図である。
【図４０】本技術の第５の実施の形態における代替ブロック処理の処理手順（ステップＳ５４０）の一例を示す図である。
【図４１】本技術の第５の実施の形態におけるリード処理手順の一例を示す図である。
【図４２】本技術の第５の実施の形態におけるページ読出し処理の処理手順（ステップＳ５７０）の一例を示す図である。
【図４３】本技術の第６の実施の形態におけるメモリコントローラの構成例を示す図である。
【図４４】本技術の第６の実施の形態におけるホストコンピュータによるライト処理手順の一例を示す図である。
【図４５】本技術の第６の実施の形態におけるホストコンピュータによる代替ブロック処理の処理手順（ステップＳ４４０）の一例を示す図である。
【図４６】本技術の第６の実施の形態におけるメモリコントローラによるライト処理手順の一例を示す図である。
【図４７】本技術の第６の実施の形態におけるメモリコントローラによるページ書込み処理の処理手順（ステップＳ４２０）の一例を示す図である。
【図４８】本技術の第６の実施の形態におけるホストコンピュータによるリード処理手順の一例を示す図である。
【図４９】本技術の第６の実施の形態におけるメモリコントローラによるリード処理手順の一例を示す図である。
【図５０】本技術の第６の実施の形態におけるメモリコントローラによるページ読出し処理の処理手順（ステップＳ４７０）の一例を示す図である。
【発明を実施するための形態】
【００２１】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（メモリコントローラの例）
２．第２の実施の形態（アドレス変換機能を備えるメモリコントローラの例）
３．第３の実施の形態（代替処理の発生に伴い、代替管理情報が生成される例）
４．第４の実施の形態（不揮発性メモリのページが複数のバンクよりなる場合の例）
５．第５の実施の形態（不揮発性メモリのページが複数のバンクよりなる、アドレス変換機能を備えるメモリコントローラの例）
６．第６の実施の形態（第１の代替処理をメモリコントローラで行い、第２の代替処理をホストコンピュータが行う場合の例）
７．変形例
【００２２】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における機能構成例を示す図である。ホストコンピュータ１００は、プロセッサ１１０と、メモリコントローラインターフェース１０９とを備える。プロセッサ１１０は、ホストコンピュータ１００の全体の動作を制御する。メモリコントローラインターフェース１０９は、メモリコントローラ２００とのやり取りを行うインターフェースである。ホストコンピュータ１００は、メモリコントローラ２００との間で、メモリコントローラインターフェース１０９を介して、データのリードまたはライトを要求するコマンドを発行する。ホストコンピュータ１００とメモリコントローラ２００を接続するインターフェースとしては、ＳＡＴＡ、ＰＣＩ  Ｅｘｐｒｅｓｓ、ｅＭＭＣ、ＵＳＢなどを利用することができる。なお、ホストコンピュータ１００は、図示しないＲＯＭ、ＲＡＭ等のメモリなども備える。
【００２３】
メモリコントローラ２００は、ホストインターフェース２０８とメモリインターフェース２０９とを備える。ホストインターフェース２０８は、ホストコンピュータ１００とのやり取りを行うインターフェースである。メモリインターフェース２０９は、メモリ３００とのやり取りを行うインターフェースである。メモリコントローラ２００は、ホストインターフェース２０８を介して、ホストコンピュータ１００より、リードコマンドまたはライトコマンドを受けとる。その後、メモリコントローラ２００は、これらのコマンドに基づき、メモリインターフェース２０９を介して、メモリ３００に対しリクエストを要求してデータの書込みまたは読出しを行う。
【００２４】
メモリ３００は、不揮発性メモリとその周辺回路により構成されており、メモリコントローラ２００とのやり取りを行うメモリコントローラインターフェース３０９を含んでいる。メモリ３００に含まれる不揮発性メモリはページ単位でデータの読出し、書込みが可能であり、ホストコンピュータ１００の動作に必要なデータを保存する。ここで、ページの大きさは任意のバイト数とすることができる。後述するとおり、メモリ３００に含まれる不揮発性メモリは複数のページを含むブロック単位でも管理される。不揮発性メモリの例としては、ＮＡＮＤ型フラッシュメモリ、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）、ＲｅＲＡＭ（Resistance RAM）が挙げられる。
【００２５】
図２は、本技術の実施の形態におけるメモリコントローラの構成例を示す図である。メモリコントローラ２００は、前述したホストインターフェース２０８とメモリインターフェース２０９のほか、制御部２１０と、データバッファ２２０と、代替管理情報バッファ２３０と、第１代替処理部２５０と、第２代替処理部２６０とを備える。
【００２６】
メモリコントローラ２００は、メモリ３００に含まれる不揮発性メモリの管理を、第１代替管理情報と第２代替管理情報とに基づいて処理し、前記不揮発性メモリの制御を行う。第１代替管理情報は、エラーページと代替ページとの対応関係を示す管理情報であり、第２代替管理情報は、代替ページが不足したブロックと代替ブロックとの対応関係を示す管理情報である。これらの詳細については後述する。なお、第１代替管理情報は、特許請求の範囲に記載の第１の代替管理情報である。同様に、第２代替管理情報は、特許請求の範囲に記載の第２の代替管理情報である。
【００２７】
制御部２１０は、ホストコンピュータ１００から発行されたコマンドの解釈を行う。その後、メモリ３００との間で、制御コマンドおよびデータの入出力を行う。また、制御部２１０は、データバッファ２２０、代替管理情報バッファ２３０、第１代替処理部２５０、第２代替処理部２６０の制御も行う。
【００２８】
データバッファ２２０は、ホストコンピュータ１００とメモリ３００との間でデータの転送を行う際に、データを一時的に保管するバッファである。代替管理情報バッファ２３０は、第１および第２代替管理情報を一時的に保持するバッファである。第１代替処理部２５０は、第１代替管理情報に基づいて代替処理を行う。第２代替処理部２６０は、第２代替管理情報に基づいて代替処理を行う。第１および第２の代替処理については後述する。なお、代替管理情報バッファ２３０は、特許請求の範囲に記載の第１代替管理情報バッファおよび第２代替管理情報バッファの一例である。
【００２９】
本技術の実施の形態では、第１および第２代替管理情報は、メモリ３００内の不揮発性メモリに記憶されている。制御部２１０は、情報処理システム起動時に、この第１および第２代替管理情報を代替管理情報バッファ２３０に転送する。第１代替処理部２５０は代替管理情報バッファ２３０に転送された第１代替管理情報に基づいて代替処理を行う。エラーページが発生した際には、第１代替処理部２５０は、代替管理情報バッファ２３０に転送された第１代替管理情報に新たな代替管理情報を設定する。同様に、第２代替処理部２６０は、代替管理情報バッファ２３０に転送された第２代替管理情報に基づいて代替処理を行う。エラーブロックが発生した際には、第２代替処理部２６０は、代替管理情報バッファ２３０に転送された第２代替管理情報に新たな代替管理情報を設定する。制御部２１０は、代替管理情報バッファ２３０とメモリ３００内の不揮発性メモリとに記憶されている第１および第２代替管理情報の整合を取る。具体的には、適宜代替管理情報バッファ２３０に保持されている第１および第２代替管理情報に基づいて、メモリ３００内の不揮発性メモリに記憶されている第１および第２代替管理情報を更新する。
上述した処理により、メモリコントローラ２００は、メモリ３００内の不揮発性メモリに記憶された第１および第２代替管理情報にアクセスすることなく代替処理を行うことができる。
【００３０】
［メモリ３００内の記憶領域］
図３は、本技術の実施の形態におけるメモリの構成例を示す図である。メモリ３００は、前述したメモリコントローラインターフェース３０９のほか、制御部３１０と、不揮発性メモリ３２０とを備える。制御部３１０は、メモリコントローラ２００より送出された制御コマンドに従って、不揮発性メモリ３２０に対しリード、ライト動作を行う。不揮発性メモリ３２０は、データブロック領域３３０と代替ブロック領域３４０を備える。データブロック領域３３０は、通常時のデータ保存に使用するデータ保存ブロックよりなる領域である。代替ブロック領域３４０は、エラーブロックを代替するための代替ブロックよりなる領域である。
【００３１】
図４は、本技術の実施の形態における不揮発性メモリの領域構成例を示す図である。図に表したとおり、不揮発性メモリ３２０内のデータ保存ブロックおよび代替ブロックは、データ保存ページと代替ページとにより構成されている。データ保存ページは、通常時のデータ保存に使用するページであるが、その一部として第１および第２代替管理情報を記憶する領域も存在する。代替ページは、エラーページを代替するためのページである。
【００３２】
［代替処理］
ここで、本技術の実施の形態における代替処理について説明する。通常、メモリコントローラは、図４に表したデータ保存ブロックに含まれるデータ保存ページに対しデータの書込みおよび読出しすなわちアクセスを行う。データ保存ページがエラーページとなった場合、メモリコントローラ２００は、このエラーページの代わりに同じブロックに属する代替ページを用いてアクセスを行うよう変更する。この処理が、第１の代替処理である。
【００３３】
第１の代替処理の結果、ブロック内の代替ページが不足し、更なる代替処理ができなくなったブロックの発生も予想される。なお、以降の説明では代替ページが不足したブロックをエラーブロックと記載する。このような場合、メモリコントローラ２００は、ブロック単位で代替処理を行う。具体的には、メモリコントローラ２００は、このエラーブロックの代わりに代替ブロックを用いてアクセスを行うよう変更する。この処理が、第２の代替処理である。このように、本技術の実施の形態では、不揮発性メモリをページおよびブロック単位で管理し、第１と第２の２段階で代替処理を行う。
【００３４】
図４において、ｍは不揮発性メモリ３２０に含まれる総ブロック数、ｄは代替ブロック数、ｂはブロックに含まれる総ページ数、ｅは代替ページ数を表す。この場合、ｍ−ｄはデータ保存ブロック数を表し、ｂ−ｅはデータ保存ページ数を表すこととなる。不揮発性メモリ３２０の記憶領域は、連続するｍ個のブロックで構成され、ｍ−ｄ個のデータ保存ブロックとｄ個の代替ブロックに分けられる。これらは各々データブロック領域３３０と代替ブロック領域３４０に含まれる。また、各ブロックは、連続するｂ個のページで構成され、ｂ−ｅ個のデータ保存ページとｅ個の代替ページに分けられる。
【００３５】
ここで、２Ｇバイトの不揮発性メモリに本技術を適用する場合を考える。ページサイズを５１２バイト、ブロックサイズを３２ページにした場合には、ｍｄｂｅの値として、
ｍ＝１３１０７２、ｄ＝８１９２、ｂ＝３２、ｅ＝２とすることができる。
また、ページサイズを４０９６バイト、ブロックサイズを３２ページにした場合には、
ｍ＝１６３８４、ｄ＝１０２４、ｂ＝３２、ｅ＝２とすることができる。
【００３６】
［代替管理情報］
図５は、本技術の第１の実施の形態における第１代替管理情報例を示す図である。本技術の実施の形態における第１代替管理情報は、データ保存ページ（すなわち、代替元）を管理する第１アドレス変換テーブルと代替ページ（すなわち、代替先）を管理する第１管理フラグ情報とにより構成される。同図におけるａは、第１アドレス変換テーブルを表し、同図におけるｂは、第１管理フラグ情報を表している。第１アドレス変換テーブルは、ブロック内のデータ保存ページと同数のページ管理情報を有する。このページ管理情報は、当該データ保存ページがエラーページであり代替されているか否かを示す代替ページフラグと、代替されている場合に代替先のページアドレスを示す代替ページアドレスとを含んでいる。第１管理フラグ情報は、ブロック内の代替ページと同数のページ管理情報を有する。このページ管理情報は、代替ページが使用されているか否かを示す代替ページ使用フラグを含んでいる。第１アドレス変換テーブルのページ管理情報である代替ページアドレスは、ブロックの先頭ページからのオフセットページアドレスや複数存在する代替ページのいずれかを示すビット情報を用いることができる。
【００３７】
先の例では、ブロックに含まれる総ページ数ｂ＝３２、代替ページ数ｅ＝２であるため、ブロック当たりの第１アドレス変換テーブルのエントリは、ｂ−ｅより３０となる。代替ページアドレスとして、ブロック内の先頭代替ページからのオフセットページアドレスを採用した場合には、代替ページフラグと代替ページアドレスが各々１ビットのサイズで済むため、第１アドレス変換テーブルのエントリサイズは２ビットとなる。また、データ保存ブロック数は、ｍ−ｄより１２２８８０となり、第１アドレス変換テーブルもこれと同数必要となる。これらより、第１アドレス変換テーブルの合計サイズは、１２２８８０×３０×２＝９２１Ｋバイトとなる。
【００３８】
図６は、本技術の第１の実施の形態における第２代替管理情報例を示す図である。本技術の実施の形態における第２代替管理情報は、データ保存ブロック（すなわち、代替元）を管理する第２アドレス変換テーブルと代替ブロック（すなわち、代替先）を管理する第２管理フラグ情報とにより構成される。同図におけるａは、第２アドレス変換テーブルを表し、同図におけるｂは、第２管理フラグ情報を表している。第２アドレス変換テーブルは、データブロック領域３３０に含まれるブロックと同数のブロック管理情報を有する。このブロック管理情報は、当該ブロックがエラーブロックであり代替されているか否かを示す代替ブロックフラグと、代替先のブロックアドレスを示す代替ブロックアドレスを含んでいる。第２管理フラグ情報は、代替ブロック領域３４０に含まれるブロックと同数のブロック管理情報を有する。このブロック管理情報は、代替ブロックが使用されているか否かを示す代替ブロック使用フラグを含んでいる。第２アドレス変換テーブルのブロック管理情報である代替ブロックアドレスは、代替ブロック領域３４０の先頭ブロックからのオフセットブロックアドレスや複数存在する代替ブロックのいずれかを示すビット情報を用いることができる。
【００３９】
先の例では、データ保存ブロック数は、１２２８８０、代替ページ数は、８１９２である。代替ブロックアドレスとして、代替ブロック領域３４０の先頭ブロックからのオフセットブロックアドレスを採用した場合には、代替ブロックアドレスとして１３ビットアドレスが必要となる。代替ブロック使用フラグは１ビットのサイズであるため、第２アドレス変換テーブルのエントリサイズは１４ビットとなる。これらより、第２アドレス変換テーブルサイズは、１２２８８０×１４＝２１５Ｋバイトとなる。
【００４０】
なお、本技術の実施の形態における第１および第２のアドレス変換は、代替されたページまたはブロックに対してアドレスの変換を行う際に使用する。代替されていないページまたはブロックに対してアクセスがなされた場合は、ホストコンピュータ１００により指定されたページまたはブロックのアドレスをそのまま使用する。
【００４１】
次に、上述の実施の形態におけるライトおよびリードの動作について図面を参照して説明する。
【００４２】
［ライト処理の処理手順］
図７は、本技術の第１の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ１００よりライトコマンドを受け取ると、メモリコントローラ２００は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の指定ページアドレスとライトデータとを含んでいる。まず、ブロック選択処理（ステップ９１０）を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ書込み処理（ステップＳ９２０）を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は（ステップＳ９３２：Ｙｅｓ）、再度ページ書込みを実行する（ステップＳ９２０）。先に選択したブロック内で、次のページが存在しない場合は（ステップＳ９３２：Ｎｏ）、処理はステップＳ９３５に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は（ステップＳ９３５：Ｙｅｓ）、再度Ｓ９１０からの処理を繰り返す。次の書込みブロックが存在しない場合は（ステップＳ９３５：Ｎｏ）、本ライト処理を終了する。
【００４３】
図８は、本技術の第１の実施の形態におけるブロック選択処理（ステップＳ９１０）の処理手順の一例を示す図である。メモリコントローラ２００は、ライト対象ブロックに対応する第２代替管理情報の代替ブロックフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ９１２：Ｙｅｓ）、代替ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ９１３）。代替を生じていない場合は（ステップＳ９１２：Ｎｏ）、ライトコマンドで指定されたページが属するブロックのアドレスを使用して以降の処理を行うよう設定する（ステップＳ９１４）。以降の説明では、ライトまたはリードコマンドで指定されたページが属するブロックのアドレスを指定ブロックアドレスと記載する。
【００４４】
図９は、本技術の第１の実施の形態におけるページ書込み処理の処理手順（ステップＳ９２０）の一例を示す図である。メモリコントローラ２００は、ライト対象ページに対応する第１代替管理情報の代替ページフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ９２２：Ｙｅｓ）、代替ページアドレスにデータ書込みを行う（ステップＳ９２３）。代替を生じていない場合は（ステップＳ９２２：Ｎｏ）、指定ページアドレスにデータ書込みを行う（ステップＳ９２４）。その後、書込みエラーを生じなかった場合（ステップＳ９２５：Ｎｏ）は、ページ書込み処理を終了する。
【００４５】
書込みエラーを生じた場合（ステップＳ９２５：Ｙｅｓ）、メモリコントローラ２００は、代替処理を行うため未使用代替ページを検索する（ステップＳ９３３）。これは、第１代替管理情報の代替ページ使用フラグがＯＮになっていない代替ページを検索することにより行う。その結果、未使用代替ページが存在する場合は（ステップＳ９３４：Ｙｅｓ）、第１代替管理情報の代替ページフラグをＯＮにし、代替ページアドレスに上記未使用代替ページのアドレスを設定し、代替ページ使用フラグをＯＮにする（ステップＳ９３６）。その後、処理はステップＳ９２３に戻り、再度データ書込みを行う。代替ページを全て使用しているなどのように、未使用代替ページが存在しない場合は（ステップＳ９３４：Ｎｏ）、代替ブロック処理（ステップＳ９４０）を実行後、ページ書込み処理を再度実行する。
【００４６】
図１０は、本技術の第１の実施の形態における代替ブロック処理の処理手順（ステップＳ９４０）の一例を示す図である。メモリコントローラ２００は、未使用代替ブロック検索（ステップＳ９４３）を実行する。これは、第２代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合は（ステップＳ９４４：Ｎｏ）、代替不能となる。メモリコントローラ２００は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
【００４７】
未使用代替ブロックがある場合には（ステップＳ９４４：Ｙｅｓ）、メモリコントローラ２００は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする（ステップＳ９４５）。その後、第２代替管理情報の代替ブロックフラグをＯＮにし、代替ブロックアドレスに上記未使用代替ブロックのアドレスを設定し、代替ブロック使用フラグをＯＮにする（ステップＳ９４６）。本代替ブロック処理を終了し、図９において前述したページ書込み処理に戻る。この際、メモリコントローラ２００は、ホストコンピュータ１００により指定されたブロックのアドレスに代えて、本代替ブロック処理で確保した代替ブロックのアドレスを使用して以降の処理（ステップＳ９２２以降）を行うよう設定する。
【００４８】
［リード処理の処理手順］
図１１は、本技術の第１の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ１００よりリードコマンドを受け取ると、メモリコントローラ２００は、リード処理を開始する。なお、このリードコマンドは、指定ページアドレスを含んでいる。まず、ブロック選択処理（ステップ９６０）を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ読出し処理（ステップＳ９７０）を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は（ステップＳ９８２：Ｙｅｓ）、再度ページ読出し処理（ステップＳ９７０）を実行する。先に選択したブロック内で、次の読出しページが存在しない場合は（ステップＳ９８２：Ｎｏ）、処理はステップＳ９８５に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は（ステップＳ９８５：Ｙｅｓ）、再度ステップＳ９６０からの処理を繰り返す。次の読出しブロックが存在しない場合は（ステップＳ９８５：Ｎｏ）、本リード処理を終了する。
【００４９】
図１２は、本技術の第１の実施の形態におけるブロック選択処理（ステップＳ９６０）の処理手順の一例を示す図である。メモリコントローラ２００は、リード対象ブロックに対応する第２代替管理情報の代替ブロックフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ９６２：Ｙｅｓ）、代替ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ９６３）。代替を生じていない場合は（ステップＳ９６２：Ｎｏ）、指定ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ９６４）。
【００５０】
図１３は、本技術の第１の実施の形態におけるページ読出し処理の処理手順（ステップＳ９７０）の一例を示す図である。メモリコントローラ２００は、データ読出し対象であるページについて、代替が発生しているか否かを判断する。メモリコントローラ２００は、リード対象ページに対応する第１代替管理情報の代替ページフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ９７２：Ｙｅｓ）、代替ページアドレスからデータ読出しを行う（ステップＳ９７３）。代替を生じていない場合は（ステップＳ９７２：Ｎｏ）、指定ページアドレスからデータ読出しを行う（ステップＳ９７４）。その後、ページ読出し処理を終了する。
【００５１】
ここで、この第１の実施の形態の効果について説明する。ページ単位で代替処理を行う場合と、本技術の実施の形態による場合とで代替管理情報サイズを比較する。簡単にするため代替ページ使用フラグ、代替ブロック使用フラグは除外する。
【００５２】
まず、２Ｇバイトの不揮発性メモリの代替管理を、ブロック毎に行うことなく、５１２バイトのページ単位で行うという従来技術の場合を考える。総ページ数は、４１９４３０４となる。先の例に倣って、代替ページ数を総ページ数の１／１６とすると、データページ数と代替ページ数は夫々３９３２１６０、２６２１４４となる。代替ページアドレスとして、代替ページ領域の先頭ページからのオフセットページアドレスを採用した場合には、代替ページアドレスとして１８ビットアドレスが必要となる。１ビットの代替ブロック使用フラグを加えると、アドレス変換テーブルのエントリサイズは１９ビットとなる。これらより、アドレス変換テーブルサイズは、３９３２１６０×１９＝９．３３Ｍバイトとなる。
【００５３】
一方、本技術の第１の実施の形態では、前述したとおり、第１および第２アドレス変換テーブルサイズは夫々９２１Ｋ、２１５Ｋバイトである。これらの合計は、１．１３Ｍバイトに過ぎない。
【００５４】
このように、本技術の第１の実施の形態によれば、ブロック内においてページ単位の代替処理を行いながら、代替管理情報サイズを大幅に縮小することができる。このため、代替管理情報を保持する代替管理情報バッファ２３０の容量も小さくすることができる。
【００５５】
また、この第１の実施の形態では、代替処理を第１の代替処理と第２の代替処理の２段階で行っている。ページ単位で代替処理を行うシステムのように、１段階の代替処理しか行わない場合と比べ、エラー発生に対する信頼性を向上させることができる。
【００５６】
さらに、この第１の実施の形態では、第１および第２代替管理情報をメモリ３００内の不揮発性メモリから上記代替管理情報バッファ２３０に転送し、代替処理に使用している。このような構成を採用することにより、メモリコントローラ２００は、メモリ３００内の不揮発性メモリに記憶された第１および第２代替管理情報にアクセスすることなく代替処理を行うことができる。そのため、代替処理を高速に行うことができる。また、不揮発性メモリにおける第１および第２代替管理情報を記憶している部分へのアクセス集中を避けることもできる。
【００５７】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、論理ページをそのまま物理ページとして使用していたが、本技術の第２の実施の形態では、メモリコントローラ２００が論理ページアドレスから物理ページアドレスへのアドレス変換機能を備える。不揮発性メモリを使用した情報システムでは、特定のページにアクセスが集中する場合がある。このような場合に、アクセスを他のページに分散させるため、メモリコントローラにアドレス変換機能が付加される。ホストコンピュータ１００より指定されたページのアドレスを論理ページアドレスとし、不揮発性メモリ３２０上のページのアドレスを物理ページアドレスとする。両者の対応関係を適宜変更してデータを再配置し、特定ページへのアクセス集中を分散させる。さらに、本実施の形態では、ブロック単位のアドレス変換機能も備える。第１および第２の代替処理は、これらのアドレス変換機能の一部として実現される。ページ単位のアドレス変換と第１の代替処理を行うアドレス変換部は、第１代替処理部２５０に含まれる。ブロック単位のアドレス変換と第２の代替処理を行うアドレス変換部は、第２代替処理部２６０に含まれる。なお、これらのアドレス変換部は、特許請求の範囲に記載のアドレス変換部の一例である。
【００５８】
システムとしての機能構成やメモリコントローラ２００、メモリ３００、不揮発性メモリの領域構成は、本技術の第１の実施の形態と同様であるため、以下では説明を省略する。
【００５９】
［代替管理情報］
図１４は、本技術の第２の実施の形態における第１代替管理情報の一例を示す図である。本技術の実施の形態における第１代替管理情報は、論理ページ管理情報を含む第１アドレス変換テーブルと物理ページ管理情報を含む第１管理フラグ情報とにより構成される。同図におけるａは、第１アドレス変換テーブルを表し、同図におけるｂは、第１管理フラグ情報を表している。第１アドレス変換テーブルは、ブロック内のデータ保存ページと同数の論理ページ管理情報を有する。この論理ページ管理情報は、当該論理ページに対して割り当てられた物理ページアドレスを含んでいる。また、物理ページアドレスは、ブロックの先頭ページからのオフセットアドレスとすることができる。第１管理フラグ情報は、ブロック内のページと同数の物理ページ管理情報を有する。この物理ページ管理情報は、データ保存ページと代替ページとでは異なっている。データ保存ページでは、当該ページのアドレスが論理ページアドレスに対応する物理ページアドレスとして割り当て済みであるか否かを示す物理ページ使用フラグと当該ページがエラーページであることを示す物理ページ不良フラグとを含んでいる。代替ページでは、当該ページが代替ページとして割り当て済みであることを示す代替ページ使用フラグと当該ページがエラーページであることを示す代替ページ不良フラグとを含んでいる。
【００６０】
図１５は、本技術の第２の実施の形態における第２代替管理情報の一例を示す図である。本技術の実施の形態における第２代替管理情報は、論理ブロック管理情報を含む第２アドレス変換テーブルと物理ブロック管理情報を含む第２管理フラグ情報とにより構成される。同図におけるａは、第２アドレス変換テーブルを表し、同図におけるｂは、第２管理フラグ情報を表している。第２アドレス変換テーブルは、データブロック領域３３０に含まれるブロックと同数の論理ブロック管理情報を有する。この論理ブロック管理情報は、当該論理ブロックに対して割り当てられた物理ブロックアドレスを含んでいる。また、物理ブロックアドレスは、各ブロックの先頭ページアドレスとすることができる。第２管理フラグ情報は、不揮発性メモリ３２０に含まれる総ブロック数と同数の物理ブロック管理情報を有する。この物理ブロック管理情報は、データ保存ブロックと代替ブロックとでは異なっている。データ保存ブロックでは、当該ブロックのアドレスが論理ブロックアドレスに対応する物理ブロックアドレスとして割り当て済みであるか否かを示す物理ブロック使用フラグと当該ブロックがエラーブロックであることを示す物理ブロック不良フラグとを含んでいる。代替ブロックでは、当該ブロックが代替ブロックとして割り当て済みであることを示す代替ブロック使用フラグと当該ブロックがエラーブロックであることを示す代替ブロック不良フラグとを含んでいる。
【００６１】
次に、上述の実施の形態におけるライトおよびリード処理について図面を参照して説明する。
【００６２】
［ライト処理の処理手順］
図１６は、本技術の第２の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ１００よりライトコマンドを受け取ると、メモリコントローラ２００は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の論理ページアドレスとライトデータとを含んでいる。まず、メモリコントローラ２００は、物理ブロックアドレス取得（ステップＳ８１１）を実行する。これは、第２代替管理情報の第２アドレス変換テーブルから物理ブロックアドレスを取得することにより行う。次に、ページ書込み処理（ステップＳ８２０）を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は（ステップＳ８３２：Ｙｅｓ）、再度ページ書込みを実行する（ステップＳ８２０）。先に取得したブロック内において、次の書込みページが存在しない場合は（ステップＳ８３５：Ｎｏ）、処理はステップＳ８３５に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は（ステップＳ８３５：Ｙｅｓ）、再度Ｓ８１１からの処理を繰り返す。次の書込みブロックが存在しない場合は（ステップＳ８３５：Ｎｏ）、本ライト処理を終了する。
【００６３】
図１７は、本技術の第２の実施の形態におけるページ書込み処理の処理手順（ステップＳ８２０）の一例を示す図である。メモリコントローラ２００は、第１代替管理情報の第１アドレス変換テーブルから物理ページアドレスを取得し、この物理ページアドレスにデータ書込みを行う（ステップＳ８２３）。その後、書込みエラーを生じなかった場合（ステップＳ８２５：Ｎｏ）は、ページ書込み処理を終了する。
【００６４】
書込みエラーを生じた場合（ステップＳ８２５：Ｙｅｓ）は、メモリコントローラ２００は、この物理ページに対応する第１代替管理情報の物理ページ不良フラグをＯＮに設定する（ステップＳ８３２）。次に、代替処理を行うため未使用代替ページを検索する（ステップＳ８３３）。これは、第１代替管理情報の代替ページ使用フラグと代替ページ不良フラグが共にＯＮになっていない代替ページを検索することにより行う。その結果、未使用代替ページが存在する場合は（ステップＳ８３４：Ｙｅｓ）、この未使用代替ページに対応する第１代替管理情報の代替ページ使用フラグをＯＮに設定する。また、第１アドレス変換テーブルのライト対象論理ページアドレスに対応する物理ページアドレスとして、上記未使用代替ページのアドレスを設定する（ステップＳ８３６）。その後、処理はステップＳ８２３に戻り、再度データ書込みを行う。代替ページを全て使用しているなどのように、未使用代替ページが存在しない場合（ステップＳ８３４：Ｎｏ）には、代替ブロック処理（ステップＳ８４０）を実行後、ページ書込み処理を再度実行する。
【００６５】
図１８は、本技術の第２の実施の形態における代替ブロック処理の処理手順（ステップＳ８４０）の一例を示す図である。メモリコントローラ２００は、エラーブロックに対応する第２管理情報の物理ブロック不良フラグをＯＮに設定する（ステップＳ８４２）。次に、未使用代替ブロック検索（ステップＳ８４３）を実行する。これは、代替ブロック使用フラグと代替ブロック不良フラグが共にＯＮになっていない代替ブロックを検索することにより行う。その結果、未使用代替ブロックがない場合には（ステップＳ８４４：Ｎｏ）、代替不能となる。メモリコントローラ２００は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
【００６６】
未使用代替ブロックがある場合には（ステップＳ８４４：Ｙｅｓ）、メモリコントローラ２００は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする（ステップＳ８４５）。その後、この代替ブロックに対応する第２代替管理情報の代替ブロック使用フラグをＯＮに設定する。また、ライト対象論理ページアドレスに対応する物理ページアドレスとして、第２代替管理情報の第２アドレス変換テーブルに上記未使用代替ページのアドレスを設定する（ステップＳ８４６）。その後、本代替ブロック処理を終了し、図１７において前述したページ書込み処理に戻る。この際、メモリコントローラ２００は、第２代替管理情報の第２アドレス変換テーブルに従い、本代替ブロック処理により確保した代替ブロックのアドレスを使用して以降の処理（ステップＳ８２３以降）を行うこととなる。
【００６７】
［リード処理の処理手順］
図１９は、本技術の第２の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ１００よりリードコマンドを受け取ると、メモリコントローラ２００は、リード処理を開始する。なお、このリードコマンドは、リード対象の論理ページアドレスを含んでいる。まず、物理ブロックアドレス取得（ステップＳ８６１）を実行する。これは、第２代替管理情報の第２アドレス変換テーブルから物理ブロックアドレスを取得することにより行う。次に、この物理ブロックアドレスに対応する物理ブロック使用フラグを検索する。このフラグがＯＮすなわちブロックが使用中である場合は（ステップＳ８８１：Ｙｅｓ）、ページ読出し処理（ステップＳ８７０）を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は（ステップＳ８８２：Ｙｅｓ）、再度ページ読出し処理（ステップＳ８７０）を実行する。先に取得したブロック内に、次の読出しページが存在しない場合は（ステップＳ８８２：Ｎｏ）、処理はステップＳ８８５に移る。
【００６８】
一方、ブロックが使用中でない場合は（ステップＳ８８１：Ｎｏ）、ホストコンピュータ１００に規定データを出力する（ステップＳ８８３）。ここで、規定データとは、リードデータが無効であることをホストコンピュータに通知する目的で出力されるデータであり、例えば全ビットが０または全ビットが１のデータとすることができる。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は（ステップＳ８８４：Ｙｅｓ）、再度規定データを出力する（ステップＳ８８３）。先に取得したブロック内に、次の読出しページが存在しない場合は（ステップＳ８８４：Ｎｏ）、処理はステップＳ８８５に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は（ステップＳ８８５：Ｙｅｓ）、再度ステップＳ８６１からの処理を繰り返す。次の読出しブロックが存在しない場合は（ステップＳ８８５：Ｎｏ）、本リード処理を終了する。
【００６９】
図２０は、本技術の第２の実施の形態におけるページ読出し処理の処理手順（ステップＳ８７０）の一例を示す図である。メモリコントローラ２００は、リード対象ページに対応する第１代替管理情報の第１アドレス変換テーブルから物理ページアドレスを取得し、この物理ページアドレスに対応する物理ページ使用フラグを検索する。このフラグがＯＮすなわちページが使用中の場合は（ステップＳ８７２：Ｙｅｓ）、物理ページアドレスからデータ読出しを行う（ステップＳ８７３）。ページが使用中でない場合は（ステップＳ８７２：Ｎｏ）、ホストコンピュータ１００に規定データを出力する（ステップＳ８７４）。その後ページ読出し処理を終了する。
【００７０】
ここで、この第２の実施の形態の効果について説明する。第１代替管理情報の物理ページアドレスは、ブロックの先頭ページからのオフセットアドレスであるため、アドレス変換テーブルのエントリサイズは、ページ単位で代替管理を行う場合よりも小さくできる。また、ブロック単位で管理するため、第２代替管理情報のアドレス変換テーブルのエントリサイズも、ページ単位で代替管理を行う場合よりも小さくすることができる。
【００７１】
このように、本技術の第２の実施の形態によれば、メモリコントローラが論理アドレスから物理アドレスへのアドレス変換機能を備えるため、特定ページへのアクセス集中を防ぐことができる。
【００７２】
＜３．第３の実施の形態＞
上述の第１および第２の実施の形態では、第１および第２代替管理情報がメモリコントローラ２００などに予め保持されていた。本技術の第３の実施の形態では、代替処理の発生時に動的に第１および第２代替管理情報が生成される。ここで、代替管理情報の生成とは、初期値として代替が発生していない状態の代替管理情報を作成することである。代替管理情報の生成後は、代替が発生するたびに、新たな代替管理情報を追加することとなる。
【００７３】
システムとしての機能構成やメモリコントローラ２００、メモリ３００、不揮発性メモリの領域構成は、本技術の第１の実施の形態と同様であるため、以下では説明を省略する。また、第１および第２代替管理情報は、図５および図６にて前述した管理情報を用いることができる。
【００７４】
次に、上述の実施の形態におけるライトおよびリードの動作について図面を参照して説明する。
【００７５】
［ライト処理の処理手順］
図２１は、本技術の第３の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ１００よりライトコマンドを受け取ると、メモリコントローラ２００は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の指定ページアドレスとライトデータとを含んでいる。まず、ブロック選択処理（ステップＳ７１０）を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ書込み処理（ステップＳ７２０）を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は（ステップＳ７５２：Ｙｅｓ）、再度ページ書込みを実行する（ステップＳ７２０）。先に選択したブロック内で、次の書込みページが存在しない場合は（ステップＳ７５２：Ｎｏ）、処理はステップＳ７５５に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は（ステップＳ７５５：Ｙｅｓ）、再度Ｓ７１０からの処理を繰り返す。次の書込みブロックが存在しない場合は（ステップＳ７５５：Ｎｏ）、本ライト処理を終了する。
【００７６】
図２２は、本技術の第３の実施の形態におけるブロック選択処理（ステップＳ７１０）の処理手順の一例を示す図である。メモリコントローラ２００は、第２代替管理情報が生成されているか否かを調べる。その結果、第２代替管理情報が生成されていない場合は（ステップＳ７１１：Ｎｏ）、代替は発生していないため、指定ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ７１４）。第２代替管理情報が生成されている場合は（ステップＳ７１１：Ｙｅｓ）、ステップＳ７１２の処理に移る。メモリコントローラ２００は、ライト対象ブロックに対応する第２代替管理情報の代替ブロックフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ７１２：Ｙｅｓ）、代替ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ７１３）。代替を生じていない場合は（ステップＳ７１２：Ｎｏ）、前述したステップＳ７１４の処理に移る。
【００７７】
図２３は、本技術の第３の実施の形態におけるページ書込み処理の処理手順（ステップＳ７２０）の一例を示す図である。メモリコントローラ２００は、第１代替管理情報が作成されているか否かを調べる。その結果、第１代替管理情報が作成されていない場合は（ステップＳ７２１：Ｎｏ）、指定ページアドレスにデータ書込みを行う（ステップＳ７２４）。第１代替管理情報が作成されている場合は（ステップＳ７２１：Ｙｅｓ）、ステップＳ７２２の処理に移る。メモリコントローラ２００は、ライト対象ページに対応する第１代替管理情報の代替ページフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ７２２：Ｙｅｓ）、代替ページアドレスにデータ書込みを行う（ステップＳ７２３）。代替を生じていない場合は（ステップＳ７２２：Ｎｏ）、指定ページアドレスに書込みを行う（ステップＳ７２４）。その後、書込みエラーを生じなかった場合（ステップＳ７２５：Ｎｏ）、ページ書込み処理を終了する。
【００７８】
書込みエラーが生じた場合（ステップＳ７２５：Ｙｅｓ）、メモリコントローラ２００は、第１代替管理情報が生成されているか否かを調べる。その結果、第１代替管理情報が生成されていない場合は（ステップＳ７３１：Ｎｏ）、第１代替管理情報を生成し登録する（ステップＳ７３２）。なお、生成された第１代替管理情報は、代替管理情報バッファ２３０に保持され、以降の代替処理の際に使用される。その後、代替処理を行うため未使用代替ページを検索する（ステップＳ７３３）。これは、第１代替管理情報の代替ページ使用フラグがＯＮになっていない代替ページを検索することにより行う。その結果、未使用代替ページが存在する場合は（ステップＳ７３４：Ｙｅｓ）、第１代替管理情報の代替ページフラグをＯＮにし、代替ページアドレスに上記未使用代替ページのアドレスを設定し、代替ページ使用フラグをＯＮにする（ステップＳ７３６）。その後、処理はステップＳ７２３に戻り、再度データ書込みを行う。未使用代替ページが存在しない場合は（ステップＳ７３４：Ｎｏ）、代替ブロック処理（ステップＳ７４０）を実行後、ステップＳ７２１からの処理を再度実行する。
【００７９】
図２４は、本技術の第３の実施の形態における代替ブロック処理の処理手順（ステップＳ７４０）の一例を示す図である。メモリコントローラ２００は、第２代替管理情報が生成されているか否かを調べる。その結果、第２代替管理情報が生成されていない場合は（ステップＳ７４１：Ｎｏ）、第２代替管理情報を生成し登録する（ステップＳ７４２）。なお、生成された第２代替管理情報は、代替管理情報バッファ２３０に保持され、以降の代替処理の際に使用される。その後、未使用代替ブロック検索（ステップＳ７４３）を実行する。これは、第２代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合には（ステップＳ７４４：Ｎｏ）、代替不能となる。メモリコントローラ２００は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
【００８０】
未使用代替ブロックがある場合には（ステップＳ７４４：Ｙｅｓ）、メモリコントローラ２００は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする（ステップＳ７４５）。その後、第２代替管理情報の代替ブロックフラグをＯＮにし、代替ブロックアドレスに上記未使用代替ブロックのアドレスを設定し、代替ブロック使用フラグをＯＮにする（ステップＳ７４６）。その後、本代替ブロック処理を終了し、図２３において前述したページ書込み処理に戻る。この際、ホストコンピュータ１００により指定されたブロックのアドレスに代えて、本代替ブロック処理で確保した代替ブロックのアドレスに対し以降の処理（ステップＳ７２１以降）を行うこととなる。
【００８１】
［リード処理の処理手順］
図２５は、本技術の第３の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ１００よりリードコマンドを受け取ると、メモリコントローラ２００は、リード処理を開始する。なお、このリードコマンドは、指定ページアドレスを含んでいる。まず、ブロック選択処理（ステップ７６０）を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ読出し処理（ステップＳ７７０）を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は（ステップＳ７８２：Ｙｅｓ）、再度ページ読出し処理（ステップＳ７７０）を実行する。先に選択したブロック内で、次の読出しページが存在しない場合は（ステップＳ７８２：Ｎｏ）、処理はステップＳ７８５に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は（ステップＳ７８５：Ｙｅｓ）、再度ステップＳ７６０からの処理を繰り返す。次の読出しブロックが存在しない場合は（ステップＳ７８５：Ｎｏ）、本リード処理を終了する。
【００８２】
図２６は、本技術の第３の実施の形態におけるブロック選択処理（ステップＳ７６０）の処理手順の一例を示す図である。メモリコントローラ２００は、第２代替管理情報が生成されているか否かを調べる。その結果、第２代替管理情報が生成されていない場合は（ステップＳ７６１：Ｎｏ）、代替は発生していないため、指定ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ７６４）。第２代替管理情報が生成されている場合は（ステップＳ７６１：Ｙｅｓ）、ステップＳ７６２の処理に移る。メモリコントローラ２００は、リード対象ブロックに対応する第２代替管理情報の代替ブロックフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ７６２：Ｙｅｓ）、代替ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ７６３）。代替を生じていない場合は（ステップＳ７６２：Ｎｏ）、前述したステップＳ７６４の処理に移る。
【００８３】
図２７は、本技術の第３の実施の形態におけるページ読出し処理の処理手順（ステップＳ７７０）の一例を示す図である。メモリコントローラ２００は、第１代替管理情報が生成されているか否かを調べる。その結果、第１代替管理情報が生成されていない場合は（ステップＳ７７１：Ｎｏ）、代替は発生していないため、指定ページアドレスからデータ読出しを行う（ステップＳ７７４）。第１代替管理情報が生成されている場合は（ステップＳ７７１：Ｙｅｓ）、ステップＳ７７２の処理に移る。メモリコントローラ２００は、リード対象ページに対応する第１代替管理情報の代替ページフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ７７２：Ｙｅｓ）、代替ページアドレスからデータ読出しを行う（ステップＳ７７３）。代替を生じていない場合は（ステップＳ７７２：Ｎｏ）、指定ページアドレスからデータ読出しを行う（ステップＳ７７４）。その後ページ読出し処理を終了する。
【００８４】
本技術の第３の実施の形態では、代替処理が発生するまでは、代替管理情報を持たない。そのため、ブロック選択（ステップＳ７１０）、ページ書込み（ステップＳ７２０）等の処理において代替管理情報の代替ブロックフラグ、代替ページフラグを検索する処理を省くことができる。また、代替処理が発生するたびに、代替管理情報にデータを追加する方式であるため、代替管理情報サイズは発生した代替処理数に比例することとなる。
【００８５】
このように、本技術の第３の実施の形態によれば、第１および第２代替管理情報を動的に生成することにより、リードまたはライト処理を高速に行うことができる。特に、エラーページ発生確率が低い不揮発性メモリを使用した記憶装置のように、代替処理発生確率の低い記憶装置においてこの効果は顕著である。また、上述したように、必要に応じてデータを追加するため、代替管理情報サイズを必要最低限の大きさとすることもできる。
【００８６】
＜４．第４の実施の形態＞
上述の第１および第２の実施の形態では、不揮発性メモリのページがアクセスの最小単位であったが、本技術の第４の実施の形態は、不揮発性メモリのページがさらに複数のバンクにより構成された場合の実施の形態である。
システムとしての機能構成やメモリコントローラ２００、メモリ３００の構成は、本技術の第１の実施の形態と同様であるため、以下では説明を省略する。
【００８７】
［メモリ３００内の領域構成］
図２８は、本技術の第４の実施の形態における不揮発性メモリの領域構成例を示す図である。図２８は、不揮発性メモリ３２０内のページが、８個のバンクにより構成された場合の例である。メモリコントローラ２００からは、バンク単位でアクセス可能である。一方ホストコンピュータとは、ページ単位でデータの入出力を行い、高速な書込み及び読出しに対応することができる。また、本技術の第４の実施の形態では、第１の代替処理は、バンク単位の代替処理となる。具体的には、データ保存ページのバンクでエラーが発生した場合、代替ページに属する同じバンク番号のバンクと代替する。なお、エラーブロックの代替は、前述した第２の代替処理と同じとすることができる。なお、ページがさらに複数のバンクにより構成される不揮発性メモリは、特許請求の範囲に記載の不揮発性メモリの一例である。
【００８８】
ここで、２Ｇバイトの不揮発性メモリに本技術を適用する場合を考える。バンクサイズを５１２バイトとするとページサイズはその８倍の４０９６バイトとなる。ブロックサイズを３２ページにした場合には、ｍｄｂｅの値として、
ｍ＝１６３８４、ｄ＝１０２４、ｂ＝３２、ｅ＝２とすることができる。
【００８９】
図２９は、本技術の第４の実施の形態における第１代替管理情報例を示す図である。本技術の実施の形態における第１代替管理情報は、代替ページフラグ、代替ページアドレス、代替ページ使用フラグをバンクごとに有している。これ以外は、図５にて前述した第１代替管理情報と同様な構成とすることができる。また、第２代替管理情報は、図６に表した管理情報と同じとすることができる。
【００９０】
次に、上述の実施の形態におけるライトおよびリードの動作について図面を参照して説明する。なお、本実施の形態において、メモリコントローラ２００は、バンク番号を示すポインタ（Ｂａｎｋ）を保持する。以下の説明において、データ書込み、データ読出しはＢａｎｋで示されるバンクに対してのみ行う。また、第１代替管理情報に含まれる各フラグ等の操作も、Ｂａｎｋで示されるバンクに対応するフラグ等に対してのみ行う。
【００９１】
［ライト処理の処理手順］
図３０は、本技術の第４の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ１００よりライトコマンドを受け取ると、メモリコントローラ２００は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の指定ページアドレスとライトデータとを含んでいる。まず、ブロック選択処理（ステップ６１０）を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ書込み処理（ステップＳ６２０）を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は（ステップＳ６３２：Ｙｅｓ）、再度ページ書込みを実行する（ステップＳ６２０）。先に選択したブロック内で、次の書込みページが存在しない場合は（ステップＳ６３２：Ｎｏ）、処理はステップＳ６３５に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は（ステップＳ６３５：Ｙｅｓ）、再度Ｓ６１０からの処理を繰り返す。次の書込みブロックが存在しない場合は（ステップＳ６３５：Ｎｏ）、本ライト処理を終了する。
【００９２】
図３１は、本技術の第４の実施の形態におけるブロック選択処理（ステップＳ６１０）の処理手順の一例を示す図である。メモリコントローラ２００は、ライト対象ブロックに対応する第２代替管理情報の代替ブロックフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ６１２：Ｙｅｓ）、代替ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ６１３）。代替を生じていない場合は（ステップＳ６１２：Ｎｏ）、指定ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ６１４）。
【００９３】
図３２は、本技術の第４の実施の形態におけるページ書込み処理の処理手順（ステップＳ６２０）の一例を示す図である。メモリコントローラ２００は、Ｂａｎｋに０を設定し、初期化する（ステップＳ６２２）。次に、ライト対象ページに対応する第１代替管理情報の代替ページフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ６２３：Ｙｅｓ）、代替ページアドレスにデータ書込みを行う（ステップＳ６２４）。代替を生じていない場合は（ステップＳ６２３：Ｎｏ）、指定ページアドレスにデータ書込みを行う（ステップＳ６２５）。その後、書込みエラーを生じなかった場合は（ステップＳ６２６：Ｎｏ）、Ｂａｎｋをインクリメントする（ステップＳ６２７）。その結果、全てのバンクについて書込みが終了し、次のバンクが存在しない場合は（ステップＳ６２８：Ｎｏ）、ページ書込み処理を終了する。次のバンクが存在する場合は（ステップＳ６２８：Ｙｅｓ）、ステップＳ６２３からの処理を再度実行する。
【００９４】
書込みエラーを生じた場合（ステップＳ６２６：Ｙｅｓ）、メモリコントローラ２００は、代替処理を行うためエラー発生バンク（エラーバンク）に対応する未使用代替ページを検索する（ステップＳ６３３）。これは、第１代替管理情報のうちエラーバンクと同じバンク番号で、代替ページ使用フラグがＯＮになっていない代替ページのバンクを検索することにより行う。その結果、未使用代替ページが存在する場合は（ステップＳ６３４：Ｙｅｓ）、第１代替管理情報の代替ページフラグをＯＮにし、代替ページアドレスに上記未使用代替ページのアドレスを設定し、代替ページ使用フラグをＯＮにする（ステップＳ６３６）。その後、処理はステップＳ６２４に戻り、再度データ書込みを行う。代替ページのバンクを全て使用しているなどのように、未使用代替ページが存在しない場合は（ステップＳ６３４：Ｎｏ）、代替ブロック処理（ステップＳ６４０）を実行後、ページ書込み処理を再度実行する。
【００９５】
図３３は、本技術の第４の実施の形態における代替ブロック処理の処理手順（ステップＳ６４０）の一例を示す図である。メモリコントローラ２００は、未使用代替ブロック検索（ステップＳ６４３）を実行する。これは、第２代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合には（ステップＳ６４４：Ｎｏ）、代替不能となる。メモリコントローラ２００は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
【００９６】
未使用代替ブロックがある場合には（ステップＳ６４４：Ｙｅｓ）、メモリコントローラ２００は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする（ステップＳ６４５）。その後、第２代替管理情報の代替ブロックフラグをＯＮにし、代替ブロックアドレスに上記未使用代替ブロックのアドレスを設定し、代替ブロック使用フラグをＯＮにする（ステップＳ６４６）。その後、本代替ブロック処理を終了し、図３２において前述したページ書込み処理に戻る。この際、ホストコンピュータ１００により指定されたブロックのアドレスに代えて、本代替ブロック処理で確保した代替ブロックのアドレスに対し、以降の処理（ステップＳ６２３以降）を行うこととなる。
【００９７】
［リード処理の処理手順］
図３４は、本技術の第４の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ１００よりリードコマンドを受け取ると、メモリコントローラ２００は、リード処理を開始する。なお、このリードコマンドは、指定ページアドレスを含んでいる。まず、ブロック選択処理（ステップＳ６６０）を実行し、指定ページアドレスに対応するブロックを選択する。次に、ページ読出し処理（ステップＳ６７０）を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は（ステップＳ６８２：Ｙｅｓ）、再度ページ読出し処理（ステップＳ６７０）を実行する。先に選択したブロック内で、次の読出しページが存在しない場合は（ステップＳ６８２：Ｎｏ）、処理はステップＳ６８５に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は（ステップＳ６８５：Ｙｅｓ）、再度ステップＳ６６０からの処理を繰り返す。次の読出しブロックが存在しない場合は（ステップＳ６８５：Ｎｏ）、本リード処理を終了する。
【００９８】
図３５は、本技術の第４の実施の形態におけるブロック選択処理（ステップＳ６６０）の処理手順の一例を示す図である。メモリコントローラ２００は、リード対象ブロックに対応する第２代替管理情報の代替ブロックフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ６６２：Ｙｅｓ）、代替ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ６６３）。代替を生じていない場合は（ステップＳ６６２：Ｎｏ）、指定ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ６６４）。
【００９９】
図３６は、本技術の第４の実施の形態におけるページ読出し処理の処理手順（ステップＳ６７０）の一例を示す図である。メモリコントローラ２００は、Ｂａｎｋに０を設定し、初期化する（ステップＳ６７１）。次に、リード対象ページに対応する第１代替管理情報の代替ページフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ６７２：Ｙｅｓ）、代替ページアドレスからデータ読出しを行う（ステップＳ６７３）。代替を生じていない場合は（ステップＳ６７２：Ｎｏ）、指定ページアドレスからデータ読出しを行う（ステップＳ６７４）。その後、Ｂａｎｋをインクリメントする（ステップＳ６７５）。その結果、全てのバンクについて書込みが終了し、次のバンクが存在しない場合は（ステップＳ６７６：Ｎｏ）、ページ読出し処理を終了する。次のバンクが存在する場合は（ステップＳ６７６：Ｙｅｓ）、ステップＳ６７２からの処理を再度実行する。
【０１００】
このように、本技術の第４の実施の形態によれば、不揮発性メモリ３２０のページが複数のバンクよりなる場合であっても、第１の代替処理と第２の代替処理を行い、代替管理情報サイズを縮小することができる。
【０１０１】
＜５．第５の実施の形態＞
上述の第４の実施の形態では、論理ページをそのまま物理ページとして使用していたが、本技術の第５の実施の形態では、メモリコントローラ２００が論理ページアドレスから物理ページアドレスへのアドレス変換機能を備える。
【０１０２】
システムとしての機能構成やメモリコントローラ２００、メモリ３００の構成は、本技術の第１の実施の形態と同様である。また、不揮発性メモリの領域構成は、本技術の第４の実施の形態と同様であるため、以下では説明を省略する。
【０１０３】
図３７は、本技術の第５の実施の形態における第１代替管理情報例を示す図である。本技術の実施の形態における第１代替管理情報は、物理ページアドレス、物理ページ使用フラグ、物理ページ不良フラグをバンクごとに有している。これ以外は、図１４にて前述した第１代替管理情報と同様な構成とすることができる。また、第２代替管理情報は、図１５に表した管理情報と同じとすることができる。
【０１０４】
次に、上述の実施の形態におけるライトおよびリードの動作について図面を参照して説明する。バンク番号を示すポインタであるＢａｎｋの動作については、第５の実施の形態と同様である。
【０１０５】
［ライト処理の処理手順］
図３８は、本技術の第５の実施の形態におけるライト処理の処理手順の一例を示す図である。ホストコンピュータ１００よりライトコマンドを受け取ると、メモリコントローラ２００は、ライト処理を開始する。なお、このライトコマンドは、ライト対象の論理ページアドレスとライトデータとを含んでいる。まず、メモリコントローラ２００は、各バンクの物理ブロックアドレス取得（ステップＳ５１１）を実行する。これは、第２代替管理情報の第２アドレス変換テーブルから物理ブロックアドレスを取得することにより行う。次に、ページ書込み処理（ステップＳ５２０）を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は（ステップＳ５３２：Ｙｅｓ）、再度ページ書込み処理を実行する（ステップＳ５２０）。先に取得したブロック内で、次の書込みページが存在しない場合（ステップＳ５３２：Ｎｏ）は、処理はステップＳ５３５に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は（ステップＳ５３５：Ｙｅｓ）、再度Ｓ５１１からの処理を繰り返す。次の書込みブロックが存在しない場合は（ステップＳ５３５：Ｎｏ）、本ライト処理を終了する。
【０１０６】
図３９は、本技術の第５の実施の形態におけるページ書込み処理の処理手順（ステップＳ５２０）の一例を示す図である。メモリコントローラ２００は、Ｂａｎｋに０を設定し、初期化する（ステップＳ５２２）。次に、第１代替管理情報の第１アドレス変換テーブルからバンクの物理ページアドレスを取得し、この物理ページアドレスにデータ書込みを行う（ステップＳ５２３）。その後、書込みエラーを生じなかった場合は（ステップＳ５２５：Ｎｏ）、Ｂａｎｋをインクリメントする（ステップＳ５２６）。その結果、全てのバンクについて書込みが終了し、次のバンクが存在しない場合は（ステップＳ５２７：Ｎｏ）、ページ書込み処理を終了する。次のバンクが存在する場合は（ステップＳ５２７：Ｙｅｓ）、ステップＳ５２３からの処理を再度実行する。
【０１０７】
書込みエラーを生じた場合は（ステップＳ５２５：Ｙｅｓ）、メモリコントローラ２００は、この物理ページに対応する第１代替管理情報の物理ページ不良フラグをＯＮに設定する（ステップＳ５３２）。次に、代替処理を行うため未使用代替ページを検索する（ステップＳ５３３）。これは、第１代替管理情報のうちエラーバンクと同じバンク番号で、代替ページ使用フラグと代替ページ不良フラグが共にＯＮになっていない代替ページのバンクを検索することにより行う。その結果、未使用代替ページが存在する場合は（ステップＳ５３４：Ｙｅｓ）、この未使用代替ページに対応する第１代替管理情報の代替ページ使用フラグをＯＮに設定する。また、第１アドレス変換テーブルのライト対象論理ページアドレスに対応する物理ページアドレスとして、上記未使用代替ページのアドレスを設定する（ステップＳ５３６）。その後、処理はステップＳ５２３に戻り、再度データ書込みを行う。代替ページのバンクを全て使用しているなどのように、未使用代替ページが存在しない場合（ステップＳ５３４：Ｎｏ）には、代替ブロック処理（ステップＳ５４０）を実行後、ページ書込み処理を再度実行する。
【０１０８】
図４０は、本技術の第５の実施の形態における代替ブロック処理の処理手順（ステップＳ５４０）の一例を示す図である。メモリコントローラ２００は、エラーブロックに対応する第２管理情報の物理ブロック不良フラグをＯＮに設定する（ステップＳ５４２）。次に、未使用代替ブロック検索（ステップＳ５４３）を実行する。これは、第２代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合には（ステップＳ５４４：Ｎｏ）、代替不能となる。メモリコントローラ２００は、エラーの発生をホストコンピュータに通知し、書込み処理を終了する。
【０１０９】
未使用代替ブロックがある場合には（ステップＳ５４４：Ｙｅｓ）、メモリコントローラ２００は、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする（ステップＳ５４５）。その後、この代替ブロックに対応する第２代替管理情報の代替ブロック使用フラグをＯＮに設定する。また、ライト対象論理ページアドレスに対応する物理ページアドレスとして、第２代替管理情報の第２アドレス変換テーブルに上記未使用代替ページのアドレスを設定する（ステップＳ５４６）。その後、本代替ブロック処理を終了し、図３９において前述したページ書込み処理に戻る。この際、第２代替管理情報の第２アドレス変換テーブルに従い、本代替ブロック処理で確保した代替ブロックのアドレスに対し以降の処理（ステップＳ５２３以降）を行うこととなる。
【０１１０】
［リード処理の処理手順］
図４１は、本技術の第５の実施の形態におけるリード処理手順の一例を示す図である。ホストコンピュータ１００よりリードコマンドを受け取ると、メモリコントローラ２００は、リード処理を開始する。なお、このリードコマンドは、リード対象の指定ページアドレスを含んでいる。まず、各バンクの物理ブロックアドレス取得（ステップＳ５６１）を実行する。これは、第２代替管理情報の第２アドレス変換テーブルから物理ブロックアドレスを取得することにより行う。次に、この物理ブロックアドレスに対応する物理ブロック使用フラグを検索する。このフラグがＯＮすなわちブロックが使用中である場合は（ステップＳ５８１：Ｙｅｓ）、ページ読出し処理（ステップＳ５７０）を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は（ステップＳ５８２：Ｙｅｓ）、再度ページ読出し処理（ステップＳ５７０）を実行する。先に取得したブロック内に、次の読出しページが存在しない場合は（ステップＳ５８２：Ｎｏ）、処理はステップＳ５８５に移る。
【０１１１】
一方、ページが使用中でない場合は（ステップＳ５８１：Ｎｏ）、ホストコンピュータ１００に規定データを出力する（ステップＳ５８３）。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は（ステップＳ５８４：Ｙｅｓ）、再度規定データを出力する（ステップＳ５８３）。次の読出しページが存在しない場合は（ステップＳ５８４：Ｎｏ）、処理はステップＳ５８５に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は（ステップＳ５８５：Ｙｅｓ）、再度ステップＳ５６１からの処理を繰り返す。次の読出しブロックが存在しない場合は（ステップＳ５８５：Ｎｏ）、本リード処理を終了する。
【０１１２】
図４２は、本技術の第５の実施の形態におけるページ読出し処理の処理手順（ステップＳ５７０）の一例を示す図である。メモリコントローラ２００は、リード対象ページに対応する第１代替管理情報の第１アドレス変換テーブルから物理ページアドレスを取得し、この物理ページアドレスに対応する物理ページ使用フラグを検索する。このフラグがＯＮすなわちページが使用中の場合は（ステップＳ５７１：Ｙｅｓ）、メモリコントローラ２００は、Ｂａｎｋに０を設定し、初期化する（ステップＳ５７２）。物理ページアドレスからデータ読出しを行う（ステップＳ５７３）。その後、Ｂａｎｋのインクリメントを行う（ステップＳ５７５）。その結果、全てのバンクについて書込みが終了し、次のバンクが存在しない場合は（ステップＳ５７６：Ｎｏ）、ページ読出し処理を終了する。次のバンクが存在する場合は（ステップＳ５７６：Ｙｅｓ）、ステップＳ５７３からの処理を再度実行する。一方、ページが使用中でない場合は（ステップＳ５７１：Ｎｏ）、ホストコンピュータ１００に規定データを出力し（ステップＳ５７４）、ページ読出し処理を終了する。
【０１１３】
このように、本技術の第５の実施の形態によれば、不揮発性メモリ３２０のページが複数のバンクよりなる場合であっても、第１の代替処理と第２の代替処理を行い、代替管理情報サイズを縮小することができる。また、メモリコントローラ２００がアドレス変換機能を持っているため、特定ページへのアクセス集中を防ぐことができる。
【０１１４】
＜６．第６の実施の形態＞
上述の第１乃至第５の実施の形態では、メモリコントローラ２００が、第１および第２の代替処理を行っていた。これに対し、本技術の第６の実施の形態では、第１の代替処理をメモリコントローラで行い、第２の代替処理をホストコンピュータが行う。この場合、ホストコンピュータによるファイルシステム管理情報に第２代替管理情報を含ませて、ブロック単位の代替処理を行うことも可能となる。
【０１１５】
図４３は、本技術の第６の実施の形態におけるメモリコントローラの構成例を示す図である。メモリコントローラ２７０は、前述したメモリコントローラ２００から第２代替処理部２６０を除いた構成とすることができる。これ以外のメモリコントローラの構成、システムとしての機能構成等は本技術の第１の実施の形態と同様であるため、以下では説明を省略する。
【０１１６】
次に、上述の実施の形態におけるライトおよびリード処理について図面を参照して説明する。なお、本技術の第６の実施の形態では、図５および図６にて前述した第１および第２代替管理情報を使用する。このうち、第２代替管理情報はホストコンピュータ内のメモリに保持される。また、第２の代替処理はホストコンピュータが行うため、メモリコントローラ２７０のほかホストコンピュータ１００における代替処理部分の手順も記載した。なお、第２の代替処理を行うホストコンピュータ１００は、特許請求の範囲に記載のホストコンピュータの一例である。
【０１１７】
［ライト処理の処理手順］
図４４は、本技術の第６の実施の形態におけるホストコンピュータによるライト処理手順の一例を示す図である。ホストコンピュータ１００は、ライト対象ページが属するブロックについて、対応する第２代替管理情報の代替ブロックフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ４１２：Ｙｅｓ）、代替ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ４１３）。つまり、代替ブロックのページアドレスを使用して、ライト処理を行う。一方、代替を生じていない場合は（ステップＳ４１２：Ｎｏ）、指定ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ４１４）。つまり、ライト対象ページのアドレスを使用してライト処理を行う。ホストコンピュータ１００は、以上の処理により得られたページアドレスをライトコマンドに含め、メモリコントローラ２７０に対し発行する（ステップＳ４１５）。メモリコントローラ２７０からの応答を待ち、書込みエラーが返されなかった場合は（ステップＳ４１６：Ｎｏ）、ライト処理を終了する。
【０１１８】
書込みエラーが返された場合（ステップＳ４１６：Ｙｅｓ）、ホストコンピュータ１００は、代替ブロック処理（ステップＳ４４０）を実施し、再度ステップＳ４１２からの処理を実施する。
【０１１９】
図４５は、本技術の第６の実施の形態におけるホストコンピュータによる代替ブロック処理の処理手順（ステップＳ４４０）の一例を示す図である。ホストコンピュータ１００は、未使用代替ブロック検索（ステップＳ４４３）を実行する。これは、第２代替管理情報の代替ブロック使用フラグを検索することにより行う。その結果、未使用代替ブロックがない場合には（ステップＳ４４４：Ｎｏ）、代替不能となる。ホストコンピュータ１００は、本書込み処理をエラー終了する。
【０１２０】
未使用代替ブロックがある場合には（ステップＳ４４４：Ｙｅｓ）、指定ブロックに含まれる全ページに保存されているデータを上記未使用代替ブロックのページにコピーする（ステップＳ４４５）。これは、ホストコンピュータ１００が、メモリコントローラ２７０に指示を出すことにより実行される。その後、第２代替管理情報の代替ブロックフラグをＯＮにし、代替ブロックアドレスに上記未使用代替ブロックのアドレスを設定し、代替ブロック使用フラグをＯＮにする（ステップＳ４４６）。本代替ブロック処理を終了し、図４４において前述したライト処理に戻る。
【０１２１】
図４６は、本技術の第６の実施の形態におけるメモリコントローラによるライト処理手順の一例を示す図である。図４４で前述した、ライトコマンド発行（ステップＳ４１５）により、ホストコンピュータ１００から発行されたライトコマンドをメモリコントローラ２７０が受け取ると、メモリコントローラ２７０は、ライト処理を開始する。本実施の形態では、ホストコンピュータ１００により、第２の代替処理が行われているため、メモリコントローラ２７０は、常に指定ブロックアドレスを使用して、以降の処理を行うこととなる（ステップＳ４０９）。次に、ページ書込み処理（ステップＳ４２０）を実行する。ライト処理が複数のページにわたる場合に、次の書込みページが存在する場合は（ステップＳ４３２：Ｙｅｓ）、再度ページ書込みを実行する（ステップＳ４２０）。次の書込みページが存在しない場合（ステップＳ４３２：Ｎｏ）は、処理はステップＳ４３５に移る。ライト処理が複数のブロックにわたる場合に、次の書込みブロックが存在する場合は（ステップＳ４３５：Ｙｅｓ）、再度Ｓ４０９からの処理を繰り返す。次の書込みブロックが存在しない場合は（ステップＳ４３５：Ｎｏ）、本ライト処理を終了する。
【０１２２】
図４７は、本技術の第６の実施の形態におけるメモリコントローラによるページ書込み処理の処理手順（ステップＳ４２０）の一例を示す図である。メモリコントローラ２７０は、ライト対象ページに対応する第１代替管理情報の代替ページフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ４２２：Ｙｅｓ）、代替ページアドレスにデータ書込みを行う（ステップＳ４２３）。代替を生じていない場合は（ステップＳ４２２：Ｎｏ）、指定ページアドレスにデータ書込みを行う（ステップＳ４２４）。その後、書込みエラーを生じなかった場合（ステップＳ４２５：Ｎｏ）は、ページ書込み処理を終了する。
【０１２３】
書込みエラーを生じた場合（ステップＳ４２５：Ｙｅｓ）、メモリコントローラ２７０は、代替処理を行うため未使用代替ページを検索する（ステップＳ４３３）。これは、第１代替管理情報の代替ページ使用フラグがＯＮになっていない代替ページを検索することにより行う。その結果、未使用代替ページが存在する場合（ステップＳ４３４：Ｙｅｓ）には、第１代替管理情報の代替ページフラグをＯＮにし、代替ページアドレスに上記未使用代替ページのアドレスを設定し、代替ページ使用フラグをＯＮにする（ステップＳ４３６）。その後、処理はステップＳ４２３に戻り、再度データ書込みを行う。代替ページを全て使用しているなどのように、未使用代替ページが存在しない場合（ステップＳ４３４：Ｎｏ）には、エラー終了となる。この場合、メモリコントローラ２７０は書込みエラーとなった旨をホストコンピュータ１００に通知する。図４４にて前述したとおり、ホストコンピュータ１００で代替ブロック処理（ステップＳ４４０）が実行される。
【０１２４】
［リード処理の処理手順］
図４８は、本技術の第６の実施の形態におけるホストコンピュータによるリード処理手順の一例を示す図である。ホストコンピュータ１００は、リード対象ページが属するブロックについて、対応する第２代替管理情報の代替ブロックフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ４６２：Ｙｅｓ）、代替ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ４６３）。つまり、代替ブロックのページアドレスを使用して、リード処理を行う。一方、代替を生じていない場合は（ステップＳ４６２：Ｎｏ）、指定ブロックアドレスを使用して以降の処理を行うよう設定する（ステップＳ４６４）。つまり、リード対象ページのアドレスを使用して以降の処理を行う。ホストコンピュータ１００は、以上の処理により得られたページアドレスをリードコマンドに含め、メモリコントローラ２７０に対し発行する（ステップＳ４６５）。メモリコントローラ２７０からのリードデータ入力（ステップＳ４６６）を待って、リード処理を終了する。
【０１２５】
図４９は、本技術の第６の実施の形態におけるメモリコントローラによるリード処理手順の一例を示す図である。図４８で前述した、リードコマンド発行（ステップＳ４６５）により、ホストコンピュータ１００から発行されたリードコマンドをメモリコントローラ２７０が受け取ると、メモリコントローラ２７０は、リード処理を開始する。本実施の形態では、ホストコンピュータ１００により、第２の代替処理が行われているため、メモリコントローラ２７０は、常に指定ブロックアドレスを使用することとなる（ステップＳ４６９）。次に、ページ読出し処理（ステップＳ４７０）を実行する。リード処理が複数のページにわたる場合に、次の読出しページが存在する場合は（ステップＳ４８２：Ｙｅｓ）、再度ページ読出しを実行する（ステップＳ４７０）。次の読出しページが存在しない場合（ステップＳ４８２：Ｎｏ）は、処理はステップＳ４８５に移る。リード処理が複数のブロックにわたる場合に、次の読出しブロックが存在する場合は（ステップＳ４８５：Ｙｅｓ）、再度Ｓ４６９からの処理を繰り返す。次の読出しブロックが存在しない場合は（ステップＳ４３５：Ｎｏ）、本リード処理を終了する。
【０１２６】
図５０は、本技術の第６の実施の形態におけるメモリコントローラによるページ読出し処理の処理手順（ステップＳ４７０）の一例を示す図である。メモリコントローラ２７０は、リード対象ページに対応する第１代替管理情報の代替ページフラグを検索する。このフラグがＯＮすなわち代替を生じている場合は（ステップＳ４７２：Ｙｅｓ）、代替ページアドレスからデータ読出しを行う（ステップＳ４７３）。代替を生じていない場合は（ステップＳ４７２：Ｎｏ）、指定ページアドレスからデータ読出しを行う（ステップＳ４７４）。その後、ページ読出し処理を終了する。
【０１２７】
以上説明した本技術の第６の実施の形態では、第２の代替処理をホストコンピュータにより行うため、ホストコンピュータにおけるファイルシステム管理機能の一部として、第２の代替処理を行うことも可能である。具体的には、ファイルシステムの管理をブロック単位で行い、エラーブロックを代替する際には、代替ブロックを用いて代替を行う。ファイルシステム管理情報に第２代替管理情報である代替ブロックフラグ、代替ブロックアドレス等を含ませて、ファイルシステム管理の一部として第２の代替処理を行う。
【０１２８】
このように、本技術の第６の実施の形態によれば、メモリコントローラは、第１の代替処理のみを行うため、代替管理情報を保持する代替管理情報バッファ２３０の容量を小さくすることができる。
【０１２９】
＜７．変形例＞
［第１代替管理情報の一部を代替管理情報バッファに転送する例］
第１代替管理情報は、各ブロックの管理情報の集合体であるため、その一部のみを取出すことが可能である。そこで、ホストコンピュータ１００による処理に必要となるブロックの管理情報だけを代替管理情報バッファ２３０に転送し、使用する構成とすることもできる。
【０１３０】
このように、第１代替管理情報の一部を代替管理情報バッファ２３０に転送することにより、代替管理情報バッファ２３０の容量をさらに小さくすることができる。
【０１３１】
［不要な第１代替管理情報を削除する例］
エラーブロックが生じると第２の代替処理が行われるため、このブロックに関する第１代替管理情報は今後参照されることはない。そのため、第２の代替処理が行われるたびにこの不要となった第１代替管理情報を削除する構成としてもよい。
【０１３２】
このように、不要な第１代替管理情報の一部を削除することにより、第１代替管理情報サイズを削減することができる。
【０１３３】
［不揮発性メモリに合った、代替ページ数および代替ブロック数にする例］
総ページ数に対する代替ページ数の割合を使用する不揮発性メモリにおける総ページ数当たりのエラーページ発生割合の期待値に近い構成にすることも可能である。同様に、総ブロック数に対する代替ブロック数の割合を使用する不揮発性メモリにおける総ブロック数当たりのエラーブロック発生割合の期待値に近い構成にすることも可能である。このような構成とすることにより、必要以上に代替ページおよびブロックを用意することなく、予想されるエラー発生に適応可能な代替機能を提供することができる。
【０１３４】
例えば、図４にて前述した２Ｇバイト不揮発性メモリでは、ｍ＝１３１０７２、ｄ＝８１９２、ｂ＝３２、ｅ＝２および、ｍ＝１６３８４、ｄ＝１０２４、ｂ＝３２、ｅ＝２の２つの例を示した。ブロック内の総ページ数に対する代替ブロック数の割合（ｍ／ｄ）と総ブロック数に対する代替ブロック数の割合（ｅ／ｂ）は、いずれも０．０６２５である。これらを夫々上述したエラーページ発生割合の期待値およびエラーブロック発生割合の期待値と近い値とすることができる。
【０１３５】
このように、総ページ数に対する代替ページ数および総ブロック数に対する代替ブロック数の割合を使用する不揮発性メモリにおけるエラーページおよびエラーブロック発生割合の期待値に近い構成にすることにより、メモリ使用効率を高める効果が得られる。
【０１３６】
なお、総ページ数に対する代替ページ数および総ブロック数に対する代替ブロック数の割合が使用する不揮発性メモリにおけるエラーページおよびエラーブロック発生割合の期待値に近い構成は、特許請求の範囲に記載の不揮発性メモリの構成の一例である。
【０１３７】
以上説明したように、本技術の実施の形態によれば、ブロック内におけるページ単位の代替処理とブロック単位の代替処理とを実施し、代替処理によって消費されるメモリの容量を削減し、また、これらに必要となる代替管理情報を縮小することができる。
【０１３８】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１３９】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよい。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１４０】
なお、本技術は以下のような構成もとることができる。
（１）不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラ。
（２）前記エラーページと前記代替ページとの対応関係を示す第１の管理情報を保持する第１の管理情報バッファと、
前記代替ページが不足したブロックと前記代替ブロックとの対応関係を示す第２の管理情報を保持する第２の管理情報バッファと
を具備する前記（１）に記載のメモリコントローラ。
（３）前記エラーページが最初に発生したときに前記第１の管理情報を作成し、前記代替ページが不足するブロックが最初に発生したときに前記第２の管理情報を作成する前記（２）に記載のメモリコントローラ。
（４）指定されたページの論理アドレスをページの物理アドレスに変換し、前記エラーページを代替する際には前記エラーページの物理アドレスに代えて前記代替ページの物理アドレスに論理アドレスを変換し、前記代替ページが不足したときには前記代替ブロックに属するページの物理アドレスに論理アドレスを変換するアドレス変換部を具備する前記（１）または（２）に記載のメモリコントローラ。
（５）前記ページはさらに複数のバンクからなり、前記エラーページを代替する際には前記代替ページに属するバンクによって当該エラーページに属するエラーバンクをバンク単位で代替し、前記エラーページの属するブロックにおいて前記代替ページに属するバンクが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページに属するバンクによって前記エラーバンクを代替する前記（１）から（４）のいずれかに記載のメモリコントローラ。
（６）不揮発性メモリと、
前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラと
を具備する記憶装置。
（７）前記不揮発性メモリは、前記ブロックに割り当てられた前記代替ページ数が前記ブロックに含まれるページ数におけるエラーページの発生数の期待値と略一致するよう構成され、前記代替ブロック数が全ブロック数に対する前記代替ページが不足したブロックの発生数の期待値と略一致するよう構成される前記（６）に記載の記憶装置。
（８）前記不揮発性メモリは、前記エラーページと前記代替ページとの対応関係を示す第１の管理情報と前記代替ページが不足したブロックと前記代替ブロックとの対応関係を示す第２の管理情報とを記憶し、
前記メモリコントローラは、
前記第１の管理情報を保持する第１の管理情報バッファと、
前記第２の管理情報を保持する第２の管理情報バッファと
を備える前記（６）に記載の記憶装置。
（９）不揮発性メモリと、
前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替し、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替するメモリコントローラと、
前記メモリコントローラを介して前記不揮発性メモリにアクセスするホストコンピュータと
を具備する情報処理システム。
（１０）不揮発性メモリと、
前記不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替するメモリコントローラと、
前記メモリコントローラを介して前記不揮発性メモリにアクセスするホストコンピュータと
を具備し、
前記ホストコンピュータは、前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックにアクセス先を変更して当該代替ブロックに属するページによって前記エラーページを代替する
情報処理システム。
（１１）不揮発性メモリの複数のページからなるブロックにおいてエラーページを代替する際には前記エラーページの属するブロックに割り当てられた代替ページによって前記エラーページを代替する手順と、
前記エラーページの属するブロックにおいて前記代替ページが不足したときには前記エラーページの属するブロックとは異なる代替ブロックを新たに確保して当該代替ブロックに属するページによって前記エラーページを代替する手順と
を具備する不揮発性メモリの制御方法。
【符号の説明】
【０１４１】
１００  ホストコンピュータ
１０９  メモリコントローラインターフェース
１１０  プロセッサ
２００  メモリコントローラ
２１０  制御部
２２０  データバッファ
２３０  代替管理情報バッファ
２５０  第１代替処理部
２６０  第２代替処理部
２７０  メモリコントローラ
３００  メモリ
３０９  メモリコントローラインターフェース
３１０  制御部
３２０  不揮発性メモリ
３３０  データブロック領域
３４０  代替ブロック領域
【図１】
2015166993.tif 000003
【図２】
2015166993.tif 000004
【図３】
2015166993.tif 000005
【図４】
2015166993.tif 000006
【図５】
2015166993.tif 000007
【図６】
2015166993.tif 000008
【図７】
2015166993.tif 000009
【図８】
2015166993.tif 000010
【図９】
2015166993.tif 000011
【図１０】
2015166993.tif 000012
【図１１】
2015166993.tif 000013
【図１２】
2015166993.tif 000014
【図１３】
2015166993.tif 000015
【図１４】
2015166993.tif 000016
【図１５】
2015166993.tif 000017
【図１６】
2015166993.tif 000018
【図１７】
2015166993.tif 000019
【図１８】
2015166993.tif 000020
【図１９】
2015166993.tif 000021
【図２０】
2015166993.tif 000022
【図２１】
2015166993.tif 000023
【図２２】
2015166993.tif 000024
【図２３】
2015166993.tif 000025
【図２４】
2015166993.tif 000026
【図２５】
2015166993.tif 000027
【図２６】
2015166993.tif 000028
【図２７】
2015166993.tif 000029
【図２８】
2015166993.tif 000030
【図２９】
2015166993.tif 000031
【図３０】
2015166993.tif 000032
【図３１】
2015166993.tif 000033
【図３２】
2015166993.tif 000034
【図３３】
2015166993.tif 000035
【図３４】
2015166993.tif 000036
【図３５】
2015166993.tif 000037
【図３６】
2015166993.tif 000038
【図３７】
2015166993.tif 000039
【図３８】
2015166993.tif 000040
【図３９】
2015166993.tif 000041
【図４０】
2015166993.tif 000042
【図４１】
2015166993.tif 000043
【図４２】
2015166993.tif 000044
【図４３】
2015166993.tif 000045
【図４４】
2015166993.tif 000046
【図４５】
2015166993.tif 000047
【図４６】
2015166993.tif 000048
【図４７】
2015166993.tif 000049
【図４８】
2015166993.tif 000050
【図４９】
2015166993.tif 000051
【図５０】
2015166993.tif 000052