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

110

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

Al hacer esta declaración, muchas personas señalan un artículo de 2005 llamado El almuerzo gratis ha terminado: 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 el software para aprovechar múltiples núcleos.

Algunas citas clave:

Estamos acostumbrados a ver que las CPU de 500MHz dan paso a las CPU de 1GHz que dan paso a las CPU de 2GHz, y así sucesivamente. Hoy estamos en el rango de 3GHz en 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 duros; la luz no se hace más rápida. El crecimiento eventualmente debe ralentizarse e incluso terminar.

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

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

... Multinúcleo se trata de ejecutar dos o más CPU reales en un chip.

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

Mi visión simplificada es "cada vez es más difícil agrupar más potencia de procesamiento en el mismo espacio" (debido a problemas con el calor, el consumo de energía, etc.). Esperaría que la conclusión sea "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 estamos escuchando más).

Pero parte de la solución parece ser arquitecturas multinúcleo. A menos que las computadoras crezcan en tamaño (que no lo han hecho), esta parece ser otra forma de decir "empacar más poder de procesamiento en el mismo espacio".

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

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

Nathan Long
fuente
44
en.wikipedia.org/wiki/Moore%27s_law vale la pena leer, ya que estamos hablando de dos cosas diferentes. La ley de Moore no se trata de la velocidad del reloj, se trata del conteo de transistores
Journeyman Geek
99
Supongamos que fue hace 30 años y las CPU funcionaban a 4.77MHz. ¿Por qué podría poner 1000 computadoras con CPU de 4MHz en la misma habitación a pesar de que era imposible obtener una CPU de 4GHz?
user253751
3
@NathanLong, pero aún es mucho más fácil obtener más espacio (para más computadoras) que tener una computadora más rápida.
user253751
55
Analogía: el motor de un automóvil solo puede fabricarse a tantas rpm, pero puede atornillar fácilmente dos.
OJFord

Respuestas:

143

Resumen

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

  • Aumento significativo en el uso de energía. El consumo de energía de la CPU aumenta rápidamente a medida que aumenta la velocidad del reloj: puede duplicar el número de núcleos que funcionan a una velocidad menor en el espacio térmico que se necesita para aumentar la velocidad del reloj en un 25%. Cuádruple por 50%.

  • Hay otras formas de aumentar la velocidad de procesamiento secuencial, y los fabricantes de CPU hacen un buen uso de ellas.


Voy a aprovechar en gran medida las excelentes respuestas a esta pregunta en uno de nuestros sitios de SE hermana. ¡Así que ve a votarlos!


Limitaciones de velocidad de 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 atravesar un circuito está limitado por la velocidad de la luz. Este es un límite difícil, y no se conoce una forma de evitarlo 1 . En gigahertz-relojes, nos estamos acercando a este límite.

    Sin embargo, todavía no estamos allí. 1 GHz significa un nanosegundo por marca de reloj. En ese tiempo, la luz puede viajar 30 cm. A 10 GHz, la luz puede viajar 3 cm. Un solo núcleo de CPU tiene aproximadamente 5 mm de ancho, por lo que nos encontraremos con estos problemas en algún lugar más allá de 10 GHz. 2

  • Retraso de conmutación

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

    Desafortunadamente, no estoy seguro acerca de los detalles, y no puedo proporcionar ningún número.

    Aparentemente, bombear más energía puede acelerar la conmutación, pero esto conduce a problemas de consumo de energía y disipación de calor. Además, más potencia significa que necesita conductos más voluminosos capaces de manejarlo sin daños.

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

    Este es el grande. Citando la respuesta de fuzzyhair2 :

    Los procesadores recientes se fabrican con tecnología CMOS. Cada vez que hay un ciclo de reloj, la potencia se disipa. Por lo tanto, mayores velocidades de procesador significan más disipación de calor.

    Hay algunas mediciones encantadoras en este 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 a Idontcare

    Podemos visualizar esto en el siguiente gráfico:

    Grafico
    Crédito a Idontcare

    Como puede ver, el consumo de energía (y el calor generado) aumenta extremadamente rápido a medida que la velocidad del reloj aumenta más allá de cierto punto. Esto hace que sea poco práctico aumentar sin límites 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 potencia proporcionalmente a la velocidad del reloj; el voltaje también debe aumentarse para mantener la estabilidad en relojes más altos. Esto puede no ser completamente correcto; siéntase libre de señalar las 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ía que preguntarle a la gente de Intel y AMD. Pero puede ver más 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 el tiempo de transmisión y los problemas de retraso de conmutación. Y, como puede ver en el gráfico, puede duplicar fácilmente el número 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 récord mundial actual de overclocking es apenas inferior a 9 GHz. Pero es un desafío de ingeniería importante hacerlo mientras se mantiene el consumo de energía dentro de límites aceptables. Los diseñadores en algún momento decidieron que agregar más núcleos para realizar más trabajo en paralelo proporcionaría un impulso más efectivo al rendimiento en la mayoría de los casos.

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

