Автор оригинала: Ken Shirriff

Spacelab — многоразовая лаборатория, которую Space Shuttle возил в грузовом отсеке: место для астронавтов и экспериментов[1]. Проект был европейский, поэтому управлял им не бортовой компьютер шаттла (IBM AP-101), а французский мини-компьютер Mitra 125 MS[2]. Оперативной памяти у него было 128 КБ, и собрана она была на магнитных сердечниках, без единого кремниевого бита: каждый бит хранится в крошечном ферритовом колечке. В этой статье я подробно разбираю модуль памяти этого компьютера.

Блок ферритовой памяти компьютера Spacelab. Верхнюю плату я снял, чтобы были видны матрицы сердечников
Блок ферритовой памяти компьютера Spacelab. Верхнюю плату я снял, чтобы были видны матрицы сердечников

Блок ферритовой памяти компьютера Spacelab. Верхнюю плату я снял, чтобы были видны матрицы сердечников

На иллюстрации ниже видно, как Spacelab размещался в грузовом отсеке. Герметичная лаборатория — цилиндрический модуль в передней части отсека, с шаттлом его соединял туннель. Эксперименты ставили на платформы позади лаборатории. В лаборатории стояли три одинаковых компьютера Mitra[3]: один управлял самим Spacelab, второй — экспериментами, третий был резервным на случай отказа.

Spacelab — герметичный цилиндр в грузовом отсеке шаттла, соединённый с ним туннелем. Иллюстрация NASA, C-1976-4380
Spacelab — герметичный цилиндр в грузовом отсеке шаттла, соединённый с ним туннелем. Иллюстрация NASA, C-1976-4380

Spacelab — герметичный цилиндр в грузовом отсеке шаттла, соединённый с ним туннелем. В нём была лаборатория для экспериментов. Иллюстрация NASA, C-1976-4380

На фото ниже блок памяти вынут из компьютера. Он занимает примерно треть корпуса. Вся боковая стенка компьютера снимается, и блок памяти выдвигается наружу. Компьютер охлаждается теплопроводностью, поэтому блок плотно прикручен к боковой стенке, чтобы не перегревался. В блоке семь плат: плата драйверов, четыре платы с матрицами сердечников, вторая плата драйверов и интерфейсная плата. У каждой платы два 160-контактных разъёма, которыми она втыкается в большие дочерние платы по бокам; так платы получают много связей друг с другом. На правой дочерней плате есть ещё один 160-контактный разъём, через него блок памяти подключается к остальному компьютеру. (Это длинные синие разъёмы на фото.)

Блок памяти перед компьютером Mitra. Платы с дальней стороны компьютера сняты
Блок памяти перед компьютером Mitra. Платы с дальней стороны компьютера сняты

Блок памяти перед компьютером Mitra. Платы с дальней стороны компьютера сняты

Как работает ферритовая память

Хранение данных было одной из самых трудных задач для первых компьютеров. В конце 1940-х и начале 1950-х данные держали в виде звуковых волн в ртути, точек на экране ЭЛТ или на вращающихся магнитных барабанах, и у всех этих способов были свои ограничения. Компьютерам нужна была плотная и дешёвая память, быстрая, надёжная и с произвольным доступом.

Во время Второй мировой войны в Германии разработали особые магнитные сплавы, которые умели «перещёлкиваться» из одного магнитного состояния в другое. После войны американские исследователи поняли, что на таких материалах можно хранить двоичные данные. По словам Яна Райхмана, «было совершенно очевидно, что из этого материала можно сделать память». Разные стороны ферритовой памяти запатентовали несколько изобретателей (независимый изобретатель Фредерик Вие, Ван Ань в Гарварде, Ян Райхман в RCA и Джей Форрестер в MIT), и дело дошло до дорогих патентных войн. (В итоге IBM заплатила 400 000 долларов Вану — на эти деньги он построил компьютерную компанию Wang Laboratories — и 13 000 000 долларов MIT.) Самым важным изобретателем я считаю Джея Форрестера: он разработал практичную конструкцию ферритовой памяти, исследовал магнитные материалы и в 1953 году построил первую такую память для новаторского компьютера Whirlwind.

В основе ферритовой памяти лежит крошечный магнитный сердечник-тороид, по одному на бит[4]. Сердечник можно намагнитить по часовой стрелке или против, это и есть бит. Намагничивают его проводом, продетым сквозь кольцо: ток по проводу создаёт магнитное поле, которое намагничивает сердечник, а ток в обратную сторону даёт обратную намагниченность.

