2016-07-29 5 views
0

Я читаю «компьютерную организацию и дизайн аппаратного/программного интерфейса» в испанском издании, и я столкнулся с упражнением, которое я не могу решить. Упражнение касается иерархии памяти, в частности кэшей.Время загрузки кэша CPU

упражнение говорит:

Если 2,5 нс требуется для доступа метки в N-ассоциативным кэшем, 4 нс для доступа к данным, 1 нс для попадания/сравнения отказов и 1 нс, чтобы вернуть данные выбранных процессором в случае успеха.

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

  2. Что такое латентность попадания в кеш? (успешный случай).

  3. Какова была бы латентность успеха в кеше, если время доступа к меткам и матрица данных равно 3 нс?

Я постараюсь ответить на вопросы, все, что я знаю, о памяти.

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

Это означает, что кеш займет 8,5 нс. Но я думал по-другому, что chaches могут это сделать: если я получу нужную строку (2,5 нс), то теперь я могу получить доступ к данным, и параллельно могу оценить состояние iquality. Таким образом, время составит 4,5 нс. Итак, один из них является результатом второго вопроса. Какой из этих результатов правильный?

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

Для последнего вопроса, если критический путь - это весь процесс, тогда это займет 8ns. В противном случае это займет 5 нс (доступ к ярлыкам в кеше, сравнение, возврат данных).

Это правда ?, а как насчет полностью assoctive cache ?, и прямого кеша отображения?

Проблема в том, что я не знаю, что делают кеширование в первую очередь и что дальше или параллельно.

ответ

1

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

Итак вы получаете следующую последовательность в случае попадания кэша:

  1. ярлыка доступа (2.5ns)
  2. Сравнить хит/мисс (1ns)
  3. доступа к данным (4NS)
  4. Возврат данных в программу, запрашивающие его (1ns)

Всего: 2,5 + 1 + 4 + 1 = 8. 5ns

С этой последовательности мы получаем (как вы уже сейчас) следующие ответы на вопросы:

  1. Ответ: Критический путь в хит кэша, чтобы получить доступ к данным и вернуть его 4 + 1 = 5 (нс), по сравнению определить с поиском погоду кэша был успешным: 2,5 + 1 = 3,5 (нс)

  2. Ответ: 8.5ns

  3. Ответ: 3 + 1 + 3 + 1 = 8ns

Если я получить желаемую линию (2,5 нс), то теперь может получить доступ к де данных, и параллельно, можно оценить условие качества. Таким образом, время будет 4,5 нс

Я не понимаю, как вы получаете 4.5ns? Если вы предполагаете, что доступ к данным и сравнение ударов/сбоев выполняются параллельно, вы получаете: 2.5 + 4 + 1 = 7ns в случае попадания в кеш. Вы также получите 7ns в случае промаха в кеше, по сравнению с тем, если вы не получите доступ к памяти, пока не узнаете, является ли это промахом в кеше, тогда вы получаете латентность с ошибкой 2,5 +1 = 3,5 нс, что делает ее очень неэффективной чтобы попытаться распараллелить сравнение «хит/промах» с доступом к данным.

Если вы предполагаете, что доступ к метке и сравнение с пропуском/пропуском выполняется параллельно с доступом к данным, которые вы получаете: 4 + 1 = 5ns в случае попадания в кеш.

Очевидно, что вы не можете вернуть данные параллельно выборки данных, но если представить, что было бы невозможно, и вы получаете доступ этикетку и сделать сравнение и возвращают данные параллельно с доступом к данным, то вы получите : 2,5 + 1 + 1 = 4,5 нс.

Что такое полностью ascctive cache ?, и кеш прямого отображения?

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

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

Терминология в вопросе несколько запутанна, «ярлык» обычно называют «тегом», когда речь идет о cpu-кешах.

+1

Отличный ответ !, спасибо –

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