No es una desventaja en varios núcleos: se necesita más espacio físico para poner el núcleo extra. Sin embargo, los tamaños de proceso de la CPU se reducen constantemente, por lo que hay mucho espacio para colocar dos copias de un diseño anterior: la verdadera compensación no es poder crear núcleos individuales más grandes y complejos. Por otra parte, aumentar la complejidad del núcleo es algo malo desde el punto de vista del diseño: más complejidad = más errores / errores y errores de fabricación. Parece que hemos encontrado un medio feliz con núcleos eficientes que son lo suficientemente simples como para no ocupar demasiado espacio.

Ya hemos alcanzado un límite con la cantidad de núcleos que podemos colocar en un solo dado en los tamaños de proceso actuales. Podríamos alcanzar un límite de hasta qué punto podemos reducir las cosas pronto. ¿Qué es lo siguiente? ¿Necesitamos más? Eso es difícil de responder, desafortunadamente. ¿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: es decir, solo ayudan cuando el software que se ejecuta en ellos puede hacer uso de ellos.

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

La velocidad del reloj es realmente solo 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 la cantidad de instrucciones que puede 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, algunos 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 al aumentar el número de instrucciones que puede ejecutar por segundo. ¿Cómo? Bueno, podría hacer que una instrucción sea más eficiente; tal vez la división ahora solo toma dos ciclos. Luego hay instrucciones de canalización . Al dividir cada instrucción en varias etapas, es posible ejecutar instrucciones "en paralelo", pero cada instrucción aún tiene un orden secuencial bien definido, correspondiente a las instrucciones anteriores y posteriores, por lo que no requiere soporte de software como multinúcleo hace.

Hay otra forma: instrucciones más especializadas. Hemos visto cosas como SSE, que proporcionan instrucciones para procesar grandes cantidades de datos a la vez. Hay nuevos conjuntos de instrucciones que se introducen constantemente con objetivos similares. Estos, nuevamente, requieren soporte de software y aumentan la complejidad del hardware, pero proporcionan un buen aumento de rendimiento. Recientemente, hubo 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 No sin profundizar en la física cuántica teórica, de todos modos.

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 solo 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.

Mover
fuente
22
Además, en muchas aplicaciones, el cuello de botella no es el tiempo de cálculo, sino el tiempo de pérdida para recuperar datos de la RAM (o, Dios no lo permita, del disco); Por lo tanto, otra aceleración importante proviene de cachés de procesador más grandes y más rápidos.
Matteo Italia
2
@MatteoItalia Sí. Y también hay mejoras de predicción de sucursales, y probablemente mucho más que no conozco. Fuera del procesador, también tenemos buses más rápidos, memoria más rápida, discos más rápidos y protocolos asociados, etc.
Bob
2
Usted mencionó que los problemas relacionados con el "límite duro" de la velocidad de la luz ocurrirán a "más allá de 20 GHz". Tus cálculos no son correctos; las señales eléctricas viajan a velocidades inferiores a la velocidad de la luz, dependiendo de la geometría del cable.
Giulio Muscarello
55
No utilice "exponencial" cuando haya palabras completamente más correctas para esta relación (cuadrática, cúbica, etc.) ...
Oliver Charlesworth
77
@OliCharlesworth Lea la nota al pie de página. Esta es precisamente la razón por la cual está la nota al pie de página, y por qué tengo referencias a ella en todas partes exponential. Este es un uso perfectamente válido de la palabra, y sería tangencial al punto de esta respuesta quedar empantanado en detalles matemáticos. Si realmente quiere intentar "corregirlo", no dude en sugerir una edición. No dependerá de mí si se acepta o no, siempre y cuando no cambies significativamente el significado.
Bob
14

