Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

IBM370

.pdf
Скачиваний:
36
Добавлен:
02.06.2015
Размер:
5.21 Mб
Скачать

??? 64 ?? ???????? ? 2 ?? ????????

 

+-------------------------------------------------------------

+

¦

 

//////// ¦ ?????? ???????? ¦ ?????? ???????? ¦ ?????? ????? ¦

+

-------------------------------------------------------------

 

 

 

 

 

 

+

 

0

7

8

15

16

20

21

31

??? 1 ?? ???????? ? 4 ?? ????????

+-------------------------------------------------------------+

¦

 

//////// ¦ ?????? ???????? ¦ ?????? ???????? ¦ ?????? ????? ¦

+

-------------------------------------------------------------

 

 

 

 

 

 

+

 

0

7

8

11

12

19

20

31

??? 1 ?? ???????? ? 2 ?? ????????

+-------------------------------------------------------------+

¦

 

//////// ¦ ?????? ???????? ¦ ?????? ???????? ¦ ?????? ????? ¦

+

-------------------------------------------------------------

 

 

 

 

 

 

+

 

0

7

8

11

12

20

21

31

Логические адреса преобразуются в реальные с помощью двух таблиц переадресации: таб-

лицы сегментов и таблицы страниц, которые отражают текущее распределение реальной па-

мяти. Реальная память распределяется страницами. В пределах страницы байтам присваива-

ется непрерывная последовательность логических адресов. Страницы в реальной памяти мо-

гут не примыкать друг к другу, даже если они имеют последовательные логические адреса.

5.2.Управление

Управление динамической переадресацией осуществляется посредством одного из битов

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

Слово состояния программы

Если процессор оснащен средствами динамической переадресации, он может выполнять операции в двух режимах – с переадресацией и без нее – в зависимости от значения бита 5,

называемого битом режима переадресации, PSW режима расширенного управления. Если бит

5 установлен в единицу, то переадресация выполняется; если – в нуль, то неявное динамиче-

ское преобразование адресов не производится и логические адреса воспринимаются как ре-

альные.

Управляющий регистр 0

Размер страницы и сегмента зависит от содержимого 4 битов управляющего регистра 0:

91

-----------------------------

¦

?????? ¦

0 ¦

?????? ¦

¦

???????? ¦

¦

???????? ¦

-----------------------------

8 9 10 11 12

Значение этих битов определяется следующим образом.

Размер страницы (PS). Содержимое битов 8 и 9 управляющего регистра 0 задает размер страницы:

Содержимое битов 8 и

Размер стра-

9 управляющего регистра

ницы, байт

0

 

 

 

01

2048 (2 Кб)

10

4096 (4 Кб)

 

 

Если содержимое битов 8 и 9 отличается от 01 и 10 (в двоичном коде), то в ходе выполне-

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

чай спецификации переадресации и операция подавляется. В исходном состоянии биты 8 и 9

устанавливаются в 0.

Размер сегмента (SS). Содержимое битов 11 и 12 задает размер сегмента:

Содержимое битов 11 и

Размер сег-

12 управляющего реги-

мента, байт

стра 0

 

 

 

00

65 536 (64 Кб)

10

1 048 576 (1

 

Мб)

 

 

Если бит 12 установлен в единицу, то при выполнении команды, вызывающей динамическое преобразование адресов, распознается особый случай спецификации переадресации и опера-

ция подавляется. В исходном состоянии биты 11 и 12 устанавливаются в нуль.

При выполнении команды, вызывающей динамическую переадресацию, бит 10 управляю-

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

92

Управляющий регистр 1

Содержимое битов 0–25 управляющего регистра 1 задает начало и длину таблицы сегмен-

тов:

+-------------------------------------------

 

 

 

 

+

¦ ????? ¦ ????? ??????? ????????? ¦

 

¦

+-------------------------------------------

 

 

 

 

+

0

7

8

25

26

31

Поля регистра используются следующим образом:

Длина таблицы сегментов: содержимое битов 0–7 управляющего регистра 1 определяет длину таблицы сегментов в блоках по 64 байта каждый. Следовательно, размер таблицы сег-

ментов может изменяться на целое число, кратное суммарной длине 16 строк такой таблицы.

