【x86】DRAM、SRAM、DDR、FLASH、双通道的概念科普

【x86】DRAM、SRAM、DDR、FLASH、双通道的概念科普

一言准备中...

【x86】DRAM、SRAM、DDR、FLASH、双通道的概念科普

内存的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 的内存条确实性能要更好的,但是这个也取决于主板是否支持。
如今的家用电脑/笔记本等一般均支持双通道,服务器支持更多通道组成。

  • 本文作者:WAP站长网
  • 本文链接: https://wapzz.net/post-27311.html
  • 版权声明:本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。
本站部分内容来源于网络转载,仅供学习交流使用。如涉及版权问题,请及时联系我们,我们将第一时间处理。
文章很赞!支持一下吧 还没有人为TA充电
为TA充电
还没有人为TA充电
0
  • 支付宝打赏
    支付宝扫一扫
  • 微信打赏
    微信扫一扫
感谢支持
文章很赞!支持一下吧
关于作者
2.7W+
9
1
2
WAP站长官方

[Bukkit插件开发]手持发射器箭矢机枪 教学文档 面向Python/C#开发者入门Java与Bukkit API

上一篇

Ctorch开发日志——矩阵乘法优化及数学原理

下一篇
评论区
内容为空

这一切,似未曾拥有

  • 复制图片
按住ctrl可打开默认菜单