版权声明:
本文作者:烓围玮未。主要从事ISP/MIPI/SOC/车规芯片设计/SOC架构设计
知乎专栏:芯片设计进阶之路
微信公众号:芯片设计进阶之路(x_chip)
转发必须授权,同时保留这段声明,盗版必究!
现代的SoC中,基本是以DDR为核心,整个系统的瓶颈也大多出在DDR,系统的主要目标也是合理的利用DDR,使得DDR效率最高,同时能满足各个组件的需求。所以,对DDR的了解和掌握,是芯片进阶和成为芯片架构必不可少的知识。作者以前虽然不断碎片化的了解和学习过DDR,但是还是不够系统,所以最近希望系统的再把DDR的知识点梳理一下。
先从最基本的原理开始。
1. 什么是DDR
DDR(Double Data Rate)是指双倍数据速率同步动态随机存取内存(Double Data Rate Synchronous Dynamic Random Access Memory,简称DDR SDRAM)。它是一种用于计算机和其他电子设备的内存技术,旨在提高数据传输速率和系统性能。
DDR的核心技术在于:
- 时钟同步:DDR内存是同步的,这意味着数据传输与系统时钟同步。时钟信号用于协调内存控制器和内存模块之间的数据传输。
双倍数据速率:与传统的SDR内存相比,DDR内存能够在每个时钟周期的上升沿和下降沿各传输一次数据。这种双倍数据速率的机制使得DDR内存的数据传输速率是SDR内存的两倍。
SDR:在每个时钟周期的上升沿传输一次数据。
DDR:在每个时钟周期的上升沿和下降沿各传输一次数据。- 预取架构:DDR内存采用了预取架构,可以在一个时钟周期内处理更多的数据。例如,DDR3内存通常预取8位数据,而DDR4内存预取16位数据。
DDR 分为三个主要类别,每个类别都有独特的功能,可帮助设计人员满足其目标片上系统 (SoC) 的功耗、性能和面积要求。下图显示了不同的 DDR 类别及其目标应用场景。
2. DDR的基本原理
我们先从最基本的组成单元来看。
DDR内存的基本单元是存储单元(Memory Cell),这些存储单元组成了存储阵列,构成了DDR内存的核心部分。
- 电容和晶体管:每个存储单元由一个电容和一个晶体管(通常是MOSFET)组成。电容用于存储电荷,表示数据的“0”或“1”状态;晶体管用于控制电容的充电和放电。
- 位线(Bit Line)和字线(Word Line):位线用于读取或写入数据,字线用于选择特定的存储单元。
存储单元和存储整列就是组成DDR的基本单元,所有复杂的DDR都是由基本的单元组成的。可以看到单个存储单元的结构非常简单,每一个基本单元由一个电容和一个晶体管构成(又称1T1C结构)。电容中存储电荷量的多寡,用于表示“0”和“1”。而晶体管,则用来控制电容的充放电。
由于电容会存在漏电现象。所以,必须在数据改变或断电前,进行周期性“动态”充电,保持电势。否则,就会丢失数据。因此,DRAM才被称为“动态”随机存储器。
所以DDR的基本操作有以下三种:
- 读操作:当需要读取数据时,字线激活,对应的晶体管导通,电容上的电荷通过位线传输到读出放大器(Sense Amplifier)。读出放大器将微弱的电信号放大,然后输出为标准的逻辑电平。
- 写操作:当需要写入数据时,字线激活,对应的晶体管导通,位线上施加相应的电压,使电容充电或放电,从而存储数据。
- 刷新:由于电容会逐渐泄漏电荷,需要定期刷新存储单元,以保持数据的准确性。刷新操作通常由内存控制器自动管理。
另外一种我们常见的存储单元是SRAM,这个是芯片设计中必不可少的单元。SRAM的基本单元如下所示:
SRAM(静态随机存取存储器)的基本单元由至少六个场效应晶体管组成。其中,四个场效应晶体管(M1, M2, M3, M4)构成两个交叉耦合的反相器,这两个反相器共同形成一个锁存器(触发器)。另外两个场效应晶体管(M5, M6)作为控制开关,用于连接位线(Bit Line),以便进行读写操作。通过这些场效应管的协同工作,SRAM能够在通电时稳定地锁住二进制数0和1。因此,SRAM被称为“静态随机存储器”。
DDR和SRAM的基本单元对比如下:
可以看到,DRAM cell比SRAM cell 结构简单很多,使用的晶体管也少很多。晶体管就是面积,当容量扩大到KB,MB,GB级别的时候,这个差别就非常大了。所以SRAM一般都是比较昂贵的,DDR就便宜很多,
主要是出于成本考虑,虽然DRAM有各种缺点,但是人家便宜量大,适合量产和商用。所以SRAM主要用在Cache,偏上缓存,一个芯片放上64MB, 128MB就已经很豪横了。但是DDR现在都是4GB, 8GB,16GB起步了。这也是DDR成为主存的主要原因。
在AI芯片初期,大模型还没出来,当时的趋势是放大量的片上SRAM,以减少对DDR的使用,但是当大模型出来之后,这条路就走不通了,因为即使放上128MB的SRAM, 对于大模型动辄几GB的参数来说,都是杯水车薪。采用速度更高的存储,如HBM;提高访问速度这些才是唯一出路。
3. DDR的组织结构
我们平时说的DDR颗粒也是一种芯片:
也就是我们说的内存颗粒,而多个内存颗粒组成内存模组或者内存条,就是计算机里面使用的内存了。
如果以内存颗粒,也就是chip为分界点,那么板级的概念是:Channel,DIMM, Rank
而Chip内部就是微观的概念是:Bank,Row,Column,Page,以及最小的Memory Cell。
从大到小的组织层级如下:
这里chip就是内存颗粒了。比如一个Intel I7 CPU连接两个channel的DDR连接图如下:
这里,Intel I7 CPU内部有内存控制器, 内存条在外部:
Memory Controller
- 负责管理内存的读写操作,包括地址生成、时序控制、刷新管理等。
Channel
- 内存控制器与内存模块之间的一条独立的通信路径。每个通道可以独立地进行读写操作,提高内存的并行处理能力。一个Channel对应一个内存控制器,有几个channel,CPU内部就必须有几个控制器。
DIMM:
- 双列直插式内存模块,是最常见的内存模块类型之一。DIMM由多个内存芯片组成,安装在主板上的内存插槽中。
- DIMM的位宽是指每次数据传输的宽度,通常为64位(对于大多数服务器和台式机)。为了满足64位的数据传输要求,DIMM上的芯片数量和规格需要匹配。芯片规格有x4、x8和x16三种,分别提供4位、8位和16位的数据宽度,其中x16规格较少使用。为了达到64位的数据宽度,使用x4规格时需要16个芯片,使用x8规格时需要8个芯片,使用x16规格时需要4个芯片。DIMM可以是单面的(Single-Sided DIMM),所有芯片分布在DIMM的一侧,例如使用8个x8芯片;也可以是双面的(Double-Sided DIMM),芯片分布在DIMM的两侧,例如使用16个x4芯片,每侧8个。
- 还有其他内存模块:SO-DIMM:小型双列直插式内存模块,常用于笔记本电脑和小型设备。UDIMM:无缓冲双列直插式内存模块,直接与内存控制器通信。RDIMM:注册双列直插式内存模块,通过寄存器与内存控制器通信,适用于服务器。LRDIMM:负载减少双列直插式内存模块,通过缓冲器减少内存控制器的负载,适用于高性能服务器。
Rank
- 定义:Rank是内存模块中的一个独立的存储区域,可以独立地响应内存控制器的命令。Rank是DIMM中的一个独立的存储区域,可以独立地响应内存控制器的命令。一个DIMM可以包含一个或多个Rank。
- 组成:一个Rank由多个内存芯片(Chips)组成,这些芯片并联在一起,共享同一组地址和控制信号。每个Rank需要提供64位的数据宽度,因此,使用x8规格的芯片时,一个Rank需要8个芯片。
- 为了和逻辑BANK相区分,也经常把RANK称为Physical BANK(物理BANK),简写为P-BANK。逻辑Bank,简写为L-BANK。
Chip
- 定义:芯片是内存模块中的最小物理单位,包含存储阵列和控制逻辑。 * 组成:每个芯片包含多个银行(Banks)。
- 存储阵列:每个芯片包含多个存储单元的存储阵列。
- 控制逻辑:包括地址解码器、读出放大器、写驱动器、时序控制器等。 * I/O接口:用于与外部设备(如内存控制器)进行数据传输。
Bank
- 定义:Bank是内存芯片中的一组存储阵列,可以独立地进行行激活和列访问操作。一个芯片可以包含多个Bank。Bank就是之前提到的Memory Array * 数量:DDR3内存通常有8个银行,DDR4内存通常有16个银行,DDR5内存则更多。
行(Row)和列(Column)
- 定义:存储单元按照行和列的二维数组排列,形成存储阵列。
- 行激活:行地址被发送到内存芯片,激活相应的行(页)。
- 列访问:行激活后,列地址被发送到内存芯片,选择特定的列。
页(Page)
- 定义:行的另一种称呼,指的是一行存储单元。
一种DDR层次结构示意图如下所示
System | +-- Memory Controller | | | +-- Channel 1 | | | | | +-- DIMM 1 | | | | | | | +-- Rank 1 | | | | | | | | | +-- Chip 1 | | | | | | | | | | | +-- Bank 0 | | | | | +-- Bank 1 | | | | | ... | | | | | +-- Bank 7 (DDR3) / Bank 15 (DDR4) | | | | | | | | | +-- Chip 2 | | | | | | | | | | | +-- Bank 0 | | | | | +-- Bank 1 | | | | | ... | | | | | +-- Bank 7 (DDR3) / Bank 15 (DDR4) | | | | ... | | | | +-- Chip N | | | | | | | | | +-- Bank 0 | | | | +-- Bank 1 | | | | ... | | | | +-- Bank 7 (DDR3) / Bank 15 (DDR4) | | | | | | | +-- Rank 2 | | | ... | | | | | +-- DIMM 2 | | | | | +-- Rank 1 | | | ... | | | +-- Channel 2 | ... | +-- Other Components
下图可以很好的解释这些层次结构的关系:
后纪
技术很重要,技术背后的思想更重要!
技术背后的某些思想就是你解决以后问题的钥匙。我的文章可能一篇中知识点不太多,但是力求让你能深入理解,为你进阶打下基础。如果有一点点收获,也算是我对中国芯片行业的一点点贡献吧。
END
文章来源:处芯积律
推荐阅读
- 芯片开发必备工具|好用的文件比对工具有哪些?
- PCIe ARI扩展能力(一)
- GIT batch的支持中文的方法和系统建议
- PCIe 知识点:bus number是如何获取的
- 深入理解SoC上电和boot流程
更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。