SSD-schijven die gegevens opslaan in Flash-NAND-geheugen zijn sneller en efficiënter (althans dat beweren fabrikanten en verkopers) dan harde schijven. Ze zijn stil en verbruiken minder elektriciteit. Omdat ze gegevens opslaan op geïntegreerde schakelingen, hebben ze geen complex, nauwkeurig en foutgevoelig mechanisme nodig. De weerstand van SSD's tegen mechanische storingen is een betrouwbaarheidsdogma geworden in marketingmateriaal. Dalende prijzen hebben SSD's de afgelopen jaren erg populair gemaakt, en tegelijkertijd heeft de realiteit op brute wijze de mythe verdreven dat ze storingsvrij zijn.
In theorie is het mogelijk om elektronische apparaten te construeren die enkele of zelfs tientallen jaren zonder storingen kunnen functioneren, maar in de praktijk is het niet moeilijk om computeronderdelen tegen te komen die op de eerste dag van gebruik kapot gaan. En heel vaak is het de SSD die al weigert mee te werken in de fase van het installeren van het besturingssysteem. Waarom hebben SSD's zo'n hoog uitvalpercentage en in hoeverre kunnen ze worden vertrouwd als gegevensdragers?
Gemodificeerde NPN-veldeffecttransistors zijn verantwoordelijk voor het opslaan van gegevens in media die Flash-NAND-geheugen gebruiken (niet alleen SSD's, maar ook pendrives, geheugenkaarten en herinneringen ingebouwd in apparaten zoals smartphones). Zo'n transistor bestaat uit drie elektroden - gebieden van de halfgeleider - twee rijk aan elektronen (en daarom negatief geladen, vandaar de aanduiding "n", voor "negatief"), een bron en een afvoer gescheiden door een gebied dat arm is aan elektronen (positief geladen - vandaar de letter "p", als "positief"). In deze transistors zijn elektronen de drager die verantwoordelijk is voor de stroomstroom. Tussen de bron en afvoer bevindt zich een elektrisch geïsoleerde poort die wordt gebruikt om de transistor te besturen. Er zijn ook pnp- transistoren waarbij de bron en afvoer positief geladen zijn en de poort negatief. Dit soort transistors worden echter niet gebruikt in flashgeheugen.
Veldeffecttransistoren worden unipolair genoemd omdat de stroom daarin alleen door meerderheidsdraaggolven wordt gevoerd. Voor npn-transistors zijn dit elektronen, en voor pnp - de zogenaamde gaten. Naast unipolaire transistors zijn bipolaire transistors te vinden in andere toepassingen, waarbij elektrische stroom wordt gevoerd door zowel meerderheids- als minderheidsdragers. Bipolaire transistors worden ook wel junctie- of laagtransistors genoemd.
In zo'n transistor wordt onder invloed van een elektrisch veld (daarom wordt de transistor "veldeffect" genoemd) een kanaal gecreëerd dat n-kanaal wordt genoemd en waardoor elektronen tussen de bron en de afvoer kunnen stromen. Als we echter spanning op de poort zetten, sluit het n-kanaal en stopt de stroom tussen de bron en de afvoer. Transistors waarin het n-kanaal open is en sluit wanneer er een spanning op de poort wordt aangelegd, worden depletiekanaaltransistors genoemd. In de elektronica gebruiken we ook verrijkte kanaaltransistors, waarbij het aanleggen van een spanning op de poort resulteert in het openen van het transistorkanaal.
Om een dergelijke transistor te gebruiken voor niet-vluchtige gegevensopslag was het noodzakelijk om de poort aan te passen. Het was verdeeld in een controle poort en, het belangrijkste onderdeel voor het opslaan van informatie, een zwevende poort. Een zwevende poort is een elektrisch geïsoleerd gebied waarin een elektrische lading kan worden verzameld, die achterblijft nadat het apparaat is losgekoppeld van de voeding. En dit is waar het bij het opslaan van gegevens om draait: ze mogen niet verloren gaan als de media wordt losgekoppeld van de stroomvoorziening.
Als we een elektrische lading accumuleren in de zwevende poort, bereiken we het effect van het sluiten van het n-kanaal, net alsof we een spanning op de poort zouden hebben aangelegd. Als de zwevende poort leeg is, is het n-kanaal open en kan de stroom vrijelijk tussen de bron en de afvoer stromen. Daarom wordt een lege zwevende poort gewoonlijk geïnterpreteerd als een logische één, en een geladen zwevende poort die het n-kanaal sluit als een logische nul.
Vanuit het perspectief van een gebruiker zijn we gewend om gegevens te adresseren in de logische structuren van bestandssystemen. Elke dag gebruiken we partities, bestanden en mappen. Als we een beetje geïnteresseerd zijn in computers, weten we ook van clusters en sectoren. NAND-geheugen zijn op hun beurt waarschijnlijk niet geïnteresseerd in computers, omdat ze geen idee hebben van sectoren.
LBA-sectoren worden gebruikt bij de communicatie tussen verschillende apparaten en software. SSD-schijven accepteren opdrachten om bewerkingen uit te voeren op specifieke LBA-adressen en sturen deze terug naar de externe interface voor compatibiliteit met communicatieprotocollen zoals het ATA-protocol. De interne communicatie tussen de controller en geheugensystemen wordt echter uitgevoerd in overeenstemming met de ONFI-standaard.
Volgens deze standaard worden gegevens geadresseerd in pagina's en blokken. Een pagina is de minimale eenheid van lezen en schrijven. De grootte komt overeen met de grootte van het paginaregister en bedraagt momenteel ongeveer 16 kB. Ja, dit is het equivalent van 32 LBA-sectoren van elk 512 B, die de controller uit de juiste pagina verwijdert als reactie op het verzoek van de computer.
Naast gebruikerssectoren bevat de pagina ook redundante informatie waarin verschillende soorten gegevens zijn opgeslagen die nodig zijn voor de juiste werking van het medium. De structuur voor het ordenen van gebruikersgegevens en redundante informatie binnen een pagina wordt het paginaformaat genoemd. Hoe weet de verwerkingsverantwoordelijke op welke pagina de sector die hij zoekt zich bevindt? Hiervoor is het subsysteem voor het vertalen van logische adressen naar fysieke verantwoordelijk, waar we later nog een paar keer op terugkomen.
De volgende adresseringseenheid is een blok van enkele tot zelfs enkele honderden pagina's. Dit is de minimale gegevenswiseenheid. In tegenstelling tot magnetische media kunnen Flash-geheugen de vorige inhoud niet rechtstreeks overschrijven. We kunnen alleen transistors programmeren waarvan de zwevende poorten eerder zijn verwijderd - ontdaan van elektronen. Daarom retourneren gloednieuwe of volledig lege chips die op de programmeur worden gelezen de waarde 0xFF. Deze waarde retourneert ook lege blokken en niet-geprogrammeerde volggedeelten van pagina's als er dergelijke ongebruikte gebieden in de pagina-indeling zijn.
Omdat we in het geval van Flash-geheugen niet de fysieke mogelijkheid hebben om bestaande inhoud direct te overschrijven, kunnen we alleen lege zwevende poorten van transistors opslaan (programmeren). Daarom is het noodzakelijk om drie basisbewerkingen te ondersteunen: het programmeren van de gewenste inhoud, het lezen ervan en het verwijderen van verouderde gegevens. Bewerken vanaf de fysieke kant houdt in dat de originele inhoud in de buffer wordt gelezen, gewijzigd en op een fysiek andere locatie wordt opgeslagen. Hier raken we opnieuw het vertaalsubsysteem aan, dat de overdracht van LBA-adressen naar een andere plaats en de bestemming van hun oorspronkelijke locatie moet registreren voor verwijdering.
De verwijderde blokken kunnen worden gebruikt tijdens daaropvolgende schrijfbewerkingen en vervolgens zullen er nieuwe geschikte LBA-adressen aan worden toegewezen in de vertaaltabellen. Flash-NAND-chips zijn ontworpen om geleidelijk te verslijten. Dit heeft te maken met de manier waarop elektronen tijdens het programmeren in de zwevende poorten worden geplaatst en bij het verwijderen worden vrijgegeven. Omdat de zwevende poort elektrisch gescheiden is van de rest van de transistor door een isolator, moeten we, als we er elektronen in willen plaatsen of vrijgeven, de potentiële barrière overwinnen die door de isolator wordt gecreëerd.
Deze taak wordt meestal uitgevoerd met behulp van het Fowler-Nordheim-tunnelingfenomeen dat bekend is uit de kwantummechanica. Fowler-Nordheim-tunneling maakt gebruik van de golfeigenschappen van elektronen om de potentiële barrière te overwinnen, maar vereist het gebruik van hogere spanningen, die enkele of zelfs 20 V kunnen bereiken. Deze operatie gaat gepaard met energieverliezen die worden gedissipeerd in de vorm van elektrische werkwarmte (Joule-warmte, die we het beste kennen van de werking van de systemen waarop we de radiatoren moeten plaatsen en van elektrische kachels) en belast de isolator, wat na verloop van tijd tot schade leidt. De aangetaste isolator houdt niet langer de lading vast in de zwevende poort, waardoor elektronen ontsnappen en er gegevens lekken.
Bij het uitlezen wordt een spanning aangelegd tussen de bron en de afvoer (we controleren of het n-kanaal open of gesloten is, en dus indirect of de zwevende poort leeg of geladen is). Als de transistor open is, interpreteert de controller deze als een logische één, en als hij gesloten is, wordt deze geïnterpreteerd als een nul. Deze handeling belast de zwevende poortisolator niet en is daarom neutraal voor de levensduur van het systeem. Daarom wordt de levensduur van NAND-chips gemeten in het aantal schrijf-/wiscycli.
Flash-NAND-geheugen waren in hun begindagen erg duur, dus het is niet verrassend dat ze op zoek waren naar een manier om de verhouding tussen capaciteit en prijs te verbeteren. Eén manier om de capaciteit van de chips te verdubbelen was door twee databits in één transistor te plaatsen. Dit effect kan worden bereikt door de zwevende poort op te laden tot een bepaald niveau, wat een op passende wijze gecontroleerde sluiting van het n-kanaal veroorzaakt. Om twee bits in één transistor te kunnen opslaan, moeten we 4 logische toestanden onderscheiden (00, 01, 10 en 11), en daarom correspondeert 4 met deze toestanden met zwevende poortladingsniveaus.
Het is logisch dat accountants dit idee leuk vonden en verwachtten dat ingenieurs de multi-state technologie verder zouden ontwikkelen, maar zo eenvoudig was het niet. Door het derde bit in de transistor te plaatsen, wordt de capaciteit van het systeem niet langer verdubbeld, maar slechts toegenomen gehalveerd. Dus wat gebeurt er met de ladingsniveaus van de transistor? Ja, we moeten hun aantal nog verdubbelen. Als we maar liefst drie bits in één transistor willen plaatsen, moeten we 8 ladingsniveaus onderscheiden die overeenkomen met logische waarden van 000 tot 111. En natuurlijk vertaalt het toevoegen van elke volgende bit aan de transistor zich in een toename van de capaciteit, van het systeem in steeds mindere mate, terwijl tegelijkertijd een exponentiële toename van de vereiste onderscheidbare poortladingsniveaus zweeft.
De verslechterende signaal-ruisverhouding als gevolg van de steeds kleinere kloof tussen spanningswaarden die daaropvolgende logische toestanden vertegenwoordigen, bevordert leesfouten en bitfouten. Ook de bediening van programmeertransistors moet steeds nauwkeuriger gebeuren, omdat er ook tijdens het schrijven fouten kunnen optreden. Het introduceren van elektronen in zwevende poorten met behulp van kwantummechanica levert geen herhaalbare precisie en nauwkeurigheid op. Hooguit is het mogelijk om deze poorten op te laden met ongeveer het benodigde aantal elektronen. Dit betekent dat veel zwevende poorten ladingen bevatten met waarden die vergelijkbaar zijn met aangrenzende logische toestanden, en dat sommige andere toestanden vertegenwoordigen dan de bedoelde.
Theoretisch zou het mogelijk zijn om op elke schrijffout te reageren door de handeling te herhalen, maar in de praktijk is dit niet mogelijk. Bij het herprogrammeren van een pagina van duizenden bytes, d.w.z. tienduizenden bits, is het zeer waarschijnlijk dat sommige fouten opnieuw zullen optreden tijdens de volgende schrijfbeurt. Op deze manier kunt u zich verheugen op een succesvolle voltooiing van de schrijfbewerking. Laten we niet vergeten dat elke volgende schrijfbeurt het systeem in beslag neemt en ons dichter bij de uiteindelijke mislukking brengt. Daarom moet u, als het aantal fouten acceptabel klein is, het streven naar perfectie opgeven en vertrouwen op de wiskunde van ECC-correctiecodes.
Toen systemen op de markt kwamen die twee bits in één transistor konden opslaan, werden oudere systemen die één bit aan gegevens per transistor opsloegen SLC (Single Level Cell) genoemd, terwijl systemen met twee bits per transistor MLC (Multi Level Cell) werden genoemd. De volgende systemen die drie bits in elke transistor opslaan zijn TLC (Triple Level Cell). De nieuwste momenteel beschikbare Flash-NAND-geheugen zijn gemarkeerd met QLC (Quad Level Cell) en slaan 4 bits op in elke transistor. En aangezien de MLC aanduiding soms ook generiek wordt gebruikt om naar alle soorten multi-state-geheugens te verwijzen , gebruiken sommige minder eerlijke verkopers deze afkorting ook om inferieure TLC en QLC chips aan te duiden.
Het plaatsen van opeenvolgende stukjes informatie in de transistor verlaagt niet alleen de signaal-ruisverhouding, maar heeft ook een negatieve invloed op de prestaties en levensduur van Flash-NAND-geheugen. Voor het uitlezen moet de open spanning van de transistor worden vergeleken met verschillende referentiespanningswaarden, wat veel tijd kost. Het programmeren gebeurt ook in verschillende fasen, wat niet alleen resulteert in een langere bedrijfstijd, maar ook in een grotere belasting van de zwevende poortisolatoren. Als gevolg hiervan gaat de isolator sneller achteruit en daalt de levensduur van de systemen, die in het geval van SLC-geheugen meer dan 100.000 wis-/schrijfbewerkingen bedroegen, voor MLC-geheugen naar een nog steeds redelijk niveau van enkele duizenden wis-/schrijfcycli. Voor TLC-geheugen liggen de door fabrikanten opgegeven waarden meestal binnen het bereik van 3-5 duizend cycli, maar de zwakste systemen van deze klasse zijn slechts bestand tegen ongeveer 1.500 cycli. In het geval van de nieuwste QLC-geheugens daalt hun levensduur tot enkele honderden (doorgaans ongeveer 600 wis-/schrijfbewerkingen).
Vanwege de drastische afname van de duurzaamheid van NAND-chips nemen fabrikanten hun toevlucht tot een marketingtruc om informatie over de wisbronnen te schrijfbewerkingen met de parameter TBW (Total Bytes Written). De informatie dat een schijf van 1 TB een TBW van 1,5 PB heeft, zal zeker veel meer vertrouwen wekken dan dat de daarin gebruikte systemen een levensduur hebben van anderhalfduizend wis-/schrijfbewerkingen. Omdat we deze levensduur kunnen berekenen door de TBW-parameter te delen door de mediacapaciteit. En laten we niet vergeten dat de minimale opname-eenheid een pagina is, vaak 8 of 16 kB, dus we raken deze geschreven bytes meestal veel sneller kwijt dan het op het eerste gezicht lijkt.
Ondanks de exponentieel groeiende problemen die verband houden met het optreden van bitfouten en de levensduur van systemen, kondigen sommige fabrikanten al de introductie aan van systemen die 5 bits in elke transistor opslaan, die moeten worden gemarkeerd met het PLC symbool. PLC-geheugen zouden 25=32 laadniveaus moeten onderscheiden. Met een nominale voedingsspanning van 3,3 V betekent dit de noodzaak om elke ~0,1 V opeenvolgende logische toestanden te onderscheiden. Tegelijkertijd is het moeilijk te verwachten dat de levensduur van dergelijke systemen meer dan 100 wis-schrijfbewerkingen zal bedragen. Voor een herschrijfbaar medium is dat helemaal niet veel.
Dit gebeurt al sinds het begin van de moderne elektronica: er zijn pogingen gedaan om de omvang van componenten te verkleinen, zelfs vóór het verschijnen van geïntegreerde schakelingen. Het verminderen van het lithografische proces maakt de productie mogelijk van steeds goedkopere, kleinere, minder stroomverbruikende, minder warmtegenererende en tegelijkertijd steeds efficiëntere geïntegreerde schakelingen met een hogere mate van integratie. Dit proces is ook van toepassing op flashchips. Als we de omvang van de transistors verkleinen, kunnen we er meer van in een pakket met geïntegreerde schakelingen met gestandaardiseerde afmetingen proppen, en zo de capaciteit ervan vergroten.
Maar een dergelijk proces kan niet tot in het oneindige worden ontwikkeld. Hier worden we geconfronteerd met beperkingen in de vorm van de fysieke grootte van atomen. Een silicium (Si)-atoom heeft bijvoorbeeld een diameter van minder dan een kwart nanometer. In het geval van transistors met afmetingen van enkele nm is het erg moeilijk om hun productie over te brengen van laboratoria naar fabrieksomstandigheden voor massaproductie.
Een ander obstakel voor het verkleinen van transistors is de noodzaak om licht met steeds kortere golflengten te gebruiken in het lithografieproces. Tegenwoordig is het al nodig om golflengtebereiken te gebruiken die nauwelijks binnen de grenzen van extreem ultraviolet liggen. Als transistoren verder kleiner worden gemaakt, zal het gebruik van röntgenstraling noodzakelijk zijn. Het gebruik van golven met een steeds hogere frequentie vereist ook een steeds schoner milieu. Daarom moeten productieprocessen waarbij diep ultraviolet wordt gebruikt, onder vacuümomstandigheden worden uitgevoerd.
Dit probleem wordt ook ervaren door verwerkers, die het steeds moeilijker vinden om aan de marktverwachtingen te voldoen vanwege productieproblemen en grote hoeveelheden afval. De wet van Moore, die decennialang stelde dat het aantal transistors in een chip elk anderhalf jaar verdubbelt, is onlangs gecorrigeerd. Momenteel wordt aangenomen dat het aantal transistors in een systeem elke twee jaar verdubbelt. Het is mogelijk dat de wet van Moore binnenkort helemaal niet meer werkt.
Het verkleinen van de omvang van een transistor betekent ook het verkleinen van de omvang van zijn componenten, inclusief de dikte van de isolatielaag en het volume van de zwevende poort. De dikte van de isolator beïnvloedt de duurzaamheid en effectiviteit ervan bij het vasthouden van de lading die zich in de zwevende poort heeft verzameld. Dit zijn kritische factoren voor betrouwbare gegevensopslag. Een te dunne isolatielaag degradeert niet alleen gemakkelijker tijdens wis- en schrijfbewerkingen, maar zorgt er ook voor dat individuele elektronen kunnen ontsnappen, wat op zijn beurt kan leiden tot een verandering in de ladingstoestand in een zodanige mate dat deze bij het lezen van de inhoud zal worden geïnterpreteerd als een andere logische toestand.
Het volume van de zwevende poort, of preciezer gezegd het aantal atomen dat het bevat, heeft ook een aanzienlijke impact op de informatieopslag. Negatief geladen elektronen hebben de neiging elkaar af te stoten. Dit betekent dat ze ondanks hun kleine formaat niet in grote hoeveelheden in de zwevende poort kunnen worden gestopt. Elektronen moeten zich in de buitenste valentieschil van atomen bevinden, waar voor de meeste elementen hun aantal maximaal 8 per atoom kan zijn. Dit is een beperking die voortvloeit uit de kwantummechanica: de regel van Pauli, die stelt dat elke orbitaal maximaal twee elektronen kan bevatten. Silicium, waarvan transistoren zijn gemaakt, heeft vier van dergelijke orbitalen op de buitenste valentieschil.
De aanbevolen dikte van de isolatielaag voor permanente en veilige dataopslag bedraagt circa 4 nm. Bij systemen gemaakt in 15 nm-lithografie daalt dit tot ongeveer 2 nm. Ook het aantal elektronen dat in de zwevende poort kan worden opgeslagen, neemt af van enkele naar ongeveer duizend. In de praktijk betekent dit dat in de nieuwste TLC- en QLC- systemen het ontsnappen van slechts enkele tientallen elektronen zorgt voor het lezen van een onjuiste logische toestand. En elektronen ontsnappen gemakkelijker naarmate de isolator dunner is. Het mag dan ook geen verrassing zijn dat het hoogste uitvalpercentage optreedt bij systemen gemaakt in lithografie onder 20 nm, die tegelijkertijd drie of vier bits in één transistor opslaan.
Een andere manier om de capaciteit van NAND-chips te vergroten, is door transistors in meerdere lagen boven elkaar te stapelen. Dankzij dit kunt u de geheugencapaciteit vermenigvuldigen zonder de oppervlakte van het systeem te vergroten. Deze oplossing verscheen relatief recent, hoewel het lijkt alsof het idee zelf zo triviaal is dat het al lang geleden had moeten verschijnen. Welnu, deze oplossing is niet zonder nadelen.
Het eerste probleem is inductie tussen aangrenzende transistors. Het kwam ook voor in tweedimensionale vlakke systemen, waardoor parasitaire capaciteiten ontstonden en het risico op bitfouten ontstond. Wat gebeurt er als volgende lagen in het systeem verschijnen? Naast de inductie van de ladingen die zich ophopen in aangrenzende transistors in het vlak, is er extra inductie van de ladingen die zich in de lagen erboven en eronder bevinden.
Een ander probleem is de eerder genoemde Joule-warmte die wordt uitgestoten, vooral tijdens het verwijderen en programmeren van het systeem. We weten al dat dit de degradatie van zwevende poortisolatoren bevordert. Daarom moeten ze zo snel mogelijk in het milieu worden vrijgelaten. De snelheid waarmee de warmte vrijkomt, hangt van veel factoren af, waarvan het warmteafgevende oppervlak de belangrijkste is. Dit is de reden waarom de beste koellichamen veel dunne platen hebben, waardoor een groot oppervlak ontstaat. En met behulp van een radiator kunnen we het oppervlak van de warmteafvoer uit het systeem vergroten. Maar in het geval van meerlaagse systemen ligt de kern van het probleem in het voorkomen van warmteophoping in het systeem en het op de juiste manier verwijderen van warmte tussen de lagen.
Beide problemen nemen toe naarmate het aantal lagen toeneemt en de afstand tussen de lagen kleiner wordt. Het elektromagnetische veld neemt af met het kwadraat van de afstand, dus hoe kleiner de afstanden tussen transistors, hoe sterker de inductieve interacties tussen de ladingen die erin zijn opgeslagen. Thermische interacties zijn ook destructiever wanneer de grootte van objecten die in de siliciumstructuur van de systemen worden geplaatst, wordt verkleind.
Dat weten we al tijdens de werking van Flash-NAND-geheugen, ze verslijten, wat de belangrijkste oorzaak is van bitfouten. Wanneer het aantal bitfouten groter is dan de mogelijkheid om ze te corrigeren met ECC-codes, wordt een bepaald blok doorgaans als beschadigd beschouwd, op de defectlijst opgenomen en van verdere werking uitgesloten. Tot voor kort waren algoritmen voor defectbeheer zo effectief dat er vrijwel geen situaties waren waarin waarschuwingssignalen zoals leesproblemen en schade aan bestanden of logische structuren vóór een storing optraden. En toch treden fouten meestal plotseling op - de computer wordt plotseling gereset of laadt het besturingssysteem niet na het opstarten, en een moment van diagnostiek stelt u in staat vast te stellen dat het BIOS de SSD-schijf niet ziet of herkent onder een vreemde naam en met nul of verdacht lage capaciteit.
Dit komt omdat niet alleen de blokken waarin gebruikersinformatie wordt opgeslagen, versleten en beschadigd zijn, maar ook de blokken met vertaaltabellen die belangrijk zijn voor een correcte gegevensadressering. Als het probleem betrekking heeft op vermeldingen in dergelijke tabellen, is het niet mogelijk om logische adressen correct toe te wijzen aan de juiste fysieke adressen en kan de controller niet correct een afbeelding van logische structuren opbouwen of toegang verlenen tot gebruikersbestanden. Als er fouten optreden in dit (of een ander belangrijk) deel van de firmware, sluit de controller de toegang tot de NAND-chips af. In plaats van dat het mediamodel, als reactie op het BIOS-verzoek om de identificatie te presenteren, in een drukke toestand (opgeschort) blijft of de zogenaamde technologisch paspoort (bijvoorbeeld SATAFIRM S11), en in plaats van de capaciteit van de gehele SSD-schijf, geeft het graag de capaciteit van een beschikbare buffer terug.