WO2017002157A1 - 計算機システム及び計算機システムの制御方法 - Google Patents

計算機システム及び計算機システムの制御方法 Download PDF

Info

Publication number
WO2017002157A1
WO2017002157A1 PCT/JP2015/068646 JP2015068646W WO2017002157A1 WO 2017002157 A1 WO2017002157 A1 WO 2017002157A1 JP 2015068646 W JP2015068646 W JP 2015068646W WO 2017002157 A1 WO2017002157 A1 WO 2017002157A1
Authority
WO
WIPO (PCT)
Prior art keywords
command
fpga
computer system
soft error
calculation
Prior art date
Application number
PCT/JP2015/068646
Other languages
English (en)
French (fr)
Inventor
渡辺 聡
能毅 黒川
芳孝 辻本
Original Assignee
株式会社日立製作所
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 株式会社日立製作所 filed Critical 株式会社日立製作所
Priority to US15/571,050 priority Critical patent/US10353768B2/en
Priority to JP2017525695A priority patent/JP6359190B2/ja
Priority to PCT/JP2015/068646 priority patent/WO2017002157A1/ja
Publication of WO2017002157A1 publication Critical patent/WO2017002157A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1004Adding 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

Definitions

  • the present invention relates to a computer system having an accelerator using FPGA.
  • Patent Document 1 a device including an FPGA is added to a computer, and data processing is executed by the device.
  • Non-Patent Document 1 FPGA vendors provide soft error detection and correction functions.
  • the FPGA is divided into small areas called frames, and an error detection code (CRC) for each frame is calculated in advance. Then, the FPGA check function determines whether or not there is an error in the corresponding frame using the CRC, and if there is an error, transmits an error signal to the outside of the FPGA.
  • Patent Document 2 discloses a storage control device characterized in that when the detection unit detects a soft error, the communication control unit changes the state of the communication path between the communication device and the host device to the busy state. Yes.
  • Non-Patent Document 1 it takes a time from several ms to several seconds to check the soft error of the FPGA. Therefore, when data processing is executed by the FPGA, there is a problem that if a soft error check is performed every time a command is executed, the time required for the soft error check increases. In addition, if an error check of the entire FPGA circuit is performed, the time required for the error check increases.
  • the present invention has been made in view of the above problems, and an object thereof is to suppress an increase in processing time when data processing is executed by an FPGA while performing a soft error check.
  • the present invention is a computer system having a computer having a processor and a memory, and a storage device connected to the computer for storing data, the storage device having a nonvolatile semiconductor memory, A non-volatile semiconductor storage unit that stores data, a control unit that controls reading and writing to the non-volatile semiconductor storage unit, and obtains the data and operation command from the control unit, and calculates the data according to the operation command
  • An FPGA for performing the processing wherein the computer transmits a reception command for receiving an access request to the data, a command generation unit for generating one or more calculation commands from the access request, and the calculation command to the storage device.
  • a command transmission unit that performs the calculation, and a calculation result that receives the execution result of the calculation command from the storage device
  • a communication unit an aggregation unit for aggregating the execution results of the arithmetic commands, a response unit for responding to the execution results of the aggregated arithmetic commands, and an FPGA check unit for detecting a soft error of the FPGA,
  • the FPGA check unit instructs the FPGA to detect a soft error, receives the presence or absence of a soft error from the FPGA, and the response unit generates the generated operation
  • the aggregated execution results are transmitted.
  • the computer performs the FPGA soft error detection process after issuing a plurality of commands to the storage device including the FPGA, so that it is compared with the case where the soft error check is executed for each command.
  • the time required for detecting the soft error can be shortened.
  • the computer executes the soft error detection process only for the FPGA area used in the issued command, the time required for the soft error detection process can be shortened.
  • FIG. 1 is a block diagram illustrating an example of a computer system according to a first embodiment of this invention.
  • FIG. It is a block diagram which shows a 1st Example of this invention and shows an example of the function of DBMS. It is a figure which shows the 1st Example of this invention and shows an example of a frame management table. It is a figure which shows the 1st Example of this invention and shows an example of the flame
  • FIG. 1 is a block diagram showing an example of a computer system according to the first embodiment of this invention.
  • FIG. 1 shows an example in which a flash module 150 including a storage device function and an accelerator function is added to a server 100 that executes a database management system (DBMS) 200.
  • DBMS database management system
  • the flash module 150 of this embodiment includes a plurality of flash memories 180-1 to 180-n for storing the database 250, and a database operation circuit 170 as a hardware accelerator capable of executing database processing.
  • the server 100 includes a CPU 101 and a memory 102, and is connected to the flash module 150 via a PCI express (PCIe in the figure) switch 140.
  • the flash module 150 is composed of one or more flash memories 180-1 to 180-n, a flash module controller 160 that controls a semiconductor storage unit including the flash memories 180-1 to 180-n, and an FPGA, and a predetermined database. And a database operation circuit 170 for executing processing.
  • the database 250 is stored in the flash memory 180 of the flash module 150.
  • the program of the DBMS 200 is loaded into the memory 102 and is executed by the CPU 101.
  • the database 250 is managed by the DBMS 200 of the server 100.
  • the program of the DBMS 200 may be stored in a storage device (not shown) connected to the server 100.
  • the DBMS 200 operating on the server 100 accepts an access request (SQL sentence) for the database 250 from the client computer 300 connected via the network 400.
  • an access request SQL sentence
  • the DBMS 200 receives a predetermined access request such as a search request (filter processing)
  • the DBMS 200 generates a plurality of database operation commands and instructs the database operation circuit 170 to perform database processing.
  • the flash module controller 160 can access the flash memories 180-1 to 180-n in parallel. When a plurality of database operation commands are instructed, the flash module controller 160 reads the database 250 from the flash memory 180 in parallel, It can be transmitted to the database arithmetic circuit 170.
  • the database operation circuit 170 can execute database operation commands in parallel with a predetermined degree of parallelism.
  • the database operation circuit 170 can execute a plurality of database operation commands on the data of the database 250 received from the flash module controller 160 in parallel.
  • the database operation circuit 170 including the FPGA has the soft error detection function and the correction function described in Non-Patent Document 1.
  • the server 100 executes soft error detection each time the number of database operation commands issued to the database operation circuit 170 reaches a predetermined number.
  • the server 100 transmits information indicating that a soft error has occurred to the client computer 300.
  • FIG. 2 is a block diagram showing an example of the function of the DBMS 200.
  • the DBMS 200 includes an SQL receiving unit 203 that receives the SQL of the access request, a database (DB in the figure) operation command generating unit 204 that generates one or more database operation commands from the SQL, and the generated database operation command to the flash module 150.
  • SQL receiving unit 203 that receives the SQL of the access request
  • database (DB in the figure) operation command generating unit 204 that generates one or more database operation commands from the SQL, and the generated database operation command to the flash module 150.
  • DB operation command transmission unit 205 for transmitting, DB operation result receiving unit 208 for receiving the execution result of the database operation command from the flash module 150, and DB for collecting the execution results of one or more database operation commands received from the flash module 150
  • An operation command aggregating unit 207, an SQL response unit 206 for transmitting the execution result of the aggregated database operation command to the client computer 300, and a database operation circuit 170 configured by FPGA are detected for soft errors.
  • An FPGA check unit 209 for instructing the frame, a frame management table 210 for managing the frame number which is an arithmetic element of the FPGA included in the database arithmetic circuit 170 used in the database arithmetic command, and a database arithmetic command used in SQL A command management table 220.
  • the calculation element that can be programmed (set) by the FPGA of the database calculation circuit 170 is a frame.
  • the calculation element may be changed according to the type of the FPGA. If it is an element, a logic element number can be used instead of a frame number.
  • the frame number may be an identifier of an arithmetic element that can be programmed in the FPGA.
  • the DB operation command generating unit 204 divides the access target area of the database 250 into a plurality of areas, Generate database operation commands.
  • the access target area of the received SQL is divided into 8 MB areas and database operation commands are respectively generated.
  • the DB operation command transmission unit 205 issues a plurality of database operation commands to the database operation circuit 170.
  • the update request for the database 250 is executed when the DBMS 200 instructs the flash module controller 160 to update the database 250.
  • the database operation circuit 170 When receiving the database operation command, the database operation circuit 170 requests the flash module controller 160 to read data in the data area described in the database operation command.
  • the flash module controller 160 reads the requested data from the flash memory 180 and transmits it to the database operation circuit 170.
  • the database operation circuit 170 performs data processing using a predetermined database operation command (filter processing, aggregation operation processing, etc.) on the received data, and transmits the execution result to the DB operation result receiving unit 208.
  • the flash module controller 160 accesses the flash memories 180-1 to 180-n in parallel. Further, the database operation circuit 170 executes a database operation command for each data received with a preset parallelism.
  • the DBMS 200 receives the result of the database operation command executed by the database operation circuit 170 with a predetermined parallelism at the DB operation result receiving unit 208.
  • the execution results of the plurality of database operation commands received by the DB operation result receiving unit 208 are collected by the DB operation command aggregation unit 207.
  • the SQL response unit 206 activates the FPGA check unit 209 when aggregation of the DB operation command aggregation unit 207 is completed for all database operation commands generated by the DB operation command generation unit 204.
  • the FPGA check unit 209 refers to the command management table 220 and the frame management table 210, and identifies the frame number used in the database operation circuit 170 based on the contents of the database operation command. Then, the FPGA check unit 209 detects a soft error only for the frame used in the database calculation command in the FPGA of the database calculation circuit 170.
  • the FPGA check unit 209 transmits the soft error detection result to the SQL response unit 206. If no soft error has occurred, the SQL response unit 206 transmits the aggregation result of the DB operation command aggregation unit 207 to the client computer 300. On the other hand, if the soft error has occurred in the FPGA, the SQL response unit 206 transmits information indicating that the soft error has occurred to the client computer 300.
  • the DBMS 200 generates a plurality of database operation commands from the received access request and causes the FPGA of the database operation circuit 170 to execute them. Then, after all the database operation commands corresponding to the SQL of the access request are completed, the FPGA check unit 209 detects the FPGA soft error in the database operation circuit 170.
  • the DBMS 200 does not detect a soft error each time a plurality of database operation commands are executed, and detects a soft error when the number of database operation commands reaches a predetermined number (all in this embodiment). Conduct collectively. As a result, the processing time required to detect a soft error when execution of each database operation command is completed can be suppressed, and the processing of the database operation circuit 170 having the FPGA can be performed at high speed.
  • the DBMS 200 specifies the frame number of the FPGA constituting the database operation circuit 170 according to the contents of the database operation command, and detects the soft error only for the specified frame, and thus detects the soft error of the entire FPGA. Compared to the above, the processing time can be shortened, and the database operation can be speeded up.
  • Each functional unit constituting the program is loaded into the memory 102 as a program.
  • the CPU 101 operates as a functional unit that provides a predetermined function by performing processing according to the program of each functional unit.
  • the CPU 101 functions as the DBMS 200 by performing processing according to the DBMS program.
  • the CPU 101 also operates as a function unit that provides each function of a plurality of processes executed by each program.
  • a computer and a computer system are an apparatus and a system including these functional units.
  • FIG. 3 is a diagram illustrating an example of the frame management table 210 of the DBMS 200.
  • the frame management table 210 includes, in one entry, a DB operation command name 211 that stores the name of the database operation command and a frame number 212 that stores the frame number of the FPGA constituting the database operation circuit 170.
  • the filter command used in SQL uses “1, 2, 3, 100, 102” among the frame numbers of the FPGA constituting the database arithmetic circuit 170.
  • FIG. 4 is a diagram illustrating an example of an FPGA frame of the database operation circuit 170.
  • the FPGA of the database operation circuit 170 has programmable areas of frames 230-1 to 230-m, and the frame numbers are “1” to “m”.
  • the administrator of the server 100 determines the frame number to be used for each database operation command name 211 and sets the FPGA function.
  • FIG. 5 is a diagram illustrating an example of the command management table 220 of the DBMS 200.
  • the command management table 220 includes, in one entry, a SQL number 221 that stores the received SQL serial number and a DB operation command name 222 that stores the name (or identifier) of the database operation command included in the SQL.
  • the SQL receiving unit 203 When receiving the SQL as the access request, the SQL receiving unit 203 assigns a predetermined number to the SQL, adds an entry to the command management table 220, and sets the name of the database operation command included in the SQL as the DB operation command name. 222 is stored.
  • the command management table 220 can specify a database operation command used by SQL executed by the server 100.
  • FIG. 6 is a diagram showing an example of a database operation command 500 issued by the DBMS 200 to the database operation circuit 170.
  • the database operation command 500 shows an example in which the command name 501 is “filter command”.
  • the start LBA (Logical Block Address) 502 “1000” indicating the read start position
  • the end LBA 503 “2000” indicating the read end position
  • the filter condition 504 X
  • a set example is shown.
  • the DB operation command generation unit 204 generates a plurality of database operation commands 500 in order to execute the received SQL.
  • the filter condition 504 and the column extraction condition 505 are parameters for determining processing to be performed by the database arithmetic circuit 170.
  • the DB operation command generation unit 204 generates a database operation command 500 for each area such as 8 MB in order to execute the SQL. Therefore, a plurality of database operation commands 500 are generated for one SQL.
  • the DB operation command generation unit 204 stores the SQL number and the name of the database operation command 500 used for executing the SQL in the command management table 220.
  • the DB calculation command transmission unit 205 transmits the generated plurality of database calculation commands 500 to the flash module 150.
  • FIG. 7 is a flowchart illustrating an example of processing performed in the server 100. This process is executed when the DBMS 200 receives an access request to the database 250.
  • the DBMS 200 receives SQL as an access request of the client computer 300 from the network 400 (S1).
  • the DBMS 200 generates one or more database operation commands 500 from the SQL (S2).
  • the DBMS 200 transmits the generated database operation command 500 to the flash module 150 (S3).
  • the flash module controller 160 reads data corresponding to the database operation command from the database 250 in the flash memory 180 and transmits the data and the database operation command 500 to the database operation circuit 170.
  • the database operation circuit 170 executes the database operation command 500 on the received data and transmits the result to the DBMS 200.
  • the DBMS 200 receives the execution result of the database operation command 500 from the flash module 150 (S4). Next, the DBMS 200 determines whether or not execution results have been received for all database operation commands 500 corresponding to SQL (S5). If the DBMS 200 has received all the execution results of the database operation command 500 corresponding to SQL, the DBMS 200 proceeds to step S6. On the other hand, if there is a database operation command 500 that has not yet been received, the process returns to step S4.
  • step S6 the DBMS 200 refers to the command management table 220 and acquires the DB operation command name 222 corresponding to the currently executed SQL number 221. Then, the DBMS 200 acquires a frame number 212 corresponding to the DB operation command name 211 acquired from the frame management table 210. The DBMS 200 instructs the database operation circuit 170 of the flash module 150 to specify the acquired frame number 212 (operation element identifier) and perform soft error detection.
  • the DBMS 200 When the DBMS 200 receives the detection result of the soft error from the database arithmetic circuit 170 (S7), the DBMS 200 determines the presence or absence of the soft error (S8). If a soft error has not occurred, the DBMS 200 proceeds to step S9, transmits the execution result of the database operation command to which the above-described aggregation processing is applied, to the client computer 300, and ends the processing.
  • step S10 the DBMS 200 proceeds to step S10, notifies the client computer 300 that a soft error has occurred in the FPGA of the database operation circuit 170, and ends the process. In this case, the DBMS 200 discards the execution result of the database operation command received from the flash module 150.
  • the DBMS 200 of the server 100 executes FPGA soft error detection processing after executing all of the plurality of database operation commands 500, and therefore executes soft error detection for each database operation command. Compared with the case where it does, it becomes possible to shorten the time required for detection of a soft error. As a result, the server 100 can suppress an increase in processing time when executing data processing with the FPGA while detecting a soft error.
  • the server 100 executes soft error detection only for the FPGA area (frame number) used in the database operation command, it is possible to reduce the time required for soft error detection, and the flash module.
  • the processing performance of 150 can be improved.
  • the database arithmetic circuit 170 is arranged inside the flash module 150.
  • the database arithmetic circuit 170 can be made independent as a PCIe device and connected to the PCIe switch 140.
  • the flash memory 180 is used as the flash module 150.
  • the present invention is not limited to this, and any nonvolatile semiconductor memory device that stores the database 250 may be used.
  • FIG. 8 is a flowchart illustrating an example of processing performed by the server 100 according to the second embodiment of this invention.
  • the database operation circuit 170 has a repair function for correcting an FPGA soft error.
  • the server 100 detects a soft error, the server 100 instructs the database operation circuit 170 to repair the FPGA. Then, after the repair is completed, the server 100 executes the database operation command again.
  • Other configurations are the same as those of the first embodiment.
  • Steps S1 to S9 in FIG. 8 are the same as those in FIG.
  • the DBMS 200 issues an FPGA repair command to the database operation circuit 170.
  • the DBMS 200 When the DBMS 200 receives the notification of the completion of execution of the repair command from the database operation circuit 170, the DBMS 200 returns to step S3 and causes the database operation circuit 170 to execute a plurality of database operation commands again.
  • the DBMS 200 can issue the repair command and then execute the database operation command again. As a result, it is possible to continue the business by executing the database operation after recovering from the failure caused by the soft error in the database operation circuit 170.
  • step S20 the DBMS 200 has received the notification of the completion of the execution of the repair command from the database arithmetic circuit 170. However, the DBMS 200 returns to step S3 after a predetermined time has elapsed after issuing the repair command. May be.
  • FIG. 9 is a flowchart illustrating an example of processing performed by the server 100 according to the third embodiment of this invention.
  • the third embodiment when a large amount of data is included in an access request to the database 250, when the database operation command has been executed up to a predetermined number, the soft error of the database operation circuit 170 is detected.
  • Other configurations are the same as those of the first embodiment.
  • Steps S31 and S32 are the same as steps S1 and S2 in FIG. 7, and the DBMS 200 receives the SQL as an access request from the client computer 300, and generates one or more database operation commands 500 from the SQL.
  • the DBMS 200 issues the generated database operation command 500 to the flash module 150.
  • the flash module controller 160 reads data corresponding to the database operation command from the database 250 of the flash memory 180 and transmits it to the database operation circuit 170.
  • the database operation circuit 170 executes the database operation command 500 on the received data and transmits the result to the DBMS 200.
  • the DBMS 200 receives the execution result of the database operation command 500 from the flash module 150 (S34).
  • the DBMS 200 determines whether or not the number CNT of database operation commands 500 that have been executed by the flash module 150 has reached a predetermined value (for example, 100).
  • the DBMS 200 proceeds to step S35 if the number CNT of database operation commands 500 that have been executed has reached a predetermined value, and proceeds to step S39 if the number CNT of database operation commands 500 that have been executed has not been reached.
  • step S351 similar to step S6 in FIG. 7 of the first embodiment, the DBMS 200 detects a soft error in units of FPGA frames.
  • the DBMS 200 resets the number CNT of the database operation commands 500 that have been executed to 0 (S36), and receives the detection result of the soft error from the database operation circuit 170 (S37). Then, the DBMS 200 determines the presence or absence of a soft error from the detection result (S38). If a soft error has occurred, the DBMS 200 proceeds to step S42, and if no soft error has occurred, the DBMS 200 proceeds to step S399.
  • step S42 where a soft error has occurred, as in the second embodiment, the DBMS 200 issues a repair command to the database operation circuit 170, returns to step 33, and issues a database operation command again.
  • step S39 it is determined whether all execution results of the generated database operation command have been received. If the DBMS 200 has received all execution results of the database operation command 500 corresponding to SQL, the DBMS 200 proceeds to step S40. On the other hand, if there is a database operation command 500 that has not yet been received, the process returns to step S33 to issue the remaining database operation commands.
  • step S40 if the variable CNT indicating the number of executed database operation commands is greater than 0, there is an execution result for which soft error detection has not been completed, so the DBMS 200 returns to step 35 and returns the soft error. Repeat the detection process.
  • the DBMS 200 aggregates all execution results and transmits them to the client computer 300 (S41).
  • the DBMS 200 executes the FPGA soft error detection processing of the database operation circuit 170 each time the number of executions of the database operation command reaches a predetermined value, and if a soft error has occurred, the repair command Issue the database operation command again after issuing.
  • the FPGA soft error detection process is executed every time the execution number CNT of the database operation commands reaches a predetermined value. 170 enables efficient processing. That is, if a soft error has been detected after completion of all database operation commands and a soft error has occurred, processing time will increase if all database operation commands are executed again.
  • the DBMS 200 executes the soft error detection process every time the execution number CNT of the database operation command reaches a predetermined value, so that the amount of re-execution of the database operation command after the soft error occurs can be reduced. It is possible to shorten the overall processing time when a soft error occurs.
  • FIG. 10 is a block diagram showing an example of a computer system according to the fourth embodiment of the present invention.
  • the fourth embodiment shows an example in which the file search service 260 is provided to the client computer 300 in place of the DBMS 200 shown in the first embodiment.
  • one or more files 270 are stored in the flash memory 180 of the flash module 150 in place of the database 250 in the first embodiment, and a file search circuit 190 configured by FPGA is used in place of the database operation circuit 170. It is incorporated in the flash module 150.
  • the file search service 260 is stored in the memory 102 of the server 100 in place of the DBMS 200 of the first embodiment.
  • the file search service 260 receives a search target character string from the client computer 300, selects a file 270 including the search target character string from the flash memory 180, and notifies the client computer 300 of the file.
  • the file search service 260 generates a plurality of search commands from the search target character string and issues them to the flash module 150 in the same manner as the DBMS 200 of the first embodiment.
  • the flash module controller 160 acquires data specified by a plurality of search commands from the file 270 and transmits the data to the file search circuit 190.
  • the file search circuit 190 executes a plurality of search commands for the received data, and transmits the search command execution results to the server 100.
  • the file search service 260 of the server 100 executes a soft error detection process in the file search circuit 190 when execution of all search commands is completed. If no soft error has occurred, the search command execution results are aggregated in the same manner as in the first embodiment, and then the client computer 300 is responded.
  • the file search service 260 if a soft error has occurred, notifies the client computer 300 that a soft error has occurred as in the first embodiment.
  • the file search service 260 issues an FPGA repair command to the file search circuit 190 and then executes the search command again.
  • the FPGA soft error detection is performed after all of the plurality of search commands are executed. Therefore, the soft error is detected as compared with the case where the soft error detection is executed for each database operation command. It is possible to shorten the time required for detection of. As a result, it is possible to suppress an increase in processing time when executing data processing in the FPGA while detecting soft errors.
  • the soft error detection can be performed only on the FPGA area (frame number) used in the search command, thereby shortening the time required for the soft error detection.
  • the processing performance of the flash module 150 can be improved.
  • the present invention is applied to the database 250
  • the present invention is applied to the file search service 260
  • the present invention can be applied to an FPGA that processes data read from 180.
  • each of the above-described configurations, functions, processing units, processing means, and the like may be realized by hardware by designing a part or all of them with, for example, an integrated circuit.
  • each of the above-described configurations, functions, and the like may be realized by software by the processor interpreting and executing a program that realizes each function.
  • Information such as programs, tables, and files that realize each function can be stored in a memory, a hard disk, a recording device such as an SSD (Solid State Drive), or a recording medium such as an IC card, an SD card, or a DVD.
  • control lines and information lines indicate what is considered necessary for the explanation, and not all the control lines and information lines on the product are necessarily shown. Actually, it may be considered that almost all the components are connected to each other.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (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)

Abstract

プロセッサとメモリとを有する計算機と、前記計算機に接続されてデータを格納するストレージ装置は、不揮発性半導体記憶部に対する読み書きを制御する制御部からデータと演算コマンドを取得してデータの演算を行うFPGAを有し、前記計算機が、受け付けたアクセス要求から演算コマンドを生成してストレージ装置に送信し、前記計算機が、ストレージ装置から演算コマンドの実行結果を受信し、演算コマンドの実行結果の数が所定値になると、FPGAにソフトエラーの検出を指令し、生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には実行結果を送信する。

Description

計算機システム及び計算機システムの制御方法
 本発明は、FPGAを用いたアクセラレータを有する計算機システムに関する。
 近年、FPGA(Field-Programmable Gate Array)を用いてデータ処理の一部を実行する技術が用いられている。例えば、特許文献1では、計算機にFPGAを含むデバイスを付加し、当該デバイスによってデータ処理を実行している。
 FPGAを用いた場合、中性子の衝突などによりハードウェアの実行結果などが異常になるソフトエラーが発生する可能性がある。
 非特許文献1に示すように、FPGAのベンダは、ソフトエラーの検知及び修正機能を提供している。FPGAのベンダが適用するソフトエラーチェック機能では、FPGAをフレームと呼ばれる小領域に分割し、各フレームに対する誤り検出符号(CRC)を予め算出しておく。そして、FPGAのチェック機能は、CRCを用いて該当フレームにおけるエラーの有無を判定し、エラーがある場合には、エラー信号をFPGAの外部に送信する。また、特許文献2では、検出部がソフトエラーを検出すると、通信制御部が、通信装置と上位装置との通信パスの状態をビジー状態に遷移させることを特徴とするストレージ制御装置が開示されている。
