# ARM9

ARM9 es un grupo de núcleos de procesadores RISC ARM de 32-bits con licencia de ARM Holdings para uso en microcontroladores. La familia de núcleos ARM9 consta de ARM9TDMI, ARM940T, ARM9E-S, ARM966E-S, ARM920T, ARM922T, ARM946E-S, ARM9EJ-S, ARM926EJ-S, ARM968E-S, ARM996HS. Dado que los núcleos ARM9 se lanzaron entre 1998 y 2006, ya no se recomiendan para nuevos diseños de circuitos integrados. Ahora se prefieren los núcleos ARM Cortex-A, ARM Cortex-M, ARM Cortex-R.

## Contenido

Con esta generación de diseño, ARM pasó de una arquitectura von Neumann (arquitectura Princeton) a una arquitectura Harvard (modificada; es decir, caché dividida) con buses de instrucción y datos (y cachés) separados, aumentando significativamente su velocidad potencial. La mayoría de los chips de silicio que integran estos núcleos los empaquetan como chips de arquitectura Harvard modificados y combinan los dos buses de direcciones en el otro lado de las cachés CPU y las memorias estrechamente acopladas.
Hay dos subfamilias que implementan diferentes versiones de arquitectura ARM.

### Diferencias con los núcleos ARM7

Las mejoras claves sobre los núcleos ARM7, habilitadas al gastar más transistores, incluyen:
* Disminución de la producción de calor y menor riesgo de sobrecalentamiento.
* Mejora de frecuencia de reloj. Cambiar de una tubería de tres etapas a una de cinco etapas permite que la velocidad del reloj se duplique aproximadamente en el mismo proceso de fabricación del silicio.
* Mejora en el conteo de ciclos. Se midió que muchos archivos binarios ARM7 no modificados tardaron aproximadamente un 30 % menos en ejecutarse en núcleos ARM9. Las mejoras clave incluyen:
** Carga rápida y almacenamiento; muchas instrucciones ahora solo tardan un solo ciclo. Esto es ayudado tanto por la arquitectura modificada de Harvard (reduciendo la contención de bus y caché) como por las nuevas etapas de canalización.
** Exponer los enclavamientos de la tubería, lo que permite optimizaciones del compilador para reducir el bloqueo entre etapas.
Además, algunos núcleos ARM9 incorporan instrucciones "DSP mejorado", como una acumulación múltiple, para admitir implementaciones más eficientes de algoritmos de procesamiento de señales digitales.
El cambio de una arquitectura von Neumann implicaba el uso de una memoria caché no unificada, de modo que las recuperaciones de instrucciones no expulsen datos (y viceversa). Los núcleos ARM9 tienen señales de bus de datos y direcciones separadas que los diseñadores de chips usan de varias maneras. En la mayoría de los casos, conectan a la menor parte del espacio de direcciones en el espacio de direcciones en el estilo von Neumann (utilizado tanto para instrucciones como para datos) a una interconexión AHB que se conecta a una interfaz DRAM y una Interfaz de Bus Externo Bus Interface que se usa con memoria flash NOR flash. Tales híbridos ya no son procesadores de arquitectura pura de Harvard.

### Licencia ARM

ARM Holdings no fabrica ni vende dispositivos de CPU basados en sus propios diseños, sino que licencia la arquitectura del procesador a las partes interesadas. ARM ofrece una variedad de términos de licencia, que varían en costo y entregas. Para todo los licenciatarios, ARM proporciona una descripción del hardware integrable del núcleo ARM, así como un conjunto completo de herramientas de desarrollo de software y derecho a vender silicio fabricado que contiene la CPU ARM.

### Personalización de silicio

Los integrantes de dispositivos integrados (IDM) reciben la IP del procesador ARM como RTL sintetizable (escrito en Verilog). De esta forma, tienen la capacidad de realizar optimizaciones y extensiones a nivel arquitectónico. Esto permite al fabricante lograr objetivos de diseño personalizados, como mayor velocidad de reloj, muy bajo consumo de energía, extensiones del conjunto de instrucciones, optimizaciones de tamaño, soporte de depuración, etc. Para determinar qué componentes se han incluido en un chip de CPU ARM, en particular, hay que consultar la hoja de datos del fabricante y la documentación relacionada.

## Núcleos

| Año | Núcleos ARM9 |
| 1998 | ARM9TDMI |
| 1998 | ARM940T |
| 1999 | ARM9E-S |
| 1999 | ARM966E-S |
| 2000 | ARM920T |
| 2000 | ARM922T |
| 2000 | ARM946E-S |
| 2001 | ARM9EJ-S |
| 2001 | ARM926EJ-S |
| 2004 | ARM968E-S |
| 2006 | ARM996HS |
La familia de procesador multinucleo ARM MPCore admite software escrito utilizado los paradigmas de programación multiproceso asimétrico (AMP) o simétrico (SMP). Para el desarrollo de AMP, cada unidad de central de procesamiento dentro de MPCore puede verse como un procesador independiente y, como tal, puede seguir las estrategias tradicionales de desarrollo de un solo procesador.

### ARM9TDMI

ARM9TDMI es un sucesor del popular núcleo ARM7TDMI, y también se basa en la arquitectura ARMv4T. Los núcleos basados en el admiten conjuntos de instrucciones de ARM de 32-bits y Thumb de 16-bit e incluyen:
* ARM920T con 16 KB cada uno de caché I/D y una MMU
* ARM922T con 8 KB cada uno de caché I/D y una MMU.
* ARM940T con caché y una Unidad de Protección de Memoria (MPU)

### ARM9E-S and ARM9EJ-S

ARM9E, y su hermano ARM9EJ, implementan la tubería básica ARM9TDMI, pero agregan soporte para la arquitectura ARMv5TE, que incluye algunas extensiones del conjunto de instrucciones DSP-es que. Además, el ancho de la unidad multiplicadora se ha duplicado, reduciendo a la mitad el tiempo requerido para la mayoría de las operaciones de multiplicación. Admiten conjuntos de instrucciones de 32-bits, 16-bits y, a veces, 8-bits.
* ARM926EJ-S con tecnología ARM Jazelle, que permite la ejecución directa del código de bytes Java bytecode de 8 bits en hardware, y una MMU.
* ARM946
* ARM966
* ARM968

## Chips
### ARM920T

* Samsung S3C2440
* Atmel AT91RM9200

### ARM926EJ-S

* Semiconductor Cypress EZ-USB FX3
* Tecnología de microchip (anteriormente Atmel) AT91SAM9260, AT91SAM9G, AT91SAM9M, AT91SAM9N/CN, AT91SAM9R/RL, AT91SAM9X, AT91SAM9XE (ver AT91SAM9)
* NXP (anteriormente Freescale Semiconductor) Serie i.MX2, (ver I.MX), Series LPC3100 y LPC3200
* Texas Instruments OMAP 850, 750, 733, 730, L137, L138, 5912 (también 5948, que es una versión específica del cliente, hecha para Bosch)
* HP iLO 4
* Tecnología 5V5VT1310/1312/1314
* STMicroelectronics SPEAr300/600

### ARM966E-S

* STMicroelectronics STR9

### Núcleo ARM9 sin referencia

* ASPEED AST2400
* Atmel AT91CAP9
* CSR Quatro 4300
* Centrality Atlas III
* Cirrus Logic EP9315 ARM9 CPU, 200 MHz
* Digi NS9215, NS9210
* HiSilicon Kirin K3V1
* Infineon Technologies S-GOLDlite PMB 8875
* LeapFrog LF-1000
* Nintendo Starlet (Wii coprocessor)
* Nintendo NTR-CPU (CPU Nintendo DS), CPU TWL (CPU Nintendo DSi; igual que la DS pero con reloj a 133 MHz en lugar de 67 MHz)
* NXP Semiconductors LPC2900, LH7A, (anteriormente Freescale Semiconductor) i.MX1x
* Nuvoton NUC900
* Marvell Kirkwood
* MediaTek MT1000, MT6235-39, MT6268, MT6516
* PRAGMATEC RABBITV3 (ARM920T rev 0 (v4l)) used in Karotz)
* Qualcomm MSM6xxx
* Qualcomm Atheros AR6400
* Samsung S3C24xx
* STMicroelectronics Nomadik
* Texas Instruments OMAP 1
* Texas Instruments Sitara AM1x
* Texas Instruments TMS320DM365/TMS320DM368 ARM9EJ-S
* VIA WonderMedia 8505 and 8650
* Zilog Encore! 32

## Documentación

La cantidad de documentación para todos los chip ARM es desalentadora, especialmente para los recién llegados. La documentación para microcontroladores de las últimas décadas se incluiría fácilmente en un solo documento, pero a medida que los chips han evolucionado, la documentación ha crecido. La documentación total es especialmente difícil para comprender para los chips ARM, ya que consta de documentos de fabricante de IC y documentos del proveedor principal de CPU (ARM Holdings).
Un árbol de documentación de arriba hacia abajo tipo es: diapositiva de marketing de alto nivel, hoja de datos para el chip físico exacto, un manual de referencia detallado que describe periféricos comunes y otros aspectos de los chips físicos dentro de la misma serie, manual de referencia para el procesador central ARM exacto dentro del chip, manual de referencia para la arquitectura ARM del núcleo que incluye una descripción detallada de todos los conjuntos de instrucciones.

### Árbol de documentación (de arriba a abajo)

* Diapositivas de marketing del fabricante de IC.
* Hojas de datos del fabricante de IC.
* Manuales IC de referencia del fabricante.
* Manuales de referencia del núcleo ARM.
* Manuales de referencia de arquitectura ARM.
El fabricante de IC tiene documentos adicionales, que incluyen: manuales de usuario de la placa de evaluación, notas de aplicación, introducción al software de desarrollo, documentos de la biblioteca de software, erratas y más.