Организация прерываний в микропроцессоре К1810ВМ86
ВМ86 имеет эффективную систему прерываний, в которой каждому прерыванию поставлен в соответствие код 0..255, идентифицирующий тип прерывания. Прерывания могут инициироваться ВУ (внешние прерывания) или командами программных прерываний, а в некоторых случаях - автоматически самим микропроцессором (внутренние прерывания).
Рис.3. Источники прерываний.
Внешние прерывания. Запросы на внешние прерывания поступают в микропроцессор по 2-м входам: INTR и NMI (Non Maskable Interrupt - немаскируемое прерывание), и сами прерывания соответственно делятся на маскируемые и немаскируемые. Запросы на маскируемые прерывания от ВУ поступают обычно на входы программируемого контроллера приоритетных прерываний (ПКПП) К1810ВР59, который формирует сигнал прерывания INTR. Этот ПКПП может работать как с ВМ86, так и с микропроцессором КР580ВМ80А (аналогично ПКПП КР580ВН59).
Действия ВМ86 при поступлении прерывания INTR зависят от состояния флага разрешения прерываний IF (Interrupt Flag) в регистре флагов. Если IF=0, то прерывания по входу INTR запрещены (замаскированы) и ВМ86 игнорирует запрос прерывания, переходя к следующей команде. Если IF=1, то МП распознает запрос прерывания и обрабатывает его. Состоянием флага IF программист может управлять с помощью команд STI (установка) и CLI (сброс). Запросы на немаскируемые прерывания поступают по входу NMI и обычно используются для прерывания работы микропроцессора при катастрофических ситуациях: аварийное пропадание питания, сбой памяти и др. Запросы NMI запоминаются в МП и имеют более высокий приоритет, чем прерывания по входу INTR. Обработка прерываний NMI не зависит от состояния флага IF. Немаскируемому прерыванию присваивается тип 2, который автоматически формируется внутри микропроцессора, а циклы шины подтверждения прерывания #INTA не формируются, что ускоряет реакцию МП на немаскируемые прерывания. Внутренние прерывания. Внутренние прерывания характеризуются типом прерывания, который либо предопределен (INTO, тип 4), либо содержится в коде команды INT n. Внутренние прерывания не могут быть запрещены (кроме пошагового прерывания). Прерывание по ошибке деления на 0 (тип 0) генерируется микропроцессором сразу после команды деления DIV, IDIV, если формат частного превышает формат приемника или в случае деления на 0. Прерывание по переполнению (тип 4) генерируется по однобайтовой команде INTO, если установлен флаг OF. Пошаговое прерывание (тип 1) вырабатывается автоматически при TF=1 после выполнения каждой команды (или пары команд, если первая команда изменяет содержимое сегментного регистра). При обработке этого прерывания МП включает в стек регистры F, CS, IP, а затем сбрасывает флаги IF и TF, поэтому после вызова подпрограммы обслуживания этого прерывания МП работает обычным способом, а не в пошаговом режиме. Подпрограмма обработки пошагового прерывания обычно осуществляет индикацию внутренних регистров МП и содержимого некоторых ячеек памяти и используется для отладки. Когда подпрограмма обработки пошагового прерывания завершается, из стека извлекаются прежние состояния флагов и МП снова переводится в пошаговый режим работы. Прерывание пользователем в программе осуществляется по 2-байтовой команде INT n, в которой тип прерывания указывается во 2-м байте команды. Команда INT n запоминает в стеке регистры CS, IP и F и выполняет межсегментный переход по вектору прерывания n. Однобайтовая команда INT3 определена как прерывание контрольной точки (точки разрыва). Контрольной точкой может быть любое место в программе, где нормальное ее выполнение прерывается и производятся некоторые специальные действия. Контрольные точки обычно вводятся при отладке как средство индикации содержимого регистров, ячеек памяти, портов ВВ в критических местах программы. Эту команду можно также использовать, чтобы вставить дополнительный фрагмент программы без ее повторной трансляции. Подпрограмма обслуживания прерывания. Связь между типом n и подпрограммой обслуживания прерывания устанавливается с помощью таблицы указателей векторов прерываний. Эта таблица занимает 1 Кб памяти с адресами 0..3FFh и содержит 256 указателей по 2 слова каждый, определяющих начальный логический адрес соответствующей подпрограммы обслуживания. Слово с большим адресом содержит базовый адрес кодового сегмента, а слово с меньшим адресом - смещение в кодовом сегменте. МП вычисляет адрес вектора путем умножения типа прерывания n на 4. При переходе на подпрограмму обслуживания смещение из вектора загружается в регистр IP, а адрес сегмента - в регистр CS. Когда осуществляется переход на подпрограмму обслуживания прерывания, старое содержимое регистров F, CS и IP запоминается в стеке; флаг IF сбрасывается, тем самым запрещаются внешние прерывания по входу INTR, что нужно, например, для защиты начального участка подпрограммы обслуживания, в течение которого в стеке сохраняются внутренние регистры МП. Затем подпрограмма обслуживания может разрешить внешние прерывания командой STI. В конце подпрограммы восстанавливаются содержимое регистров из стека. Подпрограмма обслуживания прерывания завершается командой IRET, которой предшествует команда STI, разрешающая внешние прерывания. Перед выполнением команды IRET стек должен быть в том состоянии, в котором он был сразу после вызова подпрограммы обслуживания.
44. Структура однопроцессорной МПС на базе микропроцессора К1810ВМ86
45. Характеристики микропроцессоров компании Intel
ХарактеристикиPentium4(ядро Northwood)
Представлен в 2002 г.
Northwood A
Технологический процесс: 130 нм
1.7, 1.8, 1.9, 2, 2.2, 2.4, 2.5, 2.6 ГГц
Улучшенное предсказание переходов и другие улучшения микрокода