ARM体系版本前言

很多人都知道,ARM有许多版本,口中最长说的就是ARM7\ARM9\ARM11,诚然,这个的确是ARM处理器的版本,但绝对不是ARM的版本,其实ARM到迄今为止经历了6代版本,随着时代的变化,ARM也随之变化,版本的不同其实也造就ARM的各种变种!

ARM处理器系列的各种处理器,其采用的技术各不相同,性能差异很大,应用的场合也不相同,但只要它是同一个ARM体系版本,那么基于它们的应用软件是兼容的!

不难看出ARM的版本关系到了ARM的兼容性,如果你在开发过程中不了解版本的话,以为一切ARM的程序均在ARM处理器上可用的话,那么就大错特错了!

ARM体系版本介绍

下面将为大家详细的介绍ARM体系结构的各类版本,给大家一个非常直观的了解,知道ARM不同版本之间有什么样的区别。

ARM的版本为:版本1、版本2、版本3、版本4、版本5、版本6

版本1

  • 乘法指令以外的基本数据处理指令
  • 字节、字和多字的读取写入指令
  • 包括子程序调用指令BL在内的跳转指令
  • 供操作系统使用的软件中断指令SWI

这个版本的地址空间是26位的,目前已经不在使用了!

版本2

与版本1相比,版本2添加了下列指令:

  • 乘法指令和乘加法指令(这2个指令在下篇博客中会解释一下)
  • 支持协处理器的指令
  • 支持FIQ模式,提供额外的两个备份寄存器
  • SWP指令及SWPB指令(各类指令都不要着急去了解,后面的几篇博客都将详细进行介绍)

该版本的地址空间是26位,目前也不使用了!

版本3

自这个版本开始,ARM出现了各种变种,是ARM质一般的飞跃了!

  • 地址空间扩展到了32位(除了版本3G以为)
  • CPSR(当前程序状态寄存器)出现,传说中的R15消失
  • 增加了SPSR(备份程序状态寄存器),可以保存被中断程序的状态了!
  • 添加了两种处理器模式(方便操作系统使用各类异常)
  • 增加了指令MRS与MSR(用来访问新增的两个寄存器)
  • 修改了原来从异常返回的指令

版本4

在版本3的基础上,版本4可谓是真正地得到了推广,值得一提的是Thumb指令集就是在这个版本上成立的!

  • 半字读写指令出现
  • 出现读取带符号的字节和半字数据指令
  • 有了T变种,即Thumb指令集
  • 增加处理器的特权模式

值得一提的是ARM公司终于不再要求支持26位的地址空间兼容(如此反我程序员的指令终于可以消失了,ARM公司,你造吗?不是2的幂次方,我们程序员对它都是无爱的!)

版本5

  • 提高了ARM/Thumb混合使用的效率(这一点太赞了,16位、32位的使用减少了很多的指令浪费)
  • 整合了非T变种的指令代码生成技术,让代码生成得到了统一
  • 增加了CLZ前导零计数指令
  • 增加了BRK软件断点指令
  • 增强型DSP指令集,包括全部算法操作和16位乘法操作
  • 支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能

版本6

这个版本其实是2002年发布的ARM11处理器中使用的,主要是添加了SIMD功能扩展,优化视频/音频处理技术!版本6的到来也使android的系统更加火爆!

  • Thumb:35%代码压缩
  • DSP扩充:高性能定点DSP功能
  • JazelleTM:Java性能优化,可提高8倍
  • Media扩充:音/视频性能优化,可提高4倍

我们可以从整个ARM体系版本的发展看出ARM技术的进步,同时也需要我们对ARM有更加深入的了解,跟着ARM走,做逍遥的嵌入式开发工程师!

求关注,求鲜花~~~~

