BRAZO GRANDE.PEQUEÑO

Arquitectura de computación heterogénea

Chip de CPU Cortex A57/A53 MPCore big.LITTLE

ARM big.LITTLE es una arquitectura de computación heterogénea desarrollada por Arm Holdings , que combina núcleos de procesador relativamente más lentos y que ahorran batería ( LITTLE ) con otros relativamente más potentes y que consumen mucha energía ( big ). La intención es crear un procesador multinúcleo que pueda ajustarse mejor a las necesidades de computación dinámica y utilizar menos energía que el escalado de reloj solo. El material de marketing de ARM promete hasta un 75% de ahorro en el uso de energía para algunas actividades. [1] Más comúnmente, las arquitecturas ARM big.LITTLE se utilizan para crear un sistema en chip multiprocesador (MPSoC).

En octubre de 2011, se anunció big.LITTLE junto con el Cortex-A7 , que fue diseñado para ser arquitectónicamente compatible con el Cortex-A15 . [2] En octubre de 2012, ARM anunció los núcleos Cortex-A53 y Cortex-A57 ( ARMv8-A ), que también son intercompatibles para permitir su uso en un chip big.LITTLE. [3] ARM anunció más tarde el Cortex-A12 en Computex 2013 seguido por el Cortex-A17 en febrero de 2014. Tanto el Cortex-A12 como el Cortex-A17 también se pueden emparejar en una configuración big.LITTLE con el Cortex-A7. [4] [5]

El problema que big.LITTLE resuelve

Para una biblioteca dada de lógica CMOS , la potencia activa aumenta a medida que la lógica cambia más por segundo, mientras que la fuga aumenta con la cantidad de transistores. Por lo tanto, las CPU diseñadas para funcionar rápido son diferentes de las CPU diseñadas para ahorrar energía. Cuando una CPU fuera de servicio muy rápida está inactiva a velocidades muy bajas, una CPU con mucha menos fuga (menos transistores) podría hacer el mismo trabajo. Por ejemplo, podría usar una memoria caché más pequeña (menos transistores) o una microarquitectura más simple como eliminar la ejecución fuera de servicio . big.LITTLE es una forma de optimizar para ambos casos: potencia y velocidad, en el mismo sistema.

En la práctica, un sistema big.LITTLE puede ser sorprendentemente inflexible. Uno de los problemas es la cantidad y los tipos de dominios de energía y reloj que proporciona el CI. Es posible que estos no coincidan con las funciones de administración de energía estándar que ofrece un sistema operativo. Otro es que las CPU ya no tienen capacidades equivalentes y resulta más difícil hacer coincidir la tarea de software adecuada con la CPU adecuada. La mayoría de estos problemas se están resolviendo haciendo que la electrónica y el software sean más flexibles.

Migración de estado de ejecución

Hay tres formas [6] de organizar los diferentes núcleos del procesador en un diseño big.LITTLE, dependiendo del programador implementado en el núcleo . [7]

Conmutación en clúster

Conmutación en clúster Big.Little

El enfoque del modelo agrupado es la primera y más simple implementación, organizando el procesador en grupos de tamaño idéntico de núcleos "grandes" o "PEQUEÑOS". El programador del sistema operativo solo puede ver un grupo a la vez; cuando la carga en todo el procesador cambia entre baja y alta, el sistema pasa al otro grupo. Todos los datos relevantes pasan entonces a través de la caché L2 común , el grupo de núcleos activo se apaga y el otro se activa. Se utiliza una interconexión coherente de caché (CCI). Este modelo se ha implementado en el Samsung Exynos 5 Octa (5410). [8]

Conmutador dentro del núcleo (migración de CPU)

Conmutador interno Big.Little

La migración de CPU a través del conmutador en el núcleo (IKS) implica emparejar un núcleo "grande" con un núcleo "pequeño", posiblemente con muchos pares idénticos en un chip. Cada par funciona como un núcleo virtual , y solo un núcleo real está (completamente) encendido y funcionando a la vez. El núcleo "grande" se utiliza cuando la demanda es alta y el núcleo "pequeño" se emplea cuando la demanda es baja. Cuando la demanda en el núcleo virtual cambia (entre alta y baja), el núcleo entrante se enciende, el estado de ejecución se transfiere , el saliente se apaga y el procesamiento continúa en el nuevo núcleo. La conmutación se realiza a través del marco cpufreq . Se agregó una implementación completa de IKS big.LITTLE en Linux 3.11. big.LITTLE IKS es una mejora de la migración de clústeres (§ Conmutación en clústeres), la principal diferencia es que cada par es visible para el programador.

