專利名稱:基于存儲接口的可重構(gòu)加速器映射方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機技術(shù)領(lǐng)域,更具體地說,本發(fā)明涉及一種基于存儲接口的可重構(gòu)加速器映射方法。
背景技術(shù):
可重構(gòu)計算系統(tǒng)的實現(xiàn)通常是在傳統(tǒng)的通用處理器架構(gòu)下集成或連接用于作為可重構(gòu)加速器的FPGA (Field — Programmable Gate Array,即現(xiàn)場可編程門陣列)芯片或板卡。由通用處理器控制可重構(gòu)加速器中硬件加速邏輯的配置和算法映射過程。因此,可重構(gòu)加速器與通用處理器架構(gòu)的連接和映射方式對其在可重構(gòu)計算系統(tǒng)中的應(yīng)用方式和開發(fā)難度將會有極大的影響。在目前常見的可重構(gòu)計算系統(tǒng)中,可重構(gòu)加速器通常是通過外設(shè)接口或互連網(wǎng) 絡(luò)與通用處理器相連接的。例如,歐洲的EPCC制造的Maxwell可重構(gòu)計算系統(tǒng),就是以Maxwell以IBM的BladeCenter集群為基礎(chǔ),在其中的每個服務(wù)器上通過PCI-X接口安裝了Nallatech 的 HlOl FPGA 板卡和 Alpha Data 的 ADM-XRC-4FM FPGA板卡。又例如,在 Cray 公司生產(chǎn)的XDl超級計算機中,FPGA可重構(gòu)加速器直接在XDl主板上通過“RapidArray Link”互連接口與CPU相連。上述通過外設(shè)接口和互連網(wǎng)絡(luò)連接可重構(gòu)加速器的方式對于可重構(gòu)計算應(yīng)用的設(shè)計和開發(fā)帶來了一些無法避免的困難。一方面,由于使用了外設(shè)接口或互連網(wǎng)絡(luò)連接,可重構(gòu)加速器的接口必須符合相應(yīng)的設(shè)備接口協(xié)議或網(wǎng)絡(luò)接口協(xié)議,因此當需要將可重構(gòu)算法核心應(yīng)用在系統(tǒng)中時,就需要按照外部接口的協(xié)議對其原有的接口進行封裝,使其能夠通過相應(yīng)的外部接口與處理器通信,這一過程通常比較復(fù)雜,開發(fā)難度較大。另一方面,對于運行于通用處理器的應(yīng)用軟件來說,由于可重構(gòu)加速器以外設(shè)或互連網(wǎng)絡(luò)的形式連接,因此它與可重構(gòu)加速器的數(shù)據(jù)通信就必須通過設(shè)備或網(wǎng)絡(luò)驅(qū)動程序來實現(xiàn),不僅需要開發(fā)相應(yīng)的設(shè)備驅(qū)動程序,其后在算法應(yīng)用還必須基于驅(qū)動程序接口來開發(fā),增加了應(yīng)用開發(fā)的復(fù)雜性,可重構(gòu)加速器中的算法核心也很難直接地在映射在軟件中。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)中存在上述缺陷,提供一種基于存儲接口的可重構(gòu)加速器映射方法,其使得軟件可以直接通過內(nèi)存地址訪問的方式實現(xiàn)與可重構(gòu)加速器之間的數(shù)據(jù)傳輸。根據(jù)本發(fā)明,提供了一種基于存儲接口的可重構(gòu)加速器映射方法,其包括初始步驟用于將可重構(gòu)加速器、通用處理器和存儲體分別連接在存儲總線上;第一步驟,用于通過可重構(gòu)算法接口映射模塊對可重構(gòu)算法核心的硬件接口進行封裝,其中所述可重構(gòu)算法接口映射模塊按照信號類型將可重構(gòu)算法核心的硬件接口映射成為存儲接口,由此按照對存儲體的存儲訪問的讀訪問和寫訪問的方式對硬件接口進行讀寫,即,利用可重構(gòu)算法接口映射模塊將算法核心的接口映射成為存儲接口,通過類似于訪問存儲體的存儲訪問的讀訪問和寫訪問的方式進行讀寫;第二步驟,用于對通用處理器和存儲控制器進行配置,以便通用處理器能夠通過存儲控制器訪問可重構(gòu)加速器;第三步驟,用于通過對通用處理器編程實現(xiàn)對可重構(gòu)加速器中算法核心的軟件映射。優(yōu)選地,所述可重構(gòu)算法接口映射模塊包括算法接口協(xié)議處理模塊,用于在可重構(gòu)算法接口模塊內(nèi)部邏輯的控制下生成符合可重構(gòu)算法核心接口協(xié)議的信號激勵;數(shù)據(jù)寫訪問映射模塊,用于實現(xiàn)可重構(gòu)算法核心的輸入信號與存儲地址之間的映射;數(shù)據(jù)讀訪問映射模塊,用于實現(xiàn)可重構(gòu)算法核心的輸出信號與存儲地址之間的映射;存儲接口協(xié)議處理模塊,用于處理來自存儲總線的存儲協(xié)議信號,根據(jù)相應(yīng)的讀寫請求調(diào)用數(shù)據(jù)寫訪問映射模塊或數(shù)據(jù)讀訪問映射模塊,以完成相應(yīng)的數(shù)據(jù)輸入輸出操作。優(yōu)選地,在所述第一步驟中,將所述可重構(gòu)算法核心的輸入映射成為對存儲地址的寫訪問。
優(yōu)選地,在所述第一步驟中,將所述可重構(gòu)算法核心的輸出映射成為對存儲地址的讀訪問。優(yōu)選地,在所述第一步驟中,對于所述可重構(gòu)算法核心的接口信號為雙向信號的情況,將雙向信號進行輸入映射和輸出映射,從而將雙向信號映射成為對存儲地址的寫訪問和讀訪問。 優(yōu)選地,所述可重構(gòu)加速器通過所述可重構(gòu)算法接口映射模塊從所述存儲總線接收控制信號,并與所述存儲總線交換地址及數(shù)據(jù)信號。優(yōu)選地,所述通用處理器通過所述存儲控制器向所述存儲總線發(fā)送控制信號,并與存儲總線交換地址及數(shù)據(jù)信號。優(yōu)選地,所述存儲體從存儲總線接收控制信號,并與存儲總線交換地址及數(shù)據(jù)信號。在本發(fā)明中,通過將可重構(gòu)加速器連接在通用處理器的存儲接口上,并且通過可重構(gòu)算法接口映射模塊將可重構(gòu)算法核心的硬件接口作為一塊特殊的存儲區(qū)域直接映射到通用處理器的物理內(nèi)存空間之中,軟件可以直接通過內(nèi)存地址訪問的方式實現(xiàn)與可重構(gòu)加速器之間的數(shù)據(jù)傳輸。由此,通用處理器不需要驅(qū)動程序就可以完成與可重構(gòu)加速器的數(shù)據(jù)通信,簡化了可重構(gòu)計算應(yīng)用設(shè)計的復(fù)雜度,提高了軟件算法和硬件可重構(gòu)算法核心的耦合程度,能夠有效提高可重構(gòu)計算應(yīng)用的設(shè)計效率。
結(jié)合附圖,并通過參考下面的詳細描述,將會更容易地對本發(fā)明有更完整的理解并且更容易地理解其伴隨的優(yōu)點和特征,其中圖I示意性地示出了根據(jù)本發(fā)明實施例的基于存儲接口的可重構(gòu)加速器封裝映射方法的流程圖。圖2示意性地示出了根據(jù)本發(fā)明實施例的基于存儲接口的可重構(gòu)加速器封裝映射方法的示意圖。圖3示意性地示出了根據(jù)本發(fā)明實施例的基于存儲接口的可重構(gòu)加速器封裝映射方法所采用的可重構(gòu)算法接口映射模塊的結(jié)構(gòu)示意圖。需要說明的是,附圖用于說明本發(fā)明,而非限制本發(fā)明。注意,表示結(jié)構(gòu)的附圖可能并非按比例繪制。并且,附圖中,相同或者類似的元件標有相同或者類似的標號。
具體實施例方式為了使本發(fā)明的內(nèi)容更加清楚和易懂,下面結(jié)合具體實施例和附圖對本發(fā)明的內(nèi)容進行詳細描述。圖I示意性地示出了根據(jù)本發(fā)明實施例的基于存儲接口的可重構(gòu)加速器封裝映射方法的流程圖;圖2示意性地示出了根據(jù)本發(fā)明實施例的基于存儲接口的可重構(gòu)加速器封裝映射方法的示意圖。一般,通用處理器的存儲系統(tǒng)原本用來連接存儲芯片或內(nèi)存條等存儲體,例如圖2中,多個存儲體4通過存儲總線3連接在處理器的存儲控制器21上,存儲控制器21處理來自處理器的存儲訪問請求,按照相應(yīng)的物理地址通過存儲總線3讀取存儲體4中的數(shù)據(jù)或?qū)?shù)據(jù)寫入相應(yīng)存儲體4的存儲單元中。
而本發(fā)明提出的方法將可重構(gòu)加速器Ml、通用處理器M2和存儲體4分別連接在存儲總線3上,通過可重構(gòu)算法接口映射模塊11對可重構(gòu)算法核心12進行封裝,將可重構(gòu)算法核心12的接口信號映射到基于物理地址的存儲空間中,以便通用處理器M2能夠通過存儲器訪問的方式與可重構(gòu)算法核心12進行數(shù)據(jù)傳輸。其中,“可重構(gòu)加速器”指的是可重構(gòu)計算系統(tǒng)中具有硬件可編程能力,用于重構(gòu)為面向算法或應(yīng)用的硬件加速的芯片或板卡,目前主要采用FPGA芯片實現(xiàn)。而可重構(gòu)計算系統(tǒng)主要指系統(tǒng)具有某種形式的硬件可編程性,通過定制硬件邏輯可以在同一塊硬件上實現(xiàn)不同的計算應(yīng)用,實際上目前主要指具有FPGA等可編程器件,通過將FPGA重構(gòu)為針對算法或應(yīng)用的硬件加速模塊實現(xiàn)對算法的硬件加速。如圖2所示,可重構(gòu)加速器Ml通過可重構(gòu)算法接口映射模塊11從存儲總線3接收控制信號D22,并與存儲總線3交換地址及數(shù)據(jù)信號D21。通用處理器M2通過存儲控制器21向存儲總線3發(fā)送控制信號D12,并與存儲總線3交換地址及數(shù)據(jù)信號DlI。存儲體4從存儲總線3接收控制信號D32,并與存儲總線3交換地址及數(shù)據(jù)信號D31。由此,在上述結(jié)構(gòu)的基礎(chǔ)上,要實現(xiàn)可重構(gòu)加速器Ml的封裝映射過程需要在可重構(gòu)加速器Ml端和通用處理器M2端完成一些硬件封裝和軟件配置工作,最終實現(xiàn)通用處理器端的應(yīng)用程序直接通過地址訪問的方式與可重構(gòu)加速器Ml進行數(shù)據(jù)交互。下面將對此過程進行詳細描述。在將可重構(gòu)加速器Ml、通用處理器M2和存儲體4分別連接在存儲總線3上(初始步驟)之后,執(zhí)行下述處理(I)首先,如圖I所示,在第一步驟SI中,通過可重構(gòu)算法接口映射模塊11對可重構(gòu)算法核心12的硬件接口進行封裝。這一階段主要涉及對可重構(gòu)加速器Ml端的硬件邏輯開發(fā)??芍貥?gòu)算法核心12用于實現(xiàn)對特定的算法的硬件加速,其設(shè)計僅與相應(yīng)的算法相關(guān),與具體的可重構(gòu)計算系統(tǒng)結(jié)構(gòu)完全無關(guān)。如果要在可重構(gòu)計算系統(tǒng)使用它,對其進行封裝以使其能夠與外部進行數(shù)據(jù)通信。對于本發(fā)明實施例所提出的結(jié)構(gòu),需要將可重構(gòu)算法核心12接口轉(zhuǎn)換為存儲接口,其功能由可重構(gòu)算法接口映射模塊11實現(xiàn)??芍貥?gòu)算法核心12的硬件接口信號從功能來看可以抽象為三類輸入信號、輸出信號、雙向信號??芍貥?gòu)算法接口映射模塊11按照信號類型將可重構(gòu)算法核心12的硬件接口映射成為對存儲體4中的存儲器的讀訪問和寫訪問輸入信號可重構(gòu)算法核心12的輸入被映射成為對某個存儲地址的寫訪問。輸出信號可重構(gòu)算法核心12的輸出被映射成為對某個存儲地址的讀訪問。雙向信號如果可重構(gòu)算法核心12的接口信號為雙向信號,則分別將其輸入映射和輸出映射成為對某個存儲地址的寫訪問和讀訪問。圖3示意性地示出了根據(jù)本發(fā)明實施例的基于存儲接口的可重構(gòu)加速器封裝映射方法所采用的可重構(gòu)算法接口映射模塊11的結(jié)構(gòu)示意圖。具體地說,可重構(gòu)算法接口映射模塊11的各部分功能的具體描述如下。
(a)算法接口協(xié)議處理模塊13,其主要功能是在可重構(gòu)算法接口模塊內(nèi)部邏輯的控制下生成符合可重構(gòu)算法核心12接口協(xié)議的信號激勵。(b)數(shù)據(jù)寫訪問映射模塊14,其主要功能是實現(xiàn)可重構(gòu)算法核心12的輸入信號與存儲地址之間的映射;具體地說,當可重構(gòu)算法接口映射模塊11的存儲接口收到的寫請求時,數(shù)據(jù)寫訪問映射模塊14根據(jù)寫請求的地址調(diào)用算法接口協(xié)議處理模塊13生成相應(yīng)的算法核心輸入信號。例如,如圖3所示,數(shù)據(jù)寫訪問映射模塊14根據(jù)地址A生成相應(yīng)的算法輸入1,根據(jù)地址B生成相應(yīng)的算法輸入2,根據(jù)地址E生成相應(yīng)的雙向信號輸入。(c)數(shù)據(jù)讀訪問映射模塊15,其主要功能是實現(xiàn)可重構(gòu)算法核心12的輸出信號與存儲地址之間的映射;具體地說,當可重構(gòu)算法接口映射模塊11的存儲接口收到讀請求時,數(shù)據(jù)讀訪問映射模塊15根據(jù)讀請求的地址調(diào)用算法接口協(xié)議處理模塊以讀取相應(yīng)的可重構(gòu)算法核心輸出信號,通過存儲接口返回給處理器。例如,如圖3所示,數(shù)據(jù)讀訪問映射模塊15根據(jù)地址C生成相應(yīng)的算法輸出1,根據(jù)地址D生成相應(yīng)的算法輸出2,根據(jù)地址E生成相應(yīng)的雙向信號輸出。(d)存儲接口協(xié)議處理模塊16,其主要功能是處理來自存儲總線3的存儲協(xié)議信號,根據(jù)相應(yīng)的讀寫請求調(diào)用數(shù)據(jù)寫訪問映射模塊14或數(shù)據(jù)讀訪問映射模塊15,完成相應(yīng)的數(shù)據(jù)輸入輸出操作。(2)其次,如圖I所示,在第二步驟S2中,對通用處理器M2和存儲控制器21進行相應(yīng)的配置,以便其能夠通過存儲控制器21訪問可重構(gòu)加速器Ml,配置方法與普通存儲器的配置方法完全相同,主要包括以下幾方面設(shè)置可重構(gòu)加速器Ml的存儲協(xié)議參數(shù),例如,存儲協(xié)議參數(shù)包括地址信號有效時間、讀訪問延遲、寫訪問延遲、數(shù)據(jù)寬度、是否支持突發(fā)(burst)模式等。設(shè)置可重構(gòu)加速器Ml在物理地址空間中的基地址及其占用的地址空間大小。關(guān)閉可重構(gòu)加速器Ml所對應(yīng)地址空間的cache (高速緩存)功能以保證數(shù)據(jù)的一致性。(3 )最后,如圖I所示,在第三步驟S3中,通過對通用處理器M2編程實現(xiàn)對可重構(gòu)加速器Ml中可重構(gòu)算法核心12的軟件映射。通過前兩步已經(jīng)在硬件上將可重構(gòu)加速器Ml映射到了通用處理器M2的物理地址空間中,因此通用處理器M2能夠直接通過對相應(yīng)物理地址的讀寫實現(xiàn)對可重構(gòu)算法核心12的控制和數(shù)據(jù)傳輸,軟件映射從而也就非常簡單,以C語言為例,可以直接通過訪問指向相應(yīng)地址的指針,對其進行賦值即可實現(xiàn)數(shù)據(jù)輸入,讀取指針對應(yīng)的值即可實現(xiàn)數(shù)據(jù)輸出。由此,本發(fā)明實施例提出了一種在可重構(gòu)計算系統(tǒng)中通過存儲接口連接可重構(gòu)加速器的結(jié)構(gòu)和方法,將可重構(gòu)加速器映射到處理器的物理地址空間中,通用處理器不需要驅(qū)動程序就可以完成與可重構(gòu)加速器的數(shù)據(jù)通信,簡化了可重構(gòu)計算應(yīng)用設(shè)計的復(fù)雜度,提高了軟件算法和硬件可重構(gòu)算法核心的耦合程度,能夠有效提高可重構(gòu)計算應(yīng)用的設(shè)計效率??梢岳斫獾氖?,雖然本發(fā)明已以較佳實施例披露如上,然而上述實施例并非用以限定本發(fā)明。對于任何熟悉本領(lǐng)域的技術(shù)人員而言,在不脫離本發(fā)明技術(shù)方案范圍情況下,都可利用上述揭示的技術(shù)內(nèi)容對本發(fā)明技術(shù)方案作出許多可能的變動和修飾,或修改為等同變化的等效實施例。因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實質(zhì) 對以上實施例所做的任何簡單修改、等同變化及修飾,均仍屬于本發(fā)明技術(shù)方案保護的范圍內(nèi)。
權(quán)利要求
1.一種基于存儲接口的可重構(gòu)加速器映射方法,其特征在于包括 初始步驟用于將可重構(gòu)加速器、通用處理器和存儲體分別連接在存儲總線上; 第一步驟,用于通過可重構(gòu)算法接口映射模塊對可重構(gòu)算法核心的硬件接口進行封裝,其中所述可重構(gòu)算法接口映射模塊按照信號類型將可重構(gòu)算法核心的硬件接口映射成為存儲接口,由此按照對存儲體的存儲訪問的讀訪問和寫訪問的方式對硬件接口進行讀與; 第二步驟,用于對通用處理器和存儲控制器進行配置,以便通用處理器能夠通過存儲控制器訪問可重構(gòu)加速器; 第三步驟,用于通過對通用處理器編程實現(xiàn)對可重構(gòu)加速器中算法核心的軟件映射。
2.根據(jù)權(quán)利要求I所述的基于存儲接口的可重構(gòu)加速器映射方法,其特征在于,所述可重構(gòu)算法接口映射模塊包括 算法接口協(xié)議處理模塊,用于在可重構(gòu)算法接口模塊內(nèi)部邏輯的控制下生成符合可重構(gòu)算法核心接口協(xié)議的信號激勵; 數(shù)據(jù)寫訪問映射模塊,用于實現(xiàn)可重構(gòu)算法核心的輸入信號與存儲地址之間的映射; 數(shù)據(jù)讀訪問映射模塊,用于實現(xiàn)可重構(gòu)算法核心的輸出信號與存儲地址之間的映射; 存儲接口協(xié)議處理模塊,用于處理來自存儲總線的存儲協(xié)議信號,根據(jù)相應(yīng)的讀寫請求調(diào)用數(shù)據(jù)寫訪問映射模塊或數(shù)據(jù)讀訪問映射模塊,以完成相應(yīng)的數(shù)據(jù)輸入輸出操作。
3.根據(jù)權(quán)利要求I或2所述的基于存儲接口的可重構(gòu)加速器映射方法,其特征在于,在所述第一步驟中,將所述可重構(gòu)算法核心的輸入映射成為對存儲地址的寫訪問。
4.根據(jù)權(quán)利要求I或2所述的基于存儲接口的可重構(gòu)加速器映射方法,其特征在于,在所述第一步驟中,將所述可重構(gòu)算法核心的輸出映射成為對存儲地址的讀訪問。
5.根據(jù)權(quán)利要求I或2所述的基于存儲接口的可重構(gòu)加速器映射方法,其特征在于,在所述第一步驟中,對于所述可重構(gòu)算法核心的接口信號為雙向信號的情況,將雙向信號進行輸入映射和輸出映射,從而將雙向信號映射成為對存儲地址的寫訪問和讀訪問。
6.根據(jù)權(quán)利要求I或2所述的基于存儲接口的可重構(gòu)加速器映射方法,其特征在于,所述可重構(gòu)加速器通過所述可重構(gòu)算法接口映射模塊從所述存儲總線接收控制信號,并與所述存儲總線交換地址及數(shù)據(jù)信號。
7.根據(jù)權(quán)利要求I或2所述的基于存儲接口的可重構(gòu)加速器映射方法,其特征在于,所述通用處理器通過所述存儲控制器向所述存儲總線發(fā)送控制信號,并與存儲總線交換地址及數(shù)據(jù)信號。
8.根據(jù)權(quán)利要求I或2所述的基于存儲接口的可重構(gòu)加速器映射方法,其特征在于,所述存儲體從存儲總線接收控制信號,并與存儲總線交換地址及數(shù)據(jù)信號。
全文摘要
本發(fā)明提供的一種基于存儲接口的可重構(gòu)加速器映射方法包括初始步驟用于將可重構(gòu)加速器、通用處理器和存儲體分別連接在存儲總線上;第一步驟,用于通過可重構(gòu)算法接口映射模塊對可重構(gòu)算法核心的硬件接口進行封裝,其中所述可重構(gòu)算法接口映射模塊按照信號類型將可重構(gòu)算法核心的硬件接口映射成為存儲接口,由此按照對存儲體的存儲訪問的讀訪問和寫訪問的方式對硬件接口進行讀寫;第二步驟,用于對通用處理器和存儲控制器進行配置,以便通用處理器能夠通過存儲控制器訪問可重構(gòu)加速器;第三步驟,用于通過對通用處理器編程實現(xiàn)對可重構(gòu)加速器中算法核心的軟件映射。
文檔編號G06F13/16GK102929812SQ20121037190
公開日2013年2月13日 申請日期2012年9月28日 優(yōu)先權(quán)日2012年9月28日
發(fā)明者原昊, 謝向輝, 郝子宇, 吳東, 錢磊, 張魯飛, 馬文濤, 鄔貴明 申請人:無錫江南計算技術(shù)研究所