1. A method of allocating registers into memory banks, comprising: determining a number of registers allocated for a thread; and allocating the number of registers for the thread to locations in at least one memory bank of a set of memory banks configured to simulate a multiported memory.