一、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. vba mysql odbc_使用VBA+ODBC+MySQL实现Excel网络版
  2. 树莓派debian配置lamp[解决Apache不显示php网页]
  3. 技术系列课回顾 | 网易云信线上万人连麦技术大揭秘
  4. C++11新特性-容器的cbegin和cend函数
  5. idea新建module 后 mapper老是说mapper和xml没有绑定
  6. SQL中及Access的空值
  7. PHP Warning: date() [function.date]解决方案
  8. ubuntu mysql 初始化_Ubuntu初始化MySQL碰到的坑
  9. 数据采集与清洗基础习题(二)Python爬虫常用模块,头歌参考答案
  10. 谈谈如何在面试中发掘程序猿的核心竞争力 什么是程序员的核心竞争力?
  11. JavaScript Cookie的操作
  12. Java 算法 数字黑洞
  13. 从零实现Vue的组件库(零)- 基本结构以及构建工具
  14. javascript中new url()属性,轻松解析url地址
  15. R语言构建层次分析模型不看一下吗~
  16. ENVI 5.6/IDL 8.8 新特性介绍
  17. 图像取证:由色差发现数字篡改痕迹
  18. 基于51单片机的知识
  19. Git 团队协作中常用术语 WIP PTAL CC LGTM 等解释
  20. java api管理工具_api 接口管理工具

热门文章

  1. 用计算机做实验教案,科学教案7篇
  2. vue-管道符“ | “(竖杠)的作用
  3. win10链接无线打印服务器,win10系统连接无线打印机的操作方法
  4. 在线获取浏览器指纹查看工具
  5. Python列表及其基本的操作(增删改查)
  6. python稳定版本是哪些_python3哪个版本稳定_后端开发
  7. 168元的4G路由器真实价值多少?蒲公英4G路由器X4C测评
  8. 【面试集锦 - C语言 - 单元测试】
  9. 【Leetcode刷题篇】leetcode75 颜色分类
  10. mysql覆盖索引详解