最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

“PCI”協議基本知識(2)

2023-02-15 11:05 作者:開發(fā)員阿夢  | 我要投稿

讀寫事務工作過程

PCI總線規(guī)范中規(guī)定了兩類數據傳送方式,Posted和Non-Posted(下文簡稱為P方式和NP方式),對應的有Posted總線事務和Non-Posted總線事務(下文簡稱P事務和NP事務)。

P事務是一種自頂向下逐級釋放資源的模式。當上游總線的數據傳輸事務到達下一級的PCI橋后,由該PCI橋接管事務,將事務轉發(fā)到下游總線,同時結束上游總線的事務。本質上,是該PCI橋重新開辟了一個事務轉發(fā)給下游總線,上游總線就不用管了。

NP事務,則在原則上需要等待數據最終傳送到目標設備,返回響應信息之后,才能結束當前的總線事務。

PCI規(guī)范中規(guī)定,只有存儲器寫請求可以使用P事務,而存儲器讀請求、I/O讀寫請求、配置讀寫請求只能采用NP事務。采用NP方式的數據傳輸將更可靠,但是數據傳輸中對PCI總線資源的占用也十分嚴重。在NP方式下,總線資源的釋放,也是在目標設備的響應信息回送過程中,進行的逐級釋放,因此很容易引起PCI總線的擁塞。對于這一特點,PCI橋對NP事務有優(yōu)化策略,即使用Delayed總線事務來處理NP事務。PCI總線的Delay總線事務由Delay讀寫請求和Delay讀寫完成總線事務組成。主要思想是在NP事務的過程中引入Retry周期。Retry周期指的是PCI橋重新發(fā)起相同的總線周期。當HOST主橋啟動NP方式的PCI讀寫總線事務后,期后的第一個PCI橋首先使用Retry周期,使HOST主橋擇時重新發(fā)起相同的總線周期,此時該PCI橋上游的PCI總線將被釋放。當該PCI橋繼續(xù)轉發(fā)讀寫請求時使用的便是Delayed總線請求。具體的一個示例過程見書中[P20]。


HOST處理器訪問PCI設備

對于I/O讀寫事務和存儲器讀寫事務,要搞清楚I/O地址空間和存儲器地址空間的區(qū)別。PCI總線域中,有PCI設備的存儲器地址空間和I/O地址空間;在存儲器域中,有存儲器的存儲器地址空間和I/O地址空間。但是,是否具有獨立的I/O地址空間,因處理器相異。在x86處理器中,是有獨立的I/O地址空間的,且存儲器域的I/O地址空間和PCI總線域的I/O地址空間相同。但是,仍然要知道區(qū)分這兩個概念。

處理器對于PCI設備發(fā)起的I/O讀寫請求和存儲器讀寫請求的處理過程是類似的,處理器將其可以訪問的存儲器域的I/O地址或者存儲器地址通過HOST主橋轉換為PCI總線域的I/O地址或者存儲器地址。書中的[P16下方→P17]詳細介紹了處理器訪問PCI設備的存儲器寫事務的處理過程;[P17下方→P18]詳細介紹了處理器使用純粹NP方式訪問PCI設備的存儲器讀事務的處理過程,這個過程清楚地展示了NP方式的一個特點,就是PCI總線在向上傳遞目標設備的響應時,后方不再使用的總線事務才會關閉(結束)。對于I/O寫事務的過程,則是留給讀者考慮(I/O讀事務和存儲讀事務的處理過程類似)。

?這里再次給出了圖1-1,接下來嘗試探討處理器向PCI設備發(fā)起I/O寫事務的過程。

以處理器向PCI設備11發(fā)起I/O讀寫操作為例。這里假設事務過程使用的是純粹的NP方式(沒有使用Delayed傳送方式)。I/O寫總線事務的處理過程如下:

a.??? 首先處理器將要傳遞的數據放入通用寄存器中,然后向PCI設備映射到存儲器域的地址進行I/O寫操作。對于有獨立I/O地址空間的處理器(如x86),在事務開始前,x86處理器會將PCI設備使用的I/O地址映射到存儲器域的I/O地址空間中,之后處理器可以通過IN、OUT等指令對存儲器域的I/O地址進行訪問,然后通過HOST主橋將PCI存儲器域的I/O地址轉換為PCI總線域的I/O地址;對于沒有獨立I/O地址的處理器,如PowerPC,在HOST主橋初始化的時候,將PCI設備使用的I/O地址空間映射為處理器的存儲器地址空間,在請求到來時,HOST主橋再進行地址的轉換。

