Таблица страниц и коэффициент попадания в кеш

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

Как кеш (L1-L3) в процессоре повлияет на обращение к памяти к таблице страниц? Будет ли большинство промахнуться или ударится? Почему это происходит? Мне сказали, что в этой теме могут быть разные ответы в зависимости от используемых архитектур, поэтому, возможно, общие ответы подойдут.

Я пытался найти ссылки по этому поводу, но не могу найти. Можно сказать, что я действительно новичок в ОС.

Ссылка на мой предыдущий вопрос: Регистры и кэш таблицы страниц

Изменить: из-за TLB доступ к ссылке на память в таблице страниц может быть уменьшен, что приведет к увеличению количества обращений. Это правильно? Помогите пожалуйста: D


person Errata    schedule 03.03.2021    source источник


Ответы (1)


Основная идея (без каких-либо кешей) заключается в том, что при доступе к памяти ЦП:

  • находит таблицу страниц самого высокого уровня (например, из виртуального адреса и регистра управления) и извлекает запись таблицы страниц самого высокого уровня из ОЗУ

  • находит таблицу страниц следующего уровня (например, из виртуального адреса и записи таблицы страниц самого высокого уровня) и извлекает запись таблицы страниц следующего уровня из ОЗУ; и так далее (повторяется для каждого уровня таблиц страниц), пока ЦП не достигнет записи таблицы страниц самого низкого уровня.

  • находит физический адрес (например, из виртуального адреса и записи таблицы страниц нижнего уровня) и извлекает данные из этого физического адреса

Очевидно, это медленно. Чтобы ускорить его, есть несколько кешей, таких как:

а) Сами кеши. Например. Вместо того, чтобы извлекать что-либо из ОЗУ, ЦП может извлекать данные из кеша (в том числе, когда ЦП извлекает записи таблицы страниц). Обратите внимание, что обычно существует несколько уровней кешей (например, кеш данных L1, унифицированный кеш L2, ...), и это может относиться к некоторым кешам, а не к другим (например, ЦП не будет извлекать записи таблицы страниц из кеша инструкций L1, но, вероятно, будет извлекать их из единого кэша L3).

б) TLB (буферы просмотра трансляции); которые в основном кэшируют запись таблицы страниц самого низкого уровня. Это позволяет пропустить почти всю работу (если есть попадание TLB).

c) Кеши перевода более высокого уровня. Современные процессоры имеют дополнительные кеши, которые кэшируют промежуточный уровень иерархии таблицы страниц (например, возможно, запись таблицы страниц 3-го уровня, если есть 4 или более уровней, а не запись самого высокого или самого низкого уровня). Это снижает стоимость промаха TLB (если есть попадание перевода более высокого уровня), позволяя пропустить часть работы.

person Brendan    schedule 03.03.2021
comment
Я понимаю. Это делает его концептуально более понятным. Так что в основном таблица страниц работает медленно, и для ее ускорения мы используем системы кеширования. Но будет ли обычная система кэширования получить больше промахов, чем попаданий, если мы будем использовать ее с таблицей страниц? Если да, то почему, а если нет, то почему? Я предполагаю, что он получает больше промахов, и поэтому в конечном итоге нам понадобятся TLB и даже более высокоуровневые кеши перевода, верно? - person Errata; 03.03.2021
comment
@Errata: Я думаю, вам нужно больше думать о задержках и пропускной способности. Для кешей (и TLB); Чем больше и сложнее, тем медленнее, поэтому существует несколько уровней (например, кеш L1, кеш L2 и т. д.). Если у вас есть пакет из 5 обращений к кешу (4 разных уровня таблиц страниц плюс один для конечного физического адреса), вам потребуется в 5 раз больше пропускной способности кеша для его поддержки (что делает его более сложным и, следовательно, медленным), и вы выиграете. t иметь возможность скрыть 5-кратную задержку за выполнением вне очереди (что делает его медленнее). Выделенный TLB снимает почти всю нагрузку с обычных кешей. - person Brendan; 04.03.2021