Jakie jest miejsce mikrokontrolerów 8- i 16-bitowych? Dlaczego 32-bit nie przejął?

9

Jaki jest prawdziwy punkt odcięcia pod względem kompromisu między kosztem a wydajnością przy wyborze 32-bitowych mikrokontrolerów?

Innymi słowy, wraz ze wzrostem i dominacją architektur ARM, dlaczego nadal używamy 8-bitowych i 16-bitowych mikrokontrolerów? Czy nadal są znacznie tańsze?

Rozumiem, że bardzo tanie urządzenia nie potrzebują zasobów oferowanych przez większe i bardziej złożone architektury. Jaka jest jednak prawdziwa motywacja do dalszego korzystania z nich, jeśli koszty wydają się zbliżać do tego samego zakresu?

Bruno Morais
źródło
1
Pobór energii?
Leon Heller,
7
Najtańszy 32-bitowy µC na Digikey, jaki widzę, kosztuje około 0,64 USD, a najtańszy 8-bitowy kosztuje 0,35 USD. Jeśli jesteś dużą firmą, która zbuduje milion prostych widgetów, to bardzo ważna różnica.
Samuel
@LeonHeller Na pierwszy rzut oka zgadzam się, ale spójrz na punkt, który podałem w komentarzach do proponowanej odpowiedzi.
Bruno Morais,
2
Patrząc nawet na ceny hurtowe na DigiKey nie jest doskonałym przewodnikiem, ponieważ właściwie małe mikroskopy w małych aplikacjach o niskiej mocy, które są produkowane masowo, nikt nie kupuje ich od DigiKey, a są szanse, że kupią matryce, aby się nie trzymać pakiet chipów do wlutowania na płytkę. 8-bitowa mikro zawsze będzie mniejsza, prostsza, a zatem tańsza i niższa moc niż 32-bitowa o podobnej konstrukcji. Tak, dla wielu osób margines spada do poziomu nieistotności, ale w masowych tomach nawet 1/10 zaoszczędzonego grosza jest tego warte.
John U
Oto odpowiedni artykuł na stronie Electronic Design: 8-bitowy czy 32-bitowy? Wybór MCU twojego następnego projektu
Garth Wilson

Odpowiedzi:

17

Być może rok temu istniała znacząca różnica między najniższymi 8-bitowymi gorzkami a najtańszymi 32-bitowymi mikrokontrolerami. Już nie tak.

Na podstawie cen hurtowych Digi-Key można uzyskać 8-bitowy PIC10F200 dla 35ȼ w 2500 ilościach w pakiecie SOT-23-6. Otrzymasz 32-bitowy CY8C4013SXI-400 (ARM Cortex-M0) za 36ȼ w 2500 ilościach w pakiecie SOIC-8. (Ceny hurtowe Digi-Key nie są realistyczne pod względem tego, co faktycznie płacą producenci, co prawdopodobnie jest znacznie niższe, ale myślę, że warto zastosować przybliżone porównanie cen różnych produktów dla podobnych ilości).

Więc OP ma rację, są zbieżne.

Dlaczego więc 32-bitowe układy nie są częściej używane? Cóż, jak powiedziałem w pierwszym akapicie, ten punkt cenowy i parytet wielkości wystąpiły dopiero w ostatnim roku lub 18 miesiącach. I wciąż mają przed sobą długą drogę, zanim będzie wystarczająco dużo żetonów, aby być konkurencyjnym.

Z 6875 układów ARM dostępnych w Digi-Key, są tylko cztery w magazynie z wyceną ilości poniżej dolara. Cztery . Tymczasem inżynierowie mogą wybierać spośród setek 8-bitowych układów za dolara.

Ale powiedzmy, że dostępnych było co najmniej kilkadziesiąt 32-bitowych mikrów z niższej półki. Czy byłyby automatycznie wybierane spośród tych 8-bitowych?

Przede wszystkim musisz uświadomić ich inżynierom. Zawsze istnieje duży opór przed zmianami. Nowe rzeczy do nauczenia - ze sprzętowego punktu widzenia, nauczenie się, jak włączyć nowy układ do obwodu. Pojawiły się nowe narzędzia, takie jak programatory w obwodzie, nowe kompilatory itp. Dla inżynierów oprogramowania układowego uczenie się korzystania z zupełnie nowego zestawu urządzeń peryferyjnych i timerów (głównie układów rejestrów i znaczeń bitowych).

32-bitowe jest fajne i tak dalej, ale o ile nie trzeba wykonywać dużo ciężkich obliczeń, jaki jest sens? Jeśli masz tylko cztery piny GPIO, dostęp do nich wewnętrznie jako rejestr 32-bitowy nie daje przewagi nad użyciem rejestru 8-bitowego.

Myślę, że zużycie energii zawsze będzie sprzyjać 8-bitowym mikrom.

Na przykład PIC10F200 pobiera 175 µA pracując przy 4 MHz i 2 V oraz 100 nA w trybie uśpienia. CY8C4013SXI-400 pobiera około 800 µA przy 4 MHz i 2 V i 1 μA w trybie uśpienia. (Arkusz danych dla CY8C4013SXI nie miał liczb ani dla 4 MHz, ani 2v, więc musiałem dokonać pewnych oszacowań - arkusz danych mówi, że pobiera 2 ma @ 6 MHz i 3,3 v.)

Tak więc ARM pobiera 4,5 razy więcej prądu po przebudzeniu i 10 razy podczas snu. Nie wydaje się to dużo, ale jest to różnica między uruchomieniem komórki na monety przez 3 miesiące lub przez rok. (Zakładam, że oba mikrokontrolery przeważnie wykonują synchronizację, aktualizują porty itp. I nie wykonują naprawdę ciężkich obliczeń. W takim przypadku 8-bitowa mikroprocesor musi wykonywać wiele arytmetyki wielobajtowej przez dłuższy czas czasu traci część swojej przewagi).

Interesujące jest to, że ARM pobiera około czterokrotnie więcej prądu niż 8-gorzki, a to z kolei ma wewnętrzne rejestry i ścieżki danych, które są czterokrotnie szersze. Nie sądzę, że to zbieg okoliczności. W przypadku CMOS zużycie energii jest w przybliżeniu proporcjonalne do liczby przełączanych tranzystorów, a ARM oczywiście robi znacznie więcej na wykonaną instrukcję.

Ponieważ coraz więcej dostawców ARM wprowadza na rynek chipy niskiej jakości, nie zdziwiłbym się, gdyby tacy dostawcy jak Microchip jeszcze bardziej obniżyli swoje ceny. W każdym razie, przy cenach mniej więcej równych, podobnych rozmiarach, ale o wiele mniej 32-bitowych układów do wyboru, myślę, że 8-bitowe mikrokontrolery będą jeszcze przez jakiś czas - szczególnie dlatego, że masz zapoznało się z nimi dziesiątki tysięcy inżynierów.

tcrosley
źródło
Jeśli chodzi o zużycie energii przy wdrożonych trybach uśpienia, należy również wziąć pod uwagę wydajność kodu. Jeśli MCU budzi się przez wyzwalacz, a następnie wykonuje kod i wraca do trybu uśpienia, liczba tyknięć zegara potrzebnych do ukończenia zadania będzie dość istotna. Myślę, że większość prądu pobieranego przez MCU pochodzi z oscylatora pracującego z pełną prędkością. Aby wykonać tę samą pracę co 32-gorzki, 8-gorzki prawdopodobnie będzie potrzebował około pięć razy więcej cykli, po prostu dlatego, że generalnie są one znacznie mniej skuteczne w kodzie, nawet jeśli wykonują prostą arytmetykę.
Lundin
(I to nie tyle, ponieważ mają 8-bitową magistralę danych, ale głównie dlatego, że wszystkie główne 8-gorzkie rynki mają starożytne konstrukcje rdzeni procesorów z lat 70. i 80.)
Lundin
1
@Lundin Mówię to w mojej odpowiedzi - jeśli 8-gorzki ma dużo fantazji w ISR, to jednak traci część swojej przewagi. Ale jeśli po prostu ustawia jakieś flagi lub aktualizuje rejestr, to będzie bardziej wydajne.
tcrosley
5

Trzy główne punkty:

  • Cena £
  • Rozmiar
  • Pobór energii

50 centów przy zamawianiu 10 000 żetonów to raczej dużo pieniędzy. Jeszcze więcej, gdy zamawiasz 100 000 żetonów.

Możesz uzyskać 8-bitowe układy znacznie mniejsze niż 32-bitowe, takie jak PIC10, który jest dostępny w pakiecie SOT23-6.

Układy 32-bitowe, ponieważ generalnie są taktowane szybciej i robią więcej, zużywają znacznie więcej energii niż mały 8-bitowy układ. Baterie rozładowują się szybciej, systemy zasilania muszą zapewniać więcej prądu (a zatem być droższe) itp.

W końcu, po co kupować żonglera, żeby wziąć filiżankę cukru obok?

Majenko
źródło
2
Wystarczy porównać dwa układy tego samego producenta - na przykład PIC18F25K20 i PIC32MX250F512 firmy Microchip. Oba nowoczesne MCU. Oba arkusze danych mają wartość Idd vs prędkość zegara. 8-bitowy wykres osiąga maksimum przy 5 mA, 32-bitowy szczyt osiąga przy 20 mA. Jeśli się nad tym zastanowić, 8-bitowa operacja zrobiłaby coś z 8 zatrzaskami - 32-bitowy zrobiłby to samo (lub równoważne) z 32 zatrzaskami. To 4 razy więcej niż zatrzaski, którymi trzeba manipulować, więc 4x typowy pobór prądu.
Majenko
2
Prąd bezczynności dla 32 bitów wynosi od ~ 0,5 mA do 7 mA. 8-bitowy wykres dla prądu jałowego jest mierzony w skali µA i osiąga wartość szczytową przy 7µA - zaledwie 4µA przy pracy w normalnej temperaturze pokojowej ...!
Majenko,
3
Wykop niektóre arkusze danych i poszukaj siebie.
Majenko,
2
Zakładając, że wszystko, co robi układ, to przetwarzanie. Rzeczy wymagają czasu, który nie jest zależny od szybkości układu, np. Odczyt danych z zewnętrznych czujników itp. 32-bitowy procesor 80 MHz nie odczyta urządzenia I2C 100 kHz szybciej niż 8-bitowy procesor 16 MHz.
Majenko,
3
Nie zapomnij o starszym oprogramowaniu (szczególnie dla systemów wymagających certyfikacji) i znajomości programisty, doborze komponentów urządzeń peryferyjnych / RAM / Flash (konstrukcja mikrokontrolera z procesorem o wyższej wydajności zużyje więcej miejsca na pamięć; Cortex-M z 256 bajtami pamięci RAM wydaje się mało prawdopodobne w najbliższym czasie) oraz wybór pakietu / napięcia. Dobra odpowiedź powinna również wyjaśnić, dlaczego rynek 16-bitowy nie radzi sobie lepiej (i bardziej nowoczesne 8-bitowe ISA, takie jak AVR) i dlaczego rynek 4-bitowy jest pozornie bardzo ograniczony (zegarki i co jeszcze?).
Paul A. Clayton,
2

Aplikacje uC, które opracowałem dla produktów komercyjnych, prawie nigdy nie obsługiwały danych większych niż 8 bitów; więc nawet gdyby 32-gorzkie były w tej samej cenie co 8-gorzkie, nadal nie byłoby korzyści. Jak powiedział ktoś inny, wybieramy to, co znane, abyśmy mogli szybciej to wykopać. Ostatni, który opracowałem, okazał się jednak przesuwać PIC16, którego użyłem pod każdym względem - ale nie z powodu rozmiaru danych. Jeśli zrobię coś takiego, to naprawdę powinienem nauczyć się ARM.

Garth Wilson
źródło
Domyślam się, że w przypadku większości małych aplikacji mikro największy wymagany rozmiar danych to 16 bitów, a może 24. Większość aplikacji nie musi wiele robić z rzeczami większymi niż 8 bitów, ale musi coś zrobić. Z drugiej strony prawie każdy 8-bitowy mikrokontroler, jaki kiedykolwiek powstał (jeśli nie absolutnie każdy), ma flagę przenoszenia, która umożliwia użycie sekwencji operacji do wykonania 16-bitowej (lub nawet większej).
supercat,
2

Spodziewałbym się, że układy ARM przejmą większość funkcji, w których coś zachowuje się jak „komputer”. Z drugiej strony wiele 8-bitowych mikrokontrolerów przyzwyczaja się do robienia rzeczy, które można wykonać za pomocą stosunkowo prostego programowalnego urządzenia logicznego lub umiarkowanej liczby bramek, ale w rzeczywistości można to zrobić taniej i / lub przy mniejszym pobieraniu prądu za pomocą prosta 8-bitowa mikro. Przy projektowaniu bardziej skomplikowanych aplikacji często łatwiej jest używać 32-bitowego mikro niż 8-bitowego, ale jeśli celem całego układu jest np. Obejrzenie i usunięcie określonego wejścia, a jeśli jest wysokie, zacznij generować 200 pulsuje na określonym wyjściu w odstępach 1ms, następnie 100 w odstępach 2ms, następnie 100 w odstępach 3ms, następnie pauzuj na 100ms i kontynuuj robienie tego, dopóki sygnał wejściowy nie spadnie, projektowanie kodu dla tego może być w rzeczywistości łatwiejszena 8-bitowym mikroprocesorze niż na 32-bitowym. Różnica kosztów między 8-bitowymi i 32-bitowymi mikrami może nie być już wystarczająca w wielu przypadkach, aby uzasadnić dodatkowe wysiłki inżynieryjne, aby „dopasować” projekt do 8-bitowej mikroskopy, ale w przypadkach, gdy część 32-bitowa nie byłaby nie oszczędzasz wysiłku inżynieryjnego, nie ma powodu, aby wydawać nawet grosz.

