Утром 12 апреля 1981 года, ровна 20 лет спустя после дня, когда Юрий Гагарин стал первым человеком в космосе, в небо Флориды с грохотом устремился космический шаттл. При первом взлёте шаттла им управляли командир Янг и пилот Криппен. Но на самом деле запуском, как и большей частью полёта, руководили четыре компьютера в отсеках авионики одной палубой ниже экипажа. Пятый компьютер был готов перехватить управление в случае катастрофического компьютерного сбоя. Эти компьютеры Model AP-101B относились к семейству IBM System/4 Pi.

Семейство System/4 Pi, впервые представленное примерно в 1967 году, было линейкой компактных мощных компьютеров, предназначенных для задач в сфере авионики. Военные использовали эти компьютеры везде, от истребителя F-4 и бомбардировщика B-52 до сонарных систем подводных лодок и противокорабельных ракет «Гарпун». Другие компьютеры семейства System/4 Pi играли более мирную роль в разработке GPS и дистанционного управления полётами. В космосе компьютеры System/4 Pi управляли первой американской космической станцией Скайлэб, а также многоразовой лабораторией Спейслэб, выводившейся в космос шаттлом.
Несмотря на важную роль компьютеров System/4 Pi, информацию о них сложно найти — в Википедии полностью отсутствуют данные о моделях CC, SP и ML1. Однако я нашёл кучу маркетинговых брошюр и статей о 4 Pi, благодаря чему могу заполнить множество пробелов в истории System/4 Pi.
Первое поколение
Линейка мейнфреймов IBM System/360 была представлена в 1964 году. System/360 совершила революцию в компьютерной отрасли благодаря новой концепции применения одного семейства компьютеров для всех сфер применения: и в бизнесе, и в науке. Название символизировало то, что System/360 охватывает все 360º применений. Название 4 Pi расширило эту идею до областей применения в трёхмерном мире: 4π — это количество стерадианов, составляющих полную сферу. Как говорила сама IBM, «System/4 Pi заполняет сферу — весь спектр оборонных потребностей в компьютерах — для авиации, космоса и флота».
Изначально в семействе System/4 Pi было три модели: «Model TC (tactical computer, «тактический компьютер») для спутников, тактических ракет, вертолётов и других сфер применения, требующих очень маленьких, легковесных компьютеров; Model CP (customized processor, «специализированный процессор») для сфер применений вычислений в реальном времени; Model EP (extended performance, «расширенная производительность») для областей, требующих вычислений в реальном времени очень больших объёмов данных2».
TC (Tactical Computer)
TC Tactical Computer был цифровым компьютером общего применения, проектировавшимся с прицелом на низкую стоимость и производительность среднего уровня (подробности). TC имел 16- или 32-битное слово, но для снижения затрат в нём использовалась 8-битная шина. Он поддерживал от 8 КБ до 64 КБ памяти на магнитных сердечниках. У него был простой набор из 54 команд, включая умножение и деление. Как это было привычно для того времени, у него отсутствовал стек для вызовов подпрограмм, но взамен имелась команда ветвления и сохранения (branch-and-store). Первая модель работала со скоростью 48500 команд в секунду. Хоть по современным стандартам это ужасно медленно, но на то время это была производительность уровня мейнфреймов, сравнимая с производительностью мейнфрейма IBM 360/40 среднего ценового диапазона.

Изначально TC монтировался в корпус размером с портфель (24,75 см × 43,5 см × 10 см) (см. ниже) и весил 38,1 килограмма, но в зависимости от сферы применения его можно было монтировать в другие корпуса. Для тактической ракеты компьютер был реализован в виде полукруглых печатных плат, показанных выше. Компьютер изготавливался из интегральных схем транзисторно-транзисторной логики3 (TTL) в корпусах flatpack, смонтированных на четырёхслойные печатные платы. Две печатные платы создавали сэндвич, между которыми находилась металлическая конструкция, обеспечивающая жёсткость и охлаждение; такая трёхслойная сборка называлась страницей. Страница могла содержать примерно триста интегральных схем, то есть компьютер имел очень высокую степень упаковки.

Компьютеры TC-1 сыграли важнейшую роль в первой американской космической станции Скайлэб, запущенной в 1973 году4. Ориентацией Скайлэба нужно было прецизионно управлять для нацеливания установленных в лаборатории телескопов. Чтобы не тратить топливо реактивных двигателей, Скайлэб поворачивалась благодаря изменению скорости трёх массивных гироскопов, каждый из которых весил 341 килограмм. Этими гироскопами управляли два компьютера TC-1: один компьютер оставался активным, а второй использовался в качестве резервного. У каждого 16-битного компьютера было 16 тысяч слов хранилища, которые можно было перезаписывать с магнитной ленты или по радио, и они исполняли по 60 тысяч операций в секунду. Каждый компьютер Скайлэба занимал 0,06 кубических метра (гораздо больше, чем TC) и весил 44,2 килограмма. Компьютеры Скайлэба примечательны тем, что стали первой полностью цифровой системой управления на пилотируемом космическом аппарате.
Модель TC-2 (см. ниже) была гораздо быстрее (125 тысяч операций в секунду) и весила 36,3 килограмма. Она использовалась для навигации/средств доставки боеприпасов в истребителе-штурмовике A-7D/E. В 1976 году модель проапгрейдили до TC-2A, которая была ещё быстрее (454 тысяч операций в секунду), поддерживала больше памяти и имела 12 дополнительных команд.

Как и в большинстве компьютеров той эпохи, в TC применялась память на магнитных сердечниках; каждый бит хранился в крошечном тороидальном сердечнике из литий-никелевого феррита, вытянутом в сетку5. Плоскости сердечников в TC и других компьютерах 4 Pi первого поколения имели размер примерно 15 сантиметров по каждой из сторон. В плоскости было 16384 сердечников, то есть каждая плоскость хранила 16 Кбит. Следовательно, для 8-килобайтной памяти TC требовался набор из четырёх плоскостей сердечников. Важное преимущество памяти на сердечниках заключается в том, что благодаря магнитности данные сохранялись даже в случае отсутствия питания памяти. Кроме того, она была крайне устойчива к радиации.

CP (Customized Processor)
На один уровень выше относительно серии TC был CP Customized Processor (изначально его недолго называли Cost Performance, то есть «отношение цены и производительности»)6. В нём использовался 16-битный CPU, но для повышения производительности он имел широкую 36-битную шину (включающую два бита чётности и два бита защиты хранения7). В отличие от серии TC, в серии CP возможно было внутреннее изменение микрокода (опциональное), поэтому набор команд с лёгкостью можно было менять8. Форматы команд системы CP совершенно отличались от форматов системы TC10. Базовая модель имела 36 команд и исполняла 91 тысячу команд в секунду. CP поддерживала множество режимом адресации, более сложных, чем простая адресация системы TC. TC работал с частотой 330 кГц, а CP — с частотой 2,4 МГц. Производительность CP выросла не так, как можно было предположить, исходя из высокой тактовой частоты, потому что в обеих системах применялась медленная память на сердечниках.

Одной из сильных сторон System/4 Pi был ввод-вывод, позволявший ей общаться с внешними устройствами в реальном времени. CP-1 имел обширные возможности ввода-вывода: три высокоскоростных параллельных ввода, высокоскоростной параллельный вывод, последовательный вывод, 24 отдельных линий ввода, 144 отдельных линий вывода и 24 линии прерываний. Для поддержки всех этих сигналов ввода-вывода CP-1 монтировался в двух корпусах: один для самого компьютера, второй для интерфейса ввода-вывода. Корпус с CPU показан ниже; корпус интерфейса ввода-вывода был на него похож, но имел больше десятка разъёмов под линии ввода-вывода. CP-1 применялся в системе навигации/анализа угроз самолёта радиоэлектронной борьбы EA-6B Prowler9.

CP-2 был компьютером системы навигации/средств доставки боеприпасов истребителя F-111, интегрировавшим радар и вооружения. Он был быстрее, чем CP-1, вероятно, потому что не подвергался микропрограммированию, и выполнял 150 тысяч команд в секунду. Кроме того, он был меньше, занимал один корпус весом 21 килограмм, хоть и обладал более ограниченной поддержкой ввода-вывода. К сожалению, говорят, что этот компьютер F-111 был ужасен в эксплуатации, потому что имел проблемы с надёжностью и ограниченную производительность. Позже CP-2 заменили на улучшенный CP-2EX.

Компьютер CP-3 (см. ниже) использовался для навигации и средств доставки боеприпасов в A-6E Intruder (1970 год) и других самолётах, заменив компьютер Litton с ненадёжной барабанной памятью. Этот компьютер интегрировался в «умные» бомбы, имевшими лазерное наведение. Он был похож на CP-2 и имел такую же производительность, однако другие функции ввода-вывода.

Как и TC, компьютер CP изготавливался из TTL-чипов формата flatpack, смонтированных на печатных платах, называемых страницами. Однако CP имел страницы меньшего размера с шестью слоями вместо четырёх; каждая двусторонняя страница могла содержать до 156 интегральных схем. У каждой страницы было два 98-контактных разъёма, повторяющих стиль разъёма, который IBM использовала в программе «Аполлон» для Launch Vehicle Digital Computer (LVDC) ракеты Сатурн-5. IBM стандартизировала этот тип страниц на десятки лет; показанная ниже страница использовалась в компьютере AWACS (1991 год), но при этом почти идентична страницам из компьютера CP 1967 года.

EP (Extended Performance)
EP был самым мощным из первых компьютеров System/4 Pi. Это была 32-битная машина, совместимая с мейнфреймами IBM System/360, в частности с 360 Model 4411. Для ввода-вывода EP использовал ту же архитектуру каналов ввода-вывода, что и мейнфреймы System/360. Для поддержки сложного набора команд 360 компьютер EP имел микрокод. EP исполнял 190 тысяч команд в секунду и весил 34 килограмма. В качестве опции была доступна поддержка чисел с плавающей запятой.

Многопроцессорная версия EP, EP/MP, поддерживала до трёх CPU с общей памятью. Она была изготовлена для Пилотируемой орбитальной лаборатории (MOL) Министерства обороны США, Но проект MOL был отменён (подробности). Многопроцессорная система также использовалась в противоподлодочном исследовательском проекте VS ANEW, части программы VSX, приведшей к созданию Lockheed S-3 Viking — самолёта, в котором вместо EP применили компьютер System/4 Pi SP-0A.
Следующее поколение: Advanced System/4 Pi
В начале 1970-х IBM создала семейство Advanced System/4 Pi12. Эти 32-битные системы были существенно быстрее, меньше и совершеннее, чем компьютеры System/4 Pi. В этих компьютерах применялись улучшенные интегральные схемы, называвшиеся Medium-Scale Integration (MSI). Эти интегральные схемы содержали от 10 до 100 вентилей на чип, в отличие от предыдущих чипов Small-Scale Integration (SSI) с 1-10 вентилями на чип, что позволяло чипу реализовывать более сложные функции, например, сдвиговый регистр, счётчик или сумматор. Кроме того, в них использовалась более быстрая память на сердечниках, в которой время такта памяти снизилось с 2,5 мкс до 1 мкс.
Изначально эта серия состояла из трёх линеек: Advanced Processor (AP), Subsystem Processor (SP) и Command and Control (CC). Линейка AP — самая большая и известная, она использовалась и в шаттлах, и во множестве самолётов. Спустя несколько лет IBM представила линейку ML. Хоть о линейках SP, CC и ML есть мало информации, они обладают некоторыми интересными свойствами.
Advanced Processor (AP)
Чаще всего в компьютерах AP использовался производные от System/360 набор команд и архитектура под названием MMP (Multipurpose Midline Processor)13. В отличие от компьютеров EP, компьютеры AP не были совместимы с System/360: формат команд, регистры, режимы адресации и коды условий были другими. В некоторых компьютерах AP использовался 16-битный набор команд, бывший Стандартом ВМФ США с обозначением MIL-STD-1750A.
Линейка Advanced Processor началась с AP-1, 32-битного процессора, выполнявшего 450 тысяч команд и весившего 16,3 килограмма. Его можно было программировать на ассемблере или языке JOVIAL. Он поддерживал внутреннее хранилище от 16 тысяч до 64 тысяч полуслов, дополнительную память можно было подключить во внешнем корпусе. Компьютер имел четыре высокоскоростных канала ввода-вывода, обрабатывающих до 15 устройств на канал. Числа с плавающей запятой поддерживались в виде дополнительной опции. Сохранилось подробное описание AP-1.

