嵌入式_流水線

流水線

一、定義

流水線是指在程序執行時多條指令重疊進行操作的一種準並行處理實現技術。各種部件同時處理是針對不同指令而言的,他們可同時爲多條指令的不同部分進行工作。
• 把一個重複的過程分解爲若干個子過程,每個子過程由專門的功能部件來實現。
• 把多個處理過程在時間上錯開,依次通過各功能段,這樣,每個子過程就可以與其
他的子過程並行進行。
流水線中的每個子過程及其功能部件稱爲流水線的級或段,段與段相互連接形成流水線。流水線的段數稱爲流水線的深度

二、表示

流水線的表示方法:時空圖
• 時空圖從時間和空間兩個方面描述了流水線的工作過程。時空圖中,橫座標
代表時間,縱座標代表流水線的各個段。
• 4段指令流水線的時空圖
在這裏插入圖片描述

三、特點

流水線把一個處理過程分解爲若干個子過程(段),每個子過程由一個專門的功能
部件來實現。
• 流水線中各段的時間應儘可能相等,否則將引起流水線堵塞。時間長的段將成爲流
水線的瓶頸。
• 流水線每一個功能部件的後面都要有一個緩衝寄存器(鎖存器),稱爲流水寄存器。
• 作用:在相鄰的兩段之間傳送數據,以保證提供後面要用到的數據,並把各段的處理工作相互隔離。
• 流水技術適合於大量重複的時序過程,只有在輸入端不斷地提供任務,才能充分發揮流水線的效率。
• 流水線並不會縮短單條指令的執行時間(由於添加了緩衝寄存器,一般會增加執行時間),而是提高指令的吞吐率

四、性能指標

吞吐率:在單位時間內流水線所完成的任務數量或輸出結果的數量。
TP =n/Tk
n:任務數
Tk:處理完成n個任務所用的時間
在這裏插入圖片描述

五、流水線冒險

流水線技術之所以能提高性能 究其本質是利用了時間上的並行性,那它讓原本應該先後執行的指令在時間上一定程度的並行起來,然而這也會帶來一些衝突和矛盾,進而可能引發錯誤。
• 冒險(Hazard):在流水線中我們希望當前每個時鐘週期都有一條指令進入流水線可以執行。但在某些情況下,下一條指令無法按照預期開始執行,這種情況就被稱爲冒險。
冒險分爲三種:
• 結構冒險:如果一條指令需要的硬件部件還在爲之前的指令工作,而無法爲這條指令提供服務,那就導致了結構冒險。(這裏結構是指硬件當中的某個部件)
• 數據冒險:如果一條指令需要某數據而該數據正在被之前的指令操作,那這條指令就無法執行,就導致了數據冒險
• 控制冒險:如果現在要執行哪條指令,是由之前指令的運行結果決定,而現在那條之前指令的結果還沒產生,就導致了控制冒險(如:條件分支)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章