supercat
źródło
Zgadzam się, ale zaznaczam, że utrzymanie i utrzymanie biegłości w korzystaniu z dwóch łańcuchów narzędzi wymaga własnego wysiłku inżynierskiego.
Scott Seidman,
2
@ScottSeidman: True. Z drugiej strony warto również wspomnieć, że niektóre 8-bitowe mikroskopy mogą zacząć uruchamiać kod niemal natychmiast po włączeniu, podczas gdy 32-bitowe mikrosy, które widziałem, potrzebują nieco więcej czasu.
supercat,
Zastanawiam się, czy kiedykolwiek zobaczymy licencję ARM na platformach 8-bitowych. Istnieje kilka wspaniałych cech implementacji ARM, takich jak możliwość po prostu nie taktowania całych urządzeń peryferyjnych i magistral, które powinny sprawić, że 8-bitowy ARMS będzie krążył wokół innych platform pod względem mocy pochłaniania. Jeśli mfct stworzą biblioteki zgodne z CMSIS, myślę, że ostatecznie zmiotłyby dużych graczy.
Scott Seidman,
@ScottSeidman: W rzeczywistości chciałbym zobaczyć projekty, które mogą mieć wrażliwe na czas części urządzeń peryferyjnych (np. Timery, generatory szybkości transmisji itp.) Działające ze stałą podstawą czasową, niezależną od szybkości procesora , ale widziałem tylko minimalne poparcie dla takiej koncepcji. Krzem nie byłby trudny, ale zgaduję, że narzędziom do syntezy brakuje środków na robienie takich rzeczy efektywnie.
supercat,
@ superuper Nie jestem pewien co do innych mikrokontrolerów, ale PIC32 ma koncepcję zegara magistrali peryferyjnej, który można ustawić na inną częstotliwość zegara niż zegar główny. Możesz więc zmienić prędkość procesora, na przykład w celu oszczędzania energii, i nadal utrzymywać ten sam zegar PB, abyś nie musiał przeprogramowywać wszystkich swoich prędkości transmisji peryferyjnych itp.
tcrosley
1

Chociaż zgadzam się, że koszt procesora i zużycie energii są głównymi przyczynami, jeszcze jedną kwestią, której nie widziałem tutaj na liście, jest przestrzeń na płytce drukowanej. W przypadku wielu rodzajów systemów wbudowanych, takich jak, powiedzmy, elektroniczna waga łazienkowa, nie ma dużej potrzeby wielu wejść / wyjść, brak korzyści dla większego rozmiaru magistrali i brak korzyści dla szybszego przetwarzania. Jednak jestKorzyść z mniejszego pakietu z mniejszą liczbą styków, ponieważ upraszcza układ i układ płytki drukowanej, a często jest mniejszy. Jeśli płytę można zaprojektować jako płytę 2-warstwową, a nie 4-warstwową, istnieje znaczna oszczędność kosztów, a mniejsze liczby pinów, które często pochodzą z procesorów 8-bitowych, zwykle ułatwiają te oszczędności niż 32- procesory bitowe, które generalnie mają więcej pinów i fizycznie większe pakiety.

Edward
źródło
Zdajesz sobie sprawę, że to pytanie z 2 i pół roku, prawda?
Olin Lathrop,
@Olin Kolejny punkt widzenia nie boli.
m.Alin
@OlinLathrop: tak, mój 8-bitowy zegar / kalendarz sterowany procesorem działa dobrze. :)
Edward
0

Nawet w 8-bitowym świecie wiadomo, że nowsze typy zajmują bardzo dużo czasu na rzecz starszych typów - patrz MCS51 wciąż żyje w swoich niszach, a MCS48 wciąż znajduje się w nieoczekiwanych miejscach.

W wielu przypadkach zmiana nie zachodzi, ponieważ nie przynosi żadnej dodatkowej wartości i wiąże się z kosztem nauki nowej technologii, która jeszcze nie udowodniła, że ​​pozostanie i / lub oczekuje się, że nadal będzie ruchomym celem (co sprawia, że jest to interesujące dla osób, które chcą skupić się na technologii MCU, ale denerwujące dla osób, które chcą skupić się na swojej aplikacji, a nie stale naprawiać i ponownie testować oprogramowanie produkcyjne w celu dostosowania tegorocznego rocznika ARM!). Dla niektórych składnik, który nie został już opracowany, jest przestarzały, dla innych w końcu stał się stabilny i chociaż może wymagać obejścia wrastających błędów, zapewnia przynajmniej stabilną platformę dla nich. Strumień lawy nie zawsze jest antypatternem, który został rozbity - sprawia, że ​​góry pozostają ...

rackandboneman
źródło