Микросхемы flash памяти. Программирование микросхем FLASH-памяти. Запись данных в микросхему памяти

Принципиально микросхемы памяти делятся на энергонезависимые, не теряющие информацию при выключении питания, и энергозависимые, содержимое которых при каждом включении считается неопределенным. Первые из них предназначены для хранения программ, констант, таблиц и других, не меняющихся или редко меняющихся данных, и называются ПЗУ (постоянные запоминающие устройства). Вторые предназначены для временного хранения данных, возникающих в процессе функционирования устройства, и называются ОЗУ (оперативные запоминающие устройства). В свою очередь, ПЗУ классифицируются по способу занесения информации и по способу ее стирания, если только такая возможность существует в данном классе ПЗУ. Самым дешевым способом записи является масочное программирование в процессе изготовления кристалла. Микросхемы ЗУ с <прошитой> информации - ROM (Read Only Memory) - невозможно перепрограммировать, и применяются они только при массовом производстве, большой серийности и гарантированной безошибочности заносимого текста. Следующая разновидность ПЗУ - PROM (Programmable Read Only Memory) - поставляется в <чистом> виде и предоставляет пользователю возможность самостоятельно, с помощью программатора, занести требуемое содержимое. Если этот процесс необратим, то такие микросхемы называются OTP (One Time Programmable) - однократно программируемые. Если существует возможность очистки содержимого с последующим занесением нового, то микросхемы называются EPROM (Erasable Programmable Read Only Memory). И, наконец, в зависимости от способа стирания они могут быть либо UV-EPROM, с ультрафиолетовым стиранием, либо EEPROM, с электрическим стиранием. Однако, сложившаяся за последние годы терминология чаще использует аббревиатуру EEPROM за определенной разновидностью памяти, которая, в каком-то смысле, может считаться энергонезависимым ОЗУ.
Собственно ПЗУ с электрическим стиранием принято называть Flash памятью. Отличия между ними достаточно велики. EEPROM допускает при записи произвольный доступ к ячейкам памяти, Flash память предполагает только страничный, то есть с разбивкой на сектора, доступ при стирании/записи. Переписать содержимое единственной ячейки памяти невозможно. При чтении принципиальной разницы между ними нет. Кроме того, программирование Flash памяти - это целый процесс, который требует дополнительных программных шагов для перевода микросхемы в режим программирования и контроля его окончания. В итоге, область применения Flash памяти - тексты программ, таблицы и другие данные, изменение которых или не предполагается вовсе, или допускается, но весьма редко. EEPROM память используется для текущего запоминания данных в процессе работы, при смене констант, настроек (например в телевизоре), с автоматическим их сохранением при выключении питания. В то же время Flash память обладает большей емкостью и меньшей ценой при пересчете на стоимость хранения одного байта информации.
Оперативная память (RAM - Random Access Memory) принципиально делится на два типа: статическая - SRAM и динамическая - DRAM. Первая, при наличии питающего напряжения, может сохранять записанную информацию как угодно долго без всяких обращений к ней. Запоминающей ячейкой является триггер. Вторая требует постоянной <регенерации>, то есть считывания и повторной записи в соответствующие ячейки. Это связано с физической основой хранения, которой в DRAM является конденсатор ничтожно малой емкости, включенный на пересечении строк и столбцов матрицы. Этим достигается сверхвысокая плотность упаковки и большая удельная информационная емкость микросхемы. Платой является необходимость периодически осуществлять цикл регенерации. Также приходится жертвовать энергопотреблением. Микросхемы DRAM применяются сегодня практически только в компьютерах и другой вычислительной технике.
Для нас больший интерес представляют микросхемы SRAM, которые, в свою очередь подразделяются на микромощные со сравнительно небольшим (55 - 120 нс) быстродействием и высокоскоростные (7 - 25 нс) со значительно большим энергопотреблением.
Существуют и другие разновидности ОЗУ, например «Zero-Power» со встроенной литиевой батареей или «Dual-Port» с отличной от обычных системой доступа к информации.


Основные параметры микросхем памяти:
  • информационная емкость. Cпособность хранить определенное число бит двоичной информации;
  • организация микросхем ЗУ. Она может быть различной при одном и том же объеме памяти. Например, 65 536 бит могут выглядеть как 4 096 х 16, или как 8 192 х 8, или в другом сочетании. Внутренняя организация запоминающей матрицы при этом остается неизменной, изменяется только внешний интерфейс и, соответственно, число внешних выводов;
  • время выборки. Bремя от подачи последнего из сигналов, разрешающих чтение до появления на выходе устойчивых данных;
  • потребляемая мощность. Как обычно, существует компромисс между потребляемой мощностью и быстродействием микросхемы;
  • напряжение питания. Общая тенденция к снижению напряжения питания привела к появлению микросхем ЗУ, работающих при 3,3, 2,5 и даже 1,8 вольт;
  • температурный диапазон. Коммерческий, индустриальный или расширенный.
