Controller
Hoe gaat de aansturing van zo’n SSD nu exact in z’n werk? Alle bestaande besturingssystemen sturen de moderne drives aan op een vergelijkbare manier als conventionele harde schijven, immers via logical block addressing. Die LBA’s van het besturingsysteem komen overeen met de sectoren van een harde schijf en op die manier weet het besturingssysteem exact waar welke data zich fysiek op de schijf bevindt. Dat resulteert in het feit dat, wanneer een bestand moet worden weggeschreven, het besturingssysteem een lege LBA uitkiest en de harde schijf de data op de betreffende sector op slaat. Wanneer data moet worden overschreven, bijvoorbeeld wanneer je een nieuwe versie van een Word-document opslaat, wordt simpelweg de data in de betreffende LBA en daarmee op de betreffende sector van de harde schijf overschreven. Een belangrijk gegeven is dat, wanneer een bestand wordt verwijderd, het besturingssysteem stiekem helemaal geen actie aan de harde schijf doorgeeft: de betreffende LBA(‘s) worden in de bibliotheek van het bestandssysteem weer als beschikbaar aangemerkt, maar de op de corresponderende sectors van de harde schijf aanwezige data wordt pas aangepast wanneer het besturingssysteem op het betreffende adres nieuwe data wil plaatsen.
De aansturing van de SSD gebeurt zoals gezegd op een identieke manier; het besturingsysteem ziet immers geen verschil tussen een conventionele harde schijf en zijn moderne opvolger. Zodoende denkt het besturingssysteem ook exact te weten waar welke data fysiek op een SSD staat opgeslagen, maar in werkelijkheid gaat de in de SSD aanwezige controllerchip aan de slag om alle lees- en schrijf opdrachten zo slim mogelijk te verdelen en uit te voeren. Allereerst moeten alle in de drive aanwezige geheugenchips zoals beschreven liefst parallel worden aangestuurd om zo hoog mogelijke prestaties te bereiken. Verder moet de controller er rekening mee houden dat data in een pagina niet herschreven kan worden zonder een geheel blok te verwijderen. Tenslotte moet een controller er rekening mee houden dat de cellen binnen een flashgeheugenchip niet het eeuwige leven hebben: iedere cell kan slechts een bepaald aantal keren beschreven c.q. geleegd worden. Om de levensduur van een SSD’s zo hoog mogelijk te houden zorgt de controller ervoor dat alle cellen binnen de drive vrijwel even vaak gebruikt worden, een taak die in jargon wear leveling wordt genoemd.
Dat resulteert in de volgende werking; wanneer het besturingssysteem een bestand wil wegschrijven en daarvoor een of meerdere beschikbare LBA’s uitkiest, kiest de controller op zijn beurt een of meerdere geschikte pagina’s binnen de geheugenchips, waarbij natuurlijk rekening wordt gehouden met het feit of de pagina’s beschikbaar zijn en welke blokken tot dusver het minst zijn gebruikt. Wanneer een bestand wordt overschreven kan een SSD niet net als een harde schijf de data in de betreffende pagina aanpassen; in de regel wordt een nieuwe pagina gezocht en de nieuwe data daarin geplaatst. Alleen wanneer er geen ongebruikte pagina’s meer beschikbaar zijn, wordt een compleet blok geleegd, waarna de data in één of meerdere pagina’s wordt opgeslagen en – indien nodig – bestaande data van andere pagina’s identiek opnieuw geschreven wordt. Bij het verwijderen van een bestand gebeurt bij een SSD hetzelfde als bij een harde schijf: helemaal niets! Ook een SSD wordt dus niet op de hoogte gesteld van het verwijderen van een bestand. Doordat de controller telkens nieuwe pagina’s gebruikt bij schrijfacties, kan het gebeuren dat een SSD hierdoor vrij snel ‘vol’ loopt, ondank dat je je schijf bij lange na niet vol met data hebt staan. In dit gegeven vinden we de reden waarom SSD’s na intensief gebruik trager kunnen worden.
Een opengewerkte Intel SSD: bovenin de flash-chips, links onderin de controller, rechts onderin het DRAM buffergeheugen.