LINUX.ORG.RU
ФорумTalks

Как всё таки устроен кэш процессора?

 , , ,


1

3

Прочитал статью на википедии и запутался ещё больше. Мне всегда казалось что каждая ячейка кэша которая содержит тэг и данные находиться на обшей шине с другими ячейками и в ответ на тэг, если он совпадает так же выдаёт ответ на шину кэша. Но прочитав статью я пришёл к выводу что хитрая микросхема последовательно перебирает ячейки кэша по ассоциативным алгоритмам. Зачем так? Неужели нет более эффективного метода? Или я заблуждаюсь и не правильно понял написанное?

http://ru.wikipedia.org/wiki/Кэш_процессора

Зачем так?

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

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

koirn
()
Последнее исправление: koirn (всего исправлений: 1)
Ответ на: комментарий от koirn

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

Каким образом?

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от Satou

Кэшей куча разновидностей, МПС в помощь.

А что скажешь про такую модель кэша? http://www.imageup.ru/img18/1714464/kehsh.png

При этом все ячейки расположены параллельно на обшей шине.

1) Операция добавления. По шине сумматора отправляется запрос и первая свободная ячейка принимает добавляемые данные. При этом шина сумматора прерывается на ней. Если все ячейки исчерпаны, то в дальнейшем используется лишь операция вытеснения.

2) Вытеснение. По шине сумматора первая ячейка посылает следующим значение своей популярности, каждая последующая ячейка если обнаруживает что она менее популярна то посылает по шине сумматора обратный сигнал сброса готовности и сама приходит в состояние готовности. Таким образом последняя наименее популярная ячейка и принимает записываемые данные.

3) Чтение. По шине адреса идёт сигнал тэга, если где то адрес совпадает с тэгом, то ячейка выдаёт значение на шину данных. Если на шине данных нет значения, то значит соответствующая ячейка в кэше не найдена и надо обращаться к ОЗУ.

rezedent12 ☆☆☆
() автор топика
Ответ на: комментарий от rezedent12

Тебе нужен учебник по дисциплине «микропроцессорные системы» я всё у себя уже грохнул, потому помочь не могу, быстро ничего хорошего по этому нагуглить не получилось

Satou ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.