Определение/значение сглаживания? (Архитектуры кэша CPU)
Меня немного смущает значение "алиасинг" между CPU-кешем и физическим адресом. Сначала я нашел это определение в Википедии:
Однако VIVT страдает от проблем с наложением, когда несколько разных виртуальных адресов могут ссылаться на один и тот же физический адрес. Другая проблема - омонимы, где один и тот же виртуальный адрес отображается на несколько разных физических адресов.
но через некоторое время я увидел другое определение в презентации (ppt) DAC'05: "Энергоэффективные кеши с физическими тегами для встроенных процессоров с виртуальной памятью"
Псевдоним кеша и синонимы:
Псевдоним: один и тот же виртуальный адрес в разных контекстах, сопоставленный с разными физическими адресами. Синоним: другой виртуальный адрес, сопоставленный с одним и тем же физическим адресом (обмен данными).
Поскольку я не являюсь носителем языка, я не знаю, какой из них правильный, хотя я чувствую, что определение в вики верное.
Редактировать:
Понятие "псевдоним" в кэше ЦП обычно означает "синоним", а не "омоним". На более общем уровне "псевдонимы" - это "путаница" или "хаос" или что-то в этом роде. Так что, на мой взгляд, "псевдонимы" точно означает, что отображение (X-> Y) "не биективно", где
"X" = подмножество единиц физических адресов, которое было кэшировано. (каждый элемент представляет собой строку байта)
"Y" = набор допустимых строк кэша. (элементы также "линия")
Ответы
Ответ 1
Сначала вам нужно узнать о виртуальной памяти, но в основном это:
-
Адреса памяти, используемые вашей программой, не являются физическими адресами, которые использует ОЗУ; это виртуальные адреса, сопоставленные с физическими адресами CPU.
-
Несколько виртуальных адресов могут указывать на один и тот же физический адрес.
Это означает, что вы можете иметь две копии одних и тех же данных в отдельных частях кеша, не зная об этом... и они не будут обновляться правильно, поэтому вы получите неправильные результаты.
Edit:
Exerpt of ссылка:
Сглаживание кэша происходит, когда несколько отображений на физическую страницу памяти имеют конфликтующие состояния кеширования, такие как кешированные и не кэшированные. Из-за этих конфликтных состояний данные на этой физической странице могут стать поврежденными, когда кэш процессора очищен. Если эта страница используется для DMA драйвером, это может привести к проблемам с аппаратной стабильностью и системными блокировками.
Для тех, кто все еще не убежден:
В процессорах ARMv4 и ARMv5 кеш организован как виртуально-индексированный, виртуальный тег (VIVT), в котором оба индекса и тега основаны на виртуальном адресе. Основным преимуществом этого метода является то, что поиск в кэше происходит быстрее, потому что буфер обратного перевода (TLB) не участвует в сопоставлении строк кэша для виртуального адреса. Однако этот метод кэширования требует более частого сброса кеша из-за сглаживания кеша, в котором тот же физический адрес может быть сопоставлен с несколькими виртуальными адресами.
Ответ 2
@Wu да, вам нужно понять виртуальную память, чтобы понять наложение псевдонимов. Позвольте мне сначала рассказать вам несколько строк:
Скажем, у меня есть ОЗУ (физическая память) 1 ГБ. Я хочу представить своего программиста с учетом того, что у меня есть память объемом 4 ГБ, а затем я использую виртуальную память. В виртуальной памяти программист считает, что он имеет 4 ГБ и записывает свою программу с этой точки зрения. Им не нужно знать, сколько физической памяти существует. Преимущество заключается в том, что программа будет работать на компьютерах с разным объемом ОЗУ. Кроме того, программа может работать на компьютере вместе с другими программами (также потребляя физическую память).
Итак, вот как реализуется виртуальная память. Я дам простую 1-уровневую систему виртуальной памяти (у Intel есть 2/3-уровневая система, которая просто усложняет объяснение.
Наша проблема заключается в том, что у программиста 4 миллиарда адресов, и у нас есть только 1 миллиард мест, чтобы разместить эти 4 миллиарда адресов. Таким образом, адреса из виртуального адресного пространства должны быть сопоставлены с физическим адресным пространством. Это делается с помощью простой таблицы индексов, называемой таблицей страниц. Вы получаете доступ к таблице страниц с виртуальным адресом, и он дает физический адрес этой ячейки памяти.
Некоторые подробности. Помните, что физическое пространство составляет всего 1 ГБ, поэтому система сохраняет только самую последнюю доступную память в 1 ГБ в физической памяти и сохраняет остальную часть на системном диске. Когда программа запрашивает определенный адрес, мы сначала проверяем, находится ли она уже в физической памяти. Если это так, оно возвращается программе. Если нет, он выводится с диска и помещается в физическую память, а затем возвращается в программу. Последний известен как ошибка страницы.
Возвращаясь к псевдониму в контексте виртуальной памяти: поскольку существует сопоставление между виртуальными → физическими адресами, можно сделать два виртуальных адреса для сопоставления с одним и тем же физическим адресом. это то же самое, что сказать, что если я посмотрю на свою таблицу страниц для виртуальных
адрес X и Y, я получаю тот же физический адрес в случаях BOTH.
Ниже я покажу вам простой пример 8-страничной таблицы страниц. Скажем, есть 8 жизненно важных адресов и всего 3 физических адреса. Таблица страниц выглядит следующим образом:
0: 1
1: On disk
2: 2
3: 1
4: On disk
5: On disk
6: On disk
7: 0
This mean that if virtual address 4 is accessed, you will get a page fault.
If virtual addresses 3 is accessed, you will get the physical address 1
In this case, virtual addresses 0 and 3 are aliasing to the same physical address 1 for both of them
ПРИМЕЧАНИЕ. Я использовал термины физических и виртуальных адресов во всем мире, чтобы упростить концепцию. В реальной системе виртуальное-физическое сопоставление не выполняется для каждого адреса. Вместо этого мы отображаем куски виртуального пространства в физическое пространство. Каждый кусок называется страницей (поэтому таблица отображения называется таблицей страниц), а размер куска является свойством ISA, например, у Intel x86 есть 4Kbyte страницы.