米国特許第8095508号明細書 米国特許出願公開第2014/0095928号明細書
 非特許文献1に開示されるように、FPGAのソフトエラーのチェックには数msから数秒の時間を要する。そのため、FPGAでデータ処理を実行する際、コマンドを実行させる度にソフトエラーチェックを行うと、ソフトエラーチェックに要する時間が増大する、という問題があった。また、FPGA回路全体のエラーチェックを行うと、エラーチェックに要する時間が増大する。
 そこで本発明は、上記問題点に鑑みて成されたもので、ソフトエラーチェックを実施しながらも、FPGAでデータ処理を実行する際に処理時間が増大するのを抑制することを目的とする。
 本発明は、プロセッサとメモリとを有する計算機と、前記計算機に接続されてデータを格納するストレージ装置と、を有する計算機システムであって、前記ストレージ装置は、不揮発性半導体メモリを有して、データを格納する不揮発性半導体記憶部と、前記不揮発性半導体記憶部に対する読み書きを制御する制御部と、前記制御部から前記データと演算コマンドを取得して、前記演算コマンドに応じて前記データの演算を行うFPGAと、を有し、前記計算機は、前記データへのアクセス要求を受け付ける受信部と、前記アクセス要求から1以上の演算コマンドを生成するコマンド生成部と、前記ストレージ装置に前記演算コマンドを送信するコマンド送信部と、前記ストレージ装置から前記演算コマンドの実行結果を受信する演算結果受信部と、前記演算コマンドの実行結果を集約する集約部と、前記集約した演算コマンドの実行結果を応答する応答部と、前記FPGAのソフトエラーを検出するFPGAチェック部と、を有し、前記FPGAチェック部は、前記演算コマンドの実行結果の数が所定値になると、前記FPGAにソフトエラーの検出を指令し、前記FPGAからソフトエラーの有無を受信し、前記応答部は、前記生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には前記集約した実行結果を送信する。
 本発明によれば、計算機は、FPGA含むストレージ装置に複数のコマンドを発行した後にFPGAのソフトエラーの検出処理を実施するので、一つ一つのコマンドに対してソフトエラーチェックを実行する場合と比較して、ソフトエラーの検出に要する時間を短縮することが可能となる。また、計算機は、発行したコマンドで使用したFPGAの領域に対してのみ、ソフトエラーの検出処理を実行するため、ソフトエラーの検出処理に要する時間を短縮することが可能となる。
