На твердую память
Автор: Юрий Ревич.
В 1999 году на предприятии, где я тогда трудился, встал вопрос о приобретении фотокамеры, которая могла бы без перезарядки сделать порядка нескольких сотен снимков. Максимальная емкость доступных карт для цифровиков была тогда 32 Мбайта, а на них не влезало и сотни «пережатых» JPEG’ов. Представьте себе — нам не хватало каких-то несчастных 100—200 Мбайт памяти на карте, чтобы приобрести вполне приличную по тем временам цифровую камеру. Я тыкал в лицо начальству перепечатанным из «Компьютерры» сообщением от Micron, обещавшей к концу года выпустить карточку аж в 192 Мбайта, но времени не было, и был приобретен дорогущий камкордер от Sony. Который оказался отвратительной машинкой, если его использовать как фотоаппарат.
Флэш-память — из тех самых инноваций, что вписались в нашу действительность легко и непринужденно, и при этом совершенно незаметно. Мобильная связь, КПК, MP3-плееры, цифровые камеры — каждый имел счастье почувствовать на собственной шкуре, как все это возникало, развивалось и входило в повседневную жизнь. Но ничего бы из этого не было, если бы не развитие технологий энергонезависимой памяти, рынок которой в настоящее время растет примерно на 30% в год.
Термин «флэш-память» (flash memory) придумал в июне 1984-го некто Шойи Аризуми (Shoji Ariizumi), сотрудник корпорации Toshiba, уже после того, как его руководитель доктор Фуджио Масуока (Fujio Masuoka) послал сообщение на конференцию разработчиков электронных приборов IEDM в Сан-Франциско о новом, изобретенном им типе энергонезависимой памяти. Причем в сообщении Масуоки содержалось описание сразу обеих современных архитектур этой памяти — как NOR, так и NAND. Так гласит официальная история, однако на рынок флэш-память вывела не Toshiba, а Intel, и только спустя четыре года, в 1988 году (слишком велики оказались трудности внедрения в производство). Однако первые микросхемы энергонезависимой памяти появились значительно раньше — еще в 1971 году. Чем же занимались инженеры в течение столь долгого времени?
Предыстория
Первые постоянные запоминающие устройства (ROM 7 ) не позволяли изменять однажды записанную информацию. В 1956 году сотрудник корпорации American Bosch Arma Йен Чоу (Wen Chow) получил патент на устройство, известное теперь как однократно программируемое ROM (OTPROM). В этом патенте, между прочим, впервые был употреблен термин «прожиг» (burn) — микромодуль состоял из матрицы с плавкими перемычками, которые при программировании пережигались подачей на них высокого напряжения. Любопытно, что этот способ дожил до наших дней — в мире не меньше четверти микроконтроллеров (специализированных микропроцессоров), особенно из тех, что попроще, до сих пор выпускаются именно с такой однократно программируемой встроенной памятью — ввиду крайней ее дешевизны. В самом деле, если программный код какой-нибудь игрушки отработан на опытных образцах, зачем его, однажды записанный, потом менять, и кто этим будет заниматься? Лишь в последние годы «прожигаемая» память стала постепенно вытесняться более удобной флэш-памятью — когда последняя подешевела настолько, что смысл в использовании OTPRAM почти пропал.
В 1967 году в незабвенной Bell Labs был построен первый образец EPROM — энергонезависимой памяти, которую можно было неоднократно перепрограммировать (стирая информацию рентгеном). В 1971 году (одновременно с изобретением первого микропроцессора) Intel разработала первый коммерческий образец EPROM (чип 1701 и его слегка усовершенствованный вариант 1702), который стирался ультрафиолетом через специальное окошко и потому получил название UV-EPROM.
Кристалл типичной UV-EPROM начала 1980-х емкостью 32—64 Кбайта
Такие типы энергонезависимой памяти (в нашей стране — УФППЗУ) выпускались еще примерно лет двадцать пять, вплоть до середины 90-х. Обращаться с ними было не слишком удобно — специальное стирание занимало много времени (и не дай бог недодержать кристалл под лампой!), зато память могла постепенно деградировать на обычном свету, отчего в процессе эксплуатации окошко заклеивали.
В 1974 году в Intel под непосредственным руководством Джорджа Перлегоса (George Perlegos), будущего основателя компании Atmel, была разработана микросхема EEPROM 2816 — электрически перепрограммируемое ПЗУ. Это и был прообраз сегодняшней флэш-памяти. Основой и EPROM, и EEPROM стал транзистор с плавающим затвором, изобретенный в той же Intel Доном Фрохманом (Don Frohman). И в последующем, несмотря на смены технологических эпох, принцип устройства ячейки энергонезависимой памяти остался неизменным — какой бы способ стирания и записи информации в ней не использовался.
Термины и аббревиатуры
RAM(random access memory) — память с произвольным доступом. В чистом виде, без приставок, сокращение RAM часто применяется для обозначения основной памяти ПК. Это любая память, содержимое которой уничтожается при выключении питания. Русское наименование «Оперативное Запоминающее Устройство» (ОЗУ) следует признать более соответствующим по смыслу, так как понятию «с произвольным доступом» соответствуют и многие типы EPROM.
DRAM(dynamic ram) — динамическая ram. Это электронная память, которая требует постоянного восстановления (регенерации) своего содержимого даже при включенном питании. Русский эквивалент этого названия — динамическое ОЗУ или ЗУПВ — «Запоминающее Устройство с Произвольной Выборкой». Хотя последнее есть фактически перевод более общего термина RAM, но применяется обычно к динамической ее разновидности
SRAM(static ram) — статическая ram, статическое ОЗУ. Энергозависимая память, построенная на триггерах и потому, в отличие от DRAM, регенерации не требующая. Намного более дорогая и менее емкая в расчете на микросхему.
SDRAM(synchronous dram) — синхронная dram. Отличается наличием специального логического блока и двухбанковой структуры. Все операции записи/чтения синхронизированы с основным тактовым сигналом. Практически вся оперативная память в современных ПК относится именно к этой разновидности.
RDRAM(rambus direct ram) — разновидность dram компании rambus.
VRAM(video ram) — видеоram или «видеопамять»; специально разработанная для использования в видеоадаптерах разновидность DRAM с двухпортовой организацией (то есть с возможностью обращения от двух разных устройств одновременно).
WRAM(windows ram) — не поверите, но есть и такая! На самом деле это просто торговая марка одной из разновидностей VRAM, якобы оптимизированная для работы под Windows.
NRAM(nano ram) — экспериментальный тип энергонезависимой памяти на основе углеродных нанотрубок.
FRAM, FeRAM (ferroelectric ram) — экспериментальная энергонезависимая память на основе ферроэлектрического принципа хранения информации.
MRAM(magnetic ram) — экспериментальная разновидность скоростной энергонезависимой памяти на основе магниторезистивного эффекта.
NVRAM(nonvolatile ram) — буквально «безвольтовая», то есть энергонезависимая RAM. В принципе охватывает все разновидности EPROM и EEPROM (в том числе и Flash). NVRAM— более корректный термин, чем все остальные, так как «памятью только для чтения» ни одна из современных разновидностей ROM, строго говоря, не является. Иногда NVRAM употребляют для обозначения специальной разновидности SRAM со встроенной прямо в микросхему литиевой батарейкой (до последнего времени такие выпускались фирмой Dallas Semiconductor, ныне — подразделением Maxim).
ROM(read-only memory) — память только для чтения. Русское название — «Постоянное Запоминающее Устройство» (ПЗУ) — более соответствует смыслу, так как термин относится ко всем видам энергонезависимой памяти, а не только к тем, что «для чтения» (и к перезаписываемым тоже — CD-ROM или EEPROM). В чистом виде сокращение ROM употребляется редко.
PROM(programmable rom) — программируемое ПЗУ (ППЗУ), обычно относят к OTPROM (One Time Programmable ROM) — «Однократно Программируемое ПЗУ». К PROM также относят и «Масочное ПЗУ» — вариант OTPROM, который программируется не самим пользователем, а на фабрике в процессе изготовления.
EPROM(erasable programmable rom) — стираемая/программируемая rom. По-русски иногда называют ПППЗУ («Перепрограммируемое ПЗУ»). Иногда употребляется как синоним UV-EPROM.
EEPROM(electrically erasable programmable rom) — электрически стираемое перепрограммируемое ПЗУ, ЭСППЗУ.
UV-EPROM (ultra-violet eprom) — ультрафиолетовая eprom, УФППЗУ. Исторически первая коммерческая разновидность EPROM, операция стирания в которой производится ультрафиолетом через специальное окошко.
Flash memory — первоначально термин придуман для обозначения прогрессивной разновидности EEPROM, в которой чтение/запись для ускорения процесса производятся сразу целыми блоками. Позднее (когда медленная EEPROM исчезла из обращения) стал фактическим синонимом EEPROM и теперь обозначает ее любые разновидности.
Элементарная ячейка DRAM
Чтобы лучше понять принцип работы EEPROM, начнем с самого простого — ячейки обычной DRAM. Как вы можете убедиться, взглянув на рис. 2,
— схема состоит из одного транзистора и одного конденсатора, занимающего места раза в четыре больше транзистора (в основном вглубь кристалла). Потому ячейки DRAM довольно просто сделать очень малых размеров, а следовательно, «упаковать» их большее количество на один кристалл, не теряя в быстродействии. Отсюда и распространенность DRAM в качестве компьютерных ОЗУ — при всем кажущемся неудобстве процессов, связанных с непрерывной регенерацией содержимого.
А как происходит чтение данных с такой ячейки? Для этого подается высокий уровень напряжения на линию строк (рис. 2), транзистор открывается, и заряд, хранящийся на конденсаторе данной ячейки, поступает на вход усилителя, установленного на выходе столбца. Отсутствие заряда на обкладках соответствует логическому нулю на выходе, а его наличие — логической единице. Обратите внимание, что подача высокого уровня напряжения на линию строк откроет все транзисторы выбранной строки, и данные окажутся на выходе усилителей по всем столбцам сразу. Естественно, при этом все подключенные конденсаторы почти немедленно разрядятся (если они были заряжены), отчего процедура чтения из памяти обязана заканчиваться регенерацией данных — так и происходит, причем автоматически. На практике в первых IBM PC регенерация и заключалась в осуществлении «фиктивной» операции чтения данных.
Я так подробно остановился на принципах работы ячейки DRAM потому, что любая современная память всегда хранит информацию в виде зарядов. И знание принципа работы самого простого элемента памяти нам поможет теперь понять, что же пришлось изменить в этой конструкции для обеспечения хранения заряда достаточно длительный срок.
Ячейка EPROM
Вы можете спросить — а с чего, собственно, столь быстро утекают заряды в ячейке DRAM? Неужели нельзя обкладки конденсатора изолировать получше? Изолировать-то можно, однако это делу не поможет — быстрая утечка зарядов обусловлена наличием транзистора, который состоит вовсе не из изолятора, а из хоть и полу-, но проводника, потому даже в запертом виде имеет мизерные, но конечные токи утечки. В паре с неизбежно маленькой емкостью самого конденсатора это и приводит к очень быстрому разряду (и токи утечки, и емкости измеряются в единицах с приставкой «пико»). В идеале следовало бы конденсатор изолировать полностью, но как тогда его перезаряжать при записи информации?
Замечательное изобретение сотрудника Intel Дона Фрохмана как раз и состояло в том, что он придумал, как это сделать. Но сначала давайте посмотрим, как работает сконструированный им полевой транзистор с плавающим затвором при чтении информации.
На рис. 3
представлено устройство элементарной ячейки, лежащей в основе всех современных типов флэш-памяти. Если исключить из нее «плавающий затвор», мы получим самый обычный полевой транзистор — такой же, как тот, что входит в ячейку DRAM. Если подать на управляющий затвор такого транзистора положительное напряжение, он откроется, и через него потечет ток (состояние «логическая единица»).
На рис. 4
и изображен именно такой случай, когда плавающий затвор не оказывает никакого влияния на работу ячейки, — такое состояние характерно для «чистой» флэш-памяти, в которую еще ни разу ничего не записывали.
Если же мы каким-то образом ухитримся разместить на плавающем затворе некоторое количество зарядов — свободных электронов (на рис. 3 они показаны в виде красненьких кружочков), — то они будут экранировать действие управляющего электрода, и такой транзистор вообще перестанет проводить ток. Это состояние — «логический ноль» 8 . Поскольку затвор «плавает» в толще изолятора (двуокиси кремния, SiO2), то сообщенные ему однажды заряды в покое никуда деться не могут. И записанная таким образом информация может храниться десятилетиями (производители обычно давали гарантию 10 лет, но на практике это время значительно больше).
Осталось всего ничего — придумать, как размещать заряды на изолированном от внешних влияний плавающем затворе. И не только размещать — ведь иногда память приходится и стирать, — поэтому должен существовать способ извлекать их оттуда. В первых образцах EPROM (UV-EPROM — тех самых, что стирались ультрафиолетом) слой окисла между плавающим затвором и подложкой был достаточно толстым (если, конечно, величину 50 нанометров можно охарактеризовать словом «толстый»), и работало все это довольно грубо. При записи на управляющий затвор подавали достаточно высокое положительное напряжение — до 36—40 В (что для микроэлектронной техники считается просто катастрофическим перенапряжением), а на сток транзистора — небольшое положительное. При этом электроны, которые двигались от истока к стоку, настолько ускорялись полем управляющего электрода, что барьер в виде изолятора между подложкой и плавающим затвором просто «перепрыгивали». Такой процесс называется еще инжекцией горячих электронов.
Ток заряда при этом достигал миллиампера — можете себе представить, каково было потребление всей схемы, если в ней одновременно заряжать хотя бы несколько тысяч ячеек. И хотя такой ток требовался на достаточно короткое время (хотя с точки зрения быстродействия схемы не такое уж и короткое — миллисекунды), это было крупнейшим недостатком всех старых образцов EPROM-памяти. Еще хуже другое — и изолятор, и сам плавающий затвор такого «издевательства» долго не выдерживали, постепенно деградируя, отчего количество циклов записи/стирания было ограничено несколькими сотнями, максимум — тысячами. Во многих образцах флэш-памяти (даже более поздних) была предусмотрена специальная схема для хранения карты «битых» ячеек — в точности так, как это делается в жестких дисках. В современных моделях такая карта, кстати, тоже имеется — однако число циклов стирания/записи возросло до сотен тысяч и даже миллионов.
Теперь посмотрим, как осуществлялось в этой схеме стирание. В упомянутой UV-EPROM при облучении ультрафиолетом фотоны высокой энергии сообщали электронам на плавающем затворе достаточный импульс, чтобы они «прыгали» обратно на подложку самостоятельно, без каких-либо электрических воздействий. А Джордж Перлегос использовал «квантовый эффект туннелирования Фаулера-Нордхейма» (Fowler-Nordheim) в электрически стираемой памяти (EEPROM). За непонятным названием кроется довольно простое (но очень сложное с физической точки зрения), по сути, явление: при достаточно тонкой пленке изолятора (10 нм) электроны, если их слегка «подтолкнуть» не слишком высоким напряжением в нужном направлении, могут «просачиваться» через барьер, не перепрыгивая его. Процесс показан на рис. 4 (обратите внимание на знак напряжения на управляющем электроде).
Старые образцы EEPROM именно так и работали: запись производилась горячей инжекцией, а стирание — квантовым туннелированием. Оттого они были довольно сложны в эксплуатации; разработчики со стажем помнят, что первые микросхемы EEPROM требовали два, а то и три питающих напряжения, причем подавать их при записи и стирании требовалось в определенной последовательности. Мало того, цена таких чипов была почти запредельной — автор сам покупал в середине 1990-х полумегабитную (то есть 64-килобайтную) энергонезависимую память по $30 за микросхему. Не забудьте и про «битые» ячейки, возникновение которых в процессе эксплуатации приходилось все время отслеживать. Неудивительно, что разработчики предпочитали использовать более дешевую, удобную, скоростную и надежную статическую память (SRAM), пристраивая к ней резервное питание от литиевых батареек, которые к тому времени уже достаточно подешевели. На этой волне компания Dallas Semiconductor даже выпустила специальный тип NVRAM с батарейкой, встроенной прямо в микросхему.
Превращение EEPROM во Flash происходило по трем разным направлениям. Во-первых, усовершенствовалась конструкция самой ячейки. Для начала избавились от самой противной стадии — «горячей инжекции». Вместо нее при записи стали также использовать квантовое туннелирование, как и при стирании.
На рис. 5
показан этот процесс — если при открытом транзисторе подать на управляющий затвор достаточно высокое (но значительно меньшее, чем при «горячей инжекции») напряжение, часть электронов, двигающихся через открытый транзистор от истока к стоку, «просочится» через изолятор и окажется на плавающем затворе. Потребление тока при записи снизилось на несколько порядков. Изолятор, правда, пришлось сделать еще тоньше, что обусловило довольно большие трудности с внедрением этой технологии в производство.
Во-вторых, ячейку сделали несколько сложнее, пристроив к ней второй транзистор (обычный), который разделил вывод стока и считывающую шину всей микросхемы. Благодаря этому (вместе с отказом от горячей инжекции) удалось добиться значительного повышения долговечности — до сотен тысяч, а в настоящее время — до миллионов 9 циклов записи/стирания. Кроме того, схемы формирования высокого напряжения и соответствующие генераторы импульсов записи/стирания перенесли внутрь микросхемы, отчего пользоваться такими типами памяти стало несравненно удобнее — они стали питаться от одного напряжения (5 или 3,3 В).
И наконец, в-третьих, изменилась организация доступа к ячейкам на кристалле, вследствие чего этот тип памяти и заслужил наименование flash, «молния».
Регенерация памяти
Впервые принцип DRAM — хранение информации на конденсаторах с периодической регенерацией — применил еще Дж. Атанасов в своем первом компьютере ABC (1941 г.). А зачем вообще нужна регенерация? Дело в том, что ввиду микроскопических размеров конденсатора (и, соответственно, емкости) в ячейке DRAM записанная информация хранится всего лишь сотые доли секунды. Несмотря на использование высококачественных диэлектриков с огромным электрическим сопротивлением, заряд, состоящий в рядовом случае всего из нескольких сотен, максимум тысяч электронов, успеет утечь так быстро, что вы и глазом моргнуть не успеете.
В первых моделях IBM РС регенерация осуществлялась каждые 15 мкс по сигналу системного таймера. Естественно, в таком решении было много подводных камней — во-первых, регенерация всей памяти занимала много времени, в течение которого ПК был неработоспособен. Потому-то сигнал на регенерацию и подавался с такой большой частотой — каждый раз проверялась всего 1/256 памяти, так что полный цикл восстановления занимал около 3,8 мс. Во-вторых, такое решение потенциально опасно: любая зловредная программа спокойно могла остановить системный таймер, отчего компьютер уже через несколько миллисекунд впадал в полный ступор. Современные микросхемы DRAM занимаются восстановлением данных самостоятельно, да еще и так, чтобы не мешать основной задаче — процессам чтения/записи.
Flash — значит быстрый
Процесс обновления информации в микросхемах EEPROM был очень медленным. Во-первых, каждую ячейку требовалось сначала стереть — ведь запись, то есть помещение на плавающий затвор зарядов, лишь приводило ее в состояние «логического ноля», а восстанавливать «логическую единицу» нужно было отдельно. Во-вторых, из-за большого потребления тока в процессе горячей инжекции каждую ячейку приходилось записывать фактически отдельно, а так как этот процесс занимал миллисекунды, то для перезаписи даже сравнительно небольших массивов (например, тех же 64 Кбайт) уходили уже секунды.
Между тем требовались все большие емкости долговременной памяти. Усовершенствование процедур записи и стирания ускорило процесс, но все же в сравнении с обычными DRAM и SRAM энергонезависимая память принципиально проигрывала в быстродействии. Правда, проигрывает и по сей день — только в последние годы (если не сказать месяцы) появилась надежда, что в будущем вся память компьютеров станет энергонезависимой. Еще совсем недавно «флэшки» уступали в «скорострельности» даже жестким дискам, не то что DRAM — иначе откуда бы взяться таким устройствам, как IBM Microdrive? Давайте посмотрим, как поступили разработчики во главе с Фуджио Масуока, придумывая то, что получило название флэш-память.
Они решили, что раз потребление при записи удалось снизить, то можно записывать ячейки не индивидуально, а блоками — чем крупнее блок, тем быстрее получится. В этой схеме некий массив данных готовится заранее (помещается в специальный временный буфер SRAM — на том же кристалле, что и основная память), затем все нужные ячейки разом стираются, и одновременно же в них записывается информация из буфера. Недостатком такого метода стала необходимость перезаписи целого блока, даже если нужно изменить только один бит в одной-единственной ячейке. Но на практике это не вырастает в проблему — основные задачи, которые выполняет энергонезависимая память в современном мире, как раз и заключаются в разовой записи больших массивов (цифровые камеры, плееры и т.п.). Вот такая разновидность EEPROM и стала называться flash — за многократно выросшую скорость записи информации, ставшей сравнимой со скоростью чтения.
NAND и NOR
По-русски это расшифровывается, как название логических функций — «И-НЕ» и «ИЛИ-НЕ». Термины пришли из схемотехники и прижились в словаре маркетологов. Определяют они принципы соединения ячеек между собой, что отражает довольно существенную разницу и в устройстве, и в функционировании модулей памяти. В некотором роде это напоминает деление фотографических матриц на CCD и CMOS, и, как и в случае с матрицами, разница между типами NAND и NOR постепенно нивелируется.
Первая микросхема флэш-памяти, выведенная на рынок компанией Intel в 1988 году (32 Кбайта, примерно по $20 за штуку), имела организацию NOR (рис. 6).
Подобная структура была у всех ранних типов EPROM. Здесь все просто: как и в DRAM, ячейки в строках матрицы соединены управляющими затворами («линии слов»), а в столбцах — считывающими линиями, которые здесь носят наименование «линии бит». Собственно, схему организации DRAM при желании можно также обозвать «схемой NOR». Доступ, как при чтении, так и при записи, возможен индивидуально к каждой ячейке. Благодаря такому построению, NOR имеет возможность очень быстрого считывания (в том числе, на выбор, любого бита или байта!), но скорость записи, которая по большей части обеспечивается искусственным соединением подобных матриц в блоки, у нее подкачала. Вследствие этих свойств NOR-разновидность незаменима в тех случаях, когда требуется быстрое выборочное чтение, а акты перезаписи сравнительно редки — в микросхемах BIOS, SIM-картах, встроенной памяти микроконтроллеров и т. п.
В 1989 году на рынке появилась первая флэш-память NAND-разновидности фирмы Toshiba. Ее структура показана на рис. 6, и как можно видеть, она значительно отличается от NOR. Начнем с того, что сами ячейки построены иначе, хотя и содержат все тот же транзистор с плавающим затвором.
На рис. 7
дана схема расположения этих компонентов на кристалле (элементарная ячейка обведена красным пунктиром) — как видите, с точки зрения производства NAND проще и занимает заметно меньше места, чем NOR. Чтение в ней происходит по-другому. Если в NOR следует подавать по очереди на линии слов высокий уровень напряжения («логическая единица»), и считывать значения с линий бит индивидуально для каждой ячейки, то в NAND наоборот, сначала все транзисторы данной конструкции следует открыть подачей напряжения высокого уровня на линии слов, а потом по очереди закрывать их подачей низкого уровня («логический ноль»).
Транзисторов-ячеек в NAND может быть от 16 до 32, но обычно их объединяют в блоки по 512 байт, которые и читаются и записываются только целиком. 512 байт — обычная величина сектора на жестком диске, также считываемого и записываемого целиком за один раз 10 . Эти блоки могут объединяться и в бульшие образования — страницы. Все это указывает на основное назначение NAND-технологии — построение систем хранения файлов. Практически все современные карты памяти, основным назначением которых и является хранение больших массивов информации за одно обращение, построены на флэш-памяти типа NAND. При чтении таких массивов первое обращение — довольно долгое (по сравнению с NOR), а вот далее данные идут широким потоком, почти не прерываясь. В последнее время даже Intel, стойко придерживавшаяся политики усовершенствования NOR-разновидности, «сдалась» и совместно с Micron занялась разработкой карт на основе NAND-чипов.
Термины и аббревиатуры
NOR— организация ячеек флэш-памяти по принципу логической функции «ИЛИ-НЕ»: индивидуальный доступ к каждому биту и большая скорость чтения, но и большие размеры ячейки и малое быстродействие при записи.
NAND— организация ячеек по принципу логической функции «И-НЕ»: высокое быстродействие при записи и компактность, но чтение и запись информации — только блоками.
SLC(single-level cell) — одноуровневая ячейка: традиционное построение флэш-памяти с возможностью хранения одного бита в одной ячейке.