¿Por qué los fabricantes de CPU dejaron de aumentar las velocidades de reloj de sus procesadores? [cerrado]

63

He leído que los fabricantes dejaron de concentrarse en velocidades de reloj más altas y ahora están trabajando en otras cosas para mejorar el rendimiento.

Con

  • Una vieja máquina de escritorio con procesador Intel® Xeon® E3110 con velocidad de reloj de 3.0GHz
  • y un nuevo servidor con procesador AMD Opteron (TM) 6272 con velocidad de reloj de 2.1GHz

cuando se realiza una comparación de cifrado simple usando (un solo hilo)

 openssl aes256c

el escritorio funcionó mucho mejor que el servidor.

Entonces, incluso con la última optimización, ¿por qué el procesador con la mejor velocidad de reloj funciona mejor?

aprendiz
fuente
57
El chip de escritorio es de doble núcleo; El servidor es una CPU de 16 núcleos. El uso de un punto de referencia de un solo subproceso NO es apropiado en absoluto.
MSalters
@learner: debido a que la velocidad de los procesadores no puede aumentar al aumentar la cantidad de voltaje que requieren, lo que reduce el calor. Al concentrarse en el consumo de energía, en teoría podrán aumentar las velocidades del procesador en el futuro.
Ramhound
1
Cite casos reales de 'fabricantes' 'incluso reduciendo' velocidades de reloj (sin comparar manzanas y naranjas) o limite el título de su pregunta a 'no aumentar'.
Jan Doggen
8
Las velocidades de reloj AMD vs Intel no han sido una comparación justa desde los días K6 / Pentium. AMD comercializó los procesadores Athlon como 2500+ o 3000+ cuando sus relojes centrales podrían ser 1.8 o 2.1 respectivamente, pero generalmente se compararon bastante respectivamente con chips Intel que registraron un verdadero 2.5 o 3GHz. Simplemente hay manera demasiadas diferencias entre las arquitecturas ahora para hacer una comparación simplemente en frecuencias de reloj.
KeithS

Respuestas:

72

La razón por la que los fabricantes han dejado de concentrarse en aumentar la velocidad del reloj es porque ya no podemos enfriar los procesadores lo suficientemente rápido como para que esto sea viable. Cuanto mayor es la velocidad del reloj, más calor se genera, y ahora hemos llegado a una etapa en la que ya no es eficiente aumentar la velocidad del procesador debido a la cantidad de energía que se usa para enfriarlo.

Otra respuesta entra en detalles sobre cómo una mayor velocidad de reloj no significa un mejor rendimiento en todas las áreas.

Paul Hay
fuente
1
+1 Parece que compré mi máquina justo cuando se golpeó esta pared, mi P4 3.4 ghz de 8 años es probablemente el más rápido en términos de velocidad de reloj, cuando veo una gran mayoría del mercado (no OC).
Karthik T
2
Tenga en cuenta que el consumo de energía también sería un problema. Si tuviera 16 núcleos de 3.0 GHz, eso probablemente consumiría más de 200 vatios, que las fuentes de alimentación más comunes apenas pueden soportar en combinación con el resto del sistema.
Mixxifoides
99
@Mixxiphoid También necesitaría obtener esos 200+ W en la CPU de alguna manera, a un voltaje que los circuitos puedan manejar. Esa es una tarea no trivial en sí misma.
un CVn
1
No solo eso, para aumentar el reloj de la CPU, necesitan aumentar la tubería, sino que cada vez que necesite bifurcar el código, cambiar el contexto, saltar o borrar la memoria, borra toda la tubería, y debe llenarlo nuevamente para dar como resultado de esa instrucción, es mejor reducir la tubería y la frecuencia de la CPU, por lo que cada vez que necesite bifurcar, cambiar el contexto, saltar, no necesita esperar mucho tiempo para llenar la tubería nuevamente.
Lefsler
1
@demonofnight: Sería demasiado decir "cada vez que necesitas (...) saltar". Las ramas directas incondicionales no representan un riesgo de control, por lo que no cuentan fuera de las ramas condicionales ~ 95% -99% se predicen por varias técnicas (datos basados ​​en algunos documentos basados ​​en SPEC). Las ramas directas plantean el problema si el objetivo aún no se ha registrado y existe una predicción errónea. No estoy seguro de lo que quiere decir con "bifurcar el código" o "borrar la memoria", pero los cambios de contexto no deben ejecutarse con tanta frecuencia (interrupciones y posiblemente E / S).
Maciej Piechotka
37

