Przemysłowe pamięci Flash - jakość dzięki technologii

| Prezentacje firmowe Artykuły

Pamięci Flash, takie jak dyski SSD oraz karty pamięci CompactFlash i SD, stają się standardowym nośnikiem w zastosowaniach profesjonalnych. W odróżnieniu od wersji konsumenckich charakteryzują się dużą niezawodnością i wytrzymałością na trudne warunki pracy. By takie właściwości uzyskać, wdraża się w nich różne rozwiązania sprzętowe i programowe ograniczające wpływ czynników zewnętrznych na możliwość zapisu i odczytu danych oraz ich integralność. Jednym z nich jest umieszczenie kart pamięci i dysków SSD w metalowych hermetycznych obudowach.

Przemysłowe pamięci Flash - jakość dzięki technologii

Oprócz wzmocnienia konstrukcji stosuje się też kontrolery z algorytmami detekcji i korekcji błędów, mechanizmami zarządzania uszkodzonymi blokami pamięci i monitorowania parametrów karty, które umożliwiają m.in. określenie stopnia jej zużycia. Niektóre rozwiązania mają też funkcje odzyskiwania danych oraz detekcji przerwy w zasilaniu. Producenci takich pamięci implementują i wdrażają w nich wiele nierzadko unikalnych technologii odpowiedzialnych za jakość i niezawodność. Poniżej prezentujemy kilka rozwiązań tego typu wykorzystywanych w pamięciach firmy Innodisk.

iSLC

Rys. 1. Porównanie parametrów pamięci Flash SLC i MLC

Pamięci Flash dzieli się pod względem typu na SLC (Single-Level Cell) oraz MLC (Muli-Level Cell). W tych pierwszych w pojedynczej komórce można zapisać jednocześnie tylko jeden bit informacji, natomiast w pamięciach MLC - dwa lub więcej bitów danych. Dzięki temu w komórkach pamięci MLC przechować można więcej informacji niż w takiej samej liczbie komórek pamięci SLC, przez co w praktyce te pierwsze są tańsze.

Z tego również powodu są one wolniejsze, mniej niezawodne oraz mniej wytrzymałe (na przykład na wysokie temperatury), dlatego wykorzystywane są głównie w przenośnych urządzeniach elektroniki użytkowej, zwłaszcza tych, w których wymagana jest duża pojemność (rys. 1). Pamięci SLC są natomiast preferowane w przemyśle i innych zastosowaniach specjalistycznych.

Typowe parametry pamięci MLC to odczyt (dla całej strony) 75 µs, kasowanie 4 ms, trwałość 3000 cykli, a dla SLC czasy te wynoszą 35 µs, 0,7 ms i 100 tys. cykli. Większa zawodność komórek MLC przenosi się też na około 2-krotnie większą liczbę wymaganych dla nich danych nadmiarowych do korekcji błędów ECC.

Pamięci MLC są znacznie tańsze i dostępne w większych pojemnościach, stąd producenci wdrażają wiele technologii, które ograniczają opisane wady MLC. Jedną z nich jest hybrydowe rozwiązanie iSLC Innodiska.

Istota tego rozwiązania polega na rozbudowaniu funkcji oprogramowania, które konwertuje strukturę pamięci opartą na 2 bitach na komórkę 1-bitową (rys. 2). Mówiąc w uproszczeniu, używany jest tylko starszy bajt zapisywanych danych. Rezultatem jest pamięć o parametrach niezawodnościowych lokujących się pomiędzy MLC a SLC. Jej trwałość sięga 30000 cykli P/E (Program/Erase), a stopa błędów jest też znacząco, około dwukrotnie mniejsza (rys. 3).

Wear Leveling

Rys. 2. Trwałość komórek iSLC na tle innych rozwiązań

Z uwagi na technologię produkcji pamięci Flash charakteryzują się ograniczoną liczbą cyklów zapisu danych, po których konstrukcja komórki ulega uszkodzeniu. W typowym przypadku można założyć, że dla pamięci MLC takich cykli jest 3000 a dla SLC 100 000.