Компьютер AP-1 применялся в истребителе F-15 для навигации/доставки боеприпасов и управления данными. Также его использовала Япония в истребителе F-4. Апгрейд компьютера под названием AP-1R имел 256 КБ памяти на сердечниках и выполнял более одного миллиона команд в секунду; в 1983 году его установили в самолёте F-15E. Компьютер AP-1A применялся при разработке тактической системы коммуникаций AWACS Seek Bus и Joint Tactical Information Distribution System (JTIDS).

По функциональности и внешнему виду AP-2 был почти идентичен AP-1, имелись лишь небольшие изменения в возможностях ввода-вывода. Он использовался в Central Integrated Test System (CITS) бомбардировщика B-1 для тестирования и устранения проблем в реальном времени (подробности).
Компьютер AP-101 расширил набор команд AP-1 с 83 команд до 151, а также имел чуть более быструю память на сердечниках. Первые девять компьютеров AP-101 были использованы в исследовательской программе дистанционного управления полётами НАСА с истребителем F-8 (ссылка). Также AP-101 использовался для разработки GPS.

Примерно в 1975 году был разработан компьютер AP-101B для шаттла14. Первым этапом стало совершенствование набора команд для улучшения поддержки «языков более высокого порядка», результатом чего стало создание AP-101A. Затем была добавлена память двойной плотности на сердечниках; так появился AP-101B, использовавшийся в шаттлах в течение многих лет. Компьютер AP-101B был дополнен IOP (I/O Processor, «обработчик ввода-вывода»): по сути вторым компьютером, занимавшимся вводом-выводом: он предоставлял 24 шины данных остальной части шаттла. Для надёжности в шаттле установили четыре компьютера AP-101B, которые работали параллельно и голосовали за каждый вывод, чтобы результаты сбойного компьютера были исключены. Кроме того, в качестве резервного был готов пятый компьютер с независимо запрограммированным ПО на случай, если сбой ПО приведёт к сбою всех четырёх основных компьютеров15.

Компьютер шаттла имел 104 тысячи 32-битных слов памяти. В AP-101B содержалось десять страниц памяти (то есть печатных плат), на каждой из которых было 16К×18 бит, а IOP содержал шесть страниц, по 8K×18 бит каждая16. Хоть память была физически разделена между двумя корпусами, она работала как единая общая память.

Компьютер AP-101C (1977 год) был во многом улучшен: модульная память четырёхкратной плотности на сердечниках, обновлённая технология логики и другой корпус для снижения затрат17. AP-101C имел хранилище на 32 тысяч слов и выполнял более 500 тысяч операций в секунду18. AP-101C использовался в цифровой системе бомбометания и навигации. Также он был установлен в бомбардировщик B-52G/H как часть комплекса радиоэлектронного оборудования наступательного значения. AP-101C был рассчитан на то, чтобы выдерживать радиацию и электромагнитные импульсы благодаря защищённым от радиации цепям и контролю памяти по чётности. Его функция «обхода влияния ядерного взрыва» возобновляла работу компьютера спустя 50 миллисекунд после ядерного происшествия, вероятно, распознавая ядерный взрыв и быстро перезагружаясь, чтобы избежать его вредного воздействия, например защёлкивания.

AP-101C стал началом серии Modular Computer Series19, в которой использовались страницы размером примерно 23 см × 16 см, то есть намного больше, чем прежние. Страницы MCS были модульными, поддерживали стандартные модули CPU, памяти, таймера, источников питания, тестирования и новую военную последовательную шину MIL-STD-1553A. Предыдущие компьютеры настраивались изменением микрокода в Read Only Store (ROS) на основе сердечников, а AP-101C можно было настраивать изменением PROM (Programmable Read-Only Memory) и ПЛИС (Programmable Logic Array, PLA).

В середине 1970-х ВМФ США осознали, что затраты на разработку ПО для сложных систем военного назначения превратились в проблему, потому что разные компьютеры имели несовместимые наборы команд. Для решения этой проблемы ВМФ разработали стандартную 16-битную архитектуру и набор команд, выпустив в июле 1980 года стандарт MIL-STD-1750A. ВМФ сделала обязательным требованием для будущих проектов соответствие 1750A (если только не было веских причин против), поэтому многие компании производили компьютеры, совместимые с 1750A. IBM разработала версию AP-101 с набором команд 1750A и назвала её AP-101E.
AP-101F (1982 год) во многом стал инновационным. Это был компьютер с двойной архитектурой, поддерживающий и старый набор команд AP-101 (MMP), и набор команд стандарта 1750A, благодаря чему процесс апгрейда становился менее рискованным. Он стал гораздо быстрее из-за конвейерной архитектуры, выполнявшей миллион команд в секунду (MIPS). Также в AP-101F была применена полупроводниковая память DRAM (Dynamic RAM), которая была более плотной, быстрой и энергосберегающей, чем память на сердечниках20.
Выбор полупроводниковой памяти вместо памяти на сердечниках казался очевидным, но память на магнитных сердечниках обладала двумя важными преимуществами. Во-первых, память на сердечниках энергонезависима: она сохраняет своё содержимое при отключении питания, поэтому программы не нужно загружать при запуске. Во-вторых, память на сердечниках устойчива к ядерной радиации и космическим лучам, которые легко могут менять значения битов в полупроводниковой памяти. Проблема энергозависимости была решена добавлением резервного аккумуляторного питания полупроводниковой памяти. В AP-101F проблема радиации была решена благодаря тому, что полупроводниковую память подстраховывала «теневая» память на сердечниках. В последующих компьютерах использовалась полупроводниковая память с кодами коррекции ошибок, позволявшая восстанавливать сменившиеся значения битов: на каждое 16-битное слово в памяти приходилось 6 дополнительных бит для коррекции ошибок21. Из-за таких компромиссов в некоторых компьютерах (например, в описанном ниже ML-1) можно было применять и память на сердечниках, и полупроводниковую память.
В бомбардировщике B-1B использовалось восемь компьютеров AP-101F: по одному на навигацию, средства доставки боеприпасов, управление и дисплеи, обеспечение избыточности при критических задачах, препроцессор и тестирование системы (CITS), а два компьютера обеспечивали огибание рельефа (см. Standards Application to B-1B Avionics Program). Чтобы минимизировать риски срыва графика, изначально в B-1B применялись AP-101C из B-52, а затем произошёл переход на AP-101D. Из-за необходимости более мощного процессора и обязательности использования набора команд стандарта 1750A разработчики B-1B перешли на AP-101F с двойной архитектурой, а ПО для него постепенно переписывалось с ассемблера на стандартный язык JOVIAL.
Переработка шаттла: AP-101S
Самый неумолимый враг военного компьютера — это закон Мура. Даже если вы начинаете разработку с самым современным компьютером, до ввода в эксплуатацию самолёта может пройти десяток лет, после чего он будет совершать полёты, возможно, ещё десятки лет. Тем временем, коммерческие компьютеры каждый десяток лет становятся мощнее больше, чем на порядок величин. Из-за этого военные компьютеры постоянно борются с устареванием.
У космических компьютеров есть та же самая проблема: компьютер AP-101 шаттла был разработан в 1972 году, но сам шаттл полетел только 1981 году, из-за чего их компьютеры изначально были устаревшими. Для повышения производительности IBM в следующем году начала перепроектировать компьютер, создав AP-101S. Он выполнял 1,27 миллиона команд в секунду (MIPS), в три раза больше, чем AP-101B. Однако его повышение производительности не шло ни в какое сравнение с развитием микропроцессоров. В 1991 году, когда AP-101S совершил своё первый полёт, микропроцессор Motorola 68040 уже работал со скоростью 44 MIPS, оставляя AP-101S далеко позади. Ко времени завершения программы «Спейс шаттл» в 2011 году процессор Intel Core i7 обеспечивал целых 100 тысяч MIPS. Астронавтам приходилось пользоваться ноутбуками, чтобы компенсировать дефицит вычислительной мощи основных компьютеров; в один полёт брали 18 ноутбуков Thinkpad.

Несмотря на нехватку абсолютной производительности, AP-101S стал существенным шагом вперёд по сравнению с предыдущим компьютером шаттлов. В AP-101S функциональность компьютера AP-101B и I/O Processor уместилась в один корпус вместо двух, что позволило сэкономить 27 килограмм. На шаттле устанавливалось пять компьютеров, поэтому это изменение позволило освободить 163 килограмма под полезную нагрузку. AP-101S не только втрое увеличил скорость, но и стал более надёжным, имел 256 тысяч слов памяти вместо 104 тысяч и потреблял на 100 Вт меньше. AP-101S остался совместимым по соединениям со старым компьютером и мог выполнять то же ПО, благодаря чему упрощался апгрейд.

Процессоры AP-101S, как и предыдущие процессоры, изготавливались из нескольких страниц TTL-чипов. В отличие от AP-101B, в AP-101S использовались показанные выше крупные страницы MCS. На схеме ниже показано, как собирался улучшенный компьютер AP-101S комбинированием конвейерного CPU22 из высокопроизводительного AP-101F, I/O Processor из первого компьютера шаттла и полупроводниковой памяти из AP-10223.

Шаттл мог нести космическую лабораторию Спейслэб (совершенно отличающуюся от Скайлэб) в грузовом отсеке, обеспечивающем просторную среду для исследований. У Спейслэб имелись собственные компьютеры (изначально это были французские компьютеры CIMSA 125 MS24). В 1991 году эти компьютеры Спейслэб заменили на IBM AP-101SL 25. AP-101SL был совместим с 16-битным компьютером CIMSA, поэтому мог выполнять Experiment Computer Operating System и другое ПО Спейслэб без внесения изменений.

Внутренне компьютер AP-101SL станции Спейслэб был очень похож на AP-101S шаттла. В нём было меньше плат, чем в AP-101S, потому что он не включал в себя IOP. Платы процессоров, полупроводниковая память26 и источники питания были почти идентичны соответствующим элементам компьютера шаттла, отличались только платы ввода-вывода27.

