Patent Publication Number: US-7711659-B2

Title: Adaptive system for fan management

Description:
BACKGROUND 
   Conventional computing platforms use fan speed algorithms and stored parameters to control platform fans based on component temperatures.  FIG. 1  illustrates a conventional Advanced Fan Speed Control architecture  100  for controlling fans based on a degree of thermal influence of each fan on a platform component or zone. Specifically, weighting matrix  110  provides influence coefficients indicating the relative influence of fans F 1  and F 2  on temperatures detected by temperature sensors T 1  and T 2 . ΔPWM boxes  120  and  130  generate a control action associated with each sensor using a PID (i.e., Proportional+Integral+Derivative) law. A PWM signal for each fan is then generated by multiplying the control action by a corresponding influence coefficient. 
   The parameters of weighting matrix  110  are determined and stored by a system integrator based on typical system configuration, usage and placement. The parameters are therefore not efficient for environmental conditions to either extreme of the typical conditions. The static set of parameters may therefore lead to thermal guard bands and suboptimal performance. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  is a block diagram illustrating a system according to some embodiments. 
       FIG. 2  is a flow diagram of a process according to some embodiments. 
       FIG. 3  illustrates fuzzification of input variables according to some embodiments. 
       FIG. 4  is a block diagram of a system according to some embodiments. 
   

   DETAILED DESCRIPTION 
     FIG. 2  is a diagram of process  200  according to some embodiments. Process  200  may be executed by any combination of hardware, software and/or firmware, and some elements may be executed manually. 
   Initially, environmental variables are normalized at  210 . The environmental variables may comprise any variables which may affect the temperature of an electronic device whose temperature is to be managed, including but not limited to fan speed, ambient temperature, and airflow velocity. In a specific example of  210 , the environmental variables X 1  and X 2  represent the respective speeds of two platform fans. The normalized variables may therefore be represented as:
 
 x   1 =( X   1   −X   1,min )/( X   1,max   −X   1,min ), and
 
 x   2 =( X   2   −X   2,min )/( X   2,max   −X   2,min ).
 
   The normalized variables are fuzzified at  220 . Any system for fuzzification that is or becomes known may be used in some embodiments of  220 . Some embodiments employ triangular, properly-overlapped membership functions for each input and Takagi-Sugeno fuzzy inference.  FIG. 3  is a graph illustrating five triangular membership functions that may be used to fuzzify the normalized fan speed inputs of the present example. 
   Next, at  230 , fuzzy reasoning models are created based on observation vectors and a fan control parameter vector. According to some embodiments, the normalized environment variables at instant k delayed by d samples (i.e., x 1 (k−d) and x 2 (k−d)) become the inputs to the fuzzy system. 
   The i-th fuzzy reasoning model may therefore become:
 
 R   i : IF  x   1 ( k−d )ε X   1  AND  x   2 ( k−d )ε X   2  THEN  y   i ( k )= A   i ( q   −1 ) y ( k )+ B   i ( q   −1 ) u ( k ),
 
