respuesta sencilla

respuesta sencilla

En 2014, escuché muchos lenguajes de programación promocionados por sus características de concurrencia. Se dice que la simultaneidad es crucial para mejorar el rendimiento.

Al hacer esta afirmación, muchas personas se remontan a un artículo de 2005 llamadoSe acabó el almuerzo gratis: un giro fundamental hacia la concurrencia en el software. El argumento básico es que cada vez es más difícil aumentar la velocidad de reloj de los procesadores, pero aún podemos poner más núcleos en un chip, y que para obtener ganancias de rendimiento, será necesario escribir software para aprovechar múltiples núcleos.

Algunas citas clave:

Estamos acostumbrados a ver que las CPU de 500 MHz dan paso a las CPU de 1 GHz, a las CPU de 2 GHz, y así sucesivamente. Hoy estamos en el rango de 3 GHz en las computadoras convencionales.

La pregunta clave es: ¿Cuándo terminará? Después de todo, la Ley de Moore predice un crecimiento exponencial, y claramente el crecimiento exponencial no puede continuar para siempre antes de que alcancemos límites físicos estrictos; La luz no se vuelve más rápida. El crecimiento debe eventualmente desacelerarse e incluso terminar.

... Se ha vuelto cada vez más difícil aprovechar velocidades de reloj más altas debido no solo a uno sino a varios problemas físicos, en particular el calor (demasiado y demasiado difícil de disipar), el consumo de energía (demasiado alto) y problemas de fugas de corriente.

... El futuro de Intel y de la mayoría de los proveedores de procesadores está en otra parte, ya que las compañías de chips persiguen agresivamente las mismas nuevas direcciones multinúcleo.

...Multicore consiste en ejecutar dos o más CPU reales en un chip.

Las predicciones de este artículo parecen haberse cumplido, pero no entiendo por qué. Sólo tengo ideas muy vagas sobre cómo funciona el hardware.

Mi visión demasiado simplificada es que "cada vez es más difícil empaquetar más potencia de procesamiento en el mismo espacio" (debido a problemas con el calor, el consumo de energía, etc.). Yo esperaría que la conclusión fuera "por lo tanto, tendremos que tener computadoras más grandes o ejecutar nuestros programas en varias computadoras". (Y, de hecho, la computación en la nube distribuida es algo de lo que escuchamos cada vez más).

Pero parte de la solución parecen ser las arquitecturas multinúcleo. A menos que las computadoras crezcan en tamaño (lo cual no ha sucedido), esto parece ser otra forma de decir "empaquetar más potencia de procesamiento en el mismo espacio".

¿Por qué "agregar más núcleos" no enfrenta las mismas limitaciones físicas que "hacer la CPU más rápida"?

Por favor explíquelo en los términos más simples que pueda. :)

Respuesta1

Resumen

  • Ciencias económicas. Es más barato y más fácil diseñar una CPU que tenga más núcleos que una velocidad de reloj más alta porque:

  • Aumento significativo en el consumo de energía. El consumo de energía de la CPU aumenta rápidamente a medida que aumenta la velocidad del reloj; puede duplicar la cantidad de núcleos que funcionan a una velocidad más baja en el espacio térmico necesario para aumentar la velocidad del reloj en un 25%. Cuádruple al 50%.

  • Hay otras formas de aumentar la velocidad de procesamiento secuencial y los fabricantes de CPU las utilizan bien.


Voy a aprovechar en gran medida las excelentes respuestas enesta preguntaen uno de nuestros sitios hermanos SE. ¡Así que votadlos!


Limitaciones de velocidad del reloj

