ARM big.LITTLE es una arquitectura informática heterogénea desarrollada por ARM Holdings , que combina núcleos de procesador relativamente más lentos y que ahorran batería ( LITTLE ) con núcleos relativamente más potentes y hambrientos de energía ( grandes ). Normalmente, solo un "lado" u otro estará activo a la vez, pero todos los núcleos tienen acceso a las mismas regiones de memoria, por lo que las cargas de trabajo se pueden intercambiar entre núcleos grandes y pequeños sobre la marcha. [1] La intención es crear un procesador de múltiples núcleos que se pueda ajustar mejor a las necesidades informáticas dinámicas y utilizar menos energía que la escala de reloj.solo. El material de marketing de ARM promete hasta un 75% de ahorro en el uso de energía para algunas actividades. [2] Por lo general, 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 . [3] 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. [4] ARM anunció más tarde el Cortex-A12 en Computex 2013, seguido del 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. [5] [6]
El problema tan grande que resuelve PEQUEÑO
Para una biblioteca determinada 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ápidamente 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 muchas menos fugas (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 una canalización . 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 resultar sorprendentemente inflexible. Un problema es el número y los tipos de dominios de potencia y reloj que proporciona el IC. Es posible que no coincidan con las funciones estándar de administración de energía que ofrece un sistema operativo. Otra es que las CPU ya no tienen capacidades equivalentes y hacer coincidir la tarea de software correcta con la CPU correcta se vuelve más difícil. La mayoría de estos problemas se resuelven haciendo que la electrónica y el software sean más flexibles.
Migración de estado de ejecución
Hay tres formas [7] para que los diferentes núcleos del procesador se dispongan en un diseño big.LITTLE, dependiendo del planificador implementado en el kernel . [8]
Conmutación agrupada
El enfoque del modelo agrupado es la primera y más sencilla implementación, que organiza el procesador en grupos de idéntico tamaño de núcleos "grandes" o "PEQUEÑOS". El programador del sistema operativo solo puede ver un clúster a la vez; cuando la carga de todo el procesador cambia entre baja y alta, el sistema pasa al otro clúster. Luego, todos los datos relevantes se pasan a través de la caché L2 común , el clúster de núcleo activo se apaga y el otro se activa. Se utiliza una interconexión coherente de caché (CCI). Este modelo ha sido implementado en el Samsung Exynos 5 Octa (5410). [9]
Conmutador en kernel (migración de CPU)
La migración de la CPU a través del conmutador en el núcleo (IKS) implica emparejar un núcleo 'grande' con un núcleo 'PEQUEÑO', con posiblemente 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 utiliza 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. El cambio se realiza a través del marco cpufreq . Se agregó una implementación completa de big.LITTLE IKS en Linux 3.11. big.LITTLE IKS es una mejora de la migración de clústeres ( § Conmutación en clúster ), la principal diferencia es que cada par es visible para el planificador.
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 Tegra 3 System-on-Chip .
Procesamiento múltiple heterogéneo (programación de tareas global)
El modelo de uso más poderoso 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. Hilos con alta prioridad o computacional intensidad puede en este caso ser asignados a los núcleos "grandes", mientras que las roscas con menor prioridad o menos intensidad computacional, tales como tareas de fondo, puede ser realizado por los núcleos "pequeño". [10]
Este modelo ha sido implementado en el Samsung Exynos comenzando con la serie Exynos 5 Octa (5420, 5422, 5430), [11] [12] y los procesadores de la serie Apple A comenzando con el Apple A11 . [13]
Planificación
La disposición emparejada permite que la conmutación se realice de forma transparente al sistema operativo utilizando la función de escalado dinámico de voltaje y frecuencia (DVFS) existente. El soporte DVFS existente en el kernel (por ejemplo, cpufreq
en Linux) simplemente verá una lista de frecuencias / voltajes y cambiará entre ellos como mejor le parezca, 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 primera solución 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. [14]
Alternativamente, todos los núcleos pueden exponerse al programador del kernel , que decidirá dónde se ejecutará cada proceso / subproceso. Esto será necesario para la disposición no emparejada, pero posiblemente también podría usarse en los núcleos emparejados. Plantea problemas únicos para el programador del núcleo, que, al menos con el hardware básico moderno, ha podido asumir que todos los núcleos de 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 programador que considera los núcleos de manera diferente. [15] [16]
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 está migrando tareas directamente entre núcleos, la sobrecarga del kernel se reduce y el ahorro de energía se puede aumentar en consecuencia.
- La implementación en el programador también hace que las decisiones de conmutación sean más rápidas que en el marco cpufreq implementado en IKS.
- La capacidad de admitir fácilmente clústeres no simétricos (por ejemplo, con 2 núcleos Cortex-A15 y 4 núcleos Cortex-A7).
- La capacidad de usar todos los núcleos simultáneamente para proporcionar un rendimiento máximo de rendimiento mejorado del SoC en comparación con IKS.
Sucesor
En mayo de 2017, ARM anunció a DynamIQ como el sucesor de big.LITTLE. [17] Se espera que DynamIQ permita una mayor flexibilidad y escalabilidad al diseñar procesadores de múltiples núcleos. A diferencia de big.LITTLE, aumenta el número máximo de núcleos en un clúster a 8, permite diferentes 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 e inicialmente solo es compatible con los núcleos de CPU Cortex-A75 y Cortex-A55 .
Referencias
- ^ Nguyen, Hubert (17 de enero de 2013). "¿Qué es ARM big.LITTLE?" . UberGizmo.com.
- ^ "tecnología big.LITTLE" . ARM.com. Archivado desde el original el 22 de octubre de 2012 . Consultado el 17 de octubre de 2012 .
- ^ "ARM presenta su procesador de aplicaciones con mayor eficiencia energética; redefine la relación tradicional de potencia y rendimiento con el procesamiento big.LITTLE" (comunicado de prensa). ARM Holdings . 19 de octubre de 2011 . Consultado el 31 de octubre de 2012 .
- ^ "ARM lanza la serie Cortex-A50, los procesadores de 64 bits con mayor eficiencia energética del mundo" (comunicado de prensa). ARM Holdings . Consultado el 31 de octubre de 2012 .
- ^ "El nuevo Cortex-A12 de ARM está listo para alimentar los teléfonos inteligentes de gama media de $ 200 de 2014" . The Verge. Abril de 2014.
- ^ "ARM Cortex A17: un Evolved Cortex A12 para la corriente principal en 2015" . AnandTech. Abril de 2014.
- ^ 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 .
- ^ George Gray (10 de julio de 2013). "actualización de software big.LITTLE" . Linaro . Archivado desde el original el 4 de octubre de 2013 . Consultado el 17 de septiembre de 2013 .
- ^ Peter Clarke (6 de agosto de 2013). "Benchmarking de la arquitectura grande-pequeña de ARM" . Consultado el 17 de septiembre de 2013 .
- ^ 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 deseptiembre de 2013
- ^ Brian Klug (11 de septiembre de 2013). "Samsung anuncia soporte big.LITTLE MP en Exynos 5420" . AnandTech . Consultado el 16 de septiembre de 2013 .
- ^ "Samsung presenta nuevos productos de su sistema LSI Business en el Mobile World Congress" . Samsung mañana . Consultado el 26 de febrero de 2013 .
- ^ "El futuro está aquí: iPhone X" . Sala de prensa de Apple . Consultado el 25 de febrero de 2018 .
- ^ McKenney, Paul (12 de junio de 2012). "Una actualización del programador big.LITTLE" . LWN.net .
- ^ Perret, Quentin (25 de febrero de 2019). "Energy Aware Scheduling fusionada en Linux 5.0" . community.arm.com .
- ^ "Programación consciente de la energía" . La documentación del kernel de Linux .
- ^ Humrick, Matt (29 de mayo de 2017). "Explorando las nuevas CPU de Dynamiq y ARM" . Anandtech . Consultado el 10 de julio de 2017 .
Otras lecturas
- David Zinman (25 de enero de 2013). "big.LITTLE MP status 25 de enero de 2013" . LWN.net . Consultado el 25 de enero de 2013 .
- Nicolas Pitre (15 de febrero de 2012). "Soporte de Linux para 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: BRAZO: Una actualización PEQUEÑA grande" . 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 superfonos Android" . Ars Technica . Consultado el 31 de octubre de 2012 .
- Andrew Cunningham (30 de octubre de 2012). "ARM va de 64 bits con los nuevos diseños Cortex-A53 y Cortex-A57" . Ars Technica . Consultado el 31 de octubre de 2012 .
enlaces externos
- procesamiento big.LITTLE
- big.LITTLE Processing con ARM CortexTM-A15 y Cortex-A7 (PDF) (explicación técnica completa)