Dlatego w większości kart pamięci i dysków Flash wykorzystuje się mechanizm optymalizacji zużycia pamięci - tzw. wear leveling, który zapobiega jej przedwczesnemu zużywaniu się. Uzyskuje się to, zapewniając równomierne rozmieszczanie danych w poszczególnych blokach pamięci. Dzięki temu nie zachodzi zbyt częste zapisywanie i czyszczenie tych samych bloków, co nie jest pożądane ze względu na ograniczoną liczbę cykli programowania i kasowania.

Innodisk w swoich produktach stosuje kombinację dynamicznego i statycznego mechanizmu wear leveling. Pierwsza metoda polega na zapisywaniu nowych informacji do tych niezapisanych bloków pamięci, które były dotychczas najrzadziej używane. Dynamiczny wear leveling jest wykorzystywany tylko do zarządzania zapisem danych, które są często aktualizowane. Stąd w przypadku pamięci, w której 25% stanowią dane dynamiczne, a resztę dane statyczne (rzadko zmieniane, chociaż mogą być odczytywane wielokrotnie), zaledwie 1/4 wszystkich bloków jest używana z uwzględnieniem stopnia ich zużycia.

Statyczny mechanizm wear leveling obejmuje natomiast wszystkie dane zapisywane w pamięci Flash. W tym wypadku również najpierw są wyszukiwane najmniej zużyte bloki pamięci. Jeżeli są one aktualnie puste, to do nich zapisywane są nowe informacje. Jeżeli jednak akurat w tych blokach przechowywane są dane statyczne, kopiuje się je do innych, bardziej zużytych miejsc w pamięci.

Metoda statyczna jest pod względem wydłużenia żywotności pamięci Flash rozwiązaniem efektywniejszym niż dynamiczny wear leveling. Jednocześnie, ponieważ wymaga przenoszenia danych statycznych, jest bardziej skomplikowana. W efekcie w większym stopniu obciąża kontroler, co skutkuje większym poborem prądu i zmniejszeniem wydajności operacji zapisu.

W rozwiązaniach Innodiska kontroler pozwala na zaprogramowanie (za pomocą pliku INI) maksymalnej liczby kasowań bloku, po przekroczeniu których kontroler przesuwa dane do innych obszarów. W ten sposób użytkownik może wpływać na proporcje statycznego i dynamicznego levellingu.

Dodatkowo podczas odczytu danych kontroler wykrywa przekłamania danych powyżej bezpiecznego progu korekcji, koryguje je, wykorzystując standardowe mechanizmy ECC i jeśli taki fakt ma miejsce, dane są reprogramowane w innym miejscu dysku. Z jednej strony zapobiega to trwałym błędom, z drugiej likwiduje dokuczliwe opóźnienia powstające wówczas, gdy sektory dysku są wielokrotnie odczytywane przy istniejących błędach.

iCell

Rys. 3. Schemat konwersji struktury MLC do SLC wykorzystywana w iSLC

Dyski SSD wykorzystują buforową pamięć DRAM o niewielkiej pojemności, aby poprawić wydajność zapisu danych, poprzez szybsze "uwolnienie" hosta komputera, który może przejść do innych zadań po wpisaniu danych do szybkiej pamięci DRAM. Niestety ta korzystna funkcja staje się wadą w momencie awarii zasilania.

Stąd Innodisk montuje w układach dysków dodatkowe kondensatory podtrzymujące zasilanie. Ich ładunek wystarcza do zapisu danych zawartych w buforowej pamięci DRAM, co zapobiega utracie danych. Taka utrata jest szczególnie dokuczliwa, gdy błąd zapisu dotyczy tablicy alokacji plików (NTFS lub FAT).

Typowo wielkość montowanej pamięci DRAM w dysku SSD wynosi 10-24 bloków po 128 KB. Jak widać, jest to dość dużo i utrata zawartości bufora mogłaby mieć fatalne konsekwencje dla aplikacji. W rozwiązaniu firmy Innodisk zapis treści z bufora realizowany jest z szybkością 6 MB/s i trwa maksymalnie 60 ms.

