Circuits, methods, and apparatus that provide the die area and power
savings of a single-ported memory with the performance advantages of a
multiported memory. One example provides register allocation methods for
storing data in a multiple-bank register file. In a thin register
allocation method, data for a process is stored in a single bank. In this
way, different processes use different banks to avoid conflicts. In a fat
register allocation method, processes store data in each bank. In this
way, if one process uses a large number of registers, those registers are
spread among the banks, avoiding a situation where one bank is filled and
other processes are forced to share a reduced number of banks. In a
hybrid register allocation method, processes store data in more than one
bank, but fewer than all the banks. Each of these methods may be combined
in varying ways.