Solid State Drive

Z Thomas-Krenn-Wiki
Przejdź do nawigacji Przejdź do wyszukiwania

Solid-State Drive (SSD) tak jak twarde dyski, jest urządzeniem pamięci masowej. W przeciwieństwie do dysku HDD nie posiada ruchomych części. Dane są zapisywane na chipach pamięci flash (SLC lub MLC). Artykuł ten zawiera informacje jak funkcjonują dyski SSD i jakie mechanizmy mają wpływ na ich wydajność I/O.

Artykuł "Frische Chips" i "Schnelligkeit ist keine Hexerei" z czasopisma ADMIN 02 i 03/2011 pokazuje jak funkcjonują dyski SSD i może zostać osiągnięta ich optymalna wydajność.

Budowa dysku SSD

Dysk SSD składa się z kontrolera, chipów pamięci flash (co najmniej 10 szt.) i częściowo z bufora DRAM (Cache). Kontroler może równolegle komunikować z chipami przez co możliwe jest pomnożenie transferu w porównaniu z pendrive'm, który posiada tylko jeden chip.

Komórki pamięci

W zależności od typu każda komórka pamięci może zapisać od jeden po kilka bitów:

  • SLC (Single Level Cell) zapisuje 1 bit w jednej komórce
  • MLC (Multi Level Cell) zapisuje 2 bity w jednej komórce
  • TLC (Triple Level Cell) zapisuje 3 bity w jednej komórce: nie są one jednak przeznaczone dla dysków SSD, a raczej do tanich pendrive'ów lub kart SD. Pojedynczy 8GB TLC-Flash od Intela/Microna w procesie technologicznym 25nm o powierzchni 131mm² jest o 20% mniejszy od 8GB MLC-Flash tych wykonawców.[1] Micron montuje te 8GB w TSOP (Thin small-outline package), oferując w ten sposób 64GB pojemności.[2]

Page

Komórki pamięci łączone są w jedną stronę (page). Jedna strona posiada z reguły wielkość 4 Kibibyte (KiB) (= 4.096 bytes). W nadchodzących chipach flash 25nm Intel/Micron strona ma wielkość 8 KiB.[3]

Bloki

Strony są łączone w bloki. Aktualnie na jeden blok składa się 128 stron (pojemność bloku 512 KiB = 524.288 bytes), w nadchodzących chipach 25nm (Intel/Micron) jeden blok tworzy 256 stron, każda o wielkości 8 KiB, co daje blok o pojemności 2 MiB.[3] Blok jest najmniejszą jednostką, która może zostać skasowana. Wprawdzie poszczególne strony mogą zostać odczytane lub zapisane, skasowany natomiast naraz może zostać jedynie blok (128 lub 256 stron).[4]

Plane, die, package

Na tym die firm Intel/Micron można dobrze rozpoznać 4 plane'y. W wysokiej rozdzielczości widoczne są nawet poszczególne bloki.

