"virtually-indexed and physically-tagged" ???
How does this compare to ARM, that uses the cache and the MMU completely in the "wrong" order (strictly using physical addresses in the cache). Because of that, ARM-Linux needs to flush the cache completely with any task-switch. That is why for ARM systems with many task switches, not using the MMU is recommended.
I sincerely hope that such a drastic method is not necessary with NIOS !
Happily, I myself am planing a heavily
multithreaded system, so not that many MMU reprogramming (and cache invalidating) as with a heavily
multitasking system. Same is only possible with MMU, as the non-MMU-compiler does not support TLS, which is essential to do decent multithreaded applications.
-Michael