К книге
Проект «Сфера-80»: ОлимпиадаГлава 10 Архитектура на салфетке
23%
Глава 10 Архитектура на салфетке
10

В новой квартире Морозова стояла духота. Пространство гостиной без привычных советских стенок и хрустальных люстр пропитывал запах заваренного чая со слоном, табачного дыма от «Явы» и нагретого грифеля.

Большой раскладной стол, занявший почти половину комнаты, оказался негласно поделен на две суверенные территории.

На левом фланге царил относительный покой. Здесь расположился художественный совет в составе Анны Смирновой и Ольги Липатовой. Две женщины склонились над стопкой плотных листов ватмана. Анна, закусив губу от усердия, выводила контуры очередного разворота для учебника-комикса. Ольга сидела рядом, опираясь подбородком на сплетенные пальцы. В отличие от мужа, она держалась удивительно расслабленно. Как преподаватель музыкальной школы, Ольга обладала абсолютным чувством ритма, которое, как внезапно выяснилось, распространялось не только на ноты, но и на графику.

— Анечка, посмотри на эту диагональ, — мягко произнесла Ольга, указывая тонким пальцем на рисунок механического пса, бегущего по циклу. — Ты зажала его в правом углу. У тебя визуальный такт сбивается. Линия должна дышать. Дай мне карандаш на секунду.

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

— Потрясающе, — выдохнула Анна, поправляя выбившуюся прядь темных волос. — Как вы это видите? Я над этим полчаса билась.

— Это как полифония, — улыбнулась Ольга. — У тебя есть главная тема — алгоритм. И есть аккомпанемент — фон. Они не должны перекрикивать друг друга. Кстати, раз уж мы заговорили о полифонии… Леша, Сережа, Женя!

Трое мужчин и Люба Ветрова, плотно оккупировавшие правый фланг стола, неохотно оторвались от расстеленной миллиметровки.

— В следующую субботу у меня концерт в областной филармонии, — объявила Ольга, обводя взглядом их суровые инженерные лица. — Мы играем Шопена. Я выбила для вас места в шестом ряду, прямо по центру. И только попробуйте сказать, что у вас снова горят сроки по пайке плат. Отказ не принимается.

Морозов откинулся на спинку стула, машинально крутя в пальцах ластик. Он смотрел на Ольгу, слушал ее рассуждения о полифонии, и вдруг в его сознании что-то щелкнуло. Шопен. Ритм. Главная тема и аккомпанемент.

Там, в двадцать первом веке, он часто надевал наушники с шумоподавлением, врубал инструментальную музыку и часами смотрел на архитектуру серверов. Музыка и процессорная логика были созданы из одной материи. Тактовые генераторы отбивали ритм. Шина данных вела мелодию. Прерывания работали как синкопы, ломая ровный шаг системы ради экстренных аккордов. Память хранила лейтмотивы. Прямо сейчас, глядя на наброски Анны и слушая голос Ольги, Алексей физически ощутил эту гармонию. Чтобы их новая машина зазвучала чисто, ей нужна была идеальная оркестровая яма.

— Обязательно придем, Оля, — кивнул Морозов. Он перевел взгляд на инженеров. Настроение за столом мгновенно изменилось — Алексей сразу перешел к делу.

— А теперь давайте вернемся к нашей партитуре, — жестко сказал Алексей, придвигаясь к краю стола. — Люба, Женя, Сергей. Я посмотрел ваши компоновки для «Сферы-82». Мы уперлись в потолок.

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

— В смысле в потолок? — нахмурилась Люба, пододвигая к себе чашку с остывшим чаем. — Леша, мы развели процессорный блок К580. Мы посадили память. Олег бьется над видеоконтроллером. У нас получается отличная, монолитная плата. Да, она размером с хороший поднос, но она работает!

