Flash paměti
Historie
pamětí uchovávající hodnotu po odpojení napájení začíná pamětí typu
EPROM. Ta umožňovala zápis dat elektrickou cestou a pro její vymazání
bylo potřeba čip nasvítit ultrafialovým světlem, čímž došlo k vymazání
celé paměti. Logicky se tato metoda zrovna moc nehodila pro běžné
použití jako záznamové medium s velkým množstvím zápisů/přepisů.
Jako první zástupce flash paměti můžeme považovat Simultaneously Eraseble EEPROM
- zkráceně SE-EEPROM. Tuto technologii v roce 1980 předvedl vývojový
tým profesora Fujio Masuko, dnešní název flash paměť však tyto čipy
dostaly až později, pravděpodobně při představení roku 1984 na IEEE
konferenci, kde ohromila na svou dobu vysokou rychlostí mazání oproti
tehdy známé EEPROM - vylepšené verzi EPROM - proto zmiňovaný název
“flash”. Kromě rychlosti spočívá výhoda hlavně v použití jen jednoho
tranzistoru pro uložení informace o velikosti jednoho bitu - toho je
docíleno zapojením tranzistorů odpovídající negovanému součinu (NAND).
Obr 1
Profesor Masuoka a jeho první 256kilobitový (256 kb = 32 kB) flash čip představený na konferenci IEEE
I
přes poměrně dlouhé období po které je technologie flash pamětí známá,
trvalo poměrně dlouho, než se na trhu objevila zařízení o nějaké rozumné
kapacitě a zároveň kompaktnějších rozměrů. Dostatečné hustoty integrace
se dosáhlo až koncem 90. let minulého století, kdy se začaly objevovat
první, klasické, dnes tolik známé a používané flashdisky. Postupným
dalším vývojem, integrací a vylepšováním flash technologií se nyní do
popředí dostávají solid state drive, alias SSD.
Jak to celé funguje?
Základem
je SLC (single level cell) paměťová buňka, jejíž funkce je založená na
principu MOSFET tranzistoru, jenom je zde plovoucí hradlo mezi bránou a
substrátem, které je izolováno pomocí oxidu křemíku a umožní nám
uchování náboje - za běžných okolností po mnoho let. Pokud plovoucí
hradlo uchovává náboj, pak snižuje účinek napětí na bráně (control gate -
CG) což zásadním způsobem mění prahové napětí. Při čtení buňky je na
bránu (CG) přivedeno prahové napětí. V závislosti na přítomnosti nebo
nepřítomnosti náboje na plovoucím hradle pak dojde ke vzniku logické
jedničky (vodivé spojení) nebo nuly (nevodivé spojení) mezi vstupem a
výstupem paměťové buňky.
Obr 2
Jak
je vidět, SLC uchovává na jednu paměťovou buňku jedinou logickou
hodnotu - buď 1 nebo 0 - tedy jeden bit. Nicméně toto řešení není úplně
ideální, protože pro dosažení velkých kapacit je potřeba mnoho
paměťových buněk, tím pádem mnoho materiálu pro výrobu a tím nám roste
cena. Velmi známým a problematickým je pak omezený počet zápisu jedné
takové buňky. Každým zápisem dojde k poškození izolační vrstvy, což má
za následek jeho postupnou degradaci a tím pádem stále snižující se
rozdíly napětí mezi logickou jedničkou a nulou, až nakonec dojde k tak
nízkému rozdílu, že již není možné buňku použít.
SLC (single level cell)
Pro zápis každého bitu použijeme jedné paměťové buňky.
Charakteristika
Menší opotřebovávání buněk (~100 000 zápisů)
Hlavní
důvod hraje zejména velký rozdíl mezi potenciály napětí mezi
jednotlivými hodnotami. Tím pádem i poměrně velké časové období pro opotřebení izolační
vrstvy natolik, že výrazný rozdíl mezi potenciály logické 1 a 0 začne být příliš malý.
Malá kapacita oproti MLC nebo 3BPC technologii.
MLC (multilevel cell)
Velikost
náboje v plovoucím hradle nám zároveň mění úroveň prahového napětí. To
znamená, že pokud máme na plovoucím hradle vetší náboj, pak vetší napětí
na bráně je potřeba pro překonání. To samé ovšem platí pro menší
náboje. Z toho vyplývá možnost užití různých napěťových úrovní a tím
pádem i uložení více bitu na jednu paměťovou buňku.
Obr 3
Charakteristika
Dvojnásobné zvýšení kapacity
Výhody
jsou zcela zjevné - při použití čipu o velikosti 16 GB SLC dostaneme
při použití MLC najednou již dvojnásobnou velikost - 32 MB paměťové
kapacity.
Rapidní snížení životnosti (~10 000 zápisů)
Rapidní
snížení životnosti oproti SLC. Příčina spočívá v meších rozdílech
potenciálů bázového napětí pro možnosti určení logické hodnoty a tím
pádem daleko dříve se dostaneme vlivem opotřebení izolační vrstvy na
hodnoty, které již není možně od sebe bezpečně rozeznat.
Zhoršení rozpoznávání logických hodnot = větší chybovost
Se
zmiňovaným rozdělením a přiblížením úrovně jednotlivých logických
stavů, se zvyšuje pravděpodobnost chybného přečtení hodnoty. Je proto
potřeba využívat kvalitních oprav a kontroly dat.
Zhoršení rychlosti čtení i zápisu
nutnost testování buňky různými logickými hodnotami a několika násobné čtení (až 4x)
eMLC (Enterprise Multi-level cell)
jedná se o MLC buňky, u kterých byly provedeny dílčí úpravy pro zvýšení spolehlivosti, rychlosti a životnosti (~50 000 zápisů)
3BPC (3 bit per cell)
Uložení třech bitů na jednu paměťovou buňku
Shodné
s předchozím - pokud znovu rozdělíme úrovně na dvě další napětí,
získáme již prostor pro uložení 3 bitů, nicméně za cenu ještě větší
chybovosti.
Obr 4
Charakteristika
Další navýšení kapacity - 3-násobek SLC a 2-násobek MLC - při užití 16 GB čipu, získáme 64 GB dat pro uložení
Další degradace výkonu kvůli dalšímu zhoršení rozpoznávání logických hodnot, větší chybovost oproti MLC a zároveň následuje další snížení výdrže paměťových buněk schopných uchovat 3BPC hodnoty.
NAND/NOR flash
U
flash pamětí se standardní paměťové buňky zapojují dvěma možnými
způsoby - NAND a NOR - podle toho je pojmenováváme NAND flash a NOR
flash.
Zapojením vice paměťových buňek do celku získáme další vlastnosti vyplývající ze zapojení
Společnou
vlastností zapojení je, že je vždy potřeba paměť vymazat před jejím
zápisem, protože není možné paměť přepsat. Pro uložení nové hodnoty je
potřeba nejdříve paměťové buňky nastavit do výchozího stavu (NOR - 1,
NAND - 0)
NOR flash
U
NOR flash pamětí je jeden konec zapojen na zem a druhý přímo na bytový
výstup - NOR brány Diky tomuto zapojení můžeme adresovat jednotlivé bity
pro čtení a zápis (nikoliv však výmaz). Pokud chceme zapisovat data, je
potřeba provést nejprve výmaz celého NOR bloku.
Obr 5
Ve výchozím stavu je se zapojení jeví jako 1, programováním (zapísem) měníme stav na 0.
Výhody
možnost čtení jednotlivých bitu v paměti, stejně jako jejich naprogramovaní
velmi vysoká rychlost čtení (přístup na každé místo v paměti je konstantní)
nedochazí k chybám při čtení
Nevýhody
pro výmaz je potřeba smazat celý blok
Použití
NOR
flash se používá všude tam, kde nedochází k velkému počtu změn nebo
zápisu a je požadováno čtení jednotlivých bitu z paměti. Nejčastěji jsou
to tedy paměti v telefonech a jiných embeded systémech, kde je
procesoru umožněno číst samotné instrukce přímým adresováním
jednotlivých bitů paměti.
NAND flash
Zapojeni
jako NAND brána. Více přechodů je zapojeno v serii a pouze pokud
všechny členy serie obsahuji 1 na hradle pak, dostaneme logickou 0 ve
výsledku.
Obr 6
Výhody
díky menšímu množství vodičů je paměť méně náročná na výrobu a je možné dosáhnout vyšších integrací (větší kapacity na čipu)
funguje jako blokové zařízení, což vyhovuje užití jako paměťové medium
Nevýhody
větší náchylnost na chyby a stím související problematičtější čtení dat
pomalejší zápis - nedají se programovat jednotlivé bity samostatně
je potřeba “resetovat” celý blok před zápisem
Použití
NAND
díky možnostem minimalizace díky své menšímu množství propjení,
jednoduchosti a přesto i nadále solidní rychlosti zápisu/čtení jsou
využívány v klasických flash zařízeních tak jak je známe - USB
flashdiscich, SSD discích atd, nejřastěji v kombinací s MLC technologí
použití paměťové buňky.
Problémy flash pamětí a jejich řešení
Pokud
vycházíme z podstaty zapojení a principů fungování uložení informace v
flash pamětech, dostáváme několik negativních efektů, které se snažíme
odstranit, nebo alespoň redukovat. Největší problémy jsou pak svázané
primárně s limitní velikostí počtu přepisů paměťové buňky a nutností
výmazu buněk před samotným zápisem.
Wear level (Rovnoměrné opotřebení)
jeden
z problémů souvisejících s opotřebováním je zajištění pokud možno co
nejrovnoměrnějšího opotřebovávání všech buněk. Díky tomu si disk získá
svoji maximální kapacitu po co nejdelší časový úsek.
Pro
dosažení rovnoměrného opotřebení firmware disku postupně jednotlivé
buňky rovnoměrně střídá, tak aby pokud možno všechny byly opotřebovávané
stejně. Samotný wear leveling má 3 možné druhy:
1) žádný - žádná optimalizace se nekoná
2) dynamický - optimalizace probíhá pouze napříč prázdným místem. Jsou střídany jen prázdné buňky, obsazené se nechávají tak jak jsou.
3) statický
- snaží se o rovnoměrné využití všech buněk napříč celým paměťovým
médiem. Pro tento způsob je potřeba přesunovat data na jiná místa na
disku a uvolněná místa pak “rovnoměrně opotřebit”
Garbage collection
Rozdíly
mezi minimální velikostí dat pro zápis (stránka) a minimální velikostí
pro výmaz (blok) způsobují po výmazu (respketive označení jako
smazaných) volné místo, které ale nemůže být uvolněno, protože smazat je
možné pouze celý blok. Proto jsou data přesunuta na nový, prázdný blok a
celý blok je smazán. Pro správnou funkčnost je však potřeba udržovat
volné místo na na disku.
Obr 7
TRIM
SATA
příkaz řeší problém komunikace mezi řadičem a OS způsobený rozdílností
fuknce SSD disku a standardního HDD. Pokud chceme smazat nějaká
alokovaná data, ta nejsou fyzicky smazaná (změněna na 0), ale pouze
označena jako smazaná v tabulce řadiče a na samotném disku zůstávají v
nezměněné podobě. Vzhledem k tomu, že flash paměť je potřeba před
samotným zápisem vymazat, vzniká problameatická situace, kdy je potřeba
nejprve data vymazat a následně je znovu zapsat - tedy provedení zápisu
jakoby dvakrát, což znamená zpomalení zápisu. To není zrovna efektivní,
proto byl definován příkaz TRIM, který v případě nečinnosti disku
“nuluje” takto označená data. Tento příkaz je podporován od Windows 7 a u
Linuxu od jádra 2.6.33.
Write Amplification
Jeden
z negativních efektů souborového systému. Disk umí zapisovat pouze po
celých stránkách, a pokud není stránka plně využita, dojde k jejímu
doplnění a uložení. Takže pokud chceme uložit 13 kB dat a máme stránky
velikosti 512 kB, finální množství uložených dat je 512 kB a prostor
není plnohodnotně využit. Klasické moderní disky často však reálně
zapisují více dat, než ve skutečnosti obdržely od operačního systému.
Lepších výsledků je možné dosáhnout díky větší cache určené pro přípravu
dat spolu s pokročilými algoritmy pro optimalizaci, případně kompresi
(například SandForce od Intelu).
Write
apmplification je číselná hodnota vypočítaná poměrem dat reálně
zapsaných na disk a množstvím dat obdržených od operačního systému.
Spare area
náhradní
prostor s paritními informacemi sloužící jako náhrada v případě
nečitelnosti obsahu buňky či v případě špatného zápisu dat.
Použitá literatura
PCtuning.tyden.cz - Vše, co jste kdy chtěli vědět o SSD (ale báli jste se zeptat)
Wikipedia.org - Flash memory
Žádné komentáře:
Okomentovat