Cómo bajar el voltaje en el procesador de una computadora portátil. Reducimos la generación de calor del procesador y aumentamos la duración de la batería del portátil

Regulación de voltaje para procesadores Intel

¡ATENCIÓN! El autor del artículo no asume ninguna responsabilidad por los daños causados ​​a la computadora como resultado del uso de las acciones aquí descritas.

Algunos usuarios tienen más suerte, otros menos. Hay personas afortunadas que obtienen procesadores que pueden overclockear fácilmente a la siguiente frecuencia FSB "estándar": Celeron hasta 100 y modificaciones Pentium III "E" hasta 133 MHz, respectivamente. Sin embargo, un procesador de este tipo no es tan fácil de conseguir: están disponibles en los mercados, pero los vendedores a menudo quieren tanto por una piedra overclockable "garantizada" que se puede comprar un procesador con aproximadamente la misma frecuencia, pero "nativa", garantizada. por el fabricante. Pero a menudo nos encontramos con procesadores que funcionan a frecuencias más altas, pero que son inestables. Es decir, aparecen fallas inesperadas, los programas "realizan operaciones inaceptables" y se cierran, el ojo se deleita con "pantallas azules" y delicias similares.

A menudo puede deshacerse de esto aumentando el voltaje de suministro del procesador. Para un Celeron clásico (basado en el núcleo Mendocino; es decir, modelo 300A-533), el voltaje del núcleo estándar es de 2 V. En principio, sin mucho riesgo, se puede aumentar entre un 5 y un 10 % (hasta 2,1 - 2,2 V). Lo mismo ocurre con los procesadores con núcleo Coppermine (Celeron 533A-766 y Pentium III): sólo cambian los números absolutos.

Sin embargo, es bueno si puede configurar el nivel de voltaje deseado usando el BIOS o los puentes en la placa base, pero ¿qué pasa si no existe tal opción (que suele ser el caso cuando hablamos de placas base económicas)? De hecho, la idea principal del overclocking desaparece: conseguir un mayor rendimiento en hardware económico. En placas con conector Slot 1 se pueden utilizar adaptadores especiales, pero esto no facilita las cosas a los usuarios de placas de enchufe (además, a veces la diferencia de precio de 5 a 7 dólares entre un adaptador con regulación de voltaje y un modelo simple sin él es crítico). La diferencia de precio entre placas diseñadas para overclocking y modelos de socket baratos es de hasta 30 dólares (además, la mayoría de estas placas tienen formato ATX, por lo que a la hora de actualizar un ordenador hay que cambiar la carcasa), y para ahorrar esa cantidad, a veces vale la pena utilizar varios métodos no estándar.

EN Últimamente El tema de cambiar el voltaje de suministro se ha vuelto relevante no solo para los overclockers. El hecho es que las placas base disponibles con conjuntos de chips antiguos (LX, EX, BX, ZX, Apollo Pro) a menudo son capaces de funcionar con al menos Celerons nuevos (a veces inmediatamente, a veces después de alguna modificación) y, a veces, Pentium III, y el único obstáculo es el convertidor de voltaje en la placa, que no puede proporcionar menos de 1,8 V. Una solución completamente lógica a este problema es forzar al procesador a cambiar a este voltaje.

Advertencia. No olvides que a medida que aumenta el voltaje, también aumenta la potencia disipada por el procesador. Esto es especialmente cierto en el caso del overclocking: se observará una generación adicional de calor debido a un aumento en la frecuencia del procesador. Por lo tanto, vale la pena pensar de antemano en una buena refrigeración del procesador (sin embargo, vale la pena hacerlo en cualquier caso, independientemente de si el voltaje aumentará o no)

Alimentar procesadores de clase Pentium II y Celeron requiere bastante fuentes poderosas fuente de alimentación, por lo tanto, la fuente de alimentación de la caché secundaria (indicada por Vccs en la figura) está separada de la fuente de alimentación central (Vccp) y, con las mismas clasificaciones, no se utilizan los valores de voltaje de la línea Vccs. Es decir, dependiendo del tipo de procesador (según el nivel de voltaje en el tramo correspondiente del procesador), el estabilizador de la placa base establece el voltaje requerido.

Cuadro No. 1. Identificación de la tensión de alimentación
VID Voltaje, V VID Voltaje, V
01111 1.30 11111 sin procesador
01110 1.35 11110 2.1
01101 1.40 11101 2.2
01100 1.45 11100 2.3
01011 1.50 11011 2.4
01010 1.55 11010 2.5
01001 1.60 11001 2.6
01000 1.65 11000 2.7
00111 1.70 10111 2.8
00110 1.75 10110 2.9
00101 1.80 10101 3.0
00100 1.85 10100 3.1
00011 1.90 10011 3.2
00010 1.95 10010 3.3
00001 2.00 10001 3.4
00000 2.05 10000 3.5

VID se usa solo en la versión SEPP/SECC (Slot1), por lo que el voltaje en las placas para Socket 370 solo se puede aumentar a 2,05 V. Para trabajar con todos los procesadores Intel, se requiere compatibilidad con los valores en negrita; Los voltajes de alimentación para los procesadores FCPGA están subrayados.

Cuadro No. 2. Fuente de alimentación para algunos procesadores.
UPC Vccp, núcleo, V Vccs, caché, V
Pentium II 233-300 (Klamath) 2.8 3.3
Pentium II 266-450 (Decaídas) 2.0 2.0
Pentium III 450-550 (Katmai) 2.0 3.3
Pentium III 600 (Katmai) 2.05 3.3
Celeron 266-533 (Covington, Mendocino) 2.0 -
Celeron 533A-600
1.5
1.7
-
Celeron 633-766
1.65
1.7
-

(Celeron 533A -766 tiene dos modificaciones diseñadas para diferentes voltajes)

Físicamente (0) significa que el pin está conectado a tierra (GND o Vss), y (1) que el pin está libre, es decir, no conectado a nada (el pin debe tener un potencial lógico).

Por lo tanto, es posible hacer que el estabilizador no produzca los 2 V estándar de Celeron (hablaremos de ellos más adelante), sino más o menos (curiosamente, en algunos casos hubo una mejora en la estabilidad operativa a voltaje reducido).

La figura muestra los pines de los procesadores de zócalo. Para los procesadores fabricados con el diseño de Ranura 1, los siguientes pines son responsables de la identificación de energía:

VID0 VID1 VID2 VID3 VID4
B120 A120 A119 B119 A121

Por ejemplo, si pegamos VID, VID, VID, obtenemos un voltaje de 2,2 V. Esto debería ser suficiente para cualquier overclocker y, al mismo tiempo, bastante aceptable para que el procesador funcione durante mucho tiempo con una buena refrigeración: ) Es decir, puedes conseguir fácilmente algunos niveles de estrés que sólo requieren aislar algunas piernas. Por ejemplo, para PPGA y SEPP (Slot1):

Ejemplos de voltajes de suministro del procesador.
Voltaje, V ¿Qué patas hay que pegar? Recomendaciones
1.80 VID Si no eres fanático del overclocking, entonces este voltaje puedes usarlo para reducir la temperatura del procesador durante el funcionamiento o ahorrar energía :) (Celeron consume de 10 a 20 W dependiendo de la frecuencia estándar, y esto resulta en un ahorro del 10%: ))
1.90 VID En general ocurre lo mismo que para una tensión de 1,8 V.
2.00 voltaje estándar Dado como ejemplo
2.20 VID;VID;VID El procesador debería funcionar sin problemas, salvo que se calentará más.
2.40 VID;VID;VID Puede que funcione o no :) (pero probablemente lo primero), y se calienta aún más
2.60 VID;VID El riesgo es bastante grande, pero los entusiastas pueden intentarlo (si realmente quieren overclockear el procesador tanto como sea posible).
2.80 VID;VID;VID Y no lo intentes, esto es sólo un ejemplo.

Los valores restantes son más difíciles de obtener, ya que se requiere un impacto más fuerte en el procesador: deberá conectar el contacto o conector correspondiente del procesador a tierra (GND). Entonces, por ejemplo, conectando los pines de la ranura (o zócalo) VID y GND en el reverso mediante cableado y soldadura. tarjeta madre, obtenemos un voltaje de 2,05 V. Sin embargo, esta es una operación arriesgada, ya que en caso de un error o una soldadura incorrecta, el voltaje de los circuitos de E/S (3,3 V) puede llegar al núcleo, lo que conducirá a tristes consecuencias. Pero de esta manera puede obtener cualquier voltaje de la tabla No. 1 en el núcleo del procesador.

En realidad, sobre cómo sellar las piernas. Hay varias opciones. Primero, puedes aislarlos aplicando un barniz duradero. Este método normalmente funciona solo con barniz realmente fuerte, ya que cuando se instalan en el zócalo, las patas del procesador experimentan una gran fuerza física, lo que puede provocar la destrucción de la capa aislante y, en consecuencia, un nivel de voltaje no planificado puede llegar al núcleo (por ejemplo, 2,6 en lugar de 2,2 V si el aislamiento del conductor es VID). En segundo lugar, para un procesador de zócalo, simplemente puede arrancarlos con un mordisco, y para un procesador de ranura, puede cortar los conductores correspondientes, pero este método no deja ninguna posibilidad de retirada (si el conductor cortado aún se puede soldar, entonces soldar la pata arrancada es bastante problemático).

La opción más realista, aparentemente, es sellar las patas del procesador. En el caso de una caja tipo SEPP/SECC, puede utilizar cinta cortada cuidadosamente según la forma de la almohadilla de contacto. Hay inscripciones en la placa del procesador que pueden ayudarle a saber dónde se encuentra cada pin. En el caso de PPGA y FCPGA, puedes utilizar este método. Se corta un círculo con un diámetro de aproximadamente 5 mm de una película fluoroplástica o de polietileno (como las que se utilizan para hacer bolsas). Se coloca de modo que su centro quede exactamente encima del contacto que necesita aislarse. Luego, con una aguja de coser, se bajan los bordes del círculo entre los cables.

Durante la instalación no suelen surgir problemas, pero puede surgir un problema a la hora de sacar el procesador del zócalo: la película queda en el interior y no es tan fácil quitarla (en casos extremos, el zócalo se puede desmontar y todo lo innecesario se puede eliminar). Sacado de allí :))

En la foto la pierna VID está “preparada”

Con el debido cuidado y atención, es bastante fácil realizar las operaciones necesarias.

Los mismos métodos también son adecuados para aumentar o disminuir la tensión de alimentación en Pentium II y Pentium III, tanto en la versión Slot 1 como en FCPGA (por supuesto, con los cambios apropiados en cuanto a los niveles de tensión). Realmente hay que tener en cuenta que en el caso de procesadores con núcleos Klamath y Coppermine, para aumentar la tensión de alimentación será necesario coger un soldador: en este caso no será posible prescindir de cortocircuitar algunos de los contactos a tierra (a diferencia de los núcleos diseñados para un voltaje de 2, 0 V).

Además, no olvide que no todos los reguladores de voltaje instalados en las placas base admiten absolutamente todos los niveles. El chip correspondiente suele estar situado cerca del zócalo del procesador. Por su marcado se puede reconocer el fabricante del chip y, en consecuencia, sus características. Aquí están las direcciones de algunas empresas que producen reguladores de voltaje:

El artículo utilizó materiales del libro "Pentium II, Pentium Pro y simplemente procesadores Pentium" de Mikhail Guk publicado por la editorial Peter, así como documentación oficial de Intel sobre los procesadores Celeron.

Introducción

Los entusiastas siguen de cerca las capacidades de los procesadores de overclocking. Dedican mucho tiempo a encontrar respuestas a las siguientes preguntas: ¿Qué tan rápido se puede overclockear ciertos procesadores? ¿Qué nivel de voltaje se requiere? ¿Qué solución de refrigeración sería mejor?

El overclocking le permite aumentar el rendimiento de la CPU al nivel de modelos de procesadores más caros, pero también es posible en la dirección opuesta. Por lo general, puedes reducir los voltajes del procesador para mejorar la eficiencia sin afectar el rendimiento.

Voltaje, velocidad de reloj y consumo de energía.

La velocidad del reloj es uno de los parámetros más importantes que afectan el rendimiento y, para lograr velocidades de reloj altas, generalmente es necesario aumentar el voltaje. Teniendo en cuenta todo lo descargado, es el voltaje el que juega el papel más importante en el consumo final de energía, y el papel de la frecuencia del reloj sigue siendo secundario. Aumentar o disminuir la frecuencia del reloj afecta el consumo de energía casi en proporción directa y la dependencia del voltaje es cuadrática. Es por esta razón que aumentar el voltaje siempre tiene un impacto más significativo en el consumo de energía que aumentar la frecuencia del reloj.

Por supuesto, reducir el voltaje de funcionamiento también tiene un impacto significativo en el consumo de energía, por lo que decidimos investigar este tema más profundamente.

Procesadores con poco voltaje

Muchos procesadores móviles son versiones ligeramente modificadas y de menor voltaje de las CPU normales. Toma por ejemplo Procesadores móviles Intel Core 2. Presentan un consumo de energía optimizado, pero en condiciones comparables funcionarán igual y consumirán la misma cantidad de energía que sus homólogos de escritorio. Se dice que la línea Core 2 Duo T tiene un consumo máximo de energía de 35 W, la línea P está limitada a un paquete térmico de 25 W, y así sucesivamente.

Pero existen procesadores económicos para ordenadores de sobremesa. Ofertas AMD Procesadores de energía optimizada con el sufijo "e" (Phenom II X4 900e, 905e y Fenómeno X4 9350e). Intel lanza una línea de procesadores Núcleo 2 Cuádruple "S", que ofrecen un rendimiento al nivel de los modelos estándar, pero se mantienen dentro del paquete térmico de 65 W en lugar de 95 W. Aunque las versiones energéticamente eficientes de los procesadores son más caras, quedamos bastante impresionados con ellas, ya que ofrecen un menor consumo de energía en inactivo y bajo carga.

¿Hazlo tu mismo?

¿Es posible convertir el procesador a una versión económica con tus propias manos? El overclocking y el overvolting se han vuelto muy populares, pero ¿qué pasa con el undervolting? Cogimos dos placas base MSI que teníamos a nuestra disposición: P45D3 Neo, que utilizamos en buscando un overclocking óptimo Core 2 Duo, pero esta vez combinado con un procesador Core 2 Extreme QX9650, así como con el modelo 790FX-GD70 para probar el AMD Phenom II X4 955.

Plataformas: AMD 790FX e Intel P45

Para investigar el subvoltaje del procesador Phenom II X4 955, tomamos la placa base MSI 790FX-GD70. Esta placa es el modelo superior de MSI para Socket AM3, utiliza el chipset AMD 790FX y admite todos los procesadores AMD más recientes; La placa está equipada con tecnología ATI CrossFireX (gracias a cuatro ranuras PCI Express 2.0 x16) y una gran cantidad de funciones útiles para los entusiastas. El fabricante decidió equipar la placa con una función de overclocking de hardware, un estabilizador de voltaje de 4+1 fases con conmutación dinámica, así como un sistema de enfriamiento grande (pero no excesivo) en heatpipes para el chipset y estabilizadores de voltaje. El BIOS le permite configurar la frecuencia de la memoria DDR3 hasta 2133 MT/s. RAID es compatible con los seis puertos SATA de 3 Gb/s a través del SB750 Southbridge; hay puertos SATA adicionales, FireWire 400 y dos conectores Ethernet de 1 Gbps, sin mencionar un códec de audio HD de 192 kHz.

Sin embargo, esta vez es poco probable que necesitemos ese conjunto de funciones, ya que el objetivo del proyecto era ahorrar energía. El regulador de voltaje de cinco fases debe ser eficiente y la placa de nivel entusiasta debe estar llena de componentes de calidad que puedan satisfacer nuestras ambiciones. Sin embargo, todavía nos decepciona un poco que los voltajes del chipset y de la memoria no puedan reducirse por debajo del voltaje nominal. Quizás MSI debería agregar esta característica en futuras versiones de BIOS.



Para el procesador Core 2 Quad en Socket 775 (usamos el Core 2 Extreme QX9650), tomamos la placa base P45D3 Neo, que funcionó bien en nuestro Pruebas óptimas de overclocking para Core 2 Duo. La placa está construida sobre el chipset P45, pero este no es un producto para entusiastas: hay que contentarse con tres fases del regulador de voltaje, no hay un sistema de enfriamiento complejo en los tubos de calor y características estándar El conjunto de chips se complementa con sólo unas pocas opciones. Para obtener más información sobre el tablero, consulte el artículo " Intel Core 2 Duo: análisis de overclocking, rendimiento y eficiencia"Pero todavía usamos esta placa para nuestro proyecto de reducción de voltaje, ya que otros productos (incluidos Gigabyte X48T-DQ6 y Asus P5Q Deluxe) tampoco ofrecían opciones para reducir el voltaje de otros componentes además del procesador.


¿Cómo reducir adecuadamente la tensión?

Los overclockers experimentados pueden saltarse esta sección, pero a todos los demás les recomendamos que se familiaricen con algunas de las funciones asociadas con los procesadores de bajo voltaje.

Caído

Lo primero que debe saber es que el voltaje del procesador configurado en el BIOS (automáticamente o por el usuario) puede no corresponder al voltaje Vcore al que funcionará el procesador. De hecho, el BIOS determina el voltaje máximo del procesador y el voltaje efectivo suele ser menor. Incluso puede cambiar según las condiciones operativas del procesador (por ejemplo, temperatura), que cambian cuando la CPU pasa del modo inactivo al modo de carga y viceversa.

Este comportamiento está bastante justificado, ya que la conductividad del cristal mejora a medida que la CPU se calienta bajo carga. Si no se cambia el voltaje, la corriente aumentará, es decir, la corriente y la temperatura se elevarán entre sí. Un mecanismo de caída especial reduce ligeramente el voltaje del procesador bajo carga para mantener la CPU dentro de las especificaciones eléctricas.

Si está utilizando herramientas como CPU-Z para leer el voltaje efectivo de la CPU, intente verificar el voltaje objetivo con CoreTemp y notará que los dos valores serán diferentes. La diferencia entre el voltaje establecido y el voltaje inactivo efectivo se llama "compensación" (Voffset), y la diferencia de voltaje entre el modo inactivo y la carga máxima se llama "caída" (Vdroop).

Examen

El procesador alcanza el voltaje máximo cuando pasa de un estado cargado a un estado inactivo, porque el voltaje nunca se mueve exactamente de un nivel a otro, sino que "salta" un nivel y luego se nivela. Es en este “salto” que el procesador alcanza su voltaje objetivo máximo.

Por la misma razón, es bastante fácil probar si un procesador con bajo voltaje funcionará de manera confiable bajo cargas máximas: impondrá una Vdroop y reducirá el voltaje de operación por debajo del voltaje especificado. Usamos Prime95, una excelente utilidad de utilización de CPU. Después de 30 minutos de funcionamiento bajo carga máxima sin accidentes, llegamos a la conclusión de que el sistema de voltaje reducido funcionaba de manera estable bajo carga. Esto generalmente significa que la operación será estable incluso en modo inactivo, desde entonces un poco más Alto voltaje. Pero esto no se aplica a los modos de ahorro de energía como Intel SpeedStep, que reducen aún más la frecuencia (multiplicador) y el voltaje. Realizamos todas las pruebas de subvoltaje con la tecnología SpeedStep activa, pero esto no fue necesario para la tecnología Cool"n"Quiet de AMD, ya que utiliza voltajes y frecuencias originales cuando está inactiva.

Como es habitual, nuestros resultados de overclocking o reducción de voltaje no deben tomarse como la verdad última. Todo depende de usted: debe realizar una serie amplia de pruebas o aceptar el riesgo de que el sistema no siempre sea estable. Y sus resultados pueden ser completamente diferentes; puede que sea mejor volver a configuraciones más conservadoras (es decir, aumentar un poco el voltaje) para estar seguro. En cualquier caso, el potencial de ahorro energético seguirá siendo bastante significativo.


UPC AMD Phenom II X4 955 sigue siendo el modelo insignia de la compañía desde su anuncio en abril de 2009. Gracias a la compatibilidad con la memoria DDR3 y una velocidad de reloj de 3,2 GHz, AMD pudo competir con Intel Core 2 Quad en algunas pruebas, mientras que tanto el procesador como la plataforma costarían menos. . Sin embargo, todavía está lejos del rendimiento del Core i7.

Los modelos Phenom II X4 están disponibles en frecuencias entre 2,5 y 3,2 GHz (ver más abajo). página en el sitio web de AMD). La línea de procesadores 800 cuenta con 4 cachés L2 de 512 KB por núcleo y 4 MB de caché L3 compartida, mientras que la línea 900 tiene un 50 % más de caché L3. Todos los procesadores Phenom II se fabrican en Globalfoundries utilizando la tecnología de proceso DSL SOI de 45 nm, que proporciona un bajo consumo de energía y buenas capacidades de overclocking. Será interesante ver hasta qué punto podemos reducir la tensión.

La configuración automática del BIOS dio como resultado que el Phenom II X4 955 funcionara a 1,32 V según CPU-Z. Al mismo tiempo, el consumo máximo de energía del sistema fue de 216 W con carga completa en la CPU. Está bastante claro que el resultado tiene margen de mejora.

Todos los procesadores AMD con tecnología Cool"n"Quiet activa pueden cambiar a 800 MHz en modo inactivo, mientras que el voltaje del núcleo estándar se reduce a 0,96 V. Como se puede ver en la tabla resumen a continuación, el procesador Phenom II cambia a 0,96 V Cool "n"Modo silencioso, independientemente del voltaje de la CPU configurado en el BIOS. Por tanto, el consumo de energía del sistema en modo inactivo fue siempre el mismo: 99 W. No hay nada que mejorar en este caso, a menos que la BIOS comience a permitir cambiar el voltaje en modo inactivo.

Intentamos establecer varios niveles de voltaje (consulte la tabla a continuación) y probamos la carga en ellos usando la prueba Prime95 durante al menos 30 minutos. Resulta que el voltaje estándar de 1,32 V se puede reducir hasta en un 12% a 1,1175 V. Al mismo tiempo, reducimos el consumo de energía del sistema de 216 a 179 W, lo que representa una caída del 17,2%. Nada mal.

mesa final

AMD Phenom II X4 955
voltaje del BIOS Puñalada.
Auto 0,96 V* 99W 1,32 voltios 216 vatios
1,3125 0,96 V* 99W 1,288 voltios 205 vatios
1,2875 0,96 V* 99W 1,264 voltios 199W
1,2625 0,96 V* 99W 1,24 voltios 196W
1,2375 0,96 V* 99W 1.216V 192W
1,2125 0,96 V* 99W 1.192V 186 vatios
1,1875 0,96 V* 99W 1,168V 181w
1,175 0,96 V* 99W 1,152 voltios 179W
1,1625 0,96 V* 99W 1,136 voltios 177W No

* establecido en Frío"n"Silencio.


Ahora es el momento de mirar el Intel Core 2 Quad. Usamos un procesador Core 2 Extreme QX9650 porque no teníamos un modelo Core 2 Quad normal a nuestra disposición.