Главная проблема — как подвести провода к сердечникам, не утонув в проводах: если тянуть к каждому сердечнику отдельный провод, на какие-то 16 КБ понадобилось бы больше 100 000 проводов. Решение называется «выборкой совпадающими токами». Сердечники выкладывают сеткой, через них проходят горизонтальные и вертикальные провода, как на схеме ниже. Если пустить ток по одному горизонтальному и одному вертикальному проводу, выбирается единственный сердечник на их пересечении. Но разве при этом не намагнитятся все сердечники вдоль обоих проводов? Нет: сердечники делают из особых магнитных материалов с гистерезисом. Маленький ток оставляет сердечник как был, а ток побольше перещёлкивает его в другое состояние. Токи в горизонтальном и вертикальном проводах подбирают так, что каждый даёт половину нужного для переключения. На пересечении два тока вместе создают достаточно сильное поле, и сердечник переключается.

Ток по одному проводу X и одному проводу Y выбирает один сердечник (выделен жёлтым). Схема по книге R. K. Richards, Digital Computer Components and Circuits, с. 355
Ток по одному проводу X и одному проводу Y выбирает один сердечник (выделен жёлтым). Схема по книге R. K. Richards, Digital Computer Components and Circuits, с. 355

Ток по одному проводу X и одному проводу Y выбирает один сердечник (выделен жёлтым). Схема по книге R. K. Richards, Digital Computer Components and Circuits, с. 355

Дальше нужно прочитать сердечник. Через все сердечники плоскости проходит провод считывания. Чтобы прочитать сердечник, на выбранные провода X и Y подают ток, который переводит этот сердечник в состояние 0. Если там уже был 0, ничего не происходит. Если же там была 1, магнитное поле при переключении меняется и наводит в проводе считывания слабый ток: значит, в сердечнике хранилась единица. Обратите внимание: чтение стирает значение бита. Поэтому после чтения сердечник надо записать заново, чтобы восстановить данные.

Чтобы обращаться сразу к целому слову, плоскости сердечников собирают в трёхмерный пакет (на фото ниже). Каждая плоскость хранит один бит слова, так что для 16-битного слова нужен пакет из 16 плоскостей. Сигналы на провода X и Y у всех плоскостей общие, поэтому вертикальный столбик сердечников, одно слово, читается параллельно. У каждой плоскости свой провод считывания, по которому выходит её бит.

Пакет памяти бортового компьютера ракеты Saturn V (LVDC) из 14 плоскостей. Экспонат Космического и ракетного центра США. Фото: NCAR EOL, искажения от пластикового корпуса я подправил
Пакет памяти бортового компьютера ракеты Saturn V (LVDC) из 14 плоскостей. Экспонат Космического и ракетного центра США. Фото: NCAR EOL, искажения от пластикового корпуса я подправил

Пакет памяти бортового компьютера ракеты Saturn V (LVDC, Launch Vehicle Digital Computer) из 14 плоскостей. Экспонат Космического и ракетного центра США. Фото: NCAR EOL, искажения от пластикового корпуса я подправил

Как же записать в разные биты разные значения? Для этого через все сердечники плоскости пропускают провод запрета (inhibit) и пускают по нему ток навстречу току в проводах X. Ток запрета гасит ток в проводе X, и сердечник в этой плоскости не меняется. Итого цикл чтения-записи выглядит так. Сначала на пару проводов X и Y подают ток, который выбирает слово и записывает 0 во весь столбик сердечников. Провода считывания при этом выдают значения битов. Затем на те же провода X и Y подают ток в обратную сторону, чтобы записать в сердечники 1. Одновременно включается ток запрета во всех плоскостях, где бит должен быть 0. В результате сердечники либо возвращаются в 1, либо остаются в 0, как и нужно. Во многих ферритовых памятях, как в той, что на фото ниже, считывание и запрет шли по одному общему проводу, так что сквозь каждый сердечник проходило три провода.

Плоскость сердечников IBM 360 Model 50 крупным планом. Сердечники назывались 19-32: внутренний диаметр 19 милов, внешний 32 мила (0,8 мм)
Плоскость сердечников IBM 360 Model 50 крупным планом. Сердечники назывались 19-32: внутренний диаметр 19 милов, внешний 32 мила (0,8 мм)