Примечания и ссылки
Примечание об ИИ: несмотря на наличие длинных тире, при написании этой статьи ИИ не применялся.
Это описание System/4 Pi взято из Aircraft Yearbook, 1970 год.
Если вы любитель электроники и давно занимаетесь этим увлечением, то, вероятно, работали с популярной серией 7400 интегральных схем TTL. Серия 5400 — это военная версия серии 7400, способная выдерживать диапазон температур от -55 до 125 °C. В первых системах System/4 Pi использовались интегральные схемы Texas Instruments Series 2400 — вариант серии 5400, изготовленный по спецификациям IBM специально для семейства 4 Pi.
В Скайлэб использовалось множество аббревиатур. Обсерватория с телескопами называлась Apollo Telescope Mount (ATM). Компьютеры управляли Skylab Attitude Pointing and Control System (APCS). Каждый из компьютеров TC-1 с отдельным источником питания и интерфейсами ввода-вывода назывался Apollo Telescope Mount Digital Computer (ATMDC). Подробности о компьютерах Скайлэб и их ПО см. в Computers in Spaceflight: The NASA Experience и Development of On-board Space Computer Systems.
В первом поколении компьютеров System/4 Pi использовались тороидальные сердечники IBM 13/21 (внутренний диаметр 13 мил (мил — 0,001 дюйма), внешний диаметр 21 мил), изготовленные из литий-никелевого феррита. Эти ядра могли работать в широком спектре температур (-55 до 100 ºC), что важно для компьютера военного назначения. (Для сравнения: в некоторых мейнфреймах IBM, например в 7090, сердечники находились в ванне из нагретого масла для обеспечения постоянства температуры.) Эти плоскости сердечников были военной версией плоскостей сердечников, применявшихся в дорогостоящих System/360 моделей 65, 75 и 95. Одна плоскость сердечников хранила 16384 бита, а её время доступа составляло 2,5 мкс. (Некоторые плоскости сердечников IBM содержали 512 дополнительных бит, называемых дополнительным хранилищем. Из-за этого серия EP имела хранилище в 8448 слов, а не в 8192).
Как расшифровывается CP? В раннем документе IBM говорится, что CP означает «Cost Performance», но в большинстве источников он называется «Customized Processor». В статье Electronics за 1966 год используются оба названия.
Биты защиты хранилища позволяют пометить слово в памяти на сердечниках, как используемое только для чтения. Так как память на сердечниках сохраняла своё содержимое даже без питания, ПО обычно записывалось в память при настройке системы, после чего данные оставались в памяти. Однако если ПО повреждалось в памяти на сердечниках, его сложно было загрузить заново. Поэтому биты защиты хранилища играли важную роль — защищали ПО от случайной записи.
Микрокод хранился в ROM, называемый в терминологии IBM Read Only Storage (ROS). Read Only Storage было реализовано в виде плоскостей памяти на сердечниках, где наличие сердечника означало 1, а отсутствие — 0 бит. Эта структура отличалась от вязаной памяти Apollo Guidance Computer, в которой хранилось 192 бита на сердечник пропусканием проводов через сердечник или снаружи него. Сердечники ROS были намного меньше, чем сердечники основной памяти, 7/12 против 13/21 (внутренний и внешний диаметры в милах).
Система обозначений AN ранее называлась Joint Army-Navy Nomenclature System, а теперь называется Joint Electronics Type Designation System (подробности). Например, в обозначении компьютера TC-2 часть CP-952 означает, что это компьютер модели 952. Компьютер составляет часть компьютерной системы навигации/доставки боеприпасов; A означает пилотируемый летающий аппарат, S — специальный, N — навигационное устройство, а V — переменная. То есть эти загадочные трёхбуквенные коды подробно описывают тип системы.
Любопытно, что первые системы 4 Pi (TC, CP и EP) имели совершенно разные наборы команд и аппаратные реализации. Имея опыт работы в Sun Microsystems, предположу, что конкурирующие группы внутри IBM по политическим причинам разрабатывали разные продукты, а отделу маркетинга пришлось притворяться, что эти продукты входили в целостный план.
-
Компьютеры в линейке IBM System/360 имели логичные номера моделей: с увеличением номера компьютеры становятся мощнее и дороже. Model 20 была самой слабой и дешёвой, за ней номера увеличиваются (примерно с шагом 10) до Model 91, а затем происходит скачок до Model 195.
Для рынка научных вычислений Model 44 была «компьютером с производительностью почти уровня 360/50, по цене 360/30» (ссылка). Чтобы добиться этого, IBM внесла некоторые изменения в стандартную архитектуру 360. В частности, из Model 44 убрали восемнадцать ориентированных на бизнес команд и добавили такие особенности, как числа с плавающей запятой переменной точности. В Model 44 также были добавлены команды и прерывания с приоритетом для поддержки получения научных данных в реальном времени. System/4 Pi EP тоже обрабатывала данные в реальном времени (только не для научных, а для военных сфер применения), поэтому было логично взять EP за основу Model 44.
-
В этой таблице приведено краткое описание линейки компьютеров AP компании IBM.
1970 год
AP-1
F-15
• Память на сердечниках с 8 тысячами слов
• Архитектура набора команд с фиксированной точкой1972 год
AP-101
Шаттл
• С микропрограммированием
• Шестнадцатеричные числа с плавающей запятой
• Память на сердечниках с 16 тысячами слов1976 год
AP-101B
B-52D
• Память на сердечниках с 32 тысячами слов
• Двоичные числа с плавающей запятой1978 год
AP-101C
B-52G/H
• Специальные функции, добавляемые при помощи микрокода
• MIL-STD-1553A
• Технологии MSI и LSI1981 год
AP-101D
B-1B
• Память на магнитных сердечниках с 64 тысячами слов
• MIL-STD- 1553B1981 год
AP-101E
SEAFAC
• Архитектура набора команд MIL-STD-1750A
• Сертификация SEAFAC1982 год
AP-101F
B- 1B
• Сдвоенная архитектура (IBM и MIL-STD-1750)
• Четыре 1553B
• Память DRAM
• Производительность > 1 MIPS1983 год
AP-1R
F-15
• Архитектура набора команд с фиксированной запятой, преобразуемая в MIL-STD-1750A
• Производительность > 1 MIPS1985 год
AP-102
Различные программы
• ½ ATR
• Один процессор SRU
• MIL-STD-1750A
• Производительность > 1 MIPS
• Технология VLSIЭта таблица взята из The AP-102: Applying VLSI to the Air Force standard instruction set architecture, IBM Technical Directions, 1985 год. Я не совсем доверяю ей, потому что в других источниках говорится, что в шаттле был установлен AP-101B, а в B-52D использовался AP-101C. Также в таблице написано, что в AP-101B использовались двоичные числа с плавающей запятой, что не соответствует другим источникам. SEAFAC — это военно-воздушная лаборатория SEAFAC (Systems Engineering Avionics Facility), которая сертифицировала компьютеры на соответствие стандарту 1750A.
-
Набор команд AP-101 называется MMP, что расшифровывается как Multipurpose Midline Processor. Однако в брошюре IBM «Advanced System/4 Pi Model ML-1 General Purpose Computer» (1974 год) говорится, что это означает «microprogrammed multiprocessor». А в статье «A new computer for the Space Shuttle» IBM Technical Directions (1986 год) говорится, что это Medium Multi-Purpose. Полагаю, что это ошибки.
Набор команд MMP очень близок к набору команд System/360 на уровне ассемблерного кода; команды по большей мере такие же с теми же мнемониками. В MMP отказались от ориентированных на бизнес команд, например, строк переменной длины и десятичной арифметики. Кроме того, MMP предоставлял более совершенные режимы адресации по сравнению с System/360, в том числе косвенную адресацию.
Однако в реализацию внесено так много изменений, что эти компьютеры стали совершенно несовместимыми на уровне машинного кода. Самое неожиданное изменение заключается в том, что в MMP совершенно не используются байты; адрес памяти выполняет доступ к 16-битному «полуслову». При этом байт стал популярным именно благодаря System/360. Их регистры несовместимы: System/360 имела 16 регистров общего назначения размером 32 бита, а MMP имел два набора по восемь регистров. Более того, в System/360 используются 24-битные адреса, поддерживающие до 16 мегабайт памяти. MMP использует 16-битные адреса, расширенные до 19 бит через выбор банков, поддерживая всего 512 тысяч полуслов.

Сравнение форматов команд «регистр-регистр» System/360 и MMP. Из показанной выше схемы видно, что System/360 и MMP кодировали команды совершенно по-разному. Обе системы использовали формат команд «RR», например, при сложении двух регистров, но 16-битные команды кодируются совершенно с другой структурой. В частности, для задания регистра MMP использует три бита вместо четырёх, а также укороченное поле опкода.
Из-за схожести наборов команд программисту на языке ассемблера System/360 было легко начать писать программы для серии AP. Однако из-за несовместимости программы MMP не могли выполняться напрямую на System/360, их нужно было исполнять через программу функционального симулятора. Для сравнения: предыдущие системы System/4 Pi EP были совместимы с System/360, поэтому программы можно было напрямую запускать на любой из машин.
-
На рисунке ниже показан CPU AP-101B шаттла (то есть более ранняя версия). Половина корпуса занята большими страницами хранилища. Логика реализована в стандартных страницах System/4 Pi, а внизу расположен источник питания. Круглые разъёмы на передней панели соединены со страницами через гибкие полиимидные печатные платы (впечатляющая для 1970-х технология). Функция каждой страницы описана в Space Shuttle Advanced System/4 Pi Model AP-101 Central Processor Unit, стр. 131 (6-11).

-
Избыточность компьютеров шаттла оказалось важной во время полёта STS-9A (1983). За пять часов до запланированного приземления на шаттле произошло два компьютерных сбоя. Сбой GPC-1 (General Purpose Computer 1) привёл к невозможности его включения. Шесть минут спустя произошёл отказ GPC-2, но его удалось включить снова (отчёт о миссии STS-9, информация о Спейслэб 1). Сбой связали с отломившимся куском припоя. Командир Джон Янг описывал ситуацию так: «У меня начали дрожать колени. Когда отказал второй компьютер, я превратился в студень. Наши глаза ещё никогда не были такими широкими!». Несмотря на проблемы с компьютерами, сбой IMU (блока инерциальных измерений) и два загоревшихся APU (вспомогательных источника питания), шаттл успешно приземлился.
В результате двойного отказа компьютеров начиная с полёта STS-11 (1984) на шаттлах появился шестой (запасной) компьютер. Он хранился в ящике и его физически можно было поставить вместо неисправного компьютера прямо на орбите. Запасной компьютер пригодился в полёте STS-30 (1989 год) после того, как у компьютера 4 возникла «ошибка чётности данных внешнего хранилища», указывающая на аппаратную проблему.
Любопытно, что в AP-101B и IOP шаттла использовались разные страницы хранилища: в хранилище было установлено 18 страниц на 16 тысяч слов каждая, а в IOP — 18 страниц по 8 тысяч слов. Изначально система была рассчитана на 64 тысяч слов на основе шестнадцати страниц по 8 тысяч слов (источник, подробности). В конечном итоге в компьютере задействовали страницы повышенной плотности на 16 тысяч слов, но по какой-то причине в IOP оставили страницы на 8 тысяч слов; в результате получилось 102 тысячи слов на шестнадцати страницах, а не 128 тысяч, как можно было ожидать. (См. схемы из Space Shuttle System Handbook.)
Основная часть информации об AP-101C взята из брошюры IBM «IBM Advanced System/4 Pi Modular Computer Series Model AP-101C». Набор команд и архитектура AP-101C описаны в документе 1979 года под названием Space Shuttle - Model AP-101 C/M Principles of Operation. Это загадочное название, ведь в шаттле использовался AP-101B, а в B-52 — AP-101C. В документе вскользь упоминается, что он описывает «AP-101C и AP-101, монолитную версию». В документе 1987 года AP-101S with Shuttle Instruction Set говорится, что ПО AP-101S (проапгрейженный компьютер шаттла) совместимо с ПО AP-101C/M. Предполагаю, то IBM прототипировала AP-101C для апгрейда шаттла с полупроводниковой (монолитной) памятью, но решила отказаться от этого подхода.
Представление чисел с плавающей запятой в компьютерах System/4 Pi часто менялось. В современных компьютерах используются двоичные экспоненты, но в System/360 были шестнадцатеричные экспоненты. (Разница в том, что в степень экспоненты возводится 2 или 16). В системах EP было скопировано представление из System/360, но в AP-1 перешли на двоичные экспоненты. Затем AP-101 снова вернулся на экспоненты по основанию 16 (хоть в одном потенциально ошибочном источнике говорится, что в AP-101B применялись двоичные экспоненты). Для поддержки набора команд 1750A требовались двоичные экспоненты, поэтому машины с двойной архитектурой поддерживали оба типа.
Последующие компьютеры System/4 Pi назывались MCS (это расшифровывалось как Modular Computer Series, Modular Computer System или Military Computer Series). В них применялись платы большего размера, называемые страницами MCS (22,9 см × 16,2 см). Страница MCS состояла из двух печатных плат (называющихся MIB, multilayer interconnection board), соединённых друг с другом металлической пластиной для рассеяния тепла. Эта теплопроводящая пластина создавала контакт с теплообменником компьютера при помощи клиновых фиксаторов, через которые и происходила передача тепла от плат. Такая система позволяла охлаждать компьютер воздухом, в то же время изолируя охлаждающий воздух от компонентов.
Мне не удалось найти фотографию AP-101F, но судя по диаграммам, он выглядел в точности как AP-101C и имел то же расположение разъёмов. Это логично, ведь AP-101F разрабатывался как совместимый по соединениям апгрейд.
-
Теневая память на сердечниках AP-101F упоминается в Standards Application to B-1B Avionics Program. Она содержала 128 тысяч слов модульной памяти на сердечниках высокой плотности (HMCM), дублируя 128 тысяч слов активной полупроводниковой памяти (SCM). Такая система сочетала в себе скорость и низкое энергопотребление полупроводниковой памяти с радиационной устойчивостью памяти на магнитных сердечниках.
В компьютере AP-101S шаттла использовался код коррекции ошибок (ECC) для защиты от переключения битов в памяти. У каждого 16-битного полуслова имелось шесть дополнительных битов ECC (Error Correcting Code), что позволяло исправлять смену значений битов, а два инвертированных бита при этом можно было обнаружить, но не исправить. Коррекция ошибок выполнялась чипами AMD Am2960. «Очиститель» памяти сканировал её каждые 1,6789 секунды и исправлял инвертированные биты. Смена значений битов из-за космических лучей случалась довольно часто: за один полёт могло происходить более ста смен значений, но они корректировались до того, как вызовут проблемы (подробности). В одном из случаев один космический луч вызвал 14 ошибок битов; благодаря структуре памяти эти ошибки повлияли на один бит в 14 разных словах, поэтому двойные ошибки битов отсутствовали и все их можно было устранить. Однако регистровая память CPU не была защищена от ошибок; считается, что радиацией были вызваны две неисправности компьютеров.
Память шаттлов имела биты «защиты хранения», чтобы предотвратить перезаписывание кода (а также исполнение данных). Для защиты от повреждения битов защиты хранения использовалась другая методика: у каждого слова было три бита защиты хранения, а значение определял алгоритм голосования.
-
Конвейерная архитектура AP-101S исполняла команду за шесть этапов: трансляция адреса команды, получение команды, декодирование команды и вычисление адреса памяти операнда, трансляция адреса данных, получение операнда из памяти и исполнение команды. Без конвейерной архитектуры для выполнения этих этапов команды потребовалось бы шесть тактов. При наличии конвейера после завершения этапа одной командой этот этап могла начинать следующая команда, поэтому одновременно могли быть активными шесть команд.
Конвейерная архитектура существенно усложнила процессор. Кроме того, из-за различных факторов снизился выигрыш в производительности, поэтому ускорение оказалось ниже, чем теоретический шестикратный предел. Например, ветвление к новому адресу требует перезапуска конвейера с новой командой, из-за чего впустую тратится три такта. Если две команды в конвейере изменяют один регистр, возникает состояние «опасности», требующее задержки в конвейере, чтобы каждая команда получила правильное значение регистра. Этап исполнения некоторых команд занимает больше одного такта, что тоже затормаживает конвейер. Состояние опасности может вызывать самомодифицирующийся код, если программа меняет команды, для которых уже была выполнена упреждающая выборка. В этом случае конвейер необходимо перезапустить для выполнения правильной команды. Конвейер AP-101S подробно описан в Space Shuttle Model AP-101S Principles of Operation with Shuttle Instruction Set.
-
Разработка AP-101S также описана в AP-101S with Shuttle Instruction Set, section 4. «Из AP-101F были использованы CPU, MMU (Memory Management Unit) и прерывания. Микрокод был изменён таким образом, чтобы в AP-101S можно было использовать уже имеющееся ПО шаттла. Страница Timing, страница SDI (Software Development Interface) и шина SIB были устранены. Неиспользуемые цепи MMU были удалены, чтобы обеспечить возможность интеграции в MMU функций таймингов и SDI. Был изменён формат IOP для снижения количества страниц с четырнадцати до семи». Более подробную диаграмму эволюции AP-101S можно увидеть в The new AP101S general-purpose computer (GPC) for the space shuttle. Любопытно, что в этом источнике заявляется о том, что память AP-101S взята из AP-101F, а не из AP-102. Также в этом источнике говорится о промежуточной версии AP-101S/G, которая использовалась во время разработки. По сути, AP-101S/G представлял собой AP-101S с IOP (I/O Processor) шаттла в отдельном корпусе.
Поддерживал ли AP-101S шаттла стандартный набор команд 1705A, а также набор команд MMP? Здесь источники расходятся. AP-101F самолёта B-1B поддерживал оба набора команд, а AP-101S унаследовал эту архитектуру: «Центральный процессор AP-101S оптимизирован под MMP и MIL-STD-1750A» (источник). Согласно The new AP101S general-purpose computer (GPC) for the Space Shuttle, внутреннее управление и микрокод AP-101S поддерживали обе архитектуры, и AP-101S можно было конфигурировать под любую из этих архитектур при помощи сигнала управления в интерфейсе. Утверждается, что загадочный компьютер AP-101SG/1750 мог работать с 1750A. В других источниках говорится, что AP-101S не поддерживал 1750. Я интерпретировал это так: хоть оборудование AP-101S поддерживало оба набора команд, полётная версия AP-101S не содержала микрокода для 1750A из-за ограниченного пространства под микрокод.
-
Изначально в Спейслэб использовались компьютеры CIMSA 125 MS. Название этого компьютера сильно сбивает с толку. Начиная с 1971 года французская компания CII производила популярную линейку 16-битных мини-компьютеров Mitra 15. В 1975 году CII начала выпускать его потомка Mitra 125. В середине 1970-х произошло слияние CII и Honeywell, и было организовано компьютерное подразделение для создания SEMS; мажоритарным акционером стала Thomson. Дочерняя фирма Thomson под названием CIMSA изготовила компьютер для Спейслэб — 125 MS, часть линейки компьютеров CIMSA 15 M, предназначенной для военного применения. Функционально этот компьютер был идентичным Mitra 125 S, который проект «Спейслэб» использовал на земле (подробности). В то же время компания MATRA (не Mitra) занимались в проекте «Спейслэб» управлением командами и данными. Подведём итог: в Спейслэб использовались компьютеры CIMSA 125 MS, что можно подтвердить показанной ниже маркировкой. Это военная версия Mitra 125, производившаяся по договору с MATRA. Иногда этот компьютер называют MATRA 125, но это ошибка.