La velocidad de procesamiento es mucho más que la velocidad del reloj.

  • Las diferentes CPU pueden hacer diferentes cantidades en el mismo número de ciclos de reloj, debido a las diferentes variantes en la disposición de la tubería y al tener múltiples unidades componentes (sumadores, etc.) en cada núcleo. Si bien en su prueba no es el caso, a menudo encuentra que un chip "más lento" puede hacer más que uno rápido (medido solo por la frecuencia del reloj) debido a que puede hacer más por tic.

  • La prueba que realizó puede ser muy sensible a las diferencias en la arquitectura de la CPU: podría optimizarse para una arquitectura específica, es posible que funcione de manera diferente no solo entre los chips Intel y AMD, sino también entre los chips Intel (o AMD) de diferentes familias. Es probable que también use un solo subproceso, por lo que no aprovecha los múltiples núcleos de las CPU.

  • Hay un movimiento para reducir las velocidades de reloj por razones de administración de energía y calor: aumentar la velocidad de reloj no tiene un efecto lineal sobre el uso de energía y la producción de calor.

  • Debido a la relación no lineal anterior, es mucho más eficiente para los requisitos actuales tener múltiples unidades de procesamiento que impulsar la velocidad de una unidad cada vez más. Esto también permite trucos ingeniosos para conservar energía, como apagar los núcleos individuales cuando no están en uso y reactivarlos a medida que aumenta la demanda nuevamente. Por supuesto, múltiples núcleos no ayudan a un algoritmo de un solo subproceso, por supuesto, aunque lo haría si ejecutara dos o más instancias al mismo tiempo.

David Spillett
fuente
Entonces, ¿cuál es la relación entre la frecuencia de reloj y el uso de energía?
user84207
$ P = CV ^ 2f $. Quizás también quieras leer esto .
zakkak
19

¿Por qué crees que los fabricantes están realmente reduciendo la velocidad del reloj al comparar solo dos procesadores?

  1. El 6272 tiene una velocidad Turbo de 3Ghz. La velocidad de base más baja es solo para reducir la potencia promedio y mantener un TDP aceptable para una carga de trabajo cuando todos los núcleos están estresados.
  2. El próximo chip de alto rendimiento para escritorio de AMD, el FX-9590 , alcanzará los 5 Ghz.

Además, la velocidad del reloj no es lo mismo que el rendimiento por ciclo de reloj. Puede tener un P4 de 3.8 Ghz frente a un núcleo de 3.2 Ghz de un i7-3930K, pero eso no significa que el núcleo P4 sea más rápido.

Todo lo dicho aquí sobre el consumo de energía también es perfectamente válido y verdadero para un diseño de 16 núcleos, donde, naturalmente, debe preocuparse más por los problemas de TDP.

Además, su método de referencia que solo prueba OpenSSL es un poco simple para dar números del mundo real. Tal vez deberías probar cualquier conjunto de pruebas de cifrado.

s1lv3r
fuente
3
Solo para agregar una analogía a la velocidad del reloj = falacia de rendimiento. Imagine a una persona dando pasos muy pequeños pero muy rápidos (velocidad de reloj alta), frente a otra persona dando pasos muy grandes a una velocidad ligeramente más lenta (frecuencia de reloj más baja). La persona que da grandes pasos puede moverse mucho más rápido.
Martin Konecny
@MartinKonecny: ¡Gran visualización!
Zach Latta
2
@MartinKonecny ​​Entiendo que la mayoría de las instrucciones del ensamblador (ADD, MOV, IMUL, etc.) se realizan en un solo ciclo. Entonces, con estos nuevos procesadores, ¿se realizan múltiples instrucciones en un solo ciclo?
nialsh
44
@nialsh Eso no es cierto en absoluto para las computadoras CISC (de hecho, una de las cosas definitorias de CISC es que las instrucciones toman varios ciclos), si todas las instrucciones tomaron un ciclo, la instrucción más lenta tardará la misma cantidad de tiempo en ejecutarse que la más rápida instrucción.
Scott Chamberlain
Las CPU x86 solían requerir múltiples ciclos de reloj por instrucción, pero en estos días pueden ejecutar múltiples instrucciones por ciclo de reloj.
Oskar Skog el
13