— Логически шину мы разделили еще в лаборатории, — отрезал Морозов. — Но физически вы продолжаете мыслить категориями телевизора. Пытаетесь всё впихнуть на одну текстолитовую доску. Спаяли один раз на заводе, закрыли крышкой и запломбировали. А компьютер — это живой организм. Сегодня нам нужно шестьдесят четыре килобайта памяти, завтра мы захотим подключить дисковод, послезавтра — контроллер локальной сети или программатор. Если мы будем раздувать размер материнской платы, мы сойдем с ума от наводок, а завод проклянет нас за процент брака. Нам нужна физически модульная архитектура. Отдельно карта процессора, отдельно память, отдельно видео.

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

— Модульная? — хмыкнул Громов. — Ты предлагаешь разорвать систему на куски? Сделать отдельно плату процессора, отдельно память, отдельно видео и втыкать их в объединительную кросс-плату?

— Да, — спокойно подтвердил Алексей. — Как слоты. Как ящики в столе.

Громов всплеснул руками, едва не опрокинув пепельницу.

— Леша, это безумие! Ты представляешь, что такое арбитраж шины на этих частотах? У нас данные, адреса и управляющие сигналы полетят через разъемы! Чуть где-то задержка сигнала, чуть емкость паразитная выросла — и всё! А прерывания? Как ты собираешься обрабатывать прямой доступ к памяти, если плата видеоконтроллера будет сидеть в соседнем слоте и бороться с процессором за право читать данные? Это не оркестр получится, это коммунальная квартира на кухне в час пик!

— И это еще не главная проблема, — веско добавил Липатов, недовольно поджав губы. — Алексей Николаевич, вы смотрели ГОСТы на контактные соединения?

Сергей потянулся к своей папке, но Морозов жестом остановил его.

— Я знаю про разъемы, Сергей.

— Нет, вы не понимаете до конца, — упрямо продолжил конструктор. — Вы хотите использовать разъемы СНП. Это наш единственный доступный вариант. По паспорту у них золотое напыление. По факту — фольга. Если пользователь вытащит и вставит плату расширения раз десять, контакты сотрутся до латуни. Начнется окисление. Дребезг контактов. Сопротивление вырастет, и красивые цифровые нолики и единички превратятся в случайный мусор. Мы получим тысячи возвратов. Аппаратная монолитность — это гарантия надежности. Модульность на нашей элементной базе — это техническое самоубийство.

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

Морозов пошарил взглядом по столу в поисках чистого листа. Ватманы были заняты Анной, миллиметровка исчеркана черновиками. Он потянулся к фаянсовой сахарнице и вытянул из-под нее обычную бумажную салфетку, немного помятую и дешевую.

Достав из кармана рубашки шариковую ручку, Алексей положил салфетку перед собой и начал рисовать.

— Подойдите сюда, — скомандовал он.

Инженеры нехотя сгрудились над салфеткой. Анна и Ольга тоже отложили эскизы, заинтригованные резкой сменой тона.

— Женя, ты боишься коммунальной квартиры на шине, — ручка Алексея вывела длинную горизонтальную линию, от которой вниз отходили короткие ответвления. — Но проблема решается жестким приоритетом. Мы не будем позволять картам ругаться. Мы ставим на кросс-плату отдельный чип контроллера шины. И вводим понятие «хозяин» и «раб».

Он нарисовал прямоугольник с надписью «ЦПУ» и соединил его с линией.

— Процессор всегда хозяин. Когда контроллеру видеовывода, который сидит в пятом слоте, нужны данные для отрисовки кадра, он не лезет на шину нагло. Он выставляет сигнал запроса — HOLD. Процессор заканчивает текущую операцию, отключает свои выходы в третье состояние — высокое сопротивление — и отвечает сигналом HLDA. Шина свободна. Бери и пользуйся. Никаких коллизий. Строгий семафор.

Громов почесал заросший щетиной подбородок, всматриваясь в кривоватые линии на салфетке.

— Высокое сопротивление… То есть процессор просто притворяется, что его нет? Физически отключается от проводов?

— Именно. Программный уровень вообще не замечает паузы. Для твоего кода время просто на долю микросекунды замирает.

Алексей перевел взгляд на Липатова.

— А теперь твои разъемы, Сергей. Да, они паршивые. Да, они стираются и окисляются. Мы не можем изменить ГОСТ на металлургию, но мы можем изменить схемотехнику.

