存储器分类

  • 内存(RAM)
    • SRAM
    • DRAM
  • 外存(ROM)
    • PROM
    • EPROM
    • EEPROM
    • FLASH
      • SPI flash
      • Nor、Nand
    • eMMC
    • SD、TF
    • HDD
    • SSD

存储器有两种,一种是断电之后会丢失信息,叫做易失性存储器(volatile memory);一种是断电后仍然可以保存信息,叫做非已失性存储器(nonvolatile memory)。其中SRAM和DRAM是易失性存储器,经常还会被统称为RAM(Random-Access Memory),随机访问存储器,也叫做主存内存。非易失性存储器人们也称为ROM(Read-Only Memory),这里就不能仅仅以字面意思去理解,ROM字面意思是只读存储器,但有很多ROM既可以读也可以写,ROM称为外存。这些名词似乎都无法准确进行概括去区分,甚至在不同的环境中会有不同的意思,对于刚学习计算机的人会有困惑,但是很多东西似乎也是约定俗成,只要我们知道他们的功能就不会理解错误。

例如怎么理解内存和外存呢?我觉得一定是你已经明白了,你才知道。但你是怎么明白的,一定不是从书上看到的概念:内存,存取速度快,容量小;外存,存取速度慢,容量大。我以前看到这样的描述也觉得说了等于没说。我就会想,为什么速度快就是内存,有多快,比谁快,慢的就不能当内存吗?直到我知道CPU是如何执行指令,程序的代码和数据如何被存放和加载的,计算机局部性原理,存储器层次结构,可能才对这些概念有一个更深的认识,知道为什么这样去设计,这些概念也会随着技术的发展会有变化。本人也是能力有限,无法说明白这些存储器更深层次的区别,不过也给大家提供一个思路。

内存(RAM)

随机访问存储器分为两类,静态的(SRAM)和动态的(DRAM)。

SRAM

SRAM将每个位存储在一个双稳态的存储器单元里。每个单元是用一个六晶体管电路来实现的,在供电期间保留数据。这使得每个内存单元相对较大,并限制了SRAM在低密度内存中的使用。SRAM能够提供更快的数据访问,使用更少的待机电量,但往往比DRAM更昂贵。SRAM一般用来作为高速缓存存储器。

DRAM

DRAM为每个存储器位使用一个晶体管和一个小电容。 由于电容不会无限期地保持电荷,因此必须经常对DRAM单元进行充电(刷新)以避免丢失内容。 这些较小的存储单元允许DRAM用于高密度,低成本的存储器,但通常比SRAM慢。DRAM一般用来作为主存。

外存(ROM)

PROM

PROM,Programmable ROM,可编程只读存储器。只能被编程一次。PROM的每个存储单元有一种熔丝,通过高压电流将其熔丝“烧”断以将其设置为1或0,这过程不可逆,因此数据只能烧写一次。

EPROM

EPROM,Erasable Programmalbe ROM,可擦写可编程只读存储器。EPROM对PROM来说是一个很大的改进,因为不仅可以烧写所需的数据或程序,而且还可以进行多次烧写。早期的EPROM有一个透明的石英窗口,将它们石英窗口暴露于紫外线(UV)中,可以将它们擦除。对EPROM写数据是通过特殊设备来完成的。

EEPROM

EEPROM,Electrically Erasable PROM,电可擦写可编程只读存储器。这是对早期EPROM的改进,因为它不再需要紫外线来擦除存储芯片,因此不需要特殊的设备进行写入。取而代之的是,只需要向芯片上的一个引脚施加特殊的电压就可以了。EEPROM要求一次写入或擦除一个字节的数据。

FLASH

FLASH,Flash Memory,闪存。flash是基于EEPROM发展的,区别是EEPROM要求一次写入或擦除一个字节的数据,而闪存则允许以块为单位写入或擦除数据,这使闪存速度更快。

SPI flash

