Arquitectura de la computadora: ¿Cómo cambiará el chip coprocesador de 50 núcleos de Intel recientemente anunciado al mercado de servidores y HPC?

La respuesta es, depende.

La arquitectura de muchos núcleos de Intel (compañía) es realmente una consecuencia del fallido e infame proyecto Larrabee. Larrabee fue originalmente iniciado por Intel como respuesta a la GPU de propósito general de NVIDIA. Entonces, la inspiración es la misma.

La ventaja que podría tener Intel es que si pudieran abstraer con éxito los detalles de la programación paralela en el compilador, quitan la responsabilidad del programador. Sin embargo, es poco probable que esto suceda pronto.

En algún nivel, Nvidia ya ha tenido éxito en este esfuerzo al abstraer el número físico de núcleos e hilos en la GPU en el modelo de programación Computar Unified Device Architecture (CUDA) (CUDA) que es bastante similar a C / C ++ con algunos API especiales. El programador puede suponer que hay un número infinito de núcleos / subprocesos en el hardware mientras escribe el programa y el controlador y el planificador de hardware en tiempo de ejecución harán la asignación automáticamente. La programación en CUDA no es más fácil o difícil que la codificación en C / C ++. Sin embargo, esto todavía no quita el hecho de que el programa que está escrito debe ser inherentemente paralelo para utilizar todos los hilos de hardware que están disponibles en una GPU Nvidia. Entonces, en el sentido, se reduce al problema de programación paralela y al hecho de que es mucho trabajo duro escribir programas paralelos realmente buenos que se escalen a miles de núcleos / hilos. Intel probablemente no resolverá ese problema pronto.

Cuando se trata de arquitectura informática, la idea de “núcleos” es un concepto muy confuso y sobrecargado, utilizado principalmente por los equipos de marketing para confundir a los legos. Un núcleo físico es realmente una tubería de hardware con recursos de ejecución. Por lo tanto, tendría instrucciones para buscar, decodificar, ejecutar y volver a escribir junto con los archivos de registro y ALU asociados. El número de etapas de canalización, registros por canalización, unidades de ejecución y tamaños de caché pueden diferir enormemente, lo que significa que un núcleo de la GPU de Nvidia y el núcleo de Intel no es una comparación de manzanas con manzanas.

Además, para hacer que su mente se aturda aún más, cada multiprocesador en la GPU Nvidia es realmente solo una tubería con 8 o 16 hilos de hardware que pueden ejecutarse en paralelo. Entonces, lo que llaman 16 núcleos es realmente solo un núcleo físico, pero cada hilo de hardware tiene registros dedicados y ALU. Todas las otras partes de la tubería de hardware son compartidas. En la mayoría de los casos, es similar a las instrucciones SIMD / SSE de Intel.

Además de eso, una GPU Nvidia puede asignar cientos de subprocesos en el mismo subproceso de hardware y hacer un cambio de contexto realmente rápido entre los diferentes subprocesos. Entonces, en cualquier momento, puede haber miles (es cierto, miles) de subprocesos de software en vuelo en una sola GPU. El enfoque de Intel hyperthreading es un concepto algo similar, donde cada tubería de hardware es compartida por 2 o 4 hilos.

Siguiendo la explicación anterior, pensaría que el procesador con el mayor número de subprocesos de hardware gana otras cosas como la frecuencia de reloj que es igual.
Estarías equivocado Piense en la cantidad de ancho de banda de memoria que el procesador necesitaría para soportar todas las cargas y almacenes de cada subproceso; es un requisito enorme. Las memorias caché grandes pueden reducir el ancho de banda de la memoria hasta cierto punto. Un gran desafío en un procesador de muchos núcleos es realmente mantener los núcleos alimentados con suficientes datos para mantenerlos ocupados, de lo contrario, la mayoría de los núcleos están inactivos esperando que la memoria le brinde los datos que necesita.

Otro requisito complejo es la consistencia de la memoria. Cuando cientos de núcleos / hilos comparten datos, ¿cómo se asegura de que todos los hilos vean una vista coherente de los datos en la memoria? Las GPU Nvidia eliminan la necesidad de lidiar con este problema al implementar una consistencia de memoria muy floja, lo que significa que el programador tiene la responsabilidad de escribir los programas correctamente.

