[發(fā)明專(zhuān)利]一種數(shù)據(jù)流架構(gòu)的硬件加速方法及裝置有效
| 申請(qǐng)?zhí)枺?/td> | 202210980907.3 | 申請(qǐng)日: | 2022-08-16 |
| 公開(kāi)(公告)號(hào): | CN115344526B | 公開(kāi)(公告)日: | 2023-04-18 |
| 發(fā)明(設(shè)計(jì))人: | 汪海洋;郟暉;白錦龍;趙海旭;丁冬;王鋒;花鵬程;柴志雷 | 申請(qǐng)(專(zhuān)利權(quán))人: | 江南信安(北京)科技有限公司 |
| 主分類(lèi)號(hào): | G06F15/78 | 分類(lèi)號(hào): | G06F15/78;G06F17/15 |
| 代理公司: | 北京華清迪源知識(shí)產(chǎn)權(quán)代理有限公司 11577 | 代理人: | 鄭興旺 |
| 地址: | 100088 北京市*** | 國(guó)省代碼: | 北京;11 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 數(shù)據(jù)流 架構(gòu) 硬件加速 方法 裝置 | ||
一種數(shù)據(jù)流架構(gòu)的硬件加速方法及裝置,該方法通過(guò)主機(jī)端存儲(chǔ)NTT計(jì)算所需輸入數(shù)據(jù),將N個(gè)輸入的NTT計(jì)算任務(wù)劃分成I個(gè)規(guī)模為J的子任務(wù);使用OpenCL異構(gòu)計(jì)算框架,建立FPGA設(shè)備端的計(jì)算核,并將劃分得到的子任務(wù)數(shù)據(jù)傳輸?shù)紽PGA設(shè)備端上的緩存區(qū);第一個(gè)子任務(wù)內(nèi)部數(shù)據(jù)以Dataflow的方式處理,當(dāng)?shù)谝惠喌芜\(yùn)算單元完成第一個(gè)子任務(wù)的數(shù)據(jù)處理時(shí),第二個(gè)子任務(wù)的數(shù)據(jù)流入第一輪蝶形運(yùn)算單元,使FPGA設(shè)備端處理子任務(wù)數(shù)據(jù)時(shí)形成兩級(jí)Dataflow架構(gòu)。本發(fā)明實(shí)現(xiàn)了不同步長(zhǎng)蝶形運(yùn)算間以及多個(gè)NTT子任務(wù)間的流水式計(jì)算;能夠根據(jù)FPGA片上資源的規(guī)模靈活縮放,且具有良好的吞吐性能。
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,具體涉及一種數(shù)據(jù)流架構(gòu)的硬件加速方法及裝置。
背景技術(shù)
zk-SNARKs是一種加密技術(shù),即“零知識(shí)簡(jiǎn)潔非交互知識(shí)論證”(Zero-KnowledgeSuccinct?Non-Interactive?Argument?of?Knowledge)的縮寫(xiě),允許“證明提供者”以數(shù)學(xué)方式向“驗(yàn)證者”證明信息的準(zhǔn)確性,而不會(huì)透露除其真實(shí)性和完整性之外的任何內(nèi)容。
針對(duì)零知識(shí)證明的加速需求,現(xiàn)有技術(shù)采用在多種硬件架構(gòu)上的加速方案。2019年Zcash團(tuán)隊(duì)基于FPGA對(duì)zk-SNARK計(jì)算過(guò)程中的橢圓曲線(xiàn)操作進(jìn)行了加速,將點(diǎn)加、點(diǎn)乘、配對(duì)等一系列橢圓曲線(xiàn)計(jì)算函數(shù)實(shí)例化為硬件模塊,通過(guò)設(shè)計(jì)指令級(jí)驅(qū)動(dòng)實(shí)現(xiàn)了對(duì)橢圓曲線(xiàn)操作的軟硬件協(xié)同加速。2021年清華大學(xué)提出了零知識(shí)證明加速方案PipeZK,在28nm級(jí)ASIC架構(gòu)上實(shí)現(xiàn)了專(zhuān)用的多項(xiàng)式計(jì)算模塊和多標(biāo)量乘法模塊,相比于純軟件實(shí)現(xiàn)加速了5倍。同年上海交通大學(xué)也基于FPGA提出了一種專(zhuān)門(mén)用于區(qū)塊鏈的零知識(shí)證明硬件加速設(shè)計(jì)方案,其內(nèi)部設(shè)計(jì)了FFT、ECP、MAC三個(gè)模塊進(jìn)行協(xié)同運(yùn)算,將證明的生成過(guò)程加速了10倍。
盡管設(shè)計(jì)專(zhuān)用的零知識(shí)證明芯片確實(shí)可以獲得更佳的性能,但是也存在著面向不同零知識(shí)證明協(xié)議適配性差的缺陷。除此之外,現(xiàn)有使用Verilog或VHDL方式實(shí)現(xiàn)的FPGA/ASIC模塊化加速方案,開(kāi)發(fā)周期長(zhǎng)且更新困難。相比之下,使用GPU加速雖然大大縮短了開(kāi)發(fā)周期,但高功耗的弱點(diǎn)也使得GPU加速方案難以落地實(shí)現(xiàn)。
綜上所述,亟需一種新的用于zk-SNARK中NTT算法的數(shù)據(jù)流架構(gòu)FPGA硬件加速方案。
發(fā)明內(nèi)容
為此,本發(fā)明提供一種數(shù)據(jù)流架構(gòu)的硬件加速方法及裝置,以解決全部或部分解決背景技術(shù)中提及的問(wèn)題。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:一種數(shù)據(jù)流架構(gòu)的硬件加速方法,包括:
通過(guò)主機(jī)端存儲(chǔ)NTT計(jì)算所需輸入數(shù)據(jù),將N個(gè)輸入的NTT計(jì)算任務(wù)劃分成I個(gè)規(guī)模為J的子任務(wù);
使用OpenCL異構(gòu)計(jì)算框架,建立FPGA設(shè)備端的計(jì)算核,并將劃分得到的子任務(wù)數(shù)據(jù)傳輸?shù)紽PGA設(shè)備端上的緩存區(qū);
第一個(gè)子任務(wù)內(nèi)部數(shù)據(jù)以Dataflow的方式處理,當(dāng)?shù)谝惠喌芜\(yùn)算單元完成第一個(gè)子任務(wù)的數(shù)據(jù)處理時(shí),第二個(gè)子任務(wù)的數(shù)據(jù)流入第一輪蝶形運(yùn)算單元,使FPGA設(shè)備端處理子任務(wù)數(shù)據(jù)時(shí)形成兩級(jí)Dataflow架構(gòu)。
作為數(shù)據(jù)流架構(gòu)的硬件加速方法優(yōu)選方案,F(xiàn)PGA設(shè)備端上的緩存區(qū)包括多端口讀寫(xiě)的BRAM,F(xiàn)PGA設(shè)備端通過(guò)BRAM訪(fǎng)問(wèn)緩沖區(qū)的數(shù)據(jù)。
作為數(shù)據(jù)流架構(gòu)的硬件加速方法優(yōu)選方案,F(xiàn)PGA設(shè)備端對(duì)第一個(gè)子任務(wù)的規(guī)模為J的數(shù)據(jù)進(jìn)行流式訪(fǎng)問(wèn),第一個(gè)子任務(wù)的規(guī)模為J的數(shù)據(jù)以隊(duì)列的方式流入第一個(gè)NTT計(jì)算核;
當(dāng)流入第一個(gè)NTT計(jì)算核的數(shù)據(jù)啟動(dòng)第一輪蝶形運(yùn)算單元時(shí),第一個(gè)NTT計(jì)算核開(kāi)始運(yùn)作;
將第一輪蝶形運(yùn)算單元的輸出數(shù)據(jù)流入第二輪蝶形運(yùn)算單元。
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于江南信安(北京)科技有限公司,未經(jīng)江南信安(北京)科技有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202210980907.3/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F15-00 通用數(shù)字計(jì)算機(jī)
G06F15-02 .通過(guò)鍵盤(pán)輸入的手動(dòng)操作,以及應(yīng)用機(jī)內(nèi)程序的計(jì)算,例如,袖珍計(jì)算器
G06F15-04 .在引入被處理的數(shù)據(jù)的同時(shí),進(jìn)行編制程序的,例如,在同一記錄載體上
G06F15-08 .應(yīng)用插接板編制程序的
G06F15-16 .兩個(gè)或多個(gè)數(shù)字計(jì)算機(jī)的組合,其中每臺(tái)至少具有一個(gè)運(yùn)算器、一個(gè)程序器及一個(gè)寄存器,例如,用于數(shù)個(gè)程序的同時(shí)處理
G06F15-18 .其中,根據(jù)計(jì)算機(jī)本身在一個(gè)完整的運(yùn)行期間內(nèi)所取得的經(jīng)驗(yàn)來(lái)改變程序的;學(xué)習(xí)機(jī)器
- 編碼裝置,編碼方法,程序和記錄媒體
- 網(wǎng)絡(luò)數(shù)據(jù)流識(shí)別系統(tǒng)及方法
- 一種數(shù)據(jù)流調(diào)度的方法、設(shè)備和系統(tǒng)
- 一種確定待清洗數(shù)據(jù)流的方法及裝置
- 用于分析儀器化軟件的數(shù)據(jù)流處理語(yǔ)言
- 用于數(shù)據(jù)流系統(tǒng)的數(shù)據(jù)流處理方法及裝置
- 數(shù)據(jù)流調(diào)度系統(tǒng)以及數(shù)據(jù)流調(diào)度方法
- 采用向量處理的同時(shí)分割
- 汽車(chē)數(shù)據(jù)流的監(jiān)控方法、系統(tǒng)及可讀存儲(chǔ)介質(zhì)
- 一種數(shù)據(jù)流類(lèi)型識(shí)別模型更新方法及相關(guān)設(shè)備
- 使用硬件加速實(shí)現(xiàn)瀏覽器渲染的方法和瀏覽器
- 密鑰芯片系統(tǒng)和物聯(lián)網(wǎng)設(shè)備
- 密鑰芯片系統(tǒng)和物聯(lián)網(wǎng)設(shè)備
- 硬件實(shí)現(xiàn)的負(fù)載平衡
- 一種FPGA硬件加速程序的遠(yuǎn)程升級(jí)方法和系統(tǒng)
- 一種硬件加速器的更換方法、裝置及服務(wù)器
- 用于管理借助于加速器裝置的硬件加速的請(qǐng)求的方法和節(jié)點(diǎn)
- 硬件加速控制方法、終端和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)
- 實(shí)現(xiàn)硬件加速處理的方法、設(shè)備和系統(tǒng)
- 用于實(shí)現(xiàn)密碼算法的硬件加速系統(tǒng)和方法
- 一種數(shù)據(jù)庫(kù)讀寫(xiě)分離的方法和裝置
- 一種手機(jī)動(dòng)漫人物及背景創(chuàng)作方法
- 一種通訊綜合測(cè)試終端的測(cè)試方法
- 一種服裝用人體測(cè)量基準(zhǔn)點(diǎn)的獲取方法
- 系統(tǒng)升級(jí)方法及裝置
- 用于虛擬和接口方法調(diào)用的裝置和方法
- 線(xiàn)程狀態(tài)監(jiān)控方法、裝置、計(jì)算機(jī)設(shè)備和存儲(chǔ)介質(zhì)
- 一種JAVA智能卡及其虛擬機(jī)組件優(yōu)化方法
- 檢測(cè)程序中方法耗時(shí)的方法、裝置及存儲(chǔ)介質(zhì)
- 函數(shù)的執(zhí)行方法、裝置、設(shè)備及存儲(chǔ)介質(zhì)





