ARM的体系结构与编程系列博客——ARM体系版本
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体系版本的更多相关文章
- ARM的体系结构与编程系列博客——ARM处理器系列介绍
ARM处理器系列介绍 现在到了3月,过年过得过于舒服了.系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器 ...
- ARM的体系结构与编程系列博客——ARM的历史与应用范围
前言 最近我感觉自己比较浮躁,重来没有好好地沉下心来做一件事情,而且针对自己在专业水平上仍然还有很多欠缺,于是我想我应该为自己做些什么来证明一下自己真的是潜心研究东西的人,于是我萌生了一个想法,真正地 ...
- ARM的体系结构与编程系列博客——ARM体系变种
ARM体系变种的简介 有人会很奇怪一件事情,ARM居然会变种,不会是基因突变了吧,呵呵,其实ARM变种通俗一点来讲呢,就是ARM突然具备了一种特定的功能!并非是基因突变哦!ARM是reboot好不好? ...
- 窥探Swift系列博客说明及其Swift版本间更新
Swift到目前为止仍在更新,每次更新都会推陈出新,一些Swift旧版本中的东西在新Swift中并不适用,而且新版本的Swift会添加新的功能.到目前为止,Swift为2.1版本.去年翻译的Swift ...
- Flutter 即学即用系列博客——03 在旧有项目引入 Flutter
前言 其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter. 因此本篇我们就说一说如何在旧有项目引入 Flu ...
- Django 系列博客(四)
Django 系列博客(四) 前言 本篇博客介绍 django 如何和数据库进行交互并且通过 model 进行数据的增删查改 ORM简介 ORM全称是:Object Relational Mappin ...
- JavaScript 系列博客(一)
JavaScript 系列博客(一) 前言 本系列博客为记录学习 JavaScript 的学习笔记,会从基础开始慢慢探索 js.今天的学习笔记主要为 js 引入.定义变量以及 JavaScript 中 ...
- C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET
C++ STL中Map的相关排序操作:按Key排序和按Value排序 - 编程小径 - 博客频道 - CSDN.NET C++ STL中Map的相关排序操作:按Key排序和按Value排序 分类: C ...
- Flutter 即学即用系列博客——05 StatelessWidget vs StatefulWidget
前言 上一篇我们对 Flutter UI 有了一个基本的了解. 这一篇我们通过自定义 Widget 来了解下如何写一个 Widget? 然而 Widget 有两个,StatelessWidget 和 ...
随机推荐
- (PMP)第4章-----项目整合管理
4.1 制定项目章程 输入 工具与技术 输出 1.商业文件 (商业论证,效益管理计划) 1.专家判断 1.项目章程 2.协议 2.数据收集 (头脑风暴,焦点小组,访谈) 2.假设日志 3.事业环境因素 ...
- 深入理解java虚拟机(三)-----类加载机制
类加载机制jvm把描述类的数据从class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被jvm直接使用的java类型.在java中,类型的加载.连接和初始化都是在程序运行期间完成的 ...
- JAVA常用集合
List: ArrayList: 基于动态数组的有序集合.优点:可以根据索引index下标访问List中的元素,访问速度快:缺点是访问和修改中间位置的元素时慢(数组尾部插入元素以外). LinkedL ...
- 爬虫学习笔记-urllib库
urllib库是python中一个最基本的网络请求库.可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据. urlopen函数:在python3的urllib库中,所有和网络 ...
- Day04 (黑客成长日记) 集合记录
集合 集合:是可变的数据类型 ,它里面的数据类型必须是不可变的数据类型,无序,不重复,不同于字典,他有元素,没有键值对(编码不常用) li = set([1,2,3]) li = {'alex','w ...
- Runtime "Apache Tomcat v6.0 (3)" is invalid. The JRE could not be found. Edit the server and change the JRE location解决方案
使用eclipse,启动Tomcat时出现The JRE could not be found ,Edit server and change teh JRE location的错误提示! 原因:重装 ...
- 第十一章 DNS服务器管理与配置
1.如何在WindowsServer 2008 系统中使用IIS进行多站点配置与管理? 1)运行“开始”–“程序”–“管理工具”–“服务器管理器”打开: 选择“WEB服务器(IIS)”,注意:首次安装 ...
- HDU5813 Elegant Construction
Elegant Construction Time Li ...
- MyBatis逆向工程自动生成代码
MyBatis逆向工程根据数据库表自动生成mapper.xml,entity类,mapper类,简直不要 太方便好嘛 下面贴上关键配置代码,以免以后找不到 generator.xml <?xml ...
- phantomjs的安装和使用链接
1.先下载phantomjs并解压2.将phantomjs的bin目录配置到环境变量中3.测试phantomjs,cmd下输入phantomjs进入 (按 Ctrl + c 组 合键退出和 phant ...