Exophase
Nothing good will ever come of Exophase.
Ari64 said:What Intel does is to fuse a compare+branch into a single macro-op. This then goes into the reorder buffer and can be issued early if there are no dependencies.
Micro-up fusion for compare/branch only happens if the two are fetched consecutively, so you can already see it doesn't do anything to resolve the branch prediction. In order for something to be moved ahead of the branch w/o penalty the target has to be correctly predicted during fetch. What we're talking about is minimizing branch mispredict penalty, and that only happens by predicting the branch earlier in the fetch stream.
Ari64 said:I don't know what it does, but I assumed it was doing data prefetches (which could potentially block code fetches).
N64 emulation causes a lot of i-cache misses since doing 64-bit operations with 32-bit instructions tends to be not too good for code density. It'd be better to test this with some other software besides mupen64plus.
The test showed that in cases where icache always misses but there are separately taken paths with equal probability disabling this helped a lot. There weren't data misses involved so it had to be speculation on code paths. Since Mupen64plus has a lot of embedded code paths that aren't commonly executed it seems like it'd make sense to try it.
Last edited by a moderator: