2013-11-19 5 views
4

Я дал следующую проблему, и я не знаю точно, как подойти к нему:Проектирование виртуальной памяти с TLB

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

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

· 16 КБ страниц

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

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

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

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

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

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

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

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

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

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

Figure

+0

К сожалению, это виртуальный адрес 32 бита или 35 бит? –

+0

35 бит. Я знаю, это неудобно – audiFanatic

+0

Извините, моя ошибка, теперь я заметил свою опечатку. Исправлено: – audiFanatic

ответ

4

Смещение состоит из битов, которые касаются в пределах страницы и не переведенных на TLB страницу. С 16 страницами KiB смещение страницы будет 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 бит.

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

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

+0

Спасибо за ответ, теперь он несколько яснее. однако представленная мной диаграмма является полностью ассоциативной, а не прямой (у нее есть компаратор для каждого блока в TLB). – audiFanatic

+0

@audiFanatic Ах, я не заметил, что он был полностью ассоциативным; Я должен был обратить больше внимания. Во всяком случае, какое измерение, которое нужно скрыть, несколько произвольно. –

+0

+1 для 3D-искусства Ascii, с нетерпением жду, чтобы кто-то спросил о структуре DRAM :) – Leeor