Sí, pero, ¿Qué es un núcleo o core?



Desde el año 2001 en que IBM presentó el primer procesador multinúcleo, se empezó a utilizar con cada vez más frecuencia la palabra "núcleo" o "core" para referirse a ciertos componentes de los procesadores o CPUs. La duda es, ¿qué es exactamente un núcleo o core? ¿Cómo puede beneficiar?

Por desgracia, no existe una definición canónica de "núcleo". Wu et al (2015) establece que, si nos basamos en el diseño de la primera CPU comercial, el Intel 4004, un núcleo se definiría mediante muy fundamentales bloques o funciones como una Unidad Aritmético-Lógica (ALU, por sus siglas en inglés), el captador de instrucciones, el decodificador, los registros, un controlador de canalización de instrucciones, y una unidad controladora de E/S. Sin embargo, esa definición dista mucho de las funcionalidades actuales. El advenimiento, durante la década de los años 70, de la Integración a Gran Escala (LSI, por sus siglas en inglés), y otras bondades como el procesamiento superescalar (la capacidad de ejecutar más de una instrucción por ciclo de reloj), la adición de funcionalidades y la miniaturización han hecho que un núcleo sea algo más complejo que solo contar con una ALU.

Y es aquí, en los detalles, donde está tanto la diferencia como la problemática de definir a la palabra "núcleo". Y es que cuando se dice "procesador de x núcleos" la palabra "núcleo" se mira de bulto, y se cree que significa lo mismo para cada procesador sin importar familia, arquitectura, fabricante, marca, línea o lo que sea. Escuchar "procesador de 8 núcleos" tiende a que se piense significa lo mismo para un procesador de celular que para uno de un servidor. Lo factual es diferente: no todos los núcleos son iguales, y, por ende, la cantidad de núcleos no debe sobreentenderse como superioridad o inferioridad automáticamente.

Pongamos el siguiente ejemplo: Si yo le hablo, estimado lector, de un avión cuatrimotor y uno bimotor, ¿qué pensaría que es mejor? Quizá el cuatrimotor. Sin embargo, si le digo que el cuatrimotor son hélices y el bimotor son turbinas, sabrá que el bimotor no solo es más poderoso, sino que, también, podría tender a ir más rápido que el de hélices. ¿Cómo se aprecia la diferencia? Simple: midiendo (velocidad, alcance, altura, lo que se necesite medir). Describir, tan solo, cantidad de núcleos y ya puede traer sinsabores a la hora de utilizar algún equipo de cómputo. Es necesario medir.

Ello trae consigo la elección de alguna herramienta de medición confiable, certificada y auditada para el tipo de tareas para las que usará el equipo. Con este tipo de herramientas será más fácil determinar no solo las características técnicas, sino, también, qué capacidad de respuesta tienen ante las necesidades de cómputo que nos atañen.

Así que, para responder a la pregunta, ¿qué es un núcleo? No existe una definición canónica de ello. Sin embargo, al cotejar diversas fuentes especializadas, hay cierto común acuerdo para comprender qué es un núcleo:

  • Tiene cuatro funciones básicas: Captar, Decodificar, Ejecutar y Responder (Fetch, Decode, Execute, Writeback). Si bien, estas son las funciones básicas, la agilidad con la que cada núcleo realiza estas funciones depende significativamente de las tecnologías, aceleradores y software que se utilice.
  • Es una unidad de procesamiento autónoma: Puede, por sí misma, ejecutar instrucciones, programas, y otras acciones en una computadora.
  • Es una unidad colaborativa: Si bien puede trabajar por sí sola para ejecutar procesos aislados, también puede utilizarse para trabajar en conjunto con otros núcleos que ejecutan procesos diferentes (multiprocesamiento o multitarea), o hacer procesos en paralelo (es decir, ejecutar una sola tarea dividida en varios subprocesos que se distribuyen a otros núcleos) de manera simétrica (otros núcleos idénticos) o asimétrica (otros núcleos distintos).
  • Puede tener diversas funcionalidades integradas. Aquí es donde se centra la diferencia, pues hay diferencias entre las distintas líneas de procesadores de un fabricante para agilizar sus funciones, así como entre fabricantes. "Núcleo" nunca significará lo mismo pues cada núcleo tiene distintas prestaciones de acuerdo con su arquitectura, generación, fabricante, controladores, y compatibilidad con el software.
  • Una CPU debe tener al menos un núcleo, y puede tener tantos como se lo permita su diseño y litografía. Sin embargo, una CPU no escala de manera lineal conforme a la cantidad de núcleos que integra. No es que un procesador con dos núcleos sea el doble de rápido que uno de un núcleo. Ello dependerá de muchas circunstancias que incluyen a su esquema de diseño, su consumo de energía, su litografía, el software y otros factores.

Así, lo mejor es medir. Medir, medir, medir. Ello nos permitirá conocer qué alcances tiene una arquitectura comparada con otra, ya sea del mismo fabricante o de distintos fabricantes. No es suficiente con solo poner las descripciones técnicas, es importante medir para determinar qué tan ágil es determinada arquitectura respecto a otra, con pruebas imparciales, certificadas y auditadas que obren en beneficio de Usted, estimado lector. ¡Nos seguimos leyendo!

Referencias:

Wu, C., & Buyya, R. (2015). Cloud Infrastructure Servers. Cloud Data Centers and Cost Modeling, 371–424. doi:10.1016/b978-0-12-801413-4.00011-8


Comentarios

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)