Малая автоматическая цифровая машина “Сетунь”
Н. П. Брусенцов, Е. А. Жоголев, В. В. Веригин, С. П. Маслов, А. М. Тишулина
В Вычислительном центре МГУ разработана малая автоматическая цифровая машина “Сетунь”. Целью разработки вычислительной машины “Сетунь” было создание недорогой машины для решения научно-технических и хозяйственных задач средней сложности в вузах, конструкторских бюро, на заводах, в научно-исследовательских институтах и лабораториях. Другими словами, имелась в виду малая автоматическая вычислительная машина, рассчитанная на массовое использование. Исходя из этого, к машине были предъявлены следующие требования:
- Скорость работы — несколько сот операций в секунду.
- Точность вычислений — 6-8 верных десятичных знаков.
- Простота и удобство программирования.
- Надежность в эксплуатации и непритязательность в техническом обслуживании.
- Умеренные габариты, небольшое потребление энергии.
- Использование недорогих и недефицитных материалов и деталей.
Рассматривая эти требования в совокупности, можно заметить, что некоторые из них являются трудно совместимыми. Например, создание значительных удобств для программистов влечет за собой усложнение машины и увеличение количества оборудования, что ведет к снижению надежности и повышению стоимости как самой машины, так и ее эксплуатации.
Наиболее полное удовлетворение предъявленным требованиям было получено путем:
- создания удобств для программистов с помощью специальных обслуживающих программ;
- применения двухступенчатой системы памяти;
- построения схем на магнитных элементах;
- использования троичной системы счисления.
Удобства для программистов, помимо инженерного пути, связанного с усложнением машины, могут быть реализованы программным путем, то есть разработкой систем стандартных подпрограмм, введением компилирующих и интерпретирующих систем, программирующих программ и т. д. Этот способ создания удобств является значительно более совершенным и гибким, чем инженерный. Наличие нескольких вариантов обслуживающих систем позволяет проще удовлетворить различные потребности программистов, приспособить машину для эффективного решения определенного класса задач, кроме того, в эти системы сравнительно быстро могут быть внесены дополнения и изменения, отражающие новые идеи в программировании. При таком способе создания удобств достаточно, чтобы машина могла выполнять ограниченный набор сравнительно простых операций и ее поэтому легче сделать надежной, простой в эксплуатации и дешевой. Однако такая машина должна обладать определенным запасом мощности: необходима дополнительная емкость памяти для хранения обслуживающих программ и некоторый запас скорости для компенсации замедления счета, вызываемого работой этих программ.
Создание запаса емкости запоминающего устройства практически не удорожает машину, если ее основная память реализована на магнитном барабане.
Запас скорости можно получить путем добавления запоминающего устройства небольшой емкости на ферритовых сердечниках, которое связано с магнитным барабаном групповой передачей информации и используется в качестве оперативной памяти. Расчеты показывают, что скорость работы “Сетуни”, которая снабжена быстродействующей ступенью памяти емкостью в 162 ячейки по 9 троичных разрядов, в 8-9 раз превосходит ту скорость, которой обладала бы эта машина, если бы она была оснащена только магнитным барабаном (не имеется в виду использование оптимального программирования — прим. авт.); с другой стороны, скорость работы “Сетуни” только в 5-6 раз ниже скорости, которой обладала бы машина, если бы барабан в ней был заменен быстродействующим запоминающим устройством той же емкости.
Использование в качестве основного элемента схем машины магнитного усилителя с тактовой частотой 200 кГц вместе с применением троичной системы счисления позволили обеспечить требуемую скорость выполнения операции при помощи простого и экономного арифметического устройства с сумматором последовательного действия. В связи с тем что при одной и той же точности представления чисел троичное слово в 1,6 раза короче двоичного, операции, подобные сложению, в троичном последовательном арифметическом устройстве выполняются в 1,6 раза быстрее, чем в двоичном.
Троичная система счисления с цифрами 0, 1, -1 обладает, кроме того, и другими преимуществами по сравнению с двоичной системой. Благодаря наличию в этой системе “положительной” и “отрицательной” цифр, в коде числа нет особого разряда знака, что существенно упрощает логику арифметических операций.
Тот факт, что наилучшее округление числа до k верных троичных знаков получается отбрасыванием младших знаков, начиная с (k+1)-го, избавляет от необходимости устраивать в машине аппарат округления и вводить варианты арифметических операций, различающиеся наличием или отсутствием округления.
Сказанное о знаке и округлении означает также, что операция сдвига в троичной системе счисления совмещает в себе функции таких разновидностей двоичного сдвига, как логический сдвиг, арифметический сдвиг без округления, арифметический сдвиг с округлением. Вообще, равноценный с точки зрения программиста набор выполняемых машиной операций в троичном варианте машины получается более компактным, чем в двоичном.
Вычислительная машина “Сетунь”
Требования относительно надежности, габаритов и потребления энергии были удовлетворены использованием в качестве основного элемента логических схем машины специально разработанного быстродействующего магнитного усилителя. Этот усилитель состоит из миниатюрного трансформатора с ферритовым сердечником и полупроводникового диода, причем в схемах усилители соединяются друг с другом без посредства каких-либо электрических деталей, за исключением соединительных проводов. Общее количество магнитных усилителей в машине — 3500. Количество других элементов сравнительно мало: транзисторов — 330, электронных ламп — 37, электромагнитных реле — 10.
Основные параметры машины
“Сетунь” — одноадресная машина последовательного действия, оперирующая с числами с фиксированной запятой.
Числа и команды в машине представлены троичным кодом с цифрами 1,0, -1. Машина оперирует с 18-разрядными (длинными) и 9-разрядными (короткими) троичными кодами, причем запятая стоит всегда после второго разряда, то есть все числа по модулю меньше 4,5.
Команды представляются девятью троичными разрядами, из которых пять старших составляют адресную часть, три — код операции и один (младший) используется в качестве признака модификации адреса. При выполнении команд, содержащих в этом разряде 1 или -1, их адресная часть автоматически изменяется соответственно прибавлением или вычитанием числа, хранящегося в специальном 5-разрядном регистре (индекс-регистре).
Память машины состоит из двух ступеней: а) оперативного запоминающего устройства на ферритовых сердечниках емкостью в 162 ячейки по 9 троичных разрядов; б) запоминающего устройства на магнитном барабане емкостью в 1944 ячейки по 9 троичных разрядов.
Передача информации между запоминающими устройствами производится зонами, содержащими по 54 девятиразрядных кода.
Ввод данных в машину осуществляется с пятипозиционной бумажной перфоленты посредством фотоэлектрического вводного устройства, работающего со скоростью 800 знаков в секунду.
Вывод данных производится путем печати и перфорации на бумажной ленте со скоростью 7 знаков в секунду. Возможен вывод как троичных кодов (команд), так и буквенно-цифрового текста с заданием произвольной формы бланка.
Контроль исправности машины осуществляется путем выполнения тест-программ в профилактических режимах.
Питание машины производится от сети трехфазного тока 220/380 в. Потребляемая мощность — 2,5 кВа. Охлаждение естественное.
Машина оформлена в виде шкафа 2,9в1,85в0,5 м с пультом управления 1,6в0.6в1 м и стола внешних устройств 1,2в0,8в0,75 м.
Для установки машины требуется площадь 25-30 м2.
Блок-схема и система команд машины
Машина состоит из шести функциональных устройств: 1) арифметического устройства, 2) устройства управления, 3) оперативного запоминающего устройства, 4) устройства ввода, 5) устройства вывода, 6) запоминающего устройства на магнитном барабане.
Блок-схема вычислительной машины “Сетунь”
Передача информации между блоками, в том числе ввод и вывод ее из машины, производится через оперативное запоминающее устройство. Это устройство обладает 9-разрядным сдвигающим регистром, посредством которого информация, поступающая на его вход в последовательной форме, преобразуется в параллельную форму для записи в запоминающее устройство, а информация, считываемая параллельно из запоминающего устройства, преобразуется в последовательную форму. Эта информация направляется в то или иное устройство в зависимости от состояния переключателя П1, которое в каждый момент определяется выполняемой программой.
Арифметическое устройство машины осуществляет выполнение команд сложения, вычитания, умножения, поразрядного умножения, сдвига, нормализации, а также команд посылки чисел в регистры арифметического устройства и записи результата в оперативное запоминающее устройство.
В арифметическом устройстве имеется два регистра: регистр множителя R и регистр результата S (аккумулятор). Регистр R состоит из 18 триггеров, управляющих ключами множительного устройства. Регистр S представляет собой 18-разрядный триггерный регистр со сдвигом влево и вправо.
Число из регистра S посредством переключателя П2 может быть направлено по одному из четырех каналов. При выполнении команды сложения или вычитания оно подается на вход сумматора арифметического устройства одновременно с поступлением на второй вход этого сумматора числа, выбранного из оперативной памяти. При умножении число из регистра 5 может быть послано либо в регистр R в качестве множителя, либо на вход множительного устройства в качестве множимого. В случае записи содержимого регистра 5 в оперативную память переключатель П2 соединяет выход регистра 5 с входом регистра запоминающего устройства.
В регистр S число может быть принято из запоминающего устройства, из множительного устройства и из счетчика сдвигов при нормализации, причем во всех случаях оно проходит через сумматор.
Прием числа в регистр S сопровождается выработкой признака w, w(S), по правилу: если число положительно, то w=1, если отрицательно, то w=-1, если равно нулю, то w=0.
При поступлении числа в регистр R или в регистр модификации F устройства управления вырабатывается по тому же правилу признак w, w (R) или w (F).
В зависимости от значения этого признака со производится передача управления при выполнении команд условного перехода. При операциях, не связанных с выработкой признака со, сохраняется его значение, выработанное предыдущей операцией.
В устройстве управления имеется три регистра: 9-разрядный регистр команды К, 5-разрядный регистр адреса команды С и 5-разрядный регистр модификации (индекс-регистр) F.
Регистр К состоит из двух частей: 5-разрядного триггерного регистра со сдвигом вправо, в который помещаются адреса чисел и команд при выборке этих чисел и команд из оперативного запоминающего устройства и четырех триггеров кода операции, из которых три определяют характер последовательности управляющих импульсов в зависимости от принятого на них кода, а четвертый управляет механизмом модификации адресной части команды.
Устройство управления обладает собственным сумматором, с помощью которого производится последовательное изменение адресов выполняемых команд и осуществляются операции, связанные с регистром модификации F, в том числе и сама модификация адресных частей команд.
К моменту начала операции адрес подлежащей выполнению команды принимается в регистр С, а сама команда — в регистр К, причем первыми поступают младшие разряды команды, содержащие признак модификации и код операции. Адресная часть команды проходит в регистр К через сумматор, на второй вход которого может быть подано содержимое индекс-регистра F с положительным или отрицательным знаком в зависимости от признака модификации.
Установленная в регистре К модифицированная адресная часть команды в зависимости от характера выполняемой операции используется или как адрес числа, выбираемого из оперативной памяти, или как адрес, по которому в память производится запись числа, или как адрес команды, которой должно быть передано управление, или как условное число, содержащее информацию об обмене группой кодов между оперативной памятью и магнитным барабаном, а также о работе с внешними устройствами.
При работе машины с длинными ячейками (18 разрядов) чтение (запись) производится дважды: сначала считываются или записываются 9 младших разрядов числа, а затем — 9 старших разрядов. Адрес длинной ячейки памяти содержит в пятом разряде -1; адрес ее половины, соответствующей младшим разрядам, содержит в этом разряде 1; адрес старшей половины — 0.
При выполнении команд безусловной передачи управления, также как и условной, в том случае если передача управления действительно производится, принятая в регистр К адресная часть команды передачи управления воспринимается как адрес новой команды; происходит выборка этой команды из памяти и прием ее в регистр К, в то время как сам адрес передается из регистра К в регистр С. Если же передача управления не должна производиться, то механизм выборки очередной команды работает так, как при всякой другой операции, а именно: адрес выполненной команды направляется из регистра С через сумматор в регистр К, причем в соответствующий момент на второй вход сумматора подается импульс, под действием которого происходит последовательное увеличение адреса, благодаря чему в регистр К поступает адрес следующей по порядку команды.
Структура цикла, соответствующего той или иной операции, задается распределителем импульсов (на блок-схеме не показан), который представляет собой замкнутую в кольцо линию задержки, в различных точках которой имеются ответвления, выдающие управляющие импульсы в нужный момент в зависимости от кода выполняемой операции. Время пробега импульса по распределителю в большинстве операций равно 180 мксек. При выполнении операций умножения, сдвига, нормализации и записи из регистра 5 в память длина кольца распределителя импульсов и соответственно длительность цикла увеличиваются. При выполнении операций передачи управления в случае, если передача происходит, длина этого кольца и длительность цикла уменьшаются до 100 мксек.
Во время работы с магнитным барабаном или с устройствами ввода — вывода основное устройство управления становится в ждущий режим, подчиняясь импульсам, поступающим из автономных устройств управления магнитным барабаном, вводом и выводом.
При работе в однотактном режиме кольцо распределителя импульсов размыкается, и для выполнения каждой команды необходимо подать на вход распределителя пусковой импульс. Этот импульс формируется схемой одного импульса при каждом нажатии на кнопку “пуск” пульта управления. В случае, когда машина находится в автоматическом режиме, поступивший в распределитель пусковой импульс циркулирует в его кольце до тех пор, пока работа машины не будет прервана одним из “остановов”: командой “останов”, переполнением в регистре S, кнопкой “останов” или ключом “однотактный режим” на пульте управления.
Система команд машины дана в помещенной ниже таблице. В этой таблице код операции вместе с признаком модификации, положенным равным нулю, записывается с помощью двух девятеричных цифр. Цифры с черточкой наверху (в настоящей публикации верхняя черта заменена префиксом “восклицательный знак” — прим. ред.) обозначают соответствующие “отрицательные” цифры (например, символ !3 обозначает -3).
Система команд машины “Сетунь”
Код операции | Название операции | Содержание команды | Выработка w | Время выполнения в мксек |
---|---|---|---|---|
!3!3 | Считывание с МБ | [M*] => [Фа] | Сохраняется | 7500 |
!30 | Ввод-вывод | Ввод в Фа | Сохраняется | - |
!33 | Запись на МБ | Вывод из Фа | Сохраняется | 7500 |
!2!3 | Нормализация | [M*] => [Фа] | w (S) | 275+5|N| |
!20 | Сдвиг | Норм (S) => (A*); N => (S) | w (S) | 290+5|N| |
!23 | Запись из S | Сдв (S) на (A*) => (S) | w (S) | 225 |
!1!3 | Сложение в F | (S) => (A*) | w (F) | 180 |
!10 | Посылка в F | (A*)+(F) => (F) | w (F) | 180 |
!13 | Сложение в C с посылкой в F | (A*) => (F) | w (F) | 180 |
0!3 | Запись из F | (F) => (A*) | w (F) | 180 |
00 | Безусловный переход (БП) | A* => (C) | Сохраняется | 100 |
03 | Запись из C | (C) => (A*) | Сохраняется | 180 |
1!3 | Условный переход VII - !1 | A* => (C) при w=!1 | Сохраняется | 100,180 |
10 | Условный переход VII - 0 | A* => (C) при w=0 | Сохраняется | 100,180 |
13 | Условный переход VII - 1 | A* => (C) при w=1 | Сохраняется | 100,180 |
2!3 | "Останов" | "Останов"; (A*) => (R) | w (R) | 180 |
20 | Поразрядное умножение | (A*) (x) (S) => (S) | w (S) | 180 |
23 | Посылка в R | (A*) => (R) | w (R) | 180 |
3!3 | Вычитание в S | (S) - (A*) => (S) | w (S) | 180 |
30 | Посылка в S | (A*) => (S) | w (S) | 180 |
33 | Сложение в S | (S) + (A*) => (S) | w (S) | 180 |
4!3 | Умножение - !1 | (A*) + (S) (R) => (S) | w (S) | 320 |
40 | Умножение - 0 | (S) => (R); (A*) (R) => (S) | w (S) | 320 |
43 | Умножение - 1 | (S) + (A*) (R) => (S) | w (S) | 320 |
Примечание: Операции с кодом 43, 40, 43 в настоящее время не используются.
При написании команд к такому коду операции необходимо прибавить значение признака модификации команды.
Символы [М] или [Фа] обозначают содержимое зоны М магнитного барабана или соответственно зоны Ф оперативной памяти, где а = -1,0,1; символы (A), (S), (R), (F) и (С) обозначают соответственно содержимое ячейки А оперативной памяти, регистров S, R, F и С; символ => означает посылку результата или содержимого зоны, указанных слева от этого символа на место величины или соответственно содержимого зоны, указанных справа от этого символа. Например, запись (S) => (А) означает: послать содержимое регистра S на место содержимого ячейки А. Звездочкой помечаются модифицированные адреса или их составные части.
Операция сдвига производит сдвиг содержимого регистра S на |N| разрядов, где N рассматривается как 5-разрядный код, хранящийся в ячейке А*, то есть N=(A*). Сдвиг производится влево при N>0 и вправо при N<0. При N=0 содержимое регистра 5 не изменяется.
Операция нормализации производит сдвиг (S) при (S)<>0 в таком направлении и на такое число разрядов |N|, чтобы результат, посылаемый в ячейку А*, был по модулю больше 1/2, но меньше 3/2, то есть в двух старших разрядах результата была записана комбинация троичных цифр 01 или 01. При этом в регистр 5 посылается число N (5-разрядный код), знак которого определяется направлением сдвига, я именно: N>0 при сдвиге вправо, N<0 при сдвиге влево. При (S)=0 или при 1/2<|(S)|<3/2 в ячейку А* посылается (5), а в регистр 5 посылается N=0.
Остальные операции, содержащиеся в таблице, ясны без дополнительных пояснений.
Система математического обслуживания машины
Разработка системы математического обслуживания проводилась в следующих направлениях:
- Создание библиотеки стандартных подпрограмм.
- Создание различных вариантов интерпретирующих систем.
При составлении стандартных подпрограмм учитывались особенности машины. Поэтому данные о времени их работы, а также о занимаемом ими месте в памяти в какой-то степени позволяют судить о том, насколько эффективно будет использоваться машина, если не пожалеть усилий на составление хорошей программы.
Основу библиотеки составили подпрограммы для выполнения четырех арифметических действий и вычисления элементарных функций в режиме плавающей запятой. Каждая из этих подпрограмм занимает не более одной зоны памяти и выполняется не медленнее, чем в 8500 мксек.
Ряд подпрограмм служит для решения некоторых типовых задач: решения системы линейных алгебраических уравнений, вычисления интегралов, интегрирования системы обыкновенных дифференциальных уравнений и т. д.
Подпрограмма решения системы линейных алгебраических уравнений, основанная на методе Гаусса с выбором главного элемента и оперирующая с числами, представленными в режиме с плавающей запятой, в виде мантиссы и порядка, производит решение системы 14-го порядка за 3,5 мин. и системы 26-го порядка за 14 мин., включая в обоих случаях время ввода в машину подпрограммы и исходной матрицы (в десятичной системе счисления), а также время печати результатов решения (тоже в десятичной системе). Время работы этой подпрограммы в некотором смысле показательно, так как различные “матричные” задачи наиболее неблагоприятны для машины с такой структурой памяти, какая реализована на машине “Сетунь”.
С целью усовершенствования аппарата программирования машины разработано несколько вариантов интерпретирующих систем, которые осуществляют автоматизацию обмена информацией между магнитным барабаном и оперативной памятью, введение плавающей запятой и использование стандартных подпрограмм. Основу одной из этих систем составляет интерпретирующая программа ИП-2 и соответствующая библиотека стандартных подпрограмм, в которой имеются подпрограммы для выполнения арифметических действий с плавающей запятой и подпрограммы для вычисления элементарных функций. В рамках этой системы магнитный барабан функционирует как оперативная память. Для указания местонахождения кодов на магнитном барабане вводятся обобщенные, адреса (9-разрядные троичные коды), так что на барабане образуется сплошной массив ячеек памяти с последовательными адресами. Программа вычислений и информация, необходимая для ее работы, находятся на магнитном барабане. Оперативная память играет в этой системе роль буферного запоминающего устройства, в которое вызывается для выполнения очередная часть (зона) программы и зона информации, необходимость в которой возникает в процессе вычислений. Кроме того, в оперативной памяти постоянно хранится основная часть интерпретирующей программы ИП-2.
Основная программа выполняется в режиме частичной интерпретации, а именно выполняются обычные машинные команды до тех пор, пока не возникает необходимость использовать обобщенные адреса (потребуется информация, хранящаяся в данный момент на магнитном барабане), обратиться к какой-либо стандартной подпрограмме или перейти к выполнению команды, расположенной в другой зоне основной программы; в этих случаях происходит обращение к ИП-2.
Интерпретирующая программа ИП-2 выполняет следующие функции:
- реализует обращение к стандартным подпрограммам, и в частности производит пересылку информации с одного места памяти на другое;
- производит передачу управления по обобщенному адресу (обобщенный переход);
- продолжает выполнение линейных (без передач управления) кусков программы при переходе от одной зоны программы к другой.
Интерпретирующая программа ИП-2 оперирует с числами, представленными в режиме с плавающей запятой с 18-разрядной мантиссой и 5-разрядным порядком. Такое представление чисел позволяет вести вычисления с восемью верными десятичными знаками в диапазоне от10-19 до 10+19.
В другом варианте интерпретирующей программы — ИП-3 — числа представлены более компактно: 13 разрядов — мантисса, 5 разрядов — порядок (каждое число помещается в длинной ячейке). Это представление чисел позволяет вести вычисления примерно с шестью верными десятичными знаками, в том же диапазоне от 10-19 до 10+19. Система ИП-3 выполняет примерно те же функции, что и ранее рассмотренная система ИП-2.
Интерпретирующая система, являясь начальным шагом на пути создания системы математического обслуживания, значительно облегчает процесс программирования на машине “Сетунь”, причем это достигается без заметного увеличения времени счета ввиду того, что в этой системе производятся в большинстве случаев только существенно необходимые обращения к магнитному барабану, а интерпретация тех или иных псевдокоманд осуществляется, как правило, между такими обращениями к магнитному барабану, не вызывая значительного увеличения времени счета. Основные стандартные подпрограммы, как было указано выше, успевают также выполняться за время одного оборота барабана.
Опыт использования этих интерпретирующих программ показывает, что, несмотря на замедление, вызываемое их работой, производительность машины удовлетворяет тем требованиям, которые первоначально были предъявлены к ней. При желании можно более эффективно использовать тот “запас” скорости, которым обладает машина “Сетунь”. Подсчеты показывают, что средняя оперативная скорость работы машины с учетом обращений к магнитному барабану по крайней мере выше 800-900 операций в секунду. Например, при решении систем линейных алгебраических уравнений по указанной выше программе средняя оперативная скорость машины 1100-1200 операций в секунду. При решении других задач (расчет характеристик нейтронного детектора методом Монте-Карло, расчет электронной плотности кристаллических структур, вычисление некоторых интегралов и другие) средняя оперативная скорость машины 2000-4500 операций в секунду.
Литература
- Брусенцов Н. П. Вычислительная машина “Сетунь” Московского государственного университета. “Новые разработки в области вычислительной математики и вычислительной техники”. Материалы научно-технической конференции. Киев, 1960, стр. 226-234.
- Жоголев Е. А. Система команд и интерпретирующая система для машины “Сетунь”. “Журнал вычислительной математики и математической физики АН СССР”, 1, № 3, 499-512, 1961.
Дополнительные материалы.
Статья опубликована 01.06.2002 г.