Las computadoras portátiles generalmente tienen como máximo cuatro núcleos, y los núcleos duales son probablemente más comunes. Recientemente cambié 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.
Por otro lado, en los teléfonos móviles, los quadcores, hexacores y octacores 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 usarlos todos simultáneamente, sino usar un núcleo con un consumo de energía adecuado para la carga de trabajo actual. Sin embargo, por ejemplo, el Snapdragon 625 tiene ocho núcleos Cortex-A53, lo que no parece ser un caso para big.LITTLE.
Quizás la arquitectura ARM tiene 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 más bajo en ARM que en Intel. Por lo tanto, se utilizan más núcleos para ofrecer el rendimiento. Esto es solo una hipótesis.
Pero incluso en este caso, no veo qué carga de trabajo puede usar de manera eficiente, digamos, ocho núcleos en un teléfono móvil. En las computadoras portátiles, puedo imaginar algunos como la compilación completa (no incremental) de un proyecto. Pero en los teléfonos?
Como ya ha señalado, la estrategia de combinación big.LITTLE (técnicamente, HMP , clústeres heterogéneos de procesamiento múltiple ) es la razón principal de tantos (ya veces abrumadoramente muchos) núcleos. Un dispositivo móvil a menudo se encuentra con múltiples escenarios, incluidos los de carga pesada y ligera.
Un ejemplo de clase de consumidor extremo es Helio X20 de MediaTek, que tiene 2 núcleos A72 orientados al rendimiento, 4 núcleos A53 balanceados, más 4 núcleos A35 de bajo consumo. Eso es muy flexible en diferentes casos de uso. Sin embargo, creo que 8 núcleos 2 clústeres suelen ser suficientes.
También hay otro ejemplo de escritorio, la serie Snapdragon 800 de Qualcomm (S 800, S 801 y S 805). Solo hay 4 núcleos de la misma microarquitectura en cada SoC, con 2 con frecuencia más alta y 2 con frecuencia más baja. Qualcomm fabricó estos SoC porque confiaba mucho en su propia microarquitectura (Krait 400 y Krait 450).
Para los juegos, incluso si aparentemente exigen el rendimiento de la GPU en lugar de la CPU, aún suponen una gran carga para la CPU. Una GPU no puede funcionar sola sin que otra cosa le suministre datos para procesar, y ese es uno de los principales trabajos que realiza la CPU mientras juegas. En la mayoría de los casos de juegos, la GPU solo genera gráficos, mientras que todos los demás trabajos, como cargar datos, recursos y activos, y calcular la mecánica del juego, como el sistema, el entorno y la física, los realiza la CPU. No observará una velocidad de fotogramas más alta si actualiza su GPU mientras se limita a una CPU de gama baja.
Una razón secundaria es cómo Android utiliza los recursos de la CPU . Android prácticamente crea su propio entorno de aplicación. No usa nada más que códigos (y API) de Java, pero tiene su propia máquina virtual llamada Dalvik, que luego fue reemplazada por ART (API Nivel 21). Los APK tienen sus códigos ejecutables en un formato "neutro", muy parecido a los .class
archivos en Java. Antes de que se ejecuten, los códigos se compilan una vez más en las instrucciones nativas de la máquina [1] . El proceso de compilación es multiproceso y puede utilizar varios núcleos para mejorar el rendimiento.
Y cuando se ejecuta una aplicación, hay varios 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 usa un identificador de tipo de archivo, encontrará que los archivos dex "optimizados" están en formato ELF, mientras que los archivos dex "neutrales" solo tienen un formato propio.
Otra razón menor es que los núcleos ARM no pueden funcionar tan rápido como un chip Intel x86 . La microarquitectura Intel x86 se remonta a 1976, cuando se empezó a diseñar el chip Intel 8086 , lo que significa que el x86 se ha desarrollado durante mucho tiempo. Un solo núcleo ARM Cortex-A73 moderno de gama alta es tan poderoso como un núcleo Intel Clarkdale, tomando como ejemplo el Core i5-660 (GeekBench, de un solo núcleo). Esto se debe a que x86 es una microarquitectura CISC mientras que ARM es una RISC.microarquitectura. Seguramente no querrás un teléfono que se vuelva lento con solo dos o más aplicaciones activas. Más núcleos ayudarán a aliviar la presión. Es por eso que los SoC de doble núcleo son relativamente populares solo en los relojes inteligentes. ¿Quién necesita rendimiento en un reloj inteligente?
Curiosamente, más núcleos darán como resultado 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 el doble de la frecuencia siempre resultará en una demanda de más del doble, o incluso 3 o 4 veces más de energía, mientras se entrega menos del doble de rendimiento (debido a otras limitaciones de recursos como la memoria caché). ). Por lo tanto, 4 núcleos pueden vencer fácilmente a un solo núcleo con la misma carga, brindando un mejor rendimiento y, al mismo tiempo, demandando menos energía.
Otras lecturas:
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 larga es demasiado larga para resumirla aquí, pero el concepto básico es que Intel ha dominado el mercado de PC durante años con todos los medios posibles, hasta el punto de pagar y corromper (y ser multado por ello) para que sus CPU sean las mejores. primera y única opción para los fabricantes de PC.
Tener el control total del mercado le ha permitido a Intel inflar los precios de las CPU mientras decide artificialmente qué características y cuánta potencia de procesamiento deberían haber querido los usuarios, y si analizas un poco la historia de Intel notarás que su principal fortaleza está básicamente en el aumento de la frecuencia de las CPU, por lo que en su mayoría nunca trató de hacer algo realmente inteligente o innovador; y no lo necesitaba, porque simplemente puede decirle a la gente "no necesitas 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 CPU multinúcleo en el mercado de servidores a precios absurdamente altos (porque los servidores siempre han necesitadotoneladas de energía paralela, hasta el punto de que hay una tendencia actual en intentar realizar servidores que usen... ¿adivinen qué? Cientos de las CPU de su teléfono barato trabajando en paralelo)
Esto, a su vez, se ha reflejado en la comunidad de desarrolladores que nunca se ha dado cuenta de la importancia de la programación paralela, por lo que muchos, si no la mayoría, nunca se molestaron en usar más de un subproceso a la vez, o, para expresarlo en un no manera técnica, haciendo que su software haga más de una tarea a la vez. Lo cual, por cierto, tiene sentido cuando el 99 % de su 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 solo se aplican a un pequeño subconjunto de problemas.
En cambio, finalmente, el mercado móvil nunca ha visto el éxito de Intel; todo lo contrario, en realidad, como sucede la mayoría de las veces, Intel intenta hacer algo diferente a la arquitectura X86 habitual. Entonces, al carecer de influencia y control del mercado, los otros productores de CPU se han ido en la dirección que ha sido la normalidad durante mucho tiempo fuera del mercado de las PC: la computación paralela.
Hay dos factores en marcha, uno muy práctico y el otro histórico.
La razón práctica es el uso de arquitecturas mixtas en los teléfonos. El consumo de energía es fundamental para los teléfonos y los teléfonos 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 algunos núcleos optimizados para proporcionar el máximo rendimiento cuando se necesita.
La otra razón es en gran parte histórica. Hasta 2005 más o menos, las CPU de escritorio eran todas de un solo núcleo. Mejorar el rendimiento de la CPU de escritorio consistió casi exclusivamente en crear un núcleo que pudiera ejecutar tantas instrucciones por segundo como fuera posible. Incluso hoy en día, tanto software de escritorio no puede aprovechar al máximo los núcleos múltiples que muchos preferirían una CPU con 4 núcleos en lugar de una CPU de 8 núcleos con núcleos un 20 % más lentos.
Obtener el mayor rendimiento posible de un solo núcleo requiere grandes cantidades de espacio en la CPU. Se trata de bienes inmuebles que, de otro modo, podrían utilizarse para proporcionar más núcleos. Esta es la razón por la cual las CPU Kaby Lake más nuevas de Intel alcanzan un máximo de 4 núcleos y la gente las compra porque cada núcleo es más rápido que los núcleos de sus predecesores. Para muchos, son una actualización incluso de las CPU con una mayor cantidad de núcleos.
Con el tiempo, espere ver mucho más software de escritorio completamente optimizado para admitir más núcleos. Cuando eso suceda, las compensaciones de ingeniería comenzarán a favorecer más núcleos sobre núcleos más rápidos en las computadoras de escritorio. Si bien es casi seguro que los núcleos seguirán siendo más rápidos, comenzará a ver personas que prefieren una CPU de 8 núcleos a una CPU de 4 núcleos, incluso si cada núcleo es un 20% más lento. Los diseñadores de chips seguirán el mercado.
Es crucial que un teléfono pueda proporcionar potencia computacional en ráfagas cortas (necesitamos que ciertas aplicaciones sean rápidas), pero también evitar el sobrecalentamiento (la disipación de calor es mucho más difícil para los teléfonos que para las computadoras portátiles o PC). Para lograr esto, los arquitectos diseñan teléfonos para usar un solo núcleo cuando la carga de trabajo es ligera y proporcionan núcleos adicionales para aumentar el rendimiento cuando es necesario. Si los teléfonos usaran menos núcleos grandes, el sobrecalentamiento se convertiría en un problema incluso cuando la carga de trabajo sea bastante ligera.
Fuente: un curso de arquitectura informática de nivel de posgrado.
En primer lugar, la máquina virtual Java históricamente puede beneficiarse de los múltiples núcleos más que el software de escritorio típico. Incluso si escribe una aplicación de subproceso único 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 su aplicación.
En segundo lugar, muchas cosas suceden en segundo plano en su teléfono: actualizaciones automáticas, descargas de anuncios, software antivirus, administración del módulo GSM, etc. En una computadora portátil, todas estas tareas apenas mantendrían ocupado un núcleo, pero los núcleos ARM son mucho menos potente, por lo que es posible que desee tener al menos un par de ellos dedicados a tareas en segundo plano si desea un sistema receptivo.
Por último, está la comercialización. No muchos usuarios son capaces de evaluar si se beneficiarían de 8 núcleos, pero un teléfono inteligente de 8 núcleos ciertamente suena más caro que uno de 2 o 4 núcleos.
Las respuestas hasta ahora explican algunas facetas del problema que conduce a esta abrumadora cantidad de núcleos de CPU en los teléfonos Android. Lee eso de nuevo; Teléfonos Android. El iPhone ha logrado apegarse a solo un par de núcleos durante mucho tiempo y aún funciona mucho mejor que cualquier buque insignia de Android.
Los diseñadores de Android hicieron una gran apuesta al decidir elegir la programación Java y en consecuencia la JVM como tiempo de ejecución de las aplicaciones. Java, debido a sus principios de diseño, resuelve el problema de la necesidad de compilar y crear código para cada arquitectura de CPU antes de que pueda ejecutarse sacrificando el rendimiento. Java presenta una máquina virtual pesada y voluminosa, generalmente llamada JVM. La JVM en realidad emula una CPU a nivel de software para evitar la necesidad de compilar el código por separado para cada dispositivo. Piense en la JVM como una CPU virtual que tiene las mismas propiedades independientemente del dispositivo que la ejecute, por lo que el código solo debe compilarse una vez para la JVM y luego podría ejecutarse en todos los dispositivos. Esto permite a los fabricantes lanzar cualquier hardware que deseen antes de tener que preocuparse por la compatibilidad de las aplicaciones.
La JVM en sí es simplemente una especificación y las personas son libres de desarrollar su propia JVM siempre que se adhiera a esta especificación. La JVM de Android original se llamaba Dalvik. Hoy en día Google ha reemplazado eso con ART.
Ahora, ¿cuál es el problema con JVM? Es una pieza pesada de software que consume una gran cantidad de recursos informáticos. Agregue a esto algunas otras propiedades del lenguaje Java, como la recolección de basura, y el consumo de recursos de JVM simplemente se vuelve demasiado para un dispositivo con una potencia de hardware modesta. Cada aplicación y servicio del sistema abierto en su dispositivo es en sí mismo una instancia de ART JVM y, a estas alturas, podría concluir que administrarlos todos requiere un hardware realmente capaz. Las cosas empeorarán aún más cuando exista la necesidad de dibujar interfaces de usuario.
Cada aplicación se ejecuta en varios subprocesos. Cada núcleo de CPU puede ejecutar solo un subproceso a la vez. Cada aplicación tiene un hilo principal en el que hace las cosas relacionadas con la interfaz de usuario. Podría haber muchos más subprocesos por aplicación para acceder a archivos, redes, etc. Por lo general, hay más aplicaciones (y servicios del sistema) abiertas que núcleos de CPU y, como resultado, suele haber muchos más subprocesos que núcleos de CPU. Entonces, cada núcleo tiene que alternar entre procesar diferentes subprocesos constantemente, hacer un poco de cada uno y pasar al siguiente. Esta conmutación requiere mucho tiempo para la CPU y en caso de que las aplicaciones sean esencialmente JVM, esta tarea se vuelve aún más exhaustiva.
Según esta explicación, se podría deducir que Android necesita un hardware potente para funcionar sin problemas. Las primeras generaciones de dispositivos Android eran famosas por sus retrasos, fallas y muchas otras cosas desafortunadas. Pero a lo largo de los años, estos problemas se han resuelto en su mayoría al confiar en un hardware potente.
Por otro lado, las aplicaciones de iOS se compilan en un código de máquina nativo y, por lo tanto, no necesitan la virtualización. El idioma utilizado y el sistema operativo también son más eficientes y, por lo tanto, permiten que estos dispositivos se mantengan fluidos sin la necesidad de un conjunto de chips excesivo.
Resumiendo todo lo anterior, puedo decir que los casos de uso de PC y teléfono son bastante diferentes. La PC se usa la mayoría de las veces en una o varias aplicaciones (por supuesto, el navegador con un montón de pestañas requiere muchos núcleos de CPU, puede retrasarse incluso en la parte superior i-3), los teléfonos se usan para realizar múltiples tareas. Al menos conexión de red, dibujo de interfaz de usuario, activadores del sistema, notificaciones. Si abre el administrador de tareas en la PC, también hay muchos procesos, pero usan menos del % de potencia de la CPU, incluso en el viejo Core 2 duo. 4 núcleos es bastante barato (MTK 65x2 costó 1 $ al inicio para OEM) También es RIESGO vs CISC cuando la última falta de rendimiento por núcleo. ¡Eficiencia energética! = potente, como podemos ver aquí . El multinúcleo es perfecto para dispositivos móviles, porque no tiene una carga pesada de una sola banda de rodadura y una experiencia dirigida a múltiples tareas (pero podemos ver que los iPhones necesitan menos núcleos y RAM debido a un buen softwarecomo en este video u otros )
Creo que uno de los principales factores impulsores más allá de un 4 u 8 (para configuraciones grandes: pequeñas) es solo marketing en este momento.
Un gran problema del alto número de núcleos es cuando se considera el tamaño de la memoria. Normalmente, en las aplicaciones de escritorio, cuando desea mejorar la utilización de múltiples núcleos, necesita duplicar estructuras y usar mucha más memoria que en una aplicación de un solo subproceso.
Esto no sucede porque la memoria RAM es muy cara (especialmente en la situación de crisis de RAM de 2017/2018). El departamento de marketing quiere números altos, pero el control quiere reducir los precios de los componentes. Si ve un saldo de menos de 1 Gigabyte de RAM por núcleo, entonces ve un compromiso fallido.
motoDrizzt
PINCHAZO
v6ak
Honinbo Shusaku
v6ak
usuario73930
about:config
y verifique la entradaMultiprocess Windows
. En mi caso, dice0/1 (Disabled by add-ons)
pero si desactivo los complementos ofensivos, estará activo.v6ak
David Balažic