Як визначити розмір блоку стирання SSD-накопичувача?


14

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

Я вважаю, nand page sizeце 16 КБ.

Я ніде не можу знайти, що для цього nand erase block sizeє.

Хтось знає відповідь на цю чи загальну пораду щодо розділення цієї конкретної серії SSD?


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

Відповіді:


8

Ця інформація іноді публікується у специфікаціях виробників 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 і нижче 1 М, тому вирівнювання на цій межі відповідатиме їм усім.

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


1

Розмір блоку стирання не має ніякого відношення до вирівнювання, а M500 підтримує збирання сміття, тому продуктивність не є проблемою. Будь ласка, зверніться до другої сторінки цього PDF з сайту мікрона, яка допоможе вам визначити розмір блоку на основі NAND, який використовується у вашому M500.

в міру вирівнювання консультації, будь ласка , ознайомтеся з цим фантастичним суперкористувачем Пост .

Ось скріншот сторінки: введіть тут опис зображення


2
Отже, у цьому випадку, де на цій діаграмі буде вказано розмір блоку стирання?
hbogert
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.