kelly 发布于:周二, 08/30/2016 - 17:42 ,关键词:

自25年前ARM1的诞生起,ARM指令集便不断演变。Cortex-A处理器实际支持两个指令集,每个指令集都有各自的扩展。

ARM指令集

ARM指令集基于首款ARM处理器支持的原始指令集。该指令集已经过了数次扩展。简而言之,这是一个负载-存储指令集,拥有不同指令组,主要用于数据处理、存储访问、系统控制和控制流程。现代的ARM指令集非常强大,适用范围非常广泛。在指令集内,所有指令被编码为32位固定长度的字,并且必须与字边界一致。

Thumb指令集

Thumb指令集是ARM指令集的子集,其中每个指令被编码为16位半字,并且必须与半字边界一致。Thumb指令集最初的依据是,在编译高级语言(如C语言)时,减小最常用的指令的大小,从而提高代码密度。由于指令越小,会有更多指令可以汇集在给定的高速缓存,对运行指令的高速缓存就越有利。

高级SIMD扩展

高级SIMD扩展也被称为NEON,是一组庞大的指令集,通过扩充寄存器集实现SIMD向量处理能力。

向量浮点(VFP)

VFP指令集实用与NEON的相同的寄存器分组,是符合IEEE-754单、双精度浮点的运算指令。

Thumb-2技术

Thumb-2是一个扩展集的总称,起初为ARMv6T2(第一款,使用ARM1156T2-S处理器)的Thumb指令集。由此生成一个混合长度指令集,同时具备Thumb的高代码密度和ARM指令集的高性能和高灵活性。

如果使用过Cortex-M微控制器,您一定会对Thumb-2非常熟悉。在最小(Cortex-M0和Cortex-M0+)到最大(Cortex-M7中)的各种子集中,核心仅支持Thumb-2。你会发现,使用Cortex-A处理器可以生成更多的代码。

一般来说,为Cortex-A编译的大部分高级代码都是针对Thumb(及Thumb-2)的。这使编译器能够在最大程度上做出明智的判断,从多种选择中选取需要的指令,并实现代码空间编译和性能编译之间的差异最大化。

ARM指令集通常被用于代码段,性能至关重要。有时,这些代码段需要通过手工在汇编器上编码,ARM指令集也因此成为最佳选择。

NEON指令集可通过多种方式访问:

1、支持常用数学、分析函数和算法的库。

2、编译器可以为多种内在函数集提供支持,允许直接使用C语言访问几乎整个NEON指令集。通过这种方法,可以用最简便的方式将NEON操作插入C语言。

3、可以直接在汇编器上手工实现NEON。

4、编译器还支持迭代循环的自动向量化。将代码写入一些简单指令,编译器会非常有效地展开极其复杂的循环,并进行向量化。

如果对ARMv7-A处理器很熟悉,您还会注意到作为ARMv8-A也在使用的一些其它指令。

加密扩展

这些是ARMv8-A中的新指令,运行在NEON寄存器组,旨在有效地执行密码函数的算法。

负载获取和存储释放(Load Acquire and Store Release)

这些新指令匹配C++11访存排序语义,编译非常高效。它们还可用于降低对数据端内存屏障的需求,部分消除与其有关的能耗支出。

另外,还有其它一些浮点和屏障指令的扩展。

围观 757

