Mikrokontrolery 32 bitowe zawojowały rynek, jednakże ich 8 bitowi przodkowie nadal są równie popularni na rynku, co 32 bitowe układy. Układy 32 bitowe o szerokim wachlarzu peryferiów, są idealnymi kandydatami do wielu aplikacji, co tłumaczy czemu są tak popularne wśród projektantów systemów elektronicznych. Projektanci wiedzą, że kompleksowe i skomplikowane systemy wymagają układów o dużej mocy obliczeniowej i bogatym zakresie wbudowanych systemów. Dodatkową zaletą tych układów, jest fakt, że istnieje wiele narzędzi programistycznych oraz bibliotek, ułatwiające projektowanie systemów i tworzenie oprogramowania na nie. Wiele spośród tych układów oparte jest o rdzeń ARM, co pozwala korzystać z szerokiego zakresu narzędzi do rozwijania oprogramowania i testowaniu układów, jakie dostępne są na rynku.
Jednakże, jeśli przyjrzymy się rynkowi mikrokontrolerów, okaże się, że nie tylko 32 bitowe układy wykazują wzrost na rynku. 8 bitowe mikrokontrolery także przeżywają rozwój na rynku, porównywalny z 32 bitowymi układami. Co więcej, szereg analityków rynku układów scalonych przewiduje, że trend ten utrzyma się.
Z czego wynika omawiane zjawisko? Dużą rolę pełni tutaj linia układów AVR firmy Atmel. Coś jest w tych układach, co powoduje, że ich używanie jest niezwykle kuszące dla inżynierów projektujących układy. Przyjrzyjmy się podstawowym różnicom pomiędzy układami 8 i 32 bitowymi. Powinno to umożliwić zrozumienie opisanego powyżej fenomenu.
Podstawowe różnice
Podstawowe różnice pomiędzy 8 i 32 bitowymi mikrokontrolerami, z punktu widzenia ich aplikacji są: koszty, wydajność CPU, łatwość wykorzystania, wydajność zintegrowanego sprzętu oraz pobór mocy. Podczas wybierania mikrokontrolera do kolejnego układu konieczne jest zanalizowanie tego jakie są wymagania, szczególnie jeśli chodzi o moc obliczeniową, ilość i rodzaj interfejsów oraz, w przypadku układów zasilanych z baterii, pobór mocy. Oczywistym jest, że 32 bitowe mikrokontrolery dostarczają o wiele większej mocy obliczeniowej, jednakże w wielu przypadkach inżynierowie w tej sytuacji stają pomiędzy wyborem najlepszych układów na rynku, a innymi prostszymi, które równie dobrze spełniają wymagania projektu.
Oczywiście, powyższe czynniki mają ogromny wpływ na listę elementów i ich koszt. Przy mniejszym poziomie skomplikowania 8 bitowe układy będą z pewnością tańsze od 32 bitowych. Jeśli porówna się jedne i drugie, to przy podobnych parametrach te mniejsze będą o około 20% tańsze. Ale to tylko jeden z wielu czynników, jakie istnieją i mogą mieć wpływ na wybór tego czy innego rodzaju układu.
Łatwość projektowania i implementacji
Firmy produkujące mikrokontrolery mają tendencję do dodawania coraz to nowszych funkcji do układów 32 bitowych, w przeciwieństwie do tego jak to jest robione z mikrokontrolerami 8 bitowymi. Konsekwencją tego jest fakt, że w wielu skomplikowanych systemach chętniej wykorzystuje się układy 32 bitowe, mimo skomplikowanej implementacji. Jakkolwiek część układów 32 bitowych może działać w prostych aplikacjach, jak mikrokontrolery 8 bitowe, bardzo często wtedy nie można korzystać z wszystkich oferowanych przez nie funkcji.
Na przykład, typowy 32 bitowy mikrokontroler z rdzeniem ARM będzie miał niezależne taktowanie rdzenia, szyny AHB oraz szyn APBA i APBB. Mogą one pracować z różnymi częstotliwościami. W typowej sytuacji oznacza to także konieczność przełączania zegara, ponieważ jest on kontrolowany programowo, a nie sprzętowo jak w układach 8 bitowych. Co więcej, programowa zmiana zegara wymaga czekania w programie na zmiany w pamięci.
Podobne rozwiązanie może być znacznie prostsze, jeśli wykorzysta się układy 8 bitowe, takie jak tinyAVR i megaAVR firmy Atmel. Wymagają one jedynie inicjalizacji wskaźnika stosu, co zajmuje cztery linijki kodu, przed kodem samej aplikacji. Wybór zegara, detektora zapadów zasilania, funkcje pinu reset itp., są wszystkie preprogramowane sprzętowo w układzie.
Architektura mniejszych układów jest także o wiele prostsza od 32 bitowych, które mają rejestry wewnętrzne, peryferia i pamięć SRAM obsługiwaną przez tą samą szynę danych. Oznacza to że CPU i peryferia pracują przy tej samej częstotliwości, więc nie trzeba konfigurować peryferiów i ich taktowania. Co więcej, taka prosta architektura, eliminuje problemy z opóźnieniami i synchronizacją pomiędzy różnie taktowanymi modułami.
Osiągi
Jeśli chodzi o porównywanie wydajności CPU, projektujący system inżynier musi rozważyć wszystkie rodzaje jego obciążenia. W rzeczywistości w wielu aplikacjach systemów wbudowanych wymagania co do mocy obliczeniowej procesora nie są zbyt wygórowane. Często nie jest potrzebne obracanie dużą objętością danych, więc zbalansowanie wydajności i poboru mocy przez układ często jest krytyczne.
Na przykład prosty termostat większość czasu pracy spędzać będzie w stanie uśpienia. Budzić się będzie tylko na chwilę, aby dokonać pomiaru temperatury i podjąć decyzję odnośnie wyłączenia lub włączenia przekaźnika lub przesłania informacji do hosta, zarządzającego systemem. I powróci do stanu uśpienia. Wymagania co do interfejsów i mocy obliczeniowej takiego układu są niewielkie, a istnieje wiele podobnych aplikacji, takich jak detektory dymu czy ognia, mierniki przepływu i inne.
Wydajność wbudowanych systemów sprzętowych
Wiele nowoczesnych mikrokontrolerów wbudowane ma sprzętową realizację szeregu funkcji, mających na celu pomóc CPU pracować możliwie optymalnie. W przypadku układów firmy Atmel jest to między innymi, tak zwany Peripheral Event System. Jest to zespół systemów, mających na celu umożliwienie interakcji pomiędzy peryferiami, bez udziału CPU. Pozwala to na szybkie, bezpośrednie przesyłanie pomiędzy nimi sygnałów, bez obciążania procesora. Zapewnia to szybką i w pełni powtarzalną odpowiedź systemu. Przy pełnym wykorzystaniu omawianego systemu, umożliwia to realizację skomplikowanych operacji z minimalną interwencją procesora, co oszczędza pamięć programu oraz czas realizacji tych zadań.
Przy wykorzystywaniu tego rodzaju rozwiązań prędkość CPU jest sprawą drugorzędną. Istotne jest jedynie, jak szybko, tj. ile cykli procesora, potrzebne jest na obsługę przerwania i systemu przekazywania informacji pomiędzy peryferiami. W poniższym przypadku pokazano, że 8 bitowy mikrokontroler może być efektywniejszy, jeśli chodzi o realizację procedur wspomaganych sprzętowo.
Rozważmy scenariusz w którym odbieramy jeden bajt poprzez SPI, co wykrywane jest przerwaniem. Prosta procedura pozwala na odczytanie tego bajtu i zapis w SRAMie. Powyższa tabela prezentuje porównanie działania tego rodzaju w mikrokontrolerze 8 bitowym i 32 bitowym ARM Cortex M0+. Rezultaty oparte są o minimalną implementację systemów, a w każdej implementacji trzeba sprawdzić dokładnie wykorzystany czas procesora. W powyższym przykładzie mniejszy mikrokontroler wymaga do realizacji powyższego zadania 12 cykli, a większy aż 33 cykli, co przekłada się na prędkości transmisji po SPI, równe odpowiednio 1,67 MB/s i 606 kB/s.
Z drugiej strony, dobrym algorytmem do oceny sprawności numerycznej, jest algorytm Fibonacciego. Pozwala on sprawdzić prędkość działania pamięci i stosu, a także samego CPU. Wykorzystuje on jedynie lokalne zmienne, więc wszystko odbywa się w obrębie stosu. Jeśli porównamy teraz oba powyższe układy korzystając z 15 stopniowego rekursywnego algorytmu Fibonacciego, mikrokontroler AVR zużył 70 bajtów stosu, a ARM 192 bajty. Oznacza to, że CSTACK jest ponad trzy razy większy w dużym układzie. W typowym kodzie w języku C większość zmiennych na stosie jest w formie pakietów, więc powyższy przykład jest raczej skrajny, ale pokazuje że duże mikrokontrolery potrzebują od 1,5 do 3 razy więcej SRAMu niż mniejsze, do przeprowadzenia podobnych obliczeń.
Zużycie prądu
Artykuł omawiający porównanie mikrokontrolerów byłby niepełny, bez porównania przynajmniej statycznego zużycia mocy układów. Jest to kluczowy aspekt doboru układu, jeśli chodzi o układy zasilane bateryjnie. Poniższa tabelka pokazuje różnicę w zużyciu pomiędzy układami 8 i 32 bitowymi w trybie aktywnym i statycznym.
Agresywne podejście do technologii wytwarzania tranzystorów w układach scalonych powoduje zwiększanie się ich prądu upływu, co przekłada się na zwiększenie zużycia prądu. Prąd upływu podwaja się przy każdej zmianie technologi i jest proporcjonalny do ilości bramek w układzie. Prąd zwiększa się wykładniczo z temperaturą, co może być łatwo przeoczone, a jest istotne. Temperatura pracy tych układów często przekraczać może 40°C np. w samochodzie. Dodatkowo, na całkowity pobór prądu, wpływ ma to, ile czasu układ spędza w stanie aktywnym, a ile statycznym. Oczywiście to jest zależne od konkretnej aplikacji. Jeśli weźmiemy pod uwagę obliczenia z powyższego przykładu z interfejsem SPI i zakładając prędkość transmisji SPI jako 80 kb/s to 8 bitowy układ 1,2% swojego czasu jest aktywny, a jego większy, 32 bitowy kuzyn 3,3%.
Podsumowanie
Zastanawiając się nad wykorzystaniem 8 czy 32 bitowego mikrokontrolera we własnym projekcie, koniecznym może być uwzględnienie wymagań Internetu Rzeczy (IoT). To jak formuje się aktualnie ta technologia, wywołuje sporą debatę, jednakże już teraz IoT ma ogromny wpływ na wymagania stawiane mikrokontrolerom. Inne interfejsy bezprzewodowe, szczególnie ZigBee, mogą być istotnym komponentem układu, ale nie oznacza to, że muszą one zwiększać pobór mocy przez układ.
Istnieje szereg 8 bitowych mikrokontrolerów, które są w stanie sprostać podstawowym aplikacjom w komunikacji bezprzewodowej. Przykładem może być seria układów ATmegaRFR2, która zapewnia komunikację kompatybilną z IEEE 802.15.4 przy częstotliwości 2,4 GHz. Mikrokontrolery te idealnie nadają się do aplikacji IoT zasilanych bateryjnie, z uwagi na ich niski pobór mocy.
Źródło:
http://blog.atmel.com/2014/12/05/8-or-32-bit-that-is-the-question/
Jednakże, jeśli przyjrzymy się rynkowi mikrokontrolerów, okaże się, że nie tylko 32 bitowe układy wykazują wzrost na rynku. 8 bitowe mikrokontrolery także przeżywają rozwój na rynku, porównywalny z 32 bitowymi układami. Co więcej, szereg analityków rynku układów scalonych przewiduje, że trend ten utrzyma się.
Z czego wynika omawiane zjawisko? Dużą rolę pełni tutaj linia układów AVR firmy Atmel. Coś jest w tych układach, co powoduje, że ich używanie jest niezwykle kuszące dla inżynierów projektujących układy. Przyjrzyjmy się podstawowym różnicom pomiędzy układami 8 i 32 bitowymi. Powinno to umożliwić zrozumienie opisanego powyżej fenomenu.
Podstawowe różnice
Podstawowe różnice pomiędzy 8 i 32 bitowymi mikrokontrolerami, z punktu widzenia ich aplikacji są: koszty, wydajność CPU, łatwość wykorzystania, wydajność zintegrowanego sprzętu oraz pobór mocy. Podczas wybierania mikrokontrolera do kolejnego układu konieczne jest zanalizowanie tego jakie są wymagania, szczególnie jeśli chodzi o moc obliczeniową, ilość i rodzaj interfejsów oraz, w przypadku układów zasilanych z baterii, pobór mocy. Oczywistym jest, że 32 bitowe mikrokontrolery dostarczają o wiele większej mocy obliczeniowej, jednakże w wielu przypadkach inżynierowie w tej sytuacji stają pomiędzy wyborem najlepszych układów na rynku, a innymi prostszymi, które równie dobrze spełniają wymagania projektu.
Oczywiście, powyższe czynniki mają ogromny wpływ na listę elementów i ich koszt. Przy mniejszym poziomie skomplikowania 8 bitowe układy będą z pewnością tańsze od 32 bitowych. Jeśli porówna się jedne i drugie, to przy podobnych parametrach te mniejsze będą o około 20% tańsze. Ale to tylko jeden z wielu czynników, jakie istnieją i mogą mieć wpływ na wybór tego czy innego rodzaju układu.
Łatwość projektowania i implementacji
Firmy produkujące mikrokontrolery mają tendencję do dodawania coraz to nowszych funkcji do układów 32 bitowych, w przeciwieństwie do tego jak to jest robione z mikrokontrolerami 8 bitowymi. Konsekwencją tego jest fakt, że w wielu skomplikowanych systemach chętniej wykorzystuje się układy 32 bitowe, mimo skomplikowanej implementacji. Jakkolwiek część układów 32 bitowych może działać w prostych aplikacjach, jak mikrokontrolery 8 bitowe, bardzo często wtedy nie można korzystać z wszystkich oferowanych przez nie funkcji.
Na przykład, typowy 32 bitowy mikrokontroler z rdzeniem ARM będzie miał niezależne taktowanie rdzenia, szyny AHB oraz szyn APBA i APBB. Mogą one pracować z różnymi częstotliwościami. W typowej sytuacji oznacza to także konieczność przełączania zegara, ponieważ jest on kontrolowany programowo, a nie sprzętowo jak w układach 8 bitowych. Co więcej, programowa zmiana zegara wymaga czekania w programie na zmiany w pamięci.
Podobne rozwiązanie może być znacznie prostsze, jeśli wykorzysta się układy 8 bitowe, takie jak tinyAVR i megaAVR firmy Atmel. Wymagają one jedynie inicjalizacji wskaźnika stosu, co zajmuje cztery linijki kodu, przed kodem samej aplikacji. Wybór zegara, detektora zapadów zasilania, funkcje pinu reset itp., są wszystkie preprogramowane sprzętowo w układzie.
Architektura mniejszych układów jest także o wiele prostsza od 32 bitowych, które mają rejestry wewnętrzne, peryferia i pamięć SRAM obsługiwaną przez tą samą szynę danych. Oznacza to że CPU i peryferia pracują przy tej samej częstotliwości, więc nie trzeba konfigurować peryferiów i ich taktowania. Co więcej, taka prosta architektura, eliminuje problemy z opóźnieniami i synchronizacją pomiędzy różnie taktowanymi modułami.
Osiągi
Jeśli chodzi o porównywanie wydajności CPU, projektujący system inżynier musi rozważyć wszystkie rodzaje jego obciążenia. W rzeczywistości w wielu aplikacjach systemów wbudowanych wymagania co do mocy obliczeniowej procesora nie są zbyt wygórowane. Często nie jest potrzebne obracanie dużą objętością danych, więc zbalansowanie wydajności i poboru mocy przez układ często jest krytyczne.
Na przykład prosty termostat większość czasu pracy spędzać będzie w stanie uśpienia. Budzić się będzie tylko na chwilę, aby dokonać pomiaru temperatury i podjąć decyzję odnośnie wyłączenia lub włączenia przekaźnika lub przesłania informacji do hosta, zarządzającego systemem. I powróci do stanu uśpienia. Wymagania co do interfejsów i mocy obliczeniowej takiego układu są niewielkie, a istnieje wiele podobnych aplikacji, takich jak detektory dymu czy ognia, mierniki przepływu i inne.
Wydajność wbudowanych systemów sprzętowych
Wiele nowoczesnych mikrokontrolerów wbudowane ma sprzętową realizację szeregu funkcji, mających na celu pomóc CPU pracować możliwie optymalnie. W przypadku układów firmy Atmel jest to między innymi, tak zwany Peripheral Event System. Jest to zespół systemów, mających na celu umożliwienie interakcji pomiędzy peryferiami, bez udziału CPU. Pozwala to na szybkie, bezpośrednie przesyłanie pomiędzy nimi sygnałów, bez obciążania procesora. Zapewnia to szybką i w pełni powtarzalną odpowiedź systemu. Przy pełnym wykorzystaniu omawianego systemu, umożliwia to realizację skomplikowanych operacji z minimalną interwencją procesora, co oszczędza pamięć programu oraz czas realizacji tych zadań.
Przy wykorzystywaniu tego rodzaju rozwiązań prędkość CPU jest sprawą drugorzędną. Istotne jest jedynie, jak szybko, tj. ile cykli procesora, potrzebne jest na obsługę przerwania i systemu przekazywania informacji pomiędzy peryferiami. W poniższym przypadku pokazano, że 8 bitowy mikrokontroler może być efektywniejszy, jeśli chodzi o realizację procedur wspomaganych sprzętowo.
Rozważmy scenariusz w którym odbieramy jeden bajt poprzez SPI, co wykrywane jest przerwaniem. Prosta procedura pozwala na odczytanie tego bajtu i zapis w SRAMie. Powyższa tabela prezentuje porównanie działania tego rodzaju w mikrokontrolerze 8 bitowym i 32 bitowym ARM Cortex M0+. Rezultaty oparte są o minimalną implementację systemów, a w każdej implementacji trzeba sprawdzić dokładnie wykorzystany czas procesora. W powyższym przykładzie mniejszy mikrokontroler wymaga do realizacji powyższego zadania 12 cykli, a większy aż 33 cykli, co przekłada się na prędkości transmisji po SPI, równe odpowiednio 1,67 MB/s i 606 kB/s.
Z drugiej strony, dobrym algorytmem do oceny sprawności numerycznej, jest algorytm Fibonacciego. Pozwala on sprawdzić prędkość działania pamięci i stosu, a także samego CPU. Wykorzystuje on jedynie lokalne zmienne, więc wszystko odbywa się w obrębie stosu. Jeśli porównamy teraz oba powyższe układy korzystając z 15 stopniowego rekursywnego algorytmu Fibonacciego, mikrokontroler AVR zużył 70 bajtów stosu, a ARM 192 bajty. Oznacza to, że CSTACK jest ponad trzy razy większy w dużym układzie. W typowym kodzie w języku C większość zmiennych na stosie jest w formie pakietów, więc powyższy przykład jest raczej skrajny, ale pokazuje że duże mikrokontrolery potrzebują od 1,5 do 3 razy więcej SRAMu niż mniejsze, do przeprowadzenia podobnych obliczeń.
Zużycie prądu
Artykuł omawiający porównanie mikrokontrolerów byłby niepełny, bez porównania przynajmniej statycznego zużycia mocy układów. Jest to kluczowy aspekt doboru układu, jeśli chodzi o układy zasilane bateryjnie. Poniższa tabelka pokazuje różnicę w zużyciu pomiędzy układami 8 i 32 bitowymi w trybie aktywnym i statycznym.
Agresywne podejście do technologii wytwarzania tranzystorów w układach scalonych powoduje zwiększanie się ich prądu upływu, co przekłada się na zwiększenie zużycia prądu. Prąd upływu podwaja się przy każdej zmianie technologi i jest proporcjonalny do ilości bramek w układzie. Prąd zwiększa się wykładniczo z temperaturą, co może być łatwo przeoczone, a jest istotne. Temperatura pracy tych układów często przekraczać może 40°C np. w samochodzie. Dodatkowo, na całkowity pobór prądu, wpływ ma to, ile czasu układ spędza w stanie aktywnym, a ile statycznym. Oczywiście to jest zależne od konkretnej aplikacji. Jeśli weźmiemy pod uwagę obliczenia z powyższego przykładu z interfejsem SPI i zakładając prędkość transmisji SPI jako 80 kb/s to 8 bitowy układ 1,2% swojego czasu jest aktywny, a jego większy, 32 bitowy kuzyn 3,3%.
Podsumowanie
Zastanawiając się nad wykorzystaniem 8 czy 32 bitowego mikrokontrolera we własnym projekcie, koniecznym może być uwzględnienie wymagań Internetu Rzeczy (IoT). To jak formuje się aktualnie ta technologia, wywołuje sporą debatę, jednakże już teraz IoT ma ogromny wpływ na wymagania stawiane mikrokontrolerom. Inne interfejsy bezprzewodowe, szczególnie ZigBee, mogą być istotnym komponentem układu, ale nie oznacza to, że muszą one zwiększać pobór mocy przez układ.
Istnieje szereg 8 bitowych mikrokontrolerów, które są w stanie sprostać podstawowym aplikacjom w komunikacji bezprzewodowej. Przykładem może być seria układów ATmegaRFR2, która zapewnia komunikację kompatybilną z IEEE 802.15.4 przy częstotliwości 2,4 GHz. Mikrokontrolery te idealnie nadają się do aplikacji IoT zasilanych bateryjnie, z uwagi na ich niski pobór mocy.
Źródło:
http://blog.atmel.com/2014/12/05/8-or-32-bit-that-is-the-question/
Fajne? Ranking DIY
