El tema de los multinúcleos

Y como en algún momento sucedió, ahora está sucediendo con los multinúcleos. Por desgracia, el marketing se encarga de prostituir lo que es una buena idea de inicio, y se va al extremo de la expresión "más es mejor". Tal vez más sea mejor, pero no es el común denominador. Más vitaminas puede derivar en una hipervitaminosis. Más velocidad en un vehículo puede derivar en un choque mortal. Más... más... más... Tal vez sería bueno empezar a reflexionar en una frase que reza: Menos es más.

En algún momento en la tecnología de procesadores, se tomó la decisión de empezar a prostituir los hercios. ¡Claro! Como había dado tan buen resultado hablar de hercios como sinónimo de velocidad, las empresas fabricantes de procesadores se dieron a la tarea de ofrecer más hercios, aunque ello no necesariamente redundara en más rendimiento. La primera prueba de eso en la tecnología x86 la estableció Cyrix con sus procesadores 5x86, 6x86 y MII, donde con una menor frecuencia de reloj se demostraba un rendimiento impresionante (en su tiempo) que podía desbancar a un Pentium o un K5 (en su primera etapa). Ya posteriormente, AMD también se subió a ese mismo barquito y presentó la segunda etapa de procesadores K5 (y subsecuentes) que con menor cantidad de hercios hacía más que procesadores Pentium de la época (por ejemplo, un K5-PR166 tenía una frecuencia de reloj real de 116.7MHz, pero con un rendimiento equiparable a 166MHz de un Pentium). Las razones son muchas, pero para no caer en detalles, hay más que hercios en un procesador. Esto es similar a un auto: hay más que RPM del motor para alcanzar mayor velocidad.

Sin embargo, la carrera de los hercios llegó a límites absurdos hasta que el calor ya no se pudo controlar. Entonces, las empresas que llevaron al absurdo a los hercios, de repente tomaron el mismo camino que, en su momento (y varios años antes) ya habían tomado Cyrix y AMD (tristemente, Cyrix no existe más): Reducir los hercios pero ofrecer el mismo o mayor con un proceso de perfeccionamiento en el flujo de instrucciones/datos para ofrecer tecnología que reduzca el consumo de energía y la generación de calor. Y es que así es: entre más hercios, mayor consumo de energía eléctrica y, por ende, mayor generación de calor.

Después de ello, AMD creó la tecnología multinúcleo en 2005. A partir de allí, y hasta la fecha, se ha dado una carrera por aumentar núcleos (reales o virtuales, como algunos hacen) para convencer de un posible mayor rendimiento. Nada más falso. Más núcleos no necesariamente significa mayor velocidad. Y es que todo depende de qué use y cómo lo use.

Para darnos una idea de lo anterior, imagínese en el supermercado: ha terminado de hacer sus compras, y se dirige a la caja a pagar... La caja tiene una fila enorme, y avanzará al mismo ritmo que la cajera o cajero (así como la cantidad de productos adquiridos por los clientes enfrente de Usted) tenga. Así, podría usted estar formado por un largo rato (cuanto y más si hay algún producto que no tiene precio, y hay que buscar el precio, o hay alguna cancelación, o hay algo que entorpezca aun más el flujo de la fila). Definitivamente, no es una experiencia muy buena. Bueno, pues ése es precisamente el funcionamiento de un procesador (CPU) x86: No hay por dónde más pasar, sino por la única fila que hay, y esperar que la persona de la caja sea lo suficientemente eficiente para realizar los cobros con celeridad.

¿Cómo podría acelerarse ello? Podríamos intentar poner a dos personas en la caja para ver si podemos atender a dos clientes al mismo tiempo. ¿Tiene sentido? Yo no lo creo. Sigue siendo una sola fila con una sola caja. No es posible agilizar la atención a los clientes. Aun cuando se intentaran poner dos filas para llegar a la sola caja, sigue siendo una sola caja. Y si intentáramos poner un modo de pausa en la caja para cobrar una parte de productos a un cliente, y otra parte a otro cliente, de todas formas no se agilizaría porque sigue siendo una sola caja. Esto es lo que se propone cuando se habla de núcleos virtuales: una sola caja, con capacidad de atender una sola cosa a la vez, pero que se hace creer que tiene la oportunidad de atender a dos clientes. Como se puede apreciar, esto no es, precisamente lo que nosotros desearíamos.

La solución REAL sería poner otra caja completa, con su propia fila de clientes, su propio cajero, su mesa y su máquina registradora. Entonces sí, se puede atender al doble de clientes y la EFICIENCIA se duplica (ojo, no se duplica la velocidad, se duplica la eficiencia). ¿A qué me refiero con que se duplique la eficiencia? a que cada cada cajero tendrá su propia efiiencia para atender a cada cliente (no ha aumentado su velocidad de atención), solo que ahora se atiende al doble de clientes por ser dos cajas. Esto funciona bien cuando hay más de un cliente que quiere ser atendido, pero, ¿qué pasa cuando sólo hay un cliente? ¿tener dos cajas hará que la atención a ese cliente sea más rápida? La verdad es que no, dado que el cliente usará solo una caja (a menos que ese cliente tenga dos carritos llenos y, por celeridad, pase un carrito por una caja, y otro carrito por otra caja con ayuda de alguien).

