Программное обеспечение малой ЭВМ «Сетунь»

Программное обеспечение малой ЭВМ «Сетунь»

Первая в мире троичная ЭВМ «Сетунь» [1] была разработана в МГУ в 1959 г. и выпускалась серийно с 1961 по 1965 гг. Казанским заводом математических машин. ЭВМ «Сетунь» создавалась для решения задач средней сложности и предназначалась для использования в конструкторских бюро, высших учебных заведениях, научно-исследовательских институтах, заводах и т.п. Всего было произведено 50 машин, из которых 30 приобрели университеты и технические вузы, а остальные - промышленные и исследовательские организации.

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

Широкому распространению машины способствовали не только простота и естественность ее архитектуры, но и относительно небольшая цена и высокая надежность. Благодаря разработанной в ВЦ МГУ под руководством Е.А. Жоголева системе программирования достигались удобство и эффективность в освоении и применении ЭВМ «Сетунь», что способствовало ее успешному освоению и применению в качестве эффективного средства решения практических задач в самых различных прикладных областях.

ЭВМ «Сетунь» представляет собой машину с арифметическим устройством последовательного действия и блоком быстрого умножения, за счет чего было достигнуто быстродействие 1-2 тыс./опер. в секунду (на уровне параллельных машин того времени). Небольшая оперативная память ЭВМ «Сетунь» состояла из трех зон, объемом 54 9-разрядных слов каждая, связанных позонным обменом с основной памятью на магнитном барабане, объем которого составлял 36 зон.

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

Минимальной адресуемой единицей ЭВМ «Сетунь» было 9-разрядное слово. Машина могла также оперировать 18-разрядными словами. Машинные команды ЭВМ «Сетунь» полностью обеспечивали вычисления с фиксированной точкой. Числа кодировались 18-разрядными словами, на целую часть числа отводилось два разряда, остальные 16 разрядов - на дробную часть числа.

В ЭВМ «Сетунь» использовалось следующее понятие нормализованного числа. Число нормализовано, если оно удовлетворяет условию:

0.5 < |Х| < 1.5 или Х=0.

Соответственно нормализованное число кодируется машинным словом, первый разряд которого всегда равен 0, второй - всегда отличен от нуля, либо все разряды равны нулю.

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

  • сложение и вычитание: |А ± В| < 1.5 + 1.5 = 3, либо |А ± В| = 0;
  • умножение: |А•В| < 1.5 • 1.5 = 2.25, либо |А•В| = 0;
  • деление: |A/B| <1.5/0.5;
  • шаг схемы Горнера вычисления многочлена: (А + B•C) < 3.75, либо |А + В•С| = 0.

Команда нормализации позволяла сдвигать число X так, чтобы оно удовлетворяло этому условию, сохраняя количество сдвигов. Всего система команд ЭВМ «Сетунь» имела в своем составе 24 операции.

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

Интерпретирующая система выполняла следующие функции:

  • обеспечивала обращение к стандартным подпрограммам, в частности, производила пересылку информации с одного места в памяти в другое;
  • осуществляла передачу управления к стандартным подпрограммам (по обобщенному адресу);
  • обеспечивала выполнение линейных (не содержащих переходов) частей программы и переход от одной зоны к другой.

Понятие обобщенного адреса было введено для обеспечения возможности обращения к магнитному барабану. Обобщенный адрес имеет формат 9-разрядного слова:

Aj = πФjМjj

где Aj кодирует номер строки на магнитном барабане в зоне Мj при πФj=0 и Мj≠0. Поля Мj и j - четырехразрядные, πФj - один разряд. При πФj ≠ 0 обобщенный адрес понимается как адрес в зонах 1 или 1 оперативной памяти.

Обращение к подпрограмме интерпретирующей системы имеет следующий вид:

1 43 03 - сохранение регистра команды С

1 13 00 - безусловный переход к интерпретирующей системе

πФxМxx - обобщенный адрес аргумента

πФfМff - обобщенный адрес начала подпрограммы

πФyМyy - обобщенный адрес результата

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

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

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

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

