Re: Detecting CPUs and cores



Lew wrote:
Daniel Dyer wrote:
What's slightly less helpful is that my Windows PC at work returns 2 from availableProcessors() despite the fact that it is single-core, albeit with Intel's Hyper-Threading.

That's not Window's nor Java's fault. The HT processor is electrically equivalent to two CPUs to the rest of the system. So are multi-core CPUs.

Here's the $64,000 question - what is the value of knowing the number of dies on which the cores reside? A "core" /is/ a CPU as far as any practical use of it goes; same for the two virtual cores seen in a HyperThreaded processor. You program them in every respect as if they were completely separate; the fact that they happen to share some real estate couldn't be less relevant.

A difference that makes no difference is no difference.

Well, yes: But it *does* make a difference. The difference
doesn't arise from the die layouts per se, but from attributes
that tend to go along with them. The cores may share resources
in ways that interfere and make their "computational power" non-
additive. Intel's hyperthreaded chips, for example, share a
single execution unit and a single path to memory; only one "CPU"
at a time can initiate an operation on either resource. Similar
remarks apply to Sun's T1 processor; the thirty-two "strands"
share eight execution units, one on-chip cache, and one floating-
point unit, but multiplex across four memory channels.

The differences make a difference -- but taking proper account
of them is far more involved than simply counting cores or chips.
You need to get into the architecture of what's shared and what
isn't, which components can run in parallel and to what degree,
and so on. This is well outside the scope of what cross-platform
Java is equipped to handle; one would need a lot of supplementary
information to make sense out of whatever number one obtained.

--
Eric Sosman
esosman@xxxxxxxxxxxxxxxxxxxx
.



Relevant Pages

  • Re: Performance improvement using X5355 over 5080
    ... would expect to get by swapping 2 x Xeon 5080 3.73GHz Dual-Core CPUs with 2 x Xeon X5355 2.66GHz Quad-Core CPUs? ... you are trading two cores which are 40% faster, ... And at time when you have load, but ony a few threads running, you lose, even if you win under max load. ...
    (comp.sys.intel)
  • Re: Performance improvement using X5355 over 5080
    ... would expect to get by swapping 2 x Xeon 5080 3.73GHz Dual-Core CPUs ... 40% faster, for four cores. ... And at time when you have load, ...
    (comp.sys.intel)
  • Re: Intel details future Larrabee graphics chip
    ... for dinky little SMP systems of 4-8 cores. ... Why multi-thread *anything* when hundreds or thousands of CPUs are ... video CPUs using fancy memory and generics doing the grunt work. ... Duo, and never get trojans, memory leaks, any of that. ...
    (sci.electronics.design)
  • Re: Scaling noise
    ... > cores, and so are trying to dispatch three instructions per clock. ... Neither of these CPUs are multi-core. ... > do branch prediction and speculative execution. ...
    (Linux-Kernel)
  • Re: Intel details future Larrabee graphics chip
    ... That is precisely how the early SMP systems worked, ... for dinky little SMP systems of 4-8 cores. ... Why multi-thread *anything* when hundreds or thousands of CPUs are ... It could be useful for 3D gaming, but even there it still makes sense to split the load across specialised dedicated video CPUs using fancy memory and generics doing the grunt work. ...
    (sci.electronics.design)