Warum haben Mikrocontroller so wenig RAM?

39

Vielleicht ist dies eher ein Wahrnehmungsproblem, aber es scheint, als ob Mikrocontroller in den letzten 20 Jahren in fast allen Belangen sprunghafte Fortschritte gemacht haben: höhere Taktraten, mehr Peripheriegeräte, einfacheres Debuggen, 32-Bit-Cores usw.

Es ist immer noch üblich, RAM in den 10ern von KB (16/32 KB) zu sehen.

Es scheint nicht so, als könnte es direkt um Kosten oder Größe gehen. Ist es ein Problem der Komplexität, wenn der RAM-Controller einen bestimmten Schwellenwert überschreitet?

Oder ist es nur so, dass es im Allgemeinen nicht erforderlich ist?

Wenn ich mir eine Teilematrix eines bekannten Internetanbieters ansehe, sehe ich einen Cortex M4 mit 256 KB für weniger als 8 US-Dollar, und für ein paar Dollar mehr kann man ein paar mehr finden, die ROM-frei sind, aber es scheint ziemlich spärlich ...

Ich brauche nicht unbedingt einen Mikrocontroller mit einem MB flüchtigen Speicher, aber es scheint, als könnte jemand ...

Grady-Spieler
quelle
8
Vielleicht gibt es einen eher technischen Grund, aber für mich scheint es eine Frage der Märkte zu sein. Sie verwenden Mikrocontroller, wenn Sie Anwendungen haben, die diese verwenden, und wenn Sie etwas mehr Leistung benötigen, wechseln Sie normalerweise zu einem vollständigeren eingebetteten System.
Jarrod Christman
15
10s von kB. Das ist riesig. Mein Mikrocontroller für das Prototyping hat 68 Byte RAM: en.wikipedia.org/wiki/PIC16x84
slebetman 16.10.14
2
Ich habe einmal einen 3D-Software-Rasterizer in 86B auf einem Arduino mit 2 KB RAM geschrieben. Es hat mich verärgert, denn wenn ich nur 10 KB oder 50 KB gehabt hätte, hätte ich tatsächlich damit beginnen können, echte Modelle in den Speicher einzubauen und etwas Interessantes zu tun. Ich hatte damals genau die gleiche Frage, und ich glaube nicht, dass die aktuellen Antworten sind sprechen Sie es gut genug an. Ja, SRAM ist teuer - aber CPUs haben Megabyte Cache aus SRAM und sind dennoch recht billig. Es fühlt sich an wie eine lahme Ausrede.
Imallett
2
@slebetman Magst du aus irgendeinem Grund ein 20 Jahre altes Mikro, wenn viel bessere Geräte allgemein verfügbar und billiger sind?
Markrages
3
it seems like somebody mightist der Haken hier, die meisten Leute nicht. Sie werden Netflix nicht unbedingt auf diesem Chip streamen, und der 64K ist in der Regel mehr als genug für alles, was Sie mit einem Mikrocontroller tun müssen . Wenn Sie höher hinaus wollen, holen Sie sich eine ausgewachsene Komposition, z. B. eine Himbeere.
TC1

Antworten:

44

Dafür gibt es mehrere Gründe.

Erstens beansprucht der Speicher viel Siliziumfläche. Dies bedeutet, dass eine Erhöhung der RAM-Größe direkt die Siliziumfläche des Chips und damit die Kosten erhöht. Eine größere Siliziumfläche hat einen doppelten Whammy-Effekt auf den Preis: Größere Chips bedeuten weniger Chips pro Wafer, insbesondere am Rand, und größere Chips bedeuten, dass jeder Chip mit größerer Wahrscheinlichkeit einen Defekt aufweist.

