JP6359190B2 - 計算機システム及び計算機システムの制御方法 - Google Patents
計算機システム及び計算機システムの制御方法 Download PDFInfo
- Publication number
- JP6359190B2 JP6359190B2 JP2017525695A JP2017525695A JP6359190B2 JP 6359190 B2 JP6359190 B2 JP 6359190B2 JP 2017525695 A JP2017525695 A JP 2017525695A JP 2017525695 A JP2017525695 A JP 2017525695A JP 6359190 B2 JP6359190 B2 JP 6359190B2
- Authority
- JP
- Japan
- Prior art keywords
- command
- fpga
- computer system
- soft error
- calculation
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 29
- 238000001514 detection method Methods 0.000 claims description 32
- 230000015654 memory Effects 0.000 claims description 24
- 230000008439 repair process Effects 0.000 claims description 15
- 239000004065 semiconductor Substances 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 7
- 230000004931 aggregating effect Effects 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 44
- 230000006870 function Effects 0.000 description 19
- 230000008569 process Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 10
- 230000002776 aggregation Effects 0.000 description 9
- 238000004220 aggregation Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input 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/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
Description
本発明は、FPGAを用いたアクセラレータを有する計算機システムに関する。
近年、FPGA(Field-Programmable Gate Array)を用いてデータ処理の一部を実行する技術が用いられている。例えば、特許文献1では、計算機にFPGAを含むデバイスを付加し、当該デバイスによってデータ処理を実行している。
FPGAを用いた場合、中性子の衝突などによりハードウェアの実行結果などが異常になるソフトエラーが発生する可能性がある。
非特許文献1に示すように、FPGAのベンダは、ソフトエラーの検知及び修正機能を提供している。FPGAのベンダが適用するソフトエラーチェック機能では、FPGAをフレームと呼ばれる小領域に分割し、各フレームに対する誤り検出符号(CRC)を予め算出しておく。そして、FPGAのチェック機能は、CRCを用いて該当フレームにおけるエラーの有無を判定し、エラーがある場合には、エラー信号をFPGAの外部に送信する。また、特許文献2では、検出部がソフトエラーを検出すると、通信制御部が、通信装置と上位装置との通信パスの状態をビジー状態に遷移させることを特徴とするストレージ制御装置が開示されている。
ALTERA、Application Note 357:"Error Detection and Recovery Using CRC in Altera FPGA Devices"
非特許文献1に開示されるように、FPGAのソフトエラーのチェックには数msから数秒の時間を要する。そのため、FPGAでデータ処理を実行する際、コマンドを実行させる度にソフトエラーチェックを行うと、ソフトエラーチェックに要する時間が増大する、という問題があった。また、FPGA回路全体のエラーチェックを行うと、エラーチェックに要する時間が増大する。
そこで本発明は、上記問題点に鑑みて成されたもので、ソフトエラーチェックを実施しながらも、FPGAでデータ処理を実行する際に処理時間が増大するのを抑制することを目的とする。
本発明は、プロセッサとメモリとを有する計算機と、前記計算機に接続されてデータを格納するストレージ装置と、を有する計算機システムであって、前記ストレージ装置は、不揮発性半導体メモリを有して、データを格納する不揮発性半導体記憶部と、前記不揮発性半導体記憶部に対する読み書きを制御する制御部と、前記制御部から前記データと演算コマンドを取得して、前記演算コマンドに応じて前記データの演算を行うFPGAと、を有し、前記計算機は、前記データへのアクセス要求を受け付ける受信部と、前記アクセス要求から1以上の演算コマンドを生成するコマンド生成部と、前記ストレージ装置に前記演算コマンドを送信するコマンド送信部と、前記ストレージ装置から前記演算コマンドの実行結果を受信する演算結果受信部と、前記演算コマンドの実行結果を集約する集約部と、前記集約した演算コマンドの実行結果を応答する応答部と、前記FPGAのソフトエラーを検出するFPGAチェック部と、を有し、前記FPGAチェック部は、前記演算コマンドの実行結果の数が所定値になると、前記FPGAにソフトエラーの検出を指令し、前記FPGAからソフトエラーの有無を受信し、前記応答部は、前記生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には前記集約した実行結果を送信する。
本発明によれば、計算機は、FPGA含むストレージ装置に複数のコマンドを発行した後にFPGAのソフトエラーの検出処理を実施するので、一つ一つのコマンドに対してソフトエラーチェックを実行する場合と比較して、ソフトエラーの検出に要する時間を短縮することが可能となる。また、計算機は、発行したコマンドで使用したFPGAの領域に対してのみ、ソフトエラーの検出処理を実行するため、ソフトエラーの検出処理に要する時間を短縮することが可能となる。
以下、本発明の一実施形態について添付図面を用いて説明する。
図1は、本発明の第1の実施例を示し、計算機システムの一例を示すブロック図である。図1は、データベース管理システム(DBMS)200を実行するサーバ100に、ストレージ装置の機能とアクセラレータの機能を含むフラッシュモジュール150を付加した例を示す。
本実施例のフラッシュモジュール150は、データベース250を格納する複数のフラッシュメモリ180−1〜180−nと、データベース処理を実行可能なハードウェア・アクセラレータとしてのデータベース演算回路170とを含む。
サーバ100は、CPU101とメモリ102とを含み、PCIexpress(図中PCIe)スイッチ140を介してフラッシュモジュール150に接続される。フラッシュモジュール150は、1以上のフラッシュメモリ180−1〜180−nと、フラッシュメモリ180−1〜180−nからなる半導体記憶部を制御するフラッシュモジュールコントローラ160と、FPGAで構成されて所定のデータベース処理を実行するデータベース演算回路170とを含む。
なお、以下の説明では、フラッシュメモリ180−1〜180−nの全体について説明する際には、「−」のない符号で示し、個々のフラッシュメモリ180−1〜180−nを特定する際には、「−」を付与した符号で示す。なお、他の構成要素の符号についても同様である。
フラッシュモジュール150のフラッシュメモリ180には、データベース250が格納される。サーバ100は、メモリ102にDBMS200のプログラムがロードされてCPU101によって実行される。データベース250はサーバ100のDBMS200によって管理される。なお、DBMS200のプログラムは、サーバ100に接続されたストレージ装置(図示省略)に格納しておけば良い。
サーバ100で稼働するDBMS200は、ネットワーク400を介して接続されたクライアント計算機300からデータベース250のアクセス要求(SQL文)を受け付ける。DBMS200は、検索要求(フィルタ処理)等の所定のアクセス要求を受け付けると、複数のデータベース演算コマンドを生成してデータベース演算回路170にデータベース処理を指令する。
フラッシュモジュールコントローラ160は、フラッシュメモリ180−1〜180−nに対して並列的にアクセス可能であり、複数のデータベース演算コマンドが指令されたときには、フラッシュメモリ180から並列的にデータベース250を読み込んで、データベース演算回路170に送信することができる。
データベース演算回路170は、所定の並列度でデータベース演算コマンドを並列的に実行することができる。データベース演算回路170は、フラッシュモジュールコントローラ160から受信したデータベース250のデータに対して、複数のデータベース演算コマンドを平並列的に実行できる。
また、FPGAを含むデータベース演算回路170は、前記非特許文献1に記載されたソフトエラーの検出機能及び修正機能を有する。サーバ100は、データベース演算回路170に対して発行したデータベース演算コマンドの数が所定の数となる度に、ソフトエラーの検出を実行する。そして、データベース演算回路170でソフトエラーを検出した場合には、サーバ100がクライアント計算機300にソフトエラーが発生したことを示す情報を送信する。
図2は、DBMS200の機能の一例を示すブロック図である。DBMS200は、アクセス要求のSQLを受信するSQL受信部203と、SQLから1以上のデータベース演算コマンドを生成するデータベース(図中DB)演算コマンド生成部204と、生成したデータベース演算コマンドをフラッシュモジュール150に送信するDB演算コマンド送信部205と、フラッシュモジュール150からデータベース演算コマンドの実行結果を受信するDB演算結果受信部208と、フラッシュモジュール150から受信した1以上のデータベース演算コマンドの実行結果を集約するDB演算コマンド集約部207と、集約されたデータベース演算コマンドの実行結果をクライアント計算機300へ送信するSQL応答部206と、FPGAで構成されたデータベース演算回路170にソフトエラーの検出を指令するFPGAチェック部209と、データベース演算コマンドで使用するデータベース演算回路170に含まれるFPGAの演算要素であるフレームの番号を管理するフレーム管理テーブル210と、SQLで使用するデータベース演算コマンドを管理するコマンド管理テーブル220と、を含む。
なお、本実施例1では、データベース演算回路170のFPGAでプログラミング(設定)可能な演算要素をフレームとしたが、FPGAの種類に応じて変更すれば良く、例えば、プログラミング可能な演算要素が、ロジックエレメントであれば、フレーム番号に代わってロジックエレメント番号を用いることができる。換言すれば、フレーム番号はFPGA内でプログラミング可能な演算要素の識別子であれば良い。
DB演算コマンド生成部204は、SQL受信部203で受信したSQLがフィルタ処理などの所定のアクセス要求であれば、データベース250のアクセス対象の領域を複数の領域に分割し、それぞれの領域に対してデータベース演算コマンドを生成する。
例えば、ひとつのフラッシュメモリ180の容量が8MBの場合、受信したSQLのアクセス対象の領域を、8MBの領域に分割してそれぞれデータベース演算コマンドを生成する。そして、DB演算コマンド送信部205は、データベース演算回路170に対して複数のデータベース演算コマンドを発行する。なお、データベース250の更新要求等は、DBMS200がフラッシュモジュールコントローラ160にデータベース250の更新を指令することで実行される。
データベース演算回路170は、データベース演算コマンドを受信すると、データベース演算コマンドに記載されたデータ領域のデータの読み出しを、フラッシュモジュールコントローラ160に要求する。フラッシュモジュールコントローラ160は、要求されたデータをフラッシュメモリ180から読み出して、データベース演算回路170に送信する。データベース演算回路170は、受信したデータに対して所定のデータベース演算コマンド(フィルタ処理、集約演算処理等)によるデータ処理を実行して、実行結果をDB演算結果受信部208に送信する。
なお、フラッシュモジュールコントローラ160は、フラッシュメモリ180−1〜180−n毎に並列的にアクセスする。また、データベース演算回路170は、予め設定された並列度で受信したデータに対してそれぞれデータベース演算コマンドを実行する。DBMS200は、データベース演算回路170が所定の並列度で実行したデータベース演算コマンドの結果をDB演算結果受信部208で受け付ける。
そして、DB演算結果受信部208で受け付けた複数のデータベース演算コマンドの実行結果は、DB演算コマンド集約部207で集約される。SQL応答部206は、DB演算コマンド生成部204が生成した全てのデータベース演算コマンドについて、DB演算コマンド集約部207の集約が完了すると、FPGAチェック部209を起動する。
FPGAチェック部209は、コマンド管理テーブル220とフレーム管理テーブル210を参照し、データベース演算コマンドの内容に基づいて、データベース演算回路170で使用したフレーム番号を特定する。そして、FPGAチェック部209は、データベース演算回路170のFPGAのうち、データベース演算コマンドで使用したフレームのみについてソフトエラーの検出を実施する。
FPGAチェック部209は、ソフトエラーの検出結果をSQL応答部206に送信する。SQL応答部206は、ソフトエラーが発生していなければ、DB演算コマンド集約部207の集約結果をクライアント計算機300に送信する。一方、SQL応答部206は、FPGAにソフトエラーが発生していければ、クライアント計算機300にソフトエラーが発生したことを示す情報を送信する。
以上の処理で、DBMS200は、受け付けたアクセス要求から複数のデータベース演算コマンドを生成してデータベース演算回路170のFPGAで実行させる。そして、アクセス要求のSQLに対応する全てのデータベース演算コマンドが完了してから、FPGAチェック部209が、データベース演算回路170のFPGAのソフトエラーの検出を実施する。
これにより、DBMS200は、複数のデータベース演算コマンドのそれぞれが実行完了する度にソフトエラーの検出を行うことはなく、データベース演算コマンドが所定数(本実施例では全て)に達するとソフトエラーの検出をまとめて実施する。これにより、ひとつひとつのデータベース演算コマンドの実行完了でソフトエラーの検出を行うのに必要な処理時間を抑制することができ、FPGAを有するデータベース演算回路170の処理を高速に行うことができる。
また、DBMS200は、データベース演算コマンドの内容に応じて、データベース演算回路170を構成するFPGAのフレーム番号を特定し、特定したフレームのみについてソフトエラーの検出を行うので、FPGA全体のソフトエラーを検出するのに比して処理時間を短縮することが可能となって、データベース演算を高速化することができる。
SQL受信部203と、DB演算コマンド生成部204と、DB演算コマンド送信部205と、DB演算結果受信部208と、DB演算コマンド集約部207と、SQL応答部206と、FPGAチェック部209のDBMS200を構成する各機能部はプログラムとしてメモリ102にロードされる。
CPU101は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、CPU101は、DBMSプログラムに従って処理することでDBMS200として機能する。他のプログラムについても同様である。さらに、CPU101は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
図3は、DBMS200のフレーム管理テーブル210の一例を示す図である。フレーム管理テーブル210は、データベース演算コマンドの名称を格納するDB演算コマンド名211と、データベース演算回路170を構成するFPGAのフレーム番号を格納するフレーム番号212と、をひとつのエントリに含む。
図示の例では、SQLで使用されるフィルタコマンドが、データベース演算回路170を構成するFPGAのフレーム番号のうち「1、2、3、100、102」を使用していることを示す。
図4は、データベース演算回路170のFPGAのフレームの一例を示す図である。データベース演算回路170のFPGAは、フレーム230−1〜230−mのプログラマブルな領域を有し、これらのフレーム番号が「1」〜「m」の例を示している。図3で示したように、サーバ100の管理者などが、データベース演算コマンド名211毎に、使用するフレーム番号を決定して、FPGAの機能を設定する。
図5は、DBMS200のコマンド管理テーブル220の一例を示す図である。コマンド管理テーブル220は、受信したSQLのシリアル番号を格納するSQL番号221と、当該SQLに含まれるデータベース演算コマンドの名称(または識別子)を格納するDB演算コマンド名222とをひとつのエントリに含む。
SQL受信部203は、アクセス要求としてのSQLを受信すると、該SQLに所定の番号を付与して、コマンド管理テーブル220にエントリを追加し、SQLに含まれるデータベース演算コマンドの名称をDB演算コマンド名222に格納する。コマンド管理テーブル220により、サーバ100で実行するSQLが使用するデータベース演算コマンドを特定することができる。
図6は、DBMS200がデータベース演算回路170に発行するデータベース演算コマンド500の一例を示す図である。データベース演算コマンド500は、コマンド名501が“フィルタコマンド”の例を示す。このコマンド500では、読み込みの開始位置を示す開始LBA(Logical Block Address)502=“1000”、読み込みの終了位置を示す終了LBA503=“2000”、フィルタ条件504=X、列抽出条件505=Yに設定された例を示す。DB演算コマンド生成部204は、受信したSQLを実行するために、複数のデータベース演算コマンド500を生成する。
フィルタ条件504と列抽出条件505は、データベース演算回路170で行う処理を決定するためのパラメータである。DB演算コマンド生成部204は、該SQLを実行するために、8MBなどの領域ごとにデータベース演算コマンド500を生成する。そのため、一つのSQLに対して、複数のデータベース演算コマンド500が生成される。DB演算コマンド生成部204が、該SQLの番号と、該SQLを実行するために使用したデータベース演算コマンド500の名称を、コマンド管理テーブル220に格納する。
DB演算コマンド送信部205は、生成された複数のデータベース演算コマンド500をフラッシュモジュール150に送信する。
図7は、サーバ100で行われる処理の一例示すフローチャートである。この処理は、DBMS200がデータベース250へのアクセス要求を受信したときに実行される。
DBMS200は、ネットワーク400からクライアント計算機300のアクセス要求としてのSQLを受信する(S1)。DBMS200は、SQLから1以上のデータベース演算コマンド500を生成する(S2)。
DBMS200は、生成したデータベース演算コマンド500をフラッシュモジュール150に送信する(S3)。フラッシュモジュール150では、フラッシュモジュールコントローラ160がフラッシュメモリ180のデータベース250からデータベース演算コマンドに応じたデータを読み込んで、データベース演算回路170へデータとデータベース演算コマンド500を送信する。データベース演算回路170は、受信したデータについてデータベース演算コマンド500を実行して結果をDBMS200に送信する。
DBMS200は、フラッシュモジュール150からデータベース演算コマンド500の実行結果を受信する(S4)。次に、DBMS200は、SQLに対応する全てのデータベース演算コマンド500について実行結果を受信したか否かを判定する(S5)。DBMS200は、SQLに対応するデータベース演算コマンド500の実行結果を全て受信していればステップS6へ進む。一方、まだ受信していないデータベース演算コマンド500が存在すればステップS4に戻る。
ステップS6では、DBMS200が、コマンド管理テーブル220を参照して、現在実行したSQL番号221に対応するDB演算コマンド名222を取得する。そして、DBMS200は、フレーム管理テーブル210から取得したDB演算コマンド名211に対応するフレーム番号212を取得する。DBMS200は、取得したフレーム番号212(演算要素の識別子)を指定してソフトエラーの検出を実施するようフラッシュモジュール150のデータベース演算回路170に指令する。
DBMS200は、データベース演算回路170からソフトエラーの検出結果を受信すると(S7)、ソフトエラーの有無を判定する(S8)。DBMS200は、ソフトエラーが発生していなければ、ステップS9へ進んで上述の集約処理を適用したデータベース演算コマンドの実行結果をクライアント計算機300に送信して処理を終了する。
一方、ソフトエラーが発生している場合、DBMS200は、ステップS10へ進んでデータベース演算回路170のFPGAでソフトエラーが発生したことをクライアント計算機300に通知して処理を終了する。この場合、DBMS200は、フラッシュモジュール150から受信したデータベース演算コマンドの実行結果を破棄する。
以上の処理によって、サーバ100のDBMS200は、複数のデータベース演算コマンド500を全て実行した後にFPGAのソフトエラーの検出処理を実施するので、一つ一つのデータベース演算コマンドに対してソフトエラーの検出を実行する場合と比較して、ソフトエラーの検出に要する時間を短縮することが可能となる。これにより、サーバ100は、ソフトエラーの検出を実施しながらも、FPGAでデータ処理を実行する際に処理時間が増大するのを抑制することができる。
また、サーバ100は、データベース演算コマンドで使用したFPGAの領域(フレーム番号)に対してのみ、ソフトエラーの検出を実行するため、ソフトエラーの検出に要する時間を短縮することが可能となり、フラッシュモジュール150の処理性能を向上させることができる。
なお、上記実施例1では、フラッシュモジュール150の内部にデータベース演算回路170を配置した例を示したが、データベース演算回路170をPCIeのデバイスとして独立させて、PCIeスイッチ140に接続することもできる。
また、上記実施例1では、フラッシュモジュール150にフラッシュメモリ180を採用する例を示したが、これに限定されるものではなく、データベース250を格納する不揮発性の半導体記憶装置であればよい。
図8は、本発明の第2の実施例を示し、サーバ100で行われる処理の一例示すフローチャートである。本実施例2では、データベース演算回路170がFPGAのソフトエラーを訂正する修復機能を有し、サーバ100は、ソフトエラーを検出するとFPGAの修復をデータベース演算回路170に指令する。そして、サーバ100は、修復が完了した後に、再度データベース演算コマンドを実行させる。その他の構成は前記実施例1と同様である。
図8のステップS1〜S9は、前記実施例1の図7と同様であるので、重複する説明は省略する。ソフトエラーが検出されたステップS20では、DBMS200がデータベース演算回路170にFPGAの修復コマンドを発行する。
DBMS200は、データベース演算回路170から修復コマンドの実行完了の通知を受信すると、ステップS3に戻って、再度複数のデータベース演算コマンドをデータベース演算回路170に実行させる。
以上の処理によって、データベース演算回路170でソフトエラーが発生したときには、DBMS200が修復コマンドを発行してから、再度データベース演算コマンドを実行させることができる。これにより、データベース演算回路170のソフトエラーによる障害を回復させてからデータベース演算を実行することで、業務を継続することが可能となる。
なお、上記ステップS20では、DBMS200がデータベース演算回路170から修復コマンドの実行完了の通知を受信する例を示したが、DBMS200は修復コマンドを発行してから所定時間経過後にステップS3に復帰するようにしてもよい。
図9は、本発明の第3の実施例を示し、サーバ100で行われる処理の一例示すフローチャートである。本実施例3では、データベース250へのアクセス要求に大量のデータが含まれる場合、データベース演算コマンドが所定の数まで実行完了するとデータベース演算回路170のソフトエラーの検出を実施するものである。その他の構成は前記実施例1と同様である。
ステップS31、S32は、図7のステップS1、S2と同様であり、DBMS200が、クライアント計算機300からのアクセス要求としてのSQLを受信し、SQLから1以上のデータベース演算コマンド500を生成する。
次に、DBMS200は、生成したデータベース演算コマンド500をフラッシュモジュール150に発行する。
フラッシュモジュール150では、フラッシュモジュールコントローラ160がフラッシュメモリ180のデータベース250からデータベース演算コマンドに応じたデータを読み込んで、データベース演算回路170へ送信する。データベース演算回路170は、受信したデータについてデータベース演算コマンド500を実行して結果をDBMS200に送信する。
DBMS200は、フラッシュモジュール150からデータベース演算コマンド500の実行結果を受信する(S34)。DBMS200は、フラッシュモジュール150から受信したデータベース演算コマンドの実行結果の数=1を変数CNTに加算する。次に、DBMS200は、フラッシュモジュール150で実行が完了したデータベース演算コマンド500の数CNTが所定値(例えば100)に達したか否かを判定する。
DBMS200は、実行が完了したデータベース演算コマンド500の数CNTが所定値に達していれば、ステップS35に進み、実行済みのデータベース演算コマンド500の数CNTに達していなければステップS39に進む。
ステップS351では、前記実施例1の図7のステップS6と同様であり、DBMS200がFPGAのフレーム単位でソフトエラーの検出を実施する。次に、DBMS200は、実行が完了したデータベース演算コマンド500の数CNTを0にリセットし(S36)、データベース演算回路170からソフトエラーの検出結果を受信する(S37)。そして、DBMS200は、検出結果からソフトエラーの有無を判定し(S38)、ソフトエラーが発生していればステップS42へ進み、ソフトエラーが発生していなければステップS399へ進む。
ソフトエラーが発生したステップS42では、前記実施例2と同様に、DBMS200は、データベース演算回路170に修復コマンドを発行してからステップ33に復帰して、再度データベース演算コマンドを発行する。
一方、ソフトエラーが発生していない場合には、生成したデータベース演算コマンドの全ての実行結果を受信したか否かを判定する(S39)。DBMS200は、SQLに対応するデータベース演算コマンド500の実行結果を全て受信していればステップS40へ進む。一方、まだ受信していないデータベース演算コマンド500が存在すればステップS33に戻って残りのデータベース演算コマンドを発行する。
ステップS40では、実行済みのデータベース演算コマンドの数を示す変数CNTが0より大であれば、ソフトエラーの検出が未了の実行結果があるので、DBMS200は、ステップ35に戻って上記ソフトエラーの検出処理を繰り返す。
一方、変数CNTが0であれば、全てのデータベース演算コマンドの実行が完了し、かつ、全てのデータベース演算コマンドの実行結果についてデータベース演算コマンドで使用したFPGAでソフトエラーが無いことを検出しているので、DBMS200は、全ての実行結果を集約してからクライアント計算機300に送信する(S41)。
以上の処理により、DBMS200は、データベース演算コマンドの実行数が所定値となる度に、データベース演算回路170のFPGAのソフトエラーの検出処理が実行し、ソフトエラーが発生している場合には修復コマンドを発行した後に再度データベース演算コマンドを発行する。
本実施例3では、全てのデータベース演算コマンドが完了する以前に、データベース演算コマンドの実行数CNTが所定値となる度にFPGAのソフトエラーの検出処理を実行するので、大量のデータをデータベース演算回路170で効率よく処理させることができる。すなわち、全てのデータベース演算コマンドが完了してからソフトエラーの検出を行ってソフトエラーが発生していた場合、再度全てのデータベース演算コマンドを実行させると処理時間が増大することになる。
これに対して、DBMS200は、データベース演算コマンドの実行数CNTが所定値となる度にソフトエラーの検出処理を実行するので、ソフトエラーが発生した後にデータベース演算コマンドを再実行する量を低減して、ソフトエラー発生時の全体的な処理時間を短縮することが可能となる。
図10は、本発明の第4の実施例を示し、計算機システムの一例を示すブロック図である。実施例4では、前記実施例1に示したDBMS200に代わって、ファイルサーチサービス260をクライアント計算機300に提供する例を示す。
本実施例4では、前記実施例1のデータベース250に代わって1以上のファイル270がフラッシュモジュール150のフラッシュメモリ180に格納され、データベース演算回路170に代わってFPGAで構成されたファイルサーチ回路190がフラッシュモジュール150に組み込まれる。
サーバ100のメモリ102には、前記実施例1のDBMS200に代わって、ファイルサーチサービス260が格納される。ファイルサーチサービス260は、クライアント計算機300から検索対象文字列を受け付けて、フラッシュメモリ180から検索対象文字列を含むファイル270を選択し、クライアント計算機300へ通知する。
ファイルサーチサービス260は、前記実施例1のDBMS200と同様に、検索対象文字列から複数の検索コマンドを生成してフラッシュモジュール150に発行する。フラッシュモジュール150では、フラッシュモジュールコントローラ160が、複数の検索コマンドで指定されたデータをファイル270から取得してファイルサーチ回路190に送信する。
ファイルサーチ回路190は、受信したデータに対して複数の検索コマンドを実行し、検索コマンドの実行結果をサーバ100へ送信する。サーバ100のファイルサーチサービス260は、全ての検索コマンドの実行が完了すると、ファイルサーチ回路190にソフトエラーの検出処理を実行する。そして、ソフトエラーが発生していなければ、前記実施例1と同様に検索コマンドの実行結果を集約してからクライアント計算機300に応答する。
一方、ソフトエラーが発生していれば、ファイルサーチサービス260は、前記実施例1と同様にソフトエラーが発生したことをクライアント計算機300に通知する。あるいは、前記実施例2と同様にして、ファイルサーチサービス260は、ファイルサーチ回路190にFPGAの修復コマンドを発行してから再度検索コマンドを実行する。
以上の処理によって、複数の検索コマンドを全て実行した後にFPGAのソフトエラーの検出を実施するので、一つ一つのデータベース演算コマンドに対してソフトエラーの検出を実行する場合と比較して、ソフトエラーの検出に要する時間を短縮することが可能となる。これにより、ソフトエラーの検出を実施しながらも、FPGAでデータ処理を実行する際に処理時間が増大するのを抑制することができる。
また、前記実施例1と同様に、検索コマンドで使用したFPGAの領域(フレーム番号)に対してのみ、ソフトエラーの検出を実行することで、ソフトエラーの検出に要する時間を短縮することが可能となり、フラッシュモジュール150の処理性能を向上させることができる。
なお、前記実施例1では本発明をデータベース250に適用した例を示し、前記実施例4では本発明をファイルサーチサービス260に適用した例を示したがこれらに限定されるものではなく、フラッシュメモリ180から読み込んだデータの処理を行うFPGAに適用することができる。
<まとめ>
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
Claims (12)
- プロセッサとメモリとを有する計算機と、
前記計算機に接続されてデータを格納するストレージ装置と、を有する計算機システムであって、
前記ストレージ装置は、
不揮発性半導体メモリを有して、データを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御する制御部と、
前記制御部から前記データと演算コマンドを取得して、前記演算コマンドに応じて前記データの演算を行うFPGAと、を有し、
前記計算機は、
前記データへのアクセス要求を受け付ける受信部と、
前記アクセス要求から1以上の演算コマンドを生成するコマンド生成部と、
前記ストレージ装置に前記演算コマンドを送信するコマンド送信部と、
前記ストレージ装置から前記演算コマンドの実行結果を受信する演算結果受信部と、
前記演算コマンドの実行結果を集約する集約部と、
前記集約した演算コマンドの実行結果を応答する応答部と、
前記FPGAのソフトエラーを検出するFPGAチェック部と、を有し、
前記FPGAチェック部は、
前記演算コマンドの実行結果の数が所定値になると、前記FPGAにソフトエラーの検出を指令し、前記FPGAからソフトエラーの有無を受信し、
前記応答部は、
前記生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には前記集約した実行結果を送信することを特徴とする計算機システム。 - 請求項1に記載の計算機システムであって、
前記不揮発性半導体記憶部のデータはデータベースであって、
前記アクセス要求は、前記データベースに対するSQLを含み、
前記コマンド生成部は、前記SQLに対応する1以上の演算コマンドを生成することを特徴とする計算機システム。 - 請求項2に記載の計算機システムであって、
前記計算機は、
前記SQLで使用する演算コマンドを格納するコマンド管理情報と、
前記FPGAに設定された演算コマンドを実行する演算要素の識別子を格納するフレーム管理情報と、を有し、
前記FPGAチェック部は、
前記演算コマンドで実行された前記FPGAの演算要素の識別子を指定してソフトエラーの検出を指令することを特徴とする計算機システム。 - 請求項1に記載の計算機システムであって、
前記FPGAチェック部は、
前記FPGAからソフトエラーを検出した場合には、当該FPGAに修復コマンドを発行することを特徴とする計算機システム。 - 請求項4に記載の計算機システムであって、
前記コマンド送信部は、前記FPGAが修復コマンドを完了した後に、再度前記生成した演算コマンドを前記ストレージ装置に送信することを特徴とする計算機システム。 - 請求項1に記載の計算機システムであって、
前記所定値は、前記コマンド生成部が生成した演算コマンドの数であって、
前記FPGAチェック部は、
前記演算コマンドが全て完了した後に、前記FPGAにソフトエラーの検出を指令する
ことを特徴とする計算機システム。 - プロセッサとメモリとを有する計算機と、前記計算機に接続されてデータを格納するストレージ装置と、を制御する計算機システムの制御方法であって、
前記ストレージ装置は、
不揮発性半導体メモリを有して、データを格納する不揮発性半導体記憶部と、
前記不揮発性半導体記憶部に対する読み書きを制御する制御部と、
前記制御部から前記データと演算コマンドを取得して、前記演算コマンドに応じて前記データの演算を行うFPGAと、を有し、
前記制御方法は、
前記計算機が、前記データへのアクセス要求を受け付ける第1のステップと、
前記計算機が、前記アクセス要求から1以上の演算コマンドを生成する第2のステップと、
前記計算機が、前記ストレージ装置に前記演算コマンドを送信する第3のステップと、
前記計算機が、前記ストレージ装置から前記演算コマンドの実行結果を受信する第4のステップと、
前記計算機が、前記演算コマンドの実行結果を集約する第5のステップと、
前記計算機が、前記演算コマンドの実行結果の数が所定値になると、前記FPGAにソフトエラーの検出を指令し、前記FPGAからソフトエラーの有無を受信する第6のステップと、
前記計算機が、前記生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には前記集約した実行結果を送信する第7のステップと、
を含むことを特徴とする計算機システムの制御方法。 - 請求項7に記載の計算機システムの制御方法であって、
前記不揮発性半導体記憶部のデータはデータベースであって、
前記アクセス要求は、前記データベースに対するSQLを含み、
前記第2のステップは、前記SQLに対応する1以上の演算コマンドを生成することを特徴とする計算機システムの制御方法。 - 請求項8に記載の計算機システムの制御方法であって、
前記第6のステップは、
前記SQLで使用する演算コマンドを格納するコマンド管理情報と、前記FPGAに設定された演算コマンドを実行する演算要素の識別子を格納するフレーム管理情報と、から前記演算コマンドで実行された前記FPGAの演算要素の識別子を指定してソフトエラーの検出を指令することを特徴とする計算機システムの制御方法。 - 請求項7に記載の計算機システムの制御方法であって、
前記第6のステップは、
前記FPGAからソフトエラーを検出した場合には、当該FPGAに修復コマンドを発行することを特徴とする計算機システムの制御方法。 - 請求項10に記載の計算機システムの制御方法であって、
前記第3のステップは、
前記FPGAが修復コマンドを完了した後に、再度前記生成した演算コマンドを前記ストレージ装置に送信することを特徴とする計算機システムの制御方法。 - 請求項7に記載の計算機システムの制御方法であって、
前記所定値は、前記第2のステップで生成した演算コマンドの数であって、
前記第6のステップは、
前記演算コマンドが全て完了した後に、前記FPGAにソフトエラーの検出を指令する
ことを特徴とする計算機システムの制御方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/068646 WO2017002157A1 (ja) | 2015-06-29 | 2015-06-29 | 計算機システム及び計算機システムの制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2017002157A1 JPWO2017002157A1 (ja) | 2018-03-29 |
JP6359190B2 true JP6359190B2 (ja) | 2018-07-18 |
Family
ID=57609310
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017525695A Expired - Fee Related JP6359190B2 (ja) | 2015-06-29 | 2015-06-29 | 計算機システム及び計算機システムの制御方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10353768B2 (ja) |
JP (1) | JP6359190B2 (ja) |
WO (1) | WO2017002157A1 (ja) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3384406A4 (en) * | 2015-12-04 | 2018-11-14 | Hewlett-Packard Enterprise Development LP | Combining hashes of data blocks |
JP6588106B2 (ja) * | 2016-01-07 | 2019-10-09 | 株式会社日立製作所 | 計算機システム及び計算機の制御方法 |
US20180373760A1 (en) * | 2017-06-23 | 2018-12-27 | Xilinx, Inc. | Parallel compute offload to database accelerator |
CN109726153B (zh) * | 2017-10-27 | 2023-02-24 | 伊姆西Ip控股有限责任公司 | 用于存储设备的集成装置、相应存储设备及其制造方法 |
JP7104525B2 (ja) * | 2018-02-21 | 2022-07-21 | 日立Astemo株式会社 | 電子制御装置、構成メモリのエラー検出方法 |
CN110309336B (zh) * | 2018-03-12 | 2023-08-08 | 腾讯科技(深圳)有限公司 | 图像检索方法、装置、系统、服务器以及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8095508B2 (en) | 2000-04-07 | 2012-01-10 | Washington University | Intelligent data storage and processing using FPGA devices |
US20050086245A1 (en) * | 2003-10-15 | 2005-04-21 | Calpont Corporation | Architecture for a hardware database management system |
JP4599304B2 (ja) * | 2006-01-24 | 2010-12-15 | 日本電信電話株式会社 | 避難行動支援サーバ装置 |
JP2008108227A (ja) * | 2006-09-25 | 2008-05-08 | Hitachi Ltd | ストレージシステム及び監査ログ管理方法 |
JP5729746B2 (ja) * | 2009-09-17 | 2015-06-03 | 日本電気株式会社 | ストレージシステム及びディスクアレイ装置 |
US9740439B2 (en) * | 2011-12-23 | 2017-08-22 | International Business Machines Corporation | Solid-state storage management |
JP6011210B2 (ja) | 2012-09-28 | 2016-10-19 | 富士通株式会社 | ストレージ制御装置,プログラマブル論理回路の復旧処理方法及び制御プログラム |
JP6408482B2 (ja) * | 2013-11-08 | 2018-10-17 | 株式会社日立製作所 | プログラマブルデバイス及びこれを用いた電子システム装置 |
-
2015
- 2015-06-29 WO PCT/JP2015/068646 patent/WO2017002157A1/ja active Application Filing
- 2015-06-29 JP JP2017525695A patent/JP6359190B2/ja not_active Expired - Fee Related
- 2015-06-29 US US15/571,050 patent/US10353768B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
WO2017002157A1 (ja) | 2017-01-05 |
JPWO2017002157A1 (ja) | 2018-03-29 |
US20180165148A1 (en) | 2018-06-14 |
US10353768B2 (en) | 2019-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6359190B2 (ja) | 計算機システム及び計算機システムの制御方法 | |
US9015268B2 (en) | Remote direct storage access | |
US9164840B2 (en) | Managing a solid state drive (‘SSD’) in a redundant array of inexpensive drives (‘RAID’) | |
JP6211196B2 (ja) | 自律的メモリ検索のための方法及びシステム | |
WO2015166540A1 (ja) | ストレージ装置とそのデータ処理方法及びストレージシステム | |
EP4036735B1 (en) | Method, apparatus and readable storage medium | |
US20140101106A1 (en) | Log server and log file storage method | |
US10203899B2 (en) | Method for writing data into flash memory apparatus, flash memory apparatus, and storage system | |
US9619145B2 (en) | Method relating to configurable storage device and adaptive storage device array | |
US20110088029A1 (en) | Server image capacity optimization | |
US8782633B1 (en) | Upgrading firmware of a power supply | |
JP6666540B2 (ja) | ストレージ制御装置、及びプログラム | |
KR20180058894A (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US20150082014A1 (en) | Virtual Storage Devices Formed by Selected Partitions of a Physical Storage Device | |
US12056362B2 (en) | Non-volatile storage device offloading of host tasks | |
US20220075525A1 (en) | Redundant Array of Independent Disks (RAID) Management Method, and RAID Controller and System | |
US11256435B2 (en) | Method and apparatus for performing data-accessing management in a storage server | |
US20240103765A1 (en) | Non-volatile storage device offloading of host tasks | |
CN111090391B (zh) | 一种提高固态硬盘阵列性能的方法与服务器 | |
US20160378363A1 (en) | Dynamic Transitioning of Protection Information in Array Systems | |
JP2010198263A (ja) | データ診断装置、データ診断方法及びデータ診断プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20171026 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20180605 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180619 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6359190 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
LAPS | Cancellation because of no payment of annual fees |