在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA中并行計(jì)算的流水線計(jì)算和交替計(jì)算

FPGA設(shè)計(jì)論壇 ? 來源:FPGA設(shè)計(jì)論壇 ? 作者:FPGA設(shè)計(jì)論壇 ? 2022-04-12 10:05 ? 次閱讀

用過FPGA的人應(yīng)該都知道,在FPGA中,邏輯是并行地運(yùn)行的,各個(gè)狀態(tài)機(jī)同時(shí)都在工作,狀態(tài)機(jī)之間可能會(huì)有信號(hào)交互,也可能毫無關(guān)系、各管各地工作。

這就給了我們一個(gè)靈感:如果我們要做的計(jì)算(例如級(jí)數(shù)求和)的規(guī)模很大,按順序一步一步算的話,其時(shí)間開銷是我們所無法忍受的,那么,我們是否可以想辦法利用FPGA的并行特性,通過讓計(jì)算并行地執(zhí)行,來減小時(shí)間開銷(或者說提高計(jì)算速度)呢?

基于這個(gè)靈感,就讓我們看看,F(xiàn)PGA中并行計(jì)算的常規(guī)方法吧。

流水線計(jì)算

現(xiàn)在,我們要在FPGA中做這樣一個(gè)計(jì)算:

B = A × imes× 2 + 1

能用的計(jì)算單元為兩輸入加法器和兩輸入乘法器

為了保證時(shí)序,一個(gè)時(shí)鐘周期內(nèi)加法器只能執(zhí)行一次加法

為了保證時(shí)序,一個(gè)時(shí)鐘周期內(nèi)乘法器只能執(zhí)行一次乘法

對(duì)于上述要求完成的計(jì)算,看上去,在一個(gè)時(shí)鐘周期內(nèi)既完成乘法又完成加法是不可能的了。然而,如果我們這么做呢:

1.設(shè)計(jì)一個(gè)模塊,模塊的輸入為時(shí)鐘和參數(shù)A,輸出為結(jié)果B。

2.該模塊在每個(gè)時(shí)鐘周期同時(shí)做"C=A×2"的計(jì)算和"B=C+1"的計(jì)算,其中,C為寄存器

仿真該模塊,就可以發(fā)現(xiàn):

542c19a2-b9c6-11ec-aa7f-dac502259ad0.png

從上表可以看到:

雖然從輸入A到輸出B,相差了兩個(gè)時(shí)鐘周期,但是,每個(gè)時(shí)鐘周期輸出的B,都和兩個(gè)時(shí)鐘周期前輸入的A相對(duì)應(yīng)。即:等效地來看,相當(dāng)于每個(gè)時(shí)鐘周期,模塊都完成了一次"B = A × imes× 2 + 1"的計(jì)算!

哇塞,好神奇!這簡(jiǎn)直就是:

明明一次性無法完成的計(jì)算,不知怎么搞的,卻等效地"被一次性地完成了"

嗯,這種搞法,就是傳說中的"流水線計(jì)算",這里為其給出了一個(gè)不拘泥于FPGA中的情形的、更加普適的定義:

將一個(gè)計(jì)算拆分成N級(jí)(N ≥ geq≥ 2),每一級(jí)的平均數(shù)據(jù)吞吐速率都相同,前(N-1)級(jí)的計(jì)算結(jié)果在輸入下一級(jí)之前都經(jīng)過了緩存,這種方法稱為"流水線計(jì)算"

注:"平均數(shù)據(jù)吞吐速率"指的是:在單位時(shí)間內(nèi),參數(shù)平均能夠輸入多少次,以及計(jì)算結(jié)果平均能夠輸出多少次。

流水線計(jì)算的結(jié)構(gòu)如下圖所示("一條龍"式的結(jié)構(gòu)):

543e41ae-b9c6-11ec-aa7f-dac502259ad0.png

分析定義可知:

正是由于"每一級(jí)的平均數(shù)據(jù)吞吐速率都相同",使得整個(gè)計(jì)算的平均數(shù)據(jù)吞吐速率相同,才讓輸出的結(jié)果看上去"像是被一次性地完成的"。

