ARM 体系结构与存储器

一、RAM 分类

  1. SRAM (Static RAM)

    • 触发器/晶体管 存储 0/1。

    • 特点:速度快、功耗低(静态保持),但成本高、容量小。

    • 应用:片上缓存、寄存器文件、单片机内存。

  2. DRAM (Dynamic RAM)

    • 电容充放电 存储 0/1。

    • 特点:存储密度高、成本低,但需要刷新电路,速度低于 SRAM。

    • 应用:PC 内存、大容量存储。

  3. SDRAM (Synchronous DRAM)

    • 在 DRAM 上增加时钟同步,提高读写速度。

  4. DDR RAM (Double Data Rate SDRAM)

    • SDRAM 的升级版,在时钟上升沿和下降沿均可传输数据

    • 发展分支:DDR → DDR2 → DDR3 → DDR4 → DDR5。

  5. IRAM (Internal RAM)

    • 本质上是 片上 SRAM,直接集成在 SoC 内部,速度快、可直接被内核访问。

二、ROM 分类

  1. ROM (Read Only Memory)

    • 出厂时数据固定,不可更改。

  2. PROM (Programmable ROM)

    • 用户可写入一次数据。

  3. EPROM (Erasable PROM)

    • 可通过紫外线擦除后重新写入。

  4. EEPROM (Electrically Erasable PROM)

    • 电擦写方式,速度较慢,但方便修改少量数据(如配置参数)。

  5. Flash 闪存

    • NOR Flash:字节寻址,可直接执行(XIP, Execute In Place)。

    • NAND Flash:页寻址,容量大、寿命长,需控制器管理。

    • eMMC:嵌入式 NAND,带控制器,简化接口。

    • UFS(Universal Flash Storage):新一代高速存储接口。

 

三、ARM 内核结构(Cortex-A7 为例)

  1. 基本信息

    • 32 位架构,数据宽度 4 字节。

    • RISC(精简指令集)设计,流水线执行。

  2. 功能单元

    • ALU:算术逻辑运算。

    • 通用寄存器 R0-R12:主要运算与数据存储。

    • 专用寄存器

      • PC (R15):程序计数器。

      • LR (R14):连接寄存器,保存返回地址。

      • SP (R13):栈指针寄存器。

      • CPSR:当前程序状态寄存器。

      • SPSR:保存的 CPSR(用于异常返回)。

  3. 存储与控制

    • MMU (Memory Management Unit):虚拟地址 → 物理地址映射。

    • Cache

      • I-Cache(指令缓存)

      • D-Cache(数据缓存)

    • 总线

      • AHB:高性能总线(CPU ↔ 内存)。

      • APB:外设总线(低速外设)。

四、ARM 工作模式

Cortex-A7 有 9 种模式:

  1. User:非特权模式,普通应用运行。

  2. FIQ:快速中断模式,高优先级,专用寄存器多,适合实时处理。

  3. IRQ:普通中断模式。

  4. Supervisor (SVC):上电复位或软中断进入。

    • 上电默认进入 SVC 模式,由启动代码切换到 User 模式。

  5. Abort:存取异常模式。

  6. Undef:未定义指令模式。

  7. System:与 User 共用寄存器,但具备特权。

  8. Monitor:安全监控模式(TrustZone)。

  9. Cortex-A 特有模式(部分扩展架构支持)。

说明

每种模式都有 独立 SP、LR,保证中断/异常隔离。

ARM 将 中断统一视为异常

五、异常处理

  1. 异常类型

    • Reset(复位)

    • Undefined Instruction(未定义指令)

    • SWI(软中断)

    • Prefetch Abort(指令取指异常)

    • Data Abort(数据访问异常)

    • IRQ(普通中断)

    • FIQ(快速中断)

  2. 异常向量表

    • 固定地址存放不同异常入口。

    • 例如:复位向量通常在 0x000000000xFFFF0000

  3. 底层流程

    • 保存 CPSR → 切换模式 → 修改 PC → 跳转异常向量表地址。

