本發(fā)明涉及基因測(cè)序技術(shù),具體涉及一種面向基因數(shù)據(jù)計(jì)算解讀的異構(gòu)平臺(tái)。
背景技術(shù):
最近幾年,隨著下一代測(cè)序技術(shù)(Next Generation Sequence, 以下簡(jiǎn)稱(chēng)NGS)的廣泛應(yīng)用,基因測(cè)序的成本迅速下降,基因技術(shù)開(kāi)始進(jìn)入普及應(yīng)用。NGS包括基因數(shù)據(jù)計(jì)算和基因數(shù)據(jù)解讀兩個(gè)步驟,其中基因數(shù)據(jù)計(jì)算是指對(duì)原始的基因測(cè)序數(shù)據(jù)進(jìn)行去偽、去重等預(yù)處理,以便基因數(shù)據(jù)解讀時(shí)使用,基因數(shù)據(jù)解讀是指對(duì)基因數(shù)據(jù)計(jì)算處理后的基因數(shù)據(jù)在生物學(xué)、醫(yī)學(xué)、健康保健等領(lǐng)域的科學(xué)含義進(jìn)行分析、揭示和解釋。
基因技術(shù)臨床應(yīng)用發(fā)展存在兩個(gè)方面的瓶頸:一個(gè)制約基因技術(shù)臨床應(yīng)用發(fā)展的瓶頸是基因數(shù)據(jù)的海量性。基于技術(shù)的原因,NGS生成的原始基因數(shù)據(jù)的單樣本數(shù)據(jù)量非常大,比如全基因組(Whole-Genome Sequencing, WGS)的單樣本數(shù)據(jù)達(dá)100G以上,因此基因單樣本數(shù)據(jù)的計(jì)算就已經(jīng)是高輸入/輸出密集和高計(jì)算密集型任務(wù);再加上基因技術(shù)的快速普及,導(dǎo)致測(cè)序生成的原始基因數(shù)據(jù)的總量成指數(shù)增長(zhǎng)。所以,對(duì)基因數(shù)據(jù)進(jìn)行實(shí)時(shí)的、準(zhǔn)確的計(jì)算和傳送變得非常困難,面臨著巨大的挑戰(zhàn)。為此,目前典型的方法是在擁有數(shù)量更多、性能更強(qiáng)的高性能處理器的計(jì)算機(jī)集群上,運(yùn)用基于多線(xiàn)程技術(shù)的軟件進(jìn)行處理。但是,這種系統(tǒng)的缺點(diǎn)是:一方面,它在存儲(chǔ)、功耗、技術(shù)支持和維護(hù)上的成本高;另一方面,在保證準(zhǔn)確性的前提下,它能獲得的并行計(jì)算加速性能仍然難以滿(mǎn)足上述挑戰(zhàn)的需求;更主要的是,測(cè)序生成的原始基因數(shù)據(jù)的增加已經(jīng)遠(yuǎn)超摩爾定律,所以,這種方法已經(jīng)缺乏持續(xù)性。另一個(gè)制約基因技術(shù)臨床應(yīng)用發(fā)展的瓶頸是基因數(shù)據(jù)解讀的精確性和可讀性。目前基因數(shù)據(jù)解讀的典型方法是基于一個(gè)人類(lèi)參考基因,用測(cè)序生成并經(jīng)基因數(shù)據(jù)計(jì)算處理后的基因數(shù)據(jù),重構(gòu)出某人的基因。然而,當(dāng)前使用的參考基因,例如GRCh38,是基于有限的樣本,既不足以代表整個(gè)人類(lèi)的多樣性,又不完備,在探測(cè)個(gè)體基因里的獨(dú)特變異時(shí),標(biāo)準(zhǔn)的基因信息學(xué)流程會(huì)導(dǎo)致偏差,而且缺乏與其它生物、醫(yī)學(xué)信息的深度交叉分析。此外,基因數(shù)據(jù)解讀還基本停留在專(zhuān)業(yè)領(lǐng)域,面向非專(zhuān)業(yè)的大眾,缺乏可讀性,即缺乏對(duì)基因數(shù)據(jù)直接的生物意義和間接的健康影響的通俗易懂、形式多樣的解讀。
目前,計(jì)算機(jī)系統(tǒng)中常見(jiàn)的處理器類(lèi)型有中央處理器(Central Processing Unit, 簡(jiǎn)稱(chēng)CPU)、現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array, 簡(jiǎn)稱(chēng)FPGA)、圖形處理器(Graphics Processing Unit, 簡(jiǎn)稱(chēng) GPU)和數(shù)字信號(hào)處理器(Digital Signal Processor, 簡(jiǎn)稱(chēng)DSP)。目前的高性能CPU通常都包括多個(gè)處理器核(Processor Core),從硬件上支持多線(xiàn)程,但是其設(shè)計(jì)目標(biāo)還是面向通用應(yīng)用程序,而相對(duì)于特殊的計(jì)算,通用應(yīng)用程序的并行性較小,需要較復(fù)雜的控制和較低的性能目標(biāo)。因此,CPU片上的硬件資源主要還是用于實(shí)現(xiàn)復(fù)雜的控制而不是計(jì)算,沒(méi)有為特殊功能包含專(zhuān)門(mén)的硬件,能夠支持的計(jì)算并行度不高。FPGA是一種半定制電路,優(yōu)點(diǎn)有:基于FPGA進(jìn)行系統(tǒng)開(kāi)發(fā),設(shè)計(jì)周期短、開(kāi)發(fā)費(fèi)用低;功耗低;生產(chǎn)后可重新修改配置,設(shè)計(jì)靈活性高,設(shè)計(jì)風(fēng)險(xiǎn)小。缺點(diǎn)是:實(shí)現(xiàn)同樣的功能,F(xiàn)PGA一般來(lái)說(shuō)比專(zhuān)用集成電路(Application Specific Integrated Circuit, ASIC)的速度要慢,比ASIC電路面積要大。隨著技術(shù)的發(fā)展和演進(jìn),F(xiàn)PGA向更高密度、更大容量、更低功耗和集成更多硬核知識(shí)產(chǎn)權(quán)(Intellectual Property, IP)的方向發(fā)展,F(xiàn)PGA的缺點(diǎn)在縮小,而優(yōu)點(diǎn)在放大。相比于CPU,F(xiàn)PGA可以用硬件描述語(yǔ)言來(lái)定制實(shí)現(xiàn)、修改和增加并行計(jì)算。GPU最初是一種專(zhuān)門(mén)用于圖像處理的微處理器,能夠從硬件上支持紋理映射和多邊形著色等圖形計(jì)算基本任務(wù)。由于圖形學(xué)計(jì)算涉及一些通用數(shù)學(xué)計(jì)算,比如矩陣和向量運(yùn)算,而GPU擁有高度并行化的架構(gòu),因此,隨著相關(guān)軟硬件技術(shù)的發(fā)展,GPU計(jì)算技術(shù)日益興起,即GPU不再局限于圖形處理,還被開(kāi)發(fā)用于線(xiàn)性代數(shù)、信號(hào)處理、數(shù)值仿真等并行計(jì)算,可以提供數(shù)十倍乃至于上百倍于CPU的性能。但是目前的GPU存在2個(gè)問(wèn)題:一是,受限于GPU的硬件結(jié)構(gòu)特性,很多并行算法不能在GPU上有效地執(zhí)行;二是,GPU運(yùn)行中會(huì)產(chǎn)生大量熱量,能耗較高。DSP是一種用數(shù)字方法對(duì)各種信號(hào)進(jìn)行快速分析、變換、濾波、檢測(cè)、調(diào)制、解調(diào)等運(yùn)算處理的微處理器。為此,DSP在芯片內(nèi)部結(jié)構(gòu)上做了特殊的優(yōu)化,比如硬件實(shí)現(xiàn)高速、高精度的乘法等。隨著數(shù)字時(shí)代的到來(lái),DSP廣泛應(yīng)用于智能設(shè)備、資源勘探、數(shù)字控制、生物醫(yī)學(xué)、航天航空等各個(gè)領(lǐng)域,具有功耗低、精度高、可進(jìn)行二維與多維處理等特點(diǎn)。綜上所述,以上四種計(jì)算器件各有特點(diǎn),又各有局限性。但是,針對(duì)前述基因技術(shù)臨床應(yīng)用發(fā)展存在的兩個(gè)方面的瓶頸,如何利用上述處理器來(lái)構(gòu)建混合架構(gòu)平臺(tái)以實(shí)現(xiàn)海量基因數(shù)據(jù)的計(jì)算解讀,則已經(jīng)成為一項(xiàng)亟待解決的關(guān)鍵技術(shù)問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明要解決的技術(shù)問(wèn)題:針對(duì)現(xiàn)有技術(shù)的上述問(wèn)題,提供一種能夠?yàn)樘岣呋驍?shù)據(jù)計(jì)算的實(shí)時(shí)性和準(zhǔn)確性、提高基因數(shù)據(jù)解讀的精準(zhǔn)性和可讀性提供硬件支持,基因數(shù)據(jù)計(jì)算解讀效率高、制造成本低、計(jì)算解讀能耗低的面向基因數(shù)據(jù)計(jì)算解讀的異構(gòu)平臺(tái)。
為了解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為:
一種面向基因數(shù)據(jù)計(jì)算解讀的異構(gòu)平臺(tái),包括異構(gòu)處理器單元、互聯(lián)總線(xiàn)模塊、內(nèi)存、基因計(jì)算解讀數(shù)據(jù)指令輸入單元和基因計(jì)算解讀結(jié)果輸出單元,所述異構(gòu)處理器單元分別通過(guò)互聯(lián)總線(xiàn)模塊與內(nèi)存、基因計(jì)算解讀數(shù)據(jù)指令輸入單元、基因計(jì)算解讀結(jié)果輸出單元相連,所述異構(gòu)處理器單元包括CPU、GPU、DSP和FPGA,其中CPU構(gòu)成控制引擎,所述CPU、GPU、FPGA三者構(gòu)成計(jì)算引擎,所述CPU、GPU、DSP三者構(gòu)成解讀引擎,所述控制引擎在通過(guò)基因計(jì)算解讀數(shù)據(jù)指令輸入單元接收基因計(jì)算解讀數(shù)據(jù)指令并分割為代碼段,當(dāng)代碼段的任務(wù)類(lèi)型為控制任務(wù)時(shí),將代碼段的指令和數(shù)據(jù)調(diào)度CPU進(jìn)行處理;當(dāng)代碼段的任務(wù)類(lèi)型為計(jì)算任務(wù)時(shí),將代碼段的指令和數(shù)據(jù)調(diào)度計(jì)算引擎進(jìn)行處理并將計(jì)算結(jié)果通過(guò)基因計(jì)算解讀結(jié)果輸出單元輸出;當(dāng)代碼段的任務(wù)類(lèi)型為解讀任務(wù)時(shí),將代碼段的指令和數(shù)據(jù)調(diào)度解讀引擎進(jìn)行處理并將計(jì)算結(jié)果通過(guò)基因計(jì)算解讀結(jié)果輸出單元輸出。
優(yōu)選地,所述FPGA包括交叉開(kāi)關(guān)、IO控制單元和加速器單元,所述IO控制單元、加速器單元分別和交叉開(kāi)關(guān)相連,所述加速器單元包括用于實(shí)現(xiàn)隱馬爾可夫模型計(jì)算硬件加速的隱馬爾可夫模型計(jì)算加速器、用于實(shí)現(xiàn)哈希計(jì)算硬件加速的哈希函數(shù)計(jì)算加速器兩者中的至少一種,所述IO控制單元與互聯(lián)總線(xiàn)模塊相連。
優(yōu)選地,所述IO控制單元包括PCIE接口、DMA控制器、PIU外圍接口部件和DDR控制器,所述交叉開(kāi)關(guān)分別與DMA控制器、PIU外圍接口部件和DDR控制器相連,所述DMA控制器、PIU外圍接口部件之間相互連接,所述PCIE接口與DMA控制器相連,所述PCIE接口、DDR控制器分別與互聯(lián)總線(xiàn)模塊相連。
優(yōu)選地,所述互聯(lián)總線(xiàn)模塊包括HCCLink總線(xiàn)模塊和HNCLink總線(xiàn)模塊,所述CPU、GPU、DSP和FPGA分別通過(guò)HCCLink總線(xiàn)模塊和內(nèi)存相連,且所述CPU、GPU、DSP和FPGA分別通過(guò)HNCLink總線(xiàn)模塊和基因計(jì)算解讀數(shù)據(jù)指令輸入單元以及基因計(jì)算解讀結(jié)果輸出單元相連。
優(yōu)選地,所述基因計(jì)算解讀數(shù)據(jù)指令輸入單元包括輸入設(shè)備、通用接口模塊、網(wǎng)絡(luò)接口模塊、多媒體輸入接口模塊、外部存儲(chǔ)設(shè)備、傳感器中的至少一種。
優(yōu)選地,所述基因計(jì)算解讀結(jié)果輸出單元包括顯示設(shè)備、通用接口模塊、網(wǎng)絡(luò)接口模塊、多媒體輸出接口模塊、外部存儲(chǔ)設(shè)備中的至少一種。
優(yōu)選地,所述將代碼段的指令和數(shù)據(jù)調(diào)度計(jì)算引擎進(jìn)行處理的詳細(xì)步驟包括:
A1)分別判斷代碼段是否能進(jìn)行指令并行執(zhí)行,是否能進(jìn)行流水線(xiàn)執(zhí)行,是否能進(jìn)行數(shù)據(jù)并行執(zhí)行,如果三者均不能,則跳轉(zhuǎn)執(zhí)行步驟A7),退出;否則,跳轉(zhuǎn)執(zhí)行步驟A2);
A2)判斷代碼段是否只能進(jìn)行數(shù)據(jù)并行執(zhí)行,如果只能進(jìn)行數(shù)據(jù)并行執(zhí)行,則跳轉(zhuǎn)執(zhí)行步驟A3);否則,跳轉(zhuǎn)執(zhí)行步驟A6);
A3)判斷代碼段分派到FPGA上優(yōu)化執(zhí)行(即并行執(zhí)行,下同)的總開(kāi)銷(xiāo)少于代碼段分派到GPU上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)是否成立,所述代碼段分派到FPGA上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和FPGA之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、FPGA的訪(fǎng)存開(kāi)銷(xiāo)以及FPGA的計(jì)算開(kāi)銷(xiāo),所述代碼段分派到GPU上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和GPU之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、GPU的訪(fǎng)存開(kāi)銷(xiāo)以及GPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟A6);否則,跳轉(zhuǎn)執(zhí)行步驟A4);
A4)判斷代碼段是否是能耗優(yōu)先,如果是能耗優(yōu)先,則跳轉(zhuǎn)執(zhí)行步驟A6);否則,跳轉(zhuǎn)執(zhí)行步驟A5);
A5)判斷代碼段的基因計(jì)算是否適合GPU加速處理,如果適合GPU加速處理,則跳轉(zhuǎn)執(zhí)行步驟A8);否則,跳轉(zhuǎn)執(zhí)行步驟A7);
A6)綜合利用FPGA所有可能的加速方法,所述加速方法包括指令并行、流水線(xiàn)、數(shù)據(jù)并行中的至少一種,判斷代碼段分派到FPGA上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)是否成立,如果成立,則跳轉(zhuǎn)執(zhí)行步驟A9),否則,跳轉(zhuǎn)執(zhí)行步驟A7);
A7)將代碼段的指令和數(shù)據(jù)調(diào)度CPU處理,退出;
A8)將代碼段的指令和數(shù)據(jù)調(diào)度GPU處理,退出;
A9)將代碼段的指令和數(shù)據(jù)調(diào)度FPGA處理,退出。
優(yōu)選地,步驟A5)的詳細(xì)步驟包括:
A5.1)判斷代碼段的基因計(jì)算是否能進(jìn)行數(shù)據(jù)并行執(zhí)行,如果能進(jìn)行數(shù)據(jù)并行執(zhí)行,則跳轉(zhuǎn)執(zhí)行步驟A5.2);否則,跳轉(zhuǎn)執(zhí)行步驟A7);
A5.2)判斷代碼段分派到GPU上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)是否成立,所述代碼段分派到GPU上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和GPU之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、GPU的訪(fǎng)存開(kāi)銷(xiāo)以及GPU的計(jì)算開(kāi)銷(xiāo),所述代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)包括CPU的訪(fǎng)存開(kāi)銷(xiāo)以及CPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟A8);否則,跳轉(zhuǎn)執(zhí)行步驟A7)。
優(yōu)選地,所述將代碼段的指令和數(shù)據(jù)調(diào)度解讀引擎進(jìn)行處理的詳細(xì)步驟包括:
B1)分別判斷代碼段是否為數(shù)字信號(hào)處理,是否為非圖形圖像類(lèi)多媒體處理,是否為圖形圖像處理,如果三者都不是,則跳轉(zhuǎn)執(zhí)行步驟B7);否則,跳轉(zhuǎn)執(zhí)行步驟B2);
B2)判斷代碼段是否為圖形圖像處理,如果是圖形圖像處理,則跳轉(zhuǎn)執(zhí)行步驟B3);否則,跳轉(zhuǎn)執(zhí)行步驟B5);
B3)判斷代碼段分派到DSP上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段分派到GPU上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)是否成立,所述代碼段分派到DSP上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和DSP之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、DSP的訪(fǎng)存開(kāi)銷(xiāo)以及DSP的計(jì)算開(kāi)銷(xiāo),所述代碼段分派到GPU上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和GPU之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、GPU的訪(fǎng)存開(kāi)銷(xiāo)以及GPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟B5);否則,跳轉(zhuǎn)執(zhí)行步驟B4);
B4)判斷代碼段是否是能耗優(yōu)先,如果是能耗優(yōu)先,則跳轉(zhuǎn)執(zhí)行步驟B5);否則,跳轉(zhuǎn)執(zhí)行步驟B7)
B5)判斷代碼段分派到DSP上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)是否成立,所述代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)包括CPU的訪(fǎng)存開(kāi)銷(xiāo)以及CPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟B6);否則,跳轉(zhuǎn)執(zhí)行步驟B8);
B6)將代碼段的指令和數(shù)據(jù)調(diào)度DSP處理,退出;
B7)判斷代碼段的基因解讀是否適合GPU加速處理,如果代碼段的基因解讀適合GPU加速處理,則將代碼段的指令和數(shù)據(jù)調(diào)度GPU處理,退出;否則,跳轉(zhuǎn)執(zhí)行步驟B8);
B8)將代碼段的指令和數(shù)據(jù)調(diào)度CPU處理,退出。
優(yōu)選地,步驟B7)的詳細(xì)步驟包括:
B7.1)判斷代碼段是否為圖形圖像處理,如果是圖形圖像處理,則跳轉(zhuǎn)執(zhí)行步驟B7.3);否則,跳轉(zhuǎn)執(zhí)行步驟B7.2);
B7.2)判斷代碼段是否能進(jìn)行數(shù)據(jù)并行執(zhí)行,如果能進(jìn)行數(shù)據(jù)并行執(zhí)行,則跳轉(zhuǎn)執(zhí)行步驟B7.3);否則,跳轉(zhuǎn)執(zhí)行步驟B8);
B7.3)判斷代碼段分派到GPU上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)是否成立,所述代碼段分派到GPU上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和GPU之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、GPU的訪(fǎng)存開(kāi)銷(xiāo)以及GPU的計(jì)算開(kāi)銷(xiāo),所述代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)包括CPU的訪(fǎng)存開(kāi)銷(xiāo)以及CPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟B7.4);否則,跳轉(zhuǎn)執(zhí)行步驟B8);
B7.4)將代碼段的指令和數(shù)據(jù)調(diào)度GPU處理,退出。
本發(fā)明面向基因數(shù)據(jù)計(jì)算解讀的異構(gòu)平臺(tái)具有下述優(yōu)點(diǎn):
1、平臺(tái)化,本發(fā)明的異構(gòu)平臺(tái)為基于CPU加FPGA、GPU和DSP的異構(gòu)平臺(tái),能夠讓設(shè)計(jì)人員開(kāi)發(fā)各種基因數(shù)據(jù)計(jì)算、基因數(shù)據(jù)解讀和基因數(shù)據(jù)計(jì)算解讀應(yīng)用流程,無(wú)需重新設(shè)計(jì)硬件系統(tǒng);能夠移植其它公開(kāi)或商用基因數(shù)據(jù)計(jì)算、基因數(shù)據(jù)解讀和基因數(shù)據(jù)計(jì)算解讀應(yīng)用軟件,無(wú)需重新設(shè)計(jì)硬件系統(tǒng);能夠用異構(gòu)編程語(yǔ)言(如OpenCL)來(lái)實(shí)現(xiàn)整個(gè)異構(gòu)平臺(tái)應(yīng)用開(kāi)發(fā)的一致性。
2、可擴(kuò)展性好,本發(fā)明的異構(gòu)平臺(tái)為基于CPU加FPGA、GPU和DSP的異構(gòu)平臺(tái),能夠根據(jù)應(yīng)用需求的不同和變化,靈活地?cái)U(kuò)展和重構(gòu)。
3、應(yīng)用廣泛,本發(fā)明的異構(gòu)平臺(tái)為基于CPU加FPGA、GPU和DSP的異構(gòu)平臺(tái),既能夠作為本地基因數(shù)據(jù)計(jì)算、基因數(shù)據(jù)解讀和基因數(shù)據(jù)計(jì)算解讀的處理設(shè)備,又能夠作為集群或云計(jì)算環(huán)境下基因數(shù)據(jù)計(jì)算、基因數(shù)據(jù)解讀和基因數(shù)據(jù)計(jì)算解讀的處理結(jié)點(diǎn)。
4、高可配,本發(fā)明的異構(gòu)平臺(tái)為基于CPU加FPGA、GPU和DSP的異構(gòu)平臺(tái),在軟件方面,四種核心部件——CPU、FPGA、GPU和DSP都是可編程器件;在硬件方面,F(xiàn)PGA還能夠在系統(tǒng)定型、生產(chǎn)和安裝后,按需進(jìn)行增量配置,即修改和/或增加功能;在應(yīng)用集成方面,能夠根據(jù)基因數(shù)據(jù)計(jì)算解讀的各種應(yīng)用要求,根據(jù)CPU、FPGA、GPU和DSP及其它硬件的優(yōu)勢(shì)特點(diǎn),對(duì)系統(tǒng)各個(gè)部件的組織、規(guī)模和關(guān)聯(lián)性來(lái)進(jìn)行配置和使用,使各部件合理分工并協(xié)同工作,最大效率地優(yōu)化應(yīng)用流程。本發(fā)明系統(tǒng)為系統(tǒng)和應(yīng)用設(shè)計(jì)師提供了良好的設(shè)計(jì)靈活性和增量配置能力,易于升級(jí)適應(yīng)新的應(yīng)用。
5、匹配基因數(shù)據(jù)計(jì)算解讀的異構(gòu)計(jì)算(heterogeneous computing)需求,本發(fā)明的異構(gòu)平臺(tái)為基于CPU加FPGA、GPU和DSP的異構(gòu)平臺(tái),能夠很好地匹配和滿(mǎn)足現(xiàn)在及將來(lái)基因數(shù)據(jù)計(jì)算解讀中融合處理分析文本、圖片、語(yǔ)音、音頻、視頻和其它電信號(hào)等各種結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的異構(gòu)計(jì)算對(duì)硬件的需求。
6、高性能,本發(fā)明的異構(gòu)平臺(tái)為基于CPU加FPGA、GPU和DSP的異構(gòu)平臺(tái),能夠從三個(gè)方面為高性能基因數(shù)據(jù)計(jì)算解讀提供硬件支持:一,同時(shí)提供任務(wù)并行、數(shù)據(jù)并行和算法硬件加速所需硬件;二,同時(shí)提供控制任務(wù)、事務(wù)型任務(wù)、非數(shù)據(jù)密集型計(jì)算任務(wù)、數(shù)據(jù)密集型計(jì)算任務(wù)所需硬件;三,同時(shí)提供文本、圖片、語(yǔ)音、音頻、視頻和其它電信號(hào)等融合處理分析所需硬件。
7、低成本,本發(fā)明的異構(gòu)平臺(tái)為基于CPU加FPGA、GPU和DSP的異構(gòu)平臺(tái),和完全用軟件處理基因數(shù)據(jù)計(jì)算解讀的、現(xiàn)有的計(jì)算機(jī)集群或云計(jì)算平臺(tái)相比,在提高性能的同時(shí),能夠降低設(shè)計(jì)、存儲(chǔ)、網(wǎng)絡(luò)、功耗、技術(shù)支持和維護(hù)上的成本。
8、低功耗,本發(fā)明的異構(gòu)平臺(tái)為基于CPU加FPGA、GPU和DSP的異構(gòu)平臺(tái),通過(guò)FPGA和DSP的使用,分擔(dān)CPU和GPU的部分工作,在提高性能和實(shí)現(xiàn)功能多樣化的同時(shí),降低了能耗。
附圖說(shuō)明
圖1為本發(fā)明實(shí)施例異構(gòu)平臺(tái)的框架結(jié)構(gòu)示意圖。
圖2為本發(fā)明實(shí)施例異構(gòu)平臺(tái)的引擎結(jié)構(gòu)示意圖。
圖3為本發(fā)明實(shí)施例異構(gòu)平臺(tái)中FPGA的框架結(jié)構(gòu)示意圖。
圖4為本發(fā)明實(shí)施例異構(gòu)平臺(tái)控制引擎的調(diào)度流程示意圖。
圖5為本發(fā)明實(shí)施例異構(gòu)平臺(tái)調(diào)度計(jì)算引擎的流程示意圖。
圖6為本發(fā)明實(shí)施例異構(gòu)平臺(tái)調(diào)度計(jì)算引擎判斷是否適合GPU加速的流程示意圖。
圖7為本發(fā)明實(shí)施例異構(gòu)平臺(tái)調(diào)度解讀引擎的流程示意圖。
圖8為本發(fā)明實(shí)施例異構(gòu)平臺(tái)調(diào)度解讀引擎判斷是否適合GPU加速的流程示意圖。
圖例說(shuō)明:1、異構(gòu)處理器單元;11、控制引擎;12、計(jì)算引擎;13、解讀引擎;2、互聯(lián)總線(xiàn)模塊;21、HCCLink總線(xiàn)模塊;22、HNCLink總線(xiàn)模塊;3、內(nèi)存;4、基因計(jì)算解讀數(shù)據(jù)指令輸入單元;5、基因計(jì)算解讀結(jié)果輸出單元。
具體實(shí)施方式
如圖1和圖2所示,本實(shí)施例的面向基因數(shù)據(jù)計(jì)算解讀的異構(gòu)平臺(tái)包括異構(gòu)處理器單元1、互聯(lián)總線(xiàn)模塊2、內(nèi)存3、基因計(jì)算解讀數(shù)據(jù)指令輸入單元4和基因計(jì)算解讀結(jié)果輸出單元5,異構(gòu)處理器單元1分別通過(guò)互聯(lián)總線(xiàn)模塊2與內(nèi)存3、基因計(jì)算解讀數(shù)據(jù)指令輸入單元4、基因計(jì)算解讀結(jié)果輸出單元5相連,異構(gòu)處理器單元1包括CPU(Central Processing Unit, 中央處理器)、GPU(Graphics Processing Unit, 圖形處理器)、DSP(Digital Signal Processor, 數(shù)字信號(hào)處理器)和FPGA(Field Programmable Gate Array, 現(xiàn)場(chǎng)可編程門(mén)陣列),其中,CPU構(gòu)成控制引擎11,CPU、GPU、FPGA三者構(gòu)成計(jì)算引擎12,CPU、GPU、DSP三者構(gòu)成解讀引擎13,控制引擎11在通過(guò)基因計(jì)算解讀數(shù)據(jù)指令輸入單元4接收基因計(jì)算解讀數(shù)據(jù)指令并分割為代碼段,當(dāng)代碼段的任務(wù)類(lèi)型為控制任務(wù)時(shí),將代碼段的指令和數(shù)據(jù)調(diào)度CPU進(jìn)行處理;當(dāng)代碼段的任務(wù)類(lèi)型為計(jì)算任務(wù)時(shí),將代碼段的指令和數(shù)據(jù)調(diào)度計(jì)算引擎12進(jìn)行處理并將計(jì)算結(jié)果通過(guò)基因計(jì)算解讀結(jié)果輸出單元5輸出;當(dāng)代碼段的任務(wù)類(lèi)型為解讀任務(wù)時(shí),將代碼段的指令和數(shù)據(jù)調(diào)度解讀引擎13進(jìn)行處理并將計(jì)算結(jié)果通過(guò)基因計(jì)算解讀結(jié)果輸出單元5輸出。
本實(shí)施例中,CPU數(shù)量可以為一個(gè)或者多個(gè),每個(gè)CPU包括一個(gè)或多個(gè)處理器核(Processor Core),GPU數(shù)量可以為一個(gè)或者多個(gè),DSP數(shù)量可以為一個(gè)或者多個(gè),F(xiàn)PGA數(shù)量可以為一個(gè)或者多個(gè),CPU、GPU、DSP和FPGA四者中任意個(gè)體之間能夠基于互聯(lián)總線(xiàn)模塊2進(jìn)行互聯(lián)并交換數(shù)據(jù)和指令,而且能夠基于互聯(lián)總線(xiàn)模塊2實(shí)現(xiàn)和內(nèi)存3、基因計(jì)算解讀數(shù)據(jù)指令輸入單元4和基因計(jì)算解讀結(jié)果輸出單元5中的任意設(shè)備進(jìn)行互聯(lián)并交換數(shù)據(jù)和指令。毫無(wú)疑問(wèn),實(shí)現(xiàn)上述設(shè)備部件之間互聯(lián)并交換數(shù)據(jù)和指令的總線(xiàn)形式并不局限于特定互聯(lián)方式,可以根據(jù)需要采用各種具體的實(shí)現(xiàn)方式。
如圖3所示,F(xiàn)PGA包括交叉開(kāi)關(guān)(Crossbar)、IO控制單元和加速器單元,IO控制單元、加速器單元分別和交叉開(kāi)關(guān)相連,加速器單元包括用于實(shí)現(xiàn)隱馬爾可夫模型計(jì)算硬件加速的隱馬爾可夫模型(Hidden Markov Model,HMM)計(jì)算加速器、用于實(shí)現(xiàn)哈希計(jì)算硬件加速的哈希函數(shù)(Hash function)計(jì)算加速器兩者,IO控制單元與互聯(lián)總線(xiàn)模塊2相連。本實(shí)施例中,交叉開(kāi)關(guān)具體采用高級(jí)可擴(kuò)展接口(Advanced eXtensible Interface,AXI)交叉開(kāi)關(guān)。此外,加速器單元也可以根據(jù)需要選擇單個(gè)隱馬爾可夫模型計(jì)算加速器、或單個(gè)哈希函數(shù)計(jì)算加速器、或者同時(shí)采用更多其他類(lèi)似的硬件加速器,以用于硬件加速實(shí)現(xiàn)其它計(jì)算。
如圖3所示,IO控制單元包括PCIE(Peripheral Component Interconnect Express,快速外部組件互聯(lián))接口、DMA(Direct Memory Access,直接存儲(chǔ)訪(fǎng)問(wèn))控制器、PIU(Peripheral Interface Unit,外圍接口部件)外圍接口部件和DDR控制器,交叉開(kāi)關(guān)分別與DMA控制器、PIU外圍接口部件和DDR控制器相連,DMA控制器、PIU外圍接口部件之間相互連接,PCIE接口與DMA控制器相連,PCIE接口、DDR控制器分別與互聯(lián)總線(xiàn)模塊2相連。DDR控制器用于DDR訪(fǎng)問(wèn),為大容量數(shù)據(jù)提供存儲(chǔ),本實(shí)施例中DDR控制器具體采用DDR4控制器。上述PCIE接口、上述DMA控制器、上述PIU合作用于在上述FPGA和上述CPU之間,以及在上述FPGA和上述GPU之間,傳輸數(shù)據(jù)和指令;上述交叉開(kāi)關(guān)用于上述DMA控制器、上述PIU外圍接口部件、上述DDR控制器、上述隱馬爾可夫模型計(jì)算加速器、上述哈希函數(shù)計(jì)算加速器和上述其它加速器之間的互連,為它們之間的數(shù)據(jù)和指令傳輸提供通路。
如圖1所示,互聯(lián)總線(xiàn)模塊2包括HCCLink(Heterogeneous computing Cache Coherence Link,異構(gòu)計(jì)算存儲(chǔ)一致性互聯(lián))總線(xiàn)模塊21和HNCLink(Heterogeneous computing Non-Coherence Link,異構(gòu)計(jì)算非一致性互聯(lián))總線(xiàn)模塊22,CPU、GPU、DSP和FPGA分別通過(guò)HCCLink總線(xiàn)模塊21和內(nèi)存3相連,且CPU、GPU、DSP和FPGA分別通過(guò)HNCLink總線(xiàn)模塊22和基因計(jì)算解讀數(shù)據(jù)指令輸入單元4以及基因計(jì)算解讀結(jié)果輸出單元5相連。HCCLink總線(xiàn)模塊21用于上述CPU、上述FPGA、上述GPU和上述DSP與上述DDR4存儲(chǔ)器陣列之間進(jìn)行互聯(lián)并交換數(shù)據(jù)、指令。HNCLink總線(xiàn)模塊22用于上述CPU、上述FPGA、上述GPU和上述DSP之間進(jìn)行互聯(lián)并交換控制指令;用于上述CPU、上述FPGA、上述GPU和上述DSP與上述輸入/輸出設(shè)備(I/O)之間進(jìn)行互聯(lián)并交換數(shù)據(jù)、指令。
本實(shí)施例中,內(nèi)存3為DDR4存儲(chǔ)器陣列(Memory Array)。
本實(shí)施例中,基因計(jì)算解讀數(shù)據(jù)指令輸入單元4包括輸入設(shè)備、通用接口模塊、網(wǎng)絡(luò)接口模塊、多媒體輸入接口模塊、外部存儲(chǔ)設(shè)備、傳感器中的至少一種。本實(shí)施例中,輸入設(shè)備包括鍵盤(pán)、鼠標(biāo)、軌跡球和觸控板中的至少一種,通用接口模塊包括邊界掃描接口模塊、通用串行總線(xiàn)接口模塊中的至少一種,網(wǎng)絡(luò)接口模塊包括以太網(wǎng)接口模塊、長(zhǎng)期演進(jìn)LTE接口模塊、Wi-Fi接口模塊、藍(lán)牙接口模塊中的至少一種,多媒體輸入接口模塊包括模擬音頻輸入接口、數(shù)字音頻輸入接口、視頻輸入接口中的至少一種,外部存儲(chǔ)設(shè)備包括閃存FLASH、固態(tài)硬盤(pán)SSD中的至少一種,傳感器包括溫度傳感器、心率測(cè)量傳感器、指紋傳感器中的至少一種。
本實(shí)施例中,基因計(jì)算解讀結(jié)果輸出單元5包括顯示設(shè)備、通用接口模塊、網(wǎng)絡(luò)接口模塊、多媒體輸出接口模塊、外部存儲(chǔ)設(shè)備中的至少一種。本實(shí)施例中,顯示設(shè)備包括陰極射線(xiàn)管CRT、液晶顯示器LCD、發(fā)光二極管LED中的至少一種,通用接口模塊包括邊界掃描接口模塊、通用串行總線(xiàn)接口模塊中的至少一種,網(wǎng)絡(luò)接口模塊包括以太網(wǎng)接口模塊、長(zhǎng)期演進(jìn)LTE接口模塊、Wi-Fi接口模塊、藍(lán)牙接口模塊中的至少一種,多媒體輸出接口模塊包括模擬音頻輸出接口、數(shù)字音頻輸出接口、視頻輸出接口中的至少一種,外部存儲(chǔ)設(shè)備包括閃存FLASH、固態(tài)硬盤(pán)SSD中的至少一種。
如圖4所示,控制引擎11在通過(guò)基因計(jì)算解讀數(shù)據(jù)指令輸入單元4接收基因計(jì)算解讀數(shù)據(jù)指令并分割為代碼段,然后根據(jù)代碼段的任務(wù)類(lèi)型對(duì)CPU、GPU、FPGA三者構(gòu)成的計(jì)算引擎12,CPU、GPU、DSP三者構(gòu)成的解讀引擎13進(jìn)行綜合調(diào)度:當(dāng)代碼段的任務(wù)類(lèi)型為控制任務(wù)時(shí),將代碼段的指令和數(shù)據(jù)調(diào)度CPU進(jìn)行處理;當(dāng)代碼段的任務(wù)類(lèi)型為計(jì)算任務(wù)時(shí),將代碼段的指令和數(shù)據(jù)調(diào)度計(jì)算引擎12進(jìn)行處理并將計(jì)算結(jié)果通過(guò)基因計(jì)算解讀結(jié)果輸出單元5輸出;當(dāng)代碼段的任務(wù)類(lèi)型為解讀任務(wù)時(shí),將代碼段的指令和數(shù)據(jù)調(diào)度解讀引擎13進(jìn)行處理并將計(jì)算結(jié)果通過(guò)基因計(jì)算解讀結(jié)果輸出單元5輸出。
本實(shí)施例中,CPU的功能如下:用于調(diào)度控制一個(gè)或多個(gè)FPGA,和一個(gè)或多個(gè)FPGA交互數(shù)據(jù)和指令;用于調(diào)度控制一個(gè)或多個(gè)GPU,和一個(gè)或多個(gè)GPU交互數(shù)據(jù)和指令;用于調(diào)度控制一個(gè)或多個(gè)DSP,和一個(gè)或多個(gè)DSP交互數(shù)據(jù)和指令;用于和一個(gè)或多個(gè)存儲(chǔ)器交互數(shù)據(jù)和指令;用于接收和處理一個(gè)或多個(gè)輸入設(shè)備輸入的數(shù)據(jù)和指令;用于發(fā)送數(shù)據(jù)和指令到一個(gè)或多個(gè)輸出設(shè)備;在基因數(shù)據(jù)計(jì)算流程中,用于執(zhí)行調(diào)度任務(wù)、事物型任務(wù),用于和一個(gè)或多個(gè)FPGA及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)計(jì)算任務(wù);在基因數(shù)據(jù)解讀流程中,用于執(zhí)行調(diào)度任務(wù)、事物型任務(wù),用于和一個(gè)或多個(gè)DSP及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)解讀任務(wù);在基因數(shù)據(jù)計(jì)算解讀流程中,用于執(zhí)行調(diào)度任務(wù)、事物型任務(wù),用于和一個(gè)或多個(gè)FPGA及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)計(jì)算任務(wù),用于和一個(gè)或多個(gè)DSP及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)解讀任務(wù)。
本實(shí)施例中,F(xiàn)PGA的功能如下:用于和一個(gè)或多個(gè)CPU交互數(shù)據(jù)和指令;可以用于調(diào)度控制一個(gè)或多個(gè)GPU,和一個(gè)或多個(gè)GPU交互數(shù)據(jù)和指令;可以用于調(diào)度控制一個(gè)或多個(gè)DSP,和一個(gè)或多個(gè)DSP交互數(shù)據(jù)和指令;用于和一個(gè)或多個(gè)存儲(chǔ)器交互數(shù)據(jù)和指令;可以用于接收和處理一個(gè)或多個(gè)輸入設(shè)備輸入的數(shù)據(jù)和指令;可以用于發(fā)送數(shù)據(jù)和指令到一個(gè)或多個(gè)輸出設(shè)備;在基因數(shù)據(jù)計(jì)算流程中,用于和一個(gè)或多個(gè)CPU及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)計(jì)算任務(wù),可以用于執(zhí)行調(diào)度任務(wù)、事物型任務(wù);在基因數(shù)據(jù)解讀流程中,可以用于執(zhí)行調(diào)度任務(wù)、事物型任務(wù),可以用于和一個(gè)或多個(gè)DSP及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)解讀任務(wù);在基因數(shù)據(jù)計(jì)算解讀流程中,用于和一個(gè)或多個(gè)CPU及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)計(jì)算任務(wù),可以用于和一個(gè)或多個(gè)DSP及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)解讀任務(wù),可以用于執(zhí)行調(diào)度任務(wù)、事物型任務(wù)。
本實(shí)施例中,GPU的功能如下:用于和一個(gè)或多個(gè)CPU交互數(shù)據(jù)和指令;可以用于和一個(gè)或多個(gè)FPGA交互數(shù)據(jù)和指令;可以用于和一個(gè)或多個(gè)DSP交互數(shù)據(jù)和指令;用于和一個(gè)或多個(gè)存儲(chǔ)器交互數(shù)據(jù)和指令;在基因數(shù)據(jù)計(jì)算流程中,用于和一個(gè)或多個(gè)FPGA及一個(gè)或多個(gè)CPU配合執(zhí)行基因數(shù)據(jù)計(jì)算任務(wù);在基因數(shù)據(jù)解讀流程中,用于和一個(gè)或多個(gè)DSP及一個(gè)或多個(gè)CPU配合執(zhí)行基因數(shù)據(jù)解讀任務(wù);在基因數(shù)據(jù)計(jì)算解讀流程中,用于和一個(gè)或多個(gè)FPGA及一個(gè)或多個(gè)CPU配合執(zhí)行基因數(shù)據(jù)計(jì)算任務(wù),用于和一個(gè)或多個(gè)DSP及一個(gè)或多個(gè)CPU配合執(zhí)行基因數(shù)據(jù)解讀任務(wù)。
本實(shí)施例中,DSP的功能如下:用于和一個(gè)或多個(gè)CPU交互數(shù)據(jù)和指令;可以用于和一個(gè)或多個(gè)FPGA交互數(shù)據(jù)和指令;可以用于和一個(gè)或多個(gè)GPU交互數(shù)據(jù)和指令;用于和一個(gè)或多個(gè)存儲(chǔ)器交互數(shù)據(jù)和指令;可以用于接收和處理一個(gè)或多個(gè)輸入設(shè)備輸入的數(shù)據(jù)和指令;可以用于發(fā)送數(shù)據(jù)和指令到一個(gè)或多個(gè)輸出設(shè)備;在基因數(shù)據(jù)解讀流程中,用于和一個(gè)或多個(gè)CPU及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)解讀任務(wù);在基因數(shù)據(jù)計(jì)算解讀流程中,用于和一個(gè)或多個(gè)CPU及一個(gè)或多個(gè)GPU配合執(zhí)行基因數(shù)據(jù)解讀任務(wù)。
本實(shí)施例中,內(nèi)存3的功能如下:用于存儲(chǔ)一個(gè)或多個(gè)基因測(cè)序數(shù)據(jù),基因測(cè)序數(shù)據(jù)為原始數(shù)據(jù)和/或壓縮數(shù)據(jù),壓縮數(shù)據(jù)不限定壓縮算法;用于存儲(chǔ)一個(gè)或多個(gè)基因參考序列及其對(duì)應(yīng)的一個(gè)或多個(gè)標(biāo)記;用于存儲(chǔ)一個(gè)或多個(gè)已知基因變異數(shù)據(jù);用于存儲(chǔ)和基因數(shù)據(jù)計(jì)算相關(guān)的其它輸入數(shù)據(jù);用于存儲(chǔ)和基因數(shù)據(jù)解讀相關(guān)的其它輸入數(shù)據(jù);用于存儲(chǔ)和基因數(shù)據(jù)計(jì)算解讀相關(guān)的其它輸入數(shù)據(jù);在基因數(shù)據(jù)計(jì)算流程中,用于存儲(chǔ)中間結(jié)果和最終數(shù)據(jù);在基因數(shù)據(jù)解讀流程中,用于存儲(chǔ)中間結(jié)果和最終數(shù)據(jù);在基因數(shù)據(jù)計(jì)算解讀流程中,用于存儲(chǔ)中間結(jié)果和最終數(shù)據(jù);不限定存儲(chǔ)器種類(lèi),例如DDR3(Dual Data Rate 3),DDR4等。
本實(shí)施例中,基因計(jì)算解讀數(shù)據(jù)指令輸入單元4的功能如下:用于輸入基因數(shù)據(jù)計(jì)算流程所需的數(shù)據(jù)和指令;用于輸入基因數(shù)據(jù)解讀流程所需的數(shù)據(jù)和指令;用于輸入基因數(shù)據(jù)計(jì)算解讀流程所需數(shù)據(jù)和指令;不限定輸入設(shè)備種類(lèi),例如鍵盤(pán)(Keyboard)、鼠標(biāo)(Mouse)、軌跡球(Trackball)、觸控板(touch pad)等輸入設(shè)備,或者邊界掃描(Joint Test Action Group,JTAG),通用串行總線(xiàn)(Universal Serial Bus,USB)等通用接口,或者以太網(wǎng)(Ethernet)、長(zhǎng)期演進(jìn)(Long Term Evolution,LTE)、無(wú)線(xiàn)保真(Wireless-Fidelity,Wi-Fi)、藍(lán)牙(Bluetooth)等網(wǎng)絡(luò)端口,或者模擬音頻輸入接口(如3.5mm立體聲小三芯接口)、數(shù)字音頻輸入接口(如索尼和飛利浦?jǐn)?shù)字接口Sony/Philips Digital Interface,S/PDIF)、視頻輸入接口(如高清晰度多媒體接口High Definition Multimedia Interface,HDMI)等多媒體接口,或者閃存(FLASH)、固態(tài)硬盤(pán)(Solid State Drives,SSD)等外部存儲(chǔ)設(shè)備,或者溫度傳感器(測(cè)量體溫)、光學(xué)傳感器(測(cè)量心率)、指紋傳感器(采集指紋)等傳感器(Sensor);不限定輸入數(shù)據(jù)和指令的形式,例如電信號(hào)、文本、圖片、語(yǔ)音、音頻、視頻等和它們的任意組合。
本實(shí)施例中,基因計(jì)算解讀結(jié)果輸出單元5的功能如下:用于輸出基因數(shù)據(jù)計(jì)算流程所生成的數(shù)據(jù)和指令;用于輸出基因數(shù)據(jù)解讀流程所生成的數(shù)據(jù)和指令;用于輸出基因數(shù)據(jù)計(jì)算解讀流程所生成的數(shù)據(jù)和指令;不限定輸出設(shè)備種類(lèi),例如陰極射線(xiàn)管(CRT)、液晶顯示器(LCD)、發(fā)光二極管(LED)等顯示設(shè)備,或者JTAG、USB等通用接口設(shè)備,或者Ethernet、LTE、Wi-Fi、Bluetooth等網(wǎng)絡(luò)端口,或者模擬音頻輸出接口(如3.5mm立體聲小三芯接口)、數(shù)字音頻輸出接口(如S/PDIF)、視頻輸出接口(如HDMI)等多媒體接口;或者固態(tài)硬盤(pán)(Solid State Drives,SSD)等外部存儲(chǔ)設(shè)備,不限定輸出數(shù)據(jù)和指令的形式,例如電信號(hào)、文本、圖片、語(yǔ)音、音頻、視頻等和它們的任意組合。參見(jiàn)圖1,基因計(jì)算解讀數(shù)據(jù)指令輸入單元4和基因計(jì)算解讀結(jié)果輸出單元5之間可以基于部分共同的設(shè)備實(shí)現(xiàn),例如通用接口模塊、網(wǎng)絡(luò)接口模塊、外部存儲(chǔ)設(shè)備等。
如圖4和圖5所示,將代碼段的指令和數(shù)據(jù)調(diào)度計(jì)算引擎12進(jìn)行處理的詳細(xì)步驟包括:
A1)分別判斷代碼段是否能進(jìn)行指令并行執(zhí)行,是否能進(jìn)行流水線(xiàn)執(zhí)行,是否能進(jìn)行數(shù)據(jù)并行執(zhí)行,如果三者均不能,則跳轉(zhuǎn)執(zhí)行步驟A7),退出;否則,跳轉(zhuǎn)執(zhí)行步驟A2);
A2)判斷代碼段是否只能進(jìn)行數(shù)據(jù)并行執(zhí)行,如果只能進(jìn)行數(shù)據(jù)并行執(zhí)行,則跳轉(zhuǎn)執(zhí)行步驟A3);否則,跳轉(zhuǎn)執(zhí)行步驟A6);
A3)判斷代碼段分派到FPGA上優(yōu)化執(zhí)行(即并行執(zhí)行,下同)的總開(kāi)銷(xiāo)少于代碼段分派到GPU上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)是否成立,代碼段分派到FPGA上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和FPGA之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、FPGA的訪(fǎng)存開(kāi)銷(xiāo)以及FPGA的計(jì)算開(kāi)銷(xiāo),代碼段分派到GPU上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和GPU之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、GPU的訪(fǎng)存開(kāi)銷(xiāo)以及GPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟A6);否則,跳轉(zhuǎn)執(zhí)行步驟A4);
A4)判斷代碼段是否是能耗優(yōu)先,如果是能耗優(yōu)先,則跳轉(zhuǎn)執(zhí)行步驟A6);否則,跳轉(zhuǎn)執(zhí)行步驟A5);
A5)判斷代碼段的基因計(jì)算是否適合GPU加速處理,如果適合GPU加速處理,則跳轉(zhuǎn)執(zhí)行步驟A8);否則,跳轉(zhuǎn)執(zhí)行步驟A7);
A6)綜合利用FPGA所有可能的加速方法,加速方法包括指令并行、流水線(xiàn)、數(shù)據(jù)并行中的至少一種,判斷代碼段分派到FPGA上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)是否成立,如果成立,則跳轉(zhuǎn)執(zhí)行步驟A9),否則,跳轉(zhuǎn)執(zhí)行步驟A7);
A7)將代碼段的指令和數(shù)據(jù)調(diào)度CPU處理,退出;
A8)將代碼段的指令和數(shù)據(jù)調(diào)度GPU處理,退出;
A9)將代碼段的指令和數(shù)據(jù)調(diào)度FPGA處理,退出。
如圖6所示,步驟A5)的詳細(xì)步驟包括:
A5.1)判斷代碼段的基因計(jì)算是否能進(jìn)行數(shù)據(jù)并行執(zhí)行,如果能進(jìn)行數(shù)據(jù)并行執(zhí)行,則跳轉(zhuǎn)執(zhí)行步驟A5.2);否則,跳轉(zhuǎn)執(zhí)行步驟A7);
A5.2)判斷代碼段分派到GPU上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)是否成立,代碼段分派到GPU上優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和GPU之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、GPU的訪(fǎng)存開(kāi)銷(xiāo)以及GPU的計(jì)算開(kāi)銷(xiāo),代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)包括CPU的訪(fǎng)存開(kāi)銷(xiāo)以及CPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟A8);否則,跳轉(zhuǎn)執(zhí)行步驟A7)。
如圖4和圖7所示,將代碼段的指令和數(shù)據(jù)調(diào)度解讀引擎13進(jìn)行處理的詳細(xì)步驟包括:
B1)分別判斷代碼段是否為數(shù)字信號(hào)處理,是否為非圖形圖像類(lèi)多媒體處理,是否為圖形圖像處理,如果三者都不是,則跳轉(zhuǎn)執(zhí)行步驟B7);否則,跳轉(zhuǎn)執(zhí)行步驟B2);
B2)判斷代碼段是否為圖形圖像處理,如果是圖形圖像處理,則跳轉(zhuǎn)執(zhí)行步驟B3);否則,跳轉(zhuǎn)執(zhí)行步驟B5);
B3)判斷代碼段分派到DSP上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段分派到GPU上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)是否成立,代碼段分派到DSP上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和DSP之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、DSP的訪(fǎng)存開(kāi)銷(xiāo)以及DSP的計(jì)算開(kāi)銷(xiāo),代碼段分派到GPU上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和GPU之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、GPU的訪(fǎng)存開(kāi)銷(xiāo)以及GPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟B5);否則,跳轉(zhuǎn)執(zhí)行步驟B4);
B4)判斷代碼段是否是能耗優(yōu)先,如果是能耗優(yōu)先,則跳轉(zhuǎn)執(zhí)行步驟B5);否則,跳轉(zhuǎn)執(zhí)行步驟B7)
B5)判斷代碼段分派到DSP上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)是否成立,代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)包括CPU的訪(fǎng)存開(kāi)銷(xiāo)以及CPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟B6);否則,跳轉(zhuǎn)執(zhí)行步驟B8);
B6)將代碼段的指令和數(shù)據(jù)調(diào)度DSP處理,退出;
B7)判斷代碼段的基因解讀是否適合GPU加速處理,如果代碼段的基因解讀適合GPU加速處理,則將代碼段的指令和數(shù)據(jù)調(diào)度GPU處理,退出;否則,跳轉(zhuǎn)執(zhí)行步驟B8);
B8)將代碼段的指令和數(shù)據(jù)調(diào)度CPU處理,退出。
如圖8所示,步驟B7)的詳細(xì)步驟包括:
B7.1)判斷代碼段是否為圖形圖像處理,如果是圖形圖像處理,則跳轉(zhuǎn)執(zhí)行步驟B7.3);否則,跳轉(zhuǎn)執(zhí)行步驟B7.2);
B7.2)判斷代碼段是否能進(jìn)行數(shù)據(jù)并行執(zhí)行,如果能進(jìn)行數(shù)據(jù)并行執(zhí)行,則跳轉(zhuǎn)執(zhí)行步驟B7.3);否則,跳轉(zhuǎn)執(zhí)行步驟B8);
B7.3)判斷代碼段分派到GPU上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)少于代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)是否成立,所述代碼段分派到GPU上并且優(yōu)化執(zhí)行的總開(kāi)銷(xiāo)包括CPU和GPU之間交互數(shù)據(jù)和指令產(chǎn)生的通信開(kāi)銷(xiāo)、GPU的訪(fǎng)存開(kāi)銷(xiāo)以及GPU的計(jì)算開(kāi)銷(xiāo),所述代碼段在CPU上執(zhí)行的總開(kāi)銷(xiāo)包括CPU的訪(fǎng)存開(kāi)銷(xiāo)以及CPU的計(jì)算開(kāi)銷(xiāo),如果成立則跳轉(zhuǎn)執(zhí)行步驟B7.4);否則,跳轉(zhuǎn)執(zhí)行步驟B8);
B7.4)將代碼段的指令和數(shù)據(jù)調(diào)度GPU處理,退出。
綜上所述,本實(shí)施例的面向基因數(shù)據(jù)計(jì)算解讀的異構(gòu)平臺(tái)能夠以更低的成本,滿(mǎn)足高性能基因數(shù)據(jù)計(jì)算的實(shí)時(shí)性和準(zhǔn)確性要求,滿(mǎn)足高認(rèn)知基因數(shù)據(jù)解讀的精準(zhǔn)性和可讀性要求。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,本發(fā)明的保護(hù)范圍并不僅局限于上述實(shí)施例,凡屬于本發(fā)明思路下的技術(shù)方案均屬于本發(fā)明的保護(hù)范圍。應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理前提下的若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。