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

Cortex-M處理器指令集

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

2.1 指令集簡介

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

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

表 3: Cortex-M 處理器ARM架構(gòu)規(guī)范的規(guī)范

       所有的Cortex-M 處理器都支持Thumb指令集。整套Thumb指令集擴(kuò)展到Thumb-2版本時變得相當(dāng)大。但是,不同的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架構(gòu)。這是一個只支持56條指令的小指令集,大部分指令是16位指令,如圖3所示只占很小的一部分。但是,此類處理器中的寄存器和處理的數(shù)據(jù)長度是32位的。對于大多數(shù)簡單的I/O控制任務(wù)和普通的數(shù)據(jù)處理,這些指令已經(jīng)足夠了。這么小的指令集可以用很少的電路門數(shù)來實(shí)現(xiàn)處理器設(shè)計(jì),Cortex-M0 和 Cortex-M0+最小配置僅僅12K門。然而,其中的很多指令無法使用高位寄存器(R8 到R12), 并且生成立即數(shù)的能力有限。這是平衡了超低功耗和性能需求的結(jié)果。

2.3 Cortex-M3指令集

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

· 查表跳轉(zhuǎn)指令和條件執(zhí)行(使用IT指令)

· 硬件除法指令

· 乘加指令(MAC)

· 各種位操作指令

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

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

2.4 Cortex-M4指令集

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

Cortex-M4的SIMD操作可以并行處理兩個16位數(shù)據(jù)和4個8位數(shù)據(jù)。例如,圖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運(yùn)算中,使用SIMD可以加速更快計(jì)算16位和8位數(shù)據(jù),因?yàn)檫@些運(yùn)算可以并行處理。但是,一般的編程中,C編譯器并不能充分利用SIMD運(yùn)算能力。這是為什么Cortex-M3 和 Cortex-M4典型benchmark的分?jǐn)?shù)差不多。然而,Cortex-M4的內(nèi)部數(shù)據(jù)通路和Cortex-M3的不同,某些情況下Cortex-M4可以處理的更快(例如,單周期MAC,可以在一個周期中寫回到兩個寄存器)。

2.5 Cortex-M7指令集

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

· 浮點(diǎn)數(shù)據(jù)架構(gòu)是基于FPv5的,而不是Cortex-M4的FPv4,所以Cortex-M7支持額外浮點(diǎn)指令

· 可選的雙精度浮點(diǎn)數(shù)據(jù)處理指令

· 支持緩存數(shù)據(jù)預(yù)取指令(PLD)

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

2.6 Cortex-M23指令集

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

· 硬件除法指令

· 比較和跳轉(zhuǎn)指令,32位跳轉(zhuǎn)指令

· 支持TrustZone安全擴(kuò)展的指令

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

· 16位立即數(shù)生成指令

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

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

2.7 I Cortex-M33指令集

因?yàn)镃ortex-M33設(shè)計(jì)是非常可配置的,某些指令也是可選的。例如:

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

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

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

· 支持TrustZone安全擴(kuò)展的指令

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

2.8 指令集特性比較總結(jié)

       ARMv6-M, ARMv7-M 和 ARMv8-M架構(gòu)有許多指令集功能特點(diǎn), 很難介紹到所有的細(xì)節(jié)。但是,下面的表格(表4)總結(jié)了那些關(guān)鍵的差異。

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

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

表 4: 指令集特性總結(jié)

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

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

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 黄色高清视频在线观看 | 美女视频黄是免费的 | 91成人免费观看网站 | 国产无限免费观看黄网站 | 国产乱人乱精一区二区视频密 | 麻豆传煤一区免费入 | 成人网免费视频 | 日韩伦理剧在线观看 | 老湿影院在线免费观看 | 亚洲一级毛片 | 国产精品无卡无在线播放 | 一级毛片在线完整免费观看 | 国产色婷婷免费视频 | 91精品乱码一区二区三区 | dy888午夜国产午夜精品 | 午夜a一级毛片一.成 | 在线视频一区二区三区三区不卡 | 欧美日韩高清在线观看一区二区 | 亚洲综合伊人色一区 | 久久精品国产999久久久 | 午夜毛片免费看 | 一本大道高清香蕉中文大在线 | 欧美日韩亚洲国产无线码 | 波多野结衣久久精品免费播放 | 国产精品456 | 手机在线成人精品视频网 | 香蕉99国内自产自拍视频 | 成人精品在线观看 | free性欧美另类巨大 | 国产亚洲精品自在久久77 | 久久这里只有精品免费播放 | 日韩中文字幕久久精品 | 综合网久久 | 国产成人精品免费视频大全五级 | 久久久亚洲国产精品主播 | 国产欧美日韩中文字幕 | 成人黄色在线免费观看 | 日韩在线视精品在亚洲 | 精品久久香蕉国产线看观看亚洲 | 日韩在线观看一区二区不卡视频 | 免费又黄又硬又大爽日本 |