Плоскость сердечников IBM 360 Model 50 крупным планом. Сердечники назывались 19-32: внутренний диаметр 19 милов (тысячных дюйма), внешний 32 мила (0,8 мм)

Последний компонент, без которого ферритовая память не стала бы практичной, — диодная матрица. Провода X и Y требуют драйверов, которые выдают быстрые двунаправленные импульсы большого тока (например, 600 мА). Таких проводов в плоскости может быть несколько сотен. Ставить отдельный драйвер на каждый провод было бы очень дорого, особенно в эпоху электронных ламп. Поэтому драйверы ставили на оба конца провода, и каждый драйвер обслуживал несколько проводов. Простейший пример: есть 9 вертикальных проводов. Сверху ставим три драйвера (A, B и C), каждый подключён к трём проводам, снизу — ещё три драйвера (1, 2 и 3), тоже по три провода на каждый. Включаем один драйвер сверху и один снизу (скажем, B и 1), и ток идёт по одному нужному проводу. Получается, что N драйверов с каждой стороны управляют N² проводами, а всего это N⁴ сердечников.

Как «верхние» и «нижние» драйверы вместе выбирают один провод (красный) в матрице сердечников. Но ток может пойти и в обход, например по розовому пути
Как «верхние» и «нижние» драйверы вместе выбирают один провод (красный) в матрице сердечников. Но ток может пойти и в обход, например по розовому пути

Как «верхние» и «нижние» драйверы вместе выбирают один провод (красный) в матрице сердечников. Но ток может пойти и в обход, например по розовому пути

К сожалению, всё не так просто. Ток может пойти обходными путями через сердечники, как по розовому пути на схеме выше. Чтобы этого не случалось, ставят диоды, и ток уже не может свернуть не туда. Провод нужно гонять током в обе стороны (сердечники перемагничиваются в обе стороны), поэтому на каждый провод нужно два диода, по одному на каждое направление, как на схеме ниже. Каждый вход матрицы (A, B и т. д.) превращается в два входа, по одному на каждое направление. (Горизонтальным проводам диоды тоже нужны, на схеме они не показаны.)

С диодами ток идёт только по нужному пути
С диодами ток идёт только по нужному пути

С диодами ток идёт только по нужному пути

Раз на каждый провод нужно по два диода, диодов в ферритовой памяти было много. К счастью, диоды были маленькими и дешёвыми, так что их количество не было проблемой. На фото ниже — диодная сборка компьютера ракеты Saturn V, Launch Vehicle Digital Computer.

Диодная матрица Saturn V LVDC крупным планом. Диоды стоят вертикально между двумя печатными платами, монтаж «этажеркой»
Диодная матрица Saturn V LVDC крупным планом. Диоды стоят вертикально между двумя печатными платами, монтаж «этажеркой»

Диодная матрица Saturn V LVDC крупным планом. Диоды стоят вертикально между двумя печатными платами, монтаж «этажеркой»

Поначалу ферритовую память кропотливо собирали вручную. Для Whirlwind на прошивку одной плоскости 64×64 уходило целых 40 часов. Вскоре компании вроде IBM придумали, как автоматизировать производство ферритовой памяти, и цена стала падать вдвое каждые два года, почти как по закону Мура[5]. Ферритовая память стала быстрой, дешёвой и надёжной и оставалась самым популярным видом оперативной памяти, пока в 1970-х её не вытеснила полупроводниковая.

Ферритовая память компьютера Spacelab

Память компьютера Spacelab выпущена в 1980 году. Для ферритовой памяти это поздно, поэтому конструкция у неё продвинутая и плотная. На фото ниже одна из четырёх плат с сердечниками. Каждая плата хранит 16К 18-битных слов (32 КБ), итого в компьютере 128 КБ ОЗУ. Компьютер 16-битный, но к каждому слову добавлены бит чётности и бит «защиты памяти», всего 18 бит. (Бит защиты запрещал запись в отдельное слово, чтобы программу нельзя было случайно затереть. Ферритовая память энергонезависима, поэтому программу можно было загрузить один раз, и она была доступна при каждом включении компьютера.)

Одна из плат ферритовой памяти компьютера Spacelab
Одна из плат ферритовой памяти компьютера Spacelab

Одна из плат ферритовой памяти компьютера Spacelab

