Cortex-M3 vs Cortex-M4 – czym się różnią?
FPU
Koprocesor FPU (Floating-Point Unit) służy do wykonywania operacji na liczbach zmiennoprzecinkowych pojedynczej precyzji i jest elementem stosowanym opcjonalnie w rdzeniach nazywanych Cortex-M4F (nie wszyscy producenci używają sufiksu F w nazwie rdzenia, nie wynika on z oficjalnej nomenklatury firmy ARM). FPU zapewnia realizację następujących operacji na liczbach zmiennoprzecinkowych pojedynczej precyzji: dodawanie, odejmowanie, mnożenie, dzielenie, mnożenie i sumowanie oraz pierwiastkowanie. Zapewnia również konwersję formatów pomiędzy liczbami stałoprzecinkowymi a zmiennoprzecinkowymi oraz dostarcza instrukcje z wykorzystaniem stałych zmiennoprzecinkowych.
FPU ma cztery główne funkcjonalności:
- udostępnia rozszerzone rejestry zmiennoprzecinkowe, które oprogramowanie traktuje jak 32 rejestry pojedynczej precyzji lub jak 16 rejestrów podwójnego słowa,
- wykonuje operacje arytmetyczne na liczbach zmiennoprzecinkowych pojedynczej precyzji,
- przeprowadza konwersję formatów między liczbami całkowitymi, zmiennoprzecinkowymi pojedynczej precyzji, i zmiennoprzecinkowymi połówkowej precyzji (16-bitowymi),
- przesyła dane rejestrów pojedynczej precyzji i podwójnego słowa.
Pozostałe układy funkcjonalne, takie jak kontroler wektorowych przerwań zagnieżdżonych NVIC (Nested Vectored Interrupt Controller), jednostka ochrony pamięci MPU (Memory Protection Unit) oraz port debugowania DAP (Debug Access Port) są takie same jak w rdzeniu Cortex-M3.
W tabeli zestawiono najważniejsze cechy rdzeni Cortex-M3 i Cortex-M4/-M4F.
Porównanie cech rdzeni Cortex-M3 i Cortex-M4/Cortex-M4F
Parametr | Cortex-M3 | Cortex-M4 |
Architektura | ARMv7-M (Harvard) | ARMv7-M (Harvard) |
Obsługa ISA | Thumb/Thumb-2 | Thumb/Thumb-2 |
Rozszerzenia DSP | Niedostępne | Jednotaktowa, 16- /32-bitowa jednostka MAC. Jednotaktowa, 2x 16-bitowa jednostka MAC. zestaw 8-/16-bitowych instrukcji SIMD Zaimplementowane sprzętowo operacje dzielenia. (2-12 cykli). |
Opcjonalna jednostka zmiennoprzecinkowa | Niedostępne | Jednostka zmiennoprzecinkowa pojedynczej precyzji. Zgodność z normą IEEE 754. Tylko w Cortex-M4F. |
Przetwarzanie potokowe | 3-stopniowe + wykonywanie spekulatywne instrukcji za skokiem warunkowym. | 3-stopniowe + wykonywanie spekulatywne instrukcji za skokiem warunkowym. |
Szybkość przetwarzania – test Dhrystone | 1,25 DMIPS/MHz | 1,25 DMIPS/MHz |
Ochrona pamięci | Opcjonalna jednostka ochrony pamięci (MPU – Memory Protection Unit) dla 8 regionów z opcją wyłączania podregionów (SRD – Sub Region Disable) i domyślną segmentacją. | Opcjonalna jednostka ochrony pamięci (MPU – Memory Protection Unit) dla 8 regionów z opcją wyłączania podregionów (SRD – Sub Region Disable) i domyślną segmentacją. |
Przerwania | Przerwania niemaskowalne (NMI – Non-Maskable Interrupt) + od 1 do 240 przerwań fizycznych | Przerwania niemaskowalne (NMI – Non-Maskable Interrupt) + od 1 do 240 przerwań fizycznych |
Opóźnienie obsługi przerwania | 12 cykli | 12 cykli |
Opóźnienie między przerwaniami | 6 cykli | 6 cykli |
Poziomy priorytetów przerwań | Od 8 do 256 poziomów priorytetów | Od 8 do 256 poziomów priorytetów |
Kontroler przerwań wake-up (Wake-up Interrupt Controller) | Do 240 przerwań wake-up | Do 240 przerwań wake-up |
Tryby uśpienia | Instrukcje WFI (Wait for Interrupt) i WFE (Wait for Event) oraz opcja przejścia do trybu uśpienia po wyłączeniu (Sleep On Exit). Sygnały trybu uśpienia i głębokiego uśpienia (Sleep & Deep Sleep Signals). Opcjonalny tryb zachowania (Retention Mode) z zestawem zarządzania energią (ARM Power Management Kit). |
Instrukcje WFI (Wait for Interrupt) i WFE (Wait for Event) oraz opcja przejścia do trybu uśpienia po wyłączeniu (Sleep On Exit). Sygnały trybu uśpienia i głębokiego uśpienia (Sleep & Deep Sleep Signals). Opcjonalny tryb zachowania (Retention Mode) z zestawem zarządzania energią (ARM Power Management Kit). |
Operacje bitowe | Zintegrowane instrukcje oraz atomowy dostęp do bitów (bit banding). | Zintegrowane instrukcje oraz atomowy dostęp do bitów (bit banding). |
Debugowanie | Opcjonalne testowanie połączeń (JTAG – Joint Test Action Group) oraz porty SWD (Serial-Wire Debug). Do 8 punktów zatrzymania (breakpoints) i 4 punktów obserwacji (watchpoints). |
Opcjonalne testowanie połączeń (JTAG – Joint Test Action Group) oraz porty SWD (Serial-Wire Debug). Do 8 punktów zatrzymania (breakpoints) i 4 punktów obserwacji (watchpoints). |
Śledzenie | Opcjonalne instrukcje śledzenia: ETM (Embedded Trace Macrocell), DWT (Data Watchpoint) oraz ITM (Instrumentation Trace Macrocell). | Opcjonalne instrukcje śledzenia: ETM (Embedded Trace Macrocell), DWT (Data Watchpoint) oraz ITM (Instrumentation Trace Macrocell). |