Преобразование виртуального адресного пространства в физическое адресное пространство

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

Предположим, у меня есть следующие системные свойства (и рабочий пример, решения которого я знаю, но не совсем понимаю):

введите здесь описание изображения

И предположим, я хочу преобразовать виртуальный адрес 0x0712 в физический адрес:

Я бы сначала преобразовал 0x0712 в двоичный: 000011100010010 (зная, что VA имеет ширину 15 бит)

Я знаю, что размер страницы составляет 128 байт, поэтому log2(128) = 7, это мои биты смещения.

Затем мне нужно ответить на следующие вопросы:

Что такое виртуальный номер страницы?

Что такое индекс TLB?

Что такое тег TLB?

Была ли это попытка TLB?

Была ли ошибка страницы?

Что такое физический номер страницы?

Как мне ответить на эти вопросы? Я знаю, что VPN может отображаться как E (или 0E), что имеет смысл, поскольку 15-битный виртуальный адрес за вычетом битов смещения (7) оставит: 00001110 = E. Я также понимаю, почему нет PPN, поскольку в таблице страниц нет совпадения для VPN 0E.

Я предполагаю, что ошибка страницы - Y именно потому, что в таблице страниц нет совпадения с VPN 0E? Однако я пришел к этому интуитивно.

Но я не понимаю остальных частей, и как я на них отвечаю? Опять же, я знаю решения как:

Что такое виртуальный номер страницы? = 0E

Что такое индекс TLB? = 2

Что такое тег TLB? = 03

Была ли это попытка TLB? = M

Была ли ошибка страницы? = Y

Что такое физический номер страницы? никто

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

Может ли кто-нибудь объяснить мне эти концепции?

РЕДАКТИРОВАТЬ: Я нашел решение в другом месте, я разместил его в качестве комментария ниже, чтобы продемонстрировать рабочий пример.


person NewDev90    schedule 26.12.2019    source источник


Ответы (1)


Изучая еще несколько примеров, я наткнулся на решение, которое имело для меня смысл. В случае сверху у меня есть следующее:

Что такое виртуальный номер страницы? Виртуальный адрес: 0x0712, который соответствует двоичному адресу: 000011100010010

Я знаю, что биты смещения находятся с помощью log2(128) = 7 bits, что оставляет оставшиеся 8 бит для фактического виртуального адреса.

Что такое индекс TLB? Поскольку у меня есть 4 набора в TLB, у меня есть 2 бита индекса (2 ^ k = 4, для k = 2, что является фактическим количеством бит индекса, необходимым для покрытия всех 4 набора в TLB-кеше), и, таким образом, я могу прочитать индекс TLB из 2 младших битов виртуального адреса: 10 = 2.

Что такое тег TLB? Тег TLB - это оставшиеся 8–2 = 6 бит виртуального адреса, в данном случае 000011 = 03.

Было ли это попаданием TLB или промахом? Чтобы проверить, есть ли у меня попадание TLB, я проверяю таблицу TLB, ищу в наборе 2 (который был индексом TLB) и смотрю, есть ли совпадение с тег 03 (который был тегом TLB). В этом случае у меня нет совпадений, и, следовательно, есть TLB MISS.

Произошла ошибка страницы? Поскольку TLB-кеш не дал ответа, мне нужно найти перевод с виртуального адреса, используя вместо этого таблицу страниц. Поэтому я проверяю таблицу на соответствие VPN 0E, которого нет, и, следовательно, у меня ошибка страницы. В случае, если я действительно нашел совпадение, мне нужно будет проверить действительный бит 1, поскольку он указывает, загружены ли данные в таблицу страниц.

Что такое физический номер страницы? Так как не было совпадений в трансляции TLB-кэша или в реальной таблице страниц для виртуального адреса 0E, совпадение PPN отсутствует.

person NewDev90    schedule 26.12.2019