Migracja z Cortex-M3 do Cortex-M4
Jednostka zmiennoprzecinkowa FPU
Jednostka obliczeniowa FPU do wykonywania operacji na liczbach zmiennoprzecinkowych pojedynczej precyzji jest jednostką opcjonalną rdzenia Cortex-M4. Producenci mogą sami decydować o dostępności tej jednostki w zależności od potrzeb. FPU w pełni obsługuje następujące operacje na liczbach 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 wykorzystujące liczby zmiennoprzecinkowe. Podsumowując, jednostka FPU ma trzy 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 przerwań (NVIC – Nested Vectored Interrupt Controller), jednostka ochrony pamięci (MPU – Memory Protection Unit), oraz port dostępu debugowania (DAP – Debug Access Port) są takie same jak w rdzeniu Cortex-M3. Są one opisane w karcie katalogowej rdzenia Cortex-M3.
Porównanie Cortex-M3 z Cortex-M4
W tabeli 1 wykazano różnice występujące między Cortex-M3 i Cortex-M4.
Tab. 1.
Cortex-M3 | Cortex-M4 | |
Architektura | ARMv7-M (Harvard) | ARMv7-M (Harvard) |
Obsługa ISA | Thumb/Thumb-2 | Thumb/Thumb-2 |
Rozszerzenia DSP | Brak | 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 | Brak | Jednostka zmiennoprzecinkowa pojedynczej precyzji Zgodność z normą IEEE 754 |
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 Interupt) + od 1 do 240 przerwań fizycznych |
Przerwania niemaskowalne (NMI – Non-Maskable Interupt) + od 1 do 240 przerwań fizycznych |
Opóźnienie 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) |