Вступление
Память NAND FLASH очень часто используется для хранения данных на устройствах с различным применением: от небольших мобильных телефонов до дата-центров. Тем не менее, с постоянным уменьшением размеров ячеек флеш-памяти, проблема нарушений во время чтения становится одним из основных факторов надежности устройств. Нарушения во время чтения происходят, когда большое количество данных постоянно считывается с одинаковых ячеек в одном блоке памяти, тем самым вызывая ошибки на соседних ячейках в пределах этого блока.
Как происходят нарушения во время чтения?
Каждая ячейка памяти NAND FLASH имеет транзистор с плавающим затвором (floating gate), управляющий затвор (control gate) которого подключен к линии слов (word-line), а исток (source) и сток (drain) подключены к соседним ячейкам на битовой линии (bit-line). Плавающий транзистор находится под управляющим затвором. Количество электронов, сохраненное в плавающем затворе, определяет пороговое напряжение транзистора.

Для того, чтобы определить, сохранены ли какие нибудь электроны на определенном плавающем затворе, устройство памяти должно прочитать всю линию слов. Для того, чтобы прочитать ячейки на выбранной линии (отмечена светло-зеленым), более высокое напряжение должно быть подано на соседние линии (отмечены темно-зеленым) в том же блоке. Между тем, только одна ячейка будет прочитана в битовой линии, то есть будет определено ее значение 0 или 1. Более высокое напряжение на соседних ячейках транзистора привлекает электроны на плавающий затвор, немного увеличивая пороговое напряжение с каждой операцией чтения, тем самым, «нарушая» покой соседних ячеек во время процесса чтения. Со временем, пороговое напряжение соседней ячейки, которая находится в «незапрограммированном» (значение 1) состоянии и постепенно накапливает заряд, увеличивается, и может перевести ячейку в «запрограммированное» состояние, то есть в значение 0. Этот феномен известен как нарушения во время чтения, и после перехода ячейки в «запрограммированное» состояние, ее значение не изменится, пока ячейка не будет перезаписана.
Решения Transcend
Эфект нарушения во время чтения может быть ослаблен при уменьшении циклов чтения. Transcend предлагает три разных решения этой проблемы:
- Алгоритм выравнивания износа: эта функция равномерно распределяет использование ячеек флеш памяти среди доступного массива, таким образом все данные равномерно записываются в блоках памяти.
- Ранний перенос: эта функция определяет и корректирует потенциальные ошибки данных. Если ошибки битов в блоке превышают верхнее значение, то данные переносятся в другой блок, а оригинальный блок стирается. (Примечание: некоторые модели не имеют этой функции).
- Повторное чтение: эта функция регулирует опорное напряжение чтения, тем самым устраняя ошибки чтения.