Компания IBM
Опубликован: 28.08.2008 | Доступ: свободный | Студентов: 460 / 64 | Оценка: 4.33 / 4.05 | Длительность: 31:19:00
Лекция 9:

Одноуровневая память

Трансляция адреса

Перед обращением в память виртуальный адрес в любой вычислительной системе должен быть транслирован в реальный. Ранее мы говорили, что в архитектуре PowerPC есть еще один уровень адресов, которые называются эффективными и используются программами. Эффективный адрес должен быть сначала транслирован в виртуальный, и только после этого — в реальный. В этом разделе мы рассмотрим, как выполняются эти трансляции. Приготовьтесь, некоторые детали могут по казаться Вам слишком "острыми".

Характеристики модели памяти


Мы уже познакомились с некоторыми характеристиками памяти AS/400. Приведем снова список этих характеристик вместе с другими, которые мы еще пока не рассматривали, но обязательно сделаем это.

  • Размер страницы — 212 байта (4 KБ).
  • Диапазон эффективных адресов — 264 байта:
    • число эффективных сегментов — 240;
    • размер эффективного сегмента — 224 байта (16 MБ).
  • Два специальных типа эффективных адресов, отменяющих трансляцию, для идентификации которых используются 12 старших разрядов (3 шестнадцатиричные цифры):
    • 800h — эффективный=реальный (E=R) отображают всю реальную память, для них выделено 228 эффективных сегментов;
    • 801h — эффективный=прямое-сохранение (E=DS) отображают пространство ввода-вывода, для них выделено 228 эффективных сегментов.
  • Диапазон виртуальных адресов — 264 байта:
    • число виртуальных сегментов — 240-229;
    • размер виртуального сегмента — 224 байта (16 MБ).
  • Диапазон реальных адресов — 252 байта.

Все характеристики приведены для используемого в AS/400 режима активных тегов 64-разрядных процессоров.

Регистр состояния машины


Процесс трансляции адресов управляется режимом активных и неактивных тегов и состоянием процессора. Состояние процессора определяется специальным регистром, называемым регистром состояния машины MSR (Machine State Register). Разряды этого регистра управляют некоторыми операциями процессора, в том числе трансляцией адреса. В "Управление процессами" мы рассмотрим этот регистр и способ изменения его разрядов. А пока, чтобы лучше понять трансляцию адреса, затронем лишь несколько разрядов MSR, а именно:

  • Разряд 64разрядного режима (MSRSF):
    • 0 — процессор работает 32разрядном режиме;
    • 1 — процессор работает 64разрядном режиме.
  • Разряд перемещения команд (MSRIR):
    • 0 — трансляция адреса команды отключена;
    • 1 — трансляция адреса команды включена.
  • Разряд перемещения данных (MSRDR):
    • 0 — трансляция адреса данных отключена;
    • 1 — трансляция адреса данных включена.
  • Разряд защиты C2 (MSRC2):
    • 0 — защита C2 отключена;
    • 1 — защита C2 включена.
  • Проблемное состояние (MSRPR):
    • 0 — процессор может исполнять любые команды;
    • 1 — процессор может исполнять только непривилегированные команды.
  • Пользовательское состояние (MSRUS):
    • 0 — исполняется код ОС;
    • 1 — исполняется пользовательский код.

Для определения размера адреса в процессе его трансляции используется разряд 64-разрядного режима (MSRSF). Например, в 32-разрядном режиме архитектура PowerPC определяет, что эффективный адрес имеет длину лишь 32 разряда. В режиме активных тегов процессоров AS/400 аппаратура поддерживает только 64-разрядный режим. Таким образом, SLIC, управляющий значениями разрядов MSR, будет устанавливать только 64-разрядный режим.

