3 ms·
They aren't faking the number. A hyperthreaded core is two separate cores that share alu, fpu etc.
by fctorial 6y ago
They aren't faking the number. A hyperthreaded core is two separate cores that share alu, fpu etc.
- tanelpoder 6y agoI think it's more correct to say that a single core has two "sets of registers" (and I guess instruction decoders/dispatchers perhaps)... so it's a single core with 2 "execution entry points"?
- dragontamer 6y agoSkylake has 180 registers. "mov rax, [blah]" performs "rax = malloc()" from this pool of 180-registers / "the register file". Eventually, the retirement unit "garbage collects" the registers that aren't used anymore for recycling. Yeah, out-of-order processors are weird. (https://en.wikipedia.org/wiki/Tomasulo_algorithm https://en.wikipedia.org/wiki/Tomasulo_algorithm) If you have one thread that doesn't need a lot of registers for some reason (ie: most of its dependency chains are short, and it has very few memory operations), then you can have a 2nd thread eat up the ~180 registers that it wasn't using. "Sharing" the malloc pool of registers.
- jzwinck 6y agoThis is not how Intel sees it. They describe hyperthreading as a single core having two (or more, but usually two) sets of architectural state which basically means registers. It's not two cores, it is one core that can switch between two different instruction pointers. They share almost everything else apart from the APIC.