EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 uperrua 于 2019-6-28 10:43 编辑 : t- N% w( _2 w) d7 ?+ Q
t9 \1 d% x( ?/ J- H* Q
接下來介紹其他ARM處理器主要的特徵
. t2 y, \$ [" o$ F1, Coprocessors
* }, P/ e7 T) L, R5 C; { w8 RARM本身除了支援ARMv32,Thumb,Thumb2指令集外,還可以透過Coprocessor支援延伸的指令集,每當ARM處理器執行到無法識別的指令集,就會透過Coprocessor 試圖進行指令集的識別動作,如果Coprocessor無法識別有效的指令集,或是該系統沒有對應的Coprocessor配置,就會透過觸發Undefined Instruction Vector透過對應的軟體進行錯誤處理流程 (Undefined Instruction通常也會用在安插Break Point的除錯機制上) * J& S3 C9 O; n( r) x
ARM可以支持0-15共16個Coprocessor,例如: CP15(System Control Coprocessor 15)一般是用在Cache與MMU相關的設定工作,CP14(Debug Control Coprocessor 14)支援相關Debug Registers,其它像是新增的NEON MPE (Media Processing Engine) SIMD指令與浮點運算VFP是透過CP10與CP11支援 。 7 I9 w/ x, i- ?9 x0 o/ R' c* t
目前所提供的Coprocessor指令中,ARM有針對VFP與NEON的指令,定義對應的指令集,舉在Cortext A中有支援的NEON指令集為例,在編譯器端只要加入 vectorize 參數,就可以主動由編譯器根據程式碼內容優化,透過NEON的指令集進行產生對應的指令,如下所示
( U( X6 ~& Y. ?! a3 E/ b ]7 y$ x
- t! C, v* Z/ A
0 Y9 o" D8 \7 G. _8 n
) N {2 i! {5 f; \+ W |