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

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

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

FPGA中流水線的原因和方式

科技觀察員 ? 來源:allaboutcircuits ? 作者:Sneha HL ? 2022-05-07 16:51 ? 次閱讀

本文解釋了流水線及其對 FPGA 的影響,即延遲、吞吐量、工作頻率的變化和資源利用率。

對FPGA(現(xiàn)場可編程門陣列)進(jìn)行編程是一個定制其資源以實現(xiàn)特定邏輯功能的過程。這涉及使用 FPGA 的基本構(gòu)建塊(如可配置邏輯塊(CLB)、專用多路復(fù)用器等)對程序指令進(jìn)行建模,以滿足數(shù)字系統(tǒng)的要求。

在設(shè)計過程中,要考慮的一個重要標(biāo)準(zhǔn)是系統(tǒng)固有的時序問題,以及用戶規(guī)定的任何約束??梢詭椭O(shè)計人員實現(xiàn)這一目標(biāo)的一種設(shè)計機制是流水線。

什么是流水線?

流水線是一種能夠并行執(zhí)行程序指令的過程。您可以在下面看到流水線處理器架構(gòu)的可視化表示。

pYYBAGJ2MwWAHXu-AAC7Qyoezgk454.jpg

圖 1.

流水線處理器架構(gòu)的可視化表示。每個方塊對應(yīng)一條指令。正方形使用不同顏色傳達(dá)了指令相互獨立的事實。圖片由

Colin ML Burnett

[

CC-BY-SA-3.0

] 提供。

在 FPGA 中,這是通過以特定方式排列多個數(shù)據(jù)處理塊來實現(xiàn)的。為此,我們首先將整個邏輯電路分成幾個小部分,然后使用寄存器(觸發(fā)器)將它們分開。

讓我們通過一個例子來分析一下FPGA設(shè)計流水線化的模式。

一個例子

讓我們看一下在四個輸入數(shù)組上進(jìn)行三個乘法和一個加法的系統(tǒng)。因此,我們的輸出y i將等于 ( a i × b i × c i ) + d i。

非流水線設(shè)計

想到創(chuàng)建這樣一個系統(tǒng)的第一個設(shè)計是乘法器,然后是加法器,如圖 2a 所示。

poYBAGJ2MwqASgxoAAAgpIr2n7g915.jpg

圖 2a。

非流水線 FPGA 設(shè)計示例。圖片由 Sneha HL 創(chuàng)建

在這里,我們期望操作序列是a i和b i數(shù)據(jù)乘以乘數(shù) M 1,然后是其乘積與c i乘以乘數(shù) M 2 ,最后將結(jié)果乘積與d i相加加法器 A 1。

然而,當(dāng)系統(tǒng)設(shè)計為同步時,在第一個時鐘滴答時,只有乘法器 M1 可以在其輸出端產(chǎn)生有效數(shù)據(jù) ( a 1 × b 1 )。這是因為,此時,與 M 2和 A 1不同,只有 M 1在其輸入引腳處具有有效數(shù)據(jù)(a 1和b 1 ) 。

在第二個時鐘節(jié)拍中,M 1和 M 2的輸入引腳上都會有有效數(shù)據(jù)。但是,現(xiàn)在我們需要確保只有 M 2運行,而 M 1保持其輸出不變。這是因為,此時,如果 M 1運行,則其輸出線變?yōu)?( a 2 × b 2 ) 而不是其預(yù)期值 ( a 1 × b 1 ),從而導(dǎo)致錯誤的 M 2輸出 ( a 2 × b 2 × c 1 ) 而不是 ( a 1 ×b 1 × c 1 )。

當(dāng)時鐘第三次滴答作響時,所有三個組件都會有有效輸入:M 1、M 2和 A 1。盡管如此,我們只希望加法器能夠運行,因為我們期望輸出為y 1 = ( a 1 × b 1 × c 1 + d 1 )。這意味著系統(tǒng)的第一個輸出將在第三個時鐘滴答之后可用。

接下來,隨著第四個時鐘滴答的到來,M 1可以對下一組數(shù)據(jù)進(jìn)行操作:a 2和b 2。 但此時,M 2和 A 1預(yù)計空閑。這之后必須在第五個時鐘節(jié)拍激活 M 2 -只有M 2 - 在第六個時鐘節(jié)拍激活 A 1 -只有A 1。這確保了我們的下一個輸出, y 2 = ( a 2 × b 2 × c 2 + d 2)。

當(dāng)組件遵循類似的激勵模式時,我們可以預(yù)期下一個輸出發(fā)生在時鐘節(jié)拍 9、12、15 等處(圖 2b)。

Figure2b.jpeg

圖 2b。

流水線設(shè)計

現(xiàn)在,假設(shè)我們在輸入(R 1到 R 4)、M 1和 M 2之間(分別為 R 5和 R 8)以及沿直接輸入路徑(R 6、R 7、和 R 9 ),如圖 3a 所示。

Fig3a.jpg

圖 3a。

流水線 FPGA 設(shè)計示例。Sneha HL 創(chuàng)建的圖像和表格

這里,在第一個時鐘滴答聲中,有效輸入僅出現(xiàn)在寄存器 R 1到 R 4(分別為 a 1、b 1、c 1和d 1)和乘法器 M 1(a 1和b 1)。結(jié)果,只有這些才能產(chǎn)生有效的輸出。此外,一旦 M 1產(chǎn)生它的輸出,它就會被傳遞到寄存器 R 5并存儲在其中。

在第二個時鐘滴答聲中,存儲在寄存器 R 5和 R 6(a 1 × b 1和c 1)中的值顯示為 M 2的輸入,這使其能夠?qū)⑵漭敵龀尸F(xiàn)為a 1 × b 1 × c 1,而R 4 ( d 1 ) 的輸出被轉(zhuǎn)移到寄存器R 7。同時,即使是第二組數(shù)據(jù)(a 2、b 2、c 2和d 2) 進(jìn)入系統(tǒng)并出現(xiàn)在 R 1到 R 4的輸出端。

在這種情況下,允許 M 1對其輸入進(jìn)行操作,以使其輸出線從a 1 × b 1變?yōu)閍 2 × b 2,這與非流水線設(shè)計的情況不同。這是因為,在本設(shè)計中,M 1輸出的任何變化都不會影響 M 2的輸出。這是因為確保 M 2正確功能所需的數(shù)據(jù)在第一個時鐘節(jié)拍期間已經(jīng)鎖存在寄存器 R 5中(并且即使在第二個時鐘節(jié)拍時也保持不受干擾)。

這意味著寄存器 R 5的插入使 M 1和 M 2在功能上獨立,因此它們都可以同時對不同的數(shù)據(jù)集進(jìn)行操作。

接下來,當(dāng)時鐘第三次滴答作響時,寄存器R 8和R 9的輸出(( a 1 × b 1 × c 1 )和d 1 )作為輸入傳遞給加法器A 1。結(jié)果,我們得到第一個輸出y 1 = (( a 1 × b 1 × c 1 ) + d 1 )。盡管如此,在同一時鐘滴答聲中,M 1和 M 2將可以自由操作 ( a 3 , b 3) 和 ( a 2 , b 2 , c 2 )。這是可行的,因為存在將塊M 1與M 2隔離的寄存器R 5和將乘法器M 2與加法器A 1隔離的R 8。

因此,在第三個時鐘滴答處,我們甚至可以分別從 M 1和 M 2得到 ( a 3 × b 3 ) 和 ( a 2 × b 2 × c 2 ) ,除了y 1。

現(xiàn)在,當(dāng)?shù)谒膫€時鐘滴答到達(dá)時,加法器 A 1對其輸入進(jìn)行運算以產(chǎn)生第二個輸出,y 2 = (( a 2 × b 2 × c 2 ) + d 2 )。此外,M 1的輸出從 ( a 3 × b 3 ) 變?yōu)?( a 4 × b 4 ),而 M 2的輸出從 ( a 2 × b 2 × c 2 ) 變?yōu)?( a 3 × b3 × c 3 )。

