Техническим справочным руководством для ARM1176JZF-S является DDI 0301. Этот документ содержит все конкретные детали для этого конкретного ядра ARM.
Я до сих пор не знаю, что такое TLB или как он выглядит,Насколько я понимаю, каждая запись TLB отображает виртуальную страницу на физическую страницу, позволяя переназначать и контролировать разрешения памяти.
TLB - это кеш таблицы страниц.Некоторые процессоры разрешают прямой доступ к TLB, но ничего не знают о таблицах страниц (например, MIPS), в то время как другие знают о таблицах страниц и внутренне используют TLB, которые программист в основном не видит (например, x86).В этом случае TLB управляется аппаратно, и системному программисту нужно только позаботиться о том, чтобы регистры TTB (База таблицы трансляций) указывали на таблицу страниц и делали недействительным TLB в соответствующих местах.
Чтоструктура имеет запись TLB?Как мне создать новые записи?
Сделано на оборудовании.В случае пропуска TLB MMU обходит таблицу страниц и заполняет оттуда TLB.
Как мне обрабатывать VM в переключениях контекста для потоков пользовательского пространства?
На некоторых платформах есть TLB, которые простосопоставить виртуальные адреса с физическими адресами (например, x86).На этих платформах вы должны выполнять полную очистку TLB при каждом переключении контекста.Другие платформы (MIPS, это конкретное ядро ARM) сопоставляют пары (ASID, виртуальный адрес) физическим адресам.ASID - это специфичный для приложения идентификатор, т. Е. Идентификатор процесса.MMU использует регистр, чтобы знать, какой ASID использовать (я думаю, что это регистр Context ID в данном случае).Поскольку процессов может быть больше, чем ASID, иногда вам может потребоваться перезапустить ASID (назначить его другому процессу) и выполнить сброс TLB (для этого предназначена операция Invalidate TLB by ASID).
Почемуесть два TLB?Для чего я могу использовать MicroTLB, если он может содержать только 10 записей?Конечно, мне нужно больше 10.
Это точно по той же причине, по которой у вас есть небольшие отдельные кэши уровня 1 для инструкций и данных.Поскольку они являются кэшами, вам не нужно больше 10 (хотя их увеличение может улучшить производительность).
Это говорит о том, что одна из частей основного TLB - это "полностьюассоциативный массив из восьми элементов, который блокируется ».Что это такое?Могу ли я получить только 8 записей для Main TLB?
Некоторые страницы памяти (например, некоторые части ядра) доступны очень часто.Имеет смысл заблокировать их, чтобы они не сбрасывались с TLB.Кроме того, в системах реального времени промах TLB или кеш может привести к нежелательной непредсказуемости.Таким образом, есть возможность заблокировать несколько записей TLB.Основной TLB имеет больше записей, но блокируются только эти 8.