where X 1  and X 2  are fuzzy sets corresponding to the aforementioned membership functions. y i (k+1) is a one-instant-ahead value of junction temperature T j  of the device to be managed as predicted by the i-th model defined by A i (q −1 ), B i (q −1 ). The polynomials A(q −1 )=a 1 q −1 +a 2 q −2 + . . . +a n q −n  and B(q −1 )=b 0 +b 1 q −1 +b 2 q −2 + . . . +b m−1 q −m+1  represent a linear model, with q −1  being a delay operator. y(k) is an observation vector of present and past values of the measured junction temperature T j , and u(k) is an observation vector of present and past values of the measured power consumption.
 
   Hence, the consequent of the i-th rule can be rewritten as: 
   
     
       
         
           
             
               
                 
                   
                     y 
                     i 
                   
                   ⁡ 
                   
                     ( 
                     k 
                     ) 
                   
                 
                 = 
                   
                 ⁢ 
                 
                   
                     
                       
                         A 
                         i 
                       
                       ⁡ 
                       
                         ( 
                         
                           q 
                           
                             - 
                             1 
                           
                         
                         ) 
                       
                     
                     ⁢ 
                     
                       y 
                       ⁡ 
                       
                         ( 
                         k 
                         ) 
                       
                     
                   
                   + 
                   
                     
                       
                         B 
                         i 
                       
                       ⁡ 
                       
                         ( 
                         
                           q 
                           
                             - 
                             1 
                           
                         
                         ) 
                       
                     
                     ⁢ 
                     
                       u 
                       ⁡ 
                       
                         ( 
                         k 
                         ) 
                       
                     
                   
                 
               
             
           
           
             
               
                 = 
                   
                 ⁢ 
                 
                   
                     
                       a 
                       
                         1 
                         , 
                         i 
                       
                     
                     ⁢ 
                     
                       
                         T 
                         j 
                       
                       ⁡ 
                       
                         ( 
                         
                           k 
                           - 
                           1 
                         
                         ) 
                       
                     
                   
                   + 
                   
                     
                       a 
                       
                         2 
                         , 
                         i 
                       
                     
                     ⁢ 
                     
                       
                         T 
                         j 
                       
                       ⁡ 
                       
                         ( 
                         
                           k 
                           - 
                           2 
                         
                         ) 
                       
                     
                   
                   + 
                   … 
                   + 
                   
                     
                       a 
                       
                         n 
                         , 
                         i 
                       
                     
                     ⁢ 
                     
                       
                         T 
                         j 
                       
                       ⁡ 
                       
                         ( 
                         
                           k 
                           - 
                           n 
                         
                         ) 
                       
                     
                   
                   + 
                 
               
             
           
           
             
               
                   
                 ⁢ 
                 
                   
                     
                       b 
                       
                         0 
                         , 
                         i 
                       
                     
                     ⁢ 
                     
                       u 
                       ⁡ 
                       
                         ( 
                         k 
                         ) 
                       
                     
                   
                   + 
                   
                     
                       b 
                       
                         1 
                         , 
                         i 
                       
                     
                     ⁢ 
                     
                       u 
                       ⁡ 
                       
                         ( 
                         
                           k 
                           - 
                           1 
                         
                         ) 
                       
                     
                   
                   + 
                   
                     
                       b 
                       
                         2 
                         , 
                         i 
                       
                     
                     ⁢ 
                     
                       u 
                       ⁡ 
                       
                         ( 
                         
                           k 
                           - 
                           2 
                         
                         ) 
                       
                     
                   
                   + 
                   … 
                   + 
                   
                     
                       b 
                       
                         
                           m 
                           - 
                           1 
                         
                         , 
                         i 
                       
                     
                     ⁢ 
                     
                       
                         u 
                         ⁡ 
                         
                           ( 
                           
                             k 
                             - 
                             m 
                             + 
                             1 
                           
                           ) 
                         
                       
                       . 
                     
                   
                 
               
             
           
         
       
     
   
   The foregoing elements of process  200  may be executed during design and/or testing of a platform in which the remaining elements of process  200  are to be executed. Accordingly, the platform itself might not execute any of the foregoing elements in some embodiments. 
   Determination of temperature y i (k) for each of the i models requires the present and past values that comprise observation vectors y(k) and u(k). Accordingly, at  240 , observation vectors are constructed using previously detected and stored samples indicative of device power consumption and device temperature. The samples indicative of device power consumption may comprise any signal correlated with active power. For example, the data samples include activity factors or signals derived from hardware performance counters. 
   Temperature sensors such as thermal diodes and/or digital thermometers may be employed to obtained the temperature samples used to construct observation vector y(k). In some embodiments of  240 , the samples are obtained by superimposing a power trace that has rich frequency content in the range of interest (e.g., a pseudo-random binary sequence) on the operational load of the device. 
   An estimated temperature is determined based on the fuzzy reasoning models at  250 . For example, an estimated temperature at instant k may be obtained by combining the estimates from the local models as follows:
 
 y ( k )=Σ i=1,N {( A   i ( q   −1 ) y ( k )+ B   i ( q   −1 ) u ( k )) w   i ( x   1   ,x   2 )},
 
