Dlaczego mikrokontrolery mają tak mało pamięci RAM?


39

Być może jest to bardziej problem percepcyjny, ale wygląda na to, że mikrokontrolery posunęły się naprzód w ostatnich 20 latach, pod prawie wszystkimi względami, wyższa prędkość zegara, więcej urządzeń peryferyjnych, łatwiejsze debugowanie, 32-bitowe rdzenie itp.

Nadal często występuje pamięć RAM w 10 KB (16/32 KB).

Nie wydaje się, że może to być kwestia kosztów lub wielkości bezpośrednio. Czy jest to problem ze złożonością, gdy kontroler pamięci RAM przekracza pewien próg?

A może po prostu nie jest to na ogół wymagane?

Patrząc na matrycę części u popularnego dostawcy internetowego, widzę jeden Cortex M4 z 256 KB za mniej niż 8 USD, a następnie za kilka dolarów więcej można znaleźć kilka innych, które są bez pamięci ROM, ale wydaje się dość rzadkie ...

Nie potrzebuję dokładnie mikrokontrolera z MB pamięci lotnej, ale wygląda na to, że ktoś mógłby ...


8
Być może jest to bardziej techniczny powód, ale wydaje mi się, że może to być kwestia rynków. Mikrokontrolerów używasz, gdy masz aplikacje, które ich używają, kiedy potrzebujesz czegoś więcej mocy, zwykle przenosisz się do bardziej kompletnego systemu osadzonego.
Jarrod Christman

15
10s kB. To jest ogromne. Mój iść do mikrokontrolera do użycia w prototypowaniu ma 68 bajtów pamięci RAM: en.wikipedia.org/wiki/PIC16x84
slebetman

2
Kiedyś napisałem programowy rasterizer 3D w 86B na Arduino z 2KB RAM. Zdenerwowało mnie to, bo gdybym miał nawet 10 KB lub 50 KB, mógłbym zacząć dopasowywać prawdziwe modele do pamięci i zrobić coś interesującego. Właściwie miałem dokładnie to samo pytanie w tym czasie i nie sądzę, by obecne odpowiedzi zająć się tym wystarczająco dobrze. Tak, SRAM jest drogi - ale procesory mają megabajty pamięci podręcznej wykonanej z SRAM, a mimo to są dość tanie. To jest kiepska wymówka.
imallett

2
@slebetman z jakiegoś powodu lubisz 20-letnią mikroprocesor, gdy znacznie lepsze urządzenia są szerzej dostępne i tańsze?
markrages

3
it seems like somebody mightjest tutaj haczyk, większość ludzi nie. Nie będziesz dokładnie przesyłać strumieniowo Netflix na tym układzie, a 64K zwykle wystarcza na wszystko, co musisz zrobić z mikrokontrolerem . Jeśli chcesz iść wyżej, zdobądź pełnowymiarową kompozycję, np. Malinę.
TC1,

Odpowiedzi:


44

Jest tego kilka przyczyn.

Przede wszystkim pamięć zajmuje dużo krzemu. Oznacza to, że zwiększenie ilości pamięci RAM bezpośrednio zwiększa obszar krzemowy układu, a tym samym koszty. Większy obszar krzemu ma efekt „podwójnego uderzenia” w cenę: większe żetony oznaczają mniej żetonów na wafel, szczególnie wokół krawędzi, a większe żetony oznaczają, że każdy chip ma większą wadę.

Drugi to kwestia procesu. Macierze RAM powinny być zoptymalizowane na różne sposoby niż logiczne i nie jest możliwe wysyłanie różnych części tego samego układu przez różne procesy - cały układ musi być wytwarzany w tym samym procesie. Istnieją półprzewodniki, które w mniejszym lub większym stopniu zajmują się produkcją pamięci DRAM. Nie procesory ani inna logika, po prostu pamięć DRAM. DRAM wymaga wydajnych powierzchniowo kondensatorów i tranzystorów o bardzo niskim wycieku. Wykonanie kondensatorów wymaga specjalnego przetwarzania. Wykonanie tranzystorów o niskim wycieku skutkuje wolniejszymi tranzystorami, co jest dobrym kompromisem dla elektroniki odczytu DRAM, ale nie byłoby tak dobre do budowy logiki o wysokiej wydajności. Wytwarzanie pamięci DRAM na matrycy mikrokontrolera oznaczałoby, że musiałbyś w jakiś sposób obniżyć optymalizację procesu. Duże macierze pamięci RAM są również bardziej podatne na awarie ze względu na ich duży obszar, malejącą wydajność i rosnące koszty. Testowanie dużych macierzy RAM jest również czasochłonne, dlatego włączenie dużych macierzy zwiększy koszty testowania. Dodatkowo korzyści skali zmniejszają koszt oddzielnych układów RAM bardziej niż bardziej wyspecjalizowane mikrokontrolery.

Pobór mocy to kolejny powód. Wiele wbudowanych aplikacji ma ograniczoną moc, w wyniku czego wiele mikrokontrolerów jest budowanych w taki sposób, że można je wprowadzić w stan uśpienia o bardzo małej mocy. Aby umożliwić uśpienie przy bardzo niskim zużyciu energii, SRAM jest używany ze względu na jego zdolność do utrzymywania zawartości przy wyjątkowo niskim zużyciu energii. SRAM z podtrzymaniem bateryjnym może utrzymywać swój stan przez lata bez zasilania pojedynczym przyciskiem 3V. Z drugiej strony DRAM nie może utrzymać swojego stanu przez ułamek sekundy. Kondensatory są tak małe, że garstka elektronów wydostaje się na zewnątrz i wnika do tranzystorów ogniw. Aby temu przeciwdziałać, pamięć DRAM musi być stale odczytywana i zapisywana. W rezultacie DRAM zużywa znacznie więcej energii niż SRAM na biegu jałowym.

Z drugiej strony komórki bitowe SRAM są znacznie większe niż komórki bitowe DRAM, więc jeśli wymagana jest duża ilość pamięci, DRAM jest ogólnie lepszą opcją. Dlatego dość często używa się niewielkiej ilości SRAM (kB do MB) jako wbudowanej pamięci podręcznej w połączeniu z większą ilością pozamipowych DRAM (MB do GB).

Zastosowano kilka bardzo fajnych technik projektowania, które zwiększają ilość pamięci RAM dostępnej w systemie wbudowanym przy niskim koszcie. Niektóre z nich to pakiety wieloukładowe, które zawierają osobne matryce dla procesora i pamięci RAM. Inne rozwiązania obejmują wytwarzanie padów na górze procesora, dzięki czemu układ pamięci RAM można układać jeden na drugim. To rozwiązanie jest bardzo sprytne, ponieważ różne układy pamięci RAM można przylutować do procesora w zależności od wymaganej ilości pamięci, bez konieczności dodatkowego routingu na poziomie płyty głównej (szyny pamięci są bardzo szerokie i zajmują dużo miejsca na płycie). Należy zauważyć, że systemy te zwykle nie są uważane za mikrokontrolery.

Wiele bardzo małych systemów wbudowanych i tak nie wymaga dużo pamięci RAM. Jeśli potrzebujesz dużo pamięci RAM, prawdopodobnie będziesz chciał użyć wyższej klasy procesora, który ma zewnętrzną pamięć DRAM zamiast wbudowanej pamięci SRAM.


Widziałem rzeczywiste układy pamięci RAM z nogami i wszystko przyklejone / umieszczone na procesorach (które są pakietami BGA) i skierowane do nich! Rzeczy, które robimy dla miejsca na pokładzie !! Jak podkreślają Rosjanie metodologią projektowania TRIZ, jeśli zabraknie miejsca w X i Y, przejdź do Z :)
KyranF

2
+1 Za ważne rozróżnienie między SRAM i DRAM. SRAM jest zarówno szybszy, jak i bardziej energooszczędny, szczególnie w stanie bezczynności, ale, jak zauważasz, znacznie droższy i wymaga więcej miejsca.
plajta

Nie sądzę, że SRAM jest najdroższym rodzajem pamięci RAM. Kombinacja klap i multiplekserów może być używana jako pamięć o dostępie swobodnym, która zapewni lepszą wydajność niż SRAM, ale przy znacznie wyższym koszcie krzemu. Takie wspomnienia zwykle nie są większe niż około 32 słów, ale taka pamięć może pomieścić jednoczesne odczyty i zapisy w sposób niemożliwy do uzyskania przez SRAM.
supercat

1
To prawda, że ​​pliki rejestrów i pełne przerzutniki są droższe niż SRAM, ale nie są używane do pamięci systemowej ogólnego przeznaczenia.
alex.forencich

1
Widziałem działający serwer HTTP na MCU z 160kB SRAM i bez zewnętrznego DRAM. Nie mógł obsłużyć wielu połączeń równoległych, ale działał.
Jan Dorniak

15

Pamięć prawdopodobnie zajmuje najwięcej krzemowej przestrzeni, a bardzo szybka w użyciu pamięć RAM jest niestabilna - i stale wykorzystuje energię, aby utrzymać swój stan. O ile nie potrzebujesz dużo pamięci RAM, nie jest to przydatne w wielu innych aplikacjach. Jeśli projektant systemów wbudowanych potrzebuje więcej pamięci RAM, otrzymuje jedynie zewnętrzny układ pamięci RAM i korzysta z interfejsów pamięci peryferyjnej, które często mają mikrokontrolery, w celu bardzo łatwego rozszerzenia pamięci typu plug and play. Właśnie dlatego rozumiem, dlaczego ogólnie mikrokontrolery nadal mają rozsądnie niską wbudowaną pamięć RAM, ponieważ rozsądny kod aplikacji i scenariusze przypadków użycia zwykle nie potrzebują wiele.

Kiedy zaczniesz wchodzić do większych architektur, które muszą działać w pełni na systemach operacyjnych, pamięć RAM staje się niezwykle ważna, jednak wychodzi to z królestwa mikrokontrolerów i na komputery wbudowane bardziej niż te, które widzisz na płytach Beaglebone i Raspberri Pi. dni. I nawet na tym etapie procesory są tak złożone i pełne funkcji, że nie mają miejsca na ilość pamięci RAM potrzebnej do ich zadania, więc pamięć zewnętrzna jest w ogóle wymagana do ich działania.

EDYTOWAĆ:

Jako osobistą anegdotę stworzyłem niedawno małą autonomiczną tablicę sterowania robotem w celu wykorzystania jej do wizji komputerowej w niskiej rozdzielczości, takiej jak wykrywanie ruchu oraz śledzenie i śledzenie obiektów. Do tego zadania wybrałem ARM Cortex M3 o niskiej liczbie pinów i patrząc na wybór procesorów serii SAM3 firmy Atmel, rzeczywiście wybrałem najwyższą pamięć RAM, jaką mogłem znaleźć - ponieważ w tym przypadku nie chciałem kupować zewnętrznego układu scalonego RAM ze względu na miejsce na płycie i brak potrzeby złożoności szybkiej magistrali pamięci RAM na płytce drukowanej. W tym przypadku w przypadku mojej konkretnej aplikacji bardzo chciałbym mieć opcję wielu 100 KB więcej pamięci RAM, jeśli to możliwe.


Dobra uwaga, nawet nie myślałem o zużyciu energii ...
Grady Player

4
„a pamięć RAM jest niestabilna, ale bardzo szybka w użyciu, zużywa energię stale, aby utrzymać swój stan” ledwo. Logika CMOS, w tym SRAM, zużywa bardzo mało energii, gdy nie zmienia stanu. Zauważ, że większość mikrokontrolerów zachowuje zawartość pamięci RAM, nawet w trybach bardzo niskiego zużycia energii.
Chris Stratton

@ChrisStratton: Widziałem wiele mikrokontrolerów od kilku różnych producentów, z trybami, które wyłączają część pamięci RAM w celu oszczędzania energii, chociaż nieco denerwujące te, które widziałem, nie pozwalają na zasilenie pamięci RAM bez resetu systemu. Nie jestem pewien, jaki jest cel tego ostatniego ograniczenia; jeśli potrzebuję dużego fragmentu pamięci RAM do tymczasowego przechowywania podczas niektórych operacji, ale nie inaczej, nie rozumiem, dlaczego nie powinienem móc włączać go, gdy jest to potrzebne, i wyłączać, kiedy nie, ale nie widziałem takiego cecha.
supercat

14

Oprócz doskonałych punktów poruszonych w innych odpowiedziach, innym powodem ograniczonej pamięci RAM jest architektura mikrokontrolera. Weźmy na przykład Microchip PIC10LF320, który ma tylko 448 bajtów pamięci programu (flash) i 64 bajty pamięci RAM. Ale prawdopodobnie kosztuje to tylko 25ȼ (lub mniej) w dużych ilościach. Ograniczony rozmiar słowa instrukcji PIC10 (12 bitów) pozwala mu adresować bezpośrednio tylko 128 bajtów pamięci RAM.

Jestem pewien, że istnieją inne mikrokontrolery, które mają tylko 8-bitową magistralę adresową, co ogranicza je do 256 bajtów pamięci RAM.

Ale większość mikrokontrolerów średniego zasięgu (nawet tych z 8-bitowymi ścieżkami danych) ma 16-bitową magistralę adresową. Ważnym aspektem architektonicznym dla tych układów jest to, czy układ wykorzystuje architekturę Harvarda czy Von Neumanna .

Większość mikrokontrolerów korzysta z architektury Harvard, która ma osobne 16-bitowe przestrzenie adresowe dla pamięci programu, pamięci RAM i adresów we / wy mapowanych w pamięci. Dlatego 16-bitowa magistrala adresowa może uzyskać dostęp do 64 KB (65 536) bajtów pamięci RAM. Architektura wciąż nakłada limit 64 KB, a jeśli ktoś chce przekroczyć ten limit, należy zastosować jakiś rodzaj stronicowania. O wiele bardziej powszechne jest stronicowanie przestrzeni programowej niż pamięci RAM.

Mikrokontrolery wykorzystujące architekturę Von Neumann, takie jak linia Freescale HCS08, mają tylko jedną przestrzeń adresową podzieloną między pamięć programu, pamięć RAM i operacje we / wy mapowane na pamięć. Aby mieć rozsądną ilość miejsca na program, ogranicza to ilość pamięci RAM zwykle do 4K lub 8K. Ponownie można użyć stronicowania, aby zwiększyć dostępną przestrzeń programu lub pamięci RAM.


1
Trzeba jednak pamiętać, że rdzeń PIC jest tak nieefektywny pod względem kodu, że za darmo zużyje dużo dodatkowej pamięci flash. Jednym z powodów, dla których nie potrzebuje dużo pamięci RAM, jest to, że ma poważne ograniczenia, na przykład głębokości stosu wywołań.
Lundin

@Lundin Zgadzam się, musisz bardzo ostrożnie programować oryginalne PIC10 i PIC12 w języku asemblera . Nowsze urządzenia PIC12F i PIC16F mają teraz 16-poziomowy stos sprzętu i 14 nowych instrukcji. niektóre dodane tylko dla C, więc są o wiele bardziej użyteczne.
tcrosley

@Lundin: Układy PIC o długości instrukcji 12 i 14 bitów były całkiem przyzwoite pod względem gęstości kodu, jak myślałem. W przypadku PIC18F gęstość kodu naprawdę spada, gdy używa się kompilatora HiTech z powodu nadmiernej ilości przełączania banków, która zwykle była wymagana.
supercat

7

Po dłuższej pracy z mikrokontrolerami i małymi systemami chciałbym zauważyć, że bardzo często potrzeba bardzo mało pamięci RAM. Pamiętaj, że nawet jeśli MCU może być w stanie wiele osiągnąć, w obecnych czasach panuje tendencja do używania znacznie większej liczby MCU niż kiedykolwiek wcześniej i wykorzystywania ich więcej do rozdzielania wielu zadań w większych systemach. W połączeniu z faktem, że w przeciwieństwie do rozdętych systemów programistycznych potrzebnych do programowania w systemie Windows, programowanie MCU często wykorzystuje bardzo dobrze zoptymalizowane kompilatory, najczęściej z bardzo wydajnym kodem źródłowym C i C ++, czasami z niewielkim lub zerowym obciążeniem systemu operacyjnego. Chociaż ledwo można napisać program Windows do wyświetlania swojego imienia na dowolnym urządzeniu bez zużywania co najmniej setek kilobajtów, w tym zasobów systemu operacyjnego,

Z pewnością istnieją problemy z kosztami i przestrzenią, jak zauważyli inni. Ale historia tutaj jest taka, że ​​to, co nowi użytkownicy uważają za niewielką ilość pamięci RAM, jest naprawdę znacznie więcej niż kiedykolwiek wcześniej, a jednocześnie komponenty i urządzenia, z którymi MCU będzie musiało się komunikować, stają się inteligentniejsze. Szczerze mówiąc, moim największym wykorzystaniem pamięci RAM w wielu aplikacjach MCU było ostatnio buforowanie komunikacji sterowane przerwaniami, aby zwolnić MCU do innych zadań bez obawy utraty danych. Ale wierzcie lub nie, dla zwykłej logiki i funkcjonalność obliczeniową, mikrokontrolery są bardzo dobrze dopasowane do ich ograniczoną zbudowany w pamięci RAM i pamięci flash zasobów, a naprawdę można zrobić wiele z bardzo niewiele.

Pamiętaj, że kiedyś słynne gry wideo z prymitywną grafiką, ale złożoną logiką gier, takie jak „PAC Man” i „Space Invaders”, były zazwyczaj wykonywane w 8K ROM-ach na maszynach, które miały zaledwie 8 lub 16 KB pamięci RAM!


Co z kartami SD? Czy karty SDHC nie wymagają bufora 256 lub 512 bajtów (standardowe / stare karty SD nie są już produkowane)?
Peter Mortensen

Wersja Pac Man dla komputerowego systemu wideo Atari 2600 miała 4K ROM, a sam VCS miał 128 bajtów pamięci RAM. Jednak wiele automatów zręcznościowych miało dość przyzwoitą porcję pamięci ROM i RAM w porównaniu z komputerami domowymi z tamtych czasów. Myślę, że Defender, na przykład, miał 32 KB lub ROM i 64 KB pamięci RAM, chociaż 32 KB pamięci RAM było „tylko do zapisu” z punktu widzenia procesora (procesor umieszczałby tam dane, które sprzęt wyświetlania taktowałby na monitorze) .
supercat

@PeterMortensen Wiele kart SD ma wbudowany procesor do zarządzania pamięcią flash. Niektóre karty mają pełny 32-bitowy rdzeń ARM, który prawdopodobnie ma dołączone 16 lub 32 KB pamięci RAM.
alex.forencich

@ alex.forencich: Tak, ale czy interfejs SPI do obsługi karty SDHC SD nie wymaga bufora po stronie hosta (system osadzony / mikrokontroler) - w przeciwieństwie do starszych kart? Oznacza to, że adresowanie bitów nie jest już możliwe w przypadku nowszych kart (SDHC)? A może zależy to tylko od systemu plików (adresowanie bitów jest nadal możliwe)? Czy nowsze karty nie wymagają przesyłania bloków (a zatem wymagają bufora 256 lub 512 bajtów)?
Peter Mortensen

Tak, 512B, o ile pamiętam. Możesz po prostu napisać niewydajny sterownik karty SD, aby odrzucić pierwsze X bajtów danych -> nie potrzebujesz „dużego” bufora.
domen

3

Oprócz doskonałych punktów na temat kosztów i produkcji, zaskakująco małe jest zapotrzebowanie na wiele RAM-ów na chipie.

Często pracuję z mikrokontrolerami z pamięcią flash w dziesiątkach kB (16 kB, 32 kB) i pamięciami RAM w zakresie kB (1 kB, 2 kB). Bardzo często brakuje mi pamięci flash i prawie nigdy nie brakuje pamięci RAM. W większości moich projektów zbliżam się do limitu pamięci flash, ale zwykle potrzebuję znacznie mniej niż 20% pamięci RAM.

Większość bardzo małych mikrokontrolerów ma dwa różne rodzaje ról:

  • regulacja i kontrola: muszą kontrolować kawałek maszyny. Nawet w przypadku skomplikowanego algorytmu kontrolera, który może zająć dziesiątki kB przestrzeni kodu, wymagana jest bardzo mała pamięć RAM. Masz kontrolę nad procesem fizycznym i masz zmienne zawierające kilka jednostek fizycznych, a być może kilka zmiennych jako liczniki pętli. Nie potrzebujesz więcej.

  • przetwarzanie danych: w rzadkich przypadkach musisz przechowywać dużą ilość danych w tym samym czasie, możesz użyć zewnętrznej pamięci RAM. Prawie wszystkie współczesne mikrokontrolery mają natywną obsługę. Jeśli potrzebujesz prostego programu używającego dużej ilości pamięci, tańszym i mniejszym będzie użycie małego mikrokontrolera i zewnętrznej pamięci RAM, a nie mikrokontrolera wysokiego poziomu. Nikt nie produkuje kontrolerów z kilkoma portami, małą pamięcią flash i dużą pamięcią RAM, ponieważ jest na nie tak mało popytu.


2

Wszystkie wyżej wymienione powody są oczywiście ważne technicznie i dokładne. Nie zapominaj jednak, że elektronika to biznes, a MCU to jeden z najbardziej konkurencyjnych niszowych rynków w branży elektronicznej.

