各位小伙伴,今天咱们来聊聊电脑里那个神秘的小东西——内存!它可是数字系统里不可或缺的核心部件,上到服务器,下到手机,都离不开它。CPU 要想飞速运转,就得有个靠谱的“仓库”来周转数据,这个“仓库”就是我们的内存 (DRAM-Random Access Memory)。
存储芯片家族大合影。存储器主要分为 ROM(只读存储器)和 RAM(随机存取存储器)两大阵营。
- ROM:只读存储器
ROM 里的数据,就像出厂设置一样,是事先写好的,工作过程中只能读取。而且 ROM 里的数据很稳定,断电了也不会消失。
- RAM:随机存取存储器 (random access memory)
RAM 可是 CPU 的好伙伴,直接跟 CPU 交换数据,读写速度杠杠的!不过 RAM 里的数据是临时的,断电就没了,所以通常用来存放操作系统或者正在运行的程序。
- DDR SDRAM:双倍快乐,速度加倍
DDR SDRAM 在 SDRAM 的基础上做了升级,就像开了加速 Buff 一样,可以在时钟的上升沿和下降沿同时传输数据,速度直接翻倍!现在电脑里用得最多的就是它,性价比超高。DDR 都已经进化到 DDR5 了,性能更是有了质的飞跃。
近 20 多年来,DRAM 发展迅速,从上世纪末的 SDRAM 到现在的 DDR RAM。在 21 世纪的前 10 年,DDR 标准主要由 PC 和工作站驱动,快速从 DDR1 进化到 DDR3。而近 10 年来,移动互联网时代海量数据爆发,AI、深度学习和 5G 技术驱动,DDR4 标准在个人信息终端上显得有些力不从心。现在,DDR5 正昂首阔步,配合以 PCIE5.0 32Gbps 为代表的第 5 代高速 I/O 数据传输,走向市场。
内存进化史:20 年风雨历程,信号特点大揭秘
下图展示了内存 RAM 20 多年来的发展、信号特点和设计演进,看完你就明白内存是怎么一步步变强的了。
DDR 标准发展和信号特点演进
1、DDR 是个啥?一句话说明白
DDR 的全称是 Double Data Rate SDRAM,翻译过来就是双倍数据速率同步动态随机存取内存。简单来说,它就是一种速度超快的内存,主要用在电脑里。DDR 的特点是走线多、速度快、操作复杂,给测试和分析带来了不小的挑战。
现在 DDR 技术已经发展到 DDR5 了,性能更高,功耗更低,存储密度也更高,芯片容量大幅提升,数据速率在 3200-6400MT/s 之间。
DDR 的核心秘诀在于双沿传输和 预取 Prefetch,它不需要提高时钟频率就能让 SDRAM 的速度翻倍。它允许在时钟的上升沿和下降沿都读取数据,速度自然是标准 SDRAM 的两倍。
DDR 的频率包括核心频率、时钟频率和数据传输频率。核心频率就是内存的工作频率;DDR1 内存的核心频率和时钟频率相同,到了 DDR2 和 DDR3 才有了时钟频率的概念,它是核心频率通过倍频技术得到的。数据传输频率就是传输数据的频率。
JEDEC 定义了 DDR 规范
DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access Memory,双数据率同步动态随机存储器),简称为 DDR,说白了就是双倍传输速率的 SDRAM。普通 SDRAM 内存的工作方式是在一个时钟周期的上升沿触发。也就是说,一个时钟周期内,内存工作一次。而 DDR 的技术让内存可以在每个时钟周期的上升沿和下降沿都触发一次,一个时钟周期内内存可以工作两次,效率直接翻倍!(文末有 DDR 术语解释)
2、DDR 内存的秘密:架构大剖析
DDR subsystem 架构图:DDRC + DDRphy + SDRAM 颗粒
DDR IP 一般包括 DDR Controller 和 DDR PHY,内部涉及的内容包括但不限于:数据保序、仲裁、最优调度、协议状态机设计、防饿死机制、bypass 通路、快速切频、DDR training。
3、DDR 工作原理:像 Flash 一样丝滑
当时钟脉冲达到一定频率时,DDR 存储器就开始工作了,然后就是“读-存-读”的过程。芯片从主存取数据,然后和输入数据一起存到存储区。写入完成后,再从存储区取出数据,传输到处理器,处理后再把最终结果返回到主存。
DDR 的双倍数据传输率就是每个时钟周期内读写一次数据,DDR 芯片可以在每个时钟周期内分别完成“读-存”和“存-读”操作,提高存储器的传输效率。
DDR 内存通过双倍数据速率的传输方式,结合多通道传输和数据校验等技术,提高了数据传输效率和可靠性,成为了计算机内存的主流技术。
- 内存芯片: DDR 内存模块里有很多内存芯片,每个芯片都有自己的存储单元,每个存储单元都有一个地址,用于读取或写入数据时进行寻址。
- 数据总线: DDR 内存模块连接到计算机的内存控制器,通过数据总线进行数据传输。数据总线可以同时传输多个数据位,比如 64 位或 128 位。
- 时钟信号: DDR 内存模块通过时钟信号进行同步操作。时钟信号用来控制数据的传输速率,每个时钟周期内有一个上升沿和一个下降沿。上升沿时,数据从内存芯片传输到数据总线;下降沿时,数据从数据总线传输到内存芯片。
- 预充电: 在开始传输数据之前,DDR 内存模块会先进行预充电操作,将存储单元中的电荷恢复到初始状态,确保接下来的数据传输是准确的。
- 数据传输: DDR 采用了多通道的数据传输方式,同时传输多个数据位,这样可以在每个时钟周期内传输更多的数据。
DDR 接口可传输控制、地址、时钟、选通和数据信号。如图所示,时钟、地址和控制信号从存储器控制器单向传输到 DDR 芯片;选通和数据信号为双向传输。在读取操作中,选通和数据信号从 DDR 芯片传输到存储器控制器。在写入操作中,信号沿相反方向传输。随着数据传输速率的增加和信号幅度的降低,为了提高信号性能,时钟和选通信号采用差分信号,这样可以消除共模噪声。其他信号仍然在单端模式下操作,更容易受到噪声、串扰和干扰的影响。
4、存储器家族:内存、外存、缓存、闪存,傻傻分不清?
存储器分为内部存储器(内存)、外部存储器(外存)、缓冲存储器(缓存)以及闪存这几个大类。
- 内存: 也称为主存储器,位于系统主机板上,可以同 CPU 直接进行信息交换。特点是运行速度快,容量小。
- 外存: 也称为辅助存储器,不能与 CPU 之间直接进行信息交换。特点是存取速度相对内存要慢得多,存储容量大。
内存与外存本质区别是,一个是内部运行提供缓存和处理的功能,也可以理解为协同处理的通道;而外存主要是针对储存文件、图片、视频、文字等信息的载体,也可以理解为储存空间。
- 缓存: 就是数据交换的缓冲区(称作 Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。
- 闪存: (Flash Memory)是一种长寿命的非易失性的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位。闪存是电子可擦除只读存储器(EEPROM) 的变种,闪存与 EEPROM 不同的是,EEPROM 能在字节水平上进行删除和重写而不是整个芯片擦写,而闪存的大部分芯片需要块擦除。由于其断电时仍能保存数据,闪存通常被用来保存设置信息,如在电脑的 BIOS(基本程序)、PDA(个人数字助理)、数码相机中保存资料等。
5、DDR 带宽怎么算?一图胜千言
6、SDRAM 和 DDR 的爱恨情仇
DDR=双倍速率同步动态随机存储器,是内存的其中一种。DDR 取消了主板与内存两个存储周期之间的时间间隔,每隔 2 个时钟脉冲周期传输一次数据,大大地缩短了存取时间,使存取速度提高百分之三十。
SDRAM 是 "Synchronous Dynamic random access memory” 的缩写,意思是“同步动态随机存储器”,就是我们平时所说的“同步内存”。从理论上说,SDRAM 与 CPU 频率同步,共享一个时钟周期。SDRAM 内含两个交错的存储阵列,当 CPU 从一个存储阵列访问数据的同时,另一个已准备好读写数据,通过两个存储阵列的紧密切换,读取效率得到成倍提高。
DDR 是 SDRAM 的更新换代产品,采用 5 伏工作电压,允许在时钟脉冲的上升沿和下降沿传输数据,这样不需要提高时钟的频率就能加倍提高SDRAM 的速度,并具有比 SDRAM 多一倍的传输速率和内存带宽。
DDR 标准发展和信号特点演进
7、DDR4 vs DDR5:谁是性能之王?
作为当前市场主流的 DDR4 标准和业界正在集中攻关的 DDR5 标准,对比有何差异呢?
如下表所列,从芯片开发到电路系统设计角度来看相比,DDR5 为了实现更高带宽和吞吐量进一步提升读写速率和改变通道架构以及猝发读写长度,目前规划的最高速率达 8400M T/s。
为了实现更低功耗和电源管理 I/O 电压降到 1.1V,并在 DIMM 条上完成电源管理工作以实现更高 的电源效率(主要是缩短电源传输路径以降低损耗和减小潜在的干扰)。为了提高数据带宽,不仅 提升速率同时采用双通道架构,提升读写效率,采用双通道 32 data + 8 ECC,Burst Length 也从 4/8 提高到 8/16,最后还支持更高容量的 DRAM 器件,从 DDR4 16 Gb 加倍到 32 Gb。总之,DDR5 作为业界备受期望的第 5 代 I/O 的内部数据共享和传输标准将与 PCI Express 5.0 乃至 6.0 等高速接口标准一起重塑 iABC 时代的大数据流的高速公路。
DDR4 和 DDR5 比较(源自 Rambus)
1.1 速率的提升
近年来,内存与 CPU 性能发展之间的剪刀差越来越大,对内存带宽的需求日益迫切。DDR4 在 1.6GHz 的时钟频率下最高可达 3.2 GT/s 的传输速率,最初的 DDR5 则将带宽提高了 50%,达到 4.8 GT/s 传输速率。DDR5 内存的数据传输速率最终将会达到 8.4 GT/s。
1.2 电压的降低
降低工作电压(VDD),有助于抵消高速运行带来的功耗增加。在 DDR5 DRAM 中,寄存时钟驱动器 (RCD) 电压从 1.2 V 降至 1.1 V。命令/地址 (CA) 信号从 SSTL 变为 PODL,其优点是当引脚处于高电平状态时不会消耗静态功率。
1.3 DIMM 新电源架构
使用 DDR5 DIMM 时,电源管理将从主板转移到 DIMM 本身。DDR5 DIMM 将在 DIMM 上安装一个 12 V 电源管理集成电路(PMIC),使系统电源负载的颗粒度更细。PMIC 分配 1.1 V VDD 电源,通过更好地在 DIMM 上控制电源,有助于改善信号完整性和噪音。
1.4 DIMM 通道架构
DDR4 DIMM 具有 72 位总线,由 64 个数据位和 8 个 ECC 位组成。在 DDR5 中,每个 DIMM 都有两个通道。每个通道宽 40 位,32 个数据位和 8 个 ECC 位。虽然数据宽度相同(共 64 位),但两个较小的独立通道提高了内存访问效率。因此,使用 DDR5 不仅能提高速度,还能通过更高的效率放大更高的传输速率。
DDR5 总线架构和标准 DDR5 RDIMM 内存条
1.5 更长的突发长度
DDR4 的突发长度为 4 或者 8。对于 DDR5,突发长度将扩展到 8 和 16,以增加突发有效载荷。突发长度为 16(BL16),允许单个突发访问 64 字节的数据,这是典型的 CPU 高速缓存行大小。它只需使用两个独立通道中的一个通道即可实现这一功能。这极大地提高了并发性,并且通过两个通道提高了内存效率。
1.6 更大容量的 DRAM
DDR4 在单芯片封装(SDP)中的最大容量为 16 Gb DRAM。而 DDR5 的单芯片封装最大容量可达 64 Gb,组建的 DIMM 容量则翻了两番,达到惊人的 256 GB。
8、DDR5 的独门绝技
从物理层信号角度来看,DDR5 主要有如下特点:
1. 采用分离式全速率时钟,对应 6400M T/s 频率最高达 3.2GHz。
时钟控制命令信号,选通信号控制数据,如上图示。
对时钟信号抖动的要求更加严格,对各种命令信号与数据和地址信号的时序要求也更高。
2. 更宽的总线,单端信号,从 RCD(Registering Clock Drivers)芯片来看采用 Multi-Drop 架构。
基于今天更宽的总线需求,在一块刀片服务器上可能支持 1000+ 个并行数据通道。且由于 继续采用单端信号且速率倍增,传统只在串行差分电路上考虑的损耗问题也开始困扰 DDR5。因此 在 DDR5 设计和验证测试上,不仅需要考虑传统的串扰问题还增加了对电路损耗问题的考虑。
3. 双向复用的数据总线,读写数据分时复用链路。囿于有限的链路通道和布板空间等资源读写操作继续采用共享总线,因此需要分时操作。
从验证测试角度来看也需要分别对读和写信号进行分离以检查其是否满足规范。
DDR5 读写共享总线
4. 猝发 DQS 和 DQ 信号在更高速率的背景下在有限带宽的链路传输时带来更多 ISI 效应问题。
在 DQS 读写前导位,猝发第一个 bit 等等均有不同的效应和表现。此外考虑到存储电路在设计上不同于串行电路存在较多的阻抗不匹配,因此反射问题或干扰带来的 ISI 也会更严重。
DDR5 在接收端采用更多的类似高速串行总线的信号处理
因此在接收侧速率大于 3600M T/s 时采用类似高速串行电路和标准总线中已经成熟的 DFE 均衡技术,可变增益放大(VGA)则通过 MR 寄存器配置,以补偿在更高速率传输时链路上的损耗。DDR4 标准采用的 CTLE 作为常用的线性均衡放大,虽然简单易实现但是其放大噪声的副产品也更 为常见,考虑到 DDR5 总线里的反射噪声比没有采用。另外考虑到并行总线的串扰和反射等各信 号抖动的定义和分析也会随之变化。
从测试角度来看,示波器是无法得到 TP2 点即均衡后的信号的,而仅能得到 TP1 点的信 号,然后通过集成在示波器上的分析软件里的均衡算法对信号进行均衡处理以得到张开的眼图。眼图分析的参考时钟则来自基于时钟信号的 DQS 信号。另外眼图测试也从以往仅对 DQ 进行扩展 到包括 CMD/ADDR 总线。
9、DDR 术语扫盲班
DDR - Double Data Rate 双倍速率
SDRAM - Synchronous Dynamic Random Access Memory 的缩写,即同步动态随机存取存储器。
DDR SDRAM - Double Data Rate SDRAM 的缩写,是双倍速率同步动态随机存储器的意思。
Channel - 简单理解一个通道对应一个 DDR 控制器,每个通道拥有一组地址线、控制线和数据线
DIMM - DIMM 全称 Dual-Inline-Memory-Modules,中文名叫双列直插式存储模块,是指奔腾 CPU 推出后出现的新型内存条,它提供了 64 位的数据通道。是主板上的一个内存插槽,一个 channel 可以包含多个 DIMM。
Rank - 一组可以被一个内存通道同时访问的芯片组合称作一个 rank,一个 rank 中的每个芯片都共用内存通道提供的地址线、控制线和数据线,同时每个芯片都提供一组输出线,这些输出线组合起来就是内存条的输出线。简单来说 rank 是一组内存芯片集合,当芯片位宽*芯片数=64bit(内存总位宽)时,这些芯片组成一个 Rank,存储 64bit 的数据。一般每个芯片位宽是 8bit,然后内存条每面 8 个芯片,那么每面就构成了一个 Rank,这两面的 Rank 通过一根地址线来区分当前要访问的是哪一面。同一个 Rank 中所有的芯片协作来读取一个地址(1 个 Rank,8 个芯片*8bit=64bit),这个地址的不同 bit,每 8 个一组分散在这个 Rank 上的不同芯片上。设计 Rank 的原因是为了减少每个芯片的位宽(在 CPU 总位宽确定的前提下,比如 64bit),降低复杂度。
Chip - 是内存条上的一个芯片,由多个 bank 组成,大多数是 4bit/8bit/16bit,多个 chip 做成一个 rank,配合完成一次访问的位宽。
Bank - 是一个逻辑上的概念。一个 bank 可以分散到多个 chip 上,一个 chip 也可以包含多个 bank。DDR4 以前是没有 Bank Group 的,所以该值就表示整个颗粒中 Bank 数量。但是在 DDR4 和 DDR5 中,就表示每个 Bank Group 中 Bank 的数量,整个颗粒 Bank 数量 = Bank Group * Bank。
8 阵列 bank
Row、Column 组成的 memory array - 可以简单的理解 bank 为一个二维 bit 类型的数组。每个 bank 对应一个 bit,8 个 bank 组成 8bit 的数据。
Voltage(VDDQ)- 存储芯片(颗粒)的输出缓冲供电电压。
Device Width - 颗粒位宽,常见为 4/8/16bit。一个 Memory Array 中由行地址和列地址的交叉选中一个位,若 2 个 Array 叠加在一起,就同时选中了 2 个Bit,位宽是 X2。若 4 个 Array 叠加到一起,就能够同时选中 4 个 Bit,位宽则是 X4。也就是说,对一个 X4 位宽的 DDR 颗粒,如果给出行地址和列地址,就会同时输出 4 个 Bit 到 DQ(数据输入、输出:双向数据总线)数据线上。
Die Density - 颗粒密度,也就是容量,随着 DDR 迭代,容量越来越大。
Data rates - MT/s 指每秒传输多少个数据(Mega-transfer per second),和时钟频率是两个不同的概念。DDR(dual data rate)是双边沿传输数据。因此 MT/s 是 IO 时钟频率的两倍。
Prefetch - 在一个时钟周期中,同时将相邻列地址的数据一起取出来,并行取出 DRAM 数据,再由列地址 0/1/2(DDR1 使用列 0,DDR2 使用列 0 和列 1,DDR3/DDR4 使用列 0,1 和 2)选择输出。2n/4n/8n。这里的数字指的就是并行取出的位数。这里的 n,就是 DQ 位宽,即上面的 device width(x4/x8/x16)。所以 DDR3 16bit SDRAM 内存颗粒,16bit 指的是位宽,其一次读写访问的数据量是 8*16=128bit
Bank Group - Bank 分组数量,该特性只存在于 DDR4 和 DDR5 中
Burst Length - 指突发长度,突发是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所涉及到存储单元(列)的数量就是突发长度,在 DDR SDRAM 中指连续传输的周期数。一般对应预取 bit 数目。
Core frequency - 颗粒核心频率,即内存 cell 阵列的工作频率,它读取数据到 IO Buffer 的频率。它是内存频率的基础,其他频率都是在该频率的基础上得出来的。
IO clk Frequency - 内存的数据传输速率。它和内存的 prefetch 有关。对于 DDR,一个时钟周期的上升沿和下降沿都在传输数据,即一个时钟周期传输 2bit 的数据,所以 DDR 的 prefetch 为 2bit。对于 DDR2,IO 时钟频率是其核心频率的两倍,同时也是双沿传输数据,因此 DDR2 的 prefetch 为 2×2bit=4bit。对于 DDR3,IO 时钟频率是其核心频率的四倍,同时也是双沿传输数据,因此 DDR3 的 prefetch 为 4×2bit=8bit。
Arbitration CMD priority - 仲裁器,仲裁 CMD 的优先级。会对来自各端口的请求进行仲裁,并将请求发送给控制器,仲裁其从端口收到的每个事务,每个事务都有一个相对应的优先级。端口仲裁逻辑会根据优先级进行处理,从而确定如何向控制器发出请求。以 Cadence Denali 内存控制器为例,它有几种仲裁策略:
Round Robin - 每个端口对应一个独立的计数器,当端口上有请求被接受的时候,计数器就会增加,然后仲裁器会针对计数器非 0 的端口的请求进行轮流仲裁,每仲裁执行一次,相应端口的计数器减一,直到端口接受请求计数器变为 0。
带宽分配/优先级轮流操作 - 结合轮流操作、优先级、带宽和端口带宽保持等,根据用户分配的命令优先级,将传入的命令按优先级分组。在每个优先级组内,仲裁器评估请求的端口、命令队列和请求的优先级,从而确定优先级。当控制器繁忙时,超过其带宽分配的端口,可能会接受较低的优先级服务。
加权优先级循环 - 是一种面向服务质量的算法,结合了循环操作、优先级、相对优先级、端口排序的功能。根据命令的优先级或该类型命令的相关端口的优先级,将传入的命令分成优先级组。具有较高权重的端口可能会更频繁的接受仲裁,从而更容易被运行到
DDR SDRAM Control - DDR SDRAM 的控制。包含了一个命令队列,接受来自仲裁器的命令。该命令队列使用一个重排算法来决定命令的放置顺序。重排逻辑遵循一些规则,通过考虑地址碰撞、源碰撞、数据碰撞、命令类型和优先级,来确定命令插入到命令队列的位置。重排逻辑还通过命令分组和 bank 分割,来提高控制器的效率。当命令进入命令队列后,选择逻辑扫描命令队列中的命令进行运行。若较高优先级的命令还没有准备好运行,较低优先级的命令不与命令队列中排在前面的命令冲突,那么这个较低优先级的命令,可以先于该没准备好的高优先级命令运行。此外,控制器还包含一个仲裁块,支持软件可编程接口、外部引脚及计数器的低功耗控制。另外,控制器支持调频功能,用户可以通过操作寄存器组,调整 ddr 的工作频率。
Transaction Processing - 事务处理用于处理命令队列中的命令。该逻辑会重排命令,使 DRAM 的读写带宽吞吐最大化。
黑客/网络安全学习包
资料目录
-
成长路线图&学习规划
-
配套视频教程
-
SRC&黑客文籍
-
护网行动资料
-
黑客必读书单
-
面试题合集
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
1.成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
2.视频教程
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*************************************
3.SRC&黑客文籍
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录
SRC技术文籍:
黑客资料由于是敏感资源,这里不能直接展示哦!
4.护网行动资料
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!
5.黑客必读书单
**
**
6.面试题合集
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。
更多内容为防止和谐,可以扫描获取~
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
*************************************CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享*********************************