2016-02-28 1 views
0

Я изучал компьютерную архитектуру, и я нашел вопрос и ответ, который я не понимаю.Как он разделил биты в физическом адресе?

В нем говорится, что кэш L1 имеет 32 Кбайт и 4-полосный ассоциативный набор. Затем он спрашивает о компараторах (которые являются четырьмя), сколько бит они используют. Физический адрес - 32 бита.

Парень ответил:

Tag = ? 

Set Address = 8 bits 

Address of Bytes = 5 bits 

Tag = 32 - 8 -5 = **19 bits**. 

То, что я не получаю, как он делал это расщепление 32 бит? Почему адрес Sett имеет 8 бит, и почему Адрес байтов имеет 5 бит?

ответ

0

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

Это означает, что 32kB L1 хранит 1024 строки по 32 байта каждый, которые организованы четырьмя способами, делая 256 наборов. Это означает, что вам нужно 8 бит из адреса для обозначения набора.

Кроме того, вам необходимо удалить смещение байта в строке - так как строка 32 байта (снова - здесь не указана) - для этого вам нужно 5 бит.

Это означает, что 8 + 5 бит из каждого адреса используются для сопоставления байта в кеше, оставляя 19 бит из 32-битного адреса для тега (не путайте размер 32-го размера здесь с размером келины, это ортогональны).

Теперь предположим, что на секунду он ошибся, а размер кешины - 64 байта. В этом случае у вас будет половина наборов, поэтому всего лишь 7 бит для сопоставления наборов, но вам понадобится еще один бит для смещения, оставив точно так же для тега. Вероятно, поэтому автор вопроса не счел нужным предоставить эту информацию.

Смежные вопросы