前言:尋找寫作靈感?中文期刊網用心挑選的直接內存通信技術論文,希望能為您的閱讀和創作帶來靈感,歡迎大家閱讀并分享。
1.1DMC技術思想
現有的網卡通信是把網卡作為計算機的一個外圍設備來進行操作的,用戶先要把數據從內存送到網卡設備里,網卡才能把數據發送出去,接收數據時則需要把數據先接收到網卡設備的存儲空間中,然后再把數據拷貝至內存中。這種實現方式避免不了網卡設備和內存之間的數據拷貝,并且網卡作為一種外圍設備通信活動也受到相應總線接口如PCI總線接口的限制。DMC技術是把網卡作為一塊特殊的內存,插在物理地址最高內存區的內存插槽中,使得網卡和主機之間的數據交換如同主機訪問內存一樣,主機的網絡通信活動與讀寫內存一樣,這就避免了原有的通信過程中網卡設備和內存之間的數據傳輸,因此把這種通信機制稱為直接內存通信(DirectMemoryConnection,DMC),并且把基于DMC技術實現的網絡適配器稱為DMC網卡。DMC通信機制可以應用于多種網絡環境中,下面以高速光纖通道交換網作為應用環境,對DMC通信機制技術細節進行介紹。DMC技術的詳細過程描述如下:首先,把網卡作為一塊特殊的內存插入最高內存區的內存插槽中,修改操作系統對內存的最高物理地址區部分空間,即DMC網卡上的部分存儲空間進行注冊預留,將其作為CPU和網卡共享的通信專用區,只允許與網絡通信活動相關的用戶讀寫,其他系統進程無權訪問。我們把通信專用區按照以下4種用途進行分配:接收緩沖區、發送緩沖區、網卡命令區以及網卡狀態區。然后,根據相應的通信協議如FC協議進行網絡通信活動,通過訪問通信專用區,控制具有通信控制邏輯、并串轉換/串并轉換器和光收發器等部件的DMC網卡,進行計算機之間的點對點直接內存通信。
1.2DMC通信活動描述
DMC通信機制中主要通信活動描述如下:(1)發送數據:通信源節點發送數據時,只需用戶使用寫普通內存的方法將數據寫入通信專用區的發送緩沖區中,同時把發送命令寫入通信專用區的網卡命令區。DMC網卡上的通信控制邏輯根據網卡命令區的命令解析結果,從通信專用區的發送緩沖區中取出數據發送至網絡;(2)接收數據:在DMC通信機制的應用環境下,通信目的節點配置有相同的DMC網卡,網絡上的數據經網卡的通信邏輯接收后放入通信專用區的接收緩沖區,同時網卡控制邏輯修改通信專用區中的網卡狀態信息。當用戶需要獲得網絡數據時,只需使用訪問普通內存的方法讀通信專用區的接收緩沖區數據即可。因此,DMC通信機制實現了兩臺計算機內存之間的直接通信。用戶感覺不到DMC網卡的存在,使用訪問普通內存的方法就可以實現計算機間的點對點直接通信。
1.3DMC通信機制的體系結構
在直接內存通信體系結構中,DMC網卡和內存處于對等的位置,對CPU是透明的,CPU使用操作普通內存的方法操作DMC網卡的通信專用區,用戶通過對DMC網卡的通信專用區進行讀寫來完成網絡通信活動。因此,DMC通信機制避免了數據在網卡設備和內存之間的拷貝,并且通信速率也不再受傳統I/O總線的限制。
2DMC網卡原型機———FIFO-DMC網卡研究
2.1FIFO-DMC網卡的體系結構
基于直接內存通信技術DMC以及FPGA片上的存儲區域FIFO(FirstInputFirstOutput,FIFO)和寄存器,作者設計了DMC技術,并將其應用于高速光纖通道交換網的原理樣機FIFO-DMC網卡。該網卡是在DIMMDDR內存總線規范上擴展實現的。(1)光纖用于連接FIFO-DMC網卡和高速光纖交換網絡的對應端口。(2)光收發器負責進行光信號與差分電信號之間的轉換。(1)電收發器用于數據的串/并轉換。(4)FPGA可編程器件從功能上可以分為兩大部分:DDR-DIMM內存總線接口邏輯和通信邏輯,其中DDR-DIMM內存總線接口邏輯包括5個模塊,分別為SPD模塊、命令解析邏輯、時鐘管理邏輯、地址控制邏輯、讀寫控制邏輯,用以完成網卡的通信邏輯以及網絡用戶和通信專用區之間的信息交互。通信邏輯包括發送邏輯、CRC校驗邏輯、接收邏輯、控制邏輯、8B/10B編碼邏輯與8B/10B解碼邏輯5個模塊,用以實現真正的網絡傳輸活動。
2.2FIFO-DMC網卡的主要功能模塊
下面對FIFO-DMC網卡中的主要功能模塊進行簡要介紹。
(1)FIFO-DMC網卡的通信專用區
按照DMC通信機制的要求,FIFO-DMC網卡的通信專用區按用途分為4塊:接收緩沖區、發送緩沖區、網卡命令區以及網卡狀態區。接收緩沖區和發送緩沖區采用FPGA片上FIFO實現,數據接收FIFO命名為RxFIFO,用來存放網卡接受邏輯從網上接收的數據,用戶使用讀普通內存的方法就可獲取。數據發送FIFO命名為TxFIFO,用來存放用戶待發送的數據,用戶使用寫普通內存的方法把數據放入發送FIFO中,而后網卡的發送邏輯讀取FIFO的內容進行傳輸。數據接收FIFO和數據發送FIFO的容量都為一幀數據的大小。網卡命令區和網卡狀態區采用FPGA片上64位寄存器實現,網卡命令區即網卡命令寄存器COMMAND_REG存放用戶發出的網卡命令。網卡狀態區即網卡狀態寄存器STATE_REG存放網卡的各種狀態信息。DMC軟件或網卡通信邏輯在對網卡進行操作前,讀取COMMAND_REG和STATE_REG的內容,判斷相應位,再根據結果執行相應動作來防止沖突。寄存器中各位置“1”表示有效,在系統初始化時全部清零。
(2)SPD模塊
SPD模塊使設計出的FIFO-DMC網卡設備保持與普通內存相同的穩定性,能夠正確地被北橋芯片或者CPU芯片中的存儲管理器識別。在FIFO-DMC網卡中使用VHDL語言編程模擬SPD芯片的工作。通過分析,FIFO-DMC網卡的SPD模塊只需使用SPD芯片的5個引腳:SA0、SA1、SA2、SDA和SCL,并且BIOS對SPD模塊只執行讀操作(RandomAddressRead),所以SPD模塊的結構比較簡單,主要包括START狀態控制以及Ran-domAddressRead命令響應兩個功能模塊。其中,START狀態的控制邏輯比較簡單,主要依靠作為從設備的SPD模塊監聽串行數據線(SDA)和串行時鐘線(SCL)來產生,此處不再贅述。RandomAddressRead命令的響應由一個狀態機來實現,在不同的狀態完成相應的工作。
(3)命令解析邏輯
命令解析邏輯主要接收來自DDR-DIMM內存總線接口的各種內存訪問命令,并對命令進行解析。FIFO-DMC網卡的命令解析邏輯由一個狀態機控制,狀態轉移時設置特定的信號,由該信號觸發相應的讀、寫邏輯。
(4)地址解析邏輯
此模塊在內存訪問命令到來時,控制地址總線上的行地址和列地址等信息進行地址譯碼工作,尋址被訪問的存儲單元,使得各種數據信息能夠在網絡用戶、網卡的通信邏輯和內存之間正確地完成讀寫工作,協助FPGA中控制邏輯實現網卡的通信活動。由于FIFO-DMC網卡中使用了FPGA芯片上的FIFO和寄存器來模擬通信專用區,因此用戶操作通信專用區時只有4個地址信息:TxFIFO寫端口對應的虛擬地址,RxFIFO讀端口對應的虛擬地址,命令寄存器COMMAND_REG對應的虛擬地址以及網卡狀態寄存器STATE_REG對應的虛擬地址。地址解析邏輯根據用戶訪問的虛擬地址信息定位到通信專用區的某個部分即可。
(5)讀寫控制邏輯
根據地址解析邏輯尋址出的通信專用區空間以及命令解析邏輯解析的結果,對FPGA的寄存器或者FIFO進行讀寫操作。外部與通信專用區之間傳輸的數據信息主要有3類,分別是通信活動中的數據、用戶寫入網卡命令區的網卡命令以及網卡的狀態信息。
2.3FIFO-DMC網卡的軟件實現
直接內存通信技術DMC得以實現的重要根基是預留部分內存空間供DMC通信機制進程專用,這依賴于Linux操作系統提供的靈活機制。因此,DMC網卡的軟件功能包括:
(1)實現通信專用區的物理內存預留
依據Linux操作系統對內存的管理辦法,將FIFO-DMC網卡插入內存插槽的高端,使其存儲空間即通信專用區處于內存區的物理地址最高端。然后,我們借助于Linux內核啟動時能接收某些命令行選項或啟動時參數的特性,修改系統引導程序中的啟動配置參數mem,限定內核使用的內存數量。實際物理內存中大于mem值的部分就是預留的內存空間,系統不會使用這片物理內存。
(2)實現通信專用區內存的映射
由于Linux操作系統是一個虛擬內存系統,訪問內存是基于虛擬地址空間的,因此為了能夠使用被預留的通信專用區空間,需要把這部分物理內存正確映射到虛擬內存空間中。Linux操作系統提供了至少3種實現內存映射的方法,可以在系統不同時刻將通信專用區映射為I/O內存、內核空間內存或普通用戶空間,考慮到DMC技術中通信專用區需要在用戶態下進行訪問,作者最終選擇使用mmap設備操作方法來實現通信專用區的內存映射。并且,由于在FIFO-DMC網卡的設計中使用FPGA片上FIFO和寄存器模擬實現通信專用區,因此DMC軟件實現對通信專用區映射之后,只需要網卡命令寄存器、網卡狀態寄存器、數據發送FIFO的寫端口和數據接收FIFO的讀端口4個虛擬地址。
(3)實現用戶對通信專用區的訪問接口
由于FIFO-DMC網卡硬件邏輯中提供了將通信專用區作為普通內存管理和訪問的功能,因此用戶可以使用訪問普通內存的方法訪問通信專用區。
2.4FIFO-DMC網卡的功能驗證測試
2.4.1FIFO-DMC網卡的運行測試平臺
FIFO-DMC網卡的測試平臺采用PC機,CPU為Intel(R)Pentium(R)4,北橋芯片為Intel的RG82865PESL722。FPGA采用ALTERA公司Cyclone的EP1C4芯片,串/并轉換使用德州儀器的tlk2501,光電轉換則選用美國Finisar公司的產品FTRJ8519。示波器為Tektronix的TDS3052。為了降低調試的難度,通過BIOS設置,將內存時鐘頻率200MHz改為100MHz。
2.4.2FIFO-DMC網卡的運行測試結果。
經測試,FIFO-DMC網卡能在開機的BIOS自檢中被識別為內存設備,正確響應CPU的讀寫命令,并能在操作系統引導時預留共享存儲區,證明了直接內存通信DMC通信機制是正確的和可行的。
3結束語
本文提出的直接內存通信技術DMC把通信網卡作為一塊特殊的內存插在內存插槽中,用戶通過內存訪問操作實現計算機之間的直接通信,使得計算機的網絡通信活動不受PCI等傳統I/O總線接口的限制。相比基于傳統I/O總線的網絡通信方式,基于DMC技術的通信機制中數據無需在網卡設備和內存之間進行拷貝,并且網絡通信性能不再受傳統總線接口的限制,通信速度更高,傳輸延遲更小,通信手段更簡單。在后續工作中,筆者將繼續研究內存管理方法和Linux操作系統細節,在保證DMC網卡的工作穩定性和通信性能不受影響的前提下,增加DMC技術的實用性、操作簡便性以及可推廣性。
作者:陳穎圖 王愛林 張炎 劉君瑞 單位:中航一集團第六三一研究所 西北工業大學計算機學院