Die meisten von uns, die einen Elektronikhintergrund haben, wissen, dass SRAM schneller als DRAM ist. Aber wenn es darum geht, RAM mit ROM zu vergleichen, bin ich mir nicht sicher.
Meine Frage bezieht sich auf den Mikrocontroller: "Wenn ein Code direkt vom RAM / ROM ausgeführt wird, dessen Leistung besser ist? 1) Ausführung vom RAM oder 2) Ausführung vom ROM oder 3) beide werden gleich ausgeführt."
Auch unter Berücksichtigung der Tatsache, dass ROMs für höhere Lesegeschwindigkeiten ausgelegt sind. während für RAM ein Kompromiss zwischen Lesegeschwindigkeit und Schreibfähigkeit besteht.
Das Datenblatt sollte Ihnen sagen, wie lange jede Anweisung dauert und welche Unterschiede es gegebenenfalls zwischen der Ausführung von RAM oder ROM gibt.
Für Mikrocontroller, die die Option der Ausführung aus dem RAM bieten, ist dies wahrscheinlich schneller, was wahrscheinlich der Hauptgrund dafür ist, zusätzlichen RAM-Speicherplatz zum Ausführen von Code zu verwenden. Es kann auch zu Problemen mit Abrufüberschneidungen kommen. In einigen Fällen kann die Ausführung vom ROM schneller sein, da es sich um einen separaten Speicher handelt und der RAM-Zugriff gleichzeitig stattfinden kann.
Auch hier ist der einzige Weg, dies für ein bestimmtes Mikro herauszufinden, das DATENBLATT ZU LESEN .
Es hängt ganz von der Speicher- und CPU-Architektur ab. Als Faustregel gilt, dass SRAM schneller als Flash ist, insbesondere auf schnelleren MCUs (>100 MHz). SRAM-Bitzellen erzeugen einen (mehr oder weniger) logischen Ausgang, während Flash-Speicher einen langsameren Stromerfassungsprozess durchlaufen müssen.
Wie viel schneller (wenn überhaupt) hängt wiederum von der Architektur ab – der Wortgröße der Speicher, der Anzahl der Wartezustände in jedem, dem Vorhandensein von Caching, der Größe der CPU-Anweisungen usw. Wenn Sie bei a Bei einer ausreichend niedrigen Frequenz könnten Flash und RAM keine Wartezustände haben, sodass sie möglicherweise mit derselben Geschwindigkeit ausgeführt werden.
Auch der Code spielt eine Rolle. Wenn Ihr Code streng linear ist (keine Verzweigung), könnte der Flash Anweisungen schnell genug vorab abrufen, um die CPU auch bei höheren Frequenzen ausgelastet zu halten. Wie Olin sagte, könnte eine CPU mit Harvard-Architektur mit getrennten Programm- und Datenlesepfaden anders funktionieren, wenn sich Code und Daten in unterschiedlichen Speichern befinden.
Metall-ROMs (und andere nichtflüchtige Speicher wie FRAM) haben ihre eigenen Eigenschaften und können so schnell wie SRAM sein oder nicht. Die Fähigkeit zu schreiben macht nicht unbedingt einen Unterschied; es geht mehr um die Eigenschaften der Bitzellen-Ausgangs- und Erfassungsschaltungen.
Das Datenblatt gibt Ihnen eine ungefähre Vorstellung vom Geschwindigkeitsunterschied, aber die einzige Möglichkeit, dies sicher zu wissen, besteht darin, Ihren Code zu profilieren.
"Ein Programm ausführen" erfordert eine CPU mit einer synchronen Uhr. Langsamer Speicher kann angepasst werden, indem entweder das gesamte System mit einem ausreichend langsamen Takt betrieben wird oder indem wait states
(zusätzliche Do-Nothing-Taktzyklen zwischen den Abruf- und Decodierphasen) eingefügt werden, die nur für bestimmte Adressbereiche aktiv sind (siehe zum Beispiel den alten 8085). Der CPU-Befehlsabruf weiß oder kümmert sich nicht genau, wann die Daten auf ihren endgültigen Wert gesetzt werden, solange sie sich während des Setup/Hold-Intervalls nicht ändern.
Ein Mikrocontroller hat normalerweise seinen gesamten Speicher auf dem Chip, also würde ich, sofern nicht anders angegeben, davon ausgehen, dass das Speichersystem alle im Null-Wartezustand ist. (aber lesen Sie das Datenblatt zur Bestätigung). Typische Mikrocontroller sollen im Vergleich zu einem Desktop einfachere Einzelchip-Lösungen sein, daher sind Wartezustände in einem Mikrocontroller unwahrscheinlich. Daher ist es unwahrscheinlich, dass ein Mikrocontroller die On-Chip-Speichergeschwindigkeiten nicht angepasst hätte.
Schnellerer Speicher kostet im Allgemeinen einen Aufpreis (höhere Spannung, niedrigere Kapazität, mehr Bedarf). Ein 80xx86 hat schnellen SRAM im L2-Cache und noch schnelleren SRAM im L1-Cache und viele langsamere DRAMs außerhalb des Chips, die an einen Speichercontroller angeschlossen sind. Diese Art von System ist viel komplizierter als ein Mikrocontroller und geht über den Rahmen der Frage hinaus. (Aber von großem Interesse für einen Computeringenieur!)
Spehro Pefhany
OzzieSpin
Chris Stratton
Wouter van Ooijen
Luan