A power management unit including a dashboard with a push model for receiving sensor data

By introducing qualification reporters and screening logic components into the processing unit of the computing system, determining when sensor data is sent, the problem of low efficiency in reporting sensor data in the prior art is solved, and more efficient resource utilization and system performance improvement is achieved.

CN114245886BActive Publication Date: 2025-06-17APPLE INC
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202080057830.1
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2019-08-16
Filing Date
2020-08-14
Publication Date
2025-06-17
Estimated Expiration
2040-08-14

AI Technical Summary

Technical Problem

Existing computing systems are inefficient when reporting sensor data from multiple processing units, resulting in waste of resources and unnecessary increase in data processing.

Method used

By introducing a qualification reporter into the processing unit, filtering logic components are used to determine when sensor data is sent to the power management unit, unnecessary data transmission is reduced.

Benefits of technology

It effectively reduces the transmission of sensor data, improves reporting efficiency, reduces resource consumption, and improves the overall performance of the system.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114245886B_ABST
    Figure CN114245886B_ABST
Patent Text Reader

Abstract

Systems, methods, and mechanisms for efficiently reporting sensor data of multiple processing units. In various embodiments, a computing system includes a processing unit and a power management unit. The processing unit includes multiple sensors for measuring various types of sensor data. If a sensor value exceeds a corresponding threshold, the processing unit sends the sensor value to the power management unit. Logic components in the power management unit store the received sensor values. When the logic components determine that the behavior of the processing unit changes, the logic components update one or more sensor thresholds of the processing unit to change the frequency of reporting one or more sensor values of the processing unit. The logic components send the updated one or more sensor thresholds to the processing unit. The logic components update more operation modes and operation states of the processing unit based on the received sensor values.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The embodiments described herein relate to the field of computing systems, and more particularly, to efficiently reporting sensor data of multiple processing units. Background Art

[0002] Computing systems such as semiconductor chips include multiple functional blocks or units, each of which is capable of processing data. In various embodiments, the multiple functional units are individual dies on a system-on-chip (SOC), a multi-chip module (MCM), or a printed circuit board. Examples of functional units are general-purpose processors with one or more cores in a central processing unit (CPU), highly parallel data architecture processors with one or more cores in a graphics processing unit (GPU) and a digital signal processor (DSP), display controllers, audio processing components, camera processing units, networking components, peripheral interface controllers, storage controllers, and the like.

[0003] Control logic components within a computing system, such as a power management unit, determine one or more operating states of different functional units. The operating states include one or more of a power supply voltage and an operating clock frequency. A clock generation circuit generates different clock signals at one or more specified different frequencies, while a power distribution network provides one or more specified different power supply voltages. Additionally, the power management unit determines one or more operating modes of different functional units. The operating modes include: a sleep mode, in which one or more logic blocks are powered off; an idle mode, in which one or more logic blocks disable a clock enable signal; and one or more active modes, each having a different operating state.

[0004] To determine the operating states and operating modes of different functional units, logic implemented by hardware and / or software in a power management unit periodically samples metric data from different functional units. Multiple sensors monitor the metric data, and thus the metric data is also referred to as sensor data. Examples of sensor data are sensor temperature, sensor voltage, an average number of executed instructions per clock cycle, an average number of accesses to a particular data storage device, a number of misses of a particular data storage device, a measure of energy consumption such as an amount of joules or a number of energy credits, a total number or rate of various other events, and the like. Sensor data is typically specific to the type of functional unit.

[0005] Typically, communication between functional units and a power management unit utilizes a communication fabric. Periodic sampling of sensor data uses read transactions, which are unpublished transactions. Thus, periodic sampling of sensor data uses two transactions for each type of sensor data and for each functional unit, which increases the amount of data transmitted in the communication fabric. Periodic sampling of sensor data can also wake up idle or sleeping functional units to report only the requested sensor data. In many cases, the received sensor data does not indicate that any further processing is necessary, thus reducing the value of obtaining the sensor data while the cost remains the same.

[0006] In view of the foregoing, there is a need for an efficient system, method, and mechanism for reporting sensor data of multiple processing units. SUMMARY OF THE INVENTION

[0007] A system, method, and mechanism for efficiently reporting sensor data of multiple processing units are envisioned. In various embodiments, a computing system includes one or more processing units and a power management unit. The processing unit processes instructions of one or more software applications. The processing unit is an agent or endpoint in the computing system. The processing unit is also a source of sensor data. The power management unit generates one or more updated operation modes and operation states and sends them to the source. The operation state is also referred to as a power performance state (p-state). Each operation state in the operation states includes one or more of a power supply voltage and an operation clock frequency. Each operation mode in the operation modes includes: a sleep mode, in which one or more logic blocks in the processor are powered off; an idle mode, in which one or more logic blocks disable a clock enable signal; and one or more active modes, each active mode having a different operation state.

[0008] Each of these sources includes multiple sensors for measuring various types of data. Examples of sensor types are on-die temperature sensors, on-die current sensors, on-die voltage sensors, and performance counters. Examples of sensor data are on-die temperature, on-die power supply voltage, on-die current draw, an average number of executed instructions per clock cycle, an average number of accesses to a specific data storage device, a number of misses of a specific data storage device, a measure of energy consumption such as an amount of joules or a quantity of energy integral, a total number or rate of various other events, etc. Sensor data is typically specific to the type of functional block within the source. To determine the operation state and operation mode of the functional block within the source, a logic component implemented by hardware and / or software in the power management unit uses the sensor data from the processing unit.

[0009] In various embodiments, rather than the power management unit sending periodic requests to the processing unit to sample sensor data, the power management unit does not send requests. Instead, each processing unit in the processing unit uses one or more qualifying reporters corresponding to a respective one of the sensors in the sensors to determine when to send sensor data to the power management unit. Each qualifying reporter in the qualifying reporters includes screening logic components for determining whether the data measured by the corresponding sensor is to be sent to the power management unit. In one embodiment, the screening logic components compare the value of the corresponding sensor with a threshold associated with the sensor. If the value of the sensor exceeds the threshold, the screening logic components send the value of the sensor to the power management unit. However, if the value of the sensor does not exceed the threshold, the screening logic components prevent the value of the sensor from being sent to the power management unit.

[0010] In some embodiments, the screening logic components perform the comparison during each sampling interval. In one embodiment, one or more of the sensors in the sensors sample data using different sampling intervals. Accordingly, the screening logic components of one or more of the qualifying reporters perform the comparison using different sampling intervals. In one embodiment, one or more of the qualifying reporters in the qualifying reporters use the screening logic components to compare the sensor data with an absolute threshold. For example, a given qualifying reporter compares the sampled temperature at a particular location of the processor with the absolute value of a temperature threshold, such as 50 degrees Celsius. In another embodiment, one or more of the qualifying reporters in the qualifying reporters use the screening logic components to compare the sensor data with a relative threshold. For example, a given qualifying reporter compares the difference between the sampled temperature at a particular location of the processor and the previous sampled temperature at the same location with a relative value of a temperature threshold, such as an increase of 20 degrees Celsius and / or a decrease of 15 degrees Celsius.

[0011] In some embodiments, one or more eligibility reporters in the eligibility reporter use screening logic components to compare sensor data with rate thresholds. For example, a given eligibility reporter compares the difference between the sampled value (such as temperature) at a particular location of the comparison processor at each time change with the previous sampled value. In one example, the rate threshold is an increase of 20 degrees Celsius every 15 minutes. Thus, in various embodiments, the screening logic component determines the rate or other ratio and then performs the comparison with the threshold. In one embodiment, the screening logic component determines the rate of cache misses in one or more levels of the cache memory hierarchy and then compares the rate with the rate threshold. In some embodiments, the logic component in the eligibility reporter or the interface of the processor groups eligible sensor values with any other sensor values eligible for reporting. After that, the logic component sends the sensor values and any other eligible sensor values to the power management unit.

