Thread is actually a virtual processor?

Page 2 - Seeking answers? Join the Tom's Hardware community: where nearly two million members share solutions and discuss the latest tech.

Calculatron

Honorable
Apr 3, 2013
2,240
0
12,460
384
^
What he said.

Hyperthreading doesn't increase speed; just efficiency. (This seems counter-intuitive, but speed is just part of the equation of efficiency. One can do something really fast, but poorly - that is inefficient. That is also Bulldozer architecture!)

It's part of the reason why, all things being equal, an i3 isn't completely awful in comparison to an i5, even though the i5 has double the physical cores.
 

RikTelner

Honorable
Feb 28, 2014
135
0
10,680
0


Practically everything about software, physics, math and what-not can be summarized in 2 sentences. I expect that truth will be same for hardware.

 

Powerbolt

Honorable
Oct 21, 2013
413
0
10,960
67




I don't know about you, but the selected "answer" doesn't look like two sentences to me. You asked a broad and very vaguely worded question, and you seem annoyed at the answers you're receiving; particularly from one individual. Stop acting like a child and have an intelligent conversation on the subject.
 
Lets dumb things down here:

A "Thread" is a software term, referring to the lowest level of execution. Essentially, a thread is a group of instructions that will be carried out in the same context. A program can have one to many threads. Odds are, your PC has several hundred, if not over a thousand, active as we speak.

A classical CPU core can execute one thread at a time. Some architectures however can execute multiple threads per core. The total throughput you get depends on the architecture and instruction load. Lesser forms of SMT (Simultaneous Multi-Threading) will only use a second thread on a core if the resources it needs aren't being used, adding very little to overall throughput. Some forms of SMT, however, duplicate almost all the CPU execution resources, so throughput essentially doubles. Some arches, such as IBMs POWER8, support more then two threads per core; in POWER8's case, EIGHT logical threads can be run per CPU core, thanks to SMT.

In any case, the Operating System, assuming SMT support, will always see the number of LOGICAL cores, which, if the CPU uses SMT, will be larger then the number of PHYSICAL cores. An Intel 2600k, for instance, is a quad core chip with Hyperthreading, which allows two threads to run per core. Windows and other OS's see the CPU as having EIGHT cores as a result. AMD's CMT operates much the same way. If you disabled HTT, the OS would see the 2600k as having FOUR cores.

To answer the second question: It depends. If the chips are two different architectures, then you can't know the answer, because maximum theoretical performance depends on several factors:

1: How many cycles CPU can perform per second (Clockspeed)
2: How many instructions per cycle the CPU can perform, on average (ICP)
3: How many physical cores the CPU has
4: How many logical cores the CPU has
5: The IPC gained when using the logical cores
6: The workload of the task who's performance you are measuring.

Typically, only the first and third are known for certain. Taking the classical case of Intel's Ivy Bridge versus AMD's Piledriver, you end up with many cases where a quad core chip running at 3GHz will beat an octo core chip running at 4GHz. Why? Because Intel's superior IPC ends up making up the performance difference, even though Piledriver offers more cores at a higher clock speed.

When comparing chips within the same CPU architecture however, you can typically assume more cores at a faster speed equates to a faster chip.
 

Pinhedd

Polypheme
Moderator


That's a fair question, one that I glossed over above.

I'd like to direct your attention to the lovely image courtesy of Anandtech,

http://www.anandtech.com/show/6355/intels-haswell-architecture/8

The buttons at the bottom allow you to switch between the mapping of execution units to execution ports for the Nehalem/Westmere, Sandybridge/IvyBridge, and Haswell microarchitectures.

Those execution ports, and accompanying execution units, are characteristic of the superscalar microarchitectures mentioned above.

The goal of microarchitecture efficiency is to issue instructions to each of these execution ports as frequently as possible. You may notice that ports 0,1, 5, and 6 all have scalar Integer ALUs on them. To keep things simple, these are the execution units that do the bulk of a program's arithmetic operations, so having plenty of them available is essential. Intel's Haswell has 4 of these per core shared dynamically between two threads, whereas AMD has only two of these per core dedicated to a single thread. This is one of the largest contributing factors to the performance discrepancy between Haswell and Piledriver.

In any given cycle it is rather tough for the backend to issue instructions to all 8 execution ports using only a single thread. There are many reasons for this, many far too technical to summarize in a forum post so I'll just skip over them for now. Increasing the number of threads increases the likelihood of the backend being able to issue an instruction to a given port in a given cycle, which over time increases efficiency.
 

RikTelner

Honorable
Feb 28, 2014
135
0
10,680
0
I don't know about you, but the selected "answer" doesn't look like two sentences to me. You asked a broad and very vaguely worded question, and you seem annoyed at the answers you're receiving; particularly from one individual. Stop acting like a child and have an intelligent conversation on the subject.
Before telling me how I have to behave, look first at his posts. I'm trying to get answers, someone explained this, someone expaneded this then I still don't understand a part, and then some guy offers me not-cheap book when he could easily answer the question? I'm child here? I don't need non-sense posts, he started Off-topic twice in this thread. Then you show up, without nothing and call me a kid. Intelligent conversation can't prolong here, as long as he'll remain here asking why water is wet.



Practically everything about software, physics, math and what-not can be summarized in 2 sentences. I expect that truth will be same for hardware.
[/quotemsg]
Yes, pretty something like that, and hey, look at that, without your interference.:

A "Thread" is a software term, referring to the lowest level of execution. Essentially, a thread is a group of instructions that will be carried out in the same context. A program can have one to many threads. Odds are, your PC has several hundred, if not over a thousand, active as we speak.

In any case, the Operating System, assuming SMT support, will always see the number of LOGICAL cores, which, if the CPU uses SMT, will be larger then the number of PHYSICAL cores. An Intel 2600k, for instance, is a quad core chip with Hyperthreading, which allows two threads to run per core. Windows and other OS's see the CPU as having EIGHT cores as a result. AMD's CMT operates much the same way. If you disabled HTT, the OS would see the 2600k as having FOUR cores.
Well, these aren't "two sentences" but I do understand it and I hadn't pay 200 bucks for a book. Thank you.

@pinhedd You used hardware-jargon, I don't understand greater part of it. And I also don't get (understand) the image.
 

ASK THE COMMUNITY

TRENDING THREADS