详谈ARM架构与ARM内核发展史

戳蓝字“CSDN云计算”关注我们哦!

作者 | 架构师技术联盟

责编 | 阿秃

1、ARM架构与ARM内核

1.1 ARM架构与内核简述

目前为止,ARM总共发布8种架构:ARMv1、ARMv2、ARMv3、ARMv4、ARMv5、ARMv6、ARMv7 、ARMv8,这是ARM架构指令集的多个v版本。

基于不同的ARM架构可以设计出不同特点的内核处理器。比如基于ARMv3架构设计出的处理器ARM6、ARM7,这两款处理器适用于不同的场景,硬件可能不同,但是架构指令集是一样的。

好比盖房子,刚开始因为水平低流行盖平房,这就是一种架构(ARMv5),然后这种平房架构你可以设计出一款独立卫生间的款式, 这叫ARM7内核。 然后其他人(芯片设计公司)想盖房子的就买你这个图纸去盖,接着过一段时间,有人觉得光独立卫生间还不够啊, 我还想有个小院子! 好吧,那ARM就满足你们的要求,出个带小院子的款式(ARM9)。

即ARMv1/2/3等是指令集的架构,ARM7/9等是基于架构设计出的内核处理器。ARM的架构都是基于RISC指令集而设计的,内核是实现这一指令集的硬件架构的基础。

1.2  ARM各架构之间区别

1.2.1 ARM版本Ⅰ:V1版架构

该版架构只在原型机ARM1出现过,只有26位的寻址空间,没有用于商业产品。其基本性能有:

  • 基本的数据处理指令(无乘法);

  • 基于字节、半字和字的Load/Store指令;

  • 转移指令,包括子程序调用及链接指令;

  • 供操作系统使用的软件中断指令SWI;

  • 寻址空间:64MB(226)。

1.2.2 ARM版本Ⅱ:V2版架构

该版架构对V1版进行了扩展,例如ARM2和ARM3(V2a)架构。包含了对32位乘法指令和协处理器指令的支持。

版本2a是版本2的变种,ARM3芯片采用了版本2a,是第一片采用片上Cache的ARM处理器。同样为26位寻址空间,现在已经废弃不再使用。V2版架构与版本V1相比,增加了以下功能:

  • 乘法和乘加指令;

  • 支持协处理器操作指令;

  • 快速中断模式;

  • SWP/SWPB的最基本存储器与寄存器交换指令;

  • 寻址空间:64MB。

1.2.3 ARM版本Ⅲ: V3版架构

ARM作为独立的公司,在1990年设计的第一个微处理器采用的是版本3的ARM6。它作为IP核、独立的处理器、具有片上高速缓存、MMU和写缓冲的集成CPU。

变种版本有3G和3M。版本3G是不与版本2a向前兼容的版本3,版本3M引入了有符号和无符号数乘法和乘加指令,这些指令产生全部64位结果。V3版架构( 目前已废弃 )对ARM体系结构作了较大的改动:

  • 寻址空间增至32位(4GB);

  • 当前程序状态信息从原来的R15寄存器移到当前程序状态寄存器CPSR中(Current Program Status Register);

  • 增加了程序状态保存寄存器SPSR(SavedProgram Status Register);

  • 增加了两种异常模式,使操作系统代码可方便地使用数据访问中止异常、指令预取中止异常和未定义指令异常。;

  • 增加了MRS/MSR指令,以访问新增的CPSR/SPSR寄存器;

  • 增加了从异常处理返回的指令功能。

1.2.4 ARM版本Ⅳ: V4版架构

V4版架构在V3版上作了进一步扩充,V4版架构是目前应用最广的ARM体系结构,ARM7、ARM8、ARM9和StrongARM都采用该架构。

V4不再强制要求与26位地址空间兼容,而且还明确了哪些指令会引起未定义指令异常。指令集中增加了以下功能:

  • 符号化和非符号化半字及符号化字节的存/取指令;

  • 增加了T变种,处理器可工作在Thumb状态,增加了16位Thumb指令集;

  • 完善了软件中断SWI指令的功能;

  • 处理器系统模式引进特权方式时使用用户寄存器操作;

  • 把一些未使用的指令空间捕获为未定义指令

1.2.5 ARM版本Ⅴ: V5版架构

V5版架构是在V4版基础上增加了一些新的指令,ARM10和Xscale都采用该版架构。这些新增命令有:

  • 带有链接和交换的转移BLX指令;

  • 计数前导零CLZ指令;

  • BRK中断指令;

  • 增加了数字信号处理指令(V5TE版); 为协处理器增加更多可选择的指令

  • 改进了ARM/Thumb状态之间的切换效率;

  • E---增强型DSP指令集,包括全部算法操作和16位乘法操作;

  • J----支持新的JAVA,提供字节代码执行的硬件和优化软件加速功能。

1.2.6 ARM版本Ⅵ: V6版架构

V6版架构是2001年发布的,首先在2002年春季发布的ARM11处理器中使用。在降低耗电量地同时,还强化了图形处理性能。通过追加有效进行多媒体处理的SIMD (Single Instruction, Multiple Data,单指令多数据 )功能,将语音及图像的处理功能提高到了原型机的4倍。此架构在V5版基础上增加了以下功能:

  • THUMBTM:35%代码压缩;

  • DSP扩充:高性能定点DSP功能;

  • JazelleTM:Java性能优化,可提高8倍;

  • Media扩充:音/视频性能优化,可提高4倍

2、ARM产品型号

2.1 内核产品型号

基于各ARM架构设计的内核型号如下图所示:

目前常见的指令集的说明:ARMv7之前均为32位总线位宽,从ARMv8开始扩展为64位总线位宽(数据总线、地址总线、控制总线位宽均为64位,一般寻址空间不会用满)。

 

2.2 产品命名规则

ARM处理器命名规则和格式:ARM x y z T D M I E J F -S

  • x:序列

  • y:2:带MMU, 4带MPU,6没有

  • z:0:标准cache,2:减小的cache, 6可变的cache

  • T:处理器支持Thumb指令集

  • D:支持JTAG调试器

  • M:支持长乘法指令

  • I:有嵌入式跟踪宏单元

  • E:支持增强指令(基于TDMI)

  • J:支持JAVA硬件加速(Jazelle)

  • F:支持向量浮点单元

  • S:可综合版本

 

2.3 内核产品应用

  • ARM7:ARMv4架构

  • ARM9:ARMv5架构

  • ARM11:ARMv6架构

  • ARM-Cortex 系列:ARMv7架构。

ARM7没有MMU(内存管理单元),只能叫做MCU(微控制器),不能运行诸如Linux、WinCE等这些现代的多用户多进程操作系统,因为运行这些系统需要MMU,才能给每个用户进程分配进程自己独立的地址空间。ucOS、ucLinux这些精简实时的RTOS不需要MMU,当然可以在ARM7上运行。

ARM9、ARM11,是嵌入式CPU(处理器),带有MMU,可以运行诸如Linux等多用户多进程的操作系统,应用场合也不同于ARM7。

到了ARMv7架构的时候开始以Cortex来命名,并分成Cortex-A、Cortex-R、Cortex-M三个系列。三大系列分工明确:

  • “A”系列面向尖端的基于虚拟内存的操作系统和用户应用;

  • “R”系列针对实时系统;

  • “M”系列对微控制器。简单的说Cortex-A系列是用于移动领域的CPU,Cortex-R和Cortex-M系列是用于实时控制领域的MCU。

1、Cortex-M系列:M-Profile,即"Microntroller"- Profile,侧重微控制器单片机方面的场合。

2、Cortex-R系列:R-Profile,即"Real-Time"-Profile,侧重于实时系统的场合。

3、Cortex-A系列:A-Profile,即“Application”-Profile,侧重于应用功能的场合。

福利扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!
推荐阅读:
  • CPU 到底是怎么认识代码的?涨姿势了!

  • 终于有人把超融合和边缘计算说清楚了

  • 达摩院 2020 预测:模块化降低芯片设计门槛 | 问底中国 IT 技术演进

  • 千万不要和程序员一起合租!

  • 2019全年盘点之一:公链生死战场

  • 鲲鹏之大,何止几千里?

真香,朕在看了!

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

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

相关文章

DMN结合bpmn简化流程_07

项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 视频地址:https://www.bilibili.com/video/av79774697/ DMN集成到BPMN中使用 简化流程,让我们的BPMN显得更加优雅 * DMN集成bpmn使用 新建决策树模板 注意一定要部署&…

阿里云RPA(机器人流程自动化)干货系列之一:认识RPA(上)

本文是阿里云RPA(机器人流程自动化)干货系列的开山之作,全面、详细的剖析了RPA的基本概念、给企业带来的价值点以及RPA的优劣势分析。 一、什么是RPA? 人类社会进入21世纪的第一个十年之后,全球企业大都面临着两个严峻…

linux pip3使用清华源_Linux实战016:Ubuntu搭建python开发环境

我们在安装Ubuntu系统的时候会自带安装python2.7和python3.6版本的Python解释器,直接执行"ptyhon"默认运行的是python2.7,只有执行"python3"时才会运行python3.6版本。Python解释器默认安装在/usr/bin目录下,但是Ubuntu并…

编写一个C程序,实现以下功能:定义一个学生结构体Student(含学号、姓名、年龄、身高)和一个函数sort(struct Student *p),该函数使用选择排序法按年龄由小到大排序。在主函数中

编写一个C程序,实现以下功能: 定义一个学生结构体Student(含学号、姓名、年龄、身高)和一个函数sort(struct Student *p),该函数使用选择排序法按年龄由小到大排序。在主函数中输入10个学生的学号、姓名、年龄和身高,调用sort函数…

在抖音上刷到AI程序员的工资条后,我笑了,别吹了!

2020年,程序员会怎么样?A与B ,薪酬与前景程序员与远方2017年~2018年,是人工智能大火的时候。你会发现,跟朋友聊天不谈人工智能,聊天的bigger都上不去。作为一个前景明朗的朝阳行业,高薪吸引&…

C++面向对象思想 两条直线交点计算

我相信哪怕一点光,也能驱散学习中的迷雾,我在这分享一点自己的挫见 思路: 这题最大的难点就是abc三个常数要怎么去构造,这里需要数学公式去推导,虽然是初中水平,也能体现编程和数学密不可分了。因为我之后…

K8s 实践 | 如何解决多租户集群的安全隔离问题?

戳蓝字“CSDN云计算”关注我们哦!作者 | 匡大虎责编 | 阿秃导读:如何解决多租户集群的安全隔离问题是企业上云的一个关键问题,本文主要介绍 Kubernetes 多租户集群的基本概念和常见应用形态,以及在企业内部共享集群的业务场景下&a…

scara机器人dh参数表_两分钟带你了解机器人标定的因素

为什么机器人需要标定?影响机器人本体精度因素分为两大类:运动学因素——加工误差、机械公差/装配误差、减速器精度、减速器空程等;动力学因素——质量、惯性张量、摩擦力、关节柔性、连杆柔性。机器人本体的实际精度和理论设计模型可能会存在…

Git的3大区域

为什么使用git? 为了保存文件的每一个历史记录,以便查看每一个历史节点的文件变动情况和把错误的的历史节点回滚。 git分为3个区域,工作区、暂存区、版本库(本地)。 工作区包括git已经管理的文件区域和新增以及修改的文件区域 暂存区&#x…

python编辑学生分数_python处理excel(04)数据筛选和过滤

源数据,我们最终要找出年龄在18——30岁之间,分数大于85分的学生,为A类学生。在excel里可以使用筛选功能,先筛选age列,大于等于、小于。这两个条件限制。然后选score后边的小三角,条件为大于等于85.最终数据…

如何打通“鱼塘” ?腾讯启动“SaaS技术联盟” 共建技术中台

戳蓝字“CSDN云计算”关注我们哦!作者 | 刘丹出品 | CSDN云计算(ID:CSDNcloud)“SaaS企业迎来了最好的时代。一方面,产业互联网大潮已至,中国企业降本增效的需求提升;另一方面,云计算…

Git 回滚

文章目录1. 简述2. 命令版本3. idea 图形化版本(场景1)4. idea 图形化版本(场景2)1. 简述 Git 回滚:常见的有2种场景,第一种是回滚到之前版本,第二种是回滚到之后的版本。 2. 命令版本 用到的命令: 场景1(回滚之前的版本)&…

python开两个守护线程_python 守护线程

守护线程 如果python线程是守护线程,那么以为着这个线程是“不重要”的,“不重要”意味着如果他的父进程结束了但该守护线程没有运行完,守护进程就会被强制结束。如果线程是非守护线程,那么父进程只有等到守护线程运行完毕后才能结…

Nutanix企业云助力嘉里大通提升核心竞争力

Nutanix(纳斯达克代码:NTNX)近日宣布,物流行业领导企业嘉里大通 (Kerry EAS) 已采用Nutanix超融合基础架构(HCI)和企业云解决方案,进行企业数据中心的现代化改造。 尽管面临全球贸易和区内经济…

SoapUI 测试http接口实战

文章目录1. New SOAP project2. New TestSuite3. New TestCase4. Add HTTP Request5. 配置请求参数信息6. 选择请求报文类型1. New SOAP project 1)打开soapui–>右键Projects–>New SOAP project 2. New TestSuite 3. New TestCase 4. Add HTTP Request …

Git开发流程和工作流

开发流程: C2版本基于C1版本开发;C3版本基于C2版本开发; C4版本基于C3版本开发;C5版本基于C3版本开发; C6 是C4和C3合并后的版本 分支3个总览: 主分支、bug分支、新功能分支 Git修改变动分析:…

AI 安全在阿里业务中的实践,你了解吗?

我们知道,AI 技术将在很长一段时间占据互联网技术时代的风口。但是,有代码的地方就有缺陷,提到技术很难不讲安全,那么AI会不会碰到安全问题呢? AI安全 试想一下,未来的某个早晨,当你像往常一样…

解决idea修改html、js、css后,浏览器不能同步加载

重装了IDEA后,忽略了一些设置,导致在开发springboot项目时,启动了项目,修改了前端文件,但是浏览器中并不能实时加载修改的内容。 主要是IDEA的2个地方需要设置: 一、修改file-settings 二、在IDEA中&…

安全多方计算新突破!阿里首次实现“公开可验证” 的安全方案

阿里妹导读:近日,阿里安全双子座实验室与马里兰大学等高校合作的论文《Covert Security with Public Verifiability: Faster, Leaner, and Simpler 》【1】被欧洲密码年会(Eurocrypt)2019接收。这是国内公司在安全多方计算领域的第一篇顶会论文&#xff…

996!007!同是敲了2万行代码,为什么他却晋升了?

正在敲代码的你 ,春节假期即将来临,复盘这1年,你印象最深刻的一件事是什么?有人在群里回答了一条扎心的答案:忙碌1年,每天996,回首2019除了加班再无成长可说。你以为只要把事情搞定了&#xff0…