Длина таблицы сегментов в блоках по 64 байта в каждом равна увеличенному на 1 двоичному содержимому битов 0–7. Индекс сегмента служит для выбора строки таблицы сегментов, а со-

держимое поля длины позволяет проверить, указывает ли индекс сегмента на строку, находя-

щуюся в пределах заданной таблицы сегментов.

Адрес таблицы сегментов: если к содержимому битов 8–25 управляющего регистра 1 при-

писать справа шесть нулей, то получится 24-битовый реальный адрес начала таблицы сегмен-

тов.

Замечания по программированию

Во время загрузки управляющих регистров корректность загружаемой информации, отно-

сящейся, в частности, к динамической переадресации, не проверяется. Эта информация про-

веряется во время ее использования и, если обнаруживается особый случай, производится ин-

дикация.

Считается, что информация, относящаяся к динамическому преобразованию адресов, ис-

пользуется при выполнении команды в режиме переадресации или при выполнении команды ЗАГРУЗКА РЕАЛЬНОГО АДРЕСА. Вместе с тем эта информация не используется при задании в PSW режима переадресации, если перед выполнением команды происходит прерывание ввода-вывода, внешнее прерывание, прерывание повторного пуска или прерывание от схем контроля, а также если PSW задает состояние ожидание.

5.3.Таблицы переадресации

В процессе динамической переадресации используются таблицы переадресации двух ви-

дов: таблицы сегментов и таблицы страниц. Эти таблицы находятся в основной памяти.

Строки таблицы сегментов

Строка таблицы сегментов определяет длину, доступность и начало соответствующей таб-

лицы страниц.

Строка таблицы сегментов имеет формат:

93

+

-------------------------------------------------

 

 

 

 

 

 

 

+

¦ ?????

¦

0000

¦

????? ??????? ???????

¦

00

¦ I

¦

+-------------------------------------------------

 

 

 

 

 

 

 

 

+

0

3

4

7

8

28

29

30

31

 

Поля строки таблицы сегментов используются следующим образом.

Длина таблицы страниц. Содержимое битов 0–3 задает длину таблицы страницы в едини-

цах, каждая из которых равна 1/16 максимального размера этой таблицы. Максимальный раз-

мер зависит от размеров сегмента и страницы. Длина таблицы страниц в единицах, каждая из которых равна длине 1/16 максимального размера, будет на единицу больше двоичного со-

держимого битов 0–3. Длина поля сравнивается с содержимым четырех старших битов индекса страницы логического адреса, чтобы определить, задает ли индекс страницы строку внутри данной таблицы страниц или нет.

Адрес таблицы страниц. Если к содержимому битов 8–28 приписать справа три нуля. то получится 24-битовый реальный адрес начала таблицы страниц.

Бит доступности сегмента. Бит 31 показывает, доступен ли сегмент, соответствующий данной строке таблицы сегментов. Если бит 31 установлен в нуль, процесс динамического пре-

образования адреса с использованием заданной таблицы страниц продолжается. Если бит ра-

вен единице, то распознается особый случай использования сегмента и данный элемент опе-

рации аннулируется.

Использование битов 4–7 и 29–30 строки таблицы сегментов зависит от модели. Если эти биты не равны нулю, то обычно распознается особый случай спецификации переадресации, и

данный элемент операции подавляется; однако в некоторых моделях содержимое этих битов игнорируется.

Строки таблицы страниц

Строка таблицы страниц определяет доступность страницы и содержит старшие биты ре-

ального адреса. Формат таблицы страниц зависит от размера страницы.

Строка таблицы для 4-Кбайтовых страниц имеет следующий формат:

+

-------------------------------

 

 

 

 

+

¦ ????? ????????

¦ I ¦

00

¦ /

¦

+-------------------------------

 

 

 

 

 

+

0

11

12

13

14

15

 

Строка таблицы для 2 Кб страниц имеет формат:

94

+

----------------------------

 

 

+

¦ ????? ????????

¦ I ¦ 0 ¦ / ¦

+----------------------------

 

 

 

+

0

12

13

14

15

Поля строки таблицы страниц используются следующим образом.

Адрес страницы. В зависимости от размера страницы биты 0–11 или 0–12 содержат 12 или

13 левых битов 24-битового реального адреса. Реальный адрес памяти получается объедине-

