WO2011125174A1 - 動的再構成プロセッサ及びその動作方法 - Google Patents

動的再構成プロセッサ及びその動作方法 Download PDF

Info

Publication number
WO2011125174A1
WO2011125174A1 PCT/JP2010/056227 JP2010056227W WO2011125174A1 WO 2011125174 A1 WO2011125174 A1 WO 2011125174A1 JP 2010056227 W JP2010056227 W JP 2010056227W WO 2011125174 A1 WO2011125174 A1 WO 2011125174A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
clock
computing unit
minimum set
sub
Prior art date
Application number
PCT/JP2010/056227
Other languages
English (en)
French (fr)
Inventor
俊郎 磯村
益三 嵩本
Original Assignee
トヨタ自動車株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by トヨタ自動車株式会社 filed Critical トヨタ自動車株式会社
Priority to DE112010005459T priority Critical patent/DE112010005459T5/de
Priority to JP2012509223A priority patent/JPWO2011125174A1/ja
Priority to US13/635,307 priority patent/US20130013902A1/en
Priority to PCT/JP2010/056227 priority patent/WO2011125174A1/ja
Publication of WO2011125174A1 publication Critical patent/WO2011125174A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/06Clock generators producing several clock signals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • G06F15/7885Runtime interface, e.g. data exchange, runtime control
    • G06F15/7892Reconfigurable logic embedded in CPU, e.g. reconfigurable unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Definitions

  • the present invention relates to a dynamic reconfigurable processor that executes each instruction by executing a series of steps for each instruction, and an operation method thereof.
  • an arithmetic processing device including a rewritable memory (RAM) for storing arithmetic unit configuration information and a dedicated arithmetic unit that constitutes a predetermined dedicated arithmetic unit based on the arithmetic unit configuration information in the memory.
  • RAM rewritable memory
  • This dedicated arithmetic unit is composed of an FPGA (Field Programmable Gate Array).
  • RISC Reduced Instruction Set Computer
  • processing is performed in a cycle of fetch (IF), decode (ID), execute (EX), data cache (DC), and write back (WB).
  • IF fetch
  • ID decode
  • EX execute
  • DC data cache
  • WB write back
  • Execute is executed using a computing unit prepared in advance for each instruction as hardware of the CPU.
  • pipeline processing and the like are executed for speeding up.
  • an arithmetic unit (hardware) must be prepared in advance in the CPU, but in reality, only one arithmetic unit operates at the same time, and other arithmetic units Are all stopped.
  • the dedicated arithmetic unit can be configured by the FPGA, so that the number of basic arithmetic units to be prepared in the basic arithmetic unit can be reduced, and the operation speed and apparatus can be increased. Can be miniaturized.
  • the present invention relates to a process for dynamically configuring an arithmetic unit in accordance with an instruction, a process for performing an arithmetic operation using the configured arithmetic unit, and a dynamic reconfigurable processor that can be completed without delay, and its operation
  • the purpose is to provide a method.
  • a dynamically reconfigurable processor that executes each instruction by executing a series of steps for each instruction, A dynamically configured computing unit that dynamically configures a computing unit corresponding to the instruction; A main clock and a clock generation circuit for generating a sub clock different from the main clock, In each of the series of steps, a start timing is defined based on the main clock, except for an instruction execution step of executing an instruction using the dynamic configuration calculator.
  • the instruction execution step of executing an instruction using the dynamic configuration calculator includes an operator generation substep for dynamically configuring an operator corresponding to the instruction by the dynamic configuration calculator, and the calculator generation substep.
  • An operation sub-process for performing an operation corresponding to the instruction by the operation unit configured by:
  • the arithmetic unit generation sub-process and the arithmetic sub-process have start timings defined based on the sub-clock,
  • the sub-clock is generated in such a manner that the arithmetic unit generation sub-process and the instruction execution sub-process are completed before a start timing of a process immediately after the instruction execution process.
  • a configuration processor is provided.
  • a processor operation method including a fetch step for fetching an instruction, a decode step for decoding the fetched instruction, an execute step, and a data cache step.
  • the execute step includes an arithmetic unit generation sub-step for dynamically configuring an arithmetic unit corresponding to the instruction, and an arithmetic sub-step for performing an operation corresponding to the instruction by the arithmetic unit configured in the arithmetic unit generation sub-step.
  • the method is Executing the fetch step at a first timing defined by the main clock; Executing the decoding step at a second timing defined by the main clock; In place of the third timing defined by the main clock, the computing unit generation sub-step is executed at a first timing defined by a subclock different from the main clock, and is defined by the subclock. The calculation sub-step is executed at the second timing A method is provided, wherein the data cache process is executed at a fourth timing defined by the main clock.
  • a process for dynamically configuring a computing unit according to an instruction, a process for performing a computation by the configured computing unit, and a dynamic reconfigurable processor that can be completed without delay and its operation A method is obtained.
  • FIG. 10 is a diagram illustrating another example (second delay prevention method) of the configuration of the clock generation circuit 12; It is a figure which shows the principle of the delay prevention function implement
  • FIG. 1 is a diagram schematically showing a configuration of a dynamic reconfiguration processor 1 according to an embodiment (embodiment 1) of the present invention.
  • the dynamic reconfiguration processor 1 includes a CPU 10 and a clock generation circuit 12.
  • the clock generation circuit 12 generates two clocks CLK1 and CLK2 necessary for the operation of the CPU 10.
  • the clock CLK1 is a main clock.
  • the clock CLK2 is a special clock generated for preventing a delay described later.
  • the configuration of the clock generation circuit 12 and the function of the clock CLK2 will be described in detail later.
  • the term clock refers to the main clock until the description up to FIG. In the description after FIG. 19, the two clocks CLK1 and CLK2 will be described separately.
  • the CPU 10 includes a minimum set computing unit 11 constituting an instruction execution unit (mainly an arithmetic circuit).
  • the CPU 10 may include general configurations of an instruction decoder control circuit, an instruction cache, a register file, a data cache, and the like (not shown) other than the arithmetic circuit.
  • a memory (ROM, RAM, etc.) is connected to the CPU 10.
  • the minimum set calculator 11 includes a minimum gate (or element) that can generate calculators corresponding to all instruction sets.
  • the total instruction set may be an entire instruction set included in the software incorporated in the dynamic reconfiguration processor 1 or an instruction included in the software incorporated in the dynamic reconfiguration processor 1 in order to have versatility. All instruction sets including other instructions may be used. “Generable” means that it can be generated theoretically, regardless of whether it is actually generated or not.
  • FIG. 2 is a table showing an example of a setting method of the minimum set calculator 11.
  • the minimum set computing unit 11 includes an FPGA (Field Programmable Gate Array) including a minimum gate capable of generating computing units corresponding to all instruction sets.
  • the minimum set computing unit 11 is configured to include a minimum number of gates in a gate level gate unit for so-called FPGA synthesis.
  • the gate for FPGA synthesis is configured by combining a gate for ASIC (application specific integrated circuit) logic synthesis such as NAND, NOR and NOT, and a complex gate (gate for ASIC logic synthesis) such as AND and OR. Gate).
  • ASIC application specific integrated circuit
  • AND gate for ASIC logic synthesis
  • AND is a gate configured by combining NAND and NOT
  • OR is a gate configured by combining NOR and NOT.
  • FIG. 2 shows each computing unit corresponding to each instruction included in the entire instruction set.
  • the arithmetic unit 1C is an arithmetic unit for executing a 16-bit addition instruction without a carry, for example, 30 pieces of 2-input AND gates, 20 pieces of OR gates, 40 pieces of NOT gates, and MUX gates. Means four, DFF (D flip-flop) 17 or the like.
  • the arithmetic units C2,..., Cn (n is the number of arithmetic units corresponding to the respective instructions of the entire instruction set) are all the instruction sets (all instructions excluding the addition instruction related to the arithmetic unit 1C). Represents another arithmetic unit corresponding to each instruction. It should be noted that the numbers shown in the table are merely exemplary and are not correct.
  • OR gates are prepared, With respect to the NOT gate, the maximum number (40, 30,..., 20 in this example) necessary to configure each of all the arithmetic units C1,. In this example, 40) NOT gates are prepared. Similarly, the number of XOR gates required to configure each of all the arithmetic units C1,..., Cn corresponding to all instruction sets (this example) , 0, 4,..., 0) (4 in this example) XOR gates are prepared. Similarly, for MUX gates, all arithmetic units C1,... Corresponding to all instruction sets are prepared.
  • Cn are provided with the maximum number (8 in this example) of MUX gates (4, 8,..., 5 in this example) necessary for configuring each of the. Is necessary to configure each of all the arithmetic units C1,..., Cn corresponding to all instruction sets.
  • the maximum number (17 in this example) of DFF gates (in this example, 17, 8,..., 16) is prepared, and so on. The minimum number of gates necessary to be able to generate any one of these is provided.
  • FIG. 3 is a table showing another example of the setting method of the minimum set computing unit 11.
  • the minimum set computing unit 11 is configured to include a minimum number of gates in units smaller than the gate level gate unit for FPGA synthesis.
  • the minimum set computing unit 11 is configured to include a minimum number of gates in a gate level gate unit for so-called ASIC logic synthesis. That is, the minimum set calculator 11 is configured to include a minimum number of gates in units of NAND, NOR, and NOT.
  • FIG. 3 shows each computing unit corresponding to each instruction included in the entire instruction set, as in FIG.
  • the way of viewing the table of FIG. 3 is the same as that of FIG.
  • the required number of each gate of NAND, NOR and NOT is shown for each of all the arithmetic units C1,..., Cn corresponding to all instruction sets. It should be noted that the numbers shown in the table are merely exemplary and are not correct.
  • FIG. 4 is a table showing still another example of the setting method of the minimum set computing unit 11. It should be noted that the numbers shown in the table are merely exemplary and are not correct.
  • the minimum set computing unit 11 is configured to include a minimum number of elements in units smaller than a gate level gate unit for ASIC logic synthesis.
  • the minimum set computing unit 11 is configured to include a PchMOSFET (Metal-Oxide-Semiconductor Field-Effect Transistor) and a minimum element in NchMOSFET level elements. That is, the minimum set calculator 11 is configured to include the minimum PchMOSFET and NchMOSFET necessary to be able to generate any one of all the calculators C1,..., Cn.
  • PchMOSFET Metal-Oxide-Semiconductor Field-Effect Transistor
  • the particle size of the example shown in FIG. 3 is smaller than that of the example shown in FIG. 2, and the particle size of the example shown in FIG. 4 is smaller than that of the example shown in FIG.
  • the smaller the particle size the less waste.
  • the smaller the granularity the longer the time required to configure a computing unit to be described later using the minimum set computing unit 11.
  • the minimum set computing unit 11 configured in this way can constitute any one of the computing units C1,..., Cn corresponding to all instruction sets. That is, the minimum set computing unit 11 configures an arbitrary computing unit among all the computing units C1,..., Cn by connecting gates (or elements) based on corresponding connection information. can do.
  • the connection information may be prepared in advance corresponding to each of all the arithmetic units C1,..., Cn (that is, prepared in advance corresponding to each of all instruction sets) and stored in the memory. Note that the connection information is defined according to the minimum unit of the minimum set calculator 11. For example, when the minimum set calculator 11 is constructed with the FPGA synthesis gate unit as the minimum unit as in the example shown in FIG.
  • connection information that is, each AND, each AND, each FPGA synthesis gate unit.
  • Information indicating the connection mode between the gates such as OR
  • the minimum set calculator 11 is constructed with the ASIC logic synthesis gate unit as the minimum unit as in the example shown in FIG. 3
  • the connection information that is, each NAND
  • Information indicating a connection mode between each NOR and each NOT gate is generated and stored.
  • the minimum set computing unit 11 is constructed with the element unit of the PchMOSFET and the NchMOSFET as the minimum unit as in the example shown in FIG.
  • connection information that is, the source of each PchMOSFET
  • the connection information (That is, the source of each PchMOSFET) in the element unit of the PchMOSFET and the NchMOSFET. (Information indicating the connection mode between the drain and the source and drain of each Nch MOSFET) is generated and stored.
  • FIG. 5 is a diagram showing an example of a time series when a single thread (no pipeline) is realized by a single minimum set computing unit 11 according to the present embodiment.
  • FIG. 6 is a diagram illustrating a transition mode of the arithmetic unit configured by the minimum set arithmetic unit 11 corresponding to FIG.
  • DC data cache
  • processing is executed in a cycle of fetch (IF), decode (ID), execute (EX), data cache (DC), and write back (WB).
  • IF fetch
  • ID decode
  • EX execute
  • DC data cache
  • WB write back
  • IF In fetch (IF), an instruction is fetched from the instruction cache.
  • decoding (ID) the fetched instruction is decoded and the register operand is fetched.
  • EX Execute
  • an instruction (operation or the like) is executed based on the decoding result and the fetched register value.
  • the execution address In the case of a load / store instruction, the execution address is calculated.
  • the branch destination address In the case of a branch instruction, the branch destination address is calculated.
  • the execute process includes an arithmetic unit generation process by the minimum set arithmetic unit 11 as described later in addition to these arithmetic processes.
  • DC data cache
  • WB write back
  • the result calculated in the execute process or the operand fetched in the data cache process is stored in a register.
  • the data In the case of a store instruction, the data is written to the data cache.
  • the instruction 1 is an ADD (addition) instruction and the instruction 2 is a MUL (multiplication) instruction.
  • an arithmetic unit (adder) corresponding to the instruction 1 (addition) is configured by the minimum set arithmetic unit 11. (See the adder after instruction 1 in FIG. 6).
  • the calculation is executed by the adder configured by the minimum set calculator 11 (that is, the instruction 1 is executed).
  • the connection of the adder by the minimum set computing unit 11 and the computation by the constructed adder are configured to be completed by the time of generation of the DC clock related to the instruction 1 (t4). Will be described later).
  • the instruction 2 is fetched, and when the instruction 2 is decoded (when the instruction 2 is understood), the arithmetic unit (multiplier) corresponding to the instruction 2 (multiplication) is the minimum set arithmetic unit. 11 (refer to the multiplier after instruction 2 in FIG. 6). Then, an operation is executed by the multiplier configured by the minimum set calculator 11 (that is, the instruction 2 is executed).
  • the connection of the multiplier by the minimum set calculator 11 and the calculation by the configured multiplier are configured to be completed by the time of generation of the DC clock related to the instruction 2 (t9). Will be described later).
  • instruction 2 is executed, the operation result is stored in the register, and the processing for instruction 2 is completed.
  • the connection of the minimum set computing unit 11 may be once cleared (reset) every time processing for each command is completed, or may be changed for each command in an overwrite format. In this way, single thread processing by the single minimum set computing unit 11 according to the present embodiment is executed.
  • FIG. 7 shows a time series when a multi-thread (two-stage pipeline) is realized by two minimum set computing units 11 according to the present embodiment (here, reference numerals 11A and 11B are attached for distinction, respectively). It is a figure which shows an example.
  • FIG. 8 is a diagram showing a transition mode of the arithmetic unit composed of the minimum set arithmetic units 11A and 11B corresponding to FIG.
  • EX execute
  • the data cache (DC) clock generation time point related to the respective instructions 1 and 2 is represented.
  • processing is executed in a cycle of fetch (IF), decode (ID), execute (EX), data cache (DC), and write back (WB).
  • IF fetch
  • ID decode
  • EX execute
  • DC data cache
  • WB write back
  • the instruction 1 is an ADD (addition) instruction and the instruction 2 is a MUL (multiplication) instruction.
  • an arithmetic unit (adder) corresponding to the instruction 1 (addition) is configured by the minimum set arithmetic unit 11A. (See the adder after instruction 1 in FIG. 8). Then, the calculation is executed by the adder constituted by the minimum set calculator 11A (that is, the instruction 1 is executed).
  • the connection of the adder by the minimum set calculator 11A and the calculation by the configured adder are configured to be completed by the time of generation of the DC clock related to the instruction 1 (t4). Will be described later).
  • an arithmetic unit (multiplier) corresponding to the instruction 2 (multiplication) is configured by the minimum set arithmetic unit 11B. (See the multiplier after instruction 2 in FIG. 8). Then, the calculation is executed by the multiplier configured by the minimum set calculator 11B (that is, the instruction 2 is executed).
  • the connection of the multiplier by the minimum set calculator 11B and the calculation by the configured multiplier are configured to be completed by the time (t5) of the DC clock generation related to the instruction 2 (details of this configuration are Will be described later).
  • the operation result is stored in the register, and the processing for instruction 2 is completed. In this way, multi-thread (two-stage pipeline) processing is executed by the minimum set calculators 11A and 11B according to the present embodiment.
  • the number of stages (number) of the multi-thread pipeline is not limited to the above-described two stages, and may be an arbitrary number of stages of three or more.
  • the number of minimum set calculators 11 may be provided according to the number of stages of the pipeline, but the minimum set calculator 11 is desirably the minimum necessary number as described later with reference to FIG.
  • FIG. 9 shows a time series when a multi-thread (5-stage pipeline) is realized by two minimum set computing units 11 according to the present embodiment (here, reference numerals 11A and 11B are attached for distinction, respectively). It is a figure which shows an example.
  • instruction 1 is an ADD (addition) instruction
  • instruction 2 is a MUL (multiplication) instruction
  • instruction 3 is a SUB (subtraction) instruction
  • instruction 4 is an ADD (addition) instruction
  • Assume that instruction 5 is a MUL (multiplication) instruction.
  • the connection of the adder by the minimum set calculator 11A and the calculation by the configured adder are configured to be completed by the time of generation of the DC clock related to the instruction 1 (t4). Will be described later).
  • the arithmetic unit (multiplier) corresponding to instruction 2 is the minimum set operation. It is comprised by the container 11B. Then, the calculation is executed by the multiplier configured by the minimum set calculator 11B (that is, the instruction 2 is executed). The connection of the multiplier by the minimum set calculator 11B and the calculation by the configured multiplier are configured to be completed by the time (t5) of the DC clock generation related to the instruction 2 (details of this configuration are Will be described later). When instruction 2 is executed, the operation result is stored in the register, and the processing for instruction 2 is completed.
  • the minimum set computing unit 11A used for the instruction 1 is used to constitute a subtracter. This is because the execution (EX) of the instruction 1 is completed before the decoding (ID) processing of the instruction 3 is completed, and the minimum set computing unit 11A used for the instruction 1 is released ( This is because it can be used.
  • an arithmetic unit (adder) corresponding to instruction 4 performs a minimum set operation. It is comprised by the container 11B. Then, the calculation is executed by the adder constituted by the minimum set calculator 11B (that is, the instruction 4 is executed).
  • the connection of the adder by the minimum set calculator 11B and the calculation by the configured adder are configured to be completed by the time of generation of the DC clock related to the instruction 4 (details of this configuration are Will be described later).
  • the minimum set operator 11B used for instruction 2 is used to constitute the adder. This is because the execution (EX) of the instruction 2 is completed before the decoding (ID) processing of the instruction 4 is completed, and the minimum set computing unit 11B used for the instruction 2 is released ( This is because it can be used.
  • an arithmetic unit is configured using the minimum set arithmetic unit 11A used for the instruction 1 and the instruction 3, and the operation is executed.
  • pipeline stalls due to a shortage of computing units are obtained by alternately using two minimum set computing units 11A and 11B in order of instructions for a multi-thread of a 5-stage pipeline.
  • the hardware resources are reduced while preventing the occurrence.
  • FIG. 10 shows a time series in a case where a superscalar (parallel execution) is realized by two minimum set computing units 11 according to the present embodiment (here, reference numerals 11A and 11B are respectively attached for distinction). It is a figure which shows an example.
  • FIG. 11 is a diagram illustrating a transition mode of the arithmetic unit configured by the minimum set arithmetic units 11A and 11B corresponding to FIG.
  • processing is executed in a cycle of fetch (IF), decode (ID), execute (EX), data cache (DC), and write back (WB).
  • IF fetch
  • ID decode
  • EX execute
  • DC data cache
  • WB write back
  • instruction 1 is an ADD (addition) instruction
  • instruction 2 is an ADD (addition) instruction.
  • an arithmetic unit (adder) corresponding to instruction 1 (addition) is the minimum set arithmetic unit 11A. (Refer to the adder after the instruction 1 in FIG. 11).
  • an arithmetic unit (adder) corresponding to instruction 2 (addition) is configured by the minimum set arithmetic unit 11B. (See the adder after instruction 2 in FIG. 10).
  • the calculation is executed by each of the adders constituted by the minimum set calculators 11A and 11B (that is, the instruction 1 and the instruction 2 are simultaneously executed).
  • the connection of the adder by the minimum set calculators 11A and 11B and the calculation by the configured adder are configured to be completed by the time of generation of the DC clock (t4) related to the instruction 1 and the instruction 2 (this Details of the configuration will be described later).
  • t4 the time of generation of the DC clock
  • the number of parallel processes is not limited to the above-described parallel number of 2, and may be any parallel number of 3 or more.
  • the minimum set computing unit 11 is provided in a number corresponding to the parallel number. Thereby, it is possible to prevent the occurrence of pipeline stalls due to a shortage of computing units.
  • FIG. 12 is a diagram schematically showing the configuration of the dynamic reconfiguration processor 2 according to another embodiment (embodiment 2) of the present invention.
  • the dynamic reconfiguration processor 2 of this embodiment includes a failure repair gate 20 in addition to the CPU 10 and the clock generation circuit 12.
  • the configuration and operation example of the CPU 10, particularly the minimum set calculator 11, may be the same as in the first embodiment.
  • the failure repair gate 20 is used in place of the failed gate when a failure occurs in a part of the gates of the minimum set computing unit 11. That is, when a failure occurs in a part of the gates of the minimum set computing unit 11, the operation can be continued by stopping the failed gate and changing the connection (connection) to the failure repair gate 20. it can. Note that a method generally used in failure repair technology may be used as the gate failure detection method and the gate stop method.
  • the failure repair gate 20 is composed of a smaller number of gates than all the gates constituting the minimum set computing unit 11, and is composed of unit gates corresponding to the minimum unit of the minimum set computing unit 11.
  • the fault repair gate 20 is provided for each FPGA synthesis gate unit. Including gate.
  • the fault repair gate 20 is the ASIC logic synthesis gate unit. Including each gate.
  • the minimum set computing unit 11 is constructed with the element unit of the PchMOSFET and the NchMOSFET as the minimum unit as in the example shown in FIG. 4, the PchMOSFET and the NchMOSFET are replaced with the failure repair gate 20.
  • An element for failure repair including each element may be provided in element units.
  • the fault repair gate 20 is set to all the gates constituting the minimum set arithmetic unit 11. You may be comprised only from the predetermined gate (for example, gate with high use frequency) of them. Alternatively, in the case where the minimum set calculator 11 is constructed with the gate unit as the minimum unit as in the example shown in FIG. 2 or FIG. 3, the failure repair gates 20 are all included in the minimum set calculator 11. One type of gate may be provided for each type.
  • the failure repair gate 20 or element is configured in units of the gate level or in units of the element level, so that a calculator for fault repair is prepared in units of the calculator.
  • the number of gates or elements prepared for failure repair can be reduced, and a configuration for failure repair can be realized with a small area.
  • the failure repair gate 20 is shown separately from the minimum set computing unit 11 for the sake of explanation, but may be configured integrally with the minimum set computing unit 11 (that is, the minimum set computing unit 11). It may be incorporated in the computing unit 11).
  • FIG. 13 is a diagram schematically showing the configuration of the dynamic reconfiguration processor 3 according to another embodiment (third embodiment) of the present invention.
  • the dynamic reconfiguration processor 3 of this embodiment includes a CPU (calculator) 22 in addition to the CPU 10 and the clock generation circuit 12.
  • the configuration and operation example of the CPU 10, particularly the minimum set calculator 11, may be the same as in the first embodiment.
  • the CPU 22 may be a general CPU and includes a plurality of arithmetic units (non-reconfigurable arithmetic units) as hardware. Note that the CPU 22 may be configured integrally with the CPU 10. That is, a plurality of arithmetic units (non-reconfigurable arithmetic units) in the CPU 22 may be incorporated in the CPU 10 separately from the minimum set arithmetic unit 11 in the CPU 10. In this case, sharable hardware (hardware other than the arithmetic unit, such as an instruction decoder control circuit) may be combined into one.
  • FIGS. 14, 15, and 16 show each operation example (single thread, multi-thread, superscalar) of the CPU 22, and FIG. 5, FIG. 7, and FIG. 10 respectively show the same operation example of the minimum set computing unit 11.
  • FIG. Each operation of the CPU 22 may be in a general mode as shown in FIGS. 14, 15, and 16.
  • FIG. 15 shows specific types of arithmetic units in the CPU 22, but actually other types of arithmetic units are included.
  • the CPU 22 shown in FIG. 16 includes a larger number of arithmetic units than the CPU 22 shown in FIGS. 14 and 15 for superscalar (parallel execution). At that time, since the parallel number is 2, the CPU 22 shown in FIG. 16 may be equipped with a computing device that is completely double that of the CPU 22 shown in FIG. 14 and FIG. May be installed.
  • the dynamic reconfiguration processor 3 is configured to use the minimum set computing unit 11 and the CPU 22 properly in accordance with an instruction.
  • This mode of proper use may be any mode.
  • frequently used instructions may be executed by an arithmetic unit in the CPU 22, and only low-frequency instructions may be executed by an arithmetic unit dynamically configured by the minimum set arithmetic unit 11. Thereby, the area can be reduced by the minimum set computing unit 11 while maintaining high speed computation by the CPU 22.
  • high-frequency instructions are limited, and the area reduction effect is not greatly impaired.
  • the classification between high-frequency instructions and low-frequency instructions may be a relative criterion, and may be determined in consideration of the demand for high-speed computation and the demand for area reduction.
  • the frequency of each instruction may be determined by performing an instruction analysis in an application in which the dynamic reconfiguration processor 3 is most utilized. In this way, it is possible to balance the cost and speed by designing the architecture in cooperation with the compiler technology.
  • the minimum set calculator 11 may be used temporarily. That is, when the CPU 22 performs a normal process and an instruction group in a mode that cannot be executed by the CPU 22 is issued, an arithmetic unit corresponding to the instruction that cannot be executed by the CPU 22 is generated by the minimum set calculator 11. It may be configured dynamically. The instruction that cannot be processed by the arithmetic unit of the CPU 22 is executed by the arithmetic unit constituted by the minimum set arithmetic unit 11 in this way.
  • instructions 1, 2, and 3 of the addition instruction are issued simultaneously. However, if there are only two adders in the CPU 22, the pipe of the instruction 3 is originally used. Line stalls and a wait condition occurs.
  • an adder is used by using the minimum set arithmetic unit 11. Generate and avoid stalls.
  • the instruction 1 and the instruction 2 are executed by the arithmetic unit (two adders) held by the CPU 22, and the instruction 3 is an addition configured by the minimum set arithmetic unit 11. Executed by the instrument. Also in the example shown in FIG. 18, the connection of the adder by the minimum set calculator 11 and the calculation by the configured adder are configured to be completed by the time of generation of the DC clock (t4). Details will be described later).
  • FIG. 19 is a diagram illustrating an example of the configuration of the clock generation circuit 12 (first delay prevention method).
  • the clock generation circuit 12 includes a transmission circuit 13, a first multiplication circuit 15, and a second multiplication circuit 17.
  • a transmitter 14 provided outside is connected to the transmitter circuit 13.
  • the transmitter 14 may be provided inside the dynamic reconfiguration processors 1, 2, and 3.
  • the output of the transmission circuit 13 is connected to the first multiplication circuit 15.
  • the output of the first multiplication circuit 15 is connected to the second multiplication circuit 17.
  • the output of the first multiplication circuit 15 is connected to the CPU 10.
  • the output of the first multiplication circuit 15 is connected to the CPU 10 and the CPU 22.
  • the first multiplication circuit 15 is typically configured by a PLL (Phase Locked Loop), and multiplies the frequency forg (internal clock frequency) of the clock source signal excited by the transmission circuit 13.
  • f PLL1 d ⁇ forg.
  • f PLL1 represents the frequency of the clock CLK1 from the first multiplier circuit 15, and d is a constant.
  • the first multiplication circuit 15 may be omitted when the frequency is low, but in general, when the frequency is several tens of MHz or more, the frequency excited by the transmission circuit 13 is multiplied and used. Needed.
  • the output of the first multiplication circuit 15 is input to the CPU 10 (or the CPU 10 and the CPU 22) and functions as a clock CLK1 that is a main clock.
  • a clock CLK2 synchronized with the clock CLK1 and having a frequency twice the frequency of the clock CLK1 is generated.
  • the clock CLK2 is input to the CPU 10.
  • FIG. 20 is a diagram showing the principle of the delay prevention function (first delay prevention method) realized by the clock generation circuit 12 shown in FIG.
  • one cycle process (fetch (IF), decode (ID), execute (EX), data cache (DC), write back (WB))) is shown in time series along with the waveform of the clock CLK1.
  • t 1 to 7 represents the number of clocks with the IF clock of instruction 1 as the first.
  • each processing of the computing unit generation processing (calculation unit generation) by the minimum set computing unit 11 and the arithmetic processing (calculation) by the computing unit generated by the minimum set computing unit 11 is shown.
  • the timing of is shown.
  • the timing at which the understanding of the instruction in decoding (ID) is completed is indicated by an arrow.
  • Execute (EX) includes two processes of generation (connection) of the arithmetic unit by the minimum set arithmetic unit 11 and calculation by the generated adder. Two clocks are required. However, as shown in contrast to FIG. 21, when two clocks of CLK1 are given to execute (EX), data cache (DC) and write back (WB) are each corresponding to that (only one block of CLK1). The process will be delayed.
  • the arithmetic unit generation processing (connection based on connection information) by the minimum set arithmetic unit 11 and the arithmetic processing by the arithmetic unit generated by the minimum set arithmetic unit 11 are clocks. This is executed based on a clock CLK2 obtained by multiplying CLK1 by two.
  • FIG. 20 relates to the operation of the CPU 10 in the dynamic reconfiguration processors 1, 2, and 3 according to the first, second, and third embodiments.
  • the operation of the CPU 22 in the dynamic reconfiguration processor 3 according to the third embodiment may be normal. That is, in the CPU 22 in the dynamic reconfiguration processor 3, each process of fetch (IF), decode (ID), execute (EX), data cache (DC), and write back (WB) is performed on the clock CLK1 as usual. Based on.
  • FIG. 22 is a diagram showing another example of the configuration of the clock generation circuit 12 (second delay prevention method).
  • the clock generation circuit 12 shown in FIG. 22 differs from the example shown in FIG. 19 mainly in that a phase adjustment circuit 18 is provided instead of the second multiplication circuit 17.
  • Other configurations may be similar.
  • the phase adjustment circuit 18 generates a clock CLK2 in which the phase of the clock CLK1 that is the output of the first multiplication circuit 15 is shifted by a predetermined phase amount.
  • the predetermined phase amount is set based on the longest time (possible worst time) ⁇ T of the time (actual processing time) required for decoding (ID) processing.
  • the predetermined phase amount may be determined within a phase range corresponding to a time that is longer than the longest time ⁇ T (see FIG. 23) of decoding (ID) and shorter than the time of one clock of the clock CLK1.
  • the predetermined phase amount is set to a phase corresponding to the longest time ⁇ T of decoding (ID) so that the generation processing (calculation unit generation) of the calculation unit by the minimum set calculation unit 11 can be started as soon as possible. Is done.
  • the predetermined phase amount is set to a phase corresponding to the longest time ⁇ T of decoding (ID).
  • FIG. 23 is a diagram showing the principle of the delay prevention function (second delay prevention method) realized by the clock generation circuit 12 shown in FIG.
  • one cycle process (fetch (IF), decode (ID), execute (EX), data cache (DC), write back (WB))) is shown in time series together with the waveform of the clock CLK1. Yes.
  • t 1 to 7 represents the number of clocks with the IF clock of instruction 1 as the first.
  • FIG. 23 also shows the processing of the arithmetic unit generation processing (arithmetic unit generation) by the minimum set arithmetic unit 11 and the arithmetic processing (calculation) by the arithmetic unit generated by the minimum set arithmetic unit 11 together with the waveform of the clock CLK2.
  • the timing of is shown.
  • FIG. 23 shows the longest time (actual processing time) required for each process of fetch (IF), decode (ID), execute (EX), data cache (DC), and write back (WB). Has been.
  • the timing at which the understanding of the instruction in decoding (ID) is completed (the latest timing) is indicated by an arrow.
  • each process of the arithmetic unit generation processing (arithmetic unit generation) by the minimum set arithmetic unit 11 and the arithmetic processing (arithmetic unit) by the arithmetic unit generated by the minimum set arithmetic unit 11 is This is executed based on the clock CLK2 in which the phase of the clock CLK1 is shifted.
  • the arithmetic processing (calculation) by the arithmetic unit generated by the minimum set arithmetic unit 11 is started at the next rising edge of the clock CLK2.
  • FIG. 23 relates to the operation of the CPU 10 in the dynamic reconfiguration processors 1, 2, and 3 according to the first, second, and third embodiments.
  • the operation of the CPU 22 in the dynamic reconfiguration processor 3 according to the third embodiment may be normal. That is, in the CPU 22 in the dynamic reconfiguration processor 3, each process of fetch (IF), decode (ID), execute (EX), data cache (DC), and write back (WB) is performed on the clock CLK1 as usual. Based on. The same applies to the description of FIGS.
  • a delay may not be prevented by the first and second delay prevention methods described above. In such a case, the delay can be prevented by combining the first and second delay prevention methods and / or by multiplying by 3 or more in the first delay prevention method.
  • the first set and the second delay prevention method are combined to generate the calculation unit generation processing (calculation unit generation) by the minimum set calculation unit 11 and the minimum set calculation unit 11.
  • the processing unit generation processing (operation unit generation) by the minimum set arithmetic unit 11 and the arithmetic processing by the arithmetic unit generated by the minimum set arithmetic unit 11 (operation unit generation). Calculation) is completed by the start of the data cache (DC).
  • DC data cache
  • more than two clocks may be used. For example, two clocks having different phase shifts with respect to the clock CLK1 are generated, and based on the respective clocks, an operation unit generation process (operation unit generation) by the minimum set operation unit 11 and a minimum set operation unit 11 are generated.
  • Each of the arithmetic processing (calculation) by the arithmetic unit may be performed.
  • the execute (EX) by the minimum set computing unit 11 is generated by the computing unit generation processing (calculation unit generation) by the minimum set computing unit 11 and the computing unit generated by the minimum set computing unit 11. It is separated into two processes of calculation processing (calculation). However, it may be decomposed into three or more processes.
  • the computing unit generation process by the minimum set computing unit 11 is further divided into a connection information reading process according to the command and a process for generating the computing unit by the minimum set computing unit 11 based on the read connection information. May be.
  • the execute (EX) can be completed by the start of the data cache (DC) by using a three-phase clock or a multiplied clock.
  • each of the clocks CLK1 and CLK2 does not necessarily need to be a clock having the same period, and any clock may be used as long as the trigger of each process is given at such a timing that the above-described delay does not occur.
  • the frequency of the clock CLK1 itself may be varied by, for example, a frequency spreader.
  • processing is executed in a cycle of fetch (IF), decode (ID), execute (EX), data cache (DC), and write back (WB). It may be. In particular, the process immediately after Execute (EX) is optional. Further, the data cache (DC) and the write back (WB) may be processes for writing the result of the execution (EX) into a memory or a register file. Further, the data cache (DC) may be referred to as memory access (MA or MEM), and the name is arbitrary.
  • the minimum set calculator 11 including the minimum number of gates or elements capable of generating calculators corresponding to all instruction sets is used as the dynamic configuration calculator.
  • a dynamic configuration calculator having more gates or elements than the minimum set calculator 11 may be used (see FIG. 12), or less than the minimum set calculator 11.
  • a dynamic configuration calculator comprising a gate or element may be used.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

 命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、動的構成演算器と、クロック生成回路とを備え、一連の各工程は、動的構成演算器を用いて命令を実行する命令実行工程を除き、メインクロックに基づいて開始タイミングが規定され、動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を動的構成演算器により動的に構成する演算器生成サブ工程と、演算器生成サブ工程で構成した演算器により命令に対応した演算を行う演算サブ工程とを含み、演算器生成サブ工程及び演算サブ工程は、サブクロックに基づいて開始タイミングが規定され、サブクロックは、演算器生成サブ工程及び命令実行サブ工程が、命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成される。

