Input / output discontinuous wake-up alignment

By introducing an urgency mechanism and a synchronization mechanism for requesting scheduling services in the multi-client computing system, the problem of increased power consumption in the multi-client computing system is solved, and more efficient power management is achieved.

CN119422133APending Publication Date: 2025-02-11ADVANCED MICRO DEVICES INC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380047808.2
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-06-29
Filing Date
2023-05-04
Publication Date
2025-02-11

AI Technical Summary

Technical Problem

The increased power consumption of modern integrated circuits leads to an increase in cooling system costs, and multi-client computing systems frequently switch active and idle states when service requests, increasing power consumption.

Method used

By introducing an urgency mechanism in a multi-client computing system, instructions are passed between clients to synchronize request processing and maintain the duration of request scheduling services in shared resources to reduce the wake-up and sleep frequency of shared resources.

Benefits of technology

The power consumption of multi-client computing systems is effectively managed, reducing the total power consumption of the system, and reducing the demand for cooling systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119422133A_ABST
    Figure CN119422133A_ABST
Patent Text Reader

Abstract

An apparatus and method for efficiently performing power management of a multi-client computing system. In various implementations, a computing system includes a plurality of clients that process tasks corresponding to applications. The client stores the generated request of the particular type while processing the task. A client receives an indication that another client is serving a particular type of request. In response to receiving the indication, the client inserts a first degree of urgency in one or more stored particular types of requests prior to transmitting the requests for service. When the client determines that the particular time interval has elapsed, the client transmits an indication to other clients that specifies that the particular type of request is being served. The client also inserts a second degree of urgency, different from the first degree of urgency, in the one or more stored requests of the particular type prior to transmitting the requests for service.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Description of Related Technology

[0002] With the development of each generation of semiconductor chips, the power consumption of modern integrated circuits (ICs) has become an increasingly prominent design issue. As power consumption increases, more expensive cooling systems (such as larger fans and heat sinks) must be used to remove excess heat and prevent IC failure. However, cooling systems increase system costs. IC power dissipation constraints are not only a problem for portable computers and mobile communication devices, but also a problem for desktop computers and servers that utilize high-performance microprocessors. These microprocessors include multiple processor cores or multiple cores and multiple pipelines within the core.

[0003] Various computing devices (such as various servers) utilize heterogeneous integration, which integrates multiple types of ICs for providing system functionality. Each of these multiple types of ICs is referred to as a "client". The multiple functions provided by multiple clients include: audio / video (A / V) data processing; other high data parallel applications for medical and commercial fields; processing instructions of a general instruction set architecture (ISA); digital, analog, mixed signal and radio frequency (RF) functions, etc. There are various options for system packaging to integrate these multiple types of ICs. In some computing devices, a system on a chip (SOC) is used, while in other computing devices, smaller and higher-yield chips are packaged as large chips in a multi-chip module (MCM). Although multiple clients of a computing device provide more functionality, these multiple clients are also multiple service request sources targeting shared resources. In order to serve these requests, a lot of time is spent and a lot of power is consumed.

[0004] In light of the foregoing, there exists a need for efficient methods and systems for performing efficient power management for multi-client computing systems. BRIEF DESCRIPTION OF THE DRAWINGS

[0005] Figure 1 is a generalized block diagram of a computing system that performs power management for multiple clients.

[0006] Figure 2 is a generalized block diagram illustrating a timing diagram of a time period during which multiple clients in a computing system transmit generated requests of a particular type to a shared resource.

[0007] Figure 3 is a generalized block diagram of a table storing information used to perform power management for multiple clients.

[0008] Figure 4 is a generalized block diagram of a method 400 for efficiently performing power management of a multi-client computing system.

[0009] Although the present invention is susceptible to various modifications and alternative forms, specific implementations are shown by way of example in the drawings and described in detail herein. However, it should be understood that the drawings and detailed description thereof are not intended to limit the invention to the specific forms disclosed, but on the contrary, the invention is to cover all modifications, equivalents and alternatives within the scope of the invention defined by the appended claims. DETAILED DESCRIPTION

