¿Las CPU multinúcleo todavía sufren rendimientos decrecientes en el mundo de hoy?

8

Se ha demostrado en otras preguntas que, debido al estado de las aplicaciones informáticas, los procesadores multinúcleo sufren rendimientos decrecientes. ¿Sigue siendo el caso en el mundo de hoy?

¿La mayoría de las aplicaciones nuevas adoptan subprocesos múltiples y, por lo tanto, se aprovechan de tener múltiples núcleos? Si no es así, ¿la nueva ayuda del sistema operativo de 64 bits aprovecha los núcleos al asignar tareas / procesos a diferentes núcleos? ¿O los procesadores multinúcleo siguen sufriendo los mismos (o similares) rendimientos decrecientes?

Haga una copia de seguridad de cualquier reclamo con referencias.

rishimaharaj
fuente
2
Estar en un sistema operativo x64 no haría ninguna diferencia cuando tienes un programa con múltiples hilos. Las diferencias de panorama del compilador entre 2008 y 2012 son enormes. Hasta que hubo una manera fácil de realizar una acción en varios subprocesos, tener una CPU con la capacidad de realizar múltiples subprocesos a la vez, no tiene sentido. Incluso hoy todavía no es lo suficientemente fácil como para hacer eso.
Ramhound

Respuestas:

7

Depende en gran medida de lo que hagas.

Para Word y Excel y Minesweeper normales y cualquier otra cosa que use tu madre, un núcleo sigue siendo suficiente y más de dos es una exageración. Este tipo de aplicaciones pasan la mayor parte del tiempo inactivas, esperando la entrada del usuario.

Para los juegos, se beneficiará de al menos dos. Después de eso depende del juego. Teóricamente, podría ejecutar a cada oponente de IA en un hilo separado, pero la lógica central del juego no se puede paralelizar fácilmente: necesita un lugar donde todos los resultados se unan para formar un estado de juego coherente. Por lo tanto, generalmente hay un hilo "principal" en el que todos esperan.

Para multimedia, procesamiento de números reales y ciencia, cada núcleo cuenta. Estas son tareas que son inherentemente multiproceso o que se pueden realizar fácilmente, y los desarrolladores tienen un fuerte incentivo para aprovechar toda la potencia de procesamiento disponible.

A los usuarios avanzados les gusta realizar múltiples tareas. Torrent, VirtualBox, captura de pantalla, video, minecraft y navegación web se ejecutan al mismo tiempo. Por lo tanto, se beneficiará de que cada aplicación que tenga mucha CPU tenga su propio núcleo. Hoy en día es popular transmitir en vivo tu juego. Así que son dos núcleos para el juego, al menos uno más para el hilo del codificador y al menos uno más para el resto del sistema. Eso es al menos 4 núcleos.

Ansis Māliņš
fuente
1
En general, un buen juego AI es mucho más difícil que conciliar múltiples acciones. Eso es solo una adición elegante. En segundo lugar, presume juegos que tienen un solo estado central de juego. Eso tampoco es necesariamente cierto. Incluso si lo hiciera, tampoco es necesariamente una barrera para enhebrar. Por ejemplo, los cálculos de física generalmente se realizan en paralelo. Y, por último, los juegos también tienen una gran parte de representación de gráficos, lo que también lleva a subprocesos.
MSalters
Dudo un solo núcleo es siempre la mejor opción (sólo hay que poner una fórmula muy lento en Excel ...) y creo que está sobre-simplificar un poco. ¿Qué pasa con, por ejemplo, la función Turbo Core (AMD) / Turbo Boost (Intel) en los procesadores más nuevos? Permite que mi AMD de núcleo hexadecimal estacione la mitad de sus núcleos y ejecute la otra mitad a una velocidad de reloj más rápida, y creo que la versión de Intel es aún más fina, para que el procesador pueda volver a optimizar sobre la marcha para el trabajo requerido de eso. ¿Eso los convierte en una mejor opción? El problema solo puede abordarse con precisión mediante mediciones y puntos de referencia del mundo real.
DMA57361
Estoy completamente de acuerdo con @ DMA57361 Hace unos años, mi tío compró varias computadoras AMD de un solo núcleo para sus hijos preadolescentes. Los procesos en segundo plano (Windows Update es el infractor más atroz) regularmente los deja prácticamente inutilizables por minutos a la vez al maximizar la CPU.
Dan Is Fiddling By Firelight
No te olvides de hyperthreading. Los procesadores Intel más avanzados pueden simular un núcleo de procesador adicional al proporcionar un conjunto adicional de registros en cada núcleo y permitir que los subprocesos utilicen diferentes partes de cada núcleo de procesador al mismo tiempo para aumentar aún más el rendimiento de la multitarea.
bwDraco
La representación 3D es otra que muestra una gran ventaja. Si eres un animador o diseñador gráfico y haces muchos renders; Todo el software de nivel profesional tiene la ventaja de aprovechar cada núcleo que su máquina tiene para ofrecer (y más en el caso de los clústeres en red). El rendimiento escalará linealmente con el número de núcleos.
Jason C
5

