Русский | English   поискrss RSS-лента

Главная  → Материалы музея с 2013 по 2016 год  → История отечественной вычислительной техники  → Универсальные ЭВМ  → Сетунь и Сетунь 70  → Интерпретирующая система для действий с комплексными числами (ИП-4) - часть 1

Интерпретирующая система для действий с комплексными числами (ИП-4) - часть 1

§1. Введение.

Настоящая работа выполнена как часть системы математического обслуживания для машины «Сетунь» в 1961-62 годах. В работе, кроме автора, принимала участие Ю.Н. Черепенникова. В частности, ей разработаны подпрограммы «Нормализация» и извлечение квадратного корня.

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

Каждое из комплексных чисел, с которыми оперирует данная система, имеет вид:

(1)

где X (мантисса действительной части) и Y — (мантисса мнимой части) восемнадцатиразрядные числа, расположенные в указанном порядке в двух соседних длинных ячейках, а p — общий порядок числа Z, расположенный в пяти старших разрядах следующей короткой ячейки. Комплексное число (1) считается нормализованным, если X, Y и p удовлетворяют следующим условиям:

Кроме того, ИП-4 накладывает следующее ограничение на размещение в памяти комплексных чисел: величины X, Y и p, относящиеся к одному и тому же комплексному числу, должны обязательно располагаться в одной и той же зоне.

§2. Интерпретирующая программа ИП-4

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

где Δj —номер строк и зоны Mj при ΠФj = 0 и Mj ≠ 0. Если ΠФj ≠ 0 и Mj = 0, то соответствующий обобщенный адрес относится к оперативной памяти. Если обобщенный адрес относится к какому-либо комплексному числу, то он должен быть равен обобщенному адресу мантиссы действительной части X этого числа (Y и p располагаются в следующих ячейках памяти). При работе с ИП-4 зоны оперативной памяти выполняют следующие функции: зона Ф0 служит местом, на которое считывается зона информации, требующаяся в процессе выполнения программы, а также местом для выполнения ряда стандартных подпрограмм; кроме того, в Ф0 считывается дополнительная зона ИП-4; зона Ф, служит местом для выполнения очередной зоны основной программы;

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

ИП-4 выполняет следующие функции:

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

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

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

ИП-4 каждый раз запоминает номера зон магнитного барабана M0 и M1, содержимое которых в данный момент вызвано в оперативную память соответственно в зоны Ф0 и Ф1. Поэтому при каждом считывании зоны магнитного барабана содержимое соответствующей зоны оперативной памяти в случае необходимости запоминается на магнитном барабане.

ИП-4 занимает три зоны магнитного барабана (14, 13, 12). Часть ИП-4, реализующая обращение к стандартным подпрограммам и вызов в оперативную память информации требующейся в процессе счета, состоит из двух зон: основной и дополнительной. Основная зона (зона МБ 13) всегда находится в Ф-1, а дополнительная зона (12) считывается в Ф0 для расшифровки каждого обобщенного адреса.

В основной зоне имеются рабочие ячейки для величин X1, X2, Px, Y1, Y2, Py, в которых может храниться два комплексных числа и u = (X1 + iX2)·3Px и ν = (Y1 + iY2)·3Py ячейка для величины M0 (ее адрес 144), которая обозначает номер зоны магнитного барабана, вызванной в зону Ф0.

Обобщенными адресами величин u и v являются:

В дополнительной зоне находится еще подпрограмма «Нормализация», о назначении которой будет сказано несколько позже.

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

Здесь Az — обобщенный адрес аргумента z, Af — обобщенный адрес подпрограммы, реализующей вычисление функции f, Aw — обобщенный адрес результата w. Отсюда видно, что при обращении к подпрограмме может задаваться только один аргумент. Второй аргумент в случае необходимости может быть помещен на место величины v.

При обращении к стандартной подпрограмме ИП-4 выполняет следующие действия:

  1. Расшифровывает обобщенный адрес аргумента Az; зону Mz в которой находится аргумент z = (Z1 + iZ2)·3Pz, считывает в Ф0 и засылает z на место величины:
  2. Расшифровывает обобщенный адрес начала подпрограммы Af, зону Mf считывает в Ф0 и передает управление на начало подпрограммы 0 Δf. Первым аргументом каждой стандартной подпрограммы является u, вторым аргументом (в случае необходимости) является v, результат засылается на место u. Таким образом каждая подпрограмма выполняет действие:
  3. Расшифровывает обобщенный адрес результата Aw; зону Mw считывает в Ф0 и пересылает u на место w (u⇒w). Зона с результатом обратно на магнитный барабан не записывается, но номер Mw хранится на место M0. Поэтому при следующем обращении к стандартной подпрограмме нужно, чтобы вторая команда обращения имела вид: БП↱1 Вх.I ИП-4 (см. выше).

