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