Вчерашняя история про секретный криптоаналитический Harvest оставила в архиве IBM маленький, но великолепно опасный хвост. После провального Stretch корпорация запустила два проекта: X должен был стать в 10–30 раз быстрее, а Y — в сто раз. Из второго вырос ACS-1: суперкомпьютер настолько амбициозный, что он не дошёл даже до железа. Его отменили на чертежах.
Внутри ACS-1 в 1966 году Линн Конвей с коллегами описала dynamic instruction scheduling: процессор выбирает готовую работу не строго по строчкам программы, а там, где нет зависимостей. Сегодня это называется out-of-order execution; без него современные CPU выглядели бы как касса в супермаркете, которая принципиально обслуживает только того, кто первым взял йогурт. Вдобавок IBM уволила Конвей в год отмены ACS, а её имя вместе с проектом почти растворилось в тумане корпоративной секретности.
Это не история в жанре «гениальная идея была слишком ранней». Такие формулы — интеллектуальный пластырь, которым любят заклеивать провалы. ACS погиб потому, что в IBM столкнулись три вполне земных силы: совместимость, цена и внутренняя власть. А идеи пережили машину, потому что физика транзисторов через двадцать лет всё-таки догнала их аппетит.
Stretch, суперкомпьютер IBM начала 1960-х, оказался болезненным уроком: реклама обещала слишком много, а реальная производительность не оправдала ожиданий. В августе 1961-го IBM начала два ответных проекта. Project X в Покипси в итоге породил линейку System/360 Model 91 и 95; Project Y в Yorktown Heights получил задачу куда безумнее — сделать машину в 100 раз быстрее Stretch.
Когда в 1963-м Сеймур Крэй показал CDC 6600, у IBM вновь появился спортивный азарт. В 1965-м CEO Томас Уотсон-младший велел собрать «go-for-broke» программу — по воспоминаниям Конвей, почти манхэттенский проект, только вместо бомбы строили вычислительный монстр. Команду Project Y перевезли в Калифорнию; сперва она сидела в старом фруктовом складе на Kifer Road в Саннивейле, затем получила новый корпус на Sand Hill Road в Менло-Парке, неподалёку от Стэнфордского линейного ускорителя.
ACS-1 задумывался без компромиссов: 48-битные числа, 96-битная двойная точность, цикл в 10 наносекунд, шесть–семь логических уровней на ступень конвейера. Целью была производительность в тысячу раз выше IBM 7090. Машине планировали дать кэш, быстрый ввод-вывод прямо в него, fixed-head диски, виртуальную память и оптимизирующий компилятор. Потенциальный клиент — Ливерморская лаборатория — даже готовилась принять IBM-инженеров и ждала прототип к лету 1967-го.
По воспоминанию участника Нормана Харди, Уотсон однажды спросил, где у этой машины устройство для работы с перфокартами. Джон Кок ответил метафорой: представьте двадцать параллельных железнодорожных путей, по каждому идёт поезд на 60 милях в час, вагоны забиты перфокартами. Такова пропускная способность шины памяти ACS. Для вывода данных Харди однажды проектировал «акры принтеров». Но самая драгоценная часть ACS-1 жила даже не в шинах и перфокартах, а в том, как машина выбирала следующую инструкцию.
Классический процессор любит дисциплину: сначала инструкция №1, потом №2. Но реальная программа — это граф зависимостей, а не очередь в паспортный стол. Если первая операция ждёт данные из памяти, а третья готова прямо сейчас и не зависит от первой, разумнее пустить третью в свободный исполнительный блок. Потом результат аккуратно вернуть так, словно никакой анархии не было. Это и есть out-of-order execution.
Внутренний меморандум IBM ACS от 23 февраля 1966 года, подписанный L. Conway, B. Randell, D. P. Rozenberg и D. N. Senzig, называет технику dynamic instruction scheduling — DIS. Авторы честно объясняют, зачем она нужна: компилятор может расставить инструкции красиво, но не умеет заранее предсказать задержки памяти и конкуренцию с автономным I/O. Значит, планирование приходится переносить внутрь машины, туда, где видно реальное состояние операндов и функциональных блоков.
В ACS у арифметических и адресных блоков были очереди; из них можно было отбирать готовые инструкции и запускать несколько за цикл. Конвей разработала bit-matrix, отслеживавшую, что уже готово, а что ждёт результат. Команда называла железо то «contender stacks», то instruction queues; сегодня мы сказали бы instruction window. Название менялось, принцип остался — и теперь именно так работают высокопроизводительные процессоры.
Важно не скатиться в легенду об одном единственном изобретателе. У IBM уже был Роберт Томасуло: его алгоритм для floating-point блока System/360 Model 91 — другой важнейший маршрут к out-of-order исполнению. Меморандум DIS и сам ссылается на более ранние схемы Эймдала, Чена и Торнтона. Инженерная история редко похожа на яблоко Ньютона; скорее это несколько команд одновременно приходят к одному узкому мосту, потому что дорога дальше без него физически не существует.
Но у ACS был особенно смелый замах: не отдельный блок, а обобщённая архитектура с несколькими выдачами за такт, аппаратным планировщиком, кэшем и агрессивным компилятором. В 1966-м это был проект будущего, которому пока не хватало будущих транзисторов. А пока они не выросли, машине предстояло выжить в турнире, где правила писала не физика, а собственная корпорация.
Ген Эймдал почти с первого совещания доказывал неприятную для романтиков мысль: суперкомпьютер должен быть совместим с System/360. Иначе клиенту придётся выбросить софт, компиляторы, процессы — словом, купить не ускорение, а новую планету. Эймдал считал, что S/360-совместимая машина сохранит 90–95% обещанной производительности, добавив лишь 5–10% железа. Команда ACS сначала это проигнорировала, а к 1967-му, по его интервью, фактически отправила его «в Ковентри»: каждого, кто виделся с ним, вскоре вызывали на отдельное совещание. Корпоративная распределённая система консенсуса, только с худшим UX.
Потом появился Джон Эрл — блестящий, но конфликтный схемотехник, которого руководство отдало Эймдалу как наказание. Получился красивый побочный эффект организационной ошибки: Эймдал и Эрл набросали AEC/360, совместимую альтернативу. По их оценкам, она работала на цикле 8 нс против 12,5 нс у ACS, требовала около 90 тысяч схем вместо 265 тысяч и давала отношение производительность/стоимость 4:1 в свою пользу.
Эти цифры не были финальным приговором физики. В апреле 1968-го комиссия сравнивала проекты по пяти бенчмаркам; у AEC/360 не было симулятора, и тайминги считали вручную, используя оптимистичный 8-нс прогноз Эймдала. Карл Конти всё же зафиксировал неудобный вывод: архитектурное преимущество ACS на ряде задач — порядка 10–20%, а зависимость от качества оптимизации компилятора может его съесть. То есть ACS проиграл не потому, что был плох, а потому, что его доказательство превосходства ещё не успело стать доказательством.
В мае 1968-го IBM велела переделать проект под System/360. Оригинальный набор инструкций и расширенные форматы чисел полетели за борт; ушла часть команды, включая Херба Шорра. Кок взял академический отпуск. ACS/360 сохранил часть идей — multiple issue, буферы предсказанных целей переходов, precise interrupts, регистры резервного состояния, — но и он не дожил до машины. В мае 1969-го IBM закрыла весь проект.
Если остановиться на «совместимость победила чистую архитектуру», получится аккуратная, но неполная сказка. В 1968 году более 60% из 26 тысяч установленных систем IBM были S/360. Model 30 и 40 давали 32% и 35% системной прибыли, Model 65 — 24%; топовые Model 75 и 85 вместе шли с убытком 17%. IBM не была филантропическим фондом, у которого в серверной завёлся калькулятор. Её денежный мотор жил в среднем сегменте.
Эймдал предложил трёхуровневую линейку ACS/360: флагман, версию на треть его производительности и ещё одну на девятую часть. По его воспоминаниям, корпоративный расчёт давал такую картину: один суперкомпьютер — loss leader; с младшим братом — выход в ноль; со всеми тремя — нормальные 30% прибыли до налогов. IBM всё равно отказалась.
Уотсон позднее объяснял это образом, от которого инженеру слегка больно, но спорить трудно: IBM не могла соревноваться с Control Data в суперкомпьютерах «по той же причине, по которой General Motors не может соперничать с Ferrari в двухсотмильных спорткарах». Такая машина не укладывалась в продуктовую линейку, привычную продажу, объём и целевую маржу. ACS закрыли не потому, что у него кончилась инженерия; у IBM кончилась бизнес-модель для этой инженерии.
На этом фоне особенно ехидно звучит слух, который пересказывали Эймдал и Макс Пейли: а вдруг исследовательский суперкомпьютер изначально допустимо разработать, признать рынок слишком малым, отменить продукт — но разнести его технологию по другим продуктам без тяжёлого R&D-хвоста? Доказательств намеренного саботажа нет, и превращать слух в приговор было бы дешёвой конспирологией. Но механизм «внутренний moonshot превращается в библиотеку идей после отмены» выглядит до неприятного правдоподобно.
У отмены ACS была человеческая цена. В 1968-м Конвей готовилась к гендерному переходу и пыталась договориться с IBM о тихом переводе после восстановления — под новым именем в другое подразделение Bay Area. Её менеджеры и коллеги поддерживали план. Местный кадровый отдел эскалировал вопрос наверх, и корпоративное руководство его отменило.
В своей ретроспективе Конвей приводит формулировку IBM: её присутствие после перехода якобы вызовет у коллег «extreme emotional distress». Люди, принявшие решение, с ней даже не встречались. Компания фактически потребовала подписать бумаги об увольнении в обмен на шестимесячный consulting contract; после развода она потеряла контакт с детьми. Один и тот же 1968-й выбросил из IBM и проект, и человека, который помогал проекту думать быстрее.
Дальше история делает разворот, от которого у любого любителя архитектуры должно засвербеть в глазах. Конвей начала заново контрактным программистом, затем стала архитектором в Memorex, а в 1973-м пришла в Xerox PARC. Там вместе с Карвером Мидом она изменила уже не исполнение программ, а способ проектировать сами чипы.
Книга Introduction to VLSI Systems вышла в 1980-м, к 1983-му её использовали почти 120 университетов, а продажи превысили 70 тысяч экземпляров. Масштабируемые правила проектирования и multiproject wafers позволили цифровым инженерам строить сложные кремниевые системы, не становясь одновременно физиками полупроводникового производства. Эксперимент MPC79 и последовавшая инфраструктура MOSIS стали ранним прототипом fabless-модели: разделить замысел, дизайн и фабрикацию так, чтобы маленькая команда вообще могла попасть на кремний.
Получается почти вызывающая симметрия. ACS-1 пытался заставить машину на лету выбирать полезную работу вместо тупого ожидания. Mead–Conway-подход заставил индустрию выбрать полезную работу вместо ожидания, пока огромная компания со своей фабрикой разрешит тебе сделать чип. В обоих случаях Конвей снимала искусственное узкое горлышко: сначала у инструкций, потом у людей.
Пока идея обретала новый масштаб, её автор старательно выбирала обратный — исчезала из истории. В 2018 году Конвей дала этому феномену имя: Conway effect. Определение у неё спокойнее и страшнее, чем намеренный заговор: люди склонны не замечать инноваций тех, от кого инноваций не ждут. Даже увидев новое, они приписывают его «известному инноватору». Так история становится не злым редактором с красной ручкой, а автоматическим ранжировщиком с испорченными весами.
Она не утверждала, что все коллеги украли её работу. Напротив, исходный DIS-меморандум подписан четырьмя авторами, роль Томасуло в Model 91 отдельна и велика, а ACS породил множество линий наследования. Точный диагноз сильнее удобной легенды: секретность не позволила проекту сформировать публичную репутацию, отмена разбросала команду, а затем персональная биография Конвей заставила её работать в скрытом режиме. Достаточно нескольких обычных организационных процессов, чтобы имя исчезло без единого злодея в кресле.
IBM извинилась перед Конвей публично лишь в 2020 году и вручила ей Lifetime Achievement Award. Извинение — правильный жест, но не машина времени. ACS-1 не появится в музее, а его авторы не получат шанса проверить ту самую смелую конструкцию против реального кремния. Зато сохранились меморандумы, симуляторы, архивы и одна важная инженерная мораль: отменённый проект может быть продуктовым провалом, но всё ещё оставаться технологическим месторождением.
История ACS-1 полезна именно тем, что не даёт выбрать удобного виновника. Эймдал был прав насчёт software ecosystem и экономики продукта. Команда ACS была права, когда строила архитектурный прыжок. IBM была права бояться убыточного флагмана — и одновременно потеряла шанс превратить свою лабораторию в реальный суперкомпьютерный ответ CDC. Это не трагедия от глупости; это трагедия от того, что у разных метрик был разный хозяин.
Самое сильное здесь — задержка в два десятилетия. Идея может быть верной, но недостаточно дешёвой, недостаточно проверяемой, не в той линейке и без политического покровителя. Когда вырастают транзисторы, рынки и компиляторы, кто-то позже называет её «очевидной». Инженерная память устроена жестоко: она любит готовый продукт и плохо помнит отменённые чертежи, хотя именно в них иногда лежит исходный код будущего.
А Конвей — лучший контраргумент корпоративной фразе «мы закрыли тему». Нет, вы закрыли бюджет и вход в здание. Идея вышла наружу, сменила масштаб, пережила железо и в итоге добралась до каждого ноутбука, смартфона и чипа, который пытается не тратить такты впустую. Хороший инженерный призрак: не шумит, не мстит, просто оказывается везде.