WO2017029743A1 - 情報処理装置および情報処理システム - Google Patents

情報処理装置および情報処理システム Download PDF

Info

Publication number
WO2017029743A1
WO2017029743A1 PCT/JP2015/073313 JP2015073313W WO2017029743A1 WO 2017029743 A1 WO2017029743 A1 WO 2017029743A1 JP 2015073313 W JP2015073313 W JP 2015073313W WO 2017029743 A1 WO2017029743 A1 WO 2017029743A1
Authority
WO
WIPO (PCT)
Prior art keywords
information processing
configuration
data
cram
fpga
Prior art date
Application number
PCT/JP2015/073313
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 JP2017535205A priority Critical patent/JP6616420B2/ja
Priority to PCT/JP2015/073313 priority patent/WO2017029743A1/ja
Publication of WO2017029743A1 publication Critical patent/WO2017029743A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N99/00Subject matter not provided for in other groups of this subclass

Definitions

  • the present invention relates to an information processing apparatus and an information processing system, for example, an information processing apparatus including a programmable logic represented by an FPGA (Field Programmable Gate Array), and an information processing system including the information processing apparatus.
  • an information processing apparatus including a programmable logic represented by an FPGA (Field Programmable Gate Array), and an information processing system including the information processing apparatus.
  • FPGA Field Programmable Gate Array
  • Non-Patent Document 1 shows a technique for installing an FPGA in each server that constitutes a data center. With this technology, throughput can be improved by appropriately performing dynamic reconfiguration on the FPGA.
  • Non-Patent Document 2 shows the configuration of a CMOS type Ising chip that performs processing based on the Ising model regardless of the FPGA.
  • Changing the configuration means changing the logical connection information, and it is possible to speed up the operation compared to the case where the evolution algorithm is executed programmatically on the processor. At that time, it is desirable that the configuration can be autonomously changed in consideration of the relation of the operation data.
  • the present invention has been made in view of the above, and one of its purposes is to realize improvement in calculation efficiency in an information processing apparatus and an information processing system including a programmable logic.
  • the information processing apparatus includes an FPGA fabric unit, a configuration memory, a data monitoring unit, a configuration control unit, and a CRAM controller.
  • the FPGA fabric unit implements a user logic circuit
  • the configuration memory holds configuration data that defines the circuit configuration of the user logic circuit.
  • the data monitoring unit monitors the operation state of the user logic circuit, and the configuration control unit determines whether or not the configuration data needs to be changed based on the monitoring result.
  • the CRAM controller changes the configuration data in the configuration memory based on the determination result of the configuration control unit.
  • FIG. 1 is a block diagram illustrating an overall schematic configuration example in an information processing system according to a first embodiment of the present invention. It is a block diagram which shows the structural example of the CRAM controller in FIG.
  • FIG. 2 is a flowchart showing an example of a control flow when changing configuration data in the information processing apparatus of FIG. 1.
  • FIG. 4 is a sequence diagram illustrating an example of input / output signals of the information processing apparatus of FIG. 1 in accordance with the flow of FIG. 3. It is the schematic which shows the structural example of the address map of CRAM in the information processing apparatus by Example 2 of this invention.
  • (A) And (b) is a conceptual diagram explaining an example of the change method of configuration data in the information processing apparatus by Example 3 of this invention.
  • FIG. 13 is a waveform diagram showing an example of a specific calculation sequence in FIG. 12.
  • FIG. 18 is a diagram illustrating an example of an overall operation when performing an operation using the configuration of FIG. 17.
  • an FPGA is designed using a logic description language (for example, Verilog HDL (Hardware Description Language) or VHDL), and this logic circuit is described by a technique called RTL (Register Transfer Level).
  • RTL Register Transfer Level
  • integration from RTL to LSI is performed by the following procedure. That is, RTL logical connection information is converted into a so-called netlist in consideration of the physical arrangement of transistors integrated in an actual LSI, and further, static timing analysis simulation (in consideration of timing constraints of each signal line) STA) is performed and the arrangement thereof is optimized, and then integrated into the LSI.
  • the mapping to the CRAM is based on the transistor level connection information (net list) converted from the logic description information in consideration of the physical arrangement of the basic logic circuit and the wiring connection switch integrated in the FPGA. Based on the above, it is realized by converting into a bit string (bit stream) to FPGA CRAM. By storing the bit stream in the FPGA CRAM, a desired operation can be realized by the target FPGA. There is a one-to-one correspondence between the netlist converted from the RTL to achieve a desired function in the FPGA and the CRAM data string (bitstream) stored in the FPGA. ⁇ Overall configuration of information processing system >>
  • FIG. 1 is a block diagram illustrating an overall schematic configuration example of an information processing system according to a first embodiment of the present invention.
  • the information processing system shown in FIG. 1 includes one or more information processing devices (FPGA chip FPGA_CH in this case), an evaluation unit interface EVAL_IF, an external configuration storage device STRG, and various signal lines that connect them.
  • the various signal lines include a control signal line (SCTL), a configuration signal line (SCFG), and a data signal line (SDAT).
  • the configuration example of FIG. 1 can configure a desired information processing system only in the configuration, but can be applied to a part of a processor system and used as a hardware accelerator of the processor system, for example. is there.
  • a storage and a network that are generally provided for performing information processing by a general information processing apparatus are not illustrated, and only a main part related to the configuration change of the FPGA is illustrated.
  • the FPGA chip FPGA_CH includes a plurality of FPGA fabric units FPGA_FAB, a CRAM, a CRAM controller CRAMC, a data monitoring unit CUNT, a chip overall controller CHPC, an on-chip bus DBUS, and a configuration control unit CNFGC.
  • the CRAM holds configuration data for determining the circuit configuration of the user logic circuit.
  • the FPGA fabric unit FPGA_FAB implements a user logic circuit based on the configuration data of the CRAM.
  • the FPGA fabric unit FPGA_FAB includes a programmable logic unit LOG that implements a desired logical truth table by a plurality of LUTs (Lookup table), and a switch unit SW that arbitrarily connects each LUT by a plurality of switches. Prepare.
  • the CRAM controller CRAMC reads / writes configuration data to / from the external configuration storage device STRG.
  • the on-chip bus DBUS transmits an input / output signal of the FPGA fabric unit FPGA_FAB. Specifically, the on-chip bus DBUS transmits communication data between the FPGA fabric units FPGA_FAB or between the FPGA fabric units FPGA_FAB and the data signal line (SDAT).
  • the data monitoring unit CUNT monitors the operation state of the user logic circuit mounted on the FPGA fabric unit FPGA_FAB, for example, by measuring data distribution.
  • the chip general controller CHPC controls the operation of the entire chip.
  • the FPGA fabric unit FPGA_FAB is configured by programmable logic, but in addition to this, the data monitoring unit CUNT, the configuration control unit CNFGC, the CRAM controller CRAMC, and a part of the chip overall controller CHPC May also be configured with programmable logic.
  • the part excluding the FPGA fabric part FPGA_FAB is a hardware processor built in the FPGA (processor hardware pre-installed) or a software core processor (programming logic is used to configure the processor). ) May be used.
  • the FPGA fabric unit FPGA_FAB is described as if it was divided. This is to clearly show that each functional block mounted on the FPGA is logically divided. Of course, in practice, the FPGA fabric FPGA_FAB may be uniformly arranged inside the FPGA.
  • the data signal line (SDAT) is a signal line for transmitting and receiving the data signal SDAT between the plurality of FPGA chips FPGA_CH, and is realized by, for example, a high-speed serial communication line.
  • the configuration signal line (SCFG) is a CRAM configuration signal (configuration data) between a plurality of FPGA chips FPGA_CH or between each FPGA chip FPGA_CH and an external configuration storage device STRG configured by a nonvolatile memory, a hard disk drive, or the like. ) Signal line for transmitting and receiving SCFG.
  • the control signal line (SCTL) is a signal line that transmits a configuration data change request, a change notification, and the like to each FPGA chip FPGA_CH.
  • these signal lines are explicitly divided and described, but it is also possible to transmit by using a shared wiring by a time division multiplexing method or the like.
  • the data monitoring unit CUNT is connected to the on-chip bus DBUS, and monitors the amount of data communication on the on-chip bus DBUS using, for example, a counter circuit.
  • the data monitoring unit CUNT refers to the transmission source and destination information in the data, and performs data communication for each combination of the transmission source and the destination. Measure the amount.
  • the data monitoring unit CUNT is not necessarily limited to the position, and may be provided inside each FPGA fabric unit FPGA_FAB (specifically, an interface unit with the on-chip bus DBUS). In this case, for example, the data monitoring unit CUNT refers to the transmission source information in the received data and measures the data communication amount for each transmission source.
  • the configuration control unit CNFGC determines whether or not the configuration data needs to be changed while referring to the threshold value table TBL based on the monitoring result of the data monitoring unit CUNT. If it is determined that the change is necessary, the configuration control unit CNFGC issues a configuration data change request to the CRAM controller CRAMC.
  • the threshold table TBL stores, for example, communication rate statistical data and the like, and the configuration control unit CNFGC determines that the communication rate based on the monitoring result or the fluctuation amount of the communication rate exceeds the threshold based on the statistical data. Issue a configuration data change request.
  • the CRAM controller CRAMC that has received the change request rewrites the content held in the CRAM (that is, configuration data).
  • FIG. 2 is a block diagram showing a configuration example of the CRAM controller in FIG.
  • the CRAM controller CRAMC performs data exchange with the CRAM access controller CRAMAC that controls reading and writing of the CRAM, an address map holding unit ADRMAP that holds the address map of the CRAM, and CRAM, and data exchange with the external configuration storage device STRG. And a port PT.
  • the CRAM controller CRAM After changing the configuration data, the CRAM controller CRAM performs an encoding code check such as CRC of the configuration data via the port PORT in the code check unit CODECHK, and stores the calculated encoding code in the RAM.
  • an encoding code check such as CRC of the configuration data via the port PORT in the code check unit CODECHK
  • the configuration control unit CNFGC issues a configuration data change request based on the monitoring result of the data monitoring unit CUNT, and the CRAM controller CRMAC responds to the configuration data according to this request.
  • the CRAM access controller CRAMAC receives the configuration data change request, the CRAM access controller CRAMAC refers to the address map holding unit ADRMAP, and reads data to a predetermined CRAM address via the command / address signal CMD.
  • the configuration data (RD) read from the CRAM is input to the configuration update unit CNFG_MDFY via the port PORT.
  • the configuration update unit CNFG_MDFY changes the configuration data and writes the changed configuration data (WT) to the CRAM via the port PORT.
  • the configuration data (WT) is also input to the code check unit CODECHK via the port PORT.
  • the code check unit CODECHK generates an encoded code for the configuration data (WT) and stores it in the RAM.
  • the configuration data (WT) is also stored in the external configuration storage device STRG together with the change history, for example. Further, the CRAM controller CRAMC reads the configuration data from the external configuration storage device STRG as necessary, stores it in the CRAM, and updates the read configuration data with the configuration update unit CNFG_MDFY. It can also be stored in CRAM. Also at that time, processing by the code check unit CODECHK is performed.
  • one of the main features of the system of the first embodiment is that the data monitoring unit CUNT and the configuration control unit CNFGC monitor and determine the operation state of each FPGA fabric unit FPGA_FAB, and based on the determination result.
  • the CRAM controller CRAMC updates CRAM configuration data.
  • the operation state of each FPGA fabric unit FPGA_FAB is, for example, the data communication amount between the FPGA fabric units FPGA_FAB or the data processing amount for each FPGA fabric unit FPGA_FAB, as described above.
  • the amount of data processing for each FPGA fabric unit FPGA_FAB is normally considered to be proportional to the amount of data input / output in each FPGA fabric unit, and can be obtained, for example, from the amount of data communication between the FPGA fabric units.
  • a mechanism that enables writing to the external configuration storage device STRG.
  • a specific method for changing configuration data includes changing some bits of configuration data based on an evolution algorithm or the like. Such processing can be realized by appropriately leaving a history of configuration data in the external configuration storage device STRG.
  • a specific change method there is a method of reinforcing a critical functional block or the like based on a data amount monitoring result. An example of a specific method for changing the configuration data will be described later as appropriate.
  • Non-Patent Document 1 a plurality of user logic circuits (in other words, configuration data) are determined in advance, and the determined user logic circuits are set in a predetermined sequence. It is like switching sequentially along.
  • a user logic circuit A that executes the arithmetic processing A and a user logic circuit B that executes the arithmetic processing B are provided in advance, and when switching from the arithmetic processing A to the arithmetic processing B based on a predetermined sequence, the user logic circuit A is switched accordingly.
  • Reconfigure logic circuit A to user logic circuit B As described above, the general information processing apparatus (FPGA chip FPGA_CH) changes the user logic circuit according to a predetermined procedure without any particular determination.
  • the user logic circuit is autonomously set so that the operation state is improved while monitoring the operation state from a certain user logic circuit (in other words, configuration data). It will be optimized. That is, the information processing apparatus (FPGA chip FPGA_CH) autonomously changes the user logic circuit based on its own determination. Furthermore, for example, when using an evolution algorithm or the like, the system of the first embodiment is, in other words, a circuit location that starts from a certain user logic circuit and monitors the operation state while moving toward an improvement in the operation state. And the user logic circuit is autonomously optimized based on the search result.
  • the evaluation unit interface EVAL_IF monitors the amount of data between the FPGA chips FPGA_CH, and determines whether or not configuration data needs to be changed using a threshold table or the like, similar to the configuration control unit CNFGC described above. Then, the evaluation unit interface EVAL_IF makes a configuration data change request to the predetermined FPGA chip FPGA_CH via the control signal line (SCTL) based on the determination result. In determining the monitoring result, for example, it is possible to determine a parameter having a large influence on the overall performance by appropriately changing parameters in the threshold table. ⁇ Operation of information processing device>
  • FIG. 3 is a flowchart showing an example of a control flow when changing configuration data in the information processing apparatus of FIG.
  • the information processing apparatus (FPGA chip FPGA_CH) monitors data distribution between functional blocks using the data monitoring unit CUNT while performing predetermined arithmetic processing in each FPGA fabric unit (functional block) FPGA_FAB. Data distribution at the time of calculation is monitored (step S101). At this time, as described above, the data monitoring unit CUNT counts, for example, the number of times of data transmission / reception to each functional block and the elapsed time.
  • the information processing apparatus determines whether or not the configuration data needs to be rewritten, for example, when the number of times of data transmission / reception reaches a predetermined number or when a predetermined elapsed time is reached (step S102). Specifically, the configuration control unit CNFGC compares, for example, the communication rate based on the monitoring result of the data monitoring unit CUNT with the communication rate threshold value stored in the threshold value table TBL or the communication rate fluctuation amount threshold value. Judging by things.
  • step S103 enters a process for changing the configuration data of the CRAM.
  • the CRAM access controller CRAMAC and the configuration update unit CNFG_MDFY read the configuration data from the CRAM, change the data (step S103), and write new configuration data to the CRAM (step S104).
  • the CRAM controller CRMAC generates an encoded code using the code check unit CODECHK and stores it in the RAM (step S105), and further performs a process of storing new configuration data in the external configuration storage device STRG (step S105). S106). Such processing is repeated until the predetermined calculation processing is completed (step S107).
  • steps S105 and S106 are sequentially performed, but these processes may be performed in parallel in the background of the process of step S104. By doing so, even higher speed can be realized.
  • FIG. 4 is a sequence diagram showing an example of input / output signals of the information processing apparatus of FIG. 1 in accordance with the flow of FIG.
  • the data monitoring unit CUNT asserts the CNT_S signal (in this case, is controlled to “H” level), and transmits the monitoring result of the bus monitor (DBUS) to the configuration control unit CNFGC.
  • the configuration control unit CNFGC determines whether or not the configuration data needs to be changed. If the change is necessary, the configuration control unit CNFGC asserts the RCONF_S signal at time T2.
  • the CRAM controller CRMAC In response to the assertion of the RCONF_S signal, the CRAM controller CRMAC asserts the CCS_S signal at time T3. In response to this, the chip overall controller CHPC controls the FPGA fabric unit FPGA_FAB accompanying reconfiguration. Specifically, the chip overall controller CHPC transmits the FFS_S signal to the FPGA fabric unit FPGA_FAB.
  • the FFS_S signal includes a reset signal (RESB_S signal), a logical operation execution signal (EXE_S signal), and a status hold signal (HOLD_S signal).
  • REB_S signal reset signal
  • EXE_S signal logical operation execution signal
  • HOLD_S signal status hold signal
  • the chip overall controller CHPC issues a reconfigurable start signal (CCSA_S signal) at time T7, and in response to this, the CRAM controller CRAMC
  • the reconfiguration signal (CRAM_S signal) is asserted (that is, the CRAM configuration data is changed).
  • the user logic circuit in the FPGA fabric unit FPGA_FAB is reconfigured according to the change of the configuration data (CRAMD_S).
  • the user logic circuit of the FPGA fabric unit FPGA_FAB is changed.
  • the present invention is not limited to this, and the bus width of the internal bus is increased or decreased, or a user logic circuit is newly added.
  • it can be implemented in a range where resources in the FPGA chip FPGA_CH are allowed. For example, it may be determined that an increase in functional blocks is necessary according to time T1 in FIG. 4, and in this case, it may be desirable to increase the bus width along with the increase in functional blocks.
  • a determination may be made to increase the bandwidth of data communication between the functional blocks. In such a case, since the configuration change is performed so as to increase the bus width, data communication with the increased bus width is performed after time T13.
  • FIG. 5 is a schematic diagram illustrating a structure example of an address map of the CRAM in the information processing apparatus according to the second embodiment of the present invention.
  • the number is increased or decreased, and the connection relationship between the LUTs ( That is, there is a case where it is desired to change the configuration of the switch unit SW in FIG.
  • Example 3 describes an example of a method for changing configuration data.
  • FIGS. 6A and 6B are conceptual diagrams illustrating an example of a configuration data changing method in the information processing apparatus according to the third embodiment of the present invention.
  • circuit block A (CRCITBK_A) to circuit block C (CRCITBK_C), spare circuit block X (CRCITBK_X), switch block 1 (SWBK1) and switch block 2 (SWBK2), and each circuit block.
  • a CRAM corresponding to each switch block.
  • this figure shows an example in which data processing flows from left to right.
  • This block is an area prepared in advance as a spare in the third embodiment, and by generating the circuit block A (CRCITBK_A) in this portion, it is possible to solve the shortage of processing capability.
  • the CRAM controller CRAMC in FIG. 1 first reads out the CRAM and stores the CRAM address and data corresponding to the circuit block A to be changed in the user memory provided in the FPGA chip FPGA_CH. At this time, the CRAM controller CRAMC in FIG. 1 determines the data of the CRAM address (CADR_X) corresponding to the circuit block X as the same data (CDATA_A) as the circuit block A, as shown in FIG. 6B. .
  • the CRAM controller CRAMC determines the data of the CRAM addresses (CADR_SW1, CADR_SW2) respectively corresponding to the switch blocks 1 and 2 as predetermined data (CDATA_SW1 ′, CDATA_SW2 ′).
  • the data CDATA_SW1 ' is obtained by changing the connection data for the circuit block A included in the data CDATA_SW1 before the change to the connection data for the circuit block X in addition to the circuit block A.
  • the CRAM controller CRAMC writes the configuration data thus determined in the user memory to the CRAM.
  • the CRAM controller CRAMC also generates an encoded code such as ECC or CRC.
  • Such configuration data may be generated by using a memory outside the FPGA chip FPGA_CH. Although it is desirable to provide a transfer path from the RAM to the CRAM in the chip, if it does not exist, it is also possible to transfer it via the external configuration storage device STRG once.
  • autonomous control can be performed so that resources in the FPGA chip FPGA_CH can be effectively used and the maximum performance can be obtained.
  • FIG. 7 is a conceptual diagram illustrating an example of a configuration data changing method in the information processing system according to the fourth embodiment of the present invention.
  • the information processing system illustrated in FIG. 7 includes an FPGA subsystem FPGA_SSYS configured by n + 1 FPGA chips FPGA_CH0 to FPGA_CHn, the evaluation unit interface EVAL_IF illustrated in FIG. 1, and an external configuration storage device STRG.
  • Functional blocks FUNC_A0 to FUNC_A2 are mounted on the FPGA chip FPGA_CH0
  • functional blocks FUNC_B0 to FUNC_B2 are mounted on the FPGA chip FPGA_CH1
  • functional blocks FUNC_C0 to FUNC_C2 are mounted on the FPGA chip FPGA_CH2.
  • the evaluation unit interface EVAL_IF includes an optimization control unit CTLP that optimizes the system.
  • the optimization control unit CTLP has the same functions as the data monitoring unit CUNT, the configuration control unit CNFGC, and the CRAM controller CRAMC shown in FIG.
  • Each FPGA chip FPGA_CH0 to FPGA_CHn also includes an optimization control unit CTLC corresponding to the function.
  • the optimization control unit CTLP of the evaluation unit interface EVAL_IF monitors the data signal line (SDAT) or acquires the monitoring result in the optimization control unit CTLC in each chip. , And monitors the processing capacity in the FPGA subsystem FPGA_SSYS. For example, when the optimization control unit CTLP determines that the arithmetic processing capability tends to be insufficient by statistical processing using the threshold value table, the optimization control unit CTLP generates a new functional block.
  • SDAT data signal line
  • FPGA_SSYS FPGA subsystem
  • the functional block FUNC_A0 of the FPGA chip FPGA_CH0, the functional block FUNC_B2 of the FPGA chip FPGA_CH1, and the functional block FUNC_C1 of the FPGA chip FPGA_CH2 are frequently used, and the optimization control unit CTLP efficiently enhances these blocks. It is assumed that In this case, for example, the optimization control unit CTLP reads the configuration data of each functional block FUNC_A0, FUNC_B2, FUNC_C1 from each chip via the configuration signal line (SCFG), and implements the control signal to implement the configuration data. An instruction is given to the optimization controller CTLC of the FPGA chip FPGA_CHn via the line (SCTL).
  • the switch unit SW can be mounted without any problem if processing such as “H” level fixing, “L” level fixing, and open processing is performed on the remaining pins.
  • autonomous control can be performed so that the resources in the information processing system can be effectively used and the maximum performance can be obtained.
  • FIG. 8 is a block diagram showing an overall schematic configuration example of an information processing system according to the fifth embodiment of the present invention.
  • FIG. 1 shows an example in which configuration data is changed using statistical data of data exchange on the on-chip bus DBUS, in the fifth embodiment, not according to the data flow but according to data processing. Change configuration data.
  • the data monitoring unit CUNT is not connected to the on-chip bus DBUS, but directly connected to each FPGA fabric unit FPGA_FAB.
  • the data monitoring unit CUNT transmits a configuration switching signal to the configuration control unit CNFGC in response to the calculation processing end signal from the FPGA fabric unit FPGA_FAB.
  • the calculation processing end signal is transmitted every time a predetermined unit of calculation processing is ended by the FPGA fabric unit FPGA_FAB.
  • the calculation process end signal itself may be used, but the time interval from the start to the end of the calculation process, the number of executions of the calculation process, and the like are measured (that is, the load of the calculation process and the calculation number). It is more effective to measure the frequency of processing).
  • the time interval from the start to the end of the calculation process, the number of executions of the calculation process, and the like are measured (that is, the load of the calculation process and the calculation number). It is more effective to measure the frequency of processing).
  • a time-series transition of arithmetic processing can be predicted in advance based on analysis of a program, it is possible to incorporate a timer and switch at a set time.
  • interrupt processing can be extended to the concept of updating the arithmetic processing unit.
  • an interrupt is strongly thought of as branching software in order to respond to an urgent processing routine or an additional calculation processing request in a normal control sequence.
  • the system of the present embodiment can include not only such fixed so-called designed program branches but also the concept of expansion of additional functions that were not considered at the beginning of design.
  • interrupt processing is a service that is processed even if it is designed with low priority or is not in the original design because it is infrequent or out of the expected range at the beginning of the design. And can occur frequently as the application evolves. That is, a situation may occur in which the priority of new arithmetic processing is dynamically increased.
  • hardware processing can be evolved so as to adapt to changes in the situation in response to such dynamic priority increase.
  • autonomous control can be performed so that the resources in the information processing apparatus can be effectively used and the maximum performance can be obtained.
  • FIG. 9 is a conceptual diagram illustrating an example of a configuration data changing method in the information processing apparatus according to the sixth embodiment of the present invention.
  • the information processing device FPGA_CH illustrated in FIG. 9 includes a plurality of functional blocks FUNC_A to FUNC_F, a switch unit SW that connects the functional blocks, and an optimization control unit CTLC as described in FIG.
  • the function block FUNC_A includes an output interface IFO, and one signal from the output interface IFO is connected to the function block FUNC_D, one to the function block FUNC_E, and two to the function block FUNC_F.
  • the optimization control unit CTLC determines that the relationship between the function block FUNC_A and the function block FUNC_D is strong, the optimization control unit CTLC changes the degree of coupling between the function block FUNC_A and the function block FUNC_D.
  • the signals from the function block FUNC_A are changed so that two are connected to the function block FUNC_D, one is connected to the function block FUNC_E, and one is connected to the function block FUNC_F. Since this connection can be changed flexibly depending on the data connectivity between the functional blocks, it is expected that the calculation speed of the entire chip can be improved while utilizing limited transistors and wiring assets. In order to make such a change easily, it is desirable to use a bit stream of CRAM as shown in the second embodiment.
  • autonomous control can be performed so that resources in the information processing apparatus can be effectively used and the maximum performance can be obtained.
  • the seventh embodiment another example of the method for changing the configuration data will be described together with the modification of the information processing system shown in FIG.
  • the present embodiment aims to improve calculation efficiency and calculation speed by using information such as the performance of functional blocks and data exchange between functional blocks.
  • the previous examples were mainly related to reuse of existing design data, increase / decrease in the number of functional blocks and redefinition of connection relationships, and autonomous integration of newly designed hardware after operation. .
  • a mechanism for intentionally causing CRAM bit inversion and improving arithmetic performance by changing logic will be described.
  • FIG. 10 is a block diagram showing a schematic configuration example of the main part of the information processing system according to the seventh embodiment of the present invention.
  • the information processing system shown in FIG. 10 includes an FPGA subsystem FPGA_SSYS composed of a plurality of FPGA chips FPGA_CH0 to FPGA_CHn.
  • an evolution block EVOL for controlling the evolution of the subsystem is newly provided, a signal line (SEVL) for promoting the evolution is added, and each FPGA chip is configured as necessary.
  • a configuration data generation unit GEN for evolving data is provided.
  • the configuration data generation unit GEN of each chip receives the enable signal and setting information from the evolution block EVOL independently via the signal SEVL, and updates the CRAM.
  • the same functional blocks FUNC_A0, FUNC_A1, and FUNC_A2 are mounted on the FPGA chips FPGA_CH0 and FPGA_CH1, and the configuration data of the FPGA chip FPGA_CH1 is intentionally changed during the subsequent arithmetic processing. An action is performed to see what happens to the result.
  • the FPGA chip FPGA_CH0 is a functional block that advances data processing in a designed state
  • the FPGA chip FPGA_CH1 is an evaluation block that starts with the designed data and obtains a better logical configuration.
  • a method for changing hardware to a better state while utilizing actual data is shown.
  • ⁇ CRAM update may include random bit inversion or partial modification of CRAM by genetic algorithm.
  • the configuration data generation unit GEN may be provided in the configuration update unit CNFG_MDFY of FIG.
  • the configuration update unit CNFG_MDFY randomly selects a bit for the configuration data read from the CRAM using a random number or a pseudo-random number, inverts the selected bit, and then writes it back to the CRAM.
  • the remaining chromosomes are further subjected to crossover and mutation operations to search for the chromosome with the highest fitness (that is, the configuration data with the best operating state). can do.
  • configuration data that is not deceived is stored in the external configuration storage device STRG, and the deceived configuration data is deleted from the external configuration storage device STRG.
  • the evaluation unit interface EVAL_IF sequentially compares the FPGA chip FPGA_CH0 and the FPGA chip FPGA_CH1 (such as comparison of data validity and processing capability). Based on the comparison result, the evolution block EVOL performs, for example, the above-described trapping, and instructs the configuration data generation unit GEN of the FPGA chip FPGA_CH1 to update the CRAM.
  • the configuration data generation unit GEN updates the CRAM by performing operations such as crossover and mutation using the configuration data that has not been deceived by the external configuration storage device STRG.
  • comparison method in the evaluation unit interface EVAL_IF comparison of time intervals of calculation processing, performance of calculation results, and the like can be considered.
  • the time interval of the former calculation process simply measures the start and end of the process. At that time, it is possible to realize higher-speed processing by comparing the time intervals before and after the trial while sequentially performing the trial with the FPGA chip FPGA_CH1 with reference to the data at the time of design (that is, the fitness is higher). Config data can be obtained. Regarding the performance of the latter calculation result, for example, when performing processing such as image recognition, a method of determining the degree of improvement of the recognition rate as a threshold value can be considered.
  • Such processing is stored while utilizing actual commercial data, and better configuration data is stored in the external configuration storage device STRG. In other words, learning will be carried out using live data, and more efficient processing will be sought. At that time, it is desirable to be able to simultaneously store the evaluation result, processing time, and processing data information in the evaluation unit interface EVAL_IF. Further, although not shown in the evaluation by the evaluation unit interface EVAL_IF, the power efficiency can be evaluated based on the measurement result of the power monitor or the like.
  • FIG. 11 is a circuit diagram showing a configuration example of a general LUT.
  • a general LUT is configured such that information in the CRAM is selectively output via a selector.
  • the LUT is configured by a 16-bit CRAM.
  • about 1 million LUTs are integrated in an FPGA, and the number of data processing bits is enormous.
  • the system of the seventh embodiment is one means for obtaining better performance by autonomously evolving functional blocks designed by human experience and logic synthesis tools beyond the assumed range of humans.
  • the optimization of a predetermined FPGA chip is attempted based on the comparison result between the FPGA chips in the information processing system. Similarly, the comparison result between the FPGA fabric units in the FPGA chip. It is also possible to optimize a predetermined FPGA fabric part based on the above. Also, here, in order to reliably obtain error-free data, a function block for proceeding with data processing and an evaluation block for proceeding with optimization are provided. If acceptable, both data processing and optimization can proceed with a single block.
  • FIG. 12 is a schematic diagram illustrating a configuration example of a main part of an information processing apparatus according to the eighth embodiment of the present invention.
  • the configuration shown in FIG. 12 implements an Ising chip using programmable logic and evolves data stored in the CRAM.
  • FIG. 12 shows an example in which four CRAMs each having 16 bits and four LUTs corresponding to the four CRAMs are provided.
  • This CRAM is equipped with data to be processed, and by connecting the inputs of the four LUTs in common, for example, a predetermined 1 bit (for example, bit # 0) in each of the four CRAMs is configured. It is possible to select and output simultaneously through the selectors.
  • the predetermined 1 bit is equivalent to 16 bits, if information composed of 4 bits is defined as one surface, it is possible to select information on 16 surfaces. For example, in the case of a computer that performs operations while changing this 4-bit information, 16 types of operations can be realized with four LUTs.
  • FIG. 13 is a waveform diagram showing an example of a specific calculation sequence in FIG.
  • the input signals I0 to I3 are changed in synchronization with the clock, and at the same time, the clock is input to the interaction determination circuit INTRAC and the data generation unit DGEN.
  • the configuration of the CRAM is executed in synchronization with the clock while performing the calculation on the CRAM 16 surface.
  • the input signals I0 to I3 can perform 16 operations. When each operation is called a state, four CRAM bits corresponding to four LUTs are used. Information is sequentially output and calculated from 0 to 15 for each state.
  • output signals from the four LUTs are also input to the interaction determination circuit INTRAC, and the interaction determination circuit INTRAC is stored in the CRAM by determining the interaction of the output signals from the four LUTs. Evaluate the correlation of data.
  • the interaction determination circuit INTRAC for example, adds correlation and weighting parameters between bits, and performs a product-sum operation and an averaging process.
  • the data generation unit DGEN determines whether to invert or leave the bit information stored in the CRAM. As described above, in the eighth embodiment, the relationship between the bit information of the CRAM is detected, and the CRAM is updated.
  • FIG. 14 to 16 are diagrams for explaining the concept of the Ising chip.
  • an Ising model As a calculation method of a ground state of a physical phenomenon, a method called an Ising model has been proposed. This is a calculation model for calculating the energy state of the particles that make up a substance, especially the direction of spin, and obtaining a more stable state.For example, particles with spin are arranged in a plane and their nearest neighbors are calculated. It calculates the interaction between spins and leads to a stable state.
  • FIG. 14 shows an example of mapping a two-dimensional Ising model to an FPGA as an example.
  • each Ising spin particle (referred to as an Ising node (Ind)) is represented by a circle and is uniformly arranged on a plane. In this figure, they are grouped in 6 ⁇ 6 matrix units and defined as PE (Primitive Element). Hereinafter, an example in which this is mapped to the FPGA will be described.
  • FIG. 15 is a diagram showing a connection relationship between adjacent Ising nodes Ind by extracting one PE.
  • eight interaction lines Ib Interaction bond
  • the calculation is executed for each basic unit (hereinafter referred to as EU: Execution Unit) connected by the eight interaction lines Ib.
  • FIG. 15 there are 16 combinations of operations when using the data stored in the initial CRAM bits as combinations of operations, and one PE is shown in FIG.
  • 16 EUs EU0 to EU15
  • FIG. 15 for ease of viewing, the relations are shown so as not to overlap, and all 16 combinations are represented in nine diagrams (A) to (I).
  • FIG. 15 Details of the EU configuration are shown in FIG.
  • the EU is composed of nine Ising nodes Ind0 to Ind8 and eight interaction lines Ib0 to Ib7.
  • each Ising node is assigned to the LUT, and the calculation of the interaction is performed by the user logic circuit.
  • FIG. 17 is a schematic diagram showing a configuration example when PE in FIG. 15 is mapped to the FPGA.
  • FIG. 17 shows nine LUTs (LUT0 to LUT8) and 4 bits that are input to each LUT.
  • Input signals I0 to I3 a switch circuit SWC that connects the input signals to nine LUTs, a flip-flop FF that temporarily holds operation data, a correlation evaluation circuit IEU, a memory RAM, and an address converter ADRCV , CRAM write circuit CRWT is shown.
  • the correlation evaluation circuit IEU corresponds to the interaction determination circuit INTRAC and the data generation unit DGEN in FIG. 12, calculates the interaction of the Ising node, and calculates the calculation result of the interaction (E) and each calculation result derived from the calculation result.
  • Data of the Ising nodes ( ⁇ i, ⁇ j) is stored in the memory RAM.
  • the memory RAM is mounted in the FPGA in advance.
  • the CRAM write circuit CRWT writes the data of the Ising node calculation result written in the memory RAM back to the CRAM by designating an address.
  • the address conversion unit ADRCV has a function of changing an address when the CRAM write circuit CRWT performs write back.
  • Each LUT has a corresponding CRAM.
  • a 4-input LUT is assumed, and a 16-bit CRAM is associated with one LUT.
  • CRAM0 corresponds to LUT0, and the CRAM has 16 bits of bits # 0 to # 15.
  • FIG. 17 The configuration of FIG. 17 will be described in correspondence with FIG. In FIG. 15, in one EU, there are nine Ising nodes Ind and eight interaction lines Ib that perform the interaction. Although eight interaction lines are defined for the Ising node Ind, nine Ising nodes Ind that are the basis of this interaction are realized by nine LUTs. In the example of FIG. 17, four input signals I0 to I3 are input in common to each of the nine LUTs. As in the case of FIG. 13, when 16 types of inputs are performed with four input signals, the nine LUTs select one bit from the corresponding CRAM and send it to the subsequent flip-flop FF. Output operation is performed 16 times.
  • the 16 EU0 to EU15 shown in FIG. 15 respectively correspond to bit # 0 to bit # 15 of the CRAM of each LUT. That is, EU0 in FIG. 15 corresponds to bit # 0 of CRAM0 to CRAM8, and bit # 0 of CRAM0 to CRAM8 corresponds to Ising nodes Ind0 to Ind8 (FIG. 16) of EU0, respectively. Further, EU1 in FIG. 15 corresponds to bit # 1 of CRAM0 to CRAM8, and bit # 1 of CRAM0 to CRAM8 corresponds to Ising nodes Ind0 to Ind8 (FIG. 16) of the EU1, respectively.
  • the data stored in the CRAM is 0, 1
  • a process of converting 0 into -1 is performed at the time of four arithmetic operations.
  • the increase / decrease in energy is calculated.
  • the direction of spin of the particles is changed so that the energy state becomes lower. Since the spin direction of the particle is described by ⁇ i and ⁇ j, ⁇ i and ⁇ j updated with the calculation result are written in the memory RAM.
  • the PE described in FIG. 14 needs to be calculated by defining not only the section shown in this figure but also a PE that is shifted by one Ising node vertically and horizontally. Therefore, instead of changing the basic hardware configuration shown in FIG. 17, the memory address of the CRAM that stores EU Ising node information is changed, so that the Ising node position to be evaluated is expressed as if it was changed. .
  • FIG. 17 shows a simplified signal path for this purpose. Actually, data transfer may be transfer between memories. This is because after the transfer between the memories, address conversion for setting in the CRAM may be performed and stored in the CRAM.
  • FIG. 17 shows an example in which the CRAM write circuit CRWT is included in the PE
  • the CRAM write circuit CRWT may be integrated in a chip.
  • the FPGA can be used as an LSI that integrates a logic circuit in a so-called normal meaning, and no problem occurs even in general-purpose use.
  • COTS Common Off-The Shelf
  • FIG. 18 is a diagram showing an example of the overall operation when performing calculations using the configuration of FIG.
  • the state of the pattern A is a state in which 36 Ising nodes are collected to form a PE, which is arranged vertically and horizontally.
  • the state of the pattern B is a state where PEs are defined by shifting the collection of Ising nodes to the right by one Ising node, and are arranged vertically and horizontally.
  • the state of the pattern C is a state in which PEs are defined by shifting the collection of Ising nodes further to the right by one Ising node, and are arranged vertically and horizontally.
  • a four-input LUT has been described as an example, but the number of LUT inputs is not limited to four.
  • the number of inputs is 5
  • the number of EUs can be doubled up to 32, and the two PEs can be realized by nine LUTs, so that there is an effect of higher integration.
  • the method of the eighth embodiment can be applied even if the number of LUT inputs is other than four.
  • the present invention made by the present inventor has been specifically described based on the embodiment.
  • the present invention is not limited to the embodiment, and various modifications can be made without departing from the scope of the invention.
  • the above-described embodiment has been described in detail for easy understanding of the present invention, and is not necessarily limited to one having all the configurations described.
  • a part of the configuration of one embodiment can be replaced with the configuration of another embodiment, and the configuration of another embodiment can be added to the configuration of one embodiment.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Logic Circuits (AREA)
  • Stored Programmes (AREA)

Abstract

プログラマブルロジックを含んだ情報処理装置および情報処理システムにおいて、演算効率の向上を実現する。そのため、情報処理装置は、FPGAファブリック部FPGA_FABと、コンフィギュレーションメモリCRAMと、データ監視部CUNTと、コンフィグ制御部CNFGCと、CRAMコントローラCRAMCとを有する。FPGAファブリック部は、ユーザ論理回路を実装し、コンフィギュレーションメモリは、当該ユーザ論理回路の回路構成を定めるコンフィグデータを保持する。データ監視部は、ユーザ論理回路の動作状態を監視し、コンフィグ制御部は、当該監視結果に基づいてコンフィグデータの変更要否を判定する。CRAMコントローラは、コンフィグ制御部の判定結果に基づいてコンフィギュレーションメモリのコンフィグデータを変更する。

Description

情報処理装置および情報処理システム
 本発明は、情報処理装置および情報処理システムに関し、例えば、FPGA(Field Programmable Gate Array)を代表とするプログラマブルロジックを含んだ情報処理装置、および当該情報処理装置を備えた情報処理システムに関する。
 演算の高速化や高機能化を実現するために、フィールドプログラマブル論理LSIによるダイナミックリコンフィグ技術が知られている。この技術は、予めユーザが設計したデータをROMからFPGA内のコンフィギュレーションメモリへ展開し、FPGAに所望の演算を実行させるものであり、このコンフィギュレーションメモリへ格納するデータをLSIが稼動状態の中で、動的書き換える技術である。
 例えば、非特許文献1には、データセンタを構成する各サーバにFPGAを搭載する技術が示される。当該技術では、FPGAに対して適宜ダイナミックリコンフィグを行うことで、スループットの向上等を図れる。また、非特許文献2には、特にFPGAとは関係なく、イジングモデルに基づく処理を行うCMOS型のイジングチップの構成が示される。
"A reconfigurable fabric for accelerating large-scale datacenter services," ACM/IEEE 41st International Symposium on Computer Architecture (ISCA), 2014. "20k-spin Ising chip for combinational optimization problem with CMOS annealing," Solid-State Circuits Conference - (ISSCC), 2015 IEEE International, Session 24.3.
 情報処理を高速化する上で、現在知られているアーキテクチャが最適とは断言できない。数ある可能性の中で、人間が考え出したよりよい解法を論理LSIにて実現し、演算を実行しているからである。演算最適化は解くべき問題に依存するので、本来的には、解くべき問題に依存してハード構成が自己最適化を進めるように変化することが望ましい。ただし、現時点で自己最適化を完全に実現するのは難しく、設計されたデータを元に変更を加えていくことが現実的であろう。
 これまで、遺伝的アルゴリズムなどのソフトウエアとしての進化アルゴリズムは開発されてきている。こうした中、本発明者等は、FPGAのコンフィギュレーションに、このような自己最適化の技術を導入できないかと考えた。コンフィギュレーションを変更するということは、論理接続情報を変更することであり、プロセッサ上でプログラム的に進化アルゴリズムを実行する場合よりも演算の高速化が見込める。その際、演算データの関連を考慮してコンフィギュレーションを自律的に変更できることが望ましい。
 本発明は、このようなことに鑑みてなされたものであり、その目的の一つは、プログラマブルロジックを含んだ情報処理装置および情報処理システムにおいて、演算効率の向上を実現することにある。
 本発明の前記並びにその他の目的と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
 本願において開示される発明のうち、代表的な実施の形態の概要を簡単に説明すれば、次のとおりである。
 本実施の形態による情報処理装置は、FPGAファブリック部と、コンフィギュレーションメモリと、データ監視部と、コンフィグ制御部と、CRAMコントローラとを有する。FPGAファブリック部は、ユーザ論理回路を実装し、コンフィギュレーションメモリは、当該ユーザ論理回路の回路構成を定めるコンフィグデータを保持する。データ監視部は、ユーザ論理回路の動作状態を監視し、コンフィグ制御部は、当該監視結果に基づいてコンフィグデータの変更要否を判定する。CRAMコントローラは、コンフィグ制御部の判定結果に基づいてコンフィギュレーションメモリのコンフィグデータを変更する。
 本願において開示される発明のうち、代表的な実施の形態によって得られる効果を簡単に説明すると、演算効率の向上が実現可能になる。
本発明の実施例1による情報処理システムにおいて、全体の概略構成例を示すブロック図である。 図1におけるCRAMコントローラの構成例を示すブロック図である。 図1の情報処理装置において、コンフィグデータの変更を行う際の制御フローの一例を示すフロー図である。 図3のフローに伴う、図1の情報処理装置の入出力信号の一例を示すシーケンス図である。 本発明の実施例2による情報処理装置において、CRAMのアドレスマップの構造例を示す概略図である。 (a)および(b)は、本発明の実施例3による情報処理装置において、コンフィグデータの変更方法の一例を説明する概念図である。 本発明の実施例4による情報処理システムにおいて、コンフィグデータの変更方法の一例を説明する概念図である。 本発明の実施例5による情報処理システムにおいて、その全体の概略構成例を示すブロック図である。 本発明の実施例6による情報処理装置において、コンフィグデータの変更方法の一例を説明する概念図である。 本発明の実施例7による情報処理システムにおいて、その主要部の概略構成例を示すブロック図である。 一般的なLUTの構成例を示す回路図である。 本発明の実施例8による情報処理装置において、その主要部の構成例を示す概略図である。 図12における具体的な演算シーケンスの一例を示す波形図である。 イジングチップへマッピングする2次元イジングモデルの基本単位であるPE(Primitive Element)の一例を示す図である。 PEにおける演算の基本単位であるEU(Execlusion Unit)の一例を説明する図である。 図15のEUの詳細構成例を示す図である。 図15のPEをFPGAへマッピングした場合の構成例を示す概略図である。 図17の構成を用いて演算を実施する際の全体的な動作例を示す図である。
 以下の実施例において、便宜上その必要があるときは、複数のセクションまたは実施例に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、要素の数等(個数、数値、量、範囲等を含む)に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
 さらに、以下の実施例において、その構成要素(要素ステップ等も含む)は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
 以下、本発明の実施例を図面に基づいて詳細に説明する。なお、実施例を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
 《FPGAの概要》
 一般にFPGAは、論理記述言語(たとえばVerilog HDL(Hardware Description Language)やVHDL)を用いて設計され、この論理回路はRTL(Register Transfer Level)と呼ばれる手法にて記述される。一般的に、RTLからLSIへの集積は、次の手順で実施される。すなわち、RTLの論理接続情報を実際のLSIに集積されるトランジスタの物理的な配置を考慮していわゆるネットリストへ変換し、さらに、各信号線のタイミング制約を考慮して静的タイミング解析シミュレーション(STA)を実施し、その配置を最適化した後に、LSIへ集積する。
 FPGAにおいてもほぼ同様の手続きで実施され、このRTLを設計後、論理合成を実施し、信号線のタイミングを調整しながら、調整後のデータをFPGAのコンフィギュレーションメモリ(以降、CRAMと呼ぶ)へ格納するデータへ変換する。この変換を、以降、CRAMへのマッピングと呼ぶ。
 CRAMへのマッピングは、より詳細には、FPGA内部に集積された基本論理回路および配線接続スイッチの構成の物理的な配置を考慮し、論理記述情報から変換されたトランジスタレベル結線情報(ネットリスト)を元に、FPGAのCRAMへのビット列(ビットストリーム)へ変換することで実現される。FPGAのCRAMへ当該ビットストリームを格納することによって、所望の動作をターゲットのFPGAで実現できることになる。FPGAで所望の機能を実現するためにRTLから変換されたネットリストと、FPGAへ格納されるCRAMのデータ列(ビットストリーム)とは、1対1対応している。
 《情報処理システムの全体構成》
 図1は、本発明の実施例1による情報処理システムにおいて、全体の概略構成例を示すブロック図である。図1に示す情報処理システムは、一乃至複数の情報処理装置(ここではFPGAチップFPGA_CH)と、評価部インターフェースEVAL_IFと、外部コンフィグ記憶装置STRGと、これらを接続する各種信号線とを備える。各種信号線には、制御信号線(SCTL)、コンフィグ信号線(SCFG)、データ信号線(SDAT)が含まれる。
 図1の構成例は、当該構成のみの形で所望の情報処理システムを構成することもできるが、例えば、プロセッサシステムの一部に適用され、当該プロセッサシステムのハードウエアアクセラレータとして用いることも可能である。なお、図1には、一般的な情報処理装置が情報処理を行う上で通常備えるストレージやネットワークは、不図示とし、FPGAのコンフィギュレーション変更に関する要部のみを記載する。
 FPGAチップFPGA_CHは、複数のFPGAファブリック部FPGA_FABと、CRAMと、CRAMコントローラCRAMCと、データ監視部CUNTと、チップ統括コントローラCHPC、オンチップバスDBUSと、コンフィグ制御部CNFGCとを備える。CRAMは、ユーザ論理回路の回路構成を定めるためのコンフィグデータを保持する。FPGAファブリック部FPGA_FABは、当該CRAMのコンフィグデータに基づくユーザ論理回路を実装する。FPGAファブリック部FPGA_FABは、詳細には、複数のLUT(Lookup table)によって所望の論理真理値表を実装するプログラマブルロジック部LOGと、複数のスイッチによって各LUT間を任意に接続するスイッチ部SWとを備える。
 CRAMコントローラCRAMCは、CRAMまたは加えて外部コンフィグ記憶装置STRGとの間でコンフィグデータの読み出し/書き込み等を行う。オンチップバスDBUSは、FPGAファブリック部FPGA_FABの入力出信号を伝送する。具体的には、オンチップバスDBUSは、各FPGAファブリック部FPGA_FAB間、または、各FPGAファブリック部FPGA_FABとデータ信号線(SDAT)との間の通信データを伝送する。データ監視部CUNTは、例えば、データの流通を計測すること等で、FPGAファブリック部FPGA_FABに実装されるユーザ論理回路の動作状態を監視する。チップ統括コントローラCHPCは、チップ全体の動作を制御する。
 なお、図1では、便宜上、FPGAファブリック部FPGA_FABのみがプログラマブルロジックで構成されているが、これに加えて、データ監視部CUNT、コンフィグ制御部CNFGC、CRAMコントローラCRAMC、およびチップ統括コントローラCHPCの一部もプログラマブルロジックで構成されてもよい。また、このようなFPGAファブリック部FPGA_FABを除く部分は、FPGAに内蔵されるハードコア・プロセッサ(予めプロセッサのハードウェアが実装されたもの)またはソフトコア・プロセッサ(プログラマブルロジックを用いてプロセッサを構成したもの)を利用して構成されてもよい。
 また、図1では、便宜上、FPGAファブリック部FPGA_FABがあたかも分割されているように記載されている。これは、FPGAへ搭載する機能ブロック毎に論理的に分割されていることを判りやすく示すためである。もちろん、実際には、FPGA内部は、FPGAファブリックFPGA_FABが一様に配置されていてもよい。
 データ信号線(SDAT)は、複数のFPGAチップFPGA_CH間でデータ信号SDATを送受信するための信号線であり、例えば、高速シリアル通信線などで実現される。コンフィグ信号線(SCFG)は、複数のFPGAチップFPGA_CH間、または、各FPGAチップFPGA_CHと、不揮発メモリやハードディスクドライブ等で構成される外部コンフィグ記憶装置STRGとの間で、CRAMのコンフィグ信号(コンフィグデータ)SCFGを送受信するための信号線である。制御信号線(SCTL)は、コンフィグデータの変更依頼や変更通知などを各FPGAチップFPGA_CHへ伝達する信号線である。ここでは、これらの信号線を明示的に分けて記載したが、時分割多重方式等で共用配線を用いて伝達することも可能である。
 データ監視部CUNTは、図1の例では、オンチップバスDBUSに接続され、例えばカウンタ回路等によってオンチップバスDBUS上のデータ通信量を監視する。例えば、オンチップバスDBUSでパケット通信やI2C(Inter Integrated Circuit)通信等を用いる場合、データ監視部CUNTは、データ中の送信元および宛先情報を参照し、送信元および宛先の組合せ毎にデータ通信量を計測する。ただし、データ監視部CUNTは、必ずしも当該位置に限定されず、例えば、各FPGAファブリック部FPGA_FABの内部(具体的には、オンチップバスDBUSとのインタフェース部)に設けられてもよい。この場合、当該データ監視部CUNTは、例えば、受信したデータ中の送信元情報を参照し、各送信元毎にデータ通信量を計測する。
 コンフィグ制御部CNFGCは、データ監視部CUNTの監視結果に基づいて、閾値テーブルTBLを参照しながら、コンフィグデータの変更要否を判定する。変更要と判定した場合、コンフィグ制御部CNFGCは、コンフィグデータ変更要求をCRAMコントローラCRAMCへ発行する。閾値テーブルTBLには、例えば、通信レートの統計データ等が格納され、コンフィグ制御部CNFGCは、監視結果に基づく通信レートまたは通信レートの変動量等が、当該統計データに基づく閾値を超えた場合に、コンフィグデータ変更要求を発行する。当該変更要求を受けたCRAMコントローラCRAMCは、CRAMの保持内容(すなわちコンフィグデータ)を書き換える。
 図2は、図1におけるCRAMコントローラの構成例を示すブロック図である。CRAMコントローラCRAMCは、CRAMの読み書きを制御するCRAMアクセスコントローラCRAMACと、CRAMのアドレスマップを保有するアドレスマップ保持部ADRMAPと、CRAMとのデータ授受および、外部コンフィグ記憶装置STRGとのデータ授受を実施するポートPTとを備える。CRAMコントローラCRAMCは、コンフィグデータを変更後、ポートPORTを介してコンフィグデータのCRC等の符号化コードチェックをコードチェック部CODECHKにて実施し、その演算した符号化コードをRAMへ格納する。RAMへ格納した符号化コードを用いることで、例えば、CRAMのコンフィグデータを定期的に読み出し、エラー検出・訂正などを行える。
 ここで、本実施例1の方式では、前述したように、コンフィグ制御部CNFGCがデータ監視部CUNTの監視結果に基づいてコンフィグデータ変更要求を発行し、これに応じて、CRAMコントローラCRAMCがコンフィグデータを変更する。CRAMアクセスコントローラCRAMACは、コンフィグデータ変更要求を受けると、アドレスマップ保持部ADRMAPを参照し、コマンド・アドレス信号CMDを介して所定のCRAMアドレスへのデータ読み出しを実施する。
 これに応じてCRAMから読み出されたコンフィグデータ(RD)は、ポートPORTを介してコンフィグ更新部CNFG_MDFYへ入力される。コンフィグ更新部CNFG_MDFYは、コンフィグデータの変更を実施し、当該変更後のコンフィグデータ(WT)をポートPORTを介してCRAMに書き込む。この際に、当該コンフィグデータ(WT)は、ポートPORTを介してコードチェック部CODECHKにも入力される。コードチェック部CODECHKは、コンフィグデータ(WT)に対する符号化コードを生成し、それをRAMに記憶する。
 なお、当該コンフィグデータ(WT)は、例えば変更履歴とともに、外部コンフィグ記憶装置STRGにも記憶される。また、CRAMコントローラCRAMCは、必要に応じて、外部コンフィグ記憶装置STRGからのコンフィグデータを読み出し、それをCRAMに格納することや、当該読み出したコンフィグデータをコンフィグ更新部CNFG_MDFYで更新したのち、それをCRAMに格納することもできる。その際にも、コードチェック部CODECHKによる処理が行われる。
 以上のように、本実施例1の方式の主要な特徴の一つは、データ監視部CUNTおよびコンフィグ制御部CNFGCが各FPGAファブリック部FPGA_FABの動作状態を監視および判定し、その判定結果に基づいてCRAMコントローラCRAMCがCRAMのコンフィグデータを更新する点にある。各FPGAファブリック部FPGA_FABの動作状態は、例えば、前述したように、各FPGAファブリック部FPGA_FAB間のデータ通信量や、または、各FPGAファブリック部FPGA_FAB毎のデータ処理量等である。各FPGAファブリック部FPGA_FAB毎のデータ処理量は、通常、各FPGAファブリック部で入出力されるデータ量に比例すると考えられ、例えば、各FPGAファブリック部間のデータ通信量から得ることができる。
 また、本実施例1の方式の主要な特徴の他の一つは、図2のコンフィグ更新部CNFG_MDFYのように、CRAMまたは外部コンフィグ記憶装置STRGから読み出したコンフィグデータを変更し、それをCRAM、または加えて外部コンフィグ記憶装置STRGに書き込めるような仕組み(プラットフォーム)を備える点にある。特に限定はされないが、コンフィグデータの具体的な変更方法として、進化アルゴリズム等に基づき、コンフィグデータの一部のビットを変更すること等が挙げられる。このような処理は、外部コンフィグ記憶装置STRGに、コンフィグデータの履歴を適宜残すことで実現できる。あるいは、具体的な変更方法として、データ量の監視結果に基づき、クリティカルな機能ブロック等を対象に補強を行うこと等が挙げられる。なお、コンフィグデータの具体的な変更方法の一例に関しては、以降にて適宜述べる。
 ここで、例えば非特許文献1に示されるような一般的なダイナミックリコンフィグは、予め複数のユーザ論理回路(言い換えればコンフィグデータ)を定めておき、その定めたユーザ論理回路を予め定めたシーケンスに沿って順次切り換えるようなものである。例えば、予め演算処理Aを実行するユーザ論理回路Aと演算処理Bを実行するユーザ論理回路Bとを設け、所定のシーケンスに基づき演算処理Aから演算処理Bへ切り換える際に、これに合わせてユーザ論理回路Aをユーザ論理回路Bにリコンフィグする。このように、一般的な情報処理装置(FPGAチップFPGA_CH)は、特に判断を行うことなく、単に既定の手順に基づいてユーザ論理回路を他律的に変更する。
 一方、本実施例1の方式は、あるユーザ論理回路(言い換えればコンフィグデータ)を出発点として、その動作状態を監視しながら、動作状態が改善する方向に向かうようにユーザ論理回路を自律的に最適化していくものである。すなわち、情報処理装置(FPGAチップFPGA_CH)は、自らの判断に基づいてユーザ論理回路を自律的に変更する。さらに、例えば、進化アルゴリズム等を用いる場合、本実施例1の方式は、言うなれば、あるユーザ論理回路を出発点として、その動作状態を監視しながら、動作状態が改善する方向に向かう回路箇所を探索し、当該探索結果に基づいてユーザ論理回路を自律的に最適化していくようなものである。
 このように、所定の演算処理を実行するユーザ論理回路を、当該演算処理に特化した形で自律的に最適化できる仕組みを設けることで、情報処理装置(FPGAチップFPGA_CH)に実装したユーザ論理回路の演算効率を向上させることが可能になる。なお、ここでは、主に、情報処理装置内で各FPGAファブリック部FPGA_FAB間のデータ量を監視する場合を例としたが、同様にして、情報処理システム内で情報処理装置間のデータ量を監視することも可能である。
 例えば、図1において、複数の情報処理装置(FPGAチップFPGA_CH)が同一の演算を実行する場合、複数のFPGAチップFPGA_CHで構成されるサブシステム全体の性能を評価することが望ましい。この場合、評価部インターフェースEVAL_IFは、各FPGAチップFPGA_CH間のデータ量を監視し、前述したコンフィグ制御部CNFGCと同様に、閾値テーブル等を用いてコンフィグデータの変更要否を判定する。そして、評価部インターフェースEVAL_IFは、当該判定結果に基づき、所定のFPGAチップFPGA_CHに向けて、制御信号線(SCTL)を介してコンフィグデータの変更依頼等を行う。なお、この監視結果の判定の際には、例えば、閾値テーブルのパラメータを適宜変更することで、全体性能に及ぼす影響が大きいパラメータを判定すること等も可能である。
 《情報処理装置の動作》
 図3は、図1の情報処理装置において、コンフィグデータの変更を行う際の制御フローの一例を示すフロー図である。図3において、情報処理装置(FPGAチップFPGA_CH)は、各FPGAファブリック部(機能ブロック)FPGA_FABで所定の演算処理を行わせながら、データ監視部CUNTを用いて機能ブロック間のデータ流通を監視し、演算時のデータ流通を監視する(ステップS101)。この際に、データ監視部CUNTは、前述したように、例えば、各機能ブロックへのデータ送受信回数や経過時間などをカウントする。
 情報処理装置は、例えば、データ送受信回数が所定の回数に達した際や、または所定の経過時間に達した際などに、コンフィグデータの書き換えが必要かどうかの判断を実施する(ステップS102)。具体的には、コンフィグ制御部CNFGCが、例えば、データ監視部CUNTの監視結果に基づく通信レートと、閾値テーブルTBLに格納される通信レートの閾値または通信レートの変動量の閾値等とを比較することなどで判断する。
 その結果、書き換えが不要な場合、情報処理装置は、ステップS101にもどり、監視を続行する。一方、書き換えが必要な場合、情報処理装置は、ステップS103へ進んでCRAMのコンフィグデータの変更処理に入る。具体的には、CRAMアクセスコントローラCRAMACおよびコンフィグ更新部CNFG_MDFYは、CRAMからコンフィグデータを読み出したのち当該データを変更し(ステップS103)、新しいコンフィグデータをCRAMに書き込む(ステップS104)。
 次いで、CRAMコントローラCRAMCは、コードチェック部CODECHKを用いた符号化コードの生成やRAMへの格納を行い(ステップS105)、さらに、新しいコンフィグデータを外部コンフィグ記憶装置STRGへ格納する処理を行う(ステップS106)。このような処理は、所定の演算処理が終了するまで繰り返し行われる(ステップS107)。なお、ここでは、ステップS105,S106の処理を順次行ったが、これらの処理をステップS104の処理のバックグランドで並行して行ってもよい。そうすることで、より一層の高速化が実現できる。
 図4は、図3のフローに伴う、図1の情報処理装置の入出力信号の一例を示すシーケンス図である。まず、時刻T1で、データ監視部CUNTは、CNT_S信号をアサート(ここでは‘H’レベルに制御)し、バスモニタ(DBUS)の監視結果をコンフィグ制御部CNFGCへ伝達する。これを受けて、コンフィグ制御部CNFGCは、コンフィグデータの変更要否を判定し、変更要の場合には、時刻T2で、RCONF_S信号をアサートする。
 CRAMコントローラCRAMCは、RCONF_S信号のアサートを受けて、時刻T3で、CCS_S信号をアサートする。これを受けて、チップ統括コントローラCHPCは、リコンフィグに伴うFPGAファブリック部FPGA_FABの制御を実施する。具体的には、チップ統括コントローラCHPCは、FFS_S信号をFPGAファブリック部FPGA_FABへ伝達する。
 ここで、FFS_S信号は、リセット信号(RESB_S信号)、論理演算実行信号(EXE_S信号)、状態ホールド信号(HOLD_S信号)で構成される。時刻T4で、EXE_S信号がネゲートされると、FPGAファブリック部FPGA_FABに実装されるユーザ論理回路は、演算処理を中断する。次いで、時刻T5で、HOLD_S信号がアサートされると、FPGAファブリック部FPGA_FABは、オンチップバスDBUSを介したデータ通信をホールドする。
 次いで、オンチップバスDBUSを介した信号授受が停止した状態で、チップ統括コントローラCHPCは、時刻T7で、リコンフィグ開始可能信号(CCSA_S信号)を発行し、これを受けて、CRAMコントローラCRAMCは、時刻T8で、リコンフィグ信号(CRAMC_S信号)をアサートする(すなわち、CRAMのコンフィグデータを変更する)。また、時刻T8では、当該コンフィグデータ(CRAMD_S)の変更に応じて、FPGAファブリック部FPGA_FABにおけるユーザ論理回路の再構築が行われる。
 その後、時刻T9で、CRAM(言い換えればFPGAファブリック部FPGA_FAB)のコンフィギュレーションが完了すると、CRAMC_S信号がネゲートされ、時刻T10で、リコンフィグ信号(RCONF_S信号)がネゲートされる。引き続き、時刻T11で、状態ホールド信号(HOLD_S信号)がネゲートされ、時刻T12で、リセット信号(RESB_S信号)がアサートされた後、時刻T13で、論理演算実行信号(EXE_S信号)がアサートされる。これにより、再構築されたユーザ論理回路は、演算を再開する。オンチップバスDBUSにおいて、データ通信は、ここでは、時刻T1から時刻T13までは中断され、時刻T13で再開される。
 なお、ここでは、簡単のため、ひとつのFPGAファブリック部(機能ブロック)FPGA_FABに対するコンフィギュレーション実行のシーケンスについて述べた。しかし、FPGAチップFPGA_CH上には複数の機能ブロックが搭載されており、それらの一部が動作中でも図3および図4のような処理は可能である。そのため、図4の時刻T1から時刻T13までの期間では、リコンフィギュレーションの非対象となる機能ブロック間でのオンチップバスDBUSを介したデータ通信が行われていてもよい。
 また、ここでは、FPGAファブリック部FPGA_FABのユーザ論理回路を変更する場合を例としたが、これに限らず、内部バスのバス幅の増減することや、ユーザ論理回路を新たに追加するようなことも、FPGAチップFPGA_CH内リソースが許される範囲で実施可能である。例えば、図4の時刻T1に応じて機能ブロックの増加が必要と判断される場合があり、この際には、機能ブロックの増加と共に、バス幅を増やすことが望ましいことがある。あるいは、元々、同じ演算を行う複数の機能ブロックがあった場合でも、その機能ブロック間のデータ通信のバンド幅を増やすような判断がなされることがある。このような場合には、バス幅を増やすようなコンフィギュレーション変更が実施されるので、時刻T13以降はバス幅が増えた形でのデータ通信が実施される。
 以上、本実施例1の情報処理装置および情報処理システムを用いることで、代表的には、演算効率の向上等が実現可能になる。
 本実施例2では、CRAMのビットストリームの構成について述べる。図5は、本発明の実施例2による情報処理装置において、CRAMのアドレスマップの構造例を示す概略図である。実施例1で述べたようにして、FPGAファブリック部FPGA_FABのユーザ論理回路を変更するにあたり、例えば、LUTの構成を維持したまま、その数を増減させ、これに応じて各LUT間の接続関係(すなわち図1のスイッチ部SWの構成)を変えたいような場合がある。
 このような場合、図5に示すように、FPGAファブリック部FPGA_FABのスイッチ部SWの構成を定めるCRAMアドレスと、プログラマブルロジック部LOGの構成を定めるCRAMアドレスとを明示的に分けておくことが望ましい。ここでは、スイッチ部SWを構成する複数のスイッチと、プログラマブルロジック部LOGを構成する複数のLUTとに、それぞれ256MbitのCRAM容量が付与され、各スイッチおよび各LUTが16ビットで構成される場合を例としている。ただし、勿論、CRAM容量や、各スイッチおよび各LUTのビット数は、これに限定されるものではない。
 本実施例3では、コンフィグデータの変更方法の一例について述べる。図6(a)および図6(b)は、本発明の実施例3による情報処理装置において、コンフィグデータの変更方法の一例を説明する概念図である。ここでは、例えば、図1のコンフィグ制御部CNFGCによって機能ブロックAの処理能力が不足すると判定され、これに応じて、機能ブロックAを構成する回路ブロックAを増強する場合を例とする。
 図6(a)では、回路ブロックA(CRCITBK_A)~回路ブロックC(CRCITBK_C)と、スペアの回路ブロックX(CRCITBK_X)と、スイッチブロック1(SWBK1)およびスイッチブロック2(SWBK2)と、各回路ブロックおよび各スイッチブロックに対応するCRAMとが示される。この図では、簡単のため、左から右へデータ処理が流れる例を示している。
 ここで、回路ブロックX(CRCITBK_X)の論理を生成する方法について述べる。このブロックは、本実施例3では、予めスペアとして準備しておいた領域であり、この部分に、回路ブロックA(CRCITBK_A)を生成することで、処理能力不足を解消することができる。具体的には、図1のCRAMコントローラCRAMCは、まず、CRAMを読み出し、FPGAチップFPGA_CHに設けられるユーザメモリ内に、変更する回路ブロックAに対応するCRAMアドレスとデータを格納する。そして、この際に、図1のCRAMコントローラCRAMCは、図6(b)に示すように、回路ブロックXに対応するCRAMアドレス(CADR_X)のデータを、回路ブロックAと同じデータ(CDATA_A)に定める。
 さらに、CRAMコントローラCRAMCは、図6(b)に示すように、スイッチブロック1,2にそれぞれ対応するCRAMアドレス(CADR_SW1,CADR_SW2)のデータを、それぞれ所定のデータ(CDATA_SW1’,CDATA_SW2’)に定める。例えば、データCDATA_SW1’は、変更前のデータCDATA_SW1に含まれる回路ブロックAに向けた結線データを、回路ブロックAに加えて回路ブロックXに向けた結線データに変更したものである。データCDATA_SW2’に関しても、これと同様である。
 CRAMコントローラCRAMCは、ユーザメモリ内でこのようにして定めた各コンフィグデータをCRAMへ書き込む。この際に、CRAMコントローラCRAMCは、実施例1で述べたように、ECCやCRC等の符号化コードの生成も行う。なお、このようなコンフィグデータの生成は、FPGAチップFPGA_CH外部のメモリを活用してもよい。チップ内にRAMからCRAMへの転送経路を設けることが望ましいが、それが存在しない場合は、一旦外部コンフィグ記憶装置STRGを介して転送することも可能である。
 以上のように、本実施例3の方式を用いると、FPGAチップFPGA_CH内のリソースを有効に活用し、最大限のパフォーマンスを出せるように自律的な制御が可能になる。
 本実施例4では、コンフィグデータの変更方法の他の一例について述べる。図7は、本発明の実施例4による情報処理システムにおいて、コンフィグデータの変更方法の一例を説明する概念図である。図7に示す情報処理システムは、n+1個のFPGAチップFPGA_CH0~FPGA_CHnで構成されるFPGAサブシステムFPGA_SSYSと、図1に示した評価部インターフェースEVAL_IFと、外部コンフィグ記憶装置STRGとを備える。FPGAチップFPGA_CH0には、機能ブロックFUNC_A0~FUNC_A2が実装され、FPGAチップFPGA_CH1には、機能ブロックFUNC_B0~FUNC_B2が実装され、FPGAチップFPGA_CH2には、機能ブロックFUNC_C0~FUNC_C2が実装されている。
 評価部インターフェースEVAL_IFは、システムの最適化を行う最適化制御部CTLPを備える。最適化制御部CTLPは、図1に示したデータ監視部CUNT、コンフィグ制御部CNFGCおよびCRAMコントローラCRAMCと同様の機能を備える。また、各FPGAチップFPGA_CH0~FPGA_CHn内にも当該機能に該当する最適化制御部CTLCが備わっている。
 ここで、評価部インターフェースEVAL_IFの最適化制御部CTLPは、例えば、データ信号線(SDAT)の監視を行ったり、あるいは、各チップ内の最適化制御部CTLCでの監視結果を取得すること等で、FPGAサブシステムFPGA_SSYS内の演算処理能力を監視する。そして、最適化制御部CTLPは、例えば、閾値テーブルを用いた統計処理によって演算処理能力が不足する傾向にあると判断した場合、新たな機能ブロックを生成する。
 この例では、FPGAチップFPGA_CH0の機能ブロックFUNC_A0と、FPGAチップFPGA_CH1の機能ブロックFUNC_B2と、FPGAチップFPGA_CH2の機能ブロックFUNC_C1の使用頻度が高く、最適化制御部CTLPは、これらのブロックの増強が効率的であると判断したものとする。この場合、最適化制御部CTLPは、例えば、当該各機能ブロックFUNC_A0,FUNC_B2,FUNC_C1のコンフィグデータを各チップからコンフィグ信号線(SCFG)を介して読み出し、当該コンフィグデータを実装するように、制御信号線(SCTL)を介してFPGAチップFPGA_CHnの最適化制御部CTLCに指示する。
 なお、このようなコンフィグデータのコピーを行う際には、各機能ブロックのインターフェースが統一されていると便利であり、入出力ピン数などをそろえておくことが望ましい。ただし、入力ピン数がそろっていない場合でも、スイッチ部SWにおいて、余ったピンに対して、‘H’レベル固定、‘L’レベル固定、オープン等の処理を実施すれば、問題なく実装できる。
 以上のように、本実施例4の方式を用いると、情報処理システム内のリソースを有効に活用し、最大限のパフォーマンスを出せるように自律的な制御が可能になる。
 本実施例5では、図1に示した情報処理装置(FPGAチップFPGA_CH)の変形例と共に、コンフィグデータの変更方法の更に他の一例について述べる。図8は、本発明の実施例5による情報処理システムにおいて、その全体の概略構成例を示すブロック図である。図1では、オンチップバスDBUS上のデータ授受の統計的なデータを利用してコンフィグデータを変更する例を示したが、本実施例5では、データの流れではなく、データの処理に応じてコンフィグデータを変更する。
 図8の情報処理装置(FPGAチップFPGA_CH)では、図1と異なり、データ監視部CUNTはオンチップバスDBUSに接続されているのではなく、各FPGAファブリック部FPGA_FABに直接接続されている。データ監視部CUNTは、FPGAファブリック部FPGA_FABからの演算処理の終了信号に応じて、コンフィグ切り替え信号をコンフィグ制御部CNFGCへ送信する。演算処理の終了信号は、FPGAファブリック部FPGA_FABによって所定の単位の演算処理を終了する毎に送信される。
 コンフィグ切り替えに際しては、演算処理の終了信号そのものを用いてもよいが、演算処理の開始から終了までの時間間隔や、演算処理の実行回数などを計測する(すなわち、演算処理の負荷の重さや演算処理の頻度を計測する)ことがより効果的である。また、例えば、プログラムの解析に基づいて予め演算処理の時系列な推移が予測できるような場合、タイマを内蔵し、設定時刻になったら切り替えることも可能である。
 さらに、割り込み処理の回数や、割り込み処理の種類に応じて、最適な論理構成になるように自律的にユーザ論理回路を変更することもできる。つまり、割り込み処理の演算が固定であり、しかもその頻度が高い場合は、ほとんど演算処理を実行していないFPGAファブリック部FPGA_FABに、割り込み処理を実行するユーザ論理回路を実装することが可能になる。
 この割り込み処理の概念は、演算処理部の更新の概念にも拡張することができる。一般的に、割り込みというと、通常の制御シーケンスの中で、緊急的な処理のルーチンや追加の演算処理要求にこたえるために、ソフトウエアを分岐させるイメージが強い。一方、本実施例の方式は、そのような固定的ないわゆる設計されたプログラム分岐のみならず、設計当初は考慮していなかった追加機能の拡充という概念まで含めることができる。
 例えば、割り込み処理と呼ぶ新規の演算処理は、設計当初において頻度が少ないもしくは想定範囲外ということで、低い優先順位で設計されているかもしくは当初の設計には入っていなかった場合でも、処理するサービスやアプリケーションの進化に応じて頻繁に発生するようになり得る。すなわち、新規の演算処理の優先順位が動的に高まるような事態が生じ得る。本実施例の方式を用いると、このような動的な優先順位の高まりを受けて、その状況変化に適応するように、ハードウエア処理を進化させていくことができる。このように専用のハードウエアで演算処理を行うことで、ソフトウエアで演算処理を行う場合と比較して、高速性や低消費電力化を実現できる。
 以上のように、本実施例5の方式を用いると、情報処理装置内のリソースを有効に活用し、最大限のパフォーマンスを出せるように自律的な制御が可能になる。
 本実施例6では、コンフィグデータの変更方法の更に他の一例について述べる。前述した実施例では、FPGAチップFPGA_CHに搭載したユーザ論理回路間のデータ通信回数(または演算処理回数)等に基づいて、主に、ユーザ論理回路(機能ブロック)のコンフィグデータを変更する例を示した。本実施例6では、スイッチ部のコンフィグデータを変更する例について説明する。図9は、本発明の実施例6による情報処理装置において、コンフィグデータの変更方法の一例を説明する概念図である。
 図9に示す情報処理装置FPGA_CHは、複数の機能ブロックFUNC_A~FUNC_Fと、各機能ブロック間を接続するスイッチ部SWと、図7で述べたような最適化制御部CTLCとを備える。ここでは、簡単のため、各機能ブロック間の信号は4本に制限して説明する。機能ブロックFUNC_Aは、出力インタフェースIFOを備え、当該出力インタフェースIFOからの信号は、1本が機能ブロックFUNC_Dへ、1本が機能ブロックFUNC_Eへ、2本が機能ブロックFUNC_Fへ接続されている。
 同様に機能ブロックFUNC_Bの出力インタフェースIFOからの信号は、2本が機能ブロックFUNC_Dへ、1本が機能ブロックFUNC_Eへ、1本が機能ブロックFUNC_Fへ接続されている。さらに、機能ブロックFUNC_Cからの信号は、1本が機能ブロックFUNC_Dへ、1本が機能ブロックFUNC_Eへ、2本が機能ブロックFUNC_Fへ接続されている。
 ここで、最適化制御部CTLCは、例えば、機能ブロックFUNC_Aと機能ブロックFUNC_Dとの関係が強いと判断した場合、機能ブロックFUNC_Aと機能ブロックFUNC_Dとの間の結合度を変更する。この例では、機能ブロックFUNC_Aからの信号は、2本が機能ブロックFUNC_Dへ、1本が機能ブロックFUNC_Eへ、1本が機能ブロックFUNC_Fへ接続されるように変更される。この接続は、機能ブロック間のデータの連結度に依存して柔軟に変更できるので、限られたトランジスタおよび配線資産を活用しながら、チップ全体の演算速度の向上が期待できる。なお、このような変更を容易に行うためには、実施例2に示したようなCRAMのビットストリームを用いることが望ましい。
 以上のように、本実施例6の方式を用いると、情報処理装置内のリソースを有効に活用し、最大限のパフォーマンスを出せるように自律的な制御が可能になる。
 本実施例7では、図1に示した情報処理システムの変形例と共に、コンフィグデータの変更方法の更に他の一例について述べる。本実施の形態では、機能ブロックのパフォーマンスや機能ブロック間のデータの授受等の情報を利用して、演算効率の向上や演算速度の向上を目指している。これまでの実施例は、主に、既存の設計データを再利用し、機能ブロック数の増減や接続関係の再定義と、運用後に新規に設計したハードウエアの自律的な組込みに関するものであった。本実施例7では、CRAMのビット反転を故意に引き起こし、論理の変更によって、演算パフォーマンスを向上させる仕組みについて述べる。
 図10は、本発明の実施例7による情報処理システムにおいて、その主要部の概略構成例を示すブロック図である。図10に示す情報処理システムは、図7の場合と同様に、複数のFPGAチップFPGA_CH0~FPGA_CHnからなるFPGAサブシステムFPGA_SSYSを備える。図7との差異は、サブシステムの進化を制御する進化ブロックEVOLが新たに設けられる点と、進化を促す信号線(SEVL)が追加される点と、各FPGAチップに、必要に応じてコンフィグデータを進化させるためのコンフィグデータ生成部GENが設けられる点にある。
 各チップのコンフィグデータ生成部GENは、進化ブロックEVOLからのイネーブル信号や設定情報を、信号SEVLを介してそれぞれ独立に受信し、CRAMを更新する。図10の例では、FPGAチップFPGA_CH0,FPGA_CH1に対して、まず、同じ機能ブロックFUNC_A0,FUNC_A1,FUNC_A2を実装し、その後の演算処理の最中にFPGAチップFPGA_CH1のコンフィグデータを故意に変化させて演算結果がどうなるかを調べるような動作が行われる。FPGAチップFPGA_CH0は設計された状態でデータの処理を進める機能ブロックであり、FPGAチップFPGA_CH1は設計されたデータから出発して、よりよい論理構成を求める評価ブロックになる。このように、本実施例7では、実データを活用しながらハードウエアをよりよい状態に変更していくための方式が示される。
 CRAMの更新には、ランダムなビット反転や、遺伝的アルゴリズムによるCRAMの部分的な変更などが考えられる。ランダムなビット反転を用いる場合、例えば、図2のコンフィグ更新部CNFG_MDFYにコンフィグデータ生成部GENを設ければよい。コンフィグ更新部CNFG_MDFYは、CRAMから読み出したコンフィグデータに対して、乱数または擬似乱数を用いてビットをランダムに選択し、当該選択したビットを反転させたのちCRAMに書き戻す。
 一方、遺伝的アルゴリズムを用いる場合、予め設けた複数の染色体(ここではコンフィグデータ)に対して、淘汰、交叉および突然変異といったような操作を繰り返しながら、全体的に適応度が高い(動作状態が最良な)染色体を探索するような処理が行われる。交叉とは、例えば、ある染色体における一部のビットと別の染色体における一部のビットとを入れ替えるような操作であり、突然変異とは、ある染色体における一部のビットを反転させるような操作である。また、淘汰とは、適応度が高い染色体を残し、適応度が低い染色体を排除するような操作である。
 交叉や突然変異の操作を行ったのち、残された染色体に対して、さらに、交叉や突然変異の操作を行うことで、最も適応度が高い染色体(すなわち動作状態が最良なコンフィグデータ)を探索することができる。このような操作の過程で、淘汰されないコンフィグデータは、外部コンフィグ記憶装置STRGに蓄えられ、淘汰されたコンフィグデータは、外部コンフィグ記憶装置STRGから削除される。
 図10の例では、評価部インターフェースEVAL_IFは、FPGAチップFPGA_CH0とFPGAチップFPGA_CH1との比較(データの正当性や処理能力の比較等)を逐次行う。進化ブロックEVOLは、この比較結果に基づいて、例えば前述した淘汰等を行い、FPGAチップFPGA_CH1のコンフィグデータ生成部GENにCRAMの更新を指示する。コンフィグデータ生成部GENは、外部コンフィグ記憶装置STRGで淘汰されていないコンフィグデータを用いて例えば交叉や突然変異等の操作を行い、CRAMを更新する。ここで、評価部インターフェースEVAL_IFにおける比較の方法の具体例としては、演算処理の時間間隔の比較や、演算結果の性能等が考えられる。
 前者の演算処理の時間間隔は、単純に処理の開始と終了を計測すればよい。その際、設計時のデータを基準として、FPGAチップFPGA_CH1で逐次試行を実施しながら、その試行の前後の時間間隔を比較することで、より高速処理が実現可能な(すなわちより適応度が高い)コンフィグデータを得ることができる。また、後者の演算結果の性能については、例えば、画像認識のような処理を実施する際、認識率の向上度合いなどを閾値として判定するなどの方法が考えられる。
 このような処理を商用ベースの実データを活用しながら蓄積し、よりよいコンフィグデータを外部コンフィグ記憶装置STRGに保存する。いわば、活きたデータを活用しながら学習を進め、より効率的な処理を模索するということになる。その際、評価部インターフェースEVAL_IFでの評価結果や処理時刻、処理データ情報を同時に格納できるようにしておくことが望ましい。また、評価部インターフェースEVAL_IFでの評価においては、不図示であるが、電力モニタ等の計測結果を踏まえることで、電力効率の評価も可能である。
 図11は、一般的なLUTの構成例を示す回路図である。一般的なLUTは、CRAMの情報がセレクタを介して選択的に出力されるような構成になっており、4入力の場合は、16ビットのCRAMで構成される。このLUTひとつで実現可能なCRAMの設定可能な値は、2^16=65536通り、および入力I0~I3のとりうる値は、2^4=16通りである。これらを独立に変化させると1048576通りの組み合わせが実現できる。一般に、FPGAにはLUTが100万個程度集積されており、そのデータ処理ビットは莫大な数になる。本実施例7の方式は、人間の経験と論理合成ツールによって設計された機能ブロックを、人間の想定範囲を超えて自律的に進化させ、よりよい性能を得るためのひとつの手段になる。
 なお、ここでは、情報処理システム内でのFPGAチップ間での比較結果に基づいて所定のFPGAチップの最適化を図ったが、同様にして、FPGAチップ内でのFPGAファブリック部間での比較結果に基づいて所定のFPGAファブリック部の最適化を図ることも可能である。また、ここでは、エラーが無いデータを確実に得るため、データの処理を進める機能ブロックと、最適化を進める評価ブロックとを設けたが、例えば、画像・音声処理等のように多少のエラーは許容できる場合には、1個のブロックでデータの処理と最適化の両方を進めることも可能である。
 これまでの実施例は、CRAMの進化による演算装置としてのハードの性能向上を実現する実施例であった。ここでは、さらに、コンフィグデータの頻繁な更新による新たな効果として、高速演算チップの実現に関する実施例を述べる。図12は、本発明の実施例8による情報処理装置において、その主要部の構成例を示す概略図である。図12に示す構成は、プログラマブルロジックを用いてイジングチップを実現し、CRAMに格納したデータを進化させていくものである。
 この例では、CRAM自体をデータメモリのようにして扱い、FPGAの構成を用いて演算処理を実施する。図12には、簡単のために、それぞれ16ビットを持つ4つのCRAMと、当該4つのCRAMに対応する4つのLUTが設けられる例を示している。このCRAMには処理するデータを搭載し、4つのLUTの入力を夫々共通化して接続することで、例えば、4個のCRAMのそれぞれにおける所定の1ビット(例えばビット#0)を、LUTを構成するセレクタを介して同時に選択して出力することが可能である。この例では、当該所定の1ビットは16ビット分あるため、4ビットで構成される情報を1面と定義すると、16面の情報の選択が可能である。たとえば、この4ビットの情報を変更しながら、演算を進める計算機の場合、4つのLUTで16種の演算を実現できることになる。
 図13は、図12における具体的な演算シーケンスの一例を示す波形図である。入力信号I0~I3は、クロック同期で変化させ、同時に、相互作用判定回路INTRACやデータ生成部DGENにもクロックが入力される。クロックに同期させて、CRAM16面の演算を実施させつつ、CRAMのコンフィグを実行させる。入力信号I0~I3は、図13の波形図に示すように、16回の演算が実施できるようになっており、夫々の演算をステートと呼ぶと、4つのLUTに対応する4つのCRAMのビット情報が、各ステート毎に、0番から15番まで順に出力され、演算される。
 この例では、4つのLUTからの出力信号は、相互作用判定回路INTRACへも入力され、相互作用判定回路INTRACは、4つのLUTからの出力信号の相互作用を判定することで、CRAMに格納されるデータの相関を評価する。相互作用判定回路INTRACは、たとえば、各ビット間の相関や重み付けのパラメータを加え、積和演算や平均化処理を実行する。その演算結果を受けて、データ生成部DGENは、CRAMに格納していたビット情報を反転させるかそのままにするかを決める。このように、本実施例8では、CRAMのビット情報間の関連性を検出して、CRAMの更新を実施する。
 図14~図16は、イジングチップの概念を説明する図である。物理現象の基底状態の計算手法として、イジングモデルと呼ばれる手法が提案されている。これは、物質を構成する粒子の特にスピンの向きのよるエネルギー状態を計算し、より安定な状態を求めるための計算モデルであり、たとえば、スピンを持った粒子を平面に並べてそれらの最近接のスピン間の相互作用を計算し安定状態へ導くものである。図14は、一例として2次元イジングモデルをFPGAへマッピングする例を示したものである。
 図14において、イジングの各スピン粒子(イジングノード(Ind)と呼ぶ)は丸印で表され、平面に一様に並べられている。この図では、それらを6×6の行列単位でまとめて、PE(Primitive Element)として定義している。以降で、これをFPGAへマッピングする例を説明する。
 図15は、ひとつのPEを抜き出し、近接イジングノードInd間の接続関係を示した図である。ひとつのイジングノードIndに着目し、それらを縦横斜めの関連を計算することを念頭に置くと、図15に示すように、8本の相互作用線Ib(Interaction bond)が考えられる。この8本の相互作用線Ibで結ばれた基本単位(以降、EU:Execution Unitと呼ぶ)ごとに演算を実行する。
 この時、演算の組み合わせとして、初期のCRAMビットに格納されているデータを用いて演算する上で、16通りの演算の組み合わせが存在することになり、ひとつのPEの中に、図15に示されるように、16個のEU(EU0~EU15)が定義される。図15では、見易さのため、それらの関係が重ならないように示されており、(A)~(I)の9個の図中に16通りの組み合わせをすべて表現している。つまり、ひとつのPEを考える場合、16通りの計算ができることが必要となる。EUの構成について、図16に詳細を示す。EU内は、このモデルでは、9個のイジングノードInd0~Ind8と、8本の相互作用線Ib0~Ib7により構成される。本実施例8では、各イジングノードをLUTに割り当て、その相互作用の演算をユーザ論理回路で実施する。
 図17は、図15のPE(をFPGAへマッピングした場合の構成例を示す概略図である。図17には、9個のLUT(LUT0~LUT8)と、各LUTへの入力である4ビットの入力信号I0~I3と、入力信号を9つのLUTへ接続するスイッチ回路SWCと、演算データを一時的に保持するフリップフロップFFと、相関評価回路IEUと、メモリRAMと、アドレス変換部ADRCVと、CRAM書き込み回路CRWTとが示される。
 相関評価回路IEUは、図12の相互作用判定回路INTRACおよびデータ生成部DGENに該当し、イジングノードの相互作用を演算し、その相互作用(E)の演算結果および当該演算結果から導出される各イジングノード(σi,σj)のデータをメモリRAMに格納する。メモリRAMは、例えば、予めFPGA内に搭載される。CRAM書き込み回路CRWTは、メモリRAMに書き込んだイジングノードの演算結果のデータを、アドレスを指定してCRAMへ書き戻す。アドレス変換部ADRCVは、CRAM書き込み回路CRWTが書き戻しを行う際のアドレスを変更する機能を備える。各LUTには、対応するCRAMが備わり、本実施例8では4入力のLUTを想定し、16ビットのCRAMがひとつのLUTに関連付けられる。LUT0にはCRAM0が対応し、そのCRAMは、ビット#0~#15の16ビットを備える。
 図15と対応させて、図17の構成について述べる。図15では、ひとつのEUにおいて、相互作用を実施するイジングノードIndは9個あり、相互作用線Ibは8本ある。イジングノードIndについて、8本の相互作用線を定義しているが、この相互作用の元となる9個のイジングノードIndを、9個のLUTで実現している。図17の例では、9個のLUTの夫々に対して4つの入力信号I0~I3が共通に入力される。図13の場合と同様に、4つの入力信号で16通りの入力を行うと、これに応じて、9個のLUTは、対応するCRAMの中から1ビットを選択し、後段のフリップフロップFFへ出力する動作を16回行う。
 ここで、図15に示した16個のEU0~EU15は、それぞれ、各LUTのCRAMのビット#0からビット#15に対応する。すなわち、図15のEU0は、CRAM0~CRAM8のビット#0に対応し、当該CRAM0~CRAM8のビット#0は、それぞれ、当該EU0のイジングノードInd0~Ind8(図16)に対応する。また、図15のEU1は、CRAM0~CRAM8のビット#1に対応し、当該CRAM0~CRAM8のビット#1は、それぞれ、当該EU1のイジングノードInd0~Ind8(図16)に対応する。
 イジングモデルでは、イジングノード(σi,σj)との間の相互作用を計算するので、単純な演算では、重み係数(相互作用係数)(wij)とσi,σj(各σ=-1か1)を掛け合わせて総和を計算する。この時、CRAMに格納されるデータは0,1であるので、0については、四則演算時に-1に変換する処理を実施する。総和演算の結果、エネルギーの増減を計算するが、その際、以前の値との比較を実施することで、よりエネルギー状態の低い方向となるように粒子のスピンの向きを変える。粒子のスピンの向きは、σi,σjで記述されるので、演算結果で更新されたσi,σjをメモリRAMへ書き込む。
 イジングモデルでは、全粒子間の相互作用を計算し、エネルギーが最低もしくは極小になる状態を見つける。そのため、図14に記載のPEは、この図に示した区分だけでは無く、PEを上下左右に1イジングノードだけずらしたPEを定義して計算する必要がある。そのために、図17に示したハードの基本構成を変えるのではなく、EUのイジングノードの情報を格納するCRAMのメモリアドレスを変更することで、あたかも評価するイジングノード位置を変化させたかのごとく表現する。
 これにより、基本的なハードを固定しながら、イジングノード間の相互作用を、逐次的に、あまねく計算することが可能となる。そのための手段として、メモリRAM内の更新されたイジングノードのデータをCRAMに書き戻す際、アドレス変換部ADRCVを介してCRAMに格納する。たとえば、最初、CRAM0のビット#0に格納されていたデータを、演算の結果、CRAM0のビット#1に格納するなどが考えられる。このようにすることで、最初のイジングノードが、たとえば図14、もしくは、図15に記載の例では、右へ1ビットずれる形になり、相対的にEUがイジングノードひとつ分左へシフトすることになり、結果として、相互作用を計算する関係がイジングノードひとつ分ずれることになる。
 図17に示した例では、ひとつのPEを計算する場合について述べたが、実際は、このPEが多数FPGA上に展開されている。そのため、他のPEも同様に同じ演算サイクルで計算され、演算結果をメモリ格納後、新たにCRAMへ格納するために、アドレス変換が実施される。ただし、PEは、便宜上分けただけであるので、隣接するPEともイジングノードを介して相互作用をさせる必要がある。すなわち、他のPEとの間で演算結果を授受する必要がある。図17には、そのための信号経路を簡略化して記載した。実際、データの授受には、メモリ間の転送であってもよい。メモリ間で転送後、CRAMにセットするためのアドレス変換を実施しCRAMへ格納すればよいからである。
 なお、図17には、CRAM書き込み回路CRWTがPE内に入っている例を示したが、このCRAM書き込み回路CRWTは、チップ内に集合的に集積してもかまわない。チップ内にある程度集積させることで、論理回路の集積度が向上できる効果がある。また、本実施例8の方式では、FPGAを、いわゆる通常の意味での論理回路を集積するLSIとしても使用可能であり、汎用使用においても何ら問題が生じない。以上のように、本実施例8の方式を用いることで、汎用のCOTS(Commercial Off The Shelf)製品を使った高性能LSIの実現が可能になる。
 図18は、図17の構成を用いて演算を実施する際の全体的な動作例を示す図である。図18において、パターンAの状態は、イジングノードを36個分集めてPEを構成し、それを、縦横に配置した状態となっている。パターンBの状態は、そのイジングノードの集まりをイジングノード1つ分だけ右にずらしてPEを定義し、それを縦横に並べた状態となっている。同様に、パターンCの状態は、イジングノードの集まりをイジングノード1つ分だけさらに右にずらしてPEを定義し、それを縦横に並べた状態となっている。
 ここで、図18に示した動作波形図では、時刻T1にて、パターンAの状態ですべてのPEを演算し、演算結果をメモリRAMへ格納し、その後、アドレス変換を加えてCRAMへ格納するまでの演算がシーケンシャルに実施される。その後、時刻T2では、パターンBの状態において、PEに関するすべての演算が実施される。以下、時刻T3では、パターンCの状態において、PEに関するすべての演算が実施され、以降同様にして、イジングノード1つ分だけ上下左右にずらした演算が複数回実施され、すべてのイジングノード間の演算が実施されることになる。
 なお、本実施例8では、4入力のLUTについて例示的に述べてきたが、LUTの入力数は4入力に限定されるものではない。入力数が5の場合は、EUの数が2倍の32個まで取れることになり、PE2つ分を、9個のLUTで実現する形になるので、より高集積化ができる効果がある。このように、LUTの入力数は4入力以外であっても本実施例8の方式を適用することは可能である。
 以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、前述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
 CNFGC コンフィグ制御部
 CRAM コンフィギュレーションメモリ
 CRAMC CRAMコントローラ
 CUNT データ監視部
 DBUS オンチップバス
 EVAL_IF 評価部インターフェース
 FPGA_CH FPGAチップ
 FPGA_FAB FPGAファブリック部
 STRG 外部コンフィグ記憶装置

Claims (13)

  1.  ユーザ論理回路を実装するFPGAファブリック部と、
     前記ユーザ論理回路の回路構成を定めるコンフィグデータを保持するコンフィギュレーションメモリと、
     前記ユーザ論理回路の動作状態を監視するデータ監視部と、
     前記データ監視部の監視結果に基づいて前記コンフィグデータの変更要否を判定するコンフィグ制御部と、
     前記コンフィグ制御部の判定結果に基づいて前記コンフィギュレーションメモリの前記コンフィグデータを変更するCRAMコントローラと、
    を有する、
    情報処理装置。
  2.  請求項1記載の情報処理装置において、
     さらに、前記FPGAファブリック部の入力出信号を伝送するオンチップバスを備え、
     前記データ監視部は、前記オンチップバスのデータ通信量を監視する、
    情報処理装置。
  3.  請求項1記載の情報処理装置において、
     前記FPGAファブリック部は、所定の単位の演算処理を終了する毎に終了信号を生成し、
     前記データ監視部は、前記終了信号の発生頻度を監視する、
    情報処理装置。
  4.  請求項1記載の情報処理装置において、
     前記CRAMコントローラは、前記コンフィギュレーションメモリから読み出したコンフィグデータを変更し、当該変更後のコンフィグデータを前記コンフィギュレーションメモリに書き込むコンフィグ更新部を有する、
    情報処理装置。
  5.  請求項4記載の情報処理装置において、
     前記CRAMコントローラは、前記コンフィグデータを変更する際に、前記コンフィギュレーションメモリの第1のアドレス範囲に格納されるコンフィグデータと同一のコンフィグデータを、前記コンフィギュレーションメモリの第2のアドレス範囲に書き込む処理を実行する、
    情報処理装置。
  6.  請求項4記載の情報処理装置において、
     前記FPGAファブリック部は、
     前記ユーザ論理回路の一つとなる第1の機能ブロックおよび第2の機能ブロックと、
     前記第1の機能ブロックを前記第2の機能ブロックとを接続するスイッチ部と、
    を備え、
     前記CRAMコントローラは、前記コンフィグデータを変更する際に、前記スイッチ部のコンフィグデータを変更することで、前記第1の機能ブロックと前記第2の機能ブロックとの結合度を変更する、
    情報処理装置。
  7.  請求項4記載の情報処理装置において、
     前記CRAMコントローラは、前記コンフィグデータを変更する際に、一部のビットのデータをランダムに変更する、
    情報処理装置。
  8.  複数の情報処理装置と、
     評価部インターフェースと、
     コンフィグデータを蓄積する外部コンフィグ記憶装置と、
     前記複数の情報処理装置と、前記評価部インターフェースと、前記外部コンフィグ記憶装置とを接続する信号線と、
    を有する情報処理システムであって、
     前記複数の情報処理装置のそれぞれは、
     ユーザ論理回路を実装するFPGAファブリック部と、
     前記ユーザ論理回路の回路構成を定めるコンフィグデータを保持するコンフィギュレーションメモリと、
     前記コンフィギュレーションメモリを変更するCRAMコントローラと、
    を備え、
     前記評価部インターフェースは、前記複数の情報処理装置の動作状態を監視し、当該監視結果に基づいて、前記複数の情報処理装置における前記コンフィグデータの変更要否を判定し、変更要の際には、対象の情報処理装置の前記CRAMコントローラに前記コンフィグデータの変更要求を発行する、
    情報処理システム。
  9.  請求項8記載の情報処理システムにおいて、
     前記評価部インターフェースは、前記複数の情報処理装置間の前記信号線を介したデータ通信量を監視する、
    情報処理システム。
  10.  請求項8記載の情報処理システムにおいて、
     前記コンフィグデータの変更要求を受信したCRAMコントローラは、自身を除く情報処理装置のコンフィギュレーションメモリに格納されるコンフィグデータと同一のコンフィグデータを、自身のコンフィギュレーションメモリに書き込む、
    情報処理システム。
  11.  請求項8記載の情報処理システムにおいて、
     前記情報処理システムは、さらに、システムの進化を制御する進化ブロックを備え、
     前記複数の情報処理装置は、第1の情報処理装置および第2の情報処理装置を含み、
     前記第1の情報処理装置の前記FPGAファブリック部には、第1のコンフィグデータに基づく第1のユーザ論理回路が実装され、
     前記第2の情報処理装置の前記FPGAファブリック部には、第2のコンフィグデータに基づく第2のユーザ論理回路が実装され、
     前記進化ブロックは、前記第1のコンフィグデータと前記第2のコンフィグデータとが同一の状態を初期状態として、前記評価部インターフェースによる前記第1の情報処理装置の監視結果と前記第2の情報処理装置の監視結果とを比較しながら、前記第2のコンフィグデータを進化させる、
    情報処理システム。
  12.  それぞれがn個の入力数を持つK個のルックアップテーブルと、
     前記K個のルックアップテーブルにそれぞれ対応するM個のコンフィギュレーションメモリと、
     前記K個のルックアップテーブルから出力されるK個の出力信号の相互作用を判定し、当該判定結果に基づき新たなデータを生成する相関評価回路と、
     前記相関評価回路によって生成された新たなデータを、アドレスを指定して前記M個のコンフィギュレーションメモリに書き戻すCRAM書き込み回路と、
    を有する情報処理装置であって、
     前記M個のコンフィギュレーションメモリのそれぞれは、2のn乗ビットで構成され、
     前記K個のルックアップテーブルのそれぞれは、nビットの入力信号に応じて、対応するコンフィギュレーションメモリの中の1ビットを選択して出力し、
     前記K個のルックアップテーブルには、前記nビットの入力信号が共通に入力され、
     前記M個のコンフィギュレーションメモリのそれぞれのビットには、イジングモデルに基づく各イジングノードの演算結果のデータがマッピングされる、
    情報処理装置。
  13.  請求項12記載の情報処理装置において、
     さらに、前記CRAM書き込み回路が指定する前記アドレスをシフトするアドレス変換部を有する、
    情報処理装置。
PCT/JP2015/073313 2015-08-20 2015-08-20 情報処理装置および情報処理システム WO2017029743A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017535205A JP6616420B2 (ja) 2015-08-20 2015-08-20 情報処理装置
PCT/JP2015/073313 WO2017029743A1 (ja) 2015-08-20 2015-08-20 情報処理装置および情報処理システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/073313 WO2017029743A1 (ja) 2015-08-20 2015-08-20 情報処理装置および情報処理システム

Publications (1)

Publication Number Publication Date
WO2017029743A1 true WO2017029743A1 (ja) 2017-02-23

Family

ID=58051472

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2015/073313 WO2017029743A1 (ja) 2015-08-20 2015-08-20 情報処理装置および情報処理システム

Country Status (2)

Country Link
JP (1) JP6616420B2 (ja)
WO (1) WO2017029743A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018101359A (ja) * 2016-12-21 2018-06-28 富士通株式会社 情報処理装置、pld管理プログラム及びpld管理方法
JP2018142046A (ja) * 2017-02-27 2018-09-13 富士通株式会社 情報処理装置、pld管理プログラム及びpld管理方法
JP2020530175A (ja) * 2017-08-03 2020-10-15 ネクスト シリコン リミテッドNext Silicon Ltd 構成可能なハードウェアの実行時の最適化

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005316957A (ja) * 2004-03-31 2005-11-10 Seiko Epson Corp 情報処理システム、第1の情報処理装置、第1の情報処理装置制御プログラム及び第1の情報処理装置制御方法
JP2005334292A (ja) * 2004-05-27 2005-12-08 Toshiba Corp 医用機器データ変更システム及び医用機器
JP2009104403A (ja) * 2007-10-23 2009-05-14 Ip Flex Kk 再構成ユニットによる解探索の方法およびデータ処理装置
JP2011090671A (ja) * 2009-10-26 2011-05-06 Internatl Business Mach Corp <Ibm> コンピュータによって実施される方法、コンピュータ可読媒体、動的に再構成可能な最適化集積回路
JP2012083901A (ja) * 2010-10-08 2012-04-26 Nec Corp 構成情報管理装置、その方法及びそのプログラム並びに動作合成装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005316957A (ja) * 2004-03-31 2005-11-10 Seiko Epson Corp 情報処理システム、第1の情報処理装置、第1の情報処理装置制御プログラム及び第1の情報処理装置制御方法
JP2005334292A (ja) * 2004-05-27 2005-12-08 Toshiba Corp 医用機器データ変更システム及び医用機器
JP2009104403A (ja) * 2007-10-23 2009-05-14 Ip Flex Kk 再構成ユニットによる解探索の方法およびデータ処理装置
JP2011090671A (ja) * 2009-10-26 2011-05-06 Internatl Business Mach Corp <Ibm> コンピュータによって実施される方法、コンピュータ可読媒体、動的に再構成可能な最適化集積回路
JP2012083901A (ja) * 2010-10-08 2012-04-26 Nec Corp 構成情報管理装置、その方法及びそのプログラム並びに動作合成装置

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
"Identeki Algorithm 1st edition", 3 June 1993, article HIROAKI KITANO ET AL., pages: 263 - 274 *
BELLETI, F. ET AL.: "Simulating spin systems on IANUS, an FPGA-based computer", COMPUTER PHYSICS COMMUNICATIONS, vol. 178, no. 3, 1 February 2008 (2008-02-01), pages 208 - 216, XP055364229 *
GROSSI, GIULIANO ET AL.: "FPGA implementation of a stochastic neural network for monotonic pseudo-Boolean optimization", NEURAL NETWORKS, vol. 21, no. 6, August 2008 (2008-08-01), pages 872 - 879, XP024527324 *
MAKOTO TAIJI: "A Speclal Purpose Computer for 1-bit Worlds : Ising Machine", JOURNAL OF PLASMA AND FUSION RESEARCH, vol. 70, no. 4, 25 April 1994 (1994-04-25), pages 332 - 341 *
NAOKI OCHI ET AL.: "A Discussion on Fault Tolerance of Dynamic Reconfigurable Device", IEICE TECHNICAL REPORT, vol. 104, no. 591, 18 January 2005 (2005-01-18), pages 23 - 28 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018101359A (ja) * 2016-12-21 2018-06-28 富士通株式会社 情報処理装置、pld管理プログラム及びpld管理方法
JP2018142046A (ja) * 2017-02-27 2018-09-13 富士通株式会社 情報処理装置、pld管理プログラム及びpld管理方法
JP2020530175A (ja) * 2017-08-03 2020-10-15 ネクスト シリコン リミテッドNext Silicon Ltd 構成可能なハードウェアの実行時の最適化
JP7245833B2 (ja) 2017-08-03 2023-03-24 ネクスト シリコン リミテッド 構成可能なハードウェアの実行時の最適化

Also Published As

Publication number Publication date
JPWO2017029743A1 (ja) 2018-08-16
JP6616420B2 (ja) 2019-12-04

Similar Documents

Publication Publication Date Title
US10033387B2 (en) Method apparatus for high-level programs with general control flow
US11171652B2 (en) Method and apparatus for implementing configurable streaming networks
JP6655028B2 (ja) 高位合成におけるシステムアーキテクチャの抽出
US9584130B1 (en) Partial reconfiguration control interface for integrated circuits
JP6616420B2 (ja) 情報処理装置
WO2018067251A1 (en) Methods and apparatus for dynamically configuring soft processors on an integrated circuit
CN109450705B (zh) 一种基于fpga的面向映射的片上网络验证方法及系统
JP7245833B2 (ja) 構成可能なハードウェアの実行時の最適化
JP6758470B2 (ja) 情報処理装置
Qiao et al. TopSort: A high-performance two-phase sorting accelerator optimized on HBM-based FPGAs
KR102238600B1 (ko) 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법
US11144235B1 (en) System and method for evaluating memory system performance
Bhanwala et al. FPGA based design of low power reconfigurable router for Network on Chip (NoC)
US7509479B2 (en) Reconfigurable global cellular automaton with RAM blocks coupled to input and output feedback crossbar switches receiving clock counter value from sequence control unit
McGregor et al. Self controlling dynamic reconfiguration: A case study
Hur et al. Customisation of on-chip network interconnects and experiments in field-programmable gate arrays
JP2022054412A (ja) マイクロセクタインフラストラクチャに基づくロジックファブリック
How et al. Sectors: Divide & Conquer and Softwarization in the Design and Validation of the Stratix® 10 FPGA
CN111770173B (zh) 一种基于网络控制器的归约方法及系统
Freitas et al. NOC architecture design for multi-cluster chips
Krishnamoorthy et al. Integrated analysis of power and performance for cutting edge Internet of Things microprocessor architectures
Kumar B et al. A novel utilization-aware and power-delay-aware intelligent DMA controller for video streaming used in AI applications
US10990555B1 (en) Programmable pipeline at interface of hardened blocks
Pruthvija et al. Simulation of low area and high speed nine port network-on-chip router architecture
Philipp et al. (GECO) 2: A graphical tool for the generation of configuration bitstreams for a smart sensor interface based on a Coarse-Grained Dynamically Reconfigurable Architecture

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: 15901725

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2017535205

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15901725

Country of ref document: EP

Kind code of ref document: A1