Воспоминания об И. С. Бруке
Гробман Давид Матвеевич
След истинно крупного ученого, оставленный им в науке, во многих случаях оказывается гораздо шире, чем список его научных статей, книг, изобретений и разработок, выполненных под его руководством и по его идеям. Существенной частью этого следа являются также задачи, сформулированные им в беседах с другими специалистами и нигде не опубликованные. Исаак Семенович Брук относился именно к такому типу ученых.
В конце пятидесятых годов он высказал мнение, что существующие ЭВМ необходимо использовать для автоматизации проектирования и контроля узлов и блоков ЭВМ. Связанные с этим проблемы были включены затем в планы работы руководимого им Института электронных управляющих машин (ИНЭУМ).
Есть основания считать, что в СССР эти исследования были пионерскими. В этой заметке речь пойдет только о вопросах, касающихся контроля цифровых схем.
В конце 50-х — начале 60-х годов тесты проверки узлов ЭВМ составлялись по принципу проверки операций, без изучения схем и элементной базы. ЭВМ считалась работоспособной, если все тесты выполнялись правильно. Однако зачастую такая «работоспособная» машина оказывалась не в состоянии выдать верный результат при выполнении верной программы.
И. С. Брук популярно объяснял, что если машина исправна и программа не содержит ошибок, то результаты получатся правильные. Он провозгласил принцип: «Тесты должны проверять не операции, а оборудование».
При разработке метода контроля логических схем этот принцип привел в конце концов к необходимости решения следующих задач:
- изучение наиболее вероятных неисправностей ЭВМ, возникающих при ее изготовлении и эксплуатации;
- моделирование логических схем с целью проверки правильности их функционирования и обнаружения критических состязаний под воздействием заданных тестов;
- определение полноты тестов, т. е. вычисление отношения числа проверяемых неисправностей выбранного класса к их общему числу в данной схеме;
- автоматическое построение теста для данной схемы;
- минимизация тестов с сохранением их полноты;
- локализация дефектных элементов;
- создание универсальных устройств для проверки блоков ЭВМ и диагностика их неисправностей.
В настоящее время опубликовано много методов и алгоритмов решения перечисленных выше задач. Программные реализации этих алгоритмов объединяются в автоматизированные системы синтеза тестов (АССТ). Однако нельзя сказать, что эти системы полностью решают все проблемы контроля логических схем. Например, до сих пор нет удовлетворительного алгоритма моделирования этих схем с учетом разброса задержек элементов. Для определения полноты тестов в настоящее время используются методы параллельного моделирования, дедуктивный и конкурентный методы. Однако обработка «больших» схем, содержащих десятки и сотни тысяч вентилей, требует при любом методе чрезмерных затрат машинного времени. Поэтому зачастую приходится довольствоваться приближенными оценками полноты тестов, которые можно получить статистическим методом, базирующимся на теореме Муавра-Лапласа, или методами, использующими частотные характеристики, путем решения нелинейных систем уравнений, составленных из вероятностных соображений.
Наиболее сложной из перечисленных задач является автоматизация синтеза тестов. Несмотря на большие успехи, достигнутые в этой области (метод Д-кубов, метод парных наборов, метод случайных, но корректных тестов) нельзя надеяться на полностью автоматическое построение тестов для сложных логических сетей. И не только потому, что при этом используются программы определения полноты и корректности тестов, но и потому, что эта задача эквивалентна задаче поиска выхода из лабиринта без знания его карты. Это означает что ее решение невозможно без перебора.
Ввиду сказанного для построения тестов привлекаются и разработчики схем и функциональные тесты, и квазифункциональные тесты подсхем, составленные по результатам моделирования схем на функциональных тестах.
Задача локализации неисправных элементов решается многими способами. Одни из них основываются на заранее построенных с помощью особой программы того или иного вида диагностических словарях, представляющих собой таблицы, где каждая строка содержит код неисправности и координаты неисправных микросхем соответствующих этому коду.
В процессе проверки схемы тестер формирует код неисправности и передает его в управляющую ЭВМ, которая по словарю определяет возможные координаты дефектной детали и сообщает их пользователю. Последний с помощью пробника уточняет диагноз.
Другой способ использует пробник (одноканальный или многоканальный), который переставляется в нужное место человеком по требованию программы, находящейся в управляющей тестером ЭВМ.
В начале 60-х годов в ИНЭУМе были разработаны несколько тестеров для проверки готовых блоков. Первые экземпляры тестеров управлялись программой, записанной на перфоленте. Тестеры работали либо в режиме останова при обнаружении неверного сигнала на выходе проверяемого блока, либо в режиме формирования кода неисправности. Словари в этом случае были оформлены в виде книги, коды отказы были записаны в них восьмиричными цифрами, и строки словаря были упорядочены по возрастанию кодов отказов. Позже для хранения программ, словарей и управления тестерами использовались ЭВМ.
Лет 10-11 назад появились сообщения о применении для моделирования цифровых схем спецпроцессоров. Это послужило наиболее убедительным признанием сложности проблемы контроля. С тех пор в ИНЭУМе было создано несколько вариантов спецпроцессоров моделирования. В настоящее время там разрабатывается спецпроцессор для проверки полноты тестов.
Следует сказать, что для этой цели очень удобны персональные ЭВМ с транспьютерными ускорителями, так как распараллеливание процесса проверки состоит лишь в разделении списка проверяемых неисправностей на столько частей, сколькими транспьютерами снабжены ПЭВМ. Каждый из транспьютеров должен составить перечень непроверенных отказов из своего списка и передать его ПЭВМ, которая после завершения работы всеми транспьютерами формирует окончательный результат.
В заключение нужно отметить, что сделанный здесь обзор основных задач контроля и диагностики логических сетей далеко не полон. Но и того, о чем тут сказано, достаточно чтобы убедиться, что затронутая проблематика сложилась в целое в научно-техническое направление, которое непрерывно развивается вместе с вычислительной техникой.
И. С. Брук постоянно интересовался работами сотрудников ИНЭУМа, занятых решением выше упомянутых задач, радовался их успехам, иногда советовал обратить внимание на те или иные трудности. Но ни одной публикации по тематике контроля логических сетей у него нет. От написания совместных работ он отказывался и даже высказал недовольство, когда в первом сборнике статей, посвященном данной тематике обнаружил ссылку на И. С. Брука как на ее инициатора. Однако нельзя забывать, что у истоков описанного здесь научно-технического направления стоял И. С. Брук.