- •Вычислительные машины, системы и сети
- •Оглавление
- •Введение
- •Раздел 1. Центральный процессор
- •1.1. Архитектура центрального процессора
- •1.2. Организация памяти и способы адресации
- •1.3. Общая характеристика системы команд
- •1.4. Команды пересылки данных
- •1.5. Арифметические команды
- •1.6. Сдвиги и логические команды
- •1.7. Команды обработки строк данных
- •1.8. Команды передачи управления
- •1.9. Команды управления процессором
- •Раздел 2. Арифметический процессор
- •2.1. Архитектура арифметического процессора
- •2.2. Программная модель арифметического процессора
- •2.3. Система команд арифметического процессора
- •Раздел 3. Эволюция характеристик цп
- •3.1. Архитектура цп Pentium
- •3.2. Программная модель цп Pentium
- •3.3. Система команд ммх-расширения
- •3.4. Система команд sse-расширения
- •Раздел 4. Системные устройства вм
- •4.1. Программируемый контроллер прерываний
- •4.2. Программируемый контроллер пдп
- •4.3. Системный таймер
- •4.4. Системные регистры
- •Раздел 5. Защищенный режим работы вм
- •5.1. Максимальный режим работы цп
- •5.2. Дескрипторы и шлюзы
- •Контрольные вопросы
- •Раздел 6. Язык ассемблера
- •6.1. Программирование на языке ассемблера
- •6.2. Директивы языка ассемблера asm-86
- •6.3. Использование регистров Pentium
- •6.4. Директивы языка ассемблера asm-89
- •6.5. Модели программ, компиляция и отладка
- •Контрольные вопросы
- •Раздел 7. Специфика вычислительных систем
- •7.1. Мультипроцессорные системы
- •7.2. Управление процессами
- •7.3. Семафорные операции
- •7.4. Разделение общих процедур
- •7.5. Управление памятью
- •Контрольные вопросы
- •Раздел 8. Специализированные процессоры и вм
- •8.1. Процессор ввода-вывода
- •8.2. Программная модель процессора ввода-вывода
- •8.3. Система команд процессора ввода-вывода
- •8.4. Процессор операционной системы
- •Контрольные вопросы
- •Раздел 9. Назначение и топология сетей
- •9.1. Особенности и назначение сетей различных типов
- •Топология «звезда».
- •9.2. Кодирование информации
- •9.3. Назначение и структура пакетов
- •9.4. Методы управления обменом
- •9.5. Эталонные модели
- •Контрольные вопросы
- •Раздел 10. Практическая реализация сетей
- •10.1. Адресация в сетях
- •10.2. Основные службы Internet
- •10.3. Особенности web-дизайна
- •10.4. Особенности и тенденции развития Internet
- •Контрольные вопросы
- •Глоссарий
- •Литература
1.9. Команды управления процессором
В группе команд управления процессором различают три типа: операции с флагами, установки ЦП в особые состояния и синхронизации с сопроцессорами.
Операции с флагами. Включают семь мнемокодов команд: STC (установка флага переноса CF), CMC (дополнение флага переноса CF), CLC (сброс флага переноса CF), STD (установка флага направления DF), CLD (сброс флага направления DF), STI и CLI (соответственно установка и сброс флага разрешения прерывания IF).
Назначение перечисленных команд очевидно. Так, команды STC CMC и CLC позволяют задавать требуемое исходное значение флага CF при различных арифметических и логических преобразованиях данных и сдвигах. Команды STD и CLD используются при обработке строк для задания направления обработки: от первого элемента строки к последнему или наоборот. Наконец, команды STI и CLI служат для управления системой прерываний и позволяют соответственно разрешить или запретить прерывание на любом участке программы.
Команды установки ЦП в особые состояния. Включают два мнемокода: HLT (останов) и WAIT (ожидание), которые переводят процессор соответственно в состояние ожидания или останова.
Находясь в любом из этих состояний, процессор не выполняет никаких действий до тех пор, пока не будут поданы определенные внешние воздействия. Из состояния останова процессор может быть выведен двумя способами: путем начального сброса (сигналом по входу RESET) либо внешним прерыванием (сигнал запроса по входу INTR). При первом способе процессор перейдет к выполнению основной программы сначала, во втором - к выполнению программы обслуживания прерывания соответствующего уровня. При выполнении команды HLT содержимое указателя команд IP автоматически увеличивается на единицу, так что после выполнения программы обслуживания прерывания процессор перейдет к выполнению следующей за HLT команды.
Основной способ вывода процессора из состояния ожидания состоит в подаче сигнала отрицательной полярности на вход TEST. Таким образом, время нахождения в состоянии ожидания определяется моментами подачи команды WAIT и появлением активного нуля на входе TEST. Управление ожиданием с помощью этого механизма позволяет осуществлять синхронизацию, т. е. сопряжение во времени работы процессора с различными внешними устройствами (например, с сопроцессорами либо с устройствами, обладающими меньшим быстродействием). В случае, когда сигнал на входе TEST активен в момент подачи команды WAIT, процессор будет находиться в состоянии ожидания в течение трех тактов ГТИ.
Второй способ вывода процессора из состояния ожидания заключается в подаче запроса прерывания по входу INTR. Однако в этом случае процессор выходит из состояния ожидания только временно. По команде WAIT не происходит автоматического наращивания указателя команд IP, вследствие чего после выполнения соответствующей программы обслуживания прерывания процессор вновь перейдет к выполнению команды WAIT, т. е. перейдет в состояние ожидания. Важно отметить, что при возобновлении работы процессора после ожидания (по сигналу TEST = 0) внешние прерывания не будут обслуживаться до тех пор, пока не выполнится следующая за WAIT команда.
Команды синхронизации с сопроцессорами. Команды служат целям проектирования многопроцессорных систем на основе ЦП. Хотя система команд ЦП достаточно развита, в ней отсутствуют некоторые команды, характерные для высокопроизводительных систем. Как обычно, недостающие команды процессора можно реализовать с помощью соответствующих подпрограмм. Однако более эффективным решением является использование сопроцессоров - специализированных процессоров, предназначенных для расширения функций основного процессора. Например, отсутствующие в системе команд операции над числами с плавающей запятой могут быть выполнены с помощью сопроцессора Intel 8087.
Для организации совместной работы основного процессора системы с сопроцессорами служит команда ESC. Первый байт формата команды содержит код операции ESC, равный 11011, и трехразрядное поле х; второй байт имеет структуру постбайта, в котором поле reg обозначено как у (рис 1.9). Поле х указывает номер того сопроцессора многопроцессорной системы, который должен выполнить операцию, а поле у - номер (код) этой операции. Для организации взаимодействия основного процессора с сопроцессорами последние должны следить за появлением в потоке команд основного процессора команды ESC, которая укажет, какой сопроцессор и какую операцию должен выполнять. В общем случае поля х и у позволяют задать 64 комбинации 6-разрядных двоичных кодов, что при необходимости произвольным образом изменяет стандартное назначение полей х и у. Например, можно построить систему с одним сопроцессором, который выполняет 64 различные операции, либо с восемью сопроцессорами, каждый из которых будет выполнять до восьми операций, и т. д.
Рис. 1.9. Фрагмент программы умножения чисел с плавающей запятой
Поля mod и rim второго байта команды ESC используются для задания адреса операнда. По содержимому этих полей основной процессор извлекает операнд из памяти и выставляет его значение на ШД в качестве операнда для сопроцессора. Таким образом, основной процессор выдает всю необходимую информацию для работы соответствующего сопроцессора: момент включения в работу (появление кода операции ESC), номер сопроцессора (поле х), код операции (поле у) и операнд (выставлен на ШД).
Контрольные вопросы
-
Каково назначение блока преобразования адресов в ЦП?
-
Дайте сравнительную характеристику способов адресации.
-
Чем определяется время формирования исполнительного адреса?
-
Каковы основные отличия работы ЦП в минимальном и максимальном режимах?
5. В чем заключается назначение системного контроллера Intel 8288?
6. 7. В чем состоит различие в использовании флагов CF и OF?
8. В чем сходство и различие выполнения команд MUL и IMUL, а также DIV и IDIV?
9. В чем состоит основное назначение команды SCAS?
10. Какие ограничения присущи командам передачи управления?
11. Перечислите все префиксы, которые можно использовать с командой MOV.
-
Объясните главное различие в состояниях останова и ожидания, в которые ЦП попадает после выполнения команды HLT и WAIT, соответственно?
-
Какие команды выполняют удвоение и деление пополам чисел со знаком?
-
Сколько восьмиразрядных РОН вы знаете? Перечислите их имена.
-
Как используется регистр ВР для доступа к содержимому стека?
-
Что принято называть программной моделью процессора?
-
Для чего служат регистры-индексы?
-
В каких операциях по умолчанию используется сегментный регистр ES?
-
Могут ли совпадать значения в регистрах DS и CS?
-
Назовите три флага управления режимом работы ЦП.
-
В какое значение установятся флаги CF и SF после вычитания из меньшего числа большего?
-
В каком из способов адресации используется больше всего составляющих при формировании эффективного адреса?
-
Сколько байтов занимает самый длинный и самый короткий формат команды?
-
Почему очередь команд состоит из 6-ти байтов?
-
В чем состоит особенность команд работы с портами ввода и вывода?
-
Какое значение примут флаги ZF, SF и CF после выполнения команды
add ah,bh, если перед выполнением команды ah = bh = 128?
-
Объясните назначение флага DF на примере. Когда требуется устанавливать DF = 1?
-
Поясните принцип формирования мнемокодов команд условных переходов.
-
Как ЦП определит начальный адрес подпрограммы обслуживания прерывания 25-го уровня?
-
Какие действия может выполнять ЦП, находясь в состоянии ожидания?