Content deleted Content added
Ishachopra1 (talk | contribs) |
m v2.05b - Bot T19 CW#25 - Fix errors for CW project (Heading hierarchy) |
||
(96 intermediate revisions by 59 users not shown) | |||
Line 1:
{{
{{Multiple issues|
{{Refimprove|date=October 2009}}
{{Original research|date=October 2010}}
}}
{{short description|Ability of a CPU to provide multiple threads of execution concurrently}}
[[File:Multithreaded process.svg|thumb|A process with two threads of execution, running on a single processor |alt=A process with two threads of execution, running on a single processor. Thread #1 is executed first, eventually starts Thread #2, and waits for a response. When Thread #2 finishes, it signals Thread #1 to resume execution to completion and then finishes.]]
In [[computer architecture]], '''multithreading''' is the ability of a [[central processing unit]] (CPU) (or a single core in a [[multi-core processor]]
==Overview==
The multithreading [[paradigm]] has become more popular as efforts to further exploit [[instruction-level parallelism]] have stalled since the late 1990s. This allowed the concept of [[throughput computing]] to re-emerge from the more specialized field of [[transaction processing]]
Two major techniques for throughput computing are ''multithreading'' and ''[[multiprocessing]]''.
===Advantages===
If a thread gets a lot of [[CPU cache#Cache miss|cache misses]], the other threads can continue taking advantage of the unused computing resources, which may lead to faster overall execution, as these resources would have been idle if only a single thread were executed. Also, if a thread cannot use all the computing resources of the CPU (because instructions depend on each other's result), running another thread may prevent those resources from becoming idle.
===Disadvantages===
Multiple threads can interfere with each other when sharing hardware resources such as caches or [[translation lookaside buffer]]s (TLBs). As a result, execution times of a single thread are not improved
Overall efficiency varies; [[Intel]] claims up to 30% improvement with its [[
From the software standpoint, hardware support for multithreading is more visible to software, requiring more changes to both application programs and operating systems than multiprocessing. Hardware techniques used to support [[thread (computer science)|multithreading]] often parallel the software techniques used for [[
Merging data from two processes can often incur significantly higher costs compared to processing the same data on a single thread, potentially by two or more orders of magnitude due to overheads such as inter-process communication and synchronization. <ref>{{Cite book |title=Operating System Concepts |isbn=978-0470128725 |last1=Silberschatz |first1=Abraham |last2=Galvin |first2=Peter B. |last3=Gagne |first3=Greg |date=29 July 2008 |publisher=Wiley }}</ref><ref>{{Cite book |title=Computer Organization and Design MIPS Edition: The Hardware/Software Interface (The Morgan Kaufmann Series in Computer Architecture and Design) |date=2013 |publisher=Morgan Kaufmann |isbn=978-0124077263}}</ref><ref>{{Cite book |title=Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers |date=2005 |publisher=Pearson |isbn=978-0131405639}}</ref>
==Types of multithreading==▼
===Block multithreading===▼
==Types==
The simplest type of multithreading occurs when one thread runs until it is blocked by an event that normally would create a long-latency stall. Such a stall might be a cache miss that has to access off-chip memory, which might take hundreds of CPU cycles for the data to return. Instead of waiting for the stall to resolve, a threaded processor would switch execution to another thread that was ready to run. Only when the data for the previous thread had arrived, would the previous thread be placed back on the list of [[Process states#Ready or waiting|ready-to-run]] threads.▼
▲The simplest type of multithreading occurs when one thread runs until it is blocked by an event that normally would create a long-latency stall. Such a stall might be a cache miss that has to access off-chip memory, which might take hundreds of CPU cycles for the data to return. Instead of waiting for the stall to resolve, a threaded processor would switch execution to another thread that was ready to run. Only when the data for the previous thread had arrived, would the previous thread be placed back on the list of [[
For example:
Line 40 ⟶ 41:
# Cycle {{math|''i'' + 5}}: instruction {{math|''k'' + 1}} from thread {{mvar|B}} is issued.
Conceptually, it is similar to cooperative multi-tasking used in [[
The goal of multithreading hardware support is to allow quick switching between a blocked thread and another thread ready to run. Switching from one thread to another means the hardware switches from using one register set to another. To achieve this goal, the hardware
Additional hardware support for multithreading allows thread switching to be done in one CPU cycle, bringing performance improvements.
Many families of [[microcontroller]]s and embedded processors have multiple register banks to allow quick [[context switch]]ing for interrupts. Such schemes can be considered a type of block multithreading among the user program thread and the interrupt threads.{{citation needed|date=October 2010}}
===
{{main|Barrel processor}}
The purpose of
For example:
Line 57 ⟶ 58:
# Cycle {{math|''i'' + 2}}: an instruction from thread {{mvar|C}} is issued.
This type of multithreading was first called barrel processing, in which the [[stave (wood)|staves]] of a barrel represent the pipeline stages and their executing threads. Interleaved, preemptive, fine-grained
In addition to the hardware costs discussed in the block type of multithreading, interleaved multithreading has an additional cost of each pipeline stage tracking the thread ID of the instruction it is processing. Also, since there are more threads being executed concurrently in the pipeline, shared resources such as caches and TLBs need to be larger to avoid thrashing between the different threads.
Line 64 ⟶ 65:
{{main|Simultaneous multithreading}}
The most advanced type of multithreading applies to [[superscalar processor]]
For example:
Line 75 ⟶ 76:
In addition to the hardware costs discussed for interleaved multithreading, SMT has the additional cost of each pipeline stage tracking the thread ID of each instruction being processed. Again, shared resources such as caches and TLBs have to be sized for the large number of active threads being processed.
Implementations include [[Digital Equipment Corporation|DEC]] (later [[Compaq]]) [[Alpha 21464|EV8]] (not completed), [[Intel]] [[Hyper-Threading Technology]], [[IBM]] [[POWER5]]/[[POWER6]]/[[POWER7]]/[[POWER8]]/[[POWER9]], IBM [[IBM z13 (microprocessor)|z13]]/[[IBM z14 (microprocessor)|z14]]/[[IBM z15 (microprocessor)|z15]], [[Sun Microsystems]] [[UltraSPARC T2]], [[
==Implementation specifics==
A major area of research is the thread scheduler that must quickly choose from among the list of ready-to-run threads to execute next, as well as maintain the ready-to-run and stalled thread lists. An important subtopic is the different thread priority schemes that can be used by the scheduler. The thread scheduler might be implemented totally in software, totally in hardware, or as a hardware/software combination.
Another area of research is what type of events should cause a thread switch: cache misses, inter-thread communication, [[
If the multithreading scheme replicates all of the software-visible state, including privileged control registers and TLBs, then it enables [[virtual machine]]s to be created for each thread. This allows each thread to run its own operating system on the same processor. On the other hand, if only user-mode state is saved, then less hardware is required, which would allow more threads to be active at one time for the same die area or cost.
==See also==
*[[Async/await]]
▲* [[Super-threading]]
==References==
Line 93 ⟶ 94:
==External links==
*
*[https://www.geeksforgeeks.org/operating-system-difference-multitasking-multithreading-multiprocessing/ Operating System | Difference between Multitasking, Multithreading and Multiprocessing] GeeksforGeeks, 6 Sept. 2018.
{{Computer science}}
{{CPU technologies}}
{{Parallel computing}}
Line 100 ⟶ 103:
[[Category:Central processing unit]]
[[Category:Instruction processing]]
[[Category:Microprocessors]]
[[Category:Parallel computing]]
|