Door Femme Taken

UX Designer

Intel X25-M solid state disk getest

12-12-2008 • 13:02

78

Singlepage-opmaak

Beperkingen en optimalisaties bij ssd

Het ontwerpen van een goed presterende flash-ssd is minder eenvoudig dan het lijkt. Het volstaat bij lange na niet om slechts een meerkanaals flashcontroller te ontwikkelen die wat I/O over de verschillende flashchips verdeelt. Flashgeheugen is met diverse beperkingen en complicaties behept, en om toch tot een acceptabel prestatieniveau te komen, moeten op verschillende gebieden optimalisaties worden ontwikkeld. De fabrikanten Memoright en Mtron hebben in onze vorige ssd-review bewezen dat het mogelijk is ssd's te ontwerpen die overtuigend beter presteren dan traditionele harde schijven. De drives van Mtron en Memoright zijn gebaseerd op snel en duur single level cell-flashgeheugen. Om de prijzen van ssd's op een voor consumenten acceptabel niveau te krijgen, zijn de fabrikanten naarstig op zoek naar mogelijkheden om het goedkopere multi level cell-geheugen toe te passen.

Verschillen tussen slc en mlc

Mlc-geheugen is relatief goedkoop omdat elke cel twee bits aan informatie op kan slaan. Deze verdubbeling ten opzichte van slc-flash wordt bereikt door vier in plaats van twee niveaus van elektrische lading te onderscheiden. Door dit grotere aantal spanningsniveaus is mlc-flash trager dan slc-flash en moeten er complexere foutcorrectiemethodes toegepast worden. Dit resulteert in een dubbele gemiddelde leesresponstijd ten opzichte van slc-flash en een bijna vier keer zo lange programmeertijd. Het wissen van cellen gaat even snel.

Het tweede belangrijke verschil tussen slc en mlc is de levensduur. Flashcellen slijten langzaam na iedere schrijfcyclus: het vermogen om een elektrische lading op te slaan wordt minder. Door het grotere spanningsverschil tussen de bits in een slc-flashcel zal het langer duren voordat deze niet meer geprogrammeerd kan worden. Aangenomen wordt dat een slc-flashcel een levensduur van 100.000 schrijfcycli heeft, terwijl een cel in een mlc-chip slechts ongeveer 10.000 keer beschreven kan worden. Met technieken voor wear levelling zorgen de fabrikanten ervoor dat schrijfacties zo goed mogelijk over de cellen van de flashchip worden verdeeld; de gelijkmatiger slijtage verlengt de levensduur van de chip als geheel.

Write amplification

Een andere complicatie waarmee ontwerpers van ssd-controllers te maken hebben, is dat reeds geprogrammeerde cellen in een nand-flashchip niet willekeurig beschreven kunnen worden. De kleinste structuur die in een nand-flashchip beschreven kan worden, is de zogeheten page. Deze heeft een omvang van bijvoorbeeld 4kB. Een aantal pages samen, bijvoorbeeld 128 stuks, vormen een blok, in dit geval met een omvang van 512kB. Een blok is de kleinste structuur in een flashchip die gewist kan worden. Het wissen van een page houdt in dat alle bits naar hun standaardwaarde worden teruggezet, vaak 1. Vervolgens kunnen de bits door het programmeren van een page omgezet worden naar 0. Het is niet mogelijk om deze bit later terug te programmeren naar 1: eerst zal het gehele blok waarin de te programmeren page zich bevindt gewist moeten worden. Daarna kunnen de pages in het blok geprogrammeerd worden.

Deze beperking zorgt voor een enorme overhead bij aanbrengen van kleine wijzigingen in een blok. Voor het wijzigen van 16kB in een blok van 512kB moet de controller eerst alle gegevens in het blok inlezen om vervolgens het blok te wissen en opnieuw te programmeren. Deze overhead kost niet alleen veel tijd, maar vergroot ook het aantal uitgevoerde schrijfcycli. De verhouding tussen het aantal door het bestandssysteem gevraagde schrijfacties en het aantal fysiek uitgevoerde schrijfacties wordt write amplification genoemd. Zonder optimalisatie ontstaat er tijdens het uitvoeren van typische desktop- en serverworkloads een hoge write amplification. De flashchips zullen dan veel sneller slijten dan op basis van het aantal wijzigingen in het bestandssysteem verwacht mag worden.

In traditionele toepassingen van nand-flash, zoals usb-drives en geheugenkaarten, vormt de slechte performance van kleine random writes geen probleem: er worden vrijwel uitsluitend volledige bestanden die veel groter dan de blokgrootte zijn naar de opslagmedia weggeschreven. In solid state disks die als vervanging voor harde schijven dienen, moeten optimalisaties worden ingebouwd om efficiënt met kleine schrijfacties om te springen. Dit is mogelijk door de wijzigingen naar beschikbare lege pages elders op de ssd te mappen. De oude page wordt als ongeldig gemarkeerd en de controller voert in een later stadium opruimwerkzaamheden uit om blokken met veel ongeldige pages samen te voegen. Fragmentatie van het bestandssysteem speelt bij ssd's door de lage toegangstijd nog nauwelijks een rol, maar op een lager niveau ontstaat wel weer een nieuwe vorm van fragmentatie.

Tweakers.net werkt momenteel aan tests van een doe-het-zelf-ssd die goed aantonen hoe dramatisch slecht de schrijfprestaties van flashgeheugen zijn wanneer de optimalisatie van kleine schrijfacties achterwege blijft. Ook sommige kant-en-klare solid state disks hebben moeite met het verhullen van de beperkingen van flashgeheugen. Ssd's gebaseerd op de JMicron JMF602-controller, zoals de bekende OCZ Core-serie, zijn hiervan een voorbeeld. In omstandigheden waarin kleine schrijfacties worden uitgevoerd, kan de responstijd van deze ssd's zelfs tot vele seconden oplopen. De veel consistentere responstijd van een mechanische harde schijf is hiermee vergeleken verwaarloosbaar.