ARM 架构与技术综述

目录

认识 ARM

ARM 发展历史

指令集

ARM 公司产品分类

ARM 体系结构

数据类型约定

处理器的 32 位和 64 位含义

指令集

ARM 处理器的工作模式

CPU (内核) 组成

寄存器

时钟


认识 ARM

  • ARM 可以指:

    1. 一家公司。
    2. 一种技术。
    3. 一系列处理器。
  • 架构:ARM 架构包括:

    • arm-v4
    • arm-v5
    • arm-v6
    • arm-v7 (32 位)
    • arm-v8 (64 位)

    这些架构定义了处理器所支持的指令集。

  • 内核

    • Cortex-A 系列(例如 A9, A53, A73, A77)
    • ARM 将其内核授权给芯片制造商,后者在此基础上添加额外的功能和外设,从而制造出 SoC(片上系统)。
  • SoC (System On Chip)

    • 示例包括 S5P6818、Snapdragon 855(Qualcomm)、Kirin 990(Hisilicon)等。
  • S5P6818

    • S5P6818 是一个具体的 SoC 示例,但具体细节需要查阅资料来确认。

ARM 发展历史
  • 1978年:CPU 公司(Cambridge Processing Unit,剑桥处理单元)成立。
  • 1979年:Acorn Computer 成立,从事个人计算机组装业务。
  • 1985年:开发出 32 位、8 MHz 的 RISC 架构处理器,该芯片被称为 ARM(Acorn RISC Machine)。
  • 1990年
    • 苹果公司出资 150 万英镑,VLSI 技术公司出资 25 万英镑。
    • 12 名工程师加上技术专利共同创立 ARM 公司(Advanced RISC Machines)。
    • ARM 公司本身不直接生产芯片,而是授权其技术并提供解决方案。
  • 2016年:日本软银集团收购 ARM。
指令集
  • 精简指令集 (RISC):选择了一些较为简单且使用频率高的指令。
    • 指令宽度固定,多为单周期指令。
    • 例如,如果有一个加法运算器,则没有乘法运算器,计算 3 * 3 就需要通过 3 + 3 + 3 来实现。
  • 复杂指令集 (CISC):注重指令的功能性,指令周期和宽度不固定。

eg精简:可以编译后,用反汇编查看代码指令。

编译源代码

arm-linux-gnueabi-gcc 1.c -o a.out

检查文件属性:

file a.out

反汇编 ELF 文件:

arm-linux-gnueabi-objdump -D a.out > a.dis
ARM 公司产品分类
  • Cortex-A:针对高端的基于虚拟内存的操作系统和应用程序设计。
    • 高通、联发科、海思、三星、飞思卡尔等公司的产品。
  • Cortex-R:针对实时系统的高性能解决方案。
    • 例如汽车电子、照相机等。
  • Cortex-M:针对成本和功耗敏感的 MCU 和终端应用。
    • 通常不运行操作系统,或者运行 RTOS 如 FreeRTOS、μC/OS-II、LiteOS 等。
    • 意法半导体 (ST) 的 STM32 系列等。
ARM 体系结构
  • ARM-v8 (A):Cortex-A53 (8 核) → S5P6818 → 主频 1.4 GHz
数据类型约定
  • ARM-v7 架构:32 位处理器
    • char:8 位
    • halfword:16 位
    • word:32 位
    • doubleword:64 位 (Cortex-A)
  • ARM-v8 架构:64 位处理器
    • 向下兼容 32 位
    • char:8 位
    • halfword:16 位
    • word:32 位
    • doubleword:64 位 (Cortex-A)
    • quadword:128 位 (ARM-v8)

处理器的 32 位和 64 位含义
  • 32 位:一条指令可以处理 32 位的数据。
  • 64 位:一条指令可以处理 64 位的数据。
指令集
  • ARM-v7 架构
    • ARM 指令集 (32 位)
    • Thumb 指令集 (16 位)
  • ARM-v8 架构
    • 向下兼容 ARM-v7 架构
    • ARM 指令集:A64, A32
    • Thumb 指令集:T32, T16
    • 不论是 A64 还是 A32,每条指令都占用 32 位空间。
    • 不论是 T32 还是 T16,每条指令都占用 16 位空间。
ARM 处理器的工作模式
  • ARM7 至 ARM11 有七种基本工作模式:

    • User:非特权模式,大多数任务在此模式下执行。
    • FIQ:当发生高优先级中断时进入该模式。
    • IRQ:当发生低优先级中断时进入该模式。

FIQ和IRQ打断当前正在做的事去做其他的事情,做了再回来继续做自己的事情。鼠标键盘等都是这样实现的。(Linux内核会有中断,驱动写中断驱动代码)

    • Supervisor (SVC):当复位或软中断指令执行时进入该模式。

(任务的切换会切入这个模式,权限最高的模式,刚启动的时候在这个模式下,权限高,可以做一些核心的操作。进行系统调用的时候会切换这个模式。)

    • Abort:当指令存取异常时进入该模式。
    • Undef:当执行未定义指令时进入该模式。
    • System:具有与 User 模式相同寄存器集的特权模式。

保证不同任务每次调用同一个函数都是从头开始。

  • Cortex-A 系列特有的模式:

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

特定的模式拥有特定的权限,执行特定的代码,完成特定的功能

CPU (内核) 组成
  • 运算器:执行加法等运算。
  • 控制器:控制指令执行流程。
  • 寄存器:存储机器码,由 ARM 公司集成到 CPU 内部。
    • A32:每个寄存器可以存储一个 32 位数据。
    • A64:每个寄存器可以存储一个 64 位数据。

寄存器
  • ARM7, ARM9, ARM11 有 37 个 32 位寄存器:

    • 1 个作为 PC (program counter)。
    • 1 个作为 CPSR (current program status register)。
    • 5 个作为 SPSR (saved program status registers)。
    • 30 个通用寄存器。
  • Cortex-A 系列 多出 3 个寄存器,共有 40 个 32 位寄存器:

    • Monitor 模式的 r13_mon, r14_mon, spsr_mon。
  • R0-R15, CPSR, SPSR:由 ARM 公司提供的寄存器,每个都是 32 位宽。

    • 这些寄存器没有物理地址,只有唯一的编号,通过编号可以访问相应的地址空间。
  • R13:栈指针寄存器 (stack pointer, sp):存放栈顶地址。

  • R14:链接寄存器 (link register, lr):函数调用时保存返回地址。

  • R15:程序计数寄存器 (program counter, pc):存放当前取指指令的地址。

  • CPSR:当前程序状态寄存器 (current program status register, cpsr):存储当前程序运行状态。

  • SPSR:保存程序状态的寄存器 (saved program status register, spsr):用于保存 CPSR。

时钟
  • 负责发出 CPU 开始计时的时钟信号。

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

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

相关文章

Python数据结构实战:列表、字典与集合的高效使用

前言 在编程中,选择合适的数据结构对于提高程序效率至关重要。本文将介绍Python中最常用的数据结构——列表(list)、字典(dict)和集合(set),并探讨它们的内部实现以及如何高效地使用…

量化金融人都在看哪些顶刊

