新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM體系結(jié)構(gòu)之:流水線

ARM體系結(jié)構(gòu)之:流水線

作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://butianyuan.cn/article/257092.htm

2.2

2.2.1 的概念與原理

處理器按照一系列步驟來執(zhí)行每一條指令。典型的步驟如下:

① 從存儲器讀取指令(fetch);

② 譯碼以鑒別它是屬于哪一條指令(dec);

③ 從指令中提取指令的操作數(shù)(這些操作數(shù)往往存在于寄存器中)(reg);

④ 將操作數(shù)進(jìn)行組合以得到結(jié)果或存儲器地址(ALU);

⑤ 如果需要,則訪問存儲器以存儲數(shù)據(jù)(mem);

⑥ 將結(jié)果寫回到寄存器堆(res)。

并不是所有的指令都需要上述每一個步驟,但是,多數(shù)指令需要其中的多個步驟。這些步驟往往使用不同的硬件功能,例如,ALU可能只在第4步中用到。因此,如果一條指令不是在前一條指令結(jié)束之前就開始,那么在每一步驟內(nèi)處理器只有少部分的硬件在使用。

有一種方法可以明顯改善硬件資源的使用率和處理器的吞吐量,這就是當(dāng)前一條指令結(jié)束之前就開始執(zhí)行下一條指令,即通常所說的(Pipeline)技術(shù)。流水線是RISC處理器執(zhí)行指令時采用的機(jī)制。使用流水線,可在取下一條指令的同時譯碼和執(zhí)行其他指令,從而加快執(zhí)行的速度??梢园蚜魉€看作是汽車生產(chǎn)線,每個階段只完成專門的處理器任務(wù)。

采用上述操作順序,處理器可以這樣來組織:當(dāng)一條指令剛剛執(zhí)行完步驟①并轉(zhuǎn)向步驟②時,下一條指令就開始執(zhí)行步驟①。圖2.1說明了這個過程。從原理上說,這樣的流水線應(yīng)該比沒有重疊的指令執(zhí)行快6倍,但由于硬件結(jié)構(gòu)本身的一些限制,實(shí)際情況會比理想狀態(tài)差一些。

2.2.2 流水線的分類

從Acorn Computer公司在1983~1985年間開發(fā)的第一個3µm器件,到公司在1990~1995年間開發(fā)的6和7,ARM整數(shù)處理器核的組織結(jié)構(gòu)變化很小,這些處理器都是采用3級流水線,而這一時期CMOS工藝的發(fā)展,幾乎將特征尺寸減少了一個數(shù)量級。因此,核的性能提高很快,但基本的操作原理大部分沒有變化。

圖2.1 流水線的指令執(zhí)行過程

從1995年以來,ARM公司推出了幾個新的ARM核。它們采用5級流水線和哈佛架構(gòu),獲得了顯著的高性能。例如,ARM9增加了存儲器訪問段和回寫段,這使得ARM9的處理能力可達(dá)到平均1.1 Dhrystone1 MISP/MHz,與ARM7相比,指令吞吐量提高了約13%。

注意

在許多高性能處理器內(nèi)部,一級Cache一般都設(shè)置有兩個,其中,一個是指令Cache,另一個是數(shù)據(jù)Cache。這樣可以減少取指令和讀操作數(shù)的訪問沖突,這種結(jié)構(gòu)被稱為哈佛架構(gòu)。

把主存儲器分成兩個獨(dú)立編址的存儲器,一個專門存放指令,稱為指令存儲器,簡稱指存;另一個專門存放操作數(shù),稱為數(shù)據(jù)存儲器,簡稱數(shù)存。兩個存儲器可以同時訪問,這樣就解決了取指令和讀操作數(shù)的沖突。如果在此基礎(chǔ)上規(guī)定在執(zhí)行指令階段產(chǎn)生的運(yùn)算結(jié)果只寫到通用寄存器中,不寫到主存,那么取指令、分析指令和執(zhí)行指令就可以同時進(jìn)行。

ARM10更是把流水線增加到6級。ARM10的平均處理能力達(dá)到1.3 Dhrystone MISP/MHz,與ARM7相比,指令吞吐量提高了約34%。

注意

雖然ARM9和ARM10的流水線不同,但它們都使用了與ARM7相同的流水線執(zhí)行機(jī)制,因此ARM7上的代碼也可以在ARM9和ARM10上運(yùn)行。

存儲器相關(guān)文章:存儲器原理



上一頁 1 2 3 4 下一頁

關(guān)鍵詞: 流水線 指令譯碼器 ARM

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