Benchmark – cała prawda o ULPBench
Który mikrokontroler jest naprawdę energooszczędny i odpowiedni do systemów o niskim zużyciu mocy? Zestaw sprzętowo-programowy ULPBenchmark opracowany przez konsorcjum EEBMC ma za zadanie odpowiedzieć na to pytanie. Jednak w praktyce nie uwzględnia rzeczywistych warunków. Wynik naszych badań: układy o „bardzo niskim zużyciu mocy” (ULP) zachowują się inaczej, niż można by oczekiwać.
Narzędzie ULPBench wykorzystuje dwojakie podejście. Po pierwsze, wykonuje różne testy dla jednego obciążenia, które pozwalają na szczegółowy pomiar sprawności 8-, 16- i 32-bitowych mikrokontrolerów. Skupiając się na rzeczywistych zastosowaniach, wykorzystaliśmy tryby obniżonego poboru mocy i przeanalizowaliśmy wyniki pracy w tych trybach.
Drugim elementem jest system o nazwie EEMBC EnergyMonitor, który składa się z płytki monitorującej pobór energii i oprogramowania ULPBench. Urządzenie Energy Monitor współpracuje z oprogramowaniem do profilowania ULPBench uruchomionym badanym mikrokontrolerze. Kody źródłowe ULPBench core są częścią pakietu EEMBC.
Testy przewidują napięcie 3,0 V i temperaturę 25°C
Pierwszy problem z ULPBench polega na wymuszeniu pracy z napięciem zasilania 3,0 V, choć większość mikrokontrolerów ULP może pracować z napięciem do 1,8 V. Nietrudno sobie wyobrazić, że obniżenie napięcia zasilania powoduje również obniżenie poboru mocy i uzyskanie wyższych wyników w ULPBench.
Drugim problemem jest przyjęcie przez ULPBench optymalnej temperatury otoczenia równej 25°C. Dla tej temperatury producenci podają parametry, a EEMBC dokonuje certyfikacji. Należy jednak pamiętać o tym, że na przykład inteligentny miernik pracuje w zakresie temperatury od 50 do 60°C, a niektóre systemy przemysłowe nawet 80 – 85°C. Zatem wyniki ULPBench prezentowane na stronie EEMBC należy przyjmować z pewną ostrożnością.
Testy ULPBench dla napięcia 3,0 – 1,8 V
W pierwszym kroku zespół Design & Elektronik wyznaczył wyniki ULPBench dla niższych napięć zasilania. Sercem systemu pomiarowego był przyrząd USB 6356 firmy National Instruments (obrazek 1.) o następującej charakterystyce:
- 32 wejścia analogowe; rozdzielczość 16 bitów; zakres napięć +- 10V; szybkość próbkowania dla pojedynczego kanału 1,25 miliona próbek na sekundę (Msps), 1,0 Msps dla wielu kanałów
- Cztery wyjścia analogowe; rozdzielczość 16 bitów; zakres napięć +- 10V; 2,86 Msps,
- 48 cyfrowych wejść I/O
- cztery 32-bitowe liczniki / czasomierze dla PWM, enkoder, miernik częstotliwości, licznik zdarzeń i inne funkcje
W badaniu zostało wykorzystane środowisko NI Signal Express. Oferuje ono ponad 850 funkcji do pomiaru sygnału, filtrów i transformacji w dziedzinie czasu lub częstotliwości. W tym systemie sterowanym zdarzeniami programy można kontrolować poprzez interakcję użytkownika za pomocą klawiatury lub myszy. Ponadto Signal Express jest kompatybilne z rozszerzeniami LabView przeznaczonymi do specjalnych zadań lub do integracji sprzętu. Prosty schemat połączeń z płytką mikrokontrolera poddaną testom jest widoczny na obrazku 2. Stanowisko pomiarowe widać na rys. 3. Płytka jest podłączona za pomocą tego samego interfejsu dwuprzewodowego co przyrząd EEMBC Energy Monitor.
Testy przy napięciu 3,0 V wykazały maksymalne odchylenie 5% w stosunku do wartości zmierzonych za pomocą EnergyMonitor. Konkretnie było to 158,9 punktów ULPBench dla układu MSP432 w trybie zasilacza napięcia stałego w stosunku do wartości 152,2 zmierzonej z użyciem EnergyMonitor. Dla większości kontrolerów odchylenie to mieściło się w zakresie 0,1 – 2%. Te wahania nie przeszkadzają w pomiarze sprawności energetycznej w zależności od zasilania. Dają szansę na ustalenie, jak bardzo można obniżyć napięcie zasilania, zanim kontroler przestanie poprawnie pracować.
Wyniki
W tabeli 1. zostały przedstawione wyniki pomiaru dla następujących mikrokontrolerów:
- STMicroelectronics: STM32L433, STM32L0
- Texas Instruments: MSP432 z zasilaczem DC/DC lub LDO, MSP430FR5969 FRAM, MSP430FG4618 Flash
- Silicon Labs: EFM32 Wonder Gecko, Giant Gecko, Pearl Gecko, Zero Gecko
- Atmel: SAML21 rev A, rev B z włączonym lub wyłączonym bitem LPEFF
- NXP: Kinetis KL27Z
- Microchip: 16-bitowy PIC24FJ64GA202
- Ambiq Micro: Apollo
Tabela 1. Kompletne wyniki ULPBench badanych mikrokontrolerów. Nie wszystkie modele były w stanie pracować z napięciem zasilania do 1,8 V. Pozycja „n.A.” oznacza, że kod ULPBench nie został wykonany prawidłowo przy tym napięciu
Układ STM32L433 z rdzeniem ARM Cortex-M4 uzyskał najwyższy wynik ULPBench dla wszystkich napięć: od 172,58 punktu dla napięcia 3,0 V do 325,78 dla 1,8 V, czyli o 153,2 punktu więcej. Osiągnął również najwyższy wynik poniżej napięcia 2,1 V. Model STM32L0 z rdzeniem ARM Cortex-M0+ poprawił wynik z 129,99 na 226,67 punktu, uzyskując czwarty rezultat w zakresie niskich napięć.
Można zaobserwować interesujące zjawisko w przypadku mikrokontrolera Atmel SAM21L21, również opartego na rdzeniu ARM Cortex-M0+. O ile wersja A (rev A) układu uzyskuje wyniki od 147,08 punktu do 240,11, wersja B ma z tym problemy. Aby w ogóle uruchomić układ przy napięciu 1,8 V, bit LPEFF kontrolera zasilania musi być ustawiony na '0′. Nie można wówczas uzyskać maksymalnej sprawności – jak widać w tabeli, uzyskane wyniki ULPBench są niższe od oficjalnie podanych wartości. Kontroler zasilania uzyskuje najlepsze rezultaty, gdy ten bit jest ustawiony na '1′. Jednak poniżej 2,1 V (2,5 według danych katalogowych) kontroler ten nie jest w stanie pracować.
Gorsze wyniki uzyskały modele Energy Micro przejętej przez Silicon Labs, choć firma reklamuje się hasłem „najbardziej energooszczędne mikrokontolery na świecie”. Zachowanie układów jest niezależne od rodziny i rdzenia – Cortex-M0+ w przypadku Zero Gecko, Cortex-M3 dla Giant Gecko i Cortex-M4 dla PeralGecko i WonderGecko. Problemem jest nie tylko praca przy obniżonym napięciu, ale też wyniki pozostające daleko w tyle za konkurencyjnymi układami ARM. Poniżej 2 V układy w ogóle nie są w stanie pracować, a Giant Gecko poddaje się już na poziomie 2,1 V – być może z powodu identycznego procesu technologicznego TSMC 180 nm.
Umiarkowane wyniki uzyskały też układy NXP Kinetis KL27 z rdzeniem Cortex-M0 oraz Microchip PIC24 z autorską 16-bitową jednostką CPU. Te układy pracują do napięcia zasilania 1,8 V (NXP) lub 1,9 V (Microchip), uzyskując przy tym znaczny procentowy wzrost wyników.