Control de voltajes y frecuencias por software

jueves, 19 de febrero de 2009 |

19 de febrero de 2009, por kike_1974

Una forma de conseguir que un PC sea más silencioso es reduciendo la velocidad de los ventiladores. Pero esto se tiene que hacer sin que peligre la correcta refrigeración adecuada de los componentes. Una forma de facilitar la posibilidad de reducir la velocidad e los ventiladores es conseguiendo que los componentes consuman menos. En este artículo nos vamos a centrar en el microprocesador.

Se puede conseguir que un micro consuma menos reduciendo su frecuencia y su voltaje, de hecho su consumo es proporcional a la frecuencia y al cuadrado del voltaje de funcionamiento. Se pueden utilizar diferentes programas (software) para modificar los valores de frecuencia y voltaje del micro durante su funcionamiento. En este artículo vamos a ver algunos de estos programas (rmclock, crystalcpuid) y cómo funcionan.

Introducción:


Nota: Esta guía fue originalmente publicada el 6/2/2008 en el foro Noticias3D, concretamente aquí.

Esta guía está orientada a tener un PC más fresco y silencioso, y de paso que consuma algo menos. El método de control de voltajes y frecuencias por software que vamos a ver es justamente el mismo que usan C&Q y EIST, pero en esta guía veremos la forma de sacar mucho más partido a las posibilidades que ofrece el micro que esas dos tecnologías de AMD e INTEL.

Una de las cosas fundamentales cuando buscamos un PC silencioso es encontrar componentes con el menor consumo posible para que generen la menor cantidad de calor posible y sea más fácil la refrigeración con menos ventiladores o con ventiladores a menos vueltas. Además asociado a este menor consumo tenemos asociada una factura de la luz algo más reducida.

Uno de los componentes donde podemos conseguir reducir el calor generado es el microprocesador. La primera pregunta es ¿merece la pena?. Primero unas cuentas:

Un kW/h cuesta actualmente 0,092834€ (BOE.29-12-07), y a ese precio hay que aplicarle el impuesto especial de la electricidad y el IVA. Es decir, en total los impuestos son (0,092834*1,05113)*4,864% y el IVA, es decir el coste total es ((0,092834*1,05113)*1,04864)*1,16= 0,1187, o redondeando unos 12 céntimos por kW/h. Por cierto, es impresionante (o una vergüenza...) que paguemos casi el 30% de impuestos en electricidad... pero bueno, ese es otro tema...

Por ejemplo, un ordenador para descargas 24/7 que consuma sobre unos 100W consume al año unos 0,1*24*365*12 = 105€. Si conseguiéramos bajar 20W con undervolting, pasarían a ser 0,08*24*365*12= 84€. O lo que es lo mismo, por cada 10W de consumo que reduzcamos, nos ahorramos unos 10€ al año. Teniendo en cuenta que las cuentas las hemos hecho sobre el supuesto de que el ordenador está siempre encendido pues no es mucho.

Luego la razón de hacer undervolting no es por ahorrar, sino sobre todo por tener mejores temperaturas en el micro y poder tener el PC más silencioso, y aquí sí que merece la pena ya que las diferencias de temperaturas sí que son importantes con voltajes menores. Aunque el pequeño ahorro que conseguimos también es bienvenido.

Conceptos previos:


Es importante hablar de unos conceptos teóricos previamente para entender bien lo que vamos a hacer. Además hay muchos errores de concepto sobre lo que es un Vcore, lo que es un VID, etc. Empecemos por estos conceptos:

FSB (frecuencia del Front Side Bus): Es la frecuencia a la que funciona la placa base. La mayoría de componentes funcionan con esta velocidad como referencia (micro, memorias, etc.).

FIDs (frequency identifiers): Es un código que codifica diferentes referencias de frecuencia con respecto al FSB. Normalmente son multiplicadores (x8, x9, etc.). La frecuencia a la que funciona un procesador depende del FSB (referencia) y del FID (multiplicador). Los FID dependen totalmente del micro, algunos micros tienen más FIDs y otros menos. Este tema es bastante conocido en el ámbito de Overclocking así que tampoco me entretengo mucho con él. Los FID se pueden fijar en la BIOS, pero sobre todo lo que nos interesa es que se pueden cambiar también por software (por ejemplo Cool&Quiet y EIST modifican dinámicamente los FIDs).

