В статье есть тяжелые фото, так что убрал под спойлеры.
Введение
Проблема запоминания цифровой информации возникла раньше, чем появились собственно компьютеры. Перед тем, как говорить, о конкретных физических реализациях, введем терминологию.
Память — физическое устройство или среда хранения данных. В простейшем случае память — массив нумерованных ячеек, содержащих «1» или «0». Записанные в тетрадке нули и единицы мы памятью считать не будем, так как невозможно (или строго говоря возможно но бессмысленно) автоматическое считывание такой памяти.
С точки зрения организации доступа к данным память можно разделить на следующие несколько типов:
- RAM – Random Access Memory, память со произвольным доступом. Можно прочитать или изменить любую ячейку.
- ROM – Read-Only Memory, память, из которой можно прочитать любую ячейку но нельзя записать (Постоянное запоминающее устройство, ПЗУ).
- FIFO – First In, First Out, память, в которую можно записать только сверху, а прочитать только снизу (в русских словах очередь).
- Stack(LIFO) – Last In, First Out, Access память, доступ в которой на чтение и запись возможен только к верхнему элементу (мне очень нравится её советское название, магазин).
- CAM — Content-addressable memory, память, адресуемая по содержимому (русское название — ассоциативная память).
Узоры на ткани
Впервые задача хранения и считывания данных из памяти была поставлена, а затем успешно решена для управления нитями в ткацком станке.
Ткацкий станок Фалькона. На переднем плане видны перфокарты, задающие рисунок ткани. Ссылка
Как же это работает? Рассмотрим сначала схему простейшего станка:
Ткацкий станок из Википедии
Идея проста, ремизки (c на рисунке) образуют зазор (зев в ткацкой терминологии) между нитями основы, которая подаётся подаётся с вала a (навоя), пропускается челнок i, нить из него прижимается при помощи бердо h, затем педалями e ремизки меняются местам и процесс повторяется. Полотно наматывается на товарный вал u. И все бы хорошо, но как быть, если хочется получить узор? Очевидным вариантом является индивидуальный подъём и опускание нитей основы в каждой итерации, при условии, что они разного цвета (например черные и белые). Такую конструкцию и предложил в 1725 году Базиль Бушон, а затем Жаном-Батист Фалькон в 1728 разработал систему автоматической подачи перфокарт. Разберем работу этого механизма на примере более позднего, но схожего по конструкции станка Жаккарда:
Схема машины Жаккарда из неплохой статьи про жаккардовы шторы
Вал 8 подаёт и прижимает очередную перфокарту. Иголки, сцепленные с крючками 1 прижимаются к ней, и некоторые попадают в отверстия перфокарты. Таким образом попавшие в отверстия иголки приподнимают соответствующие крючки, и их можно подцепить специальной планкой, тем самым образовав верхнюю ремизку, так как прикрепленные к крючкам нити 3 приподнимают соответствующие им нити основы 4. Те же нити основы, чьи крючки не попали в отверстия, под тяжестью отвесов 5 оказываются ниже, таким образом гравитация играет роль второй ремизки.
Автопортрет Жозефа Мари Жаккара, выполненный на его ткацком станке. Википедия
Таким образом мы получили первый ROM, который станет неотъемлемой частью первых компьютеров и доживет до начала 80-х годов.
Первые байты
Итак, настал 20й век, появились первые компьютеры, а в месте с ними и необходимость в RAM. Одними из первых с этой проблемой столкнулись Джон Винсент Атанасов и Клиффорд Берри, когда в 1939 году начали собирать свой ABC, Atanasoff-Berry Computer. Это было одно из первых цифровых электронных вычислительных устройств.
Общий вид ABC, утащенный из NYT
Для временного хранения переменных в этом компьютере использовался прадедушка современный оперативной памяти, вращающийся барабан, состоящий из 50 строк по 32 конденсатора. Положительный заряд конденсатора задавал логическую единицу, а отрицательный — логический ноль. Адресовалась такая память временем ожидания прокручивания барабана, причем каждое считывание уничтожало данные, поэтому всякий раз приходилось их перезаписывать.
Оригинальный барабан с ABC, взято отсюда.
Фрагмент реплики барабана ABC оттуда же. Видны контакты и сами конденсаторы
О дальнейшей судьбе такой памяти и её расцвете в наши дни есть статья в Википедии.
Север Кинескопы помнят
В 40-е годы, во время появления первых ЭВМ, еще не существовало, как в ниш дни, набора накатанных решений и технологий, что приводило к появлению очень необычных конструкций. Одна из них — трубка Уильямса. Она представляла из себя кинескоп, на люминофоре которого, зависимости от того, какое значение нужно запомнить, «1» или «0», засвечивалось тире или точка. Когда надо было считать значение, электронный пучок направлялся на тоже самое место и по эмиссии электронов, при помощи установленного рядом с кинескопом электрода выяснялось, что было записано.
Прототип трубки Уильямса с Википедии
Записанные данные на экране кинескопа трубки Уильямса с Википедии
Как правило ячейки памяти в трубках Уильямса были однобитными, и для того, чтобы оперировать многобитными словами они работали параллельно по числу бит.
Блок-схема трубки Уильямса отсюда
Для чтения адрес подавался на ADDRESS REGISTER, затем луч электронной пушки в WILLIAMS TUBE наводился в соответствующее место, происходило считывание и данные через усилитель REGENERATION AMPLIFIER попадали в выходной регистр SHIFT REGISTER, и, если была прочитана единица, обратно в трубку, т.к. нужно было восстановить утерянные данные. Трубки Уильямса прожили короткую, но бурную жизнь, попав во многие первые западные и отечественные ЭВМ. Аналогичный подход использовался в другом ЭЛТ-запоминающем устройстве, предложенном в 1946 году Жаном Райхманом селектроне.
Селектрон отсюда
В этой огромной радиолампе информация хранилась в щелях, покрытых люминофором, которые, в зависимости от заряда, пропускали или не пропускали электроны с «читающей» электронной пушки, которые в свою очередь попадали или не попадали в слой фосфора, из котрого и выбивали искомые цепями считывания электроны. На тот момент времени это была одна из самых плотных и самая быстрая память, но и её век был недолог.
Ртутью можно не только температуру мерять
Как можно уже догадаться по предыдущей главе, в 40-е годы «помнить» пытались заставить всё что угодно. Не стали исключением и волны в среде. Поскольку чуть раньше компьютеров мощное развитие получили средства радиолокации (о них очень хочу написать отдельную статью), то их элементная база сразу обратила на себя внимание пионеров цифровой эры. Одним из таких устройств стали линии задержки.
В радиолокационных станциях они использовались для фильтрации сигнала от неподвижных объектов. Из ответа на N-й импульс РЛС вычитался задержанный ответ на N-1-й импульс и таким образом не нулевыми оказывались только отклики от движущихся объектов, что позволяло избавиться от шумов, которые создавали отраженные рельефа радиоволны. Но постойте! А что если мы запустим сигнал в линию задержки и замкнем вход ны выход? Это же будет память! Примерно такая мысль и пришла в голову Джону Экерту младшему. В качестве линии задержки использовалась колба со ртутью, на концах которой были установлены пьезокристаллы, один для возбуждения колебаний, второй для их считывания.
Упрощенная схема ячейки памяти на ртутной линии задержки. Взято отсюда
Очевидно, что таким образом можно хранить не один бит, а целую пачку, чем успешно и пользовались. Однако вскоре и эта память потеряла свою актуальность.
Прямо как магнитом помнит
И вот настала пора магнитной памяти. И тут люди, не знакомые с историей древних компьютеров, сразу вспомнят про жесткие диски. Ну что ж, давайте с них и начнем. И первым вспомним про память на магнитном барабане.
Магнитный барабан, который я в детстве очень любил разглядывать когда бывал в Политехническом музее. Фото понятно откуда
Запись на такие устройства происходила очень просто. В определённое место подавалось магнитное поле, сила которого кодировала единицу или ноль. Считывание информации происходило при помощи т.н. магнитной головки, в которой, когда она с некоторой скоростью проходила мимо участка с записанными данными, из-за изменения магнитного поля возникал индуцированный ток, сила которого зависела от силы магнитного поля. Аналогичным способом работали и ленточные накопители. Что интересно, современные жесткие диски используют иной принцип запоминания и считывания информации. Какой — повод для отдельной статьи.
В предыдущих главах, о тёплой ламповой памяти, я упоминал, что прожила она недолго. Но кто же пришел ей на смену? И ответ снова магнитная память, на сей раз в виде памяти на ферритовых кольцах, причем ферриты не простые, а те, которым был свойственен гистерезис намагниченности, т.е. они могли находиться в двух фиксированных состояниях, что нам и надо.
Схема блока адресуемой памяти на ферритовых кольцах отсюда
Для записи кольца F в проводники и подаётся ток, который образует поле H/2 вокруг каждого из проводников, при условии, что только величины H достаточно, для изменения намагниченности ферромагнитного кольца, а намагниченность попавшихся на пути колец C, D и E после выключения тока вернется к исходным значениям за счет явления гистерезиса намагниченности. Теперь нам нужно считать данные. Для этого на целевое кольцо подаётся ток записи «0». Если была записана единица, то магнитное поле в данном кольце изменит своё направление, в проводнике S наведется импульс тока, а если там и был «0» то тока не будет. Таким образом мы узнали, что было записано. Разумеется, как и в трубке Уильямса, придётся вернуть единицу на место. На долгие годы этот тип памяти будет безраздельно властвовать в компьютерах. По одной из версий именно ему мы обязаны термином «прошивать память», из-за способа производства, ручного прошивания колец проводами как-то так:
Плата ОЗУ, на 11560 бит, разбитых на 20 матриц формата 34х17. Применялась в алфавитно-цифровом терминале с векторным отображением символов РИН-609; производитель — предположительно, одно из предприятий Армении. Оттуда же.
Заключение
Есть многое на свете, друг Горацио… ой не то. Есть еще много на свете странных способов хранить данные. Надеюсь, в комментариях подбросят еще чего-нибудь интересного. С своей стороны скажу, что очень рекомендую людям, занимающимся разработкой цифровой и просто техники, смотреть на ранние идеи в различных отраслях технической мысли, когда, как говорится, голь на выдумки хитра, это учит нестандартно думать и просто расширяет кругозор. Спасибо за внимание.
Автор: Александр