25 виртуальных процессоров в одном железе: как Space Shuttle обрабатывал ввод-вывод

от автора

Пять компьютеров общего назначения космического шаттла Space Shuttle(примеч.1) играли критически важную роль в каждом полёте: управляли двигателями, отслеживали показания тысяч датчиков, выводили данные астронавтам и обеспечивали навигацию шаттла. 

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

The Space Shuttle IOP and CPU (AP-101B). Photo courtesy of RR Auction.

Процессор ввода-вывода Space Shuttle и центральный процессор AP-101B. Фото RR Auction.

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

Архитектура IOP была необычной: это один из ранних многопоточных компьютеров. На одном физическом процессоре он реализовывал 25 виртуальных процессоров с двумя совершенно разными системами команд.

Мне удалось получить две модульные платы из процессора ввода-вывода,(примеч.2) каждая — прямоугольник размером 9 × 3 дюйма, плотно заполненный миниатюрными микросхемами и другими компонентами. В терминологии IBM такая плата называется page — запомните этот термин. Верхняя модульная плата — сетевой интерфейс: она обслуживает четыре сетевых подключения, каждое со скоростью 1 Мбит/с. Всего в IOP было шесть таких плат, обеспечивавших 24 сетевых подключения.

На нижней модульной плате хранился микрокод процессоров IOP — низкоуровневый код, определявший выполнение каждой команды. Ряды бело-золотистых микросхем хранили биты микрокода в миниатюрных металлических плавких перемычках. Для записи бита со значением 1 соответствующую перемычку пережигали. В этой статье я расскажу, как работал процессор ввода-вывода и какую роль играли эти две модульные платы.

Two pages from the Space Shuttle I/O Processor: the "MIA" interface page and the PROM page.

Две модульные платы из процессора ввода-вывода Space Shuttle: интерфейсная плата MIA и плата PROM.

Интерфейсная плата MIA

В шаттле было 28 сетей шин данных, связывавших компьютеры с остальными системами корабля. Каждый компьютер подключался к 24 из них.(примеч.3) Такое количество сетей обеспечивало и высокую производительность, и отказоустойчивость: между любым компьютером и каждой системой шаттла проходило как минимум две независимые сети. Восемь сетей обслуживали критически важные для полёта системы; каждый ЭЛТ-дисплей и контроллер двигателя подключался сразу к четырём сетям для резервирования.

Плата ниже — одна из шести плат сетевых интерфейсов в процессоре ввода-вывода. Инженеры Space Shuttle явно любили сокращения, поэтому плата получила загадочное название MIA — «адаптер интерфейса мультиплексора». Многие сети подключались к блокам мультиплексоров/демультиплексоров, которые связывали сеть с разнообразными аналоговыми и цифровыми компонентами шаттла.(примеч.5)

Интерфейсная плата MIA плотно заполнена микросхемами и другими компонентами. Внутри одной модульной платы расположены две печатные платы — по одной с каждой стороны. Они почти идентичны, что видно при сравнении фотографии выше и ниже.(примеч.4) Главное отличие в том, что разъём расположен с противоположной стороны.

The network interface page, called the MIA (Multiplex Interface Adapter). The page has extensive rework; thin brown "bodge" wires snake around the page to repair errors or implement updates.

Интерфейсная плата сети MIA — адаптер интерфейса мультиплексора. Плата неоднократно дорабатывалась: тонкие коричневые провода для исправлений тянутся по ней, устраняя ошибки или внося обновления.

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

Правая половина платы занята аналоговыми схемами. Главный элемент здесь — крупный золотистый модуль с маркировкой IBM и 46 выводами. Это гибридный модуль, собранный из миниатюрных компонентов: кристаллов транзисторов, резисторов, конденсаторов и, возможно, кристаллов микросхем. Все они соединены проволочными выводами тоньше человеческого волоса.

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

Рядом с гибридным модулем установлены дискретные компоненты: резисторы, стеклянные конденсаторы,(примеч.6) катушки индуктивности и небольшие квадратные трансформаторы. Трансформаторы обеспечивают связь интерфейсной платы с сетью. Как и в Ethernet, они дают гальваническую развязку между компьютером и сетью, подавляют электромагнитные помехи и согласуют импедансы — всё это важно для надёжности.(примеч.7)

The Manchester Mark 1; Prof. Williams is second from the left. Photo from the University of Manchester.

Manchester Mark 1; профессор Уильямс — второй слева. Фото: Манчестерский университет.

Один из ключевых элементов сетевой архитектуры шаттла появился ещё в 1940-х. В 1946 году Фредерик Уильямс возглавил кафедру электротехники Манчестерского университета. К 1949 году его команда создала революционный компьютер Manchester Mark 1. По пути они разработали компьютер с хранимой программой, трубку Уильямса — лучшую технологию компьютерной памяти до появления памяти на магнитных сердечниках, — а также цепочку переноса Манчестера, которая до сих пор используется при сложении в современных процессорах.

