¿Por qué no hay más núcleos en las CPU modernas? [cerrado]

0

Muchos confunden a menudo el significado de la Ley de Moore ... se refiere al número de transistores en un chip, no al rendimiento.

Hace un tiempo, se hizo evidente que las ganancias del aumento de la frecuencia de reloj en los chips no valían la pena y los fabricantes de chips comenzaron a agregar núcleos adicionales a las CPU.

Sin embargo, el aumento en el número de núcleos en los chips de los consumidores no ha coincidido con el aumento en los transistores en cada chip.

Supongo que muchos de estos transistores se han incorporado a características tales como la lógica de predicción, porque es difícil que algunas cargas de trabajo se paralicen, o muchos programadores consideran que sus programas son paralelos demasiado tiempo, o las CPU están optimizadas para los programas existentes .

Sin embargo, desde mi punto de vista, me gustaría ver que los transistores aumentan el conteo de núcleos y el caché en el chip, ya que esto beneficiaría a mis programas más que los aumentos marginales en el rendimiento de un solo hilo, dado que no tengo problemas para escribir varios subprocesos Código para la mayoría de mis objetivos particulares.

Si uso los transistores adicionales para un caché muy grande, no tendré que hacer tantos viajes a la memoria, lo que también puede ser un gran refuerzo de rendimiento.

¿Soy incorrecto en cuanto a la razón por la que los recuentos de núcleos no parecen aumentar al mismo ritmo que el número de transistores? ¿O también hay una disminución en el rendimiento al aumentar el recuento de núcleos incluso para cargas de trabajo fácilmente paralelizadas como el ancho de banda de la memoria?

¿Por qué los recuentos de núcleos no se han incrementado en ningún punto cercano a la tasa como el número de transistores en un chip?

Editar: El hecho de que una carga de trabajo se pueda ejecutar en paralelo no significa que sea una tarea apropiada para un ect de GPU que tiende a hacer muchos cálculos de punto flotante. Las CPU tienen diversas funciones de propósito general de las que carecen los chips más especializados.

Un ejemplo de esto podría ser, digamos que tengo un conjunto de 50 funciones heurísticas que necesito para ejecutar contra un gran conjunto de datos que ya están en la memoria.

Esto es fácil de subprocesos múltiples, asigna a cada función su propio subproceso, y puedes subprocesos múltiples más subgrupos de los datos para cada función (si los datos no son altamente interdependientes). Podrías satitar fácilmente todos los núcleos de un procesador Xeon de gama alta, pero no podrás hacer mucho uso de una GPU o SIMD.

O, simplemente, una aplicación web común que atiende muchas solicitudes diferentes que no necesitan ser coordinadas.

O, simplemente, varias aplicaciones diferentes que se ejecutan en el mismo servidor por razones políticas o administrativas.

    
pregunta TheCatWhisperer

3 respuestas

9

Hay una serie de razones técnicas y comerciales sin ningún orden en particular:

  1. El ancho de banda de la memoria se convierte en un problema con la escala de los núcleos. Memoria la contención puede realmente disminuir tu rendimiento.
  2. Xeon Phi es la plataforma a la que pueden ir los clientes hambrientos (y cargados de efectivo).
  3. La mayoría del software ha sido diseñado para ejecutarse bien con un solo subproceso. Esta Forma un problema de huevo y gallina. ¿Por qué intentar y vender más núcleos cuando? la mayoría de los clientes no pueden usarlos? La mayoría de los clientes no los usarán porque el hardware no está construido de forma a escala de núcleo.
  4. muchos clientes Están más interesados en el ancho de banda de IIO. En ese caso, solo necesitas Bastantes núcleos para dar servicio a IIO.
  5. Intel Xeon tiene muchos más Los núcleos también, pero pagarán un centavo por ellos en general. En En ese sentido, es simplemente oferta y demanda.
  6. Debido a que el recuento de transistores continúa aumentando (aunque tampoco es por la ley de Moore), las aplicaciones de un solo hilo aún dominan, y el poder de procesamiento del núcleo no suele ser el cuello de botella, por lo general es más eficaz utilizar esos transistores para aumentar la caché Y más eficiente. Básicamente, en lugar de paralelizar la carga de trabajo al crear más núcleos, los núcleos ahora se alimentan mejor.
  7. La falta de competencia en el segmento de cómputo altamente paralelo impide la fijación de precios a nivel del consumidor.
  8. La mayoría de los lenguajes de programación principales están mal equipados para manejar bien el código paralelo. Incluso aquellos que parecen no haber encontrado una manera de depurar fácilmente el código paralelo. Potencialmente, un nuevo paradigma de programación es necesario para superar esto.
  9. Ciertos sistemas operativos comunes pueden en realidad sufrir pérdidas de rendimiento exponenciales a medida que se hacen más bifurcaciones, incluso si tiene los núcleos, el manejo de los mismos arruina su uso. Esta es una extensión de los puntos 3 y 8.
respondido por el horta
3

Básicamente, según lo discutido: la mayoría de las personas compran procesadores compatibles con Intel para ejecutar sus programas existentes, que tienen un paralelismo mínimo o pueden depender completamente del rendimiento de un solo subproceso.

Si quieres muchos núcleos, compra una GPU. O uno de estos procesadores 1024-core. El principal factor limitante se convierte en ancho de banda de memoria .

  

dado que no tengo problemas para escribir código de subprocesos múltiples.

¿Con qué herramientas? ¿Qué tipo de algoritmos?

    
respondido por el pjc50
1

Además de lo que ya se ha dicho, también hay un costo adicional en el paralelismo. Y no estoy hablando de la ley de Amdahl. Cuantos más núcleos tenga en paralelo, más complejo se volverá el hardware que debe negociar entre los núcleos. Algunas de estas escalas con $ O (n) $ otras con $ O (n ^ 2) $. Esto impone un límite superior antes de que sea más económico insertar otra capa y usar más CPU paralelas en lugar de más núcleos.

Puede ver estas compensaciones bastante bien con Intel: hay CPU de múltiples núcleos con mayor número de núcleos, como los Xeons que llegan hasta los 28 núcleos. Pero los Xeons están limitados a una velocidad de reloj de aproximadamente 3GHz. La mayoría de ellos solo hacen alrededor de 2.5GHz. Los procesadores de consumo aumentan en velocidad de reloj, pero están limitados en el número de núcleos.

Si tiene un problema vergonzosamente paralelo, puede obtener una de las placas base de 8 zócalos y ocho de esos 28 Xeons centrales para obtener 224 núcleos en una sola computadora. En este punto, se encuentra en el territorio NUMA y su aplicación debe adaptarse a la arquitectura de la computadora que tiene para obtener el máximo rendimiento.

    
respondido por el Attila Kinali

Lea otras preguntas en las etiquetas