A CPU typically has several different parts.
The core of the CPU, however, is the CPU core.
These provide the actual processing power of the CPU.
A modern CPU core will consist of an array of memory split between cache, registers, and buffers.
These are used to offer high-speed storage, though the capacity is minimal.
A CPU will have one or more cores, though typically an even number.
Early designs of CPUs only used one CPU core and were fundamentally sequential in operation.
The CPU core would complete the instructions in the order it received them.
It would also fully complete each instruction before moving on to the next one.
This is a simple design, but its not very efficient.
However, having these circuits be distinct doesnt need to be as strictly linked in their actual usage.
But the performance boost is more than worth it.
Unfortunately, like everything, its not quite that simple.
This leads to a pipeline bubble or a pipeline stall.
However, this issue can be easily overcome by having a secondary pipeline in place.
This pipeline offers instructions to operate immediately if the main pipeline is otherwise halted.
This concept is marketed as SMT (Simultaneous MultiThreading) in AMD CPUs and Hyperthreading in Intel CPUs.
The secondary pipeline is essentially advertised to the operating system as another CPU core.
In the underlying CPU architecture, however, only one physical CPU core exists.
This conceptual second core is referred to as a virtual core.
Note:All consumer CPUs that utilize virtual cores only add one virtual core to each physical core.
Intels research indicates that adding a virtual core generally increases performance by 30%.
This figure, however, can vary significantly depending on the tool.
This negative scaling is generally only seen in software specifically unoptimized for virtual cores.
These types of side-channel attack vectors are pretty limited.
Nevertheless, some serious recommendations exist to disable hyperthreading and SMT for security reasons.
Conclusion
A virtual core is not a CPU core at all.
Instead, it is a second pipeline connected to the same physical CPU core.
When the actual processing unit would otherwise be sitting idle, it takes instructions from the second pipeline.