:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
:文章若有幸对你有帮助,可点赞 收藏 ⭐不迷路
:内容若有错误,敬请留言 指正!原创文,转载请注明出处
存储器又被称为存储芯片,是全球需求最多的一类芯片,主要用来存储程序和数据的部件,对于计算机来说,有了存储器,才有记忆功能,才能保证正常工作。然而在2016年之前我国国产存储芯片的市场基本为零,其中最为主要的当属DRAM内存和NAND flash两类。
按其主次可分为内存和外存,即主存储器和辅助存储器
首选,我们从字面上来尝试理解内存,其中有个“内”,这明显是一个相对的词,那它到底相对于谁?
答案是:相对于CPU而言,能与其直接进行数据传输的存储器,称之为“内存”。
主存储器又称内存储器(简称内存),内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,一旦关闭电源或发生断电,其中的程序和数据就会丢失,一般为RAM;
辅助存储器又称外存储器(简称外存),外存通常是磁性介质或光盘,像硬盘(机械和SSD),软盘,磁带,CD等,能长期保存信息,并且不依赖于电来保存信息;
RAM、ROM和闪存(Flash)是按照存储器的特性和功能进行分类的。
RAM(Random Access Memory,随机存取存储器):
ROM(Read-Only Memory,只读存储器):
闪存(Flash):
类似RAM,闪存是一种可以进行读取和写入操作的存储器,也具备了随机存取数据的能力。它可以像RAM一样用于存储和处理数据。
类似ROM,闪存具有非易失性特性,即在断电或重新启动设备后数据仍然保存。这使得闪存在长期存储数据方面非常有用,可以作为可靠的存储介质。
上述特性描述表明:
此外,闪存还具有可擦写和可编程的特性。与ROM不同,闪存中的数据可以被擦除和重新编程,这使得闪存适用于存储需要频繁修改或更新的数据,如操作系统、固件、配置数据、用户数据等。
需要注意的是,闪存的读写速度相较于RAM较慢,并且闪存的写入操作通常需要整个块或扇区的擦除,再进行数据的重新编程。这些特点使得闪存在某些场景下可能不适用于频繁的随机写入操作。
第一章将存储器的种类以及相应的特性进行了阐述,我们知道:
:内存用于临时存储数据和程序运行
:ROM用于存储只读信息
:而闪存用于长期存储和可擦写的数据
接下来,我们思考一个问题,平时买手机的时候,经常会将内存作为一个很重要的参考指标,听它的名字就知道是一种存储器,那它到底属于哪种存储器呢?应当具备何种特性?
1.2.1小节已经将内存的概念阐述清楚了,即:
内存主要是指随机存取存储器(RAM)。RAM作为计算机的主存储器,用于临时存储正在运行的程序、数据和临时结果。
从硬件和逻辑两方面对内存的概念进行阐述
1.硬件角度:内存并不单单是电脑上的一个配件(一般叫内存条)。其存在的硬件形式多种多样,根据不同的硬件实现原理可将内存分成SRAM和DRAM(DRAM又有好多代,譬如最早的SDRAM,后来的DDR1、DDR2·····、LPDDR)
在嵌入式产品中,并没有内存条。例如:单片机中,内存通常指的是芯片内部的存储器,
2.逻辑角度:内存(RAM)可以随机访问(随机访问的意思是只要给一个地址,就可以访问这个内存地址)、并且可以读写(当然了逻辑上也可以限制其为只读或者只写);内存在编程中天然是用来存放变量的(就是因为有了内存,所以C语言才能定义变量,C语言中的一个变量实际就对应内存中的一个单元)。
内存的编程模型就是其逻辑的抽象化表现
逻辑上,内存实际上是由无限多个内存单元格组成的,每个单元格有一个固定的地址称为“内存地址”,这个内存地址和这个内存单元格唯一对应且永久绑定。
内存的访问方式
内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。
CPU的地址总线的位数是CPU设计时确定的,因此一款CPU所能寻址的范围是一定的,而内存是需要占用CPU的寻址空间的。
内存与CPU的这种总线式连接方式是一种直接连接,优点是效率高、访问快,缺点是资源有限,扩展性差。
可以将内存比作一栋大楼,内存单元格类似于大楼中的小房间,而每个内存单元格的地址就相当于每个小房间的房间号。内存中存储的内容(数据)可以看作是住在房间中的人。
虽然可以使用类比来帮助解释某些存储器的工作原理,但不同存储器之间的差异需要加以考虑。例如,内存的类比可以使用房间和房间号来解释,但它不适用于闪存中的数据写入和擦除操作。类似地,硬盘、SSD、光盘等存储器类型也有各自独特的特征,类比方法需要根据其特点进行调整。
内存通过CPU的地址总线来寻址定位,然后通过CPU数据总线来读写。
CPU的地址总线的位数是CPU设计时确定的,因此一款CPU所能寻址的范围是一定的,而内存是需要占用CPU的寻址空间的。
内存与CPU的这种总线式连接方式是一种直接连接,优点是效率高、访问快,缺点是资源有限,扩展性差。
内存用来存储数据,数据在程序中表现为全局变量、局部变量等(在gcc中,其实常量也是存储在内存中的)(大部分单片机中,常量是存储在flash中的,也就是在代码段)。
如果内存管理不善,可能会造成程序运行消耗过多的内存,这样迟早内存都被程序消耗殆尽,当没有内存可用时程序就会崩溃。所以内存对程序来说是一种资源,所以管理内存对程序来说是一个重要技术和话题。
操作系统给提供了内存管理的一些接口,我们只需要用API即可管理内存。譬如在C语言中使用malloc、free这些接口来管理内存。
而在没有操作系统(其实就是裸机程序)中,程序需要直接操作内存,编程者需要自己计算内存的使用和安排。如果编程者不小心把内存用错了,错误结果需要自己承担。
概念:2D NAND Flash是最早的NAND Flash技术,也被称为Planar NAND Flash或Planar Cell NAND Flash。它采用了二维的布局结构,在一个平面上排列存储单元。每个存储单元通常由一个浮动栅和一个控制栅组成,可以存储多个位数据。
特性:2D NAND Flash的存储密度和性能较低,因为它的单层结构限制了每个存储单元的数目。随着存储需求的增加,2D NAND Flash逐渐无法满足高容量和高速度的要求。
概念:3D NAND Flash是新一代的NAND Flash技术,也被称为Vertical NAND Flash或Vertical Cell NAND Flash。3D NAND Flash采用垂直堆叠的结构,使每个芯片内的存储单元层数大大增加。
特性:通过在垂直方向上堆叠多层存储单元,3D NAND Flash大大提高了存储密度,同时也提升了写入和擦除速度。3D NAND Flash技术能够实现更大容量和更高性能的存储器设备,如高容量的固态硬盘。
2D NAND Flash和3D NAND Flash是两种不同的闪存存储器技术,用于制造NAND Flash芯片。2D NAND Flash是较旧的技术,采用二维平面布局结构,存储密度和性能有限。而3D NAND Flash是较新的技术,采用垂直堆叠结构,具有更高的存储密度和性能,能够满足日益增长的存储需求。
消费机存储器:SSD 主要作用是取代 PC/服务器上的 HDD 硬盘;
嵌入式存储:eMMC 和 UFS 都是面向移动端 Flash 的标准。主要应用于例如手机、手表、汽车等嵌入式终端设备。
寄存器是一种特殊的存储器,虽然同样具有存储数据的功能,特殊之处在于寄存器是一种位于CPU内部的高速存储器,用于暂存和执行指令所需要的数据。
(1)存储器按照其特性进行分类,内存RAM用于临时存储数据和程序运行,ROM用于存储只读信息,而闪存用于长期存储和可擦写的数据。这些存储器在计算机系统中有着不同的用途和应用场景。
(2)闪存是一种兼具了RAM和ROM特点的存储器,在许多嵌入式系统和移动设备中发挥着关键的作用。
(3)RAM和ROM的区别:
ROM用来存储用户写好、编译好的程序,运行时CPU直接从ROM中读取一条一条的指令来运行,指令运行过程中产生的临时数据放在RAM中。因此,基本可以理解为:ROM是单片机用来放程序,RAM用来放数据。