Эффективный метод очистки кеш-памяти в сборке ARM
Я должен очистить кэш-память объемом 4 МБ на языке ассемблера ARM, что бы мы сделали эффективным способом?
Я думал о выделении памяти 4 МБ, записи случайных данных и чтении
Я реализую инструмент для проверки основной памяти. Чтобы мой инструмент проверял только основную память, мне нужно очистить кеш-память
Я работаю на процессоре Cortex A8, я хочу сбросить все кэши L1,L2,L3
1 ответ
Если рассматривать вопрос буквально, то наиболее эффективный метод очистки кэшей ЦП состоит в использовании операций обслуживания кэша для очистки + аннулирования с помощью set/way - см. v7_flush_dcache_all
например, но обратите внимание, что для максимальной производительности порядок циклов может иметь заметное значение, особенно если кэшированные адреса не случайны.
Что касается внешних кешей (например, L3), то вы сами по себе и должны проконсультироваться с TRM для любой имеющейся у вас реализации.
Однако, поскольку вы пишете тестер памяти, а не ОС, гораздо более разумный подход заключается в том, чтобы сначала просто отключить MMU и кэши данных и полностью избежать этой проблемы.