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)

 

O autorze