六、CPSR 程序状态寄存器

  1. Mode 位:工作模式选择。

  2. 条件标志位

    • N(Negative):结果为负数 → 1。

    • Z(Zero):结果为 0 → 1。

    • C(Carry):无符号运算进位/借位。

    • V(Overflow):有符号数溢出。

  3. E 位:大小端标志(0 = 小端,1 = 大端)。

  4. IRQ/FIQ 屏蔽位:控制中断响应。

七、ARM 指令

  1. 数据传送

    • MOV Rd, #const:立即数赋值。

    • MOV Rd, Rm:寄存器传值。

    • MVN Rd, #const:立即数取反。

  2. 算术运算

    • ADD Rd, Rn, #const

    • SUB Rd, Rn, #const

    • MUL Rd, Rn, Rm

  3. 移位操作

    • LSL:逻辑左移。

    • LSR:逻辑右移。

    • ASL:算术左移(等价于 LSL)。

    • ASR:算术右移(符号位保持)。

    • ROR:循环右移。

  4. 立即数规则

    • ARM 立即数 = 8-bit 常数 + 4-bit 旋转

    • 可通过右旋实现更多常数表示。

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

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

相关文章

Jenkins运维之路(初识流水线)

1.初次使用流水线前面我们用自由风格的流水线进行了项目部署,但是自由风格的流水线只能应付一些简单且项目规模不是很大的部署。为了让流水线能够灵活、通用、逻辑清晰且更加容易维护,现在一般企业都是采取使用了Pipeline的方式来对流水线进行构建&#…

【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据

摘要:本节围绕提升空间图库管理分析能力,先分用户与管理员两类梳理资源使用、分类、标签等 6 大分析需求,再设计统一实现流程与接口方案,最后通过分层开发完成各需求后端功能,覆盖权限校验、数据处理与接口编写。 本节…

HTML第八课:HTML4和HTML5的区别

HTML第八课&#xff1a;HTML4和HTML5的区别html4 与 html 5的区别快速学习平台html4 与 html 5的区别 示例图 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> &…

CS336——1. Overview

文章目录1. CS336介绍2. 概览2.1 为什么会有这门课程2.1.1 LLM的参数和训练成本2.2.2 小语言模型和LLM的区别2.2 你可以学到什么&#xff1f;2.2.1 Intuitions2.2.2 The bitter lesson3. 全景图(current landscape)/发展历史4. 可执行的课件说明5. 课程设计6. 课程内容6. 1 bas…

ncnn-Android-mediapipe_hand 踩坑部署实录

目录 同时有 nanodet 和yolox,可以做到10fps 没测试:yolox hand ncnn-Android-mediapipe_hand hand 关键点21个模型: ncnn版本: 跑通后,手部关键点集中在图像左上角,经过排查,原因是ncnn版本不对。 CMakeLists.txt 同时有 nanodet 和yolox,可以做到10fps 无训练…

OSPF实验:外部路由引入

OSPF外部路由引入实验目的&#xff1a;除了内部通信外&#xff0c;企业还需要与外部网络进行通信&#xff0c;不同企业网络之间存在互访需求。假设A公司网络部署OSPF协议实现内部通信&#xff0c;因业务发展&#xff0c;需要访问B公司的一台WEB服务器。网络拓扑图&#xff1a;公…

网络上那些在线 PDF 转换工具安全吗?转换 PDF 需要注意什么

PDF 格式凭借跨设备兼容、格式稳定的优势&#xff0c;早已成为个人办公、企业协作中不可或缺的文件格式。无论是压缩 PDF 以满足邮件附件大小限制&#xff0c;还是将 Word 文档转成 PDF 确保排版不变&#xff0c;我们总能遇到需要 PDF 工具的场景。也正因如此&#xff0c;网上涌…

生成对抗网络(GAN)

目录 1 引言 2 生成对抗网络的基本原理 2.1 生成器与判别器 2.2 对抗训练过程 2.3 与传统生成模型的比较 3 GAN的衍生模型 3.1 架构创新与深度卷积GAN 3.2 损失函数优化与Wasserstein GAN 3.3 条件生成与可控合成 3.4 跨域转换与CycleGAN 3.5 高分辨率生成与规模化演…

