Thumb指令集之: Thumb指令應(yīng)用
11.9Thumb指令應(yīng)用
11.9.1Thumb的實現(xiàn)
對3級流水線的ARM處理器來說,做相對較小的改動就可以實現(xiàn)Thumb指令集(5級流水線的實現(xiàn)要復雜些)。為實現(xiàn)Thumb指令集,在指令流水線中增加了Thumb指令解碼邏輯,該解碼邏輯將預取的Thumb指令轉(zhuǎn)換成等價的ARM指令。圖11.66顯示了Thumb指令的擴展邏輯組織。
從圖11.66可以看出,Thumb指令增加了解碼擴展邏輯(Decompressor)與指令譯碼器串連,但這并不會增加指令的譯碼時間。在指令流水線譯碼周期的第一階段只做了很少的工作,因此可以把擴展邏輯安排在這里而不會影響周期時間或增加流水線延時。
Thumb指令解碼擴展邏輯將16位的Thumb指令靜態(tài)地轉(zhuǎn)換為等價的32位ARM指令。這主要包括主操作碼和次操作碼的查表轉(zhuǎn)換,3位寄存器指示符(specifier)零擴展成4位寄存器指示符,以及所需要的其他域的映射。
例如,Thumb指令“ADDRd,#imm8”與對應(yīng)的ARM指令“ADDRd,Rd,#8”的映射如圖11.67所示。
圖11.66Thumb指令的擴展邏輯組織
圖11.67Thumb指令到ARM指令的映射
Thumb指令解碼邏輯實現(xiàn)Thumb指令到ARM指令映射時遵循以下規(guī)則:
①ARM指令的條件域(cond,bits[31:28])默認使用always。
注意 | 轉(zhuǎn)移指令除外,轉(zhuǎn)移指令是Thumb指令集中惟一一個條件執(zhí)行的指令。 |
②在Thumb指令操作碼中隱含地指定Thumb數(shù)據(jù)處理指令是否應(yīng)該修改CPSR中的條件標志位,在ARM指令中要明確指定。
③通過重復寄存器指示符將Thumb指令的2地址指令格式轉(zhuǎn)換為ARM的3地址指令格式。
Thumb指令解碼擴展邏輯的簡單性對Thumb指令集的效率是非常重要的。如果Thumb指令解碼擴展邏輯構(gòu)成復雜、速度低并且功耗大,那么Thumb指令就沒有什么價值了。
c++相關(guān)文章:c++教程
評論