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.
źródło
Odpowiedzi:
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ą).
źródło
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.
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
źródło