Cortex-M0+ – najbardziej energooszczędny z rdzeni ARM

32-bitowy Cortex-M0+ to najnowszy z rdzeni mikroprocesorowych firmy ARM (o jego powstaniu producent poinformował 13 marca). Jak nazwa wskazuje, został zaprojektowany w oparciu o rdzeń Cortex-M0, który na rynku obecny jest od trzech lat i przez ten czas zdobył sobie duże uznanie klientów, o czym świadczy aż 50 licencji na ten rdzeń, które ARM udostępnił producentom mikrokontrolerów (do listopada 2011 rok). Od momentu powstania rdzenia Cortex-M0 inżynierowie z firmy ARM pracowali nad usprawnieniami, które mogłyby dodatkowo poprawić jego parametry techniczne. Efektem tych działań jest właśnie rdzeń Cortex-M0+, znany też pod nazwą „Flycatcher” (rys. 1).

Rys. 1. ARM Cortex-M0+

Rys. 1. ARM Cortex-M0+

2-stopniowy Pipeline

Jednym z głównych wymagań wobec nowego rdzenia było obniżenie poboru mocy w porównaniu do rdzenia Cortex-M0. W celu spełnienia tego założenia zdecydowano się wykorzystać (po raz pierwszy w rdzeniu ARM) 2-stopniowy pipeline . W wyniku tego zabiegu pobór mocy (tzw. dynamic power ) przez rdzeń został zredukowany o około 1/3 (tab. 1).

Tab. 1. Porównanie poboru mocy (Cortex-M0+, Cortex-M0) dla procesu technologicznego 90 nm i częstotliwości pracy 50 MHz

  Cortex-M0+ Cortex-M0
Static power 0.95 µW 0.96  µW
Dynamic Power 11.21 µW/MHz 16.36 µW/MHz

Zmniejszenie poboru mocy przez rdzeń jest z pewnością ważne, jednak rozpatrując efektywność energetyczną trzeba się też odnieść do zapotrzebowania na moc przez cały układ, a więc rdzeń oraz zasoby mikrokontrolera. Wspomniany 2-stopwnnowy pipeline zmniejsza liczbę cykli pracy na instrukcję (CPI – number of Cycles Per Instruction ) usprawniając dostęp rdzenia do pamięci Flash, co skutkuje dalszym zmniejszeniem poboru mocy.

Ograniczenie poboru mocy nie wpłynęło negatywnie na wydajność rdzenia Cortex-M0+, która kształtuje się na poziomie 1.77 CoreMark/MHz (0.93 DMIPS/MHz), w porównaniu do 1.62 CoreMark/MHz w przypadku Cortex-M0 (0.84 DMIPS/MHz).

Nowy interfejs wejścia/wyjścia

W Cortex-M0+ zaimplementowany został nowy interfejs wejścia/wyjścia (I/O), który umożliwia wykonywanie operacji I/O w jednym cyklu. Dzięki temu dostęp rdzenia do wykorzystujących ten interfejs peryferii i portów I/O jest niezwykle szybki (rys. 2).

  Rys. 2. Wykonywanie instrukcji I/O - Cortex-M0+ i inne rdzenie

Rys. 2. Wykonywanie instrukcji I/O – Cortex-M0+ i inne rdzenie

 

Moduł MPU

W rdzeniu Cortex-M0+ zintegrowanych zostało kilka funkcjonalności, które obecne są w Cortex-M3 i  Cortex-M4, a które były niedostępne w Cortex-M0. Do najważniejszych z nich należy moduł MPU ( Memory Protection Unit ). Jest to jednostka ochrony pamięci, sterująca dynamicznie dostępem do 8 konfigurowalnych regionów pamięci. Może być użyteczna podczas wykorzystania systemu operacyjnego do nadawania uprawnień dostępu do pamięci różnym zadaniom zapobiegając nadpisaniu przez jedno z zadań obszaru pamięci, który jest już używany przez inne zadanie (rys. 3).

Rys. 3. Zasada działania modułu MPU

Rys. 3. Zasada działania modułu MPU

O autorze