This only happens if the system is powered - when the system is powered down (and no power is supplied to it) and the RTC is running off the battery, time progresses at the pace you would expect it to - if the system has been shutdown (and power removed from it) for 12 hours, when you turn it on the BIOS clock thinks that it's 12 hours later than it was when you shut down. All normal.
Both Windows and Linux have their system time (the software clock) running normally, with each second being counted as a single second.
Under Windows some investigation with a little utility called ClockWatch (from http://www.beaglesoft.com/clwahome.htm), allowed me to display both the system time (the software clock) and the BIOS time (as shown here http://www.beaglesoft.com/clwabiosclock.htm). If I do this I can clearly see that every second, system time gets incremented by one second while the BIOS time gets incremented by two. Using hwclock under Linux this same behaviour can be seen.
The motherboard in question is an Asus M3A AM2+ board. I inherited this board after it's owner bricked it via a bad BIOS flash. I recovered it by manually flashing the EEPROM using the onboard SPI header. This was successful and the board runs well, but it's had this issue with the RTC every since I got it working.
So, first thing I tried was a new CMOS battery. Inserting a brand new CR2032 button cell showed no change in behaviour.
Next I tried clearing the CMOS. Successfully cleared, but still no better.
Perhaps a BIOS bug in 1206 (the version I'm running). I reflashed the BIOS back to the first release version (0301) and cleared the CMOS, still no change. I tried four more BIOS versions but all of them had the clock running twice as fast as it should.
Looking around I found an obscure forum post from somewhere (forgotten where now) suggesting that there was once an incompatibility between nVidia cards and certain ATI/AMD chipsets causing odd system clock behaviour so out went the 9600GT and in went an old S3 Virge/DX PCI video card. Still no change.
Maybe a power supply problem? Swapping out the Seasonic 550W Modular unit (fairly new) for a backup Thermaltake unit didn't help.
Okay, how about the CPU: swapping out the Athlon II X2 250 with an Athlon II X4 620 didn't help. How about we reach back in time and try a Phenom X3 8450 (which had to be used for the early BIOS version testing)? No change seen. Trying both the Athlon II X2 250 and the Athlon II X4 620 in another board showed no weird BIOS clock behaviour there.
Even tried swapping out the RAM but that didn't help either.
Looking at the SB600 datasheet (the southbridge on this board):
http://support.amd.com/us/Embedded_Tech ... b_3.07.pdf
p59, section 5.4.1 states:
The internal RTC is made of two parts: one is an analog circuit, powered by a battery VBAT, and the
other part is a digital circuit, powered by a main power VDD. Figure 5-5 shows the block diagram of the
internal RTC.
It sounds like the analog portion of the RTC is working correctly, but the digital portion isn't. Now to work out how to diagnose further...
So, that's the story. Has anyone every seen something like this?
Now I know this problem can be worked around in software by a number of different methods: syncing the BIOS clock with the system clock prior to shutdown, using NTP, etc; but I'm really curious to see if the underlying hardware can be fixed, or even to better understand what's causing this. I guess this can be put in the "intellectual curiosity" bucket
Thanks for reading! Virtual cookie for you for making it this far