TL;DR
Small variances like that are normal.
Technical Explanation
When a program wants to list hardware and its specifications, it can do so in one of two ways:
- Based on the specifications of the device’s model number
- Measure it
By Model Number
If it uses the model number to determine capacities like speed, size, etc., then it can do so in one of two ways:
- Using some sort of universal mapping between model number and specs
- Keeping a database of hardware model-spec
A universal mapping is essentially impossible because that would require a standard that all manufacturers would abide by, and even then, there is a limited amount of information that can be stored in the model number.
Keeping a database is also no good because the database would get pretty big, especially if multiple programs are keeping their own databases. Also, they would have to constantly be updated to account for new hardware.
By Measuring
A better way to get a devices capabilities is by asking the device itself. That way, you can be sure to have actual data about it. The problem is that even by asking the device, there are two ways it can respond:
- With specification-based data
- With measured data
The device can report capabilities that it is supposed to have based on its data-sheet specifications. For example, you can get various information about a CPU by calling the cpuid
instruction. However this information only gives you what the manufacturer has decided the CPU is capable of, not necessarily what it is actually doing.
A more accurate way to find out about a device is to actually query it directly.
For example, to find out the actual size of a hard-drive, simply send it a command to determine the its total. That way, regardless of what the model is, you can find out the exact size. With hard-drives, this is often going to be different because while the drive’s model might report “1GB”, or 1,000,000,000 bytes, if you check its size, you’ll probably find that it is actually something like 1,053,761,256 bytes because they cannot make hard-drives with exact sizes down to the byte, and often round up anyway to include spare space to compensate for bad sectors, and so on.
Likewise, a CPU’s speed will be affected by both the multiplier and the FSB. While digital data is supposed to be exact with precise numbers, the truth is that digital electronics can be affected by factors that can cause small fluctuations. The multiplier will usually not fluctuate, but the bus-speed will usually be a little higher or lower than the expected value, which in turn causes the CPU speed to be a little higher or lower than what its specifications state.
Usage
Both static and live data have their uses. Live data which shows the instantaneous information is useful for monitoring programs like the Task Manager, while static data is useful for things like the system-information screen or hardware-inventory programs.
Analysis
In your case, what has happened is that Windows measured the speeds of the cores once at boot and is reporting that for the rest of the session. If you reboot, you may see one or both cores change a little.
If you watch the live speed in a program like CPU-Z for a while, you’ll probably see it change over time, especially if the system is doing different things. It may go up a little, it may go down a little. In fact, it will likely happen to all cores.