Морозов нарисовал профиль разъема, пометив точками контакты.

— Главная причина сбоев из-за плохого контакта — это просадка по питанию. Сигнальные линии потребляют микроамперы, им окислы не так страшны. А вот если по линии питания в пять вольт идет дребезг, логика сходит с ума. Что мы делаем? Мы отдаем под питание не один пин в разъеме, а четыре. Крайние. Запараллеливаем их. Вероятность того, что окислятся и отвалятся одновременно четыре разнесенных в пространстве контакта, стремится к нулю. Плюс на каждую плату расширения ставим мощные конденсаторы прямо возле разъема. Они будут работать как буферные емкости. Если контакт на миллисекунду исчезнет из-за вибрации, конденсатор отдаст свой заряд, и плата даже не чихнет.

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

— Запараллелить питание… — пробормотал Липатов. — И развести землю по всей длине шины в виде гребенки, чтобы создать экран между сигнальными линиями… Тогда мы снизим перекрестные помехи.

— Шестьдесят четыре контакта, — вдруг подала голос Люба, глядя в пустоту остекленевшим взглядом специалиста по топологии. — Нам хватит шестидесяти четырех пинов. Восемь под данные, шестнадцать под адреса, питание, земля и служебные сигналы. Возьмем двухрядный разъем. Это можно развести на двустороннем текстолите. Без многослойки.

Морозов откинулся на спинку стула. Коллеги приняли идею — перестали думать о сборке закрытого ящика и начали обсуждать открытую платформу.

— Допустим, — Громов нервно смял пустую пачку из-под сигарет. — Допустим, мы это спаяем. Допустим, оно не сгорит. Но Леша, объясни мне другое. Зачем? Кому нужна такая безумная аппаратная избыточность? Да, дети хотят писать игры, я сам вчера сел писать для них руководство. Но Леша, давай будем реалистами! Для аркад, платформеров и стрелялок им за глаза хватит базовой «Сферы-80М»! Я оптимизирую ядро, я выжму из этого процессора все такты, они будут чудеса на экране творить в рамках старой архитектуры! Зачем городить огород со слотами и кросс-платами? Кто будет писать настолько огромное ПО, чтобы ему не хватило впаянной памяти?

— Во-первых, мы не будем писать всё это огромное ПО с нуля, — спокойно ответил Морозов. — Помнишь, о чем мы говорили с тобой в самом начале? Си-Пи-Эм.

Громов замер.

— Дисковая операционная система… Та самая американская CP/M для восемьдесят восьмидесятого?

— Именно. Для нормальной рабочей конфигурации ей желательно почти всё адресное пространство и дисковод. Монолитная плата этого не потянет. А вот наша модульная шина — легко. Как только мы портируем и адаптируем CP/M, наша машина мгновенно получит доступ к тысячам уже написанных в мире программ. Трансляторы Си и Паскаля, текстовые редакторы, базы данных. Мы перепрыгнем десятилетие за один год.

Евгений ошарашенно замолчал, переваривая масштаб этой интеграции.

— А во-вторых, — Алексей пододвинул к себе чистый лист ватмана, отобрав его у Анны. — Нам нужны те, кто будет писать для нее новые, наши собственные программы. И я сейчас говорю не про текстовую «Посадку на Луну» или крестики-нолики. Мы делаем тренажер для мозгов. Системные игры, Женя. Нам нужны правильные игры.

Громов снисходительно фыркнул.

— Системные? Это как? Расчет баллистики с картинками?

— Я говорю о другом. О вещах, которые будут заставлять людей мыслить алгоритмически, не понимая, что они учатся.

Морозов нарисовал на ватмане ровный квадрат и расчертил его на шестнадцать клеток. Четыре на четыре.

— Блок первый. Залипательные игры. Назовем концепцию «Сумматор».

Инженеры непонимающе уставились на расчерченную сетку.