Но здесь важнее другое их изобретение: запатентованное манчестерское кодирование — способ представлять последовательности нулей и единиц для хранения или передачи. При манчестерском кодировании каждый бит 0 заменяется последовательностью «низкий уровень — высокий уровень», а каждый бит 1 — последовательностью «высокий уровень — низкий уровень», как показано ниже. Идея кажется простой, но она используется повсюду: от дискет и пультов дистанционного управления до Ethernet и RFID-меток. За это манчестерское кодирование получило статус IEEE Milestone.

A diagram illustrating Manchester encoding. From Prototype IOP Functional Description, p82.

Схема, иллюстрирующая манчестерское кодирование. Источник: Prototype IOP Functional Description, стр. 82.

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

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

Именно поэтому манчестерское кодирование выбрали для сетей шин данных Space Shuttle.(примеч.8) Одна из ключевых функций(примеч.9) сетевых интерфейсов IOP — преобразование последовательного битового потока в манчестерский код и обратно. Цифровая часть интерфейса довольно сложна, но основная логика сосредоточена в четырёх крупных золотистых микросхемах. Это специализированные микросхемы Motorola: для каждого сетевого порта предусмотрены передающая и приёмная микросхемы.

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

Меньшие чёрные микросхемы — простые ТТЛ-микросхемы, в основном сдвиговые регистры. В 1970-х транзисторно-транзисторная логика была очень популярна: она позволяла строить быстрые и надёжные схемы. На плате установлены двенадцать 4-битных микросхем сдвиговых регистров и шестнадцать 8-битных сдвиговых регистров.(примеч.10)

Сети шаттла передавали 24-битные слова. Шесть 4-битных микросхем сдвиговых регистров вместе образуют 24-битный сдвиговый регистр, который преобразует такие слова в последовательные данные и обратно. Остальные микросхемы — простые логические элементы, триггеры, буферы и четырёхбитные счётчики.

Как устроена модульная плата

Примерно в 1967 году IBM представила линейку компьютеров для авионики под названием System/4 Pi.(примеч.11) Эти системы собирались из модульных плат:(примеч.12) две печатные платы располагались по обе стороны металлической прослойки, обеспечивавшей кондуктивное охлаждение. На каждой печатной плате рядами(примеч.13) размещались микросхемы в корпусах flat pack — меньше ногтя размером; на одной плате их было около 78. Печатные платы были весьма продвинутыми для своего времени: шесть слоёв разводки.

Два винта-стяжки сверху жёстко фиксировали модульную плату в системе. Два 98-контактных разъёма подключали её к объединительной панели. На фотографии ниже показана типичная плата 4 Pi — сверху хорошо видны ряды микросхем.

A comparison of a standard IBM 4 Pi page with the IOP page. 4 Pi page courtesy of Eric Schlaepfer. The 4 Pi page was in a bag labeled "FSD AWACS tester?" suggesting that it was a tester from IBM's Federal Systems Division for the E-3C Airborne Warning and Control System aircraft, which used an IBM 4 Pi computer.

Сравнение стандартной модульной платы IBM 4 Pi и платы IOP. Плата 4 Pi предоставлена Эриком Шлепфером. Она лежала в пакете с надписью «FSD AWACS tester?», что позволяет предположить: это тестер IBM Federal Systems Division для самолёта E-3C Airborne Warning and Control System, использовавшего компьютер IBM 4 Pi.

Модульная плата процессора ввода-вывода — на фото выше внизу — почти не отличается от стандартной платы 4 Pi. Исключений два: она на один дюйм шире, 9 вместо 8 дюймов, а вместо 98-контактных разъёмов использует один или два 120-контактных.(примеч.14) Один дюйм может показаться несущественным, но на 9-дюймовой плате помещается уже 100 микросхем вместо 78 — прирост заметный.

Меня удивляет, что IBM отошла от стандартного размера. Полагаю, разработчики просто не смогли уместить IOP в доступном объёме с обычными платами и были вынуждены увеличить их ширину. Возможно, дополнительные порты ввода-вывода также потребовали больше соединений, чем могли обеспечить меньшие разъёмы.

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

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

The test point connector on the MIA page.

Разъём контрольных точек на плате MIA.

Схема ниже показывает конструкцию процессора ввода-вывода: ряды модульных плат вставлены в объединительную панель.(примеч.15) Обратите внимание на 128-контактный разъём ввода-вывода MIA на передней панели IOP. Через него 24 шины данных вместе с другими сигналами подключались к остальным системам шаттла.

Стрелки показывают, как охлаждающий воздух проходил через боковые части IOP. Над самими модульными платами воздух не шёл. Вместо этого тепло передавалось за счёт теплопроводности через металлическую пластину внутри каждой платы, а затем отводилось к теплообменникам в боковых стенках корпуса.