La física es física. No podemos seguir empacando más transistores en espacios cada vez más pequeños para siempre. En algún momento se vuelve tan pequeño que lidias con basura cuántica extraña. En algún momento no podemos empacar el doble de transistores en un año de lo que solíamos hacerlo (de eso se trata la ley de Moore).

Las velocidades de reloj crudas no significan nada. Mi antiguo Pentium M era aproximadamente la mitad de la velocidad de reloj de una CPU de escritorio contemporánea (y, sin embargo, en muchos aspectos más rápido ), y los sistemas modernos apenas se están acercando a las velocidades de los sistemas hace 10 años (y son claramente más rápidos). Básicamente, 'solo' aumentar la velocidad del reloj no proporciona ganancias reales de rendimiento en muchos casos. Puede ayudar en algunas operaciones de subproceso único, pero es mejor gastar el presupuesto de diseño en una mejor eficiencia en términos de todo lo demás.

Múltiples núcleos le permiten hacer dos o más cosas a la vez, por lo que no necesita esperar a que una cosa termine para la siguiente. En el corto plazo, simplemente puede insertar dos núcleos existentes en el mismo paquete (por ejemplo, con los Pentium D y su MCM, que era un diseño de transición) y tiene un sistema que es el doble de rápido. La mayoría de las implementaciones modernas comparten cosas como un controlador de memoria, por supuesto.

También puede construir de manera más inteligente de diferentes maneras. ARM hace Big-Little: tener 4 núcleos de baja potencia 'débiles' 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 overclockear núcleos específicos (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 que tenga 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 'solo' seguir aumentando la velocidad del reloj.

En algún momento, 'más' núcleos pueden no funcionar, aunque las GPU tienen cientos de núcleos.

Los multinúcleos como tales permiten a las computadoras trabajar de manera más inteligente en todas estas formas.

Journeyman Geek
fuente
1
Cabe señalar que los núcleos de GPU están diseñados para un propósito muy específico, a diferencia de los núcleos de CPU, que son más de un propósito general. También se debe tener en cuenta que las placas de tarjeta de video son significativamente más grandes que las CPU (lo que significa que incluso si los núcleos no están utilizando todo el espacio de la placa, todavía tienen MUCHO más espacio para disipar el calor).
user2366842
3
cierto, pero ese es un ejemplo en el que escalas los núcleos en una cantidad extrema. Probablemente vuelva a visitar esta respuesta por la mañana
Journeyman Geek
"simplemente puede introducir dos núcleos existentes en el mismo paquete". Pero cómo lo logran sin usar más espacio para los núcleos adicionales ¿Cómo? ¿Magia? Unicornios Cachorros? (Por tu avatar, sospecho que este último)
Ese chico brasileño
Los Pentium D fueron básicamente en.wikipedia.org/wiki/Pentium_D
Journeyman Geek
66
wierd quantum crap+ 1 por eso solo!
Dave
9

Respuesta simple

La respuesta más simple a la pregunta.

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

en realidad se encuentra dentro de otra parte de su pregunta:

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

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

Respuesta compleja

Un "núcleo" es la parte de la computadora que realmente procesa instrucciones (sumar, multiplicar, "e" ing, etc.). Un núcleo solo puede ejecutar una sola instrucción a la vez. Si desea que su computadora sea "más potente", hay dos cosas básicas que puede hacer:

  1. Aumente el rendimiento (aumente la velocidad del reloj, disminuya el tamaño físico, etc.)
  2. Usa más núcleos en la misma computadora

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

Hay una limitación importante para el n. ° 2: debe poder dividir su problema en múltiples problemas independientes y luego combinar la respuesta. En una computadora personal moderna, esto no es realmente un problema, ya que hay muchos problemas independientes que compiten por tiempo de cálculo con el núcleo (s) de todos modos. Pero al hacer problemas computacionales intensivos, los núcleos múltiples solo ayudan realmente si el problema es susceptible de concurrencia.

Jason Brubaker
fuente
'múltiples núcleos es como tener múltiples "computadoras" en el mismo dispositivo ". Bien, pero mi confusión fue, ¿cómo encajas a todos allí? Pensé que "no podemos ir más rápido" era un síntoma de "no podemos reducir las cosas mucho más".
Nathan Long
Múltiples núcleos OCUPAN más espacio, las fichas se hacen más grandes La carga se ha trasladado de la CPU al ingeniero de software ... para que realmente funcione más rápido en uno de estos cpus gigantes de múltiples núcleos, el software debe escribirse de manera que pueda reducir su trabajo a la mitad y hacer las dos mitades de forma independiente.
James
1
Una respuesta corta es que el consumo de energía es proporcional al cubo de la velocidad del reloj. Con señales viajando distancias más largas, la ilusión de un solo hilo se vuelve más difícil de mantener. La respuesta detallada: amazon.com/…
Rob
6

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

Enfrentan las mismas limitaciones físicas, pero cambiar al diseño multinúcleo nos da un respiro antes de que peguemos en algunos de ellos. Al mismo tiempo, surgen otros problemas causados ​​por esas limitaciones, pero son más fáciles de superar.

Hecho 1: El consumo de energía y el calor emitido crecen más rápido que la potencia computacional. Empujar una CPU de 1 GHz a 2 GHZ aumentará el consumo de energía de 20 W a 80 W, lo mismo con calor disipado. (Acabo de inventar estos números, pero así es como funciona)

Hecho 2: Comprar una segunda CPU y ejecutar ambas a 1 GHz duplicaría su potencia de cálculo. Dos CPU que funcionan a 1 GHz podrían procesar la misma cantidad de datos que una CPU de 2 GHz, pero cada una consumiría solo 20 W de energía, es decir, 40 W en total.

Beneficio: Duplicar el número de CPU en lugar de la frecuencia de reloj nos ahorra algo de energía y ya no estamos tan cerca de la "barrera de frecuencia" como antes.

Problema: debe dividir el trabajo entre dos CPU y combinar los resultados más adelante.

Si puede resolver este problema en un tiempo aceptable y utilizando menos energía de la que acaba de ahorrar, entonces se habrá beneficiado gracias al uso de múltiples CPU.

Ahora solo tiene que fusionar dos CPU en una CPU de doble núcleo y ya está en casa. Esto es beneficioso porque los núcleos pueden compartir algunas partes de la CPU, por ejemplo, caché ( respuesta relacionada ).

gronostaj
fuente
Seguimos golpeando las limitaciones físicas en 1000 formas diferentes, el tamaño de la matriz (para núcleos múltiples que conduce a un proceso de fabricación más pequeño), el tamaño del mobo (para múltiples CPU), los amplificadores extraídos a través de las trazas (ambos). no es como si pudieras poner 2 cpus en un m-atx o 4 y memoria en una placa atx y esos diseños requieren DECADES para cambiar. Estoy de acuerdo con el resto.
Rostol
@Rostol Ese es un buen punto, he editado la respuesta.
gronostaj
5

Larga historia corta: acelerar los núcleos individuales ha alcanzado sus límites, por lo que seguimos reduciéndolos y agregando más de ellos, hasta que esto alcance sus límites 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 real, realmente trabajando).

