Objavljeno: 24.9.2013 | Avtor: Miran Varga | Monitor Oktober 2013 | Teme: ssd

Blisk v škatlici

Pogoni SSD se zdijo razmeroma preproste naprave. Majhno ohišje namreč gosti tiskovino, na kateri je poleg pomnilniškega krmilnika nekaj pomnilniških čipov in napajalni sklop s kontakti. Zakaj so torej v praksi med pogoni SSD tolikšne razlike – tako zmogljivostne kot cenovne in vzdržljivostne? Poglobili smo se v zgradbo pogonov SSD in se dokopali do zanimivih ugotovitev.

Pogoni SSD so sprožili pravo revolucijo v svetu namiznega računalništva. Ne le, da so znatno hitrejši od diskov z vrtečimi se magnetnimi ploščami, na njihovi strani je tudi absolutna tišina ob delovanju, kar bo prepričalo marsikaterega uporabnika. A pika na i je predvsem dejanski občutek hitrosti, saj z vgradnjo pogona SSD tudi starejši ali manj zmogljiv računalnik postane znatno odzivnejši.

SSDji so zanimive naprave. V teoriji so sicer videti zelo preprosto, a v sebi dejansko hranijo veliko kompleksnih skrivnosti. Če jih primerjamo s klasičnimi diski, vidimo, da so slednji precej bolj zapleteni. Sodoben večterabajtni disk namreč pozna kup magnetnih zvijač in izkorišča kvantno mehaniko, za razvoj katere so podjetja porabila milijarde dolarjev, in med rezultati tega razvoja najdemo tudi Nobelovo nagrado za fiziko. Diski imajo namreč več kompleksnih gibljivih delov, ki so izdelani z nadvse majhnimi tolerancami, saj se bralno-pisalne glave od površine hitro vrtečih se magnetnih plošč ločijo le za kakšno tisočinko milimetra. Nato jim postavimo ob bok pogon SSD, ki je preprost skupek koščkov pomnilnika, povezanih s krmilnikom, a ta kombinacija z vidika zmogljivosti dobesedno osramoti klasične diske. Kot bomo spoznali v nadaljevanju, se večina skrivnosti skriva v zgradbi pomnilniškega krmilnika in programski opremi, ki ga upravlja.

Hitrost, o kateri teče beseda, izvira iz pomnilniških modulov. Toda pomnilniki se med seboj zelo razlikujejo, v tipičnem računalniku jih najdemo vsaj pet vrst. Hitrost njihovega delovanja pa se v praksi znižuje z velikostjo in ceno posameznega gradnika. Najhitrejši z vidika dostopnega časa (prav to je tisto, kar uporabniki občutimo kot odzivnost in hitrost) so pomnilniški registri v procesorju, nato njegov predpomnilnik (ta pozna različne nivoje), delovni pomnilnik in šele nato pride na vrsto pogon SSD, nekaj dimenzij za njim pa še klasični disk.

Za razliko od klasičnih diskov pogoni SSD zapisujejo podatke v pomnilnik, imenovan NAND flash. Ta za razliko od delovnega pomnilnika DRAM ne pozabi vsebine, ko mu prekinemo električno napajanje. Praktično gre v pogonih SSD za iste pomnilniške čipe, kot jih najdemo v pametnih telefonih, prenosnih glasbenih predvajalnikih in ključkih USB. Verjetnost, da prihajajo z enakih proizvodnih trakov, je vsaj v primeru cenovno dostopnejših pogonov SSD, zelo velika. Od kod torej tolikšna razlika v hitrosti med pogonom SSD in ključkom USB? Predvsem v načinu dela s pomnilnikom NAND, za katerega je odgovoren napreden krmilnik, ki pozna vrsto zvijač, kako kar najhitreje prebrati in zapisati podatke.

Večina sodobnih pomnilnikov NAND je izdelanih v 20- do 25-nanometrskem tehnološkem procesu. To v praksi pomeni, da ti čipi lahko dosegajo visoko zmogljivost hrambe podatkov ob nizki ceni. Z nižanjem proizvodnih postopkov se ekonomije obsega še povečajo, družba Micron je pred kratkim kot prva začela množično izdelovati pomnilnike NAND v 16 nm tehnološkem postopku.

Nas mora vzdržljivost pogonov SSD skrbeti?

Na kratko: ne. Teorija uporabnike straši z zgodbami o degradaciji celic pomnilnika in njihovi posledični neuporabnosti. A da dosežemo meje pogona SSD, moramo nanj zapisati resnično velikanske količine podatkov (vsak dan več terabajtov). Seveda so za staranje in obrabo celic dovzetnejši pogoni z manjšo zmogljivostjo. Kljub temu si velja zapomniti, da lahko pogon SSD uničimo oziroma upočasnimo s tem, ko ga imamo polno ali skoraj polno zasedenega. Za optimalno in dolgo brezhibno delovanje namreč strokovnjaki priporočajo, da ima v vsakem trenutku vsaj 10 odstotkov prostih zmogljivosti.

SLC, MLC, TLC

Od branju podrobnejših tehničnih podatkov pogonov SSD navadno naletimo na eno izmed treh kratic SLC, MLC ali TLC, ki označujejo vrsto uporabljenega pomnilnika NAND. Medtem ko pomnilnike NAND vrste SLC najdemo le še v starejših pogonih SSD in različicah za strogo poslovno rabo, sta TLC in še posebej različica MLC veliko bolj razširjeni. Predvsem zaradi boljših zmogljivosti in nižje cene.

Pomnilnik NAND SLC, kjer SLC predstavlja »single level cell«, je tehnologija shranjevanja podatkov, pri kateri se en bit shrani v eno pomnilniško celico. Tehnologija MLC (multi level cell) v posamezno celico shrani dva bita, TLC (triple level cell) pa kar tri. To neposredno vpliva na višjo zmogljivost pogona, a zaradi večje obremenitve celic tudi na njihovo življenjsko dobo.

Razlike med posameznimi tehnologijami shranjevanja podatkov v pomnilniške celice lahko ponazorimo tudi s kozarcem vode (glej sliko). Pomnilnik vrste SLC pozna le dve stanji – izbrisano (prazno) in programirano (polno). Tehnologija MLC pozna že štiri različna stanja – izbrisano (prazno), 1/3, 2/3 in programirano (polno). Pri vrsti pomnilnika TLC pa je moč ločevati med kar osmimi stanji pomnilniške celice – izbrisano (prazno), 1/7, 2/7, 3/7, 4/7, 5/7, 6/7 in programirano (polno).

Takole je videti struktura pomnilnika NAND, izdelanega s 16 nm tehnološkim postopkom. Polja celic so resnično mikroskopsko majhna.

Takole je videti struktura pomnilnika NAND, izdelanega s 16 nm tehnološkim postopkom. Polja celic so resnično mikroskopsko majhna.

Z vidika branja podatkov je omenjeno opravilo najlažje (in v teoriji najhitrejše) v primeru tehnologije SLC, saj je kozarec bodisi poln bodisi prazen. Če kozarec ni napolnjen do vrha ali prazen, kot je pri  tehnologijah MLC in TLC na sliki, je stanje celice težje prebrati. To v praksi pomeni, da se za branje porabi več časa in tudi energije. Nalogo branja podatkov iz celice vrste TLC bi lahko ponazorili tudi tako, da bi v osem enako velikih, a očem nevidnih škatlic zapakirali informacije (to pomnilniška celica stori ob pomoči razlike v napetosti) in jih prebrali z mikroskopom.

Zaradi bliskovitih hitrosti, ki jih ponuja pomnilnik NAND flash, v praksi omenjene razlike niso tako očitne. Med trenutnimi generacijami izdelkov, kjer vodijo predvsem modeli MLC, komaj še najdemo kak starejši pogon s pomnilniškimi čipi SLC in primerke s pomnilniki TLC, ki se komaj dobro uveljavljajo, je jasno, da so v povprečju branja in pisanja najhitrejši predvsem pogoni SSD s pomnilniki MLC NAND flash.

