Flash — значит быстрый

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

Между тем требовались все большие емкости долговременной памяти. Усовершенствование процедур записи и стирания ускорило процесс, но все же в сравнении с обычными DRAM и SRAM энергонезависимая память принципиально проигрывала в быстродействии. Правда, проигрывает и по сей день — только в последние годы (если не сказать месяцы) появилась надежда, что в будущем вся память компьютеров станет энергонезависимой. Еще совсем недавно «флэшки» уступали в «скорострельности» даже жестким дискам, не то что DRAM — иначе откуда бы взяться таким устройствам, как IBM Microdrive? Давайте посмотрим, как поступили разработчики во главе с Фуджио Масуока, придумывая то, что получило название флэш-память.

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

NAND и NOR

По-русски это расшифровывается, как название логических функций — «И-НЕ» и «ИЛИ-НЕ». Термины пришли из схемотехники и прижились в словаре маркетологов. Определяют они принципы соединения ячеек между собой, что отражает довольно существенную разницу и в устройстве, и в функционировании модулей памяти. В некотором роде это напоминает деление фотографических матриц на CCD и CMOS, и, как и в случае с матрицами, разница между типами NAND и NOR постепенно нивелируется.

Первая микросхема флэш-памяти, выведенная на рынок компанией Intel в 1988 году (32 Кбайта, примерно по $20 за штуку), имела организацию NOR (рис. 6).

Домашний компьютер № 9 (123) 2006 - pic_6.jpg

Подобная структура была у всех ранних типов EPROM. Здесь все просто: как и в DRAM, ячейки в строках матрицы соединены управляющими затворами («линии слов»), а в столбцах — считывающими линиями, которые здесь носят наименование «линии бит». Собственно, схему организации DRAM при желании можно также обозвать «схемой NOR». Доступ, как при чтении, так и при записи, возможен индивидуально к каждой ячейке. Благодаря такому построению, NOR имеет возможность очень быстрого считывания (в том числе, на выбор, любого бита или байта!), но скорость записи, которая по большей части обеспечивается искусственным соединением подобных матриц в блоки, у нее подкачала. Вследствие этих свойств NOR-разновидность незаменима в тех случаях, когда требуется быстрое выборочное чтение, а акты перезаписи сравнительно редки — в микросхемах BIOS, SIM-картах, встроенной памяти микроконтроллеров и т. п.

В 1989 году на рынке появилась первая флэш-память NAND-разновидности фирмы Toshiba. Ее структура показана на рис. 6, и как можно видеть, она значительно отличается от NOR. Начнем с того, что сами ячейки построены иначе, хотя и содержат все тот же транзистор с плавающим затвором.

На рис. 7

Домашний компьютер № 9 (123) 2006 - pic_7.jpg

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

Транзисторов-ячеек в NAND может быть от 16 до 32, но обычно их объединяют в блоки по 512 байт, которые и читаются и записываются только целиком. 512 байт — обычная величина сектора на жестком диске, также считываемого и записываемого целиком за один раз 10 . Эти блоки могут объединяться и в бульшие образования — страницы. Все это указывает на основное назначение NAND-технологии — построение систем хранения файлов. Практически все современные карты памяти, основным назначением которых и является хранение больших массивов информации за одно обращение, построены на флэш-памяти типа NAND. При чтении таких массивов первое обращение — довольно долгое (по сравнению с NOR), а вот далее данные идут широким потоком, почти не прерываясь. В последнее время даже Intel, стойко придерживавшаяся политики усовершенствования NOR-разновидности, «сдалась» и совместно с Micron занялась разработкой карт на основе NAND-чипов.

Термины и аббревиатуры

NOR— организация ячеек флэш-памяти по принципу логической функции «ИЛИ-НЕ»: индивидуальный доступ к каждому биту и большая скорость чтения, но и большие размеры ячейки и малое быстродействие при записи.

NAND— организация ячеек по принципу логической функции «И-НЕ»: высокое быстродействие при записи и компактность, но чтение и запись информации — только блоками.

SLC(single-level cell) — одноуровневая ячейка: традиционное построение флэш-памяти с возможностью хранения одного бита в одной ячейке.

MLC(multi-level cell) — многоуровневая ячейка: флэш-память (как nor, так и NAND), построенная таким образом, чтобы можно было хранить два и более бит в одной ячейке.

OneNAND— технология, разработанная samsung, совмещает функцию высокоскоростного считывания информации NOR— и компактность NAND-flash.

LBA-NAND (logical block addressing nand) — улучшенная структура NAND-чипа компании Toshiba, позволяющая иметь единое адресное пространство независимо от объема применяемой «флэшки».

DINOR(divided bit-line nor) — структура nor с разделенными разрядными линиями, разработанными компанией Hitachi.

А дальше?

Все, что рассказано выше, касалось классической флэш-памяти. А все эти Extreme III, Ultra или PRO-карточки, которые заполонили наши прилавки, — это флэш-память следующих поколений.

Собственно, принципиально нового со времен Фуджио Масуоки было только одно: разработчики учли то, что информация в ячейке хранится в аналоговой форме — в виде некоторого количества электронов (порядка 1000). Если использовать деление на несколько градаций и строго дозировать электроны при записи, можно в одной ячейке хранить не один (классическая схема), а сразу много бит информации. Так появились многоуровневые ячейки — MLC. У фирмы Intel это называется технология StrataFlash, у AMD и Fujitsu (Spansion — их совместное предприятие) — MirrorBir, у израильской фирмы Saifun (у которой, судя по итогам судебного процесса, AMD и Fujitsu заимствовали свой MirrorBir) — NROM, у Toshiba и M-Systems — просту х2 или х4 (смотря по тому, сколько бит хранится в ячейке). И хотя технология и схемотехника такой памяти гораздо сложнее, выигрыш очевиден — возрастает плотность упаковки. Кроме того, можно применить так называемую многочиповую упаковку (MCP — multi-chip packages), в чем особенно преуспела Samsung. Теперь вам понятно, откуда чуть ли не каждые полгода появляются объявления о начале производства NAND-микросхем с удвоенной емкостью?

вернуться

10 Размер сектора есть минимальная единица емкости дисков на низком уровне, и ее не нужно путать с размером кластера, которым манипулируют различные файловые системы на высоком уровне. Размер кластера — величина переменная и зависит, в частности, от емкости диска.