Existen algunas limitaciones físicas conocidas para la velocidad del reloj:

  • Tiempo de transmisión

    El tiempo que tarda una señal eléctrica en recorrer un circuito está limitado por la velocidad de la luz. Este es un límite estricto y no se conoce forma de evitarlo 1 . En relojes de gigahercios, nos estamos acercando a este límite.

    Sin embargo, todavía no hemos llegado a ese punto. 1 GHz significa un nanosegundo por tic del reloj. En ese tiempo, la luz puede viajar 30 cm. A 10 GHz, la luz puede viajar 3 cm. Un único núcleo de CPU tiene aproximadamente 5 mm de ancho, por lo que nos encontraremos con estos problemas en algún lugar después de los 10 GHz. 2

  • Retardo de conmutación

    No basta con considerar el tiempo que tarda una señal en viajar de un extremo a otro. ¡También debemos considerar el tiempo que tarda una puerta lógica dentro de la CPU en cambiar de un estado a otro! A medida que aumentamos la velocidad del reloj, esto puede convertirse en un problema.

    Lamentablemente, no estoy seguro de los detalles y no puedo proporcionar ninguna cifra.

    Aparentemente, bombearle más energía puede acelerar la conmutación, pero esto genera problemas tanto de consumo de energía como de disipación de calor. Además, más potencia significa que necesita conductos más voluminosos capaces de manejarla sin sufrir daños.

  • Disipación de calor/consumo de energía

    Éste es el grande. Citando deLa respuesta de fuzzyhair2:

    Los procesadores recientes se fabrican con tecnología CMOS. Cada vez que hay un ciclo de reloj, se disipa energía. Por lo tanto, una mayor velocidad del procesador significa una mayor disipación de calor.

    Hay algunas medidas preciosas eneste hilo del foro de AnandTech, e incluso derivaron una fórmula para el consumo de energía (que va de la mano con el calor generado):

    Fórmula
    Crédito aNo me importa

    Esto lo podemos visualizar en el siguiente gráfico:

    Grafico
    Crédito aNo me importa

    Como puede ver, el consumo de energía (y el calor generado) aumenta extremadamente rápidamente a medida que la velocidad del reloj aumenta más allá de cierto punto. Esto hace que no sea práctico aumentar ilimitadamente la velocidad del reloj.

    La razón del rápido aumento en el uso de energía probablemente esté relacionada con el retraso de conmutación: no es suficiente simplemente aumentar la energía proporcionalmente a la velocidad del reloj; el voltaje también debe aumentarse para mantener la estabilidad en relojes más altos. Puede que esto no sea del todo correcto; no dude en señalar correcciones en un comentario o editar esta respuesta.


¿Más núcleos?

Entonces, ¿por qué más núcleos? Bueno, no puedo responder eso definitivamente. Tendrías que preguntarle a la gente de Intel y AMD. Pero puede ver arriba que, con las CPU modernas, en algún momento resulta poco práctico aumentar la velocidad del reloj.

Sí, el multinúcleo también aumenta la potencia requerida y la disipación de calor. Pero evita claramente los problemas de tiempo de transmisión y retraso de conmutación. Y, como puede ver en el gráfico, puede duplicar fácilmente la cantidad de núcleos en una CPU moderna con la misma sobrecarga térmica que un aumento del 25% en la velocidad del reloj.

Algunas personas lo han hecho -el actualrécord mundial de overclockingestá apenas por debajo de los 9 GHz. Pero lograrlo manteniendo el consumo de energía dentro de límites aceptables supone un importante desafío de ingeniería. En algún momento, los diseñadores decidieron que agregar más núcleos realizaría más trabajo.en paraleloproporcionaría un impulso más eficaz al rendimiento en la mayoría de los casos.

Ahí es donde entra en juego la economía: probablemente fuera más barato (menos tiempo de diseño, menos complicado de fabricar) optar por la ruta multinúcleo. Y es fácil de comercializar: ¿a quién no le encanta lo nuevo?ocho nucleos¿chip? (Por supuesto, sabemos que el multinúcleo es bastante inútil cuando el software no lo utiliza...)