La línea Core 2 Quad continúa ofreciendo un rendimiento sólido con niveles de consumo de energía aceptables. Las líneas Q8000 y Q9000 se basan en el diseño Yorkfield de 45 nm. El Q8000 utiliza 4 MB de caché L2, mientras que el Q9000 tiene 6 MB o incluso 12 MB de caché L2.

Todos los procesadores Core 2 Quad de cuatro núcleos están ensamblados a partir de dos cristales Wolfdale de doble núcleo de 45 nm.

Cuando configuramos el voltaje en el BIOS en "Automático", obtuvimos 1.256 V del Core 2 Extreme QX9650, lo que provocó que el sistema consumiera 185 W a plena carga.

El voltaje inactivo no se puede cambiar directamente; siempre se determinará según el voltaje de la CPU que especifique. En el caso de la configuración predeterminada del BIOS, obtuvimos un voltaje de 1,192 V después de habilitar la tecnología SpeedStep, que redujo el multiplicador a 6x, y la velocidad del reloj central fue de 2,0 GHz. El consumo de energía en inactivo resultante de 94 W (ver tabla a continuación) es aún menor que el consumo de energía del sistema AMD con solo 0,96 V y 800 MHz de frecuencia de CPU, lo cual es bastante extraño.

El voltaje estable más bajo fue 1,072 V, que logramos utilizando la configuración del BIOS de 1,0785 V. A plena carga, esto resultó en un consumo total de energía del sistema de solo 148 W, lo que significa que obtuvimos una reducción del 20 % en el consumo de energía con una reducción del 16,3 %. en el procesador de voltaje central. El siguiente paso debería haber sido una tensión de 1,0655 V, en la que ya habíamos perdido estabilidad. Afortunadamente, produjo los mismos resultados defectuosos bajo carga y en reposo, lo que hizo inútil una mayor reducción de voltaje.

El voltaje inactivo resultante del voltaje de 1,0785 V de nuestro procesador fue de 0,1008 V, lo que resultó en un consumo de energía inactivo del sistema de 87 W. La mejora es inferior al 11%, pero fue gratuita y el sistema funcionó de manera estable en las pruebas.

Intel Core 2 extremo QX9650
voltaje del BIOS Tensión efectiva (norma.) Consumo energético eficiente (abismo.) Tensión efectiva (carga) Consumo energético eficiente (calor) Puñalada.
Auto 1.192V 94W 1,25 voltios 185 vatios
1,1955V 1,128 voltios 93W 1.184V 172 vatios
1,1695V 1,104 voltios 92W 1,16 voltios 166 vatios
1,1435V 1.008V 91w 1,136 voltios 162 vatios
1,175 voltios 1.048V 90W 1,104 voltios 158 vatios
1,0915V 1.016V 88W 1,08 voltios 151 vatios
1,0785V 1.008V 87 vatios 1.072V 148 vatios
1,0655V 0,992V 87 vatios 1.056V 148 vatios No


hardware del sistema
Procesador AMD AMD Phenom II X4 955 (45 nm, 3,2 GHz, 4 cachés L2 de 512 KB y caché L3 de 6 MB, TDP de 125 W, Rev. C2)
Procesador Intel Intel Core 2 Extreme QX9650 (45 nm, 3,0 GHz, 12 MB de caché L2, TDP 130 W, Rev. D0)
Placa base (zócalo 775) MSI P45D3 Neo-F (Rev. 1.0), chipset: Intel P45, ICH10R, BIOS: 4.2 (18/02/2009)
Placa base (zócalo AM3) MSI 790FX-GD70 (Rev. 1.0), conjunto de chips: AMD 790FX, SB750, BIOS: 1.3 (01/04/2009)
memoria DDR3 2x2 GB DDR3-1600 (Corsair TR3X6G-1600C8D 8-8-8-24)
Tarjeta de video Zotac Geforce GTX 260², GPU: GeForce GTX 260 (576 MHz), memoria de vídeo: 896 MB DDR3 (1998 MHz), 216 procesadores de flujo, frecuencia de unidad de sombreado 1242 MHz
disco duro Western Digital VelociRaptor, 300 GB (WD3000HLFS) 10.000 rpm, SATA/300, 16 MB de caché
unidad de Blu-ray LG GGW-H20L, SATA/150
unidad de poder Alimentación y refrigeración de PC, silenciador 750EPS12V 750 W
Software y controladores del sistema
Sistema operativo Windows Vista Enterprise versión 6.0 x64 Service Pack 2 (compilación 6000)
Controlador del chipset AMD Catalizador 9.4
Controlador Nvidia GeForce GeForce 185.85
Controlador del chipset Intel Utilidad de instalación de chipset Ver. 9.1.0.1012
Controladores de almacenamiento Intel Controladores de almacenamiento Matrix Ver. 8.8.0.1009


Pruebas y configuraciones

Pruebas y configuraciones
PCMark Vantage Versión: 1.00
Punto de referencia PCMark
principal 95 Versión: 25.7
FFT grandes in situ

Resultados de la prueba

No tenemos un gráfico que muestre el consumo de energía en inactivo del AMD Phenom II X4 955, ya que el voltaje de los procesadores AMD no cambia. Después de activar la función Cool"n"Quiet, el procesador sin carga siempre funciona a 800 MHz con un voltaje de 0,96 V (al menos en nuestra placa base MSI 790FX-GD70). Por lo tanto, el sistema AMD siempre consumía 99 vatios cuando estaba inactivo.

El gráfico muestra el consumo de energía en inactivo del sistema Core 2 Extreme QX9650 en todos los niveles de voltaje probados. A 1.008V puede obtener un consumo de energía de 87W, y a 1.192V el consumo de energía predeterminado es 94W.


El ahorro de energía al reducir el voltaje en el caso del procesador insignia de AMD resultó ser bastante significativo. Comenzamos con un voltaje estándar de 1,32 V, lo que dio un consumo máximo de energía del sistema de 216 W, y luego alcanzamos solo 179 W bajo carga a 1,175 V. El ahorro de energía fue de 37 W o 17,2 %, bastante significativo, ya que la energía ahorrada será suficiente. para alimentar, por ejemplo, una pantalla moderna de 20".

¿Puede un sistema Intel superar el ahorro de energía del 17,2 % en condiciones de carga máxima? Quizás: en este caso, la tensión mínima estable bajo carga fue de 1,078 V en lugar de 1,255 V, y el consumo de energía de todo el sistema fue de 148 W en lugar de 185 W, una reducción del 20%.

Consumo de energía y eficiencia de PCMark

Medimos el rendimiento y el consumo de energía de PCMark Vantage en configuraciones predeterminadas y optimizadas para voltaje en sistemas AMD e Intel.


En el caso del sistema Phenom II X4 955, el consumo medio de energía se redujo de 157 a 141 W, una mejora del 10,2%. El sistema Core 2 Extreme QX9650 pudo reducir el consumo de energía de 135 a 117 W, lo cual es impresionante considerando que la potencia de procesamiento es superior a la del procesador AMD de gama alta que utilizamos. El sistema Intel redujo el consumo medio de energía en un 13,1%.


En consecuencia, la energía total (en vatios-hora) gastada por ejecución también disminuyó: un 11,4% para el sistema AMD y un 12,4% para el sistema Intel. ¡Nada mal!


Finalmente, correlacionamos los resultados de PCMark Vantage con el consumo de energía promedio de los dos sistemas (puntuaciones de rendimiento por vatio). Recuerde que las dos máquinas proporcionan el mismo rendimiento después de la optimización del voltaje. El sistema AMD Phenom II X4 955 logró una mejora del 11,6 % en la eficiencia energética en la prueba PCMark Vantage. El sistema Intel mejoró el resultado de eficiencia en un 13,8%.

Conclusión

Probamos dos procesadores de gama alta de AMD e Intel en placas base MSI modernas, lo que nos permitió analizar el potencial de ahorro de energía que se puede lograr reduciendo el voltaje de los procesadores. Por supuesto, también pretendíamos reducir el voltaje de la memoria o de los chipsets para conseguir un ahorro adicional, pero ninguna de las placas base que revisamos nos permitía modificar el voltaje de los componentes. Analizamos las placas Asus P6T y Rampage II Gene, Gigabyte MA790FXT-UD5P y X48T-DQ6, pero finalmente nos decidimos por la MSI 790FX-GD70 para Socket AM3 y la P45D3 Neo para Socket LGA775.

AMD Phenom II X4: 17% menos consumo de energía, 11,6% más eficiencia

El consumo máximo de energía bajo carga cayó hasta un 17% cuando se configuró al voltaje estable más bajo que encontramos en el Phenom II X4 955. Debido a que el rendimiento permaneció igual, vimos un aumento del 11,6% en la eficiencia (rendimiento por vatio) en PCMark. Prueba de ventaja. La tecnología AMD Cool"n"Quiet ralentizó un poco nuestros esfuerzos por reducir el voltaje, ya que en modo inactivo siempre cambiaba al modo normal, independientemente del voltaje establecido. Y el consumo de energía en modo inactivo fue siempre de 99 vatios.

Intel Core 2 Extreme: 20% menos consumo de energía, 13,8% más eficiencia

Los resultados fueron aún más espectaculares en nuestro sistema de prueba Core 2 Extreme QX9650, donde el consumo de energía bajo carga máxima se redujo en un impresionante 20% sin afectar el rendimiento. Esto mejoró el rendimiento por vatio de PCMark Vantage hasta en un 13,8%. Dado que el voltaje del procesador Intel en el modo de ahorro de energía SpeedStep depende del voltaje del núcleo configurado, el consumo de energía en el modo inactivo también cayó notablemente, a sólo 1.008 V. Esto dio un ahorro de energía del 8% en el modo inactivo.

¿Vale la pena ahorrar energía?

Nos impresionaron las tolerancias relativamente amplias para la caída de tensión, ya que esperábamos que los problemas comenzaran mucho antes. Pero los sistemas AMD e Intel han demostrado que los procesadores modernos pueden funcionar a voltajes significativamente más bajos. Pudimos suministrar el procesador AMD Phenom II X4 con un 16% menos de voltaje y el procesador Intel Core 2 Extreme con un 16,6% menos de voltaje. Todo esto nos permitió lograr ahorros del 17-20% bajo carga máxima para ambos sistemas.

Sin embargo, deberá asegurarse de que la configuración de voltaje reducido proporcione un funcionamiento confiable, por lo que recomendamos abordar este proceso con precaución. Sin embargo, no es necesario lograr una reducción del 16% en el voltaje; incluso una reducción del 10% reducirá el consumo de energía del sistema de forma gratuita sin ningún impacto en el rendimiento.

Uso de procesadores de escritorio modernos y (especialmente) móviles linea completa tecnologías de ahorro de energía: ODCM, CxE, EIST, etc. Hoy nos interesará quizás el nivel más alto de ellas: control flexible de la frecuencia y el voltaje del núcleo del procesador durante el funcionamiento - Cool "n" Quiet, PowerNow! para AMD y Enhanced SpeedStep (EIST) para Intel.

En la mayoría de los casos, un usuario de computadora o computadora portátil simplemente necesita habilitar (marcar una casilla) la compatibilidad con una tecnología en particular en el BIOS y/o el sistema operativo; generalmente no se proporciona ningún ajuste fino, aunque, como muestra la práctica, puede ser muy útil. . En este artículo hablaré sobre cómo se puede controlar el voltaje de funcionamiento del núcleo del procesador desde Sistema operativo(usando el ejemplo de Intel Pentium M y FreeBSD) y por qué podría ser necesario.

A pesar de la gran cantidad de manuales, es raro encontrar una descripción detallada de la tecnología Enhanced SpeedStep desde el punto de vista del sistema operativo (y no del usuario final), especialmente en ruso, por lo que una parte importante del artículo está dedicada a detalles de implementación y es de naturaleza algo teórica.

Espero que este artículo sea de utilidad no sólo para los usuarios de FreeBSD: también tocaremos un poco sobre GNU/Linux, Windows y Mac OS X. Sin embargo, en este caso el sistema operativo concreto pasa a un segundo plano.

Prefacio

El año pasado, actualicé el procesador de mi vieja computadora portátil: instalé un Pentium M 780 en lugar del 735 estándar y lo llevé al máximo, por así decirlo. La computadora portátil comenzó a calentarse más bajo carga (debido a que la disipación de calor aumentó en 10 W); No le presté mucha atención (excepto que limpié y lubriqué el refrigerador por si acaso), pero un buen día, durante una larga compilación, la computadora... simplemente se apagó (la temperatura alcanzó los cien grados críticos). ). Mostré el valor de la variable del sistema hw.acpi.thermal.tz0.temperature en la bandeja para monitorear la temperatura y, si sucede algo, interrumpir la tarea "pesada" a tiempo. Pero después de un tiempo perdí la vigilancia (la temperatura siempre se mantuvo dentro de lo normal) y todo volvió a suceder. En este punto, decidí que ya no quería temer constantemente un bloqueo durante una carga prolongada de la CPU y mantener la mano presionada Ctrl-C, ni forzar el procesador.

Normalmente, cambiar el voltaje estándar significa aumentarlo para garantizar un funcionamiento estable del procesador durante el overclocking (es decir, a una frecuencia aumentada). En términos generales, cada valor de voltaje corresponde a un cierto rango de frecuencias en las que puede funcionar, y la tarea del overclocker es encontrar la frecuencia máxima a la que el procesador aún no tiene "fallos". En nuestro caso, la tarea es en cierto sentido simétrica: para una frecuencia conocida (más precisamente, como pronto descubriremos, un conjunto de frecuencias), encuentre el voltaje más bajo que garantice un funcionamiento estable de la CPU. No quiero reducir la frecuencia de funcionamiento para no perder rendimiento: la computadora portátil ya está lejos de ser de gama alta. Además, reduzca el voltaje. más rentable.

una pequeña teoría

Como es sabido, la disipación de calor de un procesador es proporcional a su capacidad, frecuencia y cuadrado voltaje (quien esté interesado en saber por qué esto es así, puede intentar derivar la dependencia por su cuenta, considerando el procesador como un conjunto de inversores CMOS elementales (negadores lógicos), o seguir los enlaces: uno, dos, tres).

Los procesadores móviles modernos pueden consumir entre 50 y 70 W, que finalmente se disipan en calor. Esto es mucho (recuerde las lámparas incandescentes), especialmente para una computadora portátil, que en modo fuera de línea bajo carga "comerá" la batería como ese cerdo come naranjas. En espacios reducidos, lo más probable es que sea necesario eliminar activamente el calor, lo que significa gasto adicional energía para hacer girar el ventilador del refrigerador (posiblemente varios).

Naturalmente, esta situación no le convenía a nadie y los fabricantes de procesadores comenzaron a pensar en cómo optimizar el consumo de energía (y, en consecuencia, la transferencia de calor) y, al mismo tiempo, evitar el sobrecalentamiento del procesador. Para aquellos interesados, recomiendo leer una serie de maravillosos artículos de Dmitry Besedin y, mientras tanto, iré directo al grano.

Una pequeña historia

Por primera vez, la tecnología SpeedStep (versión 1.1) apareció en la segunda generación de terceros Pentium (producidos mediante el proceso técnico de 18 micrones, Coppermine móvil para computadoras portátiles, 2000), que, dependiendo de la carga o fuente de alimentación de la computadora, red o batería: podría cambiar entre frecuencias altas y bajas debido a un multiplicador variable. En modo económico, el procesador consumía aproximadamente la mitad de energía.

Con la transición a un proceso técnico de 13 micrones, la tecnología recibe la versión número 2.1 y se "mejora": ahora el procesador puede reducir no solo la frecuencia, sino también el voltaje. La versión 2.2 es una adaptación para la arquitectura NetBurst, y en la tercera versión (plataforma Centrino) la tecnología se llamará oficialmente Intel SpeedStep mejorado (EIST).

La versión 3.1 (2003) se utilizó por primera vez en la primera y segunda generación de procesadores Pentium M (núcleos Banias y Dothan). La frecuencia variaba (al principio solo cambiaba entre dos valores) del 40% al 100% de la base, en pasos de 100 MHz (para Banias) o 133 MHz (para Dothan, nuestro caso). Al mismo tiempo, Intel está introduciendo una gestión dinámica de la capacidad del caché de segundo nivel (L2), que permite una optimización aún mejor del consumo de energía. Versión 3.2 (EIST mejorado): adaptación para procesadores multinúcleo con caché L2 compartida. (Pequeñas preguntas frecuentes de Intel sobre la tecnología SpeedStep).

Ahora, en lugar de seguir ciegamente numerosos procedimientos y tutoriales, descarguemos el pdf e intentemos comprender el principio de funcionamiento de EST (seguiré usando esta abreviatura, porque es más universal y más corta).

Cómo funciona EST

Entonces, EST le permite controlar el rendimiento y el consumo de energía del procesador, y dinamicamente, durante su funcionamiento. A diferencia de implementaciones anteriores, que requerían soporte de hardware (en el chipset) para cambiar los parámetros operativos del procesador, EST permite programáticamente, es decir. Usando el BIOS o el sistema operativo, cambie el multiplicador (la relación entre la frecuencia del procesador y la frecuencia del bus) y el voltaje del núcleo (V cc) según la carga, el tipo de fuente de alimentación de la computadora, la temperatura de la CPU y/o la configuración (políticas) del sistema operativo.

Durante el funcionamiento, el procesador se encuentra en uno de varios estados (estados de energía): T (acelerador), S (suspensión), C (inactivo), P (rendimiento), cambiando entre ellos según algunas reglas(pág. 386 de la especificación ACPI 5.0).

Cada procesador presente en el sistema debe describirse en una tabla DSDT, generalmente en el espacio de nombres \_PR, y generalmente proporciona una serie de métodos a través de los cuales interactúa con el sistema operativo (controlador PM) y que describen las capacidades del procesador ( _PDC, _PPC), estados soportados (_CST, _TSS, _PSS) y su gestión (_PTC, _PCT). Los valores requeridos para cada CPU (si está incluida en el llamado paquete de soporte de CPU) los determina la BIOS de la placa base, que completa las tablas y métodos ACPI correspondientes (p. 11 pdf) cuando arranca la máquina. .

EST controla el funcionamiento del procesador en el estado P y serán de nuestro interés. Por ejemplo, Pentium M admite seis estados P (consulte la Fig. 1.1 y la Tabla 1.6 pdf), que se diferencian en voltaje y frecuencia:

En el caso general, cuando se desconoce de antemano el procesador, el único método más o menos fiable (y recomendado por Intel) para trabajar con él es ACPI. Puede interactuar con un procesador específico directamente, sin pasar por ACPI, a través de los registros MSR (Registro específico del modelo), incluso directamente desde línea de comando: Desde la versión 7.2, FreeBSD utiliza la utilidad cpucontrol(8) para esto.

Para saber si su procesador admite EST, puede mirar el bit 16 en el registro IA_32_MISC_ENABLE (0x1A0), debe estar configurado:

# kldload cpuctl # cpucontrol -m 0x1a0 /dev/cpuctl0 | (leer _ msr hola lo ; echo $((lo >> 16 y 1))) 1
Comando similar para GNU/Linux (requiere el paquete msr-tools):

# modprobe msr # echo $((`rdmsr -c 0x1a0` >> 16 y 1)) 1
La transición entre estados ocurre al escribir en el registro IA32_PERF_CTL (0x199). Puede averiguar el modo de funcionamiento actual leyendo el registro IA32_PERF_STATUS (0x198), que se actualiza dinámicamente (Tabla 1.4 pdf). En el futuro, omitiré el prefijo IA32_ por brevedad.

# cpucontrol -m 0x198 /dev/cpuctl0 MSR 0x198: 0x0612112b 0x06000c20
De la documentación se desprende que Estado actual codificado en los 16 bits inferiores (si el comando se ejecuta varias veces, su valor puede cambiar; esto significa que EST está funcionando). Si miras más de cerca los bits restantes, claramente tampoco son basura. Si buscas en Google, podrás descubrir qué significan.

Estructura del registro PERF_STATUS

Los datos leídos de PERF_STATUS están representados por la siguiente estructura (suponiendo que los datos se almacenen como little-endian):

Struct msr_perf_status ( unsigned curr_psv: 16; /* PSV actual */ unsigned status: 8; /* Banderas de estado */ unsigned min_mult: 8; /* Multiplicador mínimo */ unsigned max_psv: 16; /* Máximo PSV */ unsigned init_psv: 16; /* Encendido PSV */ );
Tres campos de 16 bits son los llamados Valores de estado de rendimiento (PSV), consideraremos su estructura a continuación: el valor de PSV actual, el máximo (según el procesador) y el valor al iniciar el sistema (cuando está encendido) . El valor actual (curr_psv) obviamente cambia cuando cambia el modo de funcionamiento, el máximo (max_psv) generalmente permanece constante, el valor inicial (init_psv) no cambia: como regla general, es igual al valor máximo para computadoras de escritorio y servidores, pero el mínimo para CPU móviles. El multiplicador mínimo (min_mult) para los procesadores Intel es casi siempre seis. El campo de estado contiene el valor de algunas banderas, por ejemplo, cuando ocurren los eventos EST o THERM (es decir, cuando el estado P cambia o el procesador se sobrecalienta, respectivamente).

Ahora que conocemos el propósito de los 64 bits del registro PERF_STATUS, podemos descifrar la palabra que leímos arriba: 0x0612 112b 0x06 00 0c20⇒ PSV al inicio 0x0612, valor máximo 0x112b, multiplicador mínimo 6 (como se esperaba), banderas borradas, valor actual de PSV = 0x0c20. ¿Qué significan exactamente estos 16 bits?

Estructura del valor del estado de rendimiento (PSV)

Es muy importante saber y comprender qué es PSV, porque es de esta forma que se configuran los modos de funcionamiento del procesador.

Estructura psv (unsigned vid: 6; /* Identificador de voltaje */ unsigned _reserved1: 2; unsigned freq: 5; /* Identificador de frecuencia */ unsigned _reserved2: 1; unsigned nibr: 1; /* Relación de bus no entera */ unsigned slfm: 1; /* Frecuencia FSB dinámica (Super-LFM) */ );
La conmutación de frecuencia dinámica del FSB especifica omitir cada segundo ciclo de reloj del FSB, es decir, reducir la frecuencia de funcionamiento a la mitad; esta característica se implementó por primera vez en los procesadores Core 2 Duo (Merom core) y no nos concierne, al igual que la relación de bus no entera, un modo especial admitido por algunos procesadores que permite, como su nombre indica, un control más detallado. de su frecuencia.

Dos campos están relacionados con la tecnología EST en sí: los identificadores de frecuencia (Frequency Identifier, Fid), que es numéricamente igual al multiplicador, y el voltaje (Voltage Identifier, Vid), que corresponde al nivel de voltaje (también suele ser el menos documentado). ).

Identificador de voltaje