Los procesadores SPARC de la serie T / M de Sun Microsystems / Oracle son, de hecho, muy similares a la arquitectura de GPU de Nvidia. Cada canal central puede manejar 8 hilos de software y cada hilo tiene un archivo de registro dedicado para un cambio rápido de contexto. En este sentido, Intel es realmente el último participante en este dominio de muchas computadoras centrales. Por cierto, los procesadores SPARC implementan un modelo de consistencia de memoria más fuerte como probablemente también lo hace Intel.

El objetivo de esta respuesta es señalar que el número de núcleos y / o la frecuencia del reloj no es igual al rendimiento más alto. Muchas más cosas que los puntos que mencioné anteriormente se refieren al diseño de un procesador y un sistema que puede escalar el rendimiento a cientos y miles o núcleos / hilos.

A corto plazo, no mucho … En el corto plazo, nadie lo sabe.

¿Recuerdas el teorema de No Free Lunch?

La gente ha creado / esperado una versión de computación paralela de la ley de Moore para multiprocesadores contemporáneos (procesadores de múltiples y muchos núcleos), como en cómo la cantidad de núcleos de procesador en un procesador variará con el tiempo (por ejemplo, lineal o exponencialmente). Además, a mediados de la década de 2000, el Prof. Radu Marculescu (ex alumno de la USC @ Carnegie Mellon) y su entonces Ph.D. Los estudiantes (Dr. Umit Ogras, ahora en Intel Labs) estaban trabajando en red en chips (o redes de comunicación en chip) para procesadores de mil núcleos.

Dado que la investigación transformadora tiende a tomar de 5 a 10 años (u 8-15 años para una investigación realmente radical) para comercializarse, uno esperaría que la investigación sobre multiprocesadores a mediados de la década de 2000 se realice como productos comerciales que las organizaciones y las personas pueden comprar directamente ahora … Recordemos que las personas habían comenzado a moverse (o consideraron moverse) hacia la plataforma de procesador de muchos núcleos a fines de la década de 1990 o principios de la década de 2000. El Dr. Robert P. Colwell (DARPA, anteriormente de Intel) recuerda un debate sobre la promoción de procesadores de un solo núcleo más rápidos (el Pentium V de 3 GHz) frente a los procesadores multinúcleo (que él apoyó) en su libro ” Las Crónicas Pentium “. Por lo tanto, la gente sí reconoció el “muro de poder” en la década de 1990. Por ejemplo, el Prof. Jan Rabaey (UC Berkeley) y el Prof. Massoud Pedram (USC) coeditaron libros sobre administración / optimización de energía (desde el diseño VLSI y las perspectivas EDA) a partir de la década de 1990 para abordar el “muro de energía”.

Sun Microsystems ha estado diseñando procesadores de muchos núcleos (hasta 32, desde la memoria), pero sus procesadores nunca despegaron por múltiples razones. En el espacio del servidor y el mercado de HPC, la gente ha comenzado a usar Linux (para evitar el uso de los costosos sistemas operativos Sun Solaris y las máquinas Sun). Sun Microsystems no tiene productos destinados específicamente al espacio del servidor y al mercado de HPC que pueden ayudar a los desarrolladores de software para estos segmentos de mercado a mejorar su productividad, lidiar con problemas de computación paralela en una plataforma de procesador de muchos núcleos, ni presionar por metodologías de desarrollo de software o técnicas de programación para programación paralela (p. ej., patrones de diseño para software paralelo / concurrente). Si bien influyeron en la investigación en CS teórica con Java, no tuvieron la misma influencia en el mundo de la computación paralela. También hay otras razones; Estoy divagando.

Intel ideó un procesador de 80 núcleos en 2007, y más recientemente ofreció una plataforma de procesador de 40 núcleos para ayudar a los investigadores (especialmente aquellos en la academia) a investigar en computación paralela (utilizando procesadores de muchos núcleos como plataforma) y sus aplicaciones. . Al otorgar subvenciones a investigadores académicos, también estaba tratando de promocionar sus productos de software y sus bibliotecas / aplicaciones de software gratuitas (desde Intel Thread Building Blocks hasta sus compiladores). Esta iniciativa va bien.