К специфическим параметрам ЗУ относятся такие как: время хранения (часов, лет), число циклов перезаписи , время стирания и другие.

В заключение, необходимо отметить, что микросхемы EEPROM и Flash типов часто имеют последовательный внешний интерфейс обмена данными. Это значительно уменьшает скорость обмена, но, в тех применениях, где она не критична, позволяет экономить число внешних выводов микросхем, занимаемую на печатной плате площадь, число паек.

На сегодняшний день флешки являются самыми популярными внешними носителями данных. В отличие от оптических и магнитных дисков (CD/DVD и винчестеры соответственно), флеш-накопители более компактны и устойчивы к механическим повреждениям. А за счет чего были достигнуты компактность и устойчивость? Давайте же разберемся!

Первое, что следует отметить — внутри flash-накопителя нет движущихся механических частей, которые могут пострадать от падений или сотрясений. Это достигается за счет конструкции — без защитного корпуса флешка представляет собой печатную плату, к которой припаян USB-разъем. Давайте рассмотрим её составляющие.

Основные компоненты

Составные части большинства флешек можно разделить на основные и дополнительные.


К основным относятся:

  1. чипы NAND-памяти;
  2. контроллер;
  3. кварцевый резонатор.
  4. USB-разъем

NAND-память
Накопитель работает благодаря NAND-памяти: полупроводниковым микросхемам. Чипы такой памяти, во-первых, весьма компактны, а во-вторых — очень ёмкие: если на первых порах флешки по объему проигрывали привычным на тот момент оптическим дискам, то сейчас превышают по ёмкости даже диски Blu-Ray. Такая память, ко всему прочему, еще и энергонезависимая, то есть для хранения информации ей не требуется источник питания, в отличие от микросхем оперативной памяти, созданных по похожей технологии.


Однако у НАНД-памяти есть один недостаток, в сравнении с другими типами запоминающих устройств. Дело в том, что срок службы этих чипов ограничен определенным количеством циклов перезаписи (шагов чтения/записи информации в ячейках). В среднем количество read-write cycles равно 30 000 (зависит от типа чипа памяти). Кажется, это невероятно много, но на самом деле это равно примерно 5 годам интенсивного использования. Впрочем, даже если ограничение будет достигнуто, флешкой можно будет продолжать пользоваться, но только для считывания данных. Кроме того, вследствие своей природы, NAND-память очень уязвима к перепадам электричества и электростатическим разрядам, так что держите её подальше от источников подобных опасностей.

Контроллер
Под номером 2 на рисунке в начале статьи находится крохотная микросхема — контроллер, инструмент связи между флеш-памятью и подключаемыми устройствами (ПК, телевизорами, автомагнитолами и пр.).


Контроллер (иначе называется микроконтроллер) представляет собой миниатюрный примитивный компьютер с собственным процессором и некоторым количеством RAM, используемыми для кэширования данных и служебных целей. Под процедурой обновления прошивки или BIOS подразумевается как раз обновление ПО микроконтроллера. Как показывает практика, наиболее частая поломка флешек — выход из строя контроллера.

Кварцевый резонатор
Данный компонент представляет собой крохотный кристалл кварца, который, как и в электронных часах, производит гармонические колебания определенной частоты. Во флеш-накопителях резонатор используется для связи между контроллером, NAND-памятью и дополнительными компонентами.

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

USB-коннектор
В подавляющем большинстве случаев в современных флешках установлен разъем USB 2.0 типа A, ориентированный на прием и передачу. В самых новых накопителях используется USB 3.0 типа А и типа C.

Дополнительные компоненты

Кроме упомянутых выше основных составляющих запоминающего flash-устройства, производители нередко снабжают их необязательными элементами, такими как: светодиод-индикатор, переключатель защиты от записи и некоторые специфические для определенных моделей особенности.

Светодиодный индикатор
Во многих flash-накопителях присутствует небольшой, но довольно яркий светодиод. Он предназначен для визуального отображения активности флешки (запись или считывание информации) или же просто является элементом дизайна.


Этот индикатор чаще всего не несет никакой функциональной нагрузки для самой флешки, и нужен, по сути, только для удобства пользователя или для красоты.

Переключатель защиты от записи
Этот элемент характерен скорее для SD-карт, хотя порой встречается и на запоминающих устройствах USB. Последние нередко используются в корпоративной среде как носители разнообразной информации, в том числе важной и конфиденциальной. Чтобы избежать инцидентов со случайным удалением таких данных, производителями флеш-накопителей в некоторых моделях применяется переключатель защиты: резистор, который при подключении в цепь питания запоминающего устройства не дает электрическому току добираться к ячейкам памяти.


При попытке записать или удалить информацию с накопителя, в котором включена защита, ОС выдаст такое вот сообщение.

Подобным образом реализована защита в так называемых USB-ключах: флешках, которые содержат в себе сертификаты безопасности, необходимые для корректной работы некоторого специфического ПО.

Этот элемент тоже может сломаться, в результате чего возникает досадная ситуация — девайс вроде работоспособен, но пользоваться им невозможно. У нас на сайте есть материал, который может помочь решить эту проблему.

Уникальные компоненты

К таковым можно отнести, например, наличие разъемов Lightning, microUSB или Type-C: флешки с наличием таковых предназначены для использования в том числе на смартфонах и планшетах.

Иногда при разработке устройства возникает потребность сохранять какие-либо данные в энергонезависимую память. В таких случаях обычно используют внутреннюю EEPROM микроконтроллера. Если её недостаточно, то как правило применяются внешние микросхемы EEPROM из серии 24lxx. Микросхемы этой серии очень популярны. Чаще всего их можно встретить в старых мобильных телефонах, некоторых материнских платах, картриджах от принтеров да еще много где. Цена данных микросхем тоже очень привлекательная. Например 24LC16 у нас стоит 11 рублей.
Данная микросхема выпускается в различных корпусах, самые популярные из которых это DIP и SOIC. Микросхема имеет следующую распиновку:

Как видите выводов совсем немного. Итак попробуем разобраться для что к чему.
A0, A1, A2 — в данной микросхеме не используются. Их можно подсоединить к земле или к плюсу питания. В некоторых других микросхемах серии 24lxx, этими выводами можно задавать адрес микросхемы, для того чтобы можно было подсоединить на одну шину i2c аж сразу 8 микрух памяти.
Vss — земля.
SDA — линия данных
SCL — линия тактовых импульсов
WP — Защита от записи. Когда на данном выводе логический 0, то запись в память разрешена. Если подать логическую единицу, то возможно только чтение из памяти.
Vcc — питание микросхемы. Согласно даташиту питается она напряжением от 2.5 вольта до 5.5 вольта.

Подключение к контроллеру.
Подключить память к МК очень просто. Из обвязки потребуются только пара резисторов сопротивлением около 4.7 кОм.

Программное обеспечение

Для работы с памятью была разработана библиотека реализующая следующие функции:

i2c_init — настраивает скорость тактовых импульсов идущих по линии SCL.

Микросхема 24LC16 поддерживает частоту до 400 кГц. Рассчитать частоту можно так:

CPU Clock frequency — частота на которой работает микроконтроллер

TWBR — число записанное в одноименный регистр.

TWPS — предделитель. Значения предделителя задаются битами TWPS1 и TWPS0 в регистре TWSR

Для контроллера Atmega 32 справедлива такая таблица:

i2c_start — отсылает стартовую посылку

i2c_stop — отсылает стоповую посылку

i2c_send — отсылает байт

i2c_recive — принимает байт

i2c_recive_last — принимает последний байт. Отличие от предыдущей функции состоит в том, что когда байт принят, микроконтроллер не отсылает бит подтверждения. Если при приёме последнего байта использовать i2c_recive то линия SDA останется прижатой к земле.

Запись данных в микросхему памяти

Записывать данные можно как в произвольном порядке так и постранично. Поскольку на шине i2c могут быть сразу несколько устройств, то для того чтобы обратится к какому либо устройству нужно знать его семибитный адрес. Адрес микросхемы 24LC16 в двоичном виде выглядит так:

Биты A,B,C служат для выбора блока памяти. Блоков памяти в микросхеме 8 штук по 256 байт каждый. Соответственно биты ABC принимают значения от 000 до 111.

Для того чтоб записать в микросхему байт нужно выполнить следующую последовательность действий:

  1. Инициализировать интерфейс i2c
  2. Отослать стартовую посылку
  3. Отослать адрес микросхемы+адрес блока памяти
  4. Отослать адрес ячейки памяти в которую будет производится запись
  5. Отослать байт данных
  6. Отослать стоповую посылку

Пример: Нужно записать байт 0xFA по адресу 0x101 .

rcall i2c_init
rcall i2c_start
ldi temp,0b 1010 001 0 //Адрес микросхемы где:
// 1010 - адрес микросхемы
// 001 - адрес блока памяти (Ячейка 0x101 принадлежит блоку 1)
// 0
rcall i2c_send
ldi temp,1 //Адрес ячейки памяти. (блок 1, ячейка 1)
rcall i2c_send
ldi temp,0xFA //Загружаем в регистр байт который нужно записать
rcall i2c_send //Записываем байт
rcall i2c_stop

Записывать данные в память можно не только побайтно но и постранично. Размер страницы — 16 байт. Постараничная запись подразумевает следующее: Отправляем адрес нулевого байта нужной страницы и после этого 16 раз отправляем нужные данные. Счётчик адреса будет увеличивать на единицу автоматически. Если отправить данные в 17-й раз, то будет перезаписан нулевой байт, если отправить байт 18-й раз, то он затрет байт номер 1 итд.

Пример : Требуется записать первую страницу блока 0.

rcall i2c_init //Инициализируем интерфейс i2c
rcall i2c_start // Отправляем стартовую посылку
ldi temp,0b 1010 000 0 //Адрес микросхемы где:
// 1010 - адрес микросхемы
// 000 - адрес блока памяти (нас интересует нулевой блок)
// 0 - бит чтения/записи. 0 - запись, 1 - чтение
rcall i2c_send
ldi temp,16 //Адрес первой страницы
rcall i2c_send
ldi temp,0x01 //Загружаем в регистр байт номер 0
rcall i2c_send //Записываем байт
ldi temp,0x02 //Загружаем в регистр байт номер 1
rcall i2c_send //Записываем байт
/// тут пишем остальные байты.....
ldi temp,0x0E //Загружаем в регистр байт номер 14
rcall i2c_send //Записываем байт
ldi temp,0x0F //Загружаем в регистр байт номер 15
rcall i2c_send //Записываем байт
rcall i2c_stop //Отправляем стоповую посылку

Чтение данных из микросхемы
С записью вроде разобрались, теперь приступим к чтению. Чтобы прочитать байт нужно сделать следующее:

  1. Инициализировать интерфейс i2c (если он не инициализировался ранее)
  2. Отправить стартовую посылку
  3. Отправить адрес микросхемы и адрес блока памяти откуда будем читать
  4. Отправить адрес ячейки памяти
  5. Отправить стартовую посылку повторно
  6. Отправить адрес микросхемы и адрес блока памяти с битом «чтение»
  7. Получить байт
  8. Отправить стоповую посылку

rcall i2c_init //Инициализируем интерфейс i2c
rcall i2c_start // Отправляем стартовую посылку
ldi temp,0b1010 011 0 //Адрес микросхемы + адрес 3-го блока памяти.
//Бит чтение/запись по прежнему 0 !
rcall i2c_send
ldi temp,0x41 //Адрес ячейки памяти
rcall i2c_send
rcall i2c_start //Повторная отправка стартовой посылки
ldi temp,0b1010 011 1 //Адрес микросхемы+адрес блока памяти+бит чтения/записи стал 1
rcall i2c_send //теперь можно читать данные
rcall i2c_recive_last //Читаем байт. Первый и последний.
rcall i2c_stop //Отправляем стоповую посылку

Чтение может производится последовательно байт за байтом, т.е. просто вызывать i2c_recive столько сколько нужно. Команду увеличения адреса на единицу посылать не нужно. Переключать адреса блоков при последовательном чтении так же не нужно. Т.е. можно взять и разом прочитать всю микросхему без всяких проблем.

Библиотека для работы с i2c разрабатывалась и была испытана на микроконтроллере Atmega32. Я думаю что она будет работать на многих других контроллерах без каких либо изменений. Естественно в контроллере должна быть аппаратная поддержка i2c или как его еще называют TWI. Конечно реализовать i2c можно и программно, но я не стал заморачиваться да и не было нужды. Демонстрационный пример представляет собой программу которая записывает по первым 16 адресам байты от 0 до 15, а после записи выводит их в порт A. Наблюдать как это работает можно не только в живую но и в Proteus’е.

Ну и напоследок прикладываю осциллограмму:

Вот так выглядит шина i2c глазами моего :-)
Все вопросы и предложения жду в комментариях.

Всем доброго дня!
Сегодняшняя статья положит начало новому, небольшому циклу статей, посвященному хранению информации, различным типам памяти, способам записывания/считывания информации и всему, что с этим связано 😉 И начнем мы с устройства хорошо нам всем знакомой Flash-памяти.

Что из себя вообще представляет Flash-память? Да просто обычная микросхема, ничем внешне не отличающаяся от любой другой. Поэтому может возникнуть резонный вопрос – а что там внутри и как вообще происходят процессы сохранения/считывания информации.

Итак, сердцем многих устройств памяти является полевой транзистор с плавающим затвором. Гениальнейшее изобретение 70-х годов 20-го века. Его отличие от обычных полевых транзисторов заключается в том, что между затвором и каналом, прямо в диэлектрике, расположен еще один проводник – который и называют плавающим затвором. Вот как все это выглядит:

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

Создадим между стоком и истоком разность потенциалов и подадим положительный потенциал на затвор. Что тогда произойдет? Правильно, через полевой транзистор, от стока к истоку потечет ток. Причем величина тока достаточно велика для того, чтобы “пробить” диэлектрик. В результате этого пробоя часть электронов попадет на плавающий затвор. Отрицательно заряженный плавающий затвор создает электрическое поле, которое начинает препятствовать протеканию тока в канале, в результате чего транзистор закрывается. И если отключить питание транзистора, электроны с плавающего затвора никуда не денутся и его заряд останется неизменным на долгие годы.

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

Собственно так и происходит хранение информации – если на затворе есть отрицательный заряд, то такое состояние считается логической единицей, а если заряда нет – то это логический ноль.

С сохранением информации разобрались, осталось понять как нам считать информацию из транзистора с плавающим затвором. А все очень просто. При наличии заряда на плавающем затворе его электрическое поле препятствует протеканию тока стока. Допустим при отсутствии заряда мы могли подавать на “основной” затвор напряжение +5В, и при этом в цепи стока начинал протекать ток. При заряженном плавающем затворе такое напряжение не сможет заставить ток течь, поскольку электрическое поле плавающего затвора будет ему мешать. В этом случае ток потечет только при напряжении +10В (к примеру =)). Таким образом, мы получаем два пороговых значения напряжения. И, подав, к примеру +7.5В мы сможем по наличию или отсутствию тока стока сделать вывод о наличии или отсутствии заряда на плавающем затворе. Вот таким образом и происходит считывание сохраненной информации.

Как все это связано с Flash-памятью? А очень просто – полевой транзистор с плавающим затвором является минимальной ячейкой памяти, способной сохранить один бит информации. И любая микросхема памяти состоит из огромного количества расположенных определенным образом транзисторов. И вот теперь пришло время рассмотреть основные типы Flash-памяти. А именно я бы хотел обсудить NOR и NAND память.

Оба этих типа памяти построены на основе транзисторов с плавающим затвором, которым мы сегодня уделили немало времени) А принципиальное отличие состоит в том, каким образом соединены эти транзисторы.

Конструкция NOR использует двумерную таблицу проводников. Проводники называют линией битов и линией слов. Все стоки транзисторов подключаются к линии битов, а все затворы к линии слов. Рассмотрим пример для лучшего понимания.

Пусть нам надо считать информацию из какой-то конкретной ячейки. Эта ячейка, а точнее этот конкретный транзистор, подключен затвором на одну из линий слов, а стоком на одну из линий битов. Тогда мы просто подаем пороговое напряжение на линию слов, соответствующую затвору нашего транзистора и считываем его состояние как в том примере, что мы рассмотрели чуть выше для одной ячейки.

С NAND все несколько сложнее. Если возвращаться к аналогии с массивом, то ячейки NAND-памяти представляют собой трехмерный массив. То есть к каждой линии битов подключен не один, а сразу несколько транзисторов, что в итоге приводит к уменьшению количества проводников и увеличению компактности. Это как раз и является одним из главных преимуществ NAND-памяти. Но как же нам считать состояние определенного транзистора при такой структуре? Для понимания процесса рассмотрим схему:

Как видно из схемы, одна линия битов соответствует нескольким ячейкам. И важной особенностью является следующее: если хотя бы один из транзисторов закрыт, то на линии битов будет высокое напряжение. Вот смотрите:

Действительно, низкий уровень на линии битов будет только тогда, когда вся цепочка транзисторов окажется открытой (вспоминаем курс, посвященный полевым транзисторам 😉).

С этим вроде бы понятно, возвращаемся к нашему вопросу – как же считать состояние конкретного транзистора? А для этого недостаточно просто подать на линию слов (на затвор транзистора) пороговое напряжение и следить за сигналом на линии битов. Необходимо еще чтобы все остальные транзисторы были в открытом состоянии. А делается это так – на затвор нашего транзистора, состояние которого нам нужно считать, подается пороговое напряжение (как и в случае с NOR-памятью), а на затворы всех остальных транзисторов в этой цепочке подается повышенное напряжение, такое чтобы независимо от состояния плавающего затвора транзистор открылся. И тогда считав сигнал с линии битов мы узнаем в каком состоянии интересующий нас транзистор (ведь все остальные абсолютно точно открыты). Вот и все)

Такая вот получилась статейка сегодня) Разобрались мы с принципом работы и основными типами Flash, а также с устройством и принципом работы NAND и NOR-памяти. Надеюсь, что статья окажется полезной и понятной, до скорых встреч!

Флэш-память представляет собой тип долговечной памяти для компьютеров, у которой содержимое можно перепрограммировать или удалить электрическим методом. В сравнении с Electrically Erasable Programmable Read Only Memory действия над ней можно выполнять в блоках, которые находятся в разных местах. Флэш-память стоит намного меньше, чем EEPROM, поэтому она и стала доминирующей технологией. В особенности в ситуациях, когда необходимо устойчивое и длительное сохранение данных. Ее применение допускается в самых разнообразных случаях: в цифровых аудиоплеерах, фото- и видеокамерах, мобильных телефонах и смартфонах, где существуют специальные андроид-приложения на карту памяти. Кроме того, используется она и в USB-флешках, традиционно применяемых для сохранения информации и ее передачи между компьютерами. Она получила определенную известность в мире геймеров, где ее часто задействуют в промах для хранения данных по прогрессу игры.

Общее описание

Флэш-память представляет собой такой тип, который способен сохранять информацию на своей плате длительное время, не используя питания. В дополнение можно отметить высочайшую скорость доступа к данным, а также лучшее сопротивление к кинетическому шоку в сравнении с винчестерами. Именно благодаря таким характеристикам она стала настольно популярной для приборов, питающихся от батареек и аккумуляторов. Еще одно неоспоримое преимущество состоит в том, что когда флэш-память сжата в сплошную карту, ее практически невозможно разрушить какими-то стандартными физическими способами, поэтому она выдерживает кипящую воду и высокое давление.

Низкоуровневый доступ к данным

Способ доступа к данным, находящимся во флэш-памяти, сильно отличается от того, что применяется для обычных видов. Низкоуровневый доступ осуществляется посредством драйвера. Обычная RAM сразу же отвечает на призывы чтения информации и ее записи, возвращая результаты таких операций, а устройство флеш-памяти таково, что потребуется время на размышления.

Устройство и принцип работы

На данный момент распространена флэш-память, которая создана на однотранзисторных элементах, имеющих «плавающий» затвор. Благодаря этому удается обеспечить большую плотность хранения данных в сравнении с динамической ОЗУ, для которой требуется пара транзисторов и конденсаторный элемент. На данный момент рынок изобилует разнообразными технологиями построения базовых элементов для такого типа носителей, которые разработаны лидирующими производителями. Отличает их количество слоев, методы записи и стирания информации, а также организация структуры, которая обычно указывается в названии.

На текущий момент существует пара типов микросхем, которые распространены больше всего: NOR и NAND. В обоих подключение запоминающих транзисторов производится к разрядным шинам - параллельно и последовательно соответственно. У первого типа размеры ячеек довольно велики, и имеется возможность для быстрого произвольного доступа, что позволяет выполнять программы прямо из памяти. Второй характеризуется меньшими размерами ячеек, а также быстрым последовательным доступом, что намного удобнее при необходимости построения устройств блочного типа, где будет храниться информация большого объема.

В большинстве портативных устройств твердотельный накопитель использует тип памяти NOR. Однако сейчас все популярнее становятся приспособления с интерфейсом USB. В них применяется память типа NAND. Постепенно она вытесняет первую.

Главная проблема — недолговечность

Первые образцы флешек серийного производства не радовали пользователей большими скоростями. Однако теперь скорость записи и считывания информации находится на таком уровне, что можно просматривать полноформатный фильм либо запускать на компьютере операционную систему. Ряд производителей уже продемонстрировал машины, где винчестер заменен флеш-памятью. Но у этой технологии имеется весьма существенный недостаток, который становится препятствием для замены данным носителем существующих магнитных дисков. Из-за особенностей устройства флеш-памяти она позволяет производить стирание и запись информации ограниченное число циклов, которое является достижимым даже для малых и портативных устройств, не говоря о том, как часто это делается на компьютерах. Если использовать этот тип носителя как твердотельный накопитель на ПК, то очень быстро настанет критическая ситуация.

Связано это с тем, что такой накопитель построен на свойстве полевых транзисторов сохранять в «плавающем» затворе отсутствие или наличие которого в транзисторе рассматривается в качестве логической единицы или ноля в двоичной Запись и стирание данных в NAND-памяти производятся посредством туннелированных электронов методом Фаулера-Нордхейма при участии диэлектрика. Для этого не требуется что позволяет делать ячейки минимальных размеров. Но именно данный процесс приводит к ячеек, так как электрический ток в таком случае заставляет электроны проникать в затвор, преодолевая диэлектрический барьер. Однако гарантированный срок хранения подобной памяти составляет десять лет. Износ микросхемы происходит не из-за чтения информации, а из-за операций по ее стиранию и записи, поскольку чтение не требует изменения структуры ячеек, а только пропускает электрический ток.

