【SoC基础】从[存储器]到[内存]再到[闪存],一次性解释清楚!

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处


一、存储器

1.1存储器的作用

存储器又被称为存储芯片,是全球需求最多的一类芯片,主要用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。然而在2016年之前我国国产存储芯片的市场基本为零,其中最为主要的当属DRAM内存和NAND flash两类。

1.2存储器的种类

1.2.1按主次分类

按其主次可分为内存和外存,即主存储器和辅助存储器
我们从字面上来尝试理解内存,其中有个“内”,这明显是一个相对的词,那它到底相对于谁?

相对于CPU而言,能与其直接进行数据传输的存储器,称之为“内存”。

主存储器又称内存储器(简称内存),内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,一旦关闭电源或发生断电,其中的程序和数据就会丢失,一般为RAM;

辅助存储器又称外存储器(简称外存),外存通常是磁性介质或光盘,像硬盘(机械和SSD),软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息;

1.2.2按特性、功能分类

RAM、ROM和闪存(Flash)是按照存储器的特性和功能进行分类的。

  1. RAM(Random Access Memory,随机存取存储器):

    • RAM是易失性存储器,断电后数据会被清除,分为SRAM和DRAM。
    • SRAM:静态随机存储器,上电后可以直接使用;价格昂高,容量小
    • DRAM:动态随机存储器,软件初始化后才能使用;价格低,容量大
    • RAM是一种临时存储器,用于存储当前执行的程序、数据和临时结果。
    • 它具有快速的读写速度和随机访问的特性,可以快速存取和处理数据。
  2. ROM(Read-Only Memory,只读存储器):

    • ROM是一种只读的存储器,其中的数据在生产制作过程中被写入,并且在正常操作期间无法被修改,因此掉点后数据不会丢失。
    • ROM中的数据通常是固化的程序代码、固件、配置数据等,用于存储不需要更改的信息。
    • 因此可以将ROM看作是一个不可修改的存储器。
    • 分类: PROM、EPROM
  3. 闪存(Flash):

类似RAM,闪存是一种可以进行读取和写入操作的存储器,也具备了随机存取数据的能力。它可以像RAM一样用于存储和处理数据。

类似ROM,闪存具有非易失性特性,即在断电或重新启动设备后数据仍然保存。这使得闪存在长期存储数据方面非常有用,可以作为可靠的存储介质。

上述特性描述表明:

  • 闪存可以说是兼具了RAM可读可写的特性和ROM断电不丢失数据的特性(意味着可以长时间存储数据)。
  • 闪存是一种非易失性存储器,可以用于长期存储数据并允许数据的可擦写和可编程,
  • 它具有较快的写入速度,但相对较慢的读取速度。
  • 闪存经常用于存储固件、操作系统、配置数据、用户数据等长期保存的信息。

此外,闪存还具有可擦写和可编程的特性。与ROM不同,闪存中的数据可以被擦除和重新编程,这使得闪存适用于存储需要频繁修改或更新的数据,如操作系统、固件、配置数据、用户数据等。

需要注意的是,闪存的读写速度相较于RAM较慢,并且闪存的写入操作通常需要整个块或扇区的擦除,再进行数据的重新编程。这些特点使得闪存在某些场景下可能不适用于频繁的随机写入操作。

  • 种类
    NOR FLASH
    NAND FLASH:分为2D NAND FLASH和 3D NAND FLASH
    在这里插入图片描述

二、内存

第一章将存储器的种类以及相应的特性进行了阐述,我们知道:
📢:内存用于临时存储数据和程序运行
📢:ROM用于存储只读信息
📢:而闪存用于长期存储和可擦写的数据
接下来,我们思考一个问题,平时买手机的时候,经常会将内存作为一个很重要的参考指标,听它的名字就知道是一种存储器,那它到底属于哪种存储器呢?应当具备何种特性?

2.1硬件和逻辑两方面

1.2.1小节已经将内存的概念阐述清楚了,即:

内存主要是指随机存取存储器(RAM)。RAM作为计算机的主存储器,用于临时存储正在运行的程序、数据和临时结果。

从硬件和逻辑两方面对内存的概念进行阐述