[0012] The power management unit includes a data storage device having a plurality of entries for storing the received sensor values. The data storage device is also referred to as a dashboard. Each entry in the dashboard stores one or more sensor values. In one embodiment, when the power management unit receives one or more eligible sensor values, the logic component in the power management unit generates an indication of the age of the received one or more eligible sensor values. In one embodiment, the power management unit samples or captures a record timestamp locally. The logic component also identifies the source that sent the eligible sensor values. In one example, the logic component analyzes the received data packet and determines the processing unit that sent the data packet. Additionally, the logic component identifies the entry in the dashboard based on the identified source. In one embodiment, the dashboard entries are allocated among the processing units, and the logic component maintains a given offset for each processing unit in the processing unit. The logic component determines the combination of the starting address and the offset point to the identified dashboard entry. In one embodiment, the logic component stores each of the age indication and the sensor value in the identified dashboard entry.

[0013] In various embodiments, when a logic component in a power management unit determines that the behavior of an identified source is changing, the logic component updates one or more sensor thresholds of the identified source to change the frequency of reporting one or more sensor values of the identified source. The power management unit sends the updated one or more sensor thresholds to the identified source. In some embodiments, the power management unit does not maintain an age threshold, so when the logic component in the power management unit determines that it is time to process the content stored in the identified dashboard entry, the logic component updates one or more operating modes and operating states of one or more processing units based on the sensor values of the identified dashboard entry. In other embodiments, the power management unit does maintain an age threshold such as a timestamp threshold. In one embodiment, when the logic component in the power management unit determines that it is time to process the content stored in the identified dashboard entry, in response to determining that the stored age indication in the identified dashboard entry exceeds the age threshold (such as a timestamp threshold), the logic component discards the sensor value. For example, the power management unit has not received an updated sensor value to overwrite the current sensor value in the identified dashboard entry, and the corresponding age of the current sensor value exceeds the age threshold. However, in one embodiment, in response to determining that the stored age indication does not exceed the age threshold, the logic component updates one or more operating modes and operating states of one or more processing units based on the sensor values.

[0014] These and other embodiments will be further understood with reference to the following description and drawings. BRIEF DESCRIPTION OF THE DRAWINGS

[0015] The foregoing and additional advantages of the methods and mechanisms can be better understood by reference to the following description when taken in conjunction with the accompanying drawings, in which:

[0016] Figure 1 is a block diagram of one embodiment of a computing system.

[0017] Figure 2 is a block diagram of one embodiment of a computing system.

[0018] Figure 3 is a block diagram of one embodiment of a dashboard entry storing sensor data.

[0019] Figure 4 is a flowchart of one embodiment of a method for efficiently reporting sensor data of multiple processing units.

[0020] Figure 5 is a flowchart of one embodiment of a method for efficiently reporting sensor data of multiple processing units.

[0021] Figure 6A flowchart of one embodiment of a method for effectively reporting sensor data of multiple processing units.

[0022] Figure 7 A block diagram of one embodiment of a computing system.

[0023] Figure 8 A block diagram of one embodiment of a system.

[0024] While the embodiments described in this disclosure may be subject to various modified forms and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will be described in detail herein. However, it should be understood that the drawings and the specific implementation thereof are not intended to limit the embodiments to the particular forms disclosed, but on the contrary, the present invention is intended to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the appended claims. As used throughout this patent application, the word "may" is used in an allowable sense (i.e., meaning having the possibility) rather than a mandatory sense (i.e., meaning must). Similarly, the word "comprising" means including but not limited to.

[0025] Various units, circuits, or other components may be described as "configured to" perform one or more tasks. In such contexts, "configured to" is generally a broad statement meaning "having" a structure of a "circuit" that performs one or more tasks during operation. Thus, even when the unit / circuit / component is not currently turned on, the unit / circuit / component may be configured to perform the task. Generally, the circuit forming the structure corresponding to "configured to" may include hardware circuits. Similarly, for convenience in description, various units / circuits / components may be described as performing one or more tasks. Such descriptions should be interpreted as including the phrase "configured to". The statement of a unit / circuit / component configured to perform one or more tasks is specifically intended not to invoke 35 U.S.C. § 112(f) for that unit / circuit / component. Detailed Description

[0026] In the following description, numerous specific details are set forth to provide a thorough understanding of the embodiments described in this disclosure. However, those of ordinary skill in the art should recognize that the embodiments may be practiced without these specific details. In some instances, well-known circuits, structures, and techniques have not been shown in detail in order to facilitate illustration and avoid obscuring the description of the embodiments.

[0027] Reference Figure 1, which shows a general block diagram of an embodiment of a computing system 100. In the illustrated embodiment, a power management unit 110 transfers information between a plurality of components such as sources 140 and 170. Source 140 uses a processor 142. Sensors 150 and 152 monitor or otherwise measure data corresponding to processor 142. Eligibility reporters 160 and 162 are logic components implemented by hardware and / or software for determining whether to send sensor data from sensors 150 and 152 to power management unit 110 via interface 166. Eligibility reporters 160 and 162 read thresholds from programmable control and status register 164.

[0028] The power management unit 110 receives eligible sensor data and stores the received sensor data. The power management unit 110 processes the received sensor data, and based on this processing, the power management unit 110 updates one or more of the operating modes and operating states of sources 140 and 170. The operating state is also referred to as a power performance state (p-state). Each operating state in the operating state includes one or more of a power supply voltage and an operating clock frequency. Each operating mode in the operating mode includes: a sleep mode, in which one or more logic blocks in the processor are powered off; an idle mode, in which one or more logic blocks disable a clock enable signal; and one or more active modes, each active mode having a different operating state. In various embodiments, when the power management unit 110 determines that the behavior of a given source of sources 140 and 170 is changing, the power management unit 110 updates one or more sensor thresholds of the given source to change the frequency of reporting one or more sensor values of the given source. The power management unit sends the updated one or more sensor thresholds to the given source.

[0029] In various embodiments, the computing system 100 is a system-on-chip (SoC) that includes multiple types of integrated circuits on a single semiconductor die, each integrated circuit providing an independent function. In some embodiments, the computing system 100 is also referred to as an application-specific integrated circuit (ASIC) or device. In other embodiments, sources 140 and 170 are separate dies within a package such as a multi-chip module (MCM). In still other embodiments, sources 140 and 170 are separate dies or chips on a printed circuit board. For ease of illustration, Figure 1 clock sources such as phase-locked loops (PLLs), interrupt controllers, etc. are not shown. It should also be noted that the number of components of the computing system 100 may vary depending on the embodiment. In other embodiments, the number of each type of component is more or less than that shown in the computing system 100. In various embodiments, sources 140 and 170 are sources of sensor data provided to the power management unit 110.

[0030] In some designs, sources 140 and 170 are one of the agents or endpoints in computing system 100. Examples of agents include one or more of a multimedia engine, a digital signal processor (DSP), and a processing unit, each having one or more of a central processing unit (CPU) and a data parallel processor such as a graphics processing unit (GPU). For example, processor 142 includes one or more general-purpose cores of a CPU, one or more single instruction stream multiple data stream (SIMD) cores of a GPU, and / or a field-programmable gate array (FPGA), etc. In one embodiment, when one or more of sources 140 and 170 are agents, the agent is a processor complex. The term "processor complex" is used to denote a configuration of one or more processor cores that use a local storage device (not shown) such as a local shared cache memory subsystem and are capable of processing a workload together. For example, in one embodiment, the workload includes one or more programs, and the one or more programs include instructions executed by processor 142. In various embodiments, any instruction set architecture is implemented for computing system 100.

[0031] When one or more of sources 140 and 170 are endpoints, examples of sources 140 and 170 are input / output (I / O) peripherals such as memory devices, communication interfaces such as radio communication interfaces, speakers, displays, cameras, memory controllers, etc. In various designs, sources 140 and 170 communicate messages, transactions, and data with each other and with power management unit 110. In some designs, sources 140 and 170 also send messages, transactions, and data to a memory (not shown). In various designs, components of computing system 100 utilize one of various types of communication structures (not shown) to transfer information such as messages, transactions, and data.

[0032] In various designs, power management unit 110 receives feedback information from other components of computing system 100. For example, power management unit 110 receives measurements from one or more on-die temperature sensors, one or more on-die power sensors, one or more on-die current sensors, and one or more performance counters. Sensors 150 and 152 represent any of these types of sensors. Although only two sensors are shown in source 140, it is possible and expected that source 140 uses any number of sensors. Although a description of the components of source 140 is provided, in some embodiments, source 170 includes components similar to those of source 140. In other embodiments, between sources 140 and 170, the number or type of components is different, but each component utilizes sensors and communicates with power management unit 110.

[0033] In some designs, one or more of sensors 150 and 152 and qualification reporters 160 and 162 monitor or measure an indication of the activity level of source 140. In some designs, the activity level is a measurement parameter within a pre-determined range. Alternatively, sensors 150 and 152 and / or qualification reporters 160 and 162 determine a weighted sum of sampled signals. In various designs, one or more of the clock enable signal routed to the local clock distribution block, the cache access hit / miss status line, the bus driver enable signal, etc. are examples of signals selected to be sampled. In addition to the on-die temperature, on-die current draw, on-die supply voltage, activity level, and weighted sum of sampled signals, other examples of sensor data are the average number of executed instructions per clock cycle, the average number of accesses to a particular data storage device, the number of misses of a particular data storage device, a measure of energy consumption such as the amount of joules or the number of energy integrals, the total number or rate of various other events, etc.

[0034] One or more of sensors 150 and 152 and qualification reporters 160 and 162 determine the average value and / or rate of the statistical data collected by sensors 150 and 152. In one embodiment, when one or more of sensors 150 and 152 are performance counters, a count of the number of clock cycles since the previous sampling interval is maintained. Logic components in one of sensors 150 and 152 or the qualification reporter determine the ratio of the count in the performance counter to the number of clock cycles. In addition to determining the average value of the values, one or more of qualification reporters 160 and 162 combine two or more values of sensors 150 and 152 and the count of the clock cycles to generate a result, which is then compared to a corresponding threshold stored in configuration and status register 164. In various designs, configuration and status register 164 stores an absolute threshold that corresponds to the absolute value of a given sensor in sensors 150 and 152 or the absolute value of a result determined using a given sensor in sensors 150 and 152 in a formula. In some designs, configuration and status register 164 stores a relative threshold that corresponds to a change in the value of a given sensor in sensors 150 and 152 or a change in a result determined using a given sensor in sensors 150 and 152 in a formula. In some embodiments, configuration and status register 164 stores a set of thresholds for each of a plurality of operating states, and a particular set is selected based on the current operating state of source 140.

[0035] In addition to the above examples, various other formulas and other ratios are possible and are expected to be used by qualification reporters 160 and 162. For example, in another embodiment, the screening logic components of qualification reporters 160 and 162 determine the rate of cache misses in one or more levels of the cache memory hierarchy of processor 142 and then compare that rate to a rate threshold stored in one of the registers in programmable control and status register 164. The types of data sampled or captured by sensors 150 and 152 and qualified by qualification reporters 160 and 162 are typically specific to the type of processor 142 and source 140. In one embodiment, qualification reporters 160 and 162 use posted write transactions to send one or more of the sensor values and results to power management unit 110.

[0036] Each of qualification reporters 160 and 162 includes screening logic components for determining whether to send sensor data measured by sensors 150 and 152 or results determined from the sensor data to power management unit 110. In one embodiment, the screening logic components in qualification reporters 160 and 162 compare the sensor value of a corresponding one of sensors 150 and 152 to a threshold associated with the sensor. Also, in some cases, the threshold is an absolute threshold, while in other cases, the threshold is a relative threshold. If the measured sensor value exceeds the threshold, the screening logic components of qualification reporters 160 and 162 send the sensor value to power management unit 110. Also, in one embodiment, qualification reporters 160 and 162 use posted write transactions to the power management unit to send one or more of the sensor values and results to power management unit 110, which use fewer transactions than unposted read transactions from the power management unit. However, if the value of the sensor does not exceed the threshold, the screening logic components of qualification reporters 160 and 162 prevent the sensor value from being sent to power management unit 110. In various embodiments, the threshold is stored in one of the registers in programmable control and status register 164.

[0037] In some embodiments, the screening logic components of eligibility reporters 160 and 162 perform comparisons during each sampling interval. In one embodiment, one or more of sensors 150 and 152 sample data using different sampling intervals. Accordingly, the screening logic components of eligibility reporters 160 and 162 perform comparisons using different sampling intervals. In another embodiment, sensors 150 and 152 sample data using the same sampling interval and / or the screening logic components of eligibility reporters 160 and 162 perform comparisons using the same sampling interval. In still other embodiments, logic components in sources 140 and 170 sample data using the same sampling interval despite using different clock domains and operating clock frequencies. For example, in some designs, sources 140 and 170 use a "globally time-synchronized sampling interval" in which system sampling clock edges are aligned within a time threshold such as a few microseconds. Computing system 100 supports a globally time-synchronized sampling interval in cases where sensor data is aggregated on the system to update control parameters.

[0038] In some embodiments, the globally time-synchronized sampling interval is slower than the operating clock frequency used by processor 142 by one or more magnitudes. In such designs, although sources 140 and 170 use different clock domains, the sampling clock edges are aligned within a time threshold between sources 140 and 170. In one example, processor 142 uses operating clock cycles in the nanosecond range, while the globally time-synchronized sampling interval has a period in the range of hundreds of microseconds. Accordingly, one or more of sensors 150 and 152 utilize multiple sampling intervals, such as at least a default sampling interval and a globally time-synchronized sampling interval. In various embodiments, the globally time-synchronized sampling interval is stored in a programmable register of control and status register 164 similar to the default sampling interval.

[0039] Examples of aggregated sensor data monitored by sensors 150 and 152 are the amount of energy consumed and the amount of data transmitted, such as the amount of bandwidth. In some embodiments, one or more of eligibility reporters 160 and 162 use screening logic components to compare sensor values sampled by one of sensors 150 and 152 to an absolute threshold. For example, a given eligibility reporter among eligibility reporters 160 and 162 compares the temperature on the die at a particular location of processor 142 sampled by a given one of sensors 150 and 152 to the absolute value of a temperature threshold, such as 50 degrees Celsius.

[0040] In another embodiment, one or more of the eligibility reporters 160 and 162 use screening logic components to compare sensor values sampled by one of the sensors 150 and 152 with relative thresholds. For example, a given one of the eligibility reporters 160 and 162 determines the difference between the on-die temperature at a particular location of the processor 142 sampled by a given one of the sensors 150 and 152 and the previously sampled on-die temperature at the same location. After that, a given one of the eligibility reporters 160 and 162 compares this difference with a relative temperature threshold (such as an increase of 20 degrees Celsius and / or a decrease of 15 degrees Celsius).

[0041] In some embodiments, the logic components in the eligibility reporters 160 and 162 or the logic components in the interface 166 group eligible sensor values with any other sensor values eligible for reporting. In some embodiments, the sensors 150 and 152 use one or more sensor data sizes, each of which is less than the amount of data in a data packet transmitted from the interface 166 to the interface 136 of the power management unit 110. Examples of sensor data sizes are 8 bits, 32 bits, and 64 bits. However, various other sensor data sizes are possible and contemplated. In contrast, the interface 166 supports a data packet data payload size comparable to one or more supported cache line sizes. In one example, the supported cache line size is 64 bytes. To efficiently transmit eligible sensor values, the logic components in the eligibility reporters 160 and 162 or the logic components in the interface 166 group multiple eligible sensor values together.

[0042] The logic components in the interface 166 insert the multiple eligible sensor values into a data packet for transmission to the power management unit 110. In one embodiment, each of the sensor data sampled by the sensors 150 and 152 has a specific offset within the data packet, so one or more indicators are used to specify whether a particular sensor data is included in the data packet. For example, when a particular sensor data is included in the data packet, one or more byte enables are asserted. In contrast, when a particular sensor data is not included in the data packet, the one or more byte enables are negated. In some embodiments, an identifier is stored in the data packet to identify the type of sensor data, rather than using a predetermined offset. In some designs, the identifier is stored in the data packet together with the eligible sensor data. In other designs, the identifier and the corresponding sensor data size are stored elsewhere in the data packet for later use in determining where in the data packet the particular eligible sensor data is located. In various designs, the identifier of the source 140 is already provided elsewhere in the data packet.

[0043] Now turning toFigure 2 , which shows a general block diagram of an embodiment of the computing system 200. The previously described circuits and logic components are given the same numbers. In the illustrated embodiment, the power management unit 110 transfers information between multiple components such as sources 140 and 170. The power management unit 110 receives sensor data via interface 236 and stores the received sensor data in a data storage device called the dashboard 220. Each of the power manager logic component 230 and the reporting guidance logic component 234 in the power management unit 220 is implemented by hardware and / or software. The power manager logic component 230 processes the sensor data read from the dashboard 220 based on the parameters and ranges identified in the programmable control and status register 232. Based on processing the sensor data stored in the dashboard 220, the power manager logic component 230 updates one or more of the operation modes and operation states of the sources 140 and 170.

[0044] In various embodiments, the power management unit 110 controls the amount of power supply voltage of the sources 140 and 170 based on the received and qualified sensor data. For example, in the illustrated embodiment, for each of the sources 140 and 170, there is a power supply voltage indicated as V 源 . In some embodiments, there may be multiple power supply voltages for other components (not shown) of the computing system 200. In some embodiments, based on an indication received from the power management unit 110, the logic components local to the sources 140 and 170 control the operation modes and operation states of the components, including powering on and off and various other operation states of those components (such as specific pipelines and other components) that support more than one operation state and operation mode.

[0045] In various embodiments, each of the sources 140 and 170 can operate with different power supply voltages from different power planes (e.g., V 源A ≠V 源B ). As shown, source 140 uses the voltage magnitude V 源A as the operating power supply voltage and uses the clock frequency Freq 时钟域A from the first clock domain. Source 170 uses the voltage magnitude V 源B as the operating power supply voltage and uses the clock frequency Freq 时钟域B from a different second clock domain. In other embodiments, each of the sources 140 and 170 operates with the same power supply voltage (e.g., V 源A = V 源B ) from a single power plane, while also operating with different clock frequencies from different clock domains.

[0046] As shown, power management unit 110 includes a dashboard 220 having entries 222A - 222J. The dashboard 220 is implemented with one or more of registers, latches, random access memory (RAM) cells, and content addressable memory (CAM) cells. In one embodiment, the dashboard entries 222A - 222J are allocated between sources 140 and 170. In other embodiments, the dashboard entries 222A - 222J are allocated between sub - components of sources 140 and 170. In various embodiments, the programmable control and status register 232 stores a given offset for each of sources 140 and 170 and / or for one or more sub - components of sources 140 and 170. In such embodiments, one or more of interface 236, power manager logic 230, and report steering logic 234 allocate a particular entry of entries 222A - 222J between two particular offsets in a fully associated manner.

[0047] In other embodiments, a given logic component of one or more of interface 236, power manager logic 230, and report steering logic 234 determines a combination of a starting address corresponding to one of sources 140 and 170 and an offset point to an identified dashboard entry among entries 222A - 222J. In some embodiments, the given logic component does not store identifiers of sources 140 and 170 and / or sub - components in the dashboard 220 because the location in the dashboard 220 indicates the source of qualified sensor data. In other embodiments, the logic component allocates entries 222A - 222J in a first - in - first - out (FIFO) manner and stores an indication of the source of qualified sensor data. In another embodiment, the given logic component allocates entries 222A - 222J in a direct mapped manner. In yet other embodiments, the given logic component uses one of various other ways to allocate entries 222A - 222J.

[0048] In some embodiments, interface 236 receives one or more qualified sensor values in a posted write transaction. Instead of using an unposted read transaction sent by power management unit 110, sensor data is collected through posted write transactions from sources 140 and 170. In one embodiment, when power management unit 110 receives one or more qualified sensor values via interface 236, power management unit 110 generates an age indication. In one embodiment, the age indication is a counter value with a reset value, and the age is updated at each subsequent clock cycle. In some embodiments, the age is incremented at each clock cycle. In other embodiments, the age is decremented at each clock cycle. In yet other embodiments, a logic component in one of interface 236, power manager logic 230, and report steering logic 234 captures or samples a local timestamp.

[0049] The power management unit 110 also identifies one of the sources 140 and 170 that transmits qualified sensor values. In one example, the logic component analyzes the data packets received by the interface 236 and determines which of the sources 140 and 170 transmitted the data packet based on the identifier stored in a specific location in the data packet. Additionally, a logic component in one of the interface 236, the power manager logic component 230, and the reporting guidance logic component 234 selects one of the entries 222A - 222J in the dashboard 220 based on the identified source. After that, one of the interface 236, the power manager logic component 230, and the reporting guidance logic component 234 assigns qualified sensor data and an age indication such as a local timestamp or others to the selected entry among the entries 222A - 222J.

[0050] In one implementation, the control and status register 232 stores one or more timers for storing the age since the sensor data was last processed for a given one of the sources 140 and 170. In other implementations, each of the entries 222A - 222J stores one or more ages corresponding to the stored sensor data. In still other implementations, the power manager logic component 230 maintains the priority of one or more of the sources 140 and 170 and / or sub-components of the sources 140 and 170. In such implementations, the control and status register 232 stores the priority. In some implementations, when the power manager logic component 230 determines the time to process the content stored in a given entry among the entries 222A - 222J, in response to determining that the stored local timestamp or other indication of the age corresponding to the sensor value exceeds the age threshold, the power manager logic component 230 discards the sensor value stored in the given entry. However, in response to determining that the stored age indication does not exceed the age threshold, the power manager logic component 230 updates one or more operating modes and operating states of the sources 140 and 170 based on the sensor value. In one implementation, the programmable control and status register 232 stores the age threshold. In some implementations, the programmable control and status register 232 maintains multiple timestamp thresholds, such as age thresholds, for different types of sources and different types of sensor data. In other implementations, based on the age threshold, the power manager logic component 230 is not eligible to update one or more operating modes and operating states of the sources 140 and 170.

[0051] In various embodiments, when the reporting guidance logic component 234 determines that the behavior of a given source among sources 140 and 170 is changing, the reporting guidance logic component 234 updates one or more sensor thresholds for the given source to change the frequency of reporting one or more sensor values of the given source. The reporting guidance logic component 234 sends the updated one or more sensor thresholds to the given source. In one embodiment, when the received sensor values indicate to the reporting guidance logic component 234 that the behavior is changing frequently, as measured by comparing the received sensor values with one or more thresholds stored in the programmable configuration and status register 236, the reporting guidance logic component 234 updates one or more sensor thresholds for the given source to increase the reporting of sensor data. In one embodiment, the reporting guidance logic component 234 sends one or more updated sensor thresholds to the given source, and the one or more updated sensor thresholds have values smaller than the corresponding one or more current sensor thresholds used in the given source, so as to cause the sensor values in the given source to be reported more frequently.

[0052] Conversely, in one embodiment, when the received sensor values indicate to the reporting guidance logic component 234 that the behavior is changing infrequently, as measured by comparing the received sensor values with one or more thresholds stored in the programmable configuration and status register 236, the reporting guidance logic component 234 updates one or more sensor thresholds for the given source to reduce the reporting of sensor data. In one embodiment, the reporting guidance logic component 234 sends one or more updated sensor thresholds to the given source, and the one or more updated sensor thresholds have values larger than the corresponding one or more current sensor thresholds used in the given source, so as to cause the sensor values in the given source to be reported less frequently. In some embodiments, the reporting guidance logic component 234 selects the initial thresholds and the updated thresholds based on the values stored in the programmable configuration and status register 236. In one embodiment, these stored values are set based on simulation and execution benchmarks that model various selected workloads considered suitable for the target use of the computing system 200.

[0053] In one example, determining that the behavior of a given source is changing includes determining whether the duration between receiving a given sensor value and receiving a previous value of the given sensor value exceeds a duration threshold, where the duration threshold is separate from an age threshold used for comparison with the dashboard entry age. In a second example, determining that the behavior of a given source is changing includes determining that the change between a given sensor value and a previous value of the given sensor value exceeds a first change threshold. In one implementation, the first change threshold is a maximum change threshold. For both cases, in one implementation, the reporting guidance logic component 234 sends one or more updated sensor thresholds to the given source, and the one or more updated sensor thresholds have values smaller than the corresponding one or more current sensor thresholds used in the given source, so as to cause the sensor values in the given source to be reported more frequently.

[0054] In a third example, determining that the behavior of a given source is changing includes determining that the change between a given sensor value and a previous value of the given sensor value is less than a second change threshold. In one implementation, the second change threshold is a minimum change threshold. For this case, in one implementation, the reporting guidance logic component 234 sends one or more updated sensor thresholds to the given source, and the one or more updated sensor thresholds have values larger than the corresponding one or more current sensor thresholds used in the given source, so as to cause the sensor values in the given source to be reported less frequently.

[0055] Now referring to Figure 3 , an implementation of the dashboard entry 300 is shown. Each dashboard entry 300 of the dashboard in the power management unit stores one or more sensor values. When a new sensor value is reported, the logic component in the power management unit updates the dashboard entry such as the dashboard entry 300. In one implementation, the dashboard entry 300 represents each individual entry of the dashboard. As shown, the dashboard entry 300 includes several fields.

[0056] Although the fields 302 - 316B are shown in this particular order, other combinations are possible and other or additional fields may also be utilized. The bits storing the information of fields 302 - 316B may or may not be contiguous. The source identifier (ID) field 302 identifies a given source among a plurality of sources capable of reporting sensor data. In some embodiments, the position of the dashboard entry 300 identifies the given source and the dashboard entry does not use the source identifier (ID) field 302. The source thermal limit field 304 stores the limits of a given source in terms of thermal integration, estimated activity level, on-die temperature, on-die current measurements, etc. In some embodiments, the dashboard entry 300 stores multiple limits. In other embodiments, one or more of the programmable configuration and status registers and tables store the limits, so the dashboard entry 300 does not use the source thermal limit field 304.

[0057] The sensor identifier (ID) field 310A identifies a specific sensor of a given source. As previously mentioned, examples of sensors are on-die temperature sensors, on-die power sensors, on-die current sensors, and performance counters. The sensor entry status field 312A stores metadata corresponding to the given sensor identified by the sensor identifier field 310A. In one embodiment, the metadata includes a valid bit and an indication of whether the logical component has accessed the corresponding sensor value. The timestamp field 314A stores the local timestamp captured when the logical component updates the dashboard entry 300 with sensor data as Figure 5 shown. In another embodiment, the field 314A stores an age value updated every clock cycle. The sensor value field 316A stores the sensor value received from the given source. In some embodiments, the dashboard entry 300 stores multiple sensor values from the same given source. For example, the fields 310B - 316B store the same type of information as the fields 310A - 316A, but for another sensor of the given source.

[0058] Now turning to Figure 4 , a general flowchart of one embodiment of a method 400 for efficiently reporting sensor data of multiple processing units is shown. For purposes of discussion, the steps in this embodiment (and in Figures 5 to 6 ) are shown in sequential order. However, in other embodiments, some steps may occur in a different order than shown, some steps may be implemented simultaneously, some steps may be combined with other steps, and some steps may not exist. Each of the computing systems 100, 200, and 700 may implement one or more of the steps of methods 400 - 600 ( Figures 4 to 6 ).

[0059] Logic components in a source that generates sensor data process instructions from one or more software applications. As previously described, in various designs, the source is one of an agent in a computing system or an endpoint. The source operates in one of a variety of operating modes. The operating modes include: a sleep mode in which one or more logic blocks are powered down; an idle mode in which one or more logic blocks disable a clock enable signal; and one or more active modes, each having a different operating state. The source includes one or more sensors. As previously described, examples of sensors are on-die temperature sensors, on-die power sensors, on-die current sensors, and performance counters. While the source is operating in one of the various operating modes, the sensors monitor sensor data (block 402). Examples of sensor data are on-die temperature, on-die power voltage, on-die current draw, an average number of executed instructions per clock cycle, an average number of accesses to a particular data storage device, a number of misses of a particular data storage device, a number of energy consumption integrals, a total number or rate of various other events, etc. Sensor data is typically specific to the type of functional block that generates the sensor data.

[0060] The source uses one or more conditions to update and record sensor data. In various designs, the logic components in the source capture or otherwise sample or store one or more sensor values during each sampling interval. In one implementation, the duration of the sampling interval is stored in a programmable configuration and status register. In one implementation, the logic components use multiple sampling intervals. In some designs, the logic components use at least a default sampling interval and a globally time-synchronized sampling interval, as previously described for sensors 150 and 152 ( Figure 1 ). In some designs, the logic components use other qualification factors in addition to the sampling interval, such as detecting an active operating mode. Other qualification factors are possible and are contemplated. If the logic components determine that the conditions for updating the sensor values (the "yes" branch of conditional block 404) are met, the logic components update the sensor values (block 406). Additionally, the logic components capture the sensor values, such as updating a register or other sequential element or data storage device for recording the sensor data.

[0061] Logic compares the sensor values sampled by the component with one or more thresholds (block 408). In some designs, the logic component stores one or more thresholds in programmable configuration and status registers. In one implementation, to reduce the frequency of reporting sensor values, the logic component increases one or more thresholds stored in the programmable configuration and status registers. In some implementations, to increase the frequency of reporting sensor values, the logic component decreases one or more thresholds stored in the programmable configuration and status registers. In one implementation, the logic component sets one or more thresholds to zero to increase the rate of reporting sensor values. If the logic component determines that the conditions for updating the sensor values are not met (the "no" branch of decision block 404), the control flow of method 400 moves to block 408, where the logic component compares the sensor values with one or more thresholds (such as those stored in the programmable configuration and status registers). In some designs, the control flow of method 400 returns to block 402, where the logic component monitors sensor data, rather than moving to block 408. The design choice depends on the frequency of updating the thresholds in the programmable configuration and status registers.

[0062] If the logic component determines that the thresholds have not been exceeded (the "no" branch of decision block 410), the control flow of method 400 returns to decision block 402, where the logic component monitors sensor data. If the logic component determines that one or more thresholds have been exceeded (the "yes" branch of decision block 410), the logic component groups the sensor value with any other sensor values eligible for reporting (block 412). As previously described, in one implementation, the logic component packs multiple sensor data into data packets for transmission. After that, the logic component sends the sensor value and any other eligible sensor values to the power management unit (block 414).

[0063] Reference Figure 5 shows a general flowchart of one implementation of method 500 for efficiently reporting sensor data from multiple sources. The logic component in the power management unit generates one or more updated operating states and operating modes and sends them to the processing unit in the computing system. The processing unit is an agent or endpoint in the computing system. The processing unit is also a source of sensor data. To determine the operating states and operating modes of the functional blocks within the source, the logic component implemented by hardware and / or software in the power management unit uses sensor data from the processing unit. The logic component in the power management unit receives sensor values (block 502).

[0064] In some embodiments, the power management unit receives one or more qualified sensor values in a posted write transaction from a source. Instead of using an unposted read transaction sent by the power management unit 110, sensor data is collected via a posted write transaction from the source. The use of an unposted read transaction creates two transactions to be routed through an interconnect or communication fabric between the power management unit and a given source. In contrast, the use of a posted write transaction creates a single transaction to be routed through an interconnect or communication fabric between the power management unit and a given source.

[0065] Logic components in the power management unit identify a storage location in the dashboard based on the source of the sensor value (block 504). The dashboard is a data storage device implemented using one or more of registers, latches, random access memory (RAM) cells, and content addressable memory (CAM) cells. In one embodiment, dashboard entries are allocated among multiple sources. For example, the logic components determine a specific offset based on the source. In other embodiments, the logic components identify a storage location in the dashboard based on other criteria and storage arrangements as previously described for logic components 230 and dashboard 220 ( Figure 2 ).

[0066] In one embodiment, the logic components determine the age of the received sensor value (block 506). In some embodiments, the logic components begin updating the age of the sensor value, such as updating an age counter each clock cycle. The age counter is stored in a dashboard entry, table, programmable configuration and status register, or elsewhere. In other embodiments, the logic components capture or otherwise sample a copy of a timestamp counter. In one embodiment, the logic components store the sensor value and age indication in the identified storage location in the dashboard (block 508). When using a timestamp instead of updating the age, the logic components of the power management unit ensure that the sensor value and timestamp are stored in the dashboard simultaneously, such as in the same clock cycle. Otherwise, if an interrupt occurs between storing the sensor value and the timestamp, the stored timestamp no longer corresponds to the sensor value. In one embodiment, the logic components use an atomic load pair operation to read each of the sensor value and timestamp together before writing these values into a dashboard entry.

[0067] If the logic component determines that the time to process the stored sensor value has not been reached (the "no" branch of conditional block 510), the control flow of method 500 remains at conditional block 510. The logic component in the power management unit uses the age, a priority scheme using various criteria, timestamps, etc., to determine when to process a particular sensor value stored in the dashboard. If the logic component determines that the time to process the stored sensor value has been reached (the "yes" branch of conditional block 510), the logic component updates one or more operating modes and / or operating states based on the sensor value (block 512). In some embodiments, the update is also based on the age of the sensor value. In one example, a scaling factor is used to scale the amount of the update based on a combination of the sensor value and the age of the sensor value. For example, in one embodiment, a younger sensor value causes a greater update than an older sensor value with the same value. After that, the logic component sends the updated one or more operating modes and / or states to the corresponding agent or endpoint (block 514). In some embodiments, the logic component compares an age indication of the sensor value with a threshold. In one embodiment, if the logic component determines that the age indication has exceeded the threshold, the logic component discards the sensor value. For example, the power management unit has not received an updated sensor value to overwrite the current sensor value in the identified dashboard entry, and the corresponding age of the current sensor value exceeds the age threshold. In some embodiments, the logic component uses the age instead of the timestamp to determine whether the sensor value has "aged".

[0068] In one embodiment, when the logic component determines that the time to process the stored sensor value has been reached, the logic component compares the age indication of the sensor value with a threshold, and if the age indication has not exceeded the threshold, the logic component determines that the sensor value has not "aged". Thus, the logic component updates one or more operating modes and / or operating states based on the sensor value. In other embodiments, the logic component does not use the comparison with the age threshold and performs the steps described above for blocks 510 - 514.

[0069] Reference Figure 6 , a general flowchart of one embodiment of a method 600 for efficiently reporting sensor data of multiple processing units is shown. The logic component in the power management unit generates one or more updated operating states and operating modes and sends them to the source of the sensor data in the computing system. The logic component receives the sensor value (block 602). The logic component identifies a given source of the sensor value (block 604).

[0070] If the logic component determines that an event is occurring in a given source (the "yes" branch of conditional block 606), the logic component sends one or more updated thresholds to the source to cause more frequent reporting of sensor values (block 608). Determining that an event is occurring in a given source can be equivalent to determining that the behavior of the given source is changing, as measured by comparing the received sensor values to one or more thresholds stored in a programmable configuration and status register. In one example, determining that the behavior of a given source is changing includes determining whether the duration between receiving a given sensor value and receiving a previous value of the given sensor value exceeds a duration threshold, where the duration threshold is separate from the age threshold used for comparison with the dashboard entry age. In a second example, determining that the behavior of a given source is changing includes determining that the change between a given sensor value and a previous value of the given sensor value exceeds a first change threshold. In one implementation, the first change threshold is a maximum change threshold.

[0071] In another example, if a given source has become idle, although the operating mode indicates otherwise, the given source may not have sent sensor data for a duration longer than a threshold. The failure to meet the expectation indicates an event. Additionally, in another example, the filtering logic component in the eligibility reporter of the given source has not determined that the sensor data exceeds a corresponding threshold. However, now, when the given source transitions to an active mode or an active mode with a higher performance operating state or transitions to the same active mode, but the workload has recently increased, the given source has started sending sensor data that its filtering logic component in the eligibility reporter has found to exceed the corresponding threshold. In response to detecting these conditions based on a comparison of the received sensor data and age indication with the threshold, the logic component in the power management unit sends a lower threshold to the given source to continue receiving sensor data from the given source or to cause more frequent reporting of sensor values. For example, in many cases, the algorithms used by the logic component in the power management unit rely on periodic updates of the sensor data to update the operating mode and operating state. To maintain the efficiency and ease of use of these algorithms, the logic component in the power management unit reduces the sensor data threshold in order to maintain periodic updates of the sensor data from the given source.

[0072] The logic component sends one or more updated operating modes and / or states to the corresponding source of the sensor value based on the received sensor value (block 610). If the logic component determines that an event for a given source has been completed (the "yes" branch of conditional block 612), the logic component sends one or more updated thresholds to the source to cause the sensor value to be reported less frequently (block 614). For example, if a given source is already active, the given source may have been sending sensor data regularly, such as at a frequency corresponding to a given sampling interval. The filtering logic component in the eligibility reporter for the given source has determined that the sensor data exceeds the corresponding threshold. If the logic component in the power management unit has determined that there has been no change in the sensor data reported over a particular duration that exceeds a change threshold, the logic component sends a higher threshold to the given source to cause the sensor data to be reported less frequently. In various designs, programmable configuration and status registers store thresholds corresponding to the duration of sensor data change and non-detection of change. If the logic component determines that an event for a given source has not been completed (the "no" branch of conditional block 612), the logic component continues to update one or more operating modes and / or states to the corresponding source of the sensor value based on the received sensor value (block 616).

[0073] Reference Figure 7 , shows a generalized block diagram of one embodiment of a computing system 700. In the illustrated embodiment, the interconnect 740 routes messages, transactions, and data between the power management unit 710, agents 720 - 730, endpoints 740 - 750, and memory controller 770. In some embodiments, the interconnect 740 is a communication fabric (or fabric). Similar to computing systems 100 and 200, in various embodiments, the computing system 700 is a system-on-chip (SoC) that includes multiple types of integrated circuits on a single semiconductor die, each integrated circuit providing an independent function. In some embodiments, the computing system 700 is also referred to as an application-specific integrated circuit (ASIC) or device. In other embodiments, the agents 720 - 730 and endpoints 750 - 760 are separate dies within a package such as a multi-chip module (MCM). In still other embodiments, the agents 720 - 730, endpoints 750 - 760, power management unit 710, and memory controller 770 are separate dies or chips on a printed circuit board.

[0074] For ease of illustration, Figure 7 a clock source, such as a phase-locked loop (PLL), interrupt controller, etc., is not shown in. It should also be noted that the number of components of the computing system 700 can vary depending on the embodiment. In other embodiments, the number of each component is more or less than that shown in the computing system 700. Similar to ( Figure 1Sources 140 and 170. In one embodiment, each of agents 720 - 730 is a processor complex. In some embodiments, the components within agent 720 are similar to the components within agent 710. In other embodiments, the components within agent 720 are designed for lower power consumption and thus include control logic components and processing capabilities that result in lower performance. In such embodiments, the supported clock frequency is less than the supported clock frequency within agent 710. Additionally, one or more of the processor cores within agent 720 include a smaller number of execution pipelines and / or functional blocks for handling relatively high power consumption instructions than are supported by the processor cores within agent 710.

[0075] In various embodiments, agents 720 - 730 and endpoints 750 - 760 transfer commands and data to each other and to power management unit 710 and memory controller 770 via interconnect 740. In some embodiments, interconnect 740 includes multiple levels of fabric multiplexers (or multiplexers). In such embodiments, agents 720 - 730, endpoints 750 - 760, power management unit 710, and memory controller 770 include fabric interface units. Different types of messages, transactions, and data flow through the fabric independently. In some embodiments, the communication fabric uses a single physical fabric bus to include multiple overlapping virtual channels or dedicated source and destination buffers to enable independent flow, with each virtual channel carrying a different type of traffic. Each channel performs flow control independently, without relying on transactions in different channels. In other embodiments, the communication fabric is packet - based and may be hierarchical, with bridges, cross - switches, point - to - point, or other interconnects.

[0076] In various embodiments, interconnect 740 uses one or more bus protocols to transfer commands and data, enforce ordering between transactions with specific transaction types, and ensure cache coherence between different agents 720 - 730, endpoints 750 - 760, and memory controller 770. The supported communication protocols determine the allowable transfer sizes, the supported burst transfer sizes, the supported directions of simultaneous transfers, the allowable number of outstanding requests when sending more requests, support for out - of - order completion, the supported clock domains, the supported interrupt mechanisms, etc.

[0077] Endpoints 750-760 represent any number and type of components coupled to interconnect 730. For example, in some embodiments, endpoints 750-760 include one or more cameras, flash controllers, display controllers, media controllers, graphics units, communication interfaces such as radio communication interfaces, and / or other devices. Endpoints 750-760 also represent any number of input / output (I / O) interfaces or devices and provide an interface to any type of peripheral device that implements any hardware function included in computing system 700. For example, in one embodiment, any one of endpoints 750-760 is coupled to an audio peripheral device such as a microphone, speaker, interface to a microphone and speaker, audio processor, digital signal processor, mixer, etc. Other I / O devices include interface controllers for various interfaces external to computing system 700, including interfaces such as Universal Serial Bus (USB), Peripheral Component Interconnect (PCI) including PCI Express (PCIe), serial and parallel ports, General Purpose I / O (GPIO), Universal Asynchronous Receiver / Transmitter (UART), FireWire interface, Ethernet interface, Analog-to-Digital Converter (ADC), Digital-to-Analog Converter (DAC), etc. Other I / O devices include networking peripheral devices such as a Media Access Controller (MAC).

[0078] In yet other embodiments, one or more of endpoints 750-760 include a memory controller for interfacing with system memory or a separate memory such as a portable flash memory device. As shown, memory controller 770 is used to interface with system memory 772. Memory controller 770 includes any number of memory ports, generates appropriate clocks to memory devices, and interfaces to system memory 772. System memory 772 includes one or more of Dynamic Random Access Memory (DRAM) such as Synchronous DRAM (SDRAM) (including mobile versions of SDRAM such as mDDR3, etc. and / or low power versions of SDRAM such as LPDDR4, etc.), RAMBUS DRAM (RDRAM), Double Data Rate (DDR) SDRAM, DDR2 SDRAM, Rambus DRAM (RDRAM), Static RAM (SRAM), GDDR4 (Graphics Double Data Rate, version 4) SDRAM, GDDR5 (Graphics Double Data Rate, version 5) SDRAM, etc.

[0079] In various embodiments, one or more of agents 720 - 730, endpoints 750 - 760, and memory controller 770 use sensors and screening logic components such as eligibility reporters. For example, agent 720 uses sensor 724 and eligibility reporter 726. Similarly, agent 730 uses sensor 734 and eligibility reporter 736. Endpoints 750 - 760 use sensors 754 - 764 and eligibility reporters 756 - 766, while memory controller 770 uses sensor 774 and eligibility reporter 776. Although a single sensor and corresponding eligibility reporter are shown in each of agents 720 - 730, endpoints 740 - 750, and memory controller 770, other numbers of sensors and eligibility reporters are possible and contemplated. For ease of illustration, the configuration and status registers for storing thresholds are not shown. In various embodiments, the functions of sensors 724 - 774 and eligibility reporters 726 - 776 are equivalent to those of sensors 150 - 152 and eligibility reporters 160 - 162( Figure 1 ).

[0080] In various embodiments, power management unit 710 controls the power voltage magnitudes and operating clock frequencies of agents 720 - 730, endpoints 740 - 750, and memory controller 770 based on received and qualified sensor data. Power management unit 710 includes dashboard 714, report guidance logic 712, and control and status register (CSR) 716, which have equivalent functions to dashboard 220, report guidance logic 234, and control and status register (CSR) 232( Figure 2 ). Although not shown, in various embodiments, power management unit 710 also includes a power manager logic having functions equivalent to those of power manager logic 230( Figure 2 ).

[0081] In the illustrated embodiment, there is a power voltage indicated as V 组合体 for each of agents 720 - 730, a power voltage indicated as V 端点 for each of endpoints 740 - 750, and a power voltage indicated as V 存储器 for memory controller 770. Additionally, for each of agents 720 - 730, endpoints 740 - 750, and memory controller 770, there is a clock frequency Freq 时钟域。In some embodiments, there may be multiple power supply voltages for other components of computing system 700 that are not shown. In various embodiments, each of agents 720-730, endpoints 740-750, and memory controller 770 is capable of operating at a different power supply voltage from a different power plane. In other embodiments, one or more of agents 720-730, endpoints 740-750, and memory controller 770 operate at the same power supply voltage from a single power plane while also operating at different clock frequencies from different clock domains.

[0082] In some embodiments, sensors 724-774 sample data using the same sampling interval and / or the screening logic components of qualification reporters 726-776 perform comparisons using the same sampling interval. Similar to computing system 100, in still other embodiments, although different clock domains and operating clock frequencies are used, the logic components in agents 720-730, endpoints 750-760, and memory controller 770 use the same sampling interval to sample data. For example, in some designs, agents 720-730, endpoints 750-760, and memory controller 770 use a "global time synchronization sampling interval" where the system sampling clock edges are aligned within a time threshold such as a few microseconds. Computing system 700 supports a global time synchronization sampling interval in cases where sensor data is aggregated on the system to update control parameters. Examples of aggregated sensor data are the amount of energy consumed and the amount of data transmitted, such as the amount of bandwidth.

[0083] Turning next to Figure 8 , a block diagram of one embodiment of system 800 is shown. As shown, system 800 represents chips, circuits, components, etc. of a desktop computer 810, laptop computer 820, tablet computer 830, mobile phone or cellular phone 840, television 850 (or set-top box coupled to a television), watch or other wearable item 860, etc. Other devices are possible and contemplated. In the illustrated embodiment, system 800 includes at least one instance of a system-on-chip (SoC) 806 that includes multiple processors and a communication fabric. In some embodiments, SoC 806 includes a computing system, such as computing system 100 ( Figure 1 ), computing system 200 ( Figure 2 ) and computing system 700 ( Figure 7 ). In various embodiments, SoC 806 is coupled to external memory 802, peripherals 804, and power supply 808.

[0084] Power supply 808 provides a power supply voltage to SoC 806 and one or more power supply voltages to memory 802 and / or peripherals 804. In various embodiments, power supply 808 represents a battery (e.g., a rechargeable battery in a smart phone, laptop, or tablet). In some embodiments, there are more than one instance of SoC 806 (and also more than one external memory 802).

[0085] Memory 802 is any type of memory, such as dynamic random access memory (DRAM), synchronous DRAM (SDRAM), double data rate (DDR, DDR2, DDR3, etc.) SDRAM (including mobile versions of SDRAM, such as mDDR3, etc., and / or low-power versions of SDRAM, such as LPDDR2, etc.), RAMBUS DRAM (RDRAM), static RAM (SRAM), etc. One or more memory devices are coupled to a circuit board to form a memory module, such as a single in-line memory module (SIMM), dual in-line memory module (DIMM), etc. Alternatively, the device can be mounted with the SoC or integrated circuit in a chip-on-chip configuration, a package-on-package configuration, or a multi-chip module configuration.

[0086] Depending on the type of system 800, peripherals 804 include any desired circuitry. For example, in one embodiment, peripherals 804 include devices for various types of wireless communication, such as Wi-Fi, Bluetooth, cellular, global positioning system, etc. In some embodiments, peripherals 804 also include additional storage devices, including RAM storage devices, solid-state storage devices, or disk storage devices. Peripherals 804 include user interface devices such as a display screen, including a touch display screen or a multi-touch display screen, a keyboard or other input device, a microphone, a speaker, etc.

[0087] In various embodiments, program instructions of a software application can be used to implement the previously described methods and / or mechanisms. The program instructions describe the behavior of the hardware in a high-level programming language (such as C). Alternatively, a hardware design language (HDL), such as Verilog, is used. The program instructions are stored on a non-transitory computer-readable storage medium. Many types of storage media are available. The storage medium is accessed by a computer during use to provide the program instructions and accompanying data to the computer for program execution. In some embodiments, a synthesis tool reads the program instructions to generate a netlist including a list of gates from a synthesis library.

[0088] It should be emphasized that the above-described embodiments are merely non-limiting examples of specific implementations. Once the above disclosure is fully understood, many variations and modifications will become obvious to those skilled in the art. The present disclosure is intended that the following claims be interpreted to cover all such variations and modifications.

Claims

1. A power management unit, comprising: Report guiding logic component; Wherein in response to receiving a given sensor value from a source, the report guiding logic component is configured to: Store the given sensor value and an age indication of the given sensor value; and In response to determining that the behavior of the source is changing, communicate a sensor threshold to the source, wherein the sensor threshold is to be compared with the sensor value to determine whether the source should report sensor data, and the sensor threshold is associated with the frequency at which the source reports sensor data and is different from a previous sensor threshold used by the source.

2. The power management unit according to claim 1, wherein determining that the behavior of the source is changing includes determining that a duration exceeds a duration threshold, where the duration is the amount of time elapsed between the power management unit receiving the given sensor value and the power management unit receiving a previous value of the given sensor value.

3. The power management unit according to claim 1, wherein the reporting guidance logic component is further configured to send one or more updated sensor thresholds to the source, the one or more updated sensor thresholds having values smaller than corresponding one or more sensor thresholds currently in the source.

4. The power management unit according to claim 1, wherein determining that the behavior of the source is changing further includes determining that the difference between the given sensor value from the source and a previous sensor value exceeds a threshold.

5. The power management unit according to claim 1, wherein determining that the behavior of the source is changing includes determining that the difference between the given sensor value from the source and a previous sensor value is less than a threshold.

6. The power management unit according to claim 1, wherein the reporting guidance logic component is further configured to send one or more updated sensor thresholds to the source, the one or more updated sensor thresholds having values greater than corresponding one or more sensor thresholds currently in the source.

7. The power management unit according to claim 1, further comprising: A dashboard including a plurality of entries configured to store sensor data corresponding to different sources; And A power management logic component configured to: Determine a time to process the content in the identified entries stored in the plurality of entries; And In response to determining that the age indication of the given sensor value exceeds an age threshold, Discard the given sensor value.

8. The power management unit according to claim 7, wherein the power manager logic component is further configured to update one or more operating modes and operating states based on the given sensor value in response to the following conditions: Determining that the stored age indication of the given sensor value does not exceed an age threshold; and Determining that the time for processing the content stored in the identified entry has elapsed.

9. The power management unit according to claim 1, wherein the reporting guidance logic component is further configured to receive the given sensor value by receiving a posted write transaction.

10. A method, comprising: Communicate with multiple sources of sensor data through the report guiding logic component in the power management unit; Wherein in response to receiving a given sensor value from a source among the multiple sources by the report guiding logic component: The report guiding logic component stores the given sensor value and the age indication of the given sensor value in an identified entry among the plurality of entries of the dashboard; And In response to determining that an event is occurring in the source from the given sensor value: The report guiding logic component updates one or more operating modes and operating states of the multiple sources based on the given sensor value and the age of the given sensor value; And The report guiding logic component communicates one or more updated operating modes and operating states to the multiple sources.

11. The method according to claim 10, further comprising scaling an update amount of the one or more operating modes and operating states based on the age of the given sensor value.

12. The method according to claim 11, wherein scaling the update amount includes using a greater update for the one or more operating modes and operating states when the age of the given sensor value is young compared to an update used when the age of the given sensor value is old.

13. The method according to claim 10, further comprising communicating a sensor threshold to the source in response to determining that the event has been completed, such that at least the given sensor value is reported less frequently.

14. The method according to claim 13, wherein determining that the event has been completed includes determining that the given sensor value from the source has not changed over a duration exceeding a duration threshold, wherein the duration is an amount of time elapsed between when the power management unit receives the given sensor value and when the power management unit received a previous value of the given sensor value.

15. A system, comprising: A dashboard, the dashboard including a plurality of entries, the plurality of entries including one or more entries configured to store sensor data corresponding to a source of sensor data, wherein the report guiding logic component is configured to store a given sensor value and an age indication of the given sensor value in an identified entry among the plurality of entries of the dashboard; And The power management unit according to any one of claims 1 to 9.

Citation Information

Patent Citations

  • Health wearable that automatically changes sensor reading timings

    US20180113498A1