了解PCI Express的Posted傳輸與Non-Posted傳輸

0.寫在前面

本文首發(fā)于公眾號【兩猿社】检诗,后續(xù)將在公眾號內(nèi)持續(xù)更新~

其實算下來接觸PCIe很久了拉宗,但是由于之前換工作,一直沒有系統(tǒng)的學(xué)習(xí)和練手項目,現(xiàn)在新項目買了Synopsys的PCIe IP踊兜,總算是有機(jī)會和時間來整理學(xué)習(xí)了~~~

目前PCI Express總線取代PCI總線成為PC局部總線的主流,且PCIe在很大程度上繼承了PCI的設(shè)計思想佳恬,可以說PCI是PCIe的基礎(chǔ)捏境,本文所重點講解的Posted和Non-Posted傳輸也是基于PCI總線講解,但在PCIe總線中絕大部分是相同的毁葱,PCI中的HOST主橋可以看做RC垫言,PCI橋可以看做Switch,PCI設(shè)備即EP倾剿。

1.簡介

基于PCI總線的處理器系統(tǒng)

PCI規(guī)定了兩種數(shù)據(jù)傳輸方式筷频,分別是Posted傳輸Non-posted傳輸,也叫做Posted事務(wù)和Non-Posted事務(wù)前痘。在PCIe數(shù)據(jù)傳輸中同樣也使用這兩種方式凛捏,但在PCI總線中,Non-Posted傳輸可以使用Delayed方式完成芹缔,而在PCIe總線中所有的 Non-Posted傳輸都使用Split方式完成坯癣,不再使用Delayed方式。

1.Posted傳輸

Posted總線事務(wù)是指PCI主設(shè)備向目標(biāo)設(shè)備進(jìn)行數(shù)據(jù)傳輸時最欠,數(shù)據(jù)到達(dá)PCI橋后示罗,由PCI橋接管來自上游總線的總線事務(wù)惩猫,并將其轉(zhuǎn)發(fā)到下游總線,此時上游總線可釋放蚜点。

使用這種數(shù)據(jù)傳輸方式轧房,數(shù)據(jù)請求在通過PCI總線后,就可以逐級釋放總線資源禽额。

下面以DMA寫操作為例锯厢,說明PCI的Posted傳輸(DMA操作即PCI設(shè)備主動對系統(tǒng)存儲器進(jìn)行操作)。

PCI設(shè)備11向主存儲器寫數(shù)據(jù):


DMA寫(Posted傳輸)
  1. 首先PC設(shè)備11將主存儲器寫請求發(fā)向PCI總線x1脯倒,注意這個寫請求使用的地址是PCI總線域的地址实辑。
  1. PCI總線x1上的所有設(shè)備監(jiān)聽這個請求,因為PCI設(shè)備11是向處理器的存儲器寫數(shù)據(jù)藻丢,所以PCI總線x1上的 PCI Agent都不會接收這個數(shù)據(jù)請求剪撬。
  1. PCI橋x1發(fā)現(xiàn)當(dāng)前總線事務(wù)使用的PCI總線地址不是其下游設(shè)備使用的PCI總線地址,則接收這個請求悠反,并結(jié)束來自PCI設(shè)備11的 Posted存儲器寫請求残黑,將這個數(shù)據(jù)請求推到上游PCI總線上,即PCI總線x0斋否。
  1. PCI總線x0上的所有設(shè)備包括HOST主橋?qū)⒈O(jiān)聽這個請求梨水,PCI總線x0上的PCI設(shè)備也不會接收這個請求,此時這個數(shù)據(jù)請求由HOST主橋x接收茵臭,并結(jié)束PCI橋x1的Posted存儲器寫請求疫诽。
  1. HOST主橋x發(fā)現(xiàn)這個數(shù)據(jù)請求發(fā)向存儲器,則將來自PCI總線x0的PCI總線地址轉(zhuǎn)換為存儲器域地址旦委,通過存儲器控制器將數(shù)據(jù)寫入存儲器奇徒,完成PCI設(shè)備11的DMA寫操作(沒有完成報文)。

2.Non-Posted傳輸

Non-Posted總線事務(wù)是指PCI主設(shè)備向目標(biāo)設(shè)備進(jìn)行數(shù)據(jù)傳輸時缨硝,數(shù)據(jù)必須到達(dá)最終目的地后才能結(jié)束當(dāng)前事務(wù)總線的傳輸方式摩钙。