AlláesUna desventaja del multinúcleo: necesita más espacio físico para colocar el núcleo adicional. Sin embargo, el tamaño de los procesos de la CPU se reduce mucho constantemente, por lo que hay mucho espacio para colocar dos copias de un diseño anterior; la verdadera desventaja es no poder crear núcleos únicos más grandes y más complejos. Por otra parte, aumentar la complejidad central es unacosa maladesde el punto de vista del diseño: más complejidad = más errores/errores y errores de fabricación. Parece que hemos encontrado un punto medio con núcleos eficientes que son lo suficientemente simples como para no ocupar demasiado espacio.

Ya hemos alcanzado un límite en la cantidad de núcleos que podemos colocar en un solo troquel con los tamaños de proceso actuales. Es posible que pronto alcancemos un límite de hasta dónde podemos reducir las cosas. ¿Qué es lo siguiente? ¿Necesitamos más? Desafortunadamente, eso es difícil de responder. ¿Alguien aquí es clarividente?


Otras formas de mejorar el rendimiento

Entonces, no podemos aumentar la velocidad del reloj. Y más núcleos tienen una desventaja adicional: a saber, sólo ayudan cuando el software que se ejecuta en ellos puede utilizarlos.

Entonces, ¿qué más podemos hacer? ¿Cómo es que las CPU modernas son mucho más rápidas que las más antiguas a la misma velocidad de reloj?

La velocidad del reloj es en realidad sólo una aproximación muy aproximada del funcionamiento interno de una CPU. No todos los componentes de una CPU funcionan a esa velocidad; algunos pueden funcionar una vez cada dos tics, etc.

Lo que es más significativo es el número deinstruccionespuedes ejecutar por unidad de tiempo. Esta es una medida mucho mejor de cuánto puede lograr un solo núcleo de CPU. Algunas instrucciones; algunos tomarán un ciclo de reloj, otros tomarán tres. La división, por ejemplo, es considerablemente más lenta que la suma.

Entonces, podríamos hacer que una CPU funcione mejor aumentando la cantidad de instrucciones que puede ejecutar por segundo. ¿Cómo? Bueno, podrías hacer que una instrucción sea más eficiente; tal vez la división ahora solo requiera dos ciclos. Entonces haycanalización de instrucciones. Al dividir cada instrucción en múltiples etapas, es posible ejecutar instrucciones "en paralelo", pero cada instrucción aún tiene un orden secuencial bien definido respectivo a las instrucciones anteriores y posteriores, por lo que no requiere soporte de software como multinúcleo. hace.

Hayotrocamino: instrucciones más especializadas. Hemos visto cosas como SSE, que proporcionan instrucciones para procesar grandes cantidades de datos al mismo tiempo. Constantemente se introducen nuevos conjuntos de instrucciones con objetivos similares. Estos, nuevamente, requieren soporte de software y aumentan la complejidad del hardware, pero brindan un buen aumento de rendimiento. Recientemente, apareció AES-NI, que proporciona cifrado y descifrado AES acelerado por hardware, mucho más rápido que un montón de aritmética implementada en software.


1 Al menos, no sin profundizar bastante en la física cuántica teórica.

2 En realidad, podría ser menor, ya que la propagación del campo eléctrico no es tan rápida como la velocidad de la luz en el vacío. Además, eso es sólo para la distancia en línea recta: es probable que haya al menos un camino que sea considerablemente más largo que una línea recta.

Respuesta2

La física es física. No podemos seguir empaquetando más transistores en espacios cada vez más pequeños para siempre. En algún momento se vuelve tan pequeño que te enfrentas a una extraña basura cuántica. En algún momento no podemos empacardos vecestantos transistores en un año como solíamos (de eso se trata la ley de Moore).

Las velocidades de reloj brutas no significan nada. Mi antiguo Pentium M tenía aproximadamente la mitad de la velocidad de reloj de una CPU de escritorio contemporánea (y sin embargo, en muchos aspectosmás rápido) – y los sistemas modernos sonapenasacercándose a las velocidades de los sistemas de hace 10 años (y son claramente más rápidas). Básicamente, "simplemente" aumentar la velocidad del reloj no proporciona ganancias reales de rendimiento en muchos casos. Puede ayudar enalgunooperaciones de un solo subproceso, pero es mejor gastar el presupuesto de diseño en una mayor eficiencia en términos de todo lo demás.

Múltiples núcleos te permiten hacerdos o más cosas a la vez, por lo que no es necesario esperar a que termine una cosa para la siguiente. A corto plazo, puede simplemente colocar dos núcleos existentes en el mismo paquete (por ejemplo, con elPentium Ds y su MCM, que fue un diseño de transición) y tienes un sistema que es dos veces más rápido. La mayoría de las implementaciones modernas comparten cosas como, por supuesto, un controlador de memoria.

También puedes construir de forma más inteligente de diferentes maneras. ARM hace Big-Little: tiene 4 núcleos "débiles" de bajo consumo trabajando junto con 4 núcleos más potentes para que tengas lo mejor de ambos mundos. Intel le permite bajar el acelerador (para una mejor eficiencia energética) o hacer overclockespecíficonúcleos (para un mejor rendimiento de un solo hilo). Recuerdo que AMD hace algo con los módulos.

También puede mover cosas como controladores de memoria (para tener una latencia más baja) y funciones relacionadas con IO (la CPU moderna no tiene puente norte), así como video (que es más importante con las computadoras portátiles y el diseño AIW). Tiene más sentido hacer estas cosas que "simplemente" seguir aumentando la velocidad del reloj.

En algún momento, es posible que "más" núcleos no funcionen, aunque las GPU tienencientosde núcleos.

Los multinúcleos como tales permiten que las computadoras funcionenmás inteligentede todas estas maneras.

Respuesta3

respuesta sencilla

La respuesta más simple a la pregunta.

¿Por qué "agregar más núcleos" no enfrenta las mismas limitaciones físicas que "hacer la CPU más rápida"?

en realidad se encuentra en otra parte de su pregunta:

Yo esperaría que la conclusión fuera "por lo tanto, tendremos que tener computadoras más grandes o ejecutar nuestros programas en varias computadoras".

En esencia, tener varios núcleos es como tener varias "computadoras" en el mismo dispositivo.

Respuesta compleja

Un "núcleo" es la parte de la computadora que realmente procesa instrucciones (suma, multiplicación, "y", etc.). Un núcleo solo puede ejecutar una única instrucción a la vez. Si quieres que tu ordenador sea "más potente" hay dos cosas básicas que puedes hacer:

  1. Aumentar el rendimiento (aumentar la velocidad del reloj, disminuir el tamaño físico, etc.)
  2. Utilice más núcleos en la misma computadora

Las limitaciones físicas del n.° 1 son principalmente la necesidad de eliminar el calor causado por el procesamiento y la velocidad de un electrón en el circuito. Una vez que divide algunos de esos transistores en un núcleo separado, alivia en gran medida el problema del calor.

Hay una limitación importante para el punto 2: debes poder dividir tu problema en múltiplesindependienteproblemas y luego combine la respuesta. En una computadora personal moderna, esto no es realmente un problema, ya que de todos modos hay muchos problemas independientes que compiten por el tiempo de cálculo con los núcleos. Pero cuando se realizan problemas computacionales intensivos, múltiples núcleos solo ayudan si el problema se puede resolver con concurrencia.

Respuesta4

Para resumir: la aceleración de núcleos individuales ha llegado a su límite, por lo que seguimos reduciéndolos y añadiendo más, hasta que llegue a su límite o podamos cambiar a mejores materiales (o lograr un avance fundamental que derroque la tecnología establecida, algo así como computación cuántica de tamaño doméstico y realmente funcional).

Creo que este problema es multidimensional y será necesario escribir un poco para pintar una imagen más completa:

  1. Limitaciones físicas (impuestas por la física real): como la velocidad de la luz, la mecánica cuántica, todo eso.
  2. Problemas de fabricación: ¿Cómo fabricamos estructuras cada vez más pequeñas con la precisión necesaria? Problemas relacionados con materias primas, materiales utilizados para construir circuitos usw., durabilidad.
  3. Problemas arquitectónicos: calor, inferencia, consumo de energía, etc.
  4. Problemas económicos: ¿Cuál es la forma más económica de conseguir más rendimiento para el usuario?
  5. Casos de uso y percepción del usuario sobre el rendimiento.

Puede que haya muchos más. Una CPU multipropósito está tratando de encontrar una solución para combinar todos estos factores (y más) en un chip producible en masa que se adapte al 93% de los objetos del mercado. Como puede ver, el último punto es el más crucial: la percepción del cliente, que se deriva directamente de la forma en que el cliente utiliza la CPU.

Pregúntate ¿cuál es tu aplicación habitual? Tal vez: 25 pestañas de Firefox, cada una reproduciendo algunos anuncios en segundo plano, mientras escuchas música, todo mientras esperas que finalice el trabajo de compilación que empezaste hace unas 2 horas. Hay mucho trabajo por hacer y aún así quieres una experiencia fluida. ¡Pero tu CPU puede manejar UNA tarea a la vez! Sobre una sola cosa. Entonces lo que haces es dividir las cosas y hacer una cola muy larga y cada uno recibe su parte y todos están felices. Excepto tú, porque todas las cosas se vuelven lentas y nada fluidas.

Entonces aceleras tu CPU para poder realizar más operaciones en la misma cantidad de tiempo. Pero como dijiste: consumo de calor y energía. Y ahí es donde llegamos a la parte de la materia prima. El silicio se vuelve más conductor a medida que se calienta, lo que significa que fluye más corriente a través del material a medida que lo calienta. Los transistores tienen un mayor consumo de energía a medida que los cambia más rápido. Además, las altas frecuencias empeoran la diafonía entre cables cortos. Como puede ver, el enfoque de acelerar las cosas conducirá a una "crisis". Mientras no tengamos mejores materias primas que el silicio o transistores mucho mejores, estaremos estancados donde estamos con la velocidad de un solo núcleo.

Esto nos lleva de vuelta al punto de partida. Hacer cosas en paralelo. Agreguemos otro núcleo. Ahora podemos hacer dos cosas a la vez. Así que enfriemos un poco las cosas y simplemente escribamos software que pueda dividir su trabajo en dos núcleos menos potentes pero más funcionales. Este enfoque tiene dos problemas principales (además de que necesita tiempo para que el mundo del software se adapte a él): 1. Hacer el chip más grande o hacer que el núcleo individual sea más pequeño. 2. Algunas tareas simplemente no se pueden dividir en dos partes que se ejecutan simultáneamente. Continúe agregando núcleos siempre que pueda encogerlos, o agrande el chip y mantenga a raya el problema del calor. Ah, y no nos olvidemos del cliente. Si cambiamos nuestros casos de uso, las industrias tienen que adaptarse. Vea todas las cosas "nuevas" y brillantes que se le han ocurrido al sector móvil. Por eso el sector móvil se considera tan crucial y todo el mundo quiere tenerlo en sus manos.

¡Sí, esta estrategia alcanzará sus limitaciones! E Intel lo sabe, por eso dicen que el futuro está en otra parte. Pero seguirán haciéndolo mientras sea barato, eficaz y factible.

Por último, pero no menos importante: la física. La mecánica cuántica limitará la contracción de los chips. La velocidad de la luz aún no es un límite, ya que los electrones no pueden viajar a la velocidad de la luz en el silicio, en realidad es mucho más lento que eso. Además, es la velocidad de impulso la que pone un límite estricto a la velocidad ofrecida por un material. Así como el sonido viaja más rápido en el agua que en el aire, los impulsos eléctricos viajan más rápido, por ejemplo, en el grafeno que en el silicio. Esto nos lleva nuevamente a las materias primas. El grafeno es excelente en cuanto a sus propiedades eléctricas. Sería un material mucho mejor para construir CPU; desafortunadamente, es muy difícil de producir en grandes cantidades.

información relacionada