Bloki są połączone w plane (np. 1 plane = 1.024 bloków = 512 MiB. Kilka plane'ów jest na jednym die. Kilka die'ów tworzy TSOP (Thin small-outline package).[4]

Bufor DRAM (Cache)

Niektóre dyski SSD posiadają bufor DRAM, w celu przyspieszenia operacji zapisu lub wew. zadań kontrolera.[5] W celu zabezpieczenia zawartości cache'a podczas awarii zasilania posiadają niektóre nowe dyski SSD zintegrowany kondensator, który ma umożliwić zapis danych z cache'a w pamięci flash.[6]

Firma Microsoft opublikowała odnośnie cache'a następujące wskazówki:[7]

Does Write Caching make sense on SSDs and does Windows 7 do anything special if an SSD supports write caching?
Some SSD manufacturers including RAM in their devices for more than just their control logic; they are mimicking the behavior of traditional disks by caching writes, and possibly reads. For devices that do cache writes in volatile memory, Windows 7 expects flush commands and write-ordering to be preserved to at least the same degree as traditional rotating disks. Additionally, Windows 7 expects user settings that disable write caching to be honored by write caching SSDs just as they are on traditional disks.

Proces technologiczny

Razem z ciągłym rozwojem technologii flash jest zmniejszany proces technologiczny. Poniższa tabela pokazuje przykłady dysków SSD razem z proces technologiczny chipów flash, które zostały w nich wykorzystane.

Rok / kw. Proces technologiczny SSD
2008 kw. 4 50nm (SLC) Dyski SSD Intel X25-E
2009 kw. 3 34nm (MLC) Dyski SSD Intel X25-M G2 Postville
2011 kw. 1 34nm (MLC) Dyski SSD Intel serii 510
2011 kw. 1 25nm (MLC) Dyski SSD Intel serii 320
2012 kw. 1 25nm (MLC) Dyski SSD Intel serii 520
2012 kw. 4 25nm (MLC) Dyski SSD Intel serii DC S3700

Zapis

Aby poszczególne strony bloku mogły zostać zapisane musi najpierw zostać skasowany kompletny blok. W nowych dyskach SSD wszystkie bloki są już usunięte. W miarę zapełnienia dysku SSD może się zdarzyć, że kontroler dysku SSD musi odczytać cały blok o wielkości do 2MB, pomimo, że tylko nieliczne byte'y zostały zmienione (Read-Modify-Write).[8][9]

Fakt ten, w przypadku pełniejszych dysków, może prowadzić do niższej prędkości lub większego opóźnienia zapisu. Poprzez bufor DRAM i NCQ jest to łagodzone. [10] ATA TRIM zapobiega dalszej fizycznej obecności danych, które zostały usunięte z systemu plików (gdyż w systemie plików został jedynie usunięty Inode). Jeżeli wszystkie dane jednego bloku są stare, to kontroler dysku SSD może go od razu skasować i nie musi przeprowadzać dłuższego Read-Modify-Write. Również Garbage Collection dostarcza ciągle w tle skasowane bloki.

ATA TRIM

Przez ATA Trim system operacyjny informuje dysk SSD, który obszar danych nie jest już potrzebny i może być postrzegany jako skasowany.

Garbage Collection

Wielu producentów dysków SSD zaimplementowało w kontrolerach dysków funkcję Garbage Collection. W czasie bez I/O kontroler łączy częściowo zapisane bloki w całe bloki. Następnie kasuje opróżnione bloki.[11][12]

Wear Leveling

Komórki flash mogą być zapisywane tylko przez określoną ilość razy i w zależności od typu tolerowanych jest między 10.000 a 100.000 cykli kasowania. Kasowanie na poziomie bloku (które konieczne jest do ponownego zapisu) prowadzi do zużycia (to wear out). Wear leveling ma to zużycie możliwie równomiernie podzielić na wszystkie komórki dysku SSD, w celu wydłużenia jego żywotności.

Wear Leveling wykorzystuje tu tabele mapowania logicznych adresów systemu operacyjnego do adresów na dysku SSD. Jeśli system operacyjny ciągle zmieniałby dane na określonych logicznych adresach, to bez Wear Leveling te bloki byłyby szybciej uszkodzone niż pozostałe. Przez Wear Leveling kontroler dysku SSD zapisuje zmienione dane (które znajdują się pod tym samym logicznym adresem systemu operacyjnego) zawsze w innych fizycznych blokach dysku SSD. Kontroler zawsze aktualizuje przy tym tabele mapowania.

Wear Leveling jest podzielony na :[13]

  • dynamiczny Wear Leveling (dzieli tylko dynamiczne dane, a więc te które się zmieniają)
  • statyczny Wear Leveling (dzieli też statyczne dane do innych bloków - wymaga to wyższej wydajności, ale zapobiega tylko jednokrotnemu zapisowi komórek podczas całego okresu działania dysku SSD - żywotność dysku SSD jest w ten sposób dłuższa niż w przypadku dynamicznego Wear Leveling)

Write Amplification

Write Aplification określa stosunek danych, które mają być zapisane do faktycznie zapisywanych. [14]

Spare Area

Duża spare area zwiększa wydajność i żywotność dysku SSD (Źródło zdjęć: Intel)[15]

Dyski SSD posiadają tak zwaną spare area - obszar, który dla systemu operacyjnego nie jest bezpośrednio widoczny. Obszar ten wykorzystywany jest przez SSD do:[16]

  • Read-Modify-Write
  • Wear Leveling i
  • Bad Block Replacement

Zazwyczaj wielkość spare area to około 7%, w dyskach SSD klasy enterprise również więcej.[17] Powierzchnia ta może zostać jeszcze zwiększona (Over-Provisioning). Jeżeli dysk był używany to powinien zostać najpierw skasowany poprzez Secure Erase (ATA8-ACS SECURITY ERASE UNIT)[18] (i utworzony backup danych). Spare area może zostać następnie zwiększona poprzez poniższe możliwości, zapewniając więcej nieużywanych bloków, które mogą jak domyślna spare area być wykorzystywane przez Read-Modify-Write, Wear Leveling i Bad Block Replacement.

Zwiększenie Spare Area:

  • przez pozostawienie niepartycjonowanego obszaru. Utworzenie na dysku o pojemności 160 GB partycji o wielkości 144GB.
  • przez pozostawienie niewykorzystywanego obszaru podczas pracy z kontrolerem RAID.
  • przez ATA ATA ATA8-ACS SET MAX ADDRESS (Host Protected Area feature set). W Linuksie może zostać wykorzystany do tego hdparm -N (vide SSD overprovisioning z hdparm).[19] Domyślnie HPA nie jest aktywne:
root@ubuntu-10-10:~# hdparm -N /dev/sda

/dev/sda:
 max sectors   = 312581808/312581808, HPA is disabled
root@ubuntu-10-10:~# 

Poprzez większą spare area może zostać wydłużona żywotność dysku SSD od 3,5 raza do nawet 5 razy.[20] Maks. 27% powierzchni spare area wydaje się sensownym, w innym przypadku może dojść do dimishing returns.[21][22] X25-E 64GB firmy Intel wykorzystuje 27% spare area. Przez tą wielkość spare area zwiększa się również wydajność IOPS.[23]

Secure Erase

W przypadku używanych dysków SSD, które maja być wykorzystywane w nowych zadaniach zaleca się przeprowadzenie, zamiast normalnego formatowania, procedurę zwaną Secure Erase. Kontroler dydku kasuje przy tym wszystkie bloki, przez co SSD może być znowu wykorzystywane z pełną wydajnością.

Jeżeli używany dysk SSD jest ponownie formatowany (np. z NTFS w systemie Windows 7, Ext4 od mke2fs 1.41.10 lub XFS od xfsprogs 3.1.0) to Secure Erase nie jest już konieczny. Procedura formatowania przeprowadza ATA Trim na niewykorzystywanych obszarach, w ten sposób dysk SSD może ponownie pracować z optymalną wydajnością.

Uwaga: Secure Erase usuwa nieodwracalnie wszystkie dane na dysku.

Dalsze informacje odnośnie procedury Secure Erase w Linuksie znajdują się w artykule SSD Secure Erase.

Trwałość

JEDEC uchwalił dwa standardy jednolitego testowania dysków SSD:[24]

Wersje specjalne

Kompresja danych

Kontrolery dysków SSD Sandforce wykorzystują funkcje zwaną Durawrite, która ma ograniczyć ilość zapisów.[25][26] W teście wydajności istotnym może być czy testowane jest z danymi zerowymi lub przypadkowymi (vide Fio#zero_buffers).

Systemy plików

Niektóre systemy plików zawierają specjalne dostosowania dla dysków SSD, np. btrfs.

Odnośniki

  1. Intel, Micron First to Sample 3-Bit-Per-Cell NAND Flash Memory on Industry-Leading 25-Nanometer Silicon Process Technology (Pressemitteilung)
  2. 25nm Triple-Level Cell NAND (YouTube)
  3. 3,0 3,1 Intel & Micron Announce 25nm NAND Flash Production, SSDs to get Bigger/Cheaper in Q4 (AnandTech)
  4. 4,0 4,1 http://www.anandtech.com/show/2738/5
  5. http://www.intel.com/support/ssdc/hpssd/sb/CS-029623.htm#9
  6. SF-1500 SSD Controller (Power Failure Protection: Super-capacitor circuit)
  7. http://blogs.msdn.com/b/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx
  8. http://en.wikipedia.org/wiki/Write_amplification#Basic_SSD_operation
  9. http://www.anandtech.com/show/2738/8
  10. http://www.heise.de/newsticker/meldung/IDF-Schnelle-SSDs-Update-197185.html
  11. http://de.wikipedia.org/wiki/Solid_State_Drive#Ma.C3.9Fnahmen
  12. http://en.wikipedia.org/wiki/Write_amplification#Garbage_collection
  13. http://en.wikipedia.org/wiki/Wear_leveling
  14. http://en.wikipedia.org/wiki/Write_amplification
  15. Over-provisioning an Intel SSD (Intel)
  16. The Impact of Spare Area on SandForce, More Capacity At No Performance Loss? akapit: When Does Spare Area Matter? (AnandTech)
  17. http://www.anandtech.com/show/2829/7
  18. https://ata.wiki.kernel.org/index.php/ATA_Secure_Erase
  19. hdparm Manpage (Ubuntu 10.04 LTS)
  20. Intel High Performance SATA Solid-State Drive: Over-provisioning an Intel SSD
  21. Enterprise Data Integrity and Increasing the Endurance of Your Solid-State Drive strona 10 (IDF 2009)
  22. Using MLC NAND in Datacenters (SNIA)
  23. http://intelstudios.edgesuite.net/idf/2009/sf/aep/IDF_2009_MEMS002/orig_Slide45_1.jpg
  24. Standardy określania trwałości dysków SSD zostały opublikowane (j. niemicki) (heise.de)
  25. http://www.sandforce.com/index.php?id=144
  26. Zellkulturen: Solid-State Disks bis 256 GByte (c't 12/2010, strona 118)

Dalsze informacje

Powiązane artykuły

Dyski SSD M.2 i mSATA w serwerach Thomas-Krenn
Optymalizacja systemu Windows na dysku SSD
SSD overprovisioning z hdparm