1. 程式人生 > >ARM——三級流水線結構,以及PC指標

ARM——三級流水線結構,以及PC指標

    首先科普幾個概念:

    MIPS——Million instruction Per Second 每秒多少百萬條指令,比如0.9MIPS,表示每秒90萬條指令。

    MIPS/MHz表示CPU在1MHz的執行速度下可以執行多少個MIPS,比如0.9MIPS/MHz表示如果CPU執行在1MHz的頻率下,每秒可執行90萬條指令.

    這兩個概念常用作描述ARM類的CPU執行速度,比如STM32F103ZET6的引數是1.25 DMips/MHZ,CPU的最高頻率為72MHz,也就是說CPU滿負荷執行時,速度為 72*1.25 = 90MIPS,也就是1秒可執行9000萬條執行,非常非常快。

    ARM7處理器使用了3級流水線來增加處理器指令流的速度,其細節如下圖所示:

   

    分別為:取指令、譯碼、執行。

    所以處理時實際上是這樣的:ARM正在執行第1條指令的同時,就對第2條指令進行譯碼,並將第3條指令從儲存區中取出,這個可以理解為CPU有2隻手,大腦在執行(EXECUTE)動作時,一隻手已經對下一條指令進行譯碼,同時另一隻手已經在取第三條指令了。這樣源源不斷的,讓大腦可以一直處於執行狀態。

    ARM7三級流水線示例:

    

    從上圖可以看到第一條指令:

add r0,r1,#5
    在執行第一條指令的時候,其實PC已經自動指向了第3條指令,或者說PC總是指向當前指令地址再加2條指令的地址。 
cmp r2,#3

    處理器處於ARM狀態時,每條指令為4個位元組,所以PC的值為正在執行的指令地址加2*4=8個位元組,即:

PC值 = 當前程式執行位置 + 8位元組