Если у меня есть система с одноуровневым менеджером памяти подкачки (без TLB) .. Сколько времени требуется этой системе для доступа к памяти? Я читал вдвое дольше без менеджера памяти .. Это правда ? Если бы не как долго без менеджера памяти (давай или бери) было бы.
2 ответа
Если вы используете MMU, каждый доступ к памяти должен искать соответствие от виртуального к физическому адресу, что влечет за собой издержки на один доступ к памяти на уровень иерархии таблицы страниц. На практике большинство современных MMU используют около трех уровней.
Эта структура данных имеет таблицу, разбитую на несколько уровней. Первый уровень соответствует старшим битам виртуального адреса, следующий уровень - следующим нескольким битам и так далее. Преобразование из виртуального адреса в физический включает поиск соответствующих битов виртуального адреса на каждом уровне таблицы страниц. Конечные узлы имеют номер страницы в физической памяти и некоторые флаги, обозначающие степень защиты, грязную информацию и наличие физической страницы в памяти.
На некоторых архитектурах (таких как SPARC64 и PPC) структура данных, называемая « инвертированной таблицей страниц» , используется, поскольку стандартные иерархические таблицы страниц могут быть невероятно большими или глубокими в таком большом адресном пространстве. Инвертированные таблицы страниц имеют одну запись для каждой виртуальной страницы в адресном пространстве процесса и используют хеширование для поиска данных физической страницы. Номинально это O (1), но может привести к коллизиям, приводящим к дополнительному доступу к памяти.
Как можно догадаться, этот процесс довольно медленный, особенно когда данные таблицы страниц не находятся в кеше и требуют затрат на пропадание кеша (что может занять сотни циклов). К счастью, доступы MMU обычно демонстрируют очень высокую локальность ссылок, поэтому они поддаются кэшированию. Механизм кэширования для логико-физического отображения страниц называется трансляционным буфером взгляда (TLB).
Буфер трансляции Lookaside Buffer кэширует сопоставления, снижая вероятность обхода структуры данных таблицы страниц. Как правило, только достаточно небольшой TLB необходим для получения хорошей эффективности, хотя довольно просто написать код, который обращается к памяти в шаблонах, которые перебивают TLB.
Без MMU доступ к памяти не требует каких-либо косвенных действий, поэтому он длится столько же, сколько и доступ к памяти в системе, при условии, что оптимизация шаблонов доступа к кешу все еще может сильно влиять на производительность.
К сожалению, вам нужно дать более точную информацию для ответа, но я постараюсь:
Это зависит от того, как работает менеджер памяти подкачки, какие настройки и с какими системными компонентами он используется. "В два раза длиннее", вероятно, является хорошим приблизительным показателем, но вы действительно можете это определить, только протестировав его самостоятельно и без менеджера памяти.