История отечественной вычислительной техники

Основные принципы проектирования ЭВМ М-10

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

Перед создателями М-10 была поставлена довольно сложная задача: имея микросхемы серии 217 со скоростью срабатывания порядка 15 — 25 нс на вентиль и степенью интеграции до З — 5 вентилей в корпусе и ферритовые сердечники М100П2 с внешним диаметром 1 мм (лучшие из логических элементов и элементов запоминания, выпускавшихся к тому времени), нужно было построить ЭВМ с возможно более высоким быстродействием (в среднем не менее 5 млн. операций/с, имея в виду как операции над 16-разрядными числами, так и операции над 32-разрядными и 64-разрядными числами с плавающей и фиксированной запятыми), с внутренней памятью не менее 5 Мбайт, скоростью внешнего обмена не менее 50 млн. бит в с., скоростями реакции на внешние сигналы при работе в реальном масштабе времени порядка 10 — 20 мкс и сравнительно высокой надежностью (потери времени при круглосуточной непрерывной эксплуатации не более 2,5% от общего календарного времени работы, причем в эти 2,5% включается и время планово-профилактических работ). Некоторым упрощением проблемы являлось то обстоятельство, что заранее был известен класс задач, для которых строилась машина: крупные научные задачи, задачи обработки результатов научного эксперимента “на проходе” (англ. on-line ) и управления ходом эксперимента в реальном масштабе времени, сводящиеся к операциям над большими массивами более или менее однородной информации, операциям над многомерными векторами, матрицами и функциями, заданными своими значениями на множестве дискретных значений аргумента (в частности, вычисление квадратур, интегрирование обыкновенных дифференциальных уравнений и уравнений в частных производных) и т. п. 

Как известно1, пути достижения требуемой производительности были найдены в не всегда обычных и во многом оригинальных структурных решениях. Возможности, предоставляемые структурой М-10 не всегда можно выразить в “операциях в секунду”. Поэтому не следует удивляться, что, хотя производительность М-10 была в свое время оценена в 5,1 млн. опер./с, реальный выигрыш по скорости по сравнению с другими машинами, когда такое сопоставление проводилось, оказывался значительно больше, чем можно было бы ожидать. Например, при расчетах кинетической модели плазмы для сетки в 512 узлов и количестве макрочастиц до 10 в степени 4 (вариант, который на пределе помещается во внутреннюю память БЭСМ-6) разница в скоростях между М-10 и БЭСМ-6 получается примерно в 20 раз, при большем количестве узлов сетки и макрочастиц значительно больше, чем в 20 раз; при этом на БЭСМ-6 счет шел с 48, а на М-10 — с 64 разрядами. При счете одной из задач механики сплошной среды разница в скоростях между М-10 и ЕС1040 получилась более чем в 45 раз (8,5 мин на вариант на М-10 вместо 6,5 ч на ЕС1040).

Новые Структурные решения, примененные в М-10, в дополнение к опубликованному ранее материалу описываются в статьях настоящего сборника.

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

Вопрос о надежности в начале разработки осложнялся тем, что если относительно ферритовых сердечников (их в машине около 40 млн.) имелись представительные статистические данные, дававшие основания для оптимизма, то относительно микросхем серии 217 (их в машине более 600 тыс. корпусов) данные практически отсутствовали. В дальнейшем, уже в период эксплуатации М-10, выяснилось, что надежность этих микросхем удовлетворительна: λ ≈ 10 -8 1/ч в диапазоне рабочих температур 20-30°С. Тем не менее обеспечение надежного функционирования такого большого количества аппаратуры (в машину входят также разъемы, печатные платы, провода, пайки, вторичные источники питания, схемы обрамления памяти и т. д.) вовсе не тривиально.

С самого начала разработки из номенклатуры микросхем серии 217 (достаточно скудной) были исключены для применения в М-10 те типы, в которых внутри корпуса использовались “состязательные” построения, т. е. построения с временными гонками. Такого рода схемотехнику применять было категорически запрещено, и это требование строго контролировалось при разработке. Благодаря этому появилась возможность и при производственном контроле, и при планово-предупредительных ремонтах требовать, чтобы составные части машины и машина в целом работали при значительных перекосах питающих напряжений, с отклонением питающих напряжений от номинала порядка 10%. Потребовалось специальное исследование, чтобы доказать заинтересованным сторонам, что микросхемы, выбракованные в этих режимах, через несколько дней или недель отказали бы и в нормальных режимах, либо уже неработоспособны при нормальных напряжениях питания на краях допустимого для них диапазона рабочих температур; следовательно, в этих режимах к микросхемам не предъявляется никаких чрезмерных требований по сравнению с требованиями, гарантируемыми поставщиком. Все цепи машины охвачены достаточно полным аппаратным контролем (полнота охвата — около 95%), и все устройства машины имеют встроенные узлы для автономного функционального контроля.

Все соединения в машине представляют собой точно рассчитанные электрические линии как правило, с волновым сопротивлением 100 Ом, со специальными элементами для демпфирования колебаний, возникающих из-за неоднородностей в линии, и согласования. Заметим, что при фронте сигнала порядка 10 нс длина волны в материале уже для 3-й гармошки разложения Фурье составляет 600-700 мм и, следовательно, отвод в 150-170 мм является четвертьволновой линией. Однако при разработке первоначально были упущены меры производственного контроля правильности установки элементов демпфирования и согласования. Кратковременный контроль на функционирование блоков, устройств, машины в целом во время производственного цикла, как выяснилось, не выявлял всех ошибок в этих цепях, и они в дальнейшем проявлялись в виде редких, трудно уловимых сбоев. Поэтому в первых образцах машины уже после поставки их потребителям пришлось провести стопроцентную проверку элементов демпфирования и согласования.

Важным подсобным средством обеспечения технологичности и эксплуатационных характеристик является специально разработанный для М-10 стенд-автомат проверки ячеек и блоков, который наряду с логической проверкой производит измерение уровней входных и выходных сигналов и измерение с дискретностью 5 нс времени запаздывания выходных сигналов относительно входных. Временной контроль очень важен, так как в комбинационных схемах иногда даже полный отказ внутреннего элемента схемы (например, отказ одного из транзисторов в микросхеме с мощным выходом, в результате чего вместо перепада в 3 В сигнала на выходе микросхемы получается перепад порядка 1,5 В) на следующих ступенях проявляется только в виде увеличения времени запаздывания.

Интересно, что и в этом месте жизнь преподала не вполне тривиальный урок. Как выяснилось, в логических элементах типа ДТЛ (а вероятно и в других) возможны неисправности, проявляющиеся необычным образом, Это неисправность типа пробоя одного из входных диодов схемы И. Сам по себе вентиль с неисправным диодом работает логически вполне правильно. Однако если на пробитый диод подается логическая единица (по идее — высокий уровень), а на другой вход И — логический нуль, то искажается сигнал на выходе того вентиля (исправного), который присоединен к неисправному входу схемы И; в результате неверно работают другие вентили, тоже вполне исправные, но присоединенные по входам к тому же выходному вентилю, который соединен с неисправным входом неисправного вентиля. Этот факт (до которого, впрочем, можно было бы додуматься и без эксперимента) потребовалось прежде всего учесть при синтезе тестов для ячеек и блоков и соответственно пересмотреть многие из использовавшихся ранее наборов тестов. Труднее было справиться с тем обстоятельством, что неисправность описанного типа не обнаруживалась при стендовой проверке ячейки или блока, если она оказывалась во входном вентиле ячейки (блока). Пришлось специально увеличивать выходные сопротивления генераторов стенда, которыми формируются сигналы на входах испытуемой ячейки (блока), и ввести в программу испытаний измерение физических уровней входных сигналов испытуемой ячейки (блока).

Вопросы, связанные с электротехническим проектированием М-10, элементной базой, надежностью, методами испытаний и т. п. рассматриваются в статьях настоящего сборника.

Поскольку при проектировании машины основными целями считались производительность и эффективность, с самого начала предполагалось, что программирование будет вестись в основном на машинно-ориентированных языках Автокод-1 М-10 (фактически просто символьный язык один в один, правда с неплохой мнемоникой) и Ассемблер — язык несколько более высокого уровня. Трансляторы с Алгола-60 и Фортрана на язык М-10 появились позже, однако и до сих пор, несмотря на многочисленные усовершенствования, их использование приводит к значительным потерям в быстродействии по сравнению с программированием на машинно-ориентированных языках, потому что структура М-10 и, в частности, ее машинный язык очень сильно отличаются от той структуры, на которую вольно или невольно ориентированы современные алгоритмические языки (хотя они и называются проблемно-ориентированными или даже универсальными). Предполагалось, что основным средством для упрощения программирования на М-10 станет довольно богатая библиотека типовых программ (теперь бы сказали “пакет прикладных программ”), предназначенных для использования в качестве готовых модулей загрузки.