En la inmensa mayoría de los casos, los clientes solo tienen un carrito, y solo usan una caja, y eso es lo mismo que pasa con los programas en una computadora personal: solo ocupan un núcleo. Si se usa solo un programa, es prácticamente lo mismo hacerlo en una máquina con un procesador de un núcleo, que en uno de dos o más núcleos (REALES, no virtuales). En realidad, los núcleos se aprovecharán cuanto más aplicaciones haya en ejecución en una computadora personal. En un gran número de casos, dos núcleos harán un muy buen trabajo para atender las necesidades del usuario promedio. Tres núcleos podrán atender necesidades de multitarea muy exigentes (por encima del promedio) y cuatro núcleos estarían orientados a usuarios extremadamente exigentes con un grado enorme de requerimientos (como diversas máquinas virtuales ejecutándose al mismo tiempo). Seis núcleos estarían orientados a requerimientos extremos de cómputo, con aplicaciones exigentes de múltiples subprocesos (clientes con más de un carrito de enseres) donde la eficiencia en la respuesta es vital, y, finalmente, ocho núcleos sería para altísimos requerimientos de subprocesos donde la respuesta ante varias aplicaciones debe ser lo más ágil posible y con la menor posibilidad de atascamientos por "clientes" que entorpezcan el avance de la fila. En realidad, los usuarios para estos dos últimos casos no son comunes.

Cabe hacer notar que no solo hace falta tener cajas para poder agilizar el paso de los programas (o clientes en un supermercado). Volvamos al supermercado: imagínese que el supermercado tenga muchas cajas, pero carezca de estacionamiento. Si nos fijamos en los supermercados, es imperativo que tengan un estacionamiento para que las personas que llevan su auto (un gran número) puedan fácilmente cargar su auto con los enseres adquiridos. Ahora, si no tiene auto, imagínese que el supermercado está en un lugar de difícil acceso. Difícilmente puede pensarse que ese supermercado llegase a ser exitoso (sin estacionamiento, y además en un lugar de difícil acceso). Si no hay una forma de que el supermercado tenga un fácil acceso, difícilmente puedo pensar que el supermercado (por muy equipado que esté) tenga alguna posibilidad de éxito.

El estacionamiento sería equivalente a la memoria RAM, y el fácil acceso sería equivalente a lo que conocemos como Bus en la computadora. Lo mismo pasa con un procesador serial (CPU x86): Un procesador multinúcleo no podrá funcionar eficientemente si no tiene un buen espacio de estacionamiento (RAM) y un buen bus (fácil acceso). Un moderno procesador x86-64 con un sistema operativo de 64 bits (como los que ahora se están proveyendo) requiere de 4GB de RAM (la regla de oro son 2GB por cada núcleo en 64 bits). Así, en una computadora con 1 núcleo, lo ideal son 2GB, 2 núcleos, 4GB, 3 núcleos, 6GB, 4 núcleos, 8GB, 6 núcleos, 12GB y 8 núcleos, 16GB.

En cuanto a los buses, cuanto más amplios para acceder a la CPU, mejor. Son mejores los buses de 3GT/s en adelante. Ello permitirá que la CPU reciba y envíe datos o códigos lo antes posible, y permita un adecuado flujo (lo mejor posible).

Así, el asunto de los multinúcleos va mucho más allá de simplemente tener más y ya... Si alguien le ha dicho que sólo con tener más núcleos la máquina será mejor, sin observar que el resto de las características esté adecuadamente configurado, su experiencia podría no mejorar, sino, al contrario, empeorar por no tener un equipo adecuadamente equilibrado. Quiero resaltar que el procesador o CPU NO ES lo más importante de la computadora, sino un componente para poder tener un equipo eficiente. El rendimiento de la CPU por sí solo no es suficiente para una moderna computadora, por muchos núcleos que tenga. Su gran problema es su esquema de procesamiento serial (las filas en las cajas) que le caracterizan. Ya hablaremos de los procesadores en paralelo y su gran importancia en los modernos equipos de cómputo. ¡Nos seguimos leyendo!

Comentarios

Lurkan dijo…
Muy ilustrativa la explicación, tenemos la obligación de crear cultura de computo en medida de nuestras posibilidades y esta es una forma muy amena de hacerlo.

Que se entienda que la computadora es una suma de partes, no una sola caja con cosas mágicas adentro.

Muy buen artículo David
Muchas gracias, don Alex, por tus comentarios. Así seguiremos, facilitando la tecnología en lo que se pueda.
Frankysco dijo…
Buena redacción interesante. La publicidad engañosa como nos hace creer que entre mas núcleos ¿mas rápido?, no lo es así. Felicidades Saludos! Suerte!
Anónimo dijo…
Hey! muy explicativo y ameno! Estaba haciendo un proyecto de informática, me pedian una especie de opinion acerca de los procesadores multinucleo, realmente tu explicaicon me ha facilitado la tarea, y me ha enseñado ciertos puntos que no entendia c:
Qué bueno que te fueron útiles mis comentarios. Ojalá que en tu tarea hayas obtenido una buena nota. :)
Julian dijo…
Encontrar un sitio como este, donde se le da al idioma un trato tan cuidadoso, además de tratar temas de tan alta complejidad en una forma tan absurdamente didáctica, es muy... ¿agradable?
Mi respeto y admiración para Usted. Le aseguro que su explicación sobre el asunto de los multinúcleos, cosa que no entendía muy bien, es muy elegante y estética.
Muchísimas gracias, Julián, por tus comentarios. Son muy halagadores, aunque no los merezca. Recibe mis mejores saludos.

Entradas más populares de este blog

Toshiba Satellite T215-SP1004M

Consecuencias de la falta de mantenimiento en el equipo de cómputo

Normalización de bases de datos (Parte 6 y última): Quinta y sexta formas de normalización (5NF) (6NF)