PCI Express 多播功能
多播 PCIe TLP 的傳輸和路由與單播TLP 相比略有變化。圖 4 為PCIe交換器基本功能圖,充分描述了這些差別。接收主發(fā)送的 TLP時(shí),入站端口的地址解碼決定 TLP 是一個(gè)多播 TLP (從邏輯上講,這是初始處理成為多重處理的地方)。沒有錯(cuò)誤的解碼多播 TLP 轉(zhuǎn)發(fā)到交換器的虛擬 PCI 總線。單播流量有不同的路由規(guī)則,取決于 TLP 是在P2P 橋的初級(jí)還是次級(jí)接收的。與單播流量不同,多播 TLP 是對(duì)稱轉(zhuǎn)發(fā),而不必考慮P2P 橋是否連了上行或下行端口。
本文引用地址:http://www.ex-cimer.com/article/93477.htm所有連接到虛擬 PCI 總線的端口(即P2P 橋功能)都可以接收多播 TLP,檢查地址中MCG 的 ID,防止多播接收矢量的位狀態(tài)?;诿總€(gè) MCG,多播接收矢量顯示是否允許 P2P 橋功能向其目的地轉(zhuǎn)發(fā) TLP。這將有助于交換器上每個(gè) P2P 橋功能以每組為基礎(chǔ)對(duì)多播 TLP 接收者進(jìn)行寄存。
一旦交換器內(nèi)的 P2P 橋功能接收了多播 TLP,就會(huì)在 TLP 上執(zhí)行出站處理。多播 TLP 的出站處理將取決于連接在 P2P 橋的交換器端口上的鏈路組件能力。圖 5 顯示了 PCIe 交換器到 PCIe 交換器傳輸?shù)亩嗖ツ芰Y(jié)構(gòu)的鏈路組件的情況。TLP 是在沒有修改的情況下由遠(yuǎn)程路由轉(zhuǎn)發(fā)的。不過,如上文所述,PCIe 端點(diǎn)不需要實(shí)現(xiàn)多播能力結(jié)構(gòu)來接收多播 TLP。為了支持不具有多播功能的端點(diǎn),系統(tǒng)軟件必須保證端點(diǎn)的基址寄存器覆蓋一部分多播地址范圍,或者 PCIe 交換器必須使用隨意指定的多播覆蓋機(jī)制。
由于確保端點(diǎn)功能地址范圍覆蓋的工作和多播地址范圍給系統(tǒng)設(shè)計(jì)者造成的負(fù)擔(dān),以及每個(gè)產(chǎn)品 SKU 可能需要一個(gè)唯一的代碼庫,定義明確的交換器方案需要在每個(gè)交換端口的多播能力結(jié)構(gòu)實(shí)現(xiàn)多播覆蓋功能,以優(yōu)化靈活性并利用現(xiàn)有的可用端點(diǎn)。如圖 6 所示,地址覆蓋功能機(jī)制可以用于重映射來自多播窗口到端點(diǎn)基址寄存器(BAR)窗口接收的多播 TLP 地址。地址覆蓋是由交換器端口執(zhí)行的。每個(gè)交換器端口可以配置不同的地址覆蓋值,從而獨(dú)立映射到伴隨每個(gè)端點(diǎn)的 BAR 窗口。支持 32 位和 64 位地址之間的轉(zhuǎn)換(例如,多播區(qū)域可以位于 4GB 邊界以上,而端點(diǎn) BAR 可以在 4GB 邊界以下,反之亦然。)
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論