Ein EEPROM ist doch eigentlich wiederbeschreibbar. Wieso ist es dennoch ein ROM?
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.
Die letzten 3 Buchstaben von EEPROM sind übrigens ROM und bilden den gemeinsamen Nenner aller dieser Bausteine...
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.
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 ).
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 ;-)
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.
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.
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.
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
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.
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
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
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.
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
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 ;-).
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.