(57)【要約】  演算処理を行うホストに接続されたメモリサブシステムを備えた情報処理装置であって、前記ホストは、データと、前記データの種類を含む書き込み要求をメモリサブシステムへ通知し、前記メモリサブシステムは、第１のメモリと、データを消去するデータ消去単位のサイズが、前記データの書き込み単位のサイズより大きく、かつ、前記第１のメモリよりデータ容量の大きい第２のメモリと、前記データの種類に基づいて、ランダムアクセスデータと、ランダムアクセス以外のデータとを、前記第２のメモリの異なる消去単位に書き込む。
2015114829.tif 000002
【特許請求の範囲】
【請求項１】
演算処理を行うホストと、前記ホストに接続されたメモリサブシステムとを備えた情報処理装置であって、
前記ホストは、
データと、前記データの種類を含む書き込み要求を前記メモリサブシステムへ通知し、
前記メモリサブシステムは、
第１のメモリと、
データを消去するデータ消去単位のサイズが、前記データの書き込み単位のサイズより大きく、かつ、前記第１のメモリよりデータ容量の大きい第２のメモリと、
前記データの種類に基づいて、ランダムアクセスデータと、ランダムアクセス以外のデータとを、前記第２のメモリの異なる消去単位に書き込み、前記ランダムアクセスデータを前記第２のメモリの書き込み単位で管理し、前記ランダムアクセス以外のデータを前記第２のメモリの消去単位で管理するメモリサブシステム制御モジュールと、
を有することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記メモリサブシステム制御モジュールは、
前記ホストから前記メモリサブシステムへ発行される書き込み命令に含まれるデータの種類に応じて、前記ランダムアクセスデータを書き込むための前記第２のメモリの領域のデータサイズを動的に変更することを特徴とする情報処理装置。
【請求項３】
請求項１に記載の情報処理装置であって、
前記データの種類は、
前記書き込むデータがランダムアクセスデータか否かを識別する情報と、前記ホストのデータ処理単位であるグループの番号を識別する情報と、前記書き込むデータがグラフの接続データと、前記グラフの解析結果と、前記グラフの頂点情報の何れであるかを識別する情報のうち、少なくとも１つ含むことを特徴とする情報処理装置。
【請求項４】
請求項１に記載の情報処理装置であって、
前記第１のメモリは、前記第２のメモリよりもデータの転送速度が高く、
前記第２のメモリは、不揮発性メモリであることを特徴とする請求項１に記載の情報処理装置。
【請求項５】
演算処理を行うホストと、前記ホストに接続されたメモリサブシステムとを備えた情報処理装置であって、
前記ホストは、
データと、前記データの種類を含む書き込み要求を前記メモリサブシステムへ通知し、
前記メモリサブシステムは、
第１のメモリと、
データを消去するデータ消去単位のサイズが、前記データの書き込み単位のサイズより大きく、かつ、前記第１のメモリよりデータ容量の大きい第２のメモリと、
前記データを圧縮し、前記データの種類に基づいて、異なるデータの種類の圧縮データを、前記第１のメモリの異なる物理領域に書き込むメモリサブシステム制御モジュールと、
を有することを特徴とする情報処理装置。
【請求項６】
請求項５に記載の情報処理装置であって、
前記メモリサブシステムは、
前記第１のメモリの異なる領域に格納された、前記データの種類が異なる圧縮データを、異なる前記第２のメモリの消去単位に書き込むことを特徴とする情報処理装置。
【請求項７】
請求項５に記載の情報処理装置であって、
前記メモリサブシステムは、
前記圧縮データに対応する管理情報を前記第１のメモリに格納することを特徴とする情報処理装置。
【請求項８】
請求項７に記載の情報処理装置であって、
前記管理情報は、前記圧縮データに対応する論理アドレスを含むことを特徴とする情報処理装置。
【請求項９】
請求項５に記載の情報処理装置であって、
前記メモリサブシステムは、
前記圧縮データを前記第２のメモリの書き込み単位よりデータサイズの小さな単位で管理することを特徴とする情報処理装置。
【請求項１０】
演算処理を行うホストと、前記ホストに接続されたメモリサブシステムとを備えた情報処理装置であって、
前記ホストは、
データと、前記データの種類を含む書き込み要求を前記メモリサブシステムへ通知し、
前記メモリサブシステムは、
第１のメモリと、
データを消去するデータ消去単位のサイズが、前記データの書き込み単位のサイズより大きく、かつ、前記第１のメモリよりデータ容量の大きい第２のメモリと、
前記データの種類に基づいて、前記データの書き込み先とする前記第２のメモリの物理領域の選択方法を変更するメモリサブシステム制御モジュールと、
を有することを特徴とする情報処理装置。
【請求項１１】
請求項１０に記載の情報処理装置であって、
前記メモリサブシステムは、
前記第２のメモリに対して最後にデータの書き込みが行われた書き込み単位の識別子を管理することを特徴とする情報処理装置。
【請求項１２】
請求項１０に記載の情報処理装置であって、
前記第２のメモリは、
消去回数の上限値が異なる２種類以上のメモリから構成され、
前記メモリサブシステムは、
前記データの種類に基づいて、前記消去回数の上限値が異なる第２のメモリのうち、何れの消去回数の上限値の第２のメモリに前記データを書き込むかを決定することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ビッグデータ等の大量のデータの高速処理に適した情報処理装置及び計算機に関するものである。
【背景技術】
【０００２】
今後、ビッグデータ等の大量のデータを計算機で解析することにより、社会における様々な現象を予測または管理する需要が高まる。このため、計算機が扱うデータ量は爆発的に増加し、ビッグデータを安価に低消費電力で記憶できる大容量不揮発性メモリの使用が望まれる。また、ビッグデータの解析では、計算機で多くのデータを読み書きする必要があるため、読み書きの高速化も望まれる。【０００３】
従来の不揮発性メモリを用いた記憶装置では、データ消去単位（ブロック）がデータ書き込み単位より大きく、不要なデータであってもデータの上書きができない。このため、ブロックが必要なデータと不要なデータで満たされるとそのままでは新しいデータを書き込めない。【０００４】
そこで、ホスト（プロセッサー）から記憶装置へ新しいデータを書き込む際、ランダムアクセスのために書き込み可能な領域が不足すると、記憶装置のコントローラは、まず、物理的に散在する必要なデータをそれぞれのブロックから読み出した後、データを読み出したブロックを消去する。次に、記憶装置のコントローラは、読み出したデータを消去されたブロックへ書き込む。これにより新たな書き込み可能な領域を確保するのが一般的であった。この処理はガーベッジコレクションと呼ばれている。【０００５】
また、特許文献１には、不揮発性メモリを用いた記憶装置に対し、記憶装置はデータの論理アドレスの値を基にデータを分けて管理し、論理アドレスの値が近いデータを同じブロックに格納する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−６４２５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
不揮発性メモリを用いた記憶装置でガーベッジコレクションが発生すると、ガーベッジコレクションの処理中はホストの読み書きの処理が待たされて記憶装置の性能低下を招き、さらにガーベッジコレクションそのものが消去処理を含むため、消去回数に上限のある記憶装置の寿命の劣化を招く。【０００８】
また、上記ビッグデータ解析では、データの解析を実行するホストから不揮発性メモリを用いた記憶装置へ、大きなデータサイズ単位でデータを連続に読み出し／書き込み／消去するリクエストと、ランダムアクセスリクエストが混在して発行される。このため、不揮発性メモリの同じブロックに、ランダムアクセスするデータとそうでないデータが混在する。その結果、ガーベッジコレクションで本来、移動及び消去する必要のない、ランダムアクセス以外のデータも移動及び消去してしまい、ガーベッジコレクションによる性能の低下や寿命の劣化が大きかった。【０００９】
上記の特許文献１に開示された技術では、論理アドレスの値のみでデータを区分けして管理しており、依然として、不揮発性メモリの同じブロックにランダムアクセスするデータとそうでないデータが混在する。そのため、ガーベッジコレクションで本来移動及び消去する必要のない、ランダムアクセス以外のデータにも移動／消去が発生してしまい、上記課題を解決できていない。【００１０】
そこで、本発明の目的は、安価で大容量な不揮発性メモリにおけるガーベッジコレクションの効率を向上させることにより、不揮発性メモリを用いた記憶装置のデータ読み書きを高速化し、さらに記憶装置の寿命を延ばすことにある。
【課題を解決するための手段】
【００１１】
本発明は、演算処理を行うホストと、前記ホストに接続されたメモリサブシステムとを備えた情報処理装置であって、前記ホストは、データと、前記データの種類を含む書き込み要求を前記メモリサブシステムへ通知し、前記メモリサブシステムは、第１のメモリと、データを消去するデータ消去単位のサイズが、前記データの書き込み単位のサイズより大きく、かつ、前記第１のメモリよりデータ容量の大きい第２のメモリと、前記データの種類に基づいて、ランダムアクセスデータと、ランダムアクセス以外のデータとを、前記第２のメモリの異なる消去単位に書き込み、前記ランダムアクセスデータを前記第２のメモリの書き込み単位で管理し、前記ランダムアクセス以外のデータを前記第２のメモリの消去単位で管理するメモリサブシステム制御モジュールと、を有する。
【発明の効果】
【００１２】
本発明によれば、ビッグデータ等の大量のデータの解析などに必要な大規模なメモリ空間を不揮発性メモリで安価に提供できる。ホストから不揮発性メモリを用いた記憶装置へ、大きなデータサイズ単位でデータを連続に読み出し、または書き込み、または消去するリクエストと、ランダムアクセスリクエストが混在して発生した場合でも、ランダムアクセスとそうでないアクセスを不揮発性メモリの異なる消去単位に格納する。これにより、不揮発性メモリにおけるガーベッジコレクションの効率を向上できる。これにより高速なデータの読み書きを実現することができ、不揮発性メモリを用いた記憶装置の寿命を延ばすことが可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第１の実施例を示し、サーバの一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、メモリサブシステムの一例を示すブロック図である。
【図３】本発明の第１の実施例を示し、メモリサブシステム内の不揮発性メモリのチップ、ブロック、ページの構成と読み書き消去の処理対象の一例を示すブロック図である。
【図４】本発明の第１の実施例を示し、サーバの処理対象となるビッグデータを構成するグラフの一例を示す図である。
【図５】本発明の第１の実施例を示し、サーバにおいて実行されるグラフ解析処理のシーケンスの一例を示す図である。
【図６】本発明の第１の実施例を示し、ホストからメモリサブシステムへ送信される情報の一例を示す図である。
【図７】本発明の第１の実施例を示し、不揮発性メモリのチップ、ブロック及びページとデータのグループ、ランダムアクセスデータとの対応関係の例を示すブロック図である。
【図８】本発明の第１の実施例を示し、不揮発性メモリのチップ、ブロック及びページとデータのグループ、ランダムアクセスデータとの対応関係の他の例を示すブロック図である。
【図９Ａ】本発明の第１の実施例を示し、論理物理変換テーブルの一例を示す図である。
【図９Ｂ】本発明の第１の実施例を示し、ブロック管理テーブルの一例を示す図である。
【図９Ｃ】本発明の第１の実施例を示し、属性物理変換テーブルの一例を示す図である。
【図１０】本発明の第１の実施例を示し、データ書き込み処理の一例を示すフローチャートである。
【図１１】本発明の第２の実施例を示し、不揮発性メモリのチップ、ブロック及びページと圧縮データのグループとの対応関係の一例を示すブロック図である。
【図１２Ａ】本発明の第２の実施例を示し、データ圧縮処理前後でのデータサイズの変化の例を示す図である。
【図１２Ｂ】本発明の第２の実施例を示し、データ圧縮処理前後でのデータサイズの変化の例を示す図である。
【図１３Ａ】本発明の第２の実施例を示し、データ圧縮時における論理物理変換テーブルの一例を示す図である。
【図１３Ｂ】本発明の第２の実施例を示し、ＤＲＡＭバッファ管理テーブルの一例を示す図である。
【図１４Ａ】本発明の第２の実施例を示し、メモリサブシステムで行われるデータ圧縮及び書き込み処理の一例を示すフローチャートである。
【図１４Ｂ】本発明の第２の実施例を示し、メモリサブシステムで行われるデータ圧縮及び書き込み処理の一例を示すフローチャートである。
【図１５】本発明の第３の実施例を示し、不揮発性メモリのチップ、ブロックと格納されるデータ種との対応関係の一例を示すブロック図である。
【図１６】本発明の第３の実施例を示し、異なる種類の不揮発性メモリのチップが混在した際の、チップと格納されるデータ種との対応関係の一例を示すブロック図である。
【図１７】本発明の第３の実施例を示し、書き込み先選択処理の一例を示すフローチャートである。
【図１８】本発明の第３の実施例を示し、不揮発性メモリの最終書き込みブロック管理テーブルの一例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について添付図面を用いて説明する。
【実施例１】
【００１５】
＜Ａ．サーバの構成＞
まず、サーバ（ＳＶＲ）１０の構成について、図１と図２を用いて説明する。図１は、情報処理を行うサーバ（情報処理装置）１０の全体の構成を示すブロック図である。【００１６】
サーバ（ＳＶＲ）１０は、演算処理を行う複数のホスト（Ｈｏｓｔ（１）３０−１〜Ｈｏｓｔ（Ｎ）３０−Ｎ）と、全てのホスト３０−１〜３０−Ｎを相互に接続するインターコネクト（Ｉｎｔｅｒｃｏｎｎｅｃｔ）２０と、それぞれのホスト３０−１〜３０−Ｎに接続された複数のメモリサブシステム（ＭＳＳ（１）〜ＭＳＳ（Ｎ））５０−１〜５０−Ｎとから構成される。なお、以下の説明では、ホスト３０−１〜３０−Ｎの総称を符号３０で表す。他の構成要素についても同様であり、「−」のない符号は構成要素の総称を示し、「−」を付与した符号は個々の構成要素を示す。【００１７】
ホスト３０は、演算処理を行う演算モジュール（ＣＰＵ）４０と、演算モジュール４０のメモリコントローラ４１に接続された１個以上のメモリ（ＤＲＡＭ）４３から構成される。演算モジュール４０はメモリ４３に格納したプログラムを実行し、メモリ４３から情報を読み込み、情報をメモリ４３へ書き込むことにより処理を実行する。【００１８】
全てのホスト３０はインターコネクト２０を介して互いに通信することができる。また、ホスト３０は、演算モジュール４０のインターフェース４２を介してそれぞれ接続されたメモリサブシステム５０と互いに通信することができる。また、図１にはインターフェース４２が演算モジュール４０に含まれる例を示したが、ホスト３０がメモリサブシステム５０とデータ通信できれば、この例に限らない。インターフェース４２としては、例えば、ＰＣＩ  ＥｘｐｒｅｓｓやDIMM等を採用することができる。【００１９】
メモリサブシステム５０−１は、図２で示すように、それぞれ１個のメモリサブシステム制御モジュール（ＭＳＣ）６０と、１個以上の不揮発性メモリ（ＮＶＭ）８０−１１〜８０ｉｊと、１個以上のメモリ（ＤＲＡＭ）７２−１〜７２−ｐから構成される。メモリサブシステム制御モジュール６０はホスト３０−１、不揮発性メモリ８０及びメモリ７２と互いに通信することができる。なお、メモリサブシステム５０−２〜５０−Ｎはメモリサブシステム５０−１と同様の構成であるので、重複した説明を省略する。なお、図示の例では、不揮発性メモリ８０−１１〜８０ｉｊのそれぞれが、ひとつのチップで構成された例を示す。なお、ＤＲＡＭ７２に保存されたデータは、図示はしないがバッテリバックアップによって、電断時に不揮発性メモリ８０などへデータを退避させることができる。【００２０】
メモリサブシステム５０の中のメモリ７２は、管理情報などを格納するメモリであり、高速なＤＲＡＭが好ましいが、ＤＲＡＭ以外にＭＲＡＭ、相変化メモリ、ＳＲＡＭ、ＮＯＲフラッシュメモリ、ＲｅＲＡＭなどのメモリでもよい。また、不揮発性メモリ８０へ書き込むデータと、読み出すデータとを一時的に記憶して不揮発性メモリ８０のキャッシュとして使用してもよい。不揮発性メモリ８０はホスト３０から書き込まれたデータを格納するメモリであり、安価で大容量なＮＡＮＤフラッシュメモリ、相変化メモリ、ＲｅＲＡＭなどのデータ消去単位のサイズが、データ書き込み単位のサイズ以上であるメモリである。【００２１】
図２はメモリサブシステム５０を更に詳細に示したブロック図である。【００２２】
メモリサブシステム５０は、１個のメモリサブシステム制御モジュール（ＭＳＣ）６０と、不揮発性メモリ（ＮＶＭ（１，１）〜ＮＶＭ（ｉ，ｊ））８０−１１〜８０ｉｊと、メモリ（ＤＲＡＭ（１）〜ＤＲＡＭ（ｐ））７２−１〜７２−ｐとから構成される（ｉ、ｊ、ｐは自然数）。【００２３】
メモリサブシステム制御モジュール６０は、メモリアクセス制御部（ＤＭＡＣ）６２とコマンドバッファ（Ｃ−ＢＦ）６６と、データバッファ（Ｄ−ＢＦ）６５と、アドレスバッファ（Ａ−ＢＦ）６４と、メタデータバッファ（Ｍ−ＢＦ）６３と、レジスタ（ＲＧ）６１と、データ制御ブロック（Ｄ−ＣＴＬ＿ＢＬＫ）７０と、不揮発性メモリ制御部（ＮＶＭＣ（１）〜ＮＶＭＣ（ｉ））７３−１〜７３−ｉと、ＤＲＡＭ制御部（ＤＲＡＭＣ（１）〜ＤＲＡＭＣ（ｐ））７１−１〜７１−ｐとから構成される。【００２４】
データ制御ブロック７０は、データ圧縮ブロック（ＣＯＭＰ＿ＢＬＫ）６９と、データ分類ブロック（ＣＬＳＦＹ＿ＢＬＫ）６８と、ウェアレベリングブロック（ＷＬ＿ＢＬＫ）６７とから構成される。【００２５】
メモリアクセス制御部（ＤＭＡＣ）６２は、図１におけるホスト３０と、コマンドバッファ６６と、データバッファ６５と、アドレスバッファ６４と、メタデータバッファ６３と、レジスタ６１と接続されており、接続先（ホスト３０）との間で通信を中継する。【００２６】
コマンドバッファ６６、データバッファ６５、アドレスバッファ６４、メタデータバッファ６３、レジスタ６１のそれぞれは、データ制御ブロック７０とも接続されている。コマンドバッファ６６は、データの読み出し命令、書き込み命令、消去命令などを一時的に格納するバッファである。データバッファ６５は、読み書きされるデータを一時的に格納するバッファである。アドレスバッファ６４は、ホスト３０からの読み出し、書き込み及び消去命令におけるデータのアドレスを一時的に格納するバッファである。なお、アドレスバッファ６４は、データのサイズも一時的に格納することができる。【００２７】
メタデータバッファ６３は、ホスト３０からの読み出し、書き込み及び消去命令におけるデータのグループ番号、ランダムアクセスデータか否か、データの種類（グラフデータ（ＣＳＲ）、解析結果（ＭＳＧ）、頂点情報（ＶＡＬ））などのメタデータを一時的に格納するバッファである。ただし、メタデータはこれらに限定されるものではなく、これ以外の情報であってもよい。【００２８】
レジスタ６１は、データ制御ブロック７０における各制御で必要な制御情報を格納して、データ制御ブロック７０から読み出し可能とするレジスタである。【００２９】
データ制御ブロック７０は、レジスタ６１、コマンドバッファ６６、データバッファ６５、アドレスバッファ６４、メタデータバッファ６３と通信し、不揮発性メモリ制御部７３とＤＲＡＭ制御部７１を制御するものである。【００３０】
不揮発性メモリ制御部（ＮＶＭＣ（１）〜ＮＶＭＣ（ｉ））７３−１〜７３−ｉは、不揮発性メモリ（ＮＶＭ（ｉ，１）〜ＮＶＭ（ｉ，ｊ））８０−１１〜８０−ｉｊに接続されており、接続された不揮発性メモリ８０のデータ読み出しと、データの書き込みと、データの消去を行う。ここで、ｉは自然数であってチャネル番号を表し、複数のチャネルはそれぞれ独立して通信できるデータ転送バス（Ｉ／Ｏ）を備える。１つのチャネルに属するｊ個の不揮発性メモリ（ＮＶＭ（ｉ，１），  ＮＶＭ（ｉ，２），  …，  ＮＶＭ（ｉ，ｊ））８０は、データ転送バス（Ｉ／Ｏ）を共有する。【００３１】
また、各チャネル（Ｃｈ１〜Ｃｈｉ）に属するｊ個の不揮発性メモリ８０は、メモリとしては独立しているため、不揮発性メモリ制御部７３からの命令を独立して処理することができる。ｊ個の不揮発性メモリ８０は、不揮発性メモリ制御部（ＮＶＭＣ）７３から物理的に近い順にウェイ（Ｗａｙ１，  Ｗａｙ２，  …，  Ｗａｙｊ）に属する。各不揮発性メモリ８０がデータ処理中であるか否かを、不揮発性メモリ制御部７３は、各不揮発性メモリ８０に接続されたレディービジー線（ＲＹ／ＢＹ）の信号を取得することで判定することができる。不揮発性メモリ制御部７３は、データ制御ブロック７０と接続され、互いに通信することができる。【００３２】
なお、チャネル番号ｉと、ウェイ番号ｊの組み合わせｉｊは、不揮発性メモリ８０のチップを特定する識別子として用いることができる。【００３３】
ＤＲＡＭ制御部（ＤＲＡＭＣ（１）〜ＤＲＡＭＣ（ｐ））７１−１〜７１−ｐは、それぞれメモリ（ＤＲＡＭ（１）〜ＤＲＡＭ（ｐ））７２−１〜７２−ｐに接続され、メモリ７２からのデータ読み出しと、メモリ７２へのデータの書き込みを行う。また、ＤＲＡＭ制御部７１はデータ制御ブロック７０と接続され、互いに通信することができる。【００３４】
なお、不揮発性メモリ８０のデータの容量は、ＤＲＡＭ７２のデータ容量よりも大きい。換言すれば、不揮発性メモリ８０のチップ当たりのデータの容量は、ＤＲＡＭ７２のチップ当たりのデータ容量よりも大きい。また、本実施例１ではＤＲＡＭ７２を採用した例を示したが、不揮発性メモリ８０よりもデータの転送速度（単位時間当たりに読み書きするバイト数）が高いメモリであれば良い。【００３５】
＜Ｂ．不揮発性メモリの構造と読み書き消去処理＞
図３は、メモリサブシステム５０の不揮発性メモリ８０のチップ、ブロック、ページの構成と読み書き消去の処理対象の一例を示すブロック図である。図３を用いて、不揮発性メモリ８０の構成及びデータの読み出しと書き込みと消去の処理を説明する。【００３６】
それぞれの不揮発性メモリ８０は、Ｎ＿ｂｌｋ個のブロック（ＢＬＫ）から構成され、各ブロックはＮ＿ｐｇ個のページ（ＰＧ）から構成される。ここで、Ｎ＿ｂｌｋとＮ＿ｐｇは自然数である。例えば、不揮発性メモリ８０が容量８ＧＢ／ｃｈｉｐのＮＡＮＤフラッシュメモリである場合、１ブロックのデータサイズが１ＭＢで、１ページのデータサイズが８ｋＢの時、Ｎ＿ｂｌｋ＝８ｋ＝（８ＧＢ／１ＭＢ）であり、Ｎ＿ｐｇ＝１２８＝（１ＭＢ／８ｋＢ）である。【００３７】
不揮発性メモリ８０に格納されたデータは、ページの単位（データサイズ）で読み出され、不揮発性メモリ８０へデータを書き込む際はページの単位で書き込む。また、不揮発性メモリ８０に格納されたデータはブロックの単位（データサイズ）で消去される。【００３８】
不揮発性メモリ８０にデータを書き込む際、データの上書きはできない。例えば、図３において消去されたブロック（図中Ｅｒａｓｅ）内のページ（ＰＧ＿ｅ）へデータを書き込むことはできるが、既にデータが書き込まれたページ（ＰＧ＿ｄ）には新しいデータを書き込むことはできない。以上をまとめると不揮発性メモリ８０は以下の２つの特徴を有する。【００３９】
特徴１：消去単位（ブロック）のデータサイズは書き込み単位（ページ）のデータサイズ以上である。【００４０】
特徴２：データが既に書き込まれたページなどには新しいデータを上書きできない。【００４１】
以下、サーバ１０が行う処理について、大規模グラフ解析を例に挙げて説明する。まず、図４、５を用いて、サーバで取り扱うグラフの例と、グラフデータの解析シーケンスの例を説明する。【００４２】
＜Ｃ．グラフとグラフ解析シーケンス＞
図４は、サーバ１０で取り扱うビッグデータを構成するグラフの一例を示す図である。ここで例として挙げるグラフは、グラフの頂点に各頂点を一意に特定する頂点番号が割り当てられており、２つの頂点を繋ぐ一本のグラフの辺は、辺の両端の２つの頂点の間に関係性があることを表す。グラフの各頂点が解析対象のグラフデータとなる。一般にグラフ解析の対象となるグラフの頂点は膨大な数となるため、グラフデータは頂点番号に応じてグループに分けられ、グループごとに解析される。【００４３】
図５は、サーバ１０で実行するグラフ解析のシーケンスの一例を示す。メモリサブシステム（ＭＳＳ）５０の不揮発性メモリ８０には、グラフデータ（ＣＳＲ）とグラフ解析の結果（ＭＳＧ）及び頂点情報（ＶＡＬ）が格納され、それぞれグループ（Ｇｒ）に分割されてホスト３０によって読み書きされて処理される。以下のシーケンスは、Ｎ個のホスト３０及びメモリサブシステム５０において、同時並行的に実行される。なお、グループ（Ｇｒ）は、頂点番号に応じて分類されたデータの集合である。【００４４】
時刻１（Ｔ１）：まず、メモリサブシステム５０は不揮発性メモリ８０に格納されたグループ１に属するグラフデータ（Ｒｅａｄ  ＣＳＲ  Ｇｒ．１）と、グラフ解析の結果（Ｒｅａｄ  ＭＳＧ  Ｇｒ．１）及び頂点情報（Ｒａｎｄｏｍ  Ｒｅａｄ／Ｗｒｉｔｅ  ＶＡＬ）を読み出し、ホスト３０へ送信する。【００４５】
ホスト３０によるグラフデータ（ＣＳＲ）とグラフ解析の結果（ＭＳＧ）の読み出しは、不揮発性メモリ８０の読み出し単位でのシーケンシャルリードとなるが、頂点情報（ＶＡＬ）の読み出しは、１６Ｂｙｔｅの細かなアクセス単位でのランダムアクセスとなる。【００４６】
時刻２（Ｔ２）：次に、ホスト３０は、メモリサブシステム５０から送られてきたグループ１のグラフデータを解析する（Ａｎａｌｙｚｅ  Ｇｒ．１）。これと並行して、メモリサブシステム５０は、次にホスト３０で解析されるグループ２のグラフデータ（Ｒｅａｄ  ＣＳＲ  Ｇｒ．２）及びグラフ解析の結果（Ｒｅａｄ  ＭＳＧ  Ｇｒ．２）を読み出す。これらと並行して、メモリサブシステム５０は、グループ１のグラフ解析の結果を消去する（Ｅｒａｓｅ  ＭＳＧ  Ｇｒ．１）。このグラフ解析結果はホスト３０による解析の後、二度と使われないため、このタイミングで消去が可能である。【００４７】
時刻３（Ｔ３）：それぞれのホスト３０は、グループ１のグラフ解析の結果を他のホスト３０へ伝える。各ホスト３０は他のホスト３０から送られてきたグラフ解析の結果をグループごとにまとめ、メモリサブシステム５０に送信する。また、同時に各ホスト３０は頂点情報の更新結果をメモリサブシステム５０へ送信する。【００４８】
メモリサブシステム５０はホスト３０から受信したデータのうち、グラフ解析の結果を不揮発性メモリ８０の書き込み単位で不揮発性メモリ８０に書き込む（図中Ｗｒｉｔｅ  ＭＳＧ  （Ｇｒ．＃  ａｔ  ｒａｎｄｏｍ））。また、頂点情報の更新結果は１６Ｂｙｔｅという細かな単位でメモリサブシステム５０へ送信されるため、メモリサブシステム５０では、更新する１６Ｂｙｔｅが含まれる不揮発性メモリ８０の書き込み単位を読み出し、１６Ｂｙｔｅのみを更新して、再び不揮発性メモリ８０の書き込み単位で書き込む、Ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ処理を実行する。もしくは、Ｒｅａｄ−ｍｏｄｉｆｙ処理をホスト３０で実行し、不揮発性メモリ８０の書き込み単位でホスト３０からメモリサブシステム５０へ送信してもよい（Ｒａｎｄｏｍ  Ｒｅａｄ／Ｗｒｉｔｅ  ＶＡＬ）。【００４９】
以上のシーケンスをグループ順に繰り返し、全てのグループ１〜Ｍの処理が終了した後、各ホスト（Ｈｏｓｔ（１）〜Ｈｏｓｔ（Ｎ））３０−１〜３０−Ｎの間で処理終了の同期が実行される（ＳＹＮＣ）。【００５０】
この一連のグループ１〜Ｍの処理及び同期をスーパーステップ（Ｓ．Ｓ．）と呼び、当該同期の後、再度グループ１から順に処理が繰り返される。前のスーパーステップでメモリサブシステム５０に書き込まれたグラフ解析の結果（ＭＳＧ）は、次のスーパーステップでホスト３０によって読み込まれる。グラフ解析はこのスーパーステップの繰り返しによって実行される。【００５１】
＜Ｄ．ホストとメモリサブシステム間の通信＞  
図６を用いて、ホスト３０とメモリサブシステム５０の間の通信を説明する。図６は、ホスト３０がメモリサブシステム５０へ読み出し、書き込み、及び消去命令を送信する際に、メモリサブシステム５０へ送信する情報を示す図である。【００５２】
（ａ）読み出し
ホスト３０がメモリサブシステム５０のデータの読み出し命令を発行する際（Ｒｅａｄ）、ホスト３０はメモリサブシステム５０へ読み出すデータのグループ（Ｇｒ．）の番号もしくはランダムアクセスデータであることを示すメタデータ（ｒａｎｄｏｍ）と、データの種類（ＣＳＲ／ＭＳＧ／ＶＡＬ）を送信する。もしくは、ホスト３０はメモリサブシステム５０へ論理アドレス（Ａｄｒ）及び読み出しデータサイズ（ｓｉｚｅ）を送信する。メモリサブシステム５０は、ホスト３０から受信した上記情報を基に、不揮発性メモリ８０からデータを読み出して、ホスト３０へ読み出したデータを送信する。【００５３】
（ｂ）書き込み
ホスト３０がメモリサブシステム５０へデータ書き込み命令を発行する際（Ｗｒｉｔｅ）、ホスト３０はメモリサブシステム５０へ書き込みデータのグループ（Ｇｒ．）の番号もしくはランダムアクセスデータであることを示すメタデータ（ｒａｎｄｏｍ）と、データの種類（ＣＳＲ／ＭＳＧ／ＶＡＬ）と、書き込みデータ（ｄａｔａ）と、必要に応じて、論理アドレス（Ａｄｒ）と書き込みデータサイズ（ｓｉｚｅ）を送信する。すなわち、ホスト３０の演算モジュール４０が、書き込みデータと、データの種類を含む書き込み要求を、メモリサブシステム５０へ通知する。メモリサブシステム５０はホスト３０から受信した上記情報を基に、データを不揮発性メモリ８０へ書き込む。【００５４】
（ｃ）消去
ホスト３０がメモリサブシステム５０のデータの消去命令を発行する際（Ｅｒａｓｅ）、ホスト３０はメモリサブシステム５０へ消去するデータのグループ（Ｇｒ．）の番号もしくはランダムアクセスデータであることを示すメタデータ（ｒａｎｄｏｍ）と、データの種類（ＣＳＲ／ＭＳＧ／ＶＡＬ）を送信する。もしくは、ホスト３０はメモリサブシステム５０へ論理アドレス（Ａｄｒ）及び消去するデータサイズ（ｓｉｚｅ）を送信する。メモリサブシステム５０は、ホスト３０から受信した上記情報を基に、不揮発性メモリ８０のデータを消去する。【００５５】
次に、サーバ１０がグラフ解析処理を行う際のメモリサブシステム５０の処理を図７〜１８を用いて説明する。【００５６】
＜Ｅ．グラフ解析におけるメモリサブシステム制御モジュールの処理＞
（Ｅ１）メモリサブシステム５０の制御に必要なデータの入力
グラフ解析を実行するホスト３０は、グラフ解析の前に、メモリサブシステム５０の制御に必要なデータを、メモリサブシステム５０のレジスタ６１に書き込む。ホスト３０がグラフ解析を実行する際に、メモリサブシステム５０の制御に必要なデータは、グループの数と、グラフデータのデータサイズ、グラフの頂点数や辺の数、データの種類（グラフデータ、結果など）に応じた書換え頻度などである。また、グラフの最短経路探索の場合は、最短経路を求めたい２頂点、すなわち、始点と終点を特定する情報なども含まれる。【００５７】
なお、データの種類に応じた書換え頻度は、グラフを解析するプログラムのソースレベルで特定するようにしてもよい。例えば、ソースレベルで、データが不揮発性メモリ８０に格納されている期間を設定しておくことで、ホスト３０がメモリサブシステム５０にデータの書換え頻度を伝達することができる。【００５８】
また、レジスタ６１に書き込まれるデータとしては、例えば、解析するグラフデータのグループ数である。【００５９】
上記データの入力は、ホスト３０が実行するプログラムで実行してもよく、あるいは、サーバ１０が外部の計算機から受信したデータをホスト３０がレジスタ６１へ書き込むようにしてもよい。【００６０】
（Ｅ２）データ書き込み処理
図７〜図１０を用いて、メモリサブシステム５０へデータを書き込む際の制御に関して説明する。【００６１】
図７は、不揮発性メモリ８０のチップ、ブロック及びページとデータのグループ、ランダムアクセスデータとの対応関係の例を示すブロック図である。【００６２】
まず、図７に示すように、ホスト３０はメモリサブシステム制御モジュール（ＭＳＣ）６０へ書き込みリクエストを送信する際、書き込みコマンドと書き込みデータに加えて、データの属性（ランダムアクセスデータ，グループ番号など）を含むメタデータを付加する（ｒａｎｄｏｍ  ｏｒ  Ｇｒ．Ｎ）。【００６３】
一方、メモリサブシステム制御モジュール（ＭＳＣ）６０は、メモリサブシステム５０のＤＲＡＭ７２に各種管理テーブルを格納し、ホスト３０から送られたデータ属性（メタデータ）に基づいて管理テーブルを参照し、データの書き込み先を決定する。【００６４】
なお、図７では管理テーブルとして、論理物理変換テーブル（ＬＰＴ）１１０と、属性物理変換テーブル（ＡＰＴ）１３０と、ブロック管理テーブル（ＢＬＫ＿ＳＴ）１２０をＤＲＡＭ７２に格納する例を示す。【００６５】
データ属性ごとの書き込み先は、図７に示すように、不揮発性メモリ８０の各チャネル（Ｃｈ．１〜Ｃｈ．ｉ）に分散させて配置してもよい。図７の例では、ひとつのグループのデータの格納先が、チャネルＣｈ．１〜Ｃｈ．ｉの同一のウェイ番号にまたがって設定され、並列的にアクセスが行われる。なお、ひとつのグループを複数のウェイ番号に割り当てるようにしてもよい。【００６６】
さらに、ランダムアクセスデータは、グループのデータを格納する不揮発性メモリ８０のチップのブロックとは異なるブロックに格納され、チャネルＣｈ．１〜Ｃｈ．ｉの同一のウェイ番号にまたがって設定される。同様に、ランダムアクセスデータを複数のウェイ番号に割り当てるようにしてもよい。なお、メモリサブシステム制御モジュール６０は、書き込み要求のデータのサイズに応じて、不揮発性メモリ８０の書き込み領域を動的に変更する。メモリサブシステム制御モジュール６０は、書き込むデータのサイズに応じてチャネルＣｈ．１〜ｉを変更する。【００６７】
図７の構成により、ホスト３０による読み出しがシーケンシャルとなるグラフデータ（ＣＳＲ）とグラフ解析の結果（ＭＳＧ）を格納する領域をグループ単位で複数のチャネル番号を跨ぐように設定し、ホスト３０による読み出しがランダムアクセスとなる頂点情報（ＶＡＬ）を格納する領域を、上記グループとは異なるチップまたはブロックに設定する。これにより、不揮発性メモリ８０のひとつのブロックにランダムアクセスするデータと、シーケンシャルアクセスするデータが混在して格納されるのを防止できる。したがって、前記従来例のように、シーケンシャルアクセスのデータが、ランダムアクセスのデータと一緒に移動及び消去されるのを防いで、不揮発性メモリ８０のガーベッジコレクションの効率を向上させることができる。【００６８】
そして、グループに割り当てられたグラフデータ（ＣＳＲ）とグラフ解析の結果（ＭＳＧ）の読み出しは、不揮発性メモリ８０の読み出し単位でのシーケンシャルリードとなるので、グループ単位で複数のチャネル番号を跨ぐように設定することで、アクセスの並列度を向上させてデータの転送速度を向上させることができる。【００６９】
あるいは、図８に示すように、ランダムアクセスデータとグループ番号が付加されたデータを書き込むチャネルやチップを別にしてもよい。【００７０】
なお、図８は、不揮発性メモリ８０のチップ、ブロック及びページとデータのグループ、ランダムアクセスデータとの対応関係他の例を示すブロック図である。図８において、グループに割り当てられたデータを格納するチャネルＣｈ．１〜Ｃｈ．ｉ−１は、ＭＬＣ（Multiple Level Cell）等のＮＡＮＤ型フラッシュメモリで構成し、ランダムアクセスを行うデータを格納するチャネルＣｈ．ｉは、ＳＬＣ（Single Level Cell）のＮＡＮＤ型フラッシュメモリやＲｅＲＡＭ等書換え寿命が長いチップで構成する。【００７１】
この場合も、不揮発性メモリ８０のひとつのブロックにランダムアクセスするデータと、シーケンシャルアクセスするデータが混在して格納されるのを防止できる。そして、前記従来例のように、シーケンシャルアクセスのデータが、ランダムアクセスのデータと一緒に移動及び消去されるのを防いで、不揮発性メモリ８０のガーベッジコレクションの効率を向上させることができる。【００７２】
データ書き込み処理において必要となる管理テーブルを図９Ａ〜図９Ｃに示す。これらの管理テーブルは、グラフデータの解析を開始する前にメモリサブシステム制御モジュール（ＭＳＣ）６０がＤＲＡＭ７２に設定する。【００７３】
図９Ａは、データの論理アドレス１１０１と物理アドレス１１０２とを対応付ける論理物理変換テーブル（ＬＰＴ）１１０である。本実施例では、メモリサブシステム制御モジュール（ＭＳＣ）６０が、８ｋＢｙｔｅのページ単位でアドレスを管理する例を示し、論理アドレス１１０１及び物理アドレス１１０２は、各ページの先頭のアドレスを指し示す。【００７４】
図９Ｂは、ブロック管理テーブル（ＢＬＫ＿ＳＴ）１２０の一例を示す図である。ブロック管理テーブル１２０は、ブロックの位置１２０１と、ブロックの状態１２０２と、当該ブロックの消去回数１２０３がひとつのレコードに含まれる。ブロックの位置１２０１は、チャネル番号（ｉ）と、ウェイ番号（ｊ）と、ブロック番号Ｎ＿ｂｒで構成される。ブロックの状態１２０２は、消去済み“ＥＲＡＳＥＤ”、書き込み先として確保済み”ＡＬＬＯＣＡＴＥＤ”、不良ブロック”ＢＡＤ”、データ書き込み済み”ＰＲＯＧＲＡＭＭＥＤ”などの予め設定された状態が格納される。消去回数１２０３は、当該ブロックを１回消去するたびに１が加算される。【００７５】
図９Ｃは、データ属性ごとの書き込み先を管理する属性物理変換テーブル（ＡＰＴ）１３０の一例を示す図である。属性物理変換テーブル１３０は、データのグループを格納するグループ１３０１と、データの種類を格納するデータ種類１３０２と、既に書き込まれたページ数を格納するページカウント１３０３と、当該グループのデータを次に格納するブロック１〜ｉの物理アドレス１３０４をひとつのエントリに含む。【００７６】
グループ１３０１は、グループ番号（１〜Ｍ）あるいはランダムアクセスのデータを示す“Ｒａｎｄｏｍ”が格納される。データ種類１３０２には、グラフデータ（ＣＳＲ）、グラフ解析の結果（ＭＳＧ）または頂点情報（ＶＡＬ）が格納される。ページカウント１３０３には、データ種類毎に既に書き込まれたページ数が格納される。物理アドレス１３０４は、チャネル番号と、ウェイ番号及びブロック番号Ｎ＿ｂｒが格納され、データ種類毎に、次にデータを格納するブロック番号が格納されている。【００７７】
この、属性物理変換テーブル（ＡＰＴ）１３０は、メモリサブシステム制御モジュール（ＭＳＣ）６０が不揮発性メモリ８０の構成などに応じて設定する。なお、グループ１３０１については、レジスタ６１に書き込まれたグループ数に基づいて、メモリサブシステム制御モジュール（ＭＳＣ）６０が設定する。【００７８】
図１０は、メモリサブシステム５０が実行するデータ書き込み処理の一例を示すフローチャートを示す。まず、メモリサブシステム制御モジュール（ＭＳＣ）６０のデータ制御ブロック（Ｄ−ＣＴＬ＿ＢＬＫ）７０は、レジスタ（ＲＧ）６１を参照し、ホスト３０からのデータ書き込みリクエストを受信する（ステップ  Ｓ１）。データ制御ブロック（Ｄ−ＣＴＬ＿ＢＬＫ）７０は、ホスト３０から受信したデータ書き込みリクエストに含まれるコマンドと、データと、アドレスと、メタデータとをコマンドバッファ（Ｃ−ＢＦ）６６、データバッファ（Ｄ−ＢＦ）６５、アドレスバッファ（Ａ−ＢＦ）６４、メタデータバッファ（Ｍ−ＢＦ）６３にそれぞれ格納する。【００７９】
その後、データ分類ブロック（ＣＬＳＦＹ＿ＢＬＫ）６８は、メタデータバッファ（Ｍ−ＢＦ）６３を参照し（ステップＳ２）、受信したデータについてグループ番号が付加されたデータか、ランダムアクセスデータなのかを判定する（ステップＳ３）。【００８０】
ランダムアクセスデータの場合はステップＳ４へ進み、データ分類ブロック（ＣＬＳＦＹ＿ＢＬＫ）６８はブロック管理テーブル１２０を参照し、空きブロックが十分に残っているか、つまり空きブロックの数が閾値（Ｔｈ１）以上に残っているか否かを判定する（ステップ  Ｓ４）。【００８１】
空きブロック数の閾値（Ｔｈ１）は、事前にホスト３０によって決定され、データの書き込み前にメモリサブシステム５０へ通知される。あるいは、データアクセスの履歴や不揮発性メモリ８０の容量、及び上記（Ｅ１）でレジスタ６１に書き込まれた制御に必要なデータなどを基に、メモリサブシステム制御モジュール（ＭＳＣ）６０によって決定される。【００８２】
ステップＳ４によって、空きブロック数が閾値（Ｔｈ１）以上に残っている場合、ステップＳ５へ進む。一方、空きブロック数が閾値（Ｔｈ１）以上残っていない場合、メモリサブシステム制御モジュール（ＭＳＣ）６０はガーベッジコレクション（ＧＣ）を実行し、空きブロック数を増やす。なお、ガーベッジコレクション（ＧＣ）が完了した後に、ステップＳ４に復帰する。なお、ガーベッジコレクションの処理については周知または公知の技術を適用すればよいので、図示は省略する。【００８３】
ステップＳ５では、まずデータ分類ブロック（ＣＬＳＦＹ＿ＢＬＫ）６８が、図９Ｃの属性物理変換テーブル（ＡＰＴ）１３０のうち、該当するデータ分類に対応する行を参照する。そして、データ分類ブロック（ＣＬＳＦＹ＿ＢＬＫ）６８は、対応する行のページカウント１３０３に１を加算する。【００８４】
加算の結果、ページカウント１３０３が予め決定された閾値（Ｔｈ２）を超えた場合、データ制御ブロック７０は、図９Ｂのブロック管理テーブル（ＢＬＫ＿ＳＴ）１２０を参照し、不揮発性メモリ８０の空きブロック”ＥＲＡＳＥＤ”を各チップ（チャネルＣｈ．１〜Ｃｈ．ｉ）から１ブロックずつ選択し、新たな書き込み先とする。閾値（Ｔｈ２）は、例えば物理アドレス１３０４の１行分を構成するi個のブロックに含まれる不揮発性メモリ８０のページの総数である。データ制御ブロック（Ｄ−ＣＴＬ＿ＢＬＫ）７０は、選択されたｉ個のブロック番号と、チャネル番号と、ウェイ番号で、現在書き込みを行ったグループについて、属性物理変換テーブル（ＡＰＴ）１３０の物理アドレス１３０４を更新する。【００８５】
また、データ制御ブロック（Ｄ−ＣＴＬ＿ＢＬＫ）７０は、選択されたブロックに関して、ブロック管理テーブル（ＢＬＫ＿ＳＴ）１２０に記録されているブロックの状態を”ＥＲＡＳＥＤ”から”ＡＬＬＯＣＡＴＥＤ”に更新し、属性物理変換テーブル（ＡＰＴ）１３０の対応する行のページカウント１３０３の値を１に更新する（ステップＳ５）。【００８６】
次にステップＳ６では、データ制御ブロック（Ｄ−ＣＴＬ＿ＢＬＫ）７０がデータの書き込み先を決定する。まず、データ分類ブロック（ＣＬＳＦＹ＿ＢＬＫ）６８は、属性物理変換テーブル（ＡＰＴ）１３０のうち、対応するデータ分類のページカウント１３０３及び物理アドレス１３０４の項目を参照する。そして、データ分類ブロック（ＣＬＳＦＹ＿ＢＬＫ）６８は、ページカウント１３０３の値から、次の書き込み先のチップ（ｉ、ｊ）、ブロック（Ｎ＿ｂｌｋ）、ページ（Ｎ＿ｐｇ）を、属性物理変換テーブル（ＡＰＴ）１３０の物理アドレス１３０４の項目に記録されたｉ個の書き込み先を選択する。【００８７】
その後、データ分類ブロック（ＣＬＳＦＹ＿ＢＬＫ）６８は、上記選択した書き込み先のチップ（ｉ、ｊ）を制御するチャネル（Ｃｈ．ｉ）の不揮発性メモリ制御部（ＮＶＭＣ）７３−１〜７３−ｉに書き込み要求を送信する。書き込み要求を受信した不揮発性メモリ制御部７３は、指定されたチップ（ｉ、ｊ）のブロック（Ｎ＿ｂｌｋ）のページ（Ｎ＿ｐｇ）にデータバッファ（Ｄ−ＢＦ）６５の値を書き込む。【００８８】
そして、データ分類ブロック（ＣＬＳＦＹ＿ＢＬＫ）６８は、書き込みを行った物理アドレス１３０４に対応する論理アドレスを対応付けて図９Ａの論理物理変換テーブル（ＬＰＴ）１１０を更新し、図９Ｂに示すブロック管理テーブル１２０のうち、書き込みを行ったブロックの行においてのブロックの状態１２０２の欄を”ＡＬＬＯＣＡＴＥＤ”から”ＰＲＯＧＲＡＭＭＥＤ”に更新する（ステップＳ７）。【００８９】
以上の処理によって、ホスト３０による読み出しがシーケンシャルとなるグラフデータ（ＣＳＲ）とグラフ解析の結果（ＭＳＧ）を、グループ単位で複数のチャネル番号を跨ぐように不揮発性メモリ８０に格納し、ホスト３０による読み出しがランダムアクセスとなる頂点情報（ＶＡＬ）を、上記グループとは異なるチップまたはブロック（消去単位）に書き込むことができる。【００９０】
これにより、不揮発性メモリ８０のひとつのブロックにランダムアクセスするデータと、シーケンシャルアクセスするデータが混在して格納されるのを防止できる。すなわち、ランダムアクセスのデータと、ランダムアクセス以外のデータ（シーケンシャルアクセスのデータ）とを不揮発性メモリ８０の異なるブロック（消去単利）で管理することが可能となる。したがって、前記従来例のように、シーケンシャルアクセスのデータが、ランダムアクセスのデータと一緒に移動及び消去されるのを防いで、不揮発性メモリ８０のガーベッジコレクションの効率を向上させることができる。【００９１】
そして、グループに割り当てられたグラフデータ（ＣＳＲ）とグラフ解析の結果（ＭＳＧ）の読み出しは、不揮発性メモリ８０の読み出し単位でのシーケンシャルリードとなるので、グループ単位で複数のチャネル番号を跨ぐように設定することで、アクセスの並列度を向上させてデータの転送速度を向上させることができる。【００９２】
なお、上記実施例１では、メモリサブシステム制御モジュール（ＭＳＣ）６０が属性物理変換テーブル（ＡＰＴ）１３０を設定する例を示したが、メモリサブシステム制御モジュール６０が不揮発性メモリ８０の構成をホスト３０に通知し、ホスト３０で実行するプログラムで属性物理変換テーブル１３０を設定するようにしてもよい。
【実施例２】
【００９３】
上記実施例１では、メモリサブシステム制御モジュール（ＭＳＣ）６０が、書き込み要求のデータを非圧縮で不揮発性メモリ８０へ格納する例を示したが、本実施例２では、データを圧縮する例を示す。【００９４】
図１１は、第２の実施例における不揮発性メモリのチップ、ブロック及びページと圧縮データのグループとの対応関係の一例を示すブロック図である。ＤＲＡＭ７２には前記実施例１に示したテーブルに加えて、グループ（１〜Ｍ）毎にバッファ７２０−１〜７２０−Ｍと、ＤＲＡＭバッファ管理テーブル１４０を格納する。その他の構成は、前記実施例１と同様であり、同様のものについては重複した説明を省略する。【００９５】
バッファ７２０−１〜７２０−Ｍは、メモリサブシステム制御モジュール（ＭＳＣ）６０が、ホスト３０から受信した書き込みデータを圧縮した後に、当該圧縮データをグループ１〜Ｍ毎に一時的に格納する記憶領域である。【００９６】
ＤＲＡＭバッファ管理テーブル１４０は、バッファ７２０−１〜７２０−Ｍに格納した圧縮データを管理するためのテーブルである。【００９７】
図１１〜図１４Ｂを用いて、メモリサブシステム５０におけるデータ圧縮書き込みの際の制御に関して説明する。【００９８】
まず、図１１〜図１２を用いて、全体の制御を概説する。メモリサブシステム制御モジュール（ＭＳＣ）６０がホスト３０からデータ及び書き込みリクエストを受信する（図１１の１．  Ｗｒｉｔｅ  Ｒｅｑ．）。【００９９】
メモリサブシステム制御モジュール（ＭＳＣ）６０は、ホスト３０から送られたデータを圧縮する（図１１の２．  Ｃｏｍｐｒｅｓｓｉｏｎ）。データを圧縮するか否かは、ホスト３０がデータ書き込みリクエストに加えて、圧縮リクエストを送信するか否かで決定してもよいし、メモリサブシステム制御モジュール（ＭＳＣ）６０が決定してもよい。【０１００】
図１２Ａは、データ圧縮処理前後でのデータサイズの変化の例を示す図である。図１２Ａに示すように、ホスト３０から不揮発性メモリ８０の書き込み単位（ＰＡＧＥ  ＳＩＺＥ）でデータが送られた場合、圧縮されたデータは、不揮発性メモリ８０の書き込み単位（ページ）より小さな圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ）で管理される。ページサイズが８Ｋバイトの場合、この圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ）は、例えば、２Ｋバイトで管理され、ひとつのページサイズは、４つの圧縮データサイズ単位で管理される。【０１０１】
その後、圧縮されたデータは、メモリサブシステム制御モジュール（ＭＳＣ）６０によって、メモリサブシステム５０のＤＲＡＭ７２に設定されたバッファ７２０−１〜７２０−Ｍに、データのグループごとに異なる物理アドレスにバッファリングされる（図１１の３．  Ｂｕｆｆｅｒ  Ｄａｔａ）。【０１０２】
データのグループごとにバッファリングされたデータサイズが、不揮発性メモリ８０のページ（書き込み単位）サイズを超えたら、前記第１実施例の図７に示した（Ｅ２）のデータ書き込み処理のフローチャートに基づいて、メモリサブシステム制御モジュール（ＭＳＣ）６０は圧縮されたデータを所定の書き込み単位で、不揮発性メモリ８０に書き込む。【０１０３】
図１２Ｂは、データ圧縮処理前後でのデータサイズの変化の例を示す図である。一方、図１２Ｂで示すように、ホスト３０から複数の不揮発性メモリ８０の書き込み単位（ＰＡＧＥ  ＳＩＺＥ）でデータが送られた場合、メモリサブシステム制御モジュール（ＭＳＣ）６０では、圧縮されたデータを不揮発性メモリ８０の書き込み単位に調整して書き込む。圧縮されたデータサイズがページサイズに達した場合、圧縮されたデータはＤＲＡＭ７２のバッファ７２０−１〜７２０−Ｍにはバッファリングされず、上記（Ｅ２）に示したデータ書き込み処理のフローチャートに基づいて、メモリサブシステム制御モジュール（ＭＳＣ）６０は不揮発性メモリ８０の書き込み単位で、圧縮したデータを直接不揮発性メモリ８０に書き込む。【０１０４】
データ圧縮及び書き込み処理において必要となる管理テーブルを図１３Ａ、図１３Ｂに示す。図１３Ａは、データの論理アドレスと物理アドレスを対応付ける論理物理変換テーブル（ＬＰＴ）１１０Ａである。本実施例２では、前記図９Ａに示した論理物理変換テーブル１１０とは異なり、データ圧縮の際は、１つの論理アドレスに対応するデータサイズが可変となる。このため、１つの論理アドレスに対応するデータが格納されている物理アドレスを、不揮発性メモリ８０の書き込み単位より小さな圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ）に分割して管理する。図１３Ａの論理物理変換テーブル（ＬＰＴ）１１０Ａは、論理アドレス１１０１と、圧縮データの開始位置を示す物理アドレス１１０２と、圧縮データの開始位置を示す圧縮ユニット１１０３と、圧縮データの終点となるページの位置を示す物理アドレス１１０４と、圧縮データの終点となる圧縮ユニット１１０６とをひとつのレコードに含む。【０１０５】
例えば、図１３Ａの例では、不揮発性メモリ８０のひとつの書き込み単位（ページ）は、４つの圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ）に分割されている。１行目の論理アドレス０ｘ００００００のデータは、物理アドレス（不揮発性メモリ８０の書き込み単位に対応）０ｘ１０ｃ８ｂ０の０番目の圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ）から同じ物理アドレス（ページ）０ｘ１０ｃ８ｂ０の２番目の圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ）に格納されていることを示す。他も同様である。【０１０６】
図１３Ｂは、圧縮されたデータを一時的に格納するＤＲＡＭバッファ１管理テーブル（ＣＭＰ＿ＢＦＴ）１４０である。ＤＲＡＭバッファ管理テーブル１４０は、図１１に示したバッファ７２０−１〜７２０−Ｍが２ページ分の容量に設定されているのに対応して、ページ０とページ１の２ページのバッファを管理する。ＤＲＡＭバッファ管理テーブル１４０は、グループ番号を格納するグループ１４０１と、ページ０の圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ０〜３）の論理アドレス１４０２−１〜１４０２−４と、ページ１の圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ０〜３）の論理アドレス１４０３−１〜１４０３−４とをひとつのレコードに含む。【０１０７】
メモリサブシステム制御モジュール（ＭＳＣ）６０は、グループ単位でＤＲＡＭ７２のバッファ７２０−１〜７２０−Ｍへデータを格納する。図１３Ｂには、グループごとのバッファ７２０に、不揮発性メモリ８０の書き込み単位２つ分のデータ領域を確保した例を挙げる。不揮発性メモリ８０の書き込み単位はさらに４つの圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ）に分割されているため、圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ）ごとに、そのデータに対応する論理アドレス（１４０２−１〜１４０２−４）がＤＲＡＭバッファ管理テーブル１４０に記録される。図１３Ｂの例では、各圧縮データに対応する論理アドレスを記録するテーブルの例を挙げたが、例えば圧縮データの先頭に論理アドレスを付加して、圧縮データと共に論理アドレスをＤＲＡＭバッファ７２０へ記録してもよい。【０１０８】
図１４Ａ、図１４Ｂは、メモリサブシステム５０で行われるデータ圧縮及び書き込み処理の一例を示すフローチャートである。【０１０９】
図１４Ａは、ホスト３０から不揮発性メモリ８０の書き込み単位（ＰＡＧＥ  ＳＩＺＥ）でデータが送られた場合に、メモリサブシステム５０で行われる処理のフローチャートである。【０１１０】
まず、メモリサブシステム制御モジュール（ＭＳＣ）６０のデータ圧縮ブロック（ＣＯＭＰ＿ＢＬＫ）６９は、レジスタ６１を参照して、ホスト３０からデータ書き込み要求を受信する（ステップＳ１１）。【０１１１】
次に、データ圧縮ブロック（ＣＯＭＰ＿ＢＬＫ）６９は、メタデータバッファ（Ｍ−ＢＦ）６３に格納された書き込み要求のデータの属性（またはデータのグループ）を参照する（ステップＳ１２）。そして、データ圧縮ブロック（ＣＯＭＰ＿ＢＬＫ）６９は、データバッファ（Ｄ−ＢＦ）６５に格納されたデータを圧縮する（ステップＳ１３）。【０１１２】
データ圧縮ブロック（ＣＯＭＰ＿ＢＬＫ）６９は、圧縮されたデータを、メモリサブシステム５０のＤＲＡＭ７２のバッファ７２０に格納する。圧縮データの格納先は、上記ステップＳ１２で参照したデータのグループに応じたバッファ７２０−１〜７２０−Ｍを選択する。【０１１３】
次に、データ圧縮ブロック（ＣＯＭＰ＿ＢＬＫ）６９は、アドレスバッファ（Ａ−ＢＦ）６４に格納されたデータの論理アドレスを取得する。取得したデータの論理アドレスの値を基に、データ圧縮ブロック（ＣＯＭＰ＿ＢＬＫ）６９は、メモリサブシステム５０のＤＲＡＭバッファ管理テーブル（ＣＭＰ＿ＢＦＴ）１４０を更新する（ステップＳ１５）。この更新は、圧縮データを書き込んだバッファ７２０のページと圧縮データサイズ単位（ＣＭＰ＿ｕｎｉｔ０〜３）に、上記取得した論理アドレスを書き込む。【０１１４】
更新したＤＲＡＭバッファ管理テーブル（ＣＭＰ＿ＢＦＴ）１４０を参照し、データ圧縮ブロック（ＣＯＭＰ＿ＢＬＫ）６９は、現在書き込んだグループのデータが不揮発性メモリ８０の書き込み単位分だけバッファ７２０に溜まっているか否かを判定する（ステップＳ１６）。【０１１５】
上記判定の結果、書き込みを行ったバッファ７２０に不揮発性メモリ８０の書き込み単位分（１ページ）の圧縮データが溜まっていれば、前記実施例１の図１０に示した書き込み処理を実行し、バッファ７２０の圧縮データを不揮発性メモリ８０へ書き込む（Ｔｏ  Ｗｒｉｔｅ  Ｓｅｑ．）。【０１１６】
一方上記判定の結果、書き込みを行ったバッファ７２０に不揮発性メモリ８０の書き込み単位分（１ページ）の圧縮データが溜まっていない場合、データ圧縮ブロック（ＣＯＭＰ＿ＢＬＫ）６９は、ホスト３０からの次のリクエストを待つ状態に移行する（Ｗａｉｔ  Ｎｅｘｔ  Ｒｅｑ．）。【０１１７】
なお、上記ではデータのグループ毎にバッファ７２０−１〜７２０−Ｍへ格納する例を示したが、図示はしないが、ランダムアクセスのデータについても、上記と同様にＤＲＡＭ７２にバッファを設けて圧縮する。【０１１８】
以上の処理により、データ圧縮ブロック６９は、ホスト３０から受信した書き込みデータを圧縮してバッファ７２０へ蓄積し、バッファ７２０に１ページ分のデータが溜まると不揮発性メモリ８０へ書き込む。データの書き込み先は、上記実施例１と同様であり、シーケンシャルアクセスとなるデータを格納する不揮発性メモリ８０のブロックと、ランダムアクセスのデータを格納するブロックを分け、さらに、データを圧縮することで、不揮発性メモリ８０の記憶領域を有効に利用することができる。【０１１９】
図１４Ｂは、ホスト３０から複数の不揮発性メモリ８０の書き込み単位（ＰＡＧＥ  ＳＩＺＥ）でデータが送られた場合における、メモリサブシステム５０で行われる処理のフローチャートである。すなわち、図１２Ｂで示したように、複数のページを圧縮した結果、１ページに収まる場合の処理である。【０１２０】
ステップＳ２１〜Ｓ２３は、図１４Ａと同様である。データ圧縮後、圧縮されたデータはＤＲＡＭ７２のバッファ７２０に格納されず、上記実施例１の図１０に示したデータ書き込み処理に従って、不揮発性メモリ８０の書き込み単位で書き込まれる。【０１２１】
以上、本実施例２によれば、前記実施例１の効果に加えて、データを圧縮することで不揮発性メモリ８０の利用効率を向上させることができる。【０１２２】
なお、ホスト３０が圧縮データを読み出す際には、図示はしないが、データ圧縮ブロック６９が圧縮データを復元する。
【実施例３】
【０１２３】
図１５〜図１８は実施例３を示し、前記実施例１の構成に最終書き込みブロック管理テーブル１５０を加えて、メモリサブシステム５０へデータを書き込む際に書き込み先を選択する。【０１２４】
まず、図１５を用いて、全体の処理を説明する。図１５は、不揮発性メモリのチップ、ブロックと格納されるデータ種との対応関係の一例を示すブロック図である。【０１２５】
ホスト３０から書き込みリクエスト及びデータと共に、データの種類（グラフデータ（ＣＳＲ）、解析結果（ＭＳＧ）、頂点情報（ＶＡＬ）など）がメモリサブシステム制御モジュール（ＭＳＣ）６０へ通知される。メモリサブシステム制御モジュール（ＭＳＣ）６０は、受信したデータの種類を基に、データ書き込み先の選択方法を変更する。【０１２６】
前記実施例１の図５に示したような、グラフデータ（ＣＳＲ）がグラフ処理の終了まで更新されない例では、グラフデータはグラフ処理中に更新されないが、グラフ処理の解析結果（ＭＳＧ）は、スーパーステップ（Ｓ．Ｓ．）ごとに更新される。また、頂点情報（ＶＡＬ）は、例えば１６バイトの細かなアクセス単位でランダムに更新される。【０１２７】
したがって、メモリサブシステム制御モジュール（ＭＳＣ）６０は、更新頻度の低いグラフデータ（ＣＳＲ）を、（メモリサブシステム５０の全体平均と比べ）比較的消去回数の多いブロック（ＯＬＤ  ＢＬＫ）へ書き込み、更新頻度の高い解析結果（ＭＳＧ）などを消去回数の少ないブロック（ＹＯＵＮＧ  ＢＬＫ）や、最後に書き込みを行ったブロックの（物理的に）次のブロック（ＮＥＸＴ  ＢＬＫ）へ書き込む。【０１２８】
このようなデータの種類に応じた書き込み先選択の変更により、異なるブロック間での消去回数の偏りを是正し、スタティックウェアレベリングなどの頻度を低下させ、不揮発性メモリ８０の性能や寿命を向上させる。【０１２９】
図１６は、不揮発性メモリのチップ、ブロックと格納されるデータ種との対応関係の他の例を示すブロック図である。【０１３０】
図１６のように、メモリサブシステム５０で異なる書換え回数の上限（書換え寿命）を有するデバイス（不揮発性メモリ）が混在した場合、消去回数の上限が低いＮＡＮＤ  ＭＬＣへ更新頻度の低いグラフデータ（ＣＳＲ）を格納し、消去回数の上限が高いＮＡＮＤ  ＳＬＣへ更新頻度の高い解析結果（ＭＳＧ）などを格納する。こうすることにより、異なるデバイス間の寿命が均等化され、メモリサブシステム５０全体としての寿命が向上する。【０１３１】
次に図１７を用いて、書き込み先選択処理のフローチャートについて説明する。まず、メモリサブシステム制御モジュール（ＭＳＣ）６０は、ホスト３０からの書き込みリクエストを受信する（ステップＳ３１）。【０１３２】
次に、メモリサブシステム制御モジュール（ＭＳＣ）６０のウェアレベリングブロック（ＷＬ＿ＢＬＫ）６７は、メタデータバッファ（Ｍ−ＢＦ）６３に記録されたデータの種類を参照する（ステップＳ３２）。そして、ウェアレベリングブロック（ＷＬ＿ＢＬＫ）６７は、メモリサブシステム５０のＤＲＡＭ７２に記録されている実施例１の図９Ｂに示したブロック管理テーブル（ＢＬＫ＿ＳＴ）１２０や、図１８に示す最終書き込みブロック管理テーブル（ＬＳＴ＿ＢＬＫ）１５０を参照する（ステップＳ３３）。そして、ウェアレベリングブロック（ＷＬ＿ＢＬＫ）６７は、不揮発性メモリ８０の消去回数（Ｅｒａｓｅ  ｃｙｃｌｅ）や、各チャネル、ウェイのチップへ最後に書き込みが行われたブロック番号（Ｌａｓｔ  ｐｒｏｇｒａｍｍｅｄ  ｂｌｏｃｋ）などを取得する。【０１３３】
ウェアレベリングブロック（ＷＬ＿ＢＬＫ）６７は、取得した情報及びステップＳ３２で参照したデータの種類を基に、次の書き込み先ブロックを決定する（ステップＳ３４）。次の書き込み先ブロックの決定は、上記図１５または図１６で述べた処理を実施する。【０１３４】
その後、ウェアレベリングブロック（ＷＬ＿ＢＬＫ）６７は、書き込み先のチップが属するチャネルの不揮発性メモリ制御部ＮＶＭＣ７３に書き込み要求を送信する。そして、ウェアレベリングブロック（ＷＬ＿ＢＬＫ）６７は、ブロック管理テーブル（ＢＬＫ＿ＳＴ）１２０のうち、該当するデータ種類の行においてブロック状態（Ｓｔａｔｕｓ  ｏｆ  ｂｌｏｃｋ）１２０２を”ＥＲＡＳＥＤ”から”ＡＬＬＯＣＡＴＥＤ”もしくは”ＰＲＯＧＲＡＭＭＥＤ”に更新し、最終書き込みブロック管理テーブル（ＬＳＴ＿ＢＬＫ）１５０、属性物理変換テーブル（ＡＰＴ）１３０、及び論理物理変換テーブル（ＬＰＴ）１１０を更新する（ステップＳ３５）。【０１３５】
上記処理により、実施例１の効果に加え、データの種類に応じた書き込み先の変更により、異なるブロック間での消去回数の偏りを是正し、スタティックウェアレベリングなどの頻度を低下させ、不揮発性メモリ８０の性能や寿命を向上させる。【０１３６】
＜Ｆ．効果のまとめ＞
以上説明した各実施例１〜３の構成及び処理により得られる主な効果は以下の通りである。【０１３７】
大容量で安価な不揮発性メモリを使用可能とすることで、ビッグデータ等の大量のデータを処理する際に必要な大規模なメモリを安価に提供でき、かつ、メモリに対して高速なデータアクセスを行うことができる。すなわち、ビッグデータの高速処理を行うサーバにおいて、ＤＲＡＭなどよりビットコストが安価なＮＡＮＤフラッシュメモリなどの不揮発性メモリ８０にデータを格納し、かつ、その場合でも、ランダムアクセスするデータとそれ以外のデータを、不揮発性メモリ８０の異なる消去単位（例えば、ブロック）に格納する。これにより、不揮発性メモリ８０におけるガーベッジコレクションの効率を向上させ、高速なデータアクセスが可能になる。また、メモリサブシステム５０でデータを圧縮し、ＤＲＡＭなどの小容量だが高速なメモリに、データの分類ごとに圧縮されたデータをバッファリングすることで、不揮発性メモリ８０へのデータアクセスを削減することができ、高速なデータアクセスが可能になる。さらに、データの分類ごとに、記憶装置が書き込み先の選択方法を切り替えることで、不揮発性メモリ８０の消去回数を平準化でき、記憶装置の寿命劣化を抑制することが可能になる。【０１３８】
また、以上の説明では、データ処理を行うホスト３０、不揮発性メモリ８０、及び不揮発性メモリ８０を管理するメモリサブシステム制御モジュール６０から構成されるサーバ１０の例を挙げたが、サーバ１０はデータ解析及び不揮発性メモリ８０を管理するホスト３０、及びホスト３０の管理にしたがって不揮発性メモリ８０を制御するメモリサブシステム制御モジュール６０とから構成してもよい。【０１３９】
また、大規模グラフを頂点番号やデータ種に応じて複数のグループ（Ｇｒ．）とランダムアクセス、及びグラフデータと解析結果などに分類して管理する例を挙げたが、グラフデータ自体が頻繁に更新される例では、更新されるグラフデータも別の分類として扱うなど、大規模グラフ処理や取り扱うビッグデータ処理は上記の例に限定されるものではない。例えば、ＭａｐＲｅｄｕｃｅ処理において、Ｋｅｙに応じて（ｋｅｙとｖａｌｕｅで制御された）ビッグデータを、ｋｅｙ値ごとに複数のグループ（Ｇｒ．）に分割し、その他のランダムアクセスデータと区別して管理するなど、上記処理と同様にメモリ処理を行ってもよい。【０１４０】
また、ホスト３０で実行するプログラムのソースコード上で大きな配列を確保するビッグデータ処理のアプリケーションプログラムにおいて、同一配列を同一データ種とみなして上記メモリ処理を実行しても良く、また、上記処理の適用範囲は、大規模なデータベースの検索及びデータ抽出などを行う場合も含まれる。そして、これらの処理においてもビッグデータを高速に読み書きできるため、ビッグデータ処理を高速化できる。【０１４１】
以上、添付図面を参照して具体的に説明したが、好ましい実施の形態は以上の説明に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。【０１４２】
なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。【０１４３】
また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体（例えば、非一時的な記憶媒体）に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。【０１４４】
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【図１】
2015114829.tif 000003
【図２】
2015114829.tif 000004
【図３】
2015114829.tif 000005
【図４】
2015114829.tif 000006
【図５】
2015114829.tif 000007
【図６】
2015114829.tif 000008
【図７】
2015114829.tif 000009
【図８】
2015114829.tif 000010
【図９Ａ】
2015114829.tif 000011
【図９Ｂ】
2015114829.tif 000012
【図９Ｃ】
2015114829.tif 000013
【図１０】
2015114829.tif 000014
【図１１】
2015114829.tif 000015
【図１２Ａ】
2015114829.tif 000016
【図１２Ｂ】
2015114829.tif 000017
【図１３Ａ】
2015114829.tif 000018
【図１３Ｂ】
2015114829.tif 000019
【図１４Ａ】
2015114829.tif 000020
【図１４Ｂ】
2015114829.tif 000021
【図１５】
2015114829.tif 000022
【図１６】
2015114829.tif 000023
【図１７】
2015114829.tif 000024
【図１８】
2015114829.tif 000025
【国際調査報告】
2015114829.tif 000026
2015114829.tif 000027