深度win10- 绿色安全免费的win10系统下载站
自助下单地址(拼多多砍价,ks/qq/dy赞等业务):点我进入
通过本专栏的系列内存文章,相信读者都了解到,我们用的DDR内存它的存储单元可以看作一个个小电容:
每个单元由一个电容和一个晶体管组成。电容负责存储,充过电时是1,没充过电是0,这就是内存是如何存储数据的。晶体管是个开关,用于选中该电容。正是因为内存每个单元如此简单,才能如此大规模组织起来内存控制器是什么,形成低价而密度很高的内存颗粒。电容的问题是会慢慢放电(fading),这个过程叫做Decay:
因为有这个电容放电的过程,所以内存单元要过一段时间就要被充电。JEDEC规定每过64ms就要refresh一次,也就是充电一次,这个由内存控制器来完成,不需要CPU内核参与。这个64ms实际上是个余量非常大的时间间隔,你有没有想过如果我们不给内存刷新会发生什么?有人做过一个实验[1]:
内存的Decay[Halderman et al., Lest We Remember: Cold Boot Attacks on Encryption Keys, 2008]
一张蒙娜丽莎的灰度图像,不刷新(充电),在间隔5秒、30秒、60秒和5分钟后读出来的样子,可以看到5秒钟后读出来,几乎看不出来有什么损失,甚至在1分钟后还可以勉强看出原理的样子,5分钟后才变成了黑白条。这个视频可以让大家更好得看到整体的变化:
如果说内存单元里的小小电容会慢慢丢电,最终会变成0电压,为什么最终的图片不是全黑的,而是变成了规律的黑白相间的图案?
我在介绍内存旁路攻击的文章中:
留下了这个思考的问题,一年半后的今天,终于有小伙伴在知乎上给出了正确的答案。挖下的坑该填了,是的,原因是内存单元实际上是由True Cell和Anti-Cell共同组成的。
True Cell就是我们前面介绍的充过电时是1(电压等于Vdd),没充过电是0的内存单元:
Anti-Cell恰恰相反,电压为0是1,充过电(电压等于Vdd)表示0:
True Cell和Anti-Cell常常是等量分部的(也有分部不平衡的)。这么做的原因是为了简化设计,为了在Vdd(1)和0(0)能够被准确判断,Sense Amp需要有个Vdd/2的参考电压。为了简化设计内存控制器是什么,Sense Amp同时连接了一个True Cell和一个Anti-Cell,这就是它们经常等量出现的原因。True Cell和Anti-Cell常间隔分布,不同厂商的不同种类的间隔数目不定。
回到本问题,内存单元不充电后,小小电容是慢慢的在没电,最终电容都没电了。但因为有些单元(True Cell)解读0电压为0,有些单元(Anti-Cell)解读0电压为1,所以最终图形就变成了黑白相间,而不是全黑。
参考资料
[1] :Memory Decay
2022-03-03 /
系统之家WINDOWS 10 X64完美专业版 2022.03
2022-03-03 /
2022-02-28 /
2022-02-28 /
2022-02-23 /
2022-02-23 /
2022-02-23 /
2022-02-23 /
2022-02-17 /