Cómo se utilizan los núcleos de un procesador multinúcleo
Últimamente, parece que tanto Intel como AMD están enfrascados en una carrera por ver quién es capaz de incluir más núcleos dentro de sus procesadores. Pero, la realidad es que, para que un procesador multinúcleo genere un aumento de rendimiento, lo primero es que el programa que vayamos a emplear sea capaz de dividir su carga de trabajo.
El primer procesador con dos núcleos, para los usuarios, fue el infame Intel Pentium D, con el nombre interno de Smithfield y Presler. Estos dos núcleos, aparte de calentarse como si no hubiera un mañana, no eran más que dos procesadores Intel Pentium IV Prescot «atornillados» debajo de un mismo IHS. El hecho es que se comunicaban entre sí empleando el North Bridge de la placa base. Por tanto, el primer auténtico procesador de dos núcleos fue el AMD Athlon 64 X2, donde ambos núcleos sí eran capaces de comunicarse entre ellos sin necesidad de chips intermedios.
El tema es que, desde que salieron al mercado los procesadores de cuatro núcleos de la serie Q de Intel o los Phenom II X4, parecíamos condenados a seguir empleando tan solo cuatro núcleos en nuestros procesadores. Y nos es que nos fuera mal con ello, pero también es verdad que la innovación se había detenido. Sí, es verdad que las series HEDT de Intel seguían creando procesadores de más núcleos (a unos precios difícilmente justificables para el mercado de escritorio), y también es verdad que los procesadores AMD de núcleo Bulldozer demostraron que tener más núcleos bajo el IHS no era la clave para tener el procesador más potente.
Sin embargo, fue lanzar AMD su línea de procesadores Ryzen y, de repente, a Intel le entraron unas prisas enormes por sacar procesadores que tuvieran un mayor número de núcleos disponibles. Y en esas estamos todavía.
¿Qué necesita un procesador multinúcleo para dar todo lo que puede?
En realidad, la clave del éxito de un procesador multinúcleo lo vamos a encontrar en un concepto, que es en el que se basa toda su filosofía: la paralelización de comandos. Y nos explicamos: El núcleo de un procesador está diseñado para que ejecute las instrucciones que se le manden en serie, es decir, una detrás de otra. Por supuesto, todo sería más sencillo si, mientras el núcleo del procesador está realizando una operación, otro núcleo estuviera realizando otra, completamente diferente. Este es el concepto con el que se diseñaron las primeras placas base multi socket: montar varios procesadores de un solo núcleo en una placa base, para que cada uno de ellos pudiera realizar diferentes operaciones, incrementando de esta manera la capacidad de proceso del sistema. Este es el concepto de paralelización que se emplea a la hora de diseñar un procesador multinúcleo.
Por tanto, para que un procesador multinúcleo sea capaz de rendir todo lo que puede, lo primero que ha de suceder es que el programa o las instrucciones que se quieren procesar, permitan la división de ellas entre varios hilos de trabajo. Podéis ver esto de manera muy clara si ejecutáis el programa Prime95. Al iniciarse el cálculo, cada uno de los hilos del procesador coge uno de los múltiples cálculos que se puede hacer, y cada uno de ellos procesa el suyo a la vez que el resto de hilos. Ejemplos de programas que soportan muy bien las cargas paralelizables son la gran mayoría de programas de diseño gráfico, como el Photoshop, el Premiere, el 3D Studio Max, etc. Y un ejemplo de programas donde a la paralelización todavía le queda camino por recorrer, son los juegos de ordenador, que (aunque cada vez menos) todavía tienen un nivel de esta muy básico.
Otro aspecto a tener en cuenta es que, el primero que ha de soportar la paralelización de las instrucciones es el Sistema Operativo que se ejecute en nuestro ordenador. Por suerte, tanto Linux, como Windows, como MacOS soportan la paralelización desde hace muchos años. En el caso de Windows, desde los tiempos de Windows XP, que en uno de sus múltiples Service Packs, añadió este concepto a su sistema operativo.