Aren't separate instruction and data caches inappropriate for ARM architecture?
The ARM compilers make good use of PC-relative pools for local variables, but doesn't this then mean that the same physical locations are going to end up in two caches effectively wasting half of the available cache memory? In other words, the same code and data will be in both I and D cache.
Surely a simple 'memory' cache is all that's required with the option to lock down a region or two; why the distinction between code and data when both will always be in the same physical area?
Is there a good reason for forcing this, apparently, grossly inefficient design choice?
Tim