高速串行總線技術(shù)發(fā)展與應(yīng)用分析
PCIe數(shù)據(jù)包支持基于地址的讀寫(xiě)語(yǔ)義。在PCIe系統(tǒng)中,發(fā)起讀或?qū)懙膶?shí)體必須知道系統(tǒng)的全局存儲(chǔ)器映射圖中的目標(biāo)地址,這對(duì)控制平面應(yīng)用而言是很自然的一種方法。然而,這種對(duì)全局地址映射圖的依賴(lài)性也會(huì)導(dǎo)致難以發(fā)展的緊耦合軟件系統(tǒng)。本文引用地址:http://m.butianyuan.cn/article/157630.htm
PCIe協(xié)議也支持通過(guò)消息TLP的消息傳送。不過(guò)消息TLP只支持有限數(shù)量的功能,如中斷和復(fù)位信號(hào)。這點(diǎn)與以太網(wǎng)和RapidIO消息包有很大的不同,后者可用于進(jìn)程間通信。
與PCIe 不同,建立在以太網(wǎng)物理層之上的軟件協(xié)議只支持消息語(yǔ)義。在發(fā)送消息時(shí),發(fā)送者只需知道接收地址。尋址機(jī)制一般是分層的,因此沒(méi)有哪個(gè)節(jié)點(diǎn)必須知道所有的地址。地址可能會(huì)隨系統(tǒng)發(fā)展而改變,支持軟件單元實(shí)現(xiàn)相互間的松散耦合。這些屬性對(duì)數(shù)據(jù)平面應(yīng)用來(lái)說(shuō)是必要的。
RapidIO同時(shí)支持讀/寫(xiě)和消息語(yǔ)義。除了明顯的架構(gòu)優(yōu)勢(shì)和系統(tǒng)靈活性外,對(duì)讀/寫(xiě)和消息處理的支持允許單路互連同時(shí)用于控制和數(shù)據(jù)平面。RapidIO系統(tǒng)因此要比必須結(jié)合PCIe和以太網(wǎng)的系統(tǒng)來(lái)得更簡(jiǎn)單,從而具有降低功耗和成本的優(yōu)勢(shì)。
PCIe不可能在其數(shù)據(jù)包定義中合并進(jìn)程間通信消息語(yǔ)義,因?yàn)榕c傳統(tǒng)PCI和PCI-X總線的操作相沖突。PCIe是圍繞根聯(lián)合體概念設(shè)計(jì)的,這個(gè)聯(lián)合體只包含系統(tǒng)中的處理器。在這個(gè)范例中,沒(méi)有消息處理是在PCIe到其它軟件實(shí)體上完成的,因此消息語(yǔ)義沒(méi)有價(jià)值。
人們對(duì)以太網(wǎng)通過(guò)遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)(RDMA)協(xié)議支持讀寫(xiě)語(yǔ)義尚存爭(zhēng)議,該協(xié)議支持設(shè)備間進(jìn)行直接存儲(chǔ)器拷貝。然而,RapidIO(和PCIe)讀寫(xiě)語(yǔ)義的效率要比RDMA高得多。RDMA協(xié)議建立在其它以太網(wǎng)協(xié)議之上,如TCP,并且每個(gè)數(shù)據(jù)包都需要大量的包頭開(kāi)銷(xiāo)。與RapidIO讀/寫(xiě)事務(wù)處理相比,RDMA實(shí)現(xiàn)在時(shí)延和帶寬方面付出的代價(jià)都要大得多。雖然一些RDMA能幫助卸載已有引擎的負(fù)擔(dān),但很難想象將RDMA用于控制平面功能,例如對(duì)寄存器進(jìn)行編程。
消息語(yǔ)義的一種可能應(yīng)用是其它協(xié)議的封裝。RapidIO擁有封裝各種協(xié)議的標(biāo)準(zhǔn)。這種封裝能力給系統(tǒng)設(shè)計(jì)人員提供了許多優(yōu)勢(shì),包括未來(lái)將要證明的RapidIO背板。任何未來(lái)、傳統(tǒng)或?qū)S袇f(xié)議都可以用標(biāo)準(zhǔn)的RapidIO組件進(jìn)行封裝和傳送。例如,用于以太網(wǎng)封裝的現(xiàn)有 RapidIO規(guī)范就允許設(shè)計(jì)人員在基于RapidIO的系統(tǒng)中使用基于以太網(wǎng)的軟件。
以太網(wǎng)也支持封裝,并且有多種封裝標(biāo)準(zhǔn)可以選擇。RapidIO的封裝效率要比以太網(wǎng)高,因?yàn)橐蕴W(wǎng)協(xié)議層需要更多的頭部開(kāi)銷(xiāo)。
曾經(jīng)有個(gè)組織試圖對(duì)在PCIe類(lèi)結(jié)構(gòu)上的各種協(xié)議封裝進(jìn)行標(biāo)準(zhǔn)化。但幾年前這個(gè)組織宣告失敗,因?yàn)檫^(guò)程太過(guò)復(fù)雜。由于與傳統(tǒng)總線相關(guān)的要求,很難將PCIe擴(kuò)展成適合嵌入式系統(tǒng)的結(jié)構(gòu)。
可靠性和可用性
大多數(shù)系統(tǒng)對(duì)可靠性和/或可用性都有要求。有可靠性和/可用性要求的系統(tǒng)需要誤碼檢測(cè)、誤碼提醒、故障元件分析與隔離以及恢復(fù)機(jī)制。從高層看,PCIe、RapidIO和以太網(wǎng)在所有這些方面都要相似的功能。不過(guò)在備份策略以及快速隔離系統(tǒng)使之免受故障元件影響的功能方面有很大差別。
起初,互聯(lián)網(wǎng)使用網(wǎng)絡(luò)層的軟件協(xié)議,在可能會(huì)經(jīng)歷嚴(yán)重?fù)p傷的網(wǎng)絡(luò)上提供可靠的通信。因此以太網(wǎng)的原始誤碼管理功能主要用于檢測(cè)、隔離和避免網(wǎng)絡(luò)中的新漏洞,而不是用于單個(gè)系統(tǒng)的魯棒性。系統(tǒng)可靠性通過(guò)網(wǎng)絡(luò)元件的復(fù)制來(lái)實(shí)現(xiàn)。后來(lái)的性能增強(qiáng)則增加了標(biāo)準(zhǔn)化的誤碼捕捉和誤碼提醒機(jī)制來(lái)簡(jiǎn)化網(wǎng)絡(luò)管理。
RapidIO具有與以太網(wǎng)類(lèi)似的備份、誤碼捕捉和誤碼提醒功能。PCIe支持有限的備份策略,因?yàn)樗膫鬏攲觾H限于樹(shù)狀結(jié)構(gòu)。上文提及的PCIe非透明橋接(NTB)允許兩個(gè)或多個(gè)樹(shù)狀結(jié)構(gòu)進(jìn)行通信,足以實(shí)現(xiàn)1+1備份(也稱(chēng)為1:1備份)。NTB很難拓展到采用N+M備份機(jī)制的系統(tǒng)。理論上多根I/O虛擬化(MRIOV)可以用來(lái)在PCIe系統(tǒng)中支持N+M備份,其中N+M的總數(shù)量不超過(guò)8。然而,由于MRIOV系統(tǒng)中的子樹(shù)無(wú)法相互通信,從故障恢復(fù)可能要求系統(tǒng)中斷運(yùn)行,目的是重新配置系統(tǒng),以便隔離故障元件,并采用新的元件。
與PCIe和RapidIO相比,以太網(wǎng)的誤碼檢測(cè)機(jī)制通常比較慢,因?yàn)橐蕴W(wǎng)是針對(duì)全球范圍內(nèi)分布的網(wǎng)絡(luò)設(shè)計(jì)的。PCIe和RapidIO都有誤碼檢測(cè)和提醒機(jī)制,其時(shí)延要比以太網(wǎng)小得多。
雖然PCIe和RapidIO都保證數(shù)據(jù)包的發(fā)送,但在誤碼條件下它們會(huì)棄包,以防止故障元件造成致命擁塞。然而,PCIe誤碼條件機(jī)制是不可配置的。當(dāng)鏈路必須再學(xué)習(xí)時(shí)數(shù)據(jù)包通常會(huì)被丟棄。另外,PCIe隔離機(jī)制只在幾個(gè)毫秒后就被激活。這些并不是所有系統(tǒng)都理想的行為。
相反, RapidIO標(biāo)準(zhǔn)允許對(duì)誤碼作出特殊系統(tǒng)響應(yīng),如鏈路再學(xué)習(xí)。當(dāng)誤碼發(fā)生時(shí),系統(tǒng)會(huì)立即開(kāi)始棄包,或者它會(huì)保留包,并允許擁塞發(fā)生。RapidIO使用 '漏桶'式誤碼計(jì)數(shù)方法,并有兩個(gè)可配置門(mén)限。DEGRADED門(mén)限能盡早提醒系統(tǒng)管理軟件鏈路上正在發(fā)生誤碼。FAILED門(mén)限用于觸發(fā)丟包以實(shí)現(xiàn)用戶(hù)定義的誤碼率。RapidIO誤碼管理的靈活性反映了嵌入式系統(tǒng)設(shè)計(jì)人員的不斷變化需求。
評(píng)論