<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA并行計(jì)算抽象接口的設(shè)計(jì)與實(shí)現(xiàn)

          FPGA并行計(jì)算抽象接口的設(shè)計(jì)與實(shí)現(xiàn)

          作者: 時(shí)間:2017-06-04 來源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201706/348688.htm

          1 設(shè)計(jì)摘要

          芯片具有可編程、可重配置、可并行計(jì)算的特點(diǎn)。隨著摩爾定律的發(fā)展,計(jì)算科學(xué)已經(jīng)步入并行化的時(shí)代,具有并行處理能力的CPU/GPU隨即面世。而芯片憑借其并行計(jì)算的能力,已經(jīng)可以輕松將科學(xué)計(jì)算、邏輯運(yùn)算、ASIC設(shè)計(jì)等應(yīng)用并行化,為了能將該特性普及化,本設(shè)計(jì)為基于C語言開發(fā)的程序開發(fā)了一個(gè)的并行計(jì)算接口,凡是以C語言設(shè)計(jì)的程序,均可通過調(diào)用本設(shè)計(jì)的接口,把復(fù)雜的算法、數(shù)值處理交給FPGA芯片完成,在不需要程序員學(xué)習(xí)FPGA知識以及使用FPGA開發(fā)工具的前提下,大大地減輕CPU的負(fù)荷以及從根本上提高了程序的執(zhí)行效率,是FPGA并行化應(yīng)用的一次全新嘗試。

          2 系統(tǒng)原理與技術(shù)特點(diǎn)

          系統(tǒng)以基于PC機(jī)的Windows操作系統(tǒng)為基礎(chǔ),將FPGA芯片作為一個(gè)PCI 設(shè)備,通過PCI 與PC機(jī)的CPU通信,在Windows下開發(fā)該P(yáng)CI Express設(shè)備的C程序驅(qū)動(dòng),提供函數(shù)接口供C程序調(diào)用。Windows下的C程序通過該驅(qū)動(dòng)接口向PCI 發(fā)送信號,接入PCI Express總線的FPGA芯片收到該信號后,根據(jù)信號的內(nèi)容調(diào)用相應(yīng)的片內(nèi)模塊進(jìn)行相應(yīng)的計(jì)算,依靠其并行化的特點(diǎn),可以將大多數(shù)的算法與數(shù)值處理并行化,最后再將計(jì)算結(jié)果通過PCI Express總線返回給運(yùn)行于PC機(jī)的C程序,從而實(shí)現(xiàn)C程序的并行化,此過程相當(dāng)于使用外圍的PCI Express設(shè)備為PC機(jī)的程序提供并行化的硬件加速服務(wù)。

          傳統(tǒng)的CPU都屬于ASIC器件,存在設(shè)計(jì)過程復(fù)雜,靈活性不高,不可重配置的不足,而作為可重構(gòu)計(jì)算的體系結(jié)構(gòu)代表,F(xiàn)PGA在可重配置和并行運(yùn)算方面具有獨(dú)特的優(yōu)勢。

          系統(tǒng)的技術(shù)特點(diǎn)有以下幾點(diǎn):

          (1)并行化加速的實(shí)現(xiàn)無需使用新的編程語言和編譯器;

          (2)利用FPGA的可編程特性以及豐富的資源,可實(shí)現(xiàn)多種類型計(jì)算的并行化,因此該硬件加速設(shè)備可適用于多個(gè)場合;

          (3)可具有跨操作系統(tǒng)特性。只需開發(fā)相應(yīng)操作系統(tǒng)(如Linux)下的PCI Express設(shè)備的驅(qū)動(dòng),便可在其他操作系統(tǒng)下使用FPGA的加速功能。

          (4) PCI Express總線采用串行的全雙工傳輸,提供高速的數(shù)據(jù)傳輸率。PCI Express規(guī)格從1條通道連接到32條通道連接,有非常強(qiáng)的伸縮性,以滿足不同系統(tǒng)設(shè)備對數(shù)據(jù)傳輸帶寬不同的需求。例如,PCI Express X1規(guī)格支持雙向數(shù)據(jù)傳輸,每向數(shù)據(jù)傳輸帶寬250MB/s,PCI Express X1已經(jīng)可以滿足主流聲效芯片、網(wǎng)卡芯片和存儲設(shè)備對數(shù)據(jù)傳輸帶寬的需求,而速度更快的PCI Express X16,即16條點(diǎn)對點(diǎn)數(shù)據(jù)傳輸通道連接來取代傳統(tǒng)的AGP總線,適合于需要大量復(fù)雜數(shù)學(xué)計(jì)算的應(yīng)用。PCI Express X16也支持雙向數(shù)據(jù)傳輸,每向數(shù)據(jù)傳輸帶寬高達(dá)4GB/s,雙向數(shù)據(jù)傳輸帶寬有8GB/s之多,因此,選擇PCI Express作為傳輸總線,不會存在系統(tǒng)瓶頸問題。

          (5)PCI總線的資源占用情況

          (6)用戶在編寫程序時(shí),只需要include本文所提供的.h文件,便可調(diào)用.h頭文件中提供的并行計(jì)算函數(shù)接口,同時(shí)將源代碼與本文提供的對應(yīng)C源文件文件共同編譯,即可通過調(diào)用PCI總線接口驅(qū)動(dòng)來完成所需的計(jì)算。

          3 系統(tǒng)軟件流程

          圖 1 單次調(diào)用接口的軟件流程

          上圖所示為C程序一次調(diào)用并行計(jì)算接口的過程,C程序與FPGA芯片的通信通過PCI Express總線來完成。FPGA芯片根據(jù)接收到的信號來判斷應(yīng)該采用哪個(gè)獨(dú)立模塊來進(jìn)行請求的計(jì)算。

          圖 2 多進(jìn)程C程序調(diào)用并行接口的流程

          上圖所示為多進(jìn)程程序在調(diào)用該并行接口時(shí)的過程。關(guān)鍵在于在向FPGA芯片發(fā)送請求信息時(shí)附帶發(fā)出該請求的進(jìn)程ID號,這樣在接收總線發(fā)回的數(shù)據(jù)時(shí)才能根據(jù)進(jìn)程號對號接收。

          4 系統(tǒng)框架

          圖 3 系統(tǒng)框架

          上圖所示為系統(tǒng)的組成結(jié)構(gòu)。PC端主要有Windows下的(采用WinAPI編寫)、PCI Express物理總線;FPGA端主要有PCI Express總線、以及具體各種算法的Verilog HDL模塊。

          5 系統(tǒng)功能

          5.1 程序功能

          (1)讀寫FPGA芯片數(shù)據(jù)

          (2)緩存請求與結(jié)果數(shù)據(jù)

          (3)調(diào)度多進(jìn)程請求與分配多個(gè)進(jìn)程的計(jì)算結(jié)果

          (4)異常處理

          5.2 FPGA功能

          (1)相應(yīng)PCI總線請求,判斷需要調(diào)用哪一個(gè)算法模塊。

          (2)根據(jù)請求類型調(diào)度相應(yīng)的計(jì)算模塊,并將請求的數(shù)據(jù)提供給該模塊

          (3)接收計(jì)算模塊回應(yīng)的計(jì)算結(jié)果,再通過PCI Express總線接口的將數(shù)據(jù)回送給PC

          5.3 FPGA PCI Express總線接口IP核功能

          (1)通過PCI Express總線讀寫數(shù)據(jù)



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();