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