Creo que este problema es multidimensional y tomará algo de escritura para pintar la 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 la materia prima, 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 obtener más rendimiento para el usuario?
  5. Casos de uso y percepción del usuario sobre el rendimiento.

Puede haber muchos más. Una CPU multipropósito está tratando de encontrar una solución para mezclar todos estos factores (y más) en un chip de producción masiva que se adapte al 93% de los sujetos en el 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 usa la CPU.

Pregúntese cuál es su aplicación habitual? Tal vez: 25 pestañas de Firefox, cada una reproduce algunos anuncios en segundo plano, mientras escucha música, todo mientras espera su trabajo de construcción que comenzó hace unas 2 horas para terminar. Eso es mucho trabajo por hacer, y aún así quieres una experiencia fluida. ¡Pero su CPU puede manejar UNA tarea a la vez! En una sola cosa. Entonces, lo que haces es dividir las cosas y hacer una larga cola y cada uno recibe su parte y todos están felices. Excepto por ti, porque todas las cosas se vuelven lentas y no se suavizan en absoluto.

Así que aceleras tu CPU para realizar más operaciones en la misma cantidad de tiempo. Pero como dijiste: calor y consumo de 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. También las frecuencias altas empeoran la diafonía entre cables cortos. Como puede ver, el enfoque de acelerar las cosas conducirá a un "colapso". Mientras no tengamos mejores materias primas que el silicio o transistores mucho mejores, estamos atrapados donde estamos con una velocidad de núcleo único.

