(57)【要約】  本明細書における実施形態は、データベースアクセラレータ（１４５）におけるデータベース照会に関するタスクを準備および実行するための技法を説明する。一実施形態において、データベースアクセラレータ（１４５）はホストＣＰＵ（１１５）とは別個である。データベース管理システム（ＤＢＭＳ）（１２０）は、データベースアクセラレータ（１４５）に対するデータベース照会に対応するタスクをオフロードすることができる。ＤＢＭＳ（１２０）は、照会に関連するデータベースにデータを要求し、その後そのデータを、データベースアクセラレータ（１４５）による処理に適した１つまたは複数のデータブロック（３４０）に変換することができる。一実施形態において、データベースアクセラレータ（１４５）は、並列または同時にデータを処理することが可能な個々のハードウェア処理ユニット（ＰＵ）（１５０）を含む。データを同時に処理するために、データブロック（３４０）は、各々がデータベースアクセラレータ（１４５）内のそれぞれのＰＵ（１５０）向けである個々のＰＵデータブロック（４２０）を含む。【選択図】図１
2020524853.tif 000002
【特許請求の範囲】
【請求項１】
照会処理システムであって、
データベース管理システム（ＤＢＭＳ：ｄａｔａ  ｂａｓｅ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）を実行するように構成されたホスト中央処理ユニット（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）と、
前記ホストＣＰＵとは別個のデータベースアクセラレータであって、複数の処理ユニット（ＰＵ：ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）を備えるデータベースアクセラレータと、
を備え、前記ＤＢＭＳは、
データベース上で実行するために照会を受信するように、
前記照会に対応する前記データベースからデータベーステーブルを取り出すように、
前記データベーステーブルをデータブロックに再フォーマットするようにであって、前記データブロックは、各々が複数のＰＵのうちの１つに対応する複数のＰＵデータブロックを備える、データブロックに再フォーマットするように、および、
前記データブロックを前記データベースアクセラレータに伝送するように、
構成され、
前記データベースアクセラレータは、
前記複数のＰＵを並列に使用して前記複数のＰＵデータブロックを処理するように、および、
結果を前記複数のＰＵから前記ＤＢＭＳに転送するように、
構成される、
照会処理システム。
【請求項２】
前記複数のＰＵデータブロックの各々は、前記複数のＰＵデータブロックの各々におけるデータの量を示すヘッダを備える、請求項１に記載の照会処理システム。
【請求項３】
前記データベースアクセラレータは、前記複数のＰＵの各々からの個々の結果を受信するように、および、前記個々の結果を前記ＤＢＭＳに転送される結合結果に組み合わせるように構成された、コンバイナを備える、請求項１に記載の照会処理システム。
【請求項４】
前記照会は、構造化照会言語（ＳＱＬ：ｓｔｒｕｃｔｕｒｅｄ  ｑｕｅｒｙ  ｌａｎｇｕａｇｅ）照会を含む、請求項１に記載の照会処理システム。
【請求項５】
前記データベースアクセラレータは、１つまたは複数のプログラム可能集積回路上でホストされる、請求項１に記載の照会処理システム。
【請求項６】
前記ＤＢＭＳは、前記ＤＢＭＳと前記１つまたは複数のプログラム可能集積回路との間のインターフェースとして働く、プログラム可能集積回路フレームワークを備え、前記プログラム可能集積回路フレームワークは、前記ＤＢＭＳによって発せられた命令を、前記１つまたは複数のプログラム可能集積回路によって解釈可能なコマンドに変換するように構成される、請求項５に記載の照会処理システム。
【請求項７】
前記１つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）を形成する、請求項５に記載の照会処理システム。
【請求項８】
前記データベースアクセラレータは、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）上でホストされる、請求項１に記載の照会処理システム。
【請求項９】
データベースアクセラレータであって、
１つまたは複数の集積回路上で実装される複数のＰＵを備え、前記データベースアクセラレータは、別のホストＣＰＵ上で実行するＤＢＭＳからデータブロックを受信するように構成され、前記データブロックは、データベースから取り出されたデータベーステーブルに基づき、各々が前記複数のＰＵのうちの１つに対応する複数のＰＵデータブロックを備え、
前記複数のＰＵは、前記複数のＰＵデータブロックを並列に処理するように構成され、
前記データベースアクセラレータは、前記複数のＰＵの各々から個々の結果を受信するように、および、前記個々の結果を、前記ＤＢＭＳに転送される結合結果に組み合わせるように構成された、コンバイナを備える、
データベースアクセラレータ。
【請求項１０】
前記複数のＰＵデータブロックの各々は、前記複数のＰＵデータブロックの各々におけるデータの量を示すヘッダを備える、請求項９に記載のデータベースアクセラレータ。
【請求項１１】
前記データベーステーブルは、ＳＱＬ照会を使用して前記データベースから取り出される、請求項９に記載のデータベースアクセラレータ。
【請求項１２】
前記１つまたは複数の集積回路は、１つまたは複数のプログラム可能集積回路を含む、請求項９に記載のデータベースアクセラレータ。
【請求項１３】
前記データベースアクセラレータは、前記ＤＢＭＳと前記１つまたは複数のプログラム可能集積回路との間のインターフェースとして働く、前記ＤＢＭＳ内のプログラム可能集積回路フレームワークと通信するように構成され、前記プログラム可能集積回路フレームワークは、前記ＤＢＭＳによって発せられた命令を、前記１つまたは複数のプログラム可能集積回路によって解釈可能なコマンドに変換するように構成される、請求項１２に記載のデータベースアクセラレータ。
【請求項１４】
前記１つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）を形成する、請求項１２に記載のデータベースアクセラレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は、一般にデータベースアクセラレータに関し、特に、データベースアクセラレータにおけるデータベース照会に関するデータブロックの準備および実行に関する。
【背景技術】
【０００２】
リアルタイム分析論は、分析すべきデータ量が増えるにつれてますます計算を多用することになる。その結果、費用のかかる、時には実行不可能な、大量の計算ノードスケーリングが生じることになる。データベースに記憶されたデータの照会および分析は、データベースのサイズが大きくなるにつれて、より複雑で時間のかかるものになる。典型的には、データベース管理システム（ＤＢＭＳ：ｄａｔａ  ｂａｓｅ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）は、１つまたは複数のＣＰＵを使用してデータベース上でクライアント照会を実行する。しかしながら、ＣＰＵによって並列に処理可能なデータの量は限定されている。
【発明の概要】
【０００３】
データベースアクセラレータを動作させるための技法を説明する。１つの例は、データベース管理システム（ＤＢＭＳ）を実行するように構成されたホスト中央処理ユニット（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）と、ホストＣＰＵとは別個のデータベースアクセラレータとを含む、照会処理システムであり、データベースアクセラレータは複数の処理ユニット（ＰＵ：ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）を含む。ＤＢＭＳは、データベース上で実行するために照会を受信するように、照会に対応するデータベースからデータベーステーブルを取り出すように、データベーステーブルを、複数のＰＵデータブロック（各々が複数のＰＵのうちの１つに対応する）を備えるデータブロックに再フォーマットするように、および、データブロックをデータベースアクセラレータに伝送するように、構成される。データベースアクセラレータは、複数のＰＵを並列に使用して複数のＰＵデータブロックを処理するように、および、結果をＰＵからＤＢＭＳに転送するように、構成される。
【０００４】
いくつかの実施形態において、複数のＰＵデータブロックの各々は、複数のＰＵデータブロックの各々におけるデータの量を示すヘッダを含むことができる。
【０００５】
いくつかの実施形態において、データベースアクセラレータは、複数のＰＵの各々からの個々の結果を受信するように、および、個々の結果を結合結果に組み合わせ、この結合結果がＤＢＭＳに転送されるように構成された、コンバイナを含むことができる。
【０００６】
いくつかの実施形態において、照会は、構造化照会言語（ＳＱＬ：ｓｔｒｕｃｔｕｒｅｄ  ｑｕｅｒｙ  ｌａｎｇｕａｇｅ）照会を含むことができる。
【０００７】
いくつかの実施形態において、データベースアクセラレータは、１つまたは複数のプログラム可能集積回路上でホストすることができる。
【０００８】
いくつかの実施形態において、ＤＢＭＳは、ＤＢＭＳと１つまたは複数のプログラム可能集積回路との間のインターフェースとして働く、プログラム可能集積回路フレームワークを含むことができる。プログラム可能集積回路フレームワークは、ＤＢＭＳによって発せられた命令を、１つまたは複数のプログラム可能集積回路によって解釈可能なコマンドに変換するように構成可能である。
【０００９】
いくつかの実施形態において、１つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）を形成することができる。
【００１０】
いくつかの実施形態において、データベースアクセラレータは、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）上でホストすることができる。
【００１１】
別の例は、１つまたは複数の集積回路上で実装される複数のＰＵを含む、データベースアクセラレータであり、データベースアクセラレータは、別のホストＣＰＵ上で実行するＤＢＭＳからデータブロックを受信するように構成され、データブロックは、データベースから取り出されたデータベーステーブルに基づき、各々が複数のＰＵのうちの１つに対応する複数のＰＵデータブロックを備える。さらに、複数のＰＵは、複数のＰＵデータブロックを並列に処理するように構成される。データベースアクセラレータは、複数のＰＵの各々から個々の結果を受信するように、および、個々の結果を結合結果に組み合わせ、この結合結果がＤＢＭＳに転送されるように構成された、コンバイナも含む。
【００１２】
いくつかの実施形態において、複数のＰＵデータブロックの各々は、複数のＰＵデータブロックの各々におけるデータの量を示すヘッダを含むことができる。
【００１３】
いくつかの実施形態において、データベーステーブルは、ＳＱＬ照会を使用してデータベースから取り出すことができる。
【００１４】
いくつかの実施形態において、１つまたは複数の集積回路は、１つまたは複数のプログラム可能集積回路を含むことができる。
【００１５】
いくつかの実施形態において、データベースアクセラレータは、ＤＢＭＳと１つまたは複数のプログラム可能集積回路との間のインターフェースとして働く、ＤＢＭＳ内のプログラム可能集積回路フレームワークと通信するように構成可能である。プログラム可能集積回路フレームワークは、ＤＢＭＳによって発せられた命令を、１つまたは複数のプログラム可能集積回路によって解釈可能なコマンドに変換するように構成可能である。
【００１６】
いくつかの実施形態において、１つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を形成することができる。
【００１７】
別の例は、１つまたは複数の処理デバイス上で実行されたとき、ＤＢＭＳのための動作を実行する命令を記憶する非一時的コンピュータ可読記憶媒体である。動作は、データベース上で実行するために照会を受信すること、照会に対応するデータベースからデータベーステーブルを取り出すこと、データベーステーブルを、複数のＰＵデータブロック（各々がデータベースアクセラレータ内の複数のＰＵのうちの１つに対応する）を備えるデータブロックに再フォーマットすることであって、データベースアクセラレータはＤＢＭＳをホストするＣＰＵとは別個である、再フォーマットすること、データブロックをデータベースアクセラレータに伝送すること、および、データブロックを並列に処理する複数のＰＵから生成された結果を受信すること、を含む。
【００１８】
いくつかの実施形態において、複数のＰＵデータブロックの各々は、複数のＰＵデータブロックの各々におけるデータの量を示すヘッダを含むことができる。
【００１９】
いくつかの実施形態において、照会はＳＱＬ照会を含むことができる。
【００２０】
いくつかの実施形態において、データブロックをデータベースアクセラレータに伝送することは、ＤＢＭＳによって発せられた命令を、プログラム可能集積回路フレームワークを使用してデータベースアクセラレータによって解釈可能なコマンドに変換することを含むことができる。プログラム可能集積回路フレームワークは、ＤＢＭＳと、データベースアクセラレータを実装する１つまたは複数のプログラム可能集積回路との間の、インターフェースとして働くことができる。
【００２１】
いくつかの実施形態において、１つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を形成することができる。
【００２２】
いくつかの実施形態において、ＤＢＭＳは、ＣＰＵと１つまたは複数のプログラム可能集積回路との間でデータブロックを移動させるための機能を備える、ライブラリを含むことができる。
【００２３】
したがって、前述の特徴、上記で簡単に要約された、より特定の説明を、詳細に理解することができる様式は、例示の実装を参照することによって有することが可能であり、そのうちのいくつかが添付の図面に示されている。しかしながら、添付の図面は典型的な例示の実装のみを示しており、したがって、その範囲を限定するものとはみなされないことに留意されたい。
【図面の簡単な説明】
【００２４】
【図１】一例に従った、データベースアクセラレータを含むデータセンタを示す図である。
【図２】一例に従った、データベースアクセラレータを使用して照会を実行するためのフローチャートである。
【図３】一例に従った、データベースアクセラレータに対する照会をオフロードするためのＤＢＭＳを示す図である。
【図４】一例に従った、データベーステーブルを並列計算用にカスタマイズされたデータブロックに変換することを示す図である。
【図５】一例に従った、データベースアクセラレータにおいて並列タスクを実行することを示す図である。
【発明を実施するための形態】
【００２５】
理解しやすくするために、可能であれば、図面に共通の同一の要素を指定するために同一の参照番号が使用されている。１つの例の要素を他の例に有利に組み込むことができることが企図されている。
【００２６】
以下、図面を参照しながら様々な特徴を説明する。図面は一定の縮尺である場合、または一定の縮尺でない場合があること、および、同様の構造または機能の要素は図面全体を通じて同様の参照番号によって表されることに留意されたい。図面は、特徴の説明を容易にすることのみが意図されていることに留意されたい。説明の網羅的な説明として、または特許請求の範囲に関する制限としては、意図されていない。加えて、図示された例は、必ずしもすべての態様または利点が示されている必要はない。特定の例に関して説明される態様または利点は、必ずしもその例に限定されず、たとえそのように図示されていない場合、またはそのように明示的に説明されない場合であっても、任意の他の例において実践可能である。
【００２７】
本明細書における実施形態は、データベースアクセラレータにおけるデータベース照会に関するタスクを準備および実行するための技法を説明する。一実施形態において、データベースアクセラレータはホストＣＰＵとは別個である。たとえば、データベースアクセラレータは、プログラム可能集積回路（たとえば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ））または非プログラム可能集積回路（たとえば、特定用途向け集積回路（ＡＳＩＣ））を使用して、実装可能である。いずれの場合でも、データベースアクセラレータは、データベース管理システム（ＤＢＭＳ）を実行するホストＣＰＵに通信可能に結合される。
【００２８】
ＤＢＭＳは、データベースアクセラレータに対するデータベース照会に対応するタスクをオフロードすることができる。ＤＢＭＳは、照会に関連するデータベースにデータを要求し、その後そのデータを、データベースアクセラレータによる処理に適したデータブロックに変換することができる。一実施形態において、データベースアクセラレータは、並列または同時にデータを処理することが可能な個々のハードウェア処理ユニット（ＰＵ）を含む。しかしながら、ＤＢＭＳは、データを同時に処理するために、データベースから取り出されたデータベーステーブルを、各々がデータベースアクセラレータ内のそれぞれのＰＵ向けである個々のＰＵデータブロックを含むデータブロックに変換することができる。
【００２９】
データベースアクセラレータ内のＰＵは、ＰＵデータブロックを並列に実行する。たとえばＰＵは、クライアント照会（たとえば、構造化照会言語（ＳＱＬ）照会）によって規定されたようにデータを分析し、その後、個々の結果を戻すことができる。データベースアクセラレータは個々の結果を組み合わせ、結合結果をＤＢＭＳに戻す。ひいてはＤＢＭＳは、データベースアクセラレータから受信した結果を他のデータとマージし、その後、照会結果をクライアントに伝送することができる。このようにして、ＤＢＭＳは、データベース照会を実行するために、データベースアクセラレータ内でＰＵによって実行される並列化を利用することができる。
【００３０】
図１は、一例に従った、データベースアクセラレータ１４５を含むデータセンタ１００（たとえば、照会処理システム）を示す。データセンタ１００は、データベース１０５Ａおよび１０５Ｂならびに計算ノード１１０を含む。一実施形態において、データベース１０５は関係データベースであり、データベース１０５内に記憶されたデータにはＳＱＬ照会によってアクセス可能である。しかしながら、本明細書における実施形態は、関係データベースに限定されない。
【００３１】
計算ノード１１０は、ＰＣＩｅ接続１３０を介して通信可能に結合される、ホストＣＰＵ  １１５およびＦＰＧＡ  １４０を含む。ホストＣＰＵ  １１５は、データベースアクセラレータ１４５に対するクライアント照会を実行および分析することに関するタスクをオフロードすることが可能な、ＤＢＭＳ  １２０（たとえば、ホストＣＰＵ  １１５上で実行するソフトウェアアプリケーション）を実行する。一実施形態において、ＤＢＭＳ  １２０は関係ＤＢＭＳ（ＲＤＢＭＳ）である。図示されていないが、ＤＢＭＳ  １２０は、データベース１０５上で実行するために照会（たとえば、クライアント照会）を受信する。たとえば照会は、データベース１０５からデータを取り出すこと、データを処理すること、およびその後、照会を伝送したクライアントに結果を戻すことを、ＤＢＭＳ  １２０に命令する、検索、ソート、ワードカウント、または照会６とすることができる。さらに、ＤＢＭＳ  １２０は、その後データベース１０５内に記憶される更新済みデータを生成することができる。
【００３２】
照会を実行するためにホストＣＰＵ  １１５を使用することに代わって、ＤＢＭＳ  １２０は、ＦＰＧＡ  １４０内のデータベースアクセラレータ１４５への照会に対応するタスク（または作業負荷）の少なくとも一部をオフロードする。一実施形態において、データベースアクセラレータ１４５は、照会に関連付けられたタスクの一部を、ホストＣＰＵ  １１５が残りのタスクを実行する間に行うことができる。ＤＢＭＳ  １２０は、データベースアクセラレータ１４５から取得された結果を、ホストＣＰＵ  １１５によって生成された結果とマージすることができる。
【００３３】
ＦＰＧＡ  １４０は、データベースアクセラレータ１４５を実装するように構成された１つまたは複数のプログラム可能集積回路（図示せず）内に、プログラム可能論理を含む。ＦＰＧＡを使用することの１つの利点は、そのプログラム可能論理を、ハードウェア記述言語を使用して、並列に動作可能なＰＵ  １５０内に構成できることである。すなわち、ＦＰＧＡ  １４０は、多数のタスク（またはスレッド）を並列に実行するために、より適している可能性がある。ＦＰＧＡ  １４０が示されているが、別の実施形態において、データベースアクセラレータ１４５は、ＡＳＩＣなどの非プログラム可能集積回路上に実装可能である。ＡＳＩＣが使用される場合、ＡＳＩＣは、タスクを並列に実行するためにＰＵ  １５０を含むように設計可能である。したがって、本明細書で説明する実施形態は、プログラム可能集積回路内に実装されるデータベースアクセラレータ１４５に限定されない。
【００３４】
ＦＰＧＡ  １４０とデータを共有するために、ＤＢＭＳ  １２０は、ホストＣＰＵ  １１５とＦＰＧＡ  １４０との間でデータを移動させるための機能を含む、アクセラレータライブラリ１２５を含む。一実施形態において、アクセラレータライブラリ１２５は、データベース１０５から受信したデータを、データベースアクセラレータ１４５によって並列に処理可能なフォーマットに変換する、変換機能（本明細書ではエンキュー計算と呼ばれる）を含む。たとえば、データベース１０５から受信したデータは、データが行および列に配置される、データベーステーブルまたはデータベースページに編成することができる。ＤＢＭＳ  １２０は、エンキュー計算機能を使用して、データベーステーブルを、データベースアクセラレータ１４５内の様々なＰＵ  １５０に割り当て可能なフォーマットに変換することができる。エンキュー計算機能に加えて、アクセラレータライブラリ１２５は、データベースアクセラレータ１４５に伝送したデータ、およびデータベースアクセラレータ１４５から受信したデータを、書き込み、読み取り、およびマージするための、他のコマンドを含むことができる。
【００３５】
ＰＣＩｅ接続１３０は、ホストＣＰＵ  １１５およびＦＰＧＡ  １４０がデータを共有できるようにするが、任意の高速接続が使用可能である。一実施形態において、ＤＢＭＳ  １２０は、データベースアクセラレータ１４５との間でデータを伝送するために、直接メモリアクセス（ＤＭＡ）を実行することができる。
【００３６】
一実施形態において、計算ノード１１０はサーバなどのコンピューティングデバイスである。別の実施形態において、計算ノード１１０はブレードサーバである。代替として、計算ノード１１０は、コンピューティングデバイス内の別個の構成要素とすることができる。たとえば、計算ノード１１０は、ホストＣＰＵ  １１５およびＦＰＧＡ  １４０が取り付けられた共通基板、たとえば、マザーボードまたはフィールド交換可能ユニット（ＦＲＵ）とすることができる。別の配置において、ホストＣＰＵ  １１５はマザーボード上に配設可能である一方で、ＦＰＧＡ  １４０はマザーボード内の拡張スロット内にプラグイン可能である。したがって、データベース照会を実行するためのホストＣＰＵ  １１５の能力を増加するために、ＦＰＧＡ  １４０を計算ノード１１０に追加することができる。別の例において、ホストＣＰＵ  １１５およびＦＰＧＡ  １４０を共にパッケージングすることができる。
【００３７】
一実施形態において、クライアント照会はデータセンタ１００にサブミットされ、ＤＢＭＳ  １２０に割り当てられる。たとえば、データセンタ１００は、データベース１０５内にクライアントデータを記憶する、クラウドコンピューティング環境の一部とすることができる。下記でより詳細に説明するように、ＤＢＭＳ  １２０は、クライアント照会（あれば）のうちのどれだけをデータベースアクセラレータ１４５に対してオフロードするべきかを決定する。ＤＢＭＳ  １２０は、関連データをデータベース１０５から取り出し、データベースアクセラレータ１４５の支援の下でデータを分析し、結果をクライアントに返信する。データベース１０５および計算ノード１１０はデータセンタ１００内に共設されるように示されているが、他の実施形態では、データベース１０５は計算ノード１１０とは異なる地理的位置に配設することができる。
【００３８】
図２は、一例に従った、データベースアクセラレータを使用して照会を実行するための方法２００のフローチャートである。明確にするために、方法２００内のブロックは、ＤＢＭＳ  １２０およびデータベースアクセラレータ１４５の機能および構成要素のより詳細な例示を提供する図３と、並行して説明する。
【００３９】
ブロック２０５において、ＤＢＭＳ  １２０は、データベース内に記憶されたデータの読み取り、分析、または更新を行うために、クライアント照会を受信する。クライアント照会は、或る人物（たとえば、給与支払の経理担当者、または、共通の属性を有する従業員を識別することを希望する人事部長）から、または、ソフトウェアアプリケーションから、生じる可能性がある。一実施形態において、クライアント照会はＳＱＬ照会である。
【００４０】
ＤＢＭＳ  １２０は、クライアント照会を使用して、データベース１０５にデータベース照会を伝送する。図３に示されるように、ＤＢＭＳ  １２０は、ＤＢＭＳ  １２０がデータについての要求をデータベース１０５に伝送できるようにする、データベースインターフェース３１０を含む。たとえばＤＢＭＳ  １２０は、データベース１０５内のどこに何のデータが記憶されているかを示す、データベース１０５に対応するインデックスを含むことができる。ＤＢＭＳ  １２０はインデックスを使用して、何のデータがクライアント照会に関連するかを識別し、その後、そのデータをデータベース１０５に要求することができる。要求または照会に応答して、データベース１０５は、データベースインターフェース３１０を介してデータベーステーブル３０５またはデータベースページをＤＢＭＳ  １２０に戻す。一実施形態において、データベーステーブル３０５はデータを行および列に配置する。
【００４１】
ブロック２１５において、ＤＢＭＳ  １２０は、各々がデータベースアクセラレータ１４５内のＰＵ  ３６５に対応する複数のＰＵデータブロックを有するデータブロック３４０に、データベーステーブル３０５を再フォーマットする。一実施形態において、データブロック３４０は、データベーステーブル３０５によって使用されるフォーマットよりも並列処理に適したフォーマットを有する。データブロック３４０の特定のフォーマットは、本開示において後に説明する。
【００４２】
図３に示されるように、ＤＢＭＳ  １２０は、アクセラレータライブラリからのエンキュー計算機能３２５を使用して、データブロック３４０を再フォーマットおよびキューイングする。この例において、エンキュー計算機能３２５は、データベーステーブル３０５（データベースインターフェース３１０内のバッファ３１５に記憶可能である）を使用して、データブロック３４０を生成する。ＤＢＭＳ  １２０は、図３に示される異なる垂直キューによって表される異なる照会のためのデータブロック３４０を生成するために、異なるエンキュー計算機能３２５を使用することができる。一実施形態において、異なる垂直照会は異なるスレッドを表す。ＤＢＭＳ  １２０において異なるスレッドを実行することで、ホストＣＰＵの過負荷を回避することができる。
【００４３】
一実施形態において、複数のデータブロック３４０は同じ照会に対応する。たとえば、照会６を実行するために、ＤＢＭＳ  １２０は、データベースアクセラレータ１４５によって処理される複数のデータブロック３４０を生成するために、エンキュー計算機能３２５を複数回呼び出すことができる。
【００４４】
データブロック３４０は、１つまたは複数のデータベーステーブル３０５を含むことができる。たとえば、データブロック３４０は、単一のデータベーステーブル３０５内にすべてのデータまたはデータのサブセットを含むことが可能であるか、または、データブロック３４０は、複数のデータベーステーブル３０５からのデータを含むことができる。別の例において、単一のデータベーステーブル３０５は複数のデータブロック３４０に分割することが可能であり、この場合、データブロック３４０は図３に示されるように、データベースアクセラレータ１４５による処理を待って、ＤＢＭＳ  １２０内にキューイングされる。一実施形態において、キューイングされたデータブロック３４０は、１つずつデータベースアクセラレータ１４５に送信される。
【００４５】
データブロック３４０をデータベースアクセラレータ１４５に伝送する前に、ＤＢＭＳは、データブロック３４０上で書き込みコールバック機能３３０を実行することができる。書き込みコールバック機能３３０は、アクセラレータライブラリの一部とすることが可能であり、データブロック３４０をデータベースアクセラレータ１４５に転送するためにＤＭＡを使用する前に実行することができる。ブロック３４０がデータベースアクセラレータ１４５によって処理される前に、データをデータブロック３４０に書き込むために、書き込みコールバック機能３３０が使用される。たとえば、ＤＢＭＳ  １２０は、照会の一部としてクライアントから更新済みデータを受信している可能性があり、したがって、データベースアクセラレータ１４５内のＰＵ  ３６５によってブロックが分析される前に、第１に、その更新済みデータをデータブロック３４０内に書き込む。
【００４６】
ブロック２２０において、ＤＢＭＳ  １２０は、データブロック３４０をデータベースアクセラレータ１４５に伝送する。ＤＢＭＳ  １２０は、ＤＢＭＳ  １２０とＦＰＧＡ  １４０との間のインターフェースとして働く、ＦＰＧＡフレームワーク３４５を含む。一実施形態において、ＦＰＧＡフレームワーク３４５は、ＤＢＭＳ  １２０によって発せられたコマンドおよび命令を、ＦＰＧＡ  １４０によって解釈可能なコマンドに変換する。ＦＰＧＡフレームワーク３４５（たとえば、プログラム可能集積回路フレームワーク）は、ホストＣＰＵ（たとえば、ｘ８６ベースプラットフォーム）がＦＰＧＡ  １４０と通信できるようにするために、アプリケーションコード（たとえば、ＯｐｅｎＣＬ、Ｃ、Ｃ＋＋など）を使用する、開発環境を使用して構成可能である。たとえばＦＰＧＡフレームワーク３４５は、ＦＰＧＡをアクセラレータとして、たとえばデータベースアクセラレータ１４５として使用できるようにする。ＦＰＧＡフレームワーク３４５を生成するための開発環境の非限定的な例の１つが、ＯｐｅｎＣＬ、Ｃ、およびＣ＋＋カーネルをサポートするＸｉｌｉｎｘのＳＤｘ開発環境である。ＦＰＧＡフレームワーク３４５、ならびに図１内のアクセラレータライブラリ１２５は、グラフィックスアクセラレータまたは暗号アクセラレータなどの他のアクセラレータに対するタスクをオフロードするホストＣＰＵと同様に、ＤＢＭＳ  １２０が、ＦＰＧＡ  １４０およびデータベースアクセラレータ１４５に対するタスクをオフロードできるようにする。
【００４７】
ブロック２２５において、データベースアクセラレータ１４５は、データブロック３４０内のそれぞれのＰＵデータブロックを、照会に従ってＰＵ  ３６５を使用して並列に処理する。データブロック３４０は、データベースアクセラレータ１４５内のパーサ３６０において受信される。パーサ３６０は、データブロック３４０を個別のＰＵデータブロックに分割することができ、その後、個別のＰＵデータブロックはＰＵ  ３６５のそれぞれに転送される。図に示されるように、ＰＵ  ３６５は、ＰＵデータブロックならびにデータブロックの処理の結果を記憶するために、それぞれのメモリ要素、たとえばＢＲＡＭ  ３７０を含むことができる。
【００４８】
データブロック３４０を伝送することに加えて、ＤＢＭＳ  １２０は、ＰＵ  ３６５が受信したクライアント照会に従ってデータブロック３４０をどのように処理するべきかを示す命令を、データベースアクセラレータ１４５に伝送することも可能である。たとえば、照会がワードカウント照会である場合、ＤＢＭＳ  １２０は、カウントされるべきクライアントによって指定された特定のワードを、データベースアクセラレータ１４５に伝送する。次いで、ワードはＰＵ  ３６５に送信され、ＰＵ  ３６５はそれぞれのＰＵデータブロックをトラバースして、そのワードの任意の出現を識別する。別の例では、照会がソートされる場合、ＤＢＭＳ１２０はデータブロック３４０をソートするためのパラメータを提供し、次いでＰＵ  ３６５はこのパラメータを使用して、データブロック３４０を再配置する。このようにしてＤＢＭＳ  １２０は、分析するべきデータ、ならびにデータを分析するための命令またはパラメータの両方を、データベースアクセラレータ１４５に提供することができる。
【００４９】
ＤＢＭＳ  １２０は、ＦＰＧＡフレームワーク３４５を使用してデータをＦＰＧＡ  １４０に伝送するタイミングを決定する、イベントマネージャ３２０を含む。たとえば、イベントマネージャ３２０は、データブロック３４０を含むキューを監視し、データブロック３４０（または複数のブロック）がデータベースアクセラレータ１４５に伝送されるべきであるタイミングを決定することができる。
【００５０】
ＰＵ  ３６５は、照会および／またはＤＢＭＳ  １２０によって定義されたパラメータに従って、それらのそれぞれのブロックを分析する。前述のように、ＰＵ  ３６５は別個のハードウェア要素であり、したがって、並列に実行可能である。たとえばＰＵ  ３６５Ａは、ＰＵ  ３６５ＢがそのＰＵデータブロックを分析するのと同時に、その対応するＰＵデータブロックを分析することができる。図３には数個のＰＵ  ３６５しか示されていないが、ＦＰＧＡ  １４０は、データベースアクセラレータ１４５が何十または何百のＰＵ  ３６５を有し、その各々が、データブロック３４０が並列に処理可能なように他のＰＵ  ３６５とは独立に動作可能であるように、構成可能である。
【００５１】
ＰＵ  ３６５は、ＰＵデータブロックの分析または処理の結果をコンバイナ３７５に転送する。ブロック２３０において、コンバイナ３７５は、ＰＵによって出力された結果を組み合わせる。たとえば、ソート照会の場合、各ＰＵ  ３６５はその個々のＰＵデータブロックをソートし、その後、コンバイナ３７５はソートされたデータブロックをデータの連続ブロックに組み合わせることができる。ワードカウントまたは検索照会の場合、コンバイナ３７５は、合計ワードカウントを識別するか、検索結果を組み合わせて、検索項目が見つかったデータブロック３４０内のすべてのロケーションを識別することができる。
【００５２】
データベースアクセラレータ１４５が受信したデータブロック３４０の処理を完了すると、ＦＰＧＡ  １４０はイベントマネージャ３２０に通知し、イベントマネージャ３２０は、ＦＰＧＡフレームワーク３４５を使用してデータベースアクセラレータ１４５によって取得された結果を伝送するようにＦＰＧＡ  １４０に命令する、読み取りコールバック機能３３５を実行する。ブロック２３５において、ＦＰＧＡ  １４０は、読み取りコールバック機能３３５に応答して、結合結果をホストＣＰＵおよびＤＢＭＳ  １２０に伝送する。
【００５３】
一実施形態において、図示されていないが、ＤＢＭＳ  １２０は他の機能を呼び出して、データベースアクセラレータ１４５から受信した結合結果を再フォーマットすることができる。たとえば、データがデータベース１０５内に記憶されるべきである（たとえば、データベースアクセラレータ１４５がデータを変更または再配置した）場合、ＤＢＭＳ  １２０はデータを、データベーステーブル３０５によって使用されるフォーマットにフォーマットすることができる。
【００５４】
ブロック２４０において、ＤＢＭＳ  １２０は、データベースアクセラレータ１４５から受信した結果をマージする。たとえばＤＢＭＳ  １２０は、データベースアクセラレータ１４５によって逐次処理された複数のデータブロック３４０に、データベーステーブル３０５を分割しておくことができる。データブロック３４０の処理からの結果が、データベースアクセラレータ１４５から受信されると、ＤＢＭＳ  １２０内のマージャ３５５は、個々のデータブロック３４０の逐次処理からの結果を、単なる個々のデータブロック３４０ではなく、データベーステーブル３０５に対応する結合結果セットにマージすることができる。さらに、マージャ３５５は、データベースアクセラレータ１４５から戻された結果を、ローカル照会マネージャ３５０によって提供された結果とマージすることもできる。たとえばＤＢＭＳ  １２０は、ローカル照会マネージャ３５０を使用して照会に関する何らかのタスクを、また、データベースアクセラレータ１４５を使用してその同じ照会についての他のタスクを、実行することができる。マージャ３５５は、照会マネージャ３５０を使用してホストＣＰＵ上にローカルに生成された結果、およびデータベースアクセラレータ１４５によって生成された結果を、マージすることができる。しかしながら、他の実施形態において、照会に関連付けられたすべてのタスクを、データベースアクセラレータ１４５によって実行することができる。その場合、マージャ３５５は、データベースアクセラレータ１４５によって提供された結果をローカル結果とマージする必要はない。
【００５５】
ブロック２４５において、ＤＢＭＳ  １２０は、照会結果３８０をクライアントに転送する。照会結果３８０は、ワードカウント、検索結果、特定の様式でのデータのソートの結果などを含むことができる。一実施形態において、ＤＢＭＳ  １２０は、照会に応答して、データベース１０５内に記憶されたデータを更新することもできる。たとえば、図３には示されていないが、ＤＢＭＳ  １２０は、データベースインターフェース３１０を使用して、更新されたデータベーステーブル３０５をデータベース１０５に伝送することができる。別の例において、ＤＢＭＳ  １２０は、照会に応答して、データベース１０５内に記憶されたデータを削除または移動することができる。別の実施形態において、ＤＢＭＳ  １２０は、いずれの結果もクライアントに戻すことなく、クライアント照会に応答して、データベース１０５内のデータを記憶、削除、または移動することができる。たとえばクライアント照会は、結果をクライアントに戻す必要なしに、データベース１０５内に記憶されたデータを変更または更新するための命令とすることができる。それにもかかわらずＤＢＭＳ  １２０は、たとえデータベースアクセラレータ１４５によって提供された結果が、クライアントに送達されるのではなくデータベース１０５内に記憶される場合であっても、データベースアクセラレータ１４５を使用して、たとえばデータベース１０５内に記憶されたデータを更新することができる。
【００５６】
方法２００は、ＰＵ  ３６５を使用して単一のデータブロック３４０を並列に処理することを示しているが、他の実施形態において、データベースアクセラレータ１４５は、複数のデータブロック３４０を並列に処理することができる。たとえば、ＰＵ  ３６５の半分が１つのデータブロック３４０を処理することができる一方で、他方の半分は異なるデータブロック３４０を処理する。さらに、一実施形態において、ＦＰＧＡ  １４０は、独立に動作可能な複数のデータベースアクセラレータ１４５を含むことができる。したがって、アクセラレータのうちの１つが、図３に示された垂直キュー（またはスレッド）のうちの１つについて１つのデータブロックを処理する一方で、他のアクセラレータは、垂直キューのうちの別の１つからのデータブロックを並列に処理することができる。
【００５７】
図４は、一例に従った、データベーステーブル３０５を並列計算用にカスタマイズされた複数のデータブロック３４０に変換することを示す。たとえば、データベースアクセラレータを実装するＦＰＧＡ内のメモリは、データベーステーブル３０５のサイズに対応し得る、ＤＢＭＳをホストするＣＰＵのメモリよりもはるかに小さいことが可能である。たとえば、データベーステーブル３０５は、２５６〜５１２ＧＢのサイズを有し得る一方で、ＦＰＧＡのメモリは２〜８ＧＢに制限される。したがって、データベーステーブル３０５をデータブロック３４０に分割することで、ＦＰＧＡがテーブル３０５内のデータをより効率的に処理できるようになり得る。
【００５８】
一実施形態において、データベーステーブル３０５は関係データベース内に記憶されたデータを表す。データベースを照会するとき、ＤＢＭＳは、データベースから取り出したい行、列、またはテーブルのリストを提供することができる。図４は、データベーステーブル３０５の単なる一例のみを示しており、データは、データベースによってＤＢＭＳに提供可能な列４０５および行４１０に配置されている。一実施形態において、データブロック３４０は、適切な行を組み合わせることおよび選択することによって、複数のデータベーステーブル３０５からのデータの一部を含むことができる。複数のデータベーステーブル３０５から選択されたデータの部分を使用してデータブロック３４０を生成することは、結合などの他のデータベース動作において複数のテーブルを参照する場合に有用であり得る。
【００５９】
前述のように、データベース内のデータを記憶または配置するために使用されるフォーマットは、並列に動作するデータベースアクセラレータ内のＰＵを使用してデータを分析するためには理想的でない場合がある。したがって、図４は、テーブル３０５内のデータがデータブロック３４０に再フォーマットされる、変換４００の実行を示す。一実施形態において、変換４００は、アクセラレータライブラリ内の機能（たとえば、エンキュー計算機能）を使用して、ＤＢＭＳによって実行される。しかしながら別の実施形態において、変換４００は、データベースアクセラレータ内、たとえばＦＰＧＡのハードウェア内の、論理によって実行可能である。
【００６０】
図４では、データブロック３４０は、前述のように、データベースアクセラレータ内のそれぞれのＰＵによって処理可能なそれぞれのＰＵデータブロック４２０を含む。一実施形態において、データブロック３４０は、必須要件ではないが、データベースアクセラレータ内の各ＰＵについてそれぞれのＰＵデータブロック４２０を含むことができる。たとえば、データブロック３４０がデータベースアクセラレータによって処理されるとき、ＰＵのうちのいくつかはアイドル状態であり得るか、または、対応するＰＵデータブロック４２０を有さないＰＵを使用して、照会に関する他のタスクを実行することができる。
【００６１】
各ＰＵデータブロック４２０は、ヘッダ４２５およびデータ４３５を含む。一実施形態において、ヘッダ４２５は、特定のＰＵデータブロック４２０内にあるデータ４３５の行数を示す。たとえば、ＰＵデータブロック４２０は同じ量のデータ４３５を有さない可能性があり、その場合、ＤＢＭＳ  １２０は、ヘッダ４２５内の行インジケータ４３０を更新することによって、ＰＵデータブロック４２０内にどれだけのデータがあるかを示すことができる。
【００６２】
データ４３５は、データベーステーブル３０５内に配置されたデータを含む。言い換えれば、データ４３５は、テーブル３０５内の列４０５および行４１０に記憶されたデータである。しかしながら、ＤＢＭＳ  １２０は、データ４３５をＰＵデータブロック４２０内に異なるように記憶することができる。たとえばデータ４３５は、ＰＵデータブロック４２０内の行および列内に配置されないが、何らかの他の手段によることができる。
【００６３】
データベーステーブル３０５を、それぞれのＰＵデータブロック４２０を含むデータブロック３４０に再フォーマットすることによって、データ４３５はデータベースアクセラレータ内のＰＵによって分析することができる。さらに、データベーステーブル３０５内のデータを分割することによって、ＰＵは、並列に分析可能なデータのそれぞれのチャンク（たとえば、ＰＵデータブロック４２０）を受信することができる。一実施形態において、ＰＵは、他のＰＵからの結果を待つことなく、ＰＵデータブロック４２０を処理することができる。言い換えれば、ＰＵデータブロック４２０を分析することは、ＰＵが別のＰＵからの結果を待つことなく並列に動作できるような、独立動作とすることができる。
【００６４】
図４には示されていないが、ＤＢＭＳは、データベースアクセラレータ内のＰＵによって生成された結果をクライアントまたはデータベースのいずれかに転送するとき、別の変換を実行することができる。たとえばクライアント照会が、データベース内に記憶されたデータを更新するようにＤＢＭＳに命令する（および、データを更新するためにデータベースアクセラレータが使用される）場合、ＤＢＭＳは、データを関係データベース内に記憶できるように、データベースアクセラレータから戻されたデータをデータベーステーブル３０５と同様のフォーマットにフォーマットすることができる。
【００６５】
図５は、一例に従った、データベースアクセラレータ１４５において並列タスクを実行するためのシステム５００を示す。システム５００は、データベースアクセラレータ１４５に通信可能に結合されたダブルデータレート（ＤＤＲ）メモリ５０５を含む。ＤＤＲメモリ５０５は、ＤＢＭＳによって準備されるデータブロック３４０を含む。一実施形態において、ＤＤＲメモリ５０５は、イベントマネージャまたはＤＢＭＳからのコマンドに応答して、データブロック３４０をデータベースアクセラレータ１４５内の読み取りバッファ５７０に伝送する。データブロック３４０（または複数のブロック）は、その後、データベースアクセラレータ１４５内のそれぞれ１つのＰＵ（図示せず）に対応する、それぞれのＰＵストリーム５１５に分離される。データブロック３４０をＰＵストリーム５１５に分離することは、データベースアクセラレータ１４５内のＰＵの並列化を利用する。ＰＵは、それらのＰＵストリーム５１５を処理する他のＰＵとは独立に、そのそれぞれのＰＵストリーム５１５を処理または分析することができる。したがって、ＰＵストリーム５１５は、データベースアクセラレータ１４５によって並列に処理可能である。
【００６６】
処理されると、データベースアクセラレータは、ＰＵストリーム５１５の処理から結果を取り出すために、ＧＥＴ＿ＰＵ＿ＲＥＳＵＬＴ関数５２０を呼び出すことができる。たとえば、照会がワードカウント照会である場合、ＰＵはＰＵストリーム５１５をトラバースして、カウントされるべきクライアントによって指定された特定のワードを識別する。ＧＥＴ＿ＰＵ＿ＲＥＳＵＬＴ関数５２０を呼び出すことによって、データベースアクセラレータは、各ＰＵによって識別されたワードの出現数を決定することができる。
【００６７】
コンバイナ３７５は、ＧＥＴ＿ＰＵ＿ＲＥＳＵＬＴ関数５２０を呼び出すことから結果を受信し、結果を組み合わせる。このようにして、ＰＵからの結果をデータベースアクセラレータ１４５の結合結果５３０にマージし、これを出力バッファ５２５内に記憶する。一実施形態において、出力バッファ５２５は、イベントマネージャからの命令に応答して、結合結果をＤＢＭＳ  １２０に転送する。たとえばイベントマネージャは、すべてのＰＵが特定のデータブロック３４０（または複数のブロック）の処理を完了した時点を決定するために、データベースアクセラレータ１４５を監視することができる。完了すると、イベントマネージャは、結合結果５３０をＤＢＭＳ  １２０に転送するようにデータベースアクセラレータ１４５に命令する。
【００６８】
一実施形態において、データベースアクセラレータ１４５内でデータを処理および転送するために使用される関数は、ハードウェア記述言語（ＨＤＬ）またはレジスタ転送レベル（ＲＴＬ）コードから直接関数を生成するのではなく、Ｃ、Ｃ＋＋、ＯｐｅｎＣＬ、などのソフトウェアコードからシミュレート可能である。たとえば、高水準合成（ＨＬＳ）アプリケーションは、プログラマが手動でＲＴＬコードを作成する必要なしに、ソフトウェアコードを使用してプログラム可能回路（たとえば、ＦＰＧＡ）を構成することができる。さらに、ＨＬＳアプリケーションは、こうした異なるデータ型（たとえば、整数、浮動小数点など）、ストリーミングデータ構造、高度な数式（たとえば、サイン、コサイン、平方根など）、または、デジタル信号処理（たとえば、畳み込み、振幅変調、デコーダなど）の抽象概念を処理するためのライブラリを含むことができる。
【００６９】
一実施形態において、図５に示されるストリーミング環境を生成するためにＨＬＳアプリケーションが使用される。たとえば、データブロック３４０の一部を、最大効率で各ＰＵの並列動作を維持するように設計可能な、異なる読み取りおよび書き込みデータ幅を備えるＰＵストリーム５１５に供給することができる。さらに、データブロック３４０をＤＤＲメモリ５０５から読み取りバッファ５１０へと伝送するときのＤＤＲバースト長さは、ＤＤＲの非効率性を低減させるのに十分な長さとすることができる。広いＤＤＲ幅は、最適なＰＵリソース使用率および処理サイクル数によって、効率を最大にする。一実施形態において、読み取りバッファ５１０および出力バッファ５２５としてのブロックＲＡＭの使用率は、ストライプされた読み取りバッファによって低減させることができる。
【００７０】
一実施形態において、ＳＱＬ照会の場合、ＰＵの並列実行からの結果を、ＦＰＧＡ上の単一のカーネルまたは計算ユニットのために組み合わせることができる。たとえば、２ＭＢのデータブロックサイズおよび３２ＫＢのＰＵブロックサイズを有する１つの照会６処理ユニットは、ホストＣＰＵ上で照会６動作を実行することに比べて、２５倍を超える実行時間の改善を伴って実行可能である。データベースアクセラレータ１４５内のＰＵの数が増加するにつれて、実行時間はさらに改善可能である。
【００７１】
本発明の様々な実施形態の説明を例示の目的で提示してきたが、開示された実施形態を網羅するかまたは限定することは意図されていない。当業者であれば、説明した実施形態の範囲および趣旨を逸脱することなく、多くの修正および変形が明らかとなろう。本明細書で使用される用語は、本実施形態の原理、市場に見られる技術に優る実際的応用または技術的改良を、最も良く説明するため、あるいは、本明細書で開示される実施形態を当業者が理解できるようにするために、選択された。
【００７２】
上記では、本開示で提示された実施形態を参照している。しかしながら、本開示の範囲は特定の説明した実施形態に限定されるものではない。代わって、企図される実施形態を実装および実践するために、異なる実施形態に関するか否かにかかわらず、本明細書で説明する特徴および要素の任意の組み合わせが企図される。さらに、本明細書で開示する実施形態は、他の可能なソリューションまたは従来技術に優る利点を達成することが可能であるが、所与の実施形態によって特定の利点が達成されるか否かは、本開示の範囲を限定するものではない。したがって、本明細書で説明する態様、特徴、実施形態、および利点は単なる例示であり、特許請求の範囲に明示的に示されている場合を除き、添付の特許請求の範囲の要素または制限とはみなされない。同様に、「本発明」という言い回しは、本明細書で開示されるいかなる発明の主題の一般化とも解釈されるべきではなく、特許請求の範囲に明示的に示されている場合を除き、添付の特許請求の範囲の要素または制限とみなすべきではない。
【００７３】
本明細書で説明する態様は、全体としてハードウェア実施形態、全体としてソフトウェア実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは本明細書ではすべて概して「モジュール」または「システム」と呼ばれる可能性のあるソフトウェア態様およびハードウェア態様を組み合わせた実施形態の形を取ることができる。
【００７４】
本発明は、システム、方法、および／またはコンピュータプログラム製品とすることができる。コンピュータプログラム製品は、プロセッサに本発明の態様を実施させるためのコンピュータ可読プログラム命令を有する、コンピュータ可読記憶媒体を含むことができる。
【００７５】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および記憶することが可能な、有形デバイスとすることができる。コンピュータ可読記憶媒体は、限定されないが、たとえば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁記憶デバイス、半導体記憶デバイス、または前述の任意の好適な組み合わせとすることができる。コンピュータ可読記憶媒体のより特定な例の非網羅的リストは、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能プログラム可能読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、ポータブルコンパクトディスク読み取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、メモリスティック、フロッピーディスク、パンチカードまたは命令が記録された溝内の隆起構造などの機械的にコード化されたデバイス、および、前述の任意の好適な組み合わせを含む。本明細書で使用される場合、コンピュータ可読記憶媒体は、電波または他の自由に伝搬する電磁波、導波路または他の伝送媒体（たとえば、光ファイバケーブルを通過する光パルス）を介して伝搬する電磁波、または、ワイヤを介して伝送される電気信号などの、一時的信号自体として解釈されるべきではない。
【００７６】
本明細書で説明するコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング／処理デバイスへ、あるいは外部コンピュータまたは外部記憶デバイスへ、ネットワークを介して、たとえばインターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、および／またはワイヤレスネットワークを介して、ダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイコンピュータ、および／またはエッジサーバを含むことができる。各コンピューティング／処理デバイス内のネットワークアダプタカードまたはネットワークインターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令をそれぞれのコンピューティング／処理デバイス内のコンピュータ可読記憶媒体内に記憶するために転送する。
【００７７】
本発明の動作を実施するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで書かれたソースコードまたはオブジェクトコードとすることができる。コンピュータ可読プログラム命令は、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロン型ソフトウェアパッケージとして、部分的にユーザのコンピュータ上および部分的にリモートコンピュータ上で、あるいは、全体としてリモートコンピュータまたはサーバ上で、実行可能である。後者のシナリオにおいて、リモートコンピュータは、ローカルエリアネットワーク（ＬＡＮ）またはワイドエリアネットワーク（ＷＡＮ）を含む、任意のタイプのネットワークを介してユーザのコンピュータに接続可能であるか、あるいは、接続は外部コンピュータに対して（たとえば、インターネットサービスプロバイダを使用してインターネットを介して）行うことができる。いくつかの実施形態において、たとえばプログラム可能論理回路要素、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、またはプログラム可能論理アレイ（ＰＬＡ）を含む、電子回路要素は、本発明の態様を実行するために、電子回路要素を個人化するためにコンピュータ可読プログラム命令の状態情報を利用することによって、コンピュータ可読プログラム命令を実行することができる。
【００７８】
本発明の態様を、本発明の実施形態に従った方法、装置（システム）、およびコンピュータプログラム製品のフローチャート図および／またはブロック図を参照しながら説明する。フローチャート図および／またはブロック図の各ブロック、およびフローチャート図および／またはブロック図内のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装可能であることを理解されよう。
【００７９】
これらのコンピュータ可読プログラム命令は、コンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行する命令が、フローチャートおよび／またはブロック図のブロック内に指定された機能／作用を実装するための手段を作成するような機械を生成するために、汎用コンピュータ、特定用途向けコンピュータ、または他のプログラム可能データ処理装置のプロセッサに提供可能である。命令が内部に記憶されているコンピュータ可読記憶媒体が、フローチャートおよび／またはブロック図のブロック内に指定された機能／作用の態様を実装する命令を含む製造品を備えるような、特定の様式で機能するように、コンピュータ、プログラム可能データ処理装置、および／または他のデバイスに指示することが可能な、これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体内に記憶することもできる。
【００８０】
コンピュータ、他のプログラム可能装置、または他のデバイス上で実行する命令が、フローチャートおよび／またはブロック図のブロック内に指定された機能／作用を実装するように、コンピュータ実装プロセスを生成するために、一連の動作ステップをコンピュータ、他のプログラム可能装置、または他のデバイス上で実行させるために、コンピュータ可読プログラム命令をコンピュータ、他のプログラム可能データ処理装置、または他のデバイス上にロードすることもできる。
【００８１】
図面内のフローチャートおよびブロック図は、本発明の様々な実施形態に従ったシステム、方法、およびコンピュータプログラム製品の可能な実装のアーキテクチャ、機能性、および動作を示す。この点で、フローチャートまたはブロック図における各ブロックは、指定された論理機能を実装するための１つまたは複数の実行可能命令を含む、命令のモジュール、セグメント、または部分を表すことができる。いくつかの代替の実装において、ブロック内に示される機能は、図に示された順序以外で発生可能である。たとえば、連続して示される２つのブロックは、実際には、実質的に同時に実行可能であるか、または、ブロックは時折、関与する機能性に応じて逆の順序で実行可能である。ブロック図および／またはフローチャート図の各ブロック、および、ブロック図および／またはフローチャート図内のブロックの組み合わせは、指定された機能または作用を実行するか、あるいは、特定用途向けハードウェアおよびコンピュータ命令の組み合わせを実施する、特定用途向けハードウェアベースシステムによって実装可能であることも留意されよう。
【００８２】
上記は特定の例を対象としているが、それらの基本的な範囲を逸脱することなく他の例およびさらなる例が考案可能であり、それらの範囲は下記の特許請求の範囲によって決定される。
【図１】
2020524853.tif 000003
【図２】
2020524853.tif 000004
【図３】
2020524853.tif 000005
【図４】
2020524853.tif 000006
【図５】
2020524853.tif 000007
【手続補正書】
【提出日】令和1年7月17日(2019.7.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
照会処理システムであって、
データベース管理システム（ＤＢＭＳ：ｄａｔａ  ｂａｓｅ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）を実行するように構成されたホスト中央処理ユニット（ＣＰＵ：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）と、
前記ホストＣＰＵとは別個のデータベースアクセラレータであって、複数の処理ユニット（ＰＵ：ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）を備えるデータベースアクセラレータと、
を備え、前記ＤＢＭＳは、
データベース上で実行するために照会を受信するように、
前記照会に対応する前記データベースからデータベーステーブルを取り出すように、
行および列を備える前記データベーステーブルをデータブロックに再フォーマットするようにであって、前記データブロックは、各々が前記複数のＰＵのうちの１つに対応する複数のＰＵデータブロックを備え、前記複数のＰＵデータブロックの各々が前記データベーステーブルの前記行および列内に記憶されたデータの一部を備える、データブロックに再フォーマットするように、および、
前記データブロックを前記データベースアクセラレータに伝送するように、
構成され、
前記データベースアクセラレータは、
前記複数のＰＵを並列に使用して前記複数のＰＵデータブロックを処理するように、および、
結果を前記複数のＰＵから前記ＤＢＭＳに転送するように、
構成される、
照会処理システム。
【請求項２】
前記ＤＢＭＳは、前記データベーステーブルの再フォーマットに応答して、前記複数のＰＵデータブロックの各々におけるデータの量を示すヘッダを、前記複数のＰＵデータブロックの各々に追加するように構成される、請求項１に記載の照会処理システム。
【請求項３】
前記データベースアクセラレータは、前記複数のＰＵの各々からの個々の結果を受信するように、および、前記個々の結果を前記ＤＢＭＳに転送される結合結果に組み合わせるように構成された、コンバイナを備える、請求項１に記載の照会処理システム。
【請求項４】
前記照会は、構造化照会言語（ＳＱＬ：ｓｔｒｕｃｔｕｒｅｄ  ｑｕｅｒｙ  ｌａｎｇｕａｇｅ）照会を含む、請求項１に記載の照会処理システム。
【請求項５】
前記データベースアクセラレータは、１つまたは複数のプログラム可能集積回路上でホストされる、請求項１に記載の照会処理システム。
【請求項６】
前記ＤＢＭＳは、前記ＤＢＭＳと前記１つまたは複数のプログラム可能集積回路との間のインターフェースとして働く、プログラム可能集積回路フレームワークを備え、前記プログラム可能集積回路フレームワークは、前記ＤＢＭＳによって発せられた命令を、前記１つまたは複数のプログラム可能集積回路によって解釈可能なコマンドに変換するように構成される、請求項５に記載の照会処理システム。
【請求項７】
前記１つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ：ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）を形成する、請求項５に記載の照会処理システム。
【請求項８】
前記データベースアクセラレータは、１つまたは複数の特定用途向け集積回路（ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）上でホストされる、請求項１に記載の照会処理システム。
【請求項９】
データベースアクセラレータであって、
１つまたは複数の集積回路上で実装される複数のＰＵを備え、前記データベースアクセラレータは、別のホストＣＰＵ上で実行するＤＢＭＳからデータブロックを受信するように構成され、前記データブロックは、データベースから取り出された行および列を備えるデータベーステーブルに基づき、各々が前記複数のＰＵのうちの１つに対応する複数のＰＵデータブロックを備え、前記複数のＰＵデータブロックの各々が前記データベーステーブルの前記行および列内に記憶されたデータの一部を備え、
前記複数のＰＵは、前記複数のＰＵデータブロックを並列に処理するように構成され、
前記データベースアクセラレータは、前記複数のＰＵの各々から個々の結果を受信するように、および、前記個々の結果を、前記ＤＢＭＳに転送される結合結果に組み合わせるように構成された、コンバイナを備える、
データベースアクセラレータ。
【請求項１０】
前記複数のＰＵデータブロックの各々は、前記複数のＰＵデータブロックの各々におけるデータの量を示すヘッダを備える、請求項９に記載のデータベースアクセラレータ。
【請求項１１】
前記データベーステーブルは、ＳＱＬ照会を使用して前記データベースから取り出される、請求項９に記載のデータベースアクセラレータ。
【請求項１２】
前記１つまたは複数の集積回路は、１つまたは複数のプログラム可能集積回路を含む、請求項９に記載のデータベースアクセラレータ。
【請求項１３】
前記データベースアクセラレータは、前記ＤＢＭＳと前記１つまたは複数のプログラム可能集積回路との間のインターフェースとして働く、前記ＤＢＭＳ内のプログラム可能集積回路フレームワークと通信するように構成され、前記プログラム可能集積回路フレームワークは、前記ＤＢＭＳによって発せられた命令を、前記１つまたは複数のプログラム可能集積回路によって解釈可能なコマンドに変換するように構成される、請求項１２に記載のデータベースアクセラレータ。
【請求項１４】
前記１つまたは複数のプログラム可能集積回路は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）を形成する、請求項１２に記載のデータベースアクセラレータ。
【国際調査報告】
2020524853.tif 000008
2020524853.tif 000009
2020524853.tif 000010