Enqueue command power management and service request processing latency improvements
Patent Information
- Authority / Receiving Office
- EP · EP
- Patent Type
- Applications
- Current Assignee / Owner
- INTEL CORP
- Filing Date
- 2023-06-30
- Publication Date
- 2026-05-06
Smart Images

Figure CN2023105166_02012025_PF_FP_ABST
Abstract
Description
ENQUEUE COMMAND POWER MANAGEMENT AND SERVICE REQUEST PROCESSING LATENCY IMPROVEMENTSFIELD
[0001] The present disclosure generally relates to the field of processors. More particularly, some embodiments relate to power management and service request processing latency improvements for an enqueue command.BACKGROUND
[0002] Some processors may support an enqueue command to facilitate cloud native architectures. Such enqueue commands may be used to submit an Input / Output ( “I / O” or “IO” ) job to target Peripheral Component Interface express (PCIe) endpoints. Since the target PCIe endpoint may utilize various components to process the IO jobs, power management may become complicated, e.g., resulting in the PCIe endpoint entering an idle state prematurely before a job is fully processed.
[0003] Additionally, if a PCIe endpoint is in an idle state, additional enqueue command processing may cause additional latency before an enqueued job is processed.
[0004] Hence, efficient implementation of encode commands may improve power management and / or service request processing latency.BRIEF DESCRIPTION OF THE DRAWINGS
[0005] The detailed description is provided with reference to the accompanying figures. In the figures, the left-most digit (s) of a reference number identifies the figure in which the reference number first appears. The use of the same reference numbers in different figures indicates similar or identical items.
[0006] FIG. 1 illustrates a block diagram of a power management solution in a user queue mode, according to an embodiment.
[0007] FIGs. 2A, 2B, 3A, and 3B illustrate flow diagrams of methods, according to some embodiments.
[0008] FIG. 4 illustrates an example computing system.
[0009] FIG. 5 illustrates a block diagram of an example processor and / or System on a Chip (SoC) that may have one or more cores and an integrated memory controller.
[0010] FIG. 6A is a block diagram illustrating both an example in-order pipeline and an example register renaming, out-of-order issue / execution pipeline according to examples.
[0011] FIG. 6B is a block diagram illustrating both an example in-order architecture core and an example register renaming, out-of-order issue / execution architecture core to be included in a processor according to examples.
[0012] FIG. 7 illustrates examples of execution unit (s) circuitry.DETAILED DESCRIPTION
[0013] In the following description, numerous specific details are set forth in order to provide a thorough understanding of various embodiments. However, various embodiments may be practiced without the specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to obscure the particular embodiments. Further, various aspects of embodiments may be performed using various means, such as integrated semiconductor circuits ( “hardware” ) , computer-readable instructions organized into one or more programs ( “software” ) , or some combination of hardware and software. For the purposes of this disclosure reference to “logic” shall mean either hardware (such as logic circuitry or more generally circuitry or circuit) , software, firmware, or some combination thereof.
[0014] As discussed above, some processors may support an enqueue command to facilitate cloud native architectures. Two such commands include ENQCMD and ENQCMDS supported by some processors provided by Intel Corporation of Santa Clara, California. These enqueue command (s) may allow clients (e.g., for both user space and kernel space applications) to submit an Input / Output ( “I / O” or “IO” ) job to target Peripheral Component Interface express (PCIe) endpoints by an abstracted job descriptor (e.g., 64 bytes) . A target device capable of supporting such an enqueue command may use a Shared Work Queue (SWQ) to accept all job requests from multiple processes, and the received job requests in SWQ can be dequeued and processed by the device’s backend. The target PCI endpoints usually reserves specific address windows (e.g., one for user space and another for kernel space) for enqueue command access. A device driver may map the address window to an applications’ memory space, then the application can submit IO jobs via the enqueue command to a device. In turn, the device may reply to a host by writing the response to the requesting process’s memory space directly.
[0015] Since the target PCIe endpoint may utilize various components to process the IO jobs, power management may become complicated, e.g., resulting in the PCIe endpoint entering an idle state prematurely before a job is fully processed. Additionally, if a PCIe endpoint is in an idle state, additional enqueue command processing may cause additional latency before an enqueued job is processed.
[0016] To this end, some embodiments provide techniques for improving power management and / or service request processing latency for an enqueue command. In one embodiment, a storage device stores a request reference count. Depending on the implementation, the storage device may be any type of memory capable of storing a reference count, such as a register, a counter, a memory location, a cache line, or any other type of memory discussed herein. Logic circuitry, in turn, updates the request reference count in response to receipt of a (e.g., user) job request from a process at a device (such as a PCIe device) and updates the request reference count in response to completion of a job corresponding to the received job request. The device enters into, remains in, or exits an active / idle power state in response to a value of the request reference count. In another embodiment, a job request with a job descriptor is issued to a target device (such as a PCIe device) . The target device includes device power management logic to cause the target device to transition from an idle power state to an active power state in response to receipt of the job descriptor. The device power management logic causes the target device to transition from the idle power state prior to the job descriptor being stored in a work queue of the target device.
[0017] FIG. 1 illustrates a block diagram of a power management solution in a user queue mode, according to an embodiment. In FIG. 1, “MEx-Thy” generally refers to Micro Engine (s) or computing elements, processing Thread y and “SSM” generally refers to Slice (e.g., of computing unit) and Shared Memory.
[0018] Referring to the left side of FIG. 1 (labeled as “ (A) ” ) , a block diagram of components that support an enqueue command with an SWQ 102 is shown (e.g., supporting the fourth generation of Quick Assist Technology (QAT) in one implementation) , which may generally be referred to as a User Queue (UQ) mode.
[0019] For power saving purposes, a device 104 includes Power Management (PM) capability. Device PM module 106 monitor’s device’s data request / response First In, First Out (FIFO) called as a Request Ring or Queue 108, e.g., the Work Queue on Intel QAT and Power-Managed I / O Queues in Microsoft driver framework. If the request ring 108 is not empty, the PM module 106 will wake up the device 104 from power idle to power active, or otherwise stop the power idle. The PM module 106 changes the device power state from active to idle state once the request ring 108 is determined to be empty.
[0020] In UQ mode, the device power management module 106 is still monitoring device I / O queue SWQ 102. When the SWQ 102 is not empty, the PM module 106 will wake up the device 104. Once the SWQ 102 becomes empty, the PM module 106 will start the power idle transition. In a Work Queue (WQ) mode, the device will enter its power idle state after a power idle delay (e.g., 512 micro seconds (us) ) . Furthermore, in the WQ mode, device power active time may cover the whole data request read / write (or GET / PUT) window. However, since there is generally no response ring in the UQ mode, the PM strategy in UQ mode can not cover the whole data request processing time window. This could make the device change its power state to idle during data processing and fail pending data processing job (s) . The power idle delay time may be extended to avoid this issue but that approach creates additionally latency. Also, it would be difficult to scale out this solution, as it depends on the device capabilities and it could compromise device PM performance, as the longer power idle delay time also causes more power consumption.
[0021] Referring to the right side of FIG. 1 (labeled as “ (B) ” ) , a block diagram of components that support an enqueue command is shown, according to at least one embodiment. A new PM strategy is introduced in device UQ mode where the device PM module 110 monitors the device’s in-flight request count rather than IO queue’s state.
[0022] More particularly, a request count called Req_Ref_Count 112 is introduced in SWQ module 114, which would increment (e.g., by 1) once a get / read request from a user process 116 is received and decremented (e.g., by 1) in response to a determination that the device completes the UQ job processing. Moreover, the device PM module 110 monitors the Req_Ref_Count’s value and if the value is larger than a threshold value (e.g., 1) , device power state would be changed to (or kept as) active. If the Req_Ref_Count’s value falls below a threshold value (e.g., becomes 0) , the device power idle count will be initiated to cause the device to enter its idle state. Since the SWQ is shared by multiple processes, the reference count is user process agnostic in at least one embodiment.
[0023] In an embodiment, this feature (i.e., the capability of an in-flight request count) may be reflected in a processor capability flag. Hence, a processor or Central Processing Unit (CPU) capability flag may indicate whether a given processor / CPU is capable of tracking an in-flight request count. Further, such embodiments may allow for efficient scaling, e.g., without additional latency associated with a longer power idle delay time and / or associated increased power consumption. Also, one or more embodiments may be applied to any user queue mode device such as a QAT device, Data Streaming Accelerator (DSA) device, Infrastructure Processing Unit (IPU) , etc. (such as those provided by Corporation) .
[0024] FIG. 2A illustrates a flow diagram of a method 200 to notify a SWQ in response to a UQ job processing, according to an embodiment. One or more operations of method 200 may be performed by logic (such as those discussed with reference to FIG. 1) , including for example, the device PM module 110 to update a request reference count (e.g., 112 of FIG. 1) stored in a SWQ (e.g., SWQ 114 of FIG. 1) .
[0025] In various embodiments, the device backend 118 may use new instruction or Instruction Set Architecture (ISA) or hardware interface (e.g, a dedicated hardware Control and Status Register (CSR) ) to notify the SWQ when one UQ job is completed, e.g., taking the fourth generation of QAT as an example, when one job is processed completed, QAT firmware would use an ISA ram [data_transfer_write, ... ] to write a response to a user process’s memory space directly (e.g., using Direct Memory Access (DMA) ) .
[0026] Referring to FIGs. 1 and 2A, once a device finished a job at operation 202, an operation 204 writes the response / result to a designated location (e.g., a process’s memory space directly, e.g., via DMA) . At an operation 206, a signal is sent to a SWQ (e.g., SWQ 114) , e.g., via an ISA and / or a CSR or designated register update. At an operation 208, the request reference count (e.g., 112) is updated (e.g., decremented) .
[0027] FIG. 2B illustrates a flow diagram of a method 250 to manage device power state, according to an embodiment. One or more operations of method 250 may be performed by logic (such as those discussed with reference to FIG. 1) , including for example, the device PM module 110 based on a request reference count (e.g., 112 of FIG. 1) stored in a SWQ (e.g., SWQ 114 of FIG. 1) .
[0028] Referring to FIGs. 1 and 2B, a PM module (e.g., 110) checks the value of Req_Ref_Count (e.g., 112) at an operation 252. If the value is qual and / or larger than a threshold value (e.g., 0) , the device power state is changed or kept as Active at an operation 254. Conversely, if the value is less than the threshold value, the device power state is transitioned to idle at an operation 256, e.g., to reduce power consumption.
[0029] In an embodiment, the enqueue command architecture is extended to reduce service request processing latency. In a first scenario, consider the first ENQCMD / ENQCMDs execution, in a current LinuxTM kernel implementation, the first command execution triggers a #GP (General Protection fault) which will help load a Process Address Space Identifier (PASID) into an IA32_PASID Model Specific Register (MSR) , then CPU may read the PASID from the IA32_PASID MSR via a read MSR instruction (e.g., RDMSR ISA) and fill the value into the PASID field of an abstract data processing descriptor. In a second scenario, consider the consequence of ENQCMD (s) execution after the first command invocation. This case will not trigger a #GP but will read the PASID from the IA32_PASID MSR and fill the value into PASID field of command descriptor. For a third scenario, consider a virtualization environment. This scenario will introduce a bigger overhead especially for the first ENQCMD (s) execution, besides the new pipeline introduced in scenario 1 and scenario 2, a new pipeline for PASID translation between guest PASID (gPASID) and host PASID (hPASID) are involved.
[0030] In one embodiment, for power saving purposes, a device PM capability is introduced on the device side. Generally, a device PM module (such as module 106 of FIG. 1) is waiting for power change signal / command or monitoring device’s data input / output FIFO (called queue or ring) , and if the input queue is not empty, PM firmware will wake up device from power idle to power active. The status transition time from idle to active is called power EXLAT (Exit Latency) .
[0031] When both ENQCMD (s) and device PM are enabled on the same device (e.g., the 4th Generation QuickAssist Technology on Sapphire Rapids CPU) , the overall workflow includes transmitting the ENQCMD (s) to a target device with abstract data processing job descriptor (s) , an instruction is executed to fill the service descriptor with PASID field, an SWQ (e.g. SWQ 102 of FIG. 1) is considered in whether to change power states (e.g., per some EXLAT) , the device work queue is updated, and the device computing units handle requests and respond to the host. However, when ENQCMD (s) is used, compared to a legacy Work Queue (WQ) mode, the instruction execution pipeline is used on the CPU side and the pipeline will introduce a new request processing latency, which makes service performance and user experience compromised.
[0032] Referring to FIG. 3A, flow diagrams for a current pipeline and a proposed pipeline are shown, according to an embodiment. More particularly, the flow for a current pipeline 302 is shown on the top portion of FIG. 3A, whereas the flow for the proposed pipeline 304 is shown on the bottom portion of FIG. 3A.
[0033] In one embodiment, an enhancement is proposed for a new processor / CPU architecture which supports Enqueue Command (s) (e.g., ENQCMD / ENQCMDS) . More particularly, the serialized IO job pipeline 302 to process a job through ENQCMD (S) is restructured into two parallel pipelines (at least partially) , which is to transition device power state from idle to active ahead of the request descriptor arriving at an SWQ (e.g., SWQs 102 and / or 114 of FIG. 1) . Namely, latency 1 and latency 2 associated with operations 306 and 308 are parallelized (e.g., to start operation at approximately the same time) so the latencies 1 and 2 overlap, which in turn reduces the overall latency associated with the proposed pipeline 304.
[0034] Such embodiments allow for warming up of the device power state earlier, e.g., before data request descriptor (s) arrive at the SWQ, which can reduce or even eliminate the service requests processing latency overhead introduced by ENQCMD (s) . In other words, the sum of latency 1 and latency 2 in current pipeline 302 is reduced to the maximum of the latency 1 and latency 2 in the new pipeline 304, which in turn improves the overall IO performance and user experience. This technique may be applied to other similar IO ISAs, e.g., MCR / MCR2 instructions for an architecture.
[0035] FIG. 3B illustrates a flow diagram of a method 350 to transition a target device (such as a PCIe endpoint) to an active power state in parallel in response to receipt of an enqueue command, according to an embodiment. One or more operations of method 350 may be performed by logic (such as those discussed with reference to FIG. 1) , including for example, the device PM module 106 / 110 in response to receipt of an enqueue command.
[0036] Referring to FIGs. 1 and 3B, once an enqueue command (e.g., ENQCMD or ENCMDS) is received for a target device (such as device 104) at an operation 352, a processor / CPU / host inspects the target device at an operation 354 (e.g., to check on the target device’s power state, such as via the PM module, for example, using an Advanced Control and Power Interface (ACPI) ) . For example, a device’s power state may be detected via its power state registers, and a device driver may maintain a power state table to facilitate power status query, where the stored value (s) will be updated once the device’s power state changed. At an operation 356, it is determined (e.g., by the processor or host per operation 354) whether the target device is in an idle power state and if not, method 350 returns.
[0037] If the target device is in an idle power state as determined at operation 356, an operation 358 initiates the process for a power state change, e.g., via the PM module (for example using an ACPI) . At an operation 360, the target device requests an additional power budget, e.g., via a power budget request handshake with a system power controller. After obtaining the additional budget, the device changes power state from idle to active at an operation 362.
[0038] Moreover, a software application may prepare a job descriptor in memory, then calls an enqueue command (e.g., ENQCMD / ENQCMDS) to the target device. When the enqueue command is executed, the CPU / processor creates a device power transition pipeline that is processing in parallel with the primary pipeline (see, e.g., the discussion of FIG. 3A) . In an embodiment, the power transition pipeline is exclusively used for device power wakeup.
[0039] Additionally, some embodiments may be applied in computing systems that include one or more processors (e.g., where the one or more processors may include one or more processor cores) , such as those discussed with reference to FIGs. 1 et seq., including for example a desktop computer, a workstation, a computer server, a server blade, or a mobile computing device. The mobile computing device may include a smartphone, tablet, Ultra-Mobile Personal Computer (UMPC) , laptop computer, UltrabookTM computing device, wearable devices (such as a smart watch, smart ring, smart bracelet, or smart glasses) , etc.
[0040] EXAMPLE COMPUTER ARCHITECTURES
[0041] Detailed below are descriptions of example computer architectures. Other system designs and configurations known in the arts for laptop, desktop, and handheld personal computers (PC) s, personal digital assistants, engineering workstations, servers, disaggregated servers, network devices, network hubs, switches, routers, embedded processors, digital signal processors (DSPs) , graphics devices, video game devices, set-top boxes, micro controllers, cell phones, portable media players, hand-held devices, and various other electronic devices, are also suitable. In general, a variety of systems or electronic devices capable of incorporating a processor and / or other execution logic as disclosed herein are generally suitable.
[0042] FIG. 4 illustrates an example computing system. Multiprocessor system 400 is an interfaced system and includes a plurality of processors or cores including a first processor 470 and a second processor 480 coupled via an interface 450 such as a point-to-point (P-P) interconnect, a fabric, and / or bus. In some examples, the first processor 470 and the second processor 480 are homogeneous. In some examples, first processor 470 and the second processor 480 are heterogenous. Though the example system 400 is shown to have two processors, the system may have three or more processors, or may be a single processor system. In some examples, the computing system is a system on a chip (SoC) .
[0043] Processors 470 and 480 are shown including integrated memory controller (IMC) circuitry 472 and 482, respectively. Processor 470 also includes interface circuits 476 and 478; similarly, second processor 480 includes interface circuits 486 and 488. Processors 470, 480 may exchange information via the interface 450 using interface circuits 478, 488. IMCs 472 and 482 couple the processors 470, 480 to respective memories, namely a memory 432 and a memory 434, which may be portions of main memory locally attached to the respective processors.
[0044] Processors 470, 480 may each exchange information with a network interface (NW I / F) 490 via individual interfaces 452, 454 using interface circuits 476, 494, 486, 498. The network interface 490 (e.g., one or more of an interconnect, bus, and / or fabric, and in some examples is a chipset) may optionally exchange information with a coprocessor 438 via an interface circuit 492. In some examples, the coprocessor 438 is a special-purpose processor, such as, for example, a high-throughput processor, a network or communication processor, compression engine, graphics processor, general purpose graphics processing unit (GPGPU) , neural-network processing unit (NPU) , embedded processor, or the like.
[0045] A shared cache (not shown) may be included in either processor 470, 480 or outside of both processors, yet connected with the processors via an interface such as P-P interconnect, such that either or both processors’ local cache information may be stored in the shared cache if a processor is placed into a low power mode.
[0046] Network interface 490 may be coupled to a first interface 416 via interface circuit 496. In some examples, first interface 416 may be an interface such as a Peripheral Component Interconnect (PCI) interconnect, a PCI Express interconnect or another I / O interconnect. In some examples, first interface 416 is coupled to a power control unit (PCU) 4 17, which may include circuitry, software, and / or firmware to perform power management operations with regard to the processors 470, 480 and / or co-processor 438. PCU 417 provides control information to a voltage regulator (not shown) to cause the voltage regulator to generate the appropriate regulated voltage. PCU 417 also provides control information to control the operating voltage generated. In various examples, PCU 417 may include a variety of power management logic units (circuitry) to perform hardware-based power management. Such power management may be wholly processor controlled (e.g., by various processor hardware, and which may be triggered by workload and / or power, thermal or other processor constraints) and / or the power management may be performed responsive to external sources (such as a platform or power management source or system software) .
[0047] PCU 417 is illustrated as being present as logic separate from the processor 470 and / or processor 480. In other cases, PCU 417 may execute on a given one or more of cores (not shown) of processor 470 or 480. In some cases, PCU 417 may be implemented as a microcontroller (dedicated or general-purpose) or other control logic configured to execute its own dedicated power management code, sometimes referred to as P-code. In yet other examples, power management operations to be performed by PCU 417 may be implemented externally to a processor, such as by way of a separate power management integrated circuit (PMIC) or another component external to the processor. In yet other examples, power management operations to be performed by PCU 417 may be implemented within BIOS or other system software.
[0048] Various I / O devices 414 may be coupled to first interface 416, along with a bus bridge 418 which couples first interface 416 to a second interface 420. In some examples, one or more additional processor (s) 415, such as coprocessors, high throughput many integrated core (MIC) processors, GPGPUs, accelerators (such as graphics accelerators or digital signal processing (DSP) units) , field programmable gate arrays (FPGAs) , or any other processor, are coupled to first interface 416. In some examples, second interface 420 may be a low pin count (LPC) interface. Various devices may be coupled to second interface 420 including, for example, a keyboard and / or mouse 422, communication devices 427 and storage circuitry 428. Storage circuitry 428 may be one or more non-transitory machine-readable storage media as described below, such as a disk drive or other mass storage device which may include instructions / code and data 430 and may implement the storage `ISAB03 in some examples. Further, an audio I / O 424 may be coupled to second interface 420. Note that other architectures than the point-to-point architecture described above are possible. For example, instead of the point-to-point architecture, a system such as multiprocessor system 400 may implement a multi-drop interface or other such architecture.
[0049] EXAMPLE CORE ARCHITECTURES, PROCESSORS, AND COMPUTER ARCHITECTURES.
[0050] Processor cores may be implemented in different ways, for different purposes, and in different processors. For instance, implementations of such cores may include: 1) a general purpose in-order core intended for general-purpose computing; 2) a high-performance general purpose out-of-order core intended for general-purpose computing; 3) a special purpose core intended primarily for graphics and / or scientific (throughput) computing. Implementations of different processors may include: 1) a CPU including one or more general purpose in-order cores intended for general-purpose computing and / or one or more general purpose out-of-order cores intended for general-purpose computing; and 2) a coprocessor including one or more special purpose cores intended primarily for graphics and / or scientific (throughput) computing. Such different processors lead to different computer system architectures, which may include: 1) the coprocessor on a separate chip from the CPU; 2) the coprocessor on a separate die in the same package as a CPU; 3) the coprocessor on the same die as a CPU (in which case, such a coprocessor is sometimes referred to as special purpose logic, such as integrated graphics and / or scientific (throughput) logic, or as special purpose cores) ; and 4) a system on a chip (SoC) that may be included on the same die as the described CPU (sometimes referred to as the application core (s) or application processor (s) ) , the above described coprocessor, and additional functionality. Example core architectures are described next, followed by descriptions of example processors and computer architectures.
[0051] FIG. 5 illustrates a block diagram of an example processor and / or SoC 500 that may have one or more cores and an integrated memory controller. The solid lined boxes illustrate a processor 500 with a single core 502 (A) , system agent unit circuitry 510, and a set of one or more interface controller unit (s) circuitry 516, while the optional addition of the dashed lined boxes illustrates an alternative processor 500 with multiple cores 502 (A) - (N) , a set of one or more integrated memory controller unit (s) circuitry 514 in the system agent unit circuitry 510, and special purpose logic 508, as well as a set of one or more interface controller units circuitry 516. Note that the processor 500 may be one of the processors 570 or 580, or co-processor 538 or 515 of FIG. 5.
[0052] Thus, different implementations of the processor 500 may include: 1) a CPU with the special purpose logic 508 being integrated graphics and / or scientific (throughput) logic (which may include one or more cores, not shown) , and the cores 502 (A) - (N) being one or more general purpose cores (e.g., general purpose in-order cores, general purpose out-of-order cores, or a combination of the two) ; 2) a coprocessor with the cores 502 (A) - (N) being a large number of special purpose cores intended primarily for graphics and / or scientific (throughput) ; and 3) a coprocessor with the cores 502 (A) - (N) being a large number of general purpose in-order cores. Thus, the processor 500 may be a general-purpose processor, coprocessor or special-purpose processor, such as, for example, a network or communication processor, compression engine, graphics processor, GPGPU (general purpose graphics processing unit) , a high throughput many integrated core (MIC) coprocessor (including 30 or more cores) , embedded processor, or the like. The processor may be implemented on one or more chips. The processor 500 may be a part of and / or may be implemented on one or more substrates using any of a number of process technologies, such as, for example, complementary metal oxide semiconductor (CMOS) , bipolar CMOS (BiCMOS) , P-type metal oxide semiconductor (PMOS) , or N-type metal oxide semiconductor (NMOS) .
[0053] A memory hierarchy includes one or more levels of cache unit (s) circuitry 504 (A) - (N) within the cores 502 (A) - (N) , a set of one or more shared cache unit (s) circuitry 506, and external memory (not shown) coupled to the set of integrated memory controller unit (s) circuitry 514. The set of one or more shared cache unit (s) circuitry 506 may include one or more mid-level caches, such as level 2 (L2) , level 3 (L3) , level 4 (L4) , or other levels of cache, such as a last level cache (LLC) , and / or combinations thereof. While in some examples interface network circuitry 512 (e.g., a ring interconnect) interfaces the special purpose logic 508 (e.g., integrated graphics logic) , the set of shared cache unit (s) circuitry 506, and the system agent unit circuitry 510, alternative examples use any number of well-known techniques for interfacing such units. In some examples, coherency is maintained between one or more of the shared cache unit (s) circuitry 506 and cores 502 (A) - (N) . In some examples, interface controller units circuitry 516 couple the cores 502 to one or more other devices 518 such as one or more I / O devices, storage, one or more communication devices (e.g., wireless networking, wired networking, etc. ) , etc.
[0054] In some examples, one or more of the cores 502 (A) - (N) are capable of multi-threading. The system agent unit circuitry 510 includes those components coordinating and operating cores 502 (A) - (N) . The system agent unit circuitry 510 may include, for example, power control unit (PCU) circuitry and / or display unit circuitry (not shown) . The PCU may be or may include logic and components needed for regulating the power state of the cores 502 (A) - (N) and / or the special purpose logic 508 (e.g., integrated graphics logic) . The display unit circuitry is for driving one or more externally connected displays.
[0055] The cores 502 (A) - (N) may be homogenous in terms of instruction set architecture (ISA) . Alternatively, the cores 502 (A) - (N) may be heterogeneous in terms of ISA; that is, a subset of the cores 502 (A) - (N) may be capable of executing an ISA, while other cores may be capable of executing only a subset of that ISA or another ISA.
[0056] EXAMPLE CORE ARCHITECTURES -IN-ORDER AND OUT-OF-ORDER CORE BLOCK DIAGRAM
[0057] FIG. 6A is a block diagram illustrating both an example in-order pipeline and an example register renaming, out-of-order issue / execution pipeline according to examples. FIG. 6B is a block diagram illustrating both an example in-order architecture core and an example register renaming, out-of-order issue / execution architecture core to be included in a processor according to examples. The solid lined boxes in FIGS. 6A-6B illustrate the in-order pipeline and in-order core, while the optional addition of the dashed lined boxes illustrates the register renaming, out-of-order issue / execution pipeline and core. Given that the in-order aspect is a subset of the out-of-order aspect, the out-of-order aspect will be described.
[0058] In FIG. 6A, a processor pipeline 600 includes a fetch stage 602, an optional length decoding stage 604, a decode stage 606, an optional allocation (Alloc) stage 608, an optional renaming stage 610, a schedule (also known as a dispatch or issue) stage 612, an optional register read / memory read stage 614, an execute stage 616, a write back / memory write stage 618, an optional exception handling stage 622, and an optional commit stage 624. One or more operations can be performed in each of these processor pipeline stages. For example, during the fetch stage 602, one or more instructions are fetched from instruction memory, and during the decode stage 606, the one or more fetched instructions may be decoded, addresses (e.g., load store unit (LSU) addresses) using forwarded register ports may be generated, and branch forwarding (e.g., immediate offset or a link register (LR) ) may be performed. In one example, the decode stage 606 and the register read / memory read stage 614 may be combined into one pipeline stage. In one example, during the execute stage 616, the decoded instructions may be executed, LSU address / data pipelining to an Advanced Microcontroller Bus (AMB) interface may be performed, multiply and add operations may be performed, arithmetic operations with branch results may be performed, etc.
[0059] By way of example, the example register renaming, out-of-order issue / execution architecture core of FIG. 6B may implement the pipeline 600 as follows: 1) the instruction fetch circuitry 638 performs the fetch and length decoding stages 602 and 604; 2) the decode circuitry 640 performs the decode stage 606; 3) the rename / allocator unit circuitry 652 performs the allocation stage 608 and renaming stage 610; 4) the scheduler (s) circuitry 656 performs the schedule stage 612; 5) the physical register file (s) circuitry 658 and the memory unit circuitry 670 perform the register read / memory read stage 614; the execution cluster (s) 660 perform the execute stage 616; 6) the memory unit circuitry 670 and the physical register file (s) circuitry 658 perform the write back / memory write stage 618; 6) various circuitry may be involved in the exception handling stage 622; and 8) the retirement unit circuitry 654 and the physical register file (s) circuitry 658 perform the commit stage 624.
[0060] FIG. 6B shows a processor core 690 including front-end unit circuitry 630 coupled to execution engine unit circuitry 650, and both are coupled to memory unit circuitry 670. The core 690 may be a reduced instruction set architecture computing (RISC) core, a complex instruction set architecture computing (CISC) core, a very long instruction word (VLIW) core, or a hybrid or alternative core type. As yet another option, the core 690 may be a special-purpose core, such as, for example, a network or communication core, compression engine, coprocessor core, general purpose computing graphics processing unit (GPGPU) core, graphics core, or the like.
[0061] The front-end unit circuitry 630 may include branch prediction circuitry 632 coupled to instruction cache circuitry 634, which is coupled to an instruction translation lookaside buffer (TLB) 636, which is coupled to instruction fetch circuitry 638, which is coupled to decode circuitry 640. In one example, the instruction cache circuitry 634 is included in the memory unit circuitry 670 rather than the front-end circuitry 630. The decode circuitry 640 (or decoder) may decode instructions, and generate as an output one or more micro-operations, micro-code entry points, microinstructions, other instructions, or other control signals, which are decoded from, or which otherwise reflect, or are derived from, the original instructions. The decode circuitry 640 may further include address generation unit (AGU, not shown) circuitry. In one example, the AGU generates an LSU address using forwarded register ports, and may further perform branch forwarding (e.g., immediate offset branch forwarding, LR register branch forwarding, etc. ) . The decode circuitry 640 may be implemented using various different mechanisms. Examples of suitable mechanisms include, but are not limited to, look-up tables, hardware implementations, programmable logic arrays (PLAs) , microcode read only memories (ROMs) , etc. In one example, the core 690 includes a microcode ROM (not shown) or other medium that stores microcode for certain macroinstructions (e.g., in decode circuitry 640 or otherwise within the front-end circuitry 630) . In one example, the decode circuitry 640 includes a micro-operation (micro-op) or operation cache (not shown) to hold / cache decoded operations, micro-tags, or micro-operations generated during the decode or other stages of the processor pipeline 600. The decode circuitry 640 may be coupled to rename / allocator unit circuitry 652 in the execution engine circuitry 650.
[0062] The execution engine circuitry 650 includes the rename / allocator unit circuitry 652 coupled to retirement unit circuitry 654 and a set of one or more scheduler (s) circuitry 656. The scheduler (s) circuitry 656 represents any number of different schedulers, including reservations stations, central instruction window, etc. In some examples, the scheduler (s) circuitry 656 can include arithmetic logic unit (ALU) scheduler / scheduling circuitry, ALU queues, address generation unit (AGU) scheduler / scheduling circuitry, AGU queues, etc. The scheduler (s) circuitry 656 is coupled to the physical register file (s) circuitry 658. Each of the physical register file (s) circuitry 658 represents one or more physical register files, different ones of which store one or more different data types, such as scalar integer, scalar floating-point, packed integer, packed floating-point, vector integer, vector floating-point, status (e.g., an instruction pointer that is the address of the next instruction to be executed) , etc. In one example, the physical register file (s) circuitry 658 includes vector registers unit circuitry, writemask registers unit circuitry, and scalar register unit circuitry. These register units may provide architectural vector registers, vector mask registers, general-purpose registers, etc. The physical register file (s) circuitry 658 is coupled to the retirement unit circuitry 654 (also known as a retire queue or a retirement queue) to illustrate various ways in which register renaming and out-of-order execution may be implemented (e.g., using a reorder buffer (s) (ROB (s) ) and a retirement register file (s) ; using a future file (s) , a history buffer (s) , and a retirement register file (s) ; using a register maps and a pool of registers; etc. ) . The retirement unit circuitry 654 and the physical register file (s) circuitry 658 are coupled to the execution cluster (s) 660. The execution cluster (s) 660 includes a set of one or more execution unit (s) circuitry 662 and a set of one or more memory access circuitry 664. The execution unit (s) circuitry 662 may perform various arithmetic, logic, floating-point or other types of operations (e.g., shifts, addition, subtraction, multiplication) and on various types of data (e.g., scalar integer, scalar floating-point, packed integer, packed floating-point, vector integer, vector floating-point) . While some examples may include a number of execution units or execution unit circuitry dedicated to specific functions or sets of functions, other examples may include only one execution unit circuitry or multiple execution units / execution unit circuitry that all perform all functions. The scheduler (s) circuitry 656, physical register file (s) circuitry 658, and execution cluster (s) 660 are shown as being possibly plural because certain examples create separate pipelines for certain types of data / operations (e.g., a scalar integer pipeline, a scalar floating-point / packed integer / packed floating-point / vector integer / vector floating-point pipeline, and / or a memory access pipeline that each have their own scheduler circuitry, physical register file (s) circuitry, and / or execution cluster –and in the case of a separate memory access pipeline, certain examples are implemented in which only the execution cluster of this pipeline has the memory access unit (s) circuitry 664) . It should also be understood that where separate pipelines are used, one or more of these pipelines may be out-of-order issue / execution and the rest in-order.
[0063] In some examples, the execution engine unit circuitry 650 may perform load store unit (LSU) address / data pipelining to an Advanced Microcontroller Bus (AMB) interface (not shown) , and address phase and writeback, data phase load, store, and branches.
[0064] The set of memory access circuitry 664 is coupled to the memory unit circuitry 670, which includes data TLB circuitry 672 coupled to data cache circuitry 674 coupled to level 2 (L2) cache circuitry 676. In one example, the memory access circuitry 664 may include load unit circuitry, store address unit circuitry, and store data unit circuitry, each of which is coupled to the data TLB circuitry 672 in the memory unit circuitry 670. The instruction cache circuitry 634 is further coupled to the level 2 (L2) cache circuitry 676 in the memory unit circuitry 670. In one example, the instruction cache 634 and the data cache 674 are combined into a single instruction and data cache (not shown) in L2 cache circuitry 676, level 3 (L3) cache circuitry (not shown) , and / or main memory. The L2 cache circuitry 676 is coupled to one or more other levels of cache and eventually to a main memory.
[0065] The core 690 may support one or more instructions sets (e.g., the x86 instruction set architecture (optionally with some extensions that have been added with newer versions) ; the MIPS instruction set architecture; the ARM instruction set architecture (optionally with optional additional extensions such as NEON) ) , including the instruction (s) described herein. In one example, the core 690 includes logic to support a packed data instruction set architecture extension (e.g., AVX1, AVX2) , thereby allowing the operations used by many multimedia applications to be performed using packed data.
[0066] EXAMPLE EXECUTION UNIT (S) CIRCUITRY
[0067] FIG. 7 illustrates examples of execution unit (s) circuitry, such as execution unit (s) circuitry 662 of FIG. 6B. As illustrated, execution unit (s) circuity 662 may include one or more ALU circuits 701, optional vector / single instruction multiple data (SIMD) circuits 703, load / store circuits 705, branch / jump circuits 707, and / or Floating-point unit (FPU) circuits 709. ALU circuits 701 perform integer arithmetic and / or Boolean operations. Vector / SIMD circuits 703 perform vector / SIMD operations on packed data (such as SIMD / vector registers) . Load / store circuits 705 execute load and store instructions to load data from memory into registers or store from registers to memory. Load / store circuits 705 may also generate addresses. Branch / jump circuits 707 cause a branch or jump to a memory address depending on the instruction. FPU circuits 709 perform floating-point arithmetic. The width of the execution unit (s) circuitry 662 varies depending upon the example and can range from 16-bit to 1, 024-bit, for example. In some examples, two or more smaller execution units are logically combined to form a larger execution unit (e.g., two 128-bit execution units are logically combined to form a 256-bit execution unit) .
[0068] In this description, numerous specific details are set forth to provide a more thorough understanding. However, it will be apparent to one of skill in the art that the embodiments described herein may be practiced without one or more of these specific details. In other instances, well-known features have not been described to avoid obscuring the details of the present embodiments.
[0069] The following examples pertain to further embodiments. Example 1 includes an apparatus comprising: a storage device to store a request reference count; and logic circuitry to update the request reference count in response to receipt of a job request from a process at a device and to update the request reference count in response to completion of a job corresponding to the received job request, wherein the device is to enter into, remain in, or exit a power state in response to a value of the request reference count. Example 2 includes the apparatus of example 1, wherein the power state comprises one of an idle power state and an active power state. Example 3 includes the apparatus of any one of examples 1 to 2, wherein the job request is an enqueue request to store the job request in a shared work queue.
[0070] Example 4 includes the apparatus of any one of examples 1 to 3, wherein the shared work queue is to store a plurality of job requests from one or more user application processes. Example 5 includes the apparatus of any one of examples 1 to 4, wherein the job request is to be transmitted by a user application process. Example 6 includes the apparatus of any one of examples 1 to 5, wherein the logic circuitry is to increment the request reference count in response to the receipt of the job request and to decrement the request reference count in response to completion of the job corresponding to the received job request. Example 7 includes the apparatus of any one of examples 1 to 6, wherein the completion of the job is to be indicated via invocation of an instruction or storage of a value in a register. Example 8 includes the apparatus of any one of examples 1 to 7, wherein a processor capability flag is to indicate an existence of the request reference count.
[0071] Example 9 includes an apparatus comprising: a processor to issue a job request with a job descriptor to a target device; and the target device including device power management logic to cause the target device to transition from an idle power state to an active power state in response to receipt of the job descriptor, wherein the device power management logic is to cause the target device to transition from the idle power state prior to the job descriptor being stored in a work queue of the target device. Example 10 includes the apparatus of example 9, wherein the processor is to issue the job request via an enqueue command. Example 11 includes the apparatus of any one of examples 9 to 10, wherein the processor is to issue the job request via a enqueue command. Example 12 includes the apparatus of any one of examples 9 to 11, wherein the device power management logic is to communicate with the processor via an Advanced Control and Power Interface (ACPI) .
[0072] Example 13 includes the apparatus of any one of examples 9 to 12, wherein the job request is an enqueue request to store the job request in a shared work queue. Example 14 includes the apparatus of any one of examples 9 to 13, wherein the work queue is a shared work queue to store a plurality of job requests from one or more user application processes. Example 15 includes the apparatus of any one of examples 9 to 14, wherein the job request is caused to be transmitted by a user application process. Example 16 includes the apparatus of any one of examples 9 to 15, wherein a processor capability flag is to indicate whether the target device is capable of transitioning from the idle power state prior to the job descriptor being stored in the work queue of the target device..
[0073] Example 17 includes one or more non-transitory computer-readable media comprising one or more instructions that when executed on a processor configure the processor to perform one or more operations to cause: a storage device to store a request reference count; and logic circuitry to update the request reference count in response to receipt of a job request from a process at a device and to update the request reference count in response to completion of a job corresponding to the received job request, wherein the device is to enter into, remain in, or exit a power state in response to a value of the request reference count.
[0074] Example 18 includes the one or more non-transitory computer-readable media of example 17, wherein the power state comprises one of an idle power state and an active power state. Example 19 includes the one or more non-transitory computer-readable media of any one of examples 17 to 18, wherein the job request is an enqueue request to store the job request in a shared work queue. Example 20 includes the one or more non-transitory computer-readable media of any one of examples 17 to 19, further comprising one or more instructions that when executed on the one processor configure the processor to perform one or more operations to cause the shared work queue to store a plurality of job requests from one or more user application processes.
[0075] Example 21 includes an apparatus comprising means to perform a method as set forth in any preceding example. Example 22 includes machine-readable storage including machine-readable instructions, when executed, to implement a method or realize an apparatus as set forth in any preceding example.
[0076] In various embodiments, one or more operations discussed with reference to Figs. 1 et seq. may be performed by one or more components (interchangeably referred to herein as “logic” ) discussed with reference to any of the figures.
[0077] Further, while various embodiments described herein may use the term System-on-a-Chip or System-on-Chip ( “SoC” or “SOC” ) to describe a device or system having a processor and associated circuitry (e.g., Input / Output ( “I / O” ) circuitry, power delivery circuitry, memory circuitry, etc. ) integrated monolithically into a single Integrated Circuit ( “IC” ) die, or chip, the present disclosure is not limited in that respect. For example, in various embodiments of the present disclosure, a device or system may have one or more processors (e.g., one or more processor cores) and associated circuitry (e.g., I / O circuitry, power delivery circuitry, etc. ) arranged in a disaggregated collection of discrete dies, tiles, and / or chiplets (e.g., one or more discrete processor core die arranged adjacent to one or more other die such as a memory die, I / O die, etc. ) . In such disaggregated devices and systems, the various dies, tiles, and / or chiplets may be physically and / or electrically coupled together by a package structure including, for example, various packaging substrates, interposers, active interposers, photonic interposers, interconnect bridges, and the like. The disaggregated collection of discrete dies, tiles, and / or chiplets may also be part of a System-on-Package ( “SoP” ) .
[0078] In some embodiments, the operations discussed herein, e.g., with reference to Figs. 1 et seq., may be implemented as hardware (e.g., logic circuitry) , software, firmware, or combinations thereof, which may be provided as a computer program product, e.g., including one or more tangible (e.g., non-transitory) machine-readable or computer-readable media having stored thereon instructions (or software procedures) used to program a computer to perform a process discussed herein. The machine-readable medium may include a storage device such as those discussed with respect to the figures.
[0079] Additionally, such computer-readable media may be downloaded as a computer program product, wherein the program may be transferred from a remote computer (e.g., a server) to a requesting computer (e.g., a client) by way of data signals provided in a carrier wave or other propagation medium via a communication link (e.g., a bus, a modem, or a network connection) .
[0080] Reference in the specification to “one embodiment” or “an embodiment” means that a particular feature, structure, and / or characteristic described in connection with the embodiment may be included in at least an implementation. The appearances of the phrase “in one embodiment” in various places in the specification may or may not be all referring to the same embodiment.
[0081] Also, in the description and claims, the terms “coupled” and “connected, ” along with their derivatives, may be used. In some embodiments, “connected” may be used to indicate that two or more elements are in direct physical or electrical contact with each other. “Coupled” may mean that two or more elements are in direct physical or electrical contact. However, “coupled” may also mean that two or more elements may not be in direct contact with each other, but may still cooperate or interact with each other.
[0082] Thus, although embodiments have been described in language specific to structural features and / or methodological acts, it is to be understood that claimed subject matter may not be limited to the specific features or acts described. Rather, the specific features and acts are disclosed as sample forms of implementing the claimed subject matter.
Claims
1.An apparatus comprising:a storage device to store a request reference count; andlogic circuitry to update the request reference count in response to receipt of a job request from a process at a device and to update the request reference count in response to completion of a job corresponding to the received job request,wherein the device is to enter into, remain in, or exit a power state in response to a value of the request reference count.2.The apparatus of claim 1, wherein the power state comprises one of an idle power state and an active power state.3.The apparatus of any one of claims 1 to 2, wherein the job request is an enqueue request to store the job request in a shared work queue.4.The apparatus of any one of claims 1 to 3, wherein the shared work queue is to store a plurality of job requests from one or more user application processes.5.The apparatus of any one of claims 1 to 4, wherein the job request is to be transmitted by a user application process.6.The apparatus of any one of claims 1 to 5, wherein the logic circuitry is to increment the request reference count in response to the receipt of the job request and to decrement the request reference count in response to completion of the job corresponding to the received job request.7.The apparatus of any one of claims 1 to 6, wherein the completion of the job is to be indicated via invocation of an instruction or storage of a value in a register.8.The apparatus of any one of claims 1 to 7, wherein a processor capability flag is to indicate an existence of the request reference count.9.An apparatus comprising:a processor to issue a job request with a job descriptor to a target device; andthe target device including device power management logic to cause the target device to transition from an idle power state to an active power state in response to receipt of the job descriptor,wherein the device power management logic is to cause the target device to transition from the idle power state prior to the job descriptor being stored in a work queue of the target device.10.The apparatus of claim 9, wherein the processor is to issue the job request via an enqueue command.11.The apparatus of any one of claims 9 to 10, wherein the processor is to issue the job request via a enqueue command.12.The apparatus of any one of claims 9 to 11, wherein the device power management logic is to communicate with the processor via an Advanced Control and Power Interface (ACPI) .13.The apparatus of any one of claims 9 to 12, wherein the job request is an enqueue request to store the job request in a shared work queue.14.The apparatus of any one of claims 9 to 13, wherein the work queue is a shared work queue to store a plurality of job requests from one or more user application processes.15.The apparatus of any one of claims 9 to 14, wherein the job request is caused to be transmitted by a user application process.16.The apparatus of any one of claims 9 to 15, wherein a processor capability flag is to indicate whether the target device is capable of transitioning from the idle power state prior to the job descriptor being stored in the work queue of the target device..17.One or more non-transitory computer-readable media comprising one or more instructions that when executed on a processor configure the processor to perform one or more operations to cause:a storage device to store a request reference count; andlogic circuitry to update the request reference count in response to receipt of a job request from a process at a device and to update the request reference count in response to completion of a job corresponding to the received job request,wherein the device is to enter into, remain in, or exit a power state in response to a value of the request reference count.18.The one or more non-transitory computer-readable media of claim 17, wherein the power state comprises one of an idle power state and an active power state.19.The one or more non-transitory computer-readable media of any one of claims 17 to 18, wherein the job request is an enqueue request to store the job request in a shared work queue.20.The one or more non-transitory computer-readable media of any one of claims 17 to 19, further comprising one or more instructions that when executed on the one processor configure the processor to perform one or more operations to cause the shared work queue to store a plurality of job requests from one or more user application processes.21.An apparatus comprising means to perform a method as set forth in any preceding claim.22.Machine-readable storage including machine-readable instructions, when executed, to implement a method or realize an apparatus as set forth in any preceding claim.