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 ...
quelle
it seems like somebody might
ist 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.Antworten:
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.
quelle
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.
quelle
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.
quelle
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!
quelle
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.
quelle
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 ...
quelle
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.
quelle
Bei der Entwicklung einer MCU müssen Sie sich mit Bedingungen auseinandersetzen, die auf PCs nicht so wichtig sind.
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.
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.
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.
quelle