(57)【要約】【課題】効率性が増加するように最適な動的シャードを生成する装置及びシステムを提供する。【解決手段】本発明の装置は、外部のホストプロセッサ回路とデータ及びコマンドを通信するホストプロセッサインターフェイス回路と、グラフデータ要素をマージされた動的シャードにマージするコントローラプロセッサ回路と、グラフ構造の少なくとも一部のデータを格納する不揮発性メモリと、を含み、マージされた動的シャードは同一の数のグラフデータ要素を含み、グラフ構造は、各々がバーテックス及びエッジを含むデータ要素を含み、データ要素のサブ部分はシャードにグループ化される。【選択図】図１
2020095701.tif 000002
【特許請求の範囲】
【請求項１】
外部のホストプロセッサ回路とデータ及びコマンドを通信するホストプロセッサインターフェイス回路と、
グラフデータ要素をマージされた動的シャードにマージするコントローラプロセッサ回路と、
グラフ構造の少なくとも一部のデータを格納する不揮発性メモリと、を含み、
前記マージされた動的シャードの各々は、同一の数の前記グラフデータ要素を含み、
前記グラフ構造は、各々がバーテックス及びエッジを含むデータ要素を含み、前記データ要素のサブ部分は、シャードにグループ化されることを特徴とする装置。
【請求項２】
前記コントローラプロセッサ回路は、活性化エッジのみを含むデータ要素から動的シャードを生成することを特徴とする請求項１に記載の装置。
【請求項３】
前記コントローラプロセッサ回路は、前記装置が前記ホストインターフェイス回路によって受信されたコマンドに関与しない時間に、少なくとも一部に基づいて、前記グラフデータ要素のマージを遂行することを特徴とする請求項１に記載の装置。
【請求項４】
前記ホストプロセッサインターフェイス回路は、
シャード内の０（ゼロ）以上のデータ要素のアップデートを含む処理のために前記外部のホストプロセッサ回路に前記シャードを提供し、
前記アップデートされたデータ要素があれば、前記不揮発性メモリに前記アップデートされたデータ要素を動的シャードの一部として書き込むことを特徴とする請求項１に記載の装置。
【請求項５】
前記コントローラプロセッサ回路は、
前記ホストプロセッサ回路を通じて前記動的シャードのサイズを収集し、
マージされた動的シャードにマージするように、隣接する動的シャード又は一部シャードの数を決定し、
前記シャードの順序属性を維持するようにソース識別子として前記活性化エッジを整列することを特徴とする請求項２に記載の装置。
【請求項６】
前記コントローラプロセッサ回路は、バッファメモリを含み、
前記コントローラプロセッサ回路は、
マージされた動的シャードにマージされるシャードの各々に対して、
前記不揮発性メモリから前記バッファメモリに前記シャードの各々から１つのデータ要素のみをコピーし、
１つ以上のマージされた動的シャードに前記データ要素をグループ化し、
前記不揮発性メモリに前記データ要素を前記１つ以上のマージされた動的シャードの一部として書き込むことを特徴とする請求項１に記載の装置。
【請求項７】
活性化エッジは、活性化エッジ予測ポリシーによって判断されることを特徴とする請求項２に記載の装置。
【請求項８】
前記活性化エッジは、動的に調節される閾値と比較されて、前記ホストプロセッサ回路による処理の複数の以前の反復に基づいて判断されることを特徴とする請求項７に記載の装置。
【請求項９】
前記活性化エッジは、処理反復内で観測されないアップデートされた活性化エッジを含むことを特徴とする請求項７に記載の装置。
【請求項１０】
前記活性化エッジ予測ポリシーは、処理反復内で観測されたアップデートされた活性化エッジの失敗率に少なくとも一部に基づいて、動的に調節されることを特徴とする請求項７に記載の装置。
【請求項１１】
前記活性化エッジは、前記エッジに連関されたバーテックスが変化するか否かを検出し、前記バーテックスが変化すると、前記バーテックスに連関されたすべてのエッジ又は少なくとも一部の特定タイプを活性化エッジとして見なすことによって、判断されることを特徴とする請求項７に記載の装置。
【請求項１２】
各々のバーテックスはバーテックスインデックス番号に連関され、
前記コントローラプロセッサ回路は、
第１インデックス番号から第２インデックス番号に目的バーテックスのインデックス番号を再割当して、前記目的バーテックスの第２インデックス番号が前記目的バーテックスの第１インデックス番号よりも数値的にソースバーテックスのインデックス番号に近いようにし、前記ソースバーテックスは、前記目的バーテックスに連関されることを特徴とする請求項１に記載の装置。
【請求項１３】
前記コントローラプロセッサ回路は、
前記少なくとも一部グラフ構造を複数のサブグラフ構造に分割し、
ソースバーテックス及び目的バーテックスの連関性を識別するように、第１バーテックスに横断（ｔｒａｖｅｒｓａｌ）技術を利用し、
前記ソースバーテックス及び目的バーテックスの連関性に少なくとも一部に基づいて、バーテックスインデックス番号の各々を再割当することを特徴とする請求項１２に記載の装置。
【請求項１４】
前記コントローラプロセッサ回路は、
前記目的バーテックスが活性化バーテックスである場合に限って目的バーテックスのインデックス番号を再割当することを特徴とする請求項１２に記載の装置。
【請求項１５】
前記コントローラプロセッサ回路は、
データ要素を含む１つ以上の新しいシャードを生成し、
前記データ要素のバーテックスのインデックス番号は、再割当されることを特徴とする請求項１２に記載の装置。
【請求項１６】
前記コントローラプロセッサ回路は、
１つ以上のシャード内の活性化アップデートされたデータ要素を地域化するようにバーテックス識別数の再割当を利用することを特徴とする請求項１に記載の装置。
【請求項１７】
グラフデータ構造に関連された命令語を実行するホストプロセッサ回路と、
少なくとも１つのストレージ装置と、を備え、
前記ストレージ装置の各々は、
前記ホストプロセッサ回路とデータを通信するホストプロセッサインターフェイス回路と、
グラフデータ要素をマージされた動的シャードにマージするコントローラプロセッサ回路と、
グラフ構造の少なくとも一部のデータを格納する不揮発性メモリと、を含み、
前記マージされた動的シャードは、同一の数の前記グラフデータ要素を含み、
前記グラフ構造は、各々がバーテックス及びエッジを含むデータ要素を含み、前記データ要素のサブ部分は、シャードにグループ化されることを特徴とするシステム。
【請求項１８】
前記コントローラプロセッサ回路は、活性化エッジのみを含むデータ要素から動的シャードを生成し、
前記コントローラプロセッサ回路は、前記ストレージ装置の各々が前記ホストインターフェイス回路によって受信されたコマンドに関与しない時間に少なくとも一部に基づいて、前記グラフデータ要素のマージを遂行することを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記ホストプロセッサ回路は、活性化エッジ予測ポリシーを利用することによってエッジが活性化エッジであるか否かを判断することを特徴とする請求項１７に記載のシステム。
【請求項２０】
各々のバーテックスがバーテックスインデックス番号に連関され、
前記ホストプロセッサ回路は、
第１インデックス番号から第２インデックス番号に目的バーテックスのインデックス番号を再割当して、前記目的バーテックスの第２インデックス番号が前記目的バーテックスの第１インデックス番号よりも数値的にソースバーテックスのインデックス番号に近いようにし、前記ソースバーテックスは、前記目的バーテックスに連関されることを特徴とする請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの処理及び格納に関し、より詳しくはグラフ作業負荷のためのストレージでの最適な動的シャードを生成する装置及びシステムに関する。
【背景技術】
【０００２】
コンピュータ科学で、グラフ理論はオブジェクト間のペアワイズ（ｐａｉｒｗｉｓｅ）関係をモデリングするのに使用されるデータ構造であるグラフの学問である。この文脈でのグラフは、エッジ、アーク、又はラインによって連結されるバーテックス（ｖｅｒｔｅｘ）、ノード、又はポイントで構成される。コンピューティングで、グラフデータベース（ｇｒａｐｈ  ｄａｔａｂａｓｅ、ＧＤＢ）は、属性、エッジ、及びノードを有するセマンティック（ｓｅｍａｎｔｉｃ）クエリーのためのグラフ構造を使用してデータを格納及び示すデータベースである。システムの核心的な概念はグラフ（又はエッジ、又は関係）であり、グラフはノード間の関係を示すエッジ及びデータのノードのコレクション（ｃｏｌｌｅｃｔｉｏｎ）を格納するデータ項目と直接的に関連させる。このような関係は格納されたデータが直接的に共に連結されるようにし、多くの場合、１回の動作で検索されるようにする。グラフデータベースはデータ間の関係を優先的に保持している。グラフデータベース内のクエリー関係はそれがデータベース自体内に永久的に格納されるので、高速である。関係は、グラフデータベースを使用して直観的に視覚化されることができ、強く相互連結されたデータに有用である。
【０００３】
ビックデータアプリケーションがより実用的になったので、グラフコンピューティングが最近人気を集めている。幾つかの例として、グラフはコンピュータ科学に使用されて計算の流れを示す。オペレーティングシステムで、リソース割当グラフは、処理、デッドロック（ｄｅａｄｌｏｃｋ）の検出、及び訂正に使用される。グラフは分子の研究に使用され、化学で結合構造を研究するために使用され、原子の研究に使用されている。使用されるグラフは生物学及び自然保護活動に利用され、バーテックスは特定種（ｓｐｅｃｉｅｓ）が存在する領域を示し、エッジ（ｅｄｇｅ）は領域間の移動経路又は動きを示す。Ｇｏｏｇｌｅマップ（登録商標）、そしてＧＰＳ（ｇｌｏｂａｌ  ｐｏｓｉｔｉｏｎｉｎｇ  ｓｙｓｔｅｍ）アプリケーションは一般的に、運送システムを構築するためにグラフを使用し、２つの（又はさらに多い）道路の交差路がバーテックスであると見なし、２つのバーテックスを連結する道路がエッジであると見なす。したがって、これらのナビゲーションシステムはグラフを利用して２つのバーテックス間の最も短い経路を計算する。このように、グラフは検索及び推薦エンジンに使用されてページ関連性及び相互連結を確認する。フェイスブック（Ｆａｃｅｂｏｏｋ（登録商標））及びソーシャルメディアで、使用者はバーテックスであると見なされ、もしそれらが友達であれば、それらの間を継ぐエッジが存在する。フェイスブックの友達提案技術はグラフ理論を使用する。
【０００４】
グラフアプリケーションに対する顕著な性能ボトルネックは、膨大なグラフサイズ及びランダム入出力（ＩＯ又はＩ／Ｏ）アクセスパターンによる。ＣＳＲ（ｃｏｍｐｒｅｓｓｅｄ  ｓｐａｒｓｅ  ｒｏｗ）及びＣＳＣ（ｃｏｍｐｒｅｓｓｅｄ  ｓｐａｒｓｅ  ｃｏｌｕｍｎ）のような標準疎グラフフォーマット（ｓｔａｎｄａｒｄ  ｓｐａｒｓｅ  ｇｒａｐｈ  ｆｏｒｍａｔ）は、エッジ値のランダムアクセスを伴う。数百万のバーテックス及び数十億のエッジを有する巨大なグラフはＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）に適合しないので、標準疎グラフフォーマットはグラフデータをディスクに格納し、ディスクからロードするために、ランダムなディスクアクセスをもたらす。少ない計算量を有するＩＯ集中型のグラフ作業負荷は、それらのランダムなＩＯアクセスパターンによってＩＯレイテンシが高くなる。これは、高速のＮＶＭｅ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）装置であってもそれらの順次的なアクセス速度と比較して相当に低いランダム読出し及び書込み速度を有するためである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第９７４０７６２号公報
【特許文献２】米国特許第９５３５９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、上記従来技術の問題点に鑑みてなされたものであって、本発明の目的は、効率性が増加するように最適な動的シャードを生成する装置及びシステムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明の一態様による装置は、外部のホストプロセッサ回路とデータ及びコマンドを通信するホストプロセッサインターフェイス回路と、グラフデータ要素をマージされた動的シャードにマージするコントローラプロセッサ回路と、グラフ構造の少なくとも一部のデータを格納する不揮発性メモリと、を含み、前記マージされた動的シャードの各々は、同一の数の前記グラフデータ要素を含み、前記グラフ構造は、各々がバーテックス及びエッジを含むデータ要素を含み、前記データ要素のサブ部分は、シャードにグループ化されることを特徴とする。
【０００８】
上記目的を達成するためになされた本発明の一態様によるシステムは、グラフデータ構造に関連された命令語を実行するホストプロセッサ回路と、少なくとも１つのストレージ装置と、を備え、前記ストレージ装置の各々は、前記ホストプロセッサ回路とデータを通信するホストプロセッサインターフェイス回路と、グラフデータ要素をマージされた動的シャードにマージするコントローラプロセッサ回路と、グラフ構造の少なくとも一部のデータを格納する不揮発性メモリと、を含み、前記マージされた動的シャードの各々は、同一の数の前記グラフデータシャードを含み、前記グラフ構造は、各々がバーテックス及びエッジを含むデータ要素を含み、前記データ要素のサブ部分は、シャードにグループ化されることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、グラフ作業負荷のための最適な動的シャードを生成することによって、効率性が増加された装置又はシステムを提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態によるシステムの一例を示すブロック図である。
【図２Ａ】本発明の一実施形態によるデータ構造の一例を示すダイヤグラムである。
【図２Ｂ】本発明の一実施形態によるデータ構造の一例を示すダイヤグラムである。
【図３Ａ】本発明の一実施形態によるシステム及びデータ構造の他の例を示すダイヤグラムである。
【図３Ｂ】本発明の一実施形態によるシステム及びデータ構造の他の例を示すダイヤグラムである。
【図３Ｃ】本発明の一実施形態によるシステム及びデータ構造の他の例を示すダイヤグラムである。
【図３Ｄ】本発明の一実施形態によるシステム及びデータ構造のさらに他の例を示すダイヤグラムである。
【図３Ｅ】本発明の一実施形態によるシステム及びデータ構造のさらに他の例を示すダイヤグラムである。
【図３Ｆ】本発明の一実施形態によるシステム及びデータ構造のさらに他の例を示すダイヤグラムである。
【図４Ａ】本発明の他の実施形態によるデータ構造の一例を示すダイヤグラムである。
【図４Ｂ】本発明の他の実施形態によるデータ構造の一例を示すダイヤグラムである。
【図５】本発明の原理にしたがって形成された半導体装置を含む情報処理システムの概略的なブロック図でる。
【発明を実施するための形態】
【００１１】
以下の多様な実施形態では、一部の実施形態が図面を参照しながらより詳細に説明される。しかし、本発明は多くの異なる形態で具現され、本明細書で説明する実施形態に限定されない。むしろ、このような実施形態は本開示が徹底的かつ完全であり、本発明の技術範囲を当業者に完全に伝えるように提供される。図面で、レイヤー及び領域のサイズ並びに相対的サイズは明確化のために誇張されている場合がある。
【００１２】
構成要素又はレイヤーが、他の構成要素又はレイヤーの「上にある」、「連結される」、又は「結合される」と記載された場合、これらは直接的に他の構成要素又はレイヤー上に存在するか、連結されるか、又は結合されるか、又はその間に構成要素又はレイヤーが存在し得る。一方で、構成要素又はレイヤーが、他の構成要素又はレイヤーの「上に直接的にある」、「直接的に連結される」、又は「直接的に結合される」と記載された場合、その間に構成要素又はレイヤーは存在しない。類似の符号は類似の構成要素を指す。本明細書で使用される用語「及び／又は」は、関連する列挙項目の中の１つ以上の任意のすべての組み合わせを含む。
【００１３】
第１、第２、第３などの用語は、本明細書で多様な構成要素、コンポーネント、領域、レイヤー、及び／又は区域を説明するために使用されるが、これらの構成要素、コンポーネント、領域、レイヤー、及び／又は区域は、このような用語で限定されない。これらの用語は単に１つの構成要素、コンポーネント、領域、レイヤー、又は区域を区別するために使用される。したがって、以下で説明される第１構成要素、コンポーネント、領域、レイヤー、又は区域は、本発明の教示から逸脱せずに、第２構成要素、コンポーネント、領域、レイヤー、又は区域と称される。
【００１４】
「下」、「下部」、「上」、「上部」等のような空間的に相対的な用語が、説明の便宜のために本明細書で使用され、図面に図示されたように、他の構成要素又は特徴に対する１つの構成要素又は特徴の関係を説明する。空間的に相対的な用語は図面に図示された方向に加えて、使用中又は動作中の装置の異なる方向を含む。例えば、図面で装置が裏返される場合、他の構成要素又は特徴の「下」又は「下部」にあると説明された構成要素は、他の素子又は特徴の「上」に向く。したがって、「下」との例示的な用語は上と下の両方を含む。装置は、別の状態（９０°回転されるか又は他の方向）に向き、本明細書で使用される空間的に相対的な説明はそれに応じて解釈される。
【００１５】
同様に、「ハイ」、「ロー」、「プルアップ」、「プルダウン」、「１」、「０」等の電気的な用語は、説明の便宜のために本明細書で使用され、図面に図示されたように、他の電圧レベル又は他の構成要素又は特徴に対する、１つの電圧レベル又は電流を説明する。電気的に相対的な用語は図面に図示された電圧又は電流に加えて、使用中又は動作中の装置の他の基準電圧を含む。例えば、図面で装置又は信号が反転されるか、或いは他の基準電圧、電流、又は電荷を使用する場合、「ハイ」又は「プルアップ」と説明される構成要素は、新しい基準電圧又は電流と比較して「ロー」又は「プルダウン」である。したがって、「ハイ」という例示的な用語は相対的にロー又はハイ電圧又は電流の全てを含む。言い換えると、装置は基準が異なる電気的なフレームに基づき、本明細書で使用される電気的に相対的な説明はこれに応じて解釈される。
【００１６】
本明細書で使用される用語は、単に特定の実施形態を説明することを目的としており、本発明を限定しない。本明細書で使用される単数は文脈上で明確に異なって示されない限り、複数形式を含む。「含む」及び／又は「包含する」との用語は、詳細な説明で使用される時に明示された特徴、数字、段階、動作、構成要素、及び／又はコンポーネントの存在を明確にするものであり、１つ以上の他の特徴、数字、段階、動作、構成要素、コンポーネント、及び／又はそのグループの追加又は存在を排除しない。
【００１７】
実施形態は、理想的な実施形態（そして、中間構造）の概略的な図面である断面図を参照して本明細書で説明される。例えば、図面の形態変化、例えば製造技術及び／又は許容誤差は結果として予想される。したがって、実施形態は本明細書に示した領域の特定形態に限定され、例えば、製造による形態の偏差を含む。例えば、長方形で示された注入領域は、注入領域から注入されない領域へのバイナリ変化ではなく、丸みを帯びたまたは湾曲した外形及び／又はそのエッジで注入濃度の勾配を有する。このように、注入によって形成された隠された領域は、隠された領域及び注入される表面の間の領域に一部注入をもたらす。したがって、図面に示された領域は模式図であり、それらの形態は装置の領域の実際形態を示したものではなく、本発明の技術範囲を制限しない。
【００１８】
特に定義されなければ、本明細書で使用される（技術的、科学的な用語を含む）すべての用語は、一般的に本発明が属する技術分野の当業者によって理解されるものと同一の意味を有する。一般的に使用される事前に定義されるような用語は、関連技術の文脈上の意味と一致する意味を有するように解釈され、本明細書で明確に定義されなければ、理想的であるか、或いはあまりにも形式的な意味として解釈されない。
【００１９】
以下、本発明を実施するための形態の具体例を、図面を参照しながら詳細に説明する。
【００２０】
図１は、本発明の一実施形態によるシステムの一例を示すブロック図である。多様な実施形態で、システム１００は、例えばラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、ＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、スマートフォン、タブレット、ＳｏＣ（ｓｙｓｔｅｍ  ｏｎ  ｃｈｉｐ）、及び他の適切なコンピュータのようなコンピューティング装置、又は仮想マシンやその仮想コンピューティング装置を含む。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【００２１】
上述したように、グラフコンピューティングは、典型的に大規模なストレージシステムでの大量のデータの格納を伴い、しばしば分散ストレージシステムでの大量のデータの格納を伴う。同様に、グラフデータ構造の処理は、典型的に多数のコンピューティング装置で並列に遂行される。本発明は、多数のシステムを含む実施形態、又は分散された実施形態に適用され得るが、このような傾向は多数の装置から単一コンピューティング装置に移動される処理のためである。
【００２２】
上述したように、グラフアプリケーションに対する顕著な性能ボトルネックは、膨大なグラフサイズ及びランダム入出力（ＩＯ又はＩ／Ｏ）アクセスパターンによる。ＣＳＲ（ｃｏｍｐｒｅｓｓｅｄ  ｓｐａｒｓｅ  ｒｏｗ）及びＣＳＣ（ｃｏｍｐｒｅｓｓｅｄ  ｓｐａｒｓｅ  ｃｏｌｕｍｎ）のような標準疎グラフフォーマット（ｓｔａｎｄａｒｄ  ｓｐａｒｓｅ  ｇｒａｐｈ  ｆｏｒｍａｔ）は、エッジ値のランダムアクセスを伴う。数百万のバーテックス及び数十億のエッジを有する巨大なグラフは、ＤＲＡＭ（ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）に適合しないので、標準疎グラフフォーマットは、グラフデータをディスクに格納し、ディスクからロードするために、ランダムなディスクアクセスをもたらす。少ない計算量を有するＩＯ集中型のグラフ作業負荷は、それらのランダムなＩＯアクセスパターンによってＩＯレイテンシが高くなる。これは、高速のＮＶＭｅ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｅｘｐｒｅｓｓ）装置であってもそれらの順次的なアクセス速度と比較して相当に低いランダム読出し及び書込み速度を有するためである。
【００２３】
図１に示す実施形態で、システム１００は、グラフ構造を処理するために必要なＩＯアクセス量を減少させるのに利用される。システム１００は、グラフ構造の処理の中の一部がストレージ装置１０６で遂行される一実施形態を示す。他の実施形態で、同一の処理、又は処理の中の一部は、相変わらず、ホストプロセシング装置１０２によって遂行される。上述した内容は単なる１つの例示的な実施形態であり、本発明はこれに限定されない。
【００２４】
図１に示す実施形態で、システム１００は、ホストプロセシング装置又はホストプロセッサ回路１０２を含む。このような実施形態で、ホストプロセッサ回路１０２は、１つ以上のマシン実行命令語又は様々なソフトウェア、ファームウェア、又はその組み合わせを実行するように構成される。多様な実施形態で、ホストプロセッサ回路１０２は、ＣＰＵ（ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）又は他の汎用プロセッサを含む。他の実施形態で、ホストプロセッサ回路１０２は、特殊なプロセッサ（例えば、ＧＰＵ（ｇｒａｐｈｉｃａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）又は他の並列計算指向プロセッサ）を含み得る。このような実施形態で、ホストプロセッサ回路１０２は、グラフ構造の全体プロセシングの中の大部分を遂行する。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【００２５】
図１に示す実施形態で、システム１００は、システムメモリ１０４を含む。多様な実施形態で、システムメモリ１０４は、揮発性メモリ（例えば、ＤＲＡＭ）、不揮発性メモリ、又はその組み合わせを含む。多様な実施形態で、システムメモリ１０４は、一時的又は半永久的な方式でデータを格納するように構成される。
【００２６】
図１に示す実施形態で、システム１００は、ストレージ装置１０６を含む。多様な実施形態で、ストレージ装置１０６は、半永久的又は実質的に永久的な方式でデータを格納するように構成される。図１に示す実施形態で、ストレージ装置１０６は不揮発性メモリ（例えば、フラッシュメモリ、磁気メモリ）を含む。さらに、図１に示す実施形態で、ストレージ装置１０６はグラフデータ構造を少なくとも部分的に処理するように構成される。多様な実施形態で、システム１００は複数のストレージ装置１０６を含み得る。
【００２７】
このような実施形態で、ストレージ装置１０６は、ホストプロセシング装置１０２と（例えば、データ及びコマンドの全てを）通信するように構成されるか、又はメモリ管理システム（図示せず）と通信して結果的に外部のホストプロセッサ回路１０２と通信するように構成されたストレージシステムインターフェイス又はホストプロセッサインターフェイス回路１１８を含む。
【００２８】
このような実施形態で、ストレージ装置１０６は、メモリストレージ１１６、又はデータを格納する複数のメモリセル、回路、又は要素を含む。図１に示す実施形態で、メモリストレージ１１６は、グラフデータ構造、又はグラフデータ構造の一部をなす複数のデータ要素１２２を格納するように構成される。
【００２９】
多様な実施形態で、ストレージ装置１０６は、メモリストレージ１１６とストレージシステムインターフェイス（ホストプロセッサインターフェイス回路）１１８との間で通信する入出力（ＩＯ又はＩ／Ｏ）システム１１４又は回路を含む。多様な実施形態で、ＩＯシステム１１４は、ＦＴＬ（ｆｌａｓｈ  ｔｒａｎｓｌａｔｉｏｎ  ｌａｙｅｒ）回路又は他の構造を含む。このような実施形態で、ＩＯシステム１１４は多様なキャッシュ、テーブル、又はデータ構造、及びそれを具現するための回路を含む。
【００３０】
図１に示す実施形態で、ストレージ装置１０６は、コントローラプロセッサ回路１１２を含む。多様な実施形態で、コントローラプロセッサ回路１１２は、ストレージ装置１０６内の多様なデータ管理活動を遂行するように構成される。このような実施形態で、データ管理活動は、ウェアレベリング（ｗｅａｒ−ｌｅｖｅｌｉｎｇ）、書込みマージング（ｗｒｉｔｅ  ｍｅｒｇｉｎｇ）等を含む。図１に示す実施形態で、コントローラプロセッサ回路１１２はまた、グラフデータのデータ要素１２２を少なくとも部分的に処理するように構成される。一部の実施形態で、外部のホストプロセッサ回路１０２は、一部のプロセシングタスクをコントローラプロセッサ回路１１２にオフロード（ｏｆｆｌｏａｄ）する。具体的に、一部の実施形態で、コントローラプロセッサ回路１１２はグラフデータ要素を、マージされた動的シャード（ｍｅｒｇｅｄ  ｄｙｎａｍｉｃ  ｓｈａｒｄ）にマージし、活性化エッジ／バーテックスを予測し、及び／又はバーテックス識別子（ＩＤ）を再割当するように構成される。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【００３１】
図２Ａ及び図２Ｂは、本発明の一実施形態によるデータ構造の一例を示すダイヤグラムである。多様な実施形態で、このようなデータ構造（２００、２０４、及び２０６）は、ストレージ装置又はメモリセルに少なくとも一部が格納される。
【００３２】
データ構造２００は、例示的なグラフデータ構造を示す。上述したように、グラフデータ構造は、複数のバーテックス２１２（例えば、バーテックスＡ、Ｂ、Ｃ、Ｄ、及びＥ）を含む。このようなバーテックス２１２は、現実世界又は概念的なもの（例えば、人、交差路、ウェブページ、販売される商品等）を示す。これらのバーテックス２１２は、エッジ２１４を通じて連結される。一般的に、各々のエッジ２１４はバーテックス２１２間の連関性（ａｓｓｏｃｉａｔｉｏｎ）に対するいくつかの属性を示すことに連関した強さ（ｓｔｒｅｎｇｔｈ）又は値を含む。さらに、各々のエッジ２１４は方向を含む。一部のグラフは、単方向性であるか、又は両方向性であってもよい。例えば、エッジ（Ｘ）２１４は、ソースのバーテックス（Ａ）２１２を目的又はターゲットのバーテックス（Ｂ）２１２に連結する。多様な実施形態で、無数の他の属性がバーテックス２１２及びエッジ２１４に連関される。
【００３３】
データ構造２０４は、一実施形態で、各々のエッジ２１４がデータ要素２０４として格納されることを示す。このような実施形態で、データ要素２０４は、ソースバーテックス識別子（ＩＤ）２５２、ターゲットバーテックスＩＤ２５４、及びエッジ値２５６を含むデータのトリプレット（ｔｒｉｐｌｅｔ）を含む。多様な実施形態で、このようなサブ要素（２５２、２５４、及び２５６）は、それ自体のデータ構造（例えば、アレイ、連関アレイ、キーバリュー対）又はデータ構造へのポインターを含む。多様な実施形態で、データ要素２０４は追加的な属性又は値を含み得る。上述した内容は単なる１つの例示的な実施形態であり、本発明はこれに限定されない。
【００３４】
データ構造２０６は、一実施形態で、実際にストレージ装置に格納されるデータ構造２００を示す。このような実施形態で、データ構造２０６は、グラフ２００のエッジ２１４の各々に対するデータ要素２７０、２７２、２７４、２７６、２７８、及び２８０（全体としてデータ要素２０４）を含む。多様な実施形態で、データ要素２０４はソースバーテックスＩＤ２５２によって整列又は組織化される。
【００３５】
図３Ａ、図３Ｂ、及び図３Ｃは、本発明の一実施形態によるシステム及びデータ構造の他の例を示すダイヤグラムである。図３Ａ〜図３Ｃに示す実施形態で、システム３００はまた（図１に示した）ホストプロセシング装置を含む。
【００３６】
図３Ａ〜図３Ｃに示す実施形態で、グラフデータ構造は「シャード（ｓｈａｒｄ）」と呼ばれる管理可能な部分にプルーン（ｐｒｕｎｅ）又は減少される。しばしば、グラフ構造は数十億のエッジを含む。これはそれらが大規模な並列コンピューティングクラスターで処理されなければならないことを意味する。この問題を解決するために、ＰＳＷ（Ｐａｒａｌｌｅｌ  Ｓｌｉｄｉｎｇ  Ｗｉｎｄｏｗｓ）がディスクから非常に大きなグラフを処理するために使用される。大きいグラフがより小さいサブ部分に分割されるので、各々のサブ部分は巨大なクラスター又は分散コンピューティングシステムを必要とせずに、単一のコンピューティング装置（例えば、ホストプロセッサ）によって個別に処理される。
【００３７】
上述したように、グラフはシャード（原本シャード３１２）にグループ化され、原本シャード３１２は、同一の目的バーテックス又はソースバーテックスを有するすべてのエッジのような共通点を含む。このような実施形態で、シャードのサイズは、より多くのデータの効率性を有するコンピューティングタスクのサイズに合わせるために選択される。
【００３８】
さらに、グラフ構造は一般的にループ（ｌｏｏｐ）で、又は多数の反復にわたって処理される。コンピューティングシステムは、全体プロセスを再び開始する前に、全体グラフを処理又は分析する。上述したように、各々の反復の間で、エッジ／バーテックス間の値又は連結が変化する。何らかの方式で変化する値は、「活性化（ａｃｔｉｖｅ）」されると見なされ、変化しないエッジ／バーテックスは、しばしば「非活性化（ｉｎａｃｔｉｖｅ）」されると看做される。
【００３９】
図３Ａ〜図３Ｃに示す実施形態で、ストレージ装置（又はメモリセル）３０６は、原本シャード（ｏｒｉｇｉｎａｌ  ｓｈａｒｄ）３１２を格納する。図３Ａ〜図３Ｃに示す実施形態では、３つの原本シャード３１２が示される。第１シャードは、データ要素１Ａ、１Ｂ、２Ａ、２Ｂ、３Ａ、及び３Ｂを含む。第２シャードは、データ要素１Ｃ、１Ｄ、２Ｃ、２Ｄ、３Ｃ、及び３Ｄを含む。第３シャードは、データ要素１Ｅ、１Ｆ、２Ｅ、２Ｆ、３Ｅ、３Ｆを含む。
【００４０】
図３Ａに示す実施形態で、ホストプロセシング装置（例えば、ホストプロセッサ回路）は、原本シャード３１２からシステムメモリ３０４（例えば、ＤＲＡＭ）に所望のデータ要素をロードするか、又は読み出す。図３Ａに示す実施形態で、所望のデータ要素は、第１シャード１Ａ、１Ｂ、２Ａ、２Ｂ、３Ａ、及び３Ｂの全体、第２シャードの要素１Ｃ及び１Ｄ、並びに第３シャードの要素１Ｅ及び１Ｆを含む。これらのデータ要素は、処理されるシャード（ｉｎ−ｐｒｏｃｅｓｓ  ｓｈａｒｄ）３１４Ａを含む。
【００４１】
この処理の間に、ホストプロセシング装置は、処理されるシャード３１４Ａの一部が変化するか、又は活性化されることを検出する。これはボックス３１５Ａで示され、ボックス３１５Ａは、要素１Ａ、１Ｃ、１Ｅが最後の反復以後に変化して、活性化されることを示す。
【００４２】
このような実施形態で、ホストプロセシング装置は、活性化要素（ａｃｔｉｖｅ  ｅｌｅｍｅｎｔ）３１５Ａをストレージ装置３０６に再び書き込む。このような活性化要素３１５Ａは、動的シャード（ｄｙｎａｍｉｃ  ｓｈａｒｄ）３１６Ａのセットに含まれる。動的シャード３１６Ａは、原本シャード３１２の修正されるか又は最小化されたバーションである。このような実施形態で、このような動的シャード３１６Ａは、活性化要素、活性化エッジを有する要素、又は一部の実施形態で活性化バーテックスを有する要素のみを含み得る。
【００４３】
続いて、図３Ｂは、次の処理段階を示す。第２処理段階又はステージで、ホストプロセシング装置（例えば、ホストプロセッサ回路）は、原本シャード３１２からシステムメモリ３０４に所望のデータ要素をロードするか、又は読み出す。図３Ｂに示す実施形態で、所望のデータ要素は、第１シャードの要素２Ａ及び２Ｂ、第２シャードのすべての要素、並びに第３シャードの要素２Ｅ及び２Ｆを含む。これらのデータ要素は、処理されるシャード３１４Ｂを含む。
【００４４】
この処理の間に、ホストプロセシング装置は、処理されるシャード３１４Ｂの一部が変化するか、又は活性化されることを検出する（要素１Ａ、１Ｃ、及び１Ｅは既に活性化されたとして検出されている）。これはボックス３１５Ｂで示され、ボックス３１５Ｂは、要素２Ａ、２Ｃ、及び２Ｅが最後の反復以後に変化して、活性化されることを示す。このような実施形態で、ホストプロセシング装置は、活性化要素３１５Ｂをストレージ装置３０６に再び書き込む。このような活性化要素３１５Ｂは、動的シャード３１６Ｂのセットに含まれるか、又は添付／追加される。
【００４５】
図３Ｃは、次の処理段階を示す。第３処理段階又はステージで、ホストプロセシング装置（例えば、ホストプロセッサ回路）は、原本シャード３１２からシステムメモリ３０４に所望のデータ要素をロードするか、又は読み出す。図３Ｃに示す実施形態で、所望のデータ要素は、第１シャードの要素３Ａ及び３Ｂ、第２シャードの要素３Ｃ及び３Ｄ、並びに第３シャードのすべての要素を含む。これらのデータ要素は、処理されるシャード３１４Ｃを含む。
【００４６】
この処理の間に、ホストプロセシング装置は、処理されるシャード３１４Ｃの一部が変化するか、又は活性化されることを検出する。これはボックス３１５Ｃで示され、ボックス３１５Ｃは、要素３Ａ、３Ｃ、及び３Ｅが最後の反復以後に変化して、活性化されることを示す。このような実施形態で、ホストプロセシング装置は、活性化要素３１５Ｃをストレージ装置３０６に再び書き込む。このような活性化要素３１５Ｃは、動的シャード３１６Ｃのセットに含まれるか、又は添付／追加される。
【００４７】
図３Ｃに示す実施形態で、３つの動的シャード３１６Ｃが生成される。第１動的シャードは要素１Ａ、２Ａ、及び３Ａを含む。第２動的シャードは要素１Ｃ、２Ｃ、及び３Ｃを含む。そして、第３動的シャードは要素１Ｅ、２Ｅ、及び３Ｅを含む。上述した内容は単なる１つの例示的な実施形態であり、本発明はこれに限定されない。このような実施形態で、活性化要素が変化することに応じて、グラフ処理に対する各々の反復以後に動的シャード３１６Ｃは変化する。
【００４８】
このような実施形態で、動的シャード３１６Ｃの使用は、より少ないデータがシステムメモリ３０４とストレージ装置３０６との間で伝達される必要があるため、未来の処理（未来の反復）に対するＩＯ非効率性を減少させる。しかし、小さいシャードサイズはグラフ処理のための並列処理量を減少させ、ディスクアクセスの数を増加させる。グラフ作業負荷のディスクアクセスの数を同一に維持しながら、データの量が減少されると、利用可能なメモリバジェット（ｍｅｍｏｒｙ  ｂｕｄｇｅｔ）の非効率的な利用をもたらす。
【００４９】
図３Ｄ、図３Ｅ、及び図３Ｆは、本発明の一実施形態によるシステム及びデータ構造のさらに他の例を示すダイヤグラムである。本実施形態で、上記で生成された動的シャード３１６（図示せず）を使用して、収容する代わりに、新しい動的シャードがより高い効率性を提供するように生成される。さらに、このような生成は、オフロード回路又はエンジンを介して発生する。一部の実施形態で、これは、（さらにＩＯトラフィックを減少させるように）ストレージ装置自体を含み、（ホストプロセッサ回路ではない）コントローラプロセッサ回路によって遂行される。
【００５０】
図３Ｄ〜図３Ｆに示す実施形態で、システム又はストレージ装置３０１は、ストレージ部分に、複数のメモリセル３５６、及びマージ回路３５４又はプロセシング回路を含む。多様な実施形態で、マージ回路３５４は、ストレージ装置３０１のコントローラプロセッサ回路を含む。他の実施形態で、マージ動作及びマージ回路３５４は、ホストプロセッサ回路に含まれ得る。しかし、後述するように、（外部ではない）地域化（ｌｏｃａｌｉｚｅ）されたマージ回路３５４はＩＯオーバーヘッドを減少させ、より効率性を増加させることができる。
【００５１】
図３Ｄに示す実施形態で、（例えば、上述した技術を通じて生成された）多数の動的シャード３１７が、メモリセル３５６に格納される。このような動的シャード３１７は、その後マージ回路３５４にロードされる。他の実施形態で、マージ回路３５４は、ストレージのメモリセル３５６に位置するデータに、このような作業を遂行する。
【００５２】
このような実施形態で、マージ回路３５４は、要素のサブセット３６５Ｄ（１Ａ、１Ｃ、１Ｅ、及び１Ｇ）を、マージ回路３５４のバッファに（処理されるデータ要素３６４Ｄとして）ロードする。マージ回路３５４はその後、所望のシャードサイズ及び要素の数に応じて、処理されるデータ要素３６４Ｄを再グループ化する。図３Ｄに示す実施形態で、マージ回路３５４は、４つの小さな動的シャード３１７を２つの大きなマージされた動的シャード３６６Ｄにリフォームする。上述した内容は単なる１つの例示的な実施形態であり、本発明はこれに限定されない。
【００５３】
図３Ｄに示す実施形態で、要素１Ａ及び１Ｃは、メモリセル３５６に再び書き込まれて、第１のマージされた動的シャードになる。また、要素１Ｅ及び１Ｇは、メモリセル３５６に再び書き込まれて、第２のマージされた動的シャードになる。これらのシャードは、マージされた動的シャード３６６Ｄに含まれる。
【００５４】
続いて図３Ｅで、マージ回路３５４は、要素のサブセット３６５Ｅ（２Ａ、２Ｃ、２Ｅ、及び２Ｇ）を、マージ回路３５４のバッファに（処理されるデータ要素３６４Ｅとして）ロードする。マージ回路３５４はその後、所望のシャードサイズ及び要素の数に応じて、処理されるデータ要素３６４Ｅを再グループ化する。
【００５５】
図３Ｅに示す実施形態で、要素２Ａ及び２Ｃは、メモリセル３５６に再び書き込まれるか、又は添付されて、第１のマージされた動的シャードになる。一方、要素２Ｅ及び２Ｇは、メモリセル３５６に再び書き込まれるか、又は添付されて、第２のマージされた動的シャードになる。これらのシャードは、マージされた動的シャード３６６Ｅに含まれる。
【００５６】
続いて図３Ｆで、マージ回路３５４は要素のサブセット３６５Ｆ（３Ａ、３Ｃ、３Ｅ、及び３Ｇ）をマージ回路３５４のバッファに（処理されるデータ要素３６４Ｆとして）ロードする。マージ回路３５４はその後、所望のシャードサイズ及び要素の数に応じて処理されるデータ要素３６４Ｆを再グループ化する。
【００５７】
図３Ｆに示す実施形態で、要素３Ａ及び３Ｃは、メモリセル３５６に再び書き込まれるか、又は添付されて、第１のマージされた動的シャードになる。一方、要素３Ｅ及び３Ｇは、メモリセル３５６に再び書き込まれるか、又は添付されて、第２のマージされた動的シャードになる。これらのシャードは、マージされた動的シャード３６６Ｆに含まれる。
【００５８】
多様な実施形態で、マージ動作はすべての区間（又は多数の区間）で反復された読出し及び書込み動作を伴う。このような実施形態で、マージ回路３５４は多数の動的シャード３１７に対する読出しを遂行して最新のアップデートされた値を得る。このような実施形態で、マージ回路３５４はその後、新しくマージされたシャード３６６（図示せず）に対する書込み動作を遂行する。一実施形態で、マージ処理が完了した後、マージ回路３５４は動的シャード３１７への書込みを解除するか、又はもはや防止しない。これは、すべての活性化エッジ又は要素が、マージされたシャード３６６にマージされたためである。
【００５９】
このような実施形態で、マージ動作のための（そして、マージ回路３５４による）メモリアクセスパターンは、順次的及び／又はストリームアクセスのパターンである。これは、入力シャード３１７が既にソースバーテックスインデックス（ＩＤ）によって整列され、マージ回路３５４が以後エッジのソースバーテックスインデックス（ＩＤ）に基づいた出力を整列するためである。このような実施形態で、動的シャード３１７に対するメモリアクセスパターンは順次的な読出しを含み、マージされたシャード３６６に対するメモリアクセスパターンは順次的な書込みを含む。
【００６０】
多様な実施形態で、マージ動作はストレージ装置内で遂行され、さらに大きいシステムには影響が及ばない（又は最小限に影響が及ぶ）（例えば、ＲＡＭの帯域幅消耗、ＣＰＵサイクル消耗等）。上述したように、マージ回路３５４はストレージ装置のコントローラプロセッサ回路に含まれる。多様な実施形態で、これはまた一般的なストレージ維持管理（例えば、ウェアレベリング、書込みマージング等）を遂行するコントローラプロセッサ回路を含む。しかし、他の実施形態で、マージ回路３５４は、埋め込み型プロセッサ、並列コンピューティングプロセッサ、又は再プログラマブルプロセッサ（例えば、ＦＰＧＡ（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）等）のような、専用プロセッサを含み得る。さらに、多様な実施形態で、ストレージ装置内でマージ動作を具現することは、要求されるＲＡＭの量を減少させる。これは、各々の動的シャードから１つのエッジエントリのみを要求する動作が、比較のためのバッファで処理されるためである。
【００６１】
上述したように、動的シャード３１６の典型的な生成、及びグラフコンピューティング目的のためのシャードの処理は、典型的に３つの段階、読出し、処理、及び書込みを伴う。ローデータ（ｒａｗ  ｄａｔａ）はストレージ装置から読み出される（読出し段階）。次いで、処理され、この場合には動的シャード３１６を生成することを含む（処理段階）。そして、その後、最後にストレージに再び書き込まれる（書込み段階）。
【００６２】
図示された実施形態で、マージされた動的シャード３６６の生成及び処理は、ストレージ装置が使用中ではないか、又は超過的なリソース能力（例えば、帯域幅、メモリセル３５６に対する読出し／書込みポート等）を有する時に、上述したことを１回ずつ処理する。このような実施形態で、マージ回路３５４はホストプロセッサ回路が処理段階に進入する時まで、マージされたシャード３６６を生成することを待機する。読出し及び書込み段階の間、ストレージ装置は使用中であるが、処理段階の間、ストレージ装置は一般的に遊休状態（ｉｄｌｅ）である。このような実施形態で、本発明はグラフ構造の全体処理の間に、使用されないコンピューティング能力及びＩＯ帯域幅を利用する。
【００６３】
再び図３Ａに戻って、動的シャードの生成は活性化エッジ（例えば、活性化要素３１５Ａ、３１５Ｂ、及び３１５Ｃ）の検出に基づくことが分かる。多様な実施形態で、活性化エッジの検出及び／又は予測は、グラフデータの処理をより効率的にする。多様な実施形態で、プロセッサ（ホスト又はコントローラ）は、多数の活性化エッジ（又は要素）の検出又は予測ポリシーを利用する。このような実施形態で、プロセッサはグラフアプリケーション又は利用される設定に基づいてこのようなポリシーの閾値又は値を動的に調整するか、又はこのような多数のポリシー間で動的にスイッチングするように構成される。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【００６４】
このような実施形態で、プロセッサ（ホスト又はコントローラ）はバーテックス及びエッジの活性化をプロフィール（ｐｒｏｆｉｌｅ）するように構成され、また多様な予測ポリシーを使用して活性化エッジ予測の失敗率をプロフィールするように構成される。このように、失敗ポリシーはより正確なものと代替される。このような実施形態で、多様なパラメーターが多様な予測ポリシーに対してプロフィールされる。これは、各々の予測ポリシーが予測のために多様なパラメーターを利用するためである。多様な実施形態で、多数の予測ポリシーが互いに直交（ｏｒｔｈｏｇｏｎａｌ）し、より良い予測のために組み合わされる。
【００６５】
第１予測ポリシーは、予測頻度又は予測に使用される過去深さ（ｈｉｓｔｏｒｉｃａｌ  ｄｅｐｔｈ）を変えることを含む。ただ１つの以前の反復に基づいた活性化エッジに関する決定は、直後の反復のための効率的な最適化である。しかし、これはすべての後に続く反復のための最も効率的なシナリオではない。このような実施形態で、すべての反復で活性化エッジをアップデートしないことは有用である。多様な実施形態で、以前の活性化エッジは、遊休状態である短い時間の後に再び活性化される。したがって、動的シャードで以前の活性化又は活動を中断したエッジを維持すること（そして、さらに大きいサブグラフを使用すること）は、より低い失敗ポリシーを有し、したがってサブグラフから直ちに非活性化エッジを除去するよりもさらに低い性能オーバーヘッドを有する。このような実施形態で、エッジが非活性化と看做される前に非活性化レベル（相互作用の数）は、失敗率プロフィールによる予測頻度を動的に調節する。多様な実施形態で、これは閾値の使用を伴う。
【００６６】
再び図２Ｂに戻って、エッジアップデートは一般的に２つの部類、即ち、観測されたものと観測されないものとがある。観測されたアップデートはグラフ処理の現在の反復の間に既知のものである。一方、観測されないアップデートはグラフ処理の次の反復まで知られないものである。観測されたアップデートはターゲットバーテックスＩＤがソースバーテックスＩＤよりも大きい（例えば、データ要素２７０、２７２、２７４、及び２７８）。これは一般的に、データ要素がそれらのソースバーテックスＩＤの順に処理されるためである。観測されないアップデートはターゲットバーテックスＩＤがソースバーテックスＩＤよりも小さい（例えば、データ要素２７６及び２８０）。
【００６７】
多様な実施形態で、活性化エッジ判断／予測メカニズムは、観測されたアップデートが観測されないアップデートと比較してどのように処理されるかに応じて異なる。このような実施形態で、すべての観測されないエッジは、それらの状態又は値のいかなる変化に拘らず、活性化として看做される。このような実施形態で、観測されたアップデートのみが、実際に変化されたか、それによって活性化であるか否かを確認するためにテストされる。このような実施形態で、変化されない観測されたアップデートを除去することは、次の反復のためによりＩＯ効率的である。さらに、エッジに対するアップデートはまた、バーテックス及びエッジが「ホット（ｈｏｔ）」である識別子（ｉｎｄｉｃａｔｏｒ）であり、未来のさらに多くのアップデートを伴い得る。
【００６８】
多様な実施形態で、活性化データ要素を判断／予測する１つのポリシーは、バーテックス基盤の予測及び分析を含む。このような実施形態で、与えられたバーテックスの入力方向エッジ（ｉｎｃｏｍｉｎｇ  ｅｄｇｅ）の中の１つに対するアップデートが発生すると、プロセッサは該当バーテックスに関連したすべてのエッジを活性化（ａｃｔｉｖｅ）としてマークする。一部の実施形態で、プロセッサは出力方向エッジ（ｏｕｔｇｏｉｎｇ  ｅｄｇｅ）から出た入力方向エッジのみを活性化として設定する。多様な実施形態で、バーテックス基盤の予測は巨大な動的シャードサイズをもたらすが、またより低い失敗予測率を有するので、エッジ基盤の予測よりもさらに低い性能オーバーヘッドを有し得る。
【００６９】
その他の実施形態で、活性化データ要素を判断／予測するための他のポリシーは、値基盤の予測モデルを含む。一実施形態で、可変的な閾値は活性化エッジ予測のために利用される。このような実施形態で、任意の変化されたエッジを活性化としてマーキングする代わりに、活性化と看做される前に、意味のある（閾値によって定義される）量によるエッジ変化が要求される。このような実施形態で、エッジ（又は上述したバーテックス基盤ポリシーと共に使用される場合は、バーテックス）は、活性化と看做される前に、特定の変動量を許容し得る。このような実施形態で、変動量が閾値よりも小さければ、プロセッサは活性化エッジから該当エッジを除外し、したがって処理されるエッジの量を減少させることによって、全体システム性能を改善することができる。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【００７０】
図４Ａ及び図４Ｂは、本発明の他の実施形態によるデータ構造の一例を示すダイヤグラムである。多様な実施形態で、データ構造４００及び４０１は、上述したストレージ媒体又はストレージ装置に少なくとも一部が格納される。多様な実施形態で、後述する動作はコントローラプロセッサ回路（又は他のプロセッサ、例えばホストプロセッサ）によって遂行される。このような実施形態で、コントローラプロセッサ回路は、ホストプロセッサ回路の使用又は助け無しで動作を遂行し、ストレージ装置が遊休状態であるか又は過剰なリソースを有する時間区間の間、動作を遂行する。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【００７１】
図４Ａに示す実施形態で、データ構造４００は、インデックス又は識別子（ＩＤ）Ａ〜Ｌでラベリングされた多数のバーテックス４０２を含む。図４Ａに示すように、これらのインデックスは、若干組織化されなくともよい。例えば、バーテックスＡは２つのエッジを通じてバーテックスＬに連結されるが、バーテックスＢには絶対連結されない。バーテックスＫはバーテックスＡ、Ｂ、及びＪに連結される。このような実施形態で、バーテックスＩＤは、バーテックスがデータ構造４００に追加されるように割当られるか、又は他の理由でそれらの割当が与えられる。また、多くのグラフアプリケーションで、データ構造は数十億のバーテックスを含み得る。一部の実施形態で、データ構造４００は、さらに大きいグラフのサブグラフを表すことができ、サブグラフは単一ストレージ装置内に格納される。
【００７２】
多様な実施形態で、プロセッサ（例えば、コントローラプロセッサ回路）は、バーテックスＩＤを再割当するように構成される。このような実施形態で、プロセッサは目的バーテックス（ｄｅｓｔｉｎａｔｉｏｎ  ｖｅｒｔｅｘ）のバーテックスＩＤ（インデックス番号）をソースバーテックスＩＤに（数値的に、又は、図示された実施形態ではアルファベット順に）より近いＩＤ（インデックス番号）に再割当するように構成される。
【００７３】
多様な実施形態で、これはグラフ構造４００を横断（ｔｒａｖｅｒｓｉｎｇ）することによって遂行される。例えば、プロセッサはグラフ構造４００をウォークスルー（ｗａｌｋ  ｔｈｒｏｕｇｈ）し、ソース及び目的地を判断し、その後可能な又は必要とされるバーテックスＩＤを再割当する。一部の実施形態で、プロセッサは、ＢＦＳ（Ｂｒｅａｔｈ  Ｆｉｒｓｔ  Ｓｅａｒｃｈ）又はＤＦＳ（Ｄｅｐｔｈ  Ｆｉｒｓｔ  Ｓｅａｒｃｈ）のような技術を使用して横断を遂行する。但し、上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【００７４】
このような実施形態で、再割当技術は、図４Ｂのグラフ構造４０１をもたらす。また、バーテックス４０２は（Ａ〜Ｌ）のＩＤを有するが、これらのＩＤ割当は、あまりランダムでないか、より順次的である。例えば、バーテックスＬをＢに再割当することによって、バーテックスＡ及びＢは互いに隣接し、エッジを共有する。このような再割当は、バーテックスＬ／Ｂの意味又はその値を変化させず、この再割当はただそれに連関されたインデックス又は識別子のみを変化させる。同様に、グラフ構造４００で元のＢに識別されるか又はラベリングされたバーテックスは、グラフ構造４０１で「移動（ｍｏｖｅ）」せず、単にラベルＤに再割当されるか又は改称される。
【００７５】
しかし、図２Ｂのデータ構造２０６に示すように、データ要素はそれらのバーテックスＩＤに基づいて格納又は整列される傾向がある。したがって、ソース及び目的地が互いに近くなるようにバーテックスＩＤを再割当することによって、それらの連関されたデータ要素は互いに近くに格納される。これは、より効率的なデータアクセスをもたらし、データアクセスはランダム又は非順次的ではなく、より順次的である。したがって、ディスクアクセスの回数が減少する。バーテックスＩＤの再割当は、グラフの実際のデータ構造に対するより効率的な格納又は整列をもたらす。
【００７６】
多様な実施形態で、この再割当は、活性化バーテックスのみで遂行される。多様な実施形態で、活性化バーテックスの数は、通常、全体グラフ又はサブグラフ内のバーテックスの数よりもはるかに少ない。このような実施形態で、より少ないバーテックスに対するＩＤの再割当は、それらのソースバーテックスにより近いＩＤを割当する可能性を増加させる。上述したように、一部の実施形態で、多様なエッジ予測技術が、活性化バーテックスが何なのかを定義するのに利用される。
【００７７】
一部の実施形態で、再割当技術は、より速い活性化バーテックス／エッジ判断又は予測をもたらす。このような実施形態で、活性化バーテックスがより低いＩＤに割当されるほど、それらはグラフ処理（ＩＤ順にデータ要素を処理する傾向がある）の各反復の開始（又は開始により近く）に処理される。一般的に、バーテックス又はエッジが活性化されているか否かを識別するために、プロセッサはバーテックスの入力エッジの全てが処理される時まで待機する必要がある。再び、データ要素が共にグループ化されるようにデータ要素を整列又は再割当することによって、このような待機時間が減少される。
【００７８】
多様な実施形態で、バーテックス再割当は、動的シャードの同時マージングで使用される。上述したように、マージ動作は、各々の区間の間に、反復される読出し及び書込み動作を含む。このような実施形態で、アップデートが単一シャードに地域化されるようにＩＤを再割当することによって、動的シャードをマージするために必要なシャードアクセスの数が減少される。これは結局、新しいシャードに連関されたすべてのアップデートを収集するのにより短い時間を提供する。
【００７９】
図５は、本発明の原理にしたがって形成された半導体装置を含む情報処理システムの概略的なブロック図である。
【００８０】
図５を参照すると、情報処理システム５００は、本発明の原理にしたがって構成された１つ以上の装置を含む。他の実施形態で、情報処理システム５００は本発明の原理にしたがう１つ以上の技術を利用するか又は実行する。
【００８１】
多様な実施形態で、情報処理システム５００は、例えばラップトップコンピュータ、デスクトップコンピュータ、ワークステーション、サーバー、ブレードサーバー、ＰＤＡ（ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔ）、スマートフォン、タブレット、及び他の適切なコンピュータのようなコンピューティング装置、又は仮想マシン若しくはその仮想コンピューティング装置を含む。多様な実施形態で、情報処理システム５００は使用者（図示せず）によって利用される。
【００８２】
本発明の一実施形態による情報処理システム５００は、中央処理装置（ＣＰＵ）、ロジック、又はプロセッサ５１０をさらに含む。一部の実施形態で、プロセッサ５１０は、１つ以上の機能ユニットブロック（ＦＵＢ）又は組み合わせロジックブロック（ＣＬＢ）５１５を含む。このような実施形態で、組み合わせロジックブロックは、多様なブールロジック演算（例えば、ＮＡＮＤ、ＮＯＲ、ＮＯＴ、ＸＯＲ）、安定化ロジック装置（例えば、フリップフロップ、ラッチ）、他のロジック装置、又はこれらの組み合わせを含む。これらの組み合わせロジック動作は、所望の結果を達成するように、入力信号を処理する単純な、又は複雑な方式に構成される。同期組み合わせロジック動作の幾つかの例示的な実施形態を説明するが、本発明はこれに限定されず、非同期動作又はその組み合わせを含み得る。一実施形態で、組み合わせロジック動作は、複数の相補型金属酸化物半導体（ＣＭＯＳ）トランジスタを含む。多様な実施形態で、これらのＣＭＯＳトランジスタは、ロジック動作を遂行するゲートに配置される。しかし、他の技術が利用されてもよく、他の技術も本発明の技術範囲内にある。
【００８３】
本発明の一実施形態による情報処理システム５００は、揮発性メモリ５２０（例えば、ランダムアクセスメモリ（ＲＡＭ））をさらに含む。本発明の一実施形態による情報処理システム５００は不揮発性メモリ５３０（例えば、ハードドライブ、光学メモリ、ＮＡＮＤ又はフラッシュメモリ等）をさらに含む。一部の実施形態で、揮発性メモリ５２０、不揮発性メモリ５３０、又はその組み合わせ若しくは一部の中のいずれか１つは、「記憶媒体（ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）」と称される。多様な実施形態で、揮発性メモリ５２０及び／又は不揮発性メモリ５３０は、データを半永久的又は実質的に永久的な方式で格納するように構成される。
【００８４】
多様な実施形態で、情報処理システム５００は、情報処理システム５００が通信ネットワークの一部であり、通信ネットワークを経由して通信するように構成された１つ以上のネットワークインターフェイス５４０を含む。ＷｉＦｉ（登録商標）プロトコルの例は、これに限定されないが、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ）  ８０２．１１ｇ、ＩＥＥＥ  ８０２．１１ｎ等を含む。セルラープロトコルの例は、これに限定されないが、ＩＥＥＥ  ８０２．１６ｍ（いわゆる、Ｗｉｒｅｌｅｓｓ−ＭＡＮ（Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）  Ａｄｖａｎｃｅｄ）、Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ（ＬＴＥ（登録商標）））、ＥＤＧＥ（Ｅｎｈａｎｃｅｄ  Ｄａｔａ  ｒａｔｅｓ  ｆｏｒ  ＧＳＭ（登録商標）（Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）（登録商標））、ＨＳＰＡ＋（Ｈｉｇｈ−Ｓｐｅｅｄ  Ｐａｃｋｅｔ  Ａｃｃｅｓｓ）等を含む。有線プロトコルの例は、これに限定されないが、ＩＥＥＥ  ８０２．３（いわゆる、Ｅｔｈｅｒｎｅｔ（登録商標））、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ、Ｐｏｗｅｒ  Ｌｉｎｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎ（例えば、ＨｏｍｅＰｌｕｇ（登録商標）、ＩＥＥＥ  １９０１等）等を含む。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【００８５】
本発明の一実施形態による情報処理システム５００は、使用者インターフェイス部５５０（例えば、ディスプレイアダプター、ハプティックインターフェイス、人間インターフェイス装置）をさらに含む。多様な実施形態で、このような使用者インターフェイス部５５０は、使用者から入力を受信するように構成されるか、又は使用者に出力を提供するように構成される。それだけでなく、他の種類の装置は、使用者との相互作用を提供するのに使用される。例えば、使用者に提供されるフィードバックは、視覚フィードバック、聴覚フィードバック、又は触覚フィードバックなどのような感覚フィードバックの任意の形態であってもよい。そして、使用者からの入力は、音響、音声、又は触覚入力を含む任意の形態で受信される。
【００８６】
多様な実施形態で、情報処理システム５００は、１つ以上の他のハードウェア装置又はハードウェア構成要素５６０（例えば、ディスプレーやモニター、キーボード、マウス、カメラ、指紋認識器、ビデオプロセッサ）を含む。上述した内容は単なる幾つかの例示的な実施形態であり、本発明はこれに限定されない。
【００８７】
本発明の一実施形態による情報処理システム５００は、１つ以上のシステムバス５０５をさらに含む。このような実施形態で、システムバス５０５は、プロセッサ５１０、揮発性メモリ５２０、不揮発性メモリ５３０、ネットワークインターフェイス５４０、使用者インターフェイス部５５０、及び１つ以上のハードウェア構成要素５６０を通信可能に結合するように構成される。プロセッサ５１０によって処理されたデータ又は不揮発性メモリ５３０の外部から入力されたデータは、不揮発性メモリ５３０又は揮発性メモリ５２０の中のいずれか１つに格納される。
【００８８】
多様な実施形態で、情報処理システム５００は、１つ以上のソフトウェア構成要素５７０を含むか、又は実行する。一部の実施形態で、ソフトウェア構成要素５７０は、オペレーティングシステム（ＯＳ）及び／又はアプリケーションを含む。一部の実施形態で、オペレーティングシステムは、１つ以上のサービスをアプリケーションに提供するように構成され、アプリケーションと情報処理システム５００の多様なハードウェア構成要素（例えば、プロセッサ５１０、ネットワークインターフェイス５４０）との間の媒介役として管理又は作動するように構成される。このような実施形態で、情報処理システム５００は、１つ以上の基本アプリケーション（ｎａｔｉｖｅ  ａｐｐｌｉｃａｔｉｏｎ）を含む。１つ以上の基本アプリケーションは、ローカルに設置され（例えば、不揮発性メモリ５３０内に）、プロセッサ５１０によって直接実行されるように構成され、オペレーティングシステムと直接的に相互作用する。このような実施形態で、基本アプリケーションは、予めコンパイルされたマシン実行コードを含む。一部の実施形態で、基本アプリケーションは、ソース又はオブジェクトコードをプロセッサ５１０によって実行される実行コードに変換するスクリプト翻訳機（例えば、Ｃ  ｓｈｅｌｌ（ｃｓｈ）、ＡｐｐｌｅＳｃｒｉｐｔ、ＡｕｔｏＨｏｔｋｅｙ）又は仮想実行マシン（ＶＭ）（例えば、Ｊａｖａ（登録商標）  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、ｔｈｅ  Ｍｉｃｒｏｓｏｆｔ（登録商標）  Ｃｏｍｍｏｎ  Ｌａｎｇｕａｇｅ  Ｒｕｎｔｉｍｅ）を含む。
【００８９】
上述した半導体装置は、多様なパッケージ技術を利用してカプセル化される。例えば、本発明の原理にしたがって構成された半導体装置は、ＰＯＰ（ｐａｃｋａｇｅ  ｏｎ  ｐａｃｋａｇｅ）技術、ＢＧＡ（ｂａｌｌ  ｇｒｉｄ  ａｒｒａｙ）技術、ＣＳＰ（ｃｈｉｐ  ｓｃａｌｅ  ｐａｃｋａｇｅ）技術、ＰＬＣＣ（ｐｌａｓｔｉｃ  ｌｅａｄｅｄ  ｃｈｉｐ  ｃａｒｒｉｅｒ）技術、ＰＤＩＰ（ｐｌａｓｔｉｃ  ｄｕａｌ  ｉｎ−ｌｉｎｅ  ｐａｃｋａｇｅ）技術、ｄｉｅ  ｉｎ  ｗａｆｆｌｅ  ｐａｃｋ技術、ｄｉｅ  ｉｎ  ｗａｆｅｒ  ｆｏｒｍ技術、ＣＯＢ（ｃｈｉｐ  ｏｎ  ｂｏａｒｄ）技術、ＣＥＲＤＩＰ（ｃｅｒａｍｉｃ  ｄｕａｌ  ｉｎ−ｌｉｎｅ  ｐａｃｋａｇｅ）技術、ＰＭＱＦＰ（ｐｌａｓｔｉｃ  ｍｅｔｒｉｃ  ｑｕａｄ  ｆｌａｔ  ｐａｃｋａｇｅ）技術、ＰＱＦＰ（ｐｌａｓｔｉｃ  ｑｕａｄ  ｆｌａｔ  ｐａｃｋａｇｅ）技術、ＳＯＩＣ（ｓｍａｌｌ  ｏｕｔｌｉｎｅ  ｐａｃｋａｇｅ）技術、ＳＳＯＰ（ｓｈｒｉｎｋ  ｓｍａｌｌ  ｏｕｔｌｉｎｅ  ｐａｃｋａｇｅ）技術、ＴＳＯＰ（ｔｈｉｎ  ｓｍａｌｌ  ｏｕｔｌｉｎｅ  ｐａｃｋａｇｅ）技術、ＴＱＦＰ（ｔｈｉｎ  ｑｕａｄ  ｆｌａｔ  ｐａｃｋａｇｅ）技術、ＳＩＰ（ｓｙｓｔｅｍ  ｉｎ  ｐａｃｋａｇｅ）技術、ＭＣＰ（ｍｕｌｔｉ−ｃｈｉｐ  ｐａｃｋａｇｅ）技術、ＷＦＰ（ｗａｆｅｒ−ｌｅｖｅｌ  ｆａｂｒｉｃａｔｅｄ  ｐａｃｋａｇｅ）技術、ＷＳＰ（ｗａｆｅｒ−ｌｅｖｅｌ  ｐｒｏｃｅｓｓｅｄ  ｓｔａｃｋ  ｐａｃｋａｇｅ）技術、又は通常の技術者に公知の他の技術の中の任意の１つの技術を利用してカプセル化される。
【００９０】
方法の段階は、入力データを作動させ出力を生成することによって機能を遂行するようにコンピュータプログラムを実行する１つ以上のプログラマブルプロセッサによって遂行される。また、方法の段階は、例えば、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）又はＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）のような専用ロジック回路によって遂行され、装置は専用ロジック回路で具現される。
【００９１】
多様な実施形態で、コンピュータ読取り可能媒体は、実行時、装置が方法の段階の少なくとも一部を遂行させる命令語を含み得る。一部の実施形態で、コンピュータ読取り可能媒体は、磁気媒体（ｍａｇｎｅｔｉｃ  ｍｅｄｉｕｍ）、光学媒体（ｏｐｔｉｃａｌ  ｍｅｄｉｕｍ）、他の媒体、又はその組み合わせ（例えば、ＣＤ−ＲＯＭ、ハードドライブ、ＲＯＭ、フラッシュドライブ）に含まれる。このような実施形態で、コンピュータ読取り可能媒体は、類型的で、非一時的に実施される製造物である。
【００９２】
以上、本発明の原理を例示的な実施形態を参照して説明したが、多様な変更及び修正が本発明の思想及び技術範囲を逸脱せずに、達成され得ることは当業者に明確である。したがって、上述した実施形態は限定されず、単に例示的なものである。したがって、本発明の技術範囲はそれらの均等物の最も広い許容可能な解釈によって決定され、上述した説明によって限定又は制限されない。
【符号の説明】
【００９３】
１００、３００    システム
１０２    ホストプロセシング装置（ホストプロセッサ回路）
１０４、３０４    システムメモリ
１０６、３０６    ストレージ装置
１１２    コントローラプロセッサ回路
１１４    ＩＯシステム
１１６    メモリストレージ
１１８    ストレージシステムインターフェイス（ホストプロセッサインターフェイス回路）
１２２、２７０、２７２、２７４、２７６、２７８、２８０    データ要素
２００    データ構造（グラフ）
２０４    データ構造（データ要素）
２０６    データ構造
２１２、４０２    バーテックス
２１４    エッジ
２５２    ソースバーテックスＩＤ
２５４    目的／ターゲットバーテックスＩＤ
２５６    エッジ値
３０１    システム（ストレージ装置）
３１２    原本シャード
３１４Ａ、３１４Ｂ、３１４Ｃ    処理されるシャード
３１５Ａ、３１５Ｂ、３１５Ｃ    ボックス（活性化要素）
３１６Ａ、３１６Ｂ、３１６Ｃ、３１７    動的シャード
３５４    マージ回路
３５６    メモリセル
３６４Ｄ、３６４Ｅ、３６４Ｆ    処理されるデータ要素
３６５Ｄ、３６５Ｅ、３６５Ｆ    要素のサブセット
３６６Ｄ、３６６Ｅ、３６６Ｆ    マージされた動的シャード
４００、４０１    データ構造（グラフ構造）
５００    情報処理システム
５０５    システムバス
５１０    プロセッサ
５１５    組み合わせロジックブロック
５２０    揮発性メモリ
５３０    不揮発性メモリ
５４０    ネットワークインターフェイス
５５０    使用者インターフェイス部
５６０    ハードウェア構成要素（他のハードウェア装置）
５７０    ソフトウェア（ソフトウェア構成要素）
【図１】
2020095701.tif 000003
【図２Ａ】
2020095701.tif 000004
【図２Ｂ】
2020095701.tif 000005
【図３Ａ】
2020095701.tif 000006
【図３Ｂ】
2020095701.tif 000007
【図３Ｃ】
2020095701.tif 000008
【図３Ｄ】
2020095701.tif 000009
【図３Ｅ】
2020095701.tif 000010
【図３Ｆ】
2020095701.tif 000011
【図４Ａ】
2020095701.tif 000012
【図４Ｂ】
2020095701.tif 000013
【図５】
2020095701.tif 000014