What is simultaneous multithreading?
Simultaneous multithreading (SMT) is not hard to understand. In traditional designs, the entire collection of functional units in the CPU belong to one process at a time. A process can therefore be executing instructions in some or all of the functional units of the processor and nobody else can be using it at that instance. With a feature that we called hardware multithreading in the RS64 line of processors a few years ago, we provided additional hardware resources that allowed two processes to have their state, essentially, on chip. When a process had a cache miss that would normally stall it, it would switch to the other process, the other thread, with a three-cycle pause. So this was still only one process executing at a time, but could switch back and forth between two of them very, very rapidly.