2009-07-04 18 views
7

Me doy cuenta de que esto es más una cuestión de hardware, pero esto también es muy relevante para el software, especialmente cuando se programa para entornos multi-núcleo multi-núcleo/CPU.¿Qué es más eficiente? Más núcleos o más CPU

¿Qué es mejor y por qué? Ya se trate de eficiencia, velocidad, productividad, usabilidad, etc.

1.) ¿Una computadora/servidor con 4 CPU de cuatro núcleos?

o

2.) un ordenador/servidor con 16 CPU de un solo núcleo?

Supongamos que todos los demás factores (velocidad, caché, velocidades del bus, ancho de banda, etc.) son iguales.

Editar:

Estoy interesado en el aspecto de rendimiento en general. En cuanto a si es particularmente mejor en un aspecto y horrible (o no preferible) en otro, entonces me gustaría saberlo también.

Y si tuviera que elegir, estaría más interesado, que es mejor en lo que respecta a las aplicaciones de E/S y las aplicaciones de cálculo.

+1

¿Mejor para qué? Aplicaciones de E/S Aplicaciones compute-bound? ¿Servidor de base de datos? ¿Servidor web? ¿Vídeo transmitido en vivo? –

+0

Rendimiento principalmente. Pero preferiría una respuesta más completa, si es particularmente mejor en uno y horrible en otro, entonces me gustaría saberlo también. – Sev

+0

Y si tuviera que elegir, estaría más interesado, lo cual es mejor en lo que respecta a las aplicaciones de E/S y las aplicaciones de cómputo. – Sev

Respuesta

12

No es una pregunta fácil de contestar. La arquitectura de la computadora es, como era de esperar, bastante complicada. A continuación hay algunas pautas, pero incluso estas son simplificaciones. Mucho de esto se reducirá a su aplicación y en qué restricciones está trabajando (tanto empresarial como técnico).

Las CPU tienen varias (2-3 en general) levels of caching on the CPU. Algunas CPU modernas también tienen un controlador de memoria en el dado. Eso puede mejorar en gran medida la velocidad de intercambio de memoria entre núcleos. La E/S de memoria entre las CPU tendrá que ir en un bus externo, que tiende a ser más lento.

Los chips AMD/ATI usan HyperTransport, que es un protocolo punto a punto.

Para complicar todo esto, sin embargo, es la arquitectura del bus. El sistema Core 2 Duo/Quad de Intel usa un shared bus. Piense en esto como Ethernet o Internet por cable, donde solo hay mucho ancho de banda y cada nuevo participante simplemente toma otra parte del todo. Core i7 y Xeons más nuevos usan QuickPath, que es bastante similar a HyperTransport.

Más núcleos ocuparán menos espacio, usarán menos espacio y menos energía y costarán menos (a menos que use CPU de muy baja potencia) en términos por núcleo y el costo de otro hardware (por ejemplo, placas base).

En términos generales, una CPU será la más económica (tanto en términos de hardware como de software). El hardware de productos básicos se puede usar para esto. Una vez que va al segundo zócalo, tiende a tener que usar diferentes chipsets, placas base más costosas y, a menudo, RAM más cara (por ejemplo, memoria RAM ECC totalmente almacenada) para que tenga un costo enorme al pasar de una CPU a dos. Esta es una de las razones por las que muchos sitios grandes (incluidos Flickr, Google y otros) usan miles de servidores básicos (aunque los servidores de Google están algo personalizados para incluir cosas como una batería de 9V pero el principio es el mismo).

Sus ediciones en realidad no cambian mucho. "Rendimiento" es un concepto altamente subjetivo. Rendimiento en qué?Sin embargo, tenga en cuenta que si su aplicación no es lo suficientemente multiproceso (o multiproceso) para aprovechar los núcleos adicionales, entonces puede disminuir el rendimiento agregando más núcleos.

Las aplicaciones de E/S vinculadas probablemente no preferirán una sobre la otra. Después de todo, están vinculados por E/S, no por CPU.

Para aplicaciones basadas en cálculo, así que depende de la naturaleza del cálculo. Si está haciendo muchos puntos flotantes, puede beneficiarse mucho más al usar una GPU para descargar los cálculos (por ejemplo, usando Nvidia CUDA). Puede obtener un beneficio de rendimiento enorme beneficio de esto. Eche un vistazo al GPU client for [email protected] para ver un ejemplo de esto.

En resumen, su pregunta no se presta a una respuesta específica porque el tema es complicado y simplemente no hay suficiente información. La arquitectura técnica es algo que debe diseñarse para la aplicación específica.

+0

Sin considerar el costo y el espacio, ¿puede explicar qué es mejor en relación con los diferentes aspectos? Considere las ediciones en mi publicación si puede. – Sev

