Noticias, Gadgets, Android, Móviles, Descargas de Aplicaciones

big.LITTLE: Estrategia de ARM para una informática eficiente

Introducción.

En la Parte I de esta serie, discutimos el modelo comercial de ARM y cómo funciona con sus diversos socios en comparación con Intel. Hoy, nos sumergimos en una tecnología específica que ARM cree que le permitirá diferenciar sus productos y ofrecer un rendimiento superior a Santa Clara y el próximo Bay Trail de 22 nm.

big.LITTLE es la solución de ARM a un problema particularmente desagradable: los nuevos nodos de proceso ya no ofrecen el tipo de mejoras generales de consumo de energía que tenían antes de 2005. Antes de los 90nm, las empresas de semiconductores podían contar con nuevos chips más pequeños, más rápidos y de mayor rendimiento. menos potencia a una frecuencia determinada. Hace ocho años, eso dejó de ser cierto. Las geometrías de proceso más estrictas aún contienen más transistores por milímetro cuadrado, pero las mejoras en el consumo de energía y la frecuencia máxima han disminuido en cada nodo. El aumento de la densidad de defectos ya ha creado una situación en la que, por primera vez, los chips de 20 nm no serán más baratos que los procesadores de 28 nm que se supone que deben reemplazar. Este es un problema crítico para los dispositivos móviles, donde el bajo consumo de energía es absolutamente vital.

big.LITTLE es la respuesta de ARM a este problema. La estrategia requiere que los fabricantes implementen dos conjuntos de núcleos: el Cortex-A7 y el Cortex-A15 son la combinación actual, aunque a largo plazo, es posible una amplia variedad de opciones. La idea es que los núcleos pequeños se encarguen de la mayor parte del trabajo del teléfono, mientras que los núcleos grandes se utilizan para el trabajo pesado ocasional. El argumento de ARM es que este enfoque es superior al escalado dinámico de voltaje y frecuencia (DVFS) porque es imposible que una sola arquitectura de CPU retenga una curva de rendimiento / potencia lineal en todo su rango de frecuencia. Este es el mismo argumento que Nvidia hizo cuando construyó el Companion Core en Tegra 3.

En teoría, esto le brinda lo mejor de ambos mundos. La implementación real, desafortunadamente, ha demostrado ser un poco más complicada.

Implementación de big.LITTLE en software:

Hay tres formas de crear un diseño grande y PEQUEÑO. El primero y más simple es la migración de clústeres. Cuando la carga en un clúster llega a un punto determinado, el sistema pasa al otro clúster. Todos los datos relevantes se pasan a través de la caché L2 común, un conjunto de núcleos se apaga y el otro se enciende. Esto es transparente para el sistema operativo, que siempre ve solo cuatro núcleos. El problema con este enfoque es que un programador mal ajustado puede dejar importantes ahorros de energía sobre la mesa. Si los grandes núcleos A15 se despiertan demasiado pronto, las cargas de trabajo que podrían haberse ejecutado en el Cortex-A7 de bajo consumo terminan en el A15.

El segundo modelo es la migración de CPU. En este modelo, cada gran núcleo está prácticamente emparejado con una pequeña contraparte. Si el sistema detecta una carga alta en LITTLE CPU 0 (A7), aumenta la CPU 0 grande (A15) y mueve la carga de trabajo al núcleo más grande. Nuevamente, no más de cuatro núcleos están activos en un momento dado, pero esto permite un control detallado.

El tercer modelo es el objetivo a largo plazo: un programador de tareas global. Esto requiere un programador de software inteligente que vea todos los núcleos simultáneamente, comprenda qué cargas de trabajo son más adecuadas para ejecutarse en qué núcleos y pueda programarlas adecuadamente. Combinado con HSA, esto permite que el sistema maximice el rendimiento en prácticamente cualquier carga de trabajo. Se necesita menos tiempo para transferir datos entre núcleos y es posible crear diseños de procesador no simétricos. Esta última es una característica crucial. En los dos primeros tipos de diseños big.LITTLE, los núcleos deben implementarse 1: 1, con un A15 por cada A7 y viceversa. Un programador de tareas global libera esta restricción


Haga clic para agrandar

La ventaja de un programador de tareas global es que ya no recibe un golpe obligatorio al cambiar entre clústeres (se necesita una cantidad de tiempo distinta de cero para transferir datos) y puede usar todos los núcleos simultáneamente. A diferencia de las configuraciones de migración de CPU y clústeres, un programador global puede usar configuraciones ARM asimétricas. ¿Quiere un Cortex-A7 de cuatro núcleos con un A15 de doble núcleo? Puedes tener eso. ¿Quieres un A5, dos A7 y un A15? Tú también podrías tener eso.