Does Hyper-Threading make a difference?

Status
Not open for further replies.

drthrd

Distinguished
May 4, 2010
103
0
18,690
The i7-3770K is $100 more than the i5-3570K. I was wondering if the Hyper-Threading in the i7-3770K made much of a difference. Sometimes I do run office apps and do video editing. Not sure how many games and programs actually use Hyper-Threading now these days. And not sure if the trend of programs is to use Hyper-Threading more and more. Is it really worth $100 more?
 

InvalidError

Titan
Moderator

Games can barely leverage more than 2-3 threads/core for the most part. Unless video editing, 3D rendering and other tasks that tend to be more heavily threaded account for a significant chunk of your workload then no, i7 is not worth the expense.

Multi-threaded or multi-cored CPUs have been around for nearly 10 years and games have barely started leveraging that. It is likely going to take many years longer for game programmers to effectively leverage quad-core.
 

bwrlane

Distinguished
Oct 5, 2010
449
0
18,860
For games, hyperthreading is of no benefit on quad core chips. Dual core i5s and i3s probably do benefit.

Hyperthreading is also of no benefit in general use, as all modern CPUs are already fast enough. The one exception to this is if you are an extreme multitasker and have many apps demanding the CPU's attention simultaneously.

Hyperthreading earns its spurs in video editing, where you will get about a 20% performance improvement.
 



Very nice. I agree with malmental....

+1

Right now at least with Intel® processors quad cores seem to be the sweet spot for price and performance. Once you start to move up into something a little heavier like video editing you find that additional cores and/or hyper-threading becomes useful.


Christian Wood
Intel Enthusiast Team
 

josejones

Distinguished
Oct 27, 2010
901
0
18,990
What are some software programs that would benefit most from hyper-threading? Apps like Adobe CS4, 5 and now 6? I'm not much of a gamer but, I'm planning on getting the i7 3770 for the work that we do in our small business and we use stuff like CS often for a variety of work projects including video editing and rendering. We do lots of multi-tasking as well.
 

voodooking

Distinguished
Mar 2, 2012
298
0
18,810
I still don't understand why games aren't multi-threaded. It was explained to me a while back in an obscure way. The way he made it sound is that they can't be programmed to utilize the architecture. That can't be right because some games use muti-threading.

Also does anyone know where I can read up and learn more about multi-threading?

Thanks.
 
Probably the most common type of program that anyone uses which can take advantage of Hyper Threading (HT) is file compression like WinRAR, 7-Zip, WinZip, etc... However, how many times do you compress files?

Regarding office related work... financial modelling using Excel can benefit from HT, but unless that is your primary use there is not real need for HT. Also, Ivy Bridge CPUs have an updated AVX instruction set which can also improve performance in financial and scientific modelling; again not a big deal if you do not do financial modelling.
 

bwrlane

Distinguished
Oct 5, 2010
449
0
18,860


Yes, these are classic cases of apps that benefit from hyperthreading. If you use premiere pro, photoshop, after effects or Vegas, you will find an i7 significantly more powerful than an i5. Actually, for apps like premiere pro where you need to do real time editing with multi layer effects, it makes sense to get all the CPU you can.
 

bwrlane

Distinguished
Oct 5, 2010
449
0
18,860


Games are multi threaded but increasing the thread count is really difficult.

You can easily do a sort of "threading lite" where each thread looks after a different task, but that's not where the real benefit of threading lies.

The real benefits come from parallelising the heavy lifting like the AI and the geometry calculation. Logically (and obviously), you cannot multi thread code which contains branch dependencies, because the code you execute depends on the outcome of the last code you executed. Games are really difficult to program in a threaded way because so much is dependent on contingent issues like user input and random variables.

Much of the art of developing threaded code is about identifying all the elements of the program that are not interdependent, or contingent, and parallelising them. It's also about going through the workflow with a fine tooth comb and identifying where dependencies exist that aren't needed.

Also, remember that the game engine has to be developed for the lowest common denominator. That's the Xbox, which has a triple core AMD processor. Optimising an Xbox game for more threads to run on other hardware is a major re-engineering task.

I speak not as a programmer but rather, as someone who thinks about the logic of software development and optimisation, so I may be quite wrong.
 

voodooking

Distinguished
Mar 2, 2012
298
0
18,810
@ Bwrlane.

Thank you for that thoughtfull reply. Now I understand what is going on a little more. It's a shame that programmers can't find a way to pre-load items that players might use as they are playing. Shure the player might not use what is pre-loaded in all of the cores but they are probably going to use one. If it's pre-loaded then the task is already done. It then speeds up the process when the player executes their decision. The cores that were then dedicated to the pre-loading are reloaded based on what the players move was. Is that even possible?
 

InvalidError

Titan
Moderator

In supercomputing, it boils down to how much additional work extra threads can do VS how much additional time threads ends up wasting to synchronize the additional threads at critical points.

AI, physics and scene animation are relatively easy to parallelize but they all depend on external inputs and the effects of those other inputs (player/network/server) are highly conditional so even if you parallelize everything else, everything still ends up stalled by the interactive thread.

Everything is tightly coupled to everything else so everything ends up waiting for the weakest link.
 

bwrlane

Distinguished
Oct 5, 2010
449
0
18,860


Yes, I understand this kind of logic is what parallel programming is all about. I'm not sure it works in the case of loading items because loading isn't CPU limited and CPU cores can't be used for storing data.

But you can indeed parallelise an inherently serial task by processing a branch of code on the basis of an educated guess on the output of the code that logically precedes it.
 
The programmers are MUCH more concerned about getting a game to run well on low end systems. They won't optimize a game/program for a top end hardware if it means losing millions in sales to people who have mid-range or low-end systems.
 

Geoff Rose

Honorable
Jul 17, 2013
1
0
10,510


I work in a financial organisation and I have found hyper threading has been making Excel report out of resources - so I would say it makes a negative difference!
 

stevemadden

Honorable
Nov 8, 2013
1
0
10,510
well, hyperthreading share 1 core for 2 processes .. meaning each process get only 50% of core power (assuming same work load for both thread, right ? so it seams useless and better have a program run on 2 cores full speed rather than 1 core half speed for each thread ! Am I wrong ? BTW, what happen when using 1 process only , is the core will keep the 50% ressource reserved and limit the said process ? please enlight me ! Thanks

some elements of answers on this link:
http://bitsum.com/pl_when_hyperthreading_hurts.php
 

spacer93

Reputable
Mar 6, 2014
1
0
4,510


I'm a bit surprised no one has yet responded to your question. A processor executes an instruction only if all the resources required for the instruction are immediately available, i.e., the instruction itself, all the inputs, the output(s) are free, and the unit to execute the instruction is not executing some other instruction. For instance, the processor might have taken a branch and now has to fetch an instruction somewhere else or an input has to first come from memory (DRAM), or, say, the floating point divide unit is currently busy.

If one thread is waiting for all the resources to free up, the processor can execute another thread that is ready to go. A surprising fraction of the time the processor is waiting for something, so having more than one thread increases the likelihood that at least one thread isn't waiting for something and can be executed.

In the past processor designs went to great lengths to minimize down time like branch prediction, but each feature added has diminishing returns. Rather than go all out on such mechanisms, it's cheaper (fewer transistors) to put in simpler processors that do threading or even multiple processors instead of just one.

It's not too hard to come up w/ examples where threading hurts you, such as where the data needed for one thread to run efficiently just fits in cache. Adding another thread here at least partially negates the benefit of having the cache.

Hope this helps.
 

FX6350

Honorable
Feb 12, 2014
106
0
10,710
Hyperthreading is useless in games, it's not real cores, they use the unused space in the pipelines. In some cases, disabling hyperthreading will actually improve game performance.
 

jacobian

Honorable
Jan 6, 2014
206
0
10,710


When you run two threads, the hyperthreading can help you with optimizing which instruction thread gets to run at the moment. For example, if the thread needs to access something in memory, the CPU stalls, meaning it waits for data to be fetched. At this point the second thread can take over. So you may see slight benefits from hyperthreading. I have seen benchmarks showing improvements in speed from 0 to 30%, so it depends on application.


One totally wrong question is certainly "do games use hyperthreading". The application does not need to do anything special to use hyperthreading. Hyperthreading will be used if there enough threads. The main problem with hyperthreading is whether the application can use enough threads to load all the cores, and then the gain can still be tiny. This is specially apparent if you compare Core i5 and Core i7. To get the little advantages of HT, you need 8 threads instead of 4. Some applications will struggle to use 8 threads effectively.
 

brownbrady

Reputable
Mar 20, 2014
1
0
4,510
A Hyper-Threading enabled core can potentially execute 2 threads faster than 1 physical core without HT. This is because many of the internal microarchitectural hardware resources are shared between the two threads. Going back to the poster's analogy of eating with 2 hands: the task of grabbing the ketchup from across the table to squirt some on your food, then placing it back where it was would take place twice in a non-HT core, whereas it would only have to take place once in an HT-enabled core. HT creates fewer execution units resulting in increased throughput. Of course, the programmer has to have written the program to use best practices for utilizing Intel's HTT (i.e. threads should not compete for the same resources, minimizing thread synchronization, etc.).
 

Monkey Fiend

Reputable
May 16, 2014
2
0
4,510


That's an excellent analysis. I don't know if they have that much regidity when they dev a game though... Maybe they can collapse threads when there is only a limited amount of cores available... not a programmer eather.

If it is true though, XBox One and PS4 will no longer be the weak link on the CPU front. I've looked over their archetecture. They both have two quad core CPUs.

Their GPU is another story. I laughed when I looked at their specs, XBox one's GPU can only do 1.5TFlops and the PS4 1.84 vs the 4.8 TFlops R9 290. They claim to be 4K ready but even my more powerfull R9 290 can't run games convincingly (60FPS+) in 4K without having to dumb down the textures/effects considerably... So happy to be on the PC side of the fense.
 
Status
Not open for further replies.