84 votos

¿Por qué los teléfonos Android tienen más núcleos que los ordenadores?

Los portátiles suelen tener como máximo cuatro núcleos, y los de doble núcleo son probablemente más comunes. Recientemente he cambiado de quadcore a dualcore y puedo confirmar que hay un número limitado de casos de uso para quadcore, incluso con tareas intensivas de CPU.

En cambio, en los teléfonos móviles, los cuatros núcleos, los hexacuerpos y los octacuerpos parecen ser comunes. ¿Por qué? ¿Qué tareas pueden utilizarlos?

Entiendo que big.LITTLE puede ser parte de la respuesta. Es decir, el principal beneficio de tantos núcleos no es la capacidad de utilizarlos todos simultáneamente, sino el uso de un núcleo con un consumo de energía apropiado para la carga de trabajo actual. Sin embargo, por ejemplo, el Snapdragon 625 tiene ocho núcleos Cortex-A53, lo que no parece ser el caso de big.LITTLE.

Quizá la arquitectura ARM tenga un punto más bajo de rendimiento óptimo por vatio. Es decir, tener un solo núcleo ajustado para un rendimiento óptimo por vatio da como resultado un rendimiento menor en ARM que en Intel. Por lo tanto, se utilizan más núcleos para obtener el mismo rendimiento. Esto es sólo una hipótesis.

Pero incluso en este caso, no veo qué carga de trabajo puede utilizar eficientemente, digamos, ocho núcleos en un teléfono móvil. En los portátiles, puedo imaginar algunos como la compilación completa (no incremental) de un proyecto. ¿Pero en los teléfonos?

  • Los juegos pueden ser muy exigentes en cuanto a rendimiento, pero normalmente requieren el rendimiento de la GPU en lugar del de la CPU, ¿no es así?
  • En teoría, los núcleos múltiples podrían acelerar la compilación de AOT de Android Lollipop/Marshmallow al instalar o al actualizar (es decir, la fase "Optimización de aplicaciones 3/121"). Sin embargo, no estoy seguro de que esto pueda utilizar múltiples núcleos. Por lo que recuerdo del código, sólo se compila una app a la vez, pero quizás haya algún paralelismo dentro del propio proceso de compilación.
  • También Android 7+ podría utilizar múltiples núcleos al compilar. Pero dado que, según se informa, compila cuando está en reposo y cargando, el beneficio parece ser más bien mínimo. Al menos cuando uno carga el teléfono durante la noche - realmente no me importa si tarda 30 minutos o dos horas en tal escenario.

0 votos

Como señalé en mi respuesta, ten en cuenta que parece que estás viendo las cosas al revés. Muchos núcleos/ejecución en paralelo es la norma, no es tu teléfono el que es una anomalía por tener muchos núcleos, es la CPU del PC la que es una anomalía.

4 votos

Tu pregunta es errónea, los PC pueden tener más núcleos que los teléfonos. intel.com/content/www/us/es/productos/procesadores/core/serie x/ Y eso sin contar con las máquinas de clase servidor, que pueden tener docenas o incluso cientos de núcleos. (Y algunos superordenadores llegan a tener miles de núcleos).

3 votos

@JAB Claro, pero no hablo de número máximo de núcleos, sino de número típico. En el caso de los portátiles, más de cuatro núcleos es bastante infrecuente, pero podrías encontrar alguna excepción, quizá con Xeon. Para los móviles, incluso los octacores parecen ser relativamente comunes.

63voto

Guillermo Gomez Puntos 423

Como ya ha señalado, el big.LITTLE estrategia combinada (técnicamente, HMP , Multiprocesamiento heterogéneo clusters) es la razón principal de tantos (y a veces abrumadores) núcleos. Un dispositivo móvil suele encontrarse con múltiples escenarios, tanto de carga pesada como de carga ligera.

Un ejemplo extremo de clase de consumidor es el Helio X20 de MediaTek, que tiene 2 núcleos A72 orientados al rendimiento, 4 núcleos A53 equilibrados y 4 núcleos A35 de bajo consumo. Esto es muy flexible en diferentes casos de uso. Sin embargo, creo que 8 núcleos 2 racimos suelen ser suficientes.

También hay otro ejemplo similar al de los ordenadores de sobremesa, la serie Snapdragon 800 de Qualcomm (S 800, S 801 y S 805). Sólo hay 4 núcleos de la misma microarquitectura en cada SoC, con 2 relojes más altos y 2 más bajos. Qualcomm fabricó estos SoC porque tenía mucha confianza en su propia microarquitectura (Krait 400 y Krait 450).

En el caso de los juegos, aunque aparentemente exijan el rendimiento de la GPU en lugar del de la CPU, siguen suponiendo una gran carga para la CPU. Una GPU no puede trabajar sola sin que otra cosa le suministre datos para procesar, y ése es uno de los principales trabajos que hace la CPU mientras juegas. En la mayoría de los casos, la GPU sólo renderiza los gráficos, mientras que todas las demás tareas, como la carga de datos, recursos y activos, y el cálculo de las mecánicas del juego, como el sistema, el entorno y la física, las realiza la CPU. No observarás una mayor velocidad de fotogramas si mejoras tu GPU y te quedas con una CPU de gama baja.

Una razón secundaria es cómo utiliza Android los recursos de la CPU . Android prácticamente crea su propio entorno de aplicación. No utiliza más que códigos (y APIs) de Java, pero tiene su propia máquina virtual llamada Dalvik, que luego fue sustituida por ART (API Level 21). Los APKs tienen sus códigos ejecutables en un formato "neutral", muy parecido a .class en Java. Antes de ejecutarlos, los códigos se compilan una vez más en las instrucciones nativas de la máquina [1] . El proceso de compilación es multihilo y puede utilizar varios núcleos para aumentar el rendimiento.
Y cuando una aplicación se está ejecutando, hay otros procesos y mecanismos (como el recolector de basura) que se ejecutan junto con la aplicación o en paralelo a ella. Más núcleos pueden permitir que los procesos de apoyo se ejecuten de manera más eficiente, así como la aplicación principal.
1. Si utilizas un identificador de tipo de archivo, verás que los archivos dex "optimizados" están en formato ELF, mientras que los archivos dex "neutros" están simplemente en un formato propio.

Otra razón menor es que Los núcleos ARM no pueden trabajar tan rápido como un chip Intel x86 . La microarquitectura Intel x86 se remonta a 1976, cuando el Intel 8086 El chip comenzó a diseñarse, lo que significa que el x86 se ha desarrollado durante mucho tiempo. Un solo núcleo moderno de gama alta ARM Cortex-A73 es tan potente como un núcleo Intel Clarkdale, teniendo Core i5-660 como ejemplo (GeekBench, single-core). Esto se debe a que x86 es un CISC microarquitectura mientras que ARM es una RISC microarquitectura. Seguro que no quieres un teléfono que se vuelva lento con sólo dos o más aplicaciones activas. Más núcleos ayudarán a aliviar la presión. Por eso los SoC de doble núcleo son relativamente populares sólo en los relojes inteligentes. ¿Quién necesita rendimiento en un reloj inteligente?

Es interesante, un mayor número de núcleos supondrá menos energía que un solo núcleo con la misma carga . La relación entre la frecuencia de la CPU y el consumo de energía es más que lineal, por lo que duplicar la frecuencia siempre supondrá demandar más del doble, o incluso 3 ó 4 veces más energía, mientras que se obtiene menos del doble de rendimiento (debido a otras limitaciones de recursos como la caché). Así que 4 núcleos pueden superar fácilmente a un solo núcleo con la misma carga, proporcionando un mejor rendimiento y demandando simultáneamente menos energía.

Más información:

0 votos

Los comentarios no son para ampliar la discusión; esta conversación ha sido trasladado al chat .

1 votos

Recuerdo haber leído o visto en algún sitio que el kernel de Linux había trabajado originalmente en un buen soporte multinúcleo con un enfoque en los superordenadores, hace muchos años, y estos esfuerzos resultaron útiles "en el futuro" (ahora) para los smartphones, como una especie de "accidente"

3 votos

Esta respuesta no parece responder realmente a la pregunta, a pesar de ser aceptada. Esta respuesta parece responder a "¿Por qué podría querer núcleos adicionales en mi teléfono?", que no es la pregunta en cuestión. No explica la diferencia entre PC y teléfono. Los puntos dados sobre por qué un teléfono puede querer más núcleos se aplican también a los ordenadores de sobremesa, especialmente los puntos sobre los juegos.

