嵌入式学习——ARM学习(1)

server/2024/10/22 18:43:15/

1、存储器

高速缓存(Cache)通常分为三级:L1、L2 和 L3。它们的主要功能和特点如下:

这三级缓存的设计旨在通过层次化存储来优化数据访问速度和处理器性能。

1、L1 缓存:

  • 位置:直接集成在处理器核心内。
  • 大小:通常较小(一般为 16KB 到 128KB)。
  • 速度:速度最快,延迟最低。
  • 功能:存储最常用的数据和指令,以提高处理器的访问速度。

2、L2 缓存:

  • 位置:通常也在处理器内,但可能与核心共享。
  • 大小:比 L1 大(一般为 256KB 到 2MB)。
  • 速度:速度较 L1 慢,但仍然比主内存快。
  • 功能:存储不常用但仍然频繁访问的数据和指令,作为 L1 的补充

3、L3 缓存:

  • 位置:通常是多个核心共享的缓存,位于处理器芯片上。
  • 大小:更大(一般为 2MB 到 64MB 或更多)。
  • 速度:速度比 L2 慢,但仍然比主内存快。
  • 功能:存储较少访问的数据,减少对主内存的访问,提高多核处理器的效率。

 2、指令

2.1机器指令

        机器指令又称机器码,在运算器内部存在各种运算电路,当处理器从内存中获取一条机器指令,就可以按照指令让运算器内部的指定的运算电路进行运算

2.2汇编指令

由于机器指令对人类不友好,每一条汇编指令都可以理解为一条机器指令的标识,当我们编写一条汇编指令时,相当于对应一条机器指令,就可以让运算器进行对应的运算

2.3指令集

指令集就是指令的集合。当设计一个处理器内核是,需要提前设计好内核中需要的运算器的运算电路的种类和数量,每一个运算电路都对应一条指令,所以设计内核之前先将每一条运算电路对应的指令设计出来,组成一个指令集,用于作为内核设计的框架。

2.4一条指令的执行过程分析

1)取指阶段:控制器将要执行的资料地址发送给内存,内存将指令返回给控制器

2)译码阶段:对取到的指令进行译码操作,分析当前指令的意义,通知运算器进行对应的运算 

3)执行阶段:指令译码完成后,运算器进行对应的运算操作,将运算的结果进行保存

3、精简指令集和复杂指令集

3.1复杂指令集

CISC:(Complex Instruction Set Computer)侧重于硬件执行指令的功能性,CISC指令集处理器的硬件结构复杂,但是功能强大。

CISC指令复杂,指令长度、周期都不固定,在处理能力上有优势,一般相对应的,功能、体积成本也会更高

指令长度:一条指令占用的存储空间大小

指令的周期:执行一条指令的时间

3.2精简指令集

RISC:Reduced Instruction Set Computer

RISC结构简单,选择了使用频率高的简单指令,指令长度固定,大小固定,多为单周期指令。

在功耗、体积、价格等方面有很大优势,多用于嵌入式领域

3.3其他架构

ARM架构:当前主流的精简指令集架构

RISC-V架构:开源的精简指令集架构

MIPS架构:被中国龙芯收购

4、ARM内核

ARM1-ARMV6 已经不使用了

ARMV7:    32位处理器架构,支持32位指令集

ARMV8: 64位处理器架构,支持64位指令集,同时向下兼容32位指令集

ARMv9:    64位处理器架构,支持64位指令集

//32位处理器表示一条机器指令最大能进行32位的数据运算

//32位指令集表示指令集中的每一条指令的长度是32位

内核                                    架构

cortex-a7                           ARMV7

cortex-a53                         ARMV8

cortex-a55                         ARMV8

cortex-a77                         ARMV8

cortex-a78                         ARMV8

cortex-a710                       ARMV9

cortex-a720                       ARMV9

4.1SOC

soc(system on chlip):片上系统、若干个内核组成了一个处理器,在处理器外部集成各个外设,通过总线完成连接,组成一个微型计算机系统、

MCU:微控制器

MPU:微处理器

4.2 Cortex-A系列

主要用于高性能应用,如智能手机、平板电脑、智能电视和嵌入式系统。适合需要运行复杂操作系统和应用程序的场景。

4.3 Cortex-R系列

专为实时应用设计,常用于汽车、工业控制、医疗设备和其他需要高可靠性和实时性能的领域。

4.4 Cortex-M系列

主要用于低功耗、低成本的嵌入式系统,如物联网设备、传感器、家电和消费电子产品。

4.5 SecurCore系列

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

4.6 Cortex-X系列

cortex-X系列是ARM在2016年新推出的一种内核系列,这系列的内核在云计算、边缘计算方面性能比较优越

5、ARM数据约定

A7采用的是32位架构

ARM约定:

        Byte 8 bits.

        Halfword 16 bits.

        Word 32 bits.

        Doubleword 64 bits.

大部分ARM core 提供:

        ARM 指令集(32-bit)

        Thumb 指令集(16-bit )        

6.ARM工作模式

cortex-A特有的模式:

1.monitor模式:执行安全监控代码时进入的模式

2.HYP模式:虚拟化支持模式

7.ARM V-7架构寄存器

8.ARM V-7架构下的一些特殊寄存器

8.1 R15寄存器 PC

R15寄存器又被称为(PC:program counter)程序计数器

PC寄存器保存即将被从内存中取出来的指令的地址

当PC保存的指令地址被处理器发送给内存之后PC的值会自动向下加一条指令的大小,

这也是程序可以继续向下顺序执行的原因

实现程序跳转的本质就是修改PC的值

一条指令的执行过程:

        取指:将要执行的指令从内存中取出来

        译码:对取出来的指令进行分析和译码操作

        执行:将译码之后的指令交给运算器进行运算处理

8.2 R14寄存器 LR

R14又被称为(LR:link register)链接寄存器

LR寄存器的作用是当执行指令时进行程序跳转时,LR会保存跳转指令下一条指令的地址,方便程序返回

8.3 R13寄存器 SP

R13寄存器又被称为(SP:stack pointer)栈指针寄存器

SP寄存器保存栈内存栈顶的地址,对一些临时数据进行压栈出栈操作时需要使用SP的值来找到栈区位置

8.4 CPSR/SPSR

8.4.1  CPSR/SPSR概念

CPSR寄存器又叫(current program status register)当前程序状态寄存器

这个寄存器的作用是保存当前程序的工作状态

工作状态中包含程序的工作模式、中断禁止位以及程序的运算结果条件位等信息

SPSR寄存器又叫(saved program status register)被保存的程序状态寄存器

这个寄存器当处理器因为各种异常切换到异常模式工作时会将CPSR值提前保存到SPSR中,处理器处理完异常之后会将SPSR的值

赋值给CPSR,用于恢复处理器的工作状态

8.4.2 CPSR/SPSR 32位 数据含义

1. N[31] : 指令的运行结果为负数时,N位被自动置1,否则为0.

                eg : 100 - 200

2. Z[30] : 指令的运行结果为零时,Z位被自动置1,否则为0.

                eg:100-100

3. C[29] : 加法:加法运算如果产生进位,C位被自动置1,否则为0.

                        32位指令:低32位向高32位进位

         ex:两个32位数运算得到超过32位的结果

         0XFFFFFFFE+0x3

                减法:减法运算如果产生借位,C位被自动清0,否则位1.

                        32位指令:低32位向高32位借位

        1-0XFFFFFFFE

4. V[28] : 符号位发送变化,V位被自动置1,否则清0.

5. I[7] : IRQ中断屏蔽位

         I = 0 : 不屏蔽IRQ中断

         I = 1 : 屏蔽IRQ中断

6. F[6] : FIQ中断屏蔽位

        F = 0 : 不屏蔽FIQ中断

        F = 1 : 屏蔽FIQ中断

7. T[5] : 状态位

        T = 0 : 表示ARM状态,执行的是ARM指令集

        T = 1 : 表示Thumb状态,执行的是Thumb指令集

        ARM指令集 : 一条汇编指令编译生成32位的机器码

        thumb指令集:一条汇编指令编译生成16位的机器码

        ARM指令集的代码的密度低,而thumb指令记得代码密度高。

        ARM指令集的功能性要高于Thumb指令集。

8. M[4:0] : 模式位

        10000 User mode;

        10001 FIQ mode;

        10010 IRQ

        10011 SVC mode;

        10111 Abort mode;

        11011 Undfined mode;

        11111 System mode;

        10110 Monitor mode;


http://www.ppmy.cn/server/107118.html

相关文章

一个简单的springboot项目(有源码)

开发一个springboot项目 代码迭代整合工具 gitee建模意义程序处理方式开发功能的步骤web服务网络状态码 web应用的开发分层springboot的作用 springboot框架搭建框架中各组件作用框架的演变如何提取hive中的表结构创建springboot 工程的引导模版 要选择aliyun ,否则…

如何在TikTok上正确使用标签?

标签在TikTok上的作用不仅仅是分类内容,通过合理使用TikTok hashtag,品牌可以更容易被目标受众发现,并且能参与到当前的热门话题中,从而增加互动和曝光率。在本文中,我们将深入探讨TikTok标签的正确使用方法&#xff0…

谷歌浏览器 Google Chrome 禁止扩展.crx更新

1、准备工作 管理扩展程序-开发者模式 扩展介绍下显示扩展 ID 删除高版本,安装低版本,关闭浏览器 2、修改 manifest 根据扩展 ID 在 Chome 用户数据文件夹中编辑相应扩展的manifest,例如 Mouse Stroke的: \User Data\Default…

华为OD机试 - 找单词 - 深度优先搜索DFS(Java 2024 E卷 100分)

华为OD机试 2024E卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(E卷D卷A卷B卷C卷)》。 刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加…

C++ C/C++内存管理

C/C内存分布 我们先来看下面的一段代码和相关问题 int globalVar 1;static int staticGlobalVar 1;void Test(){static int staticVar 1;int localVar 1;int num1[10] { 1, 2, 3, 4 };char char2[] "abcd";const char* pChar3 "abcd";int* ptr1 (…

DevOps实现CI/CD实战(二)-Jenkins配置

六、 CI/CD入门操作 基于Jenkins拉取GitLab的SpringBoot代码进行构建发布到测试环境实现持续集成 基于Jenkins拉取GitLab指定发行版本的SpringBoot代码进行构建发布到生产环境实现CD实现持续部署 1. 创建springboot项目 编写简单的程序 修改pom.xml,添加打包的…

【书生大模型实战营(暑假场)】进阶任务四 InternVL 多模态模型部署微调实践

进阶任务四 InternVL 多模态模型部署微调实践 任务文档视频 1 InternVL 基本介绍 InternVL 是一种用于多模态任务的深度学习模型,旨在处理和理解多种类型的数据输入,如图像和文本。它结合了视觉和语言模型,能够执行复杂的跨模态任务&#x…

小琳AI课堂:使用ChatGPT API搭建系统(二)

🎉 Python与ChatGPT API的奇妙之旅 🎉 大家好,欢迎回到小琳AI课堂!今天我们要探索的是如何在“使用ChatGPT API搭建系统”课程中,用Python代码与ChatGPT API进行有趣的互动。准备好了吗?让我们开始吧&#…