Description

動的再構成プロセッサ及びその動作方法
 本発明は、命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサ及びその動作方法に関する。
 従来から、演算器構成情報を格納する書き換え可能なメモリ(RAM)と、メモリ内の演算器構成情報に基づいて所定の専用演算器を構成する専用演算ユニットとを備える演算処理装置が知られている(例えば、特許文献1参照)。この専用演算器はFPGA(Field Programmable Gate Array)により構成されている。
特開平7-175631号公報
 ところで、RISC(Reduced Instruction Set Computer)プロセッサ等では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が行われており、エクゼキュートは、CPUのハードウェアとして命令毎に予め用意された演算器を用いて実行される。また、高速化のためにパイプライン処理などが実行されている。
 しかしながら、命令毎に演算器をハードウェアで用意する構成では、ハードウェアの面積が増加するという問題がある。例えば、代表的な命令として、ロード/ストア、整数算術演算/論理演算命令、分岐命令、ビット操作命令等がある。これらの命令のそれぞれには、数種類から数十種類の命令があり、更に、オペランド数に応じた命令や、ワード長に応じた命令を用意している場合もあり、32ビットマイコンでは数百にも及ぶ場合がある。
 これら1つ1つの命令に対して、CPU内部に演算器(ハードウェア)を予め用意しなければならないが、実際には、同時刻に1つの演算器しか動作しておらず、他の演算器は全て停止している。
 この点、特許文献1に記載の構成では、FPGAにより専用演算器を構成することができるので、基本演算ユニット内に用意すべき基本演算器の数を減らすことができ、演算の高速化及び装置の小型化を図ることができる。
 しかしながら、命令に応じて動的にFPGAにより演算器を構成する構成において、命令を遅れ無しで実行するためには、命令に応じて動的にFPGAにより演算器を構成する処理と、該構成した演算器により演算を行う処理とを、データキャッシュのクロックタイミングよりも前に完了させる必要がある。
 そこで、本発明は、命令に応じて動的に演算器を構成する処理と、該構成した演算器により演算を行う処理と遅れの無いタイミングで完了させることができる動的再構成プロセッサ及びその動作方法の提供を目的とする。
 上記目的を達成するため、本発明の一局面によれば、命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、
 命令に対応する演算器を動的に構成する動的構成演算器と、
 メインクロック及び前記メインクロックとは別のサブクロックを生成するクロック生成回路とを備え、
 前記一連の各工程は、前記動的構成演算器を用いて命令を実行する命令実行工程を除き、前記メインクロックに基づいて開始タイミングが規定され、
 前記動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を前記動的構成演算器により動的に構成する演算器生成サブ工程と、前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程とを含み、
 前記演算器生成サブ工程及び前記演算サブ工程は、前記サブクロックに基づいて開始タイミングが規定され、
 前記サブクロックは、前記演算器生成サブ工程及び前記命令実行サブ工程が、前記命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成されることを特徴とする、動的再構成プロセッサが提供される。
 本発明のその他の一局面によれば、命令を取り出すフェッチ工程と、取り出した前記命令をデコードするデコード工程と、エクゼキュート工程と、データキャッシュ工程とを含むプロセッサの動作方法であって、
 前記エクゼキュート工程は、前記命令に対応する演算器を動的に構成する演算器生成サブ工程及び前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程を含み、
 当該方法は、
 前記メインクロックで規定される第1のタイミングで前記フェッチ工程を実行し、
 前記メインクロックで規定される第2のタイミングで前記デコード工程を実行し、
 前記メインクロックで規定される第3のタイミングに代えて、前記メインクロックとは別のサブクロックで規定される第1のタイミングで、前記演算器生成サブ工程を実行すると共に、前記サブクロックで規定される第2のタイミングで、前記演算サブ工程を実行し、
 前記メインクロックで規定される第4のタイミングで前記データキャッシュ工程を実行することを特徴とする、方法が提供される。
 本発明によれば、命令に応じて動的に演算器を構成する処理と、該構成した演算器により演算を行う処理と遅れの無いタイミングで完了させることができる動的再構成プロセッサ及びその動作方法が得られる。
本発明の実施例1による動的再構成プロセッサ1の構成を概略的に示す図である。 最小セット演算器11の設定方法の一例を示す表図である。 最小セット演算器11の設定方法のその他の一例を示す表図である。 最小セット演算器11の設定方法の更なるその他の一例を示す表図である。 本実施例による単一の最小セット演算器11によりシングルスレッド(パイプラインなし)を実現した場合の時系列の一例を示す図である。 図5に対応した最小セット演算器11の遷移態様を示す図である。 本実施例による2つの最小セット演算器11A,11Bによりマルチスレッド(2段のパイプライン)を実現した場合の時系列の一例を示す図である。 図7に対応した最小セット演算器11A,11Bで構成される演算器の遷移態様を示す図である。 本実施例による2つの最小セット演算器11A,11Bによりマルチスレッド(5段のパイプライン)を実現した場合の時系列の一例を示す図である。 本実施例による2つの最小セット演算器11A,11Bによりスーパースカラーアーキテクチャを実現した場合の時系列の一例を示す図である。 図10に対応した最小セット演算器11A,11Bで構成される演算器の遷移態様を示す図である。 本発明の実施例2による動的再構成プロセッサ2の構成を概略的に示す図である。 本発明のその他の一実施例(実施例3)による動的再構成プロセッサ3の構成を概略的に示す図である。 CPU22によりシングルスレッド(パイプラインなし)を実現した場合の時系列の一例を示す図である。 CPU22によりマルチスレッド(2段のパイプライン)を実現した場合の時系列の一例を示す図である。 CPU22によりスーパースカラーアーキテクチャを実現した場合の時系列の一例を示す図である。 パイプラインがストールするような状況を示す図である。 パイプラインのストールを防止できる態様での最小セット演算器11の適用例を示す図である。 クロック生成回路12の構成の一例を(第1の遅れ防止方法)示す図である。 図19に示すクロック生成回路12により実現される遅れ防止機能の原理を示す図である。 クロックCLK1のみを用いる場合に生じる遅れを示す図である。 クロック生成回路12の構成のその他の一例(第2の遅れ防止方法)を示す図である。 図22に示すクロック生成回路12により実現される遅れ防止機能の原理を示す図である。 第2の遅れ防止方法単独では遅れを完全に防止できない状況を示す図である。 第1の遅れ防止方法及び第2の遅れ防止方法の組み合わせにより実現される遅れ防止機能の原理を示す図である。
 以下、図面を参照して、本発明を実施するための最良の形態の説明を行う。
 図1は、本発明の一実施例(実施例1)による動的再構成プロセッサ1の構成を概略的に示す図である。
 動的再構成プロセッサ1は、CPU10と、クロック生成回路12とを含む。クロック生成回路12は、CPU10の動作に必要な2つのクロックCLK1,CLK2を発生する。クロックCLK1は、メインクロックである。クロックCLK2は、後述の遅れ防止のために生成される特別なクロックである。クロック生成回路12の構成及びクロックCLK2の機能については、後に詳説する。尚、以下の説明において、図18までの説明までは、クロックという用語は、メインクロックを指す。図19以降の説明において、2つのクロックCLK1,CLK2を区別して説明する。
 CPU10は、命令実行部(主に演算回路)を構成する最小セット演算器11を含む。CPU10は、演算回路以外については、命令デコーダ制御回路、命令キャッシュ、レジスタファイル、データキャッシュ等(図示せず)の一般的な構成を含んでよい。CPU10には、メモリ(ROM,RAM等)が接続される。
 最小セット演算器11は、全命令セットに対応する演算器を生成可能な最小限のゲート(又は素子)を備える。全命令セットとは、動的再構成プロセッサ1に組み込まれるソフトウェアに含まれる全命令セットであってよいし、汎用性を持たせるために、動的再構成プロセッサ1に組み込まれるソフトウェアに含まれる命令以外の命令を含む全命令セットであってもよい。生成可能とは、実際に生成されるか否かを問わない趣旨であり、理論的に生成できる状態をいう。
 図2は、最小セット演算器11の設定方法の一例を示す表図である。図2に示す例では、最小セット演算器11は、全命令セットに対応する演算器を生成可能な最小限のゲートを備えるFPGA(Field Programmable Gate Array)からなる。即ち、最小セット演算器11は、いわゆるFPGA合成用のゲートレベルのゲート単位で最小限のゲートを備えるように構成される。FPGA合成用のゲートは、NAND,NOR,NOTのようなASIC(application specific integrated circuit)論理合成用のゲートに加えて、AND,ORなどの複雑なゲート(ASIC論理合成用のゲートを組み合わせて構成されるゲート)を含む。例えば、ANDは、NANDとNOTを組み合わせて構成されるゲートであり、ORは、NORとNOTを組み合わせて構成されるゲートである。
 図2には、全命令セットに含まれる各命令に対応する各演算器が示されている。例えば、演算器1Cは、16ビットの桁上げの無い加算命令を実行するための演算器であり、例えば2入力のANDゲートが30個、ORゲートが20個、NOTゲートが40個、MUXゲートが4個、DFF(Dフリップフロップ)が17個、等から構成されることを意味する。演算器C2,...,Cn(nは全命令セットのそれぞれの命令に対応した演算器の数)は、同様に、全命令セット(上記の演算器1Cに係る加算命令を除く全命令)のそれぞれの命令に対応した他の演算器を表す。尚、表図に示されている数は、例示的に挙げているだけであり、正しい数でない。
 図2に示す例では、最小セット演算器11を構成するに当たり、2入力のANDゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、30,20,...,25)の最大数(本例では、30)の2入力のANDゲートが用意され、同様に、3入力のANDゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、0,20,...,15)の最大数(本例では、20)の3入力のANDゲートが用意され、同様に、ORゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、20,30,...,15)の最大数(本例では、30)のORゲートが用意され、同様に、NOTゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、40,30,...,20)の最大数(本例では、40)のNOTゲートが用意され、同様に、XORゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、0,4,...,0)の最大数(本例では、4)のXORゲートが用意され、同様に、MUXゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、4,8,...,5)の最大数(本例では、8)のMUXゲートが用意され、同様に、DFFゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、17,8,...,16)の最大数(本例では、17)のDFFゲートが用意され、といった具合に、各ゲートについて、全演算器C1,...,Cnの任意の1つを生成できるようにするのに必要な最小限のゲート数が用意される。
 図3は、最小セット演算器11の設定方法のその他の一例を示す表図である。図3に示す例では、最小セット演算器11は、FPGA合成用のゲートレベルのゲート単位よりも小さい単位で最小限のゲートを備えるように構成される。具体的には、最小セット演算器11は、いわゆるASIC論理合成用のゲートレベルのゲート単位で最小限のゲートを備えるように構成される。即ち、最小セット演算器11は、NAND,NOR及びNOTのゲート単位で最小限のゲートを備えるように構成される。
 図3には、図2と同様に、全命令セットに含まれる各命令に対応する各演算器が示されている。図3の表図の見方は、図2と同様である。全命令セットに対応する全演算器C1,...,Cnのそれぞれに対して、NAND,NOR及びNOTのそれぞれのゲートの必要数が示されている。尚、表図に示されている数は、例示的に挙げているだけであり、正しい数でない。
 図3に示す例では、図2に示す例と同様に、最小セット演算器11を構成するに当たり、2入力のNANDゲートについては、全命令セットに対応する全演算器C1,...,Cnのそれぞれを構成するのに必要な数(本例では、30,20,...,25)の最大数(本例では、30)の2入力のNANDゲートが用意され、といった具合に、NAND,NOR及びNOTのそれぞれのゲートについて、全演算器C1,...,Cnの任意の1つを生成できるようにするのに必要な最小限のゲート数が用意される。
 図4は、最小セット演算器11の設定方法の更なるその他の一例を示す表図である。尚、表図に示されている数は、例示的に挙げているだけであり、正しい数でない。
 図4に示す例では、最小セット演算器11は、ASIC論理合成用のゲートレベルのゲート単位よりも更に小さい素子単位で最小限の素子を備えるように構成される。具体的には、最小セット演算器11は、PchMOSFET(Metal-Oxide-Semiconductor Field-Effect Transistor)及びNchMOSFETレベルの素子単位で最小限の素子を備えるように構成される。即ち、最小セット演算器11は、全演算器C1,...,Cnの任意の1つを生成できるようにするのに必要な最小限のPchMOSFET及びNchMOSFETを備えるように構成される。
 ここで、図2に示す例に比べて図3に示す例の方が粒度が小さく、図3に示す例に比べて図4に示す例の方が粒度が小さい。粒度が小さくなるほど、無駄が少なくなる。但し、その反面として、粒度が小さくなるほど、最小セット演算器11を用いて後述の演算器を構成するのに要する時間が長くなる。
 このように構成された最小セット演算器11は、全命令セットに対応する全演算器C1,...,Cnのうちの任意の1つの演算器を構成することができる。即ち、最小セット演算器11は、対応する結線情報に基づいて、ゲート(又は素子)の結線を行うことで、全演算器C1,...,Cnのうちの任意の1つの演算器を構成することができる。結線情報は、全演算器C1,...,Cnのそれぞれに対応して予め用意され(即ち全命令セットのそれぞれに対応して予め用意され)、メモリに記憶されていてよい。尚、結線情報は、最小セット演算器11の最小単位に応じて規定される。例えば、最小セット演算器11が図2に示した例のようにFPGA合成用のゲート単位を最小単位として構築されている場合は、FPGA合成用のゲート単位で結線情報(即ち、各AND、各OR等のゲート間の結線態様を表す情報)が生成・記憶される。また、最小セット演算器11が図3に示した例のようにASIC論理合成用のゲート単位を最小単位として構築されている場合は、ASIC論理合成用のゲート単位で結線情報(即ち、各NAND,各NOR及び各NOTのゲート間の結線態様を表す情報)が生成・記憶される。また、最小セット演算器11が図4に示した例のようにPchMOSFET及びNchMOSFETの素子単位を最小単位として構築されている場合は、PchMOSFET及びNchMOSFETの素子単位で結線情報(即ち、各PchMOSFETのソース・ドレイン及び各NchMOSFETのソース・ドレイン間の結線態様を表す情報)が生成・記憶される。
 図5は、本実施例による単一の最小セット演算器11によりシングルスレッド(パイプラインなし)を実現した場合の時系列の一例を示す図である。図6は、図5に対応した最小セット演算器11で構成される演算器の遷移態様を示す図である。図5において、t=4、t=9は、命令1のIFのクロックを1番目として何番目のクロックかを表し、それぞれの命令1,2に係るデータキャッシュ(DC)のクロックの発生時点を表す。
 図5に示すように、本例では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が実行される。
 フェッチ(IF)では、命令キャッシュから命令を取り出す。デコード(ID)では、取り出した命令をデコードすると共にレジスタオペランドをフェッチする。エクゼキュート(EX)では、デコード結果とフェッチしたレジスタの値を元に命令(演算等)を実行する。また、ロード/ストア命令の場合は実行アドレスの計算を行い、分岐命令の場合は分岐先のアドレスの計算を行う。但し、エクゼキュート工程は、これらの演算処理に加えて、後述のように最小セット演算器11による演算器生成処理を含む。データキャッシュ(DC)では、エクゼキュート工程で計算したアドレスに対応するメモリの値をデータキャッシュからリードする。ライトバック(WB)では、エクゼキュート工程で計算した結果又はデータキャッシュ工程でフェッチしたオペランドをレジスタに格納する。また、ストア命令の場合はデータキャッシュにライトする。
 ここでは、一例として、命令1がADD(加算)命令であり、命令2がMUL(乗算)命令であるとする。本実施例では、命令1がフェッチされ、命令1がデコードされると(命令1が理解されると)、命令1(加算)に応じた演算器(加算器)が最小セット演算器11により構成される(図6の命令1の後の加算器参照)。そして、最小セット演算器11により構成された加算器により演算が実行される(即ち、命令1が実行される)。この最小セット演算器11による加算器の結線及び構成された加算器による演算は、命令1に係るDCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。命令1が実行されると、演算結果がレジスタに格納され、命令1に対する処理が終了する。
 命令1に対する処理が終了すると、命令2がフェッチされ、命令2がデコードされると(命令2が理解されると)、命令2(乗算)に応じた演算器(乗算器)が最小セット演算器11により構成される(図6の命令2の後の乗算器参照)。そして、最小セット演算器11により構成された乗算器により演算が実行される(即ち、命令2が実行される)。この最小セット演算器11による乗算器の結線及び構成された乗算器による演算は、命令2に係るDCのクロックの発生時(t9)までに完了するように構成される(この構成の詳細は、後述する)。命令2が実行されると、演算結果がレジスタに格納され、命令2に対する処理が終了する。尚、最小セット演算器11の結線は、各命令に対する処理が終了する毎に一旦クリア(リセット)されてもよいし、若しくは、上書き形式で命令毎に変更されてもよい。このようにして、本実施例による単一の最小セット演算器11によるシングルスレッド処理が実行されていく。
 図7は、本実施例による2つの最小セット演算器11(ここでは、区別のため、それぞれ参照符号11A,11Bを付す)によりマルチスレッド(2段のパイプライン)を実現した場合の時系列の一例を示す図である。図8は、図7に対応した最小セット演算器11A,11Bで構成される演算器の遷移態様を示す図である。図7において、t=3、t=4、t=5は、命令1のIFのクロックを1番目として何番目のクロックかを表し、命令1に係るエクゼキュート(EX)のクロックの発生時点、及び、それぞれの命令1,2に係るデータキャッシュ(DC)のクロックの発生時点を表す。
 同様に、本例では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が実行される。
 ここでは、一例として、命令1がADD(加算)命令であり、命令2がMUL(乗算)命令であるとする。
 命令1に関しては、命令1がフェッチされ、命令1がデコードされると(命令1が理解されると)、命令1(加算)に応じた演算器(加算器)が最小セット演算器11Aにより構成される(図8の命令1の後の加算器参照)。そして、最小セット演算器11Aにより構成された加算器により演算が実行される(即ち、命令1が実行される)。この最小セット演算器11Aによる加算器の結線及び構成された加算器による演算は、命令1に係るDCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。命令1が実行されると、演算結果がレジスタに格納され、命令1に対する処理が終了する。
 命令2に関しては、命令2がフェッチされ、命令2がデコードされると(命令2が理解されると)、命令2(乗算)に応じた演算器(乗算器)が最小セット演算器11Bにより構成される(図8の命令2の後の乗算器参照)。そして、最小セット演算器11Bにより構成された乗算器により演算が実行される(即ち、命令2が実行される)。この最小セット演算器11Bによる乗算器の結線及び構成された乗算器による演算は、命令2に係るDCのクロックの発生時(t5)までに完了するように構成される(この構成の詳細は、後述する)。命令2が実行されると、演算結果がレジスタに格納され、命令2に対する処理が終了する。このようにして、本実施例による最小セット演算器11A,11Bによるマルチスレッド(2段のパイプライン)処理が実行されていく。
 尚、マルチスレッドのパイプラインの段数(本数)は、上述の2段に限られず、3段以上の任意の段数であってよい。最小セット演算器11は、パイプラインの段数に応じた個数設けられてもよいが、図9を参照して後述するように最小セット演算器11は、必要最小限の個数が望ましい。
 図9は、本実施例による2つの最小セット演算器11(ここでは、区別のため、それぞれ参照符号11A,11Bを付す)によりマルチスレッド(5段のパイプライン)を実現した場合の時系列の一例を示す図である。図9において、t=1~9は、命令1のIFのクロックを1番目として何番目のクロックかを表す。
 ここでは、一例として、命令1がADD(加算)命令であり、命令2がMUL(乗算)命令であり、命令3がSUB(減算)命令であり、命令4がADD(加算)命令であり、命令5がMUL(乗算)命令であるとする。
 命令1に関しては、t=1で命令1がフェッチされ、命令1がデコードされると(命令1が理解されると)、命令1(加算)に応じた演算器(加算器)が最小セット演算器11Aにより構成される。そして、最小セット演算器11Aにより構成された加算器により演算が実行される(即ち、命令1が実行される)。この最小セット演算器11Aによる加算器の結線及び構成された加算器による演算は、命令1に係るDCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。命令1が実行されると、演算結果がレジスタに格納され、命令1に対する処理が終了する。
 命令2に関しては、t=2で命令2がフェッチされ、命令2がデコードされると(命令2が理解されると)、命令2(乗算)に応じた演算器(乗算器)が最小セット演算器11Bにより構成される。そして、最小セット演算器11Bにより構成された乗算器により演算が実行される(即ち、命令2が実行される)。この最小セット演算器11Bによる乗算器の結線及び構成された乗算器による演算は、命令2に係るDCのクロックの発生時(t5)までに完了するように構成される(この構成の詳細は、後述する)。命令2が実行されると、演算結果がレジスタに格納され、命令2に対する処理が終了する。
 命令3に関しては、t=3で命令3がフェッチされ、命令3がデコードされると(命令3が理解されると)、命令3(減算)に応じた演算器(減算器)が最小セット演算器11Aにより構成される。そして、最小セット演算器11Aにより構成された減算器により演算が実行される(即ち、命令3が実行される)。この最小セット演算器11Aによる減算器の結線及び構成された減算器による演算は、命令3に係るDCのクロックの発生時(t6)までに完了するように構成される(この構成の詳細は、後述する)。命令3が実行されると、演算結果がレジスタに格納され、命令3に対する処理が終了する。ここで、命令3に関しては、命令1に関して使用された最小セット演算器11Aが減算器を構成するのに使用されている。これは、命令3のデコード(ID)の処理が完了するまでには、命令1のエクゼキュート(EX)は完了しており、命令1に関して使用された最小セット演算器11Aが解放された状態(利用可能な状態)となっているためである。
 命令4に関しては、t=4で命令4がフェッチされ、命令4がデコードされると(命令4が理解されると)、命令4(加算)に応じた演算器(加算器)が最小セット演算器11Bにより構成される。そして、最小セット演算器11Bにより構成された加算器により演算が実行される(即ち、命令4が実行される)。この最小セット演算器11Bによる加算器の結線及び構成された加算器による演算は、命令4に係るDCのクロックの発生時(t7)までに完了するように構成される(この構成の詳細は、後述する)。命令4が実行されると、演算結果がレジスタに格納され、命令4に対する処理が終了する。同様に、この命令4に関しては、命令2に関して使用された最小セット演算器11Bが加算器を構成するのに使用されている。これは、命令4のデコード(ID)の処理が完了するまでには、命令2のエクゼキュート(EX)は完了しており、命令2に関して使用された最小セット演算器11Bが解放された状態(利用可能な状態)となっているためである。
 同様にして命令5に関しては、命令1及び命令3に関して使用された最小セット演算器11Aを利用して演算器を構成し、演算が実行される。
 尚、図9に示す例では、5段のパイプラインのマルチスレッドに対して、2つの最小セット演算器11A、11Bを命令の順に交互に使用することで、演算器不足によるパイプラインのストールの発生を防止しつつ、ハードウェアリソースの低減を図っている。しかしながら、5段のパイプラインのマルチスレッドに対して、3つの最小セット演算器11又は4つの最小セット演算器11を順に周期的に使用することも可能である。このような考え方は、パイプラインの段数に応じて適宜適用可能である。
 図10は、本実施例による2つの最小セット演算器11(ここでは、区別のため、それぞれ参照符号11A,11Bを付す)によりスーパースカラー(superscalar)(並列実行)を実現した場合の時系列の一例を示す図である。図11は、図10に対応した最小セット演算器11A,11Bで構成される演算器の遷移態様を示す図である。
 同様に、本例では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が実行される。ここでは、一例として、命令1がADD(加算)命令であり、命令2がADD(加算)命令であるとする。
 図10に示す例では、命令1がフェッチされ、命令1がデコードされると(命令1が理解されると)、命令1(加算)に応じた演算器(加算器)が最小セット演算器11Aにより構成される(図11の命令1の後の加算器参照)。命令1と同時に、命令2がフェッチされ、命令2がデコードされると(命令2が理解されると)、命令2(加算)に応じた演算器(加算器)が最小セット演算器11Bにより構成される(図10の命令2の後の加算器参照)。そして、最小セット演算器11A、11Bにより構成された加算器のそれぞれにより演算が実行される(即ち、命令1及び命令2が同時に実行される)。この最小セット演算器11A、11Bによる加算器の結線及び構成された加算器による演算は、命令1及び命令2に係るDCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。命令1及び命令2が実行されると、各演算結果がレジスタに格納され、命令1及び命令2に対する処理が終了する。このようにして、本実施例による最小セット演算器11A,11Bによるスーパースカラー処理が実行されていく。
 尚、並列処理の数(並列数)は、上述の2の並列数に限られず、3以上の任意の並列数であってよい。いずれの場合も、最小セット演算器11は、並列数に応じた個数設けられる。これにより、演算器不足によるパイプラインのストールの発生を防止することができる。
 図12は、本発明のその他の一実施例(実施例2)による動的再構成プロセッサ2の構成を概略的に示す図である。
 本実施例の動的再構成プロセッサ2は、CPU10及びクロック生成回路12に加えて、故障修復用のゲート20を備える。CPU10、特に最小セット演算器11の構成や動作例については、上述の実施例1と同様であってよい。
 故障修復用のゲート20は、最小セット演算器11の一部のゲートに故障が発生した場合に、故障したゲートに代えて使用される。即ち、最小セット演算器11の一部のゲートに故障が発生した場合に、故障したゲートを停止し、故障修復用のゲート20に接続(結線)を変更することで、動作を継続することができる。尚、ゲートの故障検出方法及びゲートの停止方法は、一般的に故障修復技術で使用される方法が利用されてもよい。
 この目的のため、故障修復用のゲート20は、最小セット演算器11を構成する全ゲートよりも少ない数のゲートから構成され、最小セット演算器11の最小単位に対応する単位のゲートから構成される。例えば、最小セット演算器11が図2に示した例のようにFPGA合成用のゲート単位を最小単位として構築されている場合は、故障修復用のゲート20は、FPGA合成用のゲート単位で各ゲートを含む。また、最小セット演算器11が図3に示した例のようにASIC論理合成用のゲート単位を最小単位として構築されている場合は、故障修復用のゲート20は、ASIC論理合成用のゲート単位で各ゲートを含む。また、また、最小セット演算器11が図4に示した例のようにPchMOSFET及びNchMOSFETの素子単位を最小単位として構築されている場合は、故障修復用のゲート20に代えて、PchMOSFET及びNchMOSFETの素子単位で各素子を含む故障修復用の素子が設けられてよい。
 最小セット演算器11が図2又は図3に示した例のようにゲート単位を最小単位として構築されている場合は、故障修復用のゲート20は、最小セット演算器11を構成する全ゲートのうちの所定のゲート(例えば、使用頻度の高いゲート)のみから構成されてもよい。或いは、最小セット演算器11が図2又は図3に示した例のようにゲート単位を最小単位として構築されている場合は、故障修復用のゲート20は、最小セット演算器11を構成する全種類のゲートを種類毎に一つずつ備えてもよい。
 このように、実施例2によれば、ゲートレベルの単位又は素子レベルの単位で故障修復用のゲート20又は素子を構成するため、演算器単位で故障修復用の演算器を用意しておく構成に比べて、故障修復用に用意するゲート又は素子の数を低減することができ、小面積で故障修復用の構成を実現することができる。尚、当然ながら、図12では説明上、故障修復用のゲート20は最小セット演算器11とは別に示されているが、最小セット演算器11と一体に構成されてもよい(即ち、最小セット演算器11に組み込まれてよい)。
 図13は、本発明のその他の一実施例(実施例3)による動的再構成プロセッサ3の構成を概略的に示す図である。
 本実施例の動的再構成プロセッサ3は、CPU10及びクロック生成回路12に加えて、CPU(演算器)22を備える。CPU10、特に最小セット演算器11の構成や動作例については、上述の実施例1と同様であってよい。
 CPU22は、一般的なCPUであってよく、ハードウェアとして複数の演算器(再構成可能でない演算器)を備える。尚、CPU22は、CPU10と一体に構成されてもよい。即ち、CPU22内の複数の演算器(再構成可能でない演算器)が、CPU10内の最小セット演算器11とは別に、CPU10内に組み込まれてもよい。この場合、共有可能なハードウェア(演算器以外のハードウェアであって、例えば命令デコーダ制御回路等)は1つにまとめられてもよい。
 図14、図15及び図16は、CPU22の各動作例(シングルスレッド、マルチスレッド、スーパースカラー)をそれぞれ示し、最小セット演算器11の同動作例を示す図5、図7及び図10とそれぞれ対照となる図である。CPU22の各動作は、図14、図15及び図16に示すように、一般的な態様であってよい。
 例えばシングルスレッドの場合は、図14に示すように、命令1(加算命令)がフェッチされ、命令1がデコードされると(命令1が理解されると)、エクゼキュート(EX)のクロック(t=3)にてCPU22内の加算器を用いて演算を行う。このようにして命令1が実行されると、演算結果がレジスタに格納され、命令1に対する処理が終了する。次いで、命令2(乗算命令)がフェッチされ、命令2がデコードされると(命令2が理解されると)、エクゼキュート(EX)のクロック(t=8)にてCPU22内の乗算器を用いて演算を行う。このようにして命令2が実行されると、演算結果がレジスタに格納され、命令2に対する処理が終了する。このようにして、各種命令に応じて予めハードウェアとして用意されているCPU22内の各種演算器を用いて各種演算を行い、シングルスレッド処理が実行されていく。
 マルチスレッドの場合も同様に、図15に示すように、各種命令に応じて予めハードウェアとして用意されているCPU22内の各種演算器を用いて各種演算が実行される。スーパースカラーの場合も同様に、図16に示すように、各種命令に応じて予めハードウェアとして用意されているCPU22内の各種演算器を用いて各種演算が実行される。尚、図14、図15及び図16では、CPU22内の特定種類の演算器が示されているが、実際にはより他の種類の演算器が含まれる。尚、図16に示すCPU22は、スーパースカラー(並列実行)のために、図14及び図15に示すCPU22よりも多数の演算器を含んでいる。その際、並列数が2であることから、図16に示すCPU22は、図14及び図15に示すCPU22に対して完全に2倍の演算器を搭載してもよいが、ある程度多くの演算器が搭載されていてもよい。
 本実施例3の動的再構成プロセッサ3は、命令に応じて、最小セット演算器11とCPU22とを使い分けるように構成されている。この使い分けの態様は、任意の態様であってよい。
 一例として、頻繁に使う命令は、CPU22内の演算器により実行し、低頻度の命令のみ、最小セット演算器11により動的に構成される演算器により実行することとしてもよい。これにより、CPU22により高速演算を維持しつつ、最小セット演算器11により小面積化を図ることができる。尚、コンパイラに依存するが、実際には、高頻度命令は限られており、面積低減効果が大きく損なわれることはない。高頻度の命令か低頻度の命令かの区分けは、相対的な基準であってよく、高速演算の要求と小面積化の要求との兼ね合いで決定されてもよい。各命令の頻度は、動的再構成プロセッサ3が最も利用される用途における命令解析を行うことで判断されてもよい。このようにして、コンパイラ技術と連携してアーキテクチャ設計を行い、コストと速度のバランスを取ることが可能である。
 その他の一例として、ハイプラインのストールが生じるような状況が発生した場合、即ち同一の命令が同時にCPU22内の演算器以上に発行された場合に(CPU22内の演算器で賄いきれない数の命令が発行された場合に)、最小セット演算器11が臨時的に使用されることしてもよい。即ち、CPU22は、通常時に処理を行い、CPU22の演算器で実行できない態様の命令群が発行された場合に、CPU22の演算器で実行できない命令に応じた演算器が、最小セット演算器11により動的に構成されてよい。そして、CPU22の演算器で処理できない命令は、このようにして最小セット演算器11により構成された演算器により実行される。
 具体例として、例えば図17に示すように、加算命令の命令1,2,3が同時に発行されたが、CPU22内に加算器が2個しかない場合は、本来であれば、命令3のパイプラインがストールし、待ち状態が発生する。これに対して、本例では、図18に示すように、CPU22が保有している演算器以上の命令が同時に発行されたことが分かった時点で、最小セット演算器11を用いて加算器を生成し、ストールを回避する。尚、図18に示す例では、命令1及び命令2については、CPU22が保有している演算器(2個の加算器)により実行され、命令3については最小セット演算器11で構成された加算器により実行される。図18に示す例においても、この最小セット演算器11による加算器の結線及び構成された加算器による演算は、DCのクロックの発生時(t4)までに完了するように構成される(この構成の詳細は、後述する)。
 次に、最小セット演算器11による演算器の生成(結線)及び生成された加算器による演算を、遅くともDCのクロックの発生時(即ち、演算結果を記憶する処理のためのクロック発生時)までに完了させるための構成(特に、クロック生成回路12の構成及び機能)について説明する。
 図19は、クロック生成回路12の構成の一例(第1の遅れ防止方法)を示す図である。クロック生成回路12は、発信回路13と、第1の逓倍回路15と、第2の逓倍回路17とを含む。発信回路13には、外部に設けられる発信子14が接続される。尚、発信子14は、動的再構成プロセッサ1,2,3の内部に設けられてもよい。発信回路13の出力は、第1の逓倍回路15に接続される。第1の逓倍回路15の出力は、第2の逓倍回路17に接続される。実施例1,2による動的再構成プロセッサ1,2の場合、第1の逓倍回路15の出力は、CPU10に接続される。実施例3による動的再構成プロセッサ3の場合、第1の逓倍回路15の出力は、CPU10及びCPU22に接続される。
 第1の逓倍回路15は、典型的にはPLL(Phase Locked Loop)で構成され、発信回路13で励起したクロック源信号の周波数forg(内部クロック周波数)を逓倍する。即ち、fPLL1=d×forg。ここで、fPLL1は、第1の逓倍回路15からのクロックCLK1の周波数を表し、dは定数である。尚、第1の逓倍回路15は、低周波数の場合は省略されてもよいが、一般的に、数十MHz以上の場合は、発信回路13により励起される周波数を逓倍して使用するために必要とされる。
 第1の逓倍回路15の出力は、CPU10(又はCPU10及びCPU22)に入力され、メインクロックであるクロックCLK1として機能する。
 第2の逓倍回路17は、典型的にはPLLで構成され、第1の逓倍回路15の出力であるクロックCLK1の周波数を逓倍(本例では、2逓倍)する。即ち、fPLL2=2×fPLL1。これにより、クロックCLK1に同期したクロックCLK2であって、クロックCLK1の周波数の2倍の周波数のクロックCLK2が生成される。クロックCLK2は、CPU10に入力される。尚、第2の逓倍回路17は、第1の逓倍回路15と並列に設けられてもよい。この場合、第2の逓倍回路17は、発信回路13で励起したクロック源信号の周波数forg(内部クロック周波数)を、第1の逓倍回路15に対して2倍の係数dで逓倍する。即ち、fPLL2=2×d×forg。
 図20は、図19に示すクロック生成回路12により実現される遅れ防止機能(第1の遅れ防止方法)の原理を示す図である。図20には、クロックCLK1の波形と共に1つのサイクル処理(フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB))が時系列で示されている。図20において、t=1~7は、命令1のIFのクロックを1番目として何番目のクロックかを表す。また、図20には、クロックCLK2の波形と共に、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)の各処理のタイミングが示されている。また、図20には、デコード(ID)における命令の理解が完了したタイミングが矢印で示されている。
 フェッチ(IF)、デコード(ID)、データキャッシュ(DC)、ライトバック(WB)の各工程は、クロックCLK1に基づいて実行される。即ち、フェッチ(IF)、デコード(ID)、データキャッシュ(DC)、ライトバック(WB)の各工程は、それぞれ、クロックCLK1の立ち上がりエッジ(t=1,2,4,5)で開始される。
 他方、本実施例では、エクゼキュート(EX)は、最小セット演算器11による演算器の生成(結線)及び生成された加算器による演算の2つの処理を含むため、本来であれば、CLK1の2クロックが必要である。しかしながら、図21に対照的に示すように、エクゼキュート(EX)にCLK1の2クロックを与えると、その分だけ(CLK1の1ブロック分だけ)データキャッシュ(DC)、ライトバック(WB)の各工程が遅れることになる。
 そこで、図19及び図20に示す例では、最小セット演算器11による演算器の生成処理(結線情報に基づく結線)、及び、最小セット演算器11により生成された演算器による演算処理は、クロックCLK1を2逓倍したクロックCLK2に基づいて実行される。これにより、図20に示すように、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)用のクロックCLK1の立ち上がりエッジ(t=4)までに完了することができる。即ち、逓倍クロックを用いて演算器生成及び演算を高速に行うことで、図21に示すような遅れが発生することなく、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程を実現することができる。
 尚、以上の図20の説明は、実施例1,2、3による動的再構成プロセッサ1,2、3におけるCPU10の動作に関する。実施例3による動的再構成プロセッサ3におけるCPU22の動作は、通常通りであってよい。即ち、動的再構成プロセッサ3におけるCPU22では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程は、通常通り、クロックCLK1に基づいて実行される。
 図22は、クロック生成回路12の構成のその他の一例(第2の遅れ防止方法)を示す図である。図22に示すクロック生成回路12は、図19に示した例に対して、第2の逓倍回路17に代えて位相調整回路18を備える点が主に異なる。他の構成は同様であってよい。
 位相調整回路18は、第1の逓倍回路15の出力であるクロックCLK1の位相を所定位相量だけずらしたクロックCLK2を生成する。所定位相量は、デコード(ID)の処理に要する時間(実処理時間)の最長時間(考えられうるワースト時間)ΔTに基づいて設定される。所定位相量は、デコード(ID)の最長時間ΔT(図23参照)よりも長くクロックCLK1の1クロック分の時間よりも短い時間に相当する位相範囲内で決定されてもよい。但し、好ましくは、所定位相量は、最小セット演算器11による演算器の生成処理(演算器生成)が可能な限り早く開始できるように、デコード(ID)の最長時間ΔTに相当する位相に設定される。ここでは、所定位相量は、デコード(ID)の最長時間ΔTに相当する位相に設定された場合を想定して説明を続ける。
 図23は、図22に示すクロック生成回路12により実現される遅れ防止機能(第2の遅れ防止方法)の原理を示す図である。図23には、クロックCLK1の波形と共に1つのサイクル処理(フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB))が時系列で示されている。図23において、t=1~7は、命令1のIFのクロックを1番目として何番目のクロックかを表す。また、図23には、クロックCLK2の波形と共に、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)の各処理のタイミングが示されている。また、図23には、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程に要する時間(実処理時間)の最長時間が示されている。また、デコード(ID)における命令の理解が完了したタイミング(最も遅い場合のタイミング)が矢印で示されている。尚、上述のデコード(ID)の最長時間ΔTは、デコード(ID)用のクロックCLK1の立ち上がりエッジ(t=2)から命令の理解が完了したタイミングまでの最長時間である。
 フェッチ(IF)、デコード(ID)、データキャッシュ(DC)、ライトバック(WB)の各工程は、同様に、クロックCLK1に基づいて実行される。他方、図22及び図23に示す例では、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)の各処理は、クロックCLK1の位相をずらしたクロックCLK2に基づいて実行される。即ち、最小セット演算器11による演算器の生成処理(演算器生成)は、クロックCLK2に基づいて、命令の理解が完了したタイミングで実行開始され、従って、デコード(ID)用のクロックCLK1の立ち上がりエッジ(t=2)の次の立ち上がりエッジ(t=3)よりも前に実行開始される。また、最小セット演算器11により生成された演算器による演算処理(演算)は、次のクロックCLK2の立ち上がりエッジで実行開始される。これにより、図23に示すように、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)用のクロックCLK1の立ち上がりエッジ(t=4)までに完了することができる。即ち、2相クロックを用いることで、図21に示すような遅れが発生することなく、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程を実現することができる。
 尚、以上の図23の説明は、実施例1,2、3による動的再構成プロセッサ1,2、3におけるCPU10の動作に関する。実施例3による動的再構成プロセッサ3におけるCPU22の動作は、通常通りであってよい。即ち、動的再構成プロセッサ3におけるCPU22では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)の各工程は、通常通り、クロックCLK1に基づいて実行される。後述の図24、25の説明についても同様である。
 ところで、クロックCLK1の1クロック分の時間(即ち周期)とデコード(ID)の最長時間ΔTとの関係や、最小セット演算器11による演算器の生成処理(演算器生成)に要する時間、最小セット演算器11により生成された演算器による演算処理(演算)に要する時間等によっては、上述の第1及び第2の遅れ防止方法によっては遅れを防止できない場合も生じうる。かかる場合には、第1及び第2の遅れ防止方法を組み合わせたり、及び/又は、第1の遅れ防止方法において3逓倍以上の逓倍を行ったりすることで、遅れを防止することができる。
 例えば、図24に示すように、図23に示す例よりもデコード(ID)の最長時間ΔTが長い場合には、その分だけクロックCLK1に対するクロックCLK2の位相ずれ量が大きくなり、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)用のクロックCLK1の立ち上がりエッジ(t=4)までに完了することができなくなる。この場合は、例えば図25に示すように、第1及び第2の遅れ防止方法を組み合わせることで、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)用のクロックCLK1の立ち上がりエッジ(t=4)までに完了することができる。
 以上、本発明の好ましい実施例について詳説したが、本発明は、上述した実施例に制限されることはなく、本発明の範囲を逸脱することなく、上述した実施例に種々の変形及び置換を加えることができる。
 例えば、上述した実施例では、2つのクロックCLK1、CLK2を用いて、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)を、データキャッシュ(DC)の開始時までに完了させている。しかしながら、3つ以上のクロックを用いてもよい。例えば、クロックCLK1に対して異なる位相ずれた2つのクロックを生成し、それぞれのクロックに基づいて、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)のそれぞれを、実施してもよい。
 また、上述した実施例では、最小セット演算器11によるエクゼキュート(EX)は、最小セット演算器11による演算器の生成処理(演算器生成)及び最小セット演算器11により生成された演算器による演算処理(演算)の2つの処理に分離されている。しかしながら、3つ以上の処理に分解してもよい。例えば、最小セット演算器11による演算器の生成処理を、更に、命令に応じた結線情報の読み出し処理と、読み出した結線情報に基づいて最小セット演算器11により演算器を生成する処理とに分解してもよい。この場合も、同様に、3相クロックを用いたり、逓倍クロックを用いたりすることで、エクゼキュート(EX)をデータキャッシュ(DC)の開始時までに完了させることができる。
 また、クロックCLK1、CLK2のそれぞれは、必ずしも常に同一周期であるクロックである必要はなく、上述のような遅れの生じないようなタイミングで各処理のトリガを与えるものであればよい。また、クロックCLK1自体が、例えば周波数スプレッダにより周波数を変動されていてもよい。
 また、上述した実施例では、フェッチ(IF)、デコード(ID)、エクゼキュート(EX)、データキャッシュ(DC)、ライトバック(WB)というサイクルで処理が実行されているが、他の形態であってよい。特に、エクゼキュート(EX)の直後の工程は任意である。また、データキャッシュ(DC)及びライトバック(WB)は、エクゼキュート(EX)での演算結果をメモリ又はレジスタファイル等に書き込む処理であればよい。また、データキャッシュ(DC)は、メモリアクセス(MA又はMEM)と称される場合もあり、呼び名は任意である。
 また、上述した実施例では、好ましい実施例として、全命令セットに対応する演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器11が動的構成演算器として使用されているが、最小セット演算器11に代えて、最小セット演算器11よりも多くのゲート又は素子を備える動的構成演算器が使用されてもよいし(図12参照)、最小セット演算器11よりも少ないゲート又は素子を備える動的構成演算器が使用されてもよい。
 1,2,3  動的再構成プロセッサ
 10  CPU
 11  最小セット演算器
 12  クロック生成回路
 13  発信回路
 14  発信子
 15  第1の逓倍回路
 17  第2の逓倍回路
 18  位相調整回路
 20  故障修復用のゲート
 22  CPU

