PCI Express橋接 PCI 的讀取性能
PCI Express 是目前 PC 芯片集及嵌入式處理器的普遍互連標(biāo)準(zhǔn)。盡管之前的PCI標(biāo)準(zhǔn)由PCIe所取代,但 FPGA 和I/O設(shè)備仍使用 PCI。當(dāng)前基于 PCI 的設(shè)計(jì)均采用未集成 PCIe 接口的組件,因此若要升級(jí)系統(tǒng),需使用 PCIe 橋接器。例如,PCIe橋接器將用于采用I/O設(shè)備的嵌入式視頻錄音機(jī),通過PCI連接至具有PCIe 端口的嵌入式處理器。
在系統(tǒng)中添加橋接器將會(huì)帶來一定的設(shè)計(jì)難題,本文旨在研究通常受引入橋接器影響的 PCI 讀取性能問題,以及相應(yīng)的解決方法。
引入橋接器帶來的性能挑戰(zhàn)
PCI 總線上的設(shè)備主要依賴有關(guān)系統(tǒng)從主機(jī)處理器讀取大量的數(shù)據(jù)。PCI I/O 設(shè)備通??刂葡到y(tǒng)中的數(shù)據(jù)移動(dòng),并將讀寫循環(huán)傳入主機(jī)內(nèi)存。例如,主機(jī)處理器可通過寫入外圍設(shè)備上的寄存器設(shè)置外圍設(shè)備中的 DMA,即可設(shè)置和配合數(shù)據(jù)移動(dòng),但為了專注于其他任務(wù),處理器會(huì)將自身從數(shù)據(jù)移動(dòng)中刪除。然后,外圍設(shè)備將讀取或?qū)懭霐?shù)據(jù)以服務(wù) DMA。在其他時(shí)間,處理器可讀取狀態(tài)信息并寫入寄存器以進(jìn)行控制。通常,此通信量不會(huì)涉及高帶寬,且不會(huì)對(duì)系統(tǒng)整體性能帶來重大影響。
對(duì)于安全數(shù)字視頻錄像機(jī)(DVR)等嵌入式處理系統(tǒng),將捕獲并壓縮視頻數(shù)據(jù),通過磁盤控制器寫入磁盤存儲(chǔ)器,且磁盤控制器通過 PCI 總線讀取主機(jī)內(nèi)存中的數(shù)據(jù)即可實(shí)現(xiàn)上述結(jié)果。
從 PCI 外圍設(shè)備寫入橋接器通常傳送至內(nèi)部寫入緩沖器,以解決橋接器帶來的內(nèi)在性能影響。然而,PCIe 橋產(chǎn)品需要重試外圍設(shè)備,直至它從主機(jī)內(nèi)存中獲得所需的數(shù)據(jù)。這通常意味著試圖讀取許多小型 PCIe 數(shù)據(jù)包,從而增加時(shí)延。通過使用分割式傳輸方式,PCI-X 協(xié)議可避免此問題,但傳統(tǒng)的 PCI 協(xié)議并不具備此特點(diǎn)。此外,一些 PCI 設(shè)備在收到一條或兩條數(shù)據(jù)緩沖行后就自動(dòng)釋放總線,這將成為 PCI 讀取的性能挑戰(zhàn)。
例如,在使用嵌入式 DVR 的普通情況下(圖1),系統(tǒng)需要將持續(xù)的壓縮視頻數(shù)據(jù)流寫入磁盤,以便存儲(chǔ)及隨后檢索或分析。在此系統(tǒng)中,一個(gè)或多個(gè)磁盤控制器(SATA 控制器)將讀取系統(tǒng)主內(nèi)存中的視頻數(shù)據(jù),以存儲(chǔ)在相關(guān)磁盤陣列。上述系統(tǒng)還可以令以太網(wǎng)控制器等其他外部設(shè)備共享 PCI 總線。
如上所述,引入 PCI 橋接器可能導(dǎo)致性能下降。此讀取性能如下所示(參考圖 2):
1.SATA 設(shè)備"A"開始從主內(nèi)存讀取。橋接器從內(nèi)存中預(yù)取數(shù)據(jù)。然后,SATA設(shè)備"A"讀取部分預(yù)取數(shù)據(jù)。
2.SATA 設(shè)備"B"開始從主內(nèi)存讀取。橋接器從內(nèi)存中預(yù)取數(shù)據(jù)。然后,SATA設(shè)備"B"讀取部分預(yù)取數(shù)據(jù)。
3.SATA設(shè)備后續(xù)讀取將要求橋接器丟棄緩沖的數(shù)據(jù),并從主內(nèi)存中重取數(shù)據(jù)。
在此示例中,第 3 步會(huì)在讀取事務(wù)之間帶來重大時(shí)延,從而極大影響讀取性能。對(duì)讀取性能的實(shí)際影響,可能指實(shí)現(xiàn)的性能比直接使用 PCI 總線最初實(shí)現(xiàn)的性能下降許多倍。由于總線斷開及多次重試和重取數(shù)據(jù)后,將持續(xù)讀取數(shù)據(jù),導(dǎo)致總線效率受到重大影響。此過程如圖 3 所示。
查看說明實(shí)際數(shù)據(jù)讀取點(diǎn)的 PCI_TRDYn(PCI 目標(biāo)準(zhǔn)備)軌跡可看到,首次讀取(第 3 步)與下次讀取(第 6 步)之間存在較大間隔。這意味著視頻數(shù)據(jù)寫入磁盤的最大速度大幅降低,從而限制了系統(tǒng)的性能。在此情況下,最大程度地提高寫入視頻數(shù)據(jù)的速度對(duì)于最終產(chǎn)品至關(guān)重要--可存儲(chǔ)監(jiān)測(cè)最高質(zhì)量視頻所需的諸多信道。
解決問題 - 短期高速緩存
Tundra 的 PCI Express橋接器(Tsi381、Tsi382和 Tsi384)具有短期高速緩存 (STC) 的功能,可有助于克服上述性能難題。短期高速緩存允許在最初 PCI 讀取循環(huán)期間從相關(guān) PCI Express 設(shè)備中預(yù)取數(shù)據(jù),并臨時(shí)存儲(chǔ)在橋接器中以便在后續(xù)讀取循環(huán)期間迅速周轉(zhuǎn)。當(dāng)所要求的設(shè)備停止此事務(wù)時(shí),在后續(xù)過程中讀取的數(shù)據(jù)不會(huì)立即丟棄。
與最初情況相比,它對(duì)性能的改變比較大,以一個(gè)采用 Tsi381 橋接器的嵌入式 DVR 系統(tǒng)為例(參考圖4)。在此情況下,啟用 STC 后,后續(xù)讀取不會(huì)延遲,原因是有關(guān)讀取仍保留在 Tsi381 的高速緩沖存儲(chǔ)器中,且橋接器在首次讀取后無需從內(nèi)存中重新讀取數(shù)據(jù),可確保有效地使用總線。
啟用STC前后PCI 總線的計(jì)時(shí)見圖5,它可清楚地反映出性能的差異。在此示例中,系統(tǒng)執(zhí)行每臺(tái)設(shè)備32位的讀取,兩臺(tái)設(shè)備無STC時(shí)執(zhí)行2次讀取的相同期間,在使用STC后可進(jìn)行7次讀取。可見,在使用STC的情況下,系統(tǒng)的整體吞吐性能可提高三倍以上。對(duì)于通過一臺(tái)設(shè)備執(zhí)行讀取的系統(tǒng)而言,性能將獲得更大的提高。
Tundra PCI Express 橋接器可確保開發(fā)人員調(diào)整下列其他參數(shù),從而進(jìn)一步調(diào)諧系統(tǒng): 調(diào)整數(shù)據(jù)保留在高速緩沖存儲(chǔ)器內(nèi)的時(shí)間。此特點(diǎn)確保設(shè)計(jì)人員丟棄過期的數(shù)據(jù)并預(yù)取從前過期的數(shù)據(jù)。 調(diào)整 PCI 讀取預(yù)取長(zhǎng)度。從理論上而言,橋接器不得預(yù)取比PCI外圍設(shè)備通常所需的更多的數(shù)據(jù),設(shè)計(jì)人員可根據(jù)通常預(yù)期的傳輸長(zhǎng)度設(shè)置此參數(shù)。
根據(jù)系統(tǒng)設(shè)計(jì)及設(shè)備的狀況,設(shè)計(jì)人員可調(diào)整預(yù)取長(zhǎng)度及短期高速緩存丟棄計(jì)時(shí)器,以提高整體性能或關(guān)鍵性能。
總結(jié)
使用PCIe橋接器將有助于解決由PCI轉(zhuǎn)向 PCIe帶來的設(shè)計(jì)難題。PCI 外圍設(shè)備開始的讀取將產(chǎn)生額外的延時(shí),這通常對(duì)系統(tǒng)的整體性能帶來重大影響。Tsi381及其他Tundra PCIe橋接器的功能集允許開發(fā)人員調(diào)諧橋接器,從而優(yōu)化系統(tǒng)性能。利用短期高速緩存,這些橋接器可輕松消除 PCI讀取相關(guān)的性能瓶頸。