(57)【要約】 【課題】ホストの処理を軽減することが可能な記憶装置及びメモリシステムを提供する。【解決手段】第１の記憶装置１１は、不揮発性半導体記憶素子を含む第１の記憶部１５と、情報処理装置２１からの要求を受け、第１の記憶部１５を制御する制御部１２とを含む。第１の記憶装部１５には、情報処理装置２１から受信したデータと同一のデータが書き込まれる。制御部１２は、情報処理装置から供給される読み出し要求に応じて、読み出し要求に対応するデータが第１の記憶部内に存在しない場合、及び第１の記憶部内に存在するが、第１の記憶部から読み出した際に訂正不能なエラーを検出したことに応じて、読み出すべきデータが第１の記憶部に存在しないことを示す情報を情報処理装置に送る。【選択図】図１
2019023936.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性半導体記憶素子を含む第１の記憶部と、
情報処理装置からの要求を受け、前記第１の記憶部を制御する制御部と、
を具備し、
前記第１の記憶部には、前記情報処理装置から受信したデータが前記制御部により書き込まれ、
前記制御部は、前記情報処理装置から供給される読み出し要求に応じて、前記読み出し要求に対応するデータが前記第１の記憶部内に存在しない場合、及び前記第１の記憶部内に存在するが、前記第１の記憶部からデータを読み出した際に訂正不能なエラーを検出したことに応じて、読み出すべきデータが前記第１の記憶部に存在しないことを示す情報を前記情報処理装置に送ることを特徴とする記憶装置。
【請求項２】
前記第１の記憶部は、少なくともキャッシュ領域、及び管理領域を含むことを特徴とする請求項１記載の記憶装置。
【請求項３】
前記制御部は、前記第１の記憶部が不良領域を含む場合、前記不良領域の容量に相当する前記キャッシュ領域の容量を削減することを特徴とする請求項２記載の記憶装置。
【請求項４】
前記キャッシュ領域から読み出されたデータのエラーを訂正する第１のエラー訂正部と、
前記管理領域から読み出されたデータのエラーを訂正する第２のエラー訂正部と、
をさらに具備することを特徴とする請求項２記載の記憶装置。
【請求項５】
前記第１のエラー訂正部は、エラー訂正のための第１の強度を有し、前記第２のエラー訂正部は、エラー訂正のための前記第１の強度より高い第２の強度を有することを特徴とする請求項４記載の記憶装置。
【請求項６】
前記第１の記憶部は、データ領域を含むことを特徴とする請求項５記載の記憶装置。
【請求項７】
前記第１の強度より高く、前記第２の強度より低いエラー訂正のための第３の強度を有し、前記データ領域から読み出されたデータのエラーを訂正する第３のエラー訂正部をさらに具備することを特徴とする請求項６記載の記憶装置。
【請求項８】
前記制御部は、前記情報処理装置から受信したデータを前記キャッシュ領域に書き込み、前記読み出し要求を受けたデータが前記キャッシュ領域に存在するかどうかを判定することを特徴とする請求項２記載の記憶装置。
【請求項９】
前記訂正不能なエラーは、前記第１のエラー訂正部により前記第１の記憶部から読み出されたデータのエラーが訂正できないことを含むことを特徴とする請求項４記載の記憶装置。
【請求項１０】
エラー検出符号に基づき前記第１の記憶部から読み出されたデータのエラーを検出するエラー検出部を含み、
前記訂正不能なエラーは、前記エラー検出部により前記第１の記憶部から読み出されたデータからエラーが検出されたことを含むことを特徴とする請求項７記載の記憶装置。
【請求項１１】
不揮発性半導体記憶素子を含む第１の記憶部と、
情報処理装置からの要求を受け、前記第１の記憶部を制御する制御部と、
を含む第１の記憶装置と、
第２の記憶装置と、
を具備し、
前記第１の記憶部には、前記情報処理装置から前記第２の記憶装置へ書き込まれるデータと同一のデータが前記制御部により書き込まれ、
前記制御部は、前記情報処理装置から供給される読み出し要求に応じて、前記読み出し要求に対応するデータが前記第１の記憶部内に存在しない場合、及び前記第１の記憶部内に存在するが、前記第１の記憶部からデータを読み出した際に訂正可能なエラーを検出したことに応じて、読み出すべきデータが前記第１の記憶部に存在しないことを示す情報を前記情報処理装置に送ることを特徴とするメモリシステム。
【請求項１２】
前記読み出すべきデータが前記第１の記憶部に存在しないことを示す情報は、キャッシュミスを示す情報であることを特徴とする請求項１１記載のメモリシステム。
【請求項１３】
前記第２の記憶装置は、前記制御部から前記読み出すべきデータが前記第１の記憶部に存在しないことを示す情報が出力され、前記情報処理装置から前記読み出し要求が供給された場合、前記読み出し要求に対応するデータを前記情報処理装置に転送することを特徴とする請求項１２記載のメモリシステム。
【請求項１４】
不揮発性半導体記憶素子を含む第１の記憶部と、
情報処理装置からの要求を受け、前記第１の記憶部を制御する制御部と、
を具備し、
前記第１の記憶部には、前記情報処理装置から受信したデータが前記制御部により書き込まれ、
前記制御部は、前記情報処理装置から供給される読み出し要求に応じて、前記読み出し要求に対応するデータが前記第１の記憶部内に存在しない場合、及び前記第１の記憶部内に存在するが、前記第１の記憶部から読み出した際に訂正可能なエラーを検出したことに応じて、読み出すべきデータが前記第１の記憶部に存在しないことを示す情報を前記情報処理装置に送ることを特徴とする記憶装置。
【請求項１５】
不揮発性半導体記憶素子を含む第１の記憶部と、
情報処理装置からの要求を受け、前記第１の記憶部を制御する制御部と、
を含む第１の記憶装置と、
第２の記憶装置と、
を具備し、
前記第１の記憶部には、前記情報処理装置から第２の記憶装置へ書き込まれるデータと同一のデータが前記制御部により書き込まれ、
前記制御部は、前記情報処理装置から供給される読み出し要求に応じて、前記読み出し要求に対応するデータが前記第１の記憶部内に存在しない場合、及び前記第１の記憶部内に存在するが、前記第１の記憶部から読み出した際に訂正可能なエラーを検出したことに応じて、読み出すべきデータが前記第１の記憶部に存在しないことを示す情報を前記情報処理装置に送ることを特徴とするメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、例えばＳＳＤ(solid state drive)として実現される記憶装置、及び、例えばＳＳＤをキャッシュとして用いたメモリシステムに関する。
【背景技術】
【０００２】
例えばコンピュータ等の情報処理装置に接続して使用する外部記憶装置であって、不揮発性メモリとしてのＮＡＮＤフラッシュメモリを用いたＳＳＤが開発されている。
【０００３】
また、ＳＳＤは、hard disk drive (ＨＤＤ)などのキャッシュメモリとしても使用されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１８２６７４号公報
【特許文献２】特開２０１１−２０４０６０号公報
【特許文献３】特開２０１３−１９１１７４号公報
【特許文献４】米国特許出願公開第２０１３／００４２０５３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本実施形態は、ホストの処理を軽減することが可能な記憶装置及びメモリシステムを提供する。
【課題を解決するための手段】
【０００６】
本実施形態の記憶装置は、不揮発性半導体記憶素子を含む第１の記憶部と、情報処理装置からの要求を受け、前記第１の記憶部を制御する制御部と、を具備し、前記第１の記憶部には、前記情報処理装置から受信したデータが前記制御部により書き込まれ、前記制御部は、前記情報処理装置から供給される読み出し要求に応じて、前記読み出し要求に対応するデータが前記第１の記憶部内に存在しない場合、及び前記第１の記憶部内に存在するが、前記第１の記憶部からデータを読み出した際に訂正不能なエラーを検出したことに応じて、読み出すべきデータが前記第１の記憶部に存在しないことを示す情報を前記情報処理装置に送る。
【図面の簡単な説明】
【０００７】
【図１】本実施形態が適用されるメモリシステムの一例を示す概略構成図。
【図２Ａ】図１に示すＳＳＤのメモリ領域の一例を示す概略構成図。
【図２Ｂ】ＳＳＤのメモリ領域の他の例を示す概略構成図。
【図３】本実施形態に係るエラー訂正部の変形例を示すものであり、図２Ｂに対応する概略構成図。
【図４】本実施形態の書き込み処理を説明するために示すシーケンスチャート。
【図５】本実施形態の読み出し処理を説明するために示すシーケンスチャート。
【図６】本実施形態に係るメモリシステムに適用されるＳＳＤの一例を示す構成図。
【図７】本実施形態の変形例を示す概略構成図。
【図８】図７の一部の構成を示す概略構成図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して実施形態について説明する。
図１は、本実施形態に適用されるメモリシステムを概略的に示している。ＳＳＤ１１及びＨＤＤ３１は、コンピュータなどの情報処理装置(以下、ホストと称す)２１に接続され、ＳＳＤ１１は、ＨＤＤ３１のキャッシュメモリ（以下、単にキャッシュとも言う）として利用される。具体的には、ＳＳＤ１１、及びＨＤＤ３１は、図示せぬ例えばＳＡＴＡ（Serial Advanced Technology Attachment）、ＳＡＳ（Serial Attached SCSI）、又はＰＣＩ（Peripheral Component Interconnect）などのインターフェースを介してホスト２１に接続されている。ここで、メモリシステムとは、ＳＳＤ１１それ自体、及びＳＳＤ１１、ＨＤＤ３１及びホスト２１などを組み合わせて構成されたシステムを含む。
【０００９】
ホスト２１は、後述するように、ネットワークを介して別のホストに接続されることも可能であり、ＳＳＤ１１及びＨＤＤ３１を別のホストの遠隔ストレージとして利用することも可能である。
【００１０】
ホスト２１は、ＳＳＤ１１、及びＨＤＤ３１のデータの書き込み、及び読み出しを制御するデータ読み出し書き込み部２２を含んでいる。データ読み出し書き込み部２２は、ホスト２１上で動作する例えばソフトウェアにより実現される。データ読み出し書き込み部２２は、例えばＳＳＤ１１をファイルやブロックデバイスのキャッシュとして利用する場合、オペレーティングシステムやデバイスドライバの一部として実現され、特定のアプリケーションのデータキャッシュとして利用する場合、アプリケーションの一部として実現される。
【００１１】
ＳＳＤ１１は、例えばキャッシュ管理部１２、エラー検出部１３、エラー訂正部１４、フラッシュメモリ１５を含んでいる。
【００１２】
制御部としてのキャッシュ管理部１２は、ＳＳＤ１１のキャッシュ動作を制御するものであり、例えばＳＳＤ１１上で動作するソフトウェアとして実現される。具体的には、キャッシュ管理部１２は、フラッシュメモリ１５に設けられた後述するキャッシュ領域のアクセス、及びキャッシュ領域の容量などを管理する。
【００１３】
エラー検出部１３は、データの書き込み時、エラー検出符号（ＥＤＣ）として、例えばcyclic redundancy code（ＣＲＣ）を書き込みデータに付加する。また、エラー検出部１３は、データの読み出し時、読み出されたデータに含まれるエラー検出符号に基づき、エラーの有無を検出する。
【００１４】
エラー訂正部１４は、データの書き込み時、エラー訂正符号（ＥＣＣ）を書き込みデータに付加する。また、エラー訂正部１４は、データの読み出し時、読み出されたデータに含まれるエラー訂正符号に基づき、読み出しデータに含まれるエラーを訂正する。
【００１５】
エラー検出部１３、及びエラー訂正部１４は、ＳＳＤ１１上で動作する例えばソフトウェア、又はハードウェア、或いはそれらの組み合わせにより実現される。
【００１６】
フラッシュメモリ１５は、例えばＮＡＮＤフラッシュメモリにより構成されている。しかし、これに限定されるものではなく、後述するように、他のメモリを用いることも可能である。
【００１７】
図２Ａは、フラッシュメモリ１５の記憶領域の構成の一例を示している。フラッシュメモリ１５は、例えばキャッシュデータを格納するキャッシュ領域１５ａと、管理領域１５ｂとを含んでいる。管理領域１５ｂは、ホスト２１から供給される論理ブロックアドレス（ＬＢＡ）と、フラッシュメモリ１５内の物理ブロックアドレス（ＰＢＡ）との対応関係を示すルックアップテーブル(ＬＵＴ：lookup table)などの管理情報を含んでいる。管理情報は、キャッシュ領域１５ａのデータが書き換えられる毎に更新される。
【００１８】
図２Ｂは、フラッシュメモリ１５の記憶領域の構成の他の例を示している。図２Ｂに示す例の場合、フラッシュメモリ１５は、キャッシュ領域１５ａ、管理領域１５ｂに加えて、通常のデータを記憶するデータ領域１５ｃを含んでいる。このため、図２Ｂに示す例の場合、ＳＳＤ１１は、キャッシュとして使用される以外に、通常のデータを格納するためのストレージとしても利用される。管理領域１５ｂは、キャッシュ領域１５ａと、データ領域１５ｃの両方を管理する。
【００１９】
フラッシュメモリ１５の各領域は、消去単位として複数のブロックを有している。各ブロックは、複数のメモリセルを含んでいる。同時に選択される複数のメモリセルは、少なくとも１つのページを構成し、データはページ単位で書き込まれ、ページ単位で読み出される。
【００２０】
エラー訂正部１４は、フラッシュメモリ１５から読み出されたエラーを訂正するが、このエラー訂正部１４は、１つに限定されるものではなく、フラッシュメモリ１５の各領域に対応してそれぞれ設けてもよい。
【００２１】
図３は、図２Ｂの各領域に対応して、複数のエラー訂正部１４ａ、１４ｂ、１４ｃを設けた場合を示している。すなわち、フラッシュメモリ１５のキャッシュ領域１５ａ、管理領域１５ｂ、データ領域１５ｃに対応して、エラー訂正部１４ａ、１４ｂ、１４ｃがそれぞれ設けられている。キャッシュ領域１５ａに対応するエラー訂正部１４ａは、簡易な構成で第１の強度を有している。管理領域１５ｂに対応するエラー訂正部１４ｂは、第１の強度より高い第２の強度を有している。データ領域１５ｃに対応するエラー訂正部１４ｃは、第１の強度より高く、第２の強度より低い第３の強度を有している。すなわち、エラー訂正部１４ｂやエラー訂正部１４ｃは、例えば多ビットで高強度の訂正が可能なＢＨＣ符号やリード・ソロモン符号が適用され、エラー訂正部１４ａは、少ビットで高速処理が可能な例えばハミング符号が適用される。しかし、エラー訂正の方式は、これらに限定されるものではなく、変形可能である。
【００２２】
また、ＳＳＤ１１が、図２Ａに示す構成である場合、エラー訂正部１４ｃを除く、エラー訂正部１４ａ、及びエラー訂正部１４ｂが用いられる。
【００２３】
ＨＤＤ３１は、図示せぬ記憶領域と、管理領域を有し、書き込みデータは、記憶領域に書き込まれ、管理領域は、記憶領域を管理する。
（作用）
上記構成において、図４、図５を参照して、ＳＳＤ１１、ＨＤＤ３１、及びホスト２１の動作について説明する。ここで、フラッシュメモリ１５は、図２Ａに示す構成であるとする。
（データ書き込み処理）
図４に示すように、ホスト２１がＨＤＤ３１にデータを書込む場合、データ読み出し書き込み部２２は、ＨＤＤ３１とＳＳＤ１１に同じデータの書き込み要求を発行する（Ｓ１１）。すなわち、データの書き込みは、所謂ライトスルー（write-through）方式で実行される。具体的には、ホスト２１は、ＨＤＤ３１とＳＳＤ１１に対して、同一のデータを書き込むため、同一のコマンドを発行する。ここで、同一のコマンドとは、例えば同一の論理ブロックアドレス（ＬＢＡ）、及び同一のデータ長などを有するコマンドである。  書き込み要求を受けたＳＳＤ１１のキャッシュ管理部１２は、エラー検出部１３、エラー訂正部１４を経由してデータをフラッシュメモリ１５のキャッシュ領域１５ａに書き込む。すなわち、エラー検出部１３はエラー検出符号を書き込みデータに付与し（Ｓ１２）、図１に示すエラー訂正部１４、又は図３に示すエラー訂正部１４ａは、エラー訂正符号を書き込みデータに付与する（Ｓ１３）。エラー検出符号、及びエラー訂正符号が付与された書き込みデータは、フラッシュメモリ１５のキャッシュ領域１５ａに書込まれ（Ｓ１４）、管理領域１５ｂの管理情報が更新される（Ｓ１５）。
【００２４】
一方、書き込み要求を受けたＨＤＤ３１は、ＳＳＤ１１と同様に、書き込みデータにエラー検出符号、及びエラー訂正符号が付与される（Ｓ１２’、Ｓ１３’）。この書き込みデータは、ＨＤＤ３１の記憶領域に書込まれ（Ｓ１４’）、管理領域の管理情報が更新される（Ｓ１５’）。
（データ読み出し処理）
図５に示すように、ホスト２１がデータを読出す場合、データ読み出し書き込み部２２は、先ずＳＳＤ１１へ読み出し要求を発行する（Ｓ２１）。すなわち、データ読み出し書き込み部２２は、ＳＳＤ１１に対して読み出しコマンドと、論理ブロックアドレス、データ長などを発行する。
【００２５】
読み出し要求を受けたＳＳＤ１１のキャッシュ管理部１２は、読み出し要求を受けたデータがフラッシュメモリ１５のキャッシュ領域１５ａに存在するかどうかを判定する（Ｓ２２）。すなわち、キャッシュ管理部１２は、フラッシュメモリ１５の管理領域１５ｂをサーチし、読み出し要求を受けたデータがキャッシュ領域１５ａに存在するかどうかを判定する。この結果、キャッシュ領域１５ａに読み出し要求に対応するデータが存在しない場合、キャッシュ管理部１２は、読み出しエラーとしてのキャッシュミスをホスト２１に通知する（Ｓ２３）。具体的には、キャッシュ管理部１２は、ホスト２１からの読み出し要求に対する応答として、例えばＳＡＴＡ、ＳＡＳ、又はＰＣＩなどで使用されるプロトコルのリターンコードをホスト２１に転送する。このリターンコード内に、キャッシュミスを示すコードが設定される。
【００２６】
一方、キャッシュ領域１５ａにデータが存在すると判定された場合、キャッシュ領域１５ａからそのデータが読み出される（Ｓ２４）。この読み出されたデータは、図１に示すエラー訂正部１４（又は図３に示すエラー訂正部１４ａ）において、エラー訂正符号（ＥＣＣ）に基づきエラーが訂正される（Ｓ２５）。このエラー訂正において、訂正が不可能なほど多くのエラーが発生した場合、キャッシュ管理部１２は、読み出しエラーとしてのキャッシュミスをホストＳ２１に通知する（Ｓ２６）。
【００２７】
また、エラー訂正部１４において、エラーが発生しているにもかかわらずエラーが発見されなかった場合、又は、エラーが訂正できたとみなされたが実際にはエラーが訂正できなかった場合、エラー検出部１３において、エラー検出符号（ＥＤＣ）に基づき、エラーが検出される（Ｓ２７）。この結果、エラーが検出された場合、キャッシュ管理部１２は、読み出しエラーとしてのキャッシュミスをホスト２１に通知する（Ｓ２８）。
【００２８】
このように、キャッシュミスは、フラッシュメモリ１５内に読み出し要求に対応するデータが存在しないことを示す所謂キャッシュミスの他に、フラッシュメモリ１５内に読み出し要求に対応するデータが存在するが、要求されたデータを正しく読み出すことが困難であることを示している。
【００２９】
また、エラーが検出されなかった場合、キャッシュ管理部１２は、データがＳＳＤ１１に存在することを示すキャッシュヒットをホスト２１に通知し（Ｓ２９）、次いで、キャッシュ領域１５ａから読み出されたデータがホスト２１に転送される（Ｓ３０）。
【００３０】
一方、ホスト２１のデータ読み出し書き込み部２２は、ＳＳＤ１１から供給された通知がキャッシュミスか、キャッシュヒットかを判定する（Ｓ３１）。この結果、ＳＳＤ１１からの通知がキャッシュヒットであると判定された場合、データ読み出し書き込み部２２は、ＳＳＤ１１から転送されてきたデータを取り込み、利用する（Ｓ３２）。
【００３１】
また、ＳＳＤ１１からの通知がキャッシュミスであると判定された場合、ホスト２１のデータ読み出し書き込み部２２は、ＨＤＤ３１へ読み出し要求を発行する（Ｓ３３）。この読み出し要求は、例えばＳＳＤ１１に発行した読み出し要求と同じ論理アドレス、及びデータ長を有するコマンドである。ＨＤＤ３１は、この読み出し要求に応じてデータを読み出し、ホスト２１に転送する（Ｓ３４）。ホスト２１は、ＨＤＤ３１から転送されてきたデータを取り込み、利用する（Ｓ３２）。
【００３２】
上述したように、ホスト２１がＳＳＤ１１をアクセスする際、データ読み出し書き込み部２２は、論理ブロックアドレス(ＬＢＡ)でフラッシュメモリ１５内のデータの位置を指定する。ＳＳＤ１１はＬＢＡから物理ブロックアドレス（ＰＢＡ）への対応関係をＬＵＴで管理しており、データが存在するＬＢＡはブロック内に対応付けられる。通常のＳＳＤは、ユーザが利用できるストレージの容量（フラッシュメモリの容量から余裕ブロックを差し引いた容量）が予め固定されており、ストレージの容量がＬＢＡの上限となる。
【００３３】
一方、本実施形態のＳＳＤ１１は、ＬＢＡの上限は定められておらず、任意のＬＢＡを指定することができる。例えばＳＳＤ１１をブロックデバイスのキャッシュとして利用する場合、データ読み出し書き込み部２２は、ＨＤＤ３１のＬＢＡをそのままＳＳＤ１１のＬＢＡとして使用する。このため、ＳＳＤ１１において、キャッシュミスが生じた場合、ＨＤＤ３１をアクセスすることにより必要なデータを得ることができる。
【００３４】
尚、ホスト２１により書き込まれるデータがフラッシュメモリ１５の容量を超える場合、アクセス頻度の低いデータがキャッシュ管理部１２により消去される。アクセス頻度が低いデータであるかどうかは、通常のキャッシュで用いられる方式で判定することが可能である。この判定方式としては、例えばLeast Recently Used(ＬＲＵ)、Least Frequently Used(ＬＦＵ)、First In First Out(ＦＩＦＯ)、Adaptive Replacement Cache(ＡＲＣ)などを適用することが可能である。
【００３５】
アクセス頻度の低いデータの消去は、ＳＳＤ１１の通常のガベージコレクションとともに行なうことが可能である。このように、アクセス頻度の低いデータの消去をガベージコレクションと同時に行なうことにより、ガベージコレクションによるフラッシュメモリの疲弊や応答速度の低下を低減することが可能である。尚、ガベージコレクションとは、ブロック内の無効データを整理して空きブロックを作る処理である。
【００３６】
本実施形態において、疲弊によりエラー率が上昇したブロックも、読み書きができる間は使用することができる。この場合、キャッシュのヒット率が若干低下する。しかし、著しく疲弊して、例えばエラー検出が困難なブロックや、読み出し書き込みができなくなったブロックは、不良ブロック（不良領域）とされ、使用が禁止される。不良ブロックが発生した場合、不良ブロックの容量に相当するキャッシュ領域１５ａの容量が削減され、管理領域１５ｂの容量は削減されない。具体的には、不良ブロックの数に対応して、キャッシュ領域１５ａとして使用可能なブロックの数が削減される。このように、キャッシュ領域１５ａの容量は、例えばキャッシュ管理部１２により、不良ブロックの数に対応して管理されるため、ＳＳＤ１１の寿命を延ばすことが可能である。
【００３７】
尚、フラッシュメモリ１５が図２Ｂに示す構成である場合、例えばキャッシュ領域１５ａをアクセスする場合と、データ領域１５ｃをアクセスする場合とで、ホスト２１から発行される書き込み要求、及び読み出し要求を変えることにより、キャッシュ管理部１２は、キャッシュ領域１５ａと、データ領域１５ｃを区別してアクセスすることが可能である。
【００３８】
また、図２Ｂに示すように、通常のデータ領域１５ｃとキャッシュ領域１５ａとを備えるフラッシュメモリ１５において、不良ブロックが発生した場合、キャッシュ領域１５ａの容量が不良ブロックに従って削減される。したがって、通常のデータ領域１５ｃの容量は削減されないため、ＳＳＤ１１の寿命を延ばすことが可能である。
（効果）
上記実施形態によれば、ＳＳＤ１１は、キャッシュ管理部１２と、フラッシュメモリ１５内のキャッシュ領域１５ａを有し、データの書き込み時、ライトスルー方式により、ＳＳＤ１１のフラッシュメモリ１５のキャッシュ領域１５ａと、ＨＤＤ３１には、同じデータが書き込まれる。データの読み出し時、ホスト２１から、先ずＳＳＤ１１に読み出し要求が発行され、この読み出し要求に従って、フラッシュメモリ１５のキャッシュ領域１５ａからデータが読み出される。このデータの読み出しにおいて、データが存在しない、又は、訂正が不可能である、或いはエラー検出符号に基づきエラーが検出されたという読み出しエラーが生じた場合、キャッシュ管理部１２は、ホスト２１にキャッシュミスとして通知する。キャッシュミスの通知を受けたホスト２１は、改めてマスターとしてのＨＤＤ３１からデータを読み出すことにより、読み出し要求に対応するデータを得ている。
【００３９】
一般に、キャッシュの処理はＳＳＤが接続されたホスト側で行なわれ、ＳＳＤは書き込まれたデータがキャッシュデータであるか他のデータであるかを区別しない。これに対して、本実施形態は、上記のようにＳＳＤ１１にキャッシュ管理部１２を有し、キャッシュ管理部１２がキャッシュ領域１５ａへのアクセスやホスト２１への応答を管理している。このため、ホスト２１の処理を軽減することが可能である。
【００４０】
また、一般に、ＳＳＤで使われているフラッシュメモリのブロックは、書き込みを繰り返すと疲弊によってエラー率が次第に増加する。このエラーは、ＥＣＣを用いて訂正されるが、訂正が困難なほどエラー率が上がった場合、そのエラー率が高いメモリセルを含むブロックは不良ブロックとして使用できなくされる。不良ブロックによって減少した容量は予備ブロックにより補われるが、予備ブロックを使い果たした時点でＳＳＤへ書き込むことができなくなる。このため、多くのブロックが未だ利用可能であるにも拘らず、ＳＳＤは使用できなくなる。予備ブロックを増加することによりＳＳＤの寿命を延ばすことができるが、予備ブロックを増加するため、コストが高騰する。
【００４１】
これに対して、本実施形態の場合、ＳＳＤ１１は、キャッシュ管理部１２によりキャッシュ領域１５ａが管理され、高いエラー率を有するブロックも使い続けられる。この場合、キャッシュのヒット率が僅かに低下するが、ＨＤＤ３１からデータを読み出すことによりメモリシステムの動作に大きな影響は生じない。このため、コストの高騰を抑えてＳＳＤ１１の寿命を延ばすことが可能である。
【００４２】
また、本実施形態において、ＳＳＤ１１の容量は、キャッシュ管理部１２により管理され、著しく高いエラー率を有するブロックは不良ブロックとして、使用が禁止され、不良ブロックの分だけキャッシュの容量が削減される。この場合も、キャッシュのヒット率は低下するが、ＨＤＤ３１からデータを読み出すことによりメモリシステムの動作に大きな影響は生じない。しかも、管理領域１５の容量は削減されないため、消去できない重要なデータを確実に管理することができる。したがって、不良ブロックを含むＳＳＤ１１を使い続けることができる。
【００４３】
一般のＳＳＤにおいて、ストレージの容量やストレージに格納するデータの管理は、ホスト側で行なわれ、ＳＳＤによりこれらを変更することはできない。しかし、本実施形態のように、ＳＳＤ１１にキャッシュ管理部１２を設けることにより、キャッシュ領域１５ａの容量や、ＳＳＤ１１に格納するデータの管理を変更することが可能となる。したがって、ＳＳＤ１１を柔軟に管理することが可能である。
【００４４】
さらに、通常のデータを格納するデータ領域１５ｃと、キャッシュ領域１５ａとを備えたＳＳＤ１１の場合、不良ブロックの数に応じてデータ領域１５ｃの容量を減らさず、不良ブロックの分だけキャッシュ領域１５ａの容量を削減している。このため、ＳＳＤ１１の寿命を延ばすことが可能である。
【００４５】
また、フラッシュメモリ１５のキャッシュ領域１５ａ、管理領域１５ｂ、データ領域１５ｃにそれぞれエラー訂正部１４ａ、１４ｂ、１４ｃを設け、管理領域１５ｂは第２の強度のエラー訂正を行ない、キャッシュ領域１５ａは第２の強度より低い第１の強度でエラー訂正を行ない、データ領域１５ｃは第１の強度より高く、第２の強度より低い第３の強度でエラー訂正を行なっている。このため、全ての領域を高い強度でエラー訂正する場合に比べて、エラー訂正に必要なビット数を削減することが可能である。したがって、フラッシュメモリのコストを削減することが可能である。
【００４６】
さらに、ＮＡＮＤフラッシュメモリの世代が進んでメモリセルがさらに微細化された場合、或いは平面型のＮＡＮＤから立体型のＮＡＮＤに変化された場合、記憶保持能力が変化し、エラー率が上がることが予想される。このような場合においても、本実施形態は、キャッシュ管理部１２によりフラッシュメモリ１５を管理しているため、ＳＳＤ１１の寿命を延ばすことが可能である。
【００４７】
また、メモリセルとしてＮＡＮＤフラッシュメモリに代えて、他の不揮発メモリが使用された場合においても記憶保持能力が変化し、エラー率が上がる場合がある。このような場合においても、キャッシュ管理部１２によって、上記と同様に管理することにより、ＳＳＤ１１の寿命を延ばすことが可能である。
（ＳＳＤの具体例）
図６は、本実施形態が適用されるＳＳＤ１１の具体例を示している。図６において、図１と同一部分には同一符号を付している。
【００４８】
図１に示すＳＳＤ１１のキャッシュ管理部１２は、例えば図６に示すバックエンド４ＢのＣＰＵ４３Ｂ、及びこのＣＰＵ４３Ｂを動作させるプログラムに対応する。図１に示すエラー検出部１３、エラー訂正部１４は、例えば図６に示すＥＣＣ４９に対応する。図１に示すフラッシュメモリ１５は、図６に示すＮＡＮＤ１５に対応する。
【００４９】
図６において、コントローラ４は、フロントエンド４Ｆと、バックエンド４Ｂとを備える。
【００５０】
フロントエンド（ホスト通信部）４Ｆは、ホストインタフェース４１、ホストインタフェースコントローラ４２、暗号化／復号化部４４、及びＣＰＵ４３Ｆを備える。
【００５１】
ホストインタフェース４１は、ホスト２１との間で、各種の要求、ＬＢＡ、及びデータなどを通信する。要求としては、例えば書き込みコマンド、読み出しコマンド、消去コマンドなどがある。
【００５２】
ホストインタフェースコントローラ４２は、ＣＰＵ４３Ｆの制御に基づき、ホストインタフェース４１の通信を制御する。
【００５３】
暗号化／復号化部（Advanced Encryption Standard (AES)）４４は、データの書き込み動作において、ホストインタフェースコントローラ４２から供給される書き込みデータを暗号化し、バックエンド４Ｂの書き込みバッファＷＢに供給する。ＡＥＳ４４は、データ読み出し動作において、バックエンド４ＢのリードバッファＲＢから送信される暗号化された読み出しデータを復号化する。なお、このＡＥＳ４４を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
【００５４】
ＣＰＵ４３Ｆは、フロントエンド４Ｆの上記ホストインタフェース４１、ホストインタフェースコントローラ４２、ＡＥＳ４４を制御し、フロントエンド４Ｆの全体の動作を制御する。
【００５５】
バックエンド４Ｂは、ライトバッファＷＢ、リードバッファＲＢ、ＬＵＴ(Lookup table)４５、ＤＤＲＣ(Double data Rate Controller)４６、ＤＲＡＭ(Dynamic Random Access Memory)４７、ＤＭＡＣ(Direct Memory Access Controller)４８、ＥＣＣ(Error checking and Correction)４９、ランダマイザＲＺ、ＮＡＮＤＣ(NAND controller)５０、及びＣＰＵ４３Ｂを備える。
【００５６】
ライトバッファＷＢは、ホスト２１から送信された書き込みデータを一時的に格納する。具体的には、ライトバッファＷＢは、当該書き込みデータがＮＡＮＤ１５に適した所定のデータサイズになるまで、一時的にデータを格納する。
【００５７】
リードバッファＲＢは、ＮＡＮＤ１５から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファＲＢにおいて、読み出しデータは、ホスト２１に適した順序（ホスト２１が指定した論理ブロックアドレス（ＬＢＡ）の順序）になるように並び替えられる。
【００５８】
ＬＵＴ４５は、論理ブロックアドレス（ＬＢＡ）を物理ブロックアドレス（ＰＢＡ）に変換するためのデータである。
【００５９】
ＤＤＲＣ４６は、ＤＲＡＭ４７におけるＤＤＲ（Double Data Rate）を制御する。
【００６０】
ＤＲＡＭ４７は、例えば、ＬＵＴ４５を格納する不揮発性のメモリである。
ＤＭＡＣ４８は、内部バスＩＢを介して、書き込みデータや読み出しデータなどを転送する。
【００６１】
図６において、１つのＤＭＡＣ４８が図示されているが、コントローラ４は、２以上のＤＭＡＣ４８を含んでもよい。ＤＭＡＣ４８は、必要に応じて、コントローラ４内の様々な位置に設定することが可能である。
【００６２】
ＥＣＣ４９は、ライトバッファＷＢから送信される書き込みデータにエラー訂正コードを付加する。ＥＣＣ４９は、ＮＡＮＤ１５から読み出したデータをリードバッファＲＢに送信する際に、データに付加されたエラー訂正コードを用いて、データを必要に応じて訂正する。
【００６３】
ランダマイザＲＺ（Scramblerとも言う）は、データの書き込み動作において、書き込みデータがＮＡＮＤ１５の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる。このように、書き込みデータを分散させることで、書き込み回数を平準化でき、ＮＡＮＤ１５に含まれるメモリセルＭＣの寿命を延ばすことが可能である。そのため、ＮＡＮＤ１５の信頼性を向上できる。また、データ読み出し動作の際に、ＮＡＮＤ１５から読み出された読み出しデータはランダマイザＲＺを通過する。
【００６４】
ＮＡＮＤＣ５０は、所定の速度の要求を満たすため、複数のチャンネル（ここでは、４つのチャンネルＣＨ０〜ＣＨ３）を用いて、並列にＮＡＮＤ１５にアクセスする。
【００６５】
ＣＰＵ４３Ｂは、バックエンド４Ｂの上記各構成（４５〜５０，ＲＺ）を制御し、バックエンド４Ｂの全体の動作を制御する。
【００６６】
尚、図６に示したコントローラ４の構成は例示であり、この構成に限定されるものではない。
【００６７】
また、ＳＳＤ１１は、デザインルールの異なるＮＡＮＤや、平面型のＮＡＮＤや立体型のＮＡＮＤのように異なるタイプのＮＡＮＤが適用可能とされている。さらに、他の不揮発性メモリ、例えばＭＲＡＭ（Magnetoresistive RAM）を適用することも可能とされている。
（変形例）
図７は、本実施形態をネットワークに接続されたホストやストレージアレイに適用した場合を示している。
【００６８】
例えばクライアントとしての第１のホスト６１、サーバとしての第２のホスト６２、及びストレージアレイ６３がネットワーク６４に接続されている。
【００６９】
第２のホスト６２には、例えばＳＳＤ６５、ＨＤＤ６６が接続され、ストレージアレイ６３には、例えばＳＳＤ６７、ＨＤＤ６８が接続されている。ＳＳＤ６５、６７の構成は、図１に示す構成と同様であり、キャッシュ制御部（ＣＭ）１２を含んでいる。
【００７０】
第２のホスト６２、及びストレージアレイ６３に接続されるＨＤＤ及びＳＳＤの数は、図７に限定されるものではなく、用途に応じて変更可能である。
【００７１】
第１のホスト６１、第２のホスト６２は、それぞれ例えば情報処理装置であり、第２のホスト６２は、図１に示すホスト２１と同様にデータ読み出し書き込み部（ＤＲＷ）２２を含んでいる。
【００７２】
ストレージアレイ６３としては、例えばＳＡＮ（Storage Area Network）が知られているが、これに限定されるものではない。このストレージアレイ６３は、例えばクラウドストレージとして提供される。
【００７３】
図８は、ストレージアレイ６３の一例を概略的に示している。ストレージアレイ６３は、例えばネットワークインターフェース６３ａ、ＲＡＩＤ(Redundant Arrays of Inexpensive Disks)コントローラ６３ｂ、及びストレージとのインターフェース６３ｃを有している。ＳＳＤ６７、ＨＤＤ６８は、インターフェース６３ｃに接続されている。インターフェース６３ｃは、図１に示すデータ読み出し書き込み部２２を含んでいる。
【００７４】
上記構成において、第１のホスト６１からネットワーク６４を介して、第２のホスト６２に読み出し要求が発行された場合、第２のホスト６２のデータ読み出し書き込み部２２は、前述したように、先ず、ＳＳＤ６５をアクセスする。ＳＳＤ６５のキャッシュ管理部１２からの応答がキャッシュミスを示す場合、第２のホスト６２は、ＨＤＤ６６に対して、読み出し要求を発行し、所要のデータを読み出す。このようにして、第２のホスト６２に読み出されたデータは、ネットワーク６４を介して第１のホスト６１に転送される。  また、第１のホスト６１からネットワーク６４を介して、例えばストレージアレイ６３に読み出し要求が発行された場合、ストレージアレイ６３のデータ読み出し書き込み部２２は、先ず、ＳＳＤ６７をアクセスする。ＳＳＤ６７のキャッシュ管理部１２からの応答がキャッシュミスを示す場合、ストレージアレイ６３は、ＨＤＤ６８に対して、読み出し要求を発行し、所要のデータを読み出す。このようにして、ストレージアレイ６３に読み出されたデータは、ネットワーク６４を介して第１のホスト６１に転送される。
【００７５】
また、第１のホスト６１からネットワーク６４を介して例えば第２のホスト６２に書き込み要求が発行された場合、第２のホスト６２のデータ読み出し書き込み部２２は、前述したように、ライトスルー方式により、ＳＳＤ６５とＨＤＤ６６に同一のデータを書き込む。
【００７６】
第１のホスト６１からネットワーク６４を介して例えばストレージアレイ６３に書き込み要求が発行された場合、ストレージアレイ６３のデータ読み出し書き込み部２２は、ライトスルー方式により、ＳＳＤ６７とＨＤＤ６８に同一のデータを書き込む。
【００７７】
その他、本発明は上記各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００７８】
１１…ＳＳＤ、１２…キャッシュ管理部、１４…エラー訂正部、１５…フラッシュメモリ、２１…ホスト、３１…ＨＤＤ。
【図１】
2019023936.tif 000003
【図２Ａ】
2019023936.tif 000004
【図２Ｂ】
2019023936.tif 000005
【図３】
2019023936.tif 000006
【図４】
2019023936.tif 000007
【図５】
2019023936.tif 000008
【図６】
2019023936.tif 000009
【図７】
2019023936.tif 000010
【図８】
2019023936.tif 000011