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

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.mzph.cn/bicheng/52676.shtml

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

相关文章

打手机检测算法源码样本展示打手机检测算法实际应用场景介绍

打手机检测算法是一种利用计算机视觉技术来监测和识别人们在特定区域如驾驶舱、考场或其他敏感区域非法使用手机的行为。这种算法对于提高安全性和确保规则的遵守具有重要意义。以下是关于打手机检测算法源码及其实际应用的详细阐述: 1. 算法实现 - 深度学习框架&a…

【selenium点选下拉框】解决无法选中对应选项的问题

需求 使用selenium点击下拉框,选中【是】选项。 代码 方法1 # 点击下拉框 driver.find_element(xpath,//*[id"basicProcessDetail"]/div[2]/div[2]/div[1]/div/div[2]/div/div/div/div[1]/div[2]/form/div[11]/div[1]/div/div/div[1]/div[1]/div/i).…

雷达图概述以及实例

目录 一.雷达图概述1.何为雷达图2.雷达图的构成要素 二.实例(以Excel、Python为例 )1.Excel(2021版)2.Python 一.雷达图概述 1.何为雷达图 雷达图,是一种展现多维度数据间相对重要性或程度的可视化图形。以中心点为起…

LabVIEW高速数据采集关键问题

在LabVIEW进行高速数据采集时,需要关注以下几个关键问题: 数据采集硬件的选择: 高速数据采集需要高性能的数据采集硬件,例如NI PXIe、USB DAQ等模块。硬件的选择应根据采集速率、通道数、精度、以及应用场景的具体需求来确定。 采集速率与带…

ByteBuffer详解

文章目录 1. ByteBuffer是抽象类,他的主要实现类为2. 获取方式3. 核心结构4. 核心API5. 字符串操作 1. ByteBuffer是抽象类,他的主要实现类为 HeapByteBuffer 堆ByteBuffer JVM内的堆内存 —> 读写操作 效率低 会受到GC影响MappedByteBuffer(DirectB…

桥接模式-多类型登录方式的思考

桥接模式-SSO单点登录 背景:(业务细节已脱敏)需求:问题:解决方式: OAuth2.0 实现单点登录四种授权模式桥接模式优化问题代码实现 背景:(业务细节已脱敏) 基于实习期间的一个代码重构的思考——业务细节已脱敏 基于内部旧框架实现业务toB管理系统,需要迁移数据并新的…

uni-app 手记集。

1、uni-app 是一个使用 Vue.js 开发的前端应用的框架&#xff0c;所以不会Vue.js的小伙伴可以先去看看Vue.js的基础教学。 2、.vue文件结构 <template><div class"container"></div> </template><script type"text/ecmascript-6&q…

【DiskGenius硬盘分区】

&#x1f3a5;博主&#xff1a;程序员不想YY啊 &#x1f4ab;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f917;点赞&#x1f388;收藏⭐再看&#x1f4ab;养成习惯 ✨希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出…

TCP系列相关内容

一、TCP上传文件 loop——本地回环测试地址。 void *memset&#xff08;void *s,int c,size_t n&#xff09;——给一个变量设定一个值。 1、“粘包”问题 两次分别发送的数据&#xff0c;被一起接收形成该现象。 原因&#xff1a;TCP流式套接字&#xff0c;数据与数据间没…

前端速通面经八股系列(二)—— HTML篇

HTML高频面经八股目录 1. src和href的区别2. 对HTML语义化的理解3. DOCTYPE(⽂档类型) 的作⽤4. script标签中defer和async的区别5. 常⽤的meta标签有哪些6. HTML5有哪些更新1. 语义化标签2. 媒体标签3. 表单4. 进度条、度量器5.DOM查询操作6. Web存储7. 其他 7. img的srcset属…

三种通过代码创建矢量文件的方法及例子

现有四个点&#xff1a;(1, 1), (2, 2), (3, 3), (4, 4) 以这四个点围起来就是一个面。 如何通过python创建矢量文件。 我们以创建一个面矢量文件为例子&#xff0c;进行阐释。 我们可以使用geopandas、fiona、gdal库完成矢量创建。 geopandas 假设我们创建的矢量文件格式…

Chrome H265 WebRTC 支持

Chrome从127版本开始支持RTC H265解码&#xff0c;这样服务器就不需要对H265转码了&#xff0c; H5S和USC会自动检测浏览器支持的解码类型并自动判断是否启动转码&#xff0c;这样客户端不用关心摄像机具体是H264还是H265&#xff0c;尽量使用带GPU的客户端&#xff0c;这样服务…

ArcGIS应用指南:近邻分析(点匹配到最近线段上)

近邻分析通常用于确定一个要素集中的要素与另一个要素集中最近要素的距离。当涉及到点匹配到最近的线时&#xff0c;这种分析可以用来确定每个点到最近线段的距离及位置&#xff0c;也就是我们常说的点匹配到最近线上&#xff0c;可以参考官方文档&#xff1a;近邻分析 (Covera…

动态规划之买卖股票篇-代码随想录算法训练营第三十八天| 买卖股票的最佳时机ⅠⅡⅢⅣ,309.最佳买卖股票时机含冷冻期,714.买卖股票的最佳时机含手续费

121. 买卖股票的最佳时机 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 讲解视频&#xff1a; 动态规划之 LeetCode&#xff1a;121.买卖股票的最佳时机1 题目描述&#xff1a; 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定…

软件测试-Selenium+python自动化测试

目录 一、元素定位 1.1一个简单的模板 1.2单选框radio定位实战 1.3下拉操作 1.4弹窗 1.5文件上传 1.6 iframe(类似于页中页,嵌套进去了) 二、元素定位实战 会用到谷歌浏览器Chrome测试,需要下载一个Chromedriver(Chrome for Testing availability)对应自己的浏览…

华为2024 届秋招招聘——硬件技术工程师-电源方向-机试题(四套)(每套四十题)

华为 2024 届秋招——硬件-电源机试题&#xff08;四套&#xff09;&#xff08;每套四十题&#xff09; 岗位——硬件技术工程师 岗位意向——电源 真题题目分享&#xff0c;完整版带答案(有答案和解析&#xff0c;答案非官方&#xff0c;未仔细校正&#xff0c;仅供参考&am…

OpenCV杂项图像变换(1)自适应阈值处理函数adaptiveThreshold()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 函数对数组应用自适应阈值。 该函数根据以下公式将灰度图像转换为二值图像&#xff1a; 对于 THRESH_BINARY: t e x t d s t ( x , y ) { maxV…

OpenAI API: How to count tokens before API request

题意&#xff1a;“OpenAI API&#xff1a;如何在 API 请求之前计算令牌数量” 问题背景&#xff1a; I would like to count the tokens of my OpenAI API request in R before sending it (version gpt-3.5-turbo). Since the OpenAI API has rate limits, this seems impor…

【网络安全】分析cookie实现PII IDOR

未经许可,不得转载。 文章目录 正文正文 目标:公共电子商务类型的网站,每月有大约6万到10万访问者,注册用户大约有5万。 存在一个查询个人资料的端点/GetProfiledetails,以下是完整的请求和响应: 我发现,cookie非常类似于base64编码后的结果,于是我将其进行base64解码…

windows虚拟机VMware共享文件

1、设置本机电脑共享目录 2、设置所有人可连接 3、记录共享文件夹路径 4、设置当前用户密码 5、在虚拟机内映射驱动 6、在虚拟机内添入路径 7、输入用户名和密码 8、链接成功