Zweitens ist die Frage des Prozesses. RAM-Arrays sollten auf andere Weise als die Logik optimiert werden, und es ist nicht möglich, verschiedene Teile desselben Chips durch verschiedene Prozesse zu senden - der gesamte Chip muss mit demselben Prozess hergestellt werden. Es gibt Halbleiterfabrikanten, die sich mehr oder weniger der Herstellung von DRAM widmen. Keine CPUs oder andere Logik, nur DRAM. DRAM erfordert flächeneffiziente Kondensatoren und sehr leckarme Transistoren. Die Herstellung der Kondensatoren erfordert eine spezielle Verarbeitung. Die Herstellung von Transistoren mit geringem Leckverlust führt zu langsameren Transistoren, was ein guter Kompromiss für die DRAM-Ausleseelektronik ist, aber für die Erstellung einer Hochleistungslogik nicht so gut wäre. Die Herstellung von DRAM auf einem Mikrocontroller-Chip würde bedeuten, dass Sie die Prozessoptimierung in irgendeiner Weise in Frage stellen müssten. Bei großen RAM-Arrays ist es auch wahrscheinlicher, dass sie aufgrund ihrer großen Fläche, ihres geringeren Ertrags und der steigenden Kosten Fehler entwickeln. Das Testen großer RAM-Arrays ist auch zeitaufwendig und daher erhöhen sich die Testkosten, wenn große Arrays verwendet werden. Darüber hinaus senken Skaleneffekte die Kosten für separate RAM-Chips stärker als für spezialisiertere Mikrocontroller.

Der Stromverbrauch ist ein weiterer Grund. Viele eingebettete Anwendungen sind auf wenig Strom angewiesen, weshalb viele Mikrocontroller so gebaut sind, dass sie in einen Energiesparmodus versetzt werden können. Um einen Ruhezustand mit sehr geringem Stromverbrauch zu ermöglichen, wird SRAM aufgrund seiner Fähigkeit verwendet, seinen Inhalt mit äußerst geringem Stromverbrauch aufrechtzuerhalten. Ein batteriegepufferter SRAM kann seinen Zustand über Jahre hinweg mit einer einzigen 3-V-Knopfbatterie halten. DRAM hingegen kann seinen Zustand nicht länger als einen Bruchteil einer Sekunde halten. Die Kondensatoren sind so klein, dass eine Handvoll Elektronen aus dem Substrat heraus und in das Substrat hinein tunneln oder durch die Zellentransistoren lecken. Um dem entgegenzuwirken, muss der DRAM kontinuierlich ausgelesen und zurückgeschrieben werden. Infolgedessen verbraucht der DRAM im Leerlauf erheblich mehr Strom als der SRAM.

Auf der anderen Seite sind SRAM-Bitzellen viel größer als DRAM-Bitzellen. Wenn also viel Speicher benötigt wird, ist DRAM im Allgemeinen eine bessere Option. Aus diesem Grund wird häufig eine kleine Menge SRAM (kB bis MB) als On-Chip-Cache-Speicher in Verbindung mit einer größeren Menge Off-Chip-DRAM (MB bis GB) verwendet.

Es wurden einige sehr coole Designtechniken verwendet, um die in einem eingebetteten System verfügbare RAM-Menge zu niedrigen Kosten zu erhöhen. Einige davon sind Multi-Chip-Gehäuse, die separate Chips für den Prozessor und den RAM enthalten. Andere Lösungen umfassen die Herstellung von Pads auf der Oberseite des CPU-Pakets, so dass ein RAM-Chip darauf gestapelt werden kann. Diese Lösung ist sehr clever, da abhängig von der benötigten Speicherkapazität verschiedene RAM-Chips auf die CPU gelötet werden können, ohne dass ein zusätzliches Routing auf Kartenebene erforderlich ist (Speicherbusse sind sehr breit und beanspruchen viel Kartenfläche). Beachten Sie, dass diese Systeme normalerweise nicht als Mikrocontroller betrachtet werden.

Viele sehr kleine eingebettete Systeme benötigen ohnehin nicht viel RAM. Wenn Sie viel RAM benötigen, sollten Sie wahrscheinlich einen High-End-Prozessor mit externem DRAM anstelle von integriertem SRAM verwenden.

