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


15

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

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

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

фигура


Этот вопрос слишком длинный. Можете ли вы извлечь из этого узкий, конкретный вопрос, а затем отредактировать свой вопрос, чтобы сократить его до одного конкретного вопроса? Часть того, чтобы задать хороший вопрос, заключается в том, чтобы тщательно обдумать, какова минимальная сущность того, что вам нужно знать, и включить только то, что имеет отношение к этому вопросу и имеет к нему важное значение. Например, если у вас есть конкретный вопрос о том, как работают 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?. Итак, воспользуйтесь этой возможностью в качестве урока, как вы можете улучшить свои собственные исследовательские навыки - то, что будет ценно для вас на протяжении всей вашей карьеры.)


1
Спасибо! Это прояснило в основном все. Я потратил много времени на изучение этого (несколько дней), но я просто не мог найти четкую, краткую информацию, которая связывала бы все это вместе (плюс мое замешательство, вероятно, не помогло в моем поиске). Как аналогия, я чувствовал, что был в аптеке в поисках лекарства от недиагностированной болезни; используя только симптомы в качестве руководства.
— audiFanatic

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

1
ВпВ+1п+1В+2п+2В+4095п+4095

яяя

Ок, отлично. Благодарю. Я думаю, что это было разделение, которое смутило меня больше всего.
— audiFanatic
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.