PCI Express (PCIe) 6.0規(guī)范實現(xiàn)了64GT/s鏈路速度,還帶來了包括帶寬翻倍在內(nèi)的多項重大改變,這也為SoC設(shè)計帶來了諸多新變化和挑戰(zhàn)。對于HPC、AI和存儲SoC開發(fā)者來說,如何理解并應(yīng)對這些變化帶來的設(shè)計挑戰(zhàn)變得至關(guān)重要。
本文將就上述問題和方案作詳細(xì)介紹及探討。
PCIe 6.0的重大新變化
變化一:PCIe 6.0電器性發(fā)生根本性的機(jī)制改變
為了實現(xiàn)64GT/s的鏈路速度,PCIe 6.0采用脈沖幅度調(diào)制4級 (PAM4) 信號,在與32GT/s PCIe相同的單元間隔(UI)中提供4個幅度級別(2 位)。圖1顯示了三眼眼圖與此前的單眼眼圖的對比。
圖 1:與NRZ信號相比,PCIe 6.0 PAM-4信號是三眼眼圖
與NRZ相比,轉(zhuǎn)換到PAM4信號編碼引入了更高的誤碼率(BER)。為緩解這種情況,6.0規(guī)范在以 64GT/s 運行時實現(xiàn)了許多新功能。例如,當(dāng)將新的4級電壓眼圖映射到數(shù)字值時,格雷編碼可以最小化每個 UI 內(nèi)的錯誤,并且發(fā)送器應(yīng)用預(yù)編碼來最小化迸發(fā)錯誤;PCIe 6.0還采用前向糾錯(FEC)機(jī)制來降低較高的誤碼率。這些對 PCIe 協(xié)議和控制器設(shè)計都具有重大影響。
變化二:新一代協(xié)議的引入
PCIe 6.0 引入了全新的“FLIT 模式”,其中數(shù)據(jù)包被組織在固定大小的流控制單元中,而不是過去規(guī)范版本中的可變大小。這種模式簡化了控制器級別的數(shù)據(jù)管理,帶來了更高的帶寬效率、更低的延遲和更小的控制器占用空間。當(dāng)以 64GT/s 的速率運算時,F(xiàn)LIT 模式使用未編碼數(shù)據(jù)(稱為“1b1b 編碼”),而 128/130 編碼用于 8GT/s 至 32GT/s 的鏈路速度,經(jīng)典8b10b編碼用于2.5GT/s 和 5GT/s 的鏈路速度。
與具有相同配置的 32GT/s PCIe 控制器相比,64GT/s PCIe 6.0 控制器所需的硅面積顯著增加;支持1b1b編碼不僅增加了第三物理層路徑(位于 8b10b 和 128b130b 頂部),還增加了數(shù)據(jù)鏈路層中的邏輯;FLIT模式中使用的新優(yōu)化標(biāo)頭,也進(jìn)一步增加了邏輯門數(shù),超過了 32GT/s 解決方案。
變化三:PIPE數(shù)據(jù)路徑寬度增加,每個時鐘周期有多個數(shù)據(jù)包
為了保持與上一代相同的最大時鐘頻率,64GT/s下PIPE數(shù)據(jù)路徑寬度增加了一倍,即需要1024位數(shù)據(jù)路徑的16通道設(shè)計,這為芯片設(shè)計帶來了新的問題。
要知道,大于128位的數(shù)據(jù)路徑寬度,可能會導(dǎo)致SoC需要在每個時鐘周期處理多個PCIe 數(shù)據(jù)包。最小的PCIe事務(wù)層數(shù)據(jù)包 (TLP) 可以被視為 3 個 DWORD(12 字節(jié))加上 4 字節(jié) LCRC,總共 16 個字節(jié)(128 位)。在 8GT/s 時,使用PCIe PHY的 500MHz 16 位 PIPE 接口最為常見,這意味著8通道及以下(16 位/通道 * 8 通道 = 128 位)的鏈路寬度會在每個時鐘最多傳輸一個完整的數(shù)據(jù)包。但是,16通道(16位/通道 * 16通道 = 256位)在每個時鐘周期就需要傳輸兩個完整的數(shù)據(jù)包。
如表1顯示,隨著鏈路速度的提高,每個時鐘的完整數(shù)據(jù)包的數(shù)量相應(yīng)增加,從而影響越來越多的設(shè)計。
表 1:數(shù)據(jù)路徑寬度隨鏈路速度增加,導(dǎo)致更多配置超過128位閾值
PCIe 6.0的優(yōu)化設(shè)計
1松弛排序
PCIe排序規(guī)則需要Posted事務(wù),例如內(nèi)存寫入保持有序,除非數(shù)據(jù)包標(biāo)頭中設(shè)置了松弛排序 (RO) 或 ID 排序 (IDO) 屬性。使用RO集的Posted事務(wù)可以傳遞任何先前 Posted 事務(wù),而使用IDO集的事務(wù)只能使用不同的請求者ID傳遞先前事務(wù)。
以下四個示例展示了這兩種屬性對于實現(xiàn)完整的PCIe 64GT/s 性能的重要性。他們均利用4個PCIe內(nèi)存的序列寫入256字節(jié)中的每一個,表示將1KB 有效載荷遞送到地址1000,然后是4個字節(jié)的PCIe內(nèi)存寫入,表示將“成功完成”指示遞送到地址7500。表中的每一行代表一個時間段,而三列(從左到右)表示事務(wù)到達(dá)PCIe引腳、應(yīng)用程序接口和 SoC 內(nèi)存。在所有 4 次內(nèi)存寫入之前,“成功完成”指示到達(dá)內(nèi)存的任何場景都反映出失敗,因為軟件在收到指示后立即可進(jìn)行數(shù)據(jù)處理,因此在交付正確的數(shù)據(jù)之前處理。
示例1:只要其中一個應(yīng)用程序接口的帶寬至少等于 PCIe 帶寬,該接口就可以正常工作。
表2:單一全速率應(yīng)用程序接口可正確傳輸數(shù)據(jù)
示例2:雙接口通常會出現(xiàn)故障,因為無法保證SoC中兩個通往內(nèi)存的獨立路徑之間的到達(dá)順序。
表3:顯示雙半速率應(yīng)用程序接口失敗,原因是“成功完成”指示早于所有數(shù)據(jù)到達(dá)
示例3:將強(qiáng)排序流量強(qiáng)制到單個接口可避免出現(xiàn)無序到達(dá),但由于無法使用全部內(nèi)部帶寬,因此很快落后于 PCIe 鏈路。
表4:由于無法全速傳輸數(shù)據(jù),所示的雙半速應(yīng)用程序接口失敗
示例4:當(dāng)鏈路伙伴把數(shù)據(jù)有效載荷數(shù)據(jù)包標(biāo)記為 RO 且把成功完成數(shù)據(jù)包標(biāo)記為強(qiáng)排序時,兩個半速率接口可以成功傳輸。請注意,當(dāng) RO 有效載荷數(shù)據(jù)無序到達(dá)時,非 RO 寫入 7500 不被允許傳遞有效載荷寫入,因此在發(fā)送所有先前寫入之前,不會將其發(fā)送到應(yīng)用接口。
表 5:顯示雙半速應(yīng)用程序接口通過對有效載荷數(shù)據(jù)使用松弛排序成功
SoC 設(shè)計人員可以在其出站數(shù)據(jù)流中設(shè)置RO屬性,并顯著提高PCIe鏈路性能。IDO排序?qū)傩栽谠S多情況下都具有類似的優(yōu)勢,大多數(shù) PCIe 實現(xiàn)都可以將其應(yīng)用于其傳輸?shù)拿總€數(shù)據(jù)包。
具有IDO集的數(shù)據(jù)包僅被允許傳輸具有不同請求者 ID 的先前事務(wù),這意味著數(shù)據(jù)包來自 PCIe 鏈路上的不同邏輯代理。大多數(shù)端點實現(xiàn)(單功能和多功能)都對與往返于其他 PCIe 端點的流量相關(guān)的數(shù)據(jù)排序漠不關(guān)心,因為它們通常只與RC通信。同樣,大多數(shù)RC通常不會在多個端點之間混合相同的流量流,因此在這兩種情況下,都沒有與其他設(shè)備的請求者 ID 相關(guān)的排序問題。與此類似,大多數(shù)多功能端點對功能之間的數(shù)據(jù)排序也不關(guān)心,因此也不必?fù)?dān)心自己的請求者ID之間的排序。因此,大多數(shù)實施已經(jīng)可以為他們發(fā)起的所有事務(wù)設(shè)置IDO。
2增加應(yīng)用程序接口
除了上文討論的因素外,當(dāng)數(shù)據(jù)包小于接口寬度時,利用多個較窄的應(yīng)用程序接口可顯著提高整體性能。圖 2 顯示了新思科技 PCI Express 6.0 控制器IP上64GT/s Flit模式下在發(fā)送連續(xù)的 Posted TLP流方面的傳輸鏈路利用率。對于更大的數(shù)據(jù)路徑寬度,顯然需要更大的數(shù)據(jù)包來通過單個應(yīng)用程序接口保持完全的鏈路利用率,1024 位接口需要 128 字節(jié)的有效負(fù)載。
圖 2:在 64GT/s FLIT 模式下,利用單個應(yīng)用程序接口進(jìn)行傳輸?shù)母鞣N有效荷載大小和數(shù)據(jù)路徑寬度的鏈路利用率
相反,當(dāng)新思科技控制器配置為兩個應(yīng)用接口并運行相同的流量模式時,就會有明顯的改進(jìn),現(xiàn)在64字節(jié)的有效負(fù)載即使在 1024 位數(shù)據(jù)路徑中也能產(chǎn)生完全的鏈路利用率,如圖 3 所示。
圖 3:在 64GT/s FLIT 模式下,通過兩個應(yīng)用接口配置進(jìn)行傳輸?shù)母鞣N有效載荷大小和數(shù)據(jù)路徑寬度的鏈路利用率
3解決小數(shù)據(jù)包效率低下
雖然大多數(shù)設(shè)備幾乎無法控制其流量模式,但小數(shù)據(jù)包可以實現(xiàn)更少帶寬。新思科技 CoreConsultant 使用最大有效負(fù)載大小和往返時間 (RTT) 等參數(shù)來配置 PCIe 6.0 控制器中的緩沖區(qū)大小、突出 PCIe 標(biāo)簽數(shù)量和其他關(guān)鍵參數(shù)。
圖3和圖4顯示了從新思科技的 64GT/s x4 控制器的仿真中獲得的數(shù)據(jù)。該控制器配置為 512 字節(jié)最大有效載荷大小和 1000nS RTT 掃描,覆蓋一系列有效載荷大小和 RTT 值。如果在同一范圍內(nèi)重復(fù)相同的掃描,但任意一個參數(shù)降低,則當(dāng)掃描通過優(yōu)化范圍后,性能會降低。
圖 3:小尺寸 Posted 數(shù)據(jù)包效率低下
圖 4:小尺寸Non-Posted數(shù)據(jù)包效率低下,在一系列往返時間范圍內(nèi)掃描
總結(jié)
實施 64GT/s PCIe 接口的 SoC 設(shè)計人員應(yīng)確保其支持松弛排序?qū)傩?,即有效載荷而非相關(guān)控制上的RO,以及所有數(shù)據(jù)包上的IDO,除非應(yīng)用程序有異常要求。這是在整個 64GT/s 生態(tài)系統(tǒng)中實現(xiàn)高性能的關(guān)鍵部分。
為x4和更寬鏈路實施64GT/s PCIe的設(shè)計人員需要注意每個時鐘周期的多個數(shù)據(jù)包,并應(yīng)根據(jù)其典型流量大小考慮多個應(yīng)用接口。
所有64GT/s實施者都應(yīng)為1GHz(或更快)的設(shè)計實現(xiàn)做好準(zhǔn)備,并且應(yīng)確保通過硅前性能模擬檢查其假設(shè)。
對于上述這些優(yōu)化設(shè)計辦法,新思科技提供完整的PCIe 6.0解決方案(包括控制器、PHY 和 VIP)。這些解決方案支持松弛排序?qū)傩?、PAM-4 信號、FLIT 模式、L0p 電源、高達(dá) 1024 位的架構(gòu)以及多個應(yīng)用程序接口選項,有助于更輕松地過渡到64GT/s PCIe設(shè)計。
審核編輯:湯梓紅
-
芯片
+關(guān)注
關(guān)注
456文章
50889瀏覽量
424243 -
控制器
+關(guān)注
關(guān)注
112文章
16384瀏覽量
178337 -
soc
+關(guān)注
關(guān)注
38文章
4173瀏覽量
218405 -
芯片設(shè)計
+關(guān)注
關(guān)注
15文章
1021瀏覽量
54918 -
PCIe
+關(guān)注
關(guān)注
15文章
1241瀏覽量
82729
原文標(biāo)題:如何破解PCIe 6.0帶來芯片設(shè)計新挑戰(zhàn)?
文章出處:【微信號:架構(gòu)師技術(shù)聯(lián)盟,微信公眾號:架構(gòu)師技術(shù)聯(lián)盟】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論