user
Introduction: I am talking about intel core i 3,5 and 7 cpus where each core appears as 2 in operating systems, because of hyperthreading
I am confused as to why would I want a 3.3 GHZ core look like 2x1.65 GHZ cores? The whole parallelism of cores started when cpu manufacturers could not get past 3.4 ghz(I think it was) without the cpu blowing up, and so the idea of parallelising tasks between several cpus emerged. It was not very practical, and it still is not very practical as not all tasks can be split into several cores, but it was the only way to go.
But given that today most heavy games and programs that need cpu power do not usually go beyond one or 2 cpu cores, why are they making things worse by splitting each core into 2 as well? Really my problem with this is because I'd be playing a game(like rome 2 total war) and the game starts to lag. I open up my resource monitor, memory is free, VGA is comfortable(I sometimes kill graphics just to be sure) cpu is on 30% usage. But wait, one cpu thread is on 100%, the rest are sleeping. And if I want to make that one thread 0.4 GHZ faster I need to spend an extra 500$.
Maybe a computer engineer could enlighten me.
Tarek
hyperthreading benefits are related to 4things :
•Cache
•Branch prediction resources
•Instruction fetch and decoding
•Execution units
if these are favorable then hyperthreading is beneficial ( hyperthreading is when a single core runs two threads in contrary to multithreading when each cpu runs a single thread in each core )
Hyper-Threading is best applied to operations and applications where multiple tasks can be intelligently scheduled so there's no idle time on your processor. Tasks like video editing, 3D rendering, and heavy multi-tasking are great examples. Similarly, Hyper Threading can help a CPU push light tasks like background applications or browser windows to one processor, while heavy applications like games or full-screen video goes to another
In 2013 Intel dropped SMT in favor of out-of-order execution for its Silvermont processor cores, as they found this gave better performance
user
I just read somewhere that this can be turned off through the bios for when you need only a couple of very powerful threads.
If that is true then all is good.
Tarek
user wroteI just read somewhere that this can be turned off through the bios for when you need only a couple of very powerful threads.
If that is true then all is good.
yes most of the machines today give you the option to turn it off
alk
first off, some concepts:
- a task is a bundle of threads.
- a thread is a sequence of operations where the later operation is dependent on the latter result.
- a cpu core is a smallest independent functional unit in a cpu (an ALU is not a core).
- an application is multiple tasks that operate simultaneously to give you first the gui and then the operations the app needs to perform.
From here,
- A cpu started as a single core (by today's standards) that operated on a single thread at a time (permeative or early implementation), meaning in the pipeline only 1 thread was passing, and thus if a process is held for any reason, all the later would be delayed cause lag.
- A cpu was idle much of the time, since it was waiting for the info to become ready for the next process in the thread which is in the pipeline.
- An Application grew to be multiple threads alone, and the OS got more and more complex, and thus the cpu unable to coop with all those threads, knowing that 4 GHz was - and mostly still - a limit to the cpu speed.
- The loading times were improved by increasing the speed of RAM and HDD, but it was still not the best in efficiency, since the cpu was still waiting for info, just the waiting times were delayed and thus again the later processes and other threads were delayed.
- A cpu was improved, this time by adding a core to the cpu, and thus each core was working with a thread, and if one process was delaying 1 core, the other core would be free to operate.
- The improvement, although increased efficiency, but each execution core was still waiting for data for the process it has and still delaying later threads, that is when the idea of SMT was introduced.
- Hyperthreading is intel's SMT technology which limits SMT to 2 threads per core. It is more like virtualising most of the core components except the the main execution unit (I think that is the ALU). and thus the OS would see 2 different cores for each, since it sees all the components that make up the cpu (the OS does not handle execution units and thus does not notice if it 2 or 1).
- Hyperthreading does not halve the speeds of the cores, I am highly positive that is not true, since it works to increase efficiency and not decrease speed in favor of threads.
- A game should take advantage of all cores, were they virtual or real, and thus increase the speed of the game.
- The only negative impact, and till not still a debate, is the increase in battery consumption of SMT enabled cores.
- SMT was dropped in favor of OOE which actually does not plane process operations like SMT does, it mostly operates the closest process it can at the fastest time it can without waiting for anything.
I am not sure why what you said happens with you, but hyperthreading, I do not believe, is the cause because when there is only 1 thread at a highest priority it would be given most of the resources, so check what's running in the background while you are playing.
PS> would like to add, there is software multi processing which is where an app is designed to take advantage of multiple cores, and there is hardware multiprocessing, and that is like the SMT where the hardware is made to take advantage of multiple processes execution.
Sorry for the long post, and I may not be 100% accurate, this is from what I have studied about a year ago ...
user
Actually it can be a problem, and yes it does split the core power by 2. I did a lot of researches and ran modest benchmarks myself. Games do not multi thread well. Sure it might be able to open a thread for music, another for sound, another for ... displaying the options menu or whatever. But the main game thread, the one that runs the game logic, it usually one thread one one cpu thread, because the tasks are linear and cannot be divided, every task depends on what is before it and affects the one after it, it cannot parallel that. If you have a hexa core and you are running roem total war or guild wars 2, your game will lag, you will see one or 2 cores in task manager to 100% and the rest sleeping. For games you want more horse power in each individual cpu threads.
And yes, hyperthreading does split the cpu power, if you have a 3.3 ghz i3 like I do, you have 4 cpu threads running each around 1.6~1.7 GHZ unless you disable hyperthreading.
I disabled hyperthreading and saw the shift of pressure go from my cpu to my ssd now when playing rome 2 total war. The game ran faster and my cpu usage went from 40% to around 70 to 80 which means I am using more of it now.
I'll be replacing my i3 with an i5 with turbo boost. That should double my cpu power...
Everything you said by the way is true, hyperthreading increases efficiency, and it is said that I lose around 15% of cpu power by removing hyperthreading. And using operatign system and office tools and browsing the internet hyperthreading is useful, but it is worth it if my game can only use one thread anyway, and I will only be playing my game with no parallel task I would be boosting my game by 35%
PS: I was wrong in my first post, core i5 does not have multithreading and is a true quad, hence why it is more expensive than the i3, it packs twice the punch, and a little more since it has turbo
Tarek
multithreading is nothing but a fancy scheduler
AvoK95
user
Yup, this video sums it up.