Antes de comenzar este recorrido por los detalles más profundos del nuevo smartphone de Samsung y necesario adentrarse hasta lo más hondo de sus componentes, entender cuáles son los dispositivos de hardware que componen la nueva estrella de la corporación coreana que llega para quedarse con la corona definitiva en el mundo de los smartphones.
Arquitectura
Los cores de ejecución out-of-order (OOO) llegaron de la mano del ARM Cortex A9, donde las instrucciones podían ser reordenadas según su dependencia para mejorar el paralelismo. Esta transición se dio en el mundo de x86 con la llegada del Pentium Pro en aquellos tiempos. El Cortex A15 continua el modelo OOO de sus cores pero incrementa el tamaño de la máquina. El Cortex A7, sin embargo, retrocede al modelo simple in-order (SIO) de sus cores pero es capaz de resolver dos instrucciones en paralelo. Esto podría parecer igual a como lo hace el Cortex A8, pero hay un buen número de diferencias.
El A8 es un diseño antiguo hoy en día, pero en su momento ARM ofreció con las versiones sintetizables de los cores con el fin de aumentar los clocks y agregar más lógica. El diseño personalizado del A8 incrementó los costos de desarrollo lo que limitó al chip. El Cortex A7 por otro lado es completamente sintetizable y es capaz de entregar una muy alta performance. Los avances tecnológicos de ARM le permiten tener clocks altos y un consumo competitivo sin la necesidad de una arquitectura complicada y costosa.
El Cortex A7 tiene un pipeline de enteros de 8 etapas y es capaz de resolver dos instrucciones simultáneas. A diferencia del Cortex A8, el A7 no tiene resolución doble para punto flotante o instrucciones NEON. La extensión NEON, o Advanced SIMD, es una instrucción simple combinada de 64 y 128 bits que contiene múltiples datos (SIMD) que provee una aceleración estandarizada de contenido multimedia o aplicaciones de procesamiento de señales.
Pero hay otras instrucciones que convierten al A7 en una máquina de resolución de instrucciones simples. El cluster de ejecución de enteros es similar al del Cortex A8, pero además el FPU es fully pipelined y más compacto.
Al limitar el ancho de las instrucciones complejas se logra mantener un die más pequeño. ARM asegura que un core simple de Cortex A7 mide solamente 0.5 mm2 con el proceso de fabricación de 28nm. Esto le da un área de die que es de un tercio o al menos la mitad de un Cortex A8.
Más allá de las capacidades, ARM se centró en la performance por clock y general del Cortex A7 al compararlo con el Cortex A8. La performance de predicción de ramas de procesamiento se mejoró con procesos más modernos y rápidos y se eliminaron las penalidades. El Cortex A7 posee mejores algoritmos de prefetching para mejorar la eficiencia. ARM incluyó también un cache L2 configurable de muy baja latencia (10 ciclos) en el diseño del Cortex A7.
En escenarios de decodificación, el Cortex A7 ofrece la misma performance que el Cortex A8 incluso con sus limitaciones de resolución de dos instrucciones simultáneas.
Lo mejor de Cortex A7 es que es 100% ISA compatible con el Cortex A15, lo que incluye instrucciones de virtualización y división de enteros con direccionamiento de 40 bits a memoria. Cualquier código que corra en un A15 lo hará en A7, aunque más lento. Una característica muy importante es que los fabricantes de SoC pueden cambiar entre cores Cortex A7 y Cortex A15 dependiendo de los requerimientos de carga de los mismos, y esto es algo que ARM denominó configuración big.LITTLE.
Veamos big.LITTLE en detalle
El Cortex A15 es un paso gigante en cuanto a performance por parte de las arquitecturas ARM y pretende ocupar el espacio de los segmentos low end que deja libres x86, lo que nos da una rápida idea de la potencia que tiene. El A15 existe en smartphones y tablets, reemplazando al Cortex A9 usado hasta ahora.
Para tareas pesadas, el Cortex A15 consume aún menos que el Cortex A9, es más eficiente. El core consume más energía, pero por períodos más cortos de tiempo, permitiendo al CPU trabajar más rápido y consumir menos.
ARM dice que las arquitecturas gigantes de procesadores out-of-order son ineficientes (Intel se debería sentir tocado con esta afirmación) y no permiten trabajar con cargas de dispositivos móviles. ARM argumenta que la energía consumida por un A15 para correr ciertos procesos en un corto período de tiempo es mayor que en una arquitectura simple-in-order, y acá es donde entra en juego el Cortex A7. Los partners de ARM integrarán cores Cortex A7 con Cortex A15, y esta inclusión se denomina configuración big.LITTLE.
Ya que tanto el A7 como el A15 son capaces de ejecutar las mismas instrucciones, las aplicaciones que corren en un core pueden ser migradas a otro. En el ejemplo de la imagen, hay un par de A15 y un par de A7 en un SoC. En esta configuración particular, el sistema operativo cree que hay dos cores en la máquina. El firmware de manejo de energía de ARM determina que cluster de cores activar dependiendo de la performance requerida en ese momento por el SO. Si el sistema operativo requiere una alta performance, ARM coloca los cores del A15 en el estado p-state (alta performance). Si lo que se requiere no necesita potencia, ARM duerme los cores A15 y pasa los procesos a los A7. La coherencia de cache se garantiza a través de la interconexión CCI-400, por lo tanto, ningún dato tiene que ser invalidado por un cluster de cores ni reflejado en el cache de dichos cores, lo que permite realizar este cambio en menos de 20 microsegundos.
La configuración big.LITTLE es transparente al sistema operativo y ARM dejó libre la elección a sus partners si quieren exponer todos los cores al SO, y quedaría a cargo del operativo manejar los cores de acuerdo a su tipo.