La razón principal por la que un procesador de cuatro núcleos a 3 GHz nunca es tan rápido como un solo núcleo a 12 GHz es la forma en que funciona la tarea que se ejecuta en ese procesador, es decir, un solo subproceso o varios subprocesos. La Ley de Amdahl es importante al considerar los tipos de tareas que está ejecutando.
Si tiene una tarea que es inherentemente lineal y tiene que hacerse con precisión paso a paso como (un programa extremadamente simple)
10: a = a + 1
20: goto 10
Entonces, la tarea depende en gran medida del resultado del pase anterior y no puede ejecutar varias copias de sí mismo sin corromper el valor de, 'a'
ya que cada copia obtendría el valor 'a'
en diferentes momentos y la volvería a escribir de manera diferente. Esto restringe la tarea a un solo subproceso y, por lo tanto, la tarea solo se puede ejecutar en un solo núcleo en un momento dado, si se ejecutara en múltiples núcleos, la corrupción de sincronización ocurriría. Esto lo limita a la mitad de la potencia de la CPU de un sistema de doble núcleo, o 1/4 en un sistema de cuatro núcleos.
Ahora tome una tarea como:
10: a = a + 1
20: b = b + 1
30: c = c + 1
40: d = d + 1
50: goto 10
Todas estas líneas son independientes y podrían dividirse en 4 programas separados como el primero y ejecutarse al mismo tiempo, cada uno capaz de hacer un uso efectivo de la potencia total de uno de los núcleos sin ningún problema de sincronización, aquí es donde está la Ley de Amdahl entra en ello.
Entonces, si tiene una aplicación de un solo subproceso que realiza cálculos de fuerza bruta, el único procesador de 12 GHz ganaría fácilmente, si de alguna manera puede hacer que la tarea se divida en partes separadas y multiproceso, entonces los 4 núcleos podrían acercarse, pero no llegar del todo, El mismo rendimiento, según la Ley de Amdahl.
Lo principal que le da un sistema de CPU múltiple es la capacidad de respuesta. En una máquina de un solo núcleo que está trabajando duro, el sistema puede parecer lento ya que la mayor parte del tiempo podría ser utilizado por una tarea y las otras tareas solo se ejecutan en ráfagas cortas entre la tarea más grande, lo que resulta en un sistema que parece lento o difícil. . En un sistema multinúcleo, la tarea pesada obtiene un núcleo y todas las demás tareas juegan en los otros núcleos, haciendo su trabajo de manera rápida y eficiente.
El argumento de "6 núcleos x 0.2GHz = 1.2Ghz" es basura en todas las situaciones, excepto donde las tareas son perfectamente paralelas e independientes. Hay una buena cantidad de tareas que son altamente paralelas, pero aún requieren alguna forma de sincronización. Freno de mano es una trancoder vídeo que es muy bueno en el uso de todas las CPU disponibles pero sí requiere un proceso central para mantener a los otros hilos llenos de datos y recoger los datos que se hacen con.
- De hecho, cada núcleo está haciendo x cálculos por segundo, por lo tanto, el número total de cálculos es x (núcleos).
Cada núcleo es capaz de hacer x cálculos por segundo, suponiendo que la carga de trabajo sea paralela adecuada, en un programa lineal todo lo que tiene es 1 núcleo.
- La velocidad del reloj es más bien un recuento del número de ciclos que atraviesa el procesador en el espacio de un segundo, por lo que siempre y cuando todos los núcleos estén funcionando a la misma velocidad, la velocidad de cada ciclo de reloj permanece igual sin importar cuántos núcleos existan . En otras palabras, Hz = (core1Hz + core2Hz + ...) / núcleos.
Creo que es una falacia pensar que 4 x 3GHz = 12GHz, dado que las matemáticas funcionan, pero estás comparando manzanas con naranjas y las sumas simplemente no son correctas, GHz no puede simplemente sumarse para cada situación. Lo cambiaría a 4 x 3GHz = 4 x 3GHz.