Exynos 7420: multitarea, multi-core y multiprocesamiento

Exynos 7 OctaUno de los procesadores de teléfonos inteligentes más populares en este momento es el Samsung Exynos 7420, sobre todo porque es el procesador utilizado por Samsung para su gama actual de los dispositivos de gama alta como el Samsung Galaxy S6, el Samsung Galaxy S6 + Edge, y el Samsung Galaxy Nota 5. El Exynos 7420 es un procesador octa-core que significa que tiene 8 núcleos de CPU, cada uno de los cuales es capaz de ejecutar una tarea de forma paralela a otras tareas que se ejecutan en los demás núcleos.

Con 8 núcleos y la posibilidad de ejecutar 8 tareas en paralelo, es importante entender qué nivel de paralelización es ofrecido por este alto rendimiento de la CPU.

Resumen

A principios de este año escribí dos artículos de fondo sobre la naturaleza de multiprocesamiento en Android y específicamente en CPUs basadas ARM. El primer artículo desmintió el mito de que Aplicaciones de Android sólo utilizan un núcleo CPU, mientras que el segundo miró cómo el Samsung Galaxy S6 utiliza su procesador octa-core.

Ambas partes de la investigación mostraron cómo Android utiliza la naturaleza paralelo (multi-core) de los procesadores modernos. Exynos de Samsung 7420 es un procesador basado en ARM con una función de Heterogénea Multi-Processing (HMP). En general, los procesadores de cuatro núcleos que se encuentran en todo, desde equipos de escritorio a los teléfonos inteligentes tienen un conjunto de núcleos que son todos iguales en cuanto a su rendimiento y consumo de energía. En una CPU HMP, no todos los núcleos son iguales (de ahí, heterogéneo). El Exynos 7420 tiene un conjunto de núcleos Cortex-A57 y un grupo de núcleos Cortex-A53. El A57 es un núcleo de alto rendimiento, mientras que el A53 tiene una mayor eficiencia energética. Este arreglo se conoce como Big.little, donde los "grandes" núcleos de procesador (Cortex-A57) se combinan con "poco" núcleos de procesador (Cortex-A53).

Amigo Perfecto 2: Gran vs POCO (con reflejos)

Amigo Perfecto 2: Gran vs POCO (con reflejos)

Cuando las tareas se ejecutan en los núcleos poco que utilizan menos energía, que drenan la batería de menos, sin embargo, puede correr un poco más lento. Cuando las tareas se ejecutan en los grandes núcleos, que terminen pronto pero utilizan más la batería para hacerlo.

Una vez que entendemos que no todos los núcleos son iguales, entonces es interesante ver cómo Android utiliza esos núcleos y qué nivel de procesamiento simultáneo se produce, y sobre el que núcleos, grande o pequeño?

Workload Automation

Mis pruebas anteriores utilizan una herramienta, que escribí yo mismo, para determinar cómo se está utilizando la CPU. Utiliza las diferentes piezas de información sobre la actividad del núcleo de Linux que se ponen a disposición a través de la / proc / stat archivo. Sin embargo, tiene un defecto. Dado que los datos sobre el uso de la CPU está siendo generada por sondeo / proc / stat que significa que algunas tareas pueden parecer paralelo cuando en realidad no lo son.

El intervalo de sondeo es de alrededor de un seis de un segundo (es decir, alrededor de 160 milisegundos). Si un núcleo reporta su uso es del 25% en que los 160 milisegundos y otro núcleo reporta su uso es 25%, entonces las gráficas mostrará ambos núcleos se ejecutan simultáneamente en el 25%. Sin embargo, es posible que el primer núcleo corrió a la utilización 25% durante 80 milisegundos y luego el segundo núcleo corrió a la utilización 25% durante 80 milisegundos.

Para profundizar en la naturaleza paralela de los Exynos 7420 he pasado de usar mi propia herramienta para el código abierto Herramienta Workload Automation. Escrito por ARM está diseñado para ejecutar pruebas de que el ejercicio de la CPU en los dispositivos Android y Linux. La clave es que soporta el trazador interno Linux kernel conocido como ftrace.

Esto significa que la información sobre la programación exacta de los núcleos de la CPU se puede extraer directamente de las profundidades del núcleo de Linux en sí. El resultado es que el intervalo de sondeo debilidad de mi herramienta de uso de la CPU es eliminado.

buscando en la web