Vue 3.6 Alien Signals:让响应式性能飞跃式提升

概述 Vue 3.6 引入了革命性的 Alien Signals 技术&#xff0c;这是一种全新的响应式系统&#xff0c;基于细粒度响应式原理&#xff0c;为 Vue 应用带来了前所未有的性能提升和开发体验优化。 什么是 Alien Signals&#xff1f; Alien Signals 是 Vue 3.6 内置的轻量级响应式…

React Hooks 报错?一招解决useState问题

文章目录问题分析问题 在使用import { useState } from "react";时报错&#xff1a;Youre importing a component that needs useState. This React Hook only works in a Client Component. To fix, mark the file (or its parent) with the “use client” direct…

数据集成平台怎么选?从ETL到CDC再到iPaaS的全景对比

前言&#xff1a;一个制造企业的真实困境 近期在为某家制造企业做系统改造时&#xff0c;我们遇到了一个典型的数据集成难题。这家企业运营着独立的ERP、CRM和MES等30业务系统&#xff0c;看似完备的信息化基础却存在严重的数据割裂问题。 销售团队在CRM中查看的库存数据总是滞…

驱动开发系列72 - GLSL编译器实现 - 指令选择(二)

前面介绍过,在指令选择时会执行一系列优化过程,本节介绍下“比特级常量传播优化”的实现。 一:什么是比特级常量传播优化 举一个GLSL语言例子: #version 450layout(location = 0) in vec4 inColor; layout(location = 0) out vec4 outColor;void main() {vec4 tmp = inCo…

Redis(缓存)

一 什么是缓存1. 生活上的例子比如有一个行李箱和一个手机&#xff0c;每次把手机放到行李箱在拿出来肯定很麻烦&#xff0c;如果放到裤兜里就会方便很多&#xff0c;所以裤兜算作行李箱的一个缓存&#xff0c;不仅仅是裤兜&#xff0c;甚至可以一直拿在手上等其他有存储介质的…

openssl简介

一、openssl是什么 OpenSSL是一个开源的、功能强大的软件库和工具包,它实现了传输层安全(TLS) 和安全套接层(SSL) 协议以及一个全面的密码学原语库。它是用 C 语言编写的,为其带来了高性能和跨平台的特性。 作为库(Library):开发者可以将其代码集成到自己的应用程序(…

左值引用与右值引用

左值和右值 左值&#xff08;lvalue&#xff09;&#xff1a;在表达式结束后仍然存在&#xff0c;可以取地址。简单理解&#xff1a;有名字、有存储位置。 比如变量、数组元素、对象等。 右值&#xff08;rvalue&#xff09;&#xff1a;临时值&#xff0c;表达式结束后就消失&…

中小企业SAP B1 HANA部署全解析:成本与云端优势

目录 云端部署成本构成与效益分析 软件许可费 硬件成本 服务费 培训费 技术优势 快速部署 弹性扩展 高可用性 云端部署适用场景 IT预算有限的中小企业 分布在不同地区的机构 需要快速上线的情况 本地部署适用场景 数据监管严格的行业 拥有完善IT基础设施企业 …

Django Channels实战:WebSocket实时通信开发

在当今Web应用开发中&#xff0c;实时通信功能已成为提升用户体验的关键要素。传统的HTTP请求-响应模式难以满足即时聊天、实时通知、协同编辑等场景的需求。本文将深入探讨如何利用Django Channels框架实现WebSocket通信&#xff0c;为你的Django项目添加实时交互能力。为什么…

大数据毕业设计选题推荐-基于大数据的懂车帝二手车数据分析系统-Spark-Hadoop-Bigdata

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

python 通过selenium调用chrome浏览器

更新selenium pip install -U selenium 下载浏览器和对应的驱动 Chrome for Testing availability 一般选稳定版本的&#xff0c;我是windows的就下win64的&#xff0c; 下载两个zip包后&#xff0c;把chromedriver.zip中的exe解压缩放到chrome_win64文件夹中 from selen…