15voto

JellicleCat Puntos 509

La razón es tan simple como complicada.

La respuesta corta es "porque el mercado de la telefonía móvil nunca ha sido ni es impulsado por Intel".

La respuesta es demasiado larga para resumirla aquí, pero el concepto básico es que Intel ha dominado el mercado del PC durante años con todos los medios posibles, hasta el punto de pagar y corromper (y ser multado por ello) para que sus CPUs sean la primera y única opción para los fabricantes de PC.

Tener el control total del mercado ha permitido a Intel inflar los precios de las CPUs mientras decidía artificialmente qué características y cuánta potencia de procesamiento debían querer los usuarios, y si analizas un poco la historia de Intel te darás cuenta de que su principal fuerza está básicamente en el aumento de la frecuencia de las CPUs, por lo que casi nunca intentó hacer algo realmente inteligente o innovador; y no lo necesitaba, porque simplemente puede decir a la gente "no necesitáis más núcleos, pero tengo esta nueva y jugosa CPU que funciona 100 MHz más rápido". Al mismo tiempo, podría vender CPUs multinúcleo en el mercado de servidores a precios absurdamente altos (porque los servidores siempre han <strong>necesario </strong>toneladas de potencia en paralelo, hasta el punto de que hay una tendencia actual a intentar realizar servidores que utilicen... ¿adivina qué? Cientos de CPUs de teléfonos baratos trabajando en paralelo)

Esto, a su vez, se ha reflejado en la comunidad de desarrolladores, que nunca se ha puesto al día con la importancia de la programación paralela, de manera que muchos, si no la mayoría, nunca se han preocupado de utilizar más de un hilo a la vez -o, para expresarlo de una manera no técnica, de hacer que su software haga más de una tarea a la vez-. Lo cual, por cierto, tiene sentido cuando el 99% de tu base de clientes tiene dos núcleos como máximo. Lamentablemente, esto ha llevado a la leyenda de que los algoritmos paralelos son realmente difíciles de implementar y que sólo se aplica a un pequeño subconjunto de problemas.

En cambio, finalmente, el mercado de los móviles nunca ha visto el éxito de Intel; más bien al contrario, ya que ocurre la mayoría de las veces que Intel intenta hacer algo diferente de la arquitectura X86 habitual. Así que, a falta de influencia y control del mercado, los demás productores de CPUs han ido en la dirección que ha sido la normalidad durante años fuera del mercado de los PC: la computación en paralelo.

12 votos

¿Estás seguro de que estás respondiendo la pregunta correcta ?

2 votos

@iBug Obviamente, sí. Si alguien escoge una oveja blanca y una oveja azul y pregunta "¿por qué la oveja blanca no es azul como todas las demás?" el problema al que se enfrenta el OP es pensar que una oveja blanca es una excepción, mientras que la verdad es todo lo contrario.

2 votos

¿Hmm? Creo que se necesita más inteligencia para hacer un núcleo rápido que para hacer un núcleo lento y luego Ctrl-C/Ctrl-V. Recuerdo haber leído una entrevista en la que se discutía la dificultad de Intel para acelerar más las CPUs y el informático dijo "no quiero más núcleos, quiero núcleos más rápidos", y el tipo de Intel dijo algo así como "núcleos más rápidos es lo que quieres, pero más núcleos es lo que conseguirás".

9voto

David Schwartz Puntos 254

Se dan dos factores, uno muy práctico y otro histórico.

La razón práctica es el uso de arquitecturas mixtas en los teléfonos. El consumo de energía es crítico para los teléfonos y éstos pasan mucho tiempo en modos en los que requieren muy poco rendimiento. Tiene sentido tener algunos núcleos optimizados para un consumo de energía mínimo cuando se necesita poco rendimiento y tener otros núcleos optimizados para ofrecer el máximo rendimiento cuando se necesita.

La otra razón es en gran medida histórica. Hasta 2005 aproximadamente, las CPU de sobremesa eran todas de un solo núcleo. Mejorar el rendimiento de las CPU de sobremesa consistía casi exclusivamente en fabricar un núcleo que pudiera ejecutar tantas instrucciones por segundo como fuera posible. Incluso hoy en día, gran parte del software de sobremesa no puede aprovechar al máximo los múltiples núcleos, por lo que muchos preferirían una CPU de 4 núcleos a una de 8 con núcleos un 20% más lentos.

