Могут ли кэши иметь ограничения при работе с устройствами? - PullRequest
1 голос
/ 04 июля 2011

На моем занятии по компьютерной архитектуре профессор задал нам следующий вопрос:

"Caches can have serious limitations when dealing with devices. Why is this?"

Я понятия не имею, почему существуют ограничения или какими они могут быть. После поиска в Google я не могу найти точный ответ на этот вопрос. Может ли кто-нибудь объяснить, почему существуют ограничения и каковы могут быть эти ограничения, или указать мне направление, которое может помочь мне ответить на вопрос?

Ответы [ 3 ]

2 голосов
/ 04 июля 2011

Есть две проблемы с кешем и устройствами.Первая проблема - это основная функциональная правильность.А именно, система должна обычно размещать регистры отображения памяти устройства в диапазоне адресов, который полностью обходит кэш.Представьте, что этого не произошло, и кеш был "в пути".В этом случае программное обеспечение, пытающееся прочитать регистр состояния на устройстве, вместо этого считывает устаревшее значение, предоставленное кешем!Удачи в получении драйверов вашего устройства.Некоторые процессоры предоставляют специальные инструкции для доступа без кэширования, но основной результат тот же: кэш не дает никаких преимуществ и только усложняет работу с памятью устройства.

Вторая проблема - это проблема производительности интеллектуальных устройств, способныхвыполнение транзакций прямого доступа к памяти (DMA) с памятью.Когда устройство выполняет запись в DMA, тогда логика аппаратной шины в системе полностью отсекает строки кэша от процессора, следуя протоколу MESI.Ядра сильно зависят от хранения данных в закрытых кешах для эффективности.Теперь устройство только что вырвало все строки кэша, что заставляет ядро ​​перезагружать строки с высокой задержкой при следующем доступе к программному обеспечению.Такое же отслеживание обычно происходит даже для операций чтения DMA, поскольку ЦП часто избегают строк данных в общем состоянии.

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

2 голосов
/ 04 июля 2011

Другими словами, вы не можете контролировать, что / когда фактически отправляется на устройство.

0 голосов
/ 04 июля 2011

По сути, у вас должен быть способ точно знать, когда данные выгружаются из кэша на устройство, с которым вы разговариваете.ОЗУ - это устройство, подобное любому другому, и оно запоминает последние данные, которые были записаны в местоположение.Если он не будет сохранен в ОЗУ, то устройство также не увидит запись.Linux использует функции, называемые барьерами чтения / записи, которые зависят от архитектуры.

Как Linux справляется с этим

...