2

These days we have a CPU which may comprise several Cores, and each Core may support SMT... so when the OS allocates a "processing resource" to a (software) thread (so that it can run), the question is: what do we call that "processing resource" ?

I guess Hardware-Thread is unambiguous, but a bit of a mouthful. SMT-Thread is less pencil, but not very beautiful.

I think one still talks about a thread having CPU and RAM (not Core, not recently !). But in that case, what does one call the device which comprises several Cores ?

Perhaps Processor is the right word, but that already has a more general meaning ? Or Processing-Element, still a mouthful, but at least doesn't overload Thread ?

Anyway... is there a good word for Hardware-Thread ? [Where "generally accepted" and "readily understood" are more important than "pretty".]


Hopefully this does not cross the line into a matter of opinion.

Peter Cordes
  • 328,167
  • 45
  • 605
  • 847
Chris Hall
  • 1,707
  • 1
  • 4
  • 14
  • This question might be a better fit for the [electrical engineering stackexchange](https://electronics.stackexchange.com/) site. I don't believe that questions about computer architecture are on-topic here unless you're expecting an answer that will help you to solve some specific programming problem. – Solomon Slow Feb 26 '20 at 14:13
  • @SolomonSlow: the question arises, for example, when considering Linux `cpu_set_t` -- which (one believes) are sets of "Hardware-Thread"s. In that context I think any other reading of _CPU_ makes little sense, but it would be nice if there was a generally accepted, unambiguous name. – Chris Hall Feb 26 '20 at 14:23
  • Intel might call it a *hyperthread* – Jeremy Friesner Feb 26 '20 at 14:45
  • @ChrisHall, In that case, maybe you could make the question title more specific. E.g., "How does linux [cpuset](http://man7.org/linux/man-pages/man7/cpuset.7.html) deal with hyperthreaded processors?" or something like that. – Solomon Slow Feb 26 '20 at 15:09
  • 2
    I recommend "logical processor" instead of "hardware thread". It is accurate enough, widely used, and not unnecessarily specific to a particular class of implementations. – John D McCalpin Feb 26 '20 at 17:25
  • 1
    @JohnDMcCalpin "logical processor" only works if the thread is presented as a processor (which can be convenient for software compatibility). MIPS MT Application Specific Extension does not duplicate all processor context for each thread, so a thread is not truly a logical processor ("Thread Context" is used). Even more peculiarities of sharing are possible (e.g., ASID/page table base pointer or just global page table base pointer [for ARM], some portion of registers [to hold shared pseudo-constants or for communication]). RISC-V uses "hart" for hardware thread. –  Feb 26 '20 at 17:54
  • 1
    "logical core" is pretty good. RISC-V's "hart" (hardware thread) term is good but hasn't caught on yet, and lacks the self-explanatory nature of "logical core". I like to avoid the term "thread" for hardware contexts, to avoid confusion with software threads. Especially for Stack Overflow answers where readers may be trying to understand these concepts in the first place. – Peter Cordes Jun 23 '22 at 11:56

0 Answers0