Как работает TLB и кеш данных?

15

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

Я понимаю, что TLB - это, по сути, кеш самых последних использованных физических адресов. Однако я смотрел на диаграмму в своем учебнике (показанную ниже), и я не понимаю, что в ней происходит. Я думаю, он внезапно разделяет физический адрес и использует его для индексации кэша. Но почему он показывает кеш и данные отдельно? и почему смещение байта только что осталось плавающим? Я уверен, что кэш должен хранить данные. Я не думаю, что его единственная цель состоит в том, чтобы определить, есть ли в нем хит или мисс.

Я заранее извиняюсь за свое невежество, но книга едва охватывает TLB (это чуть больше, чем страница), и она не очень хорошо объясняет взаимосвязь между TLB и кешем.

фигура

audiFanatic
источник
Этот вопрос слишком длинный. Можете ли вы извлечь из этого узкий, конкретный вопрос, а затем отредактировать свой вопрос, чтобы сократить его до одного конкретного вопроса? Часть того, чтобы задать хороший вопрос, заключается в том, чтобы тщательно обдумать, какова минимальная сущность того, что вам нужно знать, и включить только то, что имеет отношение к этому вопросу и имеет к нему важное значение. Например, если у вас есть конкретный вопрос о том, как работают TLB, а не выкидываете все это, как насчет попытки сформулировать один узко разработанный вопрос о TLB?
DW
Хорошо, я намеревался показать, что я уже понимаю по этому вопросу, так как большинство людей на стеке не любят отвечать на вопросы, а просящий не показывает каких-то усилий (понятно). Я думаю, я не могу сделать всех счастливыми. Может быть, я просто отредактирую это с моим вопросом, выделенным жирным шрифтом или что-то.
audiFanatic
@DW это лучше?
audiFanatic
audiFanatic, вы, возможно, неверно истолковали или неправильно поняли мои комментарии и мышление «проявите некоторые усилия». Мое предложение состоит в том, чтобы вы определили узкий вопрос - что-то вроде «как работает TLB? Я не совсем понимаю» - и затем переориентировались исключительно на этот вопрос. Да, вам нужно приложить серьезные усилия, чтобы ответить на этот вопрос , и вы должны показать усилия, которые вы предприняли, чтобы ответить на этот конкретный вопрос , но усилия по не связанной теме не имеют значения (например, тот факт, что вы пытались сделать прогресс по домашнему заданию, которое заставило вас задуматься над этим вопросом).
DW
Позвольте мне помочь вам понять предысторию этого. Мы хотим создать высококачественный архив вопросов и ответов, который будет полезен для других (не только для вас). Лучшее, что вы можете сделать, чтобы помочь, - это выделить конкретный, узкий, правильно поставленный вопрос и сфокусировать свой вопрос только на этом одном вопросе. Расплывчатый, открытый вопрос, который не очень сфокусирован, с меньшей вероятностью будет полезен для других, кто может наткнуться на него (и для читателей также труднее прийти к сути и понять, в чем суть вашего вопроса, поэтому у вас меньше шансов получить хороший ответ).
DW

Ответы:

23

Я думаю, что вижу ваше замешательство. TLB и кэш данных - это два отдельных механизма. Они оба являются кешами, но кешируют разные вещи:

  • Следовательно, TLB действует как выделенный кеш для этого поиска. TLB имеет несколько записей TLB, где каждая запись TLB содержит как виртуальный адрес, так и соответствующий ему физический адрес.

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

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

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

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

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

Для более подробной информации, вы можете прочитать статью в Википедии о TLB . Если вы выполните поиск, на TLB и кэшах данных будет много другой информации. Я предлагаю поискать «TLB» и «кэш L1» или «кэш L2» (последние 2 являются разновидностями кэшей данных).

(Для справки в будущем: мы ожидаем, что вы проведете некоторое исследование по своему вопросу, прежде чем задавать этот вопрос, и проверить стандартные интернет-источники. Если ответ можно найти в Википедии, вы сами не провели достаточно исследований. Возможно, вы Удачи, если вы проверили интернет-источники информации о том, как TLB, прежде чем спросить здесь. См. также, сколько исследовательских работ ожидается от пользователей Stack Overflow?. Итак, воспользуйтесь этой возможностью в качестве урока, как вы можете улучшить свои собственные исследовательские навыки - то, что будет ценно для вас на протяжении всей вашей карьеры.)

DW
источник
1
Спасибо! Это прояснило в основном все. Я потратил много времени на изучение этого (несколько дней), но я просто не мог найти четкую, краткую информацию, которая связывала бы все это вместе (плюс мое замешательство, вероятно, не помогло в моем поиске). Как аналогия, я чувствовал, что был в аптеке в поисках лекарства от недиагностированной болезни; используя только симптомы в качестве руководства.
audiFanatic
С учетом сказанного у меня есть еще один вопрос. Если они являются кешами, почему книга разделяет части данных и метки кэша (черт, часть данных даже выше, чем метка и допустимая битовая часть)? Создается впечатление, что кеш служит ничем иным, как проверкой тегов (как будто он не хранит данные). Этот блок данных находится в правом нижнем углу части изображения в кэше, или это часть основной памяти или что?
audiFanatic
1
ВпВ+1п+1В+2п+2В+4095п+4095
яяя
Ок, отлично. Благодарю. Я думаю, что это было разделение, которое смутило меня больше всего.
audiFanatic