This application claims the priority benefit of Italian patent application number 102023000006282, filed on Mar. 31, 2023, entitled “CIRCUITO CON ASSORBIMENTO DI POTENZA RIDOTTO E PROCEDIMENTO CORRISPONDENTE,” which is hereby incorporated by reference to the maximum extent allowable by law.
The description relates to electronic circuits.
One or more embodiments can be applied to electronic circuits such as, for instance, System On Chip, SOC circuits with power-saving features.
Certain electronic devices such as portable devices like cellular phones are unable to support prolonged high power consumption conditions due to battery limitations.
A control of power absorption and performance may effectively counter waste of energy and at the same time improve performance under energy constraints.
A dynamic balance of power absorption and performance, possibly detecting unnecessary/undesired extra power consumption and facilitating low power consumption (whenever this does not result in undesired performance degradation) may thus represent a goal to pursue in these applications.
Solutions with balanced current consumption and performance, especially with applications unable to support high current consumption for a long time, due to battery limitations, for instance, are thus desirable.
An object of one or more embodiments is to contribute in providing such a solution.
According to one or more embodiments, that object is achieved via a circuit (a system on chip, SOC circuit, for instance) having the features set forth in the claims that follow.
One or more embodiments concern a related configuration method.
The claims are an integral part of the technical teaching provided in respect of the embodiments.
Solutions as described herein include a consumption detector, CD and a clock controller, CC with a set of clock division factors applied to control consumption.
For instance, in exemplary solutions as described herein, a consumption detector, CD uses two threshold registers to save two current values Imax1reg and Imax2reg; these represent an upper threshold and a lower threshold, respectively, that can be set according to battery specifications. A current absorbed is compared with these two thresholds and, based on the result of comparison with these thresholds Imax1reg and Imax2reg, a set of parameters (dividers of the clocks) is selected and applied.
In exemplary solutions as described herein:
Solutions as described herein facilitate achieving a judicious trade-off between current consumption and performance.
One or more embodiments will now be described, by way of example only, with reference to the annexed figures, wherein:
Corresponding numerals and symbols in the different figures generally refer to corresponding parts unless otherwise indicated.
The figures are drawn to clearly illustrate the relevant aspects of the embodiments and are not necessarily drawn to scale.
The edges of features drawn in the figures do not necessarily indicate the termination of the extent of the feature.
In the ensuing description one or more specific details are illustrated, aimed at providing an in-depth understanding of examples of embodiments of this description. The embodiments may be obtained without one or more of the specific details, or with other methods, components, materials, etc. In other cases, known structures, materials, or operations are not illustrated or described in detail so that certain aspects of embodiments will not be obscured.
Reference to “an embodiment” or “one embodiment” in the framework of the present description is intended to indicate that a particular configuration, structure, or characteristic described in relation to the embodiment is comprised in at least one embodiment. Hence, phrases such as “in an embodiment” or “in one embodiment” that may be present in one or more points of the present description do not necessarily refer to one and the same embodiment.
Moreover, particular configurations, structures, or characteristics may be combined in any adequate way in one or more embodiments.
The headings/references used herein are provided merely for convenience and hence do not define the extent of protection or the scope of the embodiments.
For simplicity and ease of explanation, throughout this description, and unless the context indicates otherwise, like parts or elements are indicated in the various figures with like reference signs, and a corresponding description will not be repeated for each and every figure.
The SOC architecture 10 and of the regulated supply domain 110 are powered via a voltage supply 111 (i.e., a battery, for instance, a coin battery at a voltage VS), which is coupled to a power management unit (PMU) 112.
The power management unit 112 is powered by the battery 111 and is configured to receive a supply feedback signal SF from a power grid 113 and to output a current control signal CS to a regulator 114.
The regulator 114 is configured to regulate the voltage of the regulated supply domain 110, and the current control signal CS is also applied to a consumption detector 115.
The consumption detector CD 115 is configured to monitor the amount of current in the RSD 110 and to provide a current evaluation signal CE to a power control logic unit 116.
The power control logic unit 116 is configured to receive the current evaluation signal CE as an input and to output, based on the state of the signal CE, a power status signal PS (for instance, run, low power run, standby, etc.) that is then provided to a clock controller, CC 117.
The clock controller, CC 117 is configured to generate, according to the input power status signal PS received from the power control logic unit 116, a plurality of different clock signals CK1, CK2, . . . , CKk that are provided to a plurality of (peripheral) clock domains 1181, 1182, . . . , 118k.
These peripherals may be in any number and include, by way of example, master or slave peripherals that may be managed by standard/custom buses, for instance, AHB (Advanced High-performance Bus), APB (“Advanced Peripheral Bus”), or any others (OBI “Open Bus Interface”, AXI “Advanced extensible Interface”, etc.).
The clock controller 117 is configured to receive from the power control logic unit 116 a power status signal PS (see the diagram of
The clock controller 117 illustrated in
As illustrated In
gating values gc11, . . . , gCNk (collectively designated G).
The oscillator frequencies OF and the oscillator n values OR are provided as input to respective oscillators labelled 161, . . . , 16N. Each oscillator 161, . . . , 16N generates a different clock signal for different clock domains 1181, 1182, . . . , 118k. The oscillators 161, . . . , 16N are configured to generate the respective clock signals according to the (respective) oscillator frequency f_regclk1, . . . , f_regclkN and run runclk1, . . . , runclkN values received.
The sets of gating blocks 1711, 1712, . . . , 171k to 17N1, 17N2, . . . , 17Nk are configured to be clocked by the clock signals generated by the respective oscillators 161, . . . , 16N and receive the gating values gc11, . . . , gCNk provided by the clock controller logic and registers block 151, to output respective sets of gated clock signals CK11, CK12, . . . , CK1k to CKN1, CKN2, . . . , CK1M to the peripherals 1811, 1812, . . . , 181k to 18N1, 18N2, . . . , 18Nk respectively coupled therewith.
As discussed, various embodiments of the present disclosure provide solutions for a regulated supply domain of System On Chip architecture with a power saving feature: for a general description of a regulated supply domain in conventional System On Chip architecture, reference can be made to the previous description of
For brevity and ease of understanding, in
By way of direct comparison with
a consumption detector, CD—this may be, for instance, either the consumption detector 215 of
As illustrated in
As illustrated in
For simplicity, features left unchanged with respect to
The consumption detector CD 215 of
The threshold registers 131, may 132 be accessible, for instance, for both read and write operations, through a standard bus interface 134, for instance, an AHB bus or a different standard bus, and may be configured to receive a POR (“Power-On Reset”) signal to reset the value contained in the threshold registers 131, 132 when a reset event occurs.
The threshold registers 131, 132 are coupled with a current detector block 133 that is configured to receive as input values such first threshold Imax1reg and second threshold Imax2reg stored in the threshold registers 131, 132, the current control signal CS, and the POR signal.
As illustrated, the current detector block 133 is configured to compare a currently available current I, obtained from the current control signal CS, with the first threshold Imax1reg and the second threshold Imax2reg received as input.
For instance, the current detector block 133 may be configured to:
Thus, the first flag Imax1 and second flag Imax2 indicate if the currently available current I, i.e., the current consumption, is over a threshold, for instance, over the first threshold Imax1reg and (also) over the second threshold Imax2reg, respectively.
Hence, the current detector block 133 can be configured to provide as its outputs the value of the first flag Imax1 and the value of the second flag Imax2 continuously. These outputs are then forwarded as outputs of the consumption detector CD 215.
The first counter CImax1reg, when enabled, is configured to count the number of clock periods in which the condition I≥Imax1reg is satisfied, while the second counter CImax2reg, when enabled, is configured to count the number of clock periods in which the condition I≥Imax2reg is satisfied.
The counter registers 137, 140 may be accessible, for instance, for both read and write operations, through a standard bus interface 134, for instance, the AHB bus or a different standard bus, and they may be configured to receive a reset signal rC from the bus interface 134 to reset the value contained in the counter registers 137, 140. The consumption detector, CD 215′ is further configured to receive the clock signal CLK and the count start flag SC as input signals.
The count start flag SC is coupled with AND logic gates 135, and 138 and it is used to enable the count of the conditions I≥Imax1reg, and I≥Imax2reg, respectively.
The AND gate 135 is configured to receive at its inputs the first flag Imax1 and, as previously described, the count start flag SC which is used as a masking signal for the first flag Imax1.
The output of the AND gate 135 is set in response to both the first flag Imax1 and the count start flag SC being set, and is provided as input to a clock gating block 136.
As illustrated, the clock gating block 136 is configured to receive as input the output of the AND gate 135 and the clock signal CLK, and provides as output a gated clock that is used to drive the counter register 137.
Similarly, the output of the AND gate 138 is set in response to both the second flag Imax2 and the count start flag SC being set, and is provided as input to a clock gating block 139.
The clock gating block 139 is configured to receive as input the output of the AND gate 138 and the clock signal CLK, and provides as output a gated clock that is used to drive the counter register 140.
The circuitry that differentiates the embodiment of
In the following, elements or components which have already been described with reference to the previous figures are denoted by the same references previously used in these figures. A description of these elements already described previously will not be repeated in order not to overburden the present detailed description.
The solutions described herein include a clock controller, CC 217 with a set of clock division factors calculated by a clock controller SCC to be then applied to modify peripheral consumption, reducing the operating frequencies of the peripherals by modifying the clocks applied thereto, which leads to a more accurate control of power consumption and performance.
In the embodiment illustrated in
In the embodiment illustrated in
The intermediate clock divider block 191, . . . , 19N is configured to receive as inputs the respective clock signals and clock divide factors N1, . . . , Nk, and is configured to provide as an output a divided clock signal which is then provided to respective sets of gating blocks 1711, 1712, . . . , 171k to 17N1, 17N2, . . . , 17Nk.
As illustrated herein, the clock divide factors N1, . . . , Nk, are computed in a circuit 266 taking into account clock constraints and then stored in dedicated registers associated therewith.
The circuit 266 is configured to act as a “smart” clock controller SCC and will be referred to in the following either as SCC or, briefly, as clock controller.
A non-limiting example of a clock constraints that can be taken into account in computing clock division factors N1, . . . , Nk is, for instance, α1fclk1>α2fclk2, etc. wherein some of the ax factors may be rational αx=px/qx.
Moreover, a configuration of the clock division factors N1, . . . , Nk such as N1=0, . . . , Nk=0 may be regarded as inadmissible.
In a default configuration of the clock division factors N1, . . . , Nk, the value associated with such clock division factors N1, . . . , Nk is N1=1, . . . , Nk=1 which is called the “legacy condition”. In the legacy condition, the method cannot change the original clock phases and the clock gating policy.
As illustrated in
In addition, the clock controller 266 may implement a method to determine certain sets of clock division factors, for instance, with the possibility to applying fixed clock dividers for certain functions held to be critical.
As previously stated, the clock controller 266 is configured to be coupled to the bus interface 134, for instance, an Advanced High-performance Bus (AHB), Open Bus Interface (OBI), Advanced extensible Interface (AXI), or other types of standard interfaces, and to receive at its inputs:
As illustrated, the clock controller 266 is configured to provide as an output:
The input signals received by the clock controller SCC 266 are forwarded as inputs to a control register 271. The control register 271 is coupled to the bus interface 134 which is used, for instance, by a core, to configure such control register 271, for instance, to read/write sets of registers.
The control register 271 is further coupled to sets of registers RS 2721, . . . , 2722, 2721, . . . , 272j, . . . , 272M each of them containing the values of the clock divide factors N1, . . . , Nk to be used for each different power scenario plus some others used for special purposes.
Exemplary possible sets of registers may include:
The registers in the sets of registers exemplified above, collectively referred to as 272 in the following, are coupled to inputs of a multiplexer 277.
As illustrated, the control register 271 is configured to manage the selection of registers in the sets collectively referred to as 272 based on the received input mode signal M.
As illustrated, the control register 271 generates a selection signal SEL which is forwarded to the multiplexer 277 to select the multiplexer inputs, namely, the set of registers, for instance, 2721, to be used and that can be coupled with the output of the multiplexer.
The output from the multiplexer 277 is provided as an output from the (“smart”) clock controller 266 which identifies the set of clock divide factors N1, . . . , Nk related to the currently used power mode M.
In addition, the control register 271 can also generate an interrupt INT, which is then forwarded to the clock controller SCC 266.
The input mode signal M may have, by way of example, one of the following contents/meanings:
The mode signal M to the clock controller 266 can be set to a forced mode and used to optimize the configuration in use and to optimize power and performance in “special operation” conditions.
In that case, a forced mode is selected (via a system core, for instance) before or during the “special operation” conditions or, alternatively, designer/architect can select the forced mode with special hardware configurations, for instance, when the core is off for low power mode.
Non-limiting examples of “special operation” may be:
In addition, a forced mode can be selected even when an interrupt INT is raised due to overconsumption, for instance, or due to a rare/unexpected event occurring such as low power or performance emergency, i.e., battery level is very low.
The system core refer to herein can also be configured to store the calculated values of the clock divide factors N1, . . . , Nk in a non-volatile memory associated with the core, for instance, a Flash, PCM (“Phase-change memory”), or OTP (“One Time Programmable”), etc. memory.
Then, at each power cycle reset event POR, the calculated values of the clock divide factors N1, . . . , Nk stored within the sets of registers RS 272 are preset to the “legacy condition”, i.e., N1, . . . , Nk is N1=1, . . . , Nk=1.
Once a power on reset (POR) sequence is completed, the core may load the sets of registers RS 272 with non-volatile values for the clock divide factors N1, . . . , Nk previously stored in the non-volatile memory by the core.
Different tuning criteria can be used in order to tune in an efficient way the clock divide factors N1, . . . , Nk.
In the following, certain non-limiting examples of tuning criteria that can be used will be described by way of example.
A possible tuning criterion is a trial-and-error approach that can be implemented on a “one time” basis, once system architecture is devised.
Therefore, once the clock divide factors N1, . . . , Nk are calculated in a first testing phase of the system architecture, the calculated clock divide factors N1, . . . , Nk may be also applied to the whole, or a part of, production of the same system architecture. In addition, the calculated clock divide factors N1, . . . , Nk may be also applied as default value to the products with the same system architecture to be further refined by the users according to their particular needs and applications implemented.
In such a case, multiple “experiments” are performed increasing one-by-one the values of the clock divide factors N1, . . . , Nk, and storing, for each of the attempts, a value for the first counter CImax1reg, a value for the second counter CImax2reg, and the execution time.
In that way, after a set of experiments, it is possible to select combinations of clock divide factors N1, . . . , Nk values that lead to reduced count values for the first and the second counter CImax1reg and CImax2reg, while leaving the execution time involved substantially unchanged.
Exemplary steps that can may be considered for implementing such a tuning criterion are the following:
If consumption and performance meet desired specifications, the calculated clock divide factors N1, . . . , Nk stored within the learning registers set RSM 272M are copied to the set of registers of the sets of registers corresponding to the power status signal PS that is currently used, i.e., the used power mode, and the procedure for the computation of the clock divide factors N1, . . . , Nk values stops.
Alternatively, the trial-and-error approach procedure continues until the target consumption and performance are reached via additional steps including:
This approach results in a simple, yet long (quasi-manual) approach which can be useful for certain purposes.
An example of a second tuning criterion is an automatic approach.
In that case, tuning of the clock divide factors N1, . . . , Nk values may be done directly by the SOC core via different approaches, for instance, simulated annealing, tabu search, etc.
A problem to be solved can be defined as finding optimal clock divide factors N1opt, . . . , Nkopt:
Hence, optimal clock divide factors N1opt, . . . . Nkopt can be found by solving an optimization problem and saving the resulting optimal clock divide factors N1opt, . . . , Nkopt in a set of registers out of the sets of registers corresponding to the power mode used, that is to the power status signal PS.
Such a problem can be solved via the following steps:
In various embodiments, the cost function may contain also other measurements that are available on the SOC.
The minimization of such a cost function may be performed using different minimization techniques, for instance, simulated annealing, tabu search, etc. Such techniques to find the minimum of a function are well-known in the art, and will not be described in detail herein to not overburden the present detailed description.
By way of example, the following steps may be applied in a minimization technique of the simulated annealing for computing optimal clock divide factors N1opt, . . . , Nkopt in the solution disclosed herein:
At the end of the third step, the process is repeated again from the first step, for instance after changing randomly a few of the clock divide factors N1, . . . , Nk in the specific set of registers of the sets of registers 272, and the loop is repeated (even a large number of times such as a thousand times).
At the end of looping, the values stored in the specific set of registers of the sets of registers 272 which is expected to contain optimal clock divide factors N1opt, . . . , Nkopt are optimal clock divide factors sought N1opt, . . . , Nkopt. These optimal clock divide factors N1opt, . . . , Nkopt are stored in a set of registers out of the sets of registers 272 at the end of the computation procedure. The values are “frozen” and used in the specific real scenario for what they were calculated.
Therefore, different sets of optimal clock divide factors N1opt, . . . , Nkopt can be computed for different scenarios, for instance, by using different metrics or for different performance/battery life balances. Prior to starting a particular task related to one of such different scenarios, the corresponding optimal clock divide factors N1opt, . . . , Nkopt for that scenario are used to replace the default ones.
Various embodiments may adopt different arrangements for storing the optimal clock divide factors N1opt, . . . , Nkopt.
For instance, in various embodiments, the optimal clock divide factors N1opt, . . . , Nkopt computed may be stored in a non-volatile memory, for instance, Flash, PCM, OTP, etc., and retrieved after each power cycle to be stored in a corresponding specific set of registers of the sets of registers 272.
In other embodiments, the optimal clock divide factors N1opt, . . . , Nkopt computed may be retained in non-volatile registers. Such a solution may be used for instance, in flash-less products.
In still other embodiments, the optimal clock divide factors N1opt, . . . , Nkopt, once first computed, can be re-calculated at each power cycle. Such a solution may be considered for instance, for devices that remain always on and that are switched off a few times a year.
Thus, the solution provided herein discloses a consumption detector, CD and a clock controller, CC with a set of clock division factors applied to modify consumption.
The consumption detector, CD uses two threshold registers to store two current thresholds, Imax1reg and Imax2reg, which are used as a comparison for an absorbed current. In response to these thresholds Imax1reg and Imax2reg, being exceeded a certain set of dividers of the clocks is selected and applied.
Division factors are calculated by a “smart” clock controller, SCC, that is circuit included in the clock controller, CC, circuitry in order to reduce the consumption by reducing a peripherals operating frequency. The “smart” clock controller, SCC may additionally comprise a learning procedure to determine the sets of (sub) optimal clock division factors for considered scenarios.
The solution as described herein facilitates achieving a balance between current consumption and performance, and in some embodiments, the balance between consumption and performance may be obtained to different degrees using different cost functions in learning procedures.
Thus, the solution as described herein enables the realization of long-life battery devices without downgrading their performance.
Without prejudice to the underlying principles, the details and the embodiments may vary, even significantly, with respect to what has been described by way of example only without departing from the scope of the embodiments.
The extent of protection is determined by the annexed claims.
Number | Date | Country | Kind |
---|---|---|---|
102023000006282 | Mar 2023 | IT | national |