版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章FPGA神經(jīng)網(wǎng)絡(luò)計(jì)算的RTL級(jí)開(kāi)發(fā)6.1搭建開(kāi)發(fā)環(huán)境6.2RTL級(jí)開(kāi)發(fā)的優(yōu)勢(shì)與劣勢(shì)6.3RTL級(jí)開(kāi)發(fā)的基本流程6.4RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速設(shè)計(jì)流程6.5RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速仿真6.6RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速時(shí)序優(yōu)化
6.1搭建開(kāi)發(fā)環(huán)境
6.1.1開(kāi)發(fā)環(huán)境的選擇FPGA開(kāi)發(fā)首先需要明確開(kāi)發(fā)環(huán)境,合適的開(kāi)發(fā)環(huán)境不僅可以提高開(kāi)發(fā)效率,在后端布局布線環(huán)節(jié)還可以提高項(xiàng)目實(shí)現(xiàn)的性能和質(zhì)量。FPGA神經(jīng)網(wǎng)絡(luò)算法的RTL級(jí)開(kāi)發(fā)需要根據(jù)所選的FPGA芯片來(lái)確定合適的開(kāi)發(fā)環(huán)境。
表6-1的綜合布局布線集成工具Quartus軟件是Intel官方提供的FPGA開(kāi)發(fā)軟件。如果開(kāi)發(fā)芯片是XilinxFPGA,則綜合布局布線集成工具可以選擇ISE(IntegratedSoftwareEnvironment,集成軟件環(huán)境)或者Vivado。需要注意的是,無(wú)論是Quartus還是Vivado等工具都有眾多子版本,開(kāi)發(fā)者需要根據(jù)自己所選芯片的具體型號(hào)以及不同的開(kāi)發(fā)方式,到官方網(wǎng)站選擇合適的版本。
6.1.2開(kāi)發(fā)環(huán)境的搭建
(1)選擇版本。
根據(jù)項(xiàng)目使用的FPGA型號(hào),到Intel官網(wǎng)/?edition=standard下載合適的軟件版本,如圖6-1所示。
圖6-1軟件下載
(2)安裝軟件。
EDA(ElectronicDesignAutomatic,電子設(shè)計(jì)自動(dòng)化)工具的安裝和一般的軟件安裝相同,按照安裝向?qū)е鸩讲僮骷纯?。需要注意的是,安裝路徑盡量用英文且最好不要出現(xiàn)空格或特殊字符。EDA工具通常是集成開(kāi)發(fā)環(huán)境,所需的磁盤(pán)空間較大,如果磁盤(pán)空間不足,安裝時(shí)可根據(jù)需要裁剪定制軟件來(lái)節(jié)省磁盤(pán)空間,如圖6-2所示。
圖6-2安裝軟件
(3)安裝軟件授權(quán)。
EDA工具通常需要授權(quán)License才可以完全使用,如圖6-3所示。圖6-3安裝軟件授權(quán)
6.2RTL級(jí)開(kāi)發(fā)的優(yōu)勢(shì)與劣勢(shì)理解了RTL級(jí)開(kāi)發(fā)的層次定位,就很容易理解RTL級(jí)開(kāi)發(fā)FPGA的優(yōu)勢(shì):(1)?RTL級(jí)開(kāi)發(fā)可以更清晰準(zhǔn)確地描述電路結(jié)構(gòu),提高設(shè)計(jì)穩(wěn)定性;(2)實(shí)現(xiàn)預(yù)定義邏輯功能所需的FPGA芯片內(nèi)部資源由設(shè)計(jì)者控制,通常相對(duì)于更高層級(jí)的開(kāi)發(fā)方式更節(jié)省資源;(3)設(shè)計(jì)者可以在RTL級(jí)開(kāi)發(fā)過(guò)程中,提前考慮芯片內(nèi)部結(jié)構(gòu)和描述電路的匹配關(guān)系,更有利于后端布局布線,提高整體設(shè)計(jì)性能。
當(dāng)然,RTL級(jí)開(kāi)發(fā)也有劣勢(shì),且其劣勢(shì)也很突出:
(1)開(kāi)發(fā)難度大,不僅要求開(kāi)發(fā)者自身的技能水平高、開(kāi)發(fā)經(jīng)驗(yàn)豐富,而且要求開(kāi)發(fā)者深刻理解所開(kāi)發(fā)的FPGA芯片內(nèi)部資源結(jié)構(gòu)的細(xì)節(jié),并做到開(kāi)發(fā)的電路和FPGA芯片資源完美匹配;
(2)開(kāi)發(fā)效率低、周期長(zhǎng),RTL級(jí)項(xiàng)目的開(kāi)發(fā)通常需要數(shù)月甚至以年為單位的開(kāi)發(fā)周期;
(3)修改迭代周期長(zhǎng)、成本高,RTL級(jí)開(kāi)發(fā)描述的是電路的數(shù)據(jù)流,修改功能需求就相當(dāng)于修改電路數(shù)據(jù)流結(jié)構(gòu),修改所需投入的時(shí)間和人力成本都相對(duì)較高。
6.3RTL級(jí)開(kāi)發(fā)的基本流程
FPGA項(xiàng)目RTL級(jí)開(kāi)發(fā)通常都是系統(tǒng)級(jí)工程,環(huán)節(jié)多且過(guò)程復(fù)雜,從項(xiàng)目需求理解、方案評(píng)估、芯片理解、詳細(xì)方案設(shè)計(jì)、RTL級(jí)代碼設(shè)計(jì)、仿真、綜合、布局布線、時(shí)序分析與優(yōu)化、測(cè)試,到最后驗(yàn)收,一整套流程環(huán)環(huán)相扣,相互影響、相互依賴,每一個(gè)環(huán)節(jié)都需要高質(zhì)量完成才能確保整個(gè)項(xiàng)目到目標(biāo),如圖6-4所示。圖6-4RTL級(jí)FPGA開(kāi)發(fā)流程示例
6.3.1需求理解
在FPGA項(xiàng)目開(kāi)始之前,必須充分理解項(xiàng)目的詳細(xì)功能需求以及各功能的性能指標(biāo)。在項(xiàng)目需求理解階段,需要根據(jù)項(xiàng)目功能需求和性能指標(biāo),分析項(xiàng)目所需的FPGA資源數(shù)量、設(shè)計(jì)復(fù)雜度、通信帶寬、帶寬計(jì)算等關(guān)鍵技術(shù)瓶頸;同時(shí),需要確認(rèn)項(xiàng)目的時(shí)間要求、驗(yàn)收標(biāo)準(zhǔn)、驗(yàn)收環(huán)境等,并給出詳細(xì)的需求理解報(bào)告。
6.3.2方案評(píng)估
根據(jù)需求理解報(bào)告,對(duì)需求理解報(bào)告中各因素進(jìn)行權(quán)衡,選擇合適的器件和設(shè)計(jì)方案,并給出方案評(píng)估報(bào)告。通常,F(xiàn)PGA設(shè)計(jì)方案評(píng)估報(bào)告包含F(xiàn)PGA芯片選型、FPGA開(kāi)發(fā)環(huán)境選擇、FPGA整體功能結(jié)構(gòu)、關(guān)鍵技術(shù)瓶頸解決方法、FPGA系統(tǒng)數(shù)據(jù)流、FPGA系統(tǒng)控制流、FPGA時(shí)鐘系統(tǒng)結(jié)構(gòu)、FPGA復(fù)位系統(tǒng)結(jié)構(gòu)等信息。
根據(jù)需求理解報(bào)告,對(duì)需求理解報(bào)告中各因素進(jìn)行權(quán)衡,選擇合適的器件和設(shè)計(jì)方案,并給出方案評(píng)估報(bào)告。通常,F(xiàn)PGA設(shè)計(jì)方案評(píng)估報(bào)告包含F(xiàn)PGA芯片選型、FPGA開(kāi)發(fā)環(huán)境選擇、FPGA整體功能結(jié)構(gòu)、關(guān)鍵技術(shù)瓶頸解決方法、FPGA系統(tǒng)數(shù)據(jù)流、FPGA系統(tǒng)控制流、FPGA時(shí)鐘系統(tǒng)結(jié)構(gòu)、FPGA復(fù)位系統(tǒng)結(jié)構(gòu)等信息。其中,F(xiàn)PGA芯片選型需要考慮設(shè)計(jì)方案所需的FPGA內(nèi)部資源數(shù)量、FPGA芯片成本、技術(shù)熟悉度等諸多因素。FPGA芯片內(nèi)部資源又包括I/O資源、時(shí)鐘資源、邏輯資源、RAM資源、DSP資源、高速接口資源、硬核IP等。選型通常需要平衡各種資源需求,并優(yōu)先考慮關(guān)鍵資源瓶頸。
例如,在神經(jīng)網(wǎng)絡(luò)計(jì)算加速設(shè)計(jì)中,通常需要優(yōu)先考慮DSP數(shù)量、BRAM數(shù)量以及所支持的外部存儲(chǔ)最大帶寬(與I/O數(shù)量、I/O速度、外部存儲(chǔ)控制器IP個(gè)數(shù)有關(guān))。圖6-5為FPGA引腳資源評(píng)估示例。
圖6-5FPGA引腳資源評(píng)估示例
6.3.3芯片理解
在方案評(píng)估完成并通過(guò)審核后,通常并不推薦直接進(jìn)行FPGA的詳細(xì)方案設(shè)計(jì)。在此之前,我們建議設(shè)計(jì)者對(duì)方案評(píng)估報(bào)告中所選擇的FPGA芯片進(jìn)行充分的學(xué)習(xí)和理解,這一環(huán)節(jié)很容易被忽略,然而這一環(huán)節(jié)卻極其重要。一個(gè)好的FPGA設(shè)計(jì)一定是建立在對(duì)FPGA充分理解的基礎(chǔ)上的,只有對(duì)FPGA內(nèi)部每個(gè)資源有了充分的理解,才能正確地使用FPGA,才能使設(shè)計(jì)的電路完美地和FPGA芯片相匹配,也才能發(fā)揮FPGA最佳的性能和工作狀態(tài)。在此環(huán)節(jié),需要詳細(xì)了解FPGA內(nèi)部的基本邏輯單元、I/O資源、時(shí)鐘資源、DSP資源、RAM資源、硬核IP等各種資源的詳細(xì)內(nèi)部結(jié)構(gòu)和它們的使用方法,如圖6-6所示。圖6-6FPGA芯片內(nèi)部資源組成
首先需要了解所選FPGA內(nèi)部的基本邏輯單元結(jié)構(gòu),了解芯片內(nèi)部有多少個(gè)ALM,它們可以工作在哪幾種模式下,每個(gè)ALM內(nèi)有幾個(gè)輸入查找表、幾個(gè)觸發(fā)器、多少加法器、多少進(jìn)位鏈和布線資源,以及布線資源可以走的路徑有哪些。圖6-7為IntelArria10FPGA內(nèi)一個(gè)基本邏輯單元結(jié)構(gòu)。圖6-7IntelArria10FPGA內(nèi)一個(gè)基本邏輯單元結(jié)構(gòu)
圖6-8為IntelArria10FPGA芯片內(nèi)的一個(gè)IOE(In-OutElement,輸入/輸出單元)內(nèi)部結(jié)構(gòu),其中既有輸入/輸出和三態(tài)控制用寄存器,又有I/O延遲電路,同時(shí)還有三態(tài)門(mén)控制器和上下拉電路,以及大量的布線資源。該電路可以在不同的設(shè)計(jì)場(chǎng)景下選擇不同的資源滿足項(xiàng)目的設(shè)計(jì)需求。
圖6-8IntelArria10FPGA芯片內(nèi)一個(gè)IOE內(nèi)部結(jié)構(gòu)示例
圖6-9為IntelArria10FPGA芯片內(nèi)的一個(gè)DSP內(nèi)部結(jié)構(gòu),其中含有2個(gè)乘法器、4個(gè)加法器、四組寄存器以及相應(yīng)的布線資源,在不同的設(shè)計(jì)場(chǎng)景下可以選擇不同的資源滿足項(xiàng)目的設(shè)計(jì)需求。
圖6-9IntelArria10FPGA芯片內(nèi)一個(gè)DSP內(nèi)部結(jié)構(gòu)示例
6.3.4詳細(xì)方案設(shè)計(jì)
(1)整體功能結(jié)構(gòu)設(shè)計(jì)是設(shè)計(jì)方案的概覽,是自頂向下設(shè)計(jì)中的頂層設(shè)計(jì)。
圖6-10為某項(xiàng)目的整體功能結(jié)構(gòu)圖,從圖中可以看出,該項(xiàng)目整體結(jié)構(gòu)包含一個(gè)EDK(EmbeddedDevelopmentKit,嵌入式開(kāi)發(fā)套件)軟核、DDR3(一種計(jì)算機(jī)內(nèi)存規(guī)格)控制器、VbyOne(專門(mén)面向圖像傳輸開(kāi)發(fā)的數(shù)字接口標(biāo)準(zhǔn))接口控制器、HDMI(HighDefinitionMultimediaInterface,高密度多芯片互連接口)控制器等模塊,同時(shí)整體結(jié)構(gòu)圖也描述了視頻數(shù)據(jù)流和控制流。圖6-10某項(xiàng)目整體功能結(jié)構(gòu)圖
(2)RTL階層設(shè)計(jì)是模塊化分層設(shè)計(jì)的思想體現(xiàn)。
圖6-11是某項(xiàng)目RTL階層設(shè)計(jì)圖,其中FPGA_TOP為該項(xiàng)目的頂層設(shè)計(jì),其他模塊為項(xiàng)目各功能子模塊設(shè)計(jì)以及它們之間的階層歸屬關(guān)系。
圖6-11某項(xiàng)目RTL階層設(shè)計(jì)圖
(3)時(shí)鐘系統(tǒng)設(shè)計(jì)是FPGA方案設(shè)計(jì)的重要環(huán)節(jié)。
圖6-12為某項(xiàng)目的時(shí)鐘系統(tǒng)設(shè)計(jì)圖,該項(xiàng)目中各功能模塊設(shè)計(jì)所需的時(shí)鐘不同,不同的用戶時(shí)鐘分別接到了各自驅(qū)動(dòng)的模塊端口上。
圖6-12某項(xiàng)目時(shí)鐘系統(tǒng)設(shè)計(jì)圖
(4)復(fù)位系統(tǒng)設(shè)計(jì)與時(shí)鐘系統(tǒng)設(shè)計(jì)同等重要,它需要將FPGA芯片內(nèi)的所有復(fù)位信號(hào)規(guī)劃清楚,并明確每個(gè)復(fù)位的輸入源、生成復(fù)位信號(hào)的拓?fù)浣Y(jié)構(gòu)以及每個(gè)復(fù)位信號(hào)所驅(qū)動(dòng)的模塊。FPGA復(fù)位系統(tǒng)的好壞關(guān)系到FPGA設(shè)計(jì)的穩(wěn)定性、適應(yīng)性和邏輯自恢復(fù)能力等重要指標(biāo)。
圖6-13為某項(xiàng)目的復(fù)位系統(tǒng)設(shè)計(jì)圖,該項(xiàng)目中各功能模塊設(shè)計(jì)所需復(fù)位時(shí)間和解除的復(fù)位時(shí)間不同,不同的復(fù)位信號(hào)分別接到了各自控制的模塊端口上。
圖6-13某項(xiàng)目復(fù)位系統(tǒng)設(shè)計(jì)圖
(5)接口定義及時(shí)序設(shè)計(jì)。詳細(xì)方案設(shè)計(jì)需要將各模塊之間的接口定義清楚,為下面的RTL輸入階段提供標(biāo)準(zhǔn),也為不同的設(shè)計(jì)者協(xié)同工作提供支撐。
圖6-14為某項(xiàng)目中SPI(SerialPeripheralInterface,串行外設(shè)接口)的時(shí)序設(shè)計(jì)圖,其中清楚地定義了SPI接口的信號(hào)名和各信號(hào)的時(shí)序關(guān)系。
圖6-14某項(xiàng)目中SPI時(shí)序設(shè)計(jì)示例
(6)各子模塊設(shè)計(jì)。詳細(xì)方案設(shè)計(jì)需要將子模塊內(nèi)部的功能實(shí)現(xiàn)電路描述清楚,為下面的RTL輸入階段提供標(biāo)準(zhǔn),也為不同的設(shè)計(jì)者協(xié)同工作提供支撐。
圖6-15為某項(xiàng)目中SPI子模塊設(shè)計(jì),圖中清晰地描述了該子模塊的接口信號(hào)名,以及實(shí)現(xiàn)該SPI的電路結(jié)構(gòu)。圖6-15子模塊設(shè)計(jì)示例
(7)寄存器系統(tǒng)設(shè)計(jì)。
圖6-16是某項(xiàng)目的寄存器地址映射圖,分為系統(tǒng)寄存器、SPI控制寄存器、數(shù)據(jù)上傳管理寄存器、數(shù)據(jù)下載管理寄存器,并詳細(xì)列出了各寄存器名及其地址信息。
圖6-16某項(xiàng)目寄存器地址映射圖
圖6-17是某項(xiàng)目的控制寄存器詳細(xì)說(shuō)明圖,其中包含寄存器的地址(0x0100)、寄存器功能(DMA控制寄存器)、寄存器每比特的含義以及寄存器的初始值(0x00000000)。圖6-17某項(xiàng)目控制寄存器詳細(xì)說(shuō)明圖
(8)FPGA與軟件交互流程設(shè)計(jì)。
圖6-18是某項(xiàng)目軟件系統(tǒng)啟動(dòng)PCIEDMA的軟件和FPGA交互流程圖。從圖中可以看出,計(jì)算機(jī)若要通過(guò)DMA將數(shù)據(jù)寫(xiě)到FPGA,軟件需要先配置FPGA寄存器、FPGA命令緩存和數(shù)據(jù)緩存,然后配置FPGA發(fā)起DMA傳輸,DMA結(jié)束后主動(dòng)發(fā)出中斷告知上位機(jī)動(dòng)作結(jié)束。
圖6-18FPGA與軟件交互流程設(shè)計(jì)示例
6.3.5RTL級(jí)HDL設(shè)計(jì)輸入
RTL級(jí)設(shè)計(jì)輸入是將詳細(xì)方案書(shū)中所設(shè)計(jì)的系統(tǒng)或電路以RTL級(jí)描述形式表示出來(lái),并輸入給EDA工具的過(guò)程,通常使用VHDL或Verilog語(yǔ)言來(lái)描述所設(shè)計(jì)的電路。需要注意的是,RTL級(jí)描述的目標(biāo)對(duì)象是可綜合、可映射為電路的結(jié)構(gòu),并且可直接用綜合工具生成網(wǎng)表文件的電路,并且必須可以直接映射布局布線到FPGA芯片內(nèi)。RTL設(shè)計(jì)者在描述電路的過(guò)程中需要時(shí)刻思考兩件事,一是描述的電路是否符合詳細(xì)設(shè)計(jì)方案書(shū)的功能要求,是否是最佳電路結(jié)構(gòu);二是描述的電路在FPGA芯片內(nèi)部用什么資源實(shí)現(xiàn),是否是最佳實(shí)現(xiàn)方式。
以下為加速云某項(xiàng)目中寄存器寫(xiě)控制模塊的部分代碼示例。
6.3.6功能仿真
功能仿真也稱為前仿真,是在編譯之前對(duì)用戶所設(shè)計(jì)的電路進(jìn)行邏輯功能驗(yàn)證,此時(shí)的仿真沒(méi)有延遲信息,僅對(duì)初步的功能進(jìn)行檢測(cè)。
FPGA的仿真通常分為如下五步來(lái)完成:
(1)分析、理解FPGA項(xiàng)目需求和FPGA設(shè)計(jì)方案。
(2)設(shè)計(jì)FPGA仿真方案書(shū)。通常,F(xiàn)PGA仿真方案書(shū)包含仿真環(huán)境選擇、仿真Case設(shè)計(jì)和仿真系統(tǒng)結(jié)構(gòu)設(shè)計(jì)(激勵(lì)生成系統(tǒng)、結(jié)果校驗(yàn)系統(tǒng)、報(bào)告生成系統(tǒng)等)。
(3)編寫(xiě)仿真系統(tǒng)結(jié)構(gòu)代碼和仿真Case代碼。
(4)按仿真Case清單逐條仿真(大規(guī)模設(shè)計(jì)中,此步驟通常用批處理自動(dòng)完成)。
(5)提交仿真報(bào)告書(shū)(含仿真Case正確性報(bào)告和仿真覆蓋率報(bào)告)。
圖6-19為加速云自動(dòng)化仿真系統(tǒng)的仿真平臺(tái)環(huán)境和仿真界面,其仿真過(guò)程通常通過(guò)批處理的形式自動(dòng)進(jìn)行,并通過(guò)log文件報(bào)告仿真結(jié)果。如果仿真發(fā)現(xiàn)設(shè)計(jì)錯(cuò)誤,log中會(huì)詳細(xì)報(bào)告錯(cuò)誤代碼、錯(cuò)誤類(lèi)型、錯(cuò)誤詳細(xì)波形文件,供設(shè)計(jì)者查閱參考。
圖6-19自動(dòng)化仿真平臺(tái)示例
圖6-20為加速云自動(dòng)化仿真系統(tǒng)的仿真平臺(tái)給出的某設(shè)計(jì)模塊的仿真覆蓋率報(bào)告。
圖6-20仿真覆蓋率報(bào)告示例
6.3.7綜合優(yōu)化
綜合就是將較高級(jí)抽象層次的描述轉(zhuǎn)化成較低層次的描述。綜合優(yōu)化根據(jù)目標(biāo)與要求優(yōu)化所生成的邏輯連接,使層次設(shè)計(jì)平面化,供FPGA布局布線軟件進(jìn)行實(shí)現(xiàn)。就目前的層次來(lái)看,綜合優(yōu)化(Synthesis)是將輸入編譯成由與門(mén)、或門(mén)、非門(mén)、RAM、觸發(fā)器等基本邏輯單元組成的邏輯連接網(wǎng)表,并非真實(shí)的門(mén)級(jí)電路。真實(shí)、具體的門(mén)級(jí)電路需要利用FPGA制造商的布局布線功能,根據(jù)綜合后生成的標(biāo)準(zhǔn)門(mén)級(jí)結(jié)構(gòu)網(wǎng)表來(lái)產(chǎn)生。
6.3.8布局布線與實(shí)現(xiàn)
布局布線可理解為利用實(shí)現(xiàn)工具把邏輯映射到目標(biāo)器件結(jié)構(gòu)的資源中,同時(shí)決定邏輯的最佳布局,選擇邏輯與輸入/輸出功能鏈接的布線通道進(jìn)行連線,并產(chǎn)生相應(yīng)的文件(如配置文件與相關(guān)報(bào)告);實(shí)現(xiàn)是將綜合生成的邏輯網(wǎng)表配置到具體的FPGA芯片上,而布局布線是其中最重要的過(guò)程。布局將邏輯網(wǎng)表中的硬件原語(yǔ)和底層單元合理地配置到芯片內(nèi)部的固有硬件結(jié)構(gòu)上,并且在速度最優(yōu)和面積最優(yōu)之間做出選擇;布線根據(jù)布局的拓?fù)浣Y(jié)構(gòu),利用芯片內(nèi)部的各種連線資源,合理正確地連接各個(gè)元件。
6.3.9靜態(tài)時(shí)序分析與優(yōu)化
靜態(tài)時(shí)序分析是指將布局布線的電路在不模擬的條件下,通過(guò)計(jì)算電路的延時(shí)來(lái)檢測(cè)有無(wú)時(shí)序違規(guī)(即不滿足時(shí)序約束條件或器件固有的時(shí)序規(guī)則,如建立時(shí)間、保持時(shí)間等)。
時(shí)序優(yōu)化是指通過(guò)合理約束、修改設(shè)計(jì)(插入寄存器、并行結(jié)構(gòu)、邏輯展開(kāi)、寄存器平衡、路徑重組)、手工修改布局布線等方式反復(fù)優(yōu)化綜合布局布線,使得時(shí)序逐漸收斂,從而滿足設(shè)計(jì)要求的過(guò)程。
6.3.10芯片編程與調(diào)試
芯片編程與調(diào)試是FPGA設(shè)計(jì)的最后一步。芯片編程是指將設(shè)計(jì)生成的數(shù)據(jù)文件(BitstreamGeneration,產(chǎn)生位數(shù)據(jù)流文件)燒寫(xiě)到FPGA芯片中。FPGA芯片編程需要滿足一定的條件,如編程電壓、編程時(shí)序和編程算法等;調(diào)試是指實(shí)機(jī)驗(yàn)證設(shè)計(jì)功能的正確性和性能指標(biāo)。
6.4RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速設(shè)計(jì)流程
在確認(rèn)了用FPGA加速的算法結(jié)構(gòu)、計(jì)算精度和加速效果后,就可以按FPGA設(shè)計(jì)開(kāi)發(fā)流程進(jìn)行加速設(shè)計(jì)了。FPGA的設(shè)計(jì)流程通常包括設(shè)計(jì)需求理解、方案評(píng)估、芯片理解、詳細(xì)方案設(shè)計(jì)、RTL設(shè)計(jì)輸入、仿真、綜合、布局布線、時(shí)序優(yōu)化、芯片編程與調(diào)試。其中,詳細(xì)方案設(shè)計(jì)最為重要,關(guān)系到整體FPGA加速方案的設(shè)計(jì)質(zhì)量和開(kāi)發(fā)效率。
FPGA神經(jīng)網(wǎng)絡(luò)加速方案的設(shè)計(jì)除了要考慮時(shí)鐘系統(tǒng)、復(fù)位系統(tǒng)、數(shù)據(jù)流、控制流以外,以下幾點(diǎn)需要重點(diǎn)考慮:
(1)如何設(shè)計(jì)RTL層級(jí)結(jié)構(gòu)?
(2)如何調(diào)度這些計(jì)算因子以組成不同的單層計(jì)算?
(3)如何平衡設(shè)計(jì)中不同層級(jí)、不同計(jì)算因子之間對(duì)計(jì)算帶寬和存儲(chǔ)帶寬的不同需求?
6.5RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速仿真
RTL級(jí)神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)的仿真通常難度較大且仿真時(shí)間較長(zhǎng)。神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)通常由卷積、池化、全連接以及各種非線性函數(shù)組成,網(wǎng)絡(luò)層數(shù)多且結(jié)構(gòu)復(fù)雜,并且每一層網(wǎng)絡(luò)的參數(shù)規(guī)格和大小都可能不一樣,這就產(chǎn)生了兩個(gè)問(wèn)題,一個(gè)是單Case仿真數(shù)據(jù)量較大、時(shí)間較長(zhǎng);另一個(gè)是神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)各層各環(huán)節(jié)所組合的仿真Case數(shù)量極其龐大。
為了提高神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)仿真的效率,通常先將神經(jīng)網(wǎng)絡(luò)按兩個(gè)維度進(jìn)行拆解來(lái)單獨(dú)仿真,然后進(jìn)行功能性系統(tǒng)仿真。拆解的兩個(gè)維度分別是計(jì)算因子維度和層級(jí)維度,計(jì)算因子維度是指對(duì)神經(jīng)網(wǎng)絡(luò)中所包含的卷積、池化、全連接以及各種非線性函數(shù)等進(jìn)行單獨(dú)仿真;層級(jí)維度是指對(duì)神經(jīng)網(wǎng)絡(luò)各層級(jí)進(jìn)行單獨(dú)仿真。在計(jì)算因子維度和層級(jí)維度仿真的基礎(chǔ)上,再進(jìn)一步進(jìn)行系統(tǒng)級(jí)功能仿真。需要特別注意的是,由于神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中可能存在大量的卷積、池化、全連接等計(jì)算,且各層的卷積大小、個(gè)數(shù)以及步幅等都不盡相同,因此需要對(duì)FPGA設(shè)計(jì)中各種邊界問(wèn)題,包括計(jì)算邊界和存儲(chǔ)邊界進(jìn)行嚴(yán)格的覆蓋性仿真。
6.6RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速時(shí)序優(yōu)化使用FPGA進(jìn)行神經(jīng)網(wǎng)絡(luò)計(jì)算加速設(shè)計(jì),通常都需要做大量的時(shí)序優(yōu)化工作。一方面,神經(jīng)網(wǎng)絡(luò)加速設(shè)計(jì)本身對(duì)時(shí)序的要求比較高,時(shí)序越好,F(xiàn)PGA工作的時(shí)鐘頻率就越高,加速效果就越好;另一方面,神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)中存在的復(fù)雜網(wǎng)絡(luò)層級(jí)關(guān)系以及各層可能存在的不同的卷積、池化、全連接、非線性函數(shù)的計(jì)算使得FPGA設(shè)計(jì)中存在大量的運(yùn)算組合邏輯和數(shù)據(jù)流路徑選擇邏輯,并使得FPGA設(shè)計(jì)中存在極其復(fù)雜的布線結(jié)構(gòu),直接導(dǎo)致了使用FPGA進(jìn)行神經(jīng)網(wǎng)絡(luò)加速設(shè)計(jì)的時(shí)序很難有較高的頻率。
面對(duì)RTL級(jí)神經(jīng)網(wǎng)絡(luò)加速設(shè)計(jì)的時(shí)序優(yōu)化,我們首先需要理解的是,優(yōu)秀的時(shí)序是設(shè)計(jì)出來(lái)的,而不是優(yōu)化出來(lái)的,所有的后端優(yōu)化工作都只能起到錦上添花的作用。優(yōu)秀的時(shí)序表現(xiàn)需要在前期方案評(píng)估階段、芯片理解階段、詳細(xì)方案設(shè)計(jì)階段以及RTL輸入階段都做出相應(yīng)的有關(guān)優(yōu)秀時(shí)序的思考。
首先,在方案評(píng)估階段需要對(duì)神經(jīng)網(wǎng)絡(luò)各層級(jí)架構(gòu)以及各層計(jì)算所需的FPGA資源(特別是存儲(chǔ)資源、計(jì)算資源、布線資源、IO資源等)做充分的理解和計(jì)算,并選出合適的FPGA芯片;其次,在
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 苗木購(gòu)貨協(xié)議書(shū)
- 葡萄管護(hù)協(xié)議書(shū)
- 融資協(xié)議書(shū)范本
- 視頻轉(zhuǎn)讓協(xié)議書(shū)
- 認(rèn)證身份協(xié)議書(shū)
- 設(shè)備撤場(chǎng)協(xié)議書(shū)
- 設(shè)施接管協(xié)議書(shū)
- 運(yùn)輸保障協(xié)議書(shū)
- 運(yùn)輸石方協(xié)議書(shū)
- 志愿共建協(xié)議書(shū)
- 8m深基坑土方開(kāi)挖施工方案
- 2026年瓦工職業(yè)技能鑒定考試題庫(kù)及答案
- 2025年云南省人民檢察院聘用制書(shū)記員招聘(22人)筆試考試參考題庫(kù)及答案解析
- 2025年廣東省第一次普通高中學(xué)業(yè)水平合格性考試(春季高考)物理試題(含答案詳解)
- 初一上冊(cè)體育教案(2025-2026學(xué)年)
- 一般固廢合同范本
- 胃腸外科圍手術(shù)期護(hù)理要點(diǎn)
- 婚介協(xié)議書(shū)模板
- 【MOOC】數(shù)據(jù)結(jié)構(gòu)與算法-北京大學(xué) 中國(guó)大學(xué)慕課MOOC答案
- 成人學(xué)歷銷(xiāo)售培訓(xùn)課件
- 民主測(cè)評(píng)及征求意見(jiàn)表
評(píng)論
0/150
提交評(píng)論