И центральный процессор, и IOP содержали память на магнитных сердечниках — на схеме ниже она обозначена как «Storage Page». Хотя физически память была разделена между двумя корпусами, логически она считалась единой общей памятью. Поэтому программы центрального процессора и IOP могли размещаться в памяти любого из двух физических блоков.

Exploded view of the IOP. From Prototype IOP Functional Description.

Разобранный процессор ввода-вывода. Источник: Prototype IOP Functional Description.

Архитектура IOP и плата PROM

Высокопроизводительную архитектуру процессора ввода-вывода разработал Питер Когге — специалист по архитектурам параллельных вычислений. В то время он работал в IBM Federal Systems Division, где создавался компьютер Space Shuttle.(примеч.24) Сейчас Когге — профессор Университета Нотр-Дам; кроме того, он известен как один из авторов сумматора Когге—Стоуна — быстродействующей схемы, применявшейся в процессорах вроде Pentium.

Архитектура процессора ввода-вывода была очень необычной. Физический процессор был один, но на нём работали 25 виртуальных процессоров с двумя совершенно разными системами команд. Они выполнялись по очереди: каждый получал один тактовый цикл, после чего управление переходило следующему.

Такой подход нужен был для того, чтобы каждому сетевому порту гарантированно доставалась предсказуемая доля процессорного времени. Даже если один порт оказывался перегружен, это не влияло на остальные. Такая архитектура называется конвейерным процессором с циклическим чередованием контекстов (barrel processor). Впервые её применили в суперкомпьютере CDC 6600 — самом быстром компьютере мира с 1964 по 1969 год.(примеч.16)

В IOP использовались два типа виртуальных процессоров — разумеется, с непрозрачными сокращениями BCE и MSC. Каждому из 24 сетевых портов соответствовал BCE, элемент управления шиной (Bus Control Element). Он выполнял небольшую программу, перемещая слова данных между сетевым портом и памятью.

MSC, главный контроллер последовательностей (Master Sequence Controller), выступал управляющим модулем: он запускал программы, которые управляли BCE. Код для процессоров BCE и MSC хранился в памяти на магнитных сердечниках компьютера.

Системы команд MSC и BCE полностью отличались и друг от друга, и от системы команд основного центрального процессора, основанной на архитектуре мейнфреймов IBM System/360. Управляющий MSC был 32-битным процессором с обычным набором команд: сложение, логические операции, переходы и так далее. Кроме того, в нём были специализированные операции для настройки и запуска BCE.(примеч.17)

Система команд низкоуровневого BCE намного меньше и заметно необычнее. В ней нет привычных для процессора базовых команд, например арифметических операций и условных переходов. Вместо этого BCE выполняет команды ввода-вывода: Transmit Data, Receive Data, Load Timeout Register, Store Status и Wait.

В типичном сценарии центральный процессор поручает MSC выполнить программу. MSC настраивает BCE для запуска нужной программы, а BCE передают и принимают данные согласно заданным параметрам. Когда работа BCE завершена, MSC генерирует прерывание для центрального процессора, а тот обрабатывает данные. Благодаря этому центральный процессор может сосредоточиться на высокоуровневых алгоритмах и не тратить такты на сетевые операции.

Но как MSC и BCE с разными системами команд могли выполняться на одном физическом процессоре? Секрет в микрокоде: каждая команда MSC и BCE реализовывалась как последовательность 72-битных микрокоманд.(примеч.18) Простая команда могла занимать пять микрокоманд, а сложная — до 60.

Каждая микрокоманда задавала одно действие физического процессора IOP в рамках выполнения команды MSC или BCE. После каждой микрокоманды физический процессор переключался на микрокоманду следующего виртуального процессора.

Архитектура физического процессора совсем не походила ни на MSC, ни на BCE: в нём было три 16-битных тракта данных и два арифметико-логических устройства, способных работать параллельно. Для каждого виртуального процессора физический процессор хранил отдельный набор регистров, включая регистр адреса микрокоманды, чтобы не терять его состояние.

The PROM page holds the majority of the microcode for the I/O Processor. Although three chips are mounted sideways to avoid wasting space, there is even more wasted space at the left.

На плате PROM хранится основная часть микрокода процессора ввода-вывода. Три микросхемы установлены боком, чтобы не занимать лишнее место, но слева всё равно остаётся довольно большая пустая зона.

Микрокоманды IOP хранились на показанной выше плате PROM. Белые микросхемы с золотистыми крышками — это микросхемы программируемой постоянной памяти с пережигаемыми перемычками (PROM).(примеч.19) В каждой из них для каждого бита предусмотрена миниатюрная плавкая перемычка. Пока перемычка цела, соответствующий бит равен 0; перегоревшая перемычка обозначает бит со значением 1.

Для программирования микросхемы на её выводы подавали 17-вольтовые импульсы, последовательно разрушавшие перемычки — PROM буквально прожигали.

Каждая микросхема PROM хранила 512 4-битных слов. Всего на этой плате помещались 1024 72-битные микрокоманды, а оставшиеся 512 микрокоманд находились на другой модульной плате.(примеч.20)

