(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-08
(45)【発行日】2024-04-16
(54)【発明の名称】ストレージでの最適な動的シャードを生成する装置及びシステム
(51)【国際特許分類】
G06F 16/28 20190101AFI20240409BHJP
【FI】
G06F16/28
(21)【出願番号】P 2019207293
(22)【出願日】2019-11-15
【審査請求日】2022-11-10
(32)【優先日】2018-12-14
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-02-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390019839
【氏名又は名称】三星電子株式会社
【氏名又は名称原語表記】Samsung Electronics Co.,Ltd.
【住所又は居所原語表記】129,Samsung-ro,Yeongtong-gu,Suwon-si,Gyeonggi-do,Republic of Korea
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】ハシミ,セイディ ハニエ
(72)【発明者】
【氏名】李 周 桓
(72)【発明者】
【氏名】奇 亮 ソク
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】特開2017-073162(JP,A)
【文献】特開2008-090518(JP,A)
【文献】米国特許出願公開第2018/0285477(US,A1)
【文献】米国特許出願公開第2014/0032579(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
外部のホストプロセッサ回路とデータ及びコマンドを通信するホストプロセッサインターフェイス回路と、
複数のグラフデータ要素
がマージされた動的シャード
を生成するコントローラプロセッサ回路と、
少なくとも一部グラフ構
造のデータを格納する不揮発性メモリと、を含み、
前記マージされた動的シャードの各々は、同一の数の前記グラフデータ要素を含み、
前記グラフ構造は、各々がバーテックス及びエッジを含むデータ要素を含み、前記データ要素のサブ部分は、シャードにグループ化されることを特徴とする装置。
【請求項2】
前記コントローラプロセッサ回路は、活性化エッジのみを含むデータ要素から動的シャードを生成することを特徴とする請求項1に記載の装置。
【請求項3】
前記コントローラプロセッサ回路は、前記装置が前記ホスト
プロセッサインターフェイス回路によって受信されたコマンドに関与しない時間に、少なくとも一部に基づいて、前記グラフデータ要素のマージを遂行することを特徴とする請求項1に記載の装置。
【請求項4】
前記ホストプロセッサインターフェイス回路は、
シャード内の0(ゼロ)以上のデータ要素のアップデートを含む処理のために前記外部のホストプロセッサ回路に前記シャードを提供し、
前記アップデートされたデータ要素があれば、前記不揮発性メモリに前記アップデートされたデータ要素を動的シャードの一部として書き込むことを特徴とする請求項1に記載の装置。
【請求項5】
前記コントローラプロセッサ回路は、
前記ホストプロセッサ回路を通じて前記動的シャードのサイズを収集し、
マージされた動的シャードにマージするように、隣接する動的シャード又は一部シャードの数を決定し、
前記シャードの順序属性を維持するようにソース識別子として前記活性化エッジを整列することを特徴とする請求項2に記載の装置。
【請求項6】
前記コントローラプロセッサ回路は、バッファメモリを含み、
前記コントローラプロセッサ回路は、
マージされた動的シャードにマージされるシャードの各々に対して、
前記不揮発性メモリから前記バッファメモリに前記シャードの各々から1つのデータ要素のみをコピーし、
1つ以上のマージされた動的シャードに前記データ要素をグループ化し、
前記不揮発性メモリに前記データ要素を前記1つ以上のマージされた動的シャードの一部として書き込むことを特徴とする請求項1に記載の装置。
【請求項7】
活性化エッジは、活性化エッジ予測ポリシーによって判断されることを特徴とする請求項2に記載の装置。
【請求項8】
前記活性化エッジは、動的に調節される閾値と比較されて、前記ホストプロセッサ回路による処理の複数の以前の反復に基づいて判断されることを特徴とする請求項7に記載の装置。
【請求項9】
前記活性化エッジは、処理反復内で観測されないアップデートされた活性化エッジを含むことを特徴とする請求項7に記載の装置。
【請求項10】
前記活性化エッジ予測ポリシーは、処理反復内で観測されたアップデートされた活性化エッジの失敗率に少なくとも一部に基づいて、動的に調節されることを特徴とする請求項7に記載の装置。
【請求項11】
前記活性化エッジは、前記エッジに連関されたバーテックスが変化するか否かを検出し、前記バーテックスが変化すると、前記バーテックスに連関されたすべてのエッジ又は少なくとも一部の特定タイプを活性化エッジとして見なすことによって、判断されることを特徴とする請求項7に記載の装置。
【請求項12】
各々のバーテックスはバーテックスインデックス番号に連関され、
前記コントローラプロセッサ回路は、
第1インデックス番号から第2インデックス番号に目的バーテックスのインデックス番号を再割当して、前記目的バーテックスの第2インデックス番号が前記目的バーテックスの第1インデックス番号よりも数値的にソースバーテックスのインデックス番号に近いようにし、前記ソースバーテックスは、前記目的バーテックスに連関されることを特徴とする請求項1に記載の装置。
【請求項13】
前記コントローラプロセッサ回路は、
前記少なくとも一部グラフ構造を複数のサブグラフ構造に分割し、
ソースバーテックス及び目的バーテックスの連関性を識別するように、第1バーテックスに横断(traversal)技術を利用し、
前記ソースバーテックス及び目的バーテックスの連関性に少なくとも一部に基づいて、バーテックスインデックス番号の各々を再割当することを特徴とする請求項12に記載の装置。
【請求項14】
前記コントローラプロセッサ回路は、
前記目的バーテックスが活性化バーテックスである場合に限って目的バーテックスのインデックス番号を再割当することを特徴とする請求項12に記載の装置。
【請求項15】
前記コントローラプロセッサ回路は、
データ要素を含む1つ以上の新しいシャードを生成し、
前記データ要素のバーテックスのインデックス番号は、再割当されることを特徴とする請求項12に記載の装置。
【請求項16】
前記コントローラプロセッサ回路は、
1つ以上のシャード内の活性化アップデートされたデータ要素を地域化するようにバーテックス識別数の再割当を利用することを特徴とする請求項1に記載の装置。
【請求項17】
グラフデータ構造に関連された命令語を実行するホストプロセッサ回路と、
少なくとも1つのストレージ装置と、を備え、
前記ストレージ装置の各々は、
前記ホストプロセッサ回路とデータを通信するホストプロセッサインターフェイス回路と、
複数のグラフデータ要素
がマージされた動的シャード
を生成するコントローラプロセッサ回路と、
少なくとも一部グラフ構
造のデータを格納する不揮発性メモリと、を含み、
前記マージされた動的シャードは、同一の数の前記グラフデータ要素を含み、
前記グラフ構造は、各々がバーテックス及びエッジを含むデータ要素を含み、前記データ要素のサブ部分は、シャードにグループ化されることを特徴とするシステム。
【請求項18】
前記コントローラプロセッサ回路は、活性化エッジのみを含むデータ要素から動的シャードを生成し、
前記コントローラプロセッサ回路は、前記ストレージ装置の各々が前記ホスト
プロセッサインターフェイス回路によって受信されたコマンドに関与しない時間に少なくとも一部に基づいて、前記グラフデータ要素のマージを遂行することを特徴とする請求項17に記載のシステム。
【請求項19】
前記ホストプロセッサ回路は、活性化エッジ予測ポリシーを利用することによってエッジが活性化エッジであるか否かを判断することを特徴とする請求項17に記載のシステム。
【請求項20】
各々のバーテックスがバーテックスインデックス番号に連関され、
前記ホストプロセッサ回路は、
第1インデックス番号から第2インデックス番号に目的バーテックスのインデックス番号を再割当して、前記目的バーテックスの第2インデックス番号が前記目的バーテックスの第1インデックス番号よりも数値的にソースバーテックスのインデックス番号に近いようにし、前記ソースバーテックスは、前記目的バーテックスに連関されることを特徴とする請求項17に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの処理及び格納に関し、より詳しくはグラフ作業負荷のためのストレージでの最適な動的シャードを生成する装置及びシステムに関する。
【背景技術】
【0002】
コンピュータ科学で、グラフ理論はオブジェクト間のペアワイズ(pairwise)関係をモデリングするのに使用されるデータ構造であるグラフの学問である。この文脈でのグラフは、エッジ、アーク、又はラインによって連結されるバーテックス(vertex)、ノード、又はポイントで構成される。コンピューティングで、グラフデータベース(graph database、GDB)は、属性、エッジ、及びノードを有するセマンティック(semantic)クエリーのためのグラフ構造を使用してデータを格納及び示すデータベースである。システムの核心的な概念はグラフ(又はエッジ、又は関係)であり、グラフはノード間の関係を示すエッジ及びデータのノードのコレクション(collection)を格納するデータ項目と直接的に関連させる。このような関係は格納されたデータが直接的に共に連結されるようにし、多くの場合、1回の動作で検索されるようにする。グラフデータベースはデータ間の関係を優先的に保持している。グラフデータベース内のクエリー関係はそれがデータベース自体内に永久的に格納されるので、高速である。関係は、グラフデータベースを使用して直観的に視覚化されることができ、強く相互連結されたデータに有用である。
【0003】
ビックデータアプリケーションがより実用的になったので、グラフコンピューティングが最近人気を集めている。幾つかの例として、グラフはコンピュータ科学に使用されて計算の流れを示す。オペレーティングシステムで、リソース割当グラフは、処理、デッドロック(deadlock)の検出、及び訂正に使用される。グラフは分子の研究に使用され、化学で結合構造を研究するために使用され、原子の研究に使用されている。使用されるグラフは生物学及び自然保護活動に利用され、バーテックスは特定種(species)が存在する領域を示し、エッジ(edge)は領域間の移動経路又は動きを示す。Googleマップ(登録商標)、そしてGPS(global positioning system)アプリケーションは一般的に、運送システムを構築するためにグラフを使用し、2つの(又はさらに多い)道路の交差路がバーテックスであると見なし、2つのバーテックスを連結する道路がエッジであると見なす。したがって、これらのナビゲーションシステムはグラフを利用して2つのバーテックス間の最も短い経路を計算する。このように、グラフは検索及び推薦エンジンに使用されてページ関連性及び相互連結を確認する。フェイスブック(Facebook(登録商標))及びソーシャルメディアで、使用者はバーテックスであると見なされ、もしそれらが友達であれば、それらの間を継ぐエッジが存在する。フェイスブックの友達提案技術はグラフ理論を使用する。
【0004】
グラフアプリケーションに対する顕著な性能ボトルネックは、膨大なグラフサイズ及びランダム入出力(IO又はI/O)アクセスパターンによる。CSR(compressed sparse row)及びCSC(compressed sparse column)のような標準疎グラフフォーマット(standard sparse graph format)は、エッジ値のランダムアクセスを伴う。数百万のバーテックス及び数十億のエッジを有する巨大なグラフはDRAM(dynamic random access memory)に適合しないので、標準疎グラフフォーマットはグラフデータをディスクに格納し、ディスクからロードするために、ランダムなディスクアクセスをもたらす。少ない計算量を有するIO集中型のグラフ作業負荷は、それらのランダムなIOアクセスパターンによってIOレイテンシが高くなる。これは、高速のNVMe(non-volatile memory express)装置であってもそれらの順次的なアクセス速度と比較して相当に低いランダム読出し及び書込み速度を有するためである。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許第9740762号公報
【文献】米国特許第9535963号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
本発明は、上記従来技術の問題点に鑑みてなされたものであって、本発明の目的は、効率性が増加するように最適な動的シャードを生成する装置及びシステムを提供することにある。
【課題を解決するための手段】
【0007】
上記目的を達成するためになされた本発明の一態様による装置は、外部のホストプロセッサ回路とデータ及びコマンドを通信するホストプロセッサインターフェイス回路と、グラフデータ要素をマージされた動的シャードにマージするコントローラプロセッサ回路と、グラフ構造の少なくとも一部のデータを格納する不揮発性メモリと、を含み、前記マージされた動的シャードの各々は、同一の数の前記グラフデータ要素を含み、前記グラフ構造は、各々がバーテックス及びエッジを含むデータ要素を含み、前記データ要素のサブ部分は、シャードにグループ化されることを特徴とする。
【0008】
上記目的を達成するためになされた本発明の一態様によるシステムは、グラフデータ構造に関連された命令語を実行するホストプロセッサ回路と、少なくとも1つのストレージ装置と、を備え、前記ストレージ装置の各々は、前記ホストプロセッサ回路とデータを通信するホストプロセッサインターフェイス回路と、グラフデータ要素をマージされた動的シャードにマージするコントローラプロセッサ回路と、グラフ構造の少なくとも一部のデータを格納する不揮発性メモリと、を含み、前記マージされた動的シャードの各々は、同一の数の前記グラフデータシャードを含み、前記グラフ構造は、各々がバーテックス及びエッジを含むデータ要素を含み、前記データ要素のサブ部分は、シャードにグループ化されることを特徴とする。
【発明の効果】
【0009】
本発明によれば、グラフ作業負荷のための最適な動的シャードを生成することによって、効率性が増加された装置又はシステムを提供することができる。
【図面の簡単な説明】
【0010】
【
図1】本発明の一実施形態によるシステムの一例を示すブロック図である。
【
図2A】本発明の一実施形態によるデータ構造の一例を示すダイヤグラムである。
【
図2B】本発明の一実施形態によるデータ構造の一例を示すダイヤグラムである。
【
図3A】本発明の一実施形態によるシステム及びデータ構造の他の例を示すダイヤグラムである。
【
図3B】本発明の一実施形態によるシステム及びデータ構造の他の例を示すダイヤグラムである。
【
図3C】本発明の一実施形態によるシステム及びデータ構造の他の例を示すダイヤグラムである。
【
図3D】本発明の一実施形態によるシステム及びデータ構造のさらに他の例を示すダイヤグラムである。
【
図3E】本発明の一実施形態によるシステム及びデータ構造のさらに他の例を示すダイヤグラムである。
【
図3F】本発明の一実施形態によるシステム及びデータ構造のさらに他の例を示すダイヤグラムである。
【
図4A】本発明の他の実施形態によるデータ構造の一例を示すダイヤグラムである。
【
図4B】本発明の他の実施形態によるデータ構造の一例を示すダイヤグラムである。
【
図5】本発明の原理にしたがって形成された半導体装置を含む情報処理システムの概略的なブロック図でる。
【発明を実施するための形態】
【0011】
以下の多様な実施形態では、一部の実施形態が図面を参照しながらより詳細に説明される。しかし、本発明は多くの異なる形態で具現され、本明細書で説明する実施形態に限定されない。むしろ、このような実施形態は本開示が徹底的かつ完全であり、本発明の技術範囲を当業者に完全に伝えるように提供される。図面で、レイヤー及び領域のサイズ並びに相対的サイズは明確化のために誇張されている場合がある。
【0012】
構成要素又はレイヤーが、他の構成要素又はレイヤーの「上にある」、「連結される」、又は「結合される」と記載された場合、これらは直接的に他の構成要素又はレイヤー上に存在するか、連結されるか、又は結合されるか、又はその間に構成要素又はレイヤーが存在し得る。一方で、構成要素又はレイヤーが、他の構成要素又はレイヤーの「上に直接的にある」、「直接的に連結される」、又は「直接的に結合される」と記載された場合、その間に構成要素又はレイヤーは存在しない。類似の符号は類似の構成要素を指す。本明細書で使用される用語「及び/又は」は、関連する列挙項目の中の1つ以上の任意のすべての組み合わせを含む。
【0013】
第1、第2、第3などの用語は、本明細書で多様な構成要素、コンポーネント、領域、レイヤー、及び/又は区域を説明するために使用されるが、これらの構成要素、コンポーネント、領域、レイヤー、及び/又は区域は、このような用語で限定されない。これらの用語は単に1つの構成要素、コンポーネント、領域、レイヤー、又は区域を区別するために使用される。したがって、以下で説明される第1構成要素、コンポーネント、領域、レイヤー、又は区域は、本発明の教示から逸脱せずに、第2構成要素、コンポーネント、領域、レイヤー、又は区域と称される。
【0014】
「下」、「下部」、「上」、「上部」等のような空間的に相対的な用語が、説明の便宜のために本明細書で使用され、図面に図示されたように、他の構成要素又は特徴に対する1つの構成要素又は特徴の関係を説明する。空間的に相対的な用語は図面に図示された方向に加えて、使用中又は動作中の装置の異なる方向を含む。例えば、図面で装置が裏返される場合、他の構成要素又は特徴の「下」又は「下部」にあると説明された構成要素は、他の素子又は特徴の「上」に向く。したがって、「下」との例示的な用語は上と下の両方を含む。装置は、別の状態(90°回転されるか又は他の方向)に向き、本明細書で使用される空間的に相対的な説明はそれに応じて解釈される。
【0015】
同様に、「ハイ」、「ロー」、「プルアップ」、「プルダウン」、「1」、「0」等の電気的な用語は、説明の便宜のために本明細書で使用され、図面に図示されたように、他の電圧レベル又は他の構成要素又は特徴に対する、1つの電圧レベル又は電流を説明する。電気的に相対的な用語は図面に図示された電圧又は電流に加えて、使用中又は動作中の装置の他の基準電圧を含む。例えば、図面で装置又は信号が反転されるか、或いは他の基準電圧、電流、又は電荷を使用する場合、「ハイ」又は「プルアップ」と説明される構成要素は、新しい基準電圧又は電流と比較して「ロー」又は「プルダウン」である。したがって、「ハイ」という例示的な用語は相対的にロー又はハイ電圧又は電流の全てを含む。言い換えると、装置は基準が異なる電気的なフレームに基づき、本明細書で使用される電気的に相対的な説明はこれに応じて解釈される。
【0016】
本明細書で使用される用語は、単に特定の実施形態を説明することを目的としており、本発明を限定しない。本明細書で使用される単数は文脈上で明確に異なって示されない限り、複数形式を含む。「含む」及び/又は「包含する」との用語は、詳細な説明で使用される時に明示された特徴、数字、段階、動作、構成要素、及び/又はコンポーネントの存在を明確にするものであり、1つ以上の他の特徴、数字、段階、動作、構成要素、コンポーネント、及び/又はそのグループの追加又は存在を排除しない。
【0017】
実施形態は、理想的な実施形態(そして、中間構造)の概略的な図面である断面図を参照して本明細書で説明される。例えば、図面の形態変化、例えば製造技術及び/又は許容誤差は結果として予想される。したがって、実施形態は本明細書に示した領域の特定形態に限定され、例えば、製造による形態の偏差を含む。例えば、長方形で示された注入領域は、注入領域から注入されない領域へのバイナリ変化ではなく、丸みを帯びたまたは湾曲した外形及び/又はそのエッジで注入濃度の勾配を有する。このように、注入によって形成された隠された領域は、隠された領域及び注入される表面の間の領域に一部注入をもたらす。したがって、図面に示された領域は模式図であり、それらの形態は装置の領域の実際形態を示したものではなく、本発明の技術範囲を制限しない。
【0018】
特に定義されなければ、本明細書で使用される(技術的、科学的な用語を含む)すべての用語は、一般的に本発明が属する技術分野の当業者によって理解されるものと同一の意味を有する。一般的に使用される事前に定義されるような用語は、関連技術の文脈上の意味と一致する意味を有するように解釈され、本明細書で明確に定義されなければ、理想的であるか、或いはあまりにも形式的な意味として解釈されない。
【0019】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
【0020】
図1は、本発明の一実施形態によるシステムの一例を示すブロック図である。多様な実施形態で、システム100は、例えばラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、PDA(personal digital assistant)、スマートフォン、タブレット、SoC(system on chip)、及び他の適切なコンピュータのようなコンピューティング装置、又は仮想マシンやその仮想コンピューティング装置を含む。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【0021】
上述したように、グラフコンピューティングは、典型的に大規模なストレージシステムでの大量のデータの格納を伴い、しばしば分散ストレージシステムでの大量のデータの格納を伴う。同様に、グラフデータ構造の処理は、典型的に多数のコンピューティング装置で並列に遂行される。本発明は、多数のシステムを含む実施形態、又は分散された実施形態に適用され得るが、このような傾向は多数の装置から単一コンピューティング装置に移動される処理のためである。
【0022】
上述したように、グラフアプリケーションに対する顕著な性能ボトルネックは、膨大なグラフサイズ及びランダム入出力(IO又はI/O)アクセスパターンによる。CSR(compressed sparse row)及びCSC(compressed sparse column)のような標準疎グラフフォーマット(standard sparse graph format)は、エッジ値のランダムアクセスを伴う。数百万のバーテックス及び数十億のエッジを有する巨大なグラフは、DRAM(dynamic random access memory)に適合しないので、標準疎グラフフォーマットは、グラフデータをディスクに格納し、ディスクからロードするために、ランダムなディスクアクセスをもたらす。少ない計算量を有するIO集中型のグラフ作業負荷は、それらのランダムなIOアクセスパターンによってIOレイテンシが高くなる。これは、高速のNVMe(non-volatile memory express)装置であってもそれらの順次的なアクセス速度と比較して相当に低いランダム読出し及び書込み速度を有するためである。
【0023】
図1に示す実施形態で、システム100は、グラフ構造を処理するために必要なIOアクセス量を減少させるのに利用される。システム100は、グラフ構造の処理の中の一部がストレージ装置106で遂行される一実施形態を示す。他の実施形態で、同一の処理、又は処理の中の一部は、相変わらず、ホストプロセシング装置102によって遂行される。上述した内容は単なる1つの例示的な実施形態であり、本発明はこれに限定されない。
【0024】
図1に示す実施形態で、システム100は、ホストプロセシング装置又はホストプロセッサ回路102を含む。このような実施形態で、ホストプロセッサ回路102は、1つ以上のマシン実行命令語又は様々なソフトウェア、ファームウェア、又はその組み合わせを実行するように構成される。多様な実施形態で、ホストプロセッサ回路102は、CPU(central processing unit)又は他の汎用プロセッサを含む。他の実施形態で、ホストプロセッサ回路102は、特殊なプロセッサ(例えば、GPU(graphical processing unit)又は他の並列計算指向プロセッサ)を含み得る。このような実施形態で、ホストプロセッサ回路102は、グラフ構造の全体プロセシングの中の大部分を遂行する。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【0025】
図1に示す実施形態で、システム100は、システムメモリ104を含む。多様な実施形態で、システムメモリ104は、揮発性メモリ(例えば、DRAM)、不揮発性メモリ、又はその組み合わせを含む。多様な実施形態で、システムメモリ104は、一時的又は半永久的な方式でデータを格納するように構成される。
【0026】
図1に示す実施形態で、システム100は、ストレージ装置106を含む。多様な実施形態で、ストレージ装置106は、半永久的又は実質的に永久的な方式でデータを格納するように構成される。
図1に示す実施形態で、ストレージ装置106は不揮発性メモリ(例えば、フラッシュメモリ、磁気メモリ)を含む。さらに、
図1に示す実施形態で、ストレージ装置106はグラフデータ構造を少なくとも部分的に処理するように構成される。多様な実施形態で、システム100は複数のストレージ装置106を含み得る。
【0027】
このような実施形態で、ストレージ装置106は、ホストプロセシング装置102と(例えば、データ及びコマンドの全てを)通信するように構成されるか、又はメモリ管理システム(図示せず)と通信して結果的に外部のホストプロセッサ回路102と通信するように構成されたストレージシステムインターフェイス又はホストプロセッサインターフェイス回路118を含む。
【0028】
このような実施形態で、ストレージ装置106は、メモリストレージ116、又はデータを格納する複数のメモリセル、回路、又は要素を含む。
図1に示す実施形態で、メモリストレージ116は、グラフデータ構造、又はグラフデータ構造の一部をなす複数のデータ要素122を格納するように構成される。
【0029】
多様な実施形態で、ストレージ装置106は、メモリストレージ116とストレージシステムインターフェイス(ホストプロセッサインターフェイス回路)118との間で通信する入出力(IO又はI/O)システム114又は回路を含む。多様な実施形態で、IOシステム114は、FTL(flash translation layer)回路又は他の構造を含む。このような実施形態で、IOシステム114は多様なキャッシュ、テーブル、又はデータ構造、及びそれを具現するための回路を含む。
【0030】
図1に示す実施形態で、ストレージ装置106は、コントローラプロセッサ回路112を含む。多様な実施形態で、コントローラプロセッサ回路112は、ストレージ装置106内の多様なデータ管理活動を遂行するように構成される。このような実施形態で、データ管理活動は、ウェアレベリング(wear-leveling)、書込みマージング(write merging)等を含む。
図1に示す実施形態で、コントローラプロセッサ回路112はまた、グラフデータのデータ要素122を少なくとも部分的に処理するように構成される。一部の実施形態で、外部のホストプロセッサ回路102は、一部のプロセシングタスクをコントローラプロセッサ回路112にオフロード(offload)する。具体的に、一部の実施形態で、コントローラプロセッサ回路112はグラフデータ要素を、マージされた動的シャード(merged dynamic shard)にマージし、活性化エッジ/バーテックスを予測し、及び/又はバーテックス識別子(ID)を再割当するように構成される。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【0031】
図2A及び
図2Bは、本発明の一実施形態によるデータ構造の一例を示すダイヤグラムである。多様な実施形態で、このようなデータ構造(200、204、及び206)は、ストレージ装置又はメモリセルに少なくとも一部が格納される。
【0032】
データ構造200は、例示的なグラフデータ構造を示す。上述したように、グラフデータ構造は、複数のバーテックス212(例えば、バーテックスA、B、C、D、及びE)を含む。このようなバーテックス212は、現実世界又は概念的なもの(例えば、人、交差路、ウェブページ、販売される商品等)を示す。これらのバーテックス212は、エッジ214を通じて連結される。一般的に、各々のエッジ214はバーテックス212間の連関性(association)に対するいくつかの属性を示すことに連関した強さ(strength)又は値を含む。さらに、各々のエッジ214は方向を含む。一部のグラフは、単方向性であるか、又は両方向性であってもよい。例えば、エッジ(X)214は、ソースのバーテックス(A)212を目的又はターゲットのバーテックス(B)212に連結する。多様な実施形態で、無数の他の属性がバーテックス212及びエッジ214に連関される。
【0033】
データ構造204は、一実施形態で、各々のエッジ214がデータ要素204として格納されることを示す。このような実施形態で、データ要素204は、ソースバーテックス識別子(ID)252、ターゲットバーテックスID254、及びエッジ値256を含むデータのトリプレット(triplet)を含む。多様な実施形態で、このようなサブ要素(252、254、及び256)は、それ自体のデータ構造(例えば、アレイ、連関アレイ、キーバリュー対)又はデータ構造へのポインターを含む。多様な実施形態で、データ要素204は追加的な属性又は値を含み得る。上述した内容は単なる1つの例示的な実施形態であり、本発明はこれに限定されない。
【0034】
データ構造206は、一実施形態で、実際にストレージ装置に格納されるデータ構造200を示す。このような実施形態で、データ構造206は、グラフ200のエッジ214の各々に対するデータ要素270、272、274、276、278、及び280(全体としてデータ要素204)を含む。多様な実施形態で、データ要素204はソースバーテックスID252によって整列又は組織化される。
【0035】
図3A、
図3B、及び
図3Cは、本発明の一実施形態によるシステム及びデータ構造の他の例を示すダイヤグラムである。
図3A~
図3Cに示す実施形態で、システム300はまた(
図1に示した)ホストプロセシング装置を含む。
【0036】
図3A~
図3Cに示す実施形態で、グラフデータ構造は「シャード(shard)」と呼ばれる管理可能な部分にプルーン(prune)又は減少される。しばしば、グラフ構造は数十億のエッジを含む。これはそれらが大規模な並列コンピューティングクラスターで処理されなければならないことを意味する。この問題を解決するために、PSW(Parallel Sliding Windows)がディスクから非常に大きなグラフを処理するために使用される。大きいグラフがより小さいサブ部分に分割されるので、各々のサブ部分は巨大なクラスター又は分散コンピューティングシステムを必要とせずに、単一のコンピューティング装置(例えば、ホストプロセッサ)によって個別に処理される。
【0037】
上述したように、グラフはシャード(原本シャード312)にグループ化され、原本シャード312は、同一の目的バーテックス又はソースバーテックスを有するすべてのエッジのような共通点を含む。このような実施形態で、シャードのサイズは、より多くのデータの効率性を有するコンピューティングタスクのサイズに合わせるために選択される。
【0038】
さらに、グラフ構造は一般的にループ(loop)で、又は多数の反復にわたって処理される。コンピューティングシステムは、全体プロセスを再び開始する前に、全体グラフを処理又は分析する。上述したように、各々の反復の間で、エッジ/バーテックス間の値又は連結が変化する。何らかの方式で変化する値は、「活性化(active)」されると見なされ、変化しないエッジ/バーテックスは、しばしば「非活性化(inactive)」されると看做される。
【0039】
図3A~
図3Cに示す実施形態で、ストレージ装置(又はメモリセル)306は、原本シャード(original shard)312を格納する。
図3A~
図3Cに示す実施形態では、3つの原本シャード312が示される。第1シャードは、データ要素1A、1B、2A、2B、3A、及び3Bを含む。第2シャードは、データ要素1C、1D、2C、2D、3C、及び3Dを含む。第3シャードは、データ要素1E、1F、2E、2F、3E、3Fを含む。
【0040】
図3Aに示す実施形態で、ホストプロセシング装置(例えば、ホストプロセッサ回路)は、原本シャード312からシステムメモリ304(例えば、DRAM)に所望のデータ要素をロードするか、又は読み出す。
図3Aに示す実施形態で、所望のデータ要素は、第1シャード1A、1B、2A、2B、3A、及び3Bの全体、第2シャードの要素1C及び1D、並びに第3シャードの要素1E及び1Fを含む。これらのデータ要素は、処理されるシャード(in-process shard)314Aを含む。
【0041】
この処理の間に、ホストプロセシング装置は、処理されるシャード314Aの一部が変化するか、又は活性化されることを検出する。これはボックス315Aで示され、ボックス315Aは、要素1A、1C、1Eが最後の反復以後に変化して、活性化されることを示す。
【0042】
このような実施形態で、ホストプロセシング装置は、活性化要素(active element)315Aをストレージ装置306に再び書き込む。このような活性化要素315Aは、動的シャード(dynamic shard)316Aのセットに含まれる。動的シャード316Aは、原本シャード312の修正されるか又は最小化されたバーションである。このような実施形態で、このような動的シャード316Aは、活性化要素、活性化エッジを有する要素、又は一部の実施形態で活性化バーテックスを有する要素のみを含み得る。
【0043】
続いて、
図3Bは、次の処理段階を示す。第2処理段階又はステージで、ホストプロセシング装置(例えば、ホストプロセッサ回路)は、原本シャード312からシステムメモリ304に所望のデータ要素をロードするか、又は読み出す。
図3Bに示す実施形態で、所望のデータ要素は、第1シャードの要素2A及び2B、第2シャードのすべての要素、並びに第3シャードの要素2E及び2Fを含む。これらのデータ要素は、処理されるシャード314Bを含む。
【0044】
この処理の間に、ホストプロセシング装置は、処理されるシャード314Bの一部が変化するか、又は活性化されることを検出する(要素1A、1C、及び1Eは既に活性化されたとして検出されている)。これはボックス315Bで示され、ボックス315Bは、要素2A、2C、及び2Eが最後の反復以後に変化して、活性化されることを示す。このような実施形態で、ホストプロセシング装置は、活性化要素315Bをストレージ装置306に再び書き込む。このような活性化要素315Bは、動的シャード316Bのセットに含まれるか、又は添付/追加される。
【0045】
図3Cは、次の処理段階を示す。第3処理段階又はステージで、ホストプロセシング装置(例えば、ホストプロセッサ回路)は、原本シャード312からシステムメモリ304に所望のデータ要素をロードするか、又は読み出す。
図3Cに示す実施形態で、所望のデータ要素は、第1シャードの要素3A及び3B、第2シャードの要素3C及び3D、並びに第3シャードのすべての要素を含む。これらのデータ要素は、処理されるシャード314Cを含む。
【0046】
この処理の間に、ホストプロセシング装置は、処理されるシャード314Cの一部が変化するか、又は活性化されることを検出する。これはボックス315Cで示され、ボックス315Cは、要素3A、3C、及び3Eが最後の反復以後に変化して、活性化されることを示す。このような実施形態で、ホストプロセシング装置は、活性化要素315Cをストレージ装置306に再び書き込む。このような活性化要素315Cは、動的シャード316Cのセットに含まれるか、又は添付/追加される。
【0047】
図3Cに示す実施形態で、3つの動的シャード316Cが生成される。第1動的シャードは要素1A、2A、及び3Aを含む。第2動的シャードは要素1C、2C、及び3Cを含む。そして、第3動的シャードは要素1E、2E、及び3Eを含む。上述した内容は単なる1つの例示的な実施形態であり、本発明はこれに限定されない。このような実施形態で、活性化要素が変化することに応じて、グラフ処理に対する各々の反復以後に動的シャード316Cは変化する。
【0048】
このような実施形態で、動的シャード316Cの使用は、より少ないデータがシステムメモリ304とストレージ装置306との間で伝達される必要があるため、未来の処理(未来の反復)に対するIO非効率性を減少させる。しかし、小さいシャードサイズはグラフ処理のための並列処理量を減少させ、ディスクアクセスの数を増加させる。グラフ作業負荷のディスクアクセスの数を同一に維持しながら、データの量が減少されると、利用可能なメモリバジェット(memory budget)の非効率的な利用をもたらす。
【0049】
図3D、
図3E、及び
図3Fは、本発明の一実施形態によるシステム及びデータ構造のさらに他の例を示すダイヤグラムである。本実施形態で、上記で生成された動的シャード316(図示せず)を使用して、収容する代わりに、新しい動的シャードがより高い効率性を提供するように生成される。さらに、このような生成は、オフロード回路又はエンジンを介して発生する。一部の実施形態で、これは、(さらにIOトラフィックを減少させるように)ストレージ装置自体を含み、(ホストプロセッサ回路ではない)コントローラプロセッサ回路によって遂行される。
【0050】
図3D~
図3Fに示す実施形態で、システム又はストレージ装置301は、ストレージ部分に、複数のメモリセル356、及びマージ回路354又はプロセシング回路を含む。多様な実施形態で、マージ回路354は、ストレージ装置301のコントローラプロセッサ回路を含む。他の実施形態で、マージ動作及びマージ回路354は、ホストプロセッサ回路に含まれ得る。しかし、後述するように、(外部ではない)地域化(localize)されたマージ回路354はIOオーバーヘッドを減少させ、より効率性を増加させることができる。
【0051】
図3Dに示す実施形態で、(例えば、上述した技術を通じて生成された)多数の動的シャード317が、メモリセル356に格納される。このような動的シャード317は、その後マージ回路354にロードされる。他の実施形態で、マージ回路354は、ストレージのメモリセル356に位置するデータに、このような作業を遂行する。
【0052】
このような実施形態で、マージ回路354は、要素のサブセット365D(1A、1C、1E、及び1G)を、マージ回路354のバッファに(処理されるデータ要素364Dとして)ロードする。マージ回路354はその後、所望のシャードサイズ及び要素の数に応じて、処理されるデータ要素364Dを再グループ化する。
図3Dに示す実施形態で、マージ回路354は、4つの小さな動的シャード317を2つの大きなマージされた動的シャード366Dにリフォームする。上述した内容は単なる1つの例示的な実施形態であり、本発明はこれに限定されない。
【0053】
図3Dに示す実施形態で、要素1A及び1Cは、メモリセル356に再び書き込まれて、第1のマージされた動的シャードになる。また、要素1E及び1Gは、メモリセル356に再び書き込まれて、第2のマージされた動的シャードになる。これらのシャードは、マージされた動的シャード366Dに含まれる。
【0054】
続いて
図3Eで、マージ回路354は、要素のサブセット365E(2A、2C、2E、及び2G)を、マージ回路354のバッファに(処理されるデータ要素364Eとして)ロードする。マージ回路354はその後、所望のシャードサイズ及び要素の数に応じて、処理されるデータ要素364Eを再グループ化する。
【0055】
図3Eに示す実施形態で、要素2A及び2Cは、メモリセル356に再び書き込まれるか、又は添付されて、第1のマージされた動的シャードになる。一方、要素2E及び2Gは、メモリセル356に再び書き込まれるか、又は添付されて、第2のマージされた動的シャードになる。これらのシャードは、マージされた動的シャード366Eに含まれる。
【0056】
続いて
図3Fで、マージ回路354は要素のサブセット365F(3A、3C、3E、及び3G)をマージ回路354のバッファに(処理されるデータ要素364Fとして)ロードする。マージ回路354はその後、所望のシャードサイズ及び要素の数に応じて処理されるデータ要素364Fを再グループ化する。
【0057】
図3Fに示す実施形態で、要素3A及び3Cは、メモリセル356に再び書き込まれるか、又は添付されて、第1のマージされた動的シャードになる。一方、要素3E及び3Gは、メモリセル356に再び書き込まれるか、又は添付されて、第2のマージされた動的シャードになる。これらのシャードは、マージされた動的シャード366Fに含まれる。
【0058】
多様な実施形態で、マージ動作はすべての区間(又は多数の区間)で反復された読出し及び書込み動作を伴う。このような実施形態で、マージ回路354は多数の動的シャード317に対する読出しを遂行して最新のアップデートされた値を得る。このような実施形態で、マージ回路354はその後、新しくマージされたシャード366(図示せず)に対する書込み動作を遂行する。一実施形態で、マージ処理が完了した後、マージ回路354は動的シャード317への書込みを解除するか、又はもはや防止しない。これは、すべての活性化エッジ又は要素が、マージされたシャード366にマージされたためである。
【0059】
このような実施形態で、マージ動作のための(そして、マージ回路354による)メモリアクセスパターンは、順次的及び/又はストリームアクセスのパターンである。これは、入力シャード317が既にソースバーテックスインデックス(ID)によって整列され、マージ回路354が以後エッジのソースバーテックスインデックス(ID)に基づいた出力を整列するためである。このような実施形態で、動的シャード317に対するメモリアクセスパターンは順次的な読出しを含み、マージされたシャード366に対するメモリアクセスパターンは順次的な書込みを含む。
【0060】
多様な実施形態で、マージ動作はストレージ装置内で遂行され、さらに大きいシステムには影響が及ばない(又は最小限に影響が及ぶ)(例えば、RAMの帯域幅消耗、CPUサイクル消耗等)。上述したように、マージ回路354はストレージ装置のコントローラプロセッサ回路に含まれる。多様な実施形態で、これはまた一般的なストレージ維持管理(例えば、ウェアレベリング、書込みマージング等)を遂行するコントローラプロセッサ回路を含む。しかし、他の実施形態で、マージ回路354は、埋め込み型プロセッサ、並列コンピューティングプロセッサ、又は再プログラマブルプロセッサ(例えば、FPGA(field-programmable gate array)等)のような、専用プロセッサを含み得る。さらに、多様な実施形態で、ストレージ装置内でマージ動作を具現することは、要求されるRAMの量を減少させる。これは、各々の動的シャードから1つのエッジエントリのみを要求する動作が、比較のためのバッファで処理されるためである。
【0061】
上述したように、動的シャード316の典型的な生成、及びグラフコンピューティング目的のためのシャードの処理は、典型的に3つの段階、読出し、処理、及び書込みを伴う。ローデータ(raw data)はストレージ装置から読み出される(読出し段階)。次いで、処理され、この場合には動的シャード316を生成することを含む(処理段階)。そして、その後、最後にストレージに再び書き込まれる(書込み段階)。
【0062】
図示された実施形態で、マージされた動的シャード366の生成及び処理は、ストレージ装置が使用中ではないか、又は超過的なリソース能力(例えば、帯域幅、メモリセル356に対する読出し/書込みポート等)を有する時に、上述したことを1回ずつ処理する。このような実施形態で、マージ回路354はホストプロセッサ回路が処理段階に進入する時まで、マージされたシャード366を生成することを待機する。読出し及び書込み段階の間、ストレージ装置は使用中であるが、処理段階の間、ストレージ装置は一般的に遊休状態(idle)である。このような実施形態で、本発明はグラフ構造の全体処理の間に、使用されないコンピューティング能力及びIO帯域幅を利用する。
【0063】
再び
図3Aに戻って、動的シャードの生成は活性化エッジ(例えば、活性化要素315A、315B、及び315C)の検出に基づくことが分かる。多様な実施形態で、活性化エッジの検出及び/又は予測は、グラフデータの処理をより効率的にする。多様な実施形態で、プロセッサ(ホスト又はコントローラ)は、多数の活性化エッジ(又は要素)の検出又は予測ポリシーを利用する。このような実施形態で、プロセッサはグラフアプリケーション又は利用される設定に基づいてこのようなポリシーの閾値又は値を動的に調整するか、又はこのような多数のポリシー間で動的にスイッチングするように構成される。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【0064】
このような実施形態で、プロセッサ(ホスト又はコントローラ)はバーテックス及びエッジの活性化をプロフィール(profile)するように構成され、また多様な予測ポリシーを使用して活性化エッジ予測の失敗率をプロフィールするように構成される。このように、失敗ポリシーはより正確なものと代替される。このような実施形態で、多様なパラメーターが多様な予測ポリシーに対してプロフィールされる。これは、各々の予測ポリシーが予測のために多様なパラメーターを利用するためである。多様な実施形態で、多数の予測ポリシーが互いに直交(orthogonal)し、より良い予測のために組み合わされる。
【0065】
第1予測ポリシーは、予測頻度又は予測に使用される過去深さ(historical depth)を変えることを含む。ただ1つの以前の反復に基づいた活性化エッジに関する決定は、直後の反復のための効率的な最適化である。しかし、これはすべての後に続く反復のための最も効率的なシナリオではない。このような実施形態で、すべての反復で活性化エッジをアップデートしないことは有用である。多様な実施形態で、以前の活性化エッジは、遊休状態である短い時間の後に再び活性化される。したがって、動的シャードで以前の活性化又は活動を中断したエッジを維持すること(そして、さらに大きいサブグラフを使用すること)は、より低い失敗ポリシーを有し、したがってサブグラフから直ちに非活性化エッジを除去するよりもさらに低い性能オーバーヘッドを有する。このような実施形態で、エッジが非活性化と看做される前に非活性化レベル(相互作用の数)は、失敗率プロフィールによる予測頻度を動的に調節する。多様な実施形態で、これは閾値の使用を伴う。
【0066】
再び
図2Bに戻って、エッジアップデートは一般的に2つの部類、即ち、観測されたものと観測されないものとがある。観測されたアップデートはグラフ処理の現在の反復の間に既知のものである。一方、観測されないアップデートはグラフ処理の次の反復まで知られないものである。観測されたアップデートはターゲットバーテックスIDがソースバーテックスIDよりも大きい(例えば、データ要素270、272、274、及び278)。これは一般的に、データ要素がそれらのソースバーテックスIDの順に処理されるためである。観測されないアップデートはターゲットバーテックスIDがソースバーテックスIDよりも小さい(例えば、データ要素276及び280)。
【0067】
多様な実施形態で、活性化エッジ判断/予測メカニズムは、観測されたアップデートが観測されないアップデートと比較してどのように処理されるかに応じて異なる。このような実施形態で、すべての観測されないエッジは、それらの状態又は値のいかなる変化に拘らず、活性化として看做される。このような実施形態で、観測されたアップデートのみが、実際に変化されたか、それによって活性化であるか否かを確認するためにテストされる。このような実施形態で、変化されない観測されたアップデートを除去することは、次の反復のためによりIO効率的である。さらに、エッジに対するアップデートはまた、バーテックス及びエッジが「ホット(hot)」である識別子(indicator)であり、未来のさらに多くのアップデートを伴い得る。
【0068】
多様な実施形態で、活性化データ要素を判断/予測する1つのポリシーは、バーテックス基盤の予測及び分析を含む。このような実施形態で、与えられたバーテックスの入力方向エッジ(incoming edge)の中の1つに対するアップデートが発生すると、プロセッサは該当バーテックスに関連したすべてのエッジを活性化(active)としてマークする。一部の実施形態で、プロセッサは出力方向エッジ(outgoing edge)から出た入力方向エッジのみを活性化として設定する。多様な実施形態で、バーテックス基盤の予測は巨大な動的シャードサイズをもたらすが、またより低い失敗予測率を有するので、エッジ基盤の予測よりもさらに低い性能オーバーヘッドを有し得る。
【0069】
その他の実施形態で、活性化データ要素を判断/予測するための他のポリシーは、値基盤の予測モデルを含む。一実施形態で、可変的な閾値は活性化エッジ予測のために利用される。このような実施形態で、任意の変化されたエッジを活性化としてマーキングする代わりに、活性化と看做される前に、意味のある(閾値によって定義される)量によるエッジ変化が要求される。このような実施形態で、エッジ(又は上述したバーテックス基盤ポリシーと共に使用される場合は、バーテックス)は、活性化と看做される前に、特定の変動量を許容し得る。このような実施形態で、変動量が閾値よりも小さければ、プロセッサは活性化エッジから該当エッジを除外し、したがって処理されるエッジの量を減少させることによって、全体システム性能を改善することができる。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【0070】
図4A及び
図4Bは、本発明の他の実施形態によるデータ構造の一例を示すダイヤグラムである。多様な実施形態で、データ構造400及び401は、上述したストレージ媒体又はストレージ装置に少なくとも一部が格納される。多様な実施形態で、後述する動作はコントローラプロセッサ回路(又は他のプロセッサ、例えばホストプロセッサ)によって遂行される。このような実施形態で、コントローラプロセッサ回路は、ホストプロセッサ回路の使用又は助け無しで動作を遂行し、ストレージ装置が遊休状態であるか又は過剰なリソースを有する時間区間の間、動作を遂行する。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【0071】
図4Aに示す実施形態で、データ構造400は、インデックス又は識別子(ID)A~Lでラベリングされた多数のバーテックス402を含む。
図4Aに示すように、これらのインデックスは、若干組織化されなくともよい。例えば、バーテックスAは2つのエッジを通じてバーテックスLに連結されるが、バーテックスBには絶対連結されない。バーテックスKはバーテックスA、B、及びJに連結される。このような実施形態で、バーテックスIDは、バーテックスがデータ構造400に追加されるように割当られるか、又は他の理由でそれらの割当が与えられる。また、多くのグラフアプリケーションで、データ構造は数十億のバーテックスを含み得る。一部の実施形態で、データ構造400は、さらに大きいグラフのサブグラフを表すことができ、サブグラフは単一ストレージ装置内に格納される。
【0072】
多様な実施形態で、プロセッサ(例えば、コントローラプロセッサ回路)は、バーテックスIDを再割当するように構成される。このような実施形態で、プロセッサは目的バーテックス(destination vertex)のバーテックスID(インデックス番号)をソースバーテックスIDに(数値的に、又は、図示された実施形態ではアルファベット順に)より近いID(インデックス番号)に再割当するように構成される。
【0073】
多様な実施形態で、これはグラフ構造400を横断(traversing)することによって遂行される。例えば、プロセッサはグラフ構造400をウォークスルー(walk through)し、ソース及び目的地を判断し、その後可能な又は必要とされるバーテックスIDを再割当する。一部の実施形態で、プロセッサは、BFS(Breath First Search)又はDFS(Depth First Search)のような技術を使用して横断を遂行する。但し、上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【0074】
このような実施形態で、再割当技術は、
図4Bのグラフ構造401をもたらす。また、バーテックス402は(A~L)のIDを有するが、これらのID割当は、あまりランダムでないか、より順次的である。例えば、バーテックスLをBに再割当することによって、バーテックスA及びBは互いに隣接し、エッジを共有する。このような再割当は、バーテックスL/Bの意味又はその値を変化させず、この再割当はただそれに連関されたインデックス又は識別子のみを変化させる。同様に、グラフ構造400で元のBに識別されるか又はラベリングされたバーテックスは、グラフ構造401で「移動(move)」せず、単にラベルDに再割当されるか又は改称される。
【0075】
しかし、
図2Bのデータ構造206に示すように、データ要素はそれらのバーテックスIDに基づいて格納又は整列される傾向がある。したがって、ソース及び目的地が互いに近くなるようにバーテックスIDを再割当することによって、それらの連関されたデータ要素は互いに近くに格納される。これは、より効率的なデータアクセスをもたらし、データアクセスはランダム又は非順次的ではなく、より順次的である。したがって、ディスクアクセスの回数が減少する。バーテックスIDの再割当は、グラフの実際のデータ構造に対するより効率的な格納又は整列をもたらす。
【0076】
多様な実施形態で、この再割当は、活性化バーテックスのみで遂行される。多様な実施形態で、活性化バーテックスの数は、通常、全体グラフ又はサブグラフ内のバーテックスの数よりもはるかに少ない。このような実施形態で、より少ないバーテックスに対するIDの再割当は、それらのソースバーテックスにより近いIDを割当する可能性を増加させる。上述したように、一部の実施形態で、多様なエッジ予測技術が、活性化バーテックスが何なのかを定義するのに利用される。
【0077】
一部の実施形態で、再割当技術は、より速い活性化バーテックス/エッジ判断又は予測をもたらす。このような実施形態で、活性化バーテックスがより低いIDに割当されるほど、それらはグラフ処理(ID順にデータ要素を処理する傾向がある)の各反復の開始(又は開始により近く)に処理される。一般的に、バーテックス又はエッジが活性化されているか否かを識別するために、プロセッサはバーテックスの入力エッジの全てが処理される時まで待機する必要がある。再び、データ要素が共にグループ化されるようにデータ要素を整列又は再割当することによって、このような待機時間が減少される。
【0078】
多様な実施形態で、バーテックス再割当は、動的シャードの同時マージングで使用される。上述したように、マージ動作は、各々の区間の間に、反復される読出し及び書込み動作を含む。このような実施形態で、アップデートが単一シャードに地域化されるようにIDを再割当することによって、動的シャードをマージするために必要なシャードアクセスの数が減少される。これは結局、新しいシャードに連関されたすべてのアップデートを収集するのにより短い時間を提供する。
【0079】
図5は、本発明の原理にしたがって形成された半導体装置を含む情報処理システムの概略的なブロック図である。
【0080】
図5を参照すると、情報処理システム500は、本発明の原理にしたがって構成された1つ以上の装置を含む。他の実施形態で、情報処理システム500は本発明の原理にしたがう1つ以上の技術を利用するか又は実行する。
【0081】
多様な実施形態で、情報処理システム500は、例えばラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、サーバー、ブレードサーバー、PDA(personal digital assistant)、スマートフォン、タブレット、及び他の適切なコンピュータのようなコンピューティング装置、又は仮想マシン若しくはその仮想コンピューティング装置を含む。多様な実施形態で、情報処理システム500は使用者(図示せず)によって利用される。
【0082】
本発明の一実施形態による情報処理システム500は、中央処理装置(CPU)、ロジック、又はプロセッサ510をさらに含む。一部の実施形態で、プロセッサ510は、1つ以上の機能ユニットブロック(FUB)又は組み合わせロジックブロック(CLB)515を含む。このような実施形態で、組み合わせロジックブロックは、多様なブールロジック演算(例えば、NAND、NOR、NOT、XOR)、安定化ロジック装置(例えば、フリップフロップ、ラッチ)、他のロジック装置、又はこれらの組み合わせを含む。これらの組み合わせロジック動作は、所望の結果を達成するように、入力信号を処理する単純な、又は複雑な方式に構成される。同期組み合わせロジック動作の幾つかの例示的な実施形態を説明するが、本発明はこれに限定されず、非同期動作又はその組み合わせを含み得る。一実施形態で、組み合わせロジック動作は、複数の相補型金属酸化物半導体(CMOS)トランジスタを含む。多様な実施形態で、これらのCMOSトランジスタは、ロジック動作を遂行するゲートに配置される。しかし、他の技術が利用されてもよく、他の技術も本発明の技術範囲内にある。
【0083】
本発明の一実施形態による情報処理システム500は、揮発性メモリ520(例えば、ランダムアクセスメモリ(RAM))をさらに含む。本発明の一実施形態による情報処理システム500は不揮発性メモリ530(例えば、ハードドライブ、光学メモリ、NAND又はフラッシュメモリ等)をさらに含む。一部の実施形態で、揮発性メモリ520、不揮発性メモリ530、又はその組み合わせ若しくは一部の中のいずれか1つは、「記憶媒体(storage medium)」と称される。多様な実施形態で、揮発性メモリ520及び/又は不揮発性メモリ530は、データを半永久的又は実質的に永久的な方式で格納するように構成される。
【0084】
多様な実施形態で、情報処理システム500は、情報処理システム500が通信ネットワークの一部であり、通信ネットワークを経由して通信するように構成された1つ以上のネットワークインターフェイス540を含む。WiFi(登録商標)プロトコルの例は、これに限定されないが、IEEE(Institute of Electrical and Electronics Engineers) 802.11g、IEEE 802.11n等を含む。セルラープロトコルの例は、これに限定されないが、IEEE 802.16m(いわゆる、Wireless-MAN(Metropolitan Area Network) Advanced)、Long Term Evolution(LTE(登録商標)))、EDGE(Enhanced Data rates for GSM(登録商標)(Global System for Mobile Communication)(登録商標))、HSPA+(High-Speed Packet Access)等を含む。有線プロトコルの例は、これに限定されないが、IEEE 802.3(いわゆる、Ethernet(登録商標))、Fibre Channel、Power Line communication(例えば、HomePlug(登録商標)、IEEE 1901等)等を含む。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【0085】
本発明の一実施形態による情報処理システム500は、使用者インターフェイス部550(例えば、ディスプレイアダプター、ハプティックインターフェイス、人間インターフェイス装置)をさらに含む。多様な実施形態で、このような使用者インターフェイス部550は、使用者から入力を受信するように構成されるか、又は使用者に出力を提供するように構成される。それだけでなく、他の種類の装置は、使用者との相互作用を提供するのに使用される。例えば、使用者に提供されるフィードバックは、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックなどのような感覚フィードバックの任意の形態であってもよい。そして、使用者からの入力は、音響、音声、又は触覚入力を含む任意の形態で受信される。
【0086】
多様な実施形態で、情報処理システム500は、1つ以上の他のハードウェア装置又はハードウェア構成要素560(例えば、ディスプレーやモニター、キーボード、マウス、カメラ、指紋認識器、ビデオプロセッサ)を含む。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【0087】
本発明の一実施形態による情報処理システム500は、1つ以上のシステムバス505をさらに含む。このような実施形態で、システムバス505は、プロセッサ510、揮発性メモリ520、不揮発性メモリ530、ネットワークインターフェイス540、使用者インターフェイス部550、及び1つ以上のハードウェア構成要素560を通信可能に結合するように構成される。プロセッサ510によって処理されたデータ又は不揮発性メモリ530の外部から入力されたデータは、不揮発性メモリ530又は揮発性メモリ520の中のいずれか1つに格納される。
【0088】
多様な実施形態で、情報処理システム500は、1つ以上のソフトウェア構成要素570を含むか、又は実行する。一部の実施形態で、ソフトウェア構成要素570は、オペレーティングシステム(OS)及び/又はアプリケーションを含む。一部の実施形態で、オペレーティングシステムは、1つ以上のサービスをアプリケーションに提供するように構成され、アプリケーションと情報処理システム500の多様なハードウェア構成要素(例えば、プロセッサ510、ネットワークインターフェイス540)との間の媒介役として管理又は作動するように構成される。このような実施形態で、情報処理システム500は、1つ以上の基本アプリケーション(native application)を含む。1つ以上の基本アプリケーションは、ローカルに設置され(例えば、不揮発性メモリ530内に)、プロセッサ510によって直接実行されるように構成され、オペレーティングシステムと直接的に相互作用する。このような実施形態で、基本アプリケーションは、予めコンパイルされたマシン実行コードを含む。一部の実施形態で、基本アプリケーションは、ソース又はオブジェクトコードをプロセッサ510によって実行される実行コードに変換するスクリプト翻訳機(例えば、C shell(csh)、AppleScript、AutoHotkey)又は仮想実行マシン(VM)(例えば、Java(登録商標) Virtual Machine、the Microsoft(登録商標) Common Language Runtime)を含む。
【0089】
上述した半導体装置は、多様なパッケージ技術を利用してカプセル化される。例えば、本発明の原理にしたがって構成された半導体装置は、POP(package on package)技術、BGA(ball grid array)技術、CSP(chip scale package)技術、PLCC(plastic leaded chip carrier)技術、PDIP(plastic dual in-line package)技術、die in waffle pack技術、die in wafer form技術、COB(chip on board)技術、CERDIP(ceramic dual in-line package)技術、PMQFP(plastic metric quad flat package)技術、PQFP(plastic quad flat package)技術、SOIC(small outline package)技術、SSOP(shrink small outline package)技術、TSOP(thin small outline package)技術、TQFP(thin quad flat package)技術、SIP(system in package)技術、MCP(multi-chip package)技術、WFP(wafer-level fabricated package)技術、WSP(wafer-level processed stack package)技術、又は通常の技術者に公知の他の技術の中の任意の1つの技術を利用してカプセル化される。
【0090】
方法の段階は、入力データを作動させ出力を生成することによって機能を遂行するようにコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって遂行される。また、方法の段階は、例えば、FPGA(field programmable gate array)又はASIC(application-specific integrated circuit)のような専用ロジック回路によって遂行され、装置は専用ロジック回路で具現される。
【0091】
多様な実施形態で、コンピュータ読取り可能媒体は、実行時、装置が方法の段階の少なくとも一部を遂行させる命令語を含み得る。一部の実施形態で、コンピュータ読取り可能媒体は、磁気媒体(magnetic medium)、光学媒体(optical medium)、他の媒体、又はその組み合わせ(例えば、CD-ROM、ハードドライブ、ROM、フラッシュドライブ)に含まれる。このような実施形態で、コンピュータ読取り可能媒体は、類型的で、非一時的に実施される製造物である。
【0092】
以上、本発明の原理を例示的な実施形態を参照して説明したが、多様な変更及び修正が本発明の思想及び技術範囲を逸脱せずに、達成され得ることは当業者に明確である。したがって、上述した実施形態は限定されず、単に例示的なものである。したがって、本発明の技術範囲はそれらの均等物の最も広い許容可能な解釈によって決定され、上述した説明によって限定又は制限されない。
【符号の説明】
【0093】
100、300 システム
102 ホストプロセシング装置(ホストプロセッサ回路)
104、304 システムメモリ
106、306 ストレージ装置
112 コントローラプロセッサ回路
114 IOシステム
116 メモリストレージ
118 ストレージシステムインターフェイス(ホストプロセッサインターフェイス回路)
122、270、272、274、276、278、280 データ要素
200 データ構造(グラフ)
204 データ構造(データ要素)
206 データ構造
212、402 バーテックス
214 エッジ
252 ソースバーテックスID
254 目的/ターゲットバーテックスID
256 エッジ値
301 システム(ストレージ装置)
312 原本シャード
314A、314B、314C 処理されるシャード
315A、315B、315C ボックス(活性化要素)
316A、316B、316C、317 動的シャード
354 マージ回路
356 メモリセル
364D、364E、364F 処理されるデータ要素
365D、365E、365F 要素のサブセット
366D、366E、366F マージされた動的シャード
400、401 データ構造(グラフ構造)
500 情報処理システム
505 システムバス
510 プロセッサ
515 組み合わせロジックブロック
520 揮発性メモリ
530 不揮発性メモリ
540 ネットワークインターフェイス
550 使用者インターフェイス部
560 ハードウェア構成要素(他のハードウェア装置)
570 ソフトウェア(ソフトウェア構成要素)