基于NXP ARM 微控制器的以太網(wǎng)吞吐性能
1.簡介
以太網(wǎng)是世界上應(yīng)用最廣泛的局域網(wǎng)技術(shù)。以太網(wǎng)從1980年代起就開始應(yīng)用,已有IEEE 802.3標(biāo)準(zhǔn),規(guī)定了一系列傳輸速率。在嵌入式系統(tǒng)中,應(yīng)用最普遍的是10Mbit/s和100Mbit/s(就是通常所說的10/100以太網(wǎng))。
現(xiàn)在NXP(恩智浦半導(dǎo)體)有超過20款內(nèi)置以太網(wǎng)功能的ARM MCU,覆蓋了3代ARM架構(gòu)(ARM7,ARM9,Cortex-M3)。NXP在3種架構(gòu)中采用了相同的實現(xiàn)方法,所以在系統(tǒng)更新?lián)Q代時,設(shè)計人員可以節(jié)省大量的時間和資源。
1.1 優(yōu)異的實現(xiàn)方法
NXP的以太網(wǎng)部件(見圖1)包含一個全功能10/100 MAC(媒體訪問控制器),使用DMA硬件加速以提高性能。MAC完全符合IEEE 802.3標(biāo)準(zhǔn),并使用MII(媒體獨立接口)或RMII(精簡MII)協(xié)議,通過片上MIIM(媒體獨立接口管理)總線,與片外以太網(wǎng)PHY(physical layer 物理層)連接。
圖1 LPC24xx以太網(wǎng)部件
NXP以太網(wǎng)的優(yōu)異性能如下所述:
(1) 全以太網(wǎng)功能
該部件支持以太網(wǎng)的所有操作,符合802.3標(biāo)準(zhǔn)。
(2) 增強型架構(gòu)
NXP提高了架構(gòu)的性能,增加了幾個額外的功能,包括接收過濾、自動抵觸返回(collision back-off)、幀重發(fā)、電源管理(通過部件選擇)等等。
(3) DMA硬件加速
該部件有兩個DMA管理器,分別負責(zé)發(fā)送和接收。使用分散收集DMA(Scatter-Gather DMA)自動幀重發(fā)和接收,進一步卸載CPU(offloads the CPU)。
圖2 NXP Cortex-M3 架構(gòu)
2.NXP LPC1700微控制器的以太網(wǎng)吞吐性能
在以太網(wǎng)中,兩個或更多站使用以太網(wǎng)協(xié)議通過公用通道發(fā)送或接收數(shù)據(jù)。對每一個網(wǎng)絡(luò)要素(通道或站),以太網(wǎng)性能有不同的含義。帶寬、吞吐量、延遲是衡量整體性能的重要指標(biāo)。對于通道,用帶寬來衡量連接性能,而吞吐量則代表可用數(shù)據(jù)在通道中發(fā)送的速率。對于站,以太網(wǎng)性能意味著設(shè)備在以太網(wǎng)通道中全速操作的能力。另一方面,延遲用于衡量幾種因素(傳送時間、處理時間、故障、重試等等)引起的遲滯時間。
本文檔的著重點放在NXP LPC1700操作全速以太網(wǎng)通道的性能(通過以太網(wǎng)接口,由內(nèi)部EMAC模塊和外部PHY芯片提供)。在這種方式下,吞吐量定義為MCU每秒發(fā)送到通道或從通道接收的可用數(shù)據(jù)。這個概念適用于其他支持以太網(wǎng)的NXP LPC微控制器。不幸的是,這些測試通常都需要特定的設(shè)備,如網(wǎng)絡(luò)分析器和/或網(wǎng)絡(luò)通信發(fā)生器,以獲得精確的測量結(jié)果。不過,使用簡單的測試步驟獲得估計值是可以做到的。實際上,我們的目的是搞明白影響以太網(wǎng)吞吐性能的不同因素,所以用戶可以關(guān)注不同的技術(shù),以改進以太網(wǎng)的性能。
這里,我們只考慮發(fā)送器的吞吐性能;而接收器會有一點復(fù)雜,因為它涉及到發(fā)送器發(fā)送信息到通道的性能(這種情況下,接收器的吞吐量受到發(fā)送器通道發(fā)送信息的吞吐量的影響)。我們只要得到發(fā)送器的吞吐數(shù)據(jù),我們就能把這個數(shù)據(jù)當(dāng)作接收器可以達到的最大理想數(shù)據(jù)(在理想條件下),就能獲得與接收器的吞吐數(shù)據(jù)。
圖3 以太網(wǎng)II格式
考慮100Mbit/s 1位的速率,每一幀(frame)包含負載(可用數(shù)據(jù),最小46B,最大1500B),以太網(wǎng)的頭部(14B),CRC(4B),序文(Preamble,8B),內(nèi)部包缺口(inter-Packet Gap,12B),以下為每秒最大可能幀和吞吐量;
最小幀:(46B的數(shù)據(jù))->1448809幀/秒->6.84MB/s
最大幀:(1500B的數(shù)據(jù))->8127幀/秒->12.19MB/s
以上的速率是實際中可能達到的最大可能值。這些值是理想情況下的值,實際中會比這小。
注意:(1)幀/s是通過以太網(wǎng)連接速度(100M bit/s)除以總的幀位大小計算得到的(最小幀:84*8=672,最大幀:1538*8=12304)。
(2)MB/s是通過幀/s乘以每一幀可用數(shù)據(jù)的字節(jié)數(shù)得到的(最小幀:46B,最大幀:1500B)。
2.1 測試條件
- MCU:LPC1768,100MHz
- Board:Keil MCB 1700
- PHY chip:National DP83848(RMII 接口)
- 工具鏈:Keil uVision4 v4.1
- 從RAM運行代碼
- TxDescriptorNumber=3
- 以太網(wǎng)模式:全雙工-100Mbit/s
2.2 測試描述
為了得到最大吞吐量,將發(fā)送由1514B(包含以太網(wǎng)頭部)、75B負載(可用數(shù)據(jù))組成的50個幀。EMAC控制器(以太網(wǎng)控制器)將自動添加上CRC(4B)。為了測量這個處理過程所花費的時間,一個GPIO(本例為P0.0)在發(fā)送幀時置位,發(fā)送完畢后立即清零。可以用示波器測量P0.0引腳上產(chǎn)生脈沖的寬度,這樣就能得到相應(yīng)的時間。板子通過以太網(wǎng)電纜連接到PC上。
圖4 用WireShark檢查數(shù)據(jù)
PC上運行一個嗅探器程序(本例中為WireShark http://www.wireshark.org/ )來檢查50個幀是否發(fā)送、數(shù)據(jù)是否正確。負載中有一個特殊的部分,一旦發(fā)生錯誤,就可以識別。50個幀到達PC時無錯,則測試有效。
2.3 測試
EMAC使用系列符號,提供了相應(yīng)的指針以指示數(shù)據(jù)緩沖、控制和狀態(tài)信息的存儲位置。傳送時,幀數(shù)據(jù)在進入數(shù)據(jù)緩沖器時被應(yīng)用代替。EMAC使用DMA獲得用戶數(shù)據(jù),并在發(fā)出之前裝載幀負載。
如上所述,應(yīng)用程序所使用的以復(fù)制數(shù)據(jù)到數(shù)據(jù)緩沖器的方法,將會影響吞吐量的測量。有三種情況:
- (1)理想情況下,完全不考慮應(yīng)用程序。
- (2)典型情況,應(yīng)用程序使用處理器復(fù)制數(shù)據(jù)到EMAC數(shù)據(jù)緩沖器。
- (3)優(yōu)化情況下,應(yīng)用程序通過DMA復(fù)制數(shù)據(jù)到EMAC數(shù)據(jù)緩沖器。
2.3.1 情況描述
1.理想情況:在這種情況下,軟件用測試部件建立符號數(shù)據(jù)緩沖器,且只有TxProduceIndex增長50倍,觸發(fā)幀的發(fā)送。換句話說,根本無需考慮應(yīng)用,即使不是典型的用戶情況,仍然可以在發(fā)送時提供最大的可能吞吐。
2.典型情況:這種情況比較典型,在發(fā)送幀之前應(yīng)用程序復(fù)制數(shù)據(jù)到符號數(shù)據(jù)緩沖器。與之前的結(jié)果相比,可以明顯看到應(yīng)用程序影響到整體性能。此種情況,不宜作為實際EMAC的吞吐量。然而,這個例子說明了未優(yōu)化的應(yīng)用程序如何降低整體性能,給人的印像就是硬件太慢了。
3.優(yōu)化情況:使用DMA,復(fù)制應(yīng)用數(shù)據(jù)到符號數(shù)據(jù)緩沖器。這種情況下,采用優(yōu)化的方法,體現(xiàn)出快速LPC1700的優(yōu)點。
2.4 軟件
本文檔中,提供了Keil MDK工程形式的測試軟件方案。
打開config.h文件,使用配置向?qū)В梢赃x擇想要的模式。除此之外,發(fā)送包的數(shù)量和幀的大小也可以在此文件中修改。
2.5 測試結(jié)果
測試結(jié)果做成表格如下所示:
3.結(jié)論
盡管情況1不符合實際,但它提供的最大可能值可以作為參考,它非常接近以太網(wǎng)100Mbit/s的最大可能值。情況2,很明顯影響到整體性能。最后,情況3,通過優(yōu)化可以改進整體的吞吐量。
從FLASH運行代碼(而不是從arm)也可以進行優(yōu)化,且能得到更好的結(jié)果。
總之,以太網(wǎng)的吞吐量主要受傳輸數(shù)據(jù)到符號數(shù)據(jù)緩沖器的方式的影響。改進此過程,可以大大提高以太網(wǎng)的整體性能。LPC1700以及其他LPC系統(tǒng)的芯片都可以進行優(yōu)化(基于DMA的支持、EMAC硬件和智能存儲總線架構(gòu))。