[0010] In the following description, many specific details are set forth to provide a thorough understanding of the present invention. However, it will be appreciated by those of ordinary skill in the art that the present invention may be practiced without these specific details. In some cases, well-known circuits, structures, and techniques are not shown in detail to avoid obscuring the present invention. In addition, it should be understood that for simplicity and clarity of illustration, the elements shown in the figures are not necessarily drawn to scale. For example, the size of some elements is enlarged relative to other elements.

[0011] Apparatus and methods for efficiently performing efficient power management for a multi-client computing system are contemplated. In various specific implementations, a computing system includes a memory storing one or more applications of a workload and multiple clients processing tasks corresponding to the one or more applications. As used herein, a "client" refers to an integrated circuit having data processing circuitry and local memory, the integrated circuit having tasks assigned to the integrated circuit by a scheduler such as an operating system scheduler. Examples of clients are a general-purpose central processing unit (CPU), a parallel data processing engine having a relatively wide single instruction multiple data (SIMD) microarchitecture, a multimedia engine, one of multiple types of application-specific integrated circuits (ASICs), a digital signal processor (DSP), a display controller, a field programmable gate array (FPGA), and the like.

[0012] While processing the tasks of the workload, the client stores the generated requests of a specific type in a data storage area. Examples of data storage areas are tables or queues, first-in-first-out (FIFO) buffers, a set of flip-flop circuits, etc. An example of a specific type of request generated is a system memory request, which is serviced by a system memory controller that communicates with the system memory of the computing system. Another example of a specific type of request generated is an interrupt service request, which is serviced by a specific processor core that executes a kernel of an operating system and is capable of executing multiple interrupt service routines (ISRs). In some specific implementations, the specific processor core is a general core of a general-purpose central processing unit (CPU).

[0013] A specific client among multiple clients receives an indication that specifies that at least another client among multiple clients is serving a specific type of request by a shared resource. Although the indication may also specify that another client is serving a specific type of request by a shared resource, the shared resource has not yet started serving these requests. For example, another client transmits a request to a shared resource and transmits an indication to a specific client within a relatively short period of time. In some specific implementations, the indication is a sideband signal transmitted directly between two clients, or a sideband signal transmitted in a forwarding manner with other clients used as communication jumps. In a specific implementation, another client transmits a request to a shared resource before transmitting a sideband signal to a specific client, but the sideband signal arrives at the specific client before the shared resource receives the request or before the shared resource starts serving the request. Therefore, the indication specifies that another client serves a specific type of request. Although a shared resource may have served these requests of other clients, the shared resource is not a necessary meaning of the indication. In other specific implementations, the indication is a message within a packet transmitted by a communication structure. In response to receiving the indication, the specific client inserts a first urgency in one or more stored requests of a specific type. The particular client inserts the first urgency level prior to transmitting one or more stored requests of a given type for servicing.

[0014] The urgency provides an indication of the expected amount of time to service a corresponding request of a particular type. In some implementations, the urgency can be one or more bits inserted in a request, the value provided by the request being a combination of one or more of a priority level, a quality of service (QoS) level, an indication of an application type such as a real-time application, and the like.

[0015] One or more of the multiple clients also maintain the duration between scheduled services of requests of a specific type. In some specific implementations, a value corresponding to a time threshold or time interval is stored in a configuration register. A specific client counts clock cycles, or measures the time since the last scheduled service of a specific type of request. The specific client compares the measured duration with the time interval, and if the measured duration exceeds the time interval, the specific client transmits an indication to one or more other clients of the multiple clients that the specific type of request is being served by the shared resource. The specific client also inserts a second urgency different from the first urgency in one or more stored requests of a specific type. The specific client inserts the second urgency before transmitting one or more stored requests of a given type for service. In a specific implementation, the second urgency indicates an urgency higher than the first urgency. Further details of efficiently performing efficient power management on a multi-client computing system are provided in the following discussion.

[0016] refer to Figure 1 , shows a generalized block diagram of a computing system 100 that performs power management for multiple clients. Computing system 100 includes a semiconductor chip 110 and a system memory 130. Semiconductor chip 110 (or chip 110) includes multiple types of integrated circuits. For example, chip 110 includes at least multiple processor cores (or multiple cores), such as the core within processing unit 150 and cores 112 and 116 of processing units (or multiple units) 115 and 119. There are multiple options for placing the circuits of chip 110 in a system package to integrate multiple types of integrated circuits. Some examples are system on chip (SOC), multi-chip module (MCM), and system-in-package (SiP). For ease of explanation, Figure 1 Not shown are clock sources, such as a phase-locked loop (PLL), an interrupt controller, a power controller, an interface for input / output (I / O) devices, etc.

[0017] In various implementations, units 115, 119, and 150 are multiple clients in chip 110. As used herein, a "client" refers to an integrated circuit having data processing circuitry and local memory, the integrated circuit having tasks assigned to the integrated circuit by a scheduler such as an operating system scheduler. Examples of clients are a general-purpose central processing unit (CPU), a parallel data processing engine having a relatively wide single instruction multiple data (SIMD) microarchitecture, a multimedia engine, one of a variety of types of application-specific integrated circuits (ASICs), a digital signal processor (DSP), a field-programmable gate array (FPGA), etc.

[0018] Chip 110 includes a system memory controller 120 that communicates with system memory 130. Chip 110 also includes interface logic 140, processing units (units) 115 and 119, communication fabric 160, shared cache memory subsystem 170, and processing unit 150. The processing unit 115 includes a core 112 and a corresponding cache memory subsystem 114. The processing unit 119 includes a core 116 and a corresponding local memory 118. Although a single core is shown in each of the units 115 and 119, in other implementations, another number of cores are used. System memory 130 is shown to include operating system code 132. Note that various portions of operating system code 132 may reside in system memory 130, in cache 114, stored on a non-volatile storage device such as a hard disk (not shown), etc. In a specific implementation, the illustrated functionality of chip 110 is combined on a single integrated circuit.

[0019] Although three clients (units 115, 119, and 150) are shown, it is possible that chip 110 includes another number of clients. In various implementations, cores 112 and 116 are capable of executing one or more threads and share at least the shared cache memory subsystem 170, processing unit 150, and coupled input / output (I / O) devices connected to interface logic 140 (or interface 140). In some implementations, units 115, 119, and 150 use different microarchitectures.

[0020] The hardware (such as circuits) of a specific core among the multiple cores in chip 110 executes the instructions of the operating system. In a specific implementation, core 112 is a general-purpose core and unit 115 is a general-purpose CPU. In various specific implementations, system memory controller 120 services system memory requests generated by multiple clients (units 115, 119, and 150), and core 112 services interrupt service requests generated by multiple clients (units 119 and 150). System memory controller 120 and core 112 are examples of shared resources that service specific types of requests from multiple clients.

[0021] While processing the tasks of the workload, the client (the kernel in units 115, 119, and 150) stores the generated requests of a specific type in a data storage area. Examples of data storage areas are tables or queues, first-in-first-out (FIFO) buffers, a set of flip-flop circuits, and the like. Examples of generated requests of a specific type transmitted to a shared resource are system memory requests and interrupt service requests. The shared resource is a corresponding component (e.g., one of the system memory controller 120, kernel 112) that services requests of a specific type transmitted from multiple clients to the shared resource. A specific client such as kernel 116 in unit 119 receives an indication that specifies that at least another client (a kernel in units 115, 119, and 150) will service a request of a specific type. For example, one or more kernels of units 115, 119, and 150 have transmitted a request of a specific type to the shared resource or are currently transmitting a request of a specific type to the shared resource for service. In some specific implementations, the indication is a sideband signal transmitted directly between the two clients, or a sideband signal transmitted in a forwarding manner with other clients used as communication jumps. In other specific implementations, the indication is a message within a packet transmitted through the communication structure 160. The indication acts as an input / output (I / O) stutter prompt that communicates to multiple clients that there is an opportunity to synchronize the processing of requests of a particular type. In response to receiving the indication, the particular client (kernel 116) inserts a first urgency in one or more stored requests of the particular type. The kernel 116 inserts the first urgency before transmitting the one or more stored requests of a given type to the shared resource for servicing.

[0022] The urgency provides an indication of the expected amount of time to service a corresponding request of a particular type. In some implementations, the urgency can be one or more bits inserted in a request, the value provided by the request being a combination of one or more of a priority level, a quality of service (QoS) level, an indication of an application type such as a real-time application, etc. One or more of the plurality of clients (kernels in units 115, 119, and 150) also maintains a duration between scheduled services of requests of a particular type. In some implementations, a value corresponding to a time threshold or time interval is stored in a configuration register.

[0023] A specific client (kernel 116) counts clock cycles, or measures the time since the last scheduled service of a specific type of request. Kernel 116 compares the measured duration with the time interval, and if the measured duration exceeds the time interval, kernel 116 transmits an indication to one or more other clients (kernels in units 115, 119, and 150) that a specific type of request is being served by a corresponding shared resource. In some specific implementations, the indication is a sideband signal transmitted directly between two clients, or a sideband signal transmitted in a forwarding manner with other clients used as communication jumps. In other specific implementations, the indication is a message within a packet transmitted through communication structure 160. Kernel 116 also inserts a second urgency different from the first urgency in one or more stored requests of a specific type. Kernel 116 inserts the second urgency before transmitting one or more stored requests of a given type to a shared resource for service. In a specific implementation, the second urgency indicates an urgency higher than the first urgency.

[0024] In some specific implementations, kernel 116 also adds a second condition to determine that the measured duration exceeds the above-mentioned first condition for limiting the time interval for transmitting a specific type of request to a shared resource and transmitting an indication to other clients. In a specific implementation, the second condition is to determine that the number of pending requests of the specific type exceeds a threshold number. If the number of pending requests of the specific type does not exceed the threshold number, kernel 116 does not transmit the pending request of the specific type to the shared resource, and does not transmit an indication to other clients. The shared resource that can be in an idle state remains in an idle state. Therefore, the power consumption of the computing system is reduced. Before continuing to efficiently dispatch tasks to multiple kernels supporting heterogeneous computing architectures in a dynamic manner, a further description of the components of computing system 100 is provided.

[0025] The interface 140 generally provides an interface to the shared cache memory subsystem 170 and the processing unit 115 for various types of input / output (I / O) devices external to the chip 110. Typically, the interface logic 140 includes a buffer for receiving packets from the corresponding link and for buffering packets to be transmitted on the corresponding link. Any suitable flow control mechanism can be used to transmit packets to and from the chip 110. The system memory 130 can be used as the system memory of the chip 110 and includes any suitable memory device, such as one or more RAMBUS dynamic random access memory (DRAM), synchronous DRAM (SDRAM), DRAM, static RAM, etc.

[0026] The address space of chip 110 is divided into multiple memories corresponding to multiple cores. In a specific implementation, the consistency point of the address is the system memory controller 120, which communicates with the memory storing the bytes corresponding to the address. The system memory controller 120 includes control circuits for handing over to the memory and request queues for queuing memory requests. Generally speaking, the communication structure 160 responds to control packets received on the link of interface 140, generates control packets in response to cores 112 and 116 and / or cache memory subsystems 114 and 118, generates probe commands and response packets in response to transactions selected by the system memory controller 120 for service, and routes packets to other nodes through interface logic 140. The communication structure supports multiple packet transmission protocols and includes one or more system buses, packet processing circuits and packet selection arbitration logic, and queues for storing requests, responses, and messages.

[0027] The cache memory subsystem 114 includes a relatively high-speed cache memory for storing data blocks. The cache memory subsystem 114 can be integrated into the corresponding high-performance core 112. Alternatively, as needed, the cache memory subsystem 114 is connected to the high-performance core 112 in a backside cache configuration or an inline configuration. The cache memory subsystem 114 can be implemented as a hierarchical structure of caches. In a specific implementation, the cache memory subsystem 114 represents an L2 cache structure, and the shared cache subsystem 170 represents an L3 cache structure. The local memory 118 can be implemented in any of the above-mentioned ways described for the cache memory subsystem 114, as a local data storage repository or other.

[0028] Now go to Figure 2, a generalized block diagram of a timing diagram 200 is shown, which shows a time period during which multiple clients in a computing system transmit generated requests of a specific type to a shared resource. The timing diagram 200 includes a time period 220 during which the client transmits a request of a specific type to a shared resource without synchronizing the processing of the request of the specific type. The timing diagram 200 also includes a time period 230 during which the client transmits a request of a specific type to a shared resource and synchronously processes the request of the specific type. Clients 210, 212, and 214 represent any type of client, such as the examples provided previously or other types of clients. As previously described, an example of a generated request of a specific type is a system memory request, which is serviced by a system memory controller that communicates with the system memory of the computing system. Another example of a generated request of a specific type is an interrupt service request, which is serviced by a specific processor core (e.g., a CPU core) that executes a kernel of an operating system and is capable of executing multiple interrupt service routines (ISRs). Therefore, the system memory controller and the specific processor core are examples of shared resources.

[0029] As time passes, a time period during which at least one client transmits a specific type of request to a shared resource is shown as box 204. As time passes, a time period during which no client transmits a specific type of request to a shared resource is shown as box 202. In time period 220, when clients 210, 212, and 214 transmit specific types of requests to a shared resource such as a system memory controller, these clients do not attempt to synchronize. The shared resource is a corresponding component (e.g., a system memory controller, a CPU core, one of others) that services specific types of requests transmitted from multiple clients to the shared resource. These specific types of requests are transmitted to the component during a time period indicated as time point t1 (or time t1) and time t2 to t11. When receiving a service request, a component (such as a shared resource of a system memory controller) may be in an operating mode corresponding to an idle power performance state (P state). The component consumes a large amount of time to transition to an operating mode corresponding to an active P state and performs the steps of servicing the received request.

[0030] Although multiple clients provide more functions, these multiple clients are also multiple service request sources. Sometimes, the service request comes from a single client among the multiple clients, such as during time t1 to t9. After the component (shared resource) service request, the component returns to the operating mode corresponding to the idle P state. However, soon after, the component receives more service requests, which may also come from a single client among the multiple clients, such as during time t2 to t9. The component again transitions to the operating mode corresponding to the active P state and performs the steps of serving the received request. It takes a lot of time to repeatedly wake up the components for serving requests from multiple clients. In addition, the corresponding components frequently transition between the active state (wake-up state) and the idle state (sleep state). Therefore, the computing system increases the power consumption of the components that repeatedly wake up to serve requests from multiple clients.

[0031] During time period 230, clients 210, 212, and 214 attempt to synchronize as they transmit requests of a particular type to a shared resource for service. For example, a particular client among a plurality of clients receives an indication that specifies that at least another client among a plurality of clients will have a request of a particular type serviced by a shared resource. As previously described, the indication specifies that another client will service a request of a particular type. Although the shared resource may have serviced these requests of other clients, the shared resource is not a necessary implication of the indication. In some implementations, the indication is a sideband signal transmitted directly between the two clients, or a sideband signal transmitted in a forwarded manner with other clients serving as communication jumps. In other implementations, the indication is a message within a packet transmitted via a communication structure. The plurality of clients also perform the previously described ( Figure 1 ) client of computing system 100 and ( Figure 4 400 of the upcoming method 400. As a result, the corresponding components (e.g., system memory controller, CPU core, etc.) transition less frequently between active states (wake-up states) and idle states (sleep states). As shown, these specific types of requests are transmitted to the components during time t20 to t25. As a result, the computing system reduces power consumption.

[0032] refer to Figure 3, a generalized block diagram of a table 300 storing information for performing power management on multiple clients and shared resources is shown. Table 300 includes multiple table entries (or multiple entries), each of which stores information in multiple fields such as at least fields 302-306. Table 300 is implemented using one of a flip-flop circuit, a random access memory (RAM), a content addressable memory (CAM), a first-in-first-out (FIFO) buffer, or others. Although specific information is shown as being stored in fields 302-306 in a specific sequential order, in other specific implementations, different orders are used and different amounts and types of information are stored. Here, two specific types of requests are managed, such as system memory requests (shown as direct memory access (DMA) requests) and interrupt service requests (shown as CPU requests).

[0033] As shown, fields 302 and 304 store bits corresponding to a binary truth table, which indicates that multiple clients are allowed to transmit a specific type of request to the corresponding shared resource. Field 306 stores steps supported by the information stored in fields 302-304. These steps include when to use an indication (sideband signal or other) that acts as an input / output (I / O) intermittent prompt, which allows multiple clients to operate in an I / O intermittent wake-up alignment state. The indication transmits an opportunity to synchronize the processing of a specific type of request between multiple clients. In some specific implementations, the term "urgent" refers to the urgency inserted in the service request when the client determines that the measured duration exceeds the time interval, and the term "non-urgent" refers to the urgency inserted in the service request when the client receives an indication that at least another client in a plurality of clients is being served by a shared resource. As previously described, the indication specifies that another client will serve a specific type of request. Although a shared resource may have served these requests of other clients, the shared resource is not a necessary meaning of the indication. In another specific implementation, the terms "urgent" and "non-urgent" have these definitions reversed. In yet another specific implementation, the terms "urgent" and "non-urgent" have other definitions based on design requirements.

[0034] In a specific implementation, each of the plurality of clients stores a copy of table 300 and uses the information in fields 302-306 to further determine when to transmit a particular type of request to the shared resource for servicing. The information stored in table 300 is used by the client in conjunction with other conditions, such as receiving an indication (sideband signal or other) from other clients, determining that a measured duration exceeds a time interval, determining that a number of pending requests of a particular type exceeds a threshold number, etc. Using this combination of conditions, servicing of a particular type of request from a plurality of clients can be synchronized by the shared resource. As previously described in ( Figure 2This synchronization shown in timing diagram 200 of FIG. 20 reduces the transition of shared resources between active states (wake-up states) and idle states (sleep states). Therefore, the computing system reduces power consumption. In some specific implementations, table 300 is programmable, and the power manager updates the values ​​(contents) stored in table 300. The power manager can notify the client when performing updates.

[0035] Now refer to Figure 4 , a generalized block diagram of a method 400 for efficiently performing power management of a multi-client computing system is shown. For discussion purposes, the steps in this implementation are shown in a sequential order. However, in other implementations, some steps occur in a different order than shown, some steps are performed simultaneously, some steps are combined with other steps, and some steps are not present.

[0036] In various implementations, a computing system includes a memory storing one or more applications of a workload and a plurality of clients processing tasks corresponding to the one or more applications (block 402). While processing the tasks of the workload, the clients store generated requests of a particular type in a data storage area (block 404). The generated system memory requests are stored (block 404). Examples of data storage areas are a table or queue, a first-in-first-out (FIFO) buffer, a set of flip-flop circuits, and the like.

[0037] An example of a specific type of request generated is a system memory request, which is serviced by a system memory controller that communicates with the system memory of the computing system. Another example of a specific type of request generated is an interrupt service request, which is serviced by a specific processor core that executes a kernel of an operating system and is capable of executing multiple interrupt service routines (ISRs). In some specific implementations, the specific processor core is a general-purpose core of a general-purpose central processing unit (CPU).

[0038] In various specific implementations, another client transmits a specific type of request to a specific shared resource to service the specific type of request. In a specific implementation, the other client transmits a system memory request to the system memory controller before transmitting an indication (such as a sideband signal) to the client. However, the indication may reach the client before the system memory controller receives the system memory request or before the system memory controller begins to service the system memory request. Therefore, the indication specifies that the other client services the specific type of request. The system memory controller may have already serviced the system memory requests of other clients, but it is not a necessary meaning of the indication. If the client receives an indication that the other client will service the specific type of request (the "yes" branch of conditional box 406), the client inserts a first urgency in one or more stored requests of the specific type (box 408).

[0039] In a specific implementation, the first urgency indicates a lower urgency than an urgency of a request of the specific type from another client initiating a service of a request of the specific type. In some specific implementations, the urgency can be one or more bits inserted in the request, and the value provided by the request is a combination of one or more of a priority level, a quality of service (QoS) level, an indication of an application type such as a real-time application, etc. The client transmits the stored one or more requests of the specific type to the corresponding component for service (block 410). As previously described, the system memory controller services system memory requests generated by multiple clients, and the CPU core running the operating system services interrupt service requests generated by multiple clients.

[0040] If the client does not receive an indication that another client will service a request of a specific type (the "no" branch of conditional box 406), the control flow of method 400 moves to conditional box 412. If the client determines that a specific time interval has elapsed (the "yes" branch of conditional box 412), the client transmits an indication to one or more other clients that a specific type of request is being transmitted for service (box 414). In some specific implementations, the indication is a sideband signal transmitted directly between the two clients, or a sideband signal transmitted in a forwarded manner with other clients used as communication jumps. In other specific implementations, the indication is a message within a packet transmitted through a communication structure. In a specific implementation, the client uses further qualifications to determine whether to perform the steps of boxes 414 to 418 of method 400. An example of further qualification is to determine that the number of pending requests of a specific type exceeds a threshold number. Due to the steps performed in boxes 406 to 410 of method 400, the number of pending requests of a specific type may be reduced earlier. If the client determines that the further qualification is not satisfied, the control flow of method 400 skips the steps in blocks 414 through 418 and returns to block 402 .

[0041] The client inserts a second urgency different from the first urgency in one or more stored requests of a specific type (box 416). The client transmits the stored one or more requests of a specific type to the corresponding component for service (box 418). In various specific implementations, the client also resets a counter for measuring the duration since the last scheduled service of the request of the specific type. Afterwards, the control flow of method 400 returns to box 402. Similarly, if the client determines that the specific time interval (the "no" branch of conditional box 412) has not passed, the control flow of method 400 returns to box 402. As described above, in some specific implementations, the client also adds a second condition to determine that the measured duration exceeds the above-mentioned first condition for limiting the time interval for transmitting a specific type of request to a shared resource and transmitting an indication to other clients. In a specific implementation, the second condition is to determine that the number of pending requests of the specific type exceeds a threshold number. If the number of pending requests of the specific type does not exceed the threshold number, the client does not transmit the pending request of the specific type to the shared resource, and does not transmit the indication to other clients. Shared resources that can be in an idle state remain in an idle state. Therefore, the power consumption of the computing system is reduced.

[0042] In a specific implementation, each of the multiple clients stores a data structure such as ( Figure 3 The client may store a copy of the table 300 of table 300 and use the information in the table to further determine when to transmit a particular type of request to the shared resource for servicing. The information stored in the table may be used by the client in conjunction with other conditions, such as receiving an indication (sideband signal or other) from other clients, determining that a measured duration exceeds a time interval, determining that the number of pending requests of a particular type exceeds a threshold number, etc. Using this combination of conditions, the servicing of a particular type of request from multiple clients may be synchronized by the shared resource. As previously described in ( Figure 2 This synchronization shown in the timing diagram 200 of FIG. 2 reduces the transition of the shared resource between the active state (wake-up state) and the idle state (sleep state). Therefore, the computing system reduces power consumption.

[0043] Note that one or more of the above-mentioned specific implementations include software. In such specific implementations, the program instructions of the implementation method and / or mechanism are transmitted or stored on a computer-readable medium. Many types of media configured to store program instructions are available and include hard disks, floppy disks, CD-ROMs, DVDs, flash memory, programmable ROMs (PROMs), random access memories (RAMs) and various other forms of volatile or non-volatile storage devices. Generally speaking, a computer-accessible storage medium includes any storage medium that can be accessed by a computer during use to provide instructions and / or data to a computer. For example, a computer-accessible storage medium includes such as magnetic or optical media, such as disks (fixed or removable), tapes, CD-ROMs or DVD-ROMs, CD-Rs, CD-RWs, DVD-Rs, DVD-RWs or storage media such as blue-rays. The storage medium also includes volatile or non-volatile storage media, such as RAM (e.g., synchronous dynamic RAM (SDRAM), double data rate (DDR, DDR2, DDR3, etc.) SDRAM, low power DDR (LPDDR2, etc.) SDRAM, Rambus DRAM (RDRAM), static RAM (SRAM), etc.), ROM accessible via a peripheral device interface (such as a universal serial bus (USB) interface, etc.), flash memory, non-volatile memory (e.g., flash memory). The storage medium includes micro-electromechanical systems (MEMS), and storage media accessible via communication media such as a network and / or a wireless link.

[0044] In addition, in various specific implementations, the program instructions include a behavioral level description or a register transfer level (RTL) description of the hardware functionality in a high-level programming language such as C or a design language (HDL) such as Verilog, VHDL, or a database format such as GDS II stream format (GDSII). In some cases, the description is read by a synthesis tool, which synthesizes the description to produce a netlist including a list of gates from a synthesis library. The netlist includes a set of gates, which also represents the functionality of the hardware comprising the system. The netlist is then placed and threaded to produce a data set describing the geometry to be applied to the mask. The mask is then used in various semiconductor manufacturing steps to produce a semiconductor circuit or circuit corresponding to the system. Alternatively, the instructions on the computer-accessible storage medium are a netlist (with or without a synthesis library) or a data set as desired. In addition, the instructions are used by the computer-accessible storage medium such as and Mentor Such vendors' hardware-based types of emulators are used for emulation purposes.

[0045] Although the above embodiments have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to encompass all such variations and modifications.

Claims

1. A device, comprising: A circuit, the circuit being configured as: While processing the tasks of the workload, storing the generated requests of a specific type in the data storage area; as well as In response to receiving a first indication specifying that an external client is to service requests of a particular type, one or more stored requests of the particular type are transmitted for servicing.

2. An apparatus according to claim 1, wherein, before transmitting the one or more stored requests of the specific type to the shared resource for service, the circuit is also configured to insert an urgency into the one or more stored requests of the specific type, wherein the urgency indicates an urgency that is lower than the urgency of the request of the specific type from the external client.

3. The apparatus of claim 1, wherein in response to determining that a given time interval has elapsed, the circuitry is further configured to transmit a second indication to one or more external clients specifying that the apparatus will service requests of the particular type.

4. An apparatus according to claim 3, wherein, before transmitting the one or more stored requests of the specific type to a shared resource for service, the circuit is also configured to insert an urgency in the one or more stored requests of the specific type, wherein the urgency indicates an urgency that is higher than the urgency of any request of the specific type transmitted by the apparatus in response to receiving the first indication. 5 . The apparatus of claim 3 , wherein the circuit is further configured to transmit the second indication to the one or more external clients in further response to determining that the number of stored requests of a particular type exceeds a threshold. The apparatus of claim 1 , wherein the request of the particular type is a system memory request. The apparatus of claim 1 , wherein the request of the particular type is an interrupt service request.

8. A method comprising: Tasks where multiple clients handle the workload; While processing the tasks of the workload, a first client among the plurality of clients stores a generated request of a specific type in a data storage area; as well as In response to receiving, by the first client, a first indication specifying that a second client of the plurality of clients is to service requests of the particular type, transmitting, by the first client, one or more stored requests of the particular type for servicing.

9. A method according to claim 8, wherein before transmitting the one or more stored requests of the specific type to a shared resource for service, the method further includes inserting an urgency by the first client into the one or more stored requests of the specific type, the urgency indicating an urgency that is lower than the urgency of the request of the specific type from the second client.

10. The method of claim 8, wherein in response to determining that a given time interval has elapsed, the method further comprises transmitting, by the first client to one or more of the plurality of clients, a second indication specifying that the first client will service the request of the particular type.

11. A method according to claim 10, wherein, before transmitting the one or more stored requests of the specific type to a shared resource for service, the method also includes inserting an urgency by the first client in the one or more stored requests of the specific type, wherein the urgency indication is a higher urgency than the urgency of any request of the specific type transmitted by the first client in response to receiving the first indication.

12. The method of claim 10, wherein the first client is further configured to transmit the second indication to the one or more external clients in response to determining that the number of stored requests of the specific type exceeds a threshold.

13. The method of claim 8, wherein the request of the particular type is a system memory request. The method of claim 8 , wherein the request of the particular type is an interrupt service request.

15. A computing system, comprising: a memory configured to store one or more applications of the workload; and A plurality of clients, each of the clients being configured to process a task of the workload; and The first client among the plurality of clients is configured as: While processing the tasks of the workload, storing generated requests of a specific type in a data storage area; as well as In response to receiving a first indication specifying that a second client of the plurality of clients is to service requests of a particular type, one or more stored requests of the particular type are transmitted for servicing.

16. A computing system according to claim 15, wherein before transmitting the one or more stored requests of the specific type to the shared resource for service, the first client is also configured to insert an urgency in the one or more stored requests of the specific type, the urgency indicating an urgency that is lower than the urgency of the request of the specific type from the second client.

17. The computing system of claim 15, wherein in response to determining that a given time interval has elapsed, the first client is further configured to transmit a second indication to one or more of the plurality of clients, the second indication specifying that the first client will service a particular type of request.

18. A computing system according to claim 17, wherein, before transmitting one or more stored requests of a specific type to a shared resource for service, the first client is also configured to insert an urgency in the one or more stored requests of a specific type, wherein the urgency indicates an urgency that is higher than the urgency of any request of the specific type transmitted by the first client in response to receiving the first indication.

19. The computing system of claim 17, wherein the first client is further configured to transmit the second indication to the one or more external clients in response to determining that the number of stored requests of a particular type exceeds a threshold.

20. The computing system of claim 15, wherein the request of the particular type is a system memory request.