Una disposición más compleja implica una agrupación no simétrica de núcleos "grandes" y "pequeños". Un solo chip podría tener uno o dos núcleos "grandes" y muchos más núcleos "pequeños", o viceversa. Nvidia creó algo similar a esto con el "núcleo complementario" de bajo consumo en su sistema en chip Tegra 3 .

Multiprocesamiento heterogéneo (programación global de tareas)

Big.Little multiprocesamiento heterogéneo

El modelo de uso más potente de la arquitectura big.LITTLE es el multiprocesamiento heterogéneo (HMP), que permite el uso de todos los núcleos físicos al mismo tiempo. Los hilos con alta prioridad o intensidad computacional pueden en este caso asignarse a los núcleos "grandes", mientras que los hilos con menor prioridad o menor intensidad computacional, como las tareas en segundo plano, pueden ser ejecutados por los núcleos "pequeños". [9]

Este modelo se ha implementado en los procesadores Samsung Exynos a partir de la serie Exynos 5 Octa (5420, 5422, 5430), [10] [11] y la serie A de Apple a partir del Apple A11 . [12]

Programación

La disposición en pares permite que la conmutación se realice de forma transparente para el sistema operativo utilizando la función de escalado dinámico de voltaje y frecuencia (DVFS) existente. El soporte DVFS existente en el núcleo (por ejemplo , en Linux) simplemente verá una lista de frecuencias/voltajes y cambiará entre ellos como crea conveniente, tal como lo hace en el hardware existente. Sin embargo, las ranuras de gama baja activarán el núcleo "Pequeño" y las ranuras de gama alta activarán el núcleo "Grande". Esta es la solución inicial proporcionada por el programador de CPU de "fecha límite" de Linux (que no debe confundirse con el programador de E/S con el mismo nombre) desde 2012. [13]cpufreq

Como alternativa, todos los núcleos pueden exponerse al planificador del núcleo , que decidirá dónde se ejecuta cada proceso/hilo. Esto será necesario para la disposición no emparejada, pero posiblemente también se podría utilizar en los núcleos emparejados. Esto plantea problemas únicos para el planificador del núcleo, que, al menos con el hardware comercial moderno, ha podido asumir que todos los núcleos en un sistema SMP son iguales en lugar de heterogéneos. Una adición de 2019 a Linux 5.0 llamada Energy Aware Scheduling es un ejemplo de un planificador que considera los núcleos de manera diferente. [14] [15]

Ventajas de la programación global de tareas

  • Control más detallado de las cargas de trabajo que se migran entre núcleos. Debido a que el programador migra tareas directamente entre núcleos, se reduce la sobrecarga del núcleo y se puede aumentar el ahorro de energía en consecuencia.
  • La implementación en el programador también hace que las decisiones de cambio sean más rápidas que en el marco cpufreq implementado en IKS.
  • La capacidad de soportar fácilmente clústeres no simétricos (por ejemplo, con 2 núcleos Cortex-A15 y 4 núcleos Cortex-A7).
  • La capacidad de utilizar todos los núcleos simultáneamente para proporcionar un rendimiento máximo mejorado del SoC en comparación con IKS.

Sucesor

En mayo de 2017, ARM anunció DynamIQ como el sucesor de big.LITTLE. [16] Se espera que DynamIQ permita una mayor flexibilidad y escalabilidad al diseñar procesadores multinúcleo. A diferencia de big.LITTLE, aumenta la cantidad máxima de núcleos en un clúster a 8 para CPU Armv8.2, 12 para Armv9 y 14 para Armv9.2 [17] y permite variar los diseños de núcleos dentro de un solo clúster y hasta 32 clústeres en total. La tecnología también ofrece un control de voltaje por núcleo más detallado y velocidades de caché L2 más rápidas. Sin embargo, DynamIQ es incompatible con diseños ARM anteriores y, inicialmente, solo es compatible con los núcleos de CPU Cortex-A75 y Cortex-A55 y sus sucesores.

Referencias

  1. ^ "Tecnología big.LITTLE". ARM.com. Archivado desde el original el 22 de octubre de 2012. Consultado el 17 de octubre de 2012 .
  2. ^ "ARM presenta su procesador de aplicaciones más eficiente energéticamente hasta la fecha; redefine la relación tradicional entre potencia y rendimiento con el procesamiento big.LITTLE" (nota de prensa). ARM Holdings . 19 de octubre de 2011 . Consultado el 31 de octubre de 2012 .
  3. ^ "ARM lanza la serie Cortex-A50, los procesadores de 64 bits más eficientes energéticamente del mundo" (Nota de prensa). ARM Holdings . Consultado el 31 de octubre de 2012 .
  4. ^ "El nuevo Cortex-A12 de ARM está listo para impulsar los teléfonos inteligentes de gama media de 200 dólares de 2014". The Verge . Abril de 2014.
  5. ^ "ARM Cortex A17: un Cortex A12 evolucionado para el mercado general en 2015". AnandTech. Abril de 2014.
  6. ^ Brian Jeff (18 de junio de 2013). "Diez cosas que debe saber sobre big.LITTLE". ARM Holdings . Archivado desde el original el 10 de septiembre de 2013. Consultado el 17 de septiembre de 2013 .
  7. ^ George Grey (10 de julio de 2013). «Actualización del software big.LITTLE». Linaro . Archivado desde el original el 4 de octubre de 2013. Consultado el 17 de septiembre de 2013 .
  8. ^ Peter Clarke (6 de agosto de 2013). «Benchmarking de la arquitectura pequeña y grande de ARM» . Consultado el 17 de septiembre de 2013 .
  9. ^ Procesamiento Big.LITTLE con ARM Cortex-A15 y Cortex-A7 (PDF) , ARM Holdings , septiembre de 2013, archivado desde el original (PDF) el 17 de abril de 2012 , consultado el 17 de septiembre de 2013
  10. ^ Brian Klug (11 de septiembre de 2013). "Samsung anuncia compatibilidad con big.LITTLE MP en Exynos 5420". AnandTech . Consultado el 16 de septiembre de 2013 .
  11. ^ "Samsung presenta nuevos productos de su división System LSI en el Mobile World Congress". Samsung Tomorrow. Archivado desde el original el 16 de marzo de 2014. Consultado el 26 de febrero de 2013 .
  12. ^ "El futuro ya está aquí: iPhone X". Apple Newsroom . Consultado el 25 de febrero de 2018 .
  13. ^ McKenney, Paul (12 de junio de 2012). "Una gran actualización del programador LITTLE". LWN.net .
  14. ^ Perret, Quentin (25 de febrero de 2019). "Programación consciente de la energía fusionada en Linux 5.0". community.arm.com .
  15. ^ "Programación consciente de la energía". La documentación del kernel de Linux .
  16. ^ Humrick, Matt (29 de mayo de 2017). "Explorando las nuevas CPU de Dynamiq y ARM". Anandtech . Consultado el 10 de julio de 2017 .
  17. ^ Ltd, Arm. «DynamIQ – Arm®». Arm | La arquitectura para el mundo digital . Consultado el 18 de octubre de 2023 .

Lectura adicional

  • David Zinman (25 de enero de 2013). «big.LITTLE MP status Jan 25, 2013». LWN.net . Consultado el 25 de enero de 2013 .
  • Nicolas Pitre (15 de febrero de 2012). «Compatibilidad de Linux con ARM big.LITTLE». LWN.net . Consultado el 18 de octubre de 2012 .
  • Paul McKenney (12 de junio de 2012). "Una actualización del programador big.LITTLE". LWN.net . Consultado el 18 de octubre de 2012 .
  • Jake Edge (5 de septiembre de 2012). "KS2012: ARM: una actualización de big.LITTLE". LWN.net . Consultado el 18 de octubre de 2012 .
  • Jon Stokes (20 de octubre de 2011). «El nuevo Cortex A7 de ARM está hecho a medida para los superteléfonos Android». Ars Technica . Consultado el 31 de octubre de 2012 .
  • Andrew Cunningham (30 de octubre de 2012). «ARM pasa a los 64 bits con los nuevos diseños Cortex-A53 y Cortex-A57». Ars Technica . Consultado el 31 de octubre de 2012 .
  • Procesamiento de big.LITTLE
  • Procesamiento big.LITTLE con ARM CortexTM-A15 y Cortex-A7 (PDF) (explicación técnica completa)
Retrieved from "https://en.wikipedia.org/w/index.php?title=ARM_big.LITTLE&oldid=1243164542#DynamIQ"