ARM體系結(jié)構(gòu)之:流水線
2.2 流水線
2.2.1 流水線的概念與原理
處理器按照一系列步驟來執(zhí)行每一條指令。典型的步驟如下:
① 從存儲(chǔ)器讀取指令(fetch);
② 譯碼以鑒別它是屬于哪一條指令(dec);
③ 從指令中提取指令的操作數(shù)(這些操作數(shù)往往存在于寄存器中)(reg);
④ 將操作數(shù)進(jìn)行組合以得到結(jié)果或存儲(chǔ)器地址(ALU);
⑤ 如果需要,則訪問存儲(chǔ)器以存儲(chǔ)數(shù)據(jù)(mem);
⑥ 將結(jié)果寫回到寄存器堆(res)。
并不是所有的指令都需要上述每一個(gè)步驟,但是,多數(shù)指令需要其中的多個(gè)步驟。這些步驟往往使用不同的硬件功能,例如,ALU可能只在第4步中用到。因此,如果一條指令不是在前一條指令結(jié)束之前就開始,那么在每一步驟內(nèi)處理器只有少部分的硬件在使用。
有一種方法可以明顯改善硬件資源的使用率和處理器的吞吐量,這就是當(dāng)前一條指令結(jié)束之前就開始執(zhí)行下一條指令,即通常所說的流水線(Pipeline)技術(shù)。流水線是RISC處理器執(zhí)行指令時(shí)采用的機(jī)制。使用流水線,可在取下一條指令的同時(shí)譯碼和執(zhí)行其他指令,從而加快執(zhí)行的速度。可以把流水線看作是汽車生產(chǎn)線,每個(gè)階段只完成專門的處理器任務(wù)。
采用上述操作順序,處理器可以這樣來組織:當(dāng)一條指令剛剛執(zhí)行完步驟①并轉(zhuǎn)向步驟②時(shí),下一條指令就開始執(zhí)行步驟①。圖2.1說明了這個(gè)過程。從原理上說,這樣的流水線應(yīng)該比沒有重疊的指令執(zhí)行快6倍,但由于硬件結(jié)構(gòu)本身的一些限制,實(shí)際情況會(huì)比理想狀態(tài)差一些。
2.2.2 流水線的分類
從Acorn Computer公司在1983~1985年間開發(fā)的第一個(gè)3µm器件,到ARM公司在1990~1995年間開發(fā)的ARM6和ARM7,ARM整數(shù)處理器核的組織結(jié)構(gòu)變化很小,這些處理器都是采用3級(jí)流水線,而這一時(shí)期CMOS工藝的發(fā)展,幾乎將特征尺寸減少了一個(gè)數(shù)量級(jí)。因此,核的性能提高很快,但基本的操作原理大部分沒有變化。
圖2.1 流水線的指令執(zhí)行過程
從1995年以來,ARM公司推出了幾個(gè)新的ARM核。它們采用5級(jí)流水線和哈佛架構(gòu),獲得了顯著的高性能。例如,ARM9增加了存儲(chǔ)器訪問段和回寫段,這使得ARM9的處理能力可達(dá)到平均1.1 Dhrystone1 MISP/MHz,與ARM7相比,指令吞吐量提高了約13%。
注意 | 在許多高性能處理器內(nèi)部,一級(jí)Cache一般都設(shè)置有兩個(gè),其中,一個(gè)是指令Cache,另一個(gè)是數(shù)據(jù)Cache。這樣可以減少取指令和讀操作數(shù)的訪問沖突,這種結(jié)構(gòu)被稱為哈佛架構(gòu)。 把主存儲(chǔ)器分成兩個(gè)獨(dú)立編址的存儲(chǔ)器,一個(gè)專門存放指令,稱為指令存儲(chǔ)器,簡(jiǎn)稱指存;另一個(gè)專門存放操作數(shù),稱為數(shù)據(jù)存儲(chǔ)器,簡(jiǎn)稱數(shù)存。兩個(gè)存儲(chǔ)器可以同時(shí)訪問,這樣就解決了取指令和讀操作數(shù)的沖突。如果在此基礎(chǔ)上規(guī)定在執(zhí)行指令階段產(chǎn)生的運(yùn)算結(jié)果只寫到通用寄存器中,不寫到主存,那么取指令、分析指令和執(zhí)行指令就可以同時(shí)進(jìn)行。 |
ARM10更是把流水線增加到6級(jí)。ARM10的平均處理能力達(dá)到1.3 Dhrystone MISP/MHz,與ARM7相比,指令吞吐量提高了約34%。
注意 | 雖然ARM9和ARM10的流水線不同,但它們都使用了與ARM7相同的流水線執(zhí)行機(jī)制,因此ARM7上的代碼也可以在ARM9和ARM10上運(yùn)行。 |
存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理
評(píng)論