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

ARM9——五級流水線結構,以及PC指標

    ARM7是三級流水線,所以PC = 執行指令地址 + 8,這很好理解,但是在ARM9中,是五級流水線,

仍然是:PC = 執行指令地址 + 8,而不是 PC = 執行指令地址 + 16.

    這個理解顯然有些難度,首先看下ARM7和ARM9的流水線區別和聯絡:

    

    相比ARM7,ARM9採用了更高效的五級流水線設計,在取指令、譯碼、執行之後,又增加了LS1和LS2階段,LS1負責載入和儲存指令中制定的資料,LS2則負責提取、符號擴充套件,通過位元組或半字載入命令來載入資料,但是LS1和LS2僅對載入(LDR)和儲存命令(STR)有效,其他的指令是不需要執行這兩個階段的。

ARM9五級流水線中,讀暫存器的操作轉移到譯碼階段,將三級流水中的執行階段進一步細化,減少每個始終週期內必須要完成的工作量,這樣可以使流水線的各個階段在功能上更加平衡,避免資料的訪問和取指的匯流排衝突,每條指令的平均週期明顯減少。

    

有一句話要牢記,那就是:

PC不是指向你正在執行的指令,而是-PC始終指向你要取得指令的地址。


【總結】

ARM7的三級流水線,PC=PC+8,

ARM9的五級流水線,也是PC=PC+8,

根本的原因是,兩者的流水線設計中,指令的Execute執行階段,都是處於流水線的第三級。