WO2007037006A1 - マルチコアプロセッサ - Google Patents

マルチコアプロセッサ Download PDF

Info

Publication number
WO2007037006A1
WO2007037006A1 PCT/JP2005/017958 JP2005017958W WO2007037006A1 WO 2007037006 A1 WO2007037006 A1 WO 2007037006A1 JP 2005017958 W JP2005017958 W JP 2005017958W WO 2007037006 A1 WO2007037006 A1 WO 2007037006A1
Authority
WO
WIPO (PCT)
Prior art keywords
core
module
cores
basic
basic module
Prior art date
Application number
PCT/JP2005/017958
Other languages
English (en)
French (fr)
Inventor
Daisuke Nitta
Tomonori Kumagai
Kazunari Kobayashi
Original Assignee
Fujitsu Limited
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 Fujitsu Limited filed Critical Fujitsu Limited
Priority to JP2007537505A priority Critical patent/JP4777994B2/ja
Priority to PCT/JP2005/017958 priority patent/WO2007037006A1/ja
Publication of WO2007037006A1 publication Critical patent/WO2007037006A1/ja
Priority to US12/049,509 priority patent/US8516491B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5017Task decomposition

Definitions

  • the present invention relates to a multi-core processor, and more particularly to a multi-core processor that enables dynamic application of processing distribution to each core.
  • Patent Document 1 Japanese Patent Laid-Open No. 2002-117011
  • an object of the present invention is to automate a process allocation method of a multi-core processor in an environment where the processing amount changes dynamically.
  • a multi-core processor that realizes the establishment of algorithms necessary to determine the processing assignment to each core and the establishment of an efficient processing assignment algorithm that is easy for software engineers. It is to provide.
  • a first aspect of the present invention that achieves the above-described object is a processing load distribution method in a multi-core processor having a plurality of cores.
  • a plurality of basic modules divided into unified minimum structural units are formed, the plurality of basic modules are distributed as the initial arrangement to the plurality of cores, and then periodically based on the function information of each core.
  • the plurality of basic modules initially arranged are rearranged in a proper or timely manner.
  • a second aspect of the present invention that achieves the above object is a multi-core plug processor having a plurality of cores, the core unit having a plurality of cores, and a processor unit, wherein the processor unit includes: A receiving unit that delivers data to be processed received from the outside to each core of the core unit, a transmitting unit that sends data output to the outside, and a basic unit that has been externally transmitted It is determined whether to dispose a module in a misalignment between the plurality of cores, and a basic module transmitting unit that performs processing for arranging the basic module in the target core, and an arrangement control method specified from the outside, The basic module arrangement control unit is configured to notify all of the cores, and the plurality of basic modules are distributed and arranged to the plurality of cores as an initial arrangement, and the function information of each core is further included. Hazuki, the feature that a plurality of basic modules which are the initial arrangement periodically or timely are rearranged.
  • the function information of each core includes i) the number of signals required for its own core and its own core power.
  • a function to count the number of signals output to other cores ii) a function to measure the storage capacity of the reception buffer built into the own core, and the storage capacity of the transmission buffer;
  • a core having a higher use priority may rearrange the plurality of basic modules by taking a basic module of a core having a lower use priority.
  • At least one of the plurality of cores is left, and the processing capacity of each core is maximized for each of the plurality of basic modules relative to the other cores. Try to relocate multiple basic modules.
  • each of the plurality of cores of the core unit includes a data input / output unit, a nota measurement unit that measures an input buffer amount and an output buffer amount in the data input / output unit, and , A program execution area in which the basic module is arranged, a core usage rate measuring unit that measures the usage rate of the entire program execution area and the usage rate of each basic module, and the input buffer measured by the buffer measuring unit
  • the state information of the core state transmission unit that outputs the core state based on the amount and the output buffer amount and the usage rate of the program execution area measured by the core usage rate measurement unit, and the status information of other cores obtained through the communication unit
  • the information database described, the core state of the own core sent from the core state transmission unit, and the information database are recorded.
  • FIG. 1 is a diagram illustrating a basic module.
  • FIG. 2 is a diagram for explaining an initial arrangement of a plurality of basic modules in a minimum unit.
  • FIG. 3 is a diagram showing an example of average / dispersion type rearrangement.
  • FIG. 4 is a diagram showing an example of rearrangement by the core filling type.
  • FIG. 5 is a diagram showing a first application example of an average / dispersion type and a core packing type.
  • FIG. 6 is a diagram showing a second application example of an average / dispersion type and a core packing type.
  • FIG. 7 is a diagram showing a configuration example of a processor 1 composed of one chip to which the present invention is applied.
  • FIG. 8 is a block diagram of a configuration example of one core common to the cores Cl to Cn of the core unit 3.
  • Fig. 9 shows an example of the data format of the basic module and the program format of the basic module.
  • FIG. 10 is a diagram showing an example of the relationship between a plurality of basic module data.
  • FIG. 11 is a diagram showing an example of an input / output data format between basic modules.
  • FIG. 12 is a diagram showing the relationship of input / output data between a plurality of modules.
  • FIG. 13 is a diagram showing a data format of core information.
  • FIG. 14 is a diagram showing an example of an embodiment of a data format of module arrangement information.
  • FIG. 15 is a diagram showing an embodiment of a basic module bow I delivery request message format.
  • FIG. 16 is a diagram showing an embodiment of a basic module bow I delivery response message format.
  • FIG. 17 is a diagram showing a message format when processing by the basic module bow I transfer and response message is completed.
  • FIG. 18 is a diagram showing a bow I request message format of the basic module.
  • FIG. 19 is a diagram showing an example of a response message of the basic module bow I response message.
  • FIG. 20 is a diagram showing an embodiment format of a basic module bow I reception completion message.
  • FIG. 21 is an example sequence flow (part 1) for the basic module placement method at processor startup.
  • FIG. 22 is an example sequence flow (part 2) of the basic module arrangement method at the time of starting the processor.
  • FIG. 23 is a diagram showing module arrangement information acquired when the processor is started.
  • FIG. 24A is a diagram showing a core blueprint for core C1.
  • FIG. 24B is a diagram showing core information of core C2.
  • FIG. 24C is a diagram showing core information of core C3.
  • FIG. 25 is a diagram showing an input determination algorithm.
  • FIG. 26 shows an output judgment algorithm.
  • FIG. 27 is a diagram showing a bow I handover request message of the basic module.
  • FIG. 28 is a diagram showing a basic module bow I passing response message.
  • FIG. 29 is a diagram showing basic module input / output data.
  • FIG. 30 is a diagram showing a basic module bow I passing response message.
  • FIG. 31A is a sequence flow diagram (part 1) summarizing the contents of process 1 to process 11 when the basic module is delivered to another core.
  • FIG. 31B is a sequence flow diagram (part 2) summarizing the contents of process 1 to process 11 when the basic module is delivered to another core.
  • FIG. 32 shows the module arrangement information acquired when processor 1 is started.
  • FIG. 33A shows core information of core C1.
  • FIG. 33B shows the core information of core C2.
  • FIG. 33C shows the core information of core C3.
  • FIG. 34 is a diagram showing an input side determination algorithm.
  • FIG. 35 is a diagram showing an output side determination algorithm.
  • FIG. 36 is a diagram showing a basic module bow I reception request message.
  • FIG. 37 is a diagram showing a bow I response message of the basic module.
  • FIG. 38 is a diagram showing basic module input / output data.
  • FIG. 39 is a diagram showing a basic module bow I reception completion message.
  • FIG. 40A is a sequence flow diagram (part 1) when the basic module is accepted from another core.
  • Fig. 40B shows the sequence flow when the basic module is accepted from another core. It is one figure (part 2).
  • FIG. 41 is a diagram showing module arrangement information.
  • FIG. 42 is a diagram showing an evacuation judgment algorithm.
  • Fig. 43A shows the basic module bow I delivery request message (part 1).
  • Fig. 43B shows the basic module bow I delivery request message (part 2).
  • FIG. 44A shows a bow response message of the basic module for transmission from core C 1.
  • FIG. 44B is a diagram showing the bow response message of the basic module for transmission from core C3.
  • Fig. 45A shows basic module input / output data sent to core C1.
  • Fig. 45B shows basic module input / output data sent to core C3.
  • FIG. 46A is a diagram showing a basic module delivery response message from core C1 to core C2.
  • FIG. 46B is a diagram showing a bow response message of the basic module from core C3 to core C2.
  • FIG. 47A is a sequence flow (part 1) corresponding to pattern 3 processing.
  • FIG. 47B is a sequence flow (part 2) corresponding to pattern 3 processing.
  • FIG. 47C shows a sequence flow (part 3) corresponding to pattern 3 processing.
  • FIG. 1 is a diagram for explaining a basic module.
  • the entire processing content required by the entire processor is divided into the minimum unit of unified input / output format interface (IF) and created as a basic module.
  • IF input / output format interface
  • each core of the multi-core process has information such as the usage rate of its own core as shown below. Implement one or more functions to get information.
  • a plurality of basic modules of the minimum unit divided as shown in FIG. 1 are arranged in advance in the multi-core processor 1 (initial arrangement).
  • two basic modules are placed on each of the five cores.
  • the processing is executed with the basic modules initially arranged.
  • the basic modules are recorded on a regular basis or as needed according to the function information of i) to iii) above.
  • Figure 3 shows an example of average / distributed relocation.
  • Fig. 4 is a diagram showing an example of relocation using the core packing type.
  • FIG. 5 is a diagram showing a first application example of the average / dispersion type and the core packing type.
  • the basic modules are averaged / distributed with A cores remaining.
  • the remaining core (core 5 in Fig. 5) can execute other processing (such as periodic health check).
  • the number of remaining cores A is
  • It can be specified in the range of 0 ⁇ A ⁇ (the minimum number of cores required), and can be relocated according to the scale of interrupt processing that is periodically entered.
  • FIG. 6 is a diagram showing a second application example of the average / dispersion type and the core packing type.
  • Processing assignment to each core can be realized without the software developer being aware of it.
  • ii) A wide variety of programs can be obtained simply by using two types of algorithms: average / dispersion type and core packing type. A ram placement method can be realized.
  • a device to which the present invention is applied is a processor such as a CPU or a network processor having two or more arithmetic circuits (cores).
  • each core has a function unit that can input a program (basic module) with a data input / output standard.
  • FIG. 7 is a configuration example of the processor 1 composed of one chip to which the present invention is applied.
  • a core unit 3 having a plurality of cores CI, C2,..., Core Cn and a processor unit 2 excluding the core unit 3 are provided.
  • the processor unit 2 has a functional unit that can input a basic module to each core of the core unit 3.
  • the processor has a core section 3 having two or more cores and a processor section 2 that handles other functions.
  • the processor unit 2 has a function of transferring data input from the outside to the receiving unit 12 to each of the cores Cl to Cn of the core unit 3. It also has a function to send data output from each core Cl to Cn to the outside via the transmitter 13.
  • the processor unit 2 determines which basic module should be allocated to which core in the internal basic module transmission unit l ib. Then, modules are arranged for the target core.
  • the basic module transmission unit 11a and the basic module transmission unit l ib are collectively referred to simply as the basic module transmission unit 11.
  • the processor unit 2 transmits the basic module to the first core C1 of the core unit 3, and first Upon receipt of information from core C1 that the basic module storage memory capacity is full Start sending basic module to core C2.
  • the processor unit 2 uses the internal basic module placement control unit 10b to control all cores Cl to Cn. , Notify the control information. At that time, the processor unit 2 only notifies the specified control information to all the cores Cl to Cn, and does not grasp the state of each core and perform control according to the state.
  • the basic module arrangement control unit 10a and the basic module arrangement control unit 10b are simply referred to as a basic module arrangement control unit 10.
  • the processor unit 2 issues a request to the basic module transmission unit 11 to place the target basic module on the target core.
  • Two or more cores Cl to Cn in core part 3 are arranged in one processor and execute the basic module.
  • FIG. 8 is a block diagram showing a core configuration example common to the cores Cl to Cn of the core unit 3.
  • the cores Cl to Cn receive the basic module arranged by the basic module arrangement control unit 10 of the processor unit 2 at the module input / output unit 30 and develop it in the program execution area 31 of the corresponding core.
  • the data that has been processed in the program execution area 31 is stored in the transmission buffer 33 in the core unit 3, and when the calculation of the basic module in another cell is required, the data is processed. Sent to other cells.
  • the data is transmitted to the transmission buffer 15 of the processor unit 2.
  • each core of the core unit 3 always measures the state of the core such as the amount of data transmitted / received and the amount of computation.
  • the types of measurement data include the input buffer volume and output buffer volume of the core data receive buffer 32.
  • the buffer measurement unit 34 constantly monitors the input buffer volume and output buffer volume of the data transmission buffer 33 (or at regular intervals), and transmits it to the core status transmission unit 35.
  • the core usage rate measurement unit 36 acquires the usage rate of the entire program execution area and the usage rate of each basic module.
  • the status of the own core is constantly transmitted (or at regular intervals). Based on this core status information and the status information of other cores acquired by the communication unit 38 and described in the information database 39, it is judged whether the current operation of the core is appropriate.
  • a program with a data input / output standard placed in the program execution area 31 of each core is called a basic module.
  • Fig. 9 shows an example of the data format of the basic module and the program format of the basic module.
  • Fig. 10 shows an example of the relationship between multiple basic module data.
  • the basic module data is the destination Each core is sent and arranged sequentially as indicated by the dashed arrows.
  • the data format of the basic module is the target core No .: I, basic module name II, data size III, input core No .: IV, input destination module name V, output core No .: VI, It consists of 8 types of data: output module name VII and program data VIII.
  • the target core No .: I indicates the number of the core that should process the basic module, and the basic module placement control unit 10 of the processor unit 2 corresponds to the core corresponding to the core corresponding to this number. Place the module.
  • the basic module name II indicates its own module name and is used for identification with other basic modules.
  • Data size III indicates the data size of program data VIII in the basic module, and is used to determine whether or not the corresponding program can be arranged in the program execution area.
  • Input core No .: IV indicates the number of the core to which the input data of the program in the basic module should be transmitted. The program in the basic module expects the core force indicated by this number to be entered. If the input core number IV indicates “Receiver buffer in processor”, the input data is stored in the receive buffer 14 in the processor unit 2 and not in the core. Get from 14.
  • the input destination module name V indicates the name of the basic module to which the input data of the program in the corresponding basic module is to be transmitted.
  • the program in the basic module expects data to be input for the basic module with this name. If the input core number indicates “Receiver buffer in processor”, the data indicated by the input destination module name V in the receive buffer 14 is acquired.
  • Output core number: VI indicates the number of the core to which output data should be sent to the program in the basic module. The program in the basic module sends output data to the core indicated by this number. If the output core number: VI indicates “in-processor transmission buffer”, the output data is sent to the two transmission buffers 15 in the processor section, not to the core.
  • Output destination module name VII transmits the output data of the program in the basic module.
  • the name of the basic module to be shown is shown.
  • the program in the basic module sends output data to the basic module with this name. If the output core number: VI indicates “in-processor transmission buffer”, the data indicated by the output module name VI I is stored in the transmission buffer 15.
  • Program data VIII stores program data in which an input / output format is defined.
  • FIG. 11 shows an example of the input / output data format between basic modules
  • Fig. 12 shows the relationship of input / output data among multiple modules.
  • the dashed arrows indicate the flow of transmitted data.
  • the input / output data format between the basic modules is: destination core number I, destination module name II, source core number: III, source module name IV, process number: V It consists of data size VI and input data VII.
  • Destination core number I describes the core number that is the data transmission destination.
  • Destination module name II describes the name of the basic module that is the data transmission destination.
  • Sender core number III describes its own core number. In the case of receive buffer 3 2 or send buffer 33 in processor 1, describe as receive buffer and send buffer respectively.
  • Source module name IV describes its own basic module name.
  • receive buffer 32 or send buffer 33 in processor 1 describe the input data name and send data name, respectively.
  • Process No .: V describes the process number of the data and causes confusion with the input / output data here. Eliminate life.
  • Data size VI describes the size of input / output data.
  • the core information indicates the core status such as the core usage rate and the usage amount of the transmission / reception buffers 32 and 33 or the number of transmission / reception signals that the core status transmission unit 35 of the core unit 3 notifies the module placement control unit 37.
  • the data is shown. In other words, it is information for performing cooperative processing between the previous and next cores.
  • the module placement control unit 37 notifies this information to the core to which data is to be transferred through the communication unit 39, and notifies its own core state. In addition, by comparing the core information obtained by other core powers with its own core information, it is used as a trigger for relocation of the basic module.
  • the core information shown in Fig. 13 includes the target core No .: I, input amount of receive buffer II, output amount of receive buffer III, input amount of transmit buffer IV, output amount of transmit buffer V, use of the entire core It consists of rate VI, usage rate for each basic module VII, data size VIII for the entire core, free data capacity IX for the entire core, and data size X for each basic module.
  • the target core number: I indicates the target core number describing the core information.
  • Input amount II of the receive buffer indicates the amount of data input from the outside during a certain time (t) when the receive buffer unit 15 is present. This value can be measured in a fixed time unit (t) where there is an inflow and inflow rate of data from the outside.
  • the output amount III of the reception buffer indicates the amount of data input to the program execution area 31 for a certain period of time (when the reception buffer unit 32 is present. This value determines the data input amount and input speed of the program execution area 31. It can be measured in a certain time unit (t).
  • the input amount IV of the transmission buffer indicates the amount of data output from the program execution area 31 at a certain time (). It is possible to measure force data output amount and output speed in a certain time unit (t).
  • the output amount V of the transmission buffer V indicates the amount of data output to the outside during a certain period of time. With this value, the amount of data output to the outside and the output speed can be measured in a certain time unit (t).
  • Core usage rate VI indicates the total usage rate of the previous process in the program execution area 31. This value corresponds to the CPU usage rate for a single CPU.
  • the usage rate per basic module VII indicates the usage rate of the basic modules arranged in the program execution area 31 individually.
  • the data size VIII of the entire core indicates the total data size of the basic modules currently arranged in the program execution area 31.
  • the free data capacity of the entire core IX indicates the free data capacity obtained by subtracting the data size of the currently placed basic module from the entire data area that can be placed in the program execution area 31.
  • the data size XX per basic module individually indicates the data size of the basic module currently arranged in the program execution area 31.
  • Module placement information is data describing the module relocation algorithm that is sent to each core by the module placement control unit 10b via the external module placement control unit 20a at regular intervals or as needed. It is.
  • each core determines whether or not it has permission to transmit the basic module in the core to another core and accept the basic module of another core.
  • Module placement information includes target core number I, module transmission permission to input destination core side II, module reception permission of input destination core side force III, module transmission permission to output destination core side IV, output destination core Module reception permission V from the side, and whether or not the module is saved to the other core side VI.
  • the target core number I indicates the target core number of the module arrangement information.
  • Module transmission permission II to the input destination core side indicates permission information indicating whether the module may be transmitted to the core on the data input side. If it is described as “permitted”, the module can be transmitted to the core on the input side, and if it is not described, it cannot be transmitted. Also, if the input side is the receive buffer 14 of the processor unit 2, the module cannot be sent, so this permission information is discarded.
  • Module reception permission III from the input destination core side indicates permission information indicating whether or not the module can be received when the module is transmitted from the data input side core. If it is described as “permitted”, the module can be received from the input side core, and if it is not described, it cannot be received.
  • Module transmission permission IV to the output destination core side indicates permission information indicating whether or not the module can be transmitted to the data output side core. If it is described as “permitted”, the module can be transmitted to the output core, and if it is not described, it cannot be transmitted. If the output side is the transmission buffer 15 of the processor unit 2, the module cannot be transmitted, so this permission information is discarded.
  • Module reception permission V from the output destination core side indicates permission information indicating whether or not the module can be received when the module is transmitted from the data output side core. If it is described as “permitted”, the module can be received from the output core. If it is not described, it cannot be received.
  • Presence / absence of module save to other core VI is described as “Yes” when the basic module operating in the target core is to be saved to another core.
  • the basic module is placed in another core while judging the contents of the module transmission permission to the input destination core and the module transmission permission to the output core described above.
  • Basic module bow I An example of an embodiment according to the message format of the passing request / response Is shown below.
  • the basic module can be relocated based on the core information data. If it is recognized from the core information data that the processing capacity of other cores has more margin than the processing capacity of its own core, some of the basic modules in itself are transferred to other cores. Deliver (arrange) processing and balance the processing amount.
  • FIG. 15 shows an example of a basic module delivery request message format.
  • destination core number I
  • source core number 11
  • basic module name III module size I
  • Destination core No .: 1 indicates the core number of the desired delivery destination of the basic module.
  • Source core number: 11 indicates the core number of the basic module delivery source.
  • the basic module name III indicates the name of the basic module to be delivered.
  • Module size IV indicates the program size of the basic module name to be delivered.
  • the delivery response message of the basic module is as shown in FIG. 16 as an example.
  • Fig. 16 it consists of destination core No .: 1, source core No .: II, basic module name III, and delivery response availability IV.
  • Destination core number: 1 indicates the core number of the basic module delivery source.
  • Source core No.:II indicates its own core number, which is the desired delivery destination of the basic module.
  • Basic module name III indicates the name of the basic module to be delivered.
  • Availability of delivery response IV indicates whether delivery is possible.
  • Figure 17 shows the message format when processing of the above basic module with the bow I transfer and response message is completed.
  • the basic module delivery completion message is sent to destination core No .: I, source core No .: 11, basic module name III, delivery. Completion information IV.
  • Destination core number: 1 indicates the core number of the basic module delivery source.
  • Source core number: 11 indicates its own core number, which is the desired delivery destination of the basic module.
  • Basic module name III indicates the name of the basic module to be delivered.
  • module relocation permission is received when various permission information of module arrangement information is received, the basic module can be relocated based on the core information data. If it is recognized from the core information data that the processing capacity of the own core is more generous than the processing capacity of the other core, a part of the other basic module is accepted by the own core. Perform (receive) processing and balance the processing amount.
  • Fig. 18 is a diagram showing an underwriting request message format of the basic module.
  • Destination core number: 1 indicates the core number of the basic module underwriting request destination.
  • the transmission source core number: 11 indicates the core number of the basic module.
  • Basic module name III indicates the name of the basic module to be accepted.
  • Module size IV indicates the program size of the basic module name to be accepted.
  • Fig. 19 is a diagram showing an example of the basic module acceptance response message. Consists of Destination Core No .: I, Source Core No .: II, Basic Module Name III, Delivery Response Acceptance IV.
  • I indicates the core number of the basic module.
  • Sender core No.:II indicates its own core number, which is the destination of the basic module.
  • the basic module name indicates the basic module name III to be accepted.
  • Availability of delivery response IV indicates whether or not acceptance is possible.
  • FIG. 20 is a diagram showing an example format of a basic module acceptance completion message.
  • destination core No .: I destination core No .: I
  • source core No .: II basic module name III
  • delivery completion information IV delivery completion information
  • I indicates the core number of the basic module.
  • Source core number: 11 indicates its own core number, which is the destination of the basic module.
  • Basic module name III indicates the name of the basic module to be accepted.
  • Delivery completion information IV shows information on whether or not the delivery is possible.
  • Processing step P1 The module is transferred from the basic module arrangement control unit 10a outside the processor 1 to the module arrangement control unit 37 via the communication unit 38 in the core for each core via the basic module arrangement control unit 10b inside the processor 1. Send placement information.
  • Process P2 When the module arrangement information transmission is completed for the number of cores, the basic module transmission unit 1 la outside the processor 1 passes through the basic module transmission unit 1 lb inside the processor 1 to each core. The basic module program is placed in the program execution area 31 through the module input / output unit 30. This process P2 is repeated for each core for the number of basic modules corresponding to each core.
  • Pattern 1 An example of passing a basic module to another core is explained using an example of passing a basic module from core C2 to core C3.
  • Core C2 which has completed startup of processor 1 and is performing normal operation, periodically acquires core information of core C1 to which input data is acquired and core C3 to which operation result data is output. is doing.
  • This information is stored in the core information database (DB) 39 of the communication unit 38.
  • the core C2 which is performing normal operation, periodically sends core information to the core status transmission unit 35 ⁇ the core C1 from which the input data is acquired and the core C3 from which the operation result data is output. Transmitting via module placement control unit 37 ⁇ communication unit 38.
  • Core C2 refers to the module placement information shown in Fig. 23, which was obtained when the processor was started.
  • the transmittable core of the module is specified. Therefore, the transmittable core power of the module is compared with the transmitted information and its own core information.
  • the core information of core C1, core C2, and core C3 are shown in FIGS. 24A, 24B, and 24C, respectively.
  • step S101 the transmission noise, the buffer output amount, the transmission noise, It is determined that the core should not be delivered because it is determined that the amount of input) ⁇ 0
  • step S111 force and S115 are judged as Yes, it is judged that it should be delivered to the core C3, and the basic module is transmitted to the target core C3 (step S116).
  • the basic module delivery request message shown in Fig. 27, which describes the contents of delivery of basic module 4 to core C3, is created by module placement control unit 37 of core C2 and passed through communication unit 38. To core C3.
  • core C3 which receives the basic module delivery request message shown in Fig. 27 from module placement control unit 37 via core C3 communication unit 38, has a module size that is larger than the free space of its own program execution area. If it is confirmed that it is small and if it is weak, the module module control unit 37 creates the basic module delivery response message for core C2 and sends it to core C2 via communication unit 38. .
  • the core C2 When the core C2 receives the delivery response message of the basic module of process 5 by the module placement control unit 37 via its communication unit 38, the core I / O unit 30 is instructed to stop the operation of the basic module 4 together with the core module 4. Instructs C3 to create basic module 4 basic module I / O data.
  • the module input / output unit 30 of the core C2 Upon receipt of the instruction, the module input / output unit 30 of the core C2 issues an operation stop command to the module 4 that was operating in the program execution area 31, and then the basic module of the module 4 in the program execution area 31. With reference to the input / output data, the data shown in Fig. 29 is created and sent to core C3.
  • the core C3 which receives the basic module input / output data shown in FIG. 29 in process 7 by the module input / output unit 30, places this basic module 4 in the program execution area 31, and starts its operation.
  • Process 9 :
  • the module placement control unit 37 of the core C3 notified of the start of the operation of the basic module 4 in the core C3 from the module input / output unit 30 sends a delivery response message of the basic module shown in Fig. 30 to the core C2 via the communication unit 38 To do.
  • the core C2 that received the basic module bow I delivery completion message shown in FIG. 30 in process 9 by the module placement control unit 37 via the communication unit 38 is sent to the module input / output unit 30 in the program execution area 31. Instructions are given to delete module 4 that has stopped operating.
  • the module input / output unit 30 of core C2 deletes module 4 in program execution area 31.
  • Figure 31A (Part 1) and Figure 31B (Part 2) are sequence flow diagrams summarizing the contents of Process 1 to Process 11 when the basic module is delivered to another core.
  • process numbers correspond to process 1 to process 11 described above.
  • Pattern 2 The case of accepting a basic module from another core is explained using an example in which core C2 accepts a basic module from core C3.
  • Core C2 which has completed startup of processor 1 and is performing normal operation, periodically acquires core information of core C1 to which input data is acquired and core C3 to which operation result data is output. It is stored in the core information database (DB) 39 of the communication unit 38.
  • DB core information database
  • the core C2 performing normal operation periodically sends core information to the core C1 to which input data is acquired and the core C3 to which operation result data is output.
  • Core C2 identifies the transmittable core of the module based on the module arrangement information shown in Fig. 32 obtained when processor 1 is started (for example, core C1 or core C2).
  • the core information that is transmitted is compared with the core information that is transmitted.
  • core information the core information of core C1, core C2, and core C3 is shown in the corresponding FIG. 33A, FIG. 33B, and FIG. 33C, respectively.
  • core C1 and core C2 are compared according to the input side judgment algorithm shown in Fig. 34.
  • step S202 that is, in the core information of its own core, (Receiving node, input amount of buffer)> 0, so it is determined that the core should not be assumed. Then, it waits until the core information on the input side or the core information of its own (core C2) is updated (step S207).
  • the output side decision algorithm in Fig. 35 is all judged as Yes in the judgment of step S211 force and S215.
  • the basic module that outputs itself is accepted from the target core C3 (step S216).
  • the core C2 accepts the basic module 5 of the core C3 according to the output side judgment algorithm shown in Fig. 35. Therefore, the basic module bow I reception request message shown in Fig. 36, which describes the contents of the basic module 5 for core C3, is created by the module C2 module placement control unit 37, and the communication unit 38 is To be sent to core C3.
  • the basic module acceptance request message shown in FIG. 36 is received by the module C3 via the communication unit 38 at the module placement control unit 37, and the corresponding module 5 in the program execution area 31 whose module size is its own. If it is the same, the module placement control unit 37 creates a basic module acceptance response message for core C2 in Fig. 37, via the communication unit 38, Send to core C2.
  • Process 26 :
  • the core C2 sends an acceptance response message of the basic module of process 25 to the communication unit 38.
  • the module input / output unit 30 is notified that an additional module will be transmitted.
  • Core C3 which has sent the basic module acceptance response message, instructs module I / O unit 30 to create basic module I / O data for module 5 for core C2 along with the operation stop command for module 5. .
  • the module input / output unit 30 issues an operation stop command to the module 5 that has been operating in the program execution area 31, and then the basic module input / output of the module 5 in the program execution area 31.
  • basic module input / output data as shown in Fig. 38 is created and sent to core C2.
  • Core C2 which receives the basic module input / output data shown in Fig. 38 in process 27 by module input / output unit 30, places this basic module in program execution area 31 and starts its operation.
  • the module placement control unit 37 of the core C3 notified of the start of the operation of the module 5 by the module input / output unit 30 transmits a basic module acceptance completion message shown in FIG. 39 to the core C3 via the communication unit 38.
  • the core C3 that has received the basic module bow I reception completion message shown in FIG. 39 in the processing 29 by the module placement control unit 37 via the communication unit 38 operates in the program execution area 31 with respect to the module input / output unit 30. Instruct to remove module 5 in the stopped state.
  • the module input / output unit 30 of the core C3 executes the deletion of the module 5 in the program execution area 31.
  • Fig. 40A (Part 1) and Fig. 40B (Part 2) are sequence flow diagrams summarizing the contents from Process 21 to Process 31 when the basic module is accepted from another core.
  • Figure 40A The process numbers in FIG. 40B correspond to the process 21 to the process 31 described above.
  • Pattern 3 The case where the module is saved to the other core side will be explained using an example of transferring the basic module from core C2 to core C1 and core C3.
  • Core C2 which has completed startup of processor 1 and is performing normal operation, periodically acquires core information of core C1 to which input data is acquired and core C3 to which operation result data is output. It is stored in the core information database (DB) 39 of the communication unit 38. Similarly, the core C2 performing normal operation periodically sends the core information to the core C1 that receives the input data and the core C3 that outputs the operation result data. Transmitting via unit 35 ⁇ module arrangement control unit 37 ⁇ communication unit 38.
  • the basic module placement control unit 10a outside the processor must be connected to the core C2 via the basic module placement control unit 10b inside the processor.
  • the module arrangement information shown in 41 is transmitted.
  • Core C2 identifies the module's transmittable core based on the module arrangement information shown in Fig. 41 acquired when the processor is started (for example, core Clor core C2), and the core information transmitted from that core Compare with your core information.
  • the core information of each of core C1, core C2, and core C3 is shown in Fig. 24A (core information of input core C1), Fig. 24B (core information of self-core C2), Fig. 24C ( This is as shown in (Core information of output side core C3).
  • module 3 is delivered to core C 1 and module 4 is delivered to core C3.
  • core C2 delivers module 3 to core C1 and module 4 to core C3. Therefore, for the core C1, the basic module 3
  • the basic module bow I delivery request message (part 1) in Fig. 43A is created by the module placement control unit 37 of the core C2 and sent to the core C1 via the communication unit 38 .
  • the module placement control unit 37 of the core C2 creates the basic module delivery request message (part 2) in FIG. 43B, which describes the contents of the delivery of the basic module 4 to the core C3. Is sent to core C3 via.
  • Process 46 :
  • the core C1 and core C3 received by the module placement control unit 37 via the communication unit 38 via the communication module 38 in the basic module bow I delivery request message in process 45 are determined based on the free space in the program execution area 31 of its own module size. Also make sure it is small.
  • the core C2 receives the bow response message of the two basic modules shown in FIG. 44A and FIG. 44B by the module placement control unit 37 via the communication unit 38.
  • core C2 instructs module input / output unit 30 to create basic module input / output data for modules 3 and 4 for core C1 and core C3, along with the operation stop command for module 4. Do.
  • the module input / output unit 30 Upon receipt of the instruction, the module input / output unit 30 issues an operation stop command to the modules 3 and 4 that have been operating in the program execution area 31. Then, with reference to the basic module input / output data of modules 3 and 4 in the program execution area 31, the basic module input / output data shown in Figs. 45A and 45B is created and sent to core C1 and core C3.
  • FIG. 45A shows basic module input / output data sent to the core C1
  • FIG. 45B shows basic module input / output data sent to the core C3.
  • the module placement control unit 37 of the core C1 and the core C3 notified of the start of the operation of the module 3 and the module 4 from the module input / output unit 30 respectively sends the bow I transfer response message of the basic module shown in FIGS. 46A and 46B. Send to core C2 via communication unit 38.
  • Fig. 46A is a basic module delivery response message for core C1
  • Fig. 46B is a basic module delivery response message for core C3.
  • the core C2 which has received the delivery completion message of the two basic modules of processing 50 by the module placement control unit 37 via the communication unit 38, is sent to the module input / output unit 30 and the module in the operation stop state in the program execution area 31. Instruct to remove 3 and module 4.
  • the module input / output unit 30 of the core C2 that has received the module deletion instruction in the processing 51 executes the deletion of the module 3 and the module 4 in the program execution area 31.
  • FIG. 47A (part 1), FIG. 47B (part 2), and FIG. 47 (part 3) are the corresponding sequence flows in which the processing 41 to the processing 52 are summarized.
  • the process numbers in the sequence flow correspond to the above process 41 to process 52.
  • the basic module is configured by dividing the processing content required for the entire processor into unified minimum structural units of the input / output interface.
  • Each core of the multiprocessor is equipped with one or more functions that can be used to know information such as the usage rate of its own core, and each core can re-execute the basic module periodically or as needed based on this information. Configured to perform placement.
  • processing contents of each core can be appropriately controlled according to the current processing status, and the processing contents for each core can be determined automatically.
  • processing allocation to each core This algorithm is necessary to determine the process, and it is easy for software engineers to establish an efficient process allocation algorithm.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

 複数のコアを有するマルチコアプロセッサについて,その処理負荷分散のために,各コアへの処理割り当てを決定するために必要なアルゴリズムの確立,更にソフトウェア技術者にとって簡単であり,かつ効率的な処理割り当てアルゴリズムの確立を実現する。かかる処理負荷分散を実現するために,マルチコアプロセッサにおいて,プロセッサ全体として要求される処理内容を入出力形式インタフェースの統一された最小構成単位に分割された複数の基本モジュールを形成し,前記複数の基本モジュールを初期配置として前記複数のコアに分配配置し,ついで,前記各コアの機能情報に基づき,定期的もしくは適時に前記初期配置された複数の基本モジュールを再配置する。

Description

明 細 書
マルチコアプロセッサ
技術分野
[0001] 本発明は,マルチコアプロセッサに関し,特に各コアへの処理分散の動的な適用を 可能とするマルチコアプロセッサに関する。
背景技術
[0002] プロセッサの一種として,一チップ上に複数のコアを集積し,所定機能を分散処理 するマルチコアプロセッサが知られている(例えば,特許文献 1)。
[0003] そして,将来のソフトウェアの複雑化,肥大化に対応するためには,処理の分散, 並列処理の面で力かるマルチコアプロセッサが有望とされている。
その顕著な例として,昨今,種々のメーカー力もマルチコアプロセッサに関する技術 提案,製品が発表されている。しかし,マルチコアプロセッサの実用化においては, 以下の様な課題がある。
[0004] 第 1に各コアへの処理内容の割り当て方法が複雑になる,
第 2に各コアに最適な処理を割り当てられていない状態の場合,余計な電力を消 費してしまう等である。
[0005] 上記の課題の解決に関して,以下の技術が必要と考えられる。
[0006] 第 1に現在の処理状況に合わせ各コアの処理内容を適切にコントロールする機能 第 2に各コアへの処理内容を自動的に決定する機能
である。
特許文献 1 :特開 2002— 117011号公報
発明の開示
発明が解決しょうとする課題
[0007] したがって,本発明の目的は,処理量が動的に変化する環境でのマルチコアプロ セッサの処理割り当て方法を自動化する。そのために,各コアへの処理割り当てを決 定するために必要なアルゴリズムの確立,更にソフトウェア技術者にとって簡単であり ,かつ効率的な処理割り当てアルゴリズムの確立を実現するマルチコアプロセッサを 提供することにある。
課題を解決するための手段
[0008] 上記の課題を達成する本発明の第 1の側面は,複数のコアを有するマルチコアプ 口セッサにおける処理負荷分散方法であって,プロセッサ全体として要求される処理 内容を入出力形式インタフェースの統一された最小構成単位に分割された複数の基 本モジュールを形成し,前記複数の基本モジュールを初期配置として前記複数のコ ァに分配配置し,ついで,前記各コアの機能情報に基づき,定期的もしくは適時に 前記初期配置された複数の基本モジュールを再配置することを特徴とする。
[0009] 上記の課題を達成する本発明の第 2の側面は,複数のコアを有するマルチコアプ 口セッサであって,複数のコアを有するコア部と,プロセッサ部を有し,前記プロセッサ 部は,前記コア部の各コアに外部から受信した処理対象のデータを受け渡す受信部 と,前記コア部力 外部に向けて出力されたデータを外部に送出する送信部と,外部 力 送信された基本モジュールを,前記複数のコアの 、ずれに配置するかを判断し ,対象のコアに前記基本モジュールを配置する処理を行う基本モジュール送信部と, 外部から指定された配置制御方法を,前記複数のコアの全てに対し通知する基本モ ジュール配置制御部を有して構成され,前記複数の基本モジュールが,初期配置と して前記複数のコアに分配配置され,更に前記各コアの機能情報に基づき,定期的 もしくは適時に前記初期配置された複数の基本モジュールが再配置されることを特 徴とする。
[0010] 前記第 1,第 2の側面において,
前記各コアの機能情報は,前記各コアに i)自コアに要求された信号数と, 自コア力 ら
他コアに出力された信号数をカウントする機能, ii)自コアに内臓されている受信バッ ファの蓄積容量と,送信バッファの蓄積容量を計測する機能及び,
iii)自コアに対し要求されたキューの数と,他コアに要求しているキューの数を計測す る機能の内少なくとも一の機能により得られた情報である。
[0011] また,前記複数のコアの全てを使用し,前記複数の基本モジュールのそれぞれに ついて,各コアでの処理能力が最大値となるように,前記複数の基本モジュールの 再配置を行うようにしてもょ 、。
また,前記複数のコアの内,使用優先度の高いコアが,使用優先度の低いコアの基 本モジュールを引き取ることにより前記複数の基本モジュールの再配置を行うように してちよい。
[0012] さらに,前記複数のコアの内,少なくとも 1つのコアを残し,他のコアに対して,前記 複数の基本モジュールのそれぞれについて,各コアでの処理能力が最大値となるよ うに,前記複数の基本モジュールの再配置を行うようにしてもょ 、。
[0013] 前記第 2の側面において,前記コア部の複数のコアのそれぞれは,データの入出 力部と,前記データの入出力部における入力バッファ量及び出力バッファ量を測定 するノ ッファ測定部と,前記基本モジュールが配置されるプログラム実行エリアと, 前記プログラム実行エリア全体の使用率及び,基本モジュール毎の使用率を測定 するコア使用率測定部を備え,前記バッファ測定部により測定された入力バッファ量 及び出力バッファ量及び,前記コア使用率測定部により測定された前記プログラム実 行エリアの使用率に基づくコア状態を出力するコア状態送信部と,通信部を通して取 得した他コアの状態情報が記述されて 、る情報データベースと,前記コア状態送信 部から送られる自己コアのコア状態と,前記情報データベースに記述されている, 自 コアに配置されている基本モジュールの前後の工程の実行を担当する他コアの状態 を比較して,コア全体の使用率に差が有る場合に基本モジュールの再配置制御を行 うモジュール配置制御部を有する用に構成できる。
[0014] 本発明の更なる特徴は,以下に図面を参照して説明される発明を実施するための 最良の形態力 更に明らかになる。
図面の簡単な説明
[0015] [図 1]図 1は,基本モジュールを説明する図である。
[図 2]図 2は,複数の最小単位の基本モジュールの初期配置を説明する図である。
[図 3]図 3は,平均/分散型による再配置の例を示す図である。
[図 4]図 4は,コア詰め型による再配置の例を示す図である。
[図 5]図 5は,平均/分散型とコア詰め型の第 1の応用例を示す図である。
[図 6]図 6は,平均/分散型とコア詰め型の第 2の応用例を示す図である。 [図 7]図 7は,本発明が適用される 1チップで構成されるプロセッサ 1の構成例を示す 図である。
[図 8]図 8は,コア部 3の各コア Cl〜Cnに共通の一のコアの構成例ブロック図である
[図 9]図 9は,基本モジュールのデータ形式及び,基本モジュールのプログラム形式 について,その一例示す図である。
[図 10]図 10は,複数の基本モジュールデータの関係の一例を示す図である。
[図 11]図 11は,基本モジュール間の入出力データ形式の一例を示す図である。
[図 12]図 12は,複数のモジュール間の入出力データの関係を示す図である。
[図 13]図 13は,コア情報のデータ形式を示す図である。
[図 14]図 14は,モジュール配置情報のデータ形式について,実施形態の一例を示 す図である。
[図 15]図 15は,基本モジュールの弓 Iき渡し要求メッセージ形式の実施例を示す図で ある。
[図 16]図 16は,基本モジュールの弓 Iき渡し応答メッセージ形式の実施例を示す図で ある。
[図 17]図 17は,基本モジュールの弓 Iき渡し及び応答メッセージによる処理が完了し たときのメッセージの形式を示す図である。
[図 18]図 18は,基本モジュールの弓 Iき受け要求メッセージ形式を示す図である。
[図 19]図 19は,基本モジュールの弓 Iき受け応答メッセージの形態例を示す図である
[図 20]図 20は,基本モジュールの弓 Iき受け完了メッセージの実施例形式を示す図で ある。
[図 21]図 21は,プロセッサ起動時の基本モジュール配置方法についての実施例シ ーケンスフロー(その 1)である。
[図 22]図 22は,プロセッサ起動時の基本モジュール配置方法についての実施例シ ーケンスフロー(その 2)である。
[図 23]図 23は,プロセッサ起動時に取得されるモジュール配置情報を示す図である [図 24A]図 24Aは,コア C1のコア†青報を示す図である。
[図 24B]図 24Bは,コア C2のコア情報を示す図である。
[図 24C]図 24Cは,コア C3のコア情報を示す図である。
[図 25]図 25は,入力判定アルゴリズムを示す図である。
[図 26]図 26は,出力判定アルゴリズムを示す図である。
[図 27]図 27は,基本モジュールの弓 Iき渡し要求メッセージを示す図である。
[図 28]図 28は,基本モジュールの弓 Iき渡し応答メッセージを示す図である。
[図 29]図 29は,基本モジュール入出力データを示す図である。
[図 30]図 30は,基本モジュールの弓 Iき渡し応答メッセージを示す図である。
[図 31A]図 31Aは,他のコアに基本モジュールを引き渡す場合の上記処理 1から処 理 11までの内容をまとめたシーケンスフロー図(その 1)である。
[図 31B]図 31Bは,他のコアに基本モジュールを引き渡す場合の上記処理 1から処 理 11までの内容をまとめたシーケンスフロー図(その 2)である。
[図 32]図 32は,プロセッサ 1の起動時に取得したモジュール配置情報を湿す図であ る。
[図 33A]図 33Aは,コア C1のコア情報を示す図である。
[図 33B]図 33Bは,コア C2のコア情報を示す図である。
[図 33C]図 33Cは,コア C3のコア情報を示す図である。
[図 34]図 34は,入力側判定アルゴリズムを示す図である。
[図 35]図 35は,出力側判定アルゴリズムを示す図である。
[図 36]図 36は,基本モジュールの弓 Iき受け要求メッセージを示す図である。
[図 37]図 37は,基本モジュールの弓 Iき受け応答メッセージを示す図である。
[図 38]図 38は,基本モジュール入出力データを示す図である。
[図 39]図 39は,基本モジュールの弓 Iき受け完了メッセージを示す図である。
[図 40A]図 40Aは,他のコアから基本モジュールを引き受ける場合のシーケンスフロ 一図(その 1)である。
[図 40B]図 40Bは,他のコアから基本モジュールを引き受ける場合のシーケンスフロ 一図(その 2)である。
[図 41]図 41は,モジュール配置情報を示す図である。
[図 42]図 42は,退避判定アルゴリズム示す図である。
[図 43A]図 43Aは,基本モジュールの弓 Iき渡し要求メッセージ(その 1)を示す図であ る。
[図 43B]図 43Bは,基本モジュールの弓 Iき渡し要求メッセージ(その 2)を示す図であ る。
[図 44A]図 44Aは,コア C 1からの送信用の基本モジュールの弓 |き渡し応答メッセ一 ジを示す図である。
[図 44B]図 44Bは,コア C3からの送信用の基本モジュールの弓 |き渡し応答メッセージ を示す図である。
[図 45A]図 45Aは,コア C1に送信される基本モジュール入出力データを示す。
[図 45B]図 45Bは,コア C3に送信される基本モジュール入出力データを示す。
[図 46A]図 46Aは,コア C1からコア C2に対する基本モジュールの引き渡し応答メッ セージを示す図である
[図 46B]図 46Bは,コア C3からコア C2に対する基本モジュールの弓 |き渡し応答メッセ ージを示す図である
[図 47A]図 47Aは,パターン 3の処理に対応するシーケンスフロー(その 1)である。
[図 47B]図 47Bは,パターン 3の処理に対応するシーケンスフロー(その 2)である。
[図 47C]図 47Cは,パターン 3の処理に対応するシーケンスフロー(その 3)である。 発明を実施するための最良の形態
[0016] 本発明の実施の形態例を図面に従い説明するに先だって,本発明の理解を容易と するべく本発明の原理及び概念構成例を先に説明する。
[0017] 図 1は,基本モジュールを説明する図である。すなわち,プロセッサ全体として要求 されて 、る処理内容全体を,入力出力形式インターフェース (IF)の統一化された最 小構成単位に分割し,基本モジュールとして作成する。
[0018] 図中,基本モジュール A〜Jに分割されている。
[0019] ここで,マルチコアプロッセの各コアには,下記に示すような自コアの使用率等の情 報を知りえる機能を一つ以上実装する。
[0020] i)自コアに要求された信号数 (シグナル/ ms等)と, 自コア力も他コアに出力された 信号数をカウントする機能
ii)自コアに内臓されている受信バッファの蓄積容量と,送信バッファの蓄積容量を 計
測する機能
iii)自コアに対し要求されたキューの数と,他コアに要求しているキューの数を計測 す
る機能
つぎに,図 2に示すように,上記図 1に示すように分割された,複数の最小単位の基 本モジュールをマルチコアプロセッサ 1に予め配置する(初期配置)。図 2に示す例で は, 5つのコアのそれぞれに,二つの基本モジュールが配置されている。
[0021] かかる初期配置では,各コアに基本モジュールを配置するが,その際,基本モジュ ールに必要な CPUリソース量や,コア毎の処理可能な基本モジュール数等を意識 する必要はない。
[0022] つぎに,基本モジュールが初期配置された状態で処理を実行する。その際,各コア は上記 i)〜iii)の機能情報を基に,定期的,もしくは必要に応じて適宜に,基本モジ ーノレ
の再配置を行う。
[0023] その際の再配置方法は,下記に示す法則に則り制御される。
[平均/分散型]
図 3は,平均/分散型による再配置の例を示す図である。
[0024] マルチコアプロセッサ 1内の全コア Cl〜5を使用し,各基本モジュールの処理性能 が最大値をとるように再配置を行う。これにより,各コアでの処理能力を最大限に引き 出すことが可能であり,プロセッサ全体の処理効率も自動的に最大となる
力かる平均/分散型の方法では,各コアの処理能力が均等になり、プロセッサのコ ァ全てを有効に使用可能である。また,再配置後、要求される処理内容が大きく変わ らなければ再々配置を行わずに処理が継続出来る。 [コア詰め型]
図 4は,コア詰め型による再配置の例を示す図である。
[0025] この再配置の制御の方法は,使用優先度の高いコアが,使用優先度の低いコアの 基本モジュールを引き取ることが可能であれば,引取り,再配置を行うものである。
[0026] プロセッサ 1全体の処理に余裕がある場合は,使用優先度の高いコアに処理が詰 められ,使用するコア数を減らすことが可能である。これにより,プロセッサあたりの使 用するコア数を最小限に抑えることが可能であり、未使用のコアを作りたい場合に適 し,未使用のコアは他のタスク等で使用可能となる。
[0027] さらに,使用するコアの数で消費電力が決定されるようなプロセッサの場合、プロセ ッサの消費電力を抑えることが可能である。
[0028] [平均/分散型とコア詰め型の応用]
上記の平均/分散型とコア詰め型制御を応用して,次のような利用が可能である。
[0029] 図 5は,平均/分散型とコア詰め型の第 1の応用例を示す図である。
[0030] プロセッサ 1のコア総数のうち, A個のコアを残した状態で基本モジュールを平均/ 分散させる。残したコア(図 5では,コア 5)において,別の処理 (定期的なヘルスチェ ック等)が実行可能である。残したコア数 Aの値は,
0≤A≤ (全体のコア数 最低限必要なコア数)の範囲で指定可能であり,定期的に 入る割り込み処理の規模に応じて,再配置可能である。
[0031] 図 6は,平均/分散型とコア詰め型の第 2の応用例を示す図である。
[0032] プロセッサ 1の複数あるコアのうち,故障したコア(図 6の例ではコア C3)が発生した 際に,そのコア C3を除 、た状態で基本モジュールを平均 Z分散させる。
[0033] 故障したコア C3を残した状態で動作可能なため,保守者介在が行われるまでの間
,パフォーマンスがおちた状態ではあるが装置として運用可能である。
[0034] 上記原理により理解出来るように,本発明により,次のような従来例にはないメリット が得られる。
i)各コアへの処理割り当てを,ソフトウェア開発者が意識することなく実現できる。 ii)平均/分散型,コア詰め型の二通りのアルゴリズムを使用するだけで,多彩なプロ グ ラム配置方法を実現できる。
iii)プロセッサ全体の基本モジュール配置を制御するプログラムを別途必要とすること なく,プロセッサ全体の基本プログラムの最適化が実現できる。
[0035] 次に,上記原理及び概念構成に対応する本発明に従う具体的実施例について説 明する。
[0036] 本発明の適用対象とするデバイスは, 2個以上の演算回路 (コア)を持つ, CPU, ネットワークプロセッサ等のプロセッサである。そして,本発明が適用可能な条件とし て,各コアに対し,データ入出力の規格ィ匕のされたプログラム (基本モジュール)を入 力出来る機能部を有して 、る。
[0037] 図 7は,本発明が適用される 1チップで構成されるプロセッサ 1の構成例である。
[0038] 複数のコア CI, C2, · · ·コア Cnを有しているコア部 3と,コア部 3を除くプロセッサ 部 2を有している。
[0039] そして,プロセッサ部 2は,コア部 3の各コアに対し,基本モジュールを入力出来る 機能部を有している。
[0040] 以下に,各機能部の機能の詳細を説明する。
[プロセッサ部 2]
プロセッサは, 2個以上のコアを有するコア部 3とそれ以外の機能を受け持つプロセ ッサ部 2を有している。プロセッサ部 2は,コア部 3の各コア Cl〜Cnに外部から受信 部 12に入力されたデータを受け渡す機能を持つ。また,各コア Cl〜Cnから外部向 けに出力されたデータを,送信部 13を介して外部に送信する機能を持つ。
[0041] プロセッサ部 2は,さらに外部の基本モジュール送信部 11aから送信されたデータ を基に,内部の基本モジュール送信部 l ibで,どのコアに対してどの基本モジユー ルを配置すべきかを判断し,対象のコアに対してモジュールを配置する。
[0042] なお,以降の説明において,基本モジュール送信部 11a及び基本モジュール送信 部 l ibをまとめて単に基本モジュール送信部 11と呼ぶ。
[0043] 基本モジュール送信部 11からコア及び基本モジュールの関係が指定されて!、な!/、 場合,プロセッサ部 2はコア部 3の第一コア C1に対して基本モジュールを送信し,第 一コア C1から基本モジュール格納メモリ容量がフルであるとの情報を受信次第,次 のコア C2に基本モジュールの送信を開始する。
[0044] プロセッサ部 2は,外部の基本モジュール配置制御部 10aにより,基本モジュール のコア配置制御方法を指定された場合,内部の基本モジュール配置制御部 10bによ り,全コア Cl〜Cnに対し,その制御情報を通知する。その際,プロセッサ部 2は,指 定された制御情報を全コア Cl〜Cnに通知するのみで,各コアの状態を把握し,状 態に応じたコントロールを行うようなことはしない。なお,以降の説明において,基本 モジュール配置制御部 10a及び基本モジュール配置制御部 10bをまとめて単に基 本モジュール配置制御部 10と呼ぶ。
[0045] プロセッサ部 2は,特定のコアから基本モジュールの再送要求があった際は,対象 コアに対して対象基本モジュールを配置するように基本モジュール送信部 11に要求 を出す。
[コア部 3]
コア部 3の各コア Cl〜Cnは, 1つのプロッセサ内に 2個以上配置され,基本モジュ ールを実行する部分である。
[0046] 図 8は,コア部 3の各コア Cl〜Cnに共通のコア構成例ブロック図である。
[0047] コア Cl〜Cnはプロセッサ部 2の基本モジュール配置制御部 10により配置された基 本モジュールをモジュール入出力部 30で受信し,対応するコアのプログラム実行エリ ァ 31内に展開する。
[0048] プログラム実行エリア 31に基本モジュールが配置されている状態の場合(図 8には ,基本モジュール A, Bが配置されている),受信部 12を通してデータが入力され,受 信バッファ 32に格納されると,受信データは,プログラム実行エリア 31に被演算情報 として取り込まれる。
[0049] 通常,プログラム実行エリア 31内に複数の基本モジュールが配置されていた場合, それらは連続したお互い関連した処理フローとなっているため,入力されたデータは 基本モジュール Aで処理された後,基本モジュール Bで演算されると 、つた態様で, プログラム実行エリア 31内で受け渡しが行われる。
[0050] その後,プログラム実行エリア 31内での処理が終わったデータは,コア部 3内の送 信バッファ 33に格納され,他のセル内の基本モジュールの演算が必要な場合に,そ のセルに向けて送信される。
[0051] また,今回の基本モジュールの演算により信号処理が終了となるデータについては
,プロセッサ部 2の送信バッファ 15に送信される。
[0052] 上記の一連のデータ受信→演算→データ送信のサイクルの中で,コア部 3のそれ ぞれのコアは常にデータの送受信量,演算量等のコアの状態を測定している。
[0053] 測定データの種類として,コアのデータ受信バッファ 32の入力バッファ量,出カバ ッファ量がある。データ送信バッファ 33の入力バッファ量及び,出力バッファ量をバッ ファ測定部 34で常に監視 (または,一定間隔で監視)し,コア状態送信部 35に送信 する。
[0054] 上記のような手順を用いて,コア部 3に対して送信されるデータ量及び,一のコアが 他のコア(またはプロセッサ部 2の送信バッファ 15)に対して送信するデータ量の速度 や,送受のデータ量の差を算出できる。
[0055] また,コア使用率測定部 36では,プログラム実行エリア全体の使用率,及び基本モ ジュールごとの使用率を取得する。
[0056] モジュール配置制御部 37には, 自コアの状態が常時 (または,一定間隔で)送信さ れる。このコア状態情報と,通信部 38が取得し,情報データベース 39内に記述され ている他コアの状態情報を基に,現在の自己のコアの動作が適切力どうかを判断す る。
[0057] 具体的には, 自己のコア内に配置されている基本モジュールの前後の工程を担当 しているコアの状態と比較し,コア全体の使用率に差があれば,基本モジュールの再 配置を実施する。
[0058] 上記の構成に基づき,実施例の詳細を,順を追って説明する。
[基本モジュールのデータ形式]
各コアのプログラム実行エリア 31に配置される,データ入出力の規格ィ匕のされたプ ログラムを,ここでは基本モジュールと呼ぶ。
[0059] この基本モジュールのデータ形式及び,基本モジュールのプログラム形式につい て,その一例を図 9に示す。さらに,図 10は,複数の基本モジュールデータの関係の 一例を示す図である。図 10において,基本モジュールデータが,配置先とするそれ ぞれのコアに破線矢印のように順次に送られ,配置される。
[0060] 図 9において,基本モジュールのデータ形式は,対象コア No.:I,基本モジュール名 II,データサイズ III,入力コア No.:IV,入力先モジュール名 V,出力コア No.:VI,出力 先モジュール名 VII,プログラムデータ VIIIの 8種類のデータからなる。
[0061] 対象コア No.:Iは,基本モジュールを処理すべきコアの番号が示されており,プロセ ッサ部 2の基本モジュール配置制御部 10が,この番号に対応するコアに該当の基本 モジュールを配置する。
[0062] 基本モジュール名 IIは, 自己のモジュール名称を示し,他の基本モジュールとの識 別に用いる。
[0063] データサイズ IIIは,基本モジュール内のプログラムデータ VIIIのデータサイズを示し ,プログラム実行エリア内に該当のプログラムが配置可能かどうかの判断に用いる。
[0064] 入力コア No.:IVは,基本モジュール内のプログラムの入力データが送信されるべき コアの番号が示されている。基本モジュール内のプログラムは,この番号に示された コア力もデータが入力されることを期待する。また,入力コア番号 IVに「プロセッサ内 受信バッファ」と示されていた場合は,コア向けではなく,プロセッサ部 2内部の受信 バッファ 14に入力データが格納されているので,その入力データを受信バッファ 14 から取得する。
[0065] 入力先モジュール名 Vは,該当の基本モジュール内のプログラムの入力データが 送信されるべき基本モジュールの名称が示されて 、る。基本モジュール内のプログラ ムは,この名称の基本モジュール力もデータが入力されることを期待する。また,入力 コア番号に「プロセッサ内受信バッファ」と示されていた場合は,受信バッファ 14内の ,入力先モジュール名 Vの示されたデータを取得する。
[0066] 出力コア No.:VIは,基本モジュール内のプログラムに出力データを送信すべきコア の番号が示されている。基本モジュール内のプログラムは,この番号に示されたコア に向け,出力データを送信する。また,出力コア No.:VIに「プロセッサ内送信バッファ 」と示されていた場合は,コア向けではなく,プロセッサ部内 2部の送信バッファ 15に 向けて出力データを送信する。
[0067] 出力先モジュール名 VIIは,基本モジュール内のプログラムの出力データを送信す べき基本モジュールの名称が示されている。基本モジュール内のプログラムは,この 名称の基本モジュール向けに出力データを送信する。出力コア No.:VIに「プロセッサ 内送信バッファ」と示されていた場合は,送信バッファ 15内に出力先モジュール名 VI Iの示されたデータを格納する。
[0068] プログラムデータ VIIIには,入出力形式が規定されたプログラムデータが格納される
[基本モジュールのプログラム形式]
基本モジュール内のプログラム形式は,入力データ形式と出力データ形式が,それ ぞれ,入力先モジュールの出力形式,出力先モジュールの入力形式と一致していれ ば問題なく,プログラム内容については,プログラム実行エリア内で使用できる関数 等を用いて記述されて!ヽればよ ヽ。
[0069] [基本モジュール間の入出力データ形式]
以下に,基本モジュール間の入出力データ形式について,その一例を示す。図 11 は,基本モジュール間の入出力データ形式の一例であり,図 12は,複数のモジユー ル間の入出力データの関係を示す図である。図 12において,破線矢印は,送信デ ータの流れを示す。
[0070] 図 11に示されるように,基本モジュール間の入出力データ形式は,宛先コア番号 I ,宛先モジュール名 II,送信元コア No.:III,送信元モジュール名 IV,処理 No.:V,デー タサイズ VI,入力データ VIIから構成される。
[0071] 宛先コア No.:Iは,データの送信先であるコア番号を記述する。
[0072] 宛先モジュール名 IIは,データの送信先である基本モジュール名称を記述する。
[0073] 送信元コア No.:IIIは, 自己のコア番号を記述する。プロセッサ 1内の受信バッファ 3 2もしくは送信バッファ 33の場合はそれぞれ,受信バッファ,送信バッファと記述する
[0074] 送信元モジュール名 IVは, 自己の基本モジュール名称を記述する。プロセッサ 1内 の受信バッファ 32もしくは送信バッファ 33の場合はそれぞれ,入力データ名,送信 データ名を記述する。
[0075] 処理 No.:Vは,そのデータの処理番号を記述し,ここの入出力データとの混同の発 生をなくす。
[0076] データサイズ VIは,入出力データのサイズを記述する。
[0077] 入力データ VIIは,入力データ形式と出力データ形式が,それぞれ,入力先モジュ ールの出力形式,出力先モジュールの入力形式と一致していれば問題ない。
[コア情報のデータ形式]
コア情報のデータ形式について,実施形態の一例を以下に説明する。コア情報と は,コア部 3のコア状態送信部 35がモジュール配置制御部 37に対して通知するコア の使用率及び送受信バッファ 32, 33の使用量もしくは送受信信号数などのコアの状 態を示すデータを示したものである。すなわち,前後のコア同士協調処理を行うため の情報である。
[0078] この情報をモジュール配置制御部 37が通信部 39を通して,データの受け渡し対象 であるコアに通知し, 自己のコア状態を通知する。また,他のコア力も得たコア情報と , 自己のコア情報を比較することによって,基本モジュールの再配置のトリガとする。
[0079] 以下にコア情報のデータ形式を示す図 13を参照して,具体的なコア情報のデータ 構成を説明する。
[0080] 図 13に示すコア情報は,対象コア No.:I,受信バッファの入力量 II,受信バッファの 出力量 III,送信バッファの入力量 IV,送信バッファの出力量 V,コア全体の使用率 VI ,基本モジュール毎の使用率 VII,コア全体のデータサイズ VIII,コア全体の空きデー タ容量 IX,基本モジュール毎のデータサイ Xから構成される。
[0081] 対象コア No.:Iは,コア情報を記述した対象コア番号が示されている。
[0082] 受信バッファの入力量 IIは受信バッファ部 15がある一定時間 (t)に,外部から入力さ れたデータ量を示す。この値によって,外部からのデータ流入量と流入速度がある一 定時間単位 (t)で計測できる。
[0083] 受信バッファの出力量 IIIは受信バッファ部 32がある一定時間 ( に,プログラム実行 エリア 31へ入力されたデータ量を示す。この値によって,プログラム実行エリア 31の データ入力量と入力速度がある一定時間単位 (t)で計測できる。
送信バッファの入力量 IVは送信バッファ部 33がある一定時間 ( に,プログラム実行 エリア 31から出力されたデータ量を示す。この値によって,プログラム実行エリア 31 力ものデータ出力量と出力速度がある一定時間単位 (t)で計測できる。
[0084] 送信バッファの出力量 Vは送信バッファ部 33がある一定時間に,外部へ出力した データ量を示す。この値によって,外部へのデータ出力量と出力速度がある一定時 間単位 (t)で計測できる。
[0085] コア全体の使用率 VIは,プログラム実行エリア 31内における,前プロセスの使用率 の合計値を示す。この値は,シングル CPUでいうところの, CPU使用率に相当する。
[0086] 基本モジュールあたりの使用率 VIIは,プログラム実行エリア 31内に配置された,基 本モジュールの使用率を個々に示す。
[0087] コア全体のデータサイズ VIIIは,プログラム実行エリア 31内に現在配置されている 基本モジュールのデータサイズの合計値を示す。
[0088] コア全体の空きデータ容量 IXは,プログラム実行エリア 31内に配置可能なデータ 領域全体から,現在配置されている基本モジュールのデータサイズを差し引いた,空 きデータ容量を示す。
[0089] 基本モジュールあたりのデータサイ XXは,プログラム実行エリア 31内に現在配置 されている,基本モジュールのデータサイズを個々に示す。
[モジュール配置情報のデータ形式]
モジュール配置情報のデータ形式について,図 14に示す実施形態の一例により 以下に説明する。
[0090] モジュール配置情報とは,外部のモジュール配置制御部 20a経由で,プロセッサの モジュール配置制御部 10bが各コアに一定間隔もしくは必要に応じて送信する,モ ジュールの再配置アルゴリズムを記述したデータである。
[0091] 各コアはこの情報を基に,コア内の基本モジュールを他のコアに送信する許可や, 他のコアの基本モジュールを受け入れる許可があるかどうか判断する。
[0092] 図 14に示すモジュール配置情報のデータ構成により説明する。
[0093] モジュール配置情報は,対象コア番号 I,入力先コア側へのモジュール送信許可 II ,入力先コア側力 のモジュール受信許可 III,出力先コア側へのモジュール送信許 可 IV,出力先コア側からのモジュール受信許可 V,他コア側へのモジュール退避の 有無 VIから構成される。 [0094] 対象コア番号 Iは,モジュール配置情報の対象コア No.が示されている。
[0095] 入力先コア側へのモジュール送信許可 IIは,データの入力側のコアに対し,モジュ ールを送信してもよいかの許可情報が示される。許可と記述されていた場合は,入力 側コアへモジュールの送信が可能であり,記述されていな力つた場合は,送信不可 である。また,入力側がプロセッサ部 2の受信バッファ 14である場合はモジュールの 送信が不可なため,この許可情報は破棄する。
[0096] 入力先コア側からのモジュール受信許可 IIIは,データの入力側のコアから,モジュ ールを送信された場合に,受信してもよいかの許可情報が示される。許可と記述され ていた場合は,入力側コアからのモジュール受信が可能であり,記述されていなかつ た場合は,受信不可である。
[0097] 出力先コア側へのモジュール送信許可 IVは,データの出力側のコアに対し,モジュ ールを送信してもよ ヽか否かの許可情報が示される。許可と記述されて 、た場合は, 出力側コアへモジュールの送信が可能であり,記述されていな力つた場合は,送信 不可である。また,出力側がプロセッサ部 2の送信バッファ 15である場合はモジユー ルの送信が不可なため,この許可情報は破棄する。
[0098] 出力先コア側からのモジュール受信許可 Vは,データの出力側のコアから,モジュ ールを送信された場合に,受信してもよいかの許可情報が示される。許可と記述され ていた場合は,出力側コアからのモジュール受信が可能であり,記述されていなかつ た場合は,受信不可である。
[0099] 他コア側へのモジュール退避の有無 VIは,対象コア内で動作している基本モジュ ールを他のコアに退避させたい場合に「有り」と記述する。退避ありの場合は,先述の 入力先コア側へのモジュール送信許可及び出力先コア側へのモジュール送信許可 の内容を判断しつつ,基本モジュールを他のコアに配置する。
[0100] よって,他コア側へのモジュール退避有りの場合は,入力先コア側へのモジュール 送信許可及び出力先コア側へのモジュール送信許可のいずれかの許可を行わなけ ればならない。
[基本モジュールの弓 Iき渡し要求/応答のメッセージ形式]
基本モジュールの弓 Iき渡し要求/応答のメッセージ形式にっ 、て,実施形態の一例 を以下に示す。
[0101] モジュール配置情報の各種許可情報を受信した際に,モジュールの再配置許可が あった場合は,コア情報のデータを基に,基本モジュールの再配置が可能となる。仮 にコア情報のデータから, 自己のコアの処理能力よりも,他のコアの処理能力の方が 余裕があると認識した場合は, 自己の中の基本モジュールの一部を,他のコアに引 き渡す (配置する)処理を行い,処理量の均衡化を行う。
[0102] その際の引き渡し要求と,要求を受け付けたコアの応答,及び実際の配置完了のメ ッセージ形式について,以下に示す。
[0103] 図 15は,基本モジュールの引き渡し要求メッセージ形式の実施例である。図 15に おいて,宛先コア No. : I,送信元コア No. : 11,基本モジュール名 III,モジュールサイズ I
V力 構成される。
[0104] 宛先コア No. :1は,基本モジュールの引き渡し希望先のコア番号を示す。
[0105] 送信元コア No. : 11は,基本モジュールの引き渡し元のコア番号を示す。
[0106] 基本モジュール名 IIIは,引き渡し対象の基本モジュール名称を示す。
[0107] モジュールサイズ IVは,引き渡し対象の基本モジュール名称のプログラムサイズを 示す。
[0108] 一方,基本モジュールの引き渡し応答メッセージは,実施例として図 16に示すよう である。図 16において,宛先コア No. : 1,送信元コア No.:II,基本モジュール名 III,引 き渡し応答の可否 IVから構成される。
[0109] 宛先コア No. :1は,基本モジュールの引き渡し元のコア番号を示す。
[0110] 送信元コア No.:IIは,基本モジュールの引き渡し希望先である, 自己のコア番号を 示す。
[0111] 基本モジュール名 IIIは引き渡し対象の基本モジュール名称を示す。
[0112] 引き渡し応答の可否 IVは,引き渡しが可能かどうかの可否が示される。
[基本モジュールの弓 Iき渡し完了メッセージ形式]
図 17は,上記の基本モジュールの弓 Iき渡し及び応答メッセージによる処理が完了 したときのメッセージの形式を示す。図 17に示すように,基本モジュールの引き渡し 完了メッセージは,宛先コア No. : I,送信元コア No. : 11,基本モジュール名 III,引き渡 し完了の情報 IVから構成される。
[0113] 宛先コア No. : 1は,基本モジュールの引き渡し元のコア番号を示す。
[0114] 送信元コア No. : 11は,基本モジュールの引き渡し希望先である, 自己のコア番号を 示す。
[0115] 基本モジュール名 IIIは引き渡し対象の基本モジュール名称を示す。
[0116] 引き渡し完了の情報は IV,引き渡しが完了したかどうかの情報が示される。
[基本モジュールの弓 Iき受け要求/応答のメッセージ形式]
モジュール配置情報の各種許可情報を受信した際に,モジュールの再配置許可が あった場合は,コア情報のデータを基に,基本モジュールの再配置が可能となる。仮 にコア情報のデータから,他のコアの処理能力よりも, 自己のコアの処理能力の方が 余裕があると認識した場合は,他の基本モジュールの一部を, 自己のコアに引き受け る(受信する)処理を行 ヽ,処理量の均衡化を行う。
[0117] その際の引き受け要求と,要求を受け付けたコアの応答のメッセージ及び,基本モ ジュールの引き受け完了メッセージの形式について,以下に説明する。
[0118] 図 18は,基本モジュールの引き受け要求メッセージ形式を示す図であり,宛先コア
No. : I,送信元コア No. : 11,基本モジュール名 III,モジュールサイズ IVから構成される
[0119] 宛先コア No. : 1は,基本モジュールの引き受け希望先のコア番号を示す。
[0120] 送信元コア No. : 11は,基本モジュールの引き受け元のコア番号を示す。
[0121] 基本モジュール名 IIIは,引き受け対象の基本モジュール名称を示す。
[0122] モジュールサイズ IVは,引き受け対象の基本モジュール名称のプログラムサイズを 示す。
[0123] 図 19は,以下に,基本モジュールの引き受け応答メッセージの形態例を示す図で ある。宛先コア No. : I,送信元コア No. : II,基本モジュール名 III,引き渡し応答の可否 I Vにより構成される。
宛先コア No. : Iは,基本モジュールの引き受け元のコア番号を示す。
[0124] 送信元コア No.:IIは,基本モジュールの引き受け希望先である, 自己のコア番号を 示す。 [0125] 基本モジュール名は引き受け対象の基本モジュール名称 IIIを示す。
[0126] 引き渡し応答の可否 IVは,引き受けが可能かどうかの可否が示される。
[0127] 図 20は,基本モジュールの引き受け完了メッセージの実施例形式を示す図である
。宛先コア No. : I,送信元コア No. : II,基本モジュール名 III,引き渡し完了の情報 IVか ら構成される。
宛先コア No. : Iは,基本モジュールの引き受け元のコア番号を示す。
[0128] 送信元コア No. : 11は,基本モジュールの引き受け希望先である, 自己のコア番号を 示す。
[0129] 基本モジュール名 IIIは引き受け対象の基本モジュール名称を示す。
[0130] 引き渡し完了の情報 IVは,引き受けが可能力どうかの情報が示される。
[プロセッサ起動時の基本モジュール配置方法]
上記の対応するメッセージフォーマットに従って実行される,プロセッサ起動時の基 本モジュール配置方法について,図 21 (その 1) ,図 22 (その 2)に示す実施例シーケ ンスフローを参照して説明する。
処理工程 P1:プロセッサ 1の外部の基本モジュール配置制御部 10aから,プロセッサ 1内部の基本モジュール配置制御部 10b経由で,各コアに対し,コア内の通信部 38 を通して,モジュール配置制御部 37にモジュール配置情報を送信する。
処理工程 P2 :モジュール配置情報送信が,コア個数分送信完了すると,プロセッサ 1 外部の基本モジュール送信部 1 laから,プロセッサ 1内部の基本モジュール送信部 1 lb経由で,各コアに対し,コア内のモジュール入出力部 30を通して,プログラム実行 エリア 31に基本モジュールプログラムを配置する。この処理工程 P2は,各コアに対し ,各コアの対応する基本モジュール個数分繰り返して行われる。
[0131] 例えば,図 21において,コア C1に対し,基本モジュール個数 mに対応して,処理 が繰り返される(P2— 1)。
[0132] このようにして,基本モジュールプログラムの送信が完了したら,実行準備完了であ る。
[コア内の基本モジュールの再配置方法]
コア内の基本モジュールの再配置方法について, 3パターンの動作について,実 施形態の一例を以下に示す。
パターン 1:他のコアに基本モジュールを引き渡す場合の例をコア C2からコア C3に 基本モジュールを引き渡す例で説明する。
処理 1 :
プロセッサ 1の起動が完了し,通常の動作を行っているコア C2は,入力データを取 得する先のコア C1及び,演算結果のデータを出力する先のコア C3のコア情報を定 期的に取得している。
[0133] この情報を通信部 38のコア情報データベース (DB) 39に蓄積する。また同様に, 通常の動作を行っているコア C2は,入力データの取得先のコア C1及び,演算結果 のデータの出力先のコア C3に対し,定期的にコア情報をコア状態送信部 35→モジ ユール配置制御部 37→通信部 38を経由し送信している。
処理 2 :
コア C2は,プロセッサ起動時に取得した,図 23に示すモジュール配置情報を参照 する。図 23に示すモジュール配置情報では,モジュールの送信可能コアを特定して いる。したがって,モジュールの送信可能コア力も送信される情報と自己のコア情報 とを比較する。
処理 3 :
各コア情報として,コア C1,コア C2及びコア C3のコア情報が,それぞれ対応する 図 24A,図 24B,図 24Cに示される。
[0134] そして上記コア情報の比較として,図 25に示す入力判定アルゴリズムに従い,コア
C1とコア C2を比較する。
[0135] 図 24A,図 24Bに示すコア C1とコア C2のコア情報の例では,図 25の入力判定ァ ルゴリズムにおいて,ステップ S101において,送信ノヾ、ッファの出力量一送信ノヾ、ッフ ァの入力量) < 0でないと判定されるので,コアを引き渡すべきではないと判断される
[0136] そして,入力側のコア情報もしくは自己(コア C2)のコア情報がアップデートされるま で待機する (ステップ S 107)。
[0137] 一方,図 24B,図 24Cに示すコア C2とコア C3のコア情報の例では,図 26に示す 出力判定アルゴリズムにおいて,ステップ S111力ら S115の判定において,全て Yes と判定されるので,コア C3に引き渡すべきと判定され,基本モジュールを対象コア C 3に送信する (ステップ S 116)。
処理 4 :
上記処理 3において,コア C2は,コア C3に対して,基本モジュール 4を引き渡すこ とが確定される。よって,コア C3に対して,基本モジュール 4を引き渡す内容が記載 された,図 27に示す基本モジュールの引き渡し要求メッセージを,コア C2のモジュ ール配置制御部 37で作成し,通信部 38を経由して,コア C3に送信する。
処理 5 :
これに対し,図 27に示す基本モジュールの引き渡し要求メッセージを,コア C3の通 信部 38経由でモジュール配置制御部 37より受信したコァ C3は,モジュールサイズ が自己のプログラム実行エリアの空き容量よりも小さいことを確認し,小さ力つた場合 は,コア C2に対して図 28に示す基本モジュールの引き渡し応答メッセージを,モジ ユール配置制御部 37で作成し,通信部 38を経由でコア C2に送信する。
処理 6 :
処理 5の基本モジュールの引き渡し応答メッセージを,コア C2は,その通信部 38経 由でモジュール配置制御部 37により受信すると,モジュール入出力部 30に対して, 基本モジュール 4の動作停止命令と共に,コア C3向けに基本モジュール 4の基本モ ジュール入出力データを作成するように指示を行う。
処理 7 :
指示を受けたコア C2のモジュール入出力部 30は,プログラム実行エリア 31内で動 作を行っていたモジュール 4に対し動作停止命令を行い,その後,プログラム実行ェ リア 31内のモジュール 4の基本モジュール入出力データを参考に,図 29に示すよう なデータを作成し,コア C3に送信する。
処理 8 :
処理 7における図 29に示した基本モジュール入出力データをモジュール入出力部 30で受信したコア C3は,プログラム実行エリア 31内に,この基本モジュール 4を配置 し,動作を開始する。 処理 9 :
コア C3における基本モジュール 4の動作開始をモジュール入出力部 30より通知さ れたコア C3のモジュール配置制御部 37は,図 30に示す基本モジュールの引き渡し 応答メッセージを通信部 38経由でコア C2に送信する。
処理 10 :
処理 9における図 30に示した基本モジュールの弓 Iき渡し完了メッセージを通信部 3 8経由でモジュール配置制御部 37で受信したコア C2は,モジュール入出力部 30に 対し,プログラム実行エリア 31内の動作停止状態のモジュール 4を削除する様に指 示を行う。
処理 11 :
モジュール 4を削除指示に対し,コア C2のモジュール入出力部 30は,プログラム実 行エリア 31内のモジュール 4の削除を実行する。
[0138] 図 31A (その 1) ,図 31B (その 2)は,他のコアに基本モジュールを引き渡す場合の 上記処理 1から処理 11までの内容をまとめたシーケンスフロー図である。図 31A,図 31Bにおいて処理番号は,上記に説明した処理 1から処理 11に対応する。
パターン 2 :他のコアから基本モジュールを引き受ける場合を,コア C2がコア C3から 基本モジュールを引き受ける例により説明する。
処理 21 :
プロセッサ 1の起動が完了し,通常の動作を行っているコア C2は,入力データを取 得する先のコア C1及び,演算結果のデータを出力する先のコア C3のコア情報を定 期的に取得しており,通信部 38のコア情報データベース (DB) 39に蓄積する。
[0139] また同様に,通常の動作を行っているコア C2は,入力データを取得する先のコア C 1及び,演算結果のデータを出力する先のコア C3に対し,定期的にコア情報をコア 状態送信部 35→モジュール配置制御部 37→通信部 38を経由し送信している。 処理 22 :
コア C2は,プロセッサ 1の起動時に取得した,図 32に示すモジュール配置情報を 基に,モジュールの送信可能コアを特定している(例として,コア C1又はコア C2)。そ のコア力も送信されるコア情報と自己のコア情報とを比較する。 各コア情報として,コア C1,コア C2及びコア C3のコア情報が,それぞれ対応する 図 33A,図 33B,図 33Cに示される。そして上記コア情報の比較として,図 34に示す 入力側判定アルゴリズムに従い,コア C1とコア C2を比較する。
処理 23 :
図 33A,図 33Bに示すコア C1とコア C2のコア情報の例では,図 34の入力側判定 アルゴリズムにおいて,ステップ S202の判定即ち, 自己のコアのコア情報において, (受信ノヾ、ッファの出力量 受信ノヾ、ッファの入力量) >0とならないので,コアを引き 受けるべきではないと判断される。そして,入力側のコア情報もしくは自己(コア C2) のコア情報がアップデートされるまで待機する (ステップ S 207)。
一方,図 33B,図 33Cに示すコア C2とコア C3のコア情報の例では,図 35の出力 側判定アルゴリズムにおいて,ステップ S211力ら S215の判定において,全て Yesと 判定されるので,入力側の自己に出力を行っている基本モジュールを対象コア C3か ら引き受ける (ステップ S216)。
処理 24 :
上記処理 23において,図 35に示す出力側判定アルゴリズムに従い,コア C2は,コ ァ C3の基本モジュール 5を引き受けることが確定される。よって,コア C3に対して, 基本モジュール 5を引き受ける内容が記載された,図 36に示す基本モジュールの弓 I き受け要求メッセージを,コア C2のモジュール配置制御部 37で作成し,通信部 38を 経由して,コア C3に送信する。
処理 25 :
これに対し,図 36に示す基本モジュールの引き受け要求メッセージを,コア C3は, 通信部 38経由でモジュール配置制御部 37にて受信し,モジュールサイズが自己の プログラム実行エリア 31内の該当するモジュール 5と同一であることを確認し,同一で あった場合は,コア C2に対して,図 37に基本モジュールの引き受け応答メッセージ を,モジュール配置制御部 37で作成し,通信部 38を経由して,コア C2に送信する。 処理 26 :
処理 25の基本モジュールの引き受け応答メッセージを,コア C2は,その通信部 38 経由でモジュール配置制御部 37により受信すると,モジュール入出力部 30に対して ,追カ卩のモジュールが送信されることを通知する。
処理 27 :
基本モジュールの引き受け応答メッセージを送信したコア C3は,モジュール入出 力部 30に対して,モジュール 5の動作停止命令と共に,コア C2向けにモジュール 5 の基本モジュール入出力データを作成するように指示を行う。指示を受けたモジユー ル入出力部 30は,プログラム実行エリア 31内で動作を行っていたモジュール 5に対 し動作停止命令を行い,その後,プログラム実行エリア 31内のモジュール 5の基本モ ジュール入出力データを参考に,図 38に示すような基本モジュール入出力データを 作成し,コア C2に送信する。
処理 28 :
処理 27における図 38に示した基本モジュール入出力データをモジュール入出力 部 30で受信したコア C2は,プログラム実行エリア 31内に,この基本モジュールを配 置し,動作を開始する。
処理 29 :
モジュール 5の動作開始をモジュール入出力部 30より通知されたコア C3のモジュ ール配置制御部 37は,図 39に示す基本モジュールの引き受け完了メッセージを通 信部 38経由でコア C3に送信する。
処理 30 :
処理 29における図 39に示した基本モジュールの弓 Iき受け完了メッセージを通信部 38経由のモジュール配置制御部 37で受信したコア C3は,モジュール入出力部 30 に対し,プログラム実行エリア 31内の動作停止状態のモジュール 5を削除する様に 指示を行う。
処理 31 :
モジュール削除指示に対し,コア C3のモジュール入出力部 30は,プログラム実行 エリア 31内のモジュール 5の削除を実行する。
図 40A (その 1) ,図 40B (その 2)は,他のコアから基本モジュールを引き受ける場 合の上記処理 21から処理 31まで内容をまとめたシーケンスフロー図である。図 40A ,図 40Bにおける処理番号は,上記に説明した処理 21から処理 31に対応する。 パターン 3 :他コア側へのモジュール退避が発生した場合をコア C2からコア C1,コア C3に基本モジュールを引き渡す例により説明する。
処理 41 :
プロセッサ 1の起動が完了し,通常の動作を行っているコア C2は,入力データを取 得する先のコア C1及び,演算結果のデータを出力する先のコア C3のコア情報を定 期的に取得しており,通信部 38のコア情報データベース (DB) 39に蓄積する。また 同様に,通常の動作を行っているコア C2は,入力データを取得する先のコア C1及 び,演算結果のデータを出力する先のコア C3に対し,定期的にコア情報をコア状態 送信部 35→モジュール配置制御部 37→通信部 38を経由し送信している。
処理 42 :
特定の条件により,コア C2に対し,モジュール退避を行わなければならなくなった 場合,プロセッサ外部の基本モジュール配置制御部 10aから,プロセッサ内部の基 本モジュール配置制御部 10b経由でコア C2に対し,図 41に示すモジュール配置情 報を送信する。
処理 43 :
コア C2は,プロセッサ起動時に取得した,図 41のモジュール配置情報を基に,モ ジュールの送信可能コアを特定しており(例として,コア Clorコア C2) ,そのコアから 送信されるコア情報と自己のコア情報とを比較する。このときの,コア C1,コア C2及 びコア C3のそれぞれのコア情報は,先に示した図 24A (入力側コア C1のコア情報) ,図 24B (自己コア C2のコア情報),図 24C (出力側コア C3のコア情報)に示すごとく である。
処理 44 :
このコア情報に基づき,図 42に示す退避判定アルゴリズムに従い判定すると,モジ ユール 3をコア C 1に引き渡し,モジュール 4をコア C3に弓 Iき渡すことになる。
処理 45 :
処理 44の工程において,コア C2は,モジュール 3をコア C1に引き渡し,モジユー ル 4をコア C3に引き渡すことになる。これよつて,コア C1に対して,基本モジュール 3 を引き渡す内容が記載された図 43Aの基本モジュールの弓 Iき渡し要求メッセージ( その 1)をコア C2のモジュール配置制御部 37により作成し,通信部 38を経由して,コ ァ C1に送信する。同様に,コア C3に対して,基本モジュール 4を引き渡す内容が記 載された図 43Bの基本モジュールの引き渡し要求メッセージ(その 2)をコア C2のモ ジュール配置制御部 37により作成し,通信部 38を経由して,コア C3に送信する。 処理 46 :
処理 45における基本モジュールの弓 Iき渡し要求メッセージを,通信部 38経由でモ ジュール配置制御部 37で受信したコア C1及びコア C3は,それぞれモジュールサイ ズが自己のプログラム実行エリア 31の空き容量よりも小さいことを確認する。
[0142] 小さいことが確認されれば,コア C2に対して,それぞれ図 44A (コア C1からの送信 用),図 44B (コア C3から送信用)に示す基本モジュールの引き渡し応答メッセージ を,モジュール配置制御部 37で作成し,通信部 38を経由して,コア C2に送信する。 処理 47 :
処理 46における図 44A,図 44Bに示した二つの基本モジュールの弓 |き渡し応答メ ッセージを,コア C2は,通信部 38経由でモジュール配置制御部 37で受信する。つ いで,コア C2は,モジュール入出力部 30に対して,モジュール 4の動作停止命令と 共に,コア C1及びコア C3向けにモジュール 3及びモジュール 4の基本モジュール入 出力データを作成するように指示を行う。
処理 48 :
指示を受けたモジュール入出力部 30は,プログラム実行エリア 31内で動作を行つ ていたモジュール 3及びモジュール 4に対し動作停止命令を行う。その後,プログラム 実行エリア 31内のモジュール 3及びモジュール 4の基本モジュール入出力データを 参考に,図 45A,図 45Bに示す基本モジュール入出力データを作成し,コア C1及 びコア C3に送信する。
[0143] 図 45Aは,コア C1に送られる基本モジュール入出力データであり,図 45Bは,コア C3に送られる基本モジュール入出力データである。
処理 49 :
処理 48の基本モジュール入出力データをモジュール入出力部 30で受信したコア CI及びコア C3は,プログラム実行エリア 31内に,この基本モジュールを配置し,動 作を開始する。
処理 50 :
モジュール 3及びモジュール 4の動作開始をモジュール入出力部 30より通知された コア C1及びコア C3のモジュール配置制御部 37は,それぞれ図 46A,図 46Bに示 す基本モジュールの弓 Iき渡し応答メッセージを通信部 38経由でコア C2に送信する。
[0144] 図 46Aは,コア C1向け,図 46Bは,コア C3向けの基本モジュールの引き渡し応答 メッセージである。
処理 51 :
処理 50の二つの基本モジュールの引き渡し完了メッセージを通信部 38経由のモ ジュール配置制御部 37で受信したコア C2は,モジュール入出力部 30に対し,プロ グラム実行エリア 31内の動作停止状態のモジュール 3及びモジュール 4を削除する 様に指示を行う。
処理 52 :
処理 51においてモジュールの削除指示を受けたコア C2のモジュール入出力部 30 は,プログラム実行エリア 31内のモジュール 3及びモジュール 4の削除を実行する。
[0145] 図 47A (その 1) ,図 47B (その 2)及び図 47 (その 3)は,上記処理 41から処理 52を まとめた対応するシーケンスフローである。シーケンスフローにおける処理番号は,上 記処理 41から処理 52に対応している。
産業上の利用可能性
[0146] 以上図面に従い,本発明の実施の形態を説明したように,プロセッサ全体に要求さ れている処理内容を入出力形式インタフェースの統一された最小構成単位に分割し て基本モジュールを構成して 、る。
[0147] マルチプロセッサの各コアには, 自コアの使用率等の情報を知り得る機能を一以上 実装して各コアがこの情報を基に,定期的もしくは,必要に応じて基本モジュールの 再配置を行うように構成される。
これにより,現在の処理状況に合わせ各コアの処理内容を適切にコントロールし,各 コアへの処理内容を自動的に決めることが出来る。さらに,各コアへの処理割り当て を決定するために必要なアルゴリズムであって,ソフトウェア技術者にとって簡単であ り,かつ効率的な処理割り当てアルゴリズムが確立出来る。
[0148] よって,マルチプロセッサにおいて,時間と共に変わりゆく各アプリケーションの負 荷状態に対し,動的なリソース配分を可能とすることが出来,産業上寄与するところ 大である。
[0149] ここで,上記実施の形態についての説明は,本発明の理解のためのものであって, 本発明の技術的範囲は,力かる実施の形態に限定されるものではなく,特許請求の 範囲に記載の事項及びそれに均等の範囲の事項に及ぶものである。

Claims

請求の範囲
[1] 複数のコアを有するマルチコアプロセッサにおける処理負荷分散方法であって, プロセッサ全体として要求される処理内容を入出力形式インタフェースの統一され た最小構成単位に分割された複数の基本モジュールを形成し,
前記複数の基本モジュールを初期配置として前記複数のコアに分配配置し, ついで,前記各コアの機能情報に基づき,定期的もしくは適時に前記初期配置さ れた複数の基本モジュールを再配置する
ことを特徴とするマルチコアプロセッサにおける処理負荷分散方法。
[2] 請求項 1において,
前記各コアの機能情報は,前記各コアに i)自コアに要求された信号数と, 自コア力 ら
他コアに出力された信号数をカウントする機能, ii)自コアに内臓されている受信バッ ファの蓄積容量と,送信バッファの蓄積容量を計測する機能及び,
iii)自コアに対し要求されたキューの数と,他コアに要求しているキューの数を計測す る機能の内少なくとも一の機能により得られた情報であることを特徴とするマルチコア プロセッサにおける処理負荷分散方法。
[3] 請求項 1において,
前記複数のコアの全てを使用し,前記複数の基本モジュールのそれぞれについて ,各コアでの処理能力が最大値となるように,前記複数の基本モジュールの再配置 を行うことを特徴とするマルチコアプロセッサにおける処理負荷分散方法。
[4] 請求項 1において,
前記複数のコアの内,使用優先度の高いコアが,使用優先度の低いコアの基本モ ジュールを引き取ることにより前記複数の基本モジュールの再配置を行うことを特徴と するマルチコアプロセッサにおける処理負荷分散方法。
[5] 請求項 1において,
前記複数のコアの内,少なくとも 1つのコアを残し,他のコアに対して,前記複数の 基本モジュールのそれぞれについて,各コアでの処理能力が最大値となるように,前 記複数の基本モジュールの再配置を行うことを特徴とするマルチコアプロセッサにお ける処理負荷分散方法。
[6] 複数のコアを有するマルチコアプロセッサであって,
複数のコアを有するコア部と,
プロセッサ部を有し,前記プロセッサ部は,
前記コア部の各コアに外部力 受信した処理対象のデータを受け渡す受信部と, 前記コア部力 外部に向けて出力されたデータを外部に送出する送信部と, 外部から送信された基本モジュールを,前記複数のコアの 、ずれに配置するかを 判断し,対象のコアに前記基本モジュールを配置する処理を行う基本モジュール送 信部と,
外部から指定された配置制御方法を,前記複数のコアの全てに対し通知する基本 モジュール配置制御部を有して構成され,
前記複数の基本モジュールが,初期配置として前記複数のコアに分配配置され, 更に前記各コアの機能情報に基づき,定期的もしくは適時に前記初期配置された 複数の基本モジュールが再配置される
ことを特徴とするマルチコアプロセッサ。
[7] 請求項 6において,
前記各コアの機能情報は,前記各コアに i)自コアに要求された信号数と, 自コア力 ら
他コアに出力された信号数をカウントする機能, ii)自コアに内臓されている受信バッ ファの蓄積容量と,送信バッファの蓄積容量を計測する機能及び,
iii)自コアに対し要求されたキューの数と,他コアに要求しているキューの数を計測す る機能の内少なくとも一の機能により得られた情報であることを特徴とするマルチコア プロセッサ。
[8] 請求項 6において,
前記複数のコアの全てを使用し,前記複数の基本モジュールのそれぞれについて
,各コアでの処理能力が最大値となるように,前記複数の基本モジュールが再配置さ れることを特徴とするマルチコアプロセッサ。
[9] 請求項 6において, 前記複数のコアの内,使用優先度の高いコアが,使用優先度の低いコアの基本モ ジュールを引き取ることにより前記複数の基本モジュールが再配置されることを特徴 とするマルチコアプロセッサ。
[10] 請求項 6において,
前記複数のコアの内,少なくとも 1つのコアを残し,他のコアに対して,前記複数の 基本モジュールのそれぞれについて,各コアでの処理能力が最大値となるように,前 記複数の基本モジュールが再配置されることを特徴とするマルチコアプロセッサ。
[11] 請求項 6において,
前記コア部の複数のコアのそれぞれは,
データの入出力部と,
前記データの入出力部における入力バッファ量及び出力バッファ量を測定するバ ッファ測定部と,
前記基本モジュールが配置されるプログラム実行エリアと,
前記プログラム実行エリア全体の使用率及び,基本モジュール毎の使用率を測定 するコア使用率測定部を備え,
前記バッファ測定部により測定された入力バッファ量及び出力バッファ量及び,前 記コア使用率測定部により測定された前記プログラム実行エリアの使用率に基づくコ ァ状態を出力するコア状態送信部と,
通信部を通して取得した他コアの状態情報が記述されている情報データベースと, 前記コア状態送信部から送られる自己コアのコア状態と,前記情報データベースに 記述されている, 自コアに配置されている基本モジュールの前後の工程の実行を担 当する他コアの状態を比較して,コア全体の使用率に差が有る場合に基本モジユー ルの再配置制御を行うモジュール配置制御部を
有することを特徴とするマルチコアプロセッサ。
PCT/JP2005/017958 2005-09-29 2005-09-29 マルチコアプロセッサ WO2007037006A1 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2007537505A JP4777994B2 (ja) 2005-09-29 2005-09-29 マルチコアプロセッサ
PCT/JP2005/017958 WO2007037006A1 (ja) 2005-09-29 2005-09-29 マルチコアプロセッサ
US12/049,509 US8516491B2 (en) 2005-09-29 2008-03-17 Multi-core processor

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2005/017958 WO2007037006A1 (ja) 2005-09-29 2005-09-29 マルチコアプロセッサ

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US12/049,509 Continuation US8516491B2 (en) 2005-09-29 2008-03-17 Multi-core processor

Publications (1)

Publication Number Publication Date
WO2007037006A1 true WO2007037006A1 (ja) 2007-04-05

Family

ID=37899445

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2005/017958 WO2007037006A1 (ja) 2005-09-29 2005-09-29 マルチコアプロセッサ

Country Status (3)

Country Link
US (1) US8516491B2 (ja)
JP (1) JP4777994B2 (ja)
WO (1) WO2007037006A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009057208A1 (ja) * 2007-10-31 2009-05-07 Fujitsu Limited 資源割当プログラム、管理ノード、資源割当方法、および並列計算機システム
WO2010010723A1 (ja) * 2008-07-22 2010-01-28 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
KR101425620B1 (ko) * 2007-12-17 2014-07-31 삼성전자주식회사 멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치
US8800002B2 (en) 2008-02-18 2014-08-05 Microsoft Corporation Inter-process networking for many-core operating systems
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology
US9613378B2 (en) 2008-01-15 2017-04-04 Nasdaq Technology Ab Distributed ranking and matching of messages

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8365184B2 (en) 2007-08-31 2013-01-29 Apple Inc. Multi-core resource utilization planning
JP5321691B2 (ja) * 2009-11-16 2013-10-23 富士通株式会社 並列計算装置、並列計算方法、および並列計算プログラム
US8789065B2 (en) 2012-06-08 2014-07-22 Throughputer, Inc. System and method for input data load adaptive parallel processing
US8910177B2 (en) 2011-04-14 2014-12-09 Advanced Micro Devices, Inc. Dynamic mapping of logical cores
GB2490036B (en) * 2011-04-16 2013-05-22 Mark Henrik Sandstrom Efficient network and memory architecture for multi-core data processing system
US9448847B2 (en) 2011-07-15 2016-09-20 Throughputer, Inc. Concurrent program execution optimization
US9626273B2 (en) * 2011-11-09 2017-04-18 Nec Corporation Analysis system including analysis engines executing predetermined analysis and analysis executing part controlling operation of analysis engines and causing analysis engines to execute analysis
JP2016025649A (ja) * 2014-07-24 2016-02-08 富士通株式会社 電子装置及び機器検知方法
CN106371914A (zh) * 2015-07-23 2017-02-01 中国科学院声学研究所 一种基于负载强度的多核任务调度方法及系统
KR102479513B1 (ko) * 2018-02-26 2022-12-21 삼성전자주식회사 전자장치 및 그 제어방법
JP2019179415A (ja) * 2018-03-30 2019-10-17 株式会社デンソー マルチコアシステム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324593A (ja) * 1992-05-26 1993-12-07 Nec Corp マルチ・プロセッサシステムにおけるタスク管理方式
JPH07152699A (ja) * 1993-11-29 1995-06-16 Canon Inc 情報処理方法及び装置及びシステム
JP2000259590A (ja) * 1999-03-10 2000-09-22 Fujitsu Ltd モジュール連携方法およびこれを利用した計算機システム
JP2004199678A (ja) * 2002-12-17 2004-07-15 Internatl Business Mach Corp <Ibm> タスク・スケジューリングの方法、システム、およびプログラム製品

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630129A (en) * 1993-12-01 1997-05-13 Sandia Corporation Dynamic load balancing of applications
US5924097A (en) * 1997-12-23 1999-07-13 Unisys Corporation Balanced input/output task management for use in multiprocessor transaction processing system
JP4328905B2 (ja) 2000-10-06 2009-09-09 学校法人東京電機大学 集積回路およびその制御方法
WO2004004245A1 (en) * 2002-06-28 2004-01-08 Nokia Corporation Load balancing devices and method therefor
US7334086B2 (en) * 2002-10-08 2008-02-19 Rmi Corporation Advanced processor with system on a chip interconnect technology
US8141164B2 (en) * 2006-08-21 2012-03-20 Citrix Systems, Inc. Systems and methods for dynamic decentralized load balancing across multiple sites

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05324593A (ja) * 1992-05-26 1993-12-07 Nec Corp マルチ・プロセッサシステムにおけるタスク管理方式
JPH07152699A (ja) * 1993-11-29 1995-06-16 Canon Inc 情報処理方法及び装置及びシステム
JP2000259590A (ja) * 1999-03-10 2000-09-22 Fujitsu Ltd モジュール連携方法およびこれを利用した計算機システム
JP2004199678A (ja) * 2002-12-17 2004-07-15 Internatl Business Mach Corp <Ibm> タスク・スケジューリングの方法、システム、およびプログラム製品

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009057208A1 (ja) * 2007-10-31 2009-05-07 Fujitsu Limited 資源割当プログラム、管理ノード、資源割当方法、および並列計算機システム
KR101425620B1 (ko) * 2007-12-17 2014-07-31 삼성전자주식회사 멀티 코어 프로세서 기반의 비디오 디코딩 방법 및 장치
US9613378B2 (en) 2008-01-15 2017-04-04 Nasdaq Technology Ab Distributed ranking and matching of messages
US8800002B2 (en) 2008-02-18 2014-08-05 Microsoft Corporation Inter-process networking for many-core operating systems
WO2010010723A1 (ja) * 2008-07-22 2010-01-28 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
JP5195913B2 (ja) * 2008-07-22 2013-05-15 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
US8856196B2 (en) 2008-07-22 2014-10-07 Toyota Jidosha Kabushiki Kaisha System and method for transferring tasks in a multi-core processor based on trial execution and core node
US9250973B2 (en) 2009-03-12 2016-02-02 Polycore Software, Inc. Apparatus and associated methodology of generating a multi-core communications topology

