JP6360628B2 - 情報処理装置およびグラフデータの書き込み装置 - Google Patents

情報処理装置およびグラフデータの書き込み装置 Download PDF

Info

Publication number
JP6360628B2
JP6360628B2 JP2017521472A JP2017521472A JP6360628B2 JP 6360628 B2 JP6360628 B2 JP 6360628B2 JP 2017521472 A JP2017521472 A JP 2017521472A JP 2017521472 A JP2017521472 A JP 2017521472A JP 6360628 B2 JP6360628 B2 JP 6360628B2
Authority
JP
Japan
Prior art keywords
vertex
memory
data
information
graph data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2017521472A
Other languages
English (en)
Other versions
JPWO2016194224A1 (ja
Inventor
洋 内垣内
洋 内垣内
三浦 誓士
誓士 三浦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2016194224A1 publication Critical patent/JPWO2016194224A1/ja
Application granted granted Critical
Publication of JP6360628B2 publication Critical patent/JP6360628B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

本発明はビッグデータの高速処理に適した情報処理装置に関するものである。
今後、ビッグデータ解析の需要が高まるため、計算機が扱うデータ量は爆発的に増加する。一方、計算機に搭載できるDynamic Random Access Memory (DRAM)容量は限られるため、安価な大容量不揮発性メモリにビックデータを格納し、高速に解析する技術が望まれる。
大容量不揮発性メモリのデータ読み出し単位は、計算機のデータ処理単位よりも大きいケースがある。また、ビッグデータを生成・ストアするストレージ側では、データの処理内容・処理順を予め知ることができないため、データはデータの生成順・インデックス順で格納されている。つまり、データを処理する順番は、データが書き込まれている順番とは異なる。
このため、不揮発性メモリを用いた従来の情報処理装置では、データをストレージ側からサーバ側の不揮発性メモリへロードし、不揮発性メモリの読み出し単位に含まれるデータのうち、一部のデータのみを処理していた。つまり、処理しない余分なデータも、処理するデータと同時に不揮発性メモリから読み出しており、データの無駄な読み出しが発生していた。
特許文献1には、グラフ構造を持つメタデータを、特定のデータ処理順で不揮発性メモリに書き込む技術が開示されており、特許文献2には、特定のフォーマットで記録されたグラフデータの圧縮効率を向上する技術が開示されている。
US2007/0174309 特開2013−228819
大容量不揮発性メモリを用いた情報処理において、データの無駄な読み出しが発生すると、処理しないデータも不揮発性メモリから大量に読み出すことになり、情報処理装置の性能(処理速度)を低下させる。このため、処理速度を高速にするためには、不揮発性メモリから読み出したデータのうち、処理に用いるデータの割合を増やすことが必要である。
特許文献1に開示された技術では、XML形式で記述されたデータのメタデータに対するアクセス高速化の技術が記載されている。本技術では、ある特定のデータ処理の順番で、データを不揮発性メモリに記録していた。特定のケースでは処理が高速化できるが、他のケースでは高速化が期待できない。特に、本願でターゲットとする大規模グラフ解析においては、データ処理の順番が処理に応じて変わり、ストレージ側では処理順を予め知ることはできないため、特定のケースに対して処理を高速化しても、全体では効果が薄い。
また、特許文献2に開示された技術では、ストレージに格納されたグラフデータ(データフォーマット:CSR)に対して、頂点の辺の数に基づき、頂点の番号を新たに割り当てることで、グラフデータの圧縮効率を向上する技術が記載されている。本技術を用いると、特定のケースに対しては処理の高速化が期待できるが、本願でターゲットとする大規模グラフ解析においては、データ処理の順番が処理に応じて変わるため、全体では高速化の効果は薄い。また、距離の近い頂点群をグループ化して、同じグループの頂点群を不揮発性メモリの同一読み出し単位に書き込まないため、データの無駄な読み出しを排除することはできない。
大規模グラフ解析において、処理内容によらず、データの無駄な読み出しを排除し、処理を高速化させるためには、グラフ解析を実行するサーバ側で、処理内容に応じたデータの再構築が必要となる。
本発明の目的は、一般的なグラフ解析におけるデータの無駄な読み出しを減少させることで、情報処理装置のデータ処理速度を高速させることである。
本発明の一側面は、ホストとコントローラとメモリとを備えた情報処理装置である。ホストは、グラフデータに対して処理を実行し、コントローラもしくはメモリとの間でデータ通信を行う。グラフデータは、少なくとも2つ以上の頂点の情報から構成され、頂点の情報は、頂点と関連性のある頂点のIDもしくは頂点と関連性のある頂点の情報が記録されているメモリ上の位置を含む。また、メモリは、データの読み出し単位を有する。コントローラは、メモリからのデータ読み出し及びメモリへのデータ書き込みを行う。ホストもしくはコントローラは、グラフデータの解析結果である、互いの距離が閾値よりも小さい頂点の情報を抽出した付加情報にアクセス可能である。距離は、例えば、最短経路探索における2つの頂点間を結ぶリンクの数で表すことができる。
本発明の好ましい態様では、ホストもしくはコントローラは、付加情報を利用して、抽出された互いの距離が閾値よりも小さい頂点の情報を、メモリの同一の読み出し単位に書き込む。付加情報はホストもしくはコントローラがアクセスできればよく、ネットワークで接続された別サーバにあってもよいが、付加情報を装置内のメモリに保持すれば高速で安定にアクセスすることができる。
本発明の他の好ましい態様では、ホストもしくはコントローラがアクセスする互いの距離が閾値よりも小さい複数の頂点の情報を、メモリの異なるチップに書き込み、異なるチップの同一読み出し単位に書き込まれたデータを、同時並列に読み出すことを可能とする。
付加情報は、異なる2つの頂点間の距離、頂点ごとの次数、頂点毎の探索順、当該グラフデータ全体の次数の分布、頂点クラスタごとのクラスタ係数もしくは頂点ID、平均次数もしくは平均距離などを含むことができる。
本発明の他の一側面は、ホストとメモリとコントローラとを備えた情報処理装置である。ホストは、グラフデータに対して処理を実行し、コントローラもしくはメモリとの間でデータ通信を行う。グラフデータは、少なくとも2つ以上の頂点の情報から構成され、頂点の情報は、頂点と関連性のある頂点のIDもしくは頂点と関連性のある頂点の情報が記録されているメモリ上の位置を含む。メモリは、データの読み出し単位を有し、コントローラは、メモリからのデータ読み出し及びメモリへのデータ書き込みを行う。ホストもしくはコントローラは、グラフデータを解析し、互いの距離が閾値よりも小さい頂点の情報を抽出し、抽出された頂点の情報をメモリのデータの同一読み出し単位に書き込む。距離は、最短経路探索における、2つの頂点間のリンクの数で表すことができる。
より好ましい態様では、ホストもしくはコントローラは、抽出した頂点の情報を予め記憶しておき、書き込み時には記憶しておいた情報を参照して情報を書き込む。
より好ましい態様では、ホストもしくはコントローラは、互いの距離が閾値よりも小さい複数の頂点の情報をメモリの異なるチップの同一読み出し単位に書き込み、異なる前記チップに書き込まれたデータを、同時並列に読み出すことを可能とする。
本発明の他の一側面は、メモリに対してグラフデータを書き込む、グラフデータの書き込み装置である。この装置は、例えば、メモリチップを複数含むメモリサブシステムの上位装置であるホストコンピュータや、メモリサブシステムを制御するコントローラとして構成される。グラフデータは、少なくとも2つ以上の頂点の情報から構成される。メモリは、データの読み出し単位を有しており、書き込み装置はグラフ上の配置関係が所定条件を満たす頂点の情報をメモリの同一読み出し単位に書き込む。
より具体的な例では、配置関係が所定条件を満たす頂点の情報は、互いの距離が閾値よりも小さい頂点の情報であり、距離は、最短経路探索における、2つの頂点間のリンクの数で表すことができる。
より具体的な例では、互いの距離が閾値よりも小さい頂点の情報を得るために、ハブ頂点を特定し、ハブ頂点と繋がる頂点を抽出する。
より具体的な例では、互いの距離が閾値よりも小さい複数の頂点の情報を、メモリの異なるチップの同一読み出し単位に分割して書き込み、異なるチップに書き込まれたデータを、同時並列に読み出す。
本発明の他の一側面は、メモリに対してグラフデータを書き込み・読み出す、グラフデータの書き込み・読み出し方法である。グラフデータは、少なくとも2つ以上の頂点の情報から構成される。メモリは、データの読み出し単位を有している。この方法では、書き込み時にはグラフ上の配置関係が所定条件を満たす頂点の情報をメモリの同一読み出し単位に書き込む。また、読み出し時にはメモリの同一読み出し単位から、グラフ上の配置関係が所定条件を満たす頂点の情報を読み出す。
より具体的な例としては、グラフデータを解析し、互いの距離が閾値よりも小さい頂点の情報を抽出し、この頂点を同一読み出し単位に書き込む。その際に、頂点の情報を付加情報として生成・記憶しておき、付加情報を用いることによって、書き込み時に解析を実行しなくても、同一の読み出し単位に書き込む頂点の情報を抽出することができる。
本発明によれば、ビッグデータ解析などにおいて、情報処理装置のデータ処理速度を高速化させることが可能となる。
本発明の第一の実施例を適用した実施の形態であるサーバ(情報処理装置)と外部記憶装置の構成の一例を示す構成ブロック図である。 サーバ内のメモリサブシステムの構成の一例を示す構成ブロック図である。 サーバの処理対象であり、ビッグデータであるグラフの一例を示すグラフ図である。 サーバで実行されるグラフ解析において、処理される頂点の順番の一例を示すグラフ図である。 グラフにおいて、異なる2つの頂点間の距離を説明するグラフ図である。 メモリサブシステム内の不揮発性メモリの構成及びデータの読み出しを示すブロック図である。 従来技術における不揮発性メモリへのグラフデータ書き込み方法を説明するグラフ図である。 本願における不揮発性メモリへのグラフデータ書き込み方法の一例を説明するグラフ図である。 グラフデータの頂点情報及び辺情報の一例を説明する概念図である。 グラフデータの再構築書き込み処理のシーケンスの一例を示す流れ図である。 ホストがグラフデータの再構築書き込み処理を実施した場合における、シーケンスとデータフローの一例を示す概念図である。 グラフデータの再構築書き込み処理に用いるデータ管理テーブルの一例を示す表図である。 メモリサブシステムの制御回路がグラフデータの再構築書き込み処理を実施した場合における、シーケンスとデータフローの一例を示す概念図である。 グラフデータの再構築書き込み処理のシーケンスの他の例を示す流れ図である。 次数解析を用いた再構築書き込み処理における、不揮発性メモリへのグラフデータの書き込み方式を説明する概念図である。 次数解析を用いたグラフデータの再構築書き込み処理のシーケンスの例を示す流れ図である。 次数解析を用いたグラフデータの再構築書き込み処理に用いる管理テーブルの一例を示す表図である。 クラスタリングを用いた再構築書き込み処理における、不揮発性メモリへのグラフデータの書き込み方式を説明する概念図である。 クラスタリング用いたグラフデータの再構築書き込み処理のシーケンスの例を示す流れ図である。 クラスタリング用いたグラフデータの再構築書き込み処理に用いる管理テーブルの一例を示す表図である。 グラフデータのデータフォーマットの一例である、CSR形式を示す概念図である。 グラフデータの再構築書き込み処理を高速に実行するための付加情報の例を示す表図である。 本発明の第二の実施例を適用した実施の形態であるサーバの全体構成及び不揮発性メモリDIMMの例を示す構成ブロック図である。 グラフデータをDRAMから読み出す場合の一例を示す概念図である。
実施の形態について、図面を用いて詳細に説明する。ただし、本発明は以下に示す実施の形態の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
以下に説明する発明の構成において、同一部分又は同様な機能を有する部分には同一の符号を異なる図面間で共通して用い、重複する説明は省略することがある。
本明細書等における「第1」、「第2」、「第3」などの表記は、構成要素を識別するために付するものであり、必ずしも、数または順序を限定するものではない。また、構成要素の識別のための番号は文脈毎に用いられ、一つの文脈で用いた番号が、他の文脈で必ずしも同一の構成を示すとは限らない。また、ある番号で識別された構成要素が、他の番号で識別された構成要素の機能を兼ねることを妨げるものではない。
図面等において示す各構成の位置、大きさ、形状、範囲などは、発明の理解を容易にするため、実際の位置、大きさ、形状、範囲などを表していない場合がある。このため、本発明は、必ずしも、図面等に開示された位置、大きさ、形状、範囲などに限定されない。
以下に添付図面を参照して、本発明の第一の実施例を適用した実施の形態であるサーバ(情報処理装置)を詳細に説明する。 以下の実施例で説明される装置の概要を説明する。以下では、ホストとコントローラとメモリとを備えた情報処理装置が説明される。ホストは、グラフデータに対して処理を実行し、コントローラもしくはメモリとの間でデータ通信を行う。グラフデータは、少なくとも2つ以上の頂点の情報から構成され、頂点の情報は、当該頂点と関連性のある頂点のIDもしくは当該頂点と関連性のある頂点の情報が記録されているメモリ上の位置を含む。メモリは、データの読み出し最小単位を有し、コントローラは、メモリからのデータ読み出し及びメモリへのデータ書き込みを行う。ホストもしくはコントローラは、グラフデータを解析し、互いの距離が閾値よりも小さい頂点の情報を抽出し、付加情報を生成する。距離は、最短経路探索における2つの頂点間を結ぶリンクの数を表す。付加情報を用いることによって、ホストもしくはコントローラは、解析を実行しなくても、互いの距離が閾値よりも小さい頂点の情報を抽出することができる。
<A.サーバの構成>
まず、サーバ(SVR)の構成について、図1と図2を用いて説明する。
図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などが挙げられる。
図2はメモリサブシステムを更に詳細に示したものである。
メモリサブシステム(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)を備える。1つのチャネルに属する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制御回路はグラフデータ再構築書き込み処理ブロックと接続され、互いに通信できる。
<B.グラフデータとグラフ解析における処理順>
図3を用いて、サーバで解析するグラフデータに関して説明する。グラフデータの「グラフ」とは、データ構造の一種を表し、グラフデータは頂点(Vertex)と辺(Edge)から構成される。頂点はそれぞれIDを有しており、図では番号が振られている。関係性のある2つの頂点は、辺で結ばれる。
グラフデータで表されるデータの例としては、Social Networking Service (SNS)と路線が挙げられる。SNSの例では、頂点はSNSのユーザを表し、辺は、ユーザ間のSNS上での友人関係を表す。路線の例では、頂点は路線の駅を表し、駅の間は路線で結ばれる。これらの例で予想されるように、頂点はIDの他にも付帯情報(SNS:友人数、出身大学など、路線:駅舎面積など)が付く場合がある。同様に、辺にも付帯情報(SNS:友人or同僚など、路線:距離、運賃など)が付く場合がある。
このように、解析対象となるグラフはこの例に限定されるものではなく、頂点間の関係性に方向性を有する有向グラフ(Directed Graph)や、複数種類の関係性を有するMulti−relational Graphや、各頂点及び辺に付帯情報を有するProperty Graph及び付帯情報に重みが付けられたWeighted Graphなど、この例以外のグラフであってもよい。
図4を用いて、グラフ解析におけるグラフデータの処理順の一例を説明する。グラフ解析で良く扱われる処理の一つである、幅優先探索による最短経路探索の例を挙げる。この処理では、グラフの2つの頂点5番と17番の間の最短経路を探索するため、5番から処理を始めて、頂点に繋がる頂点を順番に探索する。
本処理における頂点の探索の順番を、頂点の右上の破線丸印内に示す。まず、始めに5番の頂点が探索される(Step 0)。その次に、5番に繋がる1番と2番と8番の頂点が探索される(探索順2〜4, Step 1)。次に、1番の頂点に繋がる4番と7番と9番の頂点が探索され、続いて8番の頂点に繋がる3番と6番と10番の頂点が探索される(Step 2)。最後に、4、7、9、3、6、10番の頂点に繋がる頂点群が探索され、17番に到達した時点で処理は終了する(Step 3)。
このように、幅優先探索では、開始頂点から順に、同じ辺の数で繋がる頂点群(図中同じステップ)が、同じタイミングで処理される。
図5を用いて、グラフの2つの頂点間の距離に関して説明する。グラフの2つの頂点間の距離は、2つの頂点を結ぶ経路のうち、経路に含まれる辺の数が最も少ない経路(最短経路)における辺の数を表す。例えば、Aに示すように、頂点2番と4番の間の距離は、2番と4番を結ぶ最短経路(図中破線:2番−5番−1番−4番)における辺の数“3”である。また、Bに示すように、頂点14番と11番の距離は、14番と11番を結ぶ最短経路(図中太線:14番−3番−11番)における辺の数“2”となる。 また、グラフデータの処理順の別の例としては、公知のように深さ優先探索がある。これは、深さ方向に順番に探索を進める方法である。
<C.不揮発性メモリとグラフデータの書き込み方法>
図6は、メモリサブシステム内の不揮発性メモリに格納されたデータの読み出し動作を説明する図である。不揮発性メモリには、データの読み出し最小単位が存在する。この読み出し最小単位を以下ページ(図中A、Page)と呼ぶ。
不揮発性メモリとしてNAND型フラッシュメモリを用いた場合は、一般にページのサイズは8kB−32kB程度である。また、メモリサブシステム内には、図2でも説明したように、同時に動作可能な複数の不揮発性メモリのチップが搭載されており、Bに示すように、複数チップから複数のページを同時に読み出すことが可能である。以上では不揮発性メモリとしてNAND型フラッシュメモリの例を挙げたが、本願が適用される範囲はこの例に限らず、他にもReRAMや相変化メモリなどの大容量不揮発性メモリを用いてもよい。
なお、データの読み出し単位は、ハードウェア的に固定されているものであってもよいし、上位装置の制御によって可変的に設定されるものであってもよい。データの読み出し単位は通常、1つの読み出しコマンドによって、有限の時間内に読み出し処理が行われる、複数のメモリセルを含む。1つの読み出しコマンドによって読み出す場合、「同時に読み出す」と表現する場合があるが、個々のメモリセルの読み出し処理自体は、時間的にずれていてもよく、読み出し処理は所定の時間幅の中で実行される。
図7は、比較例として示す従来技術における不揮発性メモリへのグラフデータ書き込み方法である。図7(a)に示すように、従来は、グラフデータの頂点番号と頂点の位置関係は無関係であり、ランダムに番号が振られていた。一方で、図7(b)に示すように、各頂点に関する情報(頂点情報:VTX)は、頂点番号順に不揮発性メモリに書き込まれていた。VTXnは頂点番号nに関する情報である。このため、同じページに書き込まれた頂点情報は、図7(a)の太線丸で示すように、グラフ上ではばらばらの位置に存在していた。
図8は、本実施例における不揮発性メモリへのグラフデータ書き込み方法の一例である。図8(a)に示すように、グラフ上で近い距離に存在する複数の頂点を、不揮発性メモリの同一ページ(Page AやPage B)に格納する。また、図8(b)に示すように、これらの頂点群を書き込んだ複数のページ(Page AとPage B)を、異なる不揮発性メモリ(chip)に書き込む。これにより、近い距離に存在する頂点の情報を高速に並列読み出しすることができる。
図4で説明した幅優先探索では、ある頂点からスタートして、頂点の繋がる順に処理を行った。このような接続順の処理では、スタートの頂点が変わったとしても、互いに距離の小さい頂点群が同じまたは近接したタイミングで処理される可能性が高い。そのため、図8に示すように、距離の近い頂点群を同時並列で高速に読み出せるようにすることで、処理を高速化できる。また、深さ優先探索でも、深さ方向に隣接した頂点や、グラフの先端では互いに距離の小さい頂点群が同じまたは近接したタイミングで処理される可能性が高い。従って同様の効果が期待できる。
また、このような接続順の処理は、最短経路探索に限らず、グラフ頂点の中心性解析、グラフのクラスタリング、頂点間の最大フロー解析、最適化問題など、多岐に応用できる。したがって、本実施例で開示される技術を用いることによって、グラフ解析の広範に対して、処理を高速化することが可能である。
図9は、頂点情報及び辺情報の一例を示す。
図9(a)は頂点1に対する頂点情報の一例であり、頂点情報は自身の頂点ID(ID(1))、頂点1に繋がる頂点のID(V_ID0,1,…)、頂点1に繋がる辺のID(E_ID)から構成される。繋がる頂点や辺のIDはIDでなくてもよく、それぞれの頂点情報や辺情報が書き込まれている不揮発性メモリ上の位置を表すポインタ(PTR)でもよい。
図9(b)は、辺1に対する辺情報の一例を示す。辺情報は、辺ID(ID(1))、その辺の両端に繋がる頂点のID(V_ID0とV_ID1)、辺の重み(VAL)から構成される。両端の頂点のIDではなく、頂点情報が書き込まれている不揮発性メモリ上の位置を表すポインタ(PTR)でもよい。
また、これらの頂点情報と辺情報は一例であり、頂点情報に値やその他の付加情報が含まれていてもよく、辺情報に流量やその他の付加情報が含まれていてもよく、本願が適用される範囲はこの例に限らない。
<D.グラフデータ再構築書き込み処理の全体フロー>
図10〜12を用いて、グラフデータ再構築書き込み処理を図1のホスト(HOST)で実行した場合における本処理の全体フローの一例を説明する。
図10は、本処理のシーケンスの一例を示す。
図11は、本処理におけるホスト(HOST)とメモリサブシステム(MSS)間の、データフローの一例を示す。
まず、ホスト(HOST)はグラフデータを読み出す(図10のStep 1及び図11の1.Read)。このとき、グラフデータをサーバと接続された外部記憶装置から直接読み出す場合と、外部記憶装置からメモリサブシステム(MSS)内の不揮発性メモリ(NVM chip)に一旦ロード(コピー)し、その後メモリサブシステム内の不揮発性メモリから読み出す場合がある。
次に、ホスト(HOST)は、読みだしたグラフデータを解析し、頂点間の距離などを計算する(図10のStep 2及び図11の2.Analyze)。
次に、Step 2の解析結果を用いて、もともと書き込まれている頂点順番及び辺情報を再構築し、再構築前後の情報を管理するための再構築情報管理テーブル(RC INF)を作成する(図10のStep 3及び図11の3.RC & Make RC INF)。再構築情報管理テーブルは、ホスト内のDRAMに記録してもよいし、メモリサブシステムのDRAM等に書き込んでもよい。
最後に、再構築された頂点情報及び辺情報と、必要に応じて再構築情報管理テーブルを、メモリサブシステム(MSS)内の不揮発性メモリ(NVM chip)に書き込む(図10のStep 4及び図11の4.Update)。
図12は、再構築情報管理テーブルの一例を示す。再構築したグラフデータを管理する方法は一通りではなく複数存在する。例えば、距離の近い頂点IDを連番にして管理した場合は、図12(a)に示すように、再構築する前の頂点ID(OLD ID)と、再構築後(NEW ID)の対応関係を管理するためのテーブルを作成する。または、図12(b)に示すように、頂点IDを変更せず、各頂点情報が書き込まれている不揮発性メモリ上の位置(ポインタ:PTR)を、頂点毎に管理する。また、図12(c)に示すように、距離の近い頂点情報を書き込んだ複数のページを別の不揮発性メモリのチップに分散して書き込むため、論理ページアドレス(LPA)毎に、距離近さを表すフラグ(FLG)を管理する。距離が近い頂点群を含むページに同一フラグを割り当てることで、メモリサブシステム内のメモリサブシステム制御回路(Controller)は、フラグ値を参照し、同一フラグを分散させて別チップに書き込むように制御を行う。ホスト側でグラフデータ再構築書き込み処理を実行した場合は、制御の開発及び改変が比較的容易に行える利点がある。
図13及び図10を用いて、グラフデータ再構築書き込み処理をメモリサブシステム(MSS)のメモリサブシステム制御回路(Controller)で実行した場合の一例を説明する。処理内容は図11で説明した場合と基本的には同じであるが、メモリサブシステム制御回路では、グラフデータ再構築書き込み処理に関するグラフ解析を実行する。
まず、サーバに接続された外部記憶装置からメモリサブシステム内の不揮発性メモリにロードされたグラフデータを、不揮発性メモリから読み出す(図13の1.Read)。
次に、読みだしたグラフデータを解析し、頂点間の距離などを計算する(図13の2.Analyze)。
次に、Step 2の解析結果を用いて、もともと書き込まれている頂点順番及び辺情報を再構築し、再構築前後の情報を管理するための再構築情報管理テーブル(RC INF)を作成する(図13の3.RC & Make RC INF)。また、再構築情報管理テーブルをメモリサブシステム内のDRAMもしくは不揮発性メモリに書き込む。
最後に、再構築された頂点情報及び辺情報をメモリサブシステム内の不揮発性メモリに書き込む(図13の4.Update)。メモリサブシステム制御回路でグラフデータ再構築書き込み処理を実行した場合、ハード化によって本処理を高速化できる利点や、ホスト(HOST)とメモリサブシステム(MSS)間のデータ通信を不要にでき、本処理を高速化できる利点がある。
以上、グラフデータ再構築書き込み処理をホスト(HOST)で実行した場合と、メモリサブシステム制御回路(Controller)で実行した場合の2つの例を説明したが、グラフデータの読み書き、グラフデータの解析、再構築及び再構築情報管理テーブル作成・保存の一部をホストとメモリサブシステム制御回路間で分担して実行してもよい。あるいは、全く別のシステムでグラフデータの解析および情報の再構築を行い、結果だけ再構築情報管理テーブルとして利用できるようにしておき、データ書き込みができるようにしてもよい。すなわち、本願の適用範囲は上記実施例に限定されるものではない。また、Eで本処理の詳細な実施例を示す。
図14に、グラフデータの再構築書き込み処理のシーケンスの他の例を示す。
図10〜図13では、本処理を他のグラフ解析と独立して実行する場合の例を説明したが、本処理を他のグラフ解析と並行して実行してもよいし、または他のグラフ解析を実行した後、その結果を用いて本処理を実行してもよい。
図14(a)は、グラフ解析の実行後、その結果を用いてグラフデータの再構築書き込み処理を実行する場合のシーケンスの一例を示す。
まず、ユーザによるリクエストなどをトリガーとして、ホストはグラフ解析を実行し(図14(a)のStep 1)、解析の結果を出力する(図14(a)のStep 2)。次に、ホストもしくはメモリサブシステム制御回路は、上記解析結果を基に、データ再構築のための解析を行う(図14(a)のStep 3)。次に、ホストもしくはメモリサブシステム制御回路は、グラフデータの再構築及び再構築情報管理テーブルの作成を実行し(図14(a)のStep 4)、グラフデータを書き込む(図14(a)のStep 5)。
図14(b)は、グラフデータの再構築書き込み処理を他のグラフ解析と並行して実行する場合のシーケンスの一例を示す。まず、ユーザによるリクエストなどをトリガーとして、ホストはグラフ解析を実行する。並行して、ホストもしくはメモリサブシステム制御回路は、データ再構築のための解析を実行する(図14(b)のStep 1)。次に、ホストはグラフ解析の結果を出力し(図14(b)のStep 2−1)、ホストもしくはメモリサブシステム制御回路は、グラフデータの再構築及び再構築情報管理テーブルの作成を実行し(図14(b)のStep 2−2)、グラフデータを書き込む(図14(b)のStep 3)。
このように、グラフ解析の結果を基に、グラフデータ再構築のための解析を行う、もしくはグラフ解析と並行してグラフデータ再構築のための解析を行うことにより、グラフデータ再構築のための解析を単独で実行した場合に比べ、処理を高速化できる効果がある。
<E.グラフデータ再構築書き込み処理の詳細フロー>
(1)次数解析を用いたグラフデータ再構築書き込み処理
図15〜図17を用いて、グラフデータ再構築書き込み処理の詳細フローの一例である次数解析を説明する。
図15は、次数解析を用いてグラフデータ再構築書き込み処理を実行した場合の概念図である。図15(a)に示すように、ハブ頂点と呼ばれる、次数の大きな頂点(図中黒丸)に繋がる頂点群を、不揮発性メモリの同一ページに書き込む。同一頂点に繋がる頂点群は、必ず互いの距離が2以下となる。但し、頂点Aの次数とは、頂点Aに繋がる頂点の数のことである。
ハブ頂点に繋がる頂点群を読み出し単位である一つのページに書き込めば、これらを1コマンドで同時に読み出すことができるので、処理効率が向上する。
また、図15(a)(b)に示すように、並列読み出し可能な複数のページ(図中Page A, Page B)に分割して書き込む。ページAとページBに含まれる頂点は互いに距離が近いため、図15(b)に示すように、これらのページを異なる不揮発性メモリのチップに書き込むことで、読み出しを並列化・高速化する。
ハブ頂点を抽出するためには、接続される頂点の数について閾値を設ければよい。あるいは、接続される頂点の数について統計をとり、例えば頂点の数の多いもの上位5%をハブ頂点とすればよい。この場合、ハブ頂点以外の頂点については、従来と同様に読み出し単位とは無関係に書き込んでもよい。
図16は、次数解析を用いてグラフデータ再構築書き込み処理を実行した場合の具体的なシーケンスの一例を示す。
まず、ホストもしくはメモリサブシステム制御回路は、グラフデータを読み出す(図16のStep 1)。D.で説明したように、グラフデータをサーバと接続された外部記憶装置から直接読み出す場合と、外部記憶装置からメモリサブシステム内の不揮発性メモリに一旦ロード(コピー)し、その後メモリサブシステム内の不揮発性メモリから読み出す場合がある。
次に、ホストもしくはメモリサブシステム制御回路は、グラフデータに含まれる全頂点の次数を計算し、次数テーブルを作成する(図16のStep 2)。
図17は次数解析を用いたグラフデータの再構築書き込み処理に用いる管理テーブルの一例である。次数テーブル(DG Table)は、図17(a)に示すように、各頂点(VTX)の次数(DEGREE)が記録されたテーブルである。ホスト(HOST)もしくはメモリサブシステム制御回路(Controller)は、並行して、グラフデータに含まれる頂点の数、平均次数などを計算する(図16のStep 2のCalc & Make DG Table)。
さらに、計算された全頂点数、平均次数などを用いて、ハブ頂点とそうでない頂点を区別するための次数の閾値を計算する(図16のStep 2のCalc TH)。
次に、ホストもしくはメモリサブシステム制御回路は、次数テーブルを頂点番号順に1頂点ずつ参照し(図16のStep 3)、次数テーブルに次の頂点が存在するか確認する(図16のStep 4)。次の頂点が存在しない場合(図16のStep 4のN)、グラフデータに含まれる全頂点に対してグラフデータ再構築処理が完了したことになるので、D.で説明したように、再構築された頂点情報及び辺情報と再構築情報管理テーブルを、メモリサブシステム内の不揮発性メモリに書き込み、処理を終了する(図16のStep 13及、Step 14及びEND)。
一方、次数テーブルに次の頂点が存在する場合(図16のStep 4のY)、その頂点の次数がStep 2で計算した次数の閾値を超えているか判定する(図16のStep 5)。閾値を超えてない場合、データの再構築を実行しないため、Step 3に戻り、次数テーブルに記録された次の頂点の次数を参照する(図16のStep 5のN)。
次数が閾値を超えていた場合(図16のStep 5のY)、その頂点に繋がる頂点IDのリストを作成する。頂点IDのリスト(VTX List)の一例を図17(b)に示す。
次に、ホストもしくはメモリサブシステム制御回路は、頂点IDのリストに次の頂点が存在するか判定する。次の頂点が存在しない場合は(図16のStep 7のN)、ハブ頂点に繋がる頂点群に対する再構築処理が完了したことになるため、Step 3に戻り、次のハブ頂点を探索する。
次の頂点が存在する場合は(図16のStep 7のY)、その頂点に対して、再構築処理が既に実行されているか判定する。再構築処理が既に実行されているか判定には、図17(c)及び図17(d)に示したテーブルを用いる。
図17(c)は、変更後の頂点IDのリスト(NEW ID List)の一例を示し、図17(d)は、変更後の論理もしくは物理アドレス(New PTR)のリスト(NEW PTR List)の一例を示す。
例えば、図17(c)において、頂点ID(VTX ID)0とID3の頂点は新しいID(NEW ID)が割り振られており、再構築処理済みであることを示す。頂点ID1とID2は、新しいIDが割り振られておらず、再構築処理は未実行である。既に再構築処理が実行されている場合は(図16のStep 8のY)、その頂点に対する再構築処理は不要であるため、Step 7に戻り、次の頂点の処理に移る。再構築処理が実行されていない場合(図16のStep 8のN)、ホストもしくはメモリサブシステム制御回路は、当該頂点の頂点情報を読み出し、そのデータサイズを計算する。また、頂点に対して、再構築処理を実行する(図16のStep 9)。
具体的には、頂点のID、もしくは頂点情報が格納されている論理アドレスまたは不揮発性メモリの物理アドレスを変更する。ホストが再構築処理を実行する場合は、論理アドレスを変更し、メモリサブシステム制御回路が再構築処理を実行する場合は、物理アドレスを変更する。
ホストもしくはメモリサブシステム制御回路は、IDやアドレスの変更結果を図17(c)もしくは図17(d)に示すテーブルに反映させる。その後、ホストもしくはメモリサブシステム制御回路は、これまでの頂点情報のデータサイズの総和がメモリサブシステム内の不揮発性メモリの読み出し単位以上になっているかを判定する。
頂点情報のデータサイズの総和がメモリサブシステム内の不揮発性メモリの読み出し単位以上になっていない場合(図16のStep 10のN)、引き続き次の頂点に対して再構築処理を実行するため、Step 7に戻る。
一方、頂点情報のデータサイズの総和がメモリサブシステム内の不揮発性メモリの読み出し単位以上になっている場合は(図16のStep 10のY)、不揮発性メモリの読み出し単位分の頂点情報をメモリサブシステム内の不揮発性メモリに書き込む(図16のStep 11)。
ホスト側で再構築処理を実行しているときは、ホストは必要に応じて、近い距離にある頂点情報であることを示すフラグを付加して、メモリサブシステム制御回路にデータ書き込みリクエストを送る。メモリサブシステム制御回路はこのフラグを参照し、距離の近い頂点の頂点情報が含まれる複数のページを、メモリサブシステム内の不揮発性メモリの別チップに分散して書き込む。
データの書き込み後、ホストもしくはメモリサブシステム制御回路は、これまでの頂点情報のデータサイズの総和をリセットして0とし、Step 9で計算した頂点情報のデータサイズを、Step 11においてメモリサブシステム内の不揮発性メモリに書き込んだ分だけ減少させる(図16のStep 12)。その後、再びStep 10に戻る。
次数解析は、頂点情報に隣接頂点の情報が含まれていれば、全頂点情報を一回ずつ読めば良い。したがって、上記例に示すように、閾値を設け、次数をソートしなければ計算オーダは頂点数であり、比較的高速に解析可能である。
また、データフォーマットによっては、全頂点の次数のリストが予めグラフデータに含まれている場合もある。その場合、図16のStep 2における次数計算は不要である。
また、一度グラフデータ再構築書き込み処理を実行した後に、F.で説明するような付加情報を生成し、グラフデータと共に管理することによって、本項(1)で説明した再構築書き込み処理を、二度目以降から高速化することができる。
次数の大きい頂点は、経路探索のランドマーク頂点、中心性解析やネットワークフローの対象となる場合が多く、これらの頂点に隣接する頂点群を同一ページに書き込むことで、より広範なグラフ解析に関して、処理を高速化することが可能となる。
(2)クラスタリングを用いたグラフデータ再構築書き込み処理
図18〜図20を用いて、クラスタリングを用いたグラフデータ再構築書き込み処理に関して説明する。
図18は、クラスタリングを用いたグラフデータ再構築書き込み処理の概念図である。図18(a)に示すように、クラスタリング処理によって、グラフデータは、関係性が密な領域であるクラスタ(CLS1, CLS2)に分解される。この各クラスタに対して、(1)で説明したデータ再構築書き込み処理を実行する。また、図18(b)に示すように、距離の近い頂点の頂点情報を不揮発性メモリの同一ページにまとめ、複数ページは分散して書き込むことで、グラフ解析における無駄な読み出しを排除することができ、グラフ解析を高速化できる。
図19は、クラスタリングを用いたグラフデータ再構築書き込み処理のシーケンスである。まず、まず、ホスト(HOST)もしくはメモリサブシステム制御回路(Controller)は、グラフデータを読み出す(図19のStep 1)。
次に、ホストもしくはメモリサブシステム制御回路は、読みだしたグラフデータに対して、クラスタリング処理を実行する。様々なクラスタリングアルゴリズムが公知であり、例えば、k−means法、SCAN法などを用いればよい。また、クラスタリング結果を出力し、テーブルで管理する(図19のStep 2)。
図20に管理テーブル(CLS List)の一例を示す。CLS IDはクラスタ番号を表し、CCは各クラスタのクラスタ係数を表す。クラスタ係数が大きいほど、関係性が密なクラスタであることを表す。VTX IDsは、各クラスタに属する頂点のIDを表す。
Step 2の後、ホストもしくはメモリサブシステム制御回路は、管理テーブル(CLS List)を参照し、次のクラスタが存在するか判定する。次のクラスタが存在しない場合は(図19のStep 3のN)、グラフ全体に対して、再構築処理が完了したことになるので、D.で説明したように、再構築された頂点情報及び辺情報と再構築情報管理テーブルを、メモリサブシステム内の不揮発性メモリに書き込み、処理を終了する(図19のStep 8、Step 9及びEND)。
次のクラスタが存在する場合は、該当クラスタに属する頂点群を、図20に示す管理テーブルから読み出す。そして、これらの頂点群をグラフデータ全体とみなして、(1)で説明した次数解析によるグラフデータ再構築書き込み処理を実行する(図19のStep 5)。処理の詳細は(1)で説明したものと同じである。
その後、クラスタに属する頂点群をグラフデータ全体とみなして、再構築された頂点情報及び辺情報と再構築情報管理テーブルを、メモリサブシステム内の不揮発性メモリに書き込む(図19のStep 6及びStep 7)。Step 7のあと、次のクラスタに対して同様に処理をするため、Step 3に戻る。
クラスタリングは、計算オーダ=辺数で実行可能であり、比較的高速に解析可能である。また、同一クラスタに属する頂点群は、互いに距離が近く、関係性も密であるため、近いタイミングで処理されることが多い。このため、クラスタ内のデータをページサイズごとにグループ化して不揮発性メモリに書き込むことで、より広範なグラフ解析に関して、処理を高速化することが可能となる。
<F.グラフデータのフォーマット及び付加情報>
本願で用いるグラフデータのフォーマット及び付加情報の一例を、図21、図22を用いて説明する。
図21(a)に示すグラフに対応するデータフォーマットの一例を図21(b)に示す。図21(b)に示すデータフォーマットはCSR(Compressed Sparse Row)である。Aは各頂点の隣接頂点番号を頂点番号1から順に記載した配列であり、Bは、Aの配列の頂点区切り位置を表す配列である。例えば、Bの配列の1,5,6,10は、頂点1に隣接する頂点番号がAの配列の“1”番目から4番目、頂点2に隣接する頂点番号がAの配列の“5”番目から5番目、頂点3に隣接する頂点番号がAの配列の“6”番目から9番目、頂点4に隣接する頂点番号がAの配列の“10”番目から11番目に書かれていることを示している。
図22は、グラフデータに付加する情報の一例を示す。グラフデータ再構築書き込み処理を実行したのち、図22に示すような付加情報を生成し、持つことにより、2回目以降のグラフデータ再構築書き込み処理を高速化することができる。
図22(a)は、次数の大きな頂点のID(HUB VTX ID)に対する次数(DEGREE)のテーブル(HUB VTX LIST)である。この付加情報を用いると、図15〜図20で説明したグラフデータ再構築書き込み処理を高速に実行することが可能となる。
図22(b)は、次数分布(DEGREE DISTRIBUTION)であり、各次数(DEGREE)を有する頂点の数(# of VTX)のテーブルである。このテーブルを用いることにより、隣接頂点を同一ページに書き込むための次数の閾値を得ることができ、次数解析を高速化且つ効率化することができる。
図22(c)は、クラスタID(CLS ID)と各クラスタに対する平均クラスタ係数(CC)及びクラスタに属する頂点IDのテーブル(CLS LIST)である。このテーブルを用いることにより、例えば、平均クラスタ係数の大きい順に、グラフデータ再構築書き込み処理を実行し、距離の近い頂点の情報を同一ページに書き込むことができる。これにより、図18〜図20で説明したクラスタリングを用いたグラフデータ再構築書き込み処理を高速且つ効率的に実行することが可能となる。
図22(d)は、各頂点番号(VTX ID)の特定の開始頂点(Start)における探索順(Order)のテーブル(ORDER LIST)である。このテーブルを用いることにより、次数の大きい頂点など、経路探索や中心性解析などで対象となりやすい頂点を基準とした探索順が分かるので、グラフデータ再構築書き込み処理を高速化することができる。
図22(e)は、グラフ全体の平均距離(Ave Dist)と、平均次数(Ave Degree)をの表(AVERAGE)を示す。これらの統計量を用いることで、同一ページに書き込む頂点間の距離の閾値や、次数の閾値を設定することができ、グラフデータ再構築書き込み処理を高速化することができる。
<G.他の実施例>
(1)サーバへの適用例
図23を用いて、本発明の第二の実施例であるサーバー(SVR)を説明する。
図23(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)等により互いに接続され、情報を通信することができる。
図23(b)は、不揮発性メモリDIMM(NVM−DIMM)の第一の実施例を示す。不揮発性メモリDIMM(NVM−DIMM)は、複数の不揮発性メモリ(NVM)のチップ(NVM chip)から構成され、不揮発性メモリDIMM制御回路(DIMM CTL)からの命令に応じて、情報処理回路(CPU)との間で、データを通信する。
図23(c)は、不揮発性メモリDIMM(NVM−DIMM)の第二の実施例を示す。不揮発性メモリDIMM(NVM−DIMM)は、複数の不揮発性メモリ(NVM)のチップ(NVM chip)及び不揮発性メモリ制御回路(Controller)から構成される。不揮発性メモリ制御回路(Controller)は、本願で開示される制御の一部もしくは全てを実行し、不揮発性メモリ(NVM)に対するデータの読み出し、書き込み、消去を行う。また、不揮発性メモリ制御回路(Controller)は、情報処理回路(CPU)との間で、データを通信する。
(2)不揮発性メモリ以外への適用例
図24は、グラフデータの書き込み先として、DRAMを適用した場合の一例を示す。DRAMは通常DIMMの形態で情報処理回路(CPU)に接続される。DIMMは複数のDRAM chipから構成され、データを高速に読み出す際は、複数のchipを並列動作させる。このため、図中Aで示される並列読み出しの単位内に、距離の近い頂点を書き込むことで、グラフ解析を高速化することができる。
<H.実施例の効果のまとめ>
以上説明した実施例によって得られる主な効果は以下の通りである。
大容量不揮発性メモリを使用することで、ビッグデータの解析などに必要な大規模なメモリ空間を安価に提供でき、かつ、ビッグデータ解析で解析されるデータの順番と、不揮発性メモリに記録されているデータの順番が異なる場合でも、データの無駄な読み出しを排除し、高速にビッグデータ解析することができる。すなわち、大規模グラフの高速処理を行うサーバにおいて、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制御回路

Claims (10)

  1. ホストとコントローラとメモリとを備えた情報処理装置であって、
    前記ホストは、グラフデータに対して処理を実行し、前記コントローラもしくは前記メモリとの間でデータ通信を行い、
    前記グラフデータは、少なくとも2つ以上の頂点の情報から構成され、
    前記頂点の情報は、当該頂点と関連性のある頂点のIDもしくは当該頂点と関連性のある頂点の情報が記録されている前記メモリ上の位置を含み、
    前記メモリは、データの読み出し単位を有し、
    前記コントローラは、前記メモリからのデータ読み出し及び前記メモリへのデータ書き込みを行い、
    前記ホストもしくは前記コントローラは、前記グラフデータに対して再構築書き込み処理を実行することにより、互いの距離が閾値よりも小さい前記頂点の情報を抽出し、抽出された互いの距離が閾値よりも小さい前記頂点の情報を、前記メモリの同一読み出し単位に書き込み
    前記距離は、最短経路探索における2つの頂点間を結ぶリンクの数を表すことを特徴とする情報処理装置。
  2. 前記再構築書き込み処理において、前記グラフデータの次数解析もしくは、前記グラフデータのクラスタリングを用いることを特徴とする、
    請求項1に記載の情報処理装置。
  3. 前記ホストもしくは前記コントローラは、前記再構築書き込み処理によって、付加情報を生成し、前記付加情報は、異なる2つの頂点間の距離、頂点ごとの次数、頂点ごとの探索順、当該グラフデータ全体の次数の分布、頂点クラストごとのクラスタ係数もしくは頂点ID、平均次数もしくは平均距離、のいずれか少なくとも1つを含むことを特徴とする、
    請求項1に記載の情報処理装置。
  4. 前記ホストもしくは前記コントローラは、前記再構築書き込み処理によって抽出された互いの距離が閾値よりも小さい前記頂点の情報を、前記メモリの異なるチップに書き込み、
    異なる前記チップの前記同一読み出し単位に書き込まれたデータを、同時並列に読み出すことができることを特徴とする、
    請求項に記載の情報処理装置。
  5. 前記ホストは、互いの距離が閾値よりも小さい複数の頂点の情報が含まれることを示すフラグを前記グラフデータに付加し、前記コントローラにデータ書き込み要求を発行することを特徴とする、
    請求項4に記載の情報処理装置。
  6. 前記コントローラは、前記グラフデータに付加された前記フラグを参照し、同じフラグが付加された前記グラフデータを、前記メモリの異なるチップに書き込み、
    異なる前記チップに書き込まれた前記グラフデータを、同時並列に読み出すことができることを特徴とする、
    請求項5に記載の情報処理装置。
  7. 前記メモリとして、NAND型フラッシュメモリ、相変化メモリ、ReRAMのいずれかを用いることを特徴とする、
    請求項1に記載の情報処理装置。
  8. ラフデータの書き込み装置であって、当該装置内にメモリを含み、前記メモリにグラフデータを書き込むことができ、前記メモリから前記グラフデータを読み出すことができ、
    前記グラフデータは、少なくとも2つ以上の頂点の情報から構成され、
    前記頂点の情報は、当該頂点と関連性のある頂点のIDもしくは当該頂点と関連性のある頂点の情報が記録されている前記メモリ上の位置を含み、
    前記メモリは、データの読み出し単位を有し、
    前記グラフデータに対して再構築書き込み処理を実行することにより、互いの距離が閾値よりも小さい前記頂点の情報を抽出し、抽出された互いの距離が閾値よりも小さい前記頂点の情報を、前記メモリの同一読み出し単位に書き込み、
    前記距離は、最短経路探索における2つの頂点間を結ぶリンクの数を表すことを特徴とする、
    グラフデータの書き込み装置。
  9. 前記再構築書き込み処理において、前記グラフデータの次数解析もしくは、前記グラフデータのクラスタリングを用いることを特徴とする、
    請求項記載のグラフデータの書き込み装置。
  10. 前記再構築書き込み処理によって抽出された互いの距離が閾値よりも小さい複数の前記頂点の情報を、前記メモリの異なるチップに書き込み、異なる前記チップの前記同一読み出し単位に書き込まれたデータを、同時並列に読み出すことを特徴とする、
    請求項に記載のグラフデータの書き込み装置。
JP2017521472A 2015-06-05 2015-06-05 情報処理装置およびグラフデータの書き込み装置 Expired - Fee Related JP6360628B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/066346 WO2016194224A1 (ja) 2015-06-05 2015-06-05 情報処理装置およびグラフデータの書き込み装置

Publications (2)

Publication Number Publication Date
JPWO2016194224A1 JPWO2016194224A1 (ja) 2018-02-08
JP6360628B2 true JP6360628B2 (ja) 2018-07-18

Family

ID=57441901

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017521472A Expired - Fee Related JP6360628B2 (ja) 2015-06-05 2015-06-05 情報処理装置およびグラフデータの書き込み装置

Country Status (2)

Country Link
JP (1) JP6360628B2 (ja)
WO (1) WO2016194224A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110149234B (zh) * 2019-05-27 2021-10-08 腾讯科技(深圳)有限公司 图数据压缩方法、装置、服务器及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5032602B2 (ja) * 2010-01-21 2012-09-26 株式会社東芝 認識装置

Also Published As

Publication number Publication date
WO2016194224A1 (ja) 2016-12-08
JPWO2016194224A1 (ja) 2018-02-08

Similar Documents

Publication Publication Date Title
US10969963B2 (en) Namespaces allocation in non-volatile memory devices
US9594524B2 (en) System and method for distributed computing in non-volatile memory
CN109791519A (zh) 具有集成计算引擎的非易失性存储***和本地快速存储器的优化用途
US11287978B2 (en) Data storage devices, having scale-out devices to map and control groups on non-volatile memory devices
CN107229417A (zh) 数据存储设备及其操作方法
US10216418B2 (en) Storage apparatus and method for autonomous space compaction
US10296250B2 (en) Method and apparatus for improving performance of sequential logging in a storage device
CN110007852A (zh) 基于逻辑区域的流分类
CN104575595B (zh) 非易失性随机存取的存储装置
CN104461387A (zh) 一种提高固态硬盘对未映射区域的读性能的方法
US11042328B2 (en) Storage apparatus and method for autonomous space compaction
CN103914483A (zh) 文件存储方法、装置及文件读取方法、装置
CN103488523A (zh) 一种页的访问方法和页的访问装置、服务器
CN102810116A (zh) 一种基于数据库连接的自动路由和负载均衡的方法及***
EP4202704A1 (en) Interleaving of heterogeneous memory targets
CN115756312A (zh) 数据访问***、数据访问方法和存储介质
JP6360628B2 (ja) 情報処理装置およびグラフデータの書き込み装置
CN115793957A (zh) 写数据的方法、装置及计算机存储介质
JP6100927B2 (ja) 情報処理装置
US9823862B2 (en) Storage system
US9507794B2 (en) Method and apparatus for distributed processing of file
EP3846037B1 (en) Storage device configured to support multi-streams and operation method thereof
US9183435B2 (en) Feature generalization using topological model
CN111026890A (zh) 基于索引表的图片数据存储方法、***、装置和存储介质
US10108377B2 (en) Storage processing unit arrays and methods of use

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171011

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180417

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180530

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20180612

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180622

R150 Certificate of patent or registration of utility model

Ref document number: 6360628

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees