EP2417506A1 - Procédé d'optimisation du fonctionnement d'un circuit intégré multiprocesseurs, et circuit intégré correspondant - Google Patents

Procédé d'optimisation du fonctionnement d'un circuit intégré multiprocesseurs, et circuit intégré correspondant

Info

Publication number
EP2417506A1
EP2417506A1 EP09784373A EP09784373A EP2417506A1 EP 2417506 A1 EP2417506 A1 EP 2417506A1 EP 09784373 A EP09784373 A EP 09784373A EP 09784373 A EP09784373 A EP 09784373A EP 2417506 A1 EP2417506 A1 EP 2417506A1
Authority
EP
European Patent Office
Prior art keywords
block
function
processor
value
calculation
Prior art date
Legal status (The legal status 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 status listed.)
Withdrawn
Application number
EP09784373A
Other languages
German (de)
English (en)
Inventor
Diego Puschini Pascual
Pascal Benoit
Fabien Clermidy
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
Original Assignee
Commissariat a lEnergie Atomique CEA
Commissariat a lEnergie Atomique et aux Energies Alternatives CEA
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 Commissariat a lEnergie Atomique CEA, Commissariat a lEnergie Atomique et aux Energies Alternatives CEA filed Critical Commissariat a lEnergie Atomique CEA
Publication of EP2417506A1 publication Critical patent/EP2417506A1/fr
Withdrawn legal-status Critical Current

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/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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Definitions

  • the invention relates to a method for optimizing the operation of a multi-processor integrated circuit, and an integrated circuit comprising means for optimizing its operation in real time.
  • Multiprocessor integrated circuits are formed on a single monolithic chip and offer very high computational capabilities due to the sharing of tasks. can be accomplished by the different processors.
  • the processors work in relation to each other and the tasks are shared according to the application. Tasks are executed sequentially or in parallel, or both.
  • Each application defines a program for using all or part of the processors, and also defines exchange links between the different processors according to the tasks to be performed.
  • Technological advances tend to increase the number of processors that can be placed on a chip. This number can reach several tens, or even several hundred.
  • Another significant parameter of the circuit performance can be a characteristic time called the "latency time”, which represents the time required for the processor (if it is the latency processor) or a set of processors (if this is the latency time of a set of processors) provides a calculation result after receiving the input data necessary for this calculation.
  • latency time represents the time required for the processor (if it is the latency processor) or a set of processors (if this is the latency time of a set of processors) provides a calculation result after receiving the input data necessary for this calculation.
  • the operation of the chip can be optimized at the chip design stage, taking into account the issues of heat dissipation and synchronization from the design stage. But this is not compatible with the fact that the operating conditions in actual performance will depend greatly on the application and that we can not optimize the operation for all possible applications. It has already been proposed to monitor the risks of hot spots in the chip and to reconfigure the distribution of tasks between the processors according to the estimated or measured hotspots, for example by transferring from one processor to another processor, during operation. , a task that consumes a lot of power.
  • the purpose of the invention is to propose a solution for optimizing in real time, during the execution of an application, the operation of the whole chip by acting on the working conditions of each of the processors, particularly in acting on the frequency of an individual clock associated with each processor.
  • the optimization sought is a multi-objective optimization, one of the main objectives being the monitoring of the energy consumed and another main objective that can be the monitoring of computing latency.
  • an object of the invention is to propose an optimization method that is relatively independent of the number of processors, so that this process can be easily transposed from one chip to another without changing the number of processors. requires a new conception of the means of optimization.
  • an operation optimization method which applies to an integrated circuit chip comprising a plurality of calculation blocks able to execute respective tasks in a given application, each calculation block comprising at least one processor.
  • the term processor will be used hereinafter in a very general sense as being a calculating organ. In this sense an ASIC circuit performing a specific task is considered a processor.
  • the method comprises, for each calculation block:
  • variable parameter such as the frequency or working period of the processor or its supply voltage
  • the real-time determination of at least one characteristic data associated with the calculation block during its operation such as, for example, the temperature of the block or the power dissipated in the block or a calculation latency time of the block, this characteristic data item being dependent on the value of the variable parameter,
  • This method is implemented simultaneously by all the calculation blocks which individually perform a selection of the variable parameter value which is the most appropriate for optimizing the operation of the block; this selection takes into account the information sent by the other processors because the optimization function used by each processor depends on the state of operation of the other blocks (at least some of them which are in closer relationship, functionally or geographically) , with the block considered).
  • a block can correspond to a processor if one wants to optimize the chip by looking for an optimal solution from each processor, but a block could also correspond to a group of processors if one wants to find an optimal solution from groups or "clusters" of processors.
  • the invention also relates to an integrated circuit chip comprising a plurality of calculation blocks each capable of executing a respective task according to the application in which the chip is used, each calculation block comprising
  • each block further comprises:
  • variable parameter is preferably the frequency (or, which amounts to the same, the period) of a clock provided in the calculation block, this clock defining an elementary calculation cycle time of the processor.
  • the variable parameter can also be the supply voltage of the processor, and it is also possible that these two parameters are linked, a frequency change being made at the same time as a change of supply voltage; in the latter case, the frequency will preferably be used as a variable parameter, but it will be necessary to modify the supply voltage as a function of the optimum value found for the frequency.
  • the characteristic data associated with a calculation block is preferably related to the power consumed by the calculation block during its operation, or to a contribution of the block to the power consumed; this power depends directly on the clock frequency of the processor (it increases with the frequency).
  • the characteristic data may also be a latency of a calculation performed in the block, or more generally a contribution of the block to the overall latency of the chip in the application where it operates; this latency also depends on the clock frequency.
  • the optimization function itself can be a function of minimizing the energy or the power consumed, or a function of optimizing a latency in the execution of a task by the chip, or again, preferably, a multi-objective optimization function taking into account both the power consumed and the latency times.
  • This function is chosen so as to present a minimum or a maximum according to the variation of the variable parameter, the characteristic data of the other blocks being considered as fixed parameters; this minimum or this maximum defines the optimum value of the optimization function; the real-time modification of the variable parameter is carried out in a direction tending to reach this optimum.
  • the calculation of the optimization function and the selection of a variable parameter value comprise:
  • the chosen optimization function to have a convex or concave (or quasi-convex or quasi-concave) shape, depending on whether optimization is a minimization or a maximization of the function, on the field of the possible values of the variable parameter; this means that the chosen function, varying according to the variable parameter, must have a derivative of the first order passing through zero, positive on one side of the zero, negative on the other side.
  • An advantageous way of obtaining such an optimization function is to add a main sub-function which varies monotonically over the whole field of the possible values of the variable parameter and a secondary sub-function which varies in the opposite direction towards one end. of this field but which is weak or null on the rest of the field. More precisely, we can establish a secondary sub-function that can be considered as a constrained penalty sub-function at the end of the field, that is to say a sub-function that penalizes the optimization function. when the variable parameter approaches the end of the field, regardless of the value of the main sub-function.
  • the main sub-function that defines the optimization sought for a block is a contribution value from the calculation block to the overall energy consumption of the chip; it is desired to minimize this contribution, which decreases as the clock period increases; and the penalty sub-function is a calculation latency constraint function that imposes a penalty that increases as the clock period lengthens toward the end of the period field.
  • the sum of these two functions is a convex curve (or concave, in the following we will use the convex word to simplify) presenting a maximum or a minimum in the field of possible clock periods.
  • the main sub-function is a calculation latency contribution value in the overall latency of the tasks to be performed; latency increases with the clock period; the secondary subfunction is a penalty function under energy stress which increases strongly when the clock period decreases.
  • the sum of these two functions is still a convex curve presenting a minimum in the field of possible periods.
  • FIG. 1 represents an MP-SoC multiprocessor chip
  • FIG. 2 schematically represents the organization of the chip with several processors connected to each other by a common communication network
  • FIG. 3 represents a graph of execution of several tasks in an application
  • FIG. 4 represents several interconnected processors for performing the tasks of FIG. 3;
  • FIG. 5 represents variation curves of various optimization functions or sub-functions as a function of a variable which is the clock period
  • FIG. 6 represents an optimization function combining several sub-functions
  • FIG. 7 represents a flow chart of optimization process
  • FIG. 8 represents a calculation block organization for executing the optimization process
  • FIG. 9 represents an optimization calculation organization relating to three adjacent values of the variable parameter of the optimization function.
  • FIG. 1 schematically represents a multi-processor IC monolithic integrated circuit chip or MP-SoC chip.
  • the chip is intended to perform a complex global task, including digital processing, and the various processors will perform individual tasks contributing to the overall task, some of these tasks can be executed in parallel. Parallel execution by multiple processors can speed up the execution of the global task. It is the application in which the chip operates that determines the division of tasks and the assignment of tasks to a particular processor.
  • the processors are interconnected with each other and interconnected with the input-output ports of the chip by an interconnection network located on the chip. This network is sometimes called NoC (Network on Chip).
  • a calculation block comprises, for example, a processor PR, a memory MEM, peripheral circuits PER, and a COM interface for connection with the interconnection network.
  • the block preferably also includes a clock frequency adjusting circuit FA.
  • the circuit FA can be a circuit which regulates not only the frequency of work of the processor but also its supply voltage (circuit DVFS of the English "Dynamic Voltage Frequency Scaling"), in particular when this tension must depend on the working frequency .
  • circuit DVFS of the English "Dynamic Voltage Frequency Scaling"
  • the calculation blocks are represented as being all identical squares, but they may be different from each other, in geometry and functionality, and each block could comprise several processors rather than just one.
  • FIG. 3 represents as an example a global task to be performed, divided into six partial tasks T1 to T6 that will be executed by six different calculation blocks B 1 to B 6 .
  • Figure 4 shows a group of six interconnected compute blocks to perform the six tasks. Other interconnections, not shown, will be provided between the blocks, not to ensure the execution of the application, but to achieve the optimization according to the invention, the optimization method implying that each block receives other blocks information on a characteristic data describing the operation of these other blocks.
  • the information may be information on their working frequency or information of energy consumption or calculation latency, or several different information simultaneously.
  • the synchronization of the tasks is important since, for example, the task T3 can not be executed before the block B 3 has received the results of the processors of the blocks B 2 and B 4, the block B 4 can not itself provide results only after receiving results from the processor of block B 2 .
  • each calculation block specific means to optimize the operation, these means using at least one characteristic data relating to the calculation block and characteristic data relating to the other calculation blocks (or at least some other calculation blocks).
  • These specific means act on a variable parameter which governs the operation of the processor, in particular its working frequency, and they calculate an optimization function according to the characteristic data and as a function of the value of the variable parameter; the result of the optimization function is used to modify the value of the variable parameter in a direction that tends towards the sought optimization; in return, following the modification of the variable parameter and thus following the modification of the operation of the processor, the characteristic data are modified, so that the optimization function feedbacks the operation via the variable parameter.
  • the variable parameter will preferably be the frequency or period of the clock that drives the processor.
  • the characteristic data relating to the calculation block will preferably be, on the one hand, an energy consumed in the block, or a contribution of the block to the overall energy consumed by the chip, or a data item related to this energy (which depends on the working frequency and which, more precisely, grows with this frequency), and secondly a calculated parameter representing a relative desynchronization value between processors, or a contribution to the calculation latency of the application, latency time which also depends on the individual clock frequencies of the processors.
  • Each of the calculation blocks B 1 to B n transmits to the other blocks information on the characteristic data relating to the block, and each block will then try to adjust its own variable parameter in a direction that gives an optimal value to the result of the calculation of the optimization function performed in this block.
  • Game theory is a branch of applied mathematics that studies the interactions between rational individuals seeking to optimize a result.
  • non-cooperative games we consider individuals who individually choose the way in which they make decisions, to increase a value of result that is beneficial to them. The decision is made individually by each player based on what he knows of all the other players.
  • the individual calculation blocks can to be considered as individual players in a non-cooperative game, as they are provided with individual decision-making means and individual means of action on their own functioning, allowing to strive for an optimization according to a calculation of their own, while having some knowledge of the state of the other players that are the other blocks of calculation.
  • the means of action is the selection of a frequency or, which amounts to the same, a working period of the processor, and where the optimization function is a search function of a compromise between the local temperature of the block (which one wants to minimize but which increases with the frequency) and the computation time (which one wants to minimize and which decreases with the frequency).
  • OSYNC a and b are weighting coefficients whose sum is equal to 1 and which depend, for each block, on the relative weight that we wish to give to the temperature questions and the questions of synchronization or calculation time.
  • the relative weights, as well as the characteristic data of temperature or synchronization of the tasks, are individual to each block of computation.
  • the characteristic temperature data may be for example a function of the power consumed by the block, and the power consumed by the immediately adjacent blocks which, by thermal conduction contribute to the temperature increase of the block considered.
  • the neighboring blocks must send to the block considered an indication of the power they consume.
  • O TEMP a characteristic data O TEMP . I from a temperature calculation model taking into account the power consumed by the block B 1 , the thermal evacuation resistance of the block, the neighboring block powers B j , the thermal resistance between the rank block i and neighboring blocks, etc.
  • the model consists in observing a data of synchronization between two blocks of rank i and j respectively which would be A SYNC, I, J equal to the module of the difference
  • f, and f j are the working frequencies of the two blocks
  • L 1 and L j are the respective design loads counted proportion of time spent working
  • x and X j are the respective coefficients.
  • the characteristic data for block i is then the sum of all A SYNCs . I J for all rank blocks j functionally connected to block i in the execution of the application.
  • the optimization function O O p ⁇ , ⁇ is particularly simple because it merely adds two sub-functions, with respective weighting coefficients. It will be understood that a combination of more than two optimization sub-functions could also be used.
  • the calculation block will be provided locally with means for calculating different values of the optimization function, on the one hand for the current value of the working frequency of the block (the working frequency being the variable parameter on which we will act for optimize the operation) and secondly for several other values of this frequency.
  • the calculation block establishes a series of calculations to simulate the value that the optimization function would take for the different possible values of the working frequency (for example one of the discrete frequency range from 100 MHz to 300 MHz 5 MHz 5 MHz), including the current value of the frequency, taking into account the current characteristic data of the other calculation blocks.
  • the result of the optimization function O O p ⁇ , ⁇ depends on the current state of the other blocks.
  • the characteristic data representing the current operation of the other blocks can be transmitted in different forms. For example, it can be considered that if the characteristic data is an estimated temperature of another block, the information transmitted can be either a consumed power (calculated in the other block) or a temperature, detected by a local sensor in the other block. another block, that is, the data O TEMP .J calculated in the other block.
  • the blocks gradually converge towards an optimal solution when the optimization function has a convex or quasi-convex shape as a function of the variable parameter (frequency) that is used.
  • an optimization function which involves two sub-functions which are respectively a main sub-function to be optimized (energy or latency for example) and a sub-function.
  • -P penalty function which defines a penalty of the optimization function in case of excessive energy consumption or which defines a penalty in the event of a too high overall latency.
  • the main sub-function varies with the clock period (the energy and the execution time increase with the period), the clock period T 1 of a processor PR 1 of rank i being considered here as being the variable parameter in the optimization process.
  • the penalty sub-functions are designed in such a way that they have little or no influence on the value of the optimization function if the overall energy consumed and the overall latency are below thresholds predetermined but greatly deteriorates the optimization function when the overall energy or latency exceeds these thresholds.
  • PSTAT I , WHERE PSTAT I is the power consumed permanently with or without execution of tasks,
  • the energy E H DYN , I can be considered equal to
  • T 1 is the clock period
  • N 1 is the number of clock periods necessary for the active execution of the processor PR 1 task during the time TO
  • E N is the nominal power consumption reference of the processor during a clock period of nominal duration T N ,,.
  • the nominal period is for example, but not necessarily, located in the middle of a discrete series of N possible periods of operation of the processor.
  • the power consumption is proportionally lower and we can call ⁇ , the coefficient of proportionality, lower at 1, representing the consumption drop when the processor is not running its task.
  • the energy consumed in low consumption mode is therefore the energy consumed in low consumption mode.
  • E 1 (T 1 ) P STAT, I .T0 + N 1 - E N11 T N11 2 ZT 1 2 + ⁇ , [TOfT 1 ) - N 1 ].
  • E k (T k ) is the energy consumed by the processor PR k of any rank k, working with a clock period T k .
  • pi is the weight of the processor PR, in terms of the number of clock cycles required for the complete execution of the application during the time TO relative to the total number of cycles used by the application during this time:
  • the curve LC 1 as a function of T 1 is a curve of increasing general shape shown schematically under the reference A 'in FIG. 5. It is normalized and can vary between 0 and 1.
  • the latency of a block can be considered as the time required to execute a task in a given block. It is decomposed into a calculation time and a communication time between processors, but we can generally neglect the communication time, the latency due to calculation is often preponderant.
  • the overall latency is defined by the time between the moment when a given data enters the application until a corresponding result is provided at the exit of the application. This latency is imposed by the critical path of data processing, ie say the longest path (in time) that exists in the task graph of the application. If we add the individual latency times on this longer path, we get the overall latency.
  • the application can be divided into subsystems, with a first subsystem that has the longest latency and others that have shorter latencies, and will preferably optimize the operation by considering each subsystem .
  • the processor of rank i consumes an energy E 1 (T 1 ). If we want to limit to a value E max the total energy consumed by the integrated circuit, we will penalize solutions that tend to lead to exceeding the value E max .
  • the penalty value is preferably calculated as follows:
  • the overall energy consumed will be E max ; if we further reduce this period, the energy will be greater than E max and we will apply a penalty all the greater as T, will be smaller than T m ⁇ and all the same. greater than we have chosen a higher coefficient of severity ⁇ . But if T 1 is greater than T m ⁇ , we will not apply a penalty.
  • Part B 'of FIG. 5 represents the general appearance of the energy constraint penalty curve as a function of the clock period of the processor concerned.
  • Latency constraint or execution delay The constraint giving rise to a penalty can be formulated from an L max value of the maximum latency (or delay of execution) that is acceptable when performing the global task. by the multiprocessor integrated circuit.
  • the penalty value is zero if the total execution delay is less than or equal to L max ;
  • the global optimization function calculated by each calculation block is then preferably:
  • the optimization function is convex or quasi-convex, turned upwards if the optimization consists in the search for a minimum, or turned down if the optimization consists in the search for a maximum.
  • convex or quasi-convex means the fact that the function has a succession of two adjacent parts, one of which is positive or zero first derivative and the other is negative or zero derivative first, the word "quasi-convex""designating the fact that the derivative can be zero over a certain range of the variable parameter T 1 .
  • an optimization function which is the sum of one of the two main functions (energy contribution or contribution to latency time) and of two penalty sub-functions in the presence of constraint, one being a penalty in latency constraint and the other a penalty in energy constraint.
  • the optimization function is represented by a curve which is the addition of the curves A, B and B ', or the addition of the curves A', B and B '.
  • the equilibrium will not necessarily be acceptable in the case where the value T m ⁇ is lower than the value T m ⁇ .
  • the choice of the energy optimization function or the latency optimization function will depend on the context and it is possible to assign some processors an energy optimization function and others a function of latency optimization, depending on the nature of the processors, and the application.
  • a maximum power surge could be a trigger to reconfigure the multiprocessor system to allocate part of its task to other processors.
  • the global search algorithm of the optimum is cyclically executed by each calculation block B 1 as follows:
  • the rank calculation block i collects the characteristic data values S k (for example respective energy contributions) from the other processors, ie a set S no t ⁇ ;
  • T 1 which corresponds to an optimum value (maximum or minimum) of this function of T 1 , within a range of possible clock periods [T mn , T max ], range which can be the same for all processors.
  • the calculation of the optimum value of T 1 for the processor concerned can be done by successively calculating the value of the optimization function for N clock period values ranging from T mn to T max , preferably N values regularly distributed between T mn and T max .
  • the value of the optimization function is calculated taking into account the current value of the vector S noti ; the maximum of the N calculated values is sought and the clock period corresponding to this maximum is applied to the processor; or alternatively, the values are calculated successively from, for example, T max , and as long as the optimization function decreases (assuming the optimum is a minimum), the value of the clock period is decremented; we stop when it starts to grow and we apply to the processor a clock period which corresponds to the minimum thus found.
  • the period values are taken in a discrete monotonic succession of N possible values and the computation is done for the two closest values that surround the current value.
  • the calculation algorithm determines whether one of these period values leads to an optimization function value better than the value for the current period, and then immediately applies the new clock period to the processor.
  • the algorithm is rerun cyclically in each block, with the new clock period value if it has changed, or with the old if it has not changed, and with values of S 1 and S no t ⁇ which have may have changed in the meantime.
  • the distribution of the values of T 1 can for example be linear, either in period or in frequency, but other distributions can be envisaged.
  • FIG. 7 summarizes the general principle of optimization according to the invention:
  • the characteristic data depends on a variable parameter a, relative to the block, this parameter that can be the clock period T 1 of the block processor; the characteristic data of the block i and the characteristic data relating to the other blocks can be for example the contributions to the energy consumption as explained above; one could also consider that the characteristic data transmitted by the blocks to all the other blocks is simply the variable data a, itself, to load for each of the blocks to calculate the contribution to the energy consumption of the other blocks from different values a k , but it will be understood that this would greatly increase the computing load of each of the blocks.
  • the data S, for a block can result from a calculation in the block (for example the calculation of a contribution of energy) or from a measurement by a sensor (for example in the case where the characteristic data is a temperature local).
  • step referenced (2) CALC_U ⁇ (a h S ⁇ , S n ot ⁇ ): from the different data S 1 , S noth the block of rank i calculates an optimization function U ⁇ a 1 , S 1 , Snoti) which depends of the variable a, and values S ,, S no t
  • OPT (U,) [Ai] the best value of U is sought, on the field Aj of the possible values of a, and, as explained above, this search can carry at each stage only on the two values adjacent to the current value of a ,. We obtain a new value a * of the variable parameter.
  • step referenced (4) USE_ai * the new parameter a, * , for example a new working frequency, is applied to the calculation block of rank i.
  • FIG. 8 describes, in the form of a functional block, a calculation block organization that makes it possible to execute this optimization method. It is assumed that there is only one processor in the calculation block and other elements such as memories or peripherals that may be associated with the processor in the block have not been represented. Only the processor PR 1 has been represented, the communication means COM 1 making it possible to exchange the data S, and S not ⁇ between the processor of rank i and the other processors.
  • a CALC element for calculating the value of the optimization function is shown separate from the processor but it can be part of the processor. It receives the data S 1 and S not ⁇ - The data S 1 can come from the processor or in some cases from a sensor CAP_1, even even several sensors CAP_1, CAP_2, etc.
  • the calculated values of the optimization function U ⁇ (a ⁇ , S ⁇ , S n ot ⁇ ) for different values of a are compared in a DCS decision-making block; the selected value a * providing the best optimization function value is exploited in a use block USE; this block applies the value a, * to the processor, for example in the form of a new working frequency f, but can also, in certain cases, control other actions, such as for example the application to the processor of a supply voltage V 1 chosen in relation to the parameter a * , for example in the case where it is considered that a change in clock frequency must necessarily be accompanied by a change in supply voltage.
  • FIG. 9 diagrammatically represents the operation of a state machine making it possible to execute the search for a new variable parameter value a * from the calculation of three values of the optimization function corresponding to the current value of a, and with two close values which surround it in the discrete series of N possible values of this parameter.
  • a * from the calculation of three values of the optimization function corresponding to the current value of a, and with two close values which surround it in the discrete series of N possible values of this parameter.
  • R1, R2, R3 to store three possible values of the optimization function, respectively the values for a ,, a, " , and a, ++ , a, being the current value of the variable parameter, a, " being the immediately lower value in the set of N values, and a, ++ being the next higher value;
  • An FSM control block manages the address values to be established during the process and applies these addresses on the one hand to the TAB table to extract the values of the parameter, and on the other hand to the registers R4, R5, R6, to store these addresses.
  • E1 state the block FSM records in the register R4 the current value of address p (a,) of the variable parameter (a l ), and commands the sending of the corresponding parameter a, from the table TAB to the calculation block of the optimization function; the latter stores the result of the calculation U, (a,) in the register R1;
  • the block FSM From the current value a , the block FSM generates the address p (a, " ) of the immediately lower value and stores this value in the register R5: it extracts from the table TAB the corresponding parameter value a, " and sends it to the calculation block of the optimization function; the result of the calculation U, (ar) is recorded in the register R2;
  • the block FSM From the current value a , the block FSM generates the address p (a, ++ ) of the value immediately higher and stores this value in the register R6; it extracts from the table TAB the parameter value corresponding to, ++ and sends it to the calculation block of the optimization function; the result of the calculation U ⁇ (a, ++ ) is recorded in the register R3;
  • the DCS decision-making block reads the results stored in registers R1, R2, R3. It compares the contents of R1 and R2 as well as the contents of R1 and R3; it records in R7 the address contained in R5 if the result in R2 is better than the result in R1; it records in R7 the address contained in R6 if the result in R3 is better than the result in R1; and finally, it records in R7 (or retains in R7) the result contained in R4 if the result in R2 or R3 is not better than the result in R1.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Power Sources (AREA)

Abstract

L'invention concerne un procédé d'optimisation de fonctionnement qui s'applique à une puce de circuit intégré multi-processeur. Chaque processeur travaille avec un paramètre variable, par exemple sa fréquence d'horloge, et l'optimisation comprend la détermination en temps réel d'au moins une donnée caractéristique (Si) associée au processeur (température, consommation, latence), le transfert des données caractéristiques vers les autres processeurs, le calcul par chaque processeur de différentes valeurs d'une fonction d'optimisation (Ui) dépendant de la donnée caractéristique (Si) du bloc, des données caractéristiques (Snoti) des autres blocs, et du paramètre variable, la fonction étant calculée pour la valeur actuelle (a i) de ce paramètre et pour d'autres valeurs possibles, puis la sélection, parmi les différentes valeurs de paramètre, de celle qui donne la meilleure valeur de la fonction d'optimisation, et enfin l'application de cette fréquence au processeur pour la suite de l'exécution de la tâche.

Description

PROCEDE D'OPTIMISATION DU FONCTIONNEMENT D'UN CIRCUIT
INTEGRE MULTIPROCESSEURS, ET CIRCUIT INTEGRE
CORRESPONDANT
L'invention concerne un procédé d'optimisation du fonctionnement d'un circuit intégré à multiples processeurs, et un circuit intégré comportant des moyens d'optimisation en temps réel de son fonctionnement.
Les circuits intégrés à multiples processeurs, appelés par abréviation MP-SoC (de l'anglais "Multiprocessor System-on-Chip"), sont formés sur une seule puce monolithique et offrent des capacités de calcul très élevées du fait du partage des tâches qui peuvent être accomplies par les différents processeurs. Les processeurs fonctionnent en relation les uns avec les autres et les tâches sont partagées en fonction de l'application. Les tâches sont exécutées séquentiellement ou en parallèle, ou les deux à la fois. Chaque application définit un programme d'utilisation de tout ou partie des processeurs, et définit également des liaisons d'échanges entre les différents processeurs en fonction des tâches à accomplir. Les progrès technologiques tendent à augmenter le nombre de processeurs qui peuvent être placés sur une puce. Ce nombre peut atteindre plusieurs dizaines, voire même plusieurs centaines.
Parmi les problèmes qui se posent lors du fonctionnement de la puce, il y a notamment le problème de la dissipation de chaleur et le problème de la synchronisation des tâches exécutées pour minimiser le temps de calcul global. En ce qui concerne la dissipation de chaleur, il faut éviter une surchauffe locale de certains processeurs ainsi qu'une surchauffe globale de la puce. En ce qui concerne la synchronisation des tâches, on souhaite éviter une production trop rapide de résultats par un processeur alors qu'un autre processeur, qui attend ces résultats pour effectuer sa propre tâche, n'est pas capable de les traiter à la même cadence ; et inversement, on veut éviter qu'un processeur ne reste en attente de résultats venant d'un autre processeur qui travaillerait à une cadence trop lente. Un autre paramètre significatif de la performance du circuit peut être un temps caractéristique qu'on appelle le "temps de latence", qui représente le temps nécessaire pour que le processeur (s'il s'agit du temps de latence du processeur) ou un ensemble de processeurs (s'il s'agit du temps de latence d'un ensemble de processeurs) fournisse un résultat de calcul après avoir reçu les données d'entrée nécessaires à ce calcul.
On peut optimiser le fonctionnement de la puce au stade de la conception de la puce, en prenant en compte dès la conception les questions de dissipation thermique et de synchronisation. Mais cela n'est pas compatible avec le fait que les conditions de fonctionnement en exécution réelle vont beaucoup dépendre de l'application et qu'on ne peut pas optimiser le fonctionnement pour toutes les applications envisageables. On a déjà proposé de surveiller les risques de points chauds dans la puce et de reconfigurer la répartition des tâches entre les processeurs en fonction des points chauds estimés ou mesurés, par exemple en transférant d'un processeur à un autre processeur, au cours du fonctionnement, une tâche fortement consommatrice de puissance. L'invention a pour but de proposer une solution pour optimiser en temps réel, au cours de l'exécution d'une application, le fonctionnement de l'ensemble de la puce en agissant sur les conditions de travail de chacun des processeurs, notamment en agissant sur la fréquence d'une horloge individuelle associée à chaque processeur. L'optimisation recherchée est une optimisation à objectifs multiples, un des objectifs principaux pouvant être la surveillance de l'énergie consommée et un autre objectif principal pouvant être la surveillance des temps de latence de calcul. D'autre part, un but de l'invention est de proposer un procédé d'optimisation qui soit relativement indépendant du nombre de processeurs, afin que ce procédé soit transposable facilement d'une puce à une autre sans que le changement du nombre de processeurs oblige à effectuer une nouvelle conception des moyens d'optimisation.
Selon l'invention, on propose un procédé d'optimisation de fonctionnement qui s'applique à une puce de circuit intégré comportant plusieurs blocs de calcul aptes à exécuter des tâches respectives dans une application donnée, chaque bloc de calcul comprenant au moins un processeur. Le terme de processeur sera utilisé ci-après dans un sens très général comme étant un organe faisant un calcul. En ce sens un circuit ASIC exécutant une tâche spécifique est considéré comme un processeur. Le procédé comprend, pour chaque bloc de calcul :
- l'exécution d'une tâche par le processeur sous le contrôle d'au moins un paramètre variable, tel que la fréquence ou période de travail du processeur ou sa tension d'alimentation,
- la détermination en temps réel d'au moins une donnée caractéristique associée au bloc de calcul pendant son fonctionnement, telle que par exemple la température du bloc ou la puissance dissipée dans le bloc ou un temps de latence de calcul du bloc, cette donnée caractéristique étant dépendante de la valeur du paramètre variable,
- le transfert de la donnée caractéristique vers les autres blocs et la réception des données caractéristiques correspondantes des autres blocs,
- le calcul dans le bloc de différentes valeurs d'une fonction d'optimisation dépendant de la donnée caractéristique du bloc, des données caractéristiques des autres blocs, et du paramètre variable, la fonction étant calculée pour la valeur actuelle du paramètre variable du bloc et pour d'autres valeurs possibles de ce paramètre,
- la sélection, parmi les différentes valeurs du paramètre variable, de celle qui donne la meilleure valeur de la fonction d'optimisation,
- et l'application au processeur de cette valeur sélectionnée du paramètre variable pour la suite de l'exécution de la tâche.
Ce procédé est mis en œuvre simultanément par tous les blocs de calcul qui effectuent chacun individuellement une sélection de la valeur de paramètre variable qui est la plus appropriée pour l'optimisation du fonctionnement du bloc ; cette sélection tient compte des informations envoyées par les autres processeurs car la fonction d'optimisation utilisée par chaque processeur dépend de l'état de fonctionnement des autres blocs (au moins de certains d'entre eux qui sont en relation plus étroite, fonctionnellement ou géographiquement, avec le bloc considéré).
L'optimisation de fonctionnement est faite individuellement bloc par bloc ; un bloc peut correspondre à un processeur si on veut optimiser la puce en recherchant une solution optimale à partir de chaque processeur, mais un bloc pourrait aussi correspondre à un groupe de processeurs si on veut rechercher une solution optimale à partir de groupes ou "clusters" de processeurs.
Pour mettre en œuvre ce procédé, l'invention a également pour objet une puce de circuit intégré comprenant plusieurs blocs de calcul aptes à exécuter chacun une tâche respective en fonction de l'application dans laquelle la puce est utilisée, chaque bloc de calcul comprenant
- au moins un processeur pour exécuter la tâche,
- un élément de communication permettant la communication entre ce bloc et les autres blocs,
- et un moyen d'action sur le fonctionnement du processeur pour modifier un paramètre variable de ce fonctionnement tel que la fréquence ou période de travail du processeur ou sa tension d'alimentation, la puce étant caractérisée en ce que chaque bloc comprend en outre :
- un moyen de détermination en temps réel d'au moins une donnée caractéristique associée à ce bloc pendant son fonctionnement, telle que par exemple la température du bloc ou la puissance dissipée dans le bloc ou un temps de latence de calcul exécuté dans le bloc, cette donnée caractéristique dépendant de la valeur du paramètre variable,
- des moyens pour transférer la donnée caractéristique vers les autres blocs et pour recevoir les données caractéristiques correspondantes des autres blocs,
- des moyens pour calculer différentes valeurs d'une fonction d'optimisation dépendant de la donnée caractéristique du bloc, des données caractéristiques des autres blocs, et du paramètre variable, la fonction étant calculée pour la valeur actuelle du paramètre variable du bloc et pour d'autres valeurs possibles de ce paramètre,
- des moyens pour sélectionner parmi les différentes valeurs du paramètre variable celle qui donne la meilleure valeur de la fonction d'optimisation,
- et des moyens pour transmettre la valeur sélectionnée au moyen d'action pour qu'il l'applique au processeur. Le paramètre variable est de préférence la fréquence (ou, ce qui revient au même, la période) d'une horloge prévue dans le bloc de calcul, cette horloge définissant un temps de cycle de calcul élémentaire du processeur. Le paramètre variable peut aussi être la tension d'alimentation du processeur, et il est possible aussi que ces deux paramètres soient liés, une modification de fréquence étant faite en même temps qu'une modification de tension d'alimentation ; dans ce dernier cas, on utilisera de préférence la fréquence comme paramètre variable, mais on fera en sorte de modifier la tension d'alimentation en fonction de la valeur optimale trouvée pour la fréquence.
La donnée caractéristique associée à un bloc de calcul est de préférence liée à la puissance consommée par le bloc de calcul pendant son fonctionnement, ou à une contribution du bloc à la puissance consommée ; cette puissance dépend directement de la fréquence d'horloge du processeur (elle croît avec la fréquence). La donnée caractéristique peut aussi être un temps de latence d'un calcul effectué dans le bloc, ou plus généralement une contribution du bloc à la latence globale de la puce dans l'application où elle fonctionne ; ce temps de latence dépend aussi de la fréquence d'horloge.
La fonction d'optimisation elle-même peut être une fonction de minimisation de l'énergie ou la puissance consommée, ou une fonction d'optimisation d'un temps de latence dans l'exécution d'une tâche par la puce, ou encore, de préférence, une fonction d'optimisation multi-objectif prenant en compte à la fois la puissance consommée et les temps de latence. Cette fonction est choisie de manière à présenter un minimum ou un maximum en fonction de la variation du paramètre variable, les données caractéristiques des autres blocs étant considérées comme des paramètres fixés ; ce minimum ou ce maximum définissent l'optimum de valeur de la fonction d'optimisation ; la modification en temps réel du paramètre variable est effectuée dans un sens tendant à atteindre cet optimum. Dans une réalisation préférentielle particulièrement avantageuse, le calcul de la fonction d'optimisation et la sélection d'une valeur de paramètre variable comprennent :
- la détermination des valeurs de la fonction d'optimisation pour une valeur actuelle du paramètre variable et pour deux autres valeurs encadrant cette valeur actuelle dans une succession monotone de valeurs possibles,
- la comparaison de la valeur de la fonction d'optimisation pour le paramètre actuel et pour les deux autres valeurs de paramètres, et la sélection d'une nouvelle valeur de paramètre qui est l'une des deux autres valeurs si et seulement si cette autre valeur donne une meilleur valeur de fonction d'optimisation.
On ne fait donc pas, dans cette réalisation, une recherche directe de la valeur d'optimum sur tout le champ des valeurs possibles du paramètre variable pour trouver et appliquer une valeur optimale, mais on observe la valeur de la fonction d'optimisation pour deux valeurs de paramètre variable encadrant la valeur actuelle, et on applique immédiatement au processeur une de ces deux valeurs si on constate qu'elle procure un résultat meilleur que celui que procure la valeur actuelle ; sinon on conserve la valeur actuelle.
Pour permettre d'aboutir d'une manière efficace à un état d'optimisation du fonctionnement, il est très souhaitable que la fonction d'optimisation choisie ait une forme convexe ou concave (ou quasi-convexe ou quasi-concave), selon que l'optimisation est une minimisation ou une maximisation de la fonction, sur le champ des valeurs possibles du paramètre variable ; cela veut dire que la fonction choisie, variant en fonction du paramètre variable, doit avoir une dérivée du premier ordre passant par zéro, positive d'un côté du zéro, négative de l'autre côté.
Une manière avantageuse d'obtenir une telle fonction d'optimisation consiste à additionner une sous-fonction principale qui varie de manière monotone sur tout le champ des valeurs possibles du paramètre variable et une sous-fonction secondaire qui varie dans le sens contraire vers une extrémité de ce champ mais qui est faible ou nulle sur le reste du champ. Plus précisément, on peut établir une sous-fonction secondaire qu'on peut considérer comme une sous-fonction de pénalité sous contrainte à l'extrémité du champ, c'est-à-dire une sous-fonction qui pénalise la fonction d'optimisation lorsque le paramètre variable se rapproche de l'extrémité du champ , et ceci indépendamment de la valeur de la sous-fonction principale.
Dans une réalisation particulière, la sous-fonction principale qui définit l'optimisation recherchée pour un bloc est une valeur de contribution du bloc de calcul à la consommation d'énergie globale de la puce ; on souhaite minimiser cette contribution, qui diminue lorsque la période d'horloge augmente ; et la sous-fonction de pénalité est une fonction de contrainte de latence de calcul qui impose une pénalité d'autant plus forte que la période d'horloge s'allonge vers l'extrémité du champ des périodes. La somme de ces deux fonctions est une courbe convexe (ou concave ; dans ce qui suit on utilisera le mot convexe pour simplifier) présentant un maximum ou un minimum dans le champ des périodes d'horloge possibles.
Dans une autre réalisation, la sous-fonction principale est une valeur de contribution de latence de calcul dans la latence globale des tâches à exécuter ; la latence croît avec la période d'horloge ; la sous- fonction secondaire est une fonction de pénalité sous contrainte d'énergie qui croît fortement lorsque la période d'horloge diminue. La somme de ces deux fonctions est encore une courbe convexe présentant un minimum dans le champ des périodes possibles.
D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit et qui est faite en référence aux dessins annexés dans lesquels : - la figure 1 représente une puce multiprocesseur MP-SoC ;
- la figure 2 représente schématiquement l'organisation de la puce avec plusieurs processeurs connectés entre eux par un réseau de communication commun ;
- la figure 3 représente un graphe d'exécution de plusieurs tâches dans une application ;
- la figure 4 représente plusieurs processeurs interconnectés pour assurer l'exécution des tâches de la figure 3 ;
- la figure 5 représente des courbes de variation de différentes fonctions ou sous-fonctions d'optimisation en fonction d'une variable qui est la période d'horloge ;
- la figure 6 représente une fonction d'optimisation combinant plusieurs sous-fonctions ;
- la figure 7 représente un organigramme de processus d'optimisation ; - la figure 8 représente une organisation de bloc de calcul pour l'exécution du processus d'optimisation ;
- la figure 9 représente une organisation de calcul d'optimisation portant sur trois valeurs adjacentes du paramètre variable de la fonction d'optimisation.
La figure 1 représente schématiquement une puce de circuit intégré monolithique Cl à multiples processeurs ou puce MP-SoC. La puce est destinée à exécuter une tâche globale complexe, incluant notamment des traitements numériques, et les différents processeurs vont exécuter des tâches individuelles contribuant à la tâche globale, certaines de ces tâches pouvant être exécutées en parallèle. L'exécution en parallèle par plusieurs processeurs permet d'accélérer l'exécution de la tâche globale. C'est l'application dans laquelle la puce fonctionne qui détermine la division des tâches et l'attribution des tâches à tel ou tel processeur.
Les processeurs sont interconnectés entre eux et interconnectés avec les ports d'entrée-sortie de la puce par un réseau d'interconnexion situé sur la puce. Ce réseau est parfois appelé NoC (de l'anglais Network on Chip, ou réseau sur la puce). Chaque puce est divisée en n blocs de calcul B. Le nombre n peut être de plusieurs dizaines ou même plusieurs centaines. Par exemple n = 80. Un bloc de calcul comprend par exemple un processeur PR, une mémoire MEM, des circuits périphériques PER, et une interface COM de raccordement avec le réseau d'interconnexion. Le bloc comprend de préférence aussi un circuit FA de réglage de fréquence d'horloge. Le circuit FA peut être un circuit qui règle non seulement la fréquence de travail du processeur mais aussi sa tension d'alimentation (circuit DVFS de l'anglais "Dynamic Voltage Frequency Scaling"), notamment lorsque cette tension doit dépendre de la fréquence de travail. Sur la figure 1 , les blocs de calcul sont représentés comme étant des carrés tous identiques, mais ils peuvent être différents les uns des autres, en géométrie et en fonctionnalité, et chaque bloc pourrait comprendre plusieurs processeurs plutôt qu'un seul.
La figure 2 représente schématiquement sous une autre forme l'organisation de la puce en n blocs de calcul B1 (B1 à Bn) de rang i = 1 a n, interconnectés entre eux par un réseau NoC par l'intermédiaire des interfaces respectifs COM1 (COM1 à COMn) présents dans chaque bloc B1.
La figure 3 représente à titre d'exemple une tâche globale à accomplir, divisée en six tâches partielles T1 à T6 qui vont être exécutées par six blocs de calcul différents B1 à B6.
La figure 4 représente un groupe de six blocs de calcul interconnectés de manière à assurer l'exécution des six tâches. D'autres interconnexions, non représentées, seront prévues entre les blocs, non pas pour assurer l'exécution de l'application, mais pour réaliser l'optimisation selon l'invention, le procédé d'optimisation impliquant que chaque bloc reçoive des autres blocs une information sur une donnée caractéristique décrivant le fonctionnement de ces autres blocs. L'information peut être une information sur leur fréquence de travail ou une information de consommation d'énergie ou de temps de latence de calcul, ou plusieurs informations différentes simultanément.
La synchronisation des tâches est importante puisque, par exemple, la tâche T3 ne peut pas être exécutée avant que le bloc B3 n'ait reçu les résultats des processeurs des blocs B2 et B4, le bloc B4 ne pouvant lui-même fournir de résultats qu'après avoir reçu des résultats du processeur du bloc B2 .
Selon l'invention, on propose d'incorporer à chaque bloc de calcul des moyens spécifiques pour optimiser le fonctionnement, ces moyens utilisant au moins une donnée caractéristique relative au bloc de calcul et des données caractéristiques relatives aux autres blocs de calcul (ou au moins certains autres blocs de calcul). Ces moyens spécifiques agissent sur un paramètre variable qui régit le fonctionnement du processeur, notamment sa fréquence de travail, et ils calculent une fonction d'optimisation en fonction des données caractéristiques et en fonction de la valeur du paramètre variable ; le résultat de la fonction d'optimisation sert à modifier la valeur du paramètre variable dans un sens qui tend vers l'optimisation recherchée ; en retour, suite à la modification du paramètre variable et donc suite à la modification du fonctionnement du processeur, les données caractéristiques sont modifiées, de sorte que la fonction d'optimisation rétroagit sur le fonctionnement par l'intermédiaire du paramètre variable. Le paramètre variable sera de préférence la fréquence ou période de l'horloge qui pilote le processeur. Les données caractéristiques relatives au bloc de calcul seront de préférence d'une part une énergie consommée dans le bloc, ou une contribution du bloc à l'énergie globale consommée par la puce, ou une donnée en rapport avec cette énergie (qui dépend de la fréquence de travail et qui, plus précisément, croît avec cette fréquence), et d'autre part un paramètre calculé représentant une valeur de désynchronisation relative entre processeurs, ou encore une contribution au temps de latence de calcul de l'application, temps de latence qui dépend également des fréquences d'horloge individuelles des processeurs.
Chacun des blocs de calcul B1 à Bn transmet aux autres blocs une information sur les données caractéristiques relatives au bloc, et chaque bloc va alors essayer d'ajuster son propre paramètre variable dans un sens qui donne une valeur optimale au résultat du calcul de la fonction d'optimisation effectué dans ce bloc.
Le problème d'optimisation est ainsi distribué entre les différents processeurs qui recherchent individuellement un fonctionnement optimal, en utilisant à leur profit une certaine connaissance de l'état de fonctionnement des autres processeurs. On peut considérer que ce problème est mathématiquement assimilable à une recherche d'une situation d'équilibre théorique global, représentant un ensemble de positions d'équilibre individuelles, qu'on peut définir de la manière suivante : lorsque tous les processeurs sont à leur position d'équilibre individuelle, si l'un quelconque d'entre eux tendait à en sortir, le résultat de son propre calcul d'optimisation serait dégradé, de sorte qu'il va individuellement chercher à y rester.
Ce problème a été considéré dans le domaine de la théorie mathématique des jeux. La théorie des jeux est une branche des mathématiques appliquées qui étudie les interactions entre individus rationnels qui cherchent à optimiser un résultat. Dans la théorie des jeux non-coopératifs, on considère des individus qui choisissent individuellement la manière dont ils prennent des décisions, pour accroître une valeur de résultat qui leur est bénéfique. La décision est prise individuellement par chaque joueur en fonction de ce qu'il connaît de l'ensemble des autres joueurs. Dans la présente invention, les blocs de calcul individuels peuvent être considérés comme des joueurs individuels dans un jeu non-coopératif, car ils sont pourvus de moyens de décision individuels et de moyens d'action individuelle sur leur propre fonctionnement, permettant de tendre à une optimisation selon un calcul qui leur est propre, tout en ayant une certaine connaissance de l'état des autres joueurs que sont les autres blocs de calcul.
On va maintenant considérer plus précisément le cas où le moyen d'action est la sélection d'une fréquence ou, ce qui revient au même, une période de travail du processeur, et où la fonction d'optimisation est une fonction de recherche d'un compromis entre la température locale du bloc (qu'on veut minimiser mais qui augmente avec la fréquence) et le temps de calcul (qu'on veut minimiser et qui diminue avec la fréquence).
Optimisation en fonction de la température et de la synchronisation :
Dans une mise en œuvre simplifiée, on peut établir une fonction d'optimisation locale (c'est-à-dire propre à chaque bloc) OOpτ qui est la somme pondérée d'une valeur OTEMP caractéristique de la température locale dans le bloc et d'une valeur OSYNC caractéristique d'une bonne ou mauvaise synchronisation des tâches.
OOPT = 3-OTEMP + b. OSYNC a et b sont des coefficients de pondération dont la somme est égale à 1 et qui dépendent, pour chaque bloc, du poids relatif qu'on souhaite accorder aux questions de température et aux questions de synchronisation ou de temps de calcul. Les poids relatifs, de même que les données caractéristiques de température ou de synchronisation des tâches, sont individuelles à chaque bloc de calcul.
Ainsi, pour le bloc de rang i, on peut écrire:
OθPT,ι = 3|-OτEMP,ι + b,.OsYNC,ι
La donnée caractéristique de température peut être par exemple une fonction de la puissance consommée par le bloc, et de la puissance consommée par les blocs immédiatement voisins qui, par conduction thermique contribuent à l'augmentation de température du bloc considéré. Dans ce cas, les blocs voisins doivent envoyer au bloc considéré une indication de la puissance qu'ils consomment. On peut alors établir une donnée caractéristique OTEMP.I à partir d'un modèle de calcul de température prenant en compte la puissance consommée par le bloc B1, la résistance d'évacuation thermique du bloc, les puissances de blocs voisins Bj, la résistance thermiques entre le bloc de rang i et les blocs voisins, etc.
En ce qui concerne la donnée caractéristique de synchronisation, on peut utiliser un modèle simple qui établit une donnée caractéristique qui est la somme de données de synchronisation entre couples de blocs interconnectés entre eux pour l'accomplissement de leurs tâches. Par exemple, le modèle consiste à observer une donnée de synchronisation entre deux blocs de rang i et j respectivement qui serait ASYNC,I,J égale au module de la différence |x,.f,/l_, - Xj.f/Ljl où f, et fj sont les fréquences de travail des deux blocs, L1 et Lj sont les charges de calcul respectives comptées en proportion de temps passé à travailler, et x, et Xj sont des coefficients respectifs. La donnée caractéristique pour le bloc i est alors la somme de tous les ASYNC.IJ pour tous les blocs de rang j fonctionnellement connectés au bloc i dans l'exécution de l'application.
La fonction d'optimisation OO est particulièrement simple parce qu'elle se contente d'additionner deux sous-fonctions, avec des coefficients de pondération respectifs. On comprendra qu'on pourrait aussi utiliser une combinaison de plus de deux sous-fonctions d'optimisation.
Le bloc de calcul sera pourvu localement de moyens pour calculer différentes valeurs de la fonction d'optimisation, d'une part pour la valeur actuelle de la fréquence de travail du bloc (la fréquence de travail étant le paramètre variable sur lequel on va agir pour optimiser le fonctionnement) et d'autre part pour plusieurs autres valeurs de cette fréquence.
Par conséquent, le bloc de calcul établit une série de calculs pour simuler la valeur que prendrait la fonction d'optimisation pour les différentes valeurs possibles de la fréquence de travail (par exemple une valeur parmi la succession discrète de fréquences de 100 MHz à 300 MHz échelonnées de 5 MHz en 5 MHz), incluant la valeur actuelle de la fréquence, et ceci en tenant compte des données caractéristiques actuelles des autres blocs de calcul. En effet le résultat de la fonction d'optimisation OO dépend de l'état actuel des autres blocs. On signalera à ce propos que les données caractéristiques représentant le fonctionnement actuel des autres blocs peuvent être transmises sous différentes formes. Par exemple, on peut considérer que si la donnée caractéristique est une température estimée d'un autre bloc, l'information transmise peut être soit une puissance consommée (calculée dans l'autre bloc) soit une température, détectée par un capteur local dans l'autre bloc, soit encore la donnée OTEMP.J calculée dans l'autre bloc.
Une fois que le bloc de calcul de rang i a calculé les valeurs de fonction d'optimisation pour une série de valeurs de fréquence de travail possibles, il détermine quelle est la fréquence qui donne le meilleur résultat
(maximum ou minimum, selon le cas, de la fonction OO) et il commande l'application au processeur de cette fréquence optimale. Ce changement de fréquence, s'il a lieu, c'est-à-dire si le bloc de calcul de rang i n'est pas déjà à une fréquence optimale, a des répercussions sur les autres blocs qui effectuent simultanément des calculs prenant en compte le bloc de rang i.
Dans la majorité des cas, les blocs convergent progressivement vers une solution optimale dès lors que la fonction d'optimisation a une forme convexe ou quasi-convexe en fonction du paramètre variable (fréquence) qui est utilisé.
Optimisation d'énergie ou de latence en présence de contrainte de latence ou d'énergie :
Dans une mise en œuvre plus sophistiquée du procédé selon l'invention, on utilise une fonction d'optimisation qui fait intervenir deux sous- fonctions qui sont respectivement une sous-fonction principale à optimiser (énergie ou temps de latence par exemple) et une sous-fonction de pénalité, qui définit une pénalité de la fonction d'optimisation en cas de consommation d'énergie trop élevée ou bien qui définit une pénalité en cas de temps de latence globale trop élevé. La sous-fonction principale varie avec la période d'horloge (l'énergie et le temps d'exécution augmentent avec la période), la période d'horloge T1 d'un processeur PR1 de rang i étant considérée ici comme étant le paramètre variable dans le processus d'optimisation. Les sous-fonctions de pénalité sont conçues de telle sorte qu'elle n'influent pas ou pas beaucoup sur la valeur de la fonction d'optimisation si l'énergie globale consommée et le temps de latence global sont au-dessous de seuils prédéterminés mais qu'elle détériore fortement la fonction d'optimisation lorsque l'énergie globale ou le temps de latence dépassent ces seuils.
Cette manière de constituer la fonction d'optimisation permet de lui donner une forme de courbe (en fonction de la période d'horloge) qui présente de manière certaine un optimum, et par conséquent une convergence vers un état d'équilibre où chaque processeur trouve une fréquence optimale de fonctionnement.
Plus précisément, on peut utiliser comme sous-fonction principale une contribution énergétique d'un bloc de calcul par rapport à la consommation d'énergie globale du circuit intégré.
Optimisation par la contribution énergétique : L'énergie consommée par un bloc de calcul B1 de rang i pendant le temps d'exécution globale TO de la tâche assignée au circuit comprend : - une partie constante ou statique ESTATI indépendante de la fréquence d'horloge f, = 1 /T1 et égale à TO. PSTATI, OÙ PSTATI est la puissance consommée en permanence avec ou sans exécution de tâches,
- une partie dynamique de fonctionnement à haute consommation (pendant l'exécution active d'une tâche par le bloc de rang i), soit EHDYN,I ,
- et enfin une partie dynamique à faible consommation pendant d'autres moments, soit ELDYN,I-
L'énergie EHDYN,I peut être considérée comme égale à
N1- EN11TN11 2ZT1 2 OÙ T1 est la période d'horloge, N1 est le nombre de périodes d'horloge nécessaires à l'exécution active de la tâche du processeur PR1 pendant le temps TO ; EN,, est la référence de consommation d'énergie nominale du processeur pendant une période d'horloge de durée nominale TN,,. La période nominale est par exemple, mais pas obligatoirement, située au milieu d'une série discrète de N périodes possibles de fonctionnement du processeur.
En dehors de la durée N1 T1, c'est-à-dire pendant une durée égale à (TO-N1T1), la puissance consommée est proportionnellement plus faible et on peut appeler γ, le coefficient de proportionnalité, inférieur à 1 , représentant la baisse de consommation lorsque le processeur n'est pas en cours d'exécution de sa tâche.
L'énergie consommée en mode basse consommation est donc
ELDYN.I = γ, [(TO/TI)-NI].EN,,.TN/ 2//TI L'énergie totale consommée par le bloc de calcul de rang i lorsque la période d'horloge est T1 est donc :
E1(T1) = PSTAT,I.T0 + N1- EN11TN11 2ZT1 2 + γ, [TOfT1) - N1]. EN11TN11 2ZT1
Les énergies consommées par tous les microprocesseurs pour l'exécution de leurs tâches respectives au sein de la tâche globale peuvent donc être calculées ; Ek(Tk) est l'énergie consommée par le processeur PRk de rang k quelconque, travaillant avec une période d'horloge Tk.
On peut alors définir une contribution d'énergie du bloc de calcul B1 ou du processeur PR1 dans l'exécution de la tâche globale lorsque les processeurs de rang respectif k travaillent avec des périodes d'horloge respectives Tk. Cette contribution est désignée par Ed(T1, Tnotι) qui dépend principalement d'une variable de période d'horloge T1 propre au processeur mais qui dépend aussi dans une moindre mesure des variables de période d'horloge Tk de tous les autres processeurs ; la notation Tnotι dans la contribution Ed(T1, Tnotι) désigne un vecteur qui est l'ensemble des périodes d'horloge Tk à l'exception de la période T1.
La contribution énergétique normalisée ECi(T1TnOtI) peut être calculée par l'expression suivante : EC1 [TiJnOU) = ?iE f^
Où pi est le poids du processeur PR, en termes de nombre de cycles d'horloge nécessaires pour l'exécution complète de l'application pendant le temps TO par rapport au nombre total de cycles utilisés par l'application pendant ce temps :
Pi = N1Z XJV, La courbe qui représente la variation de la contribution ECi(T1, Tnoti) en fonction de T1 est une courbe d'allure générale décroissante représentée schématiquement sous la référence A à la figure 5. La contribution est normalisée et comprise entre 0 et 1. Cette contribution énergétique peut constituer une sous-fonction principale dans le calcul de la fonction d'optimisation du bloc de rang i.
Optimisation par le temps de latence :
On peut sur les mêmes principes concevoir une contribution de temps de latence du processeur de rang i au temps de latence global ; cette contribution normalisée LC, peut être écrite sous la forme :
LCi (Ti,Tnoti) = - PiLi ^
k Lk (Tk ) Pl = W ∑kNkk Lkk ) peut être considéré comme le temps de latence global, somme de tous les temps de latence Lk(Tk) des différents blocs ou processeurs de rang k = 1 à n. On reviendra plus loin sur la notion de temps de latence.
La courbe LC1 en fonction de T1 (tous autres paramètres constants) est une courbe d'allure générale croissante représentée schématiquement sous la référence A' à la figure 5. Elle est normalisée et peut varier entre 0 et 1 .
Cette contribution peut, là encore, constituer une sous-fonction principale dans le calcul d'optimisation du bloc de rang i. Dans le cas de tâches parallèles ou imbriquées, le temps de latence d'un bloc peut être considéré comme le temps nécessaire pour exécuter une tâche dans un bloc déterminé. Il se décompose en un temps de calcul et un temps de communication entre processeurs, mais on peut en général négliger le temps de communication, le temps de latence dû au calcul étant souvent prépondérant.
Le temps de latence global est défini par la durée entre le moment où une donnée déterminée entre dans l'application jusqu'au moment où un résultat correspondant est fourni à la sortie de l'application. Ce temps de latence est imposé par le chemin critique de traitement des données, c'est-à- dire le plus long chemin (en temps) qui existe dans le graphe des tâches de l'application. Si on ajoute les temps de latence individuels sur ce plus long chemin, on obtient le temps de latence global.
On peut diviser l'application en sous-systèmes, avec un premier sous-système qui a le plus long temps de latence et d'autres qui ont des temps de latence plus court et on optimisera de préférence le fonctionnement en considérant chaque sous-système.
Les sous-fonctions de pénalité, qui expriment des contraintes d'énergie maximale ou de temps d'exécution maximal peuvent être définies de la manière suivante :
Contrainte d'énergie :
Lorsque le système exécute une application, le processeur de rang i consomme une énergie E1(T1). Si on veut tendre à limiter à une valeur Emax l'énergie totale consommée par le circuit intégré, on va pénaliser les solutions qui tendent à amener un dépassement de la valeur Emax.
On peut le faire en ajoutant à la sous-fonction d'optimisation principale, lorsque celle-ci est une contribution de temps de latence, une valeur de pénalité d'énergie Epθnil lorsque l'énergie totale consommée est supérieure à Emax. La valeur de pénalité est de préférence calculée de la manière suivante :
- la valeur de pénalité est nulle si l'énergie totale ∑ Ekk ) reste au-dessous de Emax ; - la valeur de pénalité est non nulle dans le cas contraire et varie de préférence en croissant fortement avec la fréquence f,=1 /~T, ; elle est de préférence égale à Epθnil = α(Tme-Tι), où T est la plus petite période d'horloge du processeur PR, qui permet de satisfaire la contrainte d'une énergie inférieure à Emax ; α est un coefficient qui détermine la sévérité de la pénalité souhaitée.
Autrement dit, en fonctionnant à la période d'horloge T, toutes choses égales par ailleurs, l'énergie globale consommée sera Emax ; si on réduit encore cette période, l'énergie sera supérieure à Emax et on appliquera une pénalité d'autant plus grande que T, sera plus petit que T et d'autant plus grande qu'on aura choisi un coefficient de sévérité α plus élevé. Mais si T1 est plus grand que T on n'appliquera pas de pénalité.
Cette fonction de pénalité tend à écarter les solutions de période T1 qui entraînent un dépassement de la contrainte d'énergie totale maximale. La partie B' de la figure 5 représente l'allure générale de la courbe de pénalité sous contrainte d'énergie en fonction de la période d'horloge du processeur concerné.
2. Contrainte de latence ou retard d'exécution : La contrainte donnant lieu à une pénalité peut être formulée à partir d'une valeur Lmax de la latence (ou retard d'exécution) maximale acceptable lors de l'exécution de la tâche globale par le circuit intégré multiprocesseurs.
On peut alors établir une valeur de pénalité de latence Lpθnil pour chaque processeur, et cette valeur est de préférence calculée comme suit :
- la valeur de pénalité est nulle si le retard total d'exécution est inférieur ou égal à Lmax ;
- la valeur de pénalité est non nulle dans le cas contraire et croît avec la période T1 ; la valeur est de préférence Lpθnil = Cc(T1 - Tmι) où α est un coefficient de sévérité (éventuellement le même que pour la pénalité d'énergie) qu'on veut affecter à la contrainte de latence, et Tmι est la période d'horloge la plus grande du processeur de rang i qui permet de satisfaire à la contrainte de latence globale maximale Lmax .
Cette fonction de pénalité tend à écarter les solutions de période d'horloge qui entraînent un dépassement de la latence globale acceptable
Lmax-
L'allure générale de la sous-fonction de pénalité en fonction de la période T1 est celle représentée dans la partie B de la figure 5.
La fonction d'optimisation globale calculée par chaque bloc de calcul est alors de préférence :
- soit la somme OPTEil de la contribution énergétique ECi(T15TnOtI) et de la sous-fonction de pénalité sous contrainte de temps de latence Lpθniι ; l'allure générale de cette fonction d'optimisation est celle représentée à la courbe C de la figure 5, qui est la combinaison des courbes A et B ; cette fonction est une fonction d'optimisation d'énergie ; elle tend à minimiser la consommation d'énergie de l'ensemble, mais elle est contrainte par une limite de latence acceptable ;
- soit la somme OPTUl de la contribution de latence et de la sous-fonction de pénalité sous contrainte d'énergie ; l'allure générale de cette fonction d'optimisation est celle représentée à la courbe C de la figure 5, qui est la combinaison des courbes A' et B' ; cette fonction est une fonction d'optimisation de latence ; elle tend à minimiser la latence globale de l'ensemble, mais elle est contrainte par une limite de consommation d'énergie acceptable.
Dans les deux cas, la fonction d'optimisation est convexe ou quasi-convexe, tournée vers le haut si l'optimisation consiste dans la recherche d'un minimum, ou tournée vers le bas si l'optimisation consiste dans la recherche d'un maximum. Par convexe ou quasi-convexe, on entend le fait que la fonction présente une succession de deux parties adjacentes dont l'une est à dérivée première positive ou nulle et l'autre est à dérivée première négative ou nulle, le mot "quasi-convexe" désignant le fait que la dérivée peut être nulle sur une certaine plage du paramètre variable T1.
Cette convexité ou quasi-convexité de la courbe pour tous les processeurs permettra dans le cas général de trouver un point d'équilibre.
Dans une variante, on établit une fonction d'optimisation qui est la somme de l'une des deux fonctions principales (contribution énergétique ou contribution au temps de latence) et de deux sous-fonctions de pénalité en présence de contrainte, l'une étant une pénalité en contrainte de latence et l'autre une pénalité en contrainte d'énergie. Dans ce cas, la fonction d'optimisation est représentée par une courbe qui est l'addition des courbes A, B et B', ou encore l'addition des courbes A', B et B'. La figure 6 représente une telle fonction dans le premier cas, fonction qu'on peut écrire : OPTEL.I = ECi(T,, Tnoti) + Lpθni| + Epθni|
L'équilibre ne sera pas forcément acceptable dans le cas où la valeur Tmι est inférieure à la valeur T. Il y a en effet alors contradiction entre les contraintes : une solution qui optimise la contrainte d'énergie va violer la contrainte de latence maximale et réciproquement. Le choix de la fonction d'optimisation d'énergie ou de la fonction d'optimisation de latence dépendra du contexte et il est possible d'attribuer à certains processeurs une fonction d'optimisation d'énergie et à d'autres une fonction d'optimisation de latence, en fonction de la nature des processeurs, et de l'application.
Par exemple, si la contrainte d'énergie est utilisée pour un processeur, un dépassement d'énergie maximale pourra être un déclencheur pour reconfigurer le système multiprocesseur pour attribuer une partie de sa tâche à d'autres processeurs.
L'algorithme global de recherche de l'optimum est exécuté cycliquement par chaque bloc de calcul B1 de la manière suivante :
- le bloc de calcul de rang i recueille les valeurs de données caractéristiques Sk (par exemple contributions d'énergie respectives) des autres processeurs, soit un ensemble Snotι ;
- il convertit la fonction d'optimisation (fonction de T1 et du vecteur Snoti) en une fonction scalaire de T1 , les valeurs Snotι étant considérées comme des paramètres figés pendant l'exécution d'un cycle de l'algorithme ;
- il calcule la valeur de T1 qui correspond à une valeur optimum (maximum ou minimum) de cette fonction de T1, à l'intérieur d'une plage de périodes d'horloge possibles [Tmιn, Tmax], plage qui peut être la même pour tous les processeurs.
Le calcul de la valeur de T1 optimale pour le processeur concerné peut se faire en calculant successivement la valeur de la fonction d'optimisation pour N valeurs de périodes d'horloge allant de Tmιn à Tmax, de préférence N valeurs régulièrement distribuées entre Tmιn et Tmax. Pour chaque valeur de période en partant par exemple de Tmιn on calcule la valeur de la fonction d'optimisation en prenant en compte la valeur actuelle du vecteur Snotι ; on recherche le maximum parmi les N valeurs calculées et on applique au processeur la période d'horloge correspondant à ce maximum ; ou bien, on calcule successivement les valeurs en partant par exemple de Tmax, et, tant que la fonction d'optimisation décroît (en supposant que l'optimum est un minimum), on décrémente la valeur de la période d'horloge ; on s'arrête lorsque elle se met à croître et on applique au processeur une période d'horloge qui correspond au minimum ainsi trouvé.
Alternativement et de manière particulièrement avantageuse en termes de temps de calcul, on peut se contenter d'une recherche progressive de l'optimum, c'est-à-dire que l'algorithme de recherche ne calcule pas une multiplicité de valeurs de la fonction d'optimisation avant de sélectionner la meilleure et de l'appliquer au processeur, mais il calcule, au cours d'un cycle, trois valeurs de la fonction d'optimisation, l'une correspondant à la période actuelle de l'horloge, la seconde à une période légèrement supérieure et la troisième à une période légèrement inférieure. En pratique, les valeurs de période sont prises dans une succession monotone discrète de N valeurs possibles et le calcul est fait pour les deux valeurs les plus proches qui encadrent la valeur actuelle. L'algorithme de calcul détermine si une de ces valeurs de période conduit à une valeur de fonction d'optimisation meilleure que la valeur pour la période actuelle, et il applique alors immédiatement au processeur cette nouvelle période d'horloge. Sinon il conserve la période d'horloge actuelle et le processeur continue à travailler avec cette période. L'algorithme est réexécuté cycliquement dans chaque bloc, avec la nouvelle valeur de période d'horloge si elle a changé, ou avec l'ancienne si elle n'a pas changé, et avec des valeurs de S1 et Snotι qui ont peut-être changé dans l'intervalle.
A titre d'exemple, l'écart entre deux valeurs adjacentes de périodes d'horloge peut être de 0,5 nanosecondes, correspondant à un pas d'environ 5 MHz, pour des fréquences d'horloge dans une gamme allant de 100 MHz (Tmax = 10 nanosecondes) à 300 MHz (Tmιn = 3 nanosecondes) ; la répartition des valeurs de T1 peut être par exemple linéaire, soit en période, soit en fréquence, mais d'autres répartitions peuvent être envisagées.
La figure 7 résume le principe général de l'optimisation selon l'invention :
- étape référencée (1 )GET_[Sι,Snotι] : on détermine dans chaque bloc une donnée caractéristique S1 relative à ce bloc et on reçoit des autres blocs les données caractéristiques correspondantes Sk, c'est-à-dire un vecteur Snotι de n-1 données correspondant à k = 1 a n sauf k=i. La donnée caractéristique dépend d'un paramètre variable a, relatif au bloc, ce paramètre pouvant être la période d'horloge T1 du processeur du bloc ; la donnée caractéristique du bloc i et les données caractéristiques relatives aux autres blocs peuvent être par exemple les contributions à la consommation énergétique comme expliqué précédemment ; on pourrait envisager aussi que la donnée caractéristique transmise par les blocs à tous les autres blocs soit simplement la donnée variable a, elle-même, à charge pour chacun des blocs de calculer la contribution à la consommation énergétique des autres blocs à partir des différentes valeurs ak, mais on comprendra que cela accroîtrait beaucoup la charge de calcul de chacun des blocs. La donnée S, pour un bloc peut résulter d'un calcul dans le bloc (par exemple le calcul d'une contribution d'énergie) ou d'une mesure par un capteur (par exemple dans le cas où la donnée caractéristique est une température locale).
- étape référencée (2)CALC_Uι(ahSι,Snotι) : à partir des différentes données S1, Snoth le bloc de rang i calcule une fonction d'optimisation U^a1, S1, Snoti) qui dépend de la variable a, et des valeurs S,, Snotι-
- étape référencée (3)OPT(U,)[Ai] : on recherche la meilleure valeur de U, sur le champ Aj des valeurs possibles de a, et, comme expliqué plus haut, cette recherche peut porter à chaque étape uniquement sur les deux valeurs adjacentes à la valeur actuelle de a,. On obtient une nouvelle valeur a * du paramètre variable.
- et enfin, étape référencée (4)USE_ai* : on applique le nouveau paramètre a,*, par exemple une nouvelle fréquence de travail, au bloc de calcul de rang i.
La figure 8 décrit sous forme de bloc fonctionnel une organisation de bloc de calcul qui permet d'exécuter ce procédé d'optimisation. On suppose qu'il y a un seul processeur dans le bloc de calcul et on n'a pas représenté les autres éléments tels que mémoires ou périphériques qui peuvent être associés au processeur dans le bloc. On a seulement représenté le processeur PR1, les moyens de communication COM1 permettant d'échanger les données S, et Snotι entre le processeur de rang i et les autres processeurs. Un élément CALC de calcul de la valeur de la fonction d'optimisation est représenté séparé du processeur mais il peut faire partie du processeur. Il reçoit les données S1 et Snotι- La donnée S1 peut provenir du processeur ou dans certains cas d'un capteur CAP_1 , voire même de plusieurs capteurs CAP_1 , CAP_2, etc. Les valeurs calculées de la fonction d'optimisation Uι(aι,Sι,Snotι) pour différentes valeurs de a, sont comparées dans un bloc de prise de décision DCS ; la valeur sélectionnée a* fournissant la meilleure valeur de fonction d'optimisation est exploitée dans un bloc d'utilisation USE ; ce bloc applique la valeur a,* au processeur, par exemple sous forme d'une nouvelle fréquence de travail f, mais peut aussi, dans certains cas, commander d'autres actions, telles que par exemple l'application au processeur d'une tension d'alimentation V1 choisie en rapport avec le paramètre a *, par exemple dans le cas où on considère qu'une modification de fréquence d'horloge doit nécessairement être accompagnée d'une modification de tension d'alimentation.
La figure 9 représente schématiquement le fonctionnement d'une machine à états permettant d'exécuter la recherche d'une nouvelle valeur de paramètre variable a* à partir du calcul de trois valeurs de la fonction d'optimisation correspondant à la valeur actuelle de a, et à deux valeurs proches qui l'encadrent dans la série discrète des N valeurs possibles de ce paramètre. Sur cette figure 9 on voit sept registres numériques :
- R1 , R2, R3 pour stocker trois valeurs possibles de la fonction d'optimisation, respectivement les valeurs pour a,, a,", et a,++, a, étant la valeur actuelle du paramètre variable, a," étant la valeur immédiatement inférieure dans la série des N valeurs, et a,++ étant la valeur immédiatement supérieure ;
- R4, R5, R6 pour stocker les adresses correspondantes p(a,), p(ar), p(a,++) des valeurs du paramètre variable, les valeurs possibles du paramètre variable étant sont enregistrées dans une table adressable TAB ;
- R7 pour stocker l'adresse p(a *) du nouveau paramètre variable a* choisi par le circuit de décision DCS et qui est soit p(a,), soit p(ar), soit P(a,++). Un bloc de contrôle FSM gère les valeurs d'adresse à établir au cours du processus et applique ces adresses d'une part à la table TAB pour en extraire les valeurs du paramètre, et d'autre part aux registres R4, R5, R6, pour y enregistrer ces adresses.
La machine à états fonctionne selon quatre états : Etat E1 : le bloc FSM enregistre dans le registre R4 la valeur actuelle d'adresse p(a,) du paramètre variable(al), et commande l'envoi du paramètre correspondant a, de la table TAB vers le bloc de calcul de la fonction d'optimisation ; ce dernier enregistre le résultat du calcul U,(a,) dans le registre R1 ;
Etat 2 : à partir de la valeur actuelle a,, le bloc FSM génère l'adresse p(a,") de la valeur immédiatement inférieure et stocke cette valeur dans le registre R5 ; il extrait de la table TAB la valeur de paramètre correspondant a," et l'envoie au bloc de calcul de la fonction d'optimisation ; le résultat du calcul U,(ar) est enregistré dans le registre R2 ;
Etat 3 : à partir de la valeur actuelle a,, le bloc FSM génère l'adresses p(a,++) de la valeur immédiatement supérieure et stocke cette valeur dans le registre R6 ; il extrait de la table TAB la valeur de paramètre correspondant a,++ et l'envoie au bloc de calcul de la fonction d'optimisation ; le résultat du calcul Uι(a,++) est enregistré dans le registre R3 ;
Etat 4 : le bloc de prise de décision DCS lit les résultats stockés dans les registres R1 , R2, R3. Il compare le contenu de R1 et R2 ainsi que les contenus de R1 et R3 ; il enregistre dans R7 l'adresse contenue dans R5 si le résultat dans R2 est meilleur que le résultat dans R1 ; il enregistre dans R7 l'adresse contenue dans R6 si le résultat dans R3 est meilleur que le résultat dans R1 ; et enfin, il enregistre dans R7 (ou conserve dans R7) le résultat contenu dans R4 si le résultat dans R2 ou R3 n'est pas meilleur que le résultat dans R1.
Le résultat p(a*) contenu finalement dans R7 est décodé par la table TAB pour transmettre la valeur a* au processeur pour qu'elle soit utilisée à la place de la valeur précédente a,.

Claims

REVENDICATIONS
1 . Procédé d'optimisation de fonctionnement qui s'applique à une puce de circuit intégré (Cl) comportant plusieurs blocs de calcul (B1) aptes à exécuter des tâches respectives dans une application donnée, chaque bloc de calcul comprenant au moins un processeur (PR1), le procédé comprenant, pour chaque bloc de calcul :
- l'exécution d'une tâche par le processeur sous le contrôle d'au moins un paramètre variable (a,), tel que la fréquence ou période de travail du processeur ou sa tension d'alimentation,
- la détermination en temps réel d'au moins une donnée caractéristique (S1) associée au bloc de calcul pendant son fonctionnement, telle que par exemple la température du bloc ou la puissance dissipée dans le bloc ou un temps de latence du bloc, cette donnée caractéristique étant dépendante de la valeur du paramètre variable (a,),
- le transfert de la donnée caractéristique (S1) vers les autres blocs et la réception des données caractéristiques correspondantes (Snotι) des autres blocs,
- le calcul dans le bloc de différentes valeurs d'une fonction d'optimisation (U1) dépendant de la donnée caractéristique (S1) du bloc, des données caractéristiques (Snotι) des autres blocs, et du paramètre variable (a,) , la fonction étant calculée pour la valeur actuelle (a,) du paramètre variable du bloc et pour d'autres valeurs possibles (a," , a,++) de ce paramètre,
- la sélection, parmi les différentes valeurs du paramètre variable, de celle qui donne la meilleure valeur de la fonction d'optimisation, - et l'application au processeur de cette valeur sélectionnée
(a,*) du paramètre variable pour la suite de l'exécution de la tâche.
2. Procédé selon la revendication 1 , caractérisé en ce que le paramètre variable a, est la fréquence ou la période T1 d'une horloge prévue dans le bloc de calcul, cette horloge définissant un temps de cycle de calcul élémentaire du processeur.
3. Procédé selon l'une des revendications 1 et 2, caractérisé en ce que la donnée caractéristique (S1) est liée à la puissance consommée par le bloc de calcul pendant son fonctionnement.
4. Procédé selon la revendication 3, caractérisé en ce que la donnée caractéristique (S1) est une contribution du bloc de calcul à la consommation énergétique globale de la puce.
5. Procédé selon la revendication 3, caractérisé en ce que la fonction d'optimisation est une fonction de minimisation d'une consommation de puissance et est la somme d'une sous fonction principale qui représente une contribution énergétique normalisée du bloc de calcul, et d'une sous- fonction secondaire qui est une pénalité en présence d'une contrainte de temps de latence maximum acceptable pour l'exécution d'une tâche.
6. Procédé selon l'une des revendications 1 et 2, caractérisé en ce que la donnée caractéristique (S,) est une contribution du bloc de calcul à un temps de latence global des calculs effectués par la puce dans une application où elle est utilisée.
7. Procédé selon la revendication 6, caractérisé en ce que la fonction d'optimisation est une fonction de minimisation du temps de latence global et est la somme d'une sous fonction principale qui représente une contribution normalisée de temps de latence induit par le bloc de calcul, et d'une sous-fonction secondaire qui est une pénalité en présence d'une contrainte de consommation maximale d'énergie acceptable pour la puce.
8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que le calcul de la fonction d'optimisation et la sélection d'une valeur de paramètre variable comprennent
- la détermination des valeurs de la fonction d'optimisation pour une valeur actuelle du paramètre variable et deux autres valeurs encadrant cette valeur actuelle dans une succession monotone de valeurs possibles,
- la comparaison de la valeur de la fonction pour le paramètre actuel et pour les deux autres valeurs de paramètres, et la sélection d'une nouvelle valeur de paramètre qui est l'une des deux autres valeurs si et seulement si cette autre valeur donne une meilleure valeur de fonction d'optimisation.
9. Puce de circuit intégré comprenant plusieurs blocs de calcul aptes à exécuter chacun une tâche respective en fonction de l'application dans laquelle la puce est utilisée, chaque bloc de calcul comprenant
- au moins un processeur pour exécuter la tâche,
- un élément de communication permettant la communication entre ce bloc et les autres blocs,
- et un moyen d'action sur le fonctionnement du processeur pour modifier un paramètre variable de ce fonctionnement tel que la fréquence ou période de travail du processeur ou sa tension d'alimentation, la puce étant caractérisée en ce que chaque bloc comprend en outre
- un moyen de détermination en temps réel d'au moins une donnée caractéristique associée à ce bloc pendant son fonctionnement, telle que par exemple la température du bloc ou la puissance dissipée dans le bloc ou un temps de latence de calcul exécuté dans le bloc, cette donnée caractéristique dépendant de la valeur du paramètre variable,
- des moyens pour transférer la donnée caractéristique vers les autres blocs et pour recevoir les données caractéristiques correspondantes des autres blocs,
- des moyens pour calculer différentes valeurs d'une fonction d'optimisation dépendant de la donnée caractéristique du bloc, des données caractéristiques des autres blocs, et du paramètre variable, la fonction étant calculée pour la valeur actuelle du paramètre variable du bloc et pour d'autres valeurs possibles de ce paramètre,
- des moyens pour sélectionner parmi les différentes valeurs du paramètre variable celle qui donne la meilleure valeur de la fonction d'optimisation,
- et des moyens pour transmettre la valeur sélectionnée au moyen d'action pour qu'il l'applique au processeur.
EP09784373A 2009-04-06 2009-04-06 Procédé d'optimisation du fonctionnement d'un circuit intégré multiprocesseurs, et circuit intégré correspondant Withdrawn EP2417506A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/FR2009/050581 WO2010116047A1 (fr) 2009-04-06 2009-04-06 Procédé d'optimisation du fonctionnement d'un circuit intégré multiprocesseurs, et circuit intégré correspondant

Publications (1)

Publication Number Publication Date
EP2417506A1 true EP2417506A1 (fr) 2012-02-15

Family

ID=41490036

Family Applications (1)

Application Number Title Priority Date Filing Date
EP09784373A Withdrawn EP2417506A1 (fr) 2009-04-06 2009-04-06 Procédé d'optimisation du fonctionnement d'un circuit intégré multiprocesseurs, et circuit intégré correspondant

Country Status (3)

Country Link
US (1) US8904200B2 (fr)
EP (1) EP2417506A1 (fr)
WO (1) WO2010116047A1 (fr)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9400518B2 (en) * 2013-06-05 2016-07-26 Qualcomm Innovation Center, Inc. Temporary frequency adjustment of mobile device processors based on task migration
US9304573B2 (en) * 2013-06-21 2016-04-05 Apple Inc. Dynamic voltage and frequency management based on active processors
DE102013217824A1 (de) * 2013-09-06 2015-03-12 Robert Bosch Gmbh Vorrichtung und Verfahren zum Ermitteln einer geeigneten Position einer Sensoreinrichtung
US9606605B2 (en) 2014-03-07 2017-03-28 Apple Inc. Dynamic voltage margin recovery
CN104182578B (zh) * 2014-08-20 2017-09-22 清华大学 基于可重构阵列的电池功耗优化方法及***
US9542518B2 (en) 2014-11-17 2017-01-10 Qualcomm Incorporated User experience based management technique for mobile system-on-chips
US10191523B2 (en) * 2015-08-03 2019-01-29 Dell Products L.P. Systems and methods for management of exhaust temperature in an information handling system
US10178045B2 (en) * 2016-09-07 2019-01-08 Sap Se Dynamic discovery and management of microservices for multi-cluster computing platforms
US11397612B2 (en) * 2019-07-27 2022-07-26 Analog Devices International Unlimited Company Autonomous job queueing system for hardware accelerators
US11726116B2 (en) 2020-11-20 2023-08-15 Arm Limited Method and apparatus for on-chip power metering using automated selection of signal power proxies
CN117592410A (zh) * 2023-12-05 2024-02-23 北京瀚骏科技有限公司 一种芯片优化的方法及***

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6908227B2 (en) * 2002-08-23 2005-06-21 Intel Corporation Apparatus for thermal management of multiple core microprocessors
US20070208956A1 (en) * 2004-11-19 2007-09-06 Motorola, Inc. Energy efficient inter-processor management method and system

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
None *
See also references of WO2010116047A1 *

Also Published As

Publication number Publication date
US8904200B2 (en) 2014-12-02
US20120036375A1 (en) 2012-02-09
WO2010116047A1 (fr) 2010-10-14

Similar Documents

Publication Publication Date Title
EP2417506A1 (fr) Procédé d'optimisation du fonctionnement d'un circuit intégré multiprocesseurs, et circuit intégré correspondant
Kash et al. Economics of BitTorrent communities
CN110460880A (zh) 基于粒子群和神经网络的工业无线流媒体自适应传输方法
JP6640025B2 (ja) 分散処理制御システム及び分散処理制御方法
EP3499431B1 (fr) Dispositif électronique de traitement de signaux à optimisation intégrée de consommation d'énergie électrique et procédé correspondant
CN112398700B (zh) 一种服务降级方法及装置、存储介质、计算机设备
CN109460613A (zh) 模型裁剪方法及装置
WO2017009543A1 (fr) Dispositif de traitement de données avec représentation de valeurs par des intervalles de temps entre événements
FR3091557A1 (fr) Contrôle thermique pour moteur de véhicule
CN112363609B (zh) 一种降低片上网络功耗的方法、装置、cpu芯片及服务器
FR2982684A1 (fr) Systeme et procede de conception de circuit numerique a capteur d'activite
WO2000065418A2 (fr) PROCEDE ET AUTOMATISME DE REGULATION D'UNE PRODUCTION INDUSTRIELLE ETAGEE AVEC MAITRISE D'UN STRESS ENCHAINE ALEATOIRE, APPLICATION AU CONTROLE DU BRUIT ET DU RISQUE VaR D'UNE CHAMBRE DE COMPENSATION
CN117406844A (zh) 一种基于神经网络的显卡风扇控制方法及相关装置
KR102531299B1 (ko) 유사도에 기반한 학습모델 추천 장치 및 이를 포함하는 클라우드 통합운영 시스템
CN109324941A (zh) 一种温度采集方法、终端及存储介质
WO2020048761A1 (fr) Procédé et système de pilotage et de régulation d'un système de chauffage d'un local
Cheng et al. High resource utilization auto-scaling algorithms for heterogeneous container configurations
CN115251446A (zh) 一种基于边缘计算单元的烘丝机动态调优控制方法及装置
US20220374154A1 (en) Methods and apparatus for issuing memory access commands
CN112394807A (zh) 一种降低片上网络功耗的方法、装置、cpu芯片及服务器
FR3054703A1 (fr) Procede de prediction de demande de consommation, utilisant un modele de prediction perfectionne
FR3086412A1 (fr) Recalcul des resultats de recherche precalcules
US20230351144A1 (en) Instruction Set Architecture for Implementing Linear Activation Functions in Neural Networks
CN117114126B (zh) 一种Web3.0联邦学习云架构及激励方法
US20240171516A1 (en) Distributed neural network encoder-decoder system and method for traffic engineering

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20111004

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK TR

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20180514

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20191101