The present invention is directed to methods and systems for allocating
bandwidth (or other shared resource) among multiple masters. According to
an aspect of the present invention, an arbiter assigns a bucket to each
CPU (or other device) where each bucket holds the credits for that CPU.
Each bucket has a predetermined fill rate and a drain rate. Depending on
the priority given to a particular CPU, the corresponding bucket will
drain (or fill) at a particular rate. For example, CPUs with a higher
priority will drain at a slower rate. For each clock tick (or other
period of time) that a CPU is stalled, a number of credits is accrued.
The bucket with the highest number of credits has priority and will be
given access to the shared resource (e.g., DRAM, SDRAM, SRAM, EPROM,
etc.).