ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 22

Часть IV  Совместимость
Глава 21   Выполнение программ  процессоров
           80286 и 386(ТМ) DX или SX
----------------------------------------------------------------
В основном, программы написанные для защищенного режима
процесора 80286 могут выполняться без изменений на процессоре
i486. Характерной чертой объектного кода процессора 80286,
является его совместимость с кодом i486, как его подмножества.
Бит умолчания в дескрипторах сегментов показывает, когда
процессор должен обрабатывать сегмент кода, данных или стека как
сегмент центрального процессора 80286 или 386(ТМ)/i486.
Для программного обеспечения процессоры 386 DX или SX,
являются практически тождествеными процессору i486.
Большинство различий приходится на их аппаратную реализацию.
Дескрипторы сегмента используемые процессором 80286
поддерживаются процессором i486 если Intel(R)-резервное слово
(старшее слово) дескриптора очищено. В процессоре i486 это
слово содержит старшие биты базового адреса и границу сегмента.
Дескрипторы сегмента для сегментов данных, сегментов кодов,
локальные таблицы дескрипторов ( для глобальных таблиц
дескрипторов дескрипторов нет), и шлюзы задач для процессоров
80286, 386 и i486 одинаковы. Другие дескрипторы процессора
80286 (сегмент TSS, шлюз вызова, шлюз прерывания и шлюз
ловушки) поддерживаются процессором i486. Процессор i486
также имеет дескрипторы для сегментов TSS, шлюзов вызова,
шлюзов прерывания и шлюзов ловушки, которые поддерживает
32-разрядная архитектура процессора i486. Обе разновидности
дескрипторов могут использоваться в одной системе.
Для дескрипторов сегментов, одинаковых для процессоров 80286
и i486, очищенные биты резервного слова побуждают процессор
i486 интерпретировать эти дескрипторы точно так, как это
делает процессор 80286. Например:
Базовый адрес (Base Address) - Восемь старших бит базового
32-разрядного адреса очищены, что ограничивает базовые
адреса 24 битами.
Граница (Limit) - Четыре старших бита поля границы очищены,
что ограничивает значение поля границы 64 Кбайт.
Бит детализации (Granularity bit) - Бит детализации очищен
показывая, что значение 16-разрядной границы интерпретируется
блоками по одному байту.
Большой бит (Big bit) - В дескрипторе сегмента данных бит В
очищен показывая, что в сегменте содержится не более 64
Кбайт.
Бит умолчания (Default bit) - В дескрипторе сегмента кода
бит D очищен показывая, что по умолчанию принимаются
16-разрядная адресация и операнды. В дескрипторе сегмента
стека очищенный бит D показывает, что вместо регистра ESP
будет использоваться регистр SP и 64 Кбайтная максимальная
граница сегмента.
Форматы этих дескрипторов и документация по их использованию
содержится в "Справочнике для программиста по процессору
iAPX 286" (iAPX 286 Programmer's Reference Manual).
21.1 Два пути запуска задач центрального процессора 80286
----------------------------------------------------------------
Когда программы процессора 80286 переносятся на процессор i486,
рассматриваются два подхода:
1. Перенос и запуск программных систем процессора 80286 на
   процессор i486 производится вместе со старой операционной
   системой, загрузчиком и компоновщиком.
   В этом случае все задачи используют TSS процессора 80286.
   Процессор i486 используется как более быстрая версия
   процессора 80286.
2. Перенос выбранного прикладного программного обеспечения
   процессора 80286 и его запуск в среде процессора i486,
   с операционной системой, загрузчиком и компоновщиком
   центрального процессора i486.
   В этом случае TSS, используемые для представления задач
   процессора 80286, должны быть изменены на TSS центрального
   процессора i486. Смешение TSS центрального процессора 80286
   и i486 возможно, но выгода очень мала, а проблемы очень
   велики. Лучше, если все задачи в среде программного
   обеспечения центрального процессора i486 будут использовать
   TSS центрального процессора i486. Нет необходимости изменять
   сами обьектные модули, реализованные на процессоре 80286;
   ТSS обычно создаются операционной системой, загррузчиком или
   компоновщиком. Смотрите Главу 24, в которой более подробно
   обсуждается интерфейс между 16-разрядным и 32-разрядным
   кодом.
21.2  Отличия от центрального процессора 80286.
----------------------------------------------------------------
Немногочисленные различия между процессорами  80286 и i486
затрагивают операционную систему в большей степени чем
прикладные программы.
21.2.1  Циклический возврат адреса в 24-разрядном адресном
        пространстве процессора 80286
