cvs commit: src/sys/amd64/amd64 identcpu.c src/sys/i386/i386
jkim at FreeBSD.org
Mon Oct 17 12:14:54 PDT 2005
On Monday 17 October 2005 02:50 pm, David O'Brien wrote:
> On Mon, Oct 17, 2005 at 02:30:40PM -0400, Jung-uk Kim wrote:
> > Just for the people who still don't understand:
> > Physical/Logical cores: 1/2 -> single core with HTT
> > Physical/Logical cores: 2/2 -> dual core without HTT
> > Physical/Logical cores: 2/4 -> dual core with HTT
> > BTW, I just committed the following because this commit broke it:
> > http://docs.freebsd.org/cgi/mid.cgi?200510171551.j9HFpSRY074364
> > Now the per-CPU information is like this:
> > Logical cores: 2 -> single core with HTT
> > Physical cores: 2 -> dual core without HTT
> This is the AMD case - this is what I [tried to] fixed.
> The correct output for my system is "Physical cores: 4".
Wrong. That's not per-CPU information.
> This is also given by:
> FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
> so what additional information is being given to the user?
Because users want to know whether they are using two dual-core CPUs
or four CPUs. It is NOT redundant information.
> A 1P/2C Athlon64 X2 system is identical to a 2P/1C Athlon-MP
> system. It is purely SMP and there is no preference to scheduling
> on either core. And one gets full performance by scheduling on both
> cores at the same time.
Sigh... No, they are NOT the same. 2P/1C can be configured as
ccNUMA. 1P/2C cannot, i.e., they share the memory controller.
> > Physical cores: 2 -> dual core with HTT (two lines)
> > Logical cores: 4
> This is the Intel case - my commit does not touch this.
> > > FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
> > > cpu0 (BSP): APIC ID: 0
> > > cpu1 (AP): APIC ID: 1
> > > cpu2 (AP): APIC ID: 2
> > > cpu3 (AP): APIC ID: 3
> > This is NOT per-CPU info.
> Please explain what you are trying to achive. AMD sets CPUID.HTT
> solely for the benfit of licensing issues of Microsoft products and
> Red Hat. The FreeBSD license does not restrict the number of CPU's
> one can use. The FreeBSD kernel should pretend CPUID.HTT isn't set.
What I am trying to achive is simple: I want to know how many physical
and/or logical cores I have in one CPU package. It has nothing to do
with Hyper-Threading in fact.
> In fact some Opteron BIOS's cause CPUID.HTT to not be set when
> using dual-core CPU's.
That's broken BIOS by the spec.
AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and
Logical Processor Count, Page 122:
'If the value of the CMP legacy bit is 1, then the value of the HTT
bit indicates the presence of multiple cores per package and the
value of the logical processor count field indicates the number of
cores per package.'
More information about the cvs-src