На плате 1024 вертикальных провода (Y) и 288 горизонтальных (X), а на них — 294 912 литиевых ферритовых сердечников. Эти очень тонкие провода припаяны к крошечным площадкам на печатной плате. Слова на плате 18-разрядные, это видно по 18 чередующимся зелёным и медным полосам: соседние провода считывания разного цвета. Проводов считывания на плате 36: у левой и правой половины платы они раздельные, чтобы меньше шумело, так что на 18 бит приходится 36 проводов. Провода считывания проходят через четыре отверстия в плате (зелёные стрелки) и припаяны с обратной стороны.

На фото ниже сердечники крупным планом. Диаметр каждого около 32 милов (0,8 мм), как у сердечников IBM System/360 выше. Но уложены они гораздо плотнее, с совсем маленьким зазором. Провода выборки X и Y — медного цвета, провода считывания — зелёные. (Все провода покрыты эмалью, чтобы не было замыканий.) Слева провода считывания делают петлю и образуют одну цепь через каждую битовую секцию. Половина проводов Y делает петли внизу, другая половина — вверху. Так каждый провод Y проходит через плоскость дважды, U-образной петлёй. Это нам ещё пригодится.

Сердечники крупным планом. Думаю, одни ряды наклонены влево, а другие вправо, чтобы провода считывания сохраняли полярность, когда меняют направление. Фото: CuriousMarc
Сердечники крупным планом. Думаю, одни ряды наклонены влево, а другие вправо, чтобы провода считывания сохраняли полярность, когда меняют направление. Фото: CuriousMarc

Сердечники крупным планом. Думаю, одни ряды наклонены влево, а другие вправо, чтобы провода считывания сохраняли полярность, когда меняют направление. Фото: CuriousMarc

С обратной стороны каждой платы стоят усилители считывания и диодная матрица для этой плоскости. Диодные сборки — квадратные чёрные корпуса, в каждом 16 диодов на 8 проводов[6]. В областях, обведённых красным, один конец каждой вертикальной U-петли подключён к диодной сборке; ряды косых отверстий — переходные отверстия, через которые сигналы уходят на другую сторону платы. Другой конец каждой вертикальной U-петли идёт на один из синих разъёмов сбоку, эти переходные отверстия — в областях, обведённых синим. Горизонтальные провода используют диодные сборки и переходные отверстия в зелёных областях: один конец провода подключён к диодной сборке, другой — дорожками с обратной стороны к разъёму платы. Заметьте, что одни вертикальные провода подключаются к диодным сборкам вверху платы, а другие — внизу. Так же и горизонтальные: одни подключаются слева, другие справа.

С обратной стороны платы стоят диодные матрицы и усилители считывания
С обратной стороны платы стоят диодные матрицы и усилители считывания

С обратной стороны платы стоят диодные матрицы и усилители считывания

В центре (жёлтая область) стоят 18 микросхем усилителей считывания, чёрные корпуса DIP, по два усилителя в каждом[7]. Белые корпуса — резисторные сборки: в каждой несколько резисторов, которые задают смещение и нагружают линии усилителей. Провода от сердечников приходят к усилителям витыми парами и припаяны к плате прямо рядом с нужной микросхемой. Витая пара на всём пути не даёт проводам ловить помехи, которые иначе заглушили бы крошечные сигналы считывания. Провода считывания переходят на другую сторону платы через четыре отверстия (жёлтые стрелки) и дальше на приличном расстоянии приклеены к плате. (Изготовить такую плату и не порвать крошечные хрупкие провода, наверное, было непросто.)

Каждая петля провода считывания свита в пару и уходит на другую сторону через отверстие в плате
Каждая петля провода считывания свита в пару и уходит на другую сторону через отверстие в плате

Каждая петля провода считывания свита в пару и уходит на другую сторону через отверстие в плате. Над отверстием виден серый комок: здесь зачем-то сращивали провода считывания. Видно также, что вертикальные провода через один припаяны к плате, с круглыми переходными отверстиями на другую сторону, а остальные образуют петли

Поймать сигнал на проводе считывания непросто: импульсы очень слабые, несколько милливольт. Провода считывания идут рядом с проводами X, по которым бегут импульсы большого тока, и легко ловят от них помехи. Чтобы помех было меньше, провода считывания между двумя секциями плоскости перекрещиваются «бабочкой», как на фото ниже. В итоге провод X половину длины идёт рядом с положительным проводом считывания, а другую половину — рядом с отрицательным, и наведённая помеха вычитается сама из себя.

