什么是ARM流水線
流水線(Pipelining)是 RISC(精簡指令集)處理器用來執(zhí)行指令的機制,通過獲取指令來加速執(zhí)行,而其他指令同時被解碼和執(zhí)行。這反過來又允許內存系統(tǒng)和處理器連續(xù)工作。每個 ARM 系列的流水線設計都不同。
流水線是一種設計技術或過程,它在提高計算機和微控制器處理器中的數(shù)據(jù)處理效率方面發(fā)揮著重要作用。通過將處理器保持在一個連續(xù)的獲取、解碼和執(zhí)行過程中,稱為(FETCH-DECODE-EXECUTE(F&E) 循環(huán))。
由于 RISC 強調編譯器的復雜性,ARM 器件需要流水線。每一級流水相當于1個周期,即n個階段=n個周期。
圖1 三級流水線示意圖
如圖1,F(xiàn)etch (取指)從內存中加載一條指令;Decode(譯碼)識別要執(zhí)行的指令;Execute (執(zhí)行)處理指令并將結果write back(寫回)到寄存器;通過重疊執(zhí)行不同指令的上述不同階段,提高了執(zhí)行速度。
圖2 F&E循環(huán)示意圖
ARM 流水線特性
ARM 流水線在完全通過execution stage之前不會處理該指令。在執(zhí)行階段,PC總是指向指令地址+8字節(jié);當處理器處于thumb state時,PC 總是指向指令地址 + 4 個字節(jié);在執(zhí)行分支指令或通過直接修改 PC 進行分支時,會導致 ARM 內核刷新它的流水線;即使已引發(fā)中斷,執(zhí)行階段的指令也會完成其執(zhí)行。
ARM7系列
如圖1所示,它有 3 級流水線。它可以在3個周期內完成它的過程。它具有基本的 FETCH-DECODE-EXECUTE(F&E) 循環(huán)。這就是為什么 ARM 7 的吞吐量低于其其他家族成員的原因。它處理 32 位數(shù)據(jù)。
ARM 9系列
圖3 五級流水線示意圖
ARM 9 中的流水線與 ARM 7 類似,但ARM 9有 5 個階段,完成該過程需要5個周期。Fetch(取值)-它將從內存中獲取指令。Decode(解碼) - 它解碼在第一個周期中獲取的指令。ALU(arithmetic logic unit,即算術邏輯單元) - 它執(zhí)行(Execute)在前一階段已解碼的指令。LS1(Memory) 加載/存儲由加載或存儲指令指定的數(shù)據(jù)。LS2(Write) 提取(零或符號)擴展由字節(jié)或半字加載指令加載的數(shù)據(jù)。由于階段和效率的增加,吞吐量比 ARM 7 高 10%-13%。ARM 9 的核心頻率略高于 ARM 7。
ARM 10系列
圖4 六級流水線示意圖
這是一個六級流水線。這又需要 6 個周期才能完成該過程。與 ARM 9 相同,但有一個issue階段,用于檢查指令是否準備好在以便當前階段解碼。它的吞吐量幾乎是 ARM 7 的兩倍。核心頻率高于ARM 9。流水線的階段數(shù)量可能會根據(jù)每個周期處理的指令集增加或減少(在大多數(shù)情況下,階段傾向于增加以提高效率)。
基本ARM微架構
圖5 某arm微架構示意圖
Barrel Shifter:Barrel Shifter(桶形移位器)是一種數(shù)字電路,可以將數(shù)據(jù)字移位指定位數(shù),而無需使用任何時序邏輯,僅使用純組合邏輯,即它固有地提供二進制操作。
ALU:該單元執(zhí)行各種算術和邏輯運算。
Address register and increment:寄存器存儲地址,增量器遞增相同以指向下一條指令。
Data register:數(shù)據(jù)寄存器,當數(shù)據(jù)寫入內存或從內存中讀取時,它用作一個緩沖區(qū)來存儲數(shù)據(jù)。
Instruction Decoder:顧名思義,它對指令進行解碼并相應地發(fā)出控制信號。因此,指令解碼器與發(fā)出控制信號的控制邏輯相關聯(lián)。指令通過數(shù)據(jù)總線(在底部)獲取并提供給指令解碼和控制單元。該單元對指令進行解碼,,然后指令由 ALU、乘法器和桶形移位器使用寄存器組中的寄存器執(zhí)行。
CPI和MIPS
CPI( Clock cycle Per Instruction)表示每條計算機指令執(zhí)行所需的時鐘周期,有時簡稱為指令的平均周期數(shù)??梢杂脕肀硎?a class="article-link" target="_blank" href="/baike/1552575.html">CPU的性能。對CPU來說,在一個時鐘周期內,CPU僅完成一個最基本的動作。時鐘脈沖是計算機的基本工作脈沖,控制著計算機的工作節(jié)奏。時鐘頻率越高,時鐘周期就越短,工作速度也就越快。
MIPS是每秒鐘處理了多少百萬條指令,計算公式:MIPS=主頻/CPI * 10的6次方。
從流水線的角度理解建立時間
建立時間的含義:一個時鐘周期內,一級流水的指令執(zhí)行必須完成;否則可能會出現(xiàn)數(shù)據(jù)冒險,因為不同指令的流水的不同stage是重疊執(zhí)行的。
圖6 流水線的重疊執(zhí)行示意圖
部分參考文獻
《Pipelining in ARM》,作者:jiganrahul01;
《Explain pipelining in ARM processor》,作者:ques10;