Karty pamięci oraz dyski SSD w przemyśle są używane, jeżeli trzeba wyeliminować inne nośniki, które mogłyby się uszkodzić w trudnych warunkach, na przykład w obrabiarkach, komputerach przemysłowych, podręcznych rejestratorach i czytnikach kodów kreskowych. Inne zastosowanie to sprzęty, na przykład pomiarowe, do których dostęp jest utrudniony i kluczowe urządzenia, na przykład sieciowe albo w systemie sterowania. W obu przypadkach ważna jest niezawodność pamięci.
Poza tym z nośników półprzewodnikowych korzysta się w zastosowaniach specjalistycznych, w medycynie, wojsku, lotnictwie i handlu. Przykłady to: przenośne rejestratory stanu pacjentów, systemy radarowe i sprzęt do zdalnych pomiarów, czołgi, helikoptery, pojazdy bezzałogowe, terminale POS oraz automaty z różnymi towarami.
Wszędzie tam nośniki danych narażone są na m.in. ekstremalne temperatury, wibracje, wilgoć, zaburzenia elektromagnetyczne i zapylenie. Dlatego w tych urządzeniach nie można używać "zwykłych" pamięci Flash, z jakich korzystamy na co dzień. Alternatywą są te wzmacniane (industrial grade). Wymaganą wytrzymałość i niezawodność uzyskuje się w nich zarówno konstrukcyjnie, jak i programowo.
BUDOWA I KLASYFIKACJA PAMIĘCI
Pamięci Flash zbudowane są z komórek, z których każda składa się z dwóch bramek: pływającej i sterującej. W tej pierwszej gromadzony jest ładunek. Bramka sterująca odczytuje go jako wartość logiczną 0 lub 1. Może też ona kasować i zapisywać zawartość bramki pływającej (rys. 1).
Ze względu na rodzaj bramki logicznej pamięci Flash dzieli się na: NOR i NAND. Zapis i odczyt danych w tych drugich jest szybszy. Dlatego pamięci typu NOR są używane przede wszystkim do przechowywania informacji rzadko aktualizowanych, na przykład jako odpowiednik pamięci ROM.
Pamięci NAND mają też o około 60% mniejsze komórki niż te typu NOR, dzięki czemu cechuje je większa gęstość upakowania danych. Są zatem tańsze. Dostęp do pierwszych jest sekwencyjny, a do pamięci NOR - swobodny.
Pamięci NAND dzieli się ponadto ze względu na liczbę bitów, którą można zapisać w pojedynczej komórce na: SLC (Single-Level Cell) i MLC (Multi-Level Cell). W pierwszych jednocześnie jest to tylko jeden bit informacji, natomiast w tych typu MLC - dwa, a nawet więcej. Wpływa to na ich właściwości, z powodu których w przemyśle używane są (prawie) wyłącznie pamięci SLC.
JEŚLI FLASH, TO TYLKO TYPU SLC
![](/i/images/0/3/5/dz0yMDAmaD0xNTM=_src_136035-24770flash_rys.jpg)
Rys. 2. Aby zapisać 2 bity w jednej komórce MLC, trzeba określić 4 poziomy napięć progowych a). W SLC poziom ten jest tylko jeden b)
Aby na przykład zapisać dwa bity w jednej komórce MLC, trzeba określić cztery poziomy napięć progowych odpowiadające stanom 00, 01, 10 i 11 (rys. 2a). W SLC jest to tylko jeden poziom dla stanów 0 i 1 (rys. 2b). Dlatego, chociaż dzięki większej gęstości upakowania danych pierwsze są znacznie tańsze, jednocześnie, z powodu większej złożoności algorytmów odczytu i zapisu, są wolniejsze.
Rozróżnienie poszczególnych poziomów w pamięciach MLC wymaga też większej precyzji, co sprawia, że łatwiej w nich, w obecności zaburzeń lub ekstremalnych temperatur, o błędy danych niż w nośnikach SLC. Ponadto czas przechowywania informacji w tych ostatnich jest liczony w dziesiątkach lat, natomiast w pamięciach MLC nie przekracza kilku.
Każdą operację zapisu nowych danych poprzedza skasowanie dotychczasowej zawartości komórek. Wpływa to na ich właściwości fizyczne, powodując stopniowe zużywanie się. W cienkiej warstwie izolatora oddzielającej bramkę pływającą od bramki sterującej powstają defekty. Gromadzą się w nich ładunki. Łatwiej również te ostatnie mogą wówczas przepływać do bramki albo odpływać z bramki pływającej.
Dlatego liczba cykli programowania / kasowania pamięci jest ograniczona. Po jej przekroczeniu pewny i bezbłędny zapis i odczyt danych nie jest już gwarantowany. Zwykle żywotność pamięci typu SLC to 100 tys. cykli programowania / kasowania, a pamięci typu MLC - 10 tys. takich operacji.
|
RÓWNOWAŻENIE ZUŻYCIA WYDŁUŻA ŻYWOTNOŚĆ PAMIĘCI
Żywotność pamięci można wydłużyć przez optymalizację jej zużycia (wear leveling). Polega to na monitorowaniu częstości użycia poszczególnych bloków pamięci i równomiernym rozmieszczaniu w nich danych tak, aby żaden z bloków nie był czyszczony ani zapisywany częściej niż pozostałe. W efekcie wszystkie bloki pamięci są chociaż raz zapisane, zanim operacja ta zostanie powtórzona. Maksymalna liczba komórek pamięci jest wtedy zużyta minimalnie, a żywotność jest najdłuższa z możliwych.
Wyjaśnia to przykład pamięci o żywotności 10 tys. cykli programowania / kasowania złożonej z 4096 bloków, w której zapisane są trzy pliki. Każdy z nich zajmuje 50 bloków pamięci. Co 10 minut dane zapisane w jednym pliku są aktualizowane. Przez godzinę zawartość pamięci jest więc zmieniana sześciokrotnie.
Zakładając, że dane będą stale wprowadzane do tych samych 200 bloków pamięci będzie się ona nadawała do użytku krócej niż rok: (10000·200) / (50·6·24) = 278. Jeśli do zapisu takiej samej ilości informacji z tą samą częstością wykorzystać wszystkie bloki pamięci, można by natomiast korzystać z niej ponad 15 lat: (10000·4096) / (50·6·24) = 5689. Wear leveling realizuje się dynamicznie albo statycznie. Pierwsza metoda polega na optymalizacji zapisu wyłącznie danych dynamicznych, czyli tych, które są często zmieniane.
Organizacja pamięci FlashPodstawowe jednostki organizacyjne w strukturze pamięci Flash to bloki oraz strony. Te pierwsze są podstawową jednostką w operacji kasowania danych, a strony - w procesie ich zapisu. Wszystkie bloki składają się z takiej samej oraz stałej liczby stron. W tych ostatnich można z kolei wyróżnić dwa obszary. W pierwszym przechowywane są dane bieżące.W drugiej części (spare area), która jest niewidoczna dla użytkowników, system zarządzający zasobami pamięci zapisuje informacje pomocnicze. Pojemność tego obszaru jest odpowiednio mniejsza w stosunku do pojemności całej strony. Przykładowo w wypadku stron o pojemności 512 bajtów oraz 2048 bajtów spare area zajmuje zwykle zaledwie odpowiednio16 bajtów oraz 64 bajty. |
RÓWNOWAŻENIE DYNAMICZNE KONTRA STATYCZNE
Zapisuje się je do tych bloków, których dotychczas używano najrzadziej. Przyjmijmy, że we wcześniejszym przykładzie 25% pamięci zajmują dane dynamiczne, a 75% dane statyczne, tj. zmieniane bardzo rzadko. Stosując wear leveling dynamiczny, żywotność tego nośnika można wydłużyć z mniej niż roku do prawie 4 lat: (10000·1024) / (50·6·24) = 1422. Ponieważ równoważenie dynamiczne realizuje się dość łatwo, stosuje się go w urządzeniach tańszych, których czas użytkowania z założenia jest krótki. Przykład to pamięci USB.
Druga metoda polega na zarządzaniu zapisem danych dynamicznych i statycznych. Monitorowany jest w niej stopień zużycia wszystkich bloków pamięci. Jeżeli te, z których dotychczas korzystano najrzadziej, są aktualnie puste, zapisuje się do nich nowe informacje. Gdy jednak znajdują się już w nich dane statyczne, te ostatnie przenosi się do bloków bardziej zużytych.
Z powodu złożoności technika ta bardziej obciąża kontroler pamięci i spowalnia zapis. W zamian zapewnia jednak maksymalną możliwą żywotność nośnika - w przykładzie 15 lat. Wear leveling dynamiczny jest stosowany w droższych nośnikach danych, m.in. w dyskach SSD.
DETEKCJA USZKODZONYCH OBSZARÓW PAMIĘCI
Niektóre bloki pamięci ulegają uszkodzeniu w czasie produkcji. Wykrywa się je w czasie testów, które polegają na powtórzeniu kilku cykli programowania / kasowania. Następnie takie obszary pamięci (bad blocks) są oznaczane przez zapisanie w spare area pierwszych stron uszkodzonego bloku odpowiedniej informacji.
Kolejne bloki uszkadzają się też w trakcie użytkowania pamięci z różnych przyczyn. Na przykład pomimo stosowania mechanizmu równoważenia zużycia pewna nierównomierność rozmieszczenia danych jest nieunikniona. Niektóre bloki zużyją się więc wcześniej niż pozostałe. Jeżeli liczba bad blocks przekroczy określoną przez producenta wartość, zwykle kilka %, całą pamięć uznaje się za zepsutą.
Uszkodzone bloki nie wpływają na działanie pozostałych, ponieważ jednostki te w pamięci są od siebie odizolowane. Ważne jednak, by system zarządzania zasobami pamięci zidentyfikował te jej obszary, z których nie może korzystać jeszcze przed podjęciem jakiejkolwiek próby zapisu danych. Inaczej informacje w spare area zostałyby skasowane. Dlatego niezbędny jest system zarządzania uszkodzonymi blokami (Bad Block Management, BBM).
Przykłady produktów
Przemysłowa karta CF 1GB, UDMA 4: pojemność: 32 MB...8 GB, kompatybilny z 44pinowym interfejsem IDE (ATA), wbudowana funkcja ECC, temperatura pracy: -10°C... +70°C, wysoka przepustowość do 22 MB/s, ultra DMA, true IDE Mode jako dysk twardy.
|