WO2006129722A1 - 再構成可能な装置 - Google Patents

再構成可能な装置 Download PDF

Info

Publication number
WO2006129722A1
WO2006129722A1 PCT/JP2006/310894 JP2006310894W WO2006129722A1 WO 2006129722 A1 WO2006129722 A1 WO 2006129722A1 JP 2006310894 W JP2006310894 W JP 2006310894W WO 2006129722 A1 WO2006129722 A1 WO 2006129722A1
Authority
WO
WIPO (PCT)
Prior art keywords
configuration data
unit
storage
output
cycle
Prior art date
Application number
PCT/JP2006/310894
Other languages
English (en)
French (fr)
Inventor
Hiroki Honda
Original Assignee
Ipflex Inc.
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 Ipflex Inc. filed Critical Ipflex Inc.
Priority to CN2006800192965A priority Critical patent/CN101189797B/zh
Priority to US11/915,819 priority patent/US8138788B2/en
Priority to JP2007519045A priority patent/JP4900717B2/ja
Publication of WO2006129722A1 publication Critical patent/WO2006129722A1/ja

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17752Structural details of configuration resources for hot reconfiguration
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17756Structural details of configuration resources for partial configuration or partial reconfiguration
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17758Structural details of configuration resources for speeding up configuration or reconfiguration
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories

Definitions

  • the present invention relates to an apparatus including a reconfigurable logic circuit.
  • a form of a programmable logic device is a system called a field programmable gate array (FPGA).
  • the FPGA is configurable, that is, it has multiple logic blocks that can be programmed (written) by the user to the desired logic function.
  • One known method for improving the processing capability in a general-purpose processor is to increase the clock frequency.
  • increasing the clock frequency of the entire system is often not desirable for improving system performance in terms of power consumption.
  • it is required to install a circuit or function that compensates for the difference in clock frequency between the unit with the increased clock frequency and other units, for example, input / output circuits.
  • the clock frequency is too high to perform processing at high speed and the system has insufficient capacity, it is required to drive the system with a clock having a higher frequency. As a result, it is necessary to solve the problem of enormous power consumption and enormous heat generation. Sway.
  • One of the objects of the present invention is to improve the logic implementation efficiency in a reconfigurable logic circuit. Another object of the present invention is to make it easy to reconfigure a reconfigurable circuit to a logic suitable for the processing situation of the other circuit. One of the different purposes of the present invention is to make effective use of hardware resources by switching logic.
  • One embodiment of the present invention includes a plurality of operation blocks capable of changing the operation logic of each operation block, and a routine damascene for configuring a path connecting the plurality of operation blocks.
  • the operation blocks included in the plurality of operation blocks include a logical operation unit whose logic is determined by the confederation data, and a storage unit for storing the operation result of the logical operation unit.
  • the storage unit includes a plurality of storage elements, input means for selecting one of the plurality of storage elements based on the configuration data and storing the output of the logical operation unit, the plurality of storage elements and the routing matrix. And output means for connecting the two.
  • the arithmetic block included in the reconfigurable device includes a larger number of storage elements than the number of outputs of the logical arithmetic unit included in the arithmetic block, and one of the outputs is output from the logical arithmetic unit. Can be stored. Furthermore, the storage element for storing the output of the logical operation unit can be selected based on the configuration data having a function for controlling the logic of the logical operation unit. Therefore, the output of the logical operation unit in a certain cycle can be stored in the storage element based on the configuration data, and in the next cycle, the logical operation unit can perform the next logical operation.
  • the operation result stored in the storage element can be output in any of the subsequent cycles regardless of the logic of the logical operation unit of the subsequent site.
  • Selecting the storage element based on the configuration data includes designation by the configuration data itself and designation by other signals selected by the configuration data.
  • This reconfigurable device is a computer that stores a plurality of sets of configuration data. Determines the configuration data supply unit for supplying one of multiple sets of configuration data from the configuration memory to the calculation block, and the next configuration data to be supplied next to the calculation block It is desirable to further have a configuration control unit.
  • This reconfigurable device is suitable for applications in which the system is autonomously reconfigured by the configuration control unit to execute various applications. Therefore, it is suitable for applications that implement large-scale user circuits with small devices!
  • This reconfigurable device can improve the utilization efficiency of operation blocks in units of configuration data. Processing speed can be improved by reconfiguring logic by changing configuration data in cycle units. Therefore, instead of the method of increasing the clock frequency of the operation block, or in addition to the method, the method of reconfiguring the logic can meet the demand for improving the processing capability of the reconfigurable device.
  • the configuration control unit includes a unit for performing control in units of arithmetic blocks.
  • the configuration control unit includes a unit for controlling the logic of the operation blocks included in the plurality of operation blocks in units or sections each having a plurality of operation block forces.
  • a configuration control unit is included in each computation block, and by controlling the configuration of the computation block, the computation block unit, that is, the configuration data unit corresponding to the computation block, You can control the configuration. Therefore, various configurations can be realized flexibly.
  • the hardware resources required to configure the configuration control unit may increase.
  • it may be required to resolve the adjustment of the interface with the adjacent calculation block for each configuration data. This can be resolved at the force configuration generation stage, which can take some time to generate the configuration data.
  • the configuration control unit controls the configuration of a plurality of operation blocks, thereby reducing the hardware resources required for the configuration control unit. In addition, there is a possibility that the configuration data can be reduced. Furthermore, this control method and configuration can also be applied to the individual reconfiguration of operation blocks. It is suitable for reconfiguring the configuration of a plurality of operation blocks at once.
  • the output means of the storage unit includes one in which a plurality of storage elements can independently access the routing matrix.
  • a storage element can be selected from a reference destination of the storage element, that is, an operation block that requires data stored in the storage element. For this reason, the utilization efficiency of the data stored in the storage element is high.
  • Output means of the storage unit includes one that selects (interlocks with) a plurality of storage elements based on configuration data and connects to the routing matrix.
  • one or a limited number of outputs stored in a storage element is often useful as input for itself or other computational blocks. Therefore, it is possible to improve the use efficiency of the storage element and the use efficiency of the wiring resource for referring to the storage element.
  • the output force calculated by the logical operation unit is often useful as an input to another operation block in the same cycle. Therefore, it is desirable that the operation block includes direct output means for connecting the output of the logic operation queue to the routing matrix separately from the storage unit. It is also effective that the calculation block includes output selection means for selecting one of the output of the logical operation unit and the plurality of storage elements and connecting to the routing matrix based on the configuration data.
  • the configuration data may include signals or information for directly controlling the input means and Z or output means of the storage unit.
  • the configuration data and Z or input data may be used to generate a signal for controlling the input means and z or output means of the storage unit based on the configuration data. It is possible to reduce the storage unit control information included in the configuration data.
  • the storage unit preferably includes a storage control unit that generates a storage control signal that controls its input means and Z or output means.
  • One form of this storage control unit is to generate a control signal based on configuration data from input data and configuration data supplied with routing matrix power. When multi-bit operation is performed by configuring a data node with multiple operation blocks, the storage element is selected by the input of the routing matrix power. It is useful that the configuration data can set the storage control unit so that it is selected.
  • the storage control unit may be arranged in units of operation blocks.
  • the flexibility of control of the storage unit by configuration data is high.
  • the storage control unit can reduce the hardware resources required for the configuration of the storage control unit, which may be arranged in units or in units of multiple computing block power.
  • a storage control unit arranged in units of a plurality of operation block power units can control individual operation blocks included in those partitions or groups, and is included in those partitions or groups. [this to control a plurality of operation blocks in bulk; 1 ⁇ to 0
  • the present invention is a control system for a reconfigurable device.
  • the reconfigurable device has a plurality of operation blocks in which the operation logic of each operation block is variable, and a routing matrix for configuring a path connecting the plurality of operation blocks.
  • the included operation block includes a logical operation unit whose logic is determined by configuration data and a storage unit that stores the operation result of the logical operation unit.
  • the storage unit is based on a plurality of storage elements and configuration data.
  • Input means for selecting one of the plurality of storage elements to store the output of the logical operation unit, and output means for connecting the plurality of storage elements and the routing matrix are included.
  • the control system includes different registers for input and input or output included in the circuit for each cycle in the plurality of storage elements according to the configuration data. Assignment to different stored elements.
  • Yet another embodiment of the present invention is a method for controlling a reconfigurable device.
  • the reconfigurable device has a plurality of operation blocks similar to those described above and a routing matrix.
  • the operation block displays a logical operation unit whose logic is determined by configuration data and the operation result of the logical operation unit.
  • the storage unit includes a plurality of storage elements, an input unit that selects one of the plurality of storage elements based on the configuration data and stores the output of the logical operation unit, and a plurality of storage units.
  • Element and Le Output means for connecting to a single matrix.
  • the control method uses different registers for input and Z or output included in the circuit for each cycle based on the configuration data.
  • the reconfigurable device supplies configuration data for supplying multiple sets of configuration data to the computation block from the configuration memory storing multiple sets of configuration data. It is desirable that the control method including the unit includes determining next configuration data to be supplied next to the calculation block. Determining the next configuration data includes determining in units of operation blocks. Determining the next configuration data includes determining in units of a plurality of operation blocks.
  • Yet another aspect of the present invention is a system for generating configuration data for a reconfigurable device.
  • the reconfigurable device has a plurality of calculation blocks similar to those described above and a routing matrix.
  • the system maps means to generate RTL descriptions for each cycle of user circuits, means for logically synthesizing RTL descriptions for each cycle for each cycle, and logic-synthesized circuits for each cycle to a plurality of operation blocks.
  • Means for generating configuration data for assigning different registers for input and Z or output contained in the circuit for each cycle to different storage elements contained in a plurality of storage elements. Have.
  • Yet another aspect of the present invention is a method for generating configuration data for a reconfigurable device.
  • the reconfigurable device has a plurality of arithmetic blocks similar to those described above and a routing matrix.
  • the method includes:
  • FIG. 1 is a diagram showing a schematic configuration of an integrated circuit device (device) as an example of a reconfigurable device.
  • FIG. 2 is a diagram showing a schematic configuration of a calculation block (PB) included in the device of FIG.
  • PB calculation block
  • FIG. 3 is a diagram showing an example of a logical operation unit (LOU) included in the PB of FIG.
  • LOU logical operation unit
  • FIG. 4 is a diagram showing an example of a storage control unit included in the device of FIG.
  • FIG. 5 is a diagram showing an example of RTL description of a user circuit.
  • FIG. 6 shows an example of an FPGA.
  • FIG. 7 is a diagram showing an example of a calculation block of an FPGA.
  • FIG. 8 is a flowchart showing a process of mapping a user circuit to an FPGA.
  • FIG. 9 A circuit diagram of the logic synthesis of the user circuit.
  • FIG. 10 is a diagram showing a circuit diagram mapped to an FPGA.
  • FIG. 12 A diagram showing a schematic configuration of a system for generating configuration data.
  • FIG. 13 A diagram showing a state where a circuit obtained by logically synthesizing a user circuit in a cycle unit is mapped to a single register operation block (PBS).
  • FIG. 13 (a) is state 00
  • FIG. 13 (b) is state 01.
  • FIG. 13 (c) shows the state 10
  • FIG. 13 (d) shows the state 11.
  • FIG. 14 is a diagram showing an example in which a user circuit is mapped to a device including multi-FFs.
  • FIG. 14A shows state 00
  • FIG. 14B shows state 01
  • FIG. 14C shows state 10
  • FIG. 14D shows state 11.
  • FIG. 15 is a flowchart showing device control by configuration data.
  • FIG. 16 is a diagram showing an example of a part related to storage control of configuration data.
  • FIG. 17 is a diagram showing a different example of a part related to configuration data storage control.
  • FIG. 18 shows different examples of user circuits.
  • FIG. 19 is a diagram showing an example in which the user circuit shown in FIG. 18 is mapped to the FPGA.
  • FIG. 20 is a diagram showing an example in which the user circuit shown in FIG. 18 is mapped to a reconfigurable device, where FIG. 20 (a) shows state 0 and FIG. 20 (b) shows state 1.
  • FIG. 20 (a) shows state 0
  • FIG. 20 (b) shows state 1.
  • FIG. 21 Different examples of mapping the user circuit shown in Figure 18 to reconfigurable devices 21 (a) shows state 00, FIG. 21 (b) shows state 01, FIG. 21 (c) shows state 10, and FIG. 21 (d) shows state 11.
  • FIG. 22 shows different examples of user circuits.
  • FIG. 23 is a diagram showing an example in which the user circuit shown in FIG. 22 is mapped to the FPGA.
  • FIG. 24 is a diagram showing an example in which the user circuit shown in FIG. 22 is mapped to a reconfigurable device.
  • FIG. 24 (a) shows state 0 and
  • FIG. 24 (b) shows state 1.
  • FIG. 25 is a diagram showing different examples of calculation blocks.
  • FIG. 26 is a diagram showing still another example of the calculation block.
  • FIG. 27 is a diagram showing still another example of the calculation block.
  • FIG. 28 is a diagram showing still another example of calculation blocks.
  • FIG. 29 is a diagram showing still another example of the calculation block.
  • FIG. 30 is a diagram showing still another example of calculation blocks.
  • FIG. 31 is a diagram showing still another example of the calculation block.
  • FIG. 32 is a diagram showing a different example of the storage control unit.
  • FIG. 33 is a diagram showing an example of a data processing apparatus including a reconfigurable device.
  • An apparatus capable of reconfiguring a circuit is included in a system that dynamically optimizes hardware space.
  • One way to deal with this system's momentary increase in throughput is to increase the hardware resources allocated for the increased throughput and allocate for other urgent processing. Is to reduce the amount of hardware resources used. Even in this system, if the amount of hardware resources that can be reconfigured is not enough, changing the allocation of hardware resources will not be enough to meet the demand for increased processing speed, and the processing capacity will It may not be possible to fully respond to requests for improvement.
  • a reconfigurable system instead of increasing the clock frequency or If you increase the processing speed by rearranging the hardware resources to increase the parallelism of the processing, you can use the method of increasing the processing frequency.
  • a reconfigurable system there are other processes that are used or diverted to execute functions in parallel to increase the degree of parallelism of processes that require processing speed. Can be used for In other words, a reconfigurable system is a system that can effectively use hardware resources by increasing the effective circuit size by switching logic. Therefore, being able to flexibly use reconfigurable hardware resources for more purposes is important in providing an economical reconfigurable system with a high processing speed.
  • a reconfigurable device in an embodiment of the invention is described in the form of an integrated circuit device.
  • This integrated circuit device includes a plurality of operation blocks.
  • the operation block includes a logic operation unit whose logic can be changed by configuration data and a number of storage elements larger than the number of outputs of the logic operation unit. Including.
  • the storage element that stores the output of the logical operation unit based on the configuration data the output of the logical operation unit in a certain cycle is stored in a predetermined storage element based on the configuration data.
  • the output of the previous cycle is separated from the logical operation result (output) of the logical operation unit in the next cycle based on the configuration data, or independent data ( Data set).
  • each calculation block can be flexibly used in units of cycles.
  • one of the methods for mapping a user circuit for realizing a user application on the integrated circuit device of the following embodiment includes the following steps.
  • Registers with different inputs and Z or outputs included in the circuit for each cycle are registers that store data that is referred to as inputs and has different meanings in logical operations, different inputs and Z or logic Data output generated by operation (output) Includes registers that are latched.
  • the rule is determined by the configuration of the storage unit included in the calculation block. For example, in a system in which all of a plurality of storage elements can be freely referenced from the routing matrix, a register referred to as a register of a plurality of inputs is assigned to a plurality of storage elements of one calculation block in the user circuit. Can do. In a system where a selected one of multiple storage elements is referenced from the routing matrix, a circuit that requires multiple input registers in a cycle was synthesized as part of the user circuit. In some cases, the registers of those inputs are assigned to the storage elements of multiple arithmetic blocks rather than the storage elements of one arithmetic block.
  • the reconfigurable system of this embodiment can select a storage element for storing the output of the logical operation unit in the unit or timing of the configuration data for determining the logic of the logical operation unit. And Therefore, when a plurality of logics are executed by a certain operation block, the operation data of the logical operation units included in the operation block is shifted one after another at the timing of the unit of configuration data.
  • the unit of configuration data is independent of the logic of the logic unit.
  • the calculation result output from the calculation block can be selected or selected at the timing.
  • the operation time of the logical operation unit included in the operation block can be separated from the request time of the logical operation output. Since the logical operation unit can be released immediately after the logical operation, the operation capacity of the logical operation unit can be fully utilized.
  • the storage element in which the output of the logical operation unit is stored is selected based on the configuration data that determines the logic of the logical operation unit, so it is specified by configuration data from a single operation block in a pseudo manner. It is possible to output the operation results of a plurality of logics.
  • the logical operation unit in order to repeatedly output the same logical operation output in the operation block, the logical operation unit does not need to repeat the same logical operation, so the logical operation unit immediately shifts to the next logical operation and the processing capacity of the system. It can contribute to improvement.
  • FIG. 1 shows a schematic configuration of an integrated circuit device according to an embodiment of a reconfigurable device included in the present invention.
  • This integrated circuit device (device) 10 includes a plurality of operation blocks (Processing Block (PB) or Configurable Logic Block (C LB), hereinafter referred to as PB) 13 in which each operation logic can be changed, and the plurality of operations.
  • a routing matrix 15 for configuring a path (distribution line, circuit, transmission line) for connecting the block 13, a configuration memory 11 storing a plurality of sets of configuration data 17, and a configuration data 17
  • a storage control unit 40 for controlling the storage units included in the calculation block 13.
  • the configuration control unit 12 supplies one of a plurality of sets of configuration data 17 from the configuration memory 11 to the calculation block 13.
  • the storage control unit 40 generates a storage control signal 19 that controls the storage units included in the calculation block 13.
  • FIG. 2 shows an example of the configuration of the calculation block 13.
  • the PB13 includes a logical operation unit (Logical Operating Unit (LOU)) 21 whose logic is determined by the function data 24 included in the configuration data 17 and a storage unit 30 for storing the operation result of the LOU21. Yes.
  • This LOU 21 outputs one output signal 25 for four input signals 23.
  • the storage unit 30 of PB13 temporarily stores the output signal 25 of LOU21. It is for.
  • the storage unit 30 has a multi FF 31 having four storage elements 3 lr, which is larger than the output signal 25, and an input for selecting one of the plurality of storage elements 3 lr by the storage control signal 19 and storing the output signal 25.
  • a unit 32 and an output unit 33 for connecting the plurality of storage elements 31 and the routing matrix 15 are provided.
  • the PB 13 includes a direct output line (wiring) 29 that directly outputs the output signal 25 of the LOU 21 to the routing matrix 15.
  • LOU 21 is a look-up table function generator.
  • An example of a look-up table type function generator is one used in FPGAs.
  • Another example of LOU21 is one that can change logic on a clock cycle basis (cycle basis).
  • FIG. 3 shows a decoder-type logic operation circuit proposed by the applicant of the present application in International Publication No. WO2005Z022380, and is an example of LOU 21 that can change the logic on a cycle basis.
  • the LOU 21 in FIG. 3 includes a 4-input decoder 21a and a 16-input 1-output selector 21b.
  • LOU21 selects and outputs 1-bit output signal 25 from 4-bit input 23 from 16-bit function data 24.
  • the LOU21 can also function as a 3-input 1-output logic operation circuit or 2-input 1-output logic operation circuit, not limited to a 4-input 1-output logic operation circuit, using a 2-bit mode signal 21c. .
  • By changing the function data 24 in LOU21 more than 20 types of logic such as 4-input AND and 4-input NAND can be implemented in units of units. Therefore, the output signal 25 can be generated by calculating the input signal 23 supplied in units of cycles by different logics supplied in units of cycles.
  • the storage unit 30 includes a register group (hereinafter referred to as multi-FF or multi-register) 31 including four flip-flops or a register 31r.
  • the four flip-flops or registers 31r are storage elements and are supplied with the output signal 25 of LOU21.
  • the output unit 33 of the storage unit 30 includes a selector.
  • the output unit 33 may be referred to as a selector 33 or a read selector 33 hereinafter.
  • the selector 33 can select the register 31r of the multi-FF 31 by the output control signal 19 ⁇ included in the storage control signal 19 and read the current value as the output signal 39.
  • the input unit 32 of the storage unit 30 includes a decoder. In the following, the input unit 32 may be referred to as the decoder 32.
  • the decoder 32 selects one register 31r of the multi-FF 31 according to the input control signal 19i included in the storage control signal 19. Further, the input unit 32 outputs the write enable signal 19t included in the storage control signal 19 to the selected register 31r as the write enable signal 19e.
  • one of the configuration memory arrays 11 is selected every clock cycle based on the value 16 of the configuration specification register 12r included in the configuration control unit. It is. As a result, the configuration data 17 is confirmed. Configuration data 17 identifies the forms of PB13, storage control unit 40, and configurable routing matrix 15 in each clock cycle.
  • the storage control unit 40 generates a storage control signal 19 based on the configuration data 17.
  • the storage control signal 19 is sent to the storage unit 30 of each PB 13 via the configurable routing matrix 15.
  • the storage control unit 40 generates the storage control data force storage control signal 19 based on the storage control data included in the configuration data 17.
  • the storage control unit 40 generates the storage control signal 19 from the signal 18 obtained from the configurable routing matrix 15 based on the storage control data included in the configuration data 17.
  • the read selector 33 of the storage unit 30 of the PB13 is based on the output control signal (read register selection signal) 19 ⁇ out of the storage control signal (register selection signal) 19, and one register in the multi-FF 31 Select 31r. As a result, the selector 33 outputs the value stored in the selected register 31r to the configurable routing matrix 15. Alternatively, the selector 33 enables the other PB 13 to read the value stored in the selected register 3 lr via the configurable routing matrix 15.
  • the combinational logic unit 21 of the PB 13 instructs the input signal 23 acquired from the configurable routing matrix 15 by using the function data 24 for the PB in the configuration data 17 Performs logical operation and outputs operation result 25.
  • the output 25 is connected to the direct output wiring 29. Is output to the configurable routing matrix 15.
  • the output (operation result) 25 of the logical operation unit 21 is simultaneously sent to the storage unit 30 as register write data.
  • the calculation result 25 is connected as a register write data to the data input signals of all the registers 3lr of the multi-FF 31 built in the PB13.
  • Which register 3 lr is written with the calculation result 25 is controlled by a write enable signal 19 e supplied from a decoder 32 which is a storage input control unit by a storage control signal 19.
  • a write enable signal 19 e supplied from a decoder 32 which is a storage input control unit by a storage control signal 19.
  • the write enable signal 19t is invalid, all the write enable signals 19e of each register 31 are invalid, and if the write enable signal 19t is valid, one of the write enable signals 19e of each register 31 is present.
  • the calculation output 25 is stored.
  • the value of the register 3lr in which the write enable signal 19e is valid in the multi-register 31 of each PB13 is updated.
  • the selection value 16 of the configuration specification register 12r is updated by the write signal 20 to the configuration specification register 12r generated by any PB13 and output to the configurable routing matrix 15. This determines the next configuration. This is the processing for one clock cycle in device 10.
  • the configuration memory arrays 11 is selected according to the selected value 16 of the configuration designation register 12r, and the configuration data 17 is determined.
  • the forms of the PB 13, the storage control unit 40, and the configurable routing matrix 15 are specified, and the subsequent processing proceeds in the same procedure as the previous cycle.
  • the operation procedure in the device 10 is the same every cycle.
  • the configuration data 17 that influences the operation result of the device 10 can be changed every cycle, and each PB 13 can perform different processing in each cycle.
  • FIG. 4 shows the configuration of the storage control unit 40.
  • the storage control unit 40 includes a selector group 41.
  • This selector group 41 includes an output control signal (2 bits) 19 ⁇ , an input control signal (2 bits) 19i, and a write enable signal (1 bit) according to the configuration data 17.
  • the selector group 41 can also select these signals 19o, 19i, and 19t from the input signal 18 acquired from the configurable routing matrix 15.
  • the storage control unit 40 can simply and independently generate the control signal 19 for all P B13.
  • the input signal 18 supplied from the configurable routing matrix 15 to the unit 40 includes a read selection signal, a write selection signal, and a write enable signal. Common to all PB13.
  • the storage control unit 40 shown in FIG. 4 is supplied as an information power control signal 45 for controlling the selector 41 included in the configuration data 17.
  • the control signal 45 is not prepared independently for each PB, but the number of signal lines is reduced by encoding “number” in the control signal 45.
  • the control signal 45 includes a signal indicating “the number of ⁇ ⁇ that selects the signal 18 acquired from the configurable routing matrix 15 as the output control signal 19 ⁇ ”.
  • the comparator 46 provided corresponding to each input compares the control signal 45 with its own input number and supplies the control signal to the selector 41 corresponding to its own PB13.
  • the storage control unit 40 is set so that a predetermined signal of the configuration data 17 is selected as the output control signal 19 ⁇ instead of the signal 18 acquired from the configurable routing matrix 15. If the control signal 45 is “2”, the left 46 comparators of PB13 are true. Therefore, in the storage control unit 40, the output control signals 19 ⁇ of the two left PBs 13 are generated from the signals 18 acquired from the configurable routing matrix 15. The output control signal 19 ⁇ of the remaining PB13 on the right side is generated with the predetermined signal strength of the configuration data 17. Similarly, the generation of the input control signal 19i and the write enable signal 19t is controlled by the storage control unit 40 based on the configuration data 17.
  • the configuration of the storage control unit 40 shown in FIG. 4 saves the silicon area necessary for mounting the storage control unit 40, but practically restricts the mapping of user circuits to devices. Care is taken not to be too strict. In other words, the selection of the read Z write register is likely to be specified directly in the configuration data 17. In that case, the storage control unit 40 controls each PB 13 so that different registers 3 lr can be read and written based on the configuration data 17.
  • the storage control unit 40 When the storage control unit 40 is used in the control of data path calculation, it is desirable that the storage control unit 40 performs control in association with the data path calculation.
  • the device 10 shown in FIG. 1 is commonly controlled (shared control) by a single storage control unit 40, whereas a device that mainly performs data path operation is about 10 or 20 times. It is desirable to assign a storage control unit to each PB13 group and perform common control (shared control) for the PB13 included in those groups.
  • FIG. 5 shows the user circuit 51 to be mapped in Verilog code.
  • This user circuit functions as a state machine executed by the values of the four state (00), (01), (10) and (11) force state registers.
  • FIG. 6 shows the overall configuration of such an FPGA 90
  • FIG. 7 shows the configuration of the operation block 93
  • the FPGA 90 includes a plurality of calculation blocks 93, a routing matrix 95 that connects them, a calculation block 93, and a routine. And a memory 91 in which data 97 for programming the operating matrix 95 is stored.
  • Each arithmetic block 93 includes a logical arithmetic unit 92 that can calculate an arbitrary four-input logical function, and an output unit 99 that outputs the output directly to the routing matrix 95 after latching it in the register 98. .
  • FIG. 8 shows a method for mapping the user circuit 51 to the FPGA.
  • step 81 generate an RTL (Register Transfer Level) description in hardware language (Verilog or VHDL, etc.) from the behavior level description such as C language through the behavioral synthesis tool.
  • step 82 a circuit diagram is generated by a logic synthesis tool for the FPGA to be implemented.
  • step 83 data 97 to be mapped to the FPGA is generated by the place and route tool.
  • FIG. 9 is a circuit diagram obtained by logically synthesizing the user circuit 51 shown in the RTL description in FIG. Figure 10 shows the result of mapping the circuit diagram of Figure 9 to FPGA90.
  • the user circuit 51 can be mapped by using 31 operation blocks 93.
  • FIG. 11 is a flowchart showing the process of mapping the user circuit to the device 10 of this example.
  • a behavior level description such as C language is analyzed to generate a cycle unit RTL description in which the operation is described in a cycle unit.
  • the user circuit 51 to be pinned is a state machine. Therefore, when one state is processed in one cycle, the RTL description shown in Fig. 5 corresponds to the RTL description for each cycle.
  • these RTL descriptions for each cycle are individually logically synthesized to generate a circuit diagram for each cycle.
  • configuration data 17 for mapping the circuit to device 10 is generated every cycle.
  • the configuration data 17 can be said to be a collection of configuration data for each cycle.
  • step 73 for generating the configuration data 17 different registers included in the user circuit 51, that is, an input register (register for storing input data) and an output register (for storing output data). Do not assign P B13 individually to each of the registers.
  • step 73a the input register (read Each of the register and output register (register to be written) is assigned to a different FF (register) 3 lr of multi-FF31 in storage unit 30 according to the rules.
  • the circuit configuration assigned to a plurality of operation blocks is merged and mapped to one PB13 in the device 10 of this example.
  • configuration data 17 for merging and mapping a plurality of circuit configurations into one PB 13 is generated. If the input and output registers are the same, assign the same register 3 lr of multi-FF31.
  • the rule in step 73a refers to the input / output state of the cycle and the input / output state in another cycle, and registers the input and output registers within the range that can be covered by the storage unit 30. Including allocation to different registers 31r. For example, in the storage unit 30 shown in FIG. 2, it is possible to write only to one of the four registers 31r constituting the multi-register 31 in one cycle. Further, the storage unit 30 can output data from one register 31r of the multi-register 31 independently of writing. Therefore, registers that are simultaneously referenced in a cycle must be mapped to different P B13. Registers whose values are updated simultaneously in a certain cycle must be mapped to different PB13.
  • step 73a the referenced register is assigned to one of the multi-registers 31 of the storage unit 30 in accordance with these rules.
  • functions that require multiple operation blocks are merged into one PB13 at the logic synthesis stage of step 72.
  • all outputs of four registers 3 lr constituting the multi-register 31 can be referred to from the routing matrix 15.
  • FIG. 12 shows a schematic configuration of a system that generates configuration data based on this mapping method.
  • This system 100 is recorded on an appropriate recording medium such as a CD-ROM as software (program product) for controlling a normal computer. Provided.
  • the system 100 is configured using hardware resources included in the computer.
  • This system is provided as part of a CAD system or framework that designs and develops reconfigurable devices 10 as well as CAD systems that develop and design semiconductor devices such as LSI or ASIC.
  • the system 100 reads data 111 relating to the specifications of the user circuit 51, generates a 101 RTL description for each cycle of the user circuit, and a means 102 for logically synthesizing the RTL description for each cycle for each cycle.
  • the means 103 for generating the configuration data 17 uses different registers for the input and Z or output included in the circuit for each cycle when mapping the synthesized circuit for each cycle to a plurality of operation blocks PB.
  • configuration data 17 for assigning to different storage elements (registers) 3 lr included in the plurality of storage elements (multi-FF) 31 of the storage unit 40 is generated.
  • Configuration data 17 is a collection of configuration data for each cycle.
  • a register for storing a plurality of data input / output in a certain cycle is allocated to the multi-FF31 of one PB13, or input / output is performed across the cycles.
  • a register that stores multiple data can be allocated. Therefore, by using the mapping method described above and generating the configuration data 17 based on the mapping method, the use efficiency of the PB 13 is greatly improved. For this reason, a user circuit can be mounted with few hardware resources. Moreover, since it is possible to prevent a shortage of hardware resources, it is easy to increase the parallelism and improve the processing speed.
  • PB13 The improvement in the utilization efficiency of PB13 can be explained from several aspects.
  • One explanation is to latch the output 25 of the logic unit 21 into the multi-FF 31 of the storage unit 30. For this reason, the timing at which output 25 is required and the logic operation can be made independent.
  • the logical operation unit 21 of the PB13 can also release the logical force of the output 25, and the next logical operation can be executed.
  • Another explanation is the selection of the arithmetic logic of the logical arithmetic unit 21 and the multi-FF31 It is controlled by the configuration data 17 that controls the force storage control unit 40. For this reason, the function of PB13 can control the logical operation and the output individually by the configuration data 17. Therefore, the use of the multi-FF 31 ensures that the logical operation unit 21 of PB13 can be used in configuration data units, that is, in this example, cycle units. Further, the PB 13 is provided with a direct output wiring 29. For this reason, it is possible to output a plurality of logical operation results from one PB13 by one cycle of configuration data 17 without increasing the clock frequency.
  • FIG. 13 shows the result of logic synthesis for each state, that is, for each cycle, in order to map the user circuit 51 represented by the Verilog code in FIG. 5 to the device 10. In other words, it is the output of step 71 in FIG.
  • FIG. 13 (a) is a circuit diagram of the state (00). Based on the current value of bflg register (B) and xreg register (X0, XI, X2) and fsmin input signals (fsminO, fsminl, fsmin2, fsmin3) Writes a value to the cflg register (C) and dflg register (D). Furthermore, the value of the xreg register (X0, XI) is output to the fsmout output signal (fsmoutO, fsmoutl). Then, a constant (01) is output as an n-state signal (n-state O, n-state 1) for instructing the next configuration. The n-state signal indicates a transition to state (01) in the next cycle.
  • n-state signal indicates a transition to state (01) in the next cycle.
  • FIG. 13B is a circuit diagram of the state (01).
  • Figure 13 (c) is a circuit diagram of state (10). is there.
  • FIG. 13 (d) is a circuit diagram of the state (11). These are also translated into individual circuit diagrams as shown in the case statement of the Verilog code in Fig. 5.
  • the logic is divided by broken lines assuming an operation block PBS79 that latches the output of the logic operation unit with a single FF.
  • PBS79 operation block
  • FIG. 14 shows a result of mapping a circuit logically synthesized for each cycle to the device 10. This is the output of step 73 in FIG. Fig. 14 (a) shows the state mapping state (00), Fig. 14 (b) shows the state mapping state (01), and Fig. 14 (c) shows the mapping state (10). Fig. 14 (d) shows the state mapped to state (11).
  • the user circuit is mapped using four PB13. Therefore, it is understood that the user circuit 51 can be mapped using four PBs 13 by reconfiguring the device 10 in units of cycles.
  • the user circuit 51 in the FPGA shown in FIG. 10 is the same as the circuit using 31 operation blocks for mapping.
  • FIG. 15 shows the control of the device 10.
  • next configuration data to be supplied next to the calculation block is determined in step 121.
  • step 122 any of the configuration data 17a to l 7d of each cycle is supplied from the configuration memory 11 to PB13, thereby realizing the function of each state (cycle) in the RTL description of each user circuit 51. Is done. That is, the configuration data 17a to 17d for each cycle supplied to the PB 13 is selected by the configuration control unit 12 based on the signal 20 output from the PB 13. Determined by 16. Therefore, in this device 10, the configuration of the next cycle (next configuration) is determined for each cycle, and the device is reconfigured at the same time, and the content processed in the device is changed in units of cycles.
  • step 122 when the circuit for each cycle is mapped to the plurality of operation blocks PB, the different registers for input and Z or output included in the circuit for each cycle are changed to the configuration data for each cycle. Is assigned to multi-FF31 register 31r.
  • a device 10 shown in FIG. 1 includes a confederation control unit 12 for controlling a plurality of PBs. Therefore, the configuration control unit 12 controls the logic of the operation blocks included in the plurality of operation blocks PB in units of sections or groups each including the plurality of operation blocks PB. In this method, since the configuration is determined in units or groups each consisting of a plurality of calculation blocks PB, adjustment of the interface, that is, reconfiguration of the routing matrix 15 is easy.
  • a control function for determining the next configuration may be included in each computation block PB.
  • the write signal 20 supplied from each PB 13 to the control unit 12 via the routing matrix 15 is the next-conferencing instruction information output from each PB 13.
  • the configuration of the calculation block can be controlled by the unit of the calculation block PB, that is, the unit of the configuration data corresponding to the calculation block. Therefore, various configurations can be realized flexibly.
  • the hardware resources required to control the configuration tend to increase, and it is also required to adjust the interface with the adjacent calculation block and to resolve the configuration of the routing matrix 15 for each configuration data. There is a possibility that.
  • step 73a for generating the configuration data of the user circuit 51 in FIG. 11 the input / output states for the registers in each cycle and the input / output states in other cycles are determined. Specifically, in step 73a, the storage unit 30 can input to one of the multi-FFs 31 in each cycle, and can output one, so that multiple units per cycle included in the logically synthesized circuit can be output. Configuration data 17 for assigning each register to the multi-FF31 register 31r of each PB1 3 Is generated. That is,
  • registers XI and Yl, and registers ⁇ 2 and ⁇ 2 are dynamically selected and read, so each pair must be assigned to a different FF31 in PB13.
  • register ⁇ since register ⁇ is being read, it must be assigned to a multi-FF31 in PB13 that is different from the above pair.
  • the mapping shown in Fig. 14 (a) to Fig. 14 (d) is an example in which each register is arranged in four PB 13 multi-FF31 so as to satisfy these conditions in each state. .
  • register XO, register YO, and register C are allocated to multi-FF31 of the first PB13a among the four PB13, and the other one is unused.
  • Register XI, register Y1, and register D are assigned to multi FF31 of the second PB13b, and the rest One of them is unused.
  • the third PB 13c multi-FF31 is assigned register X2 and register Y2, and the other two are unused.
  • Register A and register B are assigned to the multi-FF31 of the fourth PB13d, and the other two are unused.
  • the arrangement of the four P B13a to 13d can be freely set within the range that can be connected by the routing matrix 15, and the arrangement shown in FIGS. 14 (a) to 14 (d) is merely an example.
  • FIG. 14 (a), FIG. 14 (b), and FIG. 14 (d) the configuration of the storage control unit 40 that controls the storage unit 30 of each PB 13 is omitted.
  • FIG. 16 shows a state of the storage control unit 40 for controlling the storage unit 30 of the PB 13a in the state (00) shown in FIG. 14 (a).
  • Configuration data of state (00) The storage control unit 40 of the configuration data 17a that controls the selector 41 of the storage control unit 40 is “000” respectively, and the control signal 19 is all configuration data. Supplied from 17a. Then, the write enable signal 19t becomes “1”, and writing to any of the registers 31r of the multi-FF 31 is permitted.
  • the input control signal 19i is “10”, and writing to the second register 3lr of the multi-FF31 assigned to the register C is selected.
  • the output control signal 19 ⁇ is “00”, and reading of the 0th register 31r of the multi-FF assigned to the register ⁇ 0 is selected. Therefore, the state of the storage unit 30 of the first PB 13a is set by the storage control signal 19 as shown in FIG. 14 (a).
  • the other storage units 30 of the PB 13 are similarly controlled by the configuration data 17a via the storage control signal 19.
  • FIG. 17 shows the state of the storage control unit 40 for controlling the storage units 30 of the PBs 13a to 13d in the state (10) shown in FIG. 14 (c).
  • the part that controls the storage control unit 40 of the configuration data 17c in the state (10) is "011", the part that controls the reading. The other is “000”. Therefore, the storage control signal 19 ⁇ related to the control of the read register of the multi FF 31 of the storage units 30 of the first to third PBs 13a to 13c is determined by the selection signal 18 supplied to the routing matrix 15 and other storage control signals 19i And 19t are supplied from the configuration data 17c.
  • the registers that are read from the multiple FF31 forces of PB13a to 13c are the logical operation results of logical operation unit 21 of PB13c.
  • the register read from PB13d is determined by configuration data 17c, and the 0th register allocated to multi-FF31 register A is read.
  • the data of the write enable signal of the configuration data 17c is “0”, so the portion of the input selection signal is don't care.
  • enable signal 19t is “1” and input selection signal 19i is “00”, so output 25 of logical operation unit 21 is assigned to register A of multi-FF31! / Written to the 0th register.
  • FIGS. 18 to 21 show examples in which different user circuits are mapped to the device 10 of this example.
  • the user circuit 52 shown in FIG. 18 is a 3-bit counter.
  • FIG. 19 shows a state where the user circuit 52 is mapped to the FPGA 90 shown in FIG.
  • FIG. 20 shows an example in which the user circuit 52 is mapped to the device 10 of this example using two PBs 13 and two sets (two cycles) of configuration data 17.
  • Figure 21 shows an example of mapping to device 10 using one PB13 and four sets (four cycles) of configuration data 17.
  • the counter user circuit 52 is regarded as a two-state or four-state state machine, and the user circuit 52 is realized by mapping the operation of each state to the device 10 every cycle. As a result, the user circuit can be mapped with a smaller number of operation blocks than when mapping to the FPGA90.
  • FIGS. 22 to 24 show examples in which different user circuits are mapped to the device 10 of this example.
  • the user circuit 53 shown in FIG. 22 is a barrel shifter circuit that shifts 7-bit inputs A6 to A0 with 2-bit shift amounts S1 to S0 and outputs 4-bit answers (Y3 to Y0). This circuit combines a pipeline register with S0.
  • FIG. 23 shows a state where the user circuit 53 is mapped to the FPGA 90 shown in FIG. Figures 24 (a) and (b) show that device 10 in this example has five PB13s and two sets (two cycles) of configuration. This is an example in which the user circuit 53 is mapped using the motion data 17. In this case, in Device 10, the user circuit can be implemented with less than half the computation block of FPGA90.
  • Figs. 25 to 31 show some modified examples of the calculation block PB.
  • the output unit 33 of the storage unit 30 of the P B13z shown in FIG. 25 includes two sets of selectors 33s for selecting one of the registers 31r of the multi-FF 31 and outputting it to the routing matrix 15. These two selectors 33s are controlled by different output control signals 19oa and 19ob, and output the respective values as outputs 39a and 39b. Therefore, two current values out of the four built-in registers 31r constituting the multi-FF of the storage unit 30 can be output to the routing matrix 15. Therefore, the two registers 31r of multi-FF31 can be read in the same cycle by other PB.
  • the storage unit 30 of the PB 13y shown in FIG. 26 includes an output unit 33 that outputs all the current values of the four built-in registers 31r constituting the multi-FF 31 to the routing matrix 15. Therefore, the output unit 33 of the storage unit 30 does not include a selector. The output control signal 19t is also unnecessary. Other PBs can read the four registers 31r of multi-FF31 in the same cycle.
  • the PB13y shown in Figure 26 includes a storage unit 30 with a simple configuration, so it is easier to merge functions by mapping to the device 10 with this PB13y. It is.
  • the input / output register allocation rules in step 73a shown in FIG. Easy to merge into PB.
  • the configuration of PB in Fig. 2 or Fig. 25 is preferable to the configuration of PB13y shown in Fig. 26. This is because the configuration of PB1 3y in Fig.
  • the PB 13x shown in FIG. 27 includes an output selection unit 28 that selects either the output 39 of the storage unit 30 or the like and the output 25 of the logical operation unit 21 and outputs it to the routing matrix 15. .
  • This output selection unit 28 includes a selector controlled by the routing matrix output selection information 27 in the configuration data 17. In this PB13x, since the output signal for the routing matrix 15 is limited to only one, the configuration of the routing matrix 15 is simplified.
  • the logical operation unit 21 has two outputs 25a and 25b.
  • One output result 25b is latched in the multi-FF 31 of the storage unit 30, and the other output result 25a is It is output to the routing matrix 15.
  • an operation block PB including a plurality of storage units 30 that latch the outputs 25a and 25b, respectively, and a device including such an operation block.
  • the PB 13v shown in FIG. 29 includes an output selection unit 28 that selects one of the output 25b and the output 39 of the storage unit 30 and outputs it to the routing matrix 15. It is also possible to provide such a calculation block PB13v and a device including the calculation block PB13v.
  • the PB 13u shown in FIG. 30 includes a storage control unit 40 that outputs a signal 19 for controlling each storage unit 30.
  • the storage control unit 40 is controlled by the storage control component 26 of the configuration data 17. Further, since the storage control unit 40 is built in the PB13, each storage unit 30 can be controlled by the configuration data 17 supplied in units of PB13. Therefore, each storage unit 30 can be controlled more flexibly by the configuration data 17. On the other hand, since each PB 13 incorporates the storage control unit 40, the area increases, and the silicon area for mounting the device 10 tends to increase.
  • the PB 13t shown in FIG. 31 has a built-in storage control unit 40 that outputs a signal 19 for controlling each storage unit 30, and the storage control unit 40 is controlled only by the configuration data 17.
  • the This type of PB13t can suppress an increase in the area of the PB13t due to the incorporation of the storage control unit 40.
  • the calculation results of other PB13 In order to reflect the result in the control of the storage unit 30, it is necessary to change the configuration data 17 supplied to the PB 13t according to the calculation result. For this reason, the amount of configuration data 17 for mapping the user circuit may increase.
  • FIG. 32 shows different examples of the storage control unit 40 that generates the control signal 19 for the storage units 30 of the plurality of PBs 13.
  • the storage control unit 40 previously shown in FIG. 4 specifies the number of PB13 on the configuration data 17 side in order to reduce the silicon area, so that the source of the storage control signal 19 is sent from the routing matrix 15. Signal 18 and configuration 17 can be selected.
  • the storage units 30 of the four PBs are controlled as one group, and each storage unit 30 can be individually selected by the configuration data 17. Therefore, the flexibility to control the storage unit 30 is high, but the silicon area for mounting is large.
  • FIG. 33 shows a schematic configuration of the data processing device 130 based on the reconfigurable device 10.
  • the data processing device 130 includes a device 10 and an interface 131 for inputting / outputting data processed by the device 10.
  • the data processor 130 further includes a memory 133 for storing a plurality of groups or blocks of configuration data, or a configuration data file 132, and the contents of the configuration data file 132 in a reconfigurable device 10.
  • control unit 134 for setting.
  • the control unit 134 is, for example, a general-purpose processor such as RISC, and switches the configuration data 17 that is set or stored in the configuration memory 11 included in the reconfigurable device 10.
  • RISC general-purpose processor
  • control unit 134 By enabling the contents of the memory 133 to be changed from the outside via the interface 131, the versatility of the data processing device 130 is further increased.
  • the control unit 134 By implementing the function of the control unit 134 in the reconfigurable device 10, the control unit 134 can be omitted.
  • the interface 131 mainly supports a physical interface mechanism.
  • the interface 131 further supports an analog circuit for analog processing when processing is required for exchanging data via the transmission line.
  • Digital processing for exchanging data can be supported by a reconfigurable device 10.
  • Some functions as an interface are supported by a reconfigurable device 10 to provide a general-purpose data processing device that does not depend on the type of data, the protocol for exchanging data, etc. can do.
  • Applications to which this data processing device 130 can be applied include, for example, a general-purpose processing device that replaces a program-based CPU, a network processing device such as a router, an image processing device including a function as a decoder / encoder, Includes communication devices such as wireless and wired telephones.
  • the reconfigurable integrated circuit device (device) described above has a plurality of PBs 13 including a storage unit 30 having a multi-FF 31.
  • the multi FF31 is controlled by the configuration data 17, and the output 25 of the logical operation unit 21 is latched in the multi FF31.
  • the operation latched in the register 31r of the multi FF31 The result can be output. Therefore, the usage efficiency of each PB13 is greatly improved, and user circuits can be implemented with less hardware resources. Moreover, since it is possible to prevent a shortage of hardware resources, it is easy to increase the parallelism and improve the processing speed.
  • the examples of the device and the operation block described above are only some examples of the reconfigurable device included in the present invention, and the present invention is not limited to the above circuit example. .
  • the above-described integrated circuit device can be provided alone in the form of a chip or the like.
  • a semiconductor device such as an LSI or an ASIC including the above-described integrated circuit is also included in the present invention.
  • an example in which the present invention is applied to a device based on a semiconductor integrated circuit technology for example, an LSI is described.
  • a reconfigurable device and a reconfiguration for forming a so-called circuit network are described.
  • the present invention can be applied to all data processing devices based on reconfigurable devices, including possible devices. In other words, not only circuit devices based on circuit technology at the electrical or electronic level, but all reconfigurable devices that form circuits based on light, living organisms, molecules or atomic structures, gene structures, etc.
  • the present invention can be applied to.

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Logic Circuits (AREA)

Abstract

 各々の演算ブロックの演算論理が可変な複数の演算ブロック(13)と、それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクス(15)とを有する再構成可能な装置を提供する。演算ブロック(13)は、コンフィグレーションデータ(17)により論理が決まる論理演算ユニット(21)と、その論理演算ユニットの演算結果を格納するための格納ユニット(40)とを含む。格納ユニット(40)は、複数の格納エレメント(31r)と、コンフィグレーションデータ(17)に基づき複数の格納エレメント(31r)の何れかを選択して論理演算ユニット(21)の出力を格納するための入力手段(32)と、複数の格納エレメント(31r)とルーチングマトリクス(15)とを接続するための出力手段(33)とを含む。

Description

明 細 書
再構成可能な装置
技術分野
[0001] 本発明は、再構成可能な論理回路を含む装置に関するものである。
背景技術
[0002] プログラマブル論理装置の形態は、フィールドプログラマブルゲートアレイ(FPGA) と称されるシステムである。 FPGAは、コンフィグラブル、すなわち、ユーザが所望す る論理関数をプログラミングする(書き込む)ことができる複数の論理ブロックを有する
[0003] 本願の出願人が出願した国際公開 WO2005Z022380号公報では、再構成可能 な論理回路により構成されるハードウェア空間を動的に最適化することが開示されて いる。この再構成可能なシステムでは、使用しない、あるいはスタンノ ィ状態になる機 能へのハードウ ア資源の割り当てを大幅に絞って、本来集中すべき情報処理にハ 一ドウエア資源魏中的に割り当てできることが記載されている。ハードウェア空間を 動的に最適化することにより、従来の専用 LSIのように、ハードウ ア回路をすベて実 装する必要がなくなる。このため、少ないハードウェア資源で高い実行効率を得ること ができる。
[0004] 汎用のプロセッサにおいて処理能力を向上する公知の方法の 1つは、クロックの周 波数を上げることである。し力しながら、システム全体のクロック周波数を上げることは 、電力消費などの点でシステムのパフォーマンスの向上のために好ましくないことが 多い。代わりに、処理能力が不足するユニット(あるいは機能的なハードウェア資源の 集団)のみのクロック周波数を上げることを提案できる。このケースでは、クロック周波 数を上げたユニットと、他のユニット、たとえば、入出力回路とのクロック周波数の差を 補償する回路あるいは機能の設置が要求される。また、処理能力を向上する要求に は限界がな 、。既に高速で処理を行うようにクロック周波数の高 、システムにお 、て 能力が不足する場合は、いっそう周波数の高いクロックでシステムを駆動することが 求められる。その結果、膨大な電力消費と膨大な発熱との問題を解決する必要が生 ずる。
発明の開示
[0005] 本発明の目的の 1つは、再構成可能な論理回路において、論理の実装効率の向 上を図れるようにすることである。本発明の他の目的の 1つは、再構成可能な回路を 、他の回路の処理状況に適した論理に再構成しやすいようにすることである。本発明 のさらに異なる目的の 1つは、論理の切り替えにより、ハードウェア資源を有効に活用 でさるよう〖こすることである。
[0006] 本発明の一態様は、各々の演算ブロックの演算論理を変更可能な複数の演算プロ ックと、それら複数の演算ブロックを接続する経路を構成するためのルーチンダマトリ タスとを有する装置である。複数の演算ブロックに含まれる演算ブロックは、コンフイダ レーシヨンデータにより論理が決まる論理演算ユニットと、その論理演算ユニットの演 算結果を格納するための格納ユニットとを含む。さらに、格納ユニットは、複数の格納 エレメントと、コンフィグレーションデータに基づき複数の格納エレメントの何れかを選 択して論理演算ユニットの出力を格納するための入力手段と、複数の格納エレメント とルーチングマトリクスとを接続するための出力手段とを含む。
[0007] この再構成可能な装置に含まれる演算ブロックは、その演算ブロックに含まれる論 理演算ユニットの出力数よりも多い数の格納エレメントを備えており、そのいずれかに 論理演算ユニットの出力を格納可能にする。さらに、論理演算ユニットの論理を制御 する機能を備えたコンフィグレーションデータに基づいて、論理演算ユニットの出力を 格納する格納エレメントの選択を可能とする。したがって、あるサイクルにおける論理 演算ユニットの出力は、コンフィグレーションデータに基づいた格納エレメントに格納 でき、次のサイクルにおいて、論理演算ユニットは次の論理演算を行なうことができる 。演算ブロックの出力としては、後続のサイクルのいずれかにおいて、その後続のサ イタルの論理演算ユニットの論理に関わらず、格納エレメントに格納されて 、る演算 結果を出力することができる。コンフィグレーションデータに基づき格納エレメントが選 択されることは、コンフィグレーションデータ自体により指定されることと、コンフィグレ ーシヨンデータにより選択された他の信号に指定されることを含む。
[0008] この再構成可能な装置は、複数セットのコンフィグレーションデータを記憶したコン フィグレーシヨンメモリから演算ブロックに対し、複数セットのコンフィグレーションデー タのいずれかを供給するためのコンフィグレーションデータ供給ユニットと、演算ブロ ックに対して次に供給されるネクストコンフィグレーションデータを決定するためのコン フィグレーシヨン制御ユニットとをさらに有することが望ましい。この再構成可能な装置 は、コンフィグレーション制御ユニットにより、自律的にシステムを再構成して種々のァ プリケーシヨンを実行する用途に適している。したがって、小規模デバイスで大規模な ユーザ回路を実現する用途に適して!/、る。
[0009] この再構成可能な装置は、コンフィグレーションデータ単位での演算ブロックの利 用効率を向上できる。サイクル単位でコンフィグレーションデータを変えて論理を再 構成することにより処理速度の向上が図れる。したがって、演算ブロックのクロック周 波数を上げるという方法に代わり、あるいはその方法と共に、論理を再構成するという 方法により、再構成可能な装置の処理能力の向上という要望に対応できる。
[0010] コンフィグレーション制御ユニットには、演算ブロック単位で制御するためのユニット が含まれる。また、コンフィグレーション制御ユニットには、複数の演算ブロック力もな る区画あるいはグループ単位で、それら複数の演算ブロックに含まれる演算ブロック の論理を制御するためのユニットが含まれる。
[0011] コンフィグレーション制御ユニットが各々の演算ブロックに含まれ、その演算ブロック のコンフィグレーションを制御することにより、演算ブロック単位、すなわち、演算ブロ ックに対応したコンフィグレーションデータ単位で、演算ブロックの構成を制御できる。 このため種々の構成をフレキシブルに実現できる。コンフィグレーション制御ユニット の構成に要するハードウェア資源が増加する可能性がある。また、隣接する演算プロ ックとのインターフェイスの調整をコンフィグレーションデータ毎に解決することを要求 される可能性がある。このことは、コンフィグレーションデータの生成に多少時間を要 する可能性がある力 コンフィグレーションの生成段階で解決できる。
[0012] コンフィグレーション制御ユニットが、複数の演算ブロックのコンフィグレーションを制 御することにより、コンフィグレーション制御ユニットに要するハードウェア資源を縮小 できる。また、コンフィグレーションデータの縮小に効果がある可能性がある。さらに、 この制御方法および構成は、演算ブロックを個別に再構成することにも適用できるが 、複数の演算ブロックの構成を一括して再構成することに適して 、る。
[0013] 格納ユニットの出力手段は、複数の格納エレメントが独立してルーチングマトリクス 力 アクセスできるものを含む。格納エレメントの参照先、すなわち、格納エレメントに 格納されたデータを必要とする演算ブロックから、格納エレメントを選択できる。このた め、格納エレメントに格納されたデータの利用効率は高い。
[0014] 格納ユニットの出力手段は、コンフィグレーションデータに基づき (連動して)複数の 格納エレメントの何れかを選択してルーチングマトリクスと接続するものを含む。多く のアプリケーションでは、格納エレメントに格納された出力の 1つまたは限られた数が 自己または他の演算ブロックの入力として有用であるケースが多い。したがって、格 納エレメントの利用効率と、格納エレメントを参照するための配線資源の利用効率と の向上が図れる。
[0015] また、論理演算ユニットで演算された出力力 同サイクルにおける他の演算ブロック の入力として有用であるケースも多い。したがって、演算ブロックは、論理演算ュ-ッ トの出力を格納ユニットとは別にルーチングマトリクスに接続するダイレクト出力手段 を備えていることが望ましい。演算ブロックは、コンフィグレーションデータに基づき、 論理演算ユニットの出力および複数の格納エレメントの何れかを選択してルーチング マトリクスと接続する出力選択手段を備えて ヽることも有効である。
[0016] コンフィグレーションデータは、格納ユニットの入力手段および Zまたは出力手段を 直に制御する信号あるいは情報を含んでいても良い。また、コンフィグレーションデー タおよび Zまたは入力データを利用して、コンフィグレーションデータに基づき、格納 ユニットの入力手段および zまたは出力手段を制御するための信号を生成しても良 い。コンフィグレーションデータに含まれる格納ユニットの制御情報の削減を図ること ができる。したがって、格納ユニットは、その入力手段および Zまたは出力手段を制 御する格納制御信号を生成する格納制御ユニットを含むことが望まし 、。この格納制 御ユニットの一形態は、ルーチングマトリクス力 供給される入力データおよびコンフ ィグレーシヨンデータの中から、コンフィグレーションデータに基づき、制御信号を生 成するものである。複数の演算ブロックによりデータノ スを構成して多ビット演算を行 なう場合は、ルーチングマトリクス力 供給され入力データにより格納エレメントが選 択されるようにコンフィグレーションデータが格納制御ユニットを設定できることが有効 である。
[0017] 格納制御ユニットは演算ブロック単位で配置されていても良ぐコンフィグレーション データによる格納ユニットの制御のフレキシビリティは高い。格納制御ユニットは、複 数の演算ブロック力 なる区画あるいはグループ単位で配置されても良ぐ格納制御 ユニットの構成に要するハードウェア資源を減らすことができる。複数の演算ブロック 力 なる区画ある 、はグループ単位で配置された格納制御ユニットは、それらの区画 あるいはグループに含まれる個々の演算ブロックを制御することが可能であると共に 、それらの区画あるいはグループに含まれる複数の演算ブロックを一括で制御するの 【こ; 1≤して 0
[0018] 本発明の他の態様は、再構成可能な装置の制御システムである。再構成可能な装 置は、各々の演算ブロックの演算論理が可変な複数の演算ブロックと、それら複数の 演算ブロックを接続する経路を構成するためのルーチングマトリクスとを有し、複数の 演算ブロックに含まれる演算ブロックは、コンフィグレーションデータにより論理が決ま る論理演算ユニットと、その論理演算ユニットの演算結果を格納する格納ユニットとを 含み、格納ユニットは、複数の格納エレメントと、コンフィグレーションデータに基づき 複数の格納エレメントの何れかを選択して論理演算ユニットの出力を格納する入力 手段と、複数の格納エレメントとルーチングマトリクスとを接続する出力手段とを含む。 当該制御システムは、サイクル毎の回路を複数の演算ブロックにマッピングする際に 、サイクル毎の回路に含まれる入力および Ζまたは出力のための異なるレジスタを、 コンフィグレーションデータにより、複数の格納エレメントに含まれる異なる格納エレメ ントに割り当てることを含む。
[0019] 本発明のさらに他の態様は、再構成可能な装置の制御方法である。再構成可能な 装置は、上記と同様の複数の演算ブロックと、ルーチングマトリクスとを有し、演算プロ ックは、コンフィグレーションデータにより論理が決まる論理演算ユニットと、その論理 演算ユニットの演算結果を格納する格納ユニットとを含み、格納ユニットは、複数の格 納エレメントと、コンフィグレーションデータに基づき複数の格納エレメントの何れかを 選択して論理演算ユニットの出力を格納する入力手段と、複数の格納エレメントとル 一チングマトリクスとを接続する出力手段とを含む。当該制御方法は、サイクル毎の 回路を複数の演算ブロックにマッピングする際に、サイクル毎の回路に含まれる入力 および Zまたは出力のための異なるレジスタを、コンフィグレーションデータに基づき
、複数の格納エレメントに含まれる異なる格納エレメントに割り当てることを含む。
[0020] 再構成可能な装置は、複数セットのコンフィグレーションデータを記憶したコンフィ グレーシヨンメモリから、演算ブロックに対し、複数セットのコンフィグレーションデータ の!、ずれかを供給するためのコンフィグレーションデータ供給ユニットを含み、当該 制御方法は、演算ブロックに対して次に供給されるネクストコンフィグレーションデー タを決定することを含むことが望まし ヽ。ネクストコンフィグレーションデータを決定す ることは、演算ブロックの単位で決定することを含む。ネクストコンフィグレーションデ ータを決定することは、複数の演算ブロックの単位で決定することを含む。
[0021] 本発明のさらに他の態様は、再構成可能な装置のためのコンフィグレーションデー タを生成するためのシステムである。再構成可能な装置は、上記と同様の複数の演 算ブロックと、ルーチングマトリクスとを有する。当該システムは、ユーザー回路のサイ クル毎の RTL記述を生成する手段と、サイクル毎の RTL記述をサイクル毎に論理合 成する手段と、論理合成されたサイクル毎の回路を複数の演算ブロックにマッピング する際に、サイクル毎の回路に含まれる入力および Zまたは出力のための異なるレ ジスタを、複数の格納エレメントに含まれる異なる格納エレメントに割り当てるためのコ ンフィグレーシヨンデータを生成する手段とを有する。
[0022] 本発明のさらに他の態様は、再構成可能な装置のためのコンフィグレーションデー タを生成する方法である。再構成可能な装置は、上記と同様の複数の演算ブロックと 、ルーチングマトリクスとを有する。この方法は、以下を含む。
1.ユーザー回路のサイクル毎の RTL記述を生成すること。
2.サイクル毎の RTL記述をサイクル毎に論理合成すること。
3.論理合成されたサイクル毎の回路を複数の演算ブロックにマッピングする際に、サ イタル毎の回路に含まれる入力および zまたは出力のための異なるレジスタを、複数 の格納エレメントに含まれる異なる格納エレメントに割り当てるためのコンフィグレーシ ヨンデータを生成すること。 図面の簡単な説明
[図 1]再構成可能な装置の一例の集積回路装置 (デバイス)の概略構成を示す図。
[図 2]図 1のデバイスに含まれる演算ブロック (PB)の概略構成を示す図。
[図 3]図 2の PBに含まれる論理演算ユニット (LOU)の一例を示す図。
[図 4]図 1のデバイスに含まれる格納制御ユニットの一例を示す図。
[図 5]ユーザー回路の RTL記述の一例を示す図。
[図 6]FPGAの一例を示す図。
[図 7]FPGAの演算ブロックの一例を示す図。
[図 8]FPGAにユーザー回路をマッピングする過程を示すフローチャート。
[図 9]ユーザー回路を論理合成した回路図。
[図 10]回路図を FPGAにマッピングした様子を示す図。
[図 11]再構成可能なデバイスにユーザー回路をマッピングする過程を示すフローチ ヤート。
[図 12]コンフィグレーションデータを生成するシステムの概略構成を示す図。
[図 13]ユーザー回路をサイクル単位で論理合成した回路をシングルレジスタの演算 ブロック(PBS)にマッピングした様子を示す図であり、図 13 (a)はステート 00、図 13 ( b)はステート 01、図 13 (c)はステート 10、図 13 (d)はステート 11を示す。
[図 14]ユーザー回路を、マルチ FFを含むデバイスにマッピングした例を示す図であり
、図 14 (a)はステート 00、図 14 (b)はステート 01、図 14 (c)はステート 10、図 14 (d) はステート 11を示す。
[図 15]コンフィグレーションデータによるデバイスの制御を示すフローチャート。
[図 16]コンフィグレーションデータの格納制御に関わる部分の一例を示す図。
[図 17]コンフィグレーションデータの格納制御に関わる部分の異なる例を示す図。
[図 18]ユーザー回路の異なる例を示す図。
[図 19]図 18に示すユーザー回路を FPGAにマッピングした例を示す図。
[図 20]図 18に示すユーザー回路を再構成可能なデバイスにマッピングした例を示す 図であり、図 20 (a)はステート 0、図 20 (b)はステート 1を示す。
[図 21]図 18に示すユーザー回路を再構成可能なデバイスにマッピングした異なる例 を示す図であり、図 21 (a)はステート 00、図 21 (b)はステート 01、図 21 (c)はステー ト 10、図 21 (d)はステート 11を示す。
[図 22]ユーザー回路の異なる例を示す図。
[図 23]図 22に示すユーザー回路を FPGAにマッピングした例を示す図。
[図 24]図 22に示すユーザー回路を再構成可能なデバイスにマッピングした例を示す 図であり、図 24 (a)はステート 0、図 24 (b)はステート 1を示す。
[図 25]演算ブロックの異なる例を示す図。
[図 26]演算ブロックのさらに異なる例を示す図。
[図 27]演算ブロックのさらに異なる例を示す図。
[図 28]演算ブロックのさらに異なる例を示す図。
[図 29]演算ブロックのさらに異なる例を示す図。
[図 30]演算ブロックのさらに異なる例を示す図。
[図 31]演算ブロックのさらに異なる例を示す図。
[図 32]格納制御ユニットの異なる例を示す図。
[図 33]再構成可能なデバイスを含むデータ処理装置の一例を示す図。
発明を実施するための形態
[0024] 回路を再構成可能な装置は、ハードウェア空間を動的に最適化するシステムに含 まれる。このシステムの、瞬間的に処理量が増えたときの対処方法の 1つは、処理量 が増えた処理のために割り当てられるハードウェア資源を増やし、他の緊急性の低 ヽ 処理のために割り当てられるハードウェア資源を減らすことである。このシステムにお いても、再構成可能なハードウェア資源の量が十分でなければ、ハードウェア資源の 割当てを変えても、処理速度の向上の要求に対して十分に対応できず、処理能力の 向上の要求に対しても十分な対応ができない可能性がある。
[0025] ハードウェア空間を動的に最適化するシステムにおいても、従来のプロセッサと同じ 意味において、クロックの周波数を上げることにより処理能力を向上できる。しかしな がら、クロック周波数を上げることが、電力消費などの点で、最も好ましい対処方法で あると言えな 、点でも共通する。
[0026] 再構成可能なシステムにおいては、クロック周波数を上げる代わりに、あるいはクロ ック周波数を上げることにカ卩えて、ハードウェア資源を並び替えて処理の並列度を上 げて処理速度を向上すると!/、う方法を採ることが可能である。再構成可能なシステム にお 、ては、他の処理ある 、は機能を並列実行するために使用あるいは流用されて V、たノヽードウエア資源を、処理速度が要求される処理の並列度を上げるために使用 可能である。すなわち、再構成可能なシステムは、論理の切り替えによる実効回路規 模の増大を図り、ハードウェア資源を有効に活用できるシステムである。したがって、 再構成可能なハードウェア資源を、より多くの目的で、フレキシブルに使用できること は、処理速度が速ぐ経済的な再構成可能なシステムを提供する上で重要である。
[0027] 本発明の実施形態における再構成可能な装置は、集積回路装置の形態で説明さ れる。この集積回路装置 (デバイス)は、複数の演算ブロックを含み、演算ブロックは、 論理をコンフィグレーションデータにより変更可能である論理演算ユニットと、論理演 算ユニットの出力数よりも多い数の格納エレメントを含む。コンフィグレーションデータ に基づいて、論理演算ユニットの出力を格納する格納エレメントの選択を可能とする ことにより、あるサイクルにおける論理演算ユニットの出力は、コンフィグレーションデ ータに基づく所定の格納エレメントに格納される。このため、個々の演算ブロックにお いて、前のサイクルの出力は、コンフィグレーションデータに基づき、次のサイクルに おける論理演算ユニットの論理演算の結果(出力)と分けて、あるいは独立したデー タ(データセット)としてハンドリングされる。このため、それぞれの演算ブロックをサイク ル単位でフレキシブルに利用することが可能となる。
[0028] したがって、以下の実施形態の集積回路装置に、ユーザーのアプリケーションを実 現するためのユーザー回路をマッピングする方法の 1つは、以下の工程を有するもの である。
al .ユーザー回路のサイクル毎の RTL (Register Transfer Level)記述を生成するこ と。
a2.サイクル毎の RTL記述をサイクル毎に論理合成すること。
a3.論理合成されたサイクル毎の回路を複数の演算ブロックにマッピングする際に、 サイクル毎の回路に含まれる入力および/または出力の異なるレジスタを、規則の範 囲で複数の格納エレメントの異なる格納エレメントに割り当てるようにマッピングするこ と。
[0029] サイクル毎の回路に含まれる入力および Zまたは出力の異なるレジスタには、入力 として参照されるデータであって論理演算において異なる意味を持つデータが格納 されるレジスタ、異なる入力および Zまたは論理演算により生成(出力)されたデータ 力 Sラッチされるレジスタなどが含まれる。
[0030] 規則は、演算ブロックに含まれる格納ユニットの構成により決まる。例えば、複数の 格納エレメントの全てがルーチングマトリクスから自由に参照できるシステムであれば 、ユーザー回路において、複数の入力のレジスタとして参照されるレジスタを 1つの演 算ブロックの複数の格納エレメントにそれぞれ割り当てることができる。複数の格納ェ レメントの内の選択された 1つがルーチングマトリクスから参照されるシステムであれ ば、あるサイクルで複数の入力のレジスタが要求される回路がユーザー回路の一部と して論理合成された場合は、それらの入力のレジスタは、 1つの演算ブロックの格納 エレメントではなぐ複数の演算ブロックの格納エレメントに割り当てられる。
[0031] この集積回路装置においては、後続のサイクルにおいて必要とされる演算結果を その都度演算する代わりに格納エレメントの 1つに格納しておくことが可能である。例 えば、演算ブロックを N個含むシステムにおいて、各サイクルにおいて N個の演算ブ ロックが次々と所望の論理演算を行なうことが望ましい。その一方で、 N個の演算プロ ックの演算結果が各サイクルにお 、て全て消費され、後続のサイクルにお 、て必要と されな ヽと 、うような回路はほとんどな!/、。後続のサイクルにお 、て必要とされるたび に、その論理演算を演算ブロックに割り当てて演算しなおすことは可能である。再演 算する代わりに、格納エレメントに格納されているデータを使用することが可能であり 、演算ブロックの利用効率を向上できる可能性がある。
[0032] 本実施形態の再構成可能なシステムは、論理演算ユニットの論理を決めるためのコ ンフィグレーシヨンデータの単位あるいはタイミングで、論理演算ユニットの出力を格 納する格納エレメントの選択を可能とする。したがって、複数のロジックを、ある演算 ブロックにより実行する場合に、コンフィグレーションデータの単位ある ヽはタイミング で、その演算ブロックに含まれる論理演算ユニットの演算論理は次々と移行する。ま た、論理演算ユニットの演算論理とは独立に、コンフィグレーションデータの単位ある いはタイミングで、演算ブロックから出力される演算結果を選択する、あるいは選択さ せることができる。
[0033] このため、演算ブロックに含まれる論理演算ユニットの演算時期を、その論理演算 出力の要求時期と分離できる。論理演算ユニットを論理演算後に直ちに開放できる ので論理演算ユニットの演算能力を最大限に利用できる。そして、論理演算ユニット の出力が格納される格納エレメントは、論理演算ユニットの論理を決定するコンフイダ レーシヨンデータに基づき選択されるので、擬似的に 1つの演算ブロックから、コンフ ィグレーシヨンデータにより指定された複数の論理の演算結果を出力させることが可 能となる。また、演算ブロックにおいて、同じ論理演算の出力を繰り返し出力するため に、論理演算ユニットが同じ論理演算を繰り返す必要はないので、論理演算ユニット は次の論理演算に即座に移行してシステムの処理能力の向上に寄与できる。
[0034] 図 1は、本発明に含まれる再構成可能な装置の一実施形態の集積回路装置の概 略構成を示している。この集積回路装置 (デバイス) 10は、各々の演算論理を変更可 能な複数の演算ブロック(Processing Block (PB)または Configurable Logic Block (C LB)、以降においては PB) 13と、それら複数の演算ブロック 13を接続する経路 (配 線路、回路、伝送路)を構成するためのルーチングマトリクス 15と、複数セットのコン フィグレーシヨンデータ 17を記憶したコンフィグレーションメモリ 11と、コンフィグレー シヨンデータ 17のいずれかを供給するためのコンフィグレーション制御ユニット 12と、 演算ブロック 13に含まれる格納ユニットを制御するための格納制御ユニット 40とを有 している。コンフィグレーション制御ユニット 12は、コンフィグレーションメモリ 11から演 算ブロック 13に対し、複数セットのコンフィグレーションデータ 17のいずれかを供給 する。格納制御ユニット 40は、演算ブロック 13に含まれる格納ユニットを制御する格 納制御信号 19を生成する。
[0035] 図 2に、演算ブロック 13の構成の一例を示してある。 PB13は、コンフィグレーション データ 17に含まれるファンクションデータ 24により論理が決まる論理演算ユニット(Lo gical Operating Unit (LOU) ) 21と、その LOU21の演算結果を格納する格納ュ-ッ ト 30とを備えている。この LOU21は、 4つの入力信号 23に対して、 1つ出力信号 25 を出力する。 PB13の格納ユニット 30は、 LOU21の出力信号 25を一時的に格納す るためのものである。格納ユニット 30は、出力信号 25よりも多い 4つの格納エレメント 3 lrを備えたマルチ FF31と、格納制御信号 19により複数の格納エレメント 3 lrの何 れかを選択して出力信号 25を格納する入力ユニット 32と、複数の格納エレメント 31と ルーチングマトリクス 15とを接続する出力ユニット 33とを備えている。さらに、 PB13は 、LOU21の出力信号 25を直にルーチングマトリクス 15に出力するダイレクト出カラ イン (配線) 29を備えている。
[0036] LOU21の 1つの例は、ルックアップテーブル式の関数発生装置である。ルックアツ プテーブル式の関数発生装置の一例は FPGAなどに採用されているものである。 L OU21の他の例は、クロックサイクルベース(サイクルベース)で論理を変更すること 力 Sできるものである。図 3は、本願の出願人が国際公開 WO2005Z022380号公報 にお 、て提案したデコーダ方式の論理演算回路であり、サイクルベースで論理を変 更することができる LOU21の一例である。
[0037] 図 3の LOU21は、 4入力のデコーダ 21aと、 16入力 1出力のセレクタ 21bとを含む 。 LOU21は、 16ビットのファンクションデータ 24から 4ビットの入力 23により 1ビットの 出力信号 25を選択して出力する。 LOU21は、さらに、 2ビットのモード信号 21cによ り、 4入力 1出力の論理演算回路に限らず、 3入力 1出力の論理演算回路、 2入力 1 出力の論理演算回路として機能させることができる。 LOU21には、ファンクションデ ータ 24を変えることにより、 4入力 AND、 4入力 NANDなど 20種類以上の論理をサ イタル単位で実装することができる。このため、サイクル単位で供給される入力信号 2 3をサイクル単位で供給される異なる論理により演算して出力信号 25を生成すること ができる。
[0038] 格納ユニット 30は、 4つのフリップフロップあるいはレジスタ 31rを含むレジスタ群( 以降においてはマルチ FFまたはマルチレジスタ) 31を備えている。 4つのフリップフ ロップあるいはレジスタ 31rは格納エレメントであり、 LOU21の出力信号 25が供給さ れる。格納ユニット 30の出力ユニット 33はセレクタを含む。出力ユニット 33は、以降 において、セレクタ 33あるいは読み出しセレクタ 33として参照されることがある。セレ クタ 33は、格納制御信号 19に含まれる出力制御信号 19οにより、マルチ FF31のレ ジスタ 31rを選んでその現在値を出力信号 39として読み出すことを可能とする。 [0039] 格納ユニット 30の入力ユニット 32はデコーダを含む。以降において、入力ユニット 3 2は、デコーダ 32として参照されることがある。デコーダ 32は、格納制御信号 19に含 まれる入力制御信号 19iにより、マルチ FF31の一つのレジスタ 31rを選ぶ。さらに、 入力ユニット 32は、格納制御信号 19に含まれる書き込みィネーブル信号 19tを、選 ばれたレジスタ 31rに対し書き込みィネーブル信号 19eとして出力する。
[0040] この論理を再構成可能なデバイス 10においては、コンフィグレーション制御ユニット に含まれるコンフィグレーション指定レジスタ 12rの値 16に基づいて、クロックサイクル 毎に、コンフィグレーションメモリアレイ 11のうちのひとつが選ばれる。これにより、コン フィグレーシヨンデータ 17が確定する。コンフィグレーションデータ 17により、各クロッ クサイクルにおける、 PB13と、格納制御ユニット 40と、コンフィグラブルルーチングマ トリタス 15の形態が特定される。
[0041] 格納制御ユニット 40は、コンフィグレーションデータ 17に基づき、格納制御信号 19 を生成する。格納制御信号 19は、コンフィグラブルルーチングマトリクス 15を介して 各 PB13の格納ユニット 30に送られる。この格納制御ユニット 40は、コンフィグレーシ ヨンデータ 17に含まれる格納制御データにより、その格納制御データ力 格納制御 信号 19を生成する。または、格納制御ユニット 40は、コンフィグレーションデータ 17 に含まれる格納制御データに基づき、コンフィグラブルルーチングマトリクス 15から取 得した信号 18により格納制御信号 19を生成する。
[0042] PB13の格納ユニット 30の読み出しセレクタ 33は、格納制御信号(レジスタ選択信 号) 19のうち、出力制御信号 (読み出しレジスタ選択信号) 19οに基づいて、マルチ F F31の中のひとつのレジスタ 31rを選ぶ。その結果、セレクタ 33は、選択されたレジス タ 31rに格納された値をコンフィグラブルルーチングマトリクス 15に出力する。または 、セレクタ 33は、選択されたレジスタ 3 lrに格納された値を、コンフィグラブルルーチ ングマトリクス 15を介して他の PB 13が読みこむことを可能とする。
[0043] あるクロックサイクルにおいて、 PB13の組み合わせ論理演算ユニット 21は、コンフ ィグラブルルーチングマトリクス 15から取得した入力信号 23に対して、コンフィグレー シヨンデータ 17のうち該 PB向けのファンクションデータ 24で指示される組み合わせ 論理演算を行い、演算結果 25を出力する。その出力 25は、ダイレクト出力配線 29に よりコンフィグラブルルーチングマトリクス 15に出力される。論理演算ユニット 21の出 力(演算結果) 25は同時に、レジスタ書き込みデータとして格納ユニット 30にも送ら れる。演算結果 25は、レジスタ書き込みデータとして、 PB13に内蔵されるマルチ FF 31の全てのレジスタ 3 lrのデータ入力信号に接続される。
[0044] 演算結果 25が、いずれのレジスタ 3 lrに書き込まれるかは、格納制御信号 19により 格納入力制御ユニットであるデコーダ 32から供給される書き込みィネーブル信号 19 eによって制御される。つまり、書き込みィネーブル信号 19tが無効であれば各レジス タ 31の書き込みィネーブル信号 19eは全て無効となり、書き込みィネーブル信号 19 tが有効であれば各レジスタ 31の書き込みィネーブル信号 19eのうちどれ力 1つが有 効になり、演算出力 25が格納される。
[0045] そのクロックサイクルの終了時には、各 PB13のマルチレジスタ 31のうち書き込みィ ネーブル信号 19eが有効であったレジスタ 3 lrの値が更新される。それと同時に、い ずれかの PB13により生成され、コンフィグラブルルーチングマトリクス 15に出力され たコンフィグレーション指定レジスタ 12rへの書き込み信号 20によって、コンフィグレ ーシヨン指定レジスタ 12rの選択値 16が更新される。これにより、ネクストコンフィグレ ーシヨンが決まる。ここまでが、デバイス 10における 1クロックサイクル分の処理となる
[0046] 次のクロックサイクルでは、再び、コンフィグレーション指定レジスタ 12rの選択値 16 に応じてコンフィグレーションメモリアレイ 11のうちのひとつが選ばれ、コンフィグレー シヨンデータ 17が確定する。その結果、 PB13と、格納制御ユニット 40と、コンフィグラ ブルルーチングマトリクス 15の形態が特定され、その後の処理も前のサイクルと同じ 手順で進行する。このように、デバイス 10における動作手順は毎サイクル同じである 。一方、デバイス 10の動作結果を左右するコンフィグレーションデータ 17は毎サイク ルで変えることが可能であり、各 PB13において各サイクルで異なる処理を行うことが できる。
[0047] 図 4に、格納制御ユニット 40の構成を示している。この格納制御ユニット 40は、セレ クタ群 41を含む。このセレクタ群 41は、コンフィグレーションデータ 17により、出力制 御信号(2ビット) 19ο,入力制御信号(2ビット) 19i、書き込みィネーブル信号(1ビッ ト) 19tを、コンフィグレーションデータ 17の中の所定の部分から選択する。セレクタ群 41は、これらの信号 19o、 19iおよび 19tをコンフィグラブルルーチングマトリクス 15か ら取得した入力信号 18から選択することも可能である。格納制御ユニット 40は、全 P B13に対する制御信号 19を単純に、独立して生成することが可能である。図 4に示し た格納制御ユニット 40では、ユニット 40に対してコンフィグラブルルーチングマトリク ス 15から供給される入力信号 18は、読み出し選択用の信号、書き込み選択用の信 号、書き込みィネーブル用の信号が全 PB 13に対し共通する。コンフィグレーション データ 17の量、およびコンフィグラブルルーチングマトリクス 15に含まれる入力信号 1 8の本数を減らすことにより、データおよび Zまたはルーチングマトリクスによりシリコン 面積が消費されるのを防止できる。
[0048] 図 4に示した格納制御ユニット 40には、コンフィグレーションデータ 17の含まれるセ レクタ 41を制御するための情報力 制御信号 45として供給される。制御信号 45は、 PB毎に独立に用意されるのではなぐ制御信号 45に「個数」をエンコードすることに より信号線の数が減らされている。たとえば、制御信号 45は、「出力制御信号 19οと してコンフィグラブルルーチングマトリクス 15から取得した信号 18を選ぶ ΡΒの数」を 示す信号を含む。その結果、各 ΡΒに対応して設けられたコンパレータ 46が、制御信 号 45と自己の ΡΒ番号とを比較して、自己の PB13に対応するセレクタ 41に制御信 号を供給する。
[0049] 例えば、制御信号 45が「0」なら、すべてのコンパレータ 46が「偽」となる。このため、 格納制御ユニット 40は、コンフィグラブルルーチングマトリクス 15から取得した信号 1 8でなく、コンフィグレーシヨンデータ 17の所定の信号が出力制御信号 19οとして選 ばれるように設定される。制御信号 45が「2」なら、左側の 2つの PB13のコンパレータ 46力真となる。このため、格納制御ユニット 40では、左側の 2つの PB13の出力制御 信号 19οはコンフィグラブルルーチングマトリクス 15から取得した信号 18から生成さ れる。右側の残りの PB13の出力制御信号 19οはコンフィグレーションデータ 17の所 定の信号力 生成される。入力制御信号 19i、書き込みィネーブル信号 19tの生成 についても、同様に、格納制御ユニット 40は、コンフィグレーションデータ 17に基づき 制御される。 [0050] 図 4に示した格納制御ユニット 40の構成は、格納制御ユニット 40を実装するのに必 要なシリコン面積を節約しつつも、ユーザー回路をデバイスにマッピングする際の制 約が実用上あまり厳しくならないように配慮されている。すなわち、読み出し Z書き込 みレジスタの選択は多くの場合、コンフィグレーションデータ 17で直接指定するであ ろうと考えられる。そのケースでは、格納制御ユニット 40は、コンフィグレーションデー タ 17に基づき、各 PB 13にお 、て異なるレジスタ 3 lrを読み書きできるように制御する
[0051] レジスタ 31rの選択をルーチングマトリクス 15から取得した信号 18により、間接的 Z 動的に行いたいケースがある。例えば、データパス系の多ビット演算である。多ビット 演算のケースでは、各 PB13において異なるレジスタ 3 lrを読み書きする必要が発生 することはほとんどない。このため、ルーチングマトリクス 15からの信号 18を複数の P B用として共有にすることによるディメリットはほとんどない。ただし、多ビット演算のビ ット数はいろいろな可能性が考えられる。このため、コンフィグレーションデータ 17に より、 PB13の個数を指定できることは有効である。
[0052] また、データパス系の演算の制御で格納制御ユニット 40を用いる場合、格納制御 ユニット 40はデータパス演算に対応づけて制御を行うことが望ましい。図 1に示した デバイス 10では、全体を 1つの格納制御ユニット 40により共通制御(共有制御)して いるのに対し、データパス系の演算を主とするデバイスであれば、 10あるいは 20程 度の PB13のグループ毎に格納制御ユニットを割り当てて、それらのグループに含ま れる PB13を共通制御(共有制御)することが望ましい。
[0053] 次に、具体的なユーザー回路をデバイス 10にマッピングする例を説明する。図 5は 、マッピングする対象のユーザー回路 51を Verilogコードにより表わしたものである。 このユーザー回路は、 4つのステート(00)、(01)、(10)および(11)力 stateレジスタ の値により実行されるステートマシンとして機能する。
[0054] まず、任意の 4入力論理関数を計算できる FPGAを想定し、その FPGAに、このュ 一ザ一回路を実装するケースを説明する。図 6に、そのような FPGA90の全体構成 を示し、図 7に、演算ブロック 93の構成を示している。 FPGA90は、複数の演算ブロ ック 93と、それらを接続するルーチングマトリクス 95と、演算ブロック 93およびルーチ ングマトリクス 95をプログラミングするためのデータ 97が格納されたメモリ 91とを備え ている。各々の演算ブロック 93は、任意の 4入力論理関数を計算できる論理演算ュ ニット 92と、その出力をダイレクトに、あるいはレジスタ 98にラッチした後にルーチング マトリクス 95に出力する出力ユニット 99とを備えている。
[0055] 図 8に、 FPGAにユーザー回路 51をマッピングする方法を示している。ステップ 81 にお!/、て、 C言語などの動作レベル記述から動作合成ツールを通してハードウェア 言語 (Verilogあるいは VHDLなど)による RTL (Register Transfer Level)記述を生 成する。ステップ 82において、実装する FPGA向けの論理合成ツールにより回路図 を生成する。ステップ 83において、配置配線ツールにより FPGAにマッピングするデ ータ 97を生成する。
[0056] 図 9は、図 5に RTL記述で示したユーザー回路 51を、 FPGA90にマッピングする ために論理合成した回路図である。図 10は、図 9の回路図を FPGA90にマッピング した結果を示している。図 10からわかるように、 FPGA90では、 31個の演算ブロック 93を用いることによりユーザー回路 51をマッピングすることができる。
[0057] 図 11に、本例のデバイス 10にユーザー回路をマッピングする過程をフローチャート により示している。まず、ステップ 71において、 C言語などの動作レベル記述を解析し て、サイクル単位で動作が記述されたサイクル単位の RTL記述を生成する。マツピン グしょうとしているユーザー回路 51はステートマシンである。したがって、 1ステートを 1サイクルの処理とすることにより、図 5に示した RTL記述がサイクル単位の RTL記述 に該当する。ステップ 72において、これらのサイクル毎の RTL記述を、個々に、論理 合成してサイクル毎に回路図を生成する。ステップ 73において、サイクル毎にデバィ ス 10に回路をマッピングするためのコンフィグレーションデータ 17を生成する。コンフ ィグレーシヨンデータ 17は、各サイクルのコンフィグレーションデータの集合と言うこと ができる。
[0058] コンフィグレーションデータ 17を生成するステップ 73においては、ユーザー回路 51 に含まれる異なるレジスタ、すなわち、入力のレジスタ (入力データが格納されるレジ スタ)および出力のレジスタ(出力データが格納されるレジスタ)のそれぞれに対して P B13を個別に割り当てない。ステップ 73aにおいて、入力のレジスタ(読み出されるレ ジスタ)および出力のレジスタ(書き込まれるレジスタ)のそれぞれを、規則にしたがつ て格納ユニット 30のマルチ FF31の異なる FF (レジスタ) 3 lrに割り当てる。
[0059] さらに、 FPGAのケースでは複数の演算ブロックに割り当てられる回路構成を、本 例のデバイス 10では 1つの PB13にマージしてマッピングする。ステップ 73bにおい て、複数の回路構成を 1つの PB 13にマージしてマッピングするためのコンフィグレー シヨンデータ 17を生成する。入力および出力のレジスタが同じ場合は、マルチ FF31 の同じレジスタ 3 lrを割り付ける。
[0060] ステップ 73aにおける規則は、そのサイクルの入出力状態および他のサイクルにお ける入出力状態を参照し、格納ユニット 30の機能力 Sカバーできる範囲で入力および 出力の異なるレジスタを、マルチ FF31の異なるレジスタ 31rに割り当てることを含む。 例えば、図 2に示した格納ユニット 30では、 1サイクルにおいては、マルチレジスタ 31 を構成する 4つのレジスタ 31rの 1つに対してのみ書き込みできる。また、格納ユニット 30では、書き込みとは独立して、マルチレジスタ 31の 1つのレジスタ 31rからデータを 出力できる。したがって、あるサイクルにおいて同時に参照されるレジスタは異なる P B13にマッピングする必要がある。また、あるサイクルにおいて同時に値が更新され るレジスタは異なる PB13にマッピングする必要がある。
[0061] このため、ステップ 73aにおいては、これらの規則に従い、参照されているレジスタ を格納ユニット 30のマルチレジスタ 31の 1つに割り当てる。その範囲内において、ス テツプ 72の論理合成の段階では複数の演算ブロックが要求される機能を 1つの PB1 3にマージする。例えば、後述する格納ユニットの一例においては、マルチレジスタ 3 1を構成する 4つのレジスタ 3 lrの出力が全てルーチングマトリクス 15から参照できる 。そのような格納ユニットが採用されているデバイスにマッピングするためのコンフイダ レーシヨンデータを生成する場合は、あるサイクルにおいて同時に参照されるレジス タであつても、それらのレジスタを 1つの PB 13にマッピングするためのコンフィグレー シヨンデータを生成できる可能性がある。
[0062] 図 12に、このマッピング方法に基づき、コンフィグレーションデータを生成するシス テムの概略構成を示している。このシステム 100は、通常のコンピュータを制御するた めのソフトウェア(プログラム製品)として CD— ROMなどの適当な記録媒体に記録し て提供される。そして、システム 100は、コンピュータに含まれるハードウェア資源を 用いて構成される。このシステムは、 LSIあるいは ASICなどの半導体装置を開発お よび設計する CADシステムと同様に、再構成可能なデバイス 10を設計および開発 する CADシステムあるいはフレームワークの一環として提供される。システム 100は、 ユーザー回路 51の仕様に関するデータ 111を読み込み、ユーザー回路のサイクル 毎の RTL記述を生成する手段 101と、サイクル毎の RTL記述をサイクル毎に論理合 成する手段 102と、論理合成された結果とデバイスライブラリ 112の情報に基づきコ ンフィグレーシヨンデータ 17を生成する手段 103とを含む。コンフィグレーションデー タ 17を生成する手段 103は、論理合成されたサイクル毎の回路を複数の演算ブロッ ク PBにマッピングする際に、サイクル毎の回路に含まれる入力および Zまたは出力 のための異なるレジスタを、上記した規則にしたがって格納ユニット 40の複数の格納 エレメント(マルチ FF) 31に含まれる異なる格納エレメント(レジスタ) 3 lrに割り当てる ためのコンフィグレーションデータ 17を生成する。コンフィグレーションデータ 17は、 各サイクルのコンフィグレーションデータの集合となる。
[0063] このようにコンフィグレーションデータ 17を生成することにより、 1つの PB13のマル チ FF31に、あるサイクルにおいて入出力される複数のデータを格納するレジスタを 割り付けたり、サイクルを跨いで入出力される複数のデータを格納するレジスタを割り 付けることができる。したがって、上述したマッピング方法を採用し、それに基づきコン フィグレーシヨンデータ 17を生成することにより、 PB13の利用効率が大幅に向上す る。このため、少ないハードウェア資源でユーザー回路を実装できる。また、ハードウ エア資源が不足することを防止できるので、並列度を上げて処理速度の向上を図るこ とも容易となる。
[0064] PB13の利用効率の向上は、幾つかの面から説明できる。 1つの説明は、論理演算 ユニット 21の出力 25を格納ユニット 30のマルチ FF31にラッチすることである。このた め、出力 25が要求されるタイミングと論理演算とは独立させることが可能となる。さら に、演算後に PB13の論理演算ユニット 21を出力 25の論理力も解放して、次の論理 演算を実行させることができる。
[0065] 他の 1つの説明は、論理演算ユニット 21の演算ロジックおよびマルチ FF31の選択 力 格納制御ユニット 40を制御するコンフィグレーションデータ 17により制御されるこ とである。このため、 PB13の機能は、コンフィグレーションデータ 17により論理演算と 出力とを個別に制御できる。したがって、マルチ FF31を使用することにより、 PB13 の論理演算ユニット 21を、コンフィグレーションデータ単位、すなわち、本例ではサイ クル単位で使用できることが保証される。さらに、 PB13は、ダイレクト出力配線 29を 備えている。このため、クロック周波数を上げずに、 1サイクルのコンフィグレーション データ 17により、 1つの PB13から複数の論理演算結果を出力させることができる。
[0066] さらに異なる説明の 1つは、論理演算ユニット 21の演算結果をマルチ FF31に出力 をラッチして、後続のサイクルで出力できることである。このため、あるサイクルで演算 が要求されるロジックの複数の入力データを、数サイクルかけて事前に準備すること が可能となる。さらに、瞬間的な演算数の増加を時間方向に平均化することも可能と なる。そして、このような PB13における論理演算の内容とタイミング、 PB13の出力の 内容とタイミングは、全て、回路をデバイス 10にマッピングするためのコンフィグレー シヨンデータ 17に集約され、解決される。このため、クロック周波数を高速ィ匕したり、ク ロック周波数の異なる回路との同期をとる機能を追加したり、特別なメモリを設けたり する必要はない。
[0067] 図 13に、図 5に Verilogコードで表されたユーザー回路 51をデバイス 10にマツピン グするためにステート毎、すなわち、サイクル毎に論理合成した結果を示している。す なわち、図 11のステップ 71の出力である。論理合成した結果の回路図は、サイクル 毎に図 13 (a)〜(d)の 4通りになる。
[0068] 図 13 (a)は、ステート(00)の回路図である。 bflgレジスタ(B)と xregレジスタ(X0、 XI、 X2)の現在値および fsmin入力信号(fsminO、 fsminl、 fsmin2、 fsmin3)をも とに小規模な論理演算を行 ヽ、 aflgレジスタ (A)、 cflgレジスタ(C)、 dflgレジスタ(D )に値を書き込む。さらに、 fsmout出力信号(fsmoutO、 fsmoutl)には xregレジス タ(X0、 XI)の値を出す。そして、ネクストコンフィグレーションを指示するための n—s tate信号(n— stateO、 n— state 1)として定数(01)を出力する。 n— state信号によ り、次のサイクルではステート (01)に遷移することを指示する。
[0069] 図 13 (b)は、ステート(01)の回路図である。図 13 (c)は、ステート(10)の回路図で ある。図 13 (d)は、ステート(11)の回路図である。これらも図 5の Verilogコードの cas e文の通りに、それぞれのステートを個別に回路図に翻訳したものである。なお、図 1 3 (a)〜(d)においては、論理演算ユニットの出力をシングル FFによりラッチする演算 ブロック PBS79を想定して、破線により論理を分割している。論理合成した段階では 、ユーザー回路 51をシングル FFの演算ブロック PBS79により構成されるデバイスに マップするのであれば、ステート(00)を実装するためには 8つの PBS79が必要となり 、ステート (01)を実装するためには 8つの PBS79が必要となる。同様に、ステート(1 0)を実装するためには 13個の PBS79が必要となり、ステート(11)を実装するために は 7つの PBS79が必要となる。したがって、論理合成した段階で、図 10に示した FP GAでは 31個の演算ブロックがマッピングするのに必要だったユーザー回路 51を、 最大で 13個の PBS79にマッピングすることができる。
[0070] 図 14に、サイクル毎に論理合成した回路を、デバイス 10にマッピングした結果を示 している。図 11のステップ 73の出力である。図 14 (a)は、ステート(00)をマッピング した状態を示し、図 14 (b)は、ステート(01)をマッピングした状態を示し、図 14 (c)は 、ステート(10)をマッピングした状態を示し、図 14 (d)は、ステート(11)をマッピング した状態を示している。
[0071] いずれのステート(サイクル)においても、 4つの PB13を用いてユーザー回路がマ ッビングされている。したがって、デバイス 10をサイクル単位で再構成することにより、 ユーザー回路 51を 4個の PB13を用いてマッピングすることができることがわかる。こ のユーザー回路 51は、図 10に示した FPGAでは、マッピングするために 31個の演 算ブロックを用いた回路と同じでものである。
[0072] 図 15に、このデバイス 10の制御を示している。このデバイス 10では、ステップ 121 において、演算ブロックに対して次に供給されるネクストコンフィグレーションデータが 決定される。ステップ 122において、各サイクルのコンフィグレーションデータ 17a〜l 7dのいずれかがコンフィグレーションメモリ 11から PB13に供給されることにより、各 々のユーザー回路 51の RTL記述の各ステート(サイクル)の機能は実現される。すな わち、 PB 13に供給されるサイクル単位のコンフィグレーションデータ 17a〜 17dは、 PB13から出力される信号 20に基づきコンフィグレーション制御ユニット 12の選択値 16により決まる。したがって、このデバイス 10においては、サイクル毎に次のサイクル のコンフィグレーション(ネクストコンフィグレーション)が決まり、それと共にデバイスが 再構成され、サイクル単位でデバイスにおいて処理される内容が変更される。
[0073] ステップ 122において、サイクル毎の回路を複数の演算ブロック PBにマッピングす る際に、サイクル毎の回路に含まれる入力および Zまたは出力のための異なるレジス タが、サイクル毎のコンフィグレーションデータに基づき、マルチ FF31のレジスタ 31r に割り当てられる。図 1に示すデバイス 10は、複数の PBを制御するためのコンフイダ レーシヨン制御ユニット 12を備えている。したがって、コンフィグレーション制御ュ-ッ ト 12は、複数の演算ブロック PBからなる区画あるいはグループ単位で、それら複数 の演算ブロック PBに含まれる演算ブロックの論理を制御する。この方式は、複数の演 算ブロック PBからなる区画あるいはグループ単位でコンフィグレーションが決められ ているので、インターフェイスの調整、すなわち、ルーチングマトリクス 15の再構成も 容易である。
[0074] ネクストコンフィグレーションを決定する制御機能を各々の演算ブロック PBに含ませ ることも可能である。この場合、各 PB13からルーチングマトリクス 15を介して制御ュ ニット 12に供給される書き込み信号 20が、各 PB13から出力されたネクストコンフイダ レーシヨンの指示情報であると理解される。この方式は、演算ブロック PBの単位、す なわち、演算ブロックに対応したコンフィグレーションデータの単位で演算ブロックの 構成を制御できる。このため種々の構成をフレキシブルに実現できる。その一方で、 コンフィグレーションを制御するために要するハードウェア資源が増加する傾向にあり 、また、隣接する演算ブロックとのインターフェイスの調整、ルーチングマトリクス 15の 構成をコンフィグレーションデータ毎に解決することを要求される可能性がある。
[0075] 図 11のユーザー回路 51のコンフィグレーションデータを生成するためのステップ 7 3aにおいて、各サイクルのレジスタに対する入出力状態および他のサイクルにおける 入出力状態を判断する。具体的には、ステップ 73aにおいては、格納ユニット 30は各 サイクルにおいてマルチ FF31の 1つに対して入力でき、 1つを出力できるという規則 に基づき、論理合成された回路に含まれるサイクル当たりの複数のレジスタを各 PB1 3のマルチ FF31のレジスタ 31rに割り当てるためのコンフィグレーションデータ 17を 生成している。すなわち、
ステート 00 :
'レジスタ X0〜X2と、レジスタ Bを読んでいるので、これらを異なる PB13のマルチ FF 31に割り当てる必要がある。
'レジスタ A、レジスタ C、レジスタ Dに書いているので、これらを異なる PB 13のマルチ FF31に割り当てる必要がある。
[0076] ステート 01 :
'レジスタ Y0〜Y2と、レジスタ Αを読んでいるので、これらを異なる PB13のマルチ F F31に割り当てる必要がある。
'レジスタ X0〜X2と、レジスタ Bに書いているので、これらを異なる PB13のマルチ FF 31に割り当てる必要がある。
[0077] ステート 10 :
'レジスタ XOと YO、レジスタ XIと Yl、レジスタ Χ2と Υ2とを、それぞれ動的に選択して 読んで 、るので、それぞれのペアを異なる PB 13のマルチ FF31に割り当てる必要が ある。さらに、レジスタ Αを読んでいるので、それを上記のペアと異なる PB13のマル チ FF31に割り当てる必要がある。
'レジスタ X0〜X2と、レジスタ Bに書いているので、これらを異なる PB13のマルチ FF 31に割り当てる必要がある。
[0078] ステート 11 :
'レジスタ B、レジスタ C、レジスタ Dを読んでいるので、これらを異なる PB13のマルチ FF31に割り当てる必要がある。
•レジスタ Y0〜Y2に書!ヽて 、るので、これらを異なる PB13のマルチ FF31に割り当 てる必要がある。
[0079] 図 14 (a)〜図 14 (d)に示したマッピングは、各ステートにおけるこれらの条件を満 足するように 4つの PB 13のマルチ FF31に各レジスタを配置した 1つの例である。こ の例では、 4つの PB13の内、第 1の PB13aのマルチ FF31には、レジスタ XO、レジ スタ YOおよびレジスタ Cが割り当てられ、残りの 1つは未使用である。第 2の PB13b のマルチ FF31には、レジスタ XI、レジスタ Y1およびレジスタ Dが割り当てられ、残り の 1つは未使用である。第 3の PB 13cのマルチ FF31にはレジスタ X2およびレジスタ Y2が割り当てられ、残りの 2つは未使用である。第 4の PB13dのマルチ FF31にはレ ジスタ Aおよびレジスタ Bが割り当てられ、残りの 2つは未使用である。なお、 4つの P B13a〜13dの配置は、ルーチングマトリクス 15により接続可能な範囲で自由であり、 図 14 (a)〜図 14 (d)に示した配置は一例に過ぎない。また、図 14 (a)、図 14 (b)お よび図 14 (d)では、各 PB13の格納ユニット 30を制御する格納制御ユニット 40の構 成は省略している。
[0080] 図 16は、図 14 (a)に示したステート(00)における PB13aの格納ユニット 30を制御 するための格納制御ユニット 40の状態を示している。ステート(00)のコンフィグレー シヨンデータ 17aの格納制御ユニット 40を制御する部分の内、格納制御ユニット 40の セレクタ 41を制御する部分はそれぞれ「000」であり、制御信号 19はすべてコンフィ グレーシヨンデータ 17aから供給される。そして、書き込みィネーブル信号 19tは「1」 となり、マルチ FF31のレジスタ 31rのいずれかへの書き込みが許可される。入力制 御信号 19iは「10」で、レジスタ Cに割り当てられたマルチ FF31の 2番目のレジスタ 3 lrへの書き込みが選択されている。また、出力制御信号 19οは「00」で、レジスタ Χ0 に割り当てられたマルチ FFの 0番目のレジスタ 31rの読み出しが選択されている。し たがって、格納制御信号 19により、一番目の PB13aの格納ユニット 30の状態は、図 14 (a)に示したようにセットされる。他の PB13の格納ユニット 30も格納制御信号 19 を介してコンフィグレーションデータ 17aにより同様に制御される。
[0081] 図 17に、図 14 (c)に示したステート(10)における PB13a〜13dの格納ユニット 30 を制御するための格納制御ユニット 40の状態を示してある。ステート(10)のコンフィ グレーシヨンデータ 17cの格納制御ユニット 40を制御する部分の内、格納制御ュ-ッ ト 40のセレクタ 41を制御する部分は、読み出しを制御する部分が「011」であり、他は 「000」である。したがって、 1〜3番目の PB13a〜13cの格納ユニット 30のマルチ FF 31の読み出しレジスタの制御に係る格納制御信号 19οは、ルーチングマトリクス 15 力 供給される選択信号 18により決まり、他の格納制御信号 19iおよび 19tはコンフ ィグレーシヨンデータ 17cから供給される。このため、 PB13a〜13cのマルチ FF31力 らそれぞれ読み出されるレジスタは、 PB13cの論理演算ユニット 21の論理演算結果 を受けて決まる。 PB13dから読み出されるレジスタはコンフィグレーションデータ 17c により決まり、マルチ FF31のレジスタ Aに割り当てられている 0番目のレジスタが読み 出される。 PB13a〜13cの書き込みは、コンフィグレーションデータ 17cの書き込みィ ネーブル信号のデータがそれぞれ「0」なので、入力選択信号の部分はドントケアで ある。 PB13dの書き込みは、ィネーブル信号 19tが「1」で、入力選択信号 19iが「00 」になるので、論理演算ユニット 21の出力 25は、マルチ FF31のレジスタ Aに割り当 てられて!/、る 0番目のレジスタに書き込まれる。
[0082] 図 18〜図 21に、異なるユーザー回路を本例のデバイス 10にマッピングした例を示 している。図 18に示したユーザー回路 52は、 3ビットカウンターである。図 19は、ユー ザ一回路 52を図 6に示した FPGA90にマッピングした状態を示して 、る。図 20は、 本例のデバイス 10に、 2個の PB13と 2組(2サイクル)のコンフィグレーションデータ 1 7を用いてユーザー回路 52をマッピングした例である。図 21は、デバイス 10に、 1個 の PB13と、 4組 (4サイクル)のコンフィグレーションデータ 17を用いてマッピングした 例である。これらの例においては、カウンターのユーザー回路 52を、 2ステートまたは 4ステートのステートマシンとみなし、サイクル毎に各ステートの動作をデバイス 10に マッピングすることによりユーザー回路 52を実現している。その結果、 FPGA90にマ ッビングする場合よりも、少な 、数の演算ブロックによりユーザー回路をマッピングで きている。
[0083] ステートマシンに限らず、殆どのデータパス演算回路を実際のシステムに実装する 場合、レジスタと結合される。したがって、データノ ス演算回路とレジスタとの組み合 わせをステートマシンとみなせば、殆ど全てのデータパス演算回路を、デバイス 10に 効果的にマッピングすることが可能である。
[0084] 図 22〜図 24に、さらに異なるユーザー回路を本例のデバイス 10にマッピングした 例を示している。図 22に示したユーザー回路 53は、 7ビット入力 A6〜A0を 2ビットの シフト量 S1〜S0でシフトして 4ビットの答え(Y3〜Y0)を出力するバレルシフタ回路 であり、シフト量 S1〜S0にパイプラインレジスタを結合した回路である。図 23は、ュ 一ザ一回路 53を図 6に示した FPGA90にマッピングした状態を示している。図 24 (a )および(b)は、本例のデバイス 10に、 5個の PB13と 2組(2サイクル)のコンフィグレ ーシヨンデータ 17を用いてユーザー回路 53をマッピングした例である。このケースで は、デバイス 10においては、 FPGA90の半分以下の演算ブロックによりユーザー回 路を実装できる。
[0085] 図 25〜図 31に、演算ブロック PBの幾つかの変形例を示している。図 25に示した P B13zの格納ユニット 30の出力ユニット 33は、マルチ FF31のいずれかのレジスタ 31 rを選択してルーチングマトリクス 15に出力するためのセレクタ 33sを 2セット備えてい る。これら 2つのセレクタ 33sは、異なる出力制御信号 19oaおよび 19obにより制御さ れ、それぞれの値を出力 39aおよび 39bとして出力する。したがって、格納ユニット 3 0のマルチ FFを構成する 4つの内蔵レジスタ 31rのうち、 2つの現在値をルーチング マトリクス 15に出力することができる。このため、他の PBにより、マルチ FF31の 2つの レジスタ 31rを同じサイクルで読み出すことができる。
[0086] 図 26に示した PB13yの格納ユニット 30は、マルチ FF31を構成する 4つの内蔵レ ジスタ 31rの現在値を全てルーチングマトリクス 15に出力する出力ユニット 33を備え ている。したがって、この格納ユニット 30の出力ユニット 33はセレクタを含まない。ま た、出力制御信号 19tも不要である。他の PBは、マルチ FF31の 4つのレジスタ 31r を同じサイクルで読み出すことができる。再構成可能なデバイスにユーザー回路をマ ッビングする場合、図 26に示した PB13yは単純な構成の格納ユニット 30を含むので 、この PB13yを備えているデバイス 10にマッピングする方が機能のマージは容易で ある。すなわち、 PB13yを備えたデバイスを対象にマッピングするためのコンフィグレ ーシヨンデータを生成するには、図 11に示したステップ 73aにおける入出力レジスタ の割当ての規則が緩やかであり、論理合成した機能を 1つの PBにマージしやす 、。 図 2に示した PB 13あるいは図 25に示した PB 13zを含むデバイスに対してマッピング するためのコンフィグレーションデータを生成するには「各クロックサイクルの瞬間瞬 間には選択した 1または 2のレジスタしか演算対象にできない」という制約(規則)に従 う必要があるからである。一方、デバイスを製造する立場で評価すると、図 26に示し た PB13yの構成よりも、図 2または図 25の PBの構成のほうが望ましい。図 26の PB1 3yの構成はコンフィグラブルルーチングマトリクス 15への出力本数が多いため、シリ コン面積を余分に消費してしまうからである。 [0087] 図 27に示した PB13xは、格納ユニット 30力らの出力 39と、論理演算ユニット 21の 出力 25のいずれかを選択してルーチングマトリクス 15に出力する出力選択ユニット 2 8を備えている。この出力選択ユニット 28は、コンフィグレーションデータ 17中のルー チングマトリクス出力選択情報 27により制御されるセレクタを含む。この PB13xでは、 ルーチングマトリクス 15に対する出力信号は 1本だけに絞るので、ルーチングマトリク ス 15の構成は簡易になる。
[0088] 図 28に示した PB13wは、論理演算ユニット 21が 2つの出力 25aおよび 25bを備え ており、一方の出力結果 25bを格納ユニット 30のマルチ FF31にラッチし、他方の出 力結果 25aはルーチングマトリクス 15に出力するようになっている。このバリエーショ ンとしては、さらに、出力 25aおよび 25bをそれぞれラッチする複数の格納ユニット 30 を備えた演算ブロック PB、および、そのような演算ブロックを備えたデバイスを提供す ることが可能である。
[0089] 図 29に示した PB13vは、一方の出力 25bと、格納ユニット 30力らの出力 39とのい ずれかを選択してルーチングマトリクス 15に出力する出力選択ユニット 28を備えてい る。このような演算ブロック PB13v、および演算ブロック PB13vを備えたデバイスを提 供することも可能である。
[0090] 図 30に示した PB13uは、個々の格納ユニット 30を制御する信号 19を出力する格 納制御ユニット 40を内蔵している。また、格納制御ユニット 40は、コンフィグレーショ ンデータ 17の格納制御成分 26により制御される。また、格納制御ユニット 40が PB1 3に内蔵されるので、各格納ユニット 30を、 PB 13の単位で供給されるコンフィグレー シヨンデータ 17により制御することが可能となる。このため、コンフィグレーションデー タ 17によりさらにフレキシブルに各格納ユニット 30を制御できる。その一方で、各 PB 13は格納制御ユニット 40を内蔵するので、面積が大きくなり、デバイス 10を実装する ためのシリコン面積が増大し易い。
[0091] 図 31に示した PB13tは、個々の格納ユニット 30を制御する信号 19を出力する格 納制御ユニット 40を内蔵しており、さらに、格納制御ユニット 40はコンフィグレーショ ンデータ 17のみにより制御される。この方式の PB13tは、格納制御ユニット 40を内 蔵することによる PB13tの面積の増大を抑制できる。その一方、他の PB13の演算結 果を格納ユニット 30の制御に反映するためには、演算結果により PB13tに供給され るコンフィグレーションデータ 17を変える必要がある。このため、ユーザー回路をマツ ビングするためのコンフィグレーションデータ 17の量が増加する可能性がある。
[0092] 図 32は、複数の PB13の格納ユニット 30に対する制御信号 19を生成する格納制 御ユニット 40の異なる例である。先に図 4に示した格納制御ユニット 40は、シリコン面 積を縮小するために、コンフィグレーションデータ 17の側で PB13の番号を指定する ことにより、格納制御信号 19のソースをルーチングマトリクス 15からの信号 18と、コン フィグレーシヨン 17とから選択できるようにしている。図 32の格納制御ユニット 40では 、 4つの PBの格納ユニット 30を 1つのグループとして制御しており、それぞれの格納 ユニット 30をコンフィグレーションデータ 17により個別に選択できる。したがって、格 納ユニット 30を制御するフレキシビリティは高いが、実装するためのシリコン面積は大 きくなる。
[0093] 図 33は、再構成可能なデバイス 10をベースとしたデータ処理装置 130の概略構成 を示している。データ処理装置 130は、デバイス 10と、このデバイス 10により処理さ れるデータを入出力するためのインターフェイス 131とを含む。このデータ処理装置 1 30は、さらに、複数のコンフィグレーションデータのグループあるいはブロック、または コンフィグレーションデータファイル 132を格納するためのメモリ 133と、再構成可能 なデバイス 10にコンフィグレーションデータファイル 132の内容をセットするための制 御ユニット 134とを含む。制御ユニット 134は、例えば、 RISCなどの汎用プロセッサ であり、再構成可能なデバイス 10に含まれるコンフィグレーションメモリ 11にセットあ るいは格納されるコンフィグレーションデータ 17を切り換える。これにより、再構成可 能なデバイス 10を、さらに多種多様な目的で利用することができる。また、メモリ 133 の内容を、インターフェイス 131を介して外部から変更できるようにすることにより、さら に、データ処理装置 130の汎用性は増大する。制御ユニット 134の機能を再構成可 能なデバイス 10に実現することにより、制御ユニット 134を省くことも可能である。
[0094] インターフェイス 131は、主に、物理的なインターフェイス機構をサポートする。イン ターフェイス 131は、さらに、伝送路を介してデータを交換するための処理としてアナ ログ処理が必要な場合は、そのためのアナログ回路をサポートする。伝送路を介して データを交換するためのデジタル処理は、再構成可能なデバイス 10でサポートする ことが可能である。インターフェイスとしての機能ある 、はその一部を再構成可能なデ バイス 10によりサポートすることにより、データの種別、データを交換するためのプロト コルなどに依存しない、あるいは汎用的なデータ処理装置を提供することができる。 このデータ処理装置 130を適用可能なアプリケーションには、例えば、プログラムべ ースの CPUに代わる汎用的な処理装置、ルータなどのネットワーク処理装置、デコ ーダ ·エンコーダとしての機能を含む画像処理装置、無線 ·有線を含む電話などの通 信装置が含まれる。
[0095] 以上に説明した再構成可能な集積回路装置 (デバイス)は、マルチ FF31を備えた 格納ユニット 30を含む複数の PB13を有する。各 PB13においては、コンフィグレー シヨンデータ 17によりマルチ FF31が制御され、論理演算ユニット 21の出力 25をマ ルチ FF31にラッチし、また、それとは独立に、マルチ FF31のレジスタ 31rにラッチさ れた演算結果を出力できる。したがって、個々の PB13の利用効率が大幅に向上し、 少ないハードウェア資源でユーザー回路を実装できる。また、ハードウェア資源が不 足することを防止できるので、並列度を上げて処理速度の向上を図ることも容易とな る。
[0096] なお、上記に示したデバイスおよび演算ブロックの例は、本発明に含まれる再構成 可能な装置の幾つかの例に過ぎず、本発明は上記の回路例に限定されるものでは ない。上述した集積回路装置は、単体でチップなどの形態で提供できる。上述した集 積回路を含む LSIあるいは ASICなどの半導体装置も本発明に含まれる。また、上記 においては、半導体集積回路技術をベースにした装置、例えば LSIに本発明を適用 する例を説明しているが、いわゆる回路網を形成するための再構成可能な装置、お よび再構成可能な装置を含む、ある 、は再構成可能な装置をベースにしたデータ処 理装置のすべてに本発明を適用することが可能である。すなわち、電気あるいは電 子レベルの回路技術をベースにした回路装置に限らず、光、生体、分子あるいは原 子構造、遺伝子構造などをベースにした回路網を形成する全ての再構成可能な装 置に対して本発明を適用できる。

Claims

請求の範囲
[1] 各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスと を有する、再構成可能な装置であって、
前記複数の演算ブロックに含まれる演算ブロックは、コンフィグレーションデータに より論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納するための格納ユニットとを含み、 前記格納ユニットは、複数の格納エレメントと、
前記コンフィグレーションデータに基づき前記複数の格納エレメントの何れかを選 択して前記論理演算ユニットの出力を格納するための入力手段と、
前記複数の格納エレメントと前記ルーチングマトリクスとを接続するための出力手段 とを含む、装置。
[2] 請求項 1にお 、て、複数セットのコンフィグレーションデータを記憶したコンフィグレ ーシヨンメモリから前記演算ブロックに対し、前記複数セットのコンフィグレーションデ ータのいずれかを供給するためのコンフィグレーションデータ供給ユニットと、 前記演算ブロックに対して次に供給されるネクストコンフィグレーションデータを決定 するためのコンフィグレーション制御ユニットとを、さらに有する、装置。
[3] 請求項 2において、前記コンフィグレーション制御ユニットは、前記演算ブロックに含 まれ、その演算ブロックのコンフィグレーションを制御する、装置。
[4] 請求項 2にお 、て、前記コンフィグレーション制御ユニットは、前記複数の演算ブロ ックのコンフィグレーションを制御する、装置。
[5] 請求項 1において、前記格納ユニットの前記出力手段は、前記コンフィグレーション データに基づき前記複数の格納エレメントの何れかを選択して前記ルーチンダマトリ タスと接続する、装置。
[6] 請求項 1において、前記演算ブロックは、前記論理演算ユニットの出力を前記格納 ユニットとは別に前記ルーチングマトリクスに接続するためのダイレクト出力手段を含 む、装置。
[7] 請求項 1において、前記演算ブロックは、前記コンフィグレーションデータに基づき 、前記論理演算ユニットの出力および前記複数の格納エレメントの何れかを選択して 前記ルーチングマトリクスと接続するための出力選択手段を含む、装置。
[8] 請求項 1にお 、て、前記格納ユニットの前記入力手段および Zまたは前記出力手 段を制御する格納制御信号を生成する格納制御ユニットをさらに有し、この格納制御 ユニットは、前記ルーチングマトリクス力 供給される入力データおよび Zまたは前記 コンフィグレーションデータの中から、前記コンフィグレーションデータに基づき、前記 格納制御信号を生成する手段を含む、装置。
[9] 請求項 8にお 、て、前記格納制御ユニットは、前記演算ブロックに含まれ、その演 算ブロックの前記格納ユニットを制御する、装置。
[10] 請求項 8にお 、て、前記格納制御ユニットは、前記複数の演算ブロックに含まれる 複数の前記格納ユニットを制御する、装置。
[11] 請求項 1に記載の再構成可能な装置と、
前記再構成可能な装置により処理されるデータを入出力するためのインターフェイ スとを有するデータ処理装置。
[12] 再構成可能な装置の制御システムであって、
前記装置は、
各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスと を有し、
前記複数の演算ブロックに含まれる演算ブロックは、コンフィグレーションデータに より論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納する格納ユニットとを含み、
前記格納ユニットは、複数の格納エレメントと、前記コンフィグレーションデータに基 づき前記複数の格納エレメントの何れかを選択して前記論理演算ユニットの出力を 格納する入力手段と、前記複数の格納エレメントと前記ルーチングマトリクスとを接続 する出力手段とを含み、
当該制御システムは、
サイクル毎の回路を前記複数の演算ブロックにマッピングする際に、前記サイクル 毎の回路に含まれる入力および zまたは出力のための異なるレジスタを、前記コンフ ィグレーシヨンデータにより、前記複数の格納エレメントに含まれる異なる格納エレメ ントに害 ljり当てることを含む、制御システム。
[13] 再構成可能な装置の制御方法であって、
前記装置は、
各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスと を有し、
前記複数の演算ブロックに含まれる演算ブロックは、コンフィグレーションデータに より論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納する格納ユニットとを含み、
前記格納ユニットは、複数の格納エレメントと、前記コンフィグレーションデータに基 づき前記複数の格納エレメントの何れかを選択して前記論理演算ユニットの出力を 格納する入力手段と、前記複数の格納エレメントと前記ルーチングマトリクスとを接続 する出力手段とを含み、
当該制御方法は、
サイクル毎の回路を前記複数の演算ブロックにマッピングする際に、前記サイクル 毎の回路に含まれる入力および Zまたは出力のための異なるレジスタを、前記コンフ ィグレーシヨンデータに基づき、前記複数の格納エレメントに含まれる異なる格納エレ メントに割り当てることを含む、制御方法。
[14] 請求項 13において、前記装置は、複数セットのコンフィグレーションデータを記憶し たコンフィグレーションメモリから、前記演算ブロックに対し、前記複数セットのコンフィ グレーシヨンデータのいずれかを供給するためのコンフィグレーションデータ供給ュ ニットを含み、
当該制御方法は、前記演算ブロックに対して次に供給されるネクストコンフィグレー シヨンデータを決定することを含む、制御方法。
[15] 請求項 14において、前記ネクストコンフィグレーションデータを決定することは、前 記演算ブロックの単位で決定することを含む、制御方法。
[16] 請求項 14において、前記ネクストコンフィグレーションデータを決定することは、前 記複数の演算ブロックの単位で決定することを含む、制御方法。
[17] 再構成可能な装置のためのコンフィグレーションデータを生成するためのシステム であって、
前記装置は、
各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスと を有し、
前記複数の演算ブロックに含まれる演算ブロックは、前記コンフィグレーションデー タにより論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納する格納ユニットとを含み、
前記格納ユニットは、複数の格納エレメントと、前記コンフィグレーションデータに基 づき前記複数の格納エレメントの何れかを選択して前記論理演算ユニットの出力を 格納する入力手段と、前記複数の格納エレメントと前記ルーチングマトリクスとを接続 する出力手段とを含み、
当該システムは、
ユーザー回路のサイクル毎の RTL記述を生成する手段と、
前記サイクル毎の RTL記述をサイクル毎に論理合成する手段と、
論理合成されたサイクル毎の回路を前記複数の演算ブロックにマッピングする際に 、前記サイクル毎の回路に含まれる入力および Zまたは出力のための異なるレジスタ を、前記複数の格納エレメントに含まれる異なる格納エレメントに割り当てるための前 記コンフィグレーションデータを生成する手段とを有する、システム。
[18] 再構成可能な装置のためのコンフィグレーションデータを生成する方法であって、 前記装置は、
各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスと を有し、
前記複数の演算ブロックに含まれる演算ブロックは、前記コンフィグレーションデー タにより論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納する格納ユニットとを含み、
前記格納ユニットは、複数の格納エレメントと、前記コンフィグレーションデータに基 づき前記複数の格納エレメントの何れかを選択して前記論理演算ユニットの出力を 格納する入力手段と、前記複数の格納エレメントと前記ルーチングマトリクスとを接続 する出力手段とを含み、
当該方法は、
ユーザー回路のサイクル毎の RTL記述を生成することと、
前記サイクル毎の RTL記述をサイクル毎に論理合成することと、
論理合成されたサイクル毎の回路を前記複数の演算ブロックにマッピングする際に 、前記サイクル毎の回路に含まれる入力および Zまたは出力のための異なるレジスタ を、前記複数の格納エレメントに含まれる異なる格納エレメントに割り当てるための前 記コンフィグレーションデータを生成することとを含む、方法。
PCT/JP2006/310894 2005-05-31 2006-05-31 再構成可能な装置 WO2006129722A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN2006800192965A CN101189797B (zh) 2005-05-31 2006-05-31 可重构的装置
US11/915,819 US8138788B2 (en) 2005-05-31 2006-05-31 Reconfigurable device
JP2007519045A JP4900717B2 (ja) 2005-05-31 2006-05-31 再構成可能な装置

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-158460 2005-05-31
JP2005158460 2005-05-31

Publications (1)

Publication Number Publication Date
WO2006129722A1 true WO2006129722A1 (ja) 2006-12-07

Family

ID=37481651

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/310894 WO2006129722A1 (ja) 2005-05-31 2006-05-31 再構成可能な装置

Country Status (4)

Country Link
US (1) US8138788B2 (ja)
JP (1) JP4900717B2 (ja)
CN (1) CN101189797B (ja)
WO (1) WO2006129722A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE458309T1 (de) 2004-10-28 2010-03-15 Ip Flex Inc Datenverarbeitungsgerät mit rekonfigurierbarer logischer schaltung
WO2008026731A1 (fr) * 2006-08-31 2008-03-06 Ipflex Inc. Procédé et système pour le montage d'un modèle de circuit sur un dispositif reconfigurable
US8112468B1 (en) * 2007-03-22 2012-02-07 Tabula, Inc. Method and apparatus for performing an operation with a plurality of sub-operations in a configurable IC
US20110099562A1 (en) * 2008-07-01 2011-04-28 Morphing Machines Pvt Ltd Method and System on Chip (SoC) for Adapting a Reconfigurable Hardware for an Application at Runtime
EP2308229A4 (en) * 2008-07-01 2014-08-20 S K Nandy METHOD AND SYSTEM ON A CHIP TO ADAPT RECONFIGURABLE TIME-OF-EXECUTION MATERIAL FOR DECODING VIDEO STREAMS
GB2464703A (en) * 2008-10-22 2010-04-28 Advanced Risc Mach Ltd An array of interconnected processors executing a cycle-based program
CN102339268A (zh) * 2011-04-19 2012-02-01 北京大学深圳研究生院 一种可重构路径算子
CN102324926B (zh) * 2011-05-10 2013-07-17 北京时代民芯科技有限公司 一种fpga无竞争上电配置与重配置的互联矩阵
CN102306141B (zh) * 2011-07-18 2015-04-08 清华大学 一种描述动态可重构阵列配置信息的方法
JP5835498B2 (ja) * 2012-09-21 2015-12-24 三菱電機株式会社 Lsi及びlsi製造方法
KR101920719B1 (ko) * 2012-11-19 2019-02-13 삼성전자주식회사 논리 장치, 논리 장치를 포함하는 디지털 필터 및 논리 장치를 제어하는 방법
CN105191139B (zh) * 2013-04-02 2018-12-07 太阳诱电株式会社 可重构逻辑器件
US9727460B2 (en) * 2013-11-01 2017-08-08 Samsung Electronics Co., Ltd. Selecting a memory mapping scheme by determining a number of functional units activated in each cycle of a loop based on analyzing parallelism of a loop
CN103744356B (zh) * 2014-01-17 2016-08-17 重庆大学 一种基于dsp/fpga动态可配置的机床智能控制器及控制方法
GB201414286D0 (en) * 2014-08-12 2014-09-24 Imp Innovations Ltd Reconfigurable integrated circuit with on-chip configuration generation
EP3211795A4 (en) * 2014-10-22 2018-10-03 Taiyo Yuden Co., Ltd. Reconfigurable device
EP3402945A4 (en) * 2016-01-11 2019-07-17 Jonathan J. Melic SYSTEM FOR ANCHORING A POST ON A CONCRETE SLAB OR OTHER STRUCTURE
JP6786955B2 (ja) * 2016-08-25 2020-11-18 富士ゼロックス株式会社 再構成可能論理回路
US10482209B1 (en) 2018-08-06 2019-11-19 HLS Logix LLC Field programmable operation block array
US12007915B1 (en) * 2023-08-10 2024-06-11 Morgan Stanley Services Group Inc. Field programmable gate array-based low latency disaggregated system orchestrator

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0851356A (ja) * 1994-04-20 1996-02-20 Xilinx Inc プログラマブルアレイ
JPH09181599A (ja) * 1995-08-18 1997-07-11 Xilinx Inc 時間多重書込可能論理装置
JP2001267909A (ja) * 2000-03-17 2001-09-28 Victor Co Of Japan Ltd 信号処理装置及びその方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0250617A (ja) 1988-08-12 1990-02-20 Matsushita Electric Works Ltd プログラマブルロジックアレイ
JP2560945B2 (ja) * 1992-03-23 1996-12-04 日本電信電話株式会社 ディジタル処理回路
US5838165A (en) * 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
JPH11274915A (ja) 1998-03-25 1999-10-08 Victor Co Of Japan Ltd Fpgaの書換処理装置
CN100580621C (zh) 2003-08-29 2010-01-13 Ip菲力股份有限公司 数据处理装置、控制方法、自动控制装置、终端、生成方法
JP4004052B2 (ja) * 2003-09-24 2007-11-07 株式会社東芝 論理回路装置、プログラマブル論理回路の動作方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0851356A (ja) * 1994-04-20 1996-02-20 Xilinx Inc プログラマブルアレイ
JPH09181599A (ja) * 1995-08-18 1997-07-11 Xilinx Inc 時間多重書込可能論理装置
JP2001267909A (ja) * 2000-03-17 2001-09-28 Victor Co Of Japan Ltd 信号処理装置及びその方法

Also Published As

Publication number Publication date
US20090031106A1 (en) 2009-01-29
CN101189797A (zh) 2008-05-28
JP4900717B2 (ja) 2012-03-21
JPWO2006129722A1 (ja) 2009-01-08
US8138788B2 (en) 2012-03-20
CN101189797B (zh) 2011-07-20

Similar Documents

Publication Publication Date Title
JP4900717B2 (ja) 再構成可能な装置
US9323716B2 (en) Hierarchical reconfigurable computer architecture
JP4104538B2 (ja) リコンフィギュラブル回路、リコンフィギュラブル回路を備えた処理装置、リコンフィギュラブル回路における論理回路の機能決定方法、回路生成方法および回路
JP4484756B2 (ja) リコンフィギュラブル回路および処理装置
JP4208577B2 (ja) 集積回路装置
EP1605378A1 (en) Method for generating hardware information
JP4971998B2 (ja) 半導体集積回路、プログラム変換装置及びマッピング装置
JP2005353061A6 (ja) ハードウェア情報を生成する方法
JP2008537268A (ja) 可変精度相互接続を具えたデータ処理エレメントの配列
US20080040700A1 (en) Behavioral synthesizer, debugger, writing device and computer aided design system and method
US20070260847A1 (en) Reconfigurable integrated circuit
EP1509840B1 (en) Method and apparatus for hoisting loop-invariant code word portions
JP2022054412A (ja) マイクロセクタインフラストラクチャに基づくロジックファブリック
Denholm et al. A unified approach for managing heterogeneous processing elements on FPGAs
JP4562679B2 (ja) データフローグラフ生成装置
JP4330472B2 (ja) 処理装置
JP6553694B2 (ja) プロセッサエレメント、プログラマブルデバイス及びプロセッサエレメントの制御方法
JP4562678B2 (ja) データフローグラフ再構成装置、リコンフィギュラブル回路の設定データ生成装置、及び処理装置
JP4437439B2 (ja) データ処理装置
JP3515997B2 (ja) プログラマブル半導体デバイス
WO2006121046A1 (ja) プロセッサアレイ、プロセッサエレメント複合体、マイクロ命令制御装置およびマイクロ命令制御方法
JP2008090869A (ja) 処理装置

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 200680019296.5

Country of ref document: CN

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2007519045

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 9379/DELNP/2007

Country of ref document: IN

NENP Non-entry into the national phase

Ref country code: RU

WWE Wipo information: entry into national phase

Ref document number: 11915819

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 06747048

Country of ref document: EP

Kind code of ref document: A1