Efektywne działanie tego mechanizmu podtrzymania zasilania wymaga też wsparcia ze strony układu elektronicznego dysku, który musi powiadomić kontroler jak najszybciej o awarii zasilania. Ponieważ nigdy nie ma pewności, że cały bufor zawsze zostanie zapisany, wymagane jest także zaimplementowanie algorytmów wykrywania sytuacji niepełnego zapisu, ochrony oraz odzyskiwania danych.

TRIM i Garbage collection

Garbage collection (zarządzanie niepotrzebnymi danymi) to technologia stosowana do utrzymania spójności danych i wykonywania rutynowego oczyszczania SSD. Wiadomo, że z czasem pewne bloki pamięci Flash na skutek wielokrotnego zapisu i kasowania stają się bezużyteczne i wówczas lepiej, aby kontroler nie przenosił ich po dysku w inne miejsca, ale po prostu omijał, bo tak jest szybciej.

Niemniej usuwanie danych w komputerach typowo sprowadza się do oznaczenia bloków danych jako nieużywanych w samym systemie plików. Z tego powodu usuwanie nie powoduje fizycznego zapisu na dysku, w przeciwieństwie np. do nadpisania. Ponieważ ani HDD, ani SSD dostępu do systemu plików nie mają, nie są one w stanie ocenić, które z ich sektorów/stron są wolne do użycia.

Przy zapisie danych na klasycznym HDD, dla dysku nie ma większego znaczenia, czy dany sektor ma zapisaną w nim informacje. Proces zapisu w czystym sektorze nie różni się od tego w już zapisanym. Jednak dysk SSD, by przeprowadzić operację zapisu, musi wiedzieć, czy dana strona jest czysta. Jeśli tak nie jest, to procedura zwykłego zapisu zamienia się w procedurę odczytu-wymazywania-modyfikowania-zapisu. Procedura ta w SSD wiąże się ze sporym narzutem.

Tak dużym, że przy zapisie wydajność dysku może spaść nawet o ponad połowę, bo kasowanie danych dotyczy całych bloków składających się z wielu sektorów. Stąd nierzadko zapisanie 1 KB danych na dysku dużej pojemności wiąże się z przepisywaniem kilku MB. Ten problem rozwiązuje się za pomocą TRIM-u, niemniej skuteczne działanie tego mechanizmu wymaga wsparcia ze strony systemu operacyjnego, wiedząc, że współpracuje z dyskiem SSD, przy usuwaniu danych, wysyła także komendę z informacją, które strony są już puste. Dysk SSD może więc przeprowadzić operacje czyszczenia przy usuwaniu.

Niemniej równolegle producenci implementują mechanizmy określane jako Garbage collection (zarządzanie niepotrzebnymi danymi), które pozwalają na oznaczanie i przeskakiwanie niewłaściwych danych zamiast ich przenoszenia. Dobry system Garbage collection jest w stanie praktycznie zastąpić działanie TRIM-u, co jest ważne, bo działanie tego mechanizmu nie wymaga wsparcia ze strony systemu operacyjnego.

Obsługa 7. pinu w złączu

Rys. 4. Zasilanie dysku Flash bez dodatkowego kabla jest wygodne i charakteryzuje się dużą niezawodnością

Standard interfejsu SATA wykorzystuje 7-pinowe gniazda i wtyki, w których cztery końcówki wykorzystane są do transmisji danych, a pozostałe trzy linie połączone są z masą i pełnią funkcję ekranu. Powoduje to, że bez względu na pobieraną moc pamięci masowe muszą być zasilane oddzielnym kablem.

Jest to uciążliwe zwłaszcza w przypadku małych dysków typu DOM, a dodatkowo kabel i dodatkowe złącza obniżają niezawodność urządzenia. Stąd firma Innodisk opracowała metodę zasilania dysku za pomocą pinu numer 7, na który podawane jest zasilanie zamiast masy. Pozwala to podłączyć dysk całkowicie bez kabli, tak jak pendrive do gniazda USB (rys. 4).

Wbudowany dodatkowy układ elektroniczny wykrywa na dostosowanej płycie głównej możliwość takiego zasilania i zasila dysk lub pozostawia potencjał masy, aby zachować wsteczną kompatybilność. Dzięki temu można uniknąć kabli i poprawić niezawodność systemu.

SE Spezial-Electronic Polska
www.spezial.pl