Forum: Mikrocontroller und Digitale Elektronik Mittlere Zugriffszeit bei FLASH-Speicher in µCs?


von Alexander I. (daedalus)


Lesenswert?

Hallo,

ich soll eine Zeitabschätzung machen, wie lange eine Datenübertragung 
dauert. Ich finde im Datenblatt zu diversen 8Bit µCs nur Angaben für 
Lösch- und Schreibzeiten des FLASH aber nicht für einen Lesezugriff. 
Eine Hausnummer / Byte würde mir da schon reichen. Was haben denn 
handelsübliche 8-Bitter (ATmega, HCS08, usw.) für Zugriffszeiten (z.B. 1 
Byte oder 1 Page) auf den Inhalt des Flashs? Laut Wikipedia verwenden 
µC's überwiegend NOR-Flash.

Vielen Dank.

von so nicht (Gast)


Lesenswert?

AVR : Lesen ? Pointer setzen & LPM funktion, das isses.

von Eckhard (Gast)


Lesenswert?

Hallo,

die Zugriffszeit ist doch nur wichtig wenn die CPU nicht mit dem vollen 
Bustakt auf den Sppeicher zugreifen kann. Mir ist jetzt eigentlich kein 
8 Bit Controller bekannt der für den Speicherzugriff Wait States 
benötigt.
Also sollte die Zugriffszeit ein Buszyklus sein. Wie lange der braucht 
hängt von der Taktfrequenz des Controllers ab.

Eckhard

von Alexander I. (daedalus)


Lesenswert?

Alles klar, ich habe jetzt mit mal 5 Cycles/Byte als Grundlage gewählt, 
ist ja eine Worst-Case-Abschätzung. Innerhalb 5 Befehlen (bei RISC) 
sollte das doch selbst die lahmste Krücke hinbekommen... Vielen Dank für 
eure Rückmeldungen.

von Matthias L. (Gast)


Lesenswert?

>Innerhalb 5 Befehlen (bei RISC)
>sollte das doch selbst die lahmste Krücke hinbekommen... Vielen Dank für
>eure Rückmeldungen.

Dann weißt du nicht, was RISC bedeutet...

von so nicht (Gast)


Lesenswert?

Ein Flashzugriff auf das Codesegment ist natuerlich 1 Zyklus, der ist 
sogar implizit. Will man quasi auf das Datensegment zugreifen, welches 
physikalisch dasselbe wie das Codesegment ist, muss man zuerst einen 
Pointer setzen und eine Flashread funktion aufrufen, dann hat man den 
Wert sofort, dh innerhalb eines Zyklus in einem Register.

von Benedikt K. (benedikt)


Lesenswert?

so nicht wrote:
> Will man quasi auf das Datensegment zugreifen, welches
> physikalisch dasselbe wie das Codesegment ist, muss man zuerst einen
> Pointer setzen und eine Flashread funktion aufrufen, dann hat man den
> Wert sofort, dh innerhalb eines Zyklus in einem Register.

Nein, es sind mindestens 2 Takte, denn gleichzeitig muss ja noch der 
nächste Befehl gelesen werden. Daher wird ein weiterer Takt hinzugefügt, 
in dem der Datenwert gelesen wird.

von hansi (Gast)


Lesenswert?

auch wenn schon etwas älter!!

Aber das ganze ist doch immernoch abhängig vom flash controller oder 
nicht? Denn wenn dieser eine Zugriffszeit von 10µs hat (??), aber meine 
MCU mit 50 MHz taktet, ist doch hier der Flaschenhals oder nicht?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

hansi schrieb:
> Denn wenn dieser eine Zugriffszeit von 10µs hat (??)

Das wäre in der Tat ein mieser Flash. Die minimale Zugriffszeit für das 
Lesen liegt bei einem AVR bei um und bei 25ns.

von (prx) A. K. (prx)


Lesenswert?

Als Daumenregel habe ich den Eindruck, dass recht viele Controller mit 
Flash als Programmspeicher jenseits von 20-40MHz Zykluszeit auf 
Waitstates ausweichen. Daraus kann man wohl auf die derzeit technisch 
übliche maximale Geschwindigkeit eines solchen Flash-Speichers 
schliessen.

von hansi (Gast)


Lesenswert?

alles klar, bei diesen Zeiten ist es tatsächlich kein Problem. Ich hatte 
überlegt, wieso als Datenspeicher nicht mal Flash anstatt RAM, aber 
dafür sind dann wohl die langen Schreibzyklen verantwortlich oder?

von hansi (Gast)


Lesenswert?

...und natürlich das man nicht random schreiben kann, ohne vorher die 
flash zelle zu löschen. ok hab es gerade selbst herausgefunden :)

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

hansi schrieb:
> wieso als Datenspeicher nicht mal Flash anstatt RAM,

Flash erlaubt nur etwa 10.000 Schreibzyklen, dann isser kaputt!

von hansi (Gast)


Lesenswert?

das kommt noch dazu

von Flasch Hals (Gast)


Lesenswert?

A. K. schrieb:
> Daraus kann man wohl auf die derzeit technisch
> übliche maximale Geschwindigkeit eines solchen Flash-Speichers
> schliessen.

Die Technik ist schon lange weiter:
http://elmicro.com/files/renesas/monos_flash_ewc_2008_for_proceedings.pdf

Ein Renesas RX610 läuft mit 100MHz ohne Wartezyklen.

von (prx) A. K. (prx)


Lesenswert?

Flasch Hals schrieb:

> Die Technik ist schon lange weiter:
> Ein Renesas RX610 läuft mit 100MHz ohne Wartezyklen.

Das Thema hatten wir schon mal, und wenn Renesas der Konkurrenz 
tatsächlich um viele Jahre voraus sein sollte, dann ändert das nichts 
daran, das viele aktuelle Controller nach wie vor jenseits von um die 
30MHz herum mit Waitstates arbeiten. Daher hatte ich das auch 
Daumenregel genannt und nicht eisernes Gesetz.

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.