自学内容网 自学内容网

【星海出品】内存分析

第一次写关于内存的文章。网上很多信息都是极度碎片化,所以单独写一个文章整理一下,融入一些当前的技术沉淀汇总。如果有不同想法可以评论区评论,我都会回复的。

CPU

CPU只能一个总线周期最多存取一次总线。

ARM是一系列基于精简指令集计算机(RISC)架构的中央处理单元(CPU),全称为“Advanced RISC Machine”(高级精简指令集机器)。

定义:ARM处理器是一种高性能、低功耗的微处理器,由英国ARM公司开发并授权给各大厂商使用。它采用精简指令集(RISC)设计,旨在通过简化指令集来提高执行效率和降低功耗。

ARM处理器在电子设备中扮演着核心计算和控制的角色,负责执行软件指令、处理数据和协调设备的各个部件协同工作。

ARM处理器因其低功耗、高性能和低成本的特点,被广泛应用于各种电子设备中。

DMA外设联通

DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问。

嵌入式系统的DMA控制器内建在 处理器芯片内部,一般称为DMA控制器,DMAC。
DMA 控制逻辑 由CPU 和 DMA控制接口逻辑芯片 共同组成。
一个处理器可以包含多个DMA控制器。每个控制器有多个DMA通道,以及多条直接与存储器站(memory bank)和外设连接的总线。

外设始终速率低,内部存储时钟速率高。
通常只有数据流量较大的外设,才需要支持DMA能力。例如:视频、音频、网络接口

DMA的好处就是它不需要CPU的干预而直接服务外设。DMA通过一组专用总线将内部和外部存储器与具有DMA能力的外设连接起来。DMA能一次传输几个甚至几十个字节的数据,所以使用DMA能使设备的吞吐能力大为增强。

DMA使用物理地址,程序是使用虚拟地址的,所以配置DMA时必须将虚拟地址转化成物理地址。

因为程序使用虚拟地址,而且一般使用cache地址,所以Cache中的内容与其物理地址(内存)的内容不一定一致,所以在启动DMA传输前一定要将该地址的cache刷新,即写入内存。

OS并不能保证每次分配到的内存空间在物理上是连续的。尤其是在系统使用过一段时间而又分配了一块比较大的内存时。所以每次都需要判断地址是不是连续的,如果不连续就需要把这段内存分成几段让DMA完成传输

地址寄存器存放DMA传输时存储单元地址
字节计数器存放DMA传输的字节数
控制寄存器存放由CPU设定的DMA传输方式,控制命令等
状态寄存器存放DMAC当前的状态,包括有无DMA请求,是否结束等

一般是由一条数据总线、地址总线和控制寄存器组成。能在控制器内部计算出地址。

UART 协议

缺点:传输速率相对较低、只能实现点对点通信等。在高速、多设备的通信环境下,可能需要使用其他更高级的通信协议。

UART (Universal Asynchronous Receiver/Transmitter,通用异步收发器) 是一种常用的串行通信协议,用于在计算机和外部设备之间传输数据。它是一种异步通信协议,也就是说数据的传输不需要事先建立好同步时钟信号。

UART 协议定义了数据传输的格式和通信规则。它包括一系列的控制信号和数据线来实现双向的串行通信。常见的 UART 协议有 RS-232、RS-422 和 RS-485 等。

UART 协议的工作方式是通过不断发送和接收数据来实现通信。发送方将数据按照一定的格式组织成数据帧,并通过数据线发送出去。接收方接收到数据后,解析数据帧,并进行相应的处理。

L1存储器

位置:最接近CPU核心,分为L1指令缓存和L1数据缓存。

作用:作为CPU访问最频繁的数据和指令的临时存储区域,其读写速度极快,能够极大地减少CPU访问主存的次数,提高系统性能。

与DMA关联:在DMA传输过程中,如果目标数据或指令频繁被CPU访问,DMA可能会将这些数据或指令预加载到L1缓存中,以减少CPU的等待时间。

L2存储器

位置:位于L1缓存和主存之间,比L1缓存更远但比主存更近。

作用:作为L1缓存和主存之间的桥梁,当L1缓存未命中时,CPU会访问L2缓存以寻找所需数据。L2缓存的容量通常比L1大,但速度稍慢。

与DMA关联:DMA在传输大量数据时,可能会利用L2缓存作为数据的中转站,尤其是在L1缓存已满或无法容纳所有数据时。

L3存储器

位置:距离CPU核心最远,是CPU缓存体系中的最后一级。

作用:作为所有CPU内核共享的缓存区域,其容量最大但速度相对较慢。L3缓存用于存储那些被多个CPU内核频繁访问的数据,以减少对主存的访问次数。

与DMA关联:在需要传输大量数据到多个CPU内核或需要优化整体系统性能的场景中,DMA可能会将部分数据直接传输到L3缓存中,以便多个CPU内核能够共享这些数据。

存储器级别位置容量速度访问方式
L1存储器最接近CPU核心几十KB到几百KB最快(2~4个CPU时钟周期)每个CPU内核独立访问
L2存储器位于L1和主存之间几百KB到几MB(每个内核)次快(10~20个CPU时钟周期)每个CPU内核独立访问
L3存储器距离CPU核心最远几MB到几十MB(共享)最慢(20~60个CPU时钟周期)所有CPU内核共享访问

原文地址:https://blog.csdn.net/weixin_41997073/article/details/142515767

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!