a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 一種面向云架構的高性能網絡接口實現技術

一種面向云架構的高性能網絡接口實現技術

作者: 時間:2015-03-02 來源:網絡 收藏

  1. 2.2內存訪問效率

本文引用地址:http://www.j9360.com/article/270287.htm

  在絕大多數情況下,應用程序并不直接通過物理內存地址來訪問內存,而是采用虛擬地址,當CPU收到內存訪問指令時會先把虛擬地址轉換成實際的物理地址,然后進行內存的訪問操作。這種方式已經被普遍接受,甚至被稱作是IT時代最杰出的發明之一,但是這種非直接內存訪問方式并不是沒有代價的,地址的翻譯需要通過頁表來完成,頁表通常情況下是儲存在內存當中的,訪問速度很慢,為了解決這個問題,大部分系統都采用了TLB(Tralaslation Lookaside Buffer)的方式,最近觸發的一些地址翻譯結果都會保存在TLB中,TLB實際上使用的是CPU的緩存(cache),訪問速度非??欤欢鴆ache容量小,只有最近訪問的一部分頁表項能保存下來,因此出現了“TLB Miss”;當CPU發現當前虛擬地址無法在TLB里面找到相對應的表項時,就引入了一個TLB Miss,此時CPU需要回到內存當中的頁表進行查找,性能會顯著降低。因此當程序需要進行頻繁的內存操作時,需要盡量減少TLBMiss的次數。當前系統定義的頁面大小一般是4k字節,當應用程序使用比如2G這樣的大內存時,總共需要50多萬個頁表項,這個數目是相當龐大的,同時因為只有一小部分的表項能夠裝載在TLB中,因此TLB Miss的幾率也很大。另外,一般情況下程序的虛擬內存空間都是連續的,但其對應的物理內存空間卻不一定是連續的,這樣會導致一次虛擬內存尋址操作可能需要進行多次物理內存尋址操作才能完成,這也會成倍地增加內存訪問消耗的時間。

  1.3多核親和力

  多核系統對提高系統的性能有很大的幫助,當前大部分系統的調度算法會把當前的任務放到最空閑的核上執行,這樣的好處是能夠增加CPU資源的利用率,但因為每個CPU核心都有自己獨立的寄存器和cache,當任務從一個核心遷移到另一個核心時,會引發大量的核問切換開銷,比如上下文切換,cache miss等等。另外,對于使用NUMA(Non-Uniform Memory Access)架構的系統而言,核間切換的開銷會更大,在SMP(Svmmetric Multiprocessing)架構下,所有核心是通過共享接口訪問內存的,因此每個核心訪問內存的速度是一樣的,但在NUMA架構下,核心對內存的訪問分為本地訪問和遠程訪問。核心訪問本地內存的速度要比訪問遠端內存的速度快很多,當任務從核心A切換到核心B的時候,如果它仍然使用之前在A上分配的內存,那么其內存訪問模式會從本地模式切換成遠程模式,從而引起內存訪問速度的下降。

  1.4共享隊列的訪問

  當把數據包從一個任務傳遞到另外一個任務的時候,需要用到共享隊列。通常情況下,在訪問共享隊列的時候會用到Mutex鎖來保證訪問的一致性。當應用程序申請Mutex鎖失敗之后會陷入內核態中睡眠,當鎖可用之后再從內核態切換到用戶態執行,這里也引入了上下文切換的開銷,而且當數據流量很大的時候,相應的開銷也會非常大。為了消除這類開銷,業界也提出了一些改進的方法,比如自旋鎖(spinlock),自旋鎖一直在用戶態運行,不會陷入內核態中,因此也不會產生上下文切換的開銷,但是它還是存在一些弊端:一方面可能造成死鎖,如果一個線程拿到鎖之后被意外銷毀,其它等待此鎖的線程會發生死鎖;另一方面,當共享隊列和線程數量猛增時,鎖的數量也會同時增加,對鎖的管理會給系統帶來很大的負擔。

  2 HPNI實現原理

  2.1傳統實現模式的不足

  從上述分析可以得出傳統的實現主要有以下幾點不足:

  (1)上下文切換開銷太多,這些開銷主要是由中斷、系統調用、鎖以及核間切換引入;

  (2)內存拷貝的開銷太多;

  (3)內存訪問效率不高,缺乏相應的優化;

  (4)采用帶鎖共享隊列進行數據共享,引入額外開銷;

  (5)收發包操作必須經過Linux內核單線程完成,無法擴展成多核多線程模式從而提高性能。

  2. 2 HPNI的原理

  針對上述不足,提出了一種新型的實現模式,如圖3所示。

  

 

  圖3 HPNI網絡接口實現



關鍵詞: 網絡接口 FPGA

評論


相關推薦

技術專區

關閉