Da ni vse v hitrosti, že dolgo vedo informatiki v poslovnih okoljih. Tam sta na prvem mestu vzdržljivost strojne opreme in zanesljivost delovanja. Nič drugače ni s pogoni SSD. V najzahtevnejših poslovnih okoljih in strežnikih so še do nedavna naloge hitrega premetavanja podatkov zaupali le pogonom SSD z vgrajenimi pomnilniškimi čipi SLC NAND flash, saj njihove celice podpirajo kar okoli 100.000 ciklov prepisa vsebine. V povprečju kar desetkrat več kot pomnilniške celice MLC, saj izdelovalci teh  pogonov po dobrih 10.000 prepisih celice ne jamčijo več za njihovo brezhibno delovanje. Z vidika vzdržljivosti so še najbolj občutljive celice TLC, saj jih pisalno-brisalne operacije utrudijo (beri: izrabijo) že po tri do pet tisoč posegih.

Zakaj bi torej sploh kdo želel imeti pogon SSD, sestavljen iz pomnilniških čipov s celicami TLC? Zaradi cene, kakopak. Pomnilniki TLC so sicer težje obvladljivi (z vidika pomnilniškega krmilnika), a ker so cenejši od pomnilnikov MLC, jih izdelovalci že začenjajo vgrajevati v nižje razrede pogonov SSD, kjer so kupci še posebej občutljivi za ceno. Ekonomija obsega ima pač svojo matematiko, ki jo izdelovalci pomnilniških čipov še kako dobro razumejo. Površina pomnilniškega čipa TLC določene zmogljivosti je od 20 do 25 odstotkov manjša od enako zmogljivega čipa MLC. Manjša površina pa pomeni cenejšo komponento. Prav zato je v zadnjih letih tudi MLC tako nadvladal čipe SLC. Primerjava trenutnih cen pomnilniških čipov na globalnih trgih kaže, da so čipi SLC kar sedemkrat dražji od čipov MLC, čeprav so od njih po površini le dvakrat večji. Nič čudnega, da trenutno čipi MLC v svetu pogonov SSD (oziroma, bolje rečeno, v svetu pomnilniških gigabajtov NAND) predstavljajo kar 95 odstotkov prodaje.

Krmilnik in njegov vpliv na delovanje pogona SSD

Pomnilniški krmilniki so v sodobnih pogonih SSD motor in možgani posameznega pogona. Od njih ni odvisna zgolj hitrost delovanja pogona pri branju in zapisovanju podatkov, od njih je odvisno skorajda vse, kar zadeva pogon SSD. Tudi oziroma predvsem vzdržljivost.

Kot rečeno, so danes skorajda vse vrste pogonov SSD, tako tistih, namenjenih potrošnikom, kot tudi tistih, ki svoje delo opravljajo v strežnikih, opremljene s pomnilniki NAND flash vrste MLC. Njihove pomnilniške celice pa storijo bridki konec pri okoli deset tisoč brisalno/pisalnih ciklih. Ta številka se zdi vsaj v zahtevnejših informacijskih okoljih precej nizka, a se pogoni SSD kljub temu pospešeno selijo v strežnike in podatkovne centre, kjer je zanesljivost delovanja med ključnimi prioritetami. Slednje je mogoče le po zaslugi inženirjev, ki snujejo pomnilniške krmilnike in arhitekturo pogonov SSD, saj imajo na voljo kar osem osnovnih prijemov, s katerimi življenjsko dobo pogonov podaljšajo prek omejitev samih celic bliskovnega pomnilnika.

Porazdelitev obrabe pomnilniških celic

Ena osnovnih, a še kako zahtevnih nalog krmilnika je skrb za porazdelitev obrabe pomnilniških celic (angl. wear leveling). Pomembnejša je življenjska doba pomnilnika NAND Flash, ki, to zdaj že vemo, omogoča le omejeno število brisanj in pisanj v celice. Povsem jasno je, da večina programov, ki jih imamo nameščene v računalniku, želi večkrat prepisati ene in iste celice s podatki. Delo algoritma za porazdelitev obrabe je zato nadvse pomembno, saj programsko opremo »prisili«, da podatke zapiše v drugo celico. Zelo verjetno je tudi, da bo naslednja operacija pisanja zopet prestavljena v drugačno celico. Seveda se vse to dogaja nevidno za uporabnikove oči in večino časa brez vidnega vpliva na delovanje sistema. Končni rezultat pa je seveda ta, da se celice pomnilnika enakomerneje obrabljajo, pri čemer se razlike pri najboljših algoritmih gibljejo le v nekaj odstotkih.