PCI總線在沒有結(jié)束當(dāng)前總線事務(wù)時必須等待傳輸完成,不會釋放總線資源查辩。這種等待將嚴(yán)重阻塞當(dāng)前的PCI總線的其他數(shù)據(jù)傳送胖笛。因此在PCI總線中使用Delayed方式完成Non-Posted,在PCIe總線中使用Split方式完成 Non-Posted總線事務(wù)宜岛。

PCI設(shè)備進(jìn)行DMA讀與DMA寫過程類似长踊,不過存儲器讀總線事務(wù)是使用Non-Posted總線事務(wù)。

PCI設(shè)備11向主存儲器讀數(shù)據(jù):


DMA讀(Non-Posted傳輸)
  1. 首先PCI設(shè)備11將存儲器讀請求發(fā)向PCI總線x1谬返。
  1. PCI總線x1上的所有設(shè)備監(jiān)聽這個請求之斯,因為PCI設(shè)備11是從存儲器中讀取數(shù)據(jù),所以PCI總線x1上的設(shè)備不會接收這個請求。PCI橋x1發(fā)現(xiàn)下游PCI總線沒有設(shè)備接收佑刷,則接收這個數(shù)據(jù)請求莉擒,并將它推到上游PCI總線上,即PCI總線x0上瘫絮。
  1. PCI總線x0上的設(shè)備監(jiān)聽這個請求涨冀,也不會接受這個數(shù)據(jù)請求,最后這個數(shù)據(jù)請求被HOST主橋x接收麦萤。
  1. HOST主橋發(fā)現(xiàn)這個數(shù)據(jù)請求是發(fā)向主存儲器的鹿鳖,則將PCI總線x0的PCI總線地址轉(zhuǎn)為存儲器地址,之后通過控制器將數(shù)據(jù)讀出壮莹,帶著讀完成信息轉(zhuǎn)發(fā)到HOST主橋x翅帜。
  1. HOST主橋x將這個帶數(shù)據(jù)的讀完成事務(wù)經(jīng)由PCI橋x1傳遞到PCI設(shè)備11,設(shè)備11接收到這個數(shù)據(jù)后結(jié)束DMA讀(有完成報文)命满。

在上述Non-Posted總線事務(wù)中涝滴,只有讀完成依次通過PCI總線x1和x0后,存儲器讀總線事務(wù)才不繼續(xù)占用PCI總線x1和x0的資源胶台〖叽可以發(fā)現(xiàn)這種傳輸并不合理,PCI總線為了解決這個總線擁塞問題诈唬,使用Delayed傳輸方式韩脏。

3.Split傳輸方式

在PCIe總線中,有以下幾種傳輸:存儲器讀寫铸磅、I/O讀寫和配置讀寫請求TLP赡矢,這些TLP由以下幾類報文組成。

  • 存儲器讀請求TLP和讀完成TLP

  • 存儲器寫請求TLP

  • 原子操作請求和完成報文

  • I/O讀寫請求TLP和讀寫完成TLP

  • 配置讀寫請求TLP和配置讀寫完成TLP

  • 消息報文(Messages)

以上幾種類型中愚屁,除存儲器寫請求使用Posted總線事務(wù)外济竹,其余的傳輸類型都使用Non-Posted總線事務(wù)痕檬,上面提到Non-Posted總線事務(wù)在PCI和PCIe中會轉(zhuǎn)換為Delayed事務(wù)和Split事務(wù)進(jìn)行霎槐。

PCI總線的Delayed傳輸使用Retry的方式進(jìn)行,這里不再講解梦谜,重點對PCIe總線中的Split總線事務(wù)進(jìn)行講解丘跌。

Split總線事務(wù)替代了PCI總線的Delayed數(shù)據(jù)傳輸方式,提高了Non-Posted總線事務(wù)的傳輸效率唁桩。Split總線事務(wù)是在PCI-X中提出闭树,而PCIe也繼承了這種傳輸方式。

下面以PCI-X中的Split傳輸為例荒澡。

