How many cores does my Mac have?

I am confused, because when I see my mac about window, I see

enter image description here

That I have 1 Processor and 4 cores. But when I run htop, I see 8 cores

enter image description here

What am I missing?

0

6 Answers

What am I missing?

Hyperthreading. You have 4 physical cores, but 8 logical ones.

For each processor core that is physically present, the operating system addresses two virtual (logical) cores and shares the workload between them when possible.

See also the Intel data on your processor, the i7 4870HQ:

# of Cores 4

Cores is a hardware term that describes the number of independent central processing units in a single computing component (die or chip).

# of Threads 8

A Thread, or thread of execution, is a software term for the basic ordered sequence of instructions that can be passed through or processed by a single CPU core.

From a terminal you can see the difference between the number of physical processors and logical processors using sysctl:

$ sysctl hw.physicalcpu hw.logicalcpu
hw.physicalcpu: 4
hw.logicalcpu: 8
5

What you see are so called hyperthreaded cores.

For each physical core there are two hyperthreaded (or logical) cores, you can read up more about hyperthreading here

1

your CPU is an i7, so it has Hyperthreading, which presents itself to system monitoring applications by doubling the number of cores, since each can process two threads semi-simultaneously.

It has 4 physical cores and 4 logical cores giving you the total of 8 cores.

This is called Hyper-threading

1

While most of the answers here are providing the link to Wikipedia (which is correct!), I just want to list a paragraph from the same article which helped me understand how can the logical processor work.

Hyper-threading works by duplicating certain sections of the processor—those that store the architectural state—but not duplicating the main execution resources. This allows a hyper-threading processor to appear as the usual "physical" processor and an extra "logical" processor to the host operating system (HTT-unaware operating systems see two "physical" processors), allowing the operating system to schedule two threads or processes simultaneously and appropriately. When execution resources would not be used by the current task in a processor without hyper-threading, and especially when the processor is stalled, a hyper-threading equipped processor can use those execution resources to execute another scheduled task. (The processor may stall due to a cache miss, branch misprediction, or data dependency.)

Source: can you guess?

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like