И наконец, в-третьих, изменилась организация доступа к ячейкам на кристалле, вследствие чего этот тип памяти и заслужил наименование 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 наоборот, сначала все транзисторы данной конструкции следует открыть подачей напряжения высокого уровня на линии слов, а потом по очереди закрывать их подачей низкого уровня («логический ноль»).