Rdzeń Cortex-M0+ – więcej niż konkurent dla 8-/16- i niektórych 32-bitowców
Rdzeń Coretx-M0+ charakteryzuje się zmniejszonym do 11 µW/MHz poborem mocy, jednocześnie zwiększono prędkość wykonywania przez niego programów do 0,93 DMIPS/MHz i to pomimo zredukowania głębokości pipelinening’u z trzech poziomów do dwóch, co pozwoliło dodatkowo zmniejszyć pobór mocy – ze względu na mniejszą liczbę niepotrzebnych odczytów zawartości pamięci Flash. Integralną funkcją rdzenia Cortex-M0+ jest jednotaktowy dostęp do portów GPIO, których obsługę zsynchronizowano z dostępem do pamięci rozkazów (synchronizacja odbywa się „przeciwnymi” zboczami sygnału zegarowego) za pośrednictwem magistrali AHB-Lite. Firma ARM wróciła w Cortex-M0+ do niektórych wcześniejszych pomysłów, zweryfikowanych w praktyce w rdzeniach Cortex-M3 i Cortex-M4, między innymi:
- rdzeń wyposażono w kontroler MPU ze sprzętowym podziałem pamięci na 8 chronionych obszarów, co zapewnia łatwość zarządzania dostępem do przechowywanych danych (rysunek 3),
Rys. 3. Rdzeń Cortex-M0+ wyposażono w MPU (Memory Protection Unit), dzięki któremu systemy operacyjne mogą chronić dane przypisane wielu zadaniom wykonywanym jednocześnie przez mikrokontroler
- możliwa jest dynamiczna relokacja tablicy wektorów obsługi wyjątków,
- w rdzeniu Cortex-M0+ zintegrowano dodatkowe bloki sprzętowe wspomagające debugowanie jego pracy, w tym MTB (Micro Trace Buffer), który umożliwia wykorzystanie fragmentu RAM mikrokontrolera jako bufora kołowego przechowującego wybrany przez użytkownika zestaw danych.
Modyfikacje uwzględnione w rdzeniu Cortex-M0+ zachęciły do zastosowania go w praktyce firmę Freescale, która wdrożyła do produkcji rodzinę mikrokontrolerów Kinetis L, których rdzeń może być taktowany sygnałem zegarowym o maksymalnej częstotliwości 48 MHz. Schematy blokowe podrodzin Kinetis L pokazano na rysunku 4.
Rys. 4. Schemat blokowy mikrokontrolerów Kinetis L – pierwszej produkowanej rodziny z rdzeniem Cortex-M0+
Dodatkowe informacje o mikrokontrolerach Kinetis L są dostępne pod adresem: www.freescale.com/kinetis/Lseries |
Twórcy rdzenia Cortex-M0+ przewidzieli mechanizmy umożliwiające jego współpracę z pamięciami Flash z magistralami danych o szerokości 16 lub 32 bitów. Co prawda zwężenie magistrali pamięci programu do 16 bitów nie powinno mieć wpływu na wydajność rdzenia – ponieważ większość instrukcji z listy ARMv6-M jest 16-bitowa – ale firma Freescale zastosowała w mikrokontrolerach Kinetis L pamięci Flash produkowane w technologii TFS (Thin Film Storage) z magistralami 32-bitowymi. Wynikało to zapewnie z dopracowanej i zoptymalizowanej- także pod względem energetycznym – ich konstrukcji, dobrze sprawdzonej w starszych rodzinach mikrokontrolerów.