Muy cercano y personal: cómo el Samsung Galaxy S6 utiliza su procesador octa-core
Hace unas semanas hice una investigación sobre cómo las aplicaciones Android tomar ventaja de los procesadores multi-core. Específicamente, miré para desacreditar el mito de que Aplicaciones de Android sólo utilizan un núcleo CPU. Mis hallazgos básicamente poner fin a ese cuento de hadas particular, sin embargo hay otras casas de jengibre en el bosque que necesitan derribando!
Una advertencia de esta investigación fue que aún no había tenido la oportunidad de correr mis pruebas en una configuración Cortex-A53 / A57 Cortex-como mi dispositivo de prueba octa-core tenía un Qualcomm Snapdragon 615, que tiene un 1.7GHz quad-core clúster ARM Cortex A53 y un grupo A53 1.0GHz quad-core. Sin embargo ahora he tenido la oportunidad de hacer algunas pruebas en un Galaxy S6 y Samsung su Procesador Exynos 7420!
Resumen
Así que para recapitular brevemente lo que se trata todo esto. Smartphone tiene procesadores multi-core. Primero fue de doble núcleo, luego de cuatro núcleos y ahora tenemos 6 y 8 procesadores móviles principales. Esto también es cierto en el espacio en el escritorio, sin embargo hay una gran diferencia entre los procesadores de escritorio 6 y 8 núcleos de Intel y AMD, y los procesadores de 6 y 8 núcleos basado en la arquitectura ARM - la mayoría de los procesadores basados en ARM con más de 4 núcleos utilizar por lo menos dos diseños básicos diferentes.
Este arreglo se conoce como Big.little, donde grandes núcleos de procesador (Cortex-A57) se combinan con núcleos de procesador PEQUEÑOS (Cortex-A53).
El Exynos 7420 es un procesador basado en ARM que utiliza un sistema conocido como heterogénea Multi-Processing (HMP), lo que significa que no todos los núcleos son iguales (de ahí, heterogéneo). El procesador del Galaxy S6 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). Esto es muy diferente a los procesadores de 6 u 8 núcleos de escritorio que vemos de Intel y AMD, como en el consumo de energía del escritorio no es tan crítico como lo es en el móvil.Una vez que tenga una configuración multi-core, surge la pregunta, puede utilizar aplicaciones de Android todos los núcleos de manera efectiva? En el corazón de Linux (el núcleo del sistema operativo utilizado por Android) es un programador que determina la cantidad de tiempo de CPU se le da a cada aplicación y en la que la CPU de núcleo se ejecutará. Para utilizar los procesadores multi-núcleo totalmente, aplicaciones de Android tienen que ser multi-hilo, sin embargo Android es en sí mismo un multi-proceso, sistema operativo multitarea.
Una de las tareas a nivel de sistema en la arquitectura de Android es la SurfaceFlinger. Es una parte fundamental de la forma en que Android envía gráficos para la pantalla. Es una tarea independiente que necesita ser programado y teniendo en cuenta una rebanada de tiempo de CPU. Lo que esto significa es que ciertas operaciones gráficas necesitan otro proceso para ejecutar antes de que se han completado.
Debido a procesos como la SurfaceFlinger, beneficios Android de procesadores multi-core sin una aplicación específica realidad de ser multi-hilo por diseño. También porque hay un montón de cosas siempre suceden en el fondo, como la sincronización y widgets, a continuación, Android en general se beneficia del uso de un procesador multi-core.
Para una explicación mucho más completa de la multitarea, la programación, y multi-threading lea Realidad o ficción: aplicaciones de Android sólo utilizan un núcleo CPU.
Aquí hay un par de los gráficos clave de mi estudio anterior, que muestran claramente que Android es capaz de utilizar más de un núcleo de la CPU:
Los dos gráficos muestran el número de núcleos que se utiliza, y el porcentaje de uso del núcleo, mientras que el uso de Chrome en un smartphone con una octa-core Snapdragon 615.
Como se puede ver, los siete núcleos están constantemente siendo utilizados con el pico ocasional a 8, y un par de veces cuando salsas para 6 y 4 núcleos. También se dará cuenta de que hay dos o tres núcleos que corren más que los otros, sin embargo, todos los núcleos están siendo utilizados de alguna u otra manera.
Lo que estamos viendo es cómo la arquitectura Big.little es capaz de cambiar los hilos de un núcleo a otro dependiendo de la carga. Recuerde, los núcleos adicionales están aquí para la eficiencia energética, no el rendimiento.
Samsung Galaxy S6
Los gráficos anteriores son para un dispositivo con un Qualcomm Snapdragon 615, que tiene un ARM Cortex A53 1.7GHz racimo de cuatro núcleos y un grupo A53 1.0GHz quad-core. Aunque los dos grupos de núcleos son diferentes, uno tiene una velocidad de 1,7 GHz y el otro a 1GHz, la diferencia entre los dos es principalmente sólo la velocidad de reloj.
El Exynos 7420 utilizado en el Galaxy S6 utiliza cuatro núcleos ARM Cortex-A57 velocidad de reloj de 2,1 GHz y cuatro núcleos Cortex-A53 velocidad de reloj de 1,5 GHz. Esta es la configuración muy diferente que el Snapdragon 615. Aquí hay dos arquitecturas básicas CPU distintivamente diferentes se utilizan juntos. Por ejemplo, el Cortex-A57 utiliza una tubería fuera de orden, mientras que el Cortex-A53 tiene un oleoducto en orden. Por supuesto, hay muchas otras diferencias arquitectónicas entre los dos diseños básicos.
El Exynos 7420 utilizado en el Galaxy S6 utiliza cuatro núcleos ARM Cortex-A57 velocidad de reloj de 2,1 GHz y cuatro núcleos Cortex-A53 velocidad de reloj de 1,5 GHz.
También vale la pena señalar que la velocidad de reloj máxima para los núcleos Cortex-A53 es de 1,5 GHz, casi tan alto como el más grande de los grupos Cortex-A53 en el Snapdragon 615. Lo que esto significa es que las características globales de desempeño serán muy diferentes en el Exynos 7420. Cuando el Snapdragon 615 puede haber favorecido el racimo grande (Cortex-A53 @ 1.7GHz) para algunas cargas de trabajo, el Exynos 7420 podría favorecer la agrupación POCO (Cortex-A53 @ 1.5GHz), ya que es casi tan poderoso como el gran clúster en el Snapdragon 615.
Cromo
Así que vamos a empezar por comparar la forma en que el Samsung Galaxy S6 utiliza Chrome. Para realizar la prueba abrí la página web de la Autoridad de Android en Chrome y luego empecé a hojear. Sólo me alojé en el sitio web Autoridad Android, pero no me paso el tiempo de leer las páginas que cargan, ya que habría dado lugar a ningún uso de la CPU. Sin embargo Esperé hasta que la página se carga y se rindió, y luego pasé a la siguiente página.
El gráfico anterior muestra cómo muchos núcleos están siendo utilizados por Android y Chrome. La línea de base parece ser alrededor de 5 núcleos y los picos de frecuencia en 8 núcleos. No muestra cuánto se está utilizando el núcleo (que viene en un momento) pero muestra si el núcleo está siendo utilizado en absoluto.
El gráfico anterior muestra cuánto se utilizó cada núcleo. Este es un gráfico de un promedio de salida (como el real es un garabato miedo de líneas). Esto significa que los usos de los picos se muestran como menos. Por ejemplo, el pico en este gráfico es de poco más del 95%, sin embargo los datos en bruto muestra que algunos de los núcleos de vida 100% varias veces durante la prueba de funcionamiento. Sin embargo, todavía nos da una buena representación de lo que estaba sucediendo.
En el Exynos 7420 (y en las Snapdragon 615) núcleos de 1 a 4 son los núcleos poco (los núcleos Cortex-A53) y núcleos de 5 a 8 son los grandes núcleos (los núcleos Cortex-A57). El gráfico anterior muestra que el Exynos 7420 está favoreciendo a los pequeños núcleos y dejando los núcleos GRANDES inactivo tanto como sea posible. De hecho, los pequeños núcleos son casi nunca inactivo eran como los núcleos grandes son inactivo durante entre 30% a 50% del tiempo. La razón de esto es importante es porque los núcleos BIG utilizan más batería. Así que si los más eficientes energéticamente núcleos pequeño está a la altura y luego se utilizan y los grandes núcleos pueden dormir.
Sin embargo, cuando la carga de trabajo se ponen difíciles los grandes núcleos son llamados a la acción, es por eso que el uso máximo de los grandes núcleos está al 100%. Hubo momentos en los que se utilizaron en el 100% y otras veces cuando había inactivo, lo que permite a los núcleos poco que hacer el trabajo.
El gráfico anterior muestra más claramente. La línea verde muestra el uso básico POCO combinado, mientras que la línea azul muestra el gran uso de los núcleos combinado. Como se puede ver los núcleos PEQUEÑAS se utilizan todo el tiempo, de hecho, el uso de los núcleos POCO sólo ocasionalmente cae por debajo de la gran uso de los núcleos. Sin embargo, los grandes núcleos pico ya que se utilizan más y dip cuando se utilizan menos, solamente entran en juego cuando sea necesario.
La carga de trabajo es artificial en el sentido de que no me detengo y leer cualquier página, tan pronto como la página se cargó pasé a la siguiente página. Sin embargo, los siguientes gráficos muestran lo que sucede si he cargado una página, leer algo de él, desplazado un poco, leer un poco más, por fin hice clic en un vínculo nuevo y empecé de nuevo el proceso. En el transcurso de 1 minuto cargué tres páginas. Estos se pueden ver claramente aquí:
Observe los tres picos de gran uso de los núcleos como he cargado una página y los picos en el uso de los núcleos poco como me desplacé por la página y nuevos elementos fueron prestados y exhibidas.
Gmail y YouTube
Google despliega muchas de sus aplicaciones de Android clave a través de la Play Store, y además de Chrome, otras aplicaciones populares de Google como YouTube y Gmail. Cliente de correo electrónico de Google es un buen ejemplo de una aplicación que utiliza elementos de la interfaz de usuario de Android. No hay sprites, no hay gráficos en 3D, sin vídeo a render, sólo una interfaz de usuario de Android. He realizado una prueba de uso general donde me desplacé hacia arriba y abajo en la bandeja de entrada, busqué correos electrónicos, respondió a un correo electrónico y escribí un nuevo correo electrónico - en otras palabras, he utilizado la aplicación como se pretendía.
Como era de esperar, un cliente de correo electrónico no va a insistir en un procesador como el Exynos 7420. Como se puede ver en el gráfico, el uso total de la CPU es bastante bajo. Hay unos pocos picos, pero en promedio la utilización núcleos es menos de 30 por ciento. El planificador utiliza predominantemente los PEQUEÑOS núcleos Cortex-A53 y los grandes núcleos son inactivo durante alrededor de 70 por ciento del tiempo.
Usted puede ver cómo se utilizan los núcleos poco más a menudo que los grandes núcleos de este gráfico:
YouTube es diferente a Gmail en que, si bien tiene elementos de interfaz de usuario, sino que también tiene que hacer un montón de decodificación de vídeo. La mayor parte del trabajo de video no serán manejados por la CPU, por lo que su trabajo es predominantemente de IU y la creación de redes, más coordinación general.
La gran vs gráfico poco es bastante revelador aquí:
Los grandes núcleos apenas se están utilizando en absoluto y la energía eficiente (pero menor rendimiento) núcleos se utilizan para desplazarse por los datos, y manejar las conexiones de red, etc.
Juego de azar
Los juegos son una categoría muy diferente de la aplicación. A menudo son GPU intensiva y no necesariamente de la CPU obligado. He probado una variedad de juegos, incluyendo épica Ciudadela, Jurassic World, Subway Surfer, Crossy Road, Perfecto Amigo 2, y el Solitario.
A partir de la épica Ciudadela, la aplicación de demostración para el Unreal Engine 3, lo que descubrí es que otra vez los núcleos PEQUEÑOS se están utilizando de manera consistente y los grandes núcleos están siendo utilizados como apoyo, cuando sea necesario. En promedio, los núcleos PEQUEÑOS están ejecutando alrededor de 30 a 40 por ciento, mientras que la utilización de los grandes núcleos están siendo utilizados a menos de 10 por ciento. Los grandes núcleos están inactivos por alrededor de 40 por ciento de las veces, sin embargo, cuando utilizan pueden alcanzar su punto máximo en el uso de más de un 90 por ciento.
El gráfico de arriba son para el juego real (es decir, caminar por el mundo virtual de Epic Citadel utilizando el sobre controles de la pantalla). Sin embargo épica Ciudadela también tiene un modo "Visita Guiada", que se abate automáticamente alrededor de varias partes del mapa. La gráfica principal uso para el modo de visita guiada es ligeramente diferente a la versión del juego de juego real:
Como se puede ver, el modo de visita guiada tiene varios picos de actividad de la CPU, que la obra la versión real de juego no lo hace. Esto pone de relieve la diferencia entre las cargas de trabajo del mundo real y las cargas de trabajo artificiales. Sin embargo, en este caso particular, el perfil global de uso no se altera mucho:
Aquí están las gráficas de Solitaire, Jurassic World, Subway Surfer, Crossy Road y Amigo Perfecto 2:
Como era de esperar Solitaire no utiliza mucho tiempo de CPU, y curiosamente utiliza Mundial Jurásico más. También es digno de mirar el gran frente gráfico POCO para Amigo Perfecto 2, se muestra un escenario de libros de texto cerca de donde los núcleos PEQUEÑOS acelerador hacia abajo, mientras que los grandes núcleos rampa encima. Aquí está el mismo gráfico con esos grandes picos centrales resaltados:
Retazos
Tengo dos más conjuntos de gráficos para completar nuestra imagen. La primera es una instantánea del dispositivo cuando está en reposo, con la pantalla apagada. Como se puede ver todavía hay una cierta actividad, esto es porque el programa que recoge los datos en sí utiliza la CPU. En una especie de física cuántica-esque de forma, el acto de la observación altera el resultado! Lo que sí nos da es una línea de base:
El otro conjunto de gráficos es la carga de trabajo artificial creada por los puntos de referencia, en este caso AnTuTu:
Incluso una mirada superficial muestra que las cargas de trabajo generadas por AnTuTu son nada como las cargas de trabajo del mundo real. Los gráficos también nos muestran que es posible conseguir el Samsung Galaxy S6 a un máximo de salida los ocho de sus núcleos de CPU, pero es completamente artificial! Para obtener más información acerca de los peligros de los puntos de referencia de esto ver Tenga cuidado con los puntos de referencia, ¿cómo saber qué buscar.
También tengo que enumerar algunas advertencias aquí. Lo primero a destacar es que estas pruebas no comparar el rendimiento del teléfono. Mi prueba sólo muestra cómo el Exynos 7420 corre diferentes aplicaciones. No se ve en las ventajas o inconvenientes de funcionamiento de partes de una aplicación en dos núcleos a la utilización del 25%, en lugar de en un núcleo a 50%, y así sucesivamente.
En segundo lugar, el intervalo de exploración de estas estadísticas es 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. Esto significa que los núcleos se utilizaron consecutivamente y no simultáneamente. Por el momento mi configuración de la prueba no me permite que ningún mayor resolución.
En los teléfonos con procesadores Qualcomm Snapdragon es posible desactivar núcleos de CPU usando la función CPU hotplug de Linux. Sin embargo, para hacerlo, tienes que matar el proceso 'mpdecision' de lo contrario los núcleos van a volver de nuevo en línea cuando el proceso 'mpdecision' corre. También es posible desactivar los núcleos individuales en el Exynos 7420 sin embargo no puedo encontrar el equivalente de 'mpdecision ", que significa que cada vez que puedo desactivar un núcleo que consigue volver a activar después de sólo unos segundos. El resultado es que no estoy en condiciones de probar la carga de trabajo, el rendimiento y la duración de la batería con diferentes núcleos deshabilitados (es decir, con todos los grandes núcleos deshabilitados, o con todos los núcleos PEQUEÑOS desactivado).
Que significa todo esto?
La idea detrás de Heterogénea Multi-Processing (HMP) es que hay conjuntos de núcleos de CPU con diferentes niveles de eficiencia energética. Los núcleos con la mejor eficiencia energética no ofrecen el más alto rendimiento. Las selecciones del planificador que los núcleos son los mejores para cada carga de trabajo, este proceso de toma de decisiones pasa muchas veces por segundo y de los núcleos de la CPU se activa y desactiva en consecuencia. También la frecuencia de los núcleos de la CPU está controlada, se intensificaron y estrangulado en función de la carga de trabajo. Esto significa que el programador puede elegir entre los núcleos con diferentes características de rendimiento y controlar la velocidad de cada núcleo, dándole una gran cantidad de opciones.
El comportamiento predeterminado de un procesador Big.little es utilizar sus núcleos poco.
En cuanto a la duración de la batería, mayor es la frecuencia de la CPU más poder que usará. Hay algunas ecuaciones matemáticas inteligentes que muestran esto, pero la conclusión es esta: los procesadores multi-core son más energía eficiente que un procesador de núcleo único funcionando a frecuencias más altas, o en términos técnicos procesadores multi-core tener un mejor rendimiento por mW.Lo que la prueba anterior muestra es que el comportamiento predeterminado de un procesador Big.little es utilizar sus núcleos poco. Estos núcleos se están ejecutando en las frecuencias de reloj más bajas (en comparación con los grandes núcleos) y tienen un diseño más eficiente de la energía (pero a la pérdida de rendimiento extremo superior). Cuando el Exynos 7420 tiene que realizar un trabajo extra, entonces los grandes núcleos se activan. La razón de esto no es sólo el rendimiento (desde el punto de vista del usuario) pero hay un ahorro de energía que se encuentran cuando un núcleo de la CPU puede realizar su trabajo rápido y luego regrese a ralentí.
También es obvio que en ningún momento es el Exynos 7420 se pidió trabajar demasiado duro. Mundo Jurásico empuja el procesador más duro que cualquiera de las otras aplicaciones o juegos, sin embargo, incluso todavía deja los grandes núcleos inactivos durante más de 50 por ciento del tiempo.
Esto plantea dos cuestiones interesantes. En primer lugar, deben fabricantes de procesadores se busca en otras combinaciones HMP, que no sea sólo 4 + 4. Es interesante que el LG G4 utiliza un procesador hexa-core en lugar de un procesador octa-core. El Snapdragon 808 en el G4 LG utiliza dos núcleos Cortex-A57 y A53 cuatro núcleos. En segundo lugar, la eficiencia energética y el rendimiento de la GPU no deben subestimarse cuando se mira en el diseño general de un procesador. ¿Podría ser que una CPU de rendimiento más bajo con un motor más potente GPU es mejor combinación?
¿Cuáles son sus pensamientos sobre heterogénea Multi-Processing, Big.little, procesadores octa-núcleo, procesadores hexa-core y el Exynos 7420? Por favor, hágamelo saber en los comentarios.