Ускорение на твердой основе
Автор: Юрий Ревич
Flash-память - из тех самых инноваций, что вписались в нашу действительность легко и непринужденно, и при этом совершенно незаметно. Мобильная связь, КПК, MP3-плееры, цифровые камеры - каждый имел счастье почувствовать на собственной шкуре, как все это возникало, развивалось и входило в повседневную жизнь.
Рынок энергонезависимой памяти в настоящее время растет примерно на 30% в год, и одна из самых интересных сторон этого процесса - борьба за место под солнцем между обычными (магнитными) жесткими дисками (Hard Disk) и твердотельными накопителями (Solid State Disk, SSD). SSD возникли более десяти лет назад и предназначались в основном для военно-промышленных нужд - мало кто другой мог себе позволить накопитель по цене 10-20 баксов за мегабайт. Да и преимущества SSD тогда сводились в основном к собственно "твердотельности" - отсутствие движущихся частей делало их невосприимчивыми к ударам и надежнее в экстремальных условиях (например, к воздействию пыли и повышенной температуры). Вместе с тем первые SSD имели ограниченный срок службы (количество циклов перезаписи не превышало 10-100 тысяч) и были устрашающе медлительными. Если помните, скорость передачи данных в карточках памяти еще лет пять-шесть назад составляла величину порядка единиц мегабайт в секунду (особенно медленно осуществлялась запись), а диски ведь делаются на основе тех же чипов.
Но сейчас все резко изменилось - 2007 год можно назвать годом SSD, когда производители ринулись наперебой предлагать все более емкие и дешевые модели. SSD все еще заметно дороже обычных, но лиха беда начало - особенно они полюбились производителям ноутбуков, где важна не только надежность: диски там маленькие и при тех же скоростях вращения обеспечивают заметно меньшую скорость обмена данными. В популярнейшем и притом дешевом Asus Eee PC вообще нет магнитного накопителя.
Заметим, что в Vista среди прочего рекламируется повышение быстродействия путем размещения свопа на flash-карточке (правда, ощутить ускорение, кажется, никому не удалось, однако звучит здорово). Но это странно: вообще-то скоростные преимущества flash-памяти неочевидны. Берем наугад одну из передовых flash-карточек на рынке, SanDisk CompactFlash Extreme IV, выясняем, что она выпускается емкостью не более 8 Гбайт (а средняя цена ее, по Яндекс.Маркету, - 7 тысяч рублей, совсем недешево). И при этом карта имеет скорость чтения/записи всего 40 Мбайт/с (при 60-90 Мбайт/с, характерных для современных магнитных дисков), достигнутых на самом деле довольно натужным способом: увеличением числа параллельных потоков информации. Карточки и других типов обязаны ускорением тому же принципу: так, разница между классическими и современными MMC (или SD, которые есть просто развитие ММС) заключается в количестве линий передачи данных: у ММС Plus или Mobile на шесть контактов больше, и всего может быть до восьми одновременно работающих каналов перекачки данных. Если один канал, как у "классической" ММС, работает со скоростью около 3 Мбайт/с, то восемь каналов как раз и дадут 20 Мбайт/с, характерных для современных карт.
Так что, технологии совсем не изменились и нас кругом обманывают? Давайте разберемся, и начнем с того, что рассмотрим некоторые принципы работы flash-памяти.
История вопроса
В 1967 году в незабвенной Bell Labs, инкубаторе множества современных IT-технологий, был построен первый образец EPROM[Erasable Programmable ROM - стираемая/программируемая память "только для чтения". По-русски СППЗУ (стираемое программируемое постоянное запоминающее устройство).] - энергонезависимой памяти, которую можно было неоднократно перепрограммировать (стирая информацию рентгеном). Первые микросхемы энергонезависимой памяти, пригодные для практического применения, появились в 1971 году в стенах лабораторий Intel, которая тогда еще и не мечтала ни о каких процессорах, а позиционировала себя именно как производитель чипов памяти. Первый коммерческий образец EPROM (чип 1701 и его немного усовершенствованный вариант 1702) стирался ультрафиолетом через специальное окошко и потому получил название UV-EPROM (УФ ППЗУ, рис. 1).
В 1974 году в Intel пришел некто Джордж Перлегос (George Perlegos), грек по происхождению и будущий основатель компании Atmel. Под его руководством была разработана микросхема EEPROM[Electrically Erasable Programmable ROM - электрически стираемое программируемое ПЗУ, ЭСППЗУ.] (кодовое название 2816) - чисто электрически перепрограммируемое ПЗУ, прообраз сегодняшней flash-памяти. Основой и EPROM, и EEPROM стал транзистор с плавающим затвором, изобретенный в той же Intel Доном Фрохманом (Don Frohman). И в дальнейшем, несмотря на смены технологических эпох, принцип устройства ячейки энергонезависимой памяти остался неизменным - какой бы способ стирания и записи ни использовался.
Сам термин "flash-память" придумал в июне 1984 года некто Шоджи Аризуми (Shoji Ariizumi), сотрудник корпорации Toshiba, уже после того, как его руководитель доктор Фуджио Масуока (Fujio Masuoka) послал сообщение о новом, изобретенном им типе энергонезависимой памяти на конференцию разработчиков электронных приборов IEDM в Сан-Франциско. Так гласит официальная история, однако на рынок flash-память вывела не Toshiba, а Intel, и только спустя четыре года, в 1988 году, - слишком велики оказались трудности внедрения в производство.
Как оно устроено
Чтобы лучше понять принцип работы EEPROM, начнем с самого простого - ячейки обычной DRAM[Dynamic RAM - динамическая память "с произвольным доступом", динамическое ОЗУ, оперативное запоминающее устройство.] (рис. 2), схема которой состоит из одного транзистора и одного конденсатора. Последний на схеме выглядит маленьким, но на самом деле занимает места раза в четыре больше транзистора, только в основном вглубь кристалла. Потому ячейки DRAM можно сделать очень малой площади, а значит, во множестве упаковать их в один кристалл, не теряя быстродействия.
Для чтения данных с такой ячейки на линию строк подается высокий уровень, транзистор открывается, и заряд, накопленный конденсатором ячейки, поступает на вход усилителя, установленного на выходе столбца. Отсутствие заряда на обкладках соответствует логическому нулю на выходе, а наличие - логической единице. Обратите внимание, что такая операция откроет все транзисторы выбранной строки и данные окажутся на выходе усилителей по всем столбцам сразу. Естественно, при этом все подключенные конденсаторы немедленно разрядятся (если они были заряжены), отчего процедура чтения из памяти обязана заканчиваться регенерацией данных - не реже, чем каждые 10-15 мс. Регенерация ОЗУ в первых IBM PC и заключалась в осуществлении "фиктивной" операции чтения данных, затем эту функцию возложили на схемы, встроенные в сам модуль памяти.
Современная память (кроме SRAMStatic RAM - статическое ОЗУ, набор триггерных ячеек, могущих находиться в состоянии 0 или 1. Очень быстрая, но громоздкая по устройству и оттого дорогая разновидность оперативной памяти.]) хранит информацию в виде зарядов, и дабы сделать этот процесс энергонезависимым, нужно было решить проблему их утечки. Быстрая утечка зарядов в DRAM обусловлена наличием транзистора, который состоит вовсе не из изолятора, а из хоть и полу-, но проводника, так что даже в запертом виде имеет конечные токи утечки. В соединении с неизбежно маленькой емкостью самого конденсатора это и приводит к быстрому разряду. В идеале следовало бы конденсатор изолировать полностью, но как тогда перезаряжать его при записи информации?
Разгрыз этот орешек вышеупомянутый Дон Фрохман. На рис. 3 показано устройство элементарной ячейки, которая лежит в основе всех современных типов flash-памяти. Если исключить из нее то, что обозначено как "плавающий затвор", мы получим самый обычный полевой транзистор - точно такой же, как тот, что входит в ячейку DRAM на рис. 2. Если подать на управляющий затвор положительное напряжение, транзистор откроется, и через него потечет ток (это считается состоянием "логической 1"). На рис. 3 слева и изображен случай, когда плавающий затвор не оказывает никакого влияния на работу ячейки - например, такое состояние характерно для чистой EEPROM, в которую еще ни разу ничего не записывали.
Если же мы каким-то образом ухитримся разместить на плавающем затворе некоторое количество зарядов - свободных электронов (красненькие кружочки на рис. 3 справа), - то они будут экранировать действие управляющего электрода, и транзистор вообще перестанет проводить ток. Это состояние "логического 0"[Строго говоря, в NAND-чипах (о которых далее) логика обязана быть обратной - если в обычной EPROM запрограммированную ячейку нельзя открыть подачей считывающего напряжения, то NAND нельзя запереть снятием напряжения. Поэтому, в частности, чистая NAND-память выдает все нули, а не единицы, как EPROM и flash-память типа NOR.]. Плавающий затвор потому так и называется, что он "плавает" в толще изолятора (двуокиси кремния), а значит, сообщенные ему однажды заряды в покое никуда деваться не могут. И записанная таким образом информация может храниться десятилетиями.