級(jí)間緩存在流水線計(jì)算中是必不可少的,它們起到了兩級(jí)間隔離的作用,使得"當(dāng)?shù)?n+1)級(jí)在處理第i ii個(gè)輸入對(duì)應(yīng)的計(jì)算時(shí),第n級(jí)已經(jīng)在處理第( i + 1 ) (i+1)(i+1)個(gè)輸入對(duì)應(yīng)的計(jì)算了"這種情況成為可能。增大級(jí)間緩存的延遲時(shí)間,會(huì)造成整個(gè)計(jì)算的延遲時(shí)間(即輸出和輸入之間的延遲時(shí)間)的加長(zhǎng)。

總的來說,流水線計(jì)算是個(gè)好東西,不過,實(shí)際使用時(shí),如果不留心的話,容易為級(jí)間緩存分配過長(zhǎng)的延遲時(shí)間,從而出現(xiàn)"整個(gè)計(jì)算的延遲時(shí)間長(zhǎng)"的問題,這一點(diǎn)需要注意。

分布式流水線計(jì)算

現(xiàn)在,我們要在FPGA中做這樣一個(gè)計(jì)算:

C = A × imes× 2 + B × imes× 3

能用的計(jì)算單元為兩輸入加法器和兩輸入乘法器

為了保證時(shí)序,一個(gè)時(shí)鐘周期內(nèi)加法器只能執(zhí)行一次加法

為了保證時(shí)序,一個(gè)時(shí)鐘周期內(nèi)乘法器只能執(zhí)行一次乘法

對(duì)于上述要求完成的計(jì)算,看上去,在一個(gè)時(shí)鐘周期內(nèi)既完成乘法又完成加法是不可能的了。然而,如果我們這么做呢:

1.設(shè)計(jì)一個(gè)模塊,模塊的輸入為時(shí)鐘和參數(shù)A、參數(shù)B,輸出為結(jié)果C。

2.該模塊在每個(gè)時(shí)鐘周期同時(shí)做"D=A×2"的計(jì)算、"E=B×3"的計(jì)算和"C=D+E"的計(jì)算,其中,D、E為寄存器。

仿真該模塊,就可以發(fā)現(xiàn):

5457be86-b9c6-11ec-aa7f-dac502259ad0.png

從上表可以看到:

等效地來看,相當(dāng)于每個(gè)時(shí)鐘周期,模塊都完成了一次"C = A × imes× 2 + B × imes× 3"的計(jì)算

這種做法明顯蘊(yùn)含了"流水線計(jì)算",不過又跟流水線計(jì)算的"一條龍"結(jié)構(gòu)似乎不同,這種做法的結(jié)構(gòu)是"樹形"的:

對(duì)于輸入的參數(shù)A和B,先是"你算你的,我算我的",分別輸出并緩存D和E。然后拿D和E計(jì)算得到結(jié)果C。

546ad8b8-b9c6-11ec-aa7f-dac502259ad0.png

對(duì)于這種做法,我稱之為"分布式流水線計(jì)算",這個(gè)名稱借鑒了計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域的術(shù)語"分布式計(jì)算"。使用分布式流水線計(jì)算的必要前提是:

計(jì)算所需的輸入?yún)?shù)不止一個(gè)

分布式流水線計(jì)算可以看成是"在輸入?yún)?shù)不止一個(gè)的情況下,展露出計(jì)算細(xì)節(jié)的流水線計(jì)算",或者說,從本質(zhì)上來講,分布式流水線計(jì)算屬于流水線計(jì)算,不要因?yàn)榭瓷先ナ菢湫谓Y(jié)構(gòu)就幫它"自立門戶"了。不信?沒事,我將上面的"計(jì)算C = A × imes× 2 + B × imes× 3"的模塊的結(jié)構(gòu)重新畫一下你就信了:

548443d4-b9c6-11ec-aa7f-dac502259ad0.png

既然說"分布式流水線計(jì)算屬于流水線計(jì)算",那為什么還要專門在這里講分布式流水線計(jì)算呢?原因是這樣的:分布式流水線計(jì)算展露了計(jì)算細(xì)節(jié),更加有助于邏輯開發(fā)人員弄清楚計(jì)算過程中的延時(shí)情況,防止在不知不覺間,增大了整個(gè)計(jì)算的延遲時(shí)間。比如,對(duì)于上面的"C = A × imes× 2 + B × imes× 3",如果不加注意的話,可能會(huì)變成這樣:

5496ef02-b9c6-11ec-aa7f-dac502259ad0.png

從上圖就能看出來,明明兩級(jí)就能完成的計(jì)算,一不留神就變成了三級(jí),整個(gè)計(jì)算的延遲時(shí)間變長(zhǎng)了。不過需要說明的是,"整個(gè)計(jì)算的延遲時(shí)間"并不是衡量"一個(gè)并行計(jì)算結(jié)構(gòu)的優(yōu)劣"的標(biāo)準(zhǔn)。比如,在做并行卷積計(jì)算時(shí),采取流水線的結(jié)構(gòu)可以節(jié)省計(jì)算資源(但是整個(gè)計(jì)算的延遲時(shí)間長(zhǎng)),而采取多相的結(jié)構(gòu)可以縮短整個(gè)計(jì)算的延遲時(shí)間(但是消耗更多的計(jì)算資源,雖然其實(shí)也多不了太多)。

這里展示一個(gè)更加復(fù)雜的分布式流水線計(jì)算的案例:

54afe660-b9c6-11ec-aa7f-dac502259ad0.png

交替計(jì)算

現(xiàn)在,我們要在FPGA中做這樣一個(gè)計(jì)算:

C = A + B

能用的計(jì)算單元為兩輸入加法器

為了保證時(shí)序,一個(gè)時(shí)鐘周期內(nèi)加法器只能執(zhí)行一次加法,時(shí)鐘頻率最高為100MHz

可以用寄存器來存儲(chǔ)數(shù)據(jù)

為了保證時(shí)序,寄存器最高只能工作在300MHz的時(shí)鐘頻率下

乍一看,這情況讓人有點(diǎn)迷茫:表達(dá)式都簡(jiǎn)單成這樣了,還需要玩并行計(jì)算?別急,我們的問題是這樣的:

A和B都是在300MHz時(shí)鐘的驅(qū)動(dòng)下刷新的,在這種情況下,如何才能完成"C = A + B"的計(jì)算?

呵呵,加法器最高工作頻率為100MHz,而數(shù)據(jù)的刷新頻率都飆到300MHz去了,沒法玩了好吧!咳咳,其實(shí)還是可以玩的??紤]一下這么做:

設(shè)計(jì)一個(gè)模塊,模塊的輸入為300MHz時(shí)鐘和參數(shù)A、參數(shù)B,輸出為結(jié)果C(C為寄存器)。

在300MHz時(shí)鐘的驅(qū)動(dòng)下:

在第(i+1)個(gè)時(shí)鐘周期將A、B的值分別賦給A1、B1寄存器,

在第(i+2)個(gè)時(shí)鐘周期將A、B的值分別賦給A2、B2寄存器,

在第(i+3)個(gè)時(shí)鐘周期將A、B的值分別賦給A3、B3寄存器,

在第(i+4)個(gè)時(shí)鐘周期將A、B的值分別賦給A1、B1寄存器,

在第(i+5)個(gè)時(shí)鐘周期將A、B的值分別賦給A2、B2寄存器,

模塊中,將300MHz的時(shí)鐘三分頻后得到100MHz時(shí)鐘:clk100m_1,clk100m_2,clk100m_3。

三個(gè)100MHz時(shí)鐘之間的相位都相差(360°/3=)120°。

在100MHz時(shí)鐘的驅(qū)動(dòng)下(假定分配的100MHz時(shí)鐘都能滿足所需的建立保持時(shí)間需求):

