No, the dual core optimizer on AMD is actually a bug fix (technically a work around for bad coding practices)
The reason is this (as CTho9305 indicated):
There is a command called "QueryPerformanceCounter" which gives the number of cpu cycles since the start of the computer.
The AMD dual cores actually run at different speeds. One core might be at 2.4ghz, the other at 2.3999999999999ghz. Also if you have CoolNQuiet turned on, it reduces the speed of the CPU based on usage so the different cores can move at different speeds at any given second.
That said,
If you have a program with multiple threads, which most programs do today for increased in speed on dual core systrems, and you call that command to see how many cycles have elapsed, the different cores can be out of sync. You can't use the numbers from other threads as that causes problems. Thread 1 might say we are on cycle 1000 at the start of an operation, then if we are animating artwork such as a character on screen in a game, you have to move the the animation based on time. So, if you have another thread which is performing that math on the animation and it reads the current time so it knows what to move and how far, it may say its at cycle 990. Due to the cores running at different speed. So how did we go back in time 10 cycles? From the start of the operation?
The dual core optimizer changes that command "QueryPerformanceCounter" to move the timing away from the cores, and bases it off the north or south bridge of the computer, which is a single core so to speak so the numbers never get skewed.
Intel has always done this way to begin with. It was a shortcut on AMD to get better performance so the command didn't have to jump from CPU to north bridge to southbridge and back. However, it requires any calls to QueryPerformanceCounter to always be used from the same thread. Not all software is written that way so they made the optimizer to change it. The optimizer is actually a deoptimizer.
I know thats whats going on, because I've ran into that problem personally with games I've programmed, so I know exactly what command it is and why it was doing it.