alex.forencich
quelle
Ich habe tatsächliche RAM-ICs mit Beinen gesehen und alles auf Prozessoren geklebt / platziert (die BGA-Pakete sind) und in sie geroutet! Die Dinge, die wir für Boardspace tun !! Wie die Russen mit ihrer TRIZ-Designmethode
betonen
2
+1 Für die wichtige Unterscheidung zwischen SRAM und DRAM. SRAM ist sowohl schneller als auch energieeffizienter, insbesondere im Leerlauf. Sie stellen jedoch fest, dass es erheblich teurer ist und mehr Platz benötigt.
Fizzle
Ich denke nicht, dass SRAM die teuerste Art von RAM ist. Eine Kombination von Flip-Flops und Multiplexern kann als Direktzugriffsspeicher verwendet werden, der eine bessere Leistung als SRAM bietet, jedoch zu viel höheren Siliziumkosten. Solche Speicher werden normalerweise nicht viel größer als ungefähr 32 Wörter, aber ein solcher Speicher kann simultanes Lesen und Schreiben auf eine Weise aufnehmen, die ein SRAM nicht kann.
Supercat
1
Richtig, Registerdateien und Full-Flip-Flops sind teurer als SRAM, werden jedoch nicht für den allgemeinen Systemspeicher verwendet.
alex.forencich
1
Ich habe einen funktionierenden HTTP-Server auf einer MCU mit 160 KB SRAM und keinem externen DRAM gesehen. Es konnten nicht viele parallele Verbindungen verarbeitet werden, aber es hat funktioniert.
Jan Dorniak
15

Der Arbeitsspeicher nimmt wahrscheinlich den meisten Speicherplatz in Anspruch, und der sehr schnell zu verwendende Arbeitsspeicher ist flüchtig - und verbraucht ständig Strom, um seinen Zustand aufrechtzuerhalten. Sofern Sie nicht viel RAM benötigen, ist dies für viele andere Anwendungen nicht hilfreich . Wenn ein Entwickler eines eingebetteten Systems mehr RAM benötigt, erhält er lediglich einen externen RAM-Chip und verwendet periphere Speicherschnittstellen, die Mikrocontroller heutzutage häufig für eine sehr einfache Plug-and-Play-Speichererweiterung verwenden. Das ist der Grund, warum Mikrocontroller im Allgemeinen immer noch einen relativ niedrigen Arbeitsspeicher haben, da ein angemessener Anwendungscode und Anwendungsszenarien normalerweise nicht viel benötigen.

Wenn Sie anfangen, sich mit den größeren Architekturen zu befassen, die unter Betriebssystemen voll ausgeführt werden müssen, wird der Arbeitsspeicher extrem wichtig. Dies geschieht jedoch nicht nur auf Mikrocontrollern, sondern auch auf Embedded-Computern, wie sie auf den Beaglebone- und Raspberri Pi-Boards zu sehen sind Tage. Und selbst in diesem Stadium sind die Prozessoren so komplex und voll von Funktionen, dass sie keinen Platz für die für ihre Aufgabe erforderliche RAM-Größe haben. Daher ist für den Betrieb der Prozessoren so ziemlich externer Speicher erforderlich.

BEARBEITEN:

Als persönliche Anekdote habe ich kürzlich eine kleine autonome Roboter-Steuerkarte mit dem Ziel erstellt, sie für Computer-Vision mit niedriger Auflösung wie Bewegungserkennung und Objektverfolgung und -verfolgung zu verwenden. Für diese Aufgabe habe ich mich für einen ARM Cortex M3 mit niedriger Pin-Anzahl entschieden. Als ich mir Atmels Auswahl der Prozessoren der SAM3-Serie ansah, suchte ich tatsächlich nach dem höchsten RAM, den ich finden konnte - weil ich in diesem Fall keinen externen RAM-IC kaufen wollte Aufgrund des Platzbedarfs auf der Platine und des Verzichts auf die Komplexität eines Hochgeschwindigkeits-RAM-Speicherbusses auf der Platine. In diesem Fall hätte ich mir für meine spezielle Anwendung die Option gewünscht, möglichst viele Hundert KB mehr RAM zur Verfügung zu haben.

KyranF
quelle
Guter Punkt, ich habe nicht einmal über den Stromverbrauch nachgedacht ...
Grady Player
4
"und RAM ist flüchtig, aber sehr schnell zu benutzen, verbraucht ständig Strom, um seinen Zustand zu halten" kaum. CMOS-Logik, einschließlich SRAM, verbraucht extrem wenig Strom, wenn der Zustand nicht geändert wird. Beachten Sie, dass die meisten Mikrocontroller ihren RAM-Inhalt behalten, selbst wenn sie sich im Energiesparmodus befinden.
Chris Stratton
@ChrisStratton: Ich habe eine Reihe von Mikrocontrollern von verschiedenen Herstellern gesehen, die einen Teil ihres Arbeitsspeichers heruntergefahren haben, um Strom zu sparen, obwohl es etwas ärgerlich ist, wenn diejenigen, die ich gesehen habe, nicht zulassen, dass der Arbeitsspeicher hochgefahren wird ohne einen Systemreset. Ich bin mir nicht sicher, was der Zweck dieser letztgenannten Einschränkung ist. Wenn ich während bestimmter Vorgänge einen großen Teil des Arbeitsspeichers für die temporäre Speicherung benötige, aber sonst nicht, verstehe ich nicht, warum ich ihn nicht einschalten kann, wenn er benötigt wird, und aus, wenn nicht, aber ich habe so etwas nicht gesehen Feature.
Supercat
14

Neben den hervorragenden Punkten, die in den anderen Antworten hervorgehoben wurden, ist ein weiterer Grund für den begrenzten Arbeitsspeicher die Architektur des Mikrocontrollers. Nehmen Sie zum Beispiel den Microchip PIC10LF320, der nur 448 Bytes Programmspeicher (Flash) und 64 Bytes RAM hat. Aber es kostet wahrscheinlich nur 25ȼ (oder weniger) in großen Mengen. Die begrenzte Größe des PIC10-Befehlsworts (12 Bit) ermöglicht es, nur 128 Byte RAM direkt zu adressieren.

Ich bin sicher, dass es andere Mikrocontroller gibt, die nur einen 8-Bit-Adressbus haben und diese auf 256 Byte RAM begrenzen.

Die meisten Mikrocontroller der Mittelklasse (auch solche mit 8-Bit-Datenpfaden) verfügen jedoch über einen 16-Bit-Adressbus. Eine wichtige architektonische Überlegung für diese Chips ist, ob der Chip Harvard- oder Von Neumann- Architektur verwendet.

Die meisten Mikrocontroller verwenden die Harvard-Architektur mit separaten 16-Bit-Adressräumen für Programmspeicher, RAM und speicherabgebildete E / A-Adressen. Daher kann der 16-Bit-Adressbus auf bis zu 64 KB (65.536) RAM zugreifen. Die Architektur hat immer noch ein Limit von 64 KB, und wenn man darüber hinausgehen möchte, muss eine Art Paging verwendet werden. Es ist weitaus üblicher, Paging für Programmspeicher zu verwenden, als für RAM-Speicher.

Mikrocontroller mit Von Neumann-Architektur, wie die Freescale HCS08-Leitung, haben nur einen Adressraum, der zwischen Programmspeicher, RAM und speicherabgebildeten E / A aufgeteilt ist. Um einen angemessenen Programmspeicherplatz zu haben, wird die RAM-Größe auf normalerweise 4 KB oder 8 KB begrenzt. Auch hier kann Paging verwendet werden, um den verfügbaren Programm- oder RAM-Speicherplatz zu vergrößern.

Tcrosley
quelle
1
Sie müssen jedoch bedenken, dass der PIC-Kern so ineffektiv ist, dass er für nichts viel zusätzlichen Flash verbraucht. Und ein Grund dafür, dass es nicht viel RAM benötigt, ist, dass es zum Beispiel strenge Einschränkungen hinsichtlich der Aufrufstapeltiefe gibt.
Lundin
@Lundin Zugegeben, müssen Sie ziemlich das Original PIC10 und PIC12 in Assembler programmiert werden , sehr sorgfältig . Die neueren PIC12F- und PIC16F-Geräte verfügen jetzt über einen Hardware-Stack mit 16 Ebenen und 14 neue Anweisungen. Einige wurden nur für C hinzugefügt, so dass sie viel nützlicher sind.
Tcrosley
@Lundin: Die PIC-Chips mit 12- und 14-Bit-Befehlslängen waren für die Codedichte recht anständig, dachte ich. Das PIC18F ist, wenn die Codedichte bei Verwendung des HiTech-Compilers aufgrund des zu hohen Bank-Switching-Aufwands, der normalerweise erforderlich war, tendenziell abfällt.
Supercat
7

Nachdem ich jetzt schon eine Weile mit Mikrocontrollern und kleinen Systemen gearbeitet habe, möchte ich darauf hinweisen, dass sehr oft sehr wenig RAM benötigt wird. Denken Sie daran, dass eine MCU zwar viel leisten kann, heutzutage jedoch immer mehr MCUs als je zuvor verwendet werden müssen, um viele Aufgaben in größeren Systemen zu verteilen. Dies geht einher mit der Tatsache, dass die MCU-Entwicklung im Gegensatz zu aufgeblähten Entwicklungssystemen, die unter Windows programmiert werden müssen, häufig sehr gut optimierte Compiler verwendet, meist mit sehr effizientem C- und C ++ - Quellcode, manchmal mit geringem bis gar keinem Betriebssystemaufwand. Während Sie kaum ein Windows-Programm schreiben könnten, um Ihren Namen auf einem beliebigen Gerät anzuzeigen, ohne mindestens Hunderte von Kilobyte einschließlich Betriebssystemressourcen zu verbrauchen,

Natürlich gibt es Kosten- und Platzprobleme, wie andere betont haben. Die Geschichte hier ist jedoch, dass das, was heutzutage von Neulingen als wenig RAM eingestuft wird, mehr denn je zuvor ist, und dass die Komponenten und Geräte, mit denen die MCU kommunizieren muss, selbst immer intelligenter werden. Ehrlich gesagt war meine größte Verwendung von RAM in vielen MCU-Anwendungen in letzter Zeit die Verwendung von Interrupt-gesteuerten Kommunikationspuffern, um die MCU für andere Aufgaben freizugeben, ohne befürchten zu müssen, Daten zu verlieren. Aber ob Sie es glauben oder nicht, für gewöhnliche Logik und Rechenfunktionen sind MCUs ziemlich gut auf ihre begrenzten eingebauten RAM- und Flash-Ressourcen abgestimmt, und Sie können wirklich viel mit sehr wenig tun .

Denken Sie daran, dass einst berühmte Videospiele mit groben Grafiken, aber komplexer Spielelogik wie "PAC Man" und "Space Invaders" in der Regel innerhalb von 8 KB ROMs auf Computern mit nur 8 oder 16 KB RAM erstellt wurden!

Geil
quelle
Was ist mit SD-Karten? Benötigen SDHC-Karten keinen Puffer von 256 oder 512 Bytes (die Standard- / alten SD-Karten werden nicht mehr hergestellt)?
Peter Mortensen
Die Version von Pac Man für das Atari 2600 Video Computer System war 4K ROM, und das VCS selbst hatte 128 Bytes RAM. Viele Arcade-Automaten hatten jedoch im Vergleich zu Heimcomputern der Ära einen recht ordentlichen Anteil an ROM und RAM. Ich denke, Defender hatte zum Beispiel 32K oder ROM und 64K RAM, obwohl 32K RAM aus der Sicht der CPU "Nur Schreiben" war (der Prozessor würde Daten dort ablegen, die die Display-Hardware auf den Monitor überträgt). .
Supercat
@PeterMortensen Viele SD-Karten verfügen über eine integrierte CPU zur Verwaltung des Flashs. Einige Karten verfügen über einen vollständigen 32-Bit-ARM-Kern, an den wahrscheinlich 16 oder 32 KB RAM angeschlossen sind.
alex.forencich
@ alex.forencich: Ja, aber benötigt die SPI-Schnittstelle zum Betrieb einer SDHC-SD-Karte keinen Pufferspeicher auf der Hostseite (Embedded System / Mikrocontroller) - im Gegensatz zu den älteren Karten? Das heißt, Bitadressierung ist für die neueren (SDHC) Karten nicht mehr möglich? Oder ist es nur abhängig vom Dateisystem (Bitadressierung noch möglich)? Benötigen die neueren Karten keine Blocktransfers (und damit einen Puffer von 256 oder 512 Bytes)?
Peter Mortensen
Ja, 512B, wenn ich mich erinnere. Sie könnten einfach einen ineffizienten SD-Kartentreiber schreiben, um die ersten X Datenbytes zu verwerfen -> es wird kein "großer" Puffer benötigt.
Domen
3

Neben den hervorragenden Kosten- und Herstellungsaspekten besteht überraschend wenig Bedarf an viel On-Chip-RAM.

Ich arbeite oft mit Mikrocontrollern mit Flash in der Größenordnung von 10 kB (16 kB, 32 kB) und RAMs in der Größenordnung von 1 kB, 2 kB. Mir geht sehr oft der Flash-Speicher aus und fast nie der Arbeitsspeicher. In den meisten meiner Projekte komme ich dem Flash-Limit ziemlich nahe, benötige aber normalerweise weniger als 20% des Arbeitsspeichers.

Die meisten sehr kleinen Mikrocontroller haben zwei verschiedene Arten von Rollen:

  • regulierung und kontrolle: sie müssen ein maschinenstück kontrollieren. Selbst im Falle eines komplizierten Steuerungsalgorithmus, der Dutzende von kB Code-Speicherplatz beanspruchen kann, wird sehr wenig RAM benötigt. Sie haben die Kontrolle über einen physikalischen Prozess und Variablen, die einige physikalische Einheiten und möglicherweise einige Variablen als Schleifenzähler enthalten. Mehr ist nicht nötig.

  • Datenverarbeitung: In seltenen Fällen, in denen Sie eine große Datenmenge gleichzeitig speichern müssen, können Sie externes RAM verwenden. Nahezu alle modernen Mikrocontroller unterstützen dies von Haus aus. Wenn Sie ein einfaches Programm mit viel Speicher benötigen, ist die Verwendung eines kleinen Mikrocontrollers und externen Arbeitsspeichers kostengünstiger und kleiner als die Verwendung eines High-Level-Mikrocontrollers. Niemand produziert Controller mit wenigen Ports, kleinem Flash und großem RAM, weil sie so wenig nachgefragt werden.

vsz
quelle
2

Alle genannten Gründe sind natürlich technisch gültig und zutreffend. Vergessen Sie jedoch nicht, dass Elektronik ein Geschäft ist und MCUs einer der wettbewerbsfähigsten Nischenmärkte in der Elektronikindustrie sind.

Ich wage zu sagen, dass die tatsächlichen Gründe für die Verknüpfung des Preisschilds einer MCU mit der Menge des eingebetteten SRAM hauptsächlich Marketing- und nicht Kostengründe sind:

  • Bei den meisten Konstruktionen ist die maximal erreichbare Taktfrequenz nicht der begrenzende Faktor. Stattdessen ist die Menge des verfügbaren SRAM. Verstehen Sie mich nicht falsch, die CPU-Frequenz ist enorm wichtig. In einem bestimmten Segment der MCU-Familie werden jedoch in der Regel keine unterschiedlichen Gerätemodelle zu unterschiedlichen Preisen angeboten, die auf der maximalen CPU-Frequenz basieren. Der Flash-Programmspeicher ist auch der andere einschränkende Faktor. Ich werde mich jedoch nicht zu sehr auf Flash konzentrieren (die Frage richtet sich speziell an SRAM).

  • Die Menge an verfügbarem SRAM hängt direkt von der Komplexität ab, die Sie in Ihre MCU einbetten können, sei es mit Bibliotheken von Drittanbietern oder mit Ihrem eigenen ausgerollten Code. Es ist also eine "natürliche" Metrik, Ihre MCU-Preise auf der Basis zu segmentieren. Es ist verständlich, dass ein technischer Kunde akzeptiert, dass eine MCU mit komplexeren Aufgaben (mehr SRAM, mehr Flash-Speicher) mehr kosten sollte. Der Preis ist hier eine Reflexion des zugrundeliegenden Wertes (Lieferfähigkeit) der MCU. Flash-Speicher wird normalerweise in einer Menge angeboten, die proportional zum SRAM ist.

  • Im Gegensatz dazu können Sie auf dem Desktop- und Mobil-CPU-Markt normalerweise keine bestimmte MCU / CPU mit vielen verschiedenen SRAM-Größen beziehen. Stattdessen baut das Preisschema in der Regel auf den Ausführungs- / Leistungsfähigkeiten der MCU / CPU auf: Frequenz, Anzahl der Kerne, Energieeffizienz ...

jose.angel.jimenez
quelle
Ich denke, das ist wahrscheinlich richtig, aber gibt es Beweise? Wie Spuren auskratzen, um Chip A als Chip B zu verkaufen?
Grady Player
Ähm ... interessanter Gedanke. Ich habe keine Beweise für solche Praktiken. Dies wirft jedoch eine interessante Frage zu den zugrunde liegenden Herstellungskosten auf. Wäre es teurer, den verschwendeten Platz auf dem Siliziumchip (Wafer) zu verschwenden, wenn ein Chip mit einer höheren SRAM-Größe auf eine geringere SRAM-Größe zerkratzt würde? Oder die erhöhten Herstellungs- und Lagerkosten, die mit der Herstellung von nicht nur einem Gerät, sondern von zwei Geräten verbunden sind? Ich fürchte, die gesamte Elektronikbranche ist sehr wählerisch, wenn es darum geht, ihre Kosten offen zu diskutieren. Wir werden es vielleicht nie erfahren.
jose.angel.jimenez
1
Zum Beweis: Der MT6250 ist ein Multi-Die-Chip, der für Single-Chip-Feature-Phones verwendet wird, weniger als 2 US-Dollar kostet und viel komplexer als eine mcu ist und einen 8-MB-SRAM-Chip enthält Technologie ein SRAM-reiches mcu.
Hulkingtickets
Dies wäre eine gute Antwort auf die Frage, warum der Preis der MCU an die Menge des eingebetteten SRAM gebunden ist. Aber es scheint nicht die ursprüngliche Frage zu beantworten. Warum gibt es so wenige Mikrocontroller mit mehr als 512 KB SRAM auf dem Chip um jeden Preis? Warum gibt es so viele Mikrocontroller mit "seltsamen" SRAM-Chips, die nicht der Potenz von 2 entsprechen?
Davidcary
1

Zuallererst müssen Sie berücksichtigen, dass 16 KB oder 32 KB eine enorme Menge an Speicher sind und die meisten heute verkauften Mikrocontroller nicht so viel RAM haben.

Viele Mikrocontroller-Programme benötigen 10 oder 50 Bytes Speicher. Noch komplexere Sachen brauchen meistens in der Größenordnung von Hunderten von Bytes.

Grundsätzlich gibt es drei Anwendungsfälle, in denen Sie RAM in der Größenordnung von KByte benötigen: a) Wenn Ihr Mikrocontroller Grafiken erstellt. B) Wenn Sie Mikrocontroller für große willkürliche Berechnungen verwenden. C) Wenn Sie eine Schnittstelle zu PC-Schnittstellen herstellen

Zweitens: Wenn Sie über Mikrocontroller-RAM sprechen, sprechen Sie über Level 0 / Level 1-Cache. Wenn Sie der Meinung sind, dass ein Intel Haswell "nur" 64 KByte Level 1-Cache hat, überdenken Sie die RAM-Größe eines Mikrocontrollers.