Si tuviera que preguntarle cuál es la tarea más ardua que la CPU de su teléfono inteligente realiza, se podría pensar que sería un juego como Modern Combat 5 o Asphalt 8, y usted tendría razón hasta cierto punto. Sin embargo lo que pasa con los grandes juegos en 3D es que cargan la GPU apenas tanto (o incluso más) que la CPU. Aunque la CPU se utiliza muy fuertemente durante los juegos en 3D, una gran parte de la carga de trabajo se maneja en otros lugares. Si estamos buscando un trabajo que hace la CPU sudar un poco, de hecho, es la navegación web!

Aquí es un conjunto de gráficos que muestran cómo se utiliza la CPU cuando se navega por el sitio web de la Autoridad Android usando Chrome:

wa-paralelo-cromo-aa

Hay tres gráficos. El primero de ellos en la parte superior izquierda muestra cómo se utilizan los cuatro núcleos Cortex-A53 durante 90 segundos de navegación web. Como se puede ver por el 18% del tiempo ninguno de los núcleos están siendo utilizados, eficacia el conjunto de núcleos Cortex-A53 está inactivo. Para el 19% de la base de tiempo 1 se está utilizando, para el 18% del tiempo de 2 núcleos se están utilizando en paralelo, 3 núcleos para el 19%, y 4 núcleos para 24% de las veces.

El gráfico de la parte superior derecha muestra los mismos datos, pero ahora para el grupo de grandes núcleos Cortex-A57. Durante casi 60% de las veces un núcleo grande está en uso y para el 14% del tiempo de 2 núcleos están en uso. De hecho, más del 80% de las veces se utilizan 1 o más núcleos Cortex-A57.

El gráfico en la parte inferior muestra el nivel general de paralelización en todos los núcleos de la CPU. Por menos de 4% de las veces toda la CPU está inactivo, por se utiliza 15% del núcleo de tiempo 1, 2 núcleos para 16%, y así sucesivamente. Lo que es interesante es que para más de 20% del tiempo 5 núcleos se utilizan en paralelo.

Si el Exynos 7420 fue un procesador de cuatro núcleos a continuación, el planificador en el corazón del núcleo de Linux no tendría la opción de utilizar 5 núcleos simultáneamente.

Si el Exynos 7420 fue un procesador de cuatro núcleos a continuación, el planificador en el corazón del núcleo de Linux no tendría la opción de utilizar 5 núcleos simultáneamente. Más que eso, hay momentos en que se están utilizando 6, 7 y los 8 núcleos de la CPU en paralelo.

La situación para Firefox es similar, pero no es lo mismo:

wa-paralelo-firefox-aa

Como se puede ver, Firefox usa principalmente 2 y 3 núcleos en paralelo, sin embargo alrededor del 10% de las veces se utiliza más de 4 núcleos. Para Chrome, se utilizaron grandes núcleos Cortex-A57 más del 80% del tiempo, para Firefox ese número salta a más del 90% del tiempo.

No debemos subestimar las capacidades de los núcleos Cortex-A53.

En este punto, usted puede estar pensando, bueno, si Chrome y Firefox están utilizando los grandes núcleos fuertemente entonces ¿por qué no construir una CPU de cuatro núcleos con sólo Cortex-A57 y dejar el Cortex-A53 núcleos por completo? La respuesta es que los grandes núcleos usan más duración de la batería y la forma Big.little funciona es que sólo se pueden llamar cuando sea necesario. Los pequeños núcleos siguen siendo utilizados por alrededor de 75% de la carga de trabajo y, como veremos pronto, algunas cargas de trabajo ni siquiera usan los grandes núcleos!

Youtube

Aunque hablamos de grandes núcleos y núcleos PEQUEÑOS, no debemos subestimar las capacidades de los núcleos Cortex-A53. Son unidades de procesamiento de 64 bits completos que pueden realizar exactamente las mismas operaciones que los grandes núcleos Cortex-A57, pero han sido diseñados para tener una mayor eficiencia energética. Sin embargo, para algunas tareas que el Cortex-A53 es más que suficiente.

He aquí los datos capturados cuando se transmite un 720p vídeo de YouTube a través de Wi-Fi:

wa-paralelo-youtube-aa

