日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pipeline 流水线设计

發布時間:2024/7/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pipeline 流水线设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

十大基本功之流水線設計

轉載自:http://www.socvista.com/??--- dancia)

本文參考了edacn上ytsun,ericflying,hover_edacn等人的精彩發言,向這些熱心的朋友致敬~~歡迎大家轉載,轉載的時候請注明http://www.socvista.com/??--- dancia
4 j5 P! F4 Q% @3 h* d0 Y8 A7 S' l, x
第一, 什么是流水線
0 }$ ?' q: r6 t9 U: t6 O. FSoC Vista -- 開源IP通吃島? ?? ?? ???流水線設計就是將組合邏輯系統地分割,并在各個部分(分級)之間插入寄存器,并暫存中間數據的方法。目的是將一個大操作分解成若干的小操作,每一步小操作的時間較小,所以能提高頻率,各小操作能并行執行,所以能提高數據吞吐率(提高處理速度)。% k$ y0 q5 D/ G* ^
SoC Vista -- 開源IP通吃島" m" O??g' L. s( l: P. o; ~
# p" y1 j; G$ @9 }+ l9 f3 d
第二,什么時候用流水線設計7 l( h; A$ T6 O1 Z# M6 ]3 X
? ???使用流水線一般是時序比較緊張,對電路工作頻率較高的時候。典型情況如下:
% q2 n, R8 U/ V1)功能模塊之間的流水線,用乒乓buffer來交互數據。代價是增加了memory的數量,但是和獲得的巨大性能提升相比,可以忽略不計。
5 u+ l3 m1 ]# p" Q1 Q
# G* I; z2 @0 c- e+ @% Z- f0 wSoC Vista -- 開源IP通吃島2)I/O瓶頸,比如某個運算需要輸入8個數據,而memroy只能同時提供2個數據,如果通過適當劃分運算步驟,使用流水線反而會減少面積。
8 f' B( C9 F; p# f4 w" J0 E
$ c$ E5 [( ^4 t, r5 X3)片內sram的讀操作,因為sram的讀操作本身就是兩極流水線,除非下一步操作依賴讀結果,否則使用流水線是自然而然的事情。
1 l8 a3 Y5 k- e. y; S+ ]www.socvista.comwww.socvista.com! W+ B0 T" ~8 b
4)組合邏輯太長,比如(a+b)*c,那么在加法和乘法之間插入寄存器是比較穩妥的做法。
, `9 G$ i1 k??H# U??BSoC Vista -- 開源IP通吃島
/ C! S" \* d; @) h, i第三, 使用流水線的優缺點:
" H2 s/ e+ M3 p, u% cSoC Vista -- 開源IP通吃島1)優點:流水線縮短了在一個時鐘周期內給的那個信號必須通過的通路長度,增加了數據吞吐量,從而可以提高時鐘頻率,但也導致了數據的延時。舉例如下:
$ l/ h; V2 U! T2 @- D6 DSoC Vista -- 開源IP通吃島? ?
" z8 ~( a# j9 c) G$ G1 T; f, s% U3 w? ?? ?例如:一個2級組合邏輯,假定每級延遲相同為Tpd,. Y9 a9 a) @7 C, S2 o0 x: f$ |
? ? 1.無流水線的總延遲就是2Tpd,可以在一個時鐘周期完成,但是時鐘周期受限制在2Tpd;
4 v0 I" j5 M5 b? ???2.流水線:" d" N7 d7 H- f! D4 R4 h; \
? ?? ?每一級加入寄存器(延遲為Tco)后,單級的延遲為Tpd+Tco,每級消耗一個時鐘周期,流水線需要2個時鐘周期來獲得第一個計算結果,稱為首次延 遲,它要2*(Tpd+Tco),但是執行重復操作時,只要一個時鐘周期來獲得最后的計算結果,稱為吞吐延遲(Tpd+Tco)。可見只要Tco小于 Tpd,流水線就可以提高速度。特別需要說明的是,流水線并不減小單次操作的時間,減小的是整個數據的操作時間,請大家認真體會
1 L; e' p8 d3 N" z
( i8 m1 |2 J* v3 ~??o6 o5 GSoC Vista -- 開源IP通吃島2) 缺點:( B/ d6 C' p3 ^0 ~" j: h
? ???功耗增加,面積增加,硬件復雜度增加,特別對于復雜邏輯如cpu的流水線而言而言,流水越深,發生需要hold 流水線或reset 流水線的情況時,時間損失越大。所以使用流水線并非有利無害,大家需權衡考慮。www.socvista.com* G1 c! N: S4 P??g- [??@

- k; _6 K2 N$ f7 x9 A: k5 S# [6 O% A
第四,一個8bit流水線加法器的小例子。
) G" C0 W: a) E! @8 T! W8 A??% o) Z1 F2 r7 [) Z
非流水線:
) p% t??h3 d$ k??awww.socvista.com
module add8(a, b, c);
; A* P3 m: L, [2 P6 W* ~3 ?? ? input??[7:0] a;
" W0 p3 M( ^6 B? ? input??[7:0] b;+ z6 D/ x0 V# g, T
? ?output [8:0] c;www.socvista.com; _# l) R7 ~??o; g+ r( ]5 F

! P1 j7 u# ]; b? ? assign? ?c = {1'b0, a} + {1'b0, b};
) j) o: H6 y7 o/ @" USoC Vista -- 開源IP通吃島endmodule( z) O, [2 \9 u- {

# P5 |' ?4 y/ V. j采用兩級流水線:第一級低4bit,第二級高4bit,所以第一個輸出需要2個時鐘周期有效,后面的數據都是1個周期之后有效。
9 c: ?! W4 V4 I' ]8 d+ v8 h$ w4 _www.socvista.com
& i% e4 E& Y, ?0 j3 X+ Dmodule adder8_2(cout,sum ,clk ,cina ,cinb ,cin);
, H- i) W4 ]9 [3 l1 D, m? ?output [7:0] sum;% ?2 q+ q0 F3 u( Q) D
? ?output cout ;0 z+ Q7 }" _9 G5 F% C; @
? ?input [7:0] cina ,cinb ;$ d/ M5 |0 j0 i+ F% e4 h$ Z
? ?input clk ,cin ;SoC Vista -- 開源IP通吃島& |& ?/ t3 N, d4 F
? ?reg cout ;- D! X3 s! y8 {; g$ G; @3 K& S, |
? ?reg cout1 ; 插入的寄存器
( m% b8 q% S" [8 {$ nwww.socvista.com? ?reg[3 :0 ]sum1 ; //插入的寄存器
1 E# y0 D$ r: k' |2 O/ K) L0 sSoC Vista -- 開源IP通吃島? ?reg[7 :0 ]sum;5 P3 c??V??O2 r, A
? ?reg[3:0] cina_reg,cinb_reg;//插入的寄存器, J6 I$ i% {* c& Q
? ?www.socvista.com! W' C) v$ z2 p
? ?always @(posedge clk)begin
. D% D. u/ R3 j# g3 E? ?? ? {cina_reg,cinb_reg} <= {cina[7:4],cinb[7:4]};# H5 s: V& Z$ _: M4 y# b9 K4 ~
? ?end' |) t2 ^( {5 A2 t6 u- n2 K
? ?
" R3 v( _# w& q* F9 J8 u? ?always @(posedge clk)??//第一級流水
! w9 i8 s9 O0 U& E0 P? ?beginwww.socvista.com, @8 B$ C/ u+ j! }??P
? ?? ?{cout1 , sum1} <= cina[3:0] + cinb [3:0] +cin ;
6 Y$ s# `; ~9 K' B6 A% J? ?end$ y8 r* e; t7 z# M
? ?always @(posedge clk)??//第二級流水. s3 F. w, X4 S. V( r, }' ~
? ?begin
$ H6 W6 X3 }7 U3 I. [0 Q$ z? ?? ?{cout ,sum} <= {{1'b0,cina_reg} + {1'b0,cinb_reg} + cout1 ,sum1} ;0 |& c* S. j2 H# }
? ?end9 M0 M9 J5 t/ I; V. O9 F# t
endmodule-----------------------------------------------------------------------------------------下圖是rtl級的電路圖------------------------------------------------------------------------------------------附件中是自己寫的測試程序,有興趣可以運行下,包括了傳統的組合電路和采用流水線的加法器。
/Files/zhangzhi/adder_pipeline.rar

轉載于:https://www.cnblogs.com/zhangzhi/archive/2009/09/19/1569881.html

總結

以上是生活随笔為你收集整理的pipeline 流水线设计的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。