На микросхемы вручную нанесены номера: у каждой уникальная прошивка, поэтому её нужно установить строго на своё место. При 36 микросхемах логично ожидать нумерацию от 1 до 36. Однако, хотя многие номера идут подряд, некоторые без видимой системы лежат в диапазоне от 55 до 74.(примеч.21)

С конструктивной точки зрения плата PROM тоже необычна. Вместо микросхем в корпусах flat pack здесь используются микросхемы в корпусах DIP с двумя рядами вертикальных выводов, проходящих через печатную плату. Они заметно крупнее. Поскольку у этой модульной платы только одна печатная плата, сверху нет проходных разъёмов с контрольными точками.

Центральная металлическая пластина при этом сохранилась, но микросхемы установлены над ней, а печатная плата находится снизу. В пластине сделаны прорези для выводов. Между рядами микросхем центральная пластина имеет полную толщину платы.

A close-up of the PROM page, showing how the chips are mounted. The black chips are much thicker than the white chips.

Плата PROM крупным планом: видно, как установлены микросхемы. Чёрные микросхемы гораздо толще белых.

Вероятно, микросхемы PROM с пережигаемыми перемычками выпускались только в корпусах DIP, а не flat pack. Такие корпуса занимают намного больше места, чем обычные микросхемы flat pack, поэтому плотность компонентов на этой плате примерно вчетверо ниже, чем на стандартной модульной плате.(примеч.22)

Выводы

На момент разработки центральный процессор и IOP Space Shuttle были передовыми, но устарели довольно быстро. IBM переработала компьютер, объединив центральный процессор и IOP в одном корпусе под названием AP-101S. Впервые он отправился в полёт в 1991 году.

Обновлённый компьютер работал намного быстрее и имел больше памяти. Кроме того, объединение двух корпусов в один позволило сэкономить в сумме около 300 фунтов массы. На фотографии ниже показаны три обновлённых компьютера AP-101S, установленные в отсеках авионики шаттла. Четвёртый скрыт стеной, а пятый находится за камерой. Раньше на этих местах стояли процессоры ввода-вывода, а центральные процессоры располагались в пустом пространстве слева.

Avionics bays 1 and 2 are located in the crew cabin middeck, below the flight deck, and looking forward into the nose. The red arrows indicate the AP-101S computers. The remaining computer is in avionics bay 3A, on the aft right side of the middeck. This photo is from 2011, showing Discovery being prepared for display at the Smithsonian. Original photo courtesy of collectSpace; I've adjusted the lighting.

Отсеки авионики 1 и 2 находятся на средней палубе кабины экипажа, под кабиной пилотов, ближе к носовой части шаттла. Красные стрелки указывают на компьютеры AP-101S. Оставшийся компьютер расположен в отсеке авионики 3A, в правой кормовой части средней палубы. Фото сделано в 2011 году, когда Discovery готовили к экспозиции в Смитсоновском институте. Исходное фото предоставлено collectSPACE; я скорректировал яркость.

Несмотря на критически важную роль процессора ввода-вывода в работе Space Shuttle, ему уделяют куда меньше внимания, чем центральному процессору. Например, NASA подробно описывает архитектуру IOP в документации, но мне так и не удалось найти ни одной фотографии его модульных плат.(примеч.23) Надеюсь, эта статья убедила вас, что и архитектура, и физическая конструкция IOP делают его крайне интересной системой.

Примечания и ссылки (осторожно, много текста)

1. На некоторых миссиях в шкафу перевозили шестой компьютер — запасной, чтобы дополнительно повысить надёжность. Если один из пяти основных компьютеров выходил из строя, астронавты могли подключить кабели к резервному, и тот брал на себя его функции. Запасной компьютер пришлось задействовать в миссии STS-30 в 1989 году: на компьютере № 4 возникла ошибка «data parity external storage error», указывавшая на аппаратную неисправность. 

2. Я предполагал, что эти модульные платы относятся к процессору ввода-вывода, но доказать это оказалось непросто. К счастью, Майк Стюарт нашёл документ Prototype Input/Output Processor Function Description, где перечислены платы в каждом слоте IOP. На плате MIA указан номер детали 6246523-3, а на плате PROM — 6104848-3; они соответствуют позициям «MIA» 6246523-1 и «Micro Store (ROM)» 6104848-1 в документе. 

3. На схеме ниже показано, как 28 сетей шин данных связывают пять компьютеров в верхней части схемы с различными системами шаттла. Сети разделены на категории: наземный интерфейс, критически важные для миссии системы, телеметрия полёта, система отображения, массовая память, межкомпьютерная связь и критически важные для полёта системы.

Data bus architecture. Click for a larger version. Adapted from Space Shuttle Avionics Systems.

Архитектура шин данных. Нажмите, чтобы открыть увеличенную версию. Адаптировано из Space Shuttle Avionics Systems.

