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

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

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

一文詳細(xì)了解流水線設(shè)計(jì)

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

第一 什么是流水線

流水線設(shè)計(jì)就是將組合邏輯系統(tǒng)地分割,并在各個(gè)部分(分級(jí))之間插入寄存器,并暫存中間數(shù)據(jù)的方法。目的是將一個(gè)大操作分解成若干的小操作,每一步小操作的時(shí)間較小,所以能提高頻率,各小操作能并行執(zhí)行,所以能提高數(shù)據(jù)吞吐率(提高處理速度)。

第二 什么時(shí)候用流水線設(shè)計(jì)

使用流水線一般是時(shí)序比較緊張,對(duì)電路工作頻率較高的時(shí)候。典型情況如下:

1)功能模塊之間的流水線,用乒乓 buffer 來交互數(shù)據(jù)。代價(jià)是增加了 memory 的數(shù)量,但是和獲得的巨大性能提升相比,可以忽略不計(jì)。

2) I/O 瓶頸,比如某個(gè)運(yùn)算需要輸入 8 個(gè)數(shù)據(jù),而 memroy 只能同時(shí)提供 2 個(gè)數(shù)據(jù),如果通過適當(dāng)劃分運(yùn)算步驟,使用流水線反而會(huì)減少面積。

3)片內(nèi) sram 的讀操作,因?yàn)?sram 的讀操作本身就是兩極流水線,除非下一步操作依賴讀結(jié)果,否則使用流水線是自然而然的事情。

4)組合邏輯太長(zhǎng),比如(a+b)*c,那么在加法和乘法之間插入寄存器是比較穩(wěn)妥的做法。

第三 使用流水線的優(yōu)缺點(diǎn)

1)優(yōu)點(diǎn):流水線縮短了在一個(gè)時(shí)鐘周期內(nèi)給的那個(gè)信號(hào)必須通過的通路長(zhǎng)度,增加了數(shù)據(jù)吞吐量,從而可以提高時(shí)鐘頻率,但也導(dǎo)致了數(shù)據(jù)的延時(shí)。舉例如下:例如:一個(gè) 2 級(jí)組合邏輯,假定每級(jí)延遲相同為 Tpd,

1.無流水線的總延遲就是 2Tpd,可以在一個(gè)時(shí)鐘周期完成,但是時(shí)鐘周期受限制在 2Tpd;

2.流水線:

每一級(jí)加入寄存器(延遲為 Tco)后,單級(jí)的延遲為 Tpd+Tco,每級(jí)消耗一個(gè)時(shí)鐘周期,流水線需要 2 個(gè)時(shí)鐘周期來獲得第一個(gè)計(jì)算結(jié)果,稱 為首次延遲,它要 2*( Tpd+Tco),但是執(zhí)行重復(fù)操作時(shí),只要一個(gè)時(shí)鐘周期來獲得最后的計(jì)算結(jié)果,稱為吞吐延遲( Tpd+Tco)。可見只要 Tco 小于 Tpd,流水線就可以提高速度。 特別需要說明的是,流水線并不減小單次操作的時(shí)間,減小的是整個(gè)數(shù)據(jù)的操作時(shí)間,請(qǐng)大家認(rèn)真體會(huì)。

2) 缺點(diǎn):功耗增加,面積增加,硬件復(fù)雜度增加,特別對(duì)于復(fù)雜邏輯如 cpu 的流水線而言,流水越深,發(fā)生需要 hold 流水線或 reset 流水線的情況時(shí),時(shí)間損失越大。 所以使用流水線并非有利無害,大家需權(quán)衡考慮。

第四 一個(gè) 8bit 流水線加法器的小例子

非流水線:

module add8(

a,

b,

c);

input [7:0] a;

input [7:0] b;

output [8:0] c;

assign c[8:0] = {1'd0, a} + {1'd0, b};

endmodule

采用兩級(jí)流水線:第一級(jí)低 4bit,第二級(jí)高 4bit,所以第一個(gè)輸出需要 2 個(gè)時(shí)鐘周期有效,后面的數(shù)據(jù)都是 1 個(gè)周期

之后有效。

module adder8_2(

clk,

cin,

cina,

cinb,

sum,

cout);

input clk;

input cin;

input [7:0] cina;

input [7:0] cinb;

output [7:0] sum;

output cout;

reg cout;

reg cout1; //插入的寄存器

reg [3 :0 ] sum1 ; //插入的寄存器

reg [7 :0 ] sum;

reg [3:0] cina_reg;

reg [3:0] cinb_reg;//插入的寄存器

always @(posedge clk) //第一級(jí)流水

begin

{cout1 , sum1} <= cina[3:0] + cinb [3:0] + cin ;

end

always @(posedge clk)

begin

cina_reg <= cina[7:4];

cinb_reg <= cinb[7:4];

end

always @(posedge clk) //第二級(jí)流水

begin

{cout ,sum[7:0]} <= {{1'b0,cina_reg[3:0]} + {1'b0,cinb_reg[3:0]} + cout1 ,sum1[3:0]} ;

end

endmodule

這里講到的流水線,主要是一種硬件設(shè)計(jì)的算法,如第一條中表述的流水線設(shè)計(jì)就是將組合邏輯系統(tǒng)地分割,并在各個(gè)部分(分級(jí))之間插入寄存器,并暫存中間數(shù)據(jù)的方法。

針對(duì)處理器中的流水線結(jié)構(gòu)。比如,比如 5—6 個(gè)不同功能的電路單元組成一條指令處理流水線,然后將一條指令分成 5—6 步后再由這些電路單元分別執(zhí)行,這樣就能實(shí)現(xiàn)在一個(gè) CPU 時(shí)鐘周期完成一條指令,因此提高 CPU 的運(yùn)算速度。 一般的 CPU 中,每條整數(shù)流水線都分為四級(jí)流水, 即指令預(yù)取、 譯碼、 執(zhí)行、 寫回結(jié)果,openrisc采用的是 5 級(jí)整數(shù)流水線。

當(dāng)然它們的核心思想都是利用并行執(zhí)行提高效率。

總結(jié)一下,流水線就是插入寄存器,以面積換取速度。

原文標(biāo)題:FPGA學(xué)習(xí)-流水線設(shè)計(jì)Pipeline Design

文章出處:【微信公眾號(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)注

    1620

    文章

    21510

    瀏覽量

    598879
  • 流水線
    +關(guān)注

    關(guān)注

    0

    文章

    112

    瀏覽量

    25464

原文標(biāo)題:FPGA學(xué)習(xí)-流水線設(shè)計(jì)Pipeline Design

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    周期精確的流水線仿真模型

    使用軟件仿真硬件流水線是很耗時(shí)又復(fù)雜的工作,仿真過程中由于流水線的沖突而導(dǎo)致運(yùn)行速度緩慢。本文通過對(duì)嵌入式處理器的流水線, 指令集, 設(shè)備控制器等內(nèi)部結(jié)構(gòu)的分析和
    發(fā)表于 12-31 11:30 ?9次下載

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

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

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

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

    電鍍流水線的PLC控制

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

    裝配流水線控制系統(tǒng)設(shè)計(jì)

    裝配流水線控制系統(tǒng)設(shè)計(jì)
    發(fā)表于 12-17 15:26 ?14次下載

    讀懂處理器流水線

    本文將討論處理器的個(gè)重要的基礎(chǔ)知識(shí):流水線。熟悉計(jì)算機(jī)體系結(jié)構(gòu)的讀者定知道,言及處理器微架構(gòu),幾乎必談其流水線。處理器的流水線結(jié)構(gòu)是處理
    發(fā)表于 04-08 08:16 ?2.2w次閱讀
    <b class='flag-5'>一</b><b class='flag-5'>文</b>讀懂處理器<b class='flag-5'>流水線</b>

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

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

    各種流水線特點(diǎn)及常見流水線設(shè)計(jì)方式

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

    滾筒輸流水線故障排除方法

    在工程建造中,滾筒流水線演著重要的角色。在些工程建造過程中,經(jīng)常看到滾筒流水線的身影。在工業(yè)不斷發(fā)展下的今天,滾筒流水線日益增長(zhǎng),走向多元化。滾筒
    發(fā)表于 07-08 09:32 ?1759次閱讀

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

    LED生產(chǎn)流水線輸送形式分為平面直線傳輸流水線、各種角度平面轉(zhuǎn)彎傳輸流水線、斜面上傳流水線、斜面下傳流水線這四種輸送方式,企業(yè)也是可以根據(jù)L
    發(fā)表于 08-06 11:53 ?947次閱讀

    嵌入式_流水線

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

    CPU流水線的問題

    1989 年推出的 i486 處理器引入了五級(jí)流水線。這時(shí),在 CPU 中不再僅運(yùn)行條指令,每級(jí)流水線在同時(shí)刻都運(yùn)行著不同的指令。這個(gè)
    的頭像 發(fā)表于 09-22 10:04 ?1828次閱讀

    了解流水線型ADC

    流水線型ADC是采樣速率從幾Msps到100Msps+的首選架構(gòu)。設(shè)計(jì)復(fù)雜性僅隨位數(shù)線性(非指數(shù))增加,因此同時(shí)為轉(zhuǎn)換器提供高速、高分辨率和低功耗。流水線ADC在廣泛的應(yīng)用中非常有用,尤其是在數(shù)
    的頭像 發(fā)表于 02-25 09:28 ?4433次閱讀
    <b class='flag-5'>了解</b><b class='flag-5'>流水線</b>型ADC

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

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