Hoe werkt een SSD?

Dat een SSD sneller is dan een klassieke harde schijf hoeven we je waarschijnlijk niet meer te vertellen. Weet je echter ook hoe dit komt?

Een klassieke harde schijf bestaat uit een reeks draaiende magnetische schijven en een arm. Aan deze arm zijn lees- en schrijfkoppen bevestigd, die naar de verschillende locaties op een harde schijf kunnen worden gebracht. Aangezien data op verschillende locaties opgeslagen kunnen zijn en de schijven bovendien nog draaien, duurt het even alvorens de koppen zich op de juiste plaats bevinden. Hierdoor zit er een zekere vertraging op het lezen van en schrijven naar een harde schijf.

NAND-roosters

Zoals de naam al doet vermoeden, heeft een solid state drive geen bewegende onderdelen. Data wordt bij een SSD opgeslagen in verschillende NAND-geheugencellen, die op hun beurt uit floating gate transistors bestaan. Elektronen worden in de floating gate van de transistors bewaard en hoeven niet regelmatig ververst te worden. Dit maakt van NAND flash non-volatile geheugen.

De NAND-geheugencellen worden in roostervorm aan elkaar gekoppeld. Het volledige rooster wordt een blok genoemd en de verschillende rijen van het rooster de pagina’s. Een pagina heeft meestal een grootte van 2K, 4K, 8K, of 16K en een blok bestaat uit 128 tot 256 pagina’s. De grootte van een blok varieert hierdoor tussen de 256 KB en 4MB.

[related_article id=”173228″]

Lawine-effect

Doordat een SSD geen bewegende onderdelen heeft, kan het erg snel data schrijven naar een lege drive. Het overschrijven van data gebeurt echter een stuk trager. Dit komt doordat het uitlezen en schrijven van data op paginaniveau kan gebeuren. Om één pagina data te verwijderen, dien je echter het volledige blok te wissen. Er moet immers een hoge spanning worden aangebracht om gegevens te wissen, waardoor ook de cellen rond de bedoelde cel onder spanning komen te staan.

Dit mechanisme heeft tot gevolg dat wanneer je een bestaande pagina wilt updaten, het volledige blok naar het geheugen gekopieerd moet worden. Het blok wordt hierna van de SSD verwijderd, waarna de gekopieerde content en de geüpdatete pagina naar het lege blok geschreven kunnen worden.

Kort samengevat zal er dus voor één data-update een hoop data geschreven moeten worden. Dit wordt in het vakjargon write amplification genoemd. Wanneer je bijvoorbeeld een aanpassing doet aan een bestand van 4 KB zal het volledige blok herschreven moeten worden. Afhankelijk van het aantal pagina’s in het blok en de grootte van de pagina’s kan er tot 4 MB aan data geschreven moeten worden.

 

Vuilnis

Indien je data wilt schrijven en er geen vrije pagina’s beschikbaar zijn, zal de SSD scannen naar pagina’s die gemarkeerd zijn voor verwijdering, maar nog niet verwijderd zijn. De data kan daarna worden geschreven naar de net gewiste pagina. Hierdoor zal een SSD trager worden na verloop van tijd. Een drive die bijna vol is, zal immers regelmatig het scan- en verwijdermechanisme moeten doorlopen.

Garbage collection is een achtergrondproces dat deze vertragingen voor een stuk moet wegwerken. Tijdens rustige periodes zal het proces op zoek gaan naar oude pagina’s die verwijderd mogen worden. Het zal de goede pagina’s van een blok kopiëren naar een andere blok en het oude blok volledig wissen. Op deze manier zijn er terug pagina’s vrij om beschreven te worden.

Slijtage

Een tweede proces dat zorgt voor minder vertragingen heet TRIM. Dit commando laat besturingssystemen toe om tegen een SSD te zeggen dat bepaalde data niet herschreven moet worden wanneer een volgend blok wordt gewist. Dit verlaagt de hoeveelheid data dat door de drive geschreven moet worden en verlengt de levensduur van een SSD. Schrijf- en leesopdrachten beschadigingen flash immers.

De bovengenoemde slijtage van flash wordt tegengegaan door een proces dat wear leveling heet. Dit mechanisme zorgt er immers voor dat bepaalde NAND-blokken niet vaker worden beschreven en gewist dan andere blokken. Jammer genoeg heeft dit eveneens write amplification tot gevolg. Een goed algoritme zal dan ook een evenwicht tussen beide problemen zoeken.

Controller

Omwille van bovenstaande problemen en mechanismes hebben SSD’s een gesofisticeerde controller. Vaak maakt de controller gebruik van een DDR3-geheugenpool om de NAND’s te managen. Single level cell-caches fungeren dan weer als buffer en verbeteren de prestaties van de drive. Bovendien is de controller via parallelle geheugenkanalen verbonden met het NAND-geheugen, waardoor het aan load balancing kan doen.

De details over SSD-controllers zijn jammer genoeg in een hoop mysterie gehuld. De kwaliteit van controller bepaald immers voor een groot stuk de snelheid van de drive en fabrikanten staan niet te springen om hun geheimen met de concurrentie te delen.

Gerelateerde artikelen

Volg ons

69% korting + 3 maanden gratis

69% korting + 3 maanden gratis

Bezoek NordVPN

Business