Seveda algoritmi porazdelitve obrabe med seboj niso enaki, nekateri delujejo bolje, drugi slabše. V grobem jih lahko razdelimo v dve kategoriji: na statične in dinamične. Dinamično porazdeljevanje obrabe pozna zgolj dve vrsti celic: neuporabljene in spremenjene. Pomnilniške celice, katerih vsebina se ne spreminja, dinamični algoritmi pustijo pri miru. V praksi so statični algoritmi znatno boljši, saj imajo pregled nad vsemi celicami pogona, spremenjenimi, nerabljenimi in statičnimi (tistimi, katerih vsebina se ne spreminja). Tako bodo tudi celice s statičnimi vsebinami selili po pogonu, če bo to pomenilo, da bodo vse celice enakomerneje obrabljene. Res je, da s tem povzročajo dodatne pisalno/brisalne cikle, a ker to še vedno počno v dobro daljšanja življenjske dobe, je končni učinek za uporabnika še vedno spodbuden.

Raba predpomnilnika

Nalogo zmanjšanja števila brisalno/pisalnih ciklov, s katero se podaljša življenjska doba celic, pogosto prevzame zunanji predpomnilnik. Pri pogonih SSD je to navadno pomnilnik RAM, ki je del samega krmilnika, ali pa pomnilnik DRAM (navadno DDR2 ali DDR3), ki je na tiskovini poleg samega krmilnika. V obeh primerih je njegova naloga enaka – združevanje zapisov. Tako se v predpomnilniku nabirajo zahteve po zapisih v pomnilniške celice, večina je krajših, krmilnik pa jih uredi in nato v enem združenem in dolgem procesu zapiše v celice pogona SSD. En daljši zapis je tako bistveno manj obremenilen za pomnilniške celice kot večje število krajših zapisov. Poleg tega je takšno delo tudi bistveno hitrejše. Količina predpomnilnika tako še kako vpliva na hitrost pogona SSD. V primerjavi starejših in novejših generacij, kjer je razlika v količini predpomnilnika tudi štiri- in večkratna, lepo vidimo, kako hitro začne upadati hitrost zapisovanja. Nekje že po prvih 128 MB, drugod šele po zapisanem gigabajtu.

Ponazoritev razlike med tehnologijami SLC, MLC in TLC.

Ponazoritev razlike med tehnologijami SLC, MLC in TLC.

Vloga krmilnika in predpomnilnika je zelo pomembna tudi takrat, ko aplikacije želijo pogosto prepisati posamezen del pomnilnika na pogonu. Seveda jim krmilnik sporočil, da je delo uspešno opravil, čeprav je v resnici vse delo opravil v lastnem pomnilniku RAM. Tako se v praksi lahko 100 zahtevkov po vpisu/prepisu celic pomnilnika NAND spremeni v eno samo pisalno nalogo. Posledično se vzdržljivost pogona SSD poveča za mnogokrat. Pomnilnik RAM v navezi s krmilnikom tudi skrbi, da se zapisi izvajajo v polni dolžini glede na izbrano enoto velikosti datotečnega sistema (navadno med 1 in 4 kB oziroma pri najnovejših modelih 8 kB). Zgoraj omenjena pristopa sta povezana tudi s tveganjem izgube podatkov v pomnilniku RAM ob morebitnem izpadu napajanja. Izdelovalci pogonov SSD se proti temu borijo na različne načine, boljši modeli pa imajo bodisi baterijo ali t. i. superkondenzatorje, ki zmorejo napajati pogon ravno dovolj dolgo, da se količina podatkov zapiše v ustrezne pomnilniške celice tudi ob izpadu električne energije.

Skrb za odpravo napak

Odpravljanje napak (t. i. tehnologija ECC ali Error Correction Code) lahko prav tako zelo vpliva na življenjsko dobo celic in pogona SSD. NAND Flash ni zaman eden najcenejših dostopnih pomnilnikov, saj za odpravljanje napak potrebuje zunanji čip. To vlogo v pogonu SSD seveda prevzame krmilnik, ki ob vsem drugem delu skrbi tudi za preverjanje napak v pomnilniških celicah. V teh včasih prihaja do t. i. mehkih napak, denimo zaradi šuma, ki ga povzročajo različne napetosti celic (sami signali so zelo šibki). Krmilnik te napakice zazna in jih pravočasno odpravi, še preden pride do »trde« napake, po kateri mora označiti pomnilniško celico za okvarjeno in jo izločiti iz uporabe.

