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.
Wiesław WilkWilk Elektronik S.A.
Flash w ciągu ostatniej dekady z niszowej i drogiej technologii stały się czymś, bez czego współczesny świat nie mógłby istnieć. Pamięci te używane są wszędzie - począwszy od dysków SSD, poprzez karty do różnych aplikacji, a kończąc na lodówkach, mikofalówkach, zabawkach i zegarkach. Dziś większość z nas w sposób bierny czerpie korzyści z tego wynalazku. Nie można sobie przecież wyobrazić domu bez telewizora, komputera czy też dziecięcej zabawki wydającej dźwięk. Rozwój tego produktu wpływa również na inne grupy urządzeń. Jak bowiem przykładowo wyglądałby iPad z... dyskiem HDD w środku?
Wraz z rozwojem technologii Flash zmienił się również sposób wykonania pamięci - zarówno ich wielkości wyrażonej w nanometrach, jak też "upakowania danych" mającego odzwierciedlenie w typie - SLC, MLC czy TLC. Następująca miniaturyzacja niesie ze sobą jednak pewne ograniczenia, jak chociażby spadek odporności na ekstremalne temperatury, na które pamięci Flash są coraz częściej narażone. Niezaprzeczalną jednak zaletą postępu jest spadek cen oraz wzrost dostępnych pojemności.
Według specjalistów, przyszłość Flash wcale nie jest tak odległa, jak mogłoby nam się to wydawać. Już wkrótce pojawią się pamięci wykonane w technologii 13/11 nm - dla porównania obecnie produkowane oparte są na technologii produkcji 19/17 nm. Poszukiwane są też nowe rozwiązania pozwalające na doskonaleniu procesu produkcji, obniżeniu kosztu przy jednoczesnym wzroście dostępnych pojemności. Już dziś z sukcesem wdrażana jest technologia 3D umożliwiająca na zwiększanie pojemności produkowanego komponentu Flash. |
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