Página principal » cómo » ¿Cómo se calcula la velocidad del procesador en procesadores de múltiples núcleos?

    ¿Cómo se calcula la velocidad del procesador en procesadores de múltiples núcleos?

    El advenimiento de los procesadores de múltiples núcleos de grado de consumo económico plantea la pregunta para muchos usuarios: ¿cómo se calcula efectivamente la velocidad real de un sistema de múltiples núcleos? ¿Es un sistema de 4 núcleos 3GHz realmente 12GHz? Sigue leyendo mientras investigamos.

    La sesión de Preguntas y Respuestas de hoy nos llega por cortesía de SuperUser, una subdivisión de Stack Exchange, una agrupación impulsada por la comunidad de sitios web de preguntas y respuestas.

    La pregunta

    El lector SuperUser NReilingh tenía curiosidad por saber cómo calcular la velocidad del procesador para un sistema de múltiples núcleos:

    ¿Es correcto decir, por ejemplo, que un procesador con cuatro núcleos cada uno funcionando a 3GHz es de hecho un procesador que funciona a 12GHz??

    Una vez me metí en un argumento de "Mac contra PC" (que por cierto NO es el tema central de este tema ... que estaba en la secundaria) con un conocido que insistió en que las Mac solo se anunciaban como máquinas de 1 GHz porque eran duales. -procesador G4s cada uno funcionando a 500MHz.

    En el momento en que supe que esto era una tontería por razones que creo que son aparentes para la mayoría de las personas, pero acabo de ver un comentario en este sitio web con el efecto de "6 núcleos x 0.2GHz = 1.2Ghz" y eso me hizo pensar otra vez si hay una respuesta real a esto.

    Entonces, esta es una pregunta más o menos filosófica / técnica profunda acerca de la semántica del cálculo de la velocidad del reloj. Veo dos posibilidades:

    1. De hecho, cada núcleo está haciendo x cálculos por segundo, por lo que el número total de cálculos es x (núcleos).
    2. La velocidad del reloj es más bien un conteo de la cantidad de ciclos por los que pasa el procesador en el espacio de un segundo, por lo que mientras todos los núcleos estén funcionando a la misma velocidad, la velocidad de cada ciclo de reloj seguirá siendo la misma, sin importar cuántos núcleos existan. . En otras palabras, Hz = (core1Hz + core2Hz +…) / núcleos.

    Entonces, ¿cuál es la forma adecuada de indicar la velocidad total del reloj y, lo que es más importante, incluso es posible utilizar la nomenclatura de velocidad de un solo núcleo en un sistema de múltiples núcleos??

    La respuesta

    Los contribuyentes de superusuarios Mokubai ayudan a aclarar las cosas. El escribe:

    La razón principal por la que un procesador de 3GHz de cuatro núcleos nunca es tan rápido como un solo núcleo de 12 GHz tiene que ver con cómo funciona la tarea que se ejecuta en ese procesador, es decir, de un solo hilo o de múltiples hilos. La ley de Amdahl es importante al considerar los tipos de tareas que está ejecutando.

    Si tiene una tarea que es inherentemente lineal y debe realizarse de forma precisa paso a paso, como por ejemplo (un programa extremadamente simple)

    10: a = a + 1
    20: goto 10 

    Entonces, la tarea depende en gran medida del resultado de la pasada anterior y no puede ejecutar varias copias de sí misma sin corromper el valor de 'una' como cada copia obtendría el valor de 'una' En diferentes momentos y volviéndolo 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 varios núcleos, se produciría un daño en la sincronización. 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 toma 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 completa de uno de los núcleos sin ningún problema de sincronización, aquí es donde la Ley de Amdahl entra en ello.

    Por lo tanto, si tiene una aplicación de un solo subproceso que realiza cálculos de fuerza bruta, el procesador único de 12 GHz ganaría fácilmente, si de alguna manera puede hacer que la tarea se divida en partes separadas y multihebra, entonces los 4 núcleos podrían acercarse, pero no alcanzar, La misma actuación, según la Ley de Amdahl..

    Lo principal que un sistema de CPU múltiple le da es la capacidad de respuesta. En una máquina de un solo núcleo que está trabajando arduamente, el sistema puede parecer lento, ya que la mayor parte del tiempo podría estar siendo 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 escalofriante . En un sistema de múltiples núcleos, la tarea pesada obtiene un núcleo y todas las demás tareas se ejecutan en los otros núcleos, haciendo su trabajo de forma rápida y eficiente..

    El argumento de "6 núcleos x 0.2GHz = 1.2Ghz" es basura en todas las situaciones, excepto cuando las tareas son perfectamente paralelas e independientes. Hay un buen número de tareas que son altamente paralelas, pero aún requieren alguna forma de sincronización. Handbrake es un trancodificador de video que es muy bueno para usar todas las CPU disponibles pero requiere un proceso central para mantener los otros subprocesos llenos de datos y recopilar los datos con los que se realizan..

    1. De hecho, cada núcleo está haciendo x cálculos por segundo, por lo que el número total de cálculos es x (núcleos).

    Cada núcleo es capaz de hacer x cálculos por segundo, asumiendo que la carga de trabajo es adecuada en paralelo, en un programa lineal todo lo que tiene es 1 núcleo.

    1. La velocidad del reloj es más bien un conteo de la cantidad de ciclos por los que pasa el procesador en el espacio de un segundo, por lo que mientras todos los núcleos estén funcionando a la misma velocidad, la velocidad de cada ciclo de reloj seguirá siendo la misma, 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 = 12 GHz, dado que funciona la matemática, pero estás comparando manzanas con naranjas y las sumas no son correctas, GHz no se puede sumar para cada situación. Lo cambiaría a 4 x 3GHz = 4 x 3GHz.

    ¿Tienes algo que agregar a la explicación? Apague el sonido en los comentarios. ¿Quieres leer más respuestas de otros usuarios de Stack Exchange con experiencia en tecnología? Echa un vistazo a la discusión completa aquí.