Su caso de prueba (cifrado aes-256) es muy sensible a las optimizaciones específicas del procesador.

Hay varias CPU que tienen instrucciones especiales destinadas a acelerar las operaciones de cifrado / descifrado. Estas instrucciones especiales no solo pueden estar presentes en su escritorio, sino que la CPU AMD tiene diferentes instrucciones especiales. Además, openssl podría admitir estas instrucciones especiales solo para la CPU Intel. ¿Verificaste si ese era el caso?

Para averiguar qué sistema es más rápido, intente usar un conjunto de pruebas de referencia "adecuado", o mejor, simplemente use su carga de trabajo típica.

jakob
fuente
¿Dónde ocurre la traducción a esa instrucción especial? No estoy seguro de si hay diferentes compiladores para diferentes conjuntos de instrucciones.
Shubham
Los compiladores tienen opciones para apuntar a diferentes conjuntos de instrucciones y / o "funciones intrínsecas" especiales que se correlacionan estrechamente con las instrucciones específicas de la CPU. Es posible que un solo ejecutable verifique en qué familia de CPU se está ejecutando y seleccione una ruta de código diferente en función de eso.
Russell Borogove
10

Simple: el chip AMD es mucho, mucho más rápido porque es un chip de 16 núcleos. A 115 vatios, significa que cada núcleo produce ~ 7 vatios. Esto no sería posible si cada núcleo funcionara a 3 Ghz. Para lograr esa cifra de 7 vatios, AMD bajó la frecuencia del reloj. Reducir la frecuencia del reloj en un 10% reduce el consumo de energía en un 20%, lo que a su vez le permite colocar un 25% de núcleos adicionales en un chip.

MSalters
fuente
10

Como han dicho otros, ya no podemos enfriar efectivamente las CPU si tuviéramos que presionar el voltaje requerido para los mismos aumentos relativos de velocidad de reloj en el pasado. Hubo un momento (era P4 y anterior) en el que se podía comprar una nueva CPU y ver una ganancia "inmediata" es la velocidad porque la velocidad del reloj aumentó significativamente en comparación con la generación anterior. Ahora nos hemos topado con una pared térmica, de algún tipo.

Cada nueva generación moderna de procesadores está aumentando ligeramente la velocidad del reloj, pero esto también es relativo a la capacidad de enfriarlos adecuadamente. Los fabricantes de chips, como Intel, se centran continuamente en reducir el tamaño de la matriz de la CPU para que sean más eficientes y produzcan menos calor en los mismos relojes. Como nota al margen, este tamaño de matriz reducido hace que estos procesadores modernos sean más propensos a morir por sobrevoltaje en lugar de sobrecalentamiento. Esto significa que también está limitando la velocidad de reloj de techo de cualquier CPU de generación actual sin otras optimizaciones hechas por el fabricante del chip.

Otra área en la que los fabricantes de chips se centran mucho es en aumentar el número de núcleos en el chip. Esto sí tiene en cuenta aumentos significativos en el poder computacional, pero solo cuando se utiliza un software que aprovecha múltiples núcleos. Tenga en cuenta la diferencia entre potencia computacional y velocidad aquí. En pocas palabras, la velocidad se refiere a la rapidez con que una computadora puede ejecutar una sola instrucción, mientras que la potencia computacional se refiere a cuántos cálculos puede hacer una computadora en un período de tiempo determinado. Los sistemas operativos modernos y muchos softwares modernos aprovechan múltiples núcleos. El problema es que la programación concurrente / paralela es más difícil que el paradigma de programación lineal estándar. Esto aumentó el tiempo que les tomó a muchos programas en el mercado aprovechar al máximo la potencia de estos procesadores más nuevos porque muchos desarrolladores no estaban acostumbrados a escribir programas de esta manera. Todavía hay algunos programas en el mercado hoy (ya sean modernos o heredados) que no aprovechan los núcleos múltiples o los subprocesos múltiples. El programa de cifrado que citó es uno de esos ejemplos.

