(57)【要約】  メモリに対してグラフデータを書き込む、グラフデータの書き込み装置であって、グラフデータは、少なくとも２つ以上の頂点の情報から構成され、メモリは、データの読み出し単位を有し、グラフ上の配置関係が所定条件を満たす頂点の情報をメモリの同一読み出し単位に書き込む、ことを特徴とする、グラフデータの書き込み装置が開示されている。
2016194224.tif 000002
【特許請求の範囲】
【請求項１】
ホストとコントローラとメモリとを備えた情報処理装置であって、
前記ホストは、グラフデータに対して処理を実行し、前記コントローラもしくは前記メモリとの間でデータ通信を行い、
前記グラフデータは、少なくとも２つ以上の頂点の情報から構成され、
前記頂点の情報は、当該頂点と関連性のある頂点のIDもしくは当該頂点と関連性のある頂点の情報が記録されている前記メモリ上の位置を含み、
前記メモリは、データの読み出し単位を有し、
前記コントローラは、前記メモリからのデータ読み出し及び前記メモリへのデータ書き込みを行い、
前記ホストもしくは前記コントローラは、前記グラフデータの解析結果である、互いの距離が閾値よりも小さい頂点の情報を抽出した付加情報にアクセス可能であり、
前記距離は、最短経路探索における２つの頂点間を結ぶリンクの数を表すことを特徴とする情報処理装置。
【請求項２】
前記ホストもしくは前記コントローラは、前記抽出された互いの距離が閾値よりも小さい頂点の情報を、前記メモリの同一読み出し単位に書き込むことを特徴とする、
請求項１に記載の情報処理装置。
【請求項３】
前記ホストもしくは前記コントローラがアクセスする前記付加情報を、前記メモリに保持することを特徴とする、
請求項１に記載の情報処理装置。
【請求項４】
前記ホストもしくは前記コントローラがアクセスする互いの距離が閾値よりも小さい複数の頂点の情報を、前記メモリの異なるチップに書き込み、
異なる前記チップの前記同一読み出し単位に書き込まれたデータを、同時並列に読み出すことができることを特徴とする、
請求項２に記載の情報処理装置。
【請求項５】
前記ホストは、互いの距離が閾値よりも小さい複数の頂点の情報が含まれることを示すフラグを前記グラフデータに付加し、前記コントローラにデータ書き込み要求を発行することを特徴とする、
請求項４に記載の情報処理装置。
【請求項６】
前記コントローラは、前記グラフデータに付加された前記フラグを参照し、同じフラグが付加された前記グラフデータを、前記メモリの異なるチップに書き込み、
異なる前記チップに書き込まれた前記グラフデータを、同時並列に読み出すことができることを特徴とする、
請求項５に記載の情報処理装置。
【請求項７】
前記付加情報は、異なる２つの頂点間の距離、頂点ごとの次数、頂点毎の探索順、当該グラフデータ全体の次数の分布、頂点クラスタごとのクラスタ係数もしくは頂点ID、平均次数もしくは平均距離、のいずれか少なくとも１つを含むことを特徴とする、
請求項１に記載の情報処理装置。
【請求項８】
前記メモリとして、NAND型フラッシュメモリ、相変化メモリ、ReRAMのいずれかを用いることを特徴とする、
請求項１に記載の情報処理装置。
【請求項９】
ホストとメモリとコントローラとを備えた情報処理装置であって、
前記ホストは、グラフデータに対して処理を実行し、前記コントローラもしくは前記メモリとの間でデータ通信を行い、
前記グラフデータは、少なくとも２つ以上の頂点の情報から構成され、
前記頂点の情報は、当該頂点と関連性のある頂点のIDもしくは当該頂点と関連性のある頂点の情報が記録されている前記メモリ上の位置を含み、
前記メモリは、データの読み出し単位を有し、
前記コントローラは、前記メモリからのデータ読み出し及び前記メモリへのデータ書き込みを行い、
前記ホストもしくは前記コントローラは、前記グラフデータを解析し、互いの距離が閾値よりも小さい頂点の情報を抽出し、抽出された頂点の情報を前記メモリのデータの同一読み出し単位に書き込み、
前記距離は、最短経路探索における、２つの頂点間のリンクの数を表すことを特徴とする情報処理装置。
【請求項１０】
前記ホストもしくは前記コントローラは、互いの距離が閾値よりも小さい複数の頂点の情報を前記メモリの異なるチップの同一読み出し単位に書き込み、
異なる前記チップに書き込まれたデータを、同時並列に読み出すことができることを特徴とする、
請求項９に記載の情報処理装置。
【請求項１１】
前記ホストは、互いの距離が閾値よりも小さい複数の頂点の情報が含まれることを示すフラグをデータに付加し、前記コントローラにデータ書き込み要求を発行することを特徴とする、
請求項１０に記載の情報処理装置。
【請求項１２】
前記コントローラは、前記データに付加された前記フラグを参照し、同じフラグが付加されたデータを、前記メモリの異なるチップに書き込み、
異なる前記チップに書き込まれたデータを、同時並列に読み出すことができることを特徴とする、
請求項１１に記載の情報処理装置。
【請求項１３】
メモリに対してグラフデータを書き込む、グラフデータの書き込み装置であって、
前記グラフデータは、少なくとも２つ以上の頂点の情報から構成され、
前記メモリは、データの読み出し単位を有し、
グラフ上の配置関係が所定条件を満たす頂点の情報を前記メモリの同一読み出し単位に書き込む、
ことを特徴とする、
グラフデータの書き込み装置。
【請求項１４】
前記配置関係が所定条件を満たす頂点の情報は、互いの距離が閾値よりも小さい頂点の情報であり、
前記距離は、最短経路探索における、２つの頂点間のリンクの数を表す、
請求項１３記載のグラフデータの書き込み装置。
【請求項１５】
前記互いの距離が閾値よりも小さい複数の頂点の情報を、前記メモリの異なるチップの同一読み出し単位に分割して書き込み、
異なる前記チップに書き込まれたデータを、同時並列に読み出すことを特徴とする、
請求項１３に記載のグラフデータの書き込み装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はビッグデータの高速処理に適した情報処理装置に関するものである。
【背景技術】
【０００２】
今後、ビッグデータ解析の需要が高まるため、計算機が扱うデータ量は爆発的に増加する。一方、計算機に搭載できるDynamic Random Access Memory (DRAM)容量は限られるため、安価な大容量不揮発性メモリにビックデータを格納し、高速に解析する技術が望まれる。【０００３】
大容量不揮発性メモリのデータ読み出し単位は、計算機のデータ処理単位よりも大きいケースがある。また、ビッグデータを生成・ストアするストレージ側では、データの処理内容・処理順を予め知ることができないため、データはデータの生成順・インデックス順で格納されている。つまり、データを処理する順番は、データが書き込まれている順番とは異なる。【０００４】
このため、不揮発性メモリを用いた従来の情報処理装置では、データをストレージ側からサーバ側の不揮発性メモリへロードし、不揮発性メモリの読み出し単位に含まれるデータのうち、一部のデータのみを処理していた。つまり、処理しない余分なデータも、処理するデータと同時に不揮発性メモリから読み出しており、データの無駄な読み出しが発生していた。【０００５】
特許文献１には、グラフ構造を持つメタデータを、特定のデータ処理順で不揮発性メモリに書き込む技術が開示されており、特許文献２には、特定のフォーマットで記録されたグラフデータの圧縮効率を向上する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】ＵＳ２００７／０１７４３０９
【特許文献２】特開２０１３−２２８８１９
【発明の概要】
【発明が解決しようとする課題】
【０００７】
大容量不揮発性メモリを用いた情報処理において、データの無駄な読み出しが発生すると、処理しないデータも不揮発性メモリから大量に読み出すことになり、情報処理装置の性能（処理速度）を低下させる。このため、処理速度を高速にするためには、不揮発性メモリから読み出したデータのうち、処理に用いるデータの割合を増やすことが必要である。【０００８】
特許文献１に開示された技術では、XML形式で記述されたデータのメタデータに対するアクセス高速化の技術が記載されている。本技術では、ある特定のデータ処理の順番で、データを不揮発性メモリに記録していた。特定のケースでは処理が高速化できるが、他のケースでは高速化が期待できない。特に、本願でターゲットとする大規模グラフ解析においては、データ処理の順番が処理に応じて変わり、ストレージ側では処理順を予め知ることはできないため、特定のケースに対して処理を高速化しても、全体では効果が薄い。【０００９】
また、特許文献２に開示された技術では、ストレージに格納されたグラフデータ（データフォーマット：ＣＳＲ）に対して、頂点の辺の数に基づき、頂点の番号を新たに割り当てることで、グラフデータの圧縮効率を向上する技術が記載されている。本技術を用いると、特定のケースに対しては処理の高速化が期待できるが、本願でターゲットとする大規模グラフ解析においては、データ処理の順番が処理に応じて変わるため、全体では高速化の効果は薄い。また、距離の近い頂点群をグループ化して、同じグループの頂点群を不揮発性メモリの同一読み出し単位に書き込まないため、データの無駄な読み出しを排除することはできない。【００１０】
大規模グラフ解析において、処理内容によらず、データの無駄な読み出しを排除し、処理を高速化させるためには、グラフ解析を実行するサーバ側で、処理内容に応じたデータの再構築が必要となる。【００１１】
本発明の目的は、一般的なグラフ解析におけるデータの無駄な読み出しを減少させることで、情報処理装置のデータ処理速度を高速させることである。
【課題を解決するための手段】
【００１２】
本発明の一側面は、ホストとコントローラとメモリとを備えた情報処理装置である。ホストは、グラフデータに対して処理を実行し、コントローラもしくはメモリとの間でデータ通信を行う。グラフデータは、少なくとも２つ以上の頂点の情報から構成され、頂点の情報は、頂点と関連性のある頂点のIDもしくは頂点と関連性のある頂点の情報が記録されているメモリ上の位置を含む。また、メモリは、データの読み出し単位を有する。コントローラは、メモリからのデータ読み出し及びメモリへのデータ書き込みを行う。ホストもしくはコントローラは、グラフデータの解析結果である、互いの距離が閾値よりも小さい頂点の情報を抽出した付加情報にアクセス可能である。距離は、例えば、最短経路探索における２つの頂点間を結ぶリンクの数で表すことができる。【００１３】
本発明の好ましい態様では、ホストもしくはコントローラは、付加情報を利用して、抽出された互いの距離が閾値よりも小さい頂点の情報を、メモリの同一の読み出し単位に書き込む。付加情報はホストもしくはコントローラがアクセスできればよく、ネットワークで接続された別サーバにあってもよいが、付加情報を装置内のメモリに保持すれば高速で安定にアクセスすることができる。【００１４】
本発明の他の好ましい態様では、ホストもしくはコントローラがアクセスする互いの距離が閾値よりも小さい複数の頂点の情報を、メモリの異なるチップに書き込み、異なるチップの同一読み出し単位に書き込まれたデータを、同時並列に読み出すことを可能とする。【００１５】
付加情報は、異なる２つの頂点間の距離、頂点ごとの次数、頂点毎の探索順、当該グラフデータ全体の次数の分布、頂点クラスタごとのクラスタ係数もしくは頂点ID、平均次数もしくは平均距離などを含むことができる。【００１６】
本発明の他の一側面は、ホストとメモリとコントローラとを備えた情報処理装置である。ホストは、グラフデータに対して処理を実行し、コントローラもしくはメモリとの間でデータ通信を行う。グラフデータは、少なくとも２つ以上の頂点の情報から構成され、頂点の情報は、頂点と関連性のある頂点のIDもしくは頂点と関連性のある頂点の情報が記録されているメモリ上の位置を含む。メモリは、データの読み出し単位を有し、コントローラは、メモリからのデータ読み出し及びメモリへのデータ書き込みを行う。ホストもしくはコントローラは、グラフデータを解析し、互いの距離が閾値よりも小さい頂点の情報を抽出し、抽出された頂点の情報をメモリのデータの同一読み出し単位に書き込む。距離は、最短経路探索における、２つの頂点間のリンクの数で表すことができる。【００１７】
より好ましい態様では、ホストもしくはコントローラは、抽出した頂点の情報を予め記憶しておき、書き込み時には記憶しておいた情報を参照して情報を書き込む。【００１８】
より好ましい態様では、ホストもしくはコントローラは、互いの距離が閾値よりも小さい複数の頂点の情報をメモリの異なるチップの同一読み出し単位に書き込み、異なる前記チップに書き込まれたデータを、同時並列に読み出すことを可能とする。【００１９】
本発明の他の一側面は、メモリに対してグラフデータを書き込む、グラフデータの書き込み装置である。この装置は、例えば、メモリチップを複数含むメモリサブシステムの上位装置であるホストコンピュータや、メモリサブシステムを制御するコントローラとして構成される。グラフデータは、少なくとも２つ以上の頂点の情報から構成される。メモリは、データの読み出し単位を有しており、書き込み装置はグラフ上の配置関係が所定条件を満たす頂点の情報をメモリの同一読み出し単位に書き込む。【００２０】
より具体的な例では、配置関係が所定条件を満たす頂点の情報は、互いの距離が閾値よりも小さい頂点の情報であり、距離は、最短経路探索における、２つの頂点間のリンクの数で表すことができる。【００２１】
より具体的な例では、互いの距離が閾値よりも小さい頂点の情報を得るために、ハブ頂点を特定し、ハブ頂点と繋がる頂点を抽出する。【００２２】
より具体的な例では、互いの距離が閾値よりも小さい複数の頂点の情報を、メモリの異なるチップの同一読み出し単位に分割して書き込み、異なるチップに書き込まれたデータを、同時並列に読み出す。【００２３】
本発明の他の一側面は、メモリに対してグラフデータを書き込み・読み出す、グラフデータの書き込み・読み出し方法である。グラフデータは、少なくとも２つ以上の頂点の情報から構成される。メモリは、データの読み出し単位を有している。この方法では、書き込み時にはグラフ上の配置関係が所定条件を満たす頂点の情報をメモリの同一読み出し単位に書き込む。また、読み出し時にはメモリの同一読み出し単位から、グラフ上の配置関係が所定条件を満たす頂点の情報を読み出す。【００２４】
より具体的な例としては、グラフデータを解析し、互いの距離が閾値よりも小さい頂点の情報を抽出し、この頂点を同一読み出し単位に書き込む。その際に、頂点の情報を付加情報として生成・記憶しておき、付加情報を用いることによって、書き込み時に解析を実行しなくても、同一の読み出し単位に書き込む頂点の情報を抽出することができる。
【発明の効果】
【００２５】
本発明によれば、ビッグデータ解析などにおいて、情報処理装置のデータ処理速度を高速化させることが可能となる。
【図面の簡単な説明】
【００２６】
【図１】本発明の第一の実施例を適用した実施の形態であるサーバ（情報処理装置）と外部記憶装置の構成の一例を示す構成ブロック図である。
【図２】サーバ内のメモリサブシステムの構成の一例を示す構成ブロック図である。
【図３】サーバの処理対象であり、ビッグデータであるグラフの一例を示すグラフ図である。
【図４】サーバで実行されるグラフ解析において、処理される頂点の順番の一例を示すグラフ図である。
【図５】グラフにおいて、異なる２つの頂点間の距離を説明するグラフ図である。
【図６】メモリサブシステム内の不揮発性メモリの構成及びデータの読み出しを示すブロック図である。
【図７】従来技術における不揮発性メモリへのグラフデータ書き込み方法を説明するグラフ図である。
【図８】本願における不揮発性メモリへのグラフデータ書き込み方法の一例を説明するグラフ図である。
【図９】グラフデータの頂点情報及び辺情報の一例を説明する概念図である。
【図１０】グラフデータの再構築書き込み処理のシーケンスの一例を示す流れ図である。
【図１１】ホストがグラフデータの再構築書き込み処理を実施した場合における、シーケンスとデータフローの一例を示す概念図である。
【図１２】グラフデータの再構築書き込み処理に用いるデータ管理テーブルの一例を示す表図である。
【図１３】メモリサブシステムの制御回路がグラフデータの再構築書き込み処理を実施した場合における、シーケンスとデータフローの一例を示す概念図である。
【図１４】グラフデータの再構築書き込み処理のシーケンスの他の例を示す流れ図である。
【図１５】次数解析を用いた再構築書き込み処理における、不揮発性メモリへのグラフデータの書き込み方式を説明する概念図である。
【図１６】次数解析を用いたグラフデータの再構築書き込み処理のシーケンスの例を示す流れ図である。
【図１７】次数解析を用いたグラフデータの再構築書き込み処理に用いる管理テーブルの一例を示す表図である。
【図１８】クラスタリングを用いた再構築書き込み処理における、不揮発性メモリへのグラフデータの書き込み方式を説明する概念図である。
【図１９】クラスタリング用いたグラフデータの再構築書き込み処理のシーケンスの例を示す流れ図である。
【図２０】クラスタリング用いたグラフデータの再構築書き込み処理に用いる管理テーブルの一例を示す表図である。
【図２１】グラフデータのデータフォーマットの一例である、CSR形式を示す概念図である。
【図２２】グラフデータの再構築書き込み処理を高速に実行するための付加情報の例を示す表図である。
【図２３】本発明の第二の実施例を適用した実施の形態であるサーバの全体構成及び不揮発性メモリDIMMの例を示す構成ブロック図である。
【図２４】グラフデータをDRAMから読み出す場合の一例を示す概念図である。
【発明を実施するための形態】
【００２７】
実施の形態について、図面を用いて詳細に説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
【００２８】
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。
【００２９】
本明細書等における「第１」、「第２」、「第３」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
【００３０】
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
【００３１】
以下に添付図面を参照して、本発明の第一の実施例を適用した実施の形態であるサーバ（情報処理装置）を詳細に説明する。  以下の実施例で説明される装置の概要を説明する。以下では、ホストとコントローラとメモリとを備えた情報処理装置が説明される。ホストは、グラフデータに対して処理を実行し、コントローラもしくはメモリとの間でデータ通信を行う。グラフデータは、少なくとも２つ以上の頂点の情報から構成され、頂点の情報は、当該頂点と関連性のある頂点のIDもしくは当該頂点と関連性のある頂点の情報が記録されているメモリ上の位置を含む。メモリは、データの読み出し最小単位を有し、コントローラは、メモリからのデータ読み出し及びメモリへのデータ書き込みを行う。ホストもしくはコントローラは、グラフデータを解析し、互いの距離が閾値よりも小さい頂点の情報を抽出し、付加情報を生成する。距離は、最短経路探索における２つの頂点間を結ぶリンクの数を表す。付加情報を用いることによって、ホストもしくはコントローラは、解析を実行しなくても、互いの距離が閾値よりも小さい頂点の情報を抽出することができる。
【００３２】
＜Ａ．サーバの構成＞
まず、サーバ(SVR)の構成について、図１と図２を用いて説明する。
【００３３】
図1に、情報処理装置であるサーバ全体の構成例を示す。サーバは、複数のホスト (Host(1)〜Host(N))と、ホスト間を接続するインターコネクト(Interconnect) と、それぞれのホストに接続された複数のメモリサブシステム(MSS(1)〜MSS(N))とから構成される。また、サーバには、外部記憶装置（Storage）が接続され、サーバは外部記憶装置に対してデータの読み書きを行う。
【００３４】
ホストは、情報処理回路(CPU)と、この情報処理回路に接続された1個以上のメモリ(DRAM)から構成される。ホスト同士はインターコネクトを介して互いに通信することができる。
【００３５】
また、ホストはそれぞれ接続されたメモリサブシステムと互いに通信することができる。情報処理回路は、メモリ及びメモリサブシステムから情報を読み出し、情報を書き込むことにより処理を実行する。
【００３６】
メモリサブシステムは、それぞれ1個のメモリサブシステム制御回路(Controller)と1個以上の不揮発性メモリ(NVM) と1個以上のメモリ(DRAM)から構成される。メモリサブシステム制御回路はホスト、不揮発性メモリ、メモリと互いに通信することができる。
【００３７】
メモリサブシステムの中のメモリは管理情報などを格納するメモリであり、DRAM以外にMagnetoresistive Random Access Memory (MRAM)、Spin Transfer Torque Random Access Memory (STT−RAM)、相変化メモリ、Static Random Access Memory (SRAM)、NAND型フラッシュメモリ、NOR型フラッシュメモリ、Resistance Random Access Memory (ReRAM)などのメモリでもよい。また、不揮発性メモリへ書き込むデータと読み出すデータとを一時的に記憶して不揮発性メモリのキャッシュとして使用してもよい。不揮発性メモリはホストから書き込まれたデータを格納するメモリであり、安価で大容量なNAND型フラッシュメモリ、相変化メモリ、ReRAMなどが挙げられる。
【００３８】
図２はメモリサブシステムを更に詳細に示したものである。
【００３９】
メモリサブシステム(MSS)は、1個のメモリサブシステム制御回路(Controller)と、不揮発性メモリ(NVM(1,1)〜NVM(i,j))と、メモリ(DRAM (1)〜DRAM(p))とから構成される（i、j、pは自然数）。メモリサブシステム制御回路(Controller)は、ホストとのインターフェース（Interface）と、グラフデータ再構築書き込み処理ブロック(UPDT_GRAPH)と、データレジスタ（RG）と、不揮発性メモリ制御回路（NVMC(1)〜NVMC(i)）と、DRAM制御回路（DRAMC(1)〜DRAMC(p)）とから構成される。グラフデータ再構築書き込み処理ブロック(UPDT_GRAPH)は、グラフデータ読み書きブロック(RW_GRAPH)と、グラフデータ解析ブロック(ANALYZE)と、データ再構築ブロック(RC)とから構成される。
【００４０】
インターフェースは、図1におけるホスト(HOST)と、グラフデータ再構築書き込み処理ブロック(RW_GRAPH)と、データレジスタ（RG）と接続されており、接続先間のデータ通信を行う。
【００４１】
グラフデータ再構築書き込み処理ブロック(UPDT_GRAPH)は、インターフェース（Interface）と、データレジスタ（RG）と通信し、不揮発性メモリ制御回路（NVMC)と、DRAM制御回路（DRAMC)を制御するものである。
【００４２】
データレジスタ（RG）は、インターフェース（Interface）と、グラフデータ再構築書き込み処理ブロック(UPDT_GRAPH)と接続され、接続先間のデータ通信を行う。
【００４３】
不揮発性メモリ制御回路（NVMC(1)〜NVMC(i)）は、不揮発性メモリ（NVM(i,1)〜NVM(i,j)）に接続されており、接続された不揮発性メモリのデータ読み出しと、データの書き込みと、データの消去を行う。
【００４４】
ここで、iは自然数であってチャネル番号を表し、複数のチャネルはそれぞれ独立して通信できるデータ転送バス(I/O)を備える。１つのチャネルに属するj個の不揮発性メモリ(NVM(i,1), NVM(i,2), …, NVM(i,j))は、データ転送バスを共有する。また、各チャネルに属するj個の不揮発性メモリは、メモリとしては独立しているため、不揮発性メモリ制御回路からの命令を独立に処理することができる。j個の不揮発性メモリは、不揮発性メモリ制御回路から物理的に近い順にウェイ(Way1, Way2, …, Wayj)に属する。
【００４５】
各不揮発性メモリがデータ処理中か否かを、不揮発性メモリ制御回路は、各不揮発性メモリに接続されたレディービジー線(RY/BY)の信号を読むことで判定することができる。不揮発性メモリ制御回路は、グラフデータ再構築書き込み処理ブロックと接続され、互いに通信できる。
【００４６】
DRAM制御回路（DRAMC(1)〜DRAMC(p)）は、それぞれメモリ（DRAM(1)〜DRAM(p)）に接続され、メモリからのデータ読み出しとメモリへのデータの書き込みを行う。また、DRAM制御回路はグラフデータ再構築書き込み処理ブロックと接続され、互いに通信できる。
【００４７】
＜Ｂ．グラフデータとグラフ解析における処理順＞
図３を用いて、サーバで解析するグラフデータに関して説明する。グラフデータの「グラフ」とは、データ構造の一種を表し、グラフデータは頂点（Vertex）と辺(Edge)から構成される。頂点はそれぞれIDを有しており、図では番号が振られている。関係性のある2つの頂点は、辺で結ばれる。
【００４８】
グラフデータで表されるデータの例としては、Social Networking Service (SNS)と路線が挙げられる。SNSの例では、頂点はSNSのユーザを表し、辺は、ユーザ間のSNS上での友人関係を表す。路線の例では、頂点は路線の駅を表し、駅の間は路線で結ばれる。これらの例で予想されるように、頂点はIDの他にも付帯情報（SNS：友人数、出身大学など、路線：駅舎面積など）が付く場合がある。同様に、辺にも付帯情報（SNS:友人or同僚など、路線:距離、運賃など）が付く場合がある。
【００４９】
このように、解析対象となるグラフはこの例に限定されるものではなく、頂点間の関係性に方向性を有する有向グラフ(Directed Graph)や、複数種類の関係性を有するMulti−relational Graphや、各頂点及び辺に付帯情報を有するProperty Graph及び付帯情報に重みが付けられたWeighted Graphなど、この例以外のグラフであってもよい。
【００５０】
図４を用いて、グラフ解析におけるグラフデータの処理順の一例を説明する。グラフ解析で良く扱われる処理の一つである、幅優先探索による最短経路探索の例を挙げる。この処理では、グラフの2つの頂点5番と17番の間の最短経路を探索するため、５番から処理を始めて、頂点に繋がる頂点を順番に探索する。
【００５１】
本処理における頂点の探索の順番を、頂点の右上の破線丸印内に示す。まず、始めに５番の頂点が探索される（Step 0）。その次に、5番に繋がる1番と２番と８番の頂点が探索される（探索順２〜４, Step 1）。次に、１番の頂点に繋がる４番と７番と９番の頂点が探索され、続いて８番の頂点に繋がる３番と６番と１０番の頂点が探索される（Step 2）。最後に、４、７、９、３、６、１０番の頂点に繋がる頂点群が探索され、１７番に到達した時点で処理は終了する（Step 3）。
【００５２】
このように、幅優先探索では、開始頂点から順に、同じ辺の数で繋がる頂点群（図中同じステップ）が、同じタイミングで処理される。
【００５３】
図５を用いて、グラフの２つの頂点間の距離に関して説明する。グラフの２つの頂点間の距離は、２つの頂点を結ぶ経路のうち、経路に含まれる辺の数が最も少ない経路（最短経路）における辺の数を表す。例えば、Ａに示すように、頂点２番と４番の間の距離は、２番と４番を結ぶ最短経路（図中破線：２番−５番−１番−４番）における辺の数“３”である。また、Bに示すように、頂点１４番と１１番の距離は、１４番と１１番を結ぶ最短経路（図中太線：１４番−３番−１１番）における辺の数“２”となる。  また、グラフデータの処理順の別の例としては、公知のように深さ優先探索がある。これは、深さ方向に順番に探索を進める方法である。
【００５４】
＜Ｃ．不揮発性メモリとグラフデータの書き込み方法＞
図６は、メモリサブシステム内の不揮発性メモリに格納されたデータの読み出し動作を説明する図である。不揮発性メモリには、データの読み出し最小単位が存在する。この読み出し最小単位を以下ページ(図中A、Page)と呼ぶ。
【００５５】
不揮発性メモリとしてNAND型フラッシュメモリを用いた場合は、一般にページのサイズは8kB−32kB程度である。また、メモリサブシステム内には、図２でも説明したように、同時に動作可能な複数の不揮発性メモリのチップが搭載されており、Bに示すように、複数チップから複数のページを同時に読み出すことが可能である。以上では不揮発性メモリとしてNAND型フラッシュメモリの例を挙げたが、本願が適用される範囲はこの例に限らず、他にもReRAMや相変化メモリなどの大容量不揮発性メモリを用いてもよい。
【００５６】
なお、データの読み出し単位は、ハードウェア的に固定されているものであってもよいし、上位装置の制御によって可変的に設定されるものであってもよい。データの読み出し単位は通常、１つの読み出しコマンドによって、有限の時間内に読み出し処理が行われる、複数のメモリセルを含む。１つの読み出しコマンドによって読み出す場合、「同時に読み出す」と表現する場合があるが、個々のメモリセルの読み出し処理自体は、時間的にずれていてもよく、読み出し処理は所定の時間幅の中で実行される。
【００５７】
図７は、比較例として示す従来技術における不揮発性メモリへのグラフデータ書き込み方法である。図７(a)に示すように、従来は、グラフデータの頂点番号と頂点の位置関係は無関係であり、ランダムに番号が振られていた。一方で、図７(b)に示すように、各頂点に関する情報（頂点情報：VTX）は、頂点番号順に不揮発性メモリに書き込まれていた。VTXnは頂点番号nに関する情報である。このため、同じページに書き込まれた頂点情報は、図７(a)の太線丸で示すように、グラフ上ではばらばらの位置に存在していた。
【００５８】
図８は、本実施例における不揮発性メモリへのグラフデータ書き込み方法の一例である。図８(a)に示すように、グラフ上で近い距離に存在する複数の頂点を、不揮発性メモリの同一ページ（Page AやPage B）に格納する。また、図８(b)に示すように、これらの頂点群を書き込んだ複数のページ（Page AとPage B）を、異なる不揮発性メモリ(chip)に書き込む。これにより、近い距離に存在する頂点の情報を高速に並列読み出しすることができる。
【００５９】
図４で説明した幅優先探索では、ある頂点からスタートして、頂点の繋がる順に処理を行った。このような接続順の処理では、スタートの頂点が変わったとしても、互いに距離の小さい頂点群が同じまたは近接したタイミングで処理される可能性が高い。そのため、図８に示すように、距離の近い頂点群を同時並列で高速に読み出せるようにすることで、処理を高速化できる。また、深さ優先探索でも、深さ方向に隣接した頂点や、グラフの先端では互いに距離の小さい頂点群が同じまたは近接したタイミングで処理される可能性が高い。従って同様の効果が期待できる。
【００６０】
また、このような接続順の処理は、最短経路探索に限らず、グラフ頂点の中心性解析、グラフのクラスタリング、頂点間の最大フロー解析、最適化問題など、多岐に応用できる。したがって、本実施例で開示される技術を用いることによって、グラフ解析の広範に対して、処理を高速化することが可能である。
【００６１】
図９は、頂点情報及び辺情報の一例を示す。
【００６２】
図９(a)は頂点１に対する頂点情報の一例であり、頂点情報は自身の頂点ＩＤ（ID(1)）、頂点１に繋がる頂点のＩＤ（V_ID0,1,…）、頂点１に繋がる辺のID(E_ID)から構成される。繋がる頂点や辺のIDはIDでなくてもよく、それぞれの頂点情報や辺情報が書き込まれている不揮発性メモリ上の位置を表すポインタ（PTR）でもよい。
【００６３】
図９(b)は、辺１に対する辺情報の一例を示す。辺情報は、辺ＩＤ(ID(1))、その辺の両端に繋がる頂点のID(V_ID0とV_ID1)、辺の重み(VAL)から構成される。両端の頂点のIDではなく、頂点情報が書き込まれている不揮発性メモリ上の位置を表すポインタ（PTR）でもよい。
【００６４】
また、これらの頂点情報と辺情報は一例であり、頂点情報に値やその他の付加情報が含まれていてもよく、辺情報に流量やその他の付加情報が含まれていてもよく、本願が適用される範囲はこの例に限らない。
【００６５】
＜Ｄ．グラフデータ再構築書き込み処理の全体フロー＞
図１０〜１２を用いて、グラフデータ再構築書き込み処理を図１のホスト(HOST)で実行した場合における本処理の全体フローの一例を説明する。
【００６６】
図１０は、本処理のシーケンスの一例を示す。
【００６７】
図１１は、本処理におけるホスト(HOST)とメモリサブシステム(MSS)間の、データフローの一例を示す。
【００６８】
まず、ホスト(HOST)はグラフデータを読み出す（図１０のStep 1及び図１１の1.Read）。このとき、グラフデータをサーバと接続された外部記憶装置から直接読み出す場合と、外部記憶装置からメモリサブシステム(MSS)内の不揮発性メモリ(NVM chip)に一旦ロード（コピー）し、その後メモリサブシステム内の不揮発性メモリから読み出す場合がある。
【００６９】
次に、ホスト(HOST)は、読みだしたグラフデータを解析し、頂点間の距離などを計算する（図１０のStep 2及び図１１の2.Analyze）。
【００７０】
次に、Step 2の解析結果を用いて、もともと書き込まれている頂点順番及び辺情報を再構築し、再構築前後の情報を管理するための再構築情報管理テーブル(RC INF)を作成する（図１０のStep 3及び図１１の3.RC & Make RC INF）。再構築情報管理テーブルは、ホスト内のDRAMに記録してもよいし、メモリサブシステムのDRAM等に書き込んでもよい。
【００７１】
最後に、再構築された頂点情報及び辺情報と、必要に応じて再構築情報管理テーブルを、メモリサブシステム(MSS)内の不揮発性メモリ(NVM chip)に書き込む（図１０のStep 4及び図１１の4.Update）。
【００７２】
図１２は、再構築情報管理テーブルの一例を示す。再構築したグラフデータを管理する方法は一通りではなく複数存在する。例えば、距離の近い頂点IDを連番にして管理した場合は、図１２(a)に示すように、再構築する前の頂点ID(OLD ID)と、再構築後(NEW ID)の対応関係を管理するためのテーブルを作成する。または、図１２(b)に示すように、頂点IDを変更せず、各頂点情報が書き込まれている不揮発性メモリ上の位置（ポインタ：PTR）を、頂点毎に管理する。また、図１２(c)に示すように、距離の近い頂点情報を書き込んだ複数のページを別の不揮発性メモリのチップに分散して書き込むため、論理ページアドレス(LPA)毎に、距離近さを表すフラグ(FLG)を管理する。距離が近い頂点群を含むページに同一フラグを割り当てることで、メモリサブシステム内のメモリサブシステム制御回路(Controller)は、フラグ値を参照し、同一フラグを分散させて別チップに書き込むように制御を行う。ホスト側でグラフデータ再構築書き込み処理を実行した場合は、制御の開発及び改変が比較的容易に行える利点がある。
【００７３】
図１３及び図１０を用いて、グラフデータ再構築書き込み処理をメモリサブシステム(MSS)のメモリサブシステム制御回路(Controller)で実行した場合の一例を説明する。処理内容は図１１で説明した場合と基本的には同じであるが、メモリサブシステム制御回路では、グラフデータ再構築書き込み処理に関するグラフ解析を実行する。
【００７４】
まず、サーバに接続された外部記憶装置からメモリサブシステム内の不揮発性メモリにロードされたグラフデータを、不揮発性メモリから読み出す（図１３の1.Read）。
【００７５】
次に、読みだしたグラフデータを解析し、頂点間の距離などを計算する（図１３の2.Analyze）。
【００７６】
次に、Step 2の解析結果を用いて、もともと書き込まれている頂点順番及び辺情報を再構築し、再構築前後の情報を管理するための再構築情報管理テーブル(RC INF)を作成する（図１３の3.RC & Make RC INF）。また、再構築情報管理テーブルをメモリサブシステム内のDRAMもしくは不揮発性メモリに書き込む。
【００７７】
最後に、再構築された頂点情報及び辺情報をメモリサブシステム内の不揮発性メモリに書き込む（図１３の4.Update）。メモリサブシステム制御回路でグラフデータ再構築書き込み処理を実行した場合、ハード化によって本処理を高速化できる利点や、ホスト(HOST)とメモリサブシステム(MSS)間のデータ通信を不要にでき、本処理を高速化できる利点がある。
【００７８】
以上、グラフデータ再構築書き込み処理をホスト(HOST)で実行した場合と、メモリサブシステム制御回路(Controller)で実行した場合の２つの例を説明したが、グラフデータの読み書き、グラフデータの解析、再構築及び再構築情報管理テーブル作成・保存の一部をホストとメモリサブシステム制御回路間で分担して実行してもよい。あるいは、全く別のシステムでグラフデータの解析および情報の再構築を行い、結果だけ再構築情報管理テーブルとして利用できるようにしておき、データ書き込みができるようにしてもよい。すなわち、本願の適用範囲は上記実施例に限定されるものではない。また、Ｅで本処理の詳細な実施例を示す。
【００７９】
図１４に、グラフデータの再構築書き込み処理のシーケンスの他の例を示す。
【００８０】
図１０〜図１３では、本処理を他のグラフ解析と独立して実行する場合の例を説明したが、本処理を他のグラフ解析と並行して実行してもよいし、または他のグラフ解析を実行した後、その結果を用いて本処理を実行してもよい。
【００８１】
図１４(a)は、グラフ解析の実行後、その結果を用いてグラフデータの再構築書き込み処理を実行する場合のシーケンスの一例を示す。
【００８２】
まず、ユーザによるリクエストなどをトリガーとして、ホストはグラフ解析を実行し（図１４(a)のStep 1）、解析の結果を出力する（図１４(a)のStep 2）。次に、ホストもしくはメモリサブシステム制御回路は、上記解析結果を基に、データ再構築のための解析を行う（図１４(a)のStep 3）。次に、ホストもしくはメモリサブシステム制御回路は、グラフデータの再構築及び再構築情報管理テーブルの作成を実行し（図１４(a)のStep 4）、グラフデータを書き込む（図１４(a)のStep 5）。
【００８３】
図１４(b)は、グラフデータの再構築書き込み処理を他のグラフ解析と並行して実行する場合のシーケンスの一例を示す。まず、ユーザによるリクエストなどをトリガーとして、ホストはグラフ解析を実行する。並行して、ホストもしくはメモリサブシステム制御回路は、データ再構築のための解析を実行する（図１４(b)のStep 1）。次に、ホストはグラフ解析の結果を出力し（図１４(b)のStep 2−1）、ホストもしくはメモリサブシステム制御回路は、グラフデータの再構築及び再構築情報管理テーブルの作成を実行し（図１４(b)のStep 2−2）、グラフデータを書き込む（図１４(b)のStep 3）。
【００８４】
このように、グラフ解析の結果を基に、グラフデータ再構築のための解析を行う、もしくはグラフ解析と並行してグラフデータ再構築のための解析を行うことにより、グラフデータ再構築のための解析を単独で実行した場合に比べ、処理を高速化できる効果がある。
【００８５】
＜Ｅ．グラフデータ再構築書き込み処理の詳細フロー＞
（１）次数解析を用いたグラフデータ再構築書き込み処理
図１５〜図１７を用いて、グラフデータ再構築書き込み処理の詳細フローの一例である次数解析を説明する。
【００８６】
図１５は、次数解析を用いてグラフデータ再構築書き込み処理を実行した場合の概念図である。図１５(a)に示すように、ハブ頂点と呼ばれる、次数の大きな頂点（図中黒丸）に繋がる頂点群を、不揮発性メモリの同一ページに書き込む。同一頂点に繋がる頂点群は、必ず互いの距離が２以下となる。但し、頂点Ａの次数とは、頂点Ａに繋がる頂点の数のことである。
【００８７】
ハブ頂点に繋がる頂点群を読み出し単位である一つのページに書き込めば、これらを１コマンドで同時に読み出すことができるので、処理効率が向上する。
【００８８】
また、図１５(a)(b)に示すように、並列読み出し可能な複数のページ（図中Page A, Page B）に分割して書き込む。ページＡとページＢに含まれる頂点は互いに距離が近いため、図１５(b)に示すように、これらのページを異なる不揮発性メモリのチップに書き込むことで、読み出しを並列化・高速化する。
【００８９】
ハブ頂点を抽出するためには、接続される頂点の数について閾値を設ければよい。あるいは、接続される頂点の数について統計をとり、例えば頂点の数の多いもの上位５％をハブ頂点とすればよい。この場合、ハブ頂点以外の頂点については、従来と同様に読み出し単位とは無関係に書き込んでもよい。
【００９０】
図１６は、次数解析を用いてグラフデータ再構築書き込み処理を実行した場合の具体的なシーケンスの一例を示す。
【００９１】
まず、ホストもしくはメモリサブシステム制御回路は、グラフデータを読み出す(図１６のStep 1)。Ｄ．で説明したように、グラフデータをサーバと接続された外部記憶装置から直接読み出す場合と、外部記憶装置からメモリサブシステム内の不揮発性メモリに一旦ロード（コピー）し、その後メモリサブシステム内の不揮発性メモリから読み出す場合がある。
【００９２】
次に、ホストもしくはメモリサブシステム制御回路は、グラフデータに含まれる全頂点の次数を計算し、次数テーブルを作成する(図１６のStep 2)。
【００９３】
図１７は次数解析を用いたグラフデータの再構築書き込み処理に用いる管理テーブルの一例である。次数テーブル(DG Table)は、図１７(a)に示すように、各頂点(VTX)の次数(DEGREE)が記録されたテーブルである。ホスト(HOST)もしくはメモリサブシステム制御回路(Controller)は、並行して、グラフデータに含まれる頂点の数、平均次数などを計算する(図１６のStep 2のCalc & Make DG Table)。
【００９４】
さらに、計算された全頂点数、平均次数などを用いて、ハブ頂点とそうでない頂点を区別するための次数の閾値を計算する(図１６のStep 2のCalc TH)。
【００９５】
次に、ホストもしくはメモリサブシステム制御回路は、次数テーブルを頂点番号順に１頂点ずつ参照し(図１６のStep 3)、次数テーブルに次の頂点が存在するか確認する(図１６のStep 4)。次の頂点が存在しない場合（図１６のStep 4のN）、グラフデータに含まれる全頂点に対してグラフデータ再構築処理が完了したことになるので、Ｄ．で説明したように、再構築された頂点情報及び辺情報と再構築情報管理テーブルを、メモリサブシステム内の不揮発性メモリに書き込み、処理を終了する（図１６のStep 13及、Step 14及びEND）。
【００９６】
一方、次数テーブルに次の頂点が存在する場合（図１６のStep 4のY）、その頂点の次数がStep 2で計算した次数の閾値を超えているか判定する（図１６のStep 5）。閾値を超えてない場合、データの再構築を実行しないため、Step 3に戻り、次数テーブルに記録された次の頂点の次数を参照する（図１６のStep 5のN）。
【００９７】
次数が閾値を超えていた場合(図１６のStep 5のY)、その頂点に繋がる頂点IDのリストを作成する。頂点IDのリスト(VTX List)の一例を図１７(b)に示す。
【００９８】
次に、ホストもしくはメモリサブシステム制御回路は、頂点IDのリストに次の頂点が存在するか判定する。次の頂点が存在しない場合は(図１６のStep 7のN)、ハブ頂点に繋がる頂点群に対する再構築処理が完了したことになるため、Step 3に戻り、次のハブ頂点を探索する。
【００９９】
次の頂点が存在する場合は(図１６のStep 7のY)、その頂点に対して、再構築処理が既に実行されているか判定する。再構築処理が既に実行されているか判定には、図１７(c)及び図１７(d)に示したテーブルを用いる。
【０１００】
図１７(c)は、変更後の頂点IDのリスト(NEW ID List)の一例を示し、図１７(d)は、変更後の論理もしくは物理アドレス(New PTR)のリスト(NEW PTR List)の一例を示す。
【０１０１】
例えば、図１７(c)において、頂点ID(VTX ID)0とID3の頂点は新しいID(NEW ID)が割り振られており、再構築処理済みであることを示す。頂点ID1とID2は、新しいIDが割り振られておらず、再構築処理は未実行である。既に再構築処理が実行されている場合は（図１６のStep 8のY）、その頂点に対する再構築処理は不要であるため、Step 7に戻り、次の頂点の処理に移る。再構築処理が実行されていない場合（図１６のStep 8のN）、ホストもしくはメモリサブシステム制御回路は、当該頂点の頂点情報を読み出し、そのデータサイズを計算する。また、頂点に対して、再構築処理を実行する（図１６のStep 9）。
【０１０２】
具体的には、頂点のID、もしくは頂点情報が格納されている論理アドレスまたは不揮発性メモリの物理アドレスを変更する。ホストが再構築処理を実行する場合は、論理アドレスを変更し、メモリサブシステム制御回路が再構築処理を実行する場合は、物理アドレスを変更する。
【０１０３】
ホストもしくはメモリサブシステム制御回路は、IDやアドレスの変更結果を図１７(c)もしくは図１７(d)に示すテーブルに反映させる。その後、ホストもしくはメモリサブシステム制御回路は、これまでの頂点情報のデータサイズの総和がメモリサブシステム内の不揮発性メモリの読み出し単位以上になっているかを判定する。
【０１０４】
頂点情報のデータサイズの総和がメモリサブシステム内の不揮発性メモリの読み出し単位以上になっていない場合(図１６のStep 10のN)、引き続き次の頂点に対して再構築処理を実行するため、Step 7に戻る。
【０１０５】
一方、頂点情報のデータサイズの総和がメモリサブシステム内の不揮発性メモリの読み出し単位以上になっている場合は(図１６のStep 10のY)、不揮発性メモリの読み出し単位分の頂点情報をメモリサブシステム内の不揮発性メモリに書き込む(図１６のStep 11)。
【０１０６】
ホスト側で再構築処理を実行しているときは、ホストは必要に応じて、近い距離にある頂点情報であることを示すフラグを付加して、メモリサブシステム制御回路にデータ書き込みリクエストを送る。メモリサブシステム制御回路はこのフラグを参照し、距離の近い頂点の頂点情報が含まれる複数のページを、メモリサブシステム内の不揮発性メモリの別チップに分散して書き込む。
【０１０７】
データの書き込み後、ホストもしくはメモリサブシステム制御回路は、これまでの頂点情報のデータサイズの総和をリセットして０とし、Step 9で計算した頂点情報のデータサイズを、Step 11においてメモリサブシステム内の不揮発性メモリに書き込んだ分だけ減少させる(図１６のStep 12)。その後、再びStep 10に戻る。
【０１０８】
次数解析は、頂点情報に隣接頂点の情報が含まれていれば、全頂点情報を一回ずつ読めば良い。したがって、上記例に示すように、閾値を設け、次数をソートしなければ計算オーダは頂点数であり、比較的高速に解析可能である。
【０１０９】
また、データフォーマットによっては、全頂点の次数のリストが予めグラフデータに含まれている場合もある。その場合、図１６のStep 2における次数計算は不要である。
【０１１０】
また、一度グラフデータ再構築書き込み処理を実行した後に、Ｆ．で説明するような付加情報を生成し、グラフデータと共に管理することによって、本項（１）で説明した再構築書き込み処理を、二度目以降から高速化することができる。
【０１１１】
次数の大きい頂点は、経路探索のランドマーク頂点、中心性解析やネットワークフローの対象となる場合が多く、これらの頂点に隣接する頂点群を同一ページに書き込むことで、より広範なグラフ解析に関して、処理を高速化することが可能となる。
【０１１２】
（２）クラスタリングを用いたグラフデータ再構築書き込み処理
図１８〜図２０を用いて、クラスタリングを用いたグラフデータ再構築書き込み処理に関して説明する。
【０１１３】
図１８は、クラスタリングを用いたグラフデータ再構築書き込み処理の概念図である。図１８(a)に示すように、クラスタリング処理によって、グラフデータは、関係性が密な領域であるクラスタ（CLS1, CLS2）に分解される。この各クラスタに対して、（１）で説明したデータ再構築書き込み処理を実行する。また、図１８(b)に示すように、距離の近い頂点の頂点情報を不揮発性メモリの同一ページにまとめ、複数ページは分散して書き込むことで、グラフ解析における無駄な読み出しを排除することができ、グラフ解析を高速化できる。
【０１１４】
図１９は、クラスタリングを用いたグラフデータ再構築書き込み処理のシーケンスである。まず、まず、ホスト(HOST)もしくはメモリサブシステム制御回路(Controller)は、グラフデータを読み出す(図１９のStep 1)。
【０１１５】
次に、ホストもしくはメモリサブシステム制御回路は、読みだしたグラフデータに対して、クラスタリング処理を実行する。様々なクラスタリングアルゴリズムが公知であり、例えば、k−means法、SCAN法などを用いればよい。また、クラスタリング結果を出力し、テーブルで管理する（図１９のStep 2）。
【０１１６】
図２０に管理テーブル(CLS List)の一例を示す。CLS IDはクラスタ番号を表し、CCは各クラスタのクラスタ係数を表す。クラスタ係数が大きいほど、関係性が密なクラスタであることを表す。VTX IDsは、各クラスタに属する頂点のIDを表す。
【０１１７】
Step 2の後、ホストもしくはメモリサブシステム制御回路は、管理テーブル(CLS List)を参照し、次のクラスタが存在するか判定する。次のクラスタが存在しない場合は（図１９のStep 3のN）、グラフ全体に対して、再構築処理が完了したことになるので、Ｄ．で説明したように、再構築された頂点情報及び辺情報と再構築情報管理テーブルを、メモリサブシステム内の不揮発性メモリに書き込み、処理を終了する（図１９のStep 8、Step 9及びEND）。
【０１１８】
次のクラスタが存在する場合は、該当クラスタに属する頂点群を、図２０に示す管理テーブルから読み出す。そして、これらの頂点群をグラフデータ全体とみなして、（１）で説明した次数解析によるグラフデータ再構築書き込み処理を実行する（図１９のStep 5）。処理の詳細は（１）で説明したものと同じである。
【０１１９】
その後、クラスタに属する頂点群をグラフデータ全体とみなして、再構築された頂点情報及び辺情報と再構築情報管理テーブルを、メモリサブシステム内の不揮発性メモリに書き込む（図１９のStep 6及びStep 7）。Step 7のあと、次のクラスタに対して同様に処理をするため、Step 3に戻る。
【０１２０】
クラスタリングは、計算オーダ＝辺数で実行可能であり、比較的高速に解析可能である。また、同一クラスタに属する頂点群は、互いに距離が近く、関係性も密であるため、近いタイミングで処理されることが多い。このため、クラスタ内のデータをページサイズごとにグループ化して不揮発性メモリに書き込むことで、より広範なグラフ解析に関して、処理を高速化することが可能となる。
【０１２１】
＜Ｆ．グラフデータのフォーマット及び付加情報＞
本願で用いるグラフデータのフォーマット及び付加情報の一例を、図２１、図２２を用いて説明する。
【０１２２】
図２１(a)に示すグラフに対応するデータフォーマットの一例を図２１(b)に示す。図２１(b)に示すデータフォーマットはCSR(Compressed Sparse Row)である。Ａは各頂点の隣接頂点番号を頂点番号１から順に記載した配列であり、Ｂは、Ａの配列の頂点区切り位置を表す配列である。例えば、Ｂの配列の1,5,6,10は、頂点１に隣接する頂点番号がＡの配列の“１”番目から４番目、頂点２に隣接する頂点番号がＡの配列の“５”番目から５番目、頂点３に隣接する頂点番号がＡの配列の“６”番目から９番目、頂点４に隣接する頂点番号がＡの配列の“１０”番目から１１番目に書かれていることを示している。
【０１２３】
図２２は、グラフデータに付加する情報の一例を示す。グラフデータ再構築書き込み処理を実行したのち、図２２に示すような付加情報を生成し、持つことにより、２回目以降のグラフデータ再構築書き込み処理を高速化することができる。
【０１２４】
図２２(a)は、次数の大きな頂点のＩＤ(HUB VTX ID)に対する次数(DEGREE)のテーブル(HUB VTX LIST)である。この付加情報を用いると、図１５〜図２０で説明したグラフデータ再構築書き込み処理を高速に実行することが可能となる。
【０１２５】
図２２(b)は、次数分布(DEGREE DISTRIBUTION)であり、各次数(DEGREE)を有する頂点の数(# of VTX)のテーブルである。このテーブルを用いることにより、隣接頂点を同一ページに書き込むための次数の閾値を得ることができ、次数解析を高速化且つ効率化することができる。
【０１２６】
図２２(c)は、クラスタＩＤ(CLS ID)と各クラスタに対する平均クラスタ係数(CC)及びクラスタに属する頂点IDのテーブル(CLS LIST)である。このテーブルを用いることにより、例えば、平均クラスタ係数の大きい順に、グラフデータ再構築書き込み処理を実行し、距離の近い頂点の情報を同一ページに書き込むことができる。これにより、図１８〜図２０で説明したクラスタリングを用いたグラフデータ再構築書き込み処理を高速且つ効率的に実行することが可能となる。
【０１２７】
図２２(d)は、各頂点番号(VTX ID)の特定の開始頂点(Start)における探索順(Order)のテーブル(ORDER LIST)である。このテーブルを用いることにより、次数の大きい頂点など、経路探索や中心性解析などで対象となりやすい頂点を基準とした探索順が分かるので、グラフデータ再構築書き込み処理を高速化することができる。
【０１２８】
図２２(e)は、グラフ全体の平均距離(Ave Dist)と、平均次数(Ave Degree)をの表(AVERAGE)を示す。これらの統計量を用いることで、同一ページに書き込む頂点間の距離の閾値や、次数の閾値を設定することができ、グラフデータ再構築書き込み処理を高速化することができる。
【０１２９】
＜Ｇ．他の実施例＞
（１）サーバへの適用例
図２３を用いて、本発明の第二の実施例であるサーバー（SVR）を説明する。
【０１３０】
図２３(a)は、ホスト (Host(1)〜Host(N))内の情報処理回路（CPU）に、不揮発性メモリDIMM（Dual Inline Memory Module ）(NVM−DIMM)が直接接続された例を示す。情報処理回路（CPU）内には、不揮発性メモリDIMM制御回路(DIMM CTL)が実装され、情報処理回路（CPU）に接続された不揮発性メモリDIMM(NVM−DIMM)に対して、本願で開示された制御の一部もしくは全てを行う。
【０１３１】
情報処理回路（CPU）内には、他にもメモリ（DRAM）が接続される。また、情報処理回路（CPU）とメモリ（DRAM）と不揮発性メモリDIMM(NVM−DIMM)から構成されるホスト (Host(1)〜Host(N))は、インターコネクトネットワーク(Interconnect)等により互いに接続され、情報を通信することができる。
【０１３２】
図２３(b)は、不揮発性メモリDIMM(NVM−DIMM)の第一の実施例を示す。不揮発性メモリDIMM(NVM−DIMM)は、複数の不揮発性メモリ(NVM)のチップ（NVM chip）から構成され、不揮発性メモリDIMM制御回路(DIMM CTL)からの命令に応じて、情報処理回路（CPU）との間で、データを通信する。
【０１３３】
図２３(c)は、不揮発性メモリDIMM(NVM−DIMM)の第二の実施例を示す。不揮発性メモリDIMM(NVM−DIMM)は、複数の不揮発性メモリ(NVM)のチップ（NVM chip）及び不揮発性メモリ制御回路（Controller）から構成される。不揮発性メモリ制御回路（Controller）は、本願で開示される制御の一部もしくは全てを実行し、不揮発性メモリ(NVM)に対するデータの読み出し、書き込み、消去を行う。また、不揮発性メモリ制御回路（Controller）は、情報処理回路（CPU）との間で、データを通信する。
【０１３４】
（２）不揮発性メモリ以外への適用例
図２４は、グラフデータの書き込み先として、DRAMを適用した場合の一例を示す。DRAMは通常DIMMの形態で情報処理回路（CPU）に接続される。DIMMは複数のDRAM chipから構成され、データを高速に読み出す際は、複数のchipを並列動作させる。このため、図中Aで示される並列読み出しの単位内に、距離の近い頂点を書き込むことで、グラフ解析を高速化することができる。
【０１３５】
＜Ｈ．実施例の効果のまとめ＞
以上説明した実施例によって得られる主な効果は以下の通りである。
【０１３６】
大容量不揮発性メモリを使用することで、ビッグデータの解析などに必要な大規模なメモリ空間を安価に提供でき、かつ、ビッグデータ解析で解析されるデータの順番と、不揮発性メモリに記録されているデータの順番が異なる場合でも、データの無駄な読み出しを排除し、高速にビッグデータ解析することができる。すなわち、大規模グラフの高速処理を行うサーバにおいて、DRAMなどよりビットコストが安価なNAND型フラッシュメモリなどの不揮発性メモリにグラフデータを格納し、解析される頂点の順番とNAND型フラッシュメモリに書き込まれている頂点の順番が異なる場合でも、グラフデータを読み出し、頂点間の距離を解析し、互いに距離の小さな頂点を抽出し、抽出された頂点の情報をNAND型フラッシュメモリの同一読み出し単位に書き込むことによって、グラフデータの無駄な読み出しを排除し、高速なグラフ解析を可能にする。
【０１３７】
更に、ユーザリクエストをトリガーとするグラフ解析と、上記グラフデータ再構築書き込み処理を同時に実行する、または、グラフデータ再構築書き込み処理の結果もしくは付加情報を、グラフデータと合わせて保存することにより、再度グラフデータの再構築書き込み処理を実行する際、処理を高速化することが可能である。また、上記グラフデータの再書き込み処理を一度に全て実行する必要はなく、ユーザによるグラフ解析を実行するたびに、少しずつ最適化してもよい。
【０１３８】
以上の説明では、グラフ解析を行うホスト、不揮発性メモリ、及び不揮発性メモリを管理するメモリサブシステム制御回路から構成されるサーバの例を挙げたが、サーバはデータ解析及び不揮発性メモリを管理するホスト、及びホストの管理にしたがって不揮発性メモリを制御するメモリサブシステム制御回路とから構成してもよい。
【０１３９】
以上、添付図面を参照して具体的に説明したが、好ましい実施の形態は以上の説明に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることが可能である。また、各実施例の構成の一部について、他の実施例の構成の追加・削除・置換をすることが可能である。
【０１４０】
以上の実施例では各処理は、ソフトウェアによる情報処理がホスト(HOST)の情報処理回路(CPU)、各種メモリ、メモリサブシステム制御回路(Controller)等のハードウエア資源を用いて実行されているものとする。また、同様の処理はハードウェアで実現してもよい。ソフトウエアで構成した機能と同等の機能は、FPGA（Field Programmable Gate Array）、ASIC（Application Specific Integrated Circuit）などのハードウエアでも実現できる。
【産業上の利用可能性】
【０１４１】
ビッグデータ解析やグラフデータ解析などの情報処理分野において、利用が可能である。
【符号の説明】
【０１４２】
SVR・・・サーバ
Host・・・ホスト
Interconnect・・・インターコネクト
MSS・・・メモリサブシステム
CPU・・・情報処理回路
Controller・・・メモリサブシステム制御回路
NVM・・・不揮発性メモリ
Storage・・・外部記憶装置
Interface・・・インターフェース
RG・・・データレジスタ
UPDT_GRAPH・・・グラフデータ再構築書き込み処理ブロック
RW_GRAPH・・・グラフデータ読み書きブロック
ANALYZE・・・グラフデータ解析ブロック
RC・・・データ再構築ブロック
NVMC・・・不揮発性メモリ制御回路
DRAMC ・・・DRAM制御回路
Ch・・・チャネル(1〜i)
Way・・・ウェイ(1〜j)
RY/BY・・・レディービジー線
I/O・・・データ転送バス
Vertex・・・頂点
Edge・・・辺
Page・・・ページ
VTX・・・頂点情報
V_ID・・・頂点のID
E_ID・・・辺のID
VAL・・・辺の重み
PTR・・・ポインタ
RC INF・・・再構築情報管理テーブル
LPA・・・論理ページアドレス
FLG・・・距離の近さを表すフラグ
DG Table・・・次数テーブル
CLS・・・クラスタ
CLS LIST・・・クラスタ毎のクラスタ係数及び頂点IDテーブル
CSR・・・Compressed Sparse Row
HUB VTX LIST・・・頂点毎の次数テーブル
DEGREE DISTRIBUTION・・・次数毎の頂点数テーブル
ORDER LIST・・・頂点毎の探索順テーブル
AVERAGE・・・グラフデータ全体平均値
NVM−DIMM・・・不揮発性メモリDIMM
DIMM CTL・・・不揮発性メモリDIMM制御回路
【図１】
2016194224.tif 000003
【図２】
2016194224.tif 000004
【図３】
2016194224.tif 000005
【図４】
2016194224.tif 000006
【図５】
2016194224.tif 000007
【図６】
2016194224.tif 000008
【図７】
2016194224.tif 000009
【図８】
2016194224.tif 000010
【図９】
2016194224.tif 000011
【図１０】
2016194224.tif 000012
【図１１】
2016194224.tif 000013
【図１２】
2016194224.tif 000014
【図１３】
2016194224.tif 000015
【図１４】
2016194224.tif 000016
【図１５】
2016194224.tif 000017
【図１６】
2016194224.tif 000018
【図１７】
2016194224.tif 000019
【図１８】
2016194224.tif 000020
【図１９】
2016194224.tif 000021
【図２０】
2016194224.tif 000022
【図２１】
2016194224.tif 000023
【図２２】
2016194224.tif 000024
【図２３】
2016194224.tif 000025
【図２４】
2016194224.tif 000026
【国際調査報告】
2016194224.tif 000027
2016194224.tif 000028
2016194224.tif 000029
2016194224.tif 000030