A method of operating a request FIFO of a system on a chip (SoC) in which a requests
in a first position that has been granted and which subsequently receives a retry
from the intended target is automatically re-ordered with respect to the other
requests below it in the request FIFO. Each issued requests is tagged to either
enable or disable a re-order feature. When a request that is tagged as re-order
enabled is granted, the FIFO logic monitors the response provided for the request.
If the response is a retry, the request is removed from the first position of the
request FIFO and the next sequential request is moved into the first position.
The removed requests may be re-ordered within the request FIFO or sent back to
the initiator. In the former implementation, controller logic reorders the first
request within the request FIFO. In the latter implementation, the controller logic
of the bus controller messages the initiator when a request has been retried and
subsequently removed from the first position of the request FIFO. The initiator
then determines whether or not to re-issue the request.