arm指令集 c语言,这些Cortex-A处理器支持的指令集,您都知道吗?相关推荐

  1. [C] 跨平台使用Intrinsic函数范例1——使用SSE、AVX指令集 处理 单精度浮点数组求和(支持vc、gcc,兼容Windows、Linux、Mac)...

    作者:zyl910. 本文面对对SSE等SIMD指令集有一定基础的读者,以单精度浮点数组求和为例演示了如何跨平台使用SSE.AVX指令集.因使用了stdint.zintrin.ccpuid这三个模块, ...

  2. Cortex、ARMv8、arm架构、ARM指令集、soc?Cortex A8、A9都是ARMv7a 架构;Cortex M3、M4是ARMv7m架构;前者是处理器(内核)后者是指令集的架构(架构)

    架构组成元素的指令集状态或者语法thumb指令集与arm指令集的区别例如thumb指令集是什么_thumb指令集与arm指令集的区别以及thumb-2的关系在下一文中介绍,本文暂时不讨论 有粉丝问我到 ...

  3. 《嵌入式 - 嵌入式大杂烩》 处理器架构与指令集

    大家天天都在使用手机,你知道你的手机使用的什么处理器?处理器又是何种架构呢?今天笔者就来谈谈处理器的架构和指令集. 我们知道一台手机最重要的就是处理器,也就是处理器,那么什么是处理器呢? 处理器就是一 ...

  4. ​“统治”移动处理器市场的Arm为何明年Q1才发布AI处理器?

    AI热潮来势汹汹,即便算法还不成熟,处理器算力还不足够,但大部分手机厂商已经让其旗舰手机用户或多或少地享受到了所谓的AI功能.其中,苹果和华为更是用集成NPU的自研处理器增强其手机的AI功能作为一大卖 ...

  5. 【Linux】ARM篇一--计算机基础与RAM处理器概论

    ARM篇一--计算机基础与ARM处理器概论 一.计算机基础 1.Linux嵌入式底层导学 1.1 Linux学习过程 1.2 操作系统的分层作用 2.计算机基础知识 2.1 计算机的进制 2.2 计算 ...

  6. GSM/GPRS模块 AT指令集C语言编程——基于有方M660+和MSP430单片机

    GSM/GPRS芯片是手机中负责收发短信.拨打电话以及访问GPRS网络的核心器件.有方M660+为深圳有方公司生产的一款超小封装的GSM/GPRS工业无线模块,可以提供高品质的语音.短信.数据业务等功 ...

  7. Linux_arm_启动_c语言部分详解,[原创]Linux arm 启动 c语言部分详解第四讲

    Linux arm启动c语言部分详解第四讲(from setup_per_cpu_areas();) Written by leeming 上面的setup_arch花了我们大量的篇幅,现在我们要继续 ...

  8. Linux驱动(2)--ARM的架构发展以及如何评价处理器

    ARM的架构发展以及如何评价处理器 1. 如何评价一个处理器 2.ARM处理器的架构发展 1. 如何评价一个处理器 评价一个处理器需要从以下四个方面来考虑: ① 频率 一个处理器的主频和处理速度有关, ...

  9. 新年开工第一篇文章——推荐几个值得中小企业使用的ARM9/ARM11/Cortex A8处理器

    //toppic:推荐几个值得中小企业使用的ARM9/ARM11/Cortex A8处理器 // 作者:gooogleman //原文地址:http://blog.csdn.net/goooglema ...

  10. 指令集架构、微架构、处理器架构、CPU架构、内核

    前两天看书碰到了"CPU架构"这个词,脑子里感觉有点模糊不懂.查阅相关资料后又陆续碰到了"指令集架构"."微架构"."处理器架构& ...

最新文章

  1. MEMS为何独领风骚?看完这篇秒懂!
  2. HanLP-最短路径分词
  3. es6的map()方法解释
  4. python的super用法_关于Python的super用法研究
  5. Java基础——类加载机制
  6. java服务器客户端文件,客户端服务器文件传输Java
  7. 2018福大软工实践第八次作业
  8. 实验8 群体类、流类库与输入/输出(4学时)
  9. 2022春季苹果发布会将会发布什么?
  10. 软件测试价值提升之路--第2部分“扫门前雪”-第3章“拦截缺陷”-读书笔记
  11. AutoCAD2018_块
  12. SFP光纤收发器搭配光模块的交换机连接方案解决方案
  13. idea、webstorm使用过程出现问题
  14. (附思维导图+笔记)-六面美团后,我发现大厂面试真的有“题库”!
  15. MacOS 11 系统电子书方案----MuMu安卓模拟器
  16. 2.1 Java范型
  17. Permission denied: user=dr.who, access=READ_EXECUTE, inode=/user/root:root:supergroup:drwx------
  18. 警察蜀黍权威数据告诉你,广东少男最易遭受网络诈骗
  19. 收音机c语言程序,基于单机收音机的C语言程序.doc
  20. 组装3000元的办公台式电脑全过程

热门文章

  1. 不让editText自动获取焦点
  2. window下搭建react-native开发环境
  3. 将已发送的短信写入短信数据库
  4. javaSE---最大值最小值和冒泡排序及随机数的讲解
  5. 2006年最值得期待的十种技术
  6. ThreadLocal的作用
  7. eclipse 点击 ctrl+鼠标左键看不了源码问题解决
  8. 算法学习之路|方格分割
  9. 《Android面试宝典》学习笔记(第三章:组件)
  10. ImportError: No module named matplotlib.pyplot