Материал: Архитектура и программирование MIPS-процессоров. Разинкин К.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

кальный номер; этот номер называется номером регистра. Например, регистру HWREna соответствует 7-й номер регистра.

После записи нового значения в регистр CP0, его обновление происходит не сразу, а по прошествии периода от 0 и более команд. Этот период называется периодом особой ситуации.

В табл. 1.1 приведены все регистры CP0 в порядке возрастания нумерации.

 

 

Таблица 1.1

 

Регистры CP0

 

 

 

Номер

Название

Функция

регистра

регистра

 

 

 

 

0-6

Зарезервирован

Зарезервированный в ядре M4K.

 

 

 

7

HWREna

Позволяет осуществить доступ с по-

 

 

мощью инструкцииRDHWR к ото-

 

 

бранным регистрам аппаратных

 

 

 

8

BadVAddr

Содержит адрес, вызвавший

 

 

последнее связанное

 

 

с адресацией исключения

 

 

 

9

Count1

Счетчик процессорных циклов

10

Зарезервирован

Зарезервированный в ядре M4K.

 

 

 

11

Compare1

Управление прерыванием таймера

 

 

 

12

Status1

Состояние и управление процессором

 

 

 

12

IntCtl

Состояние и управление

 

 

системой прерывания

 

 

 

12

SRSCtl

Состояние и управление

 

 

теневым набором регистров

 

 

 

12

SRSMap

Обеспечивает отображение

 

 

от направленного прерывания

 

 

до теневого набора

 

 

 

13

Cause1

Причина последнего общего

 

 

исключения

 

 

 

 

 

11

 

 

Продолжение табл. 1.1

 

 

 

14

EPC

Значение счетчика команд во время

 

 

последнего исключения

 

 

 

15

PRId

Идентификация

 

 

и ревизия процессора

 

 

 

15

EBASE

Векторный индексный регистр

 

 

исключения

 

 

 

16

Конфигурация

Конфигурационный регистр

 

 

 

16

Configl

Конфигурационный регистр1

16

Config2

Конфигурационный регистр2

 

 

 

17-

Зарезервирован

Зарезервированный в ядре M4K

23

Debug2

Контроль за отладкой

 

 

и статусом исключения

 

 

 

23

Debug2

Комплексный статус

 

 

контрольной точки

 

 

 

23

TraceControl2

Регистр команд трассиров-

23

TraceControl22

Дополнительный контроль

 

 

за трассировкой PC/данных

 

 

 

23

User Trace Data2

Пользовательский регистр

 

 

команд трассировки

 

 

 

23

TraceBPC

Управление контрольной точкой

 

 

трассировки

 

 

 

24

DEPC

Значение программного счетчика

 

 

в последнем исключении.

 

 

 

25-29

Зарезервирован

Зарезервированный в ядре M4K

30

ErrorEPC

Значение счетчика команд

 

 

при последней ошибке

 

 

 

31

DESAVE

Отладка обработчика регистра КЭШа

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

Под исключениями понимаются все события, которые приводят к переходу процессора в kernel mode: ошибки доступа к памяти, деление на ноль и т.д., включая запросы прерываний

12

от внешних устройств. Табл. 1.2 показывает типы исключения в порядке приоритета.

Таблица 1.2

 

Типы исключений

Исключения

Описание

Reset

Аппаратный сброс.

 

Установка SI_ColdReset или сигналов SI_Reset

DSS

Отладка EJTAG

DINT

EJTAGотладкапрерываний

NMI

Внешнее немаскируемое прерывание и преры-

 

вание от таймера

Interrupt

Установка немаскируемыхHW

 

или SW прерываний

DIB

Инструкция остановки соответствующей

 

аппаратной отладки

AdEL

Ошибка выравнивания адреса

 

при выборке команды

IBE

Инструкция получения ошибки шины

DBp

Контрольная точка EJTAG

Sys

Выполнение команды SYSCALL

Bp

Выполнение команды BREAK

RI

Выполнение зарезервированной команды

CpU

Выполнение команды сопроцессора в режиме

 

User

CEU

Выполнение инструкций CorExtend

Ov

Переполнение в арифметической команде

Tr

Выполнение trap (когда условие trap истинно)

DDBL/DDBS

Прекращение передачи адреса данных (только

 

адреса)/Прекращение передачи значения дан-

 

ных на хранение (адрес и значение)

AdES

Ошибка выравнивания адреса

 

при сохранении данных

DBE

Загрузка или сохранение ошибки шины

 

13

Ядро M4K поддерживает три варианта реализации контроллера прерываний: совместимый с ранней реализацией MIPS32 Release 1; векторный; внешний контроллер прерываний. Векторный контроллер прерываний в M4K поддерживает только восемь приоритетных прерываний, поэтому в SoC PIC32MX реализован внешний векторный контроллер прерываний, аналогичный применяемым в 16-и разрядных контрол-

лерах Microchip (PIC24 и dsPIC).

Контроллер прерываний в обладает следующими характеристиками:

время реакции на прерывание – не более 5 тактов генератора;

до 96 источников прерываний;

до 64 векторов прерываний;

каждый вектор прерывания может иметь приоритет от 1

до 7;

каждый вектор прерывания может иметь дополнительный приоритет от 0 до 3;

теневой набор РОН для обслуживания высокоприоритетного прерывания;

конфигурируемое положение векторов прерываний;

конфигурируемая дистанция между векторами прерыва-

ний;

возможность программной генерации любого прерыва-

ния;

таймер отложенных прерываний.

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

Вектора с приоритетами 7 могут использовать дополнительный набор РОН, что позволяет снизить время входа в

14

функцию обработки прерывания, так как в этом случае контекст сохранять не требуется.

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

Набор теневых регистров

В процессорах MIPS реализовано два набора Регистров Общего Назначения (РОН, GeneralPurposeRegisters – GPR).

Второй набор предназначен для использования с высокоприоритетными прерываниями. Этот дополнительный набор РОН так же называется теневым набором регистров (shadowregisterset). Когда происходит высокоприоритетное прерывание, процессор автоматически переключается на теневой набор РОН без вмешательства программы. Это снижает задержку в обработчике прерывания на сохранение контекста и уменьшает время реакции на прерывание. Набор теневых регистров управляется регистрами системного сопроцессора (SystemCoprocessor – CP0), а так же контроллером прерываний.

Использование набора теневых РОН так же увеличивает быстродействие системы за счет уменьшения накладных расходов в обработчике прерывания. При возникновении прерывания или немаскированного прерывания (исключения) ядро определит какой теневой набор регистров будет использоваться, установит его как активный набор РОН и позволит выполняться программе с вектора прерывания. Этот процесс полностью устраняет необходимость сохранения и восстановления контекста при обработке прерываний. Это так же сохраняет содержимое

15

Источник: https://studfile.net/preview/16568788/