Im Datenblatt steht dass alle 10'000 Zyklen eine Aufräumprozedur ausgeführt werden muss um die maximale Lebensdauer zu erhalten. Da sollten also 100'000 bis 1 Mio. drin liegen.
Das eigentliche Problem lieg in der Speicherzelle, welche die Quantenmechanik benutzt, genauer den Tunneleffekt.
Im Prinzip verwendet man einen MOS-Feldeffekt-Transistor bei welchem die Gate-Elektrode nicht angeschlossen wird (Floating-Gate). Über dieser Gate-Elektrode befindet sich, isoliert, eine weitere Elektrode, welche mit der Gate-Elektrode einen Kondensator bildet.
Bei einem ungeladenen Kondensator entspricht die Gate-Spannung der Steuerspannung.
Ist der Kondensator geladen, beträgt die Gate-Spannung die Steuerspannung minus der Spannung am Kondensator.
Wählt man die Werte richtig schaltet der MOS-FET im einen Fall durch und im anderen sperrt er.
Wichtig ist natürlich, dass die Isolation zwischen den Kondensatorplatten sehr gut ist, die Elektronen sollen möglichst über 10 Jahre nicht verloren gehen.
So weit so schön.
Das Problem ist nun, wie man Elektronen auf das Floating-Gate bekommt.
Hier hilft jetzt der Tunnel-Effekt, "heisse Elektronen" können die Isolation überwinden. Das Problem ist nun aber, dass diese heissen Elektronen auch Atome mit sich reissen und so Material von den Elektroden in die Isolation verschoben werden. Irgendwann ist die Isolation dann keine mehr und die Speicherzelle kaputt.
In den Anfängen (EPROM) konnte man um die 100 Programmierzyklen garantieren. Mit der Zeit hat sich das immer wieder um den Faktor 10 gesteigert und man liegt heute so bei 1 Mio. Zyklen. Bei den EPROMs hat man die Elektronen noch mit UV-Licht herausgeschossen und nur elektrisch programmiert. Später kamen dann die EEPROMs, welche auch elektrisch gelöscht werden konnten. Den Durchbruch schaffte dann die FLASH-Technologie.
Normalerweise sind bei entladenen Kondensatoren alle Bits auf "1" und für eine "0" muss der Kondensator geladen sein.
Beim Löschen werden alle Kondensatoren entladen. Löschen geht meistens nur Blockweise, weil sich sonst die Anzahl der benötigten Transistoren mehr als verdoppeln, bzw. die Speicherdicht halbieren würde.
Speicherzellen, welche "1" sind und bleiben, werden gar nicht programmiert. Ist eine Zelle bereits "0"n darf sie auch nicht programmiert werden, weil man sonst die doppelte Spannung auf dem Kondensator hätte.
Beim Programmieren werden also nur diejenigen Zellen abgenutzt, welche von "1" auf "0" programmiert werden und beim Löschen dienigen welche von "0" auf "1" gesetzt werden.
Man kann also bestehende Daten überschreiben, so lange die neuen Daten nur "1" zu "0" machen müssen. (Aus diesem Grunde hatte der BRK-Befehl früher bei vielen CPUs den Wert 0x00. Man konnte also ein programmiertes PROM nehmen und einen BRK-Befehl nachprogrammieren.)
Ein Trick für Zähler war es, ein Bitfeld mit "1" anzulegen und bei jedem Programmierdurchlauf ein weiteres Bit auf "0" zu setzen. Die Anzahl "0" zeigte dann an, wie oft bereits programmiert wurde. Im Speicherbereich dieses Bitfeldes wurde dann jede Zelle nur 1x programmiert und abgenutzt.
Heute hat man für Memory-Sticks und SSDs spezielle Controller, welche laufend Daten, welche sich selten ändern, in Bereiche Kopieren, welche schon mehr abgenutzt sind und die weniger benutzen Bereiche verwenden um neue Daten zu schreiben. Ausser dem Controller weiss dann keiner wo ein bestimmter Datenblock physikalisch auf den Chip abgelegt ist.
MfG Peter(TOO)
Lesezeichen