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