Разряды перемещения команд (MSRIR) и данных (MSRDR) позволяют процессору работать в режиме реальной адресации. Когда SLIC отключает перемещение, механизмы трансляции адреса не используются, и младшие 52 разряда эффективного адреса передаются как реальный адрес непосредственно подсистеме памяти. Подсистема памяти состоит из памятей кэша и основной. В архитектуре PowerPC для команд и данных — раздельные кэши, и соответственно отдельные разряды перемещения. Такая модель называется гарвардским кэшем10В начале 40-х годов Гарвардский Университет (Harvard University) разработал серию компьютеров Mark (проект финансировался IBM). Компьютеры MarkIII и MarkIV имели раздельные памяти для команд и данных. Термин "гарвардская архитектура" до сих пор используется для обозначения машин с раздельной памятью..

Первоначально бит защиты С2 (MSRC2) предназначался для того, чтобы вынуждать механизм трансляции адреса использовать сегментные регистры для всех пользовательских обращений, если процессор работает в режиме активных тегов и защита С2 включена. Использование системных таблиц гарантировало, что при включенной защите С2 ОС может контролировать и регистрировать доступ пользователей к любым объектам. Хотя данный разряд попрежнему присутствует в некоторых процессорах PowerPC, он не используется для аудита С2. Вместо этого на уровне защиты 50 (защита С2) мониторинг и регистрацию пользовательского доступа компонент защиты SLIC осуществляет непосредственно, без использования сегментных регистров.

Разряд проблемного состояния (MSRPR) используется в процессе трансляции адреса и для защиты памяти. Он определяет, может ли процессор исполнять привилегированные команды PowerPC. Не следует путать эти привилегированные команды с привилегированными командами MI (такими как "PWRDWNSYS," с которой мы встречались в "Защита от несанкционированного доступа" ) — привилегированные команды PowerPC исполняет только SLIC. Примером привилегированных команд PowerPC могут служить команды работы с тегами, например "lq".

Разряд пользовательского состояния (MSRUS) поддерживает уровни защиты AS/400 от 40 и выше. Он позволяет различать системное и пользовательское состояние процесса. Разряд пользовательского состояния определяет, могут ли полномочия быть помещены в указатель, и может ли процесс выполнять привилегированные команды MI. Данный разряд используется также для защиты памяти. Обратите внимание, что разряд пользовательского состояния также задействован только в режиме активных тегов.

Обзор трансляции адреса


На рисунке 8.3 показана трансляция адреса PowerPC в режиме активных тегов. Аппаратура определяет, является ли 64-разрядный адрес, используемый программой, транслируемым адресом, адресом E=R или адресом E=DS. Для классификации используются старшие 12 разрядов (3 шестнадцатиричные цифры) эффективного адреса. Если эти три старшие цифры равны 800, то это адрес E=R. Некоторые компоненты SLIC, которым нужен доступ ко всем частям памяти, работают с реальными адресами, как и большая часть кода управления памятью. Часть пространства эффективных адресов зарезервирована для адресов E=R. Не случайно именно 252 этих адресов (64 разряда – 12 старших разрядов для 800 = 252) соответствуют диапазону реальных адресов.

Трансляция адреса в режиме активных тегов

Рис. 8.3. Трансляция адреса в режиме активных тегов

Когда аппаратура обнаруживает адрес E=R, она проверяет разряд проблемного состояния, чтобы определить, может ли процесс, сгенерировавший такой адрес, выполнять привилегированные команды PowerPC (MSRPR = 0). Если это так, то остальные 52 разряда адреса E=R передаются непосредственно основной памяти как реальный адрес. Если MSRPR = 1, то в зависимости от версии процессора, он будет либо генерировать прерывание, либо рассматривать адрес как транслируемый — разные процессоры PowerPC реагируют поразному. Если использование адреса E=R допустимо, то накладных расходов при трансляции адреса не возникает. Мы любим говорить, что число 800 — ключ, открывающий бесплатный доступ к памяти.

