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

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

Рис. 1.5. Размещение виртуального адресного пространства режима User

Сегмент пользователя начинается с адреса 0x0000_0000 и заканчивается адресом 0x7FFF_FFFF. Обращения по всем остальным адресам вызывают прерывания по ошибке адресации.

Процессор находится в режиме User, если в регистре StatusCP0 установлены следующие значения разрядов:UM=1; EXL=0; ERL=0.

В табл. 1.3 приводятся характеристики сегмента useg режима

User.

 

 

 

 

 

 

 

Таблица 1.3

Адрес

Регистры

 

Имя

Диапазон

 

Размер

 

состояния

сегмента

адресов

 

сегмента

 

EXL

ERL

 

UM

 

 

 

 

А(31)=0

0

0

 

1

useg

0x0000_0000

 

2GB

 

 

 

 

 

 

→

 

( 231байт)

 

 

 

 

 

 

0x7FFF_FFFF

 

 

Для всех допустимых виртуальных адресов режима User старший значащий бит адреса равен нулю, поскольку в режиме User допустимо обращение только к нижней половине карты

21

виртуальной памяти. Любая попытка обращения по адресу со старшим битом, равным 1, в режиме User вызывает прерывание по ошибке адресации. В режиме TLB виртуальный адрес перед преобразованием расширяется содержимым 8-разрядного поля ASID, образуя уникальный виртуальный адрес. Кэшируемость ссылки для страницы в этом режиме определяется установкой определенных бит строки TLB. В режиме FM, область виртуальных адресов 0x0000_0000-0x7FFF_FFFF преобразуется в область физических адресов 0x4000_0000-0xBFFF_FFFF. Кэшируемость задается полем KU регистра ConfigCP0.

Режим Kernel

Процессор находится в режиме Kernel, когда регистр StatusCP0 содержит хотя бы одно из следующих значений: UM = 0; ERL = 1; EXL = 1 Когда обнаруживается исключение, биты EXL или ERL устанавливаются, и процессор входит в режим Kernel. При завершении процедуры обработки исключения обычно выполняется команда возвращения из исключения (ERET). Команда ERET осуществляет переход по PC исключения, очищает ERL и EXL (если ERL=0). В результате возможен возврат процессора в режим User.

Виртуальное адресное пространство режима Kernel разделено на области в соответствии со значением старших битов виртуального адреса, как показано на рисунок 1.6. Кроме того, в табл. 1.4 содержатся характеристики сегментов режима

Kernel.

22

Рис.1.6. Виртуальное адресное пространство режима Kernel Таблица 1.4

Адрес

Регистры

Имя

Диапазон

Размер

 

состояния

сег-

адресов

сегмен-

 

EXL

ERL

UM

мента

 

та

 

A(31)=0

 

 

 

kuseg

0x0000_0000

2 GB

 

 

 

 

 

→

(231)

 

 

 

 

 

0x7FFF_FFF

 

 

 

 

 

 

 

 

F

 

 

 

A(31:29)=1002

 

 

 

kseg0

0x8000_0000

512 MB

 

UM = 0

 

→

(229)

 

 

0x9FFF_FFFF

 

 

 

 

 

или

 

 

 

 

A(31:29)=1012

 

ksegl

0xA000_0000

512 MB

EXL=1

 

 

→

(2

29

)

 

 

или

 

 

 

 

 

0xBFFF_FFFF

 

 

 

 

ERL=1

 

 

 

 

A(31:29)=1102

kseg2

0xC000_0000

512 MB

 

 

 

 

 

 

 

 

→

(229)

 

 

 

 

 

0xDFFF_FFFF

 

 

 

A(31:29)=1112

 

 

 

kseg3

0xE000_0000

512 MB

 

 

 

 

 

→

(229)

 

 

 

 

 

0xFFFF_FFFF

 

 

 

23

Режим Kernel, Пространство пользователя (kuseg)

Если старший значащий бит виртуального адреса A[31]=0, то выбирается виртуальное адресное пространство kuseg объемом 2 Гбайт, отображенное на адреса 0x0000_0000 - 0x7FFF_FFFF.

При ERL=0 в режиме TLB виртуальный адрес расширяется 8-битным значением поля ASID для образования уникального виртуального адреса. Кэшируемость определяется полем C строки TLB.

При ERL=0 в режиме FM, область виртуальных адресов 0x0000_0000-0x7FFF_FFFF преобразуется в область физических адресов 0x4000_0000-0xBFFF_FFFF. Кэшируемость задается полем KU регистра ConfigCP0.

При ERL = 1 в режимах TLB и FM, область адресов пользователя становится неотображаемым и некэшируемым адресным пространством. Виртуальный адрес kuseg соответствует тому же физическому адресу и не включает поле ASID. То есть, область виртуальных адресов kuseg соответствует области физических адресов 0x0000_0000-0x7FFF_FFFF.

Режим Kernel, пространство 0 режима Kernel (kseg0).

Если в режиме Kernel три старших бита виртуального адреса равны 1002 , выбирается виртуальное адресное пространство kseg0. Это область размером 229 байт (512 MB), которая расположена внутри границ, определяемых адресами

0x8000_0000 и 0x9FFF_FFFF.

Вне зависимости от состояния бита ERL и режима работы ссылки к kseg0 не отображаются, а физический адрес получается вычитанием 0x8000_0000 из виртуального адреса. Кэшируемость сегмента kseg0 определяется значением поля K0

регистра ConfigCP0.

24

Режим Kernel, пространство 1 режима Kernel (kseg1)

Если в режиме Kernel три старших бита виртуального адреса равны 1012 , выбирается виртуальное адресное пространство kseg1. Это область размером 229 байт (512 MB), которая расположена внутри границ, определяемых адресами

0xA000_0000 и 0xBFFF_FFFF.

Вне зависимости от состояния бита ERL и режима работы ссылки к kseg1 не отображаются, а физический адрес получается вычитанием 0xA000_0000 из виртуального адреса.

Режим Kernel, пространство 2 режима Kernel (kseg2)

Если в режиме Kernel три старших бита виртуального адреса равны 1102 , выбирается виртуальное адресное пространство kseg2.

Врежиме TLB вне зависимости от состояния бита ERL это виртуальное пространство отображается через TLB и его кэшируемость определяется полем C строки TLB.

Врежиме FM вне зависимости от состояния бита ERL это виртуальное пространство зафиксировано в физических адресах 0xC000_0000 - 0xDFFF_FFFF и его кэшируемость определяется полем K23 Регистра ConfigCP0.

Если в режиме Kernel три старших бита виртуального

адреса равны 1112 выбирается32-разрядное виртуальное адресное пространство kseg3. В режиме TLB вне зависимости от состояния бита ERL это пространство отображается через TLB и его кэшируемость определяется полем C строки TLB.В режиме FM вне зависимости от состояния бита ERL это виртуальное пространство зафиксировано в физических адресах 0xE000_0000 - 0xFFFF_FFFF и его кэшируемость определяется полем K23 регистра Config.

25

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