b.??? HOST主橋x接收來自處理器的I/O寫請求(在HOST主橋x和y應該是經歷過一個地址范圍的判斷),HOST主橋x進行存儲器地址到PCI總線域的PCI總線地址的轉換,然后向PCI總線x0發(fā)起I/O寫總線事務;

c.???? PCI總線上的所有設備都將監(jiān)聽這個事務,最后PCI橋x1接收這個事務,然后該橋向PCI總線x1發(fā)起新的PCI總線I/O寫請求。

d.??? PCI總線x1上所有的設備都將監(jiān)聽此事務,最后PCI設備11接收此事務,通過設備的控制器接口將事務中的數據寫入到指定地址,并將這個寫請求總線事務轉換為I/O寫完成總線事務(回送響應,回應)?!盎貞毕蛏蟼鬟f。

e.??? “回應”上傳到PCI橋x1時,結束PCI總線x1上的PCI總線事務;

f.???? “回應”通過PCI總線x0繼續(xù)上傳到HOST主橋x時,結束PCI總線x0上的PCI總線事務。

g.??? HOst主橋x將“回應”傳遞給處理器,最終結束處理器的I/O寫操作。

PCI設備讀寫主存儲器

PCI讀寫主存儲器是DMA過程。在PCI設備的DMA過程中,使用的地址也是PCI總線域的地址,因此當DMA請求到達HOST主橋時候,也需要主橋將地址轉換為存儲器域的地址。書中[P18下方→P19]的內容詳細介紹了PCI設備向主存儲器發(fā)起DMA讀寫的過程。根據表1-2 “PCI總線事務”中的說明,PCI總線事務中的Memory Read/Write(存儲器讀/寫)可以是處理器向PCI設備發(fā)起的,也可以是PCI設備向處理器發(fā)起的。因此,這里的DMA讀寫操作對應的其實是一種PCI設備對處理器發(fā)起的存儲器讀寫總線事務。(I/O讀寫事務只能是處理器向PCI設備發(fā)起的?)

PCI設備處理可以向主存儲器發(fā)起DMA操作,還可以向其他的PCI設備發(fā)起讀寫操作,不過不常見(目前我的理解是,這中讀寫事務也算一種存儲器讀寫事務,同樣的寫事務將使用P方式,讀事務將使用NP方式)。

還是參考上面的圖1-1,書中介紹了PCI設備11向主存儲器發(fā)起DMA讀寫(PCI存儲器讀寫事務)的詳細過程[P18-19],以及PCI設備11將數據寫入PCI設備01的過程[P19下方],接下來嘗試探討PCI設備11從PCI設備01讀取數據的過程。

為方便說明,還是將圖1-1放在這里。

a.?????? PCI設備11將PCI讀總線事務發(fā)向PCI總線x1上,PCI橋x1和PCI設備12同時監(jiān)聽此總線事務。

b.?????? PCI橋x1將接收這個總線事務,并將此PCI讀總線事務上推到PCI總線x0。

c.?????? PCI總線x0上的所有設備將監(jiān)聽此PCI讀總線事務,最后由PCI設備01接收這個數據請求,并將所需數據通過PCI總線x0傳輸到PCI橋x1,此時結束PCI總線x0上的讀請求總線事務。

d.?????? PCI橋x1將收到的數據通過PCI總線x1傳輸給PCI設備11,此時結束PCI總線x1上的總線事務。


總結

好的,PCI總線的知識介紹,告一段落。我把《PCI Express體系結構導讀》中第一章關于PCI協議的知識基本都覆蓋到了。這個總結的過程對知識有很好的鞏固作用,但是效率也低,之后我不會再做這么詳細的總結了,而打算采取更為抽象的腦圖模式,或者是邊看便總結。不過這個付出是值得的,因為PCI協議的知識作為PCIe協議的重要基礎,學得再怎么扎實都不過分。


“PCI”協議基本知識(2)的評論 (共 條)

分享到微博請遵守國家法律
玉溪市| 望奎县| 城市| 鹤岗市| 武邑县| 应用必备| 威宁| 称多县| 沂源县| 依安县| 伊金霍洛旗| 平定县| 高青县| 莱州市| 桃源县| 吐鲁番市| 北海市| 佛学| 深州市| 上饶市| 旬阳县| 巴彦县| 象州县| 博湖县| 义马市| 上林县| 额敏县| 化德县| 巢湖市| 新泰市| 府谷县| 广德县| 鄯善县| 百色市| 朝阳区| 呼和浩特市| 台东市| 泾源县| 城口县| 彭州市| 韶山市|