Доброго всем здравия!
Уважаемые специалисты, помогите разобраться с этими монстрами.
Имеется
AT91SAM9260 на базе процессора
ARM926EJ-S. Для повышения скорости работы нужно настроить:
1)
MMU (Memory Management Unit) - Блок управления памятью. Он отвечает за управление доступом к памяти, запрашиваемым центральным процессором путем трансляции адресов виртуальной памяти в адреса физической памяти.
MMU разделяет виртуальное адресное пространство на участки одинакового размера (4 Кб, 64 Кб или 1 Mb ) называемые страницами.
Процесс обращается к памяти с помощью адреса виртуальной памяти, который содержит в себе номер страницы и смещение внутри страницы. Процессор преобразует номер виртуальной страницы в адрес соответствующей ей физической страницы при помощи буфера ассоциативной трансляции.
Младшие n бит адреса (смещение внутри страницы) остаются неизменными. Старшие биты адреса представляют собой номер (виртуальной) страницы.
MMU обычно преобразует номера виртуальных страниц в номера физических страниц используя
TLB(Translation Lookaside Buffer) - Буфер Ассоциативной Трансляции.
Вопрос 1. Как настроить это MMU для указанного выше процессора? Как организовать и заполнить
TLB? Как ее подключить к MMU и пользоваться ей?
2) Нужно настроить
D-Cache (Data Cache - Кэш данных) и
I-Cache (Instruction Cache - Кэш комманд процессора).
Кэш — это некий промежуточный буфер, содержащий информацию, которая может быть запрошена с наибольшей вероятностью. Доступ к данным в кэше идёт быстрее, чем выборка исходных данных из внешней памяти. Таким образом комманды и данные выбираются из быстрее и производительность растет.
Кэш состоит из набора записей. Каждая запись ассоциирована с данными, являющимися копией данных в основной памяти. Каждая запись имеет идентификатор, определяющий соответствие между элементами данных в кэше и их копиями в основной памяти.
Области (сегменты) основной памяти жёстко привязываются к строкам кэш-памяти (в каждой строке могут быть данные из фиксированного набора адресов), что значительно сокращает время поиска. С каждой ячейкой ОЗУ может быть связано более одной строки кэш-памяти. Таким образом, одна запись в Кэше может содержать несколько комманд (наиболе часто употребляемых) из сооветствующей области памяти.
Вопрос 2. Как инициализировать
D-Cache и
I-Cache? Как и когда (при каких условиях) их очищать? Как с ними работать?
Что имеется у меня:
ARM926EJ-S Technical Reference Manual - написано много, очень грузно, четких инструкций не обнаружено. Много всяких режимов, я так и не понял какой нужен именно мне.
Имеется пример, а точнее функции от
IAR, но ни в одном проекте они не применяются, т.е. функции нигдек не используются. Тем самым я не могу понять последовательность действий при инициализации вышеупомянутых модулей. Также есть пример из темы данного форума
Производительность SAM9XE, непонятки с этим процом. Там есть как раз пример
Translation Table, но не очень понятно как с ней работать и почему именно такие адреса.
В
ARM926EJ-S еще есть некий регистр
TTBR - Translation Table Base Register - я так понял, это регистр указателя начального (базового) адреса расположения
TLB. Вопрос где хранить
TLB и по какому адресу?
У меня никак не может сложиться общая картина совместной работы этих модулей. Буду признателен специалистам, которые смогут прояснить мне эти вопросы.
Сообщение отредактировал ZED - Dec 27 2010, 06:08