前言:Xilinx?7系列FPGA集成了新一代PCI Express集成塊,支持8.0Gb/s數(shù)據(jù)速率的PCI Express 3.0。本文介紹了7系列FPGA PCIe Gen3的應(yīng)用接口及一些特性。
1. PCI Express規(guī)范演進(jìn)
PCIe是一種高速串行計(jì)算機(jī)擴(kuò)展總線標(biāo)準(zhǔn),旨在替代傳統(tǒng)的PCI和AGP總線標(biāo)準(zhǔn),提供更高的數(shù)據(jù)傳輸速率和更好的信號(hào)完整性?。PCIe規(guī)范自2003年推出以來(lái),已經(jīng)從最初的1.0升級(jí)到了7.0,提供了更高的帶寬和速度。?表1總結(jié)了PCIe基本規(guī)范的演變。
表1:PCIe基本規(guī)范的演變
1.由于數(shù)據(jù)包開(kāi)銷、流量開(kāi)銷和其他系統(tǒng)效率低下,可實(shí)現(xiàn)的系統(tǒng)帶寬小于有效帶寬。
除了修訂基本規(guī)范外,PCI-SIG還推廣了支持特定應(yīng)用的配套規(guī)范。一個(gè)正在迅速采用的配套規(guī)范是I/O虛擬化,特別是Single Root I/O虛擬化(SR-IOV)。SR-IOV大大提高了共享和虛擬化環(huán)境中的I/O利用率,Xilinx 7系列FPGA支持此功能。
2. 7系列FPGA PCI Express概述
每個(gè)Xilinx 7系列FPGA系列都支持PCIe集成根端口和端點(diǎn)解決方案。Artix?-7設(shè)備最多支持Gen2x4硬核配置。Kintex?-7和Virtex-7 T設(shè)備最多支持Gen2x8硬核配置。Virtex-7 XT和HT設(shè)備具有集成的Gen 3硬核內(nèi)核,最多8個(gè)通道。除了PCIe IP的集成外,第三方聯(lián)盟合作伙伴Northwest Logic和PLDA還提供針對(duì)Kintex-7和Virtex-7系列的Gen3x8軟IP解決方案。表2總結(jié)了每個(gè)器件家族支持的IP層級(jí)。
表2:7系列FPGA支持的Lane寬度和速度等級(jí)
7系列FPGA的集成IP可以使用簡(jiǎn)單的基于GUI的工具流進(jìn)行配置,以創(chuàng)建端點(diǎn)、根端口或根復(fù)合體解決方案。系統(tǒng)設(shè)計(jì)者能夠控制許多可配置的參數(shù),如通道寬度、線速率、最大有效載荷大小、FPGA邏輯接口速度、參考時(shí)鐘頻率和基址寄存器設(shè)置。另外,Xilinx還提供參考設(shè)計(jì)以加快設(shè)計(jì)進(jìn)度。這些目標(biāo)參考設(shè)計(jì)包括PCIe設(shè)計(jì)的所有組件,如DMA控制器、自定義IP、設(shè)備驅(qū)動(dòng)程序和軟件應(yīng)用程序。
3. 用于Virtex XT和HT設(shè)備的PCI Express Gen 3集成IP
Virtex-7 XT和HT設(shè)備支持多個(gè)集成的Gen 3集成塊,每個(gè)集成塊最多八個(gè)通道。該集成塊能夠使用128B/130B編碼以每通道8.0Gb/s的規(guī)定數(shù)據(jù)速率運(yùn)行。表3顯示了具有Gen 3集成塊的7個(gè)系列器件以及每個(gè)設(shè)備的塊數(shù)。
表3:Virtex-7 系列具有Gen 3功能的硬塊器件
3.1 PCIe Gen 3收發(fā)器在7系列中的優(yōu)勢(shì)
GTH收發(fā)器包含允許在PCIe Gen 3數(shù)據(jù)速率下非常穩(wěn)健運(yùn)行的功能。這些功能包括:
?收發(fā)器加重/均衡
?自適應(yīng)連續(xù)時(shí)間線性均衡器(CTLE)
?自適應(yīng)決策反饋均衡器(DFE)
收發(fā)器加重電路設(shè)計(jì)用于克服高頻信道插入損耗,并實(shí)現(xiàn)為3抽頭FIR濾波器。這些抽頭是可編程的,通常,用戶不需要顯式設(shè)置抽頭值,因?yàn)檫@是由PCIe Gen 3鏈路均衡協(xié)議自動(dòng)處理的。
GTH收發(fā)器中的CTLE和DFE電路協(xié)同工作,可補(bǔ)償高達(dá)20dB的損耗。CTLE采用全自動(dòng)自適應(yīng)算法,持續(xù)監(jiān)測(cè)輸入信號(hào),并優(yōu)化高通濾波器功能的頻率響應(yīng)。這種自適應(yīng)功能減輕了用戶的負(fù)擔(dān),解決了過(guò)均衡或欠均衡的問(wèn)題。
DFE由七個(gè)固定抽頭和四個(gè)獨(dú)立的滑動(dòng)抽頭實(shí)現(xiàn)。當(dāng)PCIe在背板上使用時(shí),這非常有用,這在許多有線通信和數(shù)據(jù)中心應(yīng)用中都很常見(jiàn)。與CTLE類似,DFE也完全自適應(yīng)于抽頭值和滑動(dòng)抽頭的位置。
3.2 PCIe Gen3數(shù)據(jù)吞吐量
PCI-SIG的目標(biāo)是將每一代PCIe的有效數(shù)據(jù)吞吐量翻一番,第3代也不例外。重要的是要注意,有效數(shù)據(jù)吞吐量(有時(shí)稱為有效數(shù)據(jù)傳輸速率)與原始數(shù)據(jù)傳輸速率(如8Gb/s線路速率)不同。有效數(shù)據(jù)吞吐率取決于許多變量,例如:
?Lane寬度
?線速率
?系統(tǒng)最大有效負(fù)載大小和最大讀取請(qǐng)求大小
?TLP開(kāi)銷
?鏈路管理(數(shù)據(jù)鏈路層數(shù)據(jù)包)
?編碼丟失
?DMA開(kāi)銷
當(dāng)配置為在具有256字節(jié)系統(tǒng)最大有效負(fù)載大小的真實(shí)系統(tǒng)中運(yùn)行的具有x8 Gen 3功能的內(nèi)核時(shí),用于PCIe的7系列Gen 3集成塊能夠?qū)崿F(xiàn)每個(gè)方向超過(guò)7GB/s的持續(xù)吞吐量。
3.3 與內(nèi)存接口
大多數(shù)PCIe應(yīng)用程序使用某種類型的內(nèi)存進(jìn)行數(shù)據(jù)緩沖,通常是DDR SDRAM。
圖1:DDR3內(nèi)存與Virtex-7 XT/HT FPGA的接口
在確定內(nèi)存帶寬要求時(shí),設(shè)計(jì)人員應(yīng)使用2.5倍的帶寬乘數(shù)來(lái)考慮讀寫方向和任何額外的開(kāi)銷,如內(nèi)存尋址。
例如,如果從PCIe鏈路持續(xù)傳輸6.5GB/s,并且所有這些數(shù)據(jù)都緩沖在DDR3內(nèi)存中,則設(shè)計(jì)人員可以計(jì)算以下內(nèi)容以確定內(nèi)存帶寬和/或接口寬度要求。
確定內(nèi)存帶寬要求
持續(xù)傳輸所需的總內(nèi)存帶寬:
6.5 GB/s*2.5=16.25 GB/s
示例:如果使用具有1866Mb/s DDR3功能的內(nèi)存,設(shè)計(jì)人員可以計(jì)算數(shù)據(jù)接口必須有多寬才能跟上16.25 GB/s。轉(zhuǎn)換為Gb/s:
16.25GB/s*8位/字節(jié)=130Gb/s。
計(jì)算DDR3內(nèi)存所需的接口寬度:
每個(gè)引腳130 Gb/s÷1866 Mb/s=約70個(gè)引腳
此計(jì)算表明,以1866 Mb/s運(yùn)行的標(biāo)準(zhǔn)72針DDR3接口可以跟上x(chóng)8 Gen 3 PCI Express鏈路的全雙工數(shù)據(jù)。支持較慢DDR數(shù)據(jù)速率(如1600 Mb/s)的FPGA需要額外的引腳和組件。
3.4 PCIe Gen3其他高性能功能
PCIe Gen3集成塊包含許多功能,可實(shí)現(xiàn)更好的系統(tǒng)性能。這些功能包括:
?用于流量類型的高性能專用AXI4接口(增強(qiáng)型AXI-4流)
?跨越256位寬接口的數(shù)據(jù)
?內(nèi)置標(biāo)簽管理,最多可處理64個(gè)未完成的讀取請(qǐng)求
?靈活的接收緩沖;可配置高達(dá)8KB的請(qǐng)求空間和16KB的完成空間
?內(nèi)置多功能和SR-IOV支持
AXI4接口上的奇偶校驗(yàn)保護(hù)
?對(duì)所有內(nèi)部緩沖存儲(chǔ)器進(jìn)行ECC保護(hù)
?可調(diào)整大小的基址寄存器(RBAR)
?地址翻譯服務(wù)(ATS)
?原子操作事務(wù)
?TLP處理提示能力(TPH)
?優(yōu)化緩沖區(qū)沖洗/填充能力(OBFF)
?動(dòng)態(tài)功率分配能力(DPA)
?功率預(yù)算能力(PB)
3.5 可擴(kuò)展、優(yōu)化的AXI接口
Xilinx部署的AMBA?4 AXI4規(guī)范允許以一致的方式連接IP塊,同時(shí)更好地利用設(shè)計(jì)資源。
所有適用于7系列FPGA的PCIe解決方案均按照AMBA4 AXI4規(guī)范設(shè)計(jì)。AXI接口提供了三種風(fēng)格,每種風(fēng)格都針對(duì)不同的客戶用例量身定制。
1.Basic AXI4-Stream:此接口類似于舊Xilinx FPGA系列中的傳統(tǒng)TRN接口。該接口是將基于TRN的設(shè)計(jì)遷移到7系列設(shè)備的最簡(jiǎn)單接口,由發(fā)送和接收AXI4流接口組成。此接口可用于Artix-7、Kintex-7和Virtex-7 T FPGA上的PCI Express解決方案(在Virtex-7 XT設(shè)備上不可用)。
圖2:AXI4流基本界面
2.Enhanced AXI4-Stream:此接口類似于基本的AXI4 Stream接口,但通過(guò)將數(shù)據(jù)流拆分/組合為Completer和Requester流對(duì)其進(jìn)行了擴(kuò)展。增強(qiáng)版本還允許可選功能,如數(shù)據(jù)包去分級(jí)、數(shù)據(jù)重新排列和完成標(biāo)簽管理。此接口可用于PCI Express解決方案的Virtex-7 HT和XT FPGA(在Virtex-7 T、Artix-7和Kintex-7設(shè)備上不可用)。見(jiàn)圖3。
圖3:增強(qiáng)型AXI4流接口
3.AXI4:這是一個(gè)內(nèi)存映射接口,用于基于處理器系統(tǒng)的內(nèi)核。此接口是嵌入式設(shè)計(jì)的遷移路徑,可用于PCIe解決方案的Artix-7、Kintex-7和Virtex-7 T、HT和XT FPGA。
圖4:AXI4接口
4. 7系列FPGA的PCIe新功能
7系列FPGA PCIe解決方案中添加了許多新功能,為設(shè)計(jì)人員提供了PCIe性能、靈活性和易用性。
4.1 PCIe IP塊的快速初始化
PCIe基本規(guī)范要求PCIe鏈路在電源穩(wěn)定后100ms內(nèi)準(zhǔn)備好進(jìn)行鏈路訓(xùn)練。傳統(tǒng)上,這對(duì)大型FPGA(>100000個(gè)邏輯單元)來(lái)說(shuō)是一個(gè)挑戰(zhàn),因?yàn)槭褂贸R?jiàn)的閃存設(shè)備配置大型FPGA可能需要100多ms。
傳統(tǒng)上使用"蠻力"方法來(lái)解決100ms的要求。通常,設(shè)計(jì)人員使用最快、最寬的閃存設(shè)備來(lái)實(shí)現(xiàn)必要的帶寬,以滿足配置時(shí)間要求。在某些情況下,需要使用多個(gè)閃存設(shè)備和CPLD來(lái)實(shí)現(xiàn)所需的帶寬。雖然從軟件的角度來(lái)看,這可能是最簡(jiǎn)單的方法,但由于BOM成本的增加,它通常是最昂貴的。這種方法還使用了寶貴的FPGA I/O,特別是在使用寬輸入總線時(shí),并且隨著Xilinx FPGA的尺寸增長(zhǎng)到200萬(wàn)個(gè)邏輯單元甚至更高,這種方法很快就會(huì)過(guò)時(shí)。
注意:此問(wèn)題通常僅限于端點(diǎn)附加卡設(shè)計(jì)。
4.2 Tandem PROM和Tandem PCIe
Tandem PROM方法是7系列器件中的新方法,是最簡(jiǎn)單、最便宜的實(shí)現(xiàn)方法。在構(gòu)建PCIe IP核時(shí),用戶指示實(shí)現(xiàn)工具通過(guò)簡(jiǎn)單的軟件交換機(jī)創(chuàng)建兩級(jí)比特流。比特流的第一階段僅包含配置PCIe集成塊所需的配置幀。配置后,F(xiàn)PGA啟動(dòng)序列發(fā)生,PCIe鏈路變?yōu)榛顒?dòng)狀態(tài),因此很容易滿足100毫秒的要求。然后,在PCIe枚舉/配置系統(tǒng)過(guò)程中加載FPGA配置的其余部分。兩階段比特流方法可以使用廉價(jià)的閃存設(shè)備來(lái)保存比特流。
圖5:串聯(lián)PROM方法
Tandem PCIe解決方案基于Tandem PROM技術(shù)構(gòu)建,允許用戶通過(guò)PCI Express鏈路加載第二級(jí)比特流。
4.3部分重構(gòu)
要實(shí)現(xiàn)通過(guò)PCIe連接的多個(gè)用戶應(yīng)用程序,可以使用部分重新配置工具流。該方法依賴于比特流壓縮來(lái)滿足100ms的要求。初始比特流包含與內(nèi)部配置訪問(wèn)端口(ICAP)連接的PCe IP核。FPGA的大部分未配置。然后通過(guò)使用比特流壓縮來(lái)減小初始比特流的大小,從而允許快速初始化。
FPGA未配置部分的部分比特流通過(guò)PCe鏈路實(shí)時(shí)下載。使用部分重新配置工具流,設(shè)計(jì)者創(chuàng)建一個(gè)或多個(gè)可以駐留在主機(jī)中的應(yīng)用程序(部分比特流)。高性能計(jì)算市場(chǎng)中的協(xié)同處理算法加速器等應(yīng)用受益于這種動(dòng)態(tài)可重編程性。
圖6:部分重新配置工具流程
4.4數(shù)據(jù)跨接
Xilinx對(duì)7系列FPGA中的PCIe集成塊進(jìn)行了許多增強(qiáng),以提高內(nèi)核的性能。大多數(shù)基于FPGA的解決方案要求用戶界面上的事務(wù)層數(shù)據(jù)包(TLP)以對(duì)齊的方式接收,即當(dāng)TLP結(jié)束時(shí)。在下一個(gè)時(shí)鐘周期之前,無(wú)法從IP核讀取下一個(gè)TLP。
這些解決方案在數(shù)據(jù)流中引入了缺口,從而降低了整體數(shù)據(jù)吞吐量。7系列FPGA能夠在用戶界面上跨包(允許一個(gè)TLP在同一時(shí)鐘周期結(jié)束,而另一個(gè)開(kāi)始),從而允許PCIe內(nèi)核以全線速率運(yùn)行。這對(duì)于需要全線速帶寬的超高端應(yīng)用非常重要。對(duì)于不需要極端帶寬且更喜歡對(duì)齊數(shù)據(jù)包的應(yīng)用程序,增強(qiáng)的AXI Stream接口具有可選的對(duì)齊功能。
圖7:7系列數(shù)據(jù)跨接
除了支持跨數(shù)據(jù)包外,7系列FPGA還具有提高整體性能的功能,例如改進(jìn)了用戶對(duì)信用分配方案的控制,以及新的流量控制功能,使用戶能夠更精細(xì)地控制已發(fā)布和未發(fā)布的流量。
4.5 讀取請(qǐng)求完成的標(biāo)簽管理
當(dāng)傳輸大于典型系統(tǒng)讀取完成邊界大小64字節(jié)的讀取請(qǐng)求TLP時(shí),設(shè)計(jì)者必須承擔(dān)的一項(xiàng)艱巨任務(wù)是處理多個(gè)完成和無(wú)序返回。通常,設(shè)計(jì)者必須存儲(chǔ)傳出讀取請(qǐng)求的標(biāo)簽,然后將這些標(biāo)簽與傳入的完成TLP進(jìn)行協(xié)調(diào)和管理。此外,設(shè)計(jì)者還必須監(jiān)控錯(cuò)誤情況,如完成超時(shí)。
標(biāo)簽管理是發(fā)送讀取請(qǐng)求的總線主控DMA設(shè)計(jì)的一個(gè)必要功能,換句話說(shuō),就是從生產(chǎn)者“拉取”數(shù)據(jù)。這是通過(guò)管理傳出讀取請(qǐng)求的標(biāo)簽并將傳入的完成與這些標(biāo)簽進(jìn)行協(xié)調(diào)來(lái)實(shí)現(xiàn)的。Virtex-7 HT和XT設(shè)備的PCIe解決方案可選地提供此標(biāo)簽管理功能,大大簡(jiǎn)化了DMA設(shè)計(jì)人員的設(shè)計(jì)要求。
4.6 多功能
7系列FPGA能夠作為多功能設(shè)備運(yùn)行。這種類型的設(shè)備具有多種功能,所有功能都共享一個(gè)PCIe鏈路。每個(gè)功能都有自己的PCIe配置頭空間。因此,從主機(jī)系統(tǒng)軟件的角度來(lái)看,每個(gè)功能在其自己的PCIe鏈路上都表現(xiàn)為一個(gè)單獨(dú)的PCIe設(shè)備。這大大簡(jiǎn)化了設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)和可移植性,因?yàn)轵?qū)動(dòng)程序開(kāi)發(fā)人員可以創(chuàng)建單個(gè)驅(qū)動(dòng)程序,并為每個(gè)硬件功能復(fù)制它。見(jiàn)圖8。
圖8:多功能設(shè)備
4.7 Single Root I/O虛擬化
Single Root I/O虛擬化(SR-IOV)允許在單個(gè)root(CPU子系統(tǒng))上運(yùn)行的多個(gè)客戶機(jī)(操作系統(tǒng))訪問(wèn)I/O設(shè)備,而不會(huì)在不支持SR-I0V的虛擬化系統(tǒng)中產(chǎn)生軟件損失。類似于多功能設(shè)備如何為每個(gè)物理功能提供單獨(dú)的配置空間,SR-IOV通過(guò)為訪問(wèn)I/O設(shè)備的每個(gè)客戶操作系統(tǒng)提供虛擬功能(虛擬配置空間)來(lái)工作。因此,每個(gè)客戶操作系統(tǒng)都有自己的I/O設(shè)備“視圖”。
圖9:SR-IOV虛擬配置空間支持SR-IOV的適配器在虛擬化環(huán)境中的I/O效率方面有了巨大的提高。SR-IOV不僅成為企業(yè)IT市場(chǎng)(數(shù)據(jù)中心)廣泛采用的標(biāo)準(zhǔn),而且開(kāi)始在通信和存儲(chǔ)網(wǎng)絡(luò)市場(chǎng)取得進(jìn)展。
4.8 高級(jí)錯(cuò)誤報(bào)告和端到端CRC
高級(jí)錯(cuò)誤報(bào)告(AER)是一個(gè)可選功能,它為基于PCIe的系統(tǒng)中可能發(fā)生的錯(cuò)誤類型提供了更大的粒度和控制。在非AER PCIe系統(tǒng)中,只定義了三種類型的錯(cuò)誤:致命、非致命和可糾正。在大多數(shù)情況下,這三種定義的錯(cuò)誤類型沒(méi)有為系統(tǒng)提供足夠的信息,無(wú)法從錯(cuò)誤中優(yōu)雅地恢復(fù)。啟用AER后,系統(tǒng)軟件可以確定特定錯(cuò)誤的確切原因,并在可能的情況下嘗試恢復(fù)。
當(dāng)用戶啟用時(shí),7系列FPGA中的PCIe集成塊可選擇執(zhí)行自動(dòng)端到端CRC(ECRC)檢查和生成。已添加新端口以控制錯(cuò)誤生成,并在檢測(cè)到ECRC錯(cuò)誤時(shí)進(jìn)行標(biāo)記。設(shè)計(jì)者不再需要在FPGA中設(shè)計(jì)這種邏輯。AER和ECRC用于高可靠性和高可用性是關(guān)鍵驅(qū)動(dòng)因素的應(yīng)用。這些功能通常用于航空航天和國(guó)防、銀行和金融、通信和存儲(chǔ)等細(xì)分市場(chǎng)。
4.9 可調(diào)整大小的BAR
許多端點(diǎn)應(yīng)用程序包含大量的本地內(nèi)存,例如,高端圖形卡可以包含超過(guò)1 GB的DDR3 SDRAM。如基于32位的操作系統(tǒng),無(wú)法將如此多的內(nèi)存資源分配給單個(gè)實(shí)體。如果適配器沒(méi)有實(shí)現(xiàn)某種孔徑窗口方案,操作系統(tǒng)通常會(huì)忽略資源請(qǐng)求。因此,系統(tǒng)無(wú)法使用適配器??烧{(diào)整大小的基址寄存器(BAR)功能為設(shè)計(jì)者提供了一些控制,這樣就不會(huì)發(fā)生這種情況。如果系統(tǒng)無(wú)法分配適配器請(qǐng)求的全部資源,它可以將BAR調(diào)整到更小、更可接受的孔徑,從而使適配器仍能在系統(tǒng)內(nèi)運(yùn)行。7系列FPGA中的PCIe解決方案完全支持可調(diào)整大小的BAR功能。
4.10 Atomic操作
Atomic Operations引入了三種新的TLP類型,旨在通過(guò)直接在I/O總線(在本例中為PCIe)上創(chuàng)建標(biāo)準(zhǔn)同步原語(yǔ)(如互斥和自旋鎖)來(lái)提高系統(tǒng)性能和延遲。這在任何具有多個(gè)生產(chǎn)者和消費(fèi)者的系統(tǒng)中都很有用,例如多CPU系統(tǒng)。此功能的目標(biāo)應(yīng)用程序空間是協(xié)同處理和硬件加速適配器。