Drittens können Sie eine beliebige Menge an externem RAM an einen Mikrocontroller anschließen, insbesondere mehr, als Sie an eine CPU anschließen können.

Persönlich entwickle ich viele Mikrocontroller-Anwendungen und benötige nie 1 KB Speicher oder mehr. Ich habe auch nie externes RAM verwendet.

Anders sieht es aus, wenn wir zu ROM (heute Flash) kommen, da sich Ihr Programm und Ihre Daten im ROM befinden. Es gibt wirklich viele Anwendungen, in denen Sie ein externes ROM an Ihren Mikrocontroller anschließen, da Sie über viele Daten verfügen.

Schauen wir uns ein Beispiel an: Wir analysieren eine Mikrocontroller-Anwendung und nehmen einen tragbaren MP3-Player mit Display und 4 Gigabyte Flash.

Für diese Anwendung benötigen Sie möglicherweise 1 KB RAM. Das ist genug, um die Arbeit zu erledigen. Sie könnten jedoch mehr RAM für größere Puffer verwenden, um das Schreiben von USB auf Flash zu beschleunigen.

Sie sehen jetzt den Unterschied: Ein typischer PC speichert alle Programme und Daten im RAM. Daher braucht es viel RAM. Für Mikrocontroller ist dies alles in Flash / ROM.

Frank
quelle
2
Sie unterschätzen die RAM-Auslastung in vielen Anwendungen. Nicht sehr groß, aber vielleicht um den Faktor 10-100, abhängig von der Instanz. MP3-Player müssen digitale Signale verarbeiten.
Jason S
Ich würde gerne wissen, warum einer von euch diese Dinge sagt. Welche Arten von C-Befehlen erfordern RAM. Anstatt zu sagen, "diese Anwendungen erfordern mehr RAM", würde ich bevorzugen, "diese Vorgänge erfordern mehr RAM, weil ..."
Frederick
-1

Bei der Entwicklung einer MCU müssen Sie sich mit Bedingungen auseinandersetzen, die auf PCs nicht so wichtig sind.

  1. Haltbarkeit

    Bei der Auswahl der Komponenten müssen Sie nicht unbedingt die besten und / oder leistungsstärksten Teile verwenden, aber diejenigen, die sich nach mehreren Jahren als funktionsfähig erwiesen haben, sind mehrere Jahre lang verfügbar und können rund um die Uhr eingesetzt werden Jahre. Aus diesem Grund scheint ein Controller, der mehrere Jahre auf dem Markt ist und seine Aufgabe gut erfüllt, im Vergleich zum heutigen PC-Standard einen schlechten Arbeitsspeicher zu haben. Aber wie auch immer, es macht seine Arbeit gut und es sollte kein Ersatz nötig sein, wenn die Technik gut war.

  2. Platz

    Mikroprozessoreinheiten sind buchstäblich Mikros. Sie müssen den benötigten Platz auf das absolute Minimum reduzieren. Natürlich können Sie 256 MB auf dem gleichen Platz wie 10 Jahre alte 64-KB-Chips erhalten. Hier kommt die Nummer 1 ins Spiel.

  3. Preis

    Nicht nur der Kaufpreis, sondern auch der Stromverbrauch. Sie möchten keine MCU entwickeln, die die Kontrolle über ein Einstiegssystem hat, das 1000 W benötigt, wenn Ihr Konkurrent nur 25 W benötigt immer besser.

Sempie
quelle
1
das ist ein sehr leistungsfähiger Mikroprozessor!
KyranF
2
Ich vermute, dass eine 1-kW-MCU nicht sehr lange in einem festen Zustand bleiben würde.
Dan Bryant
1
Alle drei Punkte sind heutzutage im PC-Design äußerst wichtig.
@KyranF: Ja, dividieren Sie beide Zahlen durch 100. Aber wenn überhaupt, hat er den relativen Leistungsunterschied zwischen Hochleistungsprozessor und Kleinleistungs-Mikrocontrollern für Batterieanwendungen unterschätzt.
Ben Voigt