I decided to implement a more complete
test for all permutations of X: Y: P: internal/external access,
to see if there are problems specific to one of those memory
spaces...
Here are the results (I think they are interesting).
Hatari (latest):
X:INT, Y:INT, P:INT =
16.0 MIPS = 2 cyc = 100%
X:EXT, Y:INT, P:INT =
16.0 MIPS = 2 cyc = 100%
X:INT, Y:EXT, P:INT =
16.0 MIPS = 2 cyc = 100%
X:EXT, Y:EXT, P:INT =
5.3 MIPS = 6 cyc = 67%
X:INT, Y:INT, P:EXT =
16.0 MIPS = 2 cyc = 100%
X:EXT, Y:INT, P:EXT =
8.0 MIPS = 4 cyc = 100%
X:INT, Y:EXT, P:EXT =
8.0 MIPS = 4 cyc = 100%
X:EXT, Y:EXT, P:EXT =
4.0 MIPS = 8 cyc = 75%
Falcon030:
X:INT, Y:INT, P:INT =
16.0 MIPS = 2 cyc = 100%
X:EXT, Y:INT, P:INT =
16.0 MIPS = 2 cyc = 100%
X:INT, Y:EXT, P:INT =
16.0 MIPS = 2 cyc = 100%
X:EXT, Y:EXT, P:INT =
8.0 MIPS = 4 cyc = 100%
X:INT, Y:INT, P:EXT
= 16.0 MIPS = 2 cyc = 100%
X:EXT, Y:INT, P:EXT
= 8.0 MIPS = 4 cyc = 100%
X:INT, Y:EXT, P:EXT
= 8.0 MIPS = 4 cyc = 100%
X:EXT, Y:EXT, P:EXT
= 5.3 MIPS = 6 cyc = 100%
...so I conclude there is a problem in Hatari calculating
penalties when both X: and Y: are accessed together.
however... P: access penalty for X: or Y: independently
seems to be correct.
This suggests the problem is not simply caused by
external access penalty calculation, but how those values
are derived in the first place?
D.