Zmanjševanje števila zapisov

Inženirjem, ki skrbijo za umetno pamet, ki je vgrajena v pomnilniški krmilnik pogona SSD, je v velik izziv zagotavljanje kar najmanjšega fizičnega števila zapisov v celice. Še posebej, ker morajo gledati tako na enakomerno obrabo celic, zmogljivosti, kot tudi na upravljanje podatkov. Prav zato mora pogon SSD včasih preprosto preseliti podatke iz nekaterih celic, da bi naredil prostor za nove. A to povečuje število zapisov. V zadnjih generacijah krmilnikov so zato izdelovalci začeli uporabljati  algoritme za stiskanje, ki podatke pred zapisi še dodatno stisnejo, tako da zasedejo manj prostora na pogonu. A da stiskanje in odpakiranje podatkov ne bi imela večjih posledic na samo zmogljivost delovanja pogona, mora biti krmilnik resnično zmogljiv. In najnovejši krmilniki so resnično pravi matematični stroji.

Rezervne celice

Če bi se kdaj poglobili v tehnične podatke pogonov SSD, bi kaj hitro ugotovili, da se število pomnilniških čipov in njihova zmogljivost ne ujemata s številom gigabajtov zmogljivosti, ki jih za posamezen pogon navaja izdelovalec. Razlog za to je povsem tehten, saj inženirji s t. i. rezervnimi gigabajti skrbijo, da se življenjska doba pogona podaljša. Iz nabora rezervnih celic se namreč črpajo nove zmogljivosti za okvarjene celice. Prav tako lahko pogon SSD oziroma njegov krmilnik te gigabajte uporabi za druga, predvsem počasnejša opravila in tako ne vpliva na samo zmogljivost pogona, kot jo zaznava uporabnik.

Krmilnik pogona SSD je resnično računalnik v malem.

Krmilnik pogona SSD je resnično računalnik v malem.

Rezervne pomnilniške celice bi lahko primerjali z rezervnim kolesom pri avtomobilu. No, več kolesi, če smo natančni. Ko imamo več rezervnih koles, se lahko pripeljemo dlje, čeprav v nobenem primeru ne moremo uporabljati več kot štirih koles hkrati. Menjave koles se prestavijo na daljše obdobje, a tako kot pri vseh zalogah in rezervah, ima tudi tako rezerviran prostor na pogonu SSD svojo ceno.

Koliko ta rezerva pomaga v praksi? Po pogovoru z več izdelovalci pogonov SSD bi ob stanju sodobnih krmilnikov in algoritmov že dobrih 20 odstotkov rezerve (glede na celotno zmogljivost pomnilnika) v pomnilniških celicah podaljšalo življenjsko dobo pogona kar za dvakrat. Če bi si želeli podaljšati življenjsko dobo za trikrat, bi morali predvideti okoli 45 % rezervnih celic, za štirikrat okoli 75 % itd. Seveda tako ni mogoče podaljševati v nedogled, krivulja se po svoji učinkovitosti približa ničli pri okoli 250 % rezerve, ta namreč podaljša življenjsko dobo pogona le še za okoli šestkrat v primerjavi z 20-odstotno rezervo. Izdelovalci imajo seveda svoje matematične račune, v katere zajamejo tako ceno pogona kot pogoje garancije. V praksi smo zato priča le okoli 7 odstotkom rezerve v količini pomnilniških celic. S tem se predvidena življenjska doba pogona podaljša za okoli tretjino. To večini izdelovalcev zadostuje za razmeroma majhno število odpovedi in reklamacij v življenjskem ciklu izdelka.

Prihaja 3D NAND

