Воздух в лаборатории КБ-3 пах застоявшимся теплом чугунных батарей и резким нашатырным духом свежей «синьки». Огромные листы синеватой бумаги, испещренные белыми линиями схем, лежали на сдвинутых вместе столах, образуя бумажное море, над которым сейчас нависали четверо.
Алексей Морозов стоял чуть в стороне, прислонившись бедром к краю кульмана, и молча наблюдал за командой.
Сергей Липатов в идеально отглаженной рубашке методично водил тупым концом карандаша по схеме. Рядом Люба Ветрова хмуро вглядывалась в переплетения линий. Чуть поодаль возвышался Тимофеев, тяжело уперев руки в бока, а из-за его плеча выглядывал взлохмаченный Громов.
Причиной споров стал микропроцессор К580ИК80А — сердце будущей машины «Сфера-82».
И прямо сейчас документация на эту вершину казалась инженерам КБ-3 издевательством.
— Я отказываюсь понимать этот перевод, — Липатов бросил карандаш на стол, выпрямился и поправил роговые очки. — Алексей Николаевич, мы же серьезные люди. У него сорок ножек. Мы понимаем, что этого мало для прямой адресации и управления, значит, шина мультиплексирована. Но вы почитайте описание циклов!
Сергей ткнул пальцем в синьку так сильно, что бумага угрожающе хрустнула.
— Справочник пишет про «состояние шины», — поддержала Люба, листая тонкую брошюру. — Шестнадцать выводов уходит на шину адреса. Восемь — на шину данных. Питание, тактовый генератор. Физических выводов для сигналов управления чтением и записью памяти просто не остается. Они явно передаются по шине данных, но когда?
Она вскинула на Морозова взгляд.
— Временные диаграммы в этом талмуде нарисованы так, будто их чертил пьяный студент, — вступил Тимофеев, тяжело опираясь кулаками о стол. — Вот сигнал обращения к внешним устройствам. Вот такты. Но как память поймет, что от нее хотят в конкретную микросекунду: чтобы она отдала байт или чтобы записала? Без внешней защелки и дешифратора этот процессор слеп и глух. А как именно дешифровать — в справочнике ни слова. Одно сплошное «слово состояния», и понимай как хочешь.
Морозов слушал молча.
С одной стороны, ему было смешно. В двадцать первом веке он проектировал кристаллы, у которых счет контактов шел на тысячи, а документация представляла собой интерактивные даташиты на тысячи страниц. Здесь же инженеры спотыкались о кривой перевод мануала на сороканогий чип, где половина терминов была выдумана на ходу.
С другой стороны, Морозов понимал коллег. Они были гениями жесткой логики и прекрасно видели нехватку управляющих линий. Проблема была не в их квалификации, а в том, что советские составители справочника описали физику процесса, но совершенно упустили логику работы системного контроллера, оставив разработчиков гадать на кофейной гуще временных диаграмм.
Алексей оттолкнулся от кульмана. Взяв со стола кусок мела, он шагнул к потертой школьной доске, висевшей на стене со времен лаборатории метрологии, и стер влажной тряпкой старые графики.
Раздался сухой, резкий скрип мела. Морозов начал рисовать.
Инженеры замерли, наблюдая за короткими, уверенными движениями руки Алексея. На зеленом линолеуме доски вырисовывалась прямоугольная коробка процессора, от которой отходили линии шины данных. Но вместо того, чтобы тянуть от них связи к памяти, Алексей нарисовал рядом еще один прямоугольник.
— Справочник действительно переведен криво, — негромко, но веско произнес Морозов, стряхивая с пальцев белую пыль. — Составители описали физику, но забыли объяснить философию архитектуры. Вы абсолютно правы: процессор выдает управление на шину данных.
Липатов недоверчиво хмыкнул, но подошел ближе.
— Взгляните на временную диаграмму, — Алексей быстро набросал графики синхроимпульсов, тактов Ф1 и Ф2. — Процессор действительно имеет всего восемь ножек для данных. Но кто сказал, что по ним могут передаваться только данные?
Он обвел кружком самый первый такт процессорного цикла.
— Вот здесь. В самом начале любого машинного цикла, по сигналу «СИНХ», процессор выдает на шину данных не числа. Он выдает так называемое «слово состояния».
— То самое «состояние шины» из таблицы? — нахмурилась Люба, медленно подходя к доске.
— Именно. Восемь бит, которые кодируют то, что процессор собирается сделать в следующем такте. Читать память, писать в порт, подтверждать прерывание — все это зашифровано в этом байте. Он сообщает об этом в эфир. Но очень коротко, всего на доли микросекунды.
Морозов постучал мелом по второму нарисованному прямоугольнику.
— А вот это, коллеги, микросхема К580ВК28. Системный контроллер. По сути — это хитрая защелка с дешифратором. Ее задача — поймать это слово состояния в первый такт и превратить в те самые привычные вам выделенные сигналы чтения и записи. И держать их стабильными, пока процессор во втором и третьем тактах не начнет гонять по этой же самой шине уже реальные данные.
В лаборатории повисла тишина. Слышно было только гудение дросселей в лампах дневного света.
Это была встреча двух эпох.
Одно дело — понимать концепцию мультиплексирования шины в теории, и совсем другое — увидеть изящное аппаратное решение, где данные и управляющие команды летели по одной физической меди с разницей в доли микросекунды, а специальный контроллер прозрачно разделял их для остальной системы.
Липатов схватил со стола отточенный карандаш, выхватил из стопки чистый лист бумаги и прямо на весу начал быстро чертить схемы дешифрации. Пальцы двигались с невероятной скоростью.
— Значит… — Липатов говорил прерывисто, не отрываясь от бумаги. — Значит, если мы ставим эту защелку прямо у ног процессора… мы получаем полноценную, независимую шину управления. Черт возьми.
Люба подалась вперед, вглядываясь в схему.
— И мы можем вывести эту шину управления на нашу магистраль! — воскликнула она, переводя взгляд с доски на Морозова. — Адреса, данные и дешифрованное управление. Все на одной гребенке, как мы и задумывали для первой машины. Если мы сохраним этот стандарт, мы сможем подключать к новому процессору те же самые блоки. Память, видеоконтроллеры, таймеры… Главное, чтобы они понимали этот язык.
— Преемственность поколений, — веско подытожил Тимофеев. Он с размаху, гулко хлопнул тяжелой ладонью по столу. Чертежи подпрыгнули. — Лёша, это же гениально. Мы берем архитектуру нашей первой «Сферы» и просто ставим во главе этот процессор с контроллером!
Морозов улыбнулся. Команда стремительно перешла к бурному конструированию. Они начали спорить, перебивая друг друга. Липатов уже требовал согласовать тайминги нового процессора с их магистралью, Люба прикидывала нагрузочную способность микросхем, чтобы понять, сколько плат потянет контроллер без дополнительных усилителей, Тимофеев мысленно переделывал корзину для будущего корпуса, а Громов довольно потирал руки, предвкушая нормальную систему команд.
Система обретала логический скелет. Морозов аккуратно положил мел на полочку у доски. Этот барьер был пройден. Инженеры только что получили недостающий ключ к архитектуре, который превращал непонятную микросхему в ядро будущей системы.
Когда первый шквал аппаратного энтузиазма немного утих, а чертежи обросли новыми, жирными пометками, Морозов решил, что пора переключать регистр. Архитектура «Сферы-82» была фундаментом на будущее, но прямо сейчас у них горела другая, куда более насущная проблема.
Алексей подошел к столу и вытащил из ящика стопку белоснежных листов формата А4. Этот дефицитный финский картон был выменян снабженцами на какие-то невероятные услуги, и писать на нем доставляло физическое удовольствие.
Он положил стопку перед Липатовым, аккуратно отодвинув в сторону схемы дешифратора.
— Коллеги, выдыхаем аппаратную часть. Железо подождет. У нас есть ещё дело, — Морозов присел на край стола, скрестив руки на груди. — Нам нужно составить задачи-фильтры для отборочного тура. Иначе нас завалят миллионами писем от тех, кто хочет спаять себе мигалку на новогоднюю елку.
— Дадим им расчет фильтра нижних частот, — предложил Липатов, протирая роговые очки носовым платком. — Или систему линейных уравнений. Школьники старших классов должны это тянуть.
— Уравнения проверят только знание школьной программы, Сережа, — покачал головой Морозов. — А нам нужно выявить тех, кто способен к алгоритмическому мышлению. Умеет раскладывать сложный процесс на простые, повторяющиеся шаги.
Морозов взял ручку и придвинул к себе верхний лист картона. Ощущение скользящего по плотной бумаге шарика успокаивало.
— Задачи должны быть жизненными, без привязки к высшей математике, — произнес Алексей, быстро набрасывая на листе прямоугольники будущей блок-схемы. — Школьник в деревне под Сызранью может не знать, что такое интеграл, но логику понимать обязан.
Он повернул лист к команде.
— Задача номер один. Назовем ее «Сортировщик». Представьте, что вы сидите в библиотеке. Перед вами стопка из ста формуляров с фамилиями читателей. Они лежат в случайном порядке. Ваша задача — разложить их строго по алфавиту. Вы не можете использовать готовые математические формулы. Вы должны описать словами и нарисовать блок-схему точного, пошагового алгоритма действий, чтобы этот алгоритм мог выполнить абсолютно глупый робот.
— Обычная пузырьковая сортировка, — тут же отозвался Громов. — Сравнить первую со второй. Если первая по алфавиту старше — поменять местами. Если нет — оставить. Потом сравнить вторую с третьей… И так до конца стопки. А потом начать заново, пока не перестанут меняться.
— Именно, Женя, — кивнул Морозов. — Это элементарно для нас, но для неподготовленного мозга выстроить цикл с условием и возвратом — это сложнейшая работа.
— А давайте усложним, — включился Липатов. — Добавим физическое ограничение. У робота очень маленький стол. Он может одновременно держать перед глазами только две карточки, а остальные должны лежать в стопках. Это проверит способность работать с ограниченной памятью системы.
— Отлично, Сергей. Записал, — Морозов сделал пометку на полях. Командная динамика работала безупречно. Инженеры превращались в геймдизайнеров и методологов, сами того не замечая.
— Задача номер два, — Алексей взял следующий лист. — «Конвейер ОТК». Завод. По ленте едут детали. У нас есть два датчика. Первый проверяет вес: нормальный или легкий. Второй проверяет размер: нормальный или короткий. В конце конвейера стоят три ящика: «Годен», «Брак по весу», «Брак по размеру». Нарисуйте логику конечного автомата, который будет сбрасывать детали в нужные ящики.
— Слишком просто, — хмыкнула Люба, перегибаясь через стол, чтобы посмотреть на рисунок. — Датчик один выдает единицу, датчик два выдает единицу — деталь в первый ящик. Обычная логическая таблица истинности.
— Согласен, — Морозов прищурился. — Чего не хватает?
— Аварийной остановки! — не задумываясь выдала Ветрова. — Деталь не может быть одновременно идеальной по размеру, но весить как пушинка. Это значит, что материал пористый, или внутри пустота. Если датчик веса кричит «легкая», а датчик размера говорит «нормальная» — это критический брак литья. Алгоритм должен застопорить конвейер и зажечь красную лампу!
Раздалось шуршание бумаги. Морозов увлеченно фиксировал идеи. Они спорили, перебирали варианты, представляли, как двенадцатилетний пацан где-нибудь в далеком поселке будет грызть карандаш, пытаясь понять, почему мысленный робот застрял в бесконечном цикле.
Алексей не просто паял провода. Он создавал методологию. Эти простые задачи на бумаге были мостом, который переведет тысячи умов от советской аналоговой реальности к архитектуре персональных компьютеров.
В дверь резко постучали. Не дожидаясь ответа, створка распахнулась, и на пороге появилась Наталья Сергеевна.
Она выглядела безупречно: строгая юбка, идеальная укладка. Сейчас в ней чувствовалась особенная, торжественная собранность. Рябинина несла перед собой тонкую картонную папку-скоросшиватель.
Контраст между перемазанными мелом инженерами и всегда аккуратной Натальей Сергеевной был разительным.
— Алексей Николаевич, — голос Рябининой прозвучал сухо, но с едва уловимыми победными нотками. Она подошла к столу Морозова и аккуратно, двумя руками, положила папку поверх набросков олимпиадных задач.
Алексей отложил ручку и открыл картонную обложку. Внутри лежал бланк. Плотная, желтоватая бумага с гербовой печатью. Сквозь типографский шрифт на бланке фиолетовой лентой пишущей машинки было с силой, до легкого тиснения бумаги, впечатано: «Управление связи ДОСААФ СССР. Договор на абонентское обслуживание. Ящик абонементный № 404…»
Ниже шли жирные чернильные подписи. Квадратные, треугольные и круглые штампы пестрели на листе, завершая картину абсолютной бюрократической брони.
— Все инстанции пройдены, — Рябинина поправила манжету блузки. — Министерство дало квоту. Обком комсомола визировал. Почтовое отделение выделило нам отдельный ящик на центральном узле, потому что ожидаемый объем корреспонденции превышает возможности стандартного абонентского сейфа.
Она сделала паузу.
— Редакция журнала «Радио» ждет наши материалы для майского номера к завтрашнему утру. В типографии уже держат резервные полосы. Фильтр-задачи готовы?
Морозов провел пальцами по шершавой поверхности бланка с фиолетовой печатью. Бюрократический этап завершился. Документ перед ним открывал официальный канал связи с огромной страной.
— Задачи готовы, Наталья Сергеевна, — Алексей поднял на нее глаза. — Текст условия я отдам вам на чистовую вычитку через час.
— Прекрасно, — Рябинина коротко кивнула. Она бросила быстрый взгляд на доску со схемами мультиплексора, на перепачканные руки инженеров и едва заметно улыбнулась. — Тогда не смею больше отвлекать конструкторский гений. Жду черновик у себя.
Она развернулась и покинула кабинет, закрыв за собой дверь с мягким, дорогим щелчком.
Люба, Липатов, Тимофеев и Громов тихо разошлись по рабочим местам. Лаборатория вновь погрузилась в привычный ритм: щелкали тумблеры, гудел трансформатор на столе у Любы, Липатов с шелестом перелистывал справочники ГОСТов.
Морозов остался один у центрального стола.
Слева от него лежала синька с архитектурой «Сферы-82» — мозг будущего компьютера, который они только что научили общаться с миром через единую системную шину. Справа лежала стопка чистых листов с набросками алгоритмических задач — инструмент, который должен был найти тех, кто будет для этого компьютера писать программы. А посередине, скрепляя все это воедино, лежал бланк абонентского ящика.
Алексей посмотрел на часы. Секундная стрелка отмеряла время тысяча девятьсот восьмидесятого года.
Проект получил официальный статус. Машина была запущена. И остановить ее теперь было невозможно ни интригами Петрова, ни первым отделом.
Морозов взял ручку, придвинул к себе чистый лист бумаги и начал выводить первые строки текста, который завтра уйдет в редакцию «Радио». Он писал и понимал: пройдет месяц, может быть, два, и их новый абонентский ящик будет переполняться ежедневно. Туда хлынут тысячи таких же листов, присланных со всех концов Союза. Исписанных кривым детским почерком, напечатанных на старых машинках, нарисованных на вырванных из школьных тетрадей клетчатых страницах.
Алексей улыбнулся, поставил точку в конце условия задачи про «Конвейер ОТК» и приготовился встречать эту лавину. Будущее уже стояло на пороге, и у этого будущего был почтовый индекс.