A register in the control unit of the CPU that is used to keep track of the address
of the current or next instruction is called a program counter. In an SMT system
having two threads, the CPU has program counters for both threads and means for
alternately selecting between program counters to determine which thread supplies
an instruction to the instruction fetch unit (IFU). The software for the SMT assigns
a priority to threads entering the code stream. Instructions from the threads are
read from the instruction queues pseudo-randomly and proportional to their execution
priorities in the normal power mode. If both threads have a lowest priority, a
low power mode is set generating a gated select time every N clock cycles of a
clock when valid instructions are loaded. N may be adjusted to vary the amount
of power savings and the gated select time.