ARMday1

1、计算机的组成

输入设备-输出设备-运算器-控制器-存储器

输入设备:键盘、鼠标、手柄、扫描仪

输出设备:显示屏、打印机、音响

存储器:存放数据以及指令、是实现“程序存储控制”的基础、外存、内存、cache、寄存器

控制器(CU):对机器指令进行译码操作、按照译码结果进行相应的控制 

运算器:根据控制器译码之后的指令和数据,进行算数逻辑运算,并且把运算的结果进行输出

 

2、程序编译原理(面试重点)

  • 预处理:gcc -E 1.c -o 1.i
  • 编译:gcc -S 1.i -o 1.s
  • 汇编:gcc -c 1.s -o 1.o
  • 链接:gcc 1.o -o a.out

 

3 、指令和集合

  • 机器指令(指令的机器码):由二进制的0和1组成的一条机器码。计算机解析这条机器码可以做相应的运算处理
  • 汇编指令:一条汇编指令就是一条机器指令的标志。执行汇编指令也可以让机器进行相关的运算处理
  • 指令集:指令的集合

4、 RISC和CISC

RISC(精简指令集)的架构主要应用于嵌入式的设备上

选取比较简单、使用频率比较高的指令集

1、指令的长度和指令执行的周期固定

2、成本、功耗、体积低、实现功能相对简单

CISC(复杂指令集)基于复杂指令集设计的CPU核心更加注重功能的完善性,复杂指令集内核会集合各自各样的指令

1、指令的长度和执行周期不固定

2、功能更为复杂、但是功耗、成本更高

5、目前几种主流的RISC内核

ARM内核、RISC-V、MIPS

6、ARM的发展历史(了解即可)ARM发展史 (huawei.com)

1>ARM:ARM公司、ARM处理器架构、ARM技术

2>ARM 公司是全球领先的半导体知识产权 (IP) 提供商,并因此在数字电子产品的开发中处于核心地位

3>ARM 的商业模式主要涉及 IP 的设计和许可,而非生产和销售实际的半导体芯片。

ARM成立 ARM前身为艾康电脑(Acorn)-----里程碑1

于1978年,英国剑桥成立,大学的孵化物。

1980年代晚期,苹果开始与艾康合作,开发新版ARM核心。

1985年,艾康开发出全球第一款商用RISC处理器,即ARM1,针对于PC市场,还没有嵌入式呢!!!

1990年,艾康财务危机,受苹果和VLSI(最早做超大规模集成电路的公司)的投资,成立独立子公司:Advanced RISC Machines(ARM),ARM公司正式成立面世 里 程碑2——嵌入式RSIC处理器

1991年,ARM推出第一款嵌入式RISC处理器,即ARM6。

1993年,发布ARM7。

1997年,发布ARM9TDMI,三星2440基于此内核。

1999年,发布ARM9E,增强型ARM9。

2001年,ARMv6架构。

2002年,发布ARM11微架构。 里程碑3——微控制器

2004年,发布ARMv7架构的Cortex系列处理器,同时推出Cortex-M3。

2005年,发布Cortex-A8处理器。

2007年,发布Cortex-M1和Cortex-A9

2009年,实现Cortex-A9、发布Cortex-M0

2010年,推出Cortex-M4(F)、成立Linaro(ARM公司牵头成立的公共组织,专门做ARM处理器在Linux平台上的一些软件的开发和移植),推出Cortex-A15 MPcore高性能处理器(性能比较高了,但是发热量很大)。

里程碑4——64位处理器时代 2011年,推出32位 Cortex-A7 处理器,ARMv8发布

2012年,开始推出64位处理器。推出 Cortex-M0+、ARM 首款64位处理器架构 Cortex-A53、Cortex-A57 架构。全球第一款64位ARM手机iPhone5s。

2013年,推出32位 Cortex-A12 处理器架构

2014年,推出 Cortex-M7(F) 微控制器架构;32位 Cortex-A17处理器架构。

2015年,推出64位 Cortex-A35、Cortex-A72 处理器架构。

2016年,推出 Cortex-M23 、Cortex-M33(F) 微控制器架构;32位 Cortex-A32 处理器架构;64位 Cortex-A73 处理器架构。

2017年,推出64位 Cortex-A55 、Cortex-A75 处理器架构。

2018年,推出微控制器 Cortex-M35P;64位 Cortex-A76 处理器架构。

2016---ARM被软银收购

2020---英伟达收购ARM未果

7、ARM架构

不同版本的指令集就是不同的架构

ARMV1-ARMV6已经被淘汰 ARMV7架构:32位架构,支持32位指令集

ARMV8架构:64位架构,支持64位指令集,并且向下兼容32位指令

ARMV9架构:64位架构,支持64位指令集

8、ARM内核

基于不同的ARM架构设计出来的不同的处理器核心叫做不同的ARM内核

arm7/arm9/arm11

cortex-A7 ARMV7

cortex-A53 ARMV8

cortex-A55 ARMV8

cortex-A77 ARMV8

cortex-A78 ARMV8

cortex-x1 ARMV8

cortex-A710 ARMV9

cortex-A510 ARMV9

9、SOC(system on chip)

ARM公司只进行技术授权。将自己的IP授权给各个半导体公司。半导体公司根据ARM的授权,在CPU核心外围设计了一些外围电路和设备,集成在一个芯片上,这个芯片就被成为SOC。

SOC由CPU+外设备+总线组成

MCU(微控制器)

MPU(微处理器)

公司                 SOC名称                 内核                 架构

ST                   STM32MP157A       cortex-A7         ARMV7

三星                S5P6818                  cortex-A53      ARMV8

海思                麒麟9000                 cortex-A77      ARMV8

高通               骁龙888                    cortex-x1         ARMV8

10、ARM产品分布

Cortex-A系列:性能最强的、最完善的处理器。属于高端处理器、在基于Cortex-A处理器为核心的开发板上可以搭载linux/鸿蒙灯标准化操作系统

Cortex-R系列:统的实时性能。对数阶的实时性要求高的场景下使用Cortex-R系列 处理器 汽车、军工

Cortex-M系列:属于ARM处理器中比较低端的芯片处理器,工作主频一般在24M-256MHz之间

Cortex-M系列 处理器一般不跑操作系统,主要执行一些裸机程序

Cortex-M系列 处理器可以搭载一些轻量级的实时系统 FreeRtos

SecurCore系列:用于对安全性能要求比较高的场景

11、ARM的工作模式(面试重点)

ARM处理器在面对不同的情境下需要进入不同的工作模式进行对应模式下的处理

ARM 有7种基本工作模式:

User : 非特权模式,大部分任务执行在这种模式

FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式

IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式

Supervisor :当复位或软中断指令执行时将会进入这种模式

Abort : 当存取异常时将会进入这种模式

Undef : 当执行未定义指令时会进入这种模式

System : 使用和User模式相同寄存器集的特权模式 Cortex-A特有模式:

Monitor : 是为了安全而扩展出的用于执行安全监控代码的模式; 也是一种特权模式

HYP:虚拟化模式,当一个硬件上运行两种OS内核时进入这种模式

12、寄存器概念

寄存器是集成在CPU内部的存储组织,CPU访问寄存器数据的时候只需要根据寄存器的编号就可以访问到寄存器的数值。访问寄存器的速度块。但是寄存器存在数量限制,保存的数据量也很少

 13、ARM v7架构下的寄存器组织

 ARM 有37个32-Bits长的寄存器: 1 个用作PC( program counter)

1个用作CPSR(current program status register)

5个用作SPSR(saved program status registers)

30 个通用寄存器 Cortex体系结构下有40个32-Bits长的寄存器: Cortex-A多出3个寄存器, Monitor 模式 r13_mon , r14_mon, spsr_mon

当前处理器的模式决定着哪组寄存器可操作. 任何模式都可以存取: 相应的r0-r12子集 相应的 r13 (the stack pointer, sp) and r14 (the link register, lr) 相应的 r15 ( the program counter, pc) 相应的CPSR(current program status register, cpsr) 特权模式 (除system模式) 还可以存取: 相应的 spsr (saved program status register) 每一个寄存器大小都是32位

14、ARMV8架构寄存器组织

15、ARMV7架构下一些具有特定功能的寄存器

R13寄存器(the stack pointer, sp)

R13寄存器又叫SP(栈指针寄存器),这个寄存器内部保存栈顶的地址 一般在内存中分出一部分内存当作栈来使用,SP寄存器时钟保存栈顶空间的地址 栈一般存放一些临时数据,也可以用于保护现场

r15寄存器(the program counter, pc)

R15寄存器又被称为PC寄存器(程序计数器) 这个寄存器始终保存马上要进行取址的指令的地址,当一条指令执行结束之后PC寄存器的数值会自动向下+4 另外,在特定情况下可以手动修改PC的值进行程序的跳转

R14寄存器(the link register, lr)

R14寄存器又被称为链接寄存器,当程序在实现跳转的时候,LR寄存器中保存当前跳转指令下一条指令的地址。方便 实现程序的返回 程序的跳转实现: PC-》跳转之后指令的地址 程序的返回: PC=LR

16、CPSR寄存器(current program status register, cpsr)

CPSR:程序状态寄存器 这个寄存器中保存当前程序的运行状态,比如工作模式等信息 SPSR:saved program status register SPSR寄存器可以用于保存程序某一时刻的状态 比如当发生异常之后,处理器的工作模式要切换到对应的异常模式去处理异常,这样CPSR的数值会发生对应的改变 在处理完异常结束后,我们需要将CPSR的值修改为没有发送异常之前的状态,这个时候就可以将SPSR保存的异常发送之前的状态赋值给CPSR

17、ARM的流水线工作

1、 一条指令的执行过程

取址:CPU将PC寄存器中保持的指令地址通过地址总线传输给存储器,存储器将PC对应的指令通过数据总线传输给CPU。CPU将指令保存在IR(指令暂存寄存器)寄存器中