Возможно, что исходная предпосылка относительно того, что и системные программисты и пользователи должны работать в основном с машинно-ориентированными языками, была неправильной. Во всяком случае, сейчас видно, что идея создания векторных машин типа М-10 не обязательно должна противоречить возможности программирования на языках высокого уровня. С другой стороны, как ясно теперь, при разработке М-10 был правильно оценен тот факт, что в создании особо сложных программ, имеющих объем порядка нескольких десятков тысяч или сотен тысяч слов и во многих случаях связанных с реальным временем (а именно на такие программы главным образом ориентирована М-10), основная трудность и основные затраты времени относятся не к этапу написания программ, а к их комплексной проверке и отладке. Языки высокого уровня упростили бы именно написание программ, но затруднили бы создание для пользователей столь мощных средств отладки программ, какие имеются в М-10 при работе с машинно-ориентированными языками.

Уже для целей отладки собственно операционной системы в составе машины М-10 (в устройстве КУ) предусмотрены аппаратно реализованный транслятор с Автокода-1 и аппаратный интерпретатор директив оператора, работающего с одного терминала (терминала 1). Эти же средства использовались для комплексного тестирования в отладки особо больших программ реального времени, которые имели в своем составе собственный диспетчер и собственную программу управления вводом — выводом на физическом уровне, работающие в привилегированном режиме и фактически заменяющие штатный супервизор в период работы такой программы.

Директивы, интерпретируемые указанной аппаратурой, включают в свой состав пуск, останов, продолжение отлаживаемой программы, прохождение отдельных участков программы “шагами”, вывод на терминал содержимого различных регистров, отдельных ячеек или массивов памяти, ввод с терминала информации в регистры или в память, управление регистром и схемой совпадений. Регистр и схема совпадений представляют собой весьма важное средство отладки программ. Они дают возможность по директивам, передаваемым программистом с терминала, но без внесения каких-либо изменений в отлаживаемую программу задавать весьма сложные условия для выработки сигнала прерывания, по которому происходит останов программы либо передача управления к любой отладочной программе, записанной программистом на свободном месте памяти. Например, условие может выглядеть так: “Выработать сигнал прерывания, если будет выполняться передача — управления в такую-то группу ячеек памяти…” или “…Если будет производиться запись в такую-то ячейку памяти…”, или “…Если будет производиться преобразование такого-то регистра…”, или “…Если для формирования адреса обращения к памяти в качестве базы (или индекса) будет использоваться такой-то регистр адресного модификатора” и т. д. и т. п. Действия отладочной программы, вызываемой сигналом прерывания, могут состоять в передаче на печать содержимого определенных регистров или ячеек памяти либо в изменении содержимого каких-либо регистров или ячеек памяти, либо в выработке определенных сигналов оператору, либо в единицы в некоторый счетчик, либо в записи показаний электронных часов в момент прерывания и т. д. и т. п.; все эти действия могут предваряться проверкой некоторых дополнительных условий, а дальше управление может быть возвращено отлаживаемой программе для продолжения ее работы.

Все директивы могут передаваться с терминала как после остановки отлаживаемой программы, так и “на ходу”, влияя на ход программы лишь в той мере, в какой оператор меняет содержимое отдельных регистров или ячеек памяти. Темп прохождения программы может измениться только благодаря включениям по сигналу прерывания дополнительной отладочной программы (обычно несколько команд); сама работа схемы совпадения (проверка заданных условий) во время прохождения отлаживаемой программы на скорость ее работы не влияет.

Первый вариант операционной системы М-10, который и сейчас поставляется всем потребителям машины в комплекте с аппаратурой, предоставляет все перечисленные и некоторые дополнительные возможности, но не одному программисту, а нескольким, работающим одновременно с 8 терминалов по разделению времени в интерактивном режиме. Дополнительные возможности состоят, например, в расширении номенклатуры форм ввода — вывода информации по директивам с терминала: для ввода информации наряду с двоичной, восьмеричной, буквенно-цифровой формой и Автокодом-1 разрешена также десятичная форма с фиксированной или плавающей запятой, а для вывода наряду с двоичной, восьмеричной и буквенно-цифровой — также десятичный вывод и вывод в Автокоде-1 (через ретранслятор с машинного языка); последняя форма вывода может использоваться и для получения листингов отлаженных программ.

