Under de senaste sex månaderna har jag arbetat med forskning och testning för nästa stora AnandTech SSD-artikel. Jag tänkte att jag hade tillräckligt med tid för att rada upp dess release med de första proverna av nästa generations avancerade SSD:er. När allt kommer omkring verkar det som att alla tog längre tid än väntat att ta fram sina nästa generations kontroller. Jag borde ha vetat bättre.
På CES i år hade vi funktionella nästa generations SSD:er baserade på Marvell- och SandForce-kontroller. Den senare presterade faktiskt ganska nära förväntningarna från slutlig hårdvara. Även om jag fick höra att enheter inte skulle levereras förrän i mitten av andra kvartalet, var det tydligt att förhandsgranskningshårdvaran var nära förestående. Det var tidpunkten som jag inte kunde förutse.
För en vecka sedan, två dagar innan jag hoppade på ett flyg till Barcelona för MWC, kom ett paket till min dörr. OCZ hade skickat mig en preproduktionsversion av deras första SF-2500-baserade SSD: Vertex 3 Pro. Provet var så tidigt att det inte ens hade ett hus, allt jag fick var ett PCB och en anteckning:
Två dagar är inte mycket tid att testa en SSD. Det räcker för att få en bra uppfattning om övergripande prestanda, men inte tillräckligt för att hitta buggar och verkligen undersöka beteendet. Tack och lov är den slutliga versionen av enheten fortfarande minst 1 – 2 månader bort, så den här artikeln kan fungera som en förhandsvisning.
Arkitekturen
Jag har täckt hur NAND Flash fungerar många gånger tidigare, men jag ska koka ner det hela till några väsentliga saker.
NAND Flash är ett icke-flyktigt minne, du kan skriva till det och det lagrar en laddning även om du tar bort strömmen från enheten. Radera NAND för många gånger och det kommer att sluta kunna hålla en laddning. Det finns två typer av NAND som vi hanterar: single-level cell (SLC) och multi-level cell (MLC). Båda är fysiskt lika, du lagrar bara mer data i den senare vilket drar ner kostnader, prestanda och tillförlitlighet. Två-bitars MLC är vad som för närvarande används i konsument-SSD:er, de 3-bitars saker du har sett är endast lämpliga för USB-minnen, SD-kort och andra liknande media.
Skriver till NAND sker på sidnivå (4KB eller 8KB beroende på typen av NAND), men du kan inte radera en enda sida. Du kan bara radera grupper av sidor åt gången i en struktur som kallas ett block (vanligtvis 128 eller 256 sidor). Varje cell i NAND kan bara raderas ett ändligt antal gånger så du vill undvika att radera så mycket som möjligt. Sättet du kommer runt detta är genom att hålla data i NAND så länge som möjligt tills du absolut måste radera den för att ge plats åt ny data. SSD-kontroller måste balansera behovet av att optimera prestanda med behovet av att skriva jämnt till alla NAND-sidor. Konventionella styrenheter gör detta genom att hålla mycket stora tabeller som spårar all data som skrivs till enheten och optimerar skrivningar för prestanda och tillförlitlighet. Styrenheten kommer att gruppera små slumpmässiga skrivningar och försöka omvandla dem till stora sekventiella skrivningar som är lättare att spränga över alla NAND-enheter. Smarta kontroller kommer till och med att försöka omorganisera data medan de skriver för att hålla hög prestanda för framtida skrivningar. Allt detta kräver att kontrollern håller reda på massor av data, vilket i sin tur kräver användning av stora cachar och DRAMs för att göra åtkomst till dessa data snabbare. Allt detta arbete görs för att säkerställa att regulatorn bara skriver data som den absolut behöver skriva.
SandForces tillvägagångssätt har samma slutmål, men tar en helt annan väg för att nå dit. Istället för att försöka ta reda på vad man ska göra med inflödet av data, skriver SandForces tillvägagångssätt helt enkelt mindre data till NAND. Med hjälp av realtidskomprimering och datadedupliceringstekniker försöker SandForces styrenheter att minska storleken på vad värden skriver till enheten. Värden tror fortfarande att all dess data skrivs till enheten, men när skrivningarna träffar styrenheten försöker styrenheten att minska data så mycket som möjligt.
Komprimeringen/dedupliceringen görs i realtid och resultatet är potentiellt fantastisk prestanda. Att skriva mindre data är säkerligen snabbare än att skriva allt. Liknande teknologier används av SAN-lösningar för företag, men SandForces algoritmer är lätta att applicera på konsumentvärlden. Med undantag för stora, mycket komprimerade multimediafiler (tänk videor, MP3-filer) är det mesta av det du skriver till din hårddisk/SSD ganska lätt att komprimera.
Du får inget extra utrymme med SandForces tillvägagångssätt, enheten måste fortfarande rymma samma antal LBA:er som den annonserar till operativsystemet. När allt kommer omkring kan du skriva rent slumpmässiga data till enheten, i vilket fall den skulle bete sig som en vanlig SSD utan någon av dess superkrafter.
Eftersom enheten inte lagrar din data bit för bit utan snarare lagrar hash, är det lättare för SandForce att göra saker som att kryptera alla skrivningar till NAND (vilket det gör som standard). Genom att skriva mindre slipper SandForce också att behöva använda ett stort externt DRAM – dess design har ingen DRAM-cache. SandForce hävdar också att de kan använda sitt skrivlösa tillvägagångssätt för att använda mindre tillförlitlig NAND, för att säkerställa tillförlitligheten som kontrollern faktiskt skriver en viss mängd redundant data. Data skrivs över flera NAND-matriser parallellt tillsammans med ytterligare paritetsdata. Paritetsdata upptar utrymmet för en enda NAND-matris. Som ett resultat avsätter SandForce-drivenheter mer reservyta än konventionella styrenheter.
Vad är nytt
Allt jag har beskrivit hittills gäller både den tidigare generationen (SF-1200/1500) och den nya generationen (SF-2200/2500) av SandForce-kontroller. Låt oss nu gå igenom vad som är nytt:
1) Växla läge & ONFI 2 NAND-stöd. NAND-gränssnitt med högre bandbredd betyder att vi borde se mycket bättre prestanda utan några arkitektoniska förändringar.
2) För att tillgodose den högre bandbredden ökade NAND SandForce storleken på minnena och buffertar på chipet samt fördubblade antalet NAND-matriser som kan vara aktiva på en gång. Slutligen finns det inbyggt 6 Gbps-stöd för att ta bort eventuella flaskhalsar i gränssnittet. Både 1 och 2 kommer att visa sig som mycket högre läs/skrivhastighet.
3) Bättre kryptering. Detta är mer av en företagsfunktion men SF-2000-kontrollerna stöder AES-256-kryptering över enheten (och dubbelkryptering för att stödja olika krypteringsnycklar för separata adressintervall på enheten).
4) Bättre ECC. NAND-densiteter och defektfrekvenser ökar, programmerings-/raderingscyklerna går ner. SF-2000 har som ett resultat en förbättrad ECC-motor.
Alla andra funktioner som fanns i SF-1200/1500 finns i SF-2000-serien.