Intel es muy reacio a revelar información (normalmente se requiere un acuerdo de confidencialidad) sobre cómo exactamente se codifica el ID de voltaje para cada procesador. Pero, afortunadamente, para las CPU más populares, esta fórmula es conocida; en particular, para nuestro Pentium M (y muchos otros): V cc = Vid 0 + (Vid × V paso), donde V cc es el voltaje actual (real), Vid 0 es el voltaje base (cuando Vid == 0) , V paso - paso. Tabla para algunos procesadores populares (todos los valores en milivoltios):
UPC Vídeo 0 V paso arranque en V Vmín Vmáx
Pentium M 700,0 16,0 xxxx,x xxx,x xxxx,x
E6000, E4000 825,0 12,5 1100,0 850,0 1500,0
E8000, E7000 825,0 12,5 1100,0 850,0 1362,5
X9000 712,5 12,5 1200,0 800,0 1325,0
T9000 712,5 12,5 1200,0 750,0 1300,0
P9000, P8000 712,5 12,5 1200,0 750,0 1300,0
Q9000D, Q8000D 825,0 12,5 1100,0 850,0 1362,5
Q9000M 712,5 12,5 1200,0 850,0 1300,0
El multiplicador (es decir, Fid) se escribe en PSV desplazado 8 bits hacia la izquierda, los seis bits inferiores están ocupados por Vid. Porque en nuestro caso, los bits restantes se pueden descuidar, luego el PSV, la frecuencia del procesador, el bus del sistema y el voltaje físico se relacionan mediante una fórmula simple (para Pentium M):
Ahora veamos el registro de control (PERF_CTL). La escritura en él debe hacerse de la siguiente manera: primero, se lee el valor actual (la palabra completa de 64 bits), se cambian los bits necesarios y se vuelve a escribir en el registro (la llamada lectura-modificación-escritura) .

Estructura de registro PERF_CTL

struct msr_perf_ctl ( psv sin firmar: 16; /* PSV solicitado */ sin firmar _reserved1: 16; sin firmar ida_disengage: 1; /* IDA desvincular */ sin firmar _reserved2: 31; );
El bit de desconexión IDA (Intel Dynamic Acceleration) le permite desactivar temporalmente el control de frecuencia oportunista en procesadores Intel Core 2 Duo T7700 y posteriores; nuevamente, no es de nuestro interés. Los 16 bits bajos (PSV) es el modo al que "pedimos" al procesador que cambie.

Tabla _PSS

La tabla _PSS es una matriz de estados ( Paquete en terminología ACPI) o un método que devuelva dicha matriz; cada estado (estado P) a su vez está definido por la siguiente estructura (p. 409 de la especificación ACPI):

Struct Pstate ( CoreFrequency unsigned; /* Frecuencia operativa de la CPU central, MHz */ Power unsigned; /* Disipación de potencia máxima, mW */ Latencia unsigned; /* Latencia en el peor de los casos de indisponibilidad de la CPU durante la transición, µs */ BusMasterLatency unsigned; / * Latencia en el peor de los casos mientras los Bus Masters no pueden acceder a la memoria, µs */ Control unsigned; /* Valor que se escribirá en PERF_CTL para cambiar a este estado */ Estado unsigned; /* Valor (debe ser igual al leído de PERF_STATUS) */ );
Así, cada estado P se caracteriza por una determinada frecuencia de funcionamiento del núcleo, máxima disipación de energía, retrasos en el tránsito (de hecho, este es el tiempo de transición entre estados durante los cuales la CPU y la memoria no están disponibles) y, finalmente, lo más interesante: PSV. , que corresponde a este estado y que debe escribirse en PERF_CTL para pasar a este estado (Control). Para asegurarse de que el procesador haya pasado exitosamente a un nuevo estado, debe leer el registro PERF_STATUS y compararlo con el valor registrado en el campo Estado.

El controlador EST del sistema operativo puede "conocer" algunos procesadores, es decir. podrá gestionarlos sin soporte ACPI. Pero esto es raro, especialmente hoy en día (aunque para subvoltear en Linux, en algún momento antes de la versión 2.6.20, era necesario parchear las tablas en el controlador, y en 2011 este método era bastante común).

Vale la pena señalar que el controlador EST puede funcionar incluso si no hay una tabla _PSS y un procesador desconocido, porque los valores máximo y mínimo se pueden encontrar en PERF_STATUS (en este caso, obviamente, el número de estados P degenera a dos).

Basta de teoría. ¿Qué hacer con todo esto?

Ahora que sabemos 1) el propósito de todos los bits en en las palabras correctas MSR, 2) cómo está codificado exactamente PSV para nuestro procesador y 3) dónde buscar las configuraciones necesarias en DSDT, es hora de hacer una tabla de frecuencias y voltajes por defecto. Desechemos DSDT y busquemos la tabla _PSS allí. Para Pentium M 780 debería verse así:

Valores predeterminados_PSS

Nombre (_PSS, Paquete (0x06) ( // Se definen un total de 6 estados (estados P) Paquete (0x06) ( 0x000008DB, // 2267 MHz (cf. Fid × reloj FSB) 0x00006978, // 27000 mW 0x0000000A, // 10 µs (cumple con las especificaciones) 0x0000000A, // 10 µs 0x0000112B, // 0x11 = 17 (multiplicador, Fid), 0x2b = 43 (Vid) 0x0000112B), Paquete (0x06) (0x0000074B, // 1867 MHz (82% del máximo) 0x000059D8, // 23000 mW 0x0000000A, 0x0000000A, 0x00000E25, // Fid = 14, Vid = 37 0x00000E25 ), Paquete (0x06) ( 0x00000640, // 1600 MHz (71% del máximo) 0x 00 005208, // 21000 mW 0x0000000A, 0x0000000A, 0x00000C20, // Fid = 12, Vid = 32 0x00000C20), Paquete (0x06) (0x00000535, // 1333 MHz (59% del máximo) 0x00004650, // 18000 mW 0x 0000000A, 0x0000000A, 0x 00000A1C, / / Fid = 10, Vid = 28 0x00000A1C ), Paquete (0x06) ( 0x0000042B, // 1067 MHz (47% del máximo) 0x00003E80, // 16000 mW 0x0000000A, 0x0000000A, 0x00000817, // Fid = 8 , Vídeo = 23 0x00000817 ), Paquete (0x06) (0x00000320, // 800 MHz (35% del máximo) 0x000032C8, // 13000 mW 0x0000000A, 0x0000000A, 0x00000612, // Fid = 6, Vid = 18 0x00000612 ) ))


Entonces, conocemos el Vid predeterminado para cada nivel P: 43, 37, 32, 28, 23, 18, que corresponde a voltajes de 1388 mV a 988 mV. La esencia del undervolting es que estos voltajes probablemente sean algo más altos de lo que realmente es necesario para el funcionamiento estable del procesador. Intentemos determinar los "límites de lo permitido".

Escribí un script de shell simple para esto, que gradualmente reduce Vid y realiza un bucle simple (el demonio powerd(8) debe ser eliminado antes de esto, por supuesto). Así, determiné los voltajes que al menos permitirían que el procesador no se congelara, luego ejecuté la prueba Super Pi varias veces y volví a ensamblar el núcleo; Más tarde, aumenté el valor de Vid para las dos frecuencias máximas en un punto más; de lo contrario, gcc ocasionalmente fallaría debido a un error de instrucción ilegal. Como resultado de todos los experimentos durante varios días, se obtuvo el siguiente conjunto de Vids "estables": 30, 18, 12, 7, 2, 0.

Análisis de resultados

Ahora que hemos determinado empíricamente las tensiones mínimas de seguridad, es interesante compararlas con las originales:
Reducir el voltaje máximo incluso en un 15% produjo resultados bastante notables: la carga prolongada no sólo ya no provoca un sobrecalentamiento del procesador y un apagado de emergencia, sino que ahora la temperatura casi nunca supera los 80°C. La duración prevista de la batería en modo "oficina", a juzgar por acpiconf -i 0, aumentó de 1 hora 40 ma 2 h 25 m (no tanto, pero las celdas de iones de litio se cansan con el tiempo y no he cambiado la batería desde que compré la computadora portátil hace siete años).

Ahora debemos asegurarnos de que la configuración se aplique automáticamente. Puede, por ejemplo, modificar el controlador cpufreq(4) para que los valores PSV se tomen de su propia tabla, en lugar de a través de ACPI. Pero esto es un inconveniente, aunque solo sea porque es necesario recordar parchear el controlador al actualizar el sistema y, en general, parece más un truco sucio que una solución. Probablemente puedas parchear powerd(8) de alguna manera, lo cual es malo por las mismas razones. Simplemente puede ejecutar el script, reduciendo el voltaje escribiendo directamente en el MSR (que, de hecho, es lo que hice para determinar los voltajes "estables"), pero luego tendrá que recordar y procesar de forma independiente las transiciones entre estados (no solo estados P, pero ninguno, por ejemplo, cuando la computadora portátil se despierta del modo de suspensión). Ese tampoco es el punto.

Si recibimos valores de PSV a través de ACPI, lo más lógico es cambiar la tabla _PSS en DSDT. Afortunadamente, no es necesario modificar el BIOS para esto: FreeBSD puede cargar DSDT desde un archivo (ya hemos hablado sobre la modificación de las tablas ACPI en Habré, por lo que no nos detendremos en esto en detalle ahora). Reemplace los campos obligatorios en DSDT:

Parche de bajo voltaje para _PSS

@@ -7385.8 +7385.8 @@ 0x00006978, 0x0000000A, 0x0000000A, - 0x0000112B, - 0x0000112B + 0x0000111D, + 0x0000111D), Paquete (0x06) @@ -7395.8 +7 395.8 @@ 0x000059D8, 0x0000000A, 0x0000000A, - 0x00000E25, - 0x00000E25 + 0x00000E12, + 0x00000E12), Paquete (0x06) @@ -7405.8 +7405.8 @@ 0x00005208, 0x0000000A, 0x0000000A, - 0x00000C20, - 0x00000C20 + 0x00000C 0C, + 0x00000C0C ), Paquete (0x06) @@ -7415.8 +7415.8 @@ 0x00004650 , 0x0000000A, 0x0000000A, - 0x00000A1C, - 0x00000A1C + 0x00000A07, + 0x00000A07), Paquete (0x06) @@ -74 25.8 +7425.8 @@ 0x00003E80, 0x00000 00A, 0x0000000A, - 0x00000817, - 0x00000817 + 0x00000802, + 0x00000802), Paquete ( 0x06) @@ -7435.8 +7435.8 @@ 0x000032C8, 0x0000000A, 0x0000000A, - 0x00000612, - 0x00000612 + 0x00000600, + 0x00000600) ) )


Compilamos un nuevo archivo AML (código de bytes ACPI) y modificamos /boot/loader.conf para que FreeBSD cargue nuestro DSDT modificado en lugar del predeterminado:

Acpi_dsdt_load="SÍ" acpi_dsdt_name="/root/undervolt.aml"
Eso es básicamente todo. Lo único es que no olvides comentar estas dos líneas en /boot/loader.conf si cambias el procesador.

Incluso si no va a reducir los voltajes estándar, la posibilidad de configurar la gestión de los estados del procesador (no sólo los estados P) puede resultar útil. Después de todo, a menudo sucede que un BIOS "torcido" llena las tablas de manera incorrecta, incompleta o no las completa en absoluto (por ejemplo, porque hay un Celerone que no es compatible con EST y el fabricante no proporciona oficialmente su reemplazo). En este caso, tendrás que hacer todo el trabajo tú mismo. Tenga en cuenta que agregar sólo la tabla _PSS puede no ser suficiente; Por lo tanto, los estados C se especifican en la tabla _CST y, además, puede ser necesario describir los propios procedimientos de control (Control de rendimiento, _PCT). Afortunadamente, esto no es difícil y se describe con bastante detalle, con ejemplos, en el capítulo ocho de la especificación ACPI.

Subvoltaje en GNU/Linux

A decir verdad, al principio pensé que todo lo que podía hacer era leer la Guía de Undervolting de Gentoo y simplemente adaptarla para FreeBSD. Esto resultó no ser tan simple, porque el documento resultó ser extremadamente estúpido (lo cual en realidad es extraño para Gentoo Wiki). Desafortunadamente, no encontré nada similar en su nuevo sitio web, así que tuve que contentarme con la copia anterior; y aunque entiendo que esta guía ha perdido gran parte de su relevancia, igual la criticaré un poco. :-)

Por alguna razón, inmediatamente, sin declararme la guerra, me ofrecen parchear el kernel (en FreeBSD, por un minuto, no tenemos ningún sistema código no fue necesario modificarlo). Ingrese en el interior del controlador o escriba en algunos scripts de inicio los valores de ciertos voltajes "seguros", obtenidos por alguien desconocido y cómo, de una tabla especial (en la que el Pentium M 780 está representado burlonamente por una línea que consta solo de una pregunta marcas). Siga los consejos, algunos de los cuales están escritos por personas que claramente no tienen idea de lo que están hablando. Y lo más importante, no está del todo claro por qué y cómo funcionan exactamente estos reemplazos mágicos de algunos números por otros; no hay forma de “tocar” EST antes de parchear algo y reconstruir el kernel, y nunca se mencionan los registros MSR ni trabajar con ellos desde la línea de comandos. La modificación de las tablas ACPI no se considera una opción alternativa o preferible.

Makos interactúa bastante estrechamente con ACPI (y espera un funcionamiento correcto), y modificar tablas es uno de los principales métodos para personalizarlo para hardware específico. Por lo tanto, lo primero que me viene a la mente es volcar y parchear su DSDT de la misma manera. Método alternativo: google://IntelEnhancedSpeedStep.kext, por ejemplo, uno, dos, tres.

Otra utilidad "maravillosa" (afortunadamente, ya desactualizada) ofrece comprar por 10 dólares la posibilidad de cambiar el voltaje y la frecuencia. :-)

Hay una discusión en Internet sobre un programa muy interesante llamado RMClock. Antes de esto, ya me había encontrado con el programa varias veces, pero la configuración que no estaba clara a primera vista y la falta de documentación provocaron rechazo y desanimaron cualquier deseo de utilizar esta utilidad. Sin embargo, el programa es muy interesante y merece atención. Ahora te diré por qué y cómo puede atraer al propietario promedio de una computadora portátil.

Desarrollador marca derecha

Cargar tamaño de archivo 463 KB

Propósito del programa

Una pequeña utilidad que monitorea la velocidad del reloj, la aceleración, la carga del procesador, el voltaje y la temperatura del núcleo del procesador en tiempo real. También puede gestionar el rendimiento y el consumo de energía de los procesadores que admiten funciones de administración de energía. en modo Control automático monitorea constantemente el nivel de carga del procesador y cambia automáticamente su velocidad de reloj, voltaje del núcleo y/o nivel de aceleración de acuerdo con el concepto de "rendimiento bajo demanda".

Beneficio para el usuario medio

Reducir el voltaje suministrado al procesador central, de este modo reducir el consumo de energía, reducir la generación de calor y aumentar la autonomía.

Sin entrar en detalles técnicos, la idea es bastante simple: reducir el consumo de energía de la unidad central de procesamiento (CPU). El método no es universal ni 100% correcto porque cada CPU tiene propiedades físicas únicas y existe una alta probabilidad de que a la misma velocidad de reloj requiera menos energía que la predeterminada para todos los procesadores. de este tipo. Cuánto puedes reducir el consumo de energía depende de la suerte y de tu CPU. Tuve suerte y los resultados fueron muy reveladores.

Instalación

Simplemente seguimos las instrucciones y nada más. Solo tenga en cuenta que el programa se agrega automáticamente al inicio y se convierte en un software estándar para administrar los perfiles de consumo de energía. Entonces, si tiene otro software instalado (utilidades patentadas de Acer, ASUS), debe desactivarlos por completo para evitar conflictos.

Ajustes

Ajustes

En esta pestaña necesitas marcar dos puntos en el bloque. Puesta en marchaOpciones. Para que la aplicación se inicie automáticamente cuando se inicia Windows.

Gestión

También dejamos todo por defecto y comprobamos que el artículo PermitirSOfuerzagestiónintegración activado

Perfiles

Aquí es donde comienza la diversión. Para los estados de alimentación de CA (funcionando desde la red eléctrica) y Batería (funcionando desde la batería), configure los perfiles requeridos. Cuando trabaje desde la red, recomiendo configurar en demanda (rendimiento según sea necesario) y cuando funciona con batería Fuerza Ahorro.

Inmediatamente debajo de los perfiles se muestran todos los estados posibles del procesador (multiplicadores, FID), así como el voltaje (VID) suministrado a la CPU en este estado. La frecuencia de reloj a la que opera el procesador depende del estado actual; La capacidad de cambiar la frecuencia está diseñada para reducir el consumo de energía durante cargas ligeras o tiempos de inactividad.

Ahora nuestra tarea es establecer un voltaje más bajo para cada multiplicador. No experimenté por mucho tiempo y configuré el voltaje mínimo para cada multiplicador. Responderé inmediatamente a la pregunta sobre el daño de tales acciones: no le pasará nada a su procesador; en el peor de los casos, el sistema se congelará. En mi caso todo funcionó bien, pero si tienes algún problema, intenta reducir el voltaje en pequeños pasos hasta el valor mínimo en el que el sistema funcionará de manera estable.

Ahora necesitas configurar perfiles. Rendimiento bajo demanda Y Ahorro de energía. Para hacer esto, seleccione los elementos apropiados. En ambos casos, marque la casilla Usar PAG- estado transiciones ( hora del Pacífico), el perfil en el que se encuentra actualmente. Además, para el perfil en demanda seleccione todos los multiplicadores de la lista y para el perfil Fuerza Ahorro solo el primero (esto significa que cuando funciona con batería, el procesador siempre funcionará a la frecuencia mínima; por supuesto, puede seleccionar un multiplicador diferente, aumentando así la frecuencia máxima permitida). Dejamos inactivas el resto de opciones.

Trabajo

Eso es todo. Ahora necesita activar el perfil de energía RMClock Power Management. Para hacer esto, haga clic izquierdo en la batería en la bandeja y seleccione el perfil deseado. Si no está allí, debe hacer clic en Opciones adicionales consumo de energía y selecciónelo allí. Ahora, cuando conecte la alimentación, la computadora portátil usará el perfil. en demanda , A cuando funciona con batería - Fuerza Ahorro, utilizando los ajustes que hicimos anteriormente. Al mismo tiempo, redujimos el consumo de energía del procesador y lo hicimos responder claramente a la configuración del programa (cuando se usa un programa de control estándar, la frecuencia puede subir y bajar incluso cuando está inactivo y el voltaje también cambia).

Comprobación

Si hiciste todo correctamente, entonces en la pestaña Supervisión Puedes ver el resultado del trabajo. El gráfico FID-VID muestra el multiplicador de corriente y el voltaje. Verifique estos valores cuando funcione con red eléctrica y con batería; deben coincidir con los valores establecidos en el perfil.

Ahora es recomendable probar todas las configuraciones con algún programa, por ejemplo Prime95. La tarea es asegurarnos de que la CPU funcione sin problemas con la configuración de voltaje que hemos elegido.

Pruebas

En teoría, todo va genial como siempre, pero ¿cómo afectan estas acciones al trabajo real?

Sistema de prueba: Terra 1220 (Intel Core 2 Duo T7300)

Probé ambos modos de funcionamiento y los comparé con modos similares del programa de administración de energía estándar.

EquilibradoRendimiento VS bajo demanda

La autonomía fue probada por el programa BatteryEater en modo de carga máxima (Classic). Las interfaces inalámbricas están desactivadas, el brillo de la pantalla está configurado al máximo.

Como puede ver, el tiempo de funcionamiento no cambió en absoluto y ascendió a 88 minutos. Cada prueba se realizó dos veces para verificar los resultados. Entonces en mi caso particular bajar el voltaje no afectó el tiempo duración de la batería. Pero los indicadores de temperatura son interesantes: la temperatura máxima durante la prueba cuando se usa RMClock disminuyó en 23ºC! Justo excelente resultado, lo que para el usuario final supone una disminución banal de la temperatura de la carcasa del portátil, así como una disminución del ruido (el ventilador no se enciende a máxima velocidad).

El rendimiento en PCMark tampoco cambió, la diferencia en las medidas está dentro del margen de error. Pero con la temperatura vemos la misma imagen: la temperatura máxima disminuyó en 17ºC.

El ahorro de energíacontraFuerzaAhorro

Aquí la situación se repitió. La duración de la batería no ha disminuido, pero la temperatura ha bajado significativamente. Esto tiene un efecto positivo en la comodidad en el trabajo.

Los procesadores de escritorio modernos y (especialmente) móviles utilizan una serie de tecnologías de ahorro de energía: ODCM, CxE, EIST, etc. Hoy nos interesará quizás el nivel más alto de ellas: control flexible de la frecuencia y el voltaje del núcleo del procesador durante operación - Cool "n "Quiet, PowerNow! para AMD y Enhanced SpeedStep (EIST) para Intel.

En la mayoría de los casos, un usuario de computadora o computadora portátil simplemente necesita habilitar (marcar una casilla) la compatibilidad con una tecnología en particular en el BIOS y/o el sistema operativo; generalmente no se proporciona ningún ajuste fino, aunque, como muestra la práctica, puede ser muy útil. . En este artículo hablaré sobre cómo se puede controlar el voltaje operativo del núcleo del procesador desde el sistema operativo (usando el ejemplo de Intel Pentium M y FreeBSD) y por qué esto podría ser necesario.

A pesar de la gran cantidad de manuales, es raro encontrar una descripción detallada de la tecnología Enhanced SpeedStep desde el punto de vista del sistema operativo (y no del usuario final), especialmente en ruso, por lo que una parte importante del artículo está dedicada a detalles de implementación y es de naturaleza algo teórica.

Espero que este artículo sea de utilidad no sólo para los usuarios de FreeBSD: también tocaremos un poco sobre GNU/Linux, Windows y Mac OS X. Sin embargo, en este caso el sistema operativo concreto pasa a un segundo plano.

Prefacio

El año pasado, actualicé el procesador de mi vieja computadora portátil: instalé un Pentium M 780 en lugar del 735 estándar y lo llevé al máximo, por así decirlo. La computadora portátil comenzó a calentarse más bajo carga (debido a que la disipación de calor aumentó en 10 W); No le presté mucha atención (excepto que limpié y lubriqué el refrigerador por si acaso), pero un buen día, durante una larga compilación, la computadora... simplemente se apagó (la temperatura alcanzó los cien grados críticos). ). Mostré el valor de la variable del sistema hw.acpi.thermal.tz0.temperature en la bandeja para monitorear la temperatura y, si sucede algo, interrumpir la tarea "pesada" a tiempo. Pero después de un tiempo perdí la vigilancia (la temperatura siempre se mantuvo dentro de lo normal) y todo volvió a suceder. En este punto, decidí que ya no quería temer constantemente un bloqueo durante una carga prolongada de la CPU y mantener la mano presionada Ctrl-C, ni forzar el procesador.

Normalmente, cambiar el voltaje estándar significa aumentarlo para garantizar un funcionamiento estable del procesador durante el overclocking (es decir, a una frecuencia aumentada). En términos generales, cada valor de voltaje corresponde a un cierto rango de frecuencias en las que puede funcionar, y la tarea del overclocker es encontrar la frecuencia máxima a la que el procesador aún no tiene "fallos". En nuestro caso, la tarea es en cierto sentido simétrica: para una frecuencia conocida (más precisamente, como pronto descubriremos, un conjunto de frecuencias), encuentre el voltaje más bajo que garantice un funcionamiento estable de la CPU. No quiero reducir la frecuencia de funcionamiento para no perder rendimiento: la computadora portátil ya está lejos de ser de gama alta. Además, reduzca el voltaje. más rentable.

