《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > Cortex-M處理器指令集

Cortex-M處理器指令集

2017-04-19
作者:Joseph Yiu
來源:ARM
關鍵詞: Cortex-M ARM ISA 處理器

2.1 指令集簡介

       大多數情況下,應用程序代碼可以用C或其他高級語言編寫。但是,對Cortex-M 處理器支持指令集的基本了解有助于開發者針對具體應用選擇合適的Cortex-M處理器。指令集(ISA)是處理器架構的一部分,Cortex-M處理器可以分為幾個架構規范。

UJ@1RR~THSH`8)CH](FKD3T.png

表 3: Cortex-M 處理器ARM架構規范的規范

       所有的Cortex-M 處理器都支持Thumb指令集。整套Thumb指令集擴展到Thumb-2版本時變得相當大。但是,不同的Cortex-M處理器支持不同的Thumb 指令集的子集,如圖3所示:

圖片3_conew1.png

圖片4_conew1.png

圖 3: Cortex-M 處理器的指令集

2.2 Cortex-M0/M0+/M1指令集

Cortex-M0/M0+/M1處理器基于ARMv6-M架構。這是一個只支持56條指令的小指令集,大部分指令是16位指令,如圖3所示只占很小的一部分。但是,此類處理器中的寄存器和處理的數據長度是32位的。對于大多數簡單的I/O控制任務和普通的數據處理,這些指令已經足夠了。這么小的指令集可以用很少的電路門數來實現處理器設計,Cortex-M0 和 Cortex-M0+最小配置僅僅12K門。然而,其中的很多指令無法使用高位寄存器(R8 到R12), 并且生成立即數的能力有限。這是平衡了超低功耗和性能需求的結果。

2.3 Cortex-M3指令集

Cortex-M3處理器是基于ARMv7-M架構的處理器,支持更豐富的指令集,包括許多32位指令,這些指令可以高效的使用高位寄存器。另外,M3還支持:

· 查表跳轉指令和條件執行(使用IT指令)

· 硬件除法指令

· 乘加指令(MAC)

· 各種位操作指令

更豐富的指令集通過幾種途徑來增強性能;例如,32位Thumb指令支持了更大范圍的立即數,跳轉偏移和內存數據范圍的地址偏移。支持基本的DSP操作(例如,支持若干條需要多個時鐘周期執行的MAC指令,還有飽和運算指令)。最后,這些32位指令允許用單個指令對多個數據一起做桶型移位操作。

支持更豐富的指令導致了更大的面積成本和更高的功耗。典型的微控制器,Cortex-M3的電路門數是Cortex-M0 和 Cortex-M0+兩倍還多。但是,處理器的面積只是大多數現代微控制器的很小的一部分,多出來的面積和功耗經常不那么重要。

2.4 Cortex-M4指令集

Cortex-M4在很多地方和Cortex-M3相同:流水線,編程模型。Cortex-M4支持Cortex-M3的所有功能,并額外支持各種面向DSP應用的指令,像SIMD, 飽和運算指令,一系列單周期MAC指令(Cortex-M3只支持有限條MAC指令,并且是多周期執行的),和可選的單精度浮點運算指令。

Cortex-M4的SIMD操作可以并行處理兩個16位數據和4個8位數據。例如,圖4展示的QADD8 和 QADD16 操作:

圖片5_conew1.png   

圖 4: SIMD指令例子: QADD8 and QADD16

The uses of SIMD enable much faster computation of 16-bit and 8-bit data in certain DSP operations as the calculation can be parallelized. However, in general programming, C compilers are unlikely to utilize the SIMD capability. That is why the typical benchmark results of the Cortex-M3 and Cortex-M4. However, the internal data path of the Cortex-M4 is different from Cortex-M3, which enable faster operations in a few cases (e.g. single cycle MAC, and allow write back of two registers in a single cycle).在某些DSP運算中,使用SIMD可以加速更快計算16位和8位數據,因為這些運算可以并行處理。但是,一般的編程中,C編譯器并不能充分利用SIMD運算能力。這是為什么Cortex-M3 和 Cortex-M4典型benchmark的分數差不多。然而,Cortex-M4的內部數據通路和Cortex-M3的不同,某些情況下Cortex-M4可以處理的更快(例如,單周期MAC,可以在一個周期中寫回到兩個寄存器)。

2.5 Cortex-M7指令集

Cortex-M7支持的指令集和Cortex-M4相似,添加了:

· 浮點數據架構是基于FPv5的,而不是Cortex-M4的FPv4,所以Cortex-M7支持額外浮點指令

· 可選的雙精度浮點數據處理指令

· 支持緩存數據預取指令(PLD)

Cortex-M7的流水線和Cortex-M4的非常不同。Cortex-M7是6級雙發射流水線,可以獲得更高的性能。多數為Cortex-M4設計的軟件可以直接運行在Cortex-M7上。但是,為了充分利用流水線差異來達到最好的優化,軟件需要重新編譯,并且在許多情況下,軟件需要一些小的升級,以充分利用像Cache這樣的新功能。

2.6 Cortex-M23指令集

Cortex-M23的指令集是基于ARMv8-M的Baseline子規范,它是ARMv6-M的超集。擴展的指令包括:

· 硬件除法指令

· 比較和跳轉指令,32位跳轉指令

· 支持TrustZone安全擴展的指令

· 互斥數據訪問指令(通常用于信號量操作)

· 16位立即數生成指令

· 載入獲取及存儲釋放指令(支持C11)

在某些情況下,這些增強的指令集可以提高處理器性能,并且對包含多個處理器的SoC設計有用(例如,互斥訪問對多處理器的信號量處理有幫助)

2.7 I Cortex-M33指令集

因為Cortex-M33設計是非常可配置的,某些指令也是可選的。例如:

· DSP指令(Cortex-M4 和Cortex-M7支持的)是可選的

· 單精度浮點運算指令是可選的,這些指令是基于FPv5的,并且比Cortex-M4多幾條。

: Cortex-M33也支持那些ARMv8-M Mainline引入的新指令:

· 支持TrustZone安全擴展的指令

· 載入獲取及存儲釋放指令(支持C11)

2.8 指令集特性比較總結

       ARMv6-M, ARMv7-M 和 ARMv8-M架構有許多指令集功能特點, 很難介紹到所有的細節。但是,下面的表格(表4)總結了那些關鍵的差異。

FWB)FJ${]NF{L%0$BZ_94~V.png

6(F6{KW6~NQ$2P%S6X`]O67.png

表 4: 指令集特性總結

Cortex-M處理器指令集的最重要的特點是向上兼容。Cortex-M3的指令是Cortex-M0/M0+/M1的超集。所以,理論上講,如果存儲空間分配是一致的,運行在Cortex-M0/M0+/M1上的二進制文件可以直接運行在Cortex-M3上。同樣的原理也適用于Cortex-M4/M7和其他的Cortex-M處理器;Cortex-M0/M0+/M1/M3支持的指令也可以運行在Cortex-M4/M7上。

雖然Cortex-M0/M0+/M1/M3/M23處理器沒有浮點運算單元配置選項,但是處理器仍然可以利用軟件來做浮點數據運算。這也適用于基于Cortex-M4/M7/M33但是沒有配置浮點運算單元的產品。在這種情況下,當程序中使用了浮點數,編譯工具包會在鏈接階段插入需要的運行軟件庫。軟件模式的浮點運算需要更長的運行時間,并且會略微的增加代碼大小。但是,如果浮點運算不是頻繁使用的,這種方案是適合這種應用的。

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
先锋亚洲精品| 亚洲欧美视频一区二区三区| 99精品国产一区二区青青牛奶| 尤物在线观看一区| 国产一区二区成人| 国产日韩欧美二区| 国产精品一区二区三区久久久 | 午夜精品久久| 亚洲免费视频成人| 亚洲综合成人在线| 亚洲自拍电影| 午夜亚洲伦理| 欧美亚洲综合另类| 欧美制服丝袜| 亚洲成人中文| 亚洲精品视频啊美女在线直播| 亚洲激情六月丁香| 亚洲日韩成人| 一区二区高清视频| 亚洲自拍16p| 午夜在线精品偷拍| 欧美综合国产| 久久久另类综合| 欧美成人一区在线| 欧美理论电影在线播放| 欧美三级特黄| 国产精品影视天天线| 国产一区二区三区久久精品| 狠狠综合久久| 亚洲欧洲另类国产综合| 亚洲免费观看高清完整版在线观看熊| 日韩亚洲一区二区| 亚洲欧美日韩精品综合在线观看| 久久gogo国模啪啪人体图| 91久久午夜| 亚洲一区二区三区四区中文| 欧美一区1区三区3区公司| 久久米奇亚洲| 欧美噜噜久久久xxx| 欧美午夜美女看片| 国产亚洲精品资源在线26u| 一区视频在线看| 一二三区精品福利视频| 午夜免费在线观看精品视频| 亚洲国产精品成人综合色在线婷婷| 亚洲精品少妇网址| 亚洲欧美国产77777| 久久深夜福利| 欧美日韩国产免费| 国产伦精品一区二区| 一区在线视频观看| 一区二区三区精品国产| 欧美一区=区| 日韩一区二区高清| 欧美在线地址| 欧美激情久久久| 国产精品免费久久久久久| 精品9999| 亚洲无亚洲人成网站77777| 久久精品1区| 亚洲一区二区三区中文字幕在线| 久久久久久久久岛国免费| 欧美紧缚bdsm在线视频| 国产免费一区二区三区香蕉精| 亚洲高清视频在线| 亚洲欧美精品| 亚洲乱码国产乱码精品精可以看 | 国产精品视频自拍| 亚洲国产成人久久综合| 亚洲免费视频网站| 日韩天天综合| 久久亚洲春色中文字幕久久久| 欧美午夜电影网| 在线日韩中文| 亚洲欧美怡红院| 一区二区三区精品国产| 久久伊人精品天天| 国产精品热久久久久夜色精品三区| 在线播放不卡| 性做久久久久久免费观看欧美| 9l视频自拍蝌蚪9l视频成人| 久久精品论坛| 欧美午夜性色大片在线观看| 1024国产精品| 欧美专区一区二区三区| 午夜精品久久久久久久99水蜜桃| 欧美另类69精品久久久久9999| 国产一区深夜福利| 亚洲伊人伊色伊影伊综合网| 一区二区三区视频免费在线观看| 麻豆精品一区二区av白丝在线| 国产精品一区二区三区久久| 一本不卡影院| 一本一本久久| 欧美激情一区二区三区不卡| 韩国一区二区三区美女美女秀| 亚洲资源av| 亚洲欧美一区二区三区在线| 欧美日韩精品一区二区天天拍小说| 一区二区在线视频播放| 欧美一级在线视频| 欧美影院在线| 国产精品女同互慰在线看| 日韩一二三在线视频播| 99精品久久久| 欧美激情国产日韩精品一区18| 在线播放日韩专区| 久久精品国产一区二区电影| 久久久999| 国产一区二区毛片| 小黄鸭精品密入口导航| 午夜日韩av| 国产精品夜夜夜| 亚洲综合电影| 欧美一级二区| 国产精品夜色7777狼人| 亚洲一区二区三区高清| 午夜精品久久久久| 国产精品一区二区在线观看| 亚洲一区二区三区四区五区黄 | 亚洲少妇自拍| 亚洲一区二区成人在线观看| 欧美日韩一区精品| 一本一本久久a久久精品综合麻豆| 亚洲婷婷国产精品电影人久久| 欧美伦理在线观看| 99国产精品久久久久久久久久| 亚洲一级在线观看| 国产精品久久久久久久久果冻传媒| 亚洲私人影院| 午夜在线精品| 国产性色一区二区| 久久国产精品一区二区三区| 久久午夜羞羞影院免费观看| 一区二区三区中文在线观看| 91久久久亚洲精品| 欧美日韩91| 一本色道久久综合亚洲精品按摩 | 午夜精品福利一区二区三区av| 久久精品一本久久99精品| 黄色成人在线网站| 91久久精品一区| 欧美日韩国产综合久久| av成人天堂| 欧美伊人久久大香线蕉综合69| 国产一区二区三区的电影| 久久精品欧洲| 欧美理论在线播放| 亚洲午夜在线观看| 久久久久久免费| 亚洲国产毛片完整版| 亚洲少妇在线| 国产欧美日韩精品一区| 久久精品成人| 欧美理论电影在线播放| 亚洲少妇最新在线视频| 久久久久久久国产| 亚洲欧洲在线一区| 午夜精品久久久久久久99水蜜桃| 国产在线观看精品一区二区三区| 亚洲精品乱码久久久久久蜜桃91 | 中国亚洲黄色| 久久久久久精| 日韩写真在线| 久久精品一区| 日韩天堂在线视频| 久久av二区| 亚洲欧洲一区二区在线播放| 亚洲欧美中文字幕| 伊人色综合久久天天五月婷| 中文精品视频| 国产在线精品一区二区夜色| 日韩亚洲欧美一区二区三区| 国产欧美日韩精品在线| 日韩视频在线一区二区三区| 国产欧美精品| 日韩一级大片在线| 国产欧美精品国产国产专区| 日韩视频免费看| 国产色综合久久| 中文日韩电影网站| 韩曰欧美视频免费观看| 一区二区三区精品视频| 韩日成人在线| 亚洲欧美日韩在线不卡| 亚洲国产日韩欧美在线99| 欧美一二三视频| 亚洲毛片播放| 久久综合伊人77777蜜臀| 亚洲午夜精品网| 欧美黄色免费网站| 久久国产精品久久久| 国产精品久久一卡二卡| 亚洲精选在线| 黑人巨大精品欧美一区二区小视频 | 在线中文字幕不卡| 欧美成人午夜激情| 性欧美18~19sex高清播放| 欧美日韩情趣电影| 亚洲人体大胆视频|