Waarom het zo moeilijk te geloven is dat een USB-stick met 400MB/sec kan schrijven – en toch nauwkeurig blijft
Kleine cellen, enorme snelheid, en toch nauwkeurig. Geen magie, maar techniek.
Op een gegeven moment zie je een USB-stick met een opgegeven snelheid van 400MB per seconde en denk je … dat kan niet echt zijn. Of in elk geval niet op een manier die ook nog nauwkeurig is.
Het voelt te snel. Te strak. Te perfect. Alsof er ergens iets moet worden opgeofferd.
Dat gevoel is niet verkeerd – het is alleen gebaseerd op hoe wij snelheid in de echte wereld begrijpen. Als mensen sneller werken, ontstaan er fouten. Als systemen zich haasten, wordt het slordig. Dus wanneer je “400MB per seconde” hoort, vertaalt je brein dat stilletjes naar: “er wordt waarschijnlijk ergens iets overgeslagen.”
Maar flashgeheugen werkt niet zoals wij denken dat het werkt.
Het eerste wat je moet begrijpen is dit: een USB-stick schrijft niet één datastroom ontzettend, ontzettend snel weg. Hij schrijft heel veel kleinere stukjes data tegelijk, verspreid over meerdere geheugengebieden die allemaal parallel werken.
Dus in plaats van één proces dat met extreme snelheid beweegt, heb je tientallen kleinere processen die allemaal in een heel gecontroleerd, heel beheersbaar tempo werken. Van buitenaf lijkt het snel, maar van binnen is het georganiseerd, verdeeld en doelbewust.
Denk aan een magazijn.
Als één persoon elke seconde 400 dozen in een vrachtwagen zou moeten laden, zou het chaos zijn. Dozen zouden vallen, verkeerd gelabeld worden of helemaal gemist worden. Dat is het mentale beeld dat de meeste mensen hebben wanneer ze “400MB per seconde” horen.
Maar dat is niet wat er gebeurt.
Stel je in plaats daarvan 40 transportbanden voor, met aan elke band medewerkers die één doos tegelijk plaatsen. Elke doos wordt gescand, gecontroleerd en correct neergezet voordat hij verdergaat. Niemand hoeft te haasten. Niemand raakt overbelast. En toch is de totale output enorm, omdat alles tegelijk gebeurt.
Zo haalt flashgeheugen hoge snelheid zonder nauwkeurigheid op te offeren.
In de USB-stick werkt een controller als een verkeersregelaar. Hij splitst binnenkomende data op in kleinere stukken en verdeelt die stukken over meerdere NAND-geheugenchips. Elke chip schrijft zijn deel zelfstandig weg, vaak parallel aan de andere chips. Het systeem is ontworpen om prestaties op te schalen door inspanning te vermenigvuldigen, niet door één enkel pad voorbij zijn limieten te duwen.
En hier wordt het nog interessanter.
Flashgeheugen is niet perfect – het corrigeert zichzelf voortdurend
Wat je gemakkelijk mist, is hoe constant dit proces eigenlijk is. Elk klein stukje data dat naar flash wordt geschreven, wordt direct gecontroleerd en zo nodig gecorrigeerd voordat het systeem verdergaat. Dit is geen eenmalig vangnet – het gebeurt continu over alle geheugengebieden tegelijk, terwijl er alweer nieuwe data wordt geschreven. Het systeem is voortdurend tegelijk aan het schrijven, verifiëren en bijsturen.
Dit is het deel dat de meeste mensen niet beseffen, en het is precies wat het hele systeem laat werken.
NAND-flashgeheugen is van zichzelf niet perfect. Op fysiek niveau betekent data opslaan dat er elektrische lading in piepkleine cellen wordt geplaatst. Die lading kan een beetje verschuiven. Schrijfacties kunnen net iets naast hun doel terechtkomen. Kleine fouten zijn niet alleen mogelijk – ze worden verwacht.
Daarom is het hele systeem om die realiteit heen gebouwd.
Elke keer dat data wordt geschreven, controleert de controller het resultaat. Als iets niet helemaal klopt, stelt hij bij en schrijft de data opnieuw. Naast de eigenlijke data wordt extra informatie opgeslagen die specifiek bedoeld is voor foutcorrectie. Wanneer de data later weer wordt gelezen, gebruikt de controller die extra informatie om onregelmatigheden direct te detecteren en meteen te corrigeren.
Op fysiek niveau is schrijven naar NAND niet één enkele handeling – het is een snelle reeks stappen. De controller past een nauwkeurige spanning toe om lading in een cel op te slaan, controleert direct of die lading is terechtgekomen waar die moest komen, en als dat niet zo is, stelt hij bij en probeert hij het opnieuw. Dat gebeurt in microseconden, en het gebeurt keer op keer totdat de data correct is geschreven.
Dit gaat zo snel dat je het nooit ziet. Maar het gebeurt voortdurend.
Met andere woorden: nauwkeurigheid komt niet voort uit perfectie. Het komt voort uit voortdurende verificatie en correctie op machinesnelheid.
Daarom kan een USB-stick data verplaatsen met honderden megabytes per seconde en toch de gegevensintegriteit behouden. Hij schrijft niet blind weg en hoopt dan maar op het beste. Hij schrijft, controleert, corrigeert en bevestigt elke stap onderweg.
Dus de volgende keer dat je een specificatie ziet zoals 400MB/sec, helpt het om dat getal anders te bekijken.
Het is niet één enkel ding dat onmogelijk snel beweegt. Het is een gecoördineerd systeem van heel veel kleinere handelingen die allemaal samenwerken, allemaal worden gecontroleerd en allemaal zijn ontworpen met de verwachting dat fouten zullen optreden – en direct worden hersteld.
Flash is niet snel omdat het haast. Het is snel omdat het vermenigvuldigt.
Hoe dit artikel tot stand is gekomen
Dit artikel is ontwikkeld vanuit praktijkervaring met USB-flashgeheugen, NAND-architectuur en controllergedrag op laag niveau. Het doel was om een concept uit te leggen dat vaak verkeerd wordt begrepen – niet door er meer complexiteit aan toe te voegen, maar door eenvoudiger uit te leggen hoe het systeem werkelijk werkt.
De cartoonachtige laboratoriumillustratie in deze post is bewust gemaakt om het idee zichtbaar te maken dat flashgeheugen werkt via parallelle processen en constante verificatie, niet via één enkele gehaaste actie. Hoewel de afbeelding gestileerd is, laat ze een heel reëel technisch principe zien: veel kleine, gecontroleerde handelingen die tegelijk plaatsvinden en elk afzonderlijk worden gevalideerd voordat ze zijn afgerond.
In de praktijk is dit precies hoe moderne flashsystemen zowel hoge snelheid als data-nauwkeurigheid bereiken. De illustratie is bedoeld om dat concept in één oogopslag begrijpelijker te maken – vooral voor lezers die systemen beter begrijpen wanneer ze zich er een beeld van kunnen vormen.
Alle technische uitleg is nagekeken om ervoor te zorgen dat die correct weergeeft hoe NAND-flashgeheugen zich in echte toepassingen gedraagt.
Auteur: Mike McCrosky – Specialist in USB-opslagsystemen en duplicatie
