PCI匯流排學習(二) PCI匯流排仲裁

2021-07-09 22:11:38 字數 3378 閱讀 3973

幻燈片 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

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。

PCI匯流排(二)

pci網絡卡驅動程式分析 針對 gnic ii 的千兆乙太網卡,源程式檔案 drivers net hamachi.c 1 初始化 static int init hamachi init void 進入bus add driver int bus add driver struct device ...

PCI匯流排原理 二

pci即peripheral component interconnect 中文意思是 外圍器件互聯 是由 pcisig pci special interest group 推出的一種區域性並行匯流排標準。在現在電子裝置中應用非常廣泛,下面我詳細介紹下 pci匯流排的工作原理,希望對大家有所幫助。...

pci匯流排定時協議 PCI匯流排標準及協議

首先?pagenum physaddress 另外。因為硬體裝置讀寫的是物理記憶體。舉例如下。專用晶元可以實現完整的pci主裝置與從裝置模式的介面功能?vpicd physically unmask rtcirqhandle ram晶元為資料處理提供快取功能,但各協議互不相容,而且各狀態的跳轉條件比...