使用加法器,在clk100m_1的每個(gè)時(shí)鐘周期計(jì)算C1 = A1 + B1,其中,C1為寄存器。

使用加法器,在clk100m_2的每個(gè)時(shí)鐘周期計(jì)算C2 = A2 + B2,其中,C2為寄存器。

使用加法器,在clk100m_3的每個(gè)時(shí)鐘周期計(jì)算C3 = A3 + B3,其中,C3為寄存器。

在300MHz時(shí)鐘的驅(qū)動(dòng)下:

在第(k+1)個(gè)時(shí)鐘周期將C1的值賦給C,(其中,k=i+4)

在第(k+2)個(gè)時(shí)鐘周期將C2的值賦給C,

在第(k+3)個(gè)時(shí)鐘周期將C3的值賦給C,

在第(k+4)個(gè)時(shí)鐘周期將C1的值賦給C,

在第(k+5)個(gè)時(shí)鐘周期將C2的值賦給C,

上述模塊的時(shí)序如下圖所示:

54c6f7ba-b9c6-11ec-aa7f-dac502259ad0.png

從上圖可以看到:

加法器都工作在100MHz的時(shí)鐘下

A、B、C的刷新頻率都是300MHz

可見,我們利用3個(gè)最高工作頻率100MHz的加法器,等效地實(shí)現(xiàn)了1個(gè)最高工作頻率300MHz的加法器。

這里所采用的方法通常被稱為是"乒乓計(jì)算"(或者"乒乓操作"),不過,竊以為這個(gè)名稱不夠形象,因此,為這種方法取了個(gè)新名稱:“交替計(jì)算”。交替計(jì)算的基本思想是:

將計(jì)算單元復(fù)制若干份,交替地將輸入的參數(shù)分配給各個(gè)計(jì)算單元,并且交替地將各個(gè)計(jì)算單元的計(jì)算結(jié)果輸出,從而實(shí)現(xiàn)"以N倍的計(jì)算單元換取N倍的計(jì)算速度"。

交替計(jì)算的基本結(jié)構(gòu)如下圖所示:

54dc91c4-b9c6-11ec-aa7f-dac502259ad0.png

混合型并行計(jì)算

在實(shí)際的FPGA并行計(jì)算中,常常將流水線計(jì)算、交替計(jì)算混合使用,來滿足計(jì)算需求。嗯,這就是所謂的"混合型并行計(jì)算",沒毛病。

用一句話將本論述歸納總結(jié)一下,那就是:

FPGA中并行計(jì)算的基本常規(guī)方法為:流水線計(jì)算和交替計(jì)算。

原文標(biāo)題:FPGA學(xué)習(xí)-FPGA中并行計(jì)算的常規(guī)方法

文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1644

    文章

    21989

    瀏覽量

    615228
  • 并行計(jì)算
    +關(guān)注

    關(guān)注

    0

    文章

    29

    瀏覽量

    9593

原文標(biāo)題:FPGA學(xué)習(xí)-FPGA中并行計(jì)算的常規(guī)方法

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于FPGA并行計(jì)算的圖像處理案例

    圖像處理算法在各種場(chǎng)景中都有廣泛應(yīng)用,借助于FPGA并行計(jì)算的優(yōu)勢(shì)可以將算法性能有效提升,但為了提升系統(tǒng)整體性能,僅僅提升某一部分的性能是不夠的,一個(gè)好的方法是在FPGA內(nèi)實(shí)現(xiàn)全部視頻輸入輸出接口
    的頭像 發(fā)表于 11-04 12:07 ?3909次閱讀

    arm系統(tǒng)并行計(jì)算優(yōu)化

    fpga的硬件換成我們自己的arm設(shè)備。不過經(jīng)過研究這種設(shè)想不可行。個(gè)人看法,也許不對(duì)哦。?。。?!arm是一款多核心,單進(jìn)程處理器,目前為止arm處理器都不支持多線程。所以多線程概念不能將并行計(jì)算優(yōu)化
    發(fā)表于 12-30 14:33

    FPGA流水線設(shè)計(jì)

    Tpd+Tco,每級(jí)消耗一個(gè)時(shí)鐘周期,流水線需要 2 個(gè)時(shí)鐘周期來獲得第一個(gè)計(jì)算結(jié)果,稱 為首次延遲,它要 2*( Tpd+Tco),但是執(zhí)行重復(fù)操作時(shí),只要一個(gè)時(shí)鐘周期來獲得最后的計(jì)算結(jié)果,稱為吞吐延遲
    發(fā)表于 10-26 14:38

    什么是異構(gòu)并行計(jì)算

    先了解什么是異構(gòu)并行計(jì)算同構(gòu)計(jì)算是使用相同類型指令集和體系架構(gòu)的計(jì)算單元組成系統(tǒng)的計(jì)算方式。而異構(gòu)計(jì)算主要是指使用不同類型指令集和體系架構(gòu)的
    發(fā)表于 07-19 08:27

    現(xiàn)代RISC流水線技術(shù)

    流水線技術(shù)是提高系統(tǒng)吞吐率的一項(xiàng)強(qiáng)大的實(shí)現(xiàn)技術(shù),并且不需要大量重復(fù)設(shè)置硬件。20世界60年代早期的一些高端機(jī)器第一次采用了流水線技術(shù)。第一個(gè)采用指令流水線的機(jī)器是IBM7030(又稱
    發(fā)表于 03-01 17:52

    基于流水線技術(shù)的并行高效FIR濾波器設(shè)計(jì)

    基于流水線技術(shù)的并行高效FIR濾波器設(shè)計(jì) 基于流水線技術(shù),利用FPGA進(jìn)行并行可重復(fù)配置高精度的FIR濾波器設(shè)計(jì)。使用VHDL可以很方便地
    發(fā)表于 03-28 15:12 ?897次閱讀
    基于<b class='flag-5'>流水線</b>技術(shù)的<b class='flag-5'>并行</b>高效FIR濾波器設(shè)計(jì)

    流水線的相關(guān)培訓(xùn)教程[3]

    流水線的相關(guān)培訓(xùn)教程[3] (1) 寫后讀相關(guān)(RAW:Read After Write) (命名規(guī)則) :j 的執(zhí)行要用到 i 的計(jì)算結(jié)果,當(dāng)它們?cè)?b class='flag-5'>流水線
    發(fā)表于 04-13 16:02 ?909次閱讀

    并行計(jì)算和嵌入式系統(tǒng)實(shí)踐教程

    Linux微機(jī)應(yīng)用十分普遍. 高性能并行計(jì)算機(jī)數(shù)量多. 并行計(jì)算,我國(guó)有自己的理論. 對(duì)并行計(jì)算的基本原理,算法,程序設(shè)計(jì)與實(shí)現(xiàn),優(yōu)化,成熟軟件應(yīng)用的推廣不夠. 制約并行計(jì)算在研究和工
    發(fā)表于 05-09 15:54 ?48次下載

    并行計(jì)算和分布式計(jì)算的區(qū)別和聯(lián)系

    并行計(jì)算或稱平行計(jì)算是相對(duì)于串行計(jì)算來說的。所謂并行計(jì)算可分為時(shí)間上的并行和空間上的并行。 時(shí)間
    發(fā)表于 12-08 09:59 ?3.8w次閱讀

    基于云計(jì)算的電磁問題并行計(jì)算方法

    針對(duì)電工裝備性能分析與優(yōu)化所需的易用高性能計(jì)算問題,使用云計(jì)算技術(shù)搭建了彈性集群,實(shí)現(xiàn)了典型電磁問題在彈性集群并行計(jì)算。使用虛擬化技術(shù)將計(jì)算
    發(fā)表于 03-20 13:56 ?1次下載
    基于云<b class='flag-5'>計(jì)算</b>的電磁問題<b class='flag-5'>并行計(jì)算</b>方法

    并行計(jì)算的黃金時(shí)代到了?

    “未來幾十年將進(jìn)入并行計(jì)算黃金時(shí)代,并行計(jì)算軟件和算法的開發(fā)將從技術(shù)驅(qū)動(dòng)轉(zhuǎn)向應(yīng)用驅(qū)動(dòng),需要計(jì)算與應(yīng)用等不同領(lǐng)域的專家共同合作開發(fā)。”中國(guó)工程院院士李國(guó)杰日前表示。
    的頭像 發(fā)表于 04-03 17:18 ?2481次閱讀

    淺析云計(jì)算并行計(jì)算

    并行計(jì)算可以劃分成時(shí)間并行和空間并行。時(shí)間并行流水線技術(shù),空間并行使用多個(gè)處理器執(zhí)行并發(fā)
    的頭像 發(fā)表于 05-03 12:01 ?4948次閱讀
    淺析云<b class='flag-5'>計(jì)算</b>和<b class='flag-5'>并行計(jì)算</b>

    CRC校驗(yàn)碼并行計(jì)算FPGA實(shí)現(xiàn)

    了按字節(jié)并行計(jì)算 CRC 校驗(yàn)碼的 原理 ,并以常見的 CRC - 16 和 CRC - CCITT 為例 ,用 VHDL 語言進(jìn)行了可綜合設(shè)計(jì)。結(jié)果表明這種實(shí)現(xiàn)方法在速度和占 用資源方面優(yōu)于常見的設(shè)計(jì) ,適合在 FPGA 實(shí)
    發(fā)表于 03-28 09:34 ?30次下載
    CRC校驗(yàn)碼<b class='flag-5'>并行計(jì)算</b>的<b class='flag-5'>FPGA</b>實(shí)現(xiàn)

    什么是流水線 Jenkins的流水線詳解

    jenkins 有 2 種流水線分為聲明式流水線與腳本化流水線,腳本化流水線是 jenkins 舊版本使用的流水線腳本,新版本 Jenkin
    發(fā)表于 05-17 16:57 ?1275次閱讀

    Google GPipe為代表的流水線并行范式

    但在實(shí)際應(yīng)用流水線并行并不特別流行,主要原因是模型能否均勻切割,影響了整體計(jì)算效率,這就需要算法工程師做手調(diào)。因此,今天我們來介紹一種應(yīng)用最廣泛,最易于理解的
    的頭像 發(fā)表于 05-26 14:40 ?1283次閱讀
    Google GPipe為代表的<b class='flag-5'>流水線</b><b class='flag-5'>并行</b>范式
    主站蜘蛛池模板: 毛片啪啪| 日韩欧美亚洲综合久久影院d3 | 国产农村一一级特黄毛片 | 四虎成人免费网站在线 | 一区不卡在线观看 | 69pao强力打造免费高速 | 中国美女一级黄色片 | 亚洲邪恶天堂影院在线观看 | 成年女人毛片免费视频 | 天天影视欧美综合在线观看 | 日本福利小视频 | 国产黄色视屏 | 操操操干干干 | 亚洲电影一区二区 | 26uuu欧美性色 | 阿v视频在线观看免费播放 爱爱视频天天干 | 久久伊人操 | 四虎最新紧急更新地址 | 日日爱网址 | 中文字幕视频二区 | 天堂网免费 | 日本欧美一区二区三区视频 | 国产午夜精品理论片 | 人人艹人人草 | 亚洲va中文字幕无码 | 男人性天堂 | 丁香月婷婷| yellow中文字幕久久网 | 日本黄色www | 亚洲婷婷综合网 | 精品国产一区二区三区成人 | 亚洲视频五区 | 午夜精品久久久久久久第一页 | baoyu168成人免费视频 | 日韩免费精品一级毛片 | 在线观看不卡一区 | 亚洲五月综合网色九月色 | 成年人的毛片 | 亚洲综合一区二区三区 | 午夜影院免费视频 | 久久久久久久久久久9精品视频 |