Estas dos áreas de enfoque de los fabricantes de chips están intrínsecamente conectadas. Al reducir tanto el tamaño de la matriz como el consumo de energía de un chip, pueden aumentar el número de núcleos en dicho chip. Eventualmente, sin embargo, esto también golpeará una pared, causando otro cambio de paradigma más drástico.

La razón de este cambio de paradigma se debe a que nos acercamos a los límites del silicio como material base para la producción de chips. Esto es algo que Intel y otros han estado trabajando en resolver durante algún tiempo. Intel ha declarado que tiene una alternativa al silicio en proceso, y probablemente comencemos a verla en algún momento después de 2017. Además de este nuevo material, Intel también está buscando transistores 3D que podrían "triplicar efectivamente la potencia de procesamiento". Aquí hay un artículo que menciona ambas ideas: http://apcmag.com/intel-looks-beyond-silicon-for-processors-past-2017.htm

PseudoPsique
fuente
2
  • Las pérdidas de calor H equivalen a 4º grado de frecuencia f.

    H ~ f ^ 4

    Entonces, el aumento menor de frecuencia conduce a altas pérdidas de calor.

  • Miniaturización adicional

    Una frecuencia más alta conduce a una mayor minimización del cristal. En este momento no tenemos tecnologías para trabajar eficazmente con materiales a escala de nanómetros y los nanómetros son el límite.

Brujo
fuente
2
-1 La cuarta parte de potencia no es correcta. La potencia (calor generado por segundo) en las CPU es (aproximadamente) linealmente proporcional a la frecuencia de reloj como P ~ f CV ^ 2 + P0 ( en.wikipedia.org/wiki/CPU_power_dissipation ). El voltaje otorgado depende de la velocidad del reloj (aunque no necesariamente lineal). Ver: physics.stackexchange.com/questions/34766 En resumen , la potencia generada por la CPU es aproximadamente lineal a cuadrática en la velocidad del reloj en el rango de 1.6 GHz - 5 GHz. (No apuntalar a f ^ 4).
dr jimbob
2

Como se indicó en algunas otras respuestas, los fabricantes de CPU desean mantener bajas las velocidades de reloj para controlar el consumo de energía y la disipación de calor. Para hacer más trabajo a la misma velocidad de reloj, se utilizan varias estrategias.

Los grandes cachés de memoria en chip pueden mantener más datos "cerca" de la CPU, disponibles para ser procesados ​​con un retraso mínimo, a diferencia de la memoria principal, que es mucho más lenta para entregar datos a la CPU.

Las diferentes instrucciones de CPU requieren diferentes números de ciclos de reloj para completarse. En muchos casos, puede usar un circuito simple para implementar una operación durante varios ciclos de reloj, o un circuito más complejo para hacerlo en menos.

El ejemplo más dramático de esto en la evolución de Intel está en el Pentium 4, que fue un gran valor atípico en la velocidad del reloj, pero no funcionó proporcionalmente bien. Las instrucciones de cambio de bits, que en chips anteriores podían cambiar 32 bits en un solo ciclo, usaban un circuito mucho más simple en el Pentium 4, que requería un solo ciclo para cada cambio de bit. La expectativa era que la arquitectura Pentium 4 sería escalable a velocidades de reloj mucho más altas debido a su simplicidad, pero eso no funcionó, y el circuito de cambio rápido y complejo regresó en las arquitecturas Core y posteriores.

Russell Borogove
fuente
2

De IEEE:

Entonces, ¿por qué no presionar el reloj más rápido? Porque ya no vale la pena el costo en términos de energía consumida y calor disipado. Intel llama a la compensación de velocidad / potencia un "teorema fundamental de los procesadores multinúcleo", y esa es la razón por la que tiene sentido usar dos o más áreas de procesamiento, o núcleos, en un solo chip.

http://spectrum.ieee.org/computing/hardware/why-cpu-frequency-stalled

Azevedo
fuente