The 68060 is almost impossible to predict timing. The execution of integer code can vary from one execution to the next depending on which integer unit is currently used, how much instruction memory has prefetched, what's in the caches including now branch cache, instruction folding, etc. The Motorola engineers did not release all the information needed to make a cycle exact 68060 from the documentation.
Several years ago I coded a special fx. It does some gfx calculations then does a full screen rotation. Obviously it burns a lot of cycles so I timed it often to see how slow it was.
Each time I do the fx, I either get time A or I get a totally different and much slower Time B. I never get anything in between. Its very very confusing to me.
Sometimes the routine goes at the speed I want and other times much slower. It makes no sense. Its like it has 2 gears it can run in.
I just assumed it was either:
A: When I run the exe, the code happens to load in such a way that the code for that fx is somehow compatible with the pipeline, and other times it is somehow misaligned so that it runs much slower.
B: When I run the exe, the memory for the fx gets allocated in a manner that somehow makes a dramatic difference to the speed of the routine. Maybe a certain memory alignment works better/worse with the cache.
I don't specifically know how either of these is possible. Its just my best guess.
What I should have done was picked up the phone and said "Hey Matt why is my code acting wonky?" :biglaugh:
All my timing tests, data and documentation of this anomaly were in my history file which was lost in a hard drive gitch / brownout.
