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

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

Особенности реализации MMU с помощью FMT

Основные особенности реализации блока управления памятью с помощью FixedMappingTranslation – фиксированное отображение адресов следующие: доступные пользователю адреса в user-mode сдвигаются на 0x40000000; это способ имитации части поведения TLB без TLB как такового; не защищает различные пользовательские программы друг от друга; требует минимального количества аппаратных ресурсов; опция FMT реализована на всех ядрах MIPS Technologies; используется в ядре MIPS M4K / микроконтроллере PIC32MX.

Принцип трансляция виртуальных адресов в физические с помощью Fixed Mapping Translation представлены на рис. 1.7 и 1.8.

Рис. 1.7. Карта памяти FMTпри установки бита ERL в 0

26

Рис. 1.8. Карта памяти FMTпри установки бита ERL в 1

1.1.5. Интерфейс памяти SRAM

Общие замечания

Если бы операнды хранились только в регистрах, то мы могли бы писать лишь простые программы, содержащие не более 32 переменных.

Поэтому данные также можно хранить в памяти. По сравнению с регистровым файлом память имеет много места для хранения данных, но доступ к ней занимает больше времени. По этой причине часто используемые переменные хранятся в регистрах. Комбинируя память и регистры, программа может получать доступ к большим объёмам данных достаточно быстро. Память устроена как массив слов с данными. Архитектура MIPS использует 32 битные адреса памяти и 32-битные слова с данными. MIPS использует побайтовую адресацию памяти. Это

27

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

На рис. 1.9 изображен массив памяти с пословной адресацией. Видно, что каждое 32-битное слово данных (англ.: word) имеет уникальный 32-битный адрес (англ.: wordaddress). И 32-битные адреса слов, и 32-битные значения (англ.: data) на Рис. 6.1 записаны в шестнадцатеричной системе счисления. Как видно из рисунка, значение 0xF2F1AC07 хранится в памяти по адресу 1 (шестнадцатеричные числа часто записываются с префиксом 0x). При графическом изображениипамяти традиционно размещают меньшие адреса внизу, а большие – наверху.

MIPS использует команду загрузить слово (англ.: loadword), lw, для чтения слова данных из памяти в регистр. В приведённом ниже примере кода показана загрузка слова, находящегося в памяти по адресу 1, в регистр $s3.

Рис. 1.9. Память с пословной адресацией

Инструкция lw определяет эффективный адрес в памяти как сумму базового адреса и смещения. Базовый адрес (записан в скобках в инструкции) является регистром. Смещение (записано перед скобками) является константой. В примере кода 6.6 базовый адрес – это регистр $0, содержащий значение 0, а сдвиг – это 1, поэтому инструкция lw читает значение из памяти по адресу ($0 + 1) = 1. Послевыполнения команды загрузки слова (lw) в $s3 появляется значение 0xF2F1AC07,

28

которое находилось в памяти по адресу 1, как было показано на рис. 1.9.

Загрузка слова из памяти с пословной адресацией

# This assembly code (unlike MIPS) assumes word-addressable memory

lw $s3, 1($0) # read memory word 1 into $s

Аналогичным образом MIPS использует инструкцию сохранить слово (англ.: storeword), sw, для записи данных из регистра в память. В примере кода программа записывает значение регистра $s7 в слово памяти с адресом 5. Эти примеры для простоты использовали $0 в качестве базового адреса, но на самом деле для указания базового адреса можно использовать любой регистр.

Запись слова в память с пословной адресацией

# This assembly code (unlike MIPS) assumes word-addressable memory

sw $s7, 5($0) # write $s7 to memory word 5

В двух предыдущих примерах показана компьютерная архитектура с пословной адресацией памяти. Но модель памяти MIPS имеет не пословную, а побайтовую адресацию, при которой каждый байт данных имеет уникальный адрес.

Так как 32-битное слово состоит из четырёх 8-битных байтов, то адрес каждого слова (англ.: word address) кратен четырём, как показано на рис. 1.10, где 32-битные адреса и значения слов тоже представлены в шестнадцатеричной системе счисления.

29

Рис. 1.10. Память с побайтовой адресацией

Впримере кода показано, как читать и записывать слова

впамять MIPS, адресуемую побайтно. Адрес слова – это порядковый номер слова, умноженный на четыре. Программа на ассемблере MIPS читаетслова 0, 2 и 3 и записывает слова 1, 8 и 100. Смещение может быть записано в десятичной или шестнадцатеричной системе счисления.

Доступ к памяти с побайтовой адресацией

lw $s0, 0($0) # read data word 0 (0xABCDEF78) into

$s0

 

 

lw

$s1, 8($0)

# read data word 2 (0x01EE2842) into

$s1

 

 

lw $s2, 0xC($0)

# read data word 3 (0x40F30788) into $s2

sw

$s3, 4($0)

# write $s3 to data word 1

sw

$s4, 0x20($0) # write $s4 to data word 8

sw

$s5, 400($0)

# write $s5 to data word 100

Архитектура MIPS также включает инструкции lb и sb, которые загружают и сохраняют отдельные байты, а не слова. Они похожи на инструкции lw и sw и будут рассмотрены далее.

Вместо кэш, ядро M4K содержит интерфейс для SRAM типа памяти, который тесно связан с ядром.

30

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