Кэши используют данные (и код) фактов locality .
Таким образом, встроенная система, не обладающая локальностью, не получит выгоду от кэша.
Пример:
Встроенная система имеет 1 МБ памяти и 1 КБ кэша.
Если эта встроенная система обращается к памяти с помощью коротких переходов, она будет долго оставаться в той же области памяти размером 1 КБ, которая может быть успешно кэширована.
Если эта встроенная система прыгает в разных удаленных местах в пределах этого 1 МБ и делает это часто, то нет никакого местоположения, и кэш будет использоваться плохо.
Также обратите внимание, что в зависимости от архитектуры у вас могут быть разные кэши для данных и кода или один.
Более конкретный пример:
Если ваша встроенная система тратит большую часть своего времени на доступ к одним и тем же данным и (например) работает в узком цикле, который поместится в кеше, то вы используете кеш в полной мере.
Если ваша система представляет собой нечто вроде базы данных, которая будет извлекать случайные данные из любого диапазона памяти, то кеш не может быть использован в полной мере. (Поскольку приложение не показывает локальность данных / кода.)
Другой, но странный пример
Иногда, если вы строите критически важную для безопасности или критически важную систему, вы хотите, чтобы ваша система была очень предсказуемой. Кэширование делает выполнение вашего кода очень непредсказуемым, потому что вы не можете предсказать, кэшируется ли определенная память или нет, поэтому вы не знаете, сколько времени потребуется для доступа к этой памяти. Таким образом, если вы отключите кеш, это позволит вам более точно оценить производительность вашей программы и рассчитать время выполнения в худшем случае. Вот почему в таких системах обычно отключают кэш.