Компьютер CIMSA 125 MS -
В 1990 году из-за ворса возникли сбои компьютеров, едва не приведшие к полной невозможности проведения наблюдений через ультрафиолетовый телескоп Astro на шаттле «Колумбия» (см. Shuttle Lands in Good Shape, But Puzzle of Lint Remains and STD-35 Space Shuttle Mission Report). Оба терминала Data Display System Спейслэб перегрелись и отказали, это сопровождалось запахом горения и высокими показаниями угарного газа (впрочем, эти показания позже были признаны ошибочными). Сбойные терминалы были частью французской компьютерной системы; не знаю, насколько эта проблема повлияла на решение заменить компьютеры Спейслэб на IBM AP-101SL.
Однако компьютеры IBM не были защищены от проблем с охлаждением, вызванных пылью. В 1984 году один из компьютеров Челленджера перегрелся и отказал при наземном испытании после того, как его воздуховоды забились ворсом (подробности).
-
В AP-101S Memory Management Unit (MMU) был реализован в виде двух страниц. В большинстве компьютеров Memory Management Unit реализует виртуальную память, транслируя виртуальные адреса в физические, однако MMU в AP-101S не был таким совершенным: он увеличивал адресное пространство памяти благодаря переключению банков.
Изначально линейка компьютеров AP-101 использовала 16-битные адреса, позволявшие получать доступ к 16-битным полусловам (не байтам), то есть они могли получать прямой доступ к 64 тысячам полуслов (эквивалентным 128 КБ). Для постоянно растущего ПО такого адресного пространства было недостаточно, поэтому в AP-101B была применена методика переключения банков, позволявшая выполнять доступ к 512 тысячам полуслов, хоть и блоками по 32 тысячи. (AP-101B не мог хранить внутри такого объёма памяти, но к нему можно было подключать внешние модули памяти.) В частности, Processor Status Word содержало 4-битное поле выбора банка для доступа к коду и ещё одно 4-битное поле выбора банка для доступа к данным. Эти поля можно было использовать вместо старшего бита, что увеличивало адресное пространство с 16 бит до 19 бит. В AP-101S эта методика была расширена при помощи сложной схемы Expanded Addressing. При этом подходе каждый индексный регистр имел отдельное 4-битное поле выбора банка. Это позволяло одновременно использовать несколько банков по 32 тысяч полуслов.
Основное предназначение Memory Management Unit заключалось в преобразовании 16-битного адреса памяти в 19-битный физический адрес памяти подстановкой соответствующих битов выбора банка. Также MMU распознавал и обрабатывал сбои памяти. Кроме того, в MMU содержались довольно произвольные функции, например, системный тактовый генератор процессора частотой 40 МГц.
(Не стоит путать MMU (Memory Management Unit) компьютера с ленточными накопителями шаттла MMU (Mass Memory Unit), реактивным ранцем MMU (Manned Maneuvering Unit) для космических прогулок и полупроводниковой памятью CC-2E MMU (Monolithic Memory Unit))
Начиная с передней, в AP-101SL были установлены следующие платы: A4, A5, A6 (CPU3), A7 (CPU2), A8 (CPU1), A9 (прерывания), A10, A11, A12 (ОЗУ), A13 (ОЗУ), A14 (источник питания 12 В) и A15 (источник питания 5 В). На A10 находился генератор 40 МГц, в AP-101S располагавшийся на плате MMU2. Вероятно, A10 и A11 — эквиваленты плат MMU, но без любопытной схемы блоков памяти, присущей AP-101S. A4 может быть платой цифрового ввода-вывода. A5 содержит оптроны и аналоговые компоненты, так что, предположительно, это плата ввода-вывода. Источники питания и платы памяти AP-101S шаттла и AP-101SL Спейслэб выглядят одинаково. Страницы CPU и прерываний очень похожи, возможно, различия связаны с устранением багов при разработке. Исключение составляет сильно отличающаяся часть страницы CPU3. (Платы AP-101S перечислены на стр 18 AP-101S with Shuttle instruction set, поэтому не буду повторять этот список здесь.)
Комментарии (2)

Dr_Faksov
30.04.2026 14:10Меня поразила простая надпись "Внимание, ТЯЖЕЛОЕ! Превышение предельного веса". Кто-то на советской военной технике видел надпись "Осторожно, тяжелое!". Это про отношение к персоналу.
На всякий случай, для прояснения. На этом самом "западе" существуют предельные нормы веса для поднятия в одиночку (24 кг вроде) и вдвоём - 48 соответственно.
kolganoff
Это не индикатор, а многопозиционный переключатель. Мог использоваться для выбора подпрограмм, или для использования с разными версиями железа, на которых устанавливался.