(57)【要約】      （修正有）【課題】記憶装置の信頼性と製品寿命を向上させる。【解決手段】記憶装置４は，データを記憶可能な複数のセクタ１１を有するメモリ１０と，このメモリ１０を管理するコントローラ２０とを備える。メモリ１０は，一又は複数のセクタ１１によって構成された複数の領域１２を有し，複数の領域１２のうちの２つ以上には同一のデータが書き込まれている。コントローラ２０は，セクタ１１からデータを読み出す回数の閾値を設定しており，セクタ１１からデータを読み出した回数をカウントする。そして，ある領域１２を構成するセクタ１１からデータを読み出した回数が閾値と同じかこれを超過した場合，当該ある領域１２と同じデータが書き込まれている他の領域１２からデータを読み出す。【選択図】図２
2017097390.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶可能な複数のセクタ（１１）を有するメモリ（１０）と，
前記メモリ（１０）を管理するコントローラ（２０）と，を備える
記憶装置であって，
前記メモリ（１０）は，
一又は複数の前記セクタ（１１）によって構成された複数の領域（１２）を有し，
前記複数の領域（１２）のうちの２つ以上には，同一のデータが書き込まれており，
前記コントローラ（２０）は，
前記セクタ（１１）からデータを読み出す回数の閾値を設定しており，
前記セクタ（１１）からデータを読み出した回数をカウント可能であり，
ある領域（１２）を構成する前記セクタ（１１）からデータを読み出した回数が前記閾値と同じかこれを超過した場合，当該ある領域（１２）と同じデータが書き込まれている他の領域（１２）からデータを読み出す
記憶装置。
【請求項２】
前記コントローラ（２０）は，ある領域（１２）を構成する前記セクタ（１１）のうちのいずれか１つのデータ読み出し回数が前記閾値と同じかこれを超過した場合，当該ある領域（１２）と同じデータが書き込まれている他の領域（１２）からデータを読み出す
請求項１に記載の記憶装置。
【請求項３】
前記コントローラ（２０）は，ある領域（１２）を構成する前記セクタ（１１）からデータを読み出した回数が前記閾値と同じかこれを超過した場合，或いは前記閾値までの回数が所定値以下となった場合に，当該ある領域と同じデータをさらに別の領域（１２）に書き込む
請求項１に記載の記憶装置。
【請求項４】
請求項１に記載の記憶装置を備える情報処理装置。
【請求項５】
データを記憶可能な複数のセクタ（１１）を有するメモリ（１０）と，
前記メモリ（１０）を管理するコントローラ（２０）と，を備える
記憶装置の記憶領域管理方法であって，
前記メモリ（１０）は，
一又は複数の前記セクタ（１１）によって構成された複数の領域（１２）を有し，
前記複数の領域（１２）のうちの２つ以上には，同一のデータが書き込まれ，
前記コントローラ（２０）によって，前記セクタ（１１）からデータを読み出す回数の閾値が設定されており，
前記コントローラ（２０）が，
前記セクタ（１１）からデータを読み出した回数をカウントする工程と，
ある領域（１２）を構成する前記セクタ（１１）からデータを読み出した回数が前記閾値と同じかこれを超過した場合，当該ある領域（１２）と同じデータが書き込まれている他の領域（１２）からデータを読み出す工程と，を実行する
記憶領域管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，不揮発性メモリなどの記憶装置，及びその記憶領域の管理方法に関する。具体的に説明すると，本発明は，記憶装置の信頼性と製品寿命を向上させる技術に関するものである。
【背景技術】
【０００２】
例えばＮＡＮＤ型フラッシュメモリやＲＯＭ（Read Only Memory）などの不揮発性記憶装置は，データの読み出し回数が一定値を超えるとデータを保持する記憶素子が正しく読み出せず，信頼性を確保出来ない。このように，従来から記憶装置にはデータの読み出し回数に物理的な制限があり，この制限された回数を超えてデータの読み出しを行うと，信頼性が低下し，保持したデータを失うおそれがあった。このため，記憶装置に保持されるデータの信頼性と製品寿命を向上させるために，様々な技術が提案されている（特許文献１等）。
【０００３】
特許文献１には，予備領域を有する記憶媒体の管理方法が開示されている。この管理方法では，記憶媒体の初期容量，予備領域容量，及びＳＭＡＲＴ情報（Self-Monitoring, Analysis and Reporting Technology）を特定し，この初期容量及び予備領域容量に対して，ＳＭＡＲＴ情報に基づいて，記憶媒体のうち，障害発生領域に関して予備領域を用いて実際に利用可能な容量を特定し，特定された利用可能な容量を用いて，記憶媒体の使用可能領域の容量を特定する。このように，実際に使用可能な容量を示すことにより，媒体の寿命を延ばすことや，寿命をコントロールすること，さらには寿命になった際の振舞い（ライトプロテクト，リードオンリーなど）を指定することができるとされている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１４９１１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示された従来技術は，利用可能な領域を初期容量と予備領域容量とに分けて管理している。しかし，仮に障害発生領域の容量が初期容量と予備領域容量を超える場合には利用可能領域がゼロとなり，結果として記憶媒体として機能しなくなるおそれがある。
【０００６】
また，特許文献１に記載されているように，不揮発性メモリなどの記憶装置には予備領域が存在しており，コントローラがエラーの多数発生したセクタを含むブロックを不良ブロックと見做し，この不良ブロックを予備領域のブロックと代替することで，媒体の初期容量を保つ。そして，この予備領域が無くなったときを記憶装置の寿命としていた。しかし，ＲＯＭといった読み出し専用の記憶装置では，必ずしも記憶装置の初期容量を保つ必要はなく，必要なデータを正確に読み出すことができるのであれば，予備領域を超えて障害発生領域が拡大し，記憶容量が初期容量を下回った場合であっても，問題なく使用し続けることができる。このため，従来技術のように予備領域が無くなったときを記憶装置の寿命として捉えると，ＲＯＭなどの製品においては実際には使用を継続できるにも関わらず，製品の寿命が到来したものとして廃棄されてしまうという問題があった。
【０００７】
そこで，本発明は，不揮発性メモリなどの記憶装置において，データの読み出し可能回数を増加させて製品寿命を向上させることを解決課題とする。本発明は，特にＲＯＭの信頼性と製品寿命を向上させることを目的とするものである。
【課題を解決するための手段】
【０００８】
本発明の発明者らは，従来発明が抱える問題の解決手段について鋭意検討した結果，多数のセクタによって構成されたメモリを複数の領域に区分し，この領域の２つ以上に同一のデータを予め書き込んでおき，ある領域を構成するセクタからのデータの読み出し回数が所定の閾値と同じかこれを超過したときには，他の領域を構成するセクタから同じデータを読み出すことで，データの読み出し処理における信頼性と製品寿命を向上させることができるという知見を得た。また，従来は予備セクタを含むブロックを置き換えていたが，周辺ブロックの読み出し回数も制限値を超えている可能性があり，頻繁にブロック置き換えをしないといけない点，またメモリの大容量化してきたことで，冗長性を持たせた複数の領域に同一データを記録することを考えた。本発明者らは，上記知見に基づけば，従来技術の課題を解決できることに想到し，本発明を完成させた。具体的に説明すると，本発明は以下の構成・工程を有する。
【０００９】
本発明の第１の側面は，不揮発性メモリなどの記憶装置に関する。
本発明の記憶装置は，データを記憶可能な複数のセクタ１１を有するメモリ１０と，このメモリ１０を管理するコントローラ２０とを備える。
メモリ１０は，一又は複数のセクタ１１によって構成された複数の領域１２を有しており，複数の領域１２のうちの２つ以上には，同一のデータが書き込まれている。つまり，１つの領域には１つのデータが書き込まれており，同じデータが書き込まれた領域が複数存在することとなる。このように，あるデータはメモリ１０内に複数倍に冗長化して記憶される。
コントローラ２０は，各領域１２を構成する各セクタ１１からデータを読み出す回数（以下「リード回数」ともいう。）の閾値を任意に設定する。セクタ１１からデータを読み出すことのできる回数には物理的の制限があり，この制限を超えるとセクタ１１は故障し，それ以上データを読み出すことができなくなるか，読み出したデータのエラー率が高まる。このため，コントローラ２０は，セクタ１１が故障しないように，任意の閾値を物理的な制限回数以下に設定することが好ましい。
また，コントローラ２０は，各領域１２を構成する各セクタ１１からデータを読み出した回数をカウントする。このとき，コントローラ２０は，領域１２ごとではなく，セクタ１１ごとにデータの読み出し回数をカウントする。
そして，コントローラ２０は，ある領域１２を構成するセクタ１１からデータを読み出した回数が所定の閾値と同じかこれを超過した場合，当該ある領域１２と同じデータが書き込まれている他の領域１２を構成するセクタ１１からデータを読み出す。このように，コントローラ２０は，ある領域１２のセクタ１１からのデータ読み出し回数が所定の閾値と同じ値となったと判断した場合，或いは閾値を超過したと判断した場合には，そのセクタ１１からのデータの読み出しは中止し，同じデータを記憶する他の領域１２のセクタ１１の読み出しを行うように切り替える。
【００１０】
上記構成のように，セクタ１１からのデータの読み出し回数に任意の閾値を設け，その閾値を超えたときには別のセクタ１１からデータの読み出しを開始することで，セクタ１１が故障する前にデータの読み出し箇所を切り替えることが可能となる。このため，セクタ１１の故障が原因でデータを読み出すことができなかったり，或いは読み出したデータのエラー率が高くなるといった問題を解消でき，結果として，読み出し処理の信頼性を向上させることができる。さらに，同じ内容のデータが複数の領域に冗長化して書き込まれているため，１つの領域からデータを読み出すことができなくなった場合でも，他の領域からのデータの読み出しが可能となる。これにより，仮にある領域を構成するセクタ全体が閾値を同時に超えた場合でも，次の領域からのデータの読み出しが可能であり，記憶装置として継続使用が可能となる。従って，データを複製した数だけ記憶装置の寿命を向上させることができる。このように，本発明によれば，同じデータを複数の領域に記憶する必要があるため，データの記憶容量が犠牲にはなるが，データ読み出し処理の信頼性と製品寿命を飛躍的に向上させることができる。
【００１１】
本発明の記憶装置において，コントローラ２０は，ある領域１２を構成するセクタ１１のうちのいずれか１つのデータ読み出し回数が閾値と同じかこれを超過した場合，当該ある領域１２と同じデータが書き込まれている他の領域１２からデータを読み出すことが好ましい。
【００１２】
上記構成のように，ある領域１２を構成するセクタ１１のうち，１つでもデータ読み出し回数が所定の閾値と同じかこれを超過した場合には，他のセクタ１１については未だ所定の閾値を超えていなくても，別の領域１２からデータを読み出すようにする。これにより，より確実に所望のデータを読み出すことが可能となり，記憶装置の信頼性をさらに向上させることができる。
【００１３】
本発明の記憶装置において，コントローラ２０は，ある領域１２を構成するセクタ１１からデータを読み出した回数が閾値と同じかこれを超過した場合，或いは閾値と同じかこれを超過する前に，当該ある領域と同じデータをさらに別の領域１２に書き込むことが好ましい。具体的には，コントローラ２０は，セクタ１１からのリード回数が任意の閾値を超えたとき，或いは閾値までの回数が所定値以下となったときに，メモリ１０内にデータの書き込みに利用できる領域があるかどうかを確認する。そして，データの書き込みに利用できる領域が存在している場合には，その領域にデータの書き込みを行う。
【００１４】
上記構成のように，コントローラ２０にデータの書き込み機能を付加することで，データの読み出し状況やセクタ１１の故障状況に応じて，必要なデータを必要な領域に書き込むことが可能となる。例えば，第１のデータが頻繁に読み出されており，他のデータよりも読み出し回数が多い場合，第１のデータを記憶する領域のセクタの故障率が高くなることが想定される。その場合，コントローラ２０の判断により，第１のデータをさらに別の領域に書き込むことで，メモリ１０から第１のデータを継続的に読み出すことが可能となる。
【００１５】
本発明の第２の側面は，上記第１の側面に係る記憶装置を備えた情報処理装置に関する。情報処理装置としては，汎用的なパーソナルコンピュータ，パチンコやスロットマシンなどの遊技機，或いはゲーム装置を例に挙げることができる。
【００１６】
本発明の第２の側面は，記憶装置の記憶領域管理方法である。
記憶装置は，上記した第１の側面と同様に，データを記憶可能な複数のセクタ１１を有するメモリ１０と，このメモリ１０を管理するコントローラ２０とを備える。また，メモリ１０は，一又は複数のセクタ１１によって構成された複数の領域１２を有し，複数の領域１２のうちの２つ以上には同一のデータが書き込まれ，コントローラ２０によってセクタ１１からデータを読み出す回数の閾値が設定されている。
そして，本発明に係る記憶領域の管理方法では，コントローラ２０が，セクタ１１からデータを読み出した回数をカウントする工程と，ある領域１２を構成するセクタ１１からデータを読み出した回数が閾値と同じかこれを超過した場合，当該ある領域１２と同じデータが書き込まれている他の領域１２からデータを読み出す工程と，を実行する。
【発明の効果】
【００１７】
本発明によれば，不揮発性メモリなどの記憶装置において，データを読み出す際の信頼性を向上させるとともに，データの読み出し可能回数を増加させて製品寿命を向上させることができる。特に，本発明は，ＲＯＭといった読み出し専用の記憶装置に好適に適用し得る。
【図面の簡単な説明】
【００１８】
【図１】図１は，情報処理装置のブロック図である。
【図２】図２は，記憶装置のブロック図である。
【図３】図３は，記憶装置のコントローラによって実行される情報処理のフロー図である。
【発明を実施するための形態】
【００１９】
以下，図面を用いて本発明を実施するための形態について説明する。本発明は，以下に説明する形態に限定されるものではなく，以下の形態から当業者が自明な範囲で適宜変更したものも含む。
【００２０】
図１は，記憶装置４を備える情報処理装置１００の構成例を示している。図１に示されるように，情報処理装置１００は，プロセッサ１と，入力装置２と，出力装置３と，記憶装置４と，これらを接続するデータバス５を含んで構成されている。プロセッサ１は，演算機能及び制御機能を有するものであり，例えば入力装置２から入力された信号やデータに応じて，記憶装置４から制御プログラムや必要なデータを適宜読み出して所定の演算を行い，演算結果を出力装置３から出力する。入力装置２は，マウスや，キーボード，タッチパッド，カメラ，マイクロフォンなどであり，所定の信号やデータをプロセッサ１に入力する。また，出力装置３は，ディスプレイや，スピーカなどであり，プロセッサ１による演算結果を外部に出力する。記憶装置４は，制御プログラムや必要なデータを記憶する媒体であり，プロセッサ１を介してこれらのデータが読み出される。また，記憶装置４は，データの読み出しだけでなく，書き込みや，削除ができるものであってもよい。記憶装置４は，データを記憶するメモリ１０と，このメモリ１０を管理するためのコントローラ２０を備えている。図１に示した情報処理装置１００は，汎用的なパーソナルコンピュータを想定したものである。ただし，情報処理装置１００は，その他にもパチンコやスロットマシンなどの遊技機，又はゲーム装置として構成することも可能である。
【００２１】
続いて，記憶装置４の構成について詳しく説明する。本発明において，記憶装置４は，基本的に，不揮発性メモリであり，その中でもＲＯＭといった読み出し専用の記憶装置のことであることが好ましい。ＲＯＭの種類としては，ＰＲＯＭや，ＥＰＲＯＭ，ＥＥＰＲＯＭ，或いはマスクＲＯＭを挙げることができる。ただし，記憶装置４は，ＳＳＤなどのＮＡＮＤ型フラッシュとすることもできる。このように，記憶装置４としては，データを蓄積する記憶素子を持つメモリ１０と，これを管理するコントローラ２０とを備えるものであれば，公知のものを採用することができる。
【００２２】
図２は，記憶装置４の機能的構成を模式的に示している。図２に示されるように，メモリ１０とコントローラ２０とは互いに接続され，コントローラ２０を介して，メモリ１０に蓄積されたデータを適宜読み出すことができる。また，コントローラ２０は，データの読み出しだけでなく，データの書き込みや削除などの管理を行うこともできる。
【００２３】
メモリ１０は，多数の記憶素子から構成される。記憶素子は半導体素子の１セルに相当するものであり，１つの記憶素子には１ビットのデータが記憶される。また，メモリ１０は，図２に示されるように，複数の記憶素子から構成されるセクタ１１を複数備える。各セクタ１１は，記憶装置の１つの単位を示すものであり，一般的に，１つのセクタ１１には５１２バイト（４Ｋビット）の情報が書き込まれる。ただし，各セクタ１１の記憶容量は適宜設計変更可能である。また，各セクタ１１には，それぞれアドレスを割り当てることができ，セクタ１１に割り当てられたアドレスはコントローラ２０によって管理される。これにより，コントローラ２０は，アドレスによってセクタ１１を特定し，特定のセクタ１１から所望のデータを読み出したり，或いは特定のセクタ１１に対して所望のデータを書き込むことができる。このように，メモリ１０は，セクタ１１ごとにデータの読み出し／書き込みが管理される。
【００２４】
また，図２に示されるように，メモリ１０は，仮想的に複数の領域１２に区分される。各領域１２は，一又は複数のセクタ１１によって構成されるものであり，各領域１２には，それぞれ１つのデータが書き込まれている。また，どのセクタ１１がどの領域１２を属するものであるかは，セクタ１１に割り当てられたアドレスを利用して，コントローラ２０によって管理されている。例えば，コントローラ２０は，ある領域１２を構成する複数のセクタ１１のアドレスを関連付けて記憶している。このようにアドレスを管理することで，コントローラ２０は，どのセクタ１１が，どのデータを記憶する領域１２に属しているのかを把握することができる。
【００２５】
また，各領域１２ではセクタ１１を利用して１つのデータが書き込まれるものであり，各領域１２を構成するセクタ１１の数は，書き込むデータの容量に応じて適宜増減させることができる。例えば，図２に示した例において，メモリ１０には，データＡとデータＢという２種類のデータが記憶されている。データＢの方がデータＡよりも容量が大きいため，データＢが書き込まれた領域１２は，データＡが書き込まれた領域１２よりも，使用するセクタ１１の数が多くなっている。データの容量が５１２バイト以下であれば，領域１２を構成するセクタ１１の数は１つでもよい。データの容量が５１２バイトを超えた場合，領域１２を複数のセクタ１１によって構成する必要がある。
【００２６】
ここで，図２に示されるように，本発明では，同一のデータが複数の領域１２に重複して書き込まれている。図２に示した例において，データＡ（１）〜データＡ（Ｎ）は全て同じデータであり，このことはデータＡがＮ倍に冗長化してメモリ１０に記憶されていることを意味する。データＡ（１）〜データＡ（Ｎ）は，複数の領域１２に１つずつ書き込まれており，データＡ（１）〜データＡ（Ｎ）を記憶するのに，領域１２（１）〜領域１２（Ｎ）までの領域が使用されている。同様に，データＢ（１）〜データＢ（Ｍ）は全て同じデータであり，このことはデータＢがＭ倍に冗長化してメモリ１０に記憶されていることを意味する。データＢ（１）〜データＢ（Ｍ）は，複数の領域１２に１つずつ書き込まれており，データＢ（１）〜データＢ（Ｍ）を記憶するのに，領域１２（１）〜領域１２（Ｍ）までの領域が使用されている。このように，本発明では，予め，同一のデータが複数個（Ｎ個又はＭ個）の領域１２に重複して書き込まれる。
【００２７】
コントローラ２０は，領域１２を構成する各セクタ１１からのデータの読み出しや，セクタ１１に対するデータの書き込み，或いはデータの削除を行う。ここでは，特にデータの読み出し関して，コントローラ２０が担う機能について説明する。
【００２８】
コントローラ２０は，プロセッサ１からの指令に応じてメモリ１０から指定されたデータを読み出し，読み出したデータをプロセッサ１に送出する機能を持つ。ここで，コントローラ２０は，指定されたデータを読み出す際には，この指定されたデータを記憶する１つの領域１２にアクセスし，その領域１２を構成する各セクタ１１からデータを読み出す。上述したとおり，本発明において，指定されたデータは，複数の領域１２に同じデータが記憶されているが，指定されたデータを読み出す際にコントローラ２０がアクセスする領域１２は１つである。そして，セクタ１１からデータを読み出す際に，コントローラ２０は，各セクタ１１について，データを読み出した回数（リード回数）をカウントすることができる。つまり，コントローラ２０は，各セクタ１１について何回データを読み出したのかを常に把握している。
【００２９】
セクタ毎にリード回数をカウントする方法は特に限定されるものではないが，ここでは，その具体例の１つについて説明する。まず，コントローラ２０は，各セクタ１１に書き込まれているデータの先頭に，リード回数に関する情報を付加することができる。例えば，セクタ１１に書き込まれているデータの本体部分が“１１１１”である場合，コントローラ２０は，リード回数に関する情報として，“０００１”（リード回数：１回）のデータを先頭に付加して，“０００１  １１１１”とした上で，セクタ１１にデータを格納する（二進表記）。その後，コントローラ２０は，そのセクタ１１からデータを読み出す際には，データの本体部分である“１１１１”については変更せず，リード回数を示す先頭部分を増加させて“００１０”（リード回数：２回）とした上で，データ“００１０  １１１１”を読み出す。また，コントローラ２０は，先頭部分を増加させたデータ“００１０  １１１１”を改めてセクタ１１に格納しておく。コントローラ２０は，セクタ１１からデータを読み出す度にこのような処理を行う。これにより，コントローラ２０は，各セクタ１１からデータを読み出した回数をカウントすることができる。
【００３０】
また，コントローラ２０は，セクタ１１からデータを読み出す回数（リード回数）の閾値を任意の値に設定して記憶しておくことができる。リード回数の閾値は，メモリ１０を構成する全てのセクタ１１で統一しておくことが好ましい。ただし，リード回数の閾値は，セクタ毎又はセクタ群毎に変更することも可能である。一般的にセクタ１１には物理的制約からリード回数の上限値が規定されており，この上限値を超えてデータの読み出しを行うと，セクタ１１が故障して誤ったデータを読み出す確率が高くなる。このため，コントローラ２０が設定する任意の閾値は，セクタ１１のリード回数の物理的な上限値よりも低く設定しておくことが好ましい。ただし，任意の閾値を低く設定し過ぎると製品寿命が短くなる恐れがあり，他方で，任意の閾値を高く設定し過ぎると読み出すデータの信頼性が低下する。このため，例えば，セクタ１１のリード回数の物理的な上限値を１００％とした場合には，コントローラ２０が設定する任意の閾値は，８０％以上であって，９９％以下，９５％以下，又は９０％以下とすることが好ましい。
【００３１】
コントローラ２０は，指定されたデータを記憶する領域１２を構成するセクタ１１からデータを読み出す際に，各セクタ１１のリード回数と，予め設定されたリード回数の閾値とを比較する。このとき，セクタ１１のリード回数が閾値を超えていないと判断した場合，コントローラ２０は，同じ領域１２から指定されたデータの読み出しを継続する。他方で，セクタ１１のリード回数が閾値を超えていると判断した場合，コントローラ２０は，その領域１２からのデータの読み出しを停止する。そして，コントローラ２０は，指定されたデータを記憶する他の領域１２を構成するセクタ１１から，そのデータの読み出しを開始する。すなわち，指定されたデータは複数の領域１２に重複して記憶されているため，ある領域１２からのリード回数が増えてデータの信頼性が低下するおそれがある場合には，他の領域からデータを読み出すようにする。その結果，データの読み出し処理における信頼性を向上させることができる。また，同じデータが複数の領域１２に重複して記憶されているため，１つの領域１２が使用できなくなっても，他の領域１２を使用することができる。その結果，記憶装置全体の寿命を向上させることができる。
【００３２】
なお，コントローラ２０は，ある領域を構成するセクタ１１のリード回数が閾値と同じ値になったときに，別の領域１２からデータの読み出すように切り替えてもよいし，ある領域を構成するセクタ１１のリード回数が閾値を超過したときに，別の領域１２からデータの読み出すように切り替えてもよい。閾値の設定の仕方はこのどちらであっても発明の本質に影響を与えない。本願明細書では，主に，リード回数が閾値を超過したことを条件としてデータを読み出す領域を切り替える場合を例に挙げて説明している。
【００３３】
また，図２に示されるように，あるデータを記憶する領域１２が複数のセクタ１１から構成されている場合，セクタ１１ごとにリード回数が異なる場合も想定される。その場合，コントローラ２０は，ある領域１２を構成する複数のセクタ１１からデータを読み出す際に，複数のセクタ１１のリード回数のうちの最も高いリード回数を，任意の閾値と比較するようにすることが好ましい。すなわち，コントローラ２０は，ある領域１２を構成するセクタ１１のうちの，いずれか１つのでもリード回数が閾値を超過した場合，その領域１２からの読み出しを停止し，これと同じデータが書き込まれている他の領域１２からデータの読み出しを開始する。このようにすれば，データ読み出し処理の信頼性をさらに高めることができる。
【００３４】
また，メモリ１０の記憶領域に空きがある場合，コントローラ２０は，特定のデータを複製して，その空き領域に書き込むことも可能である。図２に示した例に基づいて説明すると，例えば，データＡの読み出しが頻繁に行われて，データＡ（１）〜データＡ（Ｎ−１）を格納する領域１２からのリード回数が閾値を超えて，データＡの読み出し対象が，領域１２（Ｎ）に達したとする。その場合，この領域１２（Ｎ）を構成するセクタ１１からのリード回数が閾値を超えると，データＡを格納する領域が他に存在しなくなくなるため，データＡの読み出しが不可能になって，メモリ１０の寿命と見做される。そこで，コントローラ２０は，メモリ１０の記憶領域に空きがある場合には，さらにデータＡの複製を行って，その空き領域にデータＡを書き込むようにする。これにより，領域１２（Ｎ）からのリード回数が閾値を超えた場合であっても，新たな領域からデータＡを読み出すことが可能となる。このように，コントローラ２０は，ある領域１２を構成するセクタ１１からのリード回数が閾値を超過した場合，或いは閾値までの回数が所定値以下となった場合に，当該ある領域と同じデータをさらに別の領域１２に書き込むことが好ましい。
【００３５】
なお，コントローラ２０が新しい領域１２にデータを書き込む処理を行うタイミングや方法は，適宜設定することができる。例えば図２に示されるように，コントローラ２０は，データＡの読み出し可能な領域１２（Ｎ）が残っている場合であっても，読み出し対象が領域１２（Ｎ−１）に達した段階で，データＡを複製して新たな領域に書き込むこととしてもよい。
【００３６】
また，コントローラ２０は，複数の異なる種類のデータの読み出し頻度を比較し，頻度の高いデータを，頻度が低いデータを記憶する領域１２の一部に上書することもできる。これにより，頻度の高いデータを記憶する領域１２の数が増加し，頻度が低いデータを記憶する領域１２の数が減少する。例えば，データＡの読み出し頻度がデータＢに比べて高い場合，領域１２（Ｍ）からデータＢ（Ｍ）を削除して，この領域１２（Ｍ）を空き領域とする。そして，コントローラ２０は，空き領域となった領域１２（Ｍ）にデータＡを書き込むこととしてもよい。これにより，データの読み出し頻度を考慮して，記憶装置の寿命を長期化させることができる。
【００３７】
図３は，メモリ１０の記憶領域の管理方法の例を示したフロー図である。この記憶領域の管理方法は，上述したコントローラ２０によって実行される。
【００３８】
図３に示されるように，コントローラ２０は，指定されたデータを記憶する複数の領域のうち，ｉ番目の領域（ｉ）からその指定されたデータを読み出す（ステップＳ１）。その際に，領域（ｉ）を構成する複数のセクタについて，データを読み出した回数（リード回数）に関する情報も同時に読み出す。上述したとおり，各セクタに記憶されているデータには，その先頭部分にリード回数に情報が付加されている。このため，コントローラ２０は，データの先頭部分を解析することで，そのセクタからのリード回数を把握することができる。このようなリード回数を読み出す処理を，領域（ｉ）を構成する複数のセクタのそれぞれについて行う。
【００３９】
続いて，コントローラ２０は，領域（ｉ）を構成する各セクタからのリード回数を，予め設定された任意の閾値と比較する（ステップＳ２）。このとき，コントローラ２０は，領域（ｉ）を構成する各セクタのリード回数のうち，最も高いリード回数を閾値と比較することが好ましい。セクタのリード回数が閾値以下である場合，ステップＳ３に進む。他方で，セクタのリード回数が閾値を超過している場合，ステップＳ４に進む。
【００４０】
コントローラ２０は，領域（ｉ）を構成するセクタのリード回数が閾値以下であると判断した場合，そのリード回数をカウントアップする処理を行って，ステップＳ１へと戻り，同じ領域（ｉ）からデータの読み出しを継続して行う（ステップＳ３）。リード回数をカウントアップするには，各セクタに記憶されているデータの先頭部分を更新（インクリメント）して，更新したデータを再度セクタに格納するようにすればよい。このようにして，コントローラ２０は，各セクタのリード回数を常に監視することができる。
【００４１】
他方で，コントローラ２０は，領域（ｉ）を構成するセクタの回数が閾値を超えたと判断した場合，同じデータを読み出す対象を次の領域に変更する（ステップＳ４）。つまり，コントローラ２０は，ｉ＋１番目の領域からデータを読み出すために，ｉ＋１＝ｉとして，ステップＳ１へと戻る。これにより，ある領域（ｉ）からのリード回数が物理的な限界値に近くなったときには，次の領域（ｉ＋１）からのデータの読み出しを開始することができる。コントローラ２０は，上記したＳ１〜Ｓ４の処理を，同じデータを記憶する領域の全てのリード回数が閾値に到達するまで繰り返し実行する。
【００４２】
一般的に各セクタには物理的制約からデータの読み出し回数（リード回数）の上限値が規定されており，この上限値を超えてデータの読み出しを行うと，誤ったデータを読み出す確率が高くなる。例えば，あるセクタに重要なデータ（ブートプログラムコードなど）が書き込まれている場合，誤ったデータを読み出してしまうと，ブートが正常に行えないといった事態が想定される。そこで，この上限値を超えないように閾値を設定し，コントローラによって各セクタのリード回数の情報を読み出し，閾値を超過したときには，そのセクタにより構成された領域からの読み出しを止め，別のセクタから構成されている領域からデータ及びリード回数の情報を読み出す。これにより，誤ったデータを読み出すことがなくなり，記憶装置の信頼性及び製品寿命の向上を図ることができる。
【００４３】
以上，本願明細書では，本発明の内容を表現するために，図面を参照しながら本発明の実施形態の説明を行った。ただし，本発明は，上記実施形態に限定されるものではなく，本願明細書に記載された事項に基づいて当業者が自明な変更形態や改良形態を包含するものである。
【産業上の利用可能性】
【００４４】
本発明は，不揮発性メモリなどの記憶装置，及びその記憶領域の管理方法に関する。従って，本発明はコンピュータ関連産業において好適に利用し得る。
【符号の説明】
【００４５】
１…プロセッサ            ２…入力装置
３…出力装置              ４…記憶装置
５…データバス            １０…メモリ
１１…セクタ              １２…領域
２０…コントローラ        １００…情報処理装置
【図１】
2017097390.tif 000003
【図２】
2017097390.tif 000004
【図３】
2017097390.tif 000005