Running threads on a non hyper-threading Intel processor

1

Intel Pentium Processor E5700 (2M Cache, 3.00 GHz, 800 MHz FSB) does not have hyper-threading but it has has 2 cores so I am assuming it has 2 threads

Now if I write a heavy number crunching program that runs 4 threads simultaneously how will this E5700 processor handle 4 threads simultaneously using its 2 cores and 2 threads, compared to a processor like the Intel Core i3-3110M Processor (3M Cache, 2.40 GHz) with hyper-threading which has 2 cores but 4 threads?

Will the E5700 be slower and have bottlenecks than the i3 3110m with 2 cores but 4 threads with hyperthreading, or will everything be smooth sailing and fast on both processors without noticing anything different?

Also, can a program written with four or more threads run efficiently on a 2 core 2 thread processor or will there be errors or slowdowns?

#

ok thanks for answering the questions later I visited this site and shorter score is better for processors

http://www.cpu-world.com/benchmarks/socket_1155_multi.html

Benchmark wPrime v1.55 (32M) wPrime benchmark measures time taken to calculate square roots of numbers from 1 to 33554431. The program uses Newton's method for estimating functions.

CPU features that have big influence on results: CPU frequency, Floating-Point performance, the number of cores / threads.

CPU features that have small influence on results: memory speed, the size of internal caches.

Part number Shorter is better Result

Intel® Core™ i7-3770K Processor (8M Cache, up to 3.90 GHz) 4 cores 8 threads yes HT

6.87

Intel® Core™ i7-2600k Processor (8M Cache, up to 3.80 GHz) 4 cores 8 threads yes HT

7.57

Intel® Core™ i5-2500K Processor (6M Cache, up to 3.70 GHz) 4 cores 4 threads no HT
9.8

Intel® Core™ i3-2310 Processor (3M Cache, 2.10 GHz) 2 cores 2 threads yes HT
15.37

Intel® G860 (3M Cache, 3.00 GHz) 2 cores 2 threads no HT
22.09

#

De coder

Posted 2012-11-16T12:36:08.383

Reputation: 59

Answers

7

For some background knowledge on threading, CPU cores, and hyperthreading, you may want to read the question What are threads, and what do they do in the processor?


Now if i write a heavy number crunching program that runs 4 threads simultaneously how will this E5700 processor handle 4 threads simultaneously using its 2 cores and 2 threads

The number of threads your application requires is irrelevant - I can write a program that starts 1000 threads, and they all run at the "same" time. The key here is your operating system's scheduler, which runs each thread on a particular CPU core for a particular unit of time (the order in which the threads are run, and on what core, depends on the scheduling algorithm).

Compared to a processor like the Intel® Core™ i3-3110M Processor (3M Cache, 2.40 GHz) with hyperthreading which has 2 cores but 4 threads

It's impossible to compare the application performance with a similar processor, albeit with hyperthreading. Applications need to be specifically optimized for it (since there are still only half the number of physical cores as there are logical). In some various cases, applications may run faster with hyperthreading disabled (although many applications do benefit from it). Regardless of hyperthreading, an increase in the number of physical cores will always benefit multithreaded applications.


Lastly, you're comparing an E5700 and an i3 3110m. These are two different (not completely, but they are different) processor architectures; they have different features, and unequal pipeline lengths 1 2. There is more to consider here than just the raw number of processor cores, but for the purposes of this discussion, you can ignore them and just read what I've written above.

  1. J. De Gelas, "The Bulldozer Aftermath: Delving Even Deeper." AnandTech, pp.2.
  2. Intel® 64 and IA-32 Architectures Software Developer Manuals, Vol. 1, Ch. 2, Sec.2.3 - Intel® Core™ Microarchitecture

Breakthrough

Posted 2012-11-16T12:36:08.383

Reputation: 32 927

ok yes an application optimized for 4 cores/threads will run slower on a 2 core system because as always real cores are better than logical cores with hyperthreading and so which is better should the programmer code and set the important threads as high priority in his application or will there be errors slowdowns like that or should he leave all the threads to the OS scheduler and hope and expect that the application will run fast smoothly and correctly if the OS handles everything – De coder – 2012-11-16T14:02:00.397

@Decoder again, when you bring speed into the equation, things change. If this were a perfect world, I could have a 2-core 3.0 GHz processor that would run your program just as fast as a 4-core 1.5 GHz processor (holding all other factors constant). The job of the OS is to run the program as fast as possible with your given hardware; unless this is a real-time system (and Windows is not a real-time OS), the application will run fine (albeit somewhat slower). – Breakthrough – 2012-11-16T14:21:42.363

0

The other answers are correct that for compute bound tasks running with 4 threads on 2 cores will be slower than 2 threads. There is overhead in scheduling the threads, as well as the context switch in the cpu when the register state is switched. The one thing that does not seem to be pointed out however is that this does not hold if there is blocking I/O in those threads. In such a case it is likely that having more threads than cores will run faster, since threads will block on the slow I/O operations and allow other cpu bound portions of code to still run.

spowers

Posted 2012-11-16T12:36:08.383

Reputation: 1 065

Actually that will happen anyway even with non-HT cores. A thread that is waiting for blocking I/O does not need any place to run and will not be in a core, nor in a logical processor. Note that cores do not "have threads". Cores can run threads. A non-HT core can run one thread. An HT core, in present models, can run two threads. Threads are parts of and are owned by processes, not by cores. – Jamie Hanrahan – 2015-09-16T11:33:39.943

yes because of the hyperthreading the OS sees the 2 cores 4 logic threads as really 4 cores so it must be seeing more idle resources available so it will probably run the 2 extra threads when the other 2 are waiting for I/O – De coder – 2012-11-16T15:06:46.873