как система обеспечивает согласованность между памятью и кешем - PullRequest
4 голосов
/ 29 сентября 2010

Например, если я пишу в определенную область памяти (например, передача DMA), как это влияет на мой кэш?

Ответы [ 2 ]

1 голос
/ 29 сентября 2010

Кеш - это функция процессора;если вы выполняете запись в память через ЦП, кэш будет обновляться и будет оставаться согласованным.

Если вы записываете в память другим способом (например, перенос DMA, как вы предлагаете), вам понадобится (возможно)предварительно очистите кеш, а затем скажите ЦПУ, что кеш недействителен.Как это сделать, зависит от вашей системы - например, см. INVD и WBINVD для x86.

Две хорошие статьи о когерентности кэша и DMA: Понимание кэширования и с использованием DMA (оба написаны Джеймсом Боттомли (James Bottomley), опубликовано в Linux Journal; «Кэширование» в выпуске 117, январь 2004 г. и «DMA» в выпуске 121, май 2004 г.).

0 голосов
/ 29 сентября 2010

Стоит отметить: инструкции INVBD и WBVD являются частными инструкциями, поэтому вы не можете запускать их непосредственно из пространства пользователя.

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