Főoldal

"Mérnököt a mérnöktől"

A Schönherz Bázis összeköti az állást kereső és állást kínáló mérnököket.

CV küldés

Küldj önéletrajzot! Gyorsan, egyszerűen.
Megjegyzésbe írd be a pozíció nevét.
CV küldés

Iratkozz fel hírlevelünkre!

Hírek

Hogyan működnek az SSD-k?
Hogyan működnek az SSD-k?
Ha meg akarjuk érteni mi a különbség az SSD és a hagyományos merevlemez között, először utóbbi működését kell tisztáznunk. A HDD forgó lemezeken tárolja az adatokat, ezeket “platter”-eknek hívjuk. Az író/ olvasó fej az ugyanevezett acuator-ra van erősítve, ez utóbbi tulajdonképpen egy indítókarként képzelhetjük el. Ez a kar állítja be az olvasó/író fejeket a helyükre, így tudunk a megfelelő helyre írni, vagy éppen adatokat kiolvasni.

A  fejek mindig a lemez felett kell tartózkodnak, miközben a lemez folyamatosan forog. Így 0 várakozási idővel számolhatunk, azonnal hozzáférhetőek az adatok. Persze, összességében még így is számolhatunk holtidővel, hiszen előfordulhat, hogy egy program indításához több helyről kell beolvasni az adatokat, így olvasás előtt meg kell várni, míg a megfelelő helyre forog a lemez. Magasabb várakozási idővel kell számolnunk, ha a lemez előtte alvó módban volt, vagy ha éppen energiatakarékos üzemmódban dolgozik. Ekkor ugyanis beletelik pár másodpercbe, amíg a lemez eléri a legnagyobb forgási sebességét.

Ez mind nagyon szép, de ha ennyire jól működik a HDD, akkor miért kell az SSD? Az már a kezdetekben is világos volt, hogy senki nem tud olyan merevlemezt csinálni, aminek sebessége akár csak megközelíti a processzorok sebességét. A látens idő (holtidő) a HDD-k esetében miliszekundum nagyságrendű, míg ugyanez a processzoroknál csak néhány nanoszekundum.

Hiába kisebbek a mai lemezek, hiába a nagyobb forgási sebesség, van egy határ, amit már nem lépthetünk át. A fenti javításokkal így ugyan kisebb lett a különbség a processzorok és a HDD-k sebessége között, de ha jobban megnézzük, a merevlemezed még mindig csigalassú a procidhoz képest. Jelenleg a leggyorsabb HDD melyet tömeggyártásra szántak a Western Digital VelociRaptor névre hallgató merevlemezcsaládja 10000 RPM-es (forgás/per perc) sebességgel.  Néhány HDD sebessége felmegy 15000 RPM-ig, de ez az abszolút maximum.

Most már ismerjük a hagyományos merevlemezeket, nézzük miben különbözik az SSD.

Az SSD-k világa: Hogyan is működnek?

 

 
“Ha megkérdeztem volna az embereket, mit szeretnének, azt mondták volna, gyorsabb lovakat. — Henry Ford

Mit is takar az SSD rövidítés? Solid-state driver. Miért? Mert nem tartalmaz forgó lemezeket, helyette NAND flash-ekre mentjük az adatokat. Kezdjük a részleteknél, mi az a NAND?

Ez nem más, mint egy floating-gate tranzisztorokból álló rendszer. A DRAM-mal ellentétben az előnye, hogy nem kell másodpercenként többször is frissíteni, akkor is megtartja az állapotát, ha nincs áram alatt. Így mondhatjuk, a NAND a “nem-felejtő” memória. A felépítését az alábbi ábra szemlélteti.



Ez nem más, mint egy egyszerű flash. A floating-gate-n tároljuk az elektronokat, a kapu a töltött részecskékhez 0-t, a töltetlenekhez 1-t rendel. A NAND kapcsolás esetén az 'igen' azt jelenti, hogy adat van az adott cellában, ehhez 0-t rendelünk. Pont az ellentéte, mint amit megszoktunk. A NAND flash rácsszerkezetes felépítésű (grid), az egész elrendezést pedig blokknak hívjuk. A gridet alkotó egyes sorok a lapok, ezek mérete 2K, 4K, 8K, 16K lehet. Egy blokkon belül 128 vagy 256 lap van. Egy teljes blokk mérete így tipikusan 256KB és 4MB közé esik.
Ezek alapján talán már lehet is tippelni az SSD egyik nagy előnyére: nincs mozgó alkatrész, tehát sokkal nagyobb sebességeket lehet vele elérni. Az alábbi ábra mutatja pontosan mekkorát.



Mit látunk itt? Minden adat mikroszekundumban van megadva, és a holtidőre vonatkozik. Az adatok az SLC-re, TLC-re HDD-re és RAM-ra vonatkoznak, az egyes oszlopokban pedig külön szedtük a lehetséges várakozási időket. Vagyis megnéztük mennyi időt várunk átlagosan a bitekre (cellánként), a keresésre, az olvasásra, írásra, törlésre.
 
 Az látszik, hogy a NAND meg sem közelíti sebességben a memória gyorsaságát, de nagyságrendekkel gyorsabb mint a HDD. A NAND esetében az írási holtidő még mindig jelentősek (pl az olvasáshoz képest), de a helyzet így is sokkal jobb annál, ami a hagyományos merevlemezeknél tapasztalható.
 
 A fenti táblázatban két fontos dolgot vegyünk észre! Az első, hogy a NAND bitjeinek növelése jelentősen növeli a RAM teljesítményét.  A tipikus TLC holtidő olvasáskor 4x rosszabb, mint az SLC-é, és hatszor rosszabb íráskor, a törlési időt is eléggé befolyásolja a TLC-SLC csere. Összeségében a TLC NAND kb. fele olyan gyors, mint az MLC NAND, még akkor is, ha az előbbin kevesebb bitet tárolunk. De miért is? Ennek megértését szolgálja az alábbi rajz:
 


A fenti ábra a feszültségeket mutatja SLC MLC esetén. SLC esetén két helyen van csak feszültség, MLC esetén 4 értékünk van. Tegyük fel a kérdést, hogyan mozog az adat a NAND cellában? SLC NAND esetén a kontrollernek csak azt kell tudnia, hogy a bit 0 vagy 1. MLC NAND esetén 4 értékünk lehet, 00 01 10 vagy 11. A TLC esetén értelemszerűen ez a szám 8 (2^3). Így a megfelelő érték kiolvasásához nagyon precízen kell ismernünk, legalábbis a kontrollernek, a kijövő feszültséget, hogy el tudja döntetni a celláról, hogy töltött-e vagy sem.
  
Olvas. Ír. Töröl (?)
 
Az SSD egyik nagy problémája, hogy az újraírás és a törlés sokkal lassabb, mint az írás és az olvasás. Ennek oka a NAND struktúrában rejlik. Az SSD ugyanis oldal szinten olvas, azaz független sorokból olvassa ki az adatot, és az írás is oldal szinten megy végbe. A törlés azonban blokk szinten oldható csak meg, mert a NAND flash törléséhez nagy feszültség kell. Elméleti akadálya nincs az oldal-szintű törlésnek, azonban a nagy feszültség, ami ehhez a folyamathoz szükséges nagy igénybevételt jelent a környező celláknak is. Így előnyösebb blokk-szinten végezni az újraírást, törlést.
 
Pár szó az újraírásról. SSD-t használva egy módon frissíthetjük a már létező oldaltt: először át kell másolni az egész blokkot a memóriába, majd törölnünk kell a blokkot, ezután írhatjuk be a frissített adatokat (és az eredeti blokk adatait).
 
Ha éppen nem áll rendelkezésre üres oldal, az SSD először törlésre szánt blokkokat keres, ezeket a műveleteket elvégzi, majd jöhet az írás. És így lesznek egyre lassabbak az SSD-k a használat során.
 
A hosszú élet titka – Garbage collection, TRIM és a leveling algoritmusok
 
Először foglalkozzunk a garbage collection-nel. Ez nem más, mint egy háttérben futtatható folyamat, amely lehetővé teszi a drive számára,, hogy enyhítse a program/ törlés okozta hatásokat.
Az alábbi ábra mutatja a garbage collection folyamatát lépésenként.
 


Az egész fenti példa során a drive kihasználja, hogy üres oldalakra nagyon gyorsan tud írni. Az első ábrán az látszik, hogy 4 (A-D) oldalalt írunk az X blokkba. Független oldalakat bármikor írhatunk, ha azok üresek. A második körben megírunk 4 újabb oldalt (E-H), illetve létrehozzuk a helyettesítő A'-D' oldalakat.

Ezután az eredeti A-D adatok érvénytelenek, a drive 'out-of-date'-nek jelöli őket, hozzáférhetetlenek lesznek, de addig nem törölhetőek, amíg nem töröljük az egész blokkot. Mindezek után az így keletkezett oldalakat már beírhatjuk az Y blokkba, az X blokkot pedig töröljük, így az üres lesz. Ez azt jelenti, hogy mikor az SSD legközelebb írni szeretne ebbe a blokkba, a folyamat már gyors lesz, hisz egy teljesen üres X blokkot fog találni.

A olvasás, írás, törlés témakörben még egy dologgal érdemes foglalkozni ez pedig nem más, mint a  TRIM.



Ha Windows alatt törölsz egy file-t a HDD-ről az nem törlődik azonnal. Az oprendszer csak “tájékoztatja” a HDD-t, hogy mostantól a file-unk által elfoglalt hely szabadnak minősül, tehát lehet rá írni. Emiatt férhetünk hozzá a már törölt dolgainkhoz, és ennek köszönhetjük azt is, hogy törlés után nem szabadul fel azonnal túl sok hely. Hagyományos merevlemeznél tehát az oprendszernek teljesen mindegy hova írjuk az adatokat, nem szükséges erre figyelnie.
Mi a helyzet az SSD-vel?

Itt az operációsrendszernek utasítania kell az SSD-t, hogy a legközelebbi blokktörlésnél bizonyos részeket nem kell újraírnia. Az oprendszert erre a TRIM paranccsal utasíthatjuk. Ez a különbség azért nagyon fontos, mert így az SSD-nek kevesebb adatot kell újraírnia, így növeljük az élettartamát is (a sebesség mellett persze). A NAND-ot az olvasás is károsítja, de messze nem annyira, mint az írás. Szerencsére a modern NAND-ok életében a blokkszintű élettartammal nincs gond.

Foglaljuk össze tehát, miért is kell nekünk a garbage collection és a TRIM. A fentebb részletesen ismertetett újraírásnak meg van az a hátránya, hogy sokkal több helyre van szükségünk, mint annak a fájlnak a mérete, amit update-elni akarunk. Hiszen egy 4KB-os file esetén az egész blokkot frissíteni kell, így előfordulhat, hogy 4MB-ot használunk a 4KB-os file frissítése közben. Így nagyon fontos, hogy ezeket a károkat csökkentsük, ennek pedig legjobb módja, ha mindig fenntartunk egy nagyobb szabad területet, ide ugyanis könnyű írni.
Mi kell még a hosszú élethez?

Egy jó leveling-algoritmus! Ha hosszú életű SSD-t akarunk még egy dolgot kell szem előtt tartani: biztosítanunk kell, hogy egyenlő mértékben használjuk a blokkokat. Tehát ne legyenek olyan NAND blokkok, amikre szinte soha nem írunk, és olyanok sem, amik állandó használat alatt állnak. Persze itt sem minden arany, ami fénylik. Ahhoz, hogy ezt elérjük gyakran olyan blokkokat kell törölni, melyeken nem változtattunk.

Az SSD kontroller


Mostanra már biztos világossá vált, hogy az SSD nem olyan egyszerű teremtmény, finomhangolt vezérlés kell hozzá, ami bonyolultabb, mint a hagyományos merevlemezeknél megszokott irányítás. Ezzel nem akarom szidni a HDD-ket, sőt, úgy gondolom, sokkal nagyobb tiszteletet érdemelnének. Az sem egyszerű feladat, ha 5400 vagy akár 10000 RPM-el forgó részeket kell irányítanunk, de más mechanizmusra van ott szükség, mint az SSD-nél.


 
Az SSD-ket gyakran támogatják meg DDR3 memóriával, így könnyebb a NAND-ok irányítása. A drive kontroller munkája hasonló ahhoz, amit egy nagy tároló tömb végez. Az SSD ugyanis tipikusan párhuzamos memória csatornákon keresztül áll összeköttetésben a kontrollerrel. A hasonlat nem teljes persze, az SSD-k esetén nincs belső RAID, de a garbage collection, SLC cache, és az elhasználtság-menedzselés (wear leveling) közt igenis lehet párhuzamot vonni.
Néhány lemez tömörítést is alkalmaz, hogy csökkentse az írások számát. Az SSD kontroller feladata az ilyenkor esetleg felmerülő hibakorrekció, ő irányítja tovább azokat az algoritmusokat melyek a single-bit hibákat javítják.

Sajnos mélyebben nem mehetünk bele az SSD kontrollerek működésébe, mert a gyártók levédették a saját megoldásaikat. A NAND teljesítménye nagyban függ a kontroller hatékonyságától, így senki nem akarja kiteregetni a részleteket, mert azzal esetleg segítené a konkurenciát.

Az SSD jövője


A NAND flash hatalmas újítás a merevlemezek terén, de mint mindennek, az SSD-nek is vannak hátrányai, van még bőven fejlesztenivaló. Várhatóan növekedni fog a tárolókapacitás és ezzel egy időben csökkeni fog az ár, de ennek ellenére nem valószínű, hogy az SSD-k ára le fog süllyedni a HDD-k szintjére.

Emellett még azt is figyelembe kell venni, hogy míg a legtöbb hardvernél javulást érhetünk el a node-k zsugorításával, addig a NAND sebezhetővé válik ugyanezen folyamat alatt. Például a 20 nm-es NAND írósebessége lassabb, mint a 40 nm-es.
Az SSD-k eddigi sikere abban rejlik, hogy egy sokkal jobb teljesítményű, gyorsabb alternatívát jelentenek a hagyományos HDD-khez képest. Ezen felül még előnye a korábban említett SLC-k használata és hogy több csatorna jut egy kontrollerre. A hátrányokai miatt viszony elég valószínű, hogy a későbbiekben a NAND szerepét valami más fogja átvenni.

Hogyan nézhet ki ez a „valami más”?

Ez a kérdés messze nem eldöntött, a mágneses RAM és a phase-change memória egyaránt szerepel a lehetséges jelöltek között, de jelenleg mindkét technika gyerekcipőben jár még. Az is egy érdekes kérdés, hogy a vásárlók egyáltalán észrevennék, értékelnék-e a különbséget. Ha SSD-re váltasz hagyományos HDD-ről nyilván észre fogod venni a különbséget. Ha azonban SSD-ről gyorsabb SSD-re akkor egyáltalán nem biztos, hogy érzékelhető lesz a különbség. A miliszekundum-mikroszekundum nagy váltásnak számít, de a mikroszekundum-nanoszekundum különbség szinte felfoghatatlan az átlagfelhasználónak.

Mindez azt jelenti, hogy jelenleg a NAND az uralkodó technológia, és ez jó eséllyel így is marad még legalább 4-5 évig.

Írta: Geek Blog

(Forrás)