JP7382233B2 - データベースアクセラレータに対する並列計算オフロード - Google Patents

データベースアクセラレータに対する並列計算オフロード Download PDF

Info

Publication number
JP7382233B2
JP7382233B2 JP2019570482A JP2019570482A JP7382233B2 JP 7382233 B2 JP7382233 B2 JP 7382233B2 JP 2019570482 A JP2019570482 A JP 2019570482A JP 2019570482 A JP2019570482 A JP 2019570482A JP 7382233 B2 JP7382233 B2 JP 7382233B2
Authority
JP
Japan
Prior art keywords
database
integrated circuit
data
dbms
data blocks
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.)
Active
Application number
JP2019570482A
Other languages
English (en)
Other versions
JP2020524853A (ja
Inventor
ハレ ケー. ヴァーマ,
ソナル サンタン,
ヨンジュン ウー,
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
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 Xilinx Inc filed Critical Xilinx Inc
Publication of JP2020524853A publication Critical patent/JP2020524853A/ja
Application granted granted Critical
Publication of JP7382233B2 publication Critical patent/JP7382233B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Advance Control (AREA)

Description

本開示の例は、一般にデータベースアクセラレータに関し、特に、データベースアクセラレータにおけるデータベース照会に関するデータブロックの準備および実行に関する。
リアルタイム分析論は、分析すべきデータ量が増えるにつれてますます計算を多用することになる。その結果、費用のかかる、時には実行不可能な、大量の計算ノードスケーリングが生じることになる。データベースに記憶されたデータの照会および分析は、データベースのサイズが大きくなるにつれて、より複雑で時間のかかるものになる。典型的には、データベース管理システム(DBMS:data base management system)は、1つまたは複数のCPUを使用してデータベース上でクライアント照会を実行する。しかしながら、CPUによって並列に処理可能なデータの量は限定されている。
データベースアクセラレータを動作させるための技法を説明する。1つの例は、データベース管理システム(DBMS)を実行するように構成されたホスト中央処理ユニット(CPU:central processing unit)と、ホストCPUとは別個のデータベースアクセラレータとを含む、照会処理システムであり、データベースアクセラレータは複数の処理ユニット(PU:processing unit)を含む。DBMSは、データベース上で実行するために照会を受信するように、照会に対応するデータベースからデータベーステーブルを取り出すように、データベーステーブルを、複数のPUデータブロック(各々が複数のPUのうちの1つに対応する)を備えるデータブロックに再フォーマットするように、および、データブロックをデータベースアクセラレータに伝送するように、構成される。データベースアクセラレータは、複数のPUを並列に使用して複数のPUデータブロックを処理するように、および、結果をPUからDBMSに転送するように、構成される。
いくつかの実施形態において、複数のPUデータブロックの各々は、複数のPUデータブロックの各々におけるデータの量を示すヘッダを含むことができる。
いくつかの実施形態において、データベースアクセラレータは、複数のPUの各々からの個々の結果を受信するように、および、個々の結果を結合結果に組み合わせ、この結合結果がDBMSに転送されるように構成された、コンバイナを含むことができる。
いくつかの実施形態において、照会は、構造化照会言語(SQL:structured query language)照会を含むことができる。
いくつかの実施形態において、データベースアクセラレータは、1つまたは複数のプログラム可能集積回路上でホストすることができる。
いくつかの実施形態において、DBMSは、DBMSと1つまたは複数のプログラム可能集積回路との間のインターフェースとして働く、プログラム可能集積回路フレームワークを含むことができる。プログラム可能集積回路フレームワークは、DBMSによって発せられた命令を、1つまたは複数のプログラム可能集積回路によって解釈可能なコマンドに変換するように構成可能である。
いくつかの実施形態において、1つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ(FPGA:field-programmable gate array)を形成することができる。
いくつかの実施形態において、データベースアクセラレータは、1つまたは複数の特定用途向け集積回路(ASIC:application specific integrated circuit)上でホストすることができる。
別の例は、1つまたは複数の集積回路上で実装される複数のPUを含む、データベースアクセラレータであり、データベースアクセラレータは、別のホストCPU上で実行するDBMSからデータブロックを受信するように構成され、データブロックは、データベースから取り出されたデータベーステーブルに基づき、各々が複数のPUのうちの1つに対応する複数のPUデータブロックを備える。さらに、複数のPUは、複数のPUデータブロックを並列に処理するように構成される。データベースアクセラレータは、複数のPUの各々から個々の結果を受信するように、および、個々の結果を結合結果に組み合わせ、この結合結果がDBMSに転送されるように構成された、コンバイナも含む。
いくつかの実施形態において、複数のPUデータブロックの各々は、複数のPUデータブロックの各々におけるデータの量を示すヘッダを含むことができる。
いくつかの実施形態において、データベーステーブルは、SQL照会を使用してデータベースから取り出すことができる。
いくつかの実施形態において、1つまたは複数の集積回路は、1つまたは複数のプログラム可能集積回路を含むことができる。
いくつかの実施形態において、データベースアクセラレータは、DBMSと1つまたは複数のプログラム可能集積回路との間のインターフェースとして働く、DBMS内のプログラム可能集積回路フレームワークと通信するように構成可能である。プログラム可能集積回路フレームワークは、DBMSによって発せられた命令を、1つまたは複数のプログラム可能集積回路によって解釈可能なコマンドに変換するように構成可能である。
いくつかの実施形態において、1つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ(FPGA)を形成することができる。
別の例は、1つまたは複数の処理デバイス上で実行されたとき、DBMSのための動作を実行する命令を記憶する非一時的コンピュータ可読記憶媒体である。動作は、データベース上で実行するために照会を受信すること、照会に対応するデータベースからデータベーステーブルを取り出すこと、データベーステーブルを、複数のPUデータブロック(各々がデータベースアクセラレータ内の複数のPUのうちの1つに対応する)を備えるデータブロックに再フォーマットすることであって、データベースアクセラレータはDBMSをホストするCPUとは別個である、再フォーマットすること、データブロックをデータベースアクセラレータに伝送すること、および、データブロックを並列に処理する複数のPUから生成された結果を受信すること、を含む。
いくつかの実施形態において、複数のPUデータブロックの各々は、複数のPUデータブロックの各々におけるデータの量を示すヘッダを含むことができる。
いくつかの実施形態において、照会はSQL照会を含むことができる。
いくつかの実施形態において、データブロックをデータベースアクセラレータに伝送することは、DBMSによって発せられた命令を、プログラム可能集積回路フレームワークを使用してデータベースアクセラレータによって解釈可能なコマンドに変換することを含むことができる。プログラム可能集積回路フレームワークは、DBMSと、データベースアクセラレータを実装する1つまたは複数のプログラム可能集積回路との間の、インターフェースとして働くことができる。
いくつかの実施形態において、1つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ(FPGA)を形成することができる。
いくつかの実施形態において、DBMSは、CPUと1つまたは複数のプログラム可能集積回路との間でデータブロックを移動させるための機能を備える、ライブラリを含むことができる。
したがって、前述の特徴、上記で簡単に要約された、より特定の説明を、詳細に理解することができる様式は、例示の実装を参照することによって有することが可能であり、そのうちのいくつかが添付の図面に示されている。しかしながら、添付の図面は典型的な例示の実装のみを示しており、したがって、その範囲を限定するものとはみなされないことに留意されたい。
一例に従った、データベースアクセラレータを含むデータセンタを示す図である。 一例に従った、データベースアクセラレータを使用して照会を実行するためのフローチャートである。 一例に従った、データベースアクセラレータに対する照会をオフロードするためのDBMSを示す図である。 一例に従った、データベーステーブルを並列計算用にカスタマイズされたデータブロックに変換することを示す図である。 一例に従った、データベースアクセラレータにおいて並列タスクを実行することを示す図である。
理解しやすくするために、可能であれば、図面に共通の同一の要素を指定するために同一の参照番号が使用されている。1つの例の要素を他の例に有利に組み込むことができることが企図されている。
以下、図面を参照しながら様々な特徴を説明する。図面は一定の縮尺である場合、または一定の縮尺でない場合があること、および、同様の構造または機能の要素は図面全体を通じて同様の参照番号によって表されることに留意されたい。図面は、特徴の説明を容易にすることのみが意図されていることに留意されたい。説明の網羅的な説明として、または特許請求の範囲に関する制限としては、意図されていない。加えて、図示された例は、必ずしもすべての態様または利点が示されている必要はない。特定の例に関して説明される態様または利点は、必ずしもその例に限定されず、たとえそのように図示されていない場合、またはそのように明示的に説明されない場合であっても、任意の他の例において実践可能である。
本明細書における実施形態は、データベースアクセラレータにおけるデータベース照会に関するタスクを準備および実行するための技法を説明する。一実施形態において、データベースアクセラレータはホストCPUとは別個である。たとえば、データベースアクセラレータは、プログラム可能集積回路(たとえば、フィールドプログラマブルゲートアレイ(FPGA))または非プログラム可能集積回路(たとえば、特定用途向け集積回路(ASIC))を使用して、実装可能である。いずれの場合でも、データベースアクセラレータは、データベース管理システム(DBMS)を実行するホストCPUに通信可能に結合される。
DBMSは、データベースアクセラレータに対するデータベース照会に対応するタスクをオフロードすることができる。DBMSは、照会に関連するデータベースにデータを要求し、その後そのデータを、データベースアクセラレータによる処理に適したデータブロックに変換することができる。一実施形態において、データベースアクセラレータは、並列または同時にデータを処理することが可能な個々のハードウェア処理ユニット(PU)を含む。しかしながら、DBMSは、データを同時に処理するために、データベースから取り出されたデータベーステーブルを、各々がデータベースアクセラレータ内のそれぞれのPU向けである個々のPUデータブロックを含むデータブロックに変換することができる。
データベースアクセラレータ内のPUは、PUデータブロックを並列に実行する。たとえばPUは、クライアント照会(たとえば、構造化照会言語(SQL)照会)によって規定されたようにデータを分析し、その後、個々の結果を戻すことができる。データベースアクセラレータは個々の結果を組み合わせ、結合結果をDBMSに戻す。ひいてはDBMSは、データベースアクセラレータから受信した結果を他のデータとマージし、その後、照会結果をクライアントに伝送することができる。このようにして、DBMSは、データベース照会を実行するために、データベースアクセラレータ内でPUによって実行される並列化を利用することができる。
図1は、一例に従った、データベースアクセラレータ145を含むデータセンタ100(たとえば、照会処理システム)を示す。データセンタ100は、データベース105Aおよび105Bならびに計算ノード110を含む。一実施形態において、データベース105は関係データベースであり、データベース105内に記憶されたデータにはSQL照会によってアクセス可能である。しかしながら、本明細書における実施形態は、関係データベースに限定されない。
計算ノード110は、PCIe接続130を介して通信可能に結合される、ホストCPU 115およびFPGA 140を含む。ホストCPU 115は、データベースアクセラレータ145に対するクライアント照会を実行および分析することに関するタスクをオフロードすることが可能な、DBMS 120(たとえば、ホストCPU 115上で実行するソフトウェアアプリケーション)を実行する。一実施形態において、DBMS 120は関係DBMS(RDBMS)である。図示されていないが、DBMS 120は、データベース105上で実行するために照会(たとえば、クライアント照会)を受信する。たとえば照会は、データベース105からデータを取り出すこと、データを処理すること、およびその後、照会を伝送したクライアントに結果を戻すことを、DBMS 120に命令する、検索、ソート、ワードカウント、または照会6とすることができる。さらに、DBMS 120は、その後データベース105内に記憶される更新済みデータを生成することができる。
照会を実行するためにホストCPU 115を使用することに代わって、DBMS 120は、FPGA 140内のデータベースアクセラレータ145への照会に対応するタスク(または作業負荷)の少なくとも一部をオフロードする。一実施形態において、データベースアクセラレータ145は、照会に関連付けられたタスクの一部を、ホストCPU 115が残りのタスクを実行する間に行うことができる。DBMS 120は、データベースアクセラレータ145から取得された結果を、ホストCPU 115によって生成された結果とマージすることができる。
FPGA 140は、データベースアクセラレータ145を実装するように構成された1つまたは複数のプログラム可能集積回路(図示せず)内に、プログラム可能論理を含む。FPGAを使用することの1つの利点は、そのプログラム可能論理を、ハードウェア記述言語を使用して、並列に動作可能なPU 150内に構成できることである。すなわち、FPGA 140は、多数のタスク(またはスレッド)を並列に実行するために、より適している可能性がある。FPGA 140が示されているが、別の実施形態において、データベースアクセラレータ145は、ASICなどの非プログラム可能集積回路上に実装可能である。ASICが使用される場合、ASICは、タスクを並列に実行するためにPU 150を含むように設計可能である。したがって、本明細書で説明する実施形態は、プログラム可能集積回路内に実装されるデータベースアクセラレータ145に限定されない。
FPGA 140とデータを共有するために、DBMS 120は、ホストCPU 115とFPGA 140との間でデータを移動させるための機能を含む、アクセラレータライブラリ125を含む。一実施形態において、アクセラレータライブラリ125は、データベース105から受信したデータを、データベースアクセラレータ145によって並列に処理可能なフォーマットに変換する、変換機能(本明細書ではエンキュー計算と呼ばれる)を含む。たとえば、データベース105から受信したデータは、データが行および列に配置される、データベーステーブルまたはデータベースページに編成することができる。DBMS 120は、エンキュー計算機能を使用して、データベーステーブルを、データベースアクセラレータ145内の様々なPU 150に割り当て可能なフォーマットに変換することができる。エンキュー計算機能に加えて、アクセラレータライブラリ125は、データベースアクセラレータ145に伝送したデータ、およびデータベースアクセラレータ145から受信したデータを、書き込み、読み取り、およびマージするための、他のコマンドを含むことができる。
PCIe接続130は、ホストCPU 115およびFPGA 140がデータを共有できるようにするが、任意の高速接続が使用可能である。一実施形態において、DBMS 120は、データベースアクセラレータ145との間でデータを伝送するために、直接メモリアクセス(DMA)を実行することができる。
一実施形態において、計算ノード110はサーバなどのコンピューティングデバイスである。別の実施形態において、計算ノード110はブレードサーバである。代替として、計算ノード110は、コンピューティングデバイス内の別個の構成要素とすることができる。たとえば、計算ノード110は、ホストCPU 115およびFPGA 140が取り付けられた共通基板、たとえば、マザーボードまたはフィールド交換可能ユニット(FRU)とすることができる。別の配置において、ホストCPU 115はマザーボード上に配設可能である一方で、FPGA 140はマザーボード内の拡張スロット内にプラグイン可能である。したがって、データベース照会を実行するためのホストCPU 115の能力を増加するために、FPGA 140を計算ノード110に追加することができる。別の例において、ホストCPU 115およびFPGA 140を共にパッケージングすることができる。
一実施形態において、クライアント照会はデータセンタ100にサブミットされ、DBMS 120に割り当てられる。たとえば、データセンタ100は、データベース105内にクライアントデータを記憶する、クラウドコンピューティング環境の一部とすることができる。下記でより詳細に説明するように、DBMS 120は、クライアント照会(あれば)のうちのどれだけをデータベースアクセラレータ145に対してオフロードするべきかを決定する。DBMS 120は、関連データをデータベース105から取り出し、データベースアクセラレータ145の支援の下でデータを分析し、結果をクライアントに返信する。データベース105および計算ノード110はデータセンタ100内に共設されるように示されているが、他の実施形態では、データベース105は計算ノード110とは異なる地理的位置に配設することができる。
図2は、一例に従った、データベースアクセラレータを使用して照会を実行するための方法200のフローチャートである。明確にするために、方法200内のブロックは、DBMS 120およびデータベースアクセラレータ145の機能および構成要素のより詳細な例示を提供する図3と、並行して説明する。
ブロック205において、DBMS 120は、データベース内に記憶されたデータの読み取り、分析、または更新を行うために、クライアント照会を受信する。クライアント照会は、或る人物(たとえば、給与支払の経理担当者、または、共通の属性を有する従業員を識別することを希望する人事部長)から、または、ソフトウェアアプリケーションから、生じる可能性がある。一実施形態において、クライアント照会はSQL照会である。
DBMS 120は、クライアント照会を使用して、データベース105にデータベース照会を伝送する。図3に示されるように、DBMS 120は、DBMS 120がデータについての要求をデータベース105に伝送できるようにする、データベースインターフェース310を含む。たとえばDBMS 120は、データベース105内のどこに何のデータが記憶されているかを示す、データベース105に対応するインデックスを含むことができる。DBMS 120はインデックスを使用して、何のデータがクライアント照会に関連するかを識別し、その後、そのデータをデータベース105に要求することができる。要求または照会に応答して、データベース105は、データベースインターフェース310を介してデータベーステーブル305またはデータベースページをDBMS 120に戻す。一実施形態において、データベーステーブル305はデータを行および列に配置する。
ブロック215において、DBMS 120は、各々がデータベースアクセラレータ145内のPU 365に対応する複数のPUデータブロックを有するデータブロック340に、データベーステーブル305を再フォーマットする。一実施形態において、データブロック340は、データベーステーブル305によって使用されるフォーマットよりも並列処理に適したフォーマットを有する。データブロック340の特定のフォーマットは、本開示において後に説明する。
図3に示されるように、DBMS 120は、アクセラレータライブラリからのエンキュー計算機能325を使用して、データブロック340を再フォーマットおよびキューイングする。この例において、エンキュー計算機能325は、データベーステーブル305(データベースインターフェース310内のバッファ315に記憶可能である)を使用して、データブロック340を生成する。DBMS 120は、図3に示される異なる垂直キューによって表される異なる照会のためのデータブロック340を生成するために、異なるエンキュー計算機能325を使用することができる。一実施形態において、異なる垂直照会は異なるスレッドを表す。DBMS 120において異なるスレッドを実行することで、ホストCPUの過負荷を回避することができる。
一実施形態において、複数のデータブロック340は同じ照会に対応する。たとえば、照会6を実行するために、DBMS 120は、データベースアクセラレータ145によって処理される複数のデータブロック340を生成するために、エンキュー計算機能325を複数回呼び出すことができる。
データブロック340は、1つまたは複数のデータベーステーブル305を含むことができる。たとえば、データブロック340は、単一のデータベーステーブル305内にすべてのデータまたはデータのサブセットを含むことが可能であるか、または、データブロック340は、複数のデータベーステーブル305からのデータを含むことができる。別の例において、単一のデータベーステーブル305は複数のデータブロック340に分割することが可能であり、この場合、データブロック340は図3に示されるように、データベースアクセラレータ145による処理を待って、DBMS 120内にキューイングされる。一実施形態において、キューイングされたデータブロック340は、1つずつデータベースアクセラレータ145に送信される。
データブロック340をデータベースアクセラレータ145に伝送する前に、DBMSは、データブロック340上で書き込みコールバック機能330を実行することができる。書き込みコールバック機能330は、アクセラレータライブラリの一部とすることが可能であり、データブロック340をデータベースアクセラレータ145に転送するためにDMAを使用する前に実行することができる。ブロック340がデータベースアクセラレータ145によって処理される前に、データをデータブロック340に書き込むために、書き込みコールバック機能330が使用される。たとえば、DBMS 120は、照会の一部としてクライアントから更新済みデータを受信している可能性があり、したがって、データベースアクセラレータ145内のPU 365によってブロックが分析される前に、第1に、その更新済みデータをデータブロック340内に書き込む。
ブロック220において、DBMS 120は、データブロック340をデータベースアクセラレータ145に伝送する。DBMS 120は、DBMS 120とFPGA 140との間のインターフェースとして働く、FPGAフレームワーク345を含む。一実施形態において、FPGAフレームワーク345は、DBMS 120によって発せられたコマンドおよび命令を、FPGA 140によって解釈可能なコマンドに変換する。FPGAフレームワーク345(たとえば、プログラム可能集積回路フレームワーク)は、ホストCPU(たとえば、x86ベースプラットフォーム)がFPGA 140と通信できるようにするために、アプリケーションコード(たとえば、OpenCL、C、C++など)を使用する、開発環境を使用して構成可能である。たとえばFPGAフレームワーク345は、FPGAをアクセラレータとして、たとえばデータベースアクセラレータ145として使用できるようにする。FPGAフレームワーク345を生成するための開発環境の非限定的な例の1つが、OpenCL、C、およびC++カーネルをサポートするXilinxのSDx開発環境である。FPGAフレームワーク345、ならびに図1内のアクセラレータライブラリ125は、グラフィックスアクセラレータまたは暗号アクセラレータなどの他のアクセラレータに対するタスクをオフロードするホストCPUと同様に、DBMS 120が、FPGA 140およびデータベースアクセラレータ145に対するタスクをオフロードできるようにする。
ブロック225において、データベースアクセラレータ145は、データブロック340内のそれぞれのPUデータブロックを、照会に従ってPU 365を使用して並列に処理する。データブロック340は、データベースアクセラレータ145内のパーサ360において受信される。パーサ360は、データブロック340を個別のPUデータブロックに分割することができ、その後、個別のPUデータブロックはPU 365のそれぞれに転送される。図に示されるように、PU 365は、PUデータブロックならびにデータブロックの処理の結果を記憶するために、それぞれのメモリ要素、たとえばBRAM 370を含むことができる。
データブロック340を伝送することに加えて、DBMS 120は、PU 365が受信したクライアント照会に従ってデータブロック340をどのように処理するべきかを示す命令を、データベースアクセラレータ145に伝送することも可能である。たとえば、照会がワードカウント照会である場合、DBMS 120は、カウントされるべきクライアントによって指定された特定のワードを、データベースアクセラレータ145に伝送する。次いで、ワードはPU 365に送信され、PU 365はそれぞれのPUデータブロックをトラバースして、そのワードの任意の出現を識別する。別の例では、照会がソートされる場合、DBMS120はデータブロック340をソートするためのパラメータを提供し、次いでPU 365はこのパラメータを使用して、データブロック340を再配置する。このようにしてDBMS 120は、分析するべきデータ、ならびにデータを分析するための命令またはパラメータの両方を、データベースアクセラレータ145に提供することができる。
DBMS 120は、FPGAフレームワーク345を使用してデータをFPGA 140に伝送するタイミングを決定する、イベントマネージャ320を含む。たとえば、イベントマネージャ320は、データブロック340を含むキューを監視し、データブロック340(または複数のブロック)がデータベースアクセラレータ145に伝送されるべきであるタイミングを決定することができる。
PU 365は、照会および/またはDBMS 120によって定義されたパラメータに従って、それらのそれぞれのブロックを分析する。前述のように、PU 365は別個のハードウェア要素であり、したがって、並列に実行可能である。たとえばPU 365Aは、PU 365BがそのPUデータブロックを分析するのと同時に、その対応するPUデータブロックを分析することができる。図3には数個のPU 365しか示されていないが、FPGA 140は、データベースアクセラレータ145が何十または何百のPU 365を有し、その各々が、データブロック340が並列に処理可能なように他のPU 365とは独立に動作可能であるように、構成可能である。
PU 365は、PUデータブロックの分析または処理の結果をコンバイナ375に転送する。ブロック230において、コンバイナ375は、PUによって出力された結果を組み合わせる。たとえば、ソート照会の場合、各PU 365はその個々のPUデータブロックをソートし、その後、コンバイナ375はソートされたデータブロックをデータの連続ブロックに組み合わせることができる。ワードカウントまたは検索照会の場合、コンバイナ375は、合計ワードカウントを識別するか、検索結果を組み合わせて、検索項目が見つかったデータブロック340内のすべてのロケーションを識別することができる。
データベースアクセラレータ145が受信したデータブロック340の処理を完了すると、FPGA 140はイベントマネージャ320に通知し、イベントマネージャ320は、FPGAフレームワーク345を使用してデータベースアクセラレータ145によって取得された結果を伝送するようにFPGA 140に命令する、読み取りコールバック機能335を実行する。ブロック235において、FPGA 140は、読み取りコールバック機能335に応答して、結合結果をホストCPUおよびDBMS 120に伝送する。
一実施形態において、図示されていないが、DBMS 120は他の機能を呼び出して、データベースアクセラレータ145から受信した結合結果を再フォーマットすることができる。たとえば、データがデータベース105内に記憶されるべきである(たとえば、データベースアクセラレータ145がデータを変更または再配置した)場合、DBMS 120はデータを、データベーステーブル305によって使用されるフォーマットにフォーマットすることができる。
ブロック240において、DBMS 120は、データベースアクセラレータ145から受信した結果をマージする。たとえばDBMS 120は、データベースアクセラレータ145によって逐次処理された複数のデータブロック340に、データベーステーブル305を分割しておくことができる。データブロック340の処理からの結果が、データベースアクセラレータ145から受信されると、DBMS 120内のマージャ355は、個々のデータブロック340の逐次処理からの結果を、単なる個々のデータブロック340ではなく、データベーステーブル305に対応する結合結果セットにマージすることができる。さらに、マージャ355は、データベースアクセラレータ145から戻された結果を、ローカル照会マネージャ350によって提供された結果とマージすることもできる。たとえばDBMS 120は、ローカル照会マネージャ350を使用して照会に関する何らかのタスクを、また、データベースアクセラレータ145を使用してその同じ照会についての他のタスクを、実行することができる。マージャ355は、照会マネージャ350を使用してホストCPU上にローカルに生成された結果、およびデータベースアクセラレータ145によって生成された結果を、マージすることができる。しかしながら、他の実施形態において、照会に関連付けられたすべてのタスクを、データベースアクセラレータ145によって実行することができる。その場合、マージャ355は、データベースアクセラレータ145によって提供された結果をローカル結果とマージする必要はない。
ブロック245において、DBMS 120は、照会結果380をクライアントに転送する。照会結果380は、ワードカウント、検索結果、特定の様式でのデータのソートの結果などを含むことができる。一実施形態において、DBMS 120は、照会に応答して、データベース105内に記憶されたデータを更新することもできる。たとえば、図3には示されていないが、DBMS 120は、データベースインターフェース310を使用して、更新されたデータベーステーブル305をデータベース105に伝送することができる。別の例において、DBMS 120は、照会に応答して、データベース105内に記憶されたデータを削除または移動することができる。別の実施形態において、DBMS 120は、いずれの結果もクライアントに戻すことなく、クライアント照会に応答して、データベース105内のデータを記憶、削除、または移動することができる。たとえばクライアント照会は、結果をクライアントに戻す必要なしに、データベース105内に記憶されたデータを変更または更新するための命令とすることができる。それにもかかわらずDBMS 120は、たとえデータベースアクセラレータ145によって提供された結果が、クライアントに送達されるのではなくデータベース105内に記憶される場合であっても、データベースアクセラレータ145を使用して、たとえばデータベース105内に記憶されたデータを更新することができる。
方法200は、PU 365を使用して単一のデータブロック340を並列に処理することを示しているが、他の実施形態において、データベースアクセラレータ145は、複数のデータブロック340を並列に処理することができる。たとえば、PU 365の半分が1つのデータブロック340を処理することができる一方で、他方の半分は異なるデータブロック340を処理する。さらに、一実施形態において、FPGA 140は、独立に動作可能な複数のデータベースアクセラレータ145を含むことができる。したがって、アクセラレータのうちの1つが、図3に示された垂直キュー(またはスレッド)のうちの1つについて1つのデータブロックを処理する一方で、他のアクセラレータは、垂直キューのうちの別の1つからのデータブロックを並列に処理することができる。
図4は、一例に従った、データベーステーブル305を並列計算用にカスタマイズされた複数のデータブロック340に変換することを示す。たとえば、データベースアクセラレータを実装するFPGA内のメモリは、データベーステーブル305のサイズに対応し得る、DBMSをホストするCPUのメモリよりもはるかに小さいことが可能である。たとえば、データベーステーブル305は、256~512GBのサイズを有し得る一方で、FPGAのメモリは2~8GBに制限される。したがって、データベーステーブル305をデータブロック340に分割することで、FPGAがテーブル305内のデータをより効率的に処理できるようになり得る。
一実施形態において、データベーステーブル305は関係データベース内に記憶されたデータを表す。データベースを照会するとき、DBMSは、データベースから取り出したい行、列、またはテーブルのリストを提供することができる。図4は、データベーステーブル305の単なる一例のみを示しており、データは、データベースによってDBMSに提供可能な列405および行410に配置されている。一実施形態において、データブロック340は、適切な行を組み合わせることおよび選択することによって、複数のデータベーステーブル305からのデータの一部を含むことができる。複数のデータベーステーブル305から選択されたデータの部分を使用してデータブロック340を生成することは、結合などの他のデータベース動作において複数のテーブルを参照する場合に有用であり得る。
前述のように、データベース内のデータを記憶または配置するために使用されるフォーマットは、並列に動作するデータベースアクセラレータ内のPUを使用してデータを分析するためには理想的でない場合がある。したがって、図4は、テーブル305内のデータがデータブロック340に再フォーマットされる、変換400の実行を示す。一実施形態において、変換400は、アクセラレータライブラリ内の機能(たとえば、エンキュー計算機能)を使用して、DBMSによって実行される。しかしながら別の実施形態において、変換400は、データベースアクセラレータ内、たとえばFPGAのハードウェア内の、論理によって実行可能である。
図4では、データブロック340は、前述のように、データベースアクセラレータ内のそれぞれのPUによって処理可能なそれぞれのPUデータブロック420を含む。一実施形態において、データブロック340は、必須要件ではないが、データベースアクセラレータ内の各PUについてそれぞれのPUデータブロック420を含むことができる。たとえば、データブロック340がデータベースアクセラレータによって処理されるとき、PUのうちのいくつかはアイドル状態であり得るか、または、対応するPUデータブロック420を有さないPUを使用して、照会に関する他のタスクを実行することができる。
各PUデータブロック420は、ヘッダ425およびデータ435を含む。一実施形態において、ヘッダ425は、特定のPUデータブロック420内にあるデータ435の行数を示す。たとえば、PUデータブロック420は同じ量のデータ435を有さない可能性があり、その場合、DBMS 120は、ヘッダ425内の行インジケータ430を更新することによって、PUデータブロック420内にどれだけのデータがあるかを示すことができる。
データ435は、データベーステーブル305内に配置されたデータを含む。言い換えれば、データ435は、テーブル305内の列405および行410に記憶されたデータである。しかしながら、DBMS 120は、データ435をPUデータブロック420内に異なるように記憶することができる。たとえばデータ435は、PUデータブロック420内の行および列内に配置されないが、何らかの他の手段によることができる。
データベーステーブル305を、それぞれのPUデータブロック420を含むデータブロック340に再フォーマットすることによって、データ435はデータベースアクセラレータ内のPUによって分析することができる。さらに、データベーステーブル305内のデータを分割することによって、PUは、並列に分析可能なデータのそれぞれのチャンク(たとえば、PUデータブロック420)を受信することができる。一実施形態において、PUは、他のPUからの結果を待つことなく、PUデータブロック420を処理することができる。言い換えれば、PUデータブロック420を分析することは、PUが別のPUからの結果を待つことなく並列に動作できるような、独立動作とすることができる。
図4には示されていないが、DBMSは、データベースアクセラレータ内のPUによって生成された結果をクライアントまたはデータベースのいずれかに転送するとき、別の変換を実行することができる。たとえばクライアント照会が、データベース内に記憶されたデータを更新するようにDBMSに命令する(および、データを更新するためにデータベースアクセラレータが使用される)場合、DBMSは、データを関係データベース内に記憶できるように、データベースアクセラレータから戻されたデータをデータベーステーブル305と同様のフォーマットにフォーマットすることができる。
図5は、一例に従った、データベースアクセラレータ145において並列タスクを実行するためのシステム500を示す。システム500は、データベースアクセラレータ145に通信可能に結合されたダブルデータレート(DDR)メモリ505を含む。DDRメモリ505は、DBMSによって準備されるデータブロック340を含む。一実施形態において、DDRメモリ505は、イベントマネージャまたはDBMSからのコマンドに応答して、データブロック340をデータベースアクセラレータ145内の読み取りバッファ570に伝送する。データブロック340(または複数のブロック)は、その後、データベースアクセラレータ145内のそれぞれ1つのPU(図示せず)に対応する、それぞれのPUストリーム515に分離される。データブロック340をPUストリーム515に分離することは、データベースアクセラレータ145内のPUの並列化を利用する。PUは、それらのPUストリーム515を処理する他のPUとは独立に、そのそれぞれのPUストリーム515を処理または分析することができる。したがって、PUストリーム515は、データベースアクセラレータ145によって並列に処理可能である。
処理されると、データベースアクセラレータは、PUストリーム515の処理から結果を取り出すために、GET_PU_RESULT関数520を呼び出すことができる。たとえば、照会がワードカウント照会である場合、PUはPUストリーム515をトラバースして、カウントされるべきクライアントによって指定された特定のワードを識別する。GET_PU_RESULT関数520を呼び出すことによって、データベースアクセラレータは、各PUによって識別されたワードの出現数を決定することができる。
コンバイナ375は、GET_PU_RESULT関数520を呼び出すことから結果を受信し、結果を組み合わせる。このようにして、PUからの結果をデータベースアクセラレータ145の結合結果530にマージし、これを出力バッファ525内に記憶する。一実施形態において、出力バッファ525は、イベントマネージャからの命令に応答して、結合結果をDBMS 120に転送する。たとえばイベントマネージャは、すべてのPUが特定のデータブロック340(または複数のブロック)の処理を完了した時点を決定するために、データベースアクセラレータ145を監視することができる。完了すると、イベントマネージャは、結合結果530をDBMS 120に転送するようにデータベースアクセラレータ145に命令する。
一実施形態において、データベースアクセラレータ145内でデータを処理および転送するために使用される関数は、ハードウェア記述言語(HDL)またはレジスタ転送レベル(RTL)コードから直接関数を生成するのではなく、C、C++、OpenCL、などのソフトウェアコードからシミュレート可能である。たとえば、高水準合成(HLS)アプリケーションは、プログラマが手動でRTLコードを作成する必要なしに、ソフトウェアコードを使用してプログラム可能回路(たとえば、FPGA)を構成することができる。さらに、HLSアプリケーションは、こうした異なるデータ型(たとえば、整数、浮動小数点など)、ストリーミングデータ構造、高度な数式(たとえば、サイン、コサイン、平方根など)、または、デジタル信号処理(たとえば、畳み込み、振幅変調、デコーダなど)の抽象概念を処理するためのライブラリを含むことができる。
一実施形態において、図5に示されるストリーミング環境を生成するためにHLSアプリケーションが使用される。たとえば、データブロック340の一部を、最大効率で各PUの並列動作を維持するように設計可能な、異なる読み取りおよび書き込みデータ幅を備えるPUストリーム515に供給することができる。さらに、データブロック340をDDRメモリ505から読み取りバッファ510へと伝送するときのDDRバースト長さは、DDRの非効率性を低減させるのに十分な長さとすることができる。広いDDR幅は、最適なPUリソース使用率および処理サイクル数によって、効率を最大にする。一実施形態において、読み取りバッファ510および出力バッファ525としてのブロックRAMの使用率は、ストライプされた読み取りバッファによって低減させることができる。
一実施形態において、SQL照会の場合、PUの並列実行からの結果を、FPGA上の単一のカーネルまたは計算ユニットのために組み合わせることができる。たとえば、2MBのデータブロックサイズおよび32KBのPUブロックサイズを有する1つの照会6処理ユニットは、ホストCPU上で照会6動作を実行することに比べて、25倍を超える実行時間の改善を伴って実行可能である。データベースアクセラレータ145内のPUの数が増加するにつれて、実行時間はさらに改善可能である。
本発明の様々な実施形態の説明を例示の目的で提示してきたが、開示された実施形態を網羅するかまたは限定することは意図されていない。当業者であれば、説明した実施形態の範囲および趣旨を逸脱することなく、多くの修正および変形が明らかとなろう。本明細書で使用される用語は、本実施形態の原理、市場に見られる技術に優る実際的応用または技術的改良を、最も良く説明するため、あるいは、本明細書で開示される実施形態を当業者が理解できるようにするために、選択された。
上記では、本開示で提示された実施形態を参照している。しかしながら、本開示の範囲は特定の説明した実施形態に限定されるものではない。代わって、企図される実施形態を実装および実践するために、異なる実施形態に関するか否かにかかわらず、本明細書で説明する特徴および要素の任意の組み合わせが企図される。さらに、本明細書で開示する実施形態は、他の可能なソリューションまたは従来技術に優る利点を達成することが可能であるが、所与の実施形態によって特定の利点が達成されるか否かは、本開示の範囲を限定するものではない。したがって、本明細書で説明する態様、特徴、実施形態、および利点は単なる例示であり、特許請求の範囲に明示的に示されている場合を除き、添付の特許請求の範囲の要素または制限とはみなされない。同様に、「本発明」という言い回しは、本明細書で開示されるいかなる発明の主題の一般化とも解釈されるべきではなく、特許請求の範囲に明示的に示されている場合を除き、添付の特許請求の範囲の要素または制限とみなすべきではない。
本明細書で説明する態様は、全体としてハードウェア実施形態、全体としてソフトウェア実施形態(ファームウェア、常駐ソフトウェア、マイクロコードなどを含む)、あるいは本明細書ではすべて概して「モジュール」または「システム」と呼ばれる可能性のあるソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができる。
本発明は、システム、方法、および/またはコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体を含むことができる。
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶することが可能な、有形デバイスとすることができる。コンピュータ可読記憶媒体は、限定されないが、たとえば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の好適な組み合わせとすることができる。コンピュータ可読記憶媒体のより特定な例の非網羅的リストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能プログラム可能読み取り専用メモリ(EPROMまたはフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読み取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的にコード化されたデバイス、および、前述の任意の好適な組み合わせを含む。本明細書で使用される場合、コンピュータ可読記憶媒体は、電波または他の自由に伝搬する電磁波、導波路または他の伝送媒体(たとえば、光ファイバケーブルを通過する光パルス)を介して伝搬する電磁波、または、ワイヤを介して伝送される電気信号などの、一時的信号自体として解釈されるべきではない。
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理デバイスへ、あるいは外部コンピュータまたは外部記憶デバイスへ、ネットワークを介して、たとえばインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および/またはワイヤレスネットワークを介して、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むことができる。各コンピューティング/処理デバイス内のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令をそれぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体内に記憶するために転送する。
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Smalltalk(登録商標)、C++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードとすることができる。コンピュータ可読プログラム命令は、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェアパッケージとして、部分的にユーザのコンピュータ上および部分的にリモートコンピュータ上で、あるいは、全体としてリモートコンピュータまたはサーバ上で、実行可能である。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク(LAN)またはワイドエリアネットワーク(WAN)を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続可能であるか、あるいは、接続は外部コンピュータに対して(たとえば、インターネットサービスプロバイダを使用してインターネットを介して)行うことができる。いくつかの実施形態において、たとえばプログラム可能論理回路要素、フィールドプログラマブルゲートアレイ(FPGA)、またはプログラム可能論理アレイ(PLA)を含む、電子回路要素は、本発明の態様を実行するために、電子回路要素を個人化するためにコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
本発明の態様を、本発明の実施形態に従った方法、装置(システム)、およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照しながら説明する。フローチャート図および/またはブロック図の各ブロック、およびフローチャート図および/またはブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装可能であることを理解されよう。
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートおよび/またはブロック図のブロック内に指定された機能/作用を実装するための手段を作成するような機械を生成するために、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供可能である。命令が内部に記憶されているコンピュータ可読記憶媒体が、フローチャートおよび/またはブロック図のブロック内に指定された機能/作用の態様を実装する命令を含む製造品を備えるような、特定の様式で機能するように、コンピュータ、プログラム可能データ処理装置、および/または他のデバイスに指示することが可能な、これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体内に記憶することもできる。
コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートおよび/またはブロック図のブロック内に指定された機能/作用を実装するように、コンピュータ実装プロセスを生成するために、一連の動作ステップをコンピュータ、他のプログラム可能装置、または他のデバイス上で実行させるために、コンピュータ可読プログラム命令をコンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードすることもできる。
図面内のフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実装するための1つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことができる。いくつかの代替の実装において、ブロック内に示される機能は、図に示された順序以外で発生可能である。たとえば、連続して示される2つのブロックは、実際には、実質的に同時に実行可能であるか、または、ブロックは時折、関与する機能性に応じて逆の順序で実行可能である。ブロック図および/またはフローチャート図の各ブロック、および、ブロック図および/またはフローチャート図内のブロックの組み合わせは、指定された機能または作用を実行するか、あるいは、特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実施する、特定用途向けハードウェアベースシステムによって実装可能であることも留意されよう。
上記は特定の例を対象としているが、それらの基本的な範囲を逸脱することなく他の例およびさらなる例が考案可能であり、それらの範囲は下記の特許請求の範囲によって決定される。

Claims (11)

  1. 照会処理システムであって、
    データベース管理システム(DBMS:data base management system)を実行するように構成されたホスト中央処理ユニット(CPU:central processing unit)を含む第1の集積回路と、
    複数の処理ユニット(PU:processing unit)を備えるデータベースアクセラレータを含む第2の集積回路と、
    を備え、前記DBMSは、
    データベース上で実行するために照会を受信
    記データベースから前記照会に対応するデータベーステーブルを取り出
    行および列を備える前記データベーステーブルを、各々が前記複数のPUのうちの1つに対応する複数のPUデータブロックを備え、前記複数のPUデータブロックの各々が前記データベーステーブルの前記行および列内に記憶されたデータの一部を備えるデータブロックに再フォーマット
    前記データベーステーブルの再フォーマットに応答して、前記複数のPUデータブロックの各々におけるデータの量を示すヘッダを、前記複数のPUデータブロックの各々に追加、および、
    前記データブロックを前記データベースアクセラレータに伝送するように構成され、
    前記データベースアクセラレータは、
    前記複数のPUを並列に使用して、伝送された前記データブロックの前記複数のPUデータブロックを処理して個々の結果を生成するように構成され、および、
    前記複数のPUの各々からの前記個々の結果を受信し、および、前記個々の結果を前記DBMSに転送する結合結果に組み合わせるように構成されたコンバイナを備える、照会処理システム。
  2. 前記照会は、構造化照会言語(SQL:structured query language)照会を含む、請求項1に記載の照会処理システム。
  3. 前記第2の集積回路は、プログラム可能集積回路である、請求項1に記載の照会処理システム。
  4. 前記DBMSは、前記DBMSと前記プログラム可能集積回路との間のインターフェースとして働く、プログラム可能集積回路フレームワークを備え、前記プログラム可能集積回路フレームワークは、前記DBMSによって発せられた命令を、前記プログラム可能集積回路によって解釈可能なコマンドに変換するように構成される、請求項に記載の照会処理システム。
  5. 前記プログラム可能集積回路は、フィールドプログラマブルゲートアレイ(FPGA:field-programmable gate array)を形成する、請求項に記載の照会処理システム。
  6. 前記第2の集積回路は、特定用途向け集積回路(ASIC:application specific integrated circuit)である、請求項1に記載の照会処理システム。
  7. 集積回路であって、
    複数のPUを含むデータベースアクセラレータを備え、前記データベースアクセラレータは、別の集積回路に実装された別のホストCPU上で実行するDBMSからデータブロックを受信するように構成され、前記データブロックは、データベースから取り出された行および列を備えるデータベーステーブルに基づき、各々が前記複数のPUのうちの1つに対応する複数のPUデータブロックを備え、前記複数のPUデータブロックの各々が前記データベーステーブルの前記行および列内に記憶されたデータの一部を備え、
    前記複数のPUデータブロックの各々は、前記複数のPUデータブロックの各々におけるデータの量を示すヘッダを備え、
    前記複数のPUは、前記複数のPUデータブロックを並列に処理するように構成され、
    前記集積回路は、前記複数のPUの各々から個々の結果を受信、および、前記個々の結果を、前記DBMSに転送される結合結果に組み合わせるように構成された、コンバイナを備える、集積回路。
  8. 前記データベーステーブルは、SQL照会を使用して前記データベースから取り出される、請求項に記載の集積回路。
  9. 前記集積回路は、プログラム可能集積回路である、請求項に記載の集積回路。
  10. 前記データベースアクセラレータは、前記DBMSと前記プログラム可能集積回路との間のインターフェースとして働く、前記DBMS内のプログラム可能集積回路フレームワークと通信するように構成され、前記プログラム可能集積回路フレームワークは、前記DBMSによって発せられた命令を、前記プログラム可能集積回路によって解釈可能なコマンドに変換するように構成される、請求項に記載の集積回路。
  11. 前記プログラム可能集積回路は、フィールドプログラマブルゲートアレイ(FPGA)を形成する、請求項に記載の集積回路。
JP2019570482A 2017-06-23 2018-06-14 データベースアクセラレータに対する並列計算オフロード Active JP7382233B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/632,082 2017-06-23
US15/632,082 US20180373760A1 (en) 2017-06-23 2017-06-23 Parallel compute offload to database accelerator
PCT/US2018/037627 WO2018236672A1 (en) 2017-06-23 2018-06-14 CALCULATION DELIVERY PARALLEL TO DATABASE ACCELERATOR

Publications (2)

Publication Number Publication Date
JP2020524853A JP2020524853A (ja) 2020-08-20
JP7382233B2 true JP7382233B2 (ja) 2023-11-16

Family

ID=62842251

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019570482A Active JP7382233B2 (ja) 2017-06-23 2018-06-14 データベースアクセラレータに対する並列計算オフロード

Country Status (6)

Country Link
US (1) US20180373760A1 (ja)
EP (1) EP3642736B1 (ja)
JP (1) JP7382233B2 (ja)
KR (1) KR102610636B1 (ja)
CN (1) CN110959156A (ja)
WO (1) WO2018236672A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111176725B (zh) * 2019-12-27 2022-05-06 北京市商汤科技开发有限公司 数据处理方法、装置、设备和存储介质
US11403102B2 (en) 2020-06-27 2022-08-02 Intel Corporation Technology to learn and offload common patterns of memory access and computation
CN113468220A (zh) * 2021-09-03 2021-10-01 苏州浪潮智能科技有限公司 一种数据查询方法、装置、设备及介质
KR20230037333A (ko) * 2021-09-09 2023-03-16 삼성전자주식회사 스토리지 장치 및 메모리 시스템
US11927634B2 (en) 2022-04-01 2024-03-12 Samsung Electronics Co., Ltd Systems and methods for database scan acceleration
CN116302178B (zh) * 2023-02-23 2023-10-20 合肥申威睿思信息科技有限公司 一种列存数据的加速处理方法和装置
CN116627892B (zh) * 2023-05-31 2024-05-07 中国人民解放军国防科技大学 一种数据近存储计算方法、装置和存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016130929A (ja) 2015-01-14 2016-07-21 日本電気株式会社 集約装置、集約システム、集約方法、および、プログラム

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5553280A (en) * 1994-08-17 1996-09-03 The United States Of America As Represented By The Secretary Of The Navy Method for providing critical time reactive management of database transactions for systems process
JP2005004243A (ja) * 2003-06-09 2005-01-06 Tkc Corp データベースバックアップ方法、およびその方法をコンピュータに実行させるプログラム、データベースバックアップシステム、データサーバ、管理サーバ
JP2005129173A (ja) * 2003-10-24 2005-05-19 Matsushita Electric Ind Co Ltd ファイル管理方法
US9141670B2 (en) * 2007-08-27 2015-09-22 Teradata Us, Inc. Methods and systems for hardware acceleration of streamed database operations and queries based on multiple hardware accelerators
WO2012025915A1 (en) * 2010-07-21 2012-03-01 Sqream Technologies Ltd A system and method for the parallel execution of database queries over cpus and multi core processors
JP5500552B2 (ja) * 2010-10-15 2014-05-21 独立行政法人産業技術総合研究所 表データのデータ処理方法、データ処理システムおよびそのコンピュータプログラム
WO2012142186A2 (en) * 2011-04-11 2012-10-18 Child Timothy Database acceleration using gpu and multicore cpu systems and methods
CN102253919A (zh) * 2011-05-25 2011-11-23 中国石油集团川庆钻探工程有限公司 基于gpu和cpu协同运算的并行数值模拟方法和系统
US9292569B2 (en) * 2012-10-02 2016-03-22 Oracle International Corporation Semi-join acceleration
US10289632B1 (en) * 2013-03-15 2019-05-14 Teradata Us, Inc. Dynamic array type in a data store system
GB2516493A (en) * 2013-07-25 2015-01-28 Ibm Parallel tree based prediction
US9830354B2 (en) * 2013-08-07 2017-11-28 International Business Machines Corporation Accelerating multiple query processing operations
US9355038B2 (en) * 2014-09-11 2016-05-31 Qualcomm Incorporated Cache bank spreading for compression algorithms
JP2016095606A (ja) * 2014-11-13 2016-05-26 国立大学法人電気通信大学 データ処理装置およびデータ処理方法、並びにプログラム
US10474648B2 (en) * 2014-11-25 2019-11-12 Sap Se Migration of unified table metadata graph nodes
US10372692B2 (en) * 2015-01-25 2019-08-06 Iguazio Systems Ltd. Virtual data objects
CN104731729B (zh) * 2015-03-23 2018-07-13 华为技术有限公司 一种基于异构系统的表连接优化方法、cpu和加速器
JP6316503B2 (ja) * 2015-05-18 2018-04-25 株式会社日立製作所 計算機システム、アクセラレータ及びデータベースの処理方法
US10353768B2 (en) * 2015-06-29 2019-07-16 Hitachi, Ltd. Computer system and computer system control method
CA2955672A1 (en) * 2016-01-22 2017-07-22 Solufy Information Technologies Inc. Database grid search methods and systems
US20170228422A1 (en) * 2016-02-10 2017-08-10 Futurewei Technologies, Inc. Flexible task scheduler for multiple parallel processing of database data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016130929A (ja) 2015-01-14 2016-07-21 日本電気株式会社 集約装置、集約システム、集約方法、および、プログラム

Also Published As

Publication number Publication date
WO2018236672A1 (en) 2018-12-27
KR102610636B1 (ko) 2023-12-05
EP3642736A1 (en) 2020-04-29
CN110959156A (zh) 2020-04-03
US20180373760A1 (en) 2018-12-27
JP2020524853A (ja) 2020-08-20
KR20200019734A (ko) 2020-02-24
EP3642736B1 (en) 2024-01-10

Similar Documents

Publication Publication Date Title
JP7382233B2 (ja) データベースアクセラレータに対する並列計算オフロード
US11537635B2 (en) Hadoop OLAP engine
US10169409B2 (en) System and method for transferring data between RDBMS and big data platform
EP3602351B1 (en) Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps
US10069916B2 (en) System and method for transparent context aware filtering of data requests
US9411659B2 (en) Data processing method used in distributed system
Bohlouli et al. Towards an integrated platform for big data analysis
Mostak An overview of MapD (massively parallel database)
JP2015532748A (ja) フィルタリング/射影動作のハードウェア実装
US11200231B2 (en) Remote query optimization in multi data sources
JP2020061167A (ja) 疎要素を密行列に変換するためのシステムおよび方法
WO2020211717A1 (zh) 一种数据处理方法、装置及设备
US10810174B2 (en) Database management system, database server, and database management method
US11194522B2 (en) Networked shuffle storage
WO2016027451A1 (ja) データ処理装置、データ処理方法、及び、記録媒体
JP6316503B2 (ja) 計算機システム、アクセラレータ及びデータベースの処理方法
US10997175B2 (en) Method for predicate evaluation in relational database systems
GB2516501A (en) Method and system for processing data in a parallel database environment
CN108319604B (zh) 一种hive中大小表关联的优化方法
US9129001B2 (en) Character data compression for reducing storage requirements in a database system
US9705833B2 (en) Event driven dynamic multi-purpose internet mail extensions (MIME) parser
JP7508725B2 (ja) 分散データソースに存在するデータストリームの連続処理のためのコンピュータによる処理方法
US11636111B1 (en) Extraction of relationship graphs from relational databases
US11416496B2 (en) Computer implemented method for continuous processing of data-in-motion streams residing in distributed data sources
WO2018083751A1 (ja) インテリジェント・ストレージ・サブシステム

Legal Events

Date Code Title Description
A529 Written submission of copy of amendment under article 34 pct

Free format text: JAPANESE INTERMEDIATE CODE: A529

Effective date: 20200213

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210610

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211012

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211019

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220119

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20220531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220929

C60 Trial request (containing other claim documents, opposition documents)

Free format text: JAPANESE INTERMEDIATE CODE: C60

Effective date: 20220929

C11 Written invitation by the commissioner to file amendments

Free format text: JAPANESE INTERMEDIATE CODE: C11

Effective date: 20221018

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20221208

C21 Notice of transfer of a case for reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C21

Effective date: 20221213

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20230113

C211 Notice of termination of reconsideration by examiners before appeal proceedings

Free format text: JAPANESE INTERMEDIATE CODE: C211

Effective date: 20230124

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20230207

C22 Notice of designation (change) of administrative judge

Free format text: JAPANESE INTERMEDIATE CODE: C22

Effective date: 20230314

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230823

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231106

R150 Certificate of patent or registration of utility model

Ref document number: 7382233

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150