Table of Contents

4. Функциональное описание процессора-эмулятора

4.1. Формирование исполнительных адресов

У каждой программы, исполняющейся в машине, имеется 15 индекс-регистров или модификаторов М, предназначенных для модификации адреса, указанного в команде. Разрядность индексных регистров - 32. Модификация выполняется сложением содержимого указанного в команде индекс-регистра с адресной частью команды. В режиме эмуляции БЭСМ-6 (РЭ) из адресной части команды используются младшие 15 разрядов, в новом режиме - 20 разрядов, 20-ый разряд адресной части команды перед модификацией размножается до 32 разряда.

Имеются специальные команды UTC и WTC, позволяющие осуществлять модификацию адреса следующей за ними команды. В этих случаях для модификации используются соответственно исполнительный адрес или код 1-32 разрядов слова по исполнительному адресу команд UTC и WTC, который заносится в специальный регистр С с номером 16. Одновременно устанавливается признак изменения адреса ПИА в регистре режимов РР, используемый в следующей команде.

Таким образом, исполнительный адрес большинства команд (т.н. Адрес типа U) есть:

  U = N + М (ПИА=0)   или   U = N + М + С (ПИА=1)

Адрес типа V есть:

  V = N (ПИА=0)   или   V = N + С (ПИА=1)

Где N - адресная часть команды, С - значение 16 индекс-регистра.

Значение 16 регистра добавляется к исполнительному адресу только при ПИА, установленном в “1”. Все команды, кроме UTC и WTC, гасят этот признак. С помощью команд UTC и WTC может осуществляться модификация любой кратности.

МАГАЗИННОЕ ОБРАЩЕНИЕ. В машине обеспечена возможность адресации к любому участку оперативной памяти по принципу “МАГАЗИНА”. Индексный регистр 15 является счетчиком магазина и содержит адрес первого свободного слова этой области памяти. При записи содержимого сумматора в память “магазинным способом” оно заносится в первое свободное слово магазина, и счетчик магазина увеличивается на 1. При магазинной выборке из памяти счетчик магазина уменьшается на 1, и содержимое слова с получившимся адресом выбирается на сумматор, а соответствующее слово становится доступным для очередной записи в магазин. Обращение к памяти “магазинным способом” возможно во всех командах, требующих записи в память или чтения из памяти ЦЕЛОГО СЛОВА, если в команде в разрядах номера индекс-регистра указан 15-ый регистр и исполнительный адрес команды (адрес типа V) содержит нулевой код. Иначе обращение к ОЗУ происходит по исполнительному адресу (типа U) без изменения счетчика магазина.

Кроме того, существуют специальные МАГАЗИННЫЕ КОМАНДЫ, при выполнении которых собственно операции предшествует запись в “магазинную память” содержимого сумматора (XTS, ITS), или операция сопровождается последующим чтением из “магазинной памяти” (SТХ, STI, UZAS, UIAS). Содержимое разрядов номера индекс-регистра и адресной части в такой команде определяют адрес самой операции и не влияют на обращение к “магазину”.


4.2. Структура памяти

Память машины состоит из 64-960к 72-разрядных слов (часть 20-разрядного адреса используется для внешних устройств). Нумерация разрядов в слове - справа налево.

 72..65 64      ............         1
|------|------------------------------|
|  тег |     информационная часть     |
|------|------------------------------|

Информационная часть слова содержит либо одно 64-разрядное число, либо два 32-разрядных целых числа, либо 4 16-разрядных фрагмента, либо 8 байтов, либо 64 бита, либо две команды. Разрядность команды: 32 - в новом режиме, 24 - в режиме эмуляции БЭСМ-6.


4.3. Представление чисел

4.3.1. Представление числа с плавающей запятой

 64 63  ...  54 53 52    ........    1
|--|-----------|--|-------------------|
|  |  порядок  |  |     мантисса      |
|--|-----------|--|-------------------|
 :              :
 :              :
знак порядка   знак мантиссы

Положительная мантисса представляется в прямом коде с “0” в разряде знака. Отрицательная мантисса представляется в дополнительном коде с “1” в разряде знака.

Положительный порядок представляется в прямом коде с “1” в разряде знака. Отрицательный порядок - в дополнительном коде с “0” в разряде знака. Иными словами, порядок Е представляется в 11 старших разрядах слова кодом 4000в + Е.

