Возможно, самой изобретательной техникой была линия задержки. Линия задержки – это любое устройство, которое задерживает распространение импульсного или волнового сигнала. Если вы когда-либо слышали эхо в горах или пещере, то знайте – вы столкнулись с линией задержки звука: шумовая волна распространяется со скоростью звука, отскакивая от стен и меняя направление движения.
Линия задержки «хранит» данные кратковременно (если сигнал периодически не усиливается), но сам факт, что она вообще хранит данные, является явлением, которое можно использовать для технологии памяти.
В первых компьютерных линиях задержки использовались длинные трубки, заполненные жидкой ртутью, используемая в качестве физической среды, через которую звуковые волны распространялись по всей длине трубки. На каждом конце был установлен электрический/звуковой преобразователь, один для создания звуковых волн из электрических импульсов, а другой для создания электрических импульсов из звуковых волн.
Поток последовательных двоичных данных посылался на передающий преобразователь в виде сигнала напряжения. Последовательность звуковых волн проходит слева-направо через ртуть в трубке и принимается преобразователем на другом конце. Приёмный преобразователь будет получать импульсы в том же порядке, в котором они были переданы:
Цепь обратной связи, подключённая к приёмному преобразователю, снова будет управлять передающим преобразователем, отправляя через трубку ту же последовательность импульсов, что и звуковые волны, сохраняя данные до тех пор, пока цепь обратной связи продолжает функционировать.
Линия задержки функционировала как сдвиговый регистр по принципу «первым вошёл → первым вышел» (ПВПВ), а внешняя обратная связь превратила поведение регистра сдвига в кольцевой счётчик, бесконечно циклически повторяющий биты.
Концепция линии задержки имела многочисленные ограничения из-за доступных тогда материалов и технологий. Компьютер EDVAC начала 1950-х годов использовал 128 заполненных ртутью трубок, каждая длиной около 5 футов (≈ 1,5 метра) и хранящих максимум 384 бита.
Изменения температуры влияют на скорость звука в ртути, что искажает временну́ю задержку в каждой трубке и вызывает проблемы с синхронизацией. Более поздние конструкции заменили жидкую ртутную среду твёрдыми стержнями из стекла, кварца или специального металла, которые задерживали торсионные, т.е. закручивающиеся, волны (не путать с торсионными полями), а не продольные, и работали на гораздо более высоких частотах.
В одной из таких линий задержки использовался специальный никель-железо-титановый провод (материал выбран из-за его хорошей термостойкости) длиной около 95 футов (≈ 29 метров), свёрнутый в спираль для уменьшения места, которое он занимает. Общее время задержки от одного конца провода до другого составляло около 9,8 миллисекунд, а максимальная практическая тактовая частота равнялась 1 МГц.
Это означало, что примерно 9800 бит данных могли храниться в проводе линии задержки в любой момент времени. Учитывая различные средства задержки сигналов, которые не были бы столь чувствительны к переменным окружающей среды (например, последовательные импульсы света в длинном оптическом волокне), этот подход может когда-нибудь найти повторное применение.
Другим подходом, с которым экспериментировали первые инженеры-компьютерщики, было использование электронно-лучевой трубки (ЭЛТ), типа, обычно используемого в осциллографах, радарах и телевизионных экранах, для хранения двоичных данных. Обычно сфокусированный и направленный электронный пучок в ЭЛТ используется для того, чтобы частицы люминофора внутри трубки светились, создавая тем самым видимое изображение на экране.
Однако в этом приложении желаемым результатом было создание электрического заряда на стекле экрана за счёт воздействия электронного луча, который затем обнаруживался металлической сеткой, расположенной непосредственно перед ЭЛТ. Как и линия задержки, так называемая запоминающая трубка Уильямса должна была периодически обновляться с помощью внешней схемы для сохранения её данных. В отличие от механизмов линии задержки, она была практически невосприимчива к факторам окружающей среды, таким как температура и вибрация.
В компьютере IBM модели 701 использовалась запоминающая трубка Уильямса ёмкостью 4 килобайта, и у неё была плохая привычка «перезаряжать» биты на экране трубки с последовательными перезаписями, так что ложные состояния «1» могли перетекать в соседние места на экране.
Следующее крупное достижение в области компьютерной памяти произошло, когда инженеры обратились к магнитным материалам как к средству хранения двоичных данных. Было обнаружено, что некоторые соединения железа, а именно «феррит», обладают почти квадратными кривыми гистерезиса:
Показанный на рисунке график с силой приложенного магнитного поля по горизонтальной оси (напряженность поля) и фактической намагниченностью (ориентация электронных спинов в ферритовом материале) по вертикальной оси (плотность потока), феррит не будет намагничиваться в одном направлении до тех пор, пока приложенное поле не превысит критическое пороговое значение. Как только это критическое значение превышено, электроны в феррите «защёлкиваются» в магнитном выравнивании, и феррит становится намагниченным.
Если приложенное поле затем отключается, феррит сохраняет полный магнетизм. Чтобы намагнитить феррит в другом направлении (в противоположной полярности), приложенное магнитное поле должно превышать критическое значение в обратном направлении. Как только это критическое значение превышено, электроны в феррите «защёлкиваются» в магнитном выравнивании в противоположном направлении. Опять же, если приложенное поле затем отключается, феррит сохраняет полный магнетизм. Проще говоря, намагниченность куска феррита «бистабильна».
Используя это странное свойство феррита, мы можем использовать эту естественную магнитную «защёлку» для хранения двоичного бита данных. Чтобы установить или сбросить эту «защёлку», мы можем использовать электрический ток через провод или катушку для создания необходимого магнитного поля, которое затем будет воздействовать на феррит.
Джей Форрестер из Массачусетского технологического института применил этот принцип при изобретении памяти с магнитным сердечником, которая стала доминирующей технологией компьютерной памяти в 1970-х годах.
Сетка проводов, электрически изолированных друг от друга, пересекает центр множества ферритовых колец, каждое из которых называется «сердечником». Когда постоянный ток проходил по любому проводу от источника питания к «земле», вокруг этого провода, находящегося под напряжением, создавалось круговое магнитное поле.
Значения резисторов были установлены таким образом, чтобы величина тока при регулируемом напряжении источника питания создавала немногим более ½ критической напряжённости магнитного поля, необходимой для намагничивания любого из ферритовых колец. Следовательно, если бы провод колонки №4 был под напряжением, все сердечники в этом столбце подверглись бы воздействию магнитного поля от этого одного провода, но его силы было бы недостаточно, чтобы изменить намагниченность любого из этих сердечников.
Однако, если бы провод колонки №4 и провод ряда №5 находились под напряжением, сердечник на пересечении колонки №4 и ряда №5 подвергался бы сумме этих двух магнитных полей: величина достаточно сильна, чтобы «установить» или «сбросить» намагниченность этого сердечника. Другими словами, каждое ядро адресовалось пересечением строки и столбца. Различие между «установкой» и «сбросом» заключалось в направлении магнитной полярности сердечника, и это битовое значение данных определяется полярностью напряжений (относительно «земли»), которыми будут питаться провода строк и столбцов.
На следующей фотографии показана основная плата памяти Data General, модель компьютера «Nova», примерно конца 1960-х или начала 1970-х годов. Его общая ёмкость составляла 4 кбайта (это килобайты, а не мегабайты!). Шариковая ручка показана для сравнения размеров:
Электронные компоненты, видимые по периферии этой платы, используются для «запуска» тока на провода колонок и рядов, а также для считывания состояния сердечника. На фотографии крупным планом видны кольцеобразные жилы, через которые проходят провода матрицы. Опять же, шариковая ручка показана для сравнения размеров:
На следующей фотографии показана основная плата памяти более поздней конструкции (около 1971 г.). Её ядра намного меньше и более плотно упакованы, что даёт больший объём памяти, чем для прежней платы (8 кбайт вместо 4 кбайт):
И ещё крупный план ядер:
Запись данных в основную память была достаточно простой, но чтение этих данных было своего рода хитростью. Чтобы облегчить эту важную функцию, провод «считывания» был пропущен через все жилы в матрице памяти, один конец которого был заземлён, а другой конец подключён к схеме усилителя.
На этом «считанном» проводе генерировался импульс напряжения, если адресованная жила меняла состояния (с 0 на 1 или с 1 на 0). Другими словами, чтобы прочитать значение ядра, нужно записать в это ядро либо 1, либо 0 и контролировать напряжение, индуцированное на считываемом проводе, чтобы увидеть, изменилось ли ядро. Очевидно, что, если бы состояние ядра было изменено, вам пришлось бы сбросить его обратно в исходное состояние, иначе данные были бы потеряны.
Этот процесс известен как деструктивное чтение, поскольку данные могут быть изменены (уничтожены) по мере их чтения. Таким образом, обновление памяти ядра необходимо, хотя и не во всех случаях (то есть в случае, если состояние ядра не изменилось, когда в него была записана либо 1, либо 0).
Одним из основных преимуществ основной памяти по сравнению с линиями задержки и трубками Вильямса была энергонезависимость. Ферритовые сердечники сохраняли свою намагниченность неопределённое время, не требуя питания или обновления. Его также было относительно легко построить, он был более плотным и физически более прочным, чем любой из его предшественников.
Базовая память использовалась с 1960-х до конца 1970-х годов во многих компьютерных системах, включая компьютеры, использовавшиеся для космической программы «Аполлон», компьютеры управления станками с ЧПУ, компьютеры для бизнеса («мейнфреймы») и промышленные системы управления. Несмотря на то, что основная память давно устарела, термин «ядро» до сих пор иногда используется в отношении оперативной памяти компьютера.
Всё то время, пока изобретались технологии линий задержки, трубки Вильямса и основной памяти, простая статическая ОЗУ совершенствовалась с использованием технологии меньших активных компонентов (электронных ламп или транзисторов). Статическое ОЗУ никогда полностью не затмевалось его конкурентами: даже старый компьютер ENIAC 1950-х годов использовал схему кольцевого счётчика на электронных лампах для регистров данных и вычислений. В конце концов, всё меньше и меньше технология производства микросхем ИС давала транзисторам практическое преимущество перед другими технологиями, и основная память стала музейным экспонатом в 1980-х годах.
Последней попыткой создать магнитную память лучшей, чем ядро, была пузырьковая память. Пузырьковая память использовала особое явление в минерале, называемом гранатом, который (когда он располагался в виде тонкой плёнки и подвергался воздействию постоянного магнитного поля, перпендикулярного плёнке) поддерживал крошечные области противоположно намагниченных «пузырьков», которые можно было подталкивать вдоль поверхности плёнки путём воздействия другими внешними магнитными полями.
На гранате можно было проложить «дорожки», чтобы сфокусировать движение пузырьков, нанеся магнитный материал на поверхность пленки. На гранате была сформирована непрерывная дорожка, которая давала пузырькам длинную петлю, по которой они могли двигаться, и к пузырькам прикладывалась движущая сила с помощью пары проволочных катушек, обернутых вокруг граната и запитанных двухфазным напряжением. Пузырьки можно создавать или уничтожать с помощью крошечной катушки проволоки, размещённой для этого на пути пузырьков.
Наличие пузырька представляло собой двоичную «1», а отсутствие пузырька представляло двоичный «0». Данные можно было считывать и записывать в этой цепочке движущихся магнитных пузырьков, когда они проходили по крошечной катушке провода, почти так же, как «головка» чтения/записи в кассетном магнитофоне, считывающая намагниченность ленты по мере её движения.
Как и основная память, пузырьковая память была энергонезависимой: постоянный магнит создавал необходимое фоновое поле, необходимое для поддержки пузырьков при отключении питания. Однако, в отличие от основной памяти, пузырьковая память обладала феноменальной плотностью хранения: миллионы битов могли храниться на кристалле граната размером всего в пару квадратных дюймов. Что убило пузырьковую память как жизнеспособную альтернативу статической и динамической ОЗУ, так это её медленный последовательный доступ к данным.
Будучи не чем иным, как невероятно длинным последовательным регистром сдвига (кольцевым счётчиком), доступ к любой конкретной части данных в последовательной строке может быть довольно медленным по сравнению с другими технологиями памяти.
Электростатическим эквивалентом пузырьковой памяти является память устройства с зарядовой связью (ПЗС), адаптация ПЗС-устройств, используемых в цифровой фотографии. Подобно пузырьковой памяти, биты последовательно сдвигаются по каналам на материале подложки с помощью тактовых импульсов. В отличие от пузырьковой памяти, электростатические заряды распадаются и должны обновляться.
Таким образом, память ПЗС является энергозависимой, с высокой плотностью хранения и последовательным доступом. Интересно, не так ли? Старые запоминающие трубки Уильямса были адаптированы из технологии просмотра CRT, а память CCD — из технологии видеозаписи.