1.硬件角度:内存并不单单是电脑上的一个配件(一般叫内存条)。其存在的硬件形式多种多样,根据不同的硬件实现原理可将内存分成SRAM和DRAM(DRAM又有好多代,譬如最早的SDRAM,后来的DDR1、DDR2·····、LPDDR)
在嵌入式产品中,并没有内存条。例如:单片机中,内存通常指的是芯片内部的存储器,

在这里插入图片描述

2.逻辑角度:内存(RAM)可以随机访问(随机访问的意思是只要给一个地址,就可以访问这个内存地址)、并且可以读写(当然了逻辑上也可以限制其为只读或者只写);内存在编程中天然是用来存放变量的(就是因为有了内存,所以C语言才能定义变量,C语言中的一个变量实际就对应内存中的一个单元)。

2.2内存的编程模型

内存的编程模型就是其逻辑的抽象化表现
逻辑上,内存实际上是由无限多个内存单元格组成的,每个单元格有一个固定的地址称为“内存地址”,这个内存地址和这个内存单元格唯一对应且永久绑定。
在这里插入图片描述
内存的访问方式
内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。
CPU的地址总线的位数是CPU设计时确定的,因此一款CPU所能寻址的范围是一定的,而内存是需要占用CPU的寻址空间的。
内存与CPU的这种总线式连接方式是一种直接连接,优点是效率高、访问快,缺点是资源有限,扩展性差。

2.3类比内存

可以将内存比作一栋大楼,内存单元格类似于大楼中的小房间,而每个内存单元格的地址就相当于每个小房间的房间号。内存中存储的内容(数据)可以看作是住在房间中的人。
虽然可以使用类比来帮助解释某些存储器的工作原理,但不同存储器之间的差异需要加以考虑。例如,内存的类比可以使用房间和房间号来解释,但它不适用于闪存中的数据写入和擦除操作。类似地,硬盘、SSD、光盘等存储器类型也有各自独特的特征,类比方法需要根据其特点进行调整。

2.4内存访问方式

内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。
CPU的地址总线的位数是CPU设计时确定的,因此一款CPU所能寻址的范围是一定的,而内存是需要占用CPU的寻址空间的。
内存与CPU的这种总线式连接方式是一种直接连接,优点是效率高、访问快,缺点是资源有限,扩展性差。

2.5内存管理方法

内存用来存储数据,数据在程序中表现为全局变量、局部变量等(在gcc中,其实常量也是存储在内存中的)(大部分单片机中,常量是存储在flash中的,也就是在代码段)。

如果内存管理不善,可能会造成程序运行消耗过多的内存,这样迟早内存都被程序消耗殆尽,当没有内存可用时程序就会崩溃。所以内存对程序来说是一种资源,所以管理内存对程序来说是一个重要技术和话题。

2.5.1操作系统管理

操作系统给提供了内存管理的一些接口,我们只需要用API即可管理内存。譬如在C语言中使用malloc、free这些接口来管理内存。

2.5.2裸机程序管理

而在没有操作系统(其实就是裸机程序)中,程序需要直接操作内存,编程者需要自己计算内存的使用和安排。如果编程者不小心把内存用错了,错误结果需要自己承担。

三、闪存

