jueves, 16 de junio de 2011

Procesadores de múltiples núcleos, ¿realmente necesarios?

¿SON REALMENTE NECESARIOS Y APORTAN UNA MEJORA SIGNIFICATIVA LOS PROCESADORES DE MULTIPLES NUCLEOS?    

A día de hoy no quedan en el mercado más que unos pocos procesadores de un sólo núcleo (concretamente los Celeron de Intel y los Sempron de AMD), por lo que este tutorial no trata, salvo en un caso muy concreto, de si es conveniente la elección de un procesador de un solo núcleo o de un procesador de varios núcleos.

Por otra parte, todas las placas en fabricación actualmente (salvo unas contadas excepciones de placas en fabricación para procesadores antiguos, como el caso de las Asrock para procesadores Intel con socket 748 y AMD con socket A (462) o 754) soportar perfectamente ambos tipos de procesadores, aunque siempre hay que leer las características de la placa para ver los procesadores que soporta.

Trata más bien de la necesidad de este tipo de procesadores y de las ventajas que nos aportan (que son bastantes), así como del aprovechamiento de estas ventajas dependiendo de diversas circunstancias.

Pero empecemos por el principio:

Ni los procesadores de doble núcleo ni los de cuatro núcleos son nada nuevo. Hace muchísimos años que tanto AMD como Intel disponen de modelos con estas características, solo que por su precio y prestaciones en relación al software existente estaban destinados tan sólo al mercado de Servidores y Estaciones de trabajo de alto rendimiento, por lo que por parte de ambos el sacar al mercado doméstico este tipo de procesadores ha supuesto para empezar rentabilizar su fabricación, al abaratarse enormemente los costos de producción. Es cierto que estos procesadores están evolucionando enormemente en cuando a mejoras en el rendimiento y consumo, pero lo que es la tecnología en sí misma hace tiempo que está desarrollada.

Por otro lado, en procesadores de un solo núcleo se había llegado a unos límites difíciles de superar, ya que los problemas de consumo y, sobre todo, temperatura que presentaban a partir de 3GHz eran bastante grandes (baste con recordar los calentones que se marcan los P-4 con núcleo Prescott (los últimos 478 y primeros 775) a partir de 2.8GHz, que son auténticos hornos). Esto es así hasta el punto en que Intel desistió de sacar al mercado los Prescott a más de 3.4GHz que estaba desarrollando.

Esto sucede por una sencilla ley física. A mayor trabajo (poder de cálculo en este caso) mayor consumo y, a su vez, mayor disipación térmica, y este problema se agudiza conforme se vayan aumentando las prestaciones del procesador.

Pero si lo que tenemos es un procesador con dos núcleos a 3GHz, que generan 40º cada uno, el total de temperatura no son 80º, sino 40º, ya que en este caso la disipación térmica (la temperatura) de ambos núcleos no se suma. Realmente tampoco se suman las velocidades de ambos núcleos (este es un error bastante común, si tenemos un procesador de doble núcleo a 3GHz cada uno NO tenemos un procesador a 6GHz, tenemos dos a 3GHz, que aunque a algunos le pueda parecer lo mismo no lo es). Es más, la temperatura de la CPU ni tan siquiera va a ser igual a la mayor de la de sus núcleos. Si, por poner un ejemplo, tenemos una CPU con dos núcleos, uno de ellos a 35º y el otro a 50º, la temperatura de la CPU puede estar rondando los 40º (y ojo, que tampoco es que se sumen las temperaturas individuales y se dividan entre el número de núcleos). Además, al disminuir la carga de trabajo en uno de los procesadores disminuye también su nivel de disipación térmica (temperatura), y por lo tanto disminuye la temperatura del conjunto (CPU).

Ahora bien, llegados a este punto la siguiente cuestión es ¿qué ventajas nos aporta un procesador de varios núcleos?

Bueno, para empezar ya hemos visto una importante (importantísima diría yo) ventaja en cuanto a la temperatura. A esto hay que sumarle una importante reducción en el consumo. Pero vamos a ver en cuanto al rendimiento si se mantienen las ventajas.

Y aquí es donde hay que hacer bastantes matizaciones.

Como ya hemos dicho, un procesador de doble núcleo a 3GHz no es lo mismo que un procesador de un solo núcleo a 6GHz, pero en cuanto a rendimiento en conjunto es casi mejor, y esto es por varios motivos, entre ellos el que se elimina prácticamente el tiempo de espera entre cálculos (esto en programas que permitan ejecutar instrucciones en paralelo), se reduce su consumo y se baja significativamente su temperatura de trabajo.

Pero en cuanto a rendimiento neto en ejecución de programas hay que hacer una diferenciación entre programas no diseñados para ejecutar instrucciones en paralelo y programas diseñados para ejecutar instrucciones en paralelo.

Bien, en el primero de los casos, en ese programa en concreto no vamos a notar ninguna mejora, ya que todas sus instrucciones se van a ejecutar en un solo hilo, y un hilo es asignado a un núcleo. Pero esto no quiere decir que en general no vayamos a tener una mejora en el rendimiento, ya que si bien ese programa en concreto se está ejecutando en un sólo hilo y núcleo, otras instrucciones o programas se pueden estar ejecutando en otro núcleo (ya sean instrucciones del sistema operativo u otros programas si tenemos más de uno abierto).

Esto va a hacer que en cualquier caso notemos una mejora en el rendimiento general del equipo, sobre todo si trabajamos en multitarea, ya que el sistema se va a encargar de distribuir la carga entre los núcleos.

Pero en el segundo de los casos sí que vamos a notar una gran mejoría en el rendimiento, ya que al estar un programa diseñado para ejecutar instrucciones en paralelo no siguen estas un único hilo, y mientras que una instrucción se está ejecutando en un núcleo otra instrucción se está ejecutando en otro núcleo. Esto, que en programas simples y con poca carga de CPU casi que pasa desapercibido, en programas con procesos complejos y que requieran una fuerte carga de CPU, como es el caso de renderizaciones de vídeo, por ejemplo, supone un ahorro en tiempo de ejecución igual al número de núcleos implicados en ella.

En términos llanos, la diferencia en tiempo en una renderización con un programa que soporte procesos en paralelo y un procesador de doble núcleo se puede estimar en un 50%.

¿Quiere decir esto que si utilizamos un procesador de cuatro núcleos el tiempo se va a reducir al 25%? Pues sí y no. Esto va a depender directamente del programa con el que hagamos este trabajo y de en cuantos hilos sea capaz de dividir los procesos y subprocesos.

Entonces, y según lo visto ¿es siempre un procesador de varios núcleos la mejor opción y cuantos más mejor?

Pues depende. Veamos, aquí siempre tenemos que tener clara la idea del uso que se hace del ordenador. Si lo que ejecutamos son procesos sencillos y de poca carga de procesador en realidad no vamos a tener ninguna mejora significativa, ya que en ningún caso (ni aún con procesadores de un solo núcleo, como los Celeron o los Sempron) vamos a aprovechar la totalidad de la capacidad del procesador. Dicho de forma clara, en una empresa donde se utiliza el ordenador para ejecutar un programa de gestión de venta o un programa de contabilidad, con un procesador de dos núcleos lo que vamos a tener es un desperdicio de recursos (y no digamos si se trata de un Quad). Y lo mismo nos encontramos si para lo que utilizamos el ordenador es para navegar por internet, chatear y escuchar música (y conste que hay un porcentaje bastante alto de usuarios utilizan el ordenador solamente para estos cometidos), aunque estemos haciendo las tres cosas a la vez.

Pero si exceptuamos estos casos concretos, sí que vamos a tener una mejora en el rendimiento más o menos apreciable al utilizar un procesador de varios núcleos. Pero ojo, que siempre hay que tener muy presente el valor individual de cada núcleo en cuanto a frecuencia se refiere.

¿Y qué pasa con programas concretos, como es el caso de los juegos?

Pues en este caso pasa exactamente lo mismo. En juegos que no estén diseñados para trabajar con procesos en paralelo no vamos a notar absolutamente ninguna mejora. Es más, se ha dado el caso de que en procesadores de doble núcleo poco potentes andan incluso peor que en procesadores de un sólo núcleo, pero de mayor velocidad. Esto, que se daba en los primeros procesadores de doble núcleo (los Pentium D) es así porque la velocidad anunciada no correspondía a la velocidad por núcleo, sino a la velocidad de la suma de los núcleos, de forma que un Pentium D a 3GHz no tenía 2 núcleos a 3GHz (estas velocidades vendrían bastante tiempo después), sino dos núcleos a 1.5GHz. Esto hacía que un juego se ejecutase en un núcleo a 1.5GHZ, con un rendimiento inferior al que se tenía ejecutando ese mismo juego en un procesador de un sólo núcleo, pero a 2.6, 2.8 o 3GHz de velocidad.

Esto no sólo pasaba con los juegos, sino con todos los programas, lo que ocurre es que los juegos son muy exigentes en cuanto a prestaciones puras del ordenador, y este llamémosle defecto era más evidente en este tipo de programas que en otros, que requerían mucha menos carga de CPU.

En juegos que sí que estén diseñados para trabajar con procesos en paralelo sí que vamos a notar una mejora, aunque en los juegos no todo depende del procesador (es vital la calidad y velocidad de la tarjeta gráfica) y no son demasiados los que están realmente preparados para aprovechar correctamente un procesador dual, y mucho menos un Quad.

En cuanto a programas de diseño CAD/CAM, como es el caso de Autocad, Max 3D y otros) las versiones actuales están totalmente diseñadas para aprovechar al máximo toda la potencia y ventajas que nos puede ofrecer un procesador de varios núcleos, por lo que en estos casos la mejora en rendimiento del programa es bastante clara.

Hasta aquí hemos visto lo que ocurre sobre todo con procesadores de doble núcleo, pero... ¿es esto igual en los procesadores Quad?

Pues básicamente sí, sólo que en el caso de los Quad son realmente pocas las aplicaciones que sí que van a aprovechar esta tecnología al máximo (y hablo de aplicaciones a nivel usuario digamos que normal, no a nivel profesional), por lo que, al menos de momento, si la diferencia de inversión es grande puede que sea mucha mejor opción un procesador de doble núcleo, pero de mayor velocidad por núcleo, que un Quad.

Y digo de momento porque no sabemos el rumbo que va a tomar el diseño de aplicaciones, ya que parece ser que la escalada en cuanto a núcleos se refiere no ha hecho más que empezar.

Como conclusión rápida podemos decir que, llegados al nivel de prestaciones alcanzadas por los procesadores y los problemas que se planteaban con la tecnología de un sólo núcleo, sí que eran (y son) necesarios los procesadores de varios núcleos.

Otra cosa muy distinta es que para un usuario normal realmente compense actualmente comprar un procesador de cuatro núcleos, sobre todo si el precio (a igualdad de velocidad por núcleo) es significativamente superior al de un procesador de dos núcleos.
 

No hay comentarios: