(57)【要約】【課題】端半導体記憶装置の耐久性を向上させることができるようにする。【解決手段】半導体記憶装置１０１から読み出したデータにエラーを検知した場合にエラー訂正を行ない、訂正したエラー数を出力するエラー訂正処理部２１と、半導体記憶装置１０１に備えられる複数の単位領域のうち、第１の単位領域において検出された第１エラー数と第１の単位領域に隣接する第２の単位領域において検出されたエラー数との合計が閾値以上の場合に、第１の単位領域のデータをキャッシュメモリ１０２からの追い出し対象外に設定する設定部１２とを備える。【選択図】図１
2019160197.tif 000002
【特許請求の範囲】
【請求項１】
半導体記憶装置から読み出したデータにエラーを検知した場合にエラー訂正を行ない、訂正したエラー数を出力するエラー訂正処理部と、
前記半導体記憶装置に備えられる複数の単位領域のうち、第１の単位領域において検出された第１エラー数と前記第１の単位領域に隣接する第２の単位領域において検出された第２エラー数との合計が第１閾値以上の場合に、前記第１の単位領域のデータをキャッシュメモリからの追い出し対象外に設定する設定部と
を備える、ストレージ装置。
【請求項２】
前記設定部は、
前記第１の単位領域に対してデータアクセスが行なわれてからアクセスがない状態での経過時間が第２閾値よりも短い場合に、前記第１の単位領域のデータを前記キャッシュメモリからの追い出し対象外に設定する
ことを特徴とする、請求項１記載のストレージ装置。
【請求項３】
前記設定部は、
前記第１の単位領域において検出された前記第１エラー数の、前記第１の単位領域において過去に検出されたエラー数からの増加数が、第３閾値以上の場合に、前記第１の単位領域のデータをキャッシュメモリからの追い出し対象外に設定する
ことを特徴とする、請求項１または２記載のストレージ装置。
【請求項４】
前記キャッシュメモリに格納されているデータを前記単位領域単位で管理するキャッシュ管理情報を格納する格納部を備え、
前記キャッシュ管理情報が、前記半導体記憶装置における前記単位領域の位置情報と、当該単位領域において検出されたエラー数とを備える
ことを特徴とする、請求項１〜３のいずれか１項に記載のストレージ装置。
【請求項５】
プロセッサと、半導体記憶装置から読み出したデータにエラーを検知した場合にエラー訂正を行ない、訂正したエラー数を出力するエラー訂正処理部とを備える情報処理装置において、
前記半導体記憶装置に備えられる複数の単位領域のうち、第１の単位領域において検出された第１エラー数と前記第１の単位領域に隣接する第２の単位領域において検出された第２エラー数との合計が第１閾値以上の場合に、前記第１の単位領域のデータをキャッシュメモリからの追い出し対象外に設定する
処理を、前記プロセッサに実行させる、制御プログラム。
【請求項６】
プロセッサと、半導体記憶装置から読み出したデータにエラーを検知した場合にエラー訂正を行ない、訂正したエラー数を出力するエラー訂正処理部とを備える情報処理装置において、
前記半導体記憶装置に備えられる複数の単位領域のうち、第１の単位領域において検出された第１エラー数と前記第１の単位領域に隣接する第２の単位領域において検出された第２エラー数との合計を第１閾値と比較する処理と、
前記第１エラー数と前記第２エラー数との合計が、前記第１閾値以上の場合に、前記第１の単位領域のデータをキャッシュメモリからの追い出し対象外に設定する処理と
を備える、制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストレージ装置，制御プログラムおよび制御方法に関する。
【背景技術】
【０００２】
近年、読み出しを主体として大容量のデータを安全かつ長期的に保存する一方で、必要時には高速に読み出すことが可能な記憶装置が実現され、例えば、映像データの長期間保管に用いられている。このような記憶装置をアーカイブストレージという場合がある。
【０００３】
このような記憶装置においてデータを保存する半導体デバイスとしては、大容量かつ比較的高速に読み書き可能で低コストな不揮発性メモリであるＮＡＮＤフラッシュメモリが多く採用されている。
【０００４】
また、ＮＡＮＤフラッシュメモリとしては、１つのメモリセルに、多値記憶可能なＭＬＣ（Multi Level Cell）と呼ばれる記録方式を用いたデバイスが採用されることが多くなってきている。
【０００５】
図８は従来のストレージシステムのハードウェア構成を示す図である。
【０００６】
ストレージシステム５００は、ストレージ装置５１０およびホスト５０１を備える。ホスト５０１は、ストレージ装置５１０に対してデータのリードやライトを行なう。例えば、ホスト５０１は、ストレージ装置５１０に対してデータアドレスを指定してデータの要求を行なう。
【０００７】
ストレージ装置５１０は、メモリコントローラ５０２，ＮＡＮＤフラッシュメモリ５０３およびＤＲＡＭ（Dynamic Random Access Memory）５０４を備える。
【０００８】
ＮＡＮＤフラッシュメモリ５０３はデータを保管する不揮発性の記憶装置であり、例えば、一般的なＳＳＤ（Solid State Drive）と同様の構成を有する。
【０００９】
メモリコントローラ５０２は、ＮＡＮＤフラッシュメモリ５０３およびＤＲＡＭ５０４に対するデータのリード／ライトを制御する。
【００１０】
ＤＲＡＭ５０４は、データを記憶する半導体メモリであり、ＮＡＮＤフラッシュメモリ５０３に比べてデータアクセスを高速に行なうことができる。ＤＲＡＭ５０４は、ストレージシステム５００においては、データを一時的に保管するキャッシュメモリとして機能する。以下、ＤＲＡＭ５０４をキャッシュメモリ５０４という場合がある。
【００１１】
キャッシュメモリ５０４にはＮＡＮＤフラッシュメモリ５０３から読み込んだデータを一時的に格納しておき、ホスト５０１からのデータ要求時にキャッシュ検索がヒットすれば、このキャッシュメモリ５０４から読み出すことで、高速なアクセスを実現する。
【００１２】
キャッシュメモリ５０４の容量は一般的にＮＡＮＤフラッシュメモリ５０３の容量よりも小さく、ＮＡＮＤフラッシュメモリ５０３全てのデータをキャッシュすることができない。そこで、一定の規則を以ってキャッシュメモリ５０４からのデータの追い出し（キャッシュアウトともいう）を行ない、次のデータをキャッシュする。
【００１３】
ＮＡＮＤフラッシュメモリ５０３においては、デバイスとしての構造上、リードおよびライトを複数回行なうと、データのリード不良やライト時のデータ化けが発生する寿命（耐久性の制限）が存在する。
【００１４】
特に、ＭＬＣを用いたＮＡＮＤフラッシュメモリ５０３は１つのメモリセルに複数の値を持たせているため、値の判別が早期に難しくなるため耐久性が低く、エラーが発生する確率も高い。さらに、微細化により、このような現象が顕著になってきており、メモリコントローラ５０２にはＥＣＣ（Error Collection Code）の符号化に代表されるエラー訂正機能が必須となっている。
【００１５】
特に、昨今のＮＡＮＤフラッシュメモリ５０３におけるエラーパターンとして、リードディスターブが挙げられる。これまでは寿命を縮める要因としてはライトが支配的だったが、リード時にもメモリセルに負担がかかることが分かっている。また、データアクセス対象のページだけでなく、メモリ内部のアドレス制御により、隣接するページ（周辺アドレス）にも影響を与えている。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２０１０−９２５２８号公報
【特許文献２】特開平８−２７９２９５号公報
【特許文献３】特開２００９−３７３１７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１７】
従来のストレージシステムにおいては、記憶媒体にＳＬＣ（Single Level Cell）が使われていることが多く、ＮＡＮＤフラッシュメモリ５０３におけるリードディスターブと呼ばれる劣化の問題が顕在化することが少なかった。
【００１８】
リードディスターブは、ＮＡＮＤフラッシュメモリのリード時において、同じブロックにあるページに対してリードが繰り返し行なわれることで、リード対象セルの近隣セルのデジタル値が変化してしまう現象である。これにより、リード対象セルの近隣セルのデータが正しく読み出せなくなる。
【００１９】
しかしながら、近年、記憶素子の容量密度向上のためＭＬＣが多用されるようになり、リードディスターブによる影響が無視できなくなってきている。
【００２０】
一般的にキャッシュメモリ５０４の管理方式として用いられているＬＲＵ（Least Recently Used）方式では、ホスト５０１からのアクセス頻度（時間経過）に基づいてＤＲＡＭ５０４から追い出すデータの判定を行なっている。  
すなわち、ＬＲＵ方式においては、キャッシュがフルになった時にキャッシュメモリにおいて最も旧いデータをキャッシュメモリ５０４からの追い出し（削除）対象とする。換言すると、アクセスに対する時間経過を世代番号で管理し、キャッシュ要否を判断する。
【００２１】
このようなＬＲＵ方式においては、全体的なフラッシュメモリのリード回数を減らすことは出来るが、リード時のＮＡＮＤフラッシュメモリ５０３の劣化は考慮されていない。
【００２２】
例えば、アクセスされる時間的に局所的な頻度は少ないが、間隔を空けて何度もアクセスが行なわれるページ（アドレス）は、ＬＲＵ方式ではキャッシュの追い出し対象となる。これにより、ＮＡＮＤフラッシュメモリ５０３へのデータアクセスが発生し、ＮＡＮＤフラッシュメモリ５０３の劣化が進んでしまうという課題が有る。
【００２３】
また、ＬＲＵ方式においては、キャッシュヒットが発生した特定のアドレスのみを対象としてキャッシュ追い出し制御を行なうため、キャッシュヒットが発生したアドレスの周囲のページについては考慮されていない。従って、リードディスターブにおける周辺アドレスの保護、キャッシュといった点について考慮がされておらず、これらによってもＮＡＮＤフラッシュメモリ５０３の劣化が進んでしまうという課題がある。
【００２４】
１つの側面では、本発明は、半導体記憶装置の耐久性を向上させることができるようにすることを目的とする。
【課題を解決するための手段】
【００２５】
このため、このストレージ装置は、半導体記憶装置から読み出したデータにエラーを検知した場合にエラー訂正を行ない、訂正したエラー数を出力するエラー訂正処理部と、前記半導体記憶装置に備えられる複数の単位領域のうち、第１の単位領域において検出された第１エラー数と前記第１の単位領域に隣接する第２の単位領域において検出された第２エラー数との合計が第１閾値以上の場合に、前記第１の単位領域のデータをキャッシュメモリからの追い出し対象外に設定する設定部とを備える。
【発明の効果】
【００２６】
一実施形態によれば、半導体記憶装置の耐久性を向上させることができる。
【図面の簡単な説明】
【００２７】
【図１】実施形態の一例としてのストレージ装置を備えるストレージシステムの構成を例示する図である。
【図２】実施形態の一例としてのストレージシステムにおけるキャッシュ管理情報を例示する図である。
【図３】（ａ），（ｂ）は実施形態の一例としてのストレージシステムにおける近接ページを説明するための図である。
【図４】実施形態の一例としてのストレージシステムにおけるキャッシュ追い出し対象を決定するための優先順位を説明するための図である。
【図５】実施形態のストレージシステムにおける予測ＣＥ数に基づくキャッシュ追い出し対象の決定手法を説明するための図である。
【図６】実施形態の一例としてのストレージシステムにおけるリード要求の処理方法を説明するフローチャートである。
【図７】図６に示したフローチャートのステップＡ７の置換対象の選択手法の詳細を説明するフローチャートである。
【図８】従来のストレージシステムのハードウェア構成を示す図である。
【発明を実施するための形態】
【００２８】
以下、図面を参照して本ストレージ装置，制御プログラムおよび制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００２９】
（Ａ）構成
図１は実施形態の一例としてのストレージ装置１００を備えるストレージシステム１の構成を例示する図である。
【００３０】
図１に示すように、ストレージシステム１は、ＰＣ（Personal Computer）等のホスト２００とストレージ装置１００とを備える。ホスト２００とストレージ装置１００とは、ＳＡＳ（Serial Attached Small Computer System Interface）やＦＣ（Fibre Channel），ネットワーク等のインタフェースを介して接続されている。
【００３１】
ホスト２００は、図示しないＣＰＵ（Central Processing Unit）等のプロセッサを備え、このプロセッサによりアプリケーションを実行することで、種々の機能を実現する。
【００３２】
ストレージ装置１００は、後述の如く、複数種類の記憶装置（図１に示す例では、ＮＡＮＤフラッシュメモリ１０１およびＤＲＡＭ１０２）を備え、これらの記憶装置の記憶領域をホスト２００に提供する。階層ストレージ装置１が提供する記憶領域には、ホスト２００においてアプリケーションの実行により生成されたデータや、アプリケーションを実行するために用いられるデータ等が格納される。
【００３３】
ホスト２００がストレージシステム１の記憶領域に対してデータのライトやリードを行なうことで、ＩＯアクセスが生じる。
【００３４】
図１に示すように、ストレージ装置１００は、メモリコントローラ１１０，ＮＡＮＤフラッシュメモリ１０１およびＤＲＡＭ１０２を備える。
【００３５】
ＮＡＮＤフラッシュメモリ１０１は、種々のデータやプログラム等を格納する記憶装置の一例であり、不揮発性記憶素子のフラッシュメモリ（半導体記憶装置）である。ＮＡＮＤフラッシュメモリ１０１はＭＬＣであってもよい。
【００３６】
ＤＲＡＭ１０２（第２の記憶装置）は、半導体メモリであり、ＮＡＮＤフラッシュメモリ１０１とは異なる性能の（例えばより高速な）記憶装置の一例である。ＤＲＡＭ１０２はキャッシュメモリとして用いられる。以下、ＤＲＡＭ１０２をキャッシュメモリ１０２という場合がある。
【００３７】
本実施形態において、互いに異なる記憶装置として、ＮＡＮＤフラッシュメモリ１０１およびＤＲＡＭ１０２を例に挙げているが、これに限定されるものではない。ＮＡＮＤフラッシュメモリ１０１とキャッシュメモリ１０２との代わりに、性能差（例えばリード／ライトの速度差）のある種々の記憶装置が用いてもよい。
【００３８】
メモリコントローラ１１０は、ホスト２００からのデータアクセス要求に応じて、ＮＡＮＤフラッシュメモリ１０１およびＤＲＡＭ１０２への種々のアクセスを行なう。例えば、ホスト２００からデータ要求（リード）が行なわれると、メモリコントローラ１１０は、ＮＡＮＤフラッシュメモリ１０１もしくはＤＲＡＭ１０２から要求されたデータをリードし、リードした実データをホスト２００に応答（データ応答）する。
【００３９】
メモリコントローラ１１０は、キャッシュ管理部１０，データアクセス制御部２０，およびエラー訂正処理部２１を備える。
【００４０】
エラー訂正処理部２１は、ＮＡＮＤフラッシュメモリ１０１からリードされたデータに対して符号誤り（エラー）の検出を行ない、エラーが検出された場合に誤り訂正（エラー訂正）を行なう。なお、エラー検出およびエラー訂正は既知の種々の手法で実現することができ、その説明は省略する。エラー訂正処理部２１は例えばエラー訂正回路により実現してもよい。
【００４１】
また、エラー訂正処理部２１は、エラー訂正を行なったエラーの数（ＣＥ数）をキャッシュ管理部１０に出力（通知）する。なお、ＣＥはCorrectable Errorの略称である。
【００４２】
データアクセス制御部２０は、ホスト２００から入力されるデータアクセス要求を処理する。例えば、データアクセス制御部２０は、ホスト２００からリード要求（データ要求）が入力されると、このデータ要求に伴って入力されるデータアドレスに基づき、後述するキャッシュ管理部１０に対してキャッシュ検索を入力する。データアクセス制御部２０は、このキャッシュ検索に対してキャッシュ管理部１０から応答される検索結果に基づいて、ＮＡＮＤフラッシュメモリ１０１もしくはＤＲＡＭ１０２に対してデータ要求を発行する。
【００４３】
具体的には、キャッシュ検索の結果、キャッシュヒットした場合、すなわち、要求されたデータがキャッシュメモリ１０２にある旨の結果応答がキャッシュ管理部１０からされた場合には、データアクセス制御部２０は、キャッシュメモリ１０２にデータ要求を行なう。
【００４４】
このようにキャッシュメモリ１０２からリードされたデータ（キャッシュ読み込みデータ）は、ホスト２００に実データとして応答される。
【００４５】
一方、キャッシュ検索の結果、キャッシュミスした場合、すなわち、要求されたデータがキャッシュメモリ１０２にない旨の結果応答がキャッシュ管理部１０からされた場合には、データアクセス制御部２０は、ＮＡＮＤフラッシュメモリ１０１にデータ要求を行なう。
【００４６】
ＮＡＮＤフラッシュメモリ１０１からリードされたデータ（ＮＡＮＤ読み込みデータ）は、エラー訂正処理部２１によってエラー検出が行なわれた後、ホスト２００に実データとして応答される。また、エラー訂正処理部２１によってエラーが検出された場合にはエラー訂正処理部２１によるエラー訂正が行なわれた後に、ホスト２００に実データとして応答される。
【００４７】
また、ＮＡＮＤフラッシュメモリ１０１から読み出されたデータは、エラー訂正処理部２１によってエラー検出が行なわれ、必要に応じてエラー訂正が行なわれた後に、キャッシュメモリ１０２に格納される（キャッシュ用データ書き込み）。
【００４８】
さらに、データアクセス制御部２０は、ＮＡＮＤフラッシュメモリ１０１に対して行なったデータ要求のデータアドレスを、キャッシュ管理部１０に通知することでキャッシュ管理部１０へのキャッシュ登録を行なう。
【００４９】
キャッシュ管理部１０は、キャッシュメモリ１０２に関する管理を行なう。キャッシュ管理部１０は、図１に示すように、情報管理部１１およびキャッシュアクセス制御部１２を備える。
【００５０】
情報管理部１１は、キャッシュメモリ１０２を管理するための情報を管理する。具体的には、情報管理部１１は、キャッシュ管理情報１１１ａおよびキャッシュ履歴情報１１１ｂを管理する。これらのキャッシュ管理情報１１１ａおよびキャッシュ履歴情報１１１ｂを構成する各情報は、例えば、メモリコントローラ１１０に備えられた図示しないメモリ（格納部）に格納される。
【００５１】
図２は実施形態の一例としてのストレージシステム１におけるキャッシュ管理情報１１１ａを例示する図である。
【００５２】
キャッシュ管理情報１１１ａは、キャッシュメモリ１０２に格納されているデータ（ページ）を管理する。キャッシュ管理情報１１１ａは、ＮＡＮＤフラッシュメモリ１０１におけるページと呼ばれる所定サイズのデータ範囲領域（単位領域）毎に、ＮＡＮＤアドレス，世代番号，該当ＣＥ数，近接ＣＥ数，履歴ＣＥ数およびフラグＡ〜Ｄ（ＦＬＡＧ＿Ａ〜ＦＬＡＧ＿Ｄ）を対応付けて構成されている。すなわち、キャッシュ管理情報１１１ａにおいては、ＮＡＮＤフラッシュメモリ１０１のページ毎にエントリが構成される。以下、各エントリに対応するページを該当ページという場合がある。
【００５３】
ＮＡＮＤアドレスは、ＮＡＮＤフラッシュメモリ１０１における該当ページの物理的な位置を表す。
【００５４】
世代番号は、ページに対して行なわれたデータアクセスに対する時間経過を示す情報である。例えば、キャッシュメモリ１０２への登録（キャッシュ登録）およびキャッシュ管理情報１１１ａの更新時に、データアクセスが行なわれたページに対応する世代番号が更新される。
【００５５】
世代番号は、例えば、キャッシュメモリ１０２への登録およびキャッシュ管理情報１１１ａの更新時に、他のどのページの世代番号よりも大きな値に更新される。
【００５６】
本実施形態においては、世代番号の値が小さいほど最近の（前回の）アクセスが古いページを示すものとする。
【００５７】
該当ＣＥ数は、該当ページにおいて検出されたＣＥ数であり、ＮＡＮＤフラッシュメモリ１０１からのデータリード時にエラー訂正処理部２１によって検出されたＣＥ数がページ単位で登録される。
【００５８】
ＣＥ数とは、例えば、エラー訂正処理部２１において訂正されたＮＡＮＤフラッシュメモリ１０１のページあたりのビット数を表す。一般的に、ＮＡＮＤフラッシュメモリ１０１のページサイズは４０９６ｂｙｔｅ（４ＫＢ）である。エラー訂正処理部２１の実装方法にも依存するが、例えば、ＢＣＨ符号を用いたエラー訂正手法では４０９６ｂｉｔ当たり５０ｂｉｔ前後の訂正能力がある。そのため、ページあたりでのＣＥ数は０〜５０ｂｉｔまでの数値がＣＥ数として保存されてもよい。
【００５９】
ＣＥ数が多いページは、再度リードを行なうと劣化が進み、エラー数が増加するおそれがある。そこで、本ストレージシステム１においては、ＣＥ数が多いページを保護対象として、そのデータをキャッシュメモリ１０２に残すことでＮＡＮＤフラッシュメモリ１０１の保護を図る。
【００６０】
該当ＣＥ数には、キャッシュメモリ１０２におけるノーヒット時に、ＮＡＮＤフラッシュメモリ１０１からリードを行なった際のＣＥ数がページ単位で登録される。
【００６１】
近接ＣＥ数は、該当ページの周辺のページであって、アドレス信号を共有する隣接（近接）する近接ページで検出されたＣＥ数である。
【００６２】
リードディスターブは、実際にリードを行なうページ（該当ページ）だけでなく、アドレス信号を共有する周辺のページについても影響を及ぼす。そこで、本ストレージシステム１においては、該当ページとこの該当ページに隣接する隣接ページとを含めた複数のページのＣＥ数の合計を所定の閾値と比較する。そして、これらのＣＥ数の合計が所定の閾値よりも多ければ、それらの隣接ページを該当ページと同一のページと見なして保護対象とし、それらのページのデータをキャッシュメモリ１０２に残すよう制御する。
【００６３】
図３（ａ），（ｂ）は実施形態の一例としてのストレージシステム１における近接ページを説明するための図である。図３（ａ）はＮＡＮＤフラッシュメモリ１０１上における該当ページと近接ページとの位置関係を例示する図、図３（ｂ）は該当ページと近接ページとの位置関係をテーブルで例示する図である。
【００６４】
図３（ａ），（ｂ）においては、該当ページを符号Ａで示し、近接ページを符号Ｂ，Ｃ，Ｄ，Ｅで示す。
【００６５】
近接ページは、該当ページに物理的に近接しているページを指す。ただし、ＮＡＮＤフラッシュメモリ１０１のＬＳＩ（Large Scale Integration）内部の物理的な配置やアドレス線の制御方法によって近接ページの定義が変わる。そのため、制御対象となるメモリデバイスのデータシートやメーカーからの情報を入手して近接ページを定義してもよい。
【００６６】
図３（ａ），（ｂ）に示す例においては、簡略化のため、アドレス＝ページアドレスであり、また、論理的な配置＝物理的な配置であるものとする。
【００６７】
図３（ａ），（ｂ）に示す例において、リード対象のページ（該当ページ）ＡのRowアドレスが“RA”, Columnアドレスが“CA”であるとする。
【００６８】
例えば、近接ページＢのアドレスはRowアドレスが“RA-1”、Columnアドレスが“CA”となり、RowアドレスとColumnアドレスとから近接ページＢのＮＡＮＤフラッシュメモリ１０１上のアドレス（ＮＡＮＤアドレス）を求めることができる。同様に、例えば、近接ページＣのアドレスはRowアドレスが“RA” 、Columnアドレスが“CA - 1” となり、RowアドレスとColumnアドレスとから近接ページＣのＮＡＮＤアドレスを求めることができる。
【００６９】
近接ＣＥ数はキャッシュ管理情報１１１ａを参照することで取得することができる。例えば、ページＡの近接ＣＥ数は、ページＢの該当ＣＥ数とページＣの該当ＣＥ数とページＤの該当ＣＥ数とページＥの該当ＣＥ数とを合計することで算出することができる。
【００７０】
なお、図３（ａ），（ｂ）に示す例において、RowアドレスやColumnアドレスにおける“-1”もしくは“+1”に含まれる“1”は１ページ分のアドレスを現わす。
【００７１】
近接ＣＥ数が情報管理部１１に登録されているか否かは、キャッシュ管理部１０に登録されているＮＡＮＤアドレスを検索することによって判断することができる。例えば、仮にページＢのＮＡＮＤアドレスが情報管理部１１に登録されていない場合には、ページＢの該当ＣＥ数＝０としてもよい。
【００７２】
近接ＣＥ数は、近接ページのキャッシュ管理情報１１１ａに登録された該当ＣＥ数から取得される。
【００７３】
履歴ＣＥ数は、キャッシュ履歴のページのＣＥ数である。キャッシュ履歴のページとは、実データはキャッシュメモリ１０２には残っていないが、過去にキャッシュしたページである。履歴ＣＥ数においては、このようなキャッシュ履歴のページのページ番号および、そのページをリードした時のＣＥ数（履歴ＣＥ数）を記録している。すなわち、履歴ＣＥ数は、該当ページにおいて過去に検出されたエラー数に相当する。
【００７４】
例えば、同じページが複数回読み出された場合に、前回リードされた時のＣＥ数を履歴ＣＥ数として格納し、今回リードされた時のＣＥ数が該当ＣＥ数として格納される。
【００７５】
履歴ＣＥ数は、後述するキャッシュ履歴情報１１１ｂに登録されたＣＥ数から参照される。
【００７６】
ＦＬＡＧ＿Ａ，ＦＬＡＧ＿Ｂ，ＦＬＡＧ＿Ｃ，ＦＬＡＧ＿Ｄには、後述するキャッシュアクセス制御部１２がキャッシュメモリ１０２上における置換対象のフラグの選出（図７に示すフローチャート参照）を行なう際に判断される判断結果がそれぞれ記録される。
【００７７】
ＦＬＡＧ＿Ａには、該当ＣＥ数が基準値Ａより少ないとき“０”が、また、該当ＣＥ数が基準値Ａ以上の場合に“１”が設定される。
【００７８】
また、ＦＬＡＧ＿Ｂには、世代番号が基準値Ｂ（第２閾値）より小さい（古い）場合に“０”が、また、世代番号が基準値Ｂ以上の場合に“１”が設定される。
【００７９】
ＦＬＡＧ＿Ｃには、該当ＣＥ数が、履歴ＣＥ数と比較して基準値Ｃ（第３閾値）より少ない場合に“０”が、また、該当ＣＥ数が、履歴ＣＥ数と比較して基準値Ｃ以上である場合に“１”が、設定される。
【００８０】
ＦＬＡＧ＿Ｄは、該当ページと近接ページとのＣＥ数の合計が基準値Ｄ（第１閾値）より少ない場合に“０”が、また、該当ページと近接ページとのＣＥ数の合計が基準値Ｄ以上の場合に“１”が、設定される。
【００８１】
これらのＦＬＡＧ＿Ａ，ＦＬＡＧ＿Ｂ，ＦＬＡＧ＿Ｃ，ＦＬＡＧ＿Ｄへの判断結果の格納については、図７のフローチャートの説明において後述する。
【００８２】
キャッシュ管理情報１１１ａにおいては、各ページの最新の状態がエントリとして記録される。
【００８３】
キャッシュ履歴情報１１１ｂは、過去にキャッシュメモリ１０２に格納されていたデータ（ページ）を管理する。キャッシュ履歴情報１１１ｂはキャッシュ管理情報１１１ａと同様の構成を有し、キャッシュ管理情報１１１ａのいずれかのエントリに更新が行なわれると、その更新前のエントリはキャッシュ履歴情報１１１ｂに記録される。すなわち、キャッシュ履歴情報１１１ｂは、キャッシュ管理情報１１１ａの履歴として機能する。
【００８４】
例えば、ホスト２００からリード要求が入力され、ＮＡＮＤフラッシュメモリ１０１へのリードアクセスが発生すると、キャッシュ管理情報１１１ａにおける対応ページのエントリが更新される。このキャッシュ管理情報１１１ａにおいて更新された旧エントリはキャッシュ履歴情報１１１ｂに記録される。
【００８５】
以下、キャッシュ管理情報１１１ａおよびキャッシュ履歴情報１１１ｂをまとめてキャッシュ情報１１１という場合がある。情報管理部１１はキャッシュ情報１１１を管理する。
【００８６】
キャッシュ管理部１０は、キャッシュアクセス制御部１２からキャッシュ検索要求が入力されると、このキャッシュ検索要求に応じて、キャッシュ管理情報１１１ａに対して検索を指示することで、リード対象のデータがキャッシュメモリ１０２にあるかを確認する。
【００８７】
例えば、ホスト２００からデータアドレスを伴うリード要求が入力された場合には、キャッシュアクセス制御部１２は、情報管理部１１に対して、データアドレスを伴うキャッシュ検索要求を入力する。情報管理部１１は、入力されたデータアドレスに基づき、キャッシュ管理情報１１１ａの各ＮＡＮＤアドレスを検索することで、キャッシュメモリ１０２にリード対象のデータが格納されているかを判断する。
【００８８】
情報管理部１１は、検索結果（キャッシュヒットもしくはキャッシュミス）をキャッシュアクセス制御部１２に応答し、キャッシュアクセス制御部１２は、情報管理部１１からの応答をデータアクセス制御部２０に応答（結果応答）する。
【００８９】
また、情報管理部１１は、キャッシュアクセス制御部１２からキャッシュ情報（キャッシュ管理情報１１１ａ）に対するデータの登録や更新、削除の指示が入力されると、この指示に応じて、キャッシュ情報１１１に対して、データの登録や更新、削除を行なう。
【００９０】
キャッシュアクセス制御部１２は、キャッシュメモリ１０２に対するデータアクセスを制御する。
【００９１】
例えば、ホスト２００からリードのデータ要求がデータアクセス制御部２０に入力されると、データアクセス制御部２０はキャッシュアクセス制御部１２に対して、キャッシュ検索を要求する。
【００９２】
例えば、ホスト２００からデータアドレスを伴うリード要求が入力された場合には、キャッシュアクセス制御部１２は、情報管理部１１に対して、データアドレスを伴うキャッシュ検索要求を入力する。
【００９３】
また、キャッシュアクセス制御部１２は、情報管理部１１から応答された検索結果をデータアクセス制御部２０に応答する。
【００９４】
キャッシュアクセス制御部１２は、メモリコントローラ１１０全般の制御を行なう。例えば、キャッシュアクセス制御部１２は、ホスト２００からのデータ要求に対して、キャッシュ検索を行なう。キャッシュメモリ１０２に要求されたデータが存在しなければ（キャッシュヒットしなければ）、キャッシュアクセス制御部１２は、NANDフラッシュメモリ１０１からデータのリードを行なわせる。
【００９５】
また、キャッシュアクセス制御部１２は、NANDフラッシュメモリ１０１からリードされたデータがキャッシュメモリ１０２にライトされると、情報管理部１１に対してキャッシュ情報（キャッシュ管理情報１１１ａ）に対するデータの登録を指示する。
【００９６】
キャッシュアクセス制御部１２は、キャッシュメモリ１０２上のデータの置換が生じ、キャッシュメモリ１０２からデータが削除（キャッシュアウト）されると、情報管理部１１に対して、該当データのページをキャッシュ管理情報１１１ａから削除させる指示を行なう。また、キャッシュアクセス制御部１２は、キャッシュメモリ１０２上におけるデータ配置に変更が生じると、情報管理部１１に対して、該当データのページをキャッシュ管理情報１１１ａにおいて変更させる指示を行なう。
【００９７】
また、キャッシュアクセス制御部１２は、キャッシュメモリ１０２にキャッシュさせるデータの管理も行なう。
【００９８】
キャッシュメモリ１０２の容量は、ＮＡＮＤフラッシュメモリ１０１の容量よりも小さく、ＮＡＮＤフラッシュメモリ１０１の全てのデータをキャッシュメモリ１０２にキャッシュする事は出来ない。
【００９９】
そこで、キャッシュアクセス制御部１２は、一定の規則を以ってキャッシュメモリ１０２からのデータ追い出し処理を行ない、次のデータをキャッシュする。
【０１００】
本ストレージシステム１においては、ホスト２００からデータのリード要求を受けた時に、キャッシュメモリ１０２に空き領域がない場合（キャッシュフル）に、キャッシュアクセス制御部１２は、以下の処理を行なう。
【０１０１】
すなわち、キャッシュアクセス制御部１２は、ＮＡＮＤフラッシュメモリ１０１の保護を目的としてＮＡＮＤフラッシュメモリ１０１のページに優先順位を設定して、キャッシュメモリ１０２から追い出すデータ（キャッシュ追い出し対象）を決定する。
【０１０２】
図４は実施形態の一例としてのストレージシステム１におけるキャッシュ追い出し対象を決定するための優先順位を説明するための図である。
【０１０３】
キャッシュアクセス制御部１２は、この図４に例示する優先順位に従って、キャッシュ追い出し対象のページを決定する。
【０１０４】
図４においては、ページにおけるＣＥ数と世代番号とに基づいて１〜８の優先順位を設定する例を示し、優先順位の値が小さい程、優先してキャッシュ追い出し対象とする。
【０１０５】
本ストレージシステム１においては、ＮＡＮＤフラッシュメモリ１０１においてＣＥ数が多いページは劣化が進んでいる領域であると考えられるので、該当領域の保護を図るために、該当領域へのデータアクセスが少なくなるように制御を行なう。すなわち、ＮＡＮＤフラッシュメモリ１０１における保護対象の領域のデータ（ページデータ）をキャッシュメモリ１０２に残すように制御することで、ＮＡＮＤフラッシュメモリ１０１における保護対象領域へのデータアクセスを減らす。
【０１０６】
そのため、ＮＡＮＤフラッシュメモリ１０１において劣化が少なく、保護対象とする必要がないと思われる領域のページデータを、優先的にキャッシュ追い出し領域として選択する。
【０１０７】
例えば、ページのＣＥ数を所定の基準値（閾値）Ａと比較し、ＣＥ数がこの基準値Ａ以上のページをキャッシュ追い出し対象外としてキャッシュメモリ１０２に残し、ＣＥ数がこの基準値Ａよりも小さいページを優先してキャッシュ追い出し対象とする。すなわち、ＣＥ数が多いページを保護対象としてキャッシュメモリ１０２に残し、ＣＥ数が少ないページを優先してキャッシュ追い出し対象とする。
【０１０８】
また、ページの世代番号を所定の基準値（第２閾値）Ｂと比較し、世代番号がこの基準値Ｂよりも新しいページをキャッシュ追い出し対象外としてキャッシュメモリ１０２に残し、世代番号がこの基準値Ｂよりも古いページを優先してキャッシュ追い出し対象とする。すなわち、世代番号の値が大きく、最後にアクセスが生じてからアクセスがない状態での期間が短いページを保護対象としてキャッシュメモリ１０２に残す。そして、世代番号の値が小さく、最後にアクセスが生じてからアクセスがない期間が長いページを優先してキャッシュ追い出し対象とする。
【０１０９】
さらに、ＣＥ数の観点から、同一ページにおける過去（履歴）のＣＥ数と比較し、ＣＥ数の増加数が所定の基準値（第３閾値）Ｃ以上のページをキャッシュ追い出し対象外としてキャッシュメモリ１０２に残す。そして、ＣＥ数の増加数が所定の基準値（第３閾値）Ｃよりも少ないページを優先してキャッシュ追い出し対象とする。
【０１１０】
また、キャッシュアクセス制御部１２は、該当ＣＥ数と近接ＣＥ数との和が所定の基準値（第１閾値）Ｄ以上のページをキャッシュ追い出し対象外としてキャッシュメモリ１０２に残す。そして、該当ＣＥ数と近接ＣＥ数との和が所定の基準値（第４の基準値）Ｄよりも少ないページを優先してキャッシュ追い出し対象とする。
【０１１１】
該当ＣＥ数と近接ＣＥ数との和が所定の基準値（第１閾値）Ｄ以上である場合には、該当ページに近接する各ページのＣＥ数も多く、ＮＡＮＤフラッシュメモリ１０１において、これらの近接ページに対応する領域についても劣化が生じていると考えられる。そこで、本ストレージシステム１においては、このようなページを保護対象として、キャシュ追い出し対象とせず、データをキャッシュメモリ１０２に残すことでＮＡＮＤフラッシュメモリ１０１における当該領域へのアクセスを抑制して保護する。
【０１１２】
また、キャッシュアクセス制御部１２は、キャッシュ管理情報１１１ａおよびキャッシュ履歴情報１１１ｂを参照して、該当ページの世代番号と該当ＣＥ数と履歴ＣＥ数とから、次回（世代番号の差以降）にリードを行なうときのＣＥ数を外挿で推測する。そして、キャッシュアクセス制御部１２は、推測したＣＥ数の値がエラー訂正処理部２１の訂正可能数を超える場合に、該当ページを保護対象としてキャッシュメモリ１０２に残す対象とする。
【０１１３】
すなわち、キャッシュアクセス制御部１２は、過去におけるＣＥ数の実績に基づいて次回リード時のＣＥ数（予測ＣＥ数）の予測を行ない、この予測ＣＥ数を用いてキャッシュ追い出し対象の決定を行なう。
【０１１４】
図５は実施形態のストレージシステム１における予測ＣＥ数に基づくキャッシュ追い出し対象の決定手法を説明するための図である。
【０１１５】
図５においては、該当ＣＥ数＝ａとし、履歴ＣＥ数=ｂとする。また、エラー訂正処理部２１における訂正可能なＣＥ数（ＣＥ訂正可能数）=ｃとし、次回リード時の予測ＣＥ数＝ｄとする。
【０１１６】
履歴ＣＥ数（ｂ）から該当ＣＥ数（ａ）への増分が（ａ−ｂ）であることから、ＣＥ数の増加率やリード間隔が均一であると仮定すると、次回リード時の予測ＣＥ数（ｄ）は以下の式（１）で求めることができる。
次回リード時の予測ＣＥ数（ｄ）＝ａ＋（ａ−ｂ）  ・・・（１）
【０１１７】
ここで、次回リード時の予測ＣＥ数（ｄ）が、訂正可能数（ｃ）を超えると訂正不可能となるため、以下の条件式（２）が満たされていないと次回リード時に、エラー訂正処理部２１において訂正不可能となる。
ａ＋（ａ−ｂ）≦ｃ  ・・・（２）
【０１１８】
すなわち、該当ＣＥ数（ａ）が以下に示す式（３）を満たす値になっていないと次回リード時に、エラー訂正処理部２１において訂正不可能となる。
ａ≦（ｂ＋ｃ）／２  ・・・（３）
【０１１９】
上記の基準値は、リード間隔やＣＥ数の増分が均一であると仮定しているが、実際にはこれらの値にばらつきが生じるため、訂正数可能数に係数ｋ（０≦ｋ≦１）をかけてマージンを持たせて基準値ｃ′’を設定し判定を行なうことが望ましい。
【０１２０】
また、上記の例においては、該当ＣＥ数の増分に着目した基準値を設定しているが、これに限定されるものではない。例えば、近接ページも含めたＣＥ数の増分に着目した基準値を設定してもよく、種々変形して実施することができる。
【０１２１】
（Ｂ）動作
上述の如く構成された実施形態の一例としてのストレージシステム１におけるリード要求の処理方法を、図６に示すフローチャート（ステップＡ１〜Ａ１０）に従って説明する。
【０１２２】
ステップＡ１において、ホスト２００からリード要求（データ要求）が入力され、データアクセス制御部２０が、ホスト２００から、このデータ要求とリード対象データアドレスを取得する。
【０１２３】
ステップＡ２において、データアクセス制御部２０は、キャッシュ管理部１０のキャッシュアクセス制御部１２に対して、キャッシュ検索を要求する。キャッシュアクセス制御部１２は、データアドレスを伴う検索要求を情報管理部１１に入力する。
【０１２４】
ステップＡ３において、情報管理部１１は、キャッシュ管理情報１１１ａを検索し、リード対象のデータがキャッシュメモリ１０２に格納されているか、すなわち、キャッシュヒットしたかを確認する。
【０１２５】
確認の結果、キャッシュヒットした場合（ステップＡ３のＹＥＳルート参照）、ステップＡ４に移行する。ステップＡ４においては、情報管理部１１がキャッシュ管理情報１１１ａにおける、リードアクセス先に対応するページの世代番号を更新する。情報管理部１１はキャッシュアクセス制御部１２に対して検索結果を応答し、キャッシュアクセス制御部１２はデータアクセス制御部２０に対して検索結果を応答する。
【０１２６】
ステップＡ５において、データアクセス制御部２０は、キャッシュメモリ１０２に格納されているリード対象データをリードして、ホスト２００に応答させる。
【０１２７】
一方、ステップＡ３における確認の結果、キャッシュヒットしなかった場合（ステップＡ３のＮＯルート参照）、ステップＡ６に移行する。
【０１２８】
ステップＡ６においては、キャッシュアクセス制御部１２は、キャッシュメモリ１０２がキャッシュフルの状態であるかを確認する。確認の結果、キャッシュメモリ１０２がキャッシュフルでない場合（ステップＡ６のＮＯルート参照）ステップＡ９に移行する。
【０１２９】
また、ステップＡ６における確認の結果、キャッシュメモリ１０２がキャッシュフルである場合には（ステップＡ６のＹＥＳルート参照）、ステップＡ７に移行する。
【０１３０】
ステップＡ７においては、キャッシュアクセス制御部１２が、キャッシュメモリ１０２に格納されているページデータの中から置換対象となるページデータ、すなわち、キャッシュアウトさせるページデータを選出する。
【０１３１】
ステップＡ８において、キャッシュアクセス制御部１２は、キャッシュメモリ１０２における置換対象のデータを削除（キャッシュアウト）させる。また、キャッシュアクセス制御部１２は、情報管理部１１に対して、キャッシュメモリ１０２から削除したページデータのエントリをキャッシュ管理情報１１１ａから削除させる。キャッシュ管理情報１１１ａから削除されたエントリはキャッシュ履歴情報１１１ｂに格納される。その後、ステップＡ９に移行する。
【０１３２】
ステップＡ９において、キャッシュアクセス制御部１２は、情報管理部１１に、キャッシュ管理情報１１１ａへ、キャッシュメモリ１０２に新たに格納されるリードデータについての情報を登録させる。
【０１３３】
ステップＡ１０において、データアクセス制御部２０は、ＮＡＮＤフラッシュメモリ１０１からリード対象のデータをリードさせる。ＮＡＮＤフラッシュメモリ１０１からリードされたデータはエラー訂正処理部２１に入力され、このエラー訂正処理部２１においてエラー検出が行なわれた後、ホスト２００にデータ応答として送信される。なお、エラー訂正処理部２１において訂正可能なエラー（ＣＥ）が検出された場合には、エラー訂正処理部２１はこのエラーを訂正し、このエラー訂正が行なわれたリードデータがホスト２００に応答データとして送信される。
【０１３４】
また、エラー訂正処理部２１はエラー訂正を行なった場合に、ＣＥ数をキャッシュアクセス制御部１２（キャッシュ管理部１０）に通知する。
【０１３５】
キャッシュアクセス制御部１２は、エラー訂正処理部２１から通知されたＣＥ数を情報管理部１１に通知し、キャッシュ管理情報１１１ａにおける対応するエントリのＣＥ数を更新させる。
【０１３６】
また、ＮＡＮＤフラッシュメモリ１０１から読み出され、必要に応じてエラー訂正が行なわれたリードデータは、キャッシュメモリ１０２にも転送され、このキャッシュメモリ１０２に格納（キャッシュイン）される。
【０１３７】
次に、図６に示したフローチャートのステップＡ７の置換対象の選択手法の詳細を、図７に示すフローチャート（ステップＢ１〜Ｂ１７）に従って説明する。
【０１３８】
ステップＢ１において、キャッシュアクセス制御部１２は、情報管理部１１に対して、キャッシュ管理情報１１１ａにおいて、ＣＥ数が基準値Ａよりも少ないページがあるか（以下、条件J_01という場合がある）を確認する。
【０１３９】
ステップＢ１における確認の結果、ＣＥ数が基準値Ａよりも少ないページがある場合には（ステップＢ１のＹＥＳルート参照）、ＦＬＡＧ＿Ａに“０”を設定し、ステップＢ２に移行する。
【０１４０】
ステップＢ２においては、キャッシュアクセス制御部１２は、世代番号が基準値Ｂよりも古いページがあるか（以下、条件J_02という場合がある）を確認する。
【０１４１】
ステップＢ２における確認の結果、世代番号が基準値Ｂよりも古いページがある場合には（ステップＢ２のＹＥＳルート参照）、ＦＬＡＧ＿Ｂに“０”を設定し、ステップＢ３に移行する。
【０１４２】
ステップＢ３においては、キャッシュアクセス制御部１２は、上述した条件J_01および条件J_02の両方を満たす全てのページを選択する。
【０１４３】
ステップＢ４において、キャッシュアクセス制御部１２は、ステップＢ３において選択されたページにおいて、該当のページのＣＥ数を履歴と比較して、ＣＥ数の増加数が基準値Ｃよりも少ないページがあるか（以下、条件J_03という場合がある）を確認する。
【０１４４】
ステップＢ４における確認の結果、ＣＥ数の増加数が所定の基準値Ｃよりも少ないページがない場合には（ステップＢ４のＮＯルート参照）、ＦＬＡＧ＿Ｃに“１”を設定し、ステップＢ５に移行する。
【０１４５】
ステップＢ５において、キャッシュアクセス制御部１２は、ステップＢ３において選択されたページにおいて、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがあるか（以下、条件J_04という場合がある）を確認する。
【０１４６】
ステップＢ５における確認の結果、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがない場合には（ステップＢ５のＮＯルート参照）、ＦＬＡＧ＿Ｄに“１”を設定し、ステップＢ６に移行する。
【０１４７】
ステップＢ６において、キャッシュアクセス制御部１２は、上述した条件J_01を満たし、且つ、条件J_02を満たさない全てのページを選択する。
【０１４８】
ステップＢ７において、キャッシュアクセス制御部１２は、ステップＢ６において選択されたページにおいて、該当のページのＣＥ数を履歴と比較して、ＣＥ数の増加数が基準値Ｃよりも少ないページがあるか（条件J_03）を確認する。
【０１４９】
ステップＢ７における確認の結果、ＣＥ数の増加数が所定の基準値Ｃよりも少ないページがない場合には（ステップＢ７のＮＯルート参照）、ＦＬＡＧ＿Ｃに“１”を設定し、ステップＢ８に移行する。
【０１５０】
ステップＢ８において、キャッシュアクセス制御部１２は、ステップＢ６において選択されたページにおいて、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがあるか（条件J_04）を確認する。
【０１５１】
ステップＢ８における確認の結果、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがない場合には（ステップＢ８のＮＯルート参照）、ＦＬＡＧ＿Ｄに“１”を設定し、ステップＢ１０に移行する。
【０１５２】
また、ステップＢ４およびステップＢ７における確認の結果、ＣＥ数の増加数が所定の基準値Ｃよりも少ないページがある場合には（ステップＢ４のＹＥＳルート，ステップＢ７のＹＥＳルート参照）、ＦＬＡＧ＿Ｃに“０”を設定し、ステップＢ９に移行する。
【０１５３】
さらに、ステップＢ５およびステップＢ８における確認の結果、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがある場合にも（ステップＢ５のＹＥＳルート，ステップＢ８のＹＥＳルート参照）、ＦＬＡＧ＿Ｄに“０”を設定し、ステップＢ９に移行する。
【０１５４】
一方、ステップＢ１における確認の結果、ＣＥ数が基準値Ａよりも少ないページがない場合には（ステップＢ１のＮＯルート参照）、ＦＬＡＧ＿Ａに“１”を設定し、ステップＢ１０に移行する。
【０１５５】
ステップＢ１０において、キャッシュアクセス制御部１２は、世代番号が基準値Ｂよりも古いページがあるか（条件J_02）を確認する。
【０１５６】
ステップＢ１０における確認の結果、世代番号が基準値Ｂよりも古いページがある場合には（ステップＢ１０のＹＥＳルート参照）、ＦＬＡＧ＿Ｂに“０”を設定し、ステップＢ１１に移行する。
【０１５７】
ステップＢ１１において、キャッシュアクセス制御部１２は、上述した条件J_01を満たし、且つ、条件J_02を満たさない全てのページを選択する。
【０１５８】
ステップＢ１２において、キャッシュアクセス制御部１２は、ステップＢ１１において選択されたページにおいて、該当のページのＣＥ数を履歴と比較して、ＣＥ数の増加数が基準値Ｃよりも少ないページがあるか（条件J_03）を確認する。
【０１５９】
ステップＢ１２における確認の結果、ＣＥ数の増加数が所定の基準値Ｃよりも少ないページがない場合には（ステップＢ１２のＮＯルート参照）、ＦＬＡＧ＿Ｃに“１”を設定し、ステップＢ１３に移行する。
【０１６０】
ステップＢ１３において、キャッシュアクセス制御部１２は、ステップＢ１１において選択されたページにおいて、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがあるか（条件J_04）を確認する。
【０１６１】
ステップＢ１３における確認の結果、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがない場合には（ステップＢ１３のＮＯルート参照）、ＦＬＡＧ＿Ｄに“１”を設定し、ステップＢ１４に移行する。
【０１６２】
ステップＢ１４において、キャッシュアクセス制御部１２は、上述した条件J_01を満たさず、且つ、条件J_02も満たさない全てのページを選択する。
【０１６３】
ステップＢ１５において、キャッシュアクセス制御部１２は、ステップＢ１４において選択されたページにおいて、該当のページのＣＥ数を履歴と比較して、ＣＥ数の増加数が基準値Ｃよりも少ないページがあるか（条件J_03）を確認する。
【０１６４】
ステップＢ１５における確認の結果、ＣＥ数の増加数が所定の基準値Ｃよりも少ないページがない場合には（ステップＢ１５のＮＯルート参照）、ＦＬＡＧ＿Ｃに“１”を設定し、ステップＢ１６に移行する。
【０１６５】
ステップＢ１６において、キャッシュアクセス制御部１２は、ステップＢ１４において選択されたページにおいて、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがあるか（条件J_04）を確認する。
【０１６６】
ステップＢ１６における確認の結果、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがない場合には（ステップＢ１６のＮＯルート参照）、ＦＬＡＧ＿Ｄに“１”を設定し、ステップＢ１７に移行する。
【０１６７】
ステップＢ１７において、キャッシュアクセス制御部１２は、世代番号が最も古いページを置換対象として決定し、処理を終了する。
【０１６８】
また、ステップＢ１２およびステップＢ１５における確認の結果、ＣＥ数の増加数が所定の基準値Ｃよりも少ないページがある場合には（ステップＢ１２のＹＥＳルート，ステップＢ１５のＹＥＳルート参照）、ＦＬＡＧ＿Ｃに“０”を設定し、ステップＢ９に移行する。
【０１６９】
さらに、ステップＢ１３およびステップＢ１６における確認の結果、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページがある場合にも（ステップＢ１３のＹＥＳルート，ステップＢ１６のＹＥＳルート参照）、ＦＬＡＧ＿Ｄに“０”を設定し、ステップＢ９に移行する。
【０１７０】
ステップＢ９において、キャッシュアクセス制御部１２は、ステップＢ４，Ｂ５，Ｂ７，Ｂ８，Ｂ１２，Ｂ１３，Ｂ１５，Ｂ１６のいずれかの条件を満たすページから、世代番号が最も古いページを置換対象として決定し、処理を終了する。
【０１７１】
（Ｃ）効果
このように、本発明の一実施形態としてのストレージシステム１によれば、キャッシュ管理部１０の情報管理部１１が、ページ毎に該当ＣＥ数，近接ＣＥ数および履歴ＣＥ数を管理する。
【０１７２】
そして、キャッシュアクセス制御部１２が、該当ＣＥ数と近接ＣＥ数との和が所定の基準値（第１閾値）Ｄ以上のページをキャッシュ追い出し対象外としてキャッシュメモリ１０２に残す。そして、該当ＣＥ数と近接ＣＥ数との和が基準値Ｄよりも少ないページを優先してキャッシュ追い出し対象とする。
【０１７３】
これにより、ＮＡＮＤフラッシュメモリ１０１において劣化が生じていると考えられるページのデータがキャッシュメモリ１０２から追い出されずにキャッシュメモリ１０２に保持される。これにより、このページに対してホスト２００からリード要求が行なわれた場合においても、ＮＡＮＤフラッシュメモリ１０１における当該ページへのアクセスを抑止することができる。データをキャッシュメモリ１０２に残すことでＮＡＮＤフラッシュメモリ１０１へのデータアクセスを回避することができる。これにより、当該領域の劣化の進みを抑止し、ＮＡＮＤフラッシュメモリ１０１の耐久性を向上させることができる。
【０１７４】
キャッシュアクセス制御部１２が、リード対象のデータのページ（該当ページ）において検出されたＣＥ数だけでなく、その隣接する隣接ページにおいて検出されたＣＥ数に基づいて、キャッシュメモリ１０２からの追い出し対象を判断する。このように、リード対象のページだけでなく、その隣接ページのＣＥ数も考慮することで、リードディスターブに着目したキャッシュ要否の判断ができ、ＮＡＮＤフラッシュメモリ１０１の耐久性を向上させることができる。  
【０１７５】
また、キャッシュアクセス制御部１２が、ページの世代番号を所定の基準値（第２閾値）Ｂと比較し、世代番号がこの基準値Ｂよりも新しいページをキャッシュ追い出し対象外としてキャッシュメモリ１０２に残す。そして、世代番号がこの基準値Ｂよりも古いページを優先してキャッシュ追い出し対象とする。
【０１７６】
これにより、最後にアクセスが生じてからアクセスがない状態での期間が短く、アクセスが再度発生する可能性が高いページのデータがキャッシュメモリ１０２に残すことができる。従って、このページに対してホスト２００からリード要求が行なわれた場合においても、ＮＡＮＤフラッシュメモリ１０１へのデータアクセスを回避することができる。すなわち、当該領域の劣化の進みを抑止し、ＮＡＮＤフラッシュメモリ１０１の耐久性を向上させることができる。
【０１７７】
キャッシュアクセス制御部１２が、ページのＣＥ数を所定の基準値（閾値）Ａと比較し、ＣＥ数がこの基準値Ａ以上のページをキャッシュ追い出し対象外としてキャッシュメモリ１０２に残し、ＣＥ数がこの基準値Ａよりも小さいページを優先してキャッシュ追い出し対象とする。
【０１７８】
これにより、ＣＥ数が多いページを保護対象としてキャッシュメモリ１０２に残すことができる。従って、このページに対してホスト２００からリード要求が行なわれた場合においても、ＮＡＮＤフラッシュメモリ１０１へのデータアクセスを回避することができる。すなわち、当該領域の劣化の進みを抑止し、ＮＡＮＤフラッシュメモリ１０１の耐久性を向上させることができる。
【０１７９】
また、キャッシュアクセス制御部１２が、同一ページにおける過去（履歴）のＣＥ数と比較し、ＣＥ数の増加数が所定の基準値（第３閾値）Ｃ以上のページをキャッシュ追い出し対象外としてキャッシュメモリ１０２に残す。そして、ＣＥ数の増加数が所定の基準値（第３閾値）Ｃよりも少ないページを優先してキャッシュ追い出し対象とする。
【０１８０】
これにより、ＣＥ数が増加傾向にあるページを保護対象としてキャッシュメモリ１０２に残すことができる。従って、このページに対してホスト２００からリード要求が行なわれた場合においても、ＮＡＮＤフラッシュメモリ１０１へのデータアクセスを回避することができる。すなわち、当該領域の劣化の進みを抑止し、ＮＡＮＤフラッシュメモリ１０１の耐久性を向上させることができる。
【０１８１】
（Ｄ）その他
上述した実施形態において、メモリコントローラ１１０としての機能（キャッシュ管理部１０，データアクセス制御部２０，およびエラー訂正処理部２１）は、回路装置によるハードウェアで実現してもよい。また、これらの機能の内、少なくとも一部を、プロセッサが制御プログラムを実行することで実現してもよい。プロセッサは、ＣＰＵ（Central Processing Unit），ＭＰＵ（Micro Processing Unit），ＤＳＰ（Digital Signal Processor），ＡＳＩＣ（Application Specific Integrated Circuit），ＰＬＤ（Programmable Logic Device），ＦＰＧＡ（Field Programmable Gate Array）のいずれか一つであってもよい。また、プロセッサは、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【０１８２】
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１８３】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１８４】
（Ｅ）付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１８５】
（付記１）
半導体記憶装置から読み出したデータにエラーを検知した場合にエラー訂正を行ない、訂正したエラー数を出力するエラー訂正処理部と、
前記半導体記憶装置に備えられる複数の単位領域のうち、第１の単位領域において検出された第１エラー数と前記第１の単位領域に隣接する第２の単位領域において検出された第２エラー数との合計が第１閾値以上の場合に、前記第１の単位領域のデータをキャッシュメモリからの追い出し対象外に設定する設定部と
を備える、ストレージ装置。
【０１８６】
（付記２）
前記設定部は、
前記第１の単位領域に対してデータアクセスが行なわれてからアクセスがない状態での経過時間が第２閾値よりも短い場合に、前記第１の単位領域のデータを前記キャッシュメモリからの追い出し対象外に設定する
ことを特徴とする、付記１記載のストレージ装置。
【０１８７】
（付記３）
前記設定部は、
前記第１の単位領域において検出された前記第１エラー数の、前記第１の単位領域において過去に検出されたエラー数からの増加数が、第３閾値以上の場合に、前記第１の単位領域のデータをキャッシュメモリからの追い出し対象外に設定する
ことを特徴とする、付記１または２記載のストレージ装置。
【０１８８】
（付記４）
前記キャッシュメモリに格納されているデータを前記単位領域単位で管理するキャッシュ管理情報を格納する格納部を備え、
前記キャッシュ管理情報が、前記半導体記憶装置における前記単位領域の位置情報と、当該単位領域において検出されたエラー数とを備える
ことを特徴とする、付記１〜３のいずれか１項に記載のストレージ装置。
【０１８９】
（付記５）
プロセッサと、半導体記憶装置から読み出したデータにエラーを検知した場合にエラー訂正を行ない、訂正したエラー数を出力するエラー訂正処理部とを備える情報処理装置において、
前記半導体記憶装置に備えられる複数の単位領域のうち、第１の単位領域において検出された第１エラー数と前記第１の単位領域に隣接する第２の単位領域において検出された第２エラー数との合計が第１閾値以上の場合に、前記第１の単位領域のデータをキャッシュメモリからの追い出し対象外に設定する
処理を、前記プロセッサに実行させる、制御プログラム。
【０１９０】
（付記６）
前記第１の単位領域に対してデータアクセスが行なわれてからアクセスがない状態での経過時間が第２閾値よりも短い場合に、前記第１の単位領域のデータを前記キャッシュメモリからの追い出し対象外に設定する
処理を、前記プロセッサに実行させる、付記５記載の制御プログラム。
【０１９１】
（付記７）
前記第１の位領域において検出された第１エラー数の、前記第１の位領域において過去に検出されたエラー数からの増加数が、第３閾値以上の場合に、前記第１の位領域のデータをキャッシュメモリからの追い出し対象外に設定する
処理を、前記プロセッサに実行させる、付記５または６に記載の制御プログラム。
【０１９２】
（付記８）
前記キャッシュメモリに格納されているデータを前記単位領域単位で管理するキャッシュ管理情報を格納させる処理を前記プロセッサに実行させ、
前記キャッシュ管理情報が、前記半導体記憶装置における前記単位領域の位置情報と、当該単位領域において検出されたエラー数とを備える
ことを特徴とする、付記５〜７のいずれか１項に記載の制御プログラム。
【０１９３】
（付記９）
プロセッサと、半導体記憶装置から読み出したデータにエラーを検知した場合にエラー訂正を行ない、訂正したエラー数を出力するエラー訂正処理部とを備える情報処理装置において、
前記半導体記憶装置に備えられる複数の単位領域のうち、第１の単位領域において検出された第１エラー数と前記第１の単位領域に隣接する第２の単位領域において検出された第２エラー数との合計を第１閾値と比較する処理と、
前記第１エラー数と前記第２エラー数との合計が、前記第１閾値以上の場合に、前記第１の単位領域のデータをキャッシュメモリからの追い出し対象外に設定する処理と
を備える、制御方法。
【０１９４】
（付記１０）
前記第１の単位領域に対してデータアクセスが行なわれてからアクセスがない状態での経過時間が第２閾値よりも短い場合に、前記第１の単位領域のデータを前記キャッシュメモリからの追い出し対象外に設定する処理
を備える、付記９記載の制御方法。
【０１９５】
（付記１１）
前記第１の位領域において検出された第１エラー数の、前記第１の位領域において過去に検出されたエラー数からの増加数が、第３閾値以上の場合に、前記第１の位領域のデータをキャッシュメモリからの追い出し対象外に設定する処理
を備える、付記９または１０に記載の制御方法。
【０１９６】
（付記１２）
前記キャッシュメモリに格納されているデータを前記単位領域単位で管理するキャッシュ管理情報を格納する処理
を備え、
前記キャッシュ管理情報が、前記半導体記憶装置における前記単位領域の位置情報と、当該単位領域において検出されたエラー数とを備える、付記９〜１１のいずれか１項に記載の制御方法。
【符号の説明】
【０１９７】
１    ストレージシステム
１００    ストレージ装置
１１０    メモリコントローラ
１０    キャッシュ管理部
１１    情報管理部
１１１    キャッシュ情報 
１１１ａ    キャッシュ管理情報
１１１ｂ    キャッシュ履歴情報
１２    キャッシュアクセス制御部
２０    データアクセス制御部
２１    エラー訂正処理部
１０１    ＮＡＮＤフラッシュメモリ
１０２    ＤＲＡＭ（キャッシュメモリ）
【図１】
2019160197.tif 000003
【図２】
2019160197.tif 000004
【図３】
2019160197.tif 000005
【図４】
2019160197.tif 000006
【図５】
2019160197.tif 000007
【図６】
2019160197.tif 000008
【図７】
2019160197.tif 000009
【図８】
2019160197.tif 000010