A method is disclosed in a data processing system for ensuring processing
fairness in simultaneous multi-threading (SMT) microprocessors that
concurrently execute multiple threads during each clock cycle. A clock
cycle priority is assigned to a first thread and to a second thread
during a standard selection state that lasts for an expected number of
clock cycles. The clock cycle priority is assigned according to a
standard selection definition during the standard selection state by
selecting the first thread to be a primary thread and the second thread
to be a secondary thread during the standard selection state. If a
condition exists that requires overriding the standard selection
definition, an override state is executed during which the standard
selection definition is overridden by selecting the second thread to be
the primary thread and the first thread to be the secondary thread.