Для доступа к пространству ввода-вывода, которое мы кратко обсудили в "Технология PowerPC" , в архитектуре PowerPC используется диапазон адресов, называемых адресами прямого сохранения. Это внешнее адресное пространство, которое для процессора выглядит как часть памяти. На самом деле, оно, конечно, таковым не является; эти адреса используются для обозначения подключенных к системе устройств ввода-вывода. Обычно, устройства в любой системе подключены к шине вводавывода. В "Система ввода-вывода" мы расскажем, что устройства AS/400 подключены к процессорам вводавывода, которые, в свою очередь, подключены к шинам вводавывода. Таким образом, адрес прямого сохранения используется в AS/400 для идентификации как шины ввода-вывода, так и подключенного к ней процессора ввода-вывода.

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

Если старшие три шестнадцатиричные цифры эффективного адреса равны 801, то это адрес E=DS. Обнаружив этот адрес, аппаратура проверяет разряд проблем ного состояния, чтобы определить, может ли процесс, сгенерировавший адрес, выполнять привилегированные команды PowerPC (MSRPR= 0). Если это так, то остальные 52 разряда адреса E=DS передаются непосредственно пространству ввода вывода. Как и адреса E=R, адреса E=DS имеют 228 эффективных сегмента. Если MSRPR = 1, то в зависимости от версии процессора, он будет либо генерировать прерывание, либо рассматривать адрес как транслируемый.

Если три старшие шестнадцатиричные цифры не равны ни 800, ни 801, то это транслируемый адрес. Так как система находится в режиме активных тегов, то эффективный адрес является виртуальным. Для трансляции виртуального адреса в реальный используется таблица страниц.

На рисунке 8.4 представлены этапы трансляции адреса в режиме активных тегов. Старшие 40 разрядов эффективного адреса называются идентификатором эффективного сегмента (ESID), а младшие 24 — смещением. Как показано на рисунке, смещение подразделяется на страничное и байтовое. Каждое из полей смещения имеет длину 12 разрядов. Страничное смещение задает страницу сегмента, а байтовое — байт страницы.

Этапы трансляции адреса (режим активных тегов)

Рис. 8.4. Этапы трансляции адреса (режим активных тегов)

Первый шаг процесса трансляции — создание идентификатора виртуального сегмента (VSID). В режиме активных тегов это просто ESID. Виртуальный адрес, как и эффективный, имеет размер 64 разряда и включает 24разрядное смещение. VSID и страничное смещение виртуального адреса составляют номер виртуальной страницы (VPN). На рисунке 8.4 видно, что VPN имеет длину 52 разряда. VPN используется для определения номера реальной страницы (RPN) по таблице страниц. RPN — это номер страничного фрейма в памяти, а не номер страницы на диске. Байтовое смещение всегда передается от эффективного адреса виртуальному и затем реальному без изменений. Оно задает байт на 4килобайтной странице и никогда не участвует в процессе трансляции.

Для сравнения на рисунке 8.5 показаны этапы трансляции адреса в режиме неактивных тегов. Данный механизм трансляции не используется в AS/400, но все же полезно представлять себе как сходство, так и различие трансляции адреса в AS/400 и в таких ОС, как AIX. В данном случае, ESID используется для обращения к таблице сегментов, из которой извлекается VSID. Обращение к таблице страниц, которое мы скоро рассмотрим, в режимах активных и неактивных тегов выполняется одинаково. Следует также отметить размер полей адреса. В режиме неактивных тегов порции смещения (поля страницы и байта) эффективного и виртуального адреса равны 28 разрядам, в режиме активных тегов — 24. 28 разрядов были выбраны в соответствии с числом разрядов смещения в прежней 32разрядной архитектуре Power и по-прежнему используются на некоторых процессорах RS/6000.

Этапы трансляции адреса (режим неактивных тегов)

Рис. 8.5. Этапы трансляции адреса (режим неактивных тегов)

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

Александр Качанов
Александр Качанов
Япония, Токио
Олег Корсак
Олег Корсак
Латвия, Рига