В середине 1960-х годов предприятия Министерства радиопромышленности СССР получили утвержденное МО страны техническое задание на разработку вычислительных средств для системы противосамолетной обороны С-300 (SA-10 Grumble по классификации НАТО). Однако долгое время это задание оказывалось невостребованным — предприятия-разработчики считали задание невыполнимым. Трудности были связаны не только с высокими требованиями к аппаратной части управляющего вычислительного комплекса, но и к системе программирования на языках высокого уровня. В конце десятилетия за реализацию задач, поставленных в техническом задании, взялся Институт точной механики вычислительной техники Академии наук СССР (ИТМиВТ АН СССР). Главными конструкторами новых вычислительных машин стали академики Сергей Алексеевич Лебедев и Всеволод Сергеевич Бурцев, а затем и их коллега Евгений Александрович Кривошеев [1, 2].

Главные конструкторы ЭВМ серии 5Э26

К тому времени институт закончил разработку ЭВМ 5Э92б, которая уже прошла апробацию в составе крупномасштабного макета системы противоракетной обороны (системы «А»), и завершал подготовку к серийному выпуску вычислительной машины 5Э51. По итогам опыта создания вычислительных средств для систем противоракетной обороны генеральный конструктор системы А-35 Григорий Васильевич Кисунько рассчитал, что для надежного сопровождения и уничтожения малозаметной баллистической цели необходимо обеспечить быстродействие на уровне 100 млн операций в секунду. Это значительно превышало возможности существовавших в то время ЭВМ, построенных на дискретных полупроводниках, и в ИТМиВТ началось проектирование архитектуры нового многопроцессорного вычислительного комплекса «Чегет» (будущего МВК Эльбрус-1).

Не предполагая скорого открытия финансирования амбициозного проекта, Лебедев решил воспользоваться разработкой по техническому заданию на ЭВМ для противосамолетной системы С-300ПТ, чтобы создать два коллектива и на одни и те же средства вести обе разработки. Это было вполне оправданно — несмотря на различие в условиях функционирования противосамолетного и противоракетного комплексов, требования к системе программирования для них были одинаковы. ПО должно было разрабатываться на языках программирования высокого уровня, что придавало системам новое качество, которого нельзя было получить, используя программы на машинно-зависимых языках низкого уровня или в двоичных кодах. Появилась возможность в разных проектах, включая и перспективные, использовать значительные объемы уже созданного кода, расширять круг программистов и сократить время их обучения.

Несмотря на двойственность стоявшей перед Лебедевым задачи — необходимость одновременной разработки двух уникальных ЭВМ, мобильной и стационарной, предназначенных для решения двух разных задач — ПВО и ПРО, он весьма серьезно отнесся к участию института в работах, хотя ИТ-МиВТ прежде не вел разработки мобильных ЭВМ для систем ПВО. Он лично ездил к генеральному конструктору системы С-300 академику Борису Васильевичу Бункину и его соратнику Александру Алексеевичу Леманскому, представлял им своих инженеров и программистов, рассказывал о своем видении будущей вычислительной машины и о том, как лучше построить взаимодействие нескольких крупных коллективов.

Главные конструкторы систем управления, использовавших ЭВМ серии 5Э26

Работа была выполнена — с конца 1960-х годов и за последующие 30 лет была создана серия из пяти типов вычислительных комплексов: 5Э261, 5Э262, 5Э265, 5Э266 и 40У6, использовавшихся в составе систем С-300 различных конфигураций. Коллектив разработчиков был отмечен Государственными премиями СССР (1980 год) и Российской Федерации (1997 год), а его участники были награждены орденами и медалями за огромный вклад в создание новой вычислительной техники.

Изделие 5Э262 с наладочным пультом
Изделие 40У6 на стенде отладки программ

Серия управляющих ЭВМ 5Э26

Вычислительные машины серии 5Э26 оказались очень удачными и надежными, способными решать разные задачи: расчет траекторий аэродинамических и баллистических целей, расчет траекторий противоракет, распознавание образов, управление различными устройствами по стандартным и специализированным каналам обмена информацией. На машинах [2–5] имелись системы программирования, выполнялась трансляция программ с различных языков программирования, а также велась подготовка текстовой документации, что делало такие ЭВМ универсальными, хотя и предназначенными прежде всего для работы в составе систем управления жесткого реального времени [6]. Благодаря использованию универсальных языков программирования высокого уровня удалось преодолеть проблемы смены поколений аппаратуры и резко снизить время переноса ПО. По прошествии более полувека с момента первых комплексных испытаний эти системы до сих пор используются в составе множества управляющих комплексов, в том числе применяемых в боевых условиях. Конечно, их элементная база, форм-фактор и программное обеспечение непрерывно модернизировались для адаптации к конкретным условиям эксплуатации, однако архитектура почти не менялась.

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

Решения, принятые разработчиками в серии 5Э26, доказали свою жизненность и продолжают делать это до сих пор, но если про одновременно разрабатывавшиеся с ними МВК «Эльбрус» известно достаточно много, то информации по машинам 5Э26, которые вполне можно рассматривать как суперЭВМ в классе мобильных вычислительных комплексов, относительно мало. Между тем структуры данных и система команд, выбранные еще в середине 1960-х, оказались пригодны и для работы с современными языками программирования, конечно, с учетом архитектурных ограничений моделей серии 5Э26. Например, все эти машины имеют размер машинного слова в 32 двоичных разряда, а значит, размер прямоадресуемой памяти теоретически не может превысить 512 Мбайт, однако диапазон представления чисел был расширен за счет их оригинального представления. Впрочем, в 1960-х годах общепринятого стандарта представления чисел с плавающей запятой еще не было — только в 1985 году появился стандарт IEEE-754, когда завершилась начатая компанией Intel в 1976 году работа над сопроцессором для обработки вещественных чисел. Стандарт IEEE-754 упорядочил подходы к решению численных задач и способствовал унификации применяемых при вычислениях алгоритмов. Однако за его рамками остались, например, такие вопросы, как представление очень больших чисел с короткими мантиссами и использование не двоичной арифметики, то есть как раз те, которые волновали разработчиков и заказчиков машин серии 5Э26.

Полноразрядные числа

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

Рост разрядности вычислительных устройств не помешал введению в языки программирования возможностей вычислений с повышенной точностью, в частности, чисел с плавающей запятой двойной точности, а также длинных и коротких целых чисел. Первые языки программирования высокого уровня пытались точно следовать математическим понятиям, скрывая реальную разрядность элементов памяти, отводимых для хранения значений переменных и констант, вводя для обозначения их типов обобщенные наименования (Logical, Integer, Real). Однако постепенно возникла тенденция не только следования математическим моделям, но и использования явных указаний разрядности при определении типов, как это было в языке Эль-76, где определение имени должно сопровождаться указанием формата, например, с помощью спецификатора Ф64, или в языке Go, где наряду с типом int имеются типы int8, int16, int32 и int64.

Числа с плавающей запятой

Все модели машин серии 5Э26 поддерживают только один формат вещественных чисел, для хранения которых выделяется память в одно слово из 32 двоичных разрядов. Вещественные числа занимают в памяти полное слово и, как правило, представляются в нормализованном виде по основанию 4:

4p × M

где p — порядок числа, а M — его мантисса. Порядок и мантисса вещественного числа представляют собой целые значения со знаком (рис. 1).

Рис. 1. Структура вещественного числа

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

В аппаратуре ЭВМ имеется также пара команд, регулирующих режим округления результата выполнения арифметических операций — сложения, вычитания, умножения и деления. Первые модели 5Э26 выполняли округление путем установки в единицу значения самого младшего из старших 32 разрядов результата в случае, если хотя бы один из более младших разрядов (отбрасываемых после выполнения операции) имеет ненулевое значение. Последняя модель серии выполняет округление, более соответствующее принятому в математике, — в модели 40У6 округление выполняется установкой в единицу значения самого младшего из старших 32 разрядов результата в случае, если ненулевое значение имеет самый старший из отбрасываемых после выполнения операции разрядов.

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

Основа долголетия управляющих систем реального времени: типы данных

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

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

