一、ARM公司起源

  严格的讲,ARM即表示公司也表示处理器。这里我们讨论的是ARM公司的历史。
  1978年12月,奥地利籍物理学博士Hermann Hauser和工程师Chris Curry在英国剑桥创办了CPU公司,全称Cambridge Processing Unit,字面意思是剑桥处理器单元。创立之初的主要业务是设计供应基于微处理器的电子设备。

  1979年,CPU成立了Acorn Computer来专门负责基于SC/MP处理器产品的开发,同时CPU还成立了其他的公司来负责其他的业务。随着时间的推移,Acorn逐渐接手了产品开发工作,CPU转变为了控股公司。不久后Acorn推出了一款为工程和实验室用户设计的半专业计算机系统,售价非常的低廉,即Acorn System1,有点类似于现在的树莓派。但是创始人不满足于此,准备启动面向消费市场的Atom项目,Atom上市后,Acron又推出了代号为Proton的计算机,它使用16位处理器来替代8位处理器,并具备强大扩展能力。
  1980年初,英国BBC准备推出计算机科普节目,并打算购买与节目配套的电脑,最开始的时候BBC并没有选择Acorn公司的Proton,奈何其他公司因为各种原因无法按期交货,故BBC只好另寻出路,此时Acorn借机把Proton推销给了BBC,Proton被命名为BBC Micro,与1981年12月发布,并大受欢迎。
  Acorn准备基于BBC Micro继续向消费商用市场发力,他们想替换原6502处理器,但是在1983年,还是没有找到合适的处理器,例如摩托罗拉的16位芯片太慢太贵,执行速度慢,中断响应时间太长,同时一台500英镑的电脑,处理器就占到了100英镑。最后他们找到了如日中天的Intel,希望对方能提供一些80286处理器的设计资料和样品,然而Intel拒绝了他们。
  Acorn决定自行研发一款新的处理器,美国加州大学伯克利分校的RISC-精简指令集,恰好满足他们的设计要求。1983年10月,Acorn RISC Machine计划正式开始,这就是ARM处理器的由来,来自剑桥大学的计算机科学家Sophio Wilson和Steve Furber在1985年完成了微处理器的设计,这是一款32位,6MHz的处理器,被命名为ARM1。这款芯片主要作为评估用,并以此开发了ARM2,ARM3。不幸的是不久后电脑产品的寒冬来临,需求下降,Acorn面临严重的财政问题,同期的苹果也无法幸免。

  在1990年11月,苹果与Acron合作开发ARM处理器,并专门成立一家新公司来完成开发计划,也叫ARM,但是全称是Advanced RISC Machines。ARM公司与ARM芯片的差别在于A上,前者为Advanced,后者为Acorn。
  在最开始的几年,ARM公司不仅开发ARM处理器,还同时研发一些基于ARM处理器的产品,但是业绩平平,一直没有起色。于是ARM开始尝试授权的方式,1991年,将产品授权给GEC Plessey半导体公司,1993年,授权给TI,随着与越来越多的公司合作,ARM也逐渐坚定了授权的决心。1993年,苹果推出掌上电脑Newton,里面用的就是ARM6芯片。终于,ARM迎来了黄金机遇,移动电话的时代来临了,第一个大客户就是诺基亚,基于ARM处理器的诺基亚6110,一上市就取得了极大的成功。1998年4月17日,ARM在伦敦和纳斯达克同时上市。
  如今ARM已经占据移动设备市场90%以上的份额,就连window也已经支持ARM架构。2016年,软银集团以309亿美元收购了ARM。

二、ARM处理器家族

  自Acorn推出了ARM1处理器后,又不断推出新的ARM产品,一直持续到ARM11。从ARM1-ARM11,其中共经历了ARMv1-ARMv6这几种体系架构。
  如下图所示,这些处理器可以统称为ARM经典处理器。1991年发布ARM6,1994年发布ARM7,1996年发布ARM8,1997年发布ARM9,2000年发布ARM10,2002年发布ARM11。

  而从ARM11芯片、ARMv6架构以后,从ARMv7架构开始,大概在2004年,ARM处理器的命名方式发生了变化,不再以ARM+数字的形式,而是改为了Cortex,并分为3个系列,分别为Cortex-A(Application),Cortex-M(Microcontroller),Cortex-R(Real-time)。虽然架构的命令方式没有太大的变化,但是也分为了3个系列,ARMv7-A,ARMv7-M,ARMv7-R。
  下图是自ARM11以后的ARM产品。

  2005年发布Cortex-A8,2007年发布Cortex-A9,2009年发布Cortex-A5,2010年发布Cortex-A15,2011年发布Cortex-A7。可以看出并不是数字越靠前,年份就越靠前。但是一般情况下,年份靠后的要比年份靠前的性能要好,例如Cortex-A7的性能要优于Cortex-A8。
  2011年11月,ARM发布了首款支持64bit的架构ARMv8,并在2012年推出基于ARMv8架构的处理器,2017年,ARM发布了ARMv8.2。
  如下图所示,不同系列的Cortex-A又细分了不同的领域。

2021年3月,ARM发布ARMv9架构。