Для ЭВМ «Сетунь» было разработано 18 различных интерпретирующих систем [5, 6]. Для многих из них основой стала первая созданная в ВЦ МГУ интерпретирующая система ИП-2 и библиотека стандартных подпрограмм [2].

Числа с плавающей точкой представлялись в интерпретирующих системах в виде х=Х•Зp, где Х - мантисса числа, р - его порядок. ИП различались способами кодирования чисел. В ИП-2 мантисса числа кодировалась 18-разрядным словом с точкой после второго разряда, порядок - пятью старшими разрядами следующего 9- разрядного слова. Точность представления составляла 16 троичных разрядов, что обеспечивало вычисления с восемью верными десятичными знаками в диапазоне изменений абсолютных значений от 10-19 до 1019.

2 разряда

16 разрядов

5 разрядов

0

мантисса

порядок

Рис. 1. Кодирование нормализованного числа с плавающей точкой в ИП-2

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

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

В интерпретирующей системе ИП-3 [3] числа с плавающей точкой представлялись с меньшей, чем в ИП-2 точностью. Число кодировалось одним длинным словом, в пяти старших разрядах которого располагался порядок. остальные тринадцать разрядов хранили мантиссу. Точность представления чисел в ИП-3 составляла 6 верных десятичных цифр в диапазоне изменений абсолютных значений от 10-19 до 1019. Абсолютное значение порядка не превышало 40. поэтому старший разряд всегда содержал 0.

5 разрядов

1 разряд

12 разрядов

порядок

мантисса

Рис. 2. Кодирование нормализованного числа в ИП-3

Набор стандартных подпрограмм ИП-3 почти не отличался от аналогичного набора ИП-2. который был в ИП-3 пополнен процедурами «упаковки» и «распаковки» числа в описанную форму. Алгоритмы работы стандартных подпрограмм ИП-3 были получены из аналогичных подпрограмм ИП-2 уменьшением порядка некоторых полиномов, связанным с меньшей точностью представления чисел в ИП-3.

В целом использование интерпретирующих систем позволило существенно облегчить программирование на ЭВМ «Сетунь», не слишком снижая при этом ее производительность. Например, снижение производительности при использовании ИП-2 не превышало 3-3.5 раз [4], что достигалось, в частности, за счет выполнения значительной части интерпретации во время ожидания очередной зоны из магнитного барабана, количество обращений к которому по возможности сводилось к минимуму. Для этого тщательно подбирались моменты обращения к магнитному барабану, при размещении информации на барабане учитывалось различие во времени обращения к зонам в зависимости от места их нахождения на поверхности барабана, были разработаны специальные способы обращения к подпрограммам и разветвления процесса вычисления и т.п.

Приведем описание еще нескольких интерпретирующих систем, широко использовавшихся для решения различных прикладных задачах на ЭВМ «Сетунь».

ИП-4 предназначалась для оперирования комплексными числами. Действительная и мнимая части представлялись числами с плавающей точкой с общим порядком. Мантиссы располагались в двух соседних длинных словах, порядок - в пяти старших разрядах следующего короткого слова. Библиотека подпрограмм содержала реализации операций типа сложения (прямого и обратного сложения и вычитания, сложения с сопряженным, вычитания из сопряженного), умножения, деления, извлечения квадратного корня, вычисления тригонометрических и гиперболических функций, натурального логарифма, экспоненты и модуля.

ИП-5 позволяла выполнять вычисления повышенной точности - до 12-ти десятичных разрядов. Число занимало два соседних длинных слова: пять старших разрядов кодировали порядок, три остальных коротких слова - мантиссу.

ИП-Н осуществляла полную интерпретацию трехадресной системы команд ЭВМ М-20, широко применявшейся в то время. Несмотря на то, что ИП-Н уступала по скорости ИП-2 н ИП-3. она была простой и удобной в использовании, благодаря чему использовалась во многих организациях.

ИП-Нтр, модификация ИП-Н, была использована в качестве основы для создания транслятора с упрощенного языка на базе АЛГОЛ-60.

