Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЭВМ(Ответы).doc
Скачиваний:
8
Добавлен:
01.04.2025
Размер:
8.77 Mб
Скачать
  1. Блоковые передачи и прямой доступ к памяти.

Действия, обеспечивающие передачу по системной шине байта или слова, называются циклом шины. Выполнение команды может потребовать более одного цикла шины; например, команда MOV AL, TOTAL кроме циклов выборки команды инициирует цикл шины для передачи содержимого TOTAL. Блоковая передача 100 байт реализуется за 100 циклов шины, если передаются байты, и за 50 циклов шины, если передаются слова, начинающиеся по четному адресу.

В течение любого цикла шины системной шиной управляет одна из подключенных к ней компонент. Эта компонента в течение данного цикла называется ведущей, а компонента, с которой она взаимодействует, - ведомой. Обычно ведущим является ЦП с его логикой управления шиной, но и другие компоненты могут получить управление шиной, выдавая в ЦП запрос шины. После завершения текущего цикла шины ЦП возвращает сигнал разрешения (подтверждения) шины и выдавшая запрос компонента становится ведущей. Получение управления шиной на один цикл шины называется пропуском цикла (буквально - "кражей" цикла). Как и логика управления шиной, ведущий шины во время цикла шины должен помещать адрес на шину адреса и управлять действиями на шине. Компонентами, которые могут стать ведущими шины, являются процессоры (с их логикой управления шиной) и контроллеры ПДП. Иногда контроллер ПДП связан с одним интерфейсом, но часто он рассчитан на подключение нескольких интерфейсов.

Микропроцессор 8086 воспринимает запросы шины по входу HOLD и выдает разрешения через выход подтверждения запроса HLDA. Запрос производится, когда потенциальная ведущая компонента шины формирует сигнал 1 на входе HOLD. Обычно после завершения текущего цикла шины микропроцессор реагирует сигналом 1 на выходе HLDA. Когда запрашивающее устройство получает этот сигнал разрешения, оно становится ведущим шины и остается им до снятия своего сигнала на входе HOLD. По окончанию сигнала HOLD микропроцессор сразу же снимает сигнал HLDA. Одно из исключений обычной последовательности возникает при обращении к слову по нечетному адресу; передача происходит за два цикла шины и разрешение не выдается до окончания второго цикла. Другие исключения рассматриваются в последующих главах.

Контроллер ПДП, становясь ведущим шины, помещает адрес памяти на шину адреса и посылает в интерфейс необходимые сигналы, чтобы заставить его выдать данные или принять данные с шины данных. Так как контроллер ПДП сам определяет, когда снять запрос шины, он может вернуть управление ЦП после передачи одного данного, а при готовности следующего данного вновь запросить управление, но он может управлять шиной и до завершения передачи целого блока. Обычно применяется первый способ, так как ЦП может продолжать свои действия до готовности следующего данного. Последовательность действий предпринимаемых при выводе одного данного в режиме ПДП, иллюстрируется рис.13, где цифры обозначают следующие действия:

1 — интерфейс готов принимать данные и делает запрос ЦП;

2 — сформирован запрос шины;

3 — возвращается разрешение шины;

4 — контроллер ПДП помещает адрес на шину адреса;

5 — подтверждается запрос ПДП;

6 — память помещает данные на шину данных;

7 — интерфейс фиксирует данные;

8 — снимается запрос шины, и управление возвращается микропроцессору 8086;

9 — микропроцессор 8086 снимает разрешение шины.

Б локовая передача представляет собой последовательность рассмотренных передач одного данного. В каждом следующем цикле ПДП используется смежная ячейка памяти. Хотя разработано множество конфигураций контроллеров ПДП, все они должны удовлетворять нескольким требованиям. Так как, являясь ведущим шины, контроллер ПДП должен выдавать адрес, в нем необходимы средства хранения следующего адреса памяти. Он должен также узнавать, когда остановить блоковую передачу. На рис.14 приведена минимальная конфигурация контроллера ПДП и интерфейса. Кроме регистров состояния и управления, в контроллере потребуются еще два регистра: для хранения адреса следующей ячейки памяти и числа байт, подлежащих передаче. После передачи каждого данного производится инкремент (или декремент) регистра адреса и декремент счетчика байт. Инкремент и декремент осуществляются на 1 при передаче байт и на 2 при передаче слов. Во время блоковой передачи одного байта при вводе (данное передается из интерфейса в память) имеет место такая последовательность событий:

1. Интерфейс выдает в контроллер запрос ПДП.

2. Контроллер получает управление шиной.

3. Содержимое регистра адреса помещается на шину адреса.

4. Контроллер посылает в интерфейс подтверждение, заставляющее интерфейс выдать данные на шину данных (при выводе по этому сигналу интерфейс фиксирует данные, находящиеся на шине).

5. Байт данных передается в ячейку памяти, определяемую шиной адреса.

6. Контроллер освобождает шину.

7. Инкремент регистра адреса на 1.

8. Декремент счетчика байт на 1.

9. Если счетчик байт не содержит 0, вернуться к шагу 1; в противном случае остановить передачу.