Почему каждый компьютер был подключён к 24 сетям, а не ко всем 28? Почти все сети были общими для всех компьютеров Space Shuttle, чтобы те могли работать синхронно и с резервированием. Исключение составляли собственные данные мониторинга, которые каждый компьютер передавал на наземную станцию.

Другим компьютерам эти данные были не нужны, поэтому они шли по выделенной сети Flight Instrumentation в блок PCM (Pulse Code Modulation), который кодировал их для передачи на Землю. Всего было 23 общие сети и 5 частных — по одной на каждый компьютер. Итого получалось 28 сетей, из которых к конкретному компьютеру подключались 24.

4. Обе стороны интерфейсной модульной платы почти идентичны. Однако в зависимости от того, с какой стороны на неё смотреть, разъём расположен слева или справа. Из-за этого развязывающие конденсаторы в самом низу пришлось сдвинуть, чтобы освободить место для разъёма. Кроме того, по какой-то причине я обнаружил одну микросхему, различающуюся на двух сторонах. 

5. Хотя многие сети шин данных подключались к мультиплексорам/демультиплексорам (MDM), так было не всегда. Некоторые сети напрямую соединялись с такими системами, как блок интерфейса двигателя или блок электроники дисплеев. Кроме того, MDM не обязательно был последним звеном между сетью и датчиками шаттла.

В MDM устанавливались платы, поддерживавшие более десятка типов входных и выходных сигналов: цифровые, аналоговые, дискретные и последовательные. Но тысячи сигналов внутри шаттла были гораздо разнообразнее: датчики могли выдавать переменное напряжение, импульсы, значения термопар, сопротивления и так далее. Другие блоки преобразовывали необработанные сигналы датчиков в форму, с которой мог работать MDM. Их называли специализированными блоками обработки сигналов (DSC).

В DSC было 15 или 30 слотов для плат, выполнявших нужное преобразование сигналов. Таким образом, MDM и DSC сочетали фиксированную архитектуру с возможностью адаптировать систему под конкретную задачу. 

6. Стеклянный конденсатор — интересный компонент: в качестве диэлектрика в нём используется исключительно тонкий слой стекла. В 1960-х такие конденсаторы стали популярны в аэрокосмической технике благодаря стабильности и надёжности. На это указывает и маркировка CGW на корпусе: их производила Corning Glass Works.

  1. Two glass capacitors on the MIA page.

    Два стеклянных конденсатора на плате MIA.

Конденсатор маркирован по военному стандарту. «J» означает совместимую спецификацию Армии и ВМС США. «CY» обозначает стеклянный конденсатор, «4», по-видимому, указывает на аксиальные выводы, «G» — температурно-волтный класс, «510» — номинал ёмкости: 51 × 100 = 51 пФ, а последняя «G» означает допуск ±2 %. Почему у одного конденсатора указано «0F», а у другого «4G», я не знаю. 

7. Между компьютером и сетью в Space Shuttle был ещё один, второй уровень трансформаторов: он гарантировал, что неисправное устройство не выведет из строя всю сеть. Каждый узел, например IOP, подключался к сети через миниатюрное устройство под названием ответвитель шины данных (Data Bus Coupler).

Этот кубик размером около дюйма содержал трансформатор и несколько резисторов для согласования импедансов. Ответвитель служил точкой подключения к сети и формировал короткое ответвление от магистрали к устройству. Если устройство снимали, ответвитель также обеспечивал согласующее оконечное сопротивление линии, сохраняя целостность сигнала. 

8. Сеть Space Shuttle очень похожа на американский военный стандарт последовательной шины MIL-STD-1553. Стандарт 1553B широко применяется в военных самолётах, ракетах, танках, системах ВМС, гражданском Airbus A350 и телескопе James Webb.

Однако сеть шаттла и стандарт 1553 разрабатывались параллельно в начале 1970-х, поэтому это не одна и та же система. Главное различие в том, что в шаттле использовались 24-битные слова вместо 16-битных, а между словами выдерживалась пауза 5,5 мкс. 

9. Функции MIA описаны так:

  • передача и приём данных;

  • гальваническая развязка по постоянному току;

  • параллельно-последовательное преобразование;

  • последовательно-параллельное преобразование;

  • формирование и обнаружение сигнала синхронизации;

  • манчестерское кодирование и декодирование;

  • формирование и проверка чётности;

  • подсчёт битов;

  • передача состояния в BCE.

    На функциональной блок-схеме ниже показаны цепи одного сетевого порта. Эта схема дважды повторяется на каждой печатной плате; поскольку платы расположены по обе стороны модульной платы, всего она обслуживает четыре сети. Пунктирные блоки Transmitting и Receiving, насколько я понимаю, соответствуют крупным микросхемам Motorola. Исключение — усилители «TX» и «RX»: они размещены в гибридном модуле IBM, а трансформаторы выполнены отдельными дискретными компонентами.

    Functional block diagram of the MIA. From Prototype IOP Functional Description, p82. Click for a larger image.

    Функциональная блок-схема MIA. Источник: Prototype IOP Functional Description, стр. 82. 