una pequeña teoría

Como es sabido, la disipación de calor de un procesador es proporcional a su capacidad, frecuencia y cuadrado voltaje (quien esté interesado en saber por qué esto es así, puede intentar derivar la dependencia por su cuenta, considerando el procesador como un conjunto de inversores CMOS elementales (negadores lógicos), o seguir los enlaces: uno, dos, tres).

Los procesadores móviles modernos pueden consumir entre 50 y 70 W, que finalmente se disipan en calor. Esto es mucho (recuerde las lámparas incandescentes), especialmente para una computadora portátil, que en modo fuera de línea bajo carga "comerá" la batería como ese cerdo come naranjas. En espacios reducidos, lo más probable es que sea necesario eliminar activamente el calor, lo que implica un consumo adicional de energía para hacer girar el ventilador del refrigerador (posiblemente varios).

Naturalmente, esta situación no le convenía a nadie y los fabricantes de procesadores comenzaron a pensar en cómo optimizar el consumo de energía (y, en consecuencia, la transferencia de calor) y, al mismo tiempo, evitar el sobrecalentamiento del procesador. Para aquellos interesados, recomiendo leer una serie de maravillosos artículos de Dmitry Besedin y, mientras tanto, iré directo al grano.

Una pequeña historia

Por primera vez, la tecnología SpeedStep (versión 1.1) apareció en la segunda generación de terceros Pentium (producidos mediante el proceso técnico de 18 micrones, Coppermine móvil para computadoras portátiles, 2000), que, dependiendo de la carga o fuente de alimentación de la computadora, red o batería: podría cambiar entre frecuencias altas y bajas debido a un multiplicador variable. En modo económico, el procesador consumía aproximadamente la mitad de energía.

Con la transición a un proceso técnico de 13 micrones, la tecnología recibe la versión número 2.1 y se "mejora": ahora el procesador puede reducir no solo la frecuencia, sino también el voltaje. La versión 2.2 es una adaptación para la arquitectura NetBurst, y en la tercera versión (plataforma Centrino) la tecnología se llamará oficialmente Intel SpeedStep mejorado (EIST).

La versión 3.1 (2003) se utilizó por primera vez en la primera y segunda generación de procesadores Pentium M (núcleos Banias y Dothan). La frecuencia variaba (al principio solo cambiaba entre dos valores) del 40% al 100% de la base, en pasos de 100 MHz (para Banias) o 133 MHz (para Dothan, nuestro caso). Al mismo tiempo, Intel está introduciendo una gestión dinámica de la capacidad del caché de segundo nivel (L2), que permite una optimización aún mejor del consumo de energía. Versión 3.2 (EIST mejorado): adaptación para procesadores multinúcleo con caché L2 compartida. (Pequeñas preguntas frecuentes de Intel sobre la tecnología SpeedStep).

Ahora, en lugar de seguir ciegamente numerosos procedimientos y tutoriales, descarguemos el pdf e intentemos comprender el principio de funcionamiento de EST (seguiré usando esta abreviatura, porque es más universal y más corta).

Cómo funciona EST

Entonces, EST le permite controlar el rendimiento y el consumo de energía del procesador, y dinamicamente, durante su funcionamiento. A diferencia de implementaciones anteriores, que requerían soporte de hardware (en el chipset) para cambiar los parámetros operativos del procesador, EST permite programáticamente, es decir. Usando el BIOS o el sistema operativo, cambie el multiplicador (la relación entre la frecuencia del procesador y la frecuencia del bus) y el voltaje del núcleo (V cc) según la carga, el tipo de fuente de alimentación de la computadora, la temperatura de la CPU y/o la configuración (políticas) del sistema operativo.

Durante el funcionamiento, el procesador se encuentra en uno de varios estados (estados de energía): T (acelerador), S (suspensión), C (inactivo), P (rendimiento), cambiando entre ellos de acuerdo con ciertas reglas (pág. 386 de ACPI especificación 5.0).

Cada procesador presente en el sistema debe describirse en una tabla DSDT, generalmente en el espacio de nombres \_PR, y generalmente proporciona una serie de métodos a través de los cuales interactúa con el sistema operativo (controlador PM) y que describen las capacidades del procesador ( _PDC, _PPC), estados soportados (_CST, _TSS, _PSS) y su gestión (_PTC, _PCT). Los valores requeridos para cada CPU (si está incluida en el llamado paquete de soporte de CPU) los determina la BIOS de la placa base, que completa las tablas y métodos ACPI correspondientes (p. 11 pdf) cuando arranca la máquina. .

EST controla el funcionamiento del procesador en el estado P y serán de nuestro interés. Por ejemplo, Pentium M admite seis estados P (consulte la Fig. 1.1 y la Tabla 1.6 pdf), que se diferencian en voltaje y frecuencia:

En el caso general, cuando se desconoce de antemano el procesador, el único método más o menos fiable (y recomendado por Intel) para trabajar con él es ACPI. Puede interactuar con un procesador específico directamente, sin pasar por ACPI, a través de registros MSR (Registro específico del modelo), incluso directamente desde la línea de comando: a partir de la versión 7.2, FreeBSD utiliza la utilidad cpucontrol(8) para esto.

Para saber si su procesador admite EST, puede mirar el bit 16 en el registro IA_32_MISC_ENABLE (0x1A0), debe estar configurado:

# kldload cpuctl # cpucontrol -m 0x1a0 /dev/cpuctl0 | (leer _ msr hola lo ; echo $((lo >> 16 y 1))) 1
Comando similar para GNU/Linux (requiere el paquete msr-tools):

# modprobe msr # echo $((`rdmsr -c 0x1a0` >> 16 y 1)) 1
La transición entre estados ocurre al escribir en el registro IA32_PERF_CTL (0x199). Puede averiguar el modo de funcionamiento actual leyendo el registro IA32_PERF_STATUS (0x198), que se actualiza dinámicamente (Tabla 1.4 pdf). En el futuro, omitiré el prefijo IA32_ por brevedad.

# cpucontrol -m 0x198 /dev/cpuctl0 MSR 0x198: 0x0612112b 0x06000c20
De la documentación se deduce que el estado actual está codificado en los 16 bits inferiores (si el comando se ejecuta varias veces, su valor puede cambiar; esto significa que EST está funcionando). Si miras más de cerca los bits restantes, claramente tampoco son basura. Si buscas en Google, podrás descubrir qué significan.

Estructura del registro PERF_STATUS

Los datos leídos de PERF_STATUS están representados por la siguiente estructura (suponiendo que los datos se almacenen como little-endian):

Struct msr_perf_status ( unsigned curr_psv: 16; /* PSV actual */ unsigned status: 8; /* Banderas de estado */ unsigned min_mult: 8; /* Multiplicador mínimo */ unsigned max_psv: 16; /* Máximo PSV */ unsigned init_psv: 16; /* Encendido PSV */ );
Tres campos de 16 bits son los llamados Valores de estado de rendimiento (PSV), consideraremos su estructura a continuación: el valor de PSV actual, el máximo (según el procesador) y el valor al iniciar el sistema (cuando está encendido) . El valor actual (curr_psv) obviamente cambia cuando cambia el modo de funcionamiento, el máximo (max_psv) generalmente permanece constante, el valor inicial (init_psv) no cambia: como regla general, es igual al valor máximo para computadoras de escritorio y servidores, pero el mínimo para CPU móviles. El multiplicador mínimo (min_mult) para los procesadores Intel es casi siempre seis. El campo de estado contiene el valor de algunas banderas, por ejemplo, cuando ocurren los eventos EST o THERM (es decir, cuando el estado P cambia o el procesador se sobrecalienta, respectivamente).

Ahora que conocemos el propósito de los 64 bits del registro PERF_STATUS, podemos descifrar la palabra que leímos arriba: 0x0612 112b 0x06 00 0c20⇒ PSV al inicio 0x0612, valor máximo 0x112b, multiplicador mínimo 6 (como se esperaba), banderas borradas, valor actual de PSV = 0x0c20. ¿Qué significan exactamente estos 16 bits?

Estructura del valor del estado de rendimiento (PSV)

Es muy importante saber y comprender qué es PSV, porque es de esta forma que se configuran los modos de funcionamiento del procesador.

Estructura psv (unsigned vid: 6; /* Identificador de voltaje */ unsigned _reserved1: 2; unsigned freq: 5; /* Identificador de frecuencia */ unsigned _reserved2: 1; unsigned nibr: 1; /* Relación de bus no entera */ unsigned slfm: 1; /* Frecuencia FSB dinámica (Super-LFM) */ );
La conmutación de frecuencia dinámica del FSB especifica omitir cada segundo ciclo de reloj del FSB, es decir, reducir la frecuencia de funcionamiento a la mitad; esta característica se implementó por primera vez en los procesadores Core 2 Duo (Merom core) y no nos concierne, al igual que la relación de bus no entera, un modo especial admitido por algunos procesadores que permite, como su nombre indica, un control más detallado. de su frecuencia.

Dos campos están relacionados con la tecnología EST en sí: los identificadores de frecuencia (Frequency Identifier, Fid), que es numéricamente igual al multiplicador, y el voltaje (Voltage Identifier, Vid), que corresponde al nivel de voltaje (también suele ser el menos documentado). ).

Identificador de voltaje

Intel es muy reacio a revelar información (normalmente se requiere un acuerdo de confidencialidad) sobre cómo exactamente se codifica el ID de voltaje para cada procesador. Pero, afortunadamente, para las CPU más populares, esta fórmula es conocida; en particular, para nuestro Pentium M (y muchos otros): V cc = Vid 0 + (Vid × V paso), donde V cc es el voltaje actual (real), Vid 0 es el voltaje base (cuando Vid == 0) , V paso - paso. Tabla para algunos procesadores populares (todos los valores en milivoltios):
UPC Vídeo 0 V paso arranque en V Vmín Vmáx
Pentium M 700,0 16,0 xxxx,x xxx,x xxxx,x
E6000, E4000 825,0 12,5 1100,0 850,0 1500,0
E8000, E7000 825,0 12,5 1100,0 850,0 1362,5
X9000 712,5 12,5 1200,0 800,0 1325,0
T9000 712,5 12,5 1200,0 750,0 1300,0
P9000, P8000 712,5 12,5 1200,0 750,0 1300,0
Q9000D, Q8000D 825,0 12,5 1100,0 850,0 1362,5
Q9000M 712,5 12,5 1200,0 850,0 1300,0
El multiplicador (es decir, Fid) se escribe en PSV desplazado 8 bits hacia la izquierda, los seis bits inferiores están ocupados por Vid. Porque en nuestro caso, los bits restantes se pueden descuidar, luego el PSV, la frecuencia del procesador, el bus del sistema y el voltaje físico se relacionan mediante una fórmula simple (para Pentium M):
Ahora veamos el registro de control (PERF_CTL). La escritura en él debe hacerse de la siguiente manera: primero, se lee el valor actual (la palabra completa de 64 bits), se cambian los bits necesarios y se vuelve a escribir en el registro (la llamada lectura-modificación-escritura) .

Estructura de registro PERF_CTL

struct msr_perf_ctl ( psv sin firmar: 16; /* PSV solicitado */ sin firmar _reserved1: 16; sin firmar ida_disengage: 1; /* IDA desvincular */ sin firmar _reserved2: 31; );
El bit de desconexión IDA (Intel Dynamic Acceleration) le permite desactivar temporalmente el control de frecuencia oportunista en procesadores Intel Core 2 Duo T7700 y posteriores; nuevamente, no es de nuestro interés. Los 16 bits bajos (PSV) es el modo al que "pedimos" al procesador que cambie.

