王 鑫,吳俊輝
(1.江南大學(xué)教育部輕工過程先進(jìn)控制重點(diǎn)實(shí)驗(yàn)室,江蘇 無錫 214122; 2.江蘇省未來網(wǎng)絡(luò)創(chuàng)新研究院,江蘇 南京 211111)
分子動(dòng)力學(xué)(Molecular Dynamics, MD)模擬一直是高性能計(jì)算領(lǐng)域的熱門話題,在化學(xué)、材料、生命科學(xué)等多個(gè)學(xué)科領(lǐng)域具有廣泛的應(yīng)用[1-5]。分子動(dòng)力學(xué)模擬主要基于牛頓第二定律來實(shí)現(xiàn)對(duì)分子運(yùn)動(dòng)狀態(tài)的追蹤,這需要花費(fèi)大量時(shí)間去計(jì)算粒子間的作用力,特別是短程力[6-8]。在進(jìn)行大時(shí)間尺度的模擬時(shí),需要在極短時(shí)間內(nèi)對(duì)粒子的特征參數(shù)進(jìn)行高次迭代來計(jì)算短程力。對(duì)于以CPU為主導(dǎo)的分子動(dòng)力學(xué)模擬系統(tǒng),這會(huì)產(chǎn)生高額的CPU設(shè)備數(shù)據(jù)傳輸成本[9]。
為了降低數(shù)據(jù)通信過程中的高額成本以及提升短程力計(jì)算效率,本文放棄傳統(tǒng)的以CPU為主導(dǎo)的設(shè)計(jì),采用基于FPGA加速卡的系統(tǒng)設(shè)計(jì)[10-13]。通過引入FPGA,提出一種交互控制系統(tǒng)。該系統(tǒng)可以使用片上存儲(chǔ)緩存數(shù)據(jù),減少數(shù)據(jù)通信頻率[14];同時(shí)可以進(jìn)行并行計(jì)算[15-17]來提高計(jì)算效率。
FPGA加速卡的核心是短程力計(jì)算模塊。在分子動(dòng)力學(xué)模擬過程中,短程力計(jì)算模塊不斷地進(jìn)行粒子間的短程力運(yùn)算,而粒子信息的傳輸速度影響著短程力計(jì)算的效率[18]。短程力計(jì)算模塊支持多組粒子間短程力的并行計(jì)算[19]。計(jì)算的粒子組數(shù)越多,相應(yīng)的數(shù)據(jù)傳輸壓力就越大。同時(shí),并行計(jì)算多組粒子之間的短程力時(shí),還可能出現(xiàn)同時(shí)讀取同一粒子數(shù)據(jù)的情況,這又會(huì)引發(fā)訪存的沖突問題。如何利用FPGA上有限的硬件資源來實(shí)現(xiàn)粒子信息從片上存儲(chǔ)到短程力計(jì)算模塊的快速可靠的傳輸就顯得至關(guān)重要。針對(duì)該問題,本文提出一種交互控制系統(tǒng)(Interactive Control System, ICS),用較少的FPGA硬件資源,實(shí)現(xiàn)粒子信息的高效傳遞,大大減輕了計(jì)算模塊在并行化時(shí)所面臨的數(shù)據(jù)傳輸壓力,同時(shí)避免了訪存的沖突問題。
本文FPGA加速卡的總體架構(gòu)設(shè)計(jì)如圖1所示。上位機(jī)將二進(jìn)制的粒子數(shù)據(jù)通過PCIE總線傳遞給FPGA加速卡上的片上存儲(chǔ)BRAM(Block RAM),接著發(fā)送開始信號(hào)到ICS。ICS收到開始信號(hào)后,取出BRAM中的數(shù)據(jù),并根據(jù)粒子配置對(duì)數(shù)據(jù)進(jìn)行解析,之后將完整的粒子信息發(fā)送給短程力計(jì)算模塊進(jìn)行運(yùn)算。短程力計(jì)算模塊在完成運(yùn)算后,向ICS發(fā)送新一輪的數(shù)據(jù)請(qǐng)求,并將力的計(jì)算結(jié)果發(fā)送給力回寫模塊,令其將數(shù)據(jù)回寫到BRAM。當(dāng)完成所有數(shù)據(jù)的運(yùn)算后,ICS反饋給上位機(jī)一個(gè)結(jié)束信號(hào)。上位機(jī)收到結(jié)束信號(hào)后,將BRAM中的力信息取出,用于粒子運(yùn)動(dòng)信息的更新。
圖1 基于FPGA的分子動(dòng)力學(xué)模擬系統(tǒng)總體設(shè)計(jì)框圖
本文的分子動(dòng)力學(xué)模擬系統(tǒng)中,短程力計(jì)算模塊的設(shè)計(jì)思路與波士頓大學(xué)提出的設(shè)計(jì)[12,20]類似,是基于NT算法(Neutral Territory method)[21-25]來實(shí)現(xiàn)粒子間配對(duì)和計(jì)算的。這是Shaw[25]在2005年開發(fā)的一種并行化短程力計(jì)算多體問題的方法。該方法中,一塊物理空間被劃分為多個(gè)tower區(qū)域(固定寬度的長條形區(qū)域)和plate區(qū)域(以tower區(qū)域的中間段為中心形成的半圓盤形區(qū)域)[25]。在進(jìn)行分子動(dòng)力學(xué)模擬時(shí),需要同時(shí)計(jì)算各個(gè)tower區(qū)域中粒子與對(duì)應(yīng)plate區(qū)域中粒子間的交互作用。
為了便于計(jì)算,短程力計(jì)算模塊將tower區(qū)域與plate區(qū)域分別劃分為固定大小的單元。tower區(qū)域單元中的粒子靜態(tài)緩存在短程力計(jì)算模塊內(nèi),plate區(qū)域單元中的粒子依次動(dòng)態(tài)流入短程力計(jì)算模塊,與緩存的tower區(qū)域的粒子進(jìn)行短程力的計(jì)算。本文把上述2類單元形象地稱為靜態(tài)盒子和動(dòng)態(tài)盒子,并統(tǒng)稱為盒子。鑒于粒子在物理空間中隨機(jī)分布,粒子在盒子中的分布也是隨機(jī)的,且每個(gè)盒子內(nèi)的粒子數(shù)目不定。
從總體設(shè)計(jì)與NT算法的原理可以看出,ICS工作邏輯的設(shè)計(jì)直接影響著短程力計(jì)算模塊的工作效率,而BRAM內(nèi)的數(shù)據(jù)結(jié)構(gòu)[26]又影響著ICS的數(shù)據(jù)解析效率。
本文設(shè)計(jì)的ICS硬件系統(tǒng)在邏輯上將BRAM按盒子進(jìn)行劃分。這些盒子有各自的編號(hào),如圖2所示。為了便于管理,每一塊盒子所對(duì)應(yīng)的存儲(chǔ)器空間內(nèi),可存儲(chǔ)的粒子數(shù)據(jù)最大容量保持一致,而需要使用的粒子數(shù)據(jù)則是存儲(chǔ)在不同盒子對(duì)應(yīng)的邏輯存儲(chǔ)空間的不同位置(對(duì)應(yīng)粒子在物理空間中隨機(jī)分布的狀態(tài)),所以,BRAM內(nèi)緩存的粒子數(shù)據(jù)就存在有效(需要使用的數(shù)據(jù)段)與無效(不關(guān)心的數(shù)據(jù)段)的區(qū)別。如果一個(gè)盒子中的所有粒子數(shù)據(jù)都是無效的,該盒子就被稱為空盒子。粒子數(shù)據(jù)包括用于尋址的粒子盒子編號(hào)和盒內(nèi)編號(hào),以及用于計(jì)算短程力的粒子的三維坐標(biāo)、電荷數(shù)、sigma(σ)和epsilon()[27]。
圖2 片上BRAM的數(shù)據(jù)分布圖
為了提高系統(tǒng)的工作效率,避免對(duì)無效數(shù)據(jù)段進(jìn)行解析,本文引入位圖來獲得有效粒子在BRAM中的具體位置,進(jìn)而完成數(shù)據(jù)的高效傳遞。具體來說,采用位圖的每一位依次與粒子的位置空間對(duì)應(yīng),1表示該位置的數(shù)據(jù)是有效粒子數(shù)據(jù),0表示無效的。這樣就無需取出整個(gè)盒子的所有粒子數(shù)據(jù),而是由位圖得到每一個(gè)有效粒子的確切位置,同時(shí)也避免了解析全是無效數(shù)據(jù)的空盒子。這樣的數(shù)據(jù)結(jié)構(gòu)有助于提高粒子數(shù)據(jù)的傳輸速度和后續(xù)短程力計(jì)算模塊的計(jì)算速度。為簡化描述,后文提及的粒子在不加說明的情況下,指的都是有效粒子。
除了粒子數(shù)據(jù),分子動(dòng)力學(xué)模擬涉及的另一類重要數(shù)據(jù)是力數(shù)據(jù)。注意到,BRAM的訪問端口至多2個(gè),而其中一個(gè)端口需要用于加載二進(jìn)制數(shù)據(jù)文件。為了提高粒子數(shù)據(jù)解析模塊和力回寫模塊的并行化程度,避免粒子數(shù)據(jù)讀取和力數(shù)據(jù)讀寫在訪存時(shí)出現(xiàn)沖突,本文將力數(shù)據(jù)存儲(chǔ)于另一塊BRAM中[28],劃分方式與粒子數(shù)據(jù)一致,數(shù)據(jù)內(nèi)容為粒子所受的力在3個(gè)方向的分量為f_x、f_y、f_z,如圖2所示。
基于BRAM數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方案,本文將ICS分為2個(gè)模塊,分別是取數(shù)控制模塊和粒子數(shù)據(jù)解析模塊(見圖1)。整個(gè)ICS的工作流程如下:ICS一開始處于待機(jī)狀態(tài),上位機(jī)先將二進(jìn)制的位圖數(shù)據(jù)和粒子數(shù)據(jù)通過PCIE發(fā)送到FPGA加速卡,并按照1.2節(jié)設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)在FPGA加速卡的BRAM中,同時(shí)將BRAM中對(duì)應(yīng)的力存儲(chǔ)空間的力清零;上位機(jī)完成數(shù)據(jù)寫入后,再發(fā)送盒子對(duì)號(hào)(用于指定計(jì)算哪2個(gè)盒子內(nèi)粒子間的短程力)給ICS的取數(shù)控制模塊,取數(shù)控制模塊根據(jù)盒子對(duì)號(hào)與圖2所示的BRAM地址映射關(guān)系得到粒子數(shù)據(jù)的存儲(chǔ)地址,并發(fā)送給粒子數(shù)據(jù)解析模塊;粒子數(shù)據(jù)解析模塊在收到地址后,通過BRAM_CTRL(自定義的與BRAM交互的控制塊)從BRAM中依次讀取出粒子數(shù)據(jù),然后根據(jù)預(yù)定義的粒子配置(包含短程力計(jì)算模塊所需靜態(tài)粒子個(gè)數(shù)、粒子配置信息各參數(shù)及對(duì)應(yīng)位寬等)對(duì)二進(jìn)制數(shù)據(jù)進(jìn)行解析,并輸出給短程力計(jì)算模塊;當(dāng)完成一組盒子號(hào)的所有粒子的力計(jì)算后,短程力計(jì)算模塊將結(jié)果(包含力信息和粒子位置信息)發(fā)送給力回寫模塊,然后,力回寫模塊更新BRAM中對(duì)應(yīng)的力數(shù)據(jù),同時(shí),ICS開始下一輪的數(shù)據(jù)解析與傳輸;在完成所有盒子對(duì)中粒子的數(shù)據(jù)解析并收到短程力計(jì)算模塊的運(yùn)算完成信號(hào)后,取數(shù)控制模塊將結(jié)束信號(hào)反饋給上位機(jī),上位機(jī)再將力數(shù)據(jù)從BRAM中取回,用于粒子運(yùn)動(dòng)信息的更新。
為了避免從BRAM中讀取粒子數(shù)據(jù)時(shí)引發(fā)沖突問題,本文使用如下設(shè)計(jì):從BRAM中依次取出相應(yīng)盒子內(nèi)的粒子數(shù)據(jù),解析處理后按照先靜態(tài)粒子后動(dòng)態(tài)粒子的順序傳輸給短程力計(jì)算模塊。為了進(jìn)一步提高傳輸效率,先取一個(gè)靜態(tài)盒子內(nèi)的粒子數(shù)據(jù)進(jìn)行緩存,然后將所有需要計(jì)算力的動(dòng)態(tài)盒子內(nèi)的粒子數(shù)據(jù)依次取出,從而避免對(duì)同一個(gè)靜態(tài)盒子內(nèi)粒子數(shù)據(jù)進(jìn)行多次解析。該設(shè)計(jì)在節(jié)省傳輸帶寬的同時(shí),又與短程力計(jì)算模塊的計(jì)算速度相匹配,為實(shí)現(xiàn)分子動(dòng)力學(xué)模擬系統(tǒng)的流水線設(shè)計(jì)提供支持。
取數(shù)控制模塊的設(shè)計(jì)如圖3所示。圖中的FIFO_S與FIFO_D是2個(gè)先入先出的雙口緩沖器。該模塊工作流程如下:
圖3 交互控制系統(tǒng)的取數(shù)控制模塊的設(shè)計(jì)
1)在接收到上位機(jī)發(fā)來的盒子對(duì)組號(hào)時(shí),分別將其存入FIFO_S和FIFO_D中。
2)在接收到上位機(jī)發(fā)來的開始指令后,前述的2個(gè)FIFO同時(shí)將頂端的盒子號(hào)分別輸出到寄存器S和寄存器D中進(jìn)行暫存。
3)將寄存器S中的盒子號(hào)與目前頂端的盒子號(hào)進(jìn)行比較,判斷下一輪的靜態(tài)盒子是否產(chǎn)生變化。同時(shí)根據(jù)盒號(hào)與地址空間的映射關(guān)系求出2個(gè)寄存器中盒號(hào)所對(duì)應(yīng)的位圖地址與盒子地址,并將地址與比較器結(jié)果一起發(fā)送給粒子數(shù)據(jù)解析模塊。
4)根據(jù)粒子數(shù)據(jù)解析模塊反饋的信號(hào),返回至步驟2開始FIFO中下一組盒號(hào)對(duì)的輸出;或根據(jù)短程力計(jì)算模塊的反饋信號(hào)結(jié)束整個(gè)取數(shù)過程。
粒子數(shù)據(jù)解析模塊是ICS的核心部分,也是與片上BRAM交互最為頻繁的部分。其內(nèi)部通過精準(zhǔn)的時(shí)延和邏輯控制,實(shí)現(xiàn)了對(duì)粒子數(shù)據(jù)高效快速的解析與輸出。該模塊的基本處理原則是,先對(duì)靜態(tài)盒子進(jìn)行操作,再對(duì)動(dòng)態(tài)盒子進(jìn)行操作。該模塊的設(shè)計(jì)如圖4所示。
圖4 交互控制系統(tǒng)的粒子數(shù)據(jù)解析模塊的設(shè)計(jì)
1)該模塊將取數(shù)控制模塊輸出的比較器結(jié)果用寄存器暫存,并對(duì)輸入進(jìn)來的2組位圖地址與盒子地址進(jìn)行選擇。地址選擇器先對(duì)盒子地址進(jìn)行暫存,用于后面計(jì)算該盒內(nèi)的粒子數(shù)據(jù)的地址。根據(jù)位圖地址,通過BRAM_CTRL與BRAM進(jìn)行交互得到位圖數(shù)據(jù),并輸出一個(gè)盒子標(biāo)志位到寄存器T以記錄當(dāng)前解析的盒子類型。對(duì)位圖數(shù)據(jù)進(jìn)行分析后,計(jì)算盒子中粒子的個(gè)數(shù)并用寄存器Q暫存,并將粒子數(shù)據(jù)所處的盒內(nèi)位置送入FIFO。根據(jù)FIFO中的索引得到粒子數(shù)據(jù)在盒內(nèi)的偏移地址,加上之前暫存的盒子地址,就可以計(jì)算出粒子數(shù)據(jù)的具體地址。
2)根據(jù)粒子數(shù)據(jù)的具體地址,取出粒子數(shù)據(jù)進(jìn)行解析。為了減少數(shù)據(jù)占用的空間大小,粒子的各個(gè)信息要盡可能連續(xù)存放,所以解析的時(shí)候需要根據(jù)軟硬件約定的數(shù)據(jù)結(jié)構(gòu)對(duì)數(shù)據(jù)進(jìn)行位的拆分與重新賦值。
3)將已賦值的粒子信息輸出到短程力計(jì)算模塊,記錄已解析完成的粒子個(gè)數(shù),并與前面記錄的單個(gè)盒子的粒子個(gè)數(shù)進(jìn)行比較。若未完成一個(gè)盒子內(nèi)的所有粒子的數(shù)據(jù)解析,則從FIFO中取出下一個(gè)索引,重復(fù)前述操作。
在實(shí)際的工作流程中,每個(gè)靜態(tài)盒子內(nèi)的粒子個(gè)數(shù)是不確定的,而短程力計(jì)算模塊在更換緩存在模塊內(nèi)的靜態(tài)粒子時(shí),會(huì)出現(xiàn)輸入減少、模塊無法正常工作的問題。為了保證短程力計(jì)算模塊每次都有等量的靜態(tài)粒子輸入,本文引入空粒子(所有參數(shù)都為0,不參與實(shí)際計(jì)算)來補(bǔ)充輸入。當(dāng)完成單個(gè)靜態(tài)盒子內(nèi)所有有效粒子的數(shù)據(jù)解析后,根據(jù)短程力計(jì)算模塊的靜態(tài)粒子配置(默認(rèn)配置為單個(gè)盒子的最大粒子容量)要求,結(jié)合當(dāng)前的解析的粒子類型來進(jìn)行空粒子的補(bǔ)充輸出。
在完成動(dòng)態(tài)盒子中粒子數(shù)據(jù)的解析之后,根據(jù)FIFO_A(用于暫存輸入到短程力計(jì)算模塊的粒子)的存儲(chǔ)空間來決定是否進(jìn)行下一輪的數(shù)據(jù)解析。若下一輪的靜態(tài)盒子保持不變,在進(jìn)行新的一輪的數(shù)據(jù)解析時(shí),則跳過靜態(tài)盒子內(nèi)的粒子數(shù)據(jù)解析,因?yàn)槎坛塘τ?jì)算模塊已對(duì)其進(jìn)行了暫存。
圖5、圖6所示的狀態(tài)轉(zhuǎn)移圖對(duì)動(dòng)靜態(tài)盒子的整個(gè)數(shù)據(jù)解析過程做了更為細(xì)致的描述。
圖5 粒子數(shù)據(jù)解析(靜態(tài)盒子)的狀態(tài)轉(zhuǎn)移圖
圖6 粒子數(shù)據(jù)解析(動(dòng)態(tài)盒子)的狀態(tài)轉(zhuǎn)移圖
本文使用Verilog硬件描述語言實(shí)現(xiàn)了ICS的設(shè)計(jì),并在之后進(jìn)行了波形仿真和板級(jí)驗(yàn)證。在測(cè)試過程中使用的粒子數(shù)據(jù)集(7051個(gè)有效粒子數(shù)據(jù))是來自蛋白質(zhì)晶體結(jié)構(gòu)資料數(shù)據(jù)庫(Protein Data Bank, PDB)的多聚泛素酶基因(UBQ)數(shù)據(jù)集。該數(shù)據(jù)集中的浮點(diǎn)數(shù)據(jù)已經(jīng)進(jìn)行了定點(diǎn)轉(zhuǎn)換,統(tǒng)一采用了16進(jìn)制的定點(diǎn)數(shù)表示。作為系統(tǒng)測(cè)試的準(zhǔn)備工作,根據(jù)2.2節(jié)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),將所有的粒子數(shù)據(jù)隨機(jī)劃分到1372個(gè)盒子中,并生成對(duì)應(yīng)的位圖數(shù)據(jù)文件。
首先,在Vivado中對(duì)整個(gè)系統(tǒng)進(jìn)行小數(shù)據(jù)集的仿真。將位圖數(shù)據(jù)和粒子數(shù)據(jù)的二進(jìn)制文件通過DMA加載到Vivado封裝好的BRAM上。這里對(duì)(0,0)號(hào)盒子對(duì)所對(duì)應(yīng)的粒子數(shù)據(jù)進(jìn)行解析,粒子數(shù)據(jù)解析模塊的結(jié)果如圖7和圖8所示。
圖7最左邊第1行的clk為工作時(shí)鐘,最后一行的valid表示該粒子信息是否有效,倒數(shù)第2行至第4行為用于短程力計(jì)算模塊的2個(gè)控制位,依次為is_real(空粒子標(biāo)志)和is_static(動(dòng)靜態(tài)粒子標(biāo)志),其余行為粒子所帶的屬性。從圖7中可以看到一共輸出了28個(gè)粒子,其中有16個(gè)靜態(tài)粒子(4個(gè)為空粒子),12個(gè)動(dòng)態(tài)粒子。作為代表,圖8展示了11號(hào)粒子和空粒子的波形細(xì)節(jié)圖。
圖7 0號(hào)盒子的粒子數(shù)據(jù)解析結(jié)果
圖8 典型粒子與空粒子的波形細(xì)節(jié)圖
圖9則是數(shù)據(jù)集用于短程力計(jì)算的0號(hào)盒子數(shù)據(jù),從左到右依次為number(盒子編號(hào))、idx(盒內(nèi)編號(hào))、loc(粒子的三維地址)、ec(電荷數(shù))、用于計(jì)算短程力的2個(gè)參數(shù)sigma和epsilon。
圖9 0號(hào)盒子的粒子信息(定點(diǎn)表示)
對(duì)比圖8與圖9,可以發(fā)現(xiàn)2幅圖中關(guān)于11號(hào)粒子的信息是完全一致的。更多的實(shí)驗(yàn)結(jié)果顯示,其余粒子的信息也是一致的。限于篇幅,這里不再詳細(xì)展示。需要注意的是,粒子的信息并未實(shí)現(xiàn)連續(xù)的解析輸出。這是因?yàn)?,目前BRAM的數(shù)據(jù)寬度設(shè)定的是128位,而一個(gè)粒子的完整信息需要解析512位的數(shù)據(jù)才能得到,所以粒子信息是每4個(gè)時(shí)鐘周期輸出一個(gè)。
下面在硬件上對(duì)本文設(shè)計(jì)的系統(tǒng)進(jìn)行測(cè)試。為了驗(yàn)證實(shí)用性與有效性,本文將設(shè)計(jì)好的ICS與短程力計(jì)算模塊以及力回寫模塊進(jìn)行聯(lián)合測(cè)試。測(cè)試系統(tǒng)由Intel Xeon Silver 4216處理器以及Xilinx Virtex UltraScale+ HBM VCU128 FPGA組成。上位機(jī)首先通過PCIE將所有盒子的位圖數(shù)據(jù)和粒子數(shù)據(jù)加載到片上BRAM中,然后發(fā)出41931組盒子對(duì)號(hào)(這些盒子對(duì)組合內(nèi)的粒子間可能存在短程力)。ICS在收到盒子對(duì)號(hào)后開始工作,輔助整個(gè)系統(tǒng)完成粒子數(shù)據(jù)的解析、短程力的計(jì)算以及力信息到BRAM的回寫。最后,上位機(jī)從BRAM中取出最終的結(jié)果,并與基于NAMD軟件模擬的結(jié)果進(jìn)行對(duì)比。為便于比較,已將數(shù)據(jù)轉(zhuǎn)換浮點(diǎn)類型。
對(duì)比結(jié)果表明,短程力在3個(gè)方向上的數(shù)值在小數(shù)點(diǎn)后6位內(nèi)完全一致,個(gè)別不一致的數(shù)據(jù)已在表1列出??梢钥吹剑@些數(shù)據(jù)在小數(shù)點(diǎn)后5位前都是一致的,完全在允許的誤差范圍內(nèi)。這說明本文設(shè)計(jì)的ICS可靠地實(shí)現(xiàn)了與分子動(dòng)力學(xué)模擬系統(tǒng)各模塊的交互及數(shù)據(jù)解析。
表1 ICS硬件測(cè)試的力數(shù)據(jù)對(duì)比表
關(guān)于ICS的硬件資源使用情況如表2所示??梢钥吹?,該部分的資源占用百分比很低,這為其它模塊的設(shè)計(jì)開發(fā)留存了豐富的資源。
表2 片上資源消耗
本文設(shè)計(jì)的用于分子動(dòng)力學(xué)模擬的交互控制系統(tǒng)以經(jīng)典的NT算法為基礎(chǔ),實(shí)現(xiàn)了粒子數(shù)據(jù)的有序傳輸。它具有以下幾個(gè)特點(diǎn):
1)考慮了粒子在空間中較為分散的特點(diǎn)。
2)加入位圖數(shù)據(jù)來減少對(duì)無效數(shù)據(jù)的解析。
3)采用依次解析盒子內(nèi)粒子數(shù)據(jù)的方式來減輕帶寬壓力。
4)通過監(jiān)測(cè)靜態(tài)盒子的變化避免靜態(tài)盒子內(nèi)粒子數(shù)據(jù)的多次重復(fù)解析。
5)可以根據(jù)短程力計(jì)算模塊的計(jì)算速度來自動(dòng)調(diào)節(jié)粒子數(shù)據(jù)的解析速度。
該系統(tǒng)很好地協(xié)調(diào)了各個(gè)模塊的工作,而且能實(shí)現(xiàn)向多個(gè)計(jì)算模塊同時(shí)供數(shù),有效提高了計(jì)算效率。然而,它也有一些需要完善的地方,比如在取數(shù)控制模塊,使用2個(gè)FIFO來存儲(chǔ)盒子對(duì)號(hào)消耗的資源較多。在未來的工作中,擬根據(jù)短程力計(jì)算模塊的需求來對(duì)該系統(tǒng)進(jìn)一步優(yōu)化,以實(shí)現(xiàn)更高的性能。