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