Tabla _PSS

La tabla _PSS es una matriz de estados ( Paquete en terminología ACPI) o un método que devuelva dicha matriz; cada estado (estado P) a su vez está definido por la siguiente estructura (p. 409 de la especificación ACPI):

Struct Pstate ( CoreFrequency unsigned; /* Frecuencia operativa de la CPU central, MHz */ Power unsigned; /* Disipación de potencia máxima, mW */ Latencia unsigned; /* Latencia en el peor de los casos de indisponibilidad de la CPU durante la transición, µs */ BusMasterLatency unsigned; / * Latencia en el peor de los casos mientras los Bus Masters no pueden acceder a la memoria, µs */ Control unsigned; /* Valor que se escribirá en PERF_CTL para cambiar a este estado */ Estado unsigned; /* Valor (debe ser igual al leído de PERF_STATUS) */ );
Así, cada estado P se caracteriza por alguna frecuencia de funcionamiento del núcleo, disipación máxima de energía, retrasos en el tránsito (de hecho, este es el tiempo de transición entre estados durante los cuales la CPU y la memoria no están disponibles), finalmente, lo más interesante: PSV , que corresponde a este estado y que debe escribirse en PERF_CTL para poder pasar a este estado (Control). Para asegurarse de que el procesador haya pasado exitosamente a un nuevo estado, debe leer el registro PERF_STATUS y compararlo con el valor registrado en el campo Estado.

El controlador EST del sistema operativo puede "conocer" algunos procesadores, es decir. podrá gestionarlos sin soporte ACPI. Pero esto es raro, especialmente hoy en día (aunque para subvoltear en Linux, en algún momento antes de la versión 2.6.20, era necesario parchear las tablas en el controlador, y en 2011 este método era bastante común).

Vale la pena señalar que el controlador EST puede funcionar incluso si no hay una tabla _PSS y un procesador desconocido, porque los valores máximo y mínimo se pueden encontrar en PERF_STATUS (en este caso, obviamente, el número de estados P degenera a dos).

Basta de teoría. ¿Qué hacer con todo esto?

Ahora que sabemos 1) el propósito de todos los bits en las palabras MSR necesarias, 2) exactamente cómo se codifica PSV para nuestro procesador y 3) dónde buscar las configuraciones necesarias en DSDT, es hora de hacer una tabla de frecuencias. y voltajes por defecto. Desechemos DSDT y busquemos la tabla _PSS allí. Para Pentium M 780 debería verse así:

Valores predeterminados_PSS

Nombre (_PSS, Paquete (0x06) ( // Se definen un total de 6 estados (estados P) Paquete (0x06) ( 0x000008DB, // 2267 MHz (cf. Fid × reloj FSB) 0x00006978, // 27000 mW 0x0000000A, // 10 µs (cumple con las especificaciones) 0x0000000A, // 10 µs 0x0000112B, // 0x11 = 17 (multiplicador, Fid), 0x2b = 43 (Vid) 0x0000112B), Paquete (0x06) (0x0000074B, // 1867 MHz (82% del máximo) 0x000059D8, // 23000 mW 0x0000000A, 0x0000000A, 0x00000E25, // Fid = 14, Vid = 37 0x00000E25 ), Paquete (0x06) ( 0x00000640, // 1600 MHz (71% del máximo) 0x 00 005208, // 21000 mW 0x0000000A, 0x0000000A, 0x00000C20, // Fid = 12, Vid = 32 0x00000C20), Paquete (0x06) (0x00000535, // 1333 MHz (59% del máximo) 0x00004650, // 18000 mW 0x 0000000A, 0x0000000A, 0x 00000A1C, / / Fid = 10, Vid = 28 0x00000A1C ), Paquete (0x06) ( 0x0000042B, // 1067 MHz (47% del máximo) 0x00003E80, // 16000 mW 0x0000000A, 0x0000000A, 0x00000817, // Fid = 8 , Vídeo = 23 0x00000817 ), Paquete (0x06) (0x00000320, // 800 MHz (35% del máximo) 0x000032C8, // 13000 mW 0x0000000A, 0x0000000A, 0x00000612, // Fid = 6, Vid = 18 0x00000612 ) ))


Entonces, conocemos el Vid predeterminado para cada nivel P: 43, 37, 32, 28, 23, 18, que corresponde a voltajes de 1388 mV a 988 mV. La esencia del undervolting es que estos voltajes probablemente sean algo más altos de lo que realmente es necesario para el funcionamiento estable del procesador. Intentemos determinar los "límites de lo permitido".

Escribí un script de shell simple para esto, que gradualmente reduce Vid y realiza un bucle simple (el demonio powerd(8) debe ser eliminado antes de esto, por supuesto). Así, determiné los voltajes que al menos permitirían que el procesador no se congelara, luego ejecuté la prueba Super Pi varias veces y volví a ensamblar el núcleo; Más tarde, aumenté el valor de Vid para las dos frecuencias máximas en un punto más; de lo contrario, gcc ocasionalmente fallaría debido a un error de instrucción ilegal. Como resultado de todos los experimentos durante varios días, se obtuvo el siguiente conjunto de Vids "estables": 30, 18, 12, 7, 2, 0.

Análisis de resultados

Ahora que hemos determinado empíricamente las tensiones mínimas de seguridad, es interesante compararlas con las originales:
Reducir el voltaje máximo incluso en un 15% produjo resultados bastante notables: la carga prolongada no sólo ya no provoca un sobrecalentamiento del procesador y un apagado de emergencia, sino que ahora la temperatura casi nunca supera los 80°C. La duración prevista de la batería en modo "oficina", a juzgar por acpiconf -i 0, aumentó de 1 hora 40 ma 2 h 25 m (no tanto, pero las celdas de iones de litio se cansan con el tiempo y no he cambiado la batería desde que compré la computadora portátil hace siete años).

Ahora debemos asegurarnos de que la configuración se aplique automáticamente. Puede, por ejemplo, modificar el controlador cpufreq(4) para que los valores PSV se tomen de su propia tabla, en lugar de a través de ACPI. Pero esto es un inconveniente, aunque solo sea porque es necesario recordar parchear el controlador al actualizar el sistema y, en general, parece más un truco sucio que una solución. Probablemente puedas parchear powerd(8) de alguna manera, lo cual es malo por las mismas razones. Simplemente puede ejecutar el script, reduciendo el voltaje escribiendo directamente en el MSR (que, de hecho, es lo que hice para determinar los voltajes "estables"), pero luego tendrá que recordar y procesar de forma independiente las transiciones entre estados (no solo estados P, pero ninguno, por ejemplo, cuando la computadora portátil se despierta del modo de suspensión). Ese tampoco es el punto.

Si recibimos valores de PSV a través de ACPI, lo más lógico es cambiar la tabla _PSS en DSDT. Afortunadamente, no es necesario jugar con el BIOS para esto: FreeBSD puede cargar DSDT desde un archivo (ya hemos escrito sobre cómo modificar las tablas ACPI en Habré más de una vez, por lo que no nos detendremos en esto en detalle ahora) . Reemplace los campos obligatorios en DSDT:

Parche de bajo voltaje para _PSS

@@ -7385.8 +7385.8 @@ 0x00006978, 0x0000000A, 0x0000000A, - 0x0000112B, - 0x0000112B + 0x0000111D, + 0x0000111D), Paquete (0x06) @@ -7395.8 +7 395.8 @@ 0x000059D8, 0x0000000A, 0x0000000A, - 0x00000E25, - 0x00000E25 + 0x00000E12, + 0x00000E12), Paquete (0x06) @@ -7405.8 +7405.8 @@ 0x00005208, 0x0000000A, 0x0000000A, - 0x00000C20, - 0x00000C20 + 0x00000C 0C, + 0x00000C0C ), Paquete (0x06) @@ -7415.8 +7415.8 @@ 0x00004650 , 0x0000000A, 0x0000000A, - 0x00000A1C, - 0x00000A1C + 0x00000A07, + 0x00000A07), Paquete (0x06) @@ -74 25.8 +7425.8 @@ 0x00003E80, 0x00000 00A, 0x0000000A, - 0x00000817, - 0x00000817 + 0x00000802, + 0x00000802), Paquete ( 0x06) @@ -7435.8 +7435.8 @@ 0x000032C8, 0x0000000A, 0x0000000A, - 0x00000612, - 0x00000612 + 0x00000600, + 0x00000600) ) )


Compilamos un nuevo archivo AML (código de bytes ACPI) y modificamos /boot/loader.conf para que FreeBSD cargue nuestro DSDT modificado en lugar del predeterminado:

Acpi_dsdt_load="SÍ" acpi_dsdt_name="/root/undervolt.aml"
Eso es básicamente todo. Lo único es que no olvides comentar estas dos líneas en /boot/loader.conf si cambias el procesador.

Incluso si no va a reducir los voltajes estándar, la posibilidad de configurar la gestión de los estados del procesador (no sólo los estados P) puede resultar útil. Después de todo, a menudo sucede que un BIOS "torcido" llena las tablas de manera incorrecta, incompleta o no las completa en absoluto (por ejemplo, porque hay un Celerone que no es compatible con EST y el fabricante no proporciona oficialmente su reemplazo). En este caso, tendrás que hacer todo el trabajo tú mismo. Tenga en cuenta que agregar sólo la tabla _PSS puede no ser suficiente; Por lo tanto, los estados C se especifican en la tabla _CST y, además, puede ser necesario describir los propios procedimientos de control (Control de rendimiento, _PCT). Afortunadamente, esto no es difícil y se describe con bastante detalle, con ejemplos, en el capítulo ocho de la especificación ACPI.

Subvoltaje en GNU/Linux

A decir verdad, al principio pensé que todo lo que podía hacer era leer la Guía de Undervolting de Gentoo y simplemente adaptarla para FreeBSD. Esto resultó no ser tan simple, porque el documento resultó ser extremadamente estúpido (lo cual en realidad es extraño para Gentoo Wiki). Desafortunadamente, no encontré nada similar en su nuevo sitio web, así que tuve que contentarme con la copia anterior; y aunque entiendo que esta guía ha perdido gran parte de su relevancia, igual la criticaré un poco. :-)

Por alguna razón, inmediatamente, sin declararme la guerra, me ofrecen parchear el kernel (en FreeBSD, por un minuto, no tenemos ningún sistema código no fue necesario modificarlo). Ingrese en el interior del controlador o escriba en algunos scripts de inicio los valores de ciertos voltajes "seguros", obtenidos por alguien desconocido y cómo, de una tabla especial (en la que el Pentium M 780 está representado burlonamente por una línea que consta solo de una pregunta marcas). Siga los consejos, algunos de los cuales están escritos por personas que claramente no tienen idea de lo que están hablando. Y lo más importante, no está del todo claro por qué y cómo funcionan exactamente estos reemplazos mágicos de algunos números por otros; no hay forma de “tocar” EST antes de parchear algo y reconstruir el kernel, y nunca se mencionan los registros MSR ni trabajar con ellos desde la línea de comandos. La modificación de las tablas ACPI no se considera una opción alternativa o preferible.

Makos interactúa bastante estrechamente con ACPI (y espera un funcionamiento correcto), y modificar tablas es uno de los principales métodos para personalizarlo para hardware específico. Por lo tanto, lo primero que me viene a la mente es volcar y parchear su DSDT de la misma manera. Método alternativo: google://IntelEnhancedSpeedStep.kext, por ejemplo, uno, dos, tres.

Otra utilidad "maravillosa" (afortunadamente, ya desactualizada) ofrece comprar por 10 dólares la posibilidad de cambiar el voltaje y la frecuencia. :-)

Compartir