Структура nand-пам’яті, microtechnics, мобільна версія

Структура nand-пам'яті, microtechnics, мобільна версія

Почнемо з того, що розглянемо два типу NAND-пам'яті - а саме SLC- (single-level cell) і MLC- (multi-level cell) пристрої. У SLC приладах одна комірка пам'яті зберігає один біт інформації - саме такі пристрої ми обговорювали в попередній статті. Можливо тільки два стану комірки пам'яті (польового транзистора з плаваючим затвором). Перше стан відповідає зарядженого затвору, а друге, відповідно, розрядженому. Тут все просто - подаємо порогове напруга і за наявністю або відсутністю струму стоку можемо визначити, який біт записаний в дану комірку пам'яті.

MLC прилади відрізняються тим, що одна елементарна осередок може зберігати декілька біт інформації, найчастіше два біта. У таких пристроях розрізняють 4 рівня заряду плаваючого затвора, що відповідає 4 можливим збереженим станів:

Структура nand-пам'яті, microtechnics, мобільна версія

Для читання інформації з такого осередку, на відміну від SLC-пристроїв, необхідно стежити за струмом стоку при декількох різних значеннях граничної напруги на затворі транзистора.

MLC-пам'ять має меншу кількість максимально можливих циклів перезапису в порівнянні з SLC. Крім того, SLC швидше - то є операції читання / запису / стирання виконуються за меншу кількість часу. А оскільки для визначення стану осередку пам'яті використовується тільки одне граничне значення напруги, при використанні SLC-пам'яті менше ймовірність виникнення помилки. Але це не означає, що MLC гірше. MLC-пам'ять, по-перше дозволяє зберігати більшу кількість інформації, а по-друге дешевше. Тобто з точки зору ставлення ціна / якість MLC, в принципі, виглядає краще.

Переходимо до структури NAND-пам'яті 😉

Як ми пам'ятаємо, на відміну від NOR-пам'яті, при використанні NAND ми не маємо доступу до довільної комірки пам'яті. Всі осередки об'єднані в сторінки. А сторінки об'єднані в логічні блоки. Кожна сторінка крім збереженої користувачем інформації містить деякі додаткові дані - інформація про «поганих» блоках, додаткова службова інформація для корекції помилок.

Складність при роботі з NAND полягає в тому, що неможливо отримати доступ до якоїсь конкретної осередку інформації. Запис даних можна робити тільки посторінково, тобто якщо ми хочемо змінити якийсь біт, то нам потрібно перезаписати все сторінку цілком. А прати дані і зовсім можна тільки блоками. Ось для прикладу характеристики мікросхеми NAND-пам'яті NAND128W3A: розмір сторінки - 512 байт + 16 байт додаткової службової інформації, розмір блоку - 16 кбайт, тобто 32 сторінки.

Ще однією проблемою при використанні NAND є те, що кількість циклів перезапису не безкінечне. Таким чином, якщо запис завжди буде проводитися в одну і ту ж сторінку, вона рано чи пізно виявиться пошкодженої. І для того, щоб забезпечити рівномірний знос всіх осередків пам'яті, контролер NAND-пам'яті веде облік кількості циклів запису в кожен окремий блок пам'яті. Якщо контролер бачить, що блок «поганий», то він може пропустити його і зробити запис в наступний блок. Завдяки цьому термін служби носіїв інформації значно збільшується. Якщо ми хочемо записати великий масив даних, то всередині мікросхеми пам'яті всі дані будуть перемішані по блоках (працює алгоритм записи в найменш зношені блоки), а коли постає завдання читання цих даних, контролер NAND-пам'яті впорядкує дані і видасть їх нам в первозданному вигляді.

Зі структурою розібралися, наостанок я б ще хотів трохи розповісти про те, як здійснюється підключення мікросхем NAND-пам'яті.

Якщо ми хочемо підключити пам'ять до мікроконтролеру, то найкраще вибрати контролер, в якому є апаратна підтримка передачі даних по паралельному інтерфейсу. Наприклад, багато STM32 оснащені модулем FSMC, який дозволяє підключити зовнішній пристрій пам'яті. Але в це ми зараз не будемо заглиблюватися, краще залишимо цю тему до майбутніх статей 😉 Можливо, найближчим часом якраз і спробуємо спорудити невеликий приклад для STM32, в якому будемо записувати і зчитувати дані з NAND-пам'яті, так що до зустрічі! )