Why does it say "cpu cores : 3"
Seagate got sued and lost because Seagate's definition of "GB" (10^9) varied from Microsoft's definition of "GB" (2^30).
No modules are seen by the kernel, in fact, it's why Windows needed a patch also. If you knew anything about computer engineering and how addresses works, you would understand. It's the same thing for Atoms modules, they are seen at first as one virtual core containing two physical cores, or for Intel it can be 2 threads. The addressing is working like that, to send an instruction you need the address of the processor, which is the physical ID, then the module is seen as a core, and the core is seen a thread. That's how they adapted modules in Linux and Windows, by adapting the threading to the modules. It's getting technical from there, and you would have to know how a processor actually work, and how modules work. Like i said, the Intel Atoms have the same exact way to address the cores, by using the modules to dispatch to the cores, just like if it were threads. Just communicate with a Windows programmer and he will tell you there is no "agreement" of Windows seeing the module as a core. For addresses, it function the exact same way as threading. There's 4 addresses passed to direct the instructions to the core/thread you want. The format is Addr1->Addr2->Addr3. First is the logical processor, which is the socket, then there's the virtual processor, which can be a module or the core, then you have the physical processor, which can be a physical thread or a core. It's also why a core in a module, it can be AMD, Intel, SPARC, ARM, MIPS, it can't have a module with cores with hardware threads, because we would have to rethink the addressing entirely to include the 4th address, hence why Intel processors with cores in modules, don't have hyperthreading. That's how they made modules work, because the kernel don't make a distinction between a core or a thread, and is dispatching the load to the first address, with the second address and the third address. And yes, the kernel is software, and it's the thing controlling the hardware. Instead of ending up in a hardware thread, the instruction end up in a hardware core, the logical core (hyperthreading) is dispatching threads the EXACT same way a module is dispatching to the cores, but instead of ending up in a hardware thread, it ends up in a physical core.
So YES, modules are totally a hardware construct for the kernel, but so are also the cores. But no they are not invisible for the kernel, it's just the same thing for it, address1/2/3, that's it. The kernel is not asking the processor : "Hey, are you a core or a module?".
You remind me of the retards when hyperthreading got out, saying : "look, look, i have 8 processors", and we responded by : "no it's not processors, it's cores, and 4 of them go to the same core, but Windows see them as cores". And arguing eternally because they don't know anything of what they are talking about.
It's what we are trying to explain to you, it's working the EXACT same way as hyperthreading, but at the end, instead of having 8 "logical cores", alternating between two entries on the same physical core, it's going to a real physical core. Instead of using one thread to fill holes in the physical core by dispatching two threads in same time, it is a module dispatching two threads between two physical cores in same time in the module. It behave like hyperthreading, but it is not hyperthreading.
If you want it explained by someone being in engineering :