При выполнении операций над вещественными числами возможно возникновение аппаратных прерываний, связанных либо с некорректностью операндов (например, делитель в командах деления, равный нулю), либо с некорректностью результата (переполнением или исчезновением значимости). Имеющееся во многих современных языках понятие исключительной ситуации включает в себя ситуации, возникающие при возбуждении аппаратного прерывания. В современных языках программирования, например в С#, некоторые аппаратные прерывания включены в состав классов стандартных исключительных ситуаций. Аппаратные прерывания ЭВМ 5Э26, возникающие при работе с вещественными числами, перечислены в таблице, там же показаны соответствующие стандартные исключительные ситуации языка С#.

Единственным аппаратно поддерживаемым форматом вещественных чисел в машинах серии 5Э26 был оригинальный 32-разрядный формат, позволявший решать численные задачи в расширенном диапазоне величин чисел с достаточной точностью и не выдвигавший чрезмерных требований к оборудованию, которое использовалось для технической реализации оперативной памяти и памяти команд. Все остальные форматы, если они нужны для обеспечения повышенной точности вычислений или для расширения диапазона представимых чисел, моделируются программно.

Целые числа

Рис. 2. Примеры представления целых чисел 0, 223 и –223

Целые числа занимают целиком машинное слово из 32 двоичных разрядов. Целые числа всегда имеют нулевой порядок, представленный в обратном коде, знак которого совпадает со знаком мантиссы (то есть фактически со знаком числа). Только 24 младших двоичных разряда таких чисел являются значащими, при этом все оставшиеся 8 двоичных разрядов (старшие разряды слова) заполняются знаком числа (рис. 2). Тем самым значение знакового (самого старшего) разряда числа размножается так, что все двоичные разряды с 1-го по 7-й имеют одинаковые значения, повторяющие знак числа (нулевой разряд слова).

В системе команд центральных процессоров 5Э26 имеется команда преобразования вещественных чисел к целым. Такое преобразование возможно, если операнд представляет собой нормализованное вещественное число и находится в диапазоне представимых целых 32-разрядных чисел. В противном случае возбуждается какое-либо из прерываний.

При выполнении операций над целыми числами возможно возникновение аппаратных прерываний, связанных либо с некорректностью операндов (например, делитель в командах деления, равный нулю), либо с невозможностью занесения результата в отведенное для него место в памяти ЭВМ. Последняя ситуация может возникнуть, если значение, полученное в регистре сумматора и трактуемое как знаковое, записывается не в полное слово, а в некоторую его часть — полуслово, байт или одиночный разряд. При выполнении такой записи осуществляется аппаратный контроль совпадения всех отбрасываемых (старших) разрядов сумматора со старшим (знаковым) разрядом записываемой части. В случае, если эти разряды не одинаковы по своему значению и не совпадают со знаком короткого целого числа, возбуждается соответствующее аппаратное прерывание. В машине 40У6 аналогичное прерывание может возбуждаться, если осуществляется запись числа со знаком в переменное поле и отбрасываемые (старшие) разряды сумматора не совпадают со знаком записываемого значения. Стандартные исключительные ситуации языка С# соответствуют аппаратным прерываниям ЭВМ 5Э26, возникающим при работе с целыми числами.

Кроме вещественных и целых в ЭВМ серии 5Э26 есть еще упакованные данные, полусловные данные, байтовые (восьмиразрядные) данные, одноразрядные (логические) данные и битовые поля размером от одного до тридцати одного разряда.

Адресация

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

В структуру дескриптора, поддерживаемую аппаратурой машин серии 5Э26, был добавлен очень важный элемент — цепной разряд, рассматриваемый аппаратурой как признак косвенности. Если в дескрипторе этот признак имеет ненулевое значение, операндом операции, в которой используется дескриптор, становится не тот элемент, адрес которого находится в дескрипторе. Считается, что дескриптор адресует не операнд, а адресную информацию, цепной разряд которой снова проверяется на ненулевое значение, а процесс вычисления истинного исполнительного адреса продолжается до тех пор, пока в цепочке дескрипторных ссылок не будет найден дескриптор с нулевым цепным разрядом. Для непосредственной работы с дескрипторами в системе команд процессора 5Э26 имеется возможность блокировать влияние цепного разряда на процесс формирования исполнительного адреса операнда команд считывания и записи. Прямых аналогий дескрипторам с цепным разрядом в современных языках программирования высокого уровня нет, однако потребность в таких структурах имеется. Например, именно с помощью цепочек дескрипторов можно добиться высокой эффективности реализации доступа к данным посредством «умных указателей», который часто реализуется с помощью перегрузки полиморфной операции косвенного обращения (в языке С++ такая операция обозначается диграфом «->»). Хороший оптимизирующий компилятор вполне способен формировать цепочки указателей на связанные таблицы таким образом, чтобы для доступа к операнду было достаточно выполнить одну команду чтения по дескриптору, содержащему цепной разряд.

