2015-05-16 3 views
2

Я читаю презентацию мэра Скотта, он mentiones эту строку:дублирования кода уменьшает эффективный размер кэша

вниз сторона встраивание: Код дублирования уменьшает эффективный размер кэша

Я не являюсь видя, как дублирование кода имеет какое-либо отношение к размеру кеша

+4

Если часто используемая функция не включена, то ее код существует в одном месте в памяти, которое будет часто ударяться и, следовательно, скорее всего будет находиться в кеше большую часть времени. С другой стороны, если он встроен, многие копии кода будут существовать в разных местах, и, следовательно, кеш не так полезен. –

+0

Делает прекрасный смысл, не знаю, как я пропустил это. Спасибо – Kam

+0

@cicada должен быть ответом без комментариев – b4hand

ответ

5

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