----------------------------------------------------------------
При использовании процессора 80286, комбинация базы и смещения,
приводящая к адресации за пределы 16 Мбайт, вызывает циклический
возврат адреса к первому мегабайту адресного пространства.
Поскольку процессор i486 имеет большее адресное пространство,
такие адреса попадают на 17-й мегабайт. Если в программе
используется циклический возврат, реализуемый в процессоре
80286, то того же эффекта можно добиться с помощью разбиения на
страницы. Для этого следует отобразить первые 64 Кбайт 17-го
мегабайта логических адресов на физические адреса в первом
мегабайте.
21.2.2  Резервное слово дескриптора сегмента
----------------------------------------------------------------
Так как процессор i486 использует содержащие резервное слово
дескрипторы сегмента процессора 80286, программы для процессора
80286, которые помещают в это слово значения, могут некорректно
выполнятся на процессоре i486.
21.2.3  Новые коды типа дескриптора сегмента
----------------------------------------------------------------
Фрагмент операционной системы, который управляет памятью с
помощью таблиц дескрипторов, для определения неиспользуемых
входов часто помещает запрещенные значения в поля прав-доступа
элементов таблицы дескрипторов. Значения прав-доступа 80H и 00H
неверны как для процессора 80286, так и для процессора i486.
Другие значения, неопределенные для процессора 80286, могут
быть верны для процессора i486, поскольку для него задано
определение этих битов.
21.2.4   Ограничения семантики префикса LOCK
----------------------------------------------------------------
В процессоре 80286 функция блокирования шины реализована иначе,
чем в процессоре i486. Программы, которые используют
специфические для процессора 80286 формы блокирования памяти,
возможно не будут работать на процессоре i486.
Префикс LOCK и соответствующий ему сигнал шины следует
использовать только для предотвращения прерываний операций
пересылки данных другими хозяевами шины. Префикс LOCK можно
использовать только с нижеперечисленными командами процессора
i486, когда они модифицируют память. Исключение неопределенного
кода операции будет результатом использования префикса LOCK
перед любыми другими командами или с командами, перечисляемыми
ниже, когда они не выполняют операцию записи, изменяющую память,
(т.е. операндом назначения является регистр ).
- Команды проверки и изменения битов BTS, BTR и BTC.
- Команды обмена XCHG, XADD, и CMPXCHG (префикс LOCK не нужен
  для команды XCHG )
- Oднооперандные арифметические и логические команды INC, DEC,
  NOT, NEG.
- Двухоперандные арифметические и логические команды ADD, ADC,
  SUB, SBB, AND, OR , XOR.
Команды блокирования гарантированно блокируют только области
памяти, определенные в операнде назначения, но может
блокироваться и большая область памяти. Например, типичные
конфигурации процессоров 8086 и 80286 блокируют все физическое
пространство памяти.
На процессоре 80286 префикс LOCK чувствителен к IOPL; если CPL
имеет меньший уровень привилегированности, чем IOPL,
генерируется исключение общей защиты. На процессорах 386 DX и
i486 нет контроля против выполнения IOPL.
21.2.5   Дополнительные исключения
----------------------------------------------------------------
Процессоры 386 и i486 имеют новые исключения, которые могут
присутствовать даже в системах, разработанных для процессора
80286.
- Исключение #6 - "неопределенный код операции"
  Это исключение может явиться результатом неправильного
  использования префикса команды LOCK.
- Исключение #14 - "сбой страницы"
  Это исключение может иметь место в программе для процессора
  80286, если операционная система разрешает страничное
  разбиение. Страничное разбиение может быть использовано в
  задачах для систем с процессором 80286, если все задачи
  используют одни и те же каталоги страниц. Поскольку в TSS
  процессора 80286 нет места для хранения PDBR регистра,
  переключение на задачу процессора 80286 не изменяет значение
  PDBR регистра. В задачах, переданных от процессора 80286,
  следует использовать TSS центрального процессора i486,
  поскольку так они смогут целиком использовать страничное
  разбиение.
21.3  Отличия от центрального процессора 386 (TM).
----------------------------------------------------------------
Между моделями программирования процессоров 386 DX и SX и
процессора i486 различий очень немного. Процессор i486
определяет новые биты в регистрах EFLAGS, CR0 и CR3, а также
новые входы в таблицы страниц первого и второго уровней. В 386
процессорах эти биты были зарезервированы, поэтому новые
особенности архитектуры не повлияли на совместимость.
21.3.1  Новый флаг
----------------------------------------------------------------
Флаг AC (18-ая битовая позиция) совместно с битом AM регистра
CR0 контролирует проверку выравнивания.
21.3.2  Новое исключение
----------------------------------------------------------------
Ислючение проверки выравнивания (17-й вектор исключения)
сообщает ссылку на невыровненную память при проведении проверки
выравнивания.
21.3.3  Новые команды
----------------------------------------------------------------
Появились три новые прикладные команды:
- Команда  BSWAP
- Команда  XADD
- Команда  CMPXCHG
Появились также три новые системные команды для управления
кэшем и TLB:
- Команда  INVD
- Команда  WBINVD
- Команда  INVLPG
Поменялась форма команды MOV, используемой для доступа к
тестовым регистрам. Для кэша определены новые тестовые регистры,
а модель TLB доступна через измененные тестовые регистры.
21.3.4   Новые биты регистра управления
----------------------------------------------------------------
В регистре CR0 определены пять новых битов:
- NE бит
- WP бит
- AM бит
- NW бит
- CD бит
В регистре CR3 определены два новых бита:
- PCD бит
- PWT бит
21.3.5   Новые биты входа таблицы страниц
----------------------------------------------------------------
Во входах таблицы страниц для контроля буфферизации страниц
определены два новых бита:
- PCD бит
- PWT бит
21.3.6  Изменение в заполнении дескриптора сегмента
----------------------------------------------------------------
На 386 процессорах заполнение дескриптора сегмента всегда
вызывает блокирование чтения и записи при установке бита
доступа дескриптора. Для процессора i486 блокировка чтения и
записи происходит только в случае, когда данный бит еще не
установлен.


Яндекс цитирования