針對(duì)CPU-FPGA異構(gòu)多核片上系統(tǒng)的自動(dòng)化數(shù)據(jù)布局研究
發(fā)布時(shí)間:2020-07-19 10:04
【摘要】:隨著深度學(xué)習(xí)與大數(shù)據(jù)應(yīng)用的興起,傳統(tǒng)的基于CPU的架構(gòu)已經(jīng)難以滿足這些新型應(yīng)用的計(jì)算要求。對(duì)此,工業(yè)界與學(xué)術(shù)界開(kāi)始使用硬件加速器來(lái)彌補(bǔ)傳統(tǒng)CPU架構(gòu)的弊端。FPGA憑借其高能效比以及靈活的動(dòng)態(tài)可重構(gòu)功能(dynamic reconfiguration)得到了越來(lái)越多的關(guān)注。然而,傳統(tǒng)的基于FPGA的設(shè)計(jì)往往需要花費(fèi)大量的時(shí)間并且調(diào)試難度很大。隨著FPGA的不斷發(fā)展,高級(jí)綜合(High Level Synthesis,HLS)工具得到了極其廣泛的應(yīng)用,其有效地解決了FPGA設(shè)計(jì)難于實(shí)現(xiàn)的問(wèn)題。高級(jí)綜合工具將C\C++等高級(jí)語(yǔ)言自動(dòng)轉(zhuǎn)換為相對(duì)應(yīng)的硬件描述語(yǔ)言模塊,大大減少了設(shè)計(jì)實(shí)現(xiàn)基于FPGA的系統(tǒng)應(yīng)用的難度,特別是針對(duì)大量的軟件工程師而言。同時(shí),高級(jí)綜合工具提供了許多優(yōu)化技術(shù)以便于系統(tǒng)設(shè)計(jì)者針對(duì)包括硬件資源消耗,性能,功耗等在內(nèi)的不同優(yōu)化目標(biāo)進(jìn)行系統(tǒng)優(yōu)化。此外,不同于以往基于CPU的系統(tǒng)架構(gòu),異構(gòu)系統(tǒng)中的存儲(chǔ)子系統(tǒng)通常要復(fù)雜的多。具體而言,純CPU系統(tǒng)架構(gòu)下的存儲(chǔ)體系一般由多級(jí)Cache與主存構(gòu)成。而針對(duì)異構(gòu)系統(tǒng)來(lái)說(shuō),有著軟件可控的便箋式存儲(chǔ)器(Scratchpad Memory,SPM)以及CPU端與加速器端均可訪問(wèn)的共享Cache。這些存儲(chǔ)體系各具特點(diǎn),對(duì)其進(jìn)行合理地利用對(duì)提高整個(gè)系統(tǒng)性能有著重要的作用。針對(duì)CPU-FPGA異構(gòu)多核片上系統(tǒng).(Heterogeneous Multiprocessor system-on-chip,HMPSoC)而言,片上存儲(chǔ)資源極其有限。因此,對(duì)其進(jìn)行合理地利用尤為重要。然而當(dāng)今最先進(jìn)的高級(jí)綜合工具都依賴于系統(tǒng)設(shè)計(jì)者人工決定復(fù)雜存儲(chǔ)體系下的數(shù)據(jù)布局。在這篇論文中,我們提出了一個(gè)可以與商業(yè)化工具Vivado HLS無(wú)縫結(jié)合的自動(dòng)化的數(shù)據(jù)布局框架。首先,我們基于Zedboard異構(gòu)多核片上系統(tǒng)設(shè)計(jì)了一系列微測(cè)試程序來(lái)測(cè)量各種類(lèi)型的訪存延遲,如Cache命中,Cache miss,或者直接訪問(wèn)主存等。基于對(duì)上述存儲(chǔ)子系統(tǒng)模型中數(shù)據(jù)的分析,我們得出了一些不同于傳統(tǒng)CPU架構(gòu)環(huán)境的結(jié)論:如Cache所發(fā)揮的作用沒(méi)有傳統(tǒng)環(huán)境下的那么大;針對(duì)突發(fā)模式訪存來(lái)說(shuō),其訪存延遲與存儲(chǔ)資源的選擇基本沒(méi)有關(guān)系。因此基于這些結(jié)論,我們發(fā)現(xiàn)基于頻率與局部性的,針對(duì)傳統(tǒng)的CPU架構(gòu)的數(shù)據(jù)布局策略直接應(yīng)用于CPU-FPGA異構(gòu)多核片上系統(tǒng)上所取得的性能并不理想。依賴于我們的存儲(chǔ)延遲分析模型并結(jié)合LLVM編譯框架,我們提出了一個(gè)基于整數(shù)線性規(guī)劃(Integer linear programming,ILP)的自動(dòng)化數(shù)據(jù)布局框架來(lái)決定了每一個(gè)數(shù)組對(duì)象應(yīng)該經(jīng)由以下哪種存儲(chǔ)被訪問(wèn):片上塊存儲(chǔ)(Block RAM,BRAM),CPU-FPGA共享的第二級(jí)存儲(chǔ)(Level 2 Cache,L2 Cache)或者直接訪問(wèn)雙倍速率(Double Date Rate,DDR)存儲(chǔ)器。此外,我們?cè)O(shè)計(jì)了一個(gè)基于貪心策略的基準(zhǔn)算法來(lái)進(jìn)行比較,在Zedboard平臺(tái)上得到的實(shí)驗(yàn)結(jié)果表明相較于基準(zhǔn)算法,我們所提出的策略有1.39X的性能加速比。
【學(xué)位授予單位】:山東大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2019
【分類(lèi)號(hào)】:TP332;TN791
【圖文】:
V邐^逡逑圖2-1高級(jí)綜合工具基本工作機(jī)制逡逑如圖2-1所示,高級(jí)綜合工具對(duì)該內(nèi)核程序做出的調(diào)度方案為:第一個(gè)時(shí)鐘逡逑周期執(zhí)行*和+,第二個(gè)時(shí)鐘周期執(zhí)行+以及結(jié)果輸出。在最終的硬件實(shí)現(xiàn)逡逑中,高級(jí)綜合將形參實(shí)現(xiàn)為對(duì)應(yīng)的輸入輸出端口,在圖2-1中,x、a、b、c最終逡逑被實(shí)現(xiàn)為8位的輸入端口,而y則實(shí)現(xiàn)為32位的輸出端口。在剛開(kāi)始的綁定階逡逑段,高級(jí)綜合使用組合乘法器(Multiplier,邋Mul)來(lái)做乘法,使用組合加法器/減逡逑法器(Adder/Subtractor,邋AddSub)來(lái)實(shí)現(xiàn)加法。然而在最終的綁定階段,高級(jí)綜逡逑11逡逑
在串行執(zhí)行模式下,如傳統(tǒng)的C/C++語(yǔ)言程序,下一次的循環(huán)迭代必須等到逡逑當(dāng)前迭代的最后一個(gè)操作結(jié)束之后才能開(kāi)始。當(dāng)用優(yōu)化之后,循逡逑環(huán)體中的操作可以如圖2-2所示的方式并行執(zhí)行。逡逑Without邋Pipelining邐With邋Pipelining逡逑Loop'for(i=1;i<3;i-*-*-)邋{邐邐逡逑op_Read:邐—逡逑邐邋op_Compu。澹哼姡茫停绣义希铮穑撸郑颍椋簦;逡逑f邐f逡逑Initiation邋Interval邋=邋3邋cycles邐Initiation邋Interval邋=邋1邋cycle逡逑RD邋CMP邋|邋WR邋|邋R0邋CMP邋f邋WR邐RD邋CMP邋["wr"*逡逑RD邋CMP邋WR逡逑?邐?邋?邐?逡逑Latency邋=邋3邋cycles邐Latency邋=邋3邋cycles逡逑m邐?邐?邐邐邐?逡逑Loop邋Latency邋=邋6邋cycles邐Loop邋Latency邋=邋4邋cycles逡逑圖2-2邐優(yōu)化技術(shù)不例逡逑如圖2-2所示,在沒(méi)有用/o%;7扣///7//7g優(yōu)化時(shí),兩個(gè)RD操作之間需要經(jīng)過(guò)逡逑12逡逑
邐Oj^imizer邐Backend邋?逡逑圖2-5傳統(tǒng)編譯器架構(gòu)逡逑其中前端(Frontend)主要包括詞法分析、語(yǔ)法分析、語(yǔ)義分析以及生成中間逡逑代碼。優(yōu)化器(Optmiizer)主要是指中間代碼優(yōu)化。后端(Backend)主要指生逡逑成機(jī)器碼。逡逑而LLVM邋(Low邋Level邋Virtual邋Machine)的主要架構(gòu)如下所示:逡逑r邐Clang邋0/0??/0句C邐UVM邐y邋A逡逑^ronftnd邐^\s邐f邐KS6邋Baek_d逡逑Fortran-*.邋Hvm^ccFronsena邋—|邐^邋PowerPC^Back*^邋PowetPC逡逑HasKefi邋^邐OHC邋fr0r\mm邐'邐、邐^邐AHM逡逑avM邋m邐U.VMIR逡逑圖2-6邋LLVM架構(gòu)逡逑14逡逑
本文編號(hào):2762269
【學(xué)位授予單位】:山東大學(xué)
【學(xué)位級(jí)別】:碩士
【學(xué)位授予年份】:2019
【分類(lèi)號(hào)】:TP332;TN791
【圖文】:
V邐^逡逑圖2-1高級(jí)綜合工具基本工作機(jī)制逡逑如圖2-1所示,高級(jí)綜合工具對(duì)該內(nèi)核程序做出的調(diào)度方案為:第一個(gè)時(shí)鐘逡逑周期執(zhí)行*和+,第二個(gè)時(shí)鐘周期執(zhí)行+以及結(jié)果輸出。在最終的硬件實(shí)現(xiàn)逡逑中,高級(jí)綜合將形參實(shí)現(xiàn)為對(duì)應(yīng)的輸入輸出端口,在圖2-1中,x、a、b、c最終逡逑被實(shí)現(xiàn)為8位的輸入端口,而y則實(shí)現(xiàn)為32位的輸出端口。在剛開(kāi)始的綁定階逡逑段,高級(jí)綜合使用組合乘法器(Multiplier,邋Mul)來(lái)做乘法,使用組合加法器/減逡逑法器(Adder/Subtractor,邋AddSub)來(lái)實(shí)現(xiàn)加法。然而在最終的綁定階段,高級(jí)綜逡逑11逡逑
在串行執(zhí)行模式下,如傳統(tǒng)的C/C++語(yǔ)言程序,下一次的循環(huán)迭代必須等到逡逑當(dāng)前迭代的最后一個(gè)操作結(jié)束之后才能開(kāi)始。當(dāng)用優(yōu)化之后,循逡逑環(huán)體中的操作可以如圖2-2所示的方式并行執(zhí)行。逡逑Without邋Pipelining邐With邋Pipelining逡逑Loop'for(i=1;i<3;i-*-*-)邋{邐邐逡逑op_Read:邐—逡逑邐邋op_Compu。澹哼姡茫停绣义希铮穑撸郑颍椋簦;逡逑f邐f逡逑Initiation邋Interval邋=邋3邋cycles邐Initiation邋Interval邋=邋1邋cycle逡逑RD邋CMP邋|邋WR邋|邋R0邋CMP邋f邋WR邐RD邋CMP邋["wr"*逡逑RD邋CMP邋WR逡逑?邐?邋?邐?逡逑Latency邋=邋3邋cycles邐Latency邋=邋3邋cycles逡逑m邐?邐?邐邐邐?逡逑Loop邋Latency邋=邋6邋cycles邐Loop邋Latency邋=邋4邋cycles逡逑圖2-2邐優(yōu)化技術(shù)不例逡逑如圖2-2所示,在沒(méi)有用/o%;7扣///7//7g優(yōu)化時(shí),兩個(gè)RD操作之間需要經(jīng)過(guò)逡逑12逡逑
邐Oj^imizer邐Backend邋?逡逑圖2-5傳統(tǒng)編譯器架構(gòu)逡逑其中前端(Frontend)主要包括詞法分析、語(yǔ)法分析、語(yǔ)義分析以及生成中間逡逑代碼。優(yōu)化器(Optmiizer)主要是指中間代碼優(yōu)化。后端(Backend)主要指生逡逑成機(jī)器碼。逡逑而LLVM邋(Low邋Level邋Virtual邋Machine)的主要架構(gòu)如下所示:逡逑r邐Clang邋0/0??/0句C邐UVM邐y邋A逡逑^ronftnd邐^\s邐f邐KS6邋Baek_d逡逑Fortran-*.邋Hvm^ccFronsena邋—|邐^邋PowerPC^Back*^邋PowetPC逡逑HasKefi邋^邐OHC邋fr0r\mm邐'邐、邐^邐AHM逡逑avM邋m邐U.VMIR逡逑圖2-6邋LLVM架構(gòu)逡逑14逡逑
【相似文獻(xiàn)】
相關(guān)碩士學(xué)位論文 前3條
1 李世清;針對(duì)CPU-FPGA異構(gòu)多核片上系統(tǒng)的自動(dòng)化數(shù)據(jù)布局研究[D];山東大學(xué);2019年
2 鄭凌;基于CPU-FPGA的異構(gòu)多核系統(tǒng)設(shè)計(jì)及并行編程模型研究[D];西安電子科技大學(xué);2014年
3 楊慧德;層疊式多CPU-FPGA微服務(wù)器體系架構(gòu)的研究與實(shí)現(xiàn)[D];東南大學(xué);2017年
本文編號(hào):2762269
本文鏈接:http://sikaile.net/kejilunwen/jisuanjikexuelunwen/2762269.html
最近更新
教材專(zhuān)著