在遵循相同的操作模式時,我們可以預(yù)期從那時起每個時鐘滴答都會出現(xiàn)一個輸出數(shù)據(jù)(圖 3b),這與非流水線設(shè)計的情況不同,在非流水線設(shè)計的情況下,我們必須等待三個時鐘周期才能獲得每個輸出數(shù)據(jù)(圖 2b)。

poYBAGJ2MyKAMx8nAAC0HhjgCc8615.jpg

流水線的后果


潛伏

在所示示例中,流水線設(shè)計顯示為從第三個時鐘周期開始為每個時鐘節(jié)拍產(chǎn)生一個輸出。這是因為每個輸入必須經(jīng)過三個寄存器(構(gòu)成流水線深度),同時在到達(dá)輸出之前進(jìn)行處理。類似地,如果我們有一個深度為n的管道,那么有效輸出僅從第n個時鐘滴答開始在每個時鐘周期出現(xiàn)一個。

這種與第一個有效輸出出現(xiàn)之前丟失的時鐘周期數(shù)相關(guān)的延遲稱為延遲。流水線階段的數(shù)量越多,與之相關(guān)的延遲就越大。

增加工作時鐘頻率

圖 2a 所示的非流水線設(shè)計每三個時鐘周期產(chǎn)生一個輸出。也就是說,如果我們有一個周期為 1 ns 的時鐘,那么輸入需要 3 ns (3 × 1 ns) 來處理并顯示為輸出。

然后這條最長的數(shù)據(jù)路徑將成為關(guān)鍵路徑,它決定了我們設(shè)計的最小工作時鐘頻率。換言之,所設(shè)計系統(tǒng)的頻率必須不大于 (1/3 ns) = 333.33 MHz,以確保令人滿意的操作。

在流水線設(shè)計中,一旦流水線填滿,每個時鐘滴答都會產(chǎn)生一個輸出。因此我們的工作時鐘頻率與定義的時鐘頻率相同(此處為 1/1ns = 1000 MHz)。

這些數(shù)字清楚地表明,與非流水線設(shè)計相比,流水線設(shè)計大大增加了操作頻率。

吞吐量增加

流水線設(shè)計每個時鐘周期產(chǎn)生一個輸出(一旦克服延遲),無論設(shè)計中包含的流水線級數(shù)如何。因此,通過設(shè)計流水線系統(tǒng),我們可以提高 FPGA 的吞吐量。

更好地利用邏輯資源

在流水線中,我們使用寄存器來存儲設(shè)計各個階段的結(jié)果。這些組件增加了設(shè)計使用的邏輯資源,使其在硬件方面非常龐大。

結(jié)論

流水線化設(shè)計的行為非常詳盡。您需要在適當(dāng)?shù)臅r刻將整個系統(tǒng)劃分為各個階段,以確保最佳性能。盡管如此,投入其中的辛勤工作與其在設(shè)計執(zhí)行時所呈現(xiàn)的優(yōu)勢相當(dāng)。

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

    關(guān)注

    1624

    文章

    21538

    瀏覽量

    600458
  • 現(xiàn)場可編程門陣列

    關(guān)注

    1

    文章

    19

    瀏覽量

    4712
