WO2007060932A1 - 動的再構成論理回路を有するマルチスレッドプロセッサ - Google Patents

動的再構成論理回路を有するマルチスレッドプロセッサ Download PDF

Info

Publication number
WO2007060932A1
WO2007060932A1 PCT/JP2006/323177 JP2006323177W WO2007060932A1 WO 2007060932 A1 WO2007060932 A1 WO 2007060932A1 JP 2006323177 W JP2006323177 W JP 2006323177W WO 2007060932 A1 WO2007060932 A1 WO 2007060932A1
Authority
WO
WIPO (PCT)
Prior art keywords
thread
cell
calculation
configuration
computation
Prior art date
Application number
PCT/JP2006/323177
Other languages
English (en)
French (fr)
Inventor
Masaki Maeda
Hideshi Nishida
Yorihiko Wakayama
Original Assignee
Matsushita Electric Industrial Co., Ltd.
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 Matsushita Electric Industrial Co., Ltd. filed Critical Matsushita Electric Industrial Co., Ltd.
Priority to US12/093,884 priority Critical patent/US7949860B2/en
Priority to JP2007546441A priority patent/JP5096923B2/ja
Publication of WO2007060932A1 publication Critical patent/WO2007060932A1/ja

Links

Classifications

    • 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

Definitions

  • Multi-thread processor with dynamically reconfigurable logic
  • the present invention relates to a multi-thread processor having a reconfigurable logic circuit.
  • Recent processors for example, video processors using digital signals and plug processors installed in audio equipment, support multi-thread processing because of the need to perform a plurality of processes in parallel.
  • the multithread processor 10 and the dynamic reconfiguration arithmetic circuit 20 cooperate to realize multithread processing.
  • the configuration of the dynamic reconfiguration arithmetic circuit 20 by an interrupt from the multi-thread processor 10 instructing thread switching specifically, the configuration of the arithmetic cell 21 arranged in an array and the connection configuration between the arithmetic cells Are reconfigured for the next thread to execute and the next thread is executed.
  • each computation cell 21 reconfigures after saving the computation contents of the currently executing thread to the intermediate computation data storage register 211 in each computation cell 21.
  • the multithread processor 10 does not have to wait for the computation contents of each computation cell to be discarded or the computation of all computation cells to be completed when switching threads. Since all the computation cells can be reconfigured for the next thread, the time until the multi-thread processor 10 starts executing the next thread can be shortened, and the degradation of computation performance as a whole can be suppressed. There is an advantage.
  • Patent Document 1 Japanese Unexamined Patent Application Publication No. 2005-165961
  • the dynamic reconfiguration arithmetic circuit in order not to increase the area of the dynamic reconfiguration arithmetic circuit, if the dynamic reconfiguration arithmetic circuit does not have a storage register and is saved to an external memory or the like, the data of all arithmetic cells Since it is necessary to save at the same time, a large number of input / output ports are required and the area of the registers in the dynamic reconfiguration arithmetic circuit does not increase, but the area for the input / output ports is increased or reduced.
  • the present invention provides a multithread-compatible processor including a dynamic reconfiguration logic circuit that can suppress an increase in circuit area while suppressing performance degradation due to reconfiguration at the time of thread switching. With the goal. Means for solving the problem
  • a processor is a processor that cyclically executes a plurality of threads for the time allotted to each thread, and includes a plurality of arithmetic cells, An arithmetic circuit that can reconfigure the cell configuration and the connection between the arithmetic cells, and the reconfiguration to reconfigure the arithmetic cell configuration and the connection between the arithmetic cell and another arithmetic cell based on the cell configuration information.
  • the configuration means the configuration information storage means for storing the cell configuration information of each calculation cell corresponding to each of a plurality of threads that repeatedly execute a different specific number of calculation cells in order, and the reconfiguration means in turn,
  • the computation cell that has completed the last computation at the time assigned to the current thread is reconfigured based on the cell configuration information of the computation cell corresponding to the next thread stored in the configuration information storage means, and sushi
  • a computing cell having a configuration corresponding to the current thread and a computing cell corresponding to the configuration of the current thread are simultaneously executed.
  • a control means for performing the operation.
  • the processor according to the present invention has the above-described configuration, so that when switching threads, the processor in order from the operation cell that has completed the operation of the currently executing thread (hereinafter referred to as “current thread”). Since the next thread is reconfigured in the configuration of the thread to be executed next (hereinafter referred to as “next thread”), the next thread is operated using the reconfigured operation cell in parallel with the execution of the current thread. The time required for thread switching can be minimized. In addition, no saving registers or input / output ports are required, and the circuit area can be minimized.
  • the processor further includes calculation result storage means for storing the calculation results of the calculation cells of the threads in different areas, and the control means sequentially executes the current thread that is being executed simultaneously.
  • the calculation result of the last calculation cell among the calculation cells to be repeatedly executed is stored in the current thread area of the calculation result storage means, and the calculation results stored in the next thread area are simultaneously executed. Let's also refer to the operation cell executed at the beginning of the next thread and execute the operation.
  • the processor further ends the last operation at the time allocated to the thread.
  • a calculation result storage means for storing the calculation result of the last calculation cell among the calculation cells that are repeatedly executed in order by the thread, and the control means is repeatedly executed in order by the current thread. Based on the calculation result of the last calculation cell among the calculation cells to be executed, the calculation cell to be executed at the beginning of the next iteration is executed, and when switching the thread, The calculation result stored in the calculation result storage means may be referred to a calculation cell to be executed at the beginning of the next thread to execute the calculation.
  • the multi-thread processor can directly acquire the operation result data having the power of the dynamically reconfigurable operation circuit, it is not necessary to write and read the operation result storage unit, and the thread execution efficiency is improved. Become. In other words, more threads can be processed in a given time.
  • the processor according to the present invention is a processor that cyclically executes a plurality of threads for the time allotted to each thread, and includes a plurality of operation cells.
  • Reconfiguration means for reconfiguring the calculation circuit, the calculation cell configuration, and the connection between the calculation cell and another calculation cell based on the cell configuration information, and different specific numbers.
  • Configuration information storage means for storing the cell configuration information of each computation cell corresponding to each of a plurality of threads that repeatedly execute the computation cells in order, and the time allocated to the current thread in the reconfiguration means in turn.
  • the computation cell that has finished the last computation in is stored in the configuration information storage means, reconfigured based on the cell configuration information of the computation cell corresponding to the next thread, and last executed in the current thread.
  • Performance After calculation end of the cell characterized in that it comprises a control means for executing the arithmetic cells of the next thread configuration.
  • the processor according to the present invention can change the configuration of the dynamic reconfiguration arithmetic circuit to the configuration for the next thread when the current thread ends when switching threads. As soon as it is finished, the next thread can start executing.
  • FIG. 1 is a diagram illustrating a configuration example of a processor 100.
  • FIG. ⁇ 2] A schematic diagram showing the configuration of the dynamic reconfiguration arithmetic circuit 2000.
  • FIG. 3 is a diagram showing one computing cell and an associated dynamic reconfiguration connection unit.
  • [4] It is a diagram showing signal lines for supplying configuration information and control signals to the operation cell, operation data selector, and output data selector.
  • FIG. 5 is a diagram showing signal lines for supplying calculation data to the calculation cell.
  • FIG. 6 is a diagram showing a data flow of thread A.
  • FIG. 7 is a diagram showing a data flow of thread B.
  • FIG. 8 is a diagram showing a data flow of thread C.
  • Fig. 9 shows a configuration and contents example of a calculation cell stage number table
  • Fig. 9 (b) shows a configuration and contents example of a thread stage number table.
  • FIG. 10 shows an example of the configuration and contents of a calculation cell configuration information table 3100, and this data is data stored in advance in the configuration information storage unit 3000.
  • FIG. 11 is a diagram showing conventional thread switching.
  • FIG. 12 is a diagram showing a calculation cell 2100 that is executed in the last cycle of time allocated to a thread.
  • FIG. 13 is a diagram showing thread switching according to the present invention.
  • FIG. 14 shows the multi-thread processor 1000 and the configuration switching unit 40 at the time of thread switching.
  • FIG. 15 is a flowchart showing processing for calculating the number of waiting cycles.
  • ⁇ 16 It is a flowchart showing the reconfiguration processing of the calculation cell and calculation source selector.
  • FIG. 17 is a transition diagram of the dynamic reconfiguration arithmetic circuit when switching from thread A to thread B.
  • FIG. 18 is a time chart showing the relationship between the control signal from the multi-thread processor 1000 or the like and the processing of the arithmetic cell or the like at the time of thread switching.
  • FIG. 19 is a time chart showing the relationship between these control signals and the processing of output data selector 2250.
  • FIG. 20 is a time chart showing the relationship between these control signals and the processing of calculation result storage unit 5000.
  • FIG. 21 is a diagram showing an area of each thread in calculation result storage unit 5000.
  • FIG. 22 is a transition diagram of the dynamic reconfiguration arithmetic circuit when switching from thread C to thread A.
  • FIG. 23 is a time chart showing the relationship between the control signal from the multithread processor 1000 or the like and the processing of the computation cell or the like when switching threads.
  • FIG. 24 is a time chart showing a thread switching schedule.
  • FIG. 25 shows an example of instructions related to the calculation result storage unit 5000.
  • FIG. 26 shows an example of an operation instruction from the multi-thread processor 1000 to the dynamic reconfiguration arithmetic circuit 2000
  • FIG. 26 (b) shows an operation result read to the operation result storage unit 5000. This is an example of issuing instruction.
  • Fig.27 is an example of a program with only Rcn—exe instruction and Rcn—rd instruction in thread A, and FIG.27 (b) is between Rcn—exe instruction and Rcn—rd instruction. This is an example of a program in which 4 cycles of calculation instructions are inserted.
  • FIG. 28 is a time chart showing a thread switching schedule in which no waiting cycle period occurs.
  • FIG. 30 is a functional block diagram showing the configuration of the dynamically reconfigurable logic circuit device 200 in Embodiment 3 of the present invention.
  • FIG. 31 is a functional block diagram showing a configuration of the dynamically reconfigurable logic circuit device 300 according to the fourth embodiment of the present invention.
  • FIG. 32 A diagram showing a mobile communication device equipped with a processor of the present invention.
  • FIG. 33 is a conventional example of a multi-thread processor including a dynamic reconfiguration arithmetic circuit. Explanation of symbols
  • the processor according to the present invention is a processor that supports multi-thread processing including a dynamic reconfiguration arithmetic circuit, and reconfigures the dynamic reconfiguration arithmetic circuit to the configuration for the thread each time a thread is executed.
  • the dynamic reconfiguration arithmetic circuit includes a plurality of arithmetic cells, and the dynamic reconfiguration arithmetic circuit is reconfigured by reconfiguring the configuration of the arithmetic cells.
  • the operation cells that have completed the operation are sequentially reconfigured and executed, instead of reconfiguring all the operation cells for the next thread at the same time. It is a spider.
  • the current thread which is the thread before switching
  • the next thread which is the thread after switching
  • the processor of this embodiment is a multi-thread processor, and as a method for realizing multi-thread, a round-robin method in which each task is executed in order for a certain time is assumed.
  • a thread inputs data to the dynamic reconfiguration arithmetic circuit, executes a specific number of arithmetic cells in a predetermined order, and outputs the results (hereinafter also referred to as a “loop”). Repeat.
  • the number of computation cells required for this series of processing is called the number of computation stages.
  • the output result is read by the multi-thread processor via the operation result storage unit, and new data is input to the dynamic reconfiguration operation circuit.
  • the threads of this embodiment have different numbers of operation stages. Therefore, the maximum number of loops that can be executed in parallel in each thread differs depending on the number of arithmetic cells constituting the dynamically reconfigurable arithmetic circuit. Note that the actual number of loops executed depends on the processing content of the thread.
  • FIG. 1 is a diagram illustrating a configuration example of the processor 100.
  • the processor 100 includes a multi-thread processor 1000, a dynamic reconfiguration arithmetic circuit 2000, a configuration information storage unit 3000, a configuration switching unit 4000, and an operation result storage unit 5000.
  • the multi-thread processor 1000 is a so-called multi-thread processor that can execute a plurality of different processes in a time-sharing manner. It performs calculations in cooperation with the dynamic reconfiguration arithmetic circuit 2000 and executes thread processing. Specifically, when performing processing of a certain thread, the multi-thread processor 1000 configures a dynamic reconfigurable arithmetic circuit for the thread, and repeatedly performs processing of arithmetic cells for the number of arithmetic stages.
  • the multi-thread processor 1000 has a function of determining and executing a thread to be executed next. Specifically, the configuration switching unit 4000 detects that the thread is switched by a timer interrupt that notifies the end of the time allocated to the thread and reconfigures the dynamic reconfiguration arithmetic circuit 2000 for the next thread. Give instructions. At this time, the current thread and the next thread are notified.
  • the detection at the time of thread switching is detected based on the data transfer completion signal of the data transfer controller DMAC (Direct Memory Access Controller) or the calculation end signal of another processor or hardware logic. It may be what you do. In this case, the time allocated to the thread will be described below.
  • DMAC Direct Memory Access Controller
  • the dynamic reconfiguration arithmetic circuit 2000 is an arithmetic circuit that includes a plurality of arithmetic cells 2100 arranged in an array and can change the configuration of each arithmetic cell and the connection configuration between the arithmetic cells. . That is, the configuration of each arithmetic cell is reconfigured so as to perform a predetermined operation, and the connection configuration is reconfigured so that each arithmetic cell inputs predetermined data. Reconfigure the circuit to perform processing. Details will be described later with reference to FIGS.
  • the configuration information storage unit 3000 has a function of storing configuration information for reconfiguring the dynamic reconfiguration arithmetic circuit 2000 into a desired circuit. In addition, it has a function of receiving necessary instructions from the configuration switching unit 4000 and sequentially supplying the configuration information to the dynamic reconfiguration arithmetic circuit 2000.
  • the configuration information in the present embodiment is stored for each thread and is stored for each calculation cell. Details will be described later with reference to FIG.
  • the configuration switching unit 4000 has a function of sequentially reconfiguring the dynamic reconfiguration arithmetic circuit 2000 for the next thread in response to an instruction from the multi-thread processor 1000.
  • the reconfiguration is performed by the configuration switching unit 4000 by controlling the operation result storage unit 5000, the dynamic reconfiguration operation circuit 2000, and the configuration information storage unit 3000.
  • the calculation result storage unit 5000 has a function of storing the calculation result output from the dynamic reconfiguration calculation circuit 2000.
  • the calculation result is stored for each thread, and the calculation result for each thread is a result of one loop of each thread and is read out by the multithread processor 1000.
  • data is written and read by the multi-thread processor 1000 at each loop. Also, it is read and used when time is reassigned to the relevant thread and thread processing continues.
  • the calculation result storage unit 5000 is notified of the current thread and the next thread from the configuration switching unit 4000, and changes the write area from the dynamic reconfiguration arithmetic circuit 2000 and the read area from the multi-thread processor 1000. To do.
  • FIG. 2 is a schematic diagram showing the configuration of the dynamic reconfiguration arithmetic circuit 2000.
  • the dynamic reconfiguration arithmetic circuit 2000 includes a plurality of arithmetic cells (2100a to 2100p) and a dynamic reconfiguration connection unit 2200 that connects the arithmetic cells.
  • the arithmetic cell 2100a is referred to as “arithmetic cell a”
  • the arithmetic cell 2100b is referred to as “arithmetic cell b”
  • the calculation cell 2100 refers to one calculation cell.
  • necessary calculation data is passed from the multi-thread processor 1000 to the calculation cell 2100 and the like via the dynamic reconfiguration connection unit 2200.
  • the arithmetic cell 2100 can perform multiplication, shift, addition, and logical operation, and performs an operation with the set configuration information.
  • the period required for one operation of the dynamically reconfigurable operation cell 2100 is one cycle of the processor.
  • the period required for reconfiguration is one cycle of the processor.
  • FIG. 3 is a diagram showing one computing cell and an associated dynamic reconfiguration connection unit 2200.
  • a pair of calculation cells 2100, a calculation source selector 2210, and an output data selector 2250 are shown.
  • the dynamic reconfiguration connection unit 2200 includes an arithmetic source selector 2210 that is paired with the arithmetic cell 2100, that is, the same number of arithmetic source selectors 2210 as the arithmetic cell 2100, one output data selector 2250, and a multi-thread processor. It consists of data wiring from 1000 and wiring between operation cells.
  • Control signal from configuration switching section 4000 and configuration information from configuration information storage section 3000 are input to calculation cell 2100, calculation source selector 2210, and output data selector 2250, respectively. Thereby, each arithmetic cell 2100 and the like can be switched in configuration at different timings.
  • the calculation source selector 2210 inputs calculation data that is the calculation result of another calculation cell 2100, selects one calculation data from the calculation data, and outputs the calculation data to a pair of calculation cells 2100. Note that the calculation cells a to d in the first stage select one calculation data among the calculation data from the other calculation cells 2100 and the calculation data from the multi-thread processor 1000.
  • calculation cell 2100 outputs the calculation data of the calculation result to the calculation source selector 2210 of another calculation cell 2100.
  • the lowermost computation cell m to computation cell p output computation data to the other computation cell 2100 and the output data selector 2250.
  • the output data selector 2250 selects operation data that requires both the operation cell force and the input operation data force, and outputs the operation data to the operation result storage unit 5000.
  • the configuration switching signal line 4000 and the configuration information transfer signal line from the configuration information storage unit 3000 are connected to the configuration switching unit 4000, which is the same as the computation cell 2100.
  • the configuration switching unit 4000 which is the same as the computation cell 2100.
  • FIG. 4 is a diagram showing signal lines for supplying configuration information and control signals to the computation cell, computation data selector, and output data selector
  • FIG. 5 is a diagram showing signal lines for supplying computation data.
  • the configuration switching unit 4000 outputs the control signal power to the calculation cell a to the calculation cell p, the calculation source selector a to the calculation source selector p, and the output data selector 2250, respectively, and the configuration information storage unit 3000. Will output the configuration information.
  • the same control signal and the same configuration information are input to the calculation cell 2100 and the operation source selector 2210 that form a pair.
  • the same configuration information is simultaneously sent from the configuration information storage unit 3000 to all the arithmetic cells 2100 and the like.
  • Each computation cell 2100, each computation source selector 2210, and output data selector 2250 read configuration information and perform reconfiguration according to a control signal sent from the configuration switching unit 4000.
  • the configuration switching unit 4000 causes the configuration information storage unit 3000 to output the configuration information of the computation cell whose configuration is to be changed, and at the same time, only the computation cell whose configuration is to be changed is instructed to be reconfigured. Send an instruction to do. Receiving the reconfiguration instruction, the computation cell reads the configuration information and reconfigures.
  • FIG. 5 shows the flow of calculation data.
  • Each calculation cell 2100 receives calculation data as a calculation result from the calculation source selector 2210 of the calculation cell in the next stage and the calculation source of the adjacent calculation cell. Output to selector 2210.
  • the computation cell b outputs the computation data to the computation source selector f, the computation source selector a, and the computation source selector c.
  • the calculation source selector 2210 selects one of a plurality of input calculation data and outputs the selected calculation data to a pair of calculation cells. For example, the computation source selector f selects one of the computation data sent from the computation cell b, the computation cell e, and the computation cell g, and outputs it to the computation cell f. The calculation cell f performs a calculation based on the calculation data output from the calculation source selector f.
  • calculation data is selected by the calculation source selector 2210 depends on the configuration of the calculation source selector 2210. For example, if the calculation source selector is configured to select the calculation data of the calculation cell g, always select the calculation data of the calculation cell g If the reconfiguration is performed, the operation data from the operation cell b or the operation cell e is selected according to the configuration.
  • the output data selector 2250 also depends on the configuration of which of the input calculation data is output to the calculation result storage unit 5000. That is, the calculation data output to the calculation result storage unit 500 00 is not limited to one, but depends on the configuration of the output data selector 2250 corresponding to the processing of the thread.
  • the calculation data is sent to the calculation source selectors of the lower and left and right calculation cells.
  • the present invention is not limited to this, and it is of course possible to send the calculation data to the calculation source selectors of other calculation cells. Good.
  • FIG. 9 data used when the processor 100 performs thread switching will be described with reference to FIGS. 9 and 10.
  • 6 to 8 are diagrams showing the data flow of each thread.
  • the calculation source selector 2210 and the output data selector 2250 are not shown, and only the flow of calculation data is shown.
  • FIG. 6 is a diagram showing a data flow of the thread A. Since the number of operation stages of thread A is “4” and the number of operation cells of the dynamic reconfiguration operation circuit 2000 is 16, it is assumed that four operation processes are performed in parallel.
  • the computation source is passed from the multithread processor 1000 to the computation cell a
  • the computation result of the computation cell a is sent to the computation cell e
  • the computation cell e performs computation based on the computation data received from the computation cell a.
  • the calculation result is sent to calculation cell i.
  • the computation cell i performs computation based on the computation data received by the computation cell e force.
  • calculation cell b from multi-thread processor 1000
  • the calculation data is passed to the calculation cell c and the calculation cell d, and processing is performed in parallel.
  • calculation results of calculation cell m, calculation cell n, calculation cell o, and calculation cell p are stored in calculation result storage unit 5 000.
  • the stored calculation result is read out by the multi-thread processor 1000 and used for calculation in the multi-thread processor 1000. It may be supplied to the arithmetic cell a or the like.
  • the multi-thread processor 1000 executes the thread A by repeating the loop of reading the operation data and performing the operation.
  • the data supplied to the calculation cell may be the read calculation data as it is or after some processing, or other data, and depends on the processing of the thread. This loop is the same for thread B and thread C.
  • FIG. 7 is a diagram showing a data flow of the thread B.
  • the number of computation stages for thread B is “8”, and two computation processes are performed in parallel.
  • the computation source is passed from the multithread processor 1000 to the computation cell a, and computation cell a ⁇ computation cell b ⁇ computation cell f ⁇ computation cell e ⁇ computation cell i ⁇ computation cell j ⁇ computation cell 11 ⁇ computation cell m Processing is performed by sending operation data. Similarly, operation data is transferred from the multithread processor 1000 to the operation cell c, and processing is performed up to the operation cell o.
  • the calculation results of the calculation cell m and the calculation cell o are stored in the calculation result storage unit 5000.
  • FIG. 8 shows the data flow of thread C.
  • the number of operation stages of thread B is “16”, and one operation process is performed.
  • Arithmetic cell is passed from multi-thread processor 1000 to arithmetic cell a, arithmetic cell a ⁇ arithmetic cell b ⁇ arithmetic cell c ⁇ arithmetic cell d ⁇ arithmetic cell h ⁇ arithmetic cell g ⁇ arithmetic cell ⁇ arithmetic cell e ⁇ arithmetic cell Processing is performed by sending operation data in the order of i ⁇ operation cell j ⁇ operation cell k ⁇ operation cell 1 ⁇ operation cell p ⁇ operation cell o ⁇ operation cell n ⁇ operation cell m.
  • the calculation result of the calculation cell o is stored in the calculation result storage unit 5000.
  • FIG. 9 The data used for thread switching when these threads A, B and C are executed cyclically will be described below with reference to FIGS. 9 and 10.
  • FIG. 9 The data used for thread switching when these threads A, B and C are executed cyclically will be described below with reference to FIGS. 9 and 10.
  • Fig. 9 (a) shows the configuration and example contents of the calculation cell stage number table
  • Fig. 9 (b) shows the thread An example of the configuration and contents of a stage number table is shown.
  • the calculation cell stage number table 4100 includes a thread ID 4110 and a calculation cell ID 4120, and indicates the number of stages 4130 of each calculation cell for each thread.
  • the thread ID 4110 is an identifier of a thread to be executed by this processor, and is “thread A”, “thread B”, and “thread C” in this embodiment.
  • the calculation cell ID 4120 is an identifier of each of the calculation cells 2100 constituting the dynamic reconfiguration calculation circuit 2000 of this processor. In this embodiment, there are sixteen calculation cells “a” to "arithmetic cell p". .
  • the number of stages 4130 of each calculation cell for each thread indicates the number of execution of the calculation cell in one loop of the corresponding thread.
  • the number is represented by “0” to “15”, and the “0” -th arithmetic cell is executed first.
  • the calculation cell number 4130 of the calculation cell ID 4120 “calculation cell b" of the thread ID 4110 “thread A” is "0", so that the calculation cell executed first in the thread A (see Fig. 6). ).
  • the calculation cell number 4130 of the calculation cell ID 4120 “calculation cell b” of the thread ID 4110 “thread B” is “1”, and the calculation cell executed second in the thread B (see FIG. 7).
  • the thread stage number table 4200 in FIG. 9B includes a thread ID 4210 and an operation stage number 4220.
  • the thread ID 4210 is the same as the thread ID 4110 in FIG.
  • the number of operation stages 4220 indicates the number of operation stages of each thread. For example, thread ID 4210 “thread A” has 4220 “4” operation stages and uses 4 operation cells in order, and thread ID 4210 “thread C” has 4220 “16” operation stages and 16 operations. Use cells in order. This order is as shown in the calculation cell stage number table 4100 (see FIG. 9A).
  • FIG. 10 shows an example of the configuration and contents of the computation cell configuration information table 3100.
  • This data is data stored in advance by the configuration information storage unit 3000.
  • the computation cell configuration information table 3100 includes a thread ID 3110 and a computation cell ID 3120.
  • a configuration information name 3130 that identifies the configuration information of each calculation cell for each thread is shown. That is, the configuration information name 3130 is an identifier of configuration information.
  • the calculation cell ID 3120 is identified by the configuration information name 3130 of "calculation cell a" to "calculation cell ⁇ ".
  • the configuration information is information for reconfiguring the calculation cell and the pair of calculation source selectors. is there.
  • calculation cell configuration information table 3100 further stores a configuration information name 3130 for specifying configuration information of the output data selector 2250 for each thread.
  • the configuration information storage unit 3000 stores all the configuration information indicated by the configuration information name 3130.
  • configuration information name 3130 of the calculation cell ID 3120 “calculation cell a” of the thread ID 3110 “thread ⁇ ” is “configuration information A0”
  • the calculation cell a and the calculation source selector a when executing the thread A are It is reconfigured with the configuration information indicated by “configuration information A0”.
  • the configuration information storage unit 3000 receives an instruction from the configuration switching unit 4000 and, based on the calculation cell configuration information data 3100, converts the configuration information indicated by the corresponding configuration information name 3130 into a dynamic reconfiguration calculation circuit. Send to 2000.
  • each computation cell 2100 of the dynamic reconfiguration arithmetic circuit 2100 performs both computation and reconfiguration in one cycle of the processor.
  • FIG. 11 is a diagram showing conventional thread switching.
  • Processor 100 cyclically executes thread A, thread B, and thread C, and each thread A dynamic reconfiguration arithmetic circuit 2000 when executing red is shown.
  • the dynamic reconfiguration arithmetic circuit 2000A is a dynamic reconfiguration arithmetic circuit 2100 at the time of executing thread A.
  • the dynamic reconfiguration arithmetic circuit 2000B and the dynamic reconfiguration arithmetic circuit 2000C are respectively This is a dynamic reconfiguration arithmetic circuit 2100 during execution of thread B and thread C.
  • Each thread 2100 of the dynamic reconfiguration arithmetic circuit 2000 indicates which thread is configured. For example, it is written under “Computation Cell a” in the Dynamic Reconfiguration Arithmetic Circuit 2000A.
  • Thread A indicates the configuration for thread A! /
  • the dynamic reconfiguration arithmetic circuit 2000A and the like are reconfigured to the dynamic reconfiguration arithmetic circuit 2000B, and the execution of the thread B is started. Therefore, the thread cannot be executed while the dynamic reconfiguration arithmetic circuit 2000A is reconfigured to the dynamic reconfiguration arithmetic circuit 2000B.
  • FIG. 12 is a diagram showing an operation cell 2100 that is executed in the last cycle of the time allocated to the thread. That is, FIG. 12 is a diagram of the dynamic reconfiguration arithmetic circuit 2000 immediately before the reconfiguration of each thread in FIG.
  • Dynamic reconfigurable arithmetic circuit 2000A hatched arithmetic cell 2100 power thread A computing cell 2100 that is executed in the last cycle of the time allocated to A.
  • the configuration arithmetic circuit 2000B and the dynamic reconfiguration arithmetic circuit 2000C are those of thread B and thread C, respectively.
  • calculation cells 2100 that are not hatched, 12 in the thread A, 14 in the thread B, and 15 in the thread C are idle.
  • the computation cell that has finished the computation in the last loop of the time allotted to the thread will be idle until the thread is terminated.
  • dynamic reconfiguration arithmetic circuit 200 For example, dynamic reconfiguration arithmetic circuit 200
  • the present invention intends to reconfigure a computation cell that has been idle at the time of thread switching for the next thread so that the processing of the next thread is performed.
  • FIG. 13 is a diagram showing thread switching according to the present invention. Reconfiguration is performed for thread B in order of the computation cell power when execution of thread A is completed.
  • the dynamic reconfiguration arithmetic circuit 2000AB while all the arithmetic cells 2100 are used for the thread B, such as the dynamic reconfiguration arithmetic circuit 2000A to the dynamic reconfiguration arithmetic circuit 2000B, There is a period in which the computation cell for thread A and the computation cell for thread B are mixed. That is, thread A and thread B are executed in parallel. Similarly, when switching from the thread B to the thread C, there is a period in which the calculation cell for the thread B and the calculation cell for the thread BC are mixed as shown in the dynamic reconfiguration arithmetic circuit 2000B C. .
  • the time between threads required for reconfiguration in FIG. 11 is unnecessary, and furthermore, the end of the current thread process overlaps with the start of the next thread process, so that the overall thread execution time is shortened. It becomes possible.
  • thread A is the current thread and thread B is the next thread.
  • the processing is described by taking as an example the process of switching from thread A with the operation stage number “4” to thread B with the operation stage number “8”.
  • FIG. 17 is a transition diagram of the dynamic reconfiguration arithmetic circuit when switching to thread A force thread B. This figure shows the transition of the dynamic reconfiguration arithmetic circuit from cycle 1 to cycle 11 when switching threads.
  • the dynamic reconfiguration arithmetic circuit C1 represents a cycle 1 circuit
  • the dynamic reconfiguration arithmetic circuit C2 represents a cycle 2 circuit.
  • “A” in the computation cell indicates a configuration for thread A
  • “B” indicates a configuration for thread B
  • “C” indicates a configuration for thread C
  • no and tching indicate execution .
  • “Reconfiguration” indicates that reconfiguration is performed for the next thread.
  • FIG. 17 is a transition diagram of the dynamic reconfiguration arithmetic circuit when switching to thread A force thread B. This figure shows the transition of the dynamic reconfiguration arithmetic circuit from cycle 1 to cycle 11 when switching threads.
  • the dynamic reconfiguration arithmetic circuit C1 represents a cycle 1 circuit
  • FIG. 18 is a time chart showing the relationship between the control signal from the multi-thread processor 1000 or the like and the processing of the computation cell or the like at the time of thread switching.
  • the 16 computation cells 2100 among the 16 computation cells 2100, only the processing of the computation cell a, the computation cell b, and the computation cell f is shown for convenience of explanation.
  • FIG. 19 is a time chart showing the relationship between these control signals and the processing of the output data selector 2250.
  • FIG. 20 is a time chart showing the relationship between these control signals and the processing of the calculation result storage unit 5000. It is.
  • FIG. 21 is a diagram showing an area of each thread in the calculation result storage unit 5000.
  • the area for thread A is 0x00 to 0x3F
  • the area for thread B is 0x0 040 to 0x5F
  • the area for thread C is 0x60 to 0x6F.
  • FIG. 14 is a flowchart showing processing of the multi-thread processor 1000 and the configuration switching unit 4000 at the time of thread switching.
  • the multi-thread processor 1000 executes the current thread, thread A, while operating the dynamic reconfiguration arithmetic circuit C1 (see FIG. 17) (step S100).
  • the multi-thread processor 1000 supplies the operation data to the operation cell a, the operation cell 1), the operation cell c, and the operation cell d.
  • Each computation cell to which computation data is input sequentially passes the computation results to the lower computation cell, and finally stores the computation results in the computation result storage unit 5000.
  • the multi-thread processor 1000 executes the thread A by reading these stored operation data at the start of the next loop, performing predetermined processing, and repeatedly supplying the operation data to the operation cell (see FIG. 6).
  • the multi-thread processor 1000 determines whether or not it is the last loop of the loop that is the repetition, that is, whether or not it is the last loop of the time given to the thread A (step S 110). ), If it is the last loop and processing of processor 100 is not finished If it is determined (step SI 10: Y, step SI 20: ⁇ ), thread switching starts.
  • step S110 If it is determined that it is not the last loop (step S110: ⁇ ), the loop of the current thread is repeated. If it is determined that the processing of the processor 10 is to be terminated (step S120
  • the multi-thread processor 1000 that has determined to start thread switching selects the next thread (step S130), and issues a switching instruction to the configuration switching unit 4000 (step S130).
  • the multi-thread processor 1000 passes the ID of the current thread and the next thread ID (step S141).
  • step S221 a processing stop signal is issued (step S221) from the configuration switching unit 4000, the processing of the next thread is not started.
  • the configuration switching unit 4000 calculates the number of waiting cycles (step S210).
  • the number of wait cycles is “0 (zero)”. Details of the processing for calculating the number of waiting cycles will be described later with reference to FIG.
  • the configuration switching unit 4000 that has calculated the number of waiting cycles waits for the calculated number of cycles (step S220). While waiting, a stop signal is issued to the multi-thread processor 1000 (step S221).
  • step S230 the reading area of the calculation result storage unit 5000 is switched to the next thread (step S230), and the calculation cell and calculation source selector are reconfigured (step S240).
  • the reconfiguration of the operation cell and the operation source selector performed by the configuration switching unit 4000 is not performed at once, but is performed by the dynamic reconfiguration operation circuit C2 to the dynamic reconfiguration operation circuit C9 in FIG. As will be done in order.
  • the reconfiguration processing of the calculation cell and calculation source selector will be described later with reference to FIG.
  • the configuration switching unit 4000 reconfigures the output data selector 2250 (step S250, FIG. 17: dynamic reconfiguration arithmetic circuit C10). .
  • step S250, FIG. 17: dynamic reconfiguration arithmetic circuit C10 The timing of the reconstruction process of this output data selector This will be described later with reference to FIG.
  • step S260 the writing area of the calculation result storage unit 5000 is switched to the next thread.
  • the multi-thread processor 1000 that has received the stop signal from the configuration switching unit 4000 stops the start of the execution of the next thread, and when the stop signal is cut off, waits for one cycle to supply the operation data of the next thread. Is started (step S100).
  • This one cycle is a cycle in which the first computation cell is reconfigured.
  • the multi-thread processor 1000 reads the calculation data for the next thread from the calculation result storage unit 5000. At the same time, the calculation result of the current thread is written into the calculation result storage unit 5000. RU The timing of the area change processing (step S230, step S260) of the calculation result storage unit will be described later with reference to FIG.
  • FIG. 15 is a flowchart showing the processing for calculating the number of waiting cycles.
  • the number of waiting cycles is the number of cycles that delays the start of switching processing so that the next thread can be executed without delay when switching threads.
  • the execution of the next thread is smoothly performed by delaying the start of the reconfiguration of the calculation cell or the like of the thread switching process. To make it possible.
  • the configuration switching unit 4000 calculates the number of waiting threads from the number of operation stages of the current thread ID and the next thread ID received when the multithread processor 1000 is also instructed to switch (see FIG. 14: step S200).
  • the number of operation stages of a thread is obtained by referring to the thread stage number table 4200 (see FIG. 9B). ) o
  • the number of operation stages 4220 is “4”.
  • N is subtracted from M to obtain “D” (step S300).
  • Step S320 When “D” is greater than 0 (zero), the number of wait cycles is D (step S320), and when “D” is 0 (zero) or less, the number of wait cycles is 0 (zero). (Step S330).
  • the number of wait cycles is 0 (zero) when switching to a thread with the same or larger number of computation stages, and when switching to a thread with a smaller number of computation stages, the difference in the number of stages is waiting.
  • the number of cycles is 0 (zero) when switching to a thread with the same or larger number of computation stages, and when switching to a thread with a smaller number of computation stages, the difference in the number of stages is waiting. The number of cycles.
  • FIG. 16 is a flowchart showing the reconfiguration processing of the calculation cell and calculation source selector.
  • the configuration switching unit 4000 selects the computation cell 2100 and the computation source selector 2210 to be reconfigured (step S400).
  • the calculation source selector here is a pair with the calculation cell.
  • the calculation cell 2100 selected first is a calculation cell whose calculation stage number 4130 of the next thread is “0 (zero)”.
  • the calculation cells selected first are calculation cell a and calculation cell c.
  • the configuration switching unit 4000 requests the configuration information storage unit 3000 to send the configuration information of the selected computation cell and computation source selector (step S410). In this case, thread ID And the calculation cell ID are notified (step S411).
  • the configuration information storage unit 3000 Upon receiving the request (step S500), the configuration information storage unit 3000 obtains the configuration information name 3130 from the notified thread ID and computation cell ID, selects configuration information that can be identified by the name (step S510), and sends it out (step S510). Step S520, Step S521).
  • the selected computation cell is computation cell a and computation source selector a
  • the configuration information of computation cell a and computation source selector a is sent (Figure 18: Configuration information of cycle C2). Signal from the memory).
  • the configuration switching unit 4000 instructs the selected computation cell and computation source selector to reconfigure (step S420, step S421).
  • the computation cell and computation source selector that have received the reconfiguration instruction receive the configuration information (step S610) and perform reconfiguration (step S620).
  • the configuration information is obtained from the signal line information of the configuration information and reconfigured (Fig. 18: computation cell a in cycle C2 and Processing of calculation source selector a , Fig. 17: Dynamic reconfiguration calculation circuit C2).
  • the reconstructed computation cell and computation source selector perform computation (step S630).
  • the reconfigured computation cell a and computation source selector a perform computation of thread B (FIG. 18: processing of computation cell a and computation source selector a in cycle C3).
  • the multi-thread processor 1000 provides operation data for thread B to the operation source selector.
  • the configuration switching unit 4000 that has issued an instruction to the configuration information storage unit 3000 and the selected calculation cell and calculation source selector reconfigures the calculation cells of all the calculation stages! /, If it is V (step S430: N), the next stage number is reconfigured (step S400). When all the operation cell stages have been reconfigured (step S430: Y), the process ends.
  • the calculation cell at the second stage that is, the calculation cell stage number table 4100, the calculation cell stage number 4130 force, the calculation cell “1”, the calculation cell b and the calculation cell d are selected.
  • reconfigured see Figure 18: Cycle C3, Figure 17: Dynamic reconfiguration arithmetic circuit C3).
  • FIG. 19 is a time chart showing the relationship between the control signal and the processing of the output data selector 2250.
  • the output data selector 2250 is reconfigured for the next thread when all the computation cells are switched for the next thread (FIG. 19: cycle C10, FIG. 14: step S240).
  • the reconfiguration procedure is the same as that of the operation cell reconfiguration shown in FIG. The following is a brief description.
  • the configuration switching unit 4000 that has determined that all the computation cells have been reconfigured for the next thread sends the configuration information of the output data selector 2250 of the next thread to the configuration information storage unit 3000. Ask. At the same time, the output data selector 2250 is instructed to reconfigure.
  • the configuration information storage unit 3000 that has received a request to send the configuration information of the output data selector 2250 of the next thread refers to the calculation cell configuration information data 3100 and sends the corresponding configuration information.
  • the output data selector 2250 inputs configuration information and performs reconfiguration.
  • the configuration information storage unit 3000 sends the configuration information, and the output data selector 2250 inputs the configuration information.
  • Reconfiguration Figure 19: Cycle C10, Figure 17: Dynamic reconfiguration arithmetic circuit C10
  • the output data selector 2250 does not perform processing during the period indicated by the dotted line (cycle C5 to cycle C9) in the “configuration for thread A” of the output data selector 2250 in FIG. Indicates that it is a period. This is because the execution result of the thread A is terminated and the operation result data is not output to the output data selector 2250.
  • FIG. 20 is a time chart showing the relationship between the control signal and the processing of the calculation result storage unit 5000.
  • the calculation result storage unit 5000 has an area reserved for each thread as shown in FIG. 21, stores the output from the output data selector 2250, and is stored in the multi-thread processor 1000. Read out.
  • the configuration switching unit 4000 issues an instruction to switch the read area for the next thread to the calculation result storage unit 5000 at the timing of reconfiguring the calculation cell of the first stage number of the next thread (FIG. 20: cycle C2). It is also the power read from the multi-thread processor 1000 in the cycle following the cycle of the first computation cell reconfiguration.
  • period indicated by the dotted line (cycle C5 to cycle C9) in the figure showing the “write for thread A” period of the operation result storage 5000 in FIG. 20 is a period in which writing by the thread A is not performed. Show me! /
  • FIG. 22 is a transition diagram of the dynamic reconfiguration arithmetic circuit at the time of switching to the thread C force thread A. This figure shows the transition of the dynamic reconfiguration arithmetic circuit from cycle 1 to cycle 19 when threads are switched.
  • the dynamic reconfiguration arithmetic circuit C1 represents a cycle 1 circuit
  • the dynamic reconfiguration arithmetic circuit C2 represents a cycle 2 circuit.
  • Figure 23 shows the control signal from the multi-thread processor 1000 etc. when switching threads. It is a time chart showing the relationship between a code
  • the difference is that the start timing of reconfiguration of the operation cell or the like is different.
  • the configuration switching unit 4000 immediately starts the reconfiguration processing of the operation cell after the switching instruction from the multi-thread processor 1000. It is also the power that the number of waiting cycles was 0 (zero).
  • the computation cell is reconfigured after waiting for the required number of cycles. In this case, even if the computation cell for which the computation of the current thread has been completed is immediately rewritten for the next thread and the computation is executed, the computation cell that passes the computation result performs the computation of the current thread. This is because there may be cases where it cannot be rewritten for use.
  • the configuration switching unit 4000 waits for these 12 cycles (Fig. 14: Step S220, Fig. 23: Cycle C2 to Cycle C13), and starts reconfiguration of operation cells, etc. (Fig. 14: Step S240, Fig. 23: Cycle C14). Reconfiguration is performed by the dynamic reconfiguration arithmetic circuit C14 to the dynamic reconfiguration arithmetic circuit C17 shown in FIG.
  • the multi-thread processor 1000 during this cycle C2 to cycle C14, It is in a state of waiting for the start of execution of the next thread, thread A (FIG. 23: cycle C2 to cycle C14).
  • FIG. Fig. 24 is a time chart showing the thread switching schedule.
  • the period 9000 of the multithread processor 1000 represents the processing period of the thread A
  • the period 9001 represents the processing period of the thread B
  • the period 9002 represents the processing period of the thread C.
  • Period 9008 is a bubble period for waiting for the completion of computation processing in the dynamically reconfigurable computation circuit 2000, that is, until computation data supply to the current thread by the multi-thread processor 1000 is completed and supply of computation data to the next thread begins.
  • Figure 22 Dynamic reconfiguration arithmetic circuit C2 to C14).
  • the period 9100a represents the processing period of the thread A of the computation cell a
  • the period 9101a represents the processing period of the thread B
  • the period 9102a represents the processing period of the thread C.
  • the period 9108a is a bubble period waiting for the completion of the arithmetic processing in the dynamic reconfiguration arithmetic circuit 2000 (FIG. 22: dynamic reconfiguration arithmetic circuits C2 to C14).
  • the period 9100m represents the processing period of the thread A of the computation cell m
  • the period 910 lm represents the processing period of the thread B
  • the period 9102m represents the processing period of the thread C.
  • the period 9109m is a bubble period waiting for the configuration change of the computation cell 2100 in the preceding stage.
  • the period 9109m at the time of switching from thread A to thread B is the period of the dynamic reconfiguration arithmetic circuits C5 to C9 shown in FIG.
  • Period 9200 represents the processing period of thread A of output data selector 2250
  • period 9201 represents the processing period of thread B
  • period 9202 represents the processing period of thread C.
  • the period 9209 is a bubble period waiting for the configuration change of the computing cell 2100.
  • a period 9209 at the time of switching from thread A to thread B is a period of the dynamic reconfiguration arithmetic circuits C5 to C10 shown in FIG. 17 (see FIG. 19: cycle C5 to cycle C10).
  • FIG. 25 shows an example of instructions related to the operation result storage unit 5000.
  • Figure 25 (a) is an example of a thread occupation area setting instruction in the operation result storage unit 5000.
  • FIG. 25 (b) is an example of a setting program for each thread area
  • FIG. 25 (c) is a setting value at the time of thread execution.
  • the "DMset" instruction in Fig. 25 (a) specifies that the thread of the thread number "The_num” uses the addresses from "St_Adr” to "Ed_Adr".
  • thread A uses addresses “0x00” through “0x3F”
  • thread B uses addresses “0x40” through “0x5F”
  • thread C uses addresses "0x60”.
  • To “0x6 F” is specified (see Figure 21).
  • FIG. 25 (c) shows an example of contents stored in the calculation result storage unit 5000 when the processor 100 starts processing such as thread A.
  • the read result (DMRA) and the write address (DMWA) of the FIFO are stored in each thread in the operation result storage unit 5000.
  • the read address from the multithread processor 1000 is the DMRA of the executing thread
  • the write address from the dynamic reconfiguration arithmetic circuit 2000 is the DMWA of the executing thread.
  • the initial values of DMR A and DMWA are set as the start address of each thread area when the program shown in Fig. 5 (b) is executed.
  • DMRA of thread A is DMRA—A
  • DMWA is DMWA—A
  • DMRA of thread B is DMRA—B
  • DMWA is DMWA—B
  • DMRA of thread C is DMRA—C
  • DMWA is DMWA—C
  • DMWA is DMWA—C
  • each thread is processed in the multithread processor 1000 and the dynamic reconfiguration arithmetic circuit 2000. If the calculation result is written to the calculation result storage unit 5000 from the dynamic reconfiguration arithmetic circuit 2000, the DMWA of each thread should be incremented!
  • DMWA DMWA + 0x01
  • W is added to DMWA. Also, when the operation result data in the operation result storage unit 5000 is read from the multithread processor 1000, DMRA should be incremented.
  • W is added to DMRA.
  • FIG. 26 (a) shows an example of an operation instruction from the multi-thread processor 1000 to the dynamic reconfiguration arithmetic circuit 2000
  • FIG. 26 (b) shows an example of an operation result read instruction for the operation result storage unit 5000. It is.
  • the “Rcn_exe” instruction in FIG. 26 (a) is an arithmetic instruction in the dynamic reconfiguration arithmetic circuit 2000, and “s rcA” and “31 ⁇ 8” designate register numbers in the multithread processor 1000.
  • This instruction executes one loop of the thread.
  • the “Rcn_rd” instruction in FIG. 26 (b) is an instruction for reading the operation result of the dynamic reconfiguration arithmetic circuit 2000, and “dstA” is a register number in the multithread processor 1000, and the operation result data is stored in the corresponding register. Is stored.
  • the operation in the dynamic reconfiguration arithmetic circuit 2000 is executed by the configuration of the executing thread by the “Rcn_exe” instruction.
  • As the operation data of the operation using the data of the register numbers specified in the "Rcn_ exe” instruction.
  • the calculation result data of the dynamic reconfiguration calculation circuit 2000 is stored at the address indicated by DMWA of the corresponding thread in the calculation result storage unit 5000.
  • the “Rcn_rd” instruction is an instruction for reading the operation data stored in the operation result storage unit 5000 to the multi-thread processor 1000, and the operation data at the address indicated by DMRA of the corresponding thread is the “Rcn_rd” instruction. Transferred to the specified register.
  • the operation result storage unit 5000 issues an operation stop signal to the multi-thread processor 1000.
  • DMRA and DMWA of the corresponding thread are the same in determining that there is no calculation data What is necessary is just to detect that it is a case.
  • the multi-thread processor 1000 reads the operation result without supplying operation data to the dynamic reconfigurable operation circuit 2000. Occur. In this case, the multi-thread processor 1000 performs an operation according to the processing of the thread, such as stopping the reading process from the calculation result storage unit and supplying another calculation data to the dynamic reconfiguration arithmetic circuit. To do.
  • the operation stop signal is released. Thereafter, the multi-thread processor 1000 reads the calculation result data stored in the calculation result storage unit 5000.
  • the calculation result data can be managed in FIFO for each thread, and it is not affected by the switching of the configuration of the dynamic reconfiguration arithmetic circuit 2000. Stored in the area.
  • the multithread processor 1000 does not need to be aware of the order of operation result storage by switching the threads of the dynamic reconfiguration operation circuit 2000, and therefore the operation result data in the desired thread. Management becomes easier.
  • the Rcn-rd instruction that obtains the result of the Rcn-exe instruction can be issued after one cycle of the number of operation stages of the dynamic reconfiguration arithmetic circuit 2000 plus one cycle.
  • a cycle corresponding to the number of operation stages is required for the calculation in the dynamic reconfiguration arithmetic circuit 2000, and one cycle is required for writing to the calculation result storage unit 5000.
  • Figure 27 (a) shows a program with only the Rcn—exe instruction and Rcn—rd instruction in thread A. Prior to the execution of this program, the operation result storage unit 5000 stores the operation result data for the thread A.
  • the thread A performs processing by repeatedly executing the Rcn-exe instruction and the Rcn-rd instruction while changing the argument.
  • the multithread processor 1000 issues the Rcn—rd instruction.
  • calculation result data is not stored in the calculation result storage means 5000 (DMWA-A and DMRA-A have the same value). Therefore, the multi-thread processor 1000 receives the calculation stop signal from the calculation result storage unit 5000 and stops processing.
  • calculation result data is stored in the calculation result storage means 5000, the value of DMWA-A increases, DMWA-A becomes different from DMRA-A, and the calculation result storage unit 500 The computation stop signal to the thread processor 1000 is released. Thereafter, the execution of the Rcn-rd instruction is resumed, and the operation result data is read from the operation result storage unit 5000.
  • the multithread processor 1000 is stopped for 4 cycles, but the program that does not stop the operation is described based on FIG. 27 (b).
  • the program in Fig. 27 (b) four cycles of operation instructions are inserted between the Rcn-exe instruction and Rcn-rd instruction in Fig. 27 (a).
  • the Add instruction is an instruction that uses a register in the multithread processor 1000 as an operation source, performs addition, and writes operation result data to a register in the multithread processor 1000.
  • the computation resource is closed in the multi-thread processor 1000 and does not use the dynamic reconfiguration arithmetic circuit 2000. One cycle is required for the Add instruction operation.
  • a wait cycle of the multi-thread processor 1000 occurs! / (See FIG. 24: period 9008).
  • the multi-thread processor 1000 is stopped with the configuration switching unit 4000 aware of this waiting cycle for smooth switching of threads.
  • this waiting cycle is recognized by the program side in the configuration switching unit 4000.
  • this waiting cycle period does not occur in the multi-thread processor 1000.
  • FIG. 28 is a time chart showing a thread switching schedule in which no waiting cycle period occurs. Compared to the schedule of Figure 24, it is the same as Figure 24 except that period 9008 has not occurred. Therefore, this embodiment is the same as the first embodiment except that the wait cycle is calculated and a stop signal is issued to the multithread processor.
  • the program executes threads with an awareness of the wait cycle period.
  • Figure 29 shows an example of the Rcn—exe instruction in the instruction specification.
  • This figure shows a calculation instruction command to the dynamic reconfiguration arithmetic circuit 2000, a data read command to the calculation result storage unit 5000, and explanation examples of each.
  • the multi-thread processor 1000 has an operation suspension period of period 9008 in the process switching from thread C to thread A (See Figure 24). This is because, when changing the configuration of the dynamic reconfiguration arithmetic circuit 2000 having a large number of operation stages to a small configuration, the issue of a new operation instruction to the dynamic reconfiguration arithmetic circuit 2000 is stopped during the configuration switching period. It is. This control is based on the configuration switching means 4000.
  • step S210 only the operation stop control from the configuration switching unit 4000 to the multi-thread processor 1000, such as step S210 in FIG. 14, is omitted (step S210 and step S22).
  • Figure 28 shows the operation scheduling in which the operation stop period of period 9008 does not occur.
  • the Rec-exe instruction to the dynamic reconfiguration arithmetic circuit 2000 is not guaranteed. It must be guaranteed by the programmer not to issue a Rec-exe instruction for a period of 9008 (D cycle).
  • the arithmetic data output from the dynamic reconfiguration arithmetic circuit 2000 is temporarily stored in the arithmetic result storage unit 5000, and the multithread processor 1000 reads the arithmetic data from the arithmetic result storage unit 5000.
  • calculation data that must be stored and stored at the minimum that is, calculation result data other than the calculation result data when the time allocated to the thread ends, is not directly stored in the calculation result storage unit 5000, but is directly It is passed to the thread processor 1000.
  • the third embodiment is different from the first embodiment in the processing and configuration output from the operation result storage unit 5000 in FIG. 1 to the multi-thread processor 1000, and the operation result selector 6000 is added. .
  • FIG. 30 shows the configuration of the dynamically reconfigurable logic circuit device 200 according to Embodiment 3 of the present invention. It is a functional block diagram. In this figure, the same components as those in FIG.
  • This calculation result selector 6000 selects calculation result data from the dynamic reconfiguration calculation circuit 2000 and the calculation result storage unit 5000 and transmits it to the multi-thread processor 1000. The control is performed from the calculation result storage unit 5000.
  • the calculation result data is transmitted to the multi-thread processor 1000 only from the calculation result storage unit 5000.
  • the operation result storage means 500 00 is always passed, a delay occurs for the cycle of writing and reading in the storage means 5000.
  • Embodiment 3 solves this problem.
  • the calculation result selector 6000 selects the data from the calculation result storage unit 5000 and has been described in the first embodiment. Processing is performed.
  • calculation data is not stored in the calculation result storage means 5000 (DMWA and D).
  • the calculation result storage unit 5000 issues a calculation stop signal to the multi-thread processor 1000.
  • the operation result storage unit 5000 performs the following control.
  • the operation result selector 6000 is controlled to select data from the dynamic reconfiguration arithmetic circuit 2000. Also, the operation stop for the multi-thread processor 1000 is released.
  • the operation result data of the dynamic reconfiguration arithmetic circuit 2000 is not stored in the operation result storage unit 5000 but is directly passed to the multithread processor 1000.
  • the DMWA and DMRA addresses of the thread are not incremented! /.
  • the processing result storage unit 5000 writes and reads Latency can be suppressed. As a result, the calculation performance of the dynamically reconfigurable logic circuit device 100 can be improved.
  • FIG. 31 is a functional block diagram showing a configuration of the dynamically reconfigurable logic circuit device 300 according to the fourth embodiment of the present invention.
  • the same components as those in FIG. 31 are identical to FIG. 31.
  • the difference from the first embodiment is that the multi-thread processor 1000 of Fig. 1 does not exist and the operation source storage unit 7000 is added.
  • this embodiment is a case where a thread that can be executed by the dynamic reconfiguration arithmetic circuit 2000 is executed.
  • the calculation source storage unit 7000 supplies calculation data to the dynamic reconfiguration arithmetic circuit 2000, which was performed by the multithread processor 1000, and configures calculation instructions to the dynamic reconfiguration arithmetic circuit 2000.
  • the switching means 4000 performs the operation result data reading from the operation result storage unit 5000 by the data transfer controller DMAC (not shown).
  • the computation source storage unit 7000 stores the computation source data of the dynamic reconfiguration computation circuit 2000 and is supplied with computation source data from the data transfer controller DMAC, not shown.
  • the computation source storage unit 7000 is controlled by the configuration switching unit 4000, and write and read addresses are managed for each thread.
  • the management of the read / write address of the calculation source storage unit 7000 is the same as that of the calculation result storage unit 5000 of the first embodiment.
  • the read request is made by the configuration switching means 4000, the write data is transferred from the data transfer controller DMAC, and the read data is transferred to the dynamic reconfiguration arithmetic circuit 2000.
  • the memory means can be realized with a memory having a small number of input / output ports, and the circuit area can be suppressed.
  • the calculation result data stored in the storage area in the calculation source storage unit 7000 and the calculation result storage unit 5000 is managed for each thread in the FIFO. For this reason, in the program executed by the processor 300, it is not particularly necessary to be aware of the calculation order at the time of switching the configuration, and management for each thread is sufficient. Therefore, the data transfer controller DMAC reads the calculation result data for each thread. Can be easily performed.
  • the processor of the present invention can be mounted on, for example, a mobile communication device.
  • FIG. 32 is a diagram showing a mobile communication device equipped with a processor of the present invention.
  • the mobile communication device 10000 includes a display 11000, an imaging unit 12000, a sound output unit 1300, a sound input unit 14000, a command input unit 15000, an antenna 16000, and a processor 100 (see FIG. 1) according to the present invention.
  • the processor 100 is connected to the display 11000 via a video frame buffer.
  • the processor 100 performs still image decoding processing such as JPEG, moving image decoding processing such as MPEG, 3D graphics processing such as a game, text drawing processing, and overlay processing of each video.
  • Display 11000 displays the video processed by processor 100.
  • the processor 100 is connected to the imaging unit 12000 via a video frame buffer.
  • the processor 100 performs still image encoding processing such as JPEG and moving image encoding processing such as MPEG on the video input from the imaging means 12000.
  • the processor 100 is connected to the sound output means 13000 via an audio frame buffer.
  • the processor 100 performs audio decoding processing such as MPEG.
  • the sound output means 13000 outputs the sound processed by the processor 100.
  • the processor 100 is connected to the sound input means 14000 via an audio frame buffer.
  • the processor 100 performs audio encoding processing such as MPEG on the audio input from the audio input means 14000.
  • the processor 100 is connected to the antenna 16000 and a radio frequency circuit block (not shown), and a communication process is performed by the processor 100 to configure a radio network. In addition, the processor 100 also performs decoding processing of transmission / reception data.
  • the mobile communication device 10000 can input an operation to the mobile communication device 10000 from the command input means 15000 using a needle or a finger.
  • the video display device such as the TV 'DVD player' car navigation system, DVD recorder 'video camera ⁇ DSC ⁇ security camera ⁇ video recording device, audio player, etc. This is useful for communication systems and security processing systems in communication devices.
  • the processor according to the present invention has been described above based on the embodiment. However, the processor may be partially modified, and the present invention is of course not limited to the above-described embodiment. That is,
  • the operation cell of the dynamic reconfiguration arithmetic circuit 2000 is arranged in a 4 ⁇ 4 matrix format.
  • a 10 ⁇ 4 rectangular matrix format may be used.
  • the arrangement is arranged in units of lines.
  • the operation cell 2100 can perform multiplication, shift, addition, and logical operations. Further, the number of types of operations such as division, subtraction, and rotation operations may be increased, or the number of types of operations may be small.
  • calculation cell 2100 may have a different configuration, such as division of only a force-specific calculation cell having the same configuration.
  • All computation cells 2100 and dynamic reconfigurable connectors 2200 may have a configuration switchable force. Some of the computation cells 2100 and dynamic reconfigurable connectors 2200 may not have their configurations switched.
  • the number of inputs / outputs of the computation cell 2100 may be varied, such as a force of 1 input and 1 output, 3 inputs and 2 outputs. In this case, the number of inputs of the computation source selector 2210 and the number of selections are increased, and the number of inputs of the output data selector 2250 is also increased.
  • the configuration switching signal line from the configuration switching means 4000 to the computation cell 2100 is connected to the computation cell 2
  • the operation cell 2100 may be provided with a plurality of clock lines that have been operated with the same clock, and the operation operation clock may be changed for each operation cell.
  • the dynamic reconfiguration arithmetic circuit 2000 is configured only in the dynamic reconfiguration arithmetic circuit 2000 without changing the processing thread of the processor that has been changed in synchronization with the threads running on the multi-thread processor 1000. You can change it.
  • the threads A, B, and C operating on the multi-thread processor 1000 are all operated by the dynamic reconfiguration arithmetic circuit 2000, but the dynamic reconfiguration arithmetic circuit 2000 There may be threads that are not used. In that case, it is possible to switch to a thread configuration that uses the dynamic reconfiguration arithmetic circuit 2000 next.
  • the multi-thread processor 1000 and the dynamic reconfiguration arithmetic circuit 2000 operate with the same clock, a plurality of clock lines may be arranged to change the arithmetic operation clock.
  • the multi-thread processor 1000 may be a processor that does not support a plurality of threads, or may have a multi-core configuration in which a plurality of cores are integrated, or an internal configuration may be a reconfigurable arithmetic circuit.
  • the dynamic reconfiguration arithmetic circuit 2000 at the thread being processed by the multithread processor 1000 is not used for the read instruction from the multithread processor 1000 to the arithmetic result storage means 5000.
  • the operation result data of can be read, it may be possible to read the operation results of other threads.
  • an operand for specifying the thread number is added to the read instruction, and the thread number is given from the multi-thread processor 1000 to the operation result storage unit 5000 at the time of reading.
  • the calculation result storage unit 5000 switches to the DMRA of the given thread number. Thereby, it is possible to read out the calculation results of other threads.
  • the multi-thread processor 1000 may not support a read instruction. Instead, the register in the multi-thread processor 1000 can be specified as the destination in the operand of the operation instruction instruction to the dynamic reconfiguration arithmetic circuit 2000, and when the operation in the dynamic reconfiguration arithmetic circuit 2000 ends, the register The operation result data may be written in the.
  • the number of source data of the operation instruction may be 2 and the number of data of the read instruction may be 1. This number may be changed.
  • the data wiring from the multithread processor 1000 to the dynamic reconfiguration arithmetic circuit 2000 is increased, and the output from the multithread processor 1000 is increased.
  • the number of ports and the number of input ports to the dynamic reconfiguration arithmetic circuit 2000 may be increased.
  • the increase in the number of read data from the operation result storage unit 5000 increases the wiring from the operation result storage unit 5000 to the multi-thread processor 1000, the number of input ports of the multi-thread processor 100 00, the operation result storage unit 5000 What is necessary is just to increase an output port.
  • the instruction that sets the area address for each thread to the operation result storage unit 5000 can also be used to set the end address of the area. If the area start address of all threads is set, it is sufficient to determine the area up to another thread area start address as the area of each thread.
  • the processing switching of the multithread processor 1000 is one cycle, but multiple cycles may be required.
  • the configuration switching unit 4000 controls the dynamic reconfiguration arithmetic circuit 2000 and the arithmetic result storage unit 5000 for the number of cycles of the switching process of the multithread processor 1000, the processing stop control is performed.
  • the calculation result storage unit 5000 can manage each thread area in FIFO, even if it is managed in other formats such as LIFO (Last In First Out) format. Good. Further, DMWA and DMRA managed by the calculation result storage unit 5000 may be managed by the multi-thread processor 1000 or the configuration switching unit 4000.
  • each thread FIFO is managed in the computation source storage unit 7000, but it may be managed in other formats such as LIFO (Last In First Out) format.
  • configuration switching unit 4000 may manage the write and read addresses managed by the calculation source storage unit 7000.
  • each storage cell, operation source selector, and output data selector are provided with storage means for storing the configuration information of all threads in advance.
  • the thread number and switching instruction are sent from the configuration switching unit 4000. It may be switched to the desired configuration.
  • the storage unit that holds in advance the configuration information of all the threads that can delete the wiring from the configuration information storage unit 3000 has a configuration of a register. Since the configuration information storage unit 3000 can be configured with a memory with a small number of input / output ports, the area of the storage means increases.
  • the timing of reconfiguration of each calculation cell is determined by an instruction from the configuration switching unit 4000 (see FIG. 16: Step S400 to Step S420). It is also possible to determine the timing of reconstruction.
  • each computation cell 2100 determines a standby cycle E and waits for switching control for that cycle.
  • E represents the number of operation cells 2100 (number of operation stages) before the operation cell in the next thread.
  • For the value of each computation cell E refer to the computation cell stage number table 4100 (see Fig. 9 (a)).
  • the computation cell a has the previous computation stage number of 0, so that if there is a reconfiguration instruction, the configuration change processing is performed immediately.
  • the computation cell m waits 3 cycles for thread A, 7 cycles for thread B, and 15 cycles for thread C.
  • the configuration switching unit 4000 displays the configuration information storage unit 300. 0 is instructed, and the configuration information in the next thread of the computation cell 2100 and the configuration information in the next thread of the computation source selector 2210 corresponding to the computation cell 2100 are read out. This configuration information is supplied to the corresponding calculation cell 2100 and the corresponding calculation source selector 2210 through the configuration information transfer bus.
  • a configuration switching signal is generated for the corresponding calculation cell 2100 and the corresponding calculation source selector 2210, and the corresponding calculation cell 2100 and the corresponding calculation source selector 2210 receive this signal and configure the configuration. Reads the configuration information supplied to the information transfer bus and switches to the configuration of the next thread.
  • the configuration switching unit 4000 obtains a cycle in which all operation cells are reconfigured for the next thread with reference to the thread stage number table 4200 (FIG. 9B), and starts reconfiguration of the output data operation unit 2250.
  • the current thread's computation cell and the next thread's computation cell are supposed to be operated at the same time. It is also possible to start execution. This is because, during execution of the current thread, reconfiguration is performed for the next thread in the order of the calculation cell power when the calculation has been completed, so reconfiguration time is unnecessary.
  • a program for causing the CPU to execute each control process (see FIG. 14, etc.) for realizing each function of the processor shown in the embodiment is recorded on a recording medium or via various communication paths. It can also be distributed and distributed. Such recording media include IC cards, optical disks, flexible disks, ROM, flash memory, and the like.
  • the distributed and distributed program is used by being stored in a memory or the like that can be read by the CPU in the device, and when the CPU executes the program, each function of the processor described in the embodiment is performed. Realized.
  • the multi-thread compatible processor 100 can suppress performance degradation at the time of configuration switching in the dynamic reconfiguration arithmetic circuit 2000.
  • the memory means can be realized with a memory having a small number of input / output ports, and the circuit area can be suppressed. Furthermore, the calculation result data stored in this storage area is managed for each thread by the FIFO. For this reason, in the program executed by the multithread processor 1000, it is not particularly necessary to be aware of the calculation order at the time of switching the configuration, and management for each thread is sufficient. Therefore, a read program can be easily created.
  • This configuration is useful as a media processing device that requires time division multiplexing processing. It can also be used for communications and security purposes.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)