4.3.2. Представление чисел БЭСМ-6

48-разрядное число старой БЭСМ-6 получается из общего представления усечением старших 4 разрядов порядка и младших 12 разрядов мантиссы:

 64 63..60 59 . 54 53 52    ....    13 12 ... 1
|--|------|-------|--|----------------|--------|
|пo|xxxxxx| рядок |  |    мантисса    |xxxxxxxx|
|--|------|-------|--|----------------|--------|

Такое представление дает возможнсть:

“Целые с порядком” числа БЭСМ-6 имеют 11-разрядный порядок 4120в и нулевой код в 1-12 разрядах мантиссы.

Переполнение при операциях над числами с плавающей запятой может быть в том случае, если порядок результата операции после нормализации получается больше 11 разрядов. Переполнение может быть при операциях сложения или вычитания больших чисел, при делении на маленькие числа и “0” и при умножении, если результат операции 64-разрядный. При переполнении устанавливается в “1” признак переполнения OVR, доступный для опроса из программы, и происходит внутреннее прерывание, которое может быть блокировано признаком БПП в регистре режимов РР ЦП.

4.3.3. Целые 64 и 32-разрядные числа

   32   31 30 ....  1          64   63 62 ...... 2 1
 |----|--------------|       |----|-----------------|
 |знак|  ч и с л о   |       |знак|    ч и с л о    |
 |----|--------------|       |----|-----------------|

Положительные числа представляются в прямом коде с “0” знака, отрицательные - в дополнительном коде с “1” знака. Для выполнения арифметики с такими числами предполагаются отдельные наборы операций, работающих только в новом режиме. В случае переполнения устанавливается в “1” признак OVR, доступный для опроса из программы. А при переносе из знакового разряда в логических командах - признак переноса С. Прерывания по переполнению не происходит.

32-разрядные числа размещаются по 2 в слове. Они могут прямо адресоваться специальными командами (в новом режиме), исполнительные адреса в которых 21-разрядные (за счет индекс-регистров). Аналогично, в новом режиме существуют команды для работы с 16-разрядными фрагментами, байтами и битами. Разрядность исполнительного адреса у этих команд равна соответственно 22, 23 или 26.


4.4. Формат команд

4.4.1. Команды нового режима

Команды в обоих режимах отличаются от чисел значением одного из битов тега. Еще один бит в теге различает команду, работающую в новом режиме, от команды эмулятора БЭСМ-6.

В новом режиме длина каждой команды - 32 бита. В одном слове размещается 2 команды. Фомат команд имеет 2 структыры:

Команды основного формата:

 32   ...   29 28 ... 21 20       ...       1
|-------------|---------|--------------------|
| модификатор |  к о п  |        адрес       |
|-------------|---------|--------------------|

Команды дополнительного формата:

 32   ...   29 28 ... 21 20 ... 13 12 ...   1
|-------------|---------|---------|----------|
| модификатор |   3f    |  к о п  |  адрес   |
|-------------|---------|---------|----------|

20-й разряд адреса в команде основного формата является знаковым. Положительный адрес представляется в прямом коде с “0” знака, отрицательный - в дополнительном коде с “1” знака. Предполагается, что программы пользователей располагаются в области положительных адресов, а программы операционной системы - в области отрицательных адресов.

Разрядность всех индексных регистров (модификаторов) равна 32. При установке адреса на индекс-регистр знак адреса (20-й разряд) размножается в 21-32 разряды индекс-регистра. Предполагается иметь полный набор операций целочисленной арифметики над содержимым индекс-регистров. Команды в новом режиме работают с полными 64-разрядными словами, либо с 32-разрядными полусловами, либо с 16-разрядными фрагментами, либо с 8-разрядными байтами, либо с отдельными битами слова.

Разные замечания и предложения:

4.4.2. Команды эмулятора БЭСМ-6

Длина каждой команды - 24 бита. Структура команды - такая же, как у БЭСМ-6. Размещаются 2 команды в одном 64-разрядном слове в тех же позициях, что и числа:

 64 63  60 59   ...   37 36    ...     13 12    1
|--|------|-------------|----------------|-------|
|лe|xxxxxx| вая команда | правая команда |xxxxxxx|
|--|------|-------------|----------------|-------|

Это решение продиктовано тем, что многие программы БЭСМ-6 занимаются самомодификацией. Более того, иногда запись команд производится обычной командой записи с предварительной установкой режима записи команд.

