<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > FPGA并行計算抽象接口的設計與實(shí)現

FPGA并行計算抽象接口的設計與實(shí)現

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

本文引用地址:http://dyxdggzs.com/article/201706/348688.htm

1 設計摘要

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

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

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

傳統的CPU都屬于A(yíng)SIC器件,存在設計過(guò)程復雜,靈活性不高,不可重配置的不足,而作為可重構計算的體系結構代表,FPGA在可重配置和并行運算方面具有獨特的優(yōu)勢。

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

(1)并行化加速的實(shí)現無(wú)需使用新的編程語(yǔ)言和編譯器;

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

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

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

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

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

3 系統軟件流程

圖 1 單次調用接口的軟件流程

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

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

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

4 系統框架

圖 3 系統框架

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

5 系統功能

5.1 程序功能

(1)讀寫(xiě)FPGA芯片數據

(2)緩存請求與結果數據

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

(4)異常處理

5.2 FPGA功能

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

(2)根據請求類(lèi)型調度相應的計算模塊,并將請求的數據提供給該模塊

(3)接收計算模塊回應的計算結果,再通過(guò)PCI Express總線(xiàn)接口的將數據回送給PC

5.3 FPGA PCI Express總線(xiàn)接口IP核功能

(1)通過(guò)PCI Express總線(xiàn)讀寫(xiě)數據



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>