DRAM集中刷新,分散刷新,异步刷新的区别

简介: DRAM集中刷新,分散刷新,异步刷新的区别

为什么DRAM需要刷新

DRAM(Dynamic Random Access Memory)即动态RAM,是我们熟知的内存,用在手机,电脑等设备当中用于存储数据与指令.通常所讲的RAM即指DRAM.DRAM由晶体管和小容电容存储单元组成。每个存储单元都有一小的蚀刻晶体管,这个晶体管通过小电容的电荷保持存储状态,即开和关。电容类似于小型充电电池。它可以用电压充电以代表1,放电后代表0,但是被充电的电容会因放电而丢掉电荷,所以它们必须由一新电荷持续地"刷新"。

接下来的例子我们以一个16K*1位的芯片来进行讲解.

16K->214=(27)2=(128×128)B,故该芯片有128*128根行线与列选择线.

而对DRAM刷新的方法是一次刷新完整的一行,即我们一共需要刷新128次共128行.

DRAM最大刷新周期:2ms,8ms,16ms等(DRAM在这些时间内会丢失电容,所以必须刷新).

我们假设最大刷新周期为2ms,即在间隔2ms的时间内,这128行必须全部刷新完毕,并设定存储周期为0.5us(即这0.5us将进行数据的读/写或一行的刷新)

集中刷新

集中刷新顾名思义,即在某一个时间段集中对这写行进行刷新.

首先我们计算出对128行刷新所需要的时间:

128*0.5us=64us(集中刷新时间)

2ms-64us=1936us(正常进行读写或维持电容内数据有效的时间)

故由于有着64us的时间需要对电容进行刷新,因此这一段时间称为"死区",即这段时间内CPU无法对DRAM进行访问.

优点:结构简单,实现简单

缺点:由于死区时间的导致,CPU在这段时间内无法进行大部分的工作,这是由于CPU所需要的部分指令是需要从内存中取得的

分散刷新

分散刷新的含义即对每一行进行独立的刷新,其实现方法为:

对于该行,前0.5us进行数据正常的存取,后0.5us进行该行的刷新,因此由于这一特性,使得DRAM的存储周期变为了1us(0.5+0.5),即128行将会在128us内完成全部的刷新,在2ms的时间内这128行将会被刷新2000/128=15.6次.

优点:无死区,不会导致CPU的空转

缺点:存储周期翻倍,CPU效率降低,且由于刷新时间间隔内会多次的对电容进行刷新,造成硬件磨损

异步刷新

异步刷新是前两种刷新的折中考虑.

对于这128行,在2ms的刷新间隔内,我们可以轻易的算出只需要每

2000/128=15.6us刷新一行即可完成2ms内对所有行的刷新,因此异步刷新也正是使用这思路.

即在这15.6us中,只会剩余0.5us用于最后对行的刷新,其余时间用于对存储单元进行数据访问.

如果将DRAM的刷新安排在CPU对指令的译码阶段,由于这个阶段CPU不访问存储器,所以这种方案既克服了分散刷新需独占0.5μs用于刷新,使存取周期加长且降低系统速度的缺点,又不会出现集中刷新的访存“死区”问题,从根本上上提高了整机的工作效率。

目前大部分使用的刷新方法都是这种

优点:不会过度刷新且没有死区

例题讲解


相关文章
|
20天前
|
存储 缓存 监控
多级缓存有哪些级别?
【10月更文挑战第24天】多级缓存有哪些级别?
26 1
|
1月前
|
缓存 监控 前端开发
处理页面缓存中数据不一致的问题
【10月更文挑战第9天】
42 2
|
5月前
|
存储 缓存 测试技术
有效使用缓存时需要缓存动态数据吗?
【6月更文挑战第7天】本文探讨了如何有效地缓存数据以提升应用性能。关键在于选择合适的数据进行缓存和适时缓存。缓存不应被视为永久存储,应同时维护原始数据存储。
108 2
有效使用缓存时需要缓存动态数据吗?
|
6月前
|
canal 缓存 NoSQL
【后端面经】【缓存】33|缓存模式:缓存模式能不能解决缓存一致性问题?-03 Refresh Ahead + SingleFlight + 删除缓存 + 延迟双删
【5月更文挑战第11天】Refresh Ahead模式通过CDC异步刷新缓存,但面临缓存一致性问题,可借鉴Write Back策略解决。SingleFlight限制并发加载,减少数据库压力,适合热点数据。删除缓存模式在更新数据库后删除缓存,一致性问题源于读写线程冲突。延迟双删模式两次删除,理论上减少不一致,但可能降低缓存命中率。选用模式需权衡优劣,延迟双删在低并发下较优。装饰器模式可用于实现多种缓存模式,无侵入地增强现有缓存系统。
126 2
|
存储 缓存 数据库
如果不知道这4种缓存模式,敢说懂缓存吗?
在系统架构中,缓存可谓提供系统性能的最简单方法之一,稍微有点开发经验的同学必然会与缓存打过交道,最起码也实践过。
|
存储 编译器 C语言
缓冲区刷新在 C++ 中意味着什么?
缓冲区刷新是将计算机数据从临时存储区域传输到计算机的永久内存。例如,如果我们对文件进行任何更改,我们在一台计算机屏幕上看到的更改会临时存储在缓冲区中。
177 0
|
缓存 Linux
缓存区的刷新及配置
缓存区的刷新及配置
204 0
|
NoSQL Shell Linux
记录服务器内存爆炸
记录服务器内存爆炸
161 0
记录服务器内存爆炸