Рождение советской ПРО. Величайший советский компьютер
Монополия Лебедева
Сразу оговоримся, что БЭСМ-6 – большая машина, во всех смыслах этого слова. Потому написать о ней коротко – никак не получится. Из-за обилия материала пришлось разрезать огромную статью на три части, и каждая продолжает предыдущую, так что для полного погружения рекомендуется изучить все последовательно.В 1958 году Лебедев запустил в серию одновременно две версии своей БЭСМ – военную, побыстрее, М-20, и гражданскую, помедленнее – БЭСМ-2. В этот момент он фактически занял легендарное место, аналогичное Калашникову, среди производителей ЭВМ.
Советский Союз любил монополии не хуже загнивающего капитализма, но у нас своеобразным аналогом корпораций были школы различных генеральных конструкторов, принадлежащих различным министерствам.
Машины ИТМиВТ были построены огромным тиражом по меркам СССР – суммарно несколько тысяч экземпляров, из них – несколько сотен суперкомпьютеров. Они стояли везде – в Дубне, в Арзамасе, в МГУ, в ЦУПе, в системе ПРО А-135, в С-300 – да проще перечислить, где их не было.
Школа Лебедева добилась такой монополии, что мы живем с их наследием до сих пор, как с вечным и бессменным АК.
Как ИТМиВТ пришел к такому положению?
К 1958 году у Лебедева было два любимых ученика и наследника – Владимир Андреевич Мельников и Всеволод Сергеевич Бурцев. Второй заслуживает отдельного разговора в связи с «Эльбрусом», пока же рассмотрим судьбу и работы Мельникова.
В 1951 году в МЭИ состоялся первый выпуск студентов по специальности «Математические и счетно-решающие приборы и устройства», причем кафедра была создана в том же году. Выпуск состоялся потому, что студенты уже по факту обучались проектированию аналоговых вычислителей в рамках специальности «Автоматика и телемеханика». О цифровых машинах тогда речи не шло, завкафдрой профессор Г.М. Жданов специализировался, как практически все ученые того поколения, только на аналоговых машинах, в 1956 году вышел его учебник «Математические машины и приборы непрерывного действия».
Несмотря на такой консерватизм, Жданов привлекал к преподаванию и экспертов по архитектуре ЭВМ, в частности, двух выпускников радиотехнического факультета МЭИ – наших старых знакомых Карцева и Матюхина. Прослышав про такое дело, в стороне не остались и многие другие – также известные нам Китов, Рамеев и, естественно, Лебедев, как раз начинавший свой путь к становлению гуру отечественного компьютеростроения.
Как мы уже упоминали, Лебедев был отличным электротехником, изначально он специализировался на задачах энергетики и даже построил в 1945 году аналоговую машину для упрощения расчетов сетей, работая на кафедре релейной защиты и автоматизации энергосистем в МЭИ.
Еще в 1939 году на оппонировании диссертации проф. А.В. Нетушила (будущего декана факультета автоматики и вычислительной техники) Лебедев изучил ее тему «Анализ триггерных элементов быстродействующих счетчиков импульсов» и задумался над довольно необычной архитектурой цифровой вычислительной ячейки.
Защита состоялась только после войны, и через 3 года Лебедев укатил в Киев строить МЭСМ (кстати, Первым секретарем ЦК КП(б) УССР тогда был Хрущев, с этого их дружба и началась). Когда его оттуда обратно в Москву вытащил Лаврентьев (собственно, до этого же он его туда и пригласил, на должность директора целого института, что было сложно достижимо в Москве), у Лебедева, как мы помним, были наброски архитектуры большой машины.
Параллельно с созданием БЭСМ он продолжил преподавать в МЭИ и там набрал среди первого выпуска свою изначальную команду – дипломников, которым раздал задания проектировать узлы своего нового компьютера (раньше дипломы у студентов были куда как интереснее: в качестве выпускной работы разработать узел одной из первых ЭВМ в Европе – это не трансформаторную будку для дачного поселка рассчитать).
Среди самых отличившихся в 1951 году и были В.А. Мельников и В.С. Бурцев, у последнего жизнь вообще была тяжелой, он лишился родителей в войну и относился к Лебедеву, как к отцу. Кроме этой пары, над БЭСМ трудились А.Г. Лаут, И.Д. Визун, А.С. Федоров и Л.А. Орлов.
Вообще, Лебедев имел две очень сильные стороны.
Во-первых, он был первоклассный организатор, сумевший в кратчайшие сроки обзавестись человеческим ресурсом и мастерски приспособить его к работе, в этом с ним мог сравниться разве что Брук.
Во-вторых, и тут с ним сравниться уже не мог никто, несмотря на внешнюю суровость, Лебедев был чрезвычайно обаятельным, спокойным, гибким и тактичным человеком – качества, которых недоставало поперечным Китову, Бруку, Рамееву, Карцеву, Юдицкому – да вообще практически всем отечественным конструкторам, проигравшим школе Лебедева.
Лебедев единственный, кто сумел превратить разработку компьютеров в своеобразный конвейер под своим чутким руководством. Сам он проектировал (как умел, в духе старой школы) базовые логические ячейки и придумывал систему команд (строго классическую в духе 1940-х, да и, по сути, придумал он их только две – одну, использовавшуюся в МЭСМ/БЭСМ/М-20, и вторую для БЭСМ-6), а все остальное делали его ученики, фактически строя машину.
Также он отвечал за чрезвычайно важную часть любой советской разработки – взаимодействие с партократами.
Лебедев был своеобразным Джоббсом СССР – он, как и Королев, умел продавить фактически что угодно, где угодно, на всех уровнях советской системы, но, в отличие от Королева, так красиво и тонко, что до самой смерти не нажил себе (в отличие от всех прочих конструкторов) ни одного кровника, и его любили и уважали даже те, кто проиграл его школе.
В результате к концу 1951 года основу лаборатории № 1 составили выпускники МЭИ, к 1953 году дособиравшие Лебедеву БЭСМ. Мельников занимался разработкой устройства управления и до того удачно, что, когда дошло до сборки БЭСМ-2, он стал ее де факто главным конструктором, равно как и конструктором БЭСМ-6.
О начальных этапах разработки БЭСМ-6 неизвестно почти ничего (непонятно даже почему 6 и куда дели 5), толковые упоминания встречаются только с 1964 года.
Пролить каплю света поможет изучение сравнимых западных архитектур.
IBM 7030 Stretch
В 1959 году выходит чрезвычайно мощный серийный компьютер для научных расчетов IBM 7090 и появляются два первых настоящих суперкомпьютера – IBM 7030 Stretch и Remington Rand UNIVAC LARC. LARC особого следа в истории не оставил, а вот IBM 7030 стал настоящей иконой.
IBM 7030 The Stretch Data Processing System и то, что осталось от него сейчас в музее в Маунтин-Вью – две чудовищные инженерные консоли для управления и отладки и собственно консоль математика-программиста, управляющего машиной. Стандартные модульные карты, из которых собирался 7030 – в руках тройной ширины, в стойке – одинарной. Снизу – пример программы матричного умножения (фото – архивы https://www.ibm.com и музея https://www.computerhistory.org)
Прежде всего, он стал первым, достигшим производительности свыше миллиона операций в секунду – 1,2 MIPS на 1959 год сумасшедшая цифра; первым, использовавшим систему SMS – стандартных модульных карт; первым, при разработке которого были открыты и применены основные принципы иерархического проектирования аппаратного обеспечения, начиная от разработки оптимальной системы команд и заканчивая реализацией отдельных модулей на стандартных ячейках.
Stretch стал первым серийным компьютером, использовавшим стандартные модули ферритовой памяти, причем с охлаждением погружением в масло – еще одна инновация. Кроме этого, Stretch мог читать и писать в память в шесть параллельных потоков, что позволяло добиться скорости работы с ОЗУ на уровне 2 MIPS (да-да, в те далекие времена возможна была ситуация, когда память была быстрее процессора).
Восьмибитовый байт и разрядность машинных слов 8/32/64 бита, максимально удобная и ставшая стандартом до настоящего времени (в отличие от изуверских отечественных машинных слов разрядностью от 22 до 50 байт, зачастую еще и не кратных размерам адресуемых ячеек памяти), тоже появились именно в нем, причем процессор Stretch был полностью 64-битным задолго до Intel Core. Кроме этого, компьютер имел аппаратную поддержку работы с битовыми полями, что позволяло работать с типами данных переменной длины.
Stretch поддерживал вещественную арифметику, целочисленную арифметику и алфавитно-цифровые символы. Также в нем было впервые реализовано мультипрограммирование и в рамках этого защита памяти и стандартные прерывания.
Stretch первым в мире был собран на схемах эмиттерно-связной логики, сверхмощной и требующей хорошего охлаждения, но максимально быстрой, ECL-логика в разных ипостасях стала стандартом аппаратного обеспечения суперкомпьютеров вплоть до 1980-х годов.
Первое использование трехступенчатого стандартного конвейера в процессоре (классические шаги Fetch, Decode, Execute). О конвейере мы еще поговорим отдельно ниже. Впервые в мире применена максимально гибкая и эффективная (хоть и недешевая) универсальная реализация работы с периферийными устройствами, ставшая основной фишкой мэйнфреймов до настоящего времени.
Специализированный сопроцессор обмена данными (ESC – exchange specialized computer, да, тогда еще не было четкого терминологического разграничения, в LARC, например, каждый из двух процессоров назывался «компьютер», а I/O подсистема называлась «процессор») выполнял роль главного коммутатора, обеспечивая связь между 32 каналами ввода-вывода и ОЗУ, разгружая тем самым центральный процессор. Эта схема была настолько эффективной, что перекочевала в IBM S/360 и используется до сих пор в больших компьютерах.
Кроме того, ценность Stretch заключалась в том, что он был целиком совместим с колоссальным списком оборудования от IBM – от магнитных накопителей всех типов до печатных машинок и перфораторов, причем благодаря канальному сопроцессору все это хозяйство всегда работало параллельно на полной скорости, а подключалось простым втыканием нужного кабеля.
Советские инженеры, настрадавшиеся при попытках впихнуть невместимое (так как почти каждая нетривиальная коммутация большого компьютера с периферией требовала чудовищных костылей), заплакали бы от облегчения, случись им настраивать Stretch.
Система команд Stretch была невероятно прогрессивной, многие идеи, открытые в процессе разработки Джином Амдалом (Gene Amdahl), Стивом Данвиллом (Stephen Dunwell), Фредериком Бруксом (Fred Brooks) и Джоном Коком (John Cocke), буквально используются в современных микропроцессорах и стали стандартом с 1960-х годов: сначала для мощных систем, потом повсеместно. Среди них предварительное декодирование команд и предвыборка операндов (первая в истории форма спекулятивного выполнения на основе предсказания ветвлений), перезагрузка конвейера после ошибочных переходов, развитые индексные регистры и многое другое.
Блок декодирования и предсказания в процессоре Stretch фактически представлял собой отдельный компьютер с собственным конвейером. За счет этого, формально оставаясь однопроцессорным, Stretch требовал для матричного умножения всего 4 инструкции. Кроме всего прочего – машина получилась компактной, будучи в 35 раз мощнее, чем IBM 704, Stretch требовал такого же маш. зала в 185 кв. м. и потреблял примерно такое же количество энергии.
В общем, расписывать достоинства этой машины можно долго, самое главное – все это 1959 год, и все это описано в открытых источниках того времени, равно как и конструкция UNIVAC LARC.
Самая интересная часть истории
А теперь самая интересная часть истории – Лебедев в составе группы советских специалистов в августе 1959 года прибывает в США в компанию IBM для изучения передового опыта компьютеростроения. За две недели советская делегация посетила MIT и заводы IBM, ознакомилась с научным компьютером 7090 и в целом с организацией производства и взаимодействия «компьютерная фирма – заказчики из университетов». Скорее всего, именно в этот момент оформилась сверхидея – повторить такое же в СССР. Создать единую для научных центров архитектуру мощного компьютера.
Роль IBM должен был сыграть ИТМиВТ, а роль Амдалла и Брукса – Лебедев с Мельниковым. Осталось подобрать машину-прототип, роль которой должна была сыграть будущая БЭСМ-6.
Кстати, побывал Лебедев много где – и в Германии, и даже в 1965 году в Японии, а его протеже Мельников – в Индии и Китае, причем с Индией ничего не срослось, а вот в Китае он помогал осваивать в производстве китайский клон БЭСМ-2.
Ближайший конкурент IBM 7030 – UNIVAC Livermore Atomic Research Computer (LARC), на фото в Ливерморской лаборатории его макет с одним из отцов машины – Джоном Эккертом (John Adam Presper Eckert), Гарольд Браун (Harold Brown) и Эдвард Теллер (Edward Teller) работают над термоядерным оружием, одна из коробок, в которой доставляли детали машины, всего было 18 грузовиков таких, компьютер собирали прямо на месте в лаборатории. LARC был первым суперкомпьютером в мире в плане самой идеи, концепция создать сверхвычислитель появилась у IBM именно под его влиянием, но закончен он был позже, чем 7030, и был более медленным, порядка 1 MIPS, а также куда более дорогим, построено всего две машины. LARC был очень странным с архитектурной точки зрения, он использовал 60-битные команды, двоично-десятичное кодирование, при этом был прогрессивным регистровым (до 99 регистров общего назначения), должен был стать двухпроцессорным с общей ОЗУ (по факту нормально работал только в однопроцессорной конфигурации), имел отдельный процессор I/O и уникальную фишку – Electronic Page Recorder, позволявший выводить текст и графику на 35-мм фотопленку для создания слайдов. Для борьбы с паразитными токами весь корпус машины был покрыт изнутри золотом, а контакты на самом шасси – серебром. Фото из архивов Ливермора, http://www.vintchip.com/ и https://www.computerhistory.org
О клонировании Stretch речи не шло – машина была чудовищно сложной, такое советская промышленность не потянула бы. Кроме этого, многие детали реализации были скрыты, да и сама по себе она занимала немного не ту нишу, на которую нацелился Лебедев и которая реально была нужна Советам.
СССР отчаянно нуждался в мощном (сильно мощнее всего, что было в НИИ на тот момент), универсальном, недорогом (относительно) научном компьютере, который можно было бы массово воспроизводить. Точек его применения было множество – Институт Курчатова, МГУ, Бауманка, Дубна, Новосибирск, Арзамас и так далее, все, связанные с ядерными исследованиями. БЭСМ-2 и М-20 не тянули – все научные центры требовали аналог 7090, машину со скоростью не менее 200 KIPS.
Под это дело Лебедев и пробил командировку в США, все понимали, что нужно изучить передовой опыт.
С этой целью он, любимец Академии наук, министров и Хрущева, выбивал фонды и собирал команду. Настроение было радужное, все были на подъеме – вот-вот СССР узнает секреты эффективной разработки научных ЭВМ и создаст, наконец, свою такую же, вместо зоопарка «Минсков», «Наири», «Уралов» и прочих, несовместимых друг с другом, выпущенных малым тиражом и недостаточно мощных.
Лебедев в каком-то смысле действительно хотел стать Калашниковым от ЭВМ – создать эталонную реализацию, символ советской мощи, которую можно штамповать сотнями.
Справился ли он со своей задачей?
Не станет спойлером сказать, что не вполне.
Так почему же и в чем Лебедев провалился и откуда возник миф о БЭСМ-6?
Для ответа на это вопрос нужно для начала пойти еще дальше на Запад.
Итак, в 1959 году Лебедев вдохновился начать разработку собственной архитектуры – не просто большой машины, а научной супермашины, построенной совсем по иным принципам, нежели МЭСМ и БЭСМ, выглядевшие на фоне чудовищного 7030 калькуляторами из сельпо.
Кто возглавит разработку – сомнений не было, конечно, Мельников, отлично зарекомендовавший себя по БЭСМ и БЭСМ-2.
Кто будет разрабатывать узлы – было тоже очевидно, Мельниковская же группа.
Лебедев, как всегда, брал на себя организационные вопросы, выбивание фондов и общее сопровождение по партийной линии, а также изучение мировых образцов компьютеростроения и разработку системы команд новой машины. А изучать там было что – надо было определиться с прототипом для копирования.
В 1946 году ВМФ США создали небольшую компанию ERA (Engineering Research Associates) из инженеров, работавших в годы войны над дешифраторами японских морских кодов. Компания разработала несколько гражданских машин, включая ERA 1103, но Конгресс осудил Флот за коммерческую деятельность, и в 1952 году компания была продана Remington Rand. Затем Sperry (уже владевшая к тому моменту UNIVAC) в свою очередь купила Remington и выделила компьютерное подразделение Sperry UNIVAC, выпустив переделанную ERA как конкурента IBM 704 – UNIVAC 1103.
CDC 1604
Компания Sperry была, очевидно, нацелена на создание массовых коммерческих мэйнфреймов, твердо желая стать вторым после IBM игроком на этом рынке, и в 1957 году группе бывших военных инженеров это надоело. Уильям Норрис (William Norris), Роберт Перкинс (Robert Perkins), Уильям Кей (William R. Keye), Говард Шекелс (Howard Shekels), Роберт Киш (Robert Kisch) и Сеймур Роджер Крэй (Seymour Roger Cray) покинули Sperry, скинулись по 5 000 долларов и зарегистрировали свою компанию, ставшую легендой – Control Data Corporation.
Главным инженером стал Крэй – один из величайших компьютерных архитекторов в истории, человек, которого без иронии называют Father of all Supercomputers.
Впрочем, первой его работой была куда более простая машина – CDC 1604. Созданный как научный и коммерческий компьютер, в условиях безденежья (начинающая компания не имела средств даже на нормальные транзисторы, Крэй собирал прототип из бракованных, какие только мог приобрести по бросовой цене в местных магазинах радиодеталей), он сразу же обнажил всю невероятную силу гения Крэя.
CDC 1604, будучи в несколько раз дешевле монструозного научного IBM 7090, оказался быстрее его, на какое-то время став самым мощным компьютером общего назначения на планете с производительностью порядка 200 KIPS.
CDC 1604 имел типичную для мощных американских машин 1950-х архитектуру с сумматором, а не более прогрессивную регистрами общего назначения (были лишь собственно регистр-сумматор, или аккумулятор, как его иногда называют, 6 индексных регистров, программный счетчик и вспомогательный арифметический регистр) и, соответственно, был одноадресным, 48-битное машинное слово содержало две 24-битные инструкции. Машина имела целочисленную и вещественную арифметику.
Интересной особенностью была индикация работы. Старшие три бита аккумулятора могли считываться ЦАП и воспроизводиться через динамик, посредством лампового усилителя, встроенного в консоль. Эту схему можно было запрограммировать на разнообразные звуковые эффекты и предупреждения оператору машины. Тот, кто хорошо знал архитектуру CDC 1604 и исполняемую программу, мог сразу по звуку понять, в каком месте произошла ошибка.
Итак, прототип был найден.
CDC 1604 был дешевле и быстрее IBM 7090, его архитектура была проще, и за год он разошелся по американским лабораториям колоссальным тиражом. Это означало, что уже к 1961 году под него был написан огромный массив программ на Fortran, среди которых наиболее ценным признавался вожделенный софт для атомщиков.
Спереть программы куда проще, чем железо, поэтому цель – добиться бинарной совместимости с CDC 1604 стояла с самого начала.
Даже в СССР понимали, что софт важнее железа, компьютеры можно разработать, а вот где взять миллионы человеко-часов на написание ПО к ним?
В 1960-е должна была случиться революция – должен был появиться советский компьютер с количеством прикладных программ, не уступающим американским (и что с того, что их предполагалось спиратить).
В принципе, такой план имел бы шанс на успех, но Крэй подвел.
В разгар подготовки клонирования CDC 1604, 22 августа 1963 компания Control Data объявила о модели CDC 6600, одной из самых великих машин в истории.
IBM была посрамлена, они еще не закончили поставки своего Stretch всем клиентам, а компьютер Крэя уже отправил его в каменный век информатики. По традиции он был куда компактнее и дешевле монстра IBM и быстрее его в 3,5 раза – более 3 megaFLOPS.
Первый в истории суперскалярный процессор, 10 периферийных сопроцессоров, фреоновое охлаждение (тоже впервые в мире) компактнейших плат, собранных по фирменной технологии cordwood на новейших планарных кремниевых транзисторах (400 000 штук!), продвинутая многозадачная операционная система SIPROS (Simultaneous Processing Operating System) – вот лишь немногие из инноваций этой машины. Первым покупателем компьютера были Комиссия по атомной энергии и Бюро погоды, а к 1967 году 63 CDC 6600 находились в руках элитных клиентов и стали стержнем научных исследований того времени.
«Атлант»
Одновременно с этим в Великобритании появляется третий иконический суперкомпьютер того времени – знаменитый Atlas («Атлант»), разработанный и произведенный совместно Манчестерским университетом, колыбелью всех британских computer science, и компаниями Ferranti и Plessey по заказу правительства для использования в том же нелегком деле, что и CDС и БЭСМ – создании ядерного оружия.
Atlas был построен на довольно древних германиевых биполярных транзисторах, но имел невероятно прогрессивную архитектуру, став третьим столпом современных машин, наряду с IBM 7030 Stretch и CDC 6600. Всего было изготовлено 3 оригинальных Atlas и еще два модернизированных Atlas 2 Titan.
Atlas использовал 2-ю популярную схему машинных слов, которая применялась и в CDC – формат 12/24/48 бит, вместо стандарта IBM 8/16/32 бита (победил, как мы знаем, более удобный IBM). 48-битное машинное слово могло содержать одно число с плавающей точкой, одну инструкцию, два 24-битных адреса или целых числа со знаком, либо восемь 6-битных символов.
Среди инноваций Atlas был супервизор (три собственных регистра для счетчика команд) и виртуальная память (полноценная), работа с внешними устройствами была организована очень оригинально, через отдельные регистры для связи с I/O, машина имела невероятное по тем временам количество индексных регистров – аж 128. Кроме этого, процессор Atlas имел уникальный асинхронный конвейер, работающий по готовности, а не тактуемый, как обычно.
Из-за этого оценить его производительность было сложно, но по тестам она примерно соответствовала Stretch (Atlas складывал два числа с плавающей запятой примерно за 1,59 мкс, а Stretch за 1,38–1,5 мкс). Только в 1964 году, когда появился CDC 6600, Atlas был значительно превзойден, причем Крэй позже признал, что именно описание прототипа этой машины натолкнуло его на идеи, позволившие закончить 6600 намного раньше изначально задуманного срока.
Также уникальной частью архитектуры стали т. н. экстракоды – то, что сейчас назвали бы прошивкой, именно они позволили построить операционную систему, превосходящую по скорости работы и функционалу машины IBM. Экстракоды использовались для вызова математических процедур, которые было бы слишком неэффективно реализовывать аппаратно, например, синус, логарифм и квадратный корень, около 150 экстракодов отвечали за функции супервизора, что позволило значительно поднять производительность и безопасность работы с ОС.
Три источника и три составные части архитектуры БЭСМ-6 плюс уникальное видение Лебедевым деталей их реализации. На фото – суровый Лебедев и вечно улыбающиеся Сэймур Крэй и Том Килбурн (фото http://www.histoire.info.online.fr, http://www.besm-6.su, http://www.chilton-computing.org.uk).
Британские ученые оказались настолько дружелюбными, что сами посетили СССР в 1963 году и даже прочитали несколько закрытых лекций в ИТМиВТ по машине Atlas, по их результатам в том же году была выпущена небольшая брошюра. В результате работа над БЭСМ-6 пошла вразнос, как лебедь, рак и щука. Ее начали передирать с CDC 1604 с целью воспользоваться огромной библиотекой ПО, и доказательством этому служат многие архитектурные особенности изначального проекта, вошедшие в итоговую версию.
В обоих случаях элементная база представляла собой транзисторы (что нормально для 1960 года, но максимально странно для 1968), адресация была одноадресной, разрядность слова 48 бит, длина команды 24 бита, в слове упаковано 2 команды, разрядность сумматора тоже 48 бит, разрядность адреса 15 бит, регистров общего назначения 1 + 1 регистр-аккумулятор, аккумуляторная схема сложения, даже объем оперативной памяти совпадал до бита – 32.768 слов.
Естественно, все это не было случайным совпадением – архитектуру явно начинали проектировать, ориентируясь на CDC 1604. Что поразительно – размер монтажных плат БЭСМ-6 был дюймовым (конкретно 6х8 дюйма), и вообще, метрическими были только метизы. Сама архитектура ТЭЗ (типовой элемент замены, так у нас называли элементарные модули, из которых собиралась машина) тоже была разработана явно с оглядкой на cordwood-платы, хоть и с примерно в 6 раз меньшей плотностью монтажа. В СССР с транзисторами было сложно, поэтому сама логика была диодной, а транзисторы использовались только для усиления и инверсии сигнала. В результате их потребовалось всего 60 000, зато диодов – 180 000 (CDC был собран на 400 000 транзисторов).
Дизайн модулей БЭСМ-6 был частично позаимствован у CDC 6600 при шестикратно меньшей плотности монтажа. Размер платы CDC 6600 – 3" x 2,5" x 0,75", упаковка cordwood. Размер платы БЭСМ-6 6" x 8" x 0,5". Фото из брошюры «CDC Brochure – The 6600 Supercomputer» и https://www.1500py470.livejournal.com)
Сеймур Крэй обладал удивительным талантом находить самые красивые из эффективных инженерных решений. Его машины были не только быстрыми, но и обладали очень мощной харизмой и эстетикой, при этом были невероятно компактны. Крест центрального процессора, устройства управления и ОЗУ CDC 6600 был всего 4 метра в размахе и 2 в высоту, удобно открывался, давая доступ ко всем платам, и еще и охлаждался фреоном! Космический же вид консоли с двумя глазками-мониторами вообще вошел в золотой фонд промышленного дизайна. Фото из брошюры «CDC Brochure – The 6600 Supercomputer» и https://ru.wikipedia.org
А дальше Лебедева понесло, виной чему были как его фантазия, так и Atlas и CDC 6600, появившиеся в процессе создания БЭСМ-6.
От первого он возжелал экстракоды и виртуальную память, от второго – суперскалярный конвейерный процессор с ортогональной системой команд. Многие технические решения были и отвергнуты – например, идея канальной работы с периферией, реально удачная в машинах IBM. С 1960 по 1963 годы шли метания – начнем одну машину, продолжим вторую, добавим фишки третьей.
В результате от изначального проекта CDC 1604 остались рожки да ножки.
Лебедев выкинул из машины целочисленную арифметику, так как не смог добиться стабильной работы целочисленно-вещественного АЛУ, изменил формат вещественных чисел (1 бит знак, 11 бит порядок, 36 бит мантисса у CDC 1604, 7 бит порядок, 1 бит знак, 40 бит мантисса у БЭСМ-6) и структуру команды (6 бит опкод, 3 бита индекс или условие перехода, 15 бит адрес или операнд у CDC 1604 и два возможных варианта: 4 бита индексный регистр, 6 бит опкод, 12 бит адрес/операнд либо 4 бита индексный регистр, 4 бита опкод, 15 бит адрес/операнд у БЭСМ-6). Из-за попытки организовать виртуальную память, было расширено количество индексных регистров с 6 до 15.
Была полностью изменена система команд.
У CDC 1604 были 11 целочисленных команд и 4 вещественных, 9 команд сдвига, 8 логических команд, 15 команд работы с памятью, 6 команд индексной арифметики, 4 команды переходов и 3 I/O команды, всего 57 штук. У БЭСМ-6 имелись 12 вещественных команд, 2 команды сдвига, 7 логических команд, 5 команд работы с памятью, 8 команд индексной арифметики, 7 команд переходов и одна (!) команда I/O, всего 41 штука.
Интересной особенностью БЭСМ-6 были специальные битовые команды в т. ч. «BЫЧИCЛEHИE ЧИCЛA EДИHИЦ» и «BЫЧИCЛEHИE HOMEPA CTAPШEЙ EДИHИЦЫ». Эти команды были напрямую содраны с CDC 6600 и представляют собой т. н. «NSA Instruction» – команды, добавленные по просьбе АНБ в процессоры суперкомпьютеров для удобства криптографов.
Например, вычисление числа единиц – это команда popcount, скажем, popcount (10100110) = 4. Впервые она появилась в процессоре IBM Stretch и затем была встроена во все старшие машины CDC и Cray до 1980-х годов и конца эпохи холодной войны и классических суперкомпьютеров.
Зачем она нужна?
Подсчитывать расстояние Хэмминга от нулевой строки в двоичной кодировке. АНБ проводило криптоанализ перехваченных сообщений, а поскольку CDC 6600 имел 60-битные слова, одного слова было достаточно для хранения большинства интересующих их алфавитов.
Криптоаналитики разделяли сообщение на строки, помечали единичным битом каждый уникальный символ в строке, с помощью popcount считали расстояние Хэмминга и использовали как хэш для дальнейшего криптоанализа. К сожалению, неизвестно, использовалась ли хоть одна БЭСМ-6 ГРУ или КГБ, автор в этом сильно сомневается и думает, что эти инструкции были передраны, скорее, в презентационных целях – типа смотрите, наша машина может и такое!
Инструкции «СБОРКА» и «РАЗБОРКА» – это выборка определенных битов по маске, прикрученные специально для организации хоть какого-то вменяемого ввода-вывода печатных символов, как упоминают старожилы, например, этими командами делалось транспонирование матриц 80х12 для работы с перфокартами. Преобразование же слова в текстовое восьмеричное представление делалась разборкой на группы из трех бит в каждый байт, в кодировке ГОСТ так сразу получались коды цифр. Сборкой же текстовое представление восьмеричных чисел преобразовывалось в собственно число.
Естественно, на советской элементной базе ни Atlas ни CDC собрать было нельзя, пришлось делать кучу заплаток и костылей. Об этом с гордостью (превозмогли!) рассказывает один из проектировщиков В.Н. Лаут:
…интегральных схем в то время еще не было.
[Здесь, к сожалению, Лаут лукавит, т. к. они тогда уже не просто были, но на них собирали серийные ЭВМ, в т. ч. и в СССР, просто Лебедев не счел нужным по каким-то своим философским причинам их использовать].
Промышленность выпускала дискретные германиевые диоды и триоды с весьма плохими характеристиками.
[Опять-таки, были и весьма приличные кремниевые, но…]
Можно ли на них было разработать элементы для высокопроизводительной машины? К этому времени в специальной литературе появилось много сообщений об использовании в качестве основы для схем быстродействующей логики туннельных диодов.
Эти диоды имели малые времена переключения, во много раз лучшие, чем у транзисторов. Однако элементы на туннельных диодах получились с плохой нагрузочной способностью, что приводило к усложнению схем машины, и довольно быстро мы от них отказались. Трудность с использованием транзисторов заключалась в том, что в режиме насыщения они работали очень медленно, а логические элементы с ненасыщенными триодами получались сложными из-за необходимости согласования уровней входных и выходных сигналов. И не только сложными, но и ненадежными. Некоторое время мы не видели выхода из тупика. Но тут возникла абсолютно новая идея, никогда и нигде ранее не описанная, по крайней мере, для элементов вычислительной техники.
По-моему, первым ее высказал А.А. Соколов. Суть идеи заключалась в том, чтобы в известный элемент «токовый переключатель» ввести автономный источник питания, гальванически не связанный с другими цепями питания. Например, для этой цели можно было бы использовать миниатюрную батарейку от электронных часов.
Включение батарейки между коллектором транзистора и коллекторной нагрузкой (резистором) делало переключатель элементом с согласованными уровнями входных и выходных сигналов, причем к автономному источнику питания не предъявлялось особенно сложных требований. Конечно, батарейку ставить было нельзя, так как она со временем разрядится, поэтому в реальной схеме ее заменил крошечный выпрямитель, состоящий из миниатюрного трансформатора на ферритовом кольце, двух полупроводниковых диодов и конденсатора.
Назвали эти выпрямители «подвешенными источниками питания» (ПИП). Парафазные выходы переключателей тока, снабженные эмиттерными повторителями, могли работать на входы логических схем «И», «ИЛИ». Вырисовывалась такая схемотехника: пассивная комбинаторная логика на диодно-резисторных компонентах
Эти диоды имели малые времена переключения, во много раз лучшие, чем у транзисторов. Однако элементы на туннельных диодах получились с плохой нагрузочной способностью, что приводило к усложнению схем машины, и довольно быстро мы от них отказались. Трудность с использованием транзисторов заключалась в том, что в режиме насыщения они работали очень медленно, а логические элементы с ненасыщенными триодами получались сложными из-за необходимости согласования уровней входных и выходных сигналов. И не только сложными, но и ненадежными. Некоторое время мы не видели выхода из тупика. Но тут возникла абсолютно новая идея, никогда и нигде ранее не описанная, по крайней мере, для элементов вычислительной техники.
По-моему, первым ее высказал А.А. Соколов. Суть идеи заключалась в том, чтобы в известный элемент «токовый переключатель» ввести автономный источник питания, гальванически не связанный с другими цепями питания. Например, для этой цели можно было бы использовать миниатюрную батарейку от электронных часов.
Включение батарейки между коллектором транзистора и коллекторной нагрузкой (резистором) делало переключатель элементом с согласованными уровнями входных и выходных сигналов, причем к автономному источнику питания не предъявлялось особенно сложных требований. Конечно, батарейку ставить было нельзя, так как она со временем разрядится, поэтому в реальной схеме ее заменил крошечный выпрямитель, состоящий из миниатюрного трансформатора на ферритовом кольце, двух полупроводниковых диодов и конденсатора.
Назвали эти выпрямители «подвешенными источниками питания» (ПИП). Парафазные выходы переключателей тока, снабженные эмиттерными повторителями, могли работать на входы логических схем «И», «ИЛИ». Вырисовывалась такая схемотехника: пассивная комбинаторная логика на диодно-резисторных компонентах
[Весь мир к тому времени перешел на TTL и ECL.]
подключалась к входам усилительных активных элементов, выходы которых, в свою очередь, соединялись с входами комбинаторных схем и т. д. Таким образом, электронное тело машины выглядело как слоеный пирог: слои диодных логических схем перемежались слоями усилителей на переключателях тока.
В общем, элементная база первой версии БЭСМ-6, как мы видим, была чудовищна даже по тем временам (и даже по меркам СССР, что поражает еще больше!), но тем не менее, как обычно, у нас есть хороший повод гордиться тем, как виртуозно мы преодолеваем нами самими же созданные трудности.
Китайская грамота Лебедева в описании структуры БЭСМ-6. Все схемы машины были выполнены в таком виде, собственными логическими мнемониками Лебедева. Приемка пыталась заставить его переписать это все в человеческом виде, но он категорически отказался. Справа – оригинальный листок из блокнота Крэя с описанием структуры Cray-1 (фото https://www.computerhistory.org)
Результат
Результатом всего этого стало появление настоящего мутанта, внешне (то есть по разрядности шин, длине машинного слова и т. п.) похожего на CDC 1604, но собранного с элементами Atlas и CDC 6600, приправленной щепоткой уникального видения самого Лебедева и положенного на аппаратную реализацию, извращенную даже по меркам СССР.
В 1963 студенты начинают макетировать узлы будущей БЭСМ-6, для начала отрабатывая технологию работы с транзисторами, о которой в ИТМиВТ тогда особо понятия не имели. Заканчивается все тем, что, по воспоминаниям младшего ученика Лебедева (калибром поменьше Мельникова) А.А. Грызлова, они просто реализовали на транзисторах узлы от М-20, называя получившееся творение БЭСМ-3.
На удивление, как мы уже говорили, его почин поддержал начальник группы и добился запуска в мини-серию, так появляется побочный росток на древе ИТМиВТ – БЭСМ-4, к которой Лебедев не имел отношения. По воспоминаниям, сам Лебедев был не очень доволен таким своеволием, на БЭСМ-4 ему было наплевать, все его внимание и силы поглощал проект БЭСМ-6, но мешать молодежи он не стал и даже нажал на пару рычагов в партии, позволивших запустить четверку в небольшую серию с рекордной скоростью.
В 1964 году в институте уже был собран макетный образец БЭСМ-6, имеющий всего один куб памяти, в логических элементах использовались более медленные транзисторы. В 1966 году опытный образец, имевший оперативную память половинной емкости (4 куба вместо 8), но на современных транзисторах и диодах, работающий на проектной частоте синхронизации, уже был в основном отлажен, и осенью на нем были проведены заводские испытания, а в мае 1967 года завершились государственные испытания.
БЭСМ-6 выпускалась серийно с 1968 по 1987 год, всего было выпущено 355 машин, машина в Дубне была выключена в 1992 году, предпоследняя (в КБ Микояна) была выключена и демонтирована в 1995 году, а вот самая последняя…
БЭСМ-6 № 345
БЭСМ-6 № 345 была изготовлена в 1980 году, в 1981 поставлена на учет в в/ч 87286 (г. Сосновый Бор Ленинградской обл.), в 1982 году налажена бригадой московского специализированного шефмонтажного управления, в 1983 году введена в качестве центрального компьютера комплексного полномасштабного тренажера «Диана-Барс», разработанного специалистами НИТИ им. А.П. Александрова. До 1986 года продолжалась ее отладка.
Обратите внимание, кстати, на типично советский вальяжный подход к инсталляциям, многое говорящий о качестве архитектуры и комплектации. Установка машины заняла год, еще год заняла неспешная отладка софта (при том, что к 1980-м опыт и софт был уже наработаны 10 годами!), еще три года провозились с тренажером, в итоге машина смогла посчитать что-то полезное лишь через шесть (!) лет после своего выпуска.
И это считалось штатным режимом инсталляций! В то же самое время проклятый капитализм загнил до такой стадии, что объявление о задержке установки той или иной машины хотя бы на пару месяцев становилось поводом разорвать контракт с большими штрафами.
Показательна в этом плане судьба Cray-3, он должен был быть куплен Ливермором в 1991 году, но лаборатория сразу же отозвала контракт, как только узнала о задержке в поставке, причем неисполнение договора так ударило по репутации Крэя, что свой суперкомпьютер он смог продать только Национальному центру атмосферных исследований США (NCAR), военные и лаборатории отказались с ним работать, несмотря на прошлые заслуги.
В 1993 Cray-3 был установлен в NCAR, но за год так и не удалось добиться его стабильной работы, после чего он был демонтирован, а Cray Research разорилась.
В СССР же установка и отладка даже серийной и производящейся уже к тому моменту 13 лет ЭВМ спокойно могла занять лет пять неспешных допиливаний по месту, и это воспринималось как абсолютная норма – Союз, похоже, никуда не спешил.
Из разряда «очевидное-невероятное». Уникальные фото последней полностью живой БЭСМ-6 № 345 в в/ч 87286 (фото https://ramlamyammambam.livejournal.com)
Возвращаясь к БЭСМ-6 № 345, запущенная таки в 1986 году она отработала… до 2008 года!
Это что-то за гранью добра, зла и здравого смысла. Она использовалась в качестве компьютера для тренажера экипажей подлодок, причем последние 10 лет работала буквально на честном непечатном слове, персонал всеми силами поддерживал музейную древность в рабочем состоянии далеко за пределами ее официального срока эксплуатации.
Дальнейшая судьба раритета неизвестна – возможно, БЭСМ-6 Политехнического музея это она, возможно, старушка закончила свой век в печи для металлолома.
При этом обратите внимание на магию Лебедева – от разработки самой БЭСМ-6 до серии прошло всего 3 года, причем чисто по объективным причинам, возня с документацией на машину, отладка и т. п., тогда как Карцева партийные чиновники гоняли из кабинета в кабинет шесть лет и довели его до инфаркта, а после его смерти сотрудникам потребовалось еще 1,5 года, чтобы додавить выпуск М-13!
Итог
Ну и наконец, животрепещущий вопрос, так получилось ли?
Получилось ли создать нишевый компьютер, закрывающий потребности советских НИИ? Эквивалент CDC 1604, на котором будут работать все нужные программы?
Увы, нет, тут Лебедев все запорол.
Попытка ориентироваться на три источника и три составные части архитектуры сразу, привела к неудаче – БЭСМ-6 потеряла совместимость с CDC 1604 достаточно, чтобы гордо считаться отдельной архитектурой и достаточно для того, чтобы на ней перестали запускаться вожделенные миллионы строк американского кода, ради которого все и затевалось.
Лебедев перемудрил, и в результате добиться бинарной совместимости не удалось – программы на Fortran, отлично компилировавшиеся и работавшие на CDC, выпадали на БЭСМ-6 в самых неожиданных местах. По исправлению их даже стали писать целые учебники и монографии (например, Боровин Г.К., Комаров М.М., Ярошевский В.С. «Ошибки-ловушки при программировании на Фортране»), но ценное время утекало, задачи стояли.
В итоге колоссальный проект закончился со смешанными чувствами, еще на этапе испытаний в 1966 году.
Остался вопрос – а что теперь делать?
Последствия были таковы.
Во-первых, было твердо решено более не извращаться, а просто и аккуратно копировать западные архитектуры целиком, дабы добиться бинарной совместимости. Сам Лебедев, к чести своей, осознал промах и более не рвался ничего проектировать и, более того, на заседании АН поддерживал идею заимствования S/360 (об этом нужно рассказывать отдельно).
Во-вторых, Мельникова к самостоятельным разработкам более не допускали. Проект БЭСМ-10 даже не начинался, сохранились только описания и черновики, а «Электроника СС БИС», за которую он отвечал до самой смерти, должна была стать клоном Cray-1.
В-третьих, в самый главный ядерный центр страны, Дубну, надо было срочно поставить что-то, работающее с американским софтом, в итоге подключилась дипломатия и пошли попытки купить или украсть, вывезя через нейтральные страны типа Швейцарии, настоящий CDC 1604, а еще лучше – CDC 6600. Попытки увенчались успехом лишь частично.
CDC 1604 использовался ВМФ США, а так же для управления пуском Minuteman I, поэтому был военной технологией, но к 1968 году он был снят с производства и устарел, поэтому Комиссия по контролю не возражала против его поставок. В 1968 году (одновременно с БЭСМ-6) в ОИЯИ поселился и CDC.
Отдельно интересно то, что сама компания CDC была не против продавать что угодно куда угодно, хоть в Северную Корею, и Уильям Норрис, ее директор, писал специальное письмо своему конгрессмену Ричарду Ганна (Richard T. Hanna), с просьбой отмазать корпорацию от обвинений в сотрудничестве с коммунистами:
My Dear Congressman Hanna: On Wednesday, December 5, 1973, testimony was given before the Subcommittee on International Cooperation in Science and Space of the House Science & Astronautics Committee by Mr. Benjamin Schemmer, Editor, Armed Forces Journal International. This testimony included the statement that Control Data Corporation had advanced the status of Soviet Computer technology by fifteen years with the sale of a Control Data 6200 computer. Such a statement regarding transfer of technology to the USSR is simply not factual and we are prepared to correct that misstatement as well as other incorrect and misleading references to Control Data's activities with the USSR at the pleasure of your Committee. Meanwhile we respectfully request the consideration of the following. We have offered to the Socialist countries only standard commercial computers, and these offerings have been in full compliance with the export control and administrative directives of the Department of Commerce…
All countries including the Socialists have a substantial base of computer hardware technology on which to build further advances in the state of the art. The major strength of the U.S. in computer technology is its ability to market superior cost/performance computer systems for a wide range of applications. This does not mean that for any given application or group of applications, another country cannot build the equivalent as far as performance is concerned or even exceed what the United States has available. Also, there is no evidence to my knowledge that the USSR has ever been prevented from carrying out a military project because of the lack of adequate computer technology…
We respectfully request that your Committee review the above points and consider incorporating them into the record. We would be pleased to have the privilege of appearing before your Committee to give you our more detailed views on these potential relationships with the Socialist countries and in stating our reasons in support of Administration and Congressional trade initiatives and objectives.
Letter from William C. Norris, Chairman of
Control Data Corporation to Congressman
Richard T. Hanna, 1973.
All countries including the Socialists have a substantial base of computer hardware technology on which to build further advances in the state of the art. The major strength of the U.S. in computer technology is its ability to market superior cost/performance computer systems for a wide range of applications. This does not mean that for any given application or group of applications, another country cannot build the equivalent as far as performance is concerned or even exceed what the United States has available. Also, there is no evidence to my knowledge that the USSR has ever been prevented from carrying out a military project because of the lack of adequate computer technology…
We respectfully request that your Committee review the above points and consider incorporating them into the record. We would be pleased to have the privilege of appearing before your Committee to give you our more detailed views on these potential relationships with the Socialist countries and in stating our reasons in support of Administration and Congressional trade initiatives and objectives.
Letter from William C. Norris, Chairman of
Control Data Corporation to Congressman
Richard T. Hanna, 1973.
В поставке с машиной шёл компилятор с Fortran, причём с исходными текстами, и команда программистов ОИЯИ под руководством Николая Николаевича Говоруна воодушевилась ими и попыталась написать аналог для БЭСМ-6, так как напрямую он работать отказался.
В итоге пришлось для начала написать ассемблер (автокод с мнемониками Лебедева был до того неудобным, что на практике его не использовали), потом загрузчик, поддержку библиотек, да и всю остальную операционную систему, которая получила логичное название «Дубна».
Естественно, это был заслуженный повод для гордости – сложная работа отдела профессиональных программистов была выполнена физиками и инженерами-любителями, результат в целом был удовлетворительным.
Прямое продолжение этой истории ждет нас в следующей статье.
- Автор:
- Алексей Ерёменко
- Использованы фотографии:
- https://ru.wikipedia.org, https://www.ibm.com, https://www.computerhistory.org, http://www.vintchip.com/, http://www.histoire.info.online.fr, http://www.besm-6.su, http://www.chilton-computing.org.uk, https://www.1500py470.livejournal.com, https://ramlamyammambam.livejournal.com