Esto nos lleva de vuelta a donde empezamos. Hacer cosas, en paralelo. Agreguemos otro núcleo. Ahora podemos hacer dos cosas al mismo tiempo. Así que vamos a enfriar un poco las cosas y simplemente escribamos un 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. Amplíe el chip o reduzca el núcleo individual. 2. Algunas tareas simplemente no se pueden dividir en dos partes que se ejecutan simultáneamente. Siga agregando núcleos siempre que pueda reducirlos, o agrande el chip y mantenga a raya el problema del calor. Ah, y no olvidemos al cliente. Si cambiamos nuestros casos de uso, las industrias tienen que adaptarse. Vea todas las cosas "nuevas" brillantes que el sector móvil ha creado.

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

Por último, pero no menos importante: la física. La mecánica cuántica limitará la reducción de viruta. 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 lenta que eso. Además, es la velocidad de impulso la que pone el límite a la velocidad que ofrece 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 lleva de vuelta 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 gran cantidad.

paradoja
fuente
2

Digamos (como un ejemplo poco realista, pero que aún debe transmitir) que tienes una CPU que funciona a 100F. La forma en que generalmente funciona el multinúcleo es tomando la frecuencia de reloj de la CPU que está funcionando a 100F y bajando, bajando así un poco la velocidad. Debido a que ya no está funcionando tan caliente, pueden dejar caer un segundo, tercero o incluso cuarto junto a él sin afectar significativamente la temperatura general de la CPU y obtener los beneficios del multinúcleo. Obviamente, esto conlleva cierta sobrecarga, ya que los núcleos aún deben controlarse desde un lugar, por un núcleo. Cuantos más núcleos agregue, más gastos generales habrá. En cuanto a los núcleos individuales, cuanto más aumenta la velocidad en ellos, más calor generan. Obviamente, esto tiene limitaciones físicas (es decir, después de cierto punto, comienza a ser perjudicial para el rendimiento,

A medida que pasa el tiempo, han encontrado formas de disminuir el tamaño físico de las CPU, razón por la cual todavía no hemos encontrado el requisito de necesitar más espacio, sin embargo, por ejemplo, las CPU de 16 núcleos realmente no existen (en el tiempo de escritura) fuera del equipo de calidad de servidor debido a las limitaciones de tamaño físico, ya que las CPU de calidad de servidor son significativamente más grandes físicamente que las de calidad de consumidor estándar.

user2366842
fuente
2

CPU = motor de automóvil: es más fácil hacer un automóvil más potente con 16 válvulas, es decir, un lamborghini, que un automóvil de altas rpm que tendría una válvula / cilindro gigante a 100 000 rpm.

Las razones son físicas y químicas, el silicio necesita ser reemplazado por un combustible de cohete computacional para cambiar el equilibrio entre el número de núcleos y la velocidad del núcleo.

predatflaps
fuente
2

Diría que la restricción principal en los límites de potencia computacional está relacionada principalmente con el límite de la velocidad con la que podemos mover el electrón a través de un circuito ( velocidad de deriva de electrones ligeros ). Hay muchos más factores como el que mencionaste.

Agregar núcleos adicionales no haría que el procesador fuera más rápido, aunque le permitiría procesar más en la misma cantidad de tiempo.

La Ley de Moore es una lectura muy interesante e informativa. Esta cita en particular es relevante aquí:

También se podría limitar el rendimiento teórico de una "computadora portátil" bastante práctica con una masa de un kilogramo y un volumen de un litro. Esto se hace considerando la velocidad de la luz, la escala cuántica, la constante gravitacional y la constante de Boltzmann, dando un rendimiento de 5.4258 × 10 50 operaciones lógicas por segundo en aproximadamente 10 31 bits.

jredd
fuente
2
Por cierto, los electrones se mueven muy lentamente ("velocidad de deriva"), en el orden de milímetros por segundo IIRC. Te estás refiriendo más a la velocidad a la que se propaga el campo eléctrico .
Bob
2
Sabía que no debía atreverme a actuar como si entendiera la física en lo más mínimo. :) Gracias por corregirme / informarme sobre esto.
jredd
Además, las velocidades de reloj reales donde la velocidad de propagación tendrá un efecto significativo son más de alrededor de 10+ GHz. Hay otras razones por las que los procesadores modernos prefieren núcleos múltiples en lugar de relojes más altos.
Bob
1

Larga historia aún más corta:

Realmente no necesitamos CPU más rápidas. Fuera de unos pocos usos altamente especializados *, la CPU no ha sido el cuello de botella durante años: todos los bits periféricos como la memoria, el almacenamiento y la red generalmente hacen que la CPU espere millones de ciclos de reloj durante los cuales puede hacer otras cosas. Un segundo núcleo puede hacer más "otras cosas", produciendo así una percepción de mayor rendimiento para el usuario.

Muchos dispositivos móviles, computadoras portátiles, etc. acelerarán la CPU para una mejor duración de la batería y temperaturas más frías. No hay muchos incentivos para desarrollar un núcleo ARM de 3.5GHz si su cliente principal lo ejecuta a 1.3GHz.

  • esos usos especializados no compran lo suficiente para justificar el desarrollo de un núcleo de 5 GHz. Tampoco les importa el calor o la energía: compre el más rápido disponible, overclockeándolo y atorníllelo a un disipador térmico refrigerado por agua del tamaño de una tostadora.
Peter
fuente
1
No es "percepción", sino "mejor latencia". Creo que este es uno de los principales problemas que tenemos; un rendimiento de un solo subproceso fuerte a toda costa mentalidad. Los sistemas operativos de consumo aún no están orientados en tiempo real, ni fundamentalmente orientados a la concurrencia o paralelismo.
Rob
@peter Usted hace un muy buen punto, y gracias por explicarlo. Es algo que necesito recordar como programador. :) Sin embargo, todavía es un problema secundario para los propósitos de esta pregunta. Mi pregunta era por qué no podemos obtener velocidades de reloj más rápidas; Su respuesta es sobre por qué no lo necesitamos actualmente.
Nathan Long
1
@NathanLong "no se puede" y "no se necesita" están vinculados. No puede obtener procesadores más rápidos porque nadie está dispuesto a invertir los mil millones o cinco necesarios para desarrollarlo (de todos modos, 5 GHz probablemente está superando los límites físicos). Nadie está dispuesto a invertir porque no hay un mercado realista cuando las velocidades generales del procesador están disminuyendo: algunos equipos de escritorio de fabricación actual están en la clase de 1.5GHz (hace 10 años) porque es más barato, más fresco y lo suficientemente rápido para ese mercado segmento.
Peter
1

Respuesta corta y simple:

¿Por qué no pasar de 1 camión que transporta mercancías a 100 camiones que transportan 100 veces más, enfrenta las mismas limitaciones físicas que pasar de 1 camión a 100 mph a 1 camión a 10,000 mph?

Responda esa pregunta, y su pregunta también será respondida. El concepto es más o menos el mismo.

Alex D
fuente
1

Creo que otro factor es la temperatura. Si aumenta la frecuencia del reloj, la temperatura central aumenta. Si agrega más núcleos, a pesar de que el consumo de energía aumenta, esto se distribuye entre los núcleos, por lo que la temperatura se mantiene igual (como si agrega dos líquidos calientes, a la misma temperatura, entre sí, la temperatura se mantiene igual) )

Otra razón es que aumentar la frecuencia del reloj tiende a aumentar el consumo de energía en un cuadrado del factor que aumenta la frecuencia (dependiendo de las otras barreras que esté golpeando en un punto dado). Por lo tanto, aumentar la frecuencia del reloj aumenta el consumo de energía en un cuadrado, mientras que agregar más núcleos solo lo aumenta linealmente.

Morty
fuente
0

La respuesta a por qué no "agregar más núcleos" enfrenta las mismas limitaciones físicas que "hacer que la CPU sea más rápida" es que un sistema multinúcleo enfrenta exactamente las mismas limitaciones que una CPU de un solo núcleo. Hemos llegado a un punto en el que realmente no tenemos una opción para hacer que un solo sistema central vaya más rápido, por lo que lo hicimos para que podamos hacer más cosas a la vez. Los desafíos de tamaño y coordinación son actualmente más fáciles de resolver que ir más rápido. La desventaja es que si una tarea no se puede dividir en pedazos, es posible que no terminemos yendo mucho más rápido que un solo sistema central.

Philip Tinney
fuente
0

No puede hacer que una CPU sea más rápida simplemente metiendo más puertas. Finalmente, las instrucciones deben ejecutarse, y cada instrucción requiere varias operaciones de "cambio". Existen límites físicos fundamentales (mecánica cuántica: el Principio de incertidumbre) que hacen que sea muy difícil aumentar la "velocidad de reloj" de una CPU más allá de la velocidad de los sistemas de gama alta actuales.

Daniel R Hicks
fuente