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.
- ¿Cómo es trabajar en un laboratorio de investigación de primer nivel?
- ¿Puedo tomarme un mes para escribir una encuesta de investigación en ciencias de la computación?
- ¿Qué tipo de técnicas de visión por computadora que aún no se exploran para la conducción autónoma?
- ¿Qué tipo de investigación en informática se realiza para abordar problemas de la vida real?
- Concurrencia (informática): ¿Cuáles son algunas desventajas de usar CAS (Comparar e intercambiar)?
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.