Регистр и схема совпадения при работе с этой операционной системой предоставляются разным пользователям по разделению времени — на тот же отрезок времени, что и центральный процессор. Если в данный момент задача некоторого пользователя пассивна, то директива на изменение условий в регистре совпадений с соответствующего терминала заменяет информацию не в самом регистре совпадений, а в фотографии этого регистра в памяти. При активизации задачи фотография регистра совпадений (может быть, уже измененная) пересылается собственно в регистр совпадений. Впрочем, по тому же принципу организовано исполнение директив на ввод информации в другие регистры, а также на вывод информации из них.

Таким образом, те возможности для отладки программ, о которых в одной отличной книге по программированию 2 говорится как о “деле почти неслыханном”, ко времени издания этой книги в США ( 1975 г .) уже имелись в распоряжении пользователей М-10.

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

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

Один из вариантов называется “ОС реального времени”. Он обеспечивает управление прохождением одной приоритетной задачи, связанной с реальным временем, а для задач других программистов, работающих с терминалов, выделяет свободные интервалы времени, предоставляя им те же возможности, что и первый вариант операционной системы, и некоторые дополнительные. Приоритетная программа реального времени по-прежнему должна иметь свой диспетчер и свои программы ввода — вывода, но теперь эти части работают в непривилегированном режиме и управляют ходом программы и вводом — выводом только на логическом уровне. Переход к физическому уровню осуществляется обращениями к соответствующим разделам операционной системы. Предусмотрены специальные средства для автоматического устранения последствий сбоев.

Другой вариант называют обычно просто “ОС М-10”. Он предназначен для того случая, когда машина используется для решения крупных научных и инженерных задач без привязки к реальному времени. В этом варианте предусмотрена возможность одновременной интерактивной работы по разделению времени до 48 программистов, причем, кроме традиционных для М-10 терминалов на основе пишущей машинки и перфоленточного оборудования, могут применяться терминалы на основе дисплея ЕС7064 с клавиатурами и световым пером. Наряду с Автокодом-1 и теми же, что в первом варианте, средствами отладки на нем имеются также трансляторы и средства отладки программ на Ассемблере М-10, Алголе-60 и Фортране; предусмотрена возможность присоединения других языков, имеется развитая файловая система. Учитывая, что некоторые крупные задачи требуют даже при монопольном использовании машины многих часов непрерывной работы, для защиты от влияния случайных сбоев предусмотрены автоматическая запись содержимого памяти и регистров в контрольных точках программы, указанных программистом (с помощью директивы, переданной с терминала), и автоматический рестарт от последней контрольной точки в случае появления сбоя.

Еще один вариант операционной системы работает в тех экземплярах машины, которые используются для технического обслуживания крупной экспериментальной установки, ее тестирования в затем управления ходом и обработки результатов эксперимента. За этим вариантом закрепилось жаргонное название “экспериментальная ОС”, а его особенностью является возможность организовать одновременное прохождение в разделении времени нескольких равноприоритетных задач реального времени, управляемых с разных терминалов, — разумеется, с меньшими скоростями реакции на внешние сигналы, чем для одной приоритетной программы при использовании “ОС реального времени”.

Все эти варианты, вероятно, можно объединить в единой многоцелевой операционной системе, но на это пока не хватило ни времени, ни сил, да и пользователи, привыкшие к своим вариантам операционной системы, не проявляют готовности переходить к другим вариантам. Заметим, что “ОС М-10”, упоминавшаяся выше, позволяет присоединять модули адаптации к языкам директив и обращений от пользовательских программ к операционной системе, применяемым в других вариантах операционной системы.

К сожалению, рамки настоящего введения не позволяют осветить полнее принципы проектирования ЭВМ М-10, как рамки сборника не позволяют рассказать подробнее о реализованных в ней технических решениях.

Примечания

1. Карцев М. А. Вычислительная машина М-10. — В сб.: “Доклады Академии наук СССР”, т. 245, 1979, № 2 

2. Э. Йодан. Структурное проектирование и конструирование программ. Пер. с англ. М., “Мир”, 1979, (с. 359 русского перевода)

Статьи об ЭВМ М-10 
Сборник “Вопросы радиоэлектроники”, серия “Электронная вычислительная техника”, выпуск 9, 1980 г.
Перепечатывается с разрешения авторов.
Статья помещена в музей 28.03.2007 г.