— Смотрите, — Алексей вписал в две клетки двойки. — На поле появляются числа. Вы можете сдвинуть все числа на поле в любую из четырех сторон. Вверх, вниз, вправо, влево. Если две одинаковые цифры сталкиваются, они сливаются. Двойка с двойкой дают четверку. Четверка с четверкой — восьмерку. И так далее. С каждым вашим ходом на свободном месте появляется новая двойка. Поле ограничено. Цель — получить максимально крупное значение, скажем, две тысячи сорок восемь, пока поле не забьется намертво.

Громов уставился на сетку. Его губы беззвучно зашевелились.

— Это не арифметика, Женя, — мягко пояснил Морозов. — Это про рост. Малые величины складываются — и вдруг происходит скачок. Это экспонента в чистом виде.

— Стой-стой, — Громов перехватил ручку из рук Алексея. Он начал быстро рисовать стрелочки, сдвигая воображаемые цифры. — Если я сдвину вверх, у меня тут соберется восемь, а снизу появится мусор… Мне нужно копить старшие разряды в одном углу! Леша… Это же проблема распределения ограниченных ресурсов! И математически… количество ходов до тупика зависит от чистоты выбранной стратегии.

— Именно, — кивнул Морозов. — Правила объясняются за пять секунд. Оторваться невозможно. А вот вторая механика. «Орбитальный диспетчер».

Он нарисовал круг Земли и несколько пересекающихся эллипсов.

— В аркадах человек управляет ракетой напрямую. Нажал кнопку — полетел. Это развивает рефлексы. Но мы будем тренировать интеллект. В «Диспетчере» вы не управляете кораблем. Вы управляете решениями, от которых он не падает. Перед вами список объектов: спутники, станции, мусор. У вас есть только команды: поднять орбиту, снизить, ускорить. Каждый ваш ход — это пересчет орбит всей системы на виток вперед. Вы вводите данные, нажимаете «исполнить» и смотрите на последствия.

— Тренажер мышления, — тихо произнесла Анна, не отрывая взгляда от рисунка.

— Да. Космонавт летит один раз. Ошибается — тоже один. В игре вы учитесь предвидеть катастрофу за пять ходов до того, как она произойдет физически.

Липатов, который до этого момента считал игры несерьезным занятием для детей, вдруг подался вперед.

— Подождите. Если мы введем случайные факторы? Например, микрометеорит выводит из строя двигатель спутника на одном из витков. Игроку придется экстренно менять расписание всех остальных объектов, чтобы избежать цепной реакции столкновений?

— Абсолютно верно, Сергей. И это подводит нас к третьему уровню. «Автомат решений».

Морозов набросал схематичного робота с квадратной головой.

— Здесь мы вообще убираем прямое управление. Мы задаем машине поведение. Вы не можете сказать роботу «иди прямо». Вы можете написать для него набор простых правил. Например: «Если энергия меньше десяти процентов — искать станцию зарядки». «Если препятствие впереди — повернуть направо». «Если цель в прямой видимости — двигаться к цели». Вы загружаете этот свод принципов в робота и выпускаете его в лабиринт. И дальше просто смотрите, как ваша логика работает в непредсказуемой среде. Это великолепная тренировка интуиции для разработчика программного обеспечения. В игровой форме.

В комнате стало очень тихо. Даже ветер за окном, казалось, взял паузу. Инженеры смотрели на Морозова не просто как на руководителя. Они смотрели на него как на человека, который только что распахнул перед ними дверь в совершенно иную реальность.

Громов снял очки и потер глаза запястьем.

— Леша… — голос программиста дрогнул. — Это же не игры. То есть, это игры, но… В «Автомате решений» они будут писать подпрограммы, используя условные переходы. Они будут писать код, думая, что они просто настраивают робота. Ты хочешь, чтобы дети со всего Союза в свободное время занимались теорией конечных автоматов?

— Я хочу, чтобы они научились думать системами, Женя. Мы не можем обучить всю страну ассемблеру через журнал. Но мы можем дать им среду, где системное мышление — это условие победы. Техника должна служить человеку. И она начнется с этих программ.

Люба Ветрова задумчиво постучала ногтем по столу.

