1. A method of multi-threading, said method comprising: storing information for a first thread in a working register during execution of said first thread, wherein said working register is coupled to a plurality of shadow registers; and switching from executing said first thread to executing a second thread, wherein said switching comprises rollback of information in said working register without copying, to one of said shadow registers, information that is in said working register at the time of said switching; and wherein said rollback further comprises copying information for said second thread from a first shadow register into said working register in place of information that is in said working register.