kc5tja wrote:
I continuously read that the daisy-chained bus grant arbitration algorithm, such as is used in VMEbus, STEbus, Apple II bus, etc., is "unfair." I'd like to know exactly what this means.
I was searching on the net and to my surprise I didn't find much (I assume you already did that anyway...). There is some wikipedia article on fair scheduling and fair queueing, like here
http://en.wikipedia.org/wiki/Fair_queuing Fair there means that any single sender cannot "cannot take more than its fair share of the link capacity".
In your context that means that a single requester that gets a bus grant can take an "unfair" share of the bus. If you have N devices, a fair share would be 1/Nth of the bus bandwidth if all devices try to get the bus at the same time. Free bandwidth can also be distributed in a "fair" way, e.g. if half of the devices don't need the bus right now, the available bandwidth should not go to a single device, but be distributed evenly.
Fair can also be defined in terms of latency. Even if devices can get their share of the bandwidth, if higher priority devices can interrupt lower priority devices and not vice versa, they have a much better average latency. One important thing to achieve fairness seems to be that a single transfer has a defined maximum length, or can be interrupted by an arbiter to schedule bandwidth to another requester.
A bus scheduling algorithm is thus inherently unfair if is it cooperative, i.e. it relies on the devices to release the bus and transfers cannot be interrupted.
Quote:
As I understand the algorithm, a daisy-chained bus arbitration system relies on four signals:
* BR_O -- Bus Request, output.
* BR_I -- Bus Request, input. This signal is the logical-OR of all BR_O pins on all expansion slots. It also feeds the highest priority card's BG_I signal.
* BG_I -- Bus Grant, input. Together with BG_O, this signal grants the peripheral access to the bus. The card holds onto the bus for as long as it keeps BG_O low.
* BG_O -- Bus Grant, output. When the peripheral has completed its use of the bus, or if it never requested the bus in the first place, it passes BG_I to BG_O.
I think your quote "The card holds onto the bus for as long as it keeps BG_O low" says it - the bus transfer cannot be interrupted, thus it is inherently unfair...
At least that's what I understand.
André