Przechowywanie danych w SSD-kach
Dyski SSD przechowują dane w układach Flash-NAND, spotykanych również w innych urządzeniach, jak np. pendrivy i karty pamięci. Dlatego informacje o przyczynach awaryjności SSD-ków można w prosty sposób odnieść i do innych nośników. Układy NAND zawierają bardzo duże liczby zmodyfikowanych tranzystorów polowych typu npn z kanałem zubażanym. Modyfikacja polega na wyodrębnieniu w tych tranzystorach odseparowanych elektrycznie obszarów – bramek pływających.
Bramka pływająca jest pułapką na elektrony pozwalającą przechowywać umieszczony w niej ładunek także po odłączeniu zasilania. Ładunek ten zachowuje się tak, jakby do bramki tranzystora zostało przyłożone napięcie, czyli w najprostszym wariancie przechowujących po jednym bicie w tranzystorze pamięci typu SLC (Single Level Cell) całkowicie zamyka kanał tranzystora. Dlatego zazwyczaj naładowaną bramkę tranzystora interpretuje się jako logiczne zero, a bramkę pustą – jako logiczną jedynkę.
Podstawowe operacje w układach Flash-NAND
W układach Flash-NAND możemy wykonywać trzy rodzaje operacji. Odczyt, zapis i kasowanie. Odczyt jest wykonywany przez pomiar napięcia między źródłem, a drenem tranzystora. Jest to operacja bezpieczna i nieszkodliwa dla układów, w odróżnieniu od operacji kasowania i programowania. Ponieważ programować możemy jedynie puste bramki pływające, tranzystory zaprogramowane wcześniej przed przyjęciem nowej porcji danych muszą zostać skasowane (muszą z nich zostać usunięte elektrony).
Zarówno programowanie, jak i kasowanie bramek pływających zazwyczaj wykonuje się z wykorzystaniem kwantowego zjawiska tunelowania Fowlera – Nordheima. Zjawisko to wykorzystuje falowe właściwości elektronów, ale żeby je wymusić, konieczne jest podniesienie napięcia między źródłem, a bramką do poziomu kilkunastu V.
Powoduje to straty energii skutkujące wydzielaniem ciepła oraz obciąża izolator, prowadząc do jego degradacji. W miarę postępującej degradacji izolatora dochodzi do ucieczki elektronów i upływności danych. Dlatego żywotność układów Flash-NAND określa się liczbą cykli programowania i kasowania.
Ponieważ współcześnie produkowane układy pamięci mają żenująco niską żywotność, producenci odeszli od podawania tego parametru, zastępując go lepiej wyglądającym parametrem TBW (Total Bytes Written). Jeśli chcesz ustalić, jaką żywotność mają układy w Twoim SSD-ku, możesz to zrobić w bardzo prosty sposób. Wystarczy, że podzielisz pa-rametr TBW przez pojemność swojego nośnika. Prawda, że wyszła niezbyt imponująca wartość?
Technologia pamięci wielostanowych
Wspomniane wyżej pamięci SLC obecnie są już bardzo rzadko spotykane. Przez lata były stopniowo wypierane przez układy zawierające 2 (MLC- Multi Level Cell), 3 (TLC – Triple Level Cell), a ostatnio nawet 4 (QLC – Quad Level Cell) bity w tranzystorze. Więcej bitów w każdym tranzystorze, to lepszy stosunek pojemności do ceny gotowego produktu. Czy zatem możemy spodziewać się niebawem pamięci zawierających po 5 bitów na tranzystor?
Kiedy inżynierowie zauważyli możliwość precyzyjnego sterowania częściowym przymykaniem kanału tranzystora przez umieszczenie w bramce pływającej określonego ładunku, księgowym ten pomysł się bardzo spodobał. I dopóki przechowywaliśmy w tranzystorze 2 bity, potrzebowaliśmy jedynie 4 rozróżnialnych poziomów naładowania. Dlatego układy MLC wciąż mogły oferować całkiem sensowną trwałość i niezawodność przy znacznie niższej cenie od układów SLC.
Problemy zaczęły wyraźnie narastać wraz z wprowadzeniem układów TLC. Wymagane w nich 8 rozróżnialnych poziomów naładowania spowodowało wyraźne pogorszenie stosunku sygnału do szumu oraz zwiększenie liczby występujących w nich błędów bitowych. Skutkowało to koniecznością zastosowania silniejszych kodów korekcji ECC oraz bardziej złożonych algorytmów kodowania danych. Problem ten jeszcze bardziej pogłębił się w przypadku pamięci QLC.
Prócz pogorszenia stosunku do szumu w układach wielostanowych występuje jeszcze jeden problem. Programowanie tranzystorów odbywa się etapami, co przyspiesza degradację izolatorów bramek pływających. I o ile układy SLC wytrzymywały nawet ponad 100.000 operacji kasowania/ zapisu, a MLC typowo kilkanaście tysięcy takich operacji, to dla pamięci TLC parametr ten wynosi zaledwie kilka tysięcy (dla obecnie produkowanych układów typowo ok. 1500 cykli), a dla QLC – ok. 600.
Zmniejszanie rozmiaru tranzystora
Ponieważ głównym czynnikiem wpływającym na cenę układu scalonego jest jego powierzchnia, inżynierowie dążą do zmniejszania rozmiarów poszczególnych elementów i zwiększenia gęstości ich upakowania w układzie.
Dotyczy to nie tylko procesorów i kart graficznych, ale i układów NAND-owych. Zmniejszanie rozmiaru tranzystora skutkuje też zmniejszaniem grubości izolatora bramki pływającej oraz wielkości samej bramki.
Cieńszy izolator, to większe ryzyko uszkodzenia, szybsza degradacja i łatwiejsza ucieczka elektronów. Zalecana grubość izolatora wynosi ok. 4 nm. W przypadku układów wykonywanych w litografii kilkunastu nm jego grubość spada do ok. 2 nm. Istotny wzrost awaryjności tych układów w stosunku do wcześniejszych generacji jest w znacznym stopniu spowodowany właśnie przez zbyt niską trwałość izolatorów bramek pływających.
Mniejsza bramka pływająca, to także mniejsza możliwość umieszczania w niej elektronów. Elektrony nie mogą być upychane w bramce pływającej w dowolnej liczbie. Są one umieszczane na powłokach walencyjnych znajdujących się wewnątrz bramki a-tomów, których liczba ogranicza możliwą do umieszczenia w bramce liczbę elektronów. W przypadku układów wykonywanych w litografii kilkunastu nm w bramce pływającej można umieścić zaledwie ok. 1000 elektronów. Jeśli podzielimy tę liczbę przez wymaganą dla układów QLC liczbę 16 odróżnianych poziomów naładowania, zobaczymy, że już kilkadziesiąt elektronów może przesądzić o wystąpieniu błędu bitowego.
Zmniejszanie procesu litografii, to także większe trudności wykonawcze i większe wymagania technologiczne. Wyzwaniem jest chociażby sam fakt operowania coraz krótszymi falami światła, czy konieczność wykonywania procesu napylania w warunkach wysokiej próżni. Przy tak niskich wymiarach tranzystorów różnice mogą robić nie tylko nawet nieznaczne zanieczyszczenia, ale i niedokładności wykonawcze na poziomie pojedynczych atomów.
Przeniesienie tych procesów z warunków laboratoryjnych do masowej produkcji wiąże się z większą skalą odpadów produkcyjnych i większym ryzykiem awaryjności niedostatecznie przetestowanych układów w początkowym okresie ich eksploatacji.
3-D NAND
Innym stosowanym przez producentów sposobem zwiększania gęstości zapisu są układy wielowarstwowe 3D-NAND. Układy te zbudowane są z od kilkudziesięciu do kilkuset warstw umieszczanych jedna nad drugą. Pozwala to znacząco zwiększyć upakowanie danych w układzie, jednak i to rozwiązanie nie jest wolne od wad.
Najważniejszym problemem jest ciepło wydzielane podczas operacji kasowania i zapisu. Wprawdzie układ można chłodzić przy pomocy radiatora i to się od pewnego czasu robi, ale radiator odprowadza ciepło tylko z powierzchni układu. A ono ma tendencję do akumulowania się pomiędzy warstwami. I to właśnie odprowadzanie ciepła spomiędzy warstw stanowi dla producentów największe wyzwanie.
Drugim problemem są zjawiska indukcyjne występujące pomiędzy sąsiednimi tranzystorami. Wprawdzie nie są one nowością i występowały już wcześniej, jednak ich wpływ nie był aż tak istotny, dopóki tranzystory były ułożone w jednej płaszczyźnie. Znaczenie pól elektrycznych indukowanych przez sąsiednie ładunki jest przy tym tym istotniejsze, im mamy mniejsze tranzystory, im gęściej chcemy je upakować i im więcej bitów chcemy w nich umieścić. A to są najważniejsze kierunki rozwoju układów NAND-owych.
Adresowanie danych w SSDkach
Komunikując się z SSDkami wysyłamy im polecenia zapisu lub odczytu określonych sektorów. Ale same układy NAND-owe nie adresują danych w sektorach. Ich podstawowymi jednostkami adresowania są strony, jako minimalne jednostki odczytu i programowania (stanowią odpowiednik od 1 do 32 sektorów LBA) i liczące od kilku do kilkuset stron bloki, jako minimalne jednostki kasowania. W przypadku obu tych jednostek adresowania stałą tendencją jest zwiększanie ich rozmiarów. Kontroler pośredniczy pomiędzy wewnętrzną adresacją układów NAND, a używaną na zewnętrznym interfejsie adresacją LBA, wykorzystując tablice oprogramowania układowego nazywane translatorem.
Translator przechowuje informację pozwalającą ustalić, w której fizycznej jednostce którego układu znajdują się poszukiwane sektory. W odróżnieniu od dysków twardych, w nośnikach półprzewodnikowych fizyczne położenie poszczególnych jednostek LBA stale się zmienia.
Jest to związane z brakiem możliwości bezpośredniego nadpisywania danych i koniecznością umieszczania ich w skasowanych blokach. Informacja translatora zmienia się często, bo przy każdym zapisie na dysk. Dlatego musi być umieszczona w układach NAND i dlatego jest narażona na te same ryzyka wystąpienia błędów, co i inne dane umieszczone w tych układach.
Kiedy zapisujemy do SSDka nowe dane, są one umieszczane w dostępnej lokalizacji i tej lokalizacji przypisywane są adresy LBA związane z tymi danymi. Natomiast strony zawierające zdezaktualizowana zawartość tych sektorów tracą powiązanie z adresacją LBA i są oznaczane jako przeznaczone do skasowania. Jak zapewne się domyślasz, translator jest bardzo ważny dla prawidłowego działania SSD-ka. Co by się mogło stać, gdyby jego zawartość uległa uszkodzeniu?
I to jest właśnie odpowiedź na pytanie o najczęstszą przyczynę awarii SSD-ków. Kiedy translator zawiera błędy, kontroler traci możliwość poprawnego adresowania danych. Na wszelki wypadek odcina dostęp do NAND-ów. W takiej sytuacji SSD przedstawia się tzw. paszportem technologicznym. Zwykle zamiast modelu widniejącego na obudowie wyświetla nam się model kontrolera albo jakiś związany z nim ciąg znaków, jak np. SATAFIRM S11. Deklarowana pojemność jest dziwnie mała, lub wręcz zerowa. Kiedyś w dyskach Intela zamiast numeru seryjnego często pojawiał się kod błędu. Znaczna część SSD-ków w przypadku awarii tego typu zawiesza się i w ogóle nie odpowiada.
Nie zawsze przyczyną awarii muszą być błędy akurat translatora. Oprogramowanie układowe odpowiada też za inne funkcje, np. za zarządzanie defektami i eliminowanie z eksploatacji uszkodzonych bloków. Czasem może dojść do uszkodzenia innych części oprogramowania układowego. Ale to właśnie błędy oprogramowania układowego odpowiadają za niemal wszystkie awarie SSD-ków. Dlaczego więc w diagnozach dowiadujemy się, że uszkodzeniu uległ kontroler, choć tak naprawdę sam układ jest sprawny? Może dlatego, że jest fizycznie namacalny, a mało komu się chce tłumaczyć nietechnicznym klientom rolę oprogramowania układowego w działaniu SSD-ka.