Определение / значение псевдонима?(Архитектура кеша процессора) - PullRequest
12 голосов
/ 10 мая 2011

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

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

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

Кэширование псевдонимов и синонимов:

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

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

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

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

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

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

Ответы [ 2 ]

12 голосов
/ 10 мая 2011

Сначала вам нужно узнать о виртуальной памяти, но в основном это так:

  • Адреса памяти, используемые вашей программой, не являются физическими адресами, которыеиспользование оперативной памяти;они виртуальные адреса сопоставлены с физическими адресами ЦПУ.

  • Несколько виртуальных адресов могут указывать на один и тот же физический адрес.

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


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

Извлечение ссылка :

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


Для тех, кто еще не убежден :

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

4 голосов
/ 10 мая 2011

@ Ву, да, вам нужно немного понимать виртуальную память, чтобы понимать псевдонимы. Позвольте мне сначала дать вам несколько объяснений:

Допустим, у меня есть ОЗУ (физическая память) 1 ГБ. Я хочу представить моему программисту, что у меня 4 ГБ памяти, а затем я использую виртуальную память. В виртуальной памяти программист думает, что у него 4 ГБ, и пишет свою программу с этой точки зрения. Им не нужно знать, сколько физической памяти существует. Преимущество в том, что программа будет работать на компьютерах с разным объемом оперативной памяти. Также программа может запускаться на компьютере вместе с другими программами (также потребляющими физическую память).

Итак, вот как реализована виртуальная память. Я приведу простую 1-уровневую систему виртуальной памяти (у Intel есть 2/3-уровневая система, которая просто усложняет объяснение.

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

Некоторые подробности: Помните, что физическое пространство составляет всего 1 ГБ, поэтому система сохраняет в физической памяти только самый последний доступный объем в 1 ГБ и сохраняет остаток на системном диске. Когда программа запрашивает определенный адрес, мы сначала проверяем, находится ли он уже в физической памяти. Если это так, он возвращается в программу. Если нет, то его вывели с диска и поместили в физическую память, а затем вернули в программу. Последний известен как Page Fault.

Возвращаясь к псевдонимам в контексте виртуальной памяти: поскольку существует сопоставление между виртуальными -> физическими адресами, можно сделать два виртуальных адреса для сопоставления одному и тому же физическому адресу. это то же самое, что сказать, что если я посмотрю на свою таблицу страниц для виртуального адреса X и Y, я получу один и тот же физический адрес в обоих случаях.

Ниже показан простой пример 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 имеет 4-килобайтные страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...