ARM的体系结构与编程系列博客——ARM体系版本相关推荐

  1. 【Socket网络编程】0.socket TCP/UDP 可参考 【lx青萍之末】 的 【Linux网络编程 】系列博客

    关于socket TCP/UDP 相关知识 可参考博主[ lx青萍之末] 的 [Linux网络编程 ]系列博客 https://blog.csdn.net/daaikuaichuan/category ...

  2. 多线程 可参考 博主【 lx青萍之末】 的 【C++并发编程 】系列博客

    关于多线程 相关知识 可参考博主[ lx青萍之末] 的 [C++并发编程 ]系列博客 https://blog.csdn.net/daaikuaichuan/category_6887432.html

  3. 堪比培训机构的MySQL系列博客

    这个blog,我整理了我之前写的MySQL开发系列和MySQL运维系列,知识丰富程度堪比培训机构 个人能力有限,如有错误的地方,欢迎指正. 文章目录 一.MySQL开发系列 1.1 MySQL 行转列 ...

  4. [转]优秀的计算机编程类博客 和 文章

    介绍 优秀的计算机编程类博客是一些关于计算机方面的优秀博客. 欢迎大家将经常看的优秀博客或博客文章共享出来,您可以: 使用 Issues 以及 Pull Request 目录 优秀博客 语言无关类 语 ...

  5. 优秀的计算机编程类博客 和 文章

    优秀的计算机编程类博客 和 文章 介绍 优秀的计算机编程类博客是一些关于计算机方面的优秀博客. 欢迎大家将经常看的优秀博客或博客文章共享出来,您可以: 使用 Issues 以及 Pull Reques ...

  6. 优秀的计算机编程类博客 和 文章 转

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/u010321471/article/details/78635435 优秀的计算机编程类博客 ...

  7. 从单片机开发转向Linux开发系列博客五:Nand Flash根文件系统制作

    版本 作者 参与者 日期 备注 V1.0 wuya(微信号:wangwenxue1989) 2019/05/17 创建 1.引言 之前系列的文章介绍了如何编译Uboot.Kernel以及使用默认的ra ...

  8. 郭晓东的“系列博客,专辑”集锦

    基础知识: 字符编码的奥秘[专辑],浏览其中一篇:字符编码的奥秘utf-8, Unicode Unicode完整码表 <深度探索C++对象模型>[系列笔记]--对象模型.存储形式:默认构造 ...

  9. 优秀的计算机编程类博客和文章整理(github转载)

    介绍 优秀的计算机编程类博客是一些关于计算机方面的优秀博客. 欢迎大家将经常看的优秀博客或博客文章共享出来,您可以: 使用 Issues 以及 Pull Request 目录 优秀博客 语言无关类 语 ...

最新文章

  1. 8道Python基础面试练习题
  2. Maven学习(二) -- 坐标和依赖
  3. Wannafly挑战赛23F-计数【原根,矩阵树定理,拉格朗日插值】
  4. 用Gradle命令行编译Android工程
  5. 时间戳转datetime格式
  6. 使用dig或nslookup指定dns服务器查询域名解析
  7. centos7查看路由的命令_centos7系统设置***客户端及查看设置路由表router
  8. 应用RSACryptoServiceProvider类轻松实现RSA算法
  9. swagger2 配置访问路径_有了Swagger2 再也不用担心API文档的维护了
  10. 全志平台camera驱动开发(3)MIPI接口camera驱动开发
  11. JAVA当前时间timestamp_java获取获得Timestamp类型的当前系统时间
  12. 静校正问题及其深度学习方法
  13. 基于单片机智能婴儿车控制设计(毕业设计)
  14. 卷积和反卷积(deconv)
  15. 2022年PMP考试题型都有什么?
  16. 中职计算机英语教师教学总结,中职教师工作总结
  17. 机器学习笔记(三)—— 二向箔(从PCA到SVD)
  18. java调用扫描仪_通过Java调用Dynamsoft .NET TWAIN SDK控制扫描仪扫描文档
  19. java并发编程实战wwj----------第三阶段-------------CompletableFuture---------------56-59
  20. 如何找回四六级准考证号

热门文章

  1. java web数据库查询_Java Web开发之信息查询方式总结
  2. 照片宽高比怎么设置_用好PPT插件,三分钟就能搞定一个心形照片墙
  3. 30个最佳免费的CSS HTML登录表单模板
  4. mysql下载教程(如何从官方网站下载)
  5. 【元胞自动机】基于matlab元胞自动机3D森林火灾模型【含Matlab源码 656期】
  6. 锂电池净化厂房低湿车间装修SICOLAB
  7. 初学python100例-案例34 单词转字母并排序 少儿编程python编程实例讲解
  8. 一个小白的博图V14的安装过程
  9. hcfax2e伺服驱动器说明书_松下伺服驱动器说明书.pdf
  10. Python(Python入门安装教程)