本文介紹了一種測(cè)量以太網(wǎng)吞吐量的方法,提供了良好的性能估計(jì),并說(shuō)明了影響性能的各種因素。
以太網(wǎng)是世界上安裝最廣泛的局域網(wǎng)(LAN)技術(shù)。它自20世紀(jì)80年代早期開始使用,并被IEEE Std 802.3所涵蓋,它規(guī)定了許多速度等級(jí)。在嵌入式系統(tǒng)中,最常用的格式是10 Mbps和100 Mbps(通常稱為10/100以太網(wǎng))。
有20多個(gè)內(nèi)置以太網(wǎng)的恩智浦ARM MCU,涵蓋所有三種幾代ARM(ARM7,ARM9和Cortex-M3)。恩智浦在三代產(chǎn)品中使用了基本相同的實(shí)現(xiàn),因此設(shè)計(jì)人員可以在系統(tǒng)遷移到下一代ARM時(shí)重用其以太網(wǎng)功能,從而節(jié)省時(shí)間和資源。
本文討論了測(cè)量LPC1700產(chǎn)品上以太網(wǎng)吞吐量的三種不同方案。詳細(xì)信息在優(yōu)化系統(tǒng)中可以實(shí)現(xiàn)的目標(biāo)。
優(yōu)越的實(shí)現(xiàn)
恩智浦的以太網(wǎng)模塊(見圖1)包含一個(gè)全功能的10/100以太網(wǎng)MAC(媒體訪問(wèn)控制器),它使用DMA硬件加速來(lái)提高性能。 MAC完全符合IEEE Std 802.3標(biāo)準(zhǔn),并使用媒體獨(dú)立接口(MII)或簡(jiǎn)化MII(RMII)協(xié)議以及片上MII管理(MIIM)串行總線與片外以太網(wǎng)PHY(物理層)連接。
恩智浦以太網(wǎng)模塊具有以下特點(diǎn):
完全以太網(wǎng)功能 - 該模塊支持完全以太網(wǎng)操作,如802.3標(biāo)準(zhǔn)中所述。
增強(qiáng)型架構(gòu) - 恩智浦通過(guò)多種附加功能增強(qiáng)了架構(gòu),包括接收過(guò)濾,自動(dòng)沖突后退和幀重傳,以及通過(guò)時(shí)鐘切換進(jìn)行電源管理。
DMA硬件加速 - 該塊有兩個(gè)DMA管理器,每個(gè)管理器一個(gè)用于發(fā)送和接收。使用Scatter-Gather DMA進(jìn)行自動(dòng)幀傳輸和接收可以進(jìn)一步卸載CPU。
圖1:LPC24xx以太網(wǎng)框圖。恩智浦的Cortex-M3架構(gòu)。
恩智浦LPC1700微控制器的以太網(wǎng)吞吐量
在以太網(wǎng)中,兩個(gè)或多個(gè)站使用以太網(wǎng)協(xié)議通過(guò)共享信道(介質(zhì))發(fā)送和接收數(shù)據(jù)。以太網(wǎng)性能對(duì)于每個(gè)網(wǎng)絡(luò)元素(信道或站點(diǎn))來(lái)說(shuō)意味著不同的東西。帶寬,吞吐量和延遲是衡量整體性能的指標(biāo)。在信道的情況下,雖然帶寬是鏈路容量的度量,但吞吐量是可以通過(guò)信道發(fā)送可用數(shù)據(jù)的速率。在站的情況下,以太網(wǎng)性能可以意味著該設(shè)備以以太網(wǎng)信道的全比特和幀速率操作的能力。另一方面,延遲測(cè)量由幾個(gè)因素(例如傳播時(shí)間,處理時(shí)間,故障和重試)引起的時(shí)間延遲。
本文的重點(diǎn)是恩智浦LPC1700在以下操作的能力通過(guò)以太網(wǎng)接口(由內(nèi)部EMAC模塊和外部PHY芯片提供)連接到的以太網(wǎng)通道的完整位和幀速率。以這種方式,吞吐量將被定義為每秒可用數(shù)據(jù)(有效載荷)的度量,MCU能夠向/從通信信道發(fā)送/接收。同樣的概念也可以應(yīng)用于支持以太網(wǎng)的其他恩智浦LPC微控制器。不幸的是,這些類型的測(cè)試通常需要特定的設(shè)備,如網(wǎng)絡(luò)分析儀和/或網(wǎng)絡(luò)流量發(fā)生器,以便獲得精確的測(cè)量結(jié)果。然而,使用簡(jiǎn)單的測(cè)試設(shè)置可以獲得估計(jì)的數(shù)字。實(shí)際上,我們的目標(biāo)是了解可能影響以太網(wǎng)吞吐量的不同因素,因此用戶可以專注于不同的技術(shù)以提高以太網(wǎng)性能。
這里只考慮發(fā)送器的吞吐量,如接收器的情況有點(diǎn)復(fù)雜,因?yàn)樗男阅芘c將信息放入通道的發(fā)送器的性能有關(guān)。在這種情況下,接收器的吞吐量將受到通過(guò)信道發(fā)送數(shù)據(jù)的發(fā)送器的吞吐量的影響。一旦我們獲得了發(fā)射機(jī)的吞吐量,我們就可以將此數(shù)字視為接收機(jī)能夠達(dá)到的最大理想數(shù)量(在理想條件下),并獲得接收機(jī)相對(duì)于此數(shù)量的吞吐量。
參考信息
圖2:以太網(wǎng)II幀。
考慮比特率為100 Mbps,每幀由有效載荷組成(有用數(shù)據(jù),最小46字節(jié),最大1,500)字節(jié)),以太網(wǎng)報(bào)頭(14字節(jié)),CRC(4字節(jié)),前導(dǎo)碼(8字節(jié))和數(shù)據(jù)包間隙(12字節(jié)),然后以下是每秒和每個(gè)最大可能幀數(shù): br》對(duì)于最小尺寸的幀:( 46字節(jié)數(shù)據(jù)) - 》 148,809幀/秒 - 》 6.84 Mb/秒
對(duì)于最大尺寸的幀:(1,500字節(jié)數(shù)據(jù)) - 》 8,127幀/秒 - 》 12.19 Mb/sec
上述費(fèi)率是實(shí)際上無(wú)法達(dá)到的最大可能值。這些值是理想的,任何實(shí)際實(shí)現(xiàn)都會(huì)有較低的值(參見圖2)。
注意:
幀/秒的計(jì)算方法是將以太網(wǎng)鏈路速度(100 Mbps)除以總數(shù)以比特為單位的幀大小(最小大小幀為84 * 8 = 672,最大大小幀為1,538 * 8 = 12,304)。
兆字節(jié)/秒是通過(guò)將幀/秒乘以數(shù)字來(lái)計(jì)算的每幀中有用數(shù)據(jù)的字節(jié)數(shù)(最小大小幀為46字節(jié),最大大小幀為1,500字節(jié))。
測(cè)試條件(參見圖3)
MCU:LPC1768在運(yùn)行時(shí)100 MHz
主板:Keil MCB1700
PHY芯片:國(guó)家DP83848(RMII接口)
工具鏈:KeilμVision4v4.1
從RAM運(yùn)行的代碼
TxDescriptorNumber = 3
以太網(wǎng)模式:全雙工 - 100 Mbps
測(cè)試說(shuō)明
為了獲得最大吞吐量,有50個(gè)幀由1,514個(gè)字節(jié)組成(包括以太網(wǎng)報(bào)頭),每個(gè)幀包含75 Kb的有效載荷(有用的數(shù)據(jù))。 CRC(4字節(jié))由EMAC控制器(以太網(wǎng)控制器)自動(dòng)添加。
圖3:測(cè)試設(shè)置。
為了測(cè)量此過(guò)程所需的時(shí)間,在開始發(fā)送幀之前設(shè)置GPIO引腳(在我們的例子中為P0.0),并在完成該過(guò)程后立即清除。通過(guò)這種方式,可以使用示波器測(cè)量時(shí)間,作為P0.0引腳上產(chǎn)生脈沖的寬度。使用以太網(wǎng)交叉電纜將電路板連接到PC。
PC運(yùn)行嗅探器程序(在本例中為WireShark,http://www.wireshark.org/),以驗(yàn)證是否已發(fā)送50幀并且數(shù)據(jù)是正確的。使用有效載荷中的特定模式,因此可以容易地識(shí)別任何錯(cuò)誤。如果50幀到達(dá)PC沒有錯(cuò)誤,則認(rèn)為測(cè)試有效(參見圖4)。
圖4:驗(yàn)證有效負(fù)載。
測(cè)試場(chǎng)景
EMAC使用一系列描述符,這些描述符提供指向數(shù)據(jù)緩沖區(qū),控制和狀態(tài)信息所在的內(nèi)存位置的指針。在傳輸?shù)那闆r下,應(yīng)用程序應(yīng)將幀數(shù)據(jù)放入這些數(shù)據(jù)緩沖區(qū)。 EMAC使用DMA獲取用戶的數(shù)據(jù)并在傳輸之前填充幀的有效負(fù)載。因此,應(yīng)用程序使用的方法將應(yīng)用程序數(shù)據(jù)復(fù)制到那些數(shù)據(jù)緩沖區(qū)中將影響吞吐量的整體測(cè)量。出于這個(gè)原因,提出了三種不同的方案:
“理想”方案,根本不考慮應(yīng)用程序,
“典型”方案,其中應(yīng)用程序使用處理器將應(yīng)用程序的數(shù)據(jù)復(fù)制到EMAC的數(shù)據(jù)緩沖區(qū)中。
“優(yōu)化”方案,其中應(yīng)用程序通過(guò)DMA將應(yīng)用程序的數(shù)據(jù)復(fù)制到EMAC的數(shù)據(jù)緩沖區(qū)中。
場(chǎng)景描述
“理想”場(chǎng)景:在這種情況下,軟件使用測(cè)試模式設(shè)置描述符的數(shù)據(jù)緩沖區(qū),并且只有TxProduceIndex增加50次(每個(gè)數(shù)據(jù)包一次增加一次)發(fā)送)以觸發(fā)幀傳輸。換句話說(shuō),根本不考慮該應(yīng)用程序。盡管這不是典型用戶的情況,但它將提供最大可能的傳輸吞吐量。
“典型”場(chǎng)景:此案例表示應(yīng)用程序?qū)?shù)據(jù)復(fù)制到描述符中的典型情況發(fā)送幀之前的數(shù)據(jù)緩沖區(qū)。將此案例的結(jié)果與前一個(gè)案例的結(jié)果進(jìn)行比較,很明顯該應(yīng)用程序正在影響整體性能。不應(yīng)將此情況視為實(shí)際的EMAC吞吐量。但是,這里介紹的是說(shuō)明非優(yōu)化應(yīng)用程序如何降低整體結(jié)果,給人的印象是硬件太慢。
“優(yōu)化”場(chǎng)景:此測(cè)試使用DMA來(lái)復(fù)制應(yīng)用程序的數(shù)據(jù)進(jìn)入描述符的數(shù)據(jù)緩沖區(qū)。這種情況考慮了一個(gè)真實(shí)的應(yīng)用,但使用了有效利用快速LPC1700硬件的優(yōu)化方法。
軟件
本文提供了Keil MDK項(xiàng)目形式的測(cè)試軟件(請(qǐng)查看恩智浦網(wǎng)站上的AN11053)。可以使用配置向?qū)Р⒋蜷_“config.h”文件來(lái)選擇所需的方案(參見圖5)。除了場(chǎng)景之外,還可以通過(guò)此文件修改要發(fā)送的數(shù)據(jù)包數(shù)量和幀大小。
測(cè)試結(jié)果
運(yùn)行測(cè)試后,表格中列出了以下結(jié)果:
幀發(fā)送有效載荷(字節(jié))總數(shù)據(jù)(字節(jié))時(shí)間(毫秒)相對(duì)于最大值的吞吐量(兆字節(jié)/秒)%。可能的最大可能12.19 100.0%場(chǎng)景1 50 1500 75000 6.25 12.00 98.44%場(chǎng)景2 50 1500 75000 10.44 7.18 58.93%場(chǎng)景3 50 1500 75000 7.1 10.56 86.66%
表1:測(cè)試結(jié)果。
圖5:選擇測(cè)試場(chǎng)景。
結(jié)論
盡管場(chǎng)景1不是一個(gè)實(shí)際案例,但它為我們的硬件提供了可能的最大值作為參考,這非常接近于以太網(wǎng)100 Mbps的最大可能性。在場(chǎng)景2中,應(yīng)用程序?qū)φw性能的影響變得明顯。最后,方案3顯示了優(yōu)化的應(yīng)用程序如何極大地提高整體吞吐量。
通過(guò)運(yùn)行閃存(而不是RAM)中的代碼,在某些情況下通過(guò)增加代碼,可以找到優(yōu)化應(yīng)用程序并獲得更好結(jié)果的其他方法描述符的數(shù)量。總之,以太網(wǎng)吞吐量主要受應(yīng)用程序如何將數(shù)據(jù)從應(yīng)用程序緩沖區(qū)傳輸?shù)矫枋龇臄?shù)據(jù)緩沖區(qū)的影響。改進(jìn)此過(guò)程將提高整體以太網(wǎng)性能。 LPC1700和其他LPC部件具有內(nèi)置于系統(tǒng)硬件的優(yōu)化,具有DMA支持,增強(qiáng)型EMAC硬件和智能存儲(chǔ)器總線架構(gòu)。
-
微控制器
+關(guān)注
關(guān)注
48文章
7576瀏覽量
151727 -
ARM
+關(guān)注
關(guān)注
134文章
9121瀏覽量
368244 -
以太網(wǎng)
+關(guān)注
關(guān)注
40文章
5449瀏覽量
172176
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論