Dysk SSD nie zapisuje zer i jedynek dosłownie. Przechowuje drobne porcje ładunku elektrycznego, a te z czasem się zmieniają. Badania na prawdziwych kościach pamięci pozwoliły wskazać pięć głównych źródeł błędów. Wszystkie działają w każdym dysku przez cały czas.
Wspólny mechanizm: nachodzące na siebie „okienka”
W komórce TLC mieści się osiem stanów, a każdemu odpowiada określony zakres napięcia. Nawet zaraz po zapisie komórki w tym samym stanie nie mają identycznego napięcia, tylko tworzą rozkład wokół średniej. Kontroler odczytuje dane, porównując napięcie komórek z napięciami odniesienia ustawionymi między stanami.
Różne zjawiska sprawiają, że te rozkłady z czasem się przesuwają i poszerzają. Gdy dwa sąsiednie zaczynają na siebie zachodzić, część komórek trafia po „złej stronie” napięcia odniesienia. Kontroler odczyta je wtedy jako inny stan i powstanie błędny bit.
1. Zużycie od cykli zapisu i kasowania
Powtarzane zapisy i kasowania uszkadzają warstwę izolatora w komórce (szczegóły w artykule 2). Kasowanie może wtedy nie przywrócić komórki do stanu początkowego, a zapis nie ustawić jej dokładnie tam, gdzie trzeba. Tych błędów przybywa przez całe życie bloku.
2. Błędy przy zapisie
Nowoczesne pamięci zapisują komórkę w kilku krokach. W MLC najpierw zapisywany jest jeden bit, potem drugi. W TLC stosuje się tzw. programowanie „zgrubne i dokładne” (foggy-fine), z dodatkowym buforem. Między krokami układ pamięci odczytuje częściowo zapisane dane wewnętrznie, bez udziału kontrolera. Takiego odczytu nie sprawdza mechanizm korekcji błędów. Jeśli odczyt wypadnie błędnie, zapis zostanie dokończony na podstawie błędnej wartości.
Podobny problem dotyczy kopiowania danych wewnątrz kości podczas prac porządkowych (copyback), bo takie dane też omijają kontroler. Pamięć TLC jest na błędy zapisu znacznie mniej podatna niż MLC.
3. Zakłócenia od sąsiednich komórek
Komórki leżą tak blisko siebie, że zapis jednej podnosi napięcie sąsiadek. Zjawisko wynika z tzw. sprzężenia pojemnościowego. Najsilniej wpływa komórka bezpośrednio powyżej lub poniżej (w sąsiednim rzędzie, czyli linii słów), a efekt rośnie wraz ze zmniejszaniem się komórek:
|
Generacja pamięci |
Sąsiad w rzędzie obok |
Sąsiad w tej samej kolumnie |
Sąsiad po przekątnej |
|---|---|---|---|
|
2y-nm (starsza) |
0,060 |
0,032 |
0,012 |
|
1x-nm, czyli 15–19 nm (nowsza) |
0,110 |
0,055 |
0,020 |
Współczynniki sprzężenia: im wyższy, tym silniej zapis sąsiada zmienia napięcie komórki.
Aby to ograniczyć, kontrolery zapisują strony w specjalnej kolejności. Wówczas w pełni zapisany rząd jest zakłócany tylko raz, przez ostatni krok zapisu rzędu powyżej.
4. Utrata ładunku z upływem czasu (retencja)
To najważniejsze źródło błędów. Komórka w nowoczesnej płaskiej pamięci MLC (15–19 nm) przechowuje zaledwie około 100 elektronów. Utrata lub zyskanie kilku z nich wyraźnie zmienia jej napięcie i z czasem może zmienić stan.
Ładunek ucieka przez izolator, a im bardziej jest on zużyty, tym szybciej. Pomiary na kościach TLC po dniu, miesiącu i roku przechowywania wykazały trzy prawidłowości:
- stany o wysokim napięciu przesuwają się w dół, a o najniższym w górę;
- wszystkie rozkłady z czasem się poszerzają;
- stany o najwyższym napięciu przesuwają się najbardziej.
Według publikacji wyciek ładunku z komórki flash prowadzi zwykle do utraty danych po czasie od kilku dni do kilku lat. Szybkość zależy m.in. od zużycia pamięci i temperatury. Liczba błędów retencji rośnie wraz z temperaturą, dlatego kontrolery mierzą ją czujnikami i przy wyższej częściej odświeżają dane.
Zależność od temperatury jest na tyle silna, że badacze wykorzystują ją do symulowania wieloletniego przechowywania. Według modelu Arrheniusa ok. 2,2 godziny w 120°C odpowiada rokowi przechowywania w 40°C.

5. Zakłócenia przy odczycie (read disturb)
Podczas odczytu jednej komórki kontroler musi „przepuścić” sygnał przez wszystkie pozostałe komórki w tej samej kolumnie. Podaje na nie wtedy napięcie rzędu +6 V. To mniej niż przy zapisie (ok. +15 V), ale wystarcza, by lekko podnieść ich napięcie.
Pojedynczy odczyt niczego nie psuje, lecz efekt się sumuje. W testach bloków TLC odczytywanych 1, 10 tys. i 100 tys. razy najbardziej przesuwały się stany o najniższym napięciu. Dlatego niektórzy producenci określają maksymalną liczbę odczytów bloku. Po jej przekroczeniu kontroler przepisuje dane w nowe miejsce (read reclaim).
Jak dysk się broni
Na każde z tych zjawisk kontroler ma odpowiedzi:
- Odświeżanie danych. Kontroler okresowo odczytuje dane, poprawia błędy i zapisuje je ponownie, w nowym lub tym samym miejscu. W badaniach opisanych w publikacji takie mechanizmy wydłużały żywotność dysku średnio 9-krotnie, a w wersji hybrydowej nawet 31-krotnie.
- Ponowny odczyt z innymi napięciami (read-retry).
- Dobór optymalnych napięć odczytu.
- Wykorzystanie wiedzy o sąsiednich komórkach przy korekcji.
Szczegóły opisujemy w artykule 4.
Co to oznacza w praktyce
Błędy w pamięci flash nie są wyjątkiem, tylko codziennością, z którą dysk stale walczy. Ważne jest, że odświeżaniem danych zajmuje się kontroler, a ten pracuje tylko wtedy, gdy dysk jest zasilany. Nie każdy kontroler ma włączoną tą funkcje, a tanie dyski SSD praktycznie jej nie używają. Kluczową rolę odgrywa też temperatura: przyspiesza ucieczkę ładunku, a w danych z centrów danych wiązała się z wyższą awaryjnością. Odzyskiwanie danych z dysków SSD staje się coraz trudniejsze, a jeśli masz jakiś problem zapraszamy do kontaktu
Źródła: Y. Cai i in., Proceedings of the IEEE, 2017 (rozdz. IV, V.A–V.C, VIII); Q. Li i in., ACM TACO, 2024 (tab. 4, rozdz. 3.1.2).
