SK

Problémy SSD

TRIM, Wear levelling

Príkaz TRIM, ktorý funguje napr. v operačnom systéme Windows 7 a u SSD ktoré to budú tiež podporovať (po aktualizácii firmware), bude pri pokyne operačného systému o zmazanie dát tieto dáta skutočne mazať, a nie iba označovať za neplatné. V podstate tak prečíta do cache všetky dáta z bloku, vymaže tie neplatné a zapíše platné späť. Blok tak bude pripravený na priamy zápis, bez nutnosti vykonávať proces načítaj-uprav-zapíš pri pokyne na zápis dát.
Prečo k nemu dochádza si vysvetlíme na malom príklade.


Realizácia príkazu TRIM

Aj keď TRIM zmierňuje tento problém, nerieši ho úplne. Napríklad pri ukladaní zmien v dokumente bude stále nutné vykonať celý proces načítaj-uprav-zapíš.
Ak ste vlastníkom SSD, určite čo najskôr spravte upgrade na chystaný Windows 7 a sledujte či a kedy výrobca vášho SSD vydá aktualizáciu pre podporu príkazu TRIM.

Ďalší z problémov SSD je ich životnosť. Každá NAND pamäťová bunka má svoj životný cyklus, ktorý pozostáva z určitého počtu zápisov do nej, kým sa neznehodnotí do takej miery, že sa stane nefunkčnou. Tento problém tu vždy bol a vždy aj bude. Riešiť sa (zatiaľ) nedá nijak, dá sa jedine „obchádzať“ - predlžovať životnosť celého SSD – a to pomocou Wear Levelling-u.

Wear levelling je technika, ktorá po určitom čase presúva údaje z jednej pamäťovej bunky na ďalšiu. Ak určitá bunka obsahuje zapísané dáta s ktorými sa „nehýbe“ a do okolitých sa opakovane zapisuje, počet zápisov logicky stúpne u ostatných a u jednej s pevnými dátami ostáva konštantný. Aby sa tento počet vyrovnával, presunú sa dáta z menej používanej bunky na viac používanú – tej sa nateraz zastaví počet zápisov, zatiaľ čo pôvodná bunka sa začne využívať na nové prepisovanie. Ideálne by tak všetky bunky mali byť rovnako „staré“.

Takto sa záťaž prepisovania buniek rozloží postupne na celé pamäťové médium a nehrozí tak, že napríklad oblasť buniek na „začiatku“ SSD bude namáhaná prepismi viac ako zvyšok.
Pokiaľ napríklad klasické pevné disky HDD pri požiadavke z operačného systému na zápis na začiatok platne tieto dáta skutočne na začiatok aj zapisuje, a to aj opakovane a bez ovplyvnenia životnosti, u SSD to je práve naopak – dáta sa zapíšu vždy na iné miesto, aby sa „nevypaľovali“ stále tie isté bunky.

Jedným z „vedľajších účinkov“ Wear levelling-u je to, že okrem radiča nevie nikto, kde sa práve tie ktoré dáta nachádzajú. Zatiaľ čo na klasickom pevnom disku HDD vieme presne identifikovať umiestnenie určitých dát, u SSD sa vďaka Wear levelling-u postupne presúvajú.

Aj napriek použitiu wear levelling-u sa skôr či neskôr určité bunky stanú nefunkčnými. A keďže je u NAND čipov v SSD obmedzenie, že mazať/prepisovať sa dá iba celý, 512kB veľký blok, poškodením jednej aj 4kB veľkej stránky stratíme ihneď 512kB priestoru.
Počas „morálneho“ životného cyklu SSD tento jav možno nespozorujeme, keďže výrobcovia nechávajú určitú kapacitu skrytú ako záložnú práve pre tento prípad, neskôr by sa však objavilo postupné zmenšovanie kapacity.

Comments (19)
Snake
Päť hviezdičiek :) neni o čom :)
matelkoxxl
fakt vyborne citanie!pridavam sa ku snake-ovi 5* :-)
prepelica
jo vyborne citanicko...o tychto problemoch som inac vobec nevedel :)
misak007
uz som o tom cital davnejsie, no toto je len jeden problem s ktorym sa stretava SSD, je ich viac a vacsinu ak nie vsetky riesi az Win7.. no pravdou je, ze toto jeden z tych podstatnejsich
sedgar
tiež sa pripájam - konečne chápem v čom je problém :D. Viete niekto, prečo je tam podmienka mazania iba 512kB? mne práve táto hodnota nejde do hlavy... zvlášť, keď priamo SSD nevyrába len jeden výrobca! Aký problém by bol nastaviť mazanie tiež na 4kB? Alebo že by sa čakalo na umelú "novú" generáciu SSD?
baqq
mas to vysvetlene hned na zaciatku toho clanku...
Snake
nemusí to byť nutne 512KB, v dnešnej dobe je to skôr 2MiB+ ;)
sedgar
No ono to tam práve vysvetlené nieje. Je popísaná štruktúra SSD - 4kB stránky 512kB bloky, čítanie/zápis je možný po 4kB stránkach, mazanie po 512kB blokoch... Nieje však uvedený dôvod prečo je to tak.
Snake
nikto nevie (priznám sa že ani ja :) ) proste je to tak navrhnuté.
AmOK
5* a ked bude pokracovanie, tak urcite nebudem jediny, kto sa potesi. Len tak dalej. ;)
misak007
niesom si isty, len myslim ze tento problem pochadza z fyzikalnej podstaty. Konstrukcne maju tieto disky viacurovnove pamatove bunky teda MLC. Su sice pomalsie ako SLC. Ale vyrobcov momentalne zaujima vyssia kapacita na ukor rychlosti. Je to lacnejsie robit MLC. a aj vacsiu kapacitu pri rovnakej cene. pamatove chipy maju okrem riadiaceho tzv plavajuce hradlo, tym sa lisia od standardnych tranzistorov. tym ze jedna pamatova bunka si musi pamatat niekolko bitov (2,3,4). A v celej bunke sa neda proste len jeden prepisat, daju sa prepisat len vsetky naraz, resp vymazat. Z istej ovladatelnej roviny, teda 512kB sektor. Prve disky ktore vosli do predaja boli na urovni 256kB.. Cim viac urovni budu mat bunky MLC tym vyssia bude narocnost na radič a vyrovnavaciu pamat. A tu je riesenie. nevenovat sa tymto "ovladatelnym" sektorom ale vymakat radice a vyrovnavacie pamate. Cim budu tieto dva chipy rychlejsie tym sa zvysi aj rychlost disku. je to urcite lacnejsie a vlastne jedine mozne riesenie pokial chcete disk z MLC :). mozno sa raz budu vyrabat niejake "raptory" na baze SLC a to budu dela ale zase male kapacity a vacsie rozmery. Ale netreba amt strach ze urovne MLC cipov porastu do nekonecna, dalsia fyzika :) teraz si jedna bunka musi zapamatat vlastne 16 rozlicnych stavov teda je problem s prestnostou zapisovania dat. mozu sa rusit navzajom :) tak sa radsej venujte radicom a vyrovanavacim pamatiam. :)
sedgar
hmmm zaujímavé... to by ale znamenalo, že SLC tento problém nemajú? Neviem, myslím ale že je to problém spoločný pre všetky - SLC aj MLC. To čo spomínaš je množstvo bitov, ktoré je schopná uložiť jedna bunka... Niečo som našiel na wikine - flash memory block erasure - kde je len stručne poznamenané, že SSD pre zápis a čítanie využívajú random-access. Pre mazanie/prepis sa ale random-access nevyužíva... Takže drobnosť navyše ale "múdry" som stoho rovnako ;)
sedgar
Podľa wikiny tento príkaz okrem W7 obsahuje aj linux od jadra 2.6.28 (25.12.2008)
misak007
no, ked si bunka pamata viac udajov a chces nieco zmazat musis ju celu resetovat a nas5 zapisat data ktore tam boli a tie ktore chces pridat.. ak ma mlc viac levelov musis aj tak zmazat vsetky.. ak mas slc tak vzdy mazes len jeden level ktory ma... cize problem tam je ale v mensom rozsahu....
Snake
nie, SLC s MLC nema v tomto pripade s tym nic spolocne, mas cell, z toho mas wordline, a z toho mas blok, mozes mazat len bloky, ci uz je to MLC alebo SLC. Rozdiel je akurat, kolko page robi blok
misak007
okey, ale spomalenie dochadza vlastne na radici a cache, lebo bunky mlc maju radovo vyssiu kapacitu ako bunky slc.. cize radic musis preniest tie vacsie data a ulozit ich a nas5 zapisat. Zober si priklad ze mas 512kB blok z mlc ktory mazes, a teraz keby tie bunky boli slc nedosahovali by 512kB, mozno 128alebo menej.... a tym padom by sa proces zrychlil lebo netreba prenasat velky objem dat, cize sme o5 tam kde sme boli, pri radici a cache... cize mlc a slc sa moc nelisia, pracuju aj na rovnakom principe len mlc este samotna bunka ma vyssiu kapacitu a to ju spomaluje... ale ekonomicky sa viac oplati vyrabat...
Snake
Mišo, netrep :), tie bloky nemaju 512KB, maju 2MB+nejaké drobné. Rýchlosť v tomto prípade nemá s tým nič, lebo MLC majú takú, a SLC takú, takže to neporovnávajme
misak007
:D dobre...
C1cOo
fakt dobry clanok, cakam na dalsie podobne O:)
Add new comment
TOPlist