Een van de belangrijkste onderdelen voor de prestaties van een ssd is de controller. Het brein van een solid state drive stuurt niet alleen het opslaggeheugen aan, maar bepaalt ook wat er in het tijdelijke geheugen komt, en verzorgt de verbinding met de pc. Hoe werkt zo'n controller eigenlijk?
Om daar achter te komen nemen we een kijkje onder de motorkap van ssd-controllers. Wat zit erin, wat doet dat en waarom is de ene controller de andere niet? We nemen daarbij een kort stukje geschiedenis mee, maar kijken natuurlijk vooral naar de controllers die je op dit moment in solid state drives vindt. Nu bepaalt het typenummer op een controller natuurlijk niet volledig hoe een ssd presteert, maar het kan je wel een aardig idee geven van wat je mag verwachten.
In dit artikel bespreken we eigenschappen van de controller zelf en hoe die samenwerkt met nand-flash. Als je een overzicht wil van de werking van een ssd, kun je bij dit artikel op Hardware.info terecht en voor oudere achtergronden over de geschiedenis van ssd's of hoe het ook al weer zat met mlc, tlc en qlc, kun je op Tweakers blijven. We beginnen met een kort overzicht van de werking van de ssd en de rol van de controller daarbij.
Hoe werkt een ssd?
In vogelvlucht: data wordt door de cpu verwerkt en vervolgens opgeslagen, hetzij in registers en caches in de processor voor direct gebruik, hetzij in het werkgeheugen. Zoals bekend is werkgeheugen echter volatiel, ofwel: als de pc wordt uitgezet, is de data verdwenen. Data die bewaard moet blijven, of dat nu software of gegevens zijn, wordt naar het secundaire geheugen gestuurd om opgeslagen te worden, in ons geval naar een ssd. Bij vroege ssd's gebeurde dat via de SATA-interface, de interface die harde schijven ook gebruiken. De meeste systeemdrives maken inmiddels gebruik van NVMe, maar daarover later meer.
Pagereads en -writes
De data voor de ssd komt over de SATA- of NVMe-interface bij de ssd aan en moet vervolgens permanent worden opgeslagen. De ruwe data kan natuurlijk niet lukraak naar een nand-chip gestuurd worden; daarvoor is een controller nodig. Net als bij een harde schijf wijst de controller een stukje opslag aan voor de data die binnenkomt en zorgt hij voor de juiste structuur van de data, zodat die opgeslagen kan worden. Voor ssd's betekent dat dat de data geformatteerd moet worden; de clusters data moeten worden vertaald naar de pages van het nand.
Organisatie van een nand-chip
Een 'chip' is eigenlijk een package met daarin een complete verzameling nand, meestal opgebouwd uit verschillende dies. Als we van klein naar groot gaan, is een chip opgebouwd uit de onderstaande onderdelen.
Nand-cellen: individuele geheugencellen van nand-poorten die 1 of meer bits data opslaan: slc, mlc, tlc en qlc slaan achtereenvolgens 1, 2, 3 en 4bit op. Een cel bestaat uit een floating gate- of charge trap-transistor.
Individuele cellen, georganiseerd in strings, of strengen. Cellen zijn in serie geschakeld, met de source van de ene transistor gekoppeld aan de drain van de volgende. Alle cellen in een string delen hun bitline en hebben een eigen wordline die de gate bedient.
Strings zijn weer gekoppeld in arrays, waarbij de wordlines verbonden zijn en elke string een eigen bitline heeft. Zo krijg je een matrix waarbij een individuele cel uitgelezen kan worden door de juiste bitline (string) te selecteren, gecombineerd met de juiste wordline (cel).
Arrays worden in pages gerangschikt, waarbij een page bestaat uit alle cellen die een wordline gemeenschappelijk hebben. Omdat de wordline gedeeld is in een page, is dit de kleinste eenheid die geprogrammeerd kan worden. Let wel: programmeren kan alleen door een 1 in een 0 te veranderen. Om een 0 in een 1 te wijzigen, moet de cel gewist worden.
Dat wissen kan weer alleen op blockniveau. Een block bestaat uit pages en dus een matrix van word- en bitlines. Omdat voor een erase-actie een hoge spanning nodig is - hierbij wordt quantumtunneling, specifiek Fowler-Nordheim-tunneling, gebruikt - kunnen naburige cellen beïnvloed worden.
Nog een niveau hoger kunnen verschillende blocks georganiseerd worden in een plane. Een nand-die kan weer verschillende planes bevatten.
Een nand-chip bestaat, meestal, weer uit verschillende nand-dies die aan elkaar zijn gekoppeld. De hiërarchie is dus: cel - string - (array -) page - block - plane - die - chip.
Schematische weergave 3d-nand
Hoewel cellen in principe gelezen kunnen worden, wordt in de praktijk altijd een hele page van bijvoorbeeld 4kB gelezen en in een buffer gezet. Die pagebuffer is het niveau waarop het nand met de controller communiceert. Dat scheelt een hoop tijd met de juiste bit- en wordlines selecteren. De reden om nand op blockniveau te wissen, is tweeledig. Enerzijds zou elke cel een eigen aansluiting moeten hebben, wat de metaallagen in een die enorm compliceert; anderzijds zou het wissen veel te lang duren. Het is veel sneller om niet langer gebruikte data in pages naar lege blocks te kopiëren en een heel block te wissen dan om dat per bit te doen. Het FN-tunneleffect heeft namelijk flink tijd nodig en op blockniveau kan dat zonder andere operaties te laten wachten.
Pages en blocks
Waarom zou je niet elke bit data individueel kunnen schrijven, maar zit je met pages en blocks in een ssd? Een page is de kleinste eenheid van data in een ssd die gemanipuleerd kan worden. Een page is meestal 4kB groot en een block bevat verschillende pages. Nu kun je een ssd niet per bit uitlezen of beschrijven; je kunt alleen een page uitlezen en beschrijven. Dat laatste kan echter alleen als de page leeg is. In het geval van het nand van een ssd is een page leeg als alle data een 1 is. Bij elke schrijfactie kan alleen een 1 in een 0 worden veranderd. Vice versa is wissen en dat kan alleen per block. Als een page al beschreven is, dus alleen nullen bevat, kun je geen data meer wegschrijven. Dan moet de page eerst geleegd worden. Dat wissen van data, een erase cycle, kan alleen per block.
Theoretisch moet je dus, om een enkele page te wissen, een volledig block wissen, met tientallen pages. Omdat voor wissen hoge spanningen nodig zijn om de bits van een 0 in een 1 te veranderen, is het aantal keer dat cellen (of blocks) gewist kunnen worden, beperkt. Fabrikanten van nand geven dan ook vaak het aantal program-erasecycli van hun nand op. Voor tlc-nand is dat in de ordegrootte van enkele duizenden keren.
Trim, garbage collection en write amplification
Een van de taken van een ssd- of nand-controller is het beperken van het aantal p/e-cycli, om zo de levensduur van het nand te optimaliseren. Dat kan bijvoorbeeld via wear levelling-algoritmen, die data netjes verdelen over de beschikbare nand-blocks om zo elk stukje nand even hard te laten slijten. Dat gaat hand in hand met het bekende trimcommando, dat een datablock vrijgeeft om gewist te worden. Die data hoeft dan niet van de ene plek naar de andere gekopieerd te worden in het nand.
Data die door het trimcommando is vrijgegeven, kan via weer een andere controllerfeature worden verzameld om gewist te worden: garbage collection. Zo worden pages met door trim vrijgegeven data naar een block gekopieerd, zodat een block met alleen pages met onnodige data wordt gevuld. Dat block kan vervolgens gewist worden.
Al dat interne geschuif en gekopieer van data heeft tot gevolg dat er meer data in het nand wordt geschreven dan je op basis van de output van de processor zou verwachten. Dat fenomeen wordt write amplification genoemd, en het is opnieuw de taak van de controller om dat zoveel mogelijk te beperken.
Overigens is het onvermijdelijk dat gedurende de levensduur van een nand-die een percentage cellen defect raakt. De controller kan daaromheen werken, door de desbetreffende pages als onbruikbaar te markeren. Om niet direct op de geadverteerde capaciteit in te teren, hebben nand-chips (of dies) een bepaalde hoeveelheid reservecapaciteit, of overprovisioning. Dat kan nog worden uitgebreid door de controller-firmwarecombinatie, die nog een extra stuk flash kan markeren voor overprovisioning.
De bouw van een controller
De controller in een ssd is dus geen dom doorgeefluik van data, maar heeft een aantal complexe taken te verrichten. Dat moet ook nog eens razendsnel, want een beetje ssd haalt tegenwoordig snelheden tot 7000MB/s. Dat stelt nogal wat eisen aan een ssd-controller en het is dan ook geen wonder dat een moderne controller flink wat vermogen verstookt en aardig opwarmt. Als je het vergelijkt met een controller in een SATA-ssd, moet een PCIe Gen 4-controller dik tien keer zoveel data verstouwen.
De controller is opgebouwd uit diverse blocks. Dat principe kennen we natuurlijk van processors, socs voor smartphones en gpu's. Aan de interface-kant zit de host interface. Dat is de logica die voor de buscommunicatie zorgt, bijvoorbeeld data vertaalt naar PCIe-streams. Bij moderne consumentendrives is dat het NVMe-protocol en bij 2,5"-drives is dat nog SATA. Een SATA interface control block kan slechts één queue met 32 commando's klaarzetten, terwijl een NVMe-interface maar liefst 65.536 queues met ieder 65.536 commando's ondersteunt. Omdat het host interface control block zoveel data moet verwerken en latency's natuurlijk zoveel mogelijk vermeden moeten worden, is het block opgebouwd uit rtl-logica. Dat is hardware die voor een specifiek doel wordt gemaakt, zoals een asic. Voor extra flexibiliteit kan een cpu-core worden toegevoegd die taken op zich kan nemen die niet in de hardware van het rtl-block is vastgelegd. Voor zo min mogelijk latency, en hoge iops en doorvoer is het handig om zoveel mogelijk taken in hardware vast te leggen, maar dat gaat ten koste van de flexibiliteit en brengt hoge ontwikkelkosten met zich mee.
Helemaal aan de andere kant zit de nand-interface, die de communicatie naar de nand-chips verzorgt. Die interface is belangrijk, want daar wordt een fors deel van de prestatie van de ssd bepaald. Dit flash translation layer control block, of ftl, vertaalt logische adressen naar fysieke adressen op het nand. Die lba-naar-pba-vertaling is een cruciaal onderdeel voor de prestaties van de ssd.
Naast de adresvertaling moet het nand gemanaged worden. De controller houdt bij welke blocks en pages in gebruik zijn, welke corrupt zijn, welke vrij zijn en hoe vaak elk stuk nand beschreven is. Dat wordt allemaal geregeld door het management block, dat zorgt voor garbage collection, wear levelling, caching, bad block mapping en read disturbs. Ook foutcorrectie is een cruciale taak van de controller, die vaak door een aparte engine wordt waargenomen. Eventuele versleuteling wordt ook in het control block geregeld.
De controller kan het nand over meer dan één kanaal aansturen. Een instapcontroller beschikt over bijvoorbeeld slechts twee kanalen of channels. Een channel is de bus naar het nand en hoe meer channels, hoe meer bandbreedte van en naar het nand beschikbaar is. Op een channel aangesloten nand wordt in banks georganiseerd. Een bank kan uit een die, maar ook uit planes binnen een die bestaan. Welke bank actief is binnen een kanaal, wordt geregeld door een chip enable-signaal. Hoe meer ce-signalen ondersteund worden, hoe meer banks per kanaal beschikbaar kunnen zijn dus.
Waarom is dat nuttig? Een nand-die die bezig is met taken als garbage collection of erase-cycli kan niet gebruikt worden voor nuttige lees- en schrijfacties, dus een andere inactieve bank op een kanaal selecteren maakt optimaal gebruik van de beschikbare bandbreedte. Meer kanalen en meer chip-enable-ondersteuning kosten extra pinnen op de controller en extra logica in de controller. Dat maakt complexe controllers met veel kanalen en ondersteuning voor veel banks of chip enables duurder. Dat levert wel hogere prestaties, maar kost ook meer vermogen.
Block-diagram van een controller, in dit geval een Marvell 88SS1321
Tussen de (PCIe-)interface aan de ene kant van de controller en de nand-interface aan de andere kant, wordt het echte werk gedaan. In de regel zijn Cortex-cores verantwoordelijk voor het rekenwerk, al geeft niet elke fabrikant prijs welke hardware hij gebruikt. Dat geldt vooral voor fabrikanten die hun eigen controllers gebruiken, zoals WD en Samsung. Over controllers van thirdparty-fabrikanten als Silicon Motion en Phison is meer bekend. Ze moeten immers hun waren aanprijzen en dan zijn specificaties wel handig.
De controller is verantwoordelijk voor alle processen in de ssd. Een block is gereserveerd voor error correct-algoritmen, het wear-levellingalgoritme, de encryptie en de smart functionaliteit. Ook is er, afhankelijk van de controller, een interface naar cache. Niet elke ssd maakt gebruik van dram-cache; in zo'n geval wordt meestal het systeemgeheugen gebruikt. Ssd's met zo'n host memory buffer-systeem, of hmb, zijn trager dan ssd's met onboardcache. Waarom?
We gaven eerder al aan dat de data die door de processor over de interfacebus wordt geleverd, de logische data, vertaald moet worden naar een fysieke locatie op het nand. Dat is een flinke tabel met data en wordt in de l2p-cache, of logical to physical-cache opgeslagen. Dat is ook waarom ssd's met grotere capaciteit een grotere cache nodig hebben. De tabel om de data op de juiste plek te zoeken, is immers groter. Voor deze cache wordt op ssd's mét dram aan boord meestal ddr4 gebruikt, met snelheden van ongeveer 2133 tot 2667MT/s. Hoe sneller het geheugen is, hoe sneller de locatietabel van data kan worden geraadpleegd. Bij hmb-ssd's, overigens alleen beschikbaar voor NVMe-drives, moet die tabel over de PCIe-bus via de processor naar het werkgeheugen en vice versa worden opgevraagd en bijgewerkt. Uiteraard levert dat prestatieverlies, vooral bij veel kleine lees- en schrijfacties.
Voor de firmware heeft een controller een stukje eprom, zodat je de firmware kunt updaten. Uiteraard is ook wat ram aanwezig voor de Arm-cores en om data te bufferen. De meeste fabrikanten passen een dedicated core toe die de frontend, of interfacekant, bedient, en een tweede core voor de nand-interface. Moderne controllers hebben meer dan die twee cores, om sneller data te kunnen verwerken en meer parallellisme te realiseren.
Nand-snelheid
Een aspect waar we het nog niet over gehad hebben, is de snelheid van de nand-interface. Elke nand-chip heeft een maximale snelheid waarmee data verwerkt kan worden, en die ligt momenteel op ongeveer 1600MT/s. Nand wordt onder meer via de Onfi-specificatie geklassificeerd, maar Samsung en Kioxia (het voormalig Toshiba, dat samen met WD/Sandisk nand produceert) hanteren Toggle-nand. De gangbaarste standaarden voor moderne ssd's zijn Onfi 4.0 met maximaal 800MT/s, Onfi 4.1 tot 1200MT/s, Onfi 4.2 tot 1600MT/s en voor de toekomst Onfi 5.0 (sinds mei 2021) voor snelheden tot 2400MT/s. Onder de Onfi-specificatie kunnen overigens weer verschillende varianten vallen: NV-DDR2, NV-DDR3 en NV-DDR4. NV-DDR3 is de gangbaarste; NV-DDR2 is zo oud dat je het niet meer tegenkomt, en NV-DDR4 is vooralsnog voor zuinige toepassingen bedoeld. Samsungs en Toshiba's Toggle-nand-varianten halen inmiddels 2000MT/s. Een controller voor derden ondersteunt vaak een sloot aan standaarden, niet alleen Onfi- en Toggle-nand, maar ook de verschillende smaken van slc mlc, tlc en qlc, al zijn die eerste twee tegenwoordig zeldzaam.
Huidige nand-snelheden
De snelheden die een controller ondersteunt, zijn natuurlijk slechts één deel van het verhaal. Ook het nand moet de hoge snelheden ondersteunen die een controller mogelijk maakt. Het gangbare 3d-nand wordt sneller naarmate meer laagjes gestapeld worden.
De huidige generatie tlc-nand die je in drives terugvindt, haalt 1200MT/s of, in het geval van Microns 176-laags-3d-nand en SK Hynix' zevendegeneratie-nand, tot 1600MT/s. De joint venture tussen Kioxia en WD gaat met BiCS6 naar 2000MT/s, net als Samsung met V7 van zijn V-nand.
Fabrikant
Snelheid
Lagen
Kioxia (+WD) BiCS6
2000MT/s
162
Micron Gen5
1600MT/s
176
Samsung V7
2000MT/s
176
SK Hynix V7
1600MT/s
176
Als we dat voor het gemak vertalen naar het ruwweg equivalente MB/s, dan kan een enkele nand-chip dus 1600MB/s verwerken. Dat is bij lange na niet snel genoeg voor NVMe-drives met PCIe Gen4 x4-interfaces; die halen immers snelheden tot 7000MB/s. De oplossing is parallelisme; data wordt gelijktijdig naar verschillende nand-devices geschreven, waardoor hogere snelheden mogelijk zijn. Een vierkanaalscontroller (met vier CE's) kan met het snelste nand 4x 1600MT/s, of 6400MT/s, omgerekend slechts 1600MB/s halen. Daar kan eventueel nog wat compressie van data helpen, maar een vierkanaalscontroller is in de regel dus niet snel genoeg voor high-end Gen4 x4-ssd's. Een achtkanaalscontroller (met acht CE's) is dat wel. Die kan immers theoretisch 12.800MT/s per kanaal halen, of 9600MT/s als iets conservatiever nand van 1200MT/s gebruikt wordt. Dat is goed voor 12.800MB/s.
Het nand in de ssd's wordt in de regel als tlc-nand gebruikt, maar vrijwel alle (high-end) controllers kunnen ook een deel van de capaciteit gebruiken als slc-nand. Omdat slc slechts twee spanningsniveaus gebruikt, kan een page veel sneller worden gelezen. Dat komt doordat het veel minder nauw let wat de exacte spanning is die van een streng wordt uitgelezen, terwijl dat met tlc-nand veel nauwkeuriger moet gebeuren. Tlc-nand gebruikt immers acht spanningsniveaus en met een werkspanning van 1,2V of 0,9V moet dat in kleine spanningen opgedeeld worden. Het correct meten van de spanning, met verschillen van slechts een paar tiende volt, duurt dan langer. Ook het schrijven naar slc-nand is sneller, aangezien ook hier veel minder precies een spanning in de cel gepompt moet worden. Met qlc-nand zijn de ladingsverschillen nog kleiner en zal er dus nog preciezer met spanningsniveaus gewerkt moeten worden. De vereiste hogere precisie is dus de belangrijkste reden dat qlc langzamer is dan tlc, terwijl die hogere precisie ook sneller niet meer behaald kan worden door versleten nand. Daarom ligt ook de levensduur van qlc-geheugen lager.
De hoeveelheid als slc gebruikt nand is bij de meeste fabrikanten niet alleen afhankelijk van de capaciteit van de ssd, maar kan ook nog dynamisch worden toegewezen om rekening te houden met lege ruimte op de drive. Aangezien voor elke gigabyte slc-cache drie gigabyte tlc-opslagcapaciteit wordt opgeofferd, kun je op een steeds vollere drive steeds minder cache inzetten.
Een volle drive heeft ook minder ruimte om met pages en blocks te schuiven voor garbage collection en andere huishoudelijke taken. De controller moet dan immers steeds harder zoeken naar lege ruimte en de datatabel steeds vaker raadplegen om plaats te vinden. Dat is nog een reden waarom vollere drives minder goed presteren dan lege drives.
Hoe beter een drive met variabelen als lege ruimte en garbage collection kan omgaan, en hoe beter het schrijven over de cellen wordt verdeeld, hoe langer een drive het kan uithouden. Slc-nand is daar het best in, omdat er minder lang geprogrammeerd hoeft te worden, terwijl tlc en qlc misschien harder slijten door hun langere programmeertijden. Goede wear levelling en voldoende overprovisioning, meer nand-capaciteit inbouwen dan voor de gebruiker zichtbaar is, kan de levensduur optimaliseren.
Fabrikanten geven dan ook niet alleen drie of vijf jaar garantie op hun ssd's, maar ook een total bytes written-indicatie. Dat is de verwachte hoeveelheid data die je naar de drive kunt schrijven, uitgedrukt in terabytes. Je kunt tbw ook omrekenen naar drive writes per day, door de tbw-waarde te delen door het product van de garantieperiode in dagen en de capaciteit. Uiteraard kun je zo ook uitrekenen hoeveel data je dagelijks naar je drive kunt schrijven voordat je redelijkerwijs onherstelbare fouten kunt verwachten. Meestal is dat in de ordegrootte van vele gigabytes per dag bij normaal gebruik. Een rekenvoorbeeld: je ssd heeft een capaciteit van 1TB en een levensduur van 300tbw. Bij een garantie van vijf jaar levert dat 300tbw gedeeld door 1825 dagen is 0,164 drive-writes per dag op. Je zou dan dus elke dag 164GB naar de ssd kunnen schrijven gedurende zijn levensduur.
Controllers: Phison en SM
We bekijken de specificaties, voor zover die bekend zijn, van veelgebruikte controllers. Daarbij kijken we naar de interface, het aantal kanalen en waar mogelijk chip-enablepinnen en -cores. Eveneens waar mogelijk geven we voorbeelden van drives met de genoemde controller.
Silicon Motion Inc
We kijken eerst naar Silicon Motion (SMI) en Phison. Dat zijn de grootste thirdparty-fabrikanten. Ze leveren controllers aan ssd-fabrikanten die ze op hun beurt weer combineren met nand van een van de grote nand-leveranciers, zoals Kioxia, Micron en SK Hynix. SMI en Phison ondersteunen over het algemeen zowel Toggle-nand als Onfi-nand, en bieden bovendien zogeheten turnkeyoplossingen met kant-en-klare firmware, maar vaak is het aanpassen van firmware ook mogelijk. Zo kan een fabrikant een zekere mate van controle uitoefenen over waarin zijn ssd sterk moet zijn.
Controller
Interface / protocol
Cores
Kanalen / CE
Nand-snelheid
Dram
Procedé
Drives
Silicon Motion
SM2264
PCIe 4 x4 NVMe 1.4
4x Cortex R8
8x / 8x max 16TB
1600MT/s
(LP)DDR4(x) (32bit)
12nm
Mushkin Gamma
SM2267
PCIe 4 x4 NVMe 1.4
2x Cortex R5
4x / 8x
1200MT/s
(LP)DDR3(l) (LP)DDR4 (16bit)
28nm
XPG Gammix S50 Lite
SM2267
PCIe 4 x4 NVMe 1.4
2x Cortex R5
4x / 8x
1200MT/s
(LP)DDR4
28nm
Adata Gammix S50 Lite
SM2267XT
PCIe 4 x4 NVMe 1.4
2x Cortex R5
4x / 4x
1200MT/s
Geen (HMB)
28nm
Nnb
SM2265 (onaangekondigd)
PCIe 3 x4 NVMe 1.3
2x Cortex
4x / ?x
1200MT/s
DDR3l
Nnb
Intel 670p
SM2262EN
PCIe 3 x4 NVMe 1.3
2x Cortex R5
8x / 4x
800MT/s
(LP)DDR3(l) DDR4 (16/32bit)
28nm
Kingston KC2000 KC2500 XPG Gammix S11 Pro
SM2263EN
PCIe 3 x4 NVMe 1.3
2x Cortex R5
4x / 4x
800MT/s
(LP)DDR3(l) DDR4 (16bit)
28nm
Kingston A2000 Crucial P1 Intel 660P
SM2263XT
PCIe 3 x4 NVMe 1.3
2x Cortex R5
4x / 4x
800MT/s
Nee (HBM)
28nm
Lexar NM610
Silicon Motion maakt gebruik van een techniek om de levensduur van het nand te optimaliseren, die het Nandxtend noemt. Vanaf de SM2264 wordt een cache van 4kB gebruikt; daarvoor werd 2kB gehanteerd voor Nandxtend. Dankzij ldpc-foutcorrectie wordt data bij lezen en schrijven op integriteit gecontroleerd. Zo worden eventuele foutjes gecorrigeerd waardoor ook ouder nand nog foutloos gebruikt kan worden.
Phison
Controller
Interface / protocol
Cores
Kanalen / CE
Nand-snelheid
Dram
Procedé
Drives*
Phison
PS E26
PCIe 5 x4
Cortex R5 CoXProcessor
Nnb
2400MT/s
Nnb
12nm
In 2022
PS5018-E18
PCIe 4 x4 NVMe 1.4
3x Cortex R5 CoXProcessor
8x / 4x Max 8TB
1600MT/s
DDR4 2667MT/s
12nm
Corsair MP600 Pro Gigabyte Aorus 7000s Sabrent Rocket 4 Plus
Corsair MP400 Silicon Power A80 Silicon Power UD70
De CoXProcessor in sommige Phison-controllers is een dualcore-Arm-processor die de overige cores ontlast. Een van de CoXProcessor-cores neemt het klaarzetten van data naar de nand-interface voor zijn rekening, terwijl de tweede core gebruikt wordt voor het verwerken van data voor de l2p-cache.
Propriëtaire controllers
Samsung
Controller
Interface / protocol
Cores
Kanalen / CE
Nand-snelheid
Dram
Procedé
Drives*
Samsung
Elpis
PCIe 4 x4 NVMe 1.3c
?
8x / 32x (?)
1400MT/s (?)
Lpddr4 1866MT/s
8nm
980 PRO
Phoenix
PCIe 3 x4 NVMe 1.3
5x Arm
8x / 32x (?)
?
Lpddr4 1866MT/s
14nm
970 PRO 970 EVO (Plus)
Polaris
PCIe 3 x4 NVMe 1.3
5x Arm
8x / 8x
?
Lpddr3 1600Mt/s
14nm?
960 PRO 960 EVO
Pablo
PCIe 3 x4 NVMe 1.3
2x Arm
4x / ?
?
HMB
14nm
980
Samsung is marktleider op het gebied van consumenten-ssd's, maar wat er precies schuilgaat achter de ssd, is niet helemaal bekend. De controllers van Samsung worden in eigen beheer gemaakt, maar waar het bedrijf nog pochte dat de Phoenix-controller over vijf Arm-cores beschikt, weten we niet over hoeveel cores de Elpis-controller beschikt. Ook het aantal kanalen en chip-enablepinnen geeft Samsung niet prijs: het spreekt van i/o-queues. Wat de nand-interfacesnelheid betreft weten we dat Samsung bij de vijfde generatie V-nand aankondigde Toggle 4.0 te ondersteunen, wat 1400MT/s zou betekenen. Bij de zesde generatie V-nand sprak Samsung tijdens de Isscc echter van 1200MT/s. Welke snelheid de controller daadwerkelijk hanteert, is dan ook onbekend.
Wel bekend zijn Samsungs trucs om het maximale uit de ssd's te persen, waarbij vooral de TurboWrite-technologie een belangrijke rol speelt. Daarmee wordt een deel van het nand als vaste slc-cache ingezet en een deel als dynamische cache. Dat laatste functioneert uiteraard alleen als de lege ruimte op de ssd dat toestaat.
WD/Sandisk
Controller
Interface / protocol
Cores
Kanalen / CE
Nand-snelheid
Dram
Procedé
Drives*
WD / Sandisk
WD G2
PCIe 4 x4 NVMe 1.4
?
8x / 4
?
DDR4 2667MT/s
16nm
WD Black SN850
WD G1
PCIe 3 x4 NVMe 1.3
3x Cortex (R?)
8x / ?x
DDR4 / HMB
28nm
WD Blue SN550 WD Black SN750
Ook WD (of Sandisk) geeft, in ieder geval over de G2, weinig details vrij. Van de eerste generatie zelfontwikkelde G1-controllers is echter inmiddels redelijk wat bekend. Die controller maakt gebruik van drie Arm Cortex-cores, waarschijnlijk R-cores, en werd op 28nm gemaakt. Als de G2 een verdere ontwikkeling van PCIe Gen4 is, zou het aannemelijk zijn dat de G2 ook drie cores heeft. Beide controllers zijn achtkanaalscontrollers met een onbekend aantal chip-enablepinnen. WD ontwikkelde de controllers om niet van Marvell afhankelijk te zijn en het eigen Sandisk/Toshiba-nand optimaal te benutten.
Ook WD gebruikt slc-caching, inmiddels nCache 4.0, waarbij net als bij Samsung een combinatie van een vaste slc-cache en een dynamisch, op basis van vrije ruimte, gealloceerde cache beschikbaar is. De vaste cache is overigens groter dan bij Samung, wat ook bij vollere drives de prestaties in stand moet houden. Naast caching is uiteraard ook foutcorrectie actief.
Overig
Onder de propriëtaire controllers vallen ook de controllers van Toshiba/Kioxia, maar het bedrijf is daarover bijzonder stil. Voorheen maakte Toshiba-Kioxia weleens gebruik van Marvell-controllers, maar het is onbekend wat het tegenwoordig gebruikt. Intel had in het verleden ook eigen controllers, maar is voor de meeste consumentendrives overgestapt op controllers van derden. Sommige andere fabrikanten plakken een eigen sticker op een controller en noemen dat een eigen controller.
Sinds enige tijd heeft ook Micron eigen controllers, die we bijvoorbeeld op de P5-serie ssd's van Crucial tegenkomen. Micron geeft helaas geen details vrij; we weten alleen dat de DM02A1 een PCIe Gen4-controller met acht kanalen is en het nieuwste Micron-nand (176l) kan combineren met Lpddr4-dram voor caching. Eind 2020 bracht Micron de DM01B2-controller uit, een Gen3-controller.
Controller
Interface / protocol
Cores
Kanalen / CE (max capacitieit)
Nand-snelheid
Dram
Procedé
Drives*
Micron (en Crucial)
DM02A1
PCIe 4 x4 NVMe 1.3
?
8x / ?x iig 2TB
1200MT/s (ook 1600MT/s?)
Lpddr4 4266MT/s
Nnb
Crucial P5 Plus
DM01B2
PCIe 3 x4 NVMe 1.3
2x Cortex- R5
8x / ?x
800MT/s ?
DDR4
28nm
Crucial P5
Kleinere partijen
Marvell en Innogrit
Controller
Interface / protocol
Cores
Kanalen / CE
Nand-snelheid
Dram
Procedé
Drives*
Marvell
88SS1321
PCIe 4 x4 NVMe 1.3c
3x Cortex R5
4x / 8x
1200MT/s
(LP)DDR4(x) Lpddr3 32bit
12nm
Nnb
88SS1322
PCIe 4 x4 NVMe 1.3c
3x Cortex R5
4x / 4x
1200MT/s
HMB
12nm
Nnb
88SS1323
PCIe 4 x2 NVMe 1.3c
3x Cortex R5
4x / 4x
1200MT/s
HMB
12nm
Nnb
88SS1100
PCIe 3 x4 NVMe 1.3
4x Cortex R5
8x / 8x
800MT/s
(LP)DDR4 (LP)DDR3 2400MT/s / 32bit
28nm
Nnb
Marvell was lange tijd een populaire controller voor derde partijen, maar heeft weinig high-end controllers uitgebracht in de laatste jaren. Fabrikanten hebben de eerste Gen4-controllers uit de 1320-serie nog niet breed ingezet. Marvell maakt gebruik van een vierde generatie foutcorrectie, NandEdge, en adverteert zijn controllers als zuinigste ssd-controllers, in ieder geval vergeleken met achtkanaalscontrollers.
Controller
Interface / protocol
Cores
Kanalen / CE (max capaciteit)
Nand-snelheid
Dram
Procedé
Drives*
Innogrit
IG5236 (RainerPC)
PCIe 4 x4 NVMe 1.4
8x / 8x Max 8TB
1200MT/s
(LP)DDR4(l) (LP)DDR3(l) 32bit 2667MT/s
12nm
XPG Gammix S70 Patriot VP4300
IG5221 (RainierQX)
PCIe 4 x4 NVMe 1.4
4x / 8x Max 8TB
2400MT/s
(LP)DDR4 ddr3l 16bit
12nm
Nnm
IG5220 (RainerQ)
PCIe 4 x4 NVMe 1.4
4x / 4x Max 4TB
2400MT/s
HMB
12nm
Adata Legend 840
Shasta+ (IG5216)
PCIe 3 x4 NVMe 1.4
3x Cortex R5
4x / 4x Max 2TB
1200MT/s
HMB
28nm
Lexar NM620
Innogrit is een vrij nieuwe fabrikant van ssd-controllers (sinds 2016) en werd opgericht door onder anderen ex-Marvell-medewerkers. De Rainer-controller is in slechts een paar ssd's ingezet, voornamelijk de XPG Gammix S70 en Patriot VP4300. In beide drives bleken de prestaties zich met rappe concurrenten te kunnen meten.
Er zijn nog enkele andere fabrikanten, zoals het bekende JMicron en het minder bekende MaxioTech, maar die spelen tegenwoordig een zeer kleine rol op de markt van consumenten-ssd's. Realtek heeft tegenwoordig ook weer controllers in consumentendrives. Meestal zijn dat drives voor de instapmarkt. We noemen ze toch even hieronder.
Controller
Interface / protocol
Cores
Kanalen / CE
Nand-snelheid
Dram
Procedé
Realtek
RTS5763DL
PCIe 3 x4 NVMe 1.3
Onbekend
4x / 4x (?)
Onbekend
DDR
XPG SX6000 Lite / Pro Adata Swordfish
RTS5762
PCIe 3 x4 NVMe 1.3
Onbekend
8x / 4x (?)
Onbekend
HMB
XPG SX8100 / 8800 Pro
Maxio-Tech
MAP1001C
PCIe 3 x4 NVMe 1.3
'Multi-core Fusion technology'
8x / 4x Max 8TB
800MT/s
DDR4 (LP)DDR3
Onbekend
MAP1001C
PCIe 3 x4 NVMe 1.3
'Multi-core Fusion technology'
4x /4x Max 2TB
800MT/s
DDR4 (LP)DDR3
Onbekend
MAP1202-C
PCIe 3 x4 NVMe 1.3
'Multi-core Fusion technology'
4x / 4x Max 4TB
1600MT/s
HMB
Onbekend
PCIe Gen5
De logische volgende stap voor PCIe-controllers is uiteraard de stap naar de vijfde generatie Express-lanes. Die verdubbelt de bandbreedte per lane, waardoor ssd's in theorie nóg sneller kunnen worden. Waar vier Gen4-lanes nu een bandbreedte van ongeveer 8GB/s bieden, zou dat met vier Gen5-lanes 16GB/s worden. Zaak is dan uiteraard wel dat de controller over voldoende nand-chips beschikt om die snelheid daadwerkelijk te halen. Vooralsnog lijken fabrikanten van Gen5-ssd's op de zakelijke markt te mikken, maar niets houdt hen tegen ook consumentenproducten met Gen5-interfaces te maken.
Voor dat zover is, zullen er eerst moederborden met PCIe Gen5 voor het M.2-slot moeten komen. De onlangs aangekondigde Alder Lake-processors beschikken weliswaar over Gen5-interfaces, maar die worden vooral voor de x16-slots (vooral voor videokaarten) gebruikt. De op de Z690-moederborden aanwezige M.2-slots worden nog met Gen4-lanes aangesloten. AMD's AM5-platform, dat in 2022 moet verschijnen, zou eveneens PCIe Gen5 ondersteunen. Details daarover zijn echter nog niet bekend.
De eerste drives voor de zakelijke markt, voor servers en datacentra, komen waarschijnlijk in afwijkende formfactors beschikbaar. Deze edsff, of enterprise & data center ssd form factor, is in diverse afmetingen leverbaar. Bovendien kunnen fabrikanten PCIe Gen5-drives aansluiten met vier enkelkanaalsinterfaces (1x4), of met twee tweekanaals- of dualport-interfaces (2x2).
Om je alvast lekker te maken, hebben we de op dit moment bekende Gen5-controllers op een rijtje gezet.
Controller
Interface / protocol
Cores
Kanalen / CE
Nand-snelheid
Dram
Procedé
Drives*
Kioxia CD7
PCIe 5 x4
Weinig details bekend: eerst datacenter (achtkanaals-) en enterprise (zestienkanaals)controllers voor esdff-drives (formfactor lijkt op 2,5"-drives), later NVMe M.2-consumentenproducten.
Samsung
PCie 5 x4
Samsung heeft de PM1743-drive geteased met zesde en zevende generatie V-nand, met beschikbaarheid in Q2 2022.
Het functioneren van een ssd is een bijzonder complexe aangelegenheid. Niet voor niets maken fabrikanten van meer high-end controllers gebruik van multicoreontwerpen. Dat zijn vrijwel altijd Arm Cortex-R-cores, die in staat zijn om in real time opdrachten te verwerken. Sommige aspecten van de ssd kunnen in een controller in hardware worden geregeld, zoals de foutcorrectie.
Het tunen van de controllerfirmware bepaalt echter voor een aanzienlijk deel de uiteindelijke prestaties van de ssd. Natuurlijk zijn het aantal kanalen en chip enables, en de intrinsieke snelheid van het gebruikte nand de primaire factoren die de snelheid bepalen, maar hoe alle componenten samenwerken, is het domein van de controller en de firmware die hem aanstuurt. Zo kunnen wear-levellingalgoritmen de levensduur verlengen en is de controller-firmwarecombinatie verantwoordelijk voor de caching van data.
Controllerfabrikanten die derde partijen toegang geven tot hun firmware, ongeacht of dat in samenwerking is of door hen zelfstandig firmwareaanpassingen te laten maken, geven hen zo opties om te finetunen waar de drive sterk in is. Zo kan een ssd-fabrikant voor hoge sequentiële overdrachtscijfers optimaliseren, om bijvoorbeeld in synthetische benchmarks goed uit de bus te komen, of juist iops en random 4k-prestaties voorrang geven. Dat alles moet wel binnen de beperkingen van de hardware mogelijk zijn uiteraard. Een vierkanaalscontroller met elk vier CE's en 800MT/s-nand gaat met een theoretische maximumsnelheid van maar 1600MB/s geen potten breken, maar een achtkanaalscontroller met acht CE's per kanaal en 1600MT/s-nand kan in theorie 12.800MB/s halen. Die eerste is aardig voor een PCIe Gen3 x2-drive, terwijl de tweede ruimschoots snel genoeg is om een PCIe 4.0 x4-interface volledig te verzadigen.
Met de specificaties van de controllers op de vorige pagina kun je een schatting maken van de prestaties die je maximaal mag verwachten. De echte snelheden in de praktijk zijn afhankelijk van allerlei extra factoren, zoals het gebruikte nand, de organisatie van de nand-dies binnen packages, de snelheid van het nand, de dram-cache, de firmware en waar de fabrikant de nadruk op legt. Zoals je echter aan bovenstaand voorbeeld zag, wordt een ssd met trage controller en dito nand nooit een snelheidsmonster.
Het bovenstaande geeft ook het belang aan van het niet aanpassen van de gebruikte componenten in een ssd. Sommige fabrianten willen immers, zeker met ic-schaarste, van controller of nand veranderen binnen een product. Zo wisselden onlangs Crucial met de P2 en Samsung met de 970 EVO Plus van hardware. De prestaties van eerstgenoemde hadden behoorlijk te lijden onder de verandering van tlc naar qlc, terwijl de Samsung-drive een gevarieerder beeld gaf wat prestatieverschillen betreft. Eerder voerde ook WD veranderingen door aan de WD Blue SN550-drives. XPG hanteert in zijn SX8200 Pro diverse varianten van de SM2262-controller. Niet alle fabrikanten geven duidelijk aan of verschillende nand- of controllerchips gebruikt worden. Hoewel de opgegeven maximale sequentiële snelheden daarmee niet altijd hoeven te veranderen, kunnen allerlei andere variabelen wel veranderen. Een revisienummer om een verandering in de hardware aan te geven, is wat ons betreft dan ook zeer welkom.
Ben ik de enige die de NVME SSD aansluitingen echt op de naar mijn idee meest onhandige plekken op mijn Mobo heeft zitten, welke in mijn geval een Gigabyte AMD X570 AORUS PRO betreft, tussen mijn AIO pomp en grafische kaart. Ik vraag dit aan jullie mede Tweakers, aangezien van deze drives bekend is, dat deze nog wel eens goed warm/heet willen worden, wanneer je deze flink aan het werk zet, en nu wil ik al best een tijd een keer zo'n SSD proberen, waar ik dit tot nu toe allemaal nog met SATA SSD's heb gedaan, alleen moet dit dan geen warmte/hitte problemen gaan opleveren, dus wellicht heeft iemand hier tips waar zoal op te letten wanneer je er een wil aanschaffen, en dan met name hoe je de koeling van deze type drives goed voor elkaar kunt maken. Alvast bij voorbaat dank
[Reactie gewijzigd door SSDtje op 22 juli 2024 22:05]
Ja en nee. Bij mij zit die naast de CPU halve onder mijn geluidskaart die naast de videokaart zit.
Aan de ene kant onhandig, aan de andere kant zit die wel mooi in de flow van mijn CPU fan.
Maar ik kan makers van mijn moederbord het niet kwalijk nemen gezien mijn mobo zo 6 jaar geleden is ontworpen toen dit niet zo gemeengoed was.
Ik heb zelf een koelblokje op mijn SSD geplakt en wordt zo 45 graden met als max 50.
Een ssd mag warm worden. Is zelfs bevordelijk. Maak je niet zo druk om warmte of hitte. De reden waarom het zo dichtbij de socket zit is juist om de korte afstand.
[Reactie gewijzigd door Anoniem: 58485 op 22 juli 2024 22:05]
Another important, yet often-overlooked, factor in SSD endurance is operating temperature. While continuously operating at very high temperatures, the SSD can degrade quickly. In a study held a few years ago, researchers found that "temperature has the most effect on data integrity" and "drives that ran hotter tended to fail the fastest"
Ik bestel veel ssd's op aliexpress, vaak meerdere tegelijk zodat ik mensen kan helpen tegen een lage prijs die met een trage oudere machine te maken hebben.
Anthony van LTT heeft wel eens gezegd: voor alles sneller dan een harddisk is dat een goede oplossing, maar meer ook niet.
Vooral met grote bestanden overzetten heb je te maken met een (vaak) afwezige Dram-cache geheugen en de controllers zijn ook niet echt optimaal.
Ik zou graag eens een roundup willen zien van dit soort ssd's, lijkt mij best eens interessant om te zien of je echt waar krijgt voor je geld en hoe ze presteren in verhouding met de gangbare printplaatjes.
Natuurlijk ook interessant om te zien wat er nu precies onder de motorkap van die dingen zit en waar precies op is bezuinigd.
Ik heb nu bijvoorbeeld bij mijn Xeon upgradeset van Ali een merkloze NVME ssd gekregen, ik kom nog van SATA af, dus voor mij is dit al een wereld van verschil.
En ook bij AS ssd zie ik een grote prestatiewinst tegenover mijn vorige pc.
Ik ben wel erg benieuwd naar jou ervaring betreft de kwaliteit. Vroeger heb ik wel eens SD en XD kaarten gekocht uit China en die waren binnen half jaar kapot of de hoeveelheid geheugen klopt niet.
Daarnaast heb je voor 80 euro al een Samsung 1Tb SSD . Hoeveel goedkoper zijn de Chinese modellen zonder enige garantie?
Ik heb met kwaliteit nog nooit problemen ondervonden, en heb in de afgelopen 3 jaar al zeker 50 exemplaren gemonteerd in systemen.
Russen kopen vaak dit soort onderdelen, dus je hebt ook vaak op aliexpress best wel uitgebreide reviews, hier let ik dan ook meestal op.
Het merk Kingdian kan ik aanbevelen, ook in benchmarks scoren ze nog behoorlijk.
Maar de laatste keer dat ik ssd's heb gekocht was nog voor de zomer, nu met die extra hefftingen kan het ook goed zijn dat het prijsvoordeel (bijna) compleet verdwenen is.
als je nog geen klachten hebt ervaren zijn ze in elk geval betrouwbaarder dan de vroege ocz SSD's
had vroeger 3 vertex 2's ingebouwd, in mijn pc en die van me ouders maar anderhalf jaar later kon ik hetzelfde doen... 3x >.> zijn alle 3 een voor een dood gegaan met steeds een maandje of 2 er tussen >.<, sindsdien heb ik toch meer vertrouwen in samsung....al zitk momenteel op 2 WD M2 ssd's en een normale crucial...die het al 2 jaar goed vol houd ^^ hopelijk dat die ook gewoon een reputatie houden van in algemeen niet veel problemen ^^
Ik herinner mij hun JMF602 controller nog wel ja. SSD's met die controller presteerden redelijk onder lichte workloads maar bij veel random io tegelijk verslikten ze zich en bleef het besturingssysteem hangen tot de ssd terug kon volgen. Er waren wel workarounds maar een goede ervaring werd het nooit.
Later bracht JMicron nog de JMF602B uit wat dezelfde controller was met wat meer cache maar dat was net zo goed een rampzalige controller.
@willemdemoor fijn artikel, heel interessant om eens iets meer te lezen over de techniek achter de SSD. En goed geschreven ook. Een uitstekend Plus artikel wat mij betreft, dat mag best vaker!