Also Published As

Publication number Publication date
JP4777994B2 (ja) 2011-09-21
US20080168466A1 (en) 2008-07-10
US8516491B2 (en) 2013-08-20
JPWO2007037006A1 (ja) 2009-04-02

Similar Documents

Publication Publication Date Title
WO2007037006A1 (ja) マルチコアプロセッサ
US10198294B2 (en) Handling tenant requests in a system that uses hardware acceleration components
EP2248019B1 (en) A data processing arrangement
EP3283974B1 (en) Systems and methods for executing software threads using soft processors
KR101781063B1 (ko) 동적 자원 관리를 위한 2단계 자원 관리 방법 및 장치
EP2701074B1 (en) Method, device, and system for performing scheduling in multi-processor core system
EP3283953B1 (en) Providing services in a system having a hardware acceleration plane and a software plane
Sangeetha et al. Resource management framework using deep neural networks in multi-cloud environment
US20160378570A1 (en) Techniques for Offloading Computational Tasks between Nodes
US20060101465A1 (en) Distributed control system
KR102523419B1 (ko) 저장 장치에서 가속 커널들의 상태 모니터링 방법 및 이를 사용하는 저장 장치
CN113760541B (zh) 边缘资源分配的方法及装置
WO2012077390A1 (ja) ネットワークシステム、及びそのサービス品質制御方法
JP2024521582A (ja) 分散ワークロードを処理する方法及びシステム
CN113806064A (zh) 作业调度方法、装置、系统及作业派发装置
CN115378885B (zh) 超融合架构下的虚拟机业务网络带宽管理方法及装置
WO2015018023A1 (zh) 一种资源调度方法、装置及系统
EP3993269A1 (en) Deterministic dynamic reconfiguration of interconnects within programmable network-based devices
CN114900482B (zh) Ps架构下基于可编程交换机的梯度调度方法和装置
CN112243266A (zh) 一种数据组包方法及装置
KR101081932B1 (ko) 멀티 에이전트 시스템의 부하 분산 방법 및 그 장치
JPH113323A (ja) ジョブ実行の負荷分散装置
KR20140121705A (ko) 타스크를 운용하는 전자 장치 방법 및 그 전자 장치
JPH11143838A (ja) 分散処理システム
JP5646560B2 (ja) 仮想os制御装置、システム、方法およびプログラム

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

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 05787992

Country of ref document: EP

Kind code of ref document: A1