3.1 NOR FLASH和NAND FLASH

  • 存储结构:
    NOR Flash的存储单元是通过交织的MOSFET和存储电容器构成的,而NAND Flash的存储单元是通过多级交织的MOSFET构成的。这种不同的结构导致了它们在擦除和写入操作上的差异。
  • 访问方式:
    NOR Flash支持随机读取,可以直接通过地址来读取特定的字节或页。相比之下,NAND Flash不支持随机读取,只能顺序读取整个页。这意味着NOR Flash具有较低的读取延迟,并且可以像传统的存储器一样直接访问数据,而NAND Flash则需要按顺序读取数据。
  • 擦写操作:
    对于擦除操作,NOR Flash可以逐个擦除存储单元,通常以字节或页为单位。而NAND Flash以块为单位进行擦除,通常块的大小范围在512KB至2MB之间。由于NAND Flash的较大块擦除操作,导致在进行写入操作之前需要将整个块擦除,这会带来额外的时间和写入压力。
  • 存储密度和成本:
    由于NAND Flash的多级交织结构和按块擦写的特点,它具有更高的存储密度和较低的价格。相比之下,NOR Flash的交织结构和按页擦写的方式导致存储密度较低,价格相对更高。
  • 应用场景:
    由于其较低的读取延迟和随机读取的特性,NOR Flash通常用于存储程序代码、引导加载器和固件升级等需要快速读取和执行的应用中。而NAND Flash由于较高的存储密度和较快的写入速度,适用于存储大容量数据,如闪存存储卡、USB闪存驱动器、固态硬盘(SSD)和移动设备的主要存储器。
    1、NOR的读速度比NAND稍快一些;
    2、NAND的写入速度比NOR快很多;
    3、NAND的擦除速度远比NOR快;
    4、NAND的擦除单元更小,相应的擦除电路更加简单;
    5、NAND的实际应用方式要比NOR复杂的多;
    6、NOR可以直接使用,并在上面直接运行代码,而NAND需要I/O接口,因此使用时需要驱动;

3.2 2D FLASH和3D NAND FLASH

3.2.1 2D FLASH

概念:2D NAND Flash是最早的NAND Flash技术,也被称为Planar NAND Flash或Planar Cell NAND Flash。它采用了二维的布局结构,在一个平面上排列存储单元。每个存储单元通常由一个浮动栅和一个控制栅组成,可以存储多个位数据。
特性:2D NAND Flash的存储密度和性能较低,因为它的单层结构限制了每个存储单元的数目。随着存储需求的增加,2D NAND Flash逐渐无法满足高容量和高速度的要求。

3.2.2 3D NAND Flash

概念:3D NAND Flash是新一代的NAND Flash技术,也被称为Vertical NAND Flash或Vertical Cell NAND Flash。3D NAND Flash采用垂直堆叠的结构,使每个芯片内的存储单元层数大大增加。
特性:通过在垂直方向上堆叠多层存储单元,3D NAND Flash大大提高了存储密度,同时也提升了写入和擦除速度。3D NAND Flash技术能够实现更大容量和更高性能的存储器设备,如高容量的固态硬盘。

3.2.3 总结

2D NAND Flash和3D NAND Flash是两种不同的闪存存储器技术,用于制造NAND Flash芯片。2D NAND Flash是较旧的技术,采用二维平面布局结构,存储密度和性能有限。而3D NAND Flash是较新的技术,采用垂直堆叠结构,具有更高的存储密度和性能,能够满足日益增长的存储需求。

3.3 采用闪存颗粒的存储器

消费机存储器:SSD 主要作用是取代 PC/服务器上的 HDD 硬盘;
嵌入式存储:eMMC 和 UFS 都是面向移动端 Flash 的标准。主要应用于例如手机、手表、汽车等嵌入式终端设备。

🌞SSD有哪些接口协议?
SSD(固态硬盘)可以通过多种接口协议与计算机或其他设备进行连接和通信。以下是一些常见的 SSD 接口协议:

  1. SATA(Serial ATA,串行ATA):SATA是一种常见且广泛使用的接口协议,适用于传统的SATA固态硬盘。它具有较慢的数据传输速率,一般用于个人电脑和一些嵌入式系统。

  2. NVMe(Non-Volatile Memory Express,非易失性存储快速通道):NVMe是一种高性能的接口协议,专为固态硬盘而设计,加快了固态硬盘的数据传输速率和响应时间。NVMe通常通过PCIe总线连接到计算机系统。

  3. PCIe(Peripheral Component Interconnect Express,外围组件互连快速通道):PCIe是一种高速串行总线接口,可用作连接固态硬盘以及其他高性能设备的接口。NVMe协议通常通过PCIe接口进行数据传输。

补充

cache的速度比较

cache的作用:UFS cache是一个临时的存储空间,用来提高host读写的访问时间。例如host如果写数据到flash中需要很长时间,而host下发的数据写到ufs的cache中就很快了。这样ufs内部自己可以再从cache中将数据搬移到flash中。此时host就可以去干自己的事情了,不需要等待UFS把数据再写入flash中。对于读同理,提前把数据放到cache中,当要读数据的时候,host直接从cache中拿即可,访问时间大大加快。