Vcore: Es el voltaje que la placa base proporciona al microprocesador. Hay placas que permiten fijar este voltaje a valores diferentes. Normalmente hay una opción "Auto" y otras opciones de valores concretos. Estos valores dependen totalmente del fabricante de la placa y los reguladores que incluya. Para hacer overclocking es habitual aumentar este voltaje a un valor fijo mayor que el voltaje de stock para poder hacer funcionar el micro a mayores velocidades. También se puede disminuir, y es una forma de hacer undervolting (a través de la BIOS, pero lo que queremos en esta guía es aprender a cambiarlo por software). Tiene el inconveniente de que una vez fijado a un valor perdemos el control de los VIDs (que comentamos lo que son en el siguiente párrafo).

VID: Un vid no tiene nada que ver con el Vcore, confundir estos dos conceptos es uno de los errores más frecuentes. Un VID es un código que codifica unos posibles valores de división de voltaje. Habitualmente toma como referencia el voltaje de 3,3V que proporciona la placa base al micro. Se puede ver un VID como el equivalente para voltaje de los multiplicadores de frecuencia. Los VID se modifican por software (por ejemplo Cool&Quiet o EIST modifican los VIDs). Dependiendo del micro puede haber más o menos VIDs disponibles (lo mismo que pasa con los multiplicadores). El problema es que los VID utilizan siempre un voltaje fijo como referencia que no se puede cambiar, a diferencia de los multiplicadores que utilizan el FSB como referencia y que sí se puede modificar. Puede que haya alguna placa que permita una referencia de voltaje variable, pero a día de hoy no conozco ninguna. Como los VID están referenciados a un voltaje fijo, es habitual referirse a ellos por sus valores (VID de 1.1V, VID de 1.16V, etc.), a diferencia de los FID que al tener referencia variable es mejor usar valores relativos (x6, x7, x8, etc.).

En resumen, podemos cambiar la frecuencia y el voltaje al que funciona el micro cambiando el FSB, y luego de una de las dos formas siguientes: modificando el Vcore y el multiplicador en la BIOS, o bien modificando por software los VIDs y los FIDs. Normalmente estas dos formas son excluyentes (aunque hay excepciones). En esta mini-guía vamos a hablar de la segunda forma (por software).

Cool&Quiet y EIST: Estas dos tecnologías hacen exactamente lo mismo (y algo muy parecido a lo que vamos a hacer nosotros). Ambas modifican dinámicamente los VID y los FID dependiendo de la carga del micro. Por ejemplo, un E6600 utiliza un voltaje de 1.225V de stock a 2.4GHz, pero si el micro está sin hacer nada ("en idle") entonces se cambian automáticamente su VID y FID para funcionar a 1.6GHz a 1.1V. Lógicamente para que funcionen estas tecnologías hace falta tener configurado en la BIOS los voltajes en "Auto" y los multiplicadores también en "Auto" (aunque hay excepciones como ya hemos dicho, algunas placas permiten que funcionen C&Q y EIST incluso fijando un voltaje en la BIOS, pero no es lo habitual y no es algo estándar, por lo que no podemos utilizarlo de forma general).

Cambio de VIDs y FIDs por software


Bueno, pues ya conocemos los conceptos previos.¿Qué es lo que vamos a hacer nosotros? Pues vamos a modificar los VIDs y FIDs igual que C&Q y EIST pero a nuestro gusto, para encontrar la combinación de undervolting/overvolting underclocking/overclocking que más nos guste, e incluso utilizar perfiles.

Ventajas:


- Modificación dinámica de frecuencias y voltajes de forma dinámica según la carga del micro

- Cuando el micro no hace nada consume mucho menos

- Cuando el micro está a tope también consume menos si ponemos un voltaje inferior al de stock

- Podemos hacer incluso overclocking de forma dinámica cuando se necesita

- Podemos utilizar perfiles y cambiarlos manualmente por software

Inconvenientes:


