PCI的posted事務和non-posted事務

一,posted事務和non-posted事務

https://blog.csdn.net/icxiaoge/article/details/80456837

https://blog.csdn.net/fzhykx/article/details/79718744

簡單來說:posted事務就是在request傳到下一級時,上游請求就結束了(此時事務還沒有到達target,也還沒有完成),又下一                     級繼續完成request。

                  non-posted事務,需要等到completion的response結束後,才能結束一次request。

                  由於non-posted事務會一直等到事務完成才釋放總線,所以很影響總線的帶寬,爲此出現了delayed事務和split事務。

 二、delayed事務以及delayed事務的順序要求

PCI橋接受上游的request後,向下傳遞request,如果16個週期後依舊沒有迴應,這時候下游的橋就使用retry信號中斷請求,PCI橋收到Retay信號後,就中斷request信號,釋放總線,計數一段時間後,重新發起一個delayed-request,若依舊16個週期沒有反應,下游繼續發送retay,pci橋在停止request,計數一段時間後再重新發起,如此反覆直到target 準備好數據完成(此時的完成標記成delayed總線完成。)

 

 只有memory write(PMW(posted-memory write))和message可以是posted 事務

 

 三、delayed事務執行過程中要注意的順序問題

總的來講:

1、PMW不能越過之前的PMW執行(如果前後兩個posted寫,A是寫,B是標記寫好,B先於A執行,如果此時出現讀事務,就會出現讀舊數據的錯誤),PMW要能夠越過其他的non-posted事務執行(爲了防止死鎖/提高總線利用率)

2、DRC/DWC要可以越過DRR/DWR事務執行,也是爲了避免死鎖的問題

3、delayed read/write request 都只是一個request,只有得到grant後,事務纔開始執行,所以爲了防止死鎖和提高總線利用率,這個request可能因爲之前提到的優先級問題被discard掉。(而一個橋處理delayed事務的能力是有限度的,假設多個delayed事務都在執行,又來了新的delayed事務,可能會導致其中一個delayed事務被bypass 掉,所以南橋有一個針對LPC事務的處理,爲防止對LPC的事務被bypass,會計數retry的次數,達到閾值後,就將該request移到pending-request buffer中,過一會兒再重新發起一個request。

 

 

 

發佈了30 篇原創文章 · 獲贊 10 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章