Forum: Mikrocontroller und Digitale Elektronik Schnelligkeitsgewinn durch Flash->RAM ?


von Armin O. (Gast)


Lesenswert?

Hi

eine generelle Frage zu allen Microcontrollern:

Wenn man eine sehr zeitkritische Sache erledigt, ist es sinnvoll das 
Programm im µC nach dem starten vom Flash ins RAM umzukopieren? 
Funktioniert das?

von Falk (Gast)


Lesenswert?

So der uC Programm aus dem SRAM ausführen kann (Von-Neumann 
Architektur). Die AVRs können das nicht (Harvard-Architektur). Aber C167 
& CO, Power Quick etc. können das alle (und machen es auch).

MfG
Falk


von mr.chip (Gast)


Lesenswert?

Hallo

Ist es nicht so, dass man dann zwar den Programmcode schneller (bzw. 
höher getaktet) auslesen kann, dafür allerdings eine 
Geschwindigkeitseinbusse in Kauf nehmen muss, weil nun der 
Speicherzugriff doppelt gebraucht wird? (So dass der Prozessor z.B. 
gewisse Befehle nicht mehr in einem Takt hinkriegt.)

Gruss

Michael

von Jens B. (sio2)


Lesenswert?

generelle antwort: jain.
geht nicht mit jedem uc, da z.b. der avr keinen code ausm ram abspielen 
kann.
bei einigen bringts was. musst halt sehen, wie die 
zugriffsgeschwindigkeit ist flash/ram

von Falk (Gast)


Lesenswert?

@ mr.chip

> Ist es nicht so, dass man dann zwar den Programmcode schneller (bzw.
> höher getaktet) auslesen kann, dafür allerdings eine
> Geschwindigkeitseinbusse in Kauf nehmen muss, weil nun der
> Speicherzugriff doppelt gebraucht wird? (So dass der Prozessor z.B.
> gewisse Befehle nicht mehr in einem Takt hinkriegt.)

Man muss ggf. Waitstates einfügen, was den Speicherzugriff langsamer 
macht. Allerdings ist heutiger SDRAM um Grössenordungen schneller als 
FLASH.

MFG
Falk


von Peter D. (peda)


Lesenswert?

Armin Osäure wrote:

> eine generelle Frage zu allen Microcontrollern:
>
> Wenn man eine sehr zeitkritische Sache erledigt, ist es sinnvoll das
> Programm im µC nach dem starten vom Flash ins RAM umzukopieren?
> Funktioniert das?

Generell nein.

MCs sind darauf optimiert, ihren Code aus dem internen Flash 
auszuführen.

So holen die Silabs 8051-er bei 100MHz gleich immer 4 Byte ausm Flash, 
greifen also effektiv nur mit 25MHz zu.
Externe SRAM-Zugriffe sind aber nur 8-bittig und benötigen Waitstates, 
sind also immer langsamer.

Die AVRs könnens gleich garnicht.

Die ARM7 (LPC2xxx) holen auch gleich immer 4 Langworte (128 Bit) ausm 
Flash. Nur in wenigen Ausnahmen (viele Sprünge, häufige kurze 
Interrupts) kann es leicht etwas bringen, was von dem kostbaren internen 
16kB SRAM als Code abzuzweigen. Hauptsache, es müssen dann nicht Stack 
und wichtige Daten in langsamen externen SRAM ausgelagert werden.


Peter

von A.K. (Gast)


Lesenswert?

Bei den ARM7 hängt es von der Familie ab: Bei Philips/NXP LPC2xxx siehe 
oben. Bei anderen ARM7 (z.B. Atmel SAM7, Analog Devices ADuC7000) ist 
das Flash auf Thumb-Code optimiert und hat für ARM-Code nicht genug 
Bandbreite. Da kann sich ARM-Code im RAM durchaus lohnen.

von A.K. (Gast)


Lesenswert?

PS: Bei solchen ARM7ern ist es daher nicht selten, dass ausgewählte 
Codefragmente im RAM landen. Schnelle Interrupt-Routinen sind ein 
typischer Kandidat.

von Falk (Gast)


Lesenswert?

Peter Dannegger (peda)

> Wenn man eine sehr zeitkritische Sache erledigt, ist es sinnvoll das
> Programm im µC nach dem starten vom Flash ins RAM umzukopieren?
> Funktioniert das?

> Generell nein.

Einspruch, euer Ehren. Siehe mein erstes Posting.

> MCs sind darauf optimiert, ihren Code aus dem internen Flash
> auszuführen.

Einige. Aber beileibe nicht alle!

MfG
Falk

von Peter D. (peda)


Lesenswert?

Falk wrote:

> Einspruch, euer Ehren. Siehe mein erstes Posting.

Da steht nur, daß der C167 Code aus dem SRAM (intern, extern ?) 
ausführen kann.
Ob das aber auch einen spürbaren Gewinn bringt, steht nicht da.


Peter

von Falk (Gast)


Lesenswert?

Hallo Peter,

> > Einspruch, euer Ehren. Siehe mein erstes Posting.

> Da steht nur, daß der C167 Code aus dem SRAM (intern, extern ?)
> ausführen kann. Ob das aber auch einen spürbaren Gewinn bringt, steht
> nicht da.

Doch steht dort, wenn auch nicht explizit. Um es nochmal explizit zu 
sagen. JA, das Programm kann im SRAM schneller ausgeführt werden als im 
FLASH.

MfG
Falk

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.