高端路由器設計需要考慮的數據緩沖器問(wèn)題
迅速增加的數據、語(yǔ)音和視頻流量進(jìn)入城域網(wǎng)(MAN)后,服務(wù)于這些應用的路由器必須能將多路的1 Gbps數據流匯聚成高達40 Gbps帶寬的數據流.為了保持線(xiàn)速性能,系統必須在出口端提供等于或高于進(jìn)入傳輸速率的信息包處理能力,或者對信息包進(jìn)行備份,這時(shí)緩沖就變得至關(guān)重要。
這些數據緩存的性能和效率對路由器和網(wǎng)絡(luò )的性能至關(guān)重要。網(wǎng)絡(luò )性能的主要威脅來(lái)自數據的重發(fā)。因此,城域邊緣的路由器必須能夠匯聚多個(gè)較低速率的接入線(xiàn)路,并將其轉發(fā)至高速核心連接而不致欠載。路由器也必須保證從更高速的核心網(wǎng)到邊緣網(wǎng)的數據分發(fā)操作不會(huì )超時(shí)。在任何情況下超過(guò)了數據緩存的最大能力,發(fā)送到 MAN 的任何額外數據都必須重傳。
因此,最大限度地降低系統延遲和確保系統最大吞吐量的關(guān)鍵是為具體應用選擇合適的數據緩存。如果緩存過(guò)大,就會(huì )大幅度增加系統成本。如果過(guò)小,網(wǎng)絡(luò )就會(huì )溢出緩存并重發(fā)數據,導致性能下降。
這種考慮涉及三個(gè)主要因素:輸入數據的速率(入口線(xiàn)路)、輸出數據的速率(出口線(xiàn)路)及內部處理時(shí)間需求。只要來(lái)自網(wǎng)絡(luò )的入口數據速率與回到網(wǎng)絡(luò )的出口數據速率相等,而且具有最小的處理需求,數據緩存即可保持相對較小。因為內部處理只增加很小的延遲,流量也比較穩定,所以幾乎不需要存儲數據。不過(guò),隨著(zhù)系統執行更高級別的處理,就必須增大緩存來(lái)消除處理功能帶來(lái)的延遲。突發(fā)流量對數據緩存的設計也有顯著(zhù)的影響。如果入口數據速率隨著(zhù)時(shí)間顯著(zhù)變化并偶爾超過(guò)信息包處理器的能力,就必須適當地改變入口緩沖器的尺寸,以解決與這些處理功能相關(guān)的延遲問(wèn)題。
可編程邏輯器件的優(yōu)勢
在為這些應用構建緩沖子系統時(shí),工程師傾向于首先考慮采用FPGA,而不是現成的分立存儲器件。由于工程教育機構日益依賴(lài)于 FPGA 來(lái)教授電路設計的基礎知識。因此,大部分工程師都熟悉這種技術(shù)。FPGA 有助于設計師隨時(shí)對他們的設計進(jìn)行重新配置,提供高度靈活性,并在短期內完成硬件的測試。此外,由于這些工具常常是人們熟悉的,可以迅速轉變成最終解決方案。
現在,FPGA 可提供數百萬(wàn)的邏輯門(mén)和兆比特級的片上存儲器,設計師可將多個(gè) FIFO集成到一個(gè)芯片上(見(jiàn)圖 1)。然而,在數據緩存需求比較高的城域邊緣網(wǎng)領(lǐng)域,設計師必須仔細評估他們所有的設計選擇。在某些情況下,設計師會(huì )發(fā)現可編程邏輯器件在給定性能或成本方面存在固有的局限性,而分立器件可提供更具吸引力的解決方案。
圖1 可集成多個(gè)FIFO的FPGA
例如,許多工程師沒(méi)有意識到,基于 FPGA 的解決方案的性能會(huì )隨著(zhù)滿(mǎn)足應用需求的數據緩存大小的改變而變化。雖然現在的FPGA 可以更高的時(shí)鐘速率運行,當設計師把越來(lái)越多的 FIFO 映射到 FPGA 時(shí),他們面臨重大的性能局限性。設計師會(huì )使用來(lái)自 FPGA 供應商的工具,自動(dòng)地將多個(gè) FIFO 映射到單個(gè)物理存儲器塊中,并創(chuàng )建在不同的FIFO之間時(shí)域復用所需的邏輯。然而,采用這種復用方法,會(huì )使每個(gè)FIFO端口的工作頻率與映射到設計中的 FIFO 數量成反比。這是因為當每個(gè) FIFO 獨立運行時(shí),整個(gè)存儲帶寬是共享的。當 FIFO 器件的讀寫(xiě)操作開(kāi)始時(shí),時(shí)序電路會(huì )在快速的 TDM 時(shí)鐘域中訪(fǎng)問(wèn)物理存儲器。為了完成每次存儲器的存取,時(shí)序器必須將信息傳回到FIFO端口的時(shí)鐘域。隨著(zhù) FPGA 中FIFO 數量的增加,時(shí)序電路的速度和時(shí)鐘域傳輸的數量將會(huì )嚴重限制 FIFO 的性能。因此,一些FPGA供應商建議設計師把器件采用的 FIFO 的數量控制在10個(gè)之內。
高性能城域邊緣網(wǎng)路由器設計的存儲器密度也會(huì )影響 FPGA 的性能。為了充分發(fā)揮性能,設計師很自然地優(yōu)先選擇內嵌的數據緩沖器。所以,許多設計師選擇采用更高密度的 FPGA 來(lái)滿(mǎn)足大型數據緩沖器的存儲需求。
然而,采用這種策略也會(huì )產(chǎn)生一些問(wèn)題。當設計師在 FPGA 中使用大量存儲器時(shí),一些存儲器將會(huì )進(jìn)一步遠離I/O和邏輯門(mén)。這種存儲資源在芯片內的分散將導致內部寫(xiě)脈沖隨線(xiàn)長(cháng)而變化,并延長(cháng)建立時(shí)間。在一些應用中,FPGA 中大型存儲陣列的使用可降低高達40%的芯片內部速度。
解決該問(wèn)題的一種方法是選擇更小和成本更低的 FPGA實(shí)現控制邏輯,并采用外部分立存儲器來(lái)支持。設計師會(huì )采用外部SRAM來(lái)增強 FPGA 的存儲能力。FPGA供應商可提供預定義模塊,設計師可將其集成到 FPGA 中,用以進(jìn)行外部存儲器管理。這種方法有助于設計師使用更小和更便宜的 FPGA。
但是,由于FPGA架構固有的 I/O 局限性,這種方法為設計帶來(lái)了延時(shí)。在采用 FPGA 和外部存儲器的設計中,數據通過(guò) FPGA 中比較慢的可編程門(mén)進(jìn)入緩沖器,然后子系統必須為控制器分配一個(gè)地址,并將數據轉移到外部存儲器。接下來(lái),系統必須分配一個(gè)地址并把數據拖到外部存儲器中。這兩個(gè)操作必須通過(guò) FPGA 中比較慢的可編程 I/O門(mén)進(jìn)行。最后,數據必須從 FPGA 發(fā)送到系統中,并再次經(jīng)過(guò) FPGA 可編程門(mén)。假設在 FPGA 和外部存儲器中進(jìn)行大量的存取,該子系統需要 8 個(gè)時(shí)鐘周期來(lái)處理每個(gè)數據字節。
理想的選擇
在這些應用中,一種更為可行的方法是采用現成的分立 FIFO 來(lái)設計數據緩沖器(見(jiàn)圖 2)。目前,供應商可提供密度高達 18 Mb、運行速度高達 250 MHz 的FIFO器件。這些器件的輸入和輸出端口可進(jìn)行獨立配置,同時(shí)以單倍數據速率(SDR)和雙倍數據速率(DDR)運行,并可支持高達 20 Gbps的數據速率。
圖2 采用分立FIFO的數據緩沖器
如果需要更高密度的緩沖器,一些 FIFO 可以進(jìn)行級聯(lián),在多芯片配置模式下實(shí)現更高的密度。不同的時(shí)鐘運行模式有助于設計者在級聯(lián)配置中優(yōu)化緩沖器設計。在標準模式中,寫(xiě)入一個(gè)空 FIFO 中的第一個(gè)字被存儲在內部存儲器中,除非進(jìn)行特定的讀操作,該字不會(huì )在數據輸出線(xiàn)上出現。第二種(首字直接通過(guò))模式是通過(guò)將一個(gè) FIFO 的數據輸出連接到下一個(gè) FIFO 的數據輸入來(lái)支持深度擴展。這使緩沖器可自動(dòng)地將進(jìn)入緩沖器的第一個(gè)字以流水線(xiàn)方式送到第一個(gè) FIFO 中,并利用第二個(gè)FIFO實(shí)現反壓。
分立緩沖器件制造商可以提供多達128個(gè)隊列以全線(xiàn)速區分并對數據進(jìn)行優(yōu)先級排序的FIFO。這些器件可提供高達 10 Mb的存儲密度,并利用高達 166 MHz 的 DDR 支持超過(guò) 10 Gbps的運行速度。這些產(chǎn)品配置了 x40 位數據總線(xiàn),可提供13.3 Gbps的高數據吞吐量,并可支持下一代高吞吐量平臺的服務(wù)質(zhì)量(QoS)需求。
比較FPGA 和其他替代解決方案,簡(jiǎn)單對比數據手冊已經(jīng)不能得到滿(mǎn)意的答案。FPGA 的易于編程特性有助于模塊化數據手冊,每段的數據通道部分都需要進(jìn)行確認、評估和添加,以確定合成電路的時(shí)序。為了實(shí)現這一點(diǎn),FPGA 制造商可為 FPGA 的設計和編程提供軟件。這種設計軟件可鑒別設計并評估電路,提供性能時(shí)序參數。供應商豐富的經(jīng)驗和他們各自的軟件包可提供非常精確的模型。在評估這些解決方案的過(guò)程中,工程師可使用 Xilinx ISE 和 Altera Quartus II 設計軟件。他們可以使用這些軟件工具對 FPGA 進(jìn)行配置,以執行 FIFO 存儲功能,并利用設計軟件提供的合成模型來(lái)模擬實(shí)際電路。使用 Xilinx 的 LogicCore 和 Altera 的 MegaWizard 可產(chǎn)生 FIFO 單元。這些工具可提供優(yōu)化性能的設計實(shí)現。該實(shí)驗可在各種尺寸的器件和存儲器配置上進(jìn)行。性能測試結果基于后布局和走線(xiàn)時(shí)序。
在決定采用現成的 FIFO 或可編程邏輯器件建立一個(gè)數據緩沖器子系統之前,工程師應該考慮到該決定對其設計復雜性的影響。低密度的情況下,把 FIFO 和控制邏輯集成到一個(gè) IC中,可提供一種更為簡(jiǎn)單的電路板設計。隨著(zhù)緩沖器尺寸超過(guò)256K的密度,而且成本促使其采用外部SRAM來(lái)補充 FPGA,標準的 FIFO 可提供更為簡(jiǎn)單的方法。隨著(zhù)設計者對系統的升級轉向更高的存儲密度,這種方法也具有優(yōu)勢。例如,大多數 FIFO 都是引腳兼容的產(chǎn)品,密度范圍在 0.5 Mb~18 Mb 之間。使設計師簡(jiǎn)單更換一個(gè)元件,即可迅速而容易地增強其系統能力。在基于 FPGA 的配置中,設計師通常需要花費時(shí)間和精力重新編譯器件,或對一個(gè)新的、更高密度的 FPGA 進(jìn)行設計和編程。
異步設計中的時(shí)鐘同步也是一個(gè)應該考慮的問(wèn)題。在大多數路由器環(huán)境中,進(jìn)入系統的傳輸線(xiàn)路與主系統時(shí)鐘會(huì )在不同的時(shí)鐘域中運行。設計師必須連接不同寬度的總線(xiàn)。路由器設計師面臨的一個(gè)常見(jiàn)的挑戰就是如何使用數據緩沖器使這些全異時(shí)鐘同步,并復用16 位和 32 位或 32 位和 64 位之間的數據,以確保整個(gè)系統中數據的完整性。
設計師使用基于FPGA的方法調整他們的邏輯以實(shí)現上述目標。然而在一般情況下,該工作需要豐富的電路設計專(zhuān)業(yè)知識以及模擬和測試這些電路的時(shí)間。相比之下,許多高性能 FIFO 提供的嵌入式總線(xiàn)匹配能力可自動(dòng)解決這個(gè)問(wèn)題。這些器件可提供多總線(xiàn)寬度和端口可選的總線(xiàn)寬度匹配,有助于出口線(xiàn)路和入口線(xiàn)路之間的無(wú)縫連接。這些器件也具備獨立的讀寫(xiě)時(shí)鐘,可使設計者實(shí)現不同時(shí)鐘域之間的頻率匹配。
面積和成本
在設計緩沖器時(shí),器件成本和板卡空間也是要考慮的因素。通過(guò)分析FIFO和FPGA 中存儲器相關(guān)的單位比特成本,可以看出兩種技術(shù)中的存儲器成本在達到256K之前保持在非常相似的水平(見(jiàn)圖3)。然而,FIFO 中的單位比特成本是隨著(zhù)密度的增加而穩定下降的,但是 FPGA 中存儲器成本的增速很快。密度為 1 Mb 以上的 FPGA 存儲器就變得過(guò)于昂貴了。
圖3 FPGA和分立FIFO方案的成本對比
這種成本差異是非常令人吃驚的。當設計師被迫在 FPGA 設計中添加更多數量的存儲器時(shí),他們必須支付額外的存儲器和嵌入到更高密度器件中的額外邏輯的成本。采用分立的 FIFO則可以穩定地增加密度。
封裝面積和引腳也是需要考慮的重要內容。在低密度情況下,把緩沖器集成到單個(gè) FPGA中可以實(shí)現更緊湊的引腳布局。然而,隨著(zhù) FPGA密度和引腳數量的增加,這種折衷的效果并不明顯。用大型的 8 M 門(mén) FPGA 實(shí)現數據緩沖器需要設計師在電路板上焊接一個(gè) 1152 引腳 的 BGA,另一方面,不論存儲器密度如何,采用比較簡(jiǎn)單的 256 引腳 BGA封裝的FIFO即可達到相同的效果。
結語(yǔ)
隨著(zhù)數據速率的持續上升,數據緩沖器設計將在優(yōu)化網(wǎng)絡(luò )性能方面扮演重要的角色。通過(guò)分析所有的設計選擇,并利用現成的分立器件和可編程邏輯器件的獨特性能,設計師可以用盡可能低的成本構建高性能的解決方案?!?/P>
評論