Como se puede ver, todo el trabajo se realiza por los núcleos Cortex-A53. Desde la decodificación de vídeo es efectuado por la GPU o un decodificador de vídeo de hardware, la CPU sólo es responsable de la conexión Wi-Fi, para obtener los datos de streaming a través de Internet, y para la carga de los bits de la derecha de la memoria para el decodificador de vídeo de abordar el siguiente fotograma. El resultado de esta carga "relativamente fácil" es que los grandes núcleos básicamente duermen todo el tiempo. De hecho, los núcleos Cortex-A53 gastan casi una cuarta parte de su tiempo de reposo, así!

Juegos

Así, si la aplicación de YouTube sólo utiliza los núcleos Cortex-A53, porque una gran parte del trabajo de vídeo se realiza mediante hardware dedicado, lo que hace que significa para los juegos? ¿Utilizan el Cortex-A57 en absoluto? A continuación se muestra tres conjuntos de gráficos de tres aplicaciones de juegos: Asfalto 8, Epic Citadel, y Crossy Road:

Si nos fijamos en estos gráficos, verá que hay un patrón general. En su mayor parte los juegos utilizan de 1 a 3 núcleos de procesador y de vez en cuando pico en el uso de 4 o 5 núcleos simultáneamente. Los núcleos Cortex-A53 se utilizan para alrededor de 60% a 70% del tiempo, con los núcleos de marcha en vacío por alrededor de un cuarto a un tercio del tiempo. Sin embargo, los grandes núcleos no están sentados sin hacer nada, como con YouTube. Lo que vemos es que para Asphalt 8 y épica Ciudadela están usando 1 gran núcleo de por lo menos la mitad del tiempo, y que incluso Crossy carretera tiende a apoyarse en al menos un núcleo grande. Esto se debe a que el juego es una actividad más compleja que la transmisión de vídeo. Un montón de objetos de juego para crear, manipular y realizar un seguimiento. Es probable que el núcleo Cortex-A57 activa está siendo utilizado para las tareas más complejas realizadas por la CPU y los núcleos poco para el resto.

Otras cargas de trabajo

También he probado Gmail, Amazon Compras y Flickr. Sin embargo antes de que nos fijamos en ellos, quiero llamar su atención sobre la aplicación Microsoft Word para Android:

wa-paralelo-palabra-aa

Como se puede ver la aplicación Palabra comporta como muchas otras aplicaciones. Utiliza una mezcla de los núcleos Cortex-A53 y Cortex-A57 y pasa mucho de los ociosos tiempo, debido a la naturaleza de la aplicación. Sin embargo lo que es interesante es que cuando la aplicación tiene algo que ver, como la creación de un nuevo documento, puede utilizar los 8 núcleos de CPU. De hecho, parece que cuando está lleno, se salta directamente del uso de un par de núcleos hasta 8. La cantidad de tiempo que se está utilizando 5, 6, o 7 núcleos es mucho menor que el tiempo que se utiliza 8 núcleos.

En cuanto a las otras aplicaciones, aquí están sus gráficas para su lectura:

Envolver

Los resultados de esta prueba es ampliamente en línea con mis pruebas anteriores y otra vez subraya la naturaleza paralela de Android y Android. También destaca el poder de la heterogénea Multi-Procesamiento y cómo se están utilizando los núcleos poco por la mayoría de los puestos de trabajo y los grandes núcleos están llamados por el trabajo pesado.

Nunca hay que subestimar el papel de la GPU y otro hardware de vídeo.

Estos datos también muestra lo poderoso que un procesador Exynos el 7420 es. En ningún momento es el Exynos 7420 se pidió trabajar demasiado duro, y hay un montón de momentos de ocio (que son buenas, ya que significa que se está utilizando un mínimo de energía de la batería). Siendo ese el caso, sería interesante ver cómo funciona HMP en otras combinaciones que no sean sólo 4 + 4. Por ejemplo, el LG G4 utiliza un procesador hexa-core, el Snapdragon 808, en lugar de un procesador octa-core. El 808 utiliza dos núcleos Cortex-A57 y A53 cuatro núcleos. O en el otro extremo, cómo funciona HMP en el deca-core Helio X20 de MediaTek.

Por último, no debemos subestimar el papel de la GPU y otro hardware de vídeo. Tanto la prueba de YouTube y las pruebas de juegos muestran la importancia de la parte gráfica del SoC.

Así que, ¿cuáles son sus pensamientos sobre heterogénea Multi-Processing, Big.little, procesadores octa-núcleo, procesadores hexa-core, procesadores deca-core, y el Exynos 7420? Por favor, hágamelo saber en los comentarios.


» » Exynos 7420: multitarea, multi-core y multiprocesamiento