- Los VIDs están limitados (igual que los multiplicadores). Por ejemplo, en mi E6600 el menor VID posible es 1.1V y el mayor es 1.325V. Por tanto no podríamos hacer OC más allá de los 1.325V, ni bajar el consumo cuando el micro no hace nada por debajo de 1.1V. Algunos micros tienen mayor flexibilidad (mi brisbane X2 4800+ permite desde 0.8V hasta 1.4V). Por lo demás no hay ningún otro inconveniente.

- Dependemos de un software, y puede que no esté disponible para todos los sistemas operativos. No conozco softwares equivalentes para linux por ejemplo (aunque es posible que existan).

Los programas que podemos utilizar para modificar los VIDs y FIDs dinámicamente son:
- rmclock (gratuito, aunque existe una versión más completa de pago)
- crystalcpuid (gratuito)
- notebook hardware control (gratuito, orientado a portátiles).

Búsqueda de valores óptimos de frecuencias y voltajes


Lo primero antes de configurar nada es conocer nuestro micro, y conocer sobre todo cuáles son los valores que queremos utilizar.

Ésta es la parte más pesada al igual que sucede cuando buscamos valores estables para hacer OC. Tenemos que encontrar los valores adecuados para el FSB (en la BIOS) y los VID y FID que queramos utilizar. Puesto que el FSB no lo vamos a cambiar por software sino que dejamos un valor fijo en la BIOS (que puede ser el valor por defecto si no queremos hacer OC), lo omitiremos por simplificar un poco las cosas.

Tenemos que encontrar por tanto valores estables de VID y FID. A cada pareja VID/FID lo llamaremos estado. Lo recomendable es tener al menos 3 estados, uno con los valores para la máxima frecuencia de funcionamiento, otro para la mínima y otro intermedio. Con crystalCPUID se pueden configurar 3 estados, mientras que con rmclock tantos como FIDs existan.

Lo importante es que sean valores estables. Hay muchas maneras de buscarlos, aquí cada uno tiene su método. Una opción es comenzar desde los valores de stock del micro y arrancar un programa que estrese el micro y detecte errores, como prime95 u orthos. Y luego ir bajando paso a paso los voltajes, dejando un tiempo de entre 5 y 10 minutos entre cada paso. Es importante comprobar que realmente ha cambiado el voltaje, podemos utilizar para ello CPU-z. Antes de llegar a un valor totalmente inestableorthos suele dar errores. En ese caso subimos el voltaje un paso al valor anterior y así sucesivamente hasta que no salgan errores. Cuando no haya errores conviene dejar unas cuantas horas el orthos con esos valores para comprobar que es estable (12 a 24 horas).

Para cambiar el voltaje en esos pasos podemos utilizar crystalcpuid, en el menú Function seleccionamos la opción Intel Enhanted SpeedStep para los micros intel, o bien AMD K6/K7/K8 Multiplier para los AMD (además salen otras opciones para otros micros). Nos saldrá una pantalla como ésta:





En la que podemos ir probando diferentes voltajes y multiplicadores. Captura con todo junto (crystalcpuid, orthos y cpu-z):





Y ya es cuestión de ir probando. Yo en concreto uso este método cuando cae en mis manos un micro nuevo:

- Utilizando FSB de stock, busco para cada multiplicador (FID) el menor VID al que es estable.
- Si quiero buscar algo de OC: busco el FSB con el cual con el máximo multiplicador (FID) es estable al máximo voltaje (VID). Suena lioso pero no lo es tanto ;). Éste es el máximo OC que podemos hacer por software, ya que no podemos poner voltajes mayores que el del máximo VID por software. Por cierto, para no andar reiniciando continuamente el PC buscando ese valor suelo utilizar el programa clockgen que permite cambiar el FSB por software. Y dejo ese FSB, y de la misma forma que antes busco para cada FID el menor VID al que es estable.
- Finalmente anoto la tabla de FID/VIDs obtenidos para mi micro en un fichero para tener los datos para un futuro.

Después de todo esto, deberíamos tener nuestros datos preparados.

Ejemplos:


Ejemplo 1)

En mi E6600 me salieron estos valores:

