К середине сентября в таблице номенклатуры появилась ещё одна невидимая строка — «машинное время». Напротив неё стоял толстый, уверенный ноль.
— Если мы ещё раз полезем подправлять внутренний блок вслепую, — сказал Алексей, — я лично подпишусь под формулировкой «расход машинного времени с элементами шаманизма».
На доске в лаборатории висела свежая схема «внутреннего управляющего блока» — аккуратный прямоугольник с лесом стрелок. Внизу было скромно приписано: «ЦУБ‑1, вариант последовательной обработки разрядов».
— Шаманизма, — передразнил Евгений, откинувшись на стуле и уткнув сигарету в пепельницу так, будто это была антенна. — Это вы ещё мои первые программы на Фортране не видели.
Он поднялся, подошёл к схеме и постучал пальцем по прямоугольнику.
— Значит так. Вы здесь выкинули половину параллельщины, перегнали всё через один сумматор и радуетесь, что микросхем меньше. А я потом буду по ночам отлавливать, где у вас там битовый перенос не туда уполз.
— Зато микросхемы — сплошь ЛА3 и ТМ2, — напомнил Алексей. — Министерство будет счастливо. Игнатьев — тоже. Блок арифметики у нас теперь не прибор, а учебное пособие по универсальному NAND’у.
Евгений скривился.
— Министерство счастливо, Игнатьев счастлив, электрики счастливы. Один Громов потом сходит с ума, глядя на трассировку по шагам.
— Громов для того и существует, — спокойно сказал Алексей, — чтобы у кого‑то была интересная работа.
Он взял с соседнего стола расчётную таблицу.
— Нам всё равно нужно прогнать модель. Иначе мы узнаем про ошибку в переносе уже на плате. А там вносить правку — это карандашик ластиком стереть, это зубилом по текстолиту.
В своём времени для проверки нового внутреннего блока он бы открыл симулятор, нажал пару кнопок, получил красивый график сигналов и зелёные галочки по тестам. Здесь же проверка означала одно: тащиться в машинный зал, добывать талон и уговаривать чужую железяку поработать на тебя пару ночей.
— Значит, — резюмировал он, — нам нужно два–три ночных прогона. Модель арифметики, модель управляющего автомата. Часов шесть, максимум восемь.
— Ага, — сказал Евгений. — И где вы видели свободные восемь часов на ЕС‑ке в сентябре? У них сейчас плановые задачи бегают, отчёт по заводу, квартал на носу.
Он всё‑таки взял со стола папку с листингом модели, полистал.
— Ладно. Попробуем. Вдруг звёзды встанут.
Он натянул пиджак.
— Пойдёмте, Алексей Николаевич. Познакомлю вас с настоящим дефицитом. Ради деталей вы уже побегали, теперь очередь дошла до самой дорогой детали — времени.
Машинный зал корпуса 12Б встретил их привычным холодком и запахом озона. За стеклянной дверью гудели шкафы ЕС‑1035, под фальшполом шелестел воздух, от линолеума поднималась ровная прохлада. Внизу, под табличкой «Проход по пропускам», дежурила неизменная Тихонова, которую Громов почему-то всегда называл Тихоновной.
Перед её столиком извивалась небольшая очередь: оператор с пачкой перфокарт, молодой техник с коробкой перфоленты, какой‑то начальник в костюме с красным портфелем — как флажок на демонстрации.
— Очередь в магазин, — тихо сказал Евгений. — Только вместо колбасы — машинное время. И его тоже не на всех хватает.
Алексей посмотрел на часы. Было около трёх дня, пятнадцатое сентября — тот самый момент, когда все внезапно вспоминали, что квартал заканчивается через две недели.
В его школьном прошлом — уже будущем — очередь выглядела иначе: пятнадцать пацанов у кабинета информатики и один БК‑0010 на столе. В дежурной тетрадке у учительницы — список «кто сегодня успел поиграть в танчики». Здесь всё было серьёзней: вместо танчиков — план по заводу, вместо учительницы — Тихонова с журналом учёта и печатью.
— Следующий! — сказала она.
К начальнику с портфелем у неё отношение было почти ласковое. Он склонился к столу, заговорил полушёпотом:
— Там у нас по плану… комплекс «План‑Фонд», квартальный. Вчера не успели — сегодня бы допробежать.
— Сколько времени? — деловито спросила Тихонова.
— Часа два, — смущённо сказал начальник. — Ну максимум три.
— Записаны вы на сегодня с девятнадцати до двадцати двух, — напомнила она, заглядывая в журнал. — Ну…
Она закрыла глаза, мысленно что‑то переставила.
— Могу дать вам ещё полчаса. Но не больше. — Она подняла взгляд. — Весной вы уже один раз «максимум три» растянули до полуночи. Я помню.
Начальник заулыбался, заверил в вечной благодарности и отступил. Следующий в очереди оператор протянул пачку перфокарт и талон.
Евгений ждал, мусоля в руках сигарету: в машинный зал с огнём — табу.
— Помните, Алексей Николаевич, — наклонился он к нему, — это не просто женщина. Это богиня очередей. Она знает, кто и сколько здесь тратит, и может вас записать, а может…
Он лёгким движением ладони показал, как просто человека выкидывает из потока.
Когда очередь дошла до них, Тихонова уже чуть устала, но бдительности не теряла.
— Громов, — сухо сказала она, прежде чем он успел открыть рот. — Я думала, вы в отпуске.
— Я в творческом, — сказал Евгений. — Вот, привёл к вам нового художника.
— Творческий отпуск в сентябре, — буркнула она. — На плановые комплексы, что ли, вдохновение ищете?
— Плановые комплексы вдохновения не достойны, — отозвался Евгений. — Я к вам с благородной целью. Нам бы…
Он выдержал паузу.
— Немножко машинного времени. Ночью. Даже можно под утро.
— «Немножко», — повторила Тихонова. — Это сколько?
— Часа четыре, — не моргнув, сказал Евгений. — Разбить на две ночи. Мы хотим — по образу и подобию вашего плана — прогнать модель узла управления для табличного вычислителя.
— Для чего? — подозрительно спросила она.
— Для того самого прибора, что вам на НТС показывали, — вмешался Алексей. — «Учебно‑демонстрационный комплекс, опытная партия десять штук».
Он показал пропуск и служебку, где красовалась жирная подпись: «Разрешить использование машинного времени для моделирования устройства».
Тихонова бегло глянула на бумагу.
— Разрешить — одно, — сказала она. — А выделить — другое.
Она развернула к ним журнал.
— Смотрите.
Строки с датами были исписаны мелким почерком: «План‑Фонд», «СМЕТА‑76», «Комплекс ГЛАВБАНК», фамилии ответственных, часы, галочки.
— На ближайшие две недели ночи расписаны, — сказала Тихонова. — Отчёты, план, испытания по госзаказу. — Она подняла глаза. — У вас что, авария? Без этого вашего… узла… завод встанет?
— Пока нет, — честно сказал Алексей.
— Вот и славно, — отрезала она. — Тогда встаём в очередь.
Она взяла карандаш, открыла следующую неделю.
— Есть, знаете, окно… двадцать девятого, с трёх до четырёх ночи. — Она посмотрела поверх очков. — Подойдёт?
— Двадцать девятое? — переспросил Евгений. — То есть через две недели? — Он фыркнул. — Мы к тому времени эту модель уже в железе спаяем и сами же будем волосы рвать, если что-то пойдёт не так.
— Не я это придумала, — пожала плечами Тихонова. — План есть план.
Она ткнула в журнал.
— Видите? «Срочно. По указанию министерства». Это вот здесь, здесь и вот тут. У меня ночи не резиновые.
Евгений ещё не сдавался.
— А вот недавно, когда ваш «План‑Фонд» завалился на середине выполнения, — напомнил он, — кто его поднимал?
Он подсунул ей сигарету «Ява».
— Вы не подумали, что без нашего шаманизма ваш план до сих пор бы печатали в мартовском варианте?
Тихонова чуть дрогнула — не от сигареты, от воспоминаний. Весной действительно был случай: комплекс лёг, отчёт повис, начальство нервничало. Громов тогда сидел до утра, матерился на Фортран и дисковую подсистему, но вытянул.
— Вот именно, — сказала она. — Тогда вы своё машинное время уже отработали.
Она сдвинула сигарету обратно.
— Курить — на улице. Просить — по форме. — Она снова ткнула в журнал. — Двадцать девятое, три–четыре. Записывать?
Евгений дернул плечом. Это была уже не просьба, а сдача в плен.
— Не записывайте, — вмешался Алексей. — Мы попробуем через руководство центра.
Он улыбнулся.
— Не обижайтесь, Елена Петровна. Мы понимаем, что вы сами в этих рамках.
— Я в рамках, — сухо сказала Тихонова. — А вы — в очереди.
И уже другим посетителям:
— Следующий!
Они отошли к стене, пропуская вперёд тех, кто нёс килограммы перфокарт и толстые папки с грифами.
— Видали? — процедил Евгений вполголоса. — Никаких «игрушек». Только план, отчёт, зачёт и отчёт о зачёте.
— Она делает свою работу, — подумал Алексей. — В моём времени это называлось бы «администратор кластера». — Он криво усмехнулся. — Только вместо кнопки «kill job» у неё — телефон министерства.
— Ладно, — сказал Евгений. — План «А» провалился. Переходим к плану «Б».
— «Б» — это «блат»? — уточнил Алексей.
— Нет, — сказал Евгений. — Это «большое одолжение».
Начальник вычислительного центра сидел в своём кабинете, как капитан в рубке корабля. На стене — схема ЕС‑1035 с подписью «Ввод в эксплуатацию», рядом — график загрузки машины, жирные столбики которого уверенно тянулись к сотне процентов. На подоконнике — неизменный фикус. Похоже, у начальства фикусы выдавали по ведомости.
Звали капитана Кирилл Савельевич. Лет сорок пять, седина на висках, голос как у диктора радиостанции «Маяк».
— Громов, — сказал он, поднимая голову от стопки листингов. — Вы у нас что, по партийной линии? Без звонка, без стука.
— По совести, — отозвался Евгений. — Совесть заела — решил зайти.
— У совести пропуска нет, — заметил Кирилл Савельевич. — А у вас есть?
— Есть, — вставил Алексей, показывая пропуск и служебку. — Морозов Алексей Николаевич, НИИ «Электронмаш», КБ‑3.
— Это я уже видел, — сказал Кирилл Савельевич. — На НТС. Вы — тот самый любитель табличных приборов.
— Любитель — это громко, — мягко ответил Алексей. — Я по долгу службы.
— Ну‑ну, — сказал начальник и перевёл взгляд на Евгения. — И что вам обоим от моей скромной персоны надо?
Евгений положил на стол папку с листингом.
— Нам от вас — два ночных окна по три часа, — без прелюдий сказал он. — Для моделирования узла управления по служебке. — Он коснулся бумаги. — Взамен — мы помогаем вам с вот этим.
Кирилл Савельевич поднял бровь.
— А с чем с этим?
— Это, — с достоинством сказал Евгений, — ваш комплекс отчётности «Свод‑76», который вчера в три ночи споткнулся на двадцать четвёртой строке входной ленты и завис так, что даже операторы креститься начали.
Он вытянул из папки пару листов.
— Я у Тихоновой списочек попросил. Она даже не удивилась.
Кирилл Савельевич поморщился. Судя по виду, «Свод‑76» был его личной болью: толстый листинг на Фортране, с закладками, карандашными пометками и аккуратно обведёнными красными цифрами.
— Комплекс работает, — упрямо сказал он. — Мы его уже два квартала как гоняем.
— Он работает, когда его гладят по голове, — возразил Евгений. — А как только вы ему даёте чуть больше входных данных, он начинает считать, что трёхзначных кодов цехов в природе не существует.
Он ткнул пальцем в листинг.
— Вот тут, видите? Вы в массиве оставили длину два, а реальные коды — три. Он у вас срезает одну цифру. В итоге весь завод превращается в один большой «цех 23».
— Не может быть, — сказал Кирилл Савельевич, но взгляд у него стал виноватый.
— Может, — упрямо сказал Евгений. — И если министерство в этом квартале увидит, что у вас материалы по всему заводу проходят через один цех, они начнут задавать вопросы.
Он спокойно убрал бумагу обратно.
— Я могу это поправить. Ночью. В машинном зале. Заодно прогнать наш комплекс моделирования. Машина всё равно будет работать. Вам — исправленные отчёты и спокойная жизнь. Нам — шесть часов честно отработанного времени.
Кирилл Савельевич вздохнул. Видно было, что он мысленно прогоняет сценарий: что страшнее — шесть часов ночного моделирования или звонок из министерства с вопросами про «цех 23».
— Вы мне предлагаете… — начал он.
— Обмен, — подсказал Алексей. — Неофициальный. Но логичный.
— Это называется «рациональное использование вычислительных ресурсов», — добавил Евгений. — Машина будет загружена ровно настолько, насколько вы и так хотите. Просто в свободных промежутках между чтением ленты и записью на диск у неё будет ещё одна полезная операция.
Кирилл Савельевич поднялся, подошёл к графику загрузки на стене, погладил его взглядом. Потом вернулся.
— Нигде вы, Громов, не пропадёте, — сказал он. — На любой машине найдёте себе дырочку.
— Я — как вирус, — серьёзно сказал Евгений. — Только полезный.
Начальник всё‑таки улыбнулся.
— Ладно, — сказал он. — Официально я вам, конечно, ничего гарантировать не могу.
Он открыл сейф, достал маленькую записную книжку.
— Но могу дать распоряжение операторам: в ночь с семнадцатого на восемнадцатое, и с восемнадцатого на девятнадцатое. С нуля до трёх.
Он поднял палец.
— При условии, что ни одна ваша игрушка не сорвёт плановый «Свод‑76». И что к утру я получу исправленный листинг и проверенный отчёт. Без «цеха 23» на весь завод.
— Согласен, — сказал Евгений так быстро, что было понятно — он уже считал часы своими.
— И ещё, — добавил Кирилл Савельевич. — Ни байта впустую. Никаких ваших «пробных запусков на всякий случай», многостраничных распечаток с «календарями» и прочей ерунды. Все данные, все ленты — по делу.
— У нас нет времени печатать «Привет, СССР», — вмешался Алексей. — Мы сразу печатаем «Свод‑76, отчёт по заводу».
— Вот и отлично, — кивнул начальник. — Тогда идите к Тихоновой, я ей позвоню.
Он снова посмотрел на Евгения.
— И учтите: если ваш моделирующий комплекс окажется тяжелее, чем вы обещаете, я первым пойду с докладной к вашему Седых.
— А если легче? — спросил Евгений.
— Тогда, — неожиданно мягко сказал Кирилл Савельевич, — я подумаю, что, может быть, у вашей табличной машины есть перспектива.
Он помолчал.
— Только думать об этом буду тихо.
В коридоре, пока начальник вычислительного центра звонил вниз, Евгений выглядел довольным котом, который только что договорился с молочницей.
— Видели? — шепнул он Алексею. — Три часа подряд. Две ночи.
Он показал рукой, как будто держал невидимый кирпичик.
— Это вам не резистор МЛТ на рынке сторговать. Это шесть часов ЕС‑1035. Можно на стену вешать.
— Вы уверены, что успеете и их комплекс поправить, и нашу модель прогнать? — уточнил Алексей.
— Если не успеем, — пожал плечами Евгений, — значит, плохо планировали.
Он усмехнулся.
— Вы же сами говорите: последовательность шагов важнее красивой схемы. Вот я и составлю последовательность.
Ночью машинный зал выглядел чуть менее официально. Дневные костюмы разошлись по домам, остались операторы в халатах, дежурный электрик да редкие одиночки, как они.
Семнадцатое-восемнадцатое сентября, час десять ночи. За окнами — темно, в коридоре — только свет под дверью машзала. Внутри — ровный гул вентиляторов и редкий треск реле.
Тихонова встретила их уже без привычной дневной бронзы в голосе, но строгой осталась.
— Вас записали, — сказала она вместо приветствия. — С нуля до трёх.
Она повернулась к Евгению.
— Если хоть одна ваша программа ляжет и затрёт буфер, я вас утром в счётчик не по строкам, а по байтам посчитаю. Понятно?
— Понятно, — серьёзно сказал Евгений. — Ни байта впустую. Только строго выверенная последовательность.
Алексей достал из папки пачку перфокарт.
— Это — модель внутреннего блока, — пояснил он. — Здесь нет ничего, что могло бы залезть в системные области. Обычная пользовательская программа на ассемблере. Посчитаем, сколько тактов тратится на арифметику в нашем варианте, сравним с прежним.
Он поймал себя на том, что говорит так, будто объясняет запуск тестов в CI — только вместо Jenkins у них Тихонова, вместо логов — полосатая бумага.
— Пойдёмте уже, — махнула она. — Пока я добрая.
Они прошли в зал. ЕС‑1035 в полумраке казалась живым существом: зелёные лампочки мигали, ленточные накопители лениво проворачивали катушки, на пульте оператора горел квадратик часов.
Евгений, устроившись за терминалом, быстро набрал несколько команд, вставил перфоленту с «Свод‑76» в очередь задач, потом — их модель.
— Сначала — отчёт, — сказал он. — Пусть машина сделает вид, что работает по плану. А мы в промежутках — своё.
Он обернулся к Алексею:
— Ваша модель примерно сколько памяти жрёт?
— С запасом — килобайт десять код и столько же данных, — ответил Алексей. — На ваш масштаб — крохи.
— На нашем масштабе килобайт — это ещё единица измерения, а не пыль, — заметил Евгений. — Но ладно. Прокатит.
Первые полчаса они честно смотрели, как «Свод‑76» переваривает очередную порцию входных данных. На принтере медленно ползли строки: «Цех 101, Цех 102…» — уже без подозрительных «23».
— Видите, — довольно сказал Евгений. — Исправленный массив творит чудеса.
Когда очередь задач дошла до их модели, Тихонова подтянулась к пульту, как к окопу.
— Сколько времени будет считать? — спросила она.
— Минут пять, — сказал Алексей. — Плюс печать результатов.
— Если будет двадцать — вы потом ещё десять отчётов сами руками на счётах посчитаете, — предупредила она.
Евгений нажал клавишу запуска.
На панели на секунду вспыхнули несколько лампочек, вентиляторы чуть набрали обороты. ЕС‑ка, по сути, выполняла то, что любой современный Алексею ноутбук сделал бы за полсекунды. Но здесь каждая микросекунда была расписана по журналу.
Принтер застрочил: «Тест 1. Сложение. Число тактов… Тест 2. Умножение…». Алексей, глядя на цифры, прикидывал, насколько выросло время прохода по сравнению с прошлой, более мощной схемой.
— Плюс тридцать процентов по сложению, — пробормотал он. — Плюс сорок — по умножению.
Он посмотрел на итоговую таблицу.
— Зато минус пятьдесят по числу микросхем.
Внутри у него щёлкнул знакомый инженерный баланс: немного медленнее, сильно проще. Для бухгалтерской табличной ЭВМ — более чем честный обмен.
— Пользователь этого не заметит, — сказал он вслух. — А наш Игнатьев заметит.
— Кто‑то же должен быть счастлив, — заметил Евгений.
Тихонова взяла распечатку, пробежала глазами.
— Если бы все ваши «игрушки» так быстро бегали и так мало печатали, — сказала она, — я бы вам сама график ночных смен вела.
— Запишите это в журнал, — попросил Евгений. — «Игрушка, которая бегает быстро».
— Запишу, — хмыкнула она. — В графе «особые отметки».
Она всё‑таки улыбнулась.
— Ладно, работайте. До трёх у вас ещё есть время. Только не забывайте, что после вас опять «Свод‑76» пойдёт.
К трём ночи они успели прогнать весь набор тестов, поправить пару мелких ошибок в модели и окончательно убедиться: их «обеднённый» набор микросхем вполне способен тянуть задуманный ЦУБ. Пусть медленнее, пусть с некоторыми тонкостями по очередности операций, но тянет.
На выходе Алексей держал в руках пачку распечаток. В этих таблицах времени и тактов уже просматривался контур будущей машины — не только на ватмане, но и в железной логике.
— Ну что, — сказал Евгений, застёгивая пиджак, — доволен? — Он зевнул. — Я — нет. Я хочу спать.
— Доволен, — честно сказал Алексей. — У нас теперь не просто схема, а схема, прошедшая через большую машину.
Он посмотрел на стойки ЕС‑ки.
— Почти как вакцина: если прототип выдержал проверку на этой зверюге, то из К155 его потом будет сложнее убить.
На выходе Тихонова вернула им пропуска, сделала запись в журнале: «Моделирование табличного комплекса. Время — 2.47. Замечаний нет».
— Запомните, — сказала она напоследок. — Машина — не игрушка.
Она помедлила.
— Но иногда ей полезно поиграть. Чтобы потом меньше ломалась на серьёзном.
— Это мы умеем, — сказал Евгений. — Поиграть серьёзно.
На улице стояла тёмная, холодная предрассветная тишина. Завод спал, только где‑то вдали гудел трансформатор. Алексей на секунду остановился, вдохнул сырой воздух.
В его будущем такие ночи назывались «дедлайном» — ночной прогон тестов, кофе, чат в мессенджере. Здесь было всё то же самое, только без кофе и без мессенджера, зато с фикусом на подоконнике и Тихоновой у пульта.
«Разницы, по сути, немного, — подумал он. — Там — облако, тут — ЕС. Там — запрос в дата‑центр, тут — разговор с Кириллом Савельевичем. Там — виртуальная очередь задач, здесь — журнал у двери».
Он посмотрел на папку с распечатками.
«Зато результат — тот же. Есть цифры. Есть основание сказать: „Так работает“. А всё остальное — фон».
Он поправил кепку, которой обзавёлся за лето, и пошёл вместе с Евгением к галерее, ведущей к КБ‑3.
Проект «Сфера‑80» обзавёлся ещё одним невидимым компонентом — несколькими часами машинного времени на большой ЕС ЭВМ. Получено в обмен на чужую ошибку в массиве и пару ночей без сна.
Инженерная логика была довольна. Остальной мир — об этом пока не подозревал.