JAK DZIAŁA BBM?
Realizuje on algorytm przedstawiony na rysunku 3. Efektem jego działania jest tablica (Bad Block Table, BBT), w której zebrane są adresy uszkodzonych bloków. Zapisuje się ją w działających obszarach pamięci, dzięki czemu nie ma potrzeby za każdym razem na nowo skanować wszystkich bloków w poszukiwaniu tych zepsutych. BBT jest stale aktualizowana.
Jeśli w trakcie zapisu danej strony wystąpi błąd nie ma to wpływu na zawartość pozostałych stron w bloku. Informacje te można zatem przekopiować do sprawnego obszaru pamięci. Dane, które miały zostać zapisane w uszkodzonym bloku, należy natomiast przekierować. BBM może to zrealizować na różne sposoby. Przykładowa metoda (skipping bad blocks) polega na przekopiowaniu albo przekierowaniu informacji do pierwszego sprawnego bloku o adresie następującym po adresie tego uszkodzonego.
Stosowany jest również podział całej pamięci na dwa obszary. Do pierwszego z nich mogą się bezpośrednio odwoływać użytkownicy (user addressable block area), natomiast drugi jest zarezerwowany (reserved block area). Są w nim zapisywane wyłącznie dane z uszkodzonych bloków i sama tablica BBT. To, ile bloków pamięci zostanie zarezerwowanych, zależy od tego, uszkodzenie ilu bloków dopuszcza producent. Jeżeli na przykład jest to 2% wszystkich, tyle samo bloków trzeba wyłączyć z normalnego użytkowania.
KODOWANIE KOREKCYJNE WYKRYWA BŁĘDY DANYCH
Przyczyny błędów danych mogą być różne, na przykład: zbyt duże napięcie przyłożone do bramki komórki pamięci (over programming), zakłócenie lub przerwanie procesu programowania, wyciek ładunku, jego przepływ między sąsiadującymi komórkami lub zjawisko charge trap, które zachodzi w czasie operacji kasowania oraz programowania pamięci. Błędów spowodowanych tym ostatnim nie można już naprawić. Pozostałe można natomiast skorygować w kolejnym cyklu programowania / kasowania.
Integralność danych poprawia się, stosując kodowanie korekcyjne ECC (Error Correction Code). Aby sprawdzić, czy dane zostały zapisane poprawnie, uzupełnia się je o nadmiarowe informacje. Po ich rozkodowaniu wiadomo, które bity danych są przekłamane. Kodowanie korekcyjne realizuje się programowo albo sprzętowo. W pierwszym przypadku specjalne oprogramowanie przetwarza dane, uzupełniając je o informacje nadmiarowe przed ich zapisaniem do pamięci. Wymaga to większej mocy obliczeniowej, ale z kolei nie są potrzebne dodatkowe układy elektroniczne.
Algorytmy korekcyjne dzieli się na dwie grupy: blokowe oraz splotowe. W obu k-bitowy ciąg wejściowy zostaje zakodowany w n-bitowy ciąg wyjściowy. Ten ostatni w wypadku kodowania splotowego jest zależny od wcześniej zakodowanych słów kodowych. W kodowaniu blokowym słowa kodowe nie są ze sobą powiązane. W pamięciach Flash najczęściej wykorzystywane są kody blokowe, zwłaszcza kody Hamminga, Reeda-Solomona oraz BCH.
|
PRZYKŁADY KODÓW KOREKCYJNYCH
Algorytm Hamminga jest najprostszy, a dzięki temu najłatwiejszy do zaimplementowania, zarówno sprzętowo, jak i programowo. Niestety jego możliwości w zakresie detekcji oraz korekcji błędów danych są ograniczone - jest on w stanie wykryć jedynie dwa błędne bity, a naprawić tylko jeden. Dlatego jest stosowany głównie w pamięciach NAND SLC. Rodzaj kodu Hamminga opisuje zależność: (2n-1, 2n-n-1), gdzie n - liczba bitów nadmiarowych, 2n-1 - rozmiar słowa kodowego, 2n-n-1 - liczba bitów informacyjnych. Najpopularniejsze z nich to (7, 4), w którym na 7-bitowe słowo kodowe składają się: 4 bity danych oraz 3 bity korekcyjne, (15, 11) oraz (31, 26).
Większa gęstość upakowania danych w pamięciach Flash MLC wymusza stosowanie w nich bardziej złożonych algorytmów ECC. Jest to zwykle jeden z dwóch algorytmów: ReedaSolomona lub BCH. Oba są skuteczniejsze niż kodowanie Hamminga, ponieważ wykrywają oraz naprawiają wiele błędów jednocześnie.
Aby zwiększyć wytrzymałość fizyczną, pamięci Flash umieszcza się w specjalnie wzmocnionych, najczęściej wykonanych z metalu obudowach, które zapewniają pyłoszczelność i wodoszczelność nośnika. Jako dodatkowe zabezpieczenie stosuje się też hermetyzację. W takim wypadku układy elektroniczne pamięci przed umieszczeniem w zewnętrznej obudowie zalewa się na przykład żywicą. Skuteczność tych zabezpieczeń trzeba przetestować.
PAMIĘCI WZMOCNIONE PRZECHODZĄ SPECJALNE TESTY
Ponieważ nośniki w wykonaniu specjalnym z reguły są dopuszczone do pracy w rozszerzonym zakresie temperatur, tzn. od -40°C do +85°C, i w szerokim zakresie wilgotności powietrza, tj. od kilku % do 95%, są one poddawane badaniom w takich warunkach w komorach klimatycznych. Tam też przez zmianę ciśnienia symuluje się warunki panujące na dużych wysokościach. Jest to wymagane w wersjach dla wojska.
W pomiarach wytrzymałości nośników na wibracje i udary wykorzystuje się specjalne stanowiska umożliwiające poddanie pamięci oddziaływaniom o różnej amplitudzie oraz częstotliwości. Oddzielne układy pomiarowe są również używane w testowaniu nośników pamięci pod kątem wytrzymałości na wyładowania elektrostatyczne, a także w sprawdzaniu ich wodoszczelności i pyłoszczelności.
W trakcie testów celowo wywołuje się też błędy zapisu, co ma na celu sprawdzenie mechanizmów ich detekcji i korekcji oraz okresowo odłącza się zasilanie, sprawdzając, jak taka sytuacja wpływa na spójność danych zapisanych w pamięci.
Procedury, jakich należy przestrzegać, przeprowadzając testy środowiskowe, w tym informacje o szybkości i przyroście zmiany danego czynnika, która pozwoli zasymulować warunki rzeczywiste, są opisywane w odpowiednich normach (opisano w ramce).
Monika Jaworowska