新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 優(yōu)化以太網控制器滿足嵌入式聯(lián)網需求

        優(yōu)化以太網控制器滿足嵌入式聯(lián)網需求

        作者: 時間:2017-06-06 來源:網絡 收藏

        目前支持消費電子和其它市場的嵌入式系統(tǒng)需要更高級的網絡連接能力。非PCI接口的以太網控制器為系統(tǒng)設計師的嵌入式連接方案提供了性能和架構選擇的最佳結合。因此,非PCI接口的以太網控制器成為這些嵌入式設計中外設聯(lián)網的標準解決方案。

        本文引用地址:http://www.104case.com/article/201706/349676.htm

        一直以來,設計師在對非PCI總線的嵌入式系統(tǒng)增加以太網連接功能的時候面臨多種挑戰(zhàn)。這些常見的挑戰(zhàn)包括:為現有的以太網控制器調整非標準的總線接口,滿足TCP/IP數據包處理所要求的CPU帶寬,使得由于外設和存儲器接口結合帶來的固有系統(tǒng)性能下降最小化。

        為了更好地克服這些挑戰(zhàn),設計師必須尋求對傳統(tǒng)的以太網控制器做出一些改變。其目的是在使用現有的嵌入式CPU的情況下得到一種能提高性能的嵌入式系統(tǒng)解決方案。下面讓我們了解如何實現這個目標。

        控制器設計基礎

        圖1介紹了典型的嵌入式系統(tǒng),其中采用了無PCI接口的嵌入式CPU和相關的存儲器(SRAM、SDRAM和閃存)以及通過本地總線連接的外設(視頻、USB和IDE控制器)。嵌入式CPU和操作系統(tǒng)的例子包括英特爾的XScale、瑞薩的SHx、松下及ST的芯片,這些芯片運行Linux、Windows CE、VxWorks和其它實時操作系統(tǒng)(RTOS)。

        從操作系統(tǒng)或軟件的角度來理解數據如何從嵌入式系統(tǒng)應用程序到以太網傳輸非常重要。圖2顯示了一種嵌入式系統(tǒng)軟件結構的實現。軟件結構分成應用程序、包含TCP/IP協(xié)議棧的操作系統(tǒng)和以太網控制器驅動程序。非PCI接口的以太網控制器通過本地總線與其軟件驅動程序連接。

        當應用程序通過網絡發(fā)送數據或控制信息時,它與操作系統(tǒng)一起產生一個指向不同緩沖區(qū)的軟件數據結構鏈表,以避免數據復制。此外,緩沖區(qū)還保存要放入以太網數據包的數據。每塊緩沖區(qū)代表一個以太網數據包的一個不同的部分,由以太網控制器驅動程序將這些不同的部分組合起來進行傳輸。數據緩沖區(qū)不是相互鄰近的,這意味著每塊緩沖區(qū)的頭和尾不在相同的線性地址空間內。

        如圖2所示,操作系統(tǒng)將“Tx Data Ptr”變量或軟件指針傳遞到以太網控制器軟件驅動程序。“Tx Data Ptr”具有描述符1的地址,描述符1指向描述符2,以此類推。這些描述符都指向數據緩沖區(qū)。然后,以太網控制器驅動程序通過本地總線將每一塊數據緩沖區(qū)轉移到以太網控制器。

        接收操作按相反的順序執(zhí)行。這個過程需要大量軟件參與,如果處理不當可能降低性能。同樣重要的是不同的數據緩沖區(qū)可能沒有在存儲器中自然地排列,這對于整體的網絡系統(tǒng)性能至關重要。

        有限的選擇

        當前,采用以太網連接的消費電子設備只限于下面的三種選擇:

        1. 外部PCI以太網控制器——大多數嵌入式處理器不支持PCI總線,因此選擇一個PCI以太網控制器通常就不可行。如表所示,根據市場研究表明,市場上8位或16位的CPU都不支持PCI,并且只有16%的32位CPU支持PCI,而大多數的嵌入式處理器支持一種本地/存儲總線。嵌入式CPU制造商沒有“擁抱”PCI是因為幾方面的原因。其一是成本。用來實現PCI的額外I/O管腳和電路會增加嵌入式處理器的成本。嵌入式CPU需要一種存儲器總線,而在很多情況下,這個總線是與其他外設共享的。因此,增加另外一種寬的并行總線來支持PCI外圍設備并不現實。除此之外,通常在這些嵌入式系統(tǒng)中并不需要像即插即用這樣的先進PCI功能。

        2. 集成以太網。表顯示了內部集成了以太網控制器的嵌入式CPU所占百分比。很明顯,大多數嵌入式處理器并不支持集成的以太網控制器。

        3. 外部的非PCI接口以太網控制器如圖1所示,大多數嵌入式處理器支持一種非PCI的本地總線,而且不包含對內部以太網控制器的支持。



        圖1:支持非PCI以太網連接的典型嵌入式系統(tǒng)



        圖2:通過以太網發(fā)送應用數據

        主要設計挑戰(zhàn)

        在為非PCI嵌入式CPU增加高性能以太網連接功能的挑戰(zhàn)通常為那些傳統(tǒng)上非PCI接口的以太網控制器所忽略。然而,通過考慮一定的架構改進,非PCI以太網控制器可以提供更高的性能,同時還解決成本和可靠性的問題。三個主要的挑戰(zhàn)是緩沖區(qū)排列、總線架構以及流控制。下面將仔細地探討這些問題。

        1. 緩沖區(qū)排列

        當以太網的幀數據存在于嵌入式CPU的系統(tǒng)存儲器中的時候,就產生了以太網幀數據緩沖區(qū)的排列問題。以太網幀數據會被分割開來并分散到存儲器的多個緩沖區(qū)中。每個緩沖區(qū)片段可以在幀上的任一字節(jié)排列上開始和結束,并且可能是任意長度。

        未排列的數據對于傳統(tǒng)的以太網控制器來說并不理想,因為傳統(tǒng)的以太網控制器需要將發(fā)送數據以32位排列的形式提交給控制器。因為數據可能以未排列整齊的片斷形式到達驅動程序,驅動程序必須用CPU來收集分散的片斷,并在寫入以太網控制器之前對數據進行重新排列。這個過程的效率很低,因為必須從系統(tǒng)的存儲器中讀取數據、重新排列并寫入到以太網控制器。相比從系統(tǒng)存儲器中讀取數據并直接寫入到以太網控制器,這個過程至少要三步。

        最糟糕的負面影響是與直接存儲器訪問(DMA)控制器不兼容。傳統(tǒng)上,在嵌入式CPU中的DMA控制器不能執(zhí)行數據的重新排列,這使得它們不能在系統(tǒng)中移動以太網數據。數據移動和重新排列的任務就落到了嵌入式CPU上,其所占用的MIPS本來可以在其它應用中得到更好的利用。

        理想的以太網控制器會自動地處理數據的重新排列。數據會以自然排列的形式傳遞,以太網控制器將了解包的數據邊界,然后以太網控制器在數據發(fā)送之前在內部透明地對數據進行重新排列。這種透明的重新排列通過緩沖區(qū)復制使嵌入式CPU從重新排列數據的任務中解放出來。現在系統(tǒng)就可以選擇使用簡單的DMA控制器來移動數據了。



        表1:總線類型和對集成以太網控制器的支持

        2. 總線架構

        嵌入式CPU為了發(fā)送以太網數據包,需要將數據寫入到以太網控制器中的緩存內。反之,對于接收以太網數據包,嵌入式CPU必須從以太網控制器的內部緩存中讀出收到的數據。嵌入式CPU利用編程I/O(PIO)周期或DMA周期移動數據。

        不管是使用PIO或DMA進行發(fā)送或者接收操作,數據都是通過嵌入式CPU的外部本地總線傳送的。每次操作都需要花費時間,并且花費的時間越多,操作對系統(tǒng)整體性能影響就越大。關鍵問題是要使訪問以太網控制器時間很短,以提高整個系統(tǒng)的速度。傳統(tǒng)上,低性能的以太網控制器在讀和寫訪問期間會迫使CPU處于等待狀態(tài),這等效于更長的讀和寫周期。在本地總線上增加更多的等待狀態(tài)意味著CPU執(zhí)行其它任務的時間更少,以及用于內部和外部設備的帶寬更少。

        其它一些不太明顯的機制會導致額外的等待狀態(tài)。例如,很多的傳統(tǒng)以太網控制器需要很長的數據和地址建立時間。這可能需要額外的連接邏輯以及鎖存器。在這種系統(tǒng)中,可能需要減少系統(tǒng)中每個器件的總線周期時間-包括存儲器。

        某些嵌入式CPU采用其它機制來減少外部本地總線上的處理時間。這種機制的一個實例是突發(fā)模式讀處理。這種操作模式通常與DMA控制器有關,可以降低總線周期占用。在突發(fā)處理期間,控制信號被維持,在每次讀操作時地址都改變。通常與PIO讀相關的讀周期之間的解除維持時間被消除。傳統(tǒng)的以太網控制器不支持突發(fā)模式讀。大多數嵌入式處理器本身支持SRAM類型的本地總線接口。因此優(yōu)化以太網控制器以模擬SRAM存儲器接口很有意義。這樣做優(yōu)勢很明顯。這種以太網控制器不僅為大多數嵌入式處理器提供一種無縫的接口,而且所有前面已經討論過的特性都可以使用,比如快速的整體總線周期時間、最小的地址和數據建立時間以及支持突發(fā)模式讀取等。

        3. 流控制

        另外一種增加非PCI接口以太網控制器性能的方式是優(yōu)化以太網流量情況。這可以通過支持以太網流控制實現。

        以太網流控制容許以太網接收器減緩其對應的發(fā)送器的速度,這能夠防止接收器緩存溢出。中斷延遲或其它原因會導致嵌入式CPU無法跟上以太網數據接收的速度,這會導致接收緩存溢出。一旦出現溢出,接收到的數據便會丟失,從而導致嚴重的系統(tǒng)性能下降。

        很多以太網設備使用一種“暫停控制”幀支持全雙工流控制。暫停操作在規(guī)定的時間段內禁止發(fā)送數據幀。暫停操作由由一個暫停控制幀組成,這個幀包含全局分配的多播地址、暫停操作碼以及指出數據禁止傳輸的持續(xù)時間的參數組成。當接收到包含預留的多播地址和暫停操作碼的幀時,以太網設備就禁止在指定的時間段內傳輸數據。在半雙工模式,反壓(backpressure)用于流控制。以太網控制器通過“堵塞”接收數據和故意產生沖突來調節(jié)數據接收。在檢測到沖突后,遠端站點將停止發(fā)送數據。

        理想的以太網控制器需要能檢測其內部緩存空間,然后在沒有處理器的干預下自動地發(fā)送一個暫停幀,或者發(fā)生堵塞。而且,設備應該能發(fā)送一個“零時間”的暫停幀,以在內部緩存有可用空間時重新發(fā)起數據傳送。自動流控制通過減少處理器中斷次數和開銷提高了系統(tǒng)的整體性能。恰當地實現流控制還能避免網絡兩端的接收緩存溢出。

        本文小結

        消費電子設備、娛樂音視頻設備以及傳統(tǒng)的家庭網絡設備(例如PC和打印機)正在向一個網絡融合,很明顯以太網成為家庭中實現連接的網絡選擇。在很多情況下,關于可以選擇哪種嵌入式CPU用于消費電子或音視頻設計,系統(tǒng)設計者的選擇有限。因此,在不換用高成本的CPU方案的條件下,實現期望的性能水平的唯一辦法是優(yōu)化現有的非PCI接口以太網控制器。通過優(yōu)化非PCI接口以太網控制器的架構,可以提高要求苛刻的應用的整體系統(tǒng)性能。

        作者:Charlie Forni

        工程總監(jiān),charles.forni@smsc.com

        Paul Brant

        高級首席系統(tǒng)架構師,paul.brant@smsc.com

        SMSC公司



        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 平安县| 历史| 嘉义市| 哈尔滨市| 杭锦后旗| 濮阳县| 平顺县| 乐平市| 泰和县| 始兴县| 灵山县| 濮阳市| 松阳县| 赤峰市| 墨脱县| 安龙县| 芦溪县| 新闻| 德江县| 文水县| 凤山县| 澎湖县| 蒙阴县| 思南县| 香港| 新巴尔虎左旗| 龙泉市| 贞丰县| 屯留县| 双鸭山市| 永修县| 新安县| 师宗县| 延长县| 肃南| 邢台县| 武清区| 白城市| 岳阳县| 清丰县| 广丰县|