Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Учебное пособие 800492

.pdf
Скачиваний:
11
Добавлен:
01.05.2022
Размер:
3.54 Mб
Скачать

кальный номер; этот номер называется номером регистра. Например, регистру 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

РОН от изменения в прерываниях, уменьшает время обработчика прерывания и сохранение РОН в ОЗУ.

Режимы работы

Ядро M4K поддерживает три режима работы: режим пользователя, режим ядра и режим отладки. Пользовательский режим чаще всего используется для прикладных программ. В режиме ядра обычно используется для обработки исключений и функций ядра операционной системы, в том числе управления CP0 и устройство ввода/вывода. Дополнительный режим отладки используется в системе при разработке программного обеспечения.

1.1.4.Модуль управления памятью (MMU). Реализация

MMU на основе Fixed Mapping Translation (FMT)

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

MMUможет выполнять преобразование адресов в двух режимах: в режиме TLB и в режиме FM. Режим преобразования определяется битом FM регистра CSR.

В режиме TLB используется полностью ассоциативная таблица преобразования адресов (TLB), имеющая 16 парных

16

строк (entries). Во время преобразования осуществляется поиск соответствия по TLB. Если искомая строка отсутствует, генерируется прерывание.

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

(useg/kuseg, kseg0, kseg1, kseg2, kseg3).

На рис.1.2 показано, взаимодействие MMU с процедурой доступа к кэш в режиме TLB, а на рис.1.3 – в режиме FM. Как следует из схемы на рис. 1.1. для рассматриваемой архитектуры

M4K режим TLB не реализован.

Рис. 1.2. Взаимодействие MMU с процедурой доступа

к кэш в режиме TLB

17

Рис. 1.3. Взаимодействие MMU с процедурой доступа

к кэш в режиме FMT

Режимы работы

Процессорное ядро поддерживает два режима работы: режим User (непривилегированный режим); режим Kernel (привилегированный режим).

Режим User в основном используется для прикладных программ. Режим Kernel обычно используется для обработки исключительных ситуаций и привилегированных функций операционной системы, включая управление сопроцессором CP0 и доступ к устройствам ввода-вывода. Преобразования, выполняемые MMU, зависят от режима работы процессора.

Виртуальные сегменты памяти

Виртуальные сегменты памяти, на которые делится адресное пространство, различаются в зависимости от режима работы процессора. На рис. 1.4 показана сегментация для 4 Гбайт (2 байт) виртуального адресного пространства, адресуемого 32-разрядным виртуальным адресом для обоих режимов работы.

18

Ядро входит в режим Kernel после аппаратного сброса или когда происходит исключение. В режиме Kernel программное обеспечение имеет доступ к полному адресному пространству и ко всем регистрам CP0. В режиме User доступ ограничен подмножеством виртуального адресного пространства (0x0000_0000 - 0x7FFF_FFFF) и запрещен доступ к функциям CP0. В режиме User недоступны виртуальные адреса 0x8000_0000 - 0xFFFF_FFFF и обращение к ним вызывает исключение.

Рис.1.4. Карта виртуальной памяти для режимов User и Kernel

Каждый из сегментов, показанных на рис. 1.4, является либо отображаемым (mapped), либо неотображаемым (unmapped).

Неотображаемые сегменты

В неотображаемом сегменте механизмы TLB или FM для преобразования виртуального адреса в физический адрес не используются. Особенно важно иметь неотображаемые сегмен-

19

ты памяти после аппаратного сброса, потому что TLB еще не запрограммировано и не может осуществлять преобразования.

Для неотображаемых сегментов преобразование виртуального адреса в физический является фиксированным.

Все неотображаемые сегменты, за исключением kseg0, никогда не кэшируемы. Кэшируемостьkseg0 определяется полем K0 регистра Config СP0.

Отображаемые сегменты

Вотображаемом сегменте для преобразования виртуального адреса в физический адрес используются TLB или FM.

Врежиме TLB преобразование отображаемых сегментов имеет постраничную основу. При преобразовании выявляется информация о кэшируемости страницы, а также атрибуты защиты, относящиеся к странице.

Для режима FM отображаемые сегменты имеют закрепленное преобразование виртуального адреса в физический. Кэшируемостьсегмента определяется значениями полей K23 и KU регистра ConfigCP0. При FM-преобразовании невозможна защита сегментов от записи.

Режим User

В режиме User доступно однородное виртуальное адресное пространство размером 2 Гбайт (231 байт), называемое сегментом пользователя. На рисунке 1.5 показано размещение виртуального адресного пространства режима User.

20