www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wieso ist EEPROM ein ROM?


Autor: benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein EEPROM ist doch eigentlich wiederbeschreibbar. Wieso ist es dennoch 
ein ROM?

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe EEPROM

Autor: Dieter M. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liegt am Funktionsprinzip und der Entstehungsgeschichte.

Die hießen früher nur EPROM = Elektrisch Programmierbares ROM.
Da gab es Typen, die konnte man mit einem EPROM-Brenner genau einmal 
beschreiben.
Manche hatten dann ein kleines Fenster. Die konnte man mit UV-Licht 
wieder löschen. Entweder im speziellen Gerät oder im Sonnenlicht. 
Allerdings ging das nicht so häufig (einige 10-100mal)

Später kamen dann die elektrisch löschbaren EPROMs als EEPROMs.
Wenn man die mit einem anderen Inhalt beschreiben möchte, muss man sie 
erst ganz oder teilweise löschen. Erst dann kann man sie wieder neu 
beschreiben. Auch für moderne EEPROMs ist die Anzahl der Schreibzugriffe 
begrenzt.

Das Prinzip dahinter ist halt anders als bei RAM.

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die letzten 3 Buchstaben von EEPROM sind übrigens ROM und bilden den 
gemeinsamen Nenner aller dieser Bausteine...

Autor: 1Gast1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Electrial Eraseble Programmable Read Only Memory
E         E        P            R    O    M

