Флэш-память в современных карманных компьютерах используется для решения двух основных задач. Во-первых, для хранения программных модулей ОС, во-вторых, она используется в качестве внешнего накопителя данных. В ранних моделях КПК, как правило, применялись обычные модули ПЗУ, в которых размещалась операционная система и часто прикладное ПО. Такой подход обеспечивал значительное удешевление и повышение надежности, в случае каких-либо программных сбоев пользователю достаточно произвести процедуру полной очистки памяти, чтобы получить чистую и гарантированно работоспособную систему. Расширению использования флэш-памяти в роли системного носителя мы обязаны прежде всего Microsoft, точнее, пресловутому качеству ее программных продуктов.
Как пример, можно привести аппараты класса Psion Series 5mx, где ОС была записана в ПЗУ. Эти КПК функционировали под управлением операционной системы EPOC, исключительно стабильной и быстрой системы, далекий потомок которой, ОС Symbian, сегодня работаем в смартфонах и коммуникаторах. В связи с необходимостью хранить системные программные компоненты в памяти, которую заведомо сложно обновить (фактически единственный выход — физическая замена микросхем памяти), эта система была доведена разработчиками практически до совершенства (историю ее создания можно найти, например, на Web-узле history.handy.ru). Аналогичная картина долгое время наблюдалась и в КПК на базе Palm OS.
В случае же с Windows СЕ, которая на первых порах была далека от совершенства, эта проблема особенно обострилась. Некоторое время в качестве ее решения применялись разного рода программные «заплатки», но эта практика не прижилась в связи с тем, что постоянно «висящие» программные модули занимали самый драгоценный ресурс КПК — память (не говоря о том, что в случае жесткого сброса приходилось заново устанавливать все обновления). В итоге все современные КПК перешли на перезаписываемую память даже для хранения такого, сравнительно редко меняющегося вида ПО, как системное. Примечательно, что роль первопроходца в этом направлении принадлежит все той же HP iPAQ (в то время еще носившей марку Compaq).
Второе применение флэш-памяти — использование в роли внешних накопителей. Вряд ли кто-то из читателей нуждается в комментариях по этому вопросу. Отметим только, что в современных моделях КПК довольно часто имеется еще один вид памяти для хранения данных (иногда такая возможность получает громкое маркетинговое название, скажем iPAQ Filestore). С технической точки зрения реализация тривиальна: программными средствами в неиспользуемой области ППЗУ выделяется область для сохранения информации, которая для пользователя выглядит как обычный, хотя и не сменный, флэш-накопитель. Программные модули ОС обычно не полностью занимают ППЗУ, так что все, что здесь требуется, — аккуратное программирование соответствующих драйверов (бывали и ошибки, например, печально известная проблема HP iPAQ h1930/h1940, когда при переполнении пользовательской области затирались системные модули). Емкость такого «диска» различается от модели к модели и составляет от 1-1,5 до 80-128 Мбайт.
Флэш-память как таковая — разновидность твердотельной полупроводниковой энергонезависимой перезаписываемой памяти. В настоящее время выпускается два основных типа флэш-памяти: NOR (логика ячеек NOT OR) и NAND (логика ячеек NOT AND). Также существует память типа AND (И), но она не получила распространения среди изготовителей КПК. Специфических разновидностей со звучными торговыми названиями, безусловно, больше, но все они в итоге сводятся к этим двум типам. В качестве элементарных ячеек хранения информации используются полевые двухзатвор-ные транзисторы с плавающим затвором.
Не углубляясь в историю развития технологий твердотельной памяти, рассмотрим основные типы флэш-памяти. В отличие от других типов твердотельных накопителей в модулях флэш-памяти для хранения данных используется один или два транзистора (в других типах это обычно конструкция из нескольких транзисторов и конденсатора). Идея хранения данных основана на том, что такой транзистор способен сохранять заряд, соответственно позволяя определить его наличие. При записи заряд помещается на плавающий затвор (или посредством переноса электронов или с использованием квантово-механических эффектов туннелирования — это зависит от типа памяти).
При наличии заряда на плавающем затворе характеристики транзистора изменяются таким образом, что при обычном для операции чтения напряжении токопроводящего канала не возникает. Соответственно по изменению вольтамперных характеристик транзистора можно сделать вывод о наличии или отсутствии заряда. Иными словами, использовать его для кодирования битов информации.
Слово «флэш» в названии памяти возникло благодаря тому, что операция записи требует подачи на сток и управляющий затвор высокого напряжения (отсюда flash, «молния»). Электроны с энергией, достаточной для преодоления потенциального барьера, создаваемого пленкой диэлектрика, переносятся на плавающий затвор, тем самым изменяя вольт-амперные характеристики транзистора. Диалогично, при стирании высокое напряжение подается на исток.
Различная организация логических схем работы памяти дала названия основным ее типам, кроме того, если NOR требует контакта на каждом транзисторе, то в NAND имеется контактная матрица.
Благодаря тому что эта схема позволяет определить не только наличие или отсутствие заряда в ячейке, а также допускает измерение его величины, появляется возможность хранения двух битов информации в одном транзисторе (многоуровневые ячейки, multilevel cell, MLC), именно на этом принципе построена, например, память Intel StrataFlash. Теоретически возможно хранение и трех и более битов (известно, что в лабораторных условиях реализованы образцы, хранящие до 8 бит), но на практике изготовление таких микросхем сопряжено с рядом технологических сложностей. Кроме того, хотя такой подход дает возможность снизить удельную стоимость хранения данных, он требует усложнения контроллеров и памяти.
Несложно догадаться, что процедуры записи-стирания вызывают износ ячейки флэш-памяти, именно поэтому у таких микросхем ограничен ресурс циклов перезаписи. Он довольно значительный (порядка миллионов циклов), к тому же благодаря некоторому «интеллекту» контроллеров флэш-памяти удается минимизировать его вредное действие. Но тем не менее вполне очевидно, что размещать на флэш-накопителе мобильного устройства область интенсивно перезаписываемых данных (например, swap-раздел мобильного Linux), разумеется, будет неудачной идеей.
Память типа NOR обеспечивает возможность произвольного чтения-записи данных (вплоть до отдельных байтов) и быстрое считывание, но при этом относительно медленные схемы записи и стирания. Кроме того, такая память имеет довольно крупные ячейки (к каждой необходимо подвести контакт), что вызывает закономерные сложности в изготовлении и повышении емкости. Этот тип памяти обеспечивает возможность «исполнения-по-месту» (Execute-ln-Place, XIP). Этот тип памяти в основном применяется для хранения программного кода.
Память типа NAND обеспечивает блочный доступ, быстрые процедуры стирания и записи, дешевизну и простоту наращивания емкости модулей. Данные на флэш-памяти NAND считываются поблочно. Размер единичного блока варьируется от 256 байт до 256 Кбайт, практически все современные микросхемы позволяют работать с блоками разного размера. Эта схема накладывает как ограничения, так и предоставляет некоторые преимущества. Эта схема значительно снижает скорость записи небольших объемов данных в произвольные области памяти, но в то же время и увеличивает быстродействие при последовательной записи больших массивов данных. Благодаря блочной организации флэш-памяти NAND она дешевле сопоставимой по емкости памяти других типов.
Необходимо отметить также, что существуют гибридные решения, в одном корпусе объединяющие ряд разных типов памяти. Таким образом, например, удается обеспечить старт программных модулей, запускаемых из блока памяти NOR и затем загружающих основную ОС из микросхем NAND.
Журнал «Upgrade» №8, 2005 г.