根据不同类型的存储器,下面是一些常见存储器的读写速度排名(从高到低):

  1. 寄存器(Register):寄存器位于CPU内部,速度最快,可以在一个时钟周期内读取和写入数据。
  2. 缓存(Cache):CPU缓存分为多级,L1 Cache、L2 Cache和L3 Cache,其读写速度逐级递减,但仍然比主存储器快得多。
  3. 主存储器(Main Memory):主存储器(RAM)是计算机中存储数据的主要地方,读写速度较快,通常以纳秒(ns)为单位进行衡量。
  4. 固态硬盘(Solid State Drive,SSD):SSD 是一种使用闪存芯片进行数据存储的存储设备,相较于传统机械硬盘,它的读写速度更快。
  5. 闪存(Flash Memory):闪存用于存储非易失性数据,如USB闪存驱动器和存储卡。闪存的读取速度通常比机械硬盘快,但较SSD慢。
  6. 机械硬盘(Hard Disk Drive,HDD):HDD 是传统的机械存储设备,它使用旋转的磁盘和机械臂进行数据读写,速度相对较慢。
    需要注意的是,这些读写速度是一般情况下的评估,具体的读写速度还受到硬件规格、接口、算法优化等因素的影响。此外,未来随着技术的发展和新型存储器的出现,这些排名可能会发生改变。
    参考:https://zhuanlan.zhihu.com/p/215212514
    在这里插入图片描述

存储器和寄存器的关系?

寄存器是一种特殊的存储器,虽然同样具有存储数据的功能,特殊之处在于寄存器是一种位于CPU内部的高速存储器,用于暂存和执行指令所需要的数据。

总结

(1)存储器按照其特性进行分类,内存RAM用于临时存储数据和程序运行,ROM用于存储只读信息,而闪存用于长期存储和可擦写的数据。这些存储器在计算机系统中有着不同的用途和应用场景。
(2)闪存是一种兼具了RAM和ROM特点的存储器,在许多嵌入式系统和移动设备中发挥着关键的作用。
(3)RAM和ROM的区别:
ROM用来存储用户写好、编译好的程序,运行时CPU直接从ROM中读取一条一条的指令来运行,指令运行过程中产生的临时数据放在RAM中。因此,基本可以理解为:ROM是单片机用来放程序,RAM用来放数据。

在这里插入图片描述

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
嵌入式系统-从SoC芯片到系统是一本介绍嵌入式系统设计的书籍。嵌入式系统是指集成了计算机处理器、内存、输入输出接口以及其他外设的微型计算机系统,用于在特定的应用领域中完成特定任务。而SoC芯片则是一种集成了多个功能模块的单片集成电路,包含了处理器核心、内存控制器、外设接口以及其他系统组件。 这本书从SoC芯片开始,首先介绍了SoC的基本概念和功能组成。然后详细解释SoC芯片的架构设计和硬件设计流程,包括处理器选择、内存和外设的设计原则,以及集成电路的物理设计等。此外,还介绍了SoC芯片的性能评估和调试方法,帮助读者理解如何针对具体应用需求对SoC芯片进行调整和优化。 接下来,书籍重点讲解了嵌入式系统的软件设计和开发。从操作系统的选择与配置开始,包括嵌入式Linux、RTOS等不同的选择。然后介绍了嵌入式软件开发工具和编程语言,包括C、C++以及汇编语言等。同时,还讲解了嵌入式系统的驱动程序开发和应用程序设计等方面的知识。 最后,该书还对嵌入式系统的测试和验证、面向网络连接的嵌入式系统以及面向嵌入式系统安全等相关主题进行了介绍。为读者提供了全面而深入的内容,让其了解从SoC芯片到嵌入式系统的设计和开发过程。 总之,嵌入式系统-从SoC芯片到系统是一本全面介绍嵌入式系统设计的书籍,内容涵盖了硬件和软件两个方面。对于学习和了解嵌入式系统的人员来说,是一本相当实用的参考书。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌小超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值