摘要:内存(DRAM-Random Access Memory)作为当代数字系统最主要的核心部件之一,从各种终端设备到核心层数据处理 和存储设备,从各种消费类电子设备到社会各行业专用设备,是各种级别的 CPU 进行数据处理运算和缓存的不可或缺的周转“仓库”,一个强大
内存(DRAM-Random Access Memory)作为当代数字系统最主要的核心部件之一,从各种终端设备到核心层数据处理 和存储设备,从各种消费类电子设备到社会各行业专用设备,是各种级别的 CPU 进行数据处理运算和缓存的不可或缺的周转“仓库”,一个强大的核心处理单元也必须配备一个高速运转的宽通路的数据访问和存储单元。
存储芯片基本分类。存储器主要分为只读存储器 ROM 和随机存取存储器 RAM (random access memory) 两大类。
-ROM:只读存储器 - ROM 所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,ROM所存数据稳定,断电后所存数据也不会改变。
-RAM:随机存取存储器 (random access memory) - RAM 是与 CPU 直接交换数据的内部存储器,它可以随时读写,速度快,通常作为操作系统或其他正在运行中的程序的临时数据存储媒介,当电源关闭时 RAM 不能保留数据。
-ddr SDRAM 在系统时钟的上升沿和下降沿都可以进行数据传输 - DDR SDRAM在 SDRAM 的基础上发展而来,这种改进型的 DRAM和 SDRAM 是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了,也是目前电脑中用得最多的内存,而且具有成本优势。DDR 已经发展至今已经进化到 DDR5,与 DDR4相比,DDR5 在强大的封装中带来了全新的架构。
近 20 多年来,DRAM也快速地从 20 世纪末期的 SDRAM 发展到 21 世纪 DDR RAM。在 21 世纪的前10 年,DDR标准主要是个人信息处理终端的代表设备----PC 和个人工作站类驱动,快速从 DDR1 演进到 DDR3。而近 10 年来,进入移动互联时代后海量数据爆发,AI 和深度学习以及 5G驱动,在个人信息终端上基本可以胜任的 DDR4标准,明显显得力不从心。今天 DDR5正在昂首阔步地配合以 PCIE5.0 32Gbps 为代表的第5代高速 I/O 数据传输走向最终的市场化。
DDR标准发展和信号特点演进
一些DDR基本概念
DDR的全拼是Double Data Rate SDRAM双倍数据速率同步动态随机存取内存, 主要用在电脑的内存。DDR的特点就是走线数量多,速度快,操作复杂,给测试和分析带来了很大的挑战。目前DDR技术已经发展到了DDR5,性能更高,功耗更低,存储密度更高,芯片容量大幅提升,他的数据速率在3200-6400MT/s。DDR本质上不需要提高时钟频率就能加倍提高SDRAM的速度,它允许在时钟的上升沿和下降沿读出数据,因而其速度是标准SDRAM的两倍,至于地址与控制信号则与传统SDRAM相同,仍在时钟上升沿进行数据判断。DDR的频率包括核心频率,时钟频率和数据传输频率。核心频率就是内存的工作频率;DDR1内存的核心频率是和时钟频率相同的,到了DDR2和DDR3时才有了时钟频率的概念,就是将核心频率通过倍频技术得到的一个频率。数据传输频率就是传输数据的频率。JEDEC 定义了 DDR 规范
DDR SDRAM(Double Data Rate Synchronous Dynamic Random Access memory,双数据率同步动态随机存储器),简称为DDR, 简单的说就是双倍传输速率的SDRAM。普通SDRAM内存的工作方式是在一个时钟周期的上升沿触发进行工作。也就是说在一个时钟周期内,内存将工作一次。而DDR的技术使得内存可以在每一个时钟周期的上升沿和下降沿分别触发一次,这样就使得在一个时钟周期内内存可以工作两次,这样就使得DDR内存在相同的时间内能够完成普通内存一倍的工作量。(文末有DDR术语解释)
DDR标准发展和信号特点演进
如下表所列,从芯片开发到电路系统设计角度来看相比,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)
DDR5总线架构和标准DDR5 RDIMM 内存条
DDR4 的突发长度为4或者8。对于 DDR5,突发长度将扩展到8和16,以增加突发有效载荷。突发长度为16(BL16),允许单个突发访问 64 字节的数据,这是典型的 CPU 高速缓存行大小。它只需使用两个独立通道中的一个通道即可实现这一功能。这极大地提高了并发性,并且通过两个通道提高了内存效率。DDR4 在单芯片封装(SDP)中的最大容量为16 Gb DRAM。而DDR5的单芯片封装最大容量可达64 Gb,组建的DIMM 容量则翻了两番,达到惊人的 256 GB。
时钟控制命令信号,选通信号控制数据,如上图示。
对时钟信号抖动的要求更加严格,对各 种命令信号与数据和地址信号的时序要求也更高。
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总线。
DDR术语SDRAM - Synchronous Dynamic Random Access Memory的缩写,即同步动态随机存取存储器。DDR SDRAM - Double Data Rate SDRAM的缩写,是双倍速率同步动态随机存储器的意思。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的读写带宽吞吐最大化。
硬件工程师们,以上情况你都熟悉吗?更多让人崩溃的瞬间,请继续往下看:
以下情况你一定也遇到过!
自激的运放
环路不稳定的电源
去不掉的噪声
cache error的cpu
不能上网的研发部???
还有芯片不受控制,重启也无效
接受电路灵敏度低,EOS问题解决
发生软失效的存储器
比如串口调不通,示波器量波形
然后再示波器协议解析
NAND flash 存放程序半个月
系统报错不能启动
太绝望了
软件总说硬件有问题又无法自证
(为什么世界上有事情都是硬件的事情?)
上电就炸的板子
要飞线的BGA
没有妹子的硬件部
容易掉的焊盘
超低复现概率BUG的调试。。。
来源:硬件笔记Ben