For anyone who is looking for more detailed explanation: HT is a technology to utilize empty bubles on pipeline. On a pipelined processor instruction goes through multiple hardware pipeline stages to get executed. Not every instructions use every stage of pipelines, which creates unused pipeline stage bubles on execution (parts of core hardware). HT rearranges code instructions on software level to execute another instruction which uses the empty pipeline stages but not the ones already utilised back to back. So for CPU performs fuller by utilizing all the pipeline stages. Since you can’t execute the next instruction of the same thread most of the time, you can effectively only utilize another thread. That’s why you will see CPU exposing itself as a multicore processor to the operating system, which by the way requirea OS to support such technology. Performance gain by this optimisation is generally %10-30, depending on pipeline bubles on the executed code at the time. Those threads would run nearly simultaneously on the instruction level, together but slightly shifted on pipeline level. The extra core you see is just scavenging of the non utilized hardware parts of the physical core.
For a deeper explanation, each single instruction utilizes specific CPU registers per clock cycle, while other registers go unused. These registers perform tasks and output info to subsequent registers for further logical operations and outputs. That is basically the instruction pipeline within CPUs. What the CPU, BIOS, and operating system does, is allow for the insertion of code for multiple instructions into a single instruction, which will therefore use more CPU registers. The output is then a single 64-bit instruction (for x64), but the OS will separate the secondary instruction from that single instruction. So, for an 8 bit CPU, instead of, for example, two instructions of 11110000 and 10110000. You can have 11111011 (1111 + 1011) as one instruction. The system makes use of the unused bits in each 8-bit instruction to make space for an 8-bit amalgamation (combination). The system will then separate 11111011 into 1111 and 1011 for two separate instructions. The 1111000 code will progress through a pipeline unused by the 10110000 code in the 8-bit CPU, and vice versa. Therefore, there will be two instructions processed simultaneously, and two simultaneous outputs. Obviously, only the right combination of sequential instructions can be hyperthreaded, as there needs to be enough space to fit both instructions, and also, the CPU needs to be sure that the second instruction will follow a different pipeline. But even if at some point, the instruction pipelines merge, the second instruction will be further along its processing, when it gets the opportunity to merge into the other pipeline, than if it had to wait in line for the first instruction in a non hyperthreaded CPU. Anyway, I hope I explained it clearly. This should provide even further clarity on the process.
The best layman’s explanation I ever heard was: “Imagine you are in a hotdog eating contest. You have one mouth, that is your single core. Now, you have one hand tied behind your back. If you become hyper threaded, you’ll be able to use both arms again. Still just one mouth, but you can handle two instructions with your hands. Feel free to take that into the gutter if you want, I’m sure it will happen in record timing hahaha
This sounds like circular logic with all due respect to your likes. If I may parallel your example. Imagine you have one engine with two gas lines. Now imagine if one gas lines becomes blocked. Hyperthreading unblocks the gas line or does it create a third gas line? If it creates a third what ever happens to the blocked gas line? If the engine remains at two gas lines then why did one line get blocked and how does hyperthreading force the line back open again? That's where I am confused in your analogy.
@@toddvanmeter6815 I try to picture a cloak room as a core. If you have one person serving customers, a queue develops. If you have two people in one cloak room serving, you reduce the queue. Also, each person's request is independent of the others. If one person's request is blocking, the next person (via scheduler) can go to the other line. Also, if the owner of the cloak room teaches his/her workers to be smarter (from experience) - there may be preemptive efficiencies adopted to move the requests through faster (cache).
You are changing lives dude! Idk how you do it, but when you talk, it sticks and it's clear as daylight! KEEP IT UP! I appreciate your vids so freaking much man!!!!
Glomo Absolutely! I felt the exact same way when I found this channel about 10 months ago. I then preceded to binge-watch 40+ videos over a few days lol 😂 The thing is, I've been an IT Consultant for over 16 years, and this channel & content is still educational for me. That's the best part; the content is well structured, well presented, and beneficial to those with experience AND without. Cheers! -H.B.
@@techotopo _cool story bro._ You are, without a doubt, the epidemy of the Dunning-Kruger effect. I suppose you 'just know' everything auto-magically, and pitty us mere mortals who still learn things. Or even worse, ENJOY knowledge. *fasepalm*
this channel is so underrated. Simpel but great information, good animation and no screaming or 'funny stuff' in the animation. Well done guys! You should have a lot more likes and subscribes thumbs up
Thank god. Your the only person who made me understand hyperthreading. Other people were explaining it WAY too fast. But you kept it simple and spoke clearly and calmly.
You should have noted that hyper-threading doesn't directly translate to "two times" the physical CPU's performance without hyper threading. But other than that, it was a great video.
I just saw a run cmd shirt for sale. I saw the same shirt for sale at microcenter. Here i thought these videos were made by one guy. Looks like this is the official channel of a major organization.
finally i am glad i got some techy who explains the hectic terms in much simpler words and with better presentation.THANK YOU so much for all your efforts.
This would be my first comment on any video ever!..but your videos are too good not to be appreciated. Thank you for making complexity sound so simple both through your videos and through your voice.
Oh man! You won't believe how very much I've learned on this Channel without a single video from this channel I had to watch as many videos i wish this will the biggest channel on RUclips 👍
Enabling hyper-threading can diminish performance, depending on how you are using your computer. Here is why: With hyper-threading enabled, each virtual core has ½ of the capacity of the physical core (that was split into two virtual cores). So, if you are running a single application (that is not designed to run over multiple cores or multiple threads -- and there are countless applications like this), then that application will run at ½ speed, because it will be able to use only one core (and that one core is now a virtual core, which is ½ of the actual physical core). Just about any modern CPU has a minimum of 2 cores, and very likely 4 (or more) cores. These are real, physical cores. This means that your applications can consume 100% of a core's processing power, and the remaining cores will be yawning. So in this example, hyper-threading has no value. Unless you are running multiple applications, that specifically take advantage of all of your cores, then hyper-threading is unnecessary. In fact, enabling hyper-threading is giving your computer more overhead. Hyper-threading must, itself, be maintained, and uses resources. In the days of single-core CPUs, where a single application could tie up (or even lock up) your computers, then hyper-threading made sense (while one virtual core is fully busy, the other core is available to, for example, kill the run-away process that is hogging the system). For home users, I cannot think of an advantage to enabling hyper-threading. I see only performance hits. For a business, there are probably legitimate uses. But even in a server room, the business would likely split their processing load over multiple servers. Also note that with today's operating systems, it would be very difficult to bring your computer to its knees. Today's 64 bit operating systems, with (real physical) multi-core CPUs, are processing multiple threads, anyway. Cheers!
You are The one I was searching for last 2 years … @PowerCert Animated Videos Please make more videos on network connections and network traffic (incoming & outgoing) and also on CPU vs Memory usage and how it is calculated etc.
@referral madness not really since it used different instruction set compared to the main cpu, it was very similar to mmx and 3dnow on pentium and amd k6 chips respectively. The vector units on the ps2 emotion engine could count since vu0 could act as a Co-processor or a dedicated vector processor
Additionally, AMD's earlier FX series of processors (Bulldozer/Zambezi and Piledriver/Vishera architecture) use hybrid cores that each individually have an integer unit, but share a floating-point unit with another core. Windows sees the shared floating-point units, calling them "physical cores," and sees the individual integer cores, calling them "logical cores."
@referral madness He should just have reinforced the aspect that i criticized, as an educative video he needs to be carefull about it to not give the wrong impression afterall an enourmous amount of "noobs" will learn from it.
@@MarceloTezza Okay, "expert". Why not you help us all here by explaining it a bit. Not everyone watches this video is enrolling in electronic engineering courses. Simple explanation like this helps us "noobs" understand a bit about computers we are buying.
@@MarceloTezza "Hyper threading is the act of taking a core and hyper threading it so it's now hyper threaded" then repeated 40 times. "Don't forget, when you take 1 core and hyper thread it, you now have 2 so your OS sees 2 logical cores since it's been *magically* hyperthreaded". What a waste of 4 minutes.
@@Sgtcanadian The code needs to be multi threaded to begin with, thats the whole point of my comment hyper thread alone will not make code hyperthreaded nor transform a single threaded code in a higher performing one.
Excellent set of 48 videos. The 1thing left is making a video on different types of processors/cores like i3,i5,i7 + generations of processors like 5th Gen , 7th Gen , 10th Gen along with differences on both. Please make such a video so that our knowledge on basic computer stuff is complete.
hyperthreading only works when there is enough headroom left over for virtual cores to be used. if your cpu's are maxing out at 100% hyperthreading will not be utilized because there is no headroom left over.
thanks a lot whoever u are your channel helped me a lot to understand different confusion about different topics I am preparing for CompTIA A+ 202 -1001 I feel much more confident and its all thanks to your knowledge sharing I have a request that if you can further make more videos on Comtia A+ 202-1002 Windows server and CompTIA other certifications such as Network + and security. thanks best regards Muhammad Bilal
Gratulations! You are really very very good and professional! You explain everything so crystal-clear and understandable! I got it now finally after 2 years of studying with your help. Thanxx for everything, man.
I find this video misleading. The graphic shows doubling of outputs with each pulse (instruction?) resulting in two outputs (answers?) -this is completely wrong. Modern computing often results in a pileup of commands or instructions to the processor that wait for processing. Some instructions are longer and some involve getting information from other devices -memory, discs, or even the network. If a processor has one thread it can't do anything but wait for what it needs to finish an instruction. If it has more threads it can interrupt the one that is waiting for data and work on another instruction. A correct graphic would show a bin of instructions that gets filled with threads taking instructions that have external calls causing waits. The hyperthreaded alternative has more threads and more production by reduced wait time.
weird I didn't find this very helpful. It's the basics, but I need to know how it works to determin if the processor has any advantages when HT is disabled.
Benni3D explained it way better than the video and quicker. Every 5 seconds the video was repeating him repeating himself about the same thing he just said
Well Ra Mand... I gotta tell ya, I found this VERY helpful tho. You see, I'm no top notch computer builder nerd guy, but after 20 years of tinkering with computers, this kinda stuff does turn me on (even tho I dont know where I'll apply this knowledge at yet) LOL - Its just good to know
It depends on your use case. Hyperthreading means two threads are sent through a single pipeline. Having more than one thread is advantageous in itself, if the program allows, but Hyperthreading is most advantageous if: 1. If there are unused resources in the execution core. 2. If the pipeline is not running at full IPC (instructions per clock). One instruction per clock being the highest current architectures can handle. 3. If the software has a second thread available. So if the program that you want to run, runs your CPU at 0.5 IPC, half of your execution core is idle and a second independent thread exists, then Hyperthreading makes most sense. Games, typically, do not fall in that category.
yeah, i thought there had to be a catch22 there... making the same core process two or more threads can't just magically mean performance is always better and you can keep adding more and more processes. there's a limit, and i figure resource-intensive applications [like games] would be it. the other gotcha is programs designed to be multi-threaded don't work well on processors that aren't, or can't run so many threads. minecraft finally became basically unplayable on my desktop because of that. i really wish devs would better consider when and if to use these fancy innovations and maybe work within limits like the old school developers did. just like pushing hardware acceleration, trying to make it mandatory. bad shaders can cause considerably worse issues than slow software rendering, which just slows/hangs the process usually. [besides it's absolutely a myth that even a 3D rendering system strictly requires them to have any performance.]
@0:23 "In other word, you can run multiple application at a time" From what I read in the internet From android studio developer.. Not only one application will use one thread .. In fact one thread can have two different applications using it.. One activity i.e a class can have its own thread for the same application, which means many threads exist for one application.. That is because if another application want to use the activity(meaning the class) of that thread it can access it faster compared to when running an application in a single thread.. That is as far as I can understand Correct me if I am wrong
You don't need individual applications to demand it for you to benefit. Long before HT or multicore existed existed there was contention from multiple processes simultaneously demanding constrained resources. Advances in process scheduling was necessary to give the impression of simultaneous multi-tasking
For a deeper explanation, each single instruction utilizes specific CPU registers per clock cycle, while other registers go unused. These registers perform tasks and output info to subsequent registers for further logical operations and outputs. That is basically the instruction pipeline within CPUs. What the CPU, BIOS, and operating system does, is allow for the insertion of code for multiple instructions into a single instruction, which will therefore use more CPU registers. The output is then a single 64-bit instruction (for x64), but the OS will separate the secondary instruction from that single instruction. So, for an 8 bit CPU, instead of, for example, two instructions of 11110000 and 10110000. You can have 11111011 (1111 + 1011) as one instruction. The system makes use of the unused bits in each 8-bit instruction to make space for an 8-bit amalgamation (combination). The system will then separate 11111011 into 1111 and 1011 for two separate instructions. The 1111000 code will progress through a pipeline unused by the 10110000 code in the 8-bit CPU, and vice versa. Therefore, there will be two instructions processed simultaneously, and two simultaneous outputs. Obviously, only the right combination of sequential instructions can be hyperthreaded, as there needs to be enough space to fit both instructions, and also, the CPU needs to be sure that the second instruction will follow a different pipeline. But even if at some point, the instruction pipelines merge, the second instruction will be further along its processing, when it gets the opportunity to merge into the other pipeline, than if it had to wait in line for the first instruction in a non hyperthreaded CPU. Anyway, I hope this provides sufficient clarity on how this works, at a deeper level.
Even after spending a huge time researching for a good video I was not able to found any good explanation on this topic . Until I found yours video which is so simple yet so up to the point. Thanks a ton. God bless you .
@referral madness No it is not, SMT is a way for a CPU to more efficiently schedule and execute instructions from multiple threads. SSE is where a single instruction operates on a large amount of data. SMT can allow you to run many instructions from various threads while the CPU is waiting to execute the SSE.
@referral madness SSE = Streaming SIMD Extensions aka Streaming Single Instruction Multiple Data Extensions. I am not a programmer and do not know how much SSE there is in any given game or any software, nor how often it is used.
Hyper threading increases the throughput of the CPU. This helps when the CPU is the performance "bottleneck", but provides negligable benefit if the "bottleneck" is elsewhere. Many multi-threaded applications may have other bottlenecks, especially transfering data between memory and the CPU cache. In these cases, more threads or more cores provide little benefit.
"Lighter applications such as loading a web page, you're not gonne see much of an advantage of having a hyperthreaded cpu" Google Chrome: Hold my beer, im about to end this man whole career.
Good video and animation. But there is a deceiving message that hyperthreading doubles the performance of the processor which is wrong. At best the average improvement in performance is about 25%.
I remember before logical cores they talked about processing data on both the upswing and down swing of a clock cycle. and then were able to even increase the operations to up to 4 tasks per clock cycle. I wonder if this is some what the same thing.
So if your CPU was doing a task at 40% capacity, it could delegate the remaining 60% that's free to work on another task? So old CPUs would only work on that first task until completion even though it's only working at 40% capacity, whereas modern CPUs can do multiple tasks at the same time if they have the capacity to do it?
Bad description and wrong animation (f/ex. in thread outputs numbering). You didn't explain/show where CPU gets extra thread (clue: on task switching), and didn't note that virtual SMT-thread lives not so long (only until cached instructions are over), in comparision with physical SMP-thread.
This video only scratches on the surface what hyper threading really is. And the animations can be misleading. Hyperthreading is more a kind of splitted scheduling. And to clarify one thing: While this really eliminates wasted time, it also reduces single core performance, since it is splitted. Don't fix me on that numbers, but to give you a perspective: This means that hyperthreading increases the multi core performance from 100% to 150% but reduces the single core performance from 100% to 50%. Depending on the work load this is a slowdown. And this is a reason why the current i7-9700K performs so good without hyper threading. To be honest i would have expected something about the scheduling of instrcutions from this video.
Why does the hyper-thread make physical core more efficient? I’m curious about the advantage compared to other optimization technologies such as Pipeline or Superscalar.
Take a look at a superscalar design. A superscalar design takes advantage of micro parallelism within most code. But those opportunities for running opcode in parallel are irregular and a bit of a hit or miss issue. The root issue is data dependency between many of the opcodes. That data dependency prevents a superscalar design from being able to issue 2, 3, or even 4 opcodes per clock cycle. Now, take that same superscalar design, double the number of architectural registers, to include an extra program counter. Now have both program counters, with their associated registers issue opcodes to the code at the same time. Those two streams of opcodes DO NOT have any data dependencies between each other, so they can both execute at the same time within the superscalar core. Both opcode streams will still have periodic bursts of extra parallelism as most cost exhibits, but sometimes, full advantage of exposed parallelism can't be taken advantage due to processing resources being consumed by the other thread. So basically, hyperthreading depends upon a superscalar core, which in turn relies on pipelines. All it does is allow the superscalar core to stay more active and hence perform more work by providing it with two independent opcode streams that don't have any data dependencies between each other.
Question. If one thread is being executed and the scheduler pauses it for some other thread (time slice), can that same thread continue execution on another core? In other words, are threads mapped to specific core through its entire life-time?
Under the most optimal situation, it increases the performance of up to 30%. However most of the times it will even decrease performance since if tasks are designed to run on, for example, 4 threads in an 8 hyperthreaded logical cpus. you are actually running it on only 2 cores (4 threads) and not the four physicall cores leading to decreased performance.
The Optiplex desktop I had about ten years ago had a Pentium 4 with hyperthreading capability. I turned it on but never noticed any difference in performance.
Superb video! So clearly explained. Buy then, all of your videos are just fantastic. I am going through your Network+ course right now to prepare for the CompTIA exam. It is really helpful. You do so many of these. How do you do it? I am amazed!
But this actually also means that this way, running of a single processes could be slower if two process run at the same time because they share the resources?
Dude, how do you not understand. if you have a single core.... you only have one to work with with hyperthreading.... 1 core (2threads) the 2nd core is virtual which makes it 2 cores in total. One Real and One Virtual. Best way to put it.... 4 cores vs 4 cores 8 threads with 4 cores you only have 4 cores and windows only see 4 with 4 cores 8 threads.... windows is seeing 4 cores and another 4 virtually. so basically... 4 cores 8 threads is 8 cores in total. 4 real and 4 virtual because of HT or SMT
@@dareason7581 Thanks for the reply but I think you got it all wrong. I know how HT works and btw it's not how you explained it, in HT there is no such thing as real core and virtual core, it's all virtual cores in it the OS see virtual cores which each 2 maps to single physical core. And the CPU will manage how to translate the work load on the virtual cores to the physical core. So in reality HT doesn't create and additional computing power but it rather allows to share computing power among tasks and minimize waiting time for competing tasks. This is great for running multiple different tasks simultaneously, but it will have no benefit in running single huge task such as video encoding or files compression. This is what I hope a video will explain to people in easy to understand language.
Hi PowerCert Animated Videos, Thank you for your explanation in this video. Now I'm getting clear with hyper threading meaning. I really want you to explain about what is core and thread in the processor. I hope you will take sometime to create another video with this request. I would appreciate that. I love your channel. Thank you!
Intel did not "develop" Hyperthreading. It is a feature from server processors and eventually came over from the server world. In servers a single core can have 4 threads per core (or maybe more), however, not on x86/64.
So does this mean, lets say a 4 core CPU running at 4Ghz, would perform like an 8 core CPU running at 2GHz, when hyeprthreading is used? I've always been a little fuzzy on this.
so Basically a double threaded cpu, but those double threads are faster... than just standard threads.. so more efficient, able to worker faster and better than non hyperthreading. 2 cores, but the system reads as being 4 cores... (logical cores virtual). I think they should call it Super Threading, because its like 2 cars, but turned into 2 lamboghini threads... (upgraded threads), even though its 4 threads, it acts as an upgraded double thread...
For anyone who is looking for more detailed explanation: HT is a technology to utilize empty bubles on pipeline. On a pipelined processor instruction goes through multiple hardware pipeline stages to get executed. Not every instructions use every stage of pipelines, which creates unused pipeline stage bubles on execution (parts of core hardware). HT rearranges code instructions on software level to execute another instruction which uses the empty pipeline stages but not the ones already utilised back to back. So for CPU performs fuller by utilizing all the pipeline stages. Since you can’t execute the next instruction of the same thread most of the time, you can effectively only utilize another thread. That’s why you will see CPU exposing itself as a multicore processor to the operating system, which by the way requirea OS to support such technology. Performance gain by this optimisation is generally %10-30, depending on pipeline bubles on the executed code at the time. Those threads would run nearly simultaneously on the instruction level, together but slightly shifted on pipeline level. The extra core you see is just scavenging of the non utilized hardware parts of the physical core.
nice explanation. was wondering how 1 core can work on 2 tasks simultaneously.
this was exacly what i was looking for. thanks
For a deeper explanation, each single instruction utilizes specific CPU registers per clock cycle, while other registers go unused. These registers perform tasks and output info to subsequent registers for further logical operations and outputs. That is basically the instruction pipeline within CPUs. What the CPU, BIOS, and operating system does, is allow for the insertion of code for multiple instructions into a single instruction, which will therefore use more CPU registers. The output is then a single 64-bit instruction (for x64), but the OS will separate the secondary instruction from that single instruction. So, for an 8 bit CPU, instead of, for example, two instructions of 11110000 and 10110000. You can have 11111011 (1111 + 1011) as one instruction. The system makes use of the unused bits in each 8-bit instruction to make space for an 8-bit amalgamation (combination). The system will then separate 11111011 into 1111 and 1011 for two separate instructions. The 1111000 code will progress through a pipeline unused by the 10110000 code in the 8-bit CPU, and vice versa. Therefore, there will be two instructions processed simultaneously, and two simultaneous outputs. Obviously, only the right combination of sequential instructions can be hyperthreaded, as there needs to be enough space to fit both instructions, and also, the CPU needs to be sure that the second instruction will follow a different pipeline. But even if at some point, the instruction pipelines merge, the second instruction will be further along its processing, when it gets the opportunity to merge into the other pipeline, than if it had to wait in line for the first instruction in a non hyperthreaded CPU. Anyway, I hope I explained it clearly. This should provide even further clarity on the process.
@@thatfirstoneonly 1 month ago but a perfect response, thank you
@@thatfirstone But are there any drawbacks on enabling Hyper Threading on BIOS? Intel will be ending it soon, so that's why I was wondering.
The best layman’s explanation I ever heard was:
“Imagine you are in a hotdog eating contest. You have one mouth, that is your single core. Now, you have one hand tied behind your back. If you become hyper threaded, you’ll be able to use both arms again. Still just one mouth, but you can handle two instructions with your hands.
Feel free to take that into the gutter if you want, I’m sure it will happen in record timing hahaha
That is really helpful! Thank you:)
This sounds like circular logic with all due respect to your likes. If I may parallel your example. Imagine you have one engine with two gas lines. Now imagine if one gas lines becomes blocked. Hyperthreading unblocks the gas line or does it create a third gas line? If it creates a third what ever happens to the blocked gas line? If the engine remains at two gas lines then why did one line get blocked and how does hyperthreading force the line back open again? That's where I am confused in your analogy.
that was told by linus!
@@toddvanmeter6815 I try to picture a cloak room as a core. If you have one person serving customers, a queue develops. If you have two people in one cloak room serving, you reduce the queue. Also, each person's request is independent of the others. If one person's request is blocking, the next person (via scheduler) can go to the other line. Also, if the owner of the cloak room teaches his/her workers to be smarter (from experience) - there may be preemptive efficiencies adopted to move the requests through faster (cache).
beautifully explained.
The OS magnifying glass bit was genius. I love it, you rock!
Thanks. That was the most time consuming part to make.
You are changing lives dude! Idk how you do it, but when you talk, it sticks and it's clear as daylight! KEEP IT UP! I appreciate your vids so freaking much man!!!!
I've found a gold mine channel!
Glomo I agree, incredibly thankful for this channel. I’m learning a shitload.
Glomo Absolutely! I felt the exact same way when I found this channel about 10 months ago. I then preceded to binge-watch 40+ videos over a few days lol 😂
The thing is, I've been an IT Consultant for over 16 years, and this channel & content is still educational for me. That's the best part; the content is well structured, well presented, and beneficial to those with experience AND without.
Cheers!
-H.B.
I thought that its a new generation sewing machine.
@@humanbeing_ this stuff is very very basic and superficial, it's actually sad that it can be educational for someone with 16 years of exp
@@techotopo _cool story bro._ You are, without a doubt, the epidemy of the Dunning-Kruger effect. I suppose you 'just know' everything auto-magically, and pitty us mere mortals who still learn things. Or even worse, ENJOY knowledge. *fasepalm*
this channel is so underrated.
Simpel but great information, good animation and no screaming or 'funny stuff' in the animation.
Well done guys! You should have a lot more likes and subscribes
thumbs up
Thank god. Your the only person who made me understand hyperthreading. Other people were explaining it WAY too fast. But you kept it simple and spoke clearly and calmly.
The video explains what hyper-threading is perfectly. This channel is worth its weight in gold!!!
You have the best videos I have not found a person that can compare to your videos, We need teachers like you.
You should have noted that hyper-threading doesn't directly translate to "two times" the physical CPU's performance without hyper threading.
But other than that, it was a great video.
I just saw a run cmd shirt for sale. I saw the same shirt for sale at microcenter. Here i thought these videos were made by one guy. Looks like this is the official channel of a major organization.
Am so lucky to land on this channel !!! Holy cow how is the knowledge even free ??
CompTIA is a non-profit trade association.
@Poff Nada Dick.
@Poff Nada Smooth Brain
finally i am glad i got some techy who explains the hectic terms in much simpler words and with better presentation.THANK YOU so much for all your efforts.
While in the task manager, 3:50 you can right click on the CPU graph and show all threads and their utilization percentage.
This would be my first comment on any video ever!..but your videos are too good not to be appreciated. Thank you for making complexity sound so simple both through your videos and through your voice.
Thank you :)
I appreciate your videos and the way there presented so precisely man, i passed my 901 because of you!
Thank you. Congrats on passing your exam!
Thank you for the Video, Good Explained!
Thank you :)
Oh man! You won't believe how very much I've learned on this Channel without a single video from this channel I had to watch as many videos i wish this will the biggest channel on RUclips 👍
Enabling hyper-threading can diminish performance, depending on how you are using your computer.
Here is why:
With hyper-threading enabled, each virtual core has ½ of the capacity of the physical core (that was split into two virtual cores).
So, if you are running a single application (that is not designed to run over multiple cores or multiple threads -- and there are countless applications like this), then that application will run at ½ speed, because it will be able to use only one core (and that one core is now a virtual core, which is ½ of the actual physical core).
Just about any modern CPU has a minimum of 2 cores, and very likely 4 (or more) cores. These are real, physical cores.
This means that your applications can consume 100% of a core's processing power, and the remaining cores will be yawning. So in this example, hyper-threading has no value.
Unless you are running multiple applications, that specifically take advantage of all of your cores, then hyper-threading is unnecessary. In fact, enabling hyper-threading is giving your computer more overhead. Hyper-threading must, itself, be maintained, and uses resources.
In the days of single-core CPUs, where a single application could tie up (or even lock up) your computers, then hyper-threading made sense (while one virtual core is fully busy, the other core is available to, for example, kill the run-away process that is hogging the system).
For home users, I cannot think of an advantage to enabling hyper-threading. I see only performance hits.
For a business, there are probably legitimate uses. But even in a server room, the business would likely split their processing load over multiple servers.
Also note that with today's operating systems, it would be very difficult to bring your computer to its knees. Today's 64 bit operating systems, with (real physical) multi-core CPUs, are processing multiple threads, anyway.
Cheers!
What about Animation CGI VFX and 3D Gaming programming?
@@RiversBliss I do not know.
Very Nicely Explained
You are The one I was searching for last 2 years …
@PowerCert Animated Videos
Please make more videos on network connections and network traffic (incoming & outgoing) and also on CPU vs Memory usage and how it is calculated etc.
I haven't turned off adblocker to support someone in a while. this is a great channel
Crystal clear educative video on CPU core. Many thanks.
Amazing channel I am studying for A + and your explanation style is better than any book I am reading to study. Thank you!! God Bless!!
Hyperthreading came before dual core CPU so it's slightly historically inaccurate. HT was introduced in Pentium 4 single core processors.
did you watch after 3:20 ?
@referral madness not really since it used different instruction set compared to the main cpu, it was very similar to mmx and 3dnow on pentium and amd k6 chips respectively. The vector units on the ps2 emotion engine could count since vu0 could act as a Co-processor or a dedicated vector processor
hyper threading is named by intel, the same technology is named SMT by amd.
Additionally, AMD's earlier FX series of processors (Bulldozer/Zambezi and Piledriver/Vishera architecture) use hybrid cores that each individually have an integer unit, but share a floating-point unit with another core. Windows sees the shared floating-point units, calling them "physical cores," and sees the individual integer cores, calling them "logical cores."
This explanation was perfect and the visual representations really enhanced the material as well. Thanks so much.
This is the exact channel which I am looking for!! Best for learning core concepts!! Great job!! Keep posting!!
What a nice explanations of CPU features. Subscribed and thumbs ups for you. Thanks from Venezuela.
I think that was way too simplistic, and gave visually somewhat the ideia that the CPU core is able to divide 1 thread in 2 threads...
@referral madness He should just have reinforced the aspect that i criticized, as an educative video he needs to be carefull about it to not give the wrong impression afterall an enourmous amount of "noobs" will learn from it.
@@MarceloTezza Okay, "expert". Why not you help us all here by explaining it a bit. Not everyone watches this video is enrolling in electronic engineering courses. Simple explanation like this helps us "noobs" understand a bit about computers we are buying.
@@aizat27 Just read what i wrote, its enough...
Noob.
@@MarceloTezza "Hyper threading is the act of taking a core and hyper threading it so it's now hyper threaded" then repeated 40 times. "Don't forget, when you take 1 core and hyper thread it, you now have 2 so your OS sees 2 logical cores since it's been *magically* hyperthreaded".
What a waste of 4 minutes.
@@Sgtcanadian The code needs to be multi threaded to begin with, thats the whole point of my comment hyper thread alone will not make code hyperthreaded nor transform a single threaded code in a higher performing one.
Nobody can teach better than this way keep it up bro
Excellent set of 48 videos. The 1thing left is making a video on different types of processors/cores like i3,i5,i7 + generations of processors like 5th Gen , 7th Gen , 10th Gen along with differences on both. Please make such a video so that our knowledge on basic computer stuff is complete.
hyperthreading only works when there is enough headroom left over for virtual cores to be used. if your cpu's are maxing out at 100% hyperthreading will not be utilized because there is no headroom left over.
exactly!
beautifully explained well, I always find this channel explainer video worth to watch.
I don't think this video explains anything about the technology.
Yes I was expecting some more details...but still it was good to start with.
when he mentions the reduction in cpu idle time, kinda explains it in a very basic manner. More independent instructions in the cpu pipeline.
I love your videos, the way how you explain stuff in your videos makes it easy to understand
This is easily the best tech channel on youtube by my standards
Thank you
I love your vids man, currently self though computer engineering 17 yrs old. Just to learn new things and skills. Anyways thank you very much
Such a simple, crystal clear explanation ... thanks a lot for all your efforts and time ...
Every single time I see your video, I just have one word for you “awesome” !!! Plz keep up the good work!!!
Thanks :)
thanks a lot whoever u are your channel helped me a lot to understand different confusion about different topics I am preparing for CompTIA A+ 202 -1001 I feel much more confident and its all thanks to your knowledge sharing I have a request that if you can further make more videos on Comtia A+ 202-1002 Windows server and CompTIA other certifications such as Network + and security. thanks best regards Muhammad Bilal
God damn that's a good video. Subbed
You're explaining is best.
I’ve watched several videos on CPUs, threads, cores, etc etc and I liked this one the best. I loved the graphics
Gratulations! You are really very very good and professional! You explain everything so crystal-clear and understandable! I got it now finally after 2 years of studying with your help. Thanxx for everything, man.
This doesn't explain how hyper threading works.
YOur videos are life saver don't stop making ; please make more videos on networking topics and all
Awesome clear and concise instructions as always, along with first class animations! Where were you when I was in school? Lol
You have an excellent way of showing us how these work! Thank you!!!
Absolutely brilliant!
Very informative.. thankyou for your videos, finaly! "somebody who knows how to explain things" well done sir! (subscribed)
awesome explanation. the best IT tutor followed by Professor Messer
I find this video misleading. The graphic shows doubling of outputs with each pulse (instruction?) resulting in two outputs (answers?) -this is completely wrong.
Modern computing often results in a pileup of commands or instructions to the processor that wait for processing. Some instructions are longer and some involve getting information from other devices -memory, discs, or even the network. If a processor has one thread it can't do anything but wait for what it needs to finish an instruction. If it has more threads it can interrupt the one that is waiting for data and work on another instruction.
A correct graphic would show a bin of instructions that gets filled with threads taking instructions that have external calls causing waits. The hyperthreaded alternative has more threads and more production by reduced wait time.
Your videos are just perfect. Keep posting!
simply gold -- this channel
Would like more about how it achieves what it does. It makes one core behave like 2, but how?
weird I didn't find this very helpful. It's the basics, but I need to know how it works to determin if the processor has any advantages when HT is disabled.
Benni3D explained it way better than the video and quicker. Every 5 seconds the video was repeating him repeating himself about the same thing he just said
Well Ra Mand... I gotta tell ya, I found this VERY helpful tho.
You see, I'm no top notch computer builder nerd guy, but after 20 years of tinkering with computers, this kinda stuff does turn me on (even tho I dont know where I'll apply this knowledge at yet) LOL - Its just good to know
It depends on your use case. Hyperthreading means two threads are sent through a single pipeline.
Having more than one thread is advantageous in itself, if the program allows, but Hyperthreading is most advantageous if:
1. If there are unused resources in the execution core.
2. If the pipeline is not running at full IPC (instructions per clock). One instruction per clock being the highest current architectures can handle.
3. If the software has a second thread available.
So if the program that you want to run, runs your CPU at 0.5 IPC, half of your execution core is idle and a second independent thread exists, then Hyperthreading makes most sense.
Games, typically, do not fall in that category.
yeah, i thought there had to be a catch22 there...
making the same core process two or more threads can't just magically mean performance is always better and you can keep adding more and more processes. there's a limit, and i figure resource-intensive applications [like games] would be it.
the other gotcha is programs designed to be multi-threaded don't work well on processors that aren't, or can't run so many threads. minecraft finally became basically unplayable on my desktop because of that.
i really wish devs would better consider when and if to use these fancy innovations and maybe work within limits like the old school developers did. just like pushing hardware acceleration, trying to make it mandatory. bad shaders can cause considerably worse issues than slow software rendering, which just slows/hangs the process usually. [besides it's absolutely a myth that even a 3D rendering system strictly requires them to have any performance.]
Because this guy is saying bullshit:) he knows nothing about hyperthreading
@0:23
"In other word, you can run multiple application at a time"
From what I read in the internet
From android studio developer..
Not only one application will use one thread ..
In fact one thread can have two different applications using it..
One activity i.e a class can have its own thread for the same application,
which means many threads exist for one application..
That is because if another application want to use the activity(meaning the class) of that thread it can access it faster compared to when running an application in a single thread..
That is as far as I can understand
Correct me if I am wrong
This is my favourite channel at the moment. even better I have i7 4790, si i can say it is close to the i7 4790k used as example.
You don't need individual applications to demand it for you to benefit. Long before HT or multicore existed existed there was contention from multiple processes simultaneously demanding constrained resources. Advances in process scheduling was necessary to give the impression of simultaneous multi-tasking
This channels is brilliant. Informative content and clear explanation. Keep uploading more videos please
For a deeper explanation, each single instruction utilizes specific CPU registers per clock cycle, while other registers go unused. These registers perform tasks and output info to subsequent registers for further logical operations and outputs. That is basically the instruction pipeline within CPUs. What the CPU, BIOS, and operating system does, is allow for the insertion of code for multiple instructions into a single instruction, which will therefore use more CPU registers. The output is then a single 64-bit instruction (for x64), but the OS will separate the secondary instruction from that single instruction. So, for an 8 bit CPU, instead of, for example, two instructions of 11110000 and 10110000. You can have 11111011 (1111 + 1011) as one instruction. The system makes use of the unused bits in each 8-bit instruction to make space for an 8-bit amalgamation (combination). The system will then separate 11111011 into 1111 and 1011 for two separate instructions. The 1111000 code will progress through a pipeline unused by the 10110000 code in the 8-bit CPU, and vice versa. Therefore, there will be two instructions processed simultaneously, and two simultaneous outputs. Obviously, only the right combination of sequential instructions can be hyperthreaded, as there needs to be enough space to fit both instructions, and also, the CPU needs to be sure that the second instruction will follow a different pipeline. But even if at some point, the instruction pipelines merge, the second instruction will be further along its processing, when it gets the opportunity to merge into the other pipeline, than if it had to wait in line for the first instruction in a non hyperthreaded CPU. Anyway, I hope this provides sufficient clarity on how this works, at a deeper level.
I love your videos, so simple and easy to understand unlike others who talk ridiciously fast for anyone to understand what is being said.
Even after spending a huge time researching for a good video I was not able to found any good explanation on this topic . Until I found yours video which is so simple yet so up to the point. Thanks a ton. God bless you .
Thanks :)
I like this presentation it is very easy to understand every single word u say. Clear explaination, keep it up brother !
The technology itself is technically called Simultaneous Multithreading. Hyperthreading is just Intel's name for it.
@referral madness No it is not, SMT is a way for a CPU to more efficiently schedule and execute instructions from multiple threads. SSE is where a single instruction operates on a large amount of data. SMT can allow you to run many instructions from various threads while the CPU is waiting to execute the SSE.
@referral madness SSE = Streaming SIMD Extensions aka Streaming Single Instruction Multiple Data Extensions. I am not a programmer and do not know how much SSE there is in any given game or any software, nor how often it is used.
Please do SMT or simultaneous multi threading!
Hyper threading increases the throughput of the CPU. This helps when the CPU is the performance "bottleneck", but provides negligable benefit if the "bottleneck" is elsewhere.
Many multi-threaded applications may have other bottlenecks, especially transfering data between memory and the CPU cache. In these cases, more threads or more cores provide little benefit.
Nice video! Thanks! At 2:09, does "logical" and "virtual" in the context of hyper threading mean exactly the same?
Very good explanation, thank you a lot
"Lighter applications such as loading a web page, you're not gonne see much of an advantage of having a hyperthreaded cpu"
Google Chrome: Hold my beer, im about to end this man whole career.
Good video and animation. But there is a deceiving message that hyperthreading doubles the performance of the processor which is wrong. At best the average improvement in performance is about 25%.
He explained that.
Thanks for the vid - nice clean explanations -
I remember before logical cores they talked about processing data on both the upswing and down swing of a clock cycle. and then were able to even increase the operations to up to 4 tasks per clock cycle. I wonder if this is some what the same thing.
But how does the core physically execute instructions at double the speed i don't get that.
It takes advantage of the idle time of the core, you don't really get another full core for free.
So if your CPU was doing a task at 40% capacity, it could delegate the remaining 60% that's free to work on another task?
So old CPUs would only work on that first task until completion even though it's only working at 40% capacity, whereas modern CPUs can do multiple tasks at the same time if they have the capacity to do it?
Bad description and wrong animation (f/ex. in thread outputs numbering). You didn't explain/show where CPU gets extra thread (clue: on task switching), and didn't note that virtual SMT-thread lives not so long (only until cached instructions are over), in comparision with physical SMP-thread.
This video only scratches on the surface what hyper threading really is. And the animations can be misleading. Hyperthreading is more a kind of splitted scheduling. And to clarify one thing: While this really eliminates wasted time, it also reduces single core performance, since it is splitted. Don't fix me on that numbers, but to give you a perspective: This means that hyperthreading increases the multi core performance from 100% to 150% but reduces the single core performance from 100% to 50%. Depending on the work load this is a slowdown. And this is a reason why the current i7-9700K performs so good without hyper threading. To be honest i would have expected something about the scheduling of instrcutions from this video.
You are the best explainer.
Perfect Explanation. Thank you so much
Why does the hyper-thread make physical core more efficient?
I’m curious about the advantage compared to other optimization technologies such as Pipeline or Superscalar.
Take a look at a superscalar design. A superscalar design takes advantage of micro parallelism within most code. But those opportunities for running opcode in parallel are irregular and a bit of a hit or miss issue. The root issue is data dependency between many of the opcodes. That data dependency prevents a superscalar design from being able to issue 2, 3, or even 4 opcodes per clock cycle.
Now, take that same superscalar design, double the number of architectural registers, to include an extra program counter. Now have both program counters, with their associated registers issue opcodes to the code at the same time. Those two streams of opcodes DO NOT have any data dependencies between each other, so they can both execute at the same time within the superscalar core. Both opcode streams will still have periodic bursts of extra parallelism as most cost exhibits, but sometimes, full advantage of exposed parallelism can't be taken advantage due to processing resources being consumed by the other thread.
So basically, hyperthreading depends upon a superscalar core, which in turn relies on pipelines. All it does is allow the superscalar core to stay more active and hence perform more work by providing it with two independent opcode streams that don't have any data dependencies between each other.
Question. If one thread is being executed and the scheduler pauses it for some other thread (time slice), can that same thread continue execution on another core? In other words, are threads mapped to specific core through its entire life-time?
Under the most optimal situation, it increases the performance of up to 30%. However most of the times it will even decrease performance since if tasks are designed to run on, for example, 4 threads in an 8 hyperthreaded logical cpus. you are actually running it on only 2 cores (4 threads) and not the four physicall cores leading to decreased performance.
you are the best. Simple, direct and clear.
your explanation is great
The Optiplex desktop I had about ten years ago had a Pentium 4 with hyperthreading capability. I turned it on but never noticed any difference in performance.
Superb video! So clearly explained. Buy then, all of your videos are just fantastic. I am going through your Network+ course right now to prepare for the CompTIA exam. It is really helpful. You do so many of these. How do you do it? I am amazed!
Thanks! The software I use are powerpoint and macromedia fireworks.
But this actually also means that this way, running of a single processes could be slower if two process run at the same time because they share the resources?
Thanks for the great video, but I hoped for better explanation of how really HT increase performance vs single core with no HT.
Dude, how do you not understand.
if you have a single core.... you only have one to work with
with hyperthreading.... 1 core (2threads) the 2nd core is virtual which makes it 2 cores in total. One Real and One Virtual.
Best way to put it....
4 cores vs 4 cores 8 threads
with 4 cores you only have 4 cores and windows only see 4
with 4 cores 8 threads.... windows is seeing 4 cores and another 4 virtually. so basically... 4 cores 8 threads is 8 cores in total.
4 real and 4 virtual because of HT or SMT
@@dareason7581 Thanks for the reply but I think you got it all wrong. I know how HT works and btw it's not how you explained it, in HT there is no such thing as real core and virtual core, it's all virtual cores in it the OS see virtual cores which each 2 maps to single physical core. And the CPU will manage how to translate the work load on the virtual cores to the physical core. So in reality HT doesn't create and additional computing power but it rather allows to share computing power among tasks and minimize waiting time for competing tasks. This is great for running multiple different tasks simultaneously, but it will have no benefit in running single huge task such as video encoding or files compression. This is what I hope a video will explain to people in easy to understand language.
Outstanding explanation again, thank you, like to hear more.
Wonderful. Please do a video on Turbo Boost.
Hi PowerCert Animated Videos, Thank you for your explanation in this video. Now I'm getting clear with hyper threading meaning. I really want you to explain about what is core and thread in the processor. I hope you will take sometime to create another video with this request. I would appreciate that. I love your channel. Thank you!
Your videos are great! They help me a lot! Thank you for your work!
Manuel Alvarez hey man how you doing remember me?
Intel did not "develop" Hyperthreading. It is a feature from server processors and eventually came over from the server world. In servers a single core can have 4 threads per core (or maybe more), however, not on x86/64.
Curious about what extra hardware is added to a core to support hyperthreading.
I love this channel! Please don't stop making great educational videos..Is the best out there hands down....
Cheers!
Ok but what does logical mean? It would have been important to explain actually how it works
So does this mean, lets say a 4 core CPU running at 4Ghz, would perform like an 8 core CPU running at 2GHz, when hyeprthreading is used? I've always been a little fuzzy on this.
so Basically a double threaded cpu, but those double threads are faster... than just standard threads.. so more efficient, able to worker faster and better than non hyperthreading. 2 cores, but the system reads as being 4 cores... (logical cores virtual). I think they should call it Super Threading, because its like 2 cars, but turned into 2 lamboghini threads... (upgraded threads), even though its 4 threads, it acts as an upgraded double thread...
Thanks for the clear explanation.
IT MADE MY COMPUTER SLOWER. TURNING IT OFF MADE IT FASTER
MUY BUENA EXPLICACION,THANK.
Super Explaination...