(57)【要約】      （修正有）【課題】情報処理装置の不揮発性メモリを長寿命化する情報処理装置の提供。【解決手段】情報処理システム３５において、不揮発性メモリ４は、各々が複数の消去単位エリアを含むブロックグループＢＧ１〜ＢＧ４を含む。プロセッサ２は、ブロックグループにおける書き込みデータの使用状態を示す情報と、プロセッサによって実行されるプログラムにより削除対象とされたか否かを示す情報とを含む管理情報を生成し、ブロックグループＢＧ１が第１の消去条件を満たす場合に、ブロックグループＢＧ１から消去対象の第１のエリアを選択し、管理情報に基づいて、第１のエリアに書き込まれている第１のデータが第１の使用状態であり、かつ、削除対象ではない場合に、第１のデータをブロックグループＢＧ２へ書き込み、第１のデータが第１の使用状態ではなく、かつ、削除対象ではない場合に、第１のデータをブロックグループＢＧ３へ書き込み、第１のエリアを消去する。【選択図】図１
2018136970.tif 000002
【特許請求の範囲】
【請求項１】
複数の第１の消去単位エリアを含む第１のグループと、複数の第２の消去単位エリアを含む第２のグループと、複数の第３の消去単位エリアを含む第３のグループとを具備する不揮発性メモリと、
前記不揮発性メモリを制御し、外部のメモリシステムと通信するプロセッサと、
を具備し、
前記プロセッサは、
前記第１乃至第３のグループにおける書き込みデータの使用状態を示す情報と、前記書き込みデータが前記プロセッサによって実行されるプログラムにより削除対象とされたか否かを示す情報とを含む管理情報を生成し、
前記第１のグループが第１の消去条件を満たす場合に、前記第１のグループから消去対象の第１のエリアを選択し、
前記管理情報に基づいて、前記第１のエリアに書き込まれている第１のデータが第１の使用状態であり、かつ、削除対象ではない場合に、前記第１のデータを前記第２のグループへ書き込み、前記第１のデータが前記第１の使用状態ではなく、かつ、削除対象ではない場合に、前記第１のデータを前記第３のグループへ書き込み、
前記第１のエリアを消去する、
情報処理装置。
【請求項２】
前記不揮発性メモリは、複数の第４の消去単位エリアを含む第４のグループをさらに具備し、
前記プロセッサは、さらに、
前記第３のグループが第２の消去条件を満たす場合に、前記第３のグループから消去対象の第２のエリアを選択し、
前記管理情報に基づいて、前記第２のエリアに書き込まれている第２のデータが第２の使用状態であり、かつ、削除対象ではない場合に、前記第２のデータを前記第４のグループへ書き込み、前記第２のデータが前記第２の使用状態ではなく、かつ、削除対象ではない場合に、前記第２のデータを前記第３のグループ中の前記第２のエリアではない他のエリアへ再度書き込み、
前記第２のエリアを消去する、
請求項１の情報処理装置。
【請求項３】
前記プロセッサは、さらに、
前記第２のグループが第３の消去条件を満たす場合に、前記第２のグループから消去対象の第３のエリアを選択し、
前記管理情報に基づいて、前記第３のエリアに書き込まれている第３のデータが第３の使用状態であり、かつ、削除対象ではない場合に、前記第３のデータを前記第３のグループへ書き込み、
前記第３のエリアを消去する、
請求項２の情報処理装置。
【請求項４】
前記プロセッサは、さらに、
前記第４のグループが第４の消去条件を満たす場合に、前記第４のグループから消去対象の第４のエリアを選択し、
前記第４のエリアを消去する、
請求項３の情報処理装置。
【請求項５】
前記プロセッサは、さらに、
前記第４のグループが第４の消去条件を満たす場合に、前記第４のグループから消去対象の第４のエリアを選択し、
前記管理情報に基づいて、前記第４のエリアに書き込まれている第４のデータが第４の使用状態であり、かつ、削除対象ではない場合に、前記第４のデータを前記第３のグループへ書き込み、
前記第４のエリアを消去する、
請求項３の情報処理装置。
【請求項６】
前記不揮発性メモリは、キャッシュメモリであり、
前記プロセッサは、さらに、前記外部のメモリシステムへ、削除対象データを示す論理アドレスを含む削除情報を送信する、
請求項１乃至請求項５のうちのいずれか１項の情報処理装置。
【請求項７】
前記不揮発性メモリは、キャッシュメモリであり、
前記プロセッサは、さらに、前記外部のメモリシステムからデータを受信し、前記外部のメモリシステムから受信したデータを前記不揮発性メモリへ書き込む、
請求項１乃至請求項５のうちのいずれか１項の情報処理装置。
【請求項８】
前記不揮発性メモリは、キャッシュメモリであり、
前記プロセッサは、さらに、削除対象であり前記不揮発性メモリに記憶されていないデータを示す論理アドレスを含む削除情報を生成し、前記削除情報を前記外部のメモリシステムへ送信する、
請求項１乃至請求項５のうちのいずれか１項の情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、情報処理装置に関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）は、例えば、ＮＡＮＤ型フラッシュメモリなどのような不揮発性メモリを備える。ＮＡＮＤ型フラッシュメモリは、複数のブロック（物理ブロック）を備える。複数のブロックは、ワード線とビット線との交点に配置される複数のメモリセルを含む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１４１９４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本実施形態は、不揮発性キャッシュメモリを長寿命化する情報処理装置を提供する。
【課題を解決するための手段】
【０００５】
本実施形態によれば、情報処理装置は、不揮発性メモリとプロセッサとを含む。不揮発性メモリは、複数の第１の消去単位エリアを含む第１のグループと、複数の第２の消去単位エリアを含む第２のグループと、複数の第３の消去単位エリアを含む第３のグループとを含む。プロセッサは、第１乃至第３のグループにおける書き込みデータの使用状態を示す情報と、書き込みデータがプロセッサによって実行されるプログラムにより削除対象とされたか否かを示す情報とを含む管理情報を生成し、第１のグループが第１の消去条件を満たす場合に、第１のグループから消去対象の第１のエリアを選択し、管理情報に基づいて、第１のエリアに書き込まれている第１のデータが第１の使用状態であり、かつ、削除対象ではない場合に、第１のデータを第２のグループへ書き込み、第１のデータが第１の使用状態ではなく、かつ、削除対象ではない場合に、第１のデータを第３のグループへ書き込み、第１のエリアを消去する。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係るキャッシュメモリ装置を含む情報処理装置の構成の一例を示すブロック図。
【図２】第１の実施形態に係る第１のキャッシュ制御の一例を示すフローチャート。
【図３】第１の実施形態に係る第２のキャッシュ制御の一例を示すフローチャート。
【図４】第１の実施形態に係る第３のキャッシュ制御の一例を示すフローチャート。
【図５】第１の実施形態に係る第４のキャッシュ制御の一例を示すフローチャート。
【図６】第２の実施形態に係る情報処理システムの構成の一例を示すブロック図。
【図７】第２の実施形態に係る情報処理システムの処理の一例を示すフローチャート。
【図８】第３の実施形態に係る情報処理システムの詳細構成の一例を示すブロック図。
【図９】第３の実施形態に係るストレージシステムの一例を示す斜視図。
【発明を実施するための形態】
【０００７】
以下、図面を参照しながら各実施の形態について説明する。なお、以下の説明において、略又は実質的に同一の機能及び構成要素については、同一符号を付し、必要に応じて説明を行う。
【０００８】
［第１の実施形態］
本実施形態においては、不揮発性キャッシュメモリを備えるキャッシュメモリ装置について説明する。
【０００９】
本実施形態において、不揮発性キャッシュメモリは、消去単位エリアごとに、データが一括して消去される。消去単位エリアは、複数の書き込み単位エリア及び複数の読み出し単位エリアを含む。
【００１０】
本実施形態において、不揮発性キャッシュメモリ及び不揮発性メモリとして、ＮＡＮＤ型フラッシュメモリが用いられる場合について説明する。しかしながら、不揮発性キャッシュメモリ及び不揮発性メモリは、上記の消去単位エリア、書き込み単位エリア、読み出し単位エリアの関係を満たしていれば、ＮＡＮＤ型フラッシュメモリではない他の種別のメモリでもよい。
【００１１】
不揮発性キャッシュメモリ及び不揮発性メモリがＮＡＮＤ型フラッシュメモリの場合、消去単位エリアはブロックに相当する。書き込み単位エリア及び読み出し単位エリアはページに相当する。
【００１２】
本実施形態において、例えば、消去単位エリアは、２以上のブロックなどのように、データが一括して消去可能な他の単位で管理されてもよい。
【００１３】
本実施形態において、アクセスとは、記憶装置へデータを書き込むこと、及び、記憶装置からデータを読み出すことの双方を意味する。
【００１４】
図１は、本実施形態に係るキャッシュメモリ装置を含む情報処理装置の構成の一例を示すブロック図である。
【００１５】
情報処理システム３５は、情報処理装置１７とＳＳＤ５とを含む。情報処理装置１７は、ＳＳＤ５に対応するホスト装置でもよい。
【００１６】
情報処理装置１７は、プロセッサ２、メモリ３、不揮発性キャッシュメモリ４を含む。ＳＳＤ５は、情報処理装置１７に内蔵されてもよく、情報処理装置１７とＳＳＤ５とは、ネットワークなどによりデータを送受信可能に接続されるとしてもよい。ＳＳＤ５に代えて、ハードディスクドライブ（ＨＤＤ）などの他の不揮発性の記憶装置が用いられてもよい。
【００１７】
情報処理装置１７は、キャッシュ制御部９、管理情報６１〜６４を格納するメモリ３、不揮発性キャッシュメモリ４を含むキャッシュメモリ装置を備える。しかしながら、キャッシュ制御部９、管理情報６１〜６４、メモリ３、不揮発性キャッシュメモリ４のうちの一部又は全部は、情報処理装置１７の外に備えられてもよい。
【００１８】
不揮発性キャッシュメモリ４は、ブロックグループＢＧ1〜ＢＧ4を含む。不揮発性キャッシュメモリ４は、ＳＳＤ５よりも高速にアクセス可能である。
【００１９】
ブロックグループ（第１のグループ）ＢＧ1は、ブロック（第１の消去エリア）Ｂ1,1〜Ｂ1,Kを含む。ブロックグループＢＧ1は、プロセッサ２によってアクセスされたデータ（プロセッサ２に使用されたデータ）を格納する。
【００２０】
本実施形態において、ブロックグループＢＧ1が消去条件（第１の消去条件）を満たす場合に、先入先出法（First-In First-Out：ＦＩＦＯ）に基づいて、ブロックグループＢＧ1内のブロックＢ1,1〜Ｂ1,Kから消去対象（破棄対象又は追い出し対象）ブロック（第１の消去対象エリア）が選択される。
【００２１】
例えば、ブロックグループＢＧ1の各ブロックＢ1,1〜Ｂ1,Kのデータ量が所定の値を越えている場合に、消去条件を満たすとする。また、例えば、ブロックグループＢＧ1の各ブロックＢ1,1〜Ｂ1,Kに書き込まれたページ数が所定の数を越えた場合に、消去条件を満たすとしてもよい。
【００２２】
ブロックＢ1,1〜Ｂ1,KからＦＩＦＯによって選択された消去対象ブロックに書き込まれているデータは、当該データが第１の低使用状態（例えば設定された第１の回数又は第１の頻度未満でアクセスされている）の場合に、ブロックグループＢＧ2に書き込まれる。これに対して、ブロックＢ1,1〜Ｂ1,Kから選択された消去対象ブロックに書き込まれているデータは、当該データが第１の高使用状態（例えば第１の回数又は第１の頻度以上でアクセスされている）の場合に、ブロックグループＢＧ3に書き込まれる。そして、ブロックＢ1,1〜Ｂ1,Kから選択された消去対象ブロックに書き込まれているデータは、ブロック単位で消去（破棄又は追い出し）される。
【００２３】
ブロックグループ（第２のグループ）ＢＧ2は、ブロック（第２の消去エリア）Ｂ2,1〜Ｂ2,Lを含む。ブロックグループＢＧ2は、ブロックグループＢＧ1から選択された消去対象ブロックに書き込まれているデータのうち第１の低使用状態のデータを格納する。
【００２４】
本実施形態において、ブロックグループＢＧ2が消去条件（第３の消去条件）を満たす場合に、ＦＩＦＯに基づいて、ブロックグループＢＧ2内のブロックＢ2,1〜Ｂ2,Lから消去対象ブロック（第３の消去対象エリア）が選択される。
【００２５】
ブロックＢ2,1〜Ｂ2,LからＦＩＦＯによって選択された消去対象ブロックに書き込まれているデータは、当該データが第３の低使用状態（例えば設定された第３の回数又は第３の頻度未満でアクセスされている）の場合に、消去される。これに対して、ブロックＢ2,1〜Ｂ2,Lから選択された消去対象ブロックに書き込まれているデータは、当該データが第３の高使用状態（例えば第３の回数又は第３の頻度以上でアクセスされている）の場合に、ブロックグループＢＧ3に書き込まれる。そして、ブロックＢ2,1〜Ｂ2,Lから選択された消去対象ブロックに書き込まれているデータは、ブロック単位で消去される。
【００２６】
ブロックグループ（第３のグループ）ＢＧ3は、ブロック（第３の消去エリア）Ｂ3,1〜Ｂ3,Mを含む。ブロックグループＢＧ3は、ブロックグループＢＧ1から選択された消去対象ブロックに書き込まれているデータのうち第１の高使用状態のデータを格納する。また、ブロックグループＢＧ3は、ブロックグループＢＧ2から選択された消去対象ブロックに書き込まれているデータのうち第３の高使用状態のデータを格納する。
【００２７】
本実施形態において、ブロックグループＢＧ3が消去条件（第２の消去条件）を満たす場合に、ＦＩＦＯに基づいて、ブロックグループＢＧ3内のブロックＢ3,1〜Ｂ3,Mから消去対象ブロック（第２の消去対象エリア）が選択される。
【００２８】
ブロックＢ3,1〜Ｂ3,MからＦＩＦＯによって選択された消去対象ブロックに書き込まれているデータは、当該データが第２の低使用状態（例えば設定された第２の回数又は第２の頻度未満でアクセスされている）の場合に、ブロックグループＢＧ4に書き込まれる。これに対して、ブロックＢ3,1〜Ｂ3,Mから選択された消去対象ブロックに書き込まれているデータは、当該データが第２の高使用状態（例えば第２の回数又は第２の頻度以上でアクセスされている）の場合に、ブロックグループＢＧ3内の他のブロックに対して再書き込みされる。そして、ブロックＢ3,1〜Ｂ3,Mから選択された消去対象ブロックに書き込まれているデータは、ブロック単位で消去される。
【００２９】
ブロックグループ（第４のグループ）ＢＧ4は、ブロック（第４の消去エリア）Ｂ4,1〜Ｂ4,Nを含む。ブロックグループＢＧ4は、ブロックグループＢＧ3から選択された消去対象ブロックに書き込まれているデータのうち第２の低使用状態のデータを格納する。
【００３０】
本実施形態において、ブロックグループＢＧ4が消去条件（第４の消去条件）を満たす場合に、ＦＩＦＯに基づいて、ブロックグループＢＧ4内のブロックＢ4,1〜Ｂ4,Nから消去対象ブロック（第４の消去対象エリア）が選択される。
【００３１】
ブロックＢ4,1〜Ｂ4,NからＦＩＦＯによって選択された消去対象ブロックに書き込まれているデータは、消去される。
【００３２】
本実施形態においては、各ブロックグループＢＧ1〜ＢＧ4から消去対象ブロックを選択する手法としてＦＩＦＯが用いられている。消去対象ブロックがＦＩＦＯに基づいて選択されることにより、各ブロックグループＢＧ1〜ＢＧ4から書き込み時間及び書き込み順序が古いブロックから消去される。しかしながら、消去対象ブロックは、例えば、ランダムに選択されるとしてもよく、ＬＲＵ（Least Recently Used）に基づいて選択されてもよく、ＬＦＵ（Least Frequently Used）に基づいて選択されてもよい。例えば、管理情報６１〜６４は、データの識別情報と、データが削除対象か否かを示す情報と、データの使用状態情報を含む。管理情報６１〜６４に基づいて、無効データの数が最も多いブロック、又は、無効データの数が所定の値より多いブロックが、消去対象ブロックとして選択されてもよい。例えば、管理情報６１〜６４に基づいて、無効データと削除対象データとの数が最も多いブロック、又は、無効データと削除対象データとの数が所定の値より多いブロックが、消去対象ブロックとして選択されてもよい。
【００３３】
メモリ３は、例えば管理情報（リスト）６１〜６４及びアドレス変換情報７などの各種の制御情報を格納する。メモリ３は、例えばＤＲＡＭ（Dynamic Random Access Memory）又はＳＲＡＭ（Static Random Access Memory）などのような揮発性メモリでもよく、不揮発性メモリでもよい。メモリ３は、不揮発性キャッシュメモリ４に含まれていてもよい。
【００３４】
本実施形態において、キャッシュ制御部９は、管理情報６１〜６４とアドレス変換情報７とに基づいて、キャッシュされているデータの識別情報（例えばホストから提供される論理アドレス（例えば、Logical Block Addressing））、当該データが書き込まれている位置、当該データの使用状態を、認識可能である。例えば、キャッシュ制御部９は、管理情報６１〜６４とアドレス変換情報７とに基づいて、ブロックグループＢＧ1〜ＢＧ4のそれぞれにキャッシュされるデータと、ＦＩＦＯにより消去されるブロックとを、選択可能である。
【００３５】
管理情報６１〜６４は、それぞれブロックグループＢＧ1〜ＢＧ4に書き込まれているデータに関するメタデータである。例えば、管理情報６１〜６４は、プロセッサ２による各データの使用状態を示す情報を含む。例えば、管理情報６１〜６４は、各データの識別情報、データが削除対象か否かを示す削除情報、データが有効データか否かを示す有効／無効情報、ブロックに対して消去を行う消去条件を満たすか否かを判断するためのキャッシュ判断情報を含む。
【００３６】
ここで、削除情報は、例えば、データに対する削除命令が発生したことを示す情報であり、より具体的な例としては、プロセッサ２で実行されるアプリケーションプログラム又はオペレーティングシステム（ＯＳ）からデータに対する削除命令が受け付けられたことを示す情報などである。本実施形態において、削除情報は、例えば、各ブロックの識別情報と、各ブロックに書き込まれている削除対象データを示す論理アドレスとを関係付けた情報を含む。
【００３７】
有効／無効情報は、例えば、同じデータに対して複数位置に書き込みがある場合に、最新のデータが有効データであり、最新ではないデータが無効データであることを示す情報などである。換言すれば、例えば、有効データは、不揮発性キャッシュメモリ４に書き込まれているデータの更新が発生した場合の更新後のデータである。例えば、無効データは、更新が発生した場合の更新前のデータである。本実施形態において、有効／無効情報は、例えば、各ブロックの識別情報と、各ブロックに書き込まれている有効データ又は無効データを示す論理アドレスとを関係付けた情報を含む。
【００３８】
キャッシュ判断情報は、例えば、データごとの書き込み情報と読み出し情報とのうちの少なくとも一方、又は、ブロックごとの書き込み情報と読み出し情報とのうちの少なくとも一方、を含む情報などである。
【００３９】
書き込み情報は、例えば、書き込み時間、書き込み回数、書き込み頻度、書き込み順序のうちの少なくとも１つを含む。
【００４０】
読み出し情報は、例えば、読み出し時間、読み出し回数、読み出し頻度、読み出し順序のうちの少なくとも１つを含む。
【００４１】
アドレス変換情報７は、例えば、データの論理アドレスと、当該論理アドレスに対応する不揮発性キャッシュメモリ４の物理アドレス（例えば、Physical Block Addressing）とを関係付けている。アドレス変換情報７は、例えばテーブル形式で管理される。
【００４２】
プロセッサ２は、プロセッサ２内のメモリに格納されているプログラム、メモリ３に格納されているプログラム、不揮発性キャッシュメモリ４に格納されているプログラム、又は、ＳＳＤ５に格納されているプログラムを実行することにより、アドレス変換部８及びキャッシュ制御部９として機能する。
【００４３】
本実施形態において、プロセッサ２をアドレス変換部８及びキャッシュ制御部９として機能させるためのプログラムは、例えば、ＯＳ、ミドルウェア、ファームウェアでもよい。本実施形態において、アドレス変換部８のうちの一部又は全部、又は、キャッシュ制御部９のうちの一部又は全部は、ハードウェアにより実装されてもよい。
【００４４】
アドレス変換部８は、書き込みデータの論理アドレスと、当該書き込みデータが格納された不揮発性キャッシュメモリ４の位置を示す物理アドレスとを関係付けた情報を生成し、この情報をアドレス変換情報７に登録する。
【００４５】
また、アドレス変換部８は、プロセッサ２から読み出しデータの論理アドレスを受けた場合に、アドレス変換情報７に基づいて、論理アドレスを物理アドレスに変換する。
【００４６】
キャッシュ制御部９は、ＳＳＤ５よりも高速にアクセス可能な不揮発性キャッシュメモリ４に対するキャッシュ制御を実行する。例えば、キャッシュ制御部９は、ライトスルー方式、又は、ライトバック方式で、データと当該データを示す論理アドレス及び物理アドレスとを管理する。
【００４７】
ライトスルー方式は、不揮発性キャッシュメモリ４にデータを格納するとともに、ＳＳＤ５にもデータを格納する方式である。
【００４８】
ライトバック方式は、不揮発性キャッシュメモリ４に格納されたデータを、その都度ＳＳＤ５に格納するのではなく、一旦不揮発性キャッシュメモリ４にデータを格納し、不揮発性キャッシュメモリ４から追い出されるデータを、ＳＳＤ５に格納する方式である。
【００４９】
キャッシュ制御部９は、生成部１０、制御部１１〜１４、変更部１５，１６を含む。
【００５０】
生成部１０は、不揮発性キャッシュメモリ４のブロックグループＢＧ1〜ＢＧ4に対応する管理情報６１〜６４を生成し、管理情報６１〜６４をメモリ３に書き込む。
【００５１】
制御部１１〜１４は、それぞれブロックグループＢＧ1〜ＢＧ4に対するデータの書き込み及びブロックの消去を制御する。
【００５２】
制御部１１は、書き込み部１１１、判断部１１２、選択部１１３、判断部１１４、消去部１１５を含む。
【００５３】
書き込み部（第１の書き込み部）１１１は、ブロックグループＢＧ1に対して、プロセッサ２によってアクセスされたデータを書き込む。
【００５４】
判断部（第１の判断部）１１２は、ブロックグループＢＧ1が消去条件（第１の消去条件）を満たすか否か判断する。
【００５５】
選択部（第１の選択部）１１３は、ブロックグループＢＧ1が消去条件を満たす場合に、ブロックグループＢＧ1から消去対象ブロック（第１の消去対象エリア）を選択する。
【００５６】
判断部（第２の判断部）１１４は、管理情報６１に基づいて、消去対象ブロックに書き込まれている各データが第１の高使用状態か第１の低使用状態か削除対象かを判断する。
【００５７】
消去部（第１の消去部）１１５は、消去対象ブロックに書き込まれている各データがブロックグループＢＧ2又はブロックグループＢＧ3に書き込まれたか、又は、削除対象であるために破棄されてもよい場合に、消去対象ブロックを消去する。
【００５８】
制御部１２は、書き込み部１２１、判断部１２２、選択部１２３、判断部１２４、消去部１２５を含む。
【００５９】
書き込み部（第２の書き込み部）１２１は、判断部１１４によってブロックグループＢＧ1の消去対象ブロックに書き込まれているデータが第１の低使用状態であり削除対象でないと判断された場合に、当該データをブロックグループＢＧ2に対して書き込む。
【００６０】
判断部（第５の判断部）１２２は、ブロックグループＢＧ2が消去条件（第３の消去条件）を満たすか否か判断する。
【００６１】
選択部（第３の選択部）１２３は、ブロックグループＢＧ2が消去条件を満たす場合に、ブロックグループＢＧ2から消去対象ブロック（第３の消去対象エリア）を選択する。
【００６２】
判断部１２４は、管理情報６２に基づいて、消去対象ブロックに書き込まれている各データが第３の高使用状態か第３の低使用状態か削除対象かを判断する。
【００６３】
消去部（第２の消去部）１２５は、消去対象ブロックに書き込まれている第３の高使用状態のデータであり削除対象でないデータがブロックグループＢＧ3に書き込まれた場合に、消去対象ブロックに書き込まれているデータを消去する。
【００６４】
制御部１３は、書き込み部１３１、判断部１３２、選択部１３３、判断部１３４、書き込み部１３５、消去部１３６、書き込み部１３７を含む。
【００６５】
書き込み部（第３の書き込み部）１３１は、判断部１１４によってブロックグループＢＧ1の消去対象ブロックに書き込まれているデータが第１の高使用状態であり削除対象でないと判断された場合に、当該データをブロックグループＢＧ3に対して書き込む。
【００６６】
書き込み部（第６の書き込み部）１３７は、ブロックグループＢＧ2に書き込まれているデータが第３の高使用状態であり削除対象でない場合に、当該データをブロックグループＢＧ3に対して書き込む。例えば、書き込み部１３７は、ブロックグループＢＧ2に書き込まれているデータがプロセッサ２におけるアクセス対象となった場合に、ブロックグループＢＧ2のアクセス対象データを、ブロックグループＢＧ3に対して書き込むとしてもよい。
【００６７】
判断部（第３の判断部）１３２は、ブロックグループＢＧ3が消去条件（第２の消去条件）を満たすか否か判断する。
【００６８】
選択部（第２の選択部）１３３は、ブロックグループＢＧ3が消去条件を満たす場合に、ブロックグループＢＧ3から消去対象ブロック（第２の消去対象エリア）を選択する。
【００６９】
判断部（第４の判断部）１３４は、管理情報６３に基づいて、消去対象ブロックに書き込まれている各データが第２の高使用状態か第２の低使用状態か削除対象かを判断する。
【００７０】
書き込み部（第５の書き込み部）１３５は、ブロックグループＢＧ3の消去対象ブロックに書き込まれているデータが第２の高使用状態であり削除対象でないと判断された場合に、当該データを、ブロックグループＢＧ3の書き込み可能な他のブロックに対して再書
き込みする。
【００７１】
消去部（第３の消去部）１３６は、消去対象ブロックに書き込まれている各データがブロックグループＢＧ4に書き込まれたか、ブロックグループＢＧ3に再書き込みされたか、
又は、削除対象であるために破棄されてもよい場合に、消去対象ブロックを消去する。
【００７２】
制御部１４は、書き込み部１４１、判断部１４２、選択部１４３、消去部１４４を含む。
【００７３】
書き込み部（第４の書き込み部）１４１は、判断部１３４によってブロックグループＢＧ3の消去対象ブロックに書き込まれているデータが第２の低使用状態であり削除対象でないと判断された場合に、当該データをブロックグループＢＧ4に対して書き込む。
【００７４】
判断部（第６の判断部）１４２は、ブロックグループＢＧ4が消去条件（第４の消去条件）を満たすか否か判断する。
【００７５】
選択部（第４の選択部）１４３は、ブロックグループＢＧ4が消去条件を満たす場合に、ブロックグループＢＧ4から消去対象ブロック（第４の消去対象エリア）を選択する。
【００７６】
消去部（第４の消去部）１４４は、ブロックグループＢＧ4の消去対象ブロックに書き込まれているデータを消去する。
【００７７】
変更部（第１の変更部）１５は、ブロックグループＢＧ2に書き込まれているデータが第３の高使用状態になった場合に、ブロックグループＢＧ1に含まれているブロックの数を増加し、ブロックグループＢＧ3に含まれているブロックの数を減少する。例えば、変更部１５は、ブロックグループＢＧ2に書き込まれているデータがプロセッサ２によるアクセス対象となった場合に、ブロックグループＢＧ1に含まれているブロックの数を増加し、ブロックグループＢＧ3に含まれているブロックの数を減少する。
【００７８】
変更部（第２の変更部）１６は、ブロックグループＢＧ4に書き込まれているデータが第４の高使用状態になった場合に、ブロックグループＢＧ3に含まれているブロックの数を増加し、ブロックグループＢＧ1に含まれているブロックの数を減少する。例えば、変更部１６は、ブロックグループＢＧ4に書き込まれているデータがプロセッサ２によるアクセス対象となった場合に、ブロックグループＢＧ3に含まれているブロックを増加し、ブロックグループＢＧ1に含まれているブロックの数を減少する。
【００７９】
図２は、本実施形態に係る第１のキャッシュ制御の一例を示すフローチャートである。この図２は、ブロックグループＢＧ1にデータが書き込まれてから、ブロックグループＢＧ2又はブロックグループＢＧ3にデータが書き込まれ、ブロックグループＢＧ1の消去対象ブロックが消去される処理を例示している。
【００８０】
ステップＳ２０１において、書き込み部１１１は、ブロックグループＢＧ1に対して、プロセッサ２によってアクセスされたデータを書き込む。
【００８１】
ステップＳ２０２において、判断部１１２は、ブロックグループＢＧ1が消去条件を満たすか否か判断する。
【００８２】
ブロックグループＢＧ1が消去条件を満たさない場合には、処理はステップＳ２０６に移る。
【００８３】
ブロックグループＢＧ1が消去条件を満たす場合には、ステップＳ２０３において、選択部１１３は、ブロックグループＢＧ1から消去対象ブロックを選択する。
【００８４】
ステップＳ２０４において、判断部１１４は、管理情報６１に基づいて、消去対象ブロックに書き込まれている各データが第１の高使用状態か第１の低使用状態か削除対象かを判断する。
【００８５】
データが第１の低使用状態であり削除対象ではない場合には、ステップＳ３０１において、書き込み部１２１は、ブロックグループＢＧ2にデータを書き込む。
【００８６】
データが第１の高使用状態であり削除対象ではない場合には、ステップＳ４０１において、書き込み部１３１は、ブロックグループＢＧ3にデータを書き込む。
【００８７】
ステップＳ２０５において、消去部１１５は、消去対象ブロックに書き込まれている各データがブロックグループＢＧ2又はブロックグループＢＧ3に書き込まれたか、又は、削除対象であるために破棄されてもよい場合に、消去対象ブロックを消去する。
【００８８】
ステップＳ２０６において、キャッシュ制御部９が処理を終了するか否か判断する。
【００８９】
キャッシュ制御部９が処理を終了しない場合に、処理はステップＳ２０１に移る。
【００９０】
キャッシュ制御部９が処理を終了する場合に、処理は終了する。
【００９１】
図３は、本実施形態に係る第２のキャッシュ制御の一例を示すフローチャートである。この図３は、ブロックグループＢＧ2にデータが書き込まれ、ブロックグループＢＧ2の消去対象ブロックが消去される処理を例示している。
【００９２】
ステップＳ３０１において、書き込み部１２１は、上記ステップＳ２０４においてブロックグループＢＧ1の消去対象ブロックに書き込まれているデータが第１の低使用状態であり削除対象ではないと判断された場合に、当該データをブロックグループＢＧ2に対して書き込む。
【００９３】
ステップＳ３０２において、判断部１２２は、ブロックグループＢＧ2が消去条件を満たすか否か判断する。
【００９４】
ブロックグループＢＧ2が消去条件を満たさない場合には、処理はステップＳ３０６に移る。
【００９５】
ブロックグループＢＧ2が消去条件を満たす場合には、ステップＳ３０３において、選択部１２３は、ブロックグループＢＧ2から消去対象ブロックを選択する。
【００９６】
ステップＳ３０４において、判断部１２４は、管理情報６２に基づいて、消去対象ブロックに書き込まれている各データが第３の高使用状態か第３の低使用状態か削除対象かを判断する。
【００９７】
データが第３の低使用状態又は削除対象の場合には、処理はステップＳ３０５に移る。
【００９８】
データが第３の高使用状態であり削除対象ではない場合には、ステップＳ４０１において、書き込み部１３７は、ブロックグループＢＧ3にデータを書き込む。
【００９９】
ステップＳ３０５において、消去部１２５は、ブロックグループＢＧ2の消去対象ブロックに書き込まれているデータを消去する。
【０１００】
ステップＳ３０５において、キャッシュ制御部９が処理を終了するか否か判断する。
【０１０１】
キャッシュ制御部９が処理を終了しない場合に、処理はステップＳ３０１に移る。
【０１０２】
キャッシュ制御部９が処理を終了する場合に、処理は終了する。
【０１０３】
図４は、本実施形態に係る第３のキャッシュ制御の一例を示すフローチャートである。この図４は、ブロックグループＢＧ3にデータが書き込まれてから、ブロックグループＢＧ3のデータが消去されるまでの処理を例示している。
【０１０４】
ステップＳ４０１において、書き込み部１３１は、上記ステップＳ２０４においてブロックグループＢＧ1の消去対象ブロックに書き込まれているデータが第１の高使用状態であり削除対象ではないと判断された場合に、当該データをブロックグループＢＧ3に対して書き込む。または、書き込み部１３７は、上記ステップＳ３０４においてブロックグループＢＧ2に書き込まれているデータが第３の高使用状態（例えばプロセッサ２におけるアクセス対象となった）であり削除対象ではないと判断された場合に、ブロックグループＢＧ2の当該データを、ブロックグループＢＧ3に対して書き込む。
【０１０５】
ステップＳ４０２において、判断部１３２は、ブロックグループＢＧ3が消去条件を満たすか否か判断する。
【０１０６】
ブロックグループＢＧ3が消去条件を満たさない場合には、処理はステップＳ４０７に移る。
【０１０７】
ブロックグループＢＧ3が消去条件を満たす場合には、ステップＳ４０３において、選択部１３３は、ブロックグループＢＧ3から消去対象ブロックを選択する。
【０１０８】
ステップＳ４０４において、判断部１３４は、管理情報６３に基づいて、消去対象ブロックに書き込まれている各データが第２の高使用状態か第２の低使用状態か削除対象かを判断する。
【０１０９】
データが第２の低使用状態であり削除対象ではない場合には、ステップＳ５０１において、書き込み部１４１は、ブロックグループＢＧ4にデータを書き込む。
【０１１０】
データが第２の高使用状態であり削除対象ではない場合には、ステップＳ４０５において、書き込み部１３５は、ブロックグループＢＧ3の消去対象ブロックに書き込まれているデータを、ブロックグループＢＧ3の他のブロックに対して再書き込みする。
【０１１１】
ステップＳ４０６において、消去部１３６は、消去対象ブロックに書き込まれている各データがブロックグループＢＧ4に書き込まれたか、ブロックグループＢＧ3に再書き込みされたか、又は、削除対象であるために破棄されてもよい場合に、消去対象ブロックを消去する。
【０１１２】
ステップＳ４０７において、キャッシュ制御部９が処理を終了するか否か判断する。
【０１１３】
キャッシュ制御部９が処理を終了しない場合に、処理はステップＳ４０１に移る。
【０１１４】
キャッシュ制御部９が処理を終了する場合に、処理は終了する。
【０１１５】
図５は、本実施形態に係る第４のキャッシュ制御の一例を示すフローチャートである。この図５は、ブロックグループＢＧ4にデータが書き込まれ、ブロックグループＢＧ4のデータが消去され処理を例示している。
【０１１６】
ステップＳ５０１において、書き込み部１４１は、上記ステップＳ４０４においてブロックグループＢＧ3の消去対象ブロックに書き込まれているデータが第２の低使用状態であり削除対象ではないと判断された場合に、当該データをブロックグループＢＧ4に対して書き込む。
【０１１７】
ステップＳ５０２において、判断部１４２は、ブロックグループＢＧ4が消去条件を満たすか否か判断する。
【０１１８】
ブロックグループＢＧ4が消去条件を満たさない場合には、処理はステップＳ５０５に移る。
【０１１９】
ブロックグループＢＧ4が消去条件を満たす場合には、ステップＳ５０３において、選択部１４３は、ブロックグループＢＧ4から消去対象ブロックを選択する。
【０１２０】
ステップＳ５０４において、消去部１４４は、ブロックグループＢＧ4の消去対象ブロックに書き込まれているデータを消去する。
【０１２１】
ステップＳ５０５において、キャッシュ制御部９が処理を終了するか否か判断する。
【０１２２】
キャッシュ制御部９が処理を終了しない場合に、処理はステップＳ５０１に移る。
【０１２３】
キャッシュ制御部９が処理を終了する場合に、処理は終了する。
【０１２４】
以上説明した本実施形態に係るブロックグループＢＧ1においては、例えば、まずブロックＢ1,1に対してシーケンシャルにデータが書き込まれ、次に、ブロックＢ1,2に対してシーケンシャルにデータが書き込まれ、その後、ブロックＢ1,3〜Ｂ1,Kに対して同様にデータが書き込まれる。ブロックグループＢＧ1に含まれるブロックＢ1,1〜Ｂ1,Kが所定のデータ量を越えた場合に、ＦＩＦＯにより、最初に書き込みが完了したブロックＢ1,1が消去され、消去されたブロックＢ1,1に対して再びシーケンシャルにデータが書き込まれる。次に、ブロックＢ1,1に対する書き込みが完了すると、ＦＩＦＯにより、ブロックＢ1,2が消去される。そして、消去されたブロックＢ1,2に対して再びシーケンシャルにデータが書き込まれる。以下、同様の制御が繰り返される。
【０１２５】
ブロックグループＢＧ1においては、管理情報６１に基づいて、ブロックグループＢＧ1における消去対象ブロックに書き込まれているデータに対するアクセスが例えば第１の回数又は第１の頻度未満か否か判断される。ブロックグループＢＧ1における消去対象ブロックに書き込まれているデータに対するアクセスが第１の回数又は第１の頻度未満の場合、当該データの書き込み先としてブロックグループＢＧ2が選択される。
【０１２６】
これに対して、ブロックグループＢＧ1における消去対象ブロックに書き込まれているデータのアクセスが第１の回数又は第１の頻度以上の場合、当該データの書き込み先としてブロックグループＢＧ3が選択される。
【０１２７】
また、ブロックグループＢＧ1における消去対象ブロックに書き込まれているデータが削除対象の場合には、当該データは破棄される。
【０１２８】
本実施形態に係るブロックグループＢＧ2においては、まず、ブロックグループＢＧ1からの第１の低使用状態のデータが、ブロックＢ2,1に対してシーケンシャルに書き込まれ、次に、ブロックＢ2,2に対してシーケンシャルに書き込まれ、その後、ブロックＢ2,3〜Ｂ2,Lに対して同様に書き込まれる。ブロックグループＢＧ2に含まれるブロックＢ2,1〜Ｂ2,Lが所定のデータ量を越えた場合に、ＦＩＦＯにより、最初に書き込みが完了したブロックＢ2,1が消去され、消去されたブロックＢ2,1に対して再びシーケンシャルにデータが書き込まれる。次に、ブロックＢ2,1に対する書き込みが完了すると、ＦＩＦＯにより、ブロックＢ2,2が消去される。そして、消去されたブロックＢ2,2に対して再びシーケンシャルにデータが書き込まれる。以下、同様の制御が繰り返される。
【０１２９】
ブロックグループＢＧ2においては、管理情報６２に基づいて、ブロックグループＢＧ2における消去対象ブロックに書き込まれているデータに対するアクセスが例えば第３の回数又は第３の頻度未満か否か判断される。ブロックグループＢＧ2における消去対象ブロックに書き込まれているデータに対するアクセスが第３の回数又は第３の頻度未満の場合、当該データは消去される。
【０１３０】
これに対して、ブロックグループＢＧ2における消去対象ブロックに書き込まれているデータのアクセスが第３の回数又は第３の頻度以上の場合、当該データの書き込み先としてブロックグループＢＧ3が選択される。
【０１３１】
また、ブロックグループＢＧ2における消去対象ブロックに書き込まれているデータが削除対象の場合には、当該データは破棄される。
【０１３２】
本実施形態に係るブロックグループＢＧ3においては、まず、ブロックグループＢＧ2からの第１の高使用状態のデータ、ブロックグループＢＧ2からの第３の高使用状態のデータ、又は、ブロックグループＢＧ3からの再書き込みデータが、ブロックＢ3,1に対してシーケンシャルに書き込まれ、次に、ブロックＢ3,2に対してシーケンシャルに書き込まれ、その後、ブロックＢ3,3〜B3,Mに対して同様に書き込まれる。ブロックグループＢＧ3に含まれるブロックＢ3,1〜B3,Mが所定のデータ量を越えた場合に、ＦＩＦＯにより、最初に書き込みが完了したブロックＢ3,1が消去され、消去されたブロックＢ3,1に対して再びシーケンシャルにデータが書き込まれる。次に、ブロックＢ3,1に対する書き込みが完了すると、ＦＩＦＯにより、ブロックＢ3,2が消去される。そして、消去されたブロックＢ3,2に対して再びシーケンシャルにデータを書き込まれる。以下、同様の制御が繰り返され
る。
【０１３３】
ブロックグループＢＧ3においては、管理情報６３に基づいて、ブロックグループＢＧ3における消去対象ブロックに書き込まれているデータに対するアクセスが例えば第２の回数又は第２の頻度未満か否か判断される。ブロックグループＢＧ3における消去対象ブロックに書き込まれているデータに対するアクセスが第２の回数又は第２の頻度未満の場合、当該データの書き込み先としてブロックグループＢＧ4が選択される。
【０１３４】
これに対して、ブロックグループＢＧ3における消去対象ブロックに書き込まれているデータのアクセスが第２の回数又は第２の頻度以上の場合、当該データはブロックグループＢＧ3に再書き込みされる。
【０１３５】
また、ブロックグループＢＧ3における消去対象ブロックに書き込まれているデータが削除対象の場合には、当該データは破棄される。
【０１３６】
本実施形態に係るブロックグループＢＧ4においては、まず、ブロックグループＢＧ3からの第２の低使用状態のデータがブロックＢ4,1に対してシーケンシャルに書き込まれ、次に、ブロックＢ4,2に対してシーケンシャルにデータが書き込まれ、その後、ブロックＢ4,3〜B4,Nに対して同様にデータを書き込まれる。ブロックグループＢＧ4に含まれるブロックＢ4,1〜B4,Nが所定のデータ量を越えた場合に、ＦＩＦＯにより、最初に書き込みが完了したブロックＢ4,1が消去され、消去されたブロックＢ4,1に対して再びシーケンシャルにデータが書き込まれる。次に、ブロックＢ4,1に対する書き込みが完了すると、ＦＩＦＯにより、ブロックＢ4,2が消去される。そして、消去されたブロックＢ4,2に対して再びシーケンシャルにデータが書き込まれる。以下、同様の制御が繰り返される。
【０１３７】
本実施形態において、制御部１４は、ブロックグループＢＧ4の消去対象ブロックに書き込まれているデータが第５の高使用状態か否か判断してもよい。ブロックグループＢＧ4の消去対象ブロックに書き込まれているデータが第５の高使用状態と判断された場合、制御部１３は、当該データを不揮発性キャッシュメモリ４に維持するために、ブロックグループＢＧ3の書き込み可能な移動先のブロックに対して書き込むとしてもよい。また、この場合に、プロセッサ２は、ブロックグループＢＧ1のサイズを縮小してもよい。
【０１３８】
本実施形態においては、４つのブロックグループＢＧ1〜ＢＧ4に基づいてデータが管理される。
【０１３９】
例えば、プロセッサ２によって一度アクセスされた第１のデータ（アクセス１回のデータ）は、ブロックグループＢＧ1で管理される。
【０１４０】
例えば、ブロックグループＢＧ1の第２データがプロセッサ２によって２回以上アクセスされ、ＦＩＦＯに基づいてブロックグループＢＧ1から追い出される場合に、第２のデータは、ブロックグループＢＧ1からブロックグループＢＧ3に移動される。
【０１４１】
なお、本実施形態において、ブロックグループＢＧ1のサイズは、ブロックグループＢＧ3のサイズよりも大きいとする。
【０１４２】
例えば、ブロックグループＢＧ1の第３のデータがプロセッサ２によってアクセスされることなくＦＩＦＯに基づいてブロックグループＢＧ1から追い出される場合に、第３のデータは、ブロックグループＢＧ1からブロックグループＢＧ2に移動される。
【０１４３】
例えば、ブロックグループＢＧ3の第４のデータがプロセッサ２によってアクセスされることなくＦＩＦＯに基づいてブロックグループＢＧ3から追い出される場合に、第４のデータは、ブロックグループＢＧ3からブロックグループＢＧ4に移動される。
【０１４４】
例えば、ブロックグループＢＧ2，ＢＧ4では、データをキャッシュすることに代えて、メタデータをキャッシュするとしてもよい。なお、メタデータとは、データに関連する情報を含む。換言すれば、メタデータとは、データが付随して持つそのデータ自身の抽象度の高い付加的なデータである。
【０１４５】
本実施形態において、例えば、第５のデータがブロックグループＢＧ1に格納されると、ブロックグループＢＧ2の第６のデータがＦＩＦＯに基づいて追い出される場合がある。
【０１４６】
例えば、ブロックグループＢＧ1の第７のデータがアクセスされ、ＦＩＦＯに基づいてブロックグループＢＧ1から追い出される場合、第７のデータは、ブロックグループＢＧ1からブロックグループＢＧ3に移動される場合があり、ブロックグループＢＧ3の第８のデータは、ＦＩＦＯに基づいてブロックグループＢＧ3からブロックグループＢＧ4に移動される場合があり、ブロックグループＢＧ4の第９のデータは、ＦＩＦＯに基づいてブロックグループＢＧ4から追い出される場合がある。
【０１４７】
例えば、ブロックグループＢＧ2の第１０のデータがアクセスされた場合、ブロックグループＢＧ1のサイズが増加される。ブロックグループＢＧ1のサイズが増加された場合、ＦＩＦＯに基づいてブロックグループＢＧ3の第１１のデータがブロックグループＢＧ4へ移動される。
【０１４８】
例えば、ブロックグループＢＧ4の第１２のデータがアクセスされ、ＦＩＦＯに基づいてブロックグループＢＧ4から追い出される場合、第１２のデータは、ブロックグループＢＧ3へ移動され、ブロックグループＢＧ1のサイズが縮小される。
【０１４９】
以上説明した本実施形態においては、ブロック単位でデータを維持するか判断する維持判断を行い、維持するブロックのデータを移動先のブロックに書き込む移動書き込みを行い、不揮発性キャッシュメモリ４に書き込まされているデータの消去がブロック単位で実行される。
【０１５０】
本実施形態においては、実効キャッシュ容量を増すことができ、不揮発性キャッシュメモリ４のヒット率を上げることができ、情報処理装置１７の速度を高速化することができる。
【０１５１】
本実施形態においては、不揮発性キャッシュメモリ４に対するガベージコレクションを行わなくても性能低下を抑制することができる。そして、ガベージコレクションを実行しないでよい分だけ、不揮発性キャッシュメモリ４に対する書き込み回数を減らすことができ、不揮発性キャッシュメモリ４を長寿命化することができる。さらに、ガベージコレクションを実行しなくてもよいため、不揮発性キャッシュメモリ４に予備領域を確保する必要がなく、キャッシュメモリとして利用可能なデータ容量を多くすることができ、使用効率を向上させることができる。
【０１５２】
例えば、不揮発性メモリをキャッシュメモリとして用いるが、ブロックの境界とは無関係にデータを破棄する場合には、不揮発性メモリのブロックの有効データを他のブロックに移動するガベージコレクションが頻繁に発生する場合がある。これに対して、本実施形態においては、不揮発性キャッシュメモリ４でガベージコレクションを実行する必要がない。このため、上述のように、本実施形態では、不揮発性キャッシュメモリ４を長寿命化することができる。
【０１５３】
［第２の実施形態］
本実施形態は、上記第１の実施形態の変形例であり、キャッシュ制御部９を備える情報処理装置１７とＳＳＤ５との間のデータ及び情報の送信及び受信について説明する。
【０１５４】
本実施形態においては、データの識別情報として、論理アドレスが用いられる場合を例として説明するが、他の情報によりデータが識別されるとしてもよい。
【０１５５】
図６は、本実施形態に係る情報処理システム３５の構成の一例を示すブロック図である。
【０１５６】
キャッシュ制御部９は、上記第１の実施形態で説明された構成要素に加えて、さらに、送信部１８、受信部１９、書き込み部２０、送信部２１を含む。
【０１５７】
送信部１８は、ＳＳＤ５に、ＳＳＤ５に対する書き込みデータと当該書き込みデータのアドレスとを送る。本実施形態において、送信部１８からＳＳＤ５に送られるアドレスは、例えば、論理アドレスとする。
【０１５８】
受信部１９は、ＳＳＤ５から、ガベージコレクション対象のブロックに書き込まれている有効データを示す論理アドレスを含むブロック情報を受ける。
【０１５９】
本実施形態において、ブロック情報は、ＳＳＤ５における各ブロックの識別情報と、各ブロックに書き込まれているデータの識別情報とを関係付けた情報を含むとしてもよい。
【０１６０】
書き込み部２０は、ＳＳＤ５から受けたブロック情報と管理情報６１〜６４とに基づいて、ブロック情報に含まれている論理アドレスで示される有効データの一部又は全部を、ＳＳＤ５の不揮発性メモリ２４ではない他のメモリに書き込む（転記する）。他のメモリは、例えば不揮発性キャッシュメモリ４などでもよい。
【０１６１】
例えば、書き込み部２０は、ブロック情報に含まれている有効データを示す論理アドレスから、削除命令が受け付けられた場合の削除対象（削除候補）データを示す論理アドレスを除外する。これにより、ガベージコレクション対象のブロックに書き込まれている有効データであり削除対象ではないデータが選択可能になる。書き込み部２０は、選択されたデータを、他のメモリに書き込む。
【０１６２】
送信部２１は、削除対象データを示す論理アドレスを含む削除情報を生成し、削除情報をＳＳＤ５に送る。例えば、削除情報は、ブロック情報に含まれる有効データを示す論理アドレスのうち、書き込み部２０によって他のメモリに書き込まれていない削除対象データを示す論理アドレスを含むとしてもよい。なお、削除情報に代えて、維持対象の論理アドレスを含む維持情報が、送信部２１からＳＳＤ５へ送られるとしてもよい。
【０１６３】
ＳＳＤ５は、プロセッサ２２、メモリ２３、不揮発性メモリ２４を含む。
【０１６４】
メモリ２３は、例えばアドレス変換情報３２、有効／無効情報３３、削除情報３４などの各種の制御情報を格納する。メモリ２３は、例えばＤＲＡＭ又はＳＲＡＭなどのような揮発性メモリでもよく、不揮発性メモリでもよい。メモリ２３は、不揮発性メモリ２４に含まれていてもよい。
【０１６５】
プロセッサ２２は、プロセッサ２２内のメモリに格納されているプログラム、メモリ２３に格納されているプログラム、又は、不揮発性メモリ２４に格納されているプログラムを実行することにより、アドレス変換部２５、書き込み部２６、有効／無効生成部２７、選択部２８、送信部２９、受信部３０、ガベージコレクション部３１として機能する。
【０１６６】
本実施形態において、プロセッサ２２をアドレス変換部２５、書き込み部２６、有効／無効生成部２７、選択部２８、送信部２９、受信部３０、ガベージコレクション部３１として機能させるためのプログラムは、例えば、ＯＳ、ミドルウェア、ファームウェアでもよい。本実施形態において、アドレス変換部２５、書き込み部２６、有効／無効生成部２７、選択部２８、送信部２９、受信部３０、ガベージコレクション部３１のうちの一部又は全部は、ハードウェアにより実装されてもよい。
【０１６７】
アドレス変換部２５は、キャッシュ制御部９から書き込みデータと当該書き込みデータの論理アドレスとを受けた場合に、書き込みデータの論理アドレスと、当該書き込みデータが格納された不揮発性メモリ２４の位置を示す物理アドレスとを関係付けた情報を生成し、この情報をアドレス変換情報３２に登録する。
【０１６８】
本実施形態において、アドレス変換部２５は、プロセッサ２２によって実現されるとしている。しかしながら、アドレス変換部２５は、プロセッサ２２と別の構成としてもよい。
【０１６９】
また、アドレス変換部２５は、例えばテーブル型のアドレス変換情報３２に基づいてアドレス変換を行うが、これに代えてキーバリュー型検索によりアドレス変換を行ってもよい。例えば、論理アドレスをキーとし、物理アドレスをバリューとすることで、キーバリュー型検索によるアドレス変換は実現可能である。
【０１７０】
書き込み部２６は、アドレス変換部２５によって得られた物理アドレスの示す位置に、書き込みデータを書き込む。
【０１７１】
有効／無効生成部２７は、例えばアドレス変換情報３２に基づいて、不揮発性メモリ２４に書き込まれている各データが有効データか又は無効データかを示す有効／無効情報３３を生成する。そして、有効／無効生成部２７は、有効／無効情報３３をメモリ２３に格納する。
【０１７２】
選択部２８は、ガベージコレクション対象のブロックを選択する。
【０１７３】
例えば、選択部２８は、不揮発性メモリ２４のブロックのうち、書き込み時間が最も古いブロックを、ガベージコレクション対象のブロックとして選択してもよい。
【０１７４】
例えば、選択部２８は、不揮発性メモリ２４のブロックからランダムにガベージコレクション対象のブロックを選択してもよい。
【０１７５】
例えば、選択部２８は、有効／無効情報３３に基づいて、無効データの数が最も多いブロック、又は、無効データの数が所定の値より多いブロックを、ガベージコレクション対象のブロックとして選択してもよい。
【０１７６】
例えば、選択部２８は、有効／無効情報３３及び削除情報３４に基づいて、無効データと削除対象データとの数が最も多いブロック、又は、無効データと削除対象データとの数が所定の値より多いブロックを、ガベージコレクション対象のブロックとして選択してもよい。
【０１７７】
送信部２９は、ガベージコレクション対象のブロックに書き込まれているデータを示す論理アドレスから、有効／無効情報３３で無効とされている無効データを示す論理アドレスを削除したブロック情報を生成する。換言すれば、ブロック情報は、ガベージコレクション対象のブロックの識別情報と、当該ブロックに書き込まれている有効データを示す論理アドレスとを関係付けた情報を含む。そして、送信部２９は、ブロック情報をキャッシュメモリ制御部９に送る。
【０１７８】
受信部３０は、キャッシュメモリ制御部９から削除情報を受け、削除情報３４を不揮発性メモリ２４に格納する。
【０１７９】
ガベージコレクション部３１は、不揮発性メモリ２４に格納されている有効／無効情報３３及び削除情報３４に基づいて、ガベージコレクション対象のブロックに書き込まれているデータから、無効データと削除対象データとを除外し、有効であり削除対象ではないデータのみに対して、ガベージコレクションを実行する。
【０１８０】
図７は、本実施形態に係る情報処理装置の処理の一例を示すフローチャートである。
【０１８１】
ステップＳ７０１において、送信部１８は、ＳＳＤ５に、書き込みデータと論理アドレスとを送る。
【０１８２】
ステップＳ７０２において、アドレス変換部２５は、書き込みデータと論理アドレスとを受け、アドレス変換情報３２に対して、書き込みデータの論理アドレスと物理アドレスとを関係付けた情報を登録する。
【０１８３】
ステップＳ７０３において、書き込み部２６は、書き込みデータを不揮発性メモリ２４の物理アドレスの示す位置に書き込む。
【０１８４】
ステップＳ７０４において、有効／無効生成部２７は、不揮発性メモリ２４に書き込まれている各データが有効データか又は無効データを示す有効／無効情報３３を生成し、メモリ２３に有効／無効情報３３を格納する。
【０１８５】
ステップＳ７０５において、選択部２８は、ガベージコレクション対象のブロックを選択する。
【０１８６】
ステップＳ７０６において、送信部２９は、ガベージコレクション対象のブロックに書き込まれているデータを示す論理アドレスから、有効／無効情報３３で無効とされている無効データを示す論理アドレスを削除したブロック情報を生成し、ブロック情報をキャッシュ制御部９に送信する。
【０１８７】
ステップＳ７０７において、受信部１９は、ＳＳＤ５からブロック情報を受信する。
【０１８８】
ステップＳ７０８において、書き込み部２０は、ＳＳＤ５から受けたブロック情報と管理情報６１〜６４とに基づいて、ブロック情報に含まれている論理アドレスの示すデータの一部又は全部を、ＳＳＤ５の不揮発性メモリ２４ではない他のメモリに書き込む。
【０１８９】
例えば、書き込み部２０は、ブロック情報に含まれている論理アドレスのうち、削除命令が受け付けられた削除対象データを示す論理アドレスを除外し、維持対象の論理アドレスの示すデータを、他のメモリに書き込む。
【０１９０】
ステップＳ７０９において、送信部２１は、削除対象の論理アドレスを含む削除情報をＳＳＤ５に送る。
【０１９１】
ステップＳ７１０において、受信部３０は、キャッシュ制御部９から削除情報を受信し、削除情報３４をメモリ２３に格納する。
【０１９２】
ステップＳ７１１において、ガベージコレクション部３１は、有効／無効情報３３及び削除情報３４に基づいて、ガベージコレクション対象のブロックに書き込まれているデータから、無効データと削除対象データとを除外し、有効であり削除対象ではないデータのみに対して、ガベージコレクションを実行する。
【０１９３】
以上説明した本実施形態においては、キャッシュ制御部９は、ＳＳＤ５から、不揮発性メモリ２４のブロックに書き込まれているデータの情報を取得することができる。これにより、キャッシュ制御部９は、不揮発性メモリ２４のブロックにおけるデータの書き込み状態を認識することができる。例えば、本実施形態においては、不揮発性メモリ２４のブロックに書き込まれているデータが、有効データであるか、無効データであるか、削除対象データであるかを認識することができる。
【０１９４】
本実施形態においては、ＳＳＤ５が、データが有効データか無効データかを識別するための有効／無効情報３３と、データが削除対象か否かを識別するための削除情報３４とを備える。これにより、ＳＳＤ５においてガベージコレクションが実行される場合に、ガベージコレクション対象のブロックに書き込まれているデータを、消去するか否か判断することができ、不必要なデータの書き込みを防止することができ、不揮発性メモリ２４の寿命を延ばすことができる。
【０１９５】
本実施形態において、キャッシュ制御部９は、ＳＳＤ５から受けたブロック情報に含まれる論理アドレスの示す有効データのうち、削除対象データが不揮発性メモリ２４から他のメモリに転記されることを防止することができる。また、本実施形態において、ＳＳＤ５は、キャッシュ制御部９から他のメモリに転記されなかったデータ（例えば、無効データ、有効データであるが削除対象データでもあるデータ）を、ＳＳＤ５から削除することができる。
【０１９６】
以上説明した本実施形態においては、ＳＳＤ５から情報処理装置１７へ、消去対象ブロックに関するブロック情報が送られる。しかしながら、このブロック情報は、例えば、不揮発性メモリ２４の各ブロックと各ブロックに書き込まれているデータの識別情報とを関係付けた情報を含むとしてもよい。情報処理装置１７は、この関係情報をＳＳＤ５から受けることにより、ＳＳＤ５におけるブロックとデータとの格納関係を認識することができる。
【０１９７】
［第３の実施形態］
本実施形態においては、上記第１及び第２の実施形態で説明した情報処理装置１７とＳＳＤ５とを含む情報処理システム３５の詳細構成について説明する。
【０１９８】
図８は、本実施形態に係る情報処理システム３５の詳細構成の一例を示すブロック図である。
【０１９９】
情報処理システム３５は、情報処理装置１７とメモリシステム３７とを含む。
【０２００】
上記第１及び第２の実施形態に係るＳＳＤ５は、メモリシステム３７に対応する。
【０２０１】
ＳＳＤ５のプロセッサ２２は、ＣＰＵ４３Ｂに対応する。
【０２０２】
アドレス変換情報３２は、ＬＵＴ（Look Up Table）４５に対応する。
【０２０３】
メモリ２３は、ＤＲＡＭ４７に対応する。
【０２０４】
情報処理装置１７は、ホスト装置として機能する。
【０２０５】
メモリシステム３７のコントローラ３６は、フロントエンド４Ｆと、バックエンド４Ｂとを備える。
【０２０６】
フロントエンド（ホスト通信部）４Ｆは、ホストインタフェース４１、ホストインタフェースコントローラ４２、暗号化／復号化部（Advanced Encryption Standard (AES)）４４、及びＣＰＵ４３Ｆを備える。
【０２０７】
ホストインタフェース４１は、情報処理装置１７との間で、要求（書き込みコマンド、読み出しコマンド、消去コマンドなど）、ＬＢＡ（Logical Block Addressing）及びデータなどを通信する。
【０２０８】
ホストインタフェースコントローラ（制御部）４２は、ＣＰＵ４３Ｆの制御に基づいて、上記ホストインタフェース４１の通信を制御する。
【０２０９】
暗号化／復号化部４４は、データ書き込み動作において、ホストインタフェースコントローラ４２から送信される書き込みデータ（平文）を暗号化する。暗号化／復号化部４４は、データ読み出し動作において、バックエンド４ＢのリードバッファＲＢから送信される暗号化された読み出しデータを復号化する。なお、この暗号化／復号化部４４を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
【０２１０】
ＣＰＵ４３Ｆは、フロントエンド４Ｆの上記各構成４１，４２，４４を制御し、フロントエンド４Ｆの全体の動作を制御する。
【０２１１】
バックエンド（メモリ通信部）４Ｂは、ライトバッファＷＢ、リードバッファＲＢ、ＬＵＴ４５、ＤＤＲＣ４６、ＤＲＡＭ４７、ＤＭＡＣ４８、ＥＣＣ４９、ランダマイザＲＺ、ＮＡＮＤＣ５０、及びＣＰＵ４３Ｂを備える。
【０２１２】
ライトバッファ（ライトデータ転送部）ＷＢは、情報処理装置１７から送信された書き込みデータを一時的に格納する。具体的には、ライトバッファＷＢは、当該書き込みデータが不揮発性メモリ２４に適した所定のデータサイズになるまで、一時的にデータを格納する。
【０２１３】
リードバッファ（リードデータ転送部）ＲＢは、不揮発性メモリ２４から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファＲＢにおいて、読み出しデータは、情報処理装置１７に適した順序（情報処理装置１７が指定した論理アドレスＬＢＡの順序）になるように並び替えられる。
【０２１４】
ＬＵＴ４５は、論理アドレスＬＢＡを物理アドレスＰＢＡ（Physical Block Addressing）に変換するためのデータである。
【０２１５】
ＤＤＲＣ４６は、ＤＲＡＭ４７におけるＤＤＲ（Double Data Rate）を制御する。
【０２１６】
ＤＲＡＭ４７は、例えば、ＬＵＴ４５を格納する揮発性のメモリである。
【０２１７】
ＤＭＡＣ（Direct Memory Access Controller）４８は、内部バスＩＢを介して、書き込みデータや読み出しデータなどを転送する。図８においては１つのＤＭＡＣ４８が図示されているが、コントローラ３６は、２以上のＤＭＡＣ４８を備えるとしてもよい。ＤＭＡＣ４８は、必要に応じて、コントローラ３６内の様々な位置に設定される。
【０２１８】
ＥＣＣ（誤り訂正部）４９は、ライトバッファＷＢから送信される書き込みデータにＥＣＣ（Error Correcting Code）を付加する。ＥＣＣ４９は、リードバッファＲＢに送信する際に、付加したＥＣＣを用いて、不揮発性メモリ２４から読み出した読み出しデータを必要に応じて訂正する。
【０２１９】
ランダマイザＲＺ（又はスクランブラ）は、データ書き込み動作の際に、書き込みデータが不揮発性メモリ２４の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる。このように、書き込みデータを分散させることで、書き込み回数を平準化でき、不揮発性メモリ２４のメモリセルＭＣのセル寿命を長期化できる。そのため、不揮発性メモリ２４の信頼性を向上できる。また、データ読み出し動作の際に、不揮発性メモリ２４から読み出された読み出しデータはランダマイザＲＺを通過する。
【０２２０】
ＮＡＮＤＣ（NAND Controller）５０は、所定の速度の要求を満たすため、複数のチャンネル（ここでは、４つのチャンネルＣＨ０〜ＣＨ３）を用いて、並列に不揮発性メモリ２４にアクセスする。
【０２２１】
ＣＰＵ４３Ｂは、バックエンド４Ｂの上記各構成（４５〜５０，ＲＺ）を制御し、バックエンド４Ｂの全体の動作を制御する。
【０２２２】
なお、コントローラ３６の構成は例示であり、この構成に限定されることはない。
【０２２３】
図９は、本実施形態に係るストレージシステムの一例を示す斜視図である。
【０２２４】
ストレージシステム１００は、ＳＳＤとしてのメモリシステム３７を備える。
【０２２５】
メモリシステム３７は、例えば比較的小型のモジュールであり、その外形寸法の一例は、２０ｍｍ×３０ｍｍ程度である。なお、メモリシステム３７の大きさ及び寸法は、これに限られるものではなく、種々の大きさのものに適宜変更可能である。
【０２２６】
また、メモリシステム３７は、例えば、企業（エンタープライズ）で運用されるデータセンター又はクラウドコンピューティングシステムにおいて、サーバのような情報処理装置１７に装着されて使用可能である。そのため、メモリシステム３７は、エンタープライズ用ＳＳＤ（ｅＳＳＤ）であってもよい。
【０２２７】
メモリシステム３７は、例えば上方に開口した複数のコネクタ（例えばスロット）３８を備える。各コネクタ３８は、例えばＳＡＳ（Serial Attached SCSI）コネクタ等である。このＳＡＳコネクタによれば、６ＧｂｐｓのDual Portにより、情報処理装置１７と各メモリシステム３７とが互いに高速通信を行うことが可能である。なお、これに限られず、各コネクタ３８は、例えば、ＰＣＩｅ（PCI Express）又はＮＶＭｅ（NVM Express）等であってもよい。
【０２２８】
複数のメモリシステム３７は、情報処理装置１７のコネクタ３８にそれぞれ装着され、略垂直方向に起立した姿勢で互いに並べて支持される。このような構成によれば、複数のメモリシステム３７をコンパクトに纏めて実装可能であり、メモリシステム３７の小型化を図ることができる。さらに、本実施形態に係るメモリシステム３７の各形状は、２．５型のＳＦＦ（Small Form Factor)である。このような形状により、メモリシステム３７は、エンタープライズ用ＨＤＤ（ｅＨＤＤ）と互換形状（コンパチ形状）を図ることができ、ｅＨＤＤとの容易なシステム互換性を実現することができる。
【０２２９】
なお、メモリシステム３７は、エンタープライズ用に限られない。例えば、メモリシステム３７は、ノートブック型ポータブルコンピュータ又はタブレット型端末のようなコンシューマ用の電子機器の記憶媒体としても適用可能である。
【０２３０】
以上説明したように、本実施形態で説明した構成を持つ情報処理システム３５及びストレージシステム１００においては、大容量の記憶に、上記第２の実施形態と同様の効果を得ることができる。
【０２３１】
本実施形態に係るメモリシステム３７の構成は、上記第１の実施形態に係る情報処理装置１７に適用されてもよい。例えば、上記第１の実施形態のプロセッサ２は、ＣＰＵ４３Ｂに対応するとしてもよい。アドレス変換情報７は、ＬＵＴ４５に対応するとしてもよい。メモリ３は、ＤＲＡＭ４７に対応するとしてもよい。不揮発性キャッシュメモリ４は、不揮発性メモリ２４に対応するとしてもよい。
【０２３２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０２３３】
２、２２…プロセッサ、３、２３…メモリ、４…不揮発性キャッシュメモリ、５…ＳＳＤ、６１〜６４…管理情報、７、３２…アドレス変換情報、８、２５…アドレス変換部、９…キャッシュ制御部、１０…生成部、１１〜１４…制御部、１５、１６…変更部、１７…情報処理装置、１８、２１、２９…送信部、１９、３０…受信部、２０、２６、１１１、１２１、１３１、１３５、１３７、１４１…書き込み部、２４…不揮発性メモリ、２７…有効／無効生成部、２８、１１３、１２３、１３３、１４３…選択部、３１…ガベージコレクション部、３３…有効／無効情報、３４…削除情報、３５…情報処理システム、３６…コントローラ、３７…メモリシステム、３８…コネクタ、４Ｆ…フロントエンド、４Ｂ…バックエンド、４１…ホストインタフェース、４２…ホストインタフェースコントローラ、４３Ｂ、４３Ｆ…ＣＰＵ、４４…暗号化／復号化部、４５…ＬＵＴ、４６…ＤＤＲＣ、４７…ＤＲＡＭ、４８…ＤＭＡＣ、４９…ＥＣＣ、５０…ＮＡＮＤＣ、１００…ストレージシステム、１１２、１１４、１２２、１２４、１３２、１３４、１４２…判断部、１１５、１２５、１３６、１４４…消去部、ＢＧ1〜ＢＧ4…ブロックグループ、ＷＢ…ライトバッファ、ＲＢ…リードバッファ、ＲＺ…ランダマイザ。
【図１】
2018136970.tif 000003
【図２】
2018136970.tif 000004
【図３】
2018136970.tif 000005
【図４】
2018136970.tif 000006
【図５】
2018136970.tif 000007
【図６】
2018136970.tif 000008
【図７】
2018136970.tif 000009
【図８】
2018136970.tif 000010
【図９】
2018136970.tif 000011