Patent Description:
The various components making up a computer system typically operate within a range of parameters defined by performance protocols or standards. For instance, the temperature within a computer chassis is often monitored to detect when the system may rise above a predetermined temperature reading. Other forms of information that may be monitored within a computer system include, without limitation, voltages associated with semiconductor components located on the baseboard of the system; velocity (e.g., rpm) of cooling fans located on the baseboard or within the system chassis; and the velocity of spindle motors within hard disk drives or optical drives.

Various types of sensors are being used to detect health, operation, and performance-related parameters associated with a computer system and its constituent components. These sensors include thermostats, voltage meters, and tachometers. A computer system typically employs one or more management modules to assist in the collection and analysis of information sensed by the various sensors measuring operating and performance-related parameters within the system. These management modules may be either software or hardware components, but typically encompass both hardware and software components that are implemented by service processors. One such management module is referred to as a "Baseboard Management Controller" (BMC). The BMC is a microcontroller integrated into the baseboard (also known in the industry as the "motherboard") of a computer system, and having a specified number of contact pins through which information sensed by various sensors is received for analysis by the BMC. In order to perform this analysis, the BMC is programmed with firmware for implementing procedures relating to system monitoring and recovery. With this firmware, the BMC is programmed to monitor various operating and performance-related parameters sensed within a computer system. The BMC is also programmed to analyze this information to determine whether any of the sensed parameters are currently outside of an expected or recommended operating range, the occurrence of which is commonly referred to as an "event.

In some computer systems, the BMC is unable to communicate directly with the hardware components. In these cases, the hardware components may have an integrated system that detects when its temperature is approaching predetermined threshold levels that would cause lack of performance or catastrophic failure. The integrated system of the hardware components is not connected to a fan system within the computer systems, thereby making the fan system inefficient. Therefore, there is a need to provide a computer system that establishes a connection between the BMC and the hardware components.

<CIT> discloses a computer system including: a hypervisor configured to run on a CPU and to provide a domain; and a virtual baseboard management controller (BMC) stack configured to run in the domain or as part of the hypervisor. The virtual BMC stack is configured to receive a CPU temperature measured by a temperature sensor through a system bus of the computer system.

In addition, <CIT> discloses a system for chassis management including a plurality of motherboards, a plurality of baseboard management controllers (BMCs), and one chassis level component. The chassis level components can include fans and sensors (e.g., voltage sensors, current sensors, or temperature sensors). The plurality of BMCs and the chassis level component are interconnected via a communication bus.

In addition, <CIT> discloses devices and techniques for implementing virtual system management controllers. A baseboard management controller (BMC) can include processing circuitry to monitor system sensors, and to provide monitoring information for system sensors responsive to requests for monitoring information. The processing circuitry may further implement a virtual satellite controller within a firmware stack.

According to the present invention, a method of thermal management in a computing device, a computer system for thermal management of a computing device and a non-transitory computer readable medium according to the independent claims are provided. Further preferred embodiments of the present invention are defined in the dependent claim. In particular, a method of thermal management in a computing device using a management controller is provided. The method includes obtaining, via a virtual management controller, monitoring information of a thermally sensitive component untethered to the management controller. The monitoring information can include temperature information of the thermally sensitive component. The method also includes transmitting, via the virtual management controller, the monitoring information to the management controller via a system interface of the management controller. Finally, the method includes adjusting, via the management controller, the operation of a thermal management component of the computing device tethered to the management controller.

In some embodiments of the disclosure, the monitoring information for the thermally sensitive component includes identification information. Furthermore, the monitoring information for the thermally sensitive component can include a slowdown temperature, a shutdown temperature, and a current temperature. In some embodiments, the thermally sensitive component can include a graphics processing unit. In addition, a virtual baseboard management controller manager can be implemented to manage messages received at the management controller from two or more virtual management controllers.

In some embodiments, the management controller can be a baseboard management controller. Furthermore, the thermal management component can be a fan device. In addition, the virtual management controller can be a virtual baseboard management controller.

A computer system for thermal management of a computing device using a management controller is also provided. The computer system can include a thermally sensitive component, specifically a management controller that includes a system interface. The management controller can be untethered to the thermally sensitive component. The system can also include a thermal management component tethered to the management controller and a virtual management controller. The virtual management controller can be configured to obtain monitoring information of the thermally sensitive component untethered to the management controller. In some embodiments, the monitoring information can include temperature information of the thermally sensitive component. The virtual management controller can also be configured to transmit the monitoring information to the management controller via the system interface of the management controller. Finally, the virtual management controller can be configured to adjust operation of the thermal management component tethered to the management controller.

A non-transitory computer readable medium that stores instructions executable by at least one processor is also provided. The stored instructions can include obtaining, via a virtual management controller, monitoring information of a thermally sensitive component untethered to the management controller. The monitoring information can include temperature information of the thermally sensitive component. The method also includes transmitting, via the virtual management controller, the monitoring information to the management controller via a system interface of the management controller. Finally, the method includes adjusting, via the management controller, operation of a thermal management component of the computing device tethered to the management controller.

Additional features and advantages of the disclosure will be set forth in the description that follows, and in part, will be obvious from the description; or can be learned by practice of the principles disclosed herein. These and other features of the disclosure will become fully apparent from the following description and appended claims, or can be learned by the practice of the principles set forth herein.

In order to describe the manner in which the above-recited disclosure and its advantages and features can be obtained, a more particular description of the principles described above will be rendered by reference to specific examples illustrated in the appended drawings. These drawings depict only example aspects of the disclosure, and are therefore not to be considered as limiting of its scope. These principles are described and explained with additional specificity and detail through the use of the following drawings.

The present invention is described with reference to the attached figures, where like reference numerals are used throughout the figures to designate similar or equivalent elements. The figures are not drawn to scale, and they are provided merely to illustrate the instant invention. Several aspects of the invention are described below with reference to example applications for illustration. It should be understood that numerous specific details, relationships, and methods are set forth to provide a full understanding of the invention. One having ordinary skill in the relevant art, however, will readily recognize that the invention can be practiced without one or more of the specific details, or with other methods. In other instances, well-known structures or operations are not shown in detail to avoid obscuring the invention. The present invention is not limited by the illustrated ordering of acts or events, as some acts may occur in different orders and/or concurrently with other acts or events. Furthermore, not all illustrated acts or events are required to implement a methodology in accordance with the present invention.

In view of the foregoing, to the present application teaches a method and computer system for thermal management in a computing device using a management controller. The method includes obtaining, via a virtual management controller, monitoring information of a thermally sensitive component untethered to the management controller. The monitoring information can include temperature information of the thermally sensitive component. The method also includes transmitting, via the virtual management controller, the monitoring information to the management controller via a system interface of the management controller. Finally, the method includes adjusting, via the management controller, operation of a thermal management component of the computing device tethered to the management controller.

<FIG> schematically depicts a conventional computer system <NUM>. The computer system <NUM> has central processing units (CPU) <NUM>. The CPUs <NUM> are standard central processors that perform arithmetic and logical operations necessary for the operation of the computer system <NUM>. The CPUs <NUM> can be connected to graphic processor units (GPU) <NUM>. Like many electrical components, the GPUs <NUM> dissipate heat while operating. As such, the computer system <NUM> can provide fans <NUM> to cool off the GPUs <NUM> after the GPUs <NUM> reach a prescribed temperature.

Such a determination, i.e., whether the GPUs <NUM> exceed a prescribed temperature, is made by a baseboard management controller (BMC) <NUM>. In certain embodiments, the GPUs <NUM> can be in communication with a management bus <NUM> of the host computer system <NUM> to provide information regarding the GPUs' health, operation, and performance conditions to the BMC <NUM>. Such information can include the GPU voltage and temperature. Each GPU <NUM> can be connected to sensors (not shown) measuring the electrical component's health, operation, and performance-related parameters through, for example, the management bus <NUM>. This information can be sent to the BMC <NUM> by way of the management bus <NUM>. The BMC <NUM> is also communicatively coupled by way of the management bus <NUM> to the fans <NUM> to control functionality over the fans <NUM>.

The component that initiates communication on a bus is referred to as a master, and the component to which the communication is sent is referred to as a slave. The BMC component <NUM> typically functions as the master on the management bus <NUM>, but may also function as either a master or a slave in other circumstances. Each of the various components communicatively connected to the BMC <NUM> by way of the management bus <NUM> can be addressed using a slave address. The management bus <NUM> is used by the BMC <NUM> to request and/or receive various health, operation, and performance-related parameters from one or more components, which can be also communicatively connected to the management bus <NUM>. In <FIG>, the management bus <NUM> communicatively connects the BMC <NUM> to the GPUS <NUM> (and its temperature sensor (not shown)) and the CPU fans <NUM>, thereby providing a means for the BMC <NUM> to monitor and/or control operation of these components. The management bus <NUM> can typically include tachometers, heat sensors, voltage meters, amp meters, and digital and analog sensors. In certain embodiments, the management bus <NUM> is an I<NUM>C. While the computer system <NUM> exemplifies direct connection between the GPUS <NUM> and the BMC <NUM> using the I<NUM>C bus, it is important to note that not every available GPU in the industry is able to support transmitting the I<NUM>C temperature signal to the BMC <NUM>.

<FIG> schematically depicts the conventional computer system <NUM> where the GPU <NUM> is unable to communicate with the BMC <NUM> by way of the management bus <NUM>. In this case, the BMC <NUM> is unable to receive the temperature information of the GPUs <NUM>. The BMC is unable to receive the temperature information of the GPUs because some GPUs are not configured to send I<NUM>C temperature signals to the BMC. Since the GPU cannot pass the temperature information to the BMC <NUM>, the GPUs <NUM> is unable to effectively control the fan speed of the fans <NUM>. As a result, the GPUs <NUM> are forced to perform their own assessments to perform slowdowns or shutdowns.

<FIG> provide a prior art schematic representation of GPU, BMC, and fan performance where the GPU <NUM> is untethered to the BMC <NUM>. When the GPU <NUM> is untethered to the BMC <NUM>, the GPU <NUM> unable to communicate directly with the BMC <NUM>. In the event the GPU <NUM> is unable to communicate with the BMC <NUM>, the BMC <NUM> is forced to rely on its internal temperature sensor, which determines the ambient temperature. In <FIG>, the GPU <NUM> can have a predetermined slowdown threshold temperature of <NUM> degrees Celsius. The GPU <NUM> can also have a predetermined shutdown threshold temperature of <NUM> degrees Celsius. For the purposes of the example of <FIG>, the current temperature of GPU <NUM> can be <NUM> degrees Celsius, indicating that the GPU is operating at <NUM>% utilization. In this case, the GPU <NUM> is approaching the threshold temperature at which the GPU <NUM> will slow down performance in an attempt to avoid overheating. Furthermore, if the temperature of the GPU <NUM> should happen to exceed <NUM> degrees Celsius, the GPU <NUM> will automatically shut down to prevent any catastrophic damage.

It should be noted that the BMC <NUM> only detects an ambient temperature of <NUM> degrees Celsius. This ambient temperature may or may not be impacted by the temperature of the GPU <NUM>. The BMC <NUM> will notify the fan <NUM> to operate at a higher speed only if the ambient temperature exceeds a predetermined threshold. This is independent of the GPU temperature. The fan <NUM> is operating at <NUM>% merely, while the GPU is approaching the predetermined slowdown threshold temperature of <NUM> degrees Celsius.

In <FIG>, the current temperature of GPU <NUM> can be <NUM> degrees Celsius, indicating that the GPU is operating at <NUM>% utilization. In this case, the GPU <NUM> has reached the threshold temperature at which the GPU <NUM> will slow down performance in an attempt to avoid overheating. The BMC <NUM> only detects an ambient temperature of <NUM> degrees Celsius. The BMC will notify the fan <NUM> to operate at a higher speed only if the ambient temperature exceeds a predetermined threshold. This is independent of the temperature of the GPU <NUM>. The fan <NUM> is operating at <NUM>% merely, while the GPU <NUM> has reached the predetermined slowdown threshold temperature of <NUM> degrees Celsius. At this point, the GPU is operating at <NUM>% utilization. Therefore, there is a need for the GPU to be communicatively coupled to the BMC such that the fans can be optimized in response to the GPU temperature. The following discussion provides exemplary embodiments of how the BMC can be coupled to the GPU to receive temperature information and other pertinent information relating to the GPU performance.

<FIG> schematically depicts a stack <NUM> in accordance with certain embodiments of the present disclosure. <FIG> shows a stack <NUM>, and more specifically a stand-alone, general purpose computer system. One skilled in the art would appreciate that the computer systems <NUM> discussed throughout the present disclosure can be of various types, such as desktop computers, laptop computers, tablet computers, handheld computers, server computers, blade servers, industrial computers, appliance controllers, electronics equipment controllers, etc. The stack <NUM> can be a special purpose computer system or a system that incorporates more than one interconnected system, such as a client-server network. Indeed, the stack <NUM> of <FIG> only represents an exemplary embodiment of the present disclosure, and therefore, should not be considered to limit the disclosure in any manner.

The stack <NUM> can include a virtual machine <NUM>, a hypervisor <NUM>, a host operating system (OS) <NUM>, and a management controller. In some embodiments, the management controller can be a physical BMC <NUM>. The virtual machine <NUM> can communicate directly with an electronic component. For the purposes of this exemplary embodiment, the electronic component can include a GPU <NUM>. It should be understood by one of ordinary skill in the art that the electronic component can include any thermally sensitive components known in the art. GPUs are well-known in the art, and therefore not described in further detail herein. Like many electrical components, the GPU <NUM> dissipates heat while operating. As such, a fan <NUM> is used to cool off the GPU <NUM> after the GPU <NUM> reaches a prescribed temperature. Such a determination, i.e., whether the GPU <NUM> exceeds a prescribed temperature, is made by a virtual management controller implemented by utilizing the hypervisor <NUM>. The virtual management controller can include a virtual BMC <NUM>. The hypervisor <NUM>, also called a virtual machine manager (VMM), is typically one of many hardware virtualization techniques allowing multiple operating systems, termed guests, to run concurrently on a host computer. The virtual BMC <NUM> is configured to pass messages to a raw BMC buffer <NUM> at the physical BMC <NUM>. Because the stack <NUM> has a conventional physical BMC <NUM>, the virtual BMC <NUM> need not function like a physical BMC <NUM>. However, in some embodiments, the virtual BMC <NUM> can function like a physical BMC <NUM>.

The virtual BMC <NUM> runs as a part of the hypervisor <NUM> or on a hypervisor that runs on a CPU (not shown). One skilled in the art would appreciate that the hypervisor <NUM> can also run on two CPUs, four CPUs, eight CPUs, or any suitable number of CPUs. The hypervisor <NUM> can be of various types and designs, such as XEN, MICROSOFT HYPER-V, VMWARE ESX. In some embodiments, the operating system <NUM> can be installed in a virtual machine. In alternative embodiments, the operating system <NUM> may be running on a physical machine. The operating system <NUM> can host one or more application programs. For example, the operating system <NUM> can host input/output memory management unit peripheral component interconnect express (IOMMU PCIe) devices <NUM>. An IOMMU is a memory management unit (MMU) that connects a direct-memory-access-capable (DMA-capable) I/O bus to the main memory. Like a traditional MMU, which translates CPU-visible virtual addresses to physical addresses, and the IOMMU maps device-visible virtual addresses (also called device addresses or I/O addresses in this context) to physical addresses. Some units also provide memory protection from faulty or malicious devices. An example IOMMU is the graphics address remapping table (GART) used by AGP and PCIe graphics cards on Intel Architecture and AMD computers.