where the weights w i  must satisfy the condition Σ i=1,N  w i =1. The weights w i  represent the validity of each model based on the degree of membership of the fuzzy input variables.
 
   Next, an error is determined based on the estimated temperature and on an actual measured temperature. The actual temperature may be measured at substantially instant k by any suitable system that is or becomes known. Generally, the error may be given by:
 
 e ( k )= T   j ( k )− y ( k ).
 
   At  270 , it is determined whether the error is less than threshold value. If so, flow pauses at  280  before returning to  240  and continuing as described below. An error that is less than the threshold value therefore indicates that the fan control parameter vector does not require adaptation. Accordingly, the fan control parameter vector may be used during the pause at  280  to populate a weighing matrix of a fan control system such as system  100  of  FIG. 1 . The pause at  280  may be of any duration deemed suitable for retesting the suitability of the fan control parameter vector. 
   Flow proceeds to  290  if the error is greater that the threshold value. The fan control parameter vector is adapted at  290  using a recursive least squares parameter adaptation algorithm. Any suitable such algorithm may be employed at  290 . 
   Continuing with the present example, the fan control parameter vector may be defined as θ=(a 1,1  . . . a n,1 b 1,1  . . . b m,1 a 1,2  . . . a n,2  . . . b 1,N  . . . b m,N ) by combining all the parameters of the fuzzy models and the information vector φ(k)=(w 1 T j (k−1) . . . w 1 T j (k−n)w 1 u(k) . . . w 1 u(k−m−1)w 2 T j (k−1) . . . w 2 T j (k−n)w 2 u(k) . . . w 2 u(k−m−1) . . . w N u(k−m−1)) in a similar way. The predicted temperature can therefore be expressed as y(k)=σ T φ(k), where T is the transpose operator. 
   The fan control parameter vector σ is then adapted at  290  using a least squares algorithm that provides stability and convergence. For example, using the Extended Least Squares algorithm, the adaptation algorithm corresponds to:
 
θ( k+ 1)=θ( k )+ F ( k )φ( k ) e ( k+ 1),
 
 F ( k+ 1)= F ( k )− F ( k )φ( k )φ T ( k ) F ( k )/(1+φ T    F ( k )φ( k )),
 
 e ( k+ 1)=( T ( k+ 1)−θ T ( k )φ( k ))/(1+φ T    F ( k )φ( k )).
 
     FIG. 4  is a block diagram of a system to implement at least  240 - 290  of process  200  according to some embodiments. System  400  includes CPU  410 , which may correspond to the device of interest in the previous example. CPU  410  is in communication with Memory Controller Hub  420  over a front side bus and with I/O Controller Hub  430  over a Platform Environment Control Interface. Thermal sensors  440  may measure temperatures as described above and provide the measured temperatures via Simple Serial Transport to management engine  425  of MCH  420 . 
   MCH  420  also includes virtual thermal relationships table  427  for storing fan control parameters (i.e., a fan control parameter vector) according to some embodiments. Management engine  425  may execute any algorithm to generate control signals based on the stored parameters and to issue the control signals to ICH  430  via a Controller Link. ICH  430  may then control fans  450  based on the control signals. 
   Memory  460  is in communication with MCH  420  and may comprise, according to some embodiments, any type of memory for storing data, such as a Single Data Rate Random Access Memory (SDR-RAM), a Double Data Rate Random Access Memory (DDR-RAM), or a Programmable Read Only Memory (PROM). 
   The several embodiments described herein are solely for the purpose of illustration. Therefore, persons in the art will recognize from this description that other embodiments may be practiced with various modifications and alterations.