нием индекса байтов логического адреса с адресом страницы, причем адрес страницы рас-

сматривается как старшая часть реального адреса.

Бит доступности страницы. Бит 12 или 13 (в зависимости от размера страницы) показы-

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

вания страницы и данный элемент операции аннулируется.

Биты строки, расположенные между битом доступности страницы и самым правым битом строки, должны содержать нули; в противном случае при выполнении команды, использующей эту строку таблицы динамического преобразования адресов, распознается особый случай спе-

цификации переадресации и данный элемент операции подавляется.

Замечания по программированию

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

код длины допустим, если даже конец таблицы (определенный этим кодом) выходит за преде-

лы имеющейся основной памяти или если к части таблицы нельзя адресоваться с помощью логического адреса.

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

5.4. Преобразование адресов

Типы переадресации

Различаются два типа преобразования адресов: явная переадресация и неявная. Явная пе-

реадресация выполняется при преобразовании адреса операнда команды ЗАГРУЗКА РЕАЛЬНОГО АДРЕСА. Преобразование адресов всех команд и адресов операндов, находя-

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

Процесс переадресации

Динамическое преобразование адресов выполняется с помощью таблицы сегментов и таб-

лицы страниц, находящихся в основной памяти. Управление динамической переадресацией осуществляется посредством бита режима переадресации в PSW и битов в управляющих ре-

гистрах 0 и 1.

95

??????????? ??????? 1

?????????? ?????

 

+-------------------

 

 

+

+------------------------------

+

¦

¦

¦

¦

¦ ?????? ¦ ?????? ¦

?????? ¦

¦

¦

¦

¦

¦ ???????? ¦ ???????? ¦

????? ¦

+-------------------

 

 

+

+------------------------------

+

 

¦ +-----------------------------------------

 

 

 

 

 

 

+

¦

 

¦

 

¦ ¦

?

+---------------

 

+

+----------------------

 

 

+

 

¦

 

+-+--? +

+---------------

 

¦ 3 ¦ ?

+

---------------

+

 

¦

 

¦ ¦

+---?¦ ¦

?--+---+---+-? +

+

---------------

¦ 3

¦

 

¦ ¦

 

+---------------

 

¦ ¦ +---?¦ ¦

?--+---+--

+

¦

 

¦ ¦

 

+---------------

 

+

¦

+

---------------

¦

¦

¦

 

¦ ¦

 

??????? ?????????*

¦

L

----------------

 

¦

¦

 

¦ ¦ -----------------------------

 

 

 

 

 

 

??????? ???????*

¦

¦

 

¦ ¦ ¦

 

 

 

 

 

 

 

 

¦

¦

 

? ? ?

+----------------

 

 

+

 

 

 

 

¦

¦

+

-----+

¦

 

 

¦

 

 

 

 

¦

¦

+

-----+

¦ 3

 

 

¦

 

 

 

3 ¦

¦

 

¦ +-----

+----

+

+---

+---------------------------------

 

 

 

 

¦

¦

 

¦

¦

¦

¦

¦

 

 

 

 

¦3

¦

 

¦

+----

+-------

+---

¦

 

 

 

 

¦

¦

 

+------

? ¦ ? ?-+---------------------------

 

 

 

+

¦

¦

 

1

+----------------

 

 

¦

 

2

 

+-+-----

+----

+---+

 

 

¦

 

 

¦

 

 

 

¦ +-? ?-+¦ ? ¦

 

 

+----------------

 

 

+

 

 

 

+----------------

 

+

 

 

 

????? ???????

 

 

 

 

???????? ?????

 

 

????????????? (TLB)

 

 

 

 

 

 

* В основной памяти

1. Информация, которая может включать части логического адреса и адреса таб-

лицы сегментов, используется для поиска в TLB.

2. Если имеется совпадение, адрес из TLB используется для формирования реаль-

ного адреса.

3. Если совпадения нет, производится выборка строк таблицы из основной памяти для преобразования адреса. Результат вместе с поисковой информацией исполь-

зуется для образования строки в TLB.

Рис. 5.1. Процесс переадресации

Индекс сегмента в логическом адресе применяется для выбора строки таблицы сегментов,

длина и адрес начала которой указаны в управляющем регистре 1. Эта строка определяет таб-

