The only microcontroller I have used with a cache in which I wanted to be particularly careful about fast responses was a Freescale MPC5674F. This has two cpus (which can be run independently, or in lock-step), each with their own cache. It could hardly be called easy-to-use, but is a very powerful device. Cache lines can be locked in different ways, and you can do all sorts of fiddling with different rules for different memory areas (such as making some parts uncached, some parts write-back, and some parts write-through).
For more "normal" microcontrollers, such as fast M3/M4 cores with caches, you won't usually get quite as many features like that. But you will always have a solid chunk of static RAM (perhaps /all/ the onboard ram) that can be accessed quickly without caching - you put your critical routines and data there, and enable caching for everything else (in flash, off-chip ram, etc.).
Higher-end micros such those as the Cortex R or PPC cores (like the MPC5764F) will also have some fast-access ram even if the main onboard ram is slower than the cpu. Sometimes this will be combined with the cache - you can configure all or some of the cache to be static ram. (Actually, I believe that is possible on at least some x86 cpus - I don't know details, but I have heard of them being used without any external memory!). Faster ARM cores also often have "tightly coupled" memories, that can be used for this sort of critical code and data.