También hay startups (por ejemplo, Tilera, Picochip y Ambric) que han estado ofreciendo procesadores de muchos núcleos durante al menos 5 años. Las nuevas empresas en este espacio de procesador de muchos núcleos también incluyen Adapteva y ClearSpeed.

De las respuestas anteriores a las preguntas sobre arquitectura de computadoras y temas relacionados, consulte Ingeniería eléctrica + Ciencias de la computación (EECS), hay varias líneas de argumentos o preguntas en las que se centran los debates candentes. Existe el clásico RISC versus CISC, y procesadores asíncronos versus síncronos. Más recientemente, tenemos: implementaciones VLSI versus implementaciones de software versus implementaciones ASIP (procesadores de conjuntos de instrucciones específicos de la aplicación) (más recientemente); y núcleos de procesadores heterogéneos versus núcleos de procesadores homogéneos (puede incluir procesadores vectoriales, procesadores VLIW, procesadores de red y lo que no está aquí). Además, hemos extendido el debate síncrono versus asíncrono para incluir implementaciones clásicas de VLSI síncrono versus diseño de VLSI asíncrono versus sistemas elásticos sincrónicos; aquí, los sistemas elásticos síncronos están diseñados para abordar períodos de reloj variables, ya que el sesgo del reloj es alto para las interconexiones globales y porque la variabilidad del proceso de fabricación de semiconductores afecta los parámetros del circuito. También hay debates centrados en modelos de cómputo y paradigmas de programación conscientes de la arquitectura (compárelo con el diseño del compilador consciente de la arquitectura). ¿Arquitectura post-von Neumann? ¿Arquitectura de chip de espacio-tiempo de Tabula? ¿Qué tan radical quieres ser?

Aquí, he ignorado los debates sobre el tipo de familias lógicas para implementar las arquitecturas de procesador. Mucha gente fue entrenada para usar CMOS estáticos. Algunos prefieren la lógica dinámica, incluida la lógica de dominó tolerante a la asimetría para manejar la distorsión de la señal y el reloj. Ahora, esto puede parecer poco importante para muchos lectores de esta respuesta, especialmente si carecen de una formación adecuada en ingeniería eléctrica e informática. Sin embargo, esto afecta el resultado final con respecto a la capacidad del procesador implementado para cumplir sus objetivos y limitaciones de diseño. Y, luego, hay debates sobre cómo optimizar el flujo de diseño VLSI para obtener mejores diseños físicos de un procesador dado el mismo diseño RTL. Nos vamos a desviar …

Ahora, el diseño del chip y la arquitectura de la computadora siempre se han centrado en una serie de objetivos / métricas de diseño, desde el rendimiento (basado en el rendimiento y el retraso) y el área de troquel (o costo) hasta el consumo de energía (y la eficiencia energética). Los desafíos siguen siendo los mismos: encontrar una compensación óptima de Pareto entre los objetivos de diseño que satisfaga las restricciones de diseño. ¿Cómo se hace sin una considerable exploración espacial de diseño? No lo sé y nadie tampoco.

Recuerde el teorema de No Free Lunch. Y recuerda la ley de Gustafson.

No mucho; El problema sigue siendo la programación paralela (software) y la Ley de Amdahl. Hubo alguna sugerencia en el artículo que leí sobre eso el otro día que hará que algunos sistemas de computación paralelos sean más baratos, pero eso tampoco es nuevo ni cualitativamente diferente.

¿Has oído hablar de la máquina de conexión? ¿O la computadora? ¿O quizás el Sun Microsystems SPARC T3?

He discutido esto con cierta profundidad en mi blog. Ver Los peligros de la paralela: MIC y los caballeros. (MIC, Many Integrated Cores, es el nombre de Intel (empresa) para la arquitectura, en oposición a esta encarnación particular de la arquitectura en el producto Intel Xeon Phi.) Más recientemente, también está mi publicación en el blog Anuncio de Intel Xeon Phi (& yo).

Aquí hay un cambio de juego potencial, y no tiene nada que ver con la frecuencia, el número de procesadores, etc., aunque deben ser adecuados para producir un rendimiento en el mismo rango general que las GPU NVIDIA de uso general.