Claims (13)

  1.  命令毎に一連の各工程を実行して各命令を実行する動的再構成プロセッサであって、
     命令に対応する演算器を動的に構成する動的構成演算器と、
     メインクロック及び前記メインクロックとは別のサブクロックを生成するクロック生成回路とを備え、
     前記一連の各工程は、前記動的構成演算器を用いて命令を実行する命令実行工程を除き、前記メインクロックに基づいて開始タイミングが規定され、
     前記動的構成演算器を用いて命令を実行する命令実行工程は、命令に対応する演算器を前記動的構成演算器により動的に構成する演算器生成サブ工程と、前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程とを含み、
     前記演算器生成サブ工程及び前記演算サブ工程は、前記サブクロックに基づいて開始タイミングが規定され、
     前記サブクロックは、前記演算器生成サブ工程及び前記命令実行サブ工程が、前記命令実行工程の直後の工程の開始タイミングよりも前に完了する態様で生成されることを特徴とする、動的再構成プロセッサ。
  2.  前記命令実行工程の直後の工程の開始タイミングは、前記命令実行工程の直前の工程の開始タイミングに対して前記メインクロックの2クロック後に規定される、請求項1に記載の動的再構成プロセッサ。
  3.  前記サブクロックは、前記メインクロックを逓倍したクロック、前記メインクロックの位相をずらしたクロック、又は、前記メインクロックの位相をずらし且つ逓倍したクロックである、請求項1に記載の動的再構成プロセッサ。
  4.  前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える、請求項1に記載の動的再構成プロセッサ。
  5.  前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器からなり、
     前記最小セット演算器を用いてシングルスレッドで動作する、請求項1に記載の動的再構成プロセッサ。
  6.  前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器を複数個備え、
     各最小セット演算器を利用して並列処理又はパイプライン処理を行う、請求項1に記載の動的再構成プロセッサ。
  7.  再構成不能な演算器を更に備え、
     命令に応じて、前記動的構成演算器と前記再構成不能な演算器とを使い分け、
     前記再構成不能な演算器を用いて命令を実行する命令実行工程は、前記メインクロックに基づいて開始タイミングが規定される、請求項1に記載の動的再構成プロセッサ。
  8.  比較的高い頻度で発生する所定の命令に対しては、前記再構成不能な演算器を用い、比較的低い頻度で発生する命令に対しては、前記動的構成演算器を用いる、請求項7に記載の動的再構成プロセッサ。
  9.  同一命令が、該命令に対応する前記再構成不能な演算器の数よりも多い命令数で同時に発行された場合に、前記再構成不能な演算器の数の命令に対しては、前記再構成不能な演算器を用い、前記再構成不能な演算器の数よりも多い分の命令に対しては、前記動的構成演算器を用いる、請求項7に記載の動的再構成プロセッサ。
  10.  前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲート又は素子を備える最小セット演算器からなり、
     前記最小セット演算器のゲート又は素子に故障が発生した場合に使用される故障補修用ゲート又は故障補修用素子を更に備える、請求項1に記載の動的再構成プロセッサ。
  11.  前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限のゲートを、NAND,NOR,NOTのゲート単位で備える最小セット演算器からなり、
     前記記演算器生成サブ工程は、前記NAND,NOR,NOTのゲート単位で結線を行うことで、前記命令に対応する演算器を動的に構成する、請求項1に記載の動的再構成プロセッサ。
  12.  前記動的構成演算器は、前記演算器生成サブ工程で生成されうる全ての演算器を生成可能な最小限の素子を、PchMOSFET及びNchMOSFETレベルの素子単位で備える最小セット演算器からなり、
     前記記演算器生成サブ工程は、前記PchMOSFET及びNchMOSFETレベルの素子単位で結線を行うことで、前記命令に対応する演算器を動的に構成する、請求項1に記載の動的再構成プロセッサ。
  13.  命令を取り出すフェッチ工程と、取り出した前記命令をデコードするデコード工程と、エクゼキュート工程と、データキャッシュ工程とを含むプロセッサの動作方法であって、
     前記エクゼキュート工程は、前記命令に対応する演算器を動的に構成する演算器生成サブ工程及び前記演算器生成サブ工程で構成した演算器により前記命令に対応した演算を行う演算サブ工程を含み、
     当該方法は、
     前記メインクロックで規定される第1のタイミングで前記フェッチ工程を実行し、
     前記メインクロックで規定される第2のタイミングで前記デコード工程を実行し、
     前記メインクロックで規定される第3のタイミングに代えて、前記メインクロックとは別のサブクロックで規定される第1のタイミングで、前記演算器生成サブ工程を実行すると共に、前記サブクロックで規定される第2のタイミングで、前記演算サブ工程を実行し、
     前記メインクロックで規定される第4のタイミングで前記データキャッシュ工程を実行することを特徴とする、方法。
