repstosw 18 17 октября, 2023 Опубликовано 17 октября, 2023 · Жалоба Собственно, для чего? flush dcache - понятно. Скинуть с кеша данных в память. Чтобы DMA или периферал какой-нибудь прочитал правильные данные, подготовленные CPU invalidate dcache - понятно. Объявить кеш данных недостоверным. Чтобы CPU прочёл корректные данные, после того как периферал или DMA записали в память данные/ invalidate icache - тоже понятно. Объявить кеш инструкций недостоверным. Для самомодифицирующегося кода: если мы записали байт-код какой-нибудь функции в память и её нужно выполнить. А flush icache - зачем? Какова практическая цель его применения? Сбросить кеш кода в память. Для чего? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 189 17 октября, 2023 Опубликовано 17 октября, 2023 · Жалоба Полагаю, в многопроцессорных системах, чтобы CPU1 мог уведомить CPU2, чтобы тот обновил кэш инструкций (аппаратно). Еще есть такое пояснение: https://developer.arm.com/documentation/ddi0201/latest/caches/instruction-cache/instruction-cache-validity Правда, какое-то оно мутное для понимания. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 0 17 октября, 2023 Опубликовано 17 октября, 2023 · Жалоба On 10/17/2023 at 11:02 AM, repstosw said: если мы записали байт-код какой-нибудь функции в память и её нужно выполнить минуя кеш записали ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 189 17 октября, 2023 Опубликовано 17 октября, 2023 · Жалоба 6 минут назад, sasamy сказал: минуя кеш записали ? Минуя кэш инструкций, разумеется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться