ARM公司发展史

news2024/10/6 20:31:39

1. 前言    

        当前,X86和ARM架构是公认的在商业化进程中表现最优秀的两大架构。之前我们已经介绍了X86架构,今天介绍另一个在近十年大火的架构,ARM。

        ARM架构,过去称作进阶精简指令集机器(Advanced RISC Machine,更早称作:Acorn RISC Machine),是一个32位精简指令集(RISC)处理器架构,被广泛地使用在嵌入式系统设计。由于节能的特点,ARM处理器非常适用于行动通讯领域,符合其主要设计目标为低耗电的特性。

        在今日,ARM家族占了所有32位嵌入式处理器75%的比例,使它成为占全世界最多数的32位架构之一。ARM处理器可以在很多消费性电子产品上看到,从可携式装置(PDA、移动电话、多媒体播放器、掌上型电子游戏,和计算机)到电脑外设(硬盘、桌上型路由器)甚至在导弹的弹载计算机等军用设施中都有他的存在。在此还有一些基于ARM设计的派生产品,重要产品还包括Marvell的XScale架构和德州仪器的OMAP系列。说的直白一些,ARM相当于移动领域的x86,全球有超过95%的移动设备采用ARM设计架构的处理器。

2.ARM公司发展史

        1978年,一家名字叫CPU(Cambridge Processor Unit)的公司在英国剑桥诞生,其创始人是一个名叫Hermann Hauser的奥地利籍物理学博士,还有一个名叫Chris Curry的英国工程师。

Hermann Hauser和Chris Curry
Hermann Hauser和Chris Curry

         CPU公司成立之后,主要从事电子设备设计和制造的业务。他们接到的第一份订单,是制造赌博机的微控制器系统。这个微控制器系统被开发出来后,称之为Acorn System 1。

Acorn System 1
Acorn System 1

         1979年,他们给公司换了个名字,叫做Acorn Computer Ltd。在Acorn System 1之后,他们又陆续开发了System 2、3、4,还有面向消费者的盒式计算机——Acorn Atom。

Acorn Atom
Acorn Atom

        到了1981年,公司迎来了一个难得的机遇——英国广播公司BBC打算在整个英国播放一套提高电脑普及水平的节目,他们希望Acorn能生产一款与之配套的电脑。但是Acorn缺少合适的芯片。当时美国国家半导体和摩托罗拉公司的16位芯片售价过高,同时,当时如日中天的英特尔(Intel)拒绝为他们提供相关处理器(80286)的设计资料和样品。一气之下,Acorn决定自己造芯片。

        就这样,Acorn公司的研发人员从美国加州大学伯克利分校找到了一个关于新型处理器的研究——简化指令集,恰好可以满足他们的设计要求。在此基础上,经过多年的艰苦奋斗,来自剑桥大学的计算机科学家Sophie Wilson和Steve Furber最终完成了微处理器的设计。对于这块芯片,Acorn给它命名为Acorn RISC Machine。这就是大名鼎鼎的“ARM”三个字母的由来。

Sophie Wilson和Steve Furber  前者负责指令集开发,后者负责芯片设计。
Sophie Wilson和Steve Furber
前者负责指令集开发,后者负责芯片设计。

        当时研发出来的第一款处理器芯片的型号,被定为 ARM1。当时ARM1和同时期Intel的80286处理器(也就是常说的286)对比如下: 

当时ARM1和同时期Intel的80286处理器对比
当时ARM1和同时期Intel的80286处理器对比

         可以看出来,ARM1和80286各有所长。但是,就在同一年,1985年10月,英特尔发布了80386。在80386面前,ARM1就只有被吊打的份了。

Intel 80386  32位,27.5万个晶体管,频率为12.5MHz,后提高到33MHz
Intel 80386
32位,27.5万个晶体管,频率为12.5MHz,后提高到33MHz

让ARM直接在性能上和x86系列硬杠,显然是不现实的。ARM有意无意地选择了与Intel不同的设计路线——Intel持续迈向x86高效能设计,ARM则专注于低成本、低功耗的研发方向。

3.ARM架构发展史

        有些人将“指令集体系结构”称为架构,这样就有了ARMv8架构、ARMv7-A架构、ARMv6架构等等,这些都是ARM设计的一些RISC指令集。

        所谓指令集体系结构,就是ARM公司推出的一整套的精简指令,它是计算机最低层的命令,比如说应用程序需要从内存读取数据,那么最后就是通过调用ARM设计的指令是实现内存读取。

        不过,也有人将ARM7、 ARM9、 ARM11以及Cortex等系列内核也称为架构。譬如,现在ARM主流的架构应该就是智能手机领域的Cortex-A系列架构、工业控制嵌入式领域的Cortex-M系列架构、对稳定性要求高的Cortex-R系列架构等。值得一提的是,ARM架构在不断演变的同时,仍保持了各个版本之间的兼容性。

        那么,为了清楚地表达每个ARM应用实例所使用的指令集,ARM公司定义了几种主要的ARM指令集结构版本,以版本号V1-V8表示。 

ARM V1-V8
ARM V1-V8

3.1ARMv1架构

        1985年,ARMv1架构诞生,该版架构只在原型机ARM1出现过,只有26位的寻址空间(64MB),没有用于商业产品。

3.2 ARMv2架构

        1986年,ARMv2架构诞生,该版本架构对V1进行了扩展,首颗量产的ARM处理器ARM2就是基于该架构,包含了对32位乘法指令和协处理器指令的支持,但同样仍为26位寻址空间。其后还出现了变种ARMv2a,ARM3即采用了ARMv2a,是第一片采用Cache的ARM处理器。

3.3 ARMv3架构

        1990年,ARMv3架构诞生,第一个采用ARMv3架构的微处理器是ARM6(610)以及ARM7,ARM6作为IP核、独立的处理器、具有片上高速缓存、MMCU和写缓冲的集成CPU,寻址空间增大到32位(4GB)。变种版本有3G和3M。版本3G是不与版本2a相兼容的版本3。版本3M引入了有符号和无符号数乘法和乘加指令。

3.4 ARMv4架构

        1993年,ARMv4架构在V3版上作了进一步扩充,是目前应用最广的ARM架构,ARM7(7TDMI)、ARM8、ARM9(9TDMI)和Strong ARM均采用了该架构。ARM在这个系列中引入了T变种指令集,即处理器可工作在Thumb状态,增加了16位Thumb指令集。V4不再强制要求与26位地址空间兼容,而且还明确了哪些指令会引起未定义指令异常。

3.5 ARMv5架构

        1998年,ARMv5架构诞生,在V4版基础上增加了一些新的指令,ARM7(EJ)、ARM9(E)、ARM10(E)和Xscale采用了该架构,这版架构改进了ARM/Thumb状态之间的切换效率。这些新增命令有带有链接和交换的转移BLX指令;计数前导零CLZ指令;BRK中断指令;增加了数字信号处理指令(V5TE版);为协处理器增加更多可选择的指令。此外还引入了DSP指令和支持JAVA。

3.6 ARMv6架构

        V6版架构于2001年正式发布,首先被应用在ARM11处理器。V6版架构在降低耗电量的同时,还强化了图形处理性能。它还引进了包括单指令多数据(SIMD) 运算在内的一系列新功能。通过追加有效进行多媒体处理的SIMD(Single Instruction,Multiple Data,单指令多数据)功能,将语音及图像的处理功能提高到了原型机的4倍。此外,还引入了混合16位/32位的Thumb-2指令集和Trust Zone技术。

3.7 ARMv7架构

        2004年,ARMv7架构诞生,该版本架构采用了Thumb-2技术,它是在ARM的Thumb代码压缩技术的基础上发展出来的,并且保持了对已存ARM解决方案的完整的代码兼容性。此外,ARMv7还支持改良的运行环境,来迎合不断增加的JIT和DAC技术的使用。

        ARMv7架构还包括 NEON™ 技术扩展,可将DSP和媒体处理吞吐量提升高达400%,并提供改进的浮点支持以满足下一代3D图形和游戏以及传统嵌入式控制应用的需要。

        从这个时候开始ARM以Cortex来重新命名处理器,Cortex-M3/4/7,Cortex-R4/5/6/7,Cortex-A8/9/5/7/15/17都是基于该架构。

3.8 ARMv6-M架构

        2007年,在ARMv6基础上衍生了ARMv6-M架构,该架构是专门为低成本、高性能设备而设计,向以前由8位设备占主导地位的市场提供32位功能强大的解决方案。Cortex-M0/1/0+即采用的该架构。

3.9 ARMv8架构

        2011年,ARMv8架构诞生,Cortex-A32/35/53/57/72/73采用的是该架构,这是ARM公司的首款支持64位指令集的处理器架构。由于ARM处理器的授权内核被广泛用于手机等诸多电子产品,故ARMv8架构作为下一代处理器的核心技术而受到普遍关注。

        ARMv8是在32位ARM架构上进行开发的,主要被用于对扩展虚拟地址和64位数据处理技术有更高要求的产品领域。ARMv8是近20年来,ARM架构变动最大的一次。它引入的Execution State、Exception Level、Security State等新特性,已经颠覆了我们对旧的ARM架构的认知。

        可以看出,从ARMv7架构开始,ARM的命名方式有所改变。新的处理器家族,改以Cortex命名,并分为三个系列,分别是Cortex-A,Cortex-R,Cortex-M。

Cortex-A针对高性能计算。如我们目前手机SoC中常出现的Cortex-A76等
Cortex-R针对实时操作处理。主要是面向嵌入式实时处理器。在汽车的电子制动系统,工业控制领域等领域比较常见
Cortex-M专为低功耗、低成本系统设计。目前火热的IoT领域常常见到采用Cortex-M架构的处理器

        其实,除了上述三大系列之外,还有一个主打安全的Cortex-SC系列(SC:SecurCore),主要用于政府安全芯片。

4. ARM授权模式的确立

        ARM 公司本身并不靠自有的设计来制造或出售 CPU ,而是将处理器架构授权给有兴趣的厂家。

        1990年,Acorn为了和苹果合作,专门成立了一家合资公司,名叫ARM(Advanced RISC Machines)。苹果投了150万英镑,芯片厂商VLSI投了25万英镑,Acorn本身则以150万英镑的知识产权和12名工程师入股。

        在成立后的那几年,ARM业绩平平,工程师们也人心惶惶,害怕随时都会失业。在这个情况下,ARM决定改变他们的产品策略——他们不再生产芯片,转而以授权的方式,将芯片设计方案转让给其他公司,即“Partnership”开放模式。没想到正是这种模式,开创了属于ARM的全新时代。

        ARM所采取的是IP授权的商业模式,收取一次性技术授权费用和版税提成。具体来说,ARM有三种授权方式:使用层级授权、内核层级授权和架构层级授权。这三个层级的权限是依次上升的。

        使用层级授权是最基本也是最低的授权等级。这就意味着你只能拿别人提供的定义好的IP来嵌入在你的设计中,不能更改人家的IP,也不能借助人家的IP创造自己的基于该IP的封装产品。拥有使用授权的用户只能购买已经封装好的ARM处理器核心,而如果想要实现更多功能和特性,则只能通过增加封装之外的DSP核心的形式来实现(当然,也可以通过对芯片的再封装方法来实现)。由于担心对知识产权保护不力,ARM对很多中国背景的企业均采取这一级别的授权。

        内核层级授权指可以以一个内核为基础然后在加上自己的外设,不能改变原有设计,但可以根据自己的需要调整产品的频率、功耗等。比如USART GPIO SPI ADC 等等,最后形成了自己的MCU,比如三星、德州仪器(TI)、博通、飞思卡尔、富士通以及Calxeda等,这些公司并没有权限去对内核进行改造。

        架构层级授权是ARM会授权合作厂商使用自己的架构,且可以对ARM架构进行大幅度改造,甚至可以对ARM指令集进行扩展或缩减,方便其根据自己的需要来设计处理器。例如高通的Krait架构和苹果的Swift架构,就是在取得ARM的授权后根据自己的需求设计完成的。

        做个很形象的比喻:假设我写了一篇文章,我只授权了你转发,不能更改,不能添油加醋,便是使用层级授权;我授权你可以在文章中引用我的文章,便是内核级授权;我授权你可以拿去修改、重组我的文章,形成一篇新的论文,便是架构层级授权。

注意,某一版本的架构层级授权,通常是永久性的。

        如果按照用途来划分得更细一点,ARM的授权模式还包括了比如学术授权是免费面向高校和科研机构的;比如Design Start,是为了方便半导体企业低成本、低风险、快速了解ARM IP的一种授权模式;这两种模式下设计出来的芯片不能销售,只能用于内部研究。

        还有多用途授权和终身多用途授权,以时间为授权效力划分,相对来说比较适合大型企业。而单用途授权以用途划分授权效力范围,这种授权模式之下,需要交一笔前期授权费,此后按照每颗芯片收取约2%的版税。这种授权相对来说比较适合创业公司,或者目标明确的特定设计项目。

        正是ARM的这种授权模式,极大地降低了自身的研发成本和研发风险。它以风险共担、利益共享的模式,形成了一个以ARM为核心的生态圈,使得低成本创新成为可能。目前ARM在全球拥有大约1000个授权合作、超过300家合作伙伴,但是敢于购买架构授权的,也只有15家。高通Krait、苹果Swift、Marvell都是典型的用户。正是靠着如此众多授权伙伴的支持,ARM处理器才获得了25亿颗的季度出货量,历史总量已经达到500亿颗,可以绕地球12周。

4.1 ARM授权使用方

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/169692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java】【系列篇】【Spring源码解析】【二】【整体】【Spring整体流程解析】

本篇文章的目的是希望对Spring运行有个整体上的了解,后面的文章都是基于此12大步骤 读完这篇文章,你可以了解到: 1.spring运行的大致流程,他在这个期间做了哪些事 2.xml方式和注解方式载入BeanDifinition的时机一、Spring的运行的…

AgentTesla 掀起攻击全球各地企业的浪潮

大量带有恶意附件的电子邮件发送到南美洲与欧洲的企业。从 2022 年 8 月 12 日开始针对西班牙、葡萄牙、罗马尼亚和南美洲多个国家的企业进行发送,后续针对德国与阿根廷的企业发起了更大规模的攻击,迄今为止已经发送了超过 26000 封邮件。 感染链 攻击…

[MRCTF2020]Ez_bypass

目录 信息收集 代码审计 第一个判断 第二层判断 传参方式 补充说明 信息收集 打开靶场页面显示给出提示 I put something in F12 for you include flag.php; $flagMRCTF{xxxxxxxxxxxxxxxxxxxxxxxxx}; if(isset($_GET[gg])&&isset($_GET[id])) { $id$_GET[i…

大数据技术架构(组件)6——Hive:流程剖析3

1.1.3、Statistics Job从OperatorTree生成Job的过程:1、对输出表生成MoveTask2、从OperatorTree中的一个根节点向下深度优先遍历3、ReduceSinkOperator标识Map/Reduce界限,多个Job间的界限4、遍历其他根节点,遇到JoinOpeartor合并MapReduceTask5、生成St…

JavaWeb-RequestResponse

JavaWeb-Request&Response 1,Request和Response的概述 Request是请求对象,Response是响应对象。这两个对象在我们使用Servlet的时候有看到: 此时,我们就需要思考一个问题request和response这两个参数的作用是什么? requ…

放假第一二天

假期 # 生活 # 水文 每年放假回家都会发生很多有意义或者说有意思、开心、喜庆的事情,而在我孩童时期那只能是一段段回忆;至于现在则是我朋友圈众多记录中的一条。 但是,从现在开始我想尝试尝试在发朋友圈的基础上再加一个文字叙述&#xff…

C语言:函数

往期文章 C语言:初识C语言C语言:分支语句和循环语句 目录往期文章前言1. 函数是什么2. 库函数3. 自定义函数4. 函数的参数5. 函数的调用6. 函数的嵌套调用和链式访问6.1 函数嵌套调用6.2 函数的链式访问7. 函数的声明和定义8. 函数的递归后记前言 今天…

什么是无线网桥?全方位解析无线网桥及应用场景

欢迎来到东用知识小课堂!1.无线网桥介绍无线网桥的主要用途就是用于桥接两个网络,它可以取代网线,在不方便布线的环境或是无法挖沟埋管,环境已经既定无法再去破坏的环境当中通过无线微波的传输方式,进行网络、视频、数…

Android ViewModel,Lifecycles和LiveData组件讲解

文章目录一、ViewModelViewModel基本用法向ViewModel传递参数二、Lifecycles三、LiveDataLiveData的基本用法map和switchMapJetPack是一个开发组件工具集,他的主要目的是帮助我们编写出更加简洁的代码,并简化我们的开发过程。JetPack中的组件有一个特点&…

【C++11】右值引用

右值引用是C11中才被提出来的新概念,而以前的版本中也有引用,但是是指的左值引用。归根结底,左右值引用都是给对象取别名。 1.区分左值和右值 提起左值和右值很多小伙伴可能第一时间会有点小蒙圈,敲了好长时间代码了,对…

【Java基础】—— Java简介(超详细整理,适合新手入门)

​ “作者 久绊A” 专注记录自己所整理的Java、web、sql等,IT技术干货、学习经验、面试资料、刷题记录,以及遇到的问题和解决方案,记录自己成长的点滴。 写给小白看的入门级 Java 基本语法,需要掌握哪些知识点? Java涵盖的知识点…

1个 30多年程序员的生涯经验总结

有人说:一个人从1岁活到80岁很平凡,但如果从80岁倒着活,那么一半以上的人都可能不凡。 生活没有捷径,我们踩过的坑都成为了生活的经验,这些经验越早知道,你要走的弯路就会越少。 在我30多年的程序员生涯里…

部分iphone、安卓手机打开微信小程序不请求、白页问题

前言: 最近项目上发现用户测试小程序体验版打开一直白页,请求没反应,页面不渲染。开始以为是微信小程序某api问题,或者用户微信版本过低,或者用户网络不好,甚至考虑是不是服务器问题!因为后端是…

vue3中如何使用JSX?

在绝大多数情况下&#xff0c;Vue 推荐使用模板<template>语法来创建应用。 在 Vue 3 的项目开发中&#xff0c;template 是 Vue 3 默认的写法。虽然 template 长得很像 HTML&#xff0c;但 Vue 其实会把 template 解析为 render 函数&#xff0c;之后&#xff0c;组件运…

【Java多线程】线程的优先级

线程的优先级等级 MAX_PRIORITY&#xff1a;10 MIN _PRIORITY&#xff1a;1 NORM_PRIORITY&#xff1a;5 涉及的方法 getPriority() &#xff1a;返回线程优先值 setPriority(int newPriority) &#xff1a;改变线程的优先级 例&#xff1a; 我们将分线程的优先级设置为…

Java设计模式-迭代器模式Iterator

介绍 根据GoF的定义&#xff0c;迭代器模式提供了一种顺序访问聚合对象的元素而不暴露其底层表示的方法。这是一种行为设计模式。 顾名思义&#xff0c;迭代器有助于以定义的方式遍历对象集合&#xff0c;这对客户端应用程序很有用。在迭代期间&#xff0c;客户端程序可以根据需…

SciPy 教程与安装

SciPy 教程SciPy 是一个开源的 Python 算法库和数学工具包。Scipy 是基于 Numpy 的科学计算库&#xff0c;用于数学、科学、工程学等领域&#xff0c;很多有一些高阶抽象和物理模型需要使用 Scipy。SciPy 包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、…

小场景解决大问题|明道云在京东方的落地实践

我是来自京东方集团京东方晶芯科技有限公司的季旭。很荣幸给各位分享我们京东方集团和明道云之间的合作情况。 关于京东方晶芯 在分享之前&#xff0c;我首先给各位介绍一下我们公司。京东方集团是1993年4月成立的&#xff0c;以半导体显示为核心技术&#xff0c;在物联网创新…

聚观早报 | 硅谷大数据龙头Palantir扩招;滴滴出行恢复新用户注册

今日要闻&#xff1a;硅谷大数据龙头Palantir扩招&#xff1b;美团无人机去年完成配送超10万单&#xff1b;滴滴出行恢复新用户注册&#xff1b;PS VR2将于2月22日全球同步上市&#xff1b;改款特斯拉 Model 3加州路测谍照曝光硅谷大数据龙头Palantir扩招 1 月 17 日消息&#…

【Javascript】面向对象编程,this,原型与原型链,类与实例

❤️ Author&#xff1a; 老九 ☕️ 个人博客&#xff1a;老九的CSDN博客 &#x1f64f; 个人名言&#xff1a;不可控之事 乐观面对 &#x1f60d; 系列专栏&#xff1a; 文章目录对象中的方法/thisthis使用bind函数原型原型链类与实例class对象中的方法/this 面向对象&#x…