本発明の第1の実施例を示し、計算機システムの一例を示すブロック図である。 本発明の第1の実施例を示し、DBMSの機能の一例を示すブロック図である。 本発明の第1の実施例を示し、フレーム管理テーブルの一例を示す図である。 本発明の第1の実施例を示し、データベース演算回路のフレームの一例を示す図である。 本発明の第1の実施例を示し、コマンド管理テーブルの一例を示す図である。 本発明の第1の実施例を示し、サーバがデータベース演算回路に発行するコマンドの一例を示す図である。 本発明の第1の実施例を示し、サーバで行われる処理の一例示すフローチャートである。 本発明の第2の実施例を示し、サーバで行われる処理の一例示すフローチャートである。 本発明の第3の実施例を示し、サーバで行われる処理の一例示すフローチャートである。 本発明の第4の実施例を示し、計算機システムの一例を示すブロック図である。
 以下、本発明の一実施形態について添付図面を用いて説明する。
 図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)

  1.  プロセッサとメモリとを有する計算機と、
     前記計算機に接続されてデータを格納するストレージ装置と、を有する計算機システムであって、
     前記ストレージ装置は、
     不揮発性半導体メモリを有して、データを格納する不揮発性半導体記憶部と、
     前記不揮発性半導体記憶部に対する読み書きを制御する制御部と、
     前記制御部から前記データと演算コマンドを取得して、前記演算コマンドに応じて前記データの演算を行うFPGAと、を有し、
     前記計算機は、
     前記データへのアクセス要求を受け付ける受信部と、
     前記アクセス要求から1以上の演算コマンドを生成するコマンド生成部と、
     前記ストレージ装置に前記演算コマンドを送信するコマンド送信部と、
     前記ストレージ装置から前記演算コマンドの実行結果を受信する演算結果受信部と、
     前記演算コマンドの実行結果を集約する集約部と、
     前記集約した演算コマンドの実行結果を応答する応答部と、
     前記FPGAのソフトエラーを検出するFPGAチェック部と、を有し、
     前記FPGAチェック部は、
     前記演算コマンドの実行結果の数が所定値になると、前記FPGAにソフトエラーの検出を指令し、前記FPGAからソフトエラーの有無を受信し、
     前記応答部は、
     前記生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には前記集約した実行結果を送信することを特徴とする計算機システム。
  2.  請求項1に記載の計算機システムであって、
     前記不揮発性半導体記憶部のデータはデータベースであって、
     前記アクセス要求は、前記データベースに対するSQLを含み、
     前記コマンド生成部は、前記SQLに対応する1以上の演算コマンドを生成することを特徴とする計算機システム。
  3.  請求項2に記載の計算機システムであって、
     前記計算機は、
     前記SQLで使用する演算コマンドを格納するコマンド管理情報と、
     前記FPGAに設定された演算コマンドを実行する演算要素の識別子を格納するフレーム管理情報と、を有し、
     前記FPGAチェック部は、
     前記演算コマンドで実行された前記FPGAの演算要素の識別子を指定してソフトエラーの検出を指令することを特徴とする計算機システム。
  4.  請求項1に記載の計算機システムであって、
     前記FPGAチェック部は、
     前記FPGAからソフトエラーを検出した場合には、当該FPGAに修復コマンドを発行することを特徴とする計算機システム。
  5.  請求項4に記載の計算機システムであって、
     前記コマンド送信部は、前記FPGAが修復コマンドを完了した後に、再度前記生成した演算コマンドを前記ストレージ装置に送信することを特徴とする計算機システム。
  6.  請求項1に記載の計算機システムであって、
     前記所定値は、前記コマンド生成部が生成した演算コマンドの数であって、
     前記FPGAチェック部は、
     前記演算コマンドが全て完了した後に、前記FPGAにソフトエラーの検出を指令する
    ことを特徴とする計算機システム。
  7.  プロセッサとメモリとを有する計算機と、前記計算機に接続されてデータを格納するストレージ装置と、を制御する計算機システムの制御方法であって、
     前記ストレージ装置は、
     不揮発性半導体メモリを有して、データを格納する不揮発性半導体記憶部と、
     前記不揮発性半導体記憶部に対する読み書きを制御する制御部と、
     前記制御部から前記データと演算コマンドを取得して、前記演算コマンドに応じて前記データの演算を行うFPGAと、を有し、
     前記制御方法は、
     前記計算機が、前記データへのアクセス要求を受け付ける第1のステップと、
     前記計算機が、前記アクセス要求から1以上の演算コマンドを生成する第2のステップと、
     前記計算機が、前記ストレージ装置に前記演算コマンドを送信する第3のステップと、
     前記計算機が、前記ストレージ装置から前記演算コマンドの実行結果を受信する第4のステップと、
     前記計算機が、前記演算コマンドの実行結果を集約する第5のステップと、
     前記計算機が、前記演算コマンドの実行結果の数が所定値になると、前記FPGAにソフトエラーの検出を指令し、前記FPGAからソフトエラーの有無を受信する第6のステップと、
     前記計算機が、前記生成した演算コマンドに対する全ての実行結果を受信し、かつ、前記ソフトエラーが無い場合には前記集約した実行結果を送信する第7のステップと、
    を含むことを特徴とする計算機システムの制御方法。
  8.  請求項7に記載の計算機システムの制御方法であって、
     前記不揮発性半導体記憶部のデータはデータベースであって、
     前記アクセス要求は、前記データベースに対するSQLを含み、
     前記第2のステップは、前記SQLに対応する1以上の演算コマンドを生成することを特徴とする計算機システムの制御方法。
  9.  請求項8に記載の計算機システムの制御方法であって、
     前記第6のステップは、
     前記SQLで使用する演算コマンドを格納するコマンド管理情報と、前記FPGAに設定された演算コマンドを実行する演算要素の識別子を格納するフレーム管理情報と、から前記演算コマンドで実行された前記FPGAの演算要素の識別子を指定してソフトエラーの検出を指令することを特徴とする計算機システムの制御方法。
  10.  請求項7に記載の計算機システムの制御方法であって、
     前記第6のステップは、
     前記FPGAからソフトエラーを検出した場合には、当該FPGAに修復コマンドを発行することを特徴とする計算機システムの制御方法。
  11.  請求項10に記載の計算機システムの制御方法であって、
     前記第3のステップは、
     前記FPGAが修復コマンドを完了した後に、再度前記生成した演算コマンドを前記ストレージ装置に送信することを特徴とする計算機システムの制御方法。
  12.  請求項7に記載の計算機システムの制御方法であって、
     前記所定値は、前記第2のステップで生成した演算コマンドの数であって、
     前記第6のステップは、
     前記演算コマンドが全て完了した後に、前記FPGAにソフトエラーの検出を指令する
    ことを特徴とする計算機システムの制御方法。