Abstract

 本発明に係るプロセッサは、複数のスレッドを巡回的に、各スレッドに割当てられた時間ずつ実行するプロセッサであって、各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対応する、各演算セルのセル構成情報を記憶し、順次、現スレッドに割当てられた時間での最後の演算を終了した演算セルを、記憶している次スレッドに対応する当該演算セルのセル構成情報に基づき再構成させ、次スレッドに対応する構成の演算セルと現スレッドの構成に対応する演算セルとをそれぞれ同時に実行させる。

Description

動的再構成論理回路を有するマルチスレッドプロセッサ
技術分野
[0001] 本発明は、再構成可能な論理回路を有するマルチスレッドプロセッサに関し、特に
、スレッドの切り替え技術に関する。
背景技術
[0002] 近年のプロセッサ、例えば、デジタル信号を用いた映像、音響機器に搭載されるプ 口セッサは、複数の処理を並行して行う必要性から、マルチスレッド処理に対応して いる。
一方、プログラムにより論理構成を変更できるデバイス、例えば、 FPGA (Field Prog rammable Gate Array)や PLD (Programmable Logic Device)が開発され、更に、その 構成の変更を高速に行うことが出来る動的再構成論理回路が提案されている。
[0003] このようなソフトウェア処理の柔軟性とハードウェア処理の高速性の両立を目指して 開発された動的再構成論理回路を利用して、マルチスレッド処理を行う技術が開発 されている (特許文献 1参照)。
この技術を、図 33を用いて簡単に説明する。
マルチスレッドプロセッサ 10と動的再構成演算回路 20とは協調してマルチスレッド 処理を実現する。
[0004] スレッド切り替えを指示するマルチスレッドプロセッサ 10からの割り込みにより、動的 再構成演算回路 20の構成、具体的には、アレイ状に配した演算セル 21の構成と演 算セル間の接続構成とを、次に実行するスレッド用に再構成を行い、次のスレッドを 実行する。
このスレッド切り替えの際、各演算セル 21は、現在実行しているスレッドの演算内容 を各演算セル 21内の中間演算データ格納レジスタ 211に退避した後、再構成を行う
[0005] この技術により、スレッド切り替え時に、各演算セルの演算内容を破棄したり、全て の演算セルの演算が終了するまでマルチスレッドプロセッサ 10が待つことをせずとも 、全演算セルを次のスレッド用に再構成をすることができるので、マルチスレッドプロ セッサ 10が次のスレッドの実行を開始するまでの時間を短くでき、全体として演算性 能の低下を抑制できるという利点がある。
特許文献 1 :特開 2005— 165961号公報
発明の開示
発明が解決しょうとする課題
[0006] しかし、このような動的再構成演算回路は、各演算セル内に、実行するスレッド数分 の格納レジスタが必要となることから、演算セルの個数やスレッド数が多くなればなる ほど動的再構成演算回路の面積が大きくならざるを得ない。
また、動的再構成演算回路の面積を大きくしない為に、動的再構成演算回路内に 格納レジスタを持たな 、で外部のメモリ等に退避することとすると、全演算セルのデ ータの退避を同時に行う必要があることから入出力ポートが大量に必要となり、動的 再構成演算回路内のレジスタによる面積は増えないが、入出力ポート分の面積が増 免ることとなる。
[0007] そこで、本発明は、スレッド切り替え時の再構成による性能劣化を抑制しつつ、回 路面積の増加をも抑えることができる、動的再構成論理回路を備えるマルチスレッド 対応のプロセッサの提供を目的とする。 課題を解決するための手段
[0008] 上記課題を解決する為に、本発明に係るプロセッサは、複数のスレッドを巡回的に 、各スレッドに割当てられた時間ずつ実行するプロセッサであって、複数の演算セル を含み、当該演算セルの構成と各演算セル間の接続とを再構成可能な演算回路と、 演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に基 づいて、再構成する再構成手段と、各々異なる特定数の演算セルを順番に繰り返し 実行する複数のスレッド各々に対応する、各演算セルのセル構成情報を記憶する構 成情報記憶手段と、順次、前記再構成手段に、現スレッドに割当てられた時間での 最後の演算を終了した演算セルを、前記構成情報記憶手段に記憶して ヽる次スレツ ドに対応する当該演算セルのセル構成情報に基づき再構成させ、次スレッドに対応 する構成の演算セルと現スレッドの構成に対応する演算セルとをそれぞれ同時に実 行させる制御手段とを備えることを特徴とする。
発明の効果
[0009] 本発明に係るプロセッサは、上述の構成を備えることにより、スレッドを切り替える際 に、現在実行しているスレッド (以下、「現スレッド」という。)の演算を終了した演算セ ルから順に、次に実行するスレッド (以下、「次スレッド」という。)の構成に再構成して V、き、現スレッドの実行と並行して再構成した演算セルを用いて次スレッドの演算を 行うので、スレッド切り替え時の時間を必要最小限とすることができる。且つ、退避用 のレジスタや入出力ポートを必要とせず、回路面積をも必要最小限とすることができ る。
[0010] すなわち、動的再構成演算回路を、一度に、現スレッド用の構成力ゝら次スレッド様 の構成に再構成する場合には、現スレッド終了時力ゝら次スレッド開始時までの間に、 少なくとも再構成の時間が必要となる。しかし、本発明では、その時間さえも不要であ り、スレッド切り替えの際には、現スレッドの実行と次スレッドの実行とが同時に行われ るので、切替時間が短くなるだけでなぐ全体として実行時間が短くなるという優れた 効果を奏することができる。
[0011] また、前記プロセッサは、更に、各スレッドの演算セルの演算結果を、それぞれ別の 領域に記憶する演算結果記憶手段を備え、前記制御手段は、同時に実行させてい る現スレッドで順番に繰り返し実行する演算セルのうちの最後の演算セルの演算結 果を前記演算結果記憶手段の現スレッドの領域に記憶させ、同時に実行させて 、る 次スレッドの領域に記憶されている演算結果を、次スレッドの最初に実行する演算セ ルに参照させて演算を実行させることとしてもょ 、。
[0012] これにより、動的再構成演算回路の演算結果のみを記憶することになるので、各演 算セルの中間演算データを格納する必要がなぐ演算セル内部のレジスタは当該演 算セルの実行に必要な量でよぐまた、全ての演算セルの演算結果データを一度に 演算結果記憶部に出力する必要はないので、最小限の入出力ポートでよい。従って 、中間演算データを記憶するためのレジスタや、ポート分の面積を抑制することがで き、プロセッサ全体の面積を小さくすることが可能となる。
[0013] また、前記プロセッサは、更に、スレッドに割当てられた時間での最後の演算を終了 した演算セルであって、当該スレッドで順番に繰り返し実行する演算セルのうちの最 後の演算セルの演算結果を記憶する演算結果記憶手段を備え、前記制御手段は、 現スレッドで順番に繰り返し実行する演算セルのうちの最後の演算セルの演算結果 に基づいて、次の繰り返しの最初に実行する演算セルを実行させ、スレッドを切り替 える際には、次スレッドに対して前回割当てられた時間に前記演算結果記憶手段に 記憶した演算結果を、次スレッドの最初に実行する演算セルに参照させて演算を実 行させることとしてもよい。
[0014] これにより、動的再構成演算回路力もの演算結果データを、直接マルチスレッドプ 口セッサが取得できるので、演算結果記憶部への書き込みと読み出しの時間が不要 となり、スレッドの実行効率が良くなる。言い換えれば、与えられた時間内で行うことが 出来るスレッドの処理が増えることになる。
また、本発明に係るプロセッサは、複数のスレッドを巡回的に、各スレッドに割当て られた時間ずつ実行するプロセッサであって、複数の演算セルを含み、当該演算セ ルの構成と各演算セル間の接続とを再構成可能な演算回路と、演算セルの構成及 び当該演算セルと他の演算セルとの接続を、セル構成情報に基づいて、再構成する 再構成手段と、各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレ ッド各々に対応する、各演算セルのセル構成情報を記憶する構成情報記憶手段と、 順次、前記再構成手段に、現スレッドに割当てられた時間での最後の演算を終了し た演算セルを、前記構成情報記憶手段に記憶して 、る次スレッドに対応する当該演 算セルのセル構成情報に基づき再構成させ、現スレッドで実行する最後の演算セル の演算終了後、次スレッドの構成の演算セルを実行させる制御手段とを備えることを 特徴とする。
[0015] この構成を備えることにより、本発明に係るプロセッサは、スレッド切り替えに際して 、現スレッド終了時には、動的再構成演算回路の構成を次スレッド用の構成とするこ とができるので、現スレッド終了後すぐに次スレッドの実行を開始することが出来るよう になる。
図面の簡単な説明
[0016] [図 1]プロセッサ 100の構成例を表す図である。 圆 2]動的再構成演算回路 2000の構成を示す概略図である。
圆 3]1つの演算セルと、関連する動的再構成接続部とを示す図である。
圆 4]演算セルと演算データ選択器、出力データ選択器に構成情報と制御信号とを 供給する信号線を示す図である。
圆 5]演算セルに演算データを供給する信号線を示す図である。
[図 6]スレッド Aのデータの流れを示す図である。
[図 7]スレッド Bのデータの流れを示す図である。
[図 8]スレッド Cのデータの流れを示す図である。
[図 9]図 9 (a)は、演算セル段数テーブルの構成及び内容例を示し、図 9 (b)は、スレ ッド段数テーブルの構成及び内容例を示す。
[図 10]演算セル構成情報テーブル 3100の構成及び内容例を示し、このデータは、 構成情報記憶部 3000が予め記憶しているデータである。
[図 11]従来のスレッドの切り替えを示す図である。
[図 12]スレッドに割当てられた時間の最後のサイクルに実行される演算セル 2100を 示した図である。
[図 13]本発明のスレッドの切り替えを示す図である。
[図 14]図 14は、スレッド切り替え時のマルチスレッドプロセッサ 1000と構成切替部 40
00との処理を示すフローチャートである。
[図 15]待ちサイクル数の算出処理を示すフローチャートである。
圆 16]演算セル、演算ソース選択器の再構成処理を示すフローチャートである。
[図 17]スレッド Aからスレッド Bへの切り替え時の動的再構成演算回路の遷移図であ る。
[図 18]スレッド切り替えの際の、マルチスレッドプロセッサ 1000等からの制御信号と 演算セル等の処理との関係を表すタイムチャートである。
[図 19]これら制御信号と出力データ選択器 2250の処理との関係を表すタイムチヤ一 トである。
[図 20]これらの制御信号と演算結果記憶部 5000の処理との関係を表すタイムチヤ一 トである。 [図 21]演算結果記憶部 5000内の各スレッドの領域を表す図である。
[図 22]スレッド Cからスレッド Aへの切り替え時の動的再構成演算回路の遷移図であ る。
[図 23]スレッド切り替えの際の、マルチスレッドプロセッサ 1000等からの制御信号と 演算セル等の処理との関係を表すタイムチャートである。
[図 24]スレッドの切替スケジュールを表したタイムチャートである。
[図 25]演算結果記憶部 5000に関する命令例等である。
[図 26]図 26 (a)は、マルチスレッドプロセッサ 1000からの動的再構成演算回路 200 0への演算命令例であり、図 26 (b)は、演算結果記憶部 5000に対する演算結果読 み出し命令例である。
[図 27]図 27 (a)は、スレッド Aでの Rcn— exe命令と、 Rcn—rd命令のみのプログラム 例であり、図 27 (b)は、 Rcn— exe命令、 Rcn— rd命令の間に 4サイクル分の演算用 命令を挿入してあるプログラム例である。
[図 28]待ちサイクル期間が生じないスレッド切り替えのスケジュールを示したタイムチ ヤートである。
[図 29]命令仕様書の Rcn— exe命令の記載例である。
圆 30]本発明の実施形態 3における動的再構成論理回路装置 200の構成を示す機 能ブロック図である。
圆 31]本発明の実施形態 4における動的再構成論理回路装置 300の構成を示す機 能ブロック図である。
圆 32]本発明のプロセッサが搭載された移動体通信装置を示す図である。
[図 33]動的再構成演算回路を備える、マルチスレッドプロセッサの従来例である。 符号の説明
100 200 300 プロセッサ
10 1000 マルチスレッドプロセッサ
20 2000 動的再構成演算回路
21 2100 演算セル
2200 動的再構成接続部 2210 演算ソース選択器
2250 出力データ選択器
3000 構成情報記憶部
3100 演算セル構成情報テーブル
4000 構成切替部
4100 演算セル段数テーブル
4200 スレッド段数テーブル
5000 演算結果記憶部
6000 演算結果選択器
7000 演算ソース記憶部
10000 移動通信装置
発明を実施するための最良の形態
[0018] <実施形態 1 >
<概要 >
本発明に係るプロセッサは、動的再構成演算回路を備えるマルチスレッド処理に対 応したプロセッサであり、スレッドを実行する毎に、動的再構成演算回路を当該スレツ ド用の構成に再構成するものである。この動的再構成演算回路は、複数の演算セル 等を備えており、この演算セル等の構成を再構成することで動的再構成演算回路を 再構成する。
[0019] 本発明に係るプロセッサでは、そのスレッド切り替えの際に、全ての演算セルを同 時に次スレッド用に再構成するのではなぐ演算の終了した演算セルを順次再構成 して実行して 、くものである。
従って、スレッド切り替え時には、切り替え前のスレッドである現スレッドの処理を行 つて 、る演算セルと、切り替え後のスレッドである次スレッドの処理を行って 、る演算 セルとが混在し、現スレッドと次スレッドが同時に実行されることとなる。
[0020] このように、現スレッドの処理が終了する前に次スレッドの処理を開始するので、演 算セルが遊んでしまう時間を最小限度にすることができ、スレッド切り替えによる性能 低下を抑制し、全体の実行時間を短縮することが可能となる。 以下、本発明の実施形態のプロセッサについて説明する。
本実施形態のプロセッサは、マルチスレッドプロセッサであり、マルチスレッドを実現 するための方法として、各タスクを一定時間ずつ順番に実行していくラウンドロビン方 式を取るものとする。
[0021] 尚、イベントドリブン方式として、データ転送コントローラ DMAC (Direct Memory Ac cess Controller)のデータ転送完了信号や、他のプロセッサやハードワイヤードロジッ クの演算終了信号などを要因として、タスクを切り替えても良い。
スレッドは、動的再構成演算回路にデータを入力し、特定数の演算セルを決められ た順に実行しその結果を出力する、という一連の処理 (以下、「ループ」ともいうものと する。)を繰り返し行う。この一連の処理で必要な演算セルの個数を演算段数というも のとする。
[0022] 出力した結果は、演算結果記憶部を介してマルチスレッドプロセッサによって読み 込まれ、新たなデータが動的再構成演算回路に入力される。
本実施形態のスレッドは、それぞれ演算段数が異なるものとする。従って、動的再 構成演算回路を構成する演算セルの個数に応じて、各スレッドで並列に実行できる ループの最大数が異なる。尚、実際に実行するループ数は、スレッドの処理内容に 依存する。
[0023] く構成〉
以下、図 1を用いて、本発明に力かるプロセッサ 100の構成を説明する。 図 1は、プロセッサ 100の構成例を表す図である。
プロセッサ 100は、マルチスレッドプロセッサ 1000、動的再構成演算回路 2000、 構成情報記憶部 3000、構成切替部 4000及び演算結果記憶部 5000で構成される
[0024] ここで、実線矢印は演算結果等のデータの流れ、点線矢印は制御の信号等の流れ 、二重線矢印は構成情報の流れをそれぞれ表すものとする(図 2、図 3等も同様)。 マルチスレッドプロセッサ 1000は、複数の異なる処理を時分割で実行することがで きる、いわゆるマルチスレッドプロセッサである。動的再構成演算回路 2000と協調し て演算を行い、スレッドの処理を実行していく。 [0025] 具体的にマルチスレッドプロセッサ 1000は、あるスレッドの処理を行う場合は、その スレッド用に動的再構成演算回路を構成し、演算段数分の演算セルの処理を繰り返 し行わせる。
また、本マルチスレッドプロセッサ 1000は、次に実行するスレッドを決定し、実行す る機能を有する。具体的には、スレッドに割当てた時間の終了を知らせるタイマ割り 込みによって、スレッドの切替時を検出し、次スレッド用に動的再構成演算回路 200 0の再構成を行うよう構成切替部 4000に指示を出す。この際、現スレッドと次スレッド を通知する。
[0026] 尚、スレッドの切替時の検出には、データ転送コントローラ DMAC (Direct Memory Access Controller)のデータ転送完了信号や、他のプロセッサやハードワイア一ドロ ジックの演算終了信号などを要因として、検出するものであっても良い。この場合も、 以下、スレッドに割当てられた時間として説明する。
次に、動的再構成演算回路 2000は、アレイ状に配置された複数の演算セル 2100 を含み、各演算セルの構成及び各演算セル間の接続構成を変更することが可能な 演算回路である。すなわち、各演算セルの構成を所定の演算を行うように再構成し、 接続構成を各演算セルが所定のデータを入力するように再構成することで、動的再 構成演算回路 2000を所望の処理を行う回路に再構成する。詳細は、図 2〜図 5を用 いて後で説明する。
[0027] 構成情報記憶部 3000は、動的再構成演算回路 2000を所望の回路に再構成する 為の構成情報を記憶する機能を有する。また、構成切替部 4000からの指示を受け て、順次必要な構成情報を読み出し、動的再構成演算回路 2000に対して供給する 機能を有する。
本実施形態における構成情報は、スレッド毎に記憶され、各演算セル毎に記憶さ れているものとする。詳細は、図 10を用いて後で説明する。
[0028] 構成切替部 4000は、マルチスレッドプロセッサ 1000からの指示を受けて、次スレツ ド用に、順次、動的再構成演算回路 2000の再構成を行う機能を有する。再構成は、 本構成切替部 4000が、演算結果記憶部 5000、動的再構成演算回路 2000、構成 情報記憶部 3000を制御することで行う。 演算結果記憶部 5000は、動的再構成演算回路 2000が出力する演算結果を記憶 する機能を有する。
[0029] この演算結果は、スレッド毎に記憶されており、このスレッド毎の演算結果は、各ス レッドの 1ループの結果であり、マルチスレッドプロセッサ 1000により読み出される。 本実施形態では、ループの都度、書き込まれ、マルチスレッドプロセッサ 1000によ つて読み出される。また、該当スレッドに時間が再び割当てられてスレッド処理を続行 するときに、読み出されて利用される。
[0030] この演算結果記憶部 5000は、構成切替手段 4000から、現スレッドと次スレッドを 通知され、動的再構成演算回路 2000からの書き込み領域及び、マルチスレッドプロ セッサ 1000からの読み出し領域を変更する。
次に、図 2〜図 5を用いて、動的再構成演算回路 2000の詳細について説明する。
<動的再構成演算回路 2000の詳細 >
まず、図 2は、動的再構成演算回路 2000の構成を示す概略図である。
[0031] 動的再構成演算回路 2000は、複数の演算セル(2100a〜2100p)と、演算セルを 接続する動的再構成接続部 2200とで構成される。
以下、演算セル 2100aは「演算セル a」、演算セル 2100bは「演算セル b」等というも のとし、図 4等でも同様とする。また、演算セル 2100という場合は、 1つの演算セルを 指すものとする。
[0032] 各演算セル 2100には、構成切替部 4000と構成情報記憶部 3000とからそれぞれ 信号線が引かれ、構成切替部 4000からは制御信号 (点線矢印)が送られ、構成情 報記憶部 3000からは構成情報(二重線矢印)が送られる。
また、マルチスレッドプロセッサ 1000から動的再構成接続部 2200を介して、演算 セル 2100等に必要な演算データが渡される。
[0033] 演算セル 2100は、乗算、シフト、加算、論理演算が可能であり、設定された構成情 報での演算を行う。動的再構成演算セル 2100の 1回の演算に要する期間は、プロ セッサの 1サイクルとする。また、再構成に要する期間も、同様に、プロセッサの 1サイ クルとする。
以下、動的再構成接続部 2200の構成を図 3を用いて説明する。 [0034] く動的再構成演算接続部 2200について〉
図 3は、 1つの演算セルと、関連する動的再構成接続部 2200とを示す図である。 本図では、 1対の演算セル 2100と演算ソース選択器 2210、出力データ選択器 22 50を示している。
動的再構成接続部 2200は、演算セル 2100と対となる演算ソース選択器 2210、 すなわち、演算セル 2100と同数の演算ソース選択器 2210と、 1つの出力データ選 択器 2250と、マルチスレッドプロセッサ 1000からのデータの配線及び演算セル間の 配線とで構成される。
[0035] 演算セル 2100、演算ソース選択器 2210及び出力データ選択器 2250には、それ ぞれ構成切替部 4000から制御信号が、構成情報記憶部 3000から構成情報が入力 される。これにより、各演算セル 2100等は、別々のタイミングでの構成切り替えが可 能となる。
演算ソース選択器 2210は、他の演算セル 2100の演算結果である演算データを入 力し、そのうちから 1つの演算データを選択し、対となる演算セル 2100に出力する。 尚、 1段目の演算セル a〜演算セル dは、他の演算セル 2100からの演算データとマ ルチスレッドプロセッサ 1000からの演算データのうち 1つの演算データを選択する。
[0036] 演算ソース選択器 2210の構成の切り替えは、対である演算セル 2100と同時に行 う。そのため、構成切替手段 4000からの切り替え信号線は、演算セル 2100に接続 されたものが同じく接続されている。
また、演算セル 2100は、演算結果の演算データを他の演算セル 2100の演算ソー ス選択器 2210に出力する。尚、最下段の演算セル m〜演算セル pは、他の演算セ ル 2100と出力データ選択器 2250に演算データを出力する。
[0037] 出力データ選択器 2250は、演算セル力も入力された演算データ力も必要な演算 データを選択して演算結果記憶部 5000に出力する。
この出力データ選択器 2250の構成の切り替えは、演算セル 2100と同じぐ構成切 替手段 4000から構成切り替えの信号線及び構成情報記憶部 3000からの構成情報 転送用の信号線が接続されており、構成切り替えの信号を受けると、そのときの構成 情報記憶部 3000からの構成情報に切り替える。 [0038] <構成情報、制御信号、演算データの流れにつ!、て >
図 4は、演算セルと演算データ選択器と出力データ選択器とに、構成情報と制御信 号とを供給する信号線を示す図であり、図 5は、演算データを供給する信号線を示す 図である。
図 4において、構成切替部 4000からは制御信号力 演算セル a〜演算セル p、演 算ソース選択器 a〜演算ソース選択器 p及び出力データ選択器 2250にそれぞれ出 力され、構成情報記憶部 3000からは構成情報が出力される。
[0039] 対となる演算セル 2100と演算ソース選択器 2210には、同じ制御信号と同じ構成 情報が入力される。また、全ての演算セル 2100等には、同時に、構成情報記憶部 3 000から同じ構成情報が送出される。
各演算セル 2100、各演算ソース選択器 2210、出力データ選択器 2250は、構成 切替部 4000から送られる制御信号に応じて、構成情報を読み込み、再構成を行う。
[0040] すなわち、構成切替部 4000は、構成情報記憶部 3000に構成を変更しょうとする 演算セルの構成情報を出力させ、同時に、構成を変更しょうとする演算セルに対して のみ再構成を指示する命令を送出する。再構成の指示を受けた演算セルは、構成 情報を読み取り再構成を行う。
演算ソース選択器 2210、出力データ選択器 2250も同様である。
[0041] 図 5は、演算データの流れを示し、各演算セル 2100は、演算結果である演算デー タを、次の段の演算セルの演算ソース選択器 2210と、隣の演算セルの演算ソース選 択器 2210とに出力する。例えば、演算セル bは、演算データを演算ソース選択器 fと 演算ソース選択器 aと演算ソース選択器 cとに出力する。
演算ソース選択器 2210は、入力される複数の演算データの 1つを選択して、対で ある演算セルに出力する。例えば、演算ソース選択器 fは、演算セル bと演算セル eと 演算セル gとから送られる演算データのうちの 1つを選択して、演算セル fに出力する 。演算セル fは、演算ソース選択器 fから出力された演算データを基に演算を行う。
[0042] 演算ソース選択器 2210が、どの演算データを選択するかは、演算ソース選択器 22 10の構成に依存する。例えば、演算ソース選択器 演算セル g力もの演算データ を選択する構成となっている場合は、常に、演算セル g力もの演算データを選択し、 再構成が成されれば、その構成に応じて演算セル bや演算セル eからの演算データ を選択することになる。
[0043] また、出力データ選択器 2250も、入力した演算データのうち、いずれを演算結果 記憶部 5000に出力するかは、その構成に依存する。すなわち、演算結果記憶部 50 00に出力する演算データは、 1つとは限らず、スレッドの処理に応じた出力データ選 択器 2250の構成に依存する。
尚、本実施形態では、演算データを下段と左右の演算セルの演算ソース選択器に 送ることとしているが、これに限られず、他の演算セルの演算ソース選択器に送信す る構成としてももちろんよい。
[0044] <データ >
以下、プロセッサ 100が、スレッドの切り替えを行う際に使用するデータについて、 図 9と図 10とを用いて説明する。
データを説明する前に、本実施形態での説明で使用するスレッドについて図 6〜図 8を用いて説明する。
[0045] <スレッドについて >
本実施形態では、スレッド A、スレッド B、スレッド Cの 3つのスレッドを巡回的に実行 するものとする。
図 6〜図 8は、各スレッドのデータの流れを示す図である。説明の便宜上、演算ソー ス選択器 2210及び出力データ選択器 2250は記載せずに、演算データの流れのみ 示すものとする。
[0046] まず、図 6は、スレッド Aのデータの流れを示す図である。スレッド Aの演算段数は「 4」であり、動的再構成演算回路 2000の演算セルが 16個であることから、 4つの演算 処理を並行して行うものとする。
すなわち、マルチスレッドプロセッサ 1000から演算セル aに演算ソースが渡され、演 算セル aの演算結果を演算セル eに送り、演算セル eは演算セル aから受け取った演 算データを基に演算を行い演算結果を演算セル iに送る。演算セル iは、演算セル e 力 受け取った演算データを基に演算を行う。 t 、うように順に演算結果を送り演算 セル mまで演算を実行する。同様に、マルチスレッドプロセッサ 1000から演算セル b 、演算セル c、演算セル dに演算データが渡され、それぞれ並行して処理を行う。
[0047] 演算セル m、演算セル n、演算セル o、演算セル pの演算結果が演算結果記憶部 5 000に記憶される。
この記憶された演算結果は、マルチスレッドプロセッサ 1000によって読み出され、 マルチスレッドプロセッサ 1000内での演算等に使用される。尚、演算セル a等に供給 されてもよい。マルチスレッドプロセッサ 1000は、演算データを読み出し、演算すると いうループを繰り返すことでスレッド Aを実行する。演算セルに供給するデータは、読 み出した演算データそのまま又は何らかの処理が成されたもの、他のデータ等であ つてもよく、スレッドの処理に依存する。このループは、スレッド B、スレッド Cにおいて も同様である。
[0048] 図 7は、スレッド Bのデータの流れを示す図である。スレッド Bの演算段数は「8」であ り、 2つの演算処理を並行して行う。
マルチスレッドプロセッサ 1000から、演算セル aに演算ソースが渡され、演算セル a →演算セル b→演算セル f→演算セル e→演算セル i→演算セル j→演算セル 11→演 算セル mの順に演算データを送って処理を行う。同様に、マルチスレッドプロセッサ 1 000から演算セル cに演算データが渡され、演算セル oまで処理を行う。
[0049] 演算セル mと演算セル oの演算結果が演算結果記憶部 5000に記憶される。
図 8は、スレッド Cのデータの流れを示す図である。スレッド Bの演算段数は「16」で あり、 1つの演算処理を行う。
マルチスレッドプロセッサ 1000から、演算セル aに演算ソースが渡され、演算セル a →演算セル b→演算セル c→演算セル d→演算セル h→演算セル g→演算セル→演 算セル e→演算セル i→演算セル j→演算セル k→演算セル 1→演算セル p→演算セル o→演算セル n→演算セル mの順に演算データを送って処理を行う。
[0050] 演算セル oの演算結果が演算結果記憶部 5000に記憶される。
<スレッド切り替えに使用するデータについて >
以下、これらのスレッド A、スレッド B、スレッド Cを巡回的に実行する場合のスレッド の切り替えに際し使用するデータについて、図 9と図 10とを用いて説明する。
図 9 (a)は、演算セル段数テーブルの構成及び内容例を示し、図 9 (b)は、スレッド 段数テーブルの構成及び内容例を示す。
[0051] これらのデータは、構成切替部 4000が予め記憶しているデータである。
まず、図 9 (a)の演算セル段数テーブル 4100について説明する。
演算セル段数テーブル 4100は、スレッド ID4110と演算セル ID4120とで構成され 、スレッドごとの各演算セルの段数目 4130を示す。
スレッド ID4110は、本プロセッサで実行するスレッドの識別子をいい、本実施形態 では「スレッド A」、 「スレッド B」及び「スレッド C」である。
[0052] 演算セル ID4120は、本プロセッサの動的再構成演算回路 2000を構成する演算 セル 2100それぞれの識別子を ヽ、本実施形態では「演算セル a」〜「演算セル p」 の 16個である。
スレッドごとの各演算セルの段数目 4130とは、該当スレッドの 1ループの処理にお いて、該当演算セルが何番目に実行されるかを示すものである。ここでの番数は、「0 」〜「15」で表すものとし、「0」段数目の演算セルが最初に実行されるものとする。
[0053] 例えば、スレッド ID4110「スレッド A」の演算セル ID4120「演算セル b」の演算段数 目 4130は「0」であることから、スレッド Aでは最初に実行される演算セルである(図 6 参照)。また、スレッド ID4110「スレッド B」の演算セル ID4120「演算セル b」の演算 段数目 4130は「1」であり、スレッド Bでは 2番目に実行される演算セルである(図 7参 照)。
[0054] 次に、図 9 (b)のスレッド段数テーブル 4200は、スレッド ID4210と演算段数 4220 とで構成される。
スレッド ID4210は、図 9 (a)のスレッド ID4110と同様である。
また、演算段数 4220は、各スレッドの演算段数を示す。例えば、スレッド ID4210「 スレッド A」は、演算段数 4220「4」であり 4個の演算セルを順に用いて行い、スレッド I D4210「スレッド C」は、演算段数 4220「16」であり 16個の演算セルを順に用いて行 う。この順は、演算セル段数テーブル 4100に示されるとおりである(図 9 (a)参照)。
[0055] 次に、図 10は、演算セル構成情報テーブル 3100の構成及び内容例を示し、この データは、構成情報記憶部 3000が予め記憶して 、るデータである。
演算セル構成情報テーブル 3100は、スレッド ID3110と演算セル ID3120とで構 成され、スレッドごとの各演算セルの構成情報を特定する構成情報名 3130を示して いる。すなわち、構成情報名 3130は、構成情報の識別子である。
[0056] 演算セル ID3120が「演算セル a」〜「演算セル ρ」の構成情報名 3130で特定れる 構成情報は、演算セルと、対となる演算ソース選択器とを再構成するための情報であ る。
また、演算セル構成情報テーブル 3100には、更に、スレッド毎の出力データ選択 器 2250の構成情報を特定する構成情報名 3130も記憶されている。
[0057] 構成情報記憶部 3000には、構成情報名 3130で示される構成情報は全て記憶さ れているものとする。
例えば、スレッド ID3110「スレッド Α」の演算セル ID3120「演算セル a」の構成情報 名 3130は「構成情報 A0」であることから、スレッド A実行時の演算セル aと演算ソース 選択器 aとは、「構成情報 A0」で示される構成情報で再構成されたものである。
[0058] 構成情報記憶部 3000は、構成切替部 4000からの指示を受け、この演算セル構 成情報データ 3100を基に、該当する構成情報名 3130で示される構成情報を動的 再構成演算回路 2000に送出する。
<動作 >
次に、図 11〜図 27を用いて、本発明に係るプロセッサの動作を説明する。
[0059] まず、図 11〜図 13を用いて、従来と本発明とを比較して、スレッドの切り替えにつ いて簡単に説明する。
その後、本発明の、スレッドの演算段数 4220 (図 9 (b)参照)が異なるスレッドへの 切り替えについて説明する。この切り替えについては、現在実行している現スレッドの 演算段数より大きい演算段数のスレッドに切り替える場合と、現スレッドの演算段数よ り小さい演算段数のスレッドに切り替える場合とに分けて説明する。
[0060] 尚、動的再構成演算回路 2100の各演算セル 2100は、演算、再構成ともに、プロ セッサの 1サイクノレで行う。
<従来と本発明とのスレッド切り替えにつ 、て >
図 11は、従来のスレッドの切り替えを示す図である。
プロセッサ 100がスレッド A、スレッド B、スレッド Cを巡回的に実行し、それぞれのス レッド実行時の動的再構成演算回路 2000を示している。
[0061] 動的再構成演算回路 2000Aは、スレッド A実行時の動的再構成演算回路 2100で あり、同様に、動的再構成演算回路 2000B、動的再構成演算回路 2000Cは、それ ぞれスレッド B、スレッド C実行時の動的再構成演算回路 2100である。
動的再構成演算回路 2000の各演算セル 2100が、どのスレッド用の構成であるか を示している。例えば、動的再構成演算回路 2000Aの「演算セル a」の下に記載して
V、る「スレッド A」は、スレッド A用の構成であることを示して!/、る。
[0062] 従来は、スレッド Aの実行が終了すると、動的再構成演算回路 2000Aカゝら動的再 構成演算回路 2000Bに再構成し、スレッド Bの実行を開始していた。従って、動的再 構成演算回路 2000Aから動的再構成演算回路 2000Bに再構成して 、る間、スレツ ドを実行は行うことが出来ない。
次に、図 12は、スレッドに割当てられた時間の最後のサイクルに実行される演算セ ル 2100を示した図である。すなわち、図 11における各スレッドの再構成直前の動的 再構成演算回路 2000の図である。
[0063] 動的再構成演算回路 2000Aのハッチングが掛けられている演算セル 2100力 ス レッド Aに割当てられた時間の最後のサイクルに実行される演算セル 2100であり、同 様に、動的再構成演算回路 2000B、動的再構成演算回路 2000Cは、それぞれに スレッド B、スレッド Cのものを示す。
すなわち、ハッチングが掛けられていない演算セル 2100、スレッド Aでは 12個、ス レッド Bでは 14個、スレッド Cでは 15個の演算セルは、遊んでいることになる。
[0064] 本図では、スレッドに割当てられた時間の最後のサイクルについて説明しているが
、スレッドに割当てられた時間の最後のループでの演算を終了した演算セルは、当 該スレッドが終了するまで遊んでいることになる。例えば、動的再構成演算回路 200
OAの演算セル aは、最後の演算を行い演算結果を演算セル eに渡すと、以後、演算 セル mの演算が終了するまで何も行わな 、。
[0065] 本発明は、スレッド切り替え時に遊んでしまっている演算セルを、次スレッド用に再 構成して次スレッドの処理を行わせようとするものである。
図 13は、本発明のスレッドの切り替えを示す図である。 スレッド Aの実行が終了した演算セル力 順にスレッド B用に再構成を行!、スレッド Bの演算を行う。
[0066] 従って、動的再構成演算回路 2000Aから動的再構成演算回路 2000Bのように、 全ての演算セル 2100がスレッド B用になる間に、動的再構成演算回路 2000ABに 示すように、スレッド A用の演算セルとスレッド B用の演算セルとが混在する期間が存 在する。すなわち、スレッド Aとスレッド Bとが並行して実行されていることになる。 同様に、スレッド Bからスレッド Cに切り替わる際にも、動的再構成演算回路 2000B Cに示すように、スレッド B用の演算セルとスレッド BCの演算セルとが混在する期間が 存在することになる。
[0067] このように並行に処理することで、スレッドの切り替えの際に必要な演算セル 2100 の再構成の時間をなくすことができ、スレッドの実行の一部を並行に行うことで、より 無駄をなくすことが可能となる。
具体的には、図 11における再構成に必要なスレッド間の時間は不要となり、さらに は、現スレッド処理の終わりと次スレッド処理の開始とが重なるため、より全体としての スレッド実行時間を短くすることが可能となる。
[0068] <現スレッドの演算段数より大きい演算段数のスレッドに切り替える場合 >
図 14〜図 16のフローチャートを用いて、本プロセッサの動作を説明する。この説明 の際、図 17〜図 21を参照する。
ここでは、現スレッドをスレッド A、次スレッドをスレッド Bとする。すなわち、演算段数 「4」のスレッド Aから、演算段数「8」のスレッド Bに切り替える処理を例に取り説明する
[0069] 図 17は、スレッド A力 スレッド Bへの切り替え時の動的再構成演算回路の遷移図 である。本図では、スレッド切り替えの際の、サイクル 1〜サイクル 11までの動的再構 成演算回路の遷移を表す。動的再構成演算回路 C1は、サイクル 1の回路を表し、動 的再構成演算回路 C2は、サイクル 2の回路を表すものとする。演算セル内の「A」は スレッド A用の構成、「B」はスレッド B用の構成、「C」はスレッド C用の構成であること を表し、ノ、ツチングは実行していることを表す。また、「再構成」は次スレッド用に再構 成していることを表す。 [0070] 図 18は、スレッド切り替えの際の、マルチスレッドプロセッサ 1000等からの制御信 号と演算セル等の処理との関係を表すタイムチャートである。本図では、 16個の演算 セル 2100のうち、説明の便宜上、演算セル a、演算セル b、演算セル fの処理のみを 表している。
図 19は、これら制御信号と出力データ選択器 2250の処理との関係を表すタイムチ ヤートであり、また、図 20は、これらの制御信号と演算結果記憶部 5000の処理との 関係を表すタイムチャートである。
[0071] 尚、図 18〜図 20のタイムチャートのサイクルは、図 17のサイクルと同じタイミングの サイクルである。すなわち、図 17と図 18のサイクル C1は、同じタイミングのサイクルで ある。
図 21は、演算結果記憶部 5000内の各スレッドの領域を表す図である。 本実施形態では、スレッド A用の領域を 0x00〜0x3F番地、スレッド B用の領域を 0x0 040〜0x5F番地、スレッド C用の領域を 0x60〜0x6F番地とする。
[0072] 以下、図 14のフローチャートに沿って、切り替え処理を説明する。
図 14は、スレッド切り替え時のマルチスレッドプロセッサ 1000と構成切替部 4000と の処理を示すフローチャートである。
まず、マルチスレッドプロセッサ 1000は、動的再構成演算回路 C1 (図 17参照)を 動作させながら現スレッドであるスレッド Aを実行する(ステップ S100)。
[0073] 具体的には、マルチスレッドプロセッサ 1000は、演算データを演算セル a、演算セ ル1)、演算セル c、演算セル dに供給する。
演算データを入力した各演算セルは、順に下段の演算セルに演算結果を渡して 、 き、最後に演算結果記憶部 5000に演算結果を記憶する。
マルチスレッドプロセッサ 1000は、次のループの開始時にこれらの記憶されている 演算データを読み出し、所定の処理を施し、演算セルに供給することを繰り返すこと でスレッド Aを実行する(図 6参照)。
[0074] マルチスレッドプロセッサ 1000は、この繰り返しであるループの最後のループであ る場合、すなわち、スレッド Aに与えた時間のうちの最後のループである力否かを判 断し (ステップ S 110)、最後のループであってプロセッサ 100の処理を終了しないと 判断した場合 (ステップ SI 10 : Y、ステップ SI 20 : Ν)には、スレッドの切り替えを開始 する。
[0075] 最後のループではないと判断した場合 (ステップ S 110 : Ν)には、現スレッドのルー プを繰り返す。また、プロセッサ 10の処理を終了すると判断した場合 (ステップ S120
: Υ)には、終了処理を行う。
スレッドの切り替えを開始すると判断したマルチスレッドプロセッサ 1000は、次スレ ッドを選択し (ステップ S 130)、構成切替部 4000に切り替えの指示を出す (ステップ
S140)。この指示に際し、マルチスレッドプロセッサ 1000は、現スレッドの IDと次スレ ッド IDとを渡す (ステップ S 141)。
[0076] その後、マルチスレッドプロセッサ 1000は、次スレッドの処理を開始する(ステップ S
100)。但し、構成切替部 4000からの、処理の停止信号の発行 (ステップ S221)があ つた場合は、次スレッドの処理を開始しない。
切り替え指示を受けた構成切替部 4000は (ステップ S200)、待ちサイクル数を算 出する(ステップ S210)。スレッド Aからスレッド Bへの切り替えでは、待ちサイクル数 は「0 (ゼロ)」となる。待ちサイクル数の算出処理の詳細は、図 15を用いて後で説明 する。
[0077] 待ちサイクル数を算出した構成切替部 4000は、算出したサイクル数待つ (ステップ S220)。待ちの間は、マルチスレッドプロセッサ 1000に対して、停止信号を発行する (ステップ S221)。
その後、演算結果記憶部 5000の読み込み領域を、次スレッド用に切り替え (ステツ プ S230)、演算セル及び演算ソース選択器の再構成を行う(ステップ S240)。
[0078] この構成切替部 4000が行う演算セル及び演算ソース選択器の再構成は、一度に 行われるのではなく、図 17の動的再構成演算回路 C2〜動的再構成演算回路 C9で 示されるように、順を追って行われる。この演算セル及び演算ソース選択器の再構成 処理は、図 16を用いて後で説明する。
構成切替部 4000は、全ての演算セル 2100及び演算ソース選択器 2210の再構 成が終了すると、出力データ選択器 2250の再構成を行う (ステップ S250、図 17 :動 的再構成演算回路 C10)。この出力データ選択器の再構成処理のタイミングについ ては、図 19を用いて後で説明する。
[0079] 出力データ選択器 2250の再構成が行われると、全てスレッド B用の構成となる(図 17 :動的再構成演算回路 Cl l)。
その後、演算結果記憶部 5000の書き込み領域を、次スレッド用に切り替える (ステ ップ S 260)。
一方、構成切替部 4000からの停止信号を受信したマルチスレッドプロセッサ 1000 は、次スレッドの実行の開始を停止し、停止信号が切れた場合には、 1サイクル待つ て、次スレッドの演算データの供給を開始する(ステップ S100)。この 1サイクルは、 最初の演算セルが再構成されるサイクルである。
[0080] このスレッドの切り替え処理の際、マルチスレッドプロセッサ 1000は、演算結果記 憶部 5000から次スレッド用の演算データを読み込む力 同時に、現スレッドの演算 結果が演算結果記憶部 5000に書き込まれて 、る。この演算結果記憶部の領域変更 処理 (ステップ S230、ステップ S260)のタイミングは、図 20を用いて後で説明する。
<待ちサイクル数の算出処理 >
図 15は、待ちサイクル数の算出処理を示すフローチャートである。
[0081] 待ちサイクル数とは、スレッドを切り替える場合に、次スレッドが滞りなく実行できるよ うに、切り替え処理の開始を遅らせるサイクル数である。
現スレッドの演算段数と次スレッドの演算段数が異なる場合には、現スレッドの演算 が終了した演算セルを、即、次スレッド用に書き換えたとしても、その演算結果を渡す 演算セルが現スレッドの演算を行っていて、次スレッド用への書き換えが出来ない場 合等がある力 である。
[0082] このような場合、次スレッドの実行制御が煩雑となるため、本実施形態では、スレッド 切り替え処理の演算セル等の再構成の開始を遅らせることで、次スレッドの実行をス ムーズに行うことを可能として 、る。
構成切替部 4000は、マルチスレッドプロセッサ 1000力も切り替えの指示を受けた 際に(図 14 :ステップ S200参照)受け取った現スレッド IDと次スレッド IDとの演算段 数から、待ちスレッド数を算出する。
[0083] スレッドの演算段数は、スレッド段数テーブル 4200を参照して求める(図 9 (b)参照 ) o
例えば、現スレッドのスレッド ID4210が「スレッド A」の場合、演算段数 4220は「4」 である。
まず、現スレッドの演算段数を「M」、次スレッドの演算段数を「N」とすると、 Mから N を減算し「D」を求める(ステップ S300)。
[0084] 「D」が 0 (ゼロ)より大きい場合は、待ちサイクル数を Dとし (ステップ S320)、 「D」が 0 (ゼロ)以下の場合は、待ちサイクル数を 0 (ゼロ)とする (ステップ S330)。
すなわち、スレッドの演算段数力 同じ又は大きなスレッドへの切り替えの場合には 、待ちサイクル数は 0 (ゼロ)となり、演算段数がより小さいスレッドへの切り替えの場合 には、その差の段数分が待ちサイクル数となる。
[0085] 例えば、スレッド Aからスレッド Bに切り替わる場合は、演算段数「4」から「8」である ため、待ちスレッド数は 0 (ゼロ)となり、スレッド Cからスレッド Aに切り替わる場合は、 演算段数「16」から「4」であるため、待ちスレッド数は 12となる。
従って、スレッド Aからスレッド Bへの切り替えの場合には、サイクルの待ちは無く、 演算セルの再構成が開始される。図 17に示すように、動的再構成演算回路 C1の次 のサイクルでは、動的再構成演算回路 C2のように再構成が行われる。
[0086] <演算セル及び演算ソース選択器の再構成処理 >
図 16は、演算セル、演算ソース選択器の再構成処理を示すフローチャートである。 まず、構成切替部 4000は、再構成する演算セル 2100と演算ソース選択器 2210と を選択する (ステップ S400)。ここでの演算ソース選択器は、演算セルと対となるもの である。
[0087] 最初に選択される演算セル 2100は、次スレッドの演算段数目 4130が「0 (ゼロ)」の 演算セルである。演算段数目は、演算セル段数テーブル 4100を参照する(図 9 (a) 参照)。
例えば、次スレッドがスレッド Bの場合、最初に選択される演算セルは、演算セル a、 演算セル cの 2つである。
[0088] 次に、構成切替部 4000は、構成情報記憶部 3000に対し、選択した演算セルと演 算ソース選択器の構成情報を送出を依頼する (ステップ S410)。この際、スレッド ID と演算セル IDとを通知する(ステップ S411)。
依頼を受けた構成情報記憶部 3000は (ステップ S500)、通知されたスレッド IDと 演算セル IDから構成情報名 3130を求め、その名で特定できる構成情報を選択し( ステップ S510)、送出する(ステップ S520、ステップ S521)。
[0089] 例えば、選択された演算セルが演算セル aと演算ソース選択器 aの場合は、演算セ ル aと演算ソース選択器 aの構成情報が送出される(図 18 :サイクル C2の構成情報記 憶部からの信号)。
また、同時に、構成切替部 4000は、選択した演算セルと演算ソース選択器に対し て、再構成を指示する (ステップ S420、ステップ S421)。
[0090] 再構成の指示を受けた演算セルと演算ソース選択器は (ステップ S600)、構成情 報を受信し (ステップ S610)、再構成を行う(ステップ S620)。
例えば、選択された演算セル等が演算セル aと演算ソース選択器 aの場合は、構成 情報の信号線カゝら構成情報を取得し、再構成する(図 18 :サイクル C2の演算セル aと 演算ソース選択器 aの処理、図 17 :動的再構成演算回路 C2)。
[0091] 再構成を行った演算セルと演算ソース選択器は、演算を行う (ステップ S630)。
例えば、再構成された演算セル aと演算ソース選択器 aは、スレッド Bの演算を行う( 図 18 :サイクル C3の演算セル aと演算ソース選択器 aの処理)。このとき、マルチスレ ッドプロセッサ 1000は、スレッド B用の演算データを演算ソース選択器に提供する。
[0092] 構成情報記憶部 3000と、選択した演算セル及び演算ソース選択器とに対して指 示を出した構成切替部 4000は、全ての演算段数の演算セルの再構成を行って!/、な V、場合は (ステップ S430: N)、次の段数の再構成を行う(ステップ S400)。全ての演 算セル段数の再構成を行った場合 (ステップ S430 :Y)は、終了する。
例えば、次スレッドがスレッド Bの場合には、 2段目の演算セル、すなわち、演算セ ル段数テーブル 4100で演算セル段数 4130力 「1」の演算セル、演算セル bと演算セ ル dが選択され、再構成される(図 18 :サイクル C3参照、図 17 :動的再構成演算回路 C3)。
[0093] 次スレッドがスレッド Bの場合は、演算段数 4220が「8」であるため、演算セル段数 4 130が「0」〜「7」までを繰り返すことになる(図 17 :動的再構成演算回路 C2〜C9)。 <出力データ選択器の再構成処理 >
図 19は、制御信号と出力データ選択器 2250の処理との関係を表すタイムチャート である。
[0094] 出力データ選択器 2250は、演算セルが全て次スレッド用に切り替わったら、次スレ ッド用に再構成される(図 19:サイクル C 10、図 14:ステップ S240)。
再構成の手順は、図 16に示す演算セルの再構成と同様である。以下、簡単に説明 する。
次スレッド用に全演算セルが再構成されたと判断した構成切替部 4000は(図 16: ステップ S430 : Y)、構成情報記憶部 3000に次スレッドの出力データ選択器 2250 の構成情報を送出するよう依頼する。同時に、出力データ選択器 2250に、再構成を 指示する。
[0095] 次スレッドの出力データ選択器 2250の構成情報を送出するよう依頼を受けた構成 情報記憶部 3000は、演算セル構成情報データ 3100を参照し、該当する構成情報 を送出する。再構成指示を受けた出力データ選択器 2250は、構成情報を入力し、 再構成を行う。
例えば、次スレッドがスレッド Bの場合、スレッド Bの演算段数「8」の処理が終了した ら、構成情報記憶部 3000は構成情報を送出し、出力データ選択器 2250は、構成 情報を入力し、再構成を行う(図 19 :サイクル C10、図 17 :動的再構成演算回路 C10
) o
[0096] 尚、図 19の出力データ選択器 2250の「スレッド A用の構成」を示す図における点 線で示す期間(サイクル C5〜サイクル C9)は、出力データ選択器 2250が処理を行 わない期間であることを示している。スレッド Aの実行が終了し、出力データ選択器 2 250に演算結果データが出力されないからである。
<演算結果記憶部の領域変更処理 >
図 20は、制御信号と演算結果記憶部 5000の処理との関係を表すタイムチャートで ある。
[0097] 演算結果記憶部 5000は、図 21に示すようにスレッド毎に領域が確保されており、 出力データ選択器 2250からの出力を記憶し、マルチスレッドプロセッサ 1000によつ て読み出される。
通常は、同一スレッドの領域に対して読み書きが行われる力 スレッド切り替えの際 には、記憶する演算データのスレッドと、読み出される演算データのスレッドが異なる 場合が生じ、アクセスする領域が異なる。
[0098] 例えば、現スレッドがスレッド Aで、次スレッドがスレッド Bの場合には、スレッド A用 の領域に演算データを書き込み、スレッド B用の領域力 演算データを読み込む必 要がある。
構成切替部 4000は、次スレッドの最初の段数の演算セルを再構成するタイミング で、読み出し領域を次スレッド用に切り替える指示を演算結果記憶部 5000に出す( 図 20 :サイクル C2)。最初の演算セルの再構成のサイクルの次のサイクルで、マルチ スレッドプロセッサ 1000から読み出される力もである。
[0099] また、次スレッド用に演算セルの全てを再構成したタイミングで、書き込み領域を次 スレッド用に切り替える指示を演算結果記憶部 5000に出す(図 20:サイクル C10)。 最後の演算セルの再構成が行われる次のサイクルで、演算データが書き込まれるか らである。
尚、図 20の演算結果記憶分 5000の「スレッド A用の書き込み」期間を示す図にお ける点線で示す期間(サイクル C5〜サイクル C9)は、スレッド Aによる書き込みは行 われな 、期間であることを示して!/、る。
[0100] く現スレッドの演算段数より小さい演算段数のスレッドに切り替える場合〉
演算段数がより小さ 、スレッドへの切り替える場合にっ 、て、図 22及び図 23を用い て説明する。
ここでは、演算段数が「16」のスレッドじから、演算段数が「4」のスレッド Aに切り替 わる場合を説明する。
[0101] 図 22は、スレッド C力 スレッド Aへの切り替え時の動的再構成演算回路の遷移図 である。本図では、スレッド切り替えの際の、サイクル 1〜サイクル 19までの動的再構 成演算回路の遷移を表す。動的再構成演算回路 C1は、サイクル 1の回路を表し、動 的再構成演算回路 C2は、サイクル 2の回路を表すものとする。
図 23は、スレッド切り替えの際の、マルチスレッドプロセッサ 1000等からの制御信 号と演算セル等の処理との関係を表すタイムチャートである。本図では、 16個の演算 セル 2100のうち、説明の便宜上、演算セル a、演算セル e、演算セル iの処理のみを 表している。
[0102] 切り替え処理の流れは、図 14〜図 16のフローチャートと同様である。ここでは、上 述した演算段数がより大きいスレッドへの切り替えの場合との相違点について説明す る。
相違点は、演算セル等の再構成の開始タイミングが異なる点である。
すなわち、上述した演算段数がより大きいスレッドへの切り替えの場合には、構成 切替部 4000は、マルチスレッドプロセッサ 1000からの切り替え指示後、すぐに演算 セルの再構成処理を開始した。待ちサイクル数が 0 (ゼロ)だった力もである。
[0103] 一方、演算段数がより小さいスレッドへの切り替えの場合には、必要なサイクル数待 つてカゝら演算セルの再構成処理を行う点が異なる。この場合、現スレッドの演算が終 了した演算セルを、即、次スレッド用に書き換えて演算を実行したとしても、その演算 結果を渡す演算セルが現スレッドの演算を行って 、て、次スレッド用への書き換えが 出来な ヽ場合等があるからである。
[0104] 現スレッドであるスレッド Cの演算段数(M= 16)から、次スレッドであるスレッド Aの 演算段数 (N= 4)を減算したサイクル数 (D)は、 16— 4 = 12となり(図 14 :ステップ 2 10、図 15 :ステップ S300)、 0 (ゼロ)より大きいことから(ステップ S310 :Y)、待ちサ イタル数は 12サイクルとなる(ステップ S320)。
構成切替部 4000は、この 12サイクルを待って(図 14 :ステップ S220、図 23 :サイク ル C2〜サイクル C13)、演算セル等の再構成を開始する(図 14 :ステップ S240、図 23 :サイクル C14)。図 22に示す動的再構成演算回路 C14〜動的再構成演算回路 C17で、再構成を行う。
[0105] 待っている間、すなわち、動的再構成演算回路 C2〜動的再構成演算回路 C13ま でのサイクル C2〜サイクル C13間は、スレッド Cの処理のみ進んでいる。
その後、サイクル C 14でスレッド Aの最初の段の演算セルから再構成を行う。図 22 に示す動的再構成演算回路 C14である。
一方、マルチスレッドプロセッサ 1000は、このサイクル C2〜サイクル C14の間は、 次スレッドであるスレッド Aの実行開始を待って 、る状態である(図 23:サイクル C2〜 サイクル C 14)。
[0106] ここで、スレッドの切り替え処理のスケジュールをまとめると、図 24のようになる。図 2 4は、スレッドの切替スケジュールを表したタイムチャートである。
ここでは、スレッド A→スレッド B→スレッド C→スレッド Aとスレッドを切り替える場合 を示している。
マルチスレッドプロセッサ 1000の期間 9000は、マルチスレッドプロセッサ 1000の スレッド Aの処理期間を、期間 9001はスレッド Bの処理期間を、期間 9002はスレッド Cの処理期間を表す。期間 9008は、動的再構成演算回路 2000内の演算処理終了 待ちのバブル期間、すなわち、マルチスレッドプロセッサ 1000による現スレッドへの 演算データの供給が終了し、次スレッドの演算データの供給が始まるまでの期間で ある(図 22 :動的再構成演算回路 C2〜C14)。
[0107] 期間 9100aは演算セル aのスレッド Aの処理期間を、期間 9101aはスレッド Bの処 理期間を、期間 9102aはスレッド Cの処理期間を表す。期間 9108aは、動的再構成 演算回路 2000内の演算処理終了待ちのバブル期間である(図 22 :動的再構成演 算回路 C2〜C14)。
期間 9100mは演算セル mのスレッド Aの処理期間を、期間 910 lmはスレッド Bの 処理期間を、期間 9102mはスレッド Cの処理期間を表す。期間 9109mは、前段の 演算セル 2100の構成切り替え待ちのバブル期間である。スレッド Aからスレッド Bへ の切り替え時の期間 9109mは、図 17に示す動的再構成演算回路 C5〜C9の期間 である。
[0108] 期間 9200は出力データ選択器 2250のスレッド Aの処理期間を、期間 9201はスレ ッド Bの処理期間を、期間 9202はスレッド Cの処理期間を表す。期間 9209は、演算 セル 2100の構成切り替え待ちのバブル期間である。スレッド Aからスレッド Bへの切り 替え時の期間 9209は、図 17に示す動的再構成演算回路 C5〜C10の期間である( 図 19:サイクル C5〜サイクル C 10参照)。
[0109] <プログラム例 >
以下、本実施形態のプロセッサで実行する各種命令例、プログラム例を説明する。 まず、図 25は、演算結果記憶部 5000に関する命令例等である。
図 25 (a)は、演算結果記憶部 5000内のスレッド占有領域の設定命令例であり、図
25 (b)は、各スレッド領域の設定プログラム例であり、図 25 (c)は、スレッド実行時の 設定値である。
[0110] 図 25 (a)の「DMset」命令では、「St_Adr」番地から「Ed_Adr」番地までを、スレッド番 号「The_num」のスレッドが使用することを指定する。
図 25 (b)のプログラムは、スレッド Aは、「0x00」番地から「0x3F」番地までを使用し、 スレッド Bでは、「0x40」番地から「0x5F」番地を、スレッド Cでは、「0x60」番地から「0x6 F」番地までを使用する旨を指定している(図 21参照)。
[0111] 図 25 (c)は、プロセッサ 100がスレッド A等の処理を開始するときに、演算結果記憶 部 5000に記憶されている内容例である。
図 25 (c)に示すように、演算結果記憶部 5000内に、各スレッドで FIFOの読み出し アドレス(DMRA)と、書き込みアドレス(DMWA)とが記憶される。マルチスレッドプ 口セッサ 1000からの読み出し番地は、実行中のスレッドの DMRAとなり、動的再構 成演算回路 2000からの書き込み番地は、実行中のスレッドの DMWAとなる。 DMR A、 DMWAの初期値は、図 5 (b)のプログラムの実行時に、各スレッド用領域の開始 番地として設定される。
[0112] 例えば、スレッド Aの DMRAを DMRA— A、 DMWAを DMWA— A、スレッド Bの DMRAを DMRA— B、 DMWAを DMWA— B、スレッド Cの DMRAを DMRA— C 、 DMWAを DMWA— Cとする。図 25 (b)のプログラムの実行により、それぞれスレツ ド領域の開始番地は、図 25 (c)のように設定がなされる。
この設定後、マルチスレッドプロセッサ 1000及び、動的再構成演算回路 2000にて 、各スレッドの処理が行われる。動的再構成演算回路 2000より、演算結果が演算結 果記憶部 5000に書き込まれれば、各スレッドの DMWAをインクリメントすればよ!、。
[0113] 例えば、 DMWAの単位がワードであり、書き込まれるデータが 1ワードである場合 には、「DMWA=DMWA+ 0x01」のように、実行中のスレッドの DMWAのみがィ ンクリメントされる。
なお、演算データが W個の場合、 DMWAには、 Wが加算される。 また、マルチスレッドプロセッサ 1000から、演算結果記憶部 5000内の演算結果デ ータが読み出されると、 DMRAをインクリメントすればょ 、。
[0114] 「DMRA=DMRA+ 0x01」のように、実行中のスレッドの DMRAのみがインクリメ ントされる。
なお、演算データが W個の場合、 DMRAには、 Wが加算される。
各 DMWA、 DMRAが図 25 (b)のプログラムで設定された、各スレッド領域の終了 番地 Ed— Adrを超えた場合には、 St— Adrが設定される。
[0115] この構成により、各スレッドの領域を FIFOとして管理できる。
次に、図 26 (a)は、マルチスレッドプロセッサ 1000からの動的再構成演算回路 20 00への演算命令例であり、図 26 (b)は、演算結果記憶部 5000に対する演算結果 読み出し命令例である。
図 26 (a)の「Rcn_exe」命令は、動的再構成演算回路 2000での演算命令であり、「s rcA」と「31^8」は、マルチスレッドプロセッサ 1000内のレジスタ番号を指定する。
[0116] この命令で、スレッドの 1ループが実行される。
図 26 (b)の「Rcn_rd」命令は、動的再構成演算回路 2000の演算結果を読み出す 命令であり、「dstA」は、マルチスレッドプロセッサ 1000内のレジスタ番号であり、当該 レジスタに演算結果データを格納する。
簡単に動作を説明すると、「Rcn_exe」命令により、実行中のスレッドでの構成にて、 動的再構成演算回路 2000内の演算が実行される。この演算の演算データとして、 「 Rcn_exe」命令で指定したレジスタ番号のデータを使用する。動的再構成演算回路 2 000の演算結果データは、演算結果記憶部 5000の該当スレッドの DMWAの指す アドレスに格納される。
[0117] 「Rcn_rd」命令は、演算結果記憶部 5000に格納されている演算データを、マルチス レッドプロセッサ 1000に読み出す命令であり、該当スレッドの DMRAの指すアドレス の演算データが、「Rcn_rd」命令で指定したレジスタに転送される。
尚、演算結果記憶部 5000内に該当スレッドのデータが格納されていない場合、演 算結果記憶部 5000は、マルチスレッドプロセッサ 1000に対して、演算停止信号を 発行する。演算データが無いことの判定は、該当スレッドの DMRAと DMWAが同じ 場合であることを検出すればよい。
[0118] 演算結果記憶部 5000内に該当スレッドのデータが格納されていない場合は、マル チスレッドプロセッサ 1000が動的再構成演算回路 2000に演算データを供給せずに 、演算結果を読み出した場合に生ずる。この場合、マルチスレッドプロセッサ 1000は 、演算結果記憶部からの読み込み処理を停止し、動的再構成演算回路には別の演 算データを供給するなど、スレッドの処理に応じた動作を行うものとする。
[0119] 動的再構成演算回路 2000より、演算結果記憶部 5000に演算結果データが格納 された後、演算停止信号が解除される。その後、マルチスレッドプロセッサ 1000は、 演算結果記憶部 5000に格納された演算結果データを読み出す。
以上の構成により、演算結果データは、スレッド毎に FIFOでの管理を実現でき、動 的再構成演算回路 2000の構成の切り替えに左右されることなく演算結果記憶部 50 00内の各スレッドの所定領域に格納される。
[0120] このようにすることにより、マルチスレッドプロセッサ 1000では、動的再構成演算回 路 2000のスレッドの切り替えによる演算結果格納の順番を意識する必要がないため 、所望のスレッドでの演算結果データの管理が容易となる。
具体的には、 Rcn— exe命令の演算結果を取得する、 Rcn— rd命令は、動的再構 成演算回路 2000の演算段数分のサイクル + 1サイクル後に発行可能となる。動的再 構成演算回路 2000内での演算のために、演算段数分のサイクルを要し、更に演算 結果記憶部 5000への書き込みのために、 1サイクル要する。
[0121] Rcn— exe命令と、 Rcn— rd命令の発行を、具体的にプログラム図 27 (a)と図 27 (b )とを用いて説明する。
図 27 (a)は、スレッド Aでの Rcn— exe命令と、 Rcn— rd命令のみのプログラムであ る。このプログラムの実行前には、演算結果記憶部 5000には、スレッド A用の演算結 果データは格納されて 、な 、ものとする。
[0122] 例えば、スレッド Aは、引数を変えつつ Rcn— exe命令と Rcn— rd命令とを繰り返し 実行することで処理を行う。
図 27 (a)の Rcn— exe命令が発行されると、マルチスレッドプロセッサ 1000内のレ ジスタ Rl、 R2のデータが動的再構成演算回路 2000に伝達され、動的再構成演算 回路 2000内での演算が開始される。
[0123] 次のサイクルで、マルチスレッドプロセッサ 1000は、 Rcn— rd命令を発行する。こ のサイクルでは、演算結果記憶手段 5000内に演算結果データは格納されていない (DMWA— Aと DMRA— Aが同じ値である)。そのため、マルチスレッドプロセッサ 1 000は、演算結果記憶部 5000より、演算停止信号を受け、処理を停止する。
Rcn— exe命令発行カゝら 4サイクル後(Rcn— rd命令発行から 3サイクル後)、動的 再構成演算回路 2000内の演算が完了する。
[0124] 次のサイクルで、演算結果記憶手段 5000に演算結果データが格納され、 DMWA — Aの値が増え、 DMWA— Aが DMRA— Aと異なる値になり、演算結果記憶部 50 00からマルチスレッドプロセッサ 1000への演算停止信号が解除される。この後、 Rc n—rd命令の実行が再開され、演算結果記憶部 5000からの演算結果データの読み 出し処理が行われる。
[0125] 以上のプログラムにより、 Rcn— exe命令、 Rcn— rd命令での動的再構成演算回路 2000の演算指示及び、演算結果読み出しを実現できる。
図 27 (a)のプログラムでは、マルチスレッドプロセッサ 1000の演算停止が 4サイク ル発生したが、演算停止を発生させないプログラムを図 27 (b)を元に説明する。 図 27 (b)のプログラムは、図 27 (a)の Rcn— exe命令、 Rcn— rd命令の間に 4サイ クル分の演算用命令を挿入してある。 Add命令は、マルチスレッドプロセッサ 1000内 のレジスタを演算ソースとし、加算を行い、演算結果データをマルチスレッドプロセッ サ 1000内のレジスタに書き込む命令である。演算リソースは、マルチスレッドプロセッ サ 1000内で閉じており、動的再構成演算回路 2000を使用しない。 Add命令の演算 には 1サイクル必要である。
[0126] この Add命令力 サイクル分あるため、 Rcn— rd命令の発行は、 Rcn— exe命令の 発行から 5サイクル経過しているため、動的再構成演算回路 2000での演算が終了し 、 DMWA— Aが DMRA— Aと異なる値になっており、マルチスレッドプロセッサ 100 0は演算の停止をしない。
以上説明した構成により、動的再構成演算回路 2000内の構成切り替え時の性能 劣化を抑制できる。また、一度に読み出し書き込みを必要とする中間演算データを退 避する必要が無ぐ順次読み出し書き込みが発生する演算結果データだけを格納す ればよい。このため、記憶手段を少ない入出力ポートのメモリで実現でき、回路の面 積を抑制できる。
[0127] また、この記憶領域に格納された演算結果データは、 FIFOでスレッド毎に管理さ れる。このため、マルチスレッドプロセッサ 1000で実行するプログラムでは、特に構成 切り替え時の演算順番を意識せずに済み、スレッド毎の管理で良いため、読み出し のプログラムを容易に作成できる。
<実施形態 2>
実施形態 1では、演算段数がより小さいスレッドに切り替える際には、マルチスレッド プロセッサ 1000の待ちサイクルが生じて!/、た(図 24:期間 9008参照)。
[0128] 実施形態 1では、スレッドのスムーズな切替のために、この待ちサイクルを構成切替 部 4000で意識して、マルチスレッドプロセッサ 1000を停止させていた。本実施形態 では、この待ちサイクルを構成切替部 4000ではなぐプログラム側で意識するもので ある。
従って、本実施形態では、マルチスレッドプロセッサ 1000において、この待ちサイ クル期間は生じな 、ことになる。
[0129] 図 28は、待ちサイクル期間が生じないスレッド切り替えのスケジュールを示したタイ ムチャートである。図 24のスケジュールと比べ、期間 9008が生じていない以外は、 図 24と同様である。従って、待ちサイクルを算出し、マルチスレッドプロセッサに停止 信号を発行すること以外は、実施形態 1と同様である。
この待ちサイクル期間をなくしたことにより、本実施形態では、プログラム側で待ちサ イタル期間を意識してスレッドを実行することになる。
[0130] <概要 >
図 29は、命令仕様書の Rcn— exe命令の記載例である。
本図では、動的再構成演算回路 2000への演算指示命令と演算結果記憶部 5000 へのデータ読み出し命令、及び、それぞれの解説例を示す。
実施形態 1では、スレッド切り替え時に、マルチスレッドプロセッサ 1000に、スレッド Cからスレッド Aでの処理切り替えにおいて、期間 9008の演算停止期間が発生した( 図 24参照)。これは、動的再構成演算回路 2000の演算段数が多い構成から、少な い構成に変更する場合、構成の切り替え期間、動的再構成演算回路 2000への新た な演算命令の発行を停止するためである。この制御は、構成切り替え手段 4000より
、図 14のステップ S210等の処理により行われていた。
[0131] 実施の形態 2では、図 14のステップ S210等の、構成切り替え部 4000からマルチ スレッドプロセッサ 1000への演算停止制御のみを省く(ステップ S210とステップ S22
0の Dサイクル待機する処理は残る)。その他の構成切り替え部 4000の制御フローは
、実施の形態 1と同じである。
マルチスレッドプロセッサ 1000への演算停止制御を省くことにより、期間 9008の演 算停止期間が発生せず、命令を発行できる期間が増加する。期間 9008の演算停止 期間が発生しない動作スケジューリングが図 28となる。
[0132] ただし、期間 9008の間、動的再構成演算回路 2000への Rec—exe命令は保証さ れない。プログラマーにより、期間 9008の間(Dサイクル)、 Rec—exe命令の発行し ないように、保証されなければならない。
そのため、命令仕様書などに、 Rcn— exe命令は、 Dサイクル期間発行してはいけ ないと、記述されることが望ましい。
<実施形態 3 >
実施形態 1では、動的再構成演算回路 2000から出力された演算データは、一旦、 演算結果記憶部 5000に記憶され、マルチスレッドプロセッサ 1000は、演算結果記 憶部 5000から演算データを読み出していた。本実施形態では、最低限記憶してお 力なければならない演算データ、すなわち、スレッドに割当てられた時間が終了する 時の演算結果データ以外は、演算結果記憶部 5000に記憶せずに、直接マルチスレ ッドプロセッサ 1000に渡すものである。
[0133] <概要 >
実施形態 3が実施形態 1と異なる点は、図 1の演算結果記憶部 5000から、マルチ スレッドプロセッサ 1000へ出力される処理および構成であり、演算結果選択器 6000 が追加されて 、る点である。
図 30は、本発明の実施形態 3における動的再構成論理回路装置 200の構成を示 す機能ブロック図である。本図において、図 1と同じ構成要素については同じ符号を 用い、説明を省略する。
[0134] この演算結果選択器 6000は、動的再構成演算回路 2000と演算結果記憶部 500 0からの演算結果データを選択し、マルチスレッドプロセッサ 1000に伝達する。制御 は、演算結果記憶部 5000より行われる。
実施形態 1では、演算結果データは、演算結果記憶手段 5000からのみ、マルチス レッドプロセッサ 1000に伝達されていた。この構成では、必ず演算結果記憶手段 50 00を経由するため、記憶手段 5000での書き込み、読み出しのサイクル分だけ、遅延 が発生する。
[0135] すなわち、動的再構成演算回路 2000演算結果データを、演算直後に、マルチス レッドプロセッサ 1000の演算データとする場合には、この遅延により演算性能が劣化 する。
実施の形態 3では、この問題を解決する。
演算結果記憶手段 5000内に演算データが格納されている(DMWAと DMRAが 異なる値)場合は、演算結果選択器 6000は、演算結果記憶部 5000からのデータを 選択し、実施形態 1で説明した処理が行われる。
[0136] 一方、演算結果記憶手段 5000内に演算データが格納されていない(DMWAと D
MRAが同じ値)場合は、演算結果記憶部 5000は、マルチスレッドプロセッサ 1000 に対して、演算停止信号を発行する。
その後、動的再構成演算回路 2000が演算結果データを演算結果記憶部 5000に 格納するサイクルにて、演算結果記憶部 5000は以下の制御を行う。
[0137] 演算結果選択器 6000に対して、動的再構成演算回路 2000からのデータを選択 するように制御する。また、マルチスレッドプロセッサ 1000に対する演算停止を解除 する。
この処理により、動的再構成演算回路 2000の演算結果データは、演算結果記憶 部 5000に格納されず、マルチスレッドプロセッサ 1000に直接渡される。該当スレッド の DMWA、 DMRAのアドレスはインクリメントされな!/、。
[0138] この構成および制御により、演算結果記憶部 5000での書き込み、読み出し処理分 のレイテンシを抑制できる。これにより、動的再構成論理回路装置 100の演算性能を 向上が可能となる。
<実施形態 4>
図 31は、本発明の実施形態 4における動的再構成論理回路装置 300の構成を示 す機能ブロック図である。図 31において、図 1と同じ構成要素については同じ符号を 用い、説明を省略する。
[0139] 実施形態 1と異なるのは、図 1のマルチスレッドプロセッサ 1000が存在せず、演算 ソース記憶部 7000が追加されて 、ることである。
すなわち、本実施形態は、処理は全て動的再構成演算回路 2000で行うことが出 来るスレッドを実行する場合である。
<概要 >
実施形態 4では、マルチスレッドプロセッサ 1000が行っていた、動的再構成演算回 路 2000への演算データ供給を演算ソース記憶部 7000が行い、動的再構成演算回 路 2000への演算指示を構成切り替え手段 4000が行 ヽ、演算結果記憶部 5000か らの演算結果データ読み出しを図示しないデータ転送コントローラ DMACが行う。
[0140] 演算ソース記憶部 7000は、動的再構成演算回路 2000の演算ソースデータが格 納され、図示しな!、データ転送コントローラ DMACより演算ソースデータが供給され る。
演算ソース記憶部 7000は、構成切替部 4000より制御され、書き込み、読み出しの アドレスはスレッド毎に管理される。
この演算ソース記憶部 7000の読み出し '書き込みアドレスの管理は、実施形態 1の 演算結果記憶部 5000と同じとなる。但し、読み出し要求は構成切替手段 4000によ り行われ、書き込みデータはデータ転送コントローラ DMACから、読み出しデータは 動的再構成演算回路 2000に転送される。
[0141] 以上説明した構成により、プロセッサを構成要素としなくとも、動的再構成演算回路 2000内の構成切り替え時の性能劣化を抑制できる。
また、一度に読み出し書き込みを必要とする中間演算データを退避する必要が無く 、順次読み出し書き込みが発生する演算結果データだけを格納すればよい。このた め、記憶手段を少ない入出力ポートのメモリで実現でき、回路の面積を抑制できる。
[0142] また、演算ソース記憶部 7000、演算結果記憶部 5000内の記憶領域に格納された 演算結果データは、 FIFOでスレッド毎に管理される。このため、プロセッサ 300で実 行するプログラムでは、特に構成切り替え時の演算順番を意識せずに済み、スレッド 毎の管理で良いため、データ転送コントローラ DMACでは、スレッド毎の演算結果デ ータの読み出しを容易に行える。
[0143] <応用例 >
本発明のプロセッサは、例えば、移動体通信装置等に搭載することが可能である。 図 32は、本発明のプロセッサが搭載された移動体通信装置を示す図である。
移動通信装置 10000は、ディスプレイ 11000、撮像手段 12000、音出力手段 130 00、音入力手段 14000、コマンド入力手段 15000、アンテナ 16000及び、内部に 本発明であるプロセッサ 100 (図 1参照)を備える。
[0144] プロセッサ 100は、ディスプレイ 11000と、ビデオフレームバッファを介して接続され る。プロセッサ 100は、 JPEGなどの静止画デコード処理、 MPEGなどの動画デコー ド処理、ゲームなどの 3次元グラフィックス処理、テキスト描画処理を行い、またそれぞ れの映像の重ね合わせ処理を行う。ディスプレイ 11000は、プロセッサ 100で処理さ れた映像を表示する。
[0145] また、プロセッサ 100は、撮像手段 12000と、ビデオフレームバッファを介して接続 される。プロセッサ 100は、撮像手段 12000より入力された映像に対して、 JPEGなど の静止画エンコード処理、 MPEGなどの動画エンコード処理を行う。
さらに、プロセッサ 100は、音出力手段 13000と、オーディオフレームバッファを介 して接続される。プロセッサ 100は、 MPEGなどの音声デコード処理を行う。音出力 手段 13000は、プロセッサ 100で処理された音声を出力する。
[0146] また、プロセッサ 100は、音入力手段 14000と、オーディオフレームバッファを介し て接続される。プロセッサ 100は、音入力手段 14000より入力された音声に対して、 MPEGなどの音声エンコード処理を行う。
JPEG, MPEGなどの、ビデオ処理規格、音声処理規格は、様々な種類があり、そ れぞれ処理の内容が異なる。この処理が異なり、マルチスレッドプロセッサ 1000では 負荷の重い部分を、動的再構成演算回路 2000にて処理させることで、複数の規格 の処理に柔軟に対応可能となる。
[0147] プロセッサ 100は、アンテナ 16000と図示しない無線周波数回路ブロックと接続さ れ、プロセッサ 100により通信処理が行われることにより、無線ネットワークを構成する 。また、プロセッサ 100は、送受信データの喑復号処理も行う。
通信規格、暗号規格は、様々な種類があり、それぞれ処理の内容が異なる。この処 理が異なり、マルチスレッドプロセッサ 1000では負荷の重い部分を、動的再構成演 算回路 2000にて処理させることで、複数の規格の処理に柔軟に対応可能となる。
[0148] 移動通信装置 10000は、コマンド入力手段 15000より、移動通信装置 10000への 操作を、針や指を用いて入力することが可能である。
通信システム、映像処理システム、セキュリティー処理システムの多くは、複数の規 格に対応するため、本発明の効果を受ける。説明を行った、移動通信装置だけでな ぐ TV'DVDプレイヤ一'カーナビなどの映像表示装置、 DVDレコーダ 'ビデオカメ ラ · DSC ·セキュリティーカメラ ·などの映像記録装置、オーディオプレイヤーなどの装 置、通信装置内の、通信システム、セキュリティー処理システムに有益である。
[0149] <補足 >
以上、本発明に係るプロセッサについて実施形態に基づいて説明したが、このプロ セッサを部分的に変形することもでき、本発明は上述の実施形態に限られないことは 勿論である。即ち、
(1)実施形態では、動的再構成演算回路 2000の演算セルは 4x4の行列形式に配 置していた力 例えば、 10x4での矩形行列形式でも良い。また、ライン単位で配置さ れていてもよぐ配置の構成を問わない。
[0150] また、演算セル 2100は、乗算、シフト、加算、論理演算を行えるとした力 更に除算 や減算、ローテート演算など演算の種類が増えても、また演算の種類が少なくても良 い。
更にこの演算セル 2100は、全て同じ構成としていた力 特定の演算セルのみ除算 ができるなど、構成が違う演算セル 2100があってもよい。
[0151] なお、演算セル 2100の構成の切り替わりは、同時に複数個構成が切り替わっても 良い。
全ての演算セル 2100及び動的再構成接続器 2200は、構成の切り替え可能とした 力 一部構成が切り替わらない演算セル 2100及び、動的再構成接続器 2200があ つてもよい。
[0152] 演算セル 2100は 1入力 1出力であった力 3入力 2出力など、入出力の個数は変 わっても良い。その場合は、演算ソース選択器 2210の入力個数および、選択する個 数を増やし、出力データ選択器 2250の入力個数も増やすことにより、対応する。 構成切替手段 4000から、演算セル 2100への構成切り替え信号線は、演算セル 2
100毎に個別に引いていた力 必ず同時に切り替わる演算セル 2100同士は、同じ 切り替え信号線を引いても良い。
[0153] なお、演算セル 2100は、同じクロックで動作させていた力 複数のクロックラインを 配し、演算セル毎に演算動作クロックを変えても良い。
動的再構成演算回路 2000は、マルチスレッドプロセッサ 1000で実行中のスレッド と同期して構成を変更していた力 プロセッサの処理スレッドを変更せずに、動的再 構成演算回路 2000のみを適宜構成変更してもよ 、。
(2)実施形態 1、 2では、マルチスレッドプロセッサ 1000で動作するスレッド A、 B、 C は、全て動的再構成演算回路 2000で演算が行っていたが、動的再構成演算回路 2 000を用いないスレッドがあってもよい。その場合は、次に動的再構成演算回路 200 0を使用するスレッドの構成に切り替わって 、ても良 、。
[0154] また、マルチスレッドプロセッサ 1000と動的再構成演算回路 2000は、同じクロック で動作していたが、複数のクロックラインを配し、演算動作クロックを変えても良い。 さらに、マルチスレッドプロセッサ 1000は、複数スレッドをサポートしないプロセッサ であってもよぐ複数のコアを集積したマルチコアの構成でもよぐまた、内部構成が 再構成可能演算回路であっても良い。
(3)実施形態 1、 2では、演算結果記憶手段 5000への、マルチスレッドプロセッサ 10 00からの読み出し用の命令では、マルチスレッドプロセッサ 1000で処理中のスレツ ドでの動的再構成演算回路 2000の演算結果データのみ、読み出せていたが、これ を他スレッドの演算結果も読み出せるようにしても良 、。 [0155] その場合は、読み出し命令にスレッド番号を指定するオペランドを追加し、読み出 し時に、マルチスレッドプロセッサ 1000から演算結果記憶部 5000にスレッド番号を 与えるようにする。この時、演算結果記憶部 5000は、与えられたスレッド番号の DM RAに切り替える。これにより、他のスレッドの演算結果の読み出しを実現できる。 更に、マルチスレッドプロセッサ 1000は読み出し用命令をサポートしなくても良い。 代わりに動的再構成演算回路 2000への演算指示命令のオペランドに、マルチスレ ッドプロセッサ 1000内のレジスタをデスティネーションとして指定できるようにし、動的 再構成演算回路 2000での演算が終わると、そのレジスタに演算結果データが書き 込まれるようにしてもよい。
[0156] また、演算用命令のソースデータ個数を 2、読み出し用命令のデータ個数を 1とした 力 この個数を変更しても良い。動的再構成演算回路 2000への演算ソースデータ 個数の増加に対応するためには、マルチスレッドプロセッサ 1000から動的再構成演 算回路 2000へのデータ配線を増加し、マルチスレッドプロセッサ 1000からの出力ポ ート個数、動的再構成演算回路 2000への入力ポートを増加すればよい。
[0157] 演算結果記憶部 5000からの読み出しデータ個数の増加は、演算結果記憶部 500 0からマルチスレッドプロセッサ 1000への配線を増やし、マルチスレッドプロセッサ 10 00の入力ポート個数、演算結果記憶部 5000の出力ポートを増加すればよい。
更に、演算結果記憶部 5000へのスレッド毎の領域アドレスを設定する命令にて、 領域の終了アドレスも設定していた力 このオペランドが無くてもよい。全スレッドの領 域開始アドレスが設定されれば、他のスレッド領域開始アドレスまでを、各スレッドの 領域と判定すればよい。
[0158] なお、マルチスレッドプロセッサ 1000の処理切り替えを 1サイクルとしたが、複数サ イタル要しても良い。この場合は、構成切り替え手段 4000により動的再構成演算回 路 2000及び、演算結果記憶手段 5000に対し、そのマルチスレッドプロセッサ 1000 の切り替え処理のサイクル数だけ、処理停止制御をすればょ 、。
(4)実施形態 1、 2、 3では、演算結果記憶部 5000にて、各スレッド用領域を FIFOで 管理していた力 LIFO (Last In First Out)形式など、他の形式で管理しても良 い。 [0159] また、演算結果記憶部 5000にて管理される DMWA、 DMRAの管理を、マルチス レッドプロセッサ 1000や構成切替部 4000にて行っても良い。
(5)実施の形態 4では、演算ソース記憶部 7000にて、各スレッド FIFOで管理してい たが、 LIFO (Last In First Out)形式など、他の形式で管理しても良い。
[0160] また、演算ソース記憶部 7000にて管理される書き込み、読み出しアドレスの管理を 、構成切替部 4000にて行っても良い。
(6)実施形態 1、 2. 3では、構成情報記憶部 3000内に、各スレッドの構成情報を保 存していた力 これはなくても良い。代わりに、各演算セル、演算ソース選択器、出力 データ選択器内に、全スレッドの構成情報を予め保持する記憶手段を設け、構成切 り替わり時に、スレッド番号と切り替わり指示を構成切替部 4000から受け、所望の構 成に切り替わっても良い。
[0161] この場合、構成情報記憶部 3000からの配線を削除できる力 全スレッドの構成情 報を予め保持する記憶部はレジスタでの構成となる。構成情報記憶部 3000は入出 力ポートの少な 、メモリで構成できるため、記憶手段分の面積が増加する。
(7)実施形態では、各演算セルの再構成のタイミングを、構成切替部 4000からの指 示によって行うこととしているが(図 16 :ステップ S400〜ステップ S420参照)、それぞ れの演算セルで再構成のタイミングを判断することとしても良い。
[0162] 例えば、全演算セル 2100が、以下の判定を並列に行う。
構成切替部 4000から待ちサイクルが経過し、再構成の指示があったら、各演算セ ル 2100は、待機サイクル Eを判定し、そのサイクルだけ切り替え制御を待機する。 E は、次スレッドでの、該当演算セルより前にある、演算セル 2100の個数 (演算段数) を表す。各演算セル Eの値は、演算セル段数テーブル 4100 (図 9 (a)参照)を参照す る。
[0163] 例えば、各スレッドにおいて、演算セル aは、前の演算段数は、 0であるから、再構 成指示があれば、すぐに構成変更の処理が行われる。一方、演算セル mは、スレッド Aでは 3サイクル、スレッド Bでは 7サイクル、スレッド Cでは 15サイクル待たされること になる。
この待機サイクル Eの算出が終わると、構成切替部 4000は、構成情報記憶部 300 0に指示し、該当演算セル 2100の次スレッドでの構成情報及び、その演算セル 210 0に対応する演算ソース選択器 2210の次スレッドでの構成情報の読み出し処理を行 う。この構成情報は、構成情報転送用のバスを通して、該当演算セル 2100及び該当 演算ソース選択器 2210に供給される。
[0164] 次に、該当演算セル 2100及び該当演算ソース選択器 2210に対して、構成切り替 え信号を生成し、該当演算セル 2100及び該当演算ソース選択器 2210は、この信 号を受けて、構成情報転送用のバスに供給されている構成情報を読み込み、次スレ ッドの構成に切り替わる。
構成切替部 4000は、全演算セルが次スレッド用に再構成されるサイクルをスレッド 段数テーブル 4200 (図 9 (b) )を参照して求め、出力データ演算器 2250の再構成を 開始する。
(8)実施形態では、スレッド切り替え時に、現スレッドの演算セルと次スレッドの演算 セルとを、同時に動作させることとしている力 現スレッドの処理が終了したら、すぐに 次のサイクルで、次スレッドの実行を開始することとしても良い。現スレッド実行中に、 演算の終了した演算セル力 順に次スレッド用に再構成しているので、再構成の時 間が不要だからである。
(9)実施形態で示したプロセッサの各機能を実現させる為の各制御処理(図 14等参 照)を CPUに実行させる為のプログラムを、記録媒体に記録し又は各種通信路等を 介して、流通させ頒布することもできる。このような記録媒体には、 ICカード、光デイス ク、フレキシブルディスク、 ROM,フラッシュメモリ等がある。流通、頒布されたプログ ラムは、機器における CPUで読み取り可能なメモリ等に格納されることにより利用に 供され、その CPUがそのプログラムを実行することにより実施形態で示したプロセッ サの各機能が実現される。
産業上の利用可能性
[0165] 本発明に力かるマルチスレッド対応プロセッサ 100は、動的再構成演算回路 2000 内の構成切り替え時の性能劣化を抑制できる。
また、一度に読み出し書き込みを必要とする中間演算データを退避する必要が無く 、順次読み出し書き込みが発生する演算結果データだけを格納すればよい。このた め、記憶手段を少ない入出力ポートのメモリで実現でき、回路の面積を抑制できる。 更に、この記憶領域に格納された演算結果データは、 FIFOでスレッド毎に管理さ れる。このため、マルチスレッドプロセッサ 1000で実行するプログラムでは、特に構成 切り替え時の演算順番を意識せずに済み、スレッド毎の管理で良いため、読み出し のプログラムを容易に作成できる。
この構成により、時分割多重処理が必要となるメディア処理装置として有用である。 また通信やセキュリティ一等の用途にも応用できる。

