image/svg+xml

Procesamiento paralelo en ARM Cortex-A53

El Arm Cortex-A53, tiene caracter铆sticas que le permiten llevar a cabo procesamiento con t茅cnicas de DSP. En concreto tiene que ver con paralelizaci贸n y capacidad de c贸mputo.

Paralelizaci贸n

La paralelizaci贸n consiste en transformar un programa secuencial en una versi贸n concurrente pero equivalente. Esto con el fin de ejecutar los programas m谩s r谩pidamente.

Procesador multin煤cleos

El procesador multin煤cleos quiere quiere decir que se contienen m谩s de un procesador en un mismo circuito integrado, con capacidades de realizar operaciones en paralelo. As铆, se puede partir un programa en hilos, para que se computen operaciones al mismo tiempo.

El Arm Cortex-A53 puede contener de 1 a 4 n煤cleos. El procesador Broadcom2837 tiene 4 n煤cleos Arm Cortex-A53 y est谩 implementado en la Raspberry Pi 3.

N煤cleos superescalares

Los n煤cleos superescalares tienen una arquitectura que les permite ejecutar m谩s de una instrucci贸n por ciclo de reloj, a diferencia de la arquitectura escalar que ejecuta s贸lo una por ciclo de reloj.

Diagrama de arquitectura superescalar

Este ejemplo de arquitectura permite ejecutar por ejemplo dos operaciones en enteros, dos en coma flotante y una de transferencia de memoria. O sea que no todas las instrucciones deben poder tener varias unidades funcionales.

Como se puede apreciar, el dise帽o superescalar adem谩s es compatible con segmentaci贸n. Lo que permite implementar paralelismo de flujo tambi茅n.

Pipeline

El pipeline o segmentaci贸n de instrucciones es la forma en que los procesadores con arquitectura RISC ejecutan instrucciones. Esto hace que la ejecuci贸n sea m谩s r谩pida, cargando las siguientes instrucciones mientras se procesa la primera.

Es como la l铆nea de ensamblaje de un carro, s贸lo que aqu铆 se divide en sub tareas que permiten un flujo constante de instrucciones. Mientras m谩s largo sea el pipeline, menor el trabajo necesario en cada etapa, aumentando la eficiencia. Sin embargo se necesitar谩n m谩s ciclos de reloj para completar un ciclo m谩quina, aumentando la latencia del sistema.

El Arm Cortex-A53 implementa una segmentaci贸n de instrucciones o pipeline de 8 etapas con la siguiente escturctura seg煤n Matt Humrick en su post en ANANDTECH:

pipeline del Arm Cortex-A53

Dentro de la etapa de ejecuci贸n, se pueden despachar instrucciones simult谩neamente a diferentes unidades de ejecuci贸n, como ejemplo:

Tambi茅n hay que tomar en cuenta que no todas las instrucciones se ejecutan en un s贸lo ciclo (Issue Cycle). O sea que cambiar el orden de las instrucciones, puede cambiar el n煤mero de ciclos.

Arquitectura 64 bits

El Arm Cortex-A53 tiene una arquitectura Armv8-A que es de 64 bits, es decir con palabras de memoria de 64 bits. Utiliza el set de instrucciones A64, sin embargo, tambi茅n es compatible con el set de instrucciones de 32 bit, en su modo AArch32.

Modos de operaci贸n

Existen dos modos de operaci贸n del Arm Cortex-A53:

En el curso se utilizar谩 el modo AARch32, puesto que es en el que est谩 implementado por Raspberry Pi

Extensiones NEON

La tecnolog铆a NEON, es una extensi贸n para los Arm Cortex-A y Cortex-R. Esta extensi贸n implementa la tecnolog铆a llamada Single Instruction Multiple Data SIMD. Con esta, se consigue paralelizaci贸n a nivel de datos.

Funciona realizando una operaci贸n (instrucci贸n) sobre una piscina de datos, los datos son diferentes entre s铆 pero se les aplica la misma operaci贸n al mismo tiempo, a esto se le conoce como vectorizar operaciones.

Vector SIMD

Esto est谩 pensado para procesamiento de se帽ales, audio, video e inteligencia artificial. Permite operar con diferentes tipos de dato, incluyendo n煤meros de punto fijo y flotante.

En el Arm Cortex-A53 cuenta con registros de 32 $\times$ 128 bits para los datos.

Registros

Se cuentan con varios registros de prop贸sito general y algunos especiales. A continuaci贸n se muestran los registros de aplicaci贸n del Arm Cortex-A53.

Nombre Alias Uso m谩s frecuente Uso convencional
r0 a1 Prop贸sito general Valores temporales, regreso de valores de funciones
r1 a2 Prop贸sito general Valores temporales, regreso de valores de funciones
r2 a3 Prop贸sito general Valores temporales, argumento de funciones
r3 a4 Prop贸sito general Valores temporales, argumento de funciones
r4 v1 Prop贸sito general Variables
r5 v2 Prop贸sito general Variables
r6 v3 Prop贸sito general Variables
r7 v4 Prop贸sito general Variables
r8 v5 Prop贸sito general Variables
r9 v6 Prop贸sito general Variables
r10 v7 Prop贸sito general Variables
r11 v8 Prop贸sito general Variables
r12 v9 Prop贸sito general Variables
r13 sp Puntero de pila Prop贸sito general
r14 lr Registro de enlace Prop贸sito general
r15 pc Contador de programa