韋東山ARM架構(gòu)與編程基于STM32MP157
ARM架構(gòu)包含了下述RISC特性:
讀取/儲(chǔ)存 架構(gòu)
不支援地址不對(duì)齊內(nèi)存存?。ˋRMv6內(nèi)核現(xiàn)已支援)
正交指令集(任意存取指令可以任意的尋址方式存取數(shù)據(jù)Orthogonal instruction set)
大量的16 × 32-bit 寄存器陣列(register file)
固定的32 bits 操作碼(opcode)長度,降低編碼數(shù)量所產(chǎn)生的耗費(fèi),減輕解碼和流水線化的負(fù)擔(dān)。
大多均為一個(gè)CPU周期執(zhí)行。
為了補(bǔ)強(qiáng)這種簡單的設(shè)計(jì)方式,相較于同時(shí)期的處理器如Intel 80286和Motorola 68020,還多加了一些特殊設(shè)計(jì):
大部分指令可以條件式地執(zhí)行,降低在分支時(shí)產(chǎn)生的負(fù)重,彌補(bǔ)分支預(yù)測器(branch predictor)的不足。
算數(shù)指令只會(huì)在要求時(shí)更改條件編碼(condition code)
32-bit筒型位移器(barrel shifter)可用來執(zhí)行大部分的算數(shù)指令和尋址計(jì)算而不會(huì)損失效能
強(qiáng)大的索引尋址模式(addressing mode)
精簡但快速的雙優(yōu)先級(jí)中斷子系統(tǒng),具有可切換的暫存器組
有個(gè)附加在ARM設(shè)計(jì)中好玩的東西,就是使用一個(gè)4-bit 條件編碼 在每個(gè)指令前頭,表示每支指令的執(zhí)行是否為有條件式的
這大大的減低了在內(nèi)存存取指令時(shí)用到的編碼位,換句話說,它避免在對(duì)小型敘述如if做分支指令。有個(gè)標(biāo)準(zhǔn)的范例引用歐幾里得的最大公因子算法:
在C編程語言中,循環(huán)為:
int gcd (int i, int j)
{
while (i != j)
if (i > j)
i -= j;
else
j -= i;
return i;
}
?