A round robin bus arbitrator that prevents bus starvation caused by an
inbound buffer becoming full and forcing repetitive retries by an agent.
The arbitrator performs a rotating scan of the request lines of multiple
potential bus requesters. When a request is detected, the arbitrator
stops, grants the request, and resumes scanning after the requester takes
control of the bus. If the data buffer on a write operation becomes full
and cannot accept any more data, a signal so indicating is sent to the
arbitrator. The arbitrator then stops scanning, or refuses to resume
scanning if it is already stopped, until the buffer indicates it is no
longer full. The next requester that is granted the bus is therefore not
confronted with a full buffer, and not thereby forced to abort the request
and make a retry. The invention avoids bus starvation caused by a second
bus requestor repeatedly being given a retry response because the buffer
is repeatedly filled up by an earlier bus requestor.
Un arbitre rond d'autobus de merle qui empêche la famine d'autobus a causé par un amortisseur d'arrivée devenant plein et forçant des nouvelles tentatives réitérées par un agent. L'arbitre exécute un balayage tournant des lignes de demande des demandeurs potentiels multiples d'autobus. Quand une demande est détectée, l'arbitre s'arrête, accorde la demande, et reprend balayer après que le demandeur prenne la commande de l'autobus. Si l'amortisseur de données sur une opération d'inscription devient plein et ne peut accepter plus de données, un signal ainsi le témoin est envoyé à l'arbitre. L'arbitre cesse alors de balayer, ou refuse de reprendre balayer s'il est déjà arrêté, jusqu'à ce que l'amortisseur indique il n'est plus plein. Le prochain demandeur qui est accordé l'autobus n'est pas donc confronté avec un plein amortisseur, et est pas de ce fait forcé d'avorter la demande et de faire une nouvelle tentative. L'invention évite la famine d'autobus provoquée par un deuxième demandeur d'autobus à plusieurs reprises étant donné une réponse de nouvelle tentative parce que l'amortisseur est à plusieurs reprises rempli par un premier demandeur d'autobus.