Wie bestimme ich die Nand-Löschblockgröße der SSD?

14

Ich habe kürzlich eine Crucial M500 240 GB SSD (20 nm NAND) gekauft und versuche herauszufinden, wie ich sie am besten partitionieren kann. Derzeit verwende ich fdisk -cuab Sektor 2048.

Ich glaube das nand page sizeist 16KB.

Ich kann nirgendwo finden, was das dafür nand erase block sizeist.

Kennt jemand die Antwort auf diese oder allgemeine Ratschläge zur Partitionierung dieser bestimmten Serie von SSDs?

Dacto
quelle
1
Möglicherweise müssen Sie das Laufwerk öffnen und die Teilenummern auf den NAND-Chips googeln.
LawrenceC

Antworten:

7

Diese Informationen werden manchmal in SSD-Herstellerspezifikationen veröffentlicht, aber manchmal sind sie nicht vorhanden, insbesondere für CF- oder SD-Speicherkarten. Wenn Sie Google nicht verwenden, um nach einer anderen Person zu suchen, die die Recherche durchgeführt hat, können Sie versuchen, sie mithilfe von FlashBench selbst zu schätzen. Laden Sie es hier herunter: https://github.com/bradfa/flashbench

Dieses Tool führt zufällige Lesevorgänge auf einer SSD durch und zeichnet eine Tabelle mit den Lesezeiten. (Sie sollten bereits einige Schreibvorgänge auf der SSD durchgeführt haben, da das Lesen vollständig gelöschter Seiten häufig vom Controller-Chip simuliert wird.) Wenn Sie nach Zeitunterbrechungen nach Blockgröße suchen, können Sie auf die Größe des Löschblocks schließen. Hier ist ein Beispiel aus dem README:

== Erraten Sie das Löschen von Block- und Seitengrößen ==

''flashbench -a <device>''

Dies ist ein einfacher schreibgeschützter Test, bei dem kleine Lesevorgänge über Grenzen unterschiedlicher Größe hinweg durchgeführt werden. Beispiel:

$ sudo ./flashbench -a /dev/mmcblk0  --blocksize=1024
align 134217728 pre 735µs       on 1.08ms       post 780µs      diff 324µs
align 67108864  pre 736µs       on 1.05ms       post 763µs      diff 300µs
align 33554432  pre 722µs       on 1.04ms       post 763µs      diff 294µs
align 16777216  pre 727µs       on 1.05ms       post 772µs      diff 302µs
align 8388608   pre 724µs       on 1.04ms       post 768µs      diff 299µs
align 4194304   pre 741µs       on 1.08ms       post 788µs      diff 317µs
align 2097152   pre 745µs       on 950µs        post 811µs      diff 171µs
align 1048576   pre 745µs       on 945µs        post 807µs      diff 169µs
align 524288    pre 743µs       on 936µs        post 799µs      diff 165µs
align 262144    pre 746µs       on 948µs        post 809µs      diff 171µs
align 131072    pre 737µs       on 935µs        post 804µs      diff 165µs
align 65536     pre 735µs       on 925µs        post 796µs      diff 159µs
align 32768     pre 735µs       on 925µs        post 800µs      diff 157µs
align 16384     pre 745µs       on 911µs        post 781µs      diff 148µs
align 8192      pre 785µs       on 808µs        post 725µs      diff 53.3µs
align 4096      pre 784µs       on 788µs        post 779µs      diff 5.85µs
align 2048      pre 787µs       on 793µs        post 789µs      diff 4.65µs

Dies zeigt die Zugriffszeiten für zwei 1024-Byte-Lesevorgänge um die Grenzen von Zweierpotenzblöcken. Das Lesen am Ende einer 128-MB-Einheit dauert ungefähr 735 Mikrosekunden, das Lesen des letzten Blocks dieser Einheit zusammen mit dem ersten Block der nächsten dauert ungefähr 1080 Mikrosekunden und das Lesen der ersten beiden Blöcke in einer 128-MB-Einheit dauert ungefähr 780 Mikrosekunden.

Die interessanteste Zahl ist hier die letzte, die Differenz zwischen der zweiten Zahl und dem Durchschnitt der ersten und dritten beträgt 324 Mikrosekunden. Diese Zahlen bleiben für alle Einheiten zwischen 4 MB und 128 MB ungefähr gleich.

Von 2 MB bis 16 KB hat die letzte Spalte jedoch einen viel niedrigeren Wert. Dies zeigt an, dass alles, was die Speicherkarte an einer 4-MB-Grenze tut, nicht an anderen Grenzen geschieht. Die fundierte Vermutung hier ist, dass 4 MB die Löschblockgröße ist, die auch als Segment- oder Zuordnungseinheitsgröße bezeichnet wird. Diese Löschblockgröße muss in anderen Tests verwendet werden, die diesem folgen.

Ebenso sind sowohl 16-KB- als auch 8-KB-Grenzen speziell. Die logische Erklärung hierfür ist, dass die Karte 8 KB-Seiten hat, jedoch mehrere Ebenen verwenden kann, um zwei 8 KB-Seiten gleichzeitig zu lesen.

Einige Karten zeigen nur bei Zugriffen mit bestimmten Blockgrößen ein klares Muster, andere Karten zeigen kein Muster, was bedeutet, dass die Zahlen anders bestimmt werden müssen.

Außerdem zeigen Karten, die nie vollständig geschrieben wurden, möglicherweise ein anderes Verhalten, da sich die Zugriffszeiten auf vorgelöschten Segmenten von den geschriebenen unterscheiden.

Greg Kennedy
quelle
2

Ein weiterer Versuch besteht darin, sich an einer Grenze auszurichten, die ein Vielfaches jeder praktischen Blockgröße ist.

Bei diesem Konzept wird am häufigsten an einer 1-MB-Grenze ausgerichtet, sodass es keine Rolle spielt, ob die Blockgröße 4 oder 16 KB beträgt. Alle diese Werte sind mehrere von 2 und unter 1 m, sodass die Ausrichtung an dieser Grenze für alle geeignet ist.

Die Anwendung dieses Konzepts hängt jedoch davon ab, was Sie ausrichten. Das Verlieren von 1 MB zu Beginn eines Massenspeichergeräts ist völlig akzeptabel, während das Verlieren in einem anderen Szenario möglicherweise nicht so oft der Fall ist.

Manuel Arwed Schmidt
quelle
1

Die Größe des Löschblocks hat keinen Einfluss auf die Ausrichtung, und der M500 unterstützt die Speicherbereinigung, sodass die Leistung kein Problem darstellt. Weitere Informationen finden Sie auf der zweiten Seite dieses PDF-Dokuments auf der Website von micron, auf der Sie die Größe des Löschblocks anhand des in Ihrem M500 verwendeten NAND ermitteln können.

Informationen zur Ausrichtung finden Sie in diesem fantastischen Superuser-Beitrag .

Hier ist der Screenshot der Seite: Geben Sie hier die Bildbeschreibung ein

G Koe
quelle
2
Wo in diesem Fall würde in diesem Diagramm die Größe des Löschblocks angegeben?
Hbogert