Die meisten von uns mit elektronischem Hintergrund 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 aus dem RAM / ROM ausgeführt wird, wessen Leistung ist besser? 1) Ausführung aus dem RAM oder 2) Ausführung aus dem ROM oder 3) beide werden gleich ausgeführt."
Berücksichtigt man auch die Tatsache, dass ROM für höhere READ-Geschwindigkeiten ausgelegt ist. Während für RAM ein Kompromiss zwischen Lesegeschwindigkeit und Schreibfähigkeit besteht.
microcontroller
ram
rom
Prinz Rambade
quelle
quelle
Antworten:
Das Datenblatt sollte Ihnen mitteilen, wie lange jeder Befehl dauert und welche Unterschiede zwischen der Ausführung aus dem RAM oder ROM bestehen.
Für Mikrocontroller, die die Option zum Ausführen aus dem RAM bieten, ist dies wahrscheinlich schneller und wahrscheinlich der Hauptgrund für die Verwendung von zusätzlichem RAM-Speicherplatz zum Ausführen von Code. Möglicherweise gibt es auch Probleme beim Abrufen von Abrufen. In einigen Fällen kann die Ausführung über das ROM schneller sein, da es sich um einen separaten Speicher handelt und der RAM-Zugriff gleichzeitig erfolgen kann.
Die einzige Möglichkeit, ein bestimmtes Mikro zu ermitteln, besteht darin, das Datenblatt zu lesen .
quelle
Dies hängt vollständig von der Speicher- und CPU-Architektur ab. Als Faustregel gilt, dass SRAM schneller ist als Flash, insbesondere bei MCUs mit höherer Geschwindigkeit (> 100 MHz). SRAM-Bitzellen erzeugen eine (mehr oder weniger) logische Ausgabe, während der Flash-Speicher einen langsameren Stromerfassungsprozess durchlaufen muss.
Wie viel schneller (falls vorhanden) ist wiederum von der Architektur abhängig - der Wortgröße der Speicher, der Anzahl der Wartezustände, dem Vorhandensein von Caching, der Größe der CPU-Anweisungen usw. Wenn Sie mit a arbeiten Wenn die Frequenz niedrig genug ist, können auf Flash und RAM keine Wartezustände auftreten, sodass sie möglicherweise mit derselben Geschwindigkeit ausgeführt werden.
Der Code ist auch wichtig. Wenn Ihr Code streng linear ist (keine Verzweigung), kann der Flash-Befehl Anweisungen schnell genug vorab abrufen, um die CPU auch bei höheren Frequenzen gesättigt zu halten. Wie Olin sagte, könnte eine CPU mit Harvard-Architektur mit separaten Programm- und Datenlesepfaden unterschiedliche Leistungen erbringen, 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 auch nicht. Die Fähigkeit zu schreiben macht nicht unbedingt einen Unterschied; Es geht mehr um die Eigenschaften der Ausgangs- und Erfassungsschaltungen der Bitzellen.
Das Datenblatt gibt Ihnen eine ungefähre Vorstellung vom Geschwindigkeitsunterschied. Die einzige Möglichkeit, dies sicher zu wissen, besteht darin, Ihren Code zu profilieren.
quelle
"Ausführen eines Programms" erfordert eine CPU mit einer synchronen Uhr. Langsamer Speicher kann aufgenommen werden, indem entweder das gesamte System mit einem ausreichend langsamen Takt ausgeführt wird oder indem eingefügt wird
wait states
(zusätzliche Taktzyklen zwischen der Abruf- und der Dekodierungsphase), die nur für bestimmte Adressbereiche aktiv sind (siehe z. B. den alten 8085). Der CPU-Befehlsabruf weiß oder kümmert sich nicht genau darum, wann die Daten auf ihren endgültigen Wert gebracht werden, solange sie sich während des Setup / Hold-Intervalls nicht ändern.Ein Mikrocontroller verfügt normalerweise über den gesamten Speicher auf dem Chip. Wenn nicht anders angegeben, würde ich davon ausgehen, dass das Speichersystem vollständig im Wartezustand Null ist. (Lesen Sie jedoch das Datenblatt, um dies zu bestätigen). Typische Mikrocontroller sollen im Vergleich zu einem Desktop einfachere Single-Chip-Lösungen sein, sodass Wartezustände in einem Mikrocontroller unwahrscheinlich sind. Daher ist es unwahrscheinlich, dass ein Mikrocontroller die Speichergeschwindigkeiten auf dem Chip nicht übereinstimmt.
Schnellerer Speicher kostet im Allgemeinen eine Prämie (höhere Spannung, geringere Kapazität, mehr Nachfrage). Ein 80xx86 hat einen schnellen SRAM im L2-Cache und einen noch schnelleren SRAM im L1-Cache sowie viele langsamere DRAM-Off-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!)
quelle