При обращении к другим входам ИП-4 (см. ниже) запоминание состояния зоны Ф0 не происходит. В частности, при обращении ко входу П (БП↱1 Вх.II). ИП-4 выполняются все те же действия, что и при обращении ко входу I, кроме запоминания состояния Ф0. Если нужно обратиться к вычислению функции от двух аргументов (т.е. выполнить действие f (z, z̃), то сначала один аргумент засылается на место величины ν = (Y1 + iY2) ·3Py, а потом записываются команды обращения к стандартной подпрограмме, где указывается обобщенный адрес другого аргумента. Это обращение имеет вид:

Смысл обобщенного адреса Aвх.IV будет пояснен ниже.

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

В обращении к подпрограммам вычисления функций от двух аргументов уже встречался частный случай пересылки информации, а именно, z̃ ⇒ ν Пересылка общего вида осуществляется следующим образом:

Если известно, что аргумент z уже находится на месте u, то можно избежать обращения к входу I или входу II ИП-4, а обращаться сразу ко входу III. В этом случае обращение к стандартным подпрограммам имеет вид:

Если нужно запомнить u на магнитном барабане (u ⇒ w) или переслать u на место (u ⇒ v), тогда обращение имеет вид:

или

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

Из этой схемы видно, что при обращении к стандартной подпрограмме в общем случае требуется восемь обращений к магнитному барабану (Вход I), и семь обращений, если не нужно запоминать предыдущего состояния Ф0 (Вход II). При обращении ко входу III происходит пять обращений к магнитному барабану. Для простой пересылки информации (u ⇒ w) требуется два обращения к магнитному барабану (Вход IV). Число обращений к магнитному барабану сокращается, если обобщенные адреса Аz и Аw относятся к оперативной памяти. Ниже приводится таблица 1 характеристик работы блоков ИП-4 для точных оценок времени при самых различных способах обращения к ней.

Таблица 1.

Этап работы

Число обращений к МБ в общем случае

Время работы, мкс

в общем случае

при обходе обращений к МБ

Обращение[1] к ИП-4

-

280

280

Блок Вх.I

1

360 + N0

280

Блок Вх.II

2

180+Ng+404 5+Nz+1495

180+Ng+5860

Блок Вх.III

2[2]

280+Ng+40 45+Nf+280+ T

280+Ng+4145+ T

Блок[3] Вх.VIII и «нормализация»

1

Ng+5490

Ng+5490

Блок Вх.IV

2

280+Ng+404 5+Nw+2720

280+Ng+6585

Здесь N0, Ng, Nz, Nf, Nw — фактическое время обращения к магнитному барабану для записи зоны Ф0 оперативной памяти в зону M0 и для вызова в Ф0 зон Mg (номер дополнительной зоны ИП-4), Mz, Mf и Mw соответственно; T — время работы соответствующей подпрограммы (см. §3). Для реализации обобщенного перехода или продолжения линейных кусков программы в основной зоне ИП-4 имеется лишь несколько команд, которые производят запоминание основной зоны ИП-4 (вместе с содержимым рабочих ячеек) из Ф-1 в зону 13 магнитного барабана, а на ее место вызывают другую зону ИП-4 14 — зону переходов. В зоне переходов имеется рабочая ячейка для величины M1 (ее адрес 144), которая обозначает номер зоны основной программы, находящейся в зоне Ф1, оперативной памяти. Зона переходов запоминает зону Ф1, на магнитном барабане в зоне M1 затем расшифровывает обобщенный адрес команды, которой нужно передать управление (Aj = 0 Mj Δj), засылает Mj на место M1; считывает в Ф1, зону Mj магнитного барабана, запоминает «себя» на магнитном барабане (в зоне 14), засылает в регистр F величину (IΔj — 3eA) и считывает в Ф-1 основную зону ИП-4. В основной зоне после этого выполняется только одна команда 00301, т.е. происходит безусловная передача управления на ячейку IΔj, и начинает выполняться основная программа.

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

Здесь Aj — обобщенный адрес команды, с которой нужно продолжить дальнейшее выполнение программы.

Обобщенный переход может использоваться и для обращения к стандартным подпрограммам. В этом случае в строках (x3), (x4) и т.д., следующих за обобщенным переходом, может задаваться информация, необходимая для работы соответствующей подпрограммы. Для «извлечения» этой информации имеется стандартная подпрограмма, расположенная в зоне переходов ИП-4, обращение к которой в общем случае производится следующим образом:

Здесь Аz – по-прежнему обобщенный адрес аргумента, однако в подпрограмме он не используется, поэтому этот адрес может быть произвольным (например, Аz = Аu).

Данная подпрограмма производит засылку в регистр S очередной «извлекаемой» строки (Axi), где Axi = 0MxiΔxi, а на место величины Axi — обобщенный адрес следующей строки 0Mxi+1 Δxi+1⇒Axi. Последующие обращения к данной подпрограмме, если они не разделяются другими обращениями к ИП-4, можно производить с помощью двух следующих строк:

После «извлечения» всех строк информации величина Axi, хранящаяся в ячейке 004 (с обобщенным адресом 01404) по-прежнему будет обозначать обобщенный адрес команды основной программы, к которой нужно вернуться по окончании работы подпрограммы, указанной при обобщенном переходе. Проиллюстрируем обращение к такой стандартной подпрограмме на примере: напишем обращение к подпрограмме «Перевод 3→10». Пусть надо перевести n чисел, расположенных на магнитном барабане. В командах обращения к этой подпрограмме нужно указать не только обобщенный адрес начала этой подпрограммы, но и обобщенный адрес первого числа из массива переводимых чисел, а также число n этих чисел. Это обращение запишется так:

Здесь A«3→I0» — обобщенный адрес подпрограммы «Перевод 3 → I0», Aначобобщенный адрес первого числа из массива переводимых чисел, a n — число этих чисел, задаваемое в виде короткого кода.

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

При помощи команд (ν0) + (ν7) мы извлекаем и запоминаем содержимое ячеек (x3) и (x4) (б и λ — рабочие ячейки подпрограммы «перевод 3→10»). При помощи команд (ν8), (ν9) формируется возврат в основную программу к команде (Ax5). Команды (νi), (νi+1), (νi+2) реализуют выход из подпрограммы — возврат в основную программу. Эти команды образуют обобщенный переход по обобщенному адресу, хранящемуся в ячейке νi+2. Этот адрес является переменным и в данном случае будет равен Ax5. Схема работы ИП-4 при реализации обобщенного перехода, а также соответствующее время совпадает с аналогичной схемой ИП-2 [I, 2].

Основная зона ИП-4[4]

Основная зона ИП-4

Основная зона ИП-4

Дополнительная зона ИП-4

Дополнительная зона ИП-4

Дополнительная зона ИП-4

Зона переходов ИП-4

Зона переходов ИП-4

Зона переходов ИП-4

Продолжение: Интерпретирующая система для действий с комплексными числами (ИП-4) - часть 2

Литература.

  1. Е.А. Жоголев. Система команд и интерпретирующая система для машины «Сетунь». Ж. вычисл. матем. и матем. физ., 1961, I, No3, 499-512.
  2. Е.А. Жоголев, О логических структурах и математическом обслуживании малых цифровых автоматических машин. Диссертация на соискание ученой степени кандидата физико-математических наук, МГУ, 1963 г.
  3. Е.А.Жоголев. Математическое обслуживание машины «Сетунь». Отчет ВЦ МГУ, 1961 г.

Примечания.

1. В случае отсутствия при обращении к ИП-4 строки вида (с)⇒(α) это время будет на 180 мксек меньше.

2. Здесь не учитываются дополнительные обращения к барабану внутри подпрограммы.

3. Использование этого блока см. в следующем параграфе.

4.Отрицательные цифры 4, 3, 2, 1, изображаются здесь буквами W, X, Y, Z соответственно.

Серия: Математическое обслуживание машины «Сетунь»
14 Ноября 2014

Проект Эдуарда Пройдакова
© Совет Виртуального компьютерного музея, 1997 — 2017