На схеме показаны двунаправленные линии адреса, подключенные к контроллеру, и однонаправленные линии адреса в интерфейс. Это объясняется тем, что контроллер может стать ведущим шины и выдавать адреса на шину, а интерфейс может только принимать адреса. К интерфейсу и контроллеру идут двунаправленные линии данных, хотя только интерфейс может передавать данные между шиной данных и устройством ввода-вывода. Как и в интерфейсе, ЦП должен взаимодействовать с регистрами контроллера, а это осуществляется по линиям данных.

  1. Регистры 32-разрядных процессоров семейства INTEL.

    Регистры. Микропроцессор 80386 включает шесть непосредственно доступных программисту регистров селекторов сегментов, которые содержат указатели сегментов. Значения этих селекторов могут быть загружены при исполнении программы и являются специфичными для задачи. Это значит, что регистры сегментов перезагружаются автоматически при переключении МП 80386 на другую задачу. За регистрами селекторов сегментов стоят реальные регистры кэш-памяти сегментов, которые содержат описания сегментов, указываемых селектором. Это сделано на аппаратном уровне для того, чтобы избежать дополнительной выборки из памяти в случае, когда требуется описание сегментов.

Регистры общего назначения (РОН). Восемь регистров общего назначения имеют длину в 32 бит и содержат адреса или данные. Они поддерживают операнды-данные длиной 1, 8, 16, 32 и (при использовании двух регистров) 64 бит; битовые поля от 1 до 32 бит; операнды-адреса длиной 16 и 32 бит. Эти регистры называются ЕАХ, ЕВХ, ЕСХ, EDX, ESI, EDI, ЕВР, ESP.

Доступ к младшим 16 бит этих регистров выполняется независимо. Это делается в большинстве ассемблеров при использовании 16-разрядных имен регистров: AX, BX, CX, DX, SI, DI, ВР и SP. Формат регистров общего назначения показан на рис.3.

Регистр системных флагов. Регистр EFLAGS управляет вводом-выводом, маскируемыми прерываниями, отладкой, переключением задач и включением исполнения в режиме виртуального МП 8086 в защищенной многозадачной среде - все это в дополнение к флагам состояния, которые отражают результат исполнения команды. На рис.4 показано содержимое регистра EFLAGS. Младшие 16 бит его представляют собой 16-разрядныи регистр флагов и состояния МП 80286, называемый FLAGS, который наиболее полезен при исполнении программ для МП 8086 и 80286.

В нижеследующих описаниях термин «установлен» означает «установлен в 1», а термин «сброшен» означает «установлен в 0».

VM (режим виртуального МП 8086), бит 17. Бит обеспечивает режим виртуального МП 8086 в защищенном режиме. Если он установлен, когда процессор находится в защищенном режиме, то МП 80386 переключается на работу в режиме виртуального МП 8086. Бит VM может быть установлен только двумя способами: 1) в защищенном режиме командой IRET, только если текущий уровень привилегий равен нулю; 2) переключением задачи на любом уровне привилегий.

RF (флаг возобновления), бит 16. Временно приостанавливает обработку исключений для отладки (т. е. возвращает к нормальному исполнению программы) так, что исполнение команды может быть повторено после обработки исключения для отладки, не вызывая немедленно обработку другого исключения для отладки.

NT (вложенная задача), бит 14. Процессор использует этот флаг для управления последовательностью прерываемых и вызываемых задач. Команда CALL временно передает управление от программы к подпрограмме. При завершении этой подпрограммы управление возобновляется с команды, следующей за командой CALL. Бит NT влияет на выполнение команды IRET.

10PL (уровень привилегий ввода-вывода), биты 12-13. Это двухбитовое поле используется в защищенном режиме. Биты IOPL показывают наивысшее значение текущего уровня привилегий (CPL), позволяющее выполнять команды ввода-вывода, не приводя к обработке исключения 13 или обращения к битовой карте разрешения ввода-вывода. Это поле показывает также наивысшее значение CPL, которое позволяет изменять бит IF при выборке нового значения из стека в регистр EFLAGS (команды выборки POP и загрузки PUSH в стек рассматриваются в гл. 10).

OF (флаг переполнения), бит 11. Флаг установлен, если операция привела к переносу (заему) в знаковый (самый старший) бит результата, но не привела к переносу (заему) из самого старшего бита, или наоборот.

DF (флаг направления), бит 10. Определяет, должны ли регистры ESI и/или EDI инкрементироваться или декрементироваться во время операций со строками. Если флаг сброшен, то они инкрементируются, иначе декрементируются.

IF (разрешение прерывания), бит 9. Установка флага IF позволяет МП воспринимать запросы внешних (маскируемых) прерываний. Очистка этого бита запрещает такие прерывания. Флаг не влияет на обработку, как маскируемых внешних прерываний, так и исключений.

TF (флаг ловушки), бит 8. Установка флага TF переводит МП в пошаговый режим для отладки. Процессор автоматически генерирует исключение 1 после каждой команды, что позволяет проверить программу на исполнение каждой команды. Когда флаг IF сброшен, то ловушка по исключению 1 возникает в точках адресов останова, загружаемых в регистры отладки DRO-DR3. Более подробная информация дана ниже при обсуждении регистров отладки.

SF (флаг знака), бит 7. Установлен, если установлен старший бит результата, иначе он сброшен. Для 8-, 16- и 32-разрядных операций этот флаг отражает состояние бита 7, 15 и 31 соответственно.

ZF (флаг нуля), бит 6. Установлен, если все биты результата равны нулю, иначе сброшен.

AF (флаг вспомогательного переноса), бит 4. Используется для упрощения сложения и вычитания упакованных двоично-десятичных чисел. Независимо от длины операнда (8, 16 или 32 бит) флаг AF установлен, если операция привела к заему из бита 3 при вычитании или переносу из бита 3 при сложении, иначе он сброшен. Напомним, что двоично-десятичные числа используют биты от 0 до 3 для представления десятичных цифр.

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

CF (флаг переноса), бит 0. Установлен, если операция привела к переносу из старшего бита при сложении или к заему в старший бит при вычитании, иначе сброшен. Для 8-, 16- и 32-разрядных операций этот бит устанавливается при переносе из битов 7, 15 и 31 соответственно.