В доку по ядру 920 про использование кэша без ММУ написано это:
If the cache is enabled with the MMU disabled, all instruction fetches are treated as
cachable. No protection checks are made, and the physical address is flat-mapped to the
modified virtual addressТак что на стадии освоения вполне можно ускоряться кэшированием и без виртуальной адресации...
Так же для ускорения крайне положительно будет включить синхронный режим шины:
Код
//i-cache
asm("MRC p15, 0, r0, c1, c0, 0");
asm("ORR r0, r0, #0x00001000");
asm("MCR p15, 0, r0, c1, c0, 0");
//sync bus
asm("MRC p15, 0, r0, c1, c0, 0");
asm("ORR r0, r0, #0x40000000");
asm("MCR p15, 0, r0, c1, c0, 0");
Сам поездил... ускорение к "просто включенному кэшу" выводит на планируемые MIPS'ы

Про DCache написано такое:
You must only enable the DCache when the MMU is enabled. This is because the
MMU translation tables define the cache and write buffer configuration for each
memory region.
Возможно как раз некогерентность кэша данных из-за этого и появилась... (т.е. ICache (у автора исходного сообщения) может совсем и не виноват).