Lista de microarhitecturi ale familiei ARM de procesoare și microcontrolere , dezvoltate de ARM Holdings și grupuri terțe. Comandat de versiunea set de instrucțiuni ARM.
ARM a furnizat o listă de firme care au implementat arhitecturile ARM în sine [1] . Unele informații sunt furnizate și de Keil [2] .
O listă a nucleelor proprii ale ARM este de asemenea publicată pe site-ul lor [3] .
Familia ARM | Arhitectura ARM | Nucleu | Suplimente | Cache (I/D), MMU | MIPS tipic @ MHz |
---|---|---|---|---|---|
ARM1 | ARMv1 | ARM1 | Prima implementare | Nu | |
ARM2 | ARMv2 | ARM2 | Instrucțiunea MUL (multiplicare) a fost adăugată la ARMv2 | Nu | 4 MIPS @ 8 MHz 0,33 DMIPS /MHz |
ARMv2a | ARM250 | MEMC (MMU), GPU și coprocesor I/O integrat . Instrucțiuni SWP și SWPB adăugate la ARMv2a (schimb) | Nu, MEMC1a | 7 MIPS la 12 MHz | |
ARM3 | ARMv2a | ARM3 | Prima memorie cache integrată | 4 KB unificat | 12 MIPS la 25 MHz 0,50 DMIPS/MHz |
ARM6 | ARMv3 | ARM60 | ARMv3 adaugă suport pentru adresarea memoriei pe 32 de biți (anterior pe 26 de biți) | Nu | 10 MIPS la 12 MHz |
ARM600 | Ca și în ARM60, în plus - cache și magistrală de coprocesor (pentru unitatea de procesare în virgulă mobilă FPA10) | 4 KB unificat | 28 MIPS la 33 MHz | ||
ARM610 | Ca și în ARM60, cache, fără magistrală de coprocesor | 4 KB unificat | 17 MIPS la 20 MHz 0,65 DMIPS/MHz | ||
ARM7 | ARMv3 | ARM700 | 8 KB unificat | 40 MHz | |
ARM710 | La fel ca ARM700, fără magistrală de coprocesor | 8 KB unificat | 40 MHz | ||
ARM710a | Ca ARM710 | 8 KB unificat | 40MHz 0,68DMIPS /MHz | ||
ARM7TDMI | ARMv4T | ARM7TDMI(-S) | Transportor în 3 trepte, Thumb. ARMv4 a abandonat adresarea pe 26 de biți | Nu | 15 MIPS la 16,8 MHz 63 DMIPS la 70 MHz |
ARM710T | La fel ca ARM7TDMI, are în plus un cache | 8 KB, unificat, MMU | 36 MIPS la 40 MHz | ||
ARM720T | La fel ca ARM7TDMI, are un cache | 8 KB, unificat, MMU (cu FCSE - Fast Context Switch Extension ) | 60 MIPS la 59,8 MHz | ||
ARM740T | La fel ca ARM7TDMI, are un cache | MPU | |||
ARM7EJ | ARMv5TEJ | ARM7EJ-S | Pipeline în 5 etape, Thumb, Jazelle DBX, instrucțiuni avansate DSP | Nu | |
ARM8 | ARMv4 | ARM810 [4] [5] | Conductă în 5 etape, predictor de ramificație static, dublarea lățimii de bandă a memoriei | 8 KB, unificat, MMU | 84 MIPS @ 72 MHz 1,16 DMIPS/MHz |
ARM9 TDMI | ARMv4T | ARM9TDMI | Transportor în 5 trepte, Thumb | Nu | |
ARM920T | Ca ARM9TDMI, cache-urile | 16 KB / 16 KB MMU cu FCSE ( Extensie de comutare rapidă a contextului ) [6] | 200 MIPS la 180 MHz | ||
ARM922T | Ca ARM9TDMI, cache-urile | 8 KB / 8 KB, MMU | |||
ARM940T | Ca ARM9TDMI, cache-urile | 4 KB / 4 KB MPU | |||
ARM9E | ARMv5TE | ARM946E-S | Thumb, DSP, cache | Memorie variată, strâns cuplată (TCM), MPU | |
ARM966E-S | Degetul mare, DSP | Fără cache și memorie TCM | |||
ARM968E-S | Ca ARM966E-S | Fără cache și TCM | |||
ARMv5TEJ | ARM926EJ-S | Degetul mare, Jazelle DBX, DSP | Diverse, TCM, MMU | 220 MIPS la 200 MHz | |
ARMv5TE | ARM996HS | Procesor fără viteză de ceas, restul este la fel ca ARM966E-S | Fără cache, TCM, MPU | ||
ARM10E | ARMv5TE | ARM1020E | Conductă în 6 etape, Thumb, DSP, (VFP) | 32 KB / 32 KB MMU | |
ARM1022E | Ca ARM1020E | 16 KB / 16 KB, MMU | |||
ARMv5TEJ | ARM1026EJ-S | Degetul mare, Jazelle DBX, DSP, (VFP) | Diverse, MMU sau MPU | ||
ARM11 | ARMv6 | ARM1136J(F)-S [7] | Conductă în 8 etape, SIMD , Thumb, Jazelle DBX, (VFP), DSP | Diverse, MMU | 740 @ 532-665MHz (i.MX31 SoC), 400-528MHz |
ARMv6T2 | ARM1156T2(F)-S | Conductă în 8 etape, SIMD , Thumb-2, (VFP), DSP | Diverse, MPU | ||
ARMv6Z | ARM1176JZ(F)-S | Ca și ARM1136EJ(F)-S | Diverse, MMU + TrustZone | 965 DMIPS la 772 MHz, până la 2600 DMIPS cu 4 procesoare [8] | |
ARMv6K | ARM11MPCore | Ca ARM1136EJ(F)-S, SMP cu 1-4 nuclee | Diverse, MMU | ||
SecurCore | ARMv6-M | SC000 | 0,9DMIPS/MHz | ||
ARMv4T | SC100 | ||||
ARMv7-M | SC300 | 1,25DMIPS/MHz | |||
Cortex-M | ARMv6-M | Cortex-M0 [9] | Profil de microcontroler, subset Thumb + Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB), [10] multiplicare hardware, temporizator de sistem opțional și memorie de bandă de biți | Cache opțional, fără TCM, fără MPU | 0,84DMIPS/MHz |
Cortex-M0+ [11] | Microcontroler, subset de Thumb și Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB), [10] multiplicare hardware, temporizator de sistem opțional și memorie de bandă de biți | Cache opțional, fără TCM, MPU opțional cu 8 regiuni | 0,93DMIPS/MHz | ||
Cortex-M1 [12] | Microcontroler, subset de Thumb și Thumb-2 (BL, MRS, MSR, ISB, DSB, DMB), [10] multiplicator hardware, opțiune SVC/bancă pentru pointer de stivă, temporizator de sistem opțional, fără memorie „bit-banding” | Cache opțional, 0-1024 KB I-TCM, 0-1024 KB D-TCM, fără MPU | 136 DMIPS la 170 MHz [13] (0,8 DMIPS/MHz dependent de FPGA) [14] | ||
ARMv7-M | Cortex-M3 [15] | Microcontroler, Thumb / Thumb-2, multiplicare și divizare hardware, memorie opțională de bandă de biți | Cache opțional, fără TCM, MPU opțional cu 8 regiuni | 1,25DMIPS/MHz | |
ARMv7E-M | Cortex-M4 [16] | Microcontroler, Thumb / Thumb-2 / DSP / extensie opțională FPv4 pentru precizie unică, multiplicare și divizare hardware, memorie opțională de bandă de biți | Cache opțional, fără TCM, MPU opțional cu 8 regiuni | 1,25 DMIPS/MHz (1,27 cu FPU FPv4) | |
ARMv7E-M | Cortex-M7 [17] | Microcontroler, Thumb / Thumb-2 / DSP / opțional FPU de precizie simplă și dublă, multiplicare și divizare hardware | 0-64 KB I-cache, 0-64 KB D-cache, 0-16 MB I-TCM, 0-16 MB D-TCM (toate cu ECC opțional), MPU opțional pentru 8 sau 16 regiuni | 2,14DMIPS/MHz | |
Linia de bază ARMv8-M | Cortex-M23 | ARM TrustZone | 0,98DMIPS/MHz
2,5 CoreMark /MHz | ||
ARMv8-M Mainline | Cortex-M33 | ARM TrustZone | 1,5DMIPS/MHz
3,86 CoreMark/MHz | ||
Cortex-R | ARMv7-R | Cortex-R4 [18] | Profil în timp real, Thumb / Thumb-2 / DSP / opțional VFPv3 FPU, multiplicare hardware și divizare opțională, paritate opțională și ECC pentru magistralele interne, cache, TCM, conductă în 8 etape, două nuclee în modul lockstep cu logica de gestionare a erorilor | 0-64 KB / 0-64 KB, 0-2 din 0-8 MB TCM, opțional 8 sau 12 MPU | |
Cortex-R5 (MPCore) [19] | Profil în timp real, Thumb / Thumb-2 / DSP / opțional VFPv3 FPU, multiplicare hardware și divizare opțională, paritate opțională și ECC pentru magistralele interne, cache, TCM, conductă în 8 etape, două nuclee în modul lockstep cu logica de gestionare a erorilor. Opțional, două nuclee pot funcționa ca altele independente. Port periferic cu latență scăzută (LLPP), Port de coerență a acceleratorului (ACP) [20] | 0-64 KB / 0-64 KB, 0-2 din 0-8 MB TCM, opt. MPU pe 12 sau 16 | |||
Cortex-R7 (MPCore) [21] | Profil în timp real, Thumb / Thumb-2 / DSP / opțional VFPv3 FPU, multiplicare hardware și divizare opțională, paritate opțională și ECC pentru magistralele interne, cache, TCM, conductă în 11 etape, două nuclee în modul lockstep cu logica de gestionare a erorilor. Kernel-uri necomandate, cu redenumire dinamică a registrului. Opțional, două nuclee pot funcționa ca altele independente. Port periferic cu latență scăzută (LLPP), Port de coerență a acceleratorului (ACP) [20] | 0-64 KB / 0-64 KB, ? de la 0-128 KB TCM, opt. MPU la 16 | |||
Cortex-A | ARMv7-A | Cortex-A5 [22] | Profil aplicație, ARM / Thumb / Thumb-2 / DSP / SIMD / opțional VFPv4-D16 FPU / opțional NEON / Jazelle RCT și DBX, 1-4 nuclee, opțional MPCore, SCU, unitate de control snoop, General Interrupt Controller (GIC), Portul de coerență al acceleratorului (ACP) | 4-64 KB / 4-64 KB L1, MMU + TrustZone | 1,57 DMIPS/MHz per nucleu |
Cortex-A7 MPCore [23] | Profil de aplicație, ARM / Thumb / Thumb-2 / DSP / VFPv4-D16 FPU / NEON / Jazelle RCT și DBX / virtualizare hardware, execuție în ordine, superscalar, SMP pentru 1-4 nuclee, Extensii mari de adrese fizice (LPAE), Snooping Control Unit (SCU), General Interrupt Controller (GIC), Accelerator Coherence Port (ACP). Arhitectura și setul de extensii sunt aceleași cu Cortex-A15. 8-10 etape într-o conductă, consum redus de energie [24] | 32 KB / 32 KB L1, 0-4 MB L2, MMU + TrustZone | 1,9 DMIPS/MHz per nucleu | ||
Cortex-A8 [25] | Profil de aplicație, ARM / Thumb / Thumb-2 / VFPv3 FPU / NEON / Jazelle RCT și DAC, superscalar în 13 trepte | 16-32 KB / 16-32 KB L1, 0-1 MB L2 opt. ECC, MMU + TrustZone | până la 2000 (2,0 DMIPS/MHz de la 600 MHz la peste 1 GHz ) | ||
Cortex-A9 MPCore [26] | Profil de aplicație, ARM / Thumb / Thumb-2 / DSP / opțional VFPv3 FPU / opțional NEON / Jazelle RCT și DBX, execuție necorespunzătoare cu speculativ, superscalar, SMP pentru 1-4 nuclee, control unit snooping (SCU), controler comun de întrerupere (GIC), port de coerență a acceleratorului (ACP). | 16-64 KB / 16-64 KB L1, 0-8 MB L2 opt. paritate, MMU + TrustZone | 2,5 DMIPS/MHz per nucleu, 10.000 DMIPS la 2 GHz pe tehnologia de proces TSMC 40G (două nuclee) | ||
Cortex-A12 [27] a fuzionat ulterior cu A17 | Profil de aplicație, ARM / Thumb-2 / DSP / VFPv4 FPU / NEON / virtualizare hardware, execuție speculativă în afara ordinului, superscalar, SMP cu 1-4 nuclee, extensii mari de adrese fizice (LPAE), unitate de control snoop (SCU), întreruperi comune controler (GIC), portul de coerență al acceleratorului (ACP). | 32-64KB/32KB L1, 256KB-8MB L2 | 3,0 DMIPS/MHz per nucleu | ||
Cortex-A15 MPCore [28] | Profil aplicație, ARM / Thumb / Thumb-2 / DSP / VFPv4 FPU / NEON / diviziune întreagă / MAC (combinat multiplicare-adăugați) / Jazelle RCT / virtualizare hardware, execuție speculativă în afara ordinului, superscalar, SMP pentru 1-4 nuclee, extensii mari de adresă fizică (LPAE), unitate de control al scrutinului (SCU), controler general de întrerupere (GIC), port de coerență a acceleratorului (ACP). conductă în 15-24 etape [24] | 32 KB Paritate / 32 KB ECC L1, 0-4 MB L2 ECC, MMU + TrustZone | Cel puțin 3,5 DMIPS/MHz per nucleu (până la 4,01 DMIPS/MHz în funcție de implementare) [29] | ||
Cortex-A17MPCore | Profil aplicație, ARM / Thumb / Thumb-2 / DSP / VFPv4 FPU / NEON / diviziune întreagă / MAC (combinat multiplicare-adăugați) / Jazelle RCT / virtualizare hardware, execuție speculativă în afara ordinului, superscalar, SMP pentru 1-4 nuclee, extensii mari de adresă fizică (LPAE), unitate de control al scrutinului (SCU), controler general de întrerupere (GIC), port de coerență a acceleratorului (ACP). | MMU + TrustZone | |||
Cortex-A50 | ARMv8-A | Cortex-A53 [30] | Profil de aplicație, AArch32 și AArch64, SMP pentru 1-4 nuclee, Trustzone, NEON SIMD îmbunătățit, VFPv4, virtualizare hardware, rulare până la două instrucțiuni pe ciclu, execuție în ordine a conductei | 8-64 KB paritate / 8-64 KB ECC L1 per nucleu, 128 KB-2 MB partajat L2, adrese fizice pe 40 de biți | 2,3DMIPS/MHz |
Cortex-A57 [31] | Profil de aplicație, AArch32 și AArch64, SMP 1-4 nuclee, Trustzone, NEON SIMD îmbunătățit, VFPv4, virtualizare hardware, buclă cu mai multe instrucțiuni, execuție profundă în afara ordinului | 48 KB dublă paritate (DED) / 32 KB L1 cu ECC per nucleu, 512 KB-2 MB partajat L2, 44 de biți phys. adrese | Cel puțin 4,1 DMIPS/MHz per nucleu (până la 4,76 DMIPS/MHz în funcție de implementare) | ||
Cortex-A72 [32] | |||||
Familia ARM | Arhitectura ARM | Nucleu | Suplimente | Cache (I/D), MMU | MIPS tipic @ MHz |
Dezvoltat de terți care dețineau o licență de arhitectură de la ARM care permitea implementarea instrucțiunilor proprietare.
Familie | Set de comenzi | microarhitectura | Set extensie | Cache I/D), MMU | MIPS tipic tipic @ MHz |
---|---|---|---|---|---|
Braț puternic | ARMv4 | SA-110 | transportor cu 5 trepte | 16 KB / 16 KB, MMU | 100-206MHz 1.0DMIPS /MHz |
SA-1100 | Dezvoltarea SA-110 | 16 KB / 8 KB, MMU | |||
Faraday [33] | ARMv4 | FA510 | Transportor în 6 trepte | Până la 32 KB / 32 KB cache, MPU | 1,26 DMIPS/MHz 100-200 MHz |
FA526 | Până la 32 KB / 32 KB cache, MMU | 1,26 MIPS/MHz 166-300 MHz | |||
FA626 | Transportor cu 8 trepte | 32 KB / 32 KB cache, MMU | 1,35DMIPS/MHz 500MHz | ||
ARMv5TE | FA606TE | transportor cu 5 trepte | Fără cache, fără MMU | 1.22DMIPS/MHz 200MHz | |
FA626TE | Transportor cu 8 trepte | 32 KB / 32 KB cache, MMU | 1,43 MIPS/MHz 800MHz | ||
FMP626TE | Conductă în 8 trepte, SMP | 1,43 MIPS/MHz 500MHz | |||
FA726TE | Conductă în 13 etape, care rulează două instrucțiuni pe ceas | 2,4DMIPS/MHz 1000MHz | |||
Xscale | ARMv5TE | Xscale | Conductă în 7 etape, Thumb, DSP | 32 KB / 32 KB MMU | 133-400 MHz |
Bulverde | Opțional: extensii W MMX , Wireless SpeedStep | 32 KB / 32 KB MMU | 312-624 MHz | ||
Monahans [34] | Opțional: extensie WMMX2 | 32 KB / 32 KB (L1), cache L2 opțional de până la 512 KB, MMU | Până la 1,25 GHz | ||
Marvell Sheeva | ARMv5 | Feroceon | 5-8 etape de conductă, rulând o instrucțiune pe ciclu | 16 KB / 16 KB, MMU | 600-2000 MHz |
Jolteon | 5-8 etape de conductă, rulând două instrucțiuni pe ciclu | 32 KB / 32 KB MMU | |||
PJ1 (Mohawk) | 5-8 etape de conductă, rulând două instrucțiuni pe ciclu, WMMX2 | 32 KB / 32 KB MMU | 1,46DMIPS/MHz 1,06GHz | ||
ARMv6 / ARMv7-A | PJ4 | 6-9 etape de conductă, rulând două instrucțiuni pe ciclu, WMMX2, SMP | 32 KB / 32 KB MMU | 2,41DMIPS/MHz 1,6GHz | |
mucusul | ARMv7-A | Scorpion [35] | 1 sau 2 miezuri. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv3 FPU / NEON (lată de 128 de biți) | 256 KB L2 per nucleu | 2,1 DMIPS/MHz per nucleu |
[ 35] | 1, 2 sau 4 nuclee. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON (128 de biți lățime) | 4 KB / 4 KB L0, 16 KB / 16 KB L1, 512 KB L2 per nucleu | 3,3 DMIPS/MHz per nucleu | ||
Apple A6 , Apple A6X |
ARMv7-A | Swift [36] | 2 miezuri. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON | L1: 32KB / 32KB, L2: 1MB | 3,5 DMIPS/MHz per nucleu |
Apple A7 | ARMv8-A | Ciclon | 2 miezuri. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON / TrustZone / AArch64 | L1: 64 KB / 64 KB, L2: 1 MB | 1,3 GHz |
Apple A8 | ARMv8-A | Ciclon | 2 miezuri. ARM / Thumb / Thumb-2 / DSP / SIMD / VFPv4 FPU / NEON / TrustZone / AArch64 | L1: (n/a);KB, L2: (n/a);MB | 1,4 GHz |
X Gene | ARMv8-A | X Gene | 64 de biți, rulați până la 4 instrucțiuni pe ciclu, SMP, 64 de nuclee [37] | cache, MMU, virtualizare | 3 GHz |
Denver | ARMv8-A | Denver | 64 de biți, 2 nuclee SMP, decodor hardware până la 2 instrucțiuni pe ciclu sau recompilare dinamică software la instrucțiuni largi | 128 KB I / 64 KB D | până la 2,5 GHz |
ThunderX | ARMv8-A | ThunderX | 64 de biți, 2 modele: 8-16 sau 24-48 de nuclee (2 cipuri pot fi combinate) | Până la 2,5 GHz |