(57)【要約】【課題】データベースにおけるテーブルスキャンと合算集計動作を実行するための改善されたデータベース処理システム及びデータベースの処理方法を提供する。【解決手段】データベースのオフローディングエンジンを含むデータベース処理システムであって、前記データベースのオフローディングエンジンは、複数の読出修正書込回路を含むベクトル化された加算器と、前記読出修正書込回路とそれぞれ接続される複数の合計バッファと、キーアドレステーブルと、制御回路と、を備え、前記制御回路は、第１キー及び前記第１キーに対応する第１値を受信し、前記第１キーに対する前記キーアドレステーブルを検索し、前記キーアドレステーブルから前記第１キーに対応する第１アドレスを見つけることに応答して、前記読出修正書込回路のうち、前記第１アドレスに対応する読出修正書込回路に、前記第１アドレス及び前記第１値を伝送するように構成される。【選択図】  図１
2020053041.tif 000002
【特許請求の範囲】
【請求項１】
データベースのオフローディングエンジン（ｏｆｆｌｏａｄｉｎｇ  ｅｎｇｉｎｅ）を含むデータベース処理システムであって、
前記データベースのオフローディングエンジンは、複数の読出修正書込回路（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ  ｃｉｒｃｕｉｔ）を含むベクトル化された加算器と、
前記読出修正書込回路とそれぞれ接続される複数の合計バッファと、
キーアドレステーブルと、
制御回路と、を備え、
前記制御回路は、第１キー及び前記第１キーに対応する第１値を受信し、
前記第１キーに対する前記キーアドレステーブルを検索し、
前記キーアドレステーブルから前記第１キーに対応する第１アドレスを見つけることに応答して、前記読出修正書込回路のうち、前記第１アドレスに対応する読出修正書込回路に、前記第１アドレス及び前記第１値を伝送するように構成されることを特徴とするデータベース処理システム。
【請求項２】
前記制御回路は、第２キー及び前記第２キーに対応する第２値を受信し、
前記第２キーに対する前記キーアドレステーブルを検索し、
前記キーアドレステーブルから前記第２キーに対応する第２アドレスを見つけられないことに応答して、前記キーアドレステーブルに存在しない新しいアドレスを選択し、前記キーアドレステーブルに前記第２キー及び前記新しいアドレスを格納し、前記読出修正書込回路のうち、前記新しいアドレスに対応する一つの読出修正書込回路に、前記新しいアドレス及び前記第２値を伝送するようにさらに構成されることを特徴とする請求項１に記載のデータベース処理システム。
【請求項３】
前記データベースのオフローディングエンジンは、ホストへの接続するための「ＮＶＤＩＭＭ−ｐ」インターフェースを有することを特徴とする請求項１に記載のデータベース処理システム。
【請求項４】
前記データベースのオフローディングエンジンは、ホストへの接続するためのＰＣＩｅインターフェースを有することを特徴とする請求項１に記載のデータベース処理システム。
【請求項５】
前記ベクトル化された加算器は、共有されたシステムクロックによって定義される１つのクロックドメイン内で同期化された回路であり、
前記複数の読出修正書込回路の内の一つの読出修正書込回路は、読み出しの動作を実行するための第１ステージと、
追加の動作を実行するための第２ステージと、
書き込み動作を実行するための第３ステージと、を含むパイプラインとして構成され、
前記パイプラインは、第３アドレス及び前記第３アドレスに対応する第３値を、前記共有されたシステムクロックの各サイクルごとに受信するように構成されることを特徴とする請求項１に記載のデータベース処理システム。
【請求項６】
前記制御回路は、共有されたシステムクロックによって定義される１つのクロックドメイン内で同期化された回路であり、
前記制御回路は、キーに対する前記キーアドレステーブルを検索するためのルックアップ回路を含み、
前記ルックアップ回路は、前記キーアドレステーブルを検索するための複数のステージを含むパイプラインとして構成され、
前記パイプラインは、前記共有されたシステムクロックの各サイクルごとにキーを受信するように構成されることを特徴とする請求項１に記載のデータベース処理システム。
【請求項７】
前記データベースのオフローディングエンジンと接続されたホストをさらに備え、
前記ホストは、データベースアプリケーションのコマンド及びドライバ層のコマンドを格納する非一時的ストレージ媒体を含み、
前記データベースアプリケーションのコマンドは、ホストによって実行されるとき、前記ホストが合算集計動作を実行するために前記データベースのオフローディングエンジンを制御し、ドライバ層のコマンドを前記ホストに実行させる関数呼び出し（ｆｕｎｃｔｉｏｎ  ｃａｌｌｓ）を含むことを特徴とする請求項１に記載のデータベース処理システム。
【請求項８】
前記データベースのオフローディングエンジンは、複数のテーブルスキャニング回路を含み、
前記複数のテーブルスキャニング回路の内の一つのテーブルスキャニング回路は、条件でプログラム可能な条件テスト回路、入力バッファ、及び出力バッファを含み、
前記条件テスト回路は、前記入力バッファの第４アドレスの第１エントリに対して前記条件が満たされるかどうかを判定し、
前記条件が前記第１エントリに対して満たされるとの判定に応答して、対応する結果を前記出力バッファに書き込むように構成されることを特徴とする請求項１に記載のデータベース処理システム。
【請求項９】
前記条件テスト回路は、前記条件が第１エントリに対して満たされるとの判定に応答して、前記出力バッファの出力ベクトルの対応する要素（ｅｌｅｍｅｎｔ）に「１」を書き込むように構成されることを特徴とする請求項８に記載のデータベース処理システム。
【請求項１０】
前記条件のテスト回路は、前記条件が前記第１エントリに対して満たされるとの判定に応答して、前記第４アドレスを前記出力バッファの出力ベクトルの対応する要素に書き込むように構成されることを特徴とする請求項８に記載のデータベース処理システム。
【請求項１１】
前記ベクトル化された加算器は、共有されたシステムクロックによって定義される１つのクロックドメイン内の同期化された回路であり、
前記複数の読出修正書込回路の内の一つの読出修正書込回路は、読み出しの動作を実行するための第１ステージと、追加の動作を実行するための第２ステージと、書き込み動作を実行するための第３ステージと、を含むパイプラインとして構成され、
前記パイプラインは、前記システムクロックの各サイクルで、第５アドレス及び前記第５アドレスに対応する第５値を受信するように構成されることを特徴とする請求項８に記載のデータベース処理システム。
【請求項１２】
前記制御回路は、共有されたシステムクロックによって定義される１つのクロックドメイン内の同期化された回路であり、
前記制御回路は、キーに対するキーアドレステーブルを検索するためのルックアップ回路を含み、
前記ルックアップ回路は、前記キーアドレステーブルを検索するために、複数のステージを含むパイプラインとして構成され、
前記パイプラインは、前記システムクロックの各サイクルで、キーを受信するように構成されることを特徴とする請求項８に記載のデータベース処理システム。
【請求項１３】
前記データベースのオフローディングエンジンは、ホストへの接続を作るための「ＮＶＤＩＭＭ−ｐ」インターフェースを有することを特徴とする請求項８に記載のデータベース処理システム。
【請求項１４】
データベースのオフローディングエンジンを含むデータ処理システムであって、
前記データベースのオフローディングエンジンは、複数のテーブルスキャニンング回路を含み、
前記複数のテーブルスキャニング回路の内の一つのテーブルスキャニング回路は、条件でプログラム可能な条件テスト回路、入力バッファ、及び出力バッファを含み、
前記条件テスト回路は、前記入力バッファの第１アドレスの第１エントリに対して前記条件が満たされるかどうかを判定し、
前記条件が前記第１エントリに対して満たされるとの判定に応答して、対応する結果を前記出力バッファに書き込むように構成されることを特徴とするデータベース処理システム。
【請求項１５】
前記条件テスト回路は、前記条件が第１エントリに対して満たされるとの判定に応答して、前記出力バッファでの出力ベクトルの対応する要素（ｅｌｅｍｅｎｔ）に「１」を書き込むように構成されることを特徴とする請求項１４に記載のデータベース処理システム。
【請求項１６】
前記条件テスト回路は、前記条件が第１エントリに対して満たされるとの判定に応答して、前記出力バッファでの出力ベクトルの対応する要素に前記第１アドレスを書き込むように構成されることを特徴とする請求項１４に記載のデータベース処理システム。
【請求項１７】
前記データベースのオフローディングエンジンは、ホストへの接続を作るための「ＮＶＤＩＭＭ−ｐ」インターフェースを有することを特徴とする請求項１４に記載のデータベース処理システム。
【請求項１８】
前記データベースのオフローディングエンジンは、ホストへの接続を作るためのＰＣＩｅインターフェースを有することを特徴とする請求項１４に記載のデータベース処理システム。
【請求項１９】
ホストからデータベースの動作をオフローディング（ｏｆｆｌｏａｄｉｎｇ）する方法であって、
前記ホスト上で動作するアプリケーションにより合算集計動作を実行するためのドライバ関数を呼び出す段階と、
前記データベースのオフローディングエンジンによって前記合算集計動作を実行する段階と、を備え、
前記データベースのオフローディングエンジンは、複数の読出修正書込回路（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ  ｃｉｒｃｕｉｔ）を含むベクトル化された加算器と、
前記複数の読出修正書込回路にそれぞれ接続される複数の合計バッファと、
キーアドレステーブルと、
制御回路と、を備え、
前記合算集計動作を実行するための段階は、第１キー及び前記第１キーに対応する第１値を受信する段階と、
前記第１キーに対する前記キーアドレステーブルを検索する段階と、
前記キーアドレステーブルから前記第１キーに対応する第１アドレスを見つけることに応答して、前記読出修正書込回路の内の前記第１アドレスに対応する読出修正書込回路に、前記第１アドレス及び前記第１値を伝送する段階と、
第２キー及び前記第２キーに対応する第２値を受信する段階と、
前記第２キーに対する前記キーアドレステーブルを検索する段階と、
前記キーアドレステーブルから前記第２キーに対応するアドレスを見つけられないことに応答して、前記キーアドレステーブルに存在しない新しいアドレスを選択する段階と、
前記第２キー及び前記新しいアドレスを前記キーアドレステーブルに格納する段階と、
前記複数の読出修正書込回路のうち、前記新しいアドレスに対応する読出修正書込回路に前記新しいアドレス及び前記第２値を伝送する段階と、を含むことを特徴とするデータベースの処理方法。
【請求項２０】
前記アプリケーションにより、テーブルスキャニング動作を実行するためのドライバ関数を呼び出す段階と、
前記データベースのオフローディングエンジンにより、前記テーブルスキャニング動作を実行する段階と、をさらに備え、
前記テーブルスキャニング動作を実行する段階は、前記データベースのオフローディングエンジンの条件テスト回路により、前記データベースのオフローディングエンジンの入力バッファの第２アドレスで第１エントリに対して条件が満たされるかどうかを判定する段階と、
前記条件が前記入力バッファの第１エントリに対して満たされるとの判定に応答して、前記データベースのオフローディングエンジンの出力バッファへ対応する結果を書き込む段階と、を含むことを特徴とする請求項１９に記載のデータベースの処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースの処理に関し、特に、データベースのオフローディングエンジン（ｄａｔａｂａｓｅ  ｏｆｆｌｏａｄｉｎｇ  ｅｎｇｉｎｅ）を含むデータ処理システムに関する。
【背景技術】
【０００２】
データベースにおいて、クエリ（ｑｕｅｒｙ）処理動作の一部として、ホストＣＰＵによって実行されるとき、テーブルスキャンと合算集計動作は、ＣＰＵにかなりの負担を与える可能性があり、それはＣＰＵサイクルのかなりの部分を消費し、ＣＰＵによる消費電力の相当な部分を占めている。
【０００３】
従って、データベースにおけるテーブルスキャンと合算集計動作を実行するための改善されたシステム及び方法が必要となっているという課題が存在している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第８７００８２２号明細書
【特許文献２】米国特許第９９１０６１８号明細書
【特許文献３】米国特許第９９６６１５２号明細書
【特許文献４】米国特許出願公開第２０１２／００４７１２６号明細書
【特許文献５】米国特許出願公開第２０１７／０１９２８２１号明細書
【特許文献６】米国特許出願公開第２０１７／０２２８１９０号明細書
【特許文献７】米国特許出願公開第２０１７／０２６２５０３号明細書
【特許文献８】米国特許出願公開第２０１８／０１０７４０６号明細書
【特許文献９】国際公開第２０１５／１０８９３１号
【非特許文献】
【０００５】
【非特許文献１】ＰＡＴＲＩＣＫ，  ＧＯＲＤＯＮ，  “Ｄｅｖｅｌｏｐｍｅｎｔｓ  ｉｎ  Ｐｅｒｓｉｓｔｅｎｔ  Ｍｅｍｏｒｙ”，  ＩＭＣ  Ｓｕｍｍｉｔ  ２０１６  Ｂｒｅａｋｏｕｔ，  Ｊｕｎｅ  ２８，  ２０１６，  ｐｐ．１−５．
【非特許文献２】ＨＥＭＳＯＴＨ，  ＮＩＣＯＬＥ，  “Ｍｏｍｅｎｔｕｍ  Ｇａｔｈｅｒｓ  ｆｏｒ  Ｐｅｒｓｉｓｔｅｎｔ  Ｍｅｍｏｒｙ  Ｐｒｅｐｐｅｒｓ”，  Ｆｅｂｕｒａｒｙ  ７，  ２０１８，  ｐｐ．１−９，  ｈｔｔｐｓ：／／ｗｗｗ．ｎｅｘｔｐｌａｔｆｏｒｍ．ｃｏｍ／２０１８／０２／０７／ｍｏｍｅｎｔｕｍ−ｇａｔｈｅｒｓ−ｐｅｒｓｉｓｔｅｎｔ−ｍｅｍｏｒｙ−ｐｒｅｐｐｅｒｓ／．
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は上記従来のデータベース処理における課題に鑑みてなされたものであって、本発明の目的は、データベースにおけるテーブルスキャンと合算集計動作を実行するための改善されたデータベース処理システム及びデータベースの処理方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明によるデータベース処理システムは、データベースのオフローディングエンジン（ｏｆｆｌｏａｄｉｎｇ  ｅｎｇｉｎｅ）を含むデータベース処理システムであって、前記データベースのオフローディングエンジンは、複数の読出修正書込回路（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ  ｃｉｒｃｕｉｔ）を含むベクトル化された加算器と、前記読出修正書込回路とそれぞれ接続される複数の合計バッファと、キーアドレステーブルと、制御回路と、を備え、前記制御回路は、第１キー及び前記第１キーに対応する第１値を受信し、前記第１キーに対する前記キーアドレステーブルを検索し、前記キーアドレステーブルから前記第１キーに対応する第１アドレスを見つけることに応答して、前記読出修正書込回路のうち、前記第１アドレスに対応する読出修正書込回路に、前記第１アドレス及び前記第１値を伝送するように構成されることを特徴とする。
【０００８】
前記制御回路は、第２キー及び前記第２キーに対応する第２値を受信し、前記第２キーに対する前記キーアドレステーブルを検索し、前記キーアドレステーブルから前記第２キーに対応する第２アドレスを見つけられないことに応答して、前記キーアドレステーブルに存在しない新しいアドレスを選択し、前記キーアドレステーブルに前記第２キー及び前記新しいアドレスを格納し、前記読出修正書込回路のうち、前記新しいアドレスに対応する一つの読出修正書込回路に、前記新しいアドレス及び前記第２値を伝送するようにさらに構成されることが好ましい。
前記データベースのオフローディングエンジンは、ホストへの接続するための「ＮＶＤＩＭＭ−ｐ」インターフェースを有することが好ましい。
前記データベースのオフローディングエンジンは、ホストへの接続するためのＰＣＩｅインターフェースを有することが好ましい。
前記ベクトル化された加算器は、共有されたシステムクロックによって定義される１つのクロックドメイン内で同期化された回路であり、前記複数の読出修正書込回路の内の一つの読出修正書込回路は、読み出しの動作を実行するための第１ステージと、追加の動作を実行するための第２ステージと、書き込み動作を実行するための第３ステージと、を含むパイプラインとして構成され、前記パイプラインは、第３アドレス及び前記第３アドレスに対応する第３値を、前記共有されたシステムクロックの各サイクルごとに受信するように構成されることが好ましい。
前記制御回路は、共有されたシステムクロックによって定義される１つのクロックドメイン内で同期化された回路であり、前記制御回路は、キーに対する前記キーアドレステーブルを検索するためのルックアップ回路を含み、前記ルックアップ回路は、前記キーアドレステーブルを検索するための複数のステージを含むパイプラインとして構成され、前記パイプラインは、前記共有されたシステムクロックの各サイクルごとにキーを受信するように構成されることが好ましい。
前記データベースのオフローディングエンジンと接続されたホストをさらに備え、前記ホストは、データベースアプリケーションのコマンド及びドライバ層のコマンドを格納する非一時的ストレージ媒体を含み、前記データベースアプリケーションのコマンドは、ホストによって実行されるとき、前記ホストが合算集計動作を実行するために前記データベースのオフローディングエンジンを制御し、ドライバ層のコマンドを前記ホストに実行させる関数呼び出し（ｆｕｎｃｔｉｏｎ  ｃａｌｌｓ）を含むことが好ましい。
【０００９】
前記データベースのオフローディングエンジンは、複数のテーブルスキャニング回路を含み、前記複数のテーブルスキャニング回路の内の一つのテーブルスキャニング回路は、条件でプログラム可能な条件テスト回路、入力バッファ、及び出力バッファを含み、前記条件テスト回路は、前記入力バッファの第４アドレスの第１エントリに対して前記条件が満たされるかどうかを判定し、前記条件が前記第１エントリに対して満たされるとの判定に応答して、対応する結果を前記出力バッファに書き込むように構成されることが好ましい。
前記条件テスト回路は、前記条件が第１エントリに対して満たされるとの判定に応答して、前記出力バッファの出力ベクトルの対応する要素（ｅｌｅｍｅｎｔ）に「１」を書き込むように構成されることが好ましい。
前記条件のテスト回路は、前記条件が前記第１エントリに対して満たされるとの判定に応答して、前記第４アドレスを前記出力バッファの出力ベクトルの対応する要素に書き込むように構成されることが好ましい。
前記ベクトル化された加算器は、共有されたシステムクロックによって定義される１つのクロックドメイン内の同期化された回路であり、前記複数の読出修正書込回路の内の一つの読出修正書込回路は、読み出しの動作を実行するための第１ステージと、追加の動作を実行するための第２ステージと、書き込み動作を実行するための第３ステージと、を含むパイプラインとして構成され、前記パイプラインは、前記システムクロックの各サイクルで、第５アドレス及び前記第５アドレスに対応する第５値を受信するように構成されることが好ましい。
前記制御回路は、共有されたシステムクロックによって定義される１つのクロックドメイン内の同期化された回路であり、前記制御回路は、キーに対するキーアドレステーブルを検索するためのルックアップ回路を含み、前記ルックアップ回路は、前記キーアドレステーブルを検索するために、複数のステージを含むパイプラインとして構成され、前記パイプラインは、前記システムクロックの各サイクルで、キーを受信するように構成されることが好ましい。
前記データベースのオフローディングエンジンは、ホストへの接続を作るための「ＮＶＤＩＭＭ−ｐ」インターフェースを有することが好ましい。
【００１０】
上記目的を達成するためになされた本発明によるデータベース処理システムは、データベースのオフローディングエンジンを含むデータ処理システムであって、前記データベースのオフローディングエンジンは、複数のテーブルスキャニンング回路を含み、前記複数のテーブルスキャニング回路の内の一つのテーブルスキャニング回路は、条件でプログラム可能な条件テスト回路、入力バッファ、及び出力バッファを含み、前記条件テスト回路は、前記入力バッファの第１アドレスの第１エントリに対して前記条件が満たされるかどうかを判定し、前記条件が前記第１エントリに対して満たされるとの判定に応答して、対応する結果を前記出力バッファに書き込むように構成されることを特徴とする。
【００１１】
前記条件テスト回路は、前記条件が第１エントリに対して満たされるとの判定に応答して、前記出力バッファでの出力ベクトルの対応する要素（ｅｌｅｍｅｎｔ）に「１」を書き込むように構成されることが好ましい。
前記条件テスト回路は、前記条件が第１エントリに対して満たされるとの判定に応答して、前記出力バッファでの出力ベクトルの対応する要素に前記第１アドレスを書き込むように構成されることが好ましい。
前記データベースのオフローディングエンジンは、ホストへの接続を作るための「ＮＶＤＩＭＭ−ｐ」インターフェースを有することが好ましい。
前記データベースのオフローディングエンジンは、ホストへの接続を作るためのＰＣＩｅインターフェースを有することが好ましい。
【００１２】
上記目的を達成するためになされた本発明によるデータベースの処理方法は、ホストからデータベースの動作をオフローディング（ｏｆｆｌｏａｄｉｎｇ）する方法であって、前記ホスト上で動作するアプリケーションにより合算集計動作を実行するためのドライバ関数を呼び出す段階と、前記データベースのオフローディングエンジンによって前記合算集計動作を実行する段階と、を備え、前記データベースのオフローディングエンジンは、複数の読出修正書込回路（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ  ｃｉｒｃｕｉｔ）を含むベクトル化された加算器と、前記複数の読出修正書込回路にそれぞれ接続される複数の合計バッファと、キーアドレステーブルと、制御回路と、を備え、前記合算集計動作を実行するための段階は、第１キー及び前記第１キーに対応する第１値を受信する段階と、前記第１キーに対する前記キーアドレステーブルを検索する段階と、前記キーアドレステーブルから前記第１キーに対応する第１アドレスを見つけることに応答して、前記読出修正書込回路の内の前記第１アドレスに対応する読出修正書込回路に、前記第１アドレス及び前記第１値を伝送する段階と、第２キー及び前記第２キーに対応する第２値を受信する段階と、前記第２キーに対する前記キーアドレステーブルを検索する段階と、前記キーアドレステーブルから前記第２キーに対応するアドレスを見つけられないことに応答して、前記キーアドレステーブルに存在しない新しいアドレスを選択する段階と、前記第２キー及び前記新しいアドレスを前記キーアドレステーブルに格納する段階と、前記複数の読出修正書込回路のうち、前記新しいアドレスに対応する読出修正書込回路に前記新しいアドレス及び前記第２値を伝送する段階と、を含むことを特徴とする。
【００１３】
前記アプリケーションにより、テーブルスキャニング動作を実行するためのドライバ関数を呼び出す段階と、前記データベースのオフローディングエンジンにより、前記テーブルスキャニング動作を実行する段階と、をさらに備え、前記テーブルスキャニング動作を実行する段階は、前記データベースのオフローディングエンジンの条件テスト回路により、前記データベースのオフローディングエンジンの入力バッファの第２アドレスで第１エントリに対して条件が満たされるかどうかを判定する段階と、前記条件が前記入力バッファの第１エントリに対して満たされるとの判定に応答して、前記データベースのオフローディングエンジンの出力バッファへ対応する結果を書き込む段階と、を含むことが好ましい。
【発明の効果】
【００１４】
本発明に係るデータベース処理システム及びデータベースの処理方法によれば、データベース処理システムの全体的な処理速度を大幅に増加することができる。
また、データベースのオフローディングエンジンが、与えられた動作を実行するためにホストＣＰＵの汎用ハードウェアよりも少ないエネルギーを要求できるテーブルスキャン及び合計集計動作のために設計された特殊なハードウェアを採用する場合には、消費電力を減少することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態によるデータベース処理システムの概略構成を示すブロック図である。
【図２】本発明の実施形態によるテーブルスキャン動作を説明するためのプロセッサフローチャートである。
【図３】本発明の実施形態によるデータベース処理動作のシーケンスを説明するためのプロセッサフローチャートである。
【図４】本発明の実施形態によるデータベース処理システムの構成を示すブロック図である。
【図５】本発明の実施形態によるデータベースのオフローディングエンジンの構成を示すブロック図である。
【図６】本発明の実施形態によるテーブルスキャニング回路の概略構成を示すブロック図である。
【図７】本発明の実施形態による合算集計回路の構成を示すブロック図である。
【図８】本発明の実施形態によるデータベースの処理システムの概略構成を示すハードウェア及びソフトウェアのブロック図である。
【図９Ａ】本発明の実施形態によるデータベース処理動作を説明するためのプロセスフローチャートである。
【図９Ｂ】本発明の実施形態によるデータベース処理動作を説明するためのプロセスフローチャートである。
【発明を実施するための形態】
【００１６】
次に、本発明に係るデータベース処理システム及びデータベースの処理方法を実施するための形態の具体例を図面を参照しながら説明する。
【００１７】
添付した図面と関連して以下の説明する詳細な説明は、本開示に基づいて提供されるデータベースのオフローディングエンジンの例としての実施形態の説明として意図され、本開示が構成・使用されることのできる唯一の形態を示すものと意図されない。
説明は、図に示す実施形態に関連して、本開示の特徴を説明する。
しかし、同一又は同等の機能及び構造が、本開示の範囲内に含まれるものとしても意図される互いに異なる実施例によって達成されうることが理解されるだろう。
本明細書の他の部分で述べられるように、同一の構成要素番号は、同一の構成要素又は特徴を指すものと意図する。
【００１８】
本明細書において、用語「プロセッシングユニット」は、データ又はデジタル信号を処理するために採用されたハードウェア、ファームウェア、及びソフトウェアの任意の組み合わせを意味するために使用する。
例として、処理（ｐｒｏｃｅｓｓｉｎｇ）回路のハードウェアは、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、汎用又は特定用途むけの中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）、ＤＳＰ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、及びＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）のようなプログラム可能なロジック装置を含む。
本明細書で使用するように、処理回路で、各機能は、その機能を実行するために構成された、すなわち、ハードワイヤリングされた（ｈａｒｄ−ｗｉｒｅｄ）ハードウェアによって、又は非一時的ストレージ媒体に格納されたコマンドを実行するように構成されたＣＰＵのような、より汎用のハードウェアによって実行される。
処理回路は、一つのＰＣＢ（ｐｒｉｎｔｅｄ  ｃｉｒｃｕｉｔ  ｂｏａｒｄ）上で製造され得、いくつかの相互接続されたＰＣＢ上に分散され得る。
処理回路は、他の処理回路を含むことができる。
例として、処理回路は、ＰＣＢ上で相互接続された二つの処理回路、ＦＰＧＡ及びＣＰＵを含むことができる。
【００１９】
ただし、本明細書で「第１」、「第２」、「第３」などの用語は、多様な要素、成分、領域、層及び／又はセクションを説明するために使用するが、これらの要素、成分、領域、層、及び／又はセクションは、これらの用語により限定されないことを理解するであろう。
これらの用語は、他の要素、成分、領域、層、又はセクションから一つの要素、構成、領域、層、又はセクションを区別するために使用する。
したがって、後述する第１構成要素、成分、領域、層、又はセクションは、本発明の思想及び範囲を逸脱せずに、第２構成要素、成分、領域、層、又はセクションを指すことができる。
【００２０】
本明細書で使用する用語は、特定の実施形態を説明するためのみのものであって、発明の概念を限定するためのものとして意図されない。
本明細書で使用されているように、「大体は」、「約」という用語及び類似の用語は、近似の用語として使用され、程度の用語として使用されず、本発明の当業者によって識別される測定値又は計算値の本質的な変動を考慮するように意図される。
本明細書で使用されているように、用語「主要成分」は、組成物又は生成物の任意の一つの成分よりも多くの量の組成物、ポリマー、又は生成物に存在する成分を指す。
これに対して、用語「主成分」は、少なくとも５０％以上の重量の組成物、ポリマー、又は生成物を構成する成分を指す。本明細書で使用されているように、「主要部分」は、複数のアイテムに適用されるとき、そのアイテムのうちの少なくとも半分を意味する。
【００２１】
本明細書で使用するように、文脈上明らかに別の意味を示していると判定されない限り、単数形「一つ」は、複数の形態も含むものと意図される。
「構成される」、「構成されている」、「含む」、そして「含んでいる」という用語は、本明細書で使用されるとき、これらの用語が所定の特徴、整数、段階、動作、要素、及び／又は成分の存在を明示するが、一つ以上の他の特徴、整数、段階、動作、要素、成分、及び／又はそれらのグループの追加又は存在を排除しない。
本明細書で使用するように、「及び／又は」という用語は、一つ以上の列挙された項目と関連付けられている任意かつすべての組み合わせを含む。
「少なくとも一つ」のような表現は、要素のリストに先行する場合、要素全体のリストを修正し、リストの個々の要素を修正しない。
さらに、「できる」の使用は、本発明の実施形態を説明するとき、「本発明の一つ以上の実施形態」を指す。
本明細書で使用されているように、「使用する（ｕｓｅ）」、「使用する（ｕｓｉｎｇ）」、及び「使用された（ｕｓｅｄ）」という用語は、「利用できる（ｕｔｉｌｉｚｅ）」、「利用する（ｕｔｉｌｉｚｉｎｇ）」、及び「使用された（ｕｔｉｌｉｚｅｄ）」という用語の同義語としてそれぞれみなされることができる。
【００２２】
構成要素又は層（レイヤー）が他の構成要素又は層と「上にある」、「接続される」、「結合される」又は「隣接する」と述べられるときは、他の構成要素又は層の上に直接、有ったり、接続されたり、結合されたり、隣接したりすることができ、又は一つ以上の間に位置する構成要素又は層が存在することができる。
これに対して、構成要素が他の構成要素又は層に「直接上にある」、「直接接続される」、「直接結合される」、又は「すぐ隣接する」と述べられるときは、間に位置する構成要素又は層が存在しない。
本明細書で開示した及び／又は列挙された任意の数の範囲は、記載された範囲内に含まれた同じ数の精度のすべてのサブ範囲を含むように意図される。
例として、「１．０から１０．０」の範囲は、列挙された最小値１．０と列挙された最大値１０．０との間の（そして、含まれた）すべてのサブ範囲を含むように、すなわち、例として、２．４から７．６のように、１．０と同じ又は大きい最小値及び１０．０と同じ又は少さい最小値を有するサブグループを含むように意図される。
本明細書で列挙された任意の最大数の制限は、ここに含まれるすべてのより低い数の制限を含むように意図され、本明細書で列挙された任意の最小数の制限は、ここに含まれたすべてのより高い数の制限を含むように意図される。
【００２３】
図１は、本発明の実施形態によるデータベース処理システムの概略構成を示すブロック図である。
図１を参照すると、データベースの処理システムのいくつかの実施形態は、ホスト１０５と、及びデータベースのオフローディングエンジン１１０と、を備える。
【００２４】
データベースのオフローディングエンジン１１０は、図に示すように、ホストの一部であったり、ホストと接続されたりする。
例として、ホスト１０５は、中央処理装置（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：ＣＰＵ）、メインメモリ、及び永続ストレージ（ｐｅｒｓｉｓｔｅｎｔ  ｓｔｏｒａｇｅ）（例えば、ハードドライブ又はＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ））を含むコンピュータ又はサーバーである。
データベースのオフローディングエンジン１１０は、永続（ｐｅｒｓｉｓｔｅｎｔ）メモリを搭載したり、又は永続メモリに接続されたりする。
永続メモリは、速度、容量及び持続性のバランスを維持するメモリの一種である。
【００２５】
集計とテーブルスキャニング動作をデータのより近くにオフローディングさせることの利点の１つは、このような動作が計算集約的なものではなく、データ集約的なものということである。
データベースのオフローディングエンジン１１０は（以下、より具体的に説明される）、処理回路とメモリを含む。
データベースのオフローディングエンジン１１０は（メモリチャネルを介して）、「ＮＶＤＩＭＭ−ｐ」及びＰＣＩｅを含む複数のインターフェースのいずれか１つを介してホストに接続される。
ホストは、実行されるクエリを含む、多様なデータベース処理動作を実行する。
【００２６】
データベース処理動作の一例として、テーブルスキャン動作がある。
図２は、本発明の実施形態によるテーブルスキャン動作を説明するためのプロセッサフローチャートである。
図２を参照すると、テーブルスキャン動作は、条件を満足させるエントリに対してデータベースのテーブルの列全体を検索することを含む。
条件は、ホストが実行中のクエリの一部であるか、又はそのクエリから派生され得る。
【００２７】
図２の例で、実行されるテーブルスキャンは、辞書（データベースに格納された）によると、名称「Ｎｅｗ  Ｙｏｒｋ」が整数「７７２」に対応する「Ｎｅｗ  Ｙｏｒｋ」に対応する列内のすべてのエントリを識別することを要求する。
検索される列は、エントリ当たり１７ビットの圧縮された形式で格納される。
テーブルスキャンを実行するために、データベース処理システムは、検索される列の圧縮を解除して（各１７ビット数を３２ビット数に変換して）、各項目について項目が条件を満たしているかどうかをテストする（この場合、圧縮解除された整数が「７７２」と同じであるかどうか）。
【００２８】
スキャンの結果は、（ｉ）検索された列（図２の例での２５７個の構成要素）と同じ数の構成要素を有し、条件を満たしている各項目に対する１と条件を満たしていない各項目に対する０を含むベクトル、又は
（ｉｉ）列内で、条件を満たしている列の各構成要素のインデックス（又はアドレス）のベクトルとしての二つのフォーマット一つに表される。
いくつかの実施形態で、ベクトルは、条件を満たしていない各構成要素のアドレスを代わりに含む。
【００２９】
データベース処理動作の他の例は、合算集計動作である。
このような動作は、１つの列が（例えば、各キーが４バイトの数である）キーのセットを含み、他の列は（例えば、各値が８バイトの数である）、対応する値のセットを含む２列のテーブルであるキー値テーブル上で実行される。
いくつかのキーは、（任意の順序で）繰り返される。
例として、キー「２３８７６」は、最大２７個の異なるそれぞれの対応する値とともにテーブルに２７回表される。
合算集計動作は、第１キー値テーブルから各キーが正確に一回（例えば、ソートされた昇順で）表され、各キーに対応する値が第１キー値テーブルのキーにおいてキーに対応するすべての値の合計である第２キー値テーブルを生成する。
【００３０】
「ＧｒｏｕｐＢｙ」の動作のような他のデータベースの処理動作とともにテーブルスキャンと合算集計動作がホストによって実行される。
「ＧｒｏｕｐＢｙ」動作の例は、単に一例であり、一般的に、ホストがデータに対する任意の動作を行えることが理解されるであろう。
テーブルスキャンと合算集計動作がホストによって実行されるとき、テーブルスキャンと合算集計動作がホストの処理サイクルのかなりの部分を消費する可能性がある。
このように、これらの動作がデータベースのオフローディングエンジンによって代わりに実行される場合（つまり、ホストによってオフローディングされる場合）、データベース処理システムの全体的な処理速度は、大幅に増加することができる。
さらに、例として、データベースのオフローディングエンジンが、与えられた動作を実行するためにホストＣＰＵの汎用ハードウェアよりも少ないエネルギーを要求できるテーブルスキャン及び合算集計動作のために設計された特殊なハードウェアを採用する場合には、消費電力が減少されうる。
【００３１】
図３は、本発明の実施形態によるデータベース処理動作のシーケンスを説明するためのプロセッサフローチャートである。
図３を参照すると、性能向上のためのオフローディングを図に示して処理の流れを示す。
第１段階Ｓ３０５において、ホストＣＰＵは、テーブルスキャン動作と合算集計動作を含むクエリプランを生成する。
第２段階Ｓ３１０において、データベースのオフローディングエンジン（又は「アクセラレータ」）は、テーブルスキャン動作を実行する。
第３段階Ｓ３１５において、ホストＣＰＵは「ＧｒｏｕｐＢｙ」動作を含む追加のデータベース動作を実行する。
第４段階Ｓ３２０において、データベースのオフローディングエンジンは、合算集計動作を実行する。
次の段階Ｓ３２５及び可能な限り、他の後続の段階で、ホストＣＰＵは、テーブルスキャン動作及び／又は合算集計動作の結果を使用して、追加のデータベース動作を実行する。
【００３２】
図４は、本発明の実施形態によるデータベース処理システムの構成を示すブロック図である。
図４を参照すると、本発明の実施形態によるデータベースのオフローディングエンジンだけでなく、それと相互作用する２つのソフトウェア層の構成をブロック図で示す。
データベースアプリケーション４０５、例えば、「ＳＡＰ  ＨＡＮＡ」データベースアプリケーションは、ホスト上で動作し、ドライバ層４１０に対する適切な呼び出しを使用して、テーブルスキャン動作及び合算集計動作のようなデータベースの動作をデータベースのオフローディングエンジン１１０にオフローディングする。
【００３３】
データベースのオフローディングエンジン１１０は、ホストと通信するためのＰＣＩｅインターフェース４１５と、オフローディングされたデータベースの動作をいくつかの（図４の例では、２個）のデータベースのオフローディング回路４２５のいずれか一つの回路に伝送するための第１並列化回路（ｐａｒａｌｌｅｌｉｚｅｒ）４２０と、オフローディング回路４２５と複数のメモリインターフェース回路４３５（例えば、ｍｉｇ（ｍａｃｈ  ｉｎｔｅｒｆａｃｅ  ｇｅｎｅｒａｔｏｒ））との間の接続を作るための第２並列化回路４３０と、を備える。
データベースのオフローディングエンジン１１０は、図に示すように、複数のメモリ４４０と接続されるか、又はいくつかの実施形態で、メモリ４４０は、データベースのオフローディングエンジン１１０の一部であり得る。
いくつかの実施形態で、データベースのオフローディングエンジン１１０は、複数の、例えば、８個以上の、１６個以上の、又は３２個以上のオフローディング回路４２５を含む。
【００３４】
図５は、本発明の実施形態によるデータベースのオフローディングエンジンの構成を示すブロック図である。
図５を参照すると、オフローディング回路４２５は、オフローディング回路４２５の動作を制御するために、ホストが採用できる制御レジスタ５０５のセットを含む。
オフローディング回路４２５は、複数のテーブルスキャニング回路（ｖｓｅａｒｃｈ）５１５を含むベクトル化されたテーブルスキャニング回路５１０、合算集計回路（例えば、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）、ｖａｄｄｅｒ、ｓｃａｎ）５２０、及びプリフェッチ（ｐｒｅｆｅｔｃｈ）回路５２５をさらに含む。
【００３５】
テーブルスキャニング回路５１５及び合算集計回路５２０は、以下で、より具体的に説明するように、テーブルスキャン動作及び合算集計動作をそれぞれ実行し、プリフェッチ回路５２５は、テーブルスキャニング回路５１５及び合算集計回路５２０でのデータベース処理動作を実行すると同時に、メモリ４４０からデータをフェッチ（ｆｅｔｃｈ）して、テーブルスキャニング回路５１５と合算集計回路５２０のそれぞれのバッファにフェッチされたデータを格納する。
ベクトル化されたテーブルスキャニング回路５１０は、圧縮されたデータを受信して、これをさらに処理する前に圧縮解除することができる。
プリフェッチ回路５２５は、メモリ読み出し回路５３０を使用してメモリ４４０からデータをフェッチすることができ、テーブルスキャン動作及び合算集計動作の結果は、メモリ書き込み回路５３５を使用してメモリ４４０に書き込まれる。
【００３６】
図６は、本発明の実施形態によるテーブルスキャニング回路の概略構成を示すブロック図である。
図６を参照すると、テーブルスキャニング回路５１５のそれぞれは、条件テスト回路６０５、入力バッファ６１０、出力バッファ６１５及びレジスタ６２０のセットを含む。
【００３７】
レジスタ６２０は、入力バッファ６１０へのポインタ、出力バッファ６１５へのポインタ、及びテストされる条件を指定する１つ以上のレジスタを含み得る。
条件を指定するレジスタは、基準値を指定する１つ以上の値レジスタ、及び関係を指定する１つ以上の関係レジスタを含み得る。
例として、第１関係のレジスタが関係「等価」に対応する値を含み、対応する値レジスタが値「３７」を含むと、条件テスト回路６０５は、現在の入力バッファの値（入力バッファで、入力バッファへのポインタによって識別されるアドレスの値）が、「３７」である場合に一つを生成する。
【００３８】
実行中のスキャンの結果が条件を満たす、それぞれのエントリに対するものを１つ含み、条件を満たしていないそれぞれのエントリに対するものを含まないベクトルとしてフォーマットされる場合には、条件テスト回路６０５は、現在の結果（例えば、一つ）を出力バッファへのポインタによって識別される、出力バッファのアドレスで出力バッファ６１５へ書き込む。
テストが条件テスト回路６０５によって実行されるたびに、入力バッファ６１０へのポインタと出力バッファ６１５へのポインタの両方が増加する可能性がある。
その代わりに、実行中のスキャンの結果が条件を満たしている各構成要素の列内のインデックス（又はアドレス）のベクトルとしてフォーマットされなければならない場合には、そのときに条件テスト回路６０５は、現在の結果が「１」のときのみ（つまり、条件が満たされたとき）、出力バッファに書き込むことができ、そのような場合に、現在の項目（テスト中の項目）のスキャン中の列にインデックス（又はアドレス）を出力バッファに書き込む。
【００３９】
条件テスト回路６０５によってテストが実行されるたびに、入力バッファ６１０へのポインタが増加し、条件テスト回路６０５が出力バッファ６１５に書き込むたびに、出力バッファ６１５へのポインタが増加する。
他の可能な関係には「超過」及び「未満」が含まれる。
レジスタ６２０の一部又は全部は、制御レジスタ５０５のセットにリンクされるか、又はそのセット内に存在することができ、ホストによって設定される（つまり、書き込まれる）。
【００４０】
以上、説明したように、ベクトル化されたテーブルスキャニング回路５１０は、複数のテーブルスキャニング回路５１５を含む。
例として、テーブルが何度もスキャニングされなければならない場合（複数の条件のそれぞれについて）、いくつかのテーブルがスキャンされる場合、又は複数の部分に分割し、各テーブルスキャニング回路５１５のそれぞれが、各部分のテーブルスキャン動作を実行するにつれて、テーブルのスキャンニングが加速化されなければならない場合、これらは並列に複数のテーブルスキャン動作を実行するように採用することができる。
テーブルスキャニング回路は、パイプラインで構成され、各クロックサイクルごとに一つのテストが実行され、比較が並列に実行されるようにベクトル化される。
【００４１】
図７は、本発明の実施形態による合算集計回路の構成を示すブロック図である。
図７を参照すると、いくつかの実施形態で、合算集計回路５２０は、制御回路７０５、ベクトル化された加算器７１０、及びプリフェッチバッファ７１５を含む。
【００４２】
合算集計回路５２０は（回路に対する「システムクロック」として称される単一のクロックを有する）、単一のクロックドメイン内の同期回路であり得る。
ベクトル化された加算器７１０は、それぞれが各自の合計バッファ７２５に接続可能な複数の読出修正書込回路（ｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅ  ｃｉｒｃｕｉｔ）７２０を含む。
動作時に、プリフェッチ回路５２５は、キー値テーブル（または、そのようなテーブルの一部）をプリフェッチバッファ７１５にコピーする。
プリフェッチバッファ７１５内で、それぞれのキー値（ｋｅｙ  ｖａｌｕｅ）のペアは、以下で、より詳細に説明するアドレス変換プロセスによってアドレス値のペアに変換され、アドレス値のペアは、読出修正書込回路７２０の中の一つに伝送される。
【００４３】
その後、読出修正書込回路７２０は、アドレス値のペアのアドレスにおいて、合計バッファ７２５内の（アドレス値のペアの）アドレスから現在の値の合計をフェッチし、アドレス値のペアからの値を現在の値の合計に加えることによって値の合計をアップデートし、アップデートされた値の合計を合計バッファ７２５に再び格納する（そのアドレスに予め格納された値の合計を上書き）。
読出修正書込回路７２０のそれぞれは、パイプラインで構成され得、例として、パイプラインの第１ステージが、読み出しの動作を実行し、パイプラインの第２ステージが加算を実行し、パイプラインの第３ステージが書き込み動作を実行し、読出修正書込回路７２０が、システムクロックのそれぞれのサイクルの間に、新しいアドレス値のペアを受信できるようにする。
すべてのキー値テーブルがいったん処理されると、合計を含む新しいキー値テーブルは、合計が格納されたアドレスに対応するキーを合計バッファ７２５に格納された各合計と関連付けさせることによって形成される。
【００４４】
以上説明したアドレス変換プロセスは、すべての可能な４バイトの数字（各キーが４バイト数である場合）に対応してキー空間が非常に大きい可能性があるため、有利であり得るが、任意のキー値テーブルは、可能な４バイトの数の小さなサブセットだけを含む。
したがって、制御回路７０５は、アドレス変換を実行して、各キーをそれぞれのアドレスに変換することができ、アドレスは、連続的なたアドレスのセットを形成する。
制御回路７０５は、共にキーアドレステーブル７４０を形成する、複数のルックアップ回路７３０及び複数のキーアドレステーブルバッファ７３５を含む。
【００４５】
動作時に、それぞれのルックアップ回路７３０は、一つづつキー値のペアを受信し、
（ｉ）１つのキー値のペアが割り当てられると、キーアドレステーブルバッファ７３５を検索してキーに対するアドレスを検索し、
（ｉｉ）アドレスがまだキーに指定されていない場合、新しいアドレスを生成して、そのアドレスをキーに割り当てることができる。
次のアドレスレジスタは（制御レジスタ５０５のセットに有り得る）、次の利用可能なアドレスを含み、アドレスが以前に割り当てられていないキーにアドレスが割り当てられるたびに増加する。
【００４６】
各キーアドレステーブルバッファ７３５は、（以下、より具体的に説明するように、例えば、キーの３つの最下位ビットに基づいて）可能な（４バイトの）キーのサブセットと関連することができるから、キーアドレステーブル７４０からキーを検索するためにキーアドレステーブルバッファ７３５の中で一つを検索することだけが必要になることができる。
キーは、キーアドレステーブルバッファ７３５を検索するために、ログ検索が使用されることができるよう、各キーアドレステーブルバッファ７３５へ（増加又は減少する）順序に格納される。
ルックアップ回路７３０は、ルックアップ回路７３０が、システムクロックの各サイクルごとにキーを受信できるように、キーアドレステーブルを検索するための複数のステージを含むパイプラインであり得、各ステージは、ログの検索の段階に対応する。
【００４７】
例として、キーアドレステーブル７４０は、８つのキーアドレステーブルバッファ７３５を含み、これらのそれぞれは、キーの３つの最下位ビットに基づいてキーに対するアドレスを格納するために使用される。
例として、第１キーアドレステーブルバッファ（図７のＰＴＬＢ０）は「０００」で終わるキーに対するアドレス（つまり、最下位ビットの３つの有する）を格納するために使用され、第２キーアドレステーブルバッファは、「００１」で終わるキーに対するアドレスを格納するために使用され、第３キーアドレステーブルバッファは、「０１０」で終わるキーに対するアドレスを格納するために使用される。
【００４８】
第１の８ｘ８クロスバースイッチ７４５は、ルックアップ回路７３０のそれぞれが、すべてのキーアドレステーブルバッファ７３５にアクセスできるようにするために使用される。
例として、動作時、ルックアップ回路７３０のいずれか（例えば、８回目）は、最下位の３ビットとして「０００」を有するキーを有するキー値のペアを受信する。
以後、キーに対するＰＴＬＢ０を検索することができる。
キーがＰＴＬＢ０に存在すれば、対応するアドレスをフェッチし、アドレスが割り当てられている読出修正書込回路７２０にアドレス値のペアを伝送する。
【００４９】
例として、図７の実施形態で、８つの読出修正書込回路７２０が存在する場合には、最下位ビットに基づいて（例えば、アドレスの３つの最下位ビットに基づいて）、読出修正書込回路７２０に対するアドレスの割り当てが行われることもできる。
例として、ＰＴＬＢ０から読み取られるアドレスが「０１０」で終わると、その後、第８ルックアップ回路は、アドレス及び値を読出修正書込回路７２０の中の３番目に伝送する。
アドレス及び値のルーティングは、第２の８ｘ８クロスバースイッチ７５０によって達成される。
【００５０】
ＰＴＬＢ０でキーを検索して、キーを見つけない場合は、その後、第８ルックアップ回路は、次のアドレスレジスタのアドレスとともにＰＴＬＢ０にキーを格納し、次のアドレスレジスタを増加させ、キーとアドレスをアドレスが割り当てられている読出修正書込回路７２０に伝送する。
新しい合算集計動作がスタートされるたびに、次のアドレスレジスタが「０」に初期化される。
クロスバースイッチ内での衝突は、競合する出力における仲裁を有することにより、解決されることができる。
衝突が発生する速度は、入力キーの時間的位置に依存する。
シーケンシャルキーを８つの断片に分散させることは、並列処理を可能にし、衝突を減少させることができる。
【００５１】
いくつかの実施形態で、データベースのオフローディングエンジンは、ホストに対する「ＮＶＤＩＭＭ−ｐ」（又は、メモリチャネル）インターフェースを有する（そして、データベースのオフローディングエンジンは、「ＮＶＤＩＭＭ−ｐ」のフォームファクタにパッケージングされる）。
その後、ホストは、メモリへの非同期アクセスを収容するオペレーティングシステムコールを通してデータベースのオフローディングエンジンと相互作用する。
このような非同期インターフェースは、データベースのオフローディングエンジンにおいて動作の実行を容易にする（同期式メモリインターフェースが使用される場合、受け入れられない遅延を引き起こす可能性がある）。
このような動作は、ホストにとってメモリに見えるハードウェア構成要素で実行されるとき、ＦＩＭ（Ｆｕｎｃｔｉｏｎ−ｉｎ−Ｍｅｍｏｒｙ）処理と称され得る。
【００５２】
図８は、本発明の実施形態によるデータベースの処理システムの概略構成を示すハードウェア及びソフトウェアのブロック図である。
図８を参照すると、このようないくつかの実施形態で、例えば、「ＳＡＰ  ＨＡＮＡ」データベースアプリケーションなどのようなデータベースアプリケーション８０５は、ＦＩＭソフトウェアのインターフェースとして動作するドライバ層４１０を含むオペレーティングシステム８１０内で実行する。
【００５３】
ホストＣＰＵ８１５（プロセッサ）は、コントローラ８２０（データベースのオフローディングエンジンが「ＮＶＤＩＭＭ−ｐ」インターフェースを有する場合、ＤＲＡＭ  ＤＩＭＭメモリ及び「ＮＶＤＩＭＭ−ｐ」メモリの両方をサポートするメモリコントローラであり得るか、あるいはデータベースのオフローディングエンジンがＰＣＩｅインターフェースを有する場合、メモリコントローラ及びＰＣＩｅコントローラの組み合わせであり得る）を介してホストメインメモリ８２５及びデータベースのオフローディングエンジンと通信することができる。
【００５４】
データベースのオフローディングエンジンが「ＮＶＤＩＭＭ−ｐ」インターフェースを有する場合には、ホスト上で実行中のデータベースアプリケーション８０５は、データベースのオフローディングエンジンのメモリ（例えば、図４のメモリ４４０）を使用して、テーブルスキャン動作又は合算集計動作が実行されるかどうかに関係なく、データベースのテーブルを格納する。
多様なデータベース動作がテーブル上で実行され、結果は、データベースのオフローディングエンジンのメモリの他のテーブルに格納される。
テーブルスキャン動作又は合算集計動作が必要なときに、ホストＣＰＵは、データベースのオフローディングエンジンによってデータベースのオフローディングエンジンのメモリに既に存在するテーブル上で動作を実行するように簡単に指示することができる。
【００５５】
一方で、データベースのオフローディングエンジンがＰＣＩｅインターフェースを有する場合、一般的にデータベースのオフローディングエンジンのメモリにテーブルを格納することが非効率的であり得る。
これは、テーブルのデータ上でホストＣＰＵの動作を実行する速度が、ＰＣＩｅインターフェースを介してホストＣＰＵとデータをやり取りする必要により大幅に減少する可能性がある。
したがって、データベースのオフローディングエンジンがＰＣＩｅインターフェースを有する場合には、データベースのテーブルは、一般的に、ホストのメインメモリ８２５に格納され、テーブルスキャン動作又は合算集計動作をデータベースのオフローディングエンジン上で実行するための必要に応じてデータベースのオフローディングエンジンのメモリにコピーされる。
このような実施形態でデータベースのオフローディングエンジンへ、又はデータベースのオフローディングエンジンからテーブルをコピーする必要があるため、一般的にデータベースのオフローディングエンジンが「ＮＶＤＩＭＭ−ｐ」インターフェースを有する実施形態が、データベースのオフローディングエンジンがＰＣＩｅインタフェースを有する実施形態より優れている。
【００５６】
図９Ａ及び図９Ｂは、本発明の実施形態によるデータベース処理動作を説明するためのプロセスフローチャートである。
図９Ａを参照すると、データベースのオフローディングエンジンが「ＮＶＤＩＭＭ−ｐ」インタフェースを有する実施形態で、臨時の（又は「一時的な」）データがホストメインメモリ８２５に格納される。
【００５７】
データベースのメインストア（又は「Ｈａｎａメインストア」）は、ホストＣＰＵと、ホストＣＰＵ上で動作するデータベースアプリケーション８０５及びドライバ層（又は複数のドライバ層）４１０が制御レジスタ５０５のセットを使用してインターフェースするデータオフローディングエンジンのメモリに格納するか、又はそのデータオフローディングエンジンと接続されたメモリ４４０に格納する。
データベースの動作は、ソース（ｓｏｕｒｃｅ）データを形成するために、データベースのメインストアにおいて１つ以上のテーブルを圧縮解除し、デスティネーションデータ（ｄｅｓｔｉｎａｔｉｏｎ  ｄａｔａ）を形成するために、ソースデータ（ホストＣＰＵが実行するデータベース動作又はデータベースのオフローディングエンジンによるテーブルスキャン動作又は合算集計動作とともに）を処理することを含む。
【００５８】
このような実施形態で、ホストは、クエリプラン（ｑｕｅｒｙ  ｐｌａｎ）を生成することができ、デバイスドライバが合算動作又はテーブルスキャン動作を実行するように、オフローディングエンジンに命令するオフローディングＡＰＩ内の関数を呼び出す。
その後、データベースのオフローディングエンジンは、必要に応じてデータベースのメインストア内のテーブルのデータを圧縮解除し、メモリのソース領域に圧縮解除されたデータを格納し、合算集計動作又はテーブルスキャン動作をパイプライン方式及びベクトル化された方式で行い、メモリのデスティネーション領域に合算集計動作又はテーブルスキャン動作の結果を格納する。
その後、ホストはメモリのデスティネーション領域から結果を読み出し、必要に応じて追加のデータベース動作を実行する。
【００５９】
図９Ｂを参照すると、データベースのオフローディングエンジンがＰＣＩｅインターフェースを有する実施形態であって、データベースのメインストアは、代わりにホストのメインメモリ８２５に有る。
テーブルスキャン動作又は合算集計動作を実行するために、圧縮されたデータは、ダイレクトメモリアクセス（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ：ＤＭＡ）（例えば、データベースのオフローディングエンジンによって開始されたＤＭＡ）を使用して、ホストのメインメモリ８２５からデータベースのオフローディングエンジンの（又はデータベースのオフローディングエンジンと接続された）メモリ４４０にコピーされ、ソースデータを形成するために、データベースのオフローディングエンジンで圧縮解除され、デスティネーションデータを形成するために（テーブルスキャン動作又は合算集計動作とともに）処理される。
【００６０】
このような実施形態で、ホストは、クエリプランを生成し、デバイスドライバが合算集計動作又はテーブルスキャン動作を実行するように、オフローディングエンジンに命令を与えるオフローディングのＡＰＩ内の関数を呼び出す。
データベースのオフローディングエンジンは、ＤＭＡを使用して、ホストのメインメモリ８２５のデータベースのメインストアからデータベースのオフローディングエンジンのメモリのソース領域へホストメインデータをコピーする。
その後、データベースのオフローディングエンジンは、必要に応じて、メモリのソース領域からテーブルデータを圧縮解除して、メモリのソース領域に圧縮されていないデータを格納し、合算集計動作又はテーブルスキャン動作をパイプライン方式及びベクトル化された方式で行い、メモリのデスティネーション領域に合算集計動作又はテーブルスキャン動作の結果を格納する。
その後、ホストは、ＰＣＩｅインターフェースを介して、メモリのデスティネーション領域から結果を読み出し、必要に応じて追加のデータベース動作を実行する。
【００６１】
たとえ、データベースのオフローディングエンジンの例としての実施形態を本明細書で具体的に図示、説明したが、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多くの修正及び変更実施することが可能である。
【符号の説明】
【００６２】
１０５    ホスト
１１０    データベースのオフローディングエンジン
４０５    データベースアプリケーション
４１０    ドライバ層
４１５    ＰＣＩｅインターフェース
４２０    第１並列化回路
４２５    オフローディング回路
４３０    第２並列化回路
４３５    メモリインターフェース回路
４４０    メモリ
５０５    制御レジスタ
５１０    ベクトル化されたテーブルスキャニング回路
５１５    テーブルスキャニング回路
５２０    合算集計回路
５２５    プリフェッチ回路
５３０    メモリ読み出し回路
５３５    メモリ書き込み回路
６０５    条件テスト回路
６１０    入力バッファ
６１５    出力バッファ
６２０    レジスタ
７０５    制御回路
７１０    ベクトル化された加算器
７１５    プリフェッチバッファ
７２０    読出修正書込回路
７２５    合計バッファ
７３０    ルックアップ回路
７３５    キーアドレステーブルバッファ
７４０    キーアドレステーブル
７４５    第１の８ｘ８クロスバースイッチ
７５０    第２の８ｘ８クロスバースイッチ
【図１】
2020053041.tif 000003
【図２】
2020053041.tif 000004
【図３】
2020053041.tif 000005
【図４】
2020053041.tif 000006
【図５】
2020053041.tif 000007
【図６】
2020053041.tif 000008
【図７】
2020053041.tif 000009
【図８】
2020053041.tif 000010
【図９Ａ】
2020053041.tif 000011
【図９Ｂ】
2020053041.tif 000012