PCT/JP2015/068646 2015-06-29 2015-06-29 計算機システム及び計算機システムの制御方法 WO2017002157A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US15/571,050 US10353768B2 (en) 2015-06-29 2015-06-29 Computer system and computer system control method
JP2017525695A JP6359190B2 (ja) 2015-06-29 2015-06-29 計算機システム及び計算機システムの制御方法
PCT/JP2015/068646 WO2017002157A1 (ja) 2015-06-29 2015-06-29 計算機システム及び計算機システムの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/068646 WO2017002157A1 (ja) 2015-06-29 2015-06-29 計算機システム及び計算機システムの制御方法

Publications (1)

Publication Number Publication Date
WO2017002157A1 true WO2017002157A1 (ja) 2017-01-05

Family

ID=57609310

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/068646 WO2017002157A1 (ja) 2015-06-29 2015-06-29 計算機システム及び計算機システムの制御方法

Country Status (3)

Country Link
US (1) US10353768B2 (ja)
JP (1) JP6359190B2 (ja)
WO (1) WO2017002157A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019144907A (ja) * 2018-02-21 2019-08-29 日立オートモティブシステムズ株式会社 電子制御装置、構成メモリのエラー検出方法
JP2020524853A (ja) * 2017-06-23 2020-08-20 ザイリンクス インコーポレイテッドXilinx Incorporated データベースアクセラレータに対する並列計算オフロード

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017095435A1 (en) * 2015-12-04 2017-06-08 Hewlett Packard Enterprise Development Lp Combining hashes of data blocks
WO2017119098A1 (ja) * 2016-01-07 2017-07-13 株式会社日立製作所 計算機システム及び計算機の制御方法
CN109726153B (zh) * 2017-10-27 2023-02-24 伊姆西Ip控股有限责任公司 用于存储设备的集成装置、相应存储设备及其制造方法
CN110309336B (zh) * 2018-03-12 2023-08-08 腾讯科技(深圳)有限公司 图像检索方法、装置、系统、服务器以及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007199851A (ja) * 2006-01-24 2007-08-09 Nippon Telegr & Teleph Corp <Ntt> 避難行動支援システムとそのサーバ装置
JP2008500604A (ja) * 2003-10-15 2008-01-10 カルポント コーポレイション ハードウェアデータベース管理システム用アーキテクチャ
JP2014071576A (ja) * 2012-09-28 2014-04-21 Fujitsu Ltd ストレージ制御装置,プログラマブル論理回路の復旧処理方法及び制御プログラム
WO2015068285A1 (ja) * 2013-11-08 2015-05-14 株式会社日立製作所 プログラマブルデバイス及びこれを用いた電子システム装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
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
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008500604A (ja) * 2003-10-15 2008-01-10 カルポント コーポレイション ハードウェアデータベース管理システム用アーキテクチャ
JP2007199851A (ja) * 2006-01-24 2007-08-09 Nippon Telegr & Teleph Corp <Ntt> 避難行動支援システムとそのサーバ装置
JP2014071576A (ja) * 2012-09-28 2014-04-21 Fujitsu Ltd ストレージ制御装置,プログラマブル論理回路の復旧処理方法及び制御プログラム
WO2015068285A1 (ja) * 2013-11-08 2015-05-14 株式会社日立製作所 プログラマブルデバイス及びこれを用いた電子システム装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020524853A (ja) * 2017-06-23 2020-08-20 ザイリンクス インコーポレイテッドXilinx Incorporated データベースアクセラレータに対する並列計算オフロード
JP2019144907A (ja) * 2018-02-21 2019-08-29 日立オートモティブシステムズ株式会社 電子制御装置、構成メモリのエラー検出方法
JP7104525B2 (ja) 2018-02-21 2022-07-21 日立Astemo株式会社 電子制御装置、構成メモリのエラー検出方法

Also Published As

Publication number Publication date
US20180165148A1 (en) 2018-06-14
JP6359190B2 (ja) 2018-07-18
US10353768B2 (en) 2019-07-16
JPWO2017002157A1 (ja) 2018-03-29

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’)
EP4036735B1 (en) Method, apparatus and readable storage medium
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
US20140101106A1 (en) Log server and log file storage method
JPWO2015166540A1 (ja) ストレージ装置とそのデータ処理方法及びストレージシステム
US8849966B2 (en) Server image capacity optimization
WO2017070420A1 (en) Proactively tuning a storage array
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
JP2019159437A (ja) 情報処理装置、転送制御方法および転送制御プログラム
US20240103765A1 (en) Non-volatile storage device offloading of host tasks
US20240103756A1 (en) Non-volatile storage device offloading of host tasks
CN111090391B (zh) 一种提高固态硬盘阵列性能的方法与服务器
WO2015159359A1 (ja) 物理計算機
JP2010198263A (ja) データ診断装置、データ診断方法及びデータ診断プログラム

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15897084

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017525695

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 15571050

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15897084

Country of ref document: EP

Kind code of ref document: A1