flash以接口不同可以分为传统flash和SPI flash,传统flash的接口不一,CLE、ALE、CE、RE等,使用的管脚数量也不一,因此难以使用。而后面的SPI flash的接口就SPI总线,统一接口可以方便随时更换不同厂家的flash而不需要修改电路设计和代码,并且SPI flash使用的管脚数量比传统的flash更少。

Nor、Nand

flash memory有两种架构,Nor和Nand。
Nor,容量小,价格高,Nor通常用于代码存储和执行。 Nor允许快速随机访问存储器阵列中的任何位置,部件寿命期内所有存储单元(bit)都是良好的以及可以直接从Nor闪存中执行代码。

Nand,容量大,价格低,通常用于数据存储。 Nand闪存需要一段时间去初始化才能工作,部件寿命期内大概98%的存储单元(bit)是良好的,意味着还有2%的存储单元(bit)是故障,因此需要使用数据校验算法(ECC)。写入和擦除时间比Nor快得多。

eMMC

eMMC,embedded Multi-Media Controller。是Nand和闪存控制器集成在同一芯片封装。Nor和Nand闪存最初不需要单独的硬件闪存控制器,并且将这部分此功能移交给软件处理。硬件闪存控制器的主要功能一是纠错和编码(ECC);功能二实现了FTL(Flash Translation Layer,闪存转换层),该FTL进行类似于磁盘的块访问并将其转换为有意义的Nand操作,以及执行损耗均衡和块节省。eMMC适用于高性能应用,例如用于智能手机,平板电脑,导航系统和数码相机等便携式消费电子产品。

SD、TF

SD,Secure Digital Memory Card,数字安全记忆卡。SD卡和eMMC非常相似,区别就是eMMC一般焊接在主板上,而SD卡是可以拔插的。

TF,TransFLash,也称为Micro SD卡,其实本质上和SD卡是一个东西,只是外形不同,名称不同,开发的公司不同而已。市面上还有TF卡插头适配器,可以直接转换为SD卡。

HDD

磁盘,Hard Disk Drive,HDD。使用旋转盘片为基础的非易失性存储器,它在平整的磁性表面存储和检索数字数据,数据通过离磁性表面很近的磁头由电磁流来改变极性的方式被写入到磁盘上,数据可以通过盘片被读取,原理是磁头经过盘片的上方时盘片本身的磁场导致读取线圈中电气信号改变。(维基百科)

SSD

SSD,solid-state drive,固态硬盘。SSD也是和eMMC一样由Nand和闪存控制器组成,可以理解eMMC通常是一个闪存芯片而SSD是多个闪存芯片,SSD容量会更大;SSD使用SATA、PCIe、M2等接口,传输速度比eMMC的SPI接口更快;eMMC常用于移动设备中,SSD常用于PC。

部分参考:
[1] https://blog.csdn.net/sinat_27746419/article/details/73604520
[2] https://blog.csdn.net/u014470361/article/details/96130939
[3] https://www.gearbest.com/blog/new-gear/tf-card-vs-sd-card-what-is-it-and-9-easy-ways-to-help-you-tell-their-differences-6305
[4] https://www.cypress.com/file/202491/download

嵌入式中常见的存储器总结(一)存储器分类相关推荐

  1. 嵌入式中常见的几个死循环:

    嵌入式中常见的几个死循环: (1) 操作系统是死循环: (2) WIN32 程序是死循环: (3) 嵌入式系统软件是死循环: (4) 多线程程序的线程处理函数是死循环. 你可能会辩驳,大声说:&quo ...

  2. 嵌入式中常见的存储器总结(二)SRAM VS DRAM

    DRAM和SRAM存储器特性表1 DRAM和SRAM存储器特性表2 参考文献 [1] Randal E.Bryant,David R.O'Hallaron:龚奕利,雷迎春译.深入理解计算机系统[M]. ...

  3. STM32存储器组织-STM32存储器映像-嵌入式SRAM-STM32位段-嵌入式闪存-STM32启动配置

    STM使用说明第二篇 [1]STM32存储器组织 [2]STM32存储器映像 [3]嵌入式SRAM [4]STM32位段 [5]嵌入式闪存 [6]STM32启动配置 [1]STM32存储器组织 程序存 ...

  4. 计算机对哪种储存器访问最快,计算机中访问速度最快的存储器是

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 计算机中访问速度最快的存储器是磁带存储器,以磁带为存储介质,由磁带机及其控制器组成的存储设备,是计算机的一种辅助存储器. 存储器( ...

  5. C程序中常见的内存操作错误

    对C/C++程序员来说,管理和使用虚拟存储器可能是个困难的, 容易出错的任务.与存储器有关的错误属于那些令人惊恐的错误, 因为它们在时间和空间上, 经常是在距错误源一段距离之后才表现出来. 将错误的数 ...

  6. 错误内存【读书笔记】C程序中常见的内存操作有关的典型编程错误

    题记:写这篇博客要主是加深自己对错误内存的认识和总结实现算法时的一些验经和训教,如果有错误请指出,万分感谢. 对C/C++程序员来讲,内存管理是个不小的挑战,绝对值得慎之又慎,否则让由上万行代码构成的 ...

  7. 个人计算机的缩写英语,计算机的缩写. 计算机中常见的英语缩写是什么?

    计算机的缩写. 计算机中常见的英语缩写是什么?在使用计算机的过程中,您可能会遇到各种各样的术语个人计算机英文缩写,尤其是那些经常使我们感到疑惑的英文缩写. 那么个人计算机英文缩写,计算机中使用的计算机 ...

  8. Java中常见的单词

    abstract (关键字)             抽象 ['.bstr.kt]  access                            vt.访问,存取 ['.kses]'(n.入口 ...

  9. java中常见的英语单词

    abstract (关键字)             抽象 ['.bstr.kt]  access                            vt.访问,存取 ['.kses]'(n.入口 ...

最新文章

  1. OpenCV读写YAML/XML文件
  2. OpenCVSharp_保存浮点型Mat数据
  3. Kubernetes 安装
  4. 外媒列举2011年十大IT预测:鲍尔默卸任微软CEO
  5. 新元素之video,audio,meter,datalist,keygen,output
  6. 引用类型的转换 java,java中引用类型的强制转换
  7. UNITY引擎变量调用产生不必要内存分配
  8. 使用自定义 HTTP Interceptor 记录 SAP Spartacus 发送的 OCC API 以及响应
  9. SAP CRM AXT Genil handler
  10. linux下xargs命令用法详解
  11. 联想拯救者y空间_ThinkPad X1 Nano上市;联想拯救者R9000X、Y9000X发布
  12. setNavigationBarTitle小程序基础性操作标题改变
  13. Base64编码解码(一)——介绍
  14. .NET微信扫码支付模式二API接口开发测试
  15. 12款黑科技神器,务必低调使用
  16. [ZZ] HD7970GE vs GTX770
  17. ssh远程重装Centos系统
  18. 计算机科学与技术考研双非,2021西安电子科技大学计算机科学与技术考研真题经验参考书...
  19. oracle拆分分区语法详解大全_学习笔记:Oracle分区表 添加 删除 合并 删除 交换 拆分等分区表的操作案例...
  20. 【正本清源】Synchronized 源码全解之偏向锁的获取(基于 Openjdk12)

热门文章

  1. python字典弱引用_如何使用弱引用优化 Python 程序的内存占用?
  2. 内存超频时序怎么调_电脑内存条专业科普,内存选购、内存品牌、内存安装、内存时序体质、内存超频频率详细讲解...
  3. idea中leetcode提示未登录_IntelliJ IDEA中LeetCode插件配置问题代码解析
  4. 加入收藏代码_100个原生JavaScript代码片段知识点详细汇总【实践】
  5. 【linux】Linux配置环境变量
  6. python例题代码_python26个练习题及代码-789
  7. 深度增强学习--Actor Critic
  8. Python中remove,pop,del的区别
  9. [转]Spring中property-placeholder的使用与解析
  10. (转)C++优先队列中元素及结构体的排序