Autor: Mark Brandis (markbrandis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
benjamin schrieb:
> Ein EEPROM ist doch eigentlich wiederbeschreibbar. Wieso ist es dennoch
> ein ROM?

Hm, weil es im regulären Betrieb eben nur lesbar ist? Schreiben bzw. 
Löschen ist zwar möglich, stellt aber eine Ausnahme dar.

Autor: Nobody (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
benjamin schrieb:
> Ein EEPROM ist doch eigentlich wiederbeschreibbar. Wieso ist es dennoch
> ein ROM?

Die Definition des "ROM" bezieht sich auf einen gewissen Zeithorizont 
aber auch auf die Mittel und Methoden. Zu diesen Methoden gehört nicht 
das der Prozessor durch normale Speicherbefehle, die er auch für das RAM 
verwendet, den Inhalt des ROMs verändern kann.

Durch den Zusatz "P" für "programmable" ist sowohl der Zeitraum als auch 
die Methode verändert. Es ist/war ein spezielles Programmiergerät nötig.

Durch den Zusatz "E" für "erasable" ist wiederrum der Zeitraum als auch 
die Methode verändert. Es ist/war ein spezielles Löschgerät (UV-Licht) 
nötig.

Durch den weiteren Zusatz "E" für "electrially" geschah eine erneute 
Veränderung der beiden Parameter. Es ist/war ein spezielles Löschgerät 
nötig.

Was aber wesentlich gleich bleibt ist die Tatsache, das alle diese 
Varianten ohne Strom ihren Inhalt behalten und durch die Abarbeitung der 
Befehle eines "normalen" Programmes, zu denen im allgemeinen auch 
Schreibbefehle ins RAM gehören nicht dadurch zu ändern ist, das man als 
Zieladresse eine Adresse im ROM angibt.

( Der Zusatz "normales Programm" ist nötig, weil es mittlerweile 
spezielle Befehle bzw. Abfolgen des Setzens und Löschens von Bits in 
speziellen  Registern gibt, die das (E)(E)PROM verändern (siehe AVR). 
Das sind aber eben Befehle bzw. Register die in normalen Anwendungen 
nicht gebraucht werden ).

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Begriffe ROM und RAM stammen aus der Anfangszeit der Computerei, wo
es noch relativ wenige Speichertypen gab. Heute versucht man, jeden
neuen Speichertyp irgendwie in dieses Schubladenschema hinein zu
pressen und wenn es nicht anders geht, dann eben mit dem Hammer.

Die Geschichte um diese beiden Begriffe (wer sich's antun will):

Am waren praktisch alle Speichertypen beschreibbar. Als Hauptspeicher
wurden Magnettrommel- oder Laufzeitspeicher, als Massenspeicher Magnet-
bandspeicher eingesetzt. Da es selbstverständlich war, dass diese
Speicher beschreibbar waren, nannte man sie nicht etwa RWM (Read/Write
Memory), sondern einfach Speicher oder Memory.

Diese Speicher hatten den Nachteil, dass man auf die Daten nicht in
beliebiger Reihenfolge, sondern nur sequentiell zugreifen konnte. Mit
dem Ringkernspeicher kam ein Speichertyp, dessen Daten nach Belieben
direkt adressiert werden konnten. Diese nannte man RAM (Random Access
Memory, Speicher mit wahlfreiem Zugriff). Der Begriff RAM bezieht sich
also nicht auf die Beschreibbarkeit, wie oft angenommen, sondern auf die
Adressierberkeit.

Die nichtflüchtigen Ringkernspeicher wurden später durch flüchtige Halb-
leiterspeicher verdrängt. Der Begriff RAM blieb, weil das Einsatzgebiet
(Hauptspeicher) derselbe war. Der Begriff RAM bezeichnet deswegen heute
üblicherweise einen flüchtigen Schreib/Lese-Speicher.

ROMs (Read-Only Memory, Nurlesespeicher) kamen m.W. mit dem Einzug der
integrierten Schaltungen. Jetzt wäre es eigentlich an der Zeit gewesen,
die beschreibbaren Halbleiterspeicher zur Differenzierung mit RWM zu
bezeichnen und RAM als Oberbegriff für ROM und RWM nehmen. Das hätte
eine saubere Nomenklatur ergeben, geschah aber nicht, da sich der (zwar
nicht falsche, aber wenig aussagekräftige) Begriff RAM für die Halblei-
terspeicher schon fest eingebürgert hatte.

Die ursprünglichen ROMs waren maskenprogrammiert und logischerweise
nichtflüchtig. Dann gab es die ebenfalls nichtflüchtigen programmier-
baren ROMs (PROMs), bei denen die einzelnen Bits durch thermisches
Zerstören von Dioden mittels Überstrom geschrieben wurden. Daher kommt
auch der heute noch übliche Begriff "Brennen" für das Beschreiben
nichtflüchtiger Speicher, also noch so ein historisch gewachsener
Begriff.

Obwohl es sich beim Programmieren von PROMs um einen Schreibvorgang
handelt, nannte man auch diese Speicher nicht RWM, weil dann die
Abgrenzung zu den so genannten RAMs nicht deutlich genug gewesen wäre.
Zudem war das Beschreiben eines PROMs etwas im wahrsten Sinne des Wortes
"Einmaliges", was mit entsprechend großer Sorgfalt durgeführt werden
musste, so dass der Begriff "programming" dafür besser passte als
"writing".

Die nächste Errungenschaft waren die EPROMs (Erasable PROMs), die die
Daten in Mosfets mit floating Gates speicherten und mit UV-Licht wieder
gelöscht werden konnten. Da diese Bausteine als komfortabler Ersatz für
die nichtlöschbaren PROMs eingesetzt wurden, wurde auch das "ROM" als
Bestandteil des Namens beibehalten. Mittlerweile wurden auch die PROMs
in dieser Technologie gefertigt. Sie waren weiterhin nicht löschbar,
aber nur deswegen, weil das Löschfenster im Gehäuse fehlte.

EEPROMs (electrically erasable PROMs) speichern die Daten nach dem
gleichen Prinzip wie EPROMs, können jedoch durch elektrische Signale
gelöscht werden, so dass dafür weder UV-Licht noch ein Fenster
erforderlich sind. Für EEPROMs wäre der Begriff RWM nun wirklich
angebracht, da im Gegensatz zu den EPROMs sogar jedes Byte einzeln
gelöscht und neu beschrieben werden kann. Aber aus dem schon bei den
PROMs genannten Grund und weil EEPROMs das gleiche Speicherprinzip wie
EPROMs anwenden, geschah dies auch hier nicht.

Flash-EEPROMs sind EEPROMs, deren Inhalte nicht byte- sondern block-
weise gelöscht werden. Durch das parallele Löschen aller Bytes eines
Blocks dauert der Löschvorgang insgesamt weniger lang. Da der Lösch-
mechanismus aber weniger flexible als bei den EEPROMs ist, ist es
eigentlich nur konsequent, auch hier das "ROM" im Namen beizubehalten.

Mittlerweile sind fast alle "ROM"-Typen problemlos beschreibbar. Das
Einzige, was sie mit dem Ur-ROM noch gemsinam haben, ist die Nicht-
flüchtigkeit. Deswegen bezeichnet ROM heute üblicherweise einen nicht-
flüchtigen Speicher, unabhängig davon, ob er beschreibbar ist oder
nicht.

Mit den EEPROMs verhält es sich eben ähnlich wie mit den Bleistiften,
die auch schon seit mehreren Jahrhunderten kein Blei mehr enthalten :)


Falk Brunner schrieb:
> Siehe EEPROM

Jetzt habe den verlinkten Abschnitt des Wiki-Artikels schon zweimal
aufmerksam durchgelesen, aber beim besten Willen keine Antwort auf die
Frage

> Ein EEPROM ist doch eigentlich wiederbeschreibbar. Wieso ist es dennoch
> ein ROM?

gefunden. Da du maßgeblich an dem Wiki-Artikel mitgewirkt hast (was ich
sehr zu schätzen weiß), hätte ich erwartet, dass du weißt, was darin
steht ;-)

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Vollständigkeit halber: ROM gab es bereits als Ringkernspeicher, per 
Verdrahtung. Der Apollo Guidance Computer hatte sowas. Der Kern diente 
da nur zur magnetischen Kopplung der Drähte.

Ausserdem gab es anfangs auch Röhrenspeicher, beispielsweise die 
Williams Tube, die etwas an die späteren Bildspeicherröhren erinnert. 
Hatten den Vorteil, dass auch hier schon wahlfreier Zugriff möglich war.

Fehlen leider noch die Abschnitte zu FRAM, MRAM, PCRAM die man unter als 
NVRAM einsortiert. Nichtflüchtiger Speicher, der also seinen Inhalt auch 
ohne Strom bewahrt, aber als RAM bezeichnet wird. Das Kriterium 
"nichtflüchtig" eignet sich also nicht um ROM und RAM zu unterscheiden.

Die Abgrenzung zwischen ROM und RAM ist damit eher Häufigkeit/Aufwand 
des Schreibvorǵangs, die Art der Verwendung. Ist das Schreiben ein 
besonderer Vorgang, wird der Speicher "programmiert" ist es ROM. Wird 
der wie RAM quasi beiläufig "geschrieben" ist es RAM. Für letzteres muss 
natürlich die zulässige Schreibhäufigkeit entsprechend hoch sein.

Es ist also nicht so ganz einfach, da eine klare technische Grenze zu 
ziehen.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Echtes nicht programmierbares ROM gibt es natürlich weiterhin, aber 
nicht so sehr als eigenständigen adressierbaren Speicher, sondern 
beispielsweise als eher versteckten Teil in Prozessoren. Dank der an 
Microcode reichen x86-Architektur beispielsweise.

Autor: Yalu X. (yalu) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Fehlen leider noch die Abschnitte zu FRAM, MRAM, PCRAM die man unter als
> NVRAM einsortiert. Nichtflüchtiger Speicher, der also seinen Inhalt auch
> ohne Strom bewahrt, aber als RAM bezeichnet wird.

Oje, ich habe geahnt, dass doch komplizierter wird :-(

Vielleicht funktioniert folgende Einteilung besser: (NV)RAM ist alles,
was als Hauptspeicher taugt, ROM der Rest. Aber wie definiert man die
Hauptspeichertauglichkeit? Und kann man ein PCF8570 (256×8-bit static
low-voltage RAM with I²C-bus interface) als hauptspeichertauglich
bezeichnen?

Oder vielleicht doch so (ähnlich deinem Vorschlag): (NV)RAMs sind die
Speicher, bei denen Lese- und Schreibzugriffe in etwa gleich aufwendig
sind. Ist der Schreibzugriff aufwendiger, ist es ein ROM. Damit wäre
sogar ein praktisch anwendbarer WOM (Write-Only Memory) denkbar. Das ist
einer, bei dem ein Lesezugriff zwar möglich, aber aufwendiger als ein
Schreibzugriff ist. Mir fällt nur gerade kein Beispiel dafür ein. Aber
auch hier das Problem: Wie definiert man den Aufwand? Als Zeitaufwand?
Und ab wann sind zwei Aufwände unterschiedlich?

> Es ist also nicht so ganz einfach, da eine klare technische Grenze zu
> ziehen.

So ist es.

Früher, ja früher, als die Begriffe noch in ihrer ursprünglichen
Bedeutung verwendet wurden, da war das Leben noch viel leichter. Da
gab's auch noch nicht so viele Softwarefehler :)

Apropos Software: Auch zwischen Software und Hardware konnte man früher
noch eindeutig unterscheiden.

Autor: Andreas Ferber (aferber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Yalu X. schrieb:
> Damit wäre
> sogar ein praktisch anwendbarer WOM (Write-Only Memory) denkbar. Das ist
> einer, bei dem ein Lesezugriff zwar möglich, aber aufwendiger als ein
> Schreibzugriff ist. Mir fällt nur gerade kein Beispiel dafür ein.

Wie wär's mit einem Drucker? ;-)

Auch beim Ringkernspeicher (die RAM-Variante) oder bei ganz normalem 
DRAM ist Lesen aufwendiger als Schreiben, beides würde ich aber trotzdem 
nicht als WOM bezeichnen ;-)

Andreas

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Ferber schrieb:

> DRAM ist Lesen aufwendiger als Schreiben

Sicher? Da man bei DRAMs stets mit kompletten Zeilen arbeitet, aber die 
nur partiell modifiziert, liegt der Unterschied zwischen Lese- und 
Schreibzugriff m.E. nur darin, was man zurückschreibt. Schreiben wäre 
nur schneller, wenn man die Daten einer komplette Zeile überschreibt.

Autor: Andreas Ferber (aferber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
>> DRAM ist Lesen aufwendiger als Schreiben
> Sicher?

Bezogen auf die einzelne Zelle - ja.

> Da man bei DRAMs stets mit kompletten Zeilen arbeitet, aber die
> nur partiell modifiziert, liegt der Unterschied zwischen Lese- und
> Schreibzugriff m.E. nur darin, was man zurückschreibt. Schreiben wäre
> nur schneller, wenn man die Daten einer komplette Zeile überschreibt.

Das ist aber (auch wenn es de fakto immer so gemacht wird) keine 
inhärente Eigenschaft der zugrundeliegenden Speichertechnik. Die 
zeilenweise Adressierung verringert einerseits den Hardwareaufwand, 
andererseits wird damit der hohe Leseaufwand auf Kosten von 
Schreibzugriffen optimiert und (wenn das Zugriffsmuster passt) über 
mehrere Zugriffe amortisiert. Man könnte prinzipiell DRAM aber auch 
anders bauen, mit entsprechend höherem Hardwareaufwand und zweifelhaftem 
Nutzen (ich denke, in aller Regel wird öfter gelesen als geschrieben).

Andreas

Autor: Andreas Ferber (aferber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Sicher? Da man bei DRAMs stets mit kompletten Zeilen arbeitet, aber die
> nur partiell modifiziert, liegt der Unterschied zwischen Lese- und
> Schreibzugriff m.E. nur darin, was man zurückschreibt.

BTW, bei den üblichen DRAM-Implementierungen gibt es meines Wissens 
sowieso kein explizites "Zurückschreiben". Das Auffrischen der 
Kondensatorladungen in einer Zeile ist bereits abgeschlossen, bevor 
überhaupt die Spaltenadresse angelegt wird, findet also während des 
RAS-Delays statt. Auch handelt es sich um einen rein analogen Vorgang, 
während "Zurückschreiben" suggeriert, dass die Daten erstmal in digitale 
Puffer (Flipflops o.ä.) gelesen und dann später wieder geschrieben 
würden.

Beim Aktivieren der Zeile wird erstmal der Kondensator in die Bitleitung 
(teil-)entladen, anschliessend wird Versorgungsspannung an den 
Leseverstärker gelegt und Kondensator und Bitleitung gemeinsam auf den 
Nennpegel aufgeladen. Erst dann ist die Zeilenaktivierung abgeschlossen, 
und es kann gelesen (oder geschrieben) werden.

Die Precharge-Zeit beim Deaktivieren der Zeile ist kein 
"Zurückschreiben", sondern die Zeit ist nötig, um die Bitleitungen und 
Leseverstärker nach Abtrennung von der Speicherzelle wieder zu entladen, 
bevor die nächste Zeilenaktivierung stattfinden kann. Deswegen heisst es 
auch "Precharge", und nicht etwa "Write Back" oder so ;-)

> Schreiben wäre
> nur schneller, wenn man die Daten einer komplette Zeile überschreibt.

Wäre mit existierenden DRAM-Implementierungen nicht schneller, da 
trotzdem eine Aktivierung der Zeile, und damit ein voller Refresh der 
alten Daten, vorangehen würde.

Andreas

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die ausführliche Beschreibung der mir nicht ganz unbekannten 
Technik von DRAMs ;-). Wenn das so weiter geht, könnte man den Thread 
fast so wie er ist als Artikel reinstellen.

Aber ich denke es ging etwas an meiner Anmerkung vorbei. Nämlich 
derjenigen, dass es m.W. keinen signifikanten Unterschied zwischen Lese- 
und Schreibvorgang gibt, somit Schreiben nicht schneller ist als Lesen. 
In beiden Fällen sind es intern notwendigerweise integrierte 
read-modify-write Vorgänge, wobei der reine Lesefall ausnahmsweise 
nichts modifiziert.

Was das eher hypothetische Schreiben einer kompletten Zeile angeht: Da 
dann per Definition kein Refresh erfolgen muss liesse sich die Zeit 
sparen, die zwischen Zellaktivierung und Erfassung des Bits durch den 
Leseverstärker vergeht. Auch der Precharge davor wäre nicht 
erforderlich. Bei Speichertechniken wie den früheren VRAMs, in denen ein 
kompletter separat befüllter Zeilenspeicher existierte, wäre das für 
diese Transferzyklen m.E. prinzipiell machbar gewesen.

Autor: Andreas Ferber (aferber)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
A. K. schrieb:
> Aber ich denke es ging etwas an meiner Anmerkung vorbei. Nämlich
> derjenigen, dass es m.W. keinen signifikanten Unterschied zwischen Lese-
> und Schreibvorgang gibt,

Wie schon gesagt, das liegt "nur" an der Implementierung. Man könnte 
prinzipiell auch DRAM bauen, bei dem eine "Zeile" ein einzelnes Bit 
umfasst, und könnte dann die "ganze Zeile schreiben-Optimierung" immer 
anwenden. Deshalb ist es keine inhärente (= durch die Arbeitsweise der 
einzelnen Speicherzelle fest vorgegebene) Eigenschaft von DRAM.

Allerdings könnte man dann nicht mehr den Leseaufwand über mehrere 
Lesezugriffe amortisieren, weshalb das dann unterm Strich trotz 
schnellerer Schreibzugriffe dennoch langsamer werden dürfte.

Andreas

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Ferber schrieb:

> Deshalb ist es keine inhärente (= durch die Arbeitsweise der
> einzelnen Speicherzelle fest vorgegebene) Eigenschaft von DRAM.

Ok, jetzt sind wir beisammen. Ich bezog mich auf reale DRAMs.

Deine hypothetischen spaltenselektiven Schreibvorgänge sind dann nämlich 
vom Timing her identisch mit meinen kompletten Zeilentransfers ;-).

Autor: Andreas K. (derandi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Interessante Frage...
Könnte man doch bei EEPROM daran festnageln, das zum Schreiben ein 
anderer Betriebsmodus (= höhere Spannung um das Floating-Gate zu leeren) 
nötig ist als beim regulären lesen.

Nur, in welche Kategorie fallen eigentlich USB-Sticks und FDD`s?
Die haben ja durch ein wenig elektronischen Workaround quasi-wahlfreien 
Zugriff.

Ich wär für die Lösung, das RAM den Arbeitsspeicher bezeichnet.

Autor: Reinhard Kern (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas K. schrieb:
> Ich wär für die Lösung, das RAM den Arbeitsspeicher bezeichnet.

Protest!

das kann man mit etwas unscharfem Blick beim PC so sehen, aber es gibt 
noch andere Systeme, und bei einem von-Neumann-Rechner in einem embedded 
System ist die Betriebssoftware im E(E)Prom natürlich Bestandteil des 
Arbeitsspeichers, nur eben der unveränderbare. Im Speicher folgt 
üblicherweise auf ein Eprom mit der Software ein RAM, der Prozessor 
weiss aber garnicht, wo der Speicher beschreibbar ist und wo nicht. Der 
Programmierer hat drauf zu achten, dass er nicht ins ROM schreibt. Und 
selbst bei einer Harvard-Architektur spricht absolut nichts dagegen, 
einen Teil des Arbeitsspeichers als ROM auszuführen, wenn z.B. grosse 
unveränderliche Tabellen benötigt werden.

Ich habe mal Garöfen für eine grosse Restaurantkette programmiert, die 
enthielten ausgetestete Temperaturverläufe für einige zig verschiedene 
Speisen - natürlich im ROM.

Auch im PC gibt es natürlich ROM-Teile im Arbeitsspeicher, nicht nur das 
BIOS sondern auch BIOS-Erweiterungen auf Steckkarten. Genau genommen 
gibt es garkein System, das NICHT mit ROM im Arbeitsspeicher startet - 
wie sollte das auch gehen?

Gruss Reinhard

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.