— Леш, но ведь для твоего «Сумматора» нам даже не нужна новая архитектура, — заметила она. — Поле четыре на четыре, простые сдвиги и сложения. Текущая «Сфера-80М» с этим справится играючи.

— Я напишу ее на микробейсике за пару вечеров! — тут же подхватил Громов, азартно подавшись вперед. — Код получится крошечным. Случайные числа для появления двоек буду брать из пустых тактов ожидания нажатия клавиши. А листинг программы мы прямо в одном из будущих номеров «Радио» и опубликуем. Пусть читатели сами вбивают код и играют. Это же идеальная демонстрация возможностей машины!

— А вот для «Диспетчера» и «Автомата» уже потребуется «Сфера-82» с ее прерываниями и нормальной памятью, — Морозов откинулся назад и улыбнулся, слушая их. Спор о разъемах забылся. Инженеры больше не обсуждали выполнение спущенного сверху плана. Прямо сейчас, на этом заляпанном крошками и чертежами столе, они закладывали фундамент отрасли, которой в стране еще не существовало.

* * *

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

В прихожей пахло мокрой шерстью пальто и гуталином. Липатов, аккуратно застегивая пуговицы своего строгого серого макинтоша, что-то вполголоса обсуждал с Любой о допусках на сверловку стеклотекстолита. Громов безуспешно пытался найти в карманах куртки спички.

Анна, завязывая шарф перед зеркалом, поймала взгляд Морозова в отражении. Она чуть заметно улыбнулась ему — улыбкой заговорщика, который понимает больше, чем говорит.

Ольга Липатова, уже стоявшая на лестничной клетке, обернулась.

— Алексей Николаевич. Суббота. Восемнадцать ноль-ноль. Шопен. Если кто-то из вас не придет из-за какой-нибудь системной шины, я лично приеду в ваше КБ и устрою вам концерт.

— Мы будем, Ольга. Обещаю.

Щелкнул замок. Тяжелая входная дверь, обитая дерматином, закрылась, отсекая шум подъезда.

В квартире стало тихо. Воздух постепенно остывал. Морозов вернулся в гостиную: на столе громоздились пустые чашки с чайными разводами на дне, смятые фантики от конфет «Мишка на севере» и разбросанные карандаши.

Алексей медленно подошел к столу и остановился, глядя на столешницу.

Там, среди хаоса, лежала та самая бумажная салфетка. Кто-то из гостей, увлеченный спором, случайно поставил на нее недопитую чашку. Теперь поверх нарисованной архитектуры Единой системной шины, прямо поперек линий адреса и данных, красовался четкий, коричневый круг чайного пятна.

Морозов осторожно взял салфетку за край. Бумага подсохла и покоробилась.

В своей прошлой жизни, в стерильных опен-спейсах корпораций, он бы брезгливо выбросил испорченный черновик в корзину для ресайклинга. Там ценилась идеальная чистота PDF-файлов и строгая геометрия векторных схем. Там не было места случайности.

Но здесь, стоя в полутемной комнате владимирской квартиры в тысяча девятьсот восьмидесятом году, он смотрел на это пятно совершенно иначе. Пятно стало печатью реальности — отметиной несовершенства советских разъемов, перебоев с поставками, упрямства Липатова и язвительности Громова. Архитектура столкнулась с практикой и выдержала этот краш-тест.

Алексей не стал стирать разводы. Он аккуратно, двумя пальцами разгладил салфетку и положил ее на край стола, как самый ценный документ.

Затем он потянулся к пачке белоснежной бумаги по ГОСТу. Вытащил один идеальный, чистый лист и положил перед собой. Щелкнул кнопкой авторучки.

Спор выигран, концепция утверждена. Завтра утром Алексей принесет чистовик в лабораторию КБ-3, и производство сделает первый оборот, продираясь сквозь неповоротливую бюрократическую машину.

Ручка коснулась бумаги, уверенно выводя заголовок первого официального ТЗ на прототип, который изменит этот мир навсегда: «Технические требования к кросс-плате Единой системной шины микро-ЭВМ серии „Сфера-82“».

Предыдущая главаГлава 10 из 44Следующая глава