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.
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:
Dentro de la etapa de ejecuci贸n, se pueden despachar instrucciones simult谩neamente a diferentes unidades de ejecuci贸n, como ejemplo:
- Unidad aritm茅tico-l贸gica (ALU)
- Unidad de generaci贸n de direcciones (AGU)
- Unidad multiplicador-acumulador (MAC)
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:
- AArch64
Este modo de operaci贸n s贸lo tiene un set de instrucciones llamado A64, que tiene instrucciones de 32 bits de tama帽o fijo. - AArch32
Este modo tiene 2 sets de instrucciones.- A32 (ARM)
Es un set de 32 bits de tama帽o fijo de instrucci贸n. - T32 (Thumb)
Es un set de tama帽o variable de instrucci贸n de 32 o 16 bits.
- A32 (ARM)
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.
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 | 聽 |