Провода считывания крупным планом. 16 проводов в середине зелёные, провода выше и ниже (и провода X) медные. Провода считывания перекрещиваются, а провода X идут прямо. Большие кружки — переходные отверстия
Провода считывания крупным планом. 16 проводов в середине зелёные, провода выше и ниже (и провода X) медные. Провода считывания перекрещиваются, а провода X идут прямо. Большие кружки — переходные отверстия

Провода считывания крупным планом. 16 проводов в середине зелёные, провода выше и ниже (и провода X) медные. Провода считывания перекрещиваются, а провода X идут прямо. Большие кружки — переходные отверстия

Память компьютера Spacelab устроена не так, как типичная ферритовая память: в ней нет провода запрета, и за счёт этого она быстрее. Такая архитектура называлась 2½D[8]. Если вы знакомы с ферритовой памятью, отсутствие провода запрета может озадачить: как тогда записать в одни биты 1, а в другие 0? Хитрость в том, что у каждого бита своя схема драйверов X[9]. При записи ток по проводам X пускают только для тех битов, куда пишется 1. Остальные провода остаются без тока, и их биты остаются нулями. Минус в том, что вместо одного набора драйверов X нужен отдельный набор на каждый бит, то есть для 18-битного слова в 18 раз больше. Но когда драйверы сердечников стали делать на микросхемах, цена дополнительных драйверов стала не так важна.

Ещё в этой памяти используется приём под названием «переворот фазы», который вдвое сокращает число вертикальных драйверов. Напомню, что вертикальные провода попарно соединены U-петлёй. Если пустить ток по петле в одну сторону, выбирается левый провод пары, если в другую — правый. На рисунке ниже, например, два провода выбирают левый сердечник, но не правый. В левом сердечнике оба тока идут через кольцо в одном направлении и наводят в тороиде магнитное поле[10]. А в правом два тока гасят друг друга, и поля нет. Если пустить ток по вертикальной петле в обратную сторону, выбран будет уже правый сердечник. Смысл в том, что вместо двух драйверов на вертикальные провода хватает одного, который просто меняет направление тока, чтобы выбрать левый или правый сердечник.

Если соединить вертикальные провода попарно U-образной петлёй, каждый драйвер управляет вдвое большим числом сердечников
Если соединить вертикальные провода попарно U-образной петлёй, каждый драйвер управляет вдвое большим числом сердечников

Если соединить вертикальные провода попарно U-образной петлёй, каждый драйвер управляет вдвое большим числом сердечников

На схеме ниже — запутанная разводка проводов X. Каждая полоса из 16 проводов соответствует одному биту 18-битного слова, и у неё свой провод считывания. Верхняя полоса из 16 проводов X подключена к четырём контактам разъёма платы, каждый контакт изогнутыми дорожками соединён с четырьмя проводами X. Нижняя полоса из 16 проводов X через круглые переходные отверстия идёт к диодным модулям на обратной стороне платы. (На другом конце у каждого провода наоборот: где был разъём, там диодный модуль, и наоборот.)[11] Через разъём включается одна четвёрка проводов X, через диодную матрицу — ещё четыре провода, и так выбирается один из 16 проводов X в группе.

Разводка проводов X на печатной плате
Разводка проводов X на печатной плате

Разводка проводов X на печатной плате

Остальные платы блока памяти

Всего в блоке памяти семь плат: плата драйверов, четыре платы с сердечниками, вторая плата драйверов и интерфейсная плата. Подробно эти платы я не изучал, но кое-что предварительно расскажу. На фото ниже одна из двух плат драйверов. Она выдаёт импульсы большого тока на провода выборки X и Y. Плата забита специализированными микросхемами драйверов ферритовой памяти[12] плюс немного логики, которая ими управляет. Для двух концов проводов выборки драйверы раздельные, это и позволяет выбирать провод по матрице, как описано выше.

Одна из двух плат драйверов памяти. Любое изображение можно открыть в большем размере
Одна из двух плат драйверов памяти. Любое изображение можно открыть в большем размере

Одна из двух плат драйверов памяти. Любое изображение можно открыть в большем размере

Плат драйверов две, а плат с сердечниками четыре, и сначала я решил, что каждая плата драйверов обслуживает две платы с сердечниками. Оказалось сложнее: тут есть ещё один уровень матричной выборки, который вдвое сокращает число драйверов. Немного упрощая: у каждого провода X на плате есть левый и правый конец, и чтобы провод включился, ток должен прийти на оба. Левые концы первая плата драйверов питает на платах сердечников 1 и 2, вторая — на платах 3 и 4. Правые концы перетасованы: первая плата драйверов питает платы 1 и 3, вторая — платы 2 и 4. Если первая плата драйверов включает и левые, и правые концы, оба конца активны только на плате 1. Если первая включает левые концы, а вторая правые — активна плата 2. Так же можно выбрать плату 3 или 4. Смысл в том, что каждый набор драйверов подключён к двум платам с сердечниками, поэтому хватает двух наборов вместо четырёх.

Последняя плата — интерфейс с остальным компьютером. На ней много транзисторных сборок в корпусах DIP и много резисторов. Похоже, на шину плата выходит через дискретные транзисторы, без интерфейсных микросхем, и это неожиданно. В нижней части по центру есть перемычки на накрутке, видимо, для конфигурации.

На интерфейсной плате в левом нижнем углу есть свободное место
На интерфейсной плате в левом нижнем углу есть свободное место

На интерфейсной плате в левом нижнем углу есть свободное место

Вместо заключения

Ферритовая память прожила долгую жизнь: она пережила переход компьютеров с ламп на транзисторы, а потом на микросхемы, но в конце концов полупроводниковая память сделала её ненужной[13]. В аэрокосмической технике ферритовая память продержалась ещё дольше, потому что у неё было два важных преимущества перед полупроводниковой: она хранила данные без питания и не боялась радиации. Компьютер Spacelab выпущен в 1980 году, под конец царствования ферритовой памяти, поэтому его память совершеннее типичной: плотнее, с широким применением микросхем и архитектурой 2½D. Но в итоге высокая плотность, низкая цена и малое энергопотребление полупроводниковой памяти взяли своё. В 1991 году шаттл полетел с новыми основными компьютерами IBM AP-101S, где вместо ферритовой стояла полупроводниковая память. Компьютеры Mitra в Spacelab тоже заменили — на AP-101SL, вариант AP-101S, доработанный под систему команд и периферию исходного компьютера Spacelab[14]. Ферритовая память давно в прошлом, но живёт в выражении «core dump» — дамп памяти.

Я планирую изучить компьютер Spacelab подробнее. Спасибо Стиву Юрветсону, который предоставил компьютер Spacelab, и CuriousMarc за фотографии и помощь в разборке.

Примечания

  1. Похоже, герметичный модуль Spacelab летал на 16 полётах шаттла, а ещё на 6 или 9 летали только негерметичные платформы Spacelab. (Почему источники никогда не сходятся?) Изначально Spacelab собирались использовать в 30 полётах в год (Status Of The Spacelab Program, 1974).

  2. Компьютер Spacelab 125 MS построила французская компания CIMSA на архитектуре Mitra, созданной CII. Запутанную историю этих компаний я рассказал в предыдущей статье про компьютер Spacelab, повторяться не буду.

    На земле в проекте Spacelab работали компьютеры Mitra 125 S, функционально идентичные летавшим Mitra 125 MS (подробности). Плату ферритовой памяти от наземного Mitra 125 S разбирали на EEVblog (видео, видео). Архитектура у компьютеров одинаковая, но 125 MS был в военном исполнении и рассчитан на «жёсткие условия эксплуатации». Плату с EEVblog выпустила Ampex, и устроена она иначе, чем та, что разбирал я.

    Плата памяти Mitra 125 S производства Ampex. Кадр из EEVblog #668
    Плата памяти Mitra 125 S производства Ampex. Кадр из EEVblog #668

    Плата памяти Mitra 125 S производства Ampex. Кадр из EEVblog #668

  3. Spacelab был модульным и мог летать в разных конфигурациях. Обитаемый модуль бывал двух размеров, а платформы с экспериментами крепились снаружи. Spacelab мог лететь и вовсе без обитаемого модуля, тогда экспериментами управляли из шаттла. В этом случае компьютеры и прочее оборудование ставили в небольшой герметичный цилиндр, «иглу».

  4. Я описываю «стандартную» ферритовую память, но экзотических конструкций было много. В одних на бит приходилось два сердечника. В других брали сердечники с несколькими отверстиями: кубические сердечники BIAX, трансфлюксоры с большим и малым отверстием, трёхдырочные сердечники IBM. Многие такие схемы умели читать сердечник, не стирая его (неразрушающее считывание), но почти везде использовались обычные тороиды.

  5. Позже компании выяснили, что дешевле собирать ферритовую память вручную в Азии, и от автоматизированного производства отказались. (См. Memories that Shaped an Industry, с. 251. Если вас интересует история ферритовой памяти, читайте эту книгу.)

  6. Диодная сборка маркирована FSA2977 и содержит 16 диодов: 8 с общим катодом и 8 с общим анодом. К выводам 2–9 подключены восемь проводов сердечников. В зависимости от нужного направления тока вывод 1 подтягивается к высокому уровню или вывод 10 — к низкому. Даташит на эту деталь я не нашёл, но она похожа на диодную сборку для драйверов сердечников Motorola MAD1103 или Silicon General SG5772F.

    Схема, совпадающая с диодной сборкой, из даташита Motorola MC1103P
    Схема, совпадающая с диодной сборкой, из даташита Motorola MC1103P

    Схема, совпадающая с диодной сборкой, из даташита Motorola MC1103P

  7. Усилители считывания — микросхемы National Semiconductor DS5534. В каждой два дифференциальных усилителя, которые превращают крошечные сигналы считывания в логические. Стробы, по которым усилитель читает бит, приходят с микросхемы слева на плате — 54150, сдвоенного элемента 4И-НЕ с выходом на 50-омную линию.

    Схема усилителя считывания из справочника National Interface Integrated Circuits
    Схема усилителя считывания из справочника National Interface Integrated Circuits

    Схема усилителя считывания из справочника National Interface Integrated Circuits Databook

  8. Архитектура 2½D подробно описана в статье 2 1/2 D High Speed Memory Systems—Past, Present, and Future. Из-за сложного набора факторов и компромиссов подход 2½D был выгоден для памяти от 16К слов и больше. В частности, отказ от провода запрета повышал быстродействие. Система IBM Large Capacity Storage использовала 2½D всего с двумя проводами на сердечник, совмещая провод X с проводом считывания, и давала мегабайт памяти по сравнительно низкой цене. Но работала она медленно, поэтому три провода на сердечник (как в компьютере Spacelab) встречались чаще.

  9. Архитектуре 2½D отдельные драйверы на каждый бит нужны только по одной оси. Сердечнику для переключения нужны два тока, поэтому достаточно отключить одну ось, чтобы соответствующие сердечники не переключились.

  10. Направление магнитного поля задаёт правило правой руки (правило буравчика): если большой палец правой руки направить по току, поле закручивается вокруг провода по направлению остальных пальцев.

    Когда провода идут в разных направлениях, не всегда очевидно, складываются токи или гасят друг друга. Можно мысленно сдвинуть провода, чтобы они стали параллельными, и посмотреть, в одну сторону идут токи или в разные. (Это следует из закона Ампера: магнитное поле вдоль контура, например вдоль сердечника, пропорционально суммарному току через натянутую на него поверхность.)

  11. Для справки здесь подробно описана разводка плоскости сердечников, вероятно, подробнее, чем кому-либо нужно. Вертикальных проводов Y 1024, они образуют 512 U-образных петель. Половина петель замкнута вверху, половина внизу. Один конец каждой петли подключён прямо к разъёму сбоку, другой — к диодной матрице. Разъёмы дают 32 линии, каждая может работать как источник или сток тока. Каждая из 32 линий подключена к 16 вертикальным проводам, всего 512 вертикальных проводов. В каждой четверти платы 8 из 32 линий, подключённых к группе из 8 вертикальных проводов, ко второй группе из 8 проводов и так далее, всего 16 групп.

    Для диодных подключений разъёмы дают 16 линий-источников и 16 линий-стоков. У каждой диодной сборки одна линия-источник и одна линия-сток, сборка питает 8 вертикальных проводов. Каждая линия-источник и линия-сток подключена к четырём диодным сборкам, по одной в каждой четверти, в зеркальном порядке. Так 16 линий-источников и 16 линий-стоков подключены к 64 диодным сборкам, которые питают 512 вертикальных петель. (У каждой четверти платы свои прямые подключения, а диодные подключения внутри четверти уникальны, поэтому выбирается единственный сердечник. Точнее, 32 прямых подключения на 16 диодных дают 512 комбинаций для выбора вертикальной петли. Полярность выбирает, какая половина петли активна, и так однозначно выбирается один из 1024 вертикальных проводов.)

    Горизонтальные провода, 288 штук, разбиты на 18 полос (по одной на бит), по 16 проводов в полосе. На каждую полосу приходится четыре прямых сигнала с разъёма, каждый подключён к четырём горизонтальным проводам, всего 16. (Видимые на плате дорожки, показанные выше, подключают 16 проводов к четырём контактам разъёма (A,B,C,D) в порядке AABBCCDDDDCCBBAA.)

    Для горизонтальных диодных подключений разъём даёт 4 провода-источника и 4 провода-стока, которые питают 16 горизонтальных проводов в порядке 1234123412341234. Включив нужные прямой и диодный провод с двух сторон, выбирают один из 16 проводов. Есть сложность: у каждой диодной сборки 8 выходов, а каждый источник или сток идёт на 4 провода. Её решили так: каждая битовая группа использует половину четырёх диодных сборок (по 4 выхода с каждой). Поэтому четыре провода-источника и провода-стока общие для двух битовых групп. Выборке это не мешает: активен бит или нет, решают прямые подключения.

    Горизонтальные диоды расположены несимметрично. Слева 8 диодных сборок вверху и 8 внизу, они обслуживают 8 групп по 16 проводов. Справа 20 диодных сборок (ещё 4 посередине), они обслуживают 10 групп по 16 проводов. Так покрываются все 18 битовых групп, хотя разводка платы получается несимметричной.

    У левой и правой стороны плоскости раздельные провода считывания, всего их 36. Они идут на 18 сдвоенных усилителей считывания. Два выхода каждого усилителя соединены в монтажное ИЛИ, которое объединяет данные левой и правой половин и выдаёт на разъём 18 бит.

    Схема топологии платы сердечников. Изображение можно открыть в большем размере
    Схема топологии платы сердечников. Изображение можно открыть в большем размере

    Схема топологии платы сердечников

    На схеме выше показана общая структура для одного из 18 бит. Какие подключения сверху, снизу, слева или справа, на ней не указано.

  12. На каждой плате драйверов 53 микросхемы драйверов сердечников SN55325.

    Микросхема драйвера сердечников SN55325, из справочника
    Микросхема драйвера сердечников SN55325, из справочника

    Микросхема драйвера сердечников SN55325, из справочника

    В каждой микросхеме два «источника» и два «стока» на 600 мА, подключённые к двум выходам. Если включить источник на одном конце провода и сток на другом, ток пойдёт по проводу в нужную сторону. Ещё на плате драйверов 39 микросхем SN55327. Они похожи, но могут работать либо как четыре источника, либо как два стока. Они стоят на входах диодной матрицы, где вход бывает либо источником, либо стоком.

  13. Про ЦП компьютера Spacelab я писал раньше. Я также разбирал другие ферритовые памяти: IBM 1401, IBM 360, Saturn V LVDC и бортового компьютера «Аполлона».

  14. В новом компьютере шаттла AP-101S стояла полупроводниковая память, поэтому ему пришлось решать проблемы энергозависимости и радиации. Чтобы содержимое памяти не терялось при выключении, его поддерживала батарея — ферритовая память делала это сама собой. Чтобы радиация не портила данные, к каждому слову добавили шесть лишних бит для кода коррекции ошибок. Компьютер постоянно просматривал память и исправлял ошибочные биты. Радиация была не теоретическим риском: за один полёт шаттла могло случиться больше 100 сбоев битов от радиации (подробности).

    Подробнее о компьютере AP-101S — в моей статье The rise and fall of IBM’s 4 Pi aerospace computers. Об исходном компьютере Spacelab и пришедшем ему на смену AP-101SL я писал в статье Reverse engineering circuitry in a Spacelab computer from 1980.

Комментарии (1)


  1. achekalin
    19.10.2026 20:01

    В оригинале cooled by conduction — тепло от блока памяти отводится через тепловой контакт с боковой панелью корпуса. Это вполне конкретное конструктивное решение.

    А в тексте перевода фраза «Компьютер охлаждается теплопроводностью» - жжёт почище напалма.