В середине 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 разрядов результата в случае, если ненулевое значение имеет самый старший из отбрасываемых после выполнения операции разрядов.
Поддержка вещественных вычислений не ограничивается только выполнением операций над числами известной структуры в том или ином режиме — аппаратура также может выполнять преобразование чисел и обеспечивать проверку корректности операндов и результатов выполнения арифметических операций. Такой подход во многом совпадает с возможностями, которые сегодня предлагают языки программирования высокого уровня.
.jpg)
Все вещественные вычисления всегда проводятся только с нормализованными числами, хотя в памяти могут храниться любые числа. В системе команд центрального процессора имеется специальная команда преобразования ненормализованного числа к нормализованному виду. Предполагается, что присутствие таких команд в нужных местах программ должны обеспечивать программисты, составляющие программы на каком-либо языке, близком к машинному, или компиляторы с языков высокого уровня.
Вещественный вычислитель центральных процессоров воспринимает целые числа как ненормализованные. Чтобы сделать возможными смешанные вычисления, в командах, выполняющих арифметические операции, в которых один из операндов представляет собой нормализованное вещественное число, а второй имеет правильный вид целого числа, второе число автоматически преобразуется к вещественному виду и нормализуется. Такое преобразование возможно всегда, так как любое представимое в ЭВМ целое число имеет свой точный аналог среди вещественных чисел.
При выполнении операций над вещественными числами возможно возникновение аппаратных прерываний, связанных либо с некорректностью операндов (например, делитель в командах деления, равный нулю), либо с некорректностью результата (переполнением или исчезновением значимости). Имеющееся во многих современных языках понятие исключительной ситуации включает в себя ситуации, возникающие при возбуждении аппаратного прерывания. В современных языках программирования, например в С#, некоторые аппаратные прерывания включены в состав классов стандартных исключительных ситуаций. Аппаратные прерывания ЭВМ 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
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)