Claims

請求の範囲
[1] 複数のスレッドを巡回的に、各スレッドに割当てられた時間ずつ実行するプロセッサ であって、
複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成 可能な演算回路と、
演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に 基づいて、再構成する再構成手段と、
各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対 応する、各演算セルのセル構成情報を記憶する構成情報記憶手段と、
順次、前記再構成手段に、現スレッドに割当てられた時間での最後の演算を終了 した演算セルを、前記構成情報記憶手段に記憶して 、る次スレッドに対応する当該 演算セルのセル構成情報に基づき再構成させ、次スレッドに対応する構成の演算セ ルと現スレッドの構成に対応する演算セルとをそれぞれ同時に実行させる制御手段 と
を備えることを特徴とするプロセッサ。
[2] 前記プロセッサは、更に、各スレッドの演算セルの演算結果を、それぞれ別の領域 に記憶する演算結果記憶手段を備え、
前記制御手段は、同時に実行させて 、る現スレッドで順番に繰り返し実行する演算 セルのうちの最後の演算セルの演算結果を前記演算結果記憶手段の現スレッドの 領域に記憶させ、同時に実行させている次スレッドの領域に記憶されている演算結 果を、次スレッドの最初に実行する演算セルに参照させて演算を実行させる ことを特徴とする請求項 1記載のプロセッサ。
[3] 前記プロセッサは、更に、スレッドに割当てられた時間での最後の演算を終了した 演算セルであって、当該スレッドで順番に繰り返し実行する演算セルのうちの最後の 演算セルの演算結果を記憶する演算結果記憶手段を備え、
前記制御手段は、現スレッドで順番に繰り返し実行する演算セルのうちの最後の演 算セルの演算結果に基づ 、て、次の繰り返しの最初に実行する演算セルを実行させ 、スレッドを切り替える際には、次スレッドに対して前回割当てられた時間に前記演算 結果記憶手段に記憶した演算結果を、次スレッドの最初に実行する演算セルに参照 させて演算を実行させる
ことを特徴とする請求項 1記載のプロセッサ。
[4] 複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成 可能な演算回路を備え、複数のスレッドを巡回的に、各スレッドに割当てられた時間 ずつ実行するプロセッサで用いられる実行方法であって、
演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に 基づいて、再構成する再構成ステップと、
各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対 応する、各演算セルのセル構成情報をメモリに記憶する構成情報記憶ステップと、 順次、前記再構成ステップで、現スレッドに割当てられた時間での最後の演算を終 了した演算セルを、前記構成情報記憶ステップでメモリに記憶して 、る次スレッド〖こ 対応する当該演算セルのセル構成情報に基づき再構成させ、次スレッドに対応する 構成の演算セルと現スレッドの構成に対応する演算セルとをそれぞれ同時に実行さ せる制御ステップと
を備えることを特徴とする実行方法。
[5] 複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成 可能な演算回路を備え、複数のスレッドを巡回的に、各スレッドに割当てられた時間 ずつ実行するプロセッサに実行処理を行わせるコンピュータプログラムであって、 演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に 基づいて、再構成する再構成ステップと、
各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対 応する、各演算セルのセル構成情報をメモリに記憶する構成情報記憶ステップと、 順次、前記再構成ステップで、現スレッドに割当てられた時間での最後の演算を終 了した演算セルを、前記構成情報記憶ステップでメモリに記憶して 、る次スレッド〖こ 対応する当該演算セルのセル構成情報に基づき再構成させ、次スレッドに対応する 構成の演算セルと現スレッドの構成に対応する演算セルとをそれぞれ同時に実行さ せる制御ステップと を備えることを特徴とするコンピュータプログラム。
複数のスレッドを巡回的に、各スレッドに割当てられた時間ずつ実行するプロセッサ であって、
複数の演算セルを含み、当該演算セルの構成と各演算セル間の接続とを再構成 可能な演算回路と、
演算セルの構成及び当該演算セルと他の演算セルとの接続を、セル構成情報に 基づいて、再構成する再構成手段と、
各々異なる特定数の演算セルを順番に繰り返し実行する複数のスレッド各々に対 応する、各演算セルのセル構成情報を記憶する構成情報記憶手段と、
順次、前記再構成手段に、現スレッドに割当てられた時間での最後の演算を終了 した演算セルを、前記構成情報記憶手段に記憶して 、る次スレッドに対応する当該 演算セルのセル構成情報に基づき再構成させ、現スレッドで実行する最後の演算セ ルの演算終了後、次スレッドの構成の演算セルを実行させる制御手段と
を備えることを特徴とするプロセッサ。
PCT/JP2006/323177 2005-11-25 2006-11-21 動的再構成論理回路を有するマルチスレッドプロセッサ WO2007060932A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/093,884 US7949860B2 (en) 2005-11-25 2006-11-21 Multi thread processor having dynamic reconfiguration logic circuit
JP2007546441A JP5096923B2 (ja) 2005-11-25 2006-11-21 動的再構成論理回路を有するマルチスレッドプロセッサ

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2005-339946 2005-11-25
JP2005339946 2005-11-25

Publications (1)

Publication Number Publication Date
WO2007060932A1 true WO2007060932A1 (ja) 2007-05-31

Family

ID=38067159

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2006/323177 WO2007060932A1 (ja) 2005-11-25 2006-11-21 動的再構成論理回路を有するマルチスレッドプロセッサ

Country Status (3)

Country Link
US (1) US7949860B2 (ja)
JP (1) JP5096923B2 (ja)
WO (1) WO2007060932A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009049649A (ja) * 2007-08-17 2009-03-05 Fujitsu Ltd 集積回路装置
JP2010074461A (ja) * 2008-09-18 2010-04-02 Fujitsu Ltd プログラマブルロジックデバイス、カード及び伝送装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPWO2009063596A1 (ja) * 2007-11-12 2011-03-31 パナソニック株式会社 再構成可能回路、リセット方法、及び構成情報生成装置
US8176212B1 (en) * 2009-08-18 2012-05-08 Quickflex, Inc. Method and system for hierarchical and joinable behavior containers for reconfigurable computing

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240549A (ja) * 1997-02-24 1998-09-11 Hitachi Ltd 並列ジョブ多重スケジューリング方法及び装置
JP2000311156A (ja) * 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
JP2005165961A (ja) * 2003-12-05 2005-06-23 Matsushita Electric Ind Co Ltd 動的再構成論理回路装置、割込制御方法、及び、半導体集積回路

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US125642A (en) * 1872-04-09 Improvement in bit-braces
US4594655A (en) * 1983-03-14 1986-06-10 International Business Machines Corporation (k)-Instructions-at-a-time pipelined processor for parallel execution of inherently sequential instructions
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US6282634B1 (en) * 1998-05-27 2001-08-28 Arm Limited Apparatus and method for processing data having a mixed vector/scalar register file
JP3587095B2 (ja) * 1999-08-25 2004-11-10 富士ゼロックス株式会社 情報処理装置
JP3832557B2 (ja) * 2000-05-02 2006-10-11 富士ゼロックス株式会社 プログラマブル論理回路への回路の再構成方法および情報処理システム
US7320065B2 (en) * 2001-04-26 2008-01-15 Eleven Engineering Incorporated Multithread embedded processor with input/output capability
US20030120896A1 (en) * 2001-06-29 2003-06-26 Jason Gosior System on chip architecture
US7428732B2 (en) * 2001-12-05 2008-09-23 Intel Corporation Method and apparatus for controlling access to shared resources in an environment with multiple logical processors
CA2438559C (en) * 2002-08-28 2011-04-26 Msi Machineering Solutions Inc. Downhole latch
US7389403B1 (en) * 2005-08-10 2008-06-17 Sun Microsystems, Inc. Adaptive computing ensemble microprocessor architecture
JP2007133456A (ja) * 2005-11-08 2007-05-31 Hitachi Ltd 半導体装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240549A (ja) * 1997-02-24 1998-09-11 Hitachi Ltd 並列ジョブ多重スケジューリング方法及び装置
JP2000311156A (ja) * 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
JP2005165961A (ja) * 2003-12-05 2005-06-23 Matsushita Electric Ind Co Ltd 動的再構成論理回路装置、割込制御方法、及び、半導体集積回路

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009049649A (ja) * 2007-08-17 2009-03-05 Fujitsu Ltd 集積回路装置
JP2010074461A (ja) * 2008-09-18 2010-04-02 Fujitsu Ltd プログラマブルロジックデバイス、カード及び伝送装置

