¿Qué es un procesador ARM Cortex?

Cada vez con mas frecuencia podemos encontrar placas o kits de desarrollo que incluyen un procesador ARM Cortex. Desde una computadora de escritorio a un microcontrolador de un par de dólares, pasando por el procesador de un teléfono móvil o una Raspberry Pi todos estos dispositivos pueden contener en su interior alguna variedad de estos potentes procesadores. En este artículo haremos una introducción general, analizando algunas de sus características y cuáles son los mas accesibles para utilizar en nuestros proyectos.

ARM, el origen

ARM Holdings es una empresa británica que se dedica al diseño de procesadores. No los fabrica y comercializa como si lo hacen Intel o AMD sino que licencia sus diseños para que otras empresas los adapten o complementen según sus necesidades y los fabriquen para sus productos. Por ejemplo Qualcomm fabrica sus chips Snapdragon, que están presentes en un elevado porcentaje de dispositivos móviles a partir de un diseño de ARM y recientemente también Apple comenzó a hacer lo mismo. Por esta razón se suele decir que estos chips poseen una arquitectura ARM, ya que están basados en este diseño.

CISC y RISC

Los procesadores pueden clasificarse según muy distintos criterios. Uno de ellos es la complejidad del set de instrucciones que poseen, que da lugar a dos categorías: CISC y RISC.

La arquitectura CISC (Complex Instruction Set Computing) incluye instrucciones muy potentes, capaces de resolver tareas complicadas en pocos pasos, mientras que la arquitectura RISC (Reduced Instruction Set Computing) emplea instrucciones mas sencillas, que deben combinarse en un programa mas extenso para una situación mas compleja. La gran ventaja de los procesadores RISC es que consumen menos energía. Los primeros son mas adecuados para aplicaciones que requieren mucho poder de procesamiento, como una computadora de escritorio, mientras que los segundos encuentran su nicho de aplicación en dispositivos mas sencillos pero donde el consumo de energía es importante, como en las computadoras portátiles y sobre todo los teléfonos móviles. Los procesadores ARM emplean la arquitectura CISC y combinan potencia con bajo consumo, razón por la cual han triunfado en el mercado de dispositivos móviles, al punto de que casi 3 de cada 4 de estos aparatos tienen un procesador con esta arquitectura en su interior, aunque en la actualidad también están haciendo pie en las computadoras de escritorio.

Distintas familias para distintas aplicaciones

Como decía al principio, los procesadores ARM se pueden encontrar en dispositivos tan diferentes como una computadora o una placa de pocos dólares. Para cubrir un abanico tan amplio de aplicaciones (y costos) existen varias familias y modelos de chips ARM.

El primer chip ARM fue el ARM1, diseñado en 1985 y el primer diseño en ser comercializado fue el ARM2 al año siguiente. Los sucesivos modelos se fueron denominando mas o menos de esta forma, con un número hasta el ARM11 que apareció en el 2002. A partir de allí surgió la denominación mas moderna de Cortex, adoptada a partir del año 2004 hasta la actualidad, agregando una letra que identifica para que tipo de aplicaciones está destinado el diseño:

Cortex-A (Application): Para aplicaciones como teléfonos, tabletas, smart TVs o mini PCs. Son procesadores capaces de correr un sistema operativo, como Linux. Se los puede encontrar en placas como las Raspberry Pi, Orange Pi y BeagleBone.

Cortex-R (Real Time): Para aplicaciones de tiempo real como en equipamiento de redes de datos o en automóviles.

Cortex-M (Microcontroller): Aplicaciones sencillas, de bajo costo y poco consumo de energía, como IoT y dispositivos embebidos.

Cortex-X (Custom): Aplicaciones mas exigentes como computadoras de escritorio.

Esto significa que, salvo que a menos que hagamos desarrollos de aplicaciones exigentes, lo mas probable es que utilicemos en nuestros diseños algún procesador de la familia Cortex-M.

La familia Cortex-M

Los procesadores que emplean la arquitectura Cortex-M son los mas empleados para desarrollos simples, proyectos Maker o aplicaciones educativas. Dentro de esta subfamilia podemos encontrar las siguientes variantes, todas de 32 bits:

M0: Es el modelo mas simple y pequeño, destinado a aplicaciones de bajo costo y bajo consumo de energía.

M0+: Versión mejorada del M0, con mas potencia y menor consumo de energía.

M1: Diseñado específicamente para ser utilizado con FPGAS.

M3: Un procesador de alto rendimiento, agrega mas instrucciones para realizar tareas complejas. Incluye instrucciones de división y multiplicación y un módulo de debug que facilita la depuración del software.

M4: Es equivalente a M3 con el agregado de instrucciones de procesamiento de señales (DSP).

M7: Es un núcleo de alta performance, equivalente al M4 pero con mejor gestión de la energía. Los buses internos de datos e instrucciones son de 64 bits en vez de 32 como en los modelos anteriores.

M23: Es equivalente a un m0+ con el agregado de instrucciones matemáticas y una mayor seguridad.

M33: Combina lo mejor de los modelos M4 y M23.

M35P: Es una mejora del M33 incluyendo mas funciones de seguridad.

M55: Incluye funciones que lo hacen particularmente útil en aplicaciones de Inteligencia Artificial (Machine Learning).

Estas son las características de los núcleos (cores) de ARM. Los distintos fabricantes, como Texas Instruments, ST, Microchip, Silicon Lab, Infineon (y un largo etcétera) pueden incluir mas o menos memoria, periféricos o funciones opcionales, lo que da lugar a una enorme variedad de chips y de funcionalidades para un extensisimo abanico de aplicaciones.

Módulos, placas y kits de desarrollo

Si bien se pueden comprar los chips de los distintos fabricantes para soldarlos en nuestra propia PCB, también existen algunas placas y kits de desarrollo para hacer pruebas o proyectos sencillos. Veamos algunas de las que podemos encontrar en el mercado

Trinket M0 de Afafruit (M0+)
Raspberry Pi Pico (M0+)
Blue Pill (M3)
STM32 Nucleo (M4)
Teensy 4.1 (M7)

Conclusión

Hicimos un breve recorrido por las distintas familias y modelos de núcleos ARM y los procesadores derivados, haciendo hincapié en los distintos modelos Cortex-M, aclarando algunos conceptos y definiciones para poder abordar luego un estudio mas detallado.

Como siempre, espero que el artículo les haya sido de utilidad. Cualquier duda o sugerencia, pueden hacerla en la sección de comentarios.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: