There is provided a system and methods for segmenting datapath resources
such as reorder buffers, physical registers, instruction queues and
load-store queues, etc. in a microprocessor so that their size may be
dynamically expanded and contracted. This is accomplished by allocating
and deallocating individual resource units to each resource based on
sampled estimates of the instantaneous resource needs of the program
running on the microprocessor. By keeping unused datapath resources to a
minimum, power and energy savings are achieved by shutting off resource
units that are not needed for sustaining the performance requirements of
the running program. Leakage energy and switching energy and power are
reduced using the described methods.