silent-efficiency schrieb:
Außerdem schaut euch mal die letzte Folie an. Da ist SLC-NAND bei "Programm Performance" sogar schneller als pram bei 4kbytes Datenpacketen und auch bei der Read-Performance liegt SLC-NAND in der nähe des PRAM-Async
In der Grafik zur "Program Performance" wird allerdings nicht das Löschen berücksichtigt.
Bei Flash musst du ja erst einen Block (z.B. 128 KiB) löschen, bevor du schreiben kannst. Wenn die gelöschten Daten nicht verloren gehen sollen, müssen sie natürlich auch wieder geschrieben werden. Wenn also keine freien Blöcke mehr vorhanden sind, weil der Flashspeicher relativ voll ist, bricht die Schreibperformance merklich ein.
Bei PRAM hat man das Problem nicht, weil vor dem Schreiben nicht gelöscht werden muss. Dafür scheint PRAM halt recht teuer zu sein wie man an der Kapazitätsgrafik in der Folie sieht (die Kapazitätsangaben beziehen sich immer auf marktübliche Größen und marktübliche Größen sind bezahlbare Größen
).
/EDIT: Hier noch Rechnungen für Schreib- und Lesevorgänge anhand der Folien. Zunächst sollen jeweils 512 KiB geschrieben werden und der Speicher ist relativ voll, so dass alle Blöcke mindestens zur Hälfte belegt sind.
Schreiben
Erstmal
MLC-NAND mit halb vollen Blöcken:
Achtmal 128-KiB-Blöcke zur Hälfte lesen => 8*64 Seitenzugriffe (Seitengröße 2K) => 8*64*(60 µs + 2000 Byte * 30 ns/Byte) = 61440 µs
Achtmal 128-KiB-Blöcke löschen => 8*1400 µs = 11200 µs
Vier 128-KiB-Blöcke mit alten Daten zurückschreiben => 4*128 Seitenzugriffe => 4*128*(800 µs + 2000*0,03) = 440320 µs
Vier 128-KiB-Blöcke mit neuen Daten schreiben => 4*128 Seitenzugriffe => 4*128*(800 µs + 2000*0,03) = 440320 µs
Gesamte Dauer für den Schreibvorgang: 95328 µs = 0,953280 s
Effektive Schreibgeschwindigkeit: 512 KiB/0,95328 s =
0,55 MB/s
SLC-NAND mit halb vollen Blöcken:
Achtmal 128-KiB-Blöcke zur Hälfte lesen => 8*64 Seitenzugriffe (Seitengröße 2K) => 8*64*(20 µs + 2000 Byte * 25 ns/Byte) = 35840 µs
Achtmal 128-KiB-Blöcke löschen => 8*1400 µs = 11200 µs
Vier 128-KiB-Blöcke mit alten Daten zurückschreiben => 4*128 Seitenzugriffe => 4*128*(200 µs + 2000*0,025) = 128000 µs
Vier 128-KiB-Blöcke mit neuen Daten schreiben => 4*128 Seitenzugriffe => 4*128*(200 µs + 2000*0,025) = 128000 µs
Gesamte Dauer für den Schreibvorgang: 303040 µs = 0,30304 s
Effektive Schreibgeschwindigkeit: 512 KiB/0,30304 s =
1,73 MB/s
Jetzt
PRAM mit 10 µs word program time (die langsamste Variante):
Kein Löschen notwendig => 0 µs
262144 Wörter zu je 2 Byte schreiben => 262144*10 µs = 2621440 µs
Gesamte Dauer für den Schreibvorgang: 2621440 µs = 2,62144 s
Effektive Schreibgeschwindigkeit: 512 KiB/2,62144 s =
0,20 MB/s
Und noch
PRAM mit 500 ns word program time (die schnellste Variante):
Kein Löschen notwendig => 0 µs
262144 Wörter zu je 2 Byte schreiben => 262144*0,5 µs = 131072 µs
Gesamte Dauer für den Schreibvorgang: 131072 µs = 0,131072 s
Effektive Schreibgeschwindigkeit: 512 KiB/0,131072 s =
4,00 MB/s
Somit kann PRAM beim Schreiben durchaus schneller sein als SLC-NAND.
Beim Lesen von 512 KiB ergibt sich folgendes Bild:
Lesen
MLC-NAND
Vier 128-KiB-Blöcke lesen: 4*128*(60 µs + 2000 Byte * 30 ns/Byte) = 61440 µs
Effektive Lesegeschwindigkeit:
8,53 MB/s
SLC-NAND
Vier 128-KiB-Blöcke lesen: 4*128*(20 µs + 2000 Byte * 25 ns/Byte) = 35840 µs
Effektive Lesegeschwindigkeit:
14,63 MB/s
PRAM Async
262144 Wörter zu je 2 Byte lesen: 262144*0,08 µs = 20971,52 µs
Effektive Lesegeschwindigkeit:
25 MB/s
PRAM Sync
262144 Wörter zu je 2 Byte lesen: 262144*0,01 µs = 2621,44 µs
Effektive Lesegeschwindigkeit:
200 MB/s
Beim Lesen liegt somit die größte Stärke des PRAM. In der Sync-Variante kommt man sogar schon in DRAM-Regionen.
Aufgrund der Ergebnisse würde ich vermuten, dass Samsung hybride SSDs bauen wird mit PRAM und NAND nebeneinander. Beide Speichertypen hängen an einem gemeinsamen Controller mit DRAM-Cache. Häufig gelesene Daten landen im kleineren PRAM, weniger häufiger gelesene Daten kommen dagegen in den NAND. Und um den Performancehit beim Löschen des NAND zu umgehen, könnte der Controller, auch erstmal in den PRAM schreiben und in Idlephasen die Daten aus dem PRAM in den NAND transferieren. Kapazitätsmäßig vermute ich z.B. 256 GB MLC-NAND-Flash, 16 GB PRAM und 128-256 MiB DRAM Cache bei den ersten konkreten Produkten. Preislich scheint PRAM anfangs um den Faktor 30 teurer zu werden als MLC-NAND, d.h. also auch teurer als DRAM.