- El FSB con el cual el máximo multiplicador es estable al máximo VID me salió 338, por lo que fijé este valor en la BIOS.
- La tabla de FID con sus mínimos VIDs a los que eran estables:

  • x6 --> 1,132V (2 GHz aprox.)
  • x7 --> 1,132V (2,4 GHz aprox.)
  • x8 --> 1,132V (2,7 GHz aprox.)
  • x9 --> 1,340V (3 GHz aprox.)

(1,132V es el mínimo VID de este micro, sino hubiéramos podido poner valores inferiores).

Ejemplo 2):

Otro ejemplo, mi Athlon X2 4800+ brisbane:

- El FSB lo dejo en 200 por defecto, ya que en este micro no hago nada de OC
- La tabla de FIDs/VIDs (sólo calculé 3 FIDs en este caso):

  • x5 --> 0,8V (1GHz)
  • x8 --> 0,950V (1,6GHz)
  • x12.5 --> 1,2V (2,5GHz)

Estos valores de voltaje están muy por debajo de los valores que venían de stock (tanto para el idle con C&Q como el valor máximo), las temperaturas bajaron muy considerablemente.

Una vez que tenemos calculados los estados que vamos a utilizar empieza lo divertido que es configurar nuestros programas (CrystalCPUID, RMClock) para que hagan los cambios automáticamente.

Cambio de FID/VIDs automáticamente con CrystalCPUID:


Con CrystalCPUID se hace utilizando el modo "multiplier management".

En primer lugar, para configurarlo, vamos al menú File y seleccionamos la opción multiplier management setting. Nos saldrá una pantalla como ésta:




Se pueden definir 3 estados: maximun, middle y minimun.

En los tres se puede observar que podemos asociar un multiplicador y un VID (hay que dejar pinchado el botón Enable Voltage como en la captura para que cambien los VIDs).

El valor Interval Time es el tiempo que tarda el multiplicador en cambiar desde el último cambio. Es un sistema de seguridad por si acaso, para no permitir muchos cambios bruscos de voltaje en muy poco espacio de tiempo. Lo podemos dejar como viene por defecto.

Los valores Up y Down threshold son los que indican qué carga tiene que tener el micro para pasar al estado superior o para volver al inferior.

Por ejemplo: Yo en mi E6600 lo tengo configurado para que pase al estado máximo (9x) sólo en caso de que la carga sea superior al 90%, así sólo paso a ese estado (que son 3GHz con 1,32V) sólo cuando realmente hace falta. Lo normal es que el micro se mueva entre los estados 6x y 8x, ambos con el voltaje mínimo de 1,1V (así el micro está bastante fresquito).

De las demás opciones pueden ser interesantes:

Switch Trigger: indica en caso de varios cores qué se considera como carga del micro: el máximo de alguno de ellos, la media, etc.
Exit mode: indica si cerramos el programa en qué estado deja el micro.
Up y Down: indican qué secuencias de saltos de estados se permiten

Bueno, ya deberíamos tener configurado el CrystalCPUID para que funcione automáticamente. Sólo nos queda ir al menú Function y seleccionar la opción "Multiplier Management". Veremos en la barra de tareas el icono del crystalcpuid en azul cuando esté en el estado mínimo, en amarillo para el medio, y en rojo para el máximo.

Por último, si queremos que el crystalCPUID arranque siempre que entremos en windows, entonces podemos crear un acceso directo y añadirle las opciones /HIDE /CQ y lo añadimos en nuestra carpeta de inicio.

Cambio de FID/VIDs automáticamente y perfiles con RMClock:


Este otro programa es un poco más intuitivo de usar y tiene la ventaja de que se pueden utilizar perfiles.

Hay dos versiones del programa, una gratuita y otra de pago. Yo no tengo la de pago, así que comentaré sólo la versión gratuita. La de pago incluye la posibilidad de crear perfiles personalizados, pero con los que vienen en la versión gratuita ya podemos apañarnos bastante.

En esta versión gratuita podemos utilizar estos 4 perfiles:

  • No management
  • Power Saving
  • Maximun Performance
  • Performance on Demand

