Как определить размер Nand erase блока SSD?

14

Недавно я взял твердотельный накопитель Crucial M500 240 ГБ (20 нм NAND), и я пытаюсь найти наилучший способ его разбиения. В настоящее время я использую, fdisk -cuначиная с сектора 2048.

Я считаю, что nand page sizeэто 16 КБ.

Я нигде не могу найти, что nand erase block sizeдля этого.

Кто-нибудь знает ответ на этот или общий совет по разделению этой конкретной серии SSD?

Dacto
источник
1
Возможно, потребуется открыть привод и найти номера деталей на чипах NAND.
LawrenceC

Ответы:

7

Эта информация иногда публикуется в спецификациях производителя SSD, но в других случаях ее нет, особенно для карт памяти CF или SD. Если не использовать Google для поиска кого-то, кто провел исследование, вы можете попытаться оценить его самостоятельно с помощью FlashBench. Загрузите его здесь: https://github.com/bradfa/flashbench

Этот инструмент выполняет случайное чтение на SSD и построит таблицу, показывающую время чтения. (Вы должны были уже сделать некоторые записи на SSD, потому что чтение полностью стертых страниц часто симулируется микросхемой контроллера.) Посматривая разрывы времени по размеру блока, вы можете определить, какой размер блока стирания. Вот образец из README:

== Угадай стереть блок и размеры страницы ==

''flashbench -a <device>''

Это простой тест, предназначенный только для чтения, который выполняет небольшие операции чтения через границы разных размеров. Пример:

$ 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

Это показывает время доступа для двух 1024-байтовых считываний вокруг границ выровненных блоков степени двух. Чтение в конце блока 128 МБ занимает около 735 микросекунд, чтение последнего блока этого блока вместе с первым блоком следующего занимает около 1080 микросекунд, а чтение первых двух блоков в блоке 128 МБ - около 780 микросекунд.

Наиболее интересное число здесь - последнее, разница между вторым и средним первым и третьим составляет 324 микросекунды. Все эти цифры остаются примерно одинаковыми для всех устройств от 4 МБ до 128 МБ.

Однако от 2 МБ до 16 КБ последний столбец имеет гораздо меньшее значение. Это указывает на то, что все, что делает карта памяти на границе 4 МБ, не происходит на других границах. Обоснованное предположение здесь состоит в том, что 4 МБ - это размер стираемого блока, также называемый размером сегмента или единицы выделения. Этот размер блока стирания нужно будет использовать в других тестах, следующих за этим.

Точно так же границы 16 КБ и 8 КБ являются особыми. Логическим объяснением этого является то, что карта имеет 8 КБ страниц, но может использовать многоплоскостной доступ для одновременного чтения двух 8 КБ страниц.

Некоторые карты показывают четкий шаблон, используя доступ с определенными размерами блоков, другие карты не показывают никакого шаблона, что означает, что числа должны быть определены по-разному.

Кроме того, карты, которые никогда не были полностью записаны, могут демонстрировать другое поведение, поскольку время доступа к предварительно стертым сегментам отличается от времени записи.

Грег Кеннеди
источник
2

Другая попытка - выравнивание по границе, кратной любому практическому размеру блока.

При такой концепции наиболее распространено выравнивание по границе 1 МБ, поэтому не имеет значения размер блока 4 или 16 КБ; все они будут мультипликаторами от 2 и ниже 1M, поэтому выравнивание по этой границе подойдет всем.

Однако применение этой концепции зависит от того, что вы выравниваете; потеря 1 МБ в начале запоминающего устройства является абсолютно приемлемой, в то время как потеря в другом сценарии может быть невозможной.

Мануэль Арвед Шмидт
источник
1

Размер стираемого блока не имеет отношения к выравниванию, а M500 поддерживает сборку мусора, поэтому производительность не является проблемой. Пожалуйста, обратитесь ко 2-й странице этого PDF-файла с сайта micron, который поможет вам определить размер блока стирания на основе NAND, используемого в вашем M500.

Что касается советов по выравниванию, пожалуйста, ознакомьтесь с этой фантастической записью суперпользователя .

Вот скриншот страницы: введите описание изображения здесь

G Koe
источник
2
Итак, где в этом случае будет указан размер блока стирания?
hbogert