Schnelligkeitsgewinn durch Flash->RAM ?

Gast #466707
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
Gast #466719
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

#466757
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
Gast #466795
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.
Gast #466971
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
Gast #467127
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.