El cambio de juego, enfatizado en la publicación MIC y Knights, es que no tienes que volver a imaginar y reescribir completamente tu código, que es lo que generalmente es necesario en las GPGPU. Phi consta de muchos núcleos X86 antiguos regulares, en un multiprocesador coherente con caché. El mismo FORTRAN viejo y sucio que has estado ejecutando desde siempre se ejecutará en él: solo debes volver a compilar con un indicador que indica MIC, para que se usen las nuevas instrucciones (por ejemplo, instrucciones de vector / SIMD más amplias).

Eso no significa que tu viejo y sucio FORTRAN funcionará bien. Tendrá que paralelizar y (o) vectorizarlo. Pero al menos comienzas con un código que sabes que funciona. Y un conjunto de herramientas con el que está familiarizado: depuradores, perfiladores, etc., todos han sido portados, y debajo está Linux, que se ejecuta en la Phi. Todas las cosas viejas habituales, ninguna de las cuales está disponible para Nvidia y sus amigos. (Tienen (algunas de) sus propias versiones, pero son diferentes y, por ejemplo, no puedes ejecutar Linux en una tarjeta Kepler).

Esto implica para mí que Phi abre un nuevo segmento de mercado de computación de alto rendimiento (HPC) a los aceleradores: la colección de personas que simplemente no pudieron o no hicieron la reescritura necesaria para usar GPGPU. Ese es el cambio de juego potencial que veo, ya que potencialmente abre un gran mercado nuevo para el que Nvidia y ATI / AMD tendrían dificultades para avanzar.

Sin embargo, la razón de mi uso excesivo de la palabra “potencial” es que no creo que nadie sepa realmente cuán grande es ese nuevo segmento de mercado. Sospecho, sin embargo, que es mucho más grande que el mercado que las GPGPU pueden penetrar.

Mi propio reino es aplicaciones web / móviles de ultra alta escala. En ese ámbito, creo que esto y los desarrollos relacionados tienen el potencial de cambiar toda la doctrina a gran escala del enfoque actual de “cuadrícula” a escala (escala horizontal y / o vertical) a un enfoque de escala dentro de la caja.

Hay tres controladores clave.

Primero, gracias al tema de este artículo, las cajas individuales se están volviendo muy, muy, muy grandes (puede comprar un servidor Oracle con la capacidad de todo el backend de búsqueda de eBay de 4000 servidores blade circa 2008). Piense: varios miles de hilos conectados directamente a 32 TB de RAM en una sola caja. La granja de cuchillas de ayer es la única caja de hoy.

En segundo lugar, parece que los proveedores de hardware se están sumando a la “consolidación”. En otras palabras, parecen estar tratando de poner precio a sus cajas grandes en línea con cuchillas baratas desde una perspectiva de precio / rendimiento. La idea parece ser que, si quieres tener una nube, puedes comprar una cantidad menor de cajas grandes y grandes que miles de cajas pequeñas y será mucho más barato.

Tercero, la nube. Lo que eso significa para usted es que alguien más ya tiene las economías de escala necesarias para trabajar en unidades de inversión muy grandes para que no tenga que hacerlo.

Combine estos fenómenos y puede defender una arquitectura que no sea de red: escriba su aplicación para un solo sistema, o tal vez solo algunos para redundancia. Como necesita más capacidad, solicita que la nube le proporcione un servidor cada vez más grande (y sí, x3 para redundancia, pero no necesita 1000 cajas separadas para redundancia cuando 3 está bien).

Hay una tonelada de gastos generales en la gestión de una cuadrícula (y sé que he trabajado con ellos / los construí). Las cuadrículas hacen que todo sea más difícil de programar y, en última instancia, limitan lo que su aplicación puede hacer. Además, son increíblemente ineficientes ya que está moviendo sus datos por todo el lugar a través de una red relativamente lenta en lugar de solo ram a ram.

La conclusión es esta: en el futuro, puede diseñar su aplicación para que se ejecute en “1000 servidores blade” solo para descubrir que la nube realmente le ha dado 1000 rebanadas de una sola caja grande detrás de escena. Si ese es el caso, acaba de perder una gran cantidad de tiempo (tanto CPU como humano) dividiendo su aplicación en pequeños pedazos y volviendo a armarla.