ARM Cortex-M es un grupo de núcleos de procesadores ARM RISC de 32 bits con licencia de ARM Limited . Estos núcleos están optimizados para circuitos integrados de bajo coste y eficiencia energética, que se han integrado en decenas de miles de millones de dispositivos de consumo. [1] Aunque suelen ser el componente principal de los chips de microcontroladores , a veces también se integran en otros tipos de chips. La familia Cortex-M consta de Cortex-M0, [2] Cortex-M0+, [3] Cortex-M1, [4] Cortex-M3, [5] Cortex-M4, [6] Cortex-M7, [7] Cortex-M23, [8] Cortex-M33, [9] Cortex-M35P, [10] Cortex-M52, [11] Cortex-M55, [12] Cortex-M85. [13] Una opción de unidad de punto flotante (FPU) está disponible para los núcleos Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85, y cuando se incluyen en el silicio, estos núcleos a veces se conocen como "Cortex-MxF", donde 'x' es la variante del núcleo.
32 bits | |
---|---|
Año | Centro |
2004 | Corteza-M3 |
2007 | Corteza-M1 |
2009 | Corteza-M0 |
2010 | Corteza-M4 |
2012 | Corteza-M0+ |
2014 | Corteza-M7 |
2016 | Corteza-M23 |
2016 | Corteza-M33 |
2018 | Corteza-M35P |
2020 | Corteza-M55 |
2022 | Corteza-M85 |
2023 | Corteza-M52 |
La familia ARM Cortex-M son núcleos de microprocesadores ARM diseñados para su uso en microcontroladores , ASIC , ASSP , FPGA y SoC . Los núcleos Cortex-M se utilizan comúnmente como chips de microcontroladores dedicados, pero también están "ocultos" dentro de chips SoC como controladores de administración de energía, controladores de E/S, controladores de sistema, controladores de pantalla táctil, controladores de batería inteligente y controladores de sensores.
La principal diferencia con los núcleos Cortex-A es que los núcleos Cortex-M no tienen una unidad de gestión de memoria (MMU) para la memoria virtual , considerada esencial para los sistemas operativos "completos" . Los programas Cortex-M, en cambio, se ejecutan en hardware físico o en uno de los muchos sistemas operativos en tiempo real que admiten un Cortex-M .
Aunque los microcontroladores de 8 bits fueron muy populares en el pasado, Cortex-M ha ido ganando terreno lentamente en el mercado de 8 bits a medida que los precios de los chips Cortex-M de gama baja han ido bajando. Los Cortex-M se han convertido en un reemplazo popular de los chips de 8 bits en aplicaciones que se benefician de las operaciones matemáticas de 32 bits y reemplazan a los núcleos ARM heredados más antiguos, como ARM7 y ARM9 .
ARM Limited no fabrica ni vende dispositivos de CPU basados en sus propios diseños, sino que otorga licencias sobre la arquitectura del procesador a las partes interesadas. Arm ofrece una variedad de condiciones de licencia, que varían en costo y resultados. A todos los licenciatarios, Arm les proporciona una descripción de hardware integrable del núcleo ARM, así como un conjunto completo de herramientas de desarrollo de software y el derecho a vender silicio fabricado que contenga la CPU ARM.
Los fabricantes de dispositivos integrados (IDM) reciben la propiedad intelectual 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, consumo de energía muy bajo, extensiones del conjunto de instrucciones (incluido el punto flotante), optimizaciones de tamaño, soporte de depuración, etc. Para determinar qué componentes se han incluido en un chip de CPU ARM en particular, consulte la hoja de datos del fabricante y la documentación relacionada.
Algunas de las opciones de silicio para los núcleos Cortex-M son:
Núcleo ARM | Corteza M0 [17] | Corteza M0+ [18] | Corteza M1 [19] | Corteza M3 [20] | Corteza M4 [21] | Corteza M7 [22] | Corteza M23 [23] | Corteza M33 [24] | Corteza M35P [10] | Corteza M52 [25] | Corteza M55 [26] | Corteza M85 [27] |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Temporizador SysTick de 24 bits | Opcional (0,1) | Opcional (0, 1) | Opcional (0,1) | Sí (1) | Sí (1) | Sí (1) | Opcional (0, 1, 2) | Sí (1, 2) | Sí (1, 2) | Sí (1, 2) | Sí (1, 2) | Sí (1, 2) |
Puerto de E/S de ciclo único | No | Opcional | No | No | No | No | Opcional | No | No | No | No | No |
Memoria de banda de bits | No [28] | No [28] | No* | Opcional | Opcional | Opcional | No | No | No | No | No | No |
Unidad de protección de memoria ( MPU ) | No | Opcional (0, 8) | No | Opcional (0,8) | Opcional (0, 8) | Opcional (0, 8, 16) | Opcional (0, 4, 8, 12, 16) | Opcional (0, 4, 8, 12, 16) | Opcional (hasta 16)* | Opcional (0, 4, 8, 12, 16) | Opcional (0, 4, 8, 12, 16) | Opcional (0, 4, 8, 12, 16) |
Unidad de atribución de seguridad (SAU) y límites de pila | No | No | No | No | No | No | Opcional (0, 4, 8) | Opcional (0, 4, 8) | Opcional (hasta 8)* | Opcional (0, 4, 8) | Opcional (0, 4, 8) | Opcional (0, 4, 8) |
Caché de instrucciones | No [29] | No [29] | No [29] | No [29] | No [29] | Opcional (hasta 64 KB) | No | No | Opcional (hasta 16 KB) | Opcional (hasta 64 KB) | Opcional (hasta 64 KB) | Opcional (hasta 64 KB) |
Caché de datos | No [29] | No [29] | No [29] | No [29] | No [29] | Opcional (hasta 64 KB) | No | No | No | Opcional (hasta 64 KB) | Opcional (hasta 64 KB) | Opcional (hasta 64 KB) |
Instrucción TCM (ITCM) Memoria | No | No | Opcional (hasta 1 MB) | No | No | Opcional (hasta 16 MB) | No | No | No | Opcional (hasta 16 MB) | Opcional (hasta 16 MB) | Opcional (hasta 16 MB) |
Memoria de datos TCM (DTCM) | No | No | Opcional (hasta 1 MB) | No | No | Opcional (hasta 16 MB) | No | No | No | Opcional (hasta 16 MB) | Opcional (hasta 16 MB) | Opcional (hasta 16 MB) |
ECC para TCM y caché | No | No | No | No | No | No | No | No | Opcional | Opcional | Opcional | Opcional |
Registro de desplazamiento de tabla vectorial (VTOR) | No | Opcional (0,1) | Opcional (0,1) | Opcional (0,1) | Opcional (0,1) | Opcional (0,1) | Opcional (0,1,2) | Sí (1,2) | Sí (1,2) | Sí (1,2) | Sí (1,2) | Sí (1,2) |
Opciones adicionales de silicio: [14] [15]
Los Cortex-M0 / M0+ / M1 implementan la arquitectura ARMv6-M , [14] el Cortex-M3 implementa la arquitectura ARMv7-M , [15] el Cortex-M4 / Cortex-M7 implementa la arquitectura ARMv7E-M , [15] el Cortex-M23 / M33 / M35P implementa la arquitectura ARMv8-M , [30] y el Cortex-M52 / M55 / M85 implementa la arquitectura ARMv8.1-M . [30] Las arquitecturas son compatibles con instrucciones binarias desde ARMv6-M a ARMv7-M a ARMv7E-M. Las instrucciones binarias disponibles para los Cortex-M0 / Cortex-M0+ / Cortex-M1 pueden ejecutarse sin modificaciones en los Cortex-M3 / Cortex-M4 / Cortex-M7. Las instrucciones binarias disponibles para Cortex-M3 se pueden ejecutar sin modificaciones en Cortex-M4 / Cortex-M7 / Cortex-M33 / Cortex-M35P. [14] [15] Solo los conjuntos de instrucciones Thumb-1 y Thumb-2 son compatibles con las arquitecturas Cortex-M; el conjunto de instrucciones ARM heredado de 32 bits no es compatible.
Todos los núcleos Cortex-M implementan un subconjunto común de instrucciones que consta principalmente de Thumb-1, algunas Thumb-2, incluida una multiplicación de resultados de 32 bits. Los Cortex-M0 / Cortex-M0+ / Cortex-M1 / Cortex-M23 se diseñaron para crear la matriz de silicio más pequeña, por lo que tienen la menor cantidad de instrucciones de la familia Cortex-M.
Los Cortex-M0 / M0+ / M1 incluyen instrucciones Thumb-1, excepto las nuevas instrucciones (CBZ, CBNZ, IT) que se agregaron en la arquitectura ARMv7-M. Los Cortex-M0 / M0+ / M1 incluyen un subconjunto menor de instrucciones Thumb-2 (BL, DMB, DSB, ISB, MRS, MSR). [14] Los Cortex-M3 / M4 / M7 / M33 / M35P tienen todas las instrucciones Thumb-1 y Thumb-2 base. El Cortex-M3 agrega tres instrucciones Thumb-1, todas las instrucciones Thumb-2, división de enteros de hardware e instrucciones aritméticas de saturación . El Cortex-M4 agrega instrucciones DSP y una unidad de punto flotante de precisión simple opcional (VFPv4-SP). El Cortex-M7 agrega una FPU de precisión doble opcional (VFPv5). [22] [15] Los Cortex-M23 / M33 / M35P / M52 / M55 / M85 agregan instrucciones TrustZone .
Núcleo del brazo | Corteza M0 [17] | Corteza M0+ [18] | Corteza M1 [19] | Corteza M3 [20] | Corteza M4 [21] | Corteza M7 [22] | Corteza M23 [23] | Corteza M33 [24] | Corteza M35P | Corteza M52 [25] | Corteza M55 [26] | Corteza M85 [27] |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Arquitectura ARM | ARMv6-M [14] | ARMv6-M [14] | ARMv6-M [14] | ARMv7-M [15] | ARMv7E-M [15] | ARMv7E-M [15] | Línea base ARMv8-M [30] | Línea principal ARMv8-M [30] | Línea principal ARMv8-M [30] | Línea principal Armv8.1-M [30] | Línea principal Armv8.1-M [30] | Línea principal Armv8.1-M [30] |
Arquitectura de computadoras | De Neumann | De Neumann | De Neumann | Universidad de Harvard | Universidad de Harvard | Universidad de Harvard | De Neumann | Universidad de Harvard | Universidad de Harvard | Universidad de Harvard | Universidad de Harvard | Universidad de Harvard |
Canalización de instrucciones | 3 etapas | 2 etapas | 3 etapas | 3 etapas | 3 etapas | 6 etapas | 2 etapas | 3 etapas | 3 etapas | 4 etapas | 4-5 etapas | 7 etapas |
Latencia de interrupción ( memoria de estado de espera cero ) | 16 ciclos | 15 ciclos | 23 para NMI, 26 para IRQ | 12 ciclos | 12 ciclos | 12 ciclos, 14 peores casos | 15 ciclos, 24 seguros a NS IRQ | 12 ciclos, 21 seguros a NS IRQ | Por determinar | Por determinar | Por determinar | Por determinar |
Instrucciones del pulgar 1 | Mayoría | Mayoría | Mayoría | Completo | Completo | Completo | Mayoría | Completo | Completo | Completo | Completo | Completo |
Instrucciones del pulgar 2 | Alguno | Alguno | Alguno | Completo | Completo | Completo | Alguno | Completo | Completo | Completo | Completo | Completo |
Instrucciones de multiplicación 32×32 = resultado de 32 bits | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
Instrucciones de multiplicación 32×32 = resultado de 64 bits | No | No | No | Sí | Sí | Sí | No | Sí | Sí | Sí | Sí | Sí |
Instrucciones de división 32/32 = cociente de 32 bits | No | No | No | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
Instrucciones matemáticas saturadas | No | No | No | Alguno | Sí | Sí | No | Sí | Sí | Sí | Sí | Sí |
Instrucciones DSP | No | No | No | No | Sí | Sí | No | Opcional | Opcional | Sí | Sí | Sí |
Instrucciones de punto flotante de media precisión (HP) | No | No | No | No | No | No | No | No | No | Opcional | Opcional | Opcional |
Instrucciones de punto flotante de precisión simple (SP) | No | No | No | No | Opcional | Opcional | No | Opcional | Opcional | Opcional | Opcional | Opcional |
Instrucciones de punto flotante de doble precisión (DP) | No | No | No | No | No | Opcional | No | No | No | Opcional | Opcional | Opcional |
Instrucciones del vector de helio | No | No | No | No | No | No | No | No | No | Opcional | Opcional | Opcional |
Instrucciones de seguridad de TrustZone | No | No | No | No | No | No | Opcional | Opcional | Opcional | Opcional | Opcional | Sí |
Instrucciones del coprocesador | No | No | No | No | No | No | No | Opcional | Opcional | Opcional | Opcional | Opcional |
Instrucciones personalizadas ARM (ACI) | No | No | No | No | No | No | No | Opcional | No | Opcional | Opcional | Opcional |
Instrucciones de autenticación de puntero e identificación de destino de rama (PACBTI) | No | No | No | No | No | No | No | No | No | Opcional | No | Opcional |
Grupo | Bits de instrucciones | Instrucciones | Corteza M0, M0+, M1 | Corteza M3 | Corteza M4 | Corteza M7 | Corteza M23 | Corteza M33 | Corteza M35P | Corteza M52 | Corteza M55 | Corteza M85 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Pulgar-1 | 16 | ADC, ADD, ADR, AND, ASR, B, BIC, BKPT, BLX, BX, CMN, CMP, CPS, EOR, LDM, LDR, LDRB, LDRH, LDRSB, LDRSH, LSL, LSR, MOV, MUL, MVN, NOP, ORR, POP, PUSH, REV, REV16, REVSH, ROR, RSB, SBC, SEV, STM, STR, STRB, STRH, SUB, SVC, SXTB, SXTH, TST, UXTB, UXTH, WFE, WFI, YIELD | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
Pulgar-1 | 16 | CBNZ, CBZ | No | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
Pulgar-1 | 16 | ÉL | No | Sí | Sí | Sí | No | Sí | Sí | Sí | Sí | Sí |
Pulgar-2 | 32 | BL, DMB, DSB, ISB, MRS, MSR | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
Pulgar-2 | 32 | SDIV, UDIV, MOVT, MOVW, BW, LDREX, LDREXB, LDREXH, STREX, STREXB, STREXH | No | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí | Sí |
Pulgar-2 | 32 | ADC, ADD, ADR, AND, ASR, B, BFC, BFI, BIC, CDP, CLREX, CLZ , CMN, CMP, DBG, EOR, LDC, LDM, LDR, LDRB, LDRBT, LDRD, LDRH, LDRHT, LDRSB, LDRSBT, LDRSH, LDRSHT, LDRT, LSL, LSR, MCR, MCRR, MLA, MLS, MRC, MRRC, MUL, MVN, NOP, ORN, ORR, PLD, PLDW, PLI, POP, PUSH, RBIT, REV, REV16, REVSH, ROR, RRX, RSB, SBC, SBFX, SEV, SMLAL, SMULL, SSAT, STC, STM, STR, STRB, STRBT, STRD, STRH, STRHT, STRT, SUB, SXTB, SXTH, TBB, TBH, TEQ, TST, UBFX, UMLAL, UMULL, USAT, UXTB, UXTH, WFE, WFI, RENDIMIENTO | No | Sí | Sí | Sí | No | Sí | Sí | Sí | Sí | Sí |
Procesador de señal digital (DSP) | 32 | PKH, QADD, QADD16, QADD8, QASX, QDADD, QDSUB, QSAX, QSUB, QSUB16, QSUB8, SADD16, SADD8, SASX, SEL, SHADD16, SHADD8, SHASX, SHSAX, SHSUB16, SHSUB8, SMLABB, SMLABT, SMLATB, SMLATT, SMLAD, SMLALBB, SMLALBT, SMLALTB, SMLALTT, SMLALD, SMLAWB, SMLAWT, SMLSD, SMLSLD, SMMLA, SMMLS, SMMUL, SMUAD, SMULBB, SMULBT, SMULTT, SMULTB, SMULWT, SMULWB, SMUSD, SSAT16, SSAX, SSUB16, SSUB8, SXTAB, SXTAB16, SXTAH, SXTB16, UADD16, UADD8, UASX, UHADD16, UHADD8, UHASX, UHSAX, UHSUB16, UHSUB8, UMAAL, UQADD16, UQADD8, UQASX, UQSAX, UQSUB16, UQSUB8, USAD8, USADA8, USAT16, USAX, USUB16, USUB8, UXTAB, UXTAB16, UXTAH, UXTB16 | No | No | Sí | Sí | No | Opcional | Opcional | Sí | Sí | Sí |
Flotador SP | 32 | VABS, VADD, VCMP, VCMPE, VCVT, VCVTR, VDIV, VLDM, VLDR, VMLA, VMLS, VMOV, VMRS, VMSR, VMUL, VNEG, VNMLA, VNMLS, VNMUL, VPOP, VPUSH, VSQRT, VSTM, VSTR, VSUB | No | No | Opcional | Opcional | No | Opcional | Opcional | Opcional | Opcional | Opcional |
Flotador DP | 32 | VCVTA, VCVTM, VCVTN, VCVTP, VMAXNM, VMINNM, VRINTA, VRINTM, VRINTN, VRINTP, VRINTR, VRINTX, VRINTZ, VSEL | No | No | No | Opcional | No | No | No | Opcional | Opcional | Opcional |
Adquirir/Liberar | 32 | LDA, LDAB, LDAH, LDAEX, LDAEXB, LDAEXH, STL, STLB, STLH, STLEX, STLEXB, STLEXH | No | No | No | No | Sí | Sí | Sí | Sí | Sí | Sí |
Zona de confianza | 16 | BLXNS, BBXNS | No | No | No | No | Opcional | Opcional | Opcional | Opcional | Opcional | Sí |
32 | SG, TT, TTT, TTA, TTAT | |||||||||||
Coprocesador | 16 | CDP, CDP2, MCR, MCR2, MCRR, MCRR2, MRC, MRC2, MRRC, MRRC2 | No | No | No | No | No | Opcional | Opcional | Opcional | Opcional | Opcional |
ACI | 32 | CX1, CX1A, CX2, CX2A, CX3, CX3A, CX1D, CX1DA, CX2D, CX2DA, CX3D, CX3DA, VCX1, VCX1A, VCX2, VCX2A, VCX3, VCX3A | No | No | No | No | No | Opcional | No | Opcional | Opcional | Opcional |
PACBI | 32 | AUT, AUTG, BTI, BXAUT, PAC, PACBTI, PACG | No | No | No | No | No | No | No | Opcional | No | Opcional |
La arquitectura ARM para la serie ARM Cortex-M eliminó algunas características de los núcleos heredados más antiguos: [14] [15]
Las capacidades del conjunto de instrucciones ARM de 32 bits se duplican de muchas maneras en los conjuntos de instrucciones Thumb-1 y Thumb-2, pero algunas características ARM no tienen una característica similar:
El conjunto de instrucciones Thumb-1 de 16 bits ha evolucionado con el tiempo desde que se lanzó por primera vez en los núcleos ARM7T heredados con la arquitectura ARMv4T. Se agregaron nuevas instrucciones Thumb-1 a medida que se lanzaban las arquitecturas ARMv5 / ARMv6 / ARMv6T2 heredadas. Algunas instrucciones Thumb-1 de 16 bits se eliminaron de los núcleos Cortex-M:
Arquitectura y clasificación | |
---|---|
Conjunto de instrucciones | ARMv6-M ( Miniatura 1 (la mayoría), Miniatura 2 (algunos)) |
El núcleo Cortex-M0 está optimizado para chips de silicio de tamaño pequeño y para su uso en los chips de menor precio. [2]
Las características clave del núcleo Cortex-M0 son: [17]
Opciones de silicio:
Los siguientes microcontroladores se basan en el núcleo Cortex-M0:
Los siguientes chips tienen un Cortex-M0 como núcleo secundario:
Arquitectura y clasificación | |
---|---|
Microarquitectura | ARMv6-M |
Conjunto de instrucciones | Pulgar-1 (la mayoría) , Pulgar-2 (algunos) |
El Cortex-M0+ es un superconjunto optimizado del Cortex-M0. El Cortex-M0+ tiene una compatibilidad total con el conjunto de instrucciones del Cortex-M0, lo que permite el uso del mismo compilador y las mismas herramientas de depuración. La secuencia de comandos del Cortex-M0+ se redujo de 3 a 2 etapas, lo que reduce el consumo de energía y aumenta el rendimiento (mayor IPC promedio debido a que las ramas toman un ciclo menos). Además de las características de depuración del Cortex-M0 existente, se puede agregar una opción de silicio al Cortex-M0+ llamada Micro Trace Buffer (MTB) que proporciona un búfer de seguimiento de instrucciones simple. El Cortex-M0+ también recibió características de Cortex-M3 y Cortex-M4, que se pueden agregar como opciones de silicio, como la unidad de protección de memoria (MPU) y la reubicación de la tabla de vectores. [18]
Las características clave del núcleo Cortex-M0+ son: [18]
Opciones de silicio:
Los siguientes microcontroladores se basan en el núcleo Cortex-M0+:
Los siguientes chips tienen un Cortex-M0+ como núcleo secundario:
Los microcontroladores ARM más pequeños son del tipo Cortex-M0+ (a partir de 2014, el más pequeño, con 1,6 mm por 2 mm en un paquete a escala de chip, es Kinetis KL03). [32]
El 21 de junio de 2018, investigadores de la Universidad de Michigan anunciaron el « ordenador más pequeño del mundo» o dispositivo informático, basado en el ARM Cortex-M0+ (e incluyendo RAM y transmisores y receptores inalámbricos basados en energía fotovoltaica ), en el Simposio de 2018 sobre tecnología y circuitos VLSI con el artículo «Un sistema de sensor inalámbrico y sin batería de 0,04 mm 3 16 nW con procesador Cortex-M0+ integrado y comunicación óptica para medición de temperatura celular». El dispositivo tiene una décima parte del tamaño del ordenador récord mundial que IBM afirmó haber alcanzado en marzo de 2018, que es más pequeño que un grano de sal.
Arquitectura y clasificación | |
---|---|
Microarquitectura | ARMv6-M |
Conjunto de instrucciones | Pulgar-1 (la mayoría) , Pulgar-2 (algunos) |
El Cortex-M1 es un núcleo optimizado especialmente diseñado para ser cargado en chips FPGA . [4]
Las características clave del núcleo Cortex-M1 son: [19]
Opciones de silicio:
Los siguientes proveedores admiten el Cortex-M1 como núcleo blando en sus chips FPGA:
Arquitectura y clasificación | |
---|---|
Microarquitectura | ARMv7-M |
Conjunto de instrucciones | Pulgar-1 , Pulgar-2 , Saturado (algo), Dividir |
Las características clave del núcleo Cortex-M3 son: [20] [35]
Opciones de silicio:
Los siguientes microcontroladores se basan en el núcleo Cortex-M3:
Los siguientes chips tienen un Cortex-M3 como núcleo secundario:
Los siguientes FPGA incluyen un núcleo Cortex-M3:
Los siguientes proveedores admiten el Cortex-M3 como núcleo blando en sus chips FPGA:
Arquitectura y clasificación | |
---|---|
Microarquitectura | ARMv7E-M |
Conjunto de instrucciones | Pulgar-1 , Pulgar-2 , Saturado , DSP , Dividir, FPU (SP) |
En teoría, el Cortex-M4 es un Cortex-M3 más instrucciones DSP y una unidad de punto flotante (FPU) opcional. Un núcleo con una FPU se conoce como Cortex-M4F.
Las características clave del núcleo Cortex-M4 son: [21]
Opciones de silicio:
Los siguientes microcontroladores se basan en el núcleo Cortex-M4:
Los siguientes microcontroladores se basan en el núcleo Cortex-M4F (M4 + FPU ):
Los siguientes chips tienen un Cortex-M4 o M4F como núcleo secundario:
Arquitectura y clasificación | |
---|---|
Microarquitectura | ARMv7E-M |
Conjunto de instrucciones | Pulgar-1 , Pulgar-2 , Saturado , DSP , Dividir, FPU (SP y DP) |
El Cortex-M7 es un núcleo de alto rendimiento con casi el doble de eficiencia energética que el antiguo Cortex-M4. [7] Cuenta con una tubería superescalar de 6 etapas con predicción de ramificaciones y una unidad de punto flotante opcional capaz de realizar operaciones de precisión simple y, opcionalmente, de precisión doble . [7] [38] Los buses de instrucciones y datos se han ampliado a 64 bits de ancho en comparación con los buses de 32 bits anteriores. Si un núcleo contiene una FPU, se lo conoce como Cortex-M7F; de lo contrario, es un Cortex-M7.
Las características clave del núcleo Cortex-M7 son: [22]
Opciones de silicio:
Los siguientes microcontroladores se basan en el núcleo Cortex-M7:
Arquitectura y clasificación | |
---|---|
Microarquitectura | Línea base ARMv8-M |
Conjunto de instrucciones | Pulgar-1 (la mayoría) , Pulgar-2 (algunos) , Divide, TrustZone |
El núcleo Cortex-M23 se anunció en octubre de 2016 [39] y se basa en la arquitectura ARMv8-M que se anunció previamente en noviembre de 2015. [40] Conceptualmente, el Cortex-M23 es similar a un Cortex-M0+ más instrucciones de división de enteros y características de seguridad TrustZone, y también tiene una secuencia de instrucciones de 2 etapas . [8]
Las características clave del núcleo Cortex-M23 son: [23] [39]
Opciones de silicio:
Los siguientes microcontroladores se basan en el núcleo Cortex-M23:
Arquitectura y clasificación | |
---|---|
Microarquitectura | Línea principal ARMv8-M |
Conjunto de instrucciones | Pulgar-1 , Pulgar-2 , Saturado , DSP , Dividir, FPU (SP), TrustZone , Coprocesador |
El núcleo Cortex-M33 se anunció en octubre de 2016 [39] y se basa en la arquitectura ARMv8-M que se anunció previamente en noviembre de 2015. [40] Conceptualmente, el Cortex-M33 es similar a un cruce de Cortex-M4 y Cortex-M23, y también tiene un flujo de instrucciones de 3 etapas . [9]
Las características clave del núcleo Cortex-M33 son: [24] [39]
Opciones de silicio:
Los siguientes microcontroladores se basan en el núcleo Cortex-M33:
Los siguientes chips tienen un Cortex-M33 o M33F como núcleo secundario:
Arquitectura y clasificación | |
---|---|
Microarquitectura | Línea principal ARMv8-M |
Conjunto de instrucciones | Pulgar-1 , Pulgar-2 , Saturado , DSP , Dividir, FPU (SP), TrustZone , Coprocesador |
El núcleo Cortex-M35P se anunció en mayo de 2018 y se basa en la arquitectura Armv8-M . Es conceptualmente un núcleo Cortex-M33 con una nueva caché de instrucciones, además de nuevos conceptos de hardware a prueba de manipulaciones tomados de la familia ARM SecurCore y funciones de paridad y ECC configurables. [10]
Actualmente, la información sobre el Cortex-M35P es limitada, porque su Manual de referencia técnica y su Guía de usuario genérica aún no se han publicado.
Los siguientes microcontroladores se basan en el núcleo Cortex-M35P:
Arquitectura y clasificación | |
---|---|
Microarquitectura | Línea principal de helio ARMv8.1-M |
Conjunto de instrucciones | Pulgar-1 , Pulgar-2 , Saturado , DSP , Dividir, FPU (VFPv5), TrustZone , Coprocesador, MVE |
El núcleo Cortex-M52 se anunció en noviembre de 2023 y se basa en la arquitectura Armv8.1-M . Conceptualmente, puede verse como un cruce entre el Cortex-M33 y el Cortex-M55. Las diferencias clave son que su coprocesador Helium es de un solo latido (el M55 es de doble latido) y tiene un bus principal de 32 bits similar al M33 para facilitar la transición de aplicaciones. Tiene un flujo de instrucciones de 4 etapas. [11]
Las características clave del núcleo Cortex-M52 incluyen:
Opciones de silicio:
Los siguientes microcontroladores se basan en el núcleo Cortex M52
Arquitectura y clasificación | |
---|---|
Microarquitectura | Línea principal de helio ARMv8.1-M |
Conjunto de instrucciones | Pulgar-1 , Pulgar-2 , Saturado , DSP , Dividir, FPU (VFPv5), TrustZone , Coprocesador, MVE |
El núcleo Cortex-M55 se anunció en febrero de 2020 y se basa en la arquitectura Armv8.1-M . Tiene un flujo de instrucciones de 4 o 5 etapas. [12]
Las características clave del núcleo Cortex-M55 incluyen:
Opciones de silicio:
Arquitectura y clasificación | |
---|---|
Microarquitectura | Línea principal de helio ARMv8.1-M |
Conjunto de instrucciones | Pulgar-1 , Pulgar-2 , Saturado , DSP , Dividir, FPU (VFPv5), TrustZone , Coprocesador, MVE |
El núcleo Cortex-M85 se anunció en abril de 2022 y se basa en la arquitectura Armv8.1-M . Tiene un flujo de instrucciones de 7 etapas. [13]
Opciones de silicio:
La documentación de los chips ARM es extensa. En el pasado, la documentación de los microcontroladores de 8 bits cabía normalmente en un único documento, pero a medida que los microcontroladores han evolucionado, también lo ha hecho todo lo necesario para respaldarlos. Un paquete de documentación para chips ARM suele estar compuesto por una colección de documentos del fabricante del CI y del proveedor del núcleo de la CPU ( ARM Limited ).
Un árbol de documentación de arriba hacia abajo típico es:
Los fabricantes de circuitos integrados tienen documentos adicionales, como manuales de usuario de placas de evaluación, notas de aplicación, guías de inicio, documentos de bibliotecas de software, erratas y más. Consulte la sección Enlaces externos para obtener enlaces a documentos oficiales de Arm.
Núcleo ARM | Ancho de bit | Sitio web de ARM | Guía genérica del usuario de ARM | Manual de referencia técnica de ARM | Manual de referencia de la arquitectura ARM |
---|---|---|---|---|---|
Corteza-M0 | 32 | Enlace | Enlace | Enlace | ARMv6-M |
Corteza-M0+ | 32 | Enlace | Enlace | Enlace | ARMv6-M |
Corteza-M1 | 32 | Enlace | Enlace | Enlace | ARMv6-M |
Corteza-M3 | 32 | Enlace | Enlace | Enlace | ARMv7-M |
Corteza-M4 | 32 | Enlace | Enlace | Enlace | ARMv7E-M |
Corteza-M7 | 32 | Enlace | Enlace | Enlace | ARMv7E-M |
Corteza-M23 | 32 | Enlace | Enlace | Enlace | ARMv8-M |
Corteza-M33 | 32 | Enlace | Enlace | Enlace | ARMv8-M |
Corteza-M35P | 32 | Enlace | N / A | N / A | ARMv8-M |
Corteza-M52 | 32 | Enlace | N / A | Enlace | ARMv8.1-M |
Corteza-M55 | 32 | Enlace | Enlace | Enlace | ARMv8.1-M |
Corteza-M85 | 32 | Enlace | Enlace | Enlace | ARMv8.1-M |