10. 4-битные микросхемы сдвиговых регистров — это 54LS395. У них есть выходы с третьим состоянием, поэтому их можно подключать к общей шине. Вероятно, эти микросхемы образуют интерфейс между платой и остальной частью IOP: двенадцать микросхем на плате, как и ожидается, позволяют организовать для каждого порта 24-битный регистр. 8-битные сдвиговые регистры — это 54LS1964.

Я не смог понять, зачем здесь так много 8-битных микросхем сдвиговых регистров. Возможно, они работают как буферы. Это лишь предположение. В Prototype IOP Functional Description сказано, что между 24-битными сдвиговыми регистрами MIA и остальной частью IOP находятся шесть 28-битных регистров по четыре слова каждый.

Могли ли эти 8-битные сдвиговые регистры образовывать такие регистры, хотя сдвиг здесь и не нужен? Документ не уточняет, расположены ли эти регистры на плате MIA или на другой плате. Микросхемы сдвиговых регистров дают 256 бит памяти на одну модульную плату, тогда как регистровому файлу требуется лишь 112 бит, то есть запас получается слишком большим.

Кроме того, в документе сказано, что регистры организованы как регистровые файлы «7 × 4 × 4» для каждого набора из четырёх MIA. Это больше похоже на специализированные микросхемы регистровой памяти вроде 54LS170, а не на сдвиговые регистры. Возможно, конструкцию позже изменили по сравнению с Prototype Functional Description, и 8-битные сдвиговые регистры используются как дополнительная буферизация. 

11. Название 4 Pi — геометрическая шутка, отсылающая к чрезвычайно популярной серии мейнфреймов IBM System/360. System/360 совершила переворот в компьютерной индустрии, предложив идею единого семейства компьютеров для любых задач — и коммерческих, и научных.

Название символизировало, что System/360 охватывает полный круг задач, все 360°. А System/4 Pi переносила эту идею из двумерного круга в трёхмерное пространство: 4π стерадиан составляет полный телесный угол сферы. Как формулировала IBM: «System/4 Pi тоже заполняет сферу — весь спектр потребностей военных вычислительных систем для авиации, космоса и корабельных платформ». 

12. В самых ранних системах 4 Pi, в линейке TC, использовался другой формат модульных плат. Однако в последующих машинах, включая компьютер Space Shuttle AP-101B, применялись стандартные платы 4 Pi. Затем IBM перешла на гораздо более крупные платы — начиная со следующей машины, AP-101C для бомбардировщика B-1.

В модернизированном компьютере Space Shuttle AP-101S использовались именно такие увеличенные платы. 

13. На фотографии ниже видно, как микросхемы в корпусах flat pack устанавливались на печатную плату. Под каждую микросхему отведено по 16 контактных площадок. У 14-выводных микросхем две площадки остаются неиспользованными, а более крупные микросхемы нарушают регулярный рисунок.

Каждая площадка соединена с переходным отверстием — металлизированным отверстием, проходящим через печатную плату. Через эти переходные отверстия выполняются соединения с дорожками на другом слое платы; часть таких дорожек видна на фотографии. Переходные отверстия также удерживают выводы компонентов с выводным монтажом.

На модульных платах мейнфреймов IBM System/360 использовалась очень похожая конструкция печатных плат с регулярной сеткой переходных отверстий. Она сильно отличалась от плат большинства других систем, где отверстия делали только там, где они действительно требовались, а дорожки прокладывали менее регулярно.

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

По сравнению с потребительской электроникой технологии IBM были очень продвинутыми. Уже в 1960-х IBM использовала шестислойные печатные платы и компоненты поверхностного монтажа, тогда как Apple, например, перешла на такой монтаж лишь двумя десятилетиями позже.

В частности, в Apple IIGS 1986 года компоненты поверхностного монтажа применялись очень широко, но Macintosh SE 1987 года всё ещё целиком использовал выводной монтаж.

A close-up of the IOP's PROM board.

Плата PROM процессора ввода-вывода крупным планом.

На фотографии также видно, что часть микросхем маркирована номерами спецификационных контрольных описаний (SCD), например 6088731-1, а другие — стандартными номерами компонентов, например SN54LS151. Этот номер SCD соответствует стандартному элементу И-НЕ 54S10. У обеих микросхем есть коды даты выпуска 1974 года — 74xx; их не следует путать с обозначениями микросхем серии 7400.

На фотографии ниже показаны три разных типа микросхем в корпусах flat pack. Первый, самый распространённый, имеет выводы с верхней и нижней сторон — как у современных компонентов поверхностного монтажа. Второй корпус золотистый; он гораздо меньше и тоньше, а выводы у него расположены со всех четырёх сторон. У третьего корпуса выводы также идут по четырём сторонам, но сам он несколько крупнее.