三、杂谈

  CortexM的目标是单片机领域,即深度嵌入式,ARM公司想通过M系列占据单片机市场,它确实做到了,即便在8位机领域,M系列基本已经是性能最强功耗最低。
  CortexA的目标是高性能领域,比如手机处理器,CortexA9就是该系列比较有名的处理器。而高通公司,它和ST公司一样,拿到CortexA系列的内核后,添加自己的外设,“骁龙”这块响当当的处理器就是这么来的。
  由此也可以看出来,ST公司主打深度嵌入式市场,即低端市场,高通公司主打高性能领域,即高端市场。他们有联系,又有区别。
  上面提了这么多Cortex的处理器,但是他们只是处理器,许多处理器基于同一种架构,目前的常见的架构为ARMv7和ARMv8,根据A、R、M的划分又可以分为ARMv7-A,ARMv7-R和ARMv7-M,ARMv8也是如此。CortexM4就是基于ARMv7-M架构,同时CortexM3也是基于ARMv7-M架构。
  处理器又包括指令集,不同的处理器包括的指令集不同,比如CortexM4比CortexM3多了DSP和Float指令集。而指令集又可以分为两大类:ARM指令集和Thumb指令集。Thumb指令集只是ARM指令集的一个子集,并且不是一个完整的指令集,即一个处理器中不可能只有Thumb指令集,比如进入异常,必须依赖ARM指令集。
  最后举个例子,华为Mate8手机,处理器为海思的麒麟950,它采用了CortexA72+CortexA53的八核架构,当然上面还有其他的外设,如:GPU,Wifi,基带等等,CortexA72基于ARMv8-A 64位架构。

系统移植—1.0 ARM历史和体系相关推荐

  1. 外网访问arm嵌入式linux系统_嵌入式Linux系统移植的四大步骤

    最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命 ...

  2. ARM开发(6)系统移植初步(搭建交叉开发环境)

    先和大家聊一聊我对于系统移植学习的感悟,之前在老师的带领,我们移植系统的时候执行了一条条指令,但是总感觉哪里有一些问题又说不出来,这些指令都解决了很多问题:但是说到底,自己却不明白这些指令到底是怎么去 ...

  3. 学习ARM架构,系统移植和驱动开发总结

    本次结束了对ARM架构,系统移植和驱动开发的学习,它们都是属于底层,难度想对都比较的难一点,但先学习arm架构之后去学习系统移植和驱动开发,会使自己对系统移植和驱动开发容易理解点. arm架构 arm ...

  4. 嵌入式Linux系统移植的四大步骤

    最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们的开发环境没有一个深刻的认识,有时候几个简单的命 ...

  5. 嵌入式Linux系统移植的四大步骤(详细长文,慎入!)

    关注.星标公众号,直达精彩内容 来源:网路素材 最近在学习系统移植的相关知识,在学习和调试过程中,发现了很多问题,也解决了很多问题,但总是对于我们的开发结果有一种莫名其妙的感觉,纠其原因,主要对于我们 ...

  6. 车联网之基于Omap4 Andriod系统移植的行车电脑终端

    本文主要是以一个早期的移动终端产品案例进行简要地系统移植分析,其中牵涉到多个硬件模块的驱动.framework.app移植与实现. 一.x-loader.u-boot移植 OMAP平台的启动初始化(b ...

  7. 系统移植2:bootloader的选择(u-boot)和移植

    Boot Loader 概念 就是在操作系统内核运行之前运行的一段小程序.通过这段小程序,我们可以初始化硬件设备.建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统 ...

  8. x210:uboot和系统移植

    注:本文是对朱老师uboot和系统移植课程的备忘引导性笔记,主要是为了能够在学完后快速回忆起相关内容.本文主要记录了一些关键易忘性知识点并包含少量理解性内容,遵循尽量精简的原则,以尽量少的篇幅概括整个 ...

  9. 嵌入式Linux 系统移植流程总结

    嵌入式Linux系统移植主要由四大部分组成: 一.搭建交叉开发环境 二.bootloader的选择和移植 三.kernel的配置.编译.和移植 四.根文件系统的制作 第一部分:搭建交叉开发环境 先介绍 ...

最新文章

  1. 【MATLAB】符号数学计算(三):符号的精度计算
  2. 8、如何将SQL语句映射为文件操作
  3. 【Computer Organization笔记18】大实验讨论:控制器设计、指令流程表
  4. linux下688权限,Linux shell脚本笔记
  5. Mysql三种备份,mysqdump,xtrabackup工具,基于lvm-snapshot快照备份等。
  6. 如何制作纯净的U盘启动盘
  7. 华为研发岗位两轮面试的准备(本科生,已经拿到offer,月薪20k,15薪)
  8. Guake安装配置:下拉式Gnome桌面终端
  9. Unity 导入图片安卓和IOS自动转换格式ETC2或者ASTC
  10. 华三计算机网络笔试题,软考网络工程师试题
  11. jQuery源码中的“new jQuery.fn.init()”什么意思?
  12. c++ 向量化_一种新的FIR滤波器系数量化方法
  13. win10一直显示无网络连接到服务器,win10的网络为什么会有时显示无法连接到internet...
  14. 修炼“七字诀”的小米——读《小米创业思考》
  15. 关于如何运行Power Automate Flow
  16. C语言实现IP合法性判断
  17. Android11增加虚拟键盘开关
  18. 前端js实现图片上传
  19. 如何通过储蓄USD获得100%+年化收益
  20. 使用Electron构建跨平台文档扫描应用程序

热门文章

  1. 图形学中 平面的表示方法
  2. ofo小黄车大裁员:戴威要学王兴,拿巨头的钱做自己的事儿
  3. 华为手机鸿蒙好不好,华为鸿蒙6月2日正式上线,其未来前景到底怎么样?
  4. android实现更改密码,重要提醒:手机这个密码一定要改!
  5. java ssm框架_Java SSM框架的简单搭建
  6. 【NOIP模拟】幻象
  7. 使用Jsch通过SFTP下载ZIP文件并解压
  8. pyspark MLlib基本使用
  9. 职高学计算机怎么才能考本科,在读职高能考本科吗?是不是只能自学考试?
  10. Android推送平台试用总结报告