Проектирование виртуальной памяти с помощью TLB

У меня возникла следующая проблема, и я не совсем уверен, как к ней подойти:

Рассмотрим систему виртуальной памяти со следующими свойствами:

· 35-битный виртуальный адрес

· 16 КБ страниц

· 32-битный физический адрес

Предположим, что эта система виртуальной памяти реализована с восьмисторонним ассоциативным TLB. TLB имеет в общей сложности 256 записей TLB, каждая запись TLB представляет собой преобразование одного номера страницы из виртуального в физический.

Кэш данных размером 64 КБ - это двухсторонний ассоциативный кэш. Размер блока кэша данных составляет 128 байт.

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

Укажите ширину всех полей и сигналов, входящих и исходящих (а также количество сравнений, выполняемых) TLB и кешем данных для каждого адреса памяти.

У меня есть идея, как вычислить некоторые параметры, но в остальном я потерялся.

Например, поскольку виртуальный адрес имеет ширину 35 бит, я знаю, что у меня есть 2 ^ 35 возможных виртуальных адресов.

Поскольку у меня есть страницы размером 16 КБ (16 * 1 КБ = 2 ^ 4 * 2 ^ 10 = 2 ^ 14 КБ), я знаю, что у меня должно быть (3 ^ 35) / (2 ^ 14) = 2 ^ 21 записей таблицы страниц.

Наконец, я знаю, что размер моего кеша составляет 64 * 1 КБ = 2 ^ 16 байт кеша.

Но после этих шагов я потерялся. Любая помощь будет оценена по достоинству.

Рисунок


person audiFanatic    schedule 19.11.2013    source источник
comment
Извините, у виртуального адреса 32 или 35 бит?   -  person Konrad Lindenbach    schedule 19.11.2013
comment
35 бит. Я знаю это неловко   -  person audiFanatic    schedule 19.11.2013
comment
Извините, моя ошибка, теперь я заметил свою опечатку. Фиксированный   -  person audiFanatic    schedule 19.11.2013
comment
Перекрестно размещено на ComputerScience.SE: cs.stackexchange.com/q/18313/755   -  person D.W.    schedule 25.11.2013
comment
@ D.W. Это был мой старый вопрос, как я ранее упоминал на обмене стеками cs (перед редактированием для ясности, как вы предложили). Теперь, когда я лучше понимаю эту тему, я почувствовал необходимость опубликовать новую версию.   -  person audiFanatic    schedule 25.11.2013


Ответы (1)


Смещение страницы состоит из битов, которые адресуются внутри страницы и не транслируются TLB. Для страниц размером 16 КиБ смещение страницы будет 14 бит.

При 35-битном виртуальном адресе остается 21 бит для индексации набора в TLB и записей тегов в этом наборе. Поскольку TLB имеет 256 записей, и каждый набор имеет восемь записей (8-сторонняя ассоциативная), существует 32 набора, требующих 5 бит для индексации набора. Это оставляет 16 бит для тега.

Размер номера физической страницы равен размеру физического адреса за вычетом размера смещения страницы: 32–14 = 18 бит.

Проиллюстрировать TLB, который не является ни прямым, ни полностью ассоциативным, сложнее, чем пример полностью ассоциативного TLB, поскольку он добавляет измерение индексации набора. С этим можно справиться путем наложения способов, чтобы полностью было видно одно направление (индексированное измерение). Вот художественная версия ASCII для 4-сторонней структуры с 8 записями на каждую сторону:

               +----------+----------+
             +----------+----------+ |  
           +----------+----------+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+ |
         |          |          |-+ |-+
         +----------+----------+ |-+
         |          |          |-+
         +----------+----------+

Для 32 наборов можно использовать многоточие (...) для обозначения большинства из них. Точно так же многоточие можно использовать для обозначения записей внутри пути (вместо того, чтобы рисовать сотни из них).

Для кеша, предполагая 4-байтовый доступ, смещение байта будет 2 бита. Смещение блока используется для индексации 4-байтового фрагмента в блоке кэша. С 128-байтовыми блоками кэша для индексации конкретного байта потребуется 7 бит, поэтому для индексации 4-байтового блока потребуется всего 5 бит.

Двухсторонний ассоциативный 64 КиБ будет иметь 32 КиБ в каждом направлении. С 128-байтовыми блоками кэша это означает, что каждый путь будет иметь 256 блоков, поэтому 8 бит физического адреса - помимо смещения блока и байта - необходимы для индексации определенного набора (блока кеша в каждом направлении). Это индекс кеша.

Учитывая 32-битный физический адрес, 8 бит индекса кэша, 5 бит смещения блока и 2 бита смещения байта, тег будет 17 бит (32-8-5-2).

person Paul A. Clayton    schedule 19.11.2013
comment
Спасибо за ответ, теперь немного яснее. однако представленная мною диаграмма является полностью ассоциативной, а не прямой (у нее есть компаратор для каждого блока в TLB). - person audiFanatic; 19.11.2013
comment
@audiFanatic А, я не заметил, что это полностью ассоциативно; Мне следовало уделить больше внимания. В любом случае, какое измерение нужно скрыть, довольно произвольно. - person Paul A. Clayton; 19.11.2013
comment
+1 за 3D Ascii art, с нетерпением жду, когда кто-нибудь спросит о структуре DRAM :) - person Leeor; 19.11.2013