内存的DRAM、SRAM
在学习数电的时候就学习过,RAM分为两大类,有DRAM(Dynamic RAM)、SRAM(Static RAM),在装机器的时候也经常会听到DDR3 DDR4 DDR5等概念,下面详细介绍。
首先DRAM和SRAM这两大类,从原理上说:DRAM是将每bit数据保存在一个个的电容+晶体管
内,而SRAM是将数据保存在一个个触发器
中,由于电容储存的电荷会随时间减少,因此,DRAM需要周期性刷新否则数据将会丢失,SRAM则没有这种困扰。
但从工艺上来说,DRAM的电容会比SRAM触发器更简单,成本因此就更低,也更容易制作得更大容量,集成度更高。DRAM使用成本换取了访问速度和集成度。
SRAM通常用在CPU Cache的小容量但高速的场景中。DRAM需要
刷新 + 预充 + 激活等一系列步骤
才能访问使用,因此速度相对慢很多。总结就是:
- SRAM 快但贵,小容量 → 用于 CPU cache。
- DDR 是 DRAM 快速变种,便宜大容量 → 用于主内存。
DDR
平时装机佬们说的DDR4 DDR5这些,是指DDR(Double Data Rate
DRAM
:“双倍数据速率”,所以是一种高速DRAM。从原理上,它每个时钟周期传输两次数据
(上升沿+下降沿),带宽比传统 SDRAM 更高。
其实,我们市面上现如今能买到的一般都是更好的DDR SDRAM
,多了个S,代表着
Synchronous
DRAM,意思是和系统时钟同步。这个具体不用管,反正DDR就是双倍速率,就是快 φ(゜▽゜*)♪FLASH
FLASH,又叫闪存,是一种断电不丢失数据(非易失性存储器,NVM
,Non-Volatile Memory)存储器,是一种外存。其由浮栅晶体管构成,用于长期存储数据或文件(例如U盘),写入速度比较慢但是读取速度很快。
常见的FLASH有两种:
- NAND FLASH: 用于 SSD、U盘、TF 卡、eMMC(手机)
- NOR FLASH: 可随机读写,常用于固件(BIOS/UEFI ROM)存储 SPI NOR(BIOS 芯片)
没错,FLASH如今一般走SPI总线协议。
有关SPI FLASH,具体可以看这个:
https://zhuanlan.zhihu.com/p/631629580
Intel于1988年首先开发出NOR Flash 技术,彻底改变了原先由EPROM(Erasable Programmable Read-Only-Memory电可编程序只读存储器)和EEPROM(电可擦只读存储器Electrically Erasable Programmable Read - Only Memory)一统天下的局面。紧接着,1989年,东芝公司发表了NAND Flash 结构,强调降低每比特的成本,有更高的性能,并且像磁盘一样可以通过接口轻松升级。NOR Flash 的特点是芯片内执行(XIP ,eXecute In Place),这样应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。NOR 的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响到它的性能。NAND的结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于Flash的管理需要特殊的系统接口。通常读取NOR的速度比NAND稍快一些,而NAND的写入速度比NOR快很多,在设计中应该考虑这些情况。
——《ARM嵌入式Linux系统开发从入门到精通》 李亚峰 欧文盛 等编著 清华大学出版社 P52
Flash闪存是NVM,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。
由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。
其他有关NOR和NAND的区别,具体可以看这个:
https://www.cnblogs.com/eleclsc/p/11393461.html
顺便一提,手机中一般使用的eMMC也是使用FLASH做的:
eMMC = NAND Flash + 控制器(Controller)
它是把 Flash 芯片和控制器封装在一个 BGA 封装中,
通过标准化接口(JESD84)提供存储功能
,不需要额外的 Flash 控制器芯片。SSD硬盘也是NAND FLASH制作而成的。NAND Flash 的成本更低,容量更高。
但是NOR FLASH也不是一无是处,虽然很难做大容量,但是其可以直接从FLASH中执行代码,类似于ROM,并且支持随机读取,因此在BIOS固件的场景或者MCU/嵌入式设备启动代码、Bootloader(例如,STM32 芯片的内置 Flash等) 存储等有重要作用。
注意:
刚刚说
Flash 是一种 NVM(非易失性存储器),它
- ❌
不是 RAM(随机存取存储器)
- ❌
不是传统意义上的 ROM(只读存储器)
- ✅ 更准确地说,它是
一种可擦写的 ROM
(即EEPROM
的变种)
NVMe和PCIe
刚刚也说到了FLASH是一种NVM,顺带再提一嘴NVMe,NVMe是一种协议,全称:
Non-Volatile Memory Express
。NVMe 专为 Flash 打造。NVMe是专为基于 Flash 的固态硬盘(SSD)设计的一种访问协议,工作在 PCIe 总线上。
如果说PCIe是高速公路,那么NVMe就是高速物流协议(专为 Flash 设计)。
NVMe 是协议层,是数据访问的协议;PCIe 是物理层,是硬件接口(物理的数据传输通道),也就是 NVMe 协议运行在 PCIe 总线上。
如果你买了一个 NVMe SSD:它里面的颗粒是 NAND Flash,控制器支持 NVMe 协议,使用 PCIe 通道 与 CPU 通信
双通道
装机时,经常也可以听到需要将内存条组成双通道的说法,这样性能更好,但是这具体是什么意思?
双通道(Dual Channel)是一种内存带宽增强
的技术,这个技术是主板或内存控制器的一种工作方式,而非内存条本身的特性。
如果使用两根规格同样的内存条,主板可以将他们组成双通道模式。采用这个模式下的主板,可以同时读写两条内存
,也就说性能可以翻倍。
两根内存条带宽就是两个总线,相当于高速路由单车道变成双车道,所以数据传输效率更高。
有双通道了,有三通道、四通道....这些说法吗?
答:对也不对,可以看下表:
模式 | 通道数 | 理论带宽提升倍数 | 常见平台 |
---|---|---|---|
单通道 | 1 | 1x | 所有系统最低配置 |
双通道 | 2 | 2x | 主流桌面平台、笔记本平台 |
三通道 | 3 | 3x | 已过时(曾用于 Intel X58 平台) |
四通道 | 4 | 4x | 高端桌面(HEDT)、服务器平台 |
六/八通道 | 6 / 8 | 6x / 8x | 专业工作站、服务器(如 Xeon) |
Intel X58 平台(2008)
:支持三通道
,典型配置是 3×2GB 内存;Intel X299、AMD TRX40(Threadripper)
:支持四通道
;Intel Xeon Scalable/AMD EPYC
:支持六或八通道
(每个内存控制器挂更多 DIMM)。
多通道的目的是为了提升带宽,提升数据的传输效率,不能提高时序延迟,但是对于机器来说,2 * 8GB 总是比单根 16GB 的内存条确实性能要更好的,但是这个也取决于主板是否支持。
如今的家用电脑/笔记本等一般均支持双通道,服务器支持更多通道组成。
这一切,似未曾拥有