What is the difference between hyper-threading and multiple cores?












39















In a conversation with the network administator, I mentioned that my machine was a dual-core. He told me it was not. I brought up the task manager, went to the perfomance tab, and showed him that there are two separate CPU usage graphs. I have a quad-core machine at home and it has four graphs. He told there were two graphs on this particular machine because of hyper-threading. I used to have a hyper-thread pentium 4 processor back in the day, but I never fully understood what it meant. So what is the difference between hyper threading and dual-core? And how do you tell which one you have?










share|improve this question





























    39















    In a conversation with the network administator, I mentioned that my machine was a dual-core. He told me it was not. I brought up the task manager, went to the perfomance tab, and showed him that there are two separate CPU usage graphs. I have a quad-core machine at home and it has four graphs. He told there were two graphs on this particular machine because of hyper-threading. I used to have a hyper-thread pentium 4 processor back in the day, but I never fully understood what it meant. So what is the difference between hyper threading and dual-core? And how do you tell which one you have?










    share|improve this question



























      39












      39








      39


      9






      In a conversation with the network administator, I mentioned that my machine was a dual-core. He told me it was not. I brought up the task manager, went to the perfomance tab, and showed him that there are two separate CPU usage graphs. I have a quad-core machine at home and it has four graphs. He told there were two graphs on this particular machine because of hyper-threading. I used to have a hyper-thread pentium 4 processor back in the day, but I never fully understood what it meant. So what is the difference between hyper threading and dual-core? And how do you tell which one you have?










      share|improve this question
















      In a conversation with the network administator, I mentioned that my machine was a dual-core. He told me it was not. I brought up the task manager, went to the perfomance tab, and showed him that there are two separate CPU usage graphs. I have a quad-core machine at home and it has four graphs. He told there were two graphs on this particular machine because of hyper-threading. I used to have a hyper-thread pentium 4 processor back in the day, but I never fully understood what it meant. So what is the difference between hyper threading and dual-core? And how do you tell which one you have?







      cpu multi-core hyper-threading






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited May 7 '18 at 8:18









      Ciro Santilli 新疆改造中心 六四事件 法轮功

      3,93622734




      3,93622734










      asked Apr 20 '10 at 19:22









      Josh StodolaJosh Stodola

      3503829




      3503829






















          3 Answers
          3






          active

          oldest

          votes


















          19














          Hyper-threading exposes multiple logical cores for a single physical CPU core. In simple terms, hyper-threading makes context-switching more efficient for each CPU core.



          Dual-core chips, on the other hand, actually have two physical CPU cores which can execute different processes simultaneously.



          There are also other multi-core chips that have many more than two cores, and--as Svish mentioned--Intel's latest multi-core offerings also support Hyper-threading on all the cores.



          You can use a CPU identification utility like CPU-Z to determine how many cores you have. As you can see near the bottom of the screenshot, the CPU in this case has 2 physical cores. If the number of threads is higher than the number of cores, Hyper-threading is enabled. To-date all consumer-oriented CPUs with Hyper-threading have 2 threads per core, so if HT is enabled, the number of threads will be 2x the number of cores.



          enter image description here



          If you have an Intel CPU, you can download Intel's CPU ID utility instead.






          share|improve this answer


























          • And multi-core chips that supports hyper-threading so you get twice the amount of logical cores.

            – Svish
            Apr 20 '10 at 19:40











          • Thank! How do I tell (from within the OS) which type of CPU I have?

            – Josh Stodola
            Apr 20 '10 at 19:56






          • 2





            The UltraSparc T2+ has 8 Cores, each of which supporting 8 threads making it a 64 virtual CPUs on a single chip: en.wikipedia.org/wiki/UltraSPARC_T2

            – jlliagre
            Apr 20 '10 at 19:59











          • The way to know the CPU you have depends on the OS you are running.

            – jlliagre
            Apr 20 '10 at 20:00











          • @jilliagre: nice!

            – rob
            Apr 20 '10 at 21:00



















          15














          Hyper-threading is where your processor pretends to have 2 physical processor cores, yet only has 1 and some extra junk.



          The point of hyperthreading is that many times when you are executing code in the processor, there are parts of the processor that is idle. By including an extra set of CPU registers, the processor can act like it has two cores and thus use all parts of the processor in parallel. When the 2 cores both need to use one component of the processor, then one core ends up waiting of course. This is why it can not replace dual-core and such processors.



          See also: This question






          share|improve this answer

































            4














            Hyperthreading is a cheaper and slower alternative to having dual-cores



            TODO it is slower by how much percent in average in real applications?



            Hyperthreading is possible because modern single CPUs cores already execute multiple instructions at once with the instruction pipeline https://en.wikipedia.org/wiki/Instruction_pipelining



            The instruction pipeline is a separation of functions inside of a single core to ensure that each part of the circuit is used at any given time: reading memory, decoding instructions, executing instructions, etc.



            Hyperthreading separates functions further by using:





            • a single backend, which actually runs the instructions with its pipeline.



              Dual core has two backends, which explains the greater cost and performance.




            • two front-ends, which take two streams of instructions and order them in a way to maximize pipelining usage of the single backend by avoiding hazards.



              Dual core would also have 2 front-ends, one for each backend.



              There are edge cases where instruction reordering produces no benefit, making hyperthreading useless. But it produces a significant improvement in average.




            Two hyperthreads in a single core share further cache levels (TODO how many? L1?) than two different cores, which share only L3, see:




            • https://stackoverflow.com/questions/4802565/multiple-threads-and-cpu-cache/54018751#54018751

            • hhttps://stackoverflow.com/questions/944966/how-are-cache-memories-shared-in-multicore-intel-cpus/33510874#33510874


            The interface that each hyperthread exposes to the operating system is similar to that of an actual core, and both can be controlled separately. Thus cat /proc/cpuinfo shows me 4 processors, even though I only have 2 cores with 2 hyperthreads each.



            Operating systems can however take advantage of knowing which hyperthreads are on the same core to run multiple threads of a given program on a single core, which might improve cache usage.



            This LinusTechTips video contains a light-hearted non-technical explanation: https://www.youtube.com/watch?v=wnS50lJicXc



            The Intel Manual Volume 3 System Programming Guide - 325384-056US September 2015 8.7 "INTEL HYPER-THREADING TECHNOLOGY ARCHITECTURE" describes HT briefly. It contains the following diagram:



            enter image description here






            share|improve this answer





















            • 1





              Are you going to answer your "TODO" questions?

              – pacoverflow
              Aug 11 '17 at 17:29






            • 1





              @pacoverflow if I someday learn the answer, or if someone will edit the answer for me :-)

              – Ciro Santilli 新疆改造中心 六四事件 法轮功
              Aug 11 '17 at 19:14











            Your Answer








            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "3"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f133082%2fwhat-is-the-difference-between-hyper-threading-and-multiple-cores%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            3 Answers
            3






            active

            oldest

            votes








            3 Answers
            3






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            19














            Hyper-threading exposes multiple logical cores for a single physical CPU core. In simple terms, hyper-threading makes context-switching more efficient for each CPU core.



            Dual-core chips, on the other hand, actually have two physical CPU cores which can execute different processes simultaneously.



            There are also other multi-core chips that have many more than two cores, and--as Svish mentioned--Intel's latest multi-core offerings also support Hyper-threading on all the cores.



            You can use a CPU identification utility like CPU-Z to determine how many cores you have. As you can see near the bottom of the screenshot, the CPU in this case has 2 physical cores. If the number of threads is higher than the number of cores, Hyper-threading is enabled. To-date all consumer-oriented CPUs with Hyper-threading have 2 threads per core, so if HT is enabled, the number of threads will be 2x the number of cores.



            enter image description here



            If you have an Intel CPU, you can download Intel's CPU ID utility instead.






            share|improve this answer


























            • And multi-core chips that supports hyper-threading so you get twice the amount of logical cores.

              – Svish
              Apr 20 '10 at 19:40











            • Thank! How do I tell (from within the OS) which type of CPU I have?

              – Josh Stodola
              Apr 20 '10 at 19:56






            • 2





              The UltraSparc T2+ has 8 Cores, each of which supporting 8 threads making it a 64 virtual CPUs on a single chip: en.wikipedia.org/wiki/UltraSPARC_T2

              – jlliagre
              Apr 20 '10 at 19:59











            • The way to know the CPU you have depends on the OS you are running.

              – jlliagre
              Apr 20 '10 at 20:00











            • @jilliagre: nice!

              – rob
              Apr 20 '10 at 21:00
















            19














            Hyper-threading exposes multiple logical cores for a single physical CPU core. In simple terms, hyper-threading makes context-switching more efficient for each CPU core.



            Dual-core chips, on the other hand, actually have two physical CPU cores which can execute different processes simultaneously.



            There are also other multi-core chips that have many more than two cores, and--as Svish mentioned--Intel's latest multi-core offerings also support Hyper-threading on all the cores.



            You can use a CPU identification utility like CPU-Z to determine how many cores you have. As you can see near the bottom of the screenshot, the CPU in this case has 2 physical cores. If the number of threads is higher than the number of cores, Hyper-threading is enabled. To-date all consumer-oriented CPUs with Hyper-threading have 2 threads per core, so if HT is enabled, the number of threads will be 2x the number of cores.



            enter image description here



            If you have an Intel CPU, you can download Intel's CPU ID utility instead.






            share|improve this answer


























            • And multi-core chips that supports hyper-threading so you get twice the amount of logical cores.

              – Svish
              Apr 20 '10 at 19:40











            • Thank! How do I tell (from within the OS) which type of CPU I have?

              – Josh Stodola
              Apr 20 '10 at 19:56






            • 2





              The UltraSparc T2+ has 8 Cores, each of which supporting 8 threads making it a 64 virtual CPUs on a single chip: en.wikipedia.org/wiki/UltraSPARC_T2

              – jlliagre
              Apr 20 '10 at 19:59











            • The way to know the CPU you have depends on the OS you are running.

              – jlliagre
              Apr 20 '10 at 20:00











            • @jilliagre: nice!

              – rob
              Apr 20 '10 at 21:00














            19












            19








            19







            Hyper-threading exposes multiple logical cores for a single physical CPU core. In simple terms, hyper-threading makes context-switching more efficient for each CPU core.



            Dual-core chips, on the other hand, actually have two physical CPU cores which can execute different processes simultaneously.



            There are also other multi-core chips that have many more than two cores, and--as Svish mentioned--Intel's latest multi-core offerings also support Hyper-threading on all the cores.



            You can use a CPU identification utility like CPU-Z to determine how many cores you have. As you can see near the bottom of the screenshot, the CPU in this case has 2 physical cores. If the number of threads is higher than the number of cores, Hyper-threading is enabled. To-date all consumer-oriented CPUs with Hyper-threading have 2 threads per core, so if HT is enabled, the number of threads will be 2x the number of cores.



            enter image description here



            If you have an Intel CPU, you can download Intel's CPU ID utility instead.






            share|improve this answer















            Hyper-threading exposes multiple logical cores for a single physical CPU core. In simple terms, hyper-threading makes context-switching more efficient for each CPU core.



            Dual-core chips, on the other hand, actually have two physical CPU cores which can execute different processes simultaneously.



            There are also other multi-core chips that have many more than two cores, and--as Svish mentioned--Intel's latest multi-core offerings also support Hyper-threading on all the cores.



            You can use a CPU identification utility like CPU-Z to determine how many cores you have. As you can see near the bottom of the screenshot, the CPU in this case has 2 physical cores. If the number of threads is higher than the number of cores, Hyper-threading is enabled. To-date all consumer-oriented CPUs with Hyper-threading have 2 threads per core, so if HT is enabled, the number of threads will be 2x the number of cores.



            enter image description here



            If you have an Intel CPU, you can download Intel's CPU ID utility instead.







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Feb 23 '12 at 21:21

























            answered Apr 20 '10 at 19:28









            robrob

            12.2k43979




            12.2k43979













            • And multi-core chips that supports hyper-threading so you get twice the amount of logical cores.

              – Svish
              Apr 20 '10 at 19:40











            • Thank! How do I tell (from within the OS) which type of CPU I have?

              – Josh Stodola
              Apr 20 '10 at 19:56






            • 2





              The UltraSparc T2+ has 8 Cores, each of which supporting 8 threads making it a 64 virtual CPUs on a single chip: en.wikipedia.org/wiki/UltraSPARC_T2

              – jlliagre
              Apr 20 '10 at 19:59











            • The way to know the CPU you have depends on the OS you are running.

              – jlliagre
              Apr 20 '10 at 20:00











            • @jilliagre: nice!

              – rob
              Apr 20 '10 at 21:00



















            • And multi-core chips that supports hyper-threading so you get twice the amount of logical cores.

              – Svish
              Apr 20 '10 at 19:40











            • Thank! How do I tell (from within the OS) which type of CPU I have?

              – Josh Stodola
              Apr 20 '10 at 19:56






            • 2





              The UltraSparc T2+ has 8 Cores, each of which supporting 8 threads making it a 64 virtual CPUs on a single chip: en.wikipedia.org/wiki/UltraSPARC_T2

              – jlliagre
              Apr 20 '10 at 19:59











            • The way to know the CPU you have depends on the OS you are running.

              – jlliagre
              Apr 20 '10 at 20:00











            • @jilliagre: nice!

              – rob
              Apr 20 '10 at 21:00

















            And multi-core chips that supports hyper-threading so you get twice the amount of logical cores.

            – Svish
            Apr 20 '10 at 19:40





            And multi-core chips that supports hyper-threading so you get twice the amount of logical cores.

            – Svish
            Apr 20 '10 at 19:40













            Thank! How do I tell (from within the OS) which type of CPU I have?

            – Josh Stodola
            Apr 20 '10 at 19:56





            Thank! How do I tell (from within the OS) which type of CPU I have?

            – Josh Stodola
            Apr 20 '10 at 19:56




            2




            2





            The UltraSparc T2+ has 8 Cores, each of which supporting 8 threads making it a 64 virtual CPUs on a single chip: en.wikipedia.org/wiki/UltraSPARC_T2

            – jlliagre
            Apr 20 '10 at 19:59





            The UltraSparc T2+ has 8 Cores, each of which supporting 8 threads making it a 64 virtual CPUs on a single chip: en.wikipedia.org/wiki/UltraSPARC_T2

            – jlliagre
            Apr 20 '10 at 19:59













            The way to know the CPU you have depends on the OS you are running.

            – jlliagre
            Apr 20 '10 at 20:00





            The way to know the CPU you have depends on the OS you are running.

            – jlliagre
            Apr 20 '10 at 20:00













            @jilliagre: nice!

            – rob
            Apr 20 '10 at 21:00





            @jilliagre: nice!

            – rob
            Apr 20 '10 at 21:00













            15














            Hyper-threading is where your processor pretends to have 2 physical processor cores, yet only has 1 and some extra junk.



            The point of hyperthreading is that many times when you are executing code in the processor, there are parts of the processor that is idle. By including an extra set of CPU registers, the processor can act like it has two cores and thus use all parts of the processor in parallel. When the 2 cores both need to use one component of the processor, then one core ends up waiting of course. This is why it can not replace dual-core and such processors.



            See also: This question






            share|improve this answer






























              15














              Hyper-threading is where your processor pretends to have 2 physical processor cores, yet only has 1 and some extra junk.



              The point of hyperthreading is that many times when you are executing code in the processor, there are parts of the processor that is idle. By including an extra set of CPU registers, the processor can act like it has two cores and thus use all parts of the processor in parallel. When the 2 cores both need to use one component of the processor, then one core ends up waiting of course. This is why it can not replace dual-core and such processors.



              See also: This question






              share|improve this answer




























                15












                15








                15







                Hyper-threading is where your processor pretends to have 2 physical processor cores, yet only has 1 and some extra junk.



                The point of hyperthreading is that many times when you are executing code in the processor, there are parts of the processor that is idle. By including an extra set of CPU registers, the processor can act like it has two cores and thus use all parts of the processor in parallel. When the 2 cores both need to use one component of the processor, then one core ends up waiting of course. This is why it can not replace dual-core and such processors.



                See also: This question






                share|improve this answer















                Hyper-threading is where your processor pretends to have 2 physical processor cores, yet only has 1 and some extra junk.



                The point of hyperthreading is that many times when you are executing code in the processor, there are parts of the processor that is idle. By including an extra set of CPU registers, the processor can act like it has two cores and thus use all parts of the processor in parallel. When the 2 cores both need to use one component of the processor, then one core ends up waiting of course. This is why it can not replace dual-core and such processors.



                See also: This question







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Mar 20 '17 at 10:17









                Community

                1




                1










                answered Apr 20 '10 at 19:55









                EarlzEarlz

                2,375165178




                2,375165178























                    4














                    Hyperthreading is a cheaper and slower alternative to having dual-cores



                    TODO it is slower by how much percent in average in real applications?



                    Hyperthreading is possible because modern single CPUs cores already execute multiple instructions at once with the instruction pipeline https://en.wikipedia.org/wiki/Instruction_pipelining



                    The instruction pipeline is a separation of functions inside of a single core to ensure that each part of the circuit is used at any given time: reading memory, decoding instructions, executing instructions, etc.



                    Hyperthreading separates functions further by using:





                    • a single backend, which actually runs the instructions with its pipeline.



                      Dual core has two backends, which explains the greater cost and performance.




                    • two front-ends, which take two streams of instructions and order them in a way to maximize pipelining usage of the single backend by avoiding hazards.



                      Dual core would also have 2 front-ends, one for each backend.



                      There are edge cases where instruction reordering produces no benefit, making hyperthreading useless. But it produces a significant improvement in average.




                    Two hyperthreads in a single core share further cache levels (TODO how many? L1?) than two different cores, which share only L3, see:




                    • https://stackoverflow.com/questions/4802565/multiple-threads-and-cpu-cache/54018751#54018751

                    • hhttps://stackoverflow.com/questions/944966/how-are-cache-memories-shared-in-multicore-intel-cpus/33510874#33510874


                    The interface that each hyperthread exposes to the operating system is similar to that of an actual core, and both can be controlled separately. Thus cat /proc/cpuinfo shows me 4 processors, even though I only have 2 cores with 2 hyperthreads each.



                    Operating systems can however take advantage of knowing which hyperthreads are on the same core to run multiple threads of a given program on a single core, which might improve cache usage.



                    This LinusTechTips video contains a light-hearted non-technical explanation: https://www.youtube.com/watch?v=wnS50lJicXc



                    The Intel Manual Volume 3 System Programming Guide - 325384-056US September 2015 8.7 "INTEL HYPER-THREADING TECHNOLOGY ARCHITECTURE" describes HT briefly. It contains the following diagram:



                    enter image description here






                    share|improve this answer





















                    • 1





                      Are you going to answer your "TODO" questions?

                      – pacoverflow
                      Aug 11 '17 at 17:29






                    • 1





                      @pacoverflow if I someday learn the answer, or if someone will edit the answer for me :-)

                      – Ciro Santilli 新疆改造中心 六四事件 法轮功
                      Aug 11 '17 at 19:14
















                    4














                    Hyperthreading is a cheaper and slower alternative to having dual-cores



                    TODO it is slower by how much percent in average in real applications?



                    Hyperthreading is possible because modern single CPUs cores already execute multiple instructions at once with the instruction pipeline https://en.wikipedia.org/wiki/Instruction_pipelining



                    The instruction pipeline is a separation of functions inside of a single core to ensure that each part of the circuit is used at any given time: reading memory, decoding instructions, executing instructions, etc.



                    Hyperthreading separates functions further by using:





                    • a single backend, which actually runs the instructions with its pipeline.



                      Dual core has two backends, which explains the greater cost and performance.




                    • two front-ends, which take two streams of instructions and order them in a way to maximize pipelining usage of the single backend by avoiding hazards.



                      Dual core would also have 2 front-ends, one for each backend.



                      There are edge cases where instruction reordering produces no benefit, making hyperthreading useless. But it produces a significant improvement in average.




                    Two hyperthreads in a single core share further cache levels (TODO how many? L1?) than two different cores, which share only L3, see:




                    • https://stackoverflow.com/questions/4802565/multiple-threads-and-cpu-cache/54018751#54018751

                    • hhttps://stackoverflow.com/questions/944966/how-are-cache-memories-shared-in-multicore-intel-cpus/33510874#33510874


                    The interface that each hyperthread exposes to the operating system is similar to that of an actual core, and both can be controlled separately. Thus cat /proc/cpuinfo shows me 4 processors, even though I only have 2 cores with 2 hyperthreads each.



                    Operating systems can however take advantage of knowing which hyperthreads are on the same core to run multiple threads of a given program on a single core, which might improve cache usage.



                    This LinusTechTips video contains a light-hearted non-technical explanation: https://www.youtube.com/watch?v=wnS50lJicXc



                    The Intel Manual Volume 3 System Programming Guide - 325384-056US September 2015 8.7 "INTEL HYPER-THREADING TECHNOLOGY ARCHITECTURE" describes HT briefly. It contains the following diagram:



                    enter image description here






                    share|improve this answer





















                    • 1





                      Are you going to answer your "TODO" questions?

                      – pacoverflow
                      Aug 11 '17 at 17:29






                    • 1





                      @pacoverflow if I someday learn the answer, or if someone will edit the answer for me :-)

                      – Ciro Santilli 新疆改造中心 六四事件 法轮功
                      Aug 11 '17 at 19:14














                    4












                    4








                    4







                    Hyperthreading is a cheaper and slower alternative to having dual-cores



                    TODO it is slower by how much percent in average in real applications?



                    Hyperthreading is possible because modern single CPUs cores already execute multiple instructions at once with the instruction pipeline https://en.wikipedia.org/wiki/Instruction_pipelining



                    The instruction pipeline is a separation of functions inside of a single core to ensure that each part of the circuit is used at any given time: reading memory, decoding instructions, executing instructions, etc.



                    Hyperthreading separates functions further by using:





                    • a single backend, which actually runs the instructions with its pipeline.



                      Dual core has two backends, which explains the greater cost and performance.




                    • two front-ends, which take two streams of instructions and order them in a way to maximize pipelining usage of the single backend by avoiding hazards.



                      Dual core would also have 2 front-ends, one for each backend.



                      There are edge cases where instruction reordering produces no benefit, making hyperthreading useless. But it produces a significant improvement in average.




                    Two hyperthreads in a single core share further cache levels (TODO how many? L1?) than two different cores, which share only L3, see:




                    • https://stackoverflow.com/questions/4802565/multiple-threads-and-cpu-cache/54018751#54018751

                    • hhttps://stackoverflow.com/questions/944966/how-are-cache-memories-shared-in-multicore-intel-cpus/33510874#33510874


                    The interface that each hyperthread exposes to the operating system is similar to that of an actual core, and both can be controlled separately. Thus cat /proc/cpuinfo shows me 4 processors, even though I only have 2 cores with 2 hyperthreads each.



                    Operating systems can however take advantage of knowing which hyperthreads are on the same core to run multiple threads of a given program on a single core, which might improve cache usage.



                    This LinusTechTips video contains a light-hearted non-technical explanation: https://www.youtube.com/watch?v=wnS50lJicXc



                    The Intel Manual Volume 3 System Programming Guide - 325384-056US September 2015 8.7 "INTEL HYPER-THREADING TECHNOLOGY ARCHITECTURE" describes HT briefly. It contains the following diagram:



                    enter image description here






                    share|improve this answer















                    Hyperthreading is a cheaper and slower alternative to having dual-cores



                    TODO it is slower by how much percent in average in real applications?



                    Hyperthreading is possible because modern single CPUs cores already execute multiple instructions at once with the instruction pipeline https://en.wikipedia.org/wiki/Instruction_pipelining



                    The instruction pipeline is a separation of functions inside of a single core to ensure that each part of the circuit is used at any given time: reading memory, decoding instructions, executing instructions, etc.



                    Hyperthreading separates functions further by using:





                    • a single backend, which actually runs the instructions with its pipeline.



                      Dual core has two backends, which explains the greater cost and performance.




                    • two front-ends, which take two streams of instructions and order them in a way to maximize pipelining usage of the single backend by avoiding hazards.



                      Dual core would also have 2 front-ends, one for each backend.



                      There are edge cases where instruction reordering produces no benefit, making hyperthreading useless. But it produces a significant improvement in average.




                    Two hyperthreads in a single core share further cache levels (TODO how many? L1?) than two different cores, which share only L3, see:




                    • https://stackoverflow.com/questions/4802565/multiple-threads-and-cpu-cache/54018751#54018751

                    • hhttps://stackoverflow.com/questions/944966/how-are-cache-memories-shared-in-multicore-intel-cpus/33510874#33510874


                    The interface that each hyperthread exposes to the operating system is similar to that of an actual core, and both can be controlled separately. Thus cat /proc/cpuinfo shows me 4 processors, even though I only have 2 cores with 2 hyperthreads each.



                    Operating systems can however take advantage of knowing which hyperthreads are on the same core to run multiple threads of a given program on a single core, which might improve cache usage.



                    This LinusTechTips video contains a light-hearted non-technical explanation: https://www.youtube.com/watch?v=wnS50lJicXc



                    The Intel Manual Volume 3 System Programming Guide - 325384-056US September 2015 8.7 "INTEL HYPER-THREADING TECHNOLOGY ARCHITECTURE" describes HT briefly. It contains the following diagram:



                    enter image description here







                    share|improve this answer














                    share|improve this answer



                    share|improve this answer








                    edited Jan 3 at 8:34

























                    answered Nov 4 '15 at 10:36









                    Ciro Santilli 新疆改造中心 六四事件 法轮功Ciro Santilli 新疆改造中心 六四事件 法轮功

                    3,93622734




                    3,93622734








                    • 1





                      Are you going to answer your "TODO" questions?

                      – pacoverflow
                      Aug 11 '17 at 17:29






                    • 1





                      @pacoverflow if I someday learn the answer, or if someone will edit the answer for me :-)

                      – Ciro Santilli 新疆改造中心 六四事件 法轮功
                      Aug 11 '17 at 19:14














                    • 1





                      Are you going to answer your "TODO" questions?

                      – pacoverflow
                      Aug 11 '17 at 17:29






                    • 1





                      @pacoverflow if I someday learn the answer, or if someone will edit the answer for me :-)

                      – Ciro Santilli 新疆改造中心 六四事件 法轮功
                      Aug 11 '17 at 19:14








                    1




                    1





                    Are you going to answer your "TODO" questions?

                    – pacoverflow
                    Aug 11 '17 at 17:29





                    Are you going to answer your "TODO" questions?

                    – pacoverflow
                    Aug 11 '17 at 17:29




                    1




                    1





                    @pacoverflow if I someday learn the answer, or if someone will edit the answer for me :-)

                    – Ciro Santilli 新疆改造中心 六四事件 法轮功
                    Aug 11 '17 at 19:14





                    @pacoverflow if I someday learn the answer, or if someone will edit the answer for me :-)

                    – Ciro Santilli 新疆改造中心 六四事件 法轮功
                    Aug 11 '17 at 19:14


















                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Super User!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f133082%2fwhat-is-the-difference-between-hyper-threading-and-multiple-cores%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    flock() on closed filehandle LOCK_FILE at /usr/bin/apt-mirror

                    Mangá

                     ⁒  ․,‪⁊‑⁙ ⁖, ⁇‒※‌, †,⁖‗‌⁝    ‾‸⁘,‖⁔⁣,⁂‾
”‑,‥–,‬ ,⁀‹⁋‴⁑ ‒ ,‴⁋”‼ ⁨,‷⁔„ ‰′,‐‚ ‥‡‎“‷⁃⁨⁅⁣,⁔
⁇‘⁔⁡⁏⁌⁡‿‶‏⁨ ⁣⁕⁖⁨⁩⁥‽⁀  ‴‬⁜‟ ⁃‣‧⁕‮ …‍⁨‴ ⁩,⁚⁖‫ ,‵ ⁀,‮⁝‣‣ ⁑  ⁂– ․, ‾‽ ‏⁁“⁗‸ ‾… ‹‡⁌⁎‸‘ ‡⁏⁌‪ ‵⁛ ‎⁨ ―⁦⁤⁄⁕