RAM
软件版本 | 硬件版本 | 更新内容 |
---|---|---|
linux 5.8.18 | arm64 |
1. 概述
在一个系统中同时存在静态 RAM(SRAM也叫同步RAM)和动态 RAM (DRAM)。前者要快得多并提供相同的功能。静态RAM的性能远远好于动态RAM,但由SRAM的生产和使用成本比DRAM高得多。
TIP
目前SRAM仅仅使用在CPU缓存上,所以CPU的价格和缓存的大小存在一定的关系, 平时所说的内存都是指DRAM
2. 静态RAM
每个static ram 都是通过6个晶体管来构成,从
静态RAM具有如下特点:
- 每个RAM单元需要6个晶体管,也可以是4个
- 维持RAM单元的值需要持续通过
持续共电 - 一但字访问线WL升高,单元状态几乎可以立即读取
- 单元状态持续稳定不需要周期性的刷新
3. 动态RAM
就其结构而言,动态RAM比静态RAM简单得多。它只包含一个晶体管和一个电容器。这种复杂性的巨大差异意味着它的功能与静态RAM截然不同。 动态RAM单元将其状态保存在电容器C中。晶体管M用于保护对状态的访问。要读取单元格的状态,请升高访问线AL;这会导致电流在数据线DL上流动或不流动,具体取决于电容器中的电荷。为了写入单元,数据线DL被适当设置,然后AL升高足够长的时间以对电容器充电或放电。
当读取一个内存单元会使用其上的电容放电,这样读取操作不能多次进行,需要重新充电后才能再次读取。为提高内存的容量也就是内存单元的数量,单个内存单元的电容存放的电子应越少越好,也就是电容器的容量越小,单位体积集成的内存单元才会越多。另外虽然电容的电阻可以达到几万欧姆,但电容耗散也只需要很短的时间,也称为电子泄漏问题。
这种泄漏是DRAM单元必须不断刷新的原因。现在对于大多数DRAM芯片来说,这种刷新必须每64毫秒发生一次。在刷新周期期间,无法访问内存。对于某些工作负载,此开销可能会停止高达50%的内存访问。
微小电荷导致的第二个问题是从电池中读取的信息不能直接使用。数据线必须连接到一个读出放大器,该放大器可以在整个电荷范围内区分存储的0或1。
第三个问题是电容器的充电和放电不是瞬时的。读出放大器接收到的信号应该是逐渐变化,因此必须使用关于单元输出何时可用的保守估计。电容充放电曲线如下所示: 与静态RAM的访问线拉高数据立即可用不同,动态RAM必须要等待充放电的时间,这严重限制了DRAM的速度。
但是动态RAM相比静态也正在优点如下:
- 价格便宜
- 尺寸小,因为只需要一个电容器
- SRAM需要专用的
来供电,DRAM不需要 - DRAM结构简单规整,便于封装
3.1 访问动态RAM
动态RAM访问的存在下面介绍的两种方法,目前我们大量使用是阵列法。
3.1.1 独立访问
独立访问的意思就是从地址解码器到每个内存单元都一根选择线,如下图所示如果地址线有2根,那么就会
3.1.2 阵列法访问
通过多路复用器将地址分两部分传输,分成两部分传输可以节省芯片的引脚,在RAS有效时传输Row地址,当CAS传输Cow地址,a0到a3线的信息在撤锁前必须保证一直有效。
3.1.2 阵列法访问细节
3.1.2.1 访问影响因素
从上面的介绍可以看出影响DRAM的访问的因素有如下:
- 多路复用造成需要CAS和RAS来指示分两部分传输地址
- 电容的充放电是需要一定的时间,所以需要等待产生稳定的信号
- DRAM单元由于电子泄漏需要刷新
访问还分为同步和异步,但是我们通常使用的是同步,所以这里只聊同步。所谓的同步访问就是基于同一个时钟源来工作,时钟源是由内存控制器来提供,时钟源的频率决定的前端总线也就是FSB的速率,一般有800MHz、1066MHz、1333MHz等。
3.1.2.1 访问步骤
TIP
所有信号都在时钟的上升沿读取。
步骤1 RAS信号设置拉低,低地平有效,开始传输Row地址,设置行地址会导致 RAM 芯片开始锁存寻址的行。
步骤2 行地址锁存之后,开始拉低
TIP
上面两步之间会有一个
步骤3 开始传输数据,这里可以连续传输2、4、8个数据,而且后续可以在不重新发送行地址的情况再次发送列地址,从而实现连接的内存读取。
TIP
上面两步之间会有一个
另外还一个时间如下图所示,
另外如果是SDRAM,还在一个限制,那就是在拉低
再有一个很重要的时间就是刷新引起的停顿,这个停顿时间影响很大。
3.2 动态RAM种类
最早的一类就是SDRAM,也就是Sync DRAM,它只在时钟的上升沿来取数,后来出现了DDR内存,这个类型的内存是在时钟双边沿取数,所以是Double DRAM,简写为DDR,后面再发展就是在DDR1的其实提高时钟频率从而提高内存的访问速度,也就是后面的DDR2、DDR4等等。
提示
欢迎评论、探讨,如果发现错误请指正。转载请注明出处! 探索者