(57)【要約】【課題】標準の精度によるリードおよび高い精度によるリードの何れにも対応するメモリにおいて、エラー訂正の状態に応じてリード要求を制御する。【解決手段】標準リード要求部は、メモリ上のリードアドレスに対して標準の精度によるリードを要求する。エラー訂正部は、標準の精度によるリード要求に応答してメモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行う。高精度リード要求部は、エラー訂正によって訂正できないエラーが発生した場合にはリードアドレスに対して標準の精度より高い精度によるリードを再度要求する。【選択図】図１
2014086062.tif 000002
【特許請求の範囲】
【請求項１】
メモリ上のリードアドレスに対して標準の精度によるリードを要求する標準リード要求部と、
前記標準の精度によるリード要求に応答して前記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記エラー訂正によって訂正できないエラーが発生した場合には前記リードアドレスに対して前記標準の精度より高い精度によるリードを再度要求する高精度リード要求部と
を具備する記憶制御装置。
【請求項２】
前記エラー訂正によって全てのエラーが訂正された場合においてその訂正されたビット数が一定の要件を満たした際には前記リードアドレスを記録する記録部をさらに具備し、
新たなリード要求に係る新たなリードアドレスが前記記録部に記録されている場合には前記標準の精度によるリード要求を行うことなく前記高精度によるリード要求を前記新たなリードアドレスに対して行う
請求項１記載の記憶制御装置。
【請求項３】
前記記録部は、前記訂正されたビット数が所定の閾値を超えた場合に前記一定の要件を満たしたものとして前記リードアドレスを記録する
請求項２記載の記憶制御装置。
【請求項４】
前記リードアドレスが所定のアドレス領域に該当する場合には前記標準の精度によるリード要求を行うことなく前記高精度によるリード要求を前記リードアドレスに対して行う
請求項１記載の記憶制御装置。
【請求項５】
前記所定のアドレス領域はシステム領域である請求項４記載の記憶制御装置。
【請求項６】
前記エラー訂正部は、第１サイズのデータに対しては第１のエラー訂正コードに基づいてエラー訂正を行い、前記第１サイズよりも大きい第２サイズのデータに対しては前記第１のエラー訂正コードよりも訂正能力の高い第２のエラー訂正コードに基づいてエラー訂正を行い、
前記リードアドレスに対するリード要求が前記第１サイズを超えない場合には前記標準の精度によるリード要求を行うことなく前記高精度によるリード要求を前記リードアドレスに対して行う
請求項１記載の記憶制御装置。
【請求項７】
前記リードアドレスへのアクセス頻度が一定の要件を満たす場合には前記標準の精度によるリード要求を行うことなく前記高精度によるリード要求を前記リードアドレスに対して行う
請求項１記載の記憶制御装置。
【請求項８】
前記エラー訂正によって全てのエラーが訂正された場合においてその訂正されたビット数が一定の要件を満たした際には前記リードアドレスに対してリフレッシュを要求するリフレッシュ要求部をさらに具備する
請求項１記載の記憶制御装置。
【請求項９】
前記リフレッシュ要求部は、前記リードアドレスにおいて前記標準の精度より高い精度によるリードを行ってそのリード結果を前記リードアドレスにライトする旨を前記リフレッシュ要求として指示する
請求項８記載の記憶制御装置。
【請求項１０】
標準の精度によるリードおよび前記標準の精度より高い精度によるリードの何れのリード要求にも対応するメモリと、
前記メモリ上のリードアドレスに対して前記標準の精度によるリードを要求する標準リード要求部と、
前記標準の精度によるリード要求に応答して前記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記エラー訂正によって訂正できないエラーが発生した場合には前記リードアドレスに対して前記標準の精度より高い精度によるリードを再度要求する高精度リード要求部と
を具備する記憶装置。
【請求項１１】
標準の精度によるリードおよび前記標準の精度より高い精度によるリードの何れのリード要求にも対応するメモリと、
前記メモリへのリードアクセスを発行するホストコンピュータと、
前記リードアクセスに応答して前記メモリ上のリードアドレスに対して前記標準の精度によるリードを要求する標準リード要求部と、
前記標準の精度によるリード要求に応答して前記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記エラー訂正によって訂正できないエラーが発生した場合には前記リードアドレスに対して前記標準の精度より高い精度によるリードを再度要求する高精度リード要求部と
を具備する情報処理システム。
【請求項１２】
メモリ上のリードアドレスに対して標準の精度によるリードを要求する標準リード要求手順と、
前記標準の精度によるリード要求に応答して前記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正手順と、
前記エラー訂正によって訂正できないエラーが発生した場合には前記リードアドレスに対して前記標準の精度より高い精度によるリードを再度要求する高精度リード要求手順と
を具備する記憶制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置に関する。詳しくは、エラー訂正コードをデータとともに記憶するメモリに対して記憶制御を行う記憶制御装置、記憶装置、および、これらにおける処理方法に関する。
【背景技術】
【０００２】
従来、プロセッサとそのワークメモリ（主記憶装置）からなる情報処理システムにおいて、さらにストレージ（補助記憶装置）を備えることにより記憶容量を増やす技術が開発されている。このような情報処理システムにおいては、ワークメモリとしてＤＲＡＭ（Dynamic Random Access Memory）等が用いられる。一方、ストレージとして不揮発性メモリ（ＮＶＭ：Non-Volatile Memory）が用いられることがある。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）、ＲｅＲＡＭ（Resistance RAM）などが挙げられる。
【０００３】
従来の不揮発性メモリにおいては、通常のリード方法に加えて、リード時間を要するが高い精度を有するリード方法を備えるものが提案されている（例えば、特許文献１参照。）。すなわち、高速であるが比較的精度の低い通常のリード方法であるダイナミックリードと、高精度であるが比較的速度の低いリード方法であるスタティックリードの両者が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１６５２９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
不揮発性メモリは、ライトやリードのアクセスを繰り返すことによって劣化するメカニズムを有する。そのような状態のセルから読み出されたデータは、ビット誤りを含んでリードされる場合がある。したがって、各セルの状態の影響を受けて、各リード動作による結果によって発生するビット誤りも変化する。例えば、あるデータが劣化したセルに保存されている場合に、高速なダイナミックリードを行った場合にはビット誤りが増加しやすくなる。このような場合、上述の従来技術においては不揮発性メモリデバイス内でビット誤りを検出する手段はなく、また、用途別にリード動作を割り当てているため、リードされたデータの結果を改善することはできない。不揮発性メモリ上に保存されたデータが正しくリードされない状態は、その情報を失ったことを意味するため、システムとしては致命的な状態となる。すなわち、それを防ぐ有効な手段として精度の高いリード方法を活かし切れていないことになる。
【０００６】
本技術はこのような状況に鑑みて生み出されたものであり、標準の精度によるリードおよび高い精度によるリードの何れにも対応するメモリにおいて、エラー訂正の状態に応じてリード要求を制御することを目的とする。
【課題を解決するための手段】
【０００７】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、メモリ上のリードアドレスに対して標準の精度によるリードを要求する標準リード要求部と、上記標準の精度によるリード要求に応答して上記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、上記エラー訂正によって訂正できないエラーが発生した場合には上記リードアドレスに対して上記標準の精度より高い精度によるリードを再度要求する高精度リード要求部とを具備する記憶制御装置およびその記憶制御方法である。これにより、メモリに対する標準の精度によるリードにおいてエラー訂正できない場合に、高精度によるリードをメモリに要求するという作用をもたらす。
【０００８】
また、この第１の側面において、上記エラー訂正によって全てのエラーが訂正された場合においてその訂正されたビット数が一定の要件を満たした際には上記リードアドレスを記録する記録部をさらに具備し、新たなリード要求に係る新たなリードアドレスが上記記録部に記録されている場合には上記標準の精度によるリード要求を行うことなく上記高精度によるリード要求を上記新たなリードアドレスに対して行うようにしてもよい。これにより、訂正されたビット数が一定の要件を満たすアドレスについて高精度によるリードを行うという作用をもたらす。この場合において、上記記録部は、上記訂正されたビット数が所定の閾値を超えた場合に上記一定の要件を満たしたものとして上記リードアドレスを記録するようにしてもよい。
【０００９】
また、この第１の側面において、上記リードアドレスが所定のアドレス領域に該当する場合には上記標準の精度によるリード要求を行うことなく上記高精度によるリード要求を上記リードアドレスに対して行うようにしてもよい。これにより、アドレス領域に応じて高精度によるリードを行うという作用をもたらす。この場合において、上記所定のアドレス領域はシステム領域を想定することができる。
【００１０】
また、この第１の側面において、上記エラー訂正部は、第１サイズのデータに対しては第１のエラー訂正コードに基づいてエラー訂正を行い、上記第１サイズよりも大きい第２サイズのデータに対しては上記第１のエラー訂正コードよりも訂正能力の高い第２のエラー訂正コードに基づいてエラー訂正を行い、上記リードアドレスに対するリード要求が上記第１サイズを超えない場合には上記標準の精度によるリード要求を行うことなく上記高精度によるリード要求を上記リードアドレスに対して行うようにしてもよい。これにより、第１サイズを超えない場合に高精度によるリードを行うという作用をもたらす。
【００１１】
また、この第１の側面において、上記リードアドレスへのアクセス頻度が一定の要件を満たす場合には上記標準の精度によるリード要求を行うことなく上記高精度によるリード要求を上記リードアドレスに対して行うようにしてもよい。これにより、アクセス頻度に応じて高精度によるリードを行うという作用をもたらす。
【００１２】
また、この第１の側面において、上記エラー訂正によって全てのエラーが訂正された場合においてその訂正されたビット数が一定の要件を満たした際には上記リードアドレスに対してリフレッシュを要求するリフレッシュ要求部をさらに具備してもよい。これにより、訂正されたビット数が一定の要件を満たすアドレスについてリフレッシュを行うという作用をもたらす。この場合において、上記リフレッシュ要求部は、上記リードアドレスにおいて上記標準の精度より高い精度によるリードを行ってそのリード結果を上記リードアドレスにライトする旨を上記リフレッシュ要求として指示してもよい。これにより、リフレッシュのためのリードを高い精度により行うという作用をもたらす。
【００１３】
また、本技術の第２の側面は、標準の精度によるリードおよび上記標準の精度より高い精度によるリードの何れのリード要求にも対応するメモリと、上記メモリ上のリードアドレスに対して上記標準の精度によるリードを要求する標準リード要求部と、上記標準の精度によるリード要求に応答して上記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、上記エラー訂正によって訂正できないエラーが発生した場合には上記リードアドレスに対して上記標準の精度より高い精度によるリードを再度要求する高精度リード要求部とを具備する記憶装置である。これにより、標準の精度によるリードにおいてエラー訂正できない場合に高精度によるリードを行うという作用をもたらす。
【００１４】
また、本技術の第３の側面は、標準の精度によるリードおよび上記標準の精度より高い精度によるリードの何れのリード要求にも対応するメモリと、上記メモリへのリードアクセスを発行するホストコンピュータと、上記リードアクセスに応答して上記メモリ上のリードアドレスに対して上記標準の精度によるリードを要求する標準リード要求部と、上記標準の精度によるリード要求に応答して上記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、上記エラー訂正によって訂正できないエラーが発生した場合には上記リードアドレスに対して上記標準の精度より高い精度によるリードを再度要求する高精度リード要求部とを具備する情報処理システムである。これにより、ホストコンピュータからのメモリへのリードアクセスに際し、標準の精度によるリードにおいてエラー訂正できない場合に高精度によるリードを行うという作用をもたらす。
【発明の効果】
【００１５】
本技術によれば、標準の精度によるリードおよび高い精度によるリードの何れにも対応するメモリにおいて、エラー訂正の状態に応じてリード要求を制御することができるという優れた効果を奏し得る。
【図面の簡単な説明】
【００１６】
【図１】本技術の実施の形態における情報処理システムの構成例を示す図である。
【図２】本技術の実施の形態におけるリード処理部２４０周辺の構成例を示す図である。
【図３】本技術の第１の実施の形態における情報処理システムのリード処理の手順例を示す図である。
【図４】本技術の第２の実施の形態におけるエラーログ保持部２４２の構成例を示す図である。
【図５】本技術の第２の実施の形態における情報処理システムのリード処理の手順例を示す図である。
【図６】本技術の第３の実施の形態において想定される論理ページと物理ページの対応関係の一例を示す図である。
【図７】本技術の第３の実施の形態における情報処理システムのリード処理の手順例を示す図である。
【図８】本技術の第４の実施の形態において想定されるデータとエラー訂正コードの対応関係の一例を示す図である。
【図９】本技術の第４の実施の形態における情報処理システムのリード処理の手順例を示す図である。
【図１０】本技術の第５の実施の形態における情報処理システムのリード処理の手順例を示す図である。
【図１１】本技術の第６の実施の形態における情報処理システムのリード処理の手順例を示す図である。
【図１２】本技術の第６の実施の形態における情報処理システムのリフレッシュ処理の手順例を示す図である。
【発明を実施するための形態】
【００１７】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（基本的制御）
２．第２の実施の形態（エラー訂正ログに基づく制御例）
３．第３の実施の形態（アクセス領域に基づく制御例）
４．第４の実施の形態（エラー訂正コードを二重にした場合の制御例）
５．第５の実施の形態（アクセス頻度に基づく制御例）
６．第６の実施の形態（リフレッシュを併用した制御例）
７．変形例
【００１８】
＜１．第１の実施の形態＞
［情報処理システムの構成］
図１は、本技術の実施の形態における情報処理システムの構成例を示す図である。この情報処理システムは、ホストコンピュータ１００と、メモリコントローラ２００と、不揮発性メモリ３００とを備えている。メモリコントローラ２００および不揮発性メモリ３００は、メモリシステムを構成する。ホストコンピュータ１００は、メモリシステムに対してデータのリードまたはライト等を要求するコマンドを発行するものである。
【００１９】
不揮発性メモリ３００は、電源が供給されていない状態においてもその内容を保持し続ける不揮発性の性質を有するメモリ（ＮＶＭ：Non-Volatile Memory）である。不揮発性メモリ３００としては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、ＮＶＲＡＭの例としては、ＰＣＲＡＭ、ＭＲＡＭ、ＲｅＲＡＭなどが挙げられる。
【００２０】
この不揮発性メモリ３００は、制御インターフェース３１０と、メモリバッファ３２０と、メモリセルアレイ３３０とを備える。メモリセルアレイ３３０は、各ビットのデータ値を記憶するメモリセルを、マトリクス状に配置したものである。各メモリセルは電源が供給されていない状態においてもその内容を保持し続ける不揮発性の性質を有する。メモリバッファ３２０は、メモリセルアレイ３３０にライトするためのデータまたはメモリセルアレイ３３０からリードしたデータを保持するためのバッファである。制御インターフェース３１０は、メモリコントローラ２００との間のやり取りを行うインターフェースである。
【００２１】
メモリセルアレイ３３０は、精度の異なる２種類のリード方法（リードモード）を有する。一方は、高速であるが比較的精度の低い通常のリード方法であり、このリード方法によるアクセスを通常アクセスと称する。他方は、高精度であるが比較的速度の低いリード方法であり、このリード方法によるアクセスを高精度アクセスと称する。何れのリード方法によるかはメモリコントローラ２００からの指示に従う。
【００２２】
メモリコントローラ２００は、不揮発性メモリ３００を制御するためのものであり、ホストコンピュータ１００からの指示に従って、不揮発性メモリ３００に対してリードやライト等のリクエストを発行する。このメモリコントローラ２００は、ホストインターフェース２１０と、ライト処理部２２０と、エラー訂正コード生成部２３０と、リード処理部２４０と、エラー検出部２５０と、エラー訂正部２６０と、メモリインターフェース２７０とを備えている。
【００２３】
ライト処理部２２０は、不揮発性メモリ３００に対してデータをライトする処理を行うものである。ライト処理部２２０は、ホストコンピュータ１００からのライトコマンドに従って、ライトリクエストを不揮発性メモリ３００に発行する。ホストコンピュータ１００からのライトコマンドには、ライト処理の対象となるライトアドレスが含まれる。メモリコントローラ２００は、このライトアドレスを論理アドレスから物理アドレスに変換してもよく、また、そのままのアドレスを出力してもよい。ライト処理の対象となるライトデータは、通常の場合、ホストコンピュータ１００からのライトコマンドに含まれ、または、ライトコマンドとともに指示される。また、リフレッシュ処理が行われる場合には、リード処理部２４０によってリードされたデータがライトデータとして用いられることもある。
【００２４】
エラー訂正コード生成部２３０は、ライトデータに対するエラー訂正コード（ＥＣＣ：Error Correcting Code）を生成するものである。生成されたエラー訂正コードは、ライトデータとともに不揮発性メモリ３００に書き込まれる。
【００２５】
リード処理部２４０は、不揮発性メモリ３００からデータをリードする処理を行うものである。リード処理部２４０は、ホストコンピュータ１００からのリードコマンドに従って、リードリクエストを不揮発性メモリ３００に発行する。ホストコンピュータ１００からのリードコマンドには、リード処理の対象となるリードアドレスが含まれる。メモリコントローラ２００は、このリードアドレスを論理アドレスから物理アドレスに変換してもよく、また、そのままのアドレスを出力してもよい。このリード処理により、対象となるリードデータとともに、それに対するエラー訂正コードが不揮発性メモリ３００から読み出される。なお、リード処理部２４０は、特許請求の範囲に記載の標準リード要求部および高精度リード要求部の一例である。
【００２６】
エラー検出部２５０は、不揮発性メモリ３００から読み出されたリードデータおよびエラー訂正コードに基づいてビットエラーを検出するものである。エラー訂正部２６０は、エラー検出部２５０においてビットエラーが検出された場合に、不揮発性メモリ３００から読み出されたリードデータおよびエラー訂正コードに基づいてビットエラーを訂正するものである。これにより、エラー訂正部２６０によれば、エラー訂正コードが持つ訂正能力以内のビット数までのビットエラーであれば訂正され、データの保持特性が改善される。ただし、エラー訂正コードが持つ訂正能力以上のビットエラーが発生した場合には訂正不可能となる。
【００２７】
ホストインターフェース２１０は、ホストコンピュータ１００との間のやり取りを行うインターフェースである。メモリインターフェース２７０は、不揮発性メモリ３００との間のやり取りを行うインターフェースである。
【００２８】
図２は、本技術の実施の形態におけるリード処理部２４０周辺の構成例を示す図である。リード処理部２４０は、リードモード設定部２４１と、エラーログ保持部２４２とを含んで構成される。
【００２９】
リードモード設定部２４１は、不揮発性メモリ３００に対してリードリクエストを発行する際に、通常アクセスまたは高精度アクセスの何れか一方のリードモードを設定するものである。いずれのリードモードに設定するかの判断は、エラー訂正部２６０によるエラー訂正の可否や、ホストコンピュータ１００からのリードアクセスの種類などによって異なる。この判断の詳細については後述する。
【００３０】
エラーログ保持部２４２は、エラー訂正部２６０におけるエラー訂正の状況をエラーログとして保持するものである。このエラーログ保持部２４２については、後述の第２の実施の形態において詳述する。なお、エラーログ保持部２４２は、特許請求の範囲に記載の記録部の一例である。
【００３１】
［リード処理の動作］
図３は、本技術の第１の実施の形態における情報処理システムのリード処理の手順例を示す図である。この第１の実施の形態では、リード処理部２４０はホストコンピュータ１００からのリードコマンドを受け取ると、不揮発性メモリ３００上のリードアドレスに対してリードリクエストを発行する（ステップＳ９１３）。この場合、リードモード設定部２４１において、リードモードとして通常アクセスが設定される。すなわち、これにより不揮発性メモリ３００において、高速であるが比較的精度の低い通常のリード方法によりリードアクセスが行われる。
【００３２】
不揮発性メモリ３００において通常アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９１４：Ｙｅｓ）、リード処理部２４０は不揮発性メモリ３００上の同じリードアドレスに対して高精度アクセスによるリードリクエストを発行する（ステップＳ９１５）。エラー訂正部２６０では、上述の通り、エラー訂正コードが持つ訂正能力以内のビット数までのビットエラーしか許容できず、それを超える場合にはエラー訂正することができなくなる。そのような場合でも、高精度アクセスを使用してデータを読み直すことによってビットエラー数が減少すれば、エラー訂正部２６０によって訂正可能となることが見込まれる。そこで、ステップＳ９１５において、通常アクセスよりも精度の高い高精度アクセスによるリードを同じリードアドレスに対して行う。
【００３３】
高精度アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９１６：Ｙｅｓ）、リード処理をエラー終了する。
【００３４】
エラー検出部２５０においてエラーが検出されなかった場合、または、エラーが検出されてもエラー訂正部２６０におけるエラー訂正に成功した場合には（ステップＳ９１４またはＳ９１６：Ｎｏ）、リード処理を正常終了する。
【００３５】
このように、本技術の第１の実施の形態によれば、リードモードとエラー訂正とを組み合わせることによりデータの訂正能力を改善することができる。すなわち、通常アクセスによるリードではエラー訂正不可能な場合に、高精度アクセスによるリードを行うことによってビットエラー数の減少を図り、エラー訂正可能となる可能性を高めることができる。一方、当初のリードアクセスをアクセス時間の短い通常アクセスとすることにより、アクセス性能への影響を最小限にすることができる。
【００３６】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、リードコマンドを受け取るたびに、まず通常アクセスによるリードを実行し、エラー訂正不可能な場合にのみ高精度アクセスによるリードを行っていた。この第２の実施の形態では、エラー訂正部２６０によるエラーログを参照して、状況に応じて通常アクセスを省略して、当初から高精度アクセスによるリードを実行する。なお、情報処理システムの基本的な構成は、図１および図２により説明したものと同様であるため、説明を省略する。
【００３７】
［エラーログ保持部の構成］
図４は、本技術の第２の実施の形態におけるエラーログ保持部２４２の構成例を示す図である。このエラーログ保持部２４２は、エラー訂正部２６０における１回のエラー訂正において訂正されたビットエラーのビット数が所定の閾値を超えた場合に、その際のリードアドレスをエラー訂正ログとして記録管理するものである。この例では、所定の閾値を超えるエラービット数が発生したリードアドレスを１６進数により保持している。そして、ログ上に記録された不揮発性メモリのリードアドレスに対してリード処理を行う場合には、高精度アクセスを使用することにより、訂正不可能エラーの発生を未然に防ぐことができる。
【００３８】
なお、この例では、エラーログ保持部２４２においてリードアドレス自体を保持する構成を想定したが、これ以外の構成を用いることも可能である。例えばリードアドレスの各々に対応するビットマップを用意して、対応するビットマップのフラグをオンにするように構成してもよい。
【００３９】
［リード処理の動作］
図５は、本技術の第２の実施の形態における情報処理システムのリード処理の手順例を示す図である。この第２の実施の形態では、リード処理部２４０はホストコンピュータ１００からのリードコマンドを受け取ると、エラーログ保持部２４２を参照して、そのリードアドレスがエラーログ保持部２４２に記録されているか否かを判断する。
【００４０】
エラーログ保持部２４２に記録されていなければ（ステップＳ９２１：Ｎｏ）、通常アクセスによりリードリクエストを発行する（ステップＳ９２３）。一方、エラーログ保持部２４２に記録されている場合には（ステップＳ９２１：Ｙｅｓ）、通常アクセスをスキップして高精度アクセスによるリードリクエストを発行する（ステップＳ９２５）。
【００４１】
ステップＳ９２３において通常アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９２４：Ｙｅｓ）、リード処理部２４０は不揮発性メモリ３００上の同じリードアドレスに対して高精度アクセスによるリードリクエストを発行する（ステップＳ９２５）。
【００４２】
通常アクセスによるリードについてエラーが検出されなかった場合、または、エラーが検出されてもエラー訂正部２６０におけるエラー訂正に成功した場合には（ステップＳ９２４：Ｎｏ）、リード処理を正常終了する。ただし、エラー訂正が行われた場合において訂正されたエラービット数が所定の閾値を超えているときには（ステップＳ９２７：Ｙｅｓ）、エラーログ保持部２４２においてリードアドレスをエラー訂正ログとして記録する（ステップＳ９２８）。このエラー訂正ログは、将来的にエラー訂正不可能となる可能性が高いアドレスを示すものである。このエラー訂正ログはステップＳ９２１においてチェックされ、既にエラー訂正ログに記録されている場合には通常アクセス（ステップＳ９２３）をスキップして高精度アクセス（ステップＳ９２５）によるリードが行われる。
【００４３】
ステップＳ９２５において高精度アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９２６：Ｙｅｓ）、リード処理をエラー終了する。
【００４４】
高精度アクセスによるリードについてエラーが検出されなかった場合、または、エラーが検出されてもエラー訂正部２６０におけるエラー訂正に成功した場合には（ステップＳ９２６：Ｎｏ）、リード処理を正常終了する。
【００４５】
このように、本技術の第２の実施の形態によれば、将来的にエラー訂正不可能となる可能性が高いアドレスをエラー訂正ログとして記録しておくことにより、通常アクセスをスキップして高精度アクセスを行い、訂正不可能エラーの発生を未然に防ぐことができる。
【００４６】
＜３．第３の実施の形態＞
上述の第１の実施の形態では、リード対象となるアドレスが何れの領域であっても、まず通常アクセスによるリードを実行し、エラー訂正不可能な場合にのみ高精度アクセスによるリードを行っていた。この第３の実施の形態では、リード対象のアドレスに応じて、通常アクセスを省略して、当初から高精度アクセスによるリードを実行する。なお、情報処理システムの基本的な構成は、図１および図２により説明したものと同様であるため、説明を省略する。
【００４７】
［アドレス空間］
図６は、本技術の第３の実施の形態において想定される論理ページと物理ページの対応関係の一例を示す図である。この第３の実施の形態では、不揮発性メモリをストレージ装置として使用することを想定し、論理ページ６１０を物理ページ６２０にマッピングしてアクセスすることにしている。ストレージ装置としての領域を管理するファイルシステムなどの管理情報は正常に読み出されることが必要であり、このようなデータの領域は予め論理フォーマットとして領域を指示するアドレス空間が固定される。そこで、そのような管理情報については高精度アクセスを優先することにより、訂正不可能エラーの発生を抑制する。
【００４８】
論理ページ６１０は、システム領域とユーザ領域とに分かれている。システム領域において、ＭＢＲ（Master Boot Record）は、システム起動時に最初に読み出される領域である。ＦＡＴ（File Allocation Table）は、ファイルの格納位置を管理するためのテーブルである。ルートディレクトリは、階層ディレクトリ構造における最上位に存在するファイルのディレクトリエントリを格納する領域である。ユーザデータはユーザ領域に格納される。
【００４９】
物理ページ６２０は、高精度アクセスを優先させる高精度アクセス領域と、通常アクセスを優先させる通常アクセス領域とに分かれている。システム領域は高精度アクセス領域に割り当てられ、ユーザ領域は通常アクセス領域に割り当てられる。これにより、システム領域にアクセスする際には高精度アクセスが優先され、ユーザ領域にアクセスする際には高精度アクセスが優先されるようになる。
【００５０】
［リード処理の動作］
図７は、本技術の第３の実施の形態における情報処理システムのリード処理の手順例を示す図である。この第３の実施の形態では、リード処理部２４０はホストコンピュータ１００からのリードコマンドを受け取ると、そのリードアドレスがシステム領域の末尾を超えるか否を判断する。
【００５１】
リードアドレスがシステム領域の末尾を超えていれば（ステップＳ９３１：Ｎｏ）、ユーザ領域に該当するため、通常アクセスによりリードリクエストを発行する（ステップＳ９３３）。一方、リードアドレスがシステム領域の末尾を超えていない場合には（ステップＳ９３１：Ｙｅｓ）、システム領域に該当するため、通常アクセスをスキップして高精度アクセスによるリードリクエストを発行する（ステップＳ９３２）。
【００５２】
ステップＳ９３３において通常アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９３４：Ｙｅｓ）、リード処理部２４０は不揮発性メモリ３００上の同じリードアドレスに対して高精度アクセスによるリードリクエストを発行する（ステップＳ９３５）。
【００５３】
ステップＳ９３２またはＳ９３５において高精度アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９３６：Ｙｅｓ）、リード処理をエラー終了する。
【００５４】
エラー検出部２５０においてエラーが検出されなかった場合、または、エラーが検出されてもエラー訂正部２６０におけるエラー訂正に成功した場合には（ステップＳ９３４またはＳ９３６：Ｎｏ）、リード処理を正常終了する。
【００５５】
このように、本技術の第３の実施の形態によれば、システム領域に対するアクセスについては、通常アクセスをスキップして高精度アクセスを行うことにより、訂正不可能エラーの発生を未然に防ぐことができる。
【００５６】
＜４．第４の実施の形態＞
上述の第１の実施の形態では、エラー訂正コード生成部２３０、エラー検出部２５０、および、エラー訂正部２６０が取り扱うエラー訂正コードは一種類である。すなわち、リード対象となるサイズ等にかかわらず単一のエラー訂正コードを用いることを前提として、まず通常アクセスによるリードを実行し、その後、エラー訂正不可能な場合にのみ高精度アクセスによるリードを行っていた。この第４の実施の形態では、全てのデータに対して５１２バイトを単位とした第１のエラー訂正コードと、４０９６バイトを単位とした第２のエラー訂正コードとを付与する。一般に、エラー訂正コードは符号長が長いほどエラー訂正の能力が向上するとされており、ここでは５１２バイトを単位にした第１のエラー訂正コードよりも、４０９６バイトを単位とした第２のエラー訂正コードのエラー訂正能力が高いものとする。この第４の実施の形態では、このような二重のエラー訂正コードを想定し、訂正能力の比較的低い５１２バイト単位のエラー訂正コードを用いるアクセス方法については通常アクセスを省略して、当初から高精度アクセスによるリードを実行する。なお、情報処理システムの基本的な構成は、図１および図２により説明したものと同様であるため、説明を省略する。
【００５７】
［エラー訂正コード］
図８は、本技術の第４の実施の形態において想定されるデータとエラー訂正コード（ＥＣＣ）の対応関係の一例を示す図である。この第４の実施の形態では、第１サイズのデータに対しては第１のエラー訂正コードに基づいてエラー訂正を行う。また、第１サイズよりも大きい第２サイズのデータに対しては第１のエラー訂正コードよりも訂正能力の高い第２のエラー訂正コードに基づいてエラー訂正を行う。以下では、一例として、第１サイズを５１２バイトとし、第２サイズを４Ｋバイトとして説明する。
【００５８】
５１２バイトデータ３３１の各々に対して、第１ＥＣＣ３３２が付与される。そして、５１２バイトデータ３３１と第１ＥＣＣ３３２からなる組を８組まとめたものに対して第２ＥＣＣ３３３が付与される。すなわち、４Ｋバイトデータを単位として場合には、第１ＥＣＣ３３２に加え、さらに訂正能力の高い第２ＥＣＣ３３３を二重に付加することにより、データ保持特性を改善する。すなわち、第１ＥＣＣ３３２で訂正不可能であった場合にも第２ＥＣＣ３３３を使用することにより、訂正後のデータのリードが可能となる。この場合において、第２ＥＣＣ３３３は、５１２バイトデータ３３１および第１ＥＣＣ３３２を８組まとめたデータに対して訂正能力の高いエラー訂正コードを適用する。
【００５９】
第１ＥＣＣ３３２としては、例えば、５１２バイトに対して１ビットエラー検出および訂正が可能なパリティを想定する。第２ＥＣＣ３３３としては、例えば、４Ｋバイトデータに対して８ビットエラー検出および訂正が可能なＢＣＨ符号を想定する。
【００６０】
５１２バイト単位のリードを行う場合には、パリティによるビットエラー検出および訂正処理に要する時間が短いため、高精度アクセスを適用することにより、１ビットを超えるエラーが発生する可能性を低減する。一方、４Ｋバイト単位でリードを行う場合には、ＢＣＨ符号による訂正能力が十分高く、また、ビットエラー検出および訂正処理に際してパリティよりも長い時間を要することから、より高速な通常アクセスを適用する。これにより、第２ＥＣＣ３３３が必要となった場合にもアクセス時間の増大を小さくすることができる。
【００６１】
なお、この例では５１２バイトデータ３３１の直後に第１ＥＣＣ３３２を配置し、第２ＥＣＣ３３３を別途まとめて配置しているが、第１ＥＣＣ３３２および第２ＥＣＣ３３３の格納位置は何れでもよい。
【００６２】
［リード処理の動作］
図９は、本技術の第４の実施の形態における情報処理システムのリード処理の手順例を示す図である。この第４の実施の形態では、リード処理部２４０はホストコンピュータ１００からのリードコマンドを受け取ると、リード対象となるデータサイズが参照される。
【００６３】
データサイズが５１２バイトを超えていれば（ステップＳ９４１：Ｙｅｓ）、４Ｋバイトデータリードに該当するため、通常アクセスにより４Ｋバイトのリードリクエストを発行する（ステップＳ９４３）。一方、データサイズが５１２バイトを超えていない場合には（ステップＳ９４１：Ｎｏ）、５１２バイトリードに該当するため、通常アクセスをスキップして高精度アクセスにより５１２バイトのリードリクエストを発行する（ステップＳ９４２）。
【００６４】
ステップＳ９４３において通常アクセスによるリードが行われると、４Ｋバイトデータおよび第２エラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、４Ｋバイトデータおよび第２エラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０が４Ｋバイトデータおよび第２エラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９４４：Ｙｅｓ）、リード処理部２４０は不揮発性メモリ３００上の同じリードアドレスに対して高精度アクセスによるリードリクエストを発行する（ステップＳ９４５）。
【００６５】
ステップＳ９４２において高精度アクセスによるリードが行われると、５１２バイトデータおよび第１エラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、５１２バイトデータおよび第１エラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０が５１２バイトデータおよび第１エラー訂正コードに基づいてエラー訂正を行う。一方、ステップＳ９４５において高精度アクセスによるリードが行われると、４Ｋバイトデータおよび第２エラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、４Ｋバイトデータおよび第２エラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０が４Ｋバイトデータおよび第２エラー訂正コードに基づいてエラー訂正を行う。これらのエラー訂正の結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９４６：Ｙｅｓ）、リード処理をエラー終了する。 
【００６６】
エラー検出部２５０においてエラーが検出されなかった場合、または、エラーが検出されてもエラー訂正部２６０におけるエラー訂正に成功した場合には（ステップＳ９４４またはＳ９４６：Ｎｏ）、リード処理を正常終了する。
【００６７】
このように、本技術の第４の実施の形態によれば、訂正能力の低いサイズのリードアクセスについては、通常アクセスをスキップして高精度アクセスを行うことにより、訂正不可能エラーの発生を未然に防ぐことができる。
【００６８】
＜５．第５の実施の形態＞
上述の第１の実施の形態では、リード対象となるデータがどのような性質を有するものであっても、まず通常アクセスによるリードを実行し、エラー訂正不可能な場合にのみ高精度アクセスによるリードを行っていた。この第５の実施の形態では、リード対象のデータの性質に応じて、通常アクセスを省略して、当初から高精度アクセスによるリードを実行する。なお、情報処理システムの基本的な構成は、図１および図２により説明したものと同様であるため、説明を省略する。
【００６９】
この第５の実施の形態では、ホストコンピュータ１００からのアクセスが頻繁に発生するホットデータと、アクセス頻度が低いコールドデータとの２種類にデータを分類して取り扱う。すなわち、ホットデータは、頻繁にアクセスされることから、アクセス時間が短いことが要求されるため、通常アクセスが適用される。一方、コールドデータは、長期保存により保持特性が劣化している場合もあることから、高精度アクセスが適用される。なお、ホットデータとコールドデータの判別は、データへのアクセスログを管理する方法や、そのデータが保存される領域の属性としてホストコンピュータ１００から指定する方法等が考えられる。
【００７０】
［リード処理の動作］
図１０は、本技術の第５の実施の形態における情報処理システムのリード処理の手順例を示す図である。この第５の実施の形態では、リード処理部２４０はホストコンピュータ１００からのリードコマンドを受け取ると、そのリードデータがホットデータであるかコールドデータであるかを判断する。ホットデータであるかコールドデータであるかの判断は、様々な手法により実現できる。例えば、リードコマンドに情報が含まれる場合にはその情報から判断することができる。また、リードアクセスするデータの記録時にライトコマンドに情報が含まれておりメモリコントローラが保持している場合には、その保持している情報から判断することができる。また、ライト処理の後にリードコマンドやライトコマンドとは異なるコマンドにより、該当データに対する情報がメモリコントローラに指示される場合には、その指示された情報から判断することができる。また、メモリコントローラがアクセス頻度等を計数して判断するようにしてもよい。
【００７１】
リードデータがホットデータに該当する場合には（ステップＳ９５１：Ｙｅｓ）、通常アクセスによりリードリクエストを発行する（ステップＳ９５３）。一方、リードデータがコールドデータに該当する場合には（ステップＳ９５１：Ｎｏ）、通常アクセスをスキップして高精度アクセスによるリードリクエストを発行する（ステップＳ９５２）。
【００７２】
ステップＳ９５３において通常アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９５４：Ｙｅｓ）、リード処理部２４０は不揮発性メモリ３００上の同じリードアドレスに対して高精度アクセスによるリードリクエストを発行する（ステップＳ９５５）。
【００７３】
ステップＳ９５２またはＳ９５５において高精度アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９５６：Ｙｅｓ）、リード処理をエラー終了する。
【００７４】
エラー検出部２５０においてエラーが検出されなかった場合、または、エラーが検出されてもエラー訂正部２６０におけるエラー訂正に成功した場合には（ステップＳ９５４またはＳ９５６：Ｎｏ）、リード処理を正常終了する。
【００７５】
このように、本技術の第５の実施の形態によれば、コールドデータに対するアクセスについては、通常アクセスをスキップして高精度アクセスを行うことにより、訂正不可能エラーの発生を未然に防ぐことができる。
【００７６】
＜６．第６の実施の形態＞
不揮発性メモリ上に保存されたデータは保存期間が長期になるほど劣化が進み、再度書き込み直すことによって、その保持特性もリフレッシュされることが知られている。そこで、この第６の実施の形態においては、通常アクセスによるリードにおいて、ビットエラーの訂正数が所定の閾値を越えた場合には、そのメモリセルに対してリフレッシュが必要であると判断する。そのリフレッシュ動作では正しいデータがリードされることが必要であり、また、リフレッシュ動作自体はホストコンピュータからのデータアクセスではなくリード時間が長くても問題とはならないため、高精度アクセスを適用することができる。なお、情報処理システムの基本的な構成は、図１および図２により説明したものと同様であるため、説明を省略する。
【００７７】
［リード処理の動作］
図１１は、本技術の第６の実施の形態における情報処理システムのリード処理の手順例を示す図である。この第６の実施の形態では、リード処理部２４０はホストコンピュータ１００からのリードコマンドを受け取ると、不揮発性メモリ３００上のリードアドレスに対してリードリクエストを発行する（ステップＳ９６３）。この場合、リードモード設定部２４１において、リードモードとして通常アクセスが設定される。すなわち、これにより不揮発性メモリ３００において、高速であるが比較的精度の低い通常のリード方法によりリードアクセスが行われる。
【００７８】
ステップＳ９６３において通常アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９６４：Ｙｅｓ）、リード処理部２４０は不揮発性メモリ３００上の同じリードアドレスに対して高精度アクセスによるリードリクエストを発行する（ステップＳ９６５）。
【００７９】
通常アクセスによるリードについてエラーが検出されなかった場合、または、エラーが検出されてもエラー訂正部２６０におけるエラー訂正に成功した場合には（ステップＳ９６４：Ｎｏ）、リード処理を正常終了する。ただし、エラー訂正が行われた場合において訂正されたエラービット数が所定の閾値を超えているときには（ステップＳ９６７：Ｙｅｓ）、リード処理部２４０は不揮発性メモリ３００に対してリフレッシュ処理を行い（ステップＳ９６８）、リード処理を正常終了する。
【００８０】
ステップＳ９６５において高精度アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９６６：Ｙｅｓ）、リード処理をエラー終了する。
【００８１】
高精度アクセスによるリードについてエラーが検出されなかった場合、または、エラーが検出されてもエラー訂正部２６０におけるエラー訂正に成功した場合にも（ステップＳ９６６：Ｎｏ）、リフレッシュ処理が行われる（ステップＳ９６８）。その後、リード処理を正常終了する。
【００８２】
なお、ステップＳ９６４において訂正不可能なエラーが発生した場合、高精度アクセスによるリード（ステップＳ９６５）を行うことなく、エラー終了するようにしてもよい。また、この場合、高精度アクセスによるリード（ステップＳ９６５）を行うことなく、ステップＳ９６８と同様にリフレッシュリクエストを発行するようにしてもよい。
【００８３】
［リフレッシュ処理の動作］
図１２は、本技術の第６の実施の形態における情報処理システムのリフレッシュ処理（ステップＳ９６８）の手順例を示す図である。リフレッシュ処理においては、不揮発性メモリ３００のリフレッシュアドレスから高精度アクセスによるリードが行われる（ステップＳ９７１）。この高精度アクセスによるリードが行われると、リードデータおよびそのエラー訂正コードがエラー検出部２５０に供給される。エラー検出部２５０は、リードデータおよびそのエラー訂正コードに基づいて、エラー発生の有無を検出する。そして、エラーの発生が検出された場合には、エラー訂正部２６０がリードデータおよびそのエラー訂正コードに基づいてエラー訂正を行う。その結果、エラー訂正部２６０において訂正不可能なエラーが発生した場合には（ステップＳ９７２：Ｙｅｓ）、リード処理をエラー終了する。
【００８４】
一方、ステップＳ９７１における高精度アクセスによるリードについてエラーが検出されなかった場合、または、エラーが検出されてもエラー訂正部２６０におけるエラー訂正に成功した場合には（ステップＳ９７２：Ｎｏ）、その訂正されたリードデータが同じアドレスにライトされる（ステップＳ９７３）。これによりリフレッシュ動作が完了し、処理を正常終了する。
【００８５】
このように、本技術の第６の実施の形態によれば、将来的にエラー訂正不可能となる可能性が高いアドレスについてリフレッシュを行うことにより、訂正不可能エラーの発生を未然に防ぐことができる。
【００８６】
＜７．変形例＞
上述の実施の形態では、将来的にエラー訂正不可能となる可能性のバロメータとして、訂正されたエラービット数が所定の閾値を超えていることを要件としたが、これ以外にも様々な変形例が考えられる。
【００８７】
例えば、高温ではセルの保持特性が不安定である場合、周囲温度をバロメータとして、ある閾値より高温での読出し処理の場合には高精度アクセスを適用することにより、訂正不可能エラーの発生によるリード処理の失敗を防ぐことができる。
【００８８】
また、書き換え回数の増加に従ってセルの劣化が進む場合には、その書換え回数をバロメータとして、ある閾値より書換え回数が進んだ場合には高精度アクセスを適用することにより、訂正不可能エラーの発生によるリード処理の失敗を防ぐことができる。
【００８９】
また、データの保持期間の増加に従ってセル上に保存されたデータが劣化する場合には、その保持期間をバロメータとして、ある閾値を保持時間が越えた場合に高精度アクセスを適用することにより、訂正不可能エラーによるリード処理の失敗を防ぐことができる。
【００９０】
なお、上述の実施の形態では、リード処理における精度の改善が２段階であることを前提として説明を行ってきたが、３段階や４段階などである場合にも容易に拡張してその効果を拡大することが可能である。
【００９１】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【００９２】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disk）、メモリカード、ブルーレイディスク（Blu-ray Disc（登録商標））等を用いることができる。
【００９３】
なお、本技術は以下のような構成もとることができる。
（１）メモリ上のリードアドレスに対して標準の精度によるリードを要求する標準リード要求部と、
前記標準の精度によるリード要求に応答して前記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記エラー訂正によって訂正できないエラーが発生した場合には前記リードアドレスに対して前記標準の精度より高い精度によるリードを再度要求する高精度リード要求部と
を具備する記憶制御装置。
（２）前記エラー訂正によって全てのエラーが訂正された場合においてその訂正されたビット数が一定の要件を満たした際には前記リードアドレスを記録する記録部をさらに具備し、
新たなリード要求に係る新たなリードアドレスが前記記録部に記録されている場合には前記標準の精度によるリード要求を行うことなく前記高精度によるリード要求を前記新たなリードアドレスに対して行う
前記（１）に記載の記憶制御装置。
（３）前記記録部は、前記訂正されたビット数が所定の閾値を超えた場合に前記一定の要件を満たしたものとして前記リードアドレスを記録する
前記（２）に記載の記憶制御装置。
（４）前記リードアドレスが所定のアドレス領域に該当する場合には前記標準の精度によるリード要求を行うことなく前記高精度によるリード要求を前記リードアドレスに対して行う
前記（１）から（３）のいずれかに記載の記憶制御装置。
（５）前記所定のアドレス領域はシステム領域である前記（４）に記載の記憶制御装置。
（６）前記エラー訂正部は、第１サイズのデータに対しては第１のエラー訂正コードに基づいてエラー訂正を行い、前記第１サイズよりも大きい第２サイズのデータに対しては前記第１のエラー訂正コードよりも訂正能力の高い第２のエラー訂正コードに基づいてエラー訂正を行い、
前記リードアドレスに対するリード要求が前記第１サイズを超えない場合には前記標準の精度によるリード要求を行うことなく前記高精度によるリード要求を前記リードアドレスに対して行う
前記（１）から（５）のいずれかに記載の記憶制御装置。
（７）前記リードアドレスへのアクセス頻度が一定の要件を満たす場合には前記標準の精度によるリード要求を行うことなく前記高精度によるリード要求を前記リードアドレスに対して行う
前記（１）から（６）のいずれかに記載の記憶制御装置。
（８）前記エラー訂正によって全てのエラーが訂正された場合においてその訂正されたビット数が一定の要件を満たした際には前記リードアドレスに対してリフレッシュを要求するリフレッシュ要求部をさらに具備する
前記（１）から（７）のいずれかに記載の記憶制御装置。
（９）前記リフレッシュ要求部は、前記リードアドレスにおいて前記標準の精度より高い精度によるリードを行ってそのリード結果を前記リードアドレスにライトする旨を前記リフレッシュ要求として指示する
前記（８）に記載の記憶制御装置。
（１０）標準の精度によるリードおよび前記標準の精度より高い精度によるリードの何れのリード要求にも対応するメモリと、
前記メモリ上のリードアドレスに対して前記標準の精度によるリードを要求する標準リード要求部と、
前記標準の精度によるリード要求に応答して前記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記エラー訂正によって訂正できないエラーが発生した場合には前記リードアドレスに対して前記標準の精度より高い精度によるリードを再度要求する高精度リード要求部と
を具備する記憶装置。
（１１）標準の精度によるリードおよび前記標準の精度より高い精度によるリードの何れのリード要求にも対応するメモリと、
前記メモリへのリードアクセスを発行するホストコンピュータと、
前記リードアクセスに応答して前記メモリ上のリードアドレスに対して前記標準の精度によるリードを要求する標準リード要求部と、
前記標準の精度によるリード要求に応答して前記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正部と、
前記エラー訂正によって訂正できないエラーが発生した場合には前記リードアドレスに対して前記標準の精度より高い精度によるリードを再度要求する高精度リード要求部と
を具備する情報処理システム。
（１２）メモリ上のリードアドレスに対して標準の精度によるリードを要求する標準リード要求手順と、
前記標準の精度によるリード要求に応答して前記メモリから返送されたデータおよびエラー訂正コードに基づいてエラー訂正を行うエラー訂正手順と、
前記エラー訂正によって訂正できないエラーが発生した場合には前記リードアドレスに対して前記標準の精度より高い精度によるリードを再度要求する高精度リード要求手順と
を具備する記憶制御方法。
【符号の説明】
【００９４】
１００  ホストコンピュータ
２００  メモリコントローラ
２１０  ホストインターフェース
２２０  ライト処理部
２３０  エラー訂正コード生成部
２４０  リード処理部
２４１  リードモード設定部
２４２  エラーログ保持部
２５０  エラー検出部
２６０  エラー訂正部
２７０  メモリインターフェース
３００  不揮発性メモリ
３１０  制御インターフェース
３２０  メモリバッファ
３３０  メモリセルアレイ
【図１】
2014086062.tif 000003
【図２】
2014086062.tif 000004
【図３】
2014086062.tif 000005
【図４】
2014086062.tif 000006
【図５】
2014086062.tif 000007
【図６】
2014086062.tif 000008
【図７】
2014086062.tif 000009
【図８】
2014086062.tif 000010
【図９】
2014086062.tif 000011
【図１０】
2014086062.tif 000012
【図１１】
2014086062.tif 000013
【図１２】
2014086062.tif 000014