John said:
===============================
Wow!....Ray Luca. Was it really necessary
for you to disrespect my mother?
Here's an article from 2008:
Time Inaccurate? Change Your Battery
http://blogs.pcworld.com/tipsandtweaks/archives/006711.html
And here's another directly from Intel...
Inaccurate System Time:
http://www.intel.com/support/motherboards/desktop/sb/CS-002888.htm
The RTC keeps time for the computer, when the OS is not running.
When the OS is running, time is kept as described in the Intel article
you quoted above. The current time is stored in system memory.
It is incremented, based on "clock tick interrupts". Clock tick
interrupts have a high priority, in an attempt to prevent
other interrupts from preventing the software clock from
being serviced.
The RTC is powered by +5VSB. +5VSB is available for as long as
the switch on the back of the computer is in the "ON" position,
and A.C. is available to the PSU. The OP has stated the system is
on 24/7, which means the system has been line powered for the
interval in question. The CMOS battery is not used, when
+5VSB is available. Some diodes are used for current steering,
to prevent the battery from being loaded.
If the power supply was turned off at the back, or the
computer was unplugged, these would be times that
the RTC would run from battery power. It uses a
few microamps.
The RTC is very similar in design, to the circuit inside
a digital watch. It even uses the same 32768Hz quartz
crystal for timekeeping. (Look for a small metal cylinder,
located next to the Southbridge on the motherboard. Some
newer motherboards use crystals in a different shaped
metal can.)
(Example of a 32768Hz crystal cylinder. Other form factors are possible.)
http://www.reuk.co.uk/OtherImages/quartz-clock-1-sec-timebase.jpg
If Windows is running, then the system is not looking to
the RTC for time information. The time was copied during
boot, and after that, the time is derived from the crystal
which runs the clock generator. The clock generator provides
clock signals of various frequencies, to other components
in the system. The CPU synthesizes its core clock, based on
a signal provided by the clockgen. That is a separate
subsystem from the 32768Hz crystal used to operate the
RTC.
The clock generator quartz crystal, has a tolerance, like
all quartz crystals do. Say the value was +/-100ppm. That
would mean the locally maintained time, using the clock
tick interrupts derived from that clock, would also have
the +/-100ppm drift. That is 1 part in 10000. In a
86400 second day, that would be an up to 8 second drift.
All computers will drift to some extent, because the
tolerance is not that tight.
A clockgen from the P3 era.
http://web.archive.org/web/20060528143740/www.icst.com/pdf/ics9250-08.pdf
This is the clockgen, on my P4C800-E Deluxe motherboard with
Pentium 4 processor. It still relies on an external 14.318MHz crystal.
http://web.archive.org/web/20060528143740/www.icst.com/pdf/ics9250-08.pdf
The 14.318MHz crystal in this picture, is connected to the
clockgen. It is the basic element that determine +/-
drift while Windows is running. If the OS is prevented from
servicing (high priority) clock tick interrupts, that
can contribute to the drift, but presumably only in one
direction of drift.
http://articles.techrepublic.com.com/i/tr/cms/contentPics/t01620010112eje20_01.jpg
This is a picture of the elements involved. The diode-or
is what prevents the CMOS battery from being used, as
long as +5VSB is available. +5VSB is there, as long
as the switch on the back of the power supply is in the
ON position, and A.C. power is available.
+5VSB derived (PSU standby power) ----- diode-or +
+----> RTC <-------- 32768Hz crystal
+3.0V (CR2032 battery --------- diode-or + | usual sloppy tolerance
|
+----------------------------------------------------+
|
| +3.3/+5 running power ------------------------> Clockgen <--- 14.318MHz crystal
| | usual sloppy tolerance
| chipset
| |
| clock_tick_interrupt
| |
| | increment_the_clock
| v
+------- RTC value, copied once, at startup -----> (Windows time)
Some reasons for not using the RTC all the time
1) Interface to it is dog-slow. Not good for high precision.
2) Crystal runs at 32768 hertz, so the clock would not do a good
job of timing microsecond events.
3) A low frequency crystal is used, so when the battery is the
power source, only a few microamps are needed. Battery life
is around 3 years, if no other power is available, such as
when you store a computer in your garage.
In the above diagram, the 14.318Mhz crystal used, might suggest
the computer cannot time intervals tighter than 1/14.318MHz. The
reason that is not true, is because some of the timing elements
in hardware, time using a synthesized higher frequency clock.
The tolerance of the synthesized clock, tracks the originating
crystal. It means you can have timing measurements at bus clock
frequency, for example. The processors now, have several kinds
of timers and the like, which I've lost track of. So some pretty
small time interval events can be measured. But they should be
tracing their drift, to the source crystal.
Other peripherals have "private crystals". Some peripheral chips
need their own frequency reference, and choose not to use
synthesis from the master clockgen. But the output of these crystals,
is intended to make a particular hardware interface work at a
precise frequency, and not be a time source for software.
An example might be a crystal on a SATA controller, to set
the SATA cable datarate precisely. In this example, there
is a 25Mhz crystal next to the SIL3112. Some Ethernet PHY
interfaces do things like this as well.
http://www.thg.ru/mainboard/20021111/images/asus-sata.jpg
HTH,
Paul