Естественно, производители памяти ведут активные работы в направлении увеличения срока службы твердотельных накопителей данного типа: они устремлены к обеспечению равномерности процессов записи/стирания по ячейкам массива, чтобы одни не изнашивались больше других. Для равномерного распределения нагрузки преимущественно используются программные пути. К примеру, для устранения подобного явления применяется технология «выравнивания износа». При этом данные, часто подвергаемые изменениям, перемещаются в адресное пространство флеш-памяти, потому запись осуществляется по разным физическим адресам. Каждый контроллер оснащается собственным алгоритмом выравнивания, поэтому весьма затруднительно сравнивать эффективность тех или иных моделей, так как не разглашаются подробности реализации. Поскольку с каждым годом объемы флешек становятся все больше, необходимо применять все более эффективные алгоритмы работы, позволяющие гарантировать стабильность функционирования устройств.

Устранение проблем

Одним из весьма эффективных путей борьбы с указанным явлением стало резервирование определенного объема памяти, за счет которого обеспечивается равномерность нагрузки и коррекция ошибок посредством особых алгоритмов логической переадресации для подмены физических блоков, возникающих при интенсивной работе с флешкой. А для предотвращения утраты информации ячейки, вышедшие из строя, блокируются или заменяются на резервные. Такое программное распределение блоков дает возможность обеспечения равномерности нагрузки, увеличив количество циклов в 3-5 раз, однако и этого мало.

И другие виды подобных накопителей характеризуются тем, что в их служебную область заносится таблица с файловой системой. Она предотвращает сбои чтения информации на логическом уровне, например, при некорректном отключении либо при внезапном прекращении подачи электрической энергии. А так как при использовании сменных устройств системой не предусмотрено кэширование, то частая перезапись оказывает самое губительное воздействие на таблицу размещения файлов и оглавление каталогов. И даже специальные программы для карт памяти не способны помочь в данной ситуации. К примеру, при однократном обращении пользователь переписал тысячу файлов. И, казалось бы, только по одному разу применил для записи блоки, где они размещены. Но служебные области переписывались при каждом из обновлений любого файла, то есть таблицы размещения прошли эту процедуру тысячу раз. По указанной причине в первую очередь выйдут из строя блоки, занимаемые именно этими данными. Технология «выравнивания износа» работает и с такими блоками, но эффективность ее весьма ограничена. И тут не важно, какой вы используете компьютер, флешка выйдет из строя ровно тогда, когда это предусмотрено создателем.

Стоит отметить, что увеличение емкости микросхем подобных устройств привело лишь к тому, что общее количество циклов записи сократилось, так как ячейки становятся все меньше, поэтому требуется все меньше и напряжения для рассеивания оксидных перегородок, которые изолируют «плавающий затвор». И тут ситуация складывается так, что с увеличением емкости используемых приспособлений проблема их надежности стала усугубляться все сильнее, а class карты памяти теперь зависит от многих факторов. Надежность работы подобного решения определяется его техническими особенностями, а также ситуацией на рынке, сложившейся на данный момент. Из-за жесткой конкуренции производители вынуждены снижать себестоимость продукции любым путем. В том числе и благодаря упрощению конструкции, использованию комплектующих из более дешевого набора, ослаблению контроля за изготовлением и иными способами. К примеру, карта памяти "Самсунг" будет стоить дороже менее известных аналогов, но ее надежность вызывает гораздо меньше вопросов. Но и здесь сложно говорить о полном отсутствии проблем, а уж от устройств совсем неизвестных производителей сложно ожидать чего-то большего.

Перспективы развития

При наличии очевидных достоинств имеется целый ряд недостатков, которыми характеризуется SD-карта памяти, препятствующих дальнейшему расширению ее области применения. Именно поэтому ведутся постоянные поиски альтернативных решений в данной области. Конечно, в первую очередь стараются совершенствовать уже существующие типы флеш-памяти, что не приведет к каким-то принципиальным изменениям в имеющемся процессе производства. Поэтому не стоит сомневаться только в одном: фирмы, занятые изготовлением этих видов накопителей, будут стараться использовать весь свой потенциал, перед тем как перейти на иной тип, продолжая совершенствовать традиционную технологию. К примеру, карта памяти Sony выпускается на данный момент в широком диапазоне объемов, поэтому предполагается, что она и будет продолжать активно распродаваться.

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

Ferroelectric RAM (FRAM)

Технология ферроэлектрического принципа хранения информации (Ferroelectric RAM, FRAM) предлагается с целью наращивания потенциала энергонезависимой памяти. Принято считать, что механизм работы имеющихся технологий, заключающийся в перезаписи данных в процессе считываниям при всех видоизменениях базовых компонентов, приводит к определенному сдерживанию скоростного потенциала устройств. А FRAM - это память, характеризующаяся простотой, высокой надежностью и скоростью в эксплуатации. Эти свойства сейчас характерны для DRAM - энергонезависимой оперативной памяти, существующей на данный момент. Но тут добавится еще и возможность длительного хранения данных, которой характеризуется Среди достоинств подобной технологии можно выделить стойкость к разным видам проникающих излучений, что может оказаться востребованным в специальных приборах, которые используются для работы в условиях повышенной радиоактивности либо в исследованиях космоса. Механизм хранения информации здесь реализуется за счет применения сегнетоэлектрического эффекта. Он подразумевает, что материал способен сохранять поляризацию в условиях отсутствия внешнего электрического поля. Каждая ячейка памяти FRAM формируется за счет размещения сверхтонкой пленки из сегнетоэлектрического материала в виде кристаллов между парой плоских металлических электродов, формирующих конденсатор. Данные в этом случае хранятся внутри кристаллической структуры. А это предотвращает эффект утечки заряда, который становится причиной утраты информации. Данные в FRAM-памяти сохраняются даже при отключении напряжения питания.

Magnetic RAM (MRAM)

Еще одним типом памяти, который на сегодняшний день считается весьма перспективным, является MRAM. Он характеризуется довольно высокими скоростными показателями и энергонезависимостью. в данном случае служит тонкая магнитная пленка, размещенная на кремниевой подложке. MRAM представляет собой статическую память. Она не нуждается в периодической перезаписи, а информация не будет утрачена при выключении питания. На данный момент большинство специалистов сходится во мнении, что этот тип памяти можно назвать технологией следующего поколения, так как существующий прототип демонстрирует довольно высокие скоростные показатели. Еще одним достоинством подобного решения является невысокая стоимость чипов. Флэш-память изготавливается в соответствии со специализированным КМОП-процессом. А микросхемы MRAM могут производиться по стандартному технологическому процессу. Причем материалами могут послужить те, что используются в обычных магнитных носителях. Производить крупные партии подобных микросхем гораздо дешевле, чем всех остальных. Важное свойство MRAM-памяти состоит в возможности мгновенного включения. А это особенно ценно для мобильных устройств. Ведь в этом типе значение ячейки определяется магнитным зарядом, а не электрическим, как в традиционной флеш-памяти.

Ovonic Unified Memory (OUM)

Еще один тип памяти, над которым активно работают многие компании, - это твердотельный накопитель на базе аморфных полупроводников. В его основу заложена технология фазового перехода, которая аналогична принципу записи на обычные диски. Тут фазовое состояние вещества в электрическом поле меняется с кристаллического на аморфное. И это изменение сохраняется и при отсутствии напряжения. От традиционных оптических дисков такие устройства отличаются тем, что нагрев происходит за счет действия электрического тока, а не лазера. Считывание в данном случае осуществляется за счет разницы в отражающей способности вещества в различных состояниях, которая воспринимается датчиком дисковода. Теоретически подобное решение обладает высокой плотностью хранения данных и максимальной надежностью, а также повышенным быстродействием. Высок здесь показатель максимального числа циклов перезаписи, для чего используется компьютер, флешка в этом случае отстает на несколько порядков.

Chalcogenide RAM (CRAM) и Phase Change Memory (PRAM)

Эта технология тоже базируется на основе когда в одной фазе вещество, используемое в носителе, выступает в качестве непроводящего аморфного материала, а во второй служит кристаллическим проводником. Переход запоминающей ячейки из одного состояния в другое осуществляется за счет электрических полей и нагрева. Такие чипы характеризуются устойчивостью к ионизирующему излучению.

Information-Multilayered Imprinted CArd (Info-MICA)

Работа устройств, построенных на базе такой технологии, осуществляется по принципу тонкопленочной голографии. Информация записывается так: сначала формируется двумерный образ, передаваемый в голограмму по технологии CGH. Считывание данных происходит за счет фиксации луча лазера на краю одного из записываемых слоев, служащих оптическими волноводами. Свет распространяется вдоль оси, которая размещена параллельно плоскости слоя, формируя на выходе изображение, соответствующее информации, записанной ранее. Начальные данные могут быть получены в любой момент благодаря алгоритму обратного кодирования.

Этот тип памяти выгодно отличается от полупроводниковой за счет того, что обеспечивает высокую плотность записи, малое энергопотребление, а также низкую стоимость носителя, экологическую безопасность и защищенность от несанкционированного использования. Но перезаписи информации такая карта памяти не допускает, поэтому может служить только в качестве долговременного хранилища, замены бумажного носителя либо альтернативы оптическим дискам для распространения мультимедийного контента.