——————————————————————————————
版权声明:
本文作者:烓围玮未。主要从事ISP/MIPI/SOC/车规芯片设计/SOC架构设计
知乎专栏:芯片设计进阶之路
微信公众号:芯片设计进阶之路(x_chip)
转发必须授权,同时保留这段声明,盗版必究!
——————————————————————————————
现代的SoC中,基本是以DDR为核心,整个系统的瓶颈也大多出在DDR,系统的主要目标也是合理的利用DDR,使得DDR效率最高,同时能满足各个组件的需求。所以,对DDR的了解和掌握,是芯片进阶和成为芯片架构必不可少的知识。作者以前虽然不断碎片化的了解和学习过DDR,但是还是不够系统,所以最近希望系统的再把DDR的知识点梳理一下。
先从最基本的原理开始。
什么是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 类别及其目标应用场景。
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就便宜很多,
特性 | SRAM | DRAM |
基本单元 | 6个晶体管 | 1个晶体管 + 1个电容 |
工作原理 | 锁存器保持数据 | 电容存储电荷 |
访问速度 | 快,低延迟 | 较慢,高延迟 |
功耗 | 较高 | 较低 |
容量 | 低 | 高 |
成本 | 高 | 低 |
刷新机制 | 不需要刷新 | 需要定期刷新 |
可靠性 | 高 | 较低 |
适用场景 | 高速缓存、寄存器文件 | 主内存、图形内存、移动设备 |
主要是出于成本考虑,虽然DRAM有各种缺点,但是人家便宜量大,适合量产和商用。所以SRAM主要用在Cache,偏上缓存,一个芯片放上64MB, 128MB就已经很豪横了。但是DDR现在都是4GB, 8GB,16GB起步了。这也是DDR成为主存的主要原因。
在AI芯片初期,大模型还没出来,当时的趋势是放大量的片上SRAM,以减少对DDR的使用,但是当大模型出来之后,这条路就走不通了,因为即使放上128MB的SRAM, 对于大模型动辄几GB的参数来说,都是杯水车薪。采用速度更高的存储,如HBM;提高访问速度这些才是唯一出路。
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
下图可以很好的解释这些层次结构的关系:
后纪
技术很重要,技术背后的思想更重要!
技术背后的某些思想就是你解决以后问题的钥匙。我的文章可能一篇中知识点不太多,但是力求让你能深入理解,为你进阶打下基础。如果有一点点收获,也算是我对中国芯片行业的一点点贡献吧。
赠人玫瑰,手有余香。如果你有所收获,麻烦花一秒时间帮我点个赞和在看吧,谢谢!
知乎专栏:芯片设计进阶之路
微信公众号:芯片设计进阶之路 x_chip
——————————————————————————————
参考文献
https://blog.csdn.net/wordwarwordwar/article/details/78936755
https://blog.csdn.net/weixin_46022434/article/details/122753673
Memory - Cache, DRAM, Disk