лицу страниц, которую следует использовать. Индекс страницы в логическом адресе использу-

ется для выборки строки таблицы страниц, ее формат зависит от размера страницы. Эта стро-

96

ка содержит старшие биты реального адреса, соответствующего исходному логическому адре-

су. Индекс байтов в логическом адресе используется без изменения в качестве младшей части реального адреса.

Чтобы избежать задержки, связанной с обращениями к таблицам переадресации, находя-

щимся в основной памяти, информация, полученная при выборке из этих таблицы, обычно по-

мещается в специальный буфер быстрой переадресации (TLB). Информация, записанная в

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

Процесс переадресации с использованием буфера быстрой переадресации схематически показан на рис. 5.1.

Назначение управляющего регистра 0

При динамической переадресации логический адрес интерпретируется в зависимости от размера сегмента и размера страницы. Размер сегмента и размер страницы определяются со-

держимым битов 8–12 управляющего регистра 0. Если биты 8–9 или 11–12 содержат недопу-

стимый код или если бит 10 равен единице, то распознается особый случай спецификации пе-

реадресации и операция подавляется.

Использование таблицы сегментов

Индекс сегмента в поле логического адреса служит для выбора строки таблицы сегментов,

указывающей на таблицу страниц, которую следует использовать для получения реального ад-

реса. Чтобы получить адрес строки таблицы сегментов, к содержимому битов 8–25 управляю-

щего регистра 1 следует приписать справа шесть нулей и сложить значение индекса сегмента с полученным числом таким образом, чтобы младший бит индекса сегмента располагался в по-

зиции, соответствующей биту 29 адреса таблицы сегментов.

В процессе использования таблицы сегментов для переадресации индекс сегмента сравни-

вается с длиной таблицы сегментов, представленной битами 0–7 управляющего регистра 1.

Сравнение выполняется для того, чтобы установить, находится ли адресуемая строка в преде-

лах таблицы. Если сегмент имеет размер 1 Мб, строки для всех адресуемых сегментов нахо-

дятся в пределах таблицы с минимальной длиной (код длины равен 0). Если сегмент имеет размер 64 Кб, то к содержимому битов 8–11 логического адреса приписываются справа четыре нуля и расширенное таким образом число сравнивается с 8-битовым кодом длины таблицы сегментов. Если содержимое поля длины таблицы сегментов меньше, чем содержимое соот-

ветствующих битов логического адреса, то распознается особый случай использования сег-

мента и данный элемент операции аннулируется.

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

Бит 31 строки таблицы сегментов показывает, доступен ли соответствующий сегмент. Этот бит проверяется и, если он равен единице, то распознается особый случай использования сег-

97

мента и данный элемент операции аннулируется. Использование битов 4–7 и 29–30 зависит от модели: если эти биты не содержат нулей, то обычно распознается особый случай специфика-

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

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

Использование таблицы страниц

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

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

гаться в позиции, соответствующей биту 30 адреса таблицы страниц.

В процессе использования таблицы страниц для переадресации четыре старших бита ин-

декса страницы сравниваются с кодом длины таблицы страниц, представленными битами 0–3

строки таблицы сегментов. Сравнение выполняется для того, чтобы установить, находится ли адресуемая строка в пределах таблицы. Если величина в поле длины таблицы страниц мень-

ше, чем содержимое четырех старших битов индекса страницы, то распознается особый слу-

чай использования страницы и данный элемент операции аннулируется.

Если адрес, сформированный для выборки строки таблицы страниц, указывает за пределы основной памяти вычислительной установки, то распознается особый случай адресации и дан-

ный элемент операции подавляется.

Строка, полученная в результате выборки из таблицы страниц, содержит старшие биты ре-

ального адреса и показывает, доступна ли страница. Для того чтобы определить, доступна ли соответствующая страница, проверяется бит доступности страницы. Если этот бит равен еди-

нице, распознается особый случай использования страницы и данный элемент операции анну-

лируется. Если в случае 4 Кб страницы один или оба бита 13–14, а в случае 2 Кб страницы бит

14 установлены в единицу, распознается особый случай спецификации переадресации и опе-

рация подавляется.

Формирование реального адреса

Если в процессе динамической переадресации особый случай не был обнаружен, реальный адрес получается в результате объединения адреса, полученного из строки таблицы страниц,

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

ного адреса.

При обращении к основной памяти для выборки строки таблицы сегментов или таблицы страниц защита памяти не действует, т. е. обращение выполняется таким образом, как будто

98

область памяти, содержащая данную строку таблицы переадресации, не защищена по выбор-

ке.

Замечания по программированию

Если в процессе динамической переадресации обнаруживается несколько (более одного)

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

Преобразуемые адреса

Все адреса, которые явно определяются программой и используются процессором для об-

ращения к основной памяти за командой или операндом, являются логическими адресами и подвергаются динамической переадресации. Логическими являются и адреса, доступные про-

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

Динамическому преобразованию не подвергаются адреса, явно задающие ключ памяти (ад-

реса операндов в командах УСТАНОВИТЬ КЛЮЧ ПАМЯТИ, ПРОЧИТАТЬ КЛЮЧ ПАМЯТИ и СБРОСИТЬ БИТ ОБРАЩЕНИЯ), а также величины, которые формируются на основе содержи-

мого полей B и D команды, но не используются для обращения к основной памяти. К послед-

ним относятся адреса операндов в командах ЗАГРУЗКА АДРЕСА, ОБРАЩЕНИЕ К МОНИТОРУ,

а также в командах сдвига и ввода-вывода.

Не подвергаются динамическому преобразованию также адреса, которые неявно использу-

ются процессором или каналом при прерываниях и изменении содержимого интервального таймера по адресу 80, а также при динамической переадресации и регистрации, включая ад-

рес области расширенной регистрации по сигналам от схем контроля в управляющем регистре

15. Однако, если программа явно использует эти области для размещения операндов или ко-

манд, их адреса подвергаются динамическому преобразованию.

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

гается динамическому преобразованию также адрес области расширенной регистрации ввода-

вывода, хранящийся в основной памяти по адресу 172.

Интерпретация адреса памяти в команде ДИАГНОСТИКА зависит от модели.

Если префиксация должна выполняться, то она выполняется после динамической переад-

ресации. Префиксация описана в разделе 7.2. Перечень операций, выполняемых над адреса-

ми, включая операции динамического преобразования и префиксации приведена ниже.

Типы адресов

Абсолютный, реальный и логический адреса отличаются преобразованием, которое выпол-

няется над адресом при обращении к памяти.

99

Абсолютный адрес – это адрес, присвоенный области основной памяти. Абсолютный адрес используется для доступа к памяти, при котором отсутствует какое бы то ни было преобразо-

вание адреса.

Реальный адрес идентифицирует область в реальной основной памяти. Когда реальный адрес используется для обращения к основной памяти, он преобразуется в абсолютный адрес посредством префиксации.

Если для доступа к памяти используется логический адрес, он преобразуется посредством динамической переадресации в реальный адрес и затем в абсолютный посредством префик-

сации.

Классификация адресов

Логические адреса, явно заданные в программе

адрес команды в PSW;

адрес перехода;

адрес операнда в основной памяти;

адрес операнда в команде ЗАГРУЗКА РЕАЛЬНОГО АДРЕСА;

начальный адрес PER в управляющем регистре 10 и конечный адрес PER в управляю-

щем регистре 11.

Реальные адреса, явно заданные в программе

адреса операндов в командах УСТАНОВИТЬ КЛЮЧ ПАМЯТИ, ПРОЧИТАТЬ КЛЮЧ ПАМЯТИ и СБРОСИТЬ БИТ ОБРАЩЕНИЯ;

адрес MCEL в управляющем регистре 15;

адрес таблицы сегментов в управляющем регистре 1;

адрес таблицы страниц в строке таблицы сегментов;

адрес страницы в строке таблицы страниц.

Абсолютные адреса, явно заданные в программе

значение префикса;

адрес CCW в CAW;

адрес данных в CCW;

адрес CCW в CCW, которая вызывает переход в канале;

адрес данных в словах косвенной адресации в канале;

адрес IOEL в слове по адресу 172 реальной памяти.

Адреса, которые не используются для обращения к памяти

адреса операндов, задающие величину сдвига в командах сдвига;

адрес операнда в команде ЗАГРУЗКА АДРЕСА;

100

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]