幻燈片 9
在一定時間内,可能有多個bus master請求使用總線傳輸資料,每個請求總線的master都會assert它的REQ#信号,來告訴仲裁器他要申請使用總線,仲裁器一般內建于晶片組中。
幻燈片 10
如果仲裁器是可程式設計的,啟動配置軟體可以通過讀取Max_Lat配置寄存器來決定每個bus mater的優先級。如果總裁器件不支援程式設計,則可以忽略這個寄存器。
幻燈片 11
A,B是需要經常通路總線的,XYZ是不經常通路總線的,是以仲裁器決定的他們通路總線的順序可能為:
A->B->X->A->B->Y->A->B->Z.。。。
幻燈片 12
如果一個master發起了一個transaction之後,立即又要進行另一個transaction,則它會在assert了FRAME#信号,開始目前transaction後繼續保持REQ#信号。否則,master會deassert REQ#信号。
隐藏總線仲裁:PCI規範允許目前bus master進行資料傳輸的同時進行總線仲裁,如果仲裁器決定将下次transaction的總線所有權給另一個master,則它會移除目前master的GNT#信号,而向下一個總線所有者發出GNT#信号。
Bus parking:總線仲裁可以設計實作bus parking機制,當總線處于空閑狀态時,仲裁器可以assert一個預設的bus master的GNT#信号,這樣,當這個bus master申請總線的時候,它可以立即得到總線所有權。如果接下來這個bus master還要用總線,則它不需要assert REQ#信号,而隻需看一下如果總線處于空閑狀态并且自己的GNT#信号處于assert狀态,那麼它就可以立即發起transaction。将bus park在哪個master上取決于仲裁器的設計,spec推薦将bus park在最後一個使用總線的master上。
如果仲裁器實作了bus parking,則當總線空閑時,bus park在的那個master要負責驅動AD,C/BE 和par信号,防止它們懸空。如果仲裁沒有實作bus parking機制,則仲裁器要負責這件事情。
幻燈片 13
LT (Master Latency Timer):定義了bus master在獲得了總線所有權,并開始了一次transaction後,它允許保持總線所有權的最少時間。
工作方式:發起transaction後,master的LT初始化為寫入的起始值。接下來在每個時鐘上升沿,LT減一。如果master在進行一次transaction時,仲裁器移除了它的GNT# 信号,此時,目前LT尚未過期的話(LT>0),則它可以繼續擁有總線,直到結束了這次burst transaction或者LT過期才釋放總線。
Min_Gnt (read only) 和 PCI bus speed 共同決定LT值。
幻燈片 14
Example of Arbitration
Clock1的上升沿,仲裁器檢測到master A申請總線,于是在第一個clock中assert GNT# A,在第一個clock中master B開始申請使用總線。
Clock2的上升沿,master A檢測到自己的GNT# asserted,表明總線已經分給自己,并且FRAME#信号和IRDY#信号均為deassert狀态,表明總線空閑,是以在clock2期間assert FRAME#信号開始第一個transaction,并在address phase驅動起始位址和command資料到AD和C/BE線上。因為master A還有一個transaction要進行,是以他保持它的REQ#信号處于assert狀态。總裁器在上升沿時檢測到兩個master均在申請總線,于是進行總線仲裁,仲裁結果是master B勝,是以在clock2期間deassert GNT# A,仲裁器會延時一個周期assert GNT#B,因為如果同時的話可能會引起AD線的競争(總線技術上可能處于idle)
Clock3的上升沿,master A檢測到自己的GNT#信号被deassert,即總線被強占,但由于它的LT尚未過期,是以可以繼續擁有總線,master A開始第一個DATA phase write,drive data和byte enable信号到總線上,并assert IRDY#信号表明資料已經準備好。Clock3期間,仲裁器assert GNT#B。
Clock4的上升沿,IRDY#信号和TRDY#信号均為asserted,第一個data傳輸完成。Master B會在每個clock上升沿持續檢測它的GNT#信号直到它取得總線。
Clock5的上升沿IRDY#信号和TRDY#信号均為asserted,第二個data傳輸完成。Clock5期間,master A 保持IRDY# asserted 并deassert FRAME#信号,表明這是最後一個data phase。
Clock6的上升沿,IRDY#信号和TRDY#信号均為asserted,第三個data傳輸完成。Clock6期間,master A deassert IRDY#信号,總線傳回到空閑狀态。
Clock7的上升沿,master B檢測到總線空閑,并且自己的GNT#處于assert狀态,表明它擁有總線,于是在clock7期間關閉REQ#信号并assert它的FRAME#信号開始transaction,master B驅動位址和command指令到總線上。
Clock8的上升沿,仲裁器檢測到master B REQ#deassert而master A REQ#still asserted,則仲裁器在clock8期間deassert master B的GNT#并assert master A的GNT#。Clock8期間,master B deassert它的FRAME#信号表明這是它唯一的data phase,并驅動data和byte enable到總線,它assert它的IRDY#信号表明資料已經準備好。
Clock9的上升沿,,IRDY#信号和TRDY#信号均為asserted,data傳輸完成。在clock9期間,master B deassert它的IRDY#,總線傳回空閑狀态。
Clock10的上升沿,master A檢測到總線空閑,并且自己的GNT#處于assert狀态,于是在clock10期間deassert它的REQ#信号,并assert它的FRAME#信号開始它的第二次transaction。