精选了 7 种量化金融人都在看的顶刊,从最经典的有效市场假说理论,到最新的关于加密货币的研究,都发表在这些期刊上。 Journal of Finance 应该是毫无争议的 No.1。 创刊于1946年,是由美国金融协会(American Finance A…

fastjson-1.2.24利用

参考视频:fastjson反序列化漏洞2-1.2.24利用 参考博客:Fastjson系列二——1.2.22-1.2.24反序列化漏洞 分析版本 fastjson1.2.24 JDK 8u141 fastjson反序列化特点 不需要实现Serializable 因为对于找不到符合条件的反序列化器,就把类当作…

华为的流程体系

缘由 2010年,华为销售额为1850亿元,其中国际市场占65%,净利润238亿元。当时,公司员工达11万人,公司处理合同达5万多个,290万个订单,大量的工作是手工处理,没有统一的流程支持&#…

机器学习流程图

第一部分:课程使用的技术栈 (1)Numpy 科学计算基础库,矩阵运算,线性代数 (2)matplotlib 绘图库,数据可视化 (3)Scikit 封装了各种分类,回归…

释放群众的创造力:打赢网络犯罪战争

关注公众号网络研究观获取更多内容。 企业业非但没有享受到技术带来的好处,反而承受着高昂的成本。 事情不应该是这样的。 企业投资 IT 是因为相信它可以改变他们与客户的关系、供应链和业务敏捷性。在过去 12 个月中,我们还看到人们对 AI 如何增强…

面向对象之设计模式,四种内部类,类关系

面向对象 1. 类关系 继承 使用extends表示,类和类单继承,接口和接口多继承,多个逗号隔开 又叫泛化关系 实现 类和接口是多实现关系,多个逗号隔开,通过关键字 implements表示 依赖 一个类中的局部变量 ,保存了另一个类对象 关联 又叫强依赖,一个类中的成员变量,是另一个类对象…

【Python】爬取网易新闻今日热点列表数据并导出

1. 需求 从网易新闻的科技模块爬取今日热点的列表数据,其中包括标题、图片、标签、发表时间、路径、详细文本内容,最后导出这些列表数据到Excel中。 网易科技新闻网址:https://tech.163.com 2. 解决步骤 2.1 前期准备 爬虫脚本中需要引用…

【数据泄露】最新 FBI 官员数据库泄露事件

前言 近日,一名化名为 “rpk” 的威胁行为者在 breachforums 论坛上声称泄露了包含 22,175 名 FBI 官员数据的数据库。此事件迅速引起了广泛关注,主要因为 FBI 作为美国联邦调查局,不仅是美国司法部的主要调查机构,还是美国情报界…

python实现图像分割算法4

python实现流域变换算法 算法原理基本步骤数学模型Python实现详细解释优缺点应用领域流域变换(Watershed Transform)算法是一种用于图像分割的技术,特别适用于分割重叠和相邻的对象。它的基本思想是将图像视为拓扑表面,通过模拟水的流动来分割区域。流域变换广泛应用于医学…

Python实战:wxauto与百度千帆大模型结合快速实现微信智能回复机器人

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

AI PC处理器架-低功耗、NPU算力、大模型

AI PC处理器架构变化:ARM低功耗、引入NPU算力、大模型落地端侧 ARM架构以简洁的指令集设计,快速执行每条命令,实现低功耗下的高效性能。其核心理念是节能和效率,为电池驱动设备提供了理想选择。相较之下,x86架构虽指令…

XXE-lab-master靶场:PHP_xxe

目录 有回显 测试回显位置 构建payload 无回显数据外带 构建payload 漏洞修复 XXE-lab是一个一个包含php,java,python,C#等各种语言版本的XXE漏洞靶场。 下载地址:https://github.com/c0ny1/xxe-lab 将PHPStudy的中间件与版本信息调制为 php-5.4.29Apache 以…

@SchedulerLock注解使用

文章目录 Scheduled注解参数介绍建表配置类示例参考 如果服务中使用了Scheduled注解,且服务部署了多个节点。那么在同一时刻,所有节点都会执行定时任务。但有有些任务我们只需执行一次,这就需要使用分布式锁的方式来控制,如可以使…

七夕情人节有什么好物推荐?五款性价比超高的产品推荐!

亲爱的朋友们,随着七夕情人节的临近,空气中弥漫着浪漫与甜蜜的气息。在这个专属恋人的节日里,团团知道大家在为心爱的人挑选礼物时可能会感到纠结。因此,我根据个人的浪漫经验和精心的市场挑选,为大家准备了一份情人节…

基础实验回顾

一、虚拟机网络设定 克隆一台node1 在node1上进行网络配置 进入网卡配置目录 # 红帽9网卡配置文件目录,其他版本不一样 [rootlocalhost ~]# cd /etc/NetworkManager/system-connections/网卡配置文件 [rootlocalhost system-connections]# vim ens160.nmconnect…

WordPress 轻量级产品官网类主题 CeoNova-Pro_v4.4绕授权开心版

CeoNova-Pro 主题是一款轻量级、且简洁大气、产品官网类主题,定位于高端产品官网、同时包含了知识付费、定制服务、问答社区、论坛交流、网址导航、以及付费产品购买下载等全方位覆盖。 源码下载:ceonova-pro4.4.zip 变更日志 新增虚拟资源隐藏信息增…

GitHub最全中文排行榜开源项目,助你轻松发现优质资源!

文章目录 GitHub-Chinese-Top-Charts:中文开发者的开源项目精选项目介绍项目特点核心功能1. 热门项目榜单2. 详细项目信息 如何使用覆盖范围软件类资料类 GitHub-Chinese-Top-Charts:中文开发者的开源项目精选 在全球范围内,GitHub已经成为了…

vue3直播视频流easy-player

vue3直播视频流easy-player <script src"/easyPlayer/EasyPlayer-element.min.js"></script> easyPlayer文件下载地址 https://download.csdn.net/download/weixin_42120669/89605739 <template><div class"container"><div …

Flask 介绍

Flask 介绍 为什么要学 Flask框架对比设计哲学功能特点适用场景学习曲线总结 Flask 的特点Flask 常用扩展包Flask 的基本组件Flask 的应用场景官方文档官方文档链接文档内容概述学习建议 Flask 是一个使用 Python 编写的轻量级 Web 应用框架。它旨在让 Web 开发变得快速、简单且…