1

Я встретил два случая в выпускном экзамене. Первый случай памяти извлекает информацию из местоположения, такого как: 0x101,0x102,0x101,0x102,0x101,0x102,0x101,0x102.Некоторые проблемы о временной местности и пространственной локальности

Вторая память памяти извлекает информацию из местоположения, подобного: 0x101,0x101,0x101,0x101,0x111,0x109,0x102,0x100.

Вопрос в этом случае использует временную локальность.

Вот моя мысль: В первом случае. Я думаю, что в действительности, когда мы обращаемся к 0x101, память также будет обращаться к 0x102 в кеш. Затем в следующих шести извлечениях штраф не будет. Это означает, что в этом случае у нас есть только один промах кеша. Здесь я думаю, что нам выгодны как временная локальность, так и пространственная локальность. , а во втором случае на первом четырех шаге мы получаем выгоду от временной локальности, но на следующем этапе у нас нет временной локальности. Фактически это приводит к большему количеству промахов в кеше, чем к первому выбору. Я думаю, что оба правильные, но у нас может быть только один ответ, поэтому я чувствую смущение.

ответ

0

Я проголосовал за второй. Как вы сказали, у этого есть ясный случай временного местоположения на первых 4 шагах.

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

Был ли вопрос предоставлен более подробно об архитектуре системы?

+0

. Более подробная информация по этому вопросу предоставлена. Интересно, я выбираю неправильный ответ на этом экзамене, как жаль ... – user3180776

0

Это определенно второй вариант. Вопрос достаточно ясен: вы явно используете временную локальность во втором случае, потому что вы получаете доступ к 0x101 несколько раз подряд.

Смотрите этот вопрос: Spatial vs. Temporal locality

Temporal локальность означает, что вы собираетесь получить доступ на тот же адрес несколько раз, относительно близко во времени.

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

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

+0

Но каково среднее значение «очень скоро». Я сомневаюсь, что в двух или трех системных часах также называется очень скоро. – user3180776

+0

@ user3180776 2 или 3 системных чата - ничто. 100 системных часов все еще очень скоро. Это зависит от контекста, но помните, что циклы процессора очень быстры. Учитывая варианты в вашем вопросе, я бы пошел на 2, потому что временная локация там действительно очевидна. –

+0

@ user3180776, в скором времени будет субъективным определением - его следует считать достаточно скоро, если вы получите доступ к той же строке, пока он все еще находится в кеше (фактическое расстояние будет отличаться в зависимости от размера кеша/ассоциативности, шаблонов доступа и т. Д.). – Leeor

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