内存概念整理
物理内存
内存概念
所谓内存,是指计算机在运行时,需要使用的数据的存放介质;
- 数据读写速度快;
- 断电数据消失,通过一定频率的电流刷新维持内部状态,断电后状态会恢复初始,即数据消失;
- 价格相对于nand、emmc等闪存比较贵;
根据上述特性,在计算机系统中,该部分被用做运行内存,即上电后将数据从存储介质中拷贝到运行内存,提供给到CPU使用;
最小系统:CPU、DDR、EMMC为计算机的三个核心部件,即计算机要运行起来,必须依赖上述核心部件;
发展演变
Random-Access Memory,随机存储器,主要分为:
- static Random-Access Memory:不需要一直刷新,只要通电即可保证数据存在;
- dynamic Random-Access Memory:需要周期性的更新,才可保证数据一直存在;
显然,静态比动态会更贵一些(体积大,功耗大),所以一般只是内置在SOC中作为cache使用;
目前常见的运行内存都是基于SDRAM基础上发展而来:
SDRAM – DDR – DDR2 – DDR3 – DDR4
| name | 存储器工作clk | IO总线clk | 数据速率 | 预取数据 |
|---|---|---|---|---|
| SDR SDRAM | 100 | 100 | 100 | 2bit |
| DDR SDRAM | 100 | 100 | 200 | 2bit |
| DDR2 | 100 | 200 | 400 | 4bit |
| DDR3 | 100 | 400 | 800 | 8bit |
| DDR4 | 100 | 800 | 1600 | 16bit |
速率提升主要体现在如下两个方面:
- clk上升沿和下降沿都取数据,数据传输是工作频率的2倍;
- IO总线上一次预取2、4、8、16bits的数据,则IO总线频率是记忆存储芯片工作频率的N倍;
DDR3L:在DDR3的基础上电压降低:1.35–1.3
LPDDR3:JEDEC提出的官方标准,电压降低到1.2v;
LPDDR4:JEDEC提出的官方标准,在DDR4的基础上电压降低;
内部组成
DDR的内部排列组成,简单理解:
DDR中一个晶片:bank * row * column
1. bank地址线位宽为3,及bank数目为 2^3=8;
2. 行地址线位宽位13,及A0…A12;
3. 列地址线位宽为10,及A0…A9;
有 2^3 * 2^13 * 2^10 = 2^26 =2^6Mb = 64Mb,也有 2^3 * 2^16 * 2^10 = 2^29 =2^9Mb = 512Mb
一颗集成化的DDR,还要再 I/O * rank * channels:
- 比如一个DDR3L:512Mb * 8bits * 1rank * 1ch(DDR3L貌似没看到有多个ch),要对接到SOC上比如SOC是连接32bit数据线,则需要4片组成一个rank,可以提供2GB内存;
- 再比如一个LPDDR4:512Mb * 16bits * 1 rank * 2ch,要对接到SOC上比如SOC是连接32bit数据线,则只需要1片,两个ch各16bits数据,可以组成2GB内存,而这里一片DDR就是一个rank;
- 然后还有一片DDR中有2个rank的存在:512Mb * 16bits * 2 rank * 2ch,要对接到SOC上比如SOC是连接32bit数据线,则只需要1片,两个ch各16bits数据,可以组成4GB内存,即IO在找到的时候可以找到rank1或者rank2;
则总结上述过程,存在如下基础概念:
- channel:多个channel并联增加带宽,channel是可以独立控制的通道,每个channel里面可以有一个或者两个die组成,两个channel则可以bits数量翻倍;
- rank:如果换过笔记本内存条应该就可以知道,一个内存条上有8个或者更多的IC,分别各自只有8bit,组成一个64bit输出的,这个就叫做一个rank,现在的LPDDR4中可能含有多个rank,则容量更大;
- bank:一个行列矩阵叫做一个bank,目前看到的datasheet中一般是8(多)个bank组成一个bit的地址范围;
- die:晶圆封装,与上述并非一个逻辑中的概念,作为一个封装的容器(大小有限制),通过CS片选确认当前读取地址所在的die;
我们常说的8bit、16bit是指的一颗DDR的数据线(DQ),则一般和32bits(目前接触到的都是32bits)的SOC组合的话,需要4片8bit或者2片16bit或者1片32bit,即对于SOC来讲,他认为自己读取到的就是1片DRAM
两个例子:
-
一个DDR3L的组成结构:
-
一个LPDDR4的组成结构: