Was ist ein nicht ausführbarer Flash-Speicher?

534
Mike

Neulich bei der Arbeit fragte jemand how much ‘executable’ flash memory we need. Ist es nicht möglich, alle Flash-Speicher auszuführen?

Wenn ich falsch liege, wie unterscheidet sich der ausführbare Flash-Speicher dann vom nicht ausführbaren Flash-Speicher?

EDIT Das hat mit eingebetteten Systemen zu tun. Wir entwerfen ein neues System bei der Arbeit und wählen einen Prozessor aus. Eine Anforderung, die aufkam, war, wie viel Speicher wir benötigten. Das obige Zitat bezog sich auf eine Klarstellung dieser Anforderung.

1
Könnten wir etwas mehr Kontext haben? Hat das etwas mit einem eingebetteten System zu tun? Oder bezieht sich das auf sekundären PC-Speicher (SSD / Flash-Laufwerk)? Oder etwas anderes? Bob vor 11 Jahren 1
@Bob - eingebettetes System, hat den Beitrag mit diesem Punkt bearbeitet. Mike vor 11 Jahren 0

2 Antworten auf die Frage

3
David Schwartz

Nein, es ist nicht möglich, alle Flash-Speicher auszuführen. Angenommen, Sie verfügen über einen seriellen Flash-Chip, der eine Reihe von Anweisungen erfordert, um nur ein einzelnes Byte aus diesem Flash-Chip auszulesen. Wie können Sie Code von diesem Flash-Chip ausführen?

So ziemlich jeder PC hat einen Flash-Chip auf jedem RAM-Stick, der die RAM-Spezifikationen enthält. Sie können den Code in diesem Flash-Chip sicher nicht ausführen, da er nicht in den Speicher abgebildet wird und nur durch komplexe Codesequenzen, die mit dem Speichercontroller sprechen, darauf zugegriffen werden kann.

Oder betrachten Sie eine CPU, die über separate ausführbare und Datenadressräume verfügt. Ein Flash-Chip, der in den Adressraum der Daten abgebildet wurde, wäre ebenfalls nicht ausführbar.

Die Details sind sehr gerätespezifisch. Es ist jedoch nicht ungewöhnlich, dass ein Gerät über Flash verfügt, das nicht ausführbar ist.

Denken Sie an eine SSD oder ein USB-Flashlaufwerk. Sie können keinen Code ausführen, ohne ihn zuerst in den RAM-Speicher zu kopieren. (Und eingebettete Systeme verfügen oft nicht über genügend RAM, um eine Kopie zu speichern.)

Einige CPUs haben außerdem Leistungsanforderungen an den Speicher, der ausführbar ist. Einige CPUs haben nicht die Möglichkeit, Wartezustände in Programmabrufe einzufügen, tun dies jedoch beim Datenabruf. Das ausführbare Flash muss also sehr schnell sein. Es ist nicht ungewöhnlich, billigeres Flash für Daten zu verwenden. (Der DS80C320 kann beispielsweise langsameren Datenspeicher tolerieren, der ausführbare Speicher muss jedoch mit voller Geschwindigkeit ausgeführt werden.)

Was macht Flash dann "ausführbar"? Die Geschwindigkeit? Die Art des Busses, auf den er zugreift? Oder werde ich das zu sehr vereinfachen und die Antwort lautet "es kommt darauf an"? Mike vor 11 Jahren 0
Ich denke "es kommt darauf an" ist das Beste, was man tun kann. Im Grunde hängt es von all diesen Faktoren ab, ob die CPU Code ausführen kann oder nicht. David Schwartz vor 11 Jahren 0
1
KevinM

In vielen Mikrocontrollern, die für viele eingebettete Anwendungen verwendet werden, gibt es mindestens zwei Arten von Speicher: Flash-Speicher (der normalerweise die eingebettete Firmware enthält) und RAM (der zum Speichern von Laufzeitwerten, Registern, Stack usw. verwendet wird).

Einige Mikrocontroller verfügen über mehr als einen Flash-Speicher, und nicht alle können zum Speichern von Programmen (Firmware) verwendet werden. Die anderen Flash-Speicherbereiche werden nur für den nichtflüchtigen Speicher verwendet.

In all diesen Fällen wird der Flash-Speicher normalerweise während der Entwicklung programmiert (z. B. Laden von Daten auf eine Festplatte) und nicht durch die laufenden Programme überschrieben. In einigen Fällen kann auf den Flash geschrieben werden, und Sie haben selbstprogrammierbare Systeme.

Um es klar zu sagen, die Programme werden von diesem Flash-Speicher ausgeführt, aber wir reden nicht über so etwas wie eine Flash-Disk.