El primero es simplemente para desactivar el funcionamiento del programa. Los dos siguientes sirven para asociar a cada uno de esos perfiles un único estado (VID/FID), normalmente el máximo y el mínimo, pero podemos configurarlo con el que queramos. Y el último permite seleccionar todos los estados que queramos entre los que quiera cambiar automáticamente el programa.

La configuración se hace en dos pasos. Primero hay que indicarle al programa cuáles son los FID y VIDs de nuestro micro (los que tenemos ya calculados de antes). Se configura en la página "profiles":




Es posible que los nombres de los VIDs no coincidan exactamente con los nombres que nos salían en CrystalCPUID. Esto es normal, ya que son simplemente etiquetas (recordad que los VIDs no son lo mismo que los Vcore).

Una vez configurados, pasamos a configurar los perfiles. Siguiendo con el ejemplo de mi E6600:








En este ejemplo tengo configurados los 3 perfiles así:

- Power Saving: FID: x6 (micro a 2 GHz)
- Max. Performance: FID: x9 (micro a 3GHz)
- Perf. on Demand: Varía entre x6 y x8 (mictro entre 2 y 2,7GHz).

Normalmente pongo el perfil Performance on Demand por defecto (en la parte superior de la captura que he puesto antes con los perfiles se puede poner cuál es el perfil por defecto donde pone "Startup"). Así mi micro varía entre los estados de 2 y 2,7GHz según la carga del micro, en los que coincide que están al mínimo voltaje posible (ambos).

Si necesito dejar el PC por la noche con descargas cambiaría al perfil Power Saving.

Y si necesito darle caña al micro, por ejemplo para codificar un mpeg, entonces cambio al perfil Max. Performance (micro a 3GHz con su leve OC).

Se cambia de perfil fácilmente haciendo un click con el botón izquierdo de ratón en el icono de la barra de tareas de RMClock:



El resto de configuración se hace en las ventanas Settings, Management y Advanced CPU Settings. El programa es bastante intuitivo, así que creo que no hace falta explicar en detalle cada una de las opciones. Aún así pongo una captura de estas pantallas por si queréis ver mi configuración en caso de alguna duda:






2 comentarios:

Anónimo dijo...

Disculpa que me salga del tema pero necesito ayuda. Hasta hace poco tenia un Intel® Pentium® III Processor 550 MHz, 256K Cache, 100 MHz FSB que solo me pedia en VID 1.65V y lo cambie por un Intel® Celeron® Processor 900 MHz, 128K Cache, 100 MHz FSB Coppermine-128 que actualmente me pide en VID 1.75V. La diferencia no es mucha pero esto causa que la pantalla del logo del CPU se estanque unos minutos aproximadamente y cuando logro entrar a la configuracion del BIOS me dice que hay un fallo en la alimentacion del CPU. Me dijeron que esto puede causar que se hinchen los capacitores y revienten pero no le veo ninguna solucion. Desde el BIOS no puedo cambiar nada porque no me lo permite, osea, puedo leer la info pero no cambiarla. Intente poniendo el jumper de la mother en corto pero tampoco logre un reinicio del BIOS. Intente con el programa CrystalPUID que vos dijiste e intente con la opcion Intel Enhanted SpeedStep pero me aparece en gris (por lo que no puedo seleccionarla). La mother es una Intel Easton D8155EEA. Si me podes ayudar te lo agradeceria mucho. Como buscaba una solucion me lei todo lo que escribiste y me parece interesante pero para conponentes con libertad de configuarion y de mas valor. Mi nombre es Pablo y te dejo mi e-mail. pablo_comander@hotmail.com


kike_1974 dijo...

Hola :). Mejor pásate por la nueva web:
http://www.pcsilencioso.com
Ahí tienes un foro donde preguntar, mucho más cómodo que este espacio para comentarios, donde no se pueden poner capturas de pantalla ni fotos:
http://www.pcsilencioso.com/foro
Sobre tu problema, tiene que haber alguna forma de cambiar el voltaje. Si en la bios no te deja, es posible que sea modificando jumpers en la placa (mother). Tienes el manual de dicha placa, o una foto de ella?


Publicar un comentario en la entrada