6 Arbitration process under PCI:
Since the PCI Bus accommodates multiple masters — any of which could request the use of the bus at any time — there must be a mechanism that allocates use of bus resources in a reasonable way and resolves conflicts among multiple masters wishing to use the bus simultaneously. Fundamentally, this is called bus arbitration.
The Arbitration Process
Before a bus master can execute a PCI transaction, it must request, and be granted, use of the bus. For this purpose, each bus master has a pair of REQ# and GNT# signals connecting it directly to a central arbiter as shown in Figure 11. When a master wishes to use the bus, it asserts its REQ# signal. Sometime later the arbiter will assert the corresponding GNT# indicating that this master is next in line to use the bus.
Only one GNT# signal can be asserted at any instant in time. The master agent who sees his GNT# asserted may initiate a bus transaction when it detects that the bus is idle. The bus idle state is defined as both FRAME# and IRDY# de-asserted. Figure 12 is a timing diagram illustrating how arbitration works when two masters request use of the bus simultaneously.

Figure 11: Arbitration process under PCI.

Figure 12: Timing diagram for arbitration process involving two masters.
Clock
Arbitration is “hidden,” meaning that arbitration for the next transaction occurs at the same time as, or in parallel with, the current transaction. So the arbitration process doesn’t take any time. The specification does not stipulate the nature of the arbitration algorithm or how it is to be implemented other than to say that arbitration must be “fair.” This is not to say that there cannot be a relative priority scheme among masters but rather that every master gets a chance at the bus. Note in Figure 12 that even though Device A wants to execute another transaction, he must wait until Device B has executed his transaction.
Bus Parking:
A master device is only allowed to assert its REQ# when it actually needs the bus to execute a transaction. In other words, it is not allowed to continuously assert REQ# in order to monopolize the bus. This violates the low-latency spirit of the PCI spec. On the other hand, the specification does allow the notion of “bus parking.” The arbiter may be designed to “park” the bus on a default master when the bus is idle. This is accomplished by asserting GNT# to the default master when the bus is idle. The agent on whom the bus is parked can initiate a transaction without first asserting REQ#. This saves one clock. While the choice of a default master is up to the system designer, the specification recommends parking on the last master that acquired the bus.
Chapters:
Bibliography
Submitted by: Rovin and Sagar
Description :
This is the one stop educational site for all Electronic and Computer students. If you want to learn something new then we are here to help. We work on Microcontroller projects, Basic Electronics, Digital electronics, Computer projects and also in basic c/c++ programs.
#Home #Sitemap #Submit #Terms of Use
Copyright©2011 electrofriends.com All Rights Reserved
Contact:info@electrofriends.com | Powered by Dhyeya
December 28th, 2009 at 9:21 pm
I really liked this post. Can I re-post it to my site? Thank you in advance.
August 25th, 2010 at 1:58 am
i cannot access anything but the first page
February 14th, 2011 at 11:26 am
Hi,
Nice post, but you may want to fix Chapter 5: Configuration space decoding.
“CONFIG_ADDRESS 0x3f8
CONFIG_DATA 0x3fc”
0x3F8 and 0x3FC are UART0, not the PCI registers. Note that the diagram shows the correct address.
March 7th, 2011 at 1:22 am
Excellent brief view on PCI. Any one can easily understand the gist of this post on PCI protocol.
Thank You.
March 27th, 2011 at 8:42 pm
excellent description…..
June 5th, 2011 at 5:36 pm
Thanks, i will certainly learn from it.
December 25th, 2011 at 7:30 am
Thanks for your tuhgoths. It’s helped me a lot.
January 20th, 2012 at 3:14 pm
[...] Introduction to PCI Protocol [...]