本發(fā)明屬于計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及到一種fpga應(yīng)用電路的可移植方法。
背景技術(shù):
隨著計(jì)算機(jī)科學(xué)技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的不斷拓展,需要更多具有高性能、低功耗屬性的計(jì)算設(shè)備來滿足日益增長(zhǎng)的運(yùn)算需求。通用處理器(cpu)經(jīng)歷了數(shù)十年的發(fā)展,隨著摩爾定律已接近極限,能效比提升的空間已經(jīng)相當(dāng)有限。為了實(shí)現(xiàn)進(jìn)一步的性能提升,為產(chǎn)業(yè)核心應(yīng)用(人工智能、大數(shù)據(jù)處理等)定制處理器已成必要。由此,fpga芯片技術(shù)逐漸進(jìn)入大眾視野,fpga具有硬件可重構(gòu)、低功耗、低延時(shí)的特性,在高性能計(jì)算和低功耗設(shè)備上都取得了廣泛應(yīng)用,在服務(wù)器加速領(lǐng)域扮演著重要角色和使命。
在現(xiàn)有技術(shù)中,大多服務(wù)廠商采用在傳統(tǒng)服務(wù)器上安裝fpga加速板卡,并提供預(yù)先設(shè)計(jì)好的基礎(chǔ)功能電路(shell),主要實(shí)現(xiàn)通信、內(nèi)存控制等,為應(yīng)用電路開發(fā)者提供開發(fā)和部署平臺(tái)。然而,這些服務(wù)廠商使用或開發(fā)的芯片、板卡、以及基礎(chǔ)功能電路都各自不同,應(yīng)用電路開發(fā)者為了將應(yīng)用電路產(chǎn)品投放到不同廠商的云服務(wù),需要進(jìn)行大量重復(fù)的應(yīng)用電路(ip:intellectualproperty)開發(fā)工作。ip在半導(dǎo)體產(chǎn)業(yè)里,是指某一方提供的、形式為邏輯單元、芯片設(shè)計(jì)的可重用模組和功能電路,例如神經(jīng)網(wǎng)絡(luò)電路、加密電路、壓縮電路等。這主要是因?yàn)閒pga硬件電路設(shè)計(jì)具有難以移植的問題:不同于軟件開發(fā),硬件設(shè)計(jì)和硬件環(huán)境密切相關(guān),硬件環(huán)境稍有不同就可能導(dǎo)致產(chǎn)品設(shè)計(jì)不兼容的情況發(fā)生。因此,實(shí)現(xiàn)fpga平臺(tái)上的應(yīng)用電路可移植性,讓其可以低成本地在多種fpga硬件平臺(tái)上部署是非常必要的。
技術(shù)實(shí)現(xiàn)要素:
為了解決上述問題,本發(fā)明提供一種fpga應(yīng)用電路的可移植方法,解決現(xiàn)有技術(shù)中fpga應(yīng)用電路移植性低、需要針對(duì)不同fpga平臺(tái)定向開發(fā)的缺陷。
本發(fā)明采取的技術(shù)方案為:一種fpga應(yīng)用電路的可移植方法,包括:
開發(fā)可在不同fpga平臺(tái)上提供統(tǒng)一應(yīng)用電路接口的接口適配層庫(kù),接口適配層庫(kù)中包含有多種接口適配層電路(subshell),每種接口適配層電路用以將對(duì)應(yīng)fpga平臺(tái)的特定應(yīng)用電路接口轉(zhuǎn)換為統(tǒng)一的應(yīng)用電路接口;
在所述接口適配層庫(kù)中選取與fpga開發(fā)平臺(tái)所對(duì)應(yīng)的接口適配層電路進(jìn)行應(yīng)用電路開發(fā);
在所述接口適配層庫(kù)中選取與fpga部署平臺(tái)對(duì)應(yīng)的接口適配層電路進(jìn)行應(yīng)用電路部署;
將開發(fā)完成的應(yīng)用電路、選取的與fpga部署平臺(tái)對(duì)應(yīng)的接口適配層電路和fpga部署平臺(tái)的基礎(chǔ)功能電路進(jìn)行組合編譯,生成對(duì)應(yīng)fpga硬件電路的配置文件;通過從接口適配層庫(kù)中選取不同fpga平臺(tái)對(duì)應(yīng)的接口適配層電路,可以為應(yīng)用電路提供統(tǒng)一標(biāo)準(zhǔn)接口;實(shí)現(xiàn)了應(yīng)用電路的可移植、可重用的特性,只要選擇與fpga部署平臺(tái)對(duì)應(yīng)的接口適配層電路,即可實(shí)現(xiàn)在不同fpga平臺(tái)部署應(yīng)用電路,不需要對(duì)應(yīng)用電路進(jìn)行重新開發(fā)。
所述fpga部署平臺(tái)應(yīng)用電路接口與fpga開發(fā)平臺(tái)應(yīng)用電路接口相同。
所述fpga部署平臺(tái)應(yīng)用電路接口與fpga開發(fā)平臺(tái)應(yīng)用電路接口不同。
優(yōu)選的,所述接口適配層電路包括一個(gè)雙向數(shù)據(jù)訪問的接口適配電路,所述接口適配電路的一端連接對(duì)應(yīng)fpga平臺(tái)的特定應(yīng)用電路接口,另一端提供統(tǒng)一標(biāo)準(zhǔn)接口連接所述應(yīng)用電路。
優(yōu)選的,所述接口適配層與所述應(yīng)用電路之間的統(tǒng)一標(biāo)準(zhǔn)接口包括,內(nèi)存映射型接口和數(shù)據(jù)流型接口,所述內(nèi)存映射型接口采用axi標(biāo)準(zhǔn)接口;所述數(shù)據(jù)流型接口采用axi-stream接口。
所述特定接口包括pcie總線接口、axi總線接口、與內(nèi)存的連接接口、與存儲(chǔ)器的連接接口、高速串口、以太網(wǎng)接口、傳感器接口以及其他平臺(tái)自定義接口。
采用上述技術(shù)方案,具有以下優(yōu)點(diǎn):通過預(yù)先開發(fā)接口適配層庫(kù),實(shí)現(xiàn)應(yīng)用電路的可重用性和可移植性,一次開發(fā)即可反復(fù)、跨fpga平臺(tái)部署;降低了應(yīng)用電路開發(fā)者在多平臺(tái)移植應(yīng)用電路的開發(fā)負(fù)擔(dān),提高了應(yīng)用電路開發(fā)者的開發(fā)效率,從應(yīng)用電路使用者的角度,利用本發(fā)明可以低成本地將應(yīng)用電路部署在多種fpga平臺(tái),降低了應(yīng)用電路的部署和使用難度。
附圖說明
圖1為本發(fā)明的方法流程圖;
圖2為本發(fā)明fpga硬件電路的內(nèi)部結(jié)構(gòu)圖。
其中,shell表示fpga平臺(tái)基礎(chǔ)功能電路、subshell表示接口適配層電路,ip(intellectualproperty)表示應(yīng)用電路。
具體實(shí)施方式
為了使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述,這里的描述不意味著對(duì)應(yīng)于實(shí)施例中陳述的具體實(shí)例的所有主題都在權(quán)利要求中引用了。
在本實(shí)施例中,fpga開發(fā)平臺(tái)表示開發(fā)應(yīng)用電路時(shí)使用的fpga平臺(tái),fpga部署平臺(tái)表示部署應(yīng)用電路時(shí)使用的fpga平臺(tái),shell表示fpga平臺(tái)基礎(chǔ)功能電路,subshell表示接口適配層電路,ip(intellectualproperty)表示應(yīng)用電路;subshellx表示從接口適配層庫(kù)中選取的對(duì)應(yīng)fpga開發(fā)平臺(tái)的接口適配層電路,subshella、subshellb和subshellc分別表示從接口適配層庫(kù)中選取的對(duì)應(yīng)fpga部署平臺(tái)a、fpga部署平臺(tái)b和fpga部署平臺(tái)c的接口適配層電路。
參考圖1、圖2所示,一種fpga應(yīng)用電路的可移植方法,包括:
開發(fā)可在不同fpga平臺(tái)上提供統(tǒng)一應(yīng)用電路接口的接口適配層庫(kù),接口適配層庫(kù)中包含有多種接口適配層電路,每種接口適配層電路用以將對(duì)應(yīng)fpga平臺(tái)的特定應(yīng)用電路接口轉(zhuǎn)換為統(tǒng)一的應(yīng)用電路接口;
在所述接口適配層庫(kù)中選取與fpga開發(fā)平臺(tái)所對(duì)應(yīng)的接口適配層電路進(jìn)行應(yīng)用電路開發(fā);
在所述接口適配層庫(kù)中選取與fpga部署平臺(tái)對(duì)應(yīng)的接口適配層電路進(jìn)行應(yīng)用電路部署;
將開發(fā)完成的應(yīng)用電路、選取的與fpga部署平臺(tái)對(duì)應(yīng)的接口適配層電路、和fpga部署平臺(tái)的基礎(chǔ)功能電路進(jìn)行組合編譯,生成對(duì)應(yīng)fpga硬件電路的配置文件;
進(jìn)一步地,所述fpga部署平臺(tái)應(yīng)用電路接口與fpga開發(fā)平臺(tái)應(yīng)用電路接口相同;
進(jìn)一步地,所述fpga部署平臺(tái)應(yīng)用電路接口與fpga開發(fā)平臺(tái)應(yīng)用電路接口不同;
所述fpga硬件電路均包括基礎(chǔ)功能電路、接口適配層電路和應(yīng)用電路;
參考圖2所示,所述接口適配層電路包括一個(gè)雙向數(shù)據(jù)訪問的接口適配電路,所述接口適配電路的一端連接對(duì)應(yīng)fpga平臺(tái)的特定應(yīng)用電路接口,另一端提供統(tǒng)一標(biāo)準(zhǔn)接口連接所述應(yīng)用電路。所述特定接口包括pcie總線接口、axi總線接口、與內(nèi)存的連接接口、與存儲(chǔ)器的連接接口、高速串口、以太網(wǎng)接口、傳感器接口以及其他平臺(tái)自定義接口;
進(jìn)一步地,所述接口適配層與所述應(yīng)用電路之間的統(tǒng)一標(biāo)準(zhǔn)接口包括,內(nèi)存映射型接口和數(shù)據(jù)流型接口,所述內(nèi)存映射型接口采用axi標(biāo)準(zhǔn)接口;所述數(shù)據(jù)流型接口采用axi-stream接口;所述內(nèi)存映射型接口也可采用與axi標(biāo)準(zhǔn)接口類似的接口;所述數(shù)據(jù)流型接口也可采用與axi-stream接口類似的接口;
在具體實(shí)踐中,fpga平臺(tái)基礎(chǔ)功能電路(shell)、接口適配層電路(subshell)和應(yīng)用電路(ip),具體都是rtl(registertransferlevel)代碼實(shí)現(xiàn)的電路,并且基礎(chǔ)功能電路和接口適配層電路的接口,接口適配層電路和應(yīng)用電路的接口,在rtl代碼層面兼容并可直接互聯(lián),這三部分電路代碼通過兼容接口互聯(lián)形成的rtl代碼通過編譯,即可生成功能完整的fpga硬件電路配置文件。
在具體應(yīng)用中,例如,以實(shí)現(xiàn)數(shù)據(jù)壓縮加速器(硬件電路)在多fpga平臺(tái)移植為例。數(shù)據(jù)壓縮加速器使用數(shù)據(jù)流式接口,首先應(yīng)用電路開發(fā)者在其fpga開發(fā)平臺(tái)所提供的基礎(chǔ)功能電路(shell)上嵌套對(duì)應(yīng)的axi-stream接口的接口適配層電路(subshell)進(jìn)行開發(fā)。應(yīng)用電路(ip)開發(fā)可使用硬件描述語言(hardwaredescriptionlanguage)或高位綜合(highlevelsynthesis)等開發(fā)方式,開發(fā)的應(yīng)用電路稱為數(shù)據(jù)壓縮ip;當(dāng)數(shù)據(jù)壓縮ip要在fpga開發(fā)平臺(tái)之外的fpga平臺(tái)上部署時(shí),只需將開發(fā)完成的數(shù)據(jù)壓縮ip、fpga部署平臺(tái)基礎(chǔ)功能電路(shell)、以及從本發(fā)明提供的接口適配層庫(kù)中檢索的相應(yīng)接口適配層電路(subshell)組合,即可形成新的fpga工程,fpga工程通過邏輯綜合、布局布線,比特流(bitstream)配置文件生成,最后將配置文件加載到fpga中即可完成數(shù)據(jù)壓縮加速器在fpga部署平臺(tái)上的部署工作。整個(gè)移植部署過程不需要對(duì)數(shù)據(jù)壓縮ip進(jìn)行改動(dòng),因此本發(fā)明為實(shí)例中的數(shù)據(jù)壓縮ip降低了移植部署成本。
最后需要說明的是,上述描述為本發(fā)明的一般實(shí)施例,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不違背本發(fā)明宗旨及權(quán)利要求的前提下,可以做出多種類似的表示,這樣的變換均落入本發(fā)明的保護(hù)范圍之內(nèi)。