Кроме интерпретирующих систем на ЭВМ «Сетунь» была реализована система автоматического кодирования ПОЛИЗ, позволяющая составлять программы на языке программирования СИМПОЛИЗ-64. В состав системы входил интерпретатор ПОЛИЗ и библиотека стандартных подпрограмм. Использование режима полной интерпретации приводило к замедлению вычислений в 2.5-3 раза по сравнению с ИП-3, но программы на ПОЛИЗ оказывались в 2-3 раза короче.

ВЦ МГУ собирал данные об эксплуатации машин «Сетунь», предоставлял консультации по ее обслуживанию, разрабатывал инструкции и организовывал обмен опытом о практическом использовании машины.

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

Программное обеспечение, разработанное для ЭВМ «Сетунь», можно отнести к четырем типам:

  • средства автоматизации программирования (30 программ);
  • программы решения типовых математических задач (48 программ);
  • программы статистической обработки данных (57 программ);
  • программы решения практических задач (97 программ).

Средства автоматизации программирования включают интерпретирующие системы, систему автоматического кодирования ПОЛИЗ, транслятор с упрощенного языка АЛГОЛ-60, средства отладки, подпрограммы обработки векторов и т. и.

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

Среди программ, решавших практические задачи ЭВМ «Сетунь», можно назвать автоматизированную систему испытания авиационных двигателей, разработанную Военно-воздушной академией им. Н.Е. Жуковского, систему краткосрочного прогнозирования погоды, использовавшуюся в Гидрометеоцентре, систему оптимизации сельскохозяйственного назначения. К применениям ЭВМ «Сетунь» относятся программы решения задач в области химии в Московском химико-технологическом институте им. Д.И. Менделеева и на химическом факультете МГУ, задачи строительной механики, программа оптимального планирования деятельности приборостроительного предприятия и многие другие [5, 6]. В Военно-воздушной инженерной академии им. Жуковского именно на ЭВМ «Сетунь» была впервые реализована автоматизированная система компьютерного обучения [8]. В Институте космофизических исследований и аэрономии Сибирского отделения АН СССР (Якутск) ЭВМ «Сетунь» стала частью первого варианта комплекса, осуществлявшего «глобальную съемку» космических лучей, для чего была реализована чрезвычайно сложная программа [7]. На Людиновском тепловозостроительном заводе при помощи ЭВМ «Сетунь» решались многие практические задачи расчета оптимальных параметров производства и эксплуатации тепловозов [5].

Список литературы

  1. Брусенцов Н.П., Рамиль Альварес X. Троичные ЭВМ “Сетунь” и “Сетунь 70” // SORUCOM 2006: Развитие вычислительной техники в России и странах бывшего СССР: история и перспективы. В 2 ч. Ч. 1. - Петрозаводск. 2006. С. 45-51.
  2. Жоголев Е.А. Интерпретирующая система ИП-2 // Серия «Математическое обслуживание машины «Сетунь», вып. 19, - М: изд-во Московского университета, 1967.
  3. Жоголев Е.А. Интерпретирующая система ИП-3 // Серия «Математическое обслуживание машины «Сетунь», вып. 4, - М: изд-во Московского университета, 1964.
  4. Жоголев Е.А. Система команд и интерпретирующая система для машины «Сетунь». // Журнал вычислительной математики и математической физики АН СССР, 1961, т. 1, № 3, с. 499-512.
  5. Брусенцов Н.П., Морозов В.А. Аннотированный указатель программ для вычислительной машины «Сетунь». Вып.1. - М.: ОНТИВЦМГУ, 1968.
  6. Брусенцов Н.П., Морозов В.А. Аннотированный указатель программ для вычислительной машины «Сетунь». Вып. 2. - М.: ОНТИВЦМГУ, 1971.
  7. Крымский, Г.Ф. «Исповедь человека на рубеже веков XX века» // Наука и образование. - 2000. № 4. С. 113-116.
  8. Кузнецов С.И. и др. Материалы по математическому обслуживанию ЭЦВМ «Сетунь». - М.: Изд-во ВВИА им. Жуковского, 1964

Об авторе: Факультет ВМК МГУ им. М. В. Ломоносова
Москва, Россия
ramil@cs.msu.su
Материалы международной конференции Sorucom 2014 (13-17 октября 2014)
Помещена в музей с разрешения авторов 27 октября 2015