PCI-X在進(jìn)行存儲器讀總線事務(wù)時报辱,總線事務(wù)的發(fā)起方(Requester)使用Split總線事務(wù)與總線事務(wù)的接收端(Completer)進(jìn)行數(shù)據(jù)交換,步驟如下:

  1. Requester向 Completer發(fā)起存儲器讀請求總線事務(wù)单山;
  1. 這個請求事務(wù)在到達(dá) Completer之前碍现,可能會經(jīng)過多級PCI橋幅疼。這些PCI橋使用 Split response周期結(jié)束當(dāng)前總線事務(wù),釋放上游PC總線昼接,之后繼續(xù)轉(zhuǎn)發(fā)這個存儲器讀請求爽篷,直到 Completer認(rèn)領(lǐng)這個存儲器讀請求事務(wù)。
  1. completer認(rèn)領(lǐng)存儲器讀請求總線事務(wù)后慢睡,會記錄 Requester的D號逐工,并使用 Split Response 周期結(jié)束存儲器讀請求總線事務(wù)。
  1. Completer準(zhǔn)備好數(shù)據(jù)后,將重新申請總線漂辐,并使用存儲器讀完成總線事務(wù)主動將數(shù)據(jù)傳送給 Requester泪喊。在這個報文中包含 Requester的號(完成報文使用的是ID路由)。
  1. 這些完成報文根據(jù)ID路由方式髓涯,最終到達(dá) Requester窘俺。 Requester從完成報文中接收數(shù)據(jù)并完成整個存儲器讀請求。

Split傳輸可以看成是將請求和完成分開复凳,分別使用Posted方式進(jìn)行的傳輸瘤泪。

Posted與Non-Posted總線事務(wù)是PCIe的基礎(chǔ),PCI Express相關(guān)知識總結(jié)會持續(xù)更新哦育八,有需要的關(guān)注公眾號的后續(xù)文章对途,咱們一起學(xué)習(xí)~~

關(guān)注公眾號【兩猿社】,回復(fù)【PCIE】獲取PCI-SIG原版PCI Express標(biāo)準(zhǔn)2.0~4.0髓棋。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末实檀,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子按声,更是在濱河造成了極大的恐慌膳犹,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件签则,死亡現(xiàn)場離奇詭異须床,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渐裂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評論 3 395
  • 文/潘曉璐 我一進(jìn)店門豺旬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人柒凉,你說我怎么就攤上這事族阅。” “怎么了膝捞?”我有些...
    開封第一講書人閱讀 164,911評論 0 354
  • 文/不壞的土叔 我叫張陵坦刀,是天一觀的道長。 經(jīng)常有香客問我,道長鲤遥,這世上最難降的妖魔是什么央渣? 我笑而不...
    開封第一講書人閱讀 58,737評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮渴频,結(jié)果婚禮上芽丹,老公的妹妹穿的比我還像新娘。我一直安慰自己卜朗,他們只是感情好拔第,可當(dāng)我...
    茶點故事閱讀 67,753評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著场钉,像睡著了一般蚊俺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逛万,一...
    開封第一講書人閱讀 51,598評論 1 305
  • 那天泳猬,我揣著相機(jī)與錄音,去河邊找鬼宇植。 笑死得封,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的指郁。 我是一名探鬼主播忙上,決...
    沈念sama閱讀 40,338評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼闲坎!你這毒婦竟也來了疫粥?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評論 0 276
  • 序言:老撾萬榮一對情侶失蹤腰懂,失蹤者是張志新(化名)和其女友劉穎梗逮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绣溜,經(jīng)...
    沈念sama閱讀 45,696評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慷彤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,888評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涮毫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞬欧。...
    茶點故事閱讀 40,013評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡贷屎,死狀恐怖罢防,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唉侄,我是刑警寧澤咒吐,帶...
    沈念sama閱讀 35,731評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響恬叹,放射性物質(zhì)發(fā)生泄漏候生。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,348評論 3 330
  • 文/蒙蒙 一绽昼、第九天 我趴在偏房一處隱蔽的房頂上張望唯鸭。 院中可真熱鬧,春花似錦硅确、人聲如沸目溉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缭付。三九已至,卻和暖如春循未,著一層夾襖步出監(jiān)牢的瞬間陷猫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評論 1 270
  • 我被黑心中介騙來泰國打工的妖, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留绣檬,地道東北人。 一個月前我還...
    沈念sama閱讀 48,203評論 3 370
  • 正文 我出身青樓嫂粟,卻偏偏與公主長得像河咽,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子赋元,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,960評論 2 355

推薦閱讀更多精彩內(nèi)容