DRAMの中身は直ぐには消えない

昨日作った手抜きDDR SDRAMコントローラを使って、リフレッシュをやめたDRAMの内容が実際に消えないのか試してみた(まぁ経験的にも十分知られている事項では有るが。。)。

リフレッシュを止める前に絵を描き込む。(昨日のバグはちゃんと直した)
リフレッシュとCRTCのRAMアクセスを止めて5分後。

ぽつぽつと斑点が現れた。RGB全てが揃うと白になるのに対し、シアンはRが抜けた色、黄色はBが抜けた色なので、ビットの抜け方に特徴があり、均一である(となりあったビットが纏めて抜けることはあんまりない)ということが考えられる*1
CRTCを停止して経過を待ったのは、DRAMのリフレッシュをしなかったとしても、CRTCのアクセスが有る間は内容が消えない(と、思う)ため。
というのも、DRAMはそもそも破壊読み出しなので読み出しそのものがリフレッシュに相当するため。リフレッシュ間隔は60ms程度とれるので、毎秒75回はアクセスのあるフレームバッファでは特にリフレッシュしなくてもデータが保持できるのではないかと考えられる。
本来は、だんだんと消えていく様子を動画に出来ないかと思ってたけどそういう事情があるので止めた。
あと写真は撮れなかったが、電源を切ってしばらく放置したDRAMの内容はほぼランダムであるのに対し、DRAMに通電だけした状態で放置してconfigした場合のDRAMの内容は昨日の様な縞模様*2になるという違いが見られた。これの原因は謎。

*1:もちろん、正確な考察のためには白黒モードかつ、ちゃんとしたDDR SDRAMコントローラでやるべきだが。。

*2:http://storage.osdev.info/pub/idmjt/diaryimage/0809/neta080924l1.jpg