Пять принципов долголетия

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

Данные, представимые с помощью значений базовых типов, могут использоваться для конструирования более сложных структур — записей и массивов. Для этого имеется поддержка со стороны аппаратуры центральных процессоров (индексные регистры, регистры шага и предела для организации циклов, а также возможность использования содержимого индексных регистров в алгоритме формирования исполнительного адреса в исполняемых командах) и базовых языков программирования (в разные годы создавались языки-автокоды — АК-26 и АК-40, язык промежуточного уровня Ярус, компиляторы с языков Фортран, Паскаль, Си и других языков [5]).

Последние десятилетия во многом изменили взгляды программистов на поддержку работы с базовыми типами данных и сложными структурами. Распространение получили 64-разрядные архитектуры, аппаратно поддерживающие арифметические и логические операции над 64-разрядными числами. Диапазон представления данных по действующим современным стандартам превышает диапазон представления чисел в 5Э26 больше чем на 200 десятичных порядков. Расширение диапазона обрабатываемых чисел, применяемое в ЭВМ 5Э26, сегодня не требуется, однако принятые много лет назад решения по выбору способов представления основных данных, набора и форматов команд по их обработке и сегодня не выглядят архаичными.

Архитектура 5Э26 может служить образцом создания систем программирования с весьма продолжительным жизненным циклом, что стало возможным благодаря актуальным и сегодня принципам, предложенным коллективами под руководством Лебедева:

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

Принятые при разработке ЭВМ ряда 5Э26 решения оказались пригодны для программирования не только на машинно-зависимых языках, но и на языках высокого уровня: Фортране, Паскале, Си и более новых, возникших на их основе. На машинах работали различные системы программирования, выполнялась трансляция программ с языков высокого уровня и даже велась подготовка текстовой документации, для чего разрабатывались различные текстовые редакторы: пакетные, диалоговые строчные, контекстные, а также универсальные макрогенераторы. Поддержка разнообразных типов данных обеспечивалась аппаратная, а для работы с упакованными целыми числами была разработана оригинальная система адресации с доступом к элементам памяти с точностью до одного разряда.

***

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

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

Литература

1. С. А. Лебедев. К 100-летию со дня рождения основоположника отечественной электронной вычислительной техники. Отв. ред. В. С. Бурцев. Составители: Ю. Н. Никольская, А. Н. Томилин, Ю. В. Никитин, Н. С. Лебедева. М.: Физматлит, 2002. 440 с.

2. Бурцев В. С. Развитие специализированных вычислительных систем ПВО и ПРО // В. С. Бурцев. Параллелизм вычислительных процессов и развитие архитектуры суперЭВМ. Сборник статей. М.: ИВВС РАН, 1997.

3. Тамара Бурцева, Леонид Карпов, Вера Карпова. Всеволод Бурцев и суперЭВМ // Открытые системы. СУБД. 2007. № 9. С. 70–73. URL: https://www.osp.ru/os/2007/09/4570045 (дата обращения: 21.06.2025).

4. Вера Карпова, Леонид Карпов. СуперЭВМ — от задач к машине // Открытые системы. СУБД. 2010. № 4. С. 54–58. URL: https://www.osp.ru/os/2010/04/13002418 (дата обращения: 21.06.2025).

5. Липаев В. В. Кросс-система программирования ЯУЗА-6 для специализированных ЭВМ реального времени // Труды Института системного программирования РАН. 2011. Т. 20. С. 95–110.

6. Сергей Золотарев. ОС РВ на службе в авиации // Открытые системы. СУБД. 2005. № 5–6. С. 24–31. URL: https://www.osp.ru/os/2005/05-06/185577 (дата обращения: 21.06.2025).

Леонид Карпов (mak@ispras.ru) — главный научный сотрудник, Институт системного программирования им. В. П. Иванникова РАН, Московский государственный университет им. М. В. Ломоносова (Москва).

DOI: 10.51793/OS.2025.13.25.002