www.mikrocontroller.net

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


Autor: Armin O. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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


Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jens B. (sio2)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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


Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: A.K. (Gast)
Datum:

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

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.