Para obtener el máximo rendimiento posible de un solo núcleo se necesitan grandes cantidades de espacio en la CPU. Un espacio que, de otro modo, se podría utilizar para proporcionar más núcleos. Por eso las nuevas CPUs Kaby Lake de Intel tienen un máximo de 4 núcleos y la gente las compra porque cada núcleo es más rápido que los de su predecesor. Para muchos, son una mejora incluso de las CPU con un mayor número de núcleos.

Con el tiempo, se espera ver mucho más software de escritorio totalmente optimizado para soportar más núcleos. A medida que esto ocurra, las compensaciones de ingeniería comenzarán a favorecer más núcleos en lugar de núcleos más rápidos en los ordenadores de sobremesa. Aunque es casi seguro que los núcleos seguirán siendo más rápidos, se empezará a ver que la gente prefiere una CPU de 8 núcleos a una de 4, aunque cada núcleo sea un 20% más lento. Los diseñadores de chips seguirán al mercado.

5voto

kibitzer Puntos 2015

Es crucial que un teléfono sea capaz de proporcionar potencia de cálculo en ráfagas cortas (necesitamos que ciertas aplicaciones sean rápidas), pero también que evite el sobrecalentamiento (la disipación del calor es mucho más difícil en los teléfonos que en los portátiles o los PC). Para lograrlo, los arquitectos diseñan los teléfonos para que utilicen un solo núcleo cuando la carga de trabajo es ligera y proporcionen núcleos adicionales para aumentar el rendimiento cuando sea necesario. Si los teléfonos utilizaran menos núcleos grandes, el sobrecalentamiento se convertiría en un problema incluso cuando la carga de trabajo es bastante ligera.

Fuente: Un curso de arquitectura de ordenadores a nivel de posgrado.

0 votos

A decir verdad, la capacidad de proporcionar potencia de cálculo (si es lo que se entiende por energía ) en ráfagas cortas es crucial para el escritorio también. Por eso tienen TurboBoost en los chips de Intel.

0 votos

Sí, me refería a la potencia de cálculo. Es cierto que todos los dispositivos que pueden esperar tener una carga de trabajo en ráfagas en algún momento (incluidos los teléfonos y los ordenadores de sobremesa) tienen que ser capaces de manejarla. La principal diferencia es la disipación del calor.

0 votos

Estoy de acuerdo con lo que has dicho, sólo quería señalar que la carga de trabajo en ráfagas no es específica de los teléfonos.

2voto

t.rathjen Puntos 88

En primer lugar, la máquina virtual Java puede beneficiarse históricamente de los núcleos múltiples más que el típico software de escritorio. Incluso si escribes una aplicación de un solo hilo en Java, se ejecutará más rápido en un multinúcleo porque la mayor parte del código del recolector de basura se ejecutará junto con tu aplicación.

En segundo lugar, hay muchas cosas en segundo plano en tu teléfono: actualizaciones automáticas, descargas de anuncios, software antivirus, gestión del módulo GSM, etc. En un portátil, todas estas tareas apenas mantendrían ocupado un núcleo, pero los núcleos ARM son mucho menos potentes, por lo que es posible que quieras tener al menos un par de ellos dedicados a tareas en segundo plano si quieres un sistema con capacidad de respuesta.

Por último, está el marketing. No hay muchos usuarios capaces de evaluar si se beneficiarían de 8 núcleos, pero un smartphone de 8 núcleos suena ciertamente más caro que uno de 2 o 4 núcleos.

2 votos

Sigo viendo declaraciones en la línea de "los núcleos ARM son mucho menos potentes", ¿qué significa eso exactamente? ¿Tienen menos velocidad de reloj?

2 votos

@Abdul menos operaciones por segundo. Los chips x86 pueden ejecutar varias operaciones a la vez, por lo que superan a ARM incluso para la misma velocidad de reloj. Consulta esta comparación El mejor chip ARM (GT-I9100) es unas 10 veces más lento que el mejor chip x86 (i7-2920XM).

0 votos

¿Es "operaciones por segundo" sinónimo de FLOPS?

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X