Sólo hay un programa que lee bien la temperatura en los AMD Ryzen: ¿por qué?
Los AMD Ryzen están teniendo una gran acogida por los usuarios, pero muchos de estos que son novatos en la plataforma encuentran una serie de novedades con la que tienen que lidiar y aprender nuevos conceptos. Uno de ellos es el del software de lectura de temperaturas, ya que actualmente solo hay un programa que es capaz de leer bien este dato de cualquier AMD Ryzen, pero ¿por qué ocurre esto?
Desde su inicio la lectura de temperaturas en Ryzen ha sido controvertida
Al llegar Ryzen al mercado la política de lectura por parte de los distintos software existentes tuvo que cambiar y adaptarse a los nuevos sensores que AMD introdujo en sus microprocesadores. Para facilitar la tarea, los de Lisa Su lanzaron al mismo tiempo que sus CPUs la utilidad Ryzen Master, la cual proporcionaba una lectura más precisa de la temperatura del procesador.
El problema que surgió es que de inicio ni siquiera el propio programa de AMD lograba leer correctamente la temperatura, por lo que tuvo que ser actualizado y AMD tuvo que lanzar unas declaraciones explicando cómo funcionaba todo este problema en sus Ryzen.
En aquella declaración comprendimos parte de la dimensión del problema: el «culpable» era el sensor principal que informa de la temperatura en los Ryzen llamado «T Control» o «tCTL«.
Este sensor lee la temperatura entre la unión (Tj o True Junction) del punto de la interfaz de la matriz y el disipador térmico, por lo que en ciertos modelos de procesador los valores tienen que ser compensados para que todos los modelos tengan el mismo valor tCTL máximo.
Esta compensación de temperatura se hizo para que todos los procesadores tuviesen una política del ventilador de CPU constante. Es decir, los procesadores más calientes tendrán una temperatura y voltaje offset mayor para mantener todo en orden.
Citando un ejemplo de AMD, el Ryzen 7 1700 no necesita esa compensación y los sensores ofrecen la temperatura correctamente, pero sus hermanos 1700X y 1800X tienen +20 ºC en sus lecturas por lo anteriormente dicho, ergo habría que restarle esos grados para obtener la temperatura real.
Zen 2 mantiene un problema similar a sus predecesores
Los nuevos procesadores Ryzen 3000 muestran un problema similar, salvo porque en este caso todo gira en torno a AMD y su nuevo algoritmo de temperatura y software.
Ryzen Master lee correctamente la temperatura general de la CPU, pero esto no está abierto para que los demás desarrolladores lo implementen correctamente en sus software, por lo que tienen que realizar sus propios sistemas de lectura, timmings y variaciones ponderadas entre núcleos.
Esto quiere decir otras velocidades de lectura distintas a Ryzen Master y desde luego con menos precisión. Para verlo pondremos algunos ejemplos:
Un software como AIDA64 en su última versión no es capaz de situar una temperatura ni siquiera similar a lo que lo hace Ryzen Master, donde como vemos, hay 13,1 grados de diferencia.
Si damos el salto a otro software igualmente profesional y actualizado como es HWiNFO64 vemos un resultado similar. Mientras que Ryzen Master marca 39,65 grados los sensores de HWiNFO64 detectan 53,8ºC, una diferencia de 14,15 grados celsius.
Las cosas no mejoran si usamos otro software ampliamente usado y con un grado de actualizaciones muy alto como es Core Temp:
Como vemos, pasamos de 41,07 grados a 54 grados en el mismo instante, de nuevo un valor cercano a 13 grados de idle, pero ¿qué hay de la temperatura bajo carga? Comprobémoslo.
Curiosamente las temperaturas son prácticamente clavadas ¿se repetirá en los demás software usados?
HWiNFO64 funciona de la misma manera, casi clavando las temperaturas bajo estrés, pasemos a Core Temp pues.
Mismo resultado, las temperaturas son clavadas en este caso al prescindir de decimales, pero entonces ¿qué está pasando en idle y por qué solo Ryzen Master es capaz de leer correctamente la temperatura?
Tanto AMD como los desarrolladores son «culpables» de este «problema»
Fue la propia AMD la que habló sobre ello, aunque de un modo indirecto, pero que está totalmente relacionado y del cual ya hablamos: el «efecto observador«.
Cuando la CPU está en idle e intentamos leer las velocidades, voltajes y temperaturas con estos programas la mayoría lo que consiguen es despertar cada núcleo en periodos que pueden ser tan agresivos como 20 ms, donde repiten lecturas en espacios de nuevo agresivos como 200 ms.
Esto proporciona una constante subida y bajada de la frecuencia y del voltaje, donde por consiguiente la temperatura hace lo propio.
Esto sumado a que AMD no abre su algoritmo de detección a los demás desarrolladores fomenta que los picos de temperatura que vemos se deban a esos aumentos y disminuciones constantes, dando valores irreales y por norma mucho más altos.
Bajo estrés esto no se replica porque el procesador está dándolo todo en frecuencia y voltaje, por lo tanto, no hay variaciones de temperatura y las lecturas son más homogéneas y por tanto los valores son reales.
La solución debería pasar por la apertura del código de Ryzen Master a los desarrolladores, donde se les den parámetros correctos de tiempo e intervalos de lectura de cada CPU, para que así las mediciones sean correctas en todo momento y así ellos puedan implementar tiempos de lectura y refresco menos agresivos cuando se detecten CPUs AMD Ryzen.
Pero visto que el tiempo va pasando y la mejora es menor de lo esperado, es posible que esto nunca termine llegando, principalmente porque entonces Ryzen Master puede caer en desuso, algo que AMD no quiere evidentemente.