SMT
From ProPHOTO WIKI
Contents |
Introduction
Symetrical Multi-Threading is a technique where a single processing core exposes itself as two (or more) logical processors to the OS. This can allow a microprocessor to make use of processing resources that would otherwise remain idle. Unfortunately, this technique does not improve the performance of all processes and, in some circumstances, can slow things down.
Multi-Tasking
Microprocessors are, at their root, simply devices that execute a set of instructions provided to them in a linear manner. Each processing core is only capable of performing a single set of instructions at any given time. However, as modern operating systems allow users to run several programs in parallel, these systems rapidly switch between multiple tasks (known as threads*) to provide the impression of multi-tasking.
Modern Microprocessor Design
Modern microprocessors are built up from a number of specialized processing units. As these units are discrete electronic devices they have a limited ability to work in parallel with one another. Conventional processors will reorder the instructions being passed to them in order to maximize the utilization of all of these unit, however this reordering process is limited by the fact that some of those steps may rely on the results of earlier stages.
Symetrical Multi-Threading
In order to improve the ability of the microprocessor to keep all of these units busy, SMT-enabled processors masquerade themselves as two (or more) logical processors. This causes the operating system to provide each core with multiple discrete threads that aren't encumbered with dependancies to one another. As such, the processor can take instructions from each of those threads in order to use processing units that would otherwise sit idle.
Say, for instance, we have two threads - thread A, which is a long series of integer calculations (eg 3+2) and thread B which is a long series of floating point calculations (eg 1.2+2.4). With a conventional processor, the system would alternate between the two threads. When thread A was running, the floating point units would be idle. When thread B was running, the integer units would be idle. As such, significant portions of processing horsepower would remain unused durring this process.
With a SMT-enabled processor, however, the processor would be presented with both threads at the same time. It would then be able to run the two threads in parallel with each other as the units that each uses is unused by the other thread. As such, the processing resources are more efficiently used and the two tasks will be able to complete in significantly less time.
Unfortunately, the situation above is a best-case scenario and rarely occurs in the real world. If the two threads fed to the processor both used the same processing units, for instance, then the SMT system would be unable to do anything to speed up the process. As such, the improvement provided by this technology depends critically on the type of work being done on the system. In some cases it can provide significant improvements in performance, however in most scenarios it provides only modest returns.
Software Requirements
In order to take full advantage of technology like SMT and SMP, users must make use of multi-threaded software. Well threaded software breaks the tasks it must perform into a number of smaller independant tasks - thus allowing them to run in parallel. This allows the multiprocessor scheduler in the OS to keep the processor fed and allows SMT's advantages to be utilized.
While many software packages aren't well optimized for this configuration at this stage, the popularization of dual-core processors is slowly changing that. While not all tasks lend themselves to this sort of configuration, image processing is generally well suited to threaded architectures.
Availability
The first mainstream implementation of SMT was Intel's Hyper-Threading technology employed in a number of their Netburst-based processors. With the arival of true dual-core processors it has become less prevalent, however it is still available on some of the higher end offerings.
See Also
- Hyper-Threading Technology - The first mainstream use of this technique, Hyperthreading is Intel's implementation of SMT technology.
- Multi-Processor Systems - Computer systems with multiple physical processors installed, allowing them to execute several threads in parallel.
- Multi-Core - Processors with more than one discrete processing core built into a single package. Provides the same benefits as SMP, but is generally much less expensive.
- Thread - A simple form of discrete task that can operate in parallel with on another.
- Process - A more complicated form of discrete task generally used to seperate different programs from one another.

