Интернет магазин китайских планшетных компьютеров



Компьютеры - Кэш процессора - Трансляция адресов

23 января 2011


Оглавление:
1. Кэш процессора
2. Принцип работы
3. Структура записи в кэше
4. Виды промахов
5. Трансляция адресов
6. Иерархия кэшей в современных микропроцессорах
7. Реализации



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

Наличие виртуальной памяти требует от процессора проведения трансляции виртуальных адресов, используемых программой, в физические адреса, соответствующие реальному местоположению в ОЗУ. Часть процессора, проводящая это преобразование называется устройство управления памятью. Для ускорения трансляций в MMU добавлен кэш недавно использованных отображений, называемый Translation Lookaside Buffer.

Для дальнейшего описания важны три особенности процесса трансляции адресов:

  • Задержка: Физический адрес будет получен от MMU только спустя некоторое время, вплоть до нескольких тактов, после подачи на вход MMU виртуального адреса с генератора адресов.
  • Эффект наложения: Несколько виртуальных адресов могут соответствовать одному физическому. В большинстве процессоров гарантируется, что все записи по физическому адресу будут совершены в порядке, заданном программой. Для выполнения этого свойства требуется проверка, что только один экземпляр копии данных с физического адреса находится в данный момент в кэше.
  • Единица отображения: Виртуальное адресное пространство разбито на страницы — блоки памяти фиксированного размера, начинающиеся с адресов, кратных их размеру. Например, 4 ГБ адресного пространства можно разделить на 1048576 страниц по 4 КБ, для каждой из которых возможно независимое соответствие физическим страницам. В современных процессорах часто поддерживается использование одновременно нескольких размеров страниц, например, 4 КБ и 2 МБ для x86-64, а в некоторых современных AMD-процессорах еще и 1GB.

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

По отношению к виртуальной адресации, кэши данных и инструкций могут быть поделены на 4 типа. Адреса в кэшах используются для двух разных целей: индексирования и тегирования.

  • Physically indexed, physically tagged — физически индексируемые и физически тегируемые. Такие кэши просты и избегают проблем с наложением, но они медленны, так как перед обращением в кэш требуется запрос физического адреса в TLB. Этот запрос может вызвать промах в TLB и дополнительное обращение в основную память перед тем, как наличие данных будет проверено в кэше.
  • Virtually indexed, virtually tagged — виртуально индексируемые и виртуально тегируемые. И для тегирования и для индекса используется виртуальный адрес. Благодаря этому проверки наличия данных в кэше происходят быстрее, не требуя обращения к MMU. Однако, возникает проблема наложения, когда несколько виртуальных адресов соответствуют одному и тому же физическому. В этом случае данные будут закэшированы дважды, что сильно усложняет поддержку когерентности. Другой проблемой являются гомонимы, ситуации, когда один и тот же виртуальный адрес отображается различные физические адреса. Становится невозможным различить такие отображения исключительно по виртуальному индексу. Возможные решения: сброс кэша при переключении между задачами, требование непересечения адресных пространств процессов, тегирование виртуальных адресов идентификатором адресного пространства или использование физических тегов. Также возникает проблема при изменении отображения виртуальных адресов в физические, что требует сброса кэш-линий, для которых изменилось отображение.
  • Virtually indexed, physically tagged — виртуально индексируемые и физически тегируемые. Для индекса используется виртуальный адрес, а для тега — физический. Преимуществом над первым типом является меньшая задержка, поскольку можно искать кэш-линию одновременно с трансляцией адресов в TLB, однако, сравнение тега задерживается до получения физического адреса. Преимуществом над вторым типом является обнаружение гомонимов, так как тег содержит физический адрес. Для данного типа требуется больше бит для тега, поскольку индексные биты используют иной тип адресации.
  • Physically indexed, virtually tagged — физически индексируемые и виртуально тегированные кэши считаются бесполезными и маргинальными и представляют исключительно академический интерес.

Скорость этих действий критически важна для производительности процессоров, и, поэтому, большинство современных L1-кэшей являются виртуально индексируемыми, что, как минимум, позволяет блоку MMU производить запрос в TLB одновременно с запросом данных их кэш-памяти.

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

Достаточно длительное время кэши использовали для тегов как физические так и виртуальные адреса, хотя виртуальное тегирование в настоящее время встречается очень редко. Если TLB-запрос заканчивается раньше запроса в кэш-память, физический адресу будет доступен для сравнения с тегом к моменту, когда это будет необходимо, и, следовательно, виртуальное тегирование не потребуется. Большие кэши чаще тегируются физическими адресами, и только небольшие быстродействующие кэши используют для тегов виртуальные адреса. В современных процессорах общего назначения, виртуальное тегирование заменено на механизм vhints, описанный далее.

Виртуальное индексирование и пересечения виртуальных адресов

Проблема гомонимов и синонимов

Виртуальное тегирование и механизм vhints

Расцвечивание страниц



Просмотров: 8130


<<< Кэш
Математический сопроцессор >>>