Для чего именно нужен индекс TLB? - PullRequest
1 голос
/ 16 января 2020

, поэтому я не совсем понимаю, что конкретно представляет собой индекс TLB. Давайте предположим, что у нас есть этот TLB:

enter image description here

Для виртуального адреса 0x021a мы получим:

VPN: 0x8 TLB index : 0x0 TLB tag: 0x2

, что приведет к промаху. Что я не понимаю. Разве мы не получаем хит для тега 0x2? В результате чего PPN 0x20? Я также не могу понять, где индекс вступает в игру здесь. Я думал, что это может дать нам блок в наборе, но, видимо, это не так.

Так почему же это промах и что именно индекс будет делать здесь?

1 Ответ

1 голос
/ 18 января 2020

Разве мы не получаем удар по тегу 0x2?

Нет. Две записи в TLB с тегом 02 предназначены для совершенно разных номеров виртуальных страниц (VPN). Даже если они используют один и тот же тег, они не предназначены для VPN 8. Один из набора 1 предназначен для VPN 9, а второй - для набора 0b (который недействителен). При поиске VPN 8 будет выполняться поиск только в наборе 0, поскольку известно, что VPN 8 может быть только в наборе 0.

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

Следовательно, VPN разделяется на тег TLB и индекс TLB. В вашем упражнении индекс TLB состоит из двух младших битов VPN, а тег TLB состоит из оставшихся битов. В каждой записи TLB хранится только тег TLB, индекс TLB не сохраняется, как это подразумевается в наборе, в котором находится запись TLB.

...