導(dǎo)讀:按照流水線的各個流水段之間是否有反饋信號,可以把流水線分為線性流水線和非線性流水線兩類。
線性流水線(LinearPipelining)是將流水線的各段逐個串接起來。輸入數(shù)據(jù)從流水線的一端進入,從另一端輸出。數(shù)據(jù)在流水線中的各個流水段流過時,每一個流水段都流過一次,而且僅僅流過一次。
在多功能流水線中,按照在同一時間內(nèi)是否能夠連接成多種方式,同時執(zhí)行多種功能,可以把多功能流水線分為靜態(tài)流水線和動態(tài)流水線兩種。
所謂靜態(tài)流水線(StaticPipelining)是指在同一段時間內(nèi),多功能流水線中的各個流水段只能按照一種固定的方式連接,實現(xiàn)一種固定的功能。只有當(dāng)按照這種連接方式工作的所有任務(wù)都流出流水線之后,多功能流水線才能重新進行連接,以實現(xiàn)其它功能。
動態(tài)流水線(DynamicPipelining)是指在同一段時間內(nèi),多功能流水線中的各段可以按照不同的方式連接,同時執(zhí)行多種功能。當(dāng)然,同時實現(xiàn)多種連接發(fā)生是有條件的,即流水線中的各個功能部件之間不能發(fā)生沖突。
在靜態(tài)流水線中,只有程序中連續(xù)出現(xiàn)同一種運算時,流水線的效率才能得到充分的發(fā)揮。如果輸入到流水線中的是一串不同運算相互間隔的操作,則這條靜態(tài)流水線的效率就與順序執(zhí)行方式*一樣。而動態(tài)流水線則不同,它允許兩種運算在同一條流水線中同時執(zhí)行。
因此,在一般情況下,動態(tài)流水線的效率和功能部件的利用率要比靜態(tài)流水線高,但是,動態(tài)流水線的控制比靜態(tài)流水線要復(fù)雜得多。目前,在大多數(shù)處理機中均采用靜態(tài)流水線。
除了以上幾種流水線的分類方法之外,還可以從其它多種不同角度來劃分流水線。例如,按照不同的數(shù)據(jù)表示方式,可以把流水線分為標(biāo)量流水線和向量流水線兩種。標(biāo)量流水線一般用于標(biāo)量處理機中,而向量流水線主要用于向量計算機中。在本章中介紹的都是標(biāo)量流水線。
按照流水線輸出端流出的任務(wù)與流水線輸入端流入的任務(wù)的順序是否相同,可以把流水線分為順序流水線與亂序流水線兩種。亂序流水線在有的資料上又稱為無序流水線、錯序流水線或異步流水線等