¿Es útil subir los GHz a un núcleo de la CPU?: ventajas e inconvenientes

Los diseñadores de procesadores crean nuevas tretas para sacar el máximo provecho de sus nuevas arquitecturas y una de ellas es el hecho de aumentar la velocidad de reloj de un solo núcleo por encima del limite común de toda la CPU. A esto se le llama boost de un solo núcleo y os vamos a explicar en esta entrada en que consiste y que ventajas aporta a vuestros PCs.

Los más veteranos recordareis los años en los que procesadores eran de un solo núcleo y no podían ejecutar más de un hilo, era la época en la que la carrera era por la mayor cantidad de MHz primero GHz después, hasta que no podían subir más por limitaciones físicas y se tuvo que pasar al multi-núcleo.

Una característica que vamos a ver en las nuevas CPUs es el boost de un solo núcleo, el cual consiste en que un solo núcleo de un procesador multinúcleo alcance una mayor velocidad de reloj que la del boost para varios núcleos, todo ello gracias a poder desconectar el resto de núcleos de la CPU, bajarles la velocidad de reloj o hacer que no puedan alcanzar la velocidad de boost.

Boost de un solo núcleo, re-distribuyendo la energía de la CPU

Boost solo núcleo

La velocidad de reloj que puede alcanzar un procesador depende de la cantidad de energía que haya disponible para ello, pero las CPUs tienen trampas para poder optimizar mejor el consumo energético aunque la mayoría se basan en poder desconectar partes no utilizadas siempre del procesador para que no consuman energía mientras no hacen nada.

A nivel de núcleo, muchos diseños que pueden trabajar con varios hilos suelen ejecutar ciertas instrucciones aprovechando la duplicidad de la unidad de ciertas partes de la unidad de control para evitar contenciones y aumentar el rendimiento, pero en otros diseños no es así y hace posible el desactivar el el SMT o el Hyperthreading para poder aumentar la velocidad de reloj.

Bajo los mismos principios es posible desactivar por completo todos los núcleos menos uno e incluso quitarle a este el SMT o Hypethreading para que la velocidad de reloj de un solo núcleo sea lo más alta posible.

¿Qué aporta al rendimiento total del procesador?

CPU comunicación

Existen muchos benchmarks que miden el rendimiento de un solo núcleo de la CPU, estas pruebas de rendimiento no sirven para evaluar el rendimiento absoluto de la CPU y tampoco se basan en escenarios realistas. Simplemente nos sirven de manera comparativa para saber como ha evolucionado una arquitectura respecto a otra comparando núcleo por núcleo.

En los programas que existen en el mercado, debido a que desde hace años que los consumidores tenemos disponibles varios núcleos, la mayoría de programas están pensados para funcionar en paralelo la mayor parte del tiempo, pero hay que tener en cuenta que los programas tienen una parte que se puede paralelizar y otra que no.

Ley Amdahl

Si hacemos caso a la Ley de Amdahl, el tiempo de ejecución de cada una de las partes paralelizables del código disminuira añadiendo más núcleos, pero hay una parte del código que es serial y por tanto no se puede ejecutar en paralelo, esa parte de los programas depende de la velocidad de un solo núcleo.

Si apagamos todos los núcleos menos uno solo entonces el código que funciona en paralelo se va a ver negativamente afectada, pero si mantenemos la velocidad base en todos los núcleos y aplicamos un boost o una ligera ventaja en uno de ellos entonces la parte del código que funciona en serie dentro del programa se verá acelerada, aumentando con ello al rendimiento del sistema.

¿Es lo mismo el boost de un solo núcleo que el big.LITTLE?

big.LITTLE Diagram

Aunque pueda recordarnos al concepto big.LITTLE de ciertos núcleos de bajo consumo no es lo mismo, ya que en dicho concepto la idea es utilizar un núcleo de bajo consumo para realizar ciertas instrucciones, las cuales son los suficientemente simples como para que sea imposible optimizarla más en cuanto a consumo dentro de un núcleo, por lo que se hace recomendable el uso de un núcleo más simple para reducir el consumo energético.

En «big.LITTLE» no se aumenta o disminuye la velocidad de reloj de los núcleos sino que se cambia el núcleo que ejecuta dicho programa o parte del programa, por lo que en un procesador con ese tipo de diseño tenemos una formación heterogénea de núcleos, mientras que la subida de velocidad centrada en un solo núcleo se puede dar en conjuntos de núcleos homogéneos y heterogéneos.

No obstante, dado que la velocidad de reloj esta directamente atada al voltaje en el consumo energético, podemos concluir sin riesgo a equivocarnos que el subir la velocidad de reloj de un núcleo el contrario que el «bit.LITTLE» no es una forma de ahorro de consumo energético del procesador.