WO2004025468A1 - 半導体装置 - Google Patents
半導体装置 Download PDFInfo
- Publication number
- WO2004025468A1 WO2004025468A1 PCT/JP2002/009437 JP0209437W WO2004025468A1 WO 2004025468 A1 WO2004025468 A1 WO 2004025468A1 JP 0209437 W JP0209437 W JP 0209437W WO 2004025468 A1 WO2004025468 A1 WO 2004025468A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- software
- register
- drc
- instruction
- driver
- Prior art date
Links
- 239000004065 semiconductor Substances 0.000 title claims abstract description 25
- 238000012545 processing Methods 0.000 claims description 34
- 238000000034 method Methods 0.000 claims description 12
- 238000012546 transfer Methods 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 10
- 239000000872 buffer Substances 0.000 description 18
- 238000003860 storage Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 239000012536 storage buffer Substances 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000002360 preparation method Methods 0.000 description 5
- 230000008602 contraction Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- MHABMANUFPZXEB-UHFFFAOYSA-N O-demethyl-aloesaponarin I Natural products O=C1C2=CC=CC(O)=C2C(=O)C2=C1C=C(O)C(C(O)=O)=C2C MHABMANUFPZXEB-UHFFFAOYSA-N 0.000 description 1
- 241000233805 Phoenix Species 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
- G06F9/381—Loop buffering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/325—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent 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/3897—Concurrent 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
Definitions
- the present invention relates to a configuration of a semiconductor device equipped with a dynamically rewritable circuit
- DRC rewrite data is created in advance when creating software for an application. By rewriting the DRC with the DRC rewrite data, the DRC functions as a dedicated circuit for a specific application.
- Software executed by a general-purpose processor includes DRC rewrite data and a rewrite instruction. include.
- the inventor of the present application prepares DRC using DRC rewrite data and driver / software in advance according to the chip configuration as in the prior art described above, and executes a DRC rewrite instruction and DRC rewrite data in software.
- DRC digital versatile computer
- the inventor of the present application prepares DRC using DRC rewrite data and driver / software in advance according to the chip configuration as in the prior art described above, and executes a DRC rewrite instruction and DRC rewrite data in software.
- the software could not be executed on a chip with a different DRC configuration. This limits the range of software that can be applied depending on the configuration of the DRC, which means that although the processor software has the same instruction set, the software cannot be used due to the different configuration of the DRC. Things will happen.
- An object of the present invention is to provide a semiconductor integrated circuit device capable of ensuring software compatibility irrespective of a configuration of a DRC while improving a processing capability using a DRC. Disclosure of the invention
- a semiconductor device for executing software including an operation instruction, comprising a plurality of operation cells and a plurality of register cells, an operation type executed by the operation cell, a plurality of operation cells, and a wiring connection between the plurality of register cells.
- An arithmetic circuit that can set the operation type, setting data to set the operation type and wiring connection of the operation cell based on the software, and driver and software for performing processing equivalent to software using the arithmetic circuit
- the operation type includes a logical operation such as a logical sum, a logical product, and an exclusive logical sum that can be executed by a cell operation, an arithmetic operation such as addition, subtraction, multiplication, and division, and a comparison operation.
- driver software can be generated on the semiconductor device, and compatibility of the software can be ensured. Furthermore, by creating the driver software while the software is running, high-speed processing using arithmetic circuits can be performed without the user having to know the overhead of creating the driver software. Will be possible.
- a semiconductor device for executing software including an operation instruction, comprising: a register, an operation unit, a plurality of operation cells and a plurality of register cells, the operation type executed by the operation cell, the plurality of operation cells, and An arithmetic circuit capable of setting wiring connections between multiple register cells, a first memory area for storing software, and a dry memory for performing processing equivalent to software using the arithmetic circuit. And a control circuit for controlling the software to be executed.
- the software-to-your process is repeated n times, from the first time to the i-th time (i ⁇ n).
- the processing is performed by executing the software read from the first memory using the register and the arithmetic unit, and the control circuit receives the i-th processing and executes the software to be executed by the driver.By switching to the software, the processes from the (i + 1) th to the nth times are performed by executing the driver software read from the second memory area using the arithmetic circuit. Software compatibility can be ensured by storing such software and driver software in separate memory areas, and by switching between software and driver software by a control circuit.
- Such a configuration is particularly effective for software that is repeated a plurality of times (for example, software that forms a loop), and such a loop is a process that often appears in image processing and audio processing.
- FIG. 1 is a block diagram showing a configuration of a semiconductor integrated circuit device of the present invention. '.
- FIG. 2 is a diagram illustrating timings of generation and execution of the DRC driver SW.
- FIG. 3 is a block diagram showing a configuration example of the DRC.
- FIG. 4 is a block diagram showing a configuration example of an input / output register 'cell IOR' which is a component of the DRC.
- FIG. 5 is a block diagram showing a configuration example of an operation cell CC which is a component of the DRC.
- FIG. 6 is a block diagram showing a configuration example of a rewrite determination unit CDU.
- FIG. 7 is a flowchart showing the operation of the rewrite determination cutout CDU.
- Fig. 8 (A) shows the normal SW
- Fig. 8 (B) shows the normal SW cut out from the normal SW by the HWZSW generation unit GU
- Fig. 8 (C) shows the DRC created by the HW / SW generation unit GU.
- Driver SW shows the operation list of the instructions in the program.
- FIG. 9 is a flowchart showing the operation of the HW / SW generation unit GU.
- FIG. 10 is an example of a CD FG.
- FIG. 11 is an example of a CDFG subjected to a contraction process.
- Fig. 12 is an example of a CDFG that has been scheduled using the ALAP (As Late As Possible) algorithm.
- Fig. 13 shows an example of a CDFG that was further scheduled using the ASAP (As Soon As Possible) algorithm.
- FIG. 14 is a block diagram showing another configuration of the semiconductor integrated circuit device of the present invention.
- FIG. 15 is a block diagram showing still another configuration of the semiconductor integrated circuit device of the present invention. Best mode for carrying out the invention
- the present invention provides a method for executing a part of application software on a DRC from application software executed on a general-purpose processor without using a DRC (hereinafter, such software is usually referred to as “SWJ”).
- DRC driver SW DRC driver software
- DRC driver SW DRC driver software
- the example in Fig. 8 (A) is a part of a program for fast Fourier transform. Fast Fourier transform is a process often used in multimedia processing.
- the program in Fig. 8 (A) is described by the instruction set of a general-purpose processor. The meaning of each instruction in the program is shown in Fig. 8 (D). It is clear from the following description that the instruction set used in FIG. 8 is an example, and the present invention is not limited to the instruction set.
- the DRC executes a soft-to-air portion (loop) of the normal SW that is repeatedly executed. This is because the DRC driver SW is usually generated automatically during sv execution, so the software section that is executed multiple times It would be more efficient to have the DRC execute the minutes.
- the programs from the 4th line to the 18th line are targeted (Fig. 8 (B)).
- the DRC rewrite data and the DRC driver SW are generated based on the normal SW of FIG. 8 (B).
- the DRC rewrite data is data for setting the DRC so that the DRC executes the operation executed by the program in FIG. 8 (B).
- the DRC driver SW is a program that executes instructions that cannot be executed by the DRC in the normal SW program, inputs data from the general-purpose processor to the DRC, and returns the result executed by the DRC to the general-purpose processor. is there. Therefore, the general-purpose processor uses the general-purpose register GR and the arithmetic unit ALU as shown in Fig. 8.
- FIG. 1 shows the configuration of the LSI chip 100 of the present invention.
- the LSI chip 100 has a bus state 'controller BSC, a direct memory access controller DMAC, an on-chip memory OCM, a DRC driver SW storage memory DSM, an instruction cache ICH, and a data cache. ⁇ Cache DCH, cache control unit CCN, and CPU 101.
- the CPU 101 is composed of the DRC control unit 102, the instruction buffer IBF, the instruction fetch unit IFU, the selector SEL, the instruction decoder IDC, the general-purpose register GR, the arithmetic unit ALU, and the DRC. Is done.
- the DRC control unit 102 includes a rewrite determination unit CDU and a hardware / software generation unit GU (hereinafter, referred to as an HW / SW generation unit).
- the instruction executed by the CPU 101 is stored in the instruction cache ICH, and the instruction is fetched according to the instruction load signal of the unit IFU.
- the instruction stored in ICH is transferred to the instruction buffer IBF.
- the rewrite determination unit CDU always monitors instructions transferred from the instruction cache ICH to the instruction buffer IBF.
- the rewrite determination unit CDU detects the conditional branch instruction BF and cuts out the software part shown in Fig. 8 (B) as a candidate program to be executed by DRC based on it. Store.
- the rewrite determination unit CDU instructs the HW / SW generation unit GU to create the DRC rewrite data, rewrite the DRC, and create the DRC driver SW.
- the HW / SW generation unit GU generates DRC rewrite data from the cut-out program and rewrites the DRC.
- a DRC driver SW for using the rewritten DRC is generated, and the generated DRC driver SW is stored in the driver SW storage memory DSM.
- the HWZSW generation unit GU notifies the rewrite determination unit CDU of the end and the start address where the DRC driver SW is stored.
- the SW is stored in the on-chip 'memory OCM' or the external memory 'chip EXTM'.
- the execution of the program by the CPU 101 is as follows. This will be described with reference to the example of FIG.
- the normal SW in Fig. 8 (A) is executed as it is.
- the rewrite judgment unit CDU replaces the instruction that is being executed by the normal SW transferred from the instruction cache ICH to the instruction buffer IBF with the DRC driver SW.
- the instruction fetch instruction Selector SEL is switched via unit IFU
- the instruction input to the instruction decoder IDC is switched from the instruction buffer IB to the judgment unit CDU.
- the instruction that converted the branch destination address of the conditional branch instruction into the head address stored in the DRC driver SW is output to the instruction decoder IDC via the selector SEL.
- the rewrite determination unit CDU switches the selector SEL via the instruction fetch unit IFU to determine the instruction input to the instruction decoder I DC from the determination cut CDU. Switch to instruction buffer IBF.
- the DRC driver SW is executed thereafter.
- the last instruction of the DRC driver SW is an unconditional branch instruction (line 15 in Fig. 8 (C)) to the address where the instruction following the extracted normal SW is stored. Return to normal SW execution.
- the instruction is stored in the instruction cache ICH by the cache controller CCN in response to the execution of the instruction decoder IDC.
- the cache '' controller C CN is a module on the processor bus PRCB, the on-chip memory OCM and the direct memory '' access.
- the controller DMA C and the bus '' controller BSC external memory chip EXTM
- One of the features is that it is configured to be able to execute memory access to driver SW storage memory DSM in addition to the above case.
- Fig. 2 shows the timing of generation and execution of the DRC driver SW.
- the normal SW is executed, and the program in the instruction fetch unit IFU. If a conditional branch to the address before the address of the currently executing instruction stored in the counter occurs (Fig. 8 (A ) In line 18), the rewrite decision cut CDU tentatively determines that there is usually a loop in the SW.
- the rewrite judgment unit CDU sets the instruction cache I CH
- the instruction fetched from the buffer to the instruction buffer IBF, that is, the instructions in Fig. 8 (A) from line 4 to line 18 are acquired and stored.
- the HWZSW generation GU performs the DRC rewrite data, the DRC driver SW, and the rewrite of the DRC in the third loop. Since the DRC can be used in the third loop, the CPU 101 executes the DRC driver SW for the fourth and subsequent loops instead of the arithmetic unit ALU. To do. If the rewriting of the DRC does not end during the execution of the third loop, the CPU 101 executes the normal SW until the end of the loop including the time when the rewriting of the DRC ends.
- FIGS. Figure 3 shows the internal structure of the DRC.
- the wiring program element 206 includes a switch element for determining the connection between the wirings in the wiring area 205 and a storage element (not shown) for storing the ON / OFF state of these switch elements.
- a register specification signal is input from the instruction decoder IDC to the register specification input port 201, and one input / output register cell IORC is selected. Data is input from the data input port 200 and input only to the selected I / O register 'cell IORC'.
- a register specification signal is input to the register specification input port 201 from the instruction decoder IDC.
- the output selector OSEL is switched, and the output of one input / output register / cell IORC is selected.
- the data enters the output selector OSEL from the cell output line 20'4a, and only the selected data is output from the data output port 202.
- FIG. 4 shows the configuration of the input / output register cell IORC of FIG. I / O register •
- Cell IORC is composed of input selector ISEL and cell register CR.
- the input selector I SEL switches to input from the cell input line 203 a from the wiring or from the data input port 200 according to the input from the register designated input port 201.
- the data input via the input selector ISEL is held in the cell register CR.
- the cell register CR operates in synchronization with the clock input 301 and is reset by the reset input 302. Note that the clock and reset wiring is omitted in FIG. 3, but is connected to all input / output registers / cells I ORC and operation cells CC.
- the data held in the cell.register CR is output to the outside through the cell output line 204a.
- data is input / output in units of 8 bits, but the size is not limited to this.
- the operation cell CC includes a cell operation unit CALU, a flip-flop FF, and an operation program element 400.
- the cell operation unit C ALU has the same function as the ALU in the CPU, and sets which operation function is to be used by the operation program element 400.
- Cell operation unit C ALU can be executed from logical operations such as OR, AND, and exclusive OR, arithmetic operations such as addition, subtraction, multiplication and division, and comparison operations.
- Operation unit C Set the operation to be performed by the ALU.
- the setting of the operation program element 400 of the operation cell CC allows the content of the operation of the operation cell CC to be determined. Also, depending on the setting of the wiring program element 206, what data is input to the input / output register 'cell I ORC, operation cell CC, and the operation of the input / output register' cell I ORC data or operation cell CC You can set where to output the results. As described above, the DRC rewrite data includes the set value of the operation program element 400 and the set value of the wiring program element 206, and enables a desired operation.
- Fig. 6 shows the configuration of the rewrite determination unit CDU
- Fig. 7 shows the operation of the rewrite determination unit CDU.
- the rewrite determination unit CDU is composed of a branch address storage buffer B AB, a loop counter LC, an instruction address determination unit I ADU, a DRC status register DSR, a normal SW-time storage buffer TBF, and a branch controller BCL.
- the DRC status register DSR contains a part that indicates the state of the HW / SW generation unit GU, a part that stores the branch address to the DRC driver SW, and an instruction following the normal SW that is replaced with the DRC driver SW. It consists of three parts, one for storing an address.
- the instruction sent from the instruction cache ICH to the instruction buffer IBF is taken into the instruction address determination unit IADU (500).
- the instruction address determination unit I ADU fetches the address in the instruction fetch, the program in the unit IFU, and the address in the counter PC, and the address of the currently executing instruction is the driver SW storage memory DSM. It is determined whether or not the area corresponds to the dress area (501).
- the DRC driver SW is currently running. You. At this time, if the loop counter LC is a value other than 0, (502) the instruction on the first line of the DRC driver SW (ie, the MOV instruction on the first line in FIG. 8 (C)), Is reset to 0, and the branch controller BCL causes the selector SEL to switch to the instruction buffer IBF side. If the loop counter LC is 0, do nothing. The loop counter LC normally holds the number of loops executed continuously in the SW, and is reset by the reset signal.
- Instruction address determination unit I ADU determines whether the instruction is a conditional branch instruction. If the value of the loop counter L C at this time is 1 instead of a conditional branch instruction, the second loop is being executed. Therefore, to obtain the normal SW (see Fig. 2), the instruction address determination unit IADU stores the instruction in the normal SW-time storage buffer TBF.
- the instruction address determination unit I ADU checks the DRC status register DSR.
- the DRC status register DSR stores the first register indicating the DRC status and the branch address to the DRC driver SW (for example, the address where the MOV instruction in the first row in FIG. 8 (C) is stored). And a third address for storing the next address of the normal SW that can be switched to the DRC driver SW (for example, L 003 in FIG. 8 (A): (line 19)).
- the first register stores one of three states, “not available for DRC”, “preparing for DRC use”, and “ready for DRC use”.
- the branch controller BCL selects the selector 3 £ 1:] via the instruction fetch 'unit I11]. Switch to the CDU so that the output from the rewrite decision unit CDU is connected to the instruction decoder IDC. Then, send the branch instruction 3 ⁇ 4r with the branch destination address of the branch instruction changed to the first address of the DRC driver SW in the driver SW storage memory DSM.
- the instruction address determination unit IADU compares the current program counter PC with the branch destination address (513). If the branch destination address is larger, there is no loop, so the loop counter LC is set to 0 (514). If the program .counter PC is larger, the instruction address determination unit IADU compares the branch address stored in the branch address buffer BAB with the branch destination of the branch instruction.
- the branch address buffer B AB is a buffer for overwriting and saving the branch destination address when a branch instruction is executed.
- the processing proceeds to the processing of generating the DRC rewrite data and the DRC driver SW. Specifically, 1 is added to the loop 'counter (509), and if the value is 2 (5 1 0), the instruction address determination unit I ADU' transfers the branch instruction to the normal SW-time storage buffer TB F And the value obtained by incrementing the current PC value by one (for example, the address of L 003 in FIG. 8 (A): (line 19)) is assigned to the third register of the DRC status register DSR. , HW / S A start signal for DRC use preparation is sent to the W generation unit GU (5 1 1).
- the instruction address determination unit I ADU substitutes 1 for the loop counter LC and clears the normal SW temporary storage buffer TBF collectively.
- the instructions in the first to the 17th lines in FIG. 8 (A) have the loop counter LC set to 0, and nothing is executed in the flow in FIG. 1
- the loop counter LC is set to 1 (508), and the branch destination address (line 4) is overwritten by the branch address / no buffer B AB .
- each instruction in the fifth to the 17th lines is stored in the normal SW-time storage buffer TBF since the loop counter LC is 1 (504).
- the conditional branch instruction BF on the 18th line is fetched, the address of the branch destination matches the address stored in the branch address buffer B AB (507), so that the loop counter LC is set to 2 ( 509), the conditional branch instruction BF is sent to the normal SW-time storage buffer TBF, and the HWZSW generation unit GU starts preparation for DRC use (510, 5111).
- the instructions in lines 5 to 17 do not execute anything in the flow of FIG. 7 because the loop counter LC is 2. If the conditional branch instruction BF on line 18 is fetched and the DRC is ready for use, the branch destination address of the branch instruction is changed to the start address of the DRC driver SW (Fig. 8 (C) Line 1 ), The subsequent execution of the loop is performed using the DRC. In executing the DRC driver SW, the JMP instruction (line 15 in Fig. 8 (C)) branches to L003 of the normal SW (line 19 in Fig. 8 (A)), and executes the normal SW. Return to.
- the HWZSW generation unit GU receives the instruction from the rewrite determination unit CDU, obtains the normal SW (Fig. 8 (B)) from the normal SW-time storage buffer TBF, and stores it in the first register of the DRC status register DSR. Enters the value of "DRC in preparation" (600).
- the HWZSW generation unit GU first creates a CDFG (Control Data Flow Graph) as shown in FIG. 10 from the acquired normal SW (601).
- CDFG Control Data Flow Graph
- each input instruction in the normal SW is represented by a node (instruction), and the data dependency of the instruction operand is represented by an edge (arrow).
- edge arrow
- the numbers in parentheses of the blocks in FIG. 10 indicate the corresponding number of lines in FIG. 8 (B).
- Fig. 10 shows a CDFG created directly from the normal SW shown in Fig. 8 (B).
- the “control dependency” is a dependency when the value of the register R0 is set by, for example, a DT instruction, and the conditional branch instruction BF is executed according to the value of the register R0. This depends on the instruction set of the general-purpose processor, and it is necessary to register the dependencies in advance.
- the “dependency on data” is a dependency in which, for example, an operation is performed by SUB using data transferred by the MOV instruction. Therefore, it is necessary to make decisions based on the content of the program.
- Operands that do not have a dependency with the operands of other instructions are placed at the top, and placed at the bottom according to the dependencies.
- the “data dependency” is specifically determined as follows.
- Fig. 8 (B) The operands of the instructions in the second to fourth lines and the tenth line are located in the same column because they have no dependency on the operands of the instructions preceding them.
- “Volume V @ R6, R2j” means “transfer data stored in the address indicated by register R6 to register R2”.
- the MOV instruction in which the value to the right of the operand contains @ is an instruction to read data from a register from outside, and the operand with @ is the first occurrence in Fig. 8 (B).
- Data dependencies are at the top of the list.
- the instruction "MUL" on the fifth line uses the data in the registers R2 and R3, and therefore has a dependency on the instructions on the third and fourth lines.
- the instruction on the seventh line is for transferring the data of the register MACL to the register R7 because the execution result of "Phoenix" is input to the register MACL.
- CDFG can be created by setting a dependency with the instruction having a common register name in the operand among the instructions executed before that instruction.
- a common register name in the operand among the instructions executed before that instruction.
- the CDFG in Fig. 11 is a contraction of the CDFG in Fig. 10.
- the reduction has the effect of simplifying the circuit configuration of the DRC and enabling high-speed operation in the DRC.
- the first form of reduction is to reduce two instructions at 701 (Fig. 10) to one instruction at 801 (Fig. 11).
- the STS instruction is an instruction that transfers data between registers without performing any arithmetic processing. Such a transfer is an instruction that is necessary for the configuration of the instruction set when it is processed by a general-purpose processor, but when it is processed by the DRC, the register and the operation cell that store the necessary data are stored directly. Therefore, there is no need to reflect such an instruction in the configuration of the DRC.
- the first contraction can be performed by registering such an instruction for transferring data between registers in advance as an instruction to be contracted.
- the second form of contraction is to reduce 702 four instructions (FIG. 10) to 802 three instructions (FIG. 11).
- processing is performed in chronological order, so even if register names are different, the contents may be the same.
- it is only necessary to connect the register storing the necessary data and the operation cell, and it is not necessary to reflect such a difference in the register name in the configuration of the DRC. . Therefore, for operation instructions (MUL, ADD, and SUB instructions in the example in Fig. 8), the data contents of the registers are compared, and if the same data is stored in different registers, Try to reduce.
- the operands of the SUB instruction on the eighth line and the ADD instruction on the first line are common to the register R7, and differ between the registers R1 and R3.
- the contents stored in any of the registers are “the data stored in the address indicated by the register R4”, so that the above-described reduction is possible.
- the HWZSW generation unit GU assigns each node of the CDFG shown in Fig. 11 created in step 601 to each node in consideration of scheduling, that is, hardware and resource constraints. To run Lock Cycle assignment (602).
- FIGS. 12 and 13 show examples of applying the A LAP algorithm and the ASP algorithm together to the CD FG shown in FIG. 11 as one of the scheduling methods.
- the ALAP (As Late As Possible) algorithm is a scheduling that packs simultaneously executable instructions.
- the first instruction that cannot be executed at the same time is an instruction that has interdependencies.
- Fig. 13 shows the application of the AS SAP (As Soon As Possible) algorithm that packs simultaneously executable instructions from the scheduling in Fig. 12 from the front. Whenever possible, advance the cycle in which instructions are executed so that processing time can be spared.
- AS SAP As Soon As Possible
- Instructions included in one cycle can be executed in one clock cycle, and all instructions can be executed in eight clock cycles of cycles 1 to 8.
- the HW / SW generation unit GU generates DRC rewrite data from the scheduled CD FG shown in FIG. Specifically, it is as follows. Damage the node part to the input / output register ⁇ cell IORC and operation cell CC. Input / output register and cell IORC are assigned for MOV instruction, and operation cell CC is assigned for operation instruction. According to the contents of the operation instruction, the setting data of the operation program element 400 for setting the operation contents of the operation cell is created. Also, since the edge of the CDFG indicates the flow of data, the wiring program element is arranged so that the input / output register, cell IORC and operation cell CC are wired to each other according to the edge connection relationship of the CDFG. Create the setting data of 206 (603). The setting data of the operation program element 400 and the wiring program element 2 The setting data of 06 is the DRC rewrite data.
- the HWZSW generation unit GU rewrites the operation program element 303 and the wiring program element 206 of the DRC according to the DRC rewrite data (604). At the same time, the DRC driver SW is created (605).
- the DRC driver SW shown in Fig. 8 (C) is generated from the CDF G in Fig. 13.
- the instruction “M0V @ R6, R3” in the third row of FIG. 8 (B) is an instruction to “transfer the data stored in the address indicated by the general-purpose register R6 to the general-purpose register R3”.
- the instruction “M0VR6, dR6” in the first row of FIG. 8 (C) is provided. This instruction means "transfer the data (address) stored in the general-purpose register R6 to the DRC I / O register ⁇ cell dR6.”
- Such instructions are provided in the first to third rows of FIG. 8 (C).
- an unconditional branch instruction JMP (Fig. 8 (C), line 15) to the address following the conditional branch instruction in the normal SW is provided.
- the branch destination of this unconditional branch instruction is the address stored in the third register of the DRC status register.
- the DRC driver SW shown in FIG. 8C can be generated based on the scheduled CDFG shown in FIG. Considering that external factors such as cache misses and interrupts are excluded, the original normal SW required 14 cycles to execute the loop one time, whereas the core part of the loop (Fig. 8) It can be executed in eight cycles (line 5 to line 12 of (C)).
- the created DRC driver SW is stored in the driver SW storage memory DSM.
- the storage location is the first address of the driver SW storage memory DSM for the first time, and thereafter it is written after the previously written part. If the area to be written is not enough, write again from the first address of the driver SW storage memory DSM.
- step 605 the HW / SW generation unit GU Write the value of “Ready to use DRC” to the first register of the C status register DSR, and write the first address of the memory where the DRC driver SW created in step 605 is stored to the second register of the DRC status register DSR. (606). '
- the difference from the operation shown in Fig. 1 is that access to the input / output register of the DRC and the cell I ⁇ RC is performed by specifying an address.
- an input / output register of the DRC such as [MOV R6 dR6] in the first row of the DRC driver SW in Fig. 8 (C).
- An instruction accessing the cell I ORC is sent directly to the processor path P by the DRC. Because it is connected to RC B, the address of the I / O register.cell IORC is not specified directly but indirectly. For example, the address is specified as [M0VR6 @ R12]. This instruction means that the data in the general-purpose register R6 is transferred to the input / output register cell I ORC indicated by the general-purpose register R12.
- the DRC can be used by accessing the I / O register cell I ORC on the DRC. In this case, different processes can be executed simultaneously by the D'RC and the CPU 101.
- FIG. 1 Another modification of the configuration in FIG. 1 will be described with reference to FIG.
- This configuration example is different in that the function of the DRC control unit 102 shown in FIG. 1 is realized by a DRC control dedicated processor DCP.
- the functions of the DRC control unit 102 are implemented by the processor dedicated to DRC control DCP, the operations of the internal rewrite determination unit CDU and the HWZ SW generation unit GU are realized by software. Therefore, it is possible to easily update the DRC control unit 102 simply by replacing the software of the DCC dedicated processor DCP, and to improve the performance of the present LSI even after manufacturing the LSI chip using the present technology.
- the configuration shown in FIG. 14 and the configuration shown in FIG. 15 can be implemented in combination.
- the present invention can be variously modified.
- the normal SW to be executed may be preliminarily executed, and the DRC rewrite data and the DRC driver SW may be registered in advance. In this case, it is not necessary to generate the DRC rewrite data and the DRC driver SW during the execution of the normal SW, so that the arithmetic processing using the DRC can be performed from the second loop.
- the configuration of the present invention in a semiconductor device g on which a processor and a DRC are mounted, it is possible to automatically generate DRC rewrite data and a DRC driver SW from software. With this configuration, even when the DRC is used, there is no need to write a dedicated program corresponding to the DRC, and software compatibility can be maintained. So, Softu By maintaining air compatibility, existing software assets can be diverted and processors that function at least with the same instruction set can use the same software. Industrial availability
- the present invention is particularly effective for software that is repeated a plurality of times (for example, software that forms a loop), and such a loop is a process that often appears in image processing / audio processing.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
- Stored Programmes (AREA)
- Microcomputers (AREA)
- Executing Machine-Instructions (AREA)
Description
Claims
Priority Applications (6)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP02770197A EP1550950A4 (en) | 2002-09-13 | 2002-09-13 | SEMICONDUCTOR DEVICE |
JP2004535852A JPWO2004025468A1 (ja) | 2002-09-13 | 2002-09-13 | 半導体装置 |
CNA028293924A CN1639690A (zh) | 2002-09-13 | 2002-09-13 | 半导体装置 |
US10/522,712 US20050272197A1 (en) | 2002-09-13 | 2002-09-13 | Semiconductor device |
PCT/JP2002/009437 WO2004025468A1 (ja) | 2002-09-13 | 2002-09-13 | 半導体装置 |
TW091132079A TWI249130B (en) | 2002-09-13 | 2002-10-29 | Semiconductor device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2002/009437 WO2004025468A1 (ja) | 2002-09-13 | 2002-09-13 | 半導体装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2004025468A1 true WO2004025468A1 (ja) | 2004-03-25 |
Family
ID=31986105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2002/009437 WO2004025468A1 (ja) | 2002-09-13 | 2002-09-13 | 半導体装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20050272197A1 (ja) |
EP (1) | EP1550950A4 (ja) |
JP (1) | JPWO2004025468A1 (ja) |
CN (1) | CN1639690A (ja) |
TW (1) | TWI249130B (ja) |
WO (1) | WO2004025468A1 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006031127A (ja) * | 2004-07-12 | 2006-02-02 | Fujitsu Ltd | 再構成可能な演算装置 |
JP2011186850A (ja) * | 2010-03-09 | 2011-09-22 | Fujitsu Semiconductor Ltd | データ処理システム及びその制御方法 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5971214B2 (ja) * | 2013-08-16 | 2016-08-17 | 富士ゼロックス株式会社 | データ処理装置及びデータ処理プログラム |
JP6713410B2 (ja) * | 2016-11-21 | 2020-06-24 | 日立オートモティブシステムズ株式会社 | 電子制御装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001068994A (ja) * | 1999-08-25 | 2001-03-16 | Fuji Xerox Co Ltd | 情報処理システムおよび情報処理方法 |
JP2002175183A (ja) * | 2000-12-06 | 2002-06-21 | Matsushita Electric Ind Co Ltd | 半導体集積回路 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5752035A (en) * | 1995-04-05 | 1998-05-12 | Xilinx, Inc. | Method for compiling and executing programs for reprogrammable instruction set accelerator |
US6112020A (en) * | 1996-10-31 | 2000-08-29 | Altera Corporation | Apparatus and method for generating configuration and test files for programmable logic devices |
EP1059580A1 (de) * | 1999-06-10 | 2000-12-13 | Siemens Aktiengesellschaft | Programmgesteuerte Einheit |
US6438737B1 (en) * | 2000-02-15 | 2002-08-20 | Intel Corporation | Reconfigurable logic for a computer |
US6766406B1 (en) * | 2001-10-08 | 2004-07-20 | Lsi Logic Corporation | Field programmable universal serial bus application specific integrated circuit and method of operation thereof |
JP3940668B2 (ja) * | 2002-12-05 | 2007-07-04 | 株式会社東芝 | 論理回路設計方法、論理回路設計プログラムおよび論理回路設計装置 |
FR2850768B1 (fr) * | 2003-02-03 | 2005-11-18 | St Microelectronics Sa | Dispositif electronique configurable a granularite mixte |
-
2002
- 2002-09-13 US US10/522,712 patent/US20050272197A1/en not_active Abandoned
- 2002-09-13 JP JP2004535852A patent/JPWO2004025468A1/ja not_active Withdrawn
- 2002-09-13 EP EP02770197A patent/EP1550950A4/en not_active Withdrawn
- 2002-09-13 CN CNA028293924A patent/CN1639690A/zh active Pending
- 2002-09-13 WO PCT/JP2002/009437 patent/WO2004025468A1/ja not_active Application Discontinuation
- 2002-10-29 TW TW091132079A patent/TWI249130B/zh not_active IP Right Cessation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2001068994A (ja) * | 1999-08-25 | 2001-03-16 | Fuji Xerox Co Ltd | 情報処理システムおよび情報処理方法 |
JP2002175183A (ja) * | 2000-12-06 | 2002-06-21 | Matsushita Electric Ind Co Ltd | 半導体集積回路 |
Non-Patent Citations (1)
Title |
---|
See also references of EP1550950A4 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006031127A (ja) * | 2004-07-12 | 2006-02-02 | Fujitsu Ltd | 再構成可能な演算装置 |
US7774580B2 (en) | 2004-07-12 | 2010-08-10 | Fujitsu Limited | Array processor having reconfigurable data transfer capabilities |
JP4594666B2 (ja) * | 2004-07-12 | 2010-12-08 | 富士通株式会社 | 再構成可能な演算装置 |
JP2011186850A (ja) * | 2010-03-09 | 2011-09-22 | Fujitsu Semiconductor Ltd | データ処理システム及びその制御方法 |
Also Published As
Publication number | Publication date |
---|---|
CN1639690A (zh) | 2005-07-13 |
JPWO2004025468A1 (ja) | 2006-01-12 |
US20050272197A1 (en) | 2005-12-08 |
EP1550950A1 (en) | 2005-07-06 |
TW200406701A (en) | 2004-05-01 |
TWI249130B (en) | 2006-02-11 |
EP1550950A4 (en) | 2007-03-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3714598B2 (ja) | マルチスレッド式プロセッサでのスレッド優先順位の変更 | |
JP4006180B2 (ja) | マルチスレッド式プロセッサでスレッド切替えイベントを選択するための方法および装置 | |
US9690581B2 (en) | Computer processor with deferred operations | |
JP3595504B2 (ja) | マルチスレッド式プロセッサにおけるコンピュータ処理方法 | |
WO2008145653A1 (en) | Scheduling threads in a processor | |
CA2019299C (en) | Multiprocessor system with multiple instruction sources | |
US20030120882A1 (en) | Apparatus and method for exiting from a software pipeline loop procedure in a digital signal processor | |
US6178499B1 (en) | Interruptable multiple execution unit processing during operations utilizing multiple assignment of registers | |
US6986028B2 (en) | Repeat block with zero cycle overhead nesting | |
US20030120900A1 (en) | Apparatus and method for a software pipeline loop procedure in a digital signal processor | |
US7516311B2 (en) | Deterministic microcontroller context arrangement | |
US20030120905A1 (en) | Apparatus and method for executing a nested loop program with a software pipeline loop procedure in a digital signal processor | |
WO2004025468A1 (ja) | 半導体装置 | |
JP4800582B2 (ja) | 演算処理装置 | |
Hollingsworth et al. | The Clipper processor: Instruction set architecture and implementation | |
US6993674B2 (en) | System LSI architecture and method for controlling the clock of a data processing system through the use of instructions | |
US7562207B2 (en) | Deterministic microcontroller with context manager | |
US5761492A (en) | Method and apparatus for uniform and efficient handling of multiple precise events in a processor by including event commands in the instruction set | |
US20030120899A1 (en) | Apparatus and method for processing an interrupt in a software pipeline loop procedure in a digital signal processor | |
KR102379886B1 (ko) | 벡터 명령 처리 | |
KR100631396B1 (ko) | 반도체장치 | |
JPH0384632A (ja) | データ処理装置 | |
US20030182511A1 (en) | Apparatus and method for resolving an instruction conflict in a software pipeline nested loop procedure in a digital signal processor | |
US20020129229A1 (en) | Microinstruction sequencer stack | |
WO2007039837A2 (en) | Implied instruction set computing (iisc) / dual instruction set computing (disc) / single instruction set computing (sisc) / recurring multiple instruction set computing (rmisc) based computing machine / apparatus / processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A1 Designated state(s): CN JP KR US |
|
AL | Designated countries for regional patents |
Kind code of ref document: A1 Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR IE IT LU MC NL PT SE SK TR |
|
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
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: 2004535852 Country of ref document: JP |
|
WWE | Wipo information: entry into national phase |
Ref document number: 1020057001422 Country of ref document: KR |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2002770197 Country of ref document: EP Ref document number: 10522712 Country of ref document: US Ref document number: 20028293924 Country of ref document: CN |
|
WWP | Wipo information: published in national office |
Ref document number: 1020057001422 Country of ref document: KR |
|
WWP | Wipo information: published in national office |
Ref document number: 2002770197 Country of ref document: EP |
|
WWW | Wipo information: withdrawn in national office |
Ref document number: 2002770197 Country of ref document: EP |