The IOMMU PCIe devices <NUM> are able to communicate through the Virtual Function IO (VFIO) <NUM> that allows direct access to the IOMMU PCIe devices <NUM> from user space. Although primarily designed as a hypervisor-bypass technology for virtualization uses, it can also be used in a high performance computing (HPC) context. The VFIO <NUM> allows the IOMMU PCIe devices <NUM> to communicate through the hypervisor using a quick emulator (QEMU) <NUM> and a PCIe Passthrough <NUM>. The QEMU <NUM> is a hosted hypervisor that performs hardware virtualization, and the PCIe Passthrough <NUM> assigns a IOMMU PCIe device <NUM> (NIC, disk controller, HBA, USB controller, firewire controller, soundcard, etc) to a virtual machine guest, giving it full and direct access to the IOMMU PCIe device <NUM>. Using the QEMU <NUM> and the PCIe Passthrough <NUM>, the IOMMU PCIe devices <NUM> can communicate directly with the GPU <NUM>. For example, where the GPU needs virtualization in the virtual machine, the CPU can enable the IOMMU PCIe devices <NUM> for the VFIO <NUM> to virtualize the PCIe device. The QEMU <NUM> can be configured to read the user's settings, including the VFIO devices. Finally, when the virtual machine loads NVIDIA's driver, the GPU can be recognized as the Passthrough GPU in the virtual machine. While NVIDIA is an example driver and the low end API for retrieving information from the GPU, other drivers can be implemented to perform the same or similar functions.

In certain embodiments, the virtual BMC <NUM> can be implemented as a part of the hypervisor <NUM>. An operating system agent <NUM> of the stack <NUM> runs on the virtual machine <NUM>. The GPU <NUM> is able to communicate directly with the operating system agent <NUM> by way of a CUDA NVML API <NUM>. The GPU <NUM> is in communication with the operating system agent <NUM>, which is also in communication with the virtual BMC <NUM>. The operating system agent <NUM> communicates with the virtual BMC <NUM> by way of a system interface. In some embodiments, the system interface can include a keyboard controller style interface. In certain embodiments, the physical BMC <NUM> can provide advanced monitoring features and more detailed hardware information (such as temperatures in different thermal zones).

The virtual BMC <NUM> running on the hypervisor <NUM> can be communicatively coupled by way of the operating system agent <NUM> to the GPU <NUM>. The virtual BMC <NUM> can also be communicatively coupled to a GPU temperature sensor (not shown) located at the GPU <NUM>. The virtual BMC <NUM> can also be communicatively coupled by way of the physical BMC <NUM> to the fan <NUM>. In this way, the virtual BMC <NUM> can enable the physical BMC <NUM> to provide monitoring functionality over the temperature sensor and control functionality over the fan <NUM>. This is discussed in more detail with respect to <FIG>.

<FIG> schematically depicts a stack <NUM> in accordance with certain embodiments of the present disclosure. The stack <NUM> illustrates multiple GPU devices 308A and 308B in communication with the physical BMC <NUM>. The stack <NUM> can provide a virtual BMCs 307A and 307B for each GPU device (308A and 308B). Each of the virtual BMCs 307A and 307B can be connected to the physical BMC <NUM> by way of a virtual BMC manager <NUM>. The virtual BMC manager <NUM> is implemented to manage the messages received at the physical BMC <NUM> from the virtual BMCs 307A and 307B. By implementing the virtual BMC manager <NUM>, the physical BMC <NUM> can receive the temperature information to control the speed of the BMC fan <NUM> by reading the NVML API temperature messages. The virtual BMC manager <NUM> also manages authority and access to the physical BMC <NUM>.

<FIG> provide a schematic representation of the GPU <NUM>, virtual BMC <NUM>, physical BMC <NUM>, and the fan <NUM> performance in accordance with an embodiment of the disclosure. In certain embodiments, the physical BMC <NUM> monitors health-related aspects associated with the stack <NUM>, such as, but not limited to, the temperature of one or more components of the stack <NUM> (e.g., GPU <NUM>); the speed of rotational components (e.g., spindle motor, fan <NUM>, etc.) within the system; the voltage across or applied to one or more components within the system <NUM>; and the available or used capacity of memory devices within the system <NUM>.