译码:IR寄存器的指令交给译码器,对指令进行译码

执行:译码器对指令译码之后由运算器对译码之后的指令进行运算

2、 ARM三级流水线

当一条指令在被取址是,译码模块和执行模块处于空闲状态,这样这两个模块相当于没有得到充分利用。为了充分,利用资源,ARM引入了流水线工作,增加了指令的处理速度

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

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

相关文章

梳理自动驾驶中的各类坐标系

目录 自动驾驶中的坐标系定义 关于坐标系的定义 几大常用坐标系 世界坐标系 自车坐标系 传感器坐标系 激光雷达坐标系 相机坐标系 如何理解坐标转换 机器人基础中的坐标转换概念 左乘右乘的概念 对左乘右乘的理解 再谈自动驾驶中的坐标转换 本节参考文献 自动驾驶…

Android Datastore 动态创建与源码解析

涉及到的知识点 1、协程原理---->很好的博客介绍,一个小故事讲明白进程、线程、Kotlin 协程到底啥关系? 2、Channel知识点---->Android—kotlin-Channel超详细讲解 3、Coroutines : CompletableDeferred and structured concurrency 封装的DataS…

基于Chirp窄带扩频技术的无线混合组网应用,以多角色智能计量插座作为Chirp广域基站,构建边缘计算混合无线网络

随着物联网(IoT)的不断发展,无线通信技术的需求也在不断增加。Chirp窄带扩频技术是一种具有广泛应用潜力的无线通信技术,它在低功耗、广域覆盖、抗干扰等方面具备独特的优势。本文介绍了如何利用磐启微Chirp技术构建ECWAN无线混合…

卡尔曼滤波之二:Python实现

卡尔曼滤波之二:Python实现 1.背景描述2.构建卡尔曼滤波公式2.1 预测2.2 更新 3.代码实现3.1 输入值3.2 pykalman包实现3.3 不使用Python包实现3.4 效果可视化 参考文献 了解了卡尔曼滤波之一:基本概念,可以结合代码来理解下卡尔曼滤波的2个预…

【数据库】数据库模式 Schema

数据库模式 Schema 1.MySQL2.PostgreSQL3.SQL Server4.Oracle5.SQLite 在数据库的术语中,模式(schema)是一个逻辑概念,用于组织数据库中的对象。模式中的对象通常包括 表、索引、数据类型、序列、视图、存储过程、主键、外键 等等…

Electron[3] 基础配置准备和Electron入门案例

1 背景 上一篇文章已经分享了,如何准备Electron的基础环境了。但是博客刚发才一天,就发现有人问问题了。经过实践发现,严格按照作者的博客教程走是不会有问题的,其中包括安装的环境版本等都要一致。因为昨天发的博客,…

【论文阅读】Equivariant Contrastive Learning for Sequential Recommendation

【论文阅读】Equivariant Contrastive Learning for Sequential Recommendation 文章目录 【论文阅读】Equivariant Contrastive Learning for Sequential Recommendation1. 来源2. 介绍3. 前置工作3.1 序列推荐的目标3.2 数据增强策略3.3 序列推荐的不变对比学习 4. 方法介绍4…

kafka问题汇总

报错1: 解决方式 1、停止docker服务   输入如下命令停止docker服务 systemctl stop docker 或者service docker stop1   停止成功的话,再输入docker ps 就会提示出下边的话: Cannot connect to the Docker daemon. Is the docker daem…

汽车标定技术(四)--问题分析:多周期测量时上位机显示异常

目录 1.问题现象 2.数据流分析 ​​​​3.代码分析 3.1 AllocDAQ 3.2 AllocOdt 3.3 AllocOdtEntry 4.根因分析及解决方法 4.1 根因分析 4.2 解决方案 1.问题现象 在手撸XCP代码时, DAQ的实现是一大头痛的事情。最初单周期实现还好一点,特别是…

聊一聊关于手机Charge IC的电流流向

关于手机Charge,小白在以前的文章很少讲,一是这部分东西太多,过于复杂。二是总感觉写起来欠缺点什么。但后来想一想,本是抱着互相学习来写文章的心理态度,还是决定尝试写一些。 关于今天要讲的关于手机Charge的内容&a…

Visual Studio Code 常用快捷键大全

Visual Studio Code 常用快捷键大全 快捷键是编码过程中经常使用,且能够极大提升效率的部分,这里给大家介绍一些VS Code中非常有用的快捷键。 打开和关闭侧边栏 Mac — Command B Windows — Ctrl B Ubuntu — Ctrl B 选择单词 Mac — Command D …

本地电脑监控软件

本地电脑监控软件是一种用于监控计算机使用行为的软件,它可以帮助企业管理者了解员工的工作状态和行为,保护企业的计算机资源。 本地电脑监控软件可以监控员工的计算机使用行为,包括屏幕监控、键盘记录、文件操作等。这些功能可以帮助企业管理…