¿Es correcto decir, por ejemplo, que un procesador con cuatro núcleos cada uno funcionando a 3GHz es de hecho un procesador funcionando a 12GHz?
Una vez me metí en un argumento de "Mac vs. PC" (que por cierto NO es el tema central de este tema ... que estaba en la escuela secundaria) con un conocido que insistió en que Macs solo se anunciaba como máquinas de 1Ghz porque eran G4 de doble procesador cada uno funcionando a 500MHz.
En ese momento, sabía que esto era una tontería por razones que creo que son evidentes para la mayoría de las personas, pero acabo de ver un comentario en este sitio web en el sentido de "6 núcleos x 0.2GHz = 1.2Ghz" y eso me hizo pensar nuevamente si Hay una respuesta real a esto.
Entonces, esta es una pregunta técnica más o menos filosófica / profunda sobre la semántica del cálculo de la velocidad del reloj. Veo dos posibilidades:
- 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).
- 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.
fuente
Respuestas:
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)
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:
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.
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.
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.
fuente
Otros hicieron un buen argumento desde el punto de vista técnico. En cambio, haré un par de analogías simples que espero expliquen por qué 4 * 3GHz no es equivalente a 1 * 12GHz.
Por ejemplo, una mujer puede fabricar un bebé en nueve meses. ¿Podrán nueve mujeres fabricar un bebé en un mes? No, porque la gestación no puede ser paralela (bueno, al menos a este nivel tecnológico).
Aquí hay otro: en una planta hidroeléctrica que visité recientemente, uno de los generadores estaba siendo actualizado. Tuvieron que transportar el estator del generador por barco. Un sexto del estator podía ser transportado en camión, pero necesitaban transportar todo el estator; así que tuvieron que usar un barco, no seis camiones.
Otro caso podría ser el momento preciso de los eventos. A veces, los procesadores de computadora se usan como temporizadores precisos (aunque la práctica ya no se recomienda, debido al reloj variable en la mayoría de los procesadores. En su lugar, se debe usar un temporizador de eventos de alta precisión). Si suponemos que tenemos un procesador con un reloj de 12 GHz relativamente estable, podemos usarlo para medir el tiempo en una resolución mucho más alta que en un procesador con reloj de 3GHz. No importa cuántos núcleos de 3GHz tengamos, no podremos alcanzar la resolución del núcleo de 12GHz. Es como tener 4 relojes con pantallas de 7 segmentos donde cada reloj muestra la hora correcta en horas. No importa cuán correctamente muestren las horas, no puede usarlas para medir intervalos de tiempo en un intervalo de un segundo.
fuente
No soy un experto en el tema, pero sí tengo un título en Ingeniería Informática. En teoría (esta es una respuesta muy conceptual), un procesador de cuatro núcleos a 3 GHz puede ser equivalente a un procesador de 12 GHz si, por ejemplo, se necesitan cuatro conjuntos de cálculos para un único resultado final. Eso es lo que se llama procesamiento paralelo.
Para simplificar la lógica, digamos que estamos hablando de un procesador de doble núcleo. Si un conjunto de cálculos fuera, diga:
entonces, esos dos cálculos podrían ejecutarse en núcleos separados, y un procesador xGHz sería equivalente a un procesador de un solo núcleo 2 * xGHz. Esto se debe a que los dos cálculos, aunque se realizan a velocidad x, se procesarían al mismo tiempo. Mientras que el procesador de un solo núcleo podría hacerlos a 2 * x velocidad, pero uno tras otro. Si las dos CPU ejecutaran este código al mismo tiempo, terminarían al mismo tiempo. Sin embargo, si el código fuera:
entonces, el procesador de doble núcleo tardaría dos veces más que el procesador de un solo núcleo porque en la segunda instrucción, el valor de a depende de la primera instrucción y, por lo tanto, no puede ejecutarse en paralelo. Así es como algunos programas pueden aprovechar los procesadores de subprocesos múltiples.
Por lo tanto, en teoría, un procesador de un solo núcleo de 12 GHz siempre puede funcionar tan rápido (o más rápido) que un procesador de cuatro núcleos de 3 GHz, pero no al revés.
fuente
Esta es una pregunta complicada de responder, pero la respuesta corta es: No
En aplicaciones del mundo real, cuatro procesadores de 3 GHz no serán tan rápidos como un solo procesador de 12 GHz debido a las ineficiencias. Pueden estar muy cerca, pero NO serán iguales a un solo procesador en términos de potencia de procesamiento.
La razón de esto radica en las pequeñas ineficiencias cuando se trata de programas que pueden ejecutarse en más de un procesador. Suponiendo que el programa en cuestión puede ejecutarse en paralelo, aún tendremos problemas con diferentes núcleos que compiten entre sí por otros recursos como RAM o incluso problemas de sincronización de caché y subprocesos. Además, siempre hay partes de programas que no se pueden paralelizar y necesitan ejecutarse en un solo núcleo por sí mismo.
Echa un vistazo a este artículo: http://en.wikipedia.org/wiki/Amdahl%27s_law
fuente
Parece que no podemos decir que 4 núcleos a 3 GHz se pueden decir como 12 GHz.
Varias restricciones como la memoria compartida, la contención de caché y otros recursos también son comunes a todos los núcleos, por lo que ejecutar un fragmento de código paralelo en estos núcleos no será tan eficiente como ejecutarlo en procesadores de 12 Ghz (aunque es difícil construir un procesador de este tipo). )
También leí en alguna parte que si duplicamos los transistores integrados en el chip (CMP), la velocidad que obtendremos es solo del 40%. Esto proporciona una pista importante para este tema también.
fuente
En lo que respecta a los ciclos de reloj ejecutados, sí, un procesador multinúcleo completa
x * cores
ciclos de trabajo por segundo. Convencionalmente, las velocidades de reloj se enumeran por núcleo para una comparación más fácil (de lo contrario, ¿cómo compararía fácilmente un chip de doble núcleo de 4 GHz que funciona a 2 GHz / núcleo frente a un chip de cuatro núcleos de 4 GHz que funciona a 1 GHz / núcleo?).Desafortunadamente, el problema se vuelve complejo cuando intentas comparar diferentes procesadores en aplicaciones del mundo real.
Primero, la mayoría de los procesadores multinúcleo comparten algunos recursos entre los núcleos (por ejemplo, caché de la CPU). Tienen que compartir el acceso a ese caché, por lo que no puede tener ambos núcleos almacenando o leyendo datos a toda velocidad. Esto a menudo se mitiga en CPU de muchos núcleos al tener múltiples cachés compartidos (por ejemplo, la mayoría de los chips de cuatro núcleos tienen 2 cachés, cada uno compartido por un par de núcleos), para dividir mejor las posibilidades de un cuello de botella en un recurso compartido.
En segundo lugar, y quizás menos conocido en el mundo no tecnológico, es que comparar velocidades de reloj a veces puede ser como comparar manzanas y naranjas. Diferentes CPU logran una cantidad diferente de trabajo en un solo ciclo de reloj, por lo que decir que tiene 1 GHz frente a 1.2 GHz suena muy bien, pero el chip de 1 GHz en realidad podría hacer más trabajo en un intervalo de tiempo determinado. El Pentium 4 condujo a este punto a casa, lo que llevó al Megahertz Myth (que no sabía que tenía un nombre acuñado hasta que escribí esta publicación).
fuente
Dos autos que van 50 millas por hora no "suman" hasta 100 millas por hora. Es realmente así de simple. La velocidad del reloj de un procesador no es una medida de la velocidad a la que se realiza el trabajo, es una medida de la velocidad del reloj.
fuente