It is known in art to control access to a device via arbitration. In a typical system-on-chip (SoC), a system resource, such as a memory or peripherial, is shared by multiple accessors. In the field of this invention requesting devices typically have priorities relative to other requesting devices. The device with the higher priority is granted access. In many systems this priority is dynamically allocated. For example, the last requester to be granted access may be given the highest priority. On the other hand, priority may be statically assigned to permit a high priority requester to have its needed access. One of these may be given ultra high priority, meaning that the arbiter always gives this accessor priority over all others. In this case some control over the grant and masking of the ultra high priority request is typical to meet the bandwidth requirements of the ultra high priority accessor as well as for all the remaining accessors.
A common solution to this problem is periodically allocating a time slot for the ultra high priority requester. During this time period, no other requester is granted access to the resource. However, such a scheme is sensitive to the time alignment of the request and thus may not help in meeting the real time requirements. For the same reason, it may also waste bandwidth for the remaining requesters. Other solutions grant access to the ultra high priority accessor each time another requester completes one access. Thus the ultra high priority requester is sure to get access on a regular basis. This may not be sufficient to meet the real time requirements of the high priority requester and it may hurt the bandwidth requirements of other accessors. However, the user does not have control over resource allocation in both the above cases.
Thus there is a need in the art for a flexible scheme to control arbitration to allocate accesses to a shared resource by plural requesting devices.