Карманные гектары. Часть 1

 | 10.22

Говоря о flash в полноценных компьютерах, я думаю о нашумевших не так давно «flash-винчестерах» в ноутбуках Samsung далеко не в первую очередь. И новомодная технология Windows Ready Boost, позволяющая при помощи переноса свопа на «флэшку» ускорить работу с файлами до 30%, тут тоже не является самой главной. На самом деле наш РС «нашпигован» flash-микросхемами уже давно и прочно. Например, любой BIOS, поддерживающий программную перепрошивку, хранится в микросхемке flash. Собственно, в зависимости от требований, flash может оказаться в составе любого устройства, где требуется небольшой объём энергонезависимой перезаписываемой памяти в компактной микросхеме (яркий пример – маршрутизаторы, которые, по сути, являются вполне функциональными компьютерами, но в них вместо винчестера используется «флэш»).

Собственно, это и было определение, принятое для понятия «Flash-память». Энергонезависимая перезаписываемая твердотельная полупроводниковая память. Особых пояснений тут, пожалуй, не требуется. Все и так понимают, что «энергонезависимая» означает сохранение данных после отключения питания, а «перезаписывамая» то, что в отличие от ROM (Read-Only Memory) эти данные можно изменять. Но что интересно, исторически flash «вырос» именно из ROM, и именно в таком родстве кроется один из главных недостатков Flash – небольшое количество циклов перезаписи.

Процент ячеек, способных хранить данные от количества циклов перезаписи (разные линии — разные промежутки между записью и чтением, шаг=1 год)

Для порядка уточним, что вообще-то Flash может иметь даже всего один цикл записи – это так называемые OTP (One-Time Programmable) микросхемы, используемые чаще всего для микроконтроллеров, выполняющих фиксированный набор задач. Например, в тех же стиральных машинах – раз записали нужную программу, и всё. Изготовление же отдельного ПЗУ (постоянного запоминающего устройства) в данном случае не рассматривается, поскольку обычно подобные микроконтроллеры являются универсальными и с разными программами их могут использовать как в стиралках, так и в спутниках NASA (ну, преувеличиваю, конечно). Когда циклов перезаписи предполагается немного, применяется flash, который называется MTP (Multiple-Time Programmable) памятью. Условно от «полноценного» флэша его разделяют по границе в 10000 циклов перезаписи. Вот на те схемы, которые выдерживают более 10000 циклов, мы и обратим наше дальнейшее внимание.

«Твердотельность» flash-памяти наоборот является одним из главных её преимуществ. По сути это означает, что в flash отсутствуют какие-либо движущиеся элементы (не считая электронов, конечно ), а значит механическая надёжность таких микросхем на порядок выше, чем у тех же HDD или оптических накопителей. Суть различия хорошо видна хотя бы по тому, что для HDD срок жизни определяется временем наработки на отказ именно механических частей, а не количество возможных циклов перезаписи для магнитных пластин. Туда же отнесём и банальную устойчивость к ударам. Флэшку ронять можно сколько угодно (с высоты человеческого роста, конечно, а не с небоскрёба), а вот винчестер после такой коллизии может и не выжить.

Ну а по поводу энергонезависимости станет понятнее, когда мы кратко проследим историю появления flash.

Родословная

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

Следующим этапом можно считать PROM (Programmable Read-Only Memory), по функциональности аналогичный рассмотренному выше OTP, но отличающийся по принципу записи. В PROM использовалась матрица с плавкими перемычками, которые «размыкались» после подачи высокого напряжения. Запись производилась не где попало, а на специальных установках – программаторах. Естественно, восстановить расплавленные перемычки уже не было возможно, но в то же время изготовление больших партий было обеспечено.

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

Позже появилась первая перезаписываемая память в этом ряду – EPROM (Erasable или Electrically Programmable ROM). Разные компании использовали различные варианты ячеек, но в целом они отдалённо напоминали конденсаторы с очень малой утечкой заряда, что позволяло считать их постоянными и энергонезависимыми. Стирание информации перед записью производилось при помощи облучения ультрафиолетом всей микросхемы сразу. До наших дней такая память тоже не дожила из-за проблем с ультрафиолетом – он был не самым надёжным способом удаления информации. Если облучение было недостаточно интенсивным, в некоторых ячейках мог остаться заряд, нарушавший впоследствии информацию, которая записывалась после стирания. Ну а при слишком интенсивном облучении срок службы микросхемы падал в разы.

Разница между напряжениями в состояниях стёрто-записано

Важно отметить, что тут в нашей истории впервые появляется компания Intel, которая и разработала первые EPROM’ы. Та же компания спустя восемь лет (в 1979 году) показала миру память типа EEPROM (Electronically Erasable PROM). Основой нового типа памяти стали транзисторы с плавающим затвором в туннелированном окисле – FLOTOX. В этих схемах каждую ячейку можно было записать и считать отдельно, но главное то, что всё это можно было сделать уже без всякого ультрафиолета – обычными электрическими сигналами. Стоимость такого типа памяти была всё ещё слишком высока для её широкого распространения, но дело оставалось за малым.

На следующем витке эволюции EEPROM уже превратился в тот самый flash, который мы знаем. Полное название этого типа памяти – Flash Erase EEPROM, что в вольном переводе может звучать, как «EEPROM с моментальным стиранием». Суть эволюционного изменения по сравнению с «просто EEPROM» заключается в том, что отдельные транзисторы были объединены в блоки по нескольку байт (256, 512 и так далее), к которым операция удаления может применяться только в полном объёме. То есть, если вам нужно изменить всего один байт в таком блоке, придётся копировать остальные 255 в буфер, чтобы записать их обратно после стирания всего блока. Скорость работы с мелкими объёмами данных при этом упала, но зато с большими стало гораздо лучше – не надо перед записью стирать каждую ячейку по отдельности. Точно так же уменьшилась и себестоимость – за счёт более простой адресации.

Первым блочную организацию EEPROM придумал доктор Фуджио Масуока, сотрудник компании Toshiba (в 1984 году). Причём его гений предусмотрел организацию обоих типов flash, распространённых до сих пор – NOR и NAND (о том, что это такое, как раз и будет следующий раздел этой статьи). Компания Intel задержалась ненадолго – её вариант памяти по схеме NOR был представлен уже в 1988 году, и с тех пор Intel прочно обосновалась на этом рынке – не хуже, чем на процессорном.

Един в двух лицах

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

Сама ячейка представляет собой обычный транзистор с двумя затворами в изоляторе. Один из затворов является управляющим, а второй «плавающим». При появлении положительного поля на управляющем затворе электроны с истока способны переходить на «плавающий» затвор сквозь слой изолятора и оставаться там до нескольких лет. Таким образом достигается энергонезависимость flash-ячеек. «Плавающий» затвор накапливает заряды до определённого предела, за которым значение ячейки считается равным нулю. До этого предела значением считается единица, и чтобы «сбросить» транзистор до этого состояния (а точнее говоря – стереть информацию) на управляющий затвор нужно подать отрицательное напряжение, которое «вытолкнет» электроны с «плавающего» затвора на исток.

Кстати, зная этот принцип, несложно понять, каким образом той же Intel в своей технологии StrataFlash удалось хранить сразу по два бита информации (и даже больше) – просто разным значениям соответствует различная сила заряда на «плавающем» затворе. Если сравнивать с обычной оперативной памятью, в которой на каждую ячейку уходит как минимум два транзистора и один конденсатор, Flash получается гораздо компактнее и проще в производстве. Впрочем, скорость RAM нынешним flash’ам пока ещё недоступна, да и вряд ли когда-нибудь этот день настанет.

Теперь – по организации самих типов flash-памяти.

Карточка CompactFlash имеет в своей основе модуль NAND. Собственно, все "пользовательские" флешки созданы на NAND, а NOR из-за высокой стоимости из расчёта на мегабайт остаётся уделом специализированных устройств

Так уж сложилось, что первым распространение получил тип flash-памяти, называемый NOR. Его логический элемент соответствует булевому действию «не-или» (если вы забыли или не знали принцип этого действия, то вкратце поясню: на два входа элемента подаются сигналы – соответственно либо нули, либо единицы. Логический элемент «или» принимает значение «1», если хотя бы один из входов имеет значение «1», и «0», если на оба входа подаются нули. Ну а «не» означает то, что результат инвертируется. Значит из двух нулей на входах на выходе получается «не ноль», то есть единица. В остальных случаях получаются «не единицы» — то есть нули). Но это всё – присказка. Основная суть NOR-памяти заключается в том, что весь массив ячеек имеет индивидуальные контакты, как и в классической RAM (Random Access Memory). А это обеспечивает быструю выборку необходимых данных по прямым адресам, то есть, быстрое чтение. Зато с записью больших объёмов информации (сравнительно больших, конечно) наблюдались проблемы, равно как и с плотностью расположения ячеек. И дальнейшее уменьшение техпроцесса тут не сильно помогает, поскольку всё упирается в те самые индивидуальные контакты, занимающие изрядную часть микросхемы.

Для борьбы с недостатками NOR-памяти был придуман хитрый ход – объединить ячейки контактными матрицами, расположив их блоками (по 512-2048 байт) со «строками и столбцами» и общими контактами (а это уже смахивает на современную оперативную память в компьютерах, которая, откровенно говоря, является RAM только на выходе, поскольку при произвольной перезаписи ячеек внутри самой микросхемы всё равно приходится «сливать» целую строку в буфер). Для такой организации пришлось использовать логическую функцию «не-и» (NOT-AND), которая в принципе ничего не меняет в конструкции транзистора, просто требуется другая конфигурация управляющих сигналов при записи.

Главным достижением такого подхода стало значительное уменьшение площади микросхем памяти при сохранении того же объёма хранимой информации. В среднем, получается 40% выигрыша в размерах, да и в производстве такой flash проще. Нужно уточнить, что уже упомянутые блоки в NAND-памяти делятся на страницы (32 для 512 байт и 64 для 2048). При этом если запись можно проводить постранично (как и в случае с оперативной памятью), то удаление – только блоками. Таким образом понятно, почему NAND «не любит» маленькие порции информации – для перезаписи всего одного бита в этом типе flash-памяти приходится сперва выгрузить содержимое всего блока в буфер, очистить блок, а затем записать всё обратно, включая изменённый бит. Когда «порция» информации достаточно велика, этот недостаток превращается в преимущество, поскольку перезапись происходит сразу блоками, а не по одному биту.

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

Ограниченное число циклов перезаписи также заставляет производителей применять различные ухищрения, особенно в случае с NAND, где нагрузка на отдельную ячейку заметно выше, чем в NOR (ведь они перезаписываются каждый раз со всеми «соседками» по блоку, а не только при непосредственном обращении к ним), но способы продолжения жизни flash-модулей мы рассмотрим в следующий раз. А пока обратим более пристальное внимание на NAND.

Так да или нет?

Как вы уже могли догадаться, подавляющая часть flash-устройств, с которыми вам приходилось встречаться, являются именно NAND. И даже там, где размеры NOR были бы вполне приемлемыми, производители всё равно предпочитают более медленный NAND благодаря его дешевизне. Ну а чтобы пользователь всё-таки остался доволен покупкой, применяются некоторые ухищрения, позволяющие заметно повысить производительность флэшек. При этом главное помнить, что данные модули используются прежде всего для хранения информации, а не для непосредственной работы с ней с постоянными обращениями на чтение и запись (исключением, пожалуй, можно назвать упомянутый в начале статьи режим Windows Ready Boost, появившийся в Windows Vista, но пускай модули NAND и помедленнее, чем NOR, а всё-таки винчестерам с их механикой, что до тех, что до других ещё очень далеко). Таким образом у инженеров появляется та самая «лазейка», из которой выкраиваются заветные миллисекунды.

При подключении флешки Vista сама предложит включить ReadyBoost

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

Второй слабой стороной NAND является ввод/вывод данных, поскольку обычная «сокетная» разводка тут не годится, как в случае с NOR. Для оптимизации операций ввода/вывода как раз и применяется программируемая длина слов, наиболее подходящая для используемых портов.

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

Несмотря на и без того низкое энергопотребление в flash, как и в процессорах, например, применяются различные режимы пониженного энергопотребления (в зависимости от наличия/отсутствия текущих задач). В режиме глубокого покоя flash-модуль может потреблять всего 2 микроампера, а то и меньше, что позволяет сэкономить заряд батарей в мобильнике, фотоаппарате, КПК – и вообще в любом мобильном устройстве. Также сам модуль может адаптироваться под подаваемое напряжение питания без «посторонней помощи» (драйверов, переключателей и т. д.)

А раз уж небезосновательная паранойя захватывает умы IT-специалистов и просто «сочувствующих» по всей планете, то и производители flash не смогли удержаться, чтобы не снабдить свои изделия аппаратными средствами защиты от несанкционированного доступа. Первыми в этом деле оказались модули NOR благодаря своей специфике применения. Но и за NAND не заржавеет, поскольку тут тоже кроется очевидный маркетинговый плюс. Ведь всем известно, что не зная PIN и PUK пароля среднеквалифицированный торговец мобилками запросто «препрошьёт» краденый аппарат. И это в лучшем случае, а ведь многие используют «флэшки» для переноса важных документов, не говоря уже о базах данных в памяти смартфонов и КПК…

Описывать ухищрения производителей по поводу безопасности особого смысла нет – тут уж, как говорится, кто во что горазд. Наиболее распространёнными способами защиты являются различные варианты паролей, как раз и навсегда устанавливаемых при производстве (надёжный способ, но если появляется риск, что злоумышленник узнал пароль, сменить его не удастся), так и задаваемых пользователем самостоятельно.

* * *

На этом пока остановимся. Во второй части этой статьи будет рассказано, почему «не все йогурты одинаково полезны». То есть, почему такие простые на первый взгляд устройства, как флэшки, могут быть настолько разными по качеству.

Robo User
Web-droid editor

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *