Подтвердить что ты не робот

Определение/значение сглаживания? (Архитектуры кэша CPU)

Меня немного смущает значение "алиасинг" между CPU-кешем и физическим адресом. Сначала я нашел это определение в Википедии:

Однако VIVT страдает от проблем с наложением, когда несколько разных виртуальных адресов могут ссылаться на один и тот же физический адрес. Другая проблема - омонимы, где один и тот же виртуальный адрес отображается на несколько разных физических адресов.

но через некоторое время я увидел другое определение в презентации (ppt) DAC'05: "Энергоэффективные кеши с физическими тегами для встроенных процессоров с виртуальной памятью"

Псевдоним кеша и синонимы:

Псевдоним: один и тот же виртуальный адрес в разных контекстах, сопоставленный с разными физическими адресами. Синоним: другой виртуальный адрес, сопоставленный с одним и тем же физическим адресом (обмен данными).

Поскольку я не являюсь носителем языка, я не знаю, какой из них правильный, хотя я чувствую, что определение в вики верное.

Редактировать:

Понятие "псевдоним" в кэше ЦП обычно означает "синоним", а не "омоним". На более общем уровне "псевдонимы" - это "путаница" или "хаос" или что-то в этом роде. Так что, на мой взгляд, "псевдонимы" точно означает, что отображение (X-> Y) "не биективно", где

"X" = подмножество единиц физических адресов, которое было кэшировано. (каждый элемент представляет собой строку байта)

"Y" = набор допустимых строк кэша. (элементы также "линия")

4b9b3361

Ответ 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 страницы.