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.)