Three types of surface-mount packages.

Три типа корпусов для поверхностного монтажа.

14. Изменение размера модульной платы для IOP зафиксировано в документе Prototype IOC Functional Description: «Стандартная плата 4 Pi расширена: ширина увеличена с 8 до 9 дюймов; введён новый стандартный 120-контактный разъём».

На фотографии ниже сравниваются 98-контактный разъём стандартной платы IBM 4 Pi сверху и 120-контактный разъём платы IOP снизу. Шаг выводов у 120-контактного разъёма меньше: 0,05 дюйма против 0,06 дюйма у 98-контактного. Поэтому при той же ширине в нём помещается больше выводов. Но расстояние между рядами выводов у 120-контактного разъёма, наоборот, больше: 0,150 дюйма против 0,100.

The connectors on a standard IBM 4 Pi page (top) and the IOP page (bottom). The 4 Pi page is courtesy of Eric Schlaepfer. The slight waviness is just due to bent pins.

Разъёмы стандартной платы IBM 4 Pi сверху и платы IOP снизу. Плата 4 Pi предоставлена Эриком Шлепфером. Небольшая волнистость контактов объясняется лишь тем, что они погнуты.

Также обратите внимание: с одной стороны у обоих разъёмов есть штифт, а с другой — полый цилиндр. Они нужны для кодирования разъёма, чтобы модульную плату нельзя было вставить не в тот слот. У каждого типа плат своя комбинация; при двух разъёмах возможны 16 вариантов. 

15. На схеме разобранного IOP показано семь интерфейсных плат MIA. Это не сходится с остальными данными: в том же документе, в таблице 4-1, указано шесть плат MIA для 24 сетевых подключений. В этой таблице общее число плат также на одну больше, чем на схеме. Вероятно, систему ещё дорабатывали, когда составляли документ: некоторые позиции в таблице помечены TBD, поэтому данные и расходятся. 

16. Виртуальные процессоры MSC и BCE по очереди выполняются на физическом процессоре IOP. Интервал длительностью 16,5 мкс разбит на 33 временных слота: каждый BCE получает по одному, MSC — восемь, ещё один слот отведён на самотестирование BCE. Поэтому MSC получает значительно больше процессорного времени, чем низкоуровневый BCE. 

The I/O Processor's slot timer or "wheel". Adapted from Space Shuttle Systems Handbook, 8.3.

Таймер слотов, или «колесо», процессора ввода-вывода. Адаптировано из Space Shuttle Systems Handbook, раздел 8.3.

У каждого BCE и MSC есть собственный набор регистров, называемый локальной памятью, поэтому в каждом слоте доступны нужные регистры. Физический процессор работает по конвейерному принципу, так что одновременно в нём фактически активны четыре слота. 

17. Подробное описание систем команд процессоров MSC и BCE приведено во второй главе Prototype IOP Functional Description

18. В IOP использовались микрокоманды шириной 72 бита. Микрокоманда управляла физическим процессором, задавая источники и приёмники данных, операции АЛУ и действия при условных переходах. В таблице ниже подробно показана структура микрокоманды.

Важно, что микрокоманда отдельно и на низком уровне управляет каждым компонентом процессора, поэтому она принципиально отличается от машинной команды. Кроме того, микрокоманда обеспечивает некоторую степень параллелизма: на каждом шаге она задаёт три операции — операцию первого АЛУ, операцию второго АЛУ и условное действие.

Format of a 72-bit IOP micro-instruction. From Prototype IOP Functional Description.

Формат 72-битной микрокоманды IOP. Источник: Prototype IOP Functional Description.

19. В плате использованы микросхемы PROM Intersil IM5624C. Они похожи на Signetics 82S131 и Intel 3622. На лицевой стороне модульной платы также установлены девять микросхем с маркировкой D1-6605-2, вероятно производства Harris; возможно, это буферы. 

20. В Prototype Input/Output Processor Function Description перечислены две модульные платы, связанные с микрокодом: «Micro Store (ROM)» — именно её я изучал — и «Micro Store Page». Предполагаю, что на второй находились 512 слов, не поместившиеся на первой плате, а также схемы управления микрокодом и регистры. 

21. Почему номера на микросхемах PROM идут вроде бы последовательно, но при этом выглядят случайными? Моя гипотеза такова: изначально микросхемы были пронумерованы по порядку от 1 до 36. Но когда их заменяли для внесения программных исправлений, каждой новой микросхеме присваивали следующий номер — вплоть до 74. 

22. На одной печатной плате IOP с микросхемами в корпусах flat pack помещается до 20 микросхем в ряд, то есть до 100 на плате и до 200 на двухсторонней модульной плате. На плате PROM с более крупными корпусами DIP установлено всего 45 микросхем. Поскольку DIP выше и толще, у этой модульной платы только одна печатная плата. Хорошо видно, насколько flat pack выигрывают у DIP по плотности размещения.

Плотность на этой плате немного выше за счёт 15 микросхем в корпусах flat pack, установленных на обратной стороне платы PROM, показанной ниже. Их пришлось разместить между рядами DIP, чтобы не пересекаться с выводами DIP-микросхем. DIP используют выводной монтаж, поэтому их контакты выходят на обратную сторону печатной платы. Крупные двухвыводные компоненты сверху и снизу — развязывающие конденсаторы, фильтрующие питание микросхем.

Back of the PROM page.

Обратная сторона платы PROM.

По обратной стороне также видно, что печатная плата на дюйм уже доступного пространства: обратите внимание на зазор справа. Возможно, саму печатную плату спроектировали под стандартную 8-дюймовую плату 4 Pi, а затем установили в специальную 9-дюймовую модульную плату IOP.

23. На странице NASA Office of Logic Design есть фотография платы Space Shuttle, которая, возможно, относится к IOP, но её происхождение неизвестно — я уточнял. Эта плата вызывает вопросы: у неё такой же необычный 9-дюймовый форм-фактор, как у модульных плат IOP, но при этом немало отличий. Поэтому, вероятно, она входила в другую систему шаттла.

A Space Shuttle board. Note the broken connector; the plastic on these vintage Burndy connections is very often broken. From Space Shuttle Computers and Avionics.

Плата Space Shuttle. Обратите внимание на сломанный разъём: пластик в старых разъёмах Burndy очень часто повреждён. Источник: Space Shuttle Computers and Avionics.

Это двойной интерфейс MIA с маркировкой ADPTR. INTFC. DUAL MUX и номером детали A538A762-02. В документации IOP этот номер не встречается, да и его формат отличается от номеров деталей IOP.

Схемотехника платы очень похожа на интерфейсную плату IOP: здесь тоже есть гибридные модули, трансформаторы и аналоговые компоненты. Физически совпадают габариты, крепёж и 120-контактный разъём. Однако сверху нет разъёма с контрольными точками, а микросхемы размещены беспорядочно, а не ровными рядами. Поэтому плата не похожа на продукцию IBM. К тому же микросхем на ней заметно меньше.

С другой стороны, здесь используются те же 4-битные микросхемы сдвиговых регистров 54LS395 с маркировкой 6088913. Я бы предположил, что перед нами прототип интерфейсной платы IOP, но судя по кодам даты на компонентах, обе платы выпущены в 1976 году.

Сейчас я предполагаю, что эта плата была сетевым интерфейсом MIA в другом компоненте Space Shuttle, вероятнее всего в MDM — мультиплексоре/демультиплексоре. В MDM использовалась плата «Serial MIA», изготовленная Singer-Kearfott. На этой плате стоят гибридные модули Singer, и это логично: именно Singer-Kearfott разработала сеть MIA, так что её модули вполне могли использоваться в интерфейсной плате.

Есть и другой вариант: плата могла быть частью инерциального измерительного блока шаттла — IMU (Inertial Measurement Unit), который тоже производила Singer-Kearfott. IMU обменивался данными с MDM по последовательной линии ввода-вывода, очень похожей на протокол MIA, хотя между ними были некоторые различия.

Кстати, Singer — это та самая компания, которая выпускает швейные машины. Как она пришла к производству сложных компонентов для Space Shuttle? Не говоря уже о системах наведения ядерных ракет.

В 1960-х Singer начала диверсифицироваться в оборонную отрасль и вычислительную технику, а в 1968 году приобрела Kearfott — оборонную компанию, разрабатывавшую инерциальные навигационные системы. Компьютер Singer-Kearfott SKC-2000 рассматривали для Space Shuttle, но в итоге выбрали IBM AP-101. Singer-Kearfott изготовила для шаттла инерциальные измерительные блоки IMU.

В 1987 году Singer продала подразделение Kearfott Guidance & Navigation компании Astronautics Corporation. Kearfott до сих пор выпускает системы наведения и навигации, например инерциальную навигационную систему для беспилотника Global Hawk и баллистической ракеты подводных лодок Trident II. После поглощения в 1987 году и двух банкротств Singer вернулась к швейным машинам; теперь компания входит в состав производителя швейных машин SVP Worldwide

24. Бонусная фотография Питера Когге за работой над процессором ввода-вывода:

Тему низкоуровневой разработки можно продолжить уже на практике. На этих открытых уроках разберут, как устроена работа с памятью и что происходит ближе к ядру системы. Присоединяйтесь:

  • 23 июля 20:00. «malloc — кто же ты на самом деле?». Записаться

  • 3 августа 20:00. «Что такое модуль ядра. Как его написать, собрать, запустить». Записаться


Читайте также:

Навигация без GPS: как B-52 ориентировался по звёздам с помощью шестерёнок

Как компьютер Spacelab считал без микропроцессора: реверс-инжиниринг платы из 1980-х

Внутри Intel 8086: как микрокод управляет АЛУ

ссылка на оригинал статьи https://habr.com/ru/articles/1056122/