Odważę się powiedzieć, że faktyczne powody powiązania ceny MCU z ilością wbudowanej pamięci SRAM są głównie przyczynami marketingowymi, a nie kosztowymi:

  • W większości konstrukcji maksymalna osiągalna częstotliwość taktowania nie jest czynnikiem ograniczającym. Zamiast tego ilość dostępnej pamięci SRAM wynosi. Nie zrozumcie mnie źle, częstotliwość procesora jest niezwykle ważna, jednak w pewnym segmencie rodziny MCU zazwyczaj nie oferuje się różnych modeli urządzeń w różnych cenach w oparciu o maksymalną częstotliwość procesora. Również pamięć programu Flash jest drugim kluczowym czynnikiem ograniczającym, jednak nie skupię się zbytnio na Flashu (pytanie skierowane jest konkretnie do SRAM).

  • Ilość dostępnej pamięci SRAM jest bezpośrednio związana z poziomem złożoności, który będziesz mógł osadzić w swoim MCU, czy to z bibliotekami stron trzecich, czy z twoim własnym rozwijanym kodem. Jest to więc „naturalny” wskaźnik, według którego można segmentować na podstawie cen MCU. Dla klienta technicznego zrozumiałe jest, że MCU zdolne do wykonywania bardziej złożonych zadań (więcej SRAM, więcej pamięci Flash) powinno kosztować więcej. Cena tutaj jest odzwierciedleniem podstawowej wartości (możliwości dostarczania) MCU. Pamięć flash jest zwykle oferowana w ilości proporcjonalnej do SRAM.

  • Wręcz przeciwnie, jeśli weźmiesz rynek procesorów do komputerów stacjonarnych i mobilnych, zwykle nie możesz zdobyć konkretnego MCU / CPU z wieloma różnymi rozmiarami SRAM. Zamiast tego schemat wyceny jest zwykle budowany w oparciu o możliwości wykonania / wydajności MCU / CPU: częstotliwość, liczbę rdzeni, wydajność energetyczną ...


Myślę, że jest to prawdopodobnie dokładne, ale czy istnieją dowody? Jak drapanie śladów, aby sprzedać chip a jako chip b?
Grady Gracz

Uhm ... interesująca myśl. Nie mam dowodów na takie praktyki. Daje to jednak interesujące pytanie o koszty produkcji. Czy byłoby droższe zmarnowane nieruchomości układu krzemowego (płytki), gdyby zarysowano układ o większej wielkości SRAM do mniejszego rozmiaru SRAM? Czy zwiększone koszty produkcji i zapasów związane z produkcją nie jednego urządzenia, ale dwóch? Obawiam się, że cały przemysł elektroniczny jest bardzo wybredny w kwestii otwartego omawiania swoich kosztów. Możemy tego nigdy nie wiedzieć.
jose.angel.jimenez

1
Na dowód: MT6250 jest układem z wieloma matrycami, stosowanym w telefonach z pojedynczym układem scalonym, kosztuje mniej niż 2 USD objętości i jest znacznie bardziej skomplikowany niż mcu i zawiera matrycę sram o pojemności 8 MB. technologia i bogata w SRAM mcu.
bilety hulking

To byłaby dobra odpowiedź na pytanie „dlaczego cena MCU jest powiązana z ilością wbudowanej pamięci SRAM?”. Ale wydaje się, że nie odpowiada na pierwotne pytanie. Dlaczego jest tak mało dostępnych mikrokontrolerów z ponad 512 KB SRAM na chipie, za wszelką cenę? Dlaczego jest tak wiele mikrokontrolerów z „dziwnymi” rozmiarami SRAM bez mocy 2, skoro producenci dedykowanych układów SRAM wydają się sądzić, że zmniejszone koszty zapasów sprawiają, że warto produkować tylko dedykowane układy SRAM w rozmiarach o mocy 2?
davidcary

1

Najpierw musisz wziąć pod uwagę, że 16 KB lub 32 KB to ogromna ilość pamięci, a większość sprzedawanych dziś mikrokontrolerów nie ma tak dużej ilości pamięci RAM.

Wiele programów mikrokontrolera wymaga 10 lub 50 bajtów pamięci. Jeszcze bardziej złożone rzeczy potrzebują głównie w setkach bajtów.

Zasadniczo istnieją trzy przypadki użycia, w których potrzebujesz pamięci RAM w kolejności w bajtach: a) Gdy twój mikrokontroler wykonuje grafikę b) Kiedy używasz mikrokontrolera do dużych dowolnych obliczeń c) Kiedy interfejs z interfejsami PC

Po drugie, pamiętaj, że jeśli mówisz o pamięci RAM mikrokontrolera, mówisz o pamięci podręcznej poziomu 0 / poziomu 1. Jeśli uważasz, że Intel Haswell ma „tylko” 64 KB bajtów pamięci podręcznej poziomu 1, ponownie rozważysz rozmiar pamięci RAM mikrokontrolera.

Po trzecie, możesz podłączyć dowolną ilość zewnętrznej pamięci RAM do mikrokontrolera, szczególnie więcej niż możesz podłączyć do procesora.

Osobiście rozwijam wiele aplikacji mikrokontrolera i nigdy nie potrzebowałem 1 KB pamięci, a nawet więcej. Nigdy też nie korzystałem z zewnętrznej pamięci RAM.

Sytuacja wygląda inaczej, jeśli przejdziemy do ROM (dziś Flash), ponieważ twój program i dane znajdują się w ROM. Naprawdę istnieje wiele aplikacji, w których podłączasz zewnętrzną pamięć ROM do mikrokontrolera, ponieważ masz wiele danych.

Przeanalizujmy przykład: Przeanalizujmy aplikację mikrokontrolera i bierzemy przenośny odtwarzacz MP3 z wyświetlaczem i 4 gigabajty pamięci flash.

Do tej aplikacji potrzebujesz 1 KB pamięci RAM. To wystarczy do wykonania pracy. Możesz jednak użyć więcej pamięci RAM dla większych buforów, aby przyspieszyć zapisywanie z USB na Flash.

Teraz widzisz różnicę: typowy komputer mieści wszystkie programy i dane w pamięci RAM. Dlatego potrzebuje dużo pamięci RAM. W przypadku mikrokontrolera jest to wszystko we Flash / ROM.


2
Nie doceniasz użycia pamięci RAM w wielu aplikacjach. Nie w ogromnej ilości, ale może 10– krotnie w zależności od instancji. Odtwarzacze MP3 muszą wykonywać cyfrowe przetwarzanie sygnału.
Jason S

Chciałbym wiedzieć, dlaczego któreś z was mówi te rzeczy. Jakie polecenia C wymagają pamięci RAM. Zamiast powiedzieć „te aplikacje wymagają więcej pamięci RAM”, „wolę”, że te operacje wymagają więcej pamięci RAM, ponieważ ... ”
Frederick

-1

Projektując MCU, musisz zmierzyć się z warunkami, które nie są tak ważne na komputerach PC.

  1. Trwałość

    Aby wybrać komponenty, niekoniecznie musisz brać najlepsze lub / i najbardziej wydajne części, ale te, które sprawdziły się po kilku latach użytkowania, będą dostępne przez kilka lat i będą mogły pracować 24/7 przez lat Z tego powodu, jeśli kontroler jest na rynku od kilku lat i dobrze sobie radzi, wydaje się, że ma słabą pamięć RAM w porównaniu ze współczesnym standardem PC. Ale i tak dobrze sobie radzi i nie powinno być potrzeby wymiany, jeśli inżynieria była dobra.

  2. Przestrzeń

    Jednostki mikroprocesorowe to dosłownie mikroskopy. Musisz zmniejszyć potrzebną przestrzeń do absolutnego minimum. Oczywiście, możesz uzyskać 256 MB w tym samym miejscu, co 10-letnie chipy 64 KB. Tutaj dochodzi do sedna nr 1.

  3. Cena £

    Nie tylko cena zakupu, ale także zużycie energii. Nie chcesz projektować MCU, które ma kontrolę nad systemem wejściowym, który potrzebuje 1000 W, jeśli twój rywal w biznesie ma taki, który potrzebuje tylko 25 W. I oczywiście niższa cena zakupu (przy tej samej jakości) wynosi zawsze lepiej.


1
to mikroprocesor naprawdę dużej mocy!
KyranF

2
Domyślam się, że MCU o mocy 1kW nie utrzyma się w stanie stałym zbyt długo.
Dan Bryant

1
Wszystkie trzy punkty są obecnie niezwykle ważne w projektowaniu komputerów PC.

@ KyranF: Tak, podziel obie liczby przez 100. Ale cokolwiek, zaniżał względną różnicę mocy między procesorem o wysokiej wydajności a mikrokontrolerem o niskiej mocy do zastosowań bateryjnych.
Ben Voigt
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.