Mikrokontrolery / mikroprocesory i różne wersje bitów, jaka jest różnica?


20

Jako hobbysta inżynierii ogólnej każdego dnia uczę się więcej o świecie mikrokontrolerów. Jedną rzeczą, której nie do końca rozumiem, jest znaczenie wersji bitowej mikrokontrolera.

Używam ATmega8 od kilku miesięcy i wydaje się, że działa świetnie dla moich celów. Wiem, jak rzeczy takie jak szybkość zegara, pamięć, liczba pinów IO, rodzaje magistrali komunikacyjnych itp. Odróżniają jeden mikrokontroler od drugiego. Ale nie do końca rozumiem znaczenie, powiedzmy, 8-bit vs. 16-bit vs. 32-bit. Rozumiem, że wyższa wersja bitowa pozwala urządzeniu przechowywać większe liczby, ale jak to wpływa na moją decyzję? Jeśli projektuję produkt, w ramach którego hipotetyczny scenariusz zdecydowałbym, że 8-bitowy procesor po prostu nie da rady i że potrzebuję czegoś wyższego.

Czy jest jakiś powód, by sądzić, że teoretyczny 32-bitowy wariant ATmega8 (wszystkie inne rzeczy są równe) byłby lepszy od wersji 8-bitowej (gdyby takie urządzenie było możliwe)?

Być może mówię bzdury, ale myślę, że to wynik mojego zamieszania.


Odpowiedzi:


24

To nie jest szerokość liczby, którą może przechowywać, to szerokość, z którą może pracować w jednej operacji. Zwyczajowo (ale niekoniecznie) ma to również pewien stopień korelacji z szerokością natywnego adresowania pamięci, a zatem ilością pamięci, którą można łatwo zmapować bez brzydkich obejść, takich jak segmentacja lub przełączanie banków.

Dzisiejsze 32-bitowe rdzenie są lepsze od 8-projektowych pod wieloma względami (elastyczność, płaski model pamięci i oczywiście wydajność), z głównymi wyjątkami są starsze systemy, aplikacje o ekstremalnej objętości i presji cenowej (w przeciwnym razie ceny lepiej korelują z na rozmiar pamięci układu niż przy szerokości rdzenia) oraz skutki uboczne procesu / gęstości. Później może zapewnić takie rzeczy, jak praca 5 V, a być może w niektórych przypadkach większa twardość promieniowania lub przewaga prostoty, jeśli próbujesz udowodnić, że sama konstrukcja procesora jest wolna od błędów logicznych. Ostatnim efektem ubocznym procesu / wieku dla wielu hobbystów jest to, że 8-bitowe rdzenie w pakietach DIP są powszechne, podczas gdy 32-bitowe urządzenia w takich pakietach są rzadsze (chociaż istnieją).


3
Szerokość, którą może obsłużyć w jednej operacji, może być ważna podczas synchronizacji asynchronicznych części programu. Jeśli potrzebujesz atomowo odczytać 16-bitową wartość na 8-bitowej mikroprocesorze, prawdopodobnie najpierw musisz wyłączyć przerwania, których możesz uniknąć, aby utrzymać niski czas reakcji ISR.
ndim

Inną cechą, w której niektóre 8-bitowe mikroskopy mogą być lepsze od ARM (najpopularniejsza architektura 32-bitowa), jest kręcenie bitów we / wy. PIC 18Fxx (8-bitowy) może ustawić lub wyczyścić dowolny bit w przestrzeni we / wy za pomocą jednej instrukcji, niezależnie od tego, co zawierają rejestry, podczas gdy ARM zazwyczaj wymaga procesu wieloetapowego. Układy ARM mogą uruchamiać więcej instrukcji na sekundę niż obecnie dostępne układy PIC (niektóre małe układy zgodne ze standardem PIC 100 MHz były dostępne w firmie Scenix, ale myślę, że zostały wycofane), ale nawet dostępne układy PIC mogą nadal wykonywać niektóre rodzaje bitów szybciej.
supercat

1
Chociaż mniej uniwersalne, niektóre urządzenia ARM mają takie rzeczy, jak rejestry GPIOx_BSRR / GPIOx_BRR, które można zapisać w celu ustawienia lub wyczyszczenia poszczególnych bitów GPIO.
Chris Stratton

8

Wartość bitu to rozmiar magistrali danych lub rury danych, co oznacza, że ​​8-bitowy MCU może (w przeważającej części) pracować tylko z wartościami od 0 do 255 w każdym cyklu zegara. Pomyśl o tym, ponieważ procesor ma równolegle 8 cyfrowych linii. A 16-bit ma 16 linii, a 32-bit ma 32 linie. Tak więc dla każdego cyklu zegara odczytuje te linie danych, a im więcej linii, tym wyższa wartość, z którą można pracować na cykl zegara.

28256

21665,536

2324,294,967,296

Większe magistrale danych umożliwiają również procesorowi dostęp do większych adresów pamięci.

To robi dużą różnicę podczas operacji matematycznych. 16-bitowa liczba zapewnia o wiele większą precyzję niż liczby 8-bitowe. 16-bitowe mikrokontrolery są również bardziej wydajne w przetwarzaniu operacji matematycznych na liczbach dłuższych niż 8 bitów. 16-bitowy mikrokontroler może automatycznie działać na dwóch 16-bitowych liczbach, podobnie jak wspólna definicja liczby całkowitej. Ale gdy używasz 8-bitowego mikrokontrolera, proces nie jest tak prosty. Funkcje zaimplementowane do obsługi takich liczb będą wymagały dodatkowych cykli. W zależności od intensywności przetwarzania aplikacji i liczby wykonanych obliczeń może to wpłynąć na wydajność obwodu.

Różnica między 8-bitowym a 16-bitowym mikrokontrolerem

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.