BRAZO grande PEQUEÑO - ARM big.LITTLE

Cortex A57 / A53 MPCore grande.Pequeño chip de CPU

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. La intención es crear un procesador multinúcleo que se pueda ajustar mejor a las necesidades informáticas dinámicas 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. 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 . 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. ARM más tarde anunció 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.

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 de organizar los diferentes núcleos del procesador en un diseño big.LITTLE, dependiendo del planificador implementado en el kernel .

Conmutación agrupada

Conmutación agrupada Big.Little

El enfoque del modelo agrupado es la primera y más simple implementación, organizando 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).

Conmutador en kernel (migración de CPU)

Conmutador Big.Little en el kernel

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)

Big.Little heterogéneo multiproceso

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".

Este modelo se ha implementado en el Samsung Exynos comenzando con la serie Exynos 5 Octa (5420, 5422, 5430) y los procesadores de la serie Apple A comenzando con el Apple A11 .

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, cpufreqen 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.

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.

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. 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

Otras lecturas

enlaces externos