ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
182320
Evgeny_CD, Архитектор (21.02.2010 01:51 - 02:01, просмотров: 3284)
Чет я в ступор впал. Торможу. ARM720: DMA и кеш - как их подружить? Есть некая область памяти. В которой процессор обрабатывает данные от периферии. Куда они подтаскаваются DMA. Обработали мы кусок данных в памяти. То, к чему обращались - закешировалось. Теперь через какой-то промежуток времени DMA снова притащит данные. DMA притащило данные. Мы идем их обрабатывать, и тут кеш радостно подставляет нам старые данные. Как с этим бороться? Инвалидировать можно весь кеш целиком, не кешлайны отдельно (если я правильно доку вкурил). Поместить данные в некешируемую зону - падение производительности на операциях с данными. Использовать SWAP? Тоже не есть гуд. Из памяти оно читает, наплевав на кеш. Это хорошо, но последущий за этим цикл записи в общем-то нафиг не нужен. И скорости он точно не прибавит. Т.е. по сути, чтобы не терять время зря в описанной ситуации, можно использовать только накристальный SRAM, поместив его в некешируемую зону MMU? Вот изврат-то. Чет я как-то никогда не задумывался над деталями процесса...