PCT/JP2010/056227 2010-04-06 2010-04-06 動的再構成プロセッサ及びその動作方法 WO2011125174A1 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
DE112010005459T DE112010005459T5 (de) 2010-04-06 2010-04-06 Dynamisch rekonfigurierbarer prozessor und verfahren zum betreiben desselben
JP2012509223A JPWO2011125174A1 (ja) 2010-04-06 2010-04-06 動的再構成プロセッサ及びその動作方法
US13/635,307 US20130013902A1 (en) 2010-04-06 2010-04-06 Dynamically reconfigurable processor and method of operating the same
PCT/JP2010/056227 WO2011125174A1 (ja) 2010-04-06 2010-04-06 動的再構成プロセッサ及びその動作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2010/056227 WO2011125174A1 (ja) 2010-04-06 2010-04-06 動的再構成プロセッサ及びその動作方法

Publications (1)

Publication Number Publication Date
WO2011125174A1 true WO2011125174A1 (ja) 2011-10-13

Family

ID=44762161

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2010/056227 WO2011125174A1 (ja) 2010-04-06 2010-04-06 動的再構成プロセッサ及びその動作方法

Country Status (4)

Country Link
US (1) US20130013902A1 (ja)
JP (1) JPWO2011125174A1 (ja)
DE (1) DE112010005459T5 (ja)
WO (1) WO2011125174A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9778312B1 (en) * 2013-10-16 2017-10-03 Altera Corporation Integrated circuit calibration system using general purpose processors
GB2526018B (en) 2013-10-31 2018-11-14 Silicon Tailor Ltd Multistage switch

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06195149A (ja) * 1992-10-23 1994-07-15 Matsushita Electric Ind Co Ltd 集積回路
JPH08202549A (ja) * 1995-01-30 1996-08-09 Mitsubishi Electric Corp データ処理装置
JPH1185507A (ja) * 1997-09-05 1999-03-30 Mitsubishi Electric Corp 中央処理装置およびマイクロコンピュータシステム
JP2004005739A (ja) * 1999-08-30 2004-01-08 Ip Flex Kk データ処理装置の制御方法
JP2006178653A (ja) * 2004-12-21 2006-07-06 Ip Flex Kk データ処理システムおよびその制御方法
JP2008539485A (ja) * 2005-04-28 2008-11-13 ザ ユニバーシティ コート オブ ザ ユニバーシティ オブ エディンバラ 再構成可能命令セル・アレイ
JP2009140353A (ja) * 2007-12-07 2009-06-25 Toshiba Corp 再構成可能な集積回路、及びこれを用いた自己修復システム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07175631A (ja) 1993-12-16 1995-07-14 Dainippon Printing Co Ltd 演算処理装置

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06195149A (ja) * 1992-10-23 1994-07-15 Matsushita Electric Ind Co Ltd 集積回路
JPH08202549A (ja) * 1995-01-30 1996-08-09 Mitsubishi Electric Corp データ処理装置
JPH1185507A (ja) * 1997-09-05 1999-03-30 Mitsubishi Electric Corp 中央処理装置およびマイクロコンピュータシステム
JP2004005739A (ja) * 1999-08-30 2004-01-08 Ip Flex Kk データ処理装置の制御方法
JP2006178653A (ja) * 2004-12-21 2006-07-06 Ip Flex Kk データ処理システムおよびその制御方法
JP2008539485A (ja) * 2005-04-28 2008-11-13 ザ ユニバーシティ コート オブ ザ ユニバーシティ オブ エディンバラ 再構成可能命令セル・アレイ
JP2009140353A (ja) * 2007-12-07 2009-06-25 Toshiba Corp 再構成可能な集積回路、及びこれを用いた自己修復システム

