fredag den 24. september 2010

SSD og TRIM - hvad er problemet?

Jeg vil her prøve, at forklare hvad der er i vejen med SSD og hvorfor vi behøver TRIM. SSD er som bekendt afløseren til harddisken og ud fra brugeren, er der ikke nogen forskel. Lige med undtagelse af hastigheden. Men den bagvedliggende teknologi er helt anderledes. I stedet for roterende plader, så gemmes alting på chips - lidt lige som på SD memorykortene til dit digitalkamera. SSD er dog lavet til at være meget hurtigere og tåle at få skrevet skrevet data mange flere gange end almindelige memorykort. En anden stor og relevant for dette blogindlæg, er forskellen på, hvordan de to teknologier gemmer data.

Når en harddisk skriver data til pladerne inde i sig, gemmer den data der, hvor styresystemet siger det. En harddisk er delt op i "sektorer" og her kan styresystemet (meget kort fortalt) bede om at få skrevet noget data i sektor 29993918 og så gør harddisken dette. Dette er meget nemt at forstå - gem data et sted og så kan man hente det tilbage nemt. Hos SSD er det meget anderledes. Når styresystemet gemmer data i en "sektor", så bestemmer kontrolleren på SSD selv, hvilken chip og hvor henne på chippen dette gøres. Dette gøres, fordi SSD kun tåler et begrænset antal gange i hver "sektor" og derfor sørger kontrolleren at fordele skrivningerne ud over chipsene og resultatet er meget lang levetid for SSD, inden grænsen for skrivninger er nået.

Men en faktor mere, som gør sig gældende for SSD, er det faktum at man skal slette en "sektor", før man kan skrive data i den - hvis der altså er data i forvejen. Men der er en hage mere med den nuværende SSD: Man kan ikke slette en enkelt "sektor", men kun et helt område. Så hvis SSD vil slette noget, bliver der slettet et helt område med alt data som ligger i det. Når det er sket, kan det nye data blive skrevet. Men lige præcis denne forskel, hvor SSD bliver nød til at slette et helt område, for at kunne overskrive data og en harddisk bare kan overskrive den enkelte sektor er noget, som styresystemerne ikke er vandt til. Normalt fortæller styresystemet ikke harddisken, når ting bliver slettet, men holder blot en tabel over de sektorer som er frie og som er optaget af data. Harddisken ved derfor som sådan ikke, hvilke sektorer, som er frie eller optaget. Denne mangel på viden bliver også overført til SSD, men her er viden nødvendig, for at SSD kan vide hvilke områder, som kan slettes, inden en overskrivning. Se følgende illustration for forklaring.


Hvert felt med et enkelt bogstav (eller mangel på) repræsentere en sektor. En firkant på 3 x 4 sektorer svare til et "område". D svare til, at der er skrevet data i en sektor. S svare til, at der er data i en sektor. I hver sektor med et bogstav, er der data, men som SSD ikke ved, om det er blevet slettet. Vil SSD overskrive noget data, skal et helt område slettes og derfor prioriteres det, at man gemmer data i tomme sektorer Men på et tidspunkt, når SSD er ved at blive fyldt op og så skal den til at flytte data fra flere områder sammen i et enkelt område, for at tømme et område, inden det kan slettes. Dette bliver dog gjort mere besværligt, da det ikke vides hvad der er blevet slettet af styresystemet. Resultatet bliver en langsommere SSD med tiden. Og her kommer TRIM ind i billedet.

TRIM er en kommando, som styresystemet kan sende til SSD, som fortæller hvornår en sektor er blevet slettet og derfor hvornår, at SSD kan tillade sletning af et helt område. Dette giver SSD mulighed for mere optimalt, at slette områder, for at gøre plads til ny data.

4 kommentarer:

Lasse Westy Bech sagde ...

Glimrende forklaring. Hvorfor lægger du den ikke på Wikipedia, der er ikke en Dansk version?

Mvh Lasse Westy Bech

Anders Lund sagde ...

Det kunne da godt være, at man skulle kaste sig i gang med sådan et projekt. Det kræver jo bare, at jeg skriver lidt mere forstående og med henvisninger... og selvfølgelig noget bedre grafik. :-)

Daniel Kjeldsen sagde ...

og et link til en forklaring hvad TRIM er også tak :)

Daniel Kjeldsen sagde ...

og et link til en forklaring hvad TRIM er også tak :)