+1

Si tiene tareas de hambriento de ancho de banda de memoria, un sistema de múltiples sockets puede ofrecer más ancho de banda por tarea si el sistema operativo es compatible con NUMA. Sin embargo, si las tareas son pesadas en sincronización (es decir, comparten una gran cantidad de datos modificados con frecuencia), la latencia de memoria más alta de un sistema multi-socket podría dañar. – user57368

+3

Sév, creo que puede que no entienda que su respuesta simple a las preguntas es "depende", ya que hay numerosos factores a considerar y cletus hace un buen trabajo al tomar una puñalada inicial. –

3

Bueno, el punto es que el resto de los factores no pueden ser iguales.

El principal problema con multi-CPU es la latencia y el ancho de banda cuando los dos zócalos de la CPU tienen que comunicarse entre sí. Y esto tiene que suceder constantemente para asegurarse de que sus cachés locales no estén desincronizados. Esto genera latencia y, a veces, puede ser el cuello de botella de tu código. (No siempre, por supuesto.)

1

Depende de la arquitectura en cierta medida; PERO una CPU de cuatro núcleos es prácticamente la misma (o mejor) que 4 CPU separadas físicamente debido a la reducción de la comunicación (es decir, no tiene que apagarse y no viajar muy lejos, que es un factor), y los recursos compartidos.

+0

¿Entonces está diciendo que más núcleos son más seguros que más CPU de un solo núcleo? Ojalá hubiera algunos puntos de referencia disponibles para probar esto. – Sev

+0

Sin embargo, un solo procesador puede tener cachés compartidos entre algunos núcleos. Si los núcleos funcionan en una parte diferente de la memoria, el procesador pasará la mayor parte del tiempo invalidando las líneas de caché y obteniendo datos de la memoria principal a través del bus. – Ben

2

Más núcleos en menos CPU es definitivamente más rápido como escribe SPWorley. Su respuesta tiene casi tres años pero las tendencias están ahí y creo que su respuesta necesita alguna aclaración. Primero algo de historia.

A principios de los años ochenta, el 80286 se convirtió en el primer microprocesador donde la memoria virtual era factible. No es que no se haya intentado antes, pero Intel integró la administración de la memoria virtual en el chip (en matriz) en lugar de tener una solución fuera de la matriz. Esto resultó en que su solución de administración de memoria era mucho más rápida que la de sus competidores porque toda la administración de la memoria (especialmente la traducción de direcciones virtuales a físicas) se diseñó y forma parte del procesamiento genérico.

¿Recuerdas esos grandes y torpes P2 & procesadores P3 de Intel y principios del athlon & durons de AMD que estaban colocados en un costado y contenidos en un gran paquete de plástico? La razón de esto era poder encajar un chip de caché junto al chip del procesador, ya que los procesos de fabricación del momento hacían imposible colocar el caché en el propio procesador. Voilà una solución fuera del dado, en el procesador. Estos chips de caché, debido a las limitaciones de tiempo, se ejecutarían a una fracción (50% o menos) de la frecuencia de reloj de la CPU. Tan pronto como los procesos de fabricación se pusieron al día, las memorias caché se movieron a la matriz y comenzaron a funcionar a la frecuencia interna del reloj.

Hace unos años, AMD movió el controlador de memoria RAM de Northbridge (fuera de la matriz) y al procesador (en matriz). ¿Por qué? Porque hace que las operaciones de memoria sean más eficientes (más rápidas) al eliminar el cableado de direccionamiento externo a la mitad y elimina pasar por Northbridge (cableado de la CPU, cableado de Northbridge, RAM se convirtió en CPU, cableado, RAM). El cambio también permitió tener varios controladores de memoria independientes con sus propios conjuntos de RAM operando simultáneamente en el mismo dado que aumenta el ancho de banda de la memoria del procesador.

Para volver a la aclaración, vemos una tendencia a largo plazo hacia el traslado de la funcionalidad de rendimiento crítico de la placa base al troquel del procesador.Además de los mencionados, hemos visto la integración de múltiples núcleos en el mismo dado, los cachés L1 fuera de serie L2/on-die se han convertido en cachés L3 y L2 fuera de dado que ahora están en el dado L1, Cachés L2 y L3. Las memorias caché se han vuelto más y más grandes en la medida en que ocupan más espacio que los núcleos mismos.

Por lo tanto, para resumir: en cualquier momento que necesite irse, las cosas se ralentizan drásticamente. La respuesta: asegúrate de mantenerte dentro de la vida lo más posible y simplificar el diseño de todo lo que necesite desaparecer: morir.

Cuestiones relacionadas