收藏 人收藏

    評論

    相關(guān)推薦

    關(guān)于fpga流水線的理解

    如何理解fpga流水線
    發(fā)表于 08-15 11:43

    請教verilog中流水線技術(shù)的用途?

    [table=98%][tr][td]看到很多資料里說“利用流水線的設(shè)計方法,可大大提高系統(tǒng)的工作速度?!边@是一個教材里很常用的例程:(1)非流水線實現(xiàn)方式module adder_8bits
    發(fā)表于 09-26 23:29

    FPGA中的流水線設(shè)計

    `流水線設(shè)計前言:本文從四部分對流水線設(shè)計進(jìn)行分析,具體如下:第一部分什么是流水線第二部分什么時候用流水線設(shè)計第三部分使用流水線的優(yōu)缺點第四
    發(fā)表于 10-26 14:38

    流水線寄存器問題

    圖中的DFG(Data Flow Graph)節(jié)點已經(jīng)標(biāo)出了傳輸延遲,求該電路中流水線寄存器的最佳放置位置?求問大神解答這個題
    發(fā)表于 11-20 11:02

    FPGA重要設(shè)計思想及工程應(yīng)用之流水線設(shè)

    FPGA重要設(shè)計思想及工程應(yīng)用之流水線設(shè) 流水線設(shè)計是高速電路設(shè)計中的一 個常用設(shè)計手段。如果某個設(shè)計的處理流程分為若干步驟,而且整個數(shù)據(jù)處理 流程分
    發(fā)表于 02-09 11:02 ?52次下載

    什么是流水線技術(shù)

    什么是流水線技術(shù) 流水線技術(shù)
    發(fā)表于 02-04 10:21 ?3902次閱讀

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

    流水線中的相關(guān)培訓(xùn)教程[1]  學(xué)習(xí)目標(biāo)     理解流水線中相關(guān)的分類及定義;
    發(fā)表于 04-13 15:56 ?1016次閱讀

    電鍍流水線的PLC控制

    電鍍流水線的PLC控制電鍍流水線的PLC控制電鍍流水線的PLC控制
    發(fā)表于 02-17 17:13 ?36次下載

    FPGA流水線練習(xí)5:設(shè)計思路

    流水線的工作方式就象工業(yè)生產(chǎn)上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然后將一條X86指令分成5—6步后再由這些電路單元分別執(zhí)行,這樣就能實現(xiàn)在一個
    的頭像 發(fā)表于 11-29 07:06 ?2533次閱讀

    FPGA流水線練習(xí)(3):設(shè)計思路

    流水線的平面設(shè)計應(yīng)當(dāng)保證零件的運輸路線最短,生產(chǎn)工人操作方便,輔助服務(wù)部門工作便利,最有效地利用生產(chǎn)面積,并考慮流水線安裝之間的相互銜接。為滿足這些要求,在流水線平面布置時應(yīng)考慮流水線
    的頭像 發(fā)表于 11-28 07:07 ?2284次閱讀

    FPGA之為什么要進(jìn)行流水線的設(shè)計

    流水線又稱為裝配線,一種工業(yè)上的生產(chǎn)方式,指每一個生產(chǎn)單位只專注處理某一個片段的工作。以提高工作效率及產(chǎn)量;按照流水線的輸送方式大體可以分為:皮帶
    的頭像 發(fā)表于 11-28 07:04 ?3528次閱讀

    各種流水線特點及常見流水線設(shè)計方式

    按照流水線的輸送方式大體可以分為:皮帶流水裝配線、板鏈線、倍速鏈、插件線、網(wǎng)帶線、懸掛線及滾筒流水線這七類流水線。
    的頭像 發(fā)表于 07-05 11:12 ?7144次閱讀
    各種<b class='flag-5'>流水線</b>特點及常見<b class='flag-5'>流水線</b>設(shè)計<b class='flag-5'>方式</b>

    如何選擇合適的LED生產(chǎn)流水線輸送方式

    LED生產(chǎn)流水線輸送形式分為平面直線傳輸流水線、各種角度平面轉(zhuǎn)彎傳輸流水線、斜面上傳流水線、斜面下傳流水線這四種輸送
    發(fā)表于 08-06 11:53 ?978次閱讀

    嵌入式_流水線

    流水線一、定義流水線是指在程序執(zhí)行時多條指令重疊進(jìn)行操作的一種準(zhǔn)并行處理實現(xiàn)技術(shù)。各種部件同時處理是針對不同指令而言的,他們可同時為多條指令的不同部分進(jìn)行工作。? 把一個重復(fù)的過程分解為若干個子過程
    發(fā)表于 10-20 20:51 ?6次下載
    嵌入式_<b class='flag-5'>流水線</b>

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

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