To accomplish these monitoring functions, the physical BMC <NUM> is communicatively connected to one or more components by way of the virtual BMC <NUM> and the virtual BMC manager <NUM>. In certain embodiments, these components include sensor devices for measuring various health, operation, and performance-related parameters within the stack <NUM>. The sensor devices may be either hardware or software based components configured or programmed to measure or detect one or more of the various operating and performance-related parameters. The physical BMC <NUM> monitors health, operation, and performance-related parameters received from various components of the stack <NUM> in order to determine whether an "event" is occurring within the system <NUM> by way of the virtual BMC <NUM>. For example, with respect to the configuration shown in <FIG>, the physical BMC <NUM> monitors operation of the GPU <NUM> by way of the GPU temperature sensor (not shown) to determine whether certain operating or performance related parameters exceed or fall below prescribed threshold ranges of operation. An example of such an event may be the temperature reading of heat dissipated by the GPU <NUM> reaching <NUM> degrees Celsius. The fan <NUM> is operating at <NUM>%. The GPU <NUM> can have a predetermined slowdown threshold temperature of <NUM> degrees Celsius and a predetermined shutdown threshold temperature of <NUM> degrees Celsius. This information can be sent to the physical BMC <NUM> by way of the virtual BMC <NUM> and the virtual BMC manager <NUM>.

In accordance with certain embodiments of the disclosure, the physical BMC <NUM> may also control one or more components of the computer system <NUM> in response to the occurrence of an event. Referring back to the example above, <FIG> illustrates an initiation of the fan <NUM> in response to the temperature of the GPU <NUM>. The physical BMC <NUM> may initiate operation of the fan <NUM> upon determining that the temperature dissipated by the GPU <NUM> is approaching the predetermined slowdown threshold temperature of <NUM> degrees Celsius. As indicated in <FIG>, the fan <NUM> is operating at <NUM>% fan capacity. In response to the temperature of the GPU <NUM> approaching the predetermined shutdown threshold temperature of <NUM> degrees Celsius, the physical BMC <NUM> may initiate operation of the fan <NUM> to operate at <NUM>% fan capacity. This is illustrated in <FIG>. The increase in fan capacity can cool the GPU <NUM> to <NUM> degrees Celsius.

The matter set forth in the foregoing description and accompanying drawings is offered by way of illustration only and not as a limitation. The actual scope of the invention is intended to be defined in the following claims when viewed in their proper perspective based on the prior art.

The terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit the invention. Furthermore, to the extent that the terms "including," "includes," "having," "has," "with," or variants thereof are used in either the detailed description and/or the claims, such terms are intended to be inclusive in a manner similar to the term "comprising.

Claim 1:
A method of thermal management in a computing device using a management controller (<NUM>), comprising:
obtaining, via at least two virtual management controllers (307A, 307B), monitoring information of one or more thermally sensitive components (308A, 308B) of the computing device unable to communicate directly to the management controller (<NUM>), the monitoring information comprising temperature information of the one or more thermally sensitive components (308A, 308B);
transmitting, via the at least two virtual management controllers (307A, 307B), the monitoring information to the management controller (<NUM>) via a system interface of the management controller (<NUM>);
adjusting, via the management controller (<NUM>), operation of at least one thermal management component (<NUM>) of the computing device tethered to the management controller (<NUM>),
managing, by a virtual baseboard management controller manager (<NUM>), messages received at the management controller (<NUM>) from at least two virtual management controllers (307A, 307B), and the at least two virtual management controllers obtaining monitoring information from at least two different thermally sensitive components (308A, 308B); and
wherein the at least two virtual management controllers run on a hypervisor (<NUM>) that runs on a CPU of the computing device, and the CPU is connected to the thermally sensitive components.