2012-01-24 6 views
8

Есть ли достойный путеводитель, объясняющий, как использовать TLB (Буферные буферы для перевода) таблицы на ARM1176JZF-S core?ARM11 Translation Lookaside Buffer (TLB)?

Просмотрев техническую документацию для платформы ARM, я до сих пор не знаю, что такое TLB или как он выглядит. Насколько я понимаю, каждая запись TLB сопоставляет виртуальную страницу с физической страницей, позволяя переназначать и контролировать разрешения на доступ к памяти.

Кроме того, у меня нет абсолютно никакой информации о том, как их использовать.

  • Какая структура имеет запись TLB? Как создать новые записи?
  • Как обрабатывать VM в контекстных переключателях для потоков пользовательского пространства? Как обеспечить, чтобы эти потоки могли обращаться только к определенным страницам, назначенным их родительским процессам (обеспечить защиту памяти)? Я сохраняю состояние TLB для каждого контекста?
  • Почему существуют два TLB? Что я могу использовать MicroTLB, если он может иметь только 10 записей? Разумеется, мне нужно больше 10.
  • В нем говорится, что одна из частей основного TLB - это «полностью ассоциативный массив из восьми элементов, которые можно заблокировать». Что это? У меня есть только 8 записей для основного TLB?

Благодарим вас заранее. Буду очень рад, если кто-то объяснит, что такое TLB. В настоящее время я работаю над программным обеспечением памяти для моего ядра, и я довольно сильно зашел в тупик.

+0

Вы пишете свою собственную ОС? Если вы используете существующую ОС, они позаботятся об этих деталях для вас. Возможно, вам потребуется настроить 1-2 TLB вручную во время загрузки, но после этого ядро ​​ОС позаботится об этом. – gravitron

+0

@gravitron Я переношу существующее ядро ​​(Darwin) на платформу ARM. Ядро опирается на набор функций HAL, которые абстрагируют все взаимодействия с платформой (управление физической памятью, переключатели контекста, кеши, исключения и т. Д.). –

+0

Простой ответ: ** TLB ** относится к ** MMU ** page table как ** cache ** - ** память **; То есть. ** TLB ** является ** MMU ** кешем. micro-TLB -> L1 и т. д. Интересно, что поведение кэша VIVT/PIPT и т. д., вероятно, повлияет на работу TLB, как описано * ninjalj *. –

ответ

15

Техническое руководство по эксплуатации для 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) map (ASID, виртуальный адрес). ASID - это идентификатор приложения, то есть идентификатор процесса. MMU использует регистр, чтобы узнать, какой ASID использовать (я думаю, что это регистр идентификатора контекста в этом случае). Поскольку может быть больше процессов, чем ASID, иногда вам может понадобиться переработать ASID (назначить его другому процессу) и выполнить флеш TLB (это то, что для Invalidate TLB для ASID-операции).

Почему существуют два TLB? Что я могу использовать MicroTLB, если он может иметь только 10 записей? Разумеется, мне нужно больше 10.

Это по той же причине, что и инструкции и данные, у вас есть небольшие отдельные кэши уровня 1. Поскольку они являются кэшами, вы не нуждаетесь в , но нуждаетесь в более 10 (хотя иметь больше может повысить производительность).

В нем говорится, что одна из частей основного TLB является «полностью ассоциативным массивом из восьми элементов, которые можно заблокировать». Что это? У меня есть только 8 записей для основного TLB?

Некоторые страницы памяти (например, некоторые части ядра) доступны очень часто. Имеет смысл блокировать их, поэтому они не могут быть сброшены с TLB. Кроме того, в системах реального времени промах TLB или промаха в кеше может привести к некоторой нежелательной непредсказуемости. Таким образом, есть возможность заблокировать несколько записей TLB. Основной TLB имеет больше записей, но только те, которые 8 блокируются.

+0

Отличный ответ. Спасибо огромное! –

+0

Подробнее ... ARM ACID ASID есть. Кажется, как старые * домены * и * PID *. –

 Смежные вопросы

  • Нет связанных вопросов^_^