Me temo que la respuesta sigue siendo, como siempre ha sido, "depende de lo que estés haciendo".

Sí, hay rendimientos decrecientes al agregar más y más núcleos, y siempre los habrá si solo ejecuta una aplicación a la vez .

Incluso en una aplicación multiproceso bien hecha, muchas de las tareas que se realizan se realizan para esperar los componentes más lentos de la máquina (disco duro, conexión en red) sin afectar el rendimiento aparente para el usuario. Estos no pueden mejorarse mediante una mayor paralelización, por lo que cualquier límite de aceleración teórico es inalcanzable para fines prácticos.

Vale la pena señalar que hay pocas aplicaciones "grandes" que no son multiproceso (solo consulte el equivalente del Administrador de tareas de su sistema operativo, debería poder decirle cuántas pertenecen a cada proceso; mi Firefox está usando 31, por ejemplo). )

Por supuesto, ejecutar múltiples aplicaciones no interdependientes no está tan limitado por estos límites. A medida que agrega más núcleos, puede ejecutar más aplicaciones al mismo tiempo con una pequeña caída en el rendimiento del procesamiento (sin embargo, el rendimiento del disco duro, las redes, etc., no escala tan bien). En la práctica, incluso esto también está sujeto a rendimientos decrecientes ya que hay una sobrecarga inevitable para administrar la distribución del trabajo entre núcleos, tuberías de comunicación, etc.

Por ejemplo, esta publicación de Tom's Hardware (de 2009) intenta analizar el rendimiento de unos pocos procesadores multinúcleo en aplicaciones simultáneas, ejecutando un juego junto con un escaneo AVG (los cuales probablemente sean multiproceso). Los procesadores de cuatro, tres y dos núcleos funcionan de manera similar solo con el juego, pero agregan el escaneo AVG simultáneo y el rendimiento (medido por FPS promedio) cae en un 22%, 40% y 59% respectivamente.

Por lo tanto, si bien un núcleo cuádruple no ofreció un aumento del rendimiento sobre un núcleo doble cuando se ejecuta una aplicación intensiva, tan pronto como apareció otra tarea intensiva, terminó siendo el doble de eficaz. Desafortunadamente, no puedo encontrar mucho más que investigue qué tan bien esto escala con más núcleos y tareas más intensas.


Y luego debe tomar nota de las características modernas de los procesadores como Turbo Boost de Intel / Turbo Core de AMD. Estas características particulares permiten que un procesador de múltiples núcleos estacione los núcleos (póngalos en un modo más lento y de baja potencia) y use la energía de reserva para overclockear los núcleos que permanecen activos, lo que permite que el procesador se optimice para proporcionar tanta potencia de procesamiento como sea posible para la cantidad de tareas que se le presentan.

DMA57361
fuente
2

Para agregar combustible al fuego, leí aquí que Android en realidad se ralentiza al tener más de un núcleo:

El uso de procesadores multinúcleo en realidad puede hacer que los dispositivos Android sean más lentos, dijo Mike Bell, gerente general del grupo móvil y de comunicaciones de Intel, que culpa a la capacidad de subprocesamiento múltiple de Android, o la falta de ella, por la dificultad del sistema operativo para manejar eficazmente CPU potentes.

Cuantos más núcleos tenga un dispositivo, más energía requerirá, y, por el momento, esa cantidad de energía es simplemente demasiada para que los dispositivos Android la equilibren.

rishimaharaj
fuente
Hmm, ¿no sería mejor editar esto en tu pregunta original?
Journeyman Geek
Estoy pensando que todo este hilo se convertirá en un wiki / FAQ de la comunidad, y pensé que sería mejor dejar la pregunta como está y agregarla por separado. @ Moderadores: ¿esta respuesta se debe combinar con la pregunta o dejar como está?
rishimaharaj
0

Por supuesto, depende de lo que esté haciendo, pero sí, hay rendimientos decrecientes.

Las aplicaciones simples y cotidianas, como el procesamiento de textos o la navegación web, se benefician poco de tener más de dos núcleos de procesador. Las aplicaciones de computación científica y juegos tienden a hacer un mejor uso de cuatro (o más) núcleos y / o capacidad de hipertrontado, ya que tienden a estar diseñados para aprovechar al máximo el hardware moderno, pero el beneficio de más de cuatro núcleos es limitado.

Además, no todo está vinculado al cálculo. Agregar núcleos de procesador no ayudará si su carga de trabajo está vinculada a E / S. Si alguna vez instaló un SSD para reemplazar un disco duro mecánico, probablemente sabrá que el rendimiento informático cotidiano está limitado la mayoría de las veces por el almacenamiento de su computadora. En entornos de servidores ocupados donde se utiliza una gran cantidad de núcleos para permitir que el sistema maneje grandes cantidades de usuarios y solicitudes simultáneamente, se utilizan matrices de discos especializadas, SSD y otros sistemas de almacenamiento para garantizar el máximo rendimiento bajo carga.

bwDraco
fuente