Elektroda.pl
Elektroda.pl
X
Relpol przekaźniki
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

8 czy 32 (bit)? oto jest (mikro)pytanie!

ghost666 23 Cze 2015 14:26 2790 5
  • 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.

    8 czy 32 (bit)? oto jest (mikro)pytanie!


    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.

    8 czy 32 (bit)? oto jest (mikro)pytanie!


    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.

    8 czy 32 (bit)? oto jest (mikro)pytanie!


    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%.

    8 czy 32 (bit)? oto jest (mikro)pytanie!


    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
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9364 postów o ocenie 6946, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • Relpol przekaźniki
  • #2
    ramrusazer
    Poziom 13  
    Typowy artykuł sponsorowany.

    Gdzie porównanie do np. STM32L053 itp.
    Gdzie przy Standby i 125stopniach prąd upływu typowy to ok 2.6uA, a maksymalny ok 8uA

    Atmel wybrał po prostu do porównania takie procesory by wypaść lepiej.

    Co nie znaczy, że w wielu projektach 8bitów wystarczy, no ale bez tego całego marketingowego bełkotu to już porównanie nie będzie takie ładne ;).
  • Relpol przekaźniki
  • #3
    ghost666
    Tłumacz Redaktor
    ramrusazer napisał:
    Typowy artykuł sponsorowany.

    Gdzie porównanie do np. STM32L053 itp.
    Gdzie przy Standby i 125stopniach prąd upływu typowy to ok 2.6uA, a maksymalny ok 8uA

    Atmel wybrał po prostu do porównania takie procesory by wypaść lepiej.

    Co nie znaczy, że w wielu projektach 8bitów wystarczy, no ale bez tego całego marketingowego bełkotu to już porównanie nie będzie takie ładne ;).


    W tym przypadku akurat Atmel porównał swoje układy z innymi swoimi układami. Oczywiście że porównanie nie jest pełne, ale pokazuje coś, co wszyscy wiedzą chyba - 8 bitowce nadal są na fali.
  • #4
    TechEkspert
    Redaktor
  • #5
    deus.ex.machina
    Poziom 32  
    Generalnie oznacza to tylko tyle ze trzeba wiedzieć jak napisać oprogramowanie by w pełni wykorzystać architekturę ARM, oznacza to tez ze czasem warto poszukać takiego uC który potrafi autonomicznie obsługiwać I/O przy pomocy DMA - ciekawym przykładem byłoby przesłanie nie jednego bajta po SPI (mało realne zadanie) a np bloku 512B, 1024B, 2048B do np 32KB.
    Pokazuje to tez ze czasem warto przebudować tak architekturę oprogramowania by rzadziej używać przerwania (np wprowadzając pooling).
    Poza tym 32 bitowe uC to nie tylko ARM ale np XMOS - podejrzewam ze gdyby porównać XMOS z AVR to wynik byłby dokładnie inny...
    Pokazuje to tylko ze należy wiedzieć jaki uC użyć by rozwiązać dany problem.
  • #6
    TechEkspert
    Redaktor
    Racja, wybór optymalnego rozwiązania często opiera się o bardzo wiele czynników, niektóre z nich mają więcej związku z zasobami firmy (ludzie, kompetencje, narzędzia) niż z samymi cechami np. mikrokontrolera. Jeżeli wiodącym czynnikiem będzie określony pobór mocy, lub posiadanie natywnego interfejsu wybór może nie tylko określać 8b/16b/32b MCU ale nawet konkretną rodzinę i producenta rozwiązania.

    W innych przypadkach stawiane zadanie, można rozwiązać różnymi drogami i różne firmy wybiorą inne rozwiązania optymalne dla siebie. Ważne aby wybór nie był dokonany "na siłę" aby trzymać się posiadanych rozwiązań, nie ma sensu męczyć się z określoną technologią, jeżeli inna rozwiązuje zadanie znacznie łatwiej.

    Przykładowo, czy da się napisać system operacyjny na platformę x86 w asemblerze, mieszczący się na dyskietce i posiadający stos TCP/IP oraz przeglądarkę WWW ?
    Da się, w dodatku w wersji 32/64bit: MenuetOs
    W powyższym przykładzie, projekt jest ciekawy i autorzy udowodnili, że da się obecnie napisać system operacyjny w asemblerze, uzyskując dość szeroką funkcjonalność.

    Jednak w innych przypadkach sztywne zakładanie, że napiszemy coś w asemblerze, wykorzystamy 8b lub 32b mikrokontroler byłoby nierozsądne skoro możemy wykorzystać wiele innych dostępnych opcji.

    Także pewnie jeszcze przez długi czas zarówno 8b jak i 32b mikrokontrolery będą znajdowały zastosowanie w produkowanych urządzeniach.