(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024154355
(43)【公開日】2024-10-30
(54)【発明の名称】結合演算のアクセラレーションのためのPIMベースのコンピューティング装置
(51)【国際特許分類】
G06F 12/00 20060101AFI20241023BHJP
【FI】
G06F12/00 560F
【審査請求】有
【請求項の数】16
【出願形態】OL
(21)【出願番号】P 2023157985
(22)【出願日】2023-09-22
(31)【優先権主張番号】10-2023-0050666
(32)【優先日】2023-04-18
(33)【優先権主張国・地域又は機関】KR
(71)【出願人】
【識別番号】514274672
【氏名又は名称】延世大学校 産学協力団
【氏名又は名称原語表記】UIF (University Industry Foundation), Yonsei University
【住所又は居所原語表記】50,YONSEI-RO, SEODAEMUN-GU, SEOUL 03722, REPUBLIC OF KOREA
(74)【代理人】
【識別番号】110000051
【氏名又は名称】弁理士法人共生国際特許事務所
(72)【発明者】
【氏名】キム,ヨンソク
(72)【発明者】
【氏名】イム,チェミン
(72)【発明者】
【氏名】キム,ハンジュン
(72)【発明者】
【氏名】イ,ジンホ
【テーマコード(参考)】
5B160
【Fターム(参考)】
5B160CA17
5B160KA02
5B160MM20
(57)【要約】
【課題】IDPで結合スループットを最大化し、CPUの代わりにPIMサポートのDIMMで両テーブルのグローバルパーティショニングを行い、PIMサポートのDIMMの高い内部メモリ帯域幅と計算スループットを活用でき、多対多のIDP間通信を最適化できる結合演算アクセラレーションのためのPIMベースのコンピューティング装置を提供する。
【解決手段】第1及び第2データセットを格納するメインメモリと、メモリプロセッサ、作業メモリ、及びメモリバンクを含むインラインメモリモジュールで構成され、メモリプロセッサは作業メモリと接続され、作業メモリに上げられた第1及び第2データセットに対する結合演算を行うPIMモジュールと、メインメモリ及びPIMモジュールと第1及び第2チャンネルを形成し、第1チャンネルで第1及び第2データセットを取り込んで第2チャンネルでメモリバンクに格納するプロセッサと、を含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1及び第2データセットを格納するメインメモリと、
メモリプロセッサ、作業メモリ、及びメモリバンクを含むインラインメモリモジュールで構成され、前記メモリプロセッサは前記作業メモリと接続され、前記作業メモリに上げられた前記第1及び第2データセットに対する結合演算を行うPIM(Processing-In-Memory)モジュールと、
前記メインメモリ及び前記PIMモジュールと第1チャンネル及び第2チャンネルを形成し、前記第1チャンネルで前記第1及び第2データセットを取り込んで前記第2チャンネルで前記メモリバンクに格納するプロセッサと、を含む、ことを特徴とするPIMベースのコンピューティング装置。
【請求項2】
前記PIMモジュールは、
前記インラインメモリモジュールを複数のデュアルインラインメモリモジュールで実現し、スケールアウト結合演算をサポートする、ことを特徴とする請求項1に記載のPIMベースのコンピューティング装置。
【請求項3】
前記PIMモジュールは、
前記複数のデュアルインラインメモリモジュールをサブ-グループ化し、前記第2チャンネルのうちの1つと接続する、ことを特徴とする請求項2に記載のPIMベースのコンピューティング装置。
【請求項4】
前記PIMモジュールは、
前記複数のデュアルインラインメモリモジュール間の相互データ移転(inter data relocation)を介したグローバルパーティショニング(global partitioning)を行い、前記第1及び第2データセットを配置する、ことを特徴とする請求項2に記載のPIMベースのコンピューティング装置。
【請求項5】
前記PIMモジュールは、
前記相互データ移転の過程で前記複数のデュアルインラインメモリモジュール各々のメモリバンクにあるデータに対して、RnS(Rotate-and-Stream)演算を行う、ことを特徴とする請求項4に記載のPIMベースのコンピューティング装置。
【請求項6】
前記PIMモジュールは、
前記複数のデュアルインラインメモリモジュール間にデータセットの単位で特定のデータセットを送受信し、前記RnS(Rotate-and-Stream)演算を行う、ことを特徴とする請求項5に記載のPIMベースのコンピューティング装置。
【請求項7】
前記プロセッサは、
前記グローバルパーティショニングを行う前に、前記メインメモリにある前記第1及び第2データセットに対してUSG(Unordered Scatter-Gather)演算を行い、前記メモリバンクに格納する、ことを特徴とする請求項4に記載のPIMベースのコンピューティング装置。
【請求項8】
前記プロセッサは、
前記USG演算過程でSTS(Stream Transpose Send)手順を行い、前記メモリバンクに前記第1及び第2データセットを分配する、ことを特徴とする請求項7に記載のPIMベースのコンピューティング装置。
【請求項9】
前記メモリプロセッサは、
前記結合演算としてハッシュ結合、ソート-マージ結合又はネスト-ループ結合を選択する、ことを特徴とする請求項1に記載のPIMベースのコンピューティング装置。
【請求項10】
前記メモリプロセッサは、
前記作業メモリにハッシュテーブルを生成し、前記メモリバンクにある第1及び第2データセットを前記作業メモリに上げてローカルパーティショニング(local partitioning)を行った後、ハッシュ関数で前記ハッシュテーブルに関連付けてハッシュ結合を行う、ことを特徴とする請求項1に記載のPIMベースのコンピューティング装置。
【請求項11】
前記メモリプロセッサは、
前記メモリバンクにある第1及び第2データセットに対してレンジパーティショニング(Range partitioning)、並列適所整列(parallel in-place sort)、及び並列マージ(parallel merge)を行ってソート-マージ結合を行う、ことを特徴とする請求項1に記載のPIMベースのコンピューティング装置。
【請求項12】
前記メモリプロセッサは、
前記メモリバンクにある第1及び第2データセットを前記作業メモリに上げて各々に対する内部ループ演算を独立して行ってネスト-ループ結合を行う、ことを特徴とする請求項1に記載のPIMベースのコンピューティング装置。
【請求項13】
第1及び第2ソースデータセットを格納するメインメモリと、
各々はメモリプロセッサ、作業メモリ、及びメモリバンクを含むインラインメモリモジュールで構成され、前記メモリプロセッサは前記作業メモリと接続され、前記作業メモリに上げられた第1及び第2加工データセットに対する結合演算を行う複数のPIM(Processing-In-Memory)モジュールと、
前記第1及び第2ソースデータセットを前処理して前記メモリバンクに格納するプロセッサと、を含む、ことを特徴とするPIMベースのコンピューティング装置。
【請求項14】
前記プロセッサは、
前記メインメモリにある前記第1及び第2ソースデータセットに対してUSG(Unordered Scatter-Gather)演算を行い、前記メモリバンクに格納する、ことを特徴とする請求項13に記載のPIMベースのコンピューティング装置。
【請求項15】
前記複数のPIMモジュールは、
前記前処理された第1及び第2ソースデータセットに対して相互データ移転(inter data relocation)を介して前記第1及び第2加工データセットを配置する、ことを特徴とする請求項13に記載のPIMベースのコンピューティング装置。
【請求項16】
前記複数のPIMモジュールは、
前記相互データ移転の過程で前記前処理された第1及び第2ソースデータセットに対してRnS(Rotate-and-Stream)演算を行う、ことを特徴とする請求項15に記載のPIMベースのコンピューティング装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、PIM(Processing-In-Memory)ベースのコンピューティング技術に係り、より詳細には、PIMハードウェアにおける結合演算の性能を向上させることができるアクセラレーション技法に関する。
【背景技術】
【0002】
PIMとは、1つのチップ内部にメモリとプロセッサ演算器を集積した次世代半導体である。これにより、メモリとプロセッサが分離されている既存のコンピューティング構造で発生するデータのボトルネック現象及び過剰な電力消費の問題を解決することができる。
【0003】
PIMサポートのデュアルインラインメモリモジュール(Dual in-line memory module;以下、DIMM)には、メモリバンク付近にIDP(In-DIMM processor)が装着されている。PIMサポートのDIMMを使用すると、アプリケーションがホストCPUからIDPに計算をオフロードできる。IDPは、ホスト側のリソースを使用せず、メモリバンクに格納されたデータに直接アクセスして計算を行うことができる。かかる方式でPIMサポートのDIMMは、CPUとメインメモリとの間のデータ転送量を減らし、PIMサポートのDIMMの高い内部メモリ帯域幅と計算スループットを活用し、アプリケーションがデータのボトルネック現象を克服するように大きく助けられる。
【0004】
一方、リレーショナルデータベース管理システム(RDBMS)の性能を改善するために、PIMサポートのDIMMを使用してリレーショナル作業を加速化する技術が提案されている。先行技術は、PIMハードウェアシミュレータとPIMハードウェアに対するアーキテクチャ仮定に依存していた。しかし、先行技術のアーキテクチャ仮定は、PIMサポートのDIMMのアーキテクチャと異なり、DIMMと互換しないという問題があり得る。
【0005】
従って、実際のコンピューティングシステムでPIMの高い潜在力を実現するためには、PIMサポートのDIMMに最適化された新しい結合アルゴリズムが必要である。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】大韓民国公開特許第10-2022-0094180号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
本発明は、DIMMアーキテクチャと互換できるPIMの結合演算アクセラレーション技法であって、IDPで結合スループットを最大化し、CPUの代わりにPIMサポートのDIMMで両テーブルのグローバルパーティショニングを行い、PIMサポートのDIMMの高い内部メモリ帯域幅と計算スループットを活用することができ、多対多のIDP間通信を最適化できる結合演算のアクセラレーションのためのPIMベースのコンピューティング装置を提供しようとする。
【課題を解決するための手段】
【0008】
実施形態のうち、結合演算のアクセラレーションのためのPIMベースのコンピューティング装置は、第1及び第2データセットを格納するメインメモリと、メモリプロセッサ、作業メモリ、及びメモリバンクを含むインラインメモリモジュールで構成され、前記メモリプロセッサは前記作業メモリと接続され、前記作業メモリに上げられた前記第1及び第2データセットに対する結合演算を行うPIM(Processing-In-Memory)モジュールと、前記メインメモリ及び前記PIMモジュールと第1チャンネル及び第2チャンネルを形成し、前記第1チャンネルで前記第1及び第2データセットを取り込んで前記第2チャンネルで前記メモリバンクに格納するプロセッサと、を含む。
【0009】
前記PIMモジュールは、前記インラインメモリモジュールを複数のデュアルインラインメモリモジュールで実現し、スケールアウト結合演算をサポートすることができる。
【0010】
前記PIMモジュールは、前記複数のデュアルインラインメモリモジュールをサブ-グループ化し、前記第2チャンネルのうちの1つと接続することができる。
【0011】
前記PIMモジュールは、前記複数のデュアルインラインメモリモジュール間の相互データ移転(inter data relocation)を介したグローバルパーティショニング(global partitioning)を行い、前記第1及び第2データセットを配置することができる。
【0012】
前記PIMモジュールは、前記相互データ移転の過程で前記複数のデュアルインラインメモリモジュール各々のメモリバンクにあるデータに対して、RnS(Rotate-and-Stream)演算を行うことができる。
【0013】
前記PIMモジュールは、前記複数のデュアルインラインメモリモジュール間にデータセットの単位で特定のデータセットを送受信し、前記RnS(Rotate-and-Stream)演算を行うことができる。
【0014】
前記プロセッサは、前記グローバルパーティショニングを行う前に、前記メインメモリにある前記第1及び第2データセットに対してUSG(Unordered Scatter-Gather)演算を行い、前記メモリバンクに格納することができる。
【0015】
前記プロセッサは、前記USG演算過程でSTS(Stream Transpose Send)手順を行い、前記メモリバンクに前記第1及び第2データセットを分配することができる。
【0016】
前記メモリプロセッサは、前記結合演算としてハッシュ結合、ソート-マージ結合又はネスト-ループ結合を選択することができる。
【0017】
前記メモリプロセッサは、前記作業メモリにハッシュテーブルを生成し、前記メモリバンクにある第1及び第2データセットを前記作業メモリに上げてローカルパーティショニング(local partitioning)を行った後、ハッシュ関数で前記ハッシュテーブルに関連付けてハッシュ結合を行うことができる。
【0018】
前記メモリプロセッサは、前記メモリバンクにある第1及び第2データセットに対してレンジパーティショニング(Range partitioning)、並列適所整列(parallel in-place sort)、及び並列マージ(parallel merge)を行ってソート-マージ結合を行うことができる。
【0019】
前記メモリプロセッサは、前記メモリバンクにある第1及び第2データセットを前記作業メモリに上げて各々に対する内部ループ演算を独立して行ってネスト-ループ結合を行うことができる。
【0020】
実施形態のうち、PIMベースのコンピューティング装置は、第1及び第2ソースデータセットを格納するメインメモリと、各々はメモリプロセッサ、作業メモリ、及びメモリバンクを含むインラインメモリモジュールで構成され、前記メモリプロセッサは前記作業メモリと接続され、前記作業メモリに上げられた第1及び第2加工データセットに対する結合演算を行う複数のPIM(Processing-In-Memory)モジュールと、前記第1及び第2ソースデータセットを前処理して前記メモリバンクに格納するプロセッサとを含む。
【0021】
前記プロセッサは、前記メインメモリにある前記第1及び第2ソースデータセットに対してUSG(Unordered Scatter-Gather)演算を行い、前記メモリバンクに格納することができる。
【0022】
前記複数のPIMモジュールは、前記前処理された第1及び第2ソースデータセットに対して相互データ移転(inter data relocation)を介して前記第1及び第2加工データセットを配置することができる。
【0023】
前記複数のPIMモジュールは、前記相互データ移転の過程で前記前処理された第1及び第2ソースデータセットに対してRnS(Rotate-and-Stream)演算を行うことができる。
【発明の効果】
【0024】
開示する技術は、次の効果を有することができる。但し、特定の実施形態が次の効果を全て含まなければならないとか、又は次の効果のみを含まなければならないという意味ではないので、開示する技術の権利範囲はこれによって制限されるものと理解されてはならない。
【0025】
本発明に係る結合演算のアクセラレーションのためのPIMベースのコンピューティング装置は、DIMMアーキテクチャと互換できるPIMの結合演算アクセラレーション技法であって、IDPで結合スループットを最大化し、CPUの代わりにDIMMで両テーブルのグローバルパーティショニングを行って、DIMMの高い内部メモリ帯域幅と計算スループットを活用することができ、多対多のIDP間通信を最適化できる。
【図面の簡単な説明】
【0026】
【
図1】本発明の一実施形態に係るPIMベースのコンピューティング装置を示す図である。
【
図2a】
図1のメモリプロセッサで結合演算を行う過程を説明する図である。
【
図2b】
図1のメモリプロセッサで結合演算を行う過程を説明する図である。
【
図2c】
図1のメモリプロセッサで結合演算を行う過程を説明する図である。
【
図3】本発明に係るPIMベースのコンピューティング装置の結合演算方法の一実施形態を説明するフローチャートである。
【
図4】PIMサポートのデュアルインラインメモリモジュール(DIMM)アーキテクチャを説明する図である。
【
図5】様々なハッシュ関数の単一-PID性能を示す図である。
【
図6a】ハッシュ結合、ソート-マージ結合、及びネスト-ループ結合のアルゴリズム別の結合実行遅延時間を示す図である。
【
図6b】ハッシュ結合、ソート-マージ結合、及びネスト-ループ結合のアルゴリズム別の結合実行遅延時間を示す図である。
【
図7】RnS(Rotate-and-Stream)演算実行過程を説明する図である。
【
図8】既存に比べてRnSの相互IDP通信の帯域幅を示す図である。
【
図9】USG(Unordered Scatter-Gather)演算の実行過程を説明する図である。
【
図10】本発明に係るPID-JOINの作業モデルを示す図である。
【
図11】本発明に係る実験結果を説明する図である。
【
図12】本発明に係る実験結果を説明する図である。
【
図13】本発明に係る実験結果を説明する図である。
【
図14】本発明に係る敏感度研究結果を説明する図である。
【
図15】本発明に係る敏感度研究結果を説明する図である。
【
図16】本発明に係る敏感度研究結果を説明する図である。
【
図17a】本発明に係る敏感度研究結果を説明する図である。
【
図17b】本発明に係る敏感度研究結果を説明する図である。
【発明を実施するための形態】
【0027】
本発明は、下記の研究課題をもって支援を受けて出願された。
[この発明を支援した大韓民国国家研究開発事業]
[課題固有番号] 1711193986
[課題番号] 2020-0-01361-004
[省庁名] 科学技術情報通信部
[課題管理(専門)機関名] 情報通信企画評価院
[研究事業名] 情報通信放送革新人材養成
[研究課題名] 人工知能大学院支援(延世大学校)
[寄与率] 1/2
[課題実行機関名] 延世大学校産学協力団
[研究期間] 2023.01.01~2023.12.31
[この発明を支援した大韓民国国家研究開発事業]
[課題固有番号] 1711193187
[課題番号] 2021-0-00853-003
[省庁名] 科学技術情報通信部
[課題管理(専門)機関名] 情報通信企画評価院
[研究事業名] 新概念PIM半導体先導技術開発
[研究課題名] PIM活用のためのSWプラットフォーム開発
[寄与率] 1/2
[課題実行機関名] 延世大学校産学協力団
[研究期間] 2023.01.01~2023.12.31
【0028】
本発明に関する説明は、構造的乃至機能的説明のための実施形態に過ぎないので、本発明の権利範囲は、本文に説明されている実施形態によって制限されるものと解釈されてはならない。すなわち、実施形態は、様々な変更が可能であり、種々の形態を有することができるので、本発明の権利範囲は、技術的思想を実現できる均等物を含むものと理解されなければならない。また、本発明で提示している目的または効果は、特定の実施形態がこれを全て含むべきであるとか、そのような効果だけを含むべきであるという意味ではないので、本発明の権利範囲は、これによって制限されるものと理解されてはならない。
【0029】
一方、本出願で述べられる用語の意味は、次のように理解されなければならない。
【0030】
「第1」、「第2」などの用語は、1つの構成要素を他の構成要素から区別するためのものであって、これらの用語によって権利範囲が限定されてはならない。例えば、第1構成要素は第2構成要素と名付けられてもよく、同様に第2構成要素も第1構成要素と名付けられてもよい。
【0031】
ある構成要素が他の構成要素に「連結されて」いると言及する場合には、その他の構成要素に直接連結されることもあるが、中間に他の構成要素が存在することもあると理解されなければならない。それに対し、ある構成要素が他の構成要素に「直接連結されて」いると言及する場合には、中間に他の構成要素が存在しないものと理解されなければならない。一方、構成要素間の関係を説明する他の表現、すなわち、「~間に」と「すぐ~間に」、又は「~に隣り合う」と「~に直接隣り合う」なども同様に解釈されなければならない。
【0032】
単数の表現は、文脈上明白に異なる意味ではない限り、複数の表現を含むものと理解されなければならず、「含む」又は「有する」などの用語は、実施された特徴、数字、ステップ、動作、構成要素、部分品、又はこれらを組み合わせたものが存在することを指定しようとするものであり、1つ又はそれ以上の他の特徴や数字、ステップ、動作、構成要素、部分品、又はこれらを組み合わせたものの存在又は付加可能性を予め排除しないものと理解されなければならない。
【0033】
各ステップにおいて、識別符号(例えば、a、b、cなど)は、説明の便宜のために使用されるものであって、識別符号は、各ステップの順序を説明するものでなく、各ステップは、文脈上明白に特定の順序を記載しない限り、明記された順序と異なって生じ得る。すなわち、各ステップは、明記された順序と同一に生じることもあり、実質的に同時に行われることもあり、反対の順序通りに行われることもある。
【0034】
本発明は、コンピュータが読み取り可能な記録媒体にコンピュータが読み取り可能なコードとして実現され、コンピュータが読み取り可能な記録媒体は、コンピュータシステムによって読み取られるデータが格納される全ての種類の記録装置を含む。コンピュータが読み取り可能な記録媒体の例としては、ROM、RAM、CD-ROM、磁気テープ、フロッピーディスク、光データ格納装置などがある。また、コンピュータが読み取り可能な記録媒体は、ネットワークで連結されたコンピュータシステムに分散されて、分散方式でコンピュータが読み取り可能なコードが格納され、実行され得る。
【0035】
ここで使用する全ての用語は、特に定義されない限り、本発明が属する分野における通常の知識を有する者により一般的に理解されるものと同じ意味を有する。一般的に使用される辞書に定義されている用語は、関連技術の文脈上有する意味と一致するものと解釈されなければならず、本出願において明白に定義しない限り、理想的であるか又は過度に形式的な意味を有するものと解釈できない。
【0036】
図1は、本発明の一実施形態に係るPIMベースのコンピューティング装置を示す図である。
【0037】
図1を参照すると、PIMベースのコンピューティング装置100は、メインメモリ110、PIM(Processing-In-Memory)モジュール130、及びプロセッサ150を含めて実現されることができる。
【0038】
メインメモリ110は、第1及び第2データセットを格納することができる。
【0039】
PIMモジュール130は、メモリプロセッサ131、作業メモリ133、及びメモリバンク135を含むインラインメモリモジュールで構成される。
【0040】
メモリプロセッサ131は、作業メモリ133と接続され、作業メモリ133に上げられた第1及び第2データセットに対する結合演算を行うことができる。PIMモジュール130は、インラインメモリモジュールを複数のデュアルインラインメモリモジュール(DIMM)として実現し、スケールアウト結合演算をサポートすることができる。一実施形態において、DIMMの内部には複数個のメモリプロセッサ131、作業メモリ133、及びメモリバンク135が相互接続されるセットで構成されることができる。
【0041】
プロセッサ150は、メインメモリ110及びPIMモジュール130と第1及び第2チャンネルを形成し、第1チャンネルで第1及び第2データセットを取り込んで第2チャンネルでメモリバンク135に格納できる。
【0042】
PIMモジュール130は、複数のデュアルインラインメモリモジュール(DIMM)をサブ-グループ化して第2チャンネルのうちの一つと接続できる。PIMモジュール130は、複数のデュアルインラインメモリモジュール(DIMM)間の相互データ移転(inter data relocation)を介したグローバルパーティショニング(global partitioning)を行い、第1及び第2データセットを配置することができる。
【0043】
プロセッサ150は、グローバルパーティショニングを行う前にメインメモリ110にある第1及び第2データセットに対してUSG(Unordered Scatter-Gather)演算を行い、メモリバンク135に格納できる。プロセッサ150は、USG演算を介して第1及び第2データセットをメモリバンク135に均等に分配できる。プロセッサ150は、USG演算過程でSTS(Stream Transpose Send)手順を行い、メモリバンク135に第1及び第2データセットを分配できる。
【0044】
PIMモジュール130は、グローバルパーティショニングを介して第1及び第2データセットが正しく配置されるので、メモリバンク135にあり入力及び出力のデータセットに厳格な順序が必要ではないため、全てのメモリプロセッサ131にかけて第1及び第2データセットを均等に分配しなければならない。第1及び第2データセットをメモリバンク135に均等に分配するメカニズムとしてUSG(Unordered Scatter-Gather)を実現することができる。プロセッサ150は、USG演算過程でメインメモリ110にある第1及び第2データセットに対してストリームを行った後、転置を行ってPIMモジュール130に転送することができる。プロセッサ150は、メインメモリ110とPIMモジュール130の両方に対して順次アクセスを行い、第1及び第2データセットをメモリバンク135に均等に分配できる。
【0045】
PIMモジュール130は、相互データ移転の過程で複数のデュアルインラインメモリモジュール(DIMM)各々のメモリバンク135にあるデータに対してRnS(Rotate-and-Stream)演算を行うことができる。PIMモジュール130は、複数のデュアルインラインメモリモジュール(DIMM)間にデータセットの単位で特定のデータセットを送受信してRnS(Rotate-and-Stream)演算を行うことができる。
【0046】
メモリプロセッサ131は、結合演算としてハッシュ結合、ソート-マージ結合又はネスト-ループ結合を選択することができる。一実施形態において、メモリプロセッサ131は作業メモリ133にハッシュテーブルを生成し、メモリバンク135にある第1及び第2データセットを作業メモリ133に上げてローカルパーティショニング(local partitioning)を行った後、ハッシュ関数でハッシュテーブルに関連付けてハッシュ結合を行うことができる。一実施形態において、メモリプロセッサ131はメモリバンク135にある第1及び第2データセットに対してレンジパーティショニング(Range partitioning)、並列適所整列(parallel in-place sort)、及び並列マージ(parallel merge)を行ってソート-マージ結合を行うことができる。一実施形態において、メモリプロセッサ131はメモリバンク135にある第1及び第2データセットを作業メモリ133に上げて各々に対する内部のループ演算を独立して行ってネスト-ループ結合を行うことができる。
【0047】
PIMベースのコンピューティング装置100は、複数のPIMモジュール130を含めて実現されることができる。この場合、複数のPIMモジュール130の各々はメモリプロセッサ131、作業メモリ133、及びメモリバンク135を含むインラインメモリモジュールで構成されることができる。メインメモリ110は、第1及び第2ソースデータセットを格納することができる。プロセッサ150は、第1及び第2ソースデータセットを前処理してメモリバンク135に格納することができる。ここで、プロセッサ150はメインメモリ110にある第1及び第2ソースデータセットに対して前処理としてUSG(Unordered Scatter-Gather)演算を行うメモリバンク135に格納することができる。メモリプロセッサ131は、作業メモリ133に上げられた第1及び第2加工データセットに対する結合演算を行うことができる。
【0048】
複数のPIMモジュール130は、前処理された第1及び第2ソースデータセットに対して相互データ移転(inter data relocation)を介して第1及び第2加工データセットを配置することができる。複数のPIMモジュール130は、相互データ移転の過程で前処理された第1及び第2ソースデータセットに対してRnS(Rotate-and-Stream)演算を行うことができる。
【0049】
図2a乃至2cは、
図1のメモリプロセッサで結合演算を行う過程を説明する図である。
【0050】
図2a乃至2cを参照すると、メモリプロセッサ131は作業メモリ133に上げられた第1及び第2データセットに対する結合演算を行うことができる。ここで、メモリプロセッサ131は結合演算としてハッシュ結合、ソート-マージ結合又はネスト-ループ結合を選択して行うことができる。
【0051】
ハッシュ結合はハッシュテーブルを使用して第1及び第2データセットに対する結合を行う。具体的に、
図2aを参照すると、メモリプロセッサ131は作業メモリ133にハッシュテーブル(Hash Table)を生成する。ハッシュテーブルは、キー(Key)と値(Value)との組(Key,Value)で構成される。ここで、組のキーと値は、各々結合キーと第1データセットであるRタプルのタプルIDに該当し得る。メモリプロセッサ131はメモリバンク135にある第1及び第2データセット(R,S)を作業メモリ133に上げてローカルパーティショニング(Local Partition)を行う。その次に、メモリプロセッサ131はハッシュ関数でハッシュテーブル210に関連付けてハッシュ結合を行う。メモリプロセッサ131は第2データセットであるSタプルでハッシュテーブルをプローブ(Probe)し、当該ハッシュテーブルの項目でRタプルを識別して、両タプルが与えられた結合条件子を満たすかを検査する。
【0052】
メモリプロセッサ131はハッシュ結合を行う過程でハッシュテーブルの項目がよくアクセスされるので、ハッシュテーブルを作業メモリに生成することによって、遅いメモリバンク135に対してアクセスが発生しない。
【0053】
ソート-マージ結合は、メモリバンク135にある第1及び第2データセット(R,S)に対してレンジパーティショニング(Range partitioning)、並列適所整列(parallel in-place sort)、及び並列マージ(parallel merge)を行って結合を行う。具体的に、
図2bを参照すると、メモリプロセッサ131は第1及び第2データセットであるR及びSタプルを整列してから併合し、結合演算を行う。メモリプロセッサ131は作業メモリ133内の作業集合を合わせるために、同じ結合キー値のレンジを有するタプルをグループ化するレンジパーティショニングを行う。その次に、メモリプロセッサ131は互いに異なるスレッドに互いに異なるパーティションを割り当てて、割り当てられたパーティションを同時に整列する並列適所整列を行う。このとき、メモリプロセッサ131は内部整列アルゴリズムを使用し、作業セットのサイズが作業メモリ133の容量を超えないようにする。その後、メモリプロセッサ131はSパーティションのタプルをRパーティションと併合する。
【0054】
ネスト-ループ結合は、メモリバンク135にある第1及び第2データセットを作業メモリ133に上げて、各々に対する内部ループ演算を独立して行う。具体的に、
図2cを参照すると、外部ループはSタプルをスキャンし、内部ループはRタプルをスキャンする。メモリプロセッサ131はRタプルを格納するのに必要な作業メモリ133のバッファ量を検査し、各スレッドにタプルを格納するために作業メモリ133に循環バッファを割り当てる。その次に、メモリプロセッサ131はSタプルを作業メモリ133に上げて、循環バッファをRタプルで満たされ、R及びSタプルに対する結合を行う。
【0055】
図3は、本発明に係るPIMベースのコンピューティング装置の結合演算方法の一実施形態を説明するフローチャートである。
【0056】
図3を参照すると、PIMベースのコンピューティング装置100は、メインメモリ110に第1及び第2データセットを格納することができる(ステップS310)。
【0057】
PIMベースのコンピューティング装置100は、プロセッサ150を介してメインメモリ110及びPIMモジュール130とチャンネルを形成することができる(ステップS330)。プロセッサ150は、メインメモリ110及びPIMモジュール130と第1及び第2チャンネルを形成し、第1チャンネルで第1及び第2データセットを取り込んで第2チャンネルでPIMモジュール130内のメモリバンク135に格納できる。プロセッサ150は、メインメモリ110にある第1及び第2データセットに対してUSG(Unordered Scatter-Gather)演算を行ってメモリバンク135に格納できる。
【0058】
PIMベースのコンピューティング装置100は、PIMモジュール130のメモリプロセッサ131で作業メモリ135に上げられた第1及び第2データセットに対する結合演算を行うことができる(ステップS350)。PIMモジュール130は、メモリプロセッサ131、作業メモリ133、及びメモリバンク135を含むインラインメモリモジュールで構成されることができる。PIMモジュール130は、インラインメモリモジュールを複数のデュアルインラインメモリモジュールとして実現し、スケールアウト結合演算をサポートすることができる。PIMモジュール130は、複数のデュアルインラインメモリモジュール間の相互データ移転(inter data relocation)を介したグローバルパーティショニング(global partitioning)を行って第1及び第2データセットを配置することができる。PIMモジュールは、相互データ移転の過程で複数のデュアルインラインメモリモジュール各々のメモリバンク135にあるデータに対してRnS(Rotate-and-Stream)演算を行うことができる。PIMモジュール130のメモリプロセッサ131は、結合演算としてハッシュ結合、ソート-マージ結合又はネスト-ループ結合を選択して行うことができる。
【0059】
以下、
図4乃至17bを参照して、本発明に係るPIMベースのコンピューティング装置についてより詳しく説明する。
【0060】
図4は、PIMサポートのデュアルインラインメモリモジュールアーキテクチャを説明する図である。
【0061】
図4を参照すると、PIMサポートのデュアルインラインメモリモジュール(PIM-enabled Dual in-line memory module;DIMM)400は、メモリバンク410にメモリプロセッサ(In-DIMM Processor;IDP)430を接続し、本発明のPIMモジュール130をサポートすることができる。
【0062】
DIMM400は複数のチップ(Chip)で構成され、各チップは複数のバンク(Bank)で構成される。DIMM400はチップをランク(Rank)にグループ化し、順次のデータ片をランクのうちの1つに格納する。ここで、ランクは同じ制御信号を共有するチップの集合を意味する。DIMM400は、IDP430を各々の64MBメモリバンク410に接続し、PIMモジュール130を実現することができる。IDP430は、メモリバンク410に格納されたデータを直接アクセスすることができず、作業メモリ(Working RAM;WRAM)450としてデータを上げなければならない。
【0063】
各IDP430はメモリバンク410に格納されたデータをWRAM450に上げなければアクセスできないので、他のメモリバンクに格納されたデータに直接アクセスできない。ホストCPUであるプロセッサ150は、互いに異なるIDP430のメモリバンク410間にデータを転送しなければならない。かかるCPUベースのIDP430間通信は、制限されたホストCPU帯域幅を使用し、顕著な性能オーバーヘッドを発生させる。DIMM400のランクレベル並列処理により、慎重なIDP430間通信の最適化なしでは性能のオーバーヘッドがますます大きくなることがある。IDP430間にデータを転送するとき、ソース及び宛先IDPの同じランクに属する他の全てのIDPはデータを転送しなければならず、当該ランクのIDPは同期化方式で作動する。従って、DIMM400を効率的に活用するための最適化ガイドラインのうちの1つは、IDP間通信を最小化することである。
【0064】
本発明では、PIMを使用して結合演算の性能を極大化するためにDIMM400アーキテクチャ特性を活用する新しいPIMサポートの結合アルゴリズム(以下、「PID-JOIN」という)を提示する。本発明で提案したPID-JOIN方式は、実際のコンピューティングシステムに適用して評価できる。
【0065】
本発明で提案したPID-JOIN方式は、第1及び第2データセットに対して結合演算を行うことができる。ここで、第1及び第2データセットは各々R及びSタプルに該当し得る。R及びSタプルはメモリバンク410に格納される。結合演算としてハッシュ結合、ソート-マージ結合、ネスト-ループ結合の3つの代表的な類型の等価結合アルゴリズムをプロトタイプして評価できる。アルゴリズムを設計した後、合成ワークロードと性能を比較し、最も性能の良いアルゴリズムを選択することができる。性能の比較のために、IDP430が等価結合クエリーを処理すると仮定する。さらに、すべてのキーが初期にメモリバンク410に格納され、等価結合クエリーの結果、タプルがメモリバンク410に格納されると仮定する。
【0066】
高い結合性能を達成するために、単一のIDP結合アルゴリズムは次のようなIDPの主要なアーキテクチャ特性に合わせて最適化されなければならない。第一に、IDPはWRAMに格納されたデータにのみアクセスできるため、アルゴリズムはWRAMの64KB容量内で作業セットに合わなければならない。作業セットのサイズがWRAM容量を超えると、IDPはWRAMとメモリバンクとの間の頻繁なデータ転送により性能が低下することがある。第二に、アルゴリズムはIDPの内部メモリ帯域幅を最大化するために、サイズが最大2KB以上である大きな順次データチャンクを転送しなければならない。DRAMベースのメモリバンクは、より大きな順次データアクセスにより高い帯域幅を提供するため、WRAMは小さいかランダムにデータアクセスをフィルタリングするのに使用しなければならない。第三に、IDPの制限されたコンピューティング機能により、アルゴリズムはIDPが基本ハードウェアをサポートする演算(例えば、整数の追加)を使用しなければならない。IDPはエミュレーションを介して整数乗算/除算及び浮動小数点演算のような非固有演算をサポートする。しかし、ネイティブではない作業ではるかに低い計算スループットを達成する。
【0067】
ハッシュ結合アルゴリズムは、ハッシュテーブルを利用して両テーブル、すなわち、R及びSに対する結合を行う。ハッシュ結合アルゴリズムは、まずRのタプルでハッシュテーブルを生成する。ハッシュテーブルは(キー、値)の対で構成される。組のキーと値は、各々元の結合キーとRタプルのタプルIDに該当する。その次に、ハッシュ結合アルゴリズムは、Sのタプルでハッシュテーブルをプローブし、当該ハッシュテーブルの項目でRのタプルを識別し、両方のタプルが与えられた結合条件子を満たすかどうかを検査する。
【0068】
単一のIDPハッシュ結合アルゴリズムは、アーキテクチャ特性を最大限に活用するために、ハッシュテーブルを作業メモリに生成し、ワークメモリの制限された容量に関して、Rでローカルパーティショニングを行った後、パーティションに対するハッシュテーブルを構築して検索し、Rの各パーティションを処理する。Rの全てのタプルを含む単一のハッシュテーブルを構築すると、ハッシュテーブルがメモリバンクに し、メモリバンクアクセスが発生する。ハッシュ結合アルゴリズムは、IDPが基本的にサポートする作業のIDPに優しいハッシュ関数を使用して高い計算スループットを達成することができる。ハッシュ結合アルゴリズムは衝突処理方法として線形プローブを使用する。
【0069】
図5は、様々なハッシュ関数の単一-PID性能を示す図であって、評価されたハッシュ関数のハッシングスループットと衝突率を示す。
【0070】
図5を参照すると、整数乗算を活用するハッシュ関数、すなわち、多重移動(Mult)、多重追加移動(MultAdd)、及びMurmurは、IDPの基本ハードウェアのサポート不足により、低いハッシュスループットを達成する。他の3つのハッシュ関数、すなわち、Tabulation、OAT、及びCRC32は、XORベースの作業を活用するので、はるかに高いハッシュスループットを達成する。また、128-Kのランダムに生成されたタプルでハッシュテーブルを構築して探索する間に発生したハッシュ衝突数を測定してハッシュ関数の衝突率を比較した結果、OAT及びCRC32はTabulationより低い衝突率を達成することを示している。しかし、追加の測定を介して、Tubulationのハッシングスループットが高いほど衝突率が高く、速度が最も速くなることが分かった。
【0071】
ソート-マージ結合アルゴリズムは、まず、R及びSタプルを整列した後に併合する。本発明で結合演算に使用されるソート-マージ結合アルゴリズムは、IDPの構造的特性に関して、レンジパーティショニング、並列適所整列、及び並列マージを行う。レンジパーティショニングは、WRAM内の作業集合に合わせるために、同じ結合キー値のレンジを有するタプルをグループ化するのに使用する。レンジパーティショニングの場合、互いに異なるパーティションが固有の結合キー値のレンジを有するようにするため、1つのパーティションのタプルを整列することは、他のパーティションのタプルと独立する。よって、並列適所整列を介して互いに異なるスレッドに互いに異なるパーティションが割り当てられた後、スレッドは割り当てられたパーティションを同時に整列する。また、内部整列アルゴリズムを使用して作業セットのサイズがWRAM容量を超えないようにする。ソート-マージ結合アルゴリズムは、また、R及びSタプルを併合するためにマルチスレッドサポートを利用して様々なR及びSパーティションをWRAMにロードした後、RパーティションをIDPの他のスレッドに割り当てて1つのSパーティションのタプルを全てのR パーティションと併合する。このアルゴリズムは早い整列を使用する。
【0072】
ネスト-ループ(Nested-Loop)結合アルゴリズムは、ネスト-ループを使用してR及びSタプルの全ての組で結合条件子を繰り返し評価する。メモリバンクの帯域幅を最大化するために、当社のネスト-ループ結合アルゴリズムはRの全てのタプルがWRAMに入ることができるかどうかに応じて、Rタプルを仮に格納するバッファに異なる量のWRAMを割り当てて、WRAMとメモリバンクとの間のデータ転送量を最小化する。Rの全てのタプルがWRAMに収まると、ネスト-ループ結合アルゴリズムは、容量がタプルの容量と一致するWRAMバッファを割り当てて、Rの全てのタプルをバッファにロードし、残りのWRAMバッファを活用してSタプルをストリーミングする。そうでない場合、Sタプルを格納するためにほとんどのWRAMを割り当てて、残りのWRAMをRタプルに対する循環バッファとして使用する。
【0073】
本発明で提案したPID-JOIN方式は、最高性能の単一のIDP結合アルゴリズムを識別するために、単一のIDPで3つの単一のIDP結合アルゴリズムの結合実行の待ち時間を比較できる。
【0074】
図6a及び6bは、ハッシュ結合、ソート-マージ結合、及びネスト-ループ結合のアルゴリズム別の結合実行の遅延時間を示す図であって、
図6aは均一なSの場合であり、
図6bは歪曲されたSの場合を各々示す。
【0075】
図6a及び6bを参照すると、ハッシュ結合アルゴリズムは全ての実験で最も早く、WRAMを効率的に使用してWRAMとメモリバンクとの間のデータ転送を最小化し、最高の性能を達成した。これに対し、他の結合アルゴリズムは頻繁なメモリバンクアクセスのため困難を経験した。ハッシュ関数の側面でTABを使用すると、OATまたはCRC32を使用するよりも結合処理速度が速くなることがある。TabulationはOATおよびCRC32よりも高い衝突率を達成するが、より高いハッシングスループットはより高い衝突率によるペナルティを緩和することができる。
【0076】
PIMサポートのDIMMを最大限に活用するためには、単一のIDPハッシュ結合アルゴリズムを最小64個のIDPで構成された全体ランクに拡張しなければならない。ランクレベルの拡張は、必然的にパーティショニングの問題につながる。単一のIDP結合アルゴリズムは、R及びS全体がメモリバンクに格納されていると仮定する。しかし、ランク全体に拡張するためには、まず、各IDPが一組のR及びSパーティションのみ処理し、パーティション間に従属性がないようにテーブルをパーティショニングしなければならない。グローバルパーティショニングともいうパーティショニングステップは、同じハッシュキーの範囲に属する全てのタプルが同じIDPに属するように、両テーブルのタプルをIDPに配布する。
【0077】
IDPの非共有アーキテクチャにより、ホストCPUの介入はIDP間通信に不可避である。この特性は膨大な量のオーバーヘッドを発生させ、性能のボトルネック現象になる。従って、早いIDP間通信に対する主要な課題は、DIMMのデータレイアウトである。ランクにある複数のチップ間のバイト方式のインターリービングにより、ホストCPUはPIMサポートのDIMMから取得したソースデータを解釈できない。これを解決するために、DIMMの既存のカーネルモジュールはCPUで受信された全てのキャッシュラインに対してバイトレベルの転置作業を行うことができるが、CPUに多くの計算負担を与えるため、性能のボトルネック現象になる。
【0078】
本発明で提案したPID結合方式は、既存のIDP間通信の高い待ち時間と低い帯域幅を解決するために、RnS(Rotate-and-Stream)演算を行うことができる。パーティショニング動作を少し調整すると、CPUの負担を単一回転に大幅に減らすことができる。また、回転は単一のキャッシュライン内で発生する。これにより、IDP間通信のためのデータをメインメモリに転送せずにレジスタにのみ保管できるため、メインメモリのアクセスが必要なく、ベクトルストリーミングが可能である。
【0079】
図7は、RnS(Rotate-and-Stream)演算の実行過程を説明する図である。
【0080】
図7を参照すると、各々8バイトのタプル8個を送受信する8個のIDPの例と共にRnSを示す。8個のIDP間で単一のタプルが送受信される。パーティショニングステップでは、各IDPは、ねじれた順に分割ストレージを構成する。パーティショニングビンが常に0から始める対象チップIDによって整列される既存のIDP間通信とは異なり、RnSの場合、まず自分を対象とするビンを配置した後、昇順に配置する。例えば、チップ(Chip)0のパーティションは0、1、2、...、7の順に格納され、チップ(Chip)7のパーティションは7、0、1、...、6の順に格納される。その次に、単一の64バイトのキャッシュラインサイズのデータブロックをバイトレベルの転置なしでメインプロセッサから読み込む。キャッシュラインは、8個のチップ各々の最初の8バイトを含むが、垂直に整列する同じ色相のタプルで描かれるバイトインターリービング方式である。その後、64バイトブロック(N番目のチップはNバイト)の各々に対してビット回転を実行すると、最後にデータをPIMサポートのDIMMに転送するだけでIDP間通信が可能になる。
【0081】
回転は64バイトのキャッシュライン内で発生するため、512ビットのSIMDレジスタに収まることがある。これにより、ベクトルコマンドを使用して効率的な回転が可能であり、より重要なことは、メインメモリが必要ではないということである。また、キャッシュアクセスオーバーヘッドは、非時間的ストリーミング作業でキャッシュにストリーミングすることによって最小化することができる。ここで、RnSの実現は、ホストCPUキャッシュを汚染しない非一時的なストリームロードの命令_mm512_stream_load_si512()を使用して、PIMサポートのDIMMで64バイトのデータをロードする。回転は_mm512_rol_epi64()の命令を使用してその場で実行される。その次に、データがDIMMに書き戻されると、データをキャッシュに書き込むことなくDIMMに直接アクセスするストリーム格納作業_mm512_stream_si512()を使用する。
【0082】
図8は、既存に比べてRnSの相互IDP通信の帯域幅を示す図である。
【0083】
図8の(a)は、単一ランクの64個のIDP間で転送される総データ量を32MBから2GBに変更して帯域幅を示す。帯域幅の側面でRnSはホストCPUの計算量が減り、データがメインメモリに流出しないため、幾何平均で既存の方法より6.23倍さらに優れていることを示す。
図8の(b)は、使用可能なCPUコア数が減る場合に性能がどのように低下するかを示す。RnSは、CPUへの依存度が低いため、既存のIDP間通信よりも使用可能な計算リソースにあまり敏感ではないことを示す。RnSを行うためには、各IDPが転送するデータをパケット単位で準備しなければならない。PIMサポートのDIMMを活用するためには、単一ランクのIDP間通信を複数のランク及びDIMMに拡張しなければならない。本発明で提案したPID-JOIN方式は、並列RnSアクセス方式を取ることができる。
【0084】
本発明で提案したPID-JOIN方式は、グローバルパーティショニングが正しいIDPに配置するため、DIMMのメモリバンクにある入力及び出力のタプルに厳格な順序が必要ではない。PID-JOIN方式では、全てのIDPにかけてR及びSタプルを均等に配布する。PID-JOIN方式は、メインメモリに対する任意のアクセスを要求せず、R及びSタプルをIDPに均等に分配するメカニズムであるUSG(Unordered Scatter-Gather)演算を実現する。
【0085】
図9は、USG(Unordered Scatter-Gather)演算の実行過程を説明する図であって、特に散乱過程を示す。
【0086】
図9を参照すると、USGの作業モデルは64バイトのタプルをストリーミング方式で512ビットのベクトルレジスタに直接ロードし、メインメモリの様々な領域で不要な小さいロードを除去する。その次に、単純にバイトレベルの転置を行った後、PIMサポートのDIMMに転送すると、転送が完了する。既存のIDP方式のデータ転送は、タプルを正確な対象IDPに転送しなければならないという制限があるのに対し、USGは領域分割を含まない。結果として、USGはメインメモリとPIMサポートのDIMMの全てに対して順次アクセスを行うのに対し、タプルはIDPに均等に分配できる。
【0087】
図10は、本発明に係るPID-JOINの作業モデルを示す図である。
【0088】
図10を参照すると、本発明に係るPID-JOIN方式はCPU(Central processing unit)及びPIM(Processing-in-memory)サポートのDIMM(Dual in-line memory module)間のUSG及びRnS演算を行い、両テーブルのR及びSに対して結合演算を行うことができる。
【0089】
まず、CPUはメインメモリにあるR及びSタプルに対してUSG演算を行ってPIMサポートのDIMMに均等に分配する((1))。その次に、PIMサポートのDIMMのIDP(In-DIMM Processor)は各々自分のR及びSタプルに対してグローバルパーティショニングを行って、各パーティションのタプルをグループ化し、RnS用パケットを形成する((2))。PIMサポートのDIMMの間ではRnSを使用して多対多(all-to-all)の相互IDP通信を行って、同じハッシュキー値を有するR及びSタプルが同じIDPに転送されるようにする((3))。その後、IDPはR及びSタプルで単一のIDPハッシュ結合アルゴリズムを実行し、結合の結果、タプルを生成する((4))。結果、タプルはUSG演算の実行を介してメインメモリに転送する((5))。
【0090】
CPUベースの基本システムにおける既存のCPUベースの結合アルゴリズムとPIMサポートのシステムにおける結合実行遅延時間とを比較し、本発明で提案したPID-JOIN方式を評価する。ワークロードの場合、インメモリ結合の加速化に対する多様な先行研究から派生したワークロードセットを使用する。多様なタプル数とZipf係数を有する両テーブルのR及びSで結合実行遅延時間を測定する。各タプルは、32ビットの整数結合キーと32ビットのタプルIDで構成される。また、SのZipf factorを結合性能評価に使用される代表的なZipf factorである0.00、0.25、0.50、0.75で構成し、歪曲されたテーブルの影響を評価する。
【0091】
まず、均一なR及びSを使用してCPUベースの結合アルゴリズムと比較し、本発明に係るPID-JOIN方式の実行遅延時間を評価する。各々CPUベースの結合アルゴリズムとしてネスト-ループ結合はSQLite、ソート-マージ結合はM-PASS、ハッシュ結合はPRO及びPRHOを選択する。PID-JOIN方式の場合、単一のIDPハッシュ結合アルゴリズムの他に単一のIDPソート-マージ及びネスト-ループ結合アルゴリズムを含む。RnS及びUSGは、3個の単一のIDP結合アルゴリズムに全て適用される。
【0092】
図11は、均一なR、S、及び可変|R|:|S|の比率を使用するCPUベースの結合アルゴリズム及びPID-JOIN方式の結合実行遅延時間の実験結果を示す図である。
【0093】
図11を参照すると、実験結果は、本発明に係るPID-JOIN方式がIDPの高い内部メモリ帯域幅と計算スループットを効率的に活用し、全てのワークロードでCPUベースの結合アルゴリズムよりも性能に優れていることを示す。これに対し、CPUベースの結合アルゴリズムは、ホストCPUとメインメモリとの間でデータを転送する過程で制限されたメモリ帯域幅の問題を経験する。評価された結合アルゴリズムのうち最も早い単一-IDPハッシュ結合アルゴリズムを適用したPID-JOIN方式の場合、PRHOより1.92倍の幾何平均速度の向上を達成する。
図11の(a)を見ると、本発明に係るPID-JOIN方式は、PRHOより2.27倍の幾何平均速度の向上を達成するのに対し、速度の向上は64Mタプルで1.6倍である。PID-JOIN方式の大きい速度の向上は、主にPIMサポートのDIMMを使用する早いハッシュテーブルのビルド及びプローブのためである。
【0094】
図12及び13は、PID-JOIN方式の結合実行遅延時間の分析結果を示す図である。
【0095】
図12を参照すると、単一のIDPハッシュ結合アルゴリズムのみ適用するとき、平均総待ち時間の92.4%を占める高いIDP間及びホストDIMMデータ転送のオーバーヘッドにより、1.62倍の幾何平均速度の低下が観察される。IDP間通信及びホスト-DIMM通信は、各々1.79GB/s及び1.77GB/sに過ぎず、かなりの遅延時間が発生する。RnSを適用すると、全体IDP間通信が最適化され、PRHOより幾何平均速度が1.15倍向上する。ランク別USGを適用すると、ホスト-DIMMデータ転送が最適化され、PRHOより幾何平均速度が2.27倍向上する。|R|:|S|の比率が高まると、PRHO及びPID-JOIN方式の遅延時間が小さくなるため、Rが減る。それにもかかわらず、速度の向上は相対的に一定に維持される。|R|:|S|の比率が1:1の場合、幾何平均速度の増加は2.43倍であり、1:32の場合、幾何平均速度の増加は2.21倍である。
【0096】
SのZipf係数を0から0.75に調整し、歪曲されたテーブルでPID-JOINの堅固さを評価することができる。PID-JOIN方式はハッシングでグローバルパーティショニングを行うため、歪度が高いと、IDP間にロードの不均衡が発生し得る。
【0097】
図13を参照すると、PID-JOINがZipf係数0.75を除いて偏向したテーブルに強いことを示す。しかし、Zipf係数が0.75である場合、PID-JOINの実行遅延時間は、PRHOより低く維持される。これに対し、PRHOの実行遅延時間は、Zipf係数が大きいほど少し減少する。これは、S内の重複タプルが増加したためである。重複タプルは、同じハッシュ値を生成し、ハッシュテーブルの同じ項目を参照する。PID-JOINで重複タプルはグローバルパーティショニングが重複タプルを同じIDPに割り当てるため、IDP間に不均衡を誘発し得る。重複タプルを変更して他のハッシュ値を生成するスキュー処理方法を使用し、IDP間のこのようなロードの不均衡を緩和できることが予想される。
【0098】
次に、本発明に係るPID-JOIN方式のシステム費用をCPUベースのPRHOのシステム費用と比較する。
【0099】
比較のために、まず、PIMサポート及びCPUベースの基本システムの製造メーカーの希望小売価格(MSRP)を収集して合算できる。その次に、当該システム費用を実験で達成した最大の結合処理スループット(すなわち、タプル/s)に分けて、2つの結合アルゴリズムの性能当たりのシステム費用を得ることができる。
【0100】
比較の結果、PID-JOINがPRHOより26.9%さらに低い性能当たりのシステム費用を達成した。PID-JOINは$4,020のPIMサポートのシステムで最大158.4Mタプル/秒を達成する。しかし、基本システムのPRHOは、最大65.2Mタプル/秒を達成する。結果は、PID-JOINがCPUベースの結合アルゴリズムよりRDBMSに魅力的な選択になり得ることを示す。
【0101】
敏感度研究(Sensitivity Studies)
【0102】
RnS(Rotate-and-Stream)のバケットサイズの影響
【0103】
RnSのパケットサイズがall-to-all inter-IDP通信の帯域幅に及ぼす影響を研究するために、多様なサイズのS(64M、128M、256M及び512Mタプル)で5個のパケットサイズ(8、16、32、64、及び128バイト)で総帯域幅、有効帯域幅及びフィルレートを測定する。総帯域幅はヌルパケットを含む帯域幅で測定されるのに対し、有効帯域幅はヌルパケットを除く。フィルレートは2つの帯域幅値間の比率である。
【0104】
図14は、パケットサイズに応じてRnSの帯域幅がどのように変わるかを示す。前記で言及したように、RnSは8バイトパケット(8個のIDPを含むランクの場合64バイト)を使用して早いIDP間通信を達成する。理想的に総帯域幅は8バイトより大きいパケットサイズで一定に維持されなければならない。より大きいパケットサイズは、順次のメモリバンクのアクセスから利点を得る。しかし、パケットサイズが大きいほどフィルレートの減少により有効帯域幅が少し減少する。
【0105】
PIMカーネル呼出のオーバーヘッド
【0106】
PID-JOINのスループットに対するPIMカーネル呼出のオーバーヘッドの影響を分析する。全てのPIMカーネル呼出は、PIMサポートのシステムで約12msの待ち時間のオーバーヘッドを発生させる。PID-JOINはパーティショニング、ハッシュテーブルのビルド及びハッシュテーブルの検索のために、互いに異なるPIMカーネルを呼び出すため、全体のPIMカーネル呼出のオーバーヘッドは一定に維持される。オーバーヘッドがPID-JOINの性能利点を相殺しないようにするためには、PIMカーネルにテーブルサイズと関連して増加する充分な量の作業がなければならない。
【0107】
図15は、多様なサイズのR及びSに対するPIMカーネル呼出のオーバーヘッドの影響を示す。結合実行待ち時間に対する呼出のオーバーヘッドの寄与度は、テーブルサイズが増加するにつれて減少する。呼出のオーバーヘッドは256Mタプルで無視してもよい。しかし、呼出のオーバーヘッドは、64Mタプルで14.9%を占める。オーバーヘッドにもかかわらず、依然としてPID-JOINは評価された全てのワークロードに対して持続的にPRHOを上回る。
【0108】
衝突処理方法
【0109】
PID-JOINの単一のIDPハッシュ結合アルゴリズムは、衝突処理のために線形プローブ(LP)を使用する。しかし、LPは失敗したプローブの数が増加するにつれて、かなりの性能オーバーヘッドを招くことができる。
【0110】
図16は、PID-JOINとLP、QP(quadratic probing)、及びDH(double hashing)の実行遅延分析及び衝突比率を示す。
【0111】
全般的にLPはQP及びDHより衝突率が高いが、実行遅延時間が最も低い。LPの低い遅延時間は、計算のオーバーヘッドが低いためである。衝突の時、LPは単純に以前のキーに1つを追加してハッシュテーブルの次の項目をプローブする。しかし、QPにはIDPで基本的にサポートしない整数乗算が必要であり、DHには追加のハッシュ関数が含まれる。追加計算のオーバーヘッドにより、QPとDHは結合実行遅延時間が長くなり、LPが最も早い衝突処理方法になる。歪曲されたSでも似ている傾向を観察できる。
【0112】
結果は、また、ローカルパーティショニングがPID-JOINの結合実行遅延時間の最大48.0%を占めることを示す。ローカルパーティショニングは、パーティションのタプルが50%のパッキング比率で32KBのハッシュテーブルを満たすものと仮定して計算されるパーティション当たりの最大のタプル数を制限し、WRAMに合うパーティションの作業セットを保証する。極端な歪度の場合、過度な重複タプルにより、ローカルパーティショニングがWRAM内のパーティショニング作業集合に合わないことがある。
【0113】
TPC-Hクエリーを介した潜在的速度の向上
【0114】
今、スケールファクターが400である4個の単一結合TPC-Hクエリー(Q4,Q12,Q14,Q19)を使用し、完全なRDBMSに統合されるときにPID-JOINの潜在的な速度の向上をプローブする。実験のために、まず、CPUベースのベースラインシステムで有名なインメモリRDBMSであるMonetDBの終端間クエリー実行遅延時間を測定する。その次に、結合演算子の実行遅延時間を識別し、結合実行遅延時間をPID-JOINに変えて、クエリーに対する予想速度の向上を計算する。各クエリーに対して、まずMonetDBのクエリーの計画によって、結合演算子の入力に使用されるテーブルを抽出する。その後、PIMサポートのシステムから抽出されたテーブルでPID-JOINを行う。クエリーに対するPID-JOINの結合実行遅延時間を測定するとき、ホスト-DIMMデータ転送のオーバーヘッドを考慮する。
【0115】
図17a及び17bは、PID-JOINをMonetDBに統合するとき、MonetDBのクエリー実行遅延時間の分析とクエリーの予想速度の向上を示す。
【0116】
PID-JOINは、クエリー結合で2.55倍の幾何平均速度の向上を達成する。PID-JOIN augmented MonetDBの予想速度の向上は、幾何平均で1.14倍である。結果は、結合を加速化するためにPID-JOINを使用することがインメモリRDBMSに対する有望な選択であることを示す。本発明で提案したPID-JOIN方式は、PIMサポートのDIMMの他にも多様な形態のPIMハードウェアを取ることができる。
【0117】
本発明で提案したPID-JOIN方式は、分散及び分割のハッシュ結合アルゴリズムを使用してIDPで結合スループットを最大化でき、CPUの代わりにDIMMで両テーブルのグローバルパーティショニングを行ってDIMMの高い内部メモリ帯域幅と計算スループットを活用することができ、このとき、CPUに関する多対多のIDP間通信の過程でCPUキャッシュストリーミング及びベクトル命令を使用してIDP間通信の性能のオーバーヘッドを最小化することができる。また、本発明で提案したPID-JOIN方式は、CPUとDIMMとの間のデータ転送待ち時間を最小化することができ、データ転送を加速化できる。
【0118】
前述では、本発明の好ましい実施形態を参照して説明しているが、当該技術分野における熟練した当業者は、下記の特許請求の範囲に記載された本発明の思想及び領域から外れない範囲内で本発明を多様に修正及び変更させることができるということを理解できるはずである。
【符号の説明】
【0119】
100 PIMベースのコンピューティング装置
110 メインメモリ
130 PIMモジュール
131 メモリプロセッサ
133 作業メモリ
135 メモリバンク
150 プロセッサ