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