JP2013254419A - 情報処理装置 - Google Patents

情報処理装置 Download PDF

Info

Publication number
JP2013254419A
JP2013254419A JP2012130641A JP2012130641A JP2013254419A JP 2013254419 A JP2013254419 A JP 2013254419A JP 2012130641 A JP2012130641 A JP 2012130641A JP 2012130641 A JP2012130641 A JP 2012130641A JP 2013254419 A JP2013254419 A JP 2013254419A
Authority
JP
Japan
Prior art keywords
memory
data
information processing
graph
cpu
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.)
Granted
Application number
JP2012130641A
Other languages
English (en)
Other versions
JP5931595B2 (ja
Inventor
Hiroshi Uchigaito
洋 内垣内
Kenzo Kurotsuchi
健三 黒土
Seishi Miura
誓士 三浦
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
Priority to JP2012130641A priority Critical patent/JP5931595B2/ja
Priority to US13/875,448 priority patent/US9099171B2/en
Publication of JP2013254419A publication Critical patent/JP2013254419A/ja
Priority to US14/799,795 priority patent/US9268486B2/en
Application granted granted Critical
Publication of JP5931595B2 publication Critical patent/JP5931595B2/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
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Human Computer Interaction (AREA)
  • Multi Processors (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

【課題】安価で大容量かつ高速に動作するメモリを有しグラフデータ処理に適した情報処理装置を提供する。
【解決手段】情報処理回路を有する情報処理サブシステムと、該情報処理サブシステムとデータ通信を行うメモリサブシステムとを備え、前記メモリサブシステムは、第一のメモリと、第二のメモリと、該第一及び第二のメモリよりも読み出し及び書き込みレイテンシが長い第三のメモリと、前記第一のメモリと第二のメモリと前記第三のメモリの間でデータ転送を制御するメモリコントローラとを有し、グラフデータは前記第三のメモリに保存され、該メモリコントローラは、前記グラフデータの一部であるデータブロックを解析し、該解析結果に基づき、前記処理の実行に必要な次のデータブロックを前記第三のメモリから前記第一もしくは第二のメモリへ転送するプレロード動作を繰り返し行い、同時に前記情報処理回路は、前記プレロード機能が実行されている転送先とは異なる第一もしくは第二のメモリからグラフデータを読み出してグラフ処理を行う。
【選択図】図1

Description

本発明は、情報処理装置に係り、特に、大規模なグラフデータの処理に適した情報処理装置に関する。
情報処理装置では、コンピュータのCPU(ホストシステム)がデータの処理を行う前に、予め必要なデータを応答速度の速いメモリに読み出すことで、データ処理におけるデータ要求に対する応答時間を大幅に短縮することができる。従来、データ処理におけるデータの応答時間の短縮の際には、ホストシステムがデータ処理を行っている間に、記憶装置のコントローラが、次にホストシステムが要求するデータのみを、予め記憶装置内の不揮発性メモリから記憶装置内のキャッシュメモリに転送する方法が採られていた(特許文献1参照)。
特表2009−539168号公報
大規模なデータの処理、例えば大規模なグラフ処理を行う際、グラフ処理を行うホストが大規模なメモリ空間を管理し、そのメモリ空間上に大規模なグラフデータを保存する必要がある。従って、大規模なグラフを高速に処理するためには、大規模で高速に動作するメインメモリが必要であった。
そこで本願の発明者等は本願に先立って、メインメモリに全てDRAMを用いた従来技術及び、特許文献1に示されたような記憶装置をメインメモリとして用いる方法に関して検討を行った。
メインメモリに全てDRAMを用いた従来技術では、先ずグラフ処理を行うホストのCPUが、処理対象となるグラフデータを外部記憶装置からダウンロードするか、もしくはグラフを作成し、メモリ空間に配置したDRAMへ保存する。このため、大きなデータサイズのグラフデータを処理する場合、メインメモリであるDRAMをグラフデータが収まる分だけ搭載する必要がある。
但し、DRAMを大規模に搭載したグラフ処理システムは、高価になる。
したがってグラフ処理システムを安価に構築するために、DRAMより安価なメモリを用いる方法が考えられる。
特許文献1に示されたような記憶装置をメモリ空間に配置することで、大規模で安価なメモリ空間を提供することは可能であるが、高速なグラフ処理を行う上で、以下の課題が生じる。
特許文献1に示されたような記憶装置をメモリ空間に配置してグラフ処理を行う場合、先ずグラフ処理を行うホストのCPUは、処理対象となるグラフデータを外部記憶装置からダウンロードするか、もしくはグラフデータを作成し、メモリ空間に配置された記憶装置へ保存する。
その後CPUは記憶装置内に保存されたグラフデータを利用し、グラフ処理を行う。記憶装置のコントローラはホストへデータをロードした後、ホストシステムがグラフ処理を行う間に、次に必要となるグラフデータのみを記憶装置内の不揮発性メモリから記憶装置内のキャッシュメモリに転送する。
ただし、記憶装置はメモリ空間に配置されるため、ホストはグラフ処理において次に必要とするグラフデータをホストのCPUのキャッシュメモリから取得する場合がある。この場合は、記憶装置が記憶装置内のキャッシュメモリに予め転送したグラフデータは、ホストから記憶装置には要求されない。したがって、次にホストから記憶装置にデータが要求された際は、要求されたデータは記憶装置内のキャッシュメモリに無いため、データを記憶装置内の不揮発性メモリから読み出して、ホストへ返す必要がある。
また、ホストから記憶装置に要求されるデータがホストCPUのキャッシュメモリにヒットせず、記憶装置内の不揮発性メモリから記憶装置内のキャッシュメモリに予め転送されたデータと一致していた場合においても、グラフ処理は一般にホストによるデータ処理の時間が短いため、次にホストが必要とするグラフデータを記憶装置内の不揮発性メモリから記憶装置内のキャッシュメモリに転送し終える前に、ホストがデータを記憶装置に要求してしまうことが考えられる。したがってこの場合も、データを記憶装置内の不揮発性メモリから読み出してホストへ返す必要がある。
不揮発性メモリからデータを読み出す時間はDRAMからデータを読み出す時間よりも長いため、特許文献1に示されたような技術を用いた場合、データをグラフ処理に要する時間が非常に長くなってしまうという課題が生じる。
このように、従来技術を採用した情報処理装置では、大規模グラフを処理する際に、安価で大容量なメモリ空間を提供できない、もしくは、グラフデータへのアクセスの高速化を実現できないという課題があった。
本発明の目的は、上記従来技術の課題を解決し、大規模なデータの処理に適した安価で大容量かつ高速に動作するメインメモリを有する情報処理装置を提供することにある。
本願において開示される発明のうち、代表的なものを示すと次の通りである。
情報処理サブシステムと、該情報処理サブシステムとデータ通信を行うメモリサブシステムとを備えた情報処理装置であって、前記情報処理サブシステムは、グラフ処理命令に従ってグラフの処理を行う情報処理回路を有し、前記メモリサブシステムは、第一のメモリと、第二のメモリと、該第一及び第二のメモリよりも読み出し及び書き込みレイテンシが長い第三のメモリと、前記第一のメモリと前記第二のメモリと前記第三のメモリ間でデータ転送を制御するメモリコントローラとを有し、前記グラフの処理の対象となるグラフデータは、グラフの各頂点に該各頂点を一意に特定するIDが割り当てられており、前記頂点の1つに割り当てられたIDが分かれば、該頂点と関係性を持つ他の頂点のIDがアドレス空間でどの場所にあるのか特定できるデータであり、複数のデータブロックから構成され、前記データブロックは、前記1つの頂点のIDを前記メモリコントローラによって解析することで判明するアドレスに対応する全データもしくはデータの一部であり、その中に少なくとも前記1つの頂点のIDが記録されており、前記メモリコントローラは、前記第三のメモリに、処理の対象となる前記グラフデータを格納する機能と、複数の前記データブロックを前記第三のメモリから前記第一もしくは前記第二のメモリへ転送するプレロード機能とを有し、前記メモリコントローラは該プレロード機能により、1つの前記データブロックAに含まれる少なくとも1つの前記頂点のIDを自律的に解析し、当該情報処理回路が次に必要とする少なくとも1つの前記データブロックBのアドレスを計算し、当該データブロックBを前記第三のメモリから前記第一のメモリもしくは前記第二のメモリへ転送し、続けて、以前に前記第三のメモリから前記第一もしくは前記第二のメモリへ転送した前記データブロックAもしくはBもしくはA及びBとは異なる前記データブロックCに含まれる少なくとも1つの前記頂点のIDを解析し、当該情報処理回路が次に必要とする少なくとも1つの前記データブロックDのアドレスを計算し、当該データブロックDを前記第三のメモリから前記第一もしくは前記第二のメモリへ転送し、以下同様に複数のデータブロックを前記第三のメモリから第一もしくは第二のメモリへ転送し、前記情報処理回路において、前記プレロード機能が実行されている前記データブロックの転送先とは異なる前記第一もしくは第二のメモリから、前記グラフデータを読み出し、前記処理命令に従って該グラフデータの処理を実行することを特徴とする情報処理装置。
本発明によれば、大規模グラフを処理する際に必要な、グラフデータへのアクセスの高速化を可能にする大規模なメモリ空間を安価に提供でき、かつ、その場合でもグラフデータが読み出し及び書き込みレイテンシが短いメモリに搭載されていた場合と同様の速度でグラフ処理を行うことができる。
本発明の第一の実施例を適用した実施の形態であるサーバーの全体構成の一例を示す構成図である。 図1のサーバー内の、メモリサブシステムの構成の一例を示す構成図である。 本発明の実施例を適用した実施の形態である情報処理システムの全体構成の一例を示す構成図である。 本発明の実施例を適用した実施の形態である情報処理システムの全体構成の他の例を示す構成図である。 第一の実施例のサーバーにおいて取り扱う、グラフの一例を示す説明図である。 第一の実施例のサーバーにおいて取り扱う、グラフの他の一例を示す説明図である。 第一の実施例のサーバーにおいて取り扱う、グラフのデータ形式の一例であるCSR形式を示す説明図である。 第一の実施例のサーバーにおいて取り扱う、グラフ処理アルゴリズムの一例である幅優先探索における、グラフデータ参照の順番を示す説明図である。 グラフデータをダウンロードする際の、サーバー全体における各情報処理装置間のデータの流れの一例を示す図である。 図1のサーバーにおける、グラフ処理における構成要素別の動作の概要を示す模式図である。 図5で示されたグラフデータにおける、グラフデータブロックの区分けを示す模式図である。 ダウンロードされたグラフデータを処理する際の、サーバーの各構成要素の動作の概要を示す図である。 図1のサーバーにおける、グラフデータをダウンロードする際の情報処理回路CPUの動作の一例を示すフローチャートである。 図1のサーバーにおける、各情報処理回路CPU(0) 〜CPU(m)とメモリサブシステムの、動作の一例を示す模式図である。 図1のサーバーにおける、メモリサブシステムにおいて行われるグラフデータのプレロード処理の1サイクル分の動作の一例を示す模式図である。 第一の実施例における、不揮発性メモリからDRAMへのグラフデータの転送における、データ抽出、アドレス付加動作の一例を示す模式図である。 グラフ処理において、必要となるデータのアドレスの導出の様子と、予め必要なアドレス順が決まっているデータ処理の様子を対比する模式図である。 図1のサーバーにおける、グラフデータが複数のメモリサブシステムにまたがった際の動作の一例を示す模式図である。 図1のサーバーにおける、グラフデータが複数のメモリサブシステムにまたがった際の動作の他の例を示す模式図である。 図1のサーバーにおける、グラフデータが複数のメモリサブシステムにまたがった際に、他のメモリサブシステムに送付されるデータの一例を示す模式図である。 第一の実施例における、情報処理回路のプレロードデータの読み出しの際の、メモリサブシステムの動作の一例を示すフローチャートである。 第一の実施例における、各情報処理回路のグラフ処理の間に行われる、不揮発性メモリからDRAMへのグラフデータの転送動作における、書き込み先DRAMの切り替え動作の一例を示す模式図である。 第一の実施例における、グラフ処理の結果の書き込み動作の一例を示すフローチャートである。 図1のサーバーにおける、不揮発性メモリからDRAMへのデータ転送量を動的変化にさせるメモリサブシステムの動作の一例を示すフローチャートである。
本発明の代表的な実施の形態によれば、情報処理装置は情報処理サブシステムと、該情報処理サブシステムとデータ通信を行うメモリサブシステムから構成され、前記情報処理サブシステムは、グラフ処理命令に従ってグラフの処理を行う情報処理回路を有し、前記メモリサブシステムは、第一のメモリと、第二のメモリと、該第一及び第二のメモリよりも読み出し及び書き込みレイテンシが長い第三のメモリと、前記第一のメモリと前記第二のメモリと前記第三のメモリ間でデータ転送を制御するメモリコントローラとを有し、前記グラフの処理の対象となるグラフデータは、グラフの各頂点に該各頂点を一意に特定するIDが割り当てられており、前記頂点の1つに割り当てられたIDが分かれば、該頂点と関係性を持つ他の頂点のIDがアドレス空間でどの場所にあるのか特定できるデータであり、複数のデータブロックから構成され、前記データブロックは、前記1つの頂点のIDを前記メモリコントローラによって解析することで判明するアドレスに対応する全データもしくはデータの一部であり、その中に少なくとも前記1つの頂点のIDが記録されており、前記メモリコントローラは、前記第三のメモリに、処理の対象となる前記グラフデータを格納する機能と、複数の前記データブロックを前記第三のメモリから前記第一もしくは前記第二のメモリへ転送するプレロード機能とを有し、前記メモリコントローラは該プレロード機能により、1つの前記データブロックAに含まれる少なくとも1つの前記頂点のIDを自律的に解析し、当該情報処理回路が次に必要とする少なくとも1つの前記データブロックBのアドレスを計算し、当該データブロックBを前記第三のメモリから前記第一のメモリもしくは前記第二のメモリへ転送し、続けて、以前に前記第三のメモリから前記第一もしくは前記第二のメモリへ転送した前記データブロックAもしくはBもしくはA及びBとは異なる前記データブロックCに含まれる少なくとも1つの前記頂点のIDを解析し、当該情報処理回路が次に必要とする少なくとも1つの前記データブロックDのアドレスを計算し、当該データブロックDを前記第三のメモリから前記第一もしくは前記第二のメモリへ転送し、以下同様に複数のデータブロックを前記第三のメモリから第一もしくは第二のメモリへ転送し、前記情報処理回路において、前記プレロード機能が実行されている前記データブロックの転送先とは異なる前記第一もしくは第二のメモリから、前記グラフデータを読み出し、前記処理命令に従って該グラフデータの処理を実行することを特徴とする。
以下、本発明の第一の実施例を、図面を参照しながら、詳細に説明する。
本実施例の情報処理装置は、情報処理サブシステムと、メモリサブシステムと、これらを接続するネットワークスイッチとから構成されている。情報処理サブシステムは、複数の情報処理回路(CPU)と、各情報処理回路(CPU)に接続されたDRAMから構成されている。各情報処理回路(CPU)に接続されたメモリサブシステムは、第一のメモリと、第二のメモリと、第三のメモリと、第一のメモリと第二のメモリと第三のメモリ間でグラフデータの転送を制御するメモリコントローラから構成されている。第三のメモリは、第一のメモリ及び第二のメモリよりも、読み出し及び書き込みレイテンシが長い。
前記第三のメモリはグラフデータを格納し、前記メモリコントローラは、前記第三のメモリから読み出した前記グラフデータの一部分である1つのデータブロックAを解析し、該解析結果に基づいて、前記グラフ処理の実行に必要なグラフデータの一部分である次の1つのデータブロックBを、前記第三のメモリから第一のメモリへ転送し、続けて、以前プレロードされたデータブロックAもしくはBもしくはA及びBとは異なるデータブロックCを解析し、該解析結果に基づいて、前記グラフ処理の実行に必要なグラフデータの次のデータブロックDを、前記第三のメモリから第一のメモリへ転送し、続けて同様に複数のデータブロックを前記第三のメモリから第一のメモリへ転送する。前記各情報処理回路(CPU)はプログラムを実行し、前記第二のメモリへ転送されたグラフデータを、前記ネットワークスイッチを介して読み出す。
本実施例では、本発明の第一のメモリ及び第二のメモリとしてDRAM、第三のメモリとして不揮発性メモリを用いており、複数のCPUがグラフ処理プログラムを実行するサーバーSVRの例、及び1つのCPUにおいてグラフ処理プログラムを実行する情報処理システムIPSの例を挙げて説明する。
<A.サーバーの構成>
まず、本発明の情報処理装置を適用した第一の実施例に係るサーバー(SVR) 100の構成について、図1〜図2を用いて説明する。
図1に、本発明を適用した第一の実施の形態であるサーバー(SVR)100の構成例を示す。サーバー(SVR)100は、複数の情報処理サブシステムIPSS (IPSS(0)〜IPSS(m)) 110と、それら全てに接続されたネットワークスイッチ(Switch) 120と、複数のメモリサブシステムMSS (MSS(0)〜MSS(n)) 130とから構成される。サーバー(SVR)100は、通信ネットワークを介して外部記憶装置(Storage)150と接続されている。m、nは自然数である。なお、サーバー(SVR)100は、ユーザーインターフェースとして、キーボードやディスプレイ等の入出力手段(図示略)を保有している。
以下、第一の実施例に係るサーバー100の構成要素の各々について説明する。
夫々の情報処理サブシステムIPSS 110は、情報処理回路(CPU) 111と、この情報処理回路(CP)に接続されたDRAM 112から構成される。情報処理サブシステムIPSS(0)〜IPSS(m)を構成する各情報処理回路(CPU)を、それぞれ情報処理回路CPU(0)〜CPU(m)と表す。各情報処理回路CPU(0)〜CPU(m)は、それぞれに1個以上のDRAMチップ112が接続されており、それぞれの情報処理回路と接続されたDRAMの間で互いにデータ通信を行う。
各情報処理回路CPU(0)〜CPU(m)は、お互い直接もしくはネットワークスイッチ120を介して接続されており、互いにデータ通信を行う。全ての情報処理回路111 (CPU(0)〜CPU(m))は、ネットワークスイッチ120を介して全てのメモリサブシステムMSS (MSS(0)〜MSS(n)) 130に接続されており、互いにデータ通信が可能である。
情報処理回路CPU(0)は、他の情報処理回路CPU(1)〜CPU(m)と同様に、グラフ処理プログラム(グラフ演算処理機能)を有する。また、情報処理回路CPU(0)は、各情報処理回路CPU(0)〜CPU(m)の情報処理を統括する。この情報処理回路CPU(0)は、外部記憶装置150と接続されており、互いにデータ通信を行う。
すなわち、情報処理回路CPU(0)は、固有の機能(プログラム)として、ユーザーインターフェースを介してグラフ処理に関する仕様を受け付ける機能、受け付けた仕様のグラフ演算処理を実行するために必要なデータを外部記憶装置150からサーバーに取り込む機能、各情報処理回路CPU(0)〜CPU(m)にグラフ演算処理のタスクを分散して処理させる機能、各情報処理回路CPU(0)〜CPU(m)にグラフ演算処理のために必要なデータを供給する機能、及び、分散処理されたグラフ処理の結果を取り纏め外部記憶装置150に記録しユーザーインターフェースを介して出力する機能等を備えている。
メモリサブシステムMSS(0)〜MSS(n)は、ネットワークスイッチ120を介してお互い接続されており、互いにデータ通信が可能である。また、メモリサブシステムMSS(0)〜MSS(n)は、それぞれ、メモリコントローラHyMC 131と1個以上の不揮発性メモリNVMチップ 132と1個以上のDRAMチップ 133から構成される。メモリコントローラHyMC 131は、このメモリコントローラHyMC と不揮発性メモリNVM 132及びDRAM 133の間でデータ通信を行う。
図2は、図1に示したサーバーSVR 100を構成する各メモリサブシステムMSS 130の詳細を示したものである。
メモリサブシステムMSS 130は、メモリコントローラHyMC 131と、不揮発性メモリNVM (NVM(0)〜NVM(j)) 132と、DRAM (DRAM (0)〜DRAM(i)) 133とから構成される。i、jは自然数である。
メモリコントローラHyMC 131は、コマンドデータバッファCMDBF 1311と、メモリアクセス制御回路DMAC 1312と、データバッファDBF 1313と、アドレス変換テーブルATT 1314と、プレロード制御ブロックPCB 1315と、不揮発性メモリ制御回路NVMC (NVMC(0)〜NVMC(j)) 1316と、DRAM制御回路DRAMC (DRAMC(0)〜DRAMC(i)) 1317とから構成される。以下に各々について説明する。
コマンドデータバッファCMDBF 1311は、ネットワークスイッチ120を介して、図1における情報処理回路CPU(0)〜CPU(m)及び他のメモリサブシステムと接続されており、それらの間で互いにデータのやり取りを行う。コマンドデータバッファCMDBF 1311は、メモリアクセス制御回路DMAC 1312とデータバッファDBF 1313に接続されており、それらの間で互いにデータ通信を行う。
データバッファDBF 1313は、ネットワークスイッチ120を介して、図1における情報処理回路CPU(0)〜CPU(m) 及び他のメモリサブシステムと接続されており、それらの間で互いにデータのやり取りを行う。データバッファDBF 1313は、コマンドデータバッファCMDBF 1311及びプレロード制御ブロックPCB 1315と接続されており、それらの間で互いにデータ通信を行う。
メモリアクセス制御回路DMAC 1312は、コマンドデータバッファCMDBF 1311、アドレス変換テーブルATT 1314、不揮発性メモリ制御回路NVMC(0)〜NVMC(j) 1316、及び、DRAM制御回路DRAMC(0)〜DRAMC(i) 1317と接続されており、それらの間で互いにデータ通信を行う。
アドレス変換テーブルATT 1314は、メモリアクセス制御回路DMAC 1312と、プレロード制御ブロックPCB 1315と接続されており、それらの間で互いにデータ通信を行う。
プレロード制御ブロックPCB 1315は、データバッファDBF 1313、アドレス変換テーブルATT 1314、不揮発性メモリ制御回路NVMC(0)〜NVMC(j) 1316、及び、DRAM制御回路DRAMC(0)〜DRAMC(i) 1317と接続されており、それらの間で互いにデータ通信を行う。
不揮発性メモリ制御回路NVMC(0)〜NVMC(j) 1316は、それぞれ不揮発性メモリNVM(0)〜NVM(j) 132に接続されており、不揮発性メモリからのデータ読み出し及び不揮発性メモリへのデータの書き込みを行う。また、不揮発性メモリ制御回路NVMC(0)〜NVMC(j) 1316は、メモリアクセス制御回路DMAC 1312と、プレロード制御ブロックPCB 1315に接続されており、それらの間でデータ通信を行う。
DRAM制御回路DRAMC(0)〜DRAMC(i) 1317は、それぞれDRAM(0)〜DRAM(i) 133に接続されており、DRAM 133からのデータ読み出し及びDRAMへのデータの書き込みを行う。DRAM制御回路DRAMC(0)〜DRAMC(i) 1317は、メモリアクセス制御回路DMAC 1312と、プレロード制御ブロックPCB 1315に接続されており、それらの間でデータ通信を行う。
<B.情報処理システムの構成>
次に、本発明の情報処理装置を適用した実施例に係る情報処理システムIPS について、図3〜図4を用いて説明する。
図3は、情報処理システムの一例として、情報処理サブシステムIPSS 110とそれに接続された1つのメモリサブシステムMSS 130とから構成される情報処理システムIPS(0) 200と、外部記憶装置150とを示したものである。以下に各々について説明する。
情報処理サブシステムIPSS(0) 110の内部の構成は、サーバーの構成における情報処理サブシステムの内部の構成と同じである。情報処理サブシステムIPSS (0) 110は、メモリサブシステムMSS(0) 130に接続されており、互いにデータ通信が可能である。情報処理回路CPU(0) 111は外部記憶装置150と接続されており、互いにデータ通信を行う。メモリサブシステムMSS (0) 130の内部の構成は、サーバーの構成におけるメモリサブシステムの内部の構成と同じである。
図4は、情報処理システムの他の例として、情報処理サブシステムIPSS (0) 110と、それらに接続された複数のメモリサブシステムMSS(0)〜MSS(n) 130と、から構成される情報処理システムIPS (0) 210と、外部記憶装置150を示したものである。以下に各々について説明する。
情報処理サブシステムIPSS(0) 110の内部の構成は、サーバーの構成における情報処理サブシステムの内部の構成と同じである。情報処理サブシステムIPSS(0) 110は、ネットワークスイッチを介してメモリサブシステムMSS(0)〜MSS(n) 130に接続されており、互いにデータ通信が可能である。情報処理回路CPU (0) 111は外部記憶装置150と接続されており、互いにデータ通信を行う。各メモリサブシステムMSS(0)〜MSS(n) 130の内部の構成は、サーバーの構成におけるメモリサブシステムの内部の構成と同じである。
以下は、本発明を適用した第一の実施形態であるサーバーの機能や動作について、を例に挙げて説明する。
まず、図5〜図7を用いて、本発明のサーバーで取り扱うグラフの例とそのグラフデータのデータ形式の例を説明する。
<C.グラフとグラフデータのデータ形式>
図5は、本サーバーで取り扱うグラフの一例を示す図である。
ここで例として挙げるグラフは、グラフの頂点(Vertex)に各頂点を一意に特定する番号が割り当てられており、各頂点同士が一本のグラフの辺(Edge)によって直接繋がれている、もしくは繋がれていない、という2種類の関係性を持つこととする。
図6に示されているように、より一般的には、本サーバーが取り扱うことが可能なグラフは、グラフの各頂点に頂点を一意に特定する情報が付加されているものであればよく、また関係性の種類の数も2種類に限定されない。
図6の例では、各頂点はソーシャルネットワークの各ユーザーを表し、頂点を一意に特定する情報は、ユーザーのIDや名前や趣味等であり、関係性の種類は高校の友人や、大学の友人や、兄弟等である。
次に、本サーバーで取り扱うグラフデータのデータ形式の一例を示す。
図7は、図5に示されたグラフにおける、頂点同士のつながりが表現可能なデータ形式の一つである、CSR(Compressed Sparse Row)形式を示す。CSR形式においては、グラフデータは、配列Aと配列Bによって表される。配列Aは、頂点番号の順に、それぞれの頂点が繋がっている頂点の番号を並べたものであり、配列Bは、配列Aの頂点番号の切り替わりの位置を表現するものである。
以下では、図5に示されたグラフを例として説明する。
まず、図5におけるグラフにおいて、頂点番号1と繋がる頂点の番号は4、5、7、9であるため、図7に示される配列Aの初めに4、5、7、9が格納される。それらの数字に続いて、頂点2と繋がる頂点の番号5が配列Aに格納される。また、頂点の番号4、5、7、9、5が書かれた配列Aのみでは、頂点1と繋がる頂点の番号と頂点2と繋がる頂点の番号が切り替わる場所が分からない。そこで、配列Bには、配列Aにおいて頂点1と繋がる頂点の番号が開始する位置1と、頂点2と繋がる頂点の番号が開始する位置5とが格納される。
以上のような規則に基づき、配列A及び配列Bを作成すると、図7のようになる。ここで、配列Aの上に書かれたa、b、c、…で示される配列Aの部分領域は、それぞれ順に頂点1、2、3、…と繋がる頂点の番号を示した領域であることを示す。
なお、本サーバーで取り扱うグラフデータのデータ形式はCSR形式に限定されない。他のデータ形式としては、例えば隣接行列形式、連結リスト形式や、頂点に関する情報に加えて繋がりの種類や強度に関する情報が格納されるデータ形式等が挙げられる。
本サーバーで取り扱うグラフデータのデータ形式は、一般的には以下の(1)〜(5)で定義されるが、少なくとも(1)を満たすデータ形式で書かれていれば、本発明は適用可能である。
(1)各頂点に各頂点を一意に特定するIDが割り当てられており、頂点に割り当てられたIDが分かれば、その頂点と関係性を持つ他の頂点のIDがアドレス空間でどの場所にあるのか特定できる。
(2)各頂点を一意に特定するIDが分かれば、その頂点に付随する情報がアドレス空間でどの場所にあるのか特定できる。
(3)各頂点の間をつなぐ関係性の種類を一意に表現できるIDを割り当てることが可能であり、関係性の強度を数値化して表現することが可能である。
(4)頂点に割り当てられたIDが分かれば、その頂点が共有する関係性の種類や強度に関する情報がアドレス空間でどの場所にあるのか特定できる。
(5)関係性の種類を一意に表現するIDが分かれば、その関係性に付随する情報がアドレス空間でどの場所にあるのか特定できる。
次に、本サーバーで取り扱うグラフ処理アルゴリズムの例を、図8を用いて説明する。図8は、グラフ処理アルゴリズムの一例である幅優先探索における、グラフデータ参照の順番を示す説明図である。
<D.グラフ処理アルゴリズムの流れ>
グラフ処理アルゴリズムの一例として、グラフ上のあるグラフ頂点から別のグラフ頂点までの、グラフ上での最短経路を求める問題を、幅優先探索アルゴリズムで処理した場合を挙げる。
ここでは、図5に示されているグラフが図7に示されるCSR形式で保存されている場合を考える。
グラフ処理を行いたいサーバーのユーザーが、キーボード等のユーザーインターフェースを通じて、最短経路を求めたい2頂点、すなわち、始点(Start)と終点(Goal)、を特定する情報を、図1の情報処理回路CPU(0)に与える。すると、情報処理回路CPU(0)は幅優先探索アルゴリズムにしたがって、次のような順番でグラフデータを参照し、グラフ処理を進める。なお、以下のグラフ処理において、情報処理回路 CPU(0)は、必要に応じて、そのグラフ処理の計算量等に基づき、その処理を各情報処理装置CPU(1)〜CPU(m)に、適切に分担させて割り振るものとする。すなわち、CPU(0)が、グラフ処理の全体を統括し、このCPU(0)を含む各CPU(情報処理回路CPU(0)〜CPU(m))により、グラフ処理が進められる。
ここで、図8に示されたように経路の始点(Start)は5番の頂点であり、終点(Goal)は17番の頂点であるとする。まず、情報処理回路CPU(0)は、各情報処理回路CPU(0)〜CPU(m)のいずれかに、配列Bの5番目の要素と6番目の要素を参照するように指示する。指示された情報処理回路をCPU(1)とする。CPU(1)は、配列Bの5番目の要素と6番目の要素を参照し、図7の配列Aの12番目の要素から14番目の要素まで(eの領域)に、5番の頂点に繋がる頂点の番号が書かれていることを知る。このeの領域を1つのデータブロックと呼ぶ。データブロックとは、一般には1つの頂点のIDを解析することで判明するアドレスに対応する全データもしくはデータの一部であるが、CSR形式で書かれたグラフデータの場合は、1つの頂点に繋がる頂点の番号を格納した情報である。その結果から、CPU(1)は配列Aのeの領域を参照するように、必要に応じて情報処理回路CPU(0)を介して、各情報処理回路CPU(0)〜CPU(m)のいずれかに、指示する。指示された情報処理回路をCPU(2)とする。CPU(2)は配列Aのeの領域を参照し、5番の頂点に繋がる頂点の番号が1、2、8であることを知る。
次にCPU(2)は、5番の頂点が参照済みであることと、次に参照すべき頂点の番号が1、2、8であることと、1、2、8の頂点より1つ始点に近い側の頂点が5番であることを、必要に応じてCPU(0)に通知し、またCPU(0)もしくはCPU(2)に接続された情報記憶装置(図1におけるDRAMやメモリサブシステム)に格納する。
CPU(0)、もしくはCPU(2)は、次に参照すべき頂点の番号を参照し、1番、2番、8番の各頂点に対応する配列Bの要素を参照するように、幾つかのCPUに指示する。以下の動作は、幾つかのCPUに分散されて処理が行われるが、開始頂点5番からの動作と同様の処理が行われる。
図8の破線の丸で囲まれた番号は、CPUによってデータ処理される頂点の順番を表している。
以下、同様に配列A及び配列Bを次々と参照し、終点の17番の頂点(Goal)の一つ手前の頂点が参照された時点で、最短経路が判明し、このアルゴリズムは終了する。
以上、最短経路探索問題を幅優先探索法で解析する例を挙げたが、本サーバーで取り扱うグラフ処理アルゴリズムは以上の例に限定されるものではなく、最短経路探索における深さ優先探索やダイクストラ法、ページランク計算における冪乗法、大規模データベースの検索及びデータ抽出等も含まれる。
例えば、深さ優先探索では、データ処理される頂点の順番が、図8の頂点5、1、4、16、7、13、12、9、2、8、10、−のようになる。
以下に、本サーバーがグラフ処理を行う際のサーバーの動作を、図9〜図24を用いて説明する。
<E.グラフ処理における本サーバーの動作>
(1)サーバーの動作の全体概要
まず、本サーバーがグラフ処理を行う際のサーバーの動作の概要を、図9〜図13を用いて説明する。なお、それぞれの動作の詳細は以下の(2)〜(6)において説明する。
本サーバーの動作は、グラフデータのダウンロード動作、メモリコントローラHyMCによるグラフデータのプレロード動作、情報処理回路CPUによるグラフデータの読み出し動作、グラフ処理結果の書き込み動作、プレロードの最適化動作から構成される。以下簡単に各動作の概要を述べる。
まず、サーバーにおけるグラフデータのダウンロード動作について説明する。まず情報処理回路CPU(0) は、サーバー100の外部に存在する情報記憶装置150から、各情報処理回路(CPU (0) 〜CPU(m))及びメモリコントローラHyMC 131経由でグラフ処理の対象となる全グラフデータ(図10:All data)をダウンロードし、メモリサブシステムMSS(0) 〜MSS(n)の不揮発性メモリNVM 132に書き込む(図10のdata Aとdata B)。
ダウンロード時のデータフローは図9の黒矢印によって示されている。図9に示したように、各CPUの管理するメモリ空間300には、当該CPUに直接接続されたIPSS110内のDRAMと、各MSS130内に配置された不揮発性メモリNVM及びDRAMとが存在する。グラフ処理の対象となる全グラフデータ(All data)が、情報記憶装置150から1つのメモリ空間300内にダウンロードされる。
次に、メモリコントローラHyMCによるグラフデータのプレロード動作について、図10、11を用いて説明する。
ダウンロード動作の後、まず各情報処理回路CPUは、グラフ処理において次に必要となるデータのアドレスをメモリコントローラHyMC 131が自律的に計算するために必要なデータ(図10:Data 0)及び必要に応じてアルゴリズム等を各々対応するメモリコントローラHyMCに伝える。
次に、開始頂点を含むグラフデータを格納する不揮発性メモリNVMを管理するメモリコントローラHyMC 131は、対応するCPUから受け取ったデータを処理し(図10:Cal 1)、グラフ処理においてCPUが次に必要とする頂点の情報を含むデータブロック(図10:Data 1)のアドレスを求める。ここで、データブロックとは、1つの頂点番号をメモリコントローラによって解析することで判明するアドレスに対応する全データもしくはデータの一部であり、その中には少なくとも1つの頂点番号の情報が含まれている。すなわち、データブロックの区分のされ方は、グラフデータのデータ形式に依存する。次にメモリコントローラは、Data 1を不揮発性メモリNVM 130から読み出し、対応するメモリサブシステム内のDRAM 133もしくは対応する情報処理回路CPUに接続されたDRAM 112へ転送する(図10:To M1とTo D1)。このようなグラフデータの転送動作をプレロード動作と呼ぶ。
図7のようなCSR形式で記述されたグラフデータにおいては、データブロック(Data 0, Data 1など)をグラフ上で表現すると、図11に示されたような区分になる。これらのデータブロックをどのような順番でプレロード動作によって不揮発性メモリNVM130からDRAM133へ転送するかは、グラフ処理のアルゴリズムに依存するが、この順番は必要に応じてメモリコントローラによるプレロード動作の開始前に情報処理回路CPUからメモリコントローラHyMCに伝えられる。
例えば幅優先探索アルゴリズムによってグラフ処理を行う場合は、メモリコントローラHyMC 131は、対応するCPUから受け取ったデータを処理したのち(図10:Cal 1)、不揮発性メモリNVM 130の1つのデータブロック(Data 1)に含まれる1つの頂点(番号1)の番号を自律的に解析し、情報処理回路CPUが次に必要とする1つのデータブロック(Data 2)のアドレスを計算し、このデータブロック(Data 2)をNVM 130からDRAMの1つへ転送し、続けて、以前にNVM 130からDRAM 133へ転送したデータブロック(Data 1)に含まれる他の頂点(番号2、8)の番号を解析し、情報処理回路が次に必要とする1つのデータブロック(Data 3)のアドレスを計算し、このデータブロック(Data 3)をNVM 130からDRAMの1つへ転送する。以下同様にして、複数のデータブロックをNVM 130からDRAMの1つへプレロードする。
一方、深さ優先探索アルゴリズムによってグラフ処理を行う場合は、メモリコントローラHyMC 131は、対応するCPUから受け取ったデータを処理したのち(図10:Cal 1)、不揮発性メモリNVM 130の1つのデータブロック(Data 1)に含まれる1つの頂点(番号1)の番号を自律的に解析し、情報処理回路CPUが次に必要とする1つのデータブロック(Data 2)のアドレスを計算し、このデータブロック(Data 2)をNVM 130からDRAMの1つへ転送し、続けてデータブロック(Data 2)に含まれる頂点(番号4)の番号を解析し、情報処理回路が次に必要とする1つのデータブロック(Data 4)のアドレスを計算し、このデータブロック(Data 4)をNVM 130からDRAMの1つへ転送する。以下同様にして、複数のデータブロックをNVM 130からDRAMの1つへプレロードする。
また、グラフ処理において情報処理回路CPU がData 1の次に必要とするデータブロックData 2が他のメモリコントローラHyMC131の管理する不揮発性メモリNVMに存在する場合は、後述するグラフデータが複数のメモリサブシステムに跨った場合の動作を行い、Data 2を不揮発性メモリNVM 132から読み出し、Data 2に対応するメモリサブシステム内のDRAM 133もしくは情報処理回路CPUに接続されたDRAM 112へ転送する(図10:To M 2とTo D 2)。
以下同様に、各情報処理回路CPU がグラフ処理の際に必要とするグラフデータブロックを、各々対応するメモリコントローラHyMCは順番に不揮発性メモリNVMから、メモリサブシステム内のDRAMもしくは対応する情報処理回路CPUに接続されたDRAMへ転送する。
不揮発性メモリNVM132からDRAM (133, 112) へ転送したデータ量が一定量に達する(Data nまでのデータ転送が終わる)と、メモリコントローラHyMCは、プレロードされたデータ量が一定量に達したことを情報処理回路CPU(0)へ伝える(図10:Fin 1)。
このFin 1を受け、情報処理回路CPUはグラフ処理を開始するが、DRAM切り替え動作の後、このグラフ処理の間も並行して、メモリコントローラHyMCによるプレロード動作は行われる。グラフ処理において必要となるデータブロックが全てプレロードし終わると、メモリコントローラはプレロード終了を情報処理回路CPUに伝える(Fin 2)。
図12の、Graph pre−loading として示した区間は、以上のプレロード動作を表す。メモリコントローラHyMCは、自律的に計算したグラフデータのアドレスに基づいて、NVM 132からグラフ処理に必要なグラフデータを読み出し(READ)、DRAM 133, 112へ書き込む(WRITE)処理を繰り返し、Fin signal を情報処理回路CPUに通達する。その後、情報処理回路CPUによるグラフ処理と並行して、メモリコントローラHyMCによるプレロード動作は続けられる(graph pre−loading during graph analysis)。
次に、情報処理回路CPUによるグラフ処理における、グラフデータの読み出し動作について説明する。
メモリコントローラHyMCからのFin 1を受け、情報処理回路CPU(0)はグラフ処理(Graph analysis)を開始する(Start)。
まず、情報処理回路CPU(0)は、グラフ処理の初めのステップ(Step 1)を処理するように、情報処理回路CPU(0)〜CPU(m)のいずれかに指示を送る。指示された情報処理回路CPUがCPU(1)であるとする。情報処理回路CPU(1)は、グラフ処理の初めのステップ(Step 1)に必要なデータブロック(Data 1)がCPU(1)直下のDRAM 112に存在する場合、CPU(1)はData 1を直下のDRAM 112から直接読み出し、Data 1がメモリサブシステム内のDRAM 133に存在する場合、CPU(1)は対応するメモリコントローラHyMCにデータ要求を送り(Req 1)、要求を受けてメモリコントローラHyMCはメモリサブシステム内のDRAM 133からData 1をCPU(1)に転送する(To H1)。
情報処理回路CPU(0)もしくはCPU(1)は、Data 1を用いてグラフ処理のStep 1を処理後、グラフ処理の次のステップ(Step 2)に必要となるData 2を処理する指示をData 1の際と同様に情報処理回路CPU(0)〜CPU(m)のいずれかに指示を送る。指示されたCPUは、Data 1の際と同様に直下のDRAM 112もしくは、対応するData 2を格納したメモリサブシステム内のDRAM 133から読み出す。
情報処理回路CPU がData 1, Data 2を順番に読み出す間、メモリコントローラHyMCは、情報処理回路CPU が必要とするデータData (n+1), Data (n+2),… を不揮発性メモリ 132からDRAM 133へ転送する。
このようにして、1つのメモリ空間300内において、大規模なグラフデータをメモリサブシステム内の不揮発性メモリNVM 132に格納しながら、情報処理回路CPU はグラフ処理において必要なデータを常にDRAM (112, 133)から読み出すことが可能となる。
図12のGraph analysisの区間の処理は、図10の(Start)以降のグラフ処理(Graph analysis)に相当する。この区間において、メモリコントローラHyMCによってプレロードされたグラフデータがDRAM133, 112から読み出され(READ)、CPU に転送される。そして、CPUにおいてグラフ処理(Graph analysis)が(Step 1)、(Step 2)と順次実行される。また、CPUでグラフ処理が実行されている間も、並行してメモリコントローラHyMCは、CPUが将来必要とするグラフデータをNVM 132からDRAM 133, 112へプレロードする(graph pre−loading during graph analysis)。
最後に、グラフ処理結果の書き込み動作及びプレロードの最適化動作について説明する。
情報処理回路CPUによるグラフ処理の間、グラフ処理の結果が必要に応じてメモリサブシステムに格納される。その際、グラフ処理の結果は一旦メモリサブシステム内のDRAM内にアドレスを付加して一定量保存され、まとめて不揮発性メモリに書き込みが行われる。
また、情報処理回路CPUによるグラフ処理中、メモリサブシステムは情報処理回路CPUによるグラフ処理の速度とプレロード速度を計測及び比較し、プレロード速度を動的に変化させる。また、グラフ処理後、再び同じアプリケーションによるグラフ処理が行われた際に、グラフ処理が高速に行われるように、プレロード速度やグラフ処理前のプレロードデータ量を最適化する。
このようにして、1つのメモリ空間内に、読み出し及び書き込みレイテンシが異なる2種類のメモリ、換言すると価格の異なる2種類のメモリを組み合わせて配置することで、大規模グラフを処理する際に必要な大規模なメモリ空間を安価に提供することができる。この場合でも、グラフデータが読み出し及び書き込みレイテンシが短いメモリに搭載されていた場合と同様の速度で、CPUはグラフ処理を行うことができる。
次に、図9〜図12で説明したサーバーの動作の、それぞれの詳細を以下(2)〜(6)において説明する。
(2)グラフデータのダウンロード時の動作
グラフデータのダウンロード時における動作を、図9及び図13を用いて説明する。
図13は、図9で説明した、グラフデータをダウンロードする際の情報処理回路CPU(0) 〜CPU(m)の動作の一例を示すフローチャートである。サーバー100のユーザーからのグラフ処理命令に従って、情報処理回路CPU(0) 〜CPU(m)は、外部記憶装置150からグラフデータを全てメモリサブシステムMSS(0) 〜MSS(n)にダウンロードする(Step 1)。
その際、情報処理回路CPU(0) 〜CPU(m)もしくは各メモリサブシステムに存在するメモリコントローラHyMCがグラフのデータ形式を読み(Step 2)、データ形式が前述の本サーバーで取り扱うグラフデータのデータ形式((1)〜(5))ではなかった場合、情報処理回路CPU(0) 〜CPU(m)もしくは各メモリサブシステムに存在するメモリコントローラHyMCがグラフデータを改変する(Step 3)。
ダウンロードされたグラフデータがメモリサブシステムMSS(0)〜MSS(n)に保存される際、各メモリサブシステムに存在するメモリコントローラHyMCは、自身のメモリサブシステムに割り当てられたグラフデータを不揮発性メモリNVM(0) 〜NVM(j)に保存する(Step 4)。
(3)メモリコントローラHyMCによるグラフデータのプレロード動作
(3−1)動作の全体概要
図14は、メモリコントローラHyMCによるグラフデータのプレロード動作の全体概要の一例を示す模式図である。
メモリコントローラHyMCによるグラフデータのプレロード動作は、情報処理回路CPUによるグラフ処理の前及びグラフ処理中行われ、(One cycle of preload)の繰り返しから構成される。
まず、プレロード動作の開始前、情報処理回路CPU(0)〜CPU(m)は、メモリコントローラHyMCが不揮発性メモリ内のグラフデータを参照することで、グラフ処理において次に必要なデータのアドレスを自律的に計算するために必要な情報及びアルゴリズムを、ネットワークスイッチSwitchを通じてメモリサブシステムへ送る。グラフ処理において次に必要なデータのアドレスを計算するために必要な情報及びアルゴリズムはデータバッファDBFへ保存される(Data to DBF)。
メモリコントローラHyMCが不揮発性メモリ内のグラフデータを参照し、グラフ処理において次に必要なデータのアドレスを自律的に計算するために必要な情報及びアルゴリズムとしては、具体的には、最短経路探索問題であれば経路の始点と終点、データ参照の順番と、データ値と論理アドレスとの対応関係、グラフ処理を行うアプリを特定する情報等が挙げられる。
メモリコントローラHyMCがデータ参照の順番など、CPU側で行うグラフ処理アルゴリズムの一部をあらかじめ知っていた場合は、メモリサブシステムに送られる前記情報及びアルゴリズムは上記の例より少なくてもよい。
また、前記情報及びアルゴリズムがデータバッファDBFへ保存された後、プレロード制御ブロックPCBは、グラフデータのプレロード処理を開始する(Preload)。
プレロード制御ブロックPCBは、プレロードデータが一定量DRAMへ転送された後、その旨を情報処理回路CPU(0)〜CPU(m)に送信する(Preload fin 1)。必要に応じて、プレロード開始の際、プレロード制御ブロックPCBは、Preload fin 1の通知があるまでグラフ処理を待機する要求を、情報処理回路CPU(0)〜CPU(m)に送る。
情報処理回路CPU(0)〜CPU(m)は、Preload fin 1をプレロード制御ブロックPCBから受けてから初めて、グラフ処理を開始する(Graph analysis)。
また、プレロード制御ブロックPCBは、Data to DBFと不揮発性メモリNVMに保存されたデータを基にして、グラフ処理において最後に必要となるデータブロックがプレロードされた後、プレロード終了通知を情報処理回路CPU(0)〜CPU(m)に通知する(Preload fin 2)。
(3−2)プレロード処理の1サイクル分の動作の詳細
以下、図15を用いて、メモリコントローラによるグラフデータのプレロード動作の詳細を示す。図15は、図14のpreloadで示したプレロード処理の1サイクル分の動作(One cycle of preload)を示す模式図である。
グラフデータのプレロード処理の開始時、まずプレロード制御ブロックPCBは、データバッファDBFに保存されたデータを参照する(Ref 1)。
この参照によって、プレロード制御ブロックPCBは初めに必要となるグラフデータの一部分であるグラフデータブロック0の論理アドレスを特定する。
次に、プレロード制御ブロックPCBは、アドレス変換テーブルATTを参照する(Ref 2)。
この参照によって、プレロード制御ブロックPCBは初めに必要となるグラフデータブロック0の物理アドレスを特定する。
プレロード制御ブロックPCBは、初めに必要となるグラフデータブロック0の読み出し要求を不揮発性メモリ制御回路NVMCに送る(Req 1)。
不揮発性メモリ制御回路NVMCは、要求されたグラフデータブロック0を含むページを不揮発性メモリNVMから読み出して、プレロード制御ブロックPCBに送る(Data 1)。
プレロード制御ブロックPCBは、送られたデータの書き込み要求を、DRAM制御回路DRAMC(0)に送り(Req 2)、DRAM制御回路DRAMC(0)は送られた要求を基にDRAM(0)にグラフデータを保存する(Data 2)。
また、不揮発性メモリNVMはデータ転送サイズがページ単位もしくはセクター単位と決められているため、NVMから読み出したグラフデータが全て次に必要なグラフデータブロックであるとは限らない。このため図16に示されているように、プレロード制御ブロックPCBは、NVMからデータをページ単位もしくはセクター単位で読み出した後(Step 1)、必要に応じて読み出したデータを、CPUがメモリサブシステムへ要求するデータサイズ単位に分割する(Step 2)。分割されたデータのうち、CPUが必要としないものは削除する(del)。また、分割されたデータはそれぞれのデータに対応した論理アドレスが付加され(Step 3)、DRAMへ転送される(Step 4, 図15(Data 2)に対応)。
その後、プレロード制御ブロックPCBは、アドレス変換テーブルATTを更新する(Update 1)。またプレロード制御ブロックPCBは、データ転送量をカウントする。
プレロード制御ブロックPCBは、必要に応じて、データバッファDBFに保存されたグラフデータのプレロード処理を進めるために必要な情報を更新する(Update 2)。グラフデータのプレロード処理を進めるために必要な情報とは、幅優先探索におけるグラフの最短経路探索問題の例では、次にプレロードする頂点番号のリストや、プレロード済みの頂点番号のリストである。特に、幅優先探索におけるグラフの最短経路探索問題の例では、現在探索している深さの頂点番号を格納する配列1と、次に探索する深さの頂点番号を格納する配列2をデータバッファDBF上で管理する必要がある。
現在探索している深さの頂点番号を全てプレロードし終えた後、配列1と配列2の役割を入れ替える。
また、グラフデータをプレロードする際は、プレロード済み頂点番号リストを参照し、プレロード済みの頂点番号は、次に探索する深さの頂点番号を格納する配列に格納をしない。
以上をまとめると、プレロード処理の1サイクル分の動作(One cycle of preload)は以下のようになり、プレロード処理時においては、One cycle of preloadの動作が繰り返される。
(a) プレロード制御ブロックPCBはNVMから読み出されたデータとデータバッファDBFに保存されたデータを参照(Ref 1)し、次に必要となるデータの論理アドレスを特定する。
(b) プレロード制御ブロックPCBはアドレス変換テーブルATTを参照(Ref 2)し、次に必要となるデータの物理アドレスを特定する。
(c) プレロード制御ブロックPCBは、次に必要となるグラフデータの読み出し要求を不揮発性メモリ制御回路NVMCに送る(Req 1)。
(d) 不揮発性メモリ制御回路NVMCは要求されたデータを不揮発性メモリNVMから読み出して、プレロード制御ブロックPCBに送る(Data 1)。
(e) プレロード制御ブロックPCBは送られたデータの書き込み要求をDRAM制御回路DRAMC 0に送る(Req 2)。
(f) DRAM制御回路DRAMCは送られた要求を基にDRAM 0にグラフデータを保存する(Data 2)。
(g) 必要に応じてDRAM に保存されたグラフデータを、各CPUによるデータ要求単位に分割し、次に必要なデータブロックを含む部分のみを抽出し、分割されたデータに論理アドレスを付加して、各CPUによるデータの参照順にDRAMに保存する(Data 2)。
(h) プレロード制御ブロックPCBはアドレス変換テーブルATTを更新する(Update 1)。
(i) プレロード制御ブロックPCBはデータ転送量をカウントする。
(j) プレロード制御ブロックPCBは、必要に応じて、データバッファDBFに保存されたグラフデータのプレロード処理を進めるために必要な情報を更新する(Update 2)。
以上(a)〜(j)までの処理を、図14に示されているように、DRAM へ書き込まれるデータが一定量になるまで繰り返したのち、プレロード制御ブロックPCBは情報処理回路CPU(0)〜(m)へDRAMのプレロードデータが一定量に達したことを伝える(Preload fin 1)。
このデータ量は、各CPUからグラフ処理前に通知されてデータバッファDBFに保存されているか、もしくは予め決められており、そのデータ量を各CPU、各プレロード制御ブロックPCBは知っているものとする。
または、プレロード制御ブロックPCBがデータバッファDBFを参照した際、現在グラフ処理を行っているアプリと同じアプリが過去に実行された際に算出された、適切なデータのプレロード量が保存されていた場合、その読み出された適切なプレロード量を上記一定量とする。
プレロード制御ブロックPCBはPreload fin 1を通知後、情報処理回路CPU(0)〜(m)によるグラフ処理と並行して、One cycle of preloadの繰り返しから構成されるプレロード動作を続ける。その際、プレロード動作におけるグラフデータブロックの転送先となるDRAMと、情報処理回路CPU(0)〜(m)によるグラフデータの読み出し先となるDRAMは別のDRAM(同じchipの異なる物理領域、異なるchip、異なるDIMM等)を用いる。
また、プレロード制御ブロックPCBは、Data to DBFと不揮発性メモリNVMに保存されたデータを基にして、グラフ処理において最後に必要となるデータブロックがプレロードされた後、プレロード終了通知を情報処理回路CPU(0)〜CPU(m)に通知する(Preload fin 2)。
以上、グラフデータが有する大きな特徴は、データダウンロード時には、情報処理回路CPUによるグラフデータブロックのアクセス順が決まらないということである。全体のグラフデータが同じでも、データブロックのアクセス順は初期条件(上記例では開始頂点)等によって変わりうる。したがって、図17のCase Aに示されているように、初期条件及びデータブロックの値を総合しなければ、次に必要なデータブロックのアドレスが特定できない。したがって、グラフデータは動画のストリーミングなどにみられるような、初めからデータのアクセス順が決まっている場合(図17:Case B)とは本質的に異なり、そのようなデータを対象としたデータアクセス高速化技術では、本グラフデータ処理の高速化は実現できない。
(3−3)複数のメモリサブシステムにグラフデータがまたがって存在していた場合のプレロード動作
図18及び図19は、グラフデータが複数のメモリサブシステムにまたがった際の動作の例を示す模式図である。
上記プレロード動作(3−1)、(3−2)において、複数のメモリサブシステムにグラフデータがまたがって存在していた際の動作は、図18に示した動作a, 図19に示した動作b,のいずれかをとるものとする。
(動作a) 図18に示されているように、メモリコントローラHyMC 0が上記プレロード動作(3−1)、(3−2)を行っている際(Preload 1)、次に必要となるグラフデータブロックが同じメモリサブシステムに存在する不揮発性メモリ NVMに存在しない場合、メモリコントローラHyMC 0におけるプレロード制御ブロックPCBは、グラフデータがまたがった際に必要なデータを、メモリコントローラHyMC 0に繋がれたネットワークスイッチSwitchを介して、他のメモリサブシステムのメモリコントローラHyMC 1に転送する(Send data)。
すなわち、図18のSend dataは、図9に示したように、グラフデータがメモリ空間300の複数のメモリサブシステムMSSにまたがった際に、今までプレロード動作を行っていたメモリコントローラHyMC(0)が、別のメモリサブシステムMSSに属するメモリコントローラHyMC(1)においてプレロード動作を進めるために必要なデータを、必要に応じて不揮発性メモリ NVMもしくはMSS内のDRAMから読み出し、ネットワークスイッチSwitchを介して、他のメモリサブシステムのメモリコントローラHyMC(1) に転送する動作を意味する。
グラフデータがまたがった際に必要なデータとは、幅優先探索における最短経路探索問題の例においては、図20に示されているようなプレロード済み頂点番号リスト(Data A)、及び次にプレロードする頂点の番号もしくはデータの論理アドレス(Data B)である。Data Aのプレロード済み頂点番号リストは、各頂点番号(VTX 1, VTX 2, VTX 3)に対して、それがプレロードされたか否かを1ビットで表現するものである。図20では、プレロードされていない頂点は”0”,プレロードされた頂点は”1”で表現されており、プレロードされている頂点番号は、2,3,4,7,9…である。
グラフデータがまたがった際に必要なデータを他のメモリサブシステムのメモリコントローラHyMC(1)に送付した後、メモリコントローラHyMC(0)におけるプレロード制御ブロックPCBは、グラフデータがまたがった際に必要なデータを削除する(Delete)。この後、メモリコントローラHyMC(0)のプレロード制御ブロックPCBは、プレロード動作(3−1)、(3−2)を続ける(Preload 3)。
グラフデータがまたがった際に必要なデータを受け取った他のメモリサブシステムのメモリコントローラHyMC(1)は、受け取ったグラフデータがまたがった際に必要なデータを基に、グラフデータのプレロードを開始する(Preload 2)。
幅優先探索における最短経路探索問題における例を挙げると、Data AとData Bを受け取った他のメモリサブシステムのメモリコントローラHyMC(1)は、受け取った頂点番号からグラフデータのプレロードを開始する。
(動作b)図19に示されているように、メモリコントローラHyMC(0)がプレロード動作(3−1)、(3−2)を行っている際、次に必要となるグラフデータブロックが同じメモリサブシステム内の不揮発性メモリに存在しない場合、メモリコントローラHyMC(0) におけるプレロード制御ブロックPCBは、グラフデータがまたがった際に必要なデータを、データバッファDBFに保存する(Data)。
また情報処理回路CPU(0)〜CPU(m)は、定期的に全てのメモリサブシステムのデータバッファDBFを参照する(Ref)。この場合、またがった際に必要なデータがHyMC(0)の管理するデータバッファDBFに存在しているため、情報処理回路CPU(0)〜CPU(m)は次に必要となるグラフデータブロックが存在するメモリサブシステムのメモリコントローラHyMC(1)に、データのプレロード開始を指示する(Command of preload)。
その後、情報処理回路CPU(0)〜CPU(m)は、データバッファDBFの中に存在する、グラフデータがまたがった際に必要なデータを削除する(Delete 2)。
もしくは、情報処理回路CPU(0)〜CPU(m)は、グラフデータがまたがった際に必要なデータを削除するように、プレロード制御ブロックPCBに指示する(CMD 1)。指示を受けたプレロード制御ブロックPCBは、グラフデータがまたがった際に必要なデータを削除する(Delete 1)。
(4)情報処理回路CPUによるグラフ処理における、グラフデータの読み出し動作
(4−1)グラフデータ読み出し動作の全体フロー
まず、情報処理回路CPUによるグラフデータの読み出し動作を説明する。
図21は、グラフデータの読み出し時におけるメモリコントローラHyMCの動作のフローチャートである。
情報処理回路(CPU(0)〜CPU(m))は、プレロード制御ブロックPCBから図14におけるPreload fin 1の通達を受け取った後、グラフ処理を開始する。
まず、情報処理回路CPU(0)〜CPU(m)はグラフ処理において、グラフ処理において必要なグラフデータが格納されている不揮発性メモリを搭載するメモリサブシステムに対して、データ読み出し要求を行う(Step 1)。
データ要求のあったメモリサブシステムのプレロード制御ブロックPCBは、情報処理回路CPUからの読み出し要求アドレスとプレロードデータが格納されたDRAM上の先頭のプレロードデータの論理アドレスを比較し、両者のアドレスが一致するか判定する(Step 2)。
両者のアドレスが一致した場合(Step 2のY)、プレロード制御ブロックPCBは先頭のプレロードデータを情報処理回路CPUに送る(Step 3)。その後、プレロード制御ブロックPCBは、同じDRAM上に次のプレロードデータが存在するか判定する(Step 4)。
同じDRAM上に次のプレロードデータが存在した場合(Step 4のY)、プレロード制御ブロックPCBは次のプレロードデータを先頭プレロードデータとし(Step 5)、フローを終了する(End)。フローの終了後は、情報処理回路CPUからの読み出し要求待ち状態となる。
同じDRAM上に次のプレロードデータが存在しない場合(Step 4のN)、プレロード制御ブロックPCBはDRAMの切り替え動作を実行する(Step 6)。DRAMの切り替え動作に関しては(4−2)において後述する。
DRAMの切り替え動作の後、プレロード制御ブロックPCBは次のプレロードデータが存在するか判定する(Step 7)。次のプレロードデータが存在する場合は、次のプレロードデータを先頭プレロードデータとし(Step 5)、フローを終了する(End)。存在しない場合は何もせず終了する(End)。いずれの場合もフローの終了後は、情報処理回路CPUからの読み出し要求待ち状態となる。
(Step 2)において、両者のアドレスが一致しない場合(Step 2のN)、プレロード制御ブロックPCBは同じDRAM上に次のプレロードデータが存在するか判定する(Step 8)。
同じDRAM上に次のプレロードデータが存在した場合(Step 8のY)、プレロード制御ブロックPCBは次のプレロードデータを先頭プレロードデータとし(Step 9)、再び(Step 2)に戻る。
同じDRAM上に次のプレロードデータが存在しない場合(Step 8のN)、プレロード制御ブロックPCBはDRAMの切り替え動作を実行し(Step 10)、その後次のプレロードデータが存在するか判定する(Step 11)。
次のプレロードデータが存在する場合は、プレロード制御ブロックPCBは次のプレロードデータを先頭プレロードデータとし(Step 9)、再び(Step 2)に戻る。
次のプレロードデータが存在しない場合、プレロード制御ブロックPCBは不揮発性メモリNVMからデータを読み出す(Step 12)。情報処理回路CPUへデータを送り、終了する(End)。終了後は、情報処理回路CPUからの読み出し要求待ち状態となる。
(4−2)DRAMの切り替え動作
DRAMの切り替え動作を、図22を用いて説明する。
グラフデータ読み出し動作(4−1)の間も、(3)のプレロード処理は並行して行われる。並行して行われるプレロード処理では、不揮発性メモリNVMから読み出したデータの格納先となるDRAM(左のDRAM 0)は、グラフデータ読み出し動作(4−1)において、情報処理回路CPUが読み出すグラフデータが格納されているDRAM(左のDRAM 1)とは異なる。異なるとは、同じDRAM chipの異なる物理領域でもよいし、異なるDRAM chip、異なるDIMMでもよい。
(4−1)で述べたDRAMの切り替えのタイミングで、プレロード制御ブロックPCBはこれまで不揮発性メモリNVMからのグラフデータの転送先であったDRAM 0を、情報処理回路CPUが読み出すグラフデータが格納されているDRAM(右のDRAM 0)へ割り当て、新たに不揮発性メモリNVMからのグラフデータの転送先のDRAMとしてDRAM 0とは異なるDRAMを割り当てる。
また、DRAMの切り替え動作が実行される前に、不揮発性メモリNVMからのグラフデータの転送先のDRAMに一定のデータ量のグラフデータが溜まったら、DRAMが切り替わるまでデータのプレロード動作(3)は一時停止され、DRAMの切り替え後に再開される。
このデータ量は、各CPUからグラフ処理前に通知されてデータバッファDBFに保存されているか、もしくは予め決められており、そのデータ量を各CPU、プレロード制御ブロックPCBは知っているものとする。
または、プレロード制御ブロックPCBがデータバッファDBFを参照した際、現在グラフ処理を行っているアプリと同じアプリが過去に実行された際に算出された、適切なデータのプレロード量が保存されていた場合、その読み出された適切なプレロード量をデータ量と定める。
(5)情報処理回路CPUによるグラフ処理における、グラフ処理結果の書き込み動作
図23に、各情報処理回路における、グラフ処理の結果の書き込み動作のフローチャートの一例を示す。
情報処理回路CPU(0)〜CPU(m)が得たグラフ処理の結果の書き込み要求がメモリサブシステムに送られた場合、書き込み命令、書き込みデータ及び論理アドレスはコマンドバッファCMDBFへ一次的に保存される(Step 1)。
プレロード制御ブロックPCBはコマンドバッファCMDBFを参照して、書き込みデータに論理アドレスを付加して(Step 2)、DRAM制御回路DRAMCへ書き込み要求を送る。
DRAM制御回路DRAMCはDRAMへ、論理アドレスが付加された書き込みデータを書き込む(Step 3)。
以上のようにして、DRAMに書き込まれたデータのサイズが不揮発性メモリの書き込み単位に達した時(Step 4のYes)、プレロード制御ブロックPCBはDRAM制御回路DRAMCへデータの読み出し要求を送る。DRAM制御回路DRAMCは、DRAMから要求されたデータをプレロード制御ブロックPCBへ転送する。
プレロード制御ブロックPCBは、転送されたデータを不揮発性メモリNVMに書き込むために、不揮発性メモリ制御回路NVMCに書き込み要求を送る。不揮発性メモリ制御回路NVMCは、要求に従って不揮発性メモリNVMにデータを書き込む(Step 5)。
(6)グラフ処理中及びグラフ処理後におけるプレロードの最適化動作
図24に、プレロード制御ブロックPCBが、不揮発性メモリからDRAMへのグラフデータ転送量を動的変化にさせるフローチャートの一例を示す。グラフ処理中にグラフデータ転送量を動的変化させる動作は、図24のStep 1からStep 3に示されている。
まず、情報処理回路CPUがグラフ処理を行う間、プレロード制御ブロックPCBは、単位時間当たりの情報処理回路CPUからのデータアクセス要求量と、同じく単位時間当たりの不揮発性メモリNVMからメモリコントローラHyMCによる先読みグラフデータの保存先のDRAMへのデータ転送量を、定期的にモニターする(Step 1)。
モニターした結果により、単位時間当たりの情報処理回路CPUからのデータアクセス要求量と、単位時間当たりの不揮発性メモリNVMからメモリコントローラHyMCによる先読みグラフデータの保存先のDRAMへのデータ転送量の比もしくは差がある閾値より大きい場合、プレロード制御ブロックPCBはメモリコントローラHyMCによる先読みグラフデータの保存先のDRAMへのデータ転送量を制御する(Step 2)。
例えば、単位時間当たりの情報処理回路CPUからのデータアクセス要求量が、単位時間当たりの不揮発性メモリNVMからメモリコントローラHyMCによる先読みグラフデータの保存先のDRAMへのデータ転送量より大幅に小さい場合、プレロード制御ブロックPCBはNVMからDRAMへのデータ転送量を減らす。両者のデータ量の関係が逆の場合、プレロード制御ブロックPCBはNVMからDRAMへのデータ転送量を増やす。
プレロード制御ブロックPCBは情報処理回路CPUによるグラフ処理が終了したかを判定し(Step 3)、終了していない場合は定期的にStep 1及びStep 2を繰り返す。またグラフ処理が終了した場合、Step 1及びStep 2における制御の結果を基にして、情報処理回路CPUのグラフ処理前に行うグラフデータのプレロード量として適切なデータ量を算出する(Step 4)。
その結果は、アプリを特定する情報と共にデータバッファDBFもしくは不揮発性メモリNVMに保存される。
以上の説明においては、第一のメモリ及び第二のメモリとしてDRAM、第三のメモリとして不揮発性メモリを用いており、情報処理回路CPUがグラフ処理プログラムを実行するサーバーの例を挙げたが、第三のメモリは、第二のメモリ及び第一のメモリよりも読み出し及び書き込みレイテンシが長ければよく、本発明はDRAM と不揮発性メモリを用いた組み合わせ限定されるものではない。
<F.実施の形態1に示される発明の効果のまとめ>(※請求項1に合わせて変更要)
以上説明したように実施の形態1の発明によって得られる主な効果は以下の通りである。
大規模グラフを処理する際に必要な、グラフデータへのランダムアクセスの高速化を可能にする大規模なメモリ空間を安価に提供でき、かつ、その場合でもグラフデータが読み出し及び書き込みレイテンシが短いメモリに搭載されていた場合と同様の速度でグラフ処理を行うことができる。
すなわち、グラフ処理を行う際、第一のメモリ及び第二のメモリと、これらのメモリよりも読み出し及び書き込みレイテンシが長い第三のメモリを用いて大規模グラフを処理する際に必要な大規模なメモリ空間を安価に提供し、かつ、その場合でもグラフデータが第一のメモリ及び第二のメモリに搭載されていた場合と同様の速度でグラフ処理を行うことが可能になる。
また、複数のメモリコントローラによって管理される複数の第三のメモリのチップにグラフデータが分散して存在していた場合においても、上記の高速なグラフ処理が可能となる。
さらに、上記の高速なグラフ処理の間、各CPUのデータ処理量と第三のメモリから第一のメモリ及び第二のメモリへのデータ転送量を計測することによって、各CPU及びメモリコントローラの計算リソースの無駄を省くことができる。
以上述べた本発明の第一の実施例では、サーバー (SVR)1つで情報処理装置を構成していたが、ネットワークで接続される複数のサーバーで情報処理装置を構成し、各サーバーのメモリ空間に第一、第二、第三のメモリを配置し、1つのサーバーの1つのCPUが全体の処理を統括するようにしても良い。あるいはまた、複数のコンピュータの上で協調的に動作する並列プログラムを備えたPCクラスタで情報処理装置を構成し、PCクラスタのスレーブコンピュータが共有するメモリ空間に第一、第二、第三のメモリを配置するようにしても良い。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
100…サーバー (SVR)
110…情報処理サブシステム (IPSS(0) 〜IPSS(m))
111…情報処理回路 (CPU(0)〜CPU(m))
112…DRAM
120…ネットワークスイッチ (Switch)
130…メモリサブシステム MSS(0) 〜MSS(n)
131…メモリコントローラ (HyMC)
1311…コマンドデータバッファ (CMDBF)
1312…メモリアクセス制御回路 (DMAC)
1313…データバッファ (DBF)
1314…アドレス変換テーブル (ATT)
1315…プレロード制御ブロック (PCB)
1316…不揮発性メモリ制御回路 (NVMC(0) 〜NVMC(j))
1317…DRAM制御回路 (DRAMC(0) 〜DRAMC(i))
132…不揮発性メモリ (NVM(0)からNVM(j))
133…DRAM (DRAM (0)〜DRAM(i))
150…外部記憶装置 (Storage)
200…情報処理システム (IPS (0))
210…情報処理システム (IPS (0))
Edge…グラフのつながり(辺)
Vertex…グラフの頂点
Adr 0, Adr 1, Adr 2…グラフデータのアドレス
VTX 1, VTX 2, VTX 3…(それぞれ)頂点番号1、頂点番号2、頂点番号3。

Claims (14)

  1. 情報処理サブシステムと、該情報処理サブシステムとデータ通信を行うメモリサブシステムとを備えた情報処理装置であって、
    前記情報処理サブシステムは、グラフ処理命令に従ってグラフの処理を行う情報処理回路を有し、
    前記メモリサブシステムは、第一のメモリと、第二のメモリと、該第一及び第二のメモリよりも読み出し及び書き込みレイテンシが長い第三のメモリと、前記第一のメモリと前記第二のメモリと前記第三のメモリ間でデータ転送を制御するメモリコントローラとを有し、
    前記グラフの処理の対象となるグラフデータは、グラフの各頂点に該各頂点を一意に特定するIDが割り当てられており、前記頂点の1つに割り当てられたIDが分かれば、該頂点と関係性を持つ他の頂点のIDがアドレス空間でどの場所にあるのか特定できるデータであり、複数のデータブロックから構成され、
    前記データブロックは、前記1つの頂点のIDを前記メモリコントローラによって解析することで判明するアドレスに対応する全データもしくはデータの一部であり、その中に少なくとも前記1つの頂点のIDが記録されており、
    前記メモリコントローラは、
    前記第三のメモリに、処理の対象となる前記グラフデータを格納する機能と、
    複数の前記データブロックを前記第三のメモリから前記第一もしくは前記第二のメモリへ転送するプレロード機能とを有し、
    前記メモリコントローラは該プレロード機能により、
    1つの前記データブロックAに含まれる少なくとも1つの前記頂点のIDを自律的に解析し、当該情報処理回路が次に必要とする少なくとも1つの前記データブロックBのアドレスを計算し、当該データブロックBを前記第三のメモリから前記第一のメモリもしくは前記第二のメモリへ転送し、
    続けて、以前に前記第三のメモリから前記第一もしくは前記第二のメモリへ転送した前記データブロックAもしくはBもしくはA及びBとは異なる前記データブロックCに含まれる少なくとも1つの前記頂点のIDを解析し、当該情報処理回路が次に必要とする少なくとも1つの前記データブロックDのアドレスを計算し、当該データブロックDを前記第三のメモリから前記第一もしくは前記第二のメモリへ転送し、
    以下同様に複数のデータブロックを前記第三のメモリから第一もしくは第二のメモリへ転送し、
    前記情報処理回路において、前記プレロード機能が実行されている前記データブロックの転送先とは異なる前記第一もしくは第二のメモリから、前記グラフデータを読み出し、前記処理命令に従って該グラフデータの処理を実行することを特徴とする情報処理装置。
  2. 請求項1において、
    前記メモリコントローラは、前記プレロード機能により、
    前記グラフデータブロックと共に、前記グラフデータブロックに対応するアドレスも前記第一もしくは第二のメモリへ転送する
    ことを特徴とする情報処理装置。
  3. 請求項2において、
    前記メモリコントローラは、
    前記情報処理回路が要求した前記グラフデータのアドレスと、前記情報処理回路のグラフデータ参照先の第一もしくは第二のメモリへ転送された前記アドレスを比較し、両者が一致するか否かを判定する機能を有する
    ことを特徴とする情報処理装置。
  4. 請求項3において、
    前記メモリコントローラは、
    前記第三のメモリに格納された前記グラフデータのうち、前記第一もしくは第二のメモリに転送されたデータブロックと転送されていないデータブロックを区別する機能を有する
    ことを特徴とする情報処理装置。
  5. 請求項3において、
    前記メモリコントローラは、
    前記第三のメモリから転送される前記グラフデータブロックの保存先を、前記第一のメモリから前記第二のメモリへ切り替える機能、及び前記第二のメモリから前記第一のメモリへ切り替える機能を有する
    ことを特徴とする情報処理装置。
  6. 請求項3において、
    前記メモリコントローラは、
    前記情報処理回路によるグラフデータの参照先のメモリを前記第一のメモリから前記第二のメモリに切り替える機能、及び前記第二のメモリから前記第一のメモリに切り替える機能を有する
    ことを特徴とする情報処理装置。
  7. 請求項3において、
    前記情報処理回路から前記メモリコントローラに、該メモリコントローラが前記グラフデータの自律的な解析を行うために必要なデータやアルゴリズムを伝達する
    ことを特徴とする情報処理装置。
  8. 請求項3において、
    前記情報処理回路若しくは前記メモリコントローラは、
    前記グラフデータのデータ形式が当該情報処理装置で取り扱うデータ形式と異なる場合は、当該情報処理装置で取り扱うデータ形式に変更する
    ことを特徴とする情報処理装置。
  9. 請求項3において、
    前記メモリコントローラは、
    前記第三のメモリから読み出した前記グラフデータのうち、前記情報処理回路が前記処理の実行に必要とする部分を抽出し、抽出されたデータを前記第一のメモリ若しくは前記第二のメモリへ転送する機能を有する
    ことを特徴とする情報処理装置。
  10. 請求項3において、
    前記メモリコントローラは、
    前記第三のメモリから読み出した前記グラフデータを、前記情報処理回路が前記メモリコントローラに要求するデータサイズ単位で、前記第一のメモリ若しくは前記第二のメモリへ転送する機能を有する
    ことを特徴とする情報処理装置。
  11. 請求項3において、
    前記メモリコントローラは、
    前記情報処理回路から前記第三のメモリへのデータ書き込み要求があった場合、前記第一のメモリ若しくは前記第二のメモリに、書き込み要求のあったデータを、当該データのアドレスと共に書き込み、書き込まれたデータが一定のデータサイズに達したのち、当該データを当該データのアドレスと共にまとめて前記第三のメモリへ書き込む
    ことを特徴とする情報処理装置。
  12. 請求項3において、
    前記メモリコントローラは、前記情報処理回路による前記処理の実行前に行われる、前記第三のメモリから前記第一のメモリ若しくは前記第二のメモリへの前記グラフデータ転送終了を前記情報処理回路に通知する
    ことを特徴とする情報処理装置。
  13. 請求項3において、
    前記メモリコントローラは、
    前記第一もしくは第二のメモリと前記第三のメモリの間で転送される前記グラフデータの量もしくはデータ転送速度を計測し、
    前記情報処理回路が処理する前記グラフデータの量もしくは処理速度を計測し、
    前記メモリコントローラは、前記情報処理回路が処理する前記グラフデータの量もしくは処理速度と、前記第一もしくは第二のメモリと前記第三のメモリの間で転送される前記グラフデータの量もしくはデータ転送速度の比較をし、該比較結果に基づき、前記第一もしくは第二のメモリと前記第三のメモリの間のグラフデータの転送速度を変化させる
    ことを特徴とする情報処理装置。
  14. 請求項13おいて、
    前記メモリコントローラは、前記比較結果に基づき、前記情報処理回路が過去実行したものと同じ処理命令を再度実行した場合に、前記第一もしくは第二のメモリと前記第三のメモリの間で転送する前記グラフデータの量を最適化する
    ことを特徴とする情報処理装置。
JP2012130641A 2012-06-08 2012-06-08 情報処理装置 Expired - Fee Related JP5931595B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012130641A JP5931595B2 (ja) 2012-06-08 2012-06-08 情報処理装置
US13/875,448 US9099171B2 (en) 2012-06-08 2013-05-02 Information processor
US14/799,795 US9268486B2 (en) 2012-06-08 2015-07-15 Information processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012130641A JP5931595B2 (ja) 2012-06-08 2012-06-08 情報処理装置

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2016088829A Division JP6100952B2 (ja) 2016-04-27 2016-04-27 情報処理装置

Publications (2)

Publication Number Publication Date
JP2013254419A true JP2013254419A (ja) 2013-12-19
JP5931595B2 JP5931595B2 (ja) 2016-06-08

Family

ID=49716223

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012130641A Expired - Fee Related JP5931595B2 (ja) 2012-06-08 2012-06-08 情報処理装置

Country Status (2)

Country Link
US (2) US9099171B2 (ja)
JP (1) JP5931595B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015116173A2 (en) 2014-01-31 2015-08-06 Hewlett-Packard Development Company, L.P. Unifying memory controller
WO2016144299A1 (en) 2015-03-06 2016-09-15 Hewlett Packard Enterprise Development Lp Graph update flush to a shared memory
US9460791B1 (en) * 2015-12-08 2016-10-04 Inphi Corporation Data clock synchronization in hybrid memory modules
JP6611679B2 (ja) * 2016-06-30 2019-11-27 株式会社日立製作所 データ生成方法及び計算機システム
US10540398B2 (en) * 2017-04-24 2020-01-21 Oracle International Corporation Multi-source breadth-first search (MS-BFS) technique and graph processing system that applies it
US10373658B2 (en) * 2017-06-30 2019-08-06 SK Hynix Inc. Semiconductor modules
CN108804631A (zh) * 2018-05-31 2018-11-13 北京字节跳动网络技术有限公司 表情符号存储方法、装置、计算机可读存储介质和终端

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0996537A (ja) * 1995-09-29 1997-04-08 Matsushita Electric Ind Co Ltd 経路探索装置
JP2006260170A (ja) * 2005-03-17 2006-09-28 Seiko Epson Corp 文書画像表示装置及び文書画像表示方法をコンピュータに実行させるためのプログラム
WO2007138585A1 (en) * 2006-05-29 2007-12-06 Sandisk Il Ltd. Predictive data-loader
JP2011170669A (ja) * 2010-02-19 2011-09-01 Oki Semiconductor Co Ltd メモリ書き込みシステム及び方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050253858A1 (en) * 2004-05-14 2005-11-17 Takahide Ohkami Memory control system and method in which prefetch buffers are assigned uniquely to multiple burst streams
JP2008257317A (ja) * 2007-04-02 2008-10-23 Fuji Xerox Co Ltd 情報処理装置、情報処理システム及びプログラム
US8731835B2 (en) * 2012-05-25 2014-05-20 Xerox Corporation System and method for trip plan crowdsourcing using automatic fare collection data

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0996537A (ja) * 1995-09-29 1997-04-08 Matsushita Electric Ind Co Ltd 経路探索装置
JP2006260170A (ja) * 2005-03-17 2006-09-28 Seiko Epson Corp 文書画像表示装置及び文書画像表示方法をコンピュータに実行させるためのプログラム
WO2007138585A1 (en) * 2006-05-29 2007-12-06 Sandisk Il Ltd. Predictive data-loader
JP2009539168A (ja) * 2006-05-29 2009-11-12 サンディスク アイエル リミテッド 予測型データローダ
JP2011170669A (ja) * 2010-02-19 2011-09-01 Oki Semiconductor Co Ltd メモリ書き込みシステム及び方法

Also Published As

Publication number Publication date
US20130332667A1 (en) 2013-12-12
US9268486B2 (en) 2016-02-23
JP5931595B2 (ja) 2016-06-08
US9099171B2 (en) 2015-08-04
US20150317086A1 (en) 2015-11-05

Similar Documents

Publication Publication Date Title
JP5931595B2 (ja) 情報処理装置
CN107621959B (zh) 电子装置及其软件训练方法、计算系统
JP6768928B2 (ja) アドレスを圧縮するための方法及び装置
CN104580437A (zh) 一种云存储客户端及其高效数据访问方法
US11379381B2 (en) Main memory device having heterogeneous memories, computer system including the same, and data management method thereof
KR20190096801A (ko) SSD 스토리지의 NVMe 명령간 연관을 위한 시스템 및 방법
WO2015162752A1 (ja) データベース演算部を備えるフラッシュモジュール、及びストレージ装置
CN113127177B (zh) 处理装置及分布式处理系统
CN111143234A (zh) 存储设备、包括这种存储设备的系统及其操作方法
GB2519534A (en) Persistent caching system and method for operating a persistent caching system
JP2015158910A (ja) ラップ読出しから連続読出しを行うメモリサブシステム
JP6331944B2 (ja) 情報処理装置、メモリ制御装置及び情報処理装置の制御方法
KR101363422B1 (ko) 비휘발성 메모리 시스템
WO2015087651A1 (ja) メモリの使用可能期間を延ばすための装置、プログラム、記録媒体および方法
JP6582721B2 (ja) 制御装置、ストレージシステム、及び制御プログラム
WO2017054714A1 (zh) 磁盘阵列的读方法及装置
JP6100952B2 (ja) 情報処理装置
CN112214162A (zh) 存储装置和控制方法
EP4283472A1 (en) Method for caching data, a host device for caching data, and a storage system for caching data
CN116401043A (zh) 一种计算任务的执行方法和相关设备
US20170371586A1 (en) Information processing system
JPWO2015118623A1 (ja) 情報処理装置
JP7067256B2 (ja) データ転送装置およびデータ転送方法
US20150089264A1 (en) Processing apparatus and processing method
JP6200100B2 (ja) 計算機システム

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20140908

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150306

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160311

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: 20160405

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160427

R150 Certificate of patent or registration of utility model

Ref document number: 5931595

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees