Computing devices can be used to execute various applications and programs. A processor is deployed in a computing device to execute the applications and programs. The computing device can have additional components that can help execute the applications, such as memory, graphics processors, and the like.
The computing device may include expansion interfaces to allow additional components to be added to the computing device. The additional components may add functionality to the computing device. For example, the additional components may provide more powerful graphics, larger amounts of memory, additional communication interfaces, and the like.
Examples described herein provide a computing device and method to control power savings features of add-in cards connected to an expansion interface. As discussed above, computing devices can be used to execute various applications and programs. A computing device may include expansion interfaces to allow additional components to be added to the computing device. The additional components may add functionality to the computing device. For example, the additional components may provide more powerful graphics, larger amounts of memory, additional communication interfaces, and the like.
An example of the additional components may include add-in cards (AICs) that can be connected to an expansion interface. Some AICs may support active state power management to reduce power consumption when not being used. However, some AICs may not support active state power management.
Some expansion interfaces may use power savings control signals that are sent to all AICs connected to the slots of the expansion interface. As a result, if an AIC connected to a slot of the expansion interface is not compatible with the power savings control signal, the AIC may go into a power savings mode and be unable to wake up from the power savings mode. As a result, the functionality of the AIC may be disrupted, leading to an undesirable user experience.
The present disclosure provides a method to selectively transmit the power savings control signal to particular slots of the expansion interface. Thus, the power savings control signal may be transmitted to AICs connected to the expansion interface that have a power savings feature that is compatible with the power savings control signal. By selectively sending the power savings control signal, AICs connected to the expansion interface that are not compatible with the power savings control signal may continue to operate uninterrupted.
In an example, the expansion interface may scan the slots of the expansion interface to identify the AICs connected to the expansion interface and to determine the compatibility of the AICs with the power savings control signal. The power savings control signal may then be selectively transmitted to the slots with the AICs that are compatible with the power savings control signal.
In an example, the expansion interface may use a system management bus (SMBus) to identify the AICs. The identification of the AICs may be compared to a white list and/or a black list to determine whether the AICs are compatible with the power savings control signal. In an example, the expansion interface may use a general purpose input/output (GPIO) channel to perform an impedance check to determine if the AICs are compatible with the power savings control signal.
Thus, the computing device of the present disclosure may take advantage of active state power management features on newer AICs, while allow the use of older AICs that do not have the active state power management feature. Thus, older AICs can continue to be used in computing devices with the newer AICs without potential errors or failures.
It should be noted that computing device 100 has been simplified for ease of explanation. Although various example components are illustrated in
In an example, the computing device 100 may include a processor 102, a memory 104, and an expansion interface 108. The processor 102 may be communicatively coupled to the memory 104 and the expansion interface 108. The processor 102 may access the memory 104 to access data and/or instructions 106 and to control operation of the expansion interface 108.
The memory 104 may be any type of non-transitory computer readable medium. For example, the memory 104 may be a hard disk drive, a solid state drive, a non-volatile memory express (NVMe) card, a random access memory (RAM), a read-only memory (ROM), and the like. The memory 104 may store the instructions 106. The instructions 106 may be executed by the processor 102 to perform the functions described herein to control power savings features of add-in cards connected to the expansion interface 108.
The expansion interface 108 may include slots 110 and 112. Although two slots are illustrated in
In an example, the add-in card 114 and the add-in card 116 may be graphics cards to provide additional graphics processing capabilities for the computing device 100. The add-in card 114 may be a graphics card that has active state power management (ASPM) features and may be connected to the slot 110. For example, the add-in card 114 may have various power savings modes (e.g., L0s stand-by mode and L1 deep idle mode). The various power savings modes can be controlled by activation and pausing of a reference clock that controls operation of the add-in cards 114 and 116 connected to the slots 110 and 112 of the expansion interface 108.
The add-in card 116 may also be a graphics card, but an older graphics card that does not support or have the ASPM features. For example, the add-in card 116 may have a stand-by mode, but may not have the deep idle mode (L1). Thus, if the reference clock to the add-in card 116 is paused, the add-in card 116 may not be able to wake from the paused reference clock and may malfunction during operation.
The present disclosure allows the processor 102 to identify the compatibility of the add-in cards 114 and 116 with a power savings control signal. If the add-in card 114 or 116 is not compatible with the power savings control signal, the ability of the add-in card 114 or 116 to receive the power savings control signal (e.g., a clk_req signal as discussed below) may be disabled. For example, a channel to carry the power savings control signal to the slot 110 or 112 may be temporarily disconnected or disabled. Thus, the processor 102 may still generate and transmit the power savings control signal to the slot 110 or 112 that is connected to an add-in card 114 or 116 that is compatible with the power savings control signal.
In an example, the processor 102 may obtain compatibility information from the add-in cards 114 and 116.
At a later time, the add-in card 114 may send a request for the power savings control signal to activate a power savings mode. The processor 102 may generate and transmit the power savings control signal to the slot 110. However, the slot 112 may not receive the power savings control signal since the power savings control signal to the slot 112 has been disabled.
It should be noted that computing device 200 has been simplified for ease of explanation. Although various example components are illustrated in
The computing device 200 may include a host controller 202, a memory 204, a peripheral component interconnect express (PCIe) interface 208, and a system clock 220. The host controller 202 may be communicatively coupled to the memory 204, the expansion interface 208, and the system clock 220. The host controller 202 may access the memory 204 to access data and/or instructions 206 and to control operation of the expansion interface 208 and the system clock 220.
The memory 204 may be any type of non-transitory computer readable medium. For example, the memory 204 may be a hard disk drive, a solid state drive, a non-volatile memory express (NVMe) card, a random access memory (RAM), a read-only memory (ROM), and the like. The memory 204 may store the instructions 206 and a BIOS 218. The instructions 206 may be executed by the processor 202 to perform the functions described herein to control power savings features of add-in cards connected to the expansion interface 208.
In an example, the BIOS 218 may be used to obtain compatibility information of add-in cards 214 and 216 connected to the PCIe interface 208 via slots 210 and 212, respectively. The BIOS 218 may then selectively disable the power savings control signal (e.g., a clk_req signal) to the slot 210 or 212 connected to an add-in card 214 or 216 that is not compatible with the power savings control signal. The BIOS 218 may obtain the compatibility information and disable the appropriate slots 210 or 212 during a boot sequence of the computing device 200.
As used herein, a BIOS refers to hardware or hardware and instructions to initialize, control, or operate a computing device prior to execution of an operating system (OS) of the computing device. Instructions included within a BIOS may be software, firmware, microcode, or other programming that defines or controls functionality or operation of a BIOS. In one example, a BIOS may be implemented using instructions, such as platform firmware of a computing device, executable by a processor. A BIOS may operate or execute prior to the execution of the OS of a computing device. A BIOS may initialize, control, or operate components such as hardware components of a computing device and may load or boot the OS of the computing device.
In some examples, a BIOS may provide or establish an interface between hardware devices or platform firmware of the computing device and an OS of the computing device, via which the OS of the computing device may control or operate hardware devices or platform firmware of the computing device. In some examples, a BIOS may implement the Unified Extensible Firmware Interface (UEFI) specification or another specification or standard for initializing, controlling, or operating a computing device.
The PCIe interface 208 may include slots 210 and 212. Although two slots are illustrated in
In an example, the add-in card 214 and the add-in card 216 may be graphics cards to provide additional graphics processing capabilities for the computing device 200. The add-in card 214 may be a graphics card that has active state power management (ASPM) features and may be connected to the slot 210. For example, the add-in card 214 may have various power savings modes (e.g., L1 sub-states and new L1.1 and L1.2 lower power sub-state modes). The various power savings modes can be controlled by activation and pausing of a reference clock signal received from the system clock 220 that controls operation of the add-in cards 214 and 216 connected to the slots 210 and 212 of the PCIe interface 208.
The add-in card 216 may also be a graphics card, but an older graphics card that does not support or have the ASPM features. For example, the add-in card 216 may have a stand-by mode, but may not have the deep idle mode (e.g., L1.1 and L1.2 lower power sub-state modes). Thus, if the reference clock signal from the system clock 220 to the add-in card 216 is paused, the add-in card 216 may not be able to wake from the paused reference clock and may malfunction during operation.
The present disclosure allows the host controller 202 to identify the compatibility of the add-in cards 214 and 216 with the clk_req signal. The clk_req signal may be used to restart the reference clock signal from the system clock 220 to a particular slot 210 or 212 when the add-in card has been placed in a deep idle mode using the clk_off signal to pause the system clock 220. Pausing the reference clock signal may cause an add-in card with ASPM features to enter a deep idle mode L1. The clk_req signal may be requested to reactivate the reference clock signal from the system clock 220. If the add-in card 214 or 216 is not compatible with the clk_req signal, the ability of the add-in card 214 or 216 to receive the clk_req signal may be disabled. For example, a channel for the clk_req signal to the particular slot 210 or 212 may be temporarily disconnected or disabled. Thus, the host controller 202 may still generate and transmit the clk_req signal to the slot 210 or 212 that is connected to an add-in card 214 or 216 that is compatible with the clk_req signal.
In an example, the host controller 202 may obtain compatibility information from the add-in cards 214 and 216.
At a later time, the add-in card 214 may send a request for the power savings control signal to activate a power savings mode. The processor 202 may generate and transmit a clk_off signal to the slot 210. The clk_off signal may pause the reference clock signal from the system clock 220 to the slot 210. Thus, the add-in card 214 may go into a deep idle mode (e.g., L1.1 and L1.2 lower power sub-state modes). However, the clk_off signal is not sent to the slot 212, and the reference clock signal is allowed to run continuously or freely on the slot 212 connected to the add-in card 216.
The add-in card 214 may then want to wake from the deep idle mode and send a request for a clk_req signal to restart the reference clock signal from the system clock 220. The host controller 202 may generate and transmit the clk_req signal to the slot 210 to wake the add-in card 214 and restart the reference clock signal from the system clock 220. However, the clk_req signal is not sent to the slot 212. Thus, the ability of the slot 212 to receive the power savings control signals is disabled and the add-in card 216 can operate freely without interruption that could be caused by the power savings control signals generated and received by the slot 210.
Referring to
The host controller 202 may be connected to the ROM 310 and ROM 314 via a system management bus (SMBus) 302. The ROM 310 may store identification information of the add-in card 214. The ROM 314 may store identification information of the add-in card 216. The identification information may include a model name, a model number, a serial number, feature information, and the like.
In an example, the host controller 202 may obtain the identification information from the add-in card 214 and the add-in card 216 via the SMBus 302. The host controller 202 may then compare the identification information to a white list 230, a black list 232, and/or an uncertainty list 234 stored in the memory 204. The white list 230 may store a list of add-in cards that are known to be compatible with the power savings control signal (e.g., the clk_req signal). The black list 232 may store a list of add-in cards that are known to be not compatible with the power savings control signal. The uncertainty list 234 may store a list of add-in cards whose compatibility with the power savings control signal is uncertain or unknown.
The host controller 202 may then compare the identification information for the add-in card 214 to the white list 230, the black list 232, and the uncertainty list 234 to determine the compatibility information for the add-in card 214. For example, if the identification information for the add-in card 214 is found in the white list 230, the add-in card 214 may be compatible with the power savings control signal. However, if the identification information for the add-in card 214 is found in the black list 232 or the uncertainty list 234, the add-in card 214 may not be compatible with the power savings control signal.
The same process may be repeated with the identification information of the add-in card 216 to determine the compatibility of the add-in card 216 with the power savings control signal. In an example, the memory 204 may just store the white list 230. For example, if the identification information for the add-in card 214 or 216 is not found in the white list 230, it may be determined that the add-in card 214 or 216 is not compatible with the powers savings control signal.
In an example, the white list 230, the black list 232, and the uncertainty list 234 may be periodically updated. For example, as new models and types of add-in cards are developed, the compatibility of the new models of add-in cards with the power savings control signal may be tested. The identification information may then be stored in the white list 230, the black list 232, or the uncertainty list 234 based on the compatibility test results.
As noted above, the add-in card 214 may be determined to be compatible with the power savings control signal, and the add-in card 216 may be determined to not be compatible with the power savings control signal. Thus, the host controller 202 may temporarily disable a channel 308 (shown in dashed lines in
The clk_req channel 304 may be connected from the host controller 202 to the GPU 312 and the GPU 316. The clk_req channel 304 may have an independently controllable channel 306 to the GPU 312 of the add-in card 214 and an independently controllable channel 308 to the GPU 316 to the add-in card 216. Thus, the host controller 202 may temporarily disable the channel 308, while allowing a clk_req signal to be sent to the GPU 312 via the clk_req channel 304 and 306.
In an example, a channel 402 may be connected to the host controller 202. The channel 402 to may also include independently controllable channels 404 and 406. The channel 404 may be connected to the GPU 312, and the channel 406 may be connected to the GPU 316.
The channel 402 may serve as a general purpose input/output (GPIO) channel and the clk_req channel. For example, before a reset, the channel 402 may serve as a GPIO channel. After the reset is performed and the channels 404 and 406 are selectively enabled or disabled based on the compatibility information, the channel 402 may serve as the clk_req channel.
In an example, the add-in cards 214 and 216 may be connected and loaded into the respective slots 210 and 212 of the PCIe interface 208. The host controller 202 may perform a platform reset to reset the GPIO pad, while the system, or computing device, resumes from a S3 (stand-by), S4 (hibernate), or S5 (soft off) state associated with the power savings states of the ASPM feature.
The host controller 202 may then perform an impedance check over the GPIO channel 402. If the clk_req pin is connected, the check may return a value to the host controller 202. Thus, for the add-in card 214, the impedance check may return a value since the clk_req pin 408 is connected. If the clk_req pin is not connected, the check may return an undefined or indefinite response as the pin is open. Thus, for the add-in card 216, the impedance check may return an undefined value since the clk_req pin 410 is not connected and is open.
Based on the impedance check, the host controller 202 may determine that the add-in card 214 is compatible with the power savings control signal and that the add-in card 216 is not compatible with the powers savings control signal. The host controller 202 may temporarily disable the channel 406 (as shown by dashed lines in
Thus, the present disclosure may control the power savings feature of an add-in card connected to the expansion interface or PCIe interface. The processor or host controller may determine compatibility information (e.g., via identification information compared to a white list or an impedance check) and selectively disable channels to a slot connected to add-in cards that are determined not to be compatible with the power savings control signal. As a result, add-in cards that are compatible may receive and use the power savings control signal to cycle between the various power savings modes, while the add-in cards that are not compatible may operate freely uninterrupted.
At block 502, the method 500 begins. At block 504, the method 500 detects that a first add-in card connected to a first slot of an expansion interface is compatible with a power savings control signal. For example, the first add-in card may be a graphics card that has ASPM features. The expansion interface may be a PCIe interface that uses clk_off and clk_req signals to cycle between power savings modes for the ASPM feature of the add-in card.
At block 506, the method 500 detects that a second add-in card connected to a second slot of the expansion interface is not compatible with the power savings control signal. For example, the second add-in card may be an older graphics card that does not have the ASPM features. Thus, the second add-in card may not be compatible with the powers savings control signals, such as the clk_off and clk_req signals used by the PCIe interface to cycle between the power savings modes associated with the ASPM features.
In an example, the compatibility of the first add-in card and the second add-in card may be detected via identification information obtained over the SMBus or via an impedance check, as described above in
The impedance check may check a clk_req pin in the slots of the PCIe interface. For example, if the add-in card is compatible with the power savings control signal, the clk_req pin may be connected to the add-in card. When the impedance check is performed, a non-zero value may be returned. However, if the add-in card is not compatible with the power savings control signal, the clk_req pin may not be connected to the add-in card. Thus, when the impedance check is performed, an undefined value or error signal may be returned as the clk_req pin is open.
At block 508, the method 500 disables the power savings control signal to the second slot. In an example, the BIOS may perform the compatibility detection during a boot sequence of the computing device. The BIOS may then disable the channel that feeds the clk_req signal to the second slot temporarily. Thus, when the processor generates and transmits the clk_req signal over the clk_req channel, the second slot may be prevented from receiving the clk_req signal.
At block 510, the method 500 receives a power savings mode request from the first add-in card. For example, the computing device may be booted after the power savings control signal to the second slot is disabled. During operation of the computing device, the first add-in card may go into a power savings mode (e.g., an L1.1 and L1.2 lower power sub-state modes).
At block 512, the method 500 transmits the power savings control signal to the first slot. For example, the processor may generate and transmit a clk_off signal to pause the reference clock that controls operation of the slots on the PCIe interface. However, since the channel to the second slot is disabled, the second slot may not receive the clk_off signal. As a result, the reference clock for the second add-in card may continue to operate freely or uninterrupted. The first slot may receive the clk_off signal and pause the clock allowing the first add-in card to enter the power savings mode.
At a later time, when the first add-in card is to wake to operate again, the first add-in card may send a request for the clk_req signal. The clk_req signal may reactivate the reference clock for the first slot to allow the first add-in card to wake and begin operating again. However, since the channel to the second slot is temporarily disabled, the second slot may not receive the clk_req signal, and the second add-in card may continue to operate normally. At block 514, the method 500 ends.
In an example, the instructions 606 may include providing instructions. For example, the instructions 606 may provide a reference clock to a first slot of an expansion interface connected to a first add-in card that is compatible with a clk_off signal and a clk_req signal and a second slot of the expansion interface connected to a second add-in card that is not compatible with the clk_off signal and the clk_req signal. For example, the first add-in card and the second add-in card may be graphics cards. The first add-in card may have active state power management (ASPM) features that can function properly in response to the reference clock being paused by the clk_off signal or reactivated by the clk_req signal. The second add-in card may not have the ASPM features and may fail if the reference clock is paused.
The instructions 608 may include receiving instructions. For example, the instructions 608 may receive a request from the first add-in card to enter a power savings mode.
The instructions 610 may include transmitting instructions. For example, the instructions 610 may transmit the clk_off signal to the first slot to pause the reference clock for the first slot while the reference clock continues to operate for the second slot. The reference clock can be reactivated when the add-in card returns to an operating state using a clk_req signal.
The clk_off and the clk_req signal to the second slot may be disabled through a process that identifies the second add-in card is not compatible with the clk_off signal and the clk_req. For example, the identification information of the add-in cards may be compared to a white list and/or a black list to determine compatibility. The identification information may be obtained by gathering information over the SMBus or by performing an impedance check, as described above.
It will be appreciated that variants of the above-disclosed and other features and functions, or alternatives thereof, may be combined into many other different systems or applications. Various presently unforeseen or unanticipated alternatives, modifications, variations, or improvements therein may be subsequently made by those skilled in the art which are also intended to be encompassed by the following claims.