¿Tener 2 CPU hace que su sistema funcione 2 veces más rápido?

Para algunas tareas lo hace, para otras no.

En mi último trabajo utilizamos un servidor SPARC con 12 núcleos, cada uno disfrazado de 8 núcleos, por lo que se presentó al sistema operativo como un sistema de 96 núcleos.

Si ejecutamos en un núcleo obtuvimos un cierto nivel de rendimiento, si ejecutamos en dos núcleos, duplicamos ese rendimiento. Eso fue cierto hasta 12 núcleos, y después de eso, aún fue más rápido, pero no tanto.

Sin embargo, una parte del sistema (que no escribimos) era de un solo subproceso, y tener más de 1 núcleo simplemente no hacía ninguna diferencia. Podríamos ejecutar varias instancias a la vez, lo cual fue bueno, pero si estaba procesando un archivo grande, era lento, y ningún número de núcleos lo solucionaría.

Realmente depende de lo que esté haciendo, si simplemente está ejecutando Microsoft Word, el segundo procesador aliviará parte de la carga del primer procesador, pero Word en sí mismo probablemente no irá mucho más rápido.

Sin embargo, si escribe programas con múltiples procesadores en mente, ciertamente puede tener un sistema que va dos veces más rápido.

No.

Dos CPU pueden hacer que su sistema funcione dos veces más rápido SI las CPU no comparten recursos y el trabajo se divide de manera absolutamente equitativa.

Si el sistema operativo está muy bien escrito, la división estará cerca. La mayoría de los sistemas operativos no están bien escritos y distribuyen mal la carga. Algunos ignoran el segundo procesador por completo.

Este gráfico muestra lo que puede esperar para diferentes tipos de carga de trabajo. Microsoft Word prácticamente no tiene una porción paralela, por lo que no vería ninguna mejora. Compilar dos archivos simultáneamente (útil para escribir grandes programas) es casi perfectamente paralelo, por lo que ve un gran beneficio.

Parte del problema es lo que puede dividir, otra parte es comunicarse con otros procesos.

Entonces, si le toma a un hombre un minuto cavar un hoyo de poste, ¿cuánto tiempo le toma a sesenta hombres cavar un hoyo de poste? (Toma un minuto) Ok, ¿cuánto tiempo lleva sesenta hombres cavar sesenta hoyos en línea recta? (Se necesita un minuto más unos segundos para definir la línea. Esa es su comunicación).

Ahora, nos encontramos con un problema. Los sistemas SMP más antiguos compartían el bus y la memoria, nada más. Los recursos compartidos no se pueden usar en paralelo, solo a su vez.

Con las CPU modernas de varios núcleos, comparten la caché L2 y posiblemente la caché L3, así como el bus y la memoria. Ese caché es donde se almacena el bit del programa que se está ejecutando y los datos. Entonces, una CPU de dos núcleos le da a cada núcleo, en promedio, la mitad del espacio de trabajo, cada uno codeándose con el otro para obtener más espacio.

Se usa porque es más pequeño, es un poco más barato y debe tener las palabras “no se asuste” inscritas en letras grandes y amigables en la carcasa.

No, porque las tareas que ejecuta un sistema pueden tener dependencias entre ellas. Por ejemplo, considere una tarea B que depende de la finalización de otra tarea A. En este caso, tener 2 CPU no permitirá finalizar las tareas A y B más rápido porque el cálculo de B puede comenzar solo cuando A se realiza. Tener N CPU te dará un factor de aceleración de N solo si las tareas se distribuyen uniformemente entre las N CPU y si alguna tarea asignada a una CPU no tiene ninguna dependencia de una tarea asignada a otra CPU (es decir, si todas las CPU nunca han tenido esperar). En el caso general, para N CPUs, el factor de aceleración está comprendido entre 1 y N, dependiendo de las tareas a ejecutar.

Hola. Suponiendo que ambas CPU están instaladas en el mismo sistema, no. La razón es simple, ambas CPU comparten el mismo hardware.

La memoria, por ejemplo, tiene una tasa de acceso limitada. Es más lento de lo que la CPU puede acceder. Es un cuello de botella. Entonces, dos CPU, que ejecutan un código pesado de acceso a la memoria, lucharían entre sí para acceder a la memoria. Lo mismo se aplica a la E / S del disco.

Sin embargo, las CPU modernas cuentan con grandes memorias caché. Esto significa que el código que ejecutan y los datos que usan pueden mantenerse locales para cada CPU. Además de eso, las operaciones de escritura pueden ponerse en cola y escribirse en la memoria cuando el bus de datos está libre. En estos casos, a veces se puede lograr ‘2 veces más rápido’. Pero tenga en cuenta que esto se aplica al software pesado de cálculo específico que funciona en rangos discretos de datos.

Renuncia:

Ya no estoy tanto en tecnología de CPU, por lo que tal vez las apuestas han cambiado. Podría estar completamente equivocado. De todos modos, mi respuesta se basa en mi conocimiento básico que tengo, como se recopiló desde los años 90 hasta hoy

No, porque la sobrecarga de administrar más procesadores, como la contención de memoria en hardware y la gestión de semáforos en software, consume parte de la ganancia de rendimiento. La velocidad de un sistema con n procesadores siempre será menor que n veces la de un único procesador.

Para aplicaciones de subproceso único, mejora el rendimiento en ~ 5% debido a que otro trabajo se descarga a otro núcleo.

Para trabajos multiproceso, mejora el rendimiento hasta un 100%.

Para eliminar aplicaciones que no responden, mejora el rendimiento en un 10000%.

En realidad, hay una ley que establece que este no es el caso llamado Ley de Amdahl.

Básicamente, el problema es que para la mayoría de las cargas de trabajo realistas habrá partes que no se pueden ejecutar en paralelo, por lo que para esas partes no se logra una aceleración.

Depende del programa que esté utilizando CPU. Si tiene una buena escala en el número de núcleos (y CPU con cachés distintas), entonces verás una mejora en el tiempo de finalización.