De achilleshiel: pages en blocks
Op transistorniveau wordt een geheugencel geprogrammeerd door middel van twee lijnen waar spanning op kan worden gezet, de bitline en de wordline. Door spanning te zetten op de wordline springen elektronen over naar de gate of isolator. Door vervolgens juist spanning te zetten op de bitline kan een cel weer worden gereset. Bij moderne flashchips zijn de cellen gegroepeerd in pages van 4 kilobyte of een veelvoud daarvan, die mooi uitlijnen met de clustergrootte waarmee courante bestandssystemen werken. Een page is de kleinste hoeveelheid data die kan worden uitgelezen of beschreven. Zelfs voor de kleinste aanpassing moet de page compleet worden uitgelezen en opnieuw geschreven.
Dé achilleshiel van flashgeheugen is echter dat er weliswaar per page kan worden gelezen en geschreven, maar niet kan worden herschreven. Dat kan uitsluitend per block, een groep van een bepaald aantal pages. Bij 2d-nand waren dat doorgaans 128 pages, bij 3d-nand soms het dubbele tot wel tienvoudige daarvan. Een bepaald aantal blokken bij elkaar vormt een complete flashchip die een plane wordt genoemd. Binnen één fysieke chip worden doorgaans meerdere (vaak twee, vier of acht) planes gecombineerd. Die fysieke chip is de geheugenpackage die je op de printplaat van een ssd ziet zitten en waarvan er door het steeds verder verhogen van het aantal pages, blocks en planes steeds minder nodig zullen zijn om een bepaalde capaciteit te bieden. Ook het opslaan van steeds meer bits per cel draagt daar vanzelfsprekend aan bij.
Een versimpelde weergave van hoe pages, blocks en planes zich tot elkaar verhouden binnen één die (chip).
Het karakteristieke dat nand alleen per block kan worden herschreven, heeft in theorie grote invloed op de prestaties. Ga maar na: een lege ssd is uit de doos lekker snel omdat hij voor elke schrijfopdracht een frisse, nieuwe page kan aanspreken. Is er eenmaal zo veel geschreven dat de capaciteit van de drive is bereikt, dan moet de ssd voor elke schrijfactie een flinke onderneming uitvoeren. Hij moet op zoek naar een block met (inmiddels weer) lege pages, de inhoud daarvan kopiëren naar de cache, het volledige block wissen en tot slot de combinatie van de oude en nieuwe pages naar dit block schrijven.
Belangrijke crux is dat gegevens die je in het besturingssysteem wist, van oudsher niet direct fysiek van een harde schijf werden weggehaald. Daar was simpelweg geen noodzaak toe: een mechanische harddisk herschrijft immers net zo snel als hij een leeg oppervlak beschrijft. Zodra elk block eenmaal was beschreven, moest de ssd dus voor elke schrijfopdracht bezig met de zojuist omschreven tetris-oefening, waardoor de schrijfprestaties dramatisch inzakten. Bovendien werd de prestatie-impact alleen maar groter terwijl er steeds meer van de steeds grotere pages in een block werden gestopt.