Also Published As

Publication number Publication date
JPWO2007060932A1 (ja) 2009-05-07
US20090307470A1 (en) 2009-12-10
US7949860B2 (en) 2011-05-24
JP5096923B2 (ja) 2012-12-12

Similar Documents

Publication Publication Date Title
KR100733943B1 (ko) 프로세서 시스템, dma 제어 회로, dma 제어 방법,dma 제어기의 제어 방법, 화상 처리 방법, 및 화상처리 회로
US20210049729A1 (en) Reconfigurable virtual graphics and compute processor pipeline
US8869147B2 (en) Multi-threaded processor with deferred thread output control
US20090300324A1 (en) Array type processor and data processing system
JP4996519B2 (ja) 仮想マルチプロセッサ、システムlsi、携帯電話機器、及び仮想マルチプロセッサの制御方法
US6675289B1 (en) System and method for executing hybridized code on a dynamically configurable hardware environment
CN112104819A (zh) 一种基于fpga的多路视频同步切换系统及方法
WO2007060932A1 (ja) 動的再構成論理回路を有するマルチスレッドプロセッサ
CN116185599A (zh) 异构服务器系统及其使用方法
JP2008152409A (ja) 半導体集積回路
TW202107408A (zh) 波槽管理之方法及裝置
CN111984391A (zh) 任务调度方法、装置、芯片、终端及存储介质
US20220197696A1 (en) Condensed command packet for high throughput and low overhead kernel launch
EP4039345A1 (en) Data processing system, data processing method, and computer program
JPH10326224A (ja) ディジタル・シグナル・プロセッサ
US8320150B2 (en) Structure and method for backing up and restitution of data
JP2002073341A (ja) Dspプログラムダウンロードシステム
JP2007026184A (ja) 機能処理電子回路およびその制御手法
CN117112466B (zh) 一种数据处理方法、装置、设备、存储介质及分布式集群
JP2004326228A (ja) 並列演算処理装置
JP4006065B2 (ja) プロセッサ
JP2006195598A (ja) リアルタイム処理システム
US8677099B2 (en) Reconfigurable processor with predicate signal activated operation configuration memory and separate routing configuration memory
JP2002175265A (ja) 直接メモリ・アクセス・コントローラを有するディジタル信号プロセッサにおける複数の構成素子間での信号群交換装置および方法
CN117519633A (zh) Gpu多路hdmi音频同步输出方法、装置及存储介质

Legal Events

Date Code Title Description
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: 2007546441

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: 12093884

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06833027

Country of ref document: EP

Kind code of ref document: A1