(57)【要約】  プロセッサとメモリとを有する計算機と、前記計算機に接続されてデータを格納するストレージ装置は、不揮発性半導体記憶部に対する読み書きを制御する制御部からデータと演算コマンドを取得してデータの演算を行うＦＰＧＡを有し、前記計算機が、受け付けたアクセス要求から演算コマンドを生成してストレージ装置に送信し、前記計算機が、ストレージ装置から演算コマンドの実行結果を受信し、演算コマンドの実行結果の数が所定値になると、ＦＰＧＡにソフトエラーの検出を指令し、生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には実行結果を送信する。
2017002157.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサとメモリとを有する計算機と、
前記計算機に接続されてデータを格納するストレージ装置と、を有する計算機システムであって、
前記ストレージ装置は、
不揮発性半導体メモリを有して、データを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御する制御部と、
前記制御部から前記データと演算コマンドを取得して、前記演算コマンドに応じて前記データの演算を行うＦＰＧＡと、を有し、
前記計算機は、
前記データへのアクセス要求を受け付ける受信部と、
前記アクセス要求から１以上の演算コマンドを生成するコマンド生成部と、
前記ストレージ装置に前記演算コマンドを送信するコマンド送信部と、
前記ストレージ装置から前記演算コマンドの実行結果を受信する演算結果受信部と、
前記演算コマンドの実行結果を集約する集約部と、
前記集約した演算コマンドの実行結果を応答する応答部と、
前記ＦＰＧＡのソフトエラーを検出するＦＰＧＡチェック部と、を有し、
前記ＦＰＧＡチェック部は、
前記演算コマンドの実行結果の数が所定値になると、前記ＦＰＧＡにソフトエラーの検出を指令し、前記ＦＰＧＡからソフトエラーの有無を受信し、
前記応答部は、
前記生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には前記集約した実行結果を送信することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記不揮発性半導体記憶部のデータはデータベースであって、
前記アクセス要求は、前記データベースに対するＳＱＬを含み、
前記コマンド生成部は、前記ＳＱＬに対応する１以上の演算コマンドを生成することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記計算機は、
前記ＳＱＬで使用する演算コマンドを格納するコマンド管理情報と、
前記ＦＰＧＡに設定された演算コマンドを実行する演算要素の識別子を格納するフレーム管理情報と、を有し、
前記ＦＰＧＡチェック部は、
前記演算コマンドで実行された前記ＦＰＧＡの演算要素の識別子を指定してソフトエラーの検出を指令することを特徴とする計算機システム。
【請求項４】
請求項１に記載の計算機システムであって、
前記ＦＰＧＡチェック部は、
前記ＦＰＧＡからソフトエラーを検出した場合には、当該ＦＰＧＡに修復コマンドを発行することを特徴とする計算機システム。
【請求項５】
請求項４に記載の計算機システムであって、
前記コマンド送信部は、前記ＦＰＧＡが修復コマンドを完了した後に、再度前記生成した演算コマンドを前記ストレージ装置に送信することを特徴とする計算機システム。
【請求項６】
請求項１に記載の計算機システムであって、
前記所定値は、前記コマンド生成部が生成した演算コマンドの数であって、
前記ＦＰＧＡチェック部は、
前記演算コマンドが全て完了した後に、前記ＦＰＧＡにソフトエラーの検出を指令する
ことを特徴とする計算機システム。
【請求項７】
プロセッサとメモリとを有する計算機と、前記計算機に接続されてデータを格納するストレージ装置と、を制御する計算機システムの制御方法であって、
前記ストレージ装置は、
不揮発性半導体メモリを有して、データを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御する制御部と、
前記制御部から前記データと演算コマンドを取得して、前記演算コマンドに応じて前記データの演算を行うＦＰＧＡと、を有し、
前記制御方法は、
前記計算機が、前記データへのアクセス要求を受け付ける第１のステップと、
前記計算機が、前記アクセス要求から１以上の演算コマンドを生成する第２のステップと、
前記計算機が、前記ストレージ装置に前記演算コマンドを送信する第３のステップと、
前記計算機が、前記ストレージ装置から前記演算コマンドの実行結果を受信する第４のステップと、
前記計算機が、前記演算コマンドの実行結果を集約する第５のステップと、
前記計算機が、前記演算コマンドの実行結果の数が所定値になると、前記ＦＰＧＡにソフトエラーの検出を指令し、前記ＦＰＧＡからソフトエラーの有無を受信する第６のステップと、
前記計算機が、前記生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には前記集約した実行結果を送信する第７のステップと、
を含むことを特徴とする計算機システムの制御方法。
【請求項８】
請求項７に記載の計算機システムの制御方法であって、
前記不揮発性半導体記憶部のデータはデータベースであって、
前記アクセス要求は、前記データベースに対するＳＱＬを含み、
前記第２のステップは、前記ＳＱＬに対応する１以上の演算コマンドを生成することを特徴とする計算機システムの制御方法。
【請求項９】
請求項８に記載の計算機システムの制御方法であって、
前記第６のステップは、
前記ＳＱＬで使用する演算コマンドを格納するコマンド管理情報と、前記ＦＰＧＡに設定された演算コマンドを実行する演算要素の識別子を格納するフレーム管理情報と、から前記演算コマンドで実行された前記ＦＰＧＡの演算要素の識別子を指定してソフトエラーの検出を指令することを特徴とする計算機システムの制御方法。
【請求項１０】
請求項７に記載の計算機システムの制御方法であって、
前記第６のステップは、
前記ＦＰＧＡからソフトエラーを検出した場合には、当該ＦＰＧＡに修復コマンドを発行することを特徴とする計算機システムの制御方法。
【請求項１１】
請求項１０に記載の計算機システムの制御方法であって、
前記第３のステップは、
前記ＦＰＧＡが修復コマンドを完了した後に、再度前記生成した演算コマンドを前記ストレージ装置に送信することを特徴とする計算機システムの制御方法。
【請求項１２】
請求項７に記載の計算機システムの制御方法であって、
前記所定値は、前記第２のステップで生成した演算コマンドの数であって、
前記第６のステップは、
前記演算コマンドが全て完了した後に、前記ＦＰＧＡにソフトエラーの検出を指令する
ことを特徴とする計算機システムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＰＧＡを用いたアクセラレータを有する計算機システムに関する。
【背景技術】
【０００２】
近年、ＦＰＧＡ（Field-Programmable Gate Array）を用いてデータ処理の一部を実行する技術が用いられている。例えば、特許文献１では、計算機にＦＰＧＡを含むデバイスを付加し、当該デバイスによってデータ処理を実行している。【０００３】
ＦＰＧＡを用いた場合、中性子の衝突などによりハードウェアの実行結果などが異常になるソフトエラーが発生する可能性がある。【０００４】
非特許文献１に示すように、ＦＰＧＡのベンダは、ソフトエラーの検知及び修正機能を提供している。ＦＰＧＡのベンダが適用するソフトエラーチェック機能では、ＦＰＧＡをフレームと呼ばれる小領域に分割し、各フレームに対する誤り検出符号（ＣＲＣ）を予め算出しておく。そして、ＦＰＧＡのチェック機能は、ＣＲＣを用いて該当フレームにおけるエラーの有無を判定し、エラーがある場合には、エラー信号をＦＰＧＡの外部に送信する。また、特許文献２では、検出部がソフトエラーを検出すると、通信制御部が、通信装置と上位装置との通信パスの状態をビジー状態に遷移させることを特徴とするストレージ制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第８０９５５０８号明細書
【特許文献２】米国特許出願公開第２０１４／００９５９２８号明細書
【非特許文献】
【０００６】
【非特許文献１】ＡＬＴＥＲＡ、Ａｐｐｌｉｃａｔｉｏｎ  Ｎｏｔｅ  ３５７：“Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  ａｎｄ  Ｒｅｃｏｖｅｒｙ  Ｕｓｉｎｇ  ＣＲＣ  ｉｎ  Ａｌｔｅｒａ  ＦＰＧＡ  Ｄｅｖｉｃｅｓ“
【発明の概要】
【発明が解決しようとする課題】
【０００７】
非特許文献１に開示されるように、ＦＰＧＡのソフトエラーのチェックには数ｍｓから数秒の時間を要する。そのため、ＦＰＧＡでデータ処理を実行する際、コマンドを実行させる度にソフトエラーチェックを行うと、ソフトエラーチェックに要する時間が増大する、という問題があった。また、ＦＰＧＡ回路全体のエラーチェックを行うと、エラーチェックに要する時間が増大する。【０００８】
そこで本発明は、上記問題点に鑑みて成されたもので、ソフトエラーチェックを実施しながらも、ＦＰＧＡでデータ処理を実行する際に処理時間が増大するのを抑制することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、プロセッサとメモリとを有する計算機と、前記計算機に接続されてデータを格納するストレージ装置と、を有する計算機システムであって、前記ストレージ装置は、不揮発性半導体メモリを有して、データを格納する不揮発性半導体記憶部と、前記不揮発性半導体記憶部に対する読み書きを制御する制御部と、前記制御部から前記データと演算コマンドを取得して、前記演算コマンドに応じて前記データの演算を行うＦＰＧＡと、を有し、前記計算機は、前記データへのアクセス要求を受け付ける受信部と、前記アクセス要求から１以上の演算コマンドを生成するコマンド生成部と、前記ストレージ装置に前記演算コマンドを送信するコマンド送信部と、前記ストレージ装置から前記演算コマンドの実行結果を受信する演算結果受信部と、前記演算コマンドの実行結果を集約する集約部と、前記集約した演算コマンドの実行結果を応答する応答部と、前記ＦＰＧＡのソフトエラーを検出するＦＰＧＡチェック部と、を有し、前記ＦＰＧＡチェック部は、前記演算コマンドの実行結果の数が所定値になると、前記ＦＰＧＡにソフトエラーの検出を指令し、前記ＦＰＧＡからソフトエラーの有無を受信し、前記応答部は、前記生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には前記集約した実行結果を送信する。
【発明の効果】
【００１０】
本発明によれば、計算機は、ＦＰＧＡ含むストレージ装置に複数のコマンドを発行した後にＦＰＧＡのソフトエラーの検出処理を実施するので、一つ一つのコマンドに対してソフトエラーチェックを実行する場合と比較して、ソフトエラーの検出に要する時間を短縮することが可能となる。また、計算機は、発行したコマンドで使用したＦＰＧＡの領域に対してのみ、ソフトエラーの検出処理を実行するため、ソフトエラーの検出処理に要する時間を短縮することが可能となる。
【図面の簡単な説明】
【００１１】
【図１】本発明の第１の実施例を示し、計算機システムの一例を示すブロック図である。
【図２】本発明の第１の実施例を示し、ＤＢＭＳの機能の一例を示すブロック図である。
【図３】本発明の第１の実施例を示し、フレーム管理テーブルの一例を示す図である。
【図４】本発明の第１の実施例を示し、データベース演算回路のフレームの一例を示す図である。
【図５】本発明の第１の実施例を示し、コマンド管理テーブルの一例を示す図である。
【図６】本発明の第１の実施例を示し、サーバがデータベース演算回路に発行するコマンドの一例を示す図である。
【図７】本発明の第１の実施例を示し、サーバで行われる処理の一例示すフローチャートである。
【図８】本発明の第２の実施例を示し、サーバで行われる処理の一例示すフローチャートである。
【図９】本発明の第３の実施例を示し、サーバで行われる処理の一例示すフローチャートである。
【図１０】本発明の第４の実施例を示し、計算機システムの一例を示すブロック図である。
【発明を実施するための形態】
【００１２】
以下、本発明の一実施形態について添付図面を用いて説明する。
【実施例１】
【００１３】
図１は、本発明の第１の実施例を示し、計算機システムの一例を示すブロック図である。図１は、データベース管理システム（ＤＢＭＳ）２００を実行するサーバ１００に、ストレージ装置の機能とアクセラレータの機能を含むフラッシュモジュール１５０を付加した例を示す。【００１４】
本実施例のフラッシュモジュール１５０は、データベース２５０を格納する複数のフラッシュメモリ１８０−１〜１８０−ｎと、データベース処理を実行可能なハードウェア・アクセラレータとしてのデータベース演算回路１７０とを含む。【００１５】
サーバ１００は、ＣＰＵ１０１とメモリ１０２とを含み、ＰＣＩｅｘｐｒｅｓｓ（図中ＰＣＩｅ）スイッチ１４０を介してフラッシュモジュール１５０に接続される。フラッシュモジュール１５０は、１以上のフラッシュメモリ１８０−１〜１８０−ｎと、フラッシュメモリ１８０−１〜１８０−ｎからなる半導体記憶部を制御するフラッシュモジュールコントローラ１６０と、ＦＰＧＡで構成されて所定のデータベース処理を実行するデータベース演算回路１７０とを含む。【００１６】
なお、以下の説明では、フラッシュメモリ１８０−１〜１８０−ｎの全体について説明する際には、「−」のない符号で示し、個々のフラッシュメモリ１８０−１〜１８０−ｎを特定する際には、「−」を付与した符号で示す。なお、他の構成要素の符号についても同様である。【００１７】
フラッシュモジュール１５０のフラッシュメモリ１８０には、データベース２５０が格納される。サーバ１００は、メモリ１０２にＤＢＭＳ２００のプログラムがロードされてＣＰＵ１０１によって実行される。データベース２５０はサーバ１００のＤＢＭＳ２００によって管理される。なお、ＤＢＭＳ２００のプログラムは、サーバ１００に接続されたストレージ装置（図示省略）に格納しておけば良い。【００１８】
サーバ１００で稼働するＤＢＭＳ２００は、ネットワーク４００を介して接続されたクライアント計算機３００からデータベース２５０のアクセス要求（ＳＱＬ文）を受け付ける。ＤＢＭＳ２００は、検索要求（フィルタ処理）等の所定のアクセス要求を受け付けると、複数のデータベース演算コマンドを生成してデータベース演算回路１７０にデータベース処理を指令する。【００１９】
フラッシュモジュールコントローラ１６０は、フラッシュメモリ１８０−１〜１８０−ｎに対して並列的にアクセス可能であり、複数のデータベース演算コマンドが指令されたときには、フラッシュメモリ１８０から並列的にデータベース２５０を読み込んで、データベース演算回路１７０に送信することができる。【００２０】
データベース演算回路１７０は、所定の並列度でデータベース演算コマンドを並列的に実行することができる。データベース演算回路１７０は、フラッシュモジュールコントローラ１６０から受信したデータベース２５０のデータに対して、複数のデータベース演算コマンドを平並列的に実行できる。【００２１】
また、ＦＰＧＡを含むデータベース演算回路１７０は、前記非特許文献１に記載されたソフトエラーの検出機能及び修正機能を有する。サーバ１００は、データベース演算回路１７０に対して発行したデータベース演算コマンドの数が所定の数となる度に、ソフトエラーの検出を実行する。そして、データベース演算回路１７０でソフトエラーを検出した場合には、サーバ１００がクライアント計算機３００にソフトエラーが発生したことを示す情報を送信する。【００２２】
図２は、ＤＢＭＳ２００の機能の一例を示すブロック図である。ＤＢＭＳ２００は、アクセス要求のＳＱＬを受信するＳＱＬ受信部２０３と、ＳＱＬから１以上のデータベース演算コマンドを生成するデータベース（図中ＤＢ）演算コマンド生成部２０４と、生成したデータベース演算コマンドをフラッシュモジュール１５０に送信するＤＢ演算コマンド送信部２０５と、フラッシュモジュール１５０からデータベース演算コマンドの実行結果を受信するＤＢ演算結果受信部２０８と、フラッシュモジュール１５０から受信した１以上のデータベース演算コマンドの実行結果を集約するＤＢ演算コマンド集約部２０７と、集約されたデータベース演算コマンドの実行結果をクライアント計算機３００へ送信するＳＱＬ応答部２０６と、ＦＰＧＡで構成されたデータベース演算回路１７０にソフトエラーの検出を指令するＦＰＧＡチェック部２０９と、データベース演算コマンドで使用するデータベース演算回路１７０に含まれるＦＰＧＡの演算要素であるフレームの番号を管理するフレーム管理テーブル２１０と、ＳＱＬで使用するデータベース演算コマンドを管理するコマンド管理テーブル２２０と、を含む。【００２３】
なお、本実施例１では、データベース演算回路１７０のＦＰＧＡでプログラミング（設定）可能な演算要素をフレームとしたが、ＦＰＧＡの種類に応じて変更すれば良く、例えば、プログラミング可能な演算要素が、ロジックエレメントであれば、フレーム番号に代わってロジックエレメント番号を用いることができる。換言すれば、フレーム番号はＦＰＧＡ内でプログラミング可能な演算要素の識別子であれば良い。【００２４】
ＤＢ演算コマンド生成部２０４は、ＳＱＬ受信部２０３で受信したＳＱＬがフィルタ処理などの所定のアクセス要求であれば、データベース２５０のアクセス対象の領域を複数の領域に分割し、それぞれの領域に対してデータベース演算コマンドを生成する。【００２５】
例えば、ひとつのフラッシュメモリ１８０の容量が８ＭＢの場合、受信したＳＱＬのアクセス対象の領域を、８ＭＢの領域に分割してそれぞれデータベース演算コマンドを生成する。そして、ＤＢ演算コマンド送信部２０５は、データベース演算回路１７０に対して複数のデータベース演算コマンドを発行する。なお、データベース２５０の更新要求等は、ＤＢＭＳ２００がフラッシュモジュールコントローラ１６０にデータベース２５０の更新を指令することで実行される。【００２６】
データベース演算回路１７０は、データベース演算コマンドを受信すると、データベース演算コマンドに記載されたデータ領域のデータの読み出しを、フラッシュモジュールコントローラ１６０に要求する。フラッシュモジュールコントローラ１６０は、要求されたデータをフラッシュメモリ１８０から読み出して、データベース演算回路１７０に送信する。データベース演算回路１７０は、受信したデータに対して所定のデータベース演算コマンド（フィルタ処理、集約演算処理等）によるデータ処理を実行して、実行結果をＤＢ演算結果受信部２０８に送信する。【００２７】
なお、フラッシュモジュールコントローラ１６０は、フラッシュメモリ１８０−１〜１８０−ｎ毎に並列的にアクセスする。また、データベース演算回路１７０は、予め設定された並列度で受信したデータに対してそれぞれデータベース演算コマンドを実行する。ＤＢＭＳ２００は、データベース演算回路１７０が所定の並列度で実行したデータベース演算コマンドの結果をＤＢ演算結果受信部２０８で受け付ける。【００２８】
そして、ＤＢ演算結果受信部２０８で受け付けた複数のデータベース演算コマンドの実行結果は、ＤＢ演算コマンド集約部２０７で集約される。ＳＱＬ応答部２０６は、ＤＢ演算コマンド生成部２０４が生成した全てのデータベース演算コマンドについて、ＤＢ演算コマンド集約部２０７の集約が完了すると、ＦＰＧＡチェック部２０９を起動する。【００２９】
ＦＰＧＡチェック部２０９は、コマンド管理テーブル２２０とフレーム管理テーブル２１０を参照し、データベース演算コマンドの内容に基づいて、データベース演算回路１７０で使用したフレーム番号を特定する。そして、ＦＰＧＡチェック部２０９は、データベース演算回路１７０のＦＰＧＡのうち、データベース演算コマンドで使用したフレームのみについてソフトエラーの検出を実施する。【００３０】
ＦＰＧＡチェック部２０９は、ソフトエラーの検出結果をＳＱＬ応答部２０６に送信する。ＳＱＬ応答部２０６は、ソフトエラーが発生していなければ、ＤＢ演算コマンド集約部２０７の集約結果をクライアント計算機３００に送信する。一方、ＳＱＬ応答部２０６は、ＦＰＧＡにソフトエラーが発生していければ、クライアント計算機３００にソフトエラーが発生したことを示す情報を送信する。【００３１】
以上の処理で、ＤＢＭＳ２００は、受け付けたアクセス要求から複数のデータベース演算コマンドを生成してデータベース演算回路１７０のＦＰＧＡで実行させる。そして、アクセス要求のＳＱＬに対応する全てのデータベース演算コマンドが完了してから、ＦＰＧＡチェック部２０９が、データベース演算回路１７０のＦＰＧＡのソフトエラーの検出を実施する。【００３２】
これにより、ＤＢＭＳ２００は、複数のデータベース演算コマンドのそれぞれが実行完了する度にソフトエラーの検出を行うことはなく、データベース演算コマンドが所定数（本実施例では全て）に達するとソフトエラーの検出をまとめて実施する。これにより、ひとつひとつのデータベース演算コマンドの実行完了でソフトエラーの検出を行うのに必要な処理時間を抑制することができ、ＦＰＧＡを有するデータベース演算回路１７０の処理を高速に行うことができる。【００３３】
また、ＤＢＭＳ２００は、データベース演算コマンドの内容に応じて、データベース演算回路１７０を構成するＦＰＧＡのフレーム番号を特定し、特定したフレームのみについてソフトエラーの検出を行うので、ＦＰＧＡ全体のソフトエラーを検出するのに比して処理時間を短縮することが可能となって、データベース演算を高速化することができる。【００３４】
ＳＱＬ受信部２０３と、ＤＢ演算コマンド生成部２０４と、ＤＢ演算コマンド送信部２０５と、ＤＢ演算結果受信部２０８と、ＤＢ演算コマンド集約部２０７と、ＳＱＬ応答部２０６と、ＦＰＧＡチェック部２０９のＤＢＭＳ２００を構成する各機能部はプログラムとしてメモリ１０２にロードされる。【００３５】
ＣＰＵ１０１は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、ＣＰＵ１０１は、ＤＢＭＳプログラムに従って処理することでＤＢＭＳ２００として機能する。他のプログラムについても同様である。さらに、ＣＰＵ１０１は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。【００３６】
図３は、ＤＢＭＳ２００のフレーム管理テーブル２１０の一例を示す図である。フレーム管理テーブル２１０は、データベース演算コマンドの名称を格納するＤＢ演算コマンド名２１１と、データベース演算回路１７０を構成するＦＰＧＡのフレーム番号を格納するフレーム番号２１２と、をひとつのエントリに含む。【００３７】
図示の例では、ＳＱＬで使用されるフィルタコマンドが、データベース演算回路１７０を構成するＦＰＧＡのフレーム番号のうち「１、２、３、１００、１０２」を使用していることを示す。【００３８】
図４は、データベース演算回路１７０のＦＰＧＡのフレームの一例を示す図である。データベース演算回路１７０のＦＰＧＡは、フレーム２３０−１〜２３０−ｍのプログラマブルな領域を有し、これらのフレーム番号が「１」〜「ｍ」の例を示している。図３で示したように、サーバ１００の管理者などが、データベース演算コマンド名２１１毎に、使用するフレーム番号を決定して、ＦＰＧＡの機能を設定する。【００３９】
図５は、ＤＢＭＳ２００のコマンド管理テーブル２２０の一例を示す図である。コマンド管理テーブル２２０は、受信したＳＱＬのシリアル番号を格納するＳＱＬ番号２２１と、当該ＳＱＬに含まれるデータベース演算コマンドの名称（または識別子）を格納するＤＢ演算コマンド名２２２とをひとつのエントリに含む。【００４０】
ＳＱＬ受信部２０３は、アクセス要求としてのＳＱＬを受信すると、該ＳＱＬに所定の番号を付与して、コマンド管理テーブル２２０にエントリを追加し、ＳＱＬに含まれるデータベース演算コマンドの名称をＤＢ演算コマンド名２２２に格納する。コマンド管理テーブル２２０により、サーバ１００で実行するＳＱＬが使用するデータベース演算コマンドを特定することができる。【００４１】
図６は、ＤＢＭＳ２００がデータベース演算回路１７０に発行するデータベース演算コマンド５００の一例を示す図である。データベース演算コマンド５００は、コマンド名５０１が“フィルタコマンド”の例を示す。このコマンド５００では、読み込みの開始位置を示す開始ＬＢＡ（Logical Block Address）５０２＝“１０００”、読み込みの終了位置を示す終了ＬＢＡ５０３＝“２０００”、フィルタ条件５０４＝Ｘ、列抽出条件５０５＝Ｙに設定された例を示す。ＤＢ演算コマンド生成部２０４は、受信したＳＱＬを実行するために、複数のデータベース演算コマンド５００を生成する。【００４２】
フィルタ条件５０４と列抽出条件５０５は、データベース演算回路１７０で行う処理を決定するためのパラメータである。ＤＢ演算コマンド生成部２０４は、該ＳＱＬを実行するために、８ＭＢなどの領域ごとにデータベース演算コマンド５００を生成する。そのため、一つのＳＱＬに対して、複数のデータベース演算コマンド５００が生成される。ＤＢ演算コマンド生成部２０４が、該ＳＱＬの番号と、該ＳＱＬを実行するために使用したデータベース演算コマンド５００の名称を、コマンド管理テーブル２２０に格納する。【００４３】
ＤＢ演算コマンド送信部２０５は、生成された複数のデータベース演算コマンド５００をフラッシュモジュール１５０に送信する。【００４４】
図７は、サーバ１００で行われる処理の一例示すフローチャートである。この処理は、ＤＢＭＳ２００がデータベース２５０へのアクセス要求を受信したときに実行される。【００４５】
ＤＢＭＳ２００は、ネットワーク４００からクライアント計算機３００のアクセス要求としてのＳＱＬを受信する（Ｓ１）。ＤＢＭＳ２００は、ＳＱＬから１以上のデータベース演算コマンド５００を生成する（Ｓ２）。【００４６】
ＤＢＭＳ２００は、生成したデータベース演算コマンド５００をフラッシュモジュール１５０に送信する（Ｓ３）。フラッシュモジュール１５０では、フラッシュモジュールコントローラ１６０がフラッシュメモリ１８０のデータベース２５０からデータベース演算コマンドに応じたデータを読み込んで、データベース演算回路１７０へデータとデータベース演算コマンド５００を送信する。データベース演算回路１７０は、受信したデータについてデータベース演算コマンド５００を実行して結果をＤＢＭＳ２００に送信する。【００４７】
ＤＢＭＳ２００は、フラッシュモジュール１５０からデータベース演算コマンド５００の実行結果を受信する（Ｓ４）。次に、ＤＢＭＳ２００は、ＳＱＬに対応する全てのデータベース演算コマンド５００について実行結果を受信したか否かを判定する（Ｓ５）。ＤＢＭＳ２００は、ＳＱＬに対応するデータベース演算コマンド５００の実行結果を全て受信していればステップＳ６へ進む。一方、まだ受信していないデータベース演算コマンド５００が存在すればステップＳ４に戻る。【００４８】
ステップＳ６では、ＤＢＭＳ２００が、コマンド管理テーブル２２０を参照して、現在実行したＳＱＬ番号２２１に対応するＤＢ演算コマンド名２２２を取得する。そして、ＤＢＭＳ２００は、フレーム管理テーブル２１０から取得したＤＢ演算コマンド名２１１に対応するフレーム番号２１２を取得する。ＤＢＭＳ２００は、取得したフレーム番号２１２（演算要素の識別子）を指定してソフトエラーの検出を実施するようフラッシュモジュール１５０のデータベース演算回路１７０に指令する。【００４９】
ＤＢＭＳ２００は、データベース演算回路１７０からソフトエラーの検出結果を受信すると（Ｓ７）、ソフトエラーの有無を判定する（Ｓ８）。ＤＢＭＳ２００は、ソフトエラーが発生していなければ、ステップＳ９へ進んで上述の集約処理を適用したデータベース演算コマンドの実行結果をクライアント計算機３００に送信して処理を終了する。【００５０】
一方、ソフトエラーが発生している場合、ＤＢＭＳ２００は、ステップＳ１０へ進んでデータベース演算回路１７０のＦＰＧＡでソフトエラーが発生したことをクライアント計算機３００に通知して処理を終了する。この場合、ＤＢＭＳ２００は、フラッシュモジュール１５０から受信したデータベース演算コマンドの実行結果を破棄する。【００５１】
以上の処理によって、サーバ１００のＤＢＭＳ２００は、複数のデータベース演算コマンド５００を全て実行した後にＦＰＧＡのソフトエラーの検出処理を実施するので、一つ一つのデータベース演算コマンドに対してソフトエラーの検出を実行する場合と比較して、ソフトエラーの検出に要する時間を短縮することが可能となる。これにより、サーバ１００は、ソフトエラーの検出を実施しながらも、ＦＰＧＡでデータ処理を実行する際に処理時間が増大するのを抑制することができる。【００５２】
また、サーバ１００は、データベース演算コマンドで使用したＦＰＧＡの領域（フレーム番号）に対してのみ、ソフトエラーの検出を実行するため、ソフトエラーの検出に要する時間を短縮することが可能となり、フラッシュモジュール１５０の処理性能を向上させることができる。【００５３】
なお、上記実施例１では、フラッシュモジュール１５０の内部にデータベース演算回路１７０を配置した例を示したが、データベース演算回路１７０をＰＣＩｅのデバイスとして独立させて、ＰＣＩｅスイッチ１４０に接続することもできる。【００５４】
また、上記実施例１では、フラッシュモジュール１５０にフラッシュメモリ１８０を採用する例を示したが、これに限定されるものではなく、データベース２５０を格納する不揮発性の半導体記憶装置であればよい。
【実施例２】
【００５５】
図８は、本発明の第２の実施例を示し、サーバ１００で行われる処理の一例示すフローチャートである。本実施例２では、データベース演算回路１７０がＦＰＧＡのソフトエラーを訂正する修復機能を有し、サーバ１００は、ソフトエラーを検出するとＦＰＧＡの修復をデータベース演算回路１７０に指令する。そして、サーバ１００は、修復が完了した後に、再度データベース演算コマンドを実行させる。その他の構成は前記実施例１と同様である。【００５６】
図８のステップＳ１〜Ｓ９は、前記実施例１の図７と同様であるので、重複する説明は省略する。ソフトエラーが検出されたステップＳ２０では、ＤＢＭＳ２００がデータベース演算回路１７０にＦＰＧＡの修復コマンドを発行する。【００５７】
ＤＢＭＳ２００は、データベース演算回路１７０から修復コマンドの実行完了の通知を受信すると、ステップＳ３に戻って、再度複数のデータベース演算コマンドをデータベース演算回路１７０に実行させる。【００５８】
以上の処理によって、データベース演算回路１７０でソフトエラーが発生したときには、ＤＢＭＳ２００が修復コマンドを発行してから、再度データベース演算コマンドを実行させることができる。これにより、データベース演算回路１７０のソフトエラーによる障害を回復させてからデータベース演算を実行することで、業務を継続することが可能となる。【００５９】
なお、上記ステップＳ２０では、ＤＢＭＳ２００がデータベース演算回路１７０から修復コマンドの実行完了の通知を受信する例を示したが、ＤＢＭＳ２００は修復コマンドを発行してから所定時間経過後にステップＳ３に復帰するようにしてもよい。
【実施例３】
【００６０】
図９は、本発明の第３の実施例を示し、サーバ１００で行われる処理の一例示すフローチャートである。本実施例３では、データベース２５０へのアクセス要求に大量のデータが含まれる場合、データベース演算コマンドが所定の数まで実行完了するとデータベース演算回路１７０のソフトエラーの検出を実施するものである。その他の構成は前記実施例１と同様である。【００６１】
ステップＳ３１、Ｓ３２は、図７のステップＳ１、Ｓ２と同様であり、ＤＢＭＳ２００が、クライアント計算機３００からのアクセス要求としてのＳＱＬを受信し、ＳＱＬから１以上のデータベース演算コマンド５００を生成する。【００６２】
次に、ＤＢＭＳ２００は、生成したデータベース演算コマンド５００をフラッシュモジュール１５０に発行する。【００６３】
フラッシュモジュール１５０では、フラッシュモジュールコントローラ１６０がフラッシュメモリ１８０のデータベース２５０からデータベース演算コマンドに応じたデータを読み込んで、データベース演算回路１７０へ送信する。データベース演算回路１７０は、受信したデータについてデータベース演算コマンド５００を実行して結果をＤＢＭＳ２００に送信する。【００６４】
ＤＢＭＳ２００は、フラッシュモジュール１５０からデータベース演算コマンド５００の実行結果を受信する（Ｓ３４）。ＤＢＭＳ２００は、フラッシュモジュール１５０から受信したデータベース演算コマンドの実行結果の数＝１を変数ＣＮＴに加算する。次に、ＤＢＭＳ２００は、フラッシュモジュール１５０で実行が完了したデータベース演算コマンド５００の数ＣＮＴが所定値（例えば１００）に達したか否かを判定する。【００６５】
ＤＢＭＳ２００は、実行が完了したデータベース演算コマンド５００の数ＣＮＴが所定値に達していれば、ステップＳ３５に進み、実行済みのデータベース演算コマンド５００の数ＣＮＴに達していなければステップＳ３９に進む。【００６６】
ステップＳ３５１では、前記実施例１の図７のステップＳ６と同様であり、ＤＢＭＳ２００がＦＰＧＡのフレーム単位でソフトエラーの検出を実施する。次に、ＤＢＭＳ２００は、実行が完了したデータベース演算コマンド５００の数ＣＮＴを０にリセットし（Ｓ３６）、データベース演算回路１７０からソフトエラーの検出結果を受信する（Ｓ３７）。そして、ＤＢＭＳ２００は、検出結果からソフトエラーの有無を判定し（Ｓ３８）、ソフトエラーが発生していればステップＳ４２へ進み、ソフトエラーが発生していなければステップＳ３９９へ進む。【００６７】
ソフトエラーが発生したステップＳ４２では、前記実施例２と同様に、ＤＢＭＳ２００は、データベース演算回路１７０に修復コマンドを発行してからステップ３３に復帰して、再度データベース演算コマンドを発行する。【００６８】
一方、ソフトエラーが発生していない場合には、生成したデータベース演算コマンドの全ての実行結果を受信したか否かを判定する（Ｓ３９）。ＤＢＭＳ２００は、ＳＱＬに対応するデータベース演算コマンド５００の実行結果を全て受信していればステップＳ４０へ進む。一方、まだ受信していないデータベース演算コマンド５００が存在すればステップＳ３３に戻って残りのデータベース演算コマンドを発行する。【００６９】
ステップＳ４０では、実行済みのデータベース演算コマンドの数を示す変数ＣＮＴが０より大であれば、ソフトエラーの検出が未了の実行結果があるので、ＤＢＭＳ２００は、ステップ３５に戻って上記ソフトエラーの検出処理を繰り返す。【００７０】
一方、変数ＣＮＴが０であれば、全てのデータベース演算コマンドの実行が完了し、かつ、全てのデータベース演算コマンドの実行結果についてデータベース演算コマンドで使用したＦＰＧＡでソフトエラーが無いことを検出しているので、ＤＢＭＳ２００は、全ての実行結果を集約してからクライアント計算機３００に送信する（Ｓ４１）。【００７１】
以上の処理により、ＤＢＭＳ２００は、データベース演算コマンドの実行数が所定値となる度に、データベース演算回路１７０のＦＰＧＡのソフトエラーの検出処理が実行し、ソフトエラーが発生している場合には修復コマンドを発行した後に再度データベース演算コマンドを発行する。【００７２】
本実施例３では、全てのデータベース演算コマンドが完了する以前に、データベース演算コマンドの実行数ＣＮＴが所定値となる度にＦＰＧＡのソフトエラーの検出処理を実行するので、大量のデータをデータベース演算回路１７０で効率よく処理させることができる。すなわち、全てのデータベース演算コマンドが完了してからソフトエラーの検出を行ってソフトエラーが発生していた場合、再度全てのデータベース演算コマンドを実行させると処理時間が増大することになる。【００７３】
これに対して、ＤＢＭＳ２００は、データベース演算コマンドの実行数ＣＮＴが所定値となる度にソフトエラーの検出処理を実行するので、ソフトエラーが発生した後にデータベース演算コマンドを再実行する量を低減して、ソフトエラー発生時の全体的な処理時間を短縮することが可能となる。
【実施例４】
【００７４】
図１０は、本発明の第４の実施例を示し、計算機システムの一例を示すブロック図である。実施例４では、前記実施例１に示したＤＢＭＳ２００に代わって、ファイルサーチサービス２６０をクライアント計算機３００に提供する例を示す。【００７５】
本実施例４では、前記実施例１のデータベース２５０に代わって１以上のファイル２７０がフラッシュモジュール１５０のフラッシュメモリ１８０に格納され、データベース演算回路１７０に代わってＦＰＧＡで構成されたファイルサーチ回路１９０がフラッシュモジュール１５０に組み込まれる。【００７６】
サーバ１００のメモリ１０２には、前記実施例１のＤＢＭＳ２００に代わって、ファイルサーチサービス２６０が格納される。ファイルサーチサービス２６０は、クライアント計算機３００から検索対象文字列を受け付けて、フラッシュメモリ１８０から検索対象文字列を含むファイル２７０を選択し、クライアント計算機３００へ通知する。【００７７】
ファイルサーチサービス２６０は、前記実施例１のＤＢＭＳ２００と同様に、検索対象文字列から複数の検索コマンドを生成してフラッシュモジュール１５０に発行する。フラッシュモジュール１５０では、フラッシュモジュールコントローラ１６０が、複数の検索コマンドで指定されたデータをファイル２７０から取得してファイルサーチ回路１９０に送信する。【００７８】
ファイルサーチ回路１９０は、受信したデータに対して複数の検索コマンドを実行し、検索コマンドの実行結果をサーバ１００へ送信する。サーバ１００のファイルサーチサービス２６０は、全ての検索コマンドの実行が完了すると、ファイルサーチ回路１９０にソフトエラーの検出処理を実行する。そして、ソフトエラーが発生していなければ、前記実施例１と同様に検索コマンドの実行結果を集約してからクライアント計算機３００に応答する。【００７９】
一方、ソフトエラーが発生していれば、ファイルサーチサービス２６０は、前記実施例１と同様にソフトエラーが発生したことをクライアント計算機３００に通知する。あるいは、前記実施例２と同様にして、ファイルサーチサービス２６０は、ファイルサーチ回路１９０にＦＰＧＡの修復コマンドを発行してから再度検索コマンドを実行する。【００８０】
以上の処理によって、複数の検索コマンドを全て実行した後にＦＰＧＡのソフトエラーの検出を実施するので、一つ一つのデータベース演算コマンドに対してソフトエラーの検出を実行する場合と比較して、ソフトエラーの検出に要する時間を短縮することが可能となる。これにより、ソフトエラーの検出を実施しながらも、ＦＰＧＡでデータ処理を実行する際に処理時間が増大するのを抑制することができる。【００８１】
また、前記実施例１と同様に、検索コマンドで使用したＦＰＧＡの領域（フレーム番号）に対してのみ、ソフトエラーの検出を実行することで、ソフトエラーの検出に要する時間を短縮することが可能となり、フラッシュモジュール１５０の処理性能を向上させることができる。【００８２】
なお、前記実施例１では本発明をデータベース２５０に適用した例を示し、前記実施例４では本発明をファイルサーチサービス２６０に適用した例を示したがこれらに限定されるものではなく、フラッシュメモリ１８０から読み込んだデータの処理を行うＦＰＧＡに適用することができる。【００８３】
＜まとめ＞
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。【００８４】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。【００８５】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【図１】
2017002157.tif 000003
【図２】
2017002157.tif 000004
【図３】
2017002157.tif 000005
【図４】
2017002157.tif 000006
【図５】
2017002157.tif 000007
【図６】
2017002157.tif 000008
【図７】
2017002157.tif 000009
【図８】
2017002157.tif 000010
【図９】
2017002157.tif 000011
【図１０】
2017002157.tif 000012
【国際調査報告】
2017002157.tif 000013
2017002157.tif 000014
2017002157.tif 000015
2017002157.tif 000016