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

news2024/9/23 11:23:09

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

文章目录

  • 一、存储器
    • 1.1存储器的作用
    • 1.2存储器的种类
      • 1.2.1按主次分类
      • 1.2.2按特性、功能分类
  • 二、内存
    • 2.1硬件和逻辑两方面
    • 2.2内存的编程模型
    • 2.3类比内存
    • 2.4内存访问方式
    • 2.5内存管理方法
      • 2.5.1操作系统管理
      • 2.5.2裸机程序管理
  • 三、闪存
    • 3.1 NOR FLASH和NAND FLASH
    • 3.2 2D FLASH和3D NAND FLASH
      • 3.2.1 2D FLASH
      • 3.2.2 3D NAND Flash
      • 3.2.3 总结
    • 3.3 采用闪存颗粒的存储器
  • 疑问1:存储器和寄存器的关系?
  • 总结


一、存储器

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 的标准。主要应用于例如手机、手表、汽车等嵌入式终端设备。

疑问1:存储器和寄存器的关系?

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

总结

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

在这里插入图片描述

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

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

相关文章

【小沐学NLP】Python进行统计假设检验

文章目录 1、简介1.1 假设检验的定义1.2 假设检验的基本步骤 2、测试数据2.1 鸢尾花(Iris plants dataset) 3、正态分布检验3.1 直方图判断3.2 KS检验(scipy.stats.kstest)3.3 Shapiro-Wilk test(scipy.stats.shapiro&…

Docker 练习2 安装MySQL

一、实验要求 1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 2、安装搭建私有仓库 Harbor 3、编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。具体要求如下: (1&#xff09…

网上购物系统的设计与实现/在线商城/基于spring boot的电商平台/基于Java的商品销售系统

摘 要 本毕业设计的内容是设计并且实现一个基于Springboot的网上购物系统。它是在Windows下,以MYSQL为数据库开发平台,Tomcat网络信息服务作为应用服务器。网上购物系统的功能已基本实现,主要包括用户管理、数码分类管理、数码产品管理、服…

如何快速制作解决方案PPT

如何快速制作解决方案PPT 理解客户的需求 在开始制作解决方案PPT之前,需要对客户的需求进行深入了解和分析。这包括客户需要解决的问题、目标、预算和时间限制等。 需求分析 客户需要解决的问题客户的目标预算限制时间限制 确定解决方案 基于客户的需求&#x…

LeetCode——二叉树篇(五)

刷题顺序及思路来源于代码随想录,网站地址:https://programmercarl.com 目录 404. 左叶子之和 513. 找树左下角的值 递归 迭代 112. 路径总和 113. 路径总和 II 404. 左叶子之和 给定二叉树的根节点 root ,返回所有左叶子之和。 /**…

【数据结构】如何用队列实现栈?图文详解(LeetCode)

LeetCode链接:225. 用队列实现栈 - 力扣(LeetCode) 本文默认读者已经掌握栈与队列的基本知识 或者先看我的另一篇博客:【数据结构】栈与队列_字节连结的博客-CSDN博客 做题思路 由于我们使用的是C语言,不能直接使用队…

前端 -- 基础 网页、HTML、 WEB标准 扫盲详解

什么是网页 : 网页是构成网站的基本元素,它通常由 图片、链接、文字、声音、视频等元素组成。 通常我们看到的网页 ,常见以 .html 或 .htm 后缀结尾的文件, 因此俗称 HTML 文件 什么是 HTML : HTML 指的是 超文本标记语言&#xff0c…

基于单片机DHT11温湿度NRF2401无线通信控制系统

一、系统方案 本设计采用STC89C5单片机作为主控制器,从机采用DHT11传感器采集温湿度、按键设置报警阀值,液晶1602显示,蜂鸣器报警,无线NRF2401模块。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统…

SQL-每日一题【1527. 患某种疾病的患者】

题目 患者信息表: Patients 查询患有 I 类糖尿病的患者 ID (patient_id)、患者姓名(patient_name)以及其患有的所有疾病代码(conditions)。I 类糖尿病的代码总是包含前缀 DIAB1 。 按 任意顺序…

aardio开发语言Excel数据表读取修改保存实例练习

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom479) winform.add( buttonEnd{cls"button";text"末页";left572;top442;right643;bottom473;z6}; buttonExcelRead{cls"button";text"读取Exce…

基于Java/springboot铁路物流数据平台的设计与实现

摘要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,铁路物流数据平台当然也不能排除在外,从文档信息、铁路设计的统计和分析,在过程中会产生大量的、各…

云原生反模式

通过了解这些反模式并遵循云原生最佳实践,您可以设计、构建和运营更加强大、可扩展和成本效益高的云原生应用程序。 1.单体架构:在云上运行一个大而紧密耦合的应用程序,妨碍了可扩展性和敏捷性。2.忽略成本优化:云服务可能昂贵&am…

攻防世界-Training-WWW-Robots

原题 解题思路 robots.txt是网站的爬虫声明,说明允许哪些部分被爬取,进robots.txt看看。 f1.g.php不让看,进去看看。

AWS复制EC2文件到S3,g4dn.2xlarge没有NVIDIA GPU 驱动问题

1、给instances权限 action > Security > modify IAM role 把提前创建好的role给这个instance即可 2、复制到bucket aws s3 cp gogo.tar.gz s3://ee547finalbucket不需要手动安装GPU驱动 如果要自己安装,参考https://docs.aws.amazon.com/AWSEC2/latest/U…

snpEff变异注释的一点感想

snpEff变异注释整成人生思考 1.介绍2.安装过程以及构建物种参考数据库3.坑货来了4.结果文件判读5.小tips 1.介绍 &nbsp SnpEff(Snp Effect)是一个用于预测基因组变异(例如单核苷酸变异、插入、缺失等)对基因功能的影响的生物…

嵌入式开发之configure

1 前述 在Linux的应用或者驱动开发过程中,编写makefile是无法避免的问题,但是由于makefile的各种规则,或显式,或隐式,非常多,不经常写的话,很难写出一个可用的makefile文件。为了“偷懒”&…

07_缓存预热缓存雪崩缓存击穿缓存穿透

缓存预热&缓存雪崩&缓存击穿&缓存穿透 一、缓存预热 提前将数据从数据库同步到redis。 在程序启动的时候,直接将数据刷新到redis懒加载,用户访问的时候,第一次查询数据库,然后将数据写入redis 二、缓存雪崩 发生情…

Python 的下一代 HTTP 客户端

迷途小书童 读完需要 9分钟 速读仅需 3 分钟 1 环境 windows 10 64bitpython 3.8httpx 0.23.0 2 简介 之前我们介绍过使用 requests ( https://xugaoxiang.com/2020/11/28/python-module-requests/ ) 来进行 http 操作,本篇介绍另一个功能非常类似的第三方库 httpx&…

深入探索JavaScript中的5种经典算法

在本文中,您将了解到: 冒泡排序、快速排序等常见排序算法原理及其在 JavaScript 中的实现; 经典算法示例 1. 冒泡排序算法 冒泡排序算法:冒泡排序是一种简单但效率较低的排序算法。它通过多次遍历数组,比较相邻元素并…

JVM前世今生之JVM内存模型

JVM内存模型所指的是JVM运行时区域,该区域分为两大块 线程共享区域 堆内存、方法区,即所有线程都能访问该区域,随着虚拟机和GC创建和销毁 线程独占区域 虚拟机栈、本地方法栈、程序计数器,即每个线程都有自己独立的区域&#…