23 сентября 2019 г. | Автор: Александр Ким
DRAM: торжество компромисса

В 1981 году один молодой владелец компании по разработке программного обеспечения заявил: «Никому не понадобится больше 637 Кб оперативной памяти для персонального компьютера. 640 Кб хватит всем». Это был Билл Гейтс.

Эта статья была опубликована в журнале OYLA №4(44). Оформить подписку на печатную и онлайн-версию можно здесь.

Чего всегда мало компьютеру

Сегодня этот прогноз кажется смешным, но не спешите обвинять экс-главу Microsoft в недальновидности: в 1980 году цена за один килобит оперативной памяти составляла почти 98 центов (сравните с 0,3 цента в 1995‑м). Поэтому в реалиях тех лет мнение Билла Гейтса было вполне обоснованным — посчитайте, во сколько тогда обходилась одна только память ПК! А ведь у компьютера есть и другие компоненты.

Также надо сказать, что к началу 80‑х годов прошлого века компьютеры были уже «зрелыми» машинами с устоявшейся архитектурой. Время экспериментов по большому счёту уже прошло — индустрия ЭВМ наращивала чисто количественные характеристики и определяла новые стандарты.

Давным-давно…

Любопытна история этих опытов — что только не пытались использовать для хранения данных! Кстати, вопреки распространённому мнению, первым программируемым компьютером был не знаменитый ENIAC, а электромеханический Z3, созданный немецким изобретателем Конрадом Цузе для решения задач аэродинамики и баллистики первых крылатых ракет. Машина, оперирующая в двоичной логике, содержала почти две с половиной тысячи реле и работала с числами с плавающей запятой, применяя современный принцип адресного распределения памяти, когда каждое 22‑разрядное слово можно поместить в память или извлечь из неё командами PRz и PSz (z — соответствующий регистр оперативного запоминающего устройства с адресами от 1 до 64). И всё это работало в 1940 году, за 5 лет до появления ENIAC!

Так вот, в машине Цузе данные хранились в конденсаторных ячейках (позднее мы увидим, что история действительно движется по спирали). Однако затем конденсаторы были надолго забыты, и в первых массовых машинах использовались триггеры (электронные узлы, сохраняющие текущее состояние до подачи управляющего сигнала) на электронных лампах-трио­дах, число которых доходило до двух десятков тысяч! Были среди разработок и такие уникальные устройства, как «трубка Уильямса» — обычная ЭЛТ, в которой данные сохранялись в виде заряда люминофора; декатрон — газоразрядный десятичный счётчик; экзотическая ртутная колба, в которой информация записывалась в виде… цепочки волн; селектрон — причудливое смешение электронной лампы-триода и лучевой трубки; вариации магнитной памяти, в том числе ферритовая и твисторная, придуманная талантливейшим сотрудником фирмы Bell Labs Эндрю Бобеком.

Get off my cloud!

Весь этот «зоопарк» был благополучно забыт, когда в 1970 году амбициозный старт­апер (да-да!) компания Intel выпустила чип i1103. «Юной» фирма была только на бумаге: в числе её основателей были такие профессионалы, как Роберт Нойс, Гордон Мур (закон его имени помните?) и Энди Гроув, съевшие в микроэлектронике не одну собаку и успевшие поработать с отцом полупроводников — самим Уильямом Шокли. Впрочем, 1103‑й чип — творение совсем другого учёного-изобретателя, давнего сотрудника IBM Роберта Деннарда.

К середине 1960‑х сложилась интересная ситуация: уровень теоретических и технологических достижений позволял перевести компьютеры на новую ступень развития, но всё упиралось в память. Разработки тех лет были медленные, ненадёжные и дорогие. К тому же существовала проблема так называемой последовательности доступа: когда требовался конкретный бит, считывать приходилось весь пакет данных (так разработчики стремились оптимизировать доступный объём), а это не прибавляло быстродействия. В поисках решения Роберт Деннард с коллегами рассмотрел массу вариантов и на одном из них в итоге остановился. Попробуем воспроизвести ход его рассуждений.

Во-первых, ячейка памяти должна обеспечивать надёжное и быстрое распознавание своего состояния, то есть никаких разночтений по поводу уровня тока, заряда или напряжения возникать не должно. Во-вторых, каждая ячейка должна иметь уникальный независимый адрес, по которому операционная система может её найти. В-третьих, физический принцип устройства ячейки должен позволять быстро изменять её состояние. И в-четвёртых, ячейка должна быть технологична и дешева в изготовлении.

При этом от ячейки не требуется энергонезависимость, то есть сохранять данные при отключении электропитания не нужно: при следующем запуске они будут снова загружены с устройства постоянного хранения (например, жёстких дисков). Это обстоятельство существенно упрощало задачу, позволяя обойтись без сложных триггерных блоков, как это реализовано в дорогой статической памяти.

Да здравствует ёмкость!

Самым подходящим компонентом оказался старый доб­рый конденсатор в комплекте с транзисторами (они играют вспомогательную роль ключей, удерживающих заряд и разрешающих доступ к конденсатору при чтении и записи данных).

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

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

Из-за этих особенностей память на конденсаторах стыдливо назвали динамической (dynamic), а вся её «динамичность» фактически сводится к самопроизвольному обнулению ячеек, бороться с которым призвана сложная электронная «обвязка» в виде контроллеров, дешифраторов, узлов регенерации и т. п. Тем не менее лучшего решения на рынке всё равно не было, поэтому летом 1968 года изобретение Роберта Деннарда получило признание в форме патента США и поддержку боссов IBM, посчитавших, что у DRAM-модулей памяти есть неплохие перспективы. А уже упомянутый интеловский чип памяти под номером 1103 со смешным объёмом в 1 кбит (1024 бита) всего через два года стал коммерческим бестселлером и разошёлся по миру в миллионах экземпляров. К примеру, именно он использовался в легендарных настольных компьютерах 9800‑й серии фирмы HP.

Рывок

DRAM (dynamic random access memory) — динамическая память с произвольным доступом — здорово ускорила развитие компьютерной индустрии. Ещё бы! Сравнительно дешёвая и простая, прекрасно подходящая для фотолитографии, с немалым запасом модернизации, технология динамической памяти быстро стала массовой, ознаменовав переход от громоздких мейнфреймов к небольшим персоналкам, занимающим всего половину рабочего стола. Модули памяти, ранее впаянные в материнскую плату, превратились в отдельные планки-чипы, которые вставлялись в специальные разъёмы, что сильно облегчало ремонт и модернизацию машин. Объём производства модулей неуклонно рос.

Принципиальные недостатки DRAM — невысокое быстродействие (время разряда конденсатора на порядок больше, чем переключение триггера), необходимость регенерации заряда, сложность алгоритмов доступа (операции записи-считывания надо связывать с циклами регенерации содержимого ячеек), энергозависимость — всё это ушло на второй план, внушив разработчикам программного обеспечения мысль о практической неограниченности важнейшего ресурса компьютера.

Пожалуй, самый серьёзный прорыв был связан с появлением процессора Intel Pentium, которому прежние рамки обычной DRAM оказались тесны. Наиболее подходящей для новичка стала синхронная динамическая память с произвольным доступом — SDRAM (Synchronous DRAM), разработанная для видеокарт. Ускорение в ней достигалось не изменением принципа действия, а способом работы с содержимым ячеек. За счёт новой организации элементных матриц, образующих банки памяти, усложнения контроллеров, обес­печивающих все аспекты работы модуля, оптимизации сигнальных линий удалось значительно повысить скорость обмена данными. Важнейшая особенность SDRAM — синхронизация работы с процессором. Прежде процессор «не знал», сколько времени понадобится для получения из ячейки памяти запрошенных данных (про циклы регенерации, записи и считывания помните?). И подолгу простаивал. С появлением синхронной памяти процессор стал ясно «представлять», сколько тактов ему ждать, а потому мог заняться следующей параллельной операцией. Первой SDRAM мы обязаны компании Samsung: в 1993 году она выпустила микросхемы памяти с рабочей частотой 100 МГц и временем доступа 10 нс.
Бег к тупику

К началу третьего тысячелетия новый тип памяти вытеснил конкурентов, и международный комитет JEDEC (Joint Electron Device Engineering Council), куда входят представители ведущих мировых производителей микроэлектроники, счёл спе­цификацию SDRAM базовой для стандарта оперативной памяти. Довольно скоро, впрочем, в него пришлось вносить изменения: появилась память DDR с удвоенной частотой передачи данных, в которой обмен по внешней шине идёт не только по фронту тактового импульса, но и по спаду. Самая свежая модель — DDR4 — запущена в массовое производство в 2014 году и на сегодня в самых быс­т­рых версиях может обеспечить фантастическую пропускную способность более 20 ГБт в секунду. Этого, в принципе, дос­таточно для большинства современных приложений.

Но что будет завтра? Чтобы оценить перспективы, возьмём видео формата 4K/60 Гц, которое всё увереннее вторгается в нашу жизнь. Уже для него пропускной способности DDR4 хватает впритык, а ведь на подходе стандарт 4K/120 Гц! Даже на этом примере ясно, что эпоха DRAM-памяти близится к закату: физические ограничения на размер ячеек не за горами, а значит, ресурсы для дальнейшего увеличения производительности фактически исчерпаны.

Какой будет память послезавтрашнего дня? Сейчас об этом приходится только гадать, но некоторые общие тенденции можно попытаться представить.

Прежде всего память станет энергонезависимой: компьютер будет готов работать сразу же после включения, ведь всё уже внутри и не требует загрузки. Ресурс ячеек будет исчисляться мил­лионами или миллиардами циклов, то есть никакого шаманства с подсчётом оставшегося времени жизни, как в популярной сейчас флеш-памяти, не потребуется. Быстродействие ячеек должно как минимум сравняться с характеристиками дорогой триггерной памяти, используемой сейчас в основном в кэширующих буферах, а как максимум — превзойти её. Наконец, себестоимость такой супер­памяти должна быть не слишком большой, а её производство — основываться на уже существующих технологиях.

И когда такая память появится, компьютеры изменятся до неузнаваемости. Не будет больше разделения на оперативную и постоянную память, понятия кэша и латентности потеряют смысл, а процессоры без всяких задержек смогут обращаться к нужным ячейкам напрямую. От таких перспектив становится немного не по себе: а будем ли мы нужны компьютерам?

Тэги: