Другой возможный ответ заключается в том, чтобы каждый раз при запуске вещи, чувствительной к содержимому кэша, использовался совершенно другой раздел памяти. Тогда ни один из этих битов памяти не будет в кеше, и, по сути, кэш будет очищен.
Конечно, это может быть не очень легко управляемое решение для кэша команд, только для кэша данных, и даже в этом случае обработка стека будет сложной задачей.
И я не могу придумать, как этот подход мог бы работать надежно для кеша TLB, если вы заботитесь об этом.
И еще одна проблема, связанная с этим подходом, заключается в том, что все еще могут быть грязные строки кэша, и более поздний запуск кода повлечет за собой затраты на их сброс в основную память.