Also Published As

Publication number Publication date
US20130013902A1 (en) 2013-01-10
DE112010005459T5 (de) 2013-01-31
JPWO2011125174A1 (ja) 2013-07-08

Similar Documents

Publication Publication Date Title
US10564980B2 (en) Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US10469397B2 (en) Processors and methods with configurable network-based dataflow operator circuits
US10417175B2 (en) Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10515046B2 (en) Processors, methods, and systems with a configurable spatial accelerator
EP3449357B1 (en) Scheduler for out-of-order block isa processors
US8473880B1 (en) Synchronization of parallel memory accesses in a dataflow circuit
US20190004878A1 (en) Processors, methods, and systems for a configurable spatial accelerator with security, power reduction, and performace features
US20200004538A1 (en) Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US20220100680A1 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
US8281113B2 (en) Processor having ALU with dynamically transparent pipeline stages
JP5231800B2 (ja) 半導体集積回路装置および半導体集積回路装置のクロック制御方法
US8977835B2 (en) Reversing processing order in half-pumped SIMD execution units to achieve K cycle issue-to-issue latency
US20230325195A1 (en) Replicating logic blocks to enable increased throughput with sequential enabling of input register blocks
US20070005942A1 (en) Converting a processor into a compatible virtual multithreaded processor (VMP)
KR20070107814A (ko) 의존성 명령을 패킷으로 그룹핑하여 실행하는 프로세서 및방법
JP2007299355A (ja) マイクロプロセッサ
US11907713B2 (en) Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US20240004663A1 (en) Processing device with vector transformation execution
WO2011125174A1 (ja) 動的再構成プロセッサ及びその動作方法
Saghir et al. Datapath and ISA customization for soft VLIW processors
Bansal Reduced Instruction Set Computer (RISC): A Survey
Iyer et al. Extended split-issue: Enabling flexibility in the hardware implementation of nual VLIW DSPs
US9141392B2 (en) Different clock frequencies and stalls for unbalanced pipeline execution logics
JP6060853B2 (ja) プロセッサおよびプロセッサの処理方法
Ho Dynamical Synthesized Execution Resources (DySER) Deisgn Specification

Legal Events

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

Ref document number: 10849418

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2012509223

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 13635307

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 1120100054592

Country of ref document: DE

Ref document number: 112010005459

Country of ref document: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10849418

Country of ref document: EP

Kind code of ref document: A1