4.4.2.1. Арифметические команды эмулятора
4.4.2.2. Команды пересылок

Всегда работают с полными словами. Что касается индекс-регистров, то в режиме эмулятора содержимое 16:32 разрядов всех индекс-регистров не должно изменяться никакими командами.

4.4.2.3. Условные переходы в режиме эмулятора

“Дыры” в 64-разрядном слове должны быть “прозрачны” для команд условных переходов по содержимому слова. Иными словами, значения 1-12 и 60-63 разрядов слова не оказывают никакого влияния на формирование признаков, по которым осуществляются условные переходы в режиме эмулятора. Точно так же не влияют на выполнение команд условных переходов по индекс-регистрам значения 16:32 разрядов регистров.

4.4.2.4. Логические и сдвиговые команды

Правила их выполнения в режиме эмулятора.


4.5. Теги

Каждое машинное слово снабжено тегом, занимающим 65-72 разряды слова. Назначение отдельных битов тега:

При чтении из памяти теговская часть слова проверяется на предмет возможной защиты и соответствия значению РЭ. Прерывания, могущие возникнуть при этом, блокируются признаками БПТЧ и БЧОП. При записи в память тег пишется из регистра тега результата, который может быть сформирован программно. При записи также возможно прерывание по тегу. Оно блокируется признаком БПТЗ. Тег результата запоминается в регистре РРР (расширение регистра режимов).


4.6. Приписка и защита памяти

При обращении в память за числами и командами 11:20 разряды исполнительного адреса слова определяют номер регистра приписки (РП): 0,1,…,1023 и при отсутствии блокировки приписки (БП = 0 в РР) заменяются в адресе на содержимое поля номера физической страницы из этого РП. Очевидно, что часть виртуальной памяти должна использоваться для целей операционной системы. Программам пользователей эта часть памяти должна быть ограниченно доступна. Поэтому предлагается в схему приписки ввести проверку виртуального номера страницы:

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

Формат регистра приписки :

При обращении к памяти 21:24 разряды исполнительного адреса (математического) сравниваются с номером виртуального сегмента соответствующей страницы. При несовпадении - прерывание (можно и то же, которое происходит при несовпадении номера процесса). При совпадении 21:24 разряды математического адреса заменяются на номер физического сегмента памяти из 21:24 разрядов РП. Таким образом достигается расширение виртуального адреса до 128 мбайт.

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

На каждую физическую страницу памяти отводится 3 бита, доступных из программы:

Кроме того, для хранения двунаправленных списков приоритетов страниц используется ОЗУ приоритетов страниц (ОЗУПС0 и ОЗУПС1) общей емкостью 2к 10-разрядных слов. Структура списка следующая: для страницы с номером Р по адресу, равному номеру страницы, в ОЗУПС0 содержится номер страницы, предшествующей Р по приоритету, а в ОЗУПС1 - номер страницы, следующей за Р по приоритету.

Для страниц, находящихся в начале физической памяти и соответствующих резидентной части системы, пересчитывать приоритеты нет необходимости, поэтому эта часть ОЗУ приоритетов страниц используется в качестве рабочей области. В слове 0 ОЗУПС0 содержится номер страницы с минимальным приоритетом, в ОЗУПС1 - с максимальным (в этом месте список “закольцован”). В слове 1 ОЗУПС0 находится номер страницы NC, для которой произведен пересчет списка приоритетов в последний раз.

В момент инициализации системы в ОЗУ приоритетов страниц загружается произвольный список, NC обнуляется, а ОЗУ БМСП, соответствующее адресам “укачиваемых” страниц памяти (для которых нужно пересчитывать приоритет), устанавливается в “1”, остальные (начальные) адреса ОЗУ БМСП обнуляются.

При обращении к странице, бит модификации которой равен 1, происходит прерывание “запрос модификации приоритетов страниц”. При этом страница, по которой произошло прерывание, извлекается из “старого” списка приоритетов и заносится в “новый” после страницы с номером NC. Бит ОЗУ БМСП, соответствующий странице Р, сбрасывается, а значение Р записывается на место NC.

Запрос на новую корректировку списков приоритетов страниц производится операционной системой по команде WMOD. При этом ОЗУ БМСП, начиная с заданного адреса, заполняется “1”, а в 1-ое слово ОЗУПС0 заносится “0”.


4.7. Регистры

Всего в ЦП имеется 1024 32-разрядных, 16 64-разрядных и ряд специальных регистров.

32-разрядные регистры делятся на группы по 32 регистра. Для выбора группы достаточно записать в регистр номера группы (РНГ) код (5 разрядов), определяющий группу регистров.

Каждому процессу, занимающему центральный процессор, отводится одна или несколько групп 32-разрядных регистров, часть из которых используется в качестве области упрятывания регистров общего назначения, находящихся вне группы. Для смены процессов или организации вызова экстракода в область упрятывания регистров текущего процесса достаточно скопировать содержимое регистров общего назначения, записать другой номер в РНГ и восстановить содержимое регистров общего назначения нового процесса.

Здесь мы перечисляем все те регистры, к которым необходимо иметь доступ из программы, и их разрядность. Отметим, что доступ должен быть симметричен, т.е. Если регистр доступен по чтению, то доступен и по записи. (замечание: для некоторых специальных регистров это не так!)

Нумерация регистров, приведенная в левом столбце, восьмеричная, эти номера будут адресами в командах обращения к регистрам. В скобках приведены шестнадцатеричные эквиваленты адреса.

32-разрядные регистры:
32-разрядные регистры группы:

 1  : блокировка нормализации (БНОР)
 2  : блокировка округления (БОКР)
 3* : логическая группа для условных переходов (ГЛ)
 4* : группа умножения (ГУ)
 5* : группа сложения (ГС)
 6  : блокировка прерывания при переполнении (БПП)
 7**: признак переполнения (ПП или OVR)
 8**: признак переноса (ППС или С)
 9**: признак знака (ПЗ или N)
10**: признак нуля (ПН или Z)
11  : блокировка выхода числа за диапазон БЭСМ-6 (ББЧ)
12  : блокир.проверки переполн. Поля упрятывания (БППУ)
13  : режим диспетчера (РД)
14  : блокировка реакции на чужой операнд (БЧОП)
15  : блокир.проверки тега при чтении операнда (БПТЧ)
16  : блокировка реакции на чужой сумматор (БЧС)
17  : блокировка программной интерпретации тега (БПИНТ)
18  : блокировка внешних прерываний (БВП)
19  : блокировка проверки тега при записи (БПТЗ)
20  :
21  : режим пошагового выполнения команд (РШ)
22  : признак останова по прерыванию (ПОП)
23  : блокировка защиты страниц по записи (БЗЗ)
24  : блокировка защиты страниц по обращению (БЗО)
25  : режим отрицательных адресов (РОА)
26  : блокировка проверки номера процесса (БПНП)
27  : блокировка приписки (БП)
28* : признак изменения адреса 16 регистром (ПИА)
29* : признак правой команды (ППК)
30* : признак команды передачи управления (ППУ)
31  :
32  :

Все разряды РР активного процесса переписываются в исполнительную часть. Разряды РР, помеченные (*) и изменяющиеся в каждой команде (ГЛ, ГУ, ГС, ПИА, ППК, ППУ) переписываются в триггеры признаков; прочитать их состояние в ПП можно командой чтения регистра с адресом 0181B (см. П.6.7.). Разряды РР, изменяющиеся в арифметических командах с сумматором, помеченные (**) (OVR, С, N, Z), переписываются в регистр признаков результата М; обращение к ним из ПП - командами с адресом 0181f. Остальные разряды исполнительной части соответствуют разрядам РР.

При изменении разрядов РР активного процесса командами из ПП надо записать в РР в ОЗУ модификаторов (адрес РР 11 + номер группы в 6-10 разрядах), то же записать в исполнительную часть РР (адрес 0181в) и, если надо, в регистр М (0181f).

Изменение разрядов РР своего процесса командами SETR и CLRR происходит одновременно в РР в ОЗУ модификаторов и в исполнительной части. Команды RMOD и WMOD, обращающиеся к РР по полному адресу, включающему номер группы, изменяют только РР в ОЗУ модификаторов, не меняя его исполнительной части, если даже это активный процесс!