Cene pogonov SSD so se v zadnjih petih letih močno zmanjšale, obenem pa so se znatno povečale zmogljivosti. Za 80 GB pogon SSD je bilo leta 2008 treba odšteti dobrih 500 evrov, danes si za tak denar lahko omislimo terabajtni SSD. Za to je zaslužna predvsem vse večja gostota pomnilnikov NAND, ki so jo omogočili vse natančnejši proizvodni procesi, a tudi bitka z nanometri kaže zobe. Samsung je med prvimi uvidel, da s približevanjem 14- in 15 nm procesu izdelave večnivojskega pomnilnika NAND z več napetostmi o natančnosti vsebine posamezne celice odloča vsega prgišče elektronov. To pa ni dobro z vidika dolgoročne zanesljivosti delovanja. Zato so korejski inženirji ubrali nov pristop, razvili so nekakšno 3D različico pomnilnika NAND, ki so jo poimenovali V-NAND. Namesto nadaljnjega krčenja velikosti celic so se namreč odločili za večnivojsko nalaganje celic (drugo nad drugo). Zaradi želje po doseganju stabilnosti takšne gradnje se je Samsung odločil V-NAND izdelovati po starejšem, a preverjenem 30 nm tehnološkem postopku in je tako ubil dve muhi na en mah. Zmogljivost čipov V-NAND je v prvi generaciji, ki jo sestavljajo 24-nivojske celice MLC, 128 Gbit, to je toliko kot konkurenčni »navadni« čipi MLC NAND, a so zato kar nekajkrat vzdržljivejše (zdržijo okoli 35.000 bralno-pisalnih ciklov). Korejski velikan že predvideva, da bi v naslednjih letih čipi V-NAND že lahko dosegli gostoto 1 Tbit, torej bodo zmogljivosti pogonov SSD v prihodnje tudi v praksi lahko večje za osemkrat.

Hitrost je odvisna od zmogljivosti

Pogled v tehnične podatke o bralno-pisalnih zmogljivostih pogonov SSD je pogosto zavajajoč, saj so vsi sodobni pogoni vsaj teoretično zelo hitri. Uporabniki se pač ne zavedajo, da so hitrosti, ki jih navajajo izdelovalci, omejene le na krajši čas oziroma, bolje povedano, pri večini pogonov so te hitrosti dosegljive le do zmogljivosti, ki jo predstavlja količina vgrajenega hitrega predpomnilnika – navadno 512 MB ali 1 GB, nato pa drastično upadejo, saj kombinacija krmilnika in pomnilniških modulov NAND navadno ne zmore zagotavljati trajno hitrih prenosov v rangu 500 in več MB/s.

Zahtevnejši uporabniki bi se morali prav tako zavedati, da na hitrost delovanja pogona SSD še kako vpliva njegova zmogljivost, predvsem to velja za pisalni del. Krmilnik komunicira s pomnilniškimi čipi po več poteh. Pri tem velja, da je teh poti pri pogonih SSD manjših zmogljivosti seveda manj, saj je na tiskovini tudi manj pomnilniških čipov. Praksa kaže, da je za poln izkoristek zmogljivosti posameznega krmilnika v pogonu SSD treba poseči vsaj po modelih z zmogljivostjo 240 oziroma 256 GB ali večjo, saj so tako »avtoceste« med pomnilnikom in krmilnikom resnično dovolj široke in pretočne. Modeli z zmogljivostjo 120 oziroma 128 GB namreč v praksi večje količine podatkov zapisujejo polovico počasneje, današnji vstopni modeli z zmogljivostjo 60–64 GB pa zmorejo le četrtino hitrosti štirikrat zmogljivejših pogonov.

Kateri, torej?

Uporabniki nas pogosto sprašujejo, kateri pogon SSD je dober. Danes je večina pogonov dobrih. Če bomo pri nakupu v tehničnih podatkih spremljali še količino predpomnilnika in se odločili za pogone z večjo zmogljivostjo, praktično ne moremo zgrešiti ne glede na ime izdelovalca. Dejstvo je namreč, da nobena druga nadgradnja posamezne komponente računalnika ne prinese tako izboljšane uporabniške izkušnje kot prav vgradnja pogona SSD.

Tabela1 [PDF]
Tabela2 [PDF]
Tabela3 [PDF]

Naroči se na redna tedenska ali mesečna obvestila o novih prispevkih na naši spletni strani!

Komentirajo lahko le prijavljeni uporabniki

 
  • Polja označena z * je potrebno obvezno izpolniti
  • Pošlji