Я пытаюсь подготовиться к экзамену и понял, что запутался в том, как работают TLB и кеш данных.
Я понимаю, что TLB - это, по сути, кеш самых последних использованных физических адресов. Однако я смотрел на диаграмму в своем учебнике (показанную ниже), и я не понимаю, что в ней происходит. Я думаю, он внезапно разделяет физический адрес и использует его для индексации кэша. Но почему он показывает кеш и данные отдельно? и почему смещение байта только что осталось плавающим? Я уверен, что кэш должен хранить данные. Я не думаю, что его единственная цель состоит в том, чтобы определить, есть ли в нем хит или мисс.
Я заранее извиняюсь за свое невежество, но книга едва охватывает TLB (это чуть больше, чем страница), и она не очень хорошо объясняет взаимосвязь между TLB и кешем.
источник
Ответы:
Я думаю, что вижу ваше замешательство. TLB и кэш данных - это два отдельных механизма. Они оба являются кешами, но кешируют разные вещи:
Следовательно, TLB действует как выделенный кеш для этого поиска. TLB имеет несколько записей TLB, где каждая запись TLB содержит как виртуальный адрес, так и соответствующий ему физический адрес.
TLB позволяет процессору очень быстро преобразовывать виртуальные адреса в физические адреса. Если инструкция просит процессор выполнить некоторую операцию с памятью по (виртуальному) адресу, процессор сначала проверяет, содержит ли TLB запись для этого виртуального адреса. Если это так, то это называется «попаданием в кэш» для поиска TLB, и, поскольку запись TLB также содержит переведенный физический адрес, процессор сразу знает, какой физический адрес использовать. Если этого не произойдет, это будет пропуск кеша для поиска TLB, и процессор должен кропотливо выполнить виртуальное преобразование в физическое, пройдясь по таблице страниц. (Как только он завершит это преобразование, он добавляет запись в TLB, чтобы будущие преобразования этого виртуального адреса происходили намного быстрее.)
Кэш данных - это кэш для содержимого памяти. Основная память позволяет вам указать физический адрес и прочитать значение по этому физическому адресу. Тем не менее, основная память работает медленно. Если бы нам приходилось обращаться к основной памяти каждый раз, когда мы хотели выполнить какую-либо операцию с памятью, наш процессор работал бы очень медленно.
Следовательно, кеш данных действует как выделенный кеш для чтения из памяти. Кэш данных имеет несколько записей кэша, где каждая запись кэша содержит физический адрес и значение памяти по этому адресу.
Кэш данных позволяет процессору очень быстро читать из памяти. Когда процессор хочет прочитать память по какому-либо (физическому) адресу, он сначала проверяет кэш данных, чтобы увидеть, содержит ли он запись кэша для этого адреса. Если это так, это называется «попаданием в кэш» (в кеше данных), и процессор может немедленно использовать значение данных, хранящееся в этой записи кеша, без необходимости обращаться к основной памяти. Если это не так, то это «промах кеша» (для кеша данных), и процессор должен перейти в основную память. (После того, как процессор получает значение по этому адресу из основной памяти, он добавляет запись в кэш-память, чтобы попытаться прочитать этот же адрес в кэш-памяти данных.)
Они оба являются кешами, но служат другой цели. Процессор использует оба для каждой операции с памятью: сначала он использует TLB для преобразования из виртуального адреса в физический адрес, затем он проверяет кэш данных, чтобы ускорить процесс чтения значения, хранящегося в памяти по этому адресу.
Для более подробной информации, вы можете прочитать статью в Википедии о TLB . Если вы выполните поиск, на TLB и кэшах данных будет много другой информации. Я предлагаю поискать «TLB» и «кэш L1» или «кэш L2» (последние 2 являются разновидностями кэшей данных).
(Для справки в будущем: мы ожидаем, что вы проведете некоторое исследование по своему вопросу, прежде чем задавать этот вопрос, и проверить стандартные интернет-источники. Если ответ можно найти в Википедии, вы сами не провели достаточно исследований. Возможно, вы Удачи, если вы проверили интернет-источники информации о том, как TLB, прежде чем спросить здесь. См. также, сколько исследовательских работ ожидается от пользователей Stack Overflow?. Итак, воспользуйтесь этой возможностью в качестве урока, как вы можете улучшить свои собственные исследовательские навыки - то, что будет ценно для вас на протяжении всей вашей карьеры.)
источник