1 : признак команд (ПК)
2 : режим эмуляции БЭСМ-6 (РЭ)
3 : запрет чтения операнда из памяти (ЗЧП)
4 : запрет записи операнда в память (ЗЗП)
5 : запрет выборки команды из памяти (ЗВП)
6 : запрет передачи управления на команду (ЗПУ)
7 : теговский резерв
8 : программная интерпретация тега (ПИНТ)
9-16: в 9-13 разрядах номер предыдущей группы регистров (ПГР), 14-ый разряд равен 1;
      или 9-16 разряды равны 0, если содержимое предыдущей группы упрятано в память.
17-24: в 17-21 разрядах - номер резервной группы регистров для экстракодов (РГР),
       22-ой разряд равен 1; или 17-24 разряды равны 0, если резервная группа
       регистров отсутствует и старое содержимое регистров упрятывается в память.
25-32: резерв. Можно использовать в качестве регистра тега для ЭЛЬБРУС-Б.

Регистры 27:34 (17-1с) - область упрятывания регистров:
64-разрядные регистры:
Прочие хранители информации, которые в программах удобно считать регистрами:

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


4.8. Система прерываний и экстракодов

Внутренние прерывания исполняются безусловно и имеют более высокий приоритет по сравнению с внешними. Внешние прерывания исполняются при отсутствии признака БВП. Всего может быть 64 различных типа внешних прерываний. Порядок отработки их определяется номером позиции в ГРП. При отсутствии БВП запросы на обработку прерываний от внешних устройств поступают по шине IRQ в ЦП в блок реакции на прерывание в виде логической суммы запросов от всех устройств. По этому сигналу после выполнения текущей команды инициируется работа микропрограммы входа в прерывание, которая производит чтение запросов на прерывание в ГРП и их гашение. При многопроцессорной системе на внешние прерывания реагирует тот процессор, который первый “откликнулся” (у которого нет БВП). Для более равномерного распределения работ между процессорами можно завести в общей памяти “шкалу работ” на тот случай, если “откликнувшийся” процессор занят. Решено отказаться от главного регистра маски в процессоре. Предполагается иметь только регистры масок в контроллерах и устройствах. При обработке внешних прерываний система сама определяет количество запросов от внешних устройств, анализируя состояние ГРП, и сама же сбрасывает разряды ГРП после обработки соответствующих прерываний.

Каждому процессу отводится одна или несколько групп регистров. Самый “нижний уровень” используется собственно программой, другие используются экстракодами. В каждой группе в РРР в 17-21 разрядах записывается номер резервной группы регистров, а 22-ой разряд устанавливается в 1; либо, если резервная группа регистров отсутствует, 17-24 разряды равны 0. В случае вызова экстракода, если 17-24 разряды не равны 0, после записи регистров ЦП в область упрятывания текущей группы регистров 17-21 разряды переписываются в РНГ, и происходит переход на резервную группу. В РРР этой группы в 9-16 разряды записывается номер предыдущего набора регистров. Если же в поле номера резервной группы регистров в 17-24 разрядах 0, происходит упрятывание регистров ЦП в память, 9-16 разряды РРР устанавливаются в 0, и работа происходит на том же наборе.

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

4.8.1. Порядок действий при прерываниях

14 - ИАОП (в РЭ - только младшие 15 разрядов)
13 - СЧАС (в РЭ - только 15 разрядов)
12 - физический адрес (rG0 на момент прерывания)
11 - РНП
10 - РР
 9 - РРР
 8 - РНГ в 6-10 разрядах
 7 - код операции арбитра.
 6 - тег команды
 5 - тег операда
 4 - правая половина командного слова
 3 - левая.

4.8.2. Порядок действий при экстракодах

15 - адрес начала рабочего поля экстракода в области упрятывания (новое значение РАПУ, уменьшенное на 6)
14 - исполнительный адрес экстракода (МАТЕМАТИЧЕСКИЙ, 32 разряда - в нр, 15 разрядов - в рэ)
13 - СЧАС ( в рэ - только 15 мл.разрядов)
12 - физический адрес
11 - РНП
10 - РР
 9 - РРР
 8 - РНГ в 6-10 разрядах
 7 - код операции экстракода
 6 - тег команды
 5 - тег операнда
 4 - правая половина командного слова
 3 - левая.
Сумматор и РМР при экстракодах не упрятываются и не восстанавливаются. Их можно использовать для передачи параметров.

Порядок упрятывания регистров в память:

4.8.3. Перечислим все возможные перерывания и причины их возникновения

Микропрограммные прерывания
Внешние прерывания. Разряды ГРП