Интерпретирующая система для действий с комплексными числами (ИП-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 выполняет следующие функции:
- реализует обращение к стандартным подпрограммам и, как частный случай этого, производит пересылку информации с одного места памяти на другое;
- производит передачу управления по обобщенному адресу (обобщенный переход);
- производит выполнение линейных (без передач управления) кусков программы при переходе от одной зоны программы к следующей.
При обращении к стандартным подпрограммам задаются обобщенные адреса аргумента и результата, а также обобщенный адрес начала подпрограммы. Результат выполнения какой-либо подпрограммы представляется в нормализованном виде. При обобщенном переходе задается обобщенный адрес 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 выполняет следующие действия:
- Расшифровывает обобщенный адрес аргумента Az; зону Mz в которой находится аргумент z = (Z1 + iZ2)·3Pz, считывает в Ф0 и засылает z на место величины:
- Расшифровывает обобщенный адрес начала подпрограммы Af, зону Mf считывает в Ф0 и передает управление на начало подпрограммы 0 Δf. Первым аргументом каждой стандартной подпрограммы является u, вторым аргументом (в случае необходимости) является v, результат засылается на место u. Таким образом каждая подпрограмма выполняет действие:
- Расшифровывает обобщенный адрес результата 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) - часть 2
Литература.
- Е.А. Жоголев. Система команд и интерпретирующая система для машины «Сетунь». Ж. вычисл. матем. и матем. физ., 1961, I, No3, 499-512.
- Е.А. Жоголев, О логических структурах и математическом обслуживании малых цифровых автоматических машин. Диссертация на соискание ученой степени кандидата физико-математических наук, МГУ, 1963 г.
- Е.А.Жоголев. Математическое обслуживание машины «Сетунь». Отчет ВЦ МГУ, 1961 г.
Примечания.
1. В случае отсутствия при обращении к ИП-4 строки вида (с)⇒(α) это время будет на 180 мксек меньше.
2. Здесь не учитываются дополнительные обращения к барабану внутри подпрограммы.
3. Использование этого блока см. в следующем параграфе.
4.Отрицательные цифры 4, 3, 2, 1, изображаются здесь буквами W, X, Y, Z соответственно.
Серия: Математическое обслуживание машины «Сетунь»
14 ноября 2014