Выбор Фрагмент 3

1988г.
Сентябрь-октябрь

При оформлении договора на разработку преобразователя координат в вузе Алексею сообщили, что есть распоряжение Министерства Путей Сообщения о том, что профильные институты должны заниматься исключительно разработками для железнодорожного транспорта. И по этой причине принято решение сотрудникам, занимающими НИОКР в других областях, платить за работу по совместительству  не 50%, а 30% от основной зарплаты. Т.е. за эту довольно сложную разработку будут основным исполнителям платить меньше, чем простому монтажнику.

Алексей ответил резко:

- Напугали! Никакие ограничения не заставят меня отказаться от данной работы. Я это буду делать в любом случае, потому, что мне это интересно!

Преобразователь координат в длины ног робота Шестиноги задумали сделать в виде 32-разрядного RISС – процессора с 72-разрядной длиной микрокоманд. RISC – архитектура процессора с сокращенным набором команд позволяла ускорить вычисления.

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

Для быстрого обмена с памятью было организовано двух-портовое оперативное запоминающее устройство (ОЗУ) , когда одновременно происходила запись в ячейку памяти и чтение из другой ячейки.

Для быстрого перемножения был выбран 16-ти разрядный умножитель, представляющий собой комбинационную интегральную схему с потреблением по 5В 1А. Микросхема имела 64 ноги и умножала 16-ти разрядные числа за 160 наносекунд, что было очень быстро для текущего развития микроэлектроники. 32-разрядные числа решено было перемножать по 16 разрядов  «столбиком» программно.

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

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

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

Пока изготавливали печатные платы и выполняли на них монтаж электронных компонентов Алексей и Игорь писали для них программы. Вернее сначала Алексей написал язык мнемокодов для микрокоманд и их отдельных полей.

Отлаживать написанные программы Алексей решил поэтапно. Для пошаговой отладки была изготовлена платка со светодиодами с индикацией адресов и данных микрокоманд. Из смешного: плата была печатной, и когда Алексей ее получил , он испытал шок — все светодиоды данных (72 штуки) были перепутаны местами. Конструктор завода, которая получила задание на эту отладочную плату, извинялась и говорила, что она передала эту работу молодой сотруднице, которой нужны были деньги. Алексей, выругавшись про себя, и не имея времени на перезаказ платы, сел и перепаял всё проводами, порезав неправильные соединения.

На второй день отладки В.Е. подвел к Алексею известного автора справочника по микропроцессорам Хвоща Сергея Тимофеевича из ЛЭТИ, пришедшего на кафедру  по своим делам. Автор справочника был немало удивлен нашим проектом. Особенно его поразило, что процессор менял время такта в зависимости от выполняемой операции. Он несколько раз выразил сомнение в его практической реализации:

- Тут же параллельные вычисления на высокой частоте синхронизации! На бумаге все красиво, а при реализации ничего не будет работать из-за эффекта «гонок»! Вы утонете в помехах!

На борьбу с помехами Алексей потратил 2 дня: кое-где поставил емкость, кое-какой провод между платами экранировал.

Система заработала, но при отладке Алексей сразу обнаружил, что один условный переход после выполнения операции не выполнялся по заданному адресу.

Трансляцию программы для записи кодов в память программ выполняла советская ЭВМ СМ-1800. Время трансляции было очень большим — более 40 минут. Любые изменения в программе требовали новую трансляцию и новую прошивку памяти программ. Алексей уходил с работы после 23.00, стараясь успеть на электричку домой. Особенно обидно было, когда после 45 минут ожидания результата СМ-1800 сообщала , что ей не хватило памяти на вычисления.

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

- Почему 1кОм, когда в схеме указано 430 Ом?

- Какая разница  - ответил Андрей, - это ж открытый коллектор!

Алексей поморщился:

- Если вы чего-то не понимаете, спрашивайте. Ваш резистор вместе с паразитной емкостью выхода добавил задержку 5 нс, что привело к неправильному выполнению команды условного перехода! Я потратил 3 дня на поиск ошибки в сложной микропрограмме, а ее там не было.

В.Е. сказал тогда Алексею:

- Вы не правы, начиная поиск ошибки с себя.  Ищите их у других, быстрее процесс отладки пойдет!

И практика подтвердила мнение В.Е. при стыковке с функциональным преобразователем, подпрограмму для которого писал Игорь.

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

При поиске ошибки Алексей проверял различные гипотезы